pax_global_header00006660000000000000000000000064115622220200014502gustar00rootroot0000000000000052 comment=9a123aefecaf41a35b28df0c87489b77cd48f3d0 LTS5-cfflib-9a123ae/000077500000000000000000000000001156222202000140635ustar00rootroot00000000000000LTS5-cfflib-9a123ae/.gitignore000077500000000000000000000001711156222202000160550ustar00rootroot00000000000000*.pyc MANIFEST .project .pydevproject cfflib.egg-info/ build/ doc/_build/ doc/build/ doc/manual/ dist/ .settings/ .idea/ LTS5-cfflib-9a123ae/COPYING000066400000000000000000000034151156222202000151210ustar00rootroot00000000000000Copyright (C) 2009-2011, Ecole Polytechnique Fédérale de Lausanne (EPFL) and Hospital Center and University of Lausanne (UNIL-CHUV), Switzerland All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Ecole Polytechnique Fédérale de Lausanne (EPFL) and Hospital Center and University of Lausanne (UNIL-CHUV) nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL "Ecole Polytechnique Fédérale de Lausanne (EPFL) and Hospital Center and University of Lausanne (UNIL-CHUV)" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. LTS5-cfflib-9a123ae/MANIFEST.in000066400000000000000000000002641156222202000156230ustar00rootroot00000000000000include COPYING MANIFEST.in setup* README.* graft cfflib graft doc graft scratch prune doc/manual prune doc/manual/build prune doc/build global-exclude *.pyc global-exclude .gitLTS5-cfflib-9a123ae/README000066400000000000000000000027271156222202000147530ustar00rootroot00000000000000============================== Connectome File Format Library ============================== The Connectome File Format Library (cfflib) is a pure Python library for multi-modal connectome data and metadata management and integration, based on the specification of the Connectome File Format (CFF). The cfflib provides a high-level interface to many common data formats by using `Nibabel `_ for basic neuroimaging data format IO, and NumPy and the Python standard-library for other formats. The Connectome File Format provides means to store arbitrary metadata as tags and in structured form for any so-called connectome object. Connectome objects encapsulate the various data types as they occur in connectome research. * CMetadata: Connectome Markup Language (XML) * CNetwork: Networks, Connectomes (GraphML, GEXF, NXGPickle) * CSurface: Surface data (Gifti) * CVolume: Volumetric data (Nifti1) * CTrack: Fiber track data (TrackVis) * CTimeserie: Timeseries data (HDF5, NumPy) * CData: Other data, like tables (HDF5, NumPy, XML, JSON, CSV, Pickle) * CScript: Processing and analysis scripts (ASCII, UTF-8, UTF-16) * CImagestack: Imagestacks (PNG, JPG, TIFF, SVG) The Connectome File Format Library is part of the Connectome Mapping Toolkit. Copyright (C) 2009-2011, Ecole Polytechnique Fédérale de Lausanne (EPFL) and Hospital Center and University of Lausanne (UNIL-CHUV), Switzerland ======= Credits ======= Main Author: Stephan Gerhard See THANKS for contributions LTS5-cfflib-9a123ae/THANKS000066400000000000000000000000431156222202000147730ustar00rootroot00000000000000Christophe Chênes Yannick SchwartzLTS5-cfflib-9a123ae/cfflib/000077500000000000000000000000001156222202000153105ustar00rootroot00000000000000LTS5-cfflib-9a123ae/cfflib/__init__.py000066400000000000000000000001371156222202000174220ustar00rootroot00000000000000from .info import __version__ from loadsave import * from cfflib2 import * from util import * LTS5-cfflib-9a123ae/cfflib/cff.py000066400000000000000000012771031156222202000164330ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- # # Generated Thu Mar 10 14:06:17 2011 by generateDS.py version 2.4b. # import sys import getopt import re as re_ etree_ = None Verbose_import_ = False ( XMLParser_import_none, XMLParser_import_lxml, XMLParser_import_elementtree ) = range(3) XMLParser_import_library = None try: # lxml from lxml import etree as etree_ XMLParser_import_library = XMLParser_import_lxml if Verbose_import_: print("running with lxml.etree") except ImportError: try: # cElementTree from Python 2.5+ import xml.etree.cElementTree as etree_ XMLParser_import_library = XMLParser_import_elementtree if Verbose_import_: print("running with cElementTree on Python 2.5+") except ImportError: try: # ElementTree from Python 2.5+ import xml.etree.ElementTree as etree_ XMLParser_import_library = XMLParser_import_elementtree if Verbose_import_: print("running with ElementTree on Python 2.5+") except ImportError: try: # normal cElementTree install import cElementTree as etree_ XMLParser_import_library = XMLParser_import_elementtree if Verbose_import_: print("running with cElementTree") except ImportError: try: # normal ElementTree install import elementtree.ElementTree as etree_ XMLParser_import_library = XMLParser_import_elementtree if Verbose_import_: print("running with ElementTree") except ImportError: raise ImportError("Failed to import ElementTree from any known place") def parsexml_(*args, **kwargs): if (XMLParser_import_library == XMLParser_import_lxml and 'parser' not in kwargs): # Use the lxml ElementTree compatible parser so that, e.g., # we ignore comments. kwargs['parser'] = etree_.ETCompatXMLParser() doc = etree_.parse(*args, **kwargs) return doc # # User methods # # Calls to the methods in these classes are generated by generateDS.py. # You can replace these methods by re-implementing the following class # in a module named generatedssuper.py. try: from generatedssuper import GeneratedsSuper except ImportError, exp: class GeneratedsSuper(object): def gds_format_string(self, input_data, input_name=''): return input_data def gds_validate_string(self, input_data, node, input_name=''): return input_data def gds_format_integer(self, input_data, input_name=''): return '%d' % input_data def gds_validate_integer(self, input_data, node, input_name=''): return input_data def gds_format_integer_list(self, input_data, input_name=''): return '%s' % input_data def gds_validate_integer_list(self, input_data, node, input_name=''): values = input_data.split() for value in values: try: fvalue = float(value) except (TypeError, ValueError), exp: raise_parse_error(node, 'Requires sequence of integers') return input_data def gds_format_float(self, input_data, input_name=''): return '%f' % input_data def gds_validate_float(self, input_data, node, input_name=''): return input_data def gds_format_float_list(self, input_data, input_name=''): return '%s' % input_data def gds_validate_float_list(self, input_data, node, input_name=''): values = input_data.split() for value in values: try: fvalue = float(value) except (TypeError, ValueError), exp: raise_parse_error(node, 'Requires sequence of floats') return input_data def gds_format_double(self, input_data, input_name=''): return '%e' % input_data def gds_validate_double(self, input_data, node, input_name=''): return input_data def gds_format_double_list(self, input_data, input_name=''): return '%s' % input_data def gds_validate_double_list(self, input_data, node, input_name=''): values = input_data.split() for value in values: try: fvalue = float(value) except (TypeError, ValueError), exp: raise_parse_error(node, 'Requires sequence of doubles') return input_data def gds_format_boolean(self, input_data, input_name=''): return '%s' % input_data def gds_validate_boolean(self, input_data, node, input_name=''): return input_data def gds_format_boolean_list(self, input_data, input_name=''): return '%s' % input_data def gds_validate_boolean_list(self, input_data, node, input_name=''): values = input_data.split() for value in values: if value not in ('true', '1', 'false', '0', ): raise_parse_error(node, 'Requires sequence of booleans ("true", "1", "false", "0")') return input_data def gds_str_lower(self, instring): return instring.lower() def get_path_(self, node): path_list = [] self.get_path_list_(node, path_list) path_list.reverse() path = '/'.join(path_list) return path Tag_strip_pattern_ = re_.compile(r'\{.*\}') def get_path_list_(self, node, path_list): if node is None: return tag = GeneratedsSuper.Tag_strip_pattern_.sub('', node.tag) if tag: path_list.append(tag) self.get_path_list_(node.getparent(), path_list) # # If you have installed IPython you can uncomment and use the following. # IPython is available from http://ipython.scipy.org/. # ## from IPython.Shell import IPShellEmbed ## args = '' ## ipshell = IPShellEmbed(args, ## banner = 'Dropping into IPython', ## exit_msg = 'Leaving Interpreter, back to program.') # Then use the following line where and when you want to drop into the # IPython shell: # ipshell(' -- Entering ipshell.\nHit Ctrl-D to exit') # # Globals # ExternalEncoding = 'ascii' Tag_pattern_ = re_.compile(r'({.*})?(.*)') STRING_CLEANUP_PAT = re_.compile(r"[\n\r\s]+") # # Support/utility functions. # def showIndent(outfile, level): for idx in range(level): outfile.write(' ') def quote_xml(inStr): if not inStr: return '' s1 = (isinstance(inStr, basestring) and inStr or '%s' % inStr) s1 = s1.replace('&', '&') s1 = s1.replace('<', '<') s1 = s1.replace('>', '>') return s1 def quote_attrib(inStr): s1 = (isinstance(inStr, basestring) and inStr or '%s' % inStr) s1 = s1.replace('&', '&') s1 = s1.replace('<', '<') s1 = s1.replace('>', '>') if '"' in s1: if "'" in s1: s1 = '"%s"' % s1.replace('"', """) else: s1 = "'%s'" % s1 else: s1 = '"%s"' % s1 return s1 def quote_python(inStr): s1 = inStr if s1.find("'") == -1: if s1.find('\n') == -1: return "'%s'" % s1 else: return "'''%s'''" % s1 else: if s1.find('"') != -1: s1 = s1.replace('"', '\\"') if s1.find('\n') == -1: return '"%s"' % s1 else: return '"""%s"""' % s1 def get_all_text_(node): if node.text is not None: text = node.text else: text = '' for child in node: if child.tail is not None: text += child.tail return text class GDSParseError(Exception): pass def raise_parse_error(node, msg): if XMLParser_import_library == XMLParser_import_lxml: msg = '%s (element %s/line %d)' % (msg, node.tag, node.sourceline, ) else: msg = '%s (element %s)' % (msg, node.tag, ) raise GDSParseError(msg) class MixedContainer: # Constants for category: CategoryNone = 0 CategoryText = 1 CategorySimple = 2 CategoryComplex = 3 # Constants for content_type: TypeNone = 0 TypeText = 1 TypeString = 2 TypeInteger = 3 TypeFloat = 4 TypeDecimal = 5 TypeDouble = 6 TypeBoolean = 7 def __init__(self, category, content_type, name, value): self.category = category self.content_type = content_type self.name = name self.value = value def getCategory(self): return self.category def getContenttype(self, content_type): return self.content_type def getValue(self): return self.value def getName(self): return self.name def export(self, outfile, level, name, namespace): if self.category == MixedContainer.CategoryText: # Prevent exporting empty content as empty lines. if self.value.strip(): outfile.write(self.value) elif self.category == MixedContainer.CategorySimple: self.exportSimple(outfile, level, name) else: # category == MixedContainer.CategoryComplex self.value.export(outfile, level, namespace,name) def exportSimple(self, outfile, level, name): if self.content_type == MixedContainer.TypeString: outfile.write('<%s>%s' % (self.name, self.value, self.name)) elif self.content_type == MixedContainer.TypeInteger or \ self.content_type == MixedContainer.TypeBoolean: outfile.write('<%s>%d' % (self.name, self.value, self.name)) elif self.content_type == MixedContainer.TypeFloat or \ self.content_type == MixedContainer.TypeDecimal: outfile.write('<%s>%f' % (self.name, self.value, self.name)) elif self.content_type == MixedContainer.TypeDouble: outfile.write('<%s>%g' % (self.name, self.value, self.name)) def exportLiteral(self, outfile, level, name): if self.category == MixedContainer.CategoryText: showIndent(outfile, level) outfile.write('model_.MixedContainer(%d, %d, "%s", "%s"),\n' % \ (self.category, self.content_type, self.name, self.value)) elif self.category == MixedContainer.CategorySimple: showIndent(outfile, level) outfile.write('model_.MixedContainer(%d, %d, "%s", "%s"),\n' % \ (self.category, self.content_type, self.name, self.value)) else: # category == MixedContainer.CategoryComplex showIndent(outfile, level) outfile.write('model_.MixedContainer(%d, %d, "%s",\n' % \ (self.category, self.content_type, self.name,)) self.value.exportLiteral(outfile, level + 1) showIndent(outfile, level) outfile.write(')\n') class MemberSpec_(object): def __init__(self, name='', data_type='', container=0): self.name = name self.data_type = data_type self.container = container def set_name(self, name): self.name = name def get_name(self): return self.name def set_data_type(self, data_type): self.data_type = data_type def get_data_type_chain(self): return self.data_type def get_data_type(self): if isinstance(self.data_type, list): if len(self.data_type) > 0: return self.data_type[-1] else: return 'xs:string' else: return self.data_type def set_container(self, container): self.container = container def get_container(self): return self.container def _cast(typ, value): if typ is None or value is None: return value return typ(value) # # Data representation classes. # class property(GeneratedsSuper): subclass = None superclass = None def __init__(self, name=None, value=None, type_=None, uncertainty=None, unit=None): self.name = name self.value = value self.type_ = type_ self.uncertainty = uncertainty self.unit = unit def factory(*args_, **kwargs_): if property.subclass: return property.subclass(*args_, **kwargs_) else: return property(*args_, **kwargs_) factory = staticmethod(factory) def get_name(self): return self.name def set_name(self, name): self.name = name def get_value(self): return self.value def set_value(self, value): self.value = value def get_type(self): return self.type_ def set_type(self, type_): self.type_ = type_ def get_uncertainty(self): return self.uncertainty def set_uncertainty(self, uncertainty): self.uncertainty = uncertainty def get_unit(self): return self.unit def set_unit(self, unit): self.unit = unit def export(self, outfile, level, namespace_='cml:', name_='property', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='property') if self.hasContent_(): outfile.write('>\n') self.exportChildren(outfile, level + 1, namespace_, name_) showIndent(outfile, level) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='property'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='property'): if self.name is not None: showIndent(outfile, level) outfile.write('<%sname>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.name).encode(ExternalEncoding), input_name='name'), namespace_)) if self.value is not None: showIndent(outfile, level) outfile.write('<%svalue>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.value).encode(ExternalEncoding), input_name='value'), namespace_)) if self.type_ is not None: showIndent(outfile, level) outfile.write('<%stype>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.type_).encode(ExternalEncoding), input_name='type'), namespace_)) if self.uncertainty is not None: showIndent(outfile, level) outfile.write('<%suncertainty>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.uncertainty).encode(ExternalEncoding), input_name='uncertainty'), namespace_)) if self.unit is not None: showIndent(outfile, level) outfile.write('<%sunit>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.unit).encode(ExternalEncoding), input_name='unit'), namespace_)) def hasContent_(self): if ( self.name is not None or self.value is not None or self.type_ is not None or self.uncertainty is not None or self.unit is not None ): return True else: return False def exportLiteral(self, outfile, level, name_='property'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): if self.name is not None: showIndent(outfile, level) outfile.write('name=%s,\n' % quote_python(self.name).encode(ExternalEncoding)) if self.value is not None: showIndent(outfile, level) outfile.write('value=%s,\n' % quote_python(self.value).encode(ExternalEncoding)) if self.type_ is not None: showIndent(outfile, level) outfile.write('type_=%s,\n' % quote_python(self.type_).encode(ExternalEncoding)) if self.uncertainty is not None: showIndent(outfile, level) outfile.write('uncertainty=%s,\n' % quote_python(self.uncertainty).encode(ExternalEncoding)) if self.unit is not None: showIndent(outfile, level) outfile.write('unit=%s,\n' % quote_python(self.unit).encode(ExternalEncoding)) def build(self, node): self.buildAttributes(node, node.attrib, []) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): if nodeName_ == 'name': name_ = child_.text name_ = self.gds_validate_string(name_, node, 'name') self.name = name_ elif nodeName_ == 'value': value_ = child_.text value_ = self.gds_validate_string(value_, node, 'value') self.value = value_ elif nodeName_ == 'type': type_ = child_.text type_ = self.gds_validate_string(type_, node, 'type') self.type_ = type_ elif nodeName_ == 'uncertainty': uncertainty_ = child_.text uncertainty_ = self.gds_validate_string(uncertainty_, node, 'uncertainty') self.uncertainty = uncertainty_ elif nodeName_ == 'unit': unit_ = child_.text unit_ = self.gds_validate_string(unit_, node, 'unit') self.unit = unit_ # end class property class section(GeneratedsSuper): subclass = None superclass = None def __init__(self, title=None, name=None, type_=None, property=None): self.title = _cast(None, title) self.name = name self.type_ = type_ if property is None: self.property = [] else: self.property = property def factory(*args_, **kwargs_): if section.subclass: return section.subclass(*args_, **kwargs_) else: return section(*args_, **kwargs_) factory = staticmethod(factory) def get_name(self): return self.name def set_name(self, name): self.name = name def get_type(self): return self.type_ def set_type(self, type_): self.type_ = type_ def get_property(self): return self.property def set_property(self, property): self.property = property def add_property(self, value): self.property.append(value) def insert_property(self, index, value): self.property[index] = value def get_title(self): return self.title def set_title(self, title): self.title = title def export(self, outfile, level, namespace_='cml:', name_='section', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='section') if self.hasContent_(): outfile.write('>\n') self.exportChildren(outfile, level + 1, namespace_, name_) showIndent(outfile, level) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='section'): if self.title is not None and 'title' not in already_processed: already_processed.append('title') outfile.write(' title=%s' % (self.gds_format_string(quote_attrib(self.title).encode(ExternalEncoding), input_name='title'), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='section'): if self.name is not None: showIndent(outfile, level) outfile.write('<%sname>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.name).encode(ExternalEncoding), input_name='name'), namespace_)) if self.type_ is not None: showIndent(outfile, level) outfile.write('<%stype>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.type_).encode(ExternalEncoding), input_name='type'), namespace_)) for property_ in self.property: property_.export(outfile, level, namespace_, name_='property') def hasContent_(self): if ( self.name is not None or self.type_ is not None or self.property ): return True else: return False def exportLiteral(self, outfile, level, name_='section'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.title is not None and 'title' not in already_processed: already_processed.append('title') showIndent(outfile, level) outfile.write('title = "%s",\n' % (self.title,)) def exportLiteralChildren(self, outfile, level, name_): if self.name is not None: showIndent(outfile, level) outfile.write('name=%s,\n' % quote_python(self.name).encode(ExternalEncoding)) if self.type_ is not None: showIndent(outfile, level) outfile.write('type_=%s,\n' % quote_python(self.type_).encode(ExternalEncoding)) showIndent(outfile, level) outfile.write('property=[\n') level += 1 for property_ in self.property: showIndent(outfile, level) outfile.write('model_.property(\n') property_.exportLiteral(outfile, level) showIndent(outfile, level) outfile.write('),\n') level -= 1 showIndent(outfile, level) outfile.write('],\n') def build(self, node): self.buildAttributes(node, node.attrib, []) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('title') if value is not None and 'title' not in already_processed: already_processed.append('title') self.title = value def buildChildren(self, child_, node, nodeName_, from_subclass=False): if nodeName_ == 'name': name_ = child_.text name_ = self.gds_validate_string(name_, node, 'name') self.name = name_ elif nodeName_ == 'type': type_ = child_.text type_ = self.gds_validate_string(type_, node, 'type') self.type_ = type_ elif nodeName_ == 'property': obj_ = property.factory() obj_.build(child_) self.property.append(obj_) # end class section class metadata(GeneratedsSuper): subclass = None superclass = None def __init__(self, tag=None, section=None): if tag is None: self.tag = [] else: self.tag = tag if section is None: self.section = [] else: self.section = section def factory(*args_, **kwargs_): if metadata.subclass: return metadata.subclass(*args_, **kwargs_) else: return metadata(*args_, **kwargs_) factory = staticmethod(factory) def get_tag(self): return self.tag def set_tag(self, tag): self.tag = tag def add_tag(self, value): self.tag.append(value) def insert_tag(self, index, value): self.tag[index] = value def get_section(self): return self.section def set_section(self, section): self.section = section def add_section(self, value): self.section.append(value) def insert_section(self, index, value): self.section[index] = value def export(self, outfile, level, namespace_='cml:', name_='metadata', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='metadata') if self.hasContent_(): outfile.write('>\n') self.exportChildren(outfile, level + 1, namespace_, name_) showIndent(outfile, level) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='metadata'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='metadata'): for tag_ in self.tag: tag_.export(outfile, level, namespace_, name_='tag') for section_ in self.section: section_.export(outfile, level, namespace_, name_='section') def hasContent_(self): if ( self.tag or self.section ): return True else: return False def exportLiteral(self, outfile, level, name_='metadata'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): showIndent(outfile, level) outfile.write('tag=[\n') level += 1 for tag_ in self.tag: showIndent(outfile, level) outfile.write('model_.tag(\n') tag_.exportLiteral(outfile, level) showIndent(outfile, level) outfile.write('),\n') level -= 1 showIndent(outfile, level) outfile.write('],\n') showIndent(outfile, level) outfile.write('section=[\n') level += 1 for section_ in self.section: showIndent(outfile, level) outfile.write('model_.section(\n') section_.exportLiteral(outfile, level) showIndent(outfile, level) outfile.write('),\n') level -= 1 showIndent(outfile, level) outfile.write('],\n') def build(self, node): self.buildAttributes(node, node.attrib, []) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): if nodeName_ == 'tag': obj_ = tag.factory() obj_.build(child_) self.tag.append(obj_) elif nodeName_ == 'section': obj_ = section.factory() obj_.build(child_) self.section.append(obj_) # end class metadata class tag(GeneratedsSuper): """A tag element contains a key attribute and the value The key to be used later in the dictionary""" subclass = None superclass = None def __init__(self, key=None, valueOf_=None): self.key = _cast(None, key) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if tag.subclass: return tag.subclass(*args_, **kwargs_) else: return tag(*args_, **kwargs_) factory = staticmethod(factory) def get_key(self): return self.key def set_key(self, key): self.key = key def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='tag', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='tag') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='tag'): if self.key is not None and 'key' not in already_processed: already_processed.append('key') outfile.write(' key=%s' % (self.gds_format_string(quote_attrib(self.key).encode(ExternalEncoding), input_name='key'), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='tag'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='tag'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.key is not None and 'key' not in already_processed: already_processed.append('key') showIndent(outfile, level) outfile.write('key = "%s",\n' % (self.key,)) def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('key') if value is not None and 'key' not in already_processed: already_processed.append('key') self.key = value def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class tag class connectome(GeneratedsSuper): subclass = None superclass = None def __init__(self, connectome_meta=None, connectome_network=None, connectome_surface=None, connectome_volume=None, connectome_track=None, connectome_timeseries=None, connectome_data=None, connectome_script=None, connectome_imagestack=None): self.connectome_meta = connectome_meta if connectome_network is None: self.connectome_network = [] else: self.connectome_network = connectome_network if connectome_surface is None: self.connectome_surface = [] else: self.connectome_surface = connectome_surface if connectome_volume is None: self.connectome_volume = [] else: self.connectome_volume = connectome_volume if connectome_track is None: self.connectome_track = [] else: self.connectome_track = connectome_track if connectome_timeseries is None: self.connectome_timeseries = [] else: self.connectome_timeseries = connectome_timeseries if connectome_data is None: self.connectome_data = [] else: self.connectome_data = connectome_data if connectome_script is None: self.connectome_script = [] else: self.connectome_script = connectome_script if connectome_imagestack is None: self.connectome_imagestack = [] else: self.connectome_imagestack = connectome_imagestack def factory(*args_, **kwargs_): if connectome.subclass: return connectome.subclass(*args_, **kwargs_) else: return connectome(*args_, **kwargs_) factory = staticmethod(factory) def get_connectome_meta(self): return self.connectome_meta def set_connectome_meta(self, connectome_meta): self.connectome_meta = connectome_meta def get_connectome_network(self): return self.connectome_network def set_connectome_network(self, connectome_network): self.connectome_network = connectome_network def add_connectome_network(self, value): self.connectome_network.append(value) def insert_connectome_network(self, index, value): self.connectome_network[index] = value def get_connectome_surface(self): return self.connectome_surface def set_connectome_surface(self, connectome_surface): self.connectome_surface = connectome_surface def add_connectome_surface(self, value): self.connectome_surface.append(value) def insert_connectome_surface(self, index, value): self.connectome_surface[index] = value def get_connectome_volume(self): return self.connectome_volume def set_connectome_volume(self, connectome_volume): self.connectome_volume = connectome_volume def add_connectome_volume(self, value): self.connectome_volume.append(value) def insert_connectome_volume(self, index, value): self.connectome_volume[index] = value def get_connectome_track(self): return self.connectome_track def set_connectome_track(self, connectome_track): self.connectome_track = connectome_track def add_connectome_track(self, value): self.connectome_track.append(value) def insert_connectome_track(self, index, value): self.connectome_track[index] = value def get_connectome_timeseries(self): return self.connectome_timeseries def set_connectome_timeseries(self, connectome_timeseries): self.connectome_timeseries = connectome_timeseries def add_connectome_timeseries(self, value): self.connectome_timeseries.append(value) def insert_connectome_timeseries(self, index, value): self.connectome_timeseries[index] = value def get_connectome_data(self): return self.connectome_data def set_connectome_data(self, connectome_data): self.connectome_data = connectome_data def add_connectome_data(self, value): self.connectome_data.append(value) def insert_connectome_data(self, index, value): self.connectome_data[index] = value def get_connectome_script(self): return self.connectome_script def set_connectome_script(self, connectome_script): self.connectome_script = connectome_script def add_connectome_script(self, value): self.connectome_script.append(value) def insert_connectome_script(self, index, value): self.connectome_script[index] = value def get_connectome_imagestack(self): return self.connectome_imagestack def set_connectome_imagestack(self, connectome_imagestack): self.connectome_imagestack = connectome_imagestack def add_connectome_imagestack(self, value): self.connectome_imagestack.append(value) def insert_connectome_imagestack(self, index, value): self.connectome_imagestack[index] = value def export(self, outfile, level, namespace_='cml:', name_='connectome', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='connectome') if self.hasContent_(): outfile.write('>\n') self.exportChildren(outfile, level + 1, namespace_, name_) showIndent(outfile, level) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='connectome'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='connectome'): if self.connectome_meta: self.connectome_meta.export(outfile, level, namespace_, name_='connectome-meta', ) for connectome_network_ in self.connectome_network: connectome_network_.export(outfile, level, namespace_, name_='connectome-network') for connectome_surface_ in self.connectome_surface: connectome_surface_.export(outfile, level, namespace_, name_='connectome-surface') for connectome_volume_ in self.connectome_volume: connectome_volume_.export(outfile, level, namespace_, name_='connectome-volume') for connectome_track_ in self.connectome_track: connectome_track_.export(outfile, level, namespace_, name_='connectome-track') for connectome_timeseries_ in self.connectome_timeseries: connectome_timeseries_.export(outfile, level, namespace_, name_='connectome-timeseries') for connectome_data_ in self.connectome_data: connectome_data_.export(outfile, level, namespace_, name_='connectome-data') for connectome_script_ in self.connectome_script: connectome_script_.export(outfile, level, namespace_, name_='connectome-script') for connectome_imagestack_ in self.connectome_imagestack: connectome_imagestack_.export(outfile, level, namespace_, name_='connectome-imagestack') def hasContent_(self): if ( self.connectome_meta is not None or self.connectome_network or self.connectome_surface or self.connectome_volume or self.connectome_track or self.connectome_timeseries or self.connectome_data or self.connectome_script or self.connectome_imagestack ): return True else: return False def exportLiteral(self, outfile, level, name_='connectome'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): if self.connectome_meta is not None: showIndent(outfile, level) outfile.write('connectome_meta=model_.CMetadata(\n') self.connectome_meta.exportLiteral(outfile, level, name_='connectome_meta') showIndent(outfile, level) outfile.write('),\n') showIndent(outfile, level) outfile.write('connectome_network=[\n') level += 1 for connectome_network_ in self.connectome_network: showIndent(outfile, level) outfile.write('model_.CNetwork(\n') connectome_network_.exportLiteral(outfile, level, name_='CNetwork') showIndent(outfile, level) outfile.write('),\n') level -= 1 showIndent(outfile, level) outfile.write('],\n') showIndent(outfile, level) outfile.write('connectome_surface=[\n') level += 1 for connectome_surface_ in self.connectome_surface: showIndent(outfile, level) outfile.write('model_.CSurface(\n') connectome_surface_.exportLiteral(outfile, level, name_='CSurface') showIndent(outfile, level) outfile.write('),\n') level -= 1 showIndent(outfile, level) outfile.write('],\n') showIndent(outfile, level) outfile.write('connectome_volume=[\n') level += 1 for connectome_volume_ in self.connectome_volume: showIndent(outfile, level) outfile.write('model_.CVolume(\n') connectome_volume_.exportLiteral(outfile, level, name_='CVolume') showIndent(outfile, level) outfile.write('),\n') level -= 1 showIndent(outfile, level) outfile.write('],\n') showIndent(outfile, level) outfile.write('connectome_track=[\n') level += 1 for connectome_track_ in self.connectome_track: showIndent(outfile, level) outfile.write('model_.CTrack(\n') connectome_track_.exportLiteral(outfile, level, name_='CTrack') showIndent(outfile, level) outfile.write('),\n') level -= 1 showIndent(outfile, level) outfile.write('],\n') showIndent(outfile, level) outfile.write('connectome_timeseries=[\n') level += 1 for connectome_timeseries_ in self.connectome_timeseries: showIndent(outfile, level) outfile.write('model_.CTimeseries(\n') connectome_timeseries_.exportLiteral(outfile, level, name_='CTimeseries') showIndent(outfile, level) outfile.write('),\n') level -= 1 showIndent(outfile, level) outfile.write('],\n') showIndent(outfile, level) outfile.write('connectome_data=[\n') level += 1 for connectome_data_ in self.connectome_data: showIndent(outfile, level) outfile.write('model_.CData(\n') connectome_data_.exportLiteral(outfile, level, name_='CData') showIndent(outfile, level) outfile.write('),\n') level -= 1 showIndent(outfile, level) outfile.write('],\n') showIndent(outfile, level) outfile.write('connectome_script=[\n') level += 1 for connectome_script_ in self.connectome_script: showIndent(outfile, level) outfile.write('model_.CScript(\n') connectome_script_.exportLiteral(outfile, level, name_='CScript') showIndent(outfile, level) outfile.write('),\n') level -= 1 showIndent(outfile, level) outfile.write('],\n') showIndent(outfile, level) outfile.write('connectome_imagestack=[\n') level += 1 for connectome_imagestack_ in self.connectome_imagestack: showIndent(outfile, level) outfile.write('model_.CImagestack(\n') connectome_imagestack_.exportLiteral(outfile, level, name_='CImagestack') showIndent(outfile, level) outfile.write('),\n') level -= 1 showIndent(outfile, level) outfile.write('],\n') def build(self, node): self.buildAttributes(node, node.attrib, []) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): if nodeName_ == 'connectome-meta': obj_ = CMetadata.factory() obj_.build(child_) self.set_connectome_meta(obj_) elif nodeName_ == 'connectome-network': obj_ = CNetwork.factory() obj_.build(child_) self.connectome_network.append(obj_) elif nodeName_ == 'connectome-surface': obj_ = CSurface.factory() obj_.build(child_) self.connectome_surface.append(obj_) elif nodeName_ == 'connectome-volume': obj_ = CVolume.factory() obj_.build(child_) self.connectome_volume.append(obj_) elif nodeName_ == 'connectome-track': obj_ = CTrack.factory() obj_.build(child_) self.connectome_track.append(obj_) elif nodeName_ == 'connectome-timeseries': obj_ = CTimeseries.factory() obj_.build(child_) self.connectome_timeseries.append(obj_) elif nodeName_ == 'connectome-data': obj_ = CData.factory() obj_.build(child_) self.connectome_data.append(obj_) elif nodeName_ == 'connectome-script': obj_ = CScript.factory() obj_.build(child_) self.connectome_script.append(obj_) elif nodeName_ == 'connectome-imagestack': obj_ = CImagestack.factory() obj_.build(child_) self.connectome_imagestack.append(obj_) # end class connectome class CMetadata(GeneratedsSuper): """Defines the version of the Connectome Schema Definition the current Connectome File is compatible with. Should be 2.0""" subclass = None superclass = None def __init__(self, version=None, title=None, creator=None, publisher=None, created=None, modified=None, rights=None, license=None, references=None, relation=None, description=None, generator=None, species=None, email=None, metadata=None): self.version = _cast(None, version) self.title = title self.creator = creator self.publisher = publisher self.created = created self.modified = modified self.rights = rights self.license = license self.references = references self.relation = relation self.description = description self.generator = generator self.species = species self.email = email self.metadata = metadata def factory(*args_, **kwargs_): if CMetadata.subclass: return CMetadata.subclass(*args_, **kwargs_) else: return CMetadata(*args_, **kwargs_) factory = staticmethod(factory) def get_title(self): return self.title def set_title(self, title): self.title = title def get_creator(self): return self.creator def set_creator(self, creator): self.creator = creator def get_publisher(self): return self.publisher def set_publisher(self, publisher): self.publisher = publisher def get_created(self): return self.created def set_created(self, created): self.created = created def get_modified(self): return self.modified def set_modified(self, modified): self.modified = modified def get_rights(self): return self.rights def set_rights(self, rights): self.rights = rights def get_license(self): return self.license def set_license(self, license): self.license = license def get_references(self): return self.references def set_references(self, references): self.references = references def get_relation(self): return self.relation def set_relation(self, relation): self.relation = relation def get_description(self): return self.description def set_description(self, description): self.description = description def get_generator(self): return self.generator def set_generator(self, generator): self.generator = generator def get_species(self): return self.species def set_species(self, species): self.species = species def get_email(self): return self.email def set_email(self, email): self.email = email def get_metadata(self): return self.metadata def set_metadata(self, metadata): self.metadata = metadata def get_version(self): return self.version def set_version(self, version): self.version = version def export(self, outfile, level, namespace_='cml:', name_='CMetadata', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='CMetadata') if self.hasContent_(): outfile.write('>\n') self.exportChildren(outfile, level + 1, namespace_, name_) showIndent(outfile, level) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='CMetadata'): if self.version is not None and 'version' not in already_processed: already_processed.append('version') outfile.write(' version=%s' % (self.gds_format_string(quote_attrib(self.version).encode(ExternalEncoding), input_name='version'), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='CMetadata'): if self.title is not None: showIndent(outfile, level) outfile.write('<%stitle>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.title).encode(ExternalEncoding), input_name='title'), namespace_)) if self.creator is not None: showIndent(outfile, level) outfile.write('<%screator>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.creator).encode(ExternalEncoding), input_name='creator'), namespace_)) if self.publisher is not None: showIndent(outfile, level) outfile.write('<%spublisher>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.publisher).encode(ExternalEncoding), input_name='publisher'), namespace_)) if self.created is not None: showIndent(outfile, level) outfile.write('<%screated>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.created).encode(ExternalEncoding), input_name='created'), namespace_)) if self.modified is not None: showIndent(outfile, level) outfile.write('<%smodified>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.modified).encode(ExternalEncoding), input_name='modified'), namespace_)) if self.rights is not None: showIndent(outfile, level) outfile.write('<%srights>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.rights).encode(ExternalEncoding), input_name='rights'), namespace_)) if self.license is not None: showIndent(outfile, level) outfile.write('<%slicense>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.license).encode(ExternalEncoding), input_name='license'), namespace_)) if self.references is not None: showIndent(outfile, level) outfile.write('<%sreferences>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.references).encode(ExternalEncoding), input_name='references'), namespace_)) if self.relation is not None: showIndent(outfile, level) outfile.write('<%srelation>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.relation).encode(ExternalEncoding), input_name='relation'), namespace_)) if self.description is not None: showIndent(outfile, level) outfile.write('<%sdescription>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.description).encode(ExternalEncoding), input_name='description'), namespace_)) if self.generator is not None: showIndent(outfile, level) outfile.write('<%sgenerator>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.generator).encode(ExternalEncoding), input_name='generator'), namespace_)) if self.species is not None: showIndent(outfile, level) outfile.write('<%sspecies>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.species).encode(ExternalEncoding), input_name='species'), namespace_)) if self.email is not None: showIndent(outfile, level) outfile.write('<%semail>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.email).encode(ExternalEncoding), input_name='email'), namespace_)) if self.metadata: self.metadata.export(outfile, level, namespace_, name_='metadata') def hasContent_(self): if ( self.title is not None or self.creator is not None or self.publisher is not None or self.created is not None or self.modified is not None or self.rights is not None or self.license is not None or self.references is not None or self.relation is not None or self.description is not None or self.generator is not None or self.species is not None or self.email is not None or self.metadata is not None ): return True else: return False def exportLiteral(self, outfile, level, name_='CMetadata'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.version is not None and 'version' not in already_processed: already_processed.append('version') showIndent(outfile, level) outfile.write('version = "%s",\n' % (self.version,)) def exportLiteralChildren(self, outfile, level, name_): if self.title is not None: showIndent(outfile, level) outfile.write('title=%s,\n' % quote_python(self.title).encode(ExternalEncoding)) if self.creator is not None: showIndent(outfile, level) outfile.write('creator=%s,\n' % quote_python(self.creator).encode(ExternalEncoding)) if self.publisher is not None: showIndent(outfile, level) outfile.write('publisher=%s,\n' % quote_python(self.publisher).encode(ExternalEncoding)) if self.created is not None: showIndent(outfile, level) outfile.write('created=%s,\n' % quote_python(self.created).encode(ExternalEncoding)) if self.modified is not None: showIndent(outfile, level) outfile.write('modified=%s,\n' % quote_python(self.modified).encode(ExternalEncoding)) if self.rights is not None: showIndent(outfile, level) outfile.write('rights=%s,\n' % quote_python(self.rights).encode(ExternalEncoding)) if self.license is not None: showIndent(outfile, level) outfile.write('license=%s,\n' % quote_python(self.license).encode(ExternalEncoding)) if self.references is not None: showIndent(outfile, level) outfile.write('references=%s,\n' % quote_python(self.references).encode(ExternalEncoding)) if self.relation is not None: showIndent(outfile, level) outfile.write('relation=%s,\n' % quote_python(self.relation).encode(ExternalEncoding)) if self.description is not None: showIndent(outfile, level) outfile.write('description=%s,\n' % quote_python(self.description).encode(ExternalEncoding)) if self.generator is not None: showIndent(outfile, level) outfile.write('generator=%s,\n' % quote_python(self.generator).encode(ExternalEncoding)) if self.species is not None: showIndent(outfile, level) outfile.write('species=%s,\n' % quote_python(self.species).encode(ExternalEncoding)) if self.email is not None: showIndent(outfile, level) outfile.write('email=%s,\n' % quote_python(self.email).encode(ExternalEncoding)) if self.metadata is not None: showIndent(outfile, level) outfile.write('metadata=model_.metadata(\n') self.metadata.exportLiteral(outfile, level) showIndent(outfile, level) outfile.write('),\n') def build(self, node): self.buildAttributes(node, node.attrib, []) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('version') if value is not None and 'version' not in already_processed: already_processed.append('version') self.version = value def buildChildren(self, child_, node, nodeName_, from_subclass=False): if nodeName_ == 'title': title_ = child_.text title_ = self.gds_validate_string(title_, node, 'title') self.title = title_ elif nodeName_ == 'alternative': obj_ = alternative.factory() obj_.build(child_) self.set_title(obj_) elif nodeName_ == 'creator': creator_ = child_.text creator_ = self.gds_validate_string(creator_, node, 'creator') self.creator = creator_ elif nodeName_ == 'publisher': publisher_ = child_.text publisher_ = self.gds_validate_string(publisher_, node, 'publisher') self.publisher = publisher_ elif nodeName_ == 'created': created_ = child_.text created_ = self.gds_validate_string(created_, node, 'created') self.created = created_ elif nodeName_ == 'modified': modified_ = child_.text modified_ = self.gds_validate_string(modified_, node, 'modified') self.modified = modified_ elif nodeName_ == 'rights': rights_ = child_.text rights_ = self.gds_validate_string(rights_, node, 'rights') self.rights = rights_ elif nodeName_ == 'accessRights': obj_ = accessRights.factory() obj_.build(child_) self.set_rights(obj_) elif nodeName_ == 'license': obj_ = license.factory() obj_.build(child_) self.set_rights(obj_) elif nodeName_ == 'license': license_ = child_.text license_ = self.gds_validate_string(license_, node, 'license') self.license = license_ elif nodeName_ == 'references': references_ = child_.text references_ = self.gds_validate_string(references_, node, 'references') self.references = references_ elif nodeName_ == 'relation': relation_ = child_.text relation_ = self.gds_validate_string(relation_, node, 'relation') self.relation = relation_ elif nodeName_ == 'isVersionOf': obj_ = isVersionOf.factory() obj_.build(child_) self.set_relation(obj_) elif nodeName_ == 'hasVersion': obj_ = hasVersion.factory() obj_.build(child_) self.set_relation(obj_) elif nodeName_ == 'isReplacedBy': obj_ = isReplacedBy.factory() obj_.build(child_) self.set_relation(obj_) elif nodeName_ == 'replaces': obj_ = replaces.factory() obj_.build(child_) self.set_relation(obj_) elif nodeName_ == 'isRequiredBy': obj_ = isRequiredBy.factory() obj_.build(child_) self.set_relation(obj_) elif nodeName_ == 'requires': obj_ = requires.factory() obj_.build(child_) self.set_relation(obj_) elif nodeName_ == 'isPartOf': obj_ = isPartOf.factory() obj_.build(child_) self.set_relation(obj_) elif nodeName_ == 'hasPart': obj_ = hasPart.factory() obj_.build(child_) self.set_relation(obj_) elif nodeName_ == 'isReferencedBy': obj_ = isReferencedBy.factory() obj_.build(child_) self.set_relation(obj_) elif nodeName_ == 'references': obj_ = references.factory() obj_.build(child_) self.set_relation(obj_) elif nodeName_ == 'isFormatOf': obj_ = isFormatOf.factory() obj_.build(child_) self.set_relation(obj_) elif nodeName_ == 'hasFormat': obj_ = hasFormat.factory() obj_.build(child_) self.set_relation(obj_) elif nodeName_ == 'conformsTo': obj_ = conformsTo.factory() obj_.build(child_) self.set_relation(obj_) elif nodeName_ == 'description': description_ = child_.text description_ = self.gds_validate_string(description_, node, 'description') self.description = description_ elif nodeName_ == 'tableOfContents': obj_ = tableOfContents.factory() obj_.build(child_) self.set_description(obj_) elif nodeName_ == 'abstract': obj_ = abstract.factory() obj_.build(child_) self.set_description(obj_) elif nodeName_ == 'generator': generator_ = child_.text generator_ = self.gds_validate_string(generator_, node, 'generator') self.generator = generator_ elif nodeName_ == 'species': species_ = child_.text species_ = self.gds_validate_string(species_, node, 'species') self.species = species_ elif nodeName_ == 'email': email_ = child_.text email_ = self.gds_validate_string(email_, node, 'email') self.email = email_ elif nodeName_ == 'metadata': obj_ = metadata.factory() obj_.build(child_) self.set_metadata(obj_) # end class CMetadata class CNetwork(GeneratedsSuper): """The short name of the network The path to the file according to location attribute Is the network stored it "GEXF" or "GraphML" format, "NXGPickle" as NetworkX pickled object, or "Other" format? - dtype="AttributeNetwork" A network with arbitrary number of attributes for nodes and edges. - dtype="DynamicNetwork" Network with either with lifespan attributes for nodes and edges (See GEXF) or timeseries on nodes and edges. - dtype="HierarchicalNetwork" Network with hierarchical structure. - dtype="StructuralNetwork" A structural network e.g. derived from Diffusion MRI - dtype="FunctionalNetwork" Networks derived from functional measures such as EEG/MEG/fMRI/PET etc. - dtype="EffectiveNetwork" Networks representing effective connectivity - dtype="Other" Other kind of network.""" subclass = None superclass = None def __init__(self, src=None, dtype='AttributeNetwork', name=None, fileformat='GraphML', metadata=None, description=None): self.src = _cast(None, src) self.dtype = _cast(None, dtype) self.name = _cast(None, name) self.fileformat = _cast(None, fileformat) self.metadata = metadata self.description = description def factory(*args_, **kwargs_): if CNetwork.subclass: return CNetwork.subclass(*args_, **kwargs_) else: return CNetwork(*args_, **kwargs_) factory = staticmethod(factory) def get_metadata(self): return self.metadata def set_metadata(self, metadata): self.metadata = metadata def get_description(self): return self.description def set_description(self, description): self.description = description def get_src(self): return self.src def set_src(self, src): self.src = src def get_dtype(self): return self.dtype def set_dtype(self, dtype): self.dtype = dtype def validate_networkEnumDType(self, value): # Validate type networkEnumDType, a restriction on xsd:string. pass def get_name(self): return self.name def set_name(self, name): self.name = name def get_fileformat(self): return self.fileformat def set_fileformat(self, fileformat): self.fileformat = fileformat def validate_networkFileFormat(self, value): # Validate type networkFileFormat, a restriction on xsd:string. pass def export(self, outfile, level, namespace_='cml:', name_='CNetwork', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='CNetwork') if self.hasContent_(): outfile.write('>\n') self.exportChildren(outfile, level + 1, namespace_, name_) showIndent(outfile, level) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='CNetwork'): if self.src is not None and 'src' not in already_processed: already_processed.append('src') outfile.write(' src=%s' % (self.gds_format_string(quote_attrib(self.src).encode(ExternalEncoding), input_name='src'), )) if self.dtype is not None and 'dtype' not in already_processed: already_processed.append('dtype') outfile.write(' dtype=%s' % (quote_attrib(self.dtype), )) if self.name is not None and 'name' not in already_processed: already_processed.append('name') outfile.write(' name=%s' % (self.gds_format_string(quote_attrib(self.name).encode(ExternalEncoding), input_name='name'), )) if self.fileformat is not None and 'fileformat' not in already_processed: already_processed.append('fileformat') outfile.write(' fileformat=%s' % (quote_attrib(self.fileformat), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='CNetwork'): if self.metadata: self.metadata.export(outfile, level, namespace_, name_='metadata') if self.description is not None: showIndent(outfile, level) outfile.write('<%sdescription>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.description).encode(ExternalEncoding), input_name='description'), namespace_)) def hasContent_(self): if ( self.metadata is not None or self.description is not None ): return True else: return False def exportLiteral(self, outfile, level, name_='CNetwork'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.src is not None and 'src' not in already_processed: already_processed.append('src') showIndent(outfile, level) outfile.write('src = "%s",\n' % (self.src,)) if self.dtype is not None and 'dtype' not in already_processed: already_processed.append('dtype') showIndent(outfile, level) outfile.write('dtype = "%s",\n' % (self.dtype,)) if self.name is not None and 'name' not in already_processed: already_processed.append('name') showIndent(outfile, level) outfile.write('name = "%s",\n' % (self.name,)) if self.fileformat is not None and 'fileformat' not in already_processed: already_processed.append('fileformat') showIndent(outfile, level) outfile.write('fileformat = "%s",\n' % (self.fileformat,)) def exportLiteralChildren(self, outfile, level, name_): if self.metadata is not None: showIndent(outfile, level) outfile.write('metadata=model_.metadata(\n') self.metadata.exportLiteral(outfile, level) showIndent(outfile, level) outfile.write('),\n') if self.description is not None: showIndent(outfile, level) outfile.write('description=%s,\n' % quote_python(self.description).encode(ExternalEncoding)) def build(self, node): self.buildAttributes(node, node.attrib, []) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('src') if value is not None and 'src' not in already_processed: already_processed.append('src') self.src = value value = attrs.get('dtype') if value is not None and 'dtype' not in already_processed: already_processed.append('dtype') self.dtype = value self.validate_networkEnumDType(self.dtype) # validate type networkEnumDType value = attrs.get('name') if value is not None and 'name' not in already_processed: already_processed.append('name') self.name = value value = attrs.get('fileformat') if value is not None and 'fileformat' not in already_processed: already_processed.append('fileformat') self.fileformat = value self.validate_networkFileFormat(self.fileformat) # validate type networkFileFormat def buildChildren(self, child_, node, nodeName_, from_subclass=False): if nodeName_ == 'metadata': obj_ = metadata.factory() obj_.build(child_) self.set_metadata(obj_) elif nodeName_ == 'description': description_ = child_.text description_ = self.gds_validate_string(description_, node, 'description') self.description = description_ elif nodeName_ == 'tableOfContents': obj_ = tableOfContents.factory() obj_.build(child_) self.set_description(obj_) elif nodeName_ == 'abstract': obj_ = abstract.factory() obj_.build(child_) self.set_description(obj_) # end class CNetwork class CSurface(GeneratedsSuper): """Descriptive name of the surface. The path to the file according to location attribute Set to "gifti" to use the only supported Gifti format by cfflib. See http://www.nitrc.org/frs/download.php/158/gifti.xsd for schema information Use "Other" for other formats with custom IO Handling What type of surface does the Gifti file contain: - type="Labeling" The Gifti file contains surface labels. This file can be referenced in connectome-network with either the name attribute or in addition to another surface defined by name and using the labelname attribute and matching labelid. If referenced in such a way, the networks' nodes attribute dn_intensityvalue value may match the label array integers, thereby relating a network node to a surface patch (a region of interest defined on the surface). See also example datasets. - type="Surfaceset" The Gifti file contains a set of surfaces where the metadata tag AnatomicalStructurePrimary match. Individual elements of the set are distinguished by the metadta tag AnatomicalStructureSecondary. The Gifti file contains information about the coordinate system used. - type="Surfaceset+Labeling" If the Gifti file contains data as described for both surfaceset and label above. - type="Other" Any other kind of data storable in a Gifti file.""" subclass = None superclass = None def __init__(self, src=None, dtype='Surfaceset', name=None, fileformat=None, description=None, metadata=None): self.src = _cast(None, src) self.dtype = _cast(None, dtype) self.name = _cast(None, name) self.fileformat = _cast(None, fileformat) self.description = description self.metadata = metadata def factory(*args_, **kwargs_): if CSurface.subclass: return CSurface.subclass(*args_, **kwargs_) else: return CSurface(*args_, **kwargs_) factory = staticmethod(factory) def get_description(self): return self.description def set_description(self, description): self.description = description def get_metadata(self): return self.metadata def set_metadata(self, metadata): self.metadata = metadata def get_src(self): return self.src def set_src(self, src): self.src = src def get_dtype(self): return self.dtype def set_dtype(self, dtype): self.dtype = dtype def validate_surfaceEnumDType(self, value): # Validate type surfaceEnumDType, a restriction on xsd:string. pass def get_name(self): return self.name def set_name(self, name): self.name = name def get_fileformat(self): return self.fileformat def set_fileformat(self, fileformat): self.fileformat = fileformat def validate_surfaceFileFormat(self, value): # Validate type surfaceFileFormat, a restriction on xsd:string. pass def export(self, outfile, level, namespace_='cml:', name_='CSurface', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='CSurface') if self.hasContent_(): outfile.write('>\n') self.exportChildren(outfile, level + 1, namespace_, name_) showIndent(outfile, level) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='CSurface'): if self.src is not None and 'src' not in already_processed: already_processed.append('src') outfile.write(' src=%s' % (self.gds_format_string(quote_attrib(self.src).encode(ExternalEncoding), input_name='src'), )) if self.dtype is not None and 'dtype' not in already_processed: already_processed.append('dtype') outfile.write(' dtype=%s' % (quote_attrib(self.dtype), )) if self.name is not None and 'name' not in already_processed: already_processed.append('name') outfile.write(' name=%s' % (self.gds_format_string(quote_attrib(self.name).encode(ExternalEncoding), input_name='name'), )) if self.fileformat is not None and 'fileformat' not in already_processed: already_processed.append('fileformat') outfile.write(' fileformat=%s' % (quote_attrib(self.fileformat), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='CSurface'): if self.description is not None: showIndent(outfile, level) outfile.write('<%sdescription>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.description).encode(ExternalEncoding), input_name='description'), namespace_)) if self.metadata: self.metadata.export(outfile, level, namespace_, name_='metadata', ) def hasContent_(self): if ( self.description is not None or self.metadata is not None ): return True else: return False def exportLiteral(self, outfile, level, name_='CSurface'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.src is not None and 'src' not in already_processed: already_processed.append('src') showIndent(outfile, level) outfile.write('src = "%s",\n' % (self.src,)) if self.dtype is not None and 'dtype' not in already_processed: already_processed.append('dtype') showIndent(outfile, level) outfile.write('dtype = "%s",\n' % (self.dtype,)) if self.name is not None and 'name' not in already_processed: already_processed.append('name') showIndent(outfile, level) outfile.write('name = "%s",\n' % (self.name,)) if self.fileformat is not None and 'fileformat' not in already_processed: already_processed.append('fileformat') showIndent(outfile, level) outfile.write('fileformat = "%s",\n' % (self.fileformat,)) def exportLiteralChildren(self, outfile, level, name_): if self.description is not None: showIndent(outfile, level) outfile.write('description=%s,\n' % quote_python(self.description).encode(ExternalEncoding)) if self.metadata is not None: showIndent(outfile, level) outfile.write('metadata=model_.metadata(\n') self.metadata.exportLiteral(outfile, level) showIndent(outfile, level) outfile.write('),\n') def build(self, node): self.buildAttributes(node, node.attrib, []) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('src') if value is not None and 'src' not in already_processed: already_processed.append('src') self.src = value value = attrs.get('dtype') if value is not None and 'dtype' not in already_processed: already_processed.append('dtype') self.dtype = value self.validate_surfaceEnumDType(self.dtype) # validate type surfaceEnumDType value = attrs.get('name') if value is not None and 'name' not in already_processed: already_processed.append('name') self.name = value value = attrs.get('fileformat') if value is not None and 'fileformat' not in already_processed: already_processed.append('fileformat') self.fileformat = value self.validate_surfaceFileFormat(self.fileformat) # validate type surfaceFileFormat def buildChildren(self, child_, node, nodeName_, from_subclass=False): if nodeName_ == 'description': description_ = child_.text description_ = self.gds_validate_string(description_, node, 'description') self.description = description_ elif nodeName_ == 'tableOfContents': obj_ = tableOfContents.factory() obj_.build(child_) self.set_description(obj_) elif nodeName_ == 'abstract': obj_ = abstract.factory() obj_.build(child_) self.set_description(obj_) elif nodeName_ == 'metadata': obj_ = metadata.factory() obj_.build(child_) self.set_metadata(obj_) # end class CSurface class CVolume(GeneratedsSuper): """Name of the volume. The path to the file according to location attribute Set to "Nifti1" to use the only supported Nifti format. This works also for compressed files with name ending .nii.gz The Nifti file contains information about the coordinate system used. Set type of volume the Nifti file contains: - type="Segmentation" The Nifti file contains a single volume where the voxel values are integers, representing a segmented Region of Interest. If this volume is referenced by a connectome-network, its nodes dn_intensityvalue attribute may match these integer values. Such a segmentation volume can referenced in a connectome-volume by the segmentationname attribute in addition to another, e.g. T1-weighted volume which is referenced by the name attribute. See also example datasets. - type="T1-weighted" The Nifti file contains a T1-weighted volume. - type="T2-weighted" The Nifti file contains a T2-weighted volume. - type="PD-weighted" The voxel values represent a proton-density weighted signal. - type="fMRI" The Nifti file contains functional MRI time series data. - type="Probabilitymap" Voxel values are in the range [0,1]. Can stand for tissue probability maps. - type="MD" Diffusion-related signal. Stands for mean diffusivity. - type="FA" Diffusion- related signal. Stands for fractional anisotropy. - type="LD" Diffusion-related signal. Stands for longitudinal diffusivity. - type="TD" Diffusion-related signal. Stands for transversal diffusivity. - type="FLAIR" Stands for Fluid attenuated inversion recovery - type="MRA" Stands for Magnetic resonance angiography - type="MRS" Stands for Magnetic resonance spectroscopy""" subclass = None superclass = None def __init__(self, src=None, dtype=None, name=None, fileformat='Nifti1', description=None, metadata=None): self.src = _cast(None, src) self.dtype = _cast(None, dtype) self.name = _cast(None, name) self.fileformat = _cast(None, fileformat) self.description = description self.metadata = metadata def factory(*args_, **kwargs_): if CVolume.subclass: return CVolume.subclass(*args_, **kwargs_) else: return CVolume(*args_, **kwargs_) factory = staticmethod(factory) def get_description(self): return self.description def set_description(self, description): self.description = description def get_metadata(self): return self.metadata def set_metadata(self, metadata): self.metadata = metadata def get_src(self): return self.src def set_src(self, src): self.src = src def get_dtype(self): return self.dtype def set_dtype(self, dtype): self.dtype = dtype def validate_volumeEnumDType(self, value): # Validate type volumeEnumDType, a restriction on xsd:string. pass def get_name(self): return self.name def set_name(self, name): self.name = name def get_fileformat(self): return self.fileformat def set_fileformat(self, fileformat): self.fileformat = fileformat def validate_volumeFileFormat(self, value): # Validate type volumeFileFormat, a restriction on xsd:string. pass def export(self, outfile, level, namespace_='cml:', name_='CVolume', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='CVolume') if self.hasContent_(): outfile.write('>\n') self.exportChildren(outfile, level + 1, namespace_, name_) showIndent(outfile, level) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='CVolume'): if self.src is not None and 'src' not in already_processed: already_processed.append('src') outfile.write(' src=%s' % (self.gds_format_string(quote_attrib(self.src).encode(ExternalEncoding), input_name='src'), )) if self.dtype is not None and 'dtype' not in already_processed: already_processed.append('dtype') outfile.write(' dtype=%s' % (quote_attrib(self.dtype), )) if self.name is not None and 'name' not in already_processed: already_processed.append('name') outfile.write(' name=%s' % (self.gds_format_string(quote_attrib(self.name).encode(ExternalEncoding), input_name='name'), )) if self.fileformat is not None and 'fileformat' not in already_processed: already_processed.append('fileformat') outfile.write(' fileformat=%s' % (quote_attrib(self.fileformat), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='CVolume'): if self.description is not None: showIndent(outfile, level) outfile.write('<%sdescription>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.description).encode(ExternalEncoding), input_name='description'), namespace_)) if self.metadata: self.metadata.export(outfile, level, namespace_, name_='metadata', ) def hasContent_(self): if ( self.description is not None or self.metadata is not None ): return True else: return False def exportLiteral(self, outfile, level, name_='CVolume'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.src is not None and 'src' not in already_processed: already_processed.append('src') showIndent(outfile, level) outfile.write('src = "%s",\n' % (self.src,)) if self.dtype is not None and 'dtype' not in already_processed: already_processed.append('dtype') showIndent(outfile, level) outfile.write('dtype = "%s",\n' % (self.dtype,)) if self.name is not None and 'name' not in already_processed: already_processed.append('name') showIndent(outfile, level) outfile.write('name = "%s",\n' % (self.name,)) if self.fileformat is not None and 'fileformat' not in already_processed: already_processed.append('fileformat') showIndent(outfile, level) outfile.write('fileformat = "%s",\n' % (self.fileformat,)) def exportLiteralChildren(self, outfile, level, name_): if self.description is not None: showIndent(outfile, level) outfile.write('description=%s,\n' % quote_python(self.description).encode(ExternalEncoding)) if self.metadata is not None: showIndent(outfile, level) outfile.write('metadata=model_.metadata(\n') self.metadata.exportLiteral(outfile, level) showIndent(outfile, level) outfile.write('),\n') def build(self, node): self.buildAttributes(node, node.attrib, []) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('src') if value is not None and 'src' not in already_processed: already_processed.append('src') self.src = value value = attrs.get('dtype') if value is not None and 'dtype' not in already_processed: already_processed.append('dtype') self.dtype = value self.validate_volumeEnumDType(self.dtype) # validate type volumeEnumDType value = attrs.get('name') if value is not None and 'name' not in already_processed: already_processed.append('name') self.name = value value = attrs.get('fileformat') if value is not None and 'fileformat' not in already_processed: already_processed.append('fileformat') self.fileformat = value self.validate_volumeFileFormat(self.fileformat) # validate type volumeFileFormat def buildChildren(self, child_, node, nodeName_, from_subclass=False): if nodeName_ == 'description': description_ = child_.text description_ = self.gds_validate_string(description_, node, 'description') self.description = description_ elif nodeName_ == 'tableOfContents': obj_ = tableOfContents.factory() obj_.build(child_) self.set_description(obj_) elif nodeName_ == 'abstract': obj_ = abstract.factory() obj_.build(child_) self.set_description(obj_) elif nodeName_ == 'metadata': obj_ = metadata.factory() obj_.build(child_) self.set_metadata(obj_) # end class CVolume class CTrack(GeneratedsSuper): """Name of the track file. The path to the file according to location attribute Set to "TrackVis" (default) to use the only supported TrackVis file format. The TrackVis file format allows to store any number of additional numerical data on the individual fibers.""" subclass = None superclass = None def __init__(self, src=None, dtype=None, name=None, fileformat='TrackVis', description=None, metadata=None): self.src = _cast(None, src) self.dtype = _cast(None, dtype) self.name = _cast(None, name) self.fileformat = _cast(None, fileformat) self.description = description self.metadata = metadata def factory(*args_, **kwargs_): if CTrack.subclass: return CTrack.subclass(*args_, **kwargs_) else: return CTrack(*args_, **kwargs_) factory = staticmethod(factory) def get_description(self): return self.description def set_description(self, description): self.description = description def get_metadata(self): return self.metadata def set_metadata(self, metadata): self.metadata = metadata def get_src(self): return self.src def set_src(self, src): self.src = src def get_dtype(self): return self.dtype def set_dtype(self, dtype): self.dtype = dtype def get_name(self): return self.name def set_name(self, name): self.name = name def get_fileformat(self): return self.fileformat def set_fileformat(self, fileformat): self.fileformat = fileformat def validate_trackFileFormat(self, value): # Validate type trackFileFormat, a restriction on xsd:string. pass def export(self, outfile, level, namespace_='cml:', name_='CTrack', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='CTrack') if self.hasContent_(): outfile.write('>\n') self.exportChildren(outfile, level + 1, namespace_, name_) showIndent(outfile, level) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='CTrack'): if self.src is not None and 'src' not in already_processed: already_processed.append('src') outfile.write(' src=%s' % (self.gds_format_string(quote_attrib(self.src).encode(ExternalEncoding), input_name='src'), )) if self.dtype is not None and 'dtype' not in already_processed: already_processed.append('dtype') outfile.write(' dtype=%s' % (self.gds_format_string(quote_attrib(self.dtype).encode(ExternalEncoding), input_name='dtype'), )) if self.name is not None and 'name' not in already_processed: already_processed.append('name') outfile.write(' name=%s' % (self.gds_format_string(quote_attrib(self.name).encode(ExternalEncoding), input_name='name'), )) if self.fileformat is not None and 'fileformat' not in already_processed: already_processed.append('fileformat') outfile.write(' fileformat=%s' % (quote_attrib(self.fileformat), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='CTrack'): if self.description is not None: showIndent(outfile, level) outfile.write('<%sdescription>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.description).encode(ExternalEncoding), input_name='description'), namespace_)) if self.metadata: self.metadata.export(outfile, level, namespace_, name_='metadata', ) def hasContent_(self): if ( self.description is not None or self.metadata is not None ): return True else: return False def exportLiteral(self, outfile, level, name_='CTrack'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.src is not None and 'src' not in already_processed: already_processed.append('src') showIndent(outfile, level) outfile.write('src = "%s",\n' % (self.src,)) if self.dtype is not None and 'dtype' not in already_processed: already_processed.append('dtype') showIndent(outfile, level) outfile.write('dtype = "%s",\n' % (self.dtype,)) if self.name is not None and 'name' not in already_processed: already_processed.append('name') showIndent(outfile, level) outfile.write('name = "%s",\n' % (self.name,)) if self.fileformat is not None and 'fileformat' not in already_processed: already_processed.append('fileformat') showIndent(outfile, level) outfile.write('fileformat = "%s",\n' % (self.fileformat,)) def exportLiteralChildren(self, outfile, level, name_): if self.description is not None: showIndent(outfile, level) outfile.write('description=%s,\n' % quote_python(self.description).encode(ExternalEncoding)) if self.metadata is not None: showIndent(outfile, level) outfile.write('metadata=model_.metadata(\n') self.metadata.exportLiteral(outfile, level) showIndent(outfile, level) outfile.write('),\n') def build(self, node): self.buildAttributes(node, node.attrib, []) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('src') if value is not None and 'src' not in already_processed: already_processed.append('src') self.src = value value = attrs.get('dtype') if value is not None and 'dtype' not in already_processed: already_processed.append('dtype') self.dtype = value value = attrs.get('name') if value is not None and 'name' not in already_processed: already_processed.append('name') self.name = value value = attrs.get('fileformat') if value is not None and 'fileformat' not in already_processed: already_processed.append('fileformat') self.fileformat = value self.validate_trackFileFormat(self.fileformat) # validate type trackFileFormat def buildChildren(self, child_, node, nodeName_, from_subclass=False): if nodeName_ == 'description': description_ = child_.text description_ = self.gds_validate_string(description_, node, 'description') self.description = description_ elif nodeName_ == 'tableOfContents': obj_ = tableOfContents.factory() obj_.build(child_) self.set_description(obj_) elif nodeName_ == 'abstract': obj_ = abstract.factory() obj_.build(child_) self.set_description(obj_) elif nodeName_ == 'metadata': obj_ = metadata.factory() obj_.build(child_) self.set_metadata(obj_) # end class CTrack class CTimeseries(GeneratedsSuper): """Name of the timeseries. The path to the file according to location attribute Set to "HDF5" (default) to use the only supported Hierarchical Data File format. The HDF5 allows to store any number of time series or other large homogeneous data.""" subclass = None superclass = None def __init__(self, src=None, dtype=None, name=None, fileformat='HDF5', description=None, metadata=None): self.src = _cast(None, src) self.dtype = _cast(None, dtype) self.name = _cast(None, name) self.fileformat = _cast(None, fileformat) self.description = description self.metadata = metadata def factory(*args_, **kwargs_): if CTimeseries.subclass: return CTimeseries.subclass(*args_, **kwargs_) else: return CTimeseries(*args_, **kwargs_) factory = staticmethod(factory) def get_description(self): return self.description def set_description(self, description): self.description = description def get_metadata(self): return self.metadata def set_metadata(self, metadata): self.metadata = metadata def get_src(self): return self.src def set_src(self, src): self.src = src def get_dtype(self): return self.dtype def set_dtype(self, dtype): self.dtype = dtype def get_name(self): return self.name def set_name(self, name): self.name = name def get_fileformat(self): return self.fileformat def set_fileformat(self, fileformat): self.fileformat = fileformat def validate_timeserieFileFormat(self, value): # Validate type timeserieFileFormat, a restriction on xsd:string. pass def export(self, outfile, level, namespace_='cml:', name_='CTimeseries', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='CTimeseries') if self.hasContent_(): outfile.write('>\n') self.exportChildren(outfile, level + 1, namespace_, name_) showIndent(outfile, level) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='CTimeseries'): if self.src is not None and 'src' not in already_processed: already_processed.append('src') outfile.write(' src=%s' % (self.gds_format_string(quote_attrib(self.src).encode(ExternalEncoding), input_name='src'), )) if self.dtype is not None and 'dtype' not in already_processed: already_processed.append('dtype') outfile.write(' dtype=%s' % (self.gds_format_string(quote_attrib(self.dtype).encode(ExternalEncoding), input_name='dtype'), )) if self.name is not None and 'name' not in already_processed: already_processed.append('name') outfile.write(' name=%s' % (self.gds_format_string(quote_attrib(self.name).encode(ExternalEncoding), input_name='name'), )) if self.fileformat is not None and 'fileformat' not in already_processed: already_processed.append('fileformat') outfile.write(' fileformat=%s' % (quote_attrib(self.fileformat), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='CTimeseries'): if self.description is not None: showIndent(outfile, level) outfile.write('<%sdescription>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.description).encode(ExternalEncoding), input_name='description'), namespace_)) if self.metadata: self.metadata.export(outfile, level, namespace_, name_='metadata', ) def hasContent_(self): if ( self.description is not None or self.metadata is not None ): return True else: return False def exportLiteral(self, outfile, level, name_='CTimeseries'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.src is not None and 'src' not in already_processed: already_processed.append('src') showIndent(outfile, level) outfile.write('src = "%s",\n' % (self.src,)) if self.dtype is not None and 'dtype' not in already_processed: already_processed.append('dtype') showIndent(outfile, level) outfile.write('dtype = "%s",\n' % (self.dtype,)) if self.name is not None and 'name' not in already_processed: already_processed.append('name') showIndent(outfile, level) outfile.write('name = "%s",\n' % (self.name,)) if self.fileformat is not None and 'fileformat' not in already_processed: already_processed.append('fileformat') showIndent(outfile, level) outfile.write('fileformat = "%s",\n' % (self.fileformat,)) def exportLiteralChildren(self, outfile, level, name_): if self.description is not None: showIndent(outfile, level) outfile.write('description=%s,\n' % quote_python(self.description).encode(ExternalEncoding)) if self.metadata is not None: showIndent(outfile, level) outfile.write('metadata=model_.metadata(\n') self.metadata.exportLiteral(outfile, level) showIndent(outfile, level) outfile.write('),\n') def build(self, node): self.buildAttributes(node, node.attrib, []) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('src') if value is not None and 'src' not in already_processed: already_processed.append('src') self.src = value value = attrs.get('dtype') if value is not None and 'dtype' not in already_processed: already_processed.append('dtype') self.dtype = value value = attrs.get('name') if value is not None and 'name' not in already_processed: already_processed.append('name') self.name = value value = attrs.get('fileformat') if value is not None and 'fileformat' not in already_processed: already_processed.append('fileformat') self.fileformat = value self.validate_timeserieFileFormat(self.fileformat) # validate type timeserieFileFormat def buildChildren(self, child_, node, nodeName_, from_subclass=False): if nodeName_ == 'description': description_ = child_.text description_ = self.gds_validate_string(description_, node, 'description') self.description = description_ elif nodeName_ == 'tableOfContents': obj_ = tableOfContents.factory() obj_.build(child_) self.set_description(obj_) elif nodeName_ == 'abstract': obj_ = abstract.factory() obj_.build(child_) self.set_description(obj_) elif nodeName_ == 'metadata': obj_ = metadata.factory() obj_.build(child_) self.set_metadata(obj_) # end class CTimeseries class CData(GeneratedsSuper): """Name of the data file The path to the file according to location attribute Use one of 'NumPy', 'HDF5', 'XML', 'Other'""" subclass = None superclass = None def __init__(self, src=None, dtype=None, name=None, fileformat=None, description=None, metadata=None): self.src = _cast(None, src) self.dtype = _cast(None, dtype) self.name = _cast(None, name) self.fileformat = _cast(None, fileformat) self.description = description self.metadata = metadata def factory(*args_, **kwargs_): if CData.subclass: return CData.subclass(*args_, **kwargs_) else: return CData(*args_, **kwargs_) factory = staticmethod(factory) def get_description(self): return self.description def set_description(self, description): self.description = description def get_metadata(self): return self.metadata def set_metadata(self, metadata): self.metadata = metadata def get_src(self): return self.src def set_src(self, src): self.src = src def get_dtype(self): return self.dtype def set_dtype(self, dtype): self.dtype = dtype def get_name(self): return self.name def set_name(self, name): self.name = name def get_fileformat(self): return self.fileformat def set_fileformat(self, fileformat): self.fileformat = fileformat def validate_dataFileFormat(self, value): # Validate type dataFileFormat, a restriction on xsd:string. pass def export(self, outfile, level, namespace_='cml:', name_='CData', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='CData') if self.hasContent_(): outfile.write('>\n') self.exportChildren(outfile, level + 1, namespace_, name_) showIndent(outfile, level) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='CData'): if self.src is not None and 'src' not in already_processed: already_processed.append('src') outfile.write(' src=%s' % (self.gds_format_string(quote_attrib(self.src).encode(ExternalEncoding), input_name='src'), )) if self.dtype is not None and 'dtype' not in already_processed: already_processed.append('dtype') outfile.write(' dtype=%s' % (self.gds_format_string(quote_attrib(self.dtype).encode(ExternalEncoding), input_name='dtype'), )) if self.name is not None and 'name' not in already_processed: already_processed.append('name') outfile.write(' name=%s' % (self.gds_format_string(quote_attrib(self.name).encode(ExternalEncoding), input_name='name'), )) if self.fileformat is not None and 'fileformat' not in already_processed: already_processed.append('fileformat') outfile.write(' fileformat=%s' % (quote_attrib(self.fileformat), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='CData'): if self.description is not None: showIndent(outfile, level) outfile.write('<%sdescription>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.description).encode(ExternalEncoding), input_name='description'), namespace_)) if self.metadata: self.metadata.export(outfile, level, namespace_, name_='metadata', ) def hasContent_(self): if ( self.description is not None or self.metadata is not None ): return True else: return False def exportLiteral(self, outfile, level, name_='CData'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.src is not None and 'src' not in already_processed: already_processed.append('src') showIndent(outfile, level) outfile.write('src = "%s",\n' % (self.src,)) if self.dtype is not None and 'dtype' not in already_processed: already_processed.append('dtype') showIndent(outfile, level) outfile.write('dtype = "%s",\n' % (self.dtype,)) if self.name is not None and 'name' not in already_processed: already_processed.append('name') showIndent(outfile, level) outfile.write('name = "%s",\n' % (self.name,)) if self.fileformat is not None and 'fileformat' not in already_processed: already_processed.append('fileformat') showIndent(outfile, level) outfile.write('fileformat = "%s",\n' % (self.fileformat,)) def exportLiteralChildren(self, outfile, level, name_): if self.description is not None: showIndent(outfile, level) outfile.write('description=%s,\n' % quote_python(self.description).encode(ExternalEncoding)) if self.metadata is not None: showIndent(outfile, level) outfile.write('metadata=model_.metadata(\n') self.metadata.exportLiteral(outfile, level) showIndent(outfile, level) outfile.write('),\n') def build(self, node): self.buildAttributes(node, node.attrib, []) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('src') if value is not None and 'src' not in already_processed: already_processed.append('src') self.src = value value = attrs.get('dtype') if value is not None and 'dtype' not in already_processed: already_processed.append('dtype') self.dtype = value value = attrs.get('name') if value is not None and 'name' not in already_processed: already_processed.append('name') self.name = value value = attrs.get('fileformat') if value is not None and 'fileformat' not in already_processed: already_processed.append('fileformat') self.fileformat = value self.validate_dataFileFormat(self.fileformat) # validate type dataFileFormat def buildChildren(self, child_, node, nodeName_, from_subclass=False): if nodeName_ == 'description': description_ = child_.text description_ = self.gds_validate_string(description_, node, 'description') self.description = description_ elif nodeName_ == 'tableOfContents': obj_ = tableOfContents.factory() obj_.build(child_) self.set_description(obj_) elif nodeName_ == 'abstract': obj_ = abstract.factory() obj_.build(child_) self.set_description(obj_) elif nodeName_ == 'metadata': obj_ = metadata.factory() obj_.build(child_) self.set_metadata(obj_) # end class CData class CScript(GeneratedsSuper): """Name of the script file The path to the file according to location attribute What kind of script. Use one of "Python" (default), "Bash", "Matlab", or "Other".""" subclass = None superclass = None def __init__(self, src=None, dtype='Python', name=None, fileformat='UTF-8', description=None, metadata=None): self.src = _cast(None, src) self.dtype = _cast(None, dtype) self.name = _cast(None, name) self.fileformat = _cast(None, fileformat) self.description = description self.metadata = metadata def factory(*args_, **kwargs_): if CScript.subclass: return CScript.subclass(*args_, **kwargs_) else: return CScript(*args_, **kwargs_) factory = staticmethod(factory) def get_description(self): return self.description def set_description(self, description): self.description = description def get_metadata(self): return self.metadata def set_metadata(self, metadata): self.metadata = metadata def get_src(self): return self.src def set_src(self, src): self.src = src def get_dtype(self): return self.dtype def set_dtype(self, dtype): self.dtype = dtype def validate_scriptEnumType(self, value): # Validate type scriptEnumType, a restriction on xsd:string. pass def get_name(self): return self.name def set_name(self, name): self.name = name def get_fileformat(self): return self.fileformat def set_fileformat(self, fileformat): self.fileformat = fileformat def validate_scriptFileFormat(self, value): # Validate type scriptFileFormat, a restriction on xsd:string. pass def export(self, outfile, level, namespace_='cml:', name_='CScript', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='CScript') if self.hasContent_(): outfile.write('>\n') self.exportChildren(outfile, level + 1, namespace_, name_) showIndent(outfile, level) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='CScript'): if self.src is not None and 'src' not in already_processed: already_processed.append('src') outfile.write(' src=%s' % (self.gds_format_string(quote_attrib(self.src).encode(ExternalEncoding), input_name='src'), )) if self.dtype is not None and 'dtype' not in already_processed: already_processed.append('dtype') outfile.write(' dtype=%s' % (quote_attrib(self.dtype), )) if self.name is not None and 'name' not in already_processed: already_processed.append('name') outfile.write(' name=%s' % (self.gds_format_string(quote_attrib(self.name).encode(ExternalEncoding), input_name='name'), )) if self.fileformat is not None and 'fileformat' not in already_processed: already_processed.append('fileformat') outfile.write(' fileformat=%s' % (quote_attrib(self.fileformat), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='CScript'): if self.description is not None: showIndent(outfile, level) outfile.write('<%sdescription>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.description).encode(ExternalEncoding), input_name='description'), namespace_)) if self.metadata: self.metadata.export(outfile, level, namespace_, name_='metadata', ) def hasContent_(self): if ( self.description is not None or self.metadata is not None ): return True else: return False def exportLiteral(self, outfile, level, name_='CScript'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.src is not None and 'src' not in already_processed: already_processed.append('src') showIndent(outfile, level) outfile.write('src = "%s",\n' % (self.src,)) if self.dtype is not None and 'dtype' not in already_processed: already_processed.append('dtype') showIndent(outfile, level) outfile.write('dtype = "%s",\n' % (self.dtype,)) if self.name is not None and 'name' not in already_processed: already_processed.append('name') showIndent(outfile, level) outfile.write('name = "%s",\n' % (self.name,)) if self.fileformat is not None and 'fileformat' not in already_processed: already_processed.append('fileformat') showIndent(outfile, level) outfile.write('fileformat = "%s",\n' % (self.fileformat,)) def exportLiteralChildren(self, outfile, level, name_): if self.description is not None: showIndent(outfile, level) outfile.write('description=%s,\n' % quote_python(self.description).encode(ExternalEncoding)) if self.metadata is not None: showIndent(outfile, level) outfile.write('metadata=model_.metadata(\n') self.metadata.exportLiteral(outfile, level) showIndent(outfile, level) outfile.write('),\n') def build(self, node): self.buildAttributes(node, node.attrib, []) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('src') if value is not None and 'src' not in already_processed: already_processed.append('src') self.src = value value = attrs.get('dtype') if value is not None and 'dtype' not in already_processed: already_processed.append('dtype') self.dtype = value self.validate_scriptEnumType(self.dtype) # validate type scriptEnumType value = attrs.get('name') if value is not None and 'name' not in already_processed: already_processed.append('name') self.name = value value = attrs.get('fileformat') if value is not None and 'fileformat' not in already_processed: already_processed.append('fileformat') self.fileformat = value self.validate_scriptFileFormat(self.fileformat) # validate type scriptFileFormat def buildChildren(self, child_, node, nodeName_, from_subclass=False): if nodeName_ == 'description': description_ = child_.text description_ = self.gds_validate_string(description_, node, 'description') self.description = description_ elif nodeName_ == 'tableOfContents': obj_ = tableOfContents.factory() obj_.build(child_) self.set_description(obj_) elif nodeName_ == 'abstract': obj_ = abstract.factory() obj_.build(child_) self.set_description(obj_) elif nodeName_ == 'metadata': obj_ = metadata.factory() obj_.build(child_) self.set_metadata(obj_) # end class CScript class CImagestack(GeneratedsSuper): """Name of the image stack The path to the enumerated files according to location attribute The file name pattern that may contain simple shell-style wildcards a la fnmatch. Use one of 'PNG', 'JPG', 'TIFF', 'Other'""" subclass = None superclass = None def __init__(self, src=None, fileformat=None, name=None, pattern=None, description=None, metadata=None): self.src = _cast(None, src) self.fileformat = _cast(None, fileformat) self.name = _cast(None, name) self.pattern = _cast(None, pattern) self.description = description self.metadata = metadata def factory(*args_, **kwargs_): if CImagestack.subclass: return CImagestack.subclass(*args_, **kwargs_) else: return CImagestack(*args_, **kwargs_) factory = staticmethod(factory) def get_description(self): return self.description def set_description(self, description): self.description = description def get_metadata(self): return self.metadata def set_metadata(self, metadata): self.metadata = metadata def get_src(self): return self.src def set_src(self, src): self.src = src def get_fileformat(self): return self.fileformat def set_fileformat(self, fileformat): self.fileformat = fileformat def validate_imagestackFileFormat(self, value): # Validate type imagestackFileFormat, a restriction on xsd:string. pass def get_name(self): return self.name def set_name(self, name): self.name = name def get_pattern(self): return self.pattern def set_pattern(self, pattern): self.pattern = pattern def export(self, outfile, level, namespace_='cml:', name_='CImagestack', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='CImagestack') if self.hasContent_(): outfile.write('>\n') self.exportChildren(outfile, level + 1, namespace_, name_) showIndent(outfile, level) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='CImagestack'): if self.src is not None and 'src' not in already_processed: already_processed.append('src') outfile.write(' src=%s' % (self.gds_format_string(quote_attrib(self.src).encode(ExternalEncoding), input_name='src'), )) if self.fileformat is not None and 'fileformat' not in already_processed: already_processed.append('fileformat') outfile.write(' fileformat=%s' % (quote_attrib(self.fileformat), )) if self.name is not None and 'name' not in already_processed: already_processed.append('name') outfile.write(' name=%s' % (self.gds_format_string(quote_attrib(self.name).encode(ExternalEncoding), input_name='name'), )) if self.pattern is not None and 'pattern' not in already_processed: already_processed.append('pattern') outfile.write(' pattern=%s' % (self.gds_format_string(quote_attrib(self.pattern).encode(ExternalEncoding), input_name='pattern'), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='CImagestack'): if self.description is not None: showIndent(outfile, level) outfile.write('<%sdescription>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.description).encode(ExternalEncoding), input_name='description'), namespace_)) if self.metadata: self.metadata.export(outfile, level, namespace_, name_='metadata', ) def hasContent_(self): if ( self.description is not None or self.metadata is not None ): return True else: return False def exportLiteral(self, outfile, level, name_='CImagestack'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.src is not None and 'src' not in already_processed: already_processed.append('src') showIndent(outfile, level) outfile.write('src = "%s",\n' % (self.src,)) if self.fileformat is not None and 'fileformat' not in already_processed: already_processed.append('fileformat') showIndent(outfile, level) outfile.write('fileformat = "%s",\n' % (self.fileformat,)) if self.name is not None and 'name' not in already_processed: already_processed.append('name') showIndent(outfile, level) outfile.write('name = "%s",\n' % (self.name,)) if self.pattern is not None and 'pattern' not in already_processed: already_processed.append('pattern') showIndent(outfile, level) outfile.write('pattern = "%s",\n' % (self.pattern,)) def exportLiteralChildren(self, outfile, level, name_): if self.description is not None: showIndent(outfile, level) outfile.write('description=%s,\n' % quote_python(self.description).encode(ExternalEncoding)) if self.metadata is not None: showIndent(outfile, level) outfile.write('metadata=model_.metadata(\n') self.metadata.exportLiteral(outfile, level) showIndent(outfile, level) outfile.write('),\n') def build(self, node): self.buildAttributes(node, node.attrib, []) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('src') if value is not None and 'src' not in already_processed: already_processed.append('src') self.src = value value = attrs.get('fileformat') if value is not None and 'fileformat' not in already_processed: already_processed.append('fileformat') self.fileformat = value self.validate_imagestackFileFormat(self.fileformat) # validate type imagestackFileFormat value = attrs.get('name') if value is not None and 'name' not in already_processed: already_processed.append('name') self.name = value value = attrs.get('pattern') if value is not None and 'pattern' not in already_processed: already_processed.append('pattern') self.pattern = value def buildChildren(self, child_, node, nodeName_, from_subclass=False): if nodeName_ == 'description': description_ = child_.text description_ = self.gds_validate_string(description_, node, 'description') self.description = description_ elif nodeName_ == 'tableOfContents': obj_ = tableOfContents.factory() obj_.build(child_) self.set_description(obj_) elif nodeName_ == 'abstract': obj_ = abstract.factory() obj_.build(child_) self.set_description(obj_) elif nodeName_ == 'metadata': obj_ = metadata.factory() obj_.build(child_) self.set_metadata(obj_) # end class CImagestack class title(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if title.subclass: return title.subclass(*args_, **kwargs_) else: return title(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='title', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='title') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='title'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='title'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='title'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class title class creator(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if creator.subclass: return creator.subclass(*args_, **kwargs_) else: return creator(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='creator', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='creator') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='creator'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='creator'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='creator'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class creator class subject(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if subject.subclass: return subject.subclass(*args_, **kwargs_) else: return subject(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='subject', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='subject') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='subject'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='subject'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='subject'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class subject class description(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if description.subclass: return description.subclass(*args_, **kwargs_) else: return description(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='description', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='description') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='description'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='description'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='description'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class description class publisher(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if publisher.subclass: return publisher.subclass(*args_, **kwargs_) else: return publisher(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='publisher', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='publisher') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='publisher'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='publisher'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='publisher'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class publisher class contributor(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if contributor.subclass: return contributor.subclass(*args_, **kwargs_) else: return contributor(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='contributor', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='contributor') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='contributor'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='contributor'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='contributor'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class contributor class date(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if date.subclass: return date.subclass(*args_, **kwargs_) else: return date(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='date', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='date') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='date'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='date'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='date'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class date class type_(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if type_.subclass: return type_.subclass(*args_, **kwargs_) else: return type_(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='type', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='type') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='type'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='type'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='type'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class type_ class format(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if format.subclass: return format.subclass(*args_, **kwargs_) else: return format(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='format', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='format') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='format'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='format'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='format'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class format class identifier(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if identifier.subclass: return identifier.subclass(*args_, **kwargs_) else: return identifier(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='identifier', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='identifier') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='identifier'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='identifier'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='identifier'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class identifier class source(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if source.subclass: return source.subclass(*args_, **kwargs_) else: return source(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='source', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='source') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='source'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='source'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='source'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class source class language(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if language.subclass: return language.subclass(*args_, **kwargs_) else: return language(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='language', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='language') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='language'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='language'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='language'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class language class relation(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if relation.subclass: return relation.subclass(*args_, **kwargs_) else: return relation(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='relation', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='relation') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='relation'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='relation'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='relation'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class relation class coverage(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if coverage.subclass: return coverage.subclass(*args_, **kwargs_) else: return coverage(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='coverage', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='coverage') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='coverage'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='coverage'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='coverage'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class coverage class rights(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if rights.subclass: return rights.subclass(*args_, **kwargs_) else: return rights(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='rights', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='rights') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='rights'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='rights'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='rights'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class rights class alternative(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if alternative.subclass: return alternative.subclass(*args_, **kwargs_) else: return alternative(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='alternative', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='alternative') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='alternative'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='alternative'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='alternative'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class alternative class tableOfContents(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if tableOfContents.subclass: return tableOfContents.subclass(*args_, **kwargs_) else: return tableOfContents(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='tableOfContents', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='tableOfContents') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='tableOfContents'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='tableOfContents'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='tableOfContents'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class tableOfContents class abstract(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if abstract.subclass: return abstract.subclass(*args_, **kwargs_) else: return abstract(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='abstract', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='abstract') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='abstract'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='abstract'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='abstract'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class abstract class created(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if created.subclass: return created.subclass(*args_, **kwargs_) else: return created(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='created', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='created') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='created'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='created'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='created'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class created class valid(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if valid.subclass: return valid.subclass(*args_, **kwargs_) else: return valid(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='valid', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='valid') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='valid'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='valid'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='valid'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class valid class available(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if available.subclass: return available.subclass(*args_, **kwargs_) else: return available(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='available', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='available') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='available'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='available'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='available'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class available class issued(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if issued.subclass: return issued.subclass(*args_, **kwargs_) else: return issued(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='issued', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='issued') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='issued'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='issued'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='issued'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class issued class modified(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if modified.subclass: return modified.subclass(*args_, **kwargs_) else: return modified(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='modified', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='modified') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='modified'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='modified'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='modified'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class modified class dateAccepted(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if dateAccepted.subclass: return dateAccepted.subclass(*args_, **kwargs_) else: return dateAccepted(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='dateAccepted', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='dateAccepted') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='dateAccepted'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='dateAccepted'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='dateAccepted'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class dateAccepted class dateCopyrighted(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if dateCopyrighted.subclass: return dateCopyrighted.subclass(*args_, **kwargs_) else: return dateCopyrighted(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='dateCopyrighted', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='dateCopyrighted') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='dateCopyrighted'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='dateCopyrighted'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='dateCopyrighted'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class dateCopyrighted class dateSubmitted(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if dateSubmitted.subclass: return dateSubmitted.subclass(*args_, **kwargs_) else: return dateSubmitted(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='dateSubmitted', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='dateSubmitted') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='dateSubmitted'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='dateSubmitted'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='dateSubmitted'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class dateSubmitted class extent(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if extent.subclass: return extent.subclass(*args_, **kwargs_) else: return extent(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='extent', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='extent') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='extent'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='extent'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='extent'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class extent class medium(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if medium.subclass: return medium.subclass(*args_, **kwargs_) else: return medium(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='medium', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='medium') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='medium'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='medium'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='medium'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class medium class isVersionOf(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if isVersionOf.subclass: return isVersionOf.subclass(*args_, **kwargs_) else: return isVersionOf(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='isVersionOf', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='isVersionOf') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='isVersionOf'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='isVersionOf'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='isVersionOf'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class isVersionOf class hasVersion(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if hasVersion.subclass: return hasVersion.subclass(*args_, **kwargs_) else: return hasVersion(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='hasVersion', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='hasVersion') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='hasVersion'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='hasVersion'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='hasVersion'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class hasVersion class isReplacedBy(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if isReplacedBy.subclass: return isReplacedBy.subclass(*args_, **kwargs_) else: return isReplacedBy(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='isReplacedBy', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='isReplacedBy') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='isReplacedBy'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='isReplacedBy'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='isReplacedBy'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class isReplacedBy class replaces(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if replaces.subclass: return replaces.subclass(*args_, **kwargs_) else: return replaces(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='replaces', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='replaces') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='replaces'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='replaces'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='replaces'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class replaces class isRequiredBy(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if isRequiredBy.subclass: return isRequiredBy.subclass(*args_, **kwargs_) else: return isRequiredBy(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='isRequiredBy', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='isRequiredBy') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='isRequiredBy'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='isRequiredBy'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='isRequiredBy'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class isRequiredBy class requires(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if requires.subclass: return requires.subclass(*args_, **kwargs_) else: return requires(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='requires', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='requires') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='requires'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='requires'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='requires'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class requires class isPartOf(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if isPartOf.subclass: return isPartOf.subclass(*args_, **kwargs_) else: return isPartOf(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='isPartOf', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='isPartOf') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='isPartOf'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='isPartOf'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='isPartOf'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class isPartOf class hasPart(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if hasPart.subclass: return hasPart.subclass(*args_, **kwargs_) else: return hasPart(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='hasPart', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='hasPart') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='hasPart'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='hasPart'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='hasPart'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class hasPart class isReferencedBy(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if isReferencedBy.subclass: return isReferencedBy.subclass(*args_, **kwargs_) else: return isReferencedBy(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='isReferencedBy', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='isReferencedBy') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='isReferencedBy'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='isReferencedBy'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='isReferencedBy'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class isReferencedBy class references(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if references.subclass: return references.subclass(*args_, **kwargs_) else: return references(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='references', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='references') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='references'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='references'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='references'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class references class isFormatOf(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if isFormatOf.subclass: return isFormatOf.subclass(*args_, **kwargs_) else: return isFormatOf(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='isFormatOf', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='isFormatOf') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='isFormatOf'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='isFormatOf'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='isFormatOf'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class isFormatOf class hasFormat(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if hasFormat.subclass: return hasFormat.subclass(*args_, **kwargs_) else: return hasFormat(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='hasFormat', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='hasFormat') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='hasFormat'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='hasFormat'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='hasFormat'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class hasFormat class conformsTo(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if conformsTo.subclass: return conformsTo.subclass(*args_, **kwargs_) else: return conformsTo(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='conformsTo', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='conformsTo') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='conformsTo'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='conformsTo'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='conformsTo'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class conformsTo class spatial(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if spatial.subclass: return spatial.subclass(*args_, **kwargs_) else: return spatial(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='spatial', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='spatial') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='spatial'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='spatial'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='spatial'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class spatial class temporal(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if temporal.subclass: return temporal.subclass(*args_, **kwargs_) else: return temporal(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='temporal', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='temporal') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='temporal'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='temporal'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='temporal'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class temporal class audience(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if audience.subclass: return audience.subclass(*args_, **kwargs_) else: return audience(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='audience', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='audience') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='audience'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='audience'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='audience'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class audience class accrualMethod(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if accrualMethod.subclass: return accrualMethod.subclass(*args_, **kwargs_) else: return accrualMethod(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='accrualMethod', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='accrualMethod') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='accrualMethod'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='accrualMethod'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='accrualMethod'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class accrualMethod class accrualPeriodicity(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if accrualPeriodicity.subclass: return accrualPeriodicity.subclass(*args_, **kwargs_) else: return accrualPeriodicity(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='accrualPeriodicity', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='accrualPeriodicity') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='accrualPeriodicity'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='accrualPeriodicity'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='accrualPeriodicity'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class accrualPeriodicity class accrualPolicy(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if accrualPolicy.subclass: return accrualPolicy.subclass(*args_, **kwargs_) else: return accrualPolicy(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='accrualPolicy', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='accrualPolicy') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='accrualPolicy'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='accrualPolicy'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='accrualPolicy'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class accrualPolicy class instructionalMethod(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if instructionalMethod.subclass: return instructionalMethod.subclass(*args_, **kwargs_) else: return instructionalMethod(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='instructionalMethod', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='instructionalMethod') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='instructionalMethod'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='instructionalMethod'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='instructionalMethod'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class instructionalMethod class provenance(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if provenance.subclass: return provenance.subclass(*args_, **kwargs_) else: return provenance(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='provenance', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='provenance') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='provenance'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='provenance'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='provenance'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class provenance class rightsHolder(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if rightsHolder.subclass: return rightsHolder.subclass(*args_, **kwargs_) else: return rightsHolder(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='rightsHolder', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='rightsHolder') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='rightsHolder'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='rightsHolder'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='rightsHolder'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class rightsHolder class mediator(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if mediator.subclass: return mediator.subclass(*args_, **kwargs_) else: return mediator(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='mediator', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='mediator') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='mediator'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='mediator'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='mediator'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class mediator class educationLevel(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if educationLevel.subclass: return educationLevel.subclass(*args_, **kwargs_) else: return educationLevel(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='educationLevel', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='educationLevel') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='educationLevel'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='educationLevel'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='educationLevel'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class educationLevel class accessRights(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if accessRights.subclass: return accessRights.subclass(*args_, **kwargs_) else: return accessRights(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='accessRights', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='accessRights') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='accessRights'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='accessRights'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='accessRights'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class accessRights class license(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if license.subclass: return license.subclass(*args_, **kwargs_) else: return license(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='license', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='license') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='license'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='license'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='license'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class license class bibliographicCitation(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if bibliographicCitation.subclass: return bibliographicCitation.subclass(*args_, **kwargs_) else: return bibliographicCitation(*args_, **kwargs_) factory = staticmethod(factory) def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='bibliographicCitation', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='bibliographicCitation') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='bibliographicCitation'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='bibliographicCitation'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='bibliographicCitation'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class bibliographicCitation class elementOrRefinementContainer(GeneratedsSuper): """This is included as a convenience for schema authors who need to define a root or container element for all of the DC elements and element refinements.""" subclass = None superclass = None def __init__(self, any=None): if any is None: self.any = [] else: self.any = any def factory(*args_, **kwargs_): if elementOrRefinementContainer.subclass: return elementOrRefinementContainer.subclass(*args_, **kwargs_) else: return elementOrRefinementContainer(*args_, **kwargs_) factory = staticmethod(factory) def get_any(self): return self.any def set_any(self, any): self.any = any def add_any(self, value): self.any.append(value) def insert_any(self, index, value): self.any[index] = value def export(self, outfile, level, namespace_='cml:', name_='elementOrRefinementContainer', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='elementOrRefinementContainer') if self.hasContent_(): outfile.write('>\n') self.exportChildren(outfile, level + 1, namespace_, name_) showIndent(outfile, level) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='elementOrRefinementContainer'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='elementOrRefinementContainer'): for any_ in self.get_any(): any_.export(outfile, level, namespace_, name_='any') def hasContent_(self): if ( self.any ): return True else: return False def exportLiteral(self, outfile, level, name_='elementOrRefinementContainer'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): showIndent(outfile, level) outfile.write('any=[\n') level += 1 for any_ in self.any: showIndent(outfile, level) outfile.write('model_.any(\n') any_.exportLiteral(outfile, level) showIndent(outfile, level) outfile.write('),\n') level -= 1 showIndent(outfile, level) outfile.write('],\n') def build(self, node): self.buildAttributes(node, node.attrib, []) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): if nodeName_ == 'any': type_name_ = child_.attrib.get('{http://www.w3.org/2001/XMLSchema-instance}type') if type_name_ is None: type_name_ = child_.attrib.get('type') if type_name_ is not None: type_names_ = type_name_.split(':') if len(type_names_) == 1: type_name_ = type_names_[0] else: type_name_ = type_names_[1] class_ = globals()[type_name_] obj_ = class_.factory() obj_.build(child_) else: raise NotImplementedError( 'Class not implemented for element') self.any.append(obj_) elif nodeName_ == 'title': obj_ = title.factory() obj_.build(child_) self.title.append(obj_) elif nodeName_ == 'creator': obj_ = creator.factory() obj_.build(child_) self.creator.append(obj_) elif nodeName_ == 'subject': obj_ = subject.factory() obj_.build(child_) self.subject.append(obj_) elif nodeName_ == 'description': obj_ = description.factory() obj_.build(child_) self.description.append(obj_) elif nodeName_ == 'publisher': obj_ = publisher.factory() obj_.build(child_) self.publisher.append(obj_) elif nodeName_ == 'contributor': obj_ = contributor.factory() obj_.build(child_) self.contributor.append(obj_) elif nodeName_ == 'date': obj_ = date.factory() obj_.build(child_) self.date.append(obj_) elif nodeName_ == 'type': obj_ = type_.factory() obj_.build(child_) self.type_.append(obj_) elif nodeName_ == 'format': obj_ = format.factory() obj_.build(child_) self.format.append(obj_) elif nodeName_ == 'identifier': obj_ = identifier.factory() obj_.build(child_) self.identifier.append(obj_) elif nodeName_ == 'source': obj_ = source.factory() obj_.build(child_) self.source.append(obj_) elif nodeName_ == 'language': obj_ = language.factory() obj_.build(child_) self.language.append(obj_) elif nodeName_ == 'relation': obj_ = relation.factory() obj_.build(child_) self.relation.append(obj_) elif nodeName_ == 'coverage': obj_ = coverage.factory() obj_.build(child_) self.coverage.append(obj_) elif nodeName_ == 'rights': obj_ = rights.factory() obj_.build(child_) self.rights.append(obj_) elif nodeName_ == 'alternative': obj_ = alternative.factory() obj_.build(child_) self.alternative.append(obj_) elif nodeName_ == 'tableOfContents': obj_ = tableOfContents.factory() obj_.build(child_) self.tableOfContents.append(obj_) elif nodeName_ == 'abstract': obj_ = abstract.factory() obj_.build(child_) self.abstract.append(obj_) elif nodeName_ == 'created': obj_ = created.factory() obj_.build(child_) self.created.append(obj_) elif nodeName_ == 'valid': obj_ = valid.factory() obj_.build(child_) self.valid.append(obj_) elif nodeName_ == 'available': obj_ = available.factory() obj_.build(child_) self.available.append(obj_) elif nodeName_ == 'issued': obj_ = issued.factory() obj_.build(child_) self.issued.append(obj_) elif nodeName_ == 'modified': obj_ = modified.factory() obj_.build(child_) self.modified.append(obj_) elif nodeName_ == 'dateAccepted': obj_ = dateAccepted.factory() obj_.build(child_) self.dateAccepted.append(obj_) elif nodeName_ == 'dateCopyrighted': obj_ = dateCopyrighted.factory() obj_.build(child_) self.dateCopyrighted.append(obj_) elif nodeName_ == 'dateSubmitted': obj_ = dateSubmitted.factory() obj_.build(child_) self.dateSubmitted.append(obj_) elif nodeName_ == 'extent': obj_ = extent.factory() obj_.build(child_) self.extent.append(obj_) elif nodeName_ == 'medium': obj_ = medium.factory() obj_.build(child_) self.medium.append(obj_) elif nodeName_ == 'bibliographicCitation': obj_ = bibliographicCitation.factory() obj_.build(child_) self.bibliographicCitation.append(obj_) elif nodeName_ == 'isVersionOf': obj_ = isVersionOf.factory() obj_.build(child_) self.isVersionOf.append(obj_) elif nodeName_ == 'hasVersion': obj_ = hasVersion.factory() obj_.build(child_) self.hasVersion.append(obj_) elif nodeName_ == 'isReplacedBy': obj_ = isReplacedBy.factory() obj_.build(child_) self.isReplacedBy.append(obj_) elif nodeName_ == 'replaces': obj_ = replaces.factory() obj_.build(child_) self.replaces.append(obj_) elif nodeName_ == 'isRequiredBy': obj_ = isRequiredBy.factory() obj_.build(child_) self.isRequiredBy.append(obj_) elif nodeName_ == 'requires': obj_ = requires.factory() obj_.build(child_) self.requires.append(obj_) elif nodeName_ == 'isPartOf': obj_ = isPartOf.factory() obj_.build(child_) self.isPartOf.append(obj_) elif nodeName_ == 'hasPart': obj_ = hasPart.factory() obj_.build(child_) self.hasPart.append(obj_) elif nodeName_ == 'isReferencedBy': obj_ = isReferencedBy.factory() obj_.build(child_) self.isReferencedBy.append(obj_) elif nodeName_ == 'references': obj_ = references.factory() obj_.build(child_) self.references.append(obj_) elif nodeName_ == 'isFormatOf': obj_ = isFormatOf.factory() obj_.build(child_) self.isFormatOf.append(obj_) elif nodeName_ == 'hasFormat': obj_ = hasFormat.factory() obj_.build(child_) self.hasFormat.append(obj_) elif nodeName_ == 'conformsTo': obj_ = conformsTo.factory() obj_.build(child_) self.conformsTo.append(obj_) elif nodeName_ == 'spatial': obj_ = spatial.factory() obj_.build(child_) self.spatial.append(obj_) elif nodeName_ == 'temporal': obj_ = temporal.factory() obj_.build(child_) self.temporal.append(obj_) elif nodeName_ == 'accessRights': obj_ = accessRights.factory() obj_.build(child_) self.accessRights.append(obj_) elif nodeName_ == 'license': obj_ = license.factory() obj_.build(child_) self.license.append(obj_) # end class elementOrRefinementContainer class SimpleLiteral(GeneratedsSuper): """This is the default type for all of the DC elements. It permits text content only with optional xml:lang attribute. Text is allowed because mixed="true", but sub-elements are disallowed because minOccurs="0" and maxOccurs="0" are on the xs:any tag. This complexType allows for restriction or extension permitting child elements.""" subclass = None superclass = None def __init__(self, lang=None, valueOf_=None): self.lang = _cast(None, lang) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if SimpleLiteral.subclass: return SimpleLiteral.subclass(*args_, **kwargs_) else: return SimpleLiteral(*args_, **kwargs_) factory = staticmethod(factory) def get_lang(self): return self.lang def set_lang(self, lang): self.lang = lang def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='SimpleLiteral', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='SimpleLiteral') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='SimpleLiteral'): if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') outfile.write(' lang=%s' % (self.gds_format_string(quote_attrib(self.lang).encode(ExternalEncoding), input_name='lang'), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='SimpleLiteral'): pass def hasContent_(self): if ( self.valueOf_ ): return True else: return False def exportLiteral(self, outfile, level, name_='SimpleLiteral'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') showIndent(outfile, level) outfile.write('lang = "%s",\n' % (self.lang,)) def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('lang') if value is not None and 'lang' not in already_processed: already_processed.append('lang') self.lang = value def buildChildren(self, child_, node, nodeName_, from_subclass=False): pass # end class SimpleLiteral class elementContainer(GeneratedsSuper): """This complexType is included as a convenience for schema authors who need to define a root or container element for all of the DC elements.""" subclass = None superclass = None def __init__(self, any=None): if any is None: self.any = [] else: self.any = any def factory(*args_, **kwargs_): if elementContainer.subclass: return elementContainer.subclass(*args_, **kwargs_) else: return elementContainer(*args_, **kwargs_) factory = staticmethod(factory) def get_any(self): return self.any def set_any(self, any): self.any = any def add_any(self, value): self.any.append(value) def insert_any(self, index, value): self.any[index] = value def export(self, outfile, level, namespace_='cml:', name_='elementContainer', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='elementContainer') if self.hasContent_(): outfile.write('>\n') self.exportChildren(outfile, level + 1, namespace_, name_) showIndent(outfile, level) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='elementContainer'): pass def exportChildren(self, outfile, level, namespace_='cml:', name_='elementContainer'): for any_ in self.get_any(): any_.export(outfile, level, namespace_, name_='any') def hasContent_(self): if ( self.any ): return True else: return False def exportLiteral(self, outfile, level, name_='elementContainer'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): pass def exportLiteralChildren(self, outfile, level, name_): showIndent(outfile, level) outfile.write('any=[\n') level += 1 for any_ in self.any: showIndent(outfile, level) outfile.write('model_.any(\n') any_.exportLiteral(outfile, level) showIndent(outfile, level) outfile.write('),\n') level -= 1 showIndent(outfile, level) outfile.write('],\n') def build(self, node): self.buildAttributes(node, node.attrib, []) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): pass def buildChildren(self, child_, node, nodeName_, from_subclass=False): if nodeName_ == 'any': type_name_ = child_.attrib.get('{http://www.w3.org/2001/XMLSchema-instance}type') if type_name_ is None: type_name_ = child_.attrib.get('type') if type_name_ is not None: type_names_ = type_name_.split(':') if len(type_names_) == 1: type_name_ = type_names_[0] else: type_name_ = type_names_[1] class_ = globals()[type_name_] obj_ = class_.factory() obj_.build(child_) else: raise NotImplementedError( 'Class not implemented for element') self.any.append(obj_) elif nodeName_ == 'title': obj_ = title.factory() obj_.build(child_) self.title.append(obj_) elif nodeName_ == 'creator': obj_ = creator.factory() obj_.build(child_) self.creator.append(obj_) elif nodeName_ == 'subject': obj_ = subject.factory() obj_.build(child_) self.subject.append(obj_) elif nodeName_ == 'description': obj_ = description.factory() obj_.build(child_) self.description.append(obj_) elif nodeName_ == 'publisher': obj_ = publisher.factory() obj_.build(child_) self.publisher.append(obj_) elif nodeName_ == 'contributor': obj_ = contributor.factory() obj_.build(child_) self.contributor.append(obj_) elif nodeName_ == 'date': obj_ = date.factory() obj_.build(child_) self.date.append(obj_) elif nodeName_ == 'type': obj_ = type_.factory() obj_.build(child_) self.type_.append(obj_) elif nodeName_ == 'format': obj_ = format.factory() obj_.build(child_) self.format.append(obj_) elif nodeName_ == 'identifier': obj_ = identifier.factory() obj_.build(child_) self.identifier.append(obj_) elif nodeName_ == 'source': obj_ = source.factory() obj_.build(child_) self.source.append(obj_) elif nodeName_ == 'language': obj_ = language.factory() obj_.build(child_) self.language.append(obj_) elif nodeName_ == 'relation': obj_ = relation.factory() obj_.build(child_) self.relation.append(obj_) elif nodeName_ == 'coverage': obj_ = coverage.factory() obj_.build(child_) self.coverage.append(obj_) elif nodeName_ == 'rights': obj_ = rights.factory() obj_.build(child_) self.rights.append(obj_) elif nodeName_ == 'alternative': obj_ = alternative.factory() obj_.build(child_) self.alternative.append(obj_) elif nodeName_ == 'tableOfContents': obj_ = tableOfContents.factory() obj_.build(child_) self.tableOfContents.append(obj_) elif nodeName_ == 'abstract': obj_ = abstract.factory() obj_.build(child_) self.abstract.append(obj_) elif nodeName_ == 'created': obj_ = created.factory() obj_.build(child_) self.created.append(obj_) elif nodeName_ == 'valid': obj_ = valid.factory() obj_.build(child_) self.valid.append(obj_) elif nodeName_ == 'available': obj_ = available.factory() obj_.build(child_) self.available.append(obj_) elif nodeName_ == 'issued': obj_ = issued.factory() obj_.build(child_) self.issued.append(obj_) elif nodeName_ == 'modified': obj_ = modified.factory() obj_.build(child_) self.modified.append(obj_) elif nodeName_ == 'dateAccepted': obj_ = dateAccepted.factory() obj_.build(child_) self.dateAccepted.append(obj_) elif nodeName_ == 'dateCopyrighted': obj_ = dateCopyrighted.factory() obj_.build(child_) self.dateCopyrighted.append(obj_) elif nodeName_ == 'dateSubmitted': obj_ = dateSubmitted.factory() obj_.build(child_) self.dateSubmitted.append(obj_) elif nodeName_ == 'extent': obj_ = extent.factory() obj_.build(child_) self.extent.append(obj_) elif nodeName_ == 'medium': obj_ = medium.factory() obj_.build(child_) self.medium.append(obj_) elif nodeName_ == 'bibliographicCitation': obj_ = bibliographicCitation.factory() obj_.build(child_) self.bibliographicCitation.append(obj_) elif nodeName_ == 'isVersionOf': obj_ = isVersionOf.factory() obj_.build(child_) self.isVersionOf.append(obj_) elif nodeName_ == 'hasVersion': obj_ = hasVersion.factory() obj_.build(child_) self.hasVersion.append(obj_) elif nodeName_ == 'isReplacedBy': obj_ = isReplacedBy.factory() obj_.build(child_) self.isReplacedBy.append(obj_) elif nodeName_ == 'replaces': obj_ = replaces.factory() obj_.build(child_) self.replaces.append(obj_) elif nodeName_ == 'isRequiredBy': obj_ = isRequiredBy.factory() obj_.build(child_) self.isRequiredBy.append(obj_) elif nodeName_ == 'requires': obj_ = requires.factory() obj_.build(child_) self.requires.append(obj_) elif nodeName_ == 'isPartOf': obj_ = isPartOf.factory() obj_.build(child_) self.isPartOf.append(obj_) elif nodeName_ == 'hasPart': obj_ = hasPart.factory() obj_.build(child_) self.hasPart.append(obj_) elif nodeName_ == 'isReferencedBy': obj_ = isReferencedBy.factory() obj_.build(child_) self.isReferencedBy.append(obj_) elif nodeName_ == 'references': obj_ = references.factory() obj_.build(child_) self.references.append(obj_) elif nodeName_ == 'isFormatOf': obj_ = isFormatOf.factory() obj_.build(child_) self.isFormatOf.append(obj_) elif nodeName_ == 'hasFormat': obj_ = hasFormat.factory() obj_.build(child_) self.hasFormat.append(obj_) elif nodeName_ == 'conformsTo': obj_ = conformsTo.factory() obj_.build(child_) self.conformsTo.append(obj_) elif nodeName_ == 'spatial': obj_ = spatial.factory() obj_.build(child_) self.spatial.append(obj_) elif nodeName_ == 'temporal': obj_ = temporal.factory() obj_.build(child_) self.temporal.append(obj_) elif nodeName_ == 'accessRights': obj_ = accessRights.factory() obj_.build(child_) self.accessRights.append(obj_) elif nodeName_ == 'license': obj_ = license.factory() obj_.build(child_) self.license.append(obj_) # end class elementContainer class TGN(SimpleLiteral): subclass = None superclass = SimpleLiteral def __init__(self, lang=None, valueOf_=None): super(TGN, self).__init__(lang, valueOf_, ) self.lang = _cast(None, lang) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if TGN.subclass: return TGN.subclass(*args_, **kwargs_) else: return TGN(*args_, **kwargs_) factory = staticmethod(factory) def get_lang(self): return self.lang def set_lang(self, lang): self.lang = lang def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='TGN', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='TGN') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="TGN"') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='TGN'): super(TGN, self).exportAttributes(outfile, level, already_processed, namespace_, name_='TGN') if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') outfile.write(' lang=%s' % (self.gds_format_string(quote_attrib(self.lang).encode(ExternalEncoding), input_name='lang'), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='TGN'): super(TGN, self).exportChildren(outfile, level, namespace_, name_) pass def hasContent_(self): if ( self.valueOf_ or super(TGN, self).hasContent_() ): return True else: return False def exportLiteral(self, outfile, level, name_='TGN'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') showIndent(outfile, level) outfile.write('lang = "%s",\n' % (self.lang,)) super(TGN, self).exportLiteralAttributes(outfile, level, already_processed, name_) def exportLiteralChildren(self, outfile, level, name_): super(TGN, self).exportLiteralChildren(outfile, level, name_) pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('lang') if value is not None and 'lang' not in already_processed: already_processed.append('lang') self.lang = value super(TGN, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, from_subclass=False): super(TGN, self).buildChildren(child_, node, nodeName_, True) pass # end class TGN class Box(SimpleLiteral): subclass = None superclass = SimpleLiteral def __init__(self, lang=None, valueOf_=None): super(Box, self).__init__(lang, valueOf_, ) self.lang = _cast(None, lang) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if Box.subclass: return Box.subclass(*args_, **kwargs_) else: return Box(*args_, **kwargs_) factory = staticmethod(factory) def get_lang(self): return self.lang def set_lang(self, lang): self.lang = lang def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='Box', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='Box') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="Box"') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='Box'): super(Box, self).exportAttributes(outfile, level, already_processed, namespace_, name_='Box') if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') outfile.write(' lang=%s' % (self.gds_format_string(quote_attrib(self.lang).encode(ExternalEncoding), input_name='lang'), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='Box'): super(Box, self).exportChildren(outfile, level, namespace_, name_) pass def hasContent_(self): if ( self.valueOf_ or super(Box, self).hasContent_() ): return True else: return False def exportLiteral(self, outfile, level, name_='Box'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') showIndent(outfile, level) outfile.write('lang = "%s",\n' % (self.lang,)) super(Box, self).exportLiteralAttributes(outfile, level, already_processed, name_) def exportLiteralChildren(self, outfile, level, name_): super(Box, self).exportLiteralChildren(outfile, level, name_) pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('lang') if value is not None and 'lang' not in already_processed: already_processed.append('lang') self.lang = value super(Box, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, from_subclass=False): super(Box, self).buildChildren(child_, node, nodeName_, True) pass # end class Box class ISO3166(SimpleLiteral): subclass = None superclass = SimpleLiteral def __init__(self, lang=None, valueOf_=None): super(ISO3166, self).__init__(lang, valueOf_, ) self.lang = _cast(None, lang) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if ISO3166.subclass: return ISO3166.subclass(*args_, **kwargs_) else: return ISO3166(*args_, **kwargs_) factory = staticmethod(factory) def get_lang(self): return self.lang def set_lang(self, lang): self.lang = lang def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='ISO3166', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='ISO3166') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="ISO3166"') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='ISO3166'): super(ISO3166, self).exportAttributes(outfile, level, already_processed, namespace_, name_='ISO3166') if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') outfile.write(' lang=%s' % (self.gds_format_string(quote_attrib(self.lang).encode(ExternalEncoding), input_name='lang'), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='ISO3166'): super(ISO3166, self).exportChildren(outfile, level, namespace_, name_) pass def hasContent_(self): if ( self.valueOf_ or super(ISO3166, self).hasContent_() ): return True else: return False def exportLiteral(self, outfile, level, name_='ISO3166'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') showIndent(outfile, level) outfile.write('lang = "%s",\n' % (self.lang,)) super(ISO3166, self).exportLiteralAttributes(outfile, level, already_processed, name_) def exportLiteralChildren(self, outfile, level, name_): super(ISO3166, self).exportLiteralChildren(outfile, level, name_) pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('lang') if value is not None and 'lang' not in already_processed: already_processed.append('lang') self.lang = value super(ISO3166, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, from_subclass=False): super(ISO3166, self).buildChildren(child_, node, nodeName_, True) pass # end class ISO3166 class Point(SimpleLiteral): subclass = None superclass = SimpleLiteral def __init__(self, lang=None, valueOf_=None): super(Point, self).__init__(lang, valueOf_, ) self.lang = _cast(None, lang) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if Point.subclass: return Point.subclass(*args_, **kwargs_) else: return Point(*args_, **kwargs_) factory = staticmethod(factory) def get_lang(self): return self.lang def set_lang(self, lang): self.lang = lang def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='Point', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='Point') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="Point"') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='Point'): super(Point, self).exportAttributes(outfile, level, already_processed, namespace_, name_='Point') if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') outfile.write(' lang=%s' % (self.gds_format_string(quote_attrib(self.lang).encode(ExternalEncoding), input_name='lang'), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='Point'): super(Point, self).exportChildren(outfile, level, namespace_, name_) pass def hasContent_(self): if ( self.valueOf_ or super(Point, self).hasContent_() ): return True else: return False def exportLiteral(self, outfile, level, name_='Point'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') showIndent(outfile, level) outfile.write('lang = "%s",\n' % (self.lang,)) super(Point, self).exportLiteralAttributes(outfile, level, already_processed, name_) def exportLiteralChildren(self, outfile, level, name_): super(Point, self).exportLiteralChildren(outfile, level, name_) pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('lang') if value is not None and 'lang' not in already_processed: already_processed.append('lang') self.lang = value super(Point, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, from_subclass=False): super(Point, self).buildChildren(child_, node, nodeName_, True) pass # end class Point class RFC4646(SimpleLiteral): subclass = None superclass = SimpleLiteral def __init__(self, lang=None, valueOf_=None): super(RFC4646, self).__init__(lang, valueOf_, ) self.lang = _cast(None, lang) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if RFC4646.subclass: return RFC4646.subclass(*args_, **kwargs_) else: return RFC4646(*args_, **kwargs_) factory = staticmethod(factory) def get_lang(self): return self.lang def set_lang(self, lang): self.lang = lang def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='RFC4646', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='RFC4646') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="RFC4646"') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='RFC4646'): super(RFC4646, self).exportAttributes(outfile, level, already_processed, namespace_, name_='RFC4646') if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') outfile.write(' lang=%s' % (self.gds_format_string(quote_attrib(self.lang).encode(ExternalEncoding), input_name='lang'), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='RFC4646'): super(RFC4646, self).exportChildren(outfile, level, namespace_, name_) pass def hasContent_(self): if ( self.valueOf_ or super(RFC4646, self).hasContent_() ): return True else: return False def exportLiteral(self, outfile, level, name_='RFC4646'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') showIndent(outfile, level) outfile.write('lang = "%s",\n' % (self.lang,)) super(RFC4646, self).exportLiteralAttributes(outfile, level, already_processed, name_) def exportLiteralChildren(self, outfile, level, name_): super(RFC4646, self).exportLiteralChildren(outfile, level, name_) pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('lang') if value is not None and 'lang' not in already_processed: already_processed.append('lang') self.lang = value super(RFC4646, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, from_subclass=False): super(RFC4646, self).buildChildren(child_, node, nodeName_, True) pass # end class RFC4646 class RFC3066(SimpleLiteral): subclass = None superclass = SimpleLiteral def __init__(self, lang=None, valueOf_=None): super(RFC3066, self).__init__(lang, valueOf_, ) self.lang = _cast(None, lang) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if RFC3066.subclass: return RFC3066.subclass(*args_, **kwargs_) else: return RFC3066(*args_, **kwargs_) factory = staticmethod(factory) def get_lang(self): return self.lang def set_lang(self, lang): self.lang = lang def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='RFC3066', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='RFC3066') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="RFC3066"') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='RFC3066'): super(RFC3066, self).exportAttributes(outfile, level, already_processed, namespace_, name_='RFC3066') if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') outfile.write(' lang=%s' % (self.gds_format_string(quote_attrib(self.lang).encode(ExternalEncoding), input_name='lang'), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='RFC3066'): super(RFC3066, self).exportChildren(outfile, level, namespace_, name_) pass def hasContent_(self): if ( self.valueOf_ or super(RFC3066, self).hasContent_() ): return True else: return False def exportLiteral(self, outfile, level, name_='RFC3066'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') showIndent(outfile, level) outfile.write('lang = "%s",\n' % (self.lang,)) super(RFC3066, self).exportLiteralAttributes(outfile, level, already_processed, name_) def exportLiteralChildren(self, outfile, level, name_): super(RFC3066, self).exportLiteralChildren(outfile, level, name_) pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('lang') if value is not None and 'lang' not in already_processed: already_processed.append('lang') self.lang = value super(RFC3066, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, from_subclass=False): super(RFC3066, self).buildChildren(child_, node, nodeName_, True) pass # end class RFC3066 class RFC1766(SimpleLiteral): subclass = None superclass = SimpleLiteral def __init__(self, lang=None, valueOf_=None): super(RFC1766, self).__init__(lang, valueOf_, ) self.lang = _cast(None, lang) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if RFC1766.subclass: return RFC1766.subclass(*args_, **kwargs_) else: return RFC1766(*args_, **kwargs_) factory = staticmethod(factory) def get_lang(self): return self.lang def set_lang(self, lang): self.lang = lang def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='RFC1766', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='RFC1766') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="RFC1766"') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='RFC1766'): super(RFC1766, self).exportAttributes(outfile, level, already_processed, namespace_, name_='RFC1766') if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') outfile.write(' lang=%s' % (self.gds_format_string(quote_attrib(self.lang).encode(ExternalEncoding), input_name='lang'), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='RFC1766'): super(RFC1766, self).exportChildren(outfile, level, namespace_, name_) pass def hasContent_(self): if ( self.valueOf_ or super(RFC1766, self).hasContent_() ): return True else: return False def exportLiteral(self, outfile, level, name_='RFC1766'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') showIndent(outfile, level) outfile.write('lang = "%s",\n' % (self.lang,)) super(RFC1766, self).exportLiteralAttributes(outfile, level, already_processed, name_) def exportLiteralChildren(self, outfile, level, name_): super(RFC1766, self).exportLiteralChildren(outfile, level, name_) pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('lang') if value is not None and 'lang' not in already_processed: already_processed.append('lang') self.lang = value super(RFC1766, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, from_subclass=False): super(RFC1766, self).buildChildren(child_, node, nodeName_, True) pass # end class RFC1766 class ISO639_3(SimpleLiteral): subclass = None superclass = SimpleLiteral def __init__(self, lang=None, valueOf_=None): super(ISO639_3, self).__init__(lang, valueOf_, ) self.lang = _cast(None, lang) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if ISO639_3.subclass: return ISO639_3.subclass(*args_, **kwargs_) else: return ISO639_3(*args_, **kwargs_) factory = staticmethod(factory) def get_lang(self): return self.lang def set_lang(self, lang): self.lang = lang def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='ISO639-3', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='ISO639-3') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="ISO639-3"') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='ISO639-3'): super(ISO639_3, self).exportAttributes(outfile, level, already_processed, namespace_, name_='ISO639-3') if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') outfile.write(' lang=%s' % (self.gds_format_string(quote_attrib(self.lang).encode(ExternalEncoding), input_name='lang'), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='ISO639-3'): super(ISO639_3, self).exportChildren(outfile, level, namespace_, name_) pass def hasContent_(self): if ( self.valueOf_ or super(ISO639_3, self).hasContent_() ): return True else: return False def exportLiteral(self, outfile, level, name_='ISO639-3'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') showIndent(outfile, level) outfile.write('lang = "%s",\n' % (self.lang,)) super(ISO639_3, self).exportLiteralAttributes(outfile, level, already_processed, name_) def exportLiteralChildren(self, outfile, level, name_): super(ISO639_3, self).exportLiteralChildren(outfile, level, name_) pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('lang') if value is not None and 'lang' not in already_processed: already_processed.append('lang') self.lang = value super(ISO639_3, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, from_subclass=False): super(ISO639_3, self).buildChildren(child_, node, nodeName_, True) pass # end class ISO639_3 class ISO639_2(SimpleLiteral): subclass = None superclass = SimpleLiteral def __init__(self, lang=None, valueOf_=None): super(ISO639_2, self).__init__(lang, valueOf_, ) self.lang = _cast(None, lang) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if ISO639_2.subclass: return ISO639_2.subclass(*args_, **kwargs_) else: return ISO639_2(*args_, **kwargs_) factory = staticmethod(factory) def get_lang(self): return self.lang def set_lang(self, lang): self.lang = lang def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='ISO639-2', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='ISO639-2') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="ISO639-2"') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='ISO639-2'): super(ISO639_2, self).exportAttributes(outfile, level, already_processed, namespace_, name_='ISO639-2') if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') outfile.write(' lang=%s' % (self.gds_format_string(quote_attrib(self.lang).encode(ExternalEncoding), input_name='lang'), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='ISO639-2'): super(ISO639_2, self).exportChildren(outfile, level, namespace_, name_) pass def hasContent_(self): if ( self.valueOf_ or super(ISO639_2, self).hasContent_() ): return True else: return False def exportLiteral(self, outfile, level, name_='ISO639-2'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') showIndent(outfile, level) outfile.write('lang = "%s",\n' % (self.lang,)) super(ISO639_2, self).exportLiteralAttributes(outfile, level, already_processed, name_) def exportLiteralChildren(self, outfile, level, name_): super(ISO639_2, self).exportLiteralChildren(outfile, level, name_) pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('lang') if value is not None and 'lang' not in already_processed: already_processed.append('lang') self.lang = value super(ISO639_2, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, from_subclass=False): super(ISO639_2, self).buildChildren(child_, node, nodeName_, True) pass # end class ISO639_2 class URI(SimpleLiteral): subclass = None superclass = SimpleLiteral def __init__(self, lang=None, valueOf_=None): super(URI, self).__init__(lang, valueOf_, ) self.lang = _cast(None, lang) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if URI.subclass: return URI.subclass(*args_, **kwargs_) else: return URI(*args_, **kwargs_) factory = staticmethod(factory) def get_lang(self): return self.lang def set_lang(self, lang): self.lang = lang def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='URI', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='URI') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="URI"') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='URI'): super(URI, self).exportAttributes(outfile, level, already_processed, namespace_, name_='URI') if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') outfile.write(' lang=%s' % (self.gds_format_string(quote_attrib(self.lang).encode(ExternalEncoding), input_name='lang'), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='URI'): super(URI, self).exportChildren(outfile, level, namespace_, name_) pass def hasContent_(self): if ( self.valueOf_ or super(URI, self).hasContent_() ): return True else: return False def exportLiteral(self, outfile, level, name_='URI'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') showIndent(outfile, level) outfile.write('lang = "%s",\n' % (self.lang,)) super(URI, self).exportLiteralAttributes(outfile, level, already_processed, name_) def exportLiteralChildren(self, outfile, level, name_): super(URI, self).exportLiteralChildren(outfile, level, name_) pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('lang') if value is not None and 'lang' not in already_processed: already_processed.append('lang') self.lang = value super(URI, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, from_subclass=False): super(URI, self).buildChildren(child_, node, nodeName_, True) pass # end class URI class IMT(SimpleLiteral): subclass = None superclass = SimpleLiteral def __init__(self, lang=None, valueOf_=None): super(IMT, self).__init__(lang, valueOf_, ) self.lang = _cast(None, lang) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if IMT.subclass: return IMT.subclass(*args_, **kwargs_) else: return IMT(*args_, **kwargs_) factory = staticmethod(factory) def get_lang(self): return self.lang def set_lang(self, lang): self.lang = lang def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='IMT', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='IMT') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="IMT"') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='IMT'): super(IMT, self).exportAttributes(outfile, level, already_processed, namespace_, name_='IMT') if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') outfile.write(' lang=%s' % (self.gds_format_string(quote_attrib(self.lang).encode(ExternalEncoding), input_name='lang'), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='IMT'): super(IMT, self).exportChildren(outfile, level, namespace_, name_) pass def hasContent_(self): if ( self.valueOf_ or super(IMT, self).hasContent_() ): return True else: return False def exportLiteral(self, outfile, level, name_='IMT'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') showIndent(outfile, level) outfile.write('lang = "%s",\n' % (self.lang,)) super(IMT, self).exportLiteralAttributes(outfile, level, already_processed, name_) def exportLiteralChildren(self, outfile, level, name_): super(IMT, self).exportLiteralChildren(outfile, level, name_) pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('lang') if value is not None and 'lang' not in already_processed: already_processed.append('lang') self.lang = value super(IMT, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, from_subclass=False): super(IMT, self).buildChildren(child_, node, nodeName_, True) pass # end class IMT class DCMIType(SimpleLiteral): subclass = None superclass = SimpleLiteral def __init__(self, lang=None, valueOf_=None): super(DCMIType, self).__init__(lang, valueOf_, ) self.lang = _cast(None, lang) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if DCMIType.subclass: return DCMIType.subclass(*args_, **kwargs_) else: return DCMIType(*args_, **kwargs_) factory = staticmethod(factory) def get_lang(self): return self.lang def set_lang(self, lang): self.lang = lang def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='DCMIType', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='DCMIType') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="DCMIType"') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='DCMIType'): super(DCMIType, self).exportAttributes(outfile, level, already_processed, namespace_, name_='DCMIType') if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') outfile.write(' lang=%s' % (self.gds_format_string(quote_attrib(self.lang).encode(ExternalEncoding), input_name='lang'), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='DCMIType'): super(DCMIType, self).exportChildren(outfile, level, namespace_, name_) pass def hasContent_(self): if ( self.valueOf_ or super(DCMIType, self).hasContent_() ): return True else: return False def exportLiteral(self, outfile, level, name_='DCMIType'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') showIndent(outfile, level) outfile.write('lang = "%s",\n' % (self.lang,)) super(DCMIType, self).exportLiteralAttributes(outfile, level, already_processed, name_) def exportLiteralChildren(self, outfile, level, name_): super(DCMIType, self).exportLiteralChildren(outfile, level, name_) pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('lang') if value is not None and 'lang' not in already_processed: already_processed.append('lang') self.lang = value super(DCMIType, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, from_subclass=False): super(DCMIType, self).buildChildren(child_, node, nodeName_, True) pass # end class DCMIType class W3CDTF(SimpleLiteral): subclass = None superclass = SimpleLiteral def __init__(self, lang=None, valueOf_=None): super(W3CDTF, self).__init__(lang, valueOf_, ) self.lang = _cast(None, lang) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if W3CDTF.subclass: return W3CDTF.subclass(*args_, **kwargs_) else: return W3CDTF(*args_, **kwargs_) factory = staticmethod(factory) def get_lang(self): return self.lang def set_lang(self, lang): self.lang = lang def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='W3CDTF', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='W3CDTF') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="W3CDTF"') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='W3CDTF'): super(W3CDTF, self).exportAttributes(outfile, level, already_processed, namespace_, name_='W3CDTF') if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') outfile.write(' lang=%s' % (self.gds_format_string(quote_attrib(self.lang).encode(ExternalEncoding), input_name='lang'), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='W3CDTF'): super(W3CDTF, self).exportChildren(outfile, level, namespace_, name_) pass def hasContent_(self): if ( self.valueOf_ or super(W3CDTF, self).hasContent_() ): return True else: return False def exportLiteral(self, outfile, level, name_='W3CDTF'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') showIndent(outfile, level) outfile.write('lang = "%s",\n' % (self.lang,)) super(W3CDTF, self).exportLiteralAttributes(outfile, level, already_processed, name_) def exportLiteralChildren(self, outfile, level, name_): super(W3CDTF, self).exportLiteralChildren(outfile, level, name_) pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('lang') if value is not None and 'lang' not in already_processed: already_processed.append('lang') self.lang = value super(W3CDTF, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, from_subclass=False): super(W3CDTF, self).buildChildren(child_, node, nodeName_, True) pass # end class W3CDTF class Period(SimpleLiteral): subclass = None superclass = SimpleLiteral def __init__(self, lang=None, valueOf_=None): super(Period, self).__init__(lang, valueOf_, ) self.lang = _cast(None, lang) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if Period.subclass: return Period.subclass(*args_, **kwargs_) else: return Period(*args_, **kwargs_) factory = staticmethod(factory) def get_lang(self): return self.lang def set_lang(self, lang): self.lang = lang def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='Period', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='Period') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="Period"') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='Period'): super(Period, self).exportAttributes(outfile, level, already_processed, namespace_, name_='Period') if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') outfile.write(' lang=%s' % (self.gds_format_string(quote_attrib(self.lang).encode(ExternalEncoding), input_name='lang'), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='Period'): super(Period, self).exportChildren(outfile, level, namespace_, name_) pass def hasContent_(self): if ( self.valueOf_ or super(Period, self).hasContent_() ): return True else: return False def exportLiteral(self, outfile, level, name_='Period'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') showIndent(outfile, level) outfile.write('lang = "%s",\n' % (self.lang,)) super(Period, self).exportLiteralAttributes(outfile, level, already_processed, name_) def exportLiteralChildren(self, outfile, level, name_): super(Period, self).exportLiteralChildren(outfile, level, name_) pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('lang') if value is not None and 'lang' not in already_processed: already_processed.append('lang') self.lang = value super(Period, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, from_subclass=False): super(Period, self).buildChildren(child_, node, nodeName_, True) pass # end class Period class UDC(SimpleLiteral): subclass = None superclass = SimpleLiteral def __init__(self, lang=None, valueOf_=None): super(UDC, self).__init__(lang, valueOf_, ) self.lang = _cast(None, lang) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if UDC.subclass: return UDC.subclass(*args_, **kwargs_) else: return UDC(*args_, **kwargs_) factory = staticmethod(factory) def get_lang(self): return self.lang def set_lang(self, lang): self.lang = lang def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='UDC', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='UDC') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="UDC"') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='UDC'): super(UDC, self).exportAttributes(outfile, level, already_processed, namespace_, name_='UDC') if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') outfile.write(' lang=%s' % (self.gds_format_string(quote_attrib(self.lang).encode(ExternalEncoding), input_name='lang'), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='UDC'): super(UDC, self).exportChildren(outfile, level, namespace_, name_) pass def hasContent_(self): if ( self.valueOf_ or super(UDC, self).hasContent_() ): return True else: return False def exportLiteral(self, outfile, level, name_='UDC'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') showIndent(outfile, level) outfile.write('lang = "%s",\n' % (self.lang,)) super(UDC, self).exportLiteralAttributes(outfile, level, already_processed, name_) def exportLiteralChildren(self, outfile, level, name_): super(UDC, self).exportLiteralChildren(outfile, level, name_) pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('lang') if value is not None and 'lang' not in already_processed: already_processed.append('lang') self.lang = value super(UDC, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, from_subclass=False): super(UDC, self).buildChildren(child_, node, nodeName_, True) pass # end class UDC class LCC(SimpleLiteral): subclass = None superclass = SimpleLiteral def __init__(self, lang=None, valueOf_=None): super(LCC, self).__init__(lang, valueOf_, ) self.lang = _cast(None, lang) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if LCC.subclass: return LCC.subclass(*args_, **kwargs_) else: return LCC(*args_, **kwargs_) factory = staticmethod(factory) def get_lang(self): return self.lang def set_lang(self, lang): self.lang = lang def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='LCC', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='LCC') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="LCC"') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='LCC'): super(LCC, self).exportAttributes(outfile, level, already_processed, namespace_, name_='LCC') if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') outfile.write(' lang=%s' % (self.gds_format_string(quote_attrib(self.lang).encode(ExternalEncoding), input_name='lang'), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='LCC'): super(LCC, self).exportChildren(outfile, level, namespace_, name_) pass def hasContent_(self): if ( self.valueOf_ or super(LCC, self).hasContent_() ): return True else: return False def exportLiteral(self, outfile, level, name_='LCC'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') showIndent(outfile, level) outfile.write('lang = "%s",\n' % (self.lang,)) super(LCC, self).exportLiteralAttributes(outfile, level, already_processed, name_) def exportLiteralChildren(self, outfile, level, name_): super(LCC, self).exportLiteralChildren(outfile, level, name_) pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('lang') if value is not None and 'lang' not in already_processed: already_processed.append('lang') self.lang = value super(LCC, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, from_subclass=False): super(LCC, self).buildChildren(child_, node, nodeName_, True) pass # end class LCC class DDC(SimpleLiteral): subclass = None superclass = SimpleLiteral def __init__(self, lang=None, valueOf_=None): super(DDC, self).__init__(lang, valueOf_, ) self.lang = _cast(None, lang) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if DDC.subclass: return DDC.subclass(*args_, **kwargs_) else: return DDC(*args_, **kwargs_) factory = staticmethod(factory) def get_lang(self): return self.lang def set_lang(self, lang): self.lang = lang def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='DDC', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='DDC') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="DDC"') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='DDC'): super(DDC, self).exportAttributes(outfile, level, already_processed, namespace_, name_='DDC') if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') outfile.write(' lang=%s' % (self.gds_format_string(quote_attrib(self.lang).encode(ExternalEncoding), input_name='lang'), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='DDC'): super(DDC, self).exportChildren(outfile, level, namespace_, name_) pass def hasContent_(self): if ( self.valueOf_ or super(DDC, self).hasContent_() ): return True else: return False def exportLiteral(self, outfile, level, name_='DDC'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') showIndent(outfile, level) outfile.write('lang = "%s",\n' % (self.lang,)) super(DDC, self).exportLiteralAttributes(outfile, level, already_processed, name_) def exportLiteralChildren(self, outfile, level, name_): super(DDC, self).exportLiteralChildren(outfile, level, name_) pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('lang') if value is not None and 'lang' not in already_processed: already_processed.append('lang') self.lang = value super(DDC, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, from_subclass=False): super(DDC, self).buildChildren(child_, node, nodeName_, True) pass # end class DDC class MESH(SimpleLiteral): subclass = None superclass = SimpleLiteral def __init__(self, lang=None, valueOf_=None): super(MESH, self).__init__(lang, valueOf_, ) self.lang = _cast(None, lang) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if MESH.subclass: return MESH.subclass(*args_, **kwargs_) else: return MESH(*args_, **kwargs_) factory = staticmethod(factory) def get_lang(self): return self.lang def set_lang(self, lang): self.lang = lang def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='MESH', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='MESH') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="MESH"') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='MESH'): super(MESH, self).exportAttributes(outfile, level, already_processed, namespace_, name_='MESH') if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') outfile.write(' lang=%s' % (self.gds_format_string(quote_attrib(self.lang).encode(ExternalEncoding), input_name='lang'), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='MESH'): super(MESH, self).exportChildren(outfile, level, namespace_, name_) pass def hasContent_(self): if ( self.valueOf_ or super(MESH, self).hasContent_() ): return True else: return False def exportLiteral(self, outfile, level, name_='MESH'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') showIndent(outfile, level) outfile.write('lang = "%s",\n' % (self.lang,)) super(MESH, self).exportLiteralAttributes(outfile, level, already_processed, name_) def exportLiteralChildren(self, outfile, level, name_): super(MESH, self).exportLiteralChildren(outfile, level, name_) pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('lang') if value is not None and 'lang' not in already_processed: already_processed.append('lang') self.lang = value super(MESH, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, from_subclass=False): super(MESH, self).buildChildren(child_, node, nodeName_, True) pass # end class MESH class LCSH(SimpleLiteral): subclass = None superclass = SimpleLiteral def __init__(self, lang=None, valueOf_=None): super(LCSH, self).__init__(lang, valueOf_, ) self.lang = _cast(None, lang) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if LCSH.subclass: return LCSH.subclass(*args_, **kwargs_) else: return LCSH(*args_, **kwargs_) factory = staticmethod(factory) def get_lang(self): return self.lang def set_lang(self, lang): self.lang = lang def get_valueOf_(self): return self.valueOf_ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ def export(self, outfile, level, namespace_='cml:', name_='LCSH', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) self.exportAttributes(outfile, level, [], namespace_, name_='LCSH') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="LCSH"') if self.hasContent_(): outfile.write('>') outfile.write(self.valueOf_) self.exportChildren(outfile, level + 1, namespace_, name_) outfile.write('\n' % (namespace_, name_)) else: outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='cml:', name_='LCSH'): super(LCSH, self).exportAttributes(outfile, level, already_processed, namespace_, name_='LCSH') if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') outfile.write(' lang=%s' % (self.gds_format_string(quote_attrib(self.lang).encode(ExternalEncoding), input_name='lang'), )) def exportChildren(self, outfile, level, namespace_='cml:', name_='LCSH'): super(LCSH, self).exportChildren(outfile, level, namespace_, name_) pass def hasContent_(self): if ( self.valueOf_ or super(LCSH, self).hasContent_() ): return True else: return False def exportLiteral(self, outfile, level, name_='LCSH'): level += 1 self.exportLiteralAttributes(outfile, level, [], name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.lang is not None and 'lang' not in already_processed: already_processed.append('lang') showIndent(outfile, level) outfile.write('lang = "%s",\n' % (self.lang,)) super(LCSH, self).exportLiteralAttributes(outfile, level, already_processed, name_) def exportLiteralChildren(self, outfile, level, name_): super(LCSH, self).exportLiteralChildren(outfile, level, name_) pass def build(self, node): self.buildAttributes(node, node.attrib, []) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = attrs.get('lang') if value is not None and 'lang' not in already_processed: already_processed.append('lang') self.lang = value super(LCSH, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, from_subclass=False): super(LCSH, self).buildChildren(child_, node, nodeName_, True) pass # end class LCSH USAGE_TEXT = """ Usage: python .py [ -s ] """ def usage(): print USAGE_TEXT sys.exit(1) def get_root_tag(node): tag = Tag_pattern_.match(node.tag).groups()[-1] rootClass = globals().get(tag) return tag, rootClass def parse(inFileName): doc = parsexml_(inFileName) rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: rootTag = 'property' rootClass = property rootObj = rootClass.factory() rootObj.build(rootNode) # Enable Python to collect the space used by the DOM. doc = None sys.stdout.write('\n') rootObj.export(sys.stdout, 0, name_=rootTag, namespacedef_='xmlns:cml="http://www.connectomics.org/cff-2" xmlns:dcterms="http://purl.org/dc/terms/"') return rootObj def parseString(inString): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: rootTag = 'property' rootClass = property rootObj = rootClass.factory() rootObj.build(rootNode) # Enable Python to collect the space used by the DOM. doc = None sys.stdout.write('\n') rootObj.export(sys.stdout, 0, name_="property", namespacedef_='xmlns:cml="http://www.connectomics.org/cff-2" xmlns:dcterms="http://purl.org/dc/terms/"') return rootObj def parseLiteral(inFileName): doc = parsexml_(inFileName) rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: rootTag = 'property' rootClass = property rootObj = rootClass.factory() rootObj.build(rootNode) # Enable Python to collect the space used by the DOM. doc = None sys.stdout.write('#from cff import *\n\n') sys.stdout.write('import cff as model_\n\n') sys.stdout.write('rootObj = model_.rootTag(\n') rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) sys.stdout.write(')\n') return rootObj def main(): args = sys.argv[1:] if len(args) == 1: parse(args[0]) else: usage() if __name__ == '__main__': #import pdb; pdb.set_trace() main() __all__ = [ "Box", "CData", "CImagestack", "CMetadata", "CNetwork", "CScript", "CSurface", "CTimeseries", "CTrack", "CVolume", "DCMIType", "DDC", "IMT", "ISO3166", "ISO639_2", "ISO639_3", "LCC", "LCSH", "MESH", "Period", "Point", "RFC1766", "RFC3066", "RFC4646", "SimpleLiteral", "TGN", "UDC", "URI", "W3CDTF", "abstract", "accessRights", "accrualMethod", "accrualPeriodicity", "accrualPolicy", "alternative", "audience", "available", "bibliographicCitation", "conformsTo", "connectome", "contributor", "coverage", "created", "creator", "date", "dateAccepted", "dateCopyrighted", "dateSubmitted", "description", "educationLevel", "elementContainer", "elementOrRefinementContainer", "extent", "format", "hasFormat", "hasPart", "hasVersion", "identifier", "instructionalMethod", "isFormatOf", "isPartOf", "isReferencedBy", "isReplacedBy", "isRequiredBy", "isVersionOf", "issued", "language", "license", "mediator", "medium", "metadata", "modified", "property", "provenance", "publisher", "references", "relation", "replaces", "requires", "rights", "rightsHolder", "section", "source", "spatial", "subject", "tableOfContents", "tag", "temporal", "title", "type_", "valid" ] LTS5-cfflib-9a123ae/cfflib/cfflib.py000066400000000000000000000567751156222202000171330ustar00rootroot00000000000000#!/usr/bin/env python # # Generated Thu Mar 10 14:06:17 2011 by generateDS.py version 2.4b. # import sys import cff as supermod etree_ = None Verbose_import_ = False ( XMLParser_import_none, XMLParser_import_lxml, XMLParser_import_elementtree ) = range(3) XMLParser_import_library = None try: # lxml from lxml import etree as etree_ XMLParser_import_library = XMLParser_import_lxml if Verbose_import_: print("running with lxml.etree") except ImportError: try: # cElementTree from Python 2.5+ import xml.etree.cElementTree as etree_ XMLParser_import_library = XMLParser_import_elementtree if Verbose_import_: print("running with cElementTree on Python 2.5+") except ImportError: try: # ElementTree from Python 2.5+ import xml.etree.ElementTree as etree_ XMLParser_import_library = XMLParser_import_elementtree if Verbose_import_: print("running with ElementTree on Python 2.5+") except ImportError: try: # normal cElementTree install import cElementTree as etree_ XMLParser_import_library = XMLParser_import_elementtree if Verbose_import_: print("running with cElementTree") except ImportError: try: # normal ElementTree install import elementtree.ElementTree as etree_ XMLParser_import_library = XMLParser_import_elementtree if Verbose_import_: print("running with ElementTree") except ImportError: raise ImportError("Failed to import ElementTree from any known place") def parsexml_(*args, **kwargs): if (XMLParser_import_library == XMLParser_import_lxml and 'parser' not in kwargs): # Use the lxml ElementTree compatible parser so that, e.g., # we ignore comments. kwargs['parser'] = etree_.ETCompatXMLParser() doc = etree_.parse(*args, **kwargs) return doc # # Globals # ExternalEncoding = 'ascii' # # Data representation classes # class property(supermod.property): def __init__(self, name=None, value=None, type_=None, uncertainty=None, unit=None): super(property, self).__init__(name, value, type_, uncertainty, unit, ) supermod.property.subclass = property # end class property class section(supermod.section): def __init__(self, title=None, name=None, type_=None, property=None): super(section, self).__init__(title, name, type_, property, ) supermod.section.subclass = section # end class section class metadata(supermod.metadata): def __init__(self, tag=None, section=None): super(metadata, self).__init__(tag, section, ) supermod.metadata.subclass = metadata # end class metadata class tag(supermod.tag): def __init__(self, key=None, valueOf_=None): super(tag, self).__init__(key, valueOf_, ) supermod.tag.subclass = tag # end class tag class connectome(supermod.connectome): def __init__(self, connectome_meta=None, connectome_network=None, connectome_surface=None, connectome_volume=None, connectome_track=None, connectome_timeseries=None, connectome_data=None, connectome_script=None, connectome_imagestack=None): super(connectome, self).__init__(connectome_meta, connectome_network, connectome_surface, connectome_volume, connectome_track, connectome_timeseries, connectome_data, connectome_script, connectome_imagestack, ) supermod.connectome.subclass = connectome # end class connectome class CMetadata(supermod.CMetadata): def __init__(self, version=None, title=None, creator=None, publisher=None, created=None, modified=None, rights=None, license=None, references=None, relation=None, description=None, generator=None, species=None, email=None, metadata=None): super(CMetadata, self).__init__(version, title, creator, publisher, created, modified, rights, license, references, relation, description, generator, species, email, metadata, ) supermod.CMetadata.subclass = CMetadata # end class CMetadata class CNetwork(supermod.CNetwork): def __init__(self, src=None, dtype='AttributeNetwork', name=None, fileformat='GraphML', metadata=None, description=None): super(CNetwork, self).__init__(src, dtype, name, fileformat, metadata, description, ) supermod.CNetwork.subclass = CNetwork # end class CNetwork class CSurface(supermod.CSurface): def __init__(self, src=None, dtype='Surfaceset', name=None, fileformat=None, description=None, metadata=None): super(CSurface, self).__init__(src, dtype, name, fileformat, description, metadata, ) supermod.CSurface.subclass = CSurface # end class CSurface class CVolume(supermod.CVolume): def __init__(self, src=None, dtype=None, name=None, fileformat='Nifti1', description=None, metadata=None): super(CVolume, self).__init__(src, dtype, name, fileformat, description, metadata, ) supermod.CVolume.subclass = CVolume # end class CVolume class CTrack(supermod.CTrack): def __init__(self, src=None, dtype=None, name=None, fileformat='TrackVis', description=None, metadata=None): super(CTrack, self).__init__(src, dtype, name, fileformat, description, metadata, ) supermod.CTrack.subclass = CTrack # end class CTrack class CTimeseries(supermod.CTimeseries): def __init__(self, src=None, dtype=None, name=None, fileformat='HDF5', description=None, metadata=None): super(CTimeseries, self).__init__(src, dtype, name, fileformat, description, metadata, ) supermod.CTimeseries.subclass = CTimeseries # end class CTimeseries class CData(supermod.CData): def __init__(self, src=None, dtype=None, name=None, fileformat=None, description=None, metadata=None): super(CData, self).__init__(src, dtype, name, fileformat, description, metadata, ) supermod.CData.subclass = CData # end class CData class CScript(supermod.CScript): def __init__(self, src=None, dtype='Python', name=None, fileformat='UTF-8', description=None, metadata=None): super(CScript, self).__init__(src, dtype, name, fileformat, description, metadata, ) supermod.CScript.subclass = CScript # end class CScript class CImagestack(supermod.CImagestack): def __init__(self, src=None, fileformat=None, name=None, pattern=None, description=None, metadata=None): super(CImagestack, self).__init__(src, fileformat, name, pattern, description, metadata, ) supermod.CImagestack.subclass = CImagestack # end class CImagestack class title(supermod.title): def __init__(self, valueOf_=None): super(title, self).__init__(valueOf_, ) supermod.title.subclass = title # end class title class creator(supermod.creator): def __init__(self, valueOf_=None): super(creator, self).__init__(valueOf_, ) supermod.creator.subclass = creator # end class creator class subject(supermod.subject): def __init__(self, valueOf_=None): super(subject, self).__init__(valueOf_, ) supermod.subject.subclass = subject # end class subject class description(supermod.description): def __init__(self, valueOf_=None): super(description, self).__init__(valueOf_, ) supermod.description.subclass = description # end class description class publisher(supermod.publisher): def __init__(self, valueOf_=None): super(publisher, self).__init__(valueOf_, ) supermod.publisher.subclass = publisher # end class publisher class contributor(supermod.contributor): def __init__(self, valueOf_=None): super(contributor, self).__init__(valueOf_, ) supermod.contributor.subclass = contributor # end class contributor class date(supermod.date): def __init__(self, valueOf_=None): super(date, self).__init__(valueOf_, ) supermod.date.subclass = date # end class date class type_(supermod.type_): def __init__(self, valueOf_=None): super(type_, self).__init__(valueOf_, ) supermod.type_.subclass = type_ # end class type_ class format(supermod.format): def __init__(self, valueOf_=None): super(format, self).__init__(valueOf_, ) supermod.format.subclass = format # end class format class identifier(supermod.identifier): def __init__(self, valueOf_=None): super(identifier, self).__init__(valueOf_, ) supermod.identifier.subclass = identifier # end class identifier class source(supermod.source): def __init__(self, valueOf_=None): super(source, self).__init__(valueOf_, ) supermod.source.subclass = source # end class source class language(supermod.language): def __init__(self, valueOf_=None): super(language, self).__init__(valueOf_, ) supermod.language.subclass = language # end class language class relation(supermod.relation): def __init__(self, valueOf_=None): super(relation, self).__init__(valueOf_, ) supermod.relation.subclass = relation # end class relation class coverage(supermod.coverage): def __init__(self, valueOf_=None): super(coverage, self).__init__(valueOf_, ) supermod.coverage.subclass = coverage # end class coverage class rights(supermod.rights): def __init__(self, valueOf_=None): super(rights, self).__init__(valueOf_, ) supermod.rights.subclass = rights # end class rights class alternative(supermod.alternative): def __init__(self, valueOf_=None): super(alternative, self).__init__(valueOf_, ) supermod.alternative.subclass = alternative # end class alternative class tableOfContents(supermod.tableOfContents): def __init__(self, valueOf_=None): super(tableOfContents, self).__init__(valueOf_, ) supermod.tableOfContents.subclass = tableOfContents # end class tableOfContents class abstract(supermod.abstract): def __init__(self, valueOf_=None): super(abstract, self).__init__(valueOf_, ) supermod.abstract.subclass = abstract # end class abstract class created(supermod.created): def __init__(self, valueOf_=None): super(created, self).__init__(valueOf_, ) supermod.created.subclass = created # end class created class valid(supermod.valid): def __init__(self, valueOf_=None): super(valid, self).__init__(valueOf_, ) supermod.valid.subclass = valid # end class valid class available(supermod.available): def __init__(self, valueOf_=None): super(available, self).__init__(valueOf_, ) supermod.available.subclass = available # end class available class issued(supermod.issued): def __init__(self, valueOf_=None): super(issued, self).__init__(valueOf_, ) supermod.issued.subclass = issued # end class issued class modified(supermod.modified): def __init__(self, valueOf_=None): super(modified, self).__init__(valueOf_, ) supermod.modified.subclass = modified # end class modified class dateAccepted(supermod.dateAccepted): def __init__(self, valueOf_=None): super(dateAccepted, self).__init__(valueOf_, ) supermod.dateAccepted.subclass = dateAccepted # end class dateAccepted class dateCopyrighted(supermod.dateCopyrighted): def __init__(self, valueOf_=None): super(dateCopyrighted, self).__init__(valueOf_, ) supermod.dateCopyrighted.subclass = dateCopyrighted # end class dateCopyrighted class dateSubmitted(supermod.dateSubmitted): def __init__(self, valueOf_=None): super(dateSubmitted, self).__init__(valueOf_, ) supermod.dateSubmitted.subclass = dateSubmitted # end class dateSubmitted class extent(supermod.extent): def __init__(self, valueOf_=None): super(extent, self).__init__(valueOf_, ) supermod.extent.subclass = extent # end class extent class medium(supermod.medium): def __init__(self, valueOf_=None): super(medium, self).__init__(valueOf_, ) supermod.medium.subclass = medium # end class medium class isVersionOf(supermod.isVersionOf): def __init__(self, valueOf_=None): super(isVersionOf, self).__init__(valueOf_, ) supermod.isVersionOf.subclass = isVersionOf # end class isVersionOf class hasVersion(supermod.hasVersion): def __init__(self, valueOf_=None): super(hasVersion, self).__init__(valueOf_, ) supermod.hasVersion.subclass = hasVersion # end class hasVersion class isReplacedBy(supermod.isReplacedBy): def __init__(self, valueOf_=None): super(isReplacedBy, self).__init__(valueOf_, ) supermod.isReplacedBy.subclass = isReplacedBy # end class isReplacedBy class replaces(supermod.replaces): def __init__(self, valueOf_=None): super(replaces, self).__init__(valueOf_, ) supermod.replaces.subclass = replaces # end class replaces class isRequiredBy(supermod.isRequiredBy): def __init__(self, valueOf_=None): super(isRequiredBy, self).__init__(valueOf_, ) supermod.isRequiredBy.subclass = isRequiredBy # end class isRequiredBy class requires(supermod.requires): def __init__(self, valueOf_=None): super(requires, self).__init__(valueOf_, ) supermod.requires.subclass = requires # end class requires class isPartOf(supermod.isPartOf): def __init__(self, valueOf_=None): super(isPartOf, self).__init__(valueOf_, ) supermod.isPartOf.subclass = isPartOf # end class isPartOf class hasPart(supermod.hasPart): def __init__(self, valueOf_=None): super(hasPart, self).__init__(valueOf_, ) supermod.hasPart.subclass = hasPart # end class hasPart class isReferencedBy(supermod.isReferencedBy): def __init__(self, valueOf_=None): super(isReferencedBy, self).__init__(valueOf_, ) supermod.isReferencedBy.subclass = isReferencedBy # end class isReferencedBy class references(supermod.references): def __init__(self, valueOf_=None): super(references, self).__init__(valueOf_, ) supermod.references.subclass = references # end class references class isFormatOf(supermod.isFormatOf): def __init__(self, valueOf_=None): super(isFormatOf, self).__init__(valueOf_, ) supermod.isFormatOf.subclass = isFormatOf # end class isFormatOf class hasFormat(supermod.hasFormat): def __init__(self, valueOf_=None): super(hasFormat, self).__init__(valueOf_, ) supermod.hasFormat.subclass = hasFormat # end class hasFormat class conformsTo(supermod.conformsTo): def __init__(self, valueOf_=None): super(conformsTo, self).__init__(valueOf_, ) supermod.conformsTo.subclass = conformsTo # end class conformsTo class spatial(supermod.spatial): def __init__(self, valueOf_=None): super(spatial, self).__init__(valueOf_, ) supermod.spatial.subclass = spatial # end class spatial class temporal(supermod.temporal): def __init__(self, valueOf_=None): super(temporal, self).__init__(valueOf_, ) supermod.temporal.subclass = temporal # end class temporal class audience(supermod.audience): def __init__(self, valueOf_=None): super(audience, self).__init__(valueOf_, ) supermod.audience.subclass = audience # end class audience class accrualMethod(supermod.accrualMethod): def __init__(self, valueOf_=None): super(accrualMethod, self).__init__(valueOf_, ) supermod.accrualMethod.subclass = accrualMethod # end class accrualMethod class accrualPeriodicity(supermod.accrualPeriodicity): def __init__(self, valueOf_=None): super(accrualPeriodicity, self).__init__(valueOf_, ) supermod.accrualPeriodicity.subclass = accrualPeriodicity # end class accrualPeriodicity class accrualPolicy(supermod.accrualPolicy): def __init__(self, valueOf_=None): super(accrualPolicy, self).__init__(valueOf_, ) supermod.accrualPolicy.subclass = accrualPolicy # end class accrualPolicy class instructionalMethod(supermod.instructionalMethod): def __init__(self, valueOf_=None): super(instructionalMethod, self).__init__(valueOf_, ) supermod.instructionalMethod.subclass = instructionalMethod # end class instructionalMethod class provenance(supermod.provenance): def __init__(self, valueOf_=None): super(provenance, self).__init__(valueOf_, ) supermod.provenance.subclass = provenance # end class provenance class rightsHolder(supermod.rightsHolder): def __init__(self, valueOf_=None): super(rightsHolder, self).__init__(valueOf_, ) supermod.rightsHolder.subclass = rightsHolder # end class rightsHolder class mediator(supermod.mediator): def __init__(self, valueOf_=None): super(mediator, self).__init__(valueOf_, ) supermod.mediator.subclass = mediator # end class mediator class educationLevel(supermod.educationLevel): def __init__(self, valueOf_=None): super(educationLevel, self).__init__(valueOf_, ) supermod.educationLevel.subclass = educationLevel # end class educationLevel class accessRights(supermod.accessRights): def __init__(self, valueOf_=None): super(accessRights, self).__init__(valueOf_, ) supermod.accessRights.subclass = accessRights # end class accessRights class license(supermod.license): def __init__(self, valueOf_=None): super(license, self).__init__(valueOf_, ) supermod.license.subclass = license # end class license class bibliographicCitation(supermod.bibliographicCitation): def __init__(self, valueOf_=None): super(bibliographicCitation, self).__init__(valueOf_, ) supermod.bibliographicCitation.subclass = bibliographicCitation # end class bibliographicCitation class elementOrRefinementContainer(supermod.elementOrRefinementContainer): def __init__(self, any=None): super(elementOrRefinementContainer, self).__init__(any, ) supermod.elementOrRefinementContainer.subclass = elementOrRefinementContainer # end class elementOrRefinementContainer class SimpleLiteral(supermod.SimpleLiteral): def __init__(self, lang=None, valueOf_=None): super(SimpleLiteral, self).__init__(lang, valueOf_, ) supermod.SimpleLiteral.subclass = SimpleLiteral # end class SimpleLiteral class elementContainer(supermod.elementContainer): def __init__(self, any=None): super(elementContainer, self).__init__(any, ) supermod.elementContainer.subclass = elementContainer # end class elementContainer class TGN(supermod.TGN): def __init__(self, lang=None, valueOf_=None): super(TGN, self).__init__(lang, valueOf_, ) supermod.TGN.subclass = TGN # end class TGN class Box(supermod.Box): def __init__(self, lang=None, valueOf_=None): super(Box, self).__init__(lang, valueOf_, ) supermod.Box.subclass = Box # end class Box class ISO3166(supermod.ISO3166): def __init__(self, lang=None, valueOf_=None): super(ISO3166, self).__init__(lang, valueOf_, ) supermod.ISO3166.subclass = ISO3166 # end class ISO3166 class Point(supermod.Point): def __init__(self, lang=None, valueOf_=None): super(Point, self).__init__(lang, valueOf_, ) supermod.Point.subclass = Point # end class Point class RFC4646(supermod.RFC4646): def __init__(self, lang=None, valueOf_=None): super(RFC4646, self).__init__(lang, valueOf_, ) supermod.RFC4646.subclass = RFC4646 # end class RFC4646 class RFC3066(supermod.RFC3066): def __init__(self, lang=None, valueOf_=None): super(RFC3066, self).__init__(lang, valueOf_, ) supermod.RFC3066.subclass = RFC3066 # end class RFC3066 class RFC1766(supermod.RFC1766): def __init__(self, lang=None, valueOf_=None): super(RFC1766, self).__init__(lang, valueOf_, ) supermod.RFC1766.subclass = RFC1766 # end class RFC1766 class ISO639_3(supermod.ISO639_3): def __init__(self, lang=None, valueOf_=None): super(ISO639_3, self).__init__(lang, valueOf_, ) supermod.ISO639_3.subclass = ISO639_3 # end class ISO639_3 class ISO639_2(supermod.ISO639_2): def __init__(self, lang=None, valueOf_=None): super(ISO639_2, self).__init__(lang, valueOf_, ) supermod.ISO639_2.subclass = ISO639_2 # end class ISO639_2 class URI(supermod.URI): def __init__(self, lang=None, valueOf_=None): super(URI, self).__init__(lang, valueOf_, ) supermod.URI.subclass = URI # end class URI class IMT(supermod.IMT): def __init__(self, lang=None, valueOf_=None): super(IMT, self).__init__(lang, valueOf_, ) supermod.IMT.subclass = IMT # end class IMT class DCMIType(supermod.DCMIType): def __init__(self, lang=None, valueOf_=None): super(DCMIType, self).__init__(lang, valueOf_, ) supermod.DCMIType.subclass = DCMIType # end class DCMIType class W3CDTF(supermod.W3CDTF): def __init__(self, lang=None, valueOf_=None): super(W3CDTF, self).__init__(lang, valueOf_, ) supermod.W3CDTF.subclass = W3CDTF # end class W3CDTF class Period(supermod.Period): def __init__(self, lang=None, valueOf_=None): super(Period, self).__init__(lang, valueOf_, ) supermod.Period.subclass = Period # end class Period class UDC(supermod.UDC): def __init__(self, lang=None, valueOf_=None): super(UDC, self).__init__(lang, valueOf_, ) supermod.UDC.subclass = UDC # end class UDC class LCC(supermod.LCC): def __init__(self, lang=None, valueOf_=None): super(LCC, self).__init__(lang, valueOf_, ) supermod.LCC.subclass = LCC # end class LCC class DDC(supermod.DDC): def __init__(self, lang=None, valueOf_=None): super(DDC, self).__init__(lang, valueOf_, ) supermod.DDC.subclass = DDC # end class DDC class MESH(supermod.MESH): def __init__(self, lang=None, valueOf_=None): super(MESH, self).__init__(lang, valueOf_, ) supermod.MESH.subclass = MESH # end class MESH class LCSH(supermod.LCSH): def __init__(self, lang=None, valueOf_=None): super(LCSH, self).__init__(lang, valueOf_, ) supermod.LCSH.subclass = LCSH # end class LCSH def get_root_tag(node): tag = supermod.Tag_pattern_.match(node.tag).groups()[-1] rootClass = None if hasattr(supermod, tag): rootClass = getattr(supermod, tag) return tag, rootClass def parse(inFilename): doc = parsexml_(inFilename) rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: rootTag = 'property' rootClass = supermod.property rootObj = rootClass.factory() rootObj.build(rootNode) # Enable Python to collect the space used by the DOM. doc = None sys.stdout.write('\n') rootObj.export(sys.stdout, 0, name_=rootTag, namespacedef_='xmlns:cml="http://www.connectomics.org/cff-2" xmlns:dcterms="http://purl.org/dc/terms/"') doc = None return rootObj def parseString(inString): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: rootTag = 'property' rootClass = supermod.property rootObj = rootClass.factory() rootObj.build(rootNode) # Enable Python to collect the space used by the DOM. doc = None sys.stdout.write('\n') rootObj.export(sys.stdout, 0, name_=rootTag, namespacedef_='xmlns:cml="http://www.connectomics.org/cff-2" xmlns:dcterms="http://purl.org/dc/terms/"') return rootObj def parseLiteral(inFilename): doc = parsexml_(inFilename) rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: rootTag = 'property' rootClass = supermod.property rootObj = rootClass.factory() rootObj.build(rootNode) # Enable Python to collect the space used by the DOM. doc = None sys.stdout.write('#from cff import *\n\n') sys.stdout.write('import cff as model_\n\n') sys.stdout.write('rootObj = model_.property(\n') rootObj.exportLiteral(sys.stdout, 0, name_="property") sys.stdout.write(')\n') return rootObj USAGE_TEXT = """ Usage: python ???.py """ def usage(): print USAGE_TEXT sys.exit(1) def main(): args = sys.argv[1:] if len(args) != 1: usage() infilename = args[0] root = parse(infilename) if __name__ == '__main__': #import pdb; pdb.set_trace() main() LTS5-cfflib-9a123ae/cfflib/cfflib2.py000066400000000000000000001664771156222202000172160ustar00rootroot00000000000000#!/usr/bin/env python # # Generated Tue Jan 25 11:45:14 2011 by generateDS.py version 2.3b. # ### My Imports import warnings from util import * from cff import showIndent, quote_xml, tag import tempfile import os.path as op import os import sys import cff as supermod etree_ = None Verbose_import_ = False ( XMLParser_import_none, XMLParser_import_lxml, XMLParser_import_elementtree ) = range(3) XMLParser_import_library = None try: # lxml from lxml import etree as etree_ XMLParser_import_library = XMLParser_import_lxml if Verbose_import_: print("running with lxml.etree") except ImportError: try: # cElementTree from Python 2.5+ import xml.etree.cElementTree as etree_ XMLParser_import_library = XMLParser_import_elementtree if Verbose_import_: print("running with cElementTree on Python 2.5+") except ImportError: try: # ElementTree from Python 2.5+ import xml.etree.ElementTree as etree_ XMLParser_import_library = XMLParser_import_elementtree if Verbose_import_: print("running with ElementTree on Python 2.5+") except ImportError: try: # normal cElementTree install import cElementTree as etree_ XMLParser_import_library = XMLParser_import_elementtree if Verbose_import_: print("running with cElementTree") except ImportError: try: # normal ElementTree install import elementtree.ElementTree as etree_ XMLParser_import_library = XMLParser_import_elementtree if Verbose_import_: print("running with ElementTree") except ImportError: raise ImportError("Failed to import ElementTree from any known place") def parsexml_(*args, **kwargs): if (XMLParser_import_library == XMLParser_import_lxml and 'parser' not in kwargs): # Use the lxml ElementTree compatible parser so that, e.g., # we ignore comments. kwargs['parser'] = etree_.ETCompatXMLParser() doc = etree_.parse(*args, **kwargs) return doc # # Globals # ExternalEncoding = 'ascii' # # Data representation classes # class metadata(supermod.metadata): def __init__(self, tag=None, section=None): super(metadata, self).__init__(tag, section, ) def get_tags_as_dictionary(self): """Return the metadata tags as a dictionary""" dat = self.get_tag() ret = {} for ele in dat: ret[ele.key] = ele.valueOf_ return ret def set_tags_with_dictionary(self, dictionary): """Set the metadata with a dictionary""" tags = self.get_tag() if len(dictionary) == 0: return for k in dictionary: test = False # check if the key already exists for ele in tags: if ele.key == k: # always change the value to a string ele.valueOf_ = str(dictionary[k]) test = True if not test: # append to tags mytag = tag(str(k), str(dictionary[k])) self.add_tag(mytag) supermod.metadata.subclass = metadata class connectome(supermod.connectome): """The connectome object is the main object of this format. It contains CMetadata, and it can contain some CData, CNetwork, CSurface, CTimeserie, CTrack, CVolume, CScript or CImagestack objects that are referred to as CObjects. It is possible to store to a simple connectome markup .cml file with appropriate relative references to the data files, or to a compressed (zipped) connectome file with ending .cff containing all source data objects. """ def __init__(self, title = None, connectome_meta=None, connectome_network=None, connectome_surface=None, connectome_volume=None, connectome_track=None, connectome_timeseries=None, connectome_data=None, connectome_script=None, connectome_imagestack=None): """Create a new connectome object See also -------- CMetadata, CNetwork, CSurface, CVolume, CTrack, CTimeserie, CData, CScript and CImagestack """ super(connectome, self).__init__(connectome_meta, connectome_network, connectome_surface, connectome_volume, connectome_track, connectome_timeseries, connectome_data, connectome_script, connectome_imagestack, ) # add parent reference to all children self._update_parent_reference() # add some useful attributes to the save functions self.iszip = False # set default title if title is None: title = 'newconnectome' # Default CMetadata if connectome_meta is None: self.connectome_meta = CMetadata() self.connectome_meta.set_title(title) def add_connectome_object(self, cobj): """ Adds an arbitrary connectome object to the container depending its type. This needs to be a valid connectome object """ cname = cobj.__class__.__name__ if cname == 'CNetwork': self.add_connectome_network(cobj) elif cname == 'CSurface': self.add_connectome_surface(cobj) elif cname == 'CVolume': self.add_connectome_volume(cobj) elif cname == 'CTrack': self.add_connectome_track(cobj) elif cname == 'CData': self.add_connectome_data(cobj) elif cname == 'CScript': self.add_connectome_script(cobj) elif cname == 'CTimeseries': self.add_connectome_timeseries(cobj) # XXX> to be competed def get_all(self): """ Return all connectome objects as a list Examples -------- >>> allcobj = myConnectome.get_all() >>> first_ele = allcobj[0] """ return self.connectome_network + self.connectome_surface + \ self.connectome_volume + self.connectome_track + \ self.connectome_timeseries + self.connectome_data + \ self.connectome_script + self.connectome_imagestack def get_by_name(self, name): """ Return the list of connectome object(s) that have the given name Parameters ---------- name : string or list of strings name(s) of the requested object(s) Examples -------- >>> myConnectome.get_by_name('my first network') """ if isinstance(name, list): ret = [] all_cobj = self.get_all() for ele in all_cobj: if ele.name in name: ret.append(ele) return ret else: #n = self.get_normalised_name(name) all_cobj = self.get_all() for ele in all_cobj: if name == ele.name: return ele return None def get_by_src(self, src): """ Return the list of connectome object(s) that have the given source path Parameters ---------- src : string or list of strings source paths(s) of the requested object(s) """ if isinstance(src, list): ret = [] all_cobj = self.get_all() for ele in all_cobj: if ele.src in src: ret.append(ele) return ret else: all_cobj = self.get_all() for ele in all_cobj: if src == ele.src: return ele return None def check_file_in_cff(self): """Checks if the files described in the meta.cml are contained in the connectome zip file.""" if not self.iszip: all_cobj = self.get_all() for ele in all_cobj: if not op.exists(ele.src): msg = "Element with name %s and source path has no valid reference to an existing file." % (ele.name, ele.src) raise Exception(msg) else: all_cobj = self.get_all() nlist = self._zipfile.namelist() for ele in all_cobj: if not ele.src in nlist: msg = "Element with name %s and source path %s is not contained in the connectome file." % (ele.name, ele.src) raise Exception(msg) def check_names_unique(self): """Checks whether the names are unique.""" all_cobj = self.get_all() namelist = [] for ele in all_cobj: namelist.append(ele.name) # check for non uniqueness while len(namelist) > 0: e = namelist.pop() if e in namelist: msg = "Element '%s' has a non unique name! Please change the name to make it unique." % e raise Exception(msg) def is_name_unique(self, name): """Check if the given name is unique. Parameters ---------- name : string, the name to check if it is unique See also -------- check_names_unique, connectome """ n = self.get_normalised_name(name) all_cobj = self.get_all() namelist = [] for ele in all_cobj: namelist.append(self.get_normalised_name(ele.name)) if n in namelist: return False else: return True def get_unique_cff_name(self): """Return a unique connectome file title""" # create random number to append to the name # to enable multiple people to access the files import random rndstr = str(int(random.random()*1000000)) n = self.get_connectome_meta().get_title() n = n.lower() n = n.replace(' ', '_') + rndstr return n def get_normalised_name(self, name): """Return a normalised name, without space and in lower case Parameters ---------- name : string, the name to be normalised Examples -------- >>> myConnectome.get_unique_cff_name() my_first_network See also -------- connectome """ n = name.lower() n = n.replace(' ', '_') return n def _update_parent_reference(self): """Updates the parent reference to the connectome file super-object""" all_cobj = self.get_all() for ele in all_cobj: ele.parent_cfile = self def to_xml(self): from StringIO import StringIO re = StringIO() re.write('\n') ns = """xmlns="http://www.connectomics.org/cff-2" xmlns:cml="http://www.connectomics.org/cff-2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dcterms="http://purl.org/dc/terms/" """ self.export(re, 0, name_= "connectome", namespacedef_=ns) re.seek(0) return re.read() def close_all(self, save = False): """ Close all currently loaded elements, thereby releasing occupied memory Parameters ---------- save : bool, Save the content before closing. """ all_cobj = self.get_all() for ele in all_cobj: if hasattr(ele, 'data') and hasattr(ele, 'tmpsrc') and op.exists(ele.tmpsrc): if save: ele.save() # remove .data and .tmpsrc print "Will not remove file %s from file system" % ele.tmpsrc print "Remove .data attribute" del ele.data print "Remove .tmpsrc attribute" del ele.tmpsrc # CMetadata setter def set_connectome_meta(self, cmeta): """Set the connectome metadata object for this connectome object Parameters ---------- cmeta : CMetadata the connectome metadata to add to the connectome object """ # Check if the name is set if cmeta.title is None or cmeta.title == '': raise Exception('A title is required.') self.connectome_meta = cmeta # CNetwork def add_connectome_network_from_nxgraph(self, name, nxGraph, dtype='AttributeNetwork', fileformat='NXGPickle'): """Add a new CNetwork from the given NetworkX graph object to the connectome. Parameters ---------- name : string, a unique name for the NetworkX graph to add to the connectome object nxGraph : NetworkX, a NetworkX graph object dtype : AttributeNetwork, the data type of this CNetwork fileformat : NXGPickle, the fileformat of the file of this CNetwork Examples -------- >>> myConnectome.add_connectome_network_from_nx(myNXGraph,'nxG1') See also -------- NetworkX, CNetwork.set_with_nxgraph, CNetwork, connectome.add_connectome_network, connectome """ # Check if the name is unique if not self.is_name_unique(name): raise Exception('The name is not unique.') n = CNetwork(name) n.set_with_nxgraph(nxGraph, dtype, fileformat) self.add_connectome_network(n) # need to update the reference to the parent connectome file self._update_parent_reference() def add_connectome_network_from_graphml(self, name, graphML): """Add a new CNetwork from the given GraphML file to the connectome object. Parameters ---------- name : string, the unique name of the new CNetwork graphML : GraphML file, the filename of the GraphML to add to the connectome. Examples -------- >>> myConnectome.add_connectome_network_from_ml('myGraphML.graphml') See also -------- GraphML, CNetwork.create_from_graphml, CNetwork, connectome.add_connectome_network, connectome """ # Check if the name is unique if not self.is_name_unique(name): raise Exception('The name is not unique.') n = CNetwork.create_from_graphml(name, graphML) self.add_connectome_network(n) # need to update the reference to the parent connectome file self._update_parent_reference() def add_connectome_script_from_file(self, name, filename, dtype = 'Python', fileformat = 'UTF-8'): """ Add a CScript from a file """ if not self.is_name_unique(name): raise Exception('The name is not unique.') s = CScript.create_from_file(name, filename, dtype= dtype, fileformat = dtype) self.add_connectome_script(s) # need to update the reference to the parent connectome file self._update_parent_reference() def add_connectome_network(self, cnet): """Add the given CNetwork to the connectome object. Parameters ---------- cnet : CNetwork, the connectome network to add to the connectome, the CNetwork name have to be unique. See also -------- CNetwork, connectome """ # Check if the name is set if cnet.name is None or cnet.name == '': raise Exception('A name is required.') # Check if the name is unique if not self.is_name_unique(cnet.name): raise Exception('The name is not unique.') self.connectome_network.append(cnet) # update sources for correct storing if op.exists(cnet.src): cnet.tmpsrc = cnet.src cnet.src = cnet.get_unique_relpath() # need to update the reference to the parent connectome file self._update_parent_reference() # CVolume def add_connectome_volume(self, cvol): """Add the given CVolume to the connectome object. Parameters ---------- cnet : CVolume, the connectome volume to add to the connectome, the CVolume name have to be unique. See also -------- CVolume, connectome """ # Check if the name is set if cvol.name is None or cvol.name == '': raise Exception('A name is required.') # Check if the name is unique if not self.is_name_unique(cvol.name): raise Exception('The name is not unique.') self.connectome_volume.append(cvol) # update sources for correct storing if op.exists(cvol.src): cvol.tmpsrc = cvol.src cvol.src = cvol.get_unique_relpath() # need to update the reference to the parent connectome file self._update_parent_reference() # CSurface def add_connectome_surface(self, csurf): """Add the given CSurface to the connectome object. Parameters ---------- csurf : CSurface, the connectome surface to add to the connectome, the CSurface name have to be unique. See also -------- CSurface, connectome """ # Check if the name is set if csurf.name is None or csurf.name == '': raise Exception('A name is required.') # Check if the name is unique if not self.is_name_unique(csurf.name): raise Exception('The name is not unique.') self.connectome_surface.append(csurf) # update sources for correct storing if op.exists(csurf.src): csurf.tmpsrc = csurf.src csurf.src = csurf.get_unique_relpath() # need to update the reference to the parent connectome file self._update_parent_reference() def add_connectome_track(self, ctrack): """Add the given CTrack to the connectome object. Parameters ---------- ctrack : CTrack, the connectome track to add to the connectome, the CTrack name have to be unique. """ # Check if the name is set if ctrack.name is None or ctrack.name == '': raise Exception('A name is required.') # Check if the name is unique if not self.is_name_unique(ctrack.name): raise Exception('The name is not unique.') self.connectome_track.append(ctrack) # update sources for correct storing if op.exists(ctrack.src): ctrack.tmpsrc = ctrack.src ctrack.src = ctrack.get_unique_relpath() # need to update the reference to the parent connectome file self._update_parent_reference() def add_connectome_data(self, cda): """Add the given CData to the connectome object. Parameters ---------- cda : CData, the connectome data to add to the connectome, the CData name have to be unique. """ # Check if the name is set if cda.name is None or cda.name == '': raise Exception('A name is required.') # Check if the name is unique if not self.is_name_unique(cda.name): raise Exception('The name is not unique.') self.connectome_data.append(cda) # update sources for correct storing if op.exists(cda.src): cda.tmpsrc = cda.src cda.src = cda.get_unique_relpath() # need to update the reference to the parent connectome file self._update_parent_reference() def add_connectome_script(self, cscri): """Add the given CScript to the connectome object. Parameters ---------- cscri : CScript, the connectome script to add to the connectome, the CScript name have to be unique. """ # Check if the name is set if cscri.name is None or cscri.name == '': raise Exception('A name is required.') # Check if the name is unique if not self.is_name_unique(cscri.name): raise Exception('The name is not unique.') self.connectome_script.append(cscri) # update sources for correct storing if op.exists(cscri.src): cscri.tmpsrc = cscri.src cscri.src = cscri.get_unique_relpath() # need to update the reference to the parent connectome file self._update_parent_reference() # Print out a summary of the connectome def print_summary(self): """Print a summary of the connectome""" # Intro s = '#'*60 s+= '\n# connectome object' # Statistics s+= '\n#\n# Statistics\n# '+'='*56+' #' s+= '\n# '+str(len(self.get_connectome_network()))+' CNetwork' s+= '\n# '+str(len(self.get_connectome_volume()))+' CVolume' s+= '\n# '+str(len(self.get_connectome_track()))+' CTrack' s+= '\n# '+str(len(self.get_connectome_surface()))+' CSurface' s+= '\n# '+str(len(self.get_connectome_timeseries()))+' CTimeserie' s+= '\n# '+str(len(self.get_connectome_script()))+' CScript' s+= '\n# '+str(len(self.get_connectome_data()))+' CData' s+= '\n# '+str(len(self.get_connectome_imagestack()))+' CImagestack' # CMetadata s+= '\n#\n# CMetadata\n# '+'='*56+' #' cm = self.get_connectome_meta() s+= '\n# title : '+cm.get_title() if not cm.get_species() is None and isinstance(cm.get_species(), str): s+= '\n# species : '+cm.get_species() if not cm.get_description() is None and isinstance(cm.get_description(), str): s+= '\n# description : '+cm.get_description() if not cm.get_creator() is None and isinstance(cm.get_creator(), str): s+= '\n# creator : '+cm.get_creator() if not cm.get_email() is None and isinstance(cm.get_email(), str): s+= '\n# email : '+cm.get_email() if not cm.get_created() is None and isinstance(cm.get_created(), str): s+= '\n# creation date : '+cm.get_created() if not cm.get_modified() is None and isinstance(cm.get_modified(), str): s+= '\n# modification date : '+cm.get_modified() if not cm.get_generator() is None and isinstance(cm.get_generator(), str): s+= '\n# generator : '+cm.get_generator() if not cm.get_version() is None and isinstance(cm.get_version(), str): s+= '\n# cff version : '+cm.get_version() if not cm.get_license() is None and isinstance(cm.get_license(), str): s+= '\n# license : '+cm.get_license() if not cm.get_rights() is None and isinstance(cm.get_rights(), str): s+= '\n# rights : '+cm.get_rights() if not cm.get_publisher() is None and isinstance(cm.get_publisher(), str): s+= '\n# publisher : '+cm.get_publisher() if not cm.get_references() is None and isinstance(cm.get_references(), str): s+= '\n# references : '+cm.get_references() if not cm.get_relation() is None and isinstance(cm.get_relation(), str): s+= '\n# relation : '+cm.get_relation() # CNetwork if len(self.get_connectome_network()) > 0: s+= '\n#\n# CNetwork\n# '+'='*56+' #' for i in self.get_connectome_network(): s+= i.print_summary(False) # CVolume if len(self.get_connectome_volume()) > 0: s+= '\n#\n# CVolume\n# '+'='*56+' #' for i in self.get_connectome_volume(): s+= i.print_summary(False) # CTrack if len(self.get_connectome_track()) > 0: s+= '\n#\n# CTrack\n# '+'='*56+' #' for i in self.get_connectome_track(): s+= i.print_summary(False) # CSurface if len(self.get_connectome_surface()) > 0: s+= '\n#\n# CSurface\n# '+'='*56+' #' for i in self.get_connectome_surface(): s+= i.print_summary(False) # CTimeserie if len(self.get_connectome_timeseries()) > 0: s+= '\n#\n# CTimeseries\n# '+'='*56+' #' for i in self.get_connectome_timeseries(): s+= i.print_summary(False) # CScript if len(self.get_connectome_script()) > 0: s+= '\n#\n# CScript\n# '+'='*56+' #' for i in self.get_connectome_script(): s+= i.print_summary(False) # CData if len(self.get_connectome_data()) > 0: s+= '\n#\n# CData\n# '+'='*56+' #' for i in self.get_connectome_data(): s+= i.print_summary(False) # CImagestack if len(self.get_connectome_imagestack()) > 0: s+= '\n#\n# CImagestack\n# '+'='*56+' #' for i in self.get_connectome_imagestack(): s+= i.print_summary(False) s+= '\n'+'#'*60 print(s) supermod.connectome.subclass = connectome # end class connectome class CMetadata(supermod.CMetadata): """Specific metadata to the connectome. The name is the name of the connectome. The version and the generator are required and are defined by default.""" def __init__(self, title='myconnectome', generator='cfflib', version="2.0", creator=None, publisher=None, created=None, modified=None, rights=None, license=None, references=None, relation=None, description=None, species=None, email=None, metadata_dictionary=None ): """Creates a connectome metadata object, specific metadata to the connectome object. Parameters ---------- title : string, default: 'myconnectome', the name of this connectome version : string, '2.0', the connectome markup version for this connectome file creator : string, optional , the creator name publisher : string, optional, the publisher/institution created : string, optional, the creation date of this connectome modified : string, optional, the date of important modification to this connectome object license : string, optional, license information rights : string, optional, rights information, such as copyright reference : string, optional, reference relation : string, optional, relation description : string, optional, a text description of the connectome generator : string, 'cfflib', software version/converter this file was generated with email : string, optional, an email of reference (author one) species : string, optional, the specied of the subject metadata_dictionary : dictionary, optional, some metadata informations as a dictionary Notes ----- Most of the metadata fields are defined in the Dublin Core Terms http://dublincore.org/documents/dcmi-terms/ """ super(CMetadata, self).__init__(version, title, creator, publisher, created, modified, rights, license, references, relation, description, generator, species, email, ) if not metadata is None: if not metadata_dictionary is None: self.update_metadata(metadata_dictionary) else: self.metadata = metadata() self.update_metadata({}) def get_metadata_as_dict(self): """Return the metadata as a dictionary""" if not self.metadata is None: return self.metadata.get_tags_as_dictionary() else: return None def update_metadata(self, metadata_dictionary): """Set the metadata with a dictionary""" if self.metadata is None: self.metadata = metadata() self.metadata.set_tags_with_dictionary(metadata_dictionary) def exportChildren(self, outfile, level, namespace_='', name_='CMetadata'): if self.title: namespace_= 'dcterms:' showIndent(outfile, level) outfile.write('<%stitle>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.title).encode(ExternalEncoding), input_name='title'), namespace_)) #self.title.export(outfile, level, namespace_, name_='title', ) if self.creator: namespace_= 'dcterms:' showIndent(outfile, level) outfile.write('<%screator>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.creator).encode(ExternalEncoding), input_name='creator'), namespace_)) #self.creator.export(outfile, level, namespace_, name_='creator', ) if self.publisher: namespace_= 'dcterms:' showIndent(outfile, level) outfile.write('<%spublisher>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.publisher).encode(ExternalEncoding), input_name='publisher'), namespace_)) #self.publisher.export(outfile, level, namespace_, name_='publisher', ) if self.created: namespace_= 'dcterms:' showIndent(outfile, level) outfile.write('<%screated>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.created).encode(ExternalEncoding), input_name='created'), namespace_)) #self.created.export(outfile, level, namespace_, name_='created', ) if self.modified: namespace_= 'dcterms:' showIndent(outfile, level) outfile.write('<%smodified>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.modified).encode(ExternalEncoding), input_name='modified'), namespace_)) #self.modified.export(outfile, level, namespace_, name_='modified', ) if self.rights: namespace_= 'dcterms:' showIndent(outfile, level) outfile.write('<%srights>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.rights).encode(ExternalEncoding), input_name='rights'), namespace_)) #self.rights.export(outfile, level, namespace_, name_='rights') if self.license: namespace_= 'dcterms:' showIndent(outfile, level) outfile.write('<%slicense>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.license).encode(ExternalEncoding), input_name='license'), namespace_)) #self.license.export(outfile, level, namespace_, name_='license') if self.references: namespace_= 'dcterms:' showIndent(outfile, level) outfile.write('<%sreferences>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.references).encode(ExternalEncoding), input_name='references'), namespace_)) #self.references.export(outfile, level, namespace_, name_='references') if self.relation: namespace_= 'dcterms:' showIndent(outfile, level) outfile.write('<%srelation>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.relation).encode(ExternalEncoding), input_name='relation'), namespace_)) #self.relation.export(outfile, level, namespace_, name_='relation') if self.modified: namespace_= 'dcterms:' showIndent(outfile, level) outfile.write('<%smodified>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.modified).encode(ExternalEncoding), input_name='modified'), namespace_)) #self.modified.export(outfile, level, namespace_, name_='modified') if self.description is not None: namespace_= 'dcterms:' showIndent(outfile, level) outfile.write('<%sdescription>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.description).encode(ExternalEncoding), input_name='description'), namespace_)) if self.generator is not None: namespace_ = "cml:" showIndent(outfile, level) outfile.write('<%sgenerator>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.generator).encode(ExternalEncoding), input_name='generator'), namespace_)) if self.species is not None: namespace_ = "cml:" showIndent(outfile, level) outfile.write('<%sspecies>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.species).encode(ExternalEncoding), input_name='species'), namespace_)) if self.email is not None: namespace_ = "cml:" showIndent(outfile, level) outfile.write('<%semail>%s\n' % (namespace_, self.gds_format_string(quote_xml(self.email).encode(ExternalEncoding), input_name='email'), namespace_)) if self.metadata: namespace_ = "cml:" self.metadata.export(outfile, level, namespace_, name_='metadata') supermod.CMetadata.subclass = CMetadata # end class CMetadata class CBaseClass(object): def get_abs_path(self): return op.join(op.dirname(self.parent_cfile.fname), self.src) def save(self): """ Save a loaded connectome object to a temporary file, return the path """ rval = save_data(self) if not rval == '': self.tmpsrc = rval print "Updated storage path of file: %s" % rval else: print 'There is nothing to save.' # Metadata def load(self, custom_loader = None): """ Load the element. The loaded object is stored in the data attribute. Parameters ---------- custom_loader : function, default: None Custom loader function that takes connectome element as its first argument. See Also -------- See cfflib.util.load_data for example. """ if not custom_loader is None: self.data = custom_loader(self) else: self.data = load_data(self) def get_metadata_as_dict(self): """Return the metadata as a dictionary""" if not self.metadata is None: return self.metadata.get_tags_as_dictionary() else: return {} def update_metadata(self, metadata_dictionary): """Set the metadata with a dictionary""" if self.metadata is None: self.metadata = metadata() self.metadata.set_tags_with_dictionary(metadata_dictionary) # Print out a summary of the CObject def print_summary(self, printer=True): """Print a summary of the CObject""" # CObject class name s = '' if printer: s+= '# '+'='*56+' #'+'\n# '+self.__class__.__name__+'\n# '+'='*56+' #' # Attributes s+= '\n# name : ' +self.get_name() if not self.get_description() is None: s+= '\n# description : '+self.get_description() if hasattr(self, 'dtype') and not self.get_dtype() is None: s+= '\n# dtype : '+self.get_dtype() if not self.get_fileformat() is None: s+= '\n# fileformat : '+self.get_fileformat() if not self.get_src() is None: s+= '\n# src : '+self.get_src() if not self.get_metadata_as_dict is None and not len(self.get_metadata_as_dict()) == 0: s+= '\n# metadata: ' m = self.get_metadata_as_dict() for i in m.keys(): s+= '\n#\t '+i+' : '+m[i] s+= '\n# '+'-'*56+' #' # Print or return if printer: print s else: return s def __eq__(self, y): return ( self.__class__.__name__ == y.__class__.__name__ and self.get_name() == y.get_name() and self.get_dtype() == y.get_dtype() and self.get_description() == y.get_description() and self.get_fileformat() == y.get_fileformat() and self.get_src() == y.get_src() and self.get_metadata_as_dict() == y.get_metadata_as_dict() ) class CNetwork(supermod.CNetwork, CBaseClass): """A connectome network object""" def __init__(self, name='mynetwork', dtype='AttributeNetwork', fileformat='GraphML', src=None, description=None, metadata=None): """Create a new CNetwork object. Parameters ---------- name : 'mynetwork', the network unique name dtype : 'AttributeNetwork', the data type of the network. It could be: "AttributeNetwork", "DynamicNetwork", "HierarchicalNetwork" or "Other". fileformat : 'GraphML', the fileformat of the network. It could be: "GEXF", "GraphML", "NXGPickle" or "Other". src : string, optional, the source file of the network description : plaintext, optional, a text description of the CNetwork metadata : dictionary, optional, Metadata dictionary relative to the network See also -------- Metadata, connectome """ super(CNetwork, self).__init__(src, dtype, name, fileformat, metadata, description, ) if not src is None and os.path.exists(src): print "File given by src exists. Create a new relative path." self.tmpsrc = src self.src = self.get_unique_relpath() def get_file_ending(self): """ Return the file name ending """ if self.fileformat == 'GraphML': fend = '.graphml' elif self.fileformat == 'GEXF': fend = '.gexf' elif self.fileformat == 'NXGPickle': fend = '.gpickle' elif self.fileformat == 'Other': fend = '' return fend def get_unique_relpath(self): """ Return a unique relative path for this element """ return unify('CNetwork', self.name + self.get_file_ending()) @classmethod def create_from_graphml(cls, name, ml_filename): """ Return a CNetwork object from a given ml_filename pointint to a GraphML file in your file system (not loading the file) Parameters ---------- name : string, unique name of the CNetwork ml_filename : string, filename of the GraphML to load Returns ------- cnet : CNetwork """ # Check if the GraphML file exists if not os.path.exists(ml_filename): raise Exception('Input file not found') cnet = CNetwork(name) cnet.tmpsrc = op.abspath(ml_filename) cnet.fileformat = "GraphML" cnet.dtype = "AttributeNetwork" #cnet.data = nx.read_graphml(ml_filename) cnet.src = cnet.get_unique_relpath() return cnet def set_with_nxgraph(self, nxGraph, name=None, dtype='AttributeNetwork', fileformat='NXGPickle'): """Set the current CNetwork with the given NetworkX graph. Set the fileformat to NXGPickle and the dtype to AttributeNetwork. Add the NetworkX object to data. Parameters ---------- nxGraph : NetworkX graph object, the NetworkX graph object to add to the current CNetwork. name : string, optional, the name of the network, it is optional when the CNetwork already have a name dtype : AttributeNetwork, the data type of this CNetwork fileformat : NXGPickle, the fileformat of the file of this CNetwork See also -------- NetworkX, CNetwork """ if (self.name is None or self.name == '') and (name is None or name == ''): raise Exception('A name has to be given.') if name is not None and name != '': self.name == name self.dtype = dtype self.fileformat = fileformat self.data = nxGraph import tempfile # create a path to the temporary pickled file self.tmpsrc = tempfile.mkstemp(suffix = '.gpickle')[1] self.src = self.get_unique_relpath() # save the object for the first time self.save() supermod.CNetwork.subclass = CNetwork # end class CNetwork class CSurface(supermod.CSurface, CBaseClass): """A connectome surface object""" def __init__(self, name='mysurface', dtype='Surfaceset', fileformat='Gifti', src=None, description=None, metadata=None): """ Create a new CSurface object. Parameters ---------- name : 'mysurface' the unique surface name dtype : 'Labeling', 'Surfaceset', 'Surfaceset+Labeling', 'Other' the type of data that the Gifti file contain fileformat : 'Gifti', the fileformat of the surface, use default 'Gifti' to use the only supported Gifti format by cfflib, use 'Other' for others format and custom support. src : string, optional, the source file of the surface description : string, optional, a description of the CSurface metadata : Metadata, optional, more metadata relative to the surface See also -------- Metadata, connectome """ super(CSurface, self).__init__(src, dtype, name, fileformat, description, metadata, ) if not src is None and os.path.exists(src): print "File given by src exists. Create a new relative path." self.tmpsrc = src self.src = self.get_unique_relpath() def get_file_ending(self): """ Return the file name ending """ if self.fileformat == 'Gifti': fend = '.gii' elif self.fileformat == 'Other': fend = '' return fend def get_unique_relpath(self): """ Return a unique relative path for this element """ return unify('CSurface', self.name + self.get_file_ending()) # Create from a Gifti file @classmethod def create_from_gifti(cls, name, gii_filename, dtype='label'): """ Return a CSurface object from a given gii_filename pointint to a Gifti file in your file system Parameters ---------- name : string, unique name of the CSurface gii_filename : string, filename of the Gifti to load dtype : 'label', the type of data the Gifti file contains Returns ------- csurf : CSurface """ csurf = CSurface(name) csurf.tmpsrc = op.abspath(gii_filename) csurf.fileformat = "Gifti" csurf.dtype = dtype #import nibabel.gifti as nig #csurf.data = nig.read(gii_filename) csurf.src = csurf.get_unique_relpath() return csurf supermod.CSurface.subclass = CSurface # end class CSurface class CVolume(supermod.CVolume, CBaseClass): """Connectome volume object""" def __init__(self, name='myvolume', dtype=None, fileformat='Nifti1', src=None, description=None, metadata=None): """Create a new CVolume object. Parameters ---------- name : 'myvolume', the unique name of the volume dtype : string, optional, the data type of the volume. It could be: 'T1-weighted', 'T2-weighted', 'PD-weighted', 'fMRI', 'MD', 'FA', 'LD', 'TD', 'FLAIR', 'MRA' or 'MRS depending on your dataset. fileformat : 'Nifti1', the fileformat of the volume. It could be: 'Nifti1', 'Nifti1GZ', 'Nifti2' (not supported yet) src : string, optional, the source file of the volume description : string, optional, A description according to the format attribute syntax. metadata : Metadata, optional, More metadata relative to the volume See also -------- Metadata, connectome """ super(CVolume, self).__init__(src, dtype, name, fileformat, description, metadata, ) if not src is None and os.path.exists(src): print "File given by src exists. Create a new relative path." self.tmpsrc = src self.src = self.get_unique_relpath() def get_file_ending(self): """ Return the file name ending """ if self.fileformat == 'Nifti1': fend = '.nii' elif self.fileformat == 'Nifti1GZ': fend = '.nii.gz' else: fend = '' return fend def get_unique_relpath(self): """ Return a unique relative path for this element """ return unify('CVolume', self.name + self.get_file_ending()) # Create a CVolume from a Nifti1 file @classmethod def create_from_nifti(cls, name, nii_filename, dtype=None): """ Return a CVolume object from a given Nifti1 filename in your file system Parameters ---------- name : string, the unique name of the CVolume nii_filename : string, the filename of the Nifti1 file to load dtype : string, optional, the datatype of the new CVolume Returns ------- cvol : CVolume """ cvol = CVolume(name) cvol.tmpsrc = op.abspath(nii_filename) if nii_filename.endswith('.gz'): cvol.fileformat = "Nifti1GZ" else: cvol.fileformat = "Nifti1" cvol.dtype = dtype #cvol.data = ni.load(nii_filename) cvol.src = cvol.get_unique_relpath() return cvol supermod.CVolume.subclass = CVolume # end class CVolume class CTrack(supermod.CTrack, CBaseClass): """ Create a new CTrack object. Parameters ---------- name : string, optional the track name src : string, optional, the source file of the track fileformat : string, optional, the fileformat of the track description : description, optional, a description (key, value) of the CTrack metadata : Metadata, optional, Metadata object relative to the track Examples -------- Empty >>> myCVol1 = CTrack() Create an empty CTrack object See also -------- description, Metadata, connectome """ def __init__(self, name=None, src=None, fileformat='TrackVis', dtype = None, description=None, metadata=None): super(CTrack, self).__init__(src, dtype, name, fileformat, description, metadata, ) if not src is None and os.path.exists(src): print "File given by src exists. Create a new relative path." self.tmpsrc = src self.src = self.get_unique_relpath() def get_file_ending(self): """ Return the file name ending """ if self.fileformat == 'TrackVis': fend = '.trk' elif self.fileformat == 'Other': fend = '' return fend def get_unique_relpath(self): """ Return a unique relative path for this element """ return unify('CTrack', self.name + self.get_file_ending()) def get_fibers_as_numpy(self): """ Returns fiber array """ if hasattr(self, 'data') and not self.data is None and self.get_fileformat() == "TrackVis": from numpy import object, array fiblist, hdr = self.data noscalarfiblist = [f[0] for f in fiblist] return array(noscalarfiblist, dtype = object) else: return None supermod.CTrack.subclass = CTrack # end class CTrack class CTimeseries(supermod.CTimeseries, CBaseClass): def __init__(self, name=None, src=None, dtype=None, fileformat='HDF5', description=None, metadata=None): super(CTimeseries, self).__init__(src, dtype, name, fileformat, description, metadata, ) if not src is None and os.path.exists(src): print "File given by src exists. Create a new relative path." self.tmpsrc = src self.src = self.get_unique_relpath() def get_file_ending(self): """ Return the file name ending """ if self.fileformat == 'HDF5': fend = '.h5' elif self.fileformat == 'NumPy': fend = '.npy' elif self.fileformat == 'Other': fend = '' return fend def get_unique_relpath(self): """ Return a unique relative path for this element """ return unify('CTimeserie', self.name + self.get_file_ending()) supermod.CTimeseries.subclass = CTimeseries # end class CTimeserie class CData(supermod.CData, CBaseClass): def __init__(self, name=None, src=None, dtype=None, fileformat=None, description=None, metadata=None): super(CData, self).__init__(src, dtype, name, fileformat, description, metadata, ) if not src is None and os.path.exists(src): print "File given by src exists. Create a new relative path." self.tmpsrc = src self.src = self.get_unique_relpath() def get_file_ending(self): """ Return the file name ending """ if self.fileformat == 'NumPy': fend = '.npy' if self.fileformat == 'HDF5': fend = '.h5' if self.fileformat == 'XML': fend = '.xml' if self.fileformat == 'JSON': fend = '.json' if self.fileformat == 'Pickle': fend = '.pkl' if self.fileformat == 'CSV': fend = '.csv' if self.fileformat == 'TXT': fend = '.txt' elif self.fileformat == 'Other': fend = '' return fend def get_unique_relpath(self): """ Return a unique relative path for this element """ return unify('CData', self.name + self.get_file_ending()) supermod.CData.subclass = CData # end class CData class CScript(supermod.CScript, CBaseClass): def __init__(self, name=None, src=None, dtype='Python', fileformat='UTF-8', description=None, metadata=None): super(CScript, self).__init__(src, dtype, name, fileformat, description, metadata, ) if not src is None and os.path.exists(src): print "File given by src exists. Create a new relative path." self.tmpsrc = src self.src = self.get_unique_relpath() def get_file_ending(self): """ Return the file name ending """ if self.dtype == 'Python': fend = '.py' elif self.dtype == 'Bash': fend = '.sh' elif self.dtype == 'Matlab': fend = '.m' else: fend = '.txt' return fend def get_unique_relpath(self): """ Return a unique relative path for this element """ return unify('CScript', self.name + self.get_file_ending()) @classmethod def create_from_file(cls, name, filename, dtype= 'Python', fileformat = 'UTF-8'): """ Return a CScript object from a given script/text file Parameters ---------- name : string, the unique name of the CScript filename : string, the absolute to the filename of the script/text file dtype : string, optional, the datatype of the new CScript fileformat : string, optional the file format of the file, usually UTF-8 Returns ------- cscr : CScript """ cscr = CScript(name=name) cscr.tmpsrc = op.abspath(filename) cscr.fileformat = fileformat cscr.dtype = dtype # not load it by default! # cscr.data = open(filename, 'r') cscr.src = cscr.get_unique_relpath() return cscr supermod.CScript.subclass = CScript # end class CScript class CImagestack(supermod.CImagestack, CBaseClass): def __init__(self, name=None, src=None, fileformat=None, pattern=None, description=None, metadata=None): super(CImagestack, self).__init__(src, fileformat, name, pattern, description, metadata, ) def save(self): """ Save a loaded connectome object to a temporary file, return the path """ raise NotImplementedError('Saving CImagestack not implemented yet.') def get_unique_relpath(self): """ Return a unique relative path for this element """ return unify('CImagestack', self.name + '/') supermod.CImagestack.subclass = CImagestack # end class CImagestack # # #class description(supermod.description): # def __init__(self, valueOf_=None): # super(description, self).__init__(valueOf_, ) # def export(self, outfile, level, namespace_='', name_='description', namespacedef_=''): # super(description, self).export(outfile, level, namespace_='dcterms:', name_='description', namespacedef_='') #supermod.description.subclass = description ## end class description # # #class title(supermod.title): # def __init__(self, valueOf_=None): # super(title, self).__init__(valueOf_, ) # def export(self, outfile, level, namespace_='', name_='title', namespacedef_=''): # super(title, self).export(outfile, level, namespace_='dcterms:', name_='title', namespacedef_='') # #supermod.title.subclass = title ## end class title # # #class creator(supermod.creator): # def __init__(self, valueOf_=None): # super(creator, self).__init__(valueOf_, ) # def export(self, outfile, level, namespace_='', name_='creator', namespacedef_=''): # super(creator, self).export(outfile, level, namespace_='dcterms:', name_='creator', namespacedef_='') #supermod.creator.subclass = creator ## end class creator # #class publisher(supermod.publisher): # def __init__(self, valueOf_=None): # super(publisher, self).__init__(valueOf_, ) # def export(self, outfile, level, namespace_='', name_='publisher', namespacedef_=''): # super(publisher, self).export(outfile, level, namespace_='dcterms:', name_='publisher', namespacedef_='') #supermod.publisher.subclass = publisher ## end class publisher # #class relation(supermod.relation): # def __init__(self, valueOf_=None): # super(relation, self).__init__(valueOf_, ) # def export(self, outfile, level, namespace_='', name_='relation', namespacedef_=''): # super(relation, self).export(outfile, level, namespace_='dcterms:', name_='relation', namespacedef_='') #supermod.relation.subclass = relation ## end class relation # #class rights(supermod.rights): # def __init__(self, valueOf_=None): # super(rights, self).__init__(valueOf_, ) # def export(self, outfile, level, namespace_='', name_='rights', namespacedef_=''): # super(rights, self).export(outfile, level, namespace_='dcterms:', name_='rights', namespacedef_='') #supermod.rights.subclass = rights ## end class rights # #class created(supermod.created): # def __init__(self, valueOf_=None): # super(created, self).__init__(valueOf_, ) # def export(self, outfile, level, namespace_='', name_='created', namespacedef_=''): # super(created, self).export(outfile, level, namespace_='dcterms:', name_='created', namespacedef_='') #supermod.created.subclass = created ## end class created # #class modified(supermod.modified): # def __init__(self, valueOf_=None): # super(modified, self).__init__(valueOf_, ) # def export(self, outfile, level, namespace_='', name_='modified', namespacedef_=''): # super(modified, self).export(outfile, level, namespace_='dcterms:', name_='modified', namespacedef_='') #supermod.modified.subclass = modified ## end class modified # # #class license(supermod.license): # def __init__(self, valueOf_=None): # super(license, self).__init__(valueOf_, ) # def export(self, outfile, level, namespace_='', name_='license', namespacedef_=''): # super(license, self).export(outfile, level, namespace_='dcterms:', name_='license', namespacedef_='') #supermod.license.subclass = license ## end class license # #class references(supermod.references): # def __init__(self, valueOf_=None): # super(references, self).__init__(valueOf_, ) # def export(self, outfile, level, namespace_='', name_='references', namespacedef_=''): # super(references, self).export(outfile, level, namespace_='dcterms:', name_='references', namespacedef_='') #supermod.references.subclass = references ## end class references def get_root_tag(node): tag = supermod.Tag_pattern_.match(node.tag).groups()[-1] rootClass = None if hasattr(supermod, tag): rootClass = getattr(supermod, tag) return tag, rootClass def parse(inFilename): doc = parsexml_(inFilename) rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: rootTag = 'property' rootClass = supermod.property rootObj = rootClass.factory() rootObj.build(rootNode) # Enable Python to collect the space used by the DOM. doc = None sys.stdout.write('\n') rootObj.export(sys.stdout, 0, name_=rootTag, namespacedef_='xmlns:cml="http://www.connectomics.org/cff-2" xmlns:dcterms="http://purl.org/dc/terms/"') doc = None return rootObj def parseString(inString): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: rootTag = 'property' rootClass = supermod.property rootObj = rootClass.factory() rootObj.build(rootNode) # Enable Python to collect the space used by the DOM. doc = None # sys.stdout.write('\n') # rootObj.export(sys.stdout, 0, name_=rootTag, # namespacedef_='xmlns="http://www.connectomics.org/cff-2" xmlns:dcterms="http://purl.org/dc/terms/"') # update parent references return rootObj def parseLiteral(inFilename): doc = parsexml_(inFilename) rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: rootTag = 'property' rootClass = supermod.property rootObj = rootClass.factory() rootObj.build(rootNode) # Enable Python to collect the space used by the DOM. doc = None sys.stdout.write('#from cff import *\n\n') sys.stdout.write('import cff as model_\n\n') sys.stdout.write('rootObj = model_.property(\n') rootObj.exportLiteral(sys.stdout, 0, name_="property") sys.stdout.write(')\n') return rootObj USAGE_TEXT = """ Usage: python ???.py """ def usage(): print USAGE_TEXT sys.exit(1) def main(): args = sys.argv[1:] if len(args) != 1: usage() infilename = args[0] root = parse(infilename) if __name__ == '__main__': #import pdb; pdb.set_trace() main() LTS5-cfflib-9a123ae/cfflib/info.py000066400000000000000000000004721156222202000166200ustar00rootroot00000000000000""" This file contains cmp package information """ _version_major = 2 _version_minor = 0 _version_micro = 3 _version_extra = '' __version__ = "%s.%s.%s%s" % (_version_major, _version_minor, _version_micro, _version_extra) LTS5-cfflib-9a123ae/cfflib/loadsave.py000077500000000000000000000202641156222202000174670ustar00rootroot00000000000000""" Routines to load, save a connectome files """ #import cfflib_modified as cfflib #import cfflib import cfflib2 as cf import os.path as op from zipfile import ZipFile, ZIP_DEFLATED def load(filename): """ Load a connectome file either from meta.cml (default) or from a zipped .cff file Parameter --------- filename : string File to load, either a connectome markup file with ending .cml or a zipped connectome file with ending .cff Notes ----- By the file name ending, the appropriate load function is selected. They can be either .cml or .cff for unzipped or zipped connectome files respectively. """ if isinstance(filename, basestring): # check if file exists from os.path import isfile, abspath if isfile(filename): if filename.endswith('.cff'): fname = abspath(filename) return _load_from_cff(fname) elif filename.endswith('.cml'): fname = abspath(filename) return _load_from_meta_cml(fname) else: raise RuntimeError('%s must end with either .cml or .cff' % filename) else: raise RuntimeError('%s seems not to be a valid file string' % filename) else: raise RuntimeError('%s seems not to be a valid file string' % filename) def _load_from_meta_cml(filename): """ Load connectome file from a meta.cml file. """ with open(filename, 'r') as metacml: metastr = metacml.read() connectome = cf.parseString(metastr) # update references connectome._update_parent_reference() connectome.iszip = False connectome.fname = op.abspath(filename) # check if names are unique! connectome.check_names_unique() return connectome def _load_from_url(url, to_filename): """ First downloads the connectome file to a file to_filename load it and return the reference to the connectome object Not tested. """ from util import download download(url, to_filename) return _load_from_cff(to_filename) def _load_from_cff(filename, *args, **kwargs): """ Load connectome file given filename Returns ------- connectome : ``Connectome`` Connectome Instance """ # XXX: take care to have allowZip64 = True (but not supported by unix zip/unzip, same for ubuntu?) ? _zipfile = ZipFile(filename, 'a', ZIP_DEFLATED) try: metadata_string = _zipfile.read('meta.cml') except: # XXX: what is the correct exception for read error? raise RuntimeError('Can not extract meta.cml from connectome file.') # create connectome instance connectome = cf.parseString(metadata_string) # update references connectome._update_parent_reference() # add additional attributes connectome.src = filename # it is from the zip file connectome.iszip = True # if it is a zip file, we can assume that the src paths are given relatively connectome._zipfile = _zipfile # check if all referenced container elements exist in the archive connectome.check_file_in_cff() # check if names are unique! connectome.check_names_unique() return connectome def save_to_meta_cml(connectome, filename = 'meta.cml'): """ Stores a Connectome Markup File to filename """ if connectome.get_connectome_meta() == None: print "ERROR - there is no connectome metadata in this connectome" return elif connectome.get_connectome_meta().title == None or connectome.get_connectome_meta().title == '': print "ERROR - the connectome metadata have to contain a unique title" return f = open(filename, 'w') f.write('\n') connectome.export(f, 0, namespacedef_='xmlns="http://www.connectomics.org/cff-2" xmlns:cml="http://www.connectomics.org/cff-2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dcterms="http://purl.org/dc/terms/" xsi:schemaLocation="http://www.connectomics.org/cff-2 connectome.xsd"') f.close() def save_to_cff(connectome, filename): """ Save connectome file to new .cff file on disk """ if connectome.get_connectome_meta() == None: print "ERROR - there is no connectome metadata in this connectome" return elif connectome.get_connectome_meta().title == None or connectome.get_connectome_meta().title == '': print "ERROR - the connectome metadata have to contain a unique title" return _newzip = ZipFile(filename, 'w', ZIP_DEFLATED, allowZip64 = True) allcobj = connectome.get_all() # tmpdir import tempfile import os tmpdir = tempfile.gettempdir() # check if names are unique! connectome.check_names_unique() for ele in allcobj: print "----" print "Storing element: ", str(ele) # discover the relative path to use for the save if hasattr(ele, 'src'): if ele.src == '': wt = ele.get_unique_relpath() print "Created a unique path for element %s: %s" % (str(ele), wt) else: wt = ele.src print "Used .src attribute for relative path: %s" % wt else: ele.src = ele.get_unique_relpath() wt = ele.src print "Element has no .src attribute. Create it and set it to %s" % ele.src if not hasattr(ele, 'data'): # Add if iszip is undefined # if not hasattr(connectome, 'iszip'): # connectome.iszip = False if connectome.iszip: # extract zip content and add it to new zipfile if not wt in connectome._zipfile.namelist(): msg = """There exists no file %s in the connectome file you want to save to "Please create .data and set the attributes right "according to the documentation""" raise Exception(msg) else: ftmp = connectome._zipfile.extract(wt) else: # connectome was not created from a zip # but for example in an IPython session # if now fname if not hasattr(connectome, 'fname'): connectome.fname = op.abspath(filename) if hasattr(ele, 'tmpsrc'): try: ele.save() except: pass ftmp = ele.tmpsrc else: # save the element try: ele.save() except: # e.g. there is nothing to save exception ftmp = op.join(op.dirname(connectome.fname), wt) # use the saved location # ftmp = ele.tmpsrc # create path coming from filesystem #ftmp = op.join(op.dirname(connectome.fname), wt) if not op.exists(ftmp): msg = """There exists no file %s for element %s. "Cannot save connectome file. Please update the element or bug report if it should work.""" % (ftmp, str(ele)) raise Exception(msg) _newzip.write(ftmp, wt) else: # save content to a temporary file according to the objects specs ele.save() # get the path ftmp = ele.tmpsrc _newzip.write(ftmp, wt) if connectome.iszip: # remove file os.remove(ftmp) # update ele.src ele.src = wt # export and store meta.cml mpth = op.join(tmpdir, 'meta.cml') f = open(mpth, 'w') f.write(connectome.to_xml()) f.close() _newzip.write(mpth, 'meta.cml') os.remove(mpth) _newzip.close() print "New connectome file written to %s " % op.abspath(filename) LTS5-cfflib-9a123ae/cfflib/schema/000077500000000000000000000000001156222202000165505ustar00rootroot00000000000000LTS5-cfflib-9a123ae/cfflib/schema/connectome.xsd000066400000000000000000000725301156222202000214310ustar00rootroot00000000000000 Connectome File Markup, Version 2.0 Created 17-01-2011 by Stephan Gerhard (connectome@unidesign.ch) Updated 9-03-2011 by Stephan Gerhard (connectome@unidesign.ch) A tag element contains a key attribute and the value The key to be used later in the dictionary An odML section containing properties Connectome File Metadata A list of networks. They can reference objects of type CVolume, CSurface, CTrack, CTimeseries, CImagestack and/or CData. A list of surfaces. Surface sources are in Gifti format, and can define labels. A list of volumes. Volume sources are in Nifti1 format, and can also define segmentations. A list of track files. Track sources are in TrackVis format, and can also contain data. A list of timeserie files. The timeseries files are defined using the HDF5 format. A list of data files. Data files can store arbitrary data. A list of scripts. Scripts are represented by executable text files. A list of image stacks. Image stacks represent an enumerated list of 2d images. Title of the connectome resource Author(s) of the data Institution/Organisation the data was generated or the authors are associated with When was the file created? YYYY-MM-DD When was the file modified? YYYY-MM-DD Information about rights held in and over the resource such as copyrights. The license of the data References to the paper where the data has been published. A related resource. References to URL with further information or download location. A connectome file wide description software version/converter this file was generated with species name according to the internationally used binomial nomenclature. E-Mail for contact related to the dataset Any metadata that does not fit the predefined tags can be accomodated using the flexible schema of a key-value pair. Defines the version of the Connectome Schema Definition the current Connectome File is compatible with. Should be 2.0 Often, there is particular metadata for networks one wants to use for later processing. For example one can annotate networks that represent subjects with information about being member of the control or test group. The very flexible schema of a dictionary (key/value pairs) is adopted to represent any kind of metadata. The values are strings. A description according to the format attribute syntax. The short name of the network The path to the file according to location attribute Is the network stored it "GEXF" or "GraphML" format, "NXGPickle" as NetworkX pickled object, or "Other" format? - dtype="AttributeNetwork" A network with arbitrary number of attributes for nodes and edges. - dtype="DynamicNetwork" Network with either with lifespan attributes for nodes and edges (See GEXF) or timeseries on nodes and edges. - dtype="HierarchicalNetwork" Network with hierarchical structure. - dtype="StructuralNetwork" A structural network e.g. derived from Diffusion MRI - dtype="FunctionalNetwork" Networks derived from functional measures such as EEG/MEG/fMRI/PET etc. - dtype="EffectiveNetwork" Networks representing effective connectivity - dtype="Other" Other kind of network. A description according to the format attribute syntax. More metadata Descriptive name of the surface. The path to the file according to location attribute Set to "gifti" to use the only supported Gifti format by cfflib. See http://www.nitrc.org/frs/download.php/158/gifti.xsd for schema information Use "Other" for other formats with custom IO Handling What type of surface does the Gifti file contain: - type="Labeling" The Gifti file contains surface labels. This file can be referenced in connectome-network with either the name attribute or in addition to another surface defined by name and using the labelname attribute and matching labelid. If referenced in such a way, the networks' nodes attribute dn_intensityvalue value may match the label array integers, thereby relating a network node to a surface patch (a region of interest defined on the surface). See also example datasets. - type="Surfaceset" The Gifti file contains a set of surfaces where the metadata tag AnatomicalStructurePrimary match. Individual elements of the set are distinguished by the metadta tag AnatomicalStructureSecondary. The Gifti file contains information about the coordinate system used. - type="Surfaceset+Labeling" If the Gifti file contains data as described for both surfaceset and label above. - type="Other" Any other kind of data storable in a Gifti file. A description according to the format attribute syntax. More metadata Name of the volume. The path to the file according to location attribute Set to "Nifti1" to use the only supported Nifti format. This works also for compressed files with name ending .nii.gz The Nifti file contains information about the coordinate system used. Set type of volume the Nifti file contains: - type="Segmentation" The Nifti file contains a single volume where the voxel values are integers, representing a segmented Region of Interest. If this volume is referenced by a connectome-network, its nodes dn_intensityvalue attribute may match these integer values. Such a segmentation volume can referenced in a connectome-volume by the segmentationname attribute in addition to another, e.g. T1-weighted volume which is referenced by the name attribute. See also example datasets. - type="T1-weighted" The Nifti file contains a T1-weighted volume. - type="T2-weighted" The Nifti file contains a T2-weighted volume. - type="PD-weighted" The voxel values represent a proton-density weighted signal. - type="fMRI" The Nifti file contains functional MRI time series data. - type="Probabilitymap" Voxel values are in the range [0,1]. Can stand for tissue probability maps. - type="MD" Diffusion-related signal. Stands for mean diffusivity. - type="FA" Diffusion-related signal. Stands for fractional anisotropy. - type="LD" Diffusion-related signal. Stands for longitudinal diffusivity. - type="TD" Diffusion-related signal. Stands for transversal diffusivity. - type="FLAIR" Stands for Fluid attenuated inversion recovery - type="MRA" Stands for Magnetic resonance angiography - type="MRS" Stands for Magnetic resonance spectroscopy A description according to the format attribute syntax. More metadata Name of the track file. The path to the file according to location attribute Set to "TrackVis" (default) to use the only supported TrackVis file format. The TrackVis file format allows to store any number of additional numerical data on the individual fibers. A description according to the format attribute syntax. More metadata Name of the timeseries. The path to the file according to location attribute Set to "HDF5" (default) to use the only supported Hierarchical Data File format. The HDF5 allows to store any number of time series or other large homogeneous data. A description according to the format attribute syntax. More metadata Name of the data file The path to the file according to location attribute Use one of 'NumPy', 'HDF5', 'XML', 'Other' A description according to the format attribute syntax. More metadata Name of the script file The path to the file according to location attribute What kind of script. Use one of "Python" (default), "Bash", "Matlab", or "Other". A description according to the format attribute syntax. More metadata. Following keys are proposed to position the image stack sensibly in 3D. location : x,y,z The location of the left-bottom pixel of the first stack in the image stack orientation_x : x,y,z Unit length vector pointing in the positive x direction orientation_y : x,y,z Unit length vector pointing in the positive y direction Should be orthogonal to orientation_x orientation_z : x,y,z Unit length vector pointing in the positive z direction Should be orthogonal to orientation_x and orientation_y coordsystem : "RAS" "RAS" means for x-axes: left-right, y-axes: anterior-posterior, z-axes: superior-inferior. Right, Anterior, Posterior denotes the positive axes direction. pixelsize : x,y,z The actual extent of the pixel in the three dimensional euclidean metric space given in nanometer "nm", micrometer "um" or milimeter "mm" Example: 1 mm, 1 mm, 2 mm Name of the image stack The path to the enumerated files according to location attribute The file name pattern that may contain simple shell-style wildcards a la fnmatch. Use one of 'PNG', 'JPG', 'TIFF', 'Other' LTS5-cfflib-9a123ae/cfflib/schema/connectome_validates.xsd000066400000000000000000000742471156222202000234740ustar00rootroot00000000000000 Connectome File Markup, Version 2.0 Created 17-01-2011 by Stephan Gerhard (connectome@unidesign.ch) Updated 9-03-2011 by Stephan Gerhard Updated 18-04-2011 by Stephan Gerhard (commenting out dcterms rights and relation because of substitutionGroup problem) A tag element contains a key attribute and the value The key to be used later in the dictionary An odML section containing properties Connectome File Metadata A list of networks. They can reference objects of type CVolume, CSurface, CTrack, CTimeseries, CImagestack and/or CData. A list of surfaces. Surface sources are in Gifti format, and can define labels. A list of volumes. Volume sources are in Nifti1 format, and can also define segmentations. A list of track files. Track sources are in TrackVis format, and can also contain data. A list of timeserie files. The timeseries files are defined using the HDF5 format. A list of data files. Data files can store arbitrary data. A list of scripts. Scripts are represented by executable text files. A list of image stacks. Image stacks represent an enumerated list of 2d images. Title of the connectome resource Author(s) of the data Institution/Organisation the data was generated or the authors are associated with When was the file created? YYYY-MM-DD When was the file modified? YYYY-MM-DD The license of the data References to the paper where the data has been published. A connectome file wide description software version/converter this file was generated with species name according to the internationally used binomial nomenclature. E-Mail for contact related to the dataset Any metadata that does not fit the predefined tags can be accomodated using the flexible schema of a key-value pair. Defines the version of the Connectome Schema Definition the current Connectome File is compatible with. Should be 2.0 Often, there is particular metadata for networks one wants to use for later processing. For example one can annotate networks that represent subjects with information about being member of the control or test group. The very flexible schema of a dictionary (key/value pairs) is adopted to represent any kind of metadata. The values are strings. A description according to the format attribute syntax. The short name of the network The path to the file according to location attribute Is the network stored it "GEXF" or "GraphML" format, "NXGPickle" as NetworkX pickled object, or "Other" format? - dtype="AttributeNetwork" A network with arbitrary number of attributes for nodes and edges. - dtype="DynamicNetwork" Network with either with lifespan attributes for nodes and edges (See GEXF) or timeseries on nodes and edges. - dtype="HierarchicalNetwork" Network with hierarchical structure. - dtype="StructuralNetwork" A structural network e.g. derived from Diffusion MRI - dtype="FunctionalNetwork" Networks derived from functional measures such as EEG/MEG/fMRI/PET etc. - dtype="EffectiveNetwork" Networks representing effective connectivity - dtype="Other" Other kind of network. A description according to the format attribute syntax. More metadata Descriptive name of the surface. The path to the file according to location attribute Set to "gifti" to use the only supported Gifti format by cfflib. See http://www.nitrc.org/frs/download.php/158/gifti.xsd for schema information Use "Other" for other formats with custom IO Handling What type of surface does the Gifti file contain: - type="Labeling" The Gifti file contains surface labels. This file can be referenced in connectome-network with either the name attribute or in addition to another surface defined by name and using the labelname attribute and matching labelid. If referenced in such a way, the networks' nodes attribute dn_intensityvalue value may match the label array integers, thereby relating a network node to a surface patch (a region of interest defined on the surface). See also example datasets. - type="Surfaceset" The Gifti file contains a set of surfaces where the metadata tag AnatomicalStructurePrimary match. Individual elements of the set are distinguished by the metadta tag AnatomicalStructureSecondary. The Gifti file contains information about the coordinate system used. - type="Surfaceset+Labeling" If the Gifti file contains data as described for both surfaceset and label above. - type="Other" Any other kind of data storable in a Gifti file. A description according to the format attribute syntax. More metadata Name of the volume. The path to the file according to location attribute Set to "Nifti1" to use the only supported Nifti format. This works also for compressed files with name ending .nii.gz The Nifti file contains information about the coordinate system used. Set type of volume the Nifti file contains: - type="Segmentation" The Nifti file contains a single volume where the voxel values are integers, representing a segmented Region of Interest. If this volume is referenced by a connectome-network, its nodes dn_intensityvalue attribute may match these integer values. Such a segmentation volume can referenced in a connectome-volume by the segmentationname attribute in addition to another, e.g. T1-weighted volume which is referenced by the name attribute. See also example datasets. - type="T1-weighted" The Nifti file contains a T1-weighted volume. - type="T2-weighted" The Nifti file contains a T2-weighted volume. - type="PD-weighted" The voxel values represent a proton-density weighted signal. - type="fMRI" The Nifti file contains functional MRI time series data. - type="Probabilitymap" Voxel values are in the range [0,1]. Can stand for tissue probability maps. - type="MD" Diffusion-related signal. Stands for mean diffusivity. - type="FA" Diffusion-related signal. Stands for fractional anisotropy. - type="LD" Diffusion-related signal. Stands for longitudinal diffusivity. - type="TD" Diffusion-related signal. Stands for transversal diffusivity. - type="FLAIR" Stands for Fluid attenuated inversion recovery - type="MRA" Stands for Magnetic resonance angiography - type="MRS" Stands for Magnetic resonance spectroscopy A description according to the format attribute syntax. More metadata Name of the track file. The path to the file according to location attribute Set to "TrackVis" (default) to use the only supported TrackVis file format. The TrackVis file format allows to store any number of additional numerical data on the individual fibers. A description according to the format attribute syntax. More metadata Name of the timeseries. The path to the file according to location attribute Set to "HDF5" (default) to use the only supported Hierarchical Data File format. The HDF5 allows to store any number of time series or other large homogeneous data. A description according to the format attribute syntax. More metadata Name of the data file The path to the file according to location attribute Use one of 'NumPy', 'HDF5', 'XML', 'Other' A description according to the format attribute syntax. More metadata Name of the script file The path to the file according to location attribute What kind of script. Use one of "Python" (default), "Bash", "Matlab", or "Other". A description according to the format attribute syntax. More metadata. Following keys are proposed to position the image stack sensibly in 3D. location : x,y,z The location of the left-bottom pixel of the first stack in the image stack orientation_x : x,y,z Unit length vector pointing in the positive x direction orientation_y : x,y,z Unit length vector pointing in the positive y direction Should be orthogonal to orientation_x orientation_z : x,y,z Unit length vector pointing in the positive z direction Should be orthogonal to orientation_x and orientation_y coordsystem : "RAS" "RAS" means for x-axes: left-right, y-axes: anterior-posterior, z-axes: superior-inferior. Right, Anterior, Posterior denotes the positive axes direction. pixelsize : x,y,z The actual extent of the pixel in the three dimensional euclidean metric space given in nanometer "nm", micrometer "um" or milimeter "mm" Example: 1 mm, 1 mm, 2 mm Name of the image stack The path to the enumerated files according to location attribute The file name pattern that may contain simple shell-style wildcards a la fnmatch. Use one of 'PNG', 'JPG', 'TIFF', 'Other' LTS5-cfflib-9a123ae/cfflib/tests/000077500000000000000000000000001156222202000164525ustar00rootroot00000000000000LTS5-cfflib-9a123ae/cfflib/tests/__init__.py000066400000000000000000000000001156222202000205510ustar00rootroot00000000000000LTS5-cfflib-9a123ae/cfflib/tests/data/000077500000000000000000000000001156222202000173635ustar00rootroot00000000000000LTS5-cfflib-9a123ae/cfflib/tests/data/CData/000077500000000000000000000000001156222202000203375ustar00rootroot00000000000000LTS5-cfflib-9a123ae/cfflib/tests/data/CData/mydata.npy000066400000000000000000000001341156222202000223440ustar00rootroot00000000000000NUMPYF{'descr': ' <外语>Китайська мова LTS5-cfflib-9a123ae/cfflib/tests/data/CNetwork/000077500000000000000000000000001156222202000211175ustar00rootroot00000000000000LTS5-cfflib-9a123ae/cfflib/tests/data/CNetwork/network_res83.graphml000077500000000000000000000016661156222202000252240ustar00rootroot00000000000000 accRes83_RH 255,43,78 http://www.connectome.ch/wiki/accRes83_RH_(Homo sapiens) Right-Accumbens-area 38 LTS5-cfflib-9a123ae/cfflib/tests/data/CSurface/000077500000000000000000000000001156222202000210565ustar00rootroot00000000000000LTS5-cfflib-9a123ae/cfflib/tests/data/CSurface/labels.gii000066400000000000000000000035221156222202000230140ustar00rootroot00000000000000 ]]> 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 eJxjYAABFQcwxRAJpT0dAA1sAYc= LTS5-cfflib-9a123ae/cfflib/tests/data/CTrack/000077500000000000000000000000001156222202000205325ustar00rootroot00000000000000LTS5-cfflib-9a123ae/cfflib/tests/data/CTrack/fibers.trk000066400000000000000000000314541156222202000225350ustar00rootroot00000000000000TRACKf???LPSLPS?? dGB= \&\Ѩ ^΋r#iX(xJo g2ђU3Ѻh!L6,|d񿴦st ;hlV=&rV*3j<se6#G*Ku2gB=>u2/sT\Y\ȷ<1=m-#B$X9 igqDRUɌmdK̯K5DhtL'w VꂿQފ'a#0U g#QV \KC{6 9=U ֙ќ.6<>Mk*Ws+[:6)xE;8k*1{`!Hfkz'?Om/Dʇh9j]lfKrvR}6 -y1!z#8c墣GǠOcr OC u.,~?亩ˌ*cfeKf-އF!v uvʉY6C3 |I'$ʏϫ$.Զ^KHfR0!L 6 e$-E~)y4يvẀrV6ϊ^DqD_EM DŽI!SpIͥc_uDt&2zn9-QX?]G݁maIahőlSV;&r-H{h QkN=3f"ϡt(#BCr:al M$/_}]1˰5⠘n6RնӣcߣI™FFCaXz^x#34 CZ ST^(m,oFC|2rdž-rEOEk925dh1 Og^?d)Yļ\`9$.S z~đU\ߣhY//9 @<=9}z/}I<v5poA,\buF˰YNHA\ɇaf1'J|ѡo`?dߵsJ,tVQYQRIWؤ |+ڄF!?\%^@T h2{NL?HKډyq]UFZj>5Hԟ ":p$lGp*#ب$ ??Q5DO>XlgDǷt~ߚPw֟֌!̎~p)@2^0q5CiZ %J?E;%fCiq53}ϵu;ft/W}+z$\ o5a^0sA̔x崙evy/<~9~9}@ (~glt(⑝&ȹhy jv=go6Z@q Yq{܍>-2D7< [‰=_MaFkf_/oqЕDg2@}h7j;|:.|n1#c RcUD|$?Mn"x~U Oq]+;aQ/jNm6b) |.pp7Z$uQR Sѿ`m|^GhH%|NO ,}?z-ٙVw߯OK׵e% +FmE"gTԑ4 O'7B8’Qyx6,N[Hit +p{{PIk rD)a.o6T^y]Д6=Oo並!.nNvE߆V9@eB_TbM84XnGhJ "%2?Ĝzlo1CЦ1MjA>vӎ>"=Q8 &n ۈ*T/adO>YOF'%ֱ'b.H1Ug̦] h챚TFrnWz"g#T:"uGSۈO5y5| f'Ө޸o{#e5qz ^8(g0x/^ZN[:j*Ė5>n#e3F>i ;6|FFpobt("#4[AO4h.58Rg$ר,|Eqs l^+ˑHռrk3փS4ijp;e~#* >%/O[f ~u&Nh{kFH hhQ*P K5'6JpV]H0N0ym+(GPE=׀rkIk7h AjRc8c7XS]ϣmwOJ$ep[̻58B{O+·/#un2 y¨!+d"hD=c2gE~yFoɯi ,Gka?V._"bHsʏÀPK0فobH~(1 UW1+D\ &m ԏ{qF35's : |!,&6ɌN ZcGʶ0˰x4ڏ_FdÈ oz\1.Sc1"5 /gM{GEs@(Axfq@L527YJ~Sb7Suu͡:P$Ӡ%P_j'͠H-Kbηlw$6 Me l QY'qXZ8Nt쓕YBO4T^ Q̘hO,2=Czd+]+3 xA)jڌ2K*4Fp񥴣r2;+<# b^ӠWM Ѧ.z`1RD BMFMܲT4=s.'R{Z) b ZN\B'1I)߅6bb8O]iٱEA7O3yMFy\A:6=>pf> 4.bob2(2xgu>rM%v<]ʱ|{6r?/w,N#FTU,kߴnΆ܊ٵs˼5l]9_˗VM?,(uqIUqM>VHdYr3x/D#H%z\cM~99\ yH<_V҃}嘾&"y\_c{ѷr$]bE|*Ea.&~[9r8wy`&ܗ"W/BY? }X޹s莦b9+>r3݀:C;Cp.+q"1ZEP@;V`uK)~b2~v2~+=O?o~w;˙5 WJ]C'tIKMtЛh&?h]@$2&iq:[3> 3F13W9öE7faW#XɴF#7Fn ֺ)EU3'k \8 Apohf\!D8[-Z_9cg$CGiG:^acG8ڐJ!Od_O2n8ڷD5PމuP. ~ styq;\ToOgZϟ4zy-f-vU"7ЏV8fUy`w`W7hth1V=s5NDp*z)Գc )/A]Nvy/ qncD=x&(\,#kZx>vI൙OgVWbk*;`a[ܓ;N@&h=! c6ό˻Xmb$6:~55c5 {VϷAZ@EΫNнqLSoI8ME<"YHr=xhUcgHmvF]FL"'8Y>EYa_qpZig:K=ύg=mj2J&oCg,[h*_: j>܆! ȭ/1\I{6'1wv3D=|ԃx^Nccb,zmAg#XDDO[ZE 7[ZM>P?̼o~^/0&Tjj_K:ԀoKEDh.mO2ѳg=ǡ!:\GgңOdEىXJ䯭*C Dqo^np}P{z|w4(zAolB6Tw@&h քoFrz5g\ZMހใ̡OFMvBįڃaEvDmM=Dpm zgGtG{)~\{a)}}u]Ъ>时N`czo6D+/ 5 FiO-5VMZ1}"<]Fayt161[x-OQM`o1?ݛC+ǞFޖAN4)|!:+P.D# hv1ܰKps꿢aint#K=PV'qX"|KA΃=—ɽedE{]1_a;}nŕӎ/3vok!F>r1h?4.`P+*\}D$Xe `$-lm~8ifboR'v/yoz3h 6ٚ-_9b:";_зhXXkgT$K5谖d*l@nLgXGN݈^PJ!!}&ZC&ڣ1|P1w#ꑉjRșb}=4OzJ^|.\?d{QBȰsȪ"Y8>u:\Mj^ыoٱ"Zi͘i|dy9B v%k]Q[/]wl}c.#7 )2,/j犅%DD[Q&ҍHVBwvj{˚cubaVarHGʊC{7qp1&3FVZZ"!xQTXn1$S֥Me,v/KtL?eov9iZɧ%Յ4K$YN*"E\i|:#8hʉ9jiH[Dٜ|2Bn{)e--Rn%NlGH{"37!7Z[SDTYVRvȀKieDe9b3=bC +W)߭6c |cɺ[b W7Ťy-t2h>Ļ69bz9iZN.Ŋ E+s̡誘fx[ɱ, ""oĥVƨnl)gi`@J5۠}fVgI2z?:DժcoAv#xuO>p|!W96_ ݒx}~2cO=H3z֛1^e|$7R9~flfd {<󷅱/k B6޹$P%Xq9yy(~G{a] d?@I?2~%71GBIOt 0bXe+h|aı=zg){QQsЃ?2 $f s}xu Z m;+%xc;-P"?$fJ'}RIvO3#_10fY9scf,&Eۃog"8NOB7GA?bn=e_֣bhk2b_RI2BzXim&XC;?opƶ@]e*#dP띧ifIH~Ofm@O>m]=qL"O9mX̾ 3FV8q AbC+t7@ESX=78؆Bؒ%x~6Y8:1vV~?gb\ GbJ~톄G|8m̅nЊ֣|Ɣ4]xn j`P7(ezòwK}iFbqECV < :x{vF:dm(uj4N[h-'o"ĝB62A4ܵYQyAkch͈1<'P*>Sch՟ ٜXcCt5 O\cTy7|*zC6D<l$86TݜՁާ=fr kiYO97"Ǖi/$ 'ئ7%9+Y_䚝.D959Ԍ!5v5Fo^XkRS7qOBpd x9h"r솽cI"jGOW :U6Jysൂr Y{~FFZ%D y4Vbu[C9^9n]0_mqm: q(0{GOtUvБVx;Qs.NU7-gmZi6LW|r  ]'oXa{1C?F+D$PiϷY $nO~nt`%7Os7; /o/[xgh,_d mЯVn,O<.9"筅XC9}:<29x?4kDikߕ7Uh5fCaQXF!ʡe7G_@vM\Bce-"{8C/+"nM^NX:S>PnR>-1uK#OQ%%mfjwv݆֮:sje`|hm$I {TlDy[ tQ3c. تQ[">OD=pmR*qIg⃕Ffp9B:͖`\{yF}o.[b莬zѤ%>~Tz^~1ux 3L\E O<UP}>گuƒhJs"zZWc-7'܎6_GX mΊȫXh&b7RdhOʸp9omː֘O<]ôw}h~[}hL-$Ks%f5t2CfhH|:'9B$=VbQAT{w`[ݲe[Ճ;;1/cϽME-Dx8+xo-NFVJ(#Y36,JR|e_YҐ+ɔ}ڊ@CY$ydtY#*Pb}*QڃI=:V `dleGVB4x⸵D+s[5hJ#$g(V! hdv]%vӆL*ևo Wź8SQy'<͋@XioޮyCo*W4!*Zm@b]9~u$ DR2:ChwV]N"؎/[anH1zouud6 㸸r\? Otd&:g XПD+"H1<+ղr敨ӓ3\JW+ ]_^K16WY~:爷&pM5̮ũHbԉ:N5wV,q! Mv283 ,Xhhv#%GYח\j1XctZ)~$O|.b)Oi5\a<zzt^\WdˉC5\h_LՅheUs΂h s1fי[jKDlh,AR%>!>K9ZXZUHAZ+'~Q?#Ek,_Xd].Ήg!*R2 FTp͈*&pbD|+^"߹~:.+r)F7[k K>9~(m{H".U'ׂ?O!vdnzoa^3t5wOWi:cƪ~v{83Hم(#r߲&a;+9_ȵh5n%CV"w.r~A_̭چ1*{YLsDD r?hEo!!tWXK(< b}63#7SГ7+A;BW¾ǘ̄ۀ g9[cx`ڮiΧ&]يc>w<=JZ%K< u1YYVA:qa4|uΘ}p^,93smmsiܶ,-{CϏqM=Py`OVTCc(;+NF?kv1faN ]DuA7ÃhQ٭VH4 ;`6*OVAoc6Gqn&1\e dKH!1 y5tppb%lG8A{'6amlj3sZ+C>%ޥz Sb.X_Cl%Z=d 2GsVo֠ zEKx4aQ[CD׋'WY{ZZ))C hNrdžO{/W`|*#Zfv g> ]d׉Պ3a>ĺ$CѓvpsM·AnA}/-c;':lAMт"+vEFkj3bnEg{җZs G#W2A_,ZlA+.Gy:>q|qʦX=\a-o娘Y/eC͌Vd*Гy Xk+JXfFV_^kZ8.z*BVh3`#_;^߯3=Od=K{* g*ѺZ׍JZl-Xv&t?,VI/6ݏa?C~ @kRYklq[}=j`xHPKQz(8o? *Ab>'ЫFmbUUM|)cI#N}pѥ}|c3"]Csx$l7ĤC^C׌/ہ5le;NAZ5V=u]l¾]ZxfC.h݂f1U(o]\|J7$vqZ(/cnh6Neqȳɕ5ܖxN] euY9H"|/\c}풪&i%KWc,Sz=oBF0Xi5t9kxck=kOT_q#qXoȹHC6ftŹь㖾f>7hMq클_wI?s*WEj1OUUwj.c_+ Z9NyS$iVHm֝vw! ~rg(R'g曵Zv+{ܜ9f_Q.1W?WYTsqX8vx8*IpUHt`">e-Ω]k`pt0  w mݬҚJݑ5b"G hdEHC"hP>`r Q܄JRN5wW.ܐ6F3ĕq̊-!s_X 1݄N\amu?6s&; Z =gLbeCzR?+{ne^@\A+\g'( ҩa'-ešK46>* ˄;X·FzEzMz9HNs~f<2{Y[&Ս{eno}[yG_},$(\mK.5+g%=@$.VX+j5(sMqk-D#7}uOVp5įt8TdsIEu?GGmhI,3Wl\)Kqv@6Ԭs]8}*-}/leVj{TD6ޝ#zţλJ%F~ 艹rsts Hkm=\gJ]/Vw<.ůjs'y|rlUI[o \>e]{-9Mn 7}!n#Mm\,6箆8iZCkpm5ˮu7Amh5]=l,̆tbMu=;m Wb$9 5P"5bܮ?vХ62 $f.tszPty^LW \Ak5fhTs1s;cT(B:dIXRrr n1-XvM Xp1r~qzh\ 8xʫub>Uk\_{+UJ4u%y:CHU!cQet،+Gwr떴n]{ZMZƜ;}$ְ^ZfYD >Oy]F0-X.gAM ~|ʬ:b}t'Dwmbī购ڼtiWԵ=˜AFMװ܌uF԰|\}1ݚnCcʶ%hSlП3g+yW!5{ƨ9:> ]].)|˄Z tb~ǺkzVc=Iv"KGFnXc9; 胺9 #urdo=U v5tbs1M4'D8s|z~.sbkfѶs/#={i9wC'M=DX;1eN'P)(vz&>͇r4ٍDK~̘y3s+աlϹ`#g:'{{P.#^=xH(e*p5Qb-8MǪ m8~_Zc"8X>ȭ`4:PeĪg{%famnU8VƙGky D_ ' -q]v]˱ Wbk"VϹ5PJJJ]x:/\2hZ|JmGF %GXk39ýh:,y7rW<Ӓ{։416#Tȣ"*k/=j >ڂcX53E{u֤;L}fDh,{Lgi:Jݪzb-YWA*2*5C~:>,l#Oa bSd Qȿ1F/*`ݘDYUl%r'n~DzGpǵ83c/Gp?ㇳ`=QO[r-+-gr_δkk%Þ(rt*e=Y~Bߏ >W%m1v8G܁Z60{ ʱ "O'^~]dŽӶ❫DX8Zx k\)\#ufL2*^s?J_~9~߭nCb3UYn͠UIy7!syi laE[נs&Ī%\)Nլ4?Շ)x^FqwwuYG4\tXK iUH>_&!] P˧h;i)u=?FpۇǺxOWu4ڈՂZF~gWYWĂH͕{y Gh=I+B]YJU| Spa#{ g飴YНO(~jJtϭݵp;~Auq@zOwsw6OW댚U~.+{y2 Zq:%?Vv}n{]$;_s޴]~GFZG:wAý`͓{Aɵc*^2{u4oMemWߧ=WF5ws_}=;4jϥX 9Jd|.ӷsŴg^ͽn!4q? dwC{ߚ1:2% 4/#CrRFgږO#vhE݇<nGy ~bE^G@f> Md7g6dvͻػfk]bQ5YNa|> E_B_GGk:.9=wV7onh!߄OP6ިGl!ƀlJ; f?ҙ#6D#hw s5wn |U\߱; {FψèѾ瘢;E4&rwx6\ݍ\jOӄ;7t%f5:8b.wW]z=DG4=|J@g}g^.g+hqagGr_Dk42V׸5 +9Җ' ՈǮMR=8r~%җدKdjBƞVύ\ X7Ă;bE{Olb>D4Yf5~r6&bhM`;oJi"R;0jEV݋.bE/֯Y5#^:r|~  Z;D3Ң֣H=>_b 2;$  kKAFqq-# Cչ_^gu:c,1Gpa )&]c!]d^֙aC>@Ck.tniu;MdQXeĩDr]Ԫ/gzc84z+]c|x%d@ma +-qr=s"׻u71G#Hp0Ngh5fq-rX϶r\cuv i-L6WB9!Aњ.WaxuE­^t}"=VepvK#x@EkDc+8 gBnu9|U" ΀u5ۑڼ[2{w>w&b{1pHtg^ëּ/ēZoyvT y eS m @g-&.f F&Vb#Xa5rHN\(Vy cMY\<(4o ࢝ Q=s{0O?Z\EC{USikq7 у̾Bu#Ԗ2 *Wk$}8.~'X[wZfrxphɪ|Rɝaw՛{kځW0JDr 3RAvkU%QОoC 2ؗˮռZi: '[=[OdDqԉb% ]{yڃT Nq,{L׳he/@]ћj?~:#bew6"_Qt3"Na z {M v>jjp6glcZl<_T jB6 ;g2Xa= KΦaJ\?@z3guVZf(.#ZblW(HB("nWbܿp'L\Nԁ}c:q$:nK̶Frz;xb/pw6q5dM0" Kպ+{5 uc8ڲl(8uk)U <)ƣu zY+ DTLR_lf #HXǾXRgr?|#<(Yeb5kĕ& JaE\ci>Nu<?/u1z܎fpQW6%ߢ*Vq .Qrұ }XziCw2w[:O(+{2/][kVvv9;ߩĹ%Ch{5ZEHCzc!".dj"J9"x}>|!b7ۓZ'ݓcv*[x"[h [?:P6D|R}mh`C8RI$ wc:QB_zn(d(RWYsUOsB^O}׵YQxhp?,ǩVL@3,GI=Y D뢌Ğ&_8f EgVqmަ|N'a?q;DOs^k#zRDNq] 1-ZC kК2c=y 2W?[Z=?\m=8;U;-QOk7 wIދ㼸> :H쭷\ P $V1C-Wzd&[~).5V i5yBg E?"Ucj < >Ͷw#'/K5T(Z[g,fי'h~Ѷ:o< 7=a0;b#3wu3&;WY&j$`@ߚVy;b( 9ʤ2 rI6֞OL%|fF!y9z1"~Db{q= +@}9jl7,*'ֹؽoKxMѶlq{XƙG@2tz8 *yZ-s("}h/gZP'3ۺ(wDjn%}NOOt}3omk' w)&{Ŕg)]趜 錊\sJsŊ7:u@pSdI\au$vw +]|(Xogjum{kl]wJ-=:ٛ#;ȸ"kU/%n@S|jB[{FZ] G p|"W2EDX3E}e, ;@ӱv[3wwN;e\9FۧxR̒~B`j7g"Id,rX s4`!"=;K^AIhRD+d5ܓ޽k K;zEtߨ>hm~N#w2-[Y9cpb|0l< {te[U2I3\4q#LFmi抁 >W,o'n¯ ߥ 2s6(#Ve-HA\5gnV$shO6; 贂x)c_GRX=mgTV.Mb Ta$# FF& $2Fbo3A*8I ;10s.a j6y (6.x2*r;"\KU}(|vNM5k:1oq]"L˼@s{G*vOt)62b#Zgyu}m]˯&nt}DXNs]xꖽhbUfw~p;vm/Qh9~v"jщwj'z^tn%3R<5Z  O͖Vň8u#$Jѽܺ"L79>}&25O`zK>UYܿI|'qjk O E&ݷo_CMdeh,w ݸ/h숇X,jQ22Y&ZgEF)I(q'#gȹ#u13Msn FX+?ZǗ1x[Z>ZI~wᚆ7]ƶpαG|h u: pw;Oo _\vp?½%EøXA l/N~[HUʸR/ N[pOgmvq6^}g5e7y\\9`jz?޶vQ>Ots~X{9DyzLYtGڐ띕˨Dw۱WEځcLjgHlɹvLwuIJVA: [;IKlPpH/⎑:Rl5[;c{8fwѲ3 :E,%zWt;ܾC$\j/ B* D]HH_f 9P~u@K9rշ@M.?'}]bWk;/7 .}ݺ.'Ogl]lZדdSii{UBۤ+^Jؤ%y;Nz5-m0@dyr= d$]f~>.dl}bYjhǐFcNdZpW,eEs6wʀx?!}Awm鈄\NY59n7r֪/>gfVsƘ|5#%QɬA#tcd #~Q*1? K4`45@>W4畻;B\WˆQKq%q5w)" Zggl]^kO3$V^kLz_h hw>(_b;D=Լב9,$JiA9<28ؿ̝ǝ`\`!Oqf!^0B85q+kgi$es]FOaX$LG$ך6m@uJ]4:sLo;u"aayխVY[Rk1l BF]D]'̀@+VDNgfb?1gijqYq&VmVO>]3mV]bEtr |Ed_ WAk ]F#K=]E ٍW=uE<\<8fe}bb㱯hݭl"2:ssD&]bC>wsdZmwtOI-Ĭ#Yndrƈ,JzS4RC\OϠ>3N׌Y\;)w)k2ixGOw٥į{ٹTaWC\:d;n>\{]KoE,·;Y6r&Z]瓌F{ǖifCu3DJSO닭W1įO8tWH:Nݧъ33DڑPs]468[JȝdB`Yf\ݕ r$K#jm[?EzV7wVbb٬MZQ!GK$]+JۈyGP2W::m\3<,f@k\q]Zf~J8Nۜ+9W!u|߻r_r:k͊7J^o.GwOE?|MEh~ێy1^qufu|ɸ8毙y88zr&Ga;}E1yQZk]eDGD~|gm<_t'\em9h?*o[I+6nMY xv?AGqODj +V$_| K5rmohsCu9scq%O[鹚TBK׉rtncتR[7 ]M{^X'_cĻ_o;m:]WuJZnGijȉJ ȏz8GI;Ym&uhkRJ.֘$aǺFث*WYc'NؽM Pk9v/yQt R|x#Rrk?8Nbώ;y+J+%C$O谆a~Ь=1kK\k2]q E\5](V_Oހ};=PPxyB d 3ᶏY<doSzJcJ<ý㭾6ϓ{U1>uBi?/Ig<_e8wtcI">EdW~yg'i8Oy0yNbּ%m"Z߆O֢ 8GHg X'Xs+Sc.7؅Obrt-DKH`%WOP`W[p=@-wDHA*̰=:}!;7M2@ͧ ppŹvqh{CPwnT|ZN;%ZSlM>K>{5]u.RRؿbic$zFbkX?Qgx<+O[sX 3ujw01Nu!P= "8 <1$D"C$ a0A"  PDAPV Jzlmkk=v{u<<}^{{ ҈6aC3`h3Kגχ,~$+dM| Gjf8MyQmgɁ(v68{͒0|o䦻{jj7\RFG$YnNZN>?0]q^FC K#w7&-ލIpEk?J}0kAA0'F91lxQlt̙p^],VQp?#-ӈS,V\VtAd61~<»'#YPb\J/V; ̏CmA]GP\'x-W#սM59Uv)vL>e Xڒ@AV<7ƿu6:ž+M2sҺKWkُ~ٹɺ&iwk]^?wW ݬѯiuI1ߩXd$}kjCؕ/r~ڀ BAu?%nͮC۷^܈hAbx(^ 'v=pʧ.{F 3_+ð1g"E5]K7#P69eiR];wx/ʺX˭ 'h~эs}ʴnO.oiFza=VlwGC`^$ѐopY`TqydQJ>vxtkܚ.ΰ.pvhxZeiO'_;R22bDrd*ZG%K~SϚyEOFVW'Ւkhu~%sM]'yjcux Ψ_Ϊ:忛}qmvU5a_u'.}#w"Mr|q^dY7o6uHԺG="gˣ>햃~Y%,Gb'4b@UU6oݫc9=3B{5z:T k$j| nEAp9yuƃ޼7j][NND{~?G]8*qjڷ`ܻD#Ynj?5G'ӿdfןkNJni=2ÓΖ 9nPMVQCTK ?p}rsԇp;}ǜV=٩s=i *^ŲnOC7v̿EڢoiK9}F^ ]ا&ۡxUSvɫߧ\37|Ynv*Gԕ;;kL}icmmnV՗Z' {`ªfٽԯ/qYw&qdxx=|e"\e s|Uψ,}+4 rSwcAs)+tsZ ~P'fDlUFŝ T1.ok[oSѫK[/X/tZ]VIILy 'sݺ0fV`3'(a۳9pY"n0?i쬜/LZ]7GoT<}fA%. (֋kejՈ+۳vn>NUob>Q喥Y+{:/cUOA}>O9n]oHb~~wQJQŹ; ~28?82@d+Jb2C:gc|c<.N'ŧҫsjZBvD*V)c8A߳}nMN=|z6'oGB9 Wyc#ۡ6hhYISbux-^T+zҐU% yw^Vkn#ND_ǽxjbރ# Ir~<VBv_+Vq dG4b"  mrrAXbF*fxGw5CFO䛫zpFfam=,Q~G$z7% eG-h>agDҕN qi[2'{S&pkMo?vml_o&b׵bJSm˒'ZX"rE3ltn;yvCo>|%|~ȷvM2}W{WaDvuwY%E~TnE1S/nH'&}2I\T-1H(8l/}0OzGv>vjOW _oRjs=b<8M)߾۳NMMup$OUD߬[;ZCQau5g7ZfxY$ipHrz"_U_`J#ó O&o7pڅ=WM! s=}P}_mi2@q:(zsAsr5TjQ'3xs8_|}ڝ3:E9LMhG_0pBBRD44jeq51²Q,>nGqymînNHHZ2B%^#ˊz"cg]{tZA_7nFajyȮqVș}e&EFwH!B4ɏ4f|gZ{_s!.hT&UV{QګjFkx?xy]7SX[F x|h$+jQ|pA8++ed&2>PFne;QuYe'.ubTd`(ffn2xUsn/Or*< 31ѽ^)r^YٍP^f pR+BR'f]joot}W͟z14[)9=1z98 Ur%XU_CN0U85*|5 ~{~iZXNskCs^Yx>iM#큿ؒ^F;hita\[$ъ)oĂZAe6eWT%ٻn,5j~İu tW}bs F;6'?dr_\eyy( gQ|5a]ؓ{E狳Lnڮ{(G % {V-B]TV#I"1ʪa\^\P?lvmݯb ;on8T.c6xGG!U{WHGԭ}N؋>o QS}Ή< *H?3;o8~^h(z?Y;"s6ee|[klcjޙ')NQ*fЍԒ$Sc=r`izt;&(N+}}6ܵxN,,m&T3K^'4"h%䊓IoC=@û45q6X$(3'wD$DG{/}!TFpYx eiZL.#n2uZn nG~^#^u_Jk/dU,Ц׾.JsfOáa ѧ}I;gs:+8=]O|yiwv&>?9fwGyR}E6muq;ů|Xd7;=jM<(=Kx*>ll`>H;Ot%{ƑoXKqX7~3%ohj1 X__zeϨ"&f7o罭3Um[ WO ?1҈-FO86]Ff{! P7Yxo1جczvz:-ic+[a8p2hb}WM{QQɯNr49(~ #v#w,"?F߫#rK˰T9'?_n%?be3<[(5K(6|-tM|t{_pu\tvˆf+[D Z}h/A ۜ;b)妺=tu.i{zGȃc8;ѰhN`7ZGNLgIǣo^yr5w7,>>noW<p4w%^zE|2zd(.v>9ݩ8wQtU{i涚zt[w8,'وP,܃v:LVn0JRk?L5+ڵ|<3XKc)(?+->%+z\?Uk̭LBb+~By1e _!}#&/x^D}cV#G'c'ȩ埒1wMyp;]'۪gYZy Y`CXpy4[^9ʯte,*EAߴ=E_uU^TU`m=g'4b>v,T~p{4rLz۱1'ҽUM/T-̒(yLe˛ňM@_QF;*y\Ao}Y?;~}x Y@\̇,'UQ怳Ob XY-^jP>?_'.*('z󪉘6-DgQq;sy}>e{{\6q#/OJ"|yuNQ3W Xb^4LGUaeZ r"XPX+;Q[#hd2_~eڹ&-99uA< G  8d=gxoy(=`lٍ 'p^أO"Ύ>gJX.!!w:aCcf6J8;mC^<Lf ߏ}Z9OEu\ӚAiJeem̜X;cZZ)U|N\w+AA*dYMrDsӁӎ43Z/(1;y~z{y<7LTuy/Z){||HONzEUu*Oo4UK(Țwpv^yz{T,֪^-N,}̾nPh9pCrbĒloLO;xq;׮艙qЍsO7,BO<7urvuSf!YLl|^-U=̛=EwQ>wX{Ba7>1~&f!~t%} dƇՒuj^%yWpRxh)?=c; k.z=': 'U|=$Эu}'_VQnd[q Ӷs݇}3BydU"P^?TLQ cemkI8n|cIy:.nl奭Eq}MFj>t?F<5b 7FFٹx.@l:Qķ4 9)\߽> Pg={e+h]5!N~GG)GnB.Xu[$ԃSC$\yRo>ckR]x[ [u:xbzΣx}(_qտr/!ɫx%e23ƻ:6"vpKzd}R΍'oV7*+Ifo#~8F\ LwzϦ7h}e?{xwNNJ\.?#ޱ*vE5^*-x:h=O/sԍÿu=7}"DVxvXML/7|6z`PF ju4ޥy Û|Fx{D``"<="#Fv-У;[rFv*t1JA!g9bqhTq36Tع1Mzap/&IԬQwze&3/jN:1$C'\5V;_+΁)rr~j?-;«G?\|;_TE򿸹>d;G1XO'apɾz<0~)g-[/6uGPv!).cӝ$Vb$GtV{S_k[&7Y,_ ,a$v"Gi;zٱlb)v(ByWevEr,-jYEhY} D_d+@8/.cQ҉t~gɽa:Qre"iXx/ E̟oL H>ZuKC-@2*1/h"*WTAѵ;3ޚ[[~>B֦9x(Σ 0#f)CNF$SV \l:jO^R75Q'-Z3 ~b9fyxxUzԪ,eO^9#ƼGDI%zQpĞEj")~^z]i10%2w8qZ4x}_cDR &Yk'm/kNsGj `,|&現': Ą;+gWK45!;9yICk~lQXmkz}컝^1 7dzd*\| 糶/@xY >1eAjR#ru\<*o)k i ,1bhjj=W͞ ˧*U~asZ8nX٤MBf9^_bEWC.jd?DGnηն=ȎtT=XZ[5 ly6Ci17SgzuY?/S&kg_kԺyV&}hZ]:䞽3:-be'ډwv)\Af d[Ypt㇌AM6 XX5ڔqtcd74'$C̢^88[zG{vѨӺzw捙Dq; N*":̬?'w.a\]51߻un^M s>8-hwlǣC0rߛU6C|yf8 vV>!seSkvv+f`M|2yfW\ؓI|oQ;uuf.}9h7ٵeke5_RgƷ2L߲vN=)R_=@r㖇f/AwZ'NHʊt7W5)dZ'߿ں{vU9rh7]ݗyѯzWhJDWlHQͶј7( 9nZOG_ʢ ?ì/&wml;F5z XH[wN2* e4if*\vAtj: u nx)ۤzBH6!rM8.UaE@>HҐj pU{8XͺLa^o{f}CC/D1aˏ8:uүyQ|fyS/%~yz<wn.,dCV(;p Y<[^d,mn8yh`G݃\G.6?3dg| aw_zj;mќ6zwoBrXbi_6QZq 1\󩠝ۻWK-ΧG+~T&C@9\Z@0xPж`FVZc4-;cqNR+k$.M{sAgPA;ˌԣZ|hWd]>Y/ K7ƹ&%cP_=#UEC/h wA x f;cj}לn7Yyrm8ӖMfGKZ|S_6Ys=0]qI鰫<~#I{g?IzoБYfwŸt#:4j: xK2 jėՃm$y{{ilY}p%i6g zA\"~Yаm\yG o [zg៦3Q̉l?1A FO Kb޲WnsATroyޜRQtP7!8u8aˊֶp4xpX#Ye٪12iugY6GՔǓR׷^Nq|~qSǯjy5,>0!8oL.CAg-H @Өf>"^pkf5 qv~pϷrwSn2+/mw B9c l5o 5N3V侉ex0qY%K~_(g0|:T?kWp';͖Lg#SnH18Op'KupX ~'2;-ɹzi% Crq䋏 ӾSpPk:^e9E911 ɩL*P#8 T\l'aojWy.mΫ]Fa6ޱ?\6sfxwZ۩!2t+ [31[Scv~_ؙ$>bAv͞:}&k.g빭Z (,/mbng}e:Wri=Nmz/4ϺCQփKCw1vڙ3KйI }|-SDv!d1/m7i?=քZzC6jLDshOi(yfr-\D׎pmg%%;Be,,U:|M#`f{5Zkfv"uKphwYkOv |=#n[L 5GxYϓ*bq[fAW7t<&Sv:}rid/a}>KvLöǤwe(R{UپK[^ݱ]@5oj.e藓hN\ybJFrUvꝟ rScg#Zh!/bߚA7D9qW JG'ڦOclIOA 4Fƾ7}TÛ]}zժ%l)'!"\ 9iuZ]3>4ËZ⍫;9o{ƴn#򫟑{Vz_iPwAګ{7kkFpZY_7GGL2y'..wF:yϜXՇJ&f'D3: _܍iIG=DTػlk4~|jUI{OK;#8/sC{ 81cvz沲OBG|$g6N!y =[7z~K#N,淩ޯo©wM;ONo.*}C)Wf[Ѫx'/vr7f[ғ77+Q$>Z, / ZQIݏcӢF 9he-<|o&7׾%Um=.yXS;}/d8+L]~j}\/Wg|&i2Mq3\pZeհ8`wv{^ĸW;Z+[;Jrݏm=uOO'9f/|4DeF'h',W )ټF7ٽ&7E/^)[(6nFh[4>K YvNGeֺ.Ԙ/Ԁщso;J?# hj^A#Cqt1>*؃۪=_)V+>wSCdSr7N=K&;>7w8y_םܧfPnTW~"_n(tkFshuQֹZ<֨8Z|ʪ˾{P+\V_~a+VㆫVφzؔYUl%:u wD9h#sMkG>#,xd渴x#F^C#@b@j$>+kkxx Ӝ3|$"`0&/oǛ蝧z?snvßV y#t2PR PMd_o8 3dtfVwgo\g߇+5u@KTCœx<=Xiv5zےOMUP<5g(r~v_>mNQ(6 5ciܾ9K~|O+ɍۋ.8}pR59Q ¦2^3v\p#B>Fʄ7fR淅E.KYC;jx=}z8dg|P_$!㍇$%k,$ ZЛfRuR'߶e!NY9͛CԎ )}5bTگl?a)["7s%+;.I'X;k}Z-C/m!OjjtF:$": \^۬-Nf8t.fwָ_^p R9A+INIKEzM"U-;ۆO c;XrJ(cѵtf[5Gwf UAbկ$=Fz>qenNq&C)Sނfj3ġZ2ܝ$B.@^<䅃͜/u&WDGԉSn"# `?$(9fuX_<׃Lzmx\h$3h]+ل\:W][p^96J̭ŭB5 hXQP[(F:b!;6R#gvsӌ:wzAVD9 WNug򔻼ϓXxiZYZ "ߜr*"hE6yq1-:_{7}VvU+[.[a'WMtv?a{ǫ<\dO/nw:o76 qK2>\_@Fp6.q90t>w'&˚s-|,jkjO eEl%ٲwU=98uE_av29T-S]PK?㎮w3{u]㿳e+"޸t+ laʳ=6Owv$.ǩ}BMX7FATʍW<+ 'Y0f+zwE.ܼG?_ͪߋYYCH2"_pRO_p^C,iȬٞ^-P<au˦l1pSsojVPe}ôKl4&>Xm>g7^B;K'՝t,nhV2>aֺCOp=$R%}q6. YOyg+CEA)sM-R+i7K+oV>"˺V Nk#PmQ Xq0ݽ5qM\(6 d 9W4f_x΋VT}!K;qFiF)%\?,5Qz"oW6z֋x' _l1WY-e?#Qeڤ/Mu%H_R]&KЛ^.WSzZծ |>qeb4@{ gיF|ϋVMX!{E.VdCm)HMaA6:wKͫk[_HʬQk; u|sl&ꄓ@4Fl ^UwwcTul5ܵ>Z#1 ~͆6:[RK;2j;#eU˳R^e B.lfD?FF3gr.>n[i6B~%V<}\7"fl,~(t.z ߦ7zOjfxdg)g'-dSC FiĺWne‘ag‹٨ByVFTkb5P~\4 OXm4qz^kC+?8xb%v8ɩf׍@鶘/К =ھ9ސ$ϛp@Ka s!pln!J$j0@ւ.{a0eu[3u<4V)1v1x09>3Oяyz-?aNqtm'b]ԵwF-mg>fF (eVRbrp:YIpS_+llYQ͜{Dyw.zE{\n1YҎ$xcT7rs4㳉VsQGnowGls{F}O4>hݚzWzg.Z>#{9=O@L-G9Qjϻ <ԮյYMrqa.o=G D-!#vp=+'0Zdf#/OCplmm""~7ed[P؅*im_4H٪~{ks(7hC%+s޵|P5[:=9Vj,#&f(]7H#[]?#<;dÉW'4e}^xmhoM+- w\ڎ_t;v~ihm)^SK-&uqZյ|OωQ=aUЅ#sV47Kc˒FƒE~#f~qn~E\l񇹥ѫ65/nlrlܡWd%0Ǔn/YԮ&VUG5>T1ʃ{p>AGˋ[vz3rhR-!MK!Mh#-tWV)IwV4`Qo*!GV.2RZny"x|Y;v:>pg$0ʣ'&Jm+x\U\ȲhAn$4>V*申yfsXw׊8wSO;Yl*sڻsj"{fj=#|hnZksQGl}{vƲgOT~W/k_f3֗E?DpG=2<q"]$m{ VO!`pwQFky}2.z5y(IvcR{+>\eF"vI8.#k>q4Hw9@Qy>,$Wd` +kfR؜@=d3bJ9xun J?[:o[u{NfmDX"(wBA3;o,[}ox)~̪:(ćzd.,_Q`oފP(xRly_ϣnbhߜ :2M~vn5g/o3GӺk?sfwikiWvbM0)|I38:.;*L5q桍v=fgتGnמTbQ2x氺زF 'a,u -K5~$Q;Iq> wX;(p ̼[A#6 0KG3js퍛{,oZo$S{ʝ'۬{|C |v)K}#ko""9o?ln|CSph&s-_)74n 2C xRwmU7N_rh!(?& a'xv[iT|WC7uxK0񐆿rKwd2&e@Sh(ԓ\"a;pqDž#˦lMyfÃ7^?Y{,Ǝ`Id9?}ش~Rkwc'?Q&C^rh?7l1_?rm~,լa<x }ONũj6}&t/Z|pӔMnB*xgc;x9zs5QBn[,}~ tx pd],2w֩lʩwr?t p=UD`M>}቉& ' ~0FN,$Sh]|ppWdXi(099f'+Q:^j|BsevkDoBx&[`ou.'ܻ7[sMuk:A6Ycެs3_1|IHj)VǕ'=٭:8Z)wL|Fz[.jߚpk+}%EΥGF gp4%t拴]uɣ'D{bNW{/?kkU~pKs6gMmNYQsIm,*K/jo]oV> n]Bk/tcKnUv[?yшnr8էϽg j=3vQk&s菥?ڊ*E~Msv>)7/5V{e0<NyXf')kdE4'cՔ6y\oV:ĝN18RڐRU37!ԜsZɿ8Y~''듾~c'f{ 5?X|!~k~#۫QO+kC5P'S?ޚ"~7L#@>yExh ?ྲd'}hʋ]%y%mVNmT1un#rܹ'":y6 ͐VuDQStI%r7p:7ޱAaavv9 ϟj):}VtsC;Q>,~ەwėgkfNzR3i<5jDWY/0vt7V,kQG+(qe@%Yy)!`N0~$''qW(B3::n:3NW~sgZ`=jtVzxaZ@Tt;{'L?C_/2<[ޓ)8Q^ح^KDW7k]EvhZ=Yg }9sh 赓~dp8u؃sjRf_{:*Y;8r󸹕91i@qܳ;4Y gTQ}nncыAŊ>,=|Qxeshs[ˇ68PrX2^Nk Xt2n/H^Mq o+?{匤-"Bo$A66X7ˎ}gí D;N5[jN]֚pJ?1umnJ-9~Ml2ѹR:N`t3R4{>2G`fGuR$9sb9g? nzL?N'ݻն[ZQ|Q_%unN^|f4 81bH)E[_:mʺtl!ab64#mQDԔH){eVW}H[[;'3*Rok[=_[V:-D ۓ׽zdoZo-?p:D2n,Q.Wa^qOvɃ&÷^ͪQ9x|/_SBw y8OlS?"ϫ}qėD״拚%dvʎfRv>w}1dfpYA?^9Jc&j;6OW !#/"sOa.Q{jEYD)m#G1sTQ3w#5Jv+_'sqHVS0N 1>s߱=:R 4azѠB Q=_ h{W#Gˬw?l;]c-[e"olؼ ~Uh-1}:fX3\V-~x™X1xO Qd=;x"+!+^{y+N3yq5? UƐ<<1)e)(C8G/>Pgz5asQ;ᘡXp燯w]w_Z dij=`793;yLzS/^[γn;wx,PR^'\&q:a?j՝Iˤyz)nb!nG@j)a^\EX1X q>Z34ƕyukuJH[   n}{X=nx˭ˡ?TmF˃3jvMqxK8VD&tO'Ol?qBz}wfpeݧhMwGmϪu&?;: n$`-UqK2 ufK̢jД#͉kx:oS9_^z8^kGEݶf:$7@GԖphUYl[/rSf%y/pbc?|dRubJmtrtT[:Oy #Uq*@2fVWO2AܧeuOړG̮ы ՖҩZVk s!,ت8m)?LaZi> -X]ӣ^bo,`*/^/K'@d(uI=e]m[1艪_ZȨ[ *_hTuf\4ζ\۲P1=%;'﫵!-_oP}?jFھoL2j|'̓&#׊%zpOuξoo?uVݵzS VO:K{?^}Mc^0[g}PGV{q_XJ>O:6ֺ;Z<z?n~GVNlg~kjϺX+{aԼ)9f!{!='%%έsIof >tƧɍ ~WrC `Q7cwǷӢkcfCk8/QgLl^YE.]QrMd}I*;PՖ[UEҼNjDo+pwufuQ=ng$u@뻾OMr~G*\ KguyzZvXϥz|od*Ӳ̺ZьՈlN0>oz[+2]4 "[7Y?'x_/}]͋~:XwԎVmD##kE&re7 O>U {}ɍ/-kAvѶ[͵w~\wC=\7h8ݪ HvϽO^Wk&el*͍]reQNB?d2~Te4r>=16ܗl NpTwkGVZ)6ARZې>dx߼hv{/+nSv+7V̎=ul\۝\:=g=mAqt`#.ck’N#kdʣo);oKJR3q i3[#6-=o+xߍE$9W+z%NJ-e ;ʇiD4ͳxExN#iݡiF5OY[]dXDu74rzS+dDݚ56/6[?VSxhsuq{*( Г0k0"h T GqqWrc r{V~y2}ew g4{O,goպ냻bKy&n}pMޫݽ:uZa)7wnJ/ix6v`BK9`P>Q̗PL8ᷪ]Wtozڃ}ry'kH\3g0ɳYD"^Z^rdһQ pC}ݵ=6]Թyͩ/o!rɖ/zws μ7~m\Qis$OL ([38va՝XU2o=5ΧN=iOFR77~2҈/;יa&aeF~X(O:2\5hO}>zTKIK wY8=}zݕρk7,![WCc,}p]]8QZ{, V=qa{H yM1L{mttYd&FnUͻ+Ol?;x~_3H7 bl\N  [(MU߅&;%ÿ'kܗUQM<__EAd6yuB(xW՛HrQjfsy10SWߟDEߩyþˇI/~L81I&V܊9dpط-s gαfPӻzZ_ϋ8wb+ye!dцWκvU/t^4Kt'pwչy8R$2# 3@ @@H 0ωA&QPDqZVOӞ?}~úu_ھ|+0Sy'ƯҘvgE{0MZ9|Z²Zl\6껳3 /hfۥ'KA慮,H߹ߴȾ:,F1PS33F{yO٧'/+݌z@R|Ԧ' _j_P'R28 O75.)W9h=xҽu}emsx2[,7w~5XVn&y"ò^W X'JNZJFeڱ^WƖ͂64L.J%?#]Y?ܘóSu8Fc  滭L#orM^%n$9 vh5sQ-)!DA7BKnl=efvN[fgN&?[/]Xq0ɰT9Ԝ OV[(Cfjal_6/jTg}eCVhܾ#C;Gڲ|!\VjFJ7"`0E֞p&x>>[-]\kڛ?p;#-/ׯNXȘ;9<5iCgx\Àܠk&FK6{9,:rحZKi$;'V 1fp?21Fx8be#UT3lSaVu} &ܞhd'KQSGKؿ8aȺ)ϵ4mY0Ca#8gR|k$ݒ%Do^iNFѼ\=@4Wmvy'k)Kpg[xA>0h!+gߊu?BHbxqm7ƎڰxY}0[Pa#r B`;O8bw-/fgG6#os"daA 7/}џ0J?Sdej\3CUvaq M~ʟt^=lBe:@[IV4dBR Rܪzh*cF*E|}-ؑV#Ow;deš9rhZᓫ|-4F֍͉sBW6[~s G C uZժ8 P:°e 3ח"W?2kd#ftӋpVؓ8% LNŇ{93k)LtW=C,R73@uhq, x,ȉM,{w:ى&:3J6f ( ~9b g^\9qh{WAx-9}0U: /pNY(N ^N("/̳Xk8+7 '(]?ohSjSCHW)?KOcLo\J19_@!J]%#>~eMˮǗuOp&wN=vZ3Z^g c,U⸮DRgSIҿ%`|)RJbHlY=e"DZ5}5]ێfB> W/<('΢Dȟ6c9LN ]E1UP,qʞinQ.]@!R.0Dc=9iJ8(%FՅ = έOp"vPp(a|8,uNrXT\)5# 4eNo2m]Y.eEbK:<҉'L.UHU/o9-0I][ڪFavtM=E?;Xh{%C E͡QYk$E'9/a+e3’N{IuЋd9tvjsv~e^Y <36i&e ("}A2:]RN<-{[<v>׷S/Y#,J6{$҂..i=y}ÿwѷ[~BJwaغ~}|fGVXܥ倽0> wFiW &9Ihrwj{_RuJb?u*onnNoZ[ *[TY~=Rn4oL.u[Xh,x˕7;1Z|20y~OlJ4U%??)aA߭U?s)^mlUFW5{j>W}}}g%Y3b<-=P=A#Fh$j ~aIXT/UB@@k}ouTG7ο5'>c(ۯܓT^p;δ6{߲;6~鲣$uR%8`n_N~'I&#[[wKa݆v@S~n %+vl>6B[?:KC<\)Bf.pewY4%wlƍ:bJ-z\u W˺yҝ r53mtEb0'V *'1 Ԇ-Ǹ]~Oo.K3ZX kL 9Mm?g;s/'5>iPYV5_wͭ+RǴfExU]Z@2(9N^2/ya o>6ybaUvusɅeIR͊wg-8w~yO)uTٲP:^g^wOl]jgoR*uen_Vs*Þ_^8pQa%Cygj;V3_LpSRV l(oc1 Wψ6 ]BSJjIgq'%&%6;;[Wo-6QFb8ܕb۰lD]PZX 0η/+$:--+)ɝ؆_]/,'ϛogh)/׊ v1O^/EzҽvW&oqwv̄Chpi5}#J2W =krY 1)wh;[d;+2?hbQ<.e0hv8rٮvv6,'j+KeI?oUDE;pׄi^9qsw@VF/*ݑjm=CSV^H!LםVZTWZ߉Mvex#ysħ䆅UzNwq\)H?7q(/l]ZI.K}}vF zbjc-~ocӇ%;Zxu$>ӝ/Mnc\?21k{yZ|eGʟw ?·OcS?d"^.aSX,:IfZ͑_y6sƄkXzWtǠCA[;5F'[~y_+#̇L]V}nTc5)is\|Wb{LSgYn^^]8ƞPƄ[jtBJi|޲/ؤ{7#*Ie4O{1پv3(m`*s7Ջ_ϓuK"Sl ⋝3k;{KHTw J~u%5'[TujG6ik6Nto4Z~6ǶEF50;t֦W: /t %$ػu;הVn{)Ⱥ] c$bl Lgw|,]ٶBj_DFGˑTDKc]';Lv8n+.Ga4b(E9`FjYr8xgP:XnOk^S~d ߃ })V<袋I %~Erzd`8SYba)E%,Yp}_["(݅]^٦6yz$u{kORv|h5YI=),'wubg 奴8Xɇ2j%|]ךwwfPpurH`/D#6(=_oøF+V8Mu>_ ayjQ#`Y'l׉̰4+ӬVl`*Jʷ3| C[Zm!l؜%rVo|+mܷ'*JBz=TJU 5lqk/BJ6w0یi&99G[ ί}`z3jJckRo`ui#|~:\Vng&U=aB鿕WTZMfs~\uNҶvֿ5}9so>Eٮo\D+S^+ůVhE'3cZf=3aSUkL>8Kz}A5-ȘJ|wm1h%eANka]=?}7-}iUyP9%b]OkW^+- SNӢ,4SFUvZ+o۷Pm>$0w[c{VnbKٖڻ]vlC~ f&iVtPP0Ǖ (gtKŭc)?inmӭ 6GkKGޯ;7  ةOXtMV~ Z+Y@ f8(+|;7sQO84]pҧUm9QviyG=8ӫ o9e"*8 4 뵇V$zX kU鰇V>HþXcgĜs/6<ș6K<ȯVݼʿ4uP O '-x[wwM#VlrjTYxh+::ԧ-ŸO)W, &fBO%C"4UT_^NUˡEao\K6;fmj`Rs彰Ee`|w3rO7M4c}'^̭4kJ$'r3`sߺ6!`1, M\m=}-tc3 ٩^>bXf!tk?|rrSUzEHkٳNvkoJ!8ͻK =Gpso',M^ t9=̓$>AL{\^iwh'ߊz5Ic}yNzN> : 2&2&ǎs^?gWK/e?s¬7Rl[amzҟ^LZ|HWK+{;4)GRVv+7;kߍytrܢk[W5إ6ڳ^TckV3n*jn!nߗz ڕf_.mi#Ԏmz?8dg>oRjuE̔NL١Syj{R.gees<-ICqp~eLRУGDt Py}G5k8 4fk{jǽyt-, uk1|3V֥m1I;rR|Ev綕 T?+Gǧ&Es=UW%]k#}a/sy2(}ѱ'FgOk,;tgk6GG:W7V8R&u S0&lF3ك6c7a\v\NCq_XCC"B)x bl ,, a 59jCLf! , ݉c7rvjB.+x `LHBG[PKʹ1Kx4!pOAq ث6?fJ(ڳj ]%ɴG`n 8 v$CA{r?ցh>v%X:>z}]/Y9;\|D6ܳл`S{gQj[mfhbjYܧ!採5J 0 묍/!ƂCɶyjWlrCqw跃+}V~i}B<s+ xm8+VJؘ>M(]Cy ?_b,=ڟ]vMMMV ,@NX1=ae$3άw0YLlƥHio,%g$R{<+£q"T!'A33/.Ӓ|"dڽL)//9G<[i笞儮&J߃Fh<ת  v,8-Ki$iA;oqc!tXMo0hjF-jJͭ W/--'~W[|\x<ۋ |żق%f83Zъv[㉮djGyQ>kjU3Hx֖1}'SK^Qhł\=H-jNoVjA3wDga`sc_IyBIѲN3h+ /a9eЄ]YL}Bxb[_*YZ9߽TVo_^Sk3%岴XKe`i^Yغ2X?U ^aZwL{vLOvFv".}vglՕE'ۍN6J[tnfS_Y^oQb:֮~68t&=ǝ6;:|҄mfja܊7 OyRMtȶEۦםn?E}#~ސ2Qu l5+N,wX/@U 7pVyXZZ2Ϻ@|{hTޭ8O ;,ƅ۷ؠȴvV-n n!xXe.WͯN'56f}YlTn|4lGͿVmY]NX+]3zI8j{s%>x|)MiY|)ze61(v}lߕy|#=sV|EBQRf>}~|x7^VҞ?ظUΚ_r]z<`K9<'RǼ]}_0N׷8;|<.K7U[g:%>;j8/hb,NL x-wCioPk3%Pڌ,2D~NIT]{COz2qB*B Q֕^Ju^pROF5Y}xGbQ=]Ρ,w~5s,wnGhRWFۡ]訓6'nB9b )1/ɹھ6_yvOj+o)4`I׮j]\)]yi{KyFy.jQ9Xׇ+JqFR09]jj61\P., iԈ/JłJ8Mk:X{K3YNϺbBx,ӘydcJ=vj[TmNqVmSulGD#jP^V㮭ǔ?w6rJ8t]]| +NZP~uMKs_P^] LX| ~} /xZ"Jr`4?Z~Z^s%T٘晽K3!CO46yD1ޱ^γ8gZ._S{A0o^&{Q4vHWCkqekݻ4@Pλ;7xmٶT9R '#Eci}YSNE(;D^5dmܵk䯪'OŜ?_+smv_m?7qfhʒigQZ,+jT]X؝+hׇzwm=~nk/^^m}y'搧*S]V?^ɶ)=B[^-*ZJN">O~ǖC|'έvFM iN=~\`oo|lVGk3;n܌Umj 6)eneb}:KK{fZR93S{mU4]Z+;k?al<\N[\2fEO*-G6z2q}thM\?ӽcFVW}1@ԗo5*˜럳jc޾/_Ş7y|H{Irѧڮ6KuGn)wT}kw&3yFr>\{^Ϻ2^y.Jj'5셵yx4~U9̾~$J@s &Ӆ+Q }d^)3}z7'7ߨSKw Y𮞶9\h<ٳ:MغNx^'dj.__zDg^?Wm ?3v`=d/DX $^Ȫ0sO߷V?!/K_mYT5]^-| FO?v\{c)ےki[~CпL~U-^vWumN+?)s~ W#k pJOHGriÍMajP)eA@RDi+i 3}#?U?HK?hzgB;_"חjiIBؓ۴S 1box-٩s\kpFkq*Wvi,^SmZ:xi"LHg0E:Sf$ұ>NpĿIk@);k7ܶ*F]:1aX;+Jb%Z/jmcýѮ؆zxiuۤ;xnsEda,+k؏ؒ[ $?}kKۯ5+#lWo1-͆y}ԾL1O"/L G"˝8/=gE}ejI͌gy 1WVg<;ռ|ԯW߸.pvmFq?ڜS4=G[!ΛEUA8*w?Wivy+bl>{BW__&]K[<TB[o J~PNb+~!]zMh}:䂿 yIWD)/R(7N{Y-ThYZRq8Yhu gHnv[&#gQVMk_5vW&vϔ0+ /(%9yiz#U}|csls3,79gcxX3I>GEe|5xd^Rw/oz(i\MQ%okJgrbUwZVY|Zؑ,5t^ zel|Ҭ'ٞTL8}SK-HE3oaߪ/ {cZk\D=/E=wyz#eLmsh{FKb_x^ 7.-=#w&sS*0Ɨ٤j <')}wYBljJ58MryȯK$P>}vRfi[L~`9 I|bIjNXbEೱtօ7x@4p_h4狗>h ]h(OXWXkxXp4X[QHC״W֯xC\ɕy }D%ܫgJwh1Bf2kB~PhrsQuh,}ޱoɓ9 3V"1ZWjvG+j/`4.AwnV3F7NI>xz$YVo'úTy,Nw>h4~/>I?RV U6Ƹ΄Z؟e0zR(~l\y0TvCTV+nc𭽨Vd3_Wߡî&>ɐG’Ď^/kKin+-.L/w5դwwe~`tНCca>+\Ng3=^WsΛ:1k?SKI.. >ZmD}'qR|_ﻣzn*  MO4($ x7qT}FG;*]ly8VےFbyY7kɲA맙nݸt@gW^_4T2j&a78YJpRs,J XR Y,m\ZU{ȐCjrYZpl{}}' ,8ԷMWmJf?mcq]ʦ#HSv,'0ocsyӘ/ 裥}jQO5ADZok'Ӻ)mC[t`OA")";ˋwmYGiX|M%,+3J^QǑ~[g:iv0bKZiZz*= #nʰwtdY'\o~1a`+?Pcrҷls1ޠ>^7^K#+dOcA?&!N%@Wf';H>>ʾ_{۝kA3E :0h1m՘W2/Om?IFϕO@ڷ;/h;IaonpN̔ō\*Zӯ+m{dj!/7F1n(+ovSJRIe^ukob-;jU MF72S_VN=6 ׉Ԝʡqad|%1;1tnO2^lR[DM9C4~JJ? ~wuVOyFТo^5.9]ڽZ{+#/%Y<<֊r[59M<$7;Vr>ܿ._^NHBrCިβV)Ah,}'F< .M٘hOK;Ǔ™PZO&7?o^Jor%v2<03I-)i͆o֟~Uf?]I\U,#Tbגf}|~'.b8N[^w9oE[OO6ص^MDvqS}#JWws,oΎE׻x ,-{{gA7ϮQd$M)ۋ m"UZyڶ\y{rػ1i`t?/jCKJARޅYWm fI뇋؜=O<18]!Irg,xzBL=,~yË>iϲwQ} ro-Nwr}(/:mJF)k>vZuuC`{uz,-!Ύ(MV(ܳ41X)86NZ^2D`S =nQRS"^Ł@ Z>sVjN<`Z7[l`q m LFP>8Ρ TGE,Ta;6: N7Ykc)U\.=K #0!Gw cͨFjBa)W&(E?yzxN"z/d.4̍^N!sƊBLvGXVN/Qĉ:l 70; 06 F2k{X=}[/==Vhu%0Bo}a;fi,kUGT67C.BїW7[{`uwv$=) $nʞhEiVGclVv-c* 7=;|{#/Ԕ} ?xrU$<Z<]{޳[;L@0Ex?aN<4 [^h庭oNJ+1ԍ۔ OrUJF3?N=U VirlYt\1z6gr"ǓlXX]c @V^ud+5>ca V)!qe=H\,ei1 ۪̄ &%7ff3;OuetCA>uk#3K2} |;*אַ77n+e7,# 5ˇ,:3?o}(!6`Vi^ ɉHiUӑ^I|6${ےOJun'Ey{_+o {v7&,H$8|#MeqozrG~ϚJKaH$<3N]{+`gfʳ?Kѥf.;$S;%Zq8wU^"֋$/&}.XugIu9<݊n!c;_?9[g./%{>fu%5BcV6ХYeȇGL΢|۞ךKcA'TrnQ(-DT<2Z7Y]?} u?ĺ>疖YsƇĜ^sv|^,DZ TU-JkR߽E@d׸l5Tbheu~ EVqotlÕ4*'j6rphqtq)n;r&9W'"}<<.^f! k"َٟJ;„rϼJGܵZyQ#YpoN&s3ѵC/jlB.]OdpPzQ .% :B'PumIVlcع X'ܥ9v3Cмۚ3 wV=5q {@W[nED6`l~'3l.lbx6VsWzƹV*E8֬^z9ӥwi06`}wS7 ɖ{3d18}.ΥH-a95arǚ}%/Jq.mu[m1un}eXJJ 0Ӌ+TXȇٯ~~e=R[-y974;5ש+ gsa9y둞qߦ[ϴܞ/ŶtE}MK/&a;j0oDn2.K1]EFq^̺=lgbIP{C6k$ ִ+~6~&#T<<]XӼ5MW{LbRVaTpnݲq͏={{{ s1~nFYkVcu~~I7wjp,f<؋nјZ0FN_Yv*j範\i,طc+ɡ_ L=xⴻ$WٯC7 Y/םĕ yȒ/6B[Yr}UC az|V-"꿲^8#SY>Շo+ۿ$˅ݓUZV6ԊOW|3W*WBߩeX|jYo7mn1l׸b׻kj C'K= Z9-T5i8F= \nqYqNRffHhtzl]tBW~V_R5:\m`j%^}\5삝ΝZ3Wn;鎉L3Or9'I#.b#k[NHxx75>P&aCwVz<]1N*[k7m59u}Ǔ`|`zA֮^Y9,]-ZY@S6K'@Z(4ǧٸݵgwvߏˮ.d(' V^ۻgz#v#;9~N?輐~X ]-, A,s +5 ~=C{) ,y1UKbAXTh$9\c My}b*l<(Ƕ=}`1f ¡4't[{i~1CgA$D<`*B=KY6kG%=h @^% bv̲'=]f doaM,Y[]Źa<75S,(Vė,NjB#Bl߽CqU!3jJ㯁+F mq;^ D߆Fv͞g{vCKW- A0f0B(\Y1~֔H?'Ca U),qʰ<Ϟ>A vg?DEyՅD'mki:6v Sy3cA'[%|ɍ?: HFS`KK(7c#m( GjxQ"{$D=+cssXfwG&!hP>gd}=[ߵ(/z֔ l@o][N +x=Xkp,#61_9>_#NuI (jgFH\C \oj΅e{u1o;ʕ?IB4٥grjwkQYc~%dCgsf۴ǾYKj^)oMƦI'sjbdyhT۾{Z~+p+R5qvpgld:6]ۨ0Q2*V:3٬H*[rdg5h+s+vüއT_1YDMy(N .IX9xOɟӣ9][^5a@!% vop+ aE%c{;c4+ZIAmX,n\%ȽtaQ ]ZyHx_9'i>h,FYsӛ+'O<"1T4FsiO}wIg+]ڞ'ҁt}|^?O|yI|kt9IE SZY-[Z·Usgj_˿ {L+YaǘYPi`h/mjyc_N?zv]yoyR4.6c'G:兝Kceڢq^mdȱ}_J/Q=cw6'.+o[/olʟ5`W~ ftp0֫|bl@hs8Y~6,оu7m#iyٱ:qZ."-<}LT/Ks/8uJv9FaY8 biƁ\>Y_WaF[^tkel(iYl6.-1'Xs)nwNO?^J*ϬRf,uzkm ?[W&փ']ںNjU zCITh#WF-*TUiNIj5Qvvk{h^&W#_k0];]/}N}jagK0Mx}efun~1~bl/NW %޶Ń_nt{w>~Yw9G0@hfM3gԫV$AÃsy!WT_.ek~}9+Ru'vfZ9u+:+3 k g]?^ < <>ݯpKs2_'4ϩ q}zUzWTSQ[;2ZyՏZXg|RtVpEjJlyWUaU%GRzK+Tt/_גىhZH\TGxŻYa\k۶FA{Qپ[>r]vSτ-&RtzkѕVm>1j#ד]{8/>C<[f V}tSfc+WpÇK|'2ahd_oWnn՘u0oIw_D{~wRѬ6?Y| osxyzgW2HBӰbԳx:Ք։~5|_T́Owag?]#lNnN vdZz{:١F硽xlbv6Yr; a1;Q͇gi쮭S)p+ NxL5૖ŵz^.i1{֮v(m/*}ͰlK>f5oPZv,ݵ}kS3qU'i]=~ <d}ݼ א 4T'T B+1OfǕ3l1F'q gw,{>s|9XWMNjǾoD ~ c 0;|(Ȟ7eMYYbxeqR͆,AŔ7w2Sog:g [h Kt] A5oqi!,&5'[p  b%GP7xăƖkI>a;E9Seic{CbAQX[L%3v ON8Y4Xo}^rO2aC -ī ȕEWfY$3) Ski-N-hQ4ʄ@E6=U3$/?RbNcsK"Kwt>b)ؽYSD-̛=5I|WBFF5R*cS:K5^`m.q@!~jIӵp{VWǖ]c\^C6ؼoO B(y3[9x|ƛ&g:Kռ.{Y[2O녅&hѦ9CQ.swZ'ZQrduU1&Ҏ_UR|x3Zp[o^{) 3yVifb BXBycG 9]}V7JJF\5Q"}V 6Mt|q1x{洘+VUE=ɣLN1q\_;-T٥FzG$\̪ɕJO-x}9zy}oj=t NDU+iGbTN)/!zz0PxW;tvÍjZ)/Ή#60uM3AsK?VfKv/Ҳ3Ս /9os;zϳk[v*Yɰm`;@aJ${*S6;gvkw$b͑4rF9Cڥ}Ez:Y\&;\ы cvjkv k'J_uӠOj|v4_PHQHaFDi1F7V1;11 kO[FJoߕϿ}.21I!b=-=|JRiW߮]}vQ"M~<&nUNi |!fUz$ܚA`%&]AQއC1ldߜ+:Fmɺfu]4>\/<COp~I/uڻ$gw6jLWVKj o21EJpHF}ޠ|wjp*txJvl.ܶ՘5 59xBux2L}]3lV/]Z|^%&!V_>0OŬ,;٫Ӊ˺gvݤ]:@^,|s3ՃK8j)'W\o ns=,\ "}HOQٻ'Lw^jO݋]Ri{š甕5^-0TM~tfsˑ5d2"(BD(gWk$ʛa=sA]Q,#[t' 8WYfo -ʖ/sq5? 芳 !s@9tS#?X8m.+;dj]V[({9= Hmwӄtc>[N;'c}'j$ \%z]!TW8($3N}ؒo9m_!bXz~u=408|>br1-iԌoާzz81}fTwεK]l[#1񜋕8[^gޠ1yd=}rD#q5v=-ZLd*{<*kyBţbrۧfy?\." 7hUN6jD,C쳝Y{7&b~}2\S03f 'Jb*ڻkOn!OP>7~B֕oj}5xCQZK>Nf:-H.8O`}A+G9&B*dnMpjf^ z^ٯ/'maMԟ[0,KkJJ8ުlO&nr|.W Od h]iݹuyLt+j*ۍ#fG*tp{|l+&Gj Iyz,yZ:|=纣:l1ֈp'BʺE6qJæ$O~Jsr0YLU^Kz>ofz渤lPm6)l­Z|)f;;7R㼖"`-H1fn2= Jl~*GΕ@dSv&>W0%y Bcg-iqiJ}n{DvH MQJnE۰wH`A!pJ=*;̄-ϑS_В? &]ɓ6rX׆YĿ!=KRa%8=—cT΋i9t, 1'b%B5Tخ}z\JL)I+=2zO)c5n=R'={p@*CW7L{[y0\Prpzśo0X:~]FryyZ ²&/Mw዇T#|14slrʿbKa6<& ]%D  ;d(Uq!+K29kxQCה}TrP獫^6`;RcJtXAʼndٺ>6a"$||,7,>c3!& 3`/kL} g4N^#d#&+h~ iucygA:gGUx,g jaU\^fIOSzCK> vGK a442L01D*r]ҙVmĹEe{"k'zz0,]9UTjtc3:HcjYiOwfQ]a隞g.g̛ػ:Qt6zƫ48Oԓ&GUz^ OZt_>}Ǣvw*'O1YT nc c:ג+Ց7YyXr4bo,j`|ꛗfdƢ4M}1?̟?cr tܨR\kЃܪIGo_|~9[x;D65z^IEրlX6UK*"cPǕN,"8C.DŽmokUJOګ'ÇY0S M _l#qC_re۟5ۤct䌝U*u{^)Mzf=6#$+}>k;Yuܧ{{:٥{3R4`LmW~>TˬSzZnMH;'8 8^bN#1<8YgqCgW>lv(-1&OINBs>U.q̈́&)ݱI}d^;0d4MˏZ%޳jgOj/GX|2oj|,щm>i[-[ d^;9\Y0ғh g%V$ΗNZ,7,K}QX#܃c5֮56x\}s5;tRӒYIismy-#}`>3ocl @T#L3*:B"!HBH !!" cc8{>3IIf%Ss=kV-ڳֻ'KVS%#6ԅ0|;kӗJg4l=}}a_ 62bB3}>=OK'+X 6tO;Ý}l:qN으_mk>'`n_n(]ۡ_/ά,xK<\Tόv~n^1'өöieZ8{ud?y|OF9nwjLW*Y6χS<}f4ۘɢکj)5@U1{[ vMNm4% 0& X׈Ѵ\o|gKsX{K}vEC1WUWҊdž~}ǿ [U6ȅiiӲѮjZqϬ,]y~?Onm}V(T{G?]eY+<ғ|tH'k=Row& ە *.fg3[IjtETbc,Ҍ)i4mk߉Iֽ7c`$d0ϩC>7{,?)nJ~Cڵ= 4|xô >AV>o%ԣzV7TV6O4ɑ9\ռbU2<9T[ˇhU֓-#_փmńZXyxك?/ރ)0+͸Q.gIƈ??%şgYBj^89]w>>uAּTo}jWT6E.][5_VnS7_>7? x?޳}+]}a;xE7BmE]Jߣqg~Vvzu}#\2-E >S6{&mlּ06-߯ﮧ2^'3If%'}YS)鮜=p#[}l Gb +yukH^P߳=pg91rRؚ//Qտow L,5gU`pʵ}|n_%֚}/^ ?{$x T!+)$ + eN$8{yڍ_[w;/zdscS#CY28/e2 oEGZWuʠQ/w҉=$.owe\3A.7"4['j`9K=3EW/ qվ25A[uY '/aF SJv2G5Oo񚔥_Fc~幦ujBXh+s$3>^NQ<Lƫ^MMѷg<2AO{Ǝ 1 5Wb;1'f$$4>vr5ym#}GFk~*G*l'ʅnZd>x8;u|@{>w#[Iq[xh9("gcq,$a]5h;\ ~+dl-ck`†I΁@vn!S7~6]z!WVe[9dq5~精[zyRw?~R_ҎoyjNf;g<'2]!'ϫEW|OW N\p99pQOVgGѶ_^W ǻ峃72tN]G%,L}*Uj/OisD۴6mS_p^κl+^onL5+W k1t7k 36%x<[QXf/.|n!" {a`Ens>gn6~=?)X,le'?ٖRY !G.R=̫T(igAN:zZu^&ۭvX=;6O[ {Wt{vf<ї+9ʗ *J>5C|P]j'$lGs-j["¹UoldT`KXgNQn۸㌷wF-1W7'ER?f*psnv!tv8gz_1~sN-FZ,3ҩgbC}rTB>W_N1&UnNb^!d<^\&WH]YgqQQ-6 ϛG1k{nZc'1xCD5p[&O(Ña\yġpN>r#{㻝ތ_Wxr#&zs zھbZbʷ?Ro&录c_huN_Oޭ*SFF\ #vt٨8jsaz7l3*op%!$]}j}M8*Fxqnsr|S̻ͯ=>#IL{1vO%۩pMy=᱋oT~/tz9P}6\w}>YW_{;&xϦ7WJz$~5RC&%[=':& x]u_'kOneq;^H ʆ^=|^ܽw qZ%/Wp]p(1x}aC0L_ONI^ 9\=Ąv$,DQ??RŪzo=۵gi??_|(^˜QSc[iH ~+;eϽެ*|=4t&&k9 69~v`pwe0:ߙl ąQuS"n:dw%ia Ř co1;4"g'yG'{+`]4Yw۱N=TN7nᬯ4~?LRlSqf^o5/S`ii“)Zk;sﬗ5鎈[,ekN0'iB*Y{?*JAb%ۨOY*ۙ0~-͏f;}&9L[ ;7Tʢmz{Wy,^Zɾo!zf_7Cy`ߐV4d' QۮO2G,og =[sj8XW֧vj5eY}}rjp RrN]Ծ} +zFVT1.~SA= CeAk5f>OK웵#l.{lm^n4n p~s\]d%뵎W\;I_&Sͦ$l8R'2N]L==^(,ٽPaWSqDd)|pw_h8dI§V|fvcl~L\;W &ǟ( CKOڢroڳ9(8k ά|~B^#Qg <+jy?3ܤއg <#􉘎k8G5P=ͽt@@*,>Έ54J4,ącyԽzb t^M a +W8(P$nfl[XnOO;C|t'U5}vVӤ^n&`4݉z%?U V5c $"jʻ dJKOn_'{e{FeF*$S2 9mUSܰثp@W$ 5=CCe6=![jc h&0CNeB{V TE(m^㇆?%R2#7i?VrNy |[[KXn%\ %eR3`7N1Fq^!M9dz1I֬{$e~v1wؿp0Z~dQkDRl?GS7҂O;Kyly)Y4*0°{B 1SeSWy6JM^?]YSWq$%ї!?C BI'ى7+ ?k VH>|Ʀ{d}+*sTG#;dlA"z&OŒ[ob:q^V[ Is^{lQiyUv6Xչe-qPQ[6y &h5|ܔ\5ӷ:[lp#{ V*n>3~ ׿Gz,$o+[7:E9#N) 5td$u?vnz3WN++iqŤMm]8~NOy`)U'>jr d䄞w33 3II8ho,NOnfESضlD?\QuX3_C4U;:ױ WUWb+>d{oݮ8~NFVN4rMbow"dgf-o^ ;oW{hu~Xޗv7A᜾=F7sj֛k!oYP%ͧiNxU=w~! oyT}XQOd [[\Xffy^ߚZ+={<'bAx-8mŒS<紒rF; pՖ$6|!_f* ȼ>sX6iukvz:.dv皾]g.|iv+\Ud/Tu;~Kk䳤>xPn0CD)έ. ct}\VYNKL>X {mty(+걈.p囒/Pյ{lU 3ep@UBI~+ZOw7h]\Sg$3̭ >]:,;}_,K9B&$=}'d *}7Fv嬤sra}2 *O7xrpMF߿q](\@½٥ceMCJ{~}0vpcl26xQŋ{&z4'ezem.I-#AB6KOMۿYC Ki~%D}M吴O񝁾gi4!Y*]:~6]cb SCX#d'͈w%?Z/IyД {kI9IʴL/I%,/?"Ȇ\zs& ǡر685]=y'-7 1ᴘWhYɣ[=_<[e_W+'rBڡ5ܲYesKIž_Zi'v_=wR?<&ц={᜔C 2N|YܲިgfaaZ:#rc@j9X>$bœqEux[KYKK+~ZS+uUy,ۅ!/f㒌4Pnɝ`GRq2v Pnֺ_?e|l`Xl}qR+ 눡Y`5֖ uJs>h(iLS}CySyݥ5wZrA Lze-ti=lYx,pp''"aaۨ^wenҔbӋt|2tdwctj4u0㡈a#n!ӊU~2a ǸfY !*deA8?io;՘^Ãi1`Ub0^tjrpA!/ܙ$̕iYku1[y3~Bޯ/FeId~m"^߳4ů-\DµW.f%}o5xv_KXowwraZM5,Esb}*I96V.5ߪ_WWg_4X3XZfU10ڭ^ħxo6HV֋E I #{fVQ4ՃU[{CB߹~-W"יִv46|FYˏy8c.|c-dMx.bJOsrD;r#)B\,}r\76qOJcͮnk=q_`>_8_ʪ~˜1CGק+_$fYu4ݽ#`4W|m4$ڿoYE+WW]=3^L_$_xw3zΊpjmmL-?%Ϸ2,6E S!Y4 >R}rJafnhΚT^/ɭ,R;$H 20 !ϠNN0xmWZ1Nм]Z+J >& HHXiՅl>cظڅ[VtM(RMbAy|) cgl;q׿(M] ƦfޔBI,<0G!$m ,WVɭ}vBNtR;'a}xJ(N<7В9" F",xI-UHSίG`_bZ4-wmf/ofnxX9s2`- Uc_M~4zb'{(3;  z* a |+18b=$;!9~`F()4 k1⠴0}k Y 1O?\+sI.{ ra-x❲YQ]|;FӼ(T7"f3_:% !`#pC;›:"_K&jõʾ.!yc0]"%:+eiIg?سhtqnNV܍jewbb"V8 TbVN:L/qY'x{tͷ/T2DC g_r9\(C`Q7;Ww4:Jg_>j& `<涫F!@V"W-L:?_oK<IIڵQ.{J3\xmXu-:]_b<_MK{r>xElەo~@}rKW0n^Ses*/mqߑqWxݦm zhLV.O 9UAg-nm˳ŽziQ[)?tqjl񈾚ʧd ~T=n:q6´[7 }9 #Ve{OOTѡ?d7\6?4%/fA<^iRvUs;˾8y72?韪vBߠv|zt?.~G{FdNVs?  =ӱg۴1-1پOf7N/~okMF_YdKkMt%') ua{fj 7+hl򞜟P1.gEoF#~{wS{}oP1q>ZM{oBDHu.lV; 2~Yϋ k%:V}s~6nP[EsyybGXNdiʆ^d#x8K. [.M^;ypbBQv z ul23O$o>X[Qo|ϰ2nXbv}߃x0IaF2ߒfH0/)):ICgVW"> ?c,lܛʃckٺ}nWnBdXx9'O'nfg=#fMjFzsSco#$Nk-zLȅ;25~EY&oT: 4%'l+&i;w8)<^ ʓmu3 UCs tCZ:}kZ8}F~]HIz#viؽM}rK:i mE}ǩ`O5ۦ뇣eWޞj/ϞitrwYZRYNx-DZkMn֊>ߓt1mFbFlL}V+z_ϪUқYiW^w֗y깴ʚ@%v]܌zf4S?.yia5߬5Q,/ų f&ul/I꺁-קg7ό[2٫~j_}9=aӡ=w~mb뜸[2:xbpIg2aG?I;}⨎k-&l02a!  D9fB3 X|w)x;4bm?!W+¿bѼ~KYWE+7dQLNjLʷܒrXd .1=sm%w8_jÿunj3 ?Š.ᩅ>dyp M>,Q 7rMO⿉qXL>ܺL!ҙId%V;+A]ݮâ`2m?qMUųa}K.h$/.\3(rqye:=1нӚabi_P£ QfA3|p7<בf2ȱ`18lʜj4`3Aq' ϝjj{' iM_'6._OԦ܊o :}-s ilN Rio3h^WM$&65x _++rfV/Ӫhaփ|aeVJՓ_o~ ,}=_m6Mz-ƌ T.qnG(q;Y[yo5Efn>^4ٴߏ7! ۩lz{ZM,2zs"W}([Xֵ*<ęh UԞ6Fkq(v5>Ont#5)3N&Јܕƞўmv, m7^_jdgv|&9Ml%_ƃMEߴ/[>韈{UOf+p7jV7?X|'v:0+3P4r*ւ"ksgt!b$\{ǐUͳЏn2kS}~(}4$p.bQM:Gz/_ P'OYꎕmga|:zs-KW>f83-j<^,9B`vӅMj况IaJ3LuȽղ_dRk|bъ,sےfVj1"q]Vyϣ4S7o׎=NAZ.I>i=T yz-skU>2ݔVٝFeH05"EЌv]Rnv[%)%窤n(gk,oՂBLVs#!+fS>V[ZDw+>u3}]%)Mp,zxY'kߣJtbSzᇗU԰$Ó +}-Z_JWUJlpOx9J8.[Cu%}lc)\Q"M%FZǛ..5^rrzWIqQ:'k۞CǶ8mzzhm;dAe/K/&o^(&.(m/i~\KF<2pA+V%$YV_ƒ}dc྄g$ͨ&^48e_r*>BNtsy->_@mkؖk{ډyRF2`YNQ5,v؛qY6fLן ɕڭ٘/ܹ+f9f֗ƙͮ*S؅պˮܷpfB2p9=)鰜0f1dyr.KiQC!5X5+8"*U>H,Jj-%)cDл9\Q6n%U:w.i)->ۭ_RMkۭvwe)o"ͭIxF#>oMW@O|Œ-/t~3ŚʑEL>gy}S섫s֛ wsCktb~v季ckob򑵕/[<׊[#ϼϞ>0c&q}f$Kqz9/WE͕n^9+JRx7@h!Z q(x"}-;j`f\vFiZS7^`=-+J47\+/4nd^P0PxBNe{~;+,+$I'% +j 797UHg4nZ qyf} m̩[ertNjYpv eNOeH:+ʦ%O==^K<=``&I+,:$f&$7s?[z}58/h\Զ/4>8.*e&Id\CW)H8P/I ()O]Tk*c2ó=uh!SCWܪJCH nr[\S;׏ܞ<l[/XpQ1d} a0NDgV'OgK>t'٫?bN赈vW6=&ǚd0E>Z#4 Y#5 h5Sy~?~#o`Q e׀fBpHԸ@O7CqJ!Q88dg+?N Lkt*0*ZWtQ,8~6ι9}(?cDDzuR}Cao.1H `ӐkuiE80ӈM1!}V83t~-h@!'"BJ}7ӛM,߾a4b-o8G!_['bL8~4kxV,ŵ$\Y,8FWfQ<4 8"YtNًswM:6?n{/b˗l霃3tnm} #Ƈ.z˔V0()h? [bhB6qf 2yj/+*e_, ˮםy<36|E-pN>t=ln [BD}J{EP l #^4f(v=ΒJ aHR/(WǺzxw/7˪[F1AWU TIpsۢ:Y^ZiPh=d.O?pe}40 Enk'|f5|L/'͕g=TWw]Co}w_͋}z5P;J4wZYNf\=TdgoqxW0w*M Y褷^3uiV }>"7[|rPnH::%TeeB|z``߸}Kr:n<7e5RD4 ~3'0y#>O\~Ŵۡ2Hop>egawY9zpp8uo}0;]Q6۪Uy[al7[O'6R ge֪mansʔqdc?(^:Ul 7}`NO4v^-ؐB>4>o,Oվc vGuP3ѴCOFMp(9^'4VT?rnѰ/V{}w\U=ǀrm-9iݭ< wJ[rb[yiiHITSjgU•-"r+)vYr +vaJͺ 6I"EVQ\#*ofWrğE!uIbU~~ M9~ƛ[杼3VYwYXPkOlnqCtc&v{qG5K$HIvm~WkfGjԣ"ے8Z~kc{_;fg_R)<ߠA%eO,jֹؠUIudٹyuNOx}__듖~s-".IyWe^z3&W8&#l}cf5Ć1baRdc;ߩCsv˒.CAej>=e{ %Ż zw eU2|m}Օt]-\rz{F2紾Þ<Ի[ZO5"|p4^,x \܊޳_{>hmjǰ{4߶nw^h;Tl~QIf{f6çrcfOi8/{bQROVs'VIBGj*+'- )fX7K#ff >X[/;їӕh KFfl|.ՋzFaf6`َW۷/Y/UNɋgF_U[y9bKAI27D}$ (_;ھS''k̤cM=zr\X+q:f$Ʉ2q^(7ӡf;%j|VU' LnkK?Uֆi U . Z% OWt8repδwH@:n-ne} gKjCks,X@0pp9v~#|NS '8OyR̅+ +A.+GtX(hq~_["^r,ns&]:F` wap׍D`{0qe%={vqHߛL&[D̬Se+: k' dA7؉K5<J""jgzb|`HO u(hhUS( N[ ' <>{hوh]YI⽈AEEzzv9J$|Ɣ|$38P^}ŗCskSC8=y>XdnHS4q贞g/k(x8}X~lkT#dzKd j-. zynJ'$hbMl pALλk+b+ڪ,.R1`~ryGM%%gP?ƯΒ?^A:1H }imd>5™wU+1螪xN!haK]zYŵjeda#*F,f,ڧ+_A7pfw%rl*_{G޿7ʲvT$r&n^s|ٸn/ɰœ -;Qq_L$Z~\ݞ6?q 9'ODyO +^!Λ2ϮV+K}jWlyC0COKE7B{FY++GӠ@Vp/oqTU矶LOߕF臒{% ZxE=+ŵJz:9GЛ:C.N?ZFG2-Ved$ٶNr^ .êJe@7zrRr;1U/nrbTk?H24jq"cXWogʠ1T'~$ȭtY7K\@,5}jUWhO5ot_[- VwVĎO'd&l^Yu^^W-+V>e&5k:YX՛i+I_dzjWk!b"&7lk}IP3i7GǪo].ξ]ƾ _BH}a+ -/S<݈rGpP6{vܾ2K]=/ &;'6i悲%~j[!_h fVݲBpSCe['^Is=8`m+xoڟDޮVamk<|ߩesYjĥE<=,'xt~_vڼ6.~pb;`};= c![w҉uiZU pVǯ$Dvlczwƿm-{&^ݬbKU2+~n[&'ӒFIWjI{jӖ",2~KX=vx8j0>K5_X_G%Ð,Rfa<9rE@d(YOMb_W-DT0s^7ue$95`֗K.ƍҽIJŢZ>P`sVA>e<Ff5FVs}BG6)@T6f1~9Yl5ܹYkս#\Y,dc^f|#qyU͕oԏu-0DʅX?羽ky;"sb$Ȁ?Wcz4z+F?d@|=fMϵsi~N=GB`\a|Y}Mن֞n6Czrק[@~}f ?wFoY`oޥwDFU߶wvkVoU}=IA Hݚ:}P4GV;?-핉$wQ=RF]}xwY;Z}GQ#Iq_ObVFt[_ܝyIK3Zyxyeln\Rƻ- 3fH'jsI Q7 4/U-{F!~3}zO^ޓIVpVvIYzrɰfRv"_Dp{E4Sq3qhpKg5έljג'G|)=~|Zsc}:>Iۊm =WXXJk+Gj }zw6 e]?+cakV+ČW^<)yd; ψ{!<1ARݯRXUf Nѹ}^Y-_]mb`x,򻄶ݜX+gS[j>3m+_*,'SyggPp_d<'ibFY,ؗ]NgĆ =|TzA ^dG8\<2{d.mKdOJch0HS*QXS4hef-8z G {'v$XV'(Z(?BK)c93bͪ@7? EBlh!'l$J$Kq [q3ga]QKwSs/vix,,ɣv0XaM· &֚d}>lWVVY͊h+:Nsַx[] 돵<6ߓ;1=-♻O% 7,.9ZM I"Y?|nﴀCgh(.,YV=Ԝ!= /"jڟ[> 棊ǷMr٧UyJ2Lɽ YwV*.9D`AV:*C'WLgII fpۧ$E4jum3cYcyʝ+C41Ğ{6#6MU ss~k+(F>{]6pT:&- VXb\35 ]?Ԅ{z1z "Xv6|;6@u[k}۴3֏ӿ˛}w}(ˌq_r}x;q݃ҿՕ;ZEIɊ_&gǦ{wir\;oY+-RE ;u`a$jq#4Jgک6雷T<1Ӟ?Ϸ=Rz>h'eyAveip^$aXooI VWQF[Ϫܨ묩F75n]r8nO64R-~~ߵRW oFUc%H%YXdEP/'O.H luӳ}1̓j'>}]%2Zs+tD?Qǘ7v]y]+9 ]`:>8Cvmm:!jQ9/,n˽xu:Uf!*흜1f9׷i;NƯ gSz)?Yi ڥ//o;G7U7\$kb?ؓIz_B:d:ܶ6n7ǎkzyڴ~> KMzqp@x.Jo*h,݀8bVsĖ#sfrt˞*Iky_hZfav]J{2DzȻP6ɵvZc-ME<;aUzqfe_J4V'jCkZ[wk:exi9|mL919|pLHqQ^~:v]S þ}ߪO3?7'>X~>9goڿpd25m^#xDuk;.k]{nM=։sc_+ش_?6[m11ꡨr|Yd;+Ev~276O7("QiK^L"MܾF0M x6a`ecet>O_بXQK."Q{p|Io2mz0$6=uf{c䓥I}{J0pHW óѝUž+!)n0[a8Q>'qMjxxOQ'K]AkܮP&7r1QS>=jb-A*H냰ͭ}L ,_ɼ9ZsW2N5tjtӄz]gzE0jP V"VߙH],K>ʚ^{n~Ra8., Ai. K !枑-׌Gba1aP4vA3vcIs"bôt7籕7N㄀]y ׍ۤʲ_P}/Lj<+s&EUUvlWq(tď)@EoTK0WhE#ѧⲲj;f^_;K^uqiX_ y_> )fvۧŨuf&CN((SI>+gX%Z,GxJyN=Ku_NPy[7py=tm;2kzw8f[g۫[H9snHW?+pW$x_G6bvNfK#Z%hr^uWNԻB>F eh\vY.>Ac2.#؃FQ酝VG{e IeˆCq5ӌVg֭Ku+¤$+ݧ"|zp3ewsgk*c$ Qz=;Wmk1tgҍ}9c8\EPޝ։}>!y}$3I4"-)RfO&/ O7''5"1ck[YS_8ZmP;p7Ol}yR-ݮ֊G'%glk\ndqugt`auo&f¬d5ܕaY8 -|F.t5y8y4ʚQ+vNp1&/Ooe/6'phcH~wr ojk7n?#{bjgYXΩrAZ';tr;jݹ{jdٯ=꓉?K[[Ϋ4FiZָ+|ePWI weWnIz^kJυC ts3t]2=%' Kzۻ_տXLNN>vqjy"k=vS65]qŏ#] 'WAI цerF}}x9 na5~%{.7yQFL7{eȾPY'F/t#@(|rٸoHڳe#oc>oW,!7(#VŧڡM%P"7s$wN?U7ZBk= ޹W|ݸP-"IKߥ7r-<^SZA4vnϭ8uGj; o{x߸ muSMQ,~k laV-ٻ:Ψ[՞A|+Q,Ĉ. J]g9$|k`|c,^f@&d+thp.^ 1IF0^Ca#Xkҫ:{qD+۷+zAzx_bg4 ܞUu\a&@H C0Bd<<T " TE-VEJjmm<紧g{{~O}^{:rn]ݐOD 3m,%/ϙW~op7 <8:9gb:ZxW'6ݚڅW>k+_~U?O0wOpO<[>0#C^[xV17SOt"pΦ /ֽpĝ{⃝S=d"#53Tܨށ⾟U]5x}8D0 ;},GDc*}m1 v)Z >ޓ醾6B ɞ//ۊatfLj)I栺V^ƃ}qhMvA0[.m$})tkzyC@b2J/T?iϠUj#ot"*?1t3G2͉d=ә\&3_'׵S-Z,zYr{k\H/9H/g}~Bdv_rL#n%n|>/gچ_LOV_QJ^;(f!FO5xlӚ%*tHTGȴ147XxwWÛ(_ zmǓI[)7mu;(͢B!VZQO+kC$;};ɽ9w;An孄 zx}˫'T#T5o8r\lzgJqC4/); >eaa{V~A ~0ŭNg) W CAk;7P?NFaS6R$AXV :#}2Bnf~=Y}"K}^ʂtog6)S2~q*ҰU;vM`{Bg/+U|%f-u3ǪmӔO7p_KٍʃƴMðLV& ce/XX!8=76jgXGu:$>M s['57G{'Th##rˤ. 8l+]ySO2{ vk%YI M8g$3fDn;?jɪZ@_ k{V4Ň{mj %;\,guU:џ͠uLvk%`F74yREd{L76r0^vN}o:|nI+G4opbf=y!CE\0; >hwZ,U'*S4֧{jVwॴ ][{V:$sXBXxz6ǾވS;nhVLWOs+%WSx|K֖=[$zo;ӽ{gթ}YqzOowR˪!g<Us\3#zue;KkLkF>C7}\˼,DzQژ}U4hJSiJ󽍉hC2WE:yU6*}Qo͹=<-'qamGT;h\^UYֺ'}'?KdM=]ڳUcR]V+ߤ+j߬~GܤrUr5f]&Z㺾:!w=[V?@>c,2l]Z6OnJ?l3+֍w$h߻՞)'"\Tl#qsd6}/CkgU{W u@e/H6o{_ N;jﻒ5[6{1n5WU>lvcY}`F2>1E#+Ht2,/me㓡XƮIWVg y0^ku^]ѻrSEJlQ3NܼUX07L dNK/-tE# INr(\Ix1imJ[{»j. [ -RO/TTQƞ=]kEida;5.%%I_N5r@l(Y27dU02{ֽU=V}a!K-Z'&Rޘؒ"Q|/%eu8j|*߉jdY@U~rxn+x Q4F{_5 hIhZF YHcw:3<|nO<#}v'dy3ǗB0˜Vgųyf,Οtz~>[ďJ8<=KaV"򿑼^l?q:zj76+/in_ON ~qʬ ͛]'>#SUYoVf?,H -G.24 cea~2aڰ|}nb,sgvMV#o5՗WjiWgj3pjҟN=~al\?,iϑDf4gur[8-^tĞpDWU{KeiIv]#p?;3c[oWr-Jc4b 搛l2m><zq0{8Fȴ&ۡd9ݽ6D]֬{iwf:N^')y%6m&/m^nֆ G3]lëyeP˝`6KƳ=-_Onp%ǝi1нif!>*~dwY$1L]1GNJf}4}9TKf.Js[!iDK-QӮB4$+FX֏VsܾSv5ŽCɥ1⫟p[+}i4G3X[Wvi}=#V?k^L#Vz7{c}pO![|3K!F?4dx覍x3&3reAj'Pn5k*/dz"i+΁|sw''wyź&2Z*BHCDlQ#2X?p9iFĉnu: >Jz`b|Ģ6[;zP%_{%*NG{wDh~%OV;FWXk. [l1{䶕pxNdupQ>>{gǎ?7%}QuNZ콭YkV*GI_ovO;q%x>bϋh9ޜƹHj98yjkǵÀpi'FV'N']#>o3r`XdVד;$sM!݉i&>!YW7g'V' Y5?.Y|EEޥX&;G5?pyx6{G_7OhdĘU]rbU4)ó9H=q`Iů'[ߏmN%b0ܡZGޭǛa tvNg K9K+3۶{ydIu4U oēGnێy\hxD`kݼy+)' fem*Fb:JD$~Vc{^ξwAݦZfZt}R]k̞Z؞Y:2wГCj_?)9 ]td*v}rIS)U&Ӈysn^l77Ȟ{0 Ol qfVM{ZfZ~!/#zZ%7 -L=u k[kZߟUvu}˶o[Xѳ}΃+Cd>[{uRZ7-tzV!?4;/ F?$69F;U$588[$;T*/Lx2t' v$`[I|KCYoHgQ }: FMNR,`7Wznsy0P}2=o?_T2Wj6bÉ#ߘ{Nպ^ s?2`mn0(5J? N٫+n!!߿G,Sz/kx A |+~F޴~yxX-F'M~mTn,(" ':7Gc>Xru}JAq7n~W;XU%*I̿'u }'=jL%^$^H}/L^򳾑=wM%/MFԇ:`->\ M:_\]W/˾Zx",|߬/4R7OvTd /eyVN1>$PJ,{ǹŭ)a!m^ݫV~fKZz"#oM1i !Sd; X^Z=n˚u/sԽۥd`P?TY"D7~X&Ҿ]PnA¸ςLҕ5ޭ1 |ŠĖp/'{J7'&]ӿi(bx^hYYoq:e69<BD彵~,>hǸvh_mcX, ;52>ZeֺJb-Q+I, pԏIN7[s+zlIvq-['2]@۪;뱝$KfֺUհMYS?NǓ}r+ӚرW듏/~72;OqcLjK~gOFZo\h)ڶ~Ďx'/nu&KdΩ5>)jl'q"\"2[>Pi&ry||267VZڷtJ: pǂѴ{:~?^b,׌~,P#hIڊqAgr,\Lq77iL EN]7Wؾ@6\1Epݚ?W_~2O{l#uqwpPMkX'Xn vM'H"b,lsqx-Q Eɘ-i"ۧ& w:uVm_^Zq󷫆-n];,͸'{kn RYvQ`0sRߣ6yܴzfV7MvWYY}F݆WGx{}{Mc~X5?LߍQ+}XOl; Kf mX;[biiw]$:8z#ȊߪoX푿Ń/z'ÇҚy4cmE-o˹d`twEyvWrje=݈;w ?hn 88 SVGÚ*ʱ͘7LM{vFv{gv뇗KD,͊X]+K*ue_ڶ絗=qm^zd$6InMfLxYeϳ!'&_"/N%Wu^a b9C uue߼BQFsԍi'OYw1( kof( sCT|`+{ŧ“N٘A؆-`=էʅZ$N`avhCݝ*4 }}[WfkT*r;@V6C}ߺTN)mW-!\I(ޗ=HZHSakDxJ>֍v])fOS-ѲaOh-.ZDdQ\<+X&$  r+۟h\֋;r"eGO0GbUۧ">Ά˒IGXXoXu^>=ynZ"^1y͉vRgOJ:v0|p1 W31DkJczs G#~(!l?|o7uڄ9Bts)z { oަ7c%}N@Rxwa+Ekqyo =N=_mI/~gUQ4tTKCMcĵ'1KCj[mD< Ə |vr[YĜ#&igC IWm +~Oٷ5n~ "YnU$'j'44;N YaW?Un؎MდY<@b=U?οdX?SYo{g ;lm;OgJ)M=_z[1dxwȾZ}{E{-&Z1m,֗Fh߻r!OZw*֮*o᡾f=_QޛE93Biwl>.=ni \]Z`{xVcy KMS ɀ6{kuZ8щӭ ٷGXc`N<)t30=fEÎ͵ءֵF&bz'T$O6B'%1@Rڴ '2+ZeeB|vDzZ!S5Y!!flSm&7>qvv%j{9Fv@ڷ`f[e[wŶ}WiRyۧ4ţCdh;'&sK̑i=ܽij3}ӫqf7ZFz~[` 'oϤOǤ!q[牝qr::0Yrw' M˭f$7g gޥ߻ MU'Z {ݜMs9Sld Qeĭ{7''^Szդ[FAkRo}x#?%?LU֪")\FdߴZwUmǥ5|/ϷBi:jZt8-=7ێ͟xi-'«f=}oQ8`n{1Ϡ7T,lִb֧[=4ZHvncs+{ݤ%0|V7fD֍+SoWUcn_1B&agǣk>ղ[-R-_va+:gl(ywvI9>[re2v߳E|Kʗ撐wG?ܾce:(b]^3ۿ#ɇ9Y5]֮52|}U:VϿg[AߜI:R!ڏJ7IyDPJO{e~6t}{ku5[fƳX/o雗5S\lQvsޭϯτd?;Og7׶*wfӆ^W)g~"9u5lQGKFUU?e>9.>_oIAqyЁc&e^8eFsm6'?5J>u"?wP2Q*Y}Y%cYTf^N퓄vq )ձpj7]}(MRu; 6Žxڿe{PLꛖn]gS٤z{xcxb/VŶGr;ϯbܗn*wv۹VS@0 j߱g՝6wCKggS4J A\2)ɝ{[q6}d󞡍өGS/-߂Udž_~[mڻǷ(q9BGe ٩^BƆZ;cKueE?=M#t;_%i+× Zp7O3zSnZ:SdirmJaZ[xv8='ǧ4&z^> *|yմugV1Bxe!GެrVfO5Wn\0@}k|ɂgdfjnT*Ej۪O49nbkS}:r;7UkmV(dZ%çz2*FlDiĞF^SQVIͺ۩7ߩV>c4ۚK"WF©$rU{670"6.$9*e:ŗb@9b#P* 3LLsq/y~w^ڷDĐZ9)߽ރعp3 jv~Pd-a$GzH׍_c5q~|flRbcCvqsd1^tIXw|E;ra& ίONXJ#"}C,%VPۊ}zdY9 K- n xvPLUqR$|'<o?HSnV]вa<ɵQɇ !+<ӗ'sJܲP ~ PT\h1$yL}k[1]3 W}a;5#+K[;6|4Xu#jGy>SV0LVve)x]#{vMmޞXFOע<0A~JJ_Vxz$'{b~%)cb}k33I?ds'!6[{ڴV"&#WJgb=\oz=Kz(sUة" 9!=Ijp9& 7~3K}soh׻5e1q|3(D""y'_Tϫ{r߭F,J9K_\G֣y,O![Dk\cw3D6~o>B? ':~@ڱn2\2qwem+}UX3{E s zHG=_+"5"m /^ʪD7p*8YGq ,cR=0Ultۍgt iߧKΆk_K5?>Ncf663[,T?>`ذgtTO3׻]er2yyd7~w/$NBT5Xa);'Wވ[h:!FwTűN9!uO8E9rGuhxN81=zi\NSC4 t')ĆMҾk&QSGWf]y`8>lUpzt|1Ndg~Rv_TGkMZ19?wiFe=jfߖ͜{ʖ] V9;j:wbO]kecw@wϦrN&6,;PYYDׂ!#tqa\wg^:׃kÄ́5oUsWv%V3˒x5"3>>9LFNO9CPy8b<ʱ;ȿyv~|qub}V+!OK.~꯷яSBmݩX?E9wQ9waG ]-g}nh|5mqu }F_ZNu?ʸFYaiӇ3 }MuKx';~jua#ff6ѿ~$*'#mY+'"ҽO&jdyeXZ!˅}LtIQ^׳?TՑ& L2Q\|`SܪxzLV_~^tl,ddA\_/ow_hm^-,#|x=y}~vKbb͋(!U#ふӍնek?8vu?(_<>mIMIIB;k{V]}|Ԝ1~LJT.čٙi=,9}2ޞnv~%T\eɖGz}l|{5R0VvղCNgS?llex85n^R ߜuD=Of˜ZI%?HrDD\x>=b KX5"JÐG[˞iԇkNr5oQefq7Wᗦw\;ȯſ)E:!͒G/PO0|[Dܣc矒,yA??r͆:eyx,_i1VTo4K1J+Nsw6LIjgV'{ mqakߤW!tkyosISt7i6m"/6֦ś ؔ[j>5</[e68< dpmct]( &pj}ǯ5&🇍0\/ܘ m6&[- [=n>&ֽL8ey?OY53|onz` |Z%cv'4^{n-& ZTp)yǹ?0̂i=]9m{i5wꇃ=qY-=ڝjUTa1Wvi 4zHYBT#- ~ѐZ%6GO9kňiuq{3\Vꈵy14"pA5-0_cqģ=wxL{[q?Dz?Xwi6]T M^lHy;OC&/]bS4^^jڦgiԚn\ZV`unpӵK훞,g*]4kCNPԻK7\ᬐ%o'*{糬̋LS娔U3v56{8eLc}Sv{e~=I<9yX-7W1,LJ#:a;=VVTv v^F^MTcS bOU$ʵZqg69&;-w0ƇBEtIng Nl NdY\voH+Ԟiɘ̪[ѓ_J*ih_<}'aŞdu,R6|Zzɰ6mšgm/[88b\s /~/+sd!_6lM~:)Lf?tyDئv=n7ͶVkqsTL;kF单{d+Fs9{;=VYEqCe$I8O؏# 1׫k{vh#wQhw͏ n{oOŦ7G]kFX8?SJLFy+=~3[lk<ݪ+_3atEs4nUߕȞ M:( AܖQEY+ jr_$530O6wb9NzXzEVWmSΪkpZIo/m\ID ]__z-p5j Oeoq#͖xZ,|yW~y6Eb#NsU]9I^ +w{V&V yVQ^Uך'bkΪubUy\=~q?1[:q>P5U6o"NTЁ}tjHV)ָʺǟ8 W<QIKnTZÿ!!Ԓf=ѴЫ?XWVXD`}gZt$2G~KskfφNi>݌"Y;Ȱdt>צ_Pۃҝ+םsB4G'?3aI;VitepY=hs-N20>eq׉oV}yA&5.MVw5=w'uy}օb2|}p;yj 07tg9کzj߸Xk B6Αv$;4}N{<9$XnyUM/[1W!Fe׊,ztR+]ny@GLZugiO<V'2'Ŋ9<>7g6&9x ,fش2V=7bAjsCY}us쪼3~#Nܧmյ~snm90d]qm#5rj!nCBTp}7KF!=<1]Ûî}i2=8sq?QUWS67Dۧ% F+| %USl+nx&۴|Jc[eӾ/z埴olS} 2鍛[zOacіT3M;ɇTa_A?KJte;izw熳c>2EOmw՚&zFXN*mZſݪx}5cvkyvư2Ѥ/4V4KC-bbCwla^?J>groyŸ9-}sr]߳k9ܚjo_Eg+PBy?_ldFugwqx'ޓgwdc+wNن5Aό6+'tnq+OkWcl"=މvw*if召]u[ܒ޳e')dIt"e3Ep];œ͕{bqRmH7BLKgNߕi$dYhɨ S1:9I] K\FVl\T.ԧ'#žSP86{K6XRWՃ-9~7E=9)8On_b#+{|oթ c WJ\U ' ?<9pcQ̴M7F"z}{Zj}ssjvǓ3W+ty^AA 8N5n2 +)Գ+7Ƭ|ɯS.{[&̩}_ })ovY.fYw];sNcΪ-a27KVW#G3K[O%U{jHJxN 1Vi✊)}( G%rEMCgf2<ͣ=zDxctl%X V.v11  ?N:(Y5~Z+=bU^.┷lz&}7 Kn #ISدQ%fgЍ+m^w56$tz;2̉]4XivXߝB nfKWI'[EP+) ezɋڵMkAwD;*!7i/ qO}G$ŵqv^[byP 7qh.q҂ZOJSD_jdыLT 3*zߚST"'t=@᝸[ᢞ=g6rԮfܟtZ+]dGec;2W ~}3wG >]_g7b X&OWlE\]=617_z2`:̨_iV/ n|$ysLsX=k74b6+ j?{o[ _ӊutrd}ug#l0JNV1aUѭj|>k+!oe-p,E.ӷ=.a" ?ȖƪVQ&>7.^iC ۪xhV+mco<+ +6d sU%֬)?3|:¯?N9qx/y/# S']|>g_")Hʽn_NyxxqʹBڏٓfMxYs5H 1P%` XkɬݰKsw qJż` F2lT^YXC5Ô63&͒1dp۴R>~v?ȯe|/򁯩q[\x&q?S*Yq!P4"wE7dm_-dg`KKNbfk^pqlti V/OߙoW5d}@YyT&ʌ 9!7#w3FÉ`L%dy|3b57 ##&}SjxV*_Ƙ$;”1c;3zWc)a[&901H7O nM=;,VZIϠo:^" .%6ϛS5ZwDr2?%Vp#TY͋JpĿQ3V^*5#"2FgUEg4vS&hȞ4@{?dkuڴ~^F> ~Lnf]R#†0yc^^N"K=~NO@\*xzbSߜݦ=OXp UD7;ܰ@lB>OTƣӃujӾyD"wJ);/O6ڮSzN-w iXHtϪ)IR\c`%@5Ogg,, 8%d!hsaT)gnѾ+ >5D䵒mTоݫkU=Kz%+=)n @;XF7W34_ܐ/i}ӣGI͜_j{L1χ掼oc%2ʹB?_i.Ip5N:C`0*Xn6t%,Y6GMd/waN_Ȗ:25Y@-DgzFhv9b6wZKl_kb8Va7Oʊc;jqn0G|14k'x:s_HVlf<ޞY+w0;uc88=m8Σ{%6z{=mp/xn>^}!xvkpF wrMIeD%aYW"v'_\>v>d0pL'c.~cռ6z gXX_ Ohʿ>?fVQ_S5ۛN;?-{*ůfψVKUEfǟtNCiCxD$ +aׁ}oX9YЃzjķ;)RÈEwiid;"KO ' mr6 FNfh1{;Ybgᔯ[%1ĵbYÿ#7: fY926ƴ |;oŊ `3輧#O oW~qgt~s֐_nRwAKoEĔo0\rs 㷭$I򱺁4th:u[;ou9 kGWrS-a"U@w2pbQy{ԍlށwцvG3^cnet.3/Mȯ% Eo}U#'rJz&nu,3|; &CCH<7+SƵഞqmT^덏_7"czQ-w '% #O/^Y{Vw\w5ȬzW(JgyCreRC76S$9"M;}JK t4mQRei+H{7v g8S3I% ֞"z^e'Ww8nVxc++kGbc %õ/O$4ל>a[kfgf"/mOejvQX+_8\U7Ui.y}ީWNWeDHF[.JL}}&NwOL>VIzׇYnnhX'Nޡ{L$e?މIV ^<>^D7|q~"a^-3$gz^E0b- IkUM+3tzE߾ݵd<;8>>`"q=>xb%7d);N~,v޼rS^܊wMVn0K'MS9ƉOp/5ZK_#"޷Wib!:I9[ WM_֜'ゴM n43{d|nb ϯe87&34*omוq}e8K=?SaA:vq/;{[l$IЦCCr1sy4鉛mk+ٓ ,T Blzu鐝c|?tdoB ,goSu6TAdkZ`x̯L&ٯUct&bdR8!s&af|_/$v㿾Fs3 O6=l禘պkn^?gZ?޿5i>gi!L]8'b3Onys7hݮR畃9T :mT-*nX[c#*XAOȗapoү&= iqSxH Ŷ6~ouwD˿`]=m9AkwjAa0eˬ֋5/^JgNJ;g#u4|)XV8.R+ɰ|ϔ}&mǴ/j5 Qֈ>1%k9enlmLrʞ6\S |F٢xb"nc0ߡr4d6ȚuLg |b1Jb:tF\4Y ǘbC:EH2.ZI\;*CE٘A2p`qNۇ$>u ܣp9>7S/e괏nx=:ϟ5ka=ոV? qYyؿ7COsWX~dw=L{:>FEG[ g2xGݝXz(ߧ 6v+ hUX9݈AX>zEμADQmyX[xfDiVT1{3اk͸YH`3Ep%ƼDvki8+[W;j>~6ݳo駗 ;]<<Oi1v+l16S+ey2ωEs30z[KҎ+YyHaݱ8}jlw笯KW@.y f11C0ZqN%wc1x醽ۗ@߂FGЏ ){uOqC}L ܌9]1?D^=k_HLh5 V``Ce_F3K:F=1*1ïZAMf3BDSdH4S:w+=70>0bYȸF ;bgc6Ͼ>Cڣcfsu~g 1O"c\ljûDFY{6 ~NQ_{Z.U3FYju6+C6C+П#ouWȬYzebWџ=wz[PIG1bθ5Ӱ}:i~#:{Hw9~Hwܝ=Sc^ M`]F;1pbju2G`%D*٘I7*7PTtN^;KIU*x yOGcܼ\4c-kO}+`2S%eCVݾ'S Cw,*ݒIśzWʖ+0z2Z6KX]F永B3~pu9eYa@>R33#ZH!W *.PWMm琢yCS^'Ɔ%oT?+|Je.mM 3LPk'ax1w>,hs̱*%Ϩw+yB!eDH%;fiߕ5uf#_5U4eߵIc kj"01Ff G}s}m2H!qSXg>~osv$:K gN!_Af]2B$g9H!cM}SM^OW~T&x뢜1EE.ji/OͥV"2Ӯ߂/q-U#kGW{j`{`硁$Eͨ,Ja=-':Δ(S)D62{#c|lCWE7ٓ(#y~tsKETҴy4S}O7D2Vu{+9Qv2ñ(Sךkb3cXwkld5)p.^:!gv ~9,uJ}Q:oMYi56Fl;x GmZgme\6il/D;xlKQ4ފ3;0̞S'<ߙ}M%'p^Y /|k?~e,f>N+erp[ ӃSDwnFL tw]7oV>Hi'E}R<y%3ti1n1kq `KlP΋ w2^Og(^69 Ѿ`,P=9.fYϱڞ/?0}l3֗sǰC|'9_ietlEj!- jEAݪ+fW #uܽ]fztf {c(. CE M4 FduoQn:bxfDJ} n NjE3.O{ۈ>Jfca{wfl㛙ry6[5^ 8jyűmA#`eK7n&2P85ܱai9C\ܳsXfKg"\g]#m2x創ywk zO{} .e(f8{l҂BPn݋9KoK1 GxKj?]Y~ly~_ݾf(IiB3Q'o= 2;YFe+FH!cW6 Ѻ䵾0zJ祝7m<6klܖa|0wz&[i5K4Iy+AG$ؔ#|^{yN&M­e {BZH&{WȜ匘u{)wvhCyO.o$\fTe{}c作#ġV7@h^AMkG_FA-ۇļ;lKݬ1O%cvtlfŹ' <"#h}"{ u'uXsGͳ-%]{lF7#/\ /y'sߋyJFՠ{7/zQ&k% }vv\=db|:{R-8qUZFW1߭ [{8&Wi4o~ b'עѮWZ&rvv]ȅCYLWc΃,'DXqWbM&$c?b̬WgmcHz%!b&<PXW}V;9Z&!޴9$W %OKeF7& NqGV w)js4g2 $E[#!"^YώE ߏx[7s1B hY.!{> {oup0tyZɇwb$[ZgOI(V;hkVBL+tǑ12Hq)=iNHcBg^q1F: W[ͬ˷&ZN kyz 0\ ciry}qmj9gtd _m5a+ԺLo [W x"QK8dH\mMS<>To=$#ݼ[lxS.o; Me3Y=2y23>"ΐR~4<(8qkDNhoG` Ul2y-huf?s. Fw걷?c'gg2R#*JlT|=քP 9IpKY;eF>>;g5ENꎴZiWȥ$q8gn |]|Fʉqz]J-vaگ3XT49 ͸33>o̶}2+D\ȃٯGRiE3k~'g>FtѨ8_FU ]›?pAa(1ӗʮplϘ9fpo'1TMo#m?n#.wFKoUEĈQ-QcZ%8iޛ8v}pjbݟ%-y aʮ3/zeAs[}*}C/ֽ!|ݏHgH\_x"z'#h!h_ Rl[LԈ=kCY$ Zd7Zj9ĩ㉝|H9VED&QkFvO}hBX3l2!SPfʢ*{~RFJ3H=Zkͥ )L<+X+ b7*\n4[ȝadgFwpSBav) gԏgpfΗr<ޏb׵W"nU;,-Ҭl艝ޔ~YJh<#{SZgot,Pnj[Ȭmxe3koԻ+gw4c"f6@Թk}̴4+S%]ӗ"|%;~GߎkKuynt+RS5}[VB)E>B{׊sjU!oZcք~W S1| 4L|Dm) Y9LP˼/#Ese2\|Pc&;Ĉw9ILs+q)">Ֆd5v.=&F!jL;Pjf|hcgÎĞ"lC#g*IFyNW}sqshnyf")&v؂ =xvs5nmI1U?Jd{"f!ӗ.!vol;qp*1F Q{M6.~gb"|y]Ḛ/k S:߭「@syZ+jݭk$d( |~y"+^"*z,fiD\Y/Zn {51!{#1H߰yztKcC$S?qfСz#U-([ua VMwxg*3_}/N t#-4[8FFbڏx3k.# ᩽+loۅ<}3/|} qt( #WG AmP/T t,#ucJ#}#EHkN71'1RVq'-A#3U{kWShUS{uNo$`9fYQkK>WqQ~^"q = ?΀#,y[+b@xi(Tdлy3Л*zS+D7޻[i|%3c.6@~3Jo> gq T+fU֌w u<+̆NF߇3OsV.MbDo)z Yځ<: apGq׿:)fsYM];'+^ 7v'0w8Ճq\xBbťBS$yK-l!s{ɭHjOԛk'1]/ /Qo[Щv ԵN͊~~#{ڮ+e宬hݞcEڵS[^sYޝdbX>np33v/9;j̮jITט:"~HwwgrKFF]&bxܳ*:3]˰$Dh7]e{(w=Eާ`B9x k'#qa fpd6ږ S̙̍^o7Un-b حr&o~^v|Ϝ#$VcǸ;1zj 5^r<[N"4/ŕf_gb+8 dtqy=׊Dl"+ZiVVbsfÉmPǮgÞzZ#b:%hy;~T۱FHv:n&3.~OcX*|N݀R$uF!<2z@%0Z$Vo̒sAp…xu'A Ïy- #9em{c+~uټ֘g<Iߘ<$w^y~ۂO4`Ejvمۡ"K{ѸX8B3A~b2tY0"cp#ҝ<Fynux_O%El=H,A~Ebtz=?3ˠdh9 ZS _BKhMO^희γ\fj+gqAu|?Ϲ{?wP(A[wf[!z"6L[:A_30%~z0dM`_Q͇2Ę̧F^{r_o^r9U#| >)W[gT񿀞̐h8V7fp}O5=35:_/6JNgcNa{`6xeD݌Ȕey^xW8K[Pu dgjr;Ymk]jQ5Dk?Bn=KϞ:t/{\ sϐػx:S b(niZ"c}px1>h?ې\P&v‹H5lOV{i!~qěq7E][6j6/S]+[ԜңNj w<%<_BX5Z78iAo[x e^ 6 Km_< jEޥBO5{viO R[A m y5IϞuOF]XAar+ӞbB!Brְg'_j˜9:fVm/}kI4a\ _=Noqd %،Hq4ޝ`Ɣw;teD-R=ϰ?zz՞xX*g[ =:#My}*lfWv:FF´zi$k[W\ m~ }Z,CElNTNoAlUI&s/j ="dihd}EPūZEBT;t1?YN\4DbJdF-`YzՖݢ韃5 s̅\qХ;K`TXw ͕f-ypm~uom[ "x d3H5{CfFLeOU)kL5}p>MaFQcg`OB~|D2HN/CQjcO"q 3+| 5F2R42.5n&oSdɎXJyqc8Rb:,y=]ͧ.bvY|˻ R^-E&_Yw-Z^>135+<' iPL$/D p ߽,Y߽inxfi Z艞V{v/TN!SjU}D&fxXE7_֕|ڛ޵;єV538=w;~P;4u4yư}xs̫B#*HV Mb~+yAXPĀ"k:w2i 2Y]y kk7X^6g&-Qo/>JEo]aIؘehשpkDYfʁ;5D Kdp8{FbV{rxRN/Ds&x)6y5IlL 8{&zRb~ m^Nx|yv#ﲖ̱ ;L5S8 ˣ IcL%(fu}hۘEz2^Η&aCM&x'|F3LCf) YYM4sBs}?_twX!FR,OlOF][BCP62*ħN54DZ}z-CwB}o?~_?f-0+јހ9]-rvMb"F]mMZI,GfJh%f4nshogO>о[(FXLyt:z΢wW?>鳊1Dk?\^1JѦT, dߧ P^~zu g+RC2fDF7faG[4NÑ.GrY7l':OO8,FiƍYs;q5^WyJ냟K=d #SÙ]H),0sy'=)H%ٞGg*T 1KD}QY|9E-QeTt=ZO#3^Ʀ<:k)4 6~:R5u7Y8O:,=Gbh-'A|}j~ͷ;p27^^;G"+sODݽD5++*1C 6mnW!]CmD' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf $(BUILDDIR)/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/ConnectomeFileFormatLibrary.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/ConnectomeFileFormatLibrary.qhc" latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ "run these through (pdf)latex." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." LTS5-cfflib-9a123ae/doc/pdf/000077500000000000000000000000001156222202000154015ustar00rootroot00000000000000LTS5-cfflib-9a123ae/doc/pdf/CarmenDataSpecs.pdf000066400000000000000000005040141156222202000210750ustar00rootroot00000000000000%PDF-1.4 % 3 0 obj << /Length 1121 /Filter /FlateDecode >> stream xڭWr6+xfb ͮ㙺5$9@d1% K@ɁAܷ._&pI"3EexJ ʣzyD"?; E*c8P<&f"Bb2"wqb 0N&!,ezr9̷XەyB2+FVmԽjLk5B_j{h փIv1njm}YS3 2% 4"9>"!pugu3IʤWSZᄙd41lJ{7`Biܭ ~bVC#"t:I~pM2<&qG5kܼ ~X-[PhsMJU 5爪*ㅻa] o-x?zV}!Ǫԃq` 2{\Nʮ*o.?xCҺ lIzH@"cJ/ ji)Ma+\vWuDLo13m UF2‘rou0 mods'vXvu\ap_C HRuj^Օ+ұd`n\5fj +i@ro/B1Y:~UY1@ vhroubы#mb9;#)ko%uPwFv+ԕ8 %;I`5M%vb֪}xy!)uƉrbHR?.6| endstream endobj 2 0 obj << /Type /Page /Contents 3 0 R /Resources 1 0 R /MediaBox [0 0 595.276 841.89] /Parent 6 0 R >> endobj 1 0 obj << /Font << /F20 4 0 R /F21 5 0 R >> /ProcSet [ /PDF /Text ] >> endobj 9 0 obj << /Length 899 /Filter /FlateDecode >> stream xݘϏ:+8jmU *w %kc,=?~^DqAz`DJ&Y.:}P!ȳ[p%< rvξϰ< %B /g_`i> PB ~vMˀPl;e7mc&r87 VWOqv-qc _cܳ]Ͳw1hRk؛M7u[MeX/wyNwJW up2k3?ǍJ8Q!LGkGEi1̼ HҡQӅqOSe뱁 b&Q̼${Ђ<OGfS7f%S!aQ^UUf>ΎHZ׾]ݔ _&L ($]$_>eёێ#FKLD"<7=/odw>VLBNb_:F2"ݨɄOSнJ7{m_v#u`o){_^jJx<|4!*muWHc 4}jc9:5XUWI|rNg7}dܖٽv0pb)NaaQn u܄告sē. *arXhk5o~X=1ryě ZO@{)Y{V7nGKL^+M}mmbUK^X9+ˬB0zN *27XdJ s ovnL=#௩~_06&O?7FcSܯ)a^E+ZͫjkުE3ݪŔ&Hv_$/IX endstream endobj 8 0 obj << /Type /Page /Contents 9 0 R /Resources 7 0 R /MediaBox [0 0 595.276 841.89] /Parent 6 0 R >> endobj 7 0 obj << /Font << /F20 4 0 R /F26 10 0 R /F21 5 0 R /F28 11 0 R >> /ProcSet [ /PDF /Text ] >> endobj 14 0 obj << /Length 294 /Filter /FlateDecode >> stream xڕR;o0+nLs€Z (JB)ڟ_JU}=1nB;M"s_"IdUEHj_ot駁@_\[ CGO3?ydcޙ)q8ņ-eHNt>FD`s̆Gm\)몶jbB&z \Dk3cl2hoolgt!!A>L3+eԈ]#b3bF޷@n yXN0{Z[ЎK Sa9AW Lj endstream endobj 13 0 obj << /Type /Page /Contents 14 0 R /Resources 12 0 R /MediaBox [0 0 595.276 841.89] /Parent 6 0 R >> endobj 12 0 obj << /Font << /F20 4 0 R /F26 10 0 R /F21 5 0 R >> /ProcSet [ /PDF /Text ] >> endobj 17 0 obj << /Length 2718 /Filter /FlateDecode >> stream x}˒6>_#Ua~خrvT>@$FB$dD/P h4ͯohSuMda%2¼7wKmGn(J$O:6/MqEwYw+o|4;GaYכ-ڴ0& Ӻ<iI4,c\m>7:4+sDE'5 0r'u#6s'NMA2f~wo&Oj>y6NݟZ96̓Q S%mv(WmWQ>m\ {ȿ8Ie!gͨ2;WhfivAm`4ÞÚ ៣͙IQ8\U -DE;QShv$ fqv a2/l _$4W(ʾ׹7s)>NI(F@j4ڝQOt@:;0Gu<~]gneK jLGۯ8weБe`0 tb鏝FSy1B-$m@Р񌏫kHqHpK Q)xb ? A$ 8"( 'Fb pdgVL# <~YSio[Mh lIjPxbTp1*ue _э8`I" gud)a'YkqF9s P1?HVM3LW!b7O4ܪxWSÕ)?[ ?-:-!=9$Kʾ(<`HL4|&W8? 1tU[#!wAžIdSċ8H1* Yܮ΅rBPuVX!HtE\r\aP2T"SbzᨾLU L"g'3ڇF{lq}v2όgx* Erf;>` ':g@dX7bO3 'nI4gֻ@ Y`PbԞ?>좈~G `KzHl6/cٴx&-PYfGmV;H,[P¨NIH=$ Q*iQ\aC[z>ߊ"*MNV TmK %䮍eY˅BP !ˇ9(W %IucvIy\ HOeB1-%NAG@QդUܻ$X5W߯d* *K{QԞ} _1AjLD<^˪2)Kىhq݉Z {ԋ#<:ݝxDz3u"br!pt>0Wp (.B\`׳8FqW)(A'ey`艩 @Dz;Y$DoRyNR=(*ma >Ɣ&{N _9R㥺qU/;ZꚸђUzM܊u1Ùa'g 逎hqF6U;M>+:=1zipx̋;q44\;6U1%reu>lķR`-WDrCn!?k9@"XRDU/>iFL{!}g$M ;u~Tu)dfT OMhGdzVEaHbUx0h #i`3ʒ!9HKD@5:!`"ΩMv$= * ?ngpz$)9ӥ-d]^rN5 2ݙ+^pDiOI<[0kmOp'|K0ŀ's贚 CjG.K9M0IɄ2$y\}{aMuɫ:;q&oͭD%&${_|N4]wO^NKj$Wk3NOG3 β r ]Wk|+-ݾ50OS |ntu (/rNnCc[}^biy(Z|ؗcgRX XQ>Atoa 7mAtn^zktՉzP4Xq -9 p3hw1 @gl%p2i_l^"A `6[)gG6-#d#bWP?M:.}s>CjOlv/FzD_г*eQ,B/qZ%\ nZ W6اE-e')ޣ & ܀$w ,I=UZBQZ%u_J5t=J՝&8Aن_0"ϗ6()9g'FAgy>*@$zt?Dou^|~[E|g ?v;?_[h U~MaV%O6yX%ՔaQ7 S`T:"^.. M/j](yuL&Mw{-B9ҳVk.50^I #Đ%EaVd%ÕgCh\7(@˴(? endstream endobj 16 0 obj << /Type /Page /Contents 17 0 R /Resources 15 0 R /MediaBox [0 0 595.276 841.89] /Parent 6 0 R >> endobj 15 0 obj << /Font << /F20 4 0 R /F26 10 0 R /F21 5 0 R >> /ProcSet [ /PDF /Text ] >> endobj 20 0 obj << /Length 294 /Filter /FlateDecode >> stream x}QMO@ﯘc{:IHQ&&ȡ釒@2pNf7سDpYiW )JiMj?i0Z|(6u@`Qa HP'¿ϖ> endobj 18 0 obj << /Font << /F20 4 0 R /F26 10 0 R >> /ProcSet [ /PDF /Text ] >> endobj 23 0 obj << /Length 2686 /Filter /FlateDecode >> stream xڭZ_s8ϧ<"lk;mMYVlڒ*M}%[N_$A.^$qPDHߍ=9| `2[L8^Ld9wu_=OfiWT=0{ ('MU+y3{{K^O}Ϲ !4Qy|/ng/0&FI26_ytxJɃ(_ſ.n"*?Uz+dr*?R5Rnή[ jtfҪj;j-$4ؚ2pfvlɕE4z38v D씧t6u%!(Dd`^iUe%uT=Z=u#-$%_Pe!$`w0Oz6Yh!,㢄y[mru偅mNQ;V)CE|ӷ][,U8p~]jpAqø"0V9?)5euuqЎ!]H4C6ʪ*Ed.]v[U᢯D'k/9vҺ^t[$_)%G @*3/ʽU"k7&BĮck)}Ro0m0`C+jv6EI'Z=U ԕUͶnU6,`* h1*Z&(9lCwTμ)pjGZ0 u(m` \4Lù&~?191{|Hיq`p(1V2?kg RP*3LC0*ܿ;zmdx%Ĝ$ =Q»Y)E><D'SE,u,9 CfSN&3X [ArqŰI%D\v+K-4jZ `I׉ʼn$qemrLʕ{lpcmTF3eǖGbx=Pg~ 3]`Jz $9I?!nkv-0Ѿ b-J&"KAs&mҧ3 )sPt$F('Ky>n;mNDl>19m[e(%: YD](ƼGw6_`HInTd&%x+;8*hSn甽$ Ȍ #RLk;J~NVS2vE*#,$Mh:E^aeg<s)F* vΠ`@ @ʩ yun).{a:miKlFFžhxM'I7VJ_aNjP~nT`4 #?E"7H|[a!#ǘx@V=ύO>5p~nH%]h#U۬)j}=0psWO* A9CDn/dxEo̕N&pD[>p$Ş߷9DN# :Z$t,x{ 9g2eq6GudIP8rΡA@?Je/s5 xj~㣩3; 4&~B wngo7V A4$Zn Z5||KPCTX'|ΠP_mjۺk!źt -BVi|J^!{qpΙg}@:*H])3hkA?<C`l7_K|V,aJd%`(C?[α6BuʃbpIƇ@9z(}^}ϻߜCzJJXGt1zlk4e/X4O8R&mRuV&H ʾ aaN,,ꦪ!sK󼭫~xd}P?6M S4E)'|'%XGմBOA׼uϮʗ*k1)b-0?l''@P/F^l#4-ycnҌy^}YUǽ"ꉲ/>,]JLo1U@G^ͷ-O,hDaD_#d6M*|*g^yzP̣ҕZ9_v rR%d 6che endstream endobj 22 0 obj << /Type /Page /Contents 23 0 R /Resources 21 0 R /MediaBox [0 0 595.276 841.89] /Parent 6 0 R >> endobj 21 0 obj << /Font << /F20 4 0 R /F26 10 0 R /F21 5 0 R /F28 11 0 R >> /ProcSet [ /PDF /Text ] >> endobj 26 0 obj << /Length 3051 /Filter /FlateDecode >> stream xڭ]sݿB̉%Ho;_{4v<ls" I.Hɴ/b,~CA+LfJH\Z'0a݇VtտT˾j/@$yW)MUHt5Qitv#X6Vѻ^]~@(]4ɭ]OW?*M-V~iJrW&MԮ4K/eMosG_ ~F}9cC:Ov&[v]> [8VݸB$Juѷ)z\_IK""^u/-ݧG+kk׻0zF>#T>-۴9}Gsҗ/b.#  |0Opۺ;8/_ L}&L͈g#e1Ᾱwc?0С!$$gߑĮX;uH,lUQY,CʌBI5&-"հ&vQa|ٶ(t326QJip)4t읿WȂ&ka> Ƈ 3ɒ)0e64ހLhL1eGߦCYH|r7r6д#Ʌreњ%̬qOY~˓7IY;\8IpDžio+WXFʽSy#Rozex6b ?#ah5K>x&~<5!m4|Av%JXĿ,џ=JEj2nB^l0:m@0ʡ@-}OHoJ,j,k>Xb`&N&84r-̼H-BSBÿa_LElf=(-G+bn_LӀq#&;P`{&x#-XP6"C% <!ݩQ]z4^<΁xRP = 6as.z׹~h×"lTdXv 2UɓF!F ͆Bzd ( Q"#(]3kwPŀ)Xi \`TIq[[d?%5E_mO| b _%Q6FaO͟f?jLq.e;w.[f es:B>b`c*sζ6U3C\/ 0TƄԄR"j[@ae'"Uaux`: e_d©xuss\ TNLJ+J4+@P;kǓLg âaw$"ѡ..|A;BjG HL 1~AV쯏.쿀S ₺Hd1qH0 CRKxG#9,Pt8l&JՖYf~QP1Jܖp5o~- npta-}!dyTV}[On)b3_O>9<Ȫ*,TpK!3(N0yWjQd pbNɍT5oG:wˡ޵5.6@y()W!sH>*B7@1qIC{zXT Xلٵ[dW&]:iQ~'C~'NN;I2=f44)Et q5}y|ZXM}1 -άӡ P >3bhBm̝1*COiRB3aF9rVd&Z7Q54T!ܰ:c \R:]{,+{"PIMPC 7-dgH+5s~!?~EJC><7N (q˜`r6FaCrv! K h(T7RHwQȑ{4S%3K]/Ոy[:ܗK}Nfn7?Ey\S$i1h7r%zIiuJ&Jy^y_w"@uߪ'!OV vTDL !b/O L/# \ìvk܃ϴBs]:bLINf=['h~I"aݨz4 ZCKX,urur5Oo) 5;+gѡZj]6X oi*]f٣H+oNeP=M5=Qrp]V>=8#% nSpPai!_w\*zè<D!(pæsthW3i(r9Uu]X+<.# K#] Y]2_`nP pqsDJɦ0 a&Bli3~P̢ւ~zg\b?_.<һdd[?R#z~bu7`zP,:[:PSIˉ ~1tb3xd5z*Qx,^7q5F47%>3I8 vGɕ5c  ~|ËOb(E̢\?\B31jر9sY_IONt [0| |FGY[%}9zӻ{>6Ȏ*pE I.XAt?*ycu endstream endobj 25 0 obj << /Type /Page /Contents 26 0 R /Resources 24 0 R /MediaBox [0 0 595.276 841.89] /Parent 27 0 R >> endobj 24 0 obj << /Font << /F20 4 0 R /F26 10 0 R /F28 11 0 R /F21 5 0 R >> /ProcSet [ /PDF /Text ] >> endobj 30 0 obj << /Length 2406 /Filter /FlateDecode >> stream xڭY[۶~_G!@$x&vX=IOZVl$R xױ[?a` }F+7R" &cdf_l~ ޼ܿToP; !ʺ6Г JDƛF۝ 0vzVJ&u{~NFFN EjppSPD& Ba& h H&ݸ;9c<9Mf\v女cU]DdYx &6/l LJzpC]h)߱Ő1 G&Ht^TUy13nU8|&ϯ]V`6Ttk3Rx}a<#;o';;4,؟q*N {D_i\XSZRO(^x-_+~%6NGu1RH^%B|>V?\'RX776u<zmu Ć@*4ʫ S#B$O_lG:1ӟ){T>PsHvVJ#7᮷swK57`UJ‚L} u*8pBECB[DɝvKb 3FW8?&L±>uܸҰ!?`P+~h"#ZS$]tz2}|RD{߮A_TeԜQRvJ &\ehp{Gj rH-.]~hb`w,wŢh}EA @u !Kxkdp*O*xR]$pFNL6pl$*MiA.񉂿-͢?EfY{Dg` _T #tƘW?>Q:mX`|` `.?:1IRV"vûɏ;Z]~\S[WF qHx2rSԶ&Z,JMy4EFdll Ui'\yd\t+ϻ~v=0ǒb Ḻ]y/ʚ3 l5@pE_Q-nʸF5-}ӜN> rk3=q"FHR)xK0#ym~n endstream endobj 29 0 obj << /Type /Page /Contents 30 0 R /Resources 28 0 R /MediaBox [0 0 595.276 841.89] /Parent 27 0 R >> endobj 28 0 obj << /Font << /F20 4 0 R /F26 10 0 R /F28 11 0 R /F21 5 0 R /F14 31 0 R >> /ProcSet [ /PDF /Text ] >> endobj 34 0 obj << /Length 1847 /Filter /FlateDecode >> stream xڕX[o6~ϯ$5˛.,)bR?lXAD,y,~琔LLEEwsw9Q)O&b\($yŒ'4 |] U,~'d*KF)W}/$oxPfz/PŇ? шyzQ)~Q (*m$ Íu׋wF&LDM j*bڙ{[#&UnWW3eNa~ЋY.;h Gy|>ui'uP%$4) I\:X"bT[\-yF"Z2FT_jԧ%G2~84㫊 ;uDpwش;T͝}fBk=?4ѹ^躌$g"ƧY p$bC,`C8`~_-Z̚ubqtT8=󜘩k;{fJ">czk'KY0z`Gw갣Hౌ0$ 8p75IpDI&F)!4"A7çvCrZ1l4wM]Sow"MWc"F7f(*R`/Rkv&9(]m 'zj(3,q(^BYܮt 儋;U3O!S0Y6pVMi&6OvC9劦srv`<lڎhHn܂{}q >jBHPqRCgj J 4eQߪ\URLI!R$I l@m\Q03lJs(B UBh*;[Lݏϲ Lu~$*tx #ƶf̶8|$F< ;ƿB|bQ&c0Gna?{qU3OZ)&%d |,8;eTIǖvzL;uo&2c%:CVȮWЫ3}{ ΃-uv~ȃH"t7u}Rju:wgu韊o$&ةC]NJSZ)z=IcJmST54hD@e4{c,Mm)'iogU0iKc K'c:a8S#2I\jQlںnx<*͜9 \2לþPj?-vi>|3s $ex&u2oOTX' XЂZ,[ߦ<R?f}aQL \ܠѥTQ3`3!n7ZVm{3kASt? wj_:~Q s2{; Oy:> endobj 32 0 obj << /Font << /F20 4 0 R /F26 10 0 R /F28 11 0 R /F14 31 0 R /F21 5 0 R /F45 35 0 R /F11 36 0 R /F8 37 0 R /F13 38 0 R /F7 39 0 R >> /ProcSet [ /PDF /Text ] >> endobj 42 0 obj << /Length 1481 /Filter /FlateDecode >> stream xڽW[8~ϯ@yql:jUvHp2`R HHtO\?~-_S(i6zI!ƙʽ2_dV|˜f+j|^JJvk,_j8zDؿ !*HC՟^iWٷE#'~aU0V^(!zc]~AFG(Ljz*va])])e3 !(e./+y«dۊ?[dۉCVu>]u'egRds+g7Pq"Tah:Q211}kFjՉBi1a3MIŦ< i2pPt]S}'3b7r*8E!fމk@ ̈́ \!p.qNY kl ?B0.(FTbw<2f "*!GFbD)u,.݃"B<\e#in$%\rѷbn~v!d x[1&,!X߷jp-WbsC 4S˴|~RT6t3DWZȃKkghW?J,*5lSPru;qdT{q],BT7%Ř,x8T\FmhZ+ޤQ~wרjyc!9.anR'Q" MD_R (#^jh endstream endobj 41 0 obj << /Type /Page /Contents 42 0 R /Resources 40 0 R /MediaBox [0 0 595.276 841.89] /Parent 27 0 R >> endobj 40 0 obj << /Font << /F20 4 0 R /F26 10 0 R /F45 35 0 R /F28 11 0 R >> /ProcSet [ /PDF /Text ] >> endobj 45 0 obj << /Length 595 /Filter /FlateDecode >> stream xڵU]o0}WX<8ƖHh[ybh|Ϳd Ij 93Y$p&>! ]KoL]U@đN» # P1Bh~ZX3Gc< =Im~\4"tl{ q\ A*xjf6&}orCLU:$t7 c(YWNs9~jN6-)؁ (Ъz2oMrM|GGUR+ kZJ\Lh "%UDZGJifn]nç2Yj0s+e,ڪ7fUgm媮N窬:Jk:4=|׺?p(B fB=U fDصpHg&Bj(7@" \rNmJRF&GcsʻlA7*"]$dubuMs()CBLۓ(uB>FPoqAc+ƻް endstream endobj 44 0 obj << /Type /Page /Contents 45 0 R /Resources 43 0 R /MediaBox [0 0 595.276 841.89] /Parent 27 0 R >> endobj 43 0 obj << /Font << /F20 4 0 R /F26 10 0 R /F45 35 0 R >> /ProcSet [ /PDF /Text ] >> endobj 49 0 obj << /Length 1765 /Filter /FlateDecode >> stream xڝWKs8 W(,zPSMtt}̴=6kF\Qn&~AdYi= H>-1-c'h)ʜޏ՗,nnj:ԦMi:srN5 M-RgkUq֭51R>hĻtHy## Bzܼ~mSemo;:,j1ͦT}kfl"ؖ3et.pbQ"խ/> ܝVv6 m 7p s1F972mZá*1kPR֝n-0~*k96FSEf 0/?ͱ;;Oo텣 cXk[]eݫBXuv.c(a!I_,ߕ@8\XF} }u1_wᄍE^ m}lmֺ8$>@ U}0j8 Czצ NuHԂ5A#gub`S=@d2R<#rCX= C5!T]{*ȫ3 ~ܴ: ; $ɜDzsZV L@FY6K of?9$T/ENs4o:lBbPN(羻M7ݱ]0m z#t|mQOM珒"$+o7<@` 0t]24GViE OҠ덮ɐLNdRu.ګz6sZJd/x X( D"h{ٹF.`[pxcF^)R6"T ΂4jůҮ[Sw+uz<ҜBl Rpq!2դiY2p 9, ~2pj(PGw`uӳݝ y}'<%[8)q$O .^ 1j޶;TUs}K!"? /,l4So0ƋHxe@1Λv2#BZX sE?Ma:C|3r2UǭK=^-o2z\eXx L0Bx:mj/`5,e'SߒeK'nM9 %=jخuo&MâkP*;,6#d+"ؿrCuW J-Nvz=^7jԋArӹ` ɕkh3{cG~yz1-&Z$P 9I XN249䄔? OlCNX $=a%.jtЀҞ[WԠ!Hnw&N|VNn*" 9dd:mL57}MCbB{r[\lTh:yXq_[`X a5,[2 ;}Zo=7Zhk) , O3 K-xk7/')> endobj 46 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (carmenData.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 50 0 R /BBox [0 0 661 318] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << /R7 51 0 R >>/Font << /R8 52 0 R>> >> /Length 53 0 R /Filter /FlateDecode >> stream xmSn0+xtfn6A-X9=mFVE\!Ёy"7NwpA [QV08$Ӓ}xd%zxf-X|7b/r)^੢$,K|ȊNJ0ҥ"df+mf?wK+D:vcCD<Ź`[F4C\0>WYjl%JIeSІå+rW&>m#Vgg/N 9;ݬU~](%u,x\v|ߤg.(+o$;R{Ӊ4<b IYͣX]o&Gg6c};Ku A붇k֘,+VMMx<;Rn.B~o> b5NX;%`u*+2/Wp{*/FZP}ܼLe^򄬈vעˏp8>\ao5}p endstream endobj 50 0 obj << /Producer (ESP Ghostscript 815.04) /CreationDate (D:20080917110123) /ModDate (D:20080917110123) >> endobj 51 0 obj << /Type /ExtGState /OPM 1 >> endobj 52 0 obj << /BaseFont /Times-Roman /Type /Font /Subtype /Type1 >> endobj 53 0 obj 500 endobj 47 0 obj << /Font << /F20 4 0 R /F26 10 0 R /F21 5 0 R /F28 11 0 R >> /XObject << /Im1 46 0 R >> /ProcSet [ /PDF /Text ] >> endobj 56 0 obj << /Length 1910 /Filter /FlateDecode >> stream xXێ8} ؼBFzdi<6`KINU,Rz ,baX]]?H>Xdz 1,"x~ >ݭ桌yx2 rEU_ 4b\<`{_> !O$X~GW?h3104fo&q2=fg*R,0{'LȌL=u[l·&;zk1: "E,E~.R=X=qgM]9Dn͋J & }U$i\hn;PnWTO4 yyGq /sQ-7 I,2є_B:m(!_W5'oy5f"P&,FQbԨm_l%uֆs@бye~t˫b gw8LYg9#YgvS  v4l!v ;=bF PribB`qR>TJ.T8c+,XCe/ UYKy"u+K;MV%oweMPvSi0 }T8d"Zl_Q!W =lsl|lt.C+6`ܸҨ-:Ll~:Y%d a;$#Yh'|h򱑍`A_zM,dm`aEI?}LÏû;{D/ĺHģz@KefḧGL՘?#+jw  9r lت(C_ȫ-g}Mɜ+_,{;r`Fwy4&wH|1z6|X.y9I )23ɏ8m3f?mrXO4sխw=QirrJj.k1S]CI\$N'>7@#ӡ9<4q(,ԧڸ]Q' ӊU h}՘6}EdC$PDU]0.r*Y7Y2u|ɠj*&ò7wUH1^\K#RjziѠW,C;(K3~yD($G7,2Hcl9dMA0-881;VśG CJ@&'|).2%n'|+|&rAX E,)f[M0Aٝ}Q:EOL\Р&i.6/7xЀAZW> endobj 54 0 obj << /Font << /F20 4 0 R /F26 10 0 R /F14 31 0 R /F28 11 0 R /F45 35 0 R /F21 5 0 R >> /ProcSet [ /PDF /Text ] >> endobj 60 0 obj << /Length 3097 /Filter /FlateDecode >> stream xڭ[[6~?GS]|S[[5ٜdf7nU> `b=~0aO]k>ZG')KcO/!C$a"MoLFw2kr?cq'6 39?N~f*O?ǧPû_$h)Y?d?M8S|6Uw*lCUa9MYnk֥Z `c] dsT35γ6k[-:ƭxza4V*(7,ޡ)u--T*Vgb$:alhK `/Ŗ2I?R>.f]|;a-D178I|04 .s , ӻ % Ob8h4~@`A^ 3, y fbyka.o61ʭ0,Mѹ\YMsLu x:7!Yپ1, kmI#͒/YTWcC~k&E/?oHYSn2h@(LSOZee Uy<ؤYߠb :3GUhIvBwzgQ 7|5E ugp"tKRt3Ђ: ,H?љT,0iYdw1B?d]Hr'C lb3,(X,,1Oi]ސջ9Ri<#2[,۬r`̋N&|IAPVRz`E^ɫK.!~ۨ0 .?3޳3eUv);]mk7$jcD%x >s!*R |W$u Zȡ@s]/f\ۆ3#9xBp -Hf AO@|vha`0S1ly _vgz refIȦߤ{PC _!߄ c.F I(īRIk!`Z~k_!ޖkC]Q =Da4̖ sLnĵƥ+e~XߘnAqAS 3|dҲ1m eMďXT_PiN~ny@*8%XfZ"G"λc'ZGpN+Ȱ^]EM%͈dJV&wv=mAYٶFq KOAò8;X#y:-,`[G&ȣC}"In A8<;5D… wd@asD_th&@1(ا$v 5B\[J"&Lwu0`I6)K,$mY_wYĵ%pO=2D^/v|*&3(*$&gyݭRŰ5A.Rk2W5GͶ>]Uϙ{{t[D *f:%,ٔ<ћ%,ߵ9}k~zx@ >F@vKÑ\ &nC3^nƑHz/3i<ӟ)X*xƷU!{Gv ?c|?d{ɚrpEQ`)'<7Ye@q=[gW>z/`OpGuL~/pGa(9*,pN\o)ñ ٳ}8g{?`G={!{ߋMU,(|JdzE^}|aF$3g|:u\o~ݳ>z?di*A0E2vZPCԿgy>( χ#;L[>| ކ@۠=Ȏ=Gv4y~/r7GKT<7S[bƇ{o|PGzu oc`_'ݼĻewGS"~k㮕]Ԋi^|phVhI{b񥒷-_&Q-H|i@'*?=dEe~{FO[ ߺc N҉򫵣Pf5F endstream endobj 59 0 obj << /Type /Page /Contents 60 0 R /Resources 58 0 R /MediaBox [0 0 595.276 841.89] /Parent 57 0 R >> endobj 58 0 obj << /Font << /F20 4 0 R /F26 10 0 R /F28 11 0 R /F21 5 0 R /F50 61 0 R /F45 35 0 R >> /ProcSet [ /PDF /Text ] >> endobj 64 0 obj << /Length 1960 /Filter /FlateDecode >> stream xڥXYoF~ DzAh@IE@$rY^2苸7On%w2tkGH\: p3y2.[p.ΫriCx;3OpoBO/q5B~{[$|v~D%cEI,?qgT;_Qb[7( #‰xȄLiͼ.?&7" "+52x"b, ,hgW!析|Ǔ%.=cZl;yLЎ"7f))~|T5ztHWʚe/2{~*թ%:Pyjf(eeRrn4xUnhv|.5}{i^^ehe*‚7R:[3mJELsPAIu61?BZk7kFy\$-F|lY+5ĝorP_x3)fH&otC3|L&[]$w:krȎGവk%}D {fٜyCzc@E_#Ji-2@yniuG`\ {{ d50PI]يStTy{UnX]cmLW ܪΚjGgq &[Z?2ok;<Ϲ:)a0Ń$_syٴ%d j:ED29E60F3#j6L嘡6O,Hsү'WF}kh6:qklVeVg>&nɴhY/% ݖpļb$?;MsK4nvUC)xWemoR]WmL{šwAR_l,u.N'qDNE9eW{ʻsmr;,C|$Vd>-u=Ħ+1 , B15H]Tz3yCiyu6J,GJCJDUAM- ˾X|o ƴh0,EnD!*_i \pK.KDc[=^Q=,RfٮD)pB:=,Ǚnmy^~ˋ}AykZ2GC'MVњ8<tdQj-PD]Ed&hENȒ|- br 9B?o ()rO#,,fAq>S1EŧyC?<碿KKXġKc?9U٪ W{ģU4ZYitlɜi #L=r> mXO*rRn()puy*)aĹ_c1PŠ; ZAgi`@<2*(}ͫ endstream endobj 63 0 obj << /Type /Page /Contents 64 0 R /Resources 62 0 R /MediaBox [0 0 595.276 841.89] /Parent 57 0 R >> endobj 62 0 obj << /Font << /F20 4 0 R /F26 10 0 R /F45 35 0 R /F28 11 0 R /F8 37 0 R /F11 36 0 R /F14 31 0 R /F7 39 0 R >> /ProcSet [ /PDF /Text ] >> endobj 67 0 obj << /Length 1586 /Filter /FlateDecode >> stream xڍW[s8~ϯ`3kY"t&u6l[{A1r`76v>}:w]n|$(Ym⇈a߉QFU|qV7ԧ]b_sWmc8D1ЛzmX7tB{~s{wϮWg? a(Ng= ;)l~p0 ѭ,go_2O?1Td@! U<]޶7^HݼRF/1vgA=t*1Jтĕ0VHvyS5fKPL󩻟pesgf^iΔ1%0 ()2`le(rEYOcw׊yӈ&JRGMIax#@W3Ϻ%UE3NhCkF띬6aƣm~D~SdXiޚ`pBSEj\4/VH3 bQlkYIibkO48F1fC-zd6OU5h.&Ofo~"$$U#Whh{x 5C00cE;>@"oYߵA5oӆUKg3)^TۭEZ7\*?Puhj\xH|1sT)a q/W2!ֶ;3UӈT}.3#;ࢲY/7XaR.抇,R>Uҟ6sNvGߠBlE)Ͳ}KpM5F\툟_f Aw)eSߛuF6x2h> ursWdÁ:V:-Aq4V#=G *8UVJ=\e=iCVX_D<ϯpLBC.5(4Q2fY$֭=rar8?8mXb,@V#/U4lqyKKQc⾜0ȩU>\b,y6 <*NXChG=Сϡ:PܫbT UrR "OmI }i~NM̠@02#Z+N" g\evCn!\xb1E  jw`;B%5bQاfuնCagajSw!#X>KڗZѦZ/TYjNL(915ǜ[]IYfkJ3oBߋՓ6e;$0 A~{{ 89r[10{nl6]<~2 {CAMj~Lkw KvdF?їF꙾r4R O/%o$(_N_bc̦L}">39%B*{ˋIZ6]Lv&C}vh_?^8%(My*3!c3$0eƄ.J%'x6@p>ö&e]Ah泓=#!>XKC?&sQ endstream endobj 66 0 obj << /Type /Page /Contents 67 0 R /Resources 65 0 R /MediaBox [0 0 595.276 841.89] /Parent 57 0 R >> endobj 65 0 obj << /Font << /F20 4 0 R /F26 10 0 R /F28 11 0 R /F45 35 0 R /F21 5 0 R >> /ProcSet [ /PDF /Text ] >> endobj 70 0 obj << /Length 1680 /Filter /FlateDecode >> stream xڭXKs8 Wh|gj['3yn&{j{-:֌-4 (YVI}>;_;܊Y85[ZX+ݟ 7PۑM-8 Zl>V ?Xqd=iэz. \[ӣ1Jᵝtcz '&WpAʭÙb: g-d#{NM*Nȍ|3,+dxZ/RJlp >&V*CdV#ODm5 bTX \`7o'8hn*ml3vPS/88>}1IJX5|L )fu72kTbpP̉vaD56s։ܜ!Ϛ!G#k'yJFI#IA&1I̞JB'.;j|iӈ `mZ㷝_-=x,Uw$ X6ڻ#Ylp28G$}Ht[X,FIw@E(;3#GMIsAWo; ,1-zKǜz¾4e&+y=i!|5\3옷>])N(IDEcpaW쌴J['LM="XypXװljeP I] ٶf/VI58dA/hHe&8|x~'ϸ?aFk^~2 (rm>t3:wyCu0ӕRxP1m,'0&Qq#wOKv`r` W@m=f,nL`;dVGZnKy*/I@OYUzeZ5ƻ5+6;dRA%Bo'h@k&c;$YtnM_ 8)]1׈94ӟ0/xMnEz4P '_p{:E8CbSM|$B*.Qdpj%0e }z ǃ;SQկ`17qbE+!Wٓ~CFQ[Pqri?4 endstream endobj 69 0 obj << /Type /Page /Contents 70 0 R /Resources 68 0 R /MediaBox [0 0 595.276 841.89] /Parent 57 0 R >> endobj 68 0 obj << /Font << /F20 4 0 R /F26 10 0 R /F14 31 0 R /F28 11 0 R /F21 5 0 R /F45 35 0 R >> /ProcSet [ /PDF /Text ] >> endobj 73 0 obj << /Length 2149 /Filter /FlateDecode >> stream xڕko8{~df#ȶ]}m|AD,y%I -EvHp83b/ֻ\.Ib],~>_Xn˯mޗM} 0$4]pZ+9&'^|pzBD/ 52^_q!_38Kl_;_0˂3G_(X"paϨ6Bl o^V󍭺(b%)2co]CD|2}۷m=ѧ=\`/]g+m~zArkP4~E@N&4,Syh &~e [>mwVe}GC< ,s'u$vl-rh>_U7S]YbnA{(gOeްpb؉vn=0)lqu8-:EjZ۾y=!D-m?O LV1+(/A%yCXgD|{^$Є$ u3*vf1@'ôL~x3j bHOl9ìpYO1,y[KoێNOfeY<>¢ +a>y}rH5U,\\!l7 ظ5Iيe>0r|41ȱf4c,,鎛iďhc}nj2ICE2%B]}[nG~N'1#`2=J'xAFc2N$PGD py ƺWhJ NbyAn󊨂U`U-^Y\ 04{ ;x 5s";Ou~!ii=rM1OPbݓgh7 m#{PLJN\m(۫9IC23Kr)a+,~n''wΒSKPP`?.c5i?>&1Ur0HhH^Hkb!q "}(gNd7t L箙 TI9tU* Up z-!eO94,M&Zj={C.܁Z?@ZT_ S)Ո.SPȜ#з̌3ځެY}'-&ŸC5*fʿ; 1>$LE;U 5%ư4gM. g_AԨ  R՗c}yEcsŇ=sVr$!pܛ^ ]5 Rq̧+"ǧO( mS 0C rǼ `w?C=A'WYlɇge5h:z|{Æ"5" dqT endstream endobj 72 0 obj << /Type /Page /Contents 73 0 R /Resources 71 0 R /MediaBox [0 0 595.276 841.89] /Parent 57 0 R >> endobj 71 0 obj << /Font << /F20 4 0 R /F26 10 0 R /F45 35 0 R /F28 11 0 R /F14 31 0 R /F21 5 0 R >> /ProcSet [ /PDF /Text ] >> endobj 76 0 obj << /Length 1540 /Filter /FlateDecode >> stream xڥWn8}W~E%pMVmRr.;)R4$4/ggFWgb'BO}gvPx!wVm|aL)e)i,'W?<7x ~@9"QEN;; ,~t0bQ<4[w >9˳k/=~Lң(`  u\hVV*lQ5Ĕq+>Ok8~?Z}*lf(bn͖m] =W>pѶNil v5M.urܧU10*D}Du߂ [zk'3-}6尼u4ϲZϧYYvuOS[Bՠ\<8b2ኄ瘝R!P Ȗ2.a/ 32riPǸ*մ}4>$ޫ9ZDy !FCK1k#KzQ{)Zy%,  Gㅶg7JZXB=h8 BZOQF>cأ>oxz܄ i)Rc݀OSFC}'jC! /k|zGş:~b$9]dY1o:?Ay#nt8i }3U #1֊\E3[&Je'!;r3E ;mKnAf_C7#v)<~ēC]HPTg(RFq: o;SNͣg$2LV2tVК .7y1cQI3wH@"~ % D*> endobj 74 0 obj << /Font << /F20 4 0 R /F26 10 0 R /F45 35 0 R /F28 11 0 R >> /ProcSet [ /PDF /Text ] >> endobj 80 0 obj << /Length 1399 /Filter /FlateDecode >> stream xڕWMs6Wptf"@Ǒg;SMBP@R DIi;:ow[,х}˩,]"(%(?D)xI'<*'ߣO.BXԘ) up{8{7wb]`D-%AZIq;Rɢ [ZX됀iZ^~8K7$ ЄZV Ig'+S38(åU5Lۚ2N\υgHtN&S[ӸgJu`.ƹ͛lK3㲔9~Hes4S ";TF%Y@ !Ah" B˜"p 8@TN8`|TƧFZ f۬{0pKugFB=dfeZOU(ֺ3z.ʁ!O0r9DBBXS%˱ e|0:c( <DWSȒցkvۧeRRڼbڤi4T1.d[ طh u쯎!d>+d ƁWay+롾Y=Դyݠծju pz|70z{5>rYƅen[u0ʈCntV۫%PONwMf+ӝ\v+%.h龜[^wW*}\GՙXh, !} הhB73!{4h3a&K4Y\ZUjMZ#ql=/MttUaTL)r1qIK.LtQ UKTeZⰑ_-ΐ2/}A/SFxauGۜq1f^Rb!9fI#u&REqd[bҨ*3{$^ZcM&j[az(qD/C|"!L[fPlߴ)iW='vzffmE9ez#w+Q!ww1̾œOب{w2 v 7$aq? WZB(9d&r2%{Kxs" FN!umTכ|=&xDrc4?qeOD!iwTN endstream endobj 79 0 obj << /Type /Page /Contents 80 0 R /Resources 78 0 R /MediaBox [0 0 595.276 841.89] /Parent 77 0 R >> endobj 78 0 obj << /Font << /F20 4 0 R /F26 10 0 R /F28 11 0 R /F21 5 0 R /F45 35 0 R >> /ProcSet [ /PDF /Text ] >> endobj 83 0 obj << /Length 1565 /Filter /FlateDecode >> stream xڍX[s:~ϯə!d[0-394gDi<8je6,VoWo7}^;܊X;ZX+<&Ci6ru=_8۷Z'_9wq=08m 9W֛O7˷| ! ɯj51`[ ~6̍BA-sY pcj>, .2ޫZ}{Lmh!wIx8;upd)U Tg9>N` =2sQnT.;m%%K7U4%Ev8̜Í}Y0". M ήɰ q7bJJ-a4 Gh(UU;ߏ$W*Z2e~n ױY)WBN0a0 a~>g2Mjo8̳!8*3k*/hdۼ-i$,̶``7@{{8Y aJQ0$^0ojP{$5%v=9JyќMQ,m Z.?daZR>`ӪXxyzK|aL2th|1po&k@MAȸ=4kZ_l/ .8HTWdfXҎ؁%HmjS9 CZuN7uӁb29I2[`]IW ۞jyi4 |Ňg Ϫ..o.eEav@$`n7ejjU]a'JS ;MY`W'7?^LE%.4YEIi^ЌTO` {m;yP]l/Rm!4zvHH)W}N@X*_ B®h_㨪f]7%$;cȎ1SRgم0so|_{ endstream endobj 82 0 obj << /Type /Page /Contents 83 0 R /Resources 81 0 R /MediaBox [0 0 595.276 841.89] /Parent 77 0 R >> endobj 81 0 obj << /Font << /F20 4 0 R /F26 10 0 R /F28 11 0 R /F8 37 0 R /F14 31 0 R /F11 36 0 R /F21 5 0 R /F45 35 0 R >> /ProcSet [ /PDF /Text ] >> endobj 86 0 obj << /Length 2129 /Filter /FlateDecode >> stream xڕ]o8= eRgHdE5^{ Kt$*I,; }pg՝f?fq9um/ftp[,YL1$qo3\Qw1k9y}pw_skswn5ŷ ،cvEO6KaE^ i9Nj_[K܉PM&IpLP:ZBVqٓ @'ͷ YN.qTT2VV(.FoBXg/X'\_F!W7"{m e\@:Й-9#EtD(Oeՙe/z$# rߝL:\L]Q}mףI(#փ*2=8})\*e)@6"⊶[؜1ƪ8,ֲax%,RDKNcÂ贴R Nq921ǾF+RVijE }FoI%.2d'c ^s*,ie釶5+St졒2 .m#d5Z/\ٷM,@UV7!Y>B%AT;i4"6)VS4&:ٖ2c3l eh]WwK*~O= Nd-ī!NL$S.FP1M*1YE{g0 aCncq:EVAۂV&6J#A|Y9i6bPA .+xF$ډ:X44ʦuem<Vu0 z=SХr:۴X|`&Qt0̟!]&hB믟oi?:^ZkXט}mQ6 Gy=blֿ\۵zNw.Vm a /-j)9.C(ݝ))"MbE4h m^-4dpAwl #| 0? $kuohD0ԕ!%/g-6qpx0i~GZ3.R$?| cL4zb$N/(/E V@mW 5{>D.ǧl6&98\wf>F`9/WXٸXgoy]e]׼[]n1?ZjhŸ;:ϕ4nj !L5A ` =&4 BP1ۗk2l?ʮơF*,H,=,!LY޸󬮯;Hu܁ǒq 1 1&3gP˸>. - >_QLZVo;`?:U% uŝpzt_A+G߶^&iJD}WqϤ9kjk|ӂ D;s-ncL"ށa`?JU0@q I?r<$˿bt7wnwoPs_Ő{W9u2L2m*[PG~$7gX7e + OvxwF$翐w7? lA  endstream endobj 85 0 obj << /Type /Page /Contents 86 0 R /Resources 84 0 R /MediaBox [0 0 595.276 841.89] /Parent 77 0 R >> endobj 84 0 obj << /Font << /F20 4 0 R /F26 10 0 R /F28 11 0 R /F21 5 0 R /F45 35 0 R >> /ProcSet [ /PDF /Text ] >> endobj 89 0 obj << /Length 1756 /Filter /FlateDecode >> stream xڍXmo6_! IY6/m4,ӱ0Y(y,;JOxZ0'HDlpx N^l|w.gד{ȼȳG` āǒax4L9c̝}B;^ov9wg7pJ3>sās@0i?͏4q ߋ>X:Gӯ ¡(vby\(**YfsYZgʹa?ee7ղF"v}ԩAiYQMOֲm-ERiպ7&_!af$ݶ'tC }.'UFeJPմˢ XzmeVMtA)ײ'iőwJ6J|{1C!K!ym.L֙GM#/k!/Hj(!ux L=zGapOQH?8<$CqF5/?UV=H3 z(VZ]txrv:ykʝ`g!Ƶq'xYՙG,Gڝ\ꎨ*3"mB-pTYbcrݦeC!'=k91x Y0Cg[Hhi6Uэ0ҕiv:~ণm3}k{=jt^3 " R;ɾZ`&ׁ?>"c8M/ڡ!5W)b`W Ð@lq27k\DS?8Y+%t38rm/}^zL> endobj 87 0 obj << /Font << /F20 4 0 R /F26 10 0 R /F45 35 0 R /F28 11 0 R /F21 5 0 R >> /ProcSet [ /PDF /Text ] >> endobj 92 0 obj << /Length 2041 /Filter /FlateDecode >> stream xڭXK6ϯ裺ʭqM*Jޭ݊sPK[5zY<Տi ~2.3m6R%q!&O8-;v~S>Ln? ʵsvo 2Γl,$5> /tPyXkʙ6M7NEgzƠMc;- C ~UCͳ[)ʆkwfg奈˔]5vIpaD8sRfTһ&HXi௫N=:o!;zZuAɓdI_^d7AvI=u4L?b:ӛ$[6uU}dbEx(fvHz3}54?-[f*N˕ / H)1d ﺏ"~dR9}EO'RO!ځ!م?}Yѧq+pMZ~D7Xm_҂{MYwX7(*5TV !$+2%wa3ΦjtEދd^ϴw^5Mp(`WZD¼Sтg"F*kjq#E?cF8I0&`ĝrC7GHQ_=KdSx #=AeO]f91=aWМIN#@LW(^IJ WpD& Ͽ0]SǭJ'Ks R'Ԛ\zn'x9qrqփ,Fp4(X.FE%Man#s=uj?+A' AN\%XDhBF6cY[q@J }*G(͐"_L*Hڣ2z3QONe *o%  0 e6vQ`@jNm%tY WJvVJɵSH%{"0xZHL *w0,qҭXc/nK=3]W54g@4A갷;T#u`Y"\ 4:]FS4@ ox-'p/@Akbi ~޷Td~^ZOUzM>(ʥZakjodloRiL&|,e ?eC{k(iRIo. 2iM|U:u,S89f_x?SL, -33=1t 8rϓo]R# 8 *=C-ɼL=[T \8>n,ǁޙK3.R E*36r .ً4k iCCK+ xyO!s\Qw[?3I PxiqC@3/Zљކ!6]ǫ]34=62"O08?[%OÿFq endstream endobj 91 0 obj << /Type /Page /Contents 92 0 R /Resources 90 0 R /MediaBox [0 0 595.276 841.89] /Parent 77 0 R >> endobj 90 0 obj << /Font << /F20 4 0 R /F26 10 0 R /F14 31 0 R /F28 11 0 R /F21 5 0 R >> /ProcSet [ /PDF /Text ] >> endobj 95 0 obj << /Length 889 /Filter /FlateDecode >> stream xVw6eI =c'm5=5Q;n{BbfArNyP<&(4HE| 7"SûN c*Jt}+PL<ΔGs1où\^/#BHX\l,켘=#`rFi} WFq/jIRb ٔ@$(N8=J sDh.(uDe< 󘢔 `4owH0,qfg/Ug8=Z<945NQ?J7h%[!?)(F mdQn1Twz?HKNj(ߥ$'NQ]霸Cz%Ǩb(`,D |lJ j+SUY),$X 8Qav>4rcL"zjSzovz=mU.jl[bF61-o7zl^4)RJW>*-Ʃ'`zuQ-1h#H7$47Ӳ=> endobj 93 0 obj << /Font << /F20 4 0 R /F26 10 0 R /F21 5 0 R /F45 35 0 R >> /ProcSet [ /PDF /Text ] >> endobj 99 0 obj << /Length 757 /Filter /FlateDecode >> stream xڭTr0(M]dK_$킦 c DTi|}-I4$\1.IB9$*QhFxq!W/&/)yM F҈~--v2[M~L|$NSW'Q"Fh$fbHBH"oSMO}z1mltqg3W,4y BE)-zkX^ۗ/o<6 x|WyVfߴy egx0zF4 aMoŧ`ToP_frT$e)ߟGQe xkn*cs:/I%V>;hvgmeo%lv)QDӑy($#urO.yQvƝd=H(yUw =BhFBD攢^;$o(J]3~m%گ7 .dLb*P? I}R(:JjC).uG̞bJBrM(M  (1 <>o8IoMMYeHowOun@ tAEһHig}n5 1ٷEu AP;"Y |޺mQoڬA5?)0kjk!]3ö&6P}ˢۙvPj9]T[,T*4  !Әp\: endstream endobj 98 0 obj << /Type /Page /Contents 99 0 R /Resources 97 0 R /MediaBox [0 0 595.276 841.89] /Parent 96 0 R >> endobj 97 0 obj << /Font << /F20 4 0 R /F26 10 0 R /F21 5 0 R /F28 11 0 R >> /ProcSet [ /PDF /Text ] >> endobj 102 0 obj << /Length 924 /Filter /FlateDecode >> stream xV[8}ϯ@<%1ČTKf2$VV N _ $޴y|>r3j.ph덆ȲMlmh|06RC} |\ߊN= *AqF_^=,gPxXB)z7ޗ 5T+j~j0j.X3-tUm4 `"@l~R>K"L jC8C d"ߝ/ңbRlm\QIJ0~u94Ee~l;w|3$ (Cr2lZr r9}%x/MbF(4+K n#] h06F[+cUV/t5̉L4R#K@*^BN^E犑0]!WN`4uZ"Zvfl^մ~F5R4D1A;Z6vf^`\ *\הLqq/w^$i]cبھK䩔UѰn<ئ V1z~! endstream endobj 101 0 obj << /Type /Page /Contents 102 0 R /Resources 100 0 R /MediaBox [0 0 595.276 841.89] /Parent 96 0 R >> endobj 100 0 obj << /Font << /F20 4 0 R /F26 10 0 R /F21 5 0 R /F45 35 0 R >> /ProcSet [ /PDF /Text ] >> endobj 105 0 obj << /Length 1108 /Filter /FlateDecode >> stream xWmo8_Jc(ͪ{Y]N-/Y mo Ŕ0c33ȸXPG5B-alvb}S_l,AW0t .` `/j%Fo6嗇%!b_˵Ղ;-v#F:1r}_ ѷX`򫆑{K4LD.኉9̣lEk"˷4;P_@A,[̂5 R65:2 l}d92AyoF1Ƙ35:⮖hЉ!OEġ=2Bͩ cC$2V2Q!  [VIb!rTkvgU|؁\1Qc( *]X8 VmX''Π+#&z[έ q[GV"udG 6'\\("^ BVlD7$N}}JYq?YƒrfMwjna#1P+D0oCzJQzϕ\jZ$ z ^dUS˖E&Ռ 񄴣&8{BDN:sUtrafZřKnh[H@p{>DH=zkBSC~U^~Fy2/:K|Ճ\UM,a:id*$ݩ*^Bkzx/k4\nO|oe; 1gUJavEϢj 5f %rۥ\ P7_=CoOI?P#* ĕ?D$eMu!bYGP+TǞiw:!~#+'2ҟ81b8@b}چO, qVVA2}XU.%0(`3F釈 H`e c;/Z/dlj4Cw*7 Ú-GV[H%-^EC`'́b-A<5:sCu\fϬ_1'{wA65~(2 lSŔ,%r =lPfn(E]?Oqs 9՚ /!;\|k.JC` endstream endobj 104 0 obj << /Type /Page /Contents 105 0 R /Resources 103 0 R /MediaBox [0 0 595.276 841.89] /Parent 96 0 R >> endobj 103 0 obj << /Font << /F20 4 0 R /F26 10 0 R /F45 35 0 R /F21 5 0 R >> /ProcSet [ /PDF /Text ] >> endobj 108 0 obj << /Length 1188 /Filter /FlateDecode >> stream xڽWr8}WP~JֲCvYOe٘<٦#o ĹU !}NZG͹.4ȵ4K֊b2SB8h&>YH,_7p`56Ӂ1> Օ|n˻驪'Z]^9@oz*xĊ J~J)鮣U*wE EfZ);2\bFI+E@xWl~9h#b%䁤oq [֥%wܟms%{ !\k MA` |Bᾊ^0?fm_etQ1rE9rRUUyP; zXbhM7?w\޼V{[bl%L*'Fyft-ygyqϟ2PjrJyV}ӖOUg༎Kq2vC|nv$y4u{G}VG;ҤqEOs+)e摯ՕKN>Vi&gBRVMIn V(_֝N]'fmR?igC-O i=+?x4l%Ґj (mW?v?Ƨv?ƻOgԅ ݴVh(P endstream endobj 107 0 obj << /Type /Page /Contents 108 0 R /Resources 106 0 R /MediaBox [0 0 595.276 841.89] /Parent 96 0 R >> endobj 106 0 obj << /Font << /F20 4 0 R /F26 10 0 R /F45 35 0 R >> /ProcSet [ /PDF /Text ] >> endobj 111 0 obj << /Length 1148 /Filter /FlateDecode >> stream xWr8+(,r\=.Uw/^GK` ͬ%ssg4]Pm Ru`AU1u` +|=Z_:㉊&n B%E&ߝOh`Ћ j%Z{̋ۛcБsusV`pF#Z B`ڶƣߡO m)0Q)ߣj:VL`풵01RLh" &ņElyt2nHa><'[z<1\@&m]N0lSV\:a,9=tBhM X4]InxGPC\fva_eE@Fgmjy7$" OwV\ioHl$J29s\6[ԣioE"G\%~:|t V~x3)n/A&EB+Yu<(nU.]MUvի'!l7k8G#\ɽ{aT^HH|K!ۤ͐òX(@!SʫLTHI4+$n]DDJRQ?L'3u(pKzAl 1weMMH$*:YOY2f=,QoʮhvYn5-rT hB-vO]5݇_o^ *jɆj6mƆh)r!q/gK5o(=Nul7~v ]?dG||ˆ]]ivxj.ixneZ+=ۼ{] Ou@v endstream endobj 110 0 obj << /Type /Page /Contents 111 0 R /Resources 109 0 R /MediaBox [0 0 595.276 841.89] /Parent 96 0 R >> endobj 109 0 obj << /Font << /F20 4 0 R /F26 10 0 R /F45 35 0 R >> /ProcSet [ /PDF /Text ] >> endobj 114 0 obj << /Length 1201 /Filter /FlateDecode >> stream xWIo8W>%&+8ݺHLh+%e鯟'%Yδ@2'S{_RŊS57P#Ȱ og빻<>d Xhw MB*`z}>"㳙_>܈v\}zBZҮn@ i(8}NJ_4V^vH)ZP,XTʪ@I Py"/?G&hGU^ʸMk_ *ŕ!(#td,)n#KA \D^n ^z* RAXׂë![w V^ qY'&>2>`8cE^z[qTYGnTiEx˘tIa$?YI-:Q.T,拏qšvisEǞG:x4̶&Kc?˲MHx͢3>wFGFgаGȩsB1VV4H/ˆ%4f,oBwLv2v4*+#(KLua(ajz2A(poL'5O,R];WI88bo[jdi YB|:|($,xV:ɝZEֹ(ZܥOg1ĽsYIdv_[yٰYF mN_A OV|S!gMs;lT> endobj 112 0 obj << /Font << /F20 4 0 R /F26 10 0 R /F45 35 0 R >> /ProcSet [ /PDF /Text ] >> endobj 118 0 obj << /Length 593 /Filter /FlateDecode >> stream x}Tn0+l ԓA qցrJsP$*j=*h]+nN+qggfX^E|Ł*|(#4Nץ^(%h5m-;ObW1AH#f0F\ݮ֟]ch}wkͲb  Ia=<I1yC:"$ߠq\+ܑպu=P{3<2.V62.:ybs u}oY^X҄.JCA!yU'ЗJdV" (%3ǙoUܨ60 9Sxw-B&Zan2UQe i/H2 ct,^S-Ԝ:zIG ) M+[{?;6ٺzkɾ5򄹬j Phh6~6u1mOMOՇ.2:nB*ٴgGNM]e7^|'–{odJ;[󿛱4h0aj2UY> endobj 116 0 obj << /Font << /F20 4 0 R /F26 10 0 R /F45 35 0 R >> /ProcSet [ /PDF /Text ] >> endobj 120 0 obj [722 667 667 722 778 389 500 667 611 889 722 722 611 722 667 556 611 722 667 889 667 611 611 333 278 333 570 500 333 500 500 444 500 444 333 500 556 278 278 500 278 778 556 500 500 500 389 389 278] endobj 121 0 obj [569.5 569.5 569.5 569.5 569.5 569.5] endobj 122 0 obj [892.9] endobj 123 0 obj [388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8] endobj 124 0 obj [602.6 494 437.5 570 517 571.4 437.2 540.3 595.8 625.7 651.4 622.5 466.3 591.4 828.1 517 362.8 654.2 1000 1000 1000 1000 277.8 277.8 500 500 500 500 500 500 500 500 500 500 500 500 277.8] endobj 125 0 obj [600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600] endobj 126 0 obj [777.8 277.8 777.8 500 777.8 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 500 500] endobj 127 0 obj [500 500 167 333 556 278 333 333 0 333 675 0 556 389 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 214 250 333 420 500 500 833 778 333 333 333 500 675 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 675 675 675 500 920 611 611 667 722 611 611 722 722 333 444 667 556 833 667 722 611 722 611 500 556 722 611 833 611 556 556 389 278 389 422 500 333 500 500 444 500 444 278 500 500 278 278 444 278 722 500 500 500 500 389 389 278 500 444 667 444 444 389] endobj 128 0 obj [500 500 500 500 500 500 500 500 278 278 564 564 564 444 921 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722 556 722 667 556 611 722 722 944 722 722] endobj 129 0 obj [556 556 167 333 667 278 333 333 0 333 570 0 667 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 278 250 333 555 500 500 1000 833 333 333 333 500 570 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 570 570 570 500 930 722 667 722 722 667 611 778 778 389 500 778 667 944 722 778 611 778 722 556 667 722 722 1000 722 722 667 333 278 333 581 500 333 500 556 444 556 444 333 500 556 278 333 556 278 833 556 500 556 556 444 389 333 556 500 722 500 500 444 394 220 394 520 0 0 0 333 500 500 1000 500 500 333 1000 556 333 1000 0 0 0 0 0 0 500 500 350 500] endobj 130 0 obj [556 556 167 333 611 278 333 333 0 333 564 0 611 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 180 250 333 408 500 500 833 778 333 333 333 500 564 250 333 250 278 500 500 500 500 500 500 500 500 500 500 278 278 564 564 564 444 921 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722 556 722 667 556 611 722 722 944 722 722 611 333 278 333 469 500 333 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 722 500 500 444 480 200 480 541 0 0 0 333 500 444 1000 500 500 333 1000 556 333 889 0 0 0 0 0 0 444 444 350 500] endobj 131 0 obj << /Length1 768 /Length2 1189 /Length3 0 /Length 1726 /Filter /FlateDecode >> stream xڭRiTSU CyڧCJD  "A%rof7 IE Re16ZyKUED:PXOa1`-DD@Q.Gu}oG|W\ Uh,Ҩ?SDGG?,P"]YTR@,Ó0F+yA 82X( !H"R8R)]BX!7" Dp) Q<ӐJ )lIIC""%ç͹*4D [hoLou jT`2J +`X7ǃ!D%[\ T IaJsw.C0( %$jUa@KmĴ0I_QݨT.ĿEQ!!h3<@h#$Bp"q7SWA ą"S-pF`cɮ[PݙA=?BJQ|"a!Љ  -M/_0%'Ӟ?z3R6⮢?{ 66b:1<8l7叱3Դ:9IxoZr*9QF" ,uw~Ђ%kښ`3dڏ+ R[);'Ra_("m\Ogy1o9Nnhk ږ[r;E*,z?nmth_?_b.Y:$pi. <~3jcm-3ZOR6A?诽h9kbwER$N%tl.ԴZfWn&$MPfk3\YOEKsz}xJ~Yټ#ݲaJwwVlVнj멱fΪC'~碏kd,xLIevTf6vYX(5w*;\Rq<0h.cͭMKN#.'BȽ6׃g<,Oհu\6T8׳ZVxfk:kɬA~[i~q2(nd̎#?&zWakVXQ[NAԟڣ,HjBVOݲnc<0f(l\K7ى":=sr6ܩ{4-L7J endstream endobj 132 0 obj << /Type /FontDescriptor /FontName /NXFMOR+CMMI10 /Flags 4 /FontBBox [-32 -250 1048 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 72 /XHeight 431 /CharSet (/mu/period) /FontFile 131 0 R >> endobj 133 0 obj << /Length1 960 /Length2 3385 /Length3 0 /Length 4023 /Filter /FlateDecode >> stream xڭRy8m.${^BH={u0/a8^ 2s,-<IiI$"}iɯI}Ї,XLO K'@Pr/ODF{"-a^o@ <Y@ f\bnH"ǁߣH %t1 F!Ʌ$g"Hބ߭1? |E$}?_򀼌|1QD6O^?1K~ h (ś. zJ!՝5|x*l(8S]xnYi9>Gګw2,72`o}a|V۲q ۳:5Mxx=nɼ)#k3/)A䕈qo K,4mcF=BL "UF01RLd 9^ǩe߻ޥ Z\ܒ_D%{B"By]>~bDR^5ޅݺ=#O[Zy7#OՌkj]u #SmW99O!؉bbU?VMZ̰>)E ~qf%jBQRaRVW:c&&`E)I"-iSrc5zO> FZl.P8QMx̳|5}&z|+nS6Cg]o-K.w[' *+ꂳ\ƅE]H{qo6P-,G'|xז[k+iVEh{gfDL0|8sCnF C&w9T9ϲ$zЮbCbR%-ѵ5~cRF۩?n˛…]ַhQ=sj$ &^ka8Y]Rrk6Mݖ{:0`> G UފJ׭X,Ӑׅtv})o2r2To89qpߺoUD^&)DdKNwR˃7t-. #7pZv253C-՚fnW[m!x:WY+r)l:m#t{e>H>MϳVI0B?׷e>[Q\A.f/"M/Wە,O:W#:?V{ECY +G|4KE}C?#ޱԎ>q.qnv.p/AΪ/N~QӜq!>;a/ø`]=n/{I/b_=t-_ETtD:_JdWlZڮ( f!ww kF>VF'Ϥ,k } ۛ%ܦ_eӏ/ B[еDյӇE`G~ =6?)[#?4j?EI)UokⲄyeQʆz(=jКNf0>-*onw/j#5ĝ%YIF` }gHhHd`ݪJN|^v+&f`Hk/y,Zd .ᛘ]"T_?Q40>NkMw%Wp&ksu||6*hh^.e-(( ekB7yEM41Ҹ'jXm!4Wlw4))LPQy~}K;lZ,*&q&Z lNFoT%Qip^,-i0t!g"X2'$V*DtW *q']=Cya Z/zGaeze 4=8V>p(NUٓ9 :_rc|QF' ¾'v{4t]=mi# GxU-RRܲWmX3kǻuQwj`Ф=yNP{MV:] w:]02i,}-t0o_2`-uΉNÐj l0beR:uΗQ>k\XxLB>D_/F9|V5 JO616#Q~%[p#V7Lu6Exd' B攂'$mK:Ct*+n)CR އhy>)o{bX%jTc-sw$6gzq24AXDQ|Rw&c#lD& 7E'e:nsLEiG"m@`Jg:1P,eGWB9Bi ShđU!vsŵr+'W{+.\p~PH}R'z5l7ɠ Txd$X]y(~TLoPH{lI>%( Ƴ^ga*c-{UK{[zvP]Mgٿ775Iȯ[{Œ>Y:ty;jb՗UYxdٽ<[Ƨ#YzwX_vTv ĞQQ30_6ͺL9::Cɻ|PBT|9SQ*E'L FNitV6Cԏq#2NZ ֣PX>ϛtX*Q+(i`cP(>rѫh .D;L6@.@eIr e:~)5Ib) vt&%W 4 -"q;S}'kV̀ZmN +Grnb}B.4-Rs۫; *[ҦJ[c{N⦛rC'>5SziNL3=aWt=3Uk pm~U2C2dQ5SjOo&w?{W˽ endstream endobj 134 0 obj << /Type /FontDescriptor /FontName /RMFVSN+CMR10 /Flags 4 /FontBBox [-251 -250 1009 969] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 69 /XHeight 431 /CharSet (/eight/equal/five/four/nine/one/parenleft/parenright/seven/six/three/two/zero) /FontFile 133 0 R >> endobj 135 0 obj << /Length1 767 /Length2 1373 /Length3 0 /Length 1918 /Filter /FlateDecode >> stream xڭRy<w5),.GƄȢFBc'303ƌ0ִb-W9BkjE9r#G ʽg~>ٯrYˌ0DEoI,[X54fA~Nᰨe@~Y@D&)A_(6`"5Ĥ:Xt*(G"N67RIHFbI4X p) Y ~R f֎EBd3t? 5)' %_У{Zz)٫6S9vGl'J+VԱGV2G>d;(yGƄ'x+BXasWP^igSax2|=! 'r}.ar]^&p[[lp-JQZV1*IU+A_.eB@ s+O.%E_?ߡ/2^IQ.KLxۥ'[8{/UsGT.aa=9AQ8ό-EWDZ*EV2oOFUh o}j$4˺ߣIU-@Z|ƫw|I *ۚFu 9Ӱ7x.vYK3|9bE qވ ը;duSS;=7ƅT"2)n娣A cvbEצB9jFc?܁fx,**7W~umY{kqԓf1oNU7 ]dImxp]Q?__.=WS,T/!!/JdBkz줤f~#/Zn9SJwpBѫ QT[Iγ?\f&*5 y`§'m= :\Yr"k .Oe-6|wH^Ъ$e o&[?Cf0aGި]RvF Wi%tRD?)q-$-;kZ q[Dxɾm9%^|Ls(=/:/G`Ix;妨iUف/KUwe@R!\]Jue'y{fZbGѴU[sٻ!m7!OH檔9٨)zm\BG<ۯ VuR?B`sL:#ԚmTć<6L{,U7vT]t'ڙ*u@p.|Գk{d>lm B5Luv \m̫&hZST# -ʈ :QvegΠߚ endstream endobj 136 0 obj << /Type /FontDescriptor /FontName /TBJMCR+CMR7 /Flags 4 /FontBBox [-27 -250 1122 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 79 /XHeight 431 /CharSet (/one/six/two) /FontFile 135 0 R >> endobj 137 0 obj << /Length1 787 /Length2 788 /Length3 0 /Length 1332 /Filter /FlateDecode >> stream xڭRkPWDV{FE "!^5* ҆MXfhk:PL} AtU*ƪmbPFG (:ſ9~߹~\GI0$hY<"OrC((10 kU(W( LS*B<"!)PPq #< qm=P4PLA$6HB(I z ڔT4)01 (IzB%I2 05y#jkєj ׿Q- )A"J" icY -1P ~<kӄc:J1Z r\GqHc0GKxyQR*z>;h(L x1b z6AL%1<#&(Im}VfIL⣐ 2f{.73DŒZ=PLfok% *NR@ՎaGZOLۍ47j2ahLXCE+>4}"['%/rWaS %Ƹ=[_eW_zͽ'iJ=X-)9<8;١'N{rn}5Y,RЁͩ.z୨:ɾv9$.7"9j~uYv^[d<|8lӊbƚTxN"ɔPS ɟ 3?[:/~anGq{0Fwx] ͖ ݺS'%*-4M9US+Z&f/>0nBH!Ӛll*J,ZZ{,`+xya~ --K/G̑D:]ٝQ%|tÀ1=['Q*K-G/ M/;K3= y]Witڀ+5v -.mO/MnZr2r31ÕqO.,g?+Zꮙkߔ6[rv3m^dgdeJ*ҿ7tl|e!qh]vǏz#I/UÏW6\Fn*~J^հfkCyS\+ endstream endobj 138 0 obj << /Type /FontDescriptor /FontName /RFPHKI+CMSY10 /Flags 4 /FontBBox [-29 -960 1116 775] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 85 /XHeight 431 /CharSet (/bullet/minus/multiply) /FontFile 137 0 R >> endobj 139 0 obj << /Length1 745 /Length2 559 /Length3 0 /Length 1070 /Filter /FlateDecode >> stream xSU uLOJu+53Rp 4W03RUu.JM,sI,IR04Tp,MW04U002225RUp/,L(Qp)2WpM-LNSM,HZRQZZTeh\ǥrg^Z9D8&UZT tБ @'T*qJB7ܭ4'/1d<(0s3s* s JKR|SRЕB曚Y.Y옗khg`l ,vˬHM ,IPHK)N楠;z`D8{hCb,WRY`P "0*ʬP6300*B+.׼̼t#S3ĢJ.QF Ն y) @(CV!-  y Q.L_89WTSQ-ҢԼp: Ԋd[ok[Y*V}Ο'־~ bG̔`y%K^-|xE dE[${z,^k nW6wMpa،9=թsr y)/~V$-%)+2W}~)Snʞ6-*Аbm?k/H&gB;A[":SZ}qMw~O: 77s7;8?lj9MuLWŭ94͟N>/rW7Uj{E=ۙ^ m> endobj 141 0 obj << /Length1 1612 /Length2 15861 /Length3 0 /Length 16704 /Filter /FlateDecode >> stream xڬeP%S5ҸC4C74&Νg"re;TԙDLRLl̬|% ȅ@E% 4q9KZ@s `E;8z9,\_մOzf,?܁v@{׿׉@ *:JZii=fj 2(̀.@:39\bL.@34#lrq ,M]7u3_ÿ9:; b rt"!oV&vu,F;ҿ|az]M@.W?LsA/g-/__}Mm`F`c[omK=?"ko`c܁?;Ch$Ne>$oEF%{ZV}a [WZu5; Q{˿2ryU@fV ۿ9d迆 `bces7OEuQ9qe|SW{W /ǿG+' dbp-P_0luV4quyN#io`Ϯ؛]emW !.9Xge OJA:5hT;GVՄ27N}y-:/ |) 7;xX ː3hx_.(lCrjNOup8]>P`Q>8cw5a~@3862_*lr>=M"˳S5DKvk<2ꥑ~cAcy.OB[+E$"hPM"+\dLa _wg*Bŀw/7}.&7,/|9kli@G܉!c{aC̩Xi.5e{vM6{Mp&:&ZHtnQougҌ&mUD;~Q}%W'VO?Lw_^& v쳘ހ(e+_Tzl.{'c9:RRdd%(&6RW1_5bcrAfF0:?}? >)Ɏ2Q0AڳoqQ#(mG|Y(u~) \磥WeL`}˘b\J fQca}GkcR-rSxk5ԇki18WP ŴJ,3I]_/TM5ߞpn4 *ʖ3 Ɨ`%쾩1K۠`,WJ Qy{ JuԖcYB ҲŃO-wڼ@s9ǙnŤ{+(6ڐoՂ t0 ]fYO> DHM5Cx 瘚kL8+F<_jXů;yF]˰y%%g7xg~]U~s(^tGg<+2;+P bhnUI KF6_nv '0W G  #X)¯&'Te b',ϡLFVk6JÚo'%*"7+k  )z{{H%XAd6a`e*$Եr]ii]=Ax- Ґ̻rVRE03ORhM]Oi<;kpɡꅅ 'Z9E5y,QV=#c&2IWZmUQ@/_ )/˩C+Vs,Wa~V1ӝܻU&;$gNJywKY+}淓ۃ;<сeSI|LȨn8@"۰12ү(*)߃E ֵ>~K=Vm !mn,▂ޢRgB0~[Xw:w,@4e;\91+d­~.R1G `=pvR$EbߵaT/z@`rgVףbTUPWxSL%"đk?[?J|e1Բ~"% lN7CL'L=ؠU 7ҊFwgkZU#bht>k֗ibL2";qqnrHС) t7mQT*GӟOkiہwoCoEEttVD:hMyc[MԿ+30ҍL^x=1jBaU+S:ْ = E,M^zAv_P0~PK/;,+>k0'Vo5)5Y@]ٕ-^hkb2%gY~!.&|5hu $ #pyD8cґ8eg:Qa*U~yX;y\Mn#σ۶57ob3,:RTIz S6H\ Ht.֘`? s8ӿ%`#†D&0C@m1%o>`[S]#kd)ƱP4;Qun0o`2B 7̯Hf}]m45bPX)&-UxWќ"vEogO2=:Fa~?Ge75JmIH(0-hpPy-XJ8~a); 'vY談 |*]đnTes~aVgK-"EB ᴤXP^l[Ϋy2<=5ߘ":/i5mc;Wl+& !:힃,{ă=>~Qɵ2dVý""Ѩ8].)G6 Lg2@*гGd?8ݸsP0v˜cc}Zu`Ykm[A1u;셠鱎5۲߳ك}S1]Z[e@I"..,+^c&2)P2RL l豂- +A_&@5>bֺD@1&?W4,m[ۑxMQeӘctճ(Vt@YY3;o[rz2X&RhxBNrXm$#Se'VMZ1{L6DaЏt(q#tde*351w>q0ɫf&ޏ|7."47cSֱZY'w}6e/$Hԡ۶kVPPE qRcCR~bDc` SPڝ!P>{GAXB"Z<@ A$a-nHK0ads8;Qމq%Ȁ9P:%{3e=!W2ҁX]f{@ӊ`XhW(E!셞G8Xgr &hU ^Vv!^$!R/n3AIns̨BxW?@XuCrUJTz)5 0dI/ Xj㒈`%N wn;~?8$(C4JE_JEWiM4`z~\s%%O ||ǐ={6`FHl5Z+WM 74<j2S&=^dEтCH{[R;Pޢ8';›,RiE; RӾ5.Y,g߇!OVCH`ؤ&1QI>du~FHx,5Y^9¶` d/"WZrGuJ]n50SR /v桖|@=yLͰ@ 썅S<'r/ޞδpD`i2y:t_G)dIQKsKmƻ_(|ټ*mqߥ) qą$GvW֝ĕ ZiЯkCJY if'_ RtPpyB,0x$t)1lnŔb$?a>,6>J͓'x.(EskEn ͆Aր}y,Ubrbe͇c~$: UuB{Ko繴fGꐋy * LyҺd0Ĭ #٢DWt(3߉ Ԙ\iMteB(oL\-;Z"O|,F=K()6&V0Í4эg(~ҥ%C,&SC%KheMB3+>շBbA0H!ba4q~;=<_fwS`v^' 9 b]>* ([.^x}a FI,NYt@:3";OL S2msЬ_>)>О',6Ax"P-&axXI5>k bJpU':;/Ocrݥ JaZꗪrˡm3 6wF5ִ-$!{`֟fܖx+S6/i~bYzHy\13ʕl ]{,tߦz>Q9_|iIhgdcTO aO`#p"у7]3D.[$}}&#悬emE7P53"CêzG}vF I'Nz (6Q5ṅh  4Qx$ upFw$A GR<y~{" MTnY&x 3yOB+gնtj-9CVIx$v*3646it^;ߨ =)qZFUяgM\yyւI\Ac VYT3:ϻ.[?f^t ֨|!F 8\7G'?wVRFkh%=)%naXY҄^&1tN1~gx629Qt#0zx:d▫k5>%& '"}i'yB8-Ё%M5^ٯ)EԊτ(SIl Y#Z:'륾X+?*F51}4{C^AQ7q&oUw&{$p &r3~w(bhM۶M88ɠPU: ؠr~JW"%`}"S=?Rǯ>O= {@'l۬F5?oE;EܶXb0=j2npW־y]ձU :!Nvԇ{a|0_X϶[.-2NU\Jw.aҌ]xP:aݭm=%2$Mej=x*mk2gGkPKC4YQv Zez fF'=pYFn|Oc\FKsa5{1ho9ʿjD,ZC_n1L3/Tȏy6|M7RzfK_ e iܧ-;:of* Cs(" q^ drRe`Mo GDS PgqO~T[+Eu]d}edh,W6',H3[y]DuΖ08UR;pHaUS'ؕ.@["z .;[,f,y,lּf O$"*0+օmAvmP}'/_PFR%w@;ݭmV8OGcT4]'$>Vjm#㾮.AHtʶI^7(YO' ɛ*j4J;ܜܲ|ViYw+RI?٩-K!"a+tbߞJ>Ȩr8L`('vz^JYxTX3"<4wz8^S£̱WKxF9BXb}R ٞ$qmmߍb\vb X|XNW@ç}Nː;NkNjnQm( Z&shOiAͥIϒw-k:v8ڢ ?!,"4 m+ 6qrcML6a\S@U}z srwK^HAH=b hUIvyGԡf׊|Pr2MI2V=7=_-([1| թl9KHs$q܁t>NJYjLe[_s1KzrW`򚱔VO 42Y~ ^\k8ͺAPm("b>j5GVz$BѸV0_/N5*nk^Aqu actb;n5cJ*ھW6cݍãOph8?>R 1`<]pyj'E| hõ]"`+Zu9L$պ~/K#Wu]"ݬOܺ[Y 7NءL0J(ն^&vQ}6 ׏:#VeO;G.Ax;D)NA-t7x4' rDpBDP /]?՗vְQ"X*:,Z~M )v^$(\ ?l"2feG8)f_"Tj]y" k~ŏ9iφ{71wt13Jk-fT'Ҹe֨Qᰶf**Or䒀QOGq_C6'pn *iq(>V̗ 6.x-izb5<`{]aZiF:+ޫ);%+_;\h`QlnFt&?9\>jAhkOTvb/Z?XFbL2Hאg&r~HQaF )|cN0;, p)_kR̉.2KO{{*[wF ?7*,Q<4+ O'JP,vGnFz@/{BaGE}̎eFy7~ˍ#튒 MetSX7\flrМ]*Ԍ\AS7=|EU"{RHlr̗;G`ۣ~^ǽ6|}Y-^T?bo!"j̭nƬ}۳Lb*ŗ":~LZTty{UIAjaK %L|Kb?9A+AL. < ?1C\gNk}"J%9%A6uŃS µp1m;u'LíkX?e\;C]>Cuj}7Ww= Umw#]jy;tNh= <n2?ڊۂA_.꾆w4!F,g!03|'jj DuDo1ה%72ͥJT&[)=oZ:] (^,(7oۚRG (c&)\)Js{b Clb+s&19=Lț%s_ )q0P-ͼ7_^$#L^щ=Ou68|9kQ8C"roU$@Iܚ`v/79!n3Q݉3iFqq65Njk3s ЋP `! ιC; zz[B2εʋr La拠$ E ՖWyl7-v꫷࣌|tf%"4GX8҆[*zߨ*Yɤ(re\5NNq5"7l{'/a]K>r7'xp)w$ԗ\He0[˚|%Č6qYPV#bT" XtwxpL+| ۭ. =F—1ou*֝`l@ ̚<_6;jY!P٢^83.5c gz+1=h%.^6JMC ȉhGӱtJA^4eNӤT4[i~~ *>Reۊ1iI-&!#bF!1!? 'i:[򌄸d> >k'[ msp/A*έqi D]]us䙝Lꁁ6ulܬo9j?vlz&gAF)qg{σHQP:1ٞC]ZZe6Z0)Ƙ(+T)+XR!RJIZRýr`͒);tQF nYZ1BތS**OUf̼)`y"K8;*֑/;j8{{7)TohtJ2D@y[dsdroas'?g%lzc>k~@jhe ys4 szyiU1۽"װb}3)a^?KH)T9FFy qC6lMKjPҝXTS4ԊoIW1YԟRjܩۣVJ6pl>GݳdRɶpu뉵\ք؛X W/{s&ns~ 0efg;}n ʮ;^T"2%+nEM>64!d< ();Smslcw3hNoOθTp߆Z 5t)zUܱC?H99Ldz?囉8fL"d ~,Qd>38tزM8iD$=qT. )9kő|$@ Qu!Phztw6\ca$%y-zϵǒmTgZô]Hu~y'mB6-[{)j! D2u)W&u@GԕzGNX[?DB~+׹F?BŬ27 M4r19S>i`ؔNG >uJv{9fmoч/!D6a^xt~muwZ`Oיxux$,I BOSЬKgFsBk-ݗֲ{B*6z/Xl+tȻYLj}\^ 2 )};-Чjz+cy"sakGuoc  tievRu htUN;56EUpEj!m+.52ul])_?˨-'awO/Rm_m+\z&5aNt{0Ty`;+ke :8=#%aϪu\Wp:䤡Eg\~cbˆCB{<|Q֝JMO9P4sc,KAN,-Ǚȵel0K{+C|cNBQ9R~kE6^Dv"\^ [^S\ق߇7bK(\_b^0Jʹrن.Ŝsm斬(0u@!ߓ(lW?f5<РAZ ӑnM\gW}#]k꣕i"VCP$l]k;XV|M`&UdTV%מ}w~~ǂPTx[ 70/9erb] 4؈28IU|t(tMB r +U*GNcKLATbG-C(°㻍*P&!`j@ܬ 3>bgڹ-~7ߖMpiգ9h/ݥ?E8r0w^j/k'UseG͍5ȻSźBn?H~җy>PREB$$ :PwBsyC|\d*7TT<\#nOڞUI/ў5wfccepC E4O?H<B%jt0UFU&1i h27TD |ؾIz~q*Qo/DG@us\7{{JaVZ/;MR ez[÷;/Qxc -,a^MEI9o,jL/pqR+-ҝ:?9F0`sl_Fp}5tAoⴃFWSo{Bdv`fbh=fWz4} tYTt+bKbd 91^OQ7tNŐ C",I*_ŒoA5w#a(dFTo.H&$ee=~k̾ 㧽,#ul 3(5ʐg3Bv nq"T2Z "1z jsMAR>S|d3[!<D>!hOYb@ {7YQ*X d)}DB t#U?|ìR,2i)pnX|\sMQP/ϯikPA7n";KL; 'aeNQ`S RPUh ,Œ47*S|Q~a Y%Гs @Sò}0៶i@s~d 1 mGZ9R=멖f`k‰j.zcՊ=EHZ/1tAn,v4OV.&&Ȇf$+[|)N K4 i=*ir1 "% k:ۏ)ƢD 61tWSf': =j 1SWҟ~xLPG|:+AotS#M7q}-z28*<>-KfԞhJ& i5Z{I_9g Ӿ.OJR"jǾ endstream endobj 142 0 obj << /Type /FontDescriptor /FontName /AJCLHO+NimbusMonL-Regu /Flags 4 /FontBBox [-12 -237 650 811] /Ascent 625 /CapHeight 557 /Descent -147 /ItalicAngle 0 /StemV 41 /XHeight 426 /CharSet (/A/B/C/D/E/F/G/H/I/J/L/M/N/O/P/R/S/T/U/V/X/Y/a/b/backslash/c/colon/comma/d/e/eight/equal/f/five/four/g/greater/h/hyphen/i/k/l/less/m/n/nine/o/one/p/period/q/question/quotedbl/r/s/seven/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) /FontFile 141 0 R >> endobj 143 0 obj << /Length1 1626 /Length2 13678 /Length3 0 /Length 14521 /Filter /FlateDecode >> stream xڭveT..ܝ 4ָ;Cpwww@p}f:wG?UO\IIl :11@6Ύ`0<xs"QQ:@`[1#' @h lHTQ @AO_.cG:m.@k =:P8Yf k @TQIKZA@+J h&`[S_92v&0 /#`rt|FN3p@&Φxכd~y'S;:98U$ڎw3li 6qmiޭNF [GZ@){2;0ADp9ZӼk:ߺ7v;a99͘k86"+Ҷf`?vis:= ڿv)` 4CbQ;XfoB?r󿦖pV0y_1Clـ_AZڤG"lkN +3? G T db03~z5[S5#0Mdbe0mM;UgWUcߎJKn?ZWbJퟲ 7+޿56*NF_&߻O݀&H+`A)Nكb:lЃvuy~.ߔmr`Ic=nn 7?`")u6Ι4U_cé,` 9 =JXF7[-,pE-^߶L0A'ûA{9l<'t9.nD3bۘcf6S%;$hu'u7~ⷥ@BH93W tQ`9{8?i='@+A^ no/ rD?sraWICs̟A2D\l?=Y@qˊPm ?gp3f͙Iq8Ye!O'3Do)o3zRMՁYK}f.W60ԝWK{ \cɃwxfk5.2o{usjˌ[olE`@6*҂>լk.ǨMZm׆sv&ߣ' / UC8: WW^^iV7`otJ>[ W;^%jQYe9r̲+$u7t෍ В* X Ko;fz2+[d>T~ 3.xDiMr%JܼǢ ,-ow㋼ݙ e/r=L%>"5QmJtrq. WpCwu-S9x33is5-&Kjҵ~PIAWUw| E/6/[f@v܍Fhi8嗲\Gݔ/@OM˕ v<<7>NWQ*V8B$5rKLq0o9dݖrC ~̒ŸJǺSPQf N9'm4ѤY\ 58to:_e~ɬ w?"# Jif.0f*KH27XR )Nݜ 54/b}},9_GlY*(k %'b0stw( ?bT}\^#µͤ4`"{j9 _9siW_dZ ΰ5MM0TMwZ^CT<|}vF1hn )-]װNA֑M" M!]=RZ/Z} F"1aԩ[1t_Ne/gA]r_2'"TǬC)Rϫe4 v29Ԩ\&Hk_X~(FqK_\KKK((le9Ēsw>*-Վk7>zw`O؍y ӺZ\B8 ZnVy2z䚖aַ|A_]|CJj uGH`=m>}&\☝Δdid#tߐ#FSP93Z\HeScsǼT=]8y1CEd;'+j67v!I?~ַE]T:^4R"zp.f]DjJX|s 7j[Z $MISn;c8e/抸/pN&ʯ:+ۨ`G>5$w5}3ܭ e"VS07s8Q2/)q JwG1xZ^津c>ּ ⎷9V`b y}԰#Ǘq3}$:/q-72Y rSW,ʎٝ$e]md0Y7'5R߉9Mq:֚@ּ!a Zg`k+PlKU#-'\e旋*))$[ЯʂY+wrlzt\ zf{28b>4*阏I.Q$d}a*焔4,V?h/1gq_1'f3;}7?kwOo;,A.V2)-߬aŐ$mt<@G(_>:h_yt68Hh1p|{\4[!xc"h^3:1Ɇft9Д^ߦX*MS~tl1 !3fYc(InHѓ,? #\Wui)ebݱenT;fpYg8HXP1\pg>羟'ӥ $.{5{)W:E)QWC8hHZ҆1" qH?/2wNK$4-9f^9 d{ E0!!)wKF[-:fb ~^W#n 2k܉[okY^X_9o;R2d1"z@/d: ~dKdZxr`]!y۰s0H =EKjezwBxe2 öm}1>%y3Y̮F 1iTc e8:8=scfk {/™P# Cvjm#JVTrL݃x2uL%ztgCILj"gO,L1 #Jv~T~Q`^w_gib]8#?/]:_7} P <#=unRb~*:^`CmHN1G7ʽI}Р'Bб1pǀ(B(0@s^[GL )RqKO?&`_Eh4MIAqI:l ;E}yًjC{,49hAQO(dvE"Ĥ3lSυVa7>#_HlӺo#a2rȸj0 ^d&nDFX9ZWhAqʨ'?0F S3a9W~K7x !3*Rh35'f%5E6n݌ <2kH <Ջ ,do72FǧG{ yNfR'eڙQn{FS5e0Bsb}$nZ(@˟l R'b(_#R@@-1 )y#j ؈=;`ַ# EYfs_M&8fxΈ:N6EdMF>BƲ 2 ɘ rtGYܩ,gYn IrGB'"3wtAX>m샿$ȭKU(Ap^٣]meٽRE6n73CؒZ$BO#j{qb'jj>/il{!B3?ъL3 R7𻟖e s3DKڬ2=IB̂B츧OmTEnpW#2Qs8S|8R$ļ Jx;!7GyAqCMkMs/"=Mv}!֜|C],PR+` bG=&Yܷ$w h=[원R[nq _PJhEkA*L*+SN8Ih${5҂22\/"m4zyz"u/(RB͉B(7\+RFC$ރ+չig)zVٹCTw/z(MM+y7}(ھz[d٦7&za#CZBʦE+3zd"(\SRi$3>B籑ƞUSsOJLBJ"5i ^ur,wށʂ?@|+wTZRNE@5<e,$)gQbbAmH%<Ɖf_'>aq7H]EOl*6 b]6w4b;r}@x\:{J{M-lܶ'khPEbu1r+!(~|i{M^@&no@g8-;1Z51$O< } 'lo_c7AE{G5SjowzYlVTt 2UBZkDOleI( kI\WʏjϽUȘ=$b 7L5ap[=s#WV b$MD MsΠZ+}q`s+{%z@豖&8(9iFg*)RH{' ޟt@JK;\(R rR0@2[ c_e-n"XJhت,}c4,JS.>ՉVWcBvb;G$aݳ\$<`M+pK43vk5mrS*nXAڰqm1J0lSoK6}@f\GX9\IYTmIv}|TlĜԶe 1j~vK-YNO^7?'g+E.-Y_)$Bm-Ɯd^DH1pvΪGsXlN]ߏ ;ffSFI}7#9Ztgڳ&r ZJ72uϽ&RB=[*S~hedT_>7՟04"{MWhD#|vCH+ trSgw\C+N]68zA"\?ϽG+kV98R3E n5+z!wT'B8vdCaTh{J DBə,U*uw&Yf\8܅`^e"I2cFCiH7] qt$%ڋZ=20;(:hm;{ct =LiKyMT봣j,rgJ*mrkm'[gGGkڐ{uKioRa2G8r*t~:%"^"7i''P#iEO)ǝsJj',-)ZzT} r'ayqQpSۅÅĄqk>oݢu/Jx2yb*CqD8Jf>/k]Prx|bO/W3NPהԦ{=ru\ >`HItRVŌ*A]2 x#|C)ɄOC xt*Jm(XdG'͡Aoܶͦ W®̹[LdчWh36#SxZb4:_20-6N0 mI1^ 2)WqJqXc:tltf, Zۮ v]f\-83k_yf. Lxyɜ ^_fjnB聂=o !>_||ѪrF(䈚9 ֬/Bbs`Á+a>#CaNX#hfM<DmGq|&X x*Of›w ՘(V6lo[u1Uj8L*6MWڈr>?(񕭲#o|g160h6Q s+X1E&[p[$4y&eڽ4rC &O'e67RI*je0˂?Fê`5'⬀QB͌02"[i /BL[uRZ\usS4KNmOnIj}ydn\CLoV$HK5#ʙ0.z rXDv000w{ƹ! TiOhgc;Ch@}/Y&M=F4h~.m) )n-v'ւdBTpE,{h ȫ&!y1>k 0L-82CIқmf8bE)}IμyG4&Y +MժrPGifewo,rF^>~yHjpJͻ@&x8> !6詶 q|E[vwۯk /S#/+ꕌD7Ph\R=1dcmdξczJ0ro:lVGX_z^1>榍M5?F &tq\RWFp:b t(8.iI~xޏ"">E_?n+oQF7U@4k)6R4||Ư`I)rgdTO᪙=g[)*Z}槺r~K[#&Myn:ƞlQ!ǣS?夘˛UI/17?_{N'Ge++,]Q"?}?D>YΟVzctp2ěJ3CY' 3$ʂgߢ6gPHujޏZc>NqTD)PU]b3wG|c$,Yƍ㱌_#'7OVywWkdhJS֘6([Ξ'@m+ku ˲I!c\C&o?ՙ24nRZBRUOQd=ǃɑ5JČ)[̩](;9c9N$."g)|i*8t;.sHHvs-Ca1YH>鼹{ vR8lM%GP.%A p^ eoBl{Ӛp\15Wj`]W9X(-!V;b1)Շo'QoEEwomvDP!?ݷOoW oդg)е 3qK~pOb\8 uΗ^$0=lO+WU{v%D|4߃_[.f4"*tv׋˭"y[P*>:W}H Jpv(jP fa9hstWzvQ>6KY*ulnUxM7 z!AlkxG>U/S/% *B5ٚcl RV+m!=m%feMdZ_|L>4yO]&;`ДWw3B^"E4yȯb2Js{uHzX>E<ܭk :rB)#tAY_87M39֤Q:@1c2AW1e=rkjc. OL~RkhmEtK xM=n>*kvAeܚ/+/MKEsΉ+3) ^A|HjdCJ9y[b)") ّ8W&JzHq&TX Z*S b(Eg%pNەN|"Lq>Px>;nO{IlXkT BW^]4`AhvO!v|Gt*&R"V4ԕw+?yWuQf ep@Y-֖ҒgT[JTR<<|#/-77k[,W,**3? Z:%V~Γ2-\٩,_t3e]*sc9\굔~5dC$- |m*`uY+34^QZJսh;Z/,Bj1wܲk?vYF=nN,*eT}.\z [wSggRkz!$#I./eZ5/~FqEǩ᧡-@ 7 wİ}uFxDaj(Q.&~eϏaa>D9Rq΍ŁjXv]mj>G1 ¬dNLz|YG'w|.TɢTJOH*/2$‹^hf v_wªqjԾuT NVČ;9ĜoCJZ<ӛq]U4zW0MD T7m0N]#|MRk^Uͥ#G70%_*+$x>e&yR"c}Hk1lYz9:EwOE\S=Ic5 NNY=EE8'fv~^GlA?[Wy)4}[M?jq- }(IB#7#2\~ z%LF`Pt5vg 4*P(Zm{1Bx1/NWLWUOBI٨AR1uN'Slل"^s-7_r6'йK1C&H?de;S WFoiYt*rsq[jw^-~۱0^jyl; ;T<˛ lN0gzuJG>,g84K8kuHBշbpN$]B$o7H3El2_H\ ű@GMk 9Hu0B /AZ \K~}@R"0Cx fHŠ7wODtDrFN3bfȭCԓIPn Am9dA%-~-Rb%{ *Wz9T Xp1:LQ:gF0XP4Aja~HtԸ(/*  m0dvI\`(@:4b=>UE0eQWNd;q2T5Xρ<7,!WR-D-I~;CWۏk;4J[Q3vr +zL.<^s)o1>}^3߫Qs]<L:J/,M3NJ놑×)uQW/uE|/!&呟g;]2`!܀ nk Q%s(B%Ȟ/Pc $R_q &$]A%]P㞕ͥ )mLRؼ8a$Ju ͢3f̽ca~=,;Bo$ȴf\;`Cpw,F^'/]?1K!J8^> endobj 145 0 obj << /Length1 1642 /Length2 5417 /Length3 0 /Length 6247 /Filter /FlateDecode >> stream xڭVgX벥k(HJG@B $$A((M:ҥH^.*H"Fgg{s~$ΚY3x8MTpG&B=PpY}!0"5$a@4D` ! 8@LVVG".h=[Y~}D0(3 yCoB uԌu Z- 4a  p# 8 Jå(ńA|@/H =(E@sh8 {;@1 Cf GQ $`kQ' yj7h !>_!0pbrcH2PP_g A04_W@G P4 $L$& Bcr;CaD"Ea{!ļ!kfna0w_D$bGcR={"$_?Krw7z`=, 5}eo ؿ{[B(Z; a?P&6A.';~a` `} Qѿaf.Pw 0h|]]C5m+i;c&m拀7/*UUOHS$@VV +%d#FB}EEE?FF 1S/Db0y=D45ɇ&鳺ﷵv#+›.;\ W ]m!.Wuo}nskNfsj͡㭗X 'Mٶ|7g#%jgr>u^Iwr+;'," 6oO]7ZW2c y[ h_Q%ƹ4X%w r6I(Tn3iuB_UxCiTz M[b?`p"1X ?ae?}(e>I ^-f),7]g|ze+%]:j)7rnֹ֪LcY}:{{5gU #!MY|>FUQmq(},"[:u%k,gm<]_$-AK:fCVjB!GS»TA֊ʹy ^y,4kLkj.+r]*$~nS&(q}Js҃_krdWY)3#=2i?4L^_8rv-ŵeefϘqtHIko-_bS=νQBwV,k/Gfj~)xOp?KRZqU|R'OerP]qK Gǣ zHbڏYLC )I]E|?I^Fbۼq >`(ݳ*/qࣀU`(Ri0ˇL2S,K:ά?mVņ5e8BQSˢ17yC\Y 26޺3/ܡ% l'P*{ ?2"]e#EY Cj),*y:s 'NB폢t ƭoxgSP6ߣHHEK di Q`'ƞ>Q" tSjToJQ~;u=Ubc;ǓBIe#`ߩ1/f:పϤ_T|<^45 f#t*{8LmpFl-(d f6BNősb۟K*c?܏=M5[Y'79S'G݅#kݛm%py:g[8 KYEa/=)jɫVg`ͧ/*4ʇ"bpiF{=HlkF8 (\3-`Z>/*5g~]XP8je?7 #NzNc ׻'dRrĩ7*2q"b;ZB, |@ryVX0wj:/|cfW5_Dx ddy !3i)$}a4*~,!tN11Ob$&*(r?bC婬O$Լefl1gŅ{\5|5a5+rSȰ2pȊw#8RzVW*̳ϕ ~; IbKxqxj}V 2Y+s\;\IeE>+l i*rkG9>QO[8}Hz+Q.G;qDi7KXG4Rˉ*ҍ'KMy?߽.)3Kѷml9X&x2P)ɒ龆Lk /7n,\c Z[dwR5v}7r DTaǖ*Rȋ>}e`fּaMZ5h`Nvq~xANc :Uov1+L6eCImAKm`CCǰә/VSSQ>j.FX?si³LEb)>o&3H~]=leJ6xitm`D>PaBR,ge2Uv]G^Z>ǫzev8&MT!朤s36$GP{&[5lVgsTLqJ\5+ل/u9sIzxN#vaXNF$"QIǓli\F)G$x7ѩ7BM9r)Y*m&ss& +w3בr}0>3q+Ƃ`ߌ-ﱼ-'ýY>6U#YvEc4K[(<ũ\uln}j-7vY!>9,t& 2FD!(C⋋V@.f=KTEY-:r}z,%ݢGn՟fTA"@~zDZT?HtSL6N@QfֽV^Bu$GO/tE; t'Oψt(\6IewEv27V # lc+Vq1Kc EXjţuͣ%5&4;5snlRYv?PS=6F 6ŷ߂X nld TѶ V)otKLKq2<\?~8kV=g8j A~cN*rԍf1HzEsn 7}>:a"cZ9"BEW<|kӭB%,1{:޵2STFE;{~Kw*Uq^~N+J5|nAZ_?T]J,Q[yY#$Z$Ml bvDܲ!Qՙ˾ur<g+O#"<[ĸ 5%4b).W-I6\u\EL6ĩִr )-a>h47MG. e㋮wٿϪ[: S$KzPIy_UW "wኖC xtϟA3|Mbw>nS󼊉P6W. 9y1{f!gfGݭf >.mvne:/Sg2Z# (iTE}^Qiɔy)+(ݢhI*]PlP?؅ZJp^:Hܵpcs(æAkx] i : ױ@ws&}6Ejw[c7VJJn^K pT-ۿ'#M=rFOE-tHiN/H*p-Ezzuq[){e:[Oy$w}#zk!]:GD^ը endstream endobj 146 0 obj << /Type /FontDescriptor /FontName /JJNCHX+NimbusRomNo9L-MediItal /Flags 4 /FontBBox [-200 -324 996 964] /Ascent 688 /CapHeight 688 /Descent -209 /ItalicAngle -15 /StemV 120 /XHeight 462 /CharSet (/D/I/a/f/n/o/t) /FontFile 145 0 R >> endobj 147 0 obj << /Length1 1630 /Length2 18006 /Length3 0 /Length 18842 /Filter /FlateDecode >> stream xڬctf]&b;wl;۶mܱm;۩ض+FŶSzt}~1&{+ :;ػ330]e,\p"NfF.VF.f< 3S  Gqz:YYXԔ5iiS hz:[Y(:]B_;\,VfE-)y @jlke21w6;8l}8؛ZS3_,!ghfb 4srvrX8ٻ큋ᯅ__0Egg'+ oTEQbiOlgj_KSJ/_3XfS+gNVJ?38Y9ښ9;OwNRh/oY\lY4qY7w03[n :735ꟙ'QoH }$7PB oWKz+]2F{ g9|l=O^Z\E/5L LZ9[y*ZX̍l_r5{S3'[+{zf&S2MkWjj /Cſ T#`? ;x9,\߄Y|7!g9#'+ߺU&)W\ٳ:{Xay_﷦P*6Bf]/篆= սk;= W(N-ٗ/ŀYIo?ԔlC vazKj xSNl2x/G]'{\`Oq8FnQf &H{b)mRCj]" 4Ol_j5fN7YSx}άg `t8+Ѭu~Fzӑ"oy8 "N>Q`;Ё-=%3r|vr6h^Scw=Ծx:y4-8<? Ϥ0µ%G kxDGA%JQn \՞kGS>Z.&6n]b/V0V\`Si9buӤi[ \,f/};*;gt$TYύHRZ|6qo{GO=]XǤ ~~~^/B&ic6]8BLtWbGܒ#ʋϣÌ ʥf -Eu<#*tI9N\2v2Fm%K!]P;8|NlfİrY} km!.CCPCB4U,6#Wg$m~m5O^&Eψc=kИG ?!Cf FީB9uUꢡˮK;"d|1zY>ޭ%fi,O]AU4?&㜪^I*|mJ}4z?|tM>LB%#< co߉(z4Y!3SaA?okj~< ַ/q薤s4JD|,o2RÉ/1f% L;m8[Rj|QݘGpbBiQA8 KjO)J8Xnnqw]{kT+3Jq=@O)*@-^!rMx k5, k=7Y,ߨ7pl\n}܁at_./NgǬ˙i+Կtj$Jo/ paqv= $ ^ɚ ˣ9FWUFq?D^9s-YcL 1i Wc{R7 _xИ'wqOvZEX+|?,\WppZr$v+ Qb-XMjXwHB,$ѻ<Y?L(9LYJ~5~8{MN`x>dۺPiX]iYE||nIr%.QԑF9(fX:PNf1cy+=P8b9I$K|%'!pΒWI/|R`I_X&MjJ „b͇fx(\rYLF;k)kޙi'7^|_)= vSQUs"Ss.88^`S|+[f,KXA+L+T^Ou*`ٜ:ﺕeJg‰\_otXCE9PUx $qvf2~}ʨSzJl ĠX 1j75{ZAVTK[]6XO"t6]3Xy=Z/9}!{Qd*,γ@E!1e$:5xH)s$KE>ǦSG{Η%7];Gލ3 ,b^ GIQc5rZ,`Պ3`(.aPOԞ(.ibp ?<86Ʊv,ZQ]D 2_vPӸwi55yDZ\ .v1*|۸Bw][ 3RF?@k_K_C4fb_-޼1ń<49 G }qPpFq'b~=#NM , @bH q!*5G'rd/RAl ˱oju*7W绯ޤ f.f$?,4͊t/* ߯ÔTG*$כ #=Ç1h!\A1Sb'hZv7܇"*z&c*JJ[lq0iB8y(=mt ;$[4W^ )=0U_Bӎk\J+WS|{,o8K 1k"}{昢sJi?Q3ဃ9fpW -Oݺ`쌖 w%␐oY^+-pX/`>'Jl̦Xp^>V~K]JKm|(AqY[",3oC0vM? @6)@v?d.AUnf?wP|5 +Kd9:> 7XZj/<^T:ITA6&ԋLP,;G˷x.,Z;7l̵lOi5A B3о>!ʨn\Iυ?S ݒjuR ~Cle=xtB֟o/͘(9W[ip2 פ% {>"_tdLoĞۺ)Ft+$މzQM ^kH6Fݥ 0SZss\#rz{e/Um?'rp$XBoz̹@cAdg^ܹAEJfIo-$wFĈK5$K2urpЃyֲ 4VM? ZLיs 6&H*"澓 )@XWgY$+ nBV7Xtg'0B3`Ar#l=fAktRn^z)%HĿ VˏÄ#'K> Bλyw(I蓱cn,SN={gu,i0 ePK]ħ]6::OW 0J [OM?;Vl6DK i{`#Ϊr"ȃ};צ4Zƒ nJqiK|rzs΀ZU @/(3d1l QFVoAm~ &M ˓U5}}@Jð~`LwI8uRb{#] ɀ+P6a52J@1W{ybKl^g` F@Jj-U"I'[? mz"T'ҍjg>^a$XʻB|q#q*E5Йʾ_2kF6W|.s4h?Wϕ}IB70_= [۟&RB g*moM,޴E 9hDJS EIm$>Mw3E`5 Tbtf8\`Ce^Iy}'|vd)g B}]>b%\3 ;hSq#$kE)עZ$pJ<"0pj\/WAcel ,L0)&۝ bKrȦpK'Ye CEXͼW)L…Vr餤P[U_2S m^ԠFB=U)?G~O2CMm=$ywSΡX;= zK c8>1pMHKЄb*1ƟSs.4*kl 3aYzP,Km.6ޥygЖ֣PvCk z ľ<}MfP1HX-$ 'X `)RSwz^6:3u[1, VܝRBI1 v)Nɓ}OPrl@!rN%p V^yty4 << 9~^e'ƽuq.+|q&=8C7gBfx5ܖ>S {_n9d0…t 1me~M$ܻVi@ zTKUW W `guzQ]t𼞞W55rVJ^Ko9W21sMfUgm,W8ڔ?6L< ;FpOnq{yj桀SxsԾr@Ǭpc} ,K!]tɯi\Dٱn / 6.[=^G O7Ŝߔ`'bMSt132- chgڊ-m[QJa?r37ⱔ[*RMWpUXb*vj{v$[oK#,w;l!>3kA8Cx g n@zdA%WBˏza"-ۉ"2|X5'ԸW3P7v wԐ@'^%):O+q@}C炀xOjᡨGP5o_cRC H,§ʒewg7 V 4T9Jhի =JPmG7 ^_dohYQyX/YkhT-?b>{4bd)Rܡˮr,dMN_M),q˨ʦL<MwH, @yaҶwwz o`Ve}5ę͵̸ f4#d,\RifUWŢlTهGe&ŀ @`s3xTc?E#F4/Wy,,v)o~ vЄN#h ]i5[:v6!b͖okjt/l_'MFJ1C',3h>eCM2r}F!QtTa`,̣bLW/f{]y}po1{8G7Taٷ^bm: <p$4:iRx=KpŪ9?WgAB:lJR'&^Uk8(@{C]guCb@^ʚ鍯؅dg%-> ?d(|L{ܯbhKUiDV@ahd/Lf5I(a]de\^|a< mGEq7.x0EĮsґVvNSNUkZVw ⪍L5||\6 K0$Zf]I[T(>iZs&&$ZaRV?.煶 .ķ^l3VX'q{?%5LH~j4_]r)w5oBFi3*qι DyMfsTZ Vsr4pas~ΩQ4oC~fN3#1T,+I%mqUݦi8Ѿz73Tj&̷}WbbuUxl:>[Ayt-0(dXsR!̶g|X ɫ} T]q&88v=s4%̷HPfY~ktZoth'-Hvy}`ɫ2Qms&+פEF:͒Ȱa~SeM*$w͒ m|}d V`Do~=Na,2sƾX< X8\#TF{ W젝}kmg?IC_+Mz{^i^3 ryKS*d6flBDPE՗a0 vz[w2*Q$>֥[A𫏉dEju)9˲>LnM> q.Қ1PYaQxDj8#ETbPȥeR=MIgo b+ܞxfqX{m(~dm-fiQKZzgwM>ଜ7tX ʅj'<#%^z5ܲANSCkiW04P^E8'Y.j _"di/9\hvtNJPmz{N"S׺gxˑ5R~+4Xv`aS^mTt.+'p{5pD1qZsN2UzgLgDWs@+1LFN*', ~*K~OQU}Ec_K ͱUT`FQi9X.F tE{CdrRrӾJ_cfn1+~Dq43k\?4R:ǰ)x~ E0.O!i' SzZJLJ:YzYG**_Q:O7 b|/Ӈ<7"s5wc|t`j/Vs02\22#/@|wO' jepJ<϶8$ P&&H bW(+,#8&dȭ@H@<3Ce,W p `K\΄,bK7[VSqZa΀k?qH%Pص` p_$sYpޠ3+@,P8i-疛"`N~;{ i ۱K6jͳI{C(iĦ[>fm7)ם^ Ƴ zXʑZ M9?:T2QK&@O8*݂=\<֦ܞ-6k]E A5Q t Z05ڬxwz~|o]_\Z揤3Ca+k x(m@cXm̃K^\l8קWxv1[|;\xմ0c`?iӰZ4fi}Sk7+@+)| t"?UsCtKPuuɮb4z Mm*霛 ϡKre˰ CA+ Z/x,WA&ىu;bq{LJ:v\G|Fkt9}d'ڷ-]m1?/@=AdDp9*:(/gh`QD}N&V ßqU-0qc{Tl#W.čBA'3 {38_rqH+..<4- 6K7C`dޅ1[CÑT`+"1'r5,?̎玥Gr1u>ߩsK%n.!ȤS9.FE1ʳdY3v/z;w+Un.A\e9訞لUENLPXHE7gv¤e'ʅŌj14M=<`q%H OϖңW]-hw^irJ^aE9x hJNe kAzڃ2G)̱WťS1B1+3jOeI>ȊկT2Hm^!U0Q>>T`s[׏Ç۩ɦZyF@9jP4'C,OH~t>Ó|%WAT|!W[fsՆC+f z7SA9}Swe:! Vqc֢1Ez3ݥ9 i;xfKǻcx>N`rnalcpaZ,^9i+ +U^.=MDn `E v.;}ig%t"gO14~:hi@y H)QiGxccaQ'ZIɛ@qE q'O3͖\}m<ʡE(+ ׂ)5`n{0qX8#Lѹ/UkQ~-^ Q·,WI8l?mT7l+s8Rs4ִĩKOTB/DꥇTѐ*o77]j2Dž<WIr]{JjrQw,` :)L.oT ?(#d(0MǾ_Fz mHv#OzYb׉~,MnfEļFE{dQs$oJl+ȥRD7q&G#хת\(0ޡ:aJ%|K3+_賄?"opk7ͅ+wrݨ)&$uʣ۠ wSwPVቈ, VRm$ !nu?:SIL?,¶D[A $ߋ光ra@4I:lAo#a:lIsFaQug@r23?<{En9};6:YqJ#l 9\tݬց:κ|ՕLM E[KJe~ʌ{oTwzȎI)7i phe֕jF^Yv cK4 63TĜo {tn>Y]>Sl^E<*[jT>F=vn{ۈ90/!U61/a;X?3 M\27@2V 1y/?(`>K.֤:҃%-XBD 8T^<ʮ/ŰGɩ6I@.n;혤 f'<8Y<,@v7h>6ܐ;M_v=qX"p]4tRviُmtSޞa >1`!svXQE%ߛ:ٵLmxT-M=~fݱM2_A"s8$K@t CwzΩ|wG:WOyQ~DϿ/pۄGX3S{G0 +]̰8{s>; M~3%?L=X< 6\x !z$yJ"6[e'KApEQzl9rK d L4`fS XQ# &ҟ5Ӡe 7En;HN@{(1L]q@GlW~c5\l|p;VKmr,hk~!`qmgX>pstkʾ_9K1 tƂ}TS ac;fhz [SZ!)QH2.Ta z+P06؁:{p)XqΚp31\#m;E}lUƢ(!a@8b@mg"5ѿt^'sQFί?ǔUhP0>*zm[almi(bQa< 9.Ւiס- an'֗]; n:5x>!(tV@9I/^˛{)'ʐFlkInwkڬ5#Ō{E] x4z9_Aw OJ/$Z1J2EhPLäef^&_3lNJݾ$,ͤ4w|Fj&#8D1LT&ѥ^\;e+]P7.eݒռ@(&0geU]-@ҐQ-B7ºwEGUNG 6VB,GD Nb.I(ytGRnaG>btJ;?xK7-nn1țל` qˀgfH[Iz(@=[I| TZ0t)\^U2猹هksԕ'Y:Ӻ6unz c6t; *†fKWrL|5b T 1@-7 ,V:#,,'=t-,:_O&K桾N^KO`tbwvB4(M/?P5jIFsll(X;)pLslUy&p!xMˤ\,- 8_I*h/!piX20C _>Y^OJkaFv3W@֛6,󛑳5õ:eQNaZJ5IKtXakA UL Sq{5˅d+*ɰ`;g/JBْD+ݻ;F|T$ׅ" }yLb[,܎hz% %ag,+դ5Es¥7;'>ri?9{q͇a?<&`̲! Hۑů~+m`€C)b}OX ;{;MmA S@qDDf3-(pW5jk"&n@++t'2աesPl7Û/c*\Q&?w:+,ht,@ygKGq󵲌3aܲwEn"rJvQp3g$b+hB+{cothh|<wL[-2_E'>׌=-k hÞ%ۋeӏ _ע9MӛqDZh]"f!tg +ʬ!'P-[3hybj[#f_zku5LBytwFկ*6ai-|="Js I~9K!:Be` U@w B5"bu~u.YR:~^$&c"'m|=HM03Q1饻"5+܅~RX9:r V|&}*p4; ' $|S2M|#K ҋ-w$ғ:;_)1*pH)w?XG R:&#;ݶ>sD=<ǁ&@}*qՅzZWrc]5v_gQQ{ lq`bnIDg'f mnF'xhTc4S)O1Ga8T+'*Nֿ"x3QMje{(eR\-=Ͳ_f5[G@I0MjF U3~pɝ|A;3&iDjȬkrj<7砾 yi*ck #ɏ=LI 0X}}x/BxU J}˩dU8?D b6::?7v$Z5&"S홗iy PHhFvƒr"d] cv###gv${I'LI2G€y7,Pa.׫>z.9xh`j53Kt(6L E`Ooxw5YV/]Ɩӆc$3{oC[1`K\7T^ g?Pz},s6J:|uesV%1 T~?ɂB].HvL!+vO*ԋsi'u`#k \2V ' 8$еn<č7g⿁e;k'T#iD'%79 0؊`i GǽG) Z>Kjwn  >F6.2YN36CΦ`~9G^ t4,pݯCG OF ]AzioECl$]JvstQN(+sgR'ukR)\xk\E"9C^CJUZͲ?BЯL?=%)4 >u,^UL=O5(1c+FM Xi -MqIssYk*j'ٚ]\` x l$6KB_}Hd[YNXES>\6  =,}#+hE}Nn0 ېn>rA] . gxhd(ܕ}OTGqmI,~b^w._sh .J0*DDQ?xmQN<[j8`mm.@͊K:Mw[fϞiXm<Ŝ;v@E㍊D%&h'OkM(Z$#FXANӺGsʣ&/ ]}@1C a Jeoq.H ^ o)&M> >"rnH> T"pNÇfRʆ:lA&޽GauD/ݺd%ϳ=|mNWLx"B଼8yU?Q#;o!$Q\MU}TJ,BcAlN;iHN)F:NCAI1^covcLd3 {\AEd6>ݩt]֬L5t'T+%h>ߝ\1r/̊:K4Ji7SM?]T. q^Ʈc]vC@m= mw:˫ډr 11-Is`\O<5Z<GFx7PUxHsZ| u#7䉇HV(,j_ l=m9Q*z RS:xO*-RB {sYbm`>07Qމ8$PJ ^{-_fP泙hc.Ca+!ɢܟs+Ntc#{#Arm\_`?'rUJ%=iL5% fMY9&w\5r[T %thT'o e,xyU Δ }zԏnJʳ :>dΙw ч#(ͧu_B.2+/JG(Tz1Np.c˩|E)NB]*XEڐjE3y2%,{Hs$'JNn'RkIFa‡'VbXir ұ 2 z&\,/%Zl8/!S!uC3$Ȧhpo 'sI)g?Rft endstream endobj 148 0 obj << /Type /FontDescriptor /FontName /UFUTVO+NimbusRomNo9L-Regu /Flags 4 /FontBBox [-168 -281 1000 924] /Ascent 678 /CapHeight 651 /Descent -216 /ItalicAngle 0 /StemV 85 /XHeight 450 /CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/a/at/b/bracketleft/bracketright/c/colon/comma/d/e/eight/endash/f/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/q/quotedblleft/quotedblright/r/s/semicolon/seven/six/slash/t/three/two/u/v/w/x/y/z/zero) /FontFile 147 0 R >> endobj 149 0 obj << /Length1 1644 /Length2 9734 /Length3 0 /Length 10588 /Filter /FlateDecode >> stream xڭueXے5!XqKpwwڍq`=X  wsw;ݵvUZ]UduX98PM'GU'eVM+΋AO/6:Aa`A[)'gO[kIGSO˟+ D= =S` u TLr:90bPwp(Z!P03`) %`Kg7%8]mo-`b=X:$lr+!g3tuK''68Y=9Y)/B':;{>~&sv+ W-.`ks }yӝ /՛;;;x׭` 08cZžc[B0̊ 1$ANOl{ `ߩ E7qU_e]Tx^2(,sch?ym=d 0H@a`zA0Ks@@`[Y߿Z `LG޿!0U =T}|lsS.bdQ./-sw C&E/R qnjh|~@y9-/SM,Qn~U>Cc@)rOrXtz!~I{ԉ0O3ZG;7вF w/YW*˘5CnJ' MYX%PxQ հԸIu۬I&F)2_LSY;` qE ]4F5Ǐ'p7Ee](rxz @0Ȫ&7B!b~_alUA!}99y-}&.'vrwkWwKεn(Kq6_-+^%#hk+{dyhۯ^)gh8|X:@5ʙ弎_LC'oڒ;(Ξ5VmfžJJ1Q4g#.a 88WѧwWzVsW)5q<v|.F$QKGhnCc^gӯ *\}(ƀSrY]572Nc \:oN[~޹׿g&rq.-(!" Q'H#'xYxRY6A|p:6aq;U;%;_"wdΉ 9 akb"F%seCWxKvJB^~/^F{h7nt;׺o a֎\ma88#Gu VF = jK~!>vIVҝmPVypf㣄SprDVڽQ#/}UTǔr&B(] V&Z/Ay^gߠS(p|qm4Z>+&4X2aR#"ԳO|bCEBEWϾ=5#@@YNcE dqϭ%eeӚc'Q㇚0aIZ/ϗy؆c"mx!Gvx٧&A,{% Vْe9Y!Rp߅.:K<傏!JbQ$vzKecgjrHL[Sj PuZ2+{z_ Zb77IR[y>k-\v xrWѻuiL{ wqX[>{5&r+ŵ:.sKc)3^˳ Phl~lҽT=ӿ3#rֿjcpN6,GPd'[}(OYzi8*c{D!B,F'e٤7¸S/qul&,"+#Np3QYyǂRJq-m2򱄏4廒,89КrI.Џ6MEn<2J}>+qԘ04]Vp:|7rP<}`_lxd;M7O*oGF,7p]ˡrnpڀ21=cJDҗTk>@2*1[2uT'wacŸ"^v,Ct]xWbE% f &utI ǍAjiFv".(E\a!sL ![w#(1 gc,g y,N*/Ċ|}S䩷*v!"':'Z)r7/֢ɋ <նaj6y@7d2M& qIS?jZ?•YiL%TJ舾 ՅQE}=Vȅ%Z4ɛr}1/ WÄn6z⁢5˿4U#4[ۥ>c觱-R꣕ǎ0u(qE5<P KIg8 mE@x:| .c>|-hH U~\' TuL{\כVDwzȯT͐x.Z&7WwQc+JT2jIUa/4veq䯗v7?<?E佘%wbTx?XB/ !=PkSl Ulyv'v-+oZrU6p,W!0wac"lc'@^©MGhT5'e'ڎSȱw G}F{9 m]|6 lRq &\_e6Bߔ-H2 IG\Y_zE(l`ɢ)u]%,p,4W[O[gἿk*|Rm1肗 p[u+ e$G16cbV-oAt>4a]up`D(ؙ>,]m1&L,ˠ:ذV]x~עϼDBvo+}}S0 K򴷤er͘9qK;[+u$q ao$8O*< |Crm;\UbҰ7 8%erUv/Pu˺*ֵ"]f! x&F 7F%LreC`(Q3t'`wāgh"][8NʾB$2-iQ v߯gQHv()E=|.&5LZQy9zi#av":>(ܕ6Z4)ֲmQ¬BDJS>{zg<2BnEJZ>Ÿ0*]rI >/L7X(S1|ZH6TwPm^Z-ӫde~z8MóraXI):kz;λ!|3X(kuQqasGB)okȏP]j 0@dφv??t S6wMcBG'2:x}~,8( %1mi]ڿj^zȄwSSm#[&E$Wa+/QcYrJzv,¥p^Iǩ*Ω5/drOc5Wg? $Ő_`j= "a~#꼙dw}A!}bU>, He"Ta#F͝\Ģ\SM֘+Ύ{ًoK;+2O ip=T߱1'lI \4I2$'K*ak ZCxT ?NFDu_Z}ӋP螨kF3$o9Uu!LJ$ುE)xK t_;@j|eS[V>׷Y@Fx9BN-bnMBxъ43cfB)Š$OښXwq9VҖfjl>Dm%+~0lUiGLhK[T ;,f;.>Zp1tJ]ޤ{E_Gm;3{S*acCRX/<^4tJz08xa4Y|W2獃ydoOM' AȽYNBiDZoӍ7IBWE p ׻FofM5OZ2HM4߻8ˈ!LZJ<Cy~ m{g2qW`ܢ_l81au3h>cGCݶz+!C@Ei¢.X19If-Ϊ<0#â9&(1kvuz!@;p|e0"u潖pnWYrdّtjӃoqtI9|D:Z}D^i0&mOt2 oys-ŷƑ>FQYb'^] :0G)VWu;7՜=v].Bu6g ;J*F8LDX:/,VtSQe:d\cd|oIvӷE 8!K+GY߉*Vm5CL:.N8rm!7TeLGTQu7KL+1*XQG!Ū3^G56ٯ9f@\^ae=a/hrpNuB[8#/`Rm+Qq<sSdۧwCGYHb?iFc6#M\LpP#%H R=GBO=żhD=eD̈eRE1o"fr&x W"~ " FiQv MH^5aZg%Yʖi H-ħ[vja ׌DB3GA<=gZBE=/G[LmC9C?(K;RGۇ1³sI6DZ\o}"[o7B]ԂFGMO25~E%jiݮKyvz32qv)u7QY i;:5W,4Lɀ&?jzIў~{ߌpFu*e0~: _Qw7<~͡ڿ5~@pq.n%J-8ō6W4aAX iÕ!\&sq');{ۮOd$N%AF~h(_sRpD1$*qa@QPpaOlk&FYg!&knS;`@'O)2Y'3$ҟ2ë0#zmbʏ`N_W.lĆC ɮ)̹5<#Æ9s=?jY쩰QI?R+[Pn{KE} wɟ7혱r9~>A\ajf,f$#:%.z〳TSRhC&f/oupI5>pwߌ368d7)?jbƩ]|׈b*'Z!PnFE1" &_6+Hլ$njr3/]Ψ @*v[c8 |ۉ1-I֒w5#%Y8.{OnץK$af$|Uكj鈾tB;R?4u\j'P%D#U#wL\M+d? , 7{z񑼿@ʼnkS(<=xe~ߣ% !(gMi:.AOVd5D*y|zL~9ec2o|Ȅ7zC;#H=g\z2rD;YɆ_5~.J& mѺCdx/&~'į qrґU?ۄl__HX `鼳%k?#(Ha>L|2}zD.>Γ:4[%;QP5+Np6zSd!'Z͗&8ejwݏX#ԛLU7D&an7JC}_|5zxԍWӾJ QE=CnvsSg {Jse,*BcVԺ4ՠ&#_#+8知~% iiP_?tG+IE?_eH^YV>]yV[s S.>N}CFG fjfJ_J@J@'!ytJx`oCSJVE6@ؑC5+*W=q~jv2Hۨf'?32&txaNϽOia],z}-Q<#v If~e&ޯ*})sJ#9jŬh}KF2O+B"T`M}V Zv0q0 J%*܃n`|Yix&ٝ$Y/OF;wr!BMLEW%gv4K'lI j;wFZ{|Ku&_!/IL װP?Pi! @N($Ԑ/b#\X F~#ZH<1!Qb$ob?"ok+ك"<^[t@M "s"O>ޚX*y,:n @z\[hH[d"ߓ5ursGo5Ums@N̚m"R YH޼iݞyKfsvB>9Z@si(O0,š?>UOv&3"X D'ն0][hWD$Swǚ 儥M |WYL'kBDn^92J,A!VNbM&m QX'R]2p'%lFGcEܗhfQ*9U}}aPE*4"<>+1⣿0'8ER fk*" 6MbmJ{ygCE4$ :5ȷL2G>swk5&eLs!&fG˵clZ/JŋeӼ3qEPZSR_K; +ۅ$ۙUu3!͘P;6$ OX)dMaQn|6drk7LR{ɧd|SgYnUb^pzԅ7ڎa.W.a Q Z%hSg.Xp6>I~B< > '+Z֭g|orՉꦜ!z<IqLq1tt8X6GR!,7"6`d|Wt{GYaٔH&ݤMY }=9*$У:$J]ܦB)2˵Fumv>}J9Vȕ*T& nC6m9-M4 Wօdxt+y{oqד3T|Wnj_Xvi%2Vދv T5p<Ur=!L.+3ixKhۧi}A_8tmArצMby\ؾV\;\<x[/a(ɩ9@1??)-b7lTvV\uD[60R܌b.]^uS <{UǶ滾59Z -I-N T3@3Σa߮6 jWvyK\2Oxce_Hg0,lW}_h9%Qv#o`/Bv - ='HW=Dc켞cΧ8kCHJ*ݫსd#PYB |Sr`4Vܶ z*h4n۞ֺ)/]ut [tUQ+FE_*[7xhˈ|'\OdA?xȡRJ0-?$%&(kUI:sYڌ_yиc9 ;=9V`- i?6oP \aV a L)"p&)Jk=[VsH>Ԍ'=z quGexZ6-'I`\".(c7EU#qT V" JkS,2vFnJv:z_<{KZp@zghI "y{?L0wK › V;kIC~+T6at>S_&J Q~@ń@#K8%f>`rd endstream endobj 150 0 obj << /Type /FontDescriptor /FontName /RAGTLD+NimbusRomNo9L-Regu-Slant_167 /Flags 4 /FontBBox [-168 -281 1000 924] /Ascent 678 /CapHeight 651 /Descent -216 /ItalicAngle -9 /StemV 85 /XHeight 450 /CharSet (/A/B/C/D/E/F/G/H/I/L/M/N/O/P/R/S/T/U/Y/five/four/six/three/two) /FontFile 149 0 R >> endobj 151 0 obj << /Length1 1647 /Length2 13214 /Length3 0 /Length 14070 /Filter /FlateDecode >> stream xڭweT]ݒ-ݝܝ nAwq?9cfUY$* "fv. ,̼y=, 〣s23rۉ4Lf&VV @ haVS֠-c"@ ;烛'Q bi0ژȫٙ9}jl4MhN,&vJsfqLnf&fA3'[3 p2s<{>'d$Swvq6q:>*K#OK#b;?aNS{׿JD]v3bL6F? W'3 #'S3gOON_uKF6{?s8٘3±~4qmc_,:s3s$Ll<fpL.!3D_Eyw%N-jc#od3Acd5Y_ _F@wk#w!D,>b``, 03UX̍l>o SӉ0UK_jp23>u&qmitʹ{gWz:#.x3pX?/uae_k9#'@߿VzF#agboWٙ~M\>{|Vߗnuބ/*=+å;oxB\|8ԡQ0ƾ?=b6i۾ h/ UOE/M_!&eA~bƙF6'΄~+T#M[aIZC#lSo.Nw&n\odvb^sX;ntEӜW-.,\>udq&a7W(|)d24WR}$2ϥ=n54-[$ר UD]Z0 r]& fzbk5IP%$Ar?*QaC @J{>!}8wUQ1g<_/d.ZzmRF/@fzlei)79Յ=ws&"9V%EB#.te-Q7s'[!Xʈ}*&h\و8<#[A`J+`g8/ct x#K} N{O /l!~N1YΆ#1N8|TnMyEJG2o4U*N?~Hĉ!bd]hjY`_M/2$Aq ;"X4ZʫftYeagCT ܲwk|b:fL<9ĞƘ|LDk l!ydC]ó@V w-Di={]?TVj A4ӲcnX I79N&,_unV=Pde~Hwft e{ooH je?Jr}דN4wjgaa#tS_S _I(h~}:x-pnBIqf4pau1Ϥbloe[&ih&YJ6;.gR<L8g[O.x6mvp!$%?-:89WE OV9l^>&#o޳P|݄?ӣ]DD&[132C&6fdF ƥiSȃ(pM0Ϧ;zk)l-R_Pc (:ѿ&Xgs]&WbH?-b4&>:y~l0%mbgH?ebSɛ=F#z9iFRlYV?S/&}sS~4JQ_2Ku&Nw" }3*6ZH=̱sԬҿrR &oDWₛu?YJqWˏgWȹ7ut2"#'t[ρcflY׺Z4&v{ב/.,}'ظ0| t=<̈́=ƗpS YCJNR"z ϯgN$+ _ PS~0X+/6ZYAo 9` 5%e[ۭCt83J5YGH4[Da>2.9kмqws'xXPՏ/X`?'rnUlg8Jg]@ [~*PI-׈nDETgr2YԾҚHUĻ`7yD1ci:%E:BS{ UǠ1w>Mnb/Zqf4HizKpRC)DzifG!r&+I! .e0(z,%"_ W%-i_.UvCXEc{)[ {y`nQFda;f^ΰld4{-Y3ֱg(}1Zr3VLd %K_ci)`}3|΋wD8(>LrXt(RuĻ(3'B#n)&BbSnȲ~öG@<.y*{/6z'cNn[..@ TƇXuQc/M3it&;M ijˑK}ygv7Wh\Ln7yV`!32 ǑDy۳'sG\aD!м4L'5ԦOo) a~u{D6::%j9>-Y)OW>V&9ztw O}_0@jAѠS!0#ѻe}*</]N'9"`㯰3ƬEݷ-?ӔGwd Fo#qkW 8^)q/c3GZ34|]y˃p] 3o)*4kB[dyqQ+T#!LdAC#7~hL!%Y4z7f\FP0;uwS`jsLfE@Һg Tȿ1Yl1DWm=:43T>St4&:n MzX,.rhCH$iq() MUߪE%;4=Lh@n/n;j7PꉃOd?mB<%0p;qe)[J!zߚSNN׸u!wwiG%l p8n \E,0 G?HT$L.?r݇к Q|H@IBV^hkڰv"|^=75wް\9<'O荊>|^}P8!A]'" (BH^^ChKuʢ$y:j) kЗM%O!A@| _%tXO[jAd'e[TbXʦALiw!ÅXy[[Y.l5.kYX:\ذ{ X2?a<.ϐA^05|N#F#=r7^o"~AnE!=uάx< u<^"clID|Tu;*`PDMb{N&"A(?g/7G>Iݔmه*~ZZKQ {: S &-xMIݣvnoCX.6¨cf( m^l#kvwG$f[׸{ 3 ߼3 t*-(Ri*j S00zKĊ*$& h;hGw ũś9cF⏰$lv,TC_ .m-LP|'wn1?;4`-9w +MыK m l_u9P $޳^z2I.]|X{>Rؽwv\~/ycn}yz4>/b D\Zed IfX9U3ͫҢOlvOg'T@/2.4{BldO~5.Z-5!S+x7\,+p{+!BX(.x*9;9g@Lm 'p*ɡ`z~iBTwOJڶKFgr&q5x~1ljyj7>Oⶨ"WD<8J֛vAΖ?&Ϗpnv۟Il&M|]JX1 ~A>R{PpL6ݝwdOrm.P0b  2qZCAn}h6rG#*uʈLw p Gl,\)EjHbkᖭS[!wlg?d~[//D3hl&S>*m 0]ZGVLC`̤&3t@a,Nk갴."88F 6)<-|[vp_E !w`GUɎ$g/c8% VE?,rWuF V,b{rNxIEٗIm+-.bX i[][ɋ> qZE4u dA06)לRC@Ra7=dפ m/pfƜDބ3ltu׮UJ4)/i6ADn`F#?O?/vP8Lf !0bíˣGj n5-4?Dy-72; S\%%ږJ8g l(Gx Hp(|#B(cB'iq|4tO0l.ۡ-'kZ^'śnfƩ ^|k.~f0t僚M,Ǵ;7?TvӮ;Fj!(/{O I6I}.\4*r81pSS꽼򥾭QHUeu.ΰb3OE6LqiB3ګ'=m Im؈BN^qK2BWnW;u?9O xlՀd4Ӥ窫ZS;[B$kPؽ2ۊyw7 ,_jϕ.Le}4.C$Cp& s)wқQTQR/gᏒxR/L(ns'BFn/s=@$d[9{ +[eՖϥcv9(vOHh"~ENciWx}qKo$Fa;a˷fWgRẌ́('o;岵% /CJ yZM;>&_ԿA5*?QBOwqS[Cu&f 6[(-…u :!*$Xddq5킛5*eqEA; L0ABƆIqh3Ўmp\qK] H?Xr{Odv4JA~FEQv(Uh{ɦ8¬00xWZˇ8ajB*aNэ "D@xa VڷY-_T}cȽ+?54E02 S2a)/rՔR1f-iy5ڃ1s0LOqi@/So]0CҸ9[,:{.\!n eD"4z#Akxb`/7\߶fZgQxEaAGXƯOsL"@Gy5..rMsԦwM84.Y̚}Ҡ(*FNjaA!/8;2rΩv D<$3?tvg'qR̗,#bQȈPmGLv+1~B\qS򳬢O"T~:;' gdc,.zf^DCjiSD3D8S [WU^1Xfbirx=ɣa2_]|APFwGF\R~( f5 }%ҏ%SvAv3e&r!Eo -qM~N6$@ll2r^'Nc7CRKur] 96.-8M(mȒ2mxҜi`bSVw }gUKD-;hwz᎛> =ZiSy[hU!1C6`G;'!+O]$9Tk:SGr*PNdŦ s~/H?Ά2?FVZ}GJƜFQl10dx#V]S j+o !n Izcl>EEq^,f²+UA> c $Gz+qSRȬBm S(i'nafNr"/[# tۃ.vӕy᠉K|y/Cex c^_o(",AԄb$粟@T>Mr 6_^&FgJ{sbe`˛bLQ|, +n. Yq3sg6.H XC zv6d.m+L .tF~0ck޽Üo8PM NdVjr\YVF!,[y =1Züs0ړa(1G0'w?-EH s 6TiP齞.:` P k4Tu Pr"Nξ|CX$qw2yd\k`et&B<EyEg 5bs,X><.TxQ]Ƙ3H:w^3,6tv¨+VdX};dCJ >7~}N:wj8#Kx}R3(DFFZEkR>Dxp5*sWqX[\Dc#ifTՠd_W7%4=a݇ba,&ZDZ.G M~TJݕ 0atx9}{@|m-{%Gh=M՘-ul6.9H{^4.}5$@p9AfKp"dq9V fQ1l^˕5f_A. jOČ9g@:0Nξ{뜘t"RO@+!NT!<+$fӜ\!Ţ (KH>uC|xY[chF!  sUɔuW][_ȴȔxRP#`tMt?kH^,"nja(1;@Wohb_ප`P5_3Ƃ}1N@h#ê6;3wmk{7q2?"o66wˎݭ.׫$WH#ס~ͧ9|`~gX|Ah4a&RT7Ib]yj*}D Vǩv@;-笱9.%쫓J홰ONGu2wb}슾U^CԚJZ!c3C6t"r2$t*$c)+à{<>55P"v X5ıͱ'y >'R_?L%ӜRCF1GF|/%h/@a%툊Q5r*LL</?'27Ek6OF*ςаe@YOdX^9qKTN׀̥{ /FqqA1+Td ](.Rš;Lw>m;Mfh>#Puk - "l,MWaEynyU̼ʹH$BU+#G7RE"Y "$j~s)"1B]g]l&G2Lt7]׋S۟)~yx;opBraTyH1K1~\F)=hzwihB eCCet ߖ4PfiZq%<L.݊&349a3N3V#Aԣgϯ?6C"c.%|* |yb>.! _a"6^%B6?&Iiaώ9Ytw+G1;778<ޮD; 7 ~|X>^!8 F73IVGIT8ML͐Xt֋=LpPg$M&&;ES|xY0 j ӣc]omW5EO{%AFc[%`Ubx∡ҧqFALe}ynѣַ+.V'G9yw:F.XxVj2rHPDuGР i!h8 * n8s-$_Ý"FOU5'@Q]\7(Ǿ gVzawqtE6/M+1wb,F~MAvf_݃T"R-Up۹r ɰ̃\djF>C=HN?5hWq3cI@LsZQLy"UU_1T[*mq9g.Zxt^7jHz75C8"? )#I sԦd8RD8(KC|6!(Z|)6Tp6VGȢ"󍟗3MK"5ψQ7Bw! 7Y O+QC=Hz49tr`wppN̨4UӇ'si"])fx-ǗNl?X Z( -)|)f(]D!'fu[d\IL]f8 8Y}VC4Ўvkw}wq3T[ _[$(k쒈@LO , =Z1: db.Ե%ugk<;wlJ5:''ari6/2%25yK6,bxR.1:/Q r5}"; ]nCB18tg8 ' mm#yԇW(iJ,oH-E/{Q̡ͺk+[~ꊦ])!B/ 9<9V.|Jiqa;d2P#- 8)~܅z\呍.OoIΚl)9eK!1߄,=]m֑[iRX\3To" ";$eT62X'=g0xҕdDm]2( 58!qpm@1<ؖ547%`4:Hʤ0+wh&)W a_[!"boRcT9\ h#}i; R=~s GB|?F6R:(U$ҿB}-=*#uw=Rq:6X Y8Ag#<5\U(^1m4WxNC-;v/"y=F̵T-=FQWqpVxZ.-\8w @Gf$T:^ K^h(oe>dzfd3tT4`&GzɃDt"t]FpόG/im=#杳S,G\jŸŨXsxNTI%\qX- U4,U"]=1U:-UN` %^ vV sQݍexߍjVϧ/sM:Y"#k^ʓ;*Юf<7~_2"oݩb$9'zi%r*n [- ]$NY仾/arjbnS#?#A[_'j"9-B5c3a19tg1JʾjȺ<8ϰzoUa7;gJ+?#[w̡<ǯr݉^{?&XʩBQϟg~Ɲ!tMIfz[jdq&宾*ogY[#){ y .T Sd:Ġa#, =GI 9L `HH)zM]Q->3gUCTzu =N|j[g,xqFz7Nx2ů=:N]r-elZWƾsT5O!m *J2ʃa0wVBfrNkXWml9Y+rudj'_D~cF5Vc6a[K+[+Hl-$M endstream endobj 152 0 obj << /Type /FontDescriptor /FontName /JDZICK+NimbusRomNo9L-ReguItal /Flags 4 /FontBBox [-169 -270 1010 924] /Ascent 669 /CapHeight 669 /Descent -193 /ItalicAngle -15 /StemV 78 /XHeight 441 /CharSet (/A/C/D/E/F/G/H/I/L/M/N/O/P/R/S/T/U/V/Y/a/b/c/colon/d/e/f/fi/g/h/hyphen/i/k/l/m/n/o/p/period/q/r/s/slash/t/u/v/w/x/y/z) /FontFile 151 0 R >> endobj 119 0 obj << /Type /Encoding /Differences [2/fi/fl 34/quotedbl 40/parenleft/parenright 44/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P 82/R/S/T/U/V/W/X/Y 91/bracketleft/backslash/bracketright 95/underscore 97/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z 147/quotedblleft/quotedblright 150/endash] >> endobj 36 0 obj << /Type /Font /Subtype /Type1 /BaseFont /NXFMOR+CMMI10 /FontDescriptor 132 0 R /FirstChar 22 /LastChar 58 /Widths 124 0 R >> endobj 37 0 obj << /Type /Font /Subtype /Type1 /BaseFont /RMFVSN+CMR10 /FontDescriptor 134 0 R /FirstChar 40 /LastChar 61 /Widths 123 0 R >> endobj 39 0 obj << /Type /Font /Subtype /Type1 /BaseFont /TBJMCR+CMR7 /FontDescriptor 136 0 R /FirstChar 49 /LastChar 54 /Widths 121 0 R >> endobj 31 0 obj << /Type /Font /Subtype /Type1 /BaseFont /RFPHKI+CMSY10 /FontDescriptor 138 0 R /FirstChar 0 /LastChar 15 /Widths 126 0 R >> endobj 38 0 obj << /Type /Font /Subtype /Type1 /BaseFont /PXBGHL+CMSY7 /FontDescriptor 140 0 R /FirstChar 0 /LastChar 0 /Widths 122 0 R >> endobj 35 0 obj << /Type /Font /Subtype /Type1 /BaseFont /AJCLHO+NimbusMonL-Regu /FontDescriptor 142 0 R /FirstChar 34 /LastChar 122 /Widths 125 0 R /Encoding 119 0 R >> endobj 5 0 obj << /Type /Font /Subtype /Type1 /BaseFont /MRJYCU+NimbusRomNo9L-Medi /FontDescriptor 144 0 R /FirstChar 2 /LastChar 150 /Widths 129 0 R /Encoding 119 0 R >> endobj 61 0 obj << /Type /Font /Subtype /Type1 /BaseFont /JJNCHX+NimbusRomNo9L-MediItal /FontDescriptor 146 0 R /FirstChar 68 /LastChar 116 /Widths 120 0 R /Encoding 119 0 R >> endobj 4 0 obj << /Type /Font /Subtype /Type1 /BaseFont /UFUTVO+NimbusRomNo9L-Regu /FontDescriptor 148 0 R /FirstChar 2 /LastChar 150 /Widths 130 0 R /Encoding 119 0 R >> endobj 11 0 obj << /Type /Font /Subtype /Type1 /BaseFont /JDZICK+NimbusRomNo9L-ReguItal /FontDescriptor 152 0 R /FirstChar 2 /LastChar 122 /Widths 127 0 R /Encoding 119 0 R >> endobj 10 0 obj << /Type /Font /Subtype /Type1 /BaseFont /RAGTLD+NimbusRomNo9L-Regu-Slant_167 /FontDescriptor 150 0 R /FirstChar 50 /LastChar 89 /Widths 128 0 R /Encoding 119 0 R >> endobj 6 0 obj << /Type /Pages /Count 6 /Parent 153 0 R /Kids [2 0 R 8 0 R 13 0 R 16 0 R 19 0 R 22 0 R] >> endobj 27 0 obj << /Type /Pages /Count 6 /Parent 153 0 R /Kids [25 0 R 29 0 R 33 0 R 41 0 R 44 0 R 48 0 R] >> endobj 57 0 obj << /Type /Pages /Count 6 /Parent 153 0 R /Kids [55 0 R 59 0 R 63 0 R 66 0 R 69 0 R 72 0 R] >> endobj 77 0 obj << /Type /Pages /Count 6 /Parent 153 0 R /Kids [75 0 R 79 0 R 82 0 R 85 0 R 88 0 R 91 0 R] >> endobj 96 0 obj << /Type /Pages /Count 6 /Parent 153 0 R /Kids [94 0 R 98 0 R 101 0 R 104 0 R 107 0 R 110 0 R] >> endobj 115 0 obj << /Type /Pages /Count 2 /Parent 153 0 R /Kids [113 0 R 117 0 R] >> endobj 153 0 obj << /Type /Pages /Count 32 /Kids [6 0 R 27 0 R 57 0 R 77 0 R 96 0 R 115 0 R] >> endobj 154 0 obj << /Type /Catalog /Pages 153 0 R >> endobj 155 0 obj << /Producer (MiKTeX pdfTeX-1.40.4) /Creator (TeX) /CreationDate (D:20080919141320+01'00') /ModDate (D:20080919141320+01'00') /Trapped /False /PTEX.Fullbanner (This is MiKTeX-pdfTeX 2.6.2748 (1.40.4)) >> endobj xref 0 156 0000000000 65535 f 0000001326 00000 n 0000001215 00000 n 0000000015 00000 n 0000161083 00000 n 0000160735 00000 n 0000161612 00000 n 0000002494 00000 n 0000002383 00000 n 0000001405 00000 n 0000161430 00000 n 0000161254 00000 n 0000003085 00000 n 0000002971 00000 n 0000002597 00000 n 0000006089 00000 n 0000005975 00000 n 0000003177 00000 n 0000006669 00000 n 0000006555 00000 n 0000006181 00000 n 0000009630 00000 n 0000009516 00000 n 0000006750 00000 n 0000012980 00000 n 0000012865 00000 n 0000009734 00000 n 0000161719 00000 n 0000015685 00000 n 0000015570 00000 n 0000013084 00000 n 0000160285 00000 n 0000017843 00000 n 0000017728 00000 n 0000015801 00000 n 0000160565 00000 n 0000159862 00000 n 0000160004 00000 n 0000160426 00000 n 0000160145 00000 n 0000019693 00000 n 0000019578 00000 n 0000018017 00000 n 0000020588 00000 n 0000020473 00000 n 0000019798 00000 n 0000022641 00000 n 0000023699 00000 n 0000022526 00000 n 0000020681 00000 n 0000023442 00000 n 0000023560 00000 n 0000023606 00000 n 0000023679 00000 n 0000025935 00000 n 0000025820 00000 n 0000023830 00000 n 0000161829 00000 n 0000029355 00000 n 0000029240 00000 n 0000026063 00000 n 0000160906 00000 n 0000031638 00000 n 0000031523 00000 n 0000029483 00000 n 0000033570 00000 n 0000033455 00000 n 0000031789 00000 n 0000035561 00000 n 0000035446 00000 n 0000033686 00000 n 0000038033 00000 n 0000037918 00000 n 0000035689 00000 n 0000039896 00000 n 0000039781 00000 n 0000038161 00000 n 0000161939 00000 n 0000041595 00000 n 0000041480 00000 n 0000040001 00000 n 0000043471 00000 n 0000043356 00000 n 0000041711 00000 n 0000045946 00000 n 0000045831 00000 n 0000043622 00000 n 0000048013 00000 n 0000047898 00000 n 0000046062 00000 n 0000050365 00000 n 0000050250 00000 n 0000048129 00000 n 0000051565 00000 n 0000051450 00000 n 0000050481 00000 n 0000162049 00000 n 0000052621 00000 n 0000052506 00000 n 0000051669 00000 n 0000053848 00000 n 0000053730 00000 n 0000052725 00000 n 0000055260 00000 n 0000055142 00000 n 0000053953 00000 n 0000056752 00000 n 0000056634 00000 n 0000055365 00000 n 0000058193 00000 n 0000058075 00000 n 0000056846 00000 n 0000059688 00000 n 0000059569 00000 n 0000058287 00000 n 0000162163 00000 n 0000060575 00000 n 0000060456 00000 n 0000059782 00000 n 0000159438 00000 n 0000060669 00000 n 0000060884 00000 n 0000060939 00000 n 0000060964 00000 n 0000061091 00000 n 0000061296 00000 n 0000061671 00000 n 0000061777 00000 n 0000062252 00000 n 0000062431 00000 n 0000063005 00000 n 0000063576 00000 n 0000065421 00000 n 0000065651 00000 n 0000069793 00000 n 0000070088 00000 n 0000072125 00000 n 0000072353 00000 n 0000073803 00000 n 0000074045 00000 n 0000075233 00000 n 0000075458 00000 n 0000092283 00000 n 0000092743 00000 n 0000107385 00000 n 0000107788 00000 n 0000114155 00000 n 0000114406 00000 n 0000133369 00000 n 0000133881 00000 n 0000144589 00000 n 0000144893 00000 n 0000159084 00000 n 0000162248 00000 n 0000162344 00000 n 0000162397 00000 n trailer << /Size 156 /Root 154 0 R /Info 155 0 R /ID [<540557DDFBF86C4182FD975756681508> <540557DDFBF86C4182FD975756681508>] >> startxref 162618 %%EOF LTS5-cfflib-9a123ae/doc/pdf/NDFTalk.ppt000066400000000000000000013056221156222202000173620ustar00rootroot00000000000000%PDF-1.4 %äüöß 2 0 obj <> stream xSj0 +t.$dN K`VPznC_e%mJZ("ƒf4N%B&/>/N,{rk,裻p}oLPQزD2.N{ƈM*GmD K$T$%6WAIHvLuq̢!>9jQ (A~rFo~ -&J)9&ժbhYEm.Q**BEA̤>j jR :4[)g~[u6R2rSo$}8t޴SYq[Pou0|T49_]S?sbF T7+V| endstream endobj 3 0 obj 426 endobj 4 0 obj <> stream JFIFCC"   @a䮽"^SSl dz*K9>؀P-ظlXƪ)#&fAHZc9{̃^s{7>ل{{>^sKP>mo{YH qkƯkGW?K|[I<, 2Z{quWW e06k@G-s/JOoEӿ齳?+~DJ>Zp8s,l'NOG0m\4o(3뽈9kO[ yUJw1L/g~0lلk[5]6-]VbI>(D}0j&U.=^?^e+1ǹ5k)P6P%VS]VQ>WeO9++J/1\vg`jQ.r#n+O&zs*+#uJUJ2_Վ$zS^t㜒(*MIKY^QVa yg6Oc=+ZgsiCfM:[3ށ"$igkm sn:_Tz>zuyd֫\T(ge1czsò>H; ?<z'aa%_oHXeu NMK|l{AGjο,80z]*b˽D8umkgX˚wmh<}F:l]%]َ l wRTfTtc [qyAPmL} Kh-L/i.?TgFI-mZjV;X85jufG>//5ش_W[|Ly-k笎G]қ8v_GR]g\%'CM972y?J'o.Nߩ];ϢoZV}-K(#l3u[ofs0iRlݟ1GM^Zn M͵[Z]ےdnѝNہV]TҹVXsvS*u;-񩺨}ke00˓EmcID~d駔yp@D.Ao&@΢+nU4uۈ,+czlއgGVw^͋sz$F; ͝WߍP~-uQ,1H;QG>r9Nؚ_)mmf'K dD}"ՏH#7dWqg@}cGM9Ϫz׸-ju,+vWRTڞV;e>jpmޮuR,~DK5w=XCgF-[#V-ki6N75'.x-q>\GkO1,,pޛ#[^S ;{uW#uՆݎl '6 !G)98uh=[O_r2AߣHϞGKYb_fksTQg}ۡՙgݔ 춚Yx[}T/RrDmbͷN7 K (Ίulra$rж_{Xu݌r0w= ܙ#/hcO>/}KV~5lu݊|cV/@yZ !݄[Xc9>|p"|h:vm>u2v|mTjT-mY,-lv}_{ΊEj7:+`/5 nLkQ͐swuPُ}J!>'LlŕA؀ntS5>~T Ax:dS獷?\>fjUYaG`]l|_[+\9 .d7egWҟv7Y )ϘB\`VEetluRGiDM{Y?7 675!014`P#&'@"%28crQLAU/*d"?*9n{_]H%72ֺ+o?}qK^9L1Ɖ"]@o/߶lHB=c'cI@cRQTeIn9k#cvr[8f7),L]u%Qr{jQW<_!, g(CM rFE&";Y[xddB#)<6EŢ&UkZUU4w4#`桒 ^[&ճ3*I6< ,)*]8,&E~jJ{V솽Zzr )n{,n1 z+d|CL6uB>yxMfQ%wݞœ03&MSӡ뙷MɳH@PyC'+);=#qb'ăY$ijN[n`kLol6arv<7\íB\>?6Yt%*Lv}/1-60g:llD_bJv=Z9̠řZR,Gqr)4%[+ ܸng{I6OjgpOl;Q3ۨ$K)<ܝ9T Xyf&EYN]/]+XZ<ʐDH) O=m"Q |ej@a܊3ql F0ǎH:sW ~x$KԤYrټpdKҨ[ur!H;t&s:gޘ̣5W׼Frk7Kq' { L12|泍N!P"H;CibV`9[<|<_pY4i-ĢÞs|#^VLks?>'ZXdQT2"0v)p P!D%:L j&\qq4C4ַ'1 !_ Ukr~M,6D7oNf%Qbtk52ZsQe&Aoag,+UznL;?^Y O` cix. 7$6QRp'$j5F_>MW!Z4U࢛dip#TGzW|3`swçy [__.q!|7:e[v]h:WÏk.\:^n }ǧH\7K; Hy#xz!$)'fo^;8lJ+:j.FƖITo_^xn K-LQ#ʇrIx`Ws)Jfp# `8o/K]85kuCr\=.*nMM_@s{ T>j7jݪnZxJkvnehEn0{b8ZRъ.]Kw򣏲'r'|. J2Щd%1+ULz*/r)= ,UEJˣ"pV.'Z8x Rm-~>"hӇkKԋAk@֌/wyTS5EטJn0Ïk?ޅ( ԩ}Jԩ[eO-}|U]q=i uR)Ҹvxfdr^,"(U):t|yHXf_^;0rbÐNZT4{vU{t]Li~ݕAl:‘ULi/ѦrL2y8Uj_r<τkꀈɍӖi3rwm;^wkZ֮$=Z3] ]e9ì;Bq95V򯄭|%k+_Zk }ǭ?V!4VW?r3uW (4fZJ0-\ { DiJQ$)? ytbL|+j[,pā dY&,`c͛q`贓!Y'Hq/oUjkў<.N40uZφq;ڈ J+Ns1U1wRn|Hzg2h9#طljϴW>(z$ŕw&UܙWrgψqGlA֚ `J:*!R6sgʔ E_29N1 Lʔ%:Sh(t",Fp?5ssY3?/^8"%}gv,S04Ut~ &)8.$=Z3/h}s\Qç^n }ǭq#ZY2鿫9N.0WjANH IA.:9mNuѤ|^H40uQT<Ը4 MXDMe.s£"RqPf%h싿s19gWΈ: IDK;~Um)W үVݛWvmFC&%|:^g`kO^R+&.$=Z3/h}s\PҮ$cy.)=h.eݺp')8?@cKSgN aZ64$U5h)B3.Q &lj*Yfr[;=@CkEwi+;\k[:ltRTУu쉯6+PCc,mo~' T3~?+g5%b<` &{ wçyo_QjAЗ#Ydr hs.N+`9 !ǓXZ5ٮ֊v{3wçyg*aaBìÊgϴ>mP|fjb>^= \A{Z?~[f'|.7Z\%o.XU2 @Q⛤-" yDkӧlܳVS hn ' w$p<{Amkd;Zxڣ;ॠQ() L:C]IT\dA 9 nxd I6FZ^z1PV_υ#ȹʟkPDb 9 [~#b.9@j'b0YPQ?t$wD@L b/{pâ\28xxXؗ@A{G@Ͽ9h6!ӧFu L:YZ^L#CĮXExP^d&k5:|PY4f݋~[yF=崆w6Ƶ{NM~PXnrE&bew0KÝ)pA+AdraQa[ F 4f)+㒶l$յҝoVU &wIw)f4g;'Nbi{`'opjxm:"bphM&r$;'Y_,ҰEE9yQqqctA[a TKb{# (}Ǎ7gyzxIvn  %DžϛtTkrt9*BDPț̩̹E\&G})$2,N9eJN  сkAǟv~H)d}gr({AmQK4_ )H݊^~?i5;_-Mr(.6L >$p8lK_(>@^؎a{j 9B=穡kyؘ҇m^!oKu&_[[=yPfG3C-!fBQ.&ĵ Q{}D2nb2goCn4MٻF1.A1  ᷘdG6%FdDtfFH0tYamog6׈%n9*f"id{o }E#~,Uʌon_gOsY =nޔkV޸6#袒CGGɏD7#4!Q yn#gmf󶎲ojK]¤@cE+]E^9!"M WŮ?J Mem$&Ţ9ն tof%)FW7f-,0A&M6mM6D[[ ڷu`%|p r\8Y7bͥ.ѳ[)qdm]gXb&5v )/l捣-tItJ$xѲVL &*ѲM<dq .Eyt6k&kZ߯%BY1|cVe/g !r[Hpq$S.81 LPؤ!@SE O9R7@&",Gd,%&=S˵:DpFяLU&c᳖эNrӖiH̲d&}荣4 m} _7P5% S4h'coz[޵uͳu0ٸ]mӐ77rp='H͈ #cLR N"ݺ8/?X0m%sgXe+ɣ@-}#hMyH`r^2; B4YrEkvvCdBKo;rL Y=:觝/" \ޛVa"g*ڂo6 EXi?ݸL7_A'YjI:!sߢ6mlЯ!>ٞӾ܁]ƌ+Ӛb1>UHy(Nv޷2!zĻlnSvA1eؒlx3wC[Xkzve=K!JX TAtFp3B9_pp܈%P8J~9Da$C -I$N7xݓ&`ȓvC؍nB!,8LD{ՠ*G+|4/KnZOOnfg xUvHpY://jE%yuP{zr3Ǔ_J&}:e,6ȁثrhnQʬuؿ7ƿ}-FZG}ēXpx#ƞx`v;Iő|;3aV fÐٴ遼guyۜ/N#l;sN~VxۍzIhZ3,:ūn.Y<"3֕h8_)K % \|.r>T)- lMP(zýORS(~;ȴE(NJ$TqZػiYƑv>riL"ԏ#S=ɐ9{ t^n\gSm(.G>6/*4%+EJH=M徑|[|gx>j WPlcIAʘ:K]6hInFy|&+V^ؿa-7 ϵܦ4vj f7Gra|lYA?Z;5qrH˼q`l%)<../{e]OxU:0bSC?oE< ON&,O7SB./z>)R&G_5 kf[T{^ݒ9Pga <4}C;x ]e@̺,ϾmtzJ_73`7bO?9?^v>/},8?L4fq>|%MKP;qΠh|6g0܆0&OkDR@m {a4橲P{ FԖR~- ?XRu.B}v 6;$FcLOPsQ]h( hy?oGE"u/cNߥUQZgQC:z JX㔗ˇf~UXyi}nwT 8!̏9`SBUHS:3bгg^/ [Z8m;:}wy>UOEDvC8c;] f\~Y2mʹ\kotzpśi엫SY8.5owB\pLBYR%px]HDBRBR3̾Ӄm"84%o>+L%NyU2 Az($$EشzwUU/~ztrOGׄ*lb ۾+;CV%qoÊP TCLHsvBVKt_Rɳqmwq9>:wy$>/*gb~A?p=J;L?VÛ ]$x'Ug[VUx|pr}J[e gV^#-f|1O*u4.iQ6-#`=h>DTش6JSe#`A"-#`@%7ݤe&ؔ|; WBP,ܩo^u =}? &"^owZzӏm=#^ c>4K`|>>.Jъ̩NIho|"1c0rtW{): +j{ͩO'oj{UsS-ĤM vL08$[CzLy65mSn-G6 sq~sĘ܌70=Ç֛|I[񘌘ԗ'6[8:$M!;Zpo)&Bkzp,!d So{*:2p$vLӵ;,_mr*cR\Ԣd"#mؐY`TxQ]aHwdlV̓<-j Sx́5-y}ZV <˹˂ dba! [x]l6[92n(S{s)ːit7r [eEfKϼg@3,GM-[]Iq P7'9rhKp&5v&Nɀa 6^l>&CQoˬM;o(#\.dN<:g!xw s!*T&F &ވ0eQWV\_t ]!̉k̜mqc8K*YW{ͨaӾi'r7j SŻۢcxzbbz)7M4/ʞuVrћb1I!w>{ŗZ*{,\#tծ8.Ėrlռ,O\v9<m-4/Lɷ@F\[!p\]p{l嵇{Ct=YKPhܱ t\b7XgV{WM]rSJTEٺ%(Is?/xַ&f޸D9YL`UEd@vM}o 6!5i6vj-j!B+i% 5G;$9bݽi6m voJFTb V,,ߛ钙\8yC#jSkѦf)`Èg%_\jv4Z^1DFlA||h-3+Tޤj`[z K%o56y=_#fja,Gm ɲs7Y ZnԖkC6Tِ<[(FXyunD;Xh4^ek5jLȓjrbS0F㐡 ۍHܝ8͘ŎD`Oҷe NDU>tNwy7g.LDݱƊ,hI`Z[l>FI!X$DŽ</ l"lg͍JMdzpʈIkGi~f&npP xbSphʏ 3ea>}bm Ü[;c!6"LZcOkq͐'"<}b#)O8IV`MaM5,y쓆4Ć8-rib?rHR/vF!1ѫlbQd <w32ckb /ЩڃN&Gaٻm6{vhoʎ6 Â|\[+¹i cCiEsvb&iɼl2twce8\-ܙmͼȸxҠj 3:P%sp#y`&ð9T {k6 nۍe=x#yuCx؈} j NfBCz:74,4 x`nJ"I&a裇̚Qzl(@pDDOFhZl-H*d#<*0._O9- &z2bgl=V[8)#'Z|f6M B ~_m#4Csʻ)ˊ>Ͳg\Y4;hGVFS.#eVͫ Y<>VoJ]ɡ^<t&Ah:OLbOd ˽llų2}bl!Np~n-᯷ i"VܜM !UoC"Ǝj6y-o7ܽoD ztnF0g—~ZKIGVWknTYl!/zxs>: \y̺`7F% xk=ղɀS I ,6X `5t=*} >Of.\#DFsl%K`ۥN[,Ÿr܏9qX6 .4Bll˓\sɷ}rxhA6͈Fӳܞ1xb<IAdfEjUZfk )SlmLX, *'̥-ܧpGyːj}QFRm Y1.̀aT֔Oo. nB9,<=VC診2dK5^,~43aÒ\>).,x..6ܻ~Ttif8&{#[cjflCcdL %Wot'V  !"2#1BARb CQSar$3cqsDP04t%5Tdu?&D:јsaw&W=׉^{gj1cQ{g&X>aZvmC|y=B2i5.փXmcNidpuvs&_>>vg>Gt4!I1A^\f_Qd L4o?Q? zoOz~Bh^#l4pD+}QǕ٭ǍIȉ.d9ag>7[gfm j盉|wyl!~6 Dmt3?#mlN=:ƿwIÿDb26,n83_GQ)UXOluB=YNPDSlG9Oj%@^kp= ѝћpM>{Àx=,l3R6s("yv wx{yJ$Lcař l+>^[f;Zr"IA͚vdag2_h7v6#iopo<&dVa vb6Z:,f4n"uVX xU 88%ˍcg*hpJb%?@xK~!mK1UhfޤINh8au`iip IQi" jN;M:"jC->6ٶǧ7aD2L&\qQ. W#r '@Ang7 SWtf\Ӡ%0 aIW0KUP $w'yPmrO3G;^?ڻmQ홵-|8@=^8Du\GG,lϩN#m5 /lc<лl+mǨRr!`xϫ]xmw> 1{+^g޺H#,;j65{L1NV8g>S;?^ 5H.Dd;09m/pyL8jr! &x&I sx cf/w@.KrLx\eҽx,5'_}qu[<ڽtzgS76YCbv`~"l.;+ ڠ8$Òۗǚٹ2g7ԝ+kK>F~kP'QŇ)*CNi6#l;=] r;xpQ@vb-9߶sa0-ve"e?zX̏c5)ՖN@1L9팼S[}K ~H7~?f[< ՞ś}Oy&;nˡ0}N\?`=ɀa; sL"n߇90/L^ ߅Lp ^>+gQDW)mɜzr^wpp)]/ t#.?^) J }xůw~R|m|"S+gDw6|m֭6c ʎVթ ף0}bǓl#&jDt2}b^\s4ܸ% ˍ6_Xӥɐ.: Pi@NHO]Z6'8Y/ a5is&3ߞ5 tZ|'~2a;BiL߇90,\ t/~2zs^> #h!7:9qמ1nlSy6(mOgqDdÞBb{=`7 >wYtm;O<:,Tv/jG>>+Adl}uSVmk`%gh|m{A>OR^@!n uLDF<1)G]!e?*݈dQ60ur9sV|p [pRYC^L.\\xrƟ0Cna;eЋa{'ׁ݀>xNd vXkUD@Mf6l>ߨa/ clV(~<{N@=&D8حںKF!DaI8 q3tb o9!p'V*l*fNU#.>Q}Q9KmDe0׎W}ɱSn;>Ѷb& QOXvKl\_'^tmKr^iu?{RG.ԿSa/1:ċ^.  S/UT߃]`; 3L `|a:Kv~;yz_ ݂LǡMR MBsX+oHq\wjQ* mGZLil[7H8y]QDRzEJ|zIHtfpzH9E;Xd)=~ jĈq4He$qp =`.U|ӌEs_Ʃ]l~-ClrE'"M}wK,ZfgD X`ZkY׬6+SdöǓ#2(D7Ww9|8zb<7.XK^L)_FO5WI4NǑ͜e#p,W9>̤bK"fyjvku7@ؗ:P;cp?xY-뻪jXn^~6 HMGjKD͡|xOHb"|xOC⨴g}.x '3 ,3"?͖6,)nxQky!pC]a,2F7}lz{RBruz1㪡O|ޖ6~Mr'Z#vݎdd}z8`^3<5Ly9~"jU,uF->t9 "8&ThPU;)S#}a24IѸԾ *3eB gHf\۽.$Q!BÔΞB[$fg~l?J~2KH2"8a{h|üPR7) }?UE--:aϦg͇dR*BF:2̓ pLK3֎tÒGPO͖nmyF+qR1NO%tu3%EJĘ^nO ysU]>,) ̖oqXB&=Ln| Ǥ  r.DqHLs#_{:c_QkG&jj$yC S|`9d_6JE6H'(1q \92@G8 CVU8Q!TĐo |+)Q 0cpjGOީȰGT15UJ w@צYCƩEMw'UEp3ӎb\ 1yl7L6uOǨuMT6t3Û= v|]ou]y|;lxlK-*`o&D= ?xmqZl g lTkBYvA(: "^KݷRDif%em!7QJV^L-/2+l9 ᭀ<)1]*Lo n'md8ٿ$ԪZWIMl2g]k m$ |JCjb[W-&q\dZ6jpq}\II$]>:vl9oĵr6,Mo[.X͏\bloyD9zf/8RcND5>3F߯iJPjjg7<6Zo ebUti>H˿EqžU=vl0v9#UFt$uDqcSĎ@>R0=,J^NH#l`#VJK`9ӖNm4lul7/8w^ަTv;,1F ڭ_7x&Y4ODvƈL<ɘjѤ:"`8i_C쾦<,40 55._Kω:q5q[qO CH`dWͽ=@7KaR]SHV,q.\\顧XN- CQ "Jލϸ-V_Re 1APmULT^KK5n2Y-ǁT=KfU;/ h~gwUIsU\?> MM n)UU-/7鯡>U_e˕p :j._JkbwTEDE/{5R Ikܦ)uJZ+8UC,T9 g#Fxmq^͖(3[p/T'=g @*tW7Խ3<ÀJ˂xU*uuI]<#gupshLjYCe]O6#>\EO7>彣`ڱ98ӔA 2.%29t拄5]X<g,l YL}CRKG a!e{^mܬHBSͶ`v 8[!qYm'io.?c"Ӛk5Ffg\XOܪtcwhb.iHT#d6CEcZS L+V6UT&j XƧZt+%WY`fwj8:`HsHo~͉A< mAf˗p ٷ,U*Ըd;H~ ?`Jz} tjܽ./͂rrmg*$f*g/=\T'P'"YƩ6M%0QA!˷᪭2D8Dq2`'!.RNU#H1"S 8`Ѱl|9^XUn4I%Xvvǖ <=!U3cInH jDG:o jjw1 27*yzؑX6Qؐi17D>%(TSڜ^az w=HADg_[\hTTķIN5 } dj'_{ݦ۽qalʎϿ,i5: ʛRma,Xgx-~L̃6m߽* US>%h$Icqu2 #iሷ@DB}ZXs{}Z` B662.)*AR `w{<ij nMzSj^U)uȲٸiyrb );DŨw|mh 2ZT$řO@*WTWKRI_yПgRQ6]Meʧ ycFSF򿕏\E&7b*g1 Cq0e)J%$Qu-t3Fdbx68SmKN#7pJ NC\_k=Tk>$k'Eb;5_aQ4Υhoune7hCut%YO051 (A?7K`OIe(ٺȨO3S9:l5vDR< qqJzU{%6=pD5xqi"p )#$Oĭ|=NJcE+Z6BNJ,4q,FF"]~\Ebjeܨ#qՠ|xكj:Qj֪3VwF dQLj>A6qS7*fhÕSm'I|k(cqJeo^dx@csVΠyl5uWVՀ"ޣ.#\̢F n{X­wpUC$!:J^k5Q2Å2ACvi=b9U3#<7U` d!ټzCwO^Uڹ E4w"=l 7[ZTwIH;K~$c @}ȃlnWl[Nه;;:/_:LeNOՌ]R}0e>2 &'] :km􏛋w!eX~TBֶֶZTf\dwQmG@EW#$g 3+EĽ{>SUܠ0,U6]NXxxl\4b MDAMk{L`KMʜP7E[էVH>Ał ڂQfq 5h$^nܲ(2>کYHMt炎tt>ML߭ʬȜC\ϻz3Z/*syDpߺ,ƚ+ư؊yiوOt(M*h_#Υ\E]UAYI:xI +q/<\s |II3p͡zB0X1$x:i$ٰcJA,wV!VT@<*7jTsWZ3wf *X$\ZI䧢ZE5RD \:HlAhtW3o'yARً%#ȱtI ]>m:F-\<͗SF3\H>PG VH:MrZTQ6U[Uq|:.i[!3c5Mr~ħ%CQ4#i#R()]LŸ? Y(aNqAIй;k|(*;'I{dO NPQuTafl#e9hem/dkxn2wQCG< $G#vo'KET Yu]c)IDS0\ER߅kjo' I 7Ύ5b/Q}8^77fR q-S(M7>Wu W;X0[#$r7VC*X{V^Zw>hIhoHϊɞWy:؟_?A1~t<2D|i즟mɷh/,|TIQ:6EaѰy)/9I'/$> ǃղUfQ |LROs6u;V2?-mC6Q/H=#J(59K/KS=;yPA[X5Q Vٵ&Հ+"NUm,?[GE:YTr$F>[OidϹgI9lCqgA5mm,<.f1a'|uSH?UU,@mD M15edRӣI4ҰTEpa4-:ɾG"Pn)}c0uwQelEId,qF^T Fk6l$oB0UډbRN`=--pzUHi V&R.yTŞI#S`tSB<[8/(6d1R2c33vhT/QK6$(QGּLޔbMNУZ#)9G\/GCZUQtTӠpA*̼LYgyr2Ih 66CG4I=,SuTnH4hdm*,utSSg9TrJj"*#2ٟ͟dn|TzgқrcZfr,ʙrE=},5pm>t;q\vr[N+SɌ[Q@[}>k.&Q*ek9FQWU=m DP>XX-ey?]&\]!jU_⩗nc'x\?[Oˌ; ]K~kZh7~U$זro8WB5|KY~nNeZ֦F҈>1ztAyH yE=1DV%.UPơU)飌wGFi͏V?IX?'8p5wg秬r:06Ѽc) X!E*PiB;4 [+Ok?y!0[!7F1G 1$Jst]8Q$-srK7&&ƍ4w⏤}=QR>2FWKyMQVF7fX<̭:gn'\X$%· I[QNGFVU/qWCQ$UOM4_\ K]Mj`3{j-jctVJvD,'J9`:22Atպ.{ZLǪͮ2;z6lPEem*}y?ׄ*`D fpl{57Uo;PRN@.4{OU|\b5vN*({IVh)ڶCsF%lpeJ棡j%<2좍BԐRaV2o#zNr{ F U]_6ڦUDX(>,g?88._ W:^+ {ET ZLo'h !^ʹHaڗpXKI;$ܞzk?yO?Kp-O1fC[׵]Y8ޢ%NS+i1̏ٴp6e7He; %TIZI'5h~l⼿SI+hΗ_IqšWv=%4H:$Qdy jF<742uƘ*gde67y[.crA;tn'nCpEE<3,j8lFI+EoT-`]G':V-?. |I~2O0Ү :2.ĞK{%7w81 m4ha5l}V~GGZ]$R`.kVzdm:9 9oDI r)B63q)j%0!7xJѠ/6/8˪a -T5m m-.*䩨qdP8aE6U&]OJu2Zɦ*d ~>,GNSwwE'XWͨdzJ~I>=c掀/S7M%N`0xҠo cYVUfeqa~{m2xC|܏h'#{"\o]h#%'p+2av&G3[oH2ya^Gɓ݅\iQ3^jlu&gXήi/y:wqN$i!Ǒ*V^y>=&%i7w m YtHܞRȕܠjvHIY /m\MMsT|KY~nCzMos/Q{2ϱD!^cxfkCawoCU;j}^͕gtO}0? ?hwqG8$]ᢝGyI'/$<LHi#uՠq }$mkwU_ń6d|; up!8#^B|h*bYqfG/kW{=/ZxI= vd/WE'T/O]=Z9hOGìoyؑͼčCpD4tdzmWj4"1l,56q̲ɢ=>79#xwt(Pa6vEm "X[8cp\\8^#1I XOJ*V`c%Omn"Z*H"P# =y6> :˚:\|m,BE7&*)nnHh 1Z**OE@.*$$US=Cg/oӅEgeE6824.WHtD$}nq,-b;ƗRN3_k)s87ɺڥ(gm_zN?I8֯ÙrCUB'^мlpr*;+഼8ooPl0#ENXJW»QYW+UW4HuI,9GsYoufΏTx4tpv._ כ s/Sr-4G fp&OF F9'& y)$%%A5]hk%̒J$16H]nͲ)s,uQ38~m.җم[Sʙ/Y遧|oI wV7^nR|s_+?$:fF*oGr>XYOg)O<xSގEuAz}4*{>jzZ'zc|pLPߎ6C/"uOpzZKt;;EO~W1Mbon8UcWd;촐{XdS줯APG8eӂj6mN[lDb^+[ P֑mi\o28;qxj;?yWW <.=(lrk5Gĵ7k(,|@\9>~ V9)LRA2eJȚq6`[o]Y8?]W_r=UGe$$uaqE&򹲬G)CS'٘4U+vuJpH*@ A'5h~l⼿ksm>o)}#cUM0 R;uQ*Uexm"<1IOF&Tդ?;|0O*n QԆVRUpA@:<#ܩ];6uηaf%Aut`GbF݂/IӆSYr\|a)OVjf=26TѶOo=1Brz.A_|ގ6cVߧ@5!@' XutHFOOQ$q,쐇`6 f!oǧ+D̊@(0:~Q&'?F8:<  WZVpʟ`Go$laō5jc#֋ZG!0{OKWYͿXb'roNe:ߡAhmhʹ"ճr pQ8+;N^#9̪)CRUft~.dfsE=`eKO?&?5l'xZSĂ(qY1EH= ))e+bx$N}[KWI$G\'YgݸtyGR`yc2旔<+WQV #2Ү 3iAx2/j^&+ajfv[IFSQSMj,8P ƧQ-g) 7XE 16Uj-#J_x/<cR?1M~ðNz2ϱ͑IOYO-4T(wv5RH'O{Ǫ"8X3I0B啻`SL)EhٱOk?y!5!ޒ 2xIKccMe}J }EU7'v;BhfZyc[z*|esi27H]|gp$S7:vo\7CB@HZn2u_յ5瑴zz:yOɇj ("]yӪv3im]݂˩ =շ$=c.F]8o7~AORz60aC6 "ǹJ O2_3#SHwc{{W{E_'qQ~эRS#k a=slخEhLt9[S13:*Maju=I!hY6H~|E2oIIP(p~ɏj|9̹Z,Sɤ]˞ue7C9:Xn⍁[޼e!+~* O x۞deS5O[ZSro3|C~~a}>lU9_MӖL.r5s M4m8boaLtMo OW c$Ƕ %' f#ٍ=I *4]MW2u[r&#nXe.4.|> H m-qzw *x$5B |lOUxUxy]+f#1a<șm-j"hFXY؂1IxdIas IЂ A%UDƂ:)y5H1铭n}k|}ER.Ʒ5/b%$|HҿKqUj00ﻺZ EM p7`԰ƻ5$U:^;lI<^Y$ߧN-l﬏w؁K褾W5eE!*$Fa,R4V!;TUQήn5K5=:rk5Gĵj |io+%-Wȩ:T75.cC3QMM46GKßEj.RDKY4@ۄxLFJSQ̟⼿dw]o)2v5cI%s`vX4RͬeHy*R>lL|r)zoŢ#{p AY#fGR: E'4kqZksnC%u 1K[ĕhE܉٤4v^`PLtO+]"O?+wnm)x2x]Y[_"+^Y + [;vmNx(_ſd@3o,I'MqRɘSk8y@yUr!+#GRHe%qQP'VT$+,aFV]M@pb ,jcx$F~<=\ {yzӿ؏Gסu>g}M؃ji$`h&ݶ:~A|ޜTQ!V&ެ;RpZ5 iM |i]˩_ĿYWrBϲ~:}J85nuYBaKFONlF]Qe0U_=Lr/rVɘeQH|sk>=dk2kETtSL<2b~7&?5z;Fu `E !3 4aU7AԳM[r3GW<1fB;VӠ?M GR`yg1ܚƧQ-g樣fH'dxR0'M3UvVzRbH#VXU mJ6*2Nj2͑ q믣囮F!Z_ڻ*H`wF|b9> #dꪷUu7 hXod|㭈)&F=z͊ D IuHvQ|㼇Ϲ~ TIg}1_6κ9nb=է .Q.σLBoI%{)Sh올/`6lZ!guʑ؎G'åXvvY}Sna."`YQ|}ǾfTifKC)T5QL>xmcL?dEu:AD@tU,Zi i*u)ut[_:73ʦ;_y> :wi$}#*e"xHal<#.{>Tv@j/(W9)`w[p6n:{ze5yq[nEJI7a+25@BVԻTT"AsCbFUm狚 ں*do,QWY^w3omV_=Ue]rG UF/j~&n幣TTvɤgt_(Fvo{ce4jbx>#9B3)ig2lj)t׉Hԭm5ӫTU'7BIk&Qfo=4;UiڪH.?yԃvmo&]W dhDQ .@\wyM,Ɨ#Fc4U K/RI+gY`($"aFD/%=x)gyieJH`xӓ-,WIW592VTDX;@رAڹ䧩:eRC4k,N^7 {K*)䜺s:K$/VU>a^%ߍ\ )39Gh[yZՈ>5~+裠Yme\Wgfgv W3\+bXR墨=)%G q\9?ɲ4TQVmnwܴv;ٽٌ55.O}H%sws Elj_Gӓ-3Hc,ncHTWSi݋Zv!KknB>bZ2K39NXP.KۿkT<k_oqY[D<| vj@"԰2i*|{ix?"]MB-FG!>K>%Sި>?7)HqJA]Ąjj*mRuWT,0DR4(?>UDe?lNl꼎fI |XwW$t7NgchX~3t_k ˦)c% vL>&b?A^ʼnF=qHa\|;%uybax`o  }:~z6]e$m8xIH5zJڱMK TQ "cdYEإbXii!XaU ôihWy\ͶϥR1o"TJxYvF]ƞ)=`0>7` jjVhA\ YfTaBS¢(D@P,`ң^)~NisV5?#;ݽb@ My$ biՏCxi}(z37^3 jh.7 7 </Ɉ~YS 4c4w2c5zj'L\muW K4Fw4R$q6UI}ri1n雎k͕8u_K6׻JD.ڵ}$bI7y]➒1w#_1d%|@invt"ja  ѯWw (TEUUP,s ImG𳷪4~(c>jꩪ7:r$T+DUӫj?N(@ { >m j3GmC-4{ZL6YP麰=ŅfE@24JX:8$1Ӂ%Έ;#[|wW5Uhˎâ1dlTQ朐CJjVifWGm(8H_lIZJxX;jӧdN]U,6-=! 2|)4UG6.Jo׳ yZSYIORi,x=8諒!QsjJuwzG<ŠL7' J-KT< j^NV*3dSSuLdOX1BuCa\,i *6 Ω4ʾVCOʮI|w*uR$h{I}g)f4BV"I, 7vH* ݓV_%yI l?߆:ͳt.yMM癤W5YYMH\pʊNV]q^aNfmz%Gv}ͳJje$W<*~bYr֖{x^_T*iYd+{/4QdST˥֤/“%Sx;! #VYZ$ץp[6vO4%}@BI¨Cu[ S[<֚hRB]އH*shePK=ToaV2yK9c&6q!T-]qS#XM kPX'R;%XnVE`K7{GKc+kg_,/Zh#HFlSQĐSDG([K7Yy3+ (rݿ\tSXęg[PR\ M.7E;;(/TQhJ.=eԍ]g S˳ԯq~ܵj?m7?,9I(eK_?TYr.[IX4j~9Z0@򤧒 Ⱦ0 O5, r><6aO,2zK5N] ֔:9IOW<`%I?UFTG QDDMTZcUArdY/Vul@j:0k_~q[& ?%8RJ8F̐û.y$t2=@BG^@7g-I X=JfyXɥf5,>Fvj?9U)MLWX&9CZrX3uU? Ԟ鴐_ӊC;{ɦr /ޡm?cNc"/2Hr-bȬ~ <[3LI!g^&mEŠX;n27Z$2_}l{HCˤ%w_َ_e~X3K<qr v (WҪ "O3Ik6֗+t4N{J[Lh=\,P^{a,jދM $P4땽Tc.@AlG5e)74ǚ:ԏIa505mRF4ӔfxVB 6,BfE}kWQKo^WTuUR$)ƴ)i`t6tܼxr6blzir3:IRH!sHc:I㓼Wz_%4!iLc(HY, ։}{h9Am0,>S@>}ڄūkE=Hpx匳jUǔіόr7ҭwBoa1#4Zn)#+)Y` 㙳7F0!6Vi4p9&9]-]V(zz}LM}X7b'̝hP9z3mġ tuQ_=ZP')`KÊkk$3UUe43Jl 3IN_3ꡎU*ǣ*VH?N\e9?[ɅT4խ3m/PKGEqtKm\Xȏq)ªH2 6n[3A圥1a5:&aN˰E Lܠ5lSJrAr S>kĶ2e⯡ +HR~]=:GKYƠ闇Uܯ2٦j(% 86MbVe46K$2;J>(~&Bn˨KOYն#(5kv wi`U&N0SJz p{:1.NT5$JQYir@CZz5i\g?)ɏ^'ʇc^Ջ$_!ZE44>o~+Ԟ)+rQ>oYL}T}F|D~1K RgFf4P-t Rc**}ڊ 5ݲQ0bIq:z2*62̩pT"CU+^H!/|8Ad*Iq>!|-oAHgN[Di纍W%BpVoX/ EQT(@jd=Wqc٩xeDCL/D^eO"(ᨧBR_O <<ʒ!HZH#HyZuin%&gj)M[flDH'8qfOWHe|*?"5Bޓ+qQQ^dzvpvyS&D:v7lGÿFҋIӽC'F/}Ѫ5 7̶:.T~i*]k) 2O'-\=8a7=eԽro*ɕ(pKEOLղIEyd]G(~GS C:q:2;u2[ k7t8ӎQVeQԬ4UQ Io31X%(-m+!ԲƒUC2c?5EUVΒeYj}%qY \j.:aԖYSy&孢vԍK|&C2LAq0P˛d5-WKIa{cE^G{Sr1jtXPR$,eU2|u.ԽE9# i`t 0)2Ij0 /c&jV"ʻ0j#7l +Y ]W.ç&f4uU5 ᒅq=48|@X|hkr'CRVm\>N)r +p( Xz35'sT %ǪLoVq\wx&Uu=d3B9Z6 R[c*#Z*x:;R!=~\Pgt0M`]SB##3D Vh6!CQ"( [H 8ȳZ<*2S/$mxyalӓH]RL %Gi^EQfQAxGvY{ue'2,4fT#S-ECUM9 [WF$nߩ"_p$ g7C͓L ccWʽ']tz>L$u"S.6_c+@I89ZIWx岯J\rc1Qh',rw." (!;v^+orYf4YXLhcp*.ԭn2Oro/"ZƢ2̀Ǵr8V(bBie\}Ϩ`GSR}, Ue"C%zET0~am!FqCm˳f/~ Qu*u2\Okje`t}r_SbHTAL.'5 V@e$γ1q=SN#P;Oifnqo*5%eؾJ_{QE?BT0a,}BK5K#R(&m+м?oyr ZXG{ؔ qp6h&h8;;{(cI[V: g~,2to!6$ꊠCjq"F5 'P8ܝF&tQvG*# '):!#]G8ByDxOR@1e(P@tSQN\лY)ZZzkcc-jȞ4~ %%3x৊6U/ͮ/.Zhdc%5z 4131jɚ4}`:S8/G6؆3F7O3E4i,mI]8e8Zwh C}Qُ27M1"FcP*~mehdzX$V4QQB`8Fi Ib4F¡j(bHmNיbEǧ ndX!HD񞛣fMN sFFmtD67F  jTE <@ `+TSSSf9 :=EpNOWko 2&"f#f鬕th"=$OQ{_OSSL"K˪8Bzؠ5M-dԹ44,{p+" }|Z8eF9-,rrC*i*(&hJ;4%ۨTGU?e(v9A%D^2{2l#;+:Cӣ` ORGˊ:!=EfbgB$1M ]t"Jtc~*'8>W^$)*)" dUx}<^Rծ4<68ߋgӊmOB4S6 sXVTM*.<隘#[NN[&I)ͩhtDâKO(⪻qs"cdH ]6e_g9`yEx- / ;WaMrRlttI%F[t2j_V50G>iOQ+T̢I#982ÇV3fGhbb ԛތr'~>累O=UY#}H(TDDT 7F'89iLVڲb /ؠiXh{D9Cɏ<3j>'nsVK^ip%&fs#_By7lhb Wktc.>4KM2)$nsz|qEʌr[y/2…6cF}#5t+ [X#T#b:›0i3!P*N"WkT|SS1Mh^Ssa~XrC6qɌ4XhXE*Vc424kS-b.]I SCH]5[d^"n(s.uNKA45IR~5kj^r+٣V?cxUjP459~Ť2W7 p[4 w,HK#6]FW^-^N?$oӉ_3E̳IaI ($0*-n-Gn?ݙl`ΘÏi6n`\q2En6<7)9$6) r?7tJq,sVƦuSʕ `ݱdq򊩁?W hji'l$M H1%y=okejR])+TUHĕڙ;7.hIOU&CI"\zw3e!:d}dѴҽYz6>Vr{FvIQ>4&,PaYiuit0B glUz1UU2u,1VG$(;lzLF'ki4ٶ2MطB{˨sE-^CРَM-z&kKh G`5\-44 Ԓ)VӽEdbye,dy4E( ]cx"Q.I$pݏۥvZ1[Vzj[$m!ʒ@Auh,{;44ҾbL5(wC .h]3<(ZҎzbЍR-rR30 3F:}J^*cIu⫑|z*<{9bu+kYjfS˾IFmc?WPMEU̵{0INr?0ewXF,Ȥ%<Б^uc&GZ+4TiGM ,r,~:bH1jL~Q!{襵GF9eY0]uQ(]ɪIp<ڜ96nMgҙ!BڼwK$x#իtlίEi-ͧYPWMD5(u$ffڼUfF:X#Xe-W8[$VzxҠIEjU?ٍ=m>}Lk,z Pe4phSMrAtHiWr8XB*rQ`EJ1Us$X+[ (4P7*iᎢu 9pa)iᥦQQ7 5%},-Lk,LTIG 76 Z X(QƑD D 7md9UlA+Us'<4:pU:VS/&rWFFj} X"7$PƋD mt I%;F- 3#ƫ.`61FIna$'h@PxJc%^mwgӀ"j,Txckdm|2URC3ۺ5E$âH(iq!1рWC* hZzNM!VIbGR ԂqAK[Rm]Cp0OsDK$"ߒ3+ˣ*GO))2U@$oaPЉN)aHDo@]mo9QdU18 ee;$0ľetm;_8v[5[b%O`:rW#W xZt5T*F#:4۳ 4eG1Ē6]*bGV(qk+!1A Q0aq𑡱@`P?!2\c@mP-@ ?niiIތ4f YaYo<,#PD8a+/ŝp_߈B>-v Bв ;~ϔn݂zL6C^ X[? B#섨ә'P[1oG~`+(ù{؂笑!rؔ%7$Ϙk6gMi9e_ޕ 9 Wi=,슽tx ZO.pO7t$-tߌ CZ0}ppnF2Kk[FI\[G{ݦ M I+~yd[(P~c?Ġ6~+TfAͥH0HCO)^44ib p0 ;r%|LZ#ul7eS$~ʚ!N?gA߭"G?|ȬBn)KS4>L,nN|Q)OY|Ȍ?dx@ge)FWhyL RakfAs_ՠ-ktBqA[(J u/0dv0 `&o}UPO9:PW6!$ bbpd$ /XU<ԴzBi 1HFPrX.$]`aY(8M̷T~q '9B v2eD`ɜK<1rҵWv|ti_ Ʊ-9s\fџQZ[!VB yn R.ܞ͒gId9aBWt<厴wK.ts}k+l tS7enG7yDɇuY -3p~;Ÿg,r"G0\D,ǜJ G-d΂`0 nu):DLBvA|8cT`ü~W|:g7eo}go}C#\Fd7S[3q}VT V!;'F/ u / c"`t6淴j)8{:,P je>}lgApWo2 8o f@>Wd-a?O^ POתrxpb|:u*@+EJ8n eLkW%VrR 78l-h(}<8knz,i6Boo8)X*)5nvJsN'ZJ5#v_S_1Qˌ,tSTтR 3Nr$!z]=Isc'%_nLr:\-U2oR}'{18Nf8p$|1FeZv? ROЧ ]XGWsP :q̟zP؊3Ҹ8t4Q.Q!0j݁h"HY)5m<&~loL }w7f2;6%`OA=!ҩ3 _NB tR7BkVi))ukٚCnXe,Qg_+=p_D]H@j&({#oƚضN;Y?4"p?+iBN̥UU]D"70smtZ| ,E)x̥ڢ^DE"ԛE(K ,;`G\nBڭ([)P&C8q6R#yKt40>HM"/H6-l\s|\xI|(dF:x" &# zFTn `O@f4ǦՔKq{*?L-n"NG;Mqk((C@* &nvr@il ꞻZIQB('E5sy118[r]ăඦ3mj#Taܔ'HVn^ D!To{FIMrCTb|/BYA<b'X )Q`fJ" ân$ vM6E# !('!JM۪y]S3vmؒ/ܧUw$ITU44u;lOFR`&zjMBԤTf5g׬H7*\ͬę8w[Eߪhjޛ0L,{?Kl(J%AnGm= j- kf݂Kǖ%h*nx4k"lA8(hJ\  (hŤ9"λtϞTS@hq=HQ4y2)nuD˄Ѕ4v{:A _6c6Zו f7ՍC ;>SȜ9`]*?&'rlR W"jM[zjhh ~m 3-i_iÎ"4LI0Zӥ,ĝcx!&  )g2kRx;dBG͓sE4AhG8:HÑ9yW}iXt4' ?{#HȰ\T(yB5-fԭb-լj!>,%?ڑb ASV|t>5\#)Kk{j;EN{\nR똡=ejeirRd ۔~4V2QazFBd2HŪopB~\g6-k~8"$\PVa1~i+l) '~"Wx.ǝu*veUZ=jP]< =-f']4rs-ӯJT.0Q6$hSA)SН3h .]CY k Mew*JCStvQ1K'SEXTěaR}% f7"uv.WԨ7!"_I1XŊZz0ilys耯IIf Q Cx-E xQV$EOvGx6ҿ wd[>OWcf0؞Q wN\Ǎ=oMwa:H"63~i8jd5ى"~6Ymf*9 xKvڼ*Xp_n :kl0?6:ؗ+C4NyAlU&PU7Wgv*Ɩ)غ&Mh$6y~@4Ȁ'[, in5&_e!>4e[тEf*J6T;ꚡZ쬈Z y:r-} "v&&սbʲD7O]q5SMZ$fC<'Q'&Ri'Aiz`}n'lH~8LeN%C{ztC~v)CtyLz33$Hh ˣgeQF ǔ 7HF c |~J "M]"8R,oC{+Y-G zWO+ǐeDàø$љ˴74Lr Ӕ; }FyF1ô= vo>m 4QВYuܔȏ0l$D159>ϏGs65K-d0 BQGy2Я]?J-u%H]Z0€⹵P^ e4bV! iiiFocnToAXzjB bhGž"Z?o~r?_63I-07j$ji[IOKe[z:+V`=#yLw5xcCNӠʸc١/$Zs@Hxl)c>JD"R0ͫFoitjаoܪBC} g@q$, ŠA H1Pb,-T` @.\K ALT H&. t8, $"XaI@p@AVc6Z@ 0@2X\$" (@yV##`t xҐҢXEP0Sh`}NT pa@@ T\ @ `4Nj@ P0:AVj@(APf@C1 !02U@ @A@Hb(;C pHAU8KPh.[_d)L!8F J `>IbG+S=q)!1AQaq P0?wQƃu\_N(Q#cvu@ZJOdL1kd|&s/c"4[+)?EŽeBj%VΖVG^&+Q <-ы[7z5-9$A@7\#hG DZSk:Ӻ{DOA RY; wD#æbaamDu͸Gz W*'f玢@(p$@d6.e( VH 7z>;E܍IE ^4É 7]E%a !tA* R˃p&$CIOVhUPCg$r#$R2;q&ܓUiF")%Wpz*p -pO>䀴[xj0 ]D F#w.@hL"т8$RBSh!j(BB"t{5ƾGƾG֘Hu>;K8\-j` @$1CA,\(p\SK~t"k!FG*7/-"ƥ+lӐ%"5qnv"', d d-~- xfFPlpY[myN[ S,`«^1(sd+JԞt Ab$}Z3MZ{â X[EGhZvz"? ߇m863$qʈ lh|;w#J'v__&l6 Rma ёDU!6Htc/'4h+d!b4 "uO$b::0MGʅHINX E ɶEZ K/TF/ChBI.iNW\ CuR70dN`/${*h4oԉZgǶ+Jy|OBwZug[~E#0Gdo޶zo]X{Ҽ?nF/e o51j!}K3]<43|ƾb-6= YM"W!N+!dWZ #IϹMX@``&XD )+;TH30%- ,.3ijcHluP%\w1@3AmkL` b׍4DQp䉂Y1M`Jl1SGR,)i@@X>=ݭ]X8@܉LzQb!Is܊Iυֹ~֧a7Hx>hn?U!y]#x5xB|5]<4f?ʴ\ A猜zAApyid!iYʷo%(풐Ѵ7 *X[df"<4tH,Hbѹh'}:RfO@n$JK6 N]0 aUYq \ӧ$Apw `VD[C @Xm  w6[惽8lŅ5ʙh|U;?t.ZbzjCq{y-q/omSk_|iL|N l9[.~뽧恇:Q@?y'lz4~ǝ!ylsӾwAjbՖRf="K]uL %6#Q ՜i]I#(VtA`hg" I_SBSl4e=DfQX8Ch9<̳03!TXyPI(VX[|nQ' ?}t1էIXDcEz`־3'GϿWW}N ,;\mJE^^i= z4BZ}Z:: ?/O rڅqi0G~b%Z|H V߰s2dNz8Y@]20J.G$h~ $oh*%`$-N53pWjr.c_p,ъRh ,mڃ"T)*>rI3ۚjhx<+ؿtӏ5Ph7y_uoOU\"υÐDg 7zެ߮d|yD?uY?BQyV׭`}f סCqIgʵ}*nۺ;V8N{Isqt[$N4(6D@EqCw(2((D$x"H%d(P #B03^XX)#ĎPL e`(Xo0@ Mk`pqˎbs|lMEڂnZV|\B>, "$ciUO<+|k$Ppf#}k"ms@"j3W'S>׀tp|m0;R8+E1&ԭY@ko<;0 4%$,,w! !lɐ(;f]6RCZ|T4opuaC֘u&~5 84/84o~CcQGZuƢ~nv?q6&B@opw[X!,X|O fr %]-2 c4A-/ &Mڇe*-@t(s[輈w<qW@Ah܂LQ'I@CED1 0$T(A %pKb4 ZjRgPg݉$4 o  x>,{dy46Ø1\\0j 'S.@d4$4[S7"x`XRqN079w8ɝ&<(*XG4*p; -eNhOeB]MD$` Sf.Tb( hJ7ΑlXNi )\c`WF"~Z (c [%2.*KXWXhQi%Q t T( JCT zLs6#k8W/EPDB l^2iCI%JgPJ :gXkIhS_ $:d Eo\f0BA0Q$$DBi)hf|`Ib$F+d!2^ S hk(ʢ404zbaS*WHa!H hO(E6SJ_.lNo@#>bbJMHP2ݔtNiS 9fTQ;HDbMV8F`I,L6J.(N!$ĺ\t\h &LRЍM!0{~% DOr4#dcm(#b8 T,TD;![ŐSMfn \O(g F%IA3H\jA0nZMPŤs,ђǀ"ekbat0DkLqk_ `Lf 7 #%aC7!Qp E ƙ&סups)Z.j!&WQ-nolOgn^(QZEA@ņR  0(㲀 "fq J@qA3Z[Dj "$6:9,p #1jÐC܀ڛP2!hrۣ iC e28{֍De\8V۲x 0 A>^dI|`}0E4sq%\HJK@,9Ѱ247cbb/292 QXMhG1D`BQ4` TMRa X@t`ϢI4 %DMDM!',E "$P4 9 !pmsՈaQ.R$`(L@bQt!3)0v;@cY뛦9r"GYbYHwnN L󉣞H*"IA(4$pS%ГQ`q-]A!hm zdD|G6@Pq!"  0JI5c)XKZ$i~7)!1AQaq P0?P DĈTGz`*&l]ډ] uuiBلmK ӱc0)|`UW$`T\c@xFPMቊKszzXE&yVh2A`AQm0\d|aW8YBQ$F{ճ,^ns:ŀ9lq%qXr]1L+NMui:tm[|! `@5; :N*4;buau=O?O7W~v[#-tLx9}wоQbjr߬"d#mJm8FXI%qܘ A:I5kgYuEZٙ4X 7ӥNښ oNdַSϕe7۪# r C1NI,+Vϸ(y@d*|O症Ϥȇzn3|߿jO-Z=Yzx1@ DBusgG'6:zk kώOc-kYt; %ČJ!6h u$hW2knA &`F2P!ΰ2gF tECi\f(f;ϖit8YA-j|܌z,0H,4DPH="4P\U?yA flyFZ '!؏ӷ|s{ O^#~}C5~Nisgds_w`9׹:T{vg_~߄& m!TyvYaY/.XddbZjE0إL9 S7i2<)&+'r¾vq<Ԍyˀyyē\Djr<;)L$\J}Tolv5i&%WOlsou*:G36<I'?;?6||3N=lΰi~@#7z{ˇ+}g s?oܞ͞o#υqN=w&_;@5Yё 2RfvRW7%6$Q 9 R%uS[ɝ_u1NAV&^<\o SH޾dA,u1םLM84᷶ #}sZveqڰEߡw0>u< Oϑz0gyJm|;^{οC雽=3O4} ޞjsgonAm߿Mt+#$R,DҢ Ga87憲f5kP`H 茋_?_N26iz HPO7֌L&vN+Q=GLpLMMhǗkSH[՝N~XԽ(%r;o'?=]3|"zf_g7|g큥7z{GyO!yT S#Ñba ;Re?*ULvl9+ZSsivXNě,۾Y!~?Yk|{??^1oKa[ &q,8){z8R"8Cg|hhUmc1&IZ #ksᑂi\ L7Xk84Hۍ+kD"n;Ѕt?Ͽ!'s3Os>q|$} ;Eۧo0Vvf"EK4J>u $( ҰHf`Z`Q d4@(AZQޑ/LcN8CN E1h22EoĂz7;5}DTZ bfU,u^JN^x[Љ!S^ĚPF餧$ ~aiKdЖJCna!c5, *t4M%^#=te,Q"}Y "IF,1䒩0k!{J-,G\oY`webg0duq &l "D:̮Ghq"CDRhab+|Y5pTU F` axZb%S9 ؐγ՗X"{5;H7%Ihq>UM l/ bnEWsTUQ0@0J0 ^rA50Žb)!K1+nlEh5"`Ã0t&c \l4DaU5 )GH1hd;TZPd%bb7Mٺ½i ފ] P(TDE-ܗ!ޝAA L}QVqL'PfKjZR#p>eKƽd@͔,OS;*k^a+_ O b[HIʐ(\Y<̭*_w`X $q#kJ3hC`%%B6DD1qJf[:a9VȹH(J8aMXOJ jN(P; B!L%I.R;$?(EF ` q P0Ym0 .)2G T!obP~!mu1XvVCgϯ|x1+&njg& !R4jpQ A| PA\% 2k _N#%2y# L%1S)K -DLZ/HI( ,ZGowϯ;ɳr3PE:btN x~:/J-F- 6lt =G0o{ǞPDTRdx %3t(!$З}-r䠞1%M%$-ʰ:d u!ٌFLJ`K avS!!hbmJ7u~ɀűڃ*q\hWKIC,QL"gR)@V)C`ғX!H]^ U JN3d1J\0yUjΒ %)M)!  m|I`z "fnfY1`C !H%Ѣ(RB%Ë$IY+4|slOP2 @CT^&C'Ke;frk+!1AQaq 0`@P?bhN& A!Ι>~n&4JƐO2ցEyd.j80MfA7z LxvJ3*(JMa" Gj0ikl䞓F̓ (ؠUyH u&Y3GM)A_х#(ɅDE`ݱޱ'xX r&k>O I"GTwPj,~$rFIAG>to2%D>b( :VªFo`+ J 8V7@@9eZmB : T!<t0H5c&}Z(%Y*!@M.[| 1KV4F #q[@*nP3$ 1֏\a#81:PPdZ)>'.@b7bvtͨ%!gqõ-Q 8Cߡ ICbˬM6+!G*/i"X qs۶(#L0uСvt\UT1Й ,b&PL@a@aK0A6 _^LOr@E<w3ص y ~KNA"^87 ajRx4ѝ]EHd%!#1M;>ng(.(94VA|xE0:ҘJ`i%)\р6gŇhjyoBXA[|RiB"{%` ,W$:Z u6H 0hbլT8BAP@Bv "tNV 4޷A'6oBTD]p @<>vGհm\Yar,* `& ,ʼM"]MfwI(6/CRAXD@V @Jg~5"P[4>ES\N0@34 <7CHh vƺ !) cqEDO"mqj x4\28Y+i<+[?T@MO P܎^D̢4 z)-@!wH C1хhM mƢ]8؄#&^\@"@[q7N\]&2D 8 L!cJ#L\(BF (6|~zz<67$/RRFg-18ǤgKߑ4z \U33Z;]bU@H% cp"X1^wڿe<҈S,0{6ǰ X´%A D`JFPa=+O,s2;fi醢t9@@ =AD dH?>pP r=>> Z%2 ]ā(z-M `Շ2 # n r/@euv!M $&@vOV`J&s8uf5>%Rg] mϦ֯ nNnZ;&36tQxk Ҋꝥds굀A0?4.D܁U +)٠em BAv$Cpkh鼒d v^JAqW&t'$ @DP0 +\IaaOB'-hr ցi0,:輂I-m Z4I)e`Fq߹#Sy؉Ͼ-R)P8{ CHC *`l%fD`F@զP#l;́JA QͿ+AcWgFyFRq@xM]^l]b .:JV%1%BɠA (Gii|F7-*C_TcZ$E [ 0r;Z݂4ځoKWT\ ܭqw F3y4rtl6^mĈU @R7La\  v(Oev 1#&D^VW%!;7YC&O1(`#\)h%1%'&2nv]BZ$kjGM.$ڇ~ x3$#*iK!(I?j)V<ڜf 83d"_h FƝ Gjc[X=iCN`mwXQk òޭ`@=@D`mӞM')(ܯmTBk}& a<@=)0!6ZVBH?<}M Bz ۧ0Bee@GRV@N'PȀ$l&B 61Fi0{ qHpYs sgL=CUE9ϷLZ;ۭ`' ӒB+Dž[$>>8pLz{vi`"}29KS p@AE)mBY)ApDqFAs^$l8<\4Gk JK: r$Rm V(p4k-xPGL2cz<h t"^6xZ8WDO G.(tjP;/5Amxi}kV3-ͨbYw iT0¸; % v?ʐT5`~ABl ;7@ hϱP>(̈0;f 8Y 腘" tX?.Hz4H!QҴz 1:B Ŋ`_@ŧG>3 (rO3SR "}O5π4tT-Ph =C3 m6`{oB@Xy3S@ <вyX_ =ŋ@J!"L3xhENt4 "s$rGc pȣB"wf]a#4unlA*&0b H:Yp p#q-l(/a5`m㦠8@n/qPq+ ߡF52)#o-_ d]hKA@+H*+a@LHEx{ xϡ{, DL@#t8|48ir4oZӲ! !G$z%A z4< pzQO`1rdSZecxgAʼؿM9 В+PTN=Фmi+at{̊گ@Ypݡ@@h **+t0 ȏPNAce*Ag{tmjNܓ % d95.>!/{!5@J1{rRvDPW(s恈ؑ DtoxDcn m"9CEdַ̯E`&\m+nIأjVmffhb"k~Z-H- B%j yPYlU1 Ark~`XHAX] 5SE'!lʺ=(uw ;+r; ';'aF0Ehu@o/(vFB ї $1&SDȚ~d|DLz@R{'mNÖ6A\9KW2h؁?8V-B,$lID @Dʘ1NePƯD 8$$B~j - CP+@nA, Iw`H ҈ UT[-b0KLv&"MGkiA%x88\g9 kEC3_IR@~H, R7AJ^smQ48l4Έ@o14*i \bJ* mıD,cV"5Q(4ރō <}DZ,P@a4A>o'Pdk\= 2Pɿgiz$ 8Q(}8RX F|uLj:shZx oMϚ${DQh|>&&t^D^Fs:y5Xz `\3_Vʁr("~戟T ?'|4Nt$po76ҷov?DP,1 P,1 3~D_ dFT(5D!|m9Ce$Vd3L `󋮲1zYFڐ( R%DS!H ۸KE 54Q(Z:1&j"$BX#lDFGh&4qN`.Ury0IBGvf`1jйz&\T(Q&t#Gnғ&| uz0+=E!E)&Jgqj'uŇM!80p ̉Z""rVgێ F ":/]4my6E0(RѯpޥF u8sP'J7~I"1,l!AS@4{'4I,\yBj *v*텮A #=SPn͂,,ƴsFHDeS?aH84cPeblNJe#%@2RcaWS1j2Bf[P! %% >Ц Ž20CȚJ#}Y eJOV,4*!!! l1qXgTh[cb &\鄥ŭS˒h*@J: lPtP2EB'}0=]"N S pP!a R`MrdS* ,!\h}ܑD:YwJ:"1^a|Q$NA\:Ɨl*0Z?̓L զ/LN{[iA BhȑB7[w*U1dtaҼg붭bE/lj2! Bs mRQe^ FƇVavٮI\< Jk^4ú4`jQzcRqr8f6ha<8`R|QDcϔ3QRCA߆{`&[tJ&:Z*ٜy3;V3|2\kM,{ R19QbB89YjC<ӄbuF",y G2[A $0T14/^ w􉤈nm;Qxw)I: !fBDD~ = "" FlZ19c$K4:p@?r~^Ѓ0q1X g5Gib VY:ֺffiHU`%BS"m !D9u ͱПugdo'ޮH  اV,9 eP9m-椬p  -K1 P(PLj GC@68baj s<ժ}&ae~D --`( a(p dw g ib50HifiBAY;6$#jq"bm-1jfhnDhTiq-L kS4& QE7 eS5p1AϠE3U3vվt Sc ƇuUl/f:#3MAGS!@AႅBARMA(2Bn*^,J0EYk E -@lϼWAFe=4 B9AA`5=4u&&T G9 DOAщerJa`BՍ&<\8S^w2dv6YאW& #+Cta &$0E'V5 (ge:7aSAAj6 `C@0j 2˅[TB@L;P+9f"..M (@`FXZt3Vj|1ߔND0hìpATz#h36}*ЀeEt^G "\' f@1b-@`Qa-N2- 3 EX94G9lJ@GZɖGO)WɄAz_ɸQ"+it6! htՃPц 8EoPHEB%%m? endstream endobj 6 0 obj <> stream xVMo0 W\ DJV`lvvE)[vvʢDYF=WJ&8:ǧoQW:P%!.WGn/*]U",'`]{ ҋoq<*[|Pϴ~7Ի RL|ԇ@N3` 䣾˷'v?a>7T9-`E^$E v6 3e1 h^yaMwb 4h} ChcЭ0IHTk{Mb A9&U2wid0iܧ;KFeYCC|͡5&E&H/ (e}TiT7.n--ވƞf|nL\|c)KQe'1fZ"4k˚1B og-OVĉIJ@(+RXsmRASIz  p$ }!ҘVfKL"kI{aNb_HOdU:vT n+çS( p2eT$9J"a,{ CW `]}?mPX>&IϚ$FXqpGlee9R|NǢ&a, _"=> stream xWɎ8 +tP`L9L99dAArU$hĭH|zRd{UH8TZދ7/c'ÂxЈF_7~>dentvx!-ɅWxSG azu={wz>wvc:hE=GԽɈz4rDCq"o"e!4x *ojB8gΝu#e`E $aVT3LRϻafί3A!&ϟ2A V7c6;:4zݦwHõ BnQ;=ci 80. NeDMOʑ!|ws,q&0028\!j٥JT(+x 2JJS{.*UƠh*g̱ J6[eF'D-4/}r 4}c6KHTp[0}*݁EW9љǾiFQ;/=+\PK͌˾3Y]uN!PZs ?'Wp7%ƾBjUˀE|OkYR{(WZ6ް, uׯ|d5#.Y56:<(RnE[lctP[jݷ!u`1xJҹW4m)>kqY>XEK a&L'.v=䎅ڦB86S NwQZmTߟהt5JR?ݳoOIdm1TW7([Ѝ]\Jx endstream endobj 10 0 obj 1087 endobj 12 0 obj <> stream xVMo0 W\DJ90촭+fC{II]h)=Q֍QգҪ4mGgy|>__QgyC+2+c\n*݄U;pVqZLE']% S؎6>;ǣ LV7w{A}*k,A}X m_][y-%If"ۿ$E4-d+ȿ( Ůr#l]]oP/3mziLc_3mNFTPP5}| MidʪވT E2#wJp'Gm, Dq +s)O:NV1 RC-HCa:% T .P3]Uv0Pe)ZjDy-*/ǕR,+ iXsBufoB7e p=Ä`&RȘBVHb> [L.LM/bЫ&ϊlWt :őȫ(v¨c'; `U_H7eGzn-"_Œ4xeMB\?BHC?ɶE ɦy0u )XHw@=:Ku?Pkw2E$q95Y'8i'@gKFE8$g٢GP,kF.>c@\wkkfGL0?R-q>Y'zrQ#'[ 9 96 L[_l἖ endstream endobj 13 0 obj 918 endobj 15 0 obj <> stream xWɎ7Wl@m-Za99q ÓSf`0E^ZHޙWct8?̯o_3y;quO7S4 Oa%PEh~CH?unanjbK|S/G]d}1tO @6Kq=Ș9mn[ˎ?wA,T 梞$CHۛ)37!nsKܥ-`=?6Z7ɍ6Laq<јBeaΟ{Y&fH D$x6aD㌠xsLdӷQ2w N˞ݻxptq1JbދQ (nQ B6~ hQ~P,NYv/Ck4DIP@z4#A vϤ`Dߺ>^$uղqe/ډSKłVd&)gxJsUD{-G9\<$d̏~"tjQxfV\vv)^lDk'4?J:;Q<&r:7nuU>ksG[jn.yDT܅ᓽ@Ŷ ?lp9e%mgTn[piT[:bSA{Rif٣S:1?rqK*yHBv8 p*,ptdGERPv Bʧ\EA:&bTk^B엛PhyBtV!MoR2z+%sU#3V;ph)T.chAK7/ܑ̩UFD0YrzPb0P)nyAʍ?# 1uԵ׎sI_tiHu.\t!< ?~7DF^%vyjQҊ;+FEX[ endstream endobj 16 0 obj 1004 endobj 18 0 obj <> stream xWM6W@ g!0HU4@ȡ6-K~gDےHZ)rf#EҪm[gzF]ϗ*"#}bsſ7nB*oChLvSP `xZYƆJVQATU,郗'KDNZY3;GRŪ?i{5r% :L\d]&)-i69 6ggaYEf,Ӥ: VVG[Mn:"E֭ڗ)kd(#BLJ,jI\m"4w=&>=,.q늀^B [Ǹ|^%h>q\2}^wk]d8Ō L.H&ԅ MC> d+@I_xDWΉ#if 9]O播!a S{(ʼn xg0dfDqx97NRvO%c KuAp&kDD$)*py~#MI+!_StumA-Jn_[|5O]if6EG`pJ+{ڿu\ۺ?C'e(.D:L!#~1iU4xAr1K' L69L!&E)B3]Cׂ]x[>_k/_H}t#2F0ȷgHt jwF0p_"XX8>;Rf5GX-ҿV5Կ-> stream xXK70cI%yrdSo}ߏTUJfM0H~|n5Eia9.>޿QF_t)m]]y?v9{9; nZJB9yw9:ȫq} v(8fɠI̧"YXTɡ'E[K4Ia$xL)Xn{Ys9-z>Wuu^է#ڽ:J{K[l|lyS2m|5tIf>M,|V>` *HI^$&(p5ꐴіqCmgu[{e fy6\z2 ` LN &Gk`LHbr;PܡUC9I? 4 Re)KjabI1y݉V[9]эHl-FcX;G/g(d] ?ʬ)3!FؤF4.zS n$J3ix,EfcQ|H:p}bb\6 x}T&ݿ}%'2cnє:<;b(:DrV("-vv 4NMb7&TM˚5 =NcAQ/h^3i2wi͜r&f_0y:uå_ s=(> stream xVKo0 W\ DQV`nvvE(qPTуHʶvz2l,M1 ?3rVcEB2{`qÿe̻wYe@@Cn j_Tdwu$-||`)d^HMS A3(!%L oG4ͺclC@tBsQ2Ia5uC8H3GbvU-l"g|~롳л~t ̓vrs{2:hP5Иu-Җ@C $\$8C~;g6p4t܊~,x y[:ێEm BcRB GU.N/۠a"X@)E huc7yp{kwB˻{ gήzgWf nz޸p9 ǚVn ^Iٿ jU>_).I#%SneףlQ*@`ԲA< EPZb3u頛hr 0VRq ^ BYs#PS|k> stream xywƖĵQَܴ79sb$3&Y%oI=5A+PE Q ۷SJ>}?S>|oo޼`0>_|gǏYq@Sm|c1TZFD 8??H"h>믿'qħj۷oT\<۷oqIѕ2EyF&c1Tׯ_l`)~=R.%7|NOOٔ2 *2xB{{o2EO&ie1Ƙt3K MhPME-;P#qԾdpǟ15#eL'''<2ǿxF01cL@hDLZEJ)eC}͘m1ޅx1x;)/Bkƀ1c̒Rz|իW) (PL`{wwN`{{xG??>nnn{1(l+|Ǥ.Zˡ`q믿J#W1cL@ O>Ap`>| @PJacjS}Yo߾|oReQ,̒иd6߿HZ{{{<TL2cA(ĘtVX9??"|GҢ ~&NUAa`eK)Єj21cLH@}2 ;E2QH2܉񠾸t:xJ5P)_TJ84c12UsvvvR6&㦔'>,syyo"ƎNOO'E'&V=zHC})|8xe\eoO/^]3Tm:==Ց!{6r%oR-Oʃ` =F<euc1 g@CAzQ)zZ__H[#O[ CFRfڐru]SxSFbX<U-c &HNpj^*.q'm8EA9FSOS!cjF䙢UљG₀BW[I:L!1S;T& *tm;NTG.N!)|wB8n>bPVA䜜x^j"lEyU˰1mn>rlm@,EJ$gϞ5%f(ZfOb Ô hH/bV/ѷC]'1'iNNy2ceZjR,,ux|).G EINV58GlCq[k()dSt8/쳸\ ݥd⟺Tmc1^ccF۵ҝ/~@S@)4M{}6 gv҉xl<6w:/tWĞ hm{cYvrQ*"Vf|bؼ()t8`0`:cG8M9>~#H~ȸhw^|qM2L PTrpBs1++5Nm߅/2ƘjPZДV;)2\QN^w9<> PPနF|$;.@Hb .eRݿիWp@&/pRXY11wg$65RʳR2\ˁXސBR'%RScc4;;; QQ1ք+zcZ[q1t)d;tBKw/_ =1Fݚo Ci:x7((Jjp"B2K<&\1W=9?qpR!`c:c&VtԩbL-h>b;'BbǦgKWf'QȎ P.6rQkqg*n:, tU = ^O pn [PcRwe!\ reVbwRf5GLNnј 䢸Jo R3)2C;+8)c8 ѭ)K5SUs " x`๴. U%Q,v\ZE_bFgebih4fZt(8@Er#Q~2IimfXgL SETZF@ZZfq6<;|9== <54q]L.˝Ӓ|Qwؙr E)Pha2>PQ2i3HZ\xI2 L #ݻwؗ13Xa kEO5g UbEb"PQlGcd>+`@p~ O=֖(;eTPLQJ>k\J-GȻ]c͇GIzSh^1wC 16e'U baj(˚H\^^}݇`Yp`@$ȘT죈/O6ex]ţfFR ѹ^8+9<<}ƿ(`RHi@)\5'a;=9S6 k'S WC's~1zzbw3Pȕ'2WO|g-[rǿoER;q5$흝^vd\$Esi)S6\2x/UXu4 eM*7Grs.;J,i-g(ê2os2FSšcYQܚb l#XD:/TN`1@eŎ_F0 rJ_Fv׿8_kJ}']_>x5*xnp8d|tݼ˘X߉|s|^%b&8qjH>SQ0+.`3$dvʸV"7C@zX ףg+gv>}8.咦u)';1B.dпX>5)K#j l^ʅS zߦbwEx<Ցʰ7Yf0X2e5-,+XP)l(S.? W+t=IΏ ]]wZAW܁w޽^KhZ71;?wb^˧p(Jx ,G4c*rss뼳- %nd[%A\1ɸ$S= tmLՓ….18ܫ'KswC=/ȝJvV~Hf TѧR(1 |>o&vt)Vy=T\N4108:c 42$f\-N8ƣTaZKkRrEQ})+}J9wNw23< 1M@!M'vZ5"Vѿ(oj楣0G HQ]ˎ$Y/8Kkg.'NcC$$1X4*3ߩ֋? Nu_N[YWǘҙʽY ]T&ZI: 3gY|u)!%ֿ/<.9;;ӫ1Vɓ'se(27;}QE/c2XFBBxTyL]lmmtt%J1ߩ.nw2wa._cˡd!S=,߿sJ1ߩ^nw221`r~SlZţ\MŨGp>j2TוLw2 31Kbr*Q3&;MTLTJh=Q4jdY|u)!}t_\\p&OgggSJeaԬ3gY|uYsCvHj 89w[), ahۭDaJX MJ:ſx4y!l^00QkE|>>fy@PzZY aV U.}ÆJ ~h5w2M`rP*@U؟;&@9IME&7LJ4QzT ;idkkkcc޽RLJb( U%m2jb Z | AQ*wUwbW&j\Ƒ9te@N [aJO|cbFG0R@"6E M3wb"SaZjZ=;&0o9c8S铎w`cŞMb:Itdžu۷oq򒬝d5Qnoo߻wQx_4y!GIH\:f f0"*"w(C:rJ;Dg7cw2M`r}N`Iy5ŧ)j0vЖ >qMC0JRRSb"]wW(̞KYG1 ,4!xF:Sk@pYv4y!>)'&oJaR-GF1wdvrVZtSiSts^bCZkF]D/Ns : ;&pr@Ew z Gqʗ/_&/jo`vs;4k&逿STD(k~- N@yVӪkQ;&0o9| 5cnv2H2==W-w0f1i#99vl:I oP%*X86.y`B-`oKdN)IȌQ\['-ffˆ1wb@Ui^:I4GI0h4JyM%|ׯ_ϐ=qt GmR/L6IVJn?RX6;O/^H 62M;uhi&Tki $3.{GnWN /=[8& +a>Q犛;2#ww XxخtIصDA%~&406:)빰ê uz ~j[4\5j'^4vwweeY oc*7]w2M`F9988}k S,j O3wɤ; TvJSENw2M`F9wGq-+ow&X;V;ϟ?onnCޔWAgʄ'x i7ۚxrC;^|鸾]1 cd{~կq%Rj'fiq'k*NƧXs i\#nƆҜZW4iƶDZ+tqfre1faL8FӘŅMőq%w^إ4ƶfh)&P`a@LjRAL,c -n<nLV51!v U՞ii+@]^\\fP2VSb艷.OL[mWNۺl}O,'z*_) \}7Git8g}8= ] }3dXR|6\ݥĪ|9ԅIw* 3?<)qxԌ{'蟨p@~wΜBO.Щdc& \QS}H2#_.]eZ98׌:BȆ,sp00ԈI-wBǶd.L)=n6u:T-m'!<(P`0>IAc=8JpV*Fv4}Pcʸ$ɵ{4}L2Z5[!]AFISeS;ZfIwRB8޼w!SR rBw*SpLoTqVb)UEΚOԑ5yAdGZV[WXMn*\;g) hjNd1ɴ -$F۰kPtP2J\*whY*d|CpP$"}ŃX"})_ᡮG1.+G[-ˡR ~Ĕz)+ԺrOj:!w0[(fJ#)ypERȑhmwҘ5mE#?jSw.T\ Ϯ֖;ǁ?쏋n*c3?yK9+ˡT( TyqLKczО13v2mw܍5^ѤQ@уvmbI1A}ec ħ! CF ?*>_ <~lەkjBNA _[)/QZ'+ʒr)SVP3TC(EP>xYR>8GRjwwD鵲X5 Qϛa֨u4k'@Ig]AZXr\v'Ef ŠL4a:7 u9x: $nnnCg@FpgguJ HyYxqv `\pZbo5O<+i]HԈI wJYa!d.n]1v 1/_rMAG%EtyyI,|?0NۄFR0|!ǒtb[Ed )R:RTa4E362x+ L;pk'+<`{TKn'o*[\ ܢ3K3Ru! ÌR_XgAqENý=$؍&&2I @aǏeyq)(䔋*lSH2S"rപS X;<'B7f^ל8|".wN)Ld/a P0X 677OQZ6Cf=8A8?(pF|Vy7S6p(1٥veyń|>V՘@DzioںԈi\Wp"PB;N7R>ÔRrә()` 0Qqf-IW:qB Z>.eŃ(3%/@k& . VrMal]_̅!wQBww ׆vul Kr[! YFT~ :+=Yp#+xa 1eg`t>ku!v-WR5/aC<`gniiZJ]kwCc͠ZRrnCR`7_Ecm}HY48?QZk,U0.ؐ%d3CoѺp%zϘ2g'µn8ԅI w**>|JRմA<RZ]Emܟx7ժs$~~j@HU}u|Y:뉠Ϳ>o"ځ3S )09нUK~PuyfspX\e⯉=Y&qzzG8RK7F Dz[ؠ ¥6L옐_/^ªFY?n}yq^f; oZ;sE˹TMʭN}gead \ 3p'5 7?si hB>o'8/Ļw뜦g- i6DkNEIC\܄ca ejkT2t=wiՕ1% |$Tziߗ}R Ǐ=*$!2-e}_6 ){޼yCFu>j'z1cx p-ߗ=ظCQwC}gAd%w;lQ|P5&sZkPɿ/8s)hϪ{^ j V,Ӿ/-ϟ?O1_|?˕oY-ND2Ǻ~_w5;iB.|zx PPQ7l}ymf&yvbn3)"#)CAEǔ HU>541$֚sN4I&X2;R(v6|P^KЖxR/ ؙ:<2Sk}}ޕ=/sVrGUHa EIy>o -J?hvRxK6&3Rq-݋Hʪyʎ.L_1hr˃~ʽwi|=gWq6n;շ>*7ƞlNWy8ZWol5wDԦt8L}̭-Fp05CN+'9_M}>|H F$N 6=;foFJ, Y|"N|̵3 h5#NvJO$LIYхvݥԗ%z, GGGqd$U&k+8wS2q?+[VC4s}y+o<-Uf9)ujCCuQ4o JOI¦QS ҅,]x)[EE_UWs^fl*[ܺ3KQHm&4jkup+c7 U烼e;YLjd~.-)QdEzoo/fFy>ek3ӊPӍ>N_e\42@t[%aif?N+ ~3j j -HMUkK9e+~Dfλi,̅xR뒮ONfN|RQ`*2Bshvj}U=⃌MΊUoKJ)NEiK9,,iw<2 3Fdyxxf}w2iN3|@!/#ƗPʵS]ڢﴲn/|ΠgE}ooq} ΁hg|v%PI,<\h476|XN7nV;qbu2dRL*ڿmNN+ #쪀~(IgիBWʞbWvˡܤS2)L0tЩpd2")uh*~wf̲8 0'/-kk mNwZMڢp=8,*61C CVS/_Lsb1hLgn~ͽ=BgO;Ti>N("N;x1eﴪh>}P> zH-jL]P!P uؼwZcngo ]|VB:8#dG.FQWّr M), ?"~/~޳cN"_hXǪUtTsԁr+}V Ba)>?ة'$RbȋB?x0*cٙ|lcϔ4b` ھJ,I9Tkru+S4W,Q:&*?^,@if'J?v{;)# ]- J Dq&\.UƁȔw4YK1''' pFI8/5*wT -1 jO;f ] GQlzۤؼwRt U<5ߤCA\9a4a,vxxװ]ܖRXXrTqN _Q\֍cWCf\$iu9ų ̩]W3Zn l.f;T>FVXNG@ {a~[[[z%\)V5AOozuS"_2)8)CjgS-Cu4 t)Rh4qKXAIq)HÇZ ~M;|QUV/jdΰ*RfXMYt 1#eĵ5HE gZrUm);Ug;}Wx<]7bhty.ּ<\ ? XʽMܣN)kח͔8TƸٷ=P胤Vo2aȼ4,RONN666ܤ~Nu1mH򎏏4=pWj8R=^=ZSek@(B3 vI)Y5*zfYqio+=_MI3A":"e7ߔ;(S׀m=@W8ߩO2ͫDVGuwqq1o !{60[i0XFEիW3qnmpi=(lLҋs.RVٯ͒6.y4m5$d"C kǦ,t_2xe;3¤WofA-UF6YF ZNuqGnn =7)=7 +=i.\`rJߛ:'®=e Eq .2u]Y>6%j'RX7-fW +^rtqw=ltqmurdMݺqd*Is%>ۓV#3hSXZ ~}}5 ljN=>ZumF3 ԙeؔE4?2-K˷|5[fє 8f;)kPt57^WvH o2sص8&D{hSlGc)_>rcoY cS"wB(#uS~c2zZ$hNժ)NuG[WR :M+4\=kE@% ^Q\5RIYh}}=VTFLeH ?[v."('S )mw;|[[[P,u/,TG%$~Y 9meLtTIL‰=ҁFL'S1j^9ӧʯ;@;6^PJqBh4ʘTILe c/&6;ZXH+\aJZu:U3ə:)SojNPsRx:mVڻiNz4|a۸cʓ8˒ y%DMgh"T_ LJ: q6 s캮]NLa-_q٬k<Źi4'l32YKt3/U,K\d*t}=Z5Nx9o&`a+BeŔȥSelLetT Fl|+6P(4TUj;Mfghthz32`JeGmdNƾ: a'cc_\MIw41Mt;8w<1Mt;;u&rh Si.3ߩW4C%d}uLp94NNƾ: a'cc_\MIw41Mt;8w<1Mt;;u&rh Si.3ߩW4C%d}uLp94NNƾ: a'cc_\MIw41Mt;8w<1Mt;;u&rh Si.3ߩW4C%d}uLp94NNƾ: a'cc_\MIw41Mt;8w<1Mt;;u&rh Si.3ߩW4C%d}uLp94NNƾ: avÈ7999Iy}uLp94]N#gAsF  ߩW4C=" w}YHjJwH S籯i.ߩϴQ ߩW4C%. t/ꟽ=J)HTDw01Mt; $t 8`677www>:}uLp94]N*ݻw+~ySi.3ߩuHWF#劧E VPCOn2c'1:8Eᴹy!6;u@cOZ4`'%FJNwE;.a&pvvCʧuo3Qq)창-Mn_6&\O{A*ݘ@O޽{eSuKQw2N׵*Qc:( _c0;::ȗkB̼7=|BO(',1biLX"1E.EfjWS tzc 6xEBo|Zg̥_2E #g?\SjV-7jWuPͮi2;;;H!Zt_zupp`4H}8Bʇ6< 3O4#&v-A /qR\JizPn2Tt~֙qf1ojhT( PzB:G&NqW5pgJ&Ƨ7\aO 8E%ɸѶ`@se2b՗i,u_1P.Uu ?~GGG܈"ek?YTh,߹eQ}5 I*Ҩڬ\>Uϵ}3L{A%*aBCohF=Ƌaxz}m;jp'߼yYi*dE RAu=(TPADAK?}u_W2|;l7=;aBWB;VP ~w"bV#Ӽگ@;Ł]wS= qyofԚT5M935 ڴkk#^bkS12D+-LHY:0&e5] p_5獙@u1y1Skk]c]!4a3S1Sl7NBDiH>EKВv(u_1 2?}Twr^5ؒ Hx1rl MpKh;e->Mɱ&;DkrQQh(_Y9nՈL\#ćhyzN~Ms*7Vv.Ӊ XG᧌f,Ƶ;6 ;ڙG;~t4iNl áC݆F)g뽤eFܿƞWU- l'2psʫlcf0i%+b\^^s}fw?>>N'PRѩ{4f'QrH8䁏P&zҨ =KMQX\Y91aE 1^)Rt>) dLeL;&x{@MٙR2qU*ޘi{-fhv܉}fETg:s%kBTQVl<[>Tf;e/|gnRq-Ñ2|dA&ډO$s7`ICϴ(2ttt+Kcecb)8 ML#ʘeAdaÿ;aMZ>f]evc:NBPPS7;uv*Sgm UO{ꉮpXg:[;q }L-+pȈh`y}J0,E#gQ#=曚^9s~iJ+dr>]ʖeQ= 7ՠbUV_S^osZKNTG+R\DFyWm~zziwxs7 _,$gRE9K2gB j]Ǫ aoR?#N#n)lY#U1sq JfjLPdBƣ4z=h!9Qg*UJH£., U|JSS-Qx㳯_=L2i* 1`G@65Z@[ҟ*jcV?q+̞KyIy١߈zximƦ!'"(Fu Q|Ә -%h4>88P֓ R޽ *^Θe%4a@)DxLCϝx%w*xcnETSA!>[(.xM|4\Mpy:ؠ4:P%x4쪽dcV> >xfSDp nی ߔAQ|'fT_=YSa `% 'cA>qQ\%۝_{ܘYX M߱@c;Z,ۘ(|+p1ƴcLcˑ;k0-Ι rqq\qcY*vkL`q1/w endstream endobj 27 0 obj 20158 endobj 29 0 obj <> stream xWM8WR+Rg@K{Xqbw!f\TtѸݶ~w_g=(5o?_:ۿ "~ƖF?v/:>QNV2R *Qy|poA;g^'6 ؛Nj3HџԀ-}x^z {> Z>PM=)P%q.P3Lʁ)1+M@;<', 2aU1 ׁYŁ\=o?Y/;h;?E pqВR2n0Dag"8b1AIЇFַ[!0t ,#)H]`7BQn uAA+<B5v8(t׹8 f3C+aV:c{14>x2xi#Wf89'DqB'\t]*+Jg׊C$ҮKAuO%D[ nto3KԈe[m pUoR[ei1 #CbB2xǵpH#ilvB5S*utT@ W1z i:mrܔt+_K> u 5 &BN)ODy=H^7M8&UQm.m.K<UAU\I6vK!cT4Rp>v#TudS[@lS:ROousr*R.|o+scUM¼貘_^$tO>TnV\g/ܶtTZGmaW]P >E4[GALSTV>+E1.>e+6jPVރLV>O{H-g |}mӻ] 9S ϙ Qpy5F.dV[wV@Gx+ tVĈ8\ޱWݶWQ>4'd/EH Bsio?|2m2WwtRw endstream endobj 30 0 obj 1038 endobj 32 0 obj <> stream xWK0W`*Ҷ"8,T8 B,.}fϴn<ڬf&B^rzZCϟś'[I:^W.ozN~kup'- jI c!`w^[/x#2hyǫuwB`G@ (#?tO?q]ܵ9?tV(9V:Ak,HbX0j;5i@"!]9g{쬛/+=;~OZ fHF7=-?9>'>=>Ԓo8A^vfAe=rKBOBZ@ j6g=>8ۍBt(!J('}ڧ-Z厶I7mܛ$]Iso7,OZCFlqb}a IVTzas9:) l1- A^gٺ2&&fo3*Wn|s {$O&žH|=s˩s6#VT]wBC0-j10.,W`i \p#v%r"-> v3JleW߈%d3UX|U *ްְPޮXqiFZj !_PEsC d,w ZO8NUa/}2BjnOdnK>s;aRZrAR{lxh:NIpk .$Zȏ}Wѡp9 z\nn3]~YD˶uZhO6j!Kd@%']frIU'ih+򒑀!UcJٿSʸʹjUԑ4*19͹e5"~v%=٠dǐY7XwMPjĭFUŕ0Dž[PKZ/__l[ݞC/^:z4Nq©1iĵqI 鳄&G.%5ϷT<%T%\`ta#&1 иR endstream endobj 33 0 obj 1061 endobj 35 0 obj <> stream xRMO0 W,q4>$J'`Lhm}dz.gVRA@Ad,<_S(>^PPF[x7b}!2jiJ3#`%=n^1ZAz1ƒ@ V[h O%kF#X$bq[v%Nʢ 2C ̴CNҵ52W^?gbVЙ>s kSuﰸ5@/ I7ʤ*4ʦ֧n%nX\>S3IW=Eac Zd-vb> stream xow?`6!{ssNV$`!o,_34ch\WGRiT*%H$o@߾};NMwxxfL$D"@\hfūWHĨ_{{{KD"H$>_h<4/DmݻwwՆ%D"hʹ/ 1>~(ڛeD"H$fs^DCQ[tFV]D"H$ӧO\믾qƲ.H/T %D"(>~vМz!"ᅨVD"HvzYg[:4MD"H$ma,Jb/Xj&FtXK$D" @rD"H$Ʌ P"H$kB\(H$ArH.H$ $J$Dbm\h %D"6H.4ɅD"XŅ6Jlǃ[߄<3vwwy^GxۂdES"CJ )U,RR\vPQ j_.~[nQr_]~]\tITTgkD"H$yB#bx{W2HNO PիW$lׯ_HdV@9LVuƒύ7믿\_nD"H$hx@c؈2_|"J c *7}%SH(*d܁0(gK(PlH)"Rhzp!O;ܟ BD"H, ֽ8MP R=O lĢ7Vի+RyGTn6@/^ķ+Pޡ/5пŕ+W/sɹׯ_#>BD"H,sq%|(.KF3o!=]TRtg]O[n)۷Wi677_]Ewѿ$лTH E"~-F&C +PAEBO~:c}j&D"X`/\BMvww} Q1 qQHt QEI +;wHޖ^a#+rC+9hRᅮ`cc^>c@aĉD"H$f`..ĖӥKQW)yPn lLNQ6үcAGg.qYTv:DU|-^UBH$D1Pd%c\ֽ4{ieooO 0vboZYb?s¯-7}ŋ?Uͯ7nl QquBD"H /Tǵ` {}z{U=rnx2y&իWc8ɻT gޏP[)JeèLiɅD"XŅl, Q4>˄i˗r*~U&Ќ}X;*a ۫~R8^j (Db?()ҰV*ʐ\(H${d޽zy|]?R%:gS=Kce>4#Zfec8H~7hQۧTBD"H B>(Nو⽧tvJB wwE e,"> Bz. 71fY]ML{D"H$ sqxpݻ"'/)؋y,"f$GeLi1*Za#1G@MnT퓩os!\(H$5{d&!8h $`;| {R , T0%ǑGC ׸ee;na5s>IZ"*UDyCQ)P"H$KJKЙ srԤ9\(H$Uw*k<:x֭HQ59BD"H,'i1ܙ8ENDrD"H$~ L"Ff =ŔՉɅD"X.uMӛSG"cˮߪ#P"H$K֖CǓhўk׮mnnG}W^ݻw4 %D"\_ho≰W Gz.yH.H$1QK OKʄf\_Pr\(H$C3r ΐ\_P_ψnDU>а賱 b;/9O1F|)jn"Kፎ ;ͧ3ԓɅD"0…Dz~ Rñ4SqQ1H=a2J:#6YS\fB/;$ǵk׶L$eϛǶr^"ɅD"0…JШĐa%DJ/DLӁ8$= @1^_677cy6&<O|L*+Ղm[ָ~HZ$=Eigl^1ZrD"H$eq!GÔMU Yy:C}٨{/ KDt*e.ǑkիWJ\uDՐKW-޽L}>aI.H$Q, 0xC<V@ELDLKsƝXgϞq!&Y*& * RVvbzQ̖Vਾ*RD̋"b{W,j!m`arD"H$e+Wp*Ν;ׯ_*srcT+zPݻ ~҅^wm2QW^E7ntQFzn#mllٸ_}>?p-5K J$?it߸N.H$,.Xt&kK阌9謑Kq]=(e}r/ŋmI TLUM/&'9ek[S_%E^G>\-PMUL.H$=Q#*gD tк8Mt[DJ*vIoi]s>z av DDX6shF7|u@(jzӧ'Zc}:Z5P"H$ϑ h\ >@-4qQsЄ~-QhW%%3ҙ<"$z߾}E,T?"]*3 SJ!Soٷ3xM.H$,.D{QVt>6GL3~E]`/({{zx $,"9XStPO֗/Vs )RIn޼Y$}-P"H$KRRވ*$m^|dd˶WgK5Q^\HFDϲW*M*zgssSpn[l$G*9zhgghD>؝urD"H$eJ=jg rEaD{*gk6`o7~̺*79GV:8ɔÇjh%Vq>\rD"H$eq7oޠ')g!jzSt whwz~q1 Vv\¥Ql/^sC\(H$c)\id5v@>bEE"ӲޅSk;c)l]^l %؁g#矹u7:C~$J$DbX;PэAN4V/>W7;2P!ME=&? -/_,AZ6kr{[ $J$DbXAрW![ZRy7 BqG.ѱ3u)2UI, n]9341k{ٿ\(H$%bzDrD"H$BKDrD"H$BKDrD"H$BKDrD"H$BKDrD"H$BKDrD"H$BKDrD"H$BKDrD"H$BA:F ^+ɰwLvn1O0v0ZFǏ.FF>lʖG\)w±H@$J$Db6…YAK K_d.iHICṣMELF޼yK-db:]LEĐU.\XZSb" +GCr.4$J$Db6 h9\HV)b<| 9`(ؑH.~w)ȇѫK͡z˗c1nll939P"H$xdP%c!] -x'avwwY*eŀe1 A׮]+TwnzwvvvnP>.H3+WxodɅD" d?L'.`J#j OpzMB p_ޜU[pccC7I|(^( P"H$.i1+5u'ϕLӧNLxG&Cw{{GL-7XP7(ؒzV %S GH$ĹaYz!!ׯ_ߛ7orիWZs+WѣGo׿%q]ݼ}6B֭[乹I2=HyaW^kjHWd*T#P"H$,.)KJKN@ tPptvT: &&pI&:"}-ɅD"p!(J 7oޤQұ?R:v!)1F;֫gK=m}n߾ͅk[k?FGK ]Գp!h'J$DbX "HҘ<@cvwwMZFaAo "3zT nF)9娎P^Z: ҰU(EDpɅD"X, 3Dr"aQmu69B<'F5NȆDB#i"!q X6۷1|t(>OQ\pyRl"+ND%1NKN'D"X1L ?4hGl]OHq@:27jɅD"X"GdNc]|J&fH.H$ұ.wg{ $J$DbX^١\H"T %D"X ԕgQBD"H, ա^(P"H$K²\(8H.H$ұDil %D"t,ѿg{FrD"H$Eq!`O?~$^jb6W`p҅uɅD"X,ŅZr>Him.'ѡBD"H, BqvstTbB6\(H$a!\yYk׮^ %߽{7 %D"X;WΛɸFV-Et fih/rBD"H3…J H,.fρH\(H$b!\C57q, կzR$J$DbXLk..+y&[\$J$Db!XY|\(H$"P[H.H$b\-$J$DbH. %D"X$j ɅD"X, BD"H,ɅBrD"H$Bma\ÇsW_nmfwlB#j ݅?r;MfWFt NV=0=…beX?j;Vs!O&Y}/$-C ګjta{{{K,l-j 5Ȳs<.4~7]01W^zΟz).+o_vJUm]yt.l~V+nUZigg]44 ߿ϵ8~B$u>\I__ЛiՏ*."4p91j-]'j)\Ht͛}{TUa1J΅\7o蚥JJC%a+`Pj ]AozׅJ̄ךjOM…=z;eY]q0)t.T&+gϞ&7!󪂾zI{ყs)9~+j(+$җX@[9d|O:x){dzo,7FZ$~ \ȹY,Y}>ڿ!:ÅQӾe몀@/[5U4§US!nR4JH.t@~j%rm5d2Pe??/ zts?Omeg>o_x;aZ6y39~#a5ZAPZɅN6^_yBxq?ج^H< ~B%}Kߺuk8666tʶJC]^꿉Qm7n:GގA_@=ﬦRE Yh inh\H~$.R A&0UVv\Wɨ[䑙URڢ'sSU]-Ja]|nz^ ɅE}cYhh[ BrDrDiϷ2w, Y9~K;~RH.H.(Ve9+oi?7ԯV ɅVɅ>ܱ,44g-J!j"P4[;PZ)$ZM$J|+sDzМ㷴ӟW+BBxoeXrvsCj\h5\(QBCsִK<5VhV=Dd#sݰNnvSh{tT>Z p "Fa q+>^F=^yr3]$ ?fЧVsCj:zUhׯ\b&eRJS@PjW#dqյi Sϋ `ɠxwܡxFrDI.hhΚ"4K RnZ撐H.<# T ҈IҟW+ֹ.?^*,Z]1g "HK.%rYnzi>L^e{q{{[lmkk &8ޒ\(Q 5_/^(z֞9 s2Ctx̄Ch?7ԯV s!F.Ƨ677=bl3ׯEi6662:xJc2# ދΊz[xPMvϓ % 1f_[KH(sȳgφgwwkv`8M@+~Rh qMָ{uaC_vtXl8;mLPx0 ]xD/M.Bkc/V1752MSXHFliw&sh?7ԯV s!VX}X;O׿J7n޼ W\Vw.UƍL=~XwPI)&Jf[{GBkiBD-ydA'~zkɬ':B^vMa3Z B\(ZFP!C !]AgK]\3JB>JGb4PJeP 5RL}b 1T͛8rYG} 3!ސN4 U1/̻uۃ 9Bk?7ԯV s!v6)M6nP7&Ίk׮$ R7Lr3ޱ ]Pi%ʹ졊& ![OE V 5Bkyǯ $#qX*nnn"NY|q:2a{~BJ{R@ {%iasCj:P߆n 0"CA|Je#dZlgRS/ϊj`o=@B@6KCtZfCnlnmN, Bk\xQiBnJi5¨ KPÑJ#Çwww)7> eKJ;e,un}e^¢u.T/H6ѦbN-xk .'c}4*wލŠ6: `A4?3ZUVPr#PH.hhΚkJ4E1yҹre;B8-$+\^ XJj%C_:9,ًlt3q IlFJJu.ioB{j7|3N=9h@fu"EM9hݼykr&O/.zY4g54?'4M\9$Zc44g ai",*JXgl#^pgaF/4HoP)b]/ӈJ}/>f4Ju.TPym0JԨavm I%1"!WRrl9Tk_1pR @S}Sٱ<߿w\B"9kYLy9Y:I%YQoW;Ю{$Ý;w$yXzO2y=fV/3r3F=b~Rh Ɓs@';2ѷiFm%i=|]Hrnq;gM$*|LѣGü}ӣ>ܱ,΅i2iǗ 9fGJ`*؋RIbQ0l}|b !FX<_ETY/"?̅}d ^OPꮊu ɅV?q2&ƄBӠsݸ.aZҩuuZ$10ѡ|+sDz: rhF_p#V8 pX3Q? :+J0ZpcR򺞓Xl/yznmσޖ^zLx9.C`wBξTeH9kS}J'(4t)(3n̋y׃;;;&z 1*k͞O*R9PqBJ6.X1i>ܱ,΅J}&$۩]SLErՄ›7oln/"ϗ_~mӺ8](A)((f;Y +bϩ!޺uiUŃ=Q įb_wze? z*z8Q2+Bq{>ܱ,΅J'[l&g3Lƭ4\iw6u1I4]D)}O"=V?WjgʊR;{;1p.+YׅiBrHH=>/_& G2)LNDɅtHzGQVKTAnܸe½{\QI[js٥cȏ<,@[1˺AU!cg>ܱ,T}闪TtF1tu9VMs~A#M86i f|K;[gj?ۯ^~+ױ`g#3=Yc)]0jҷP%OšDrO7ړiҰ]-s=8qt-qG"+na[e0`&C/Z{۝~ʕ˗/MgT752zI (r_ =&b< whϷ2w, kJ7V@ʊSq 3_:}Nez0ܤRȣbL޼yc[&0MSkM(hX"D#}^=)-].A [ɅV/] L*ʎS4q^j]`w?l&H9{//CX+$t'4:D}R;޵kH rG5A#[cYh Of/&H"9<#@M> mCz^gh &=FuG'6yAИHpjdum%o%0 4m'_&CɅVvyd}}&%'~1(4C0r*kx29 1 HDMw6ED ̅|RwzqL=Yʷ9Y>+Z}+dV@..=`N5qIN~t< E=sOXWwRbYaȢu?Wn^\(.TP)5,"7b Qq[!#)UkGY)Ry#~2y1/p#TXQH,(SӍ.9GE:㑹f իW3.:3ҵ5v'\XW.dTu<NQ{[U dzlN;yfXk׮qL ]IfR5/E籪Sb]1a8>҉zxw7sf_ y߿o="sH?`GDNOh[E#ɨS,NV0ڌh2vz_G) 3,XG.:6ːjmzZY֧lhby;p0鬬wM)  uB~t%~) :[ ƈQ|,oA>XzBFgVÖW3 % ŅwD'D>X~ C<{|XF?3%1-<.aROaz5iy)<(;*G쎬Cg;=jH.4 ʅC:p .L}쎕7&D$6u+ QnN"-}(P\0.TESFE7Mr8Jγgձ(55ca򵥱]p1'6֦s {y)W6G(0sd.KرBT GNP!DJ#%Ʃmx7Ic{#zc][TǞkֈT9h=ȅapnY& %:*sRm u9#BgI.( nడ pH81e4jkͰq6g{[ǍS謕=جիW* ?6gͅ&R܇fC͏KHnKDY)$D1<}cZQn+"j|жŰ+ù% v/QQUul%P<%кc]?zI?۞G7ɿq&ү(Ѹ%8ǮdyD@c\(Q.z??~Khl=O6m`T>pJ 9+2ZYs#ZcahN UOMd&ڙ7_OOqдȲ|"#ɅʅޙBN}uC9 ǀ%(HyvvBrEYsb մu;>sG̹]L&:fM}b.-v FX\h֕ BxoeX֕ UQu\lyDTݻ7;F'=8Qiذ+(St%Jřׯ+tEJN.4 ɅVɅ>ܱ,+'y3aڤgr7S9`ճBvݻwp6Jg4BÐ\h5\(Qºr!X;?=*̼?QJ>7yG&H~j?'BBxoeX֕ .J8ң(k+J~veKxKܸP*wQ|ph 5M&\h t.˺6=ytʲwT/xssSGj1SZ'%f9gL&iA&ly_UD=d`^^ߥs!]߫W*g ֛#8u_}2Qt6{d Npqf+^~gs$JD#`%aܒDKE8B2:7w\(*+Wm^}/mh}P^,N$]E_aZ.t5rI.Jt])^C޽{yj;w\tTo ;;;۹un0/Zҹ@ |@}ի ע?ub."%:Ʌò۷c6g/ "KLG`^^UB:8}iZKǎ,=67Y,;pp xEׯ_K.׋vohr|=+ОI E]:ᄉw4m{eA +IK]g|R%w.}Vz dׯ,Ky_ٰWvZ. WMbO^\eV +9׽pgܧ^7nxL0"7oޔnV߫ᥙYgϞ:/J](Kʢl\]$Z:<=$z%y+\dK.  Tiɳ~4ʰY&h`@RMn^|i&\Bc3)]D bȞ[,Erv\h@Za{dQuC\HWš"(jٖvjw>wR 3?kۯv0_o `SMׯ1IJ1(JK…K.MsX +YWMU\nɅEr%6GZ0!w)5Ei Lal&VLJmnnbyͭ[ի7nUܻwO$~Ekhrv,>17 OSp!Kk.5O՝{] rATMUVUVTaJɅErBÐ[!q¼R%a _~%0>cxuqc_ JUq1X&nCh#5ѵbb,V{g]`N6qjPj ZHވ\:qQj3rrjkۦĺrI4yQpPՈ7ӓ~' ^ꮤ1>i~I1uvJw>Ϳ*0swkp\k}y6MӐ㷴ݻ qGClfJрhgOOc1#&zˤ.NLBlXeh MMM, 4zR)H,'1K:/6,|JQ5cI.2֒ !Pj,^zE;;;ev4sb-|qqM?+ɻcqbF HFgcRȿ/:͉vs!ox\Eׅ۷F4dL9#WMq Xw6**!,q Ab`D7o$gdqU*[LJH;wS5a9~˅Bdz0A5c1;uǏK,d[HHJrDBtlm +։>G0l41 YAl$2ȁUguqMÇ06R2Kr4Ҩ#@&ϥ=D .%ȨӏDpzg;9~BLUԥ"G%v[Faԕ e%#ӧxԞg{^T9Jb5Mu.O6M֞]h;bP^~:?z)7BNr"h`Z>h %-v %֒ 5F߿@`d?ĽeޢQ0"3;X?g|"1b)Z^ޒL,x,U{j\X!n,- .mȪ]?`K^3Κ]Q͹=66Z)/BՏ5`MlJ5F2 U0H`O Y_q`X?k;~VXSY"hLI4:A qY[>< K{/0ܛՁ+ ;Yc.O@ᜏ^rFhjFOm}zߝ=$=0#rfj낛;Nvws?v\nsRwm =o*5aFC@[BƟzjyS)}/WeW"? %5iEC[Fؠt&ϟsga+Ə{= }wAXqu~:ֹ?Y1`$jWD`ѷVn}7Y[3^^\x!&NULT}}Mrtծf祇-oI.} D4~;(,v8cAN״q=ZBM sV'6Ǝ߹s}?XDD|޽Q5/\%[3w`DuC.VhIXR\(Q֔ hی=dtƤƒXDeZzD([,cqiT jdImʵ΅BLƬ#L=Uoou'2q>}q}_tَީ]œr!@b #u4혘 Q#4'6Ncc3m/@SUu.r-jssKK Z`p-HI@ c-Qũ^e!W* _Ʌ.2֒ 3|m*41#RBɓ'%ж5B=m5E娧RͨL%ZLӸ;`>r󎘝sLh=Z07!sih  ]q1ED l>AM0 k"nةƎÛ*%쳗zH+JrB@kO<>`3lxFLt&k g`WN>9CśB%-H2y F3X~ Ha DҌQ R-\tɦ^tq ʯ>tȤBb,C|u}.flCOꅦŀqt[]gu츞Qo nu@)Ѿ=Qg[.t\-pWQ`=*:0777& tyj˄QYJ.(kʅ41EjPD|8{?s,Ⱪ>~Z֡*3 Gm&i>K;p!noǝŬX]βSoDUѨ::& <;7 QQF}z?ċdP_nWsBӈ7Rh̤[`"&`nꛌރ$L_AVVR":v\s!} g$cNJ"G?Ust8]׋l{1ͯEO|XTǏBb-Pҍ\VGcыe4hQE6zH S9ho|>[*5P BXa%kFTqxU]E*27:쎜 ]-<┟CQm(C[y ~ф^|B@lp\Mi[D9<(9؏ -ÿ=7~Ћ&O5ħ@jMQ/zTE;OrsRPgN[D30?Uojبq^a>E^T:ioHKT:%҅ϓ B6`#dlfi)p>uuԨu+ɏuvfɇ}x7'%! ?VŰSFmG$'|87a;Q:_Z8أjqY+|Q8~'ױ0FbEKDz ߂`3m\k|U+Gx1xrKZqW{tP 6Hl2ߏ*o_d.-Kq.cig3]wf fq_D!pc\(ZB% 2xHYK;ƧLDHzɝOթ-b7|J強~~X)B,*G!K>J yZ]K0bZՋE Ѥ[f T0e Z"s!O| K=jS6P޶9t*UUU܌:dq93#ΉhϷ2w, s!t2O.]l,BظzfJ9uwHķ (ׯ_cgWZϳf'@ƭ~c B ΅PqVhmM$3N1 Q|޾}0̩Wr6,COwAspLhϷ2w, sd˿onjnmݒdXPz"ݾ}3<+vk|DaS[~zΤ$L6]eluw-$1#,!d`<cY w|$ZM\d.Ī#NCT`xca0κ0 ҳJlMN Ř$"sP)Clꅽڙh hϷ2w, sυ;g`g.|w>rK|2Z،ga>Y;_pc7%_[3ձ>&N:%%B}cYX.dW82?N=ϊqGͱ) (Yԁ,l$4=ƭibm7y2 _hٳgf1 0uk>- ɅV )Y*;Mj-߳vXYQ6AB^BǸ2I79%mQ[/ @}cYh W/oX k&Ms% Q=qGsAq^/U|QS¡ #dz}J֯L)]E>[EXqFsh2aGƎErEBU ?nRIAbi/~ g+( 0IZ?©FlAug\W";fȖhϷ2w, s!wLԨ1'7M~ m0E )J,ws.bDOB Zϳd,]7n$ I\26] Lv(ރK.\foooܸ)>iGYwQ6 g1)G kyF蝩 S)B\"^8"Xq$mz{^.>}k=b{Q@vJfb!Yi?OWTA;o!¨2SkS'ݨ~lQyGrEB>ZjWGc |\@\fR\93ihڥ7LۿP _a.4WvBhcṸThTs LvGWKW3Lc axX݆,Ku6Y_TykV'%Qw.ZK#qD@T_yJb_ҫطoߎ xm6*W400C㌾RԇX9{oVEFb:Y-l{]M^ѿoTʺxxCesGB̀KPw vG?aj1hڋ\Ra\ GH빼xT_Cۑ{ammlQI>B1w˙q89ϱDrFs(G;f 1/ nuQUN"ꊳ\%fذ1f?xߞW2k[]=^=cѣຍb$vbA#m+\=wƩ蓖?|.n9w'C |\ϋѳ0.a(j8Nq6I.TV?Ob~Jc/"^TڃXK7vg:Oq{>lP1Jݲt}L`XlfwZ;1[Jt2/g%ިM "|^٭ډm3lu9UCO4؅:/[lq+'|QV%JIۯ0{Pc?F7љ#{-0 !J'\`Zܶ+2_Ze**NJaeeK$FtJj0otrz^|pgfX {QK#TɅʊc1_P&Vl-7՝Г+OQ݅ո^"WQE8B!=Ͽj-iaCv*ݱ ȏK3^|4؄( &nĸx/AsGY6XK1MS*;k[óusafɅ>-e߶tB>XƁ3$2:X]ɅiЯ ĩy"+8Q8r׉>`C܅{{ ;Lyʟ)1vV䃖%Ql+ D & #gJi ''ġcf`l jwsRN0U[&Q,}2qI">h- XzN&C.a.4Wp\U'׳ӣ?鹬z:gL}9ՠ@15 `:' LXۯBS QtKZWƨNh<M8M{Dx< R7x1Lnb-<TO 0F pLmg|b2w#Rw+p"e1;vsm(f 3)K>?m~re.lF>$.ZZjK&fv㧗jTKu9 yQQ妋^8)u/U;8lxz9p3xS8,=h +&ɼ`nYZw Yd  VEI##]<0qzJ0nlF8VoYм`iͶl |*]ѭdʰݟBð\!qUݻwUKB䳍-2~1@|csJ7{vL'OxuV.3j\3NU$ zI`ł@Q ɇgX;(4< ̕3Ibx^^gaT ,XJ!³@J ǔ8o$FQ8&S^ łWMn-X4q=`2 eʇXg\(\(:|Qq J؂Ho!$ؼir,&$gD2+bot p.$< Bwlf8|T!#,2$SI TO] T5/%?~# 1Ya߿|rḷ$4%lUH/LQ$ZbK!W+TǝHr:v[7/AazR/3Ldm>0;%J5BQ4.1Z!Bj C+X'uqkQT:9ZvwqݻZ"oU`V4KNwl !(![ ͜it Xt!FhKl@tV( Ɍ5F+s ON-g^xq9Zaw& xɢ~^ؼ*jNeBFq5tНe'k i&39e,_ZJr&J%6O:oi8&l{xoKO{e L fKw׏:Ԡ%'/}W-Ͽ1Ƈ?ߨ,_.,JpHU?A>4&He5㷕ra)u"{tpV>hp0=wvv)ĶȨ72vzk$`ʊ<t'Kl(Z)QC; |߲PPO4cjl@n]3^~j{2}rZrz#M4N"l@̸Q8~Q[|ۨsU"O z|wܱ H@𷃣|M?Q2fb#(HynáJՖO. ̙\@c\9mƍ0ܪ{ ݻyy3+C6q?C N6$]0KH^h 3t8`!vwb|X$J5B%,J<5ؖ򫯾K/K'iT?[4/:tAz9i -Ʌe}gY5u9Qʇ%@9J#!_|o$p9J z$kݑsp y+YYǍW3lUSk^2rQ \9cl\̭o-yq=`8R9-ղnZ'6^}t{O[;GZeAK`+3@JH.(˅JJZ;`M4,W+X?k5~R= 0FcRDJ=z{g{[ E!hGbH2j̅4ϕ B+߷?/нѧyu2+KXXȊ%ɣc l]ɋAeH.(˅#G` k Y/*qaFlG ;fkF,'@ M,RZ+W+Vo^pykh,(=!Kݺ?-gZq9Z5 )w wI$J5B%d  YsIo!_bӇ6JO$!Ech᩿YJOl՟+W+Vos^g3v1ϵk?޽O>k׵pD)`-=SBCZnRXW.T~r3"|;Z}44g 7(#7n('BؔɶiLgp0➐y G="D<Z+W+Vo^ r9*X]T'l88uئOTniq@L=HtcmvL.wQI1`̋1ٙs=  3xK%uSʗțS.rITƬ/ 3WX"dhOEK{5g-ZK|.۷cN| m_&W/ceGrS}cqA"uLwdmzBM?̬$bQaC ڼH߃(Nh~W\{ʅ 1k׹T5$N^bhZP#eыYw,EGrONdzEgF'nqBk+rL@𽌶W\y&[]?o-g,&dӹ62ތ4du\-8KPDՉ*S5chl9Ÿd`yKƬqcKu뵰L5s[ud W-#\My>2B)QSxxB ^c_P4 CE11md}ʯc9;vɖdeA 9zњe {P#3J㣞̿DQ?Ul܍lTKv!jMG]2ٳ"\-yro1|rgrN&P\Ņʅj-O$nm<@oҁTn>93Ռʁ.,q'pq'Ņb(ijCޢ ByE)5}=ޘpfz)-+>0K_T9}7IHŋċXdC}.7n&?xb%ݵUF>T6]@Tlv8;'Ǧ\4p"`‡-sI2јc0p3Crn+(dpR1tMxWcphJGD)Ñ9~ wGŤꭸPK.Pw^ꊴl<4;D cIg=ŽxL:9'Ga7 v;ƽx(G%r.'ݔvvC5z͡k"w]?-lDG>E?)\p}BzS<1P5rB_D=tą2ٛSAQO|%O>Ņ^r!(#{vѧf`YY3͛|N;1(yo^RtlSaSF^cxΛ麚ggY.+%2_ol^d0_H|*%vBxG'i?V">-S: ߺuV6eˢ[>7 tgQ[Xq*rѲŌ BМٮ)z 6l,>{,{90yV4M4? #gLpǹBbPԙwzӵe  z4cTHVv r!p1}N+Hr¹'<B?m [we ݇I^'!f$Vf:O{9`nڎt.RIYJi 1Wc {ɅXe8Un>|8; z頹m4$<+j\W%xbS.N1=go?1,8 ClgK{0G'SS)~*3|cXD[4#>g+S T ؀p!J'gs671LϬ~rߴ3)./ |Lt&Z`Zb̓G3hΜ'3_`` A]8ʊ2CcυX}]l] $t.hGH,R7DeEPWH˛သE)|+mwmX^,. (xi6RFXm.hǬ_f^_>}Tը/-(K5Q" `:hmHn6rMM]5A..t,Jo@qy~-t=EqѵMǑ`"sQ]bW.k?3o>gDq-Ű$#i*' $a)|1#9K,y`pre,.t,Jo@qy~-t=Eqѵ-­[m3܎5a2lA"JFvuh{&}sI>W04O/:7f"K|&qa,3ptеC(6Yб(1Dƶ@ضCqr_E۠ʿ3@Q]޺1# #L!qݜ 3!^HLJs5\u?YfƽWA( eozD6FƇսDqcQzchC[}yS.PZ&_iomӒǣ(.3uc&_LBl ŅE,4uq ɿ:nXc3եKrp=޻1]G\R'-d9{1LRh:h(,?q4Y3*P!c[aѶP\s?_c= ;hQrB[~gϞEyRv(U7 P\h mV駟TI{3 I}u_E_V1y!2{i6vd#R3tB3P\hm ŅDW\g}`1@[XTbL-7o޸qC@o .}fܼ2@3B3P\hm Ņ̂Y)cPalGYe @"r \F1Չ7DlP P>+a#/.4ŅaѶP\_~W5]h8 bj}H;[&Svhe_Lv8HեKF7O=Ņf`wG5Wm;':q;=c/.4ŅaѶP\h+/Q/xeЬ:=1YS3Z C/*7B K.U纊B].䈑C]9 UOŅ#}h킈+{ V1UX<-k.l_z/CoN~-_'bs OqyE_\U>ܓP(. KGCDz)مgup9AqyE_~Ν;V_|1,ͫo UyŅEq=F/\`ի?׽>&v/BVU8WcQ\hWd2|ZPB=. /_3+>BrOU|WE%i;BБrf~4/tQ\h zBQAڮ<.dv Wfst>(ŅEq=FqЋ<^W` "?FDs;S\ŅŅB/\\hzi_yag QU ,r}ocޚ%Lm{i\I&y?3 1zB>'eY߀L׏f3.CɅL'}B[׋MS}ȍeFH-fL94/Rzq=F\(Vn…6G3i=le}={GNǎ^w~k⻽olRp_bmnRQ$z7Z7~w}gG9jw 1zB;7*כMQȰOA-8V䪗%͑n̙w|o ݼy Ͱ9]xJz_ݿ~zz31V-bJԡ?>DK58}K$ >E.24n;BpMQ\h;Aۼu5,q3ǍaE4=j+W)Tkl.ڗV}C~o0˜1|2תa[}(ZT4BkR|ᇬ†&SC?~+#+^8v\9 M50` 6zPcXç?\@+=/3Gbu˹w.c>b5 _o7Gq|(G1iua]%Y UãXֽ?;&V_.Dũ-s']FΊGCXǤ!-f:<5Rxv0K3P\0.ǐWGi՗ 1\g$_w|",jۂixQq挣>is [Kw_բ-3Y< ;p"c,|dGo u`TE.8:fjctU}TJʂ;!#ѶYamL˼)O;A\fy,q:}4޿_N8ʉxd[Y :՚ dv)ȍCUy1:a?~lUc)WRm"iVjSSE,T> BTq~]d&8*E޽{hy8ӅjJDrj Oh֋aU8_j9|Kś %xz)lq}m4KOD{doLR*;w' EK:r5" ʯ>\ mXlh 43նw邔h bhEd_Bt6"]X.cϟ?*j|^7+S0m%pYo$b9T)l tѭnݺk'.Q4 t uNVjHiz/ d ƵCg1v/q$/)ytv!g̛2d6dʼlrͫQFIù-pP@Bi(o^sbdN)<-so$J&sFqH[ uѾPrOd˶^ѳ{~ݾ}[5/U3TR9{fy <M^$=h!W:"'Cc{yƑ&}~F y3`38Tγ:+qtWӏHST#۠HV:8jCx葯EkM2ƅr&fJ}E`|cÛ#2Y-B#e;֮CƉe8zF`@|jc˒bO9*ߊ'WF[R"*_s@TM:ʓJl=PVwR4Kg*ST%!#@Cɹpe=o`7+ oo$K(18[\81[])P/i_i~|-o_#~Uf)< Eb cM#.ͧ>ÊpE0w;Mot…xI% ʉذ).VwuUƫ)f=MvʛQQrߵ= iT͎:)8ɽy*(d-/]p.T E,Yҳ4=H-Ez٫z|6,;532YЪyӢ#Cѩ1\mq/.PRPp9!S;ȞrjaVfR -`;Pw2VnqP}qaS677r2Bk/eY򲸆f:EhfM]~'{2鞥4oZo\O>ŵ)mrx3=,"Tk,d"D~wT:KHu\@sp.igE[F)li!!ׯ_v=F DwԹիtF-QGW$g*VrLi<cUhq`A[鿎$>doAo;T&}Ocwnu?\\hzip\:tvX HX܀-K)3g^Ěޢg1zph8PAnO|"6nyLHIgBP\hq6ctd?@v[ry|%m;`kR$%gЋ<^76fB޼y3]y z?>6&5A-Xma)|G<<̆dOqc_>ֿ|޺݈v<<c5::rIhk")JPUgS`jXstݢYluE C/  ,Q1NS숵-?fDXQ"(&Ɍfb:yk ^iCQd۩Y+IuB{8kEZ5 Gi$V/HRR(O=n xQ\I(}y..4ol>.0YB#-W4)?f1\`2_8Аϑ%;=GD>߿ot T;B{)Ss!$Qγ_F]kTpzt_/Ņ桗=/~Nh}6f7nبY2Ӕh- Y>օRrJn?^!)L<;!:F^g'|J(.4ŅYlq(GtG۷gl^R3,)nhH/#eh=&2*a#)Ҿ4<~䎀9VS= n~ҝ]:c>HA3y..4ŅM/s7fCm9$v "u$q*!Eƀl]͝@[̸?w3ػv_;B/ v_H;] !u z5oyX 4>'(+Hbj3JkQ湪'O03%. 9:`b"tlE;B/?HIc(ZxW~k:Wv`ŜI P)>p]L Cq=FG}|'w\v͛V"0lbKfOIvd2~:"(K9‰fCNIVVsGrS}cq![;)S/0μ،q4%Yvs0'ݸ;~ ?l乸<ct7p.͚Ҋ(@/Gf"8&޽{F=H2؎p%};bdǞۋ^7jKF¦3y.]:]|G\QsGrS}qaS<.e#r.訏W~#)Ҿ)LKC2ߑn9tǫF?ܑ\zi|\{&ϥKkH :yHv ot>.l=ҥеw[q ҥK>BJ`tt8$`aI*oׯ_whϻN "cs3P\h 1ܚ;΅|n)Q{+|Ʒ9)X?Q}Ea4[yk8o/q|! Cq=F/\(Z| j`Q8|pիW_|y~c9f 0*c.~w(.4Ņq!_Xsw$Ƒ;+W;o_ӧO>o.yZJ Cq=F/\éyǏ[G5Td|dϕ;`p>Q#]^7g)OR#jrBB{^P k.$֭[ٕBAWcPŪwz?Ayr]X^#V>o.yZNQ\h 1:B&?[+WyT5\pU¨Zv >~WO?~K.w:zi_ )ҷl|yB{P'esǠwm_~ɰow:*"Mwkh޻;1EَmGd~a& Ba` e {A$xa?v!`{آw\Ko[s﬋BP( zƍ|^zu=O!R*Ę|c$q) ͛745u֢pܹ/^{E({O?]|\ktG/ZkP( 'F[9G!Ǐ/;.aAyjO];;BP8]O]jٳgnBP(- Z);̈:LuNBwBP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP8￿zjWn~z:=۷˿o޼w:'~~O fŋ|b"3@_qirCʡ<\'nl@J'Dt/_aCk*O .DhZ$EOB<=y$ `Y~gq2XT9[8mXnpԔɌBw8 e~o%)p# z:~"T{''Ƿ}9CE=2[eGV\Us'υ'h@j6ڛ_a&+MX'<(?ñT;ew*g | :<{<]U[gUMbav<ǧ[M Q4sz ZΓBXL =A$`ztOL'="$>&9 k20Ws[jg^ymY/7UTZu])Mp7Ƿ &q<1*i[>~1470@ĒU jw3(jX+cYu6$8\w g01֏: O"ZDhG0uzh\Zmq4O/OV"O4V dwYB ] [QL7}ot=?C x)-ߙx>b ϯʛ*m8-(੎Hg?ÞiS9Wj?0M0sZgWւۉfN.`qx*\Hw g/&,/9EhK`di)[{.yQiUWXwa@Y4-:an r\ e)?1(y,]dŻhT}j };OUʲɠc*?8n[F.Wkz6Ƿ|]fѹyTd;F,Q|Bx웊אּQkAq'OrʞpS3ﻅӆێf/Ȗh\dC. }< #. |Ԋ+SuPyv8GK_~2 )G}ąKgO䁞ˈF:ӟjmpr3/ Ѕ ҄"$Cզ$ڜezk>׿yNQTWV))V@|+9cޕFvtU 6Cj9j8]-Ƈ CR7qʕ8n8ra& F k|a7cƯ@4cIDqѶe*g hu n[ˡd;Nv<&/-LIȧ~6[2 ,Ȭf|ر;v鼔Ν;E 'Ǻq!RBTDt]i>kyL9{K!+9LwNp*'}ną;hu5:X%odN'Ch:<rAsCRS>7k ga#ܺu˶zJB`;DDwtã5p('JG=dgnGۃLDa69ͻwyo13z!;"+բU8<ƚkh?Jhz}`ec"#%QLl 外Y"y]E}QMHGCs3?F;Gi# ^9eNKkBTK)r3sw^<me"mv *3X*Zӻ&H]r=2zRR,gh3-|Ƕ.,-ż)RdntE71;xeYgpޡ4x')H'W3la"HH1s⻸ys__gT{#W5pBHd; H֮|Ot@$]'rwhT@rj+3yMvR^:Y_P|a Ms].'U~#فf?!v\vՋ.kH5۱f%S)s\|\ żԚIrZ0a/E[>PpK}6[ nN[Ն2 'Fub?t!rO:&*f^1H,9>eNكu1 ^V:Qmc3j@p2$Q $Dk}JP%#T\z$Xh:):8FrndąO .ɀ}u4,~ڙM{Y'g}LөZT?~-JQ A0Xq`[%=V+%lkG [}/J=|ӑ\kVU]g~܄)'hxk{ u元لb;.8?\0laQy=8|H^W7yI4/v91.rZc.;^4_UH}H`27ŰL:%ٰh>HKTN_+mkoXv6ΫNK GG+kfϕfXj1u눊wG&OB0. VIl*:u]|ܞ).l:rK*KۦKV\ȢEX*/um[23.;׭OPt=̛ Q>z4GO3^C4Cy@z8c߰,쀊k2C[ SEHPCgDB6A+^h6<,EhKP %.'lup{.9lV/fA_6,ylT|NW<(X}@p@vZ)2+)>'u_RŐyV6S ^[f-Ĝ" Q*#;LY/U@yzCC5G7=$1!լR9utMZYE֤@sE? cɕ1j̄a&^gU]"Ykhu~ [|hԬl3&""kd>b T>\sG!]uƼ{1+ f "(vz=*sオr/,xFLvH$ Rpzzw(t.qb0:"9Q㏌㋴D{de 8bnSCY<:o9WӉTyGdlt05P݇""ٿŻm6dFv8|BY8ȁ}`F=aKr@e(,`+7w*G p"zLev1x b[,vWf}dΉ(a(}\h5"gl^vj[= vt ʩLU+6MH`ccM[r=#T&c t0yt:!˦YbOΞ O^u,egާ)fXӋF+|kyeV -B. H&Vu.7s_S޷/#'BI򞔬Crd,?& cϧ|n"-I R &&t -N˶ M #Y;.oS +Gx\>V]ʳ&1;Ơ#`W>?S{ /3}791aJIU uܢ)4"DFfiYeUihxM1o+u+ _Hxv0s3e~[[Zb.h | 1Fږ>y$Z3%e(qR YL*)%G=(Q|R.7G9\k!=9`䚉 p6- C2B$KRmg|""`nF>*+!khgyL'Wypy'AAy袈Pa -VUUqtBoyA&O@ݺ`K}ʱF?$k"€nqGsZgo£XN+@k׍̿T_Wϋ4{h+պt:" bJGq`}>Z?Ut}{#j-Tř<3pg/nuߥNeFjb\Ŧ)(qvm#ʻ9 RY>̰֓:?lz9hg?őm<\)E$`eQ-~HbV4= 9wH.hBCY, z#پMb-=dW_8͕n]rL9\عwY?qAt@/hn!vںt\9TW^uU:::u|I#&MSˡ &L03@b7-Gܤo.#zD.vcEw=P,#+Y.׃RB8A253 v-읗CYD&Ѵ'q]poOk6wѮQGgFSurlFw. {VlaA&Vgы̑3~kr-o[<тJG6(ʘ}ڳ5qA6ю3v&N~CA Yc˧f۸?͵3,[WwFu4Zc>~:9< @фJ=Ń{>JfD5;~AGJ}z]IChƱ?RWBie:9 r]7G u˳:=3 :}.<'u4h޴" J/pFrwxf[E]4RZyF;"ڠ`jɁkI/Mu~>oZ?瑆ԑQ\+Lt]X5ǝy)pz3#>oe}2Hl?^* endstream endobj 38 0 obj 53411 endobj 40 0 obj <> stream xXKo7 ϯ9'z X,0zp@EOm [$R$%qSk$Q"?~|uoԷAp|~~KN鼠;؄y˓f?vO:ݧoE'{uW=n @Ѭ4\I,HYM?4\-%obS8WL.tˮo{mv;< {0߯] ϋ:uۡ %`G?*sjcHLP7{Y&q+H蘮$+P#:rbhH7qT:W/NZVo.cORw7C\ek, l(rYX57j]M&2dZt@bPUCK)Љ//0^er &ICsVJr!TZuU*ITSέA IZ67^ά]8]N ="TζZo7 ) 7ܪE;hWWqe#+^f_u 42bg?B3<΍ lQ*KLO,F|R} O[w)N2RzE{&lPyUA堜lWN-ØF)%%e< [k1h}ݒ27"YddH13}#ԐY){64h3ִ0v=P j9"}f)2i{cڱ2qh)0yE≖2Q~A, endstream endobj 41 0 obj 1297 endobj 43 0 obj <> stream xWK6W 9|H ~h5CSmd[$΋Fi.93!m[g7_5;hoߍ3҆yiPg_HweSA S?Xx2V %]԰öMxl?W0 i0Q~>M`~j ij/ v|[@KǗ`Ӓ&%e3"DBh~3s E*$ĦC7p.9^z+aO _֍00pyLo)%Kno=i¡D" (!!I| ^ɕ碈P0J9%rD]ܻx<ȁ*qHѢ}Q>7 Ix_ρ1.{f]9'0{{w![Svg-|j <5}D'\Aa"%񊏢~h72|,j`ҡ,'Iv+g*\曀9h+9o*GJr Lf=PRWe ]?\g҅UkJ`AcR8YAXPA 66Tu> B\tNl; o &8֎D JBHmx [a=Ud;F L:hvs 0;sZ|-smiɝVR {f/0cR]늭HYw۷E`榫VntUYύ8#4&" z)Cou 48WH.eR$ V#M꾂bLAuJWǖ69-ka}\ܠ\))=Wg,B_/oO!zMͪيVͰF0c2J+.Syh~55irZ(uۯAMu0!W "u''AkGM Mx bg7s;]QO_/K endstream endobj 44 0 obj 1091 endobj 46 0 obj <> stream xXK6W 9(0 H]4@ȡ6-K~3Ç(y)oHu|nU{P8 <{_l߿int}QE"} 7>yCQ-u zН"4 VmG|8>;~Uv۟tSKB7]X@/=>4iz5 G&R`J.LYHM7~5l,e.;*v/5K>Dio3vXSvqk!^' r'L#ZYehZ-=E&s]T)hg5Ɉ^+ "cc^bQq hiO0 𯵤8FtjCi9^vk!@ J]1N0^(Ca IP20g0$3+d$;xǼ9^=g̿X"#J@D oS B˴-3l${N!JSrx ~bl_*F c,dc9{.;T="RT'\>fr@B*s`F%b$0>Xg{\8u 'L Zl>&cPUy OhՁ< 饲}{۫y0u}{,j%[th¿xA]_l\vr3cӞlv[R:U#0][1,{֝t9}õfP[7hňJ^j;+$cBVVb; nIwUOԓ)jÞM춷&gCO-@XiSWb|eK :ƗL}7$Rߡއ[gϊI`S#! c;Hn psPW\SO3"-&@Oa h6qP5:TWkxfW S>?A0-"K>R殏 endstream endobj 47 0 obj 1586 endobj 49 0 obj <> stream xVKo0 W\ l8av`am]Q4K(ReI AEGRx^+F|!>߈_8V(D .ozcpS7ڂ_:EeMRRmw8^ $9Pi}:h,>UmC>4o_++@$ LE?$ԍb0D̟-E@gx3*ZJ$𥓪םԽWM'__w@)(9`/3m4M|YHڲ:e!@9Vt􌗉k7RޥZfM8P,3C\. f|,+gҸw3=^)h>OmCbHc~(caqx\A$&TYG 40g:ec]`5T|Tc3i uL,FÆjSMVdQuP endstream endobj 50 0 obj 983 endobj 52 0 obj <> stream xWK6W 9|Hm öz(zj l䒿_ΐÇ,-K4}eķ v\wN g' ҅K~O?v:Ӎ'nYPf9,{̎0y-?wN?t`Q&t{ B`uAFҽňiߚSKgEN3ƂE2mA4"7!vsNY7w~"{}ejI¬&0I3_˕(9n#Jc-  Im7B]~ʂA(d= i)`SOc$7#I)*Uԑnh]TƯͽKL#$ho:g7:Lr"&_94Dsk0&%gǦ7큩e!0b2\cdR*AC;CFIp,%sz smC@Ե^* JM8w2S(RװWߩ1&$u钎mBե3Gb[/QK*mJo{ioƝ~}Po4Db,4df)c3}=aK%_ wߕ nGA3oZV6Xe%2n90 ZYg{{ʣZ~.$DUJRq=!L.֐቙7H7E Gb@ҋQWhg.tE>DZ%<"i MX%;dR3lH> stream xWK7 ϯ9L$131gS4@6-K~I-eJȏ)YJ|)zhƯ_߉:%ߝ&}>w&o$- jQ;JAc ~aߏ/ f,Is fSFeL7;}tOv3g=?^?x?)rDGi?]b_EBhQi7s EꑿJ]ȳ;&;)oZ R-pK?Yz[Cw:s J{N{DJMl8^8$`ʢgr))*$ HiEg&)Kú"exJRiw¶$~k !JRK\ y'(6YeCT@WCa _iWBbZpOS0,َKNjoF< .ٗR LTfAyH4`KV^by+,+8 ʛAf$vKǫ%* F6|mAQS~b6 Upy>2e=%4 lZ]4*> stream xWKo1)=~l,E+eġjAsI UUk{+[%G!JbjFn_ "rA ͛FkZ[T mknُGaZW};ѵ)cFeLv|-u м}`q|SaCceӡ"?$BjN"HH'bѡ<ukJ-׍T=l$j#u6+[n]9~NK5Y]["_{0I3 F(oȕ]6DSFk #듑1[Br; qBvyP w܎aί9MJc-` c#(5!l/qWҎÊ!YBCԸDeNz%ËoGLie4<4yPE7*iم`,/(3VƢ6ts)[+7wNTrIRPuT˲WDi|`8fB>m$-|a(d41FpӀ񋄃HM`ҥ)P޵ [@ endstream endobj 59 0 obj 1057 endobj 61 0 obj <> stream xWKo6 W輀^y]P6],6-v/KLҴ(H?@}(zѻ8~CNՁ?_tPOx\ſiՏNhS7LAÃfyM"4Nwv|Qnpf O}OjB3:w9{@!GsC82귧ONV۷O#Mt&B3O MBltLõaB*Nbv,vǝvKsOcX~~W A/h>;EIHe]@X?>1EN 8q fCuXz/`O2@9c|O1%kp/,~#ӒsXs*a "jqpj,MafvD%v <u dHȕpxF1 i0Dž\&5sFfOO`pF i7nK#I.{o̎9;s 1Q!KLMq;b be(}')(rfü2S 4#Xf q+Qv)g+5I}uguGS<鼉%THSٺ1nDÈU53ǚOBZ޹u(h-U]8M% b/*tKrYk cs'de^IRqn.?dÑ^J URKwq& gVפz\u%񥿤(L=QjQ)ԯ @26Dӡ+r MFc |xʞdf{˫Õ֒l/ɰYԞʏ N\\3q SW 3JW#M..n-#.;螫](nRB6XkR6 E>B 攕&WԮ !5A^\j}J0%D,1hwV̖X*YøQ$.JehyNk6ۺ)p)Js85y7Y7\Dop/ x>6KVV۟A5S|_qQZ3 DqL̦X9}?C>@8fAC9.*d endstream endobj 62 0 obj 1189 endobj 64 0 obj <> stream xWM6 WD}x zvn "W$t[,VEķqwN g'x"zM#~urFF?xx˂t28#rp!!}_4I| >ObS0:0(bgSs>6⷗/F,hN1E"dVf=nĝ2w Y<r /G<%xuQ߇gK^?t+$7^k˰ȶh; 6j@SEfۣ ,xz0'yQxĥGii0m1P/)$qBp.7 S-X|QB:URCce(4Ii ɠ'puJE:̶  mSet\O`;нi6bxc]9 U'/YbJ&du);E$ ֘|Lm9YsO4>ss,e mJҼUA =_P־VshW6KabUp -1!]j4aT֙::uŬF[~ X|6=Teמv\p#1Z )ڗLCZ̍hz@bL蕹m2/cHn >lfE`/(R -tI.Z%ĩ9.s]4]Ɍ_txO~cSn2t$RV[ `¸|WTlP6k?Ǖ X8tI1 qc6+N@'w? endstream endobj 65 0 obj 1135 endobj 67 0 obj <> stream xOMK@ﯘs!fa ۂ Z=P/2̼_ *Ll V/G`ա 09; =vqܦ*d o!H[M6G};sF'1) 0ǂ۾7}sOq}Po:0$?n;D!w>^IvZ3 !ׯ '-XlC ԸpME2'lĿOᗎ%]gqߥZy endstream endobj 68 0 obj 269 endobj 70 0 obj <> stream xVM8W#>l1!&i!iwg%>dKv=3Y5eիtcԏҪ8mFhJ[E4P.WZ9b}_U-xN,lJ&`_|xr1DW6!}N90fg_7o9f McS~`dcu@ L-_eBjn72 bʇ:b_d{k3@a0C 5=a:_ wNLe (c筐vCm{ !\wI81 vc>S! >j`@j$5hF4z= aCt,)XHvx,|or2 .uEv- #N9 2Y,ҫCv\PC,p6,v 4/ %) @-%?%~rmIdU<ѣ kjBؓID/e)FB,Ueyizۃ(p~ i͢ip,qX-8,kH 9-)'g(!wFi C!ذ:ǤM$JtY+>0Ԯ/> stream xUn0+x .CE@EOm [$~g(Z^"MQyo,ҍQoՋҪָmVh}>ߨ_QB*ĻgwXzt[No"ZLc1JM@_||wNjr1DIMPS8 1Y}6heh8@mWݾ9u[m#w-%ҲbRI iZ뻣 E*ʟ,N蜋g|P/#m۵U(Lfz3Ӷۙv}{knՖSP hג%KK 5ՅX[p (pj(E Y <'#/>BfPNOe@lEg$:/N'!>H%GG-hg$TnE}2!ǫ#&WR8&yvYL)QO!JuLd%>f06jsJ~Y3.la)6Y)/4}[`" {}#fHQMӵ,˱.r~XfHPV]&Gv my`{W>GP_jïbKKwal>@RA8/S"3SeVX{x{cc app8upUJR/Y 0h=}Q-Z endstream endobj 74 0 obj 884 endobj 76 0 obj <> stream xVKo0W`Uvġ (jAp3qdۂz?fItcԟҪ8mFhU}x~TFo u_!qEi͋J7.?XV˃ilK&7޽ZKj Dq3;K[mCxG}^wꧺ^n(Mؒt~I iZ!E*o bY<ùCEa7;mi8FCbBMCeÀ8 4mX4]eChlav#5!ٹqni ~ Vl̴︧/887t;' OE"f0}bd"l?U eY#ͅM}/q^ `jh (/%3'"-Z$̫a0 =2UF4q?P59,i8L" p̼Μ)X uϬ[c5 N0R B(P9U!׸B.FmNQoG*?İHE6^utxКGy^׋}N[> stream xWn7Wl`dqi60@1rrJS ${I qh.zUֽQߺ/J4zG׿ԯ?Qߝ !}~(wSb, W.j#nú_8Q}S rơ0}Vtx :GQDTV!``v^p8UyݴC}]Gtxٽ OC2VHr:Ů `oiKFw|c$3 b[i5]b}( Ӵud ~ i pat5Π)lScoOӺfv)9+|xi`O:da3OLq[\<ESkQZ\N YQN͐O"X9,,ɼ&C uĥks^ve >-;!&BZʊkpLL9%Uxo Cu4m*!apN9HPHWtP d@C,~ohfp H9|q* B8[wMdK]7$6>o(9S 색ɬWb~L < `'*Ep?y7}!̺)N^ *Dpyrh!'鑦!i9^+!_E,L+͜Td2rKthkq6S6=ehopQ_ҧ rys5&?xX滼2mѵ6ejr[}6kuTi ng+B칼UG MG@(>ZDzqrAЉpEqW҉U'/~9{c\)%3vfڞ=VWc& VuiJfe.r~f}ӉOJv{~\4Yuz]}'򙛞CQy W r^<=c)''mchQCrnzo xj"଱56Gϼp!5q*?˸ endstream endobj 80 0 obj 1119 endobj 82 0 obj <> stream xVMo0 W>>*OՃmVkh})+%W%8Vxwt\mu󮒍os=~)o+,i;|2a O]hx#2yǻ{F'-ߏŇ?z9SE:D.ί2e!5MmX$JXsp/+=&;HF6zۍ4}{˫$^גޖXj_P N];i]|]rkz\zAzts=L:uwV s6>{An:/I E,,pCVv3̰˄;¿͆jtn e8\g>mIFN)MO4*|B?ڔz-3YX$8YǤZAIyw M3Tjw3${lZt{U+3ìD&Nj:KЕ) s6W6_JRcL#Dx(/a?w+O\s]}P+!VLQ 8[WFYZ;H !2K#qmnGs|7SiDDOW =ָ'>Uͷ9-UX=ܘ rq$Rl/KWps&QA<"T&i9^&^3=iߚgЬbzg kqo: =1 x?POh<5Z= ؠp/*ݑq-4>V07 P[Pp~-C` endstream endobj 83 0 obj 928 endobj 85 0 obj <> stream xWKo0 W\D=l8av`am]Q4KHY2 SF$?~>QzR-h ?+R=$ .#-Go*-X#u!­ XT gbq>$LcW6)Ň 0`N;=O-:m9g@m_]-n9++[JLG tE\I, iZmޒ*̟lY@'xN3*:HBzۅ4Csˣn͎$גKmGk6}c+xWCm)5,F` ,"J3IC埧BoJ,2#.v;`'Նby݀[G[o[oò :|_l~Qc~09NZ >Ml" lI8Ydu~_[jLE12F>O,7jy\y6ay1)o 告hap Kӑ-Gh[kDX&IQIRR+Ji;#H!)l$ 3 *nܟY  k֗J c>aa*qrN f(.`.譽MHm`//)&> stream xWM6 WD} q=l;@ENiAm\K=bZɧG[wF}k(Z]~}j?_lt\PO s4WoM Cqƒay0[h~cSzu ?p;/unè;.q3f/nߓvqO:n{ { 43!l,B7/c38,ƇzDg*ۤ Lm?i784]sa<;;1p. A;B:̭qs 0K ,`i܆d@g}buvM]at60\2ѼA}B١EQ;e'N|x|!$Mg+HS䘍tU\P3 >bͤK;+x5Sy1[0~(&ȦCƁ&XQhCbWK$pWj3o{0okl"t-H ls{X CC9a&.oAmAesЬzVQ0%Wt, S9̉>a(Fe޼#֣s*Si%יSr)|RRm)Ze."$Н3iXJr?N9, %hRX2fz㮘cBu9 n)T-5M/9m* m2u}^ʗZmMMk!ANnYK |<_>u'ҫm {Eڑd? =<` ׍B>VUjµCI>õ{) WYR$)vJז N"E%湗ZWnZ{mg*92*S0A)ĒJIlF6p4dYNTOPASQ x<ڃYj endstream endobj 89 0 obj 1123 endobj 91 0 obj <> stream xWM6 WD}Ƴzvn "(Yx2jeR$GYwF}m>+Z=޾R6FϗM/sBDg+HA&=?)0=аvʰPC5Ok]=JF#s\6A=} 0vR a/s ]ϱy߯ƹ߯?6- Gdcՠm`R /}4.KGq͑2,jT9 ;e n}Ov8&v0rͨ斻wBٚ&6ÌN sv11mp (YTt4X'w*4ǫT{-k((787x/M>3  HK0F0hpXN%t sɷ\NpX P+gh JGg"9CG?K; endstream endobj 92 0 obj 1072 endobj 94 0 obj <> stream xWMo0 Wd_ޱߕ`+|uFNwobtF4F/A>㑩F3umг(B7v>W7h>{FڰQvSf{Xi"Pv2P S.'İ+?)RIA9g:Ttȗ=:;`W{ɐׁvjqjoj>NK,>P*7:ҍxO4-fa.L> stream xWKF W9!! 0X]4@ȡ6-K~ISl`xvDrȏIYw6Vm:뗿7h~'Wpy|nYE~ rI*QqXw?YΎWzGUy8_ʂ;eI<^M|jdzؿCjQv:LX$HRXM7#ruΙ[cuk+ h5F'G>rNj,yB^q `3r~*q VMB9=MP2,f eEbPȗ(r&> Ǘ ?ٻ ?*SRg 3ZhWϠ> stream xWɎ6+x6 M01$ dgbſ(Rj'lKիWHv`5_5n嗀گߘ0҄ynp>rCяӛvcb0GC-ؤlnm_L8|U'w)/ &@@iLl~kq=}Gpyܼ9q[YD#P-=)5yM&1,}60SnHt.'WdBq˳b$'̺B,͕, @U( !nTA3 Xqzց,V =hyT}WY U@Uz>T:L dl-FPY8(URr~ig;*/ 璔} `>\S^d—3yuQ@z\ _BwI 0~ 'F:({-_!ߛ /uo 1)ۣ?S۝VmGd endstream endobj 101 0 obj 1187 endobj 103 0 obj <> stream xWK6W@ 9|H l örzj l䒿MkMR4Eof(>89NGpVn}s{:Dn;s8Տ㫎v>dHx`, bwj'|ov|ejP˾71,ŔPXCI(3쟧O}mFO#3!%qH[0J=:+ g k38'/6⥹Ee&{y|wbY\h/oBP3ܙ'w$:2H9G!2ͽ

YPedv lP0iZ?;5QTƔ}f10F?{{Am`G¸.P_l}H4J9WmF!Ρ>>GyOR h#;6|VǬ+JxhT%k @J/dZaA8;ƨ(Iu2 x\3B7ʷmco9M.ȖAN"bU/ڶwIJئ6cr4 Gόw&*]º}Z:je/"fRVDA-=(]س"gtejyZ+YW3OTHeB!uhVHLb=͘.H8[0.N${PGSM6p>VAN ȡsXXoB'V5۬6}œ8ox(eIόBYK?RV6jX/rY&NTFt=K+Z&=`A2DUB*eXʜz ͂ N㇏La!rB2!Er+BR˘u}ELs|.qT}}pB2XF|t2PiP>4? p!@y8١OӵC&u EXŗ>zgM 1O=kglE"bI@,A˃m ݱH͕oV;$)P_Bt| hy,XXu87f`"[2u2[0/ÃṊ $\Ho^gf9xnÖ`1Y|ÎH~?iR?ɥ}Y:㋤ڭ(J'IƗŸfnlwʔή>OAoPvAϱI״֭i _1r:7UH}[֤X͑\Nh-v<;[n|?g0{}H4E8)␩YSAv,#Wۭ rᘹ9ۧ R=TzK8P^k& ZT: aeөE`ܭn2—qpa2 J4qXR%1Fl|_q Ώ=;h\r*$YRK)8 adDvjN!,Gᄻy$Ϸ&V$$#%Q}AzIO#0 ڒr-B*'>aId?%I & F-eh3^XMo V4\>7N);fuZ?)oƚgQy$o5=' |8ROUpt'S}u:7tBQ7˫2p)l]&0怇xo:{xw·Bjta|7x{aGUPHV͹*N~biC"l5r$8I% ˿~9apn-m,/MU@or'_ig[/\kzǛUtD6&ejrߢ^ ܌"LhjrLJצZ;a+1l5(O Ó(|BRܥ^+z\(eY=e4ݦʔ[鉍XI+"06 0XVECn~/sűZLյEϮ˨yO㿖ȌN7p)&yL]WhB{%6٥DK! |ೃ|XJml3VI!n^}IB5#~I1H)osd +Q踭aQOM>ؗ=DRcS))2o}"[vmNuݮ7ˤG/ rmnޗD*V|4;hEfAQtXu{MMYڕ3S͙UM~@ s̙r[#RS1w[7k8Ij{/T #Kſv\r<ϊQG@P״Wz`v<{]:$RpfI Qwz-5)`H_ǽ#oa*R#T|^tCh!^t mVnm*ɏ_op̎{g<o1OQaiϩEb@+cORG^ SA#ꢆk`L&:ܳ' ٿQDD~}O@D7 *6h^{:Jl%^9m%5gV7a,F5܋Zh}6{-4Oش  R\^E: mxHkdDU oG`JΦh(٪ :w&:jeί󮲖P]72x->v=Tl֣iE8(]>v,pivS 5o@'^Yشbg~"-N >pH&?֐{N7 .A"Ng2c~ij.Fus,<4oo=wt7Fvy x#ncipoHF^DhN\'MSu pq;Sg` >ٹq*ڗ;Bhc;)Eڀ`J։)6jRd)-KʷAQzB|:? ',~_,Iyix`D,3Pr}y*Cm7s(܁ /JQ;2A={l0L>1dPvGdT.XK T V{`DrW|7s6mCy*>``v3(^WH>\HfrɴY~}7J'՘(j/Ϡ!scTeՁuc L2c ^v6_^ͮN)/YW ̛ iU;hyMdՊAJ=}S\Sg6{~PKȷ*Lߪ;TOɈ>)O+ tBgz sC \sj:O]BtǮcb R9ǑDAT=zdrtouG^ 9<2$#o9+QzoHxȎ܆]j82z=lK,#eFm`ZԍROi@?$Yƒ}֨R䞨BYU |H'Odiu]9>^PmOr.}kiKug-Jb 5zZt.moP=DžMY@L4nCf _, sWnYO endstream endobj 104 0 obj [476 476 0 0 0 408 340 0 0 0 613 0 0 613 0 0 0 613 340 0 0 0 0 0 0 922 869 0 938 803 769 962 0 459 0 0 0 1159 0 920 835 0 0 681 852 0 0 0 0 0 0 0 0 0 0 0 0 595 681 544 681 561 374 613 681 340 374 647 340 1021 681 613 681 0 506 483 476 681 0 885 647 647] endobj 106 0 obj << /Type /Encoding /Differences [0 /.notdef 40 /parenleft /parenright 42 /.notdef 45 /hyphen /period 47 /.notdef 50 /two 51 /.notdef 53 /five 54 /.notdef 57 /nine /colon 59 /.notdef 65 /A /B 67 /.notdef 68 /D /E /F /G 72 /.notdef 73 /I 74 /.notdef 77 /M 78 /.notdef 79 /O /P 81 /.notdef 83 /S /T 85 /.notdef 97 /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p 113 /.notdef 114 /r /s /t /u 118 /.notdef 119 /w /x /y 122 /.notdef] >> endobj 102 0 obj << /FontName /ASVLVC+CMTI8 /StemV 73 /CharSet (/B/G/N/R/T/U/a/c/e/h/i/l/n/o/p/r/s/t/v/w/y) /FontFile 108 0 R /Ascent 694 /Flags 4 /XHeight 431 /Descent -194 /ItalicAngle -14.04 /FontBBox [-35 -250 1190 750] /CapHeight 683 >> endobj 108 0 obj << /Filter /FlateDecode /Length 5791 /Length3 532 /Length2 5101 /Length1 1034 >> stream xe\]ƥQZdhnafa.iTC:A$$AB:T$>y_=xΧ;־l0\  ʺ&1C<h . KI$@,-$!-*L (|1G'2ϯ$ +BP]Z APWD~p/8L P"2Hyk q66C>1H}] ~?׆A(uc_3~" 0$ 0dD $v}A$AMSൎx- #XBR?ڠxs{ׅk޿Q_笤 ) /PO G- shLsZSdC±r<w挒𡎈 %)L !U32uO /Фo #4&؇Zbp~5Ǻ̷ɲW^'D^nC9t؝6m:)pwgх~:9  8ӥV5)e#3IѮqV{P7ʯ2Y `S7`J3>hQPx;ˀ;^i5r7L0k|}ʠ& U#Jl&WIJaM/]q]1G"5j'6 5 g)\!1yv8 u:-;hInX]䪍,xU 9#DoUB/&cdխE_8uMN\g1?C$N}.~G2&ҡD]3V;d] dcWƜ]IC+vZS10C^9[Cͫ^9hIՆsxE^J#zsqFXUouk'`׳gP#VEL[ۑmR!k3㶂:); FrNB(ej9$$'=>wR+k7ūL=)JhDxt!q׏D&I1n9'l~*e7}aj2kgCd/3lx߳оuB}ė},vwk>/"VO:O1 ,ύrvnKk+YLj/czv/p$$쿼QyW\C1 vF3ggQPqU"὘+Яm]䇖t,B-$w͕G#E{ȑX8^.%GEGXHEvmQF[OfSt/Uش@%spcڲ\cUZ.-yR~j|֥(e1RDO'8FsGtHkoxy'hGlhߥɰ v-څi"4ZkvJ&2t8O8z3d2\<=Ĝ >sk#~Tt@VH+?Jں#(0[vgmZY=~w6 kr N>"Su`""UPE#շ[]U̱f>0/Z5"؅33Y'vàYL *\͋}VvBG+g媾U66O|;j>֠d8=1'ĞUp y:$l $/: =V ,M,}AzE%q)!iM6MU8"7dɔޠ*CRֆZ@Bx"o'>A| :L~-9fnʱڊo?e %^* ˕Fq_+'u VTV.aRbGI+{nTsSc7]ggRh`4<8le]2Gn?Er"a ~nD{mXL ĬuBdz&nd1+@l]x|79I~v~]D=Lԅm3׹v8q܌sw{κ.+Cfc ӤĞ%}mKf0썅!MRRX%A53 &tƷ OǵWv[ ݬɛ{ߙa),߭ o'8CT0VR9]._o44?[NN>I6}t >AxѬ|Hvu;{ r[ d۱m~6Gф,.HܧkLF432klS&QJּ5ٰ$cw=mln  (}T0P~THٙ2m CY h lӌF*PVՅ=1nU{*yWi6گxnC86{>s;8J+\%gGwVn7bF5='Z2ӓ Bai1j+ScRQ[?\XW+䣹2~31A1Ŧ QΔjw6ȧ't>~Ѭ{±J2ky]! [?"1!:~ZogYQP˶Wfxc~ȿ\ݟ*;#u_칯-8q[gR|h7[HsHlhل(ߏ^aY ~dWbbCe{KsWE x㑯Sj(5HX|L!D<ph Z~fnXw@g:ydmiŻ12lLxv6Bjj,r<X6 x5gV)`%PBOG*#8U &ޫ]2=pf[J&oPދlJ#5"_[CaQˀ׺4Yم)Iǒ$8Η4C5v%\,omx].:?. `{bj[Y +5͏#s1Q J]o+q/5d1ϟ#7]-TOۢf /60)7j|G+JΚ{3\ OUZPa- zؒ)»p;Ji<"o=LK+󼜬m |<8xb*IdÕ8/Mx_tOtnbM8e6'[Ud]74 YǕ gGA(c4HPZo縐pإ\q:ﵚ4i`^&cN=AiեU덴ZJ5 5R<݃p-52ˡ5gR;H.FwUFj.6գ4\7^mi{e@jkΠ)+ rϪWWq腺<7I2|C33ePQ_$7g\yN7*-tՍO:]e_2L>' 2X.Ln2J8g^9;"p[a2efwƕCM4xS.U%\Yu?$d=ԋ9au 3II(CSخ*Ug WMݵ[7"xYz˹`2PVJ[ޞ[, NE*m: UI6mI-5% H ʷ*Klhz<"SJL*6\@bm]!N=(gH~VNarAx,Qm_SE:* 8c+ ئ]M?@IO.Y7ȰPVK'ݔc{ 4|f(lmY pÉqPe׼3hH{"W8ÂhE#5H&W?eMO+L~J5 q\bC.dQUU[pJw\Nn7XOc錾 '/R`wN%Dpz1b[hmn5Rv]C!nd3Z (x]!S endstream endobj 101 0 obj [755 0 0 0 0 830 0 0 0 0 0 0 797 0 0 0 782 0 768 797 0 0 0 0 0 0 0 0 0 0 0 549 0 494 0 494 0 0 549 329 0 0 274 0 603 549 549 0 453 439 357 0 494 713 0 521] endobj 103 0 obj << /Type /Encoding /Differences [0 /.notdef 66 /B 67 /.notdef 71 /G 72 /.notdef 78 /N 79 /.notdef 82 /R 83 /.notdef 84 /T /U 86 /.notdef 97 /a 98 /.notdef 99 /c 100 /.notdef 101 /e 102 /.notdef 104 /h /i 106 /.notdef 108 /l 109 /.notdef 110 /n /o /p 113 /.notdef 114 /r /s /t 117 /.notdef 118 /v /w 120 /.notdef 121 /y 122 /.notdef] >> endobj 109 0 obj << /Font << /F36 76 0 R /F8 25 0 R /F17 28 0 R >> /ProcSet [/PDF /Text] >> endobj 84 0 obj << /Filter /FlateDecode /Length 1516 >> stream xXoF~)_Rn ‚-[%GN$Rlh9r/RݝzP/Pdq\_,uX~i3%*D{J& G❿w*8ͳ]/o vۺ_}o|z k/_y"egEJː 0L.ŗŇO2_˷@,]^0˖Ȥz~(gś+rY2+ŔuQ:i$S" 4 {ZL$?0=P5kB(h|w=bkQSE(*Yƪ{ԨZf _XJDE3;؋y]ݩ\;s$^}5@kl8s/ع>, :Xy6;L@saG!]2c0x9Bx%^T TxoMvg4qUڗ܈cktP6NG̼#d&ڏ!}GSgDsm;\\9O7$}$H{G -+Wkϟ+_ԯi6$"qT#*z(d.;e@ endstream endobj 110 0 obj << /Font << /F36 76 0 R /F35 77 0 R /F8 25 0 R >> /ProcSet [/PDF /Text] >> endobj 85 0 obj << /Filter /FlateDecode /Length 3123 >> stream x[K6ϯPe$Grdw@K RTHҀ9UcWYĻ|,s)WD՟W?U*EwyjHDd}u}PMy8Jt_T;> JeڤQ'^\Gr?AonWyQJ#GIٽ^C^oB{ -LUan`QBםJ r*=T })e _d I(%m6[lv=|=)-]7qz״'z#2M"Ovpn8~.z[*sAt<μnG^p}N~![~.B'Z-"hGKŕXI2adq3X]@5sЪaOBF 1UtQe^2^.ٌ߱N{fˍ>u26G &S*6 `Ë]1/`Y'ģmFf'E6=NĎ#.X0U4~ w$k\aW4v+1|ѼHaքqrye yheXݠOmEGoo͈b? 9͐/hp)5.I uKiÞz~5qŨ5 r(M<5Mс2Dy7T4oR si-v0A=q|FU6>4XQ듺>I̓9솩`"&z+:9v6ݲlZ'HkJFHbDtg\# 2"nl9(Rem?@+;.-|=橆Є "w]K><1̘>Z*UہOd͹~(74 f; oӀsFP N[Rgl71ÊMѩb(^YGcU`F_$T;96]]`쾞 *Z5T ZĚd~!#)H #%_n(riwg|-^&4ShE`=ۑleExJ"U*}.]y$0A=e<-aNfzh©/daoۂmtpUʘzXW־b(w \ޏHڕ_Hl7!g9ŝ&<{%б'0'|y ##=qo:& n <l1lG~K Ot-13s('uc\lݾ 8>ԩ&c6UEW堎Ѫ$5JiۏC g6m>β$vpR,WOpfɣ=2Uۥ28ӊTBw]o)!W&֨>Q s0Z`M$vʔe\0B=]ېA\ݩlǣŁ%g4Ѫ~RЄ[)`WADJHI=#5?FgY|z{8~oYz{ HeI 2Ne)мlŸͻw7o)݋y6SCҒ*S-aR"~s 4(7 endstream endobj 111 0 obj << /Font << /F36 76 0 R /F35 77 0 R /F8 25 0 R >> /ProcSet [/PDF /Text] >> endobj 112 0 obj << /Parent 75 0 R /Resources << /XObject << /Xi6 1 0 R >> /Font << /F36 76 0 R /F35 77 0 R /F8 25 0 R >> /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] >> /MediaBox [0 0 595.276 841.89] /Type /Page /Contents [4 0 R 113 0 R 5 0 R] >> endobj 75 0 obj << /Parent 60 0 R /Kids [112 0 R 114 0 R] /Type /Pages /Count 2 >> endobj 113 0 obj << /Filter /FlateDecode /Length 3048 >> stream x]o6ݿbߪbE{khq zw5/Zɕg|wTRG1E|ϐ",,\d_}j{~¤,VЎ¸,W atX/uɝqi]"X[.h2]]" \b?\])VeXW7R\Pdj{n2aQ,FR]ꗋWv3Gag+g#n\y?ֈhFB)i\Kdc dN[Bl0,q('%27$]jwˤHwW 8?mlER@s9Ɣ0F$agc`[BQ,,['\JGWҨb@œu c@D8E>͙stru[YT- Yݞ,jpTwU?rhaѬ<AU#fnUZUH68!`t= av2MAOkP{whYD=Ai&7ڰFЛC][/=iW{3 H9Pџ5:0V!WoM+L;=I_x[}q nzȶ7jʂc,(rQ)6m NO/>дvcL= U$Xiړ@؀ܹ]2ǻ۷4 ϻ ?׀L5#, 3U`?aRwQ:Axp[4Aq%絇X B٢8 uLLS6 23&vK.M.cϜڥ2 E'A}}M١hnX֠Uj(V-Ap{IWA{^a6jDǓm'"8b"ʶdVf#iÊVڜ|PWN;t) ~r0X |8xyP0u?V+3,&^}V-s}H{DOM=Fh =h<\vN`gJ4'dx6Ԧnxɱ=ؐ *S @9ҡh\{l=w |HnSH[=R-0KKh&W4B Zc8ROFg#1Fs«~ 썲9V/KhZ,7;XJWsV2` C?es ,d;1U͖yq;¸i~MpNq2jylԮAtNcD1 7[ӷW5adY[c`Kƴ6⑇u}1G9-E^zA(Y0)e4p x \ bNAp$=@V[z*:,Pz9UEd%h=v;I0< a +N^W yA_&Z$Eh&R׏\A,(bR;5_]Sx h58TE`{j Ίk c[ ` c$ZGDrc+Z\;.eT "Y\1ym @udHa ]ae"4+΃﷔iSh BAS"Xܔr5](.Q`q}FljJ)hՐ8t(au8*d9>,n, BlymPhڣ^qL0ӷ~R\]%'>{)g쪋'"J'֒0))D4wQzE 0Ih p3=,q+-t-esi88^WF]=/VzgL\ ok@. }p$ɾIƱzM;V_f}I=o0ɻjOk/KesR2N~4g=vCGǧPpB- ;,!sYtf+|Cgе KW(E[6TӊOd[6ɭ&дŷ?JE$>L! N _}7@(EGY&Yl$Mqn5 ܦ~M1O w,FrrznNX'%"mvtD O]g6"ne8yh1 dߛ@:Oo;.5-|sz׋E1N佧'aBe_{dK$ A$Ku^M@y^ )uFBc$H% $g$ߐl8,!~88th_r12)[/aȽ.!zltH}Y-C|4@XG؊,\+}V#T_)J/a] _aK=I11ν'*F7:Myxc6>Ńpzac\x a/#Bx=Eb“j_ۼK2Gۊ7YHT?fQvFn W$XE/tFs}MNmySUd ͸.,3n젗=ߎq1hiw`(w _ؗIIyE7goazhF%'Xia5#:t8+<6]n=rt {pE,e֎3&ngfPW3"ǧ,|ٖZɷ;qQ&0+0 ;S+["垧q@-[/v۪haդ?9F' {IITWIef%!]] ;Wa endstream endobj 114 0 obj << /Parent 75 0 R /Resources << /XObject << /Xi7 1 0 R >> /Font << /F36 76 0 R /F35 77 0 R /F8 25 0 R >> /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] >> /MediaBox [0 0 595.276 841.89] /Type /Page /Contents [10 0 R 115 0 R 11 0 R] >> endobj 116 0 obj << /Font << /F36 76 0 R /F35 77 0 R /F8 25 0 R >> /ProcSet [/PDF /Text] >> endobj 115 0 obj << /Filter /FlateDecode /Length 3191 >> stream x[[o8~ϯ 4I)i_@lyVZv*i\xs,VAX&);w:^D/riD*X5g+ZϢgQ(|0.Es*,7gsι(@f(da 4'Ipiay)+ B n#K'i `qkpq%B(3y1E}]`Zmu׹Cު\^ V8(#B/_D:uBa3wi/~mN`҄;m|PTc8RE;rUil|.Ww`/ ?w4ii$Ql6D|_pthRc]n/0጗lvr˾ަT˻1v&cYKptQlBFYN$ +^x:f־UG ^XJTw㵟[[oA=;YHα3 GN:PTR?;95'8[#8~vn3pY]).Q>ku[$9 Y/:AybxߚTd͐5E9v3]* d,8s9J5nf_9 y(2Ecu$͠$'8Jr$R41XkP^Y8UI?93;B0I%!0<f+=w$ԙ Ƙ6~Q#rllܽdɘr[*}([W-oufAq 8qc.SU *?]^m SSmMXRP&~r)KQ M1%"N3/h$rdh[cA\RM`Os}FZ(]4īoO~[W89md;`.tYqUǪ'\5Q0bKB["RXn$:_-?h?^EBÎğrW}'*C;XT[DYXzUn6X-7ugK ś8-3ٻW0@a̅?"R5~O,SD" DrY endstream endobj 117 0 obj << /Pages 60 0 R /Type /Catalog >> endobj 118 0 obj << /Creator (Nature Precedings) /Title (Minimum Information about a Neuroscience Investigation \(MINI\) Electrophysiology\r) /Producer (pdfeTeX-1.30.5) /Author (Frank Gibson) /PTEX.Fullbanner (This is pdfeTeX using libpoppler, Version 3.141592-1.30.5-2.2 \(Web2C 7.5.5\) kpathsea version 3.5.5) /CreationDate (D:20080325152449Z) >> endobj xref 0 119 0000000000 65535 f 0000000015 00000 n 0000000365 00000 n 0000000474 00000 n 0000000503 00000 n 0000000587 00000 n 0000000709 00000 n 0000000793 00000 n 0000000915 00000 n 0000000999 00000 n 0000001121 00000 n 0000001206 00000 n 0000001329 00000 n 0000001414 00000 n 0000001537 00000 n 0000001622 00000 n 0000001745 00000 n 0000001830 00000 n 0000001953 00000 n 0000002038 00000 n 0000002161 00000 n 0000002327 00000 n 0000002486 00000 n 0000002642 00000 n 0000002798 00000 n 0000002955 00000 n 0000003114 00000 n 0000003272 00000 n 0000003432 00000 n 0000003594 00000 n 0000050314 00000 n 0000041898 00000 n 0000050666 00000 n 0000052780 00000 n 0000051173 00000 n 0000052803 00000 n 0000024474 00000 n 0000022889 00000 n 0000024497 00000 n 0000041708 00000 n 0000038263 00000 n 0000041763 00000 n 0000068469 00000 n 0000052896 00000 n 0000068859 00000 n 0000037494 00000 n 0000024590 00000 n 0000037816 00000 n 0000022275 00000 n 0000015793 00000 n 0000022536 00000 n 0000015106 00000 n 0000007622 00000 n 0000015367 00000 n 0000075111 00000 n 0000069475 00000 n 0000075416 00000 n 0000003754 00000 n 0000004078 00000 n 0000004189 00000 n 0000075825 00000 n 0000075893 00000 n 0000076159 00000 n 0000076437 00000 n 0000076715 00000 n 0000076969 00000 n 0000007927 00000 n 0000016076 00000 n 0000023103 00000 n 0000024988 00000 n 0000038502 00000 n 0000042259 00000 n 0000051386 00000 n 0000053387 00000 n 0000069763 00000 n 0000135061 00000 n 0000077327 00000 n 0000077487 00000 n 0000077647 00000 n 0000099217 00000 n 0000099375 00000 n 0000111605 00000 n 0000111443 00000 n 0000111767 00000 n 0000129824 00000 n 0000131512 00000 n 0000077221 00000 n 0000098372 00000 n 0000088463 00000 n 0000098693 00000 n 0000087763 00000 n 0000081165 00000 n 0000087988 00000 n 0000081468 00000 n 0000088775 00000 n 0000099099 00000 n 0000110617 00000 n 0000101898 00000 n 0000110884 00000 n 0000102222 00000 n 0000111324 00000 n 0000129200 00000 n 0000123046 00000 n 0000129374 00000 n 0000122324 00000 n 0000113739 00000 n 0000122596 00000 n 0000114062 00000 n 0000123290 00000 n 0000129729 00000 n 0000131417 00000 n 0000134712 00000 n 0000134807 00000 n 0000135146 00000 n 0000138272 00000 n 0000138623 00000 n 0000138528 00000 n 0000141892 00000 n 0000141946 00000 n trailer << /Info 118 0 R /Root 117 0 R /Size 119 /ID [<4c4ec2efb45cf80e907952f49c23a4da> <4c4ec2efb45cf80e907952f49c23a4da>] >> startxref 142430 %%EOF LTS5-cfflib-9a123ae/doc/source/000077500000000000000000000000001156222202000161305ustar00rootroot00000000000000LTS5-cfflib-9a123ae/doc/source/api/000077500000000000000000000000001156222202000167015ustar00rootroot00000000000000LTS5-cfflib-9a123ae/doc/source/api/cfflib.util.rst000066400000000000000000000001531156222202000216330ustar00rootroot00000000000000===================== cfflib.util reference ===================== .. automodule:: cfflib.util :members:LTS5-cfflib-9a123ae/doc/source/api/gen.rst000066400000000000000000000001431156222202000202020ustar00rootroot00000000000000================ cfflib reference ================ .. toctree:: :maxdepth: 2 cfflib.utilLTS5-cfflib-9a123ae/doc/source/conf.py000066400000000000000000000145531156222202000174370ustar00rootroot00000000000000# -*- coding: utf-8 -*- # # Connectome File Format Library documentation build configuration file, created by # sphinx-quickstart on Tue Oct 19 09:53:08 2010. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. sys.path.append(os.path.abspath('sphinxext')) sys.path.append(os.path.abspath('../../cfflib')) # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = [# 'sphinx.ext.autodoc' 'math_dollar'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'Connectome File Format Library' copyright = u'2010, EPFL & UNIL-CHUV' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '2.0' # The full version, including alpha/beta/rc tags. release = '2.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. #unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = [] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'sphinxdoc' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'ConnectomeFileFormatLibrarydoc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'ConnectomeFileFormatLibrary.tex', u'Connectome File Format Library Documentation', u'Stephan Gerhard', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True LTS5-cfflib-9a123ae/doc/source/createconnectomefile.rst000066400000000000000000000271731156222202000230520ustar00rootroot00000000000000How to create a Connectome File ******************************* This short tutorial will give you the basics in creating a new connectome file with the **cfflib 2.0**. Create the connectome object ============================ First of all you need to import the library:: from cfflib import * Then your first command will be:: myConnectome = connectome() in order to have a connectome object. You can specify here a name for your connectome object (see the *connectome metadata* section for more details) when you create it :: myConnectome = connectome('1st connectome') To get some informations about this new object you can try:: myConnectome myConnectome.get_all() The first line is just to show that you have a connectome object, the function ``get_all()`` return all connectome's objects mixed, for now its output is empty. You can also get a summary of the content of you connectome object with:: myConnectome.print_summary() which will return some metadata and statistics about this connectome object and a short description of each CObject in it. The connectome metadata ======================= The connectome's metadata are required by the connectome object. The initialisation of a connectome object will create a connectome metadata object with the default values of required attributes - unless you specified a name - but you can modifiy it to get your specific CMetadata object :: myMetadata = myConnectome.get_connectome_meta() you are able to add a lot of informations to this object but three are required: - *title* : the unique name of your connectome object, by default **myconnectome** - *version* : the version of the Connectome Markup Language used, by default **2.0** - *generator* : the generator of the connectome object, by default **cfflib** For example the followings:: myMetadata.set_title('My first connectome') myMetadata.set_species('Homo Sapiens') myMetadata.set_creator('Connectome Tutorial') myMetadata.set_email('yourname@epfl.ch') myMetadata.set_created('2010-10-26') myMetadata.set_modified('2011-02-24') myMetadata.set_description('First connectome object created with the tutorial.') Save to file ============ After these first creations, we want to get a look at the output file this object will produce. There are two methods to save your object to file:: save_to_cff(myConnectome, '/your/wanted/path/myConnectome.cff') save_to_meta_cml(myConnectome, '/your/wanted/path/meta.cml') The first one will save the connectome object to a compressed CFF file and the second one will just save in a CML file. Open the created CML file. You can see a first tag named *connectome* which is your connectome object. Inside, you should find your connectome metadata surrounded by the *connectome-meta* tag. More precisely, your meta.cml file should look like this one:: My first connectome Connectome Tutorial 2010-10-26 2011-02-24 First connectome object created with the tutorial. cfflib yourname@epfl.ch Load from file ============== To retrieve your connectome object you can load from the previous saved file. Here again, there are two methods to do it, one for the CFF file and one for the CML:: myConnectomeFromMeta = load('/your/wanted/path/meta.cml') myConnectomeFromCFF = load('/your/wanted/path/myconnectome.cff') Add a network ============= To add a network to your connectome object, you have to create a **CNetwork** object. This object has three required parameters: - *name* : the unique name of this network, **mynetwork** by default - *fileformat* : the fileformat of the network, which can be : - **GraphML**, by default - *GEXF* - *NXGPickle* - *Other* - *dtype* : the data type of the network, which can be : - **AttributeNetwork**, by default - *DynamicNetwork* - *HierarchicalNetwork* - *Other* You can create a new CNetwork like this:: myCNetwork = CNetwork('My First CNetwork') On the exemple above, the CNetwork is created with a specified name and the default values for the two others required parameters. You can specified some other attributes: - *src* : the source file of the network - *description* : a description of the network - *metadata* : some meta data of the network From a NetworkX object ---------------------- Now, assume that you want to add an existing NetworkX graph to your CNetwork object. First, we'll create a basic NetworkX graph:: import networkx as nx myNetworkx = nx.Graph() myNetworkx.add_node(0) myNetworkx.add_node(1) myNetworkx.add_node(2) myNetworkx.add_edge(0,1) myNetworkx.add_edge(1,2) Then we can set our CNetwork object with this graph:: myCNetwork.set_with_nxgraph(myNetworkx) Finally, we add the CNetwork to our connectome object:: myConnectome.add_connectome_network(myCNetwork) You can add a CNetwork object based on a NetworkX graph directly from the connectome with this function:: myConnectome.add_connectome_network_from_nxgraph(myNetworkx, 'My first CNetwork') .. warning:: When you add a CNetwork, but it's true for any CObject, to your connectome, the name of your object is checked and has to be unique. If not, an error will be return and the CObject will not be added to the connectome. Now, you can try again *myConnectome.get_all()* function, it should return something like:: [] You can access and modifiy this CNetwork object:: myConnectome.get_connectome_network()[0].set_description('A first CNetwork created with the tutorial') for example, this function will add a description to this CNetwork. From a GraphML file ------------------- It is possible to create a CNetwork from a GraphML file. There are two ways to do it: 1. first create a CNetwork from the GraphML and then add it to the connectome:: my2ndCNetwork = CNetwork.create_from_graphml('My GraphML network', 'your/path/to/graph.graphml') myConnectome.add_connectome_network(my2ndCNetwork) 2. directly add a CNetwork based on the GraphML file from the connectome:: myConnectome.add_connectome_network_from_graphml('My GraphML network', 'your/path/to/graph.graphml') After you used one of the methods above, if you ask again the connectome for its objects:: myConnectome.get_all() You should get two CNetwork. Add metadata to a CObject ========================= We already saw that we can add some metadata to the connectome object with CMetadata. In fact, it is possible to add some metadata to any CObject, for example to a CNetwork object. That's what we're going to do in this section with the **Metadata** object. First, we need a reference on the wanted CObject, here the previous CNetwork object, to make things easier:: myCN = myConnectome.get_connectome_network()[0] We can add some metadata to this object by using a dictionary structure:: myCN.update_metadata({'sd':1234}) this command will create the Metadata object and add the key *sd* with the value *1234*. You can use a dictionary of the length you want. You can try to get back this dictionary with :: myCN.get_metadata_as_dict() At this point, we can try to save again our connectome to check the CML:: save_to_meta_cml(myConnectome, '/your/wanted/path/meta.cml') The output file should look like:: My first connectome Connectome Tutorial 2010-10-26 2011-02-24 First connectome object created with the tutorial. cfflib yourname@epfl.ch 1234 A first CNetwork created with the tutorial Now you can see there are two new blocks with the tag *connectome-network* which are the added CNetwork with the given attributes. The first one is the CNetwork added from the NetworkX object and contains the metadata and the description. The second one is the one created from the GraphML file. Add a volume ============ To add a volume to your connectome object, you have to use a CVolume object. This object has the following parameters: - *name* : **'myvolume'**, the unique name of the volume - *dtype* : string, optional, the data type of the volume. It can be: 'Segmentation', 'T1-weighted', 'T2-weighted', 'PD-weighted', 'fMRI', 'MD', 'FA', 'LD', 'TD', 'FLAIR', 'MRA' or 'MRS depending on your dataset. - *fileformat* : **'Nifti1'**, the fileformat of the volume. Only 'Nifti1' is supported, its compressed version '.nii.gz' too. - *src* : string, optional, the source file of the volume - *description* : string, optional, A description according to the format attribute syntax. - *metadataDict* : dictionary, optional, More metadata relative to the volume as a dictionary First create a CVolume from a Nifti file and then add it to the connectome object:: cv = CVolume.create_from_nifti('My first volume', 'T1.nii.gz') # Path to the nifti1 file myConnectome.add_connectome_volume(cv) Again, you can add some more informations with the description and the metadata:: cv.set_description('A first CVolume created with the cfflib tutorial') cv.update_metadata({'meta1': 123}) Other objects ============= You can display the docstring of the other connectome objects to see how to create, manipulate and store them. The procedures are very similar. If you need more working code to get you started, you can look into the `tests `_. .. note :: Example connectome files are provided in the GitHub repository `cffdata `_.LTS5-cfflib-9a123ae/doc/source/docstring.rst000066400000000000000000000007301156222202000206560ustar00rootroot00000000000000================ Docstring format ================ Docstrings for the cfflib follow a relative fixed format which is the following:: Short description of the function Parameters ---------- input name: possible values description Examples -------- Some use cases See also -------- Related topics or functions This format have been inspired by the NumPy one. Example:: LTS5-cfflib-9a123ae/doc/source/index.rst000066400000000000000000000034441156222202000177760ustar00rootroot00000000000000.. Connectome File Format Library documentation master file, created by sphinx-quickstart on Tue Oct 19 09:53:08 2010. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. Connectome File Format Library ============================== The Connectome File Format Library (cfflib) is a pure Python library for multi-modal connectome data and metadata management and integration, based on the specification of the Connectome File Format (CFF). The cfflib provides a high-level interface to many common data formats by using `Nibabel `_ for basic neuroimaging data format IO, and NumPy and the Python standard-library for other formats. The Connectome File Format provides means to store arbitrary metadata as tags and in structured form for any so-called connectome object. Connectome objects encapsulate the various data types as they occur in connectome research. * CMetadata: Connectome Markup Language (XML) * CNetwork: Networks, Connectomes (GraphML, GEXF, NXGPickle) * CSurface: Surface data (Gifti) * CVolume: Volumetric data (Nifti1, Nifti1GZ) * CTrack: Fiber track data (TrackVis) * CTimeseries: Timeseries data (HDF5, NumPy) * CData: Other data, like tables (HDF5, NumPy, XML, JSON, CSV, Pickle) * CScript: Processing and analysis scripts (ASCII, UTF-8, UTF-16) * CImagestack: Imagestacks (PNG, JPG, TIFF, SVG) The Connectome Markup Language was developed without knowing about the existence of the `"Chemical Markup Language" `_. Both markup languages using the same abbreviation *CML* to denote their namespace. Contents: .. toctree:: :maxdepth: 2 installation tutorial createconnectomefile Indices and tables ================== * :ref:`genindex` * :ref:`modindex` * :ref:`search` LTS5-cfflib-9a123ae/doc/source/installation.rst000066400000000000000000000013501156222202000213620ustar00rootroot00000000000000============================================== Installation of Connectome File Format Library ============================================== .. note:: Very soon, a release version will be provided through `NeuroDebian `_ For development, you can clone or fork the library from GitHub:: git clone git@github.com:LTS5/cfflib.git And then do a install in the cloned folder:: sudo python setup.py install Be aware that for the successfull loading of different connectome objects, you need to have the corresponding Python libraries installed. Here are the dependencies: * NetworkX >= 1.4 (GraphML, NXGPickle, GEXF) * Nibabel >= 1.1.0 (Nifti1, Gifti, TrackVis) * NumPy (NumPy arrays) * PyTables (optional, HDF5) LTS5-cfflib-9a123ae/doc/source/sphinxext/000077500000000000000000000000001156222202000201625ustar00rootroot00000000000000LTS5-cfflib-9a123ae/doc/source/sphinxext/README.txt000066400000000000000000000014671156222202000216700ustar00rootroot00000000000000=================== Sphinx Extensions =================== We've copied these sphinx extensions over from nipy-core. Any edits should be done upstream in nipy-core, not here in nitime! These are a few sphinx extensions we are using to build the nipy documentation. In this file we list where they each come from, since we intend to always push back upstream any modifications or improvements we make to them. It's worth noting that some of these are being carried (as copies) by more than one project. Hopefully once they mature a little more, they will be incorproated back into sphinx itself, so that all projects can use a common base. * From numpy: * docscrape.py * docscrape_sphinx.py * numpydoc.py * From matplotlib: * inheritance_diagram.py * ipython_console_highlighting.py * only_directives.py LTS5-cfflib-9a123ae/doc/source/sphinxext/docscrape.py000066400000000000000000000347661156222202000225170ustar00rootroot00000000000000"""Extract reference documentation from the NumPy source tree. """ import inspect import textwrap import re import pydoc from StringIO import StringIO from warnings import warn 4 class Reader(object): """A line-based string reader. """ def __init__(self, data): """ Parameters ---------- data : str String with lines separated by '\n'. """ if isinstance(data,list): self._str = data else: self._str = data.split('\n') # store string as list of lines self.reset() def __getitem__(self, n): return self._str[n] def reset(self): self._l = 0 # current line nr def read(self): if not self.eof(): out = self[self._l] self._l += 1 return out else: return '' def seek_next_non_empty_line(self): for l in self[self._l:]: if l.strip(): break else: self._l += 1 def eof(self): return self._l >= len(self._str) def read_to_condition(self, condition_func): start = self._l for line in self[start:]: if condition_func(line): return self[start:self._l] self._l += 1 if self.eof(): return self[start:self._l+1] return [] def read_to_next_empty_line(self): self.seek_next_non_empty_line() def is_empty(line): return not line.strip() return self.read_to_condition(is_empty) def read_to_next_unindented_line(self): def is_unindented(line): return (line.strip() and (len(line.lstrip()) == len(line))) return self.read_to_condition(is_unindented) def peek(self,n=0): if self._l + n < len(self._str): return self[self._l + n] else: return '' def is_empty(self): return not ''.join(self._str).strip() class NumpyDocString(object): def __init__(self,docstring): docstring = textwrap.dedent(docstring).split('\n') self._doc = Reader(docstring) self._parsed_data = { 'Signature': '', 'Summary': [''], 'Extended Summary': [], 'Parameters': [], 'Returns': [], 'Raises': [], 'Warns': [], 'Other Parameters': [], 'Attributes': [], 'Methods': [], 'See Also': [], 'Notes': [], 'Warnings': [], 'References': '', 'Examples': '', 'index': {} } self._parse() def __getitem__(self,key): return self._parsed_data[key] def __setitem__(self,key,val): if not self._parsed_data.has_key(key): warn("Unknown section %s" % key) else: self._parsed_data[key] = val def _is_at_section(self): self._doc.seek_next_non_empty_line() if self._doc.eof(): return False l1 = self._doc.peek().strip() # e.g. Parameters if l1.startswith('.. index::'): return True l2 = self._doc.peek(1).strip() # ---------- or ========== return l2.startswith('-'*len(l1)) or l2.startswith('='*len(l1)) def _strip(self,doc): i = 0 j = 0 for i,line in enumerate(doc): if line.strip(): break for j,line in enumerate(doc[::-1]): if line.strip(): break return doc[i:len(doc)-j] def _read_to_next_section(self): section = self._doc.read_to_next_empty_line() while not self._is_at_section() and not self._doc.eof(): if not self._doc.peek(-1).strip(): # previous line was empty section += [''] section += self._doc.read_to_next_empty_line() return section def _read_sections(self): while not self._doc.eof(): data = self._read_to_next_section() name = data[0].strip() if name.startswith('..'): # index section yield name, data[1:] elif len(data) < 2: yield StopIteration else: yield name, self._strip(data[2:]) def _parse_param_list(self,content): r = Reader(content) params = [] while not r.eof(): header = r.read().strip() if ' : ' in header: arg_name, arg_type = header.split(' : ')[:2] else: arg_name, arg_type = header, '' desc = r.read_to_next_unindented_line() desc = dedent_lines(desc) params.append((arg_name,arg_type,desc)) return params _name_rgx = re.compile(r"^\s*(:(?P\w+):`(?P[a-zA-Z0-9_.-]+)`|" r" (?P[a-zA-Z0-9_.-]+))\s*", re.X) def _parse_see_also(self, content): """ func_name : Descriptive text continued text another_func_name : Descriptive text func_name1, func_name2, :meth:`func_name`, func_name3 """ items = [] def parse_item_name(text): """Match ':role:`name`' or 'name'""" m = self._name_rgx.match(text) if m: g = m.groups() if g[1] is None: return g[3], None else: return g[2], g[1] raise ValueError("%s is not a item name" % text) def push_item(name, rest): if not name: return name, role = parse_item_name(name) items.append((name, list(rest), role)) del rest[:] current_func = None rest = [] for line in content: if not line.strip(): continue m = self._name_rgx.match(line) if m and line[m.end():].strip().startswith(':'): push_item(current_func, rest) current_func, line = line[:m.end()], line[m.end():] rest = [line.split(':', 1)[1].strip()] if not rest[0]: rest = [] elif not line.startswith(' '): push_item(current_func, rest) current_func = None if ',' in line: for func in line.split(','): push_item(func, []) elif line.strip(): current_func = line elif current_func is not None: rest.append(line.strip()) push_item(current_func, rest) return items def _parse_index(self, section, content): """ .. index: default :refguide: something, else, and more """ def strip_each_in(lst): return [s.strip() for s in lst] out = {} section = section.split('::') if len(section) > 1: out['default'] = strip_each_in(section[1].split(','))[0] for line in content: line = line.split(':') if len(line) > 2: out[line[1]] = strip_each_in(line[2].split(',')) return out def _parse_summary(self): """Grab signature (if given) and summary""" if self._is_at_section(): return summary = self._doc.read_to_next_empty_line() summary_str = " ".join([s.strip() for s in summary]).strip() if re.compile('^([\w., ]+=)?\s*[\w\.]+\(.*\)$').match(summary_str): self['Signature'] = summary_str if not self._is_at_section(): self['Summary'] = self._doc.read_to_next_empty_line() else: self['Summary'] = summary if not self._is_at_section(): self['Extended Summary'] = self._read_to_next_section() def _parse(self): self._doc.reset() self._parse_summary() for (section,content) in self._read_sections(): if not section.startswith('..'): section = ' '.join([s.capitalize() for s in section.split(' ')]) if section in ('Parameters', 'Attributes', 'Methods', 'Returns', 'Raises', 'Warns'): self[section] = self._parse_param_list(content) elif section.startswith('.. index::'): self['index'] = self._parse_index(section, content) elif section == 'See Also': self['See Also'] = self._parse_see_also(content) else: self[section] = content # string conversion routines def _str_header(self, name, symbol='-'): return [name, len(name)*symbol] def _str_indent(self, doc, indent=4): out = [] for line in doc: out += [' '*indent + line] return out def _str_signature(self): if self['Signature']: return [self['Signature'].replace('*','\*')] + [''] else: return [''] def _str_summary(self): if self['Summary']: return self['Summary'] + [''] else: return [] def _str_extended_summary(self): if self['Extended Summary']: return self['Extended Summary'] + [''] else: return [] def _str_param_list(self, name): out = [] if self[name]: out += self._str_header(name) for param,param_type,desc in self[name]: out += ['%s : %s' % (param, param_type)] out += self._str_indent(desc) out += [''] return out def _str_section(self, name): out = [] if self[name]: out += self._str_header(name) out += self[name] out += [''] return out def _str_see_also(self, func_role): if not self['See Also']: return [] out = [] out += self._str_header("See Also") last_had_desc = True for func, desc, role in self['See Also']: if role: link = ':%s:`%s`' % (role, func) elif func_role: link = ':%s:`%s`' % (func_role, func) else: link = "`%s`_" % func if desc or last_had_desc: out += [''] out += [link] else: out[-1] += ", %s" % link if desc: out += self._str_indent([' '.join(desc)]) last_had_desc = True else: last_had_desc = False out += [''] return out def _str_index(self): idx = self['index'] out = [] out += ['.. index:: %s' % idx.get('default','')] for section, references in idx.iteritems(): if section == 'default': continue out += [' :%s: %s' % (section, ', '.join(references))] return out def __str__(self, func_role=''): out = [] out += self._str_signature() out += self._str_summary() out += self._str_extended_summary() for param_list in ('Parameters','Returns','Raises'): out += self._str_param_list(param_list) out += self._str_section('Warnings') out += self._str_see_also(func_role) for s in ('Notes','References','Examples'): out += self._str_section(s) out += self._str_index() return '\n'.join(out) def indent(str,indent=4): indent_str = ' '*indent if str is None: return indent_str lines = str.split('\n') return '\n'.join(indent_str + l for l in lines) def dedent_lines(lines): """Deindent a list of lines maximally""" return textwrap.dedent("\n".join(lines)).split("\n") def header(text, style='-'): return text + '\n' + style*len(text) + '\n' class FunctionDoc(NumpyDocString): def __init__(self, func, role='func', doc=None): self._f = func self._role = role # e.g. "func" or "meth" if doc is None: doc = inspect.getdoc(func) or '' try: NumpyDocString.__init__(self, doc) except ValueError, e: print '*'*78 print "ERROR: '%s' while parsing `%s`" % (e, self._f) print '*'*78 #print "Docstring follows:" #print doclines #print '='*78 if not self['Signature']: func, func_name = self.get_func() try: # try to read signature argspec = inspect.getargspec(func) argspec = inspect.formatargspec(*argspec) argspec = argspec.replace('*','\*') signature = '%s%s' % (func_name, argspec) except TypeError, e: signature = '%s()' % func_name self['Signature'] = signature def get_func(self): func_name = getattr(self._f, '__name__', self.__class__.__name__) if inspect.isclass(self._f): func = getattr(self._f, '__call__', self._f.__init__) else: func = self._f return func, func_name def __str__(self): out = '' func, func_name = self.get_func() signature = self['Signature'].replace('*', '\*') roles = {'func': 'function', 'meth': 'method'} if self._role: if not roles.has_key(self._role): print "Warning: invalid role %s" % self._role out += '.. %s:: %s\n \n\n' % (roles.get(self._role,''), func_name) out += super(FunctionDoc, self).__str__(func_role=self._role) return out class ClassDoc(NumpyDocString): def __init__(self,cls,modulename='',func_doc=FunctionDoc,doc=None): if not inspect.isclass(cls): raise ValueError("Initialise using a class. Got %r" % cls) self._cls = cls if modulename and not modulename.endswith('.'): modulename += '.' self._mod = modulename self._name = cls.__name__ self._func_doc = func_doc if doc is None: doc = pydoc.getdoc(cls) NumpyDocString.__init__(self, doc) @property def methods(self): return [name for name,func in inspect.getmembers(self._cls) if not name.startswith('_') and callable(func)] def __str__(self): out = '' out += super(ClassDoc, self).__str__() out += "\n\n" #for m in self.methods: # print "Parsing `%s`" % m # out += str(self._func_doc(getattr(self._cls,m), 'meth')) + '\n\n' # out += '.. index::\n single: %s; %s\n\n' % (self._name, m) return out LTS5-cfflib-9a123ae/doc/source/sphinxext/docscrape_sphinx.py000066400000000000000000000102071156222202000240700ustar00rootroot00000000000000import re, inspect, textwrap, pydoc from docscrape import NumpyDocString, FunctionDoc, ClassDoc class SphinxDocString(NumpyDocString): # string conversion routines def _str_header(self, name, symbol='`'): return ['.. rubric:: ' + name, ''] def _str_field_list(self, name): return [':' + name + ':'] def _str_indent(self, doc, indent=4): out = [] for line in doc: out += [' '*indent + line] return out def _str_signature(self): return [''] if self['Signature']: return ['``%s``' % self['Signature']] + [''] else: return [''] def _str_summary(self): return self['Summary'] + [''] def _str_extended_summary(self): return self['Extended Summary'] + [''] def _str_param_list(self, name): out = [] if self[name]: out += self._str_field_list(name) out += [''] for param,param_type,desc in self[name]: out += self._str_indent(['**%s** : %s' % (param.strip(), param_type)]) out += [''] out += self._str_indent(desc,8) out += [''] return out def _str_section(self, name): out = [] if self[name]: out += self._str_header(name) out += [''] content = textwrap.dedent("\n".join(self[name])).split("\n") out += content out += [''] return out def _str_see_also(self, func_role): out = [] if self['See Also']: see_also = super(SphinxDocString, self)._str_see_also(func_role) out = ['.. seealso::', ''] out += self._str_indent(see_also[2:]) return out def _str_warnings(self): out = [] if self['Warnings']: out = ['.. warning::', ''] out += self._str_indent(self['Warnings']) return out def _str_index(self): idx = self['index'] out = [] if len(idx) == 0: return out out += ['.. index:: %s' % idx.get('default','')] for section, references in idx.iteritems(): if section == 'default': continue elif section == 'refguide': out += [' single: %s' % (', '.join(references))] else: out += [' %s: %s' % (section, ','.join(references))] return out def _str_references(self): out = [] if self['References']: out += self._str_header('References') if isinstance(self['References'], str): self['References'] = [self['References']] out.extend(self['References']) out += [''] return out def __str__(self, indent=0, func_role="obj"): out = [] out += self._str_signature() out += self._str_index() + [''] out += self._str_summary() out += self._str_extended_summary() for param_list in ('Parameters', 'Attributes', 'Methods', 'Returns','Raises'): out += self._str_param_list(param_list) out += self._str_warnings() out += self._str_see_also(func_role) out += self._str_section('Notes') out += self._str_references() out += self._str_section('Examples') out = self._str_indent(out,indent) return '\n'.join(out) class SphinxFunctionDoc(SphinxDocString, FunctionDoc): pass class SphinxClassDoc(SphinxDocString, ClassDoc): pass def get_doc_object(obj, what=None, doc=None): if what is None: if inspect.isclass(obj): what = 'class' elif inspect.ismodule(obj): what = 'module' elif callable(obj): what = 'function' else: what = 'object' if what == 'class': return SphinxClassDoc(obj, '', func_doc=SphinxFunctionDoc, doc=doc) elif what in ('function', 'method'): return SphinxFunctionDoc(obj, '', doc=doc) else: if doc is None: doc = pydoc.getdoc(obj) return SphinxDocString(doc) LTS5-cfflib-9a123ae/doc/source/sphinxext/inheritance_diagram.py000066400000000000000000000325561156222202000245240ustar00rootroot00000000000000""" Defines a docutils directive for inserting inheritance diagrams. Provide the directive with one or more classes or modules (separated by whitespace). For modules, all of the classes in that module will be used. Example:: Given the following classes: class A: pass class B(A): pass class C(A): pass class D(B, C): pass class E(B): pass .. inheritance-diagram: D E Produces a graph like the following: A / \ B C / \ / E D The graph is inserted as a PNG+image map into HTML and a PDF in LaTeX. """ import inspect import os import re import subprocess try: from hashlib import md5 except ImportError: from md5 import md5 from docutils.nodes import Body, Element from docutils.parsers.rst import directives from sphinx.roles import xfileref_role def my_import(name): """Module importer - taken from the python documentation. This function allows importing names with dots in them.""" mod = __import__(name) components = name.split('.') for comp in components[1:]: mod = getattr(mod, comp) return mod class DotException(Exception): pass class InheritanceGraph(object): """ Given a list of classes, determines the set of classes that they inherit from all the way to the root "object", and then is able to generate a graphviz dot graph from them. """ def __init__(self, class_names, show_builtins=False): """ *class_names* is a list of child classes to show bases from. If *show_builtins* is True, then Python builtins will be shown in the graph. """ self.class_names = class_names self.classes = self._import_classes(class_names) self.all_classes = self._all_classes(self.classes) if len(self.all_classes) == 0: raise ValueError("No classes found for inheritance diagram") self.show_builtins = show_builtins py_sig_re = re.compile(r'''^([\w.]*\.)? # class names (\w+) \s* $ # optionally arguments ''', re.VERBOSE) def _import_class_or_module(self, name): """ Import a class using its fully-qualified *name*. """ try: path, base = self.py_sig_re.match(name).groups() except: raise ValueError( "Invalid class or module '%s' specified for inheritance diagram" % name) fullname = (path or '') + base path = (path and path.rstrip('.')) if not path: path = base try: module = __import__(path, None, None, []) # We must do an import of the fully qualified name. Otherwise if a # subpackage 'a.b' is requested where 'import a' does NOT provide # 'a.b' automatically, then 'a.b' will not be found below. This # second call will force the equivalent of 'import a.b' to happen # after the top-level import above. my_import(fullname) except ImportError: raise ValueError( "Could not import class or module '%s' specified for inheritance diagram" % name) try: todoc = module for comp in fullname.split('.')[1:]: todoc = getattr(todoc, comp) except AttributeError: raise ValueError( "Could not find class or module '%s' specified for inheritance diagram" % name) # If a class, just return it if inspect.isclass(todoc): return [todoc] elif inspect.ismodule(todoc): classes = [] for cls in todoc.__dict__.values(): if inspect.isclass(cls) and cls.__module__ == todoc.__name__: classes.append(cls) return classes print 'todoc?',todoc raise ValueError( "'%s' does not resolve to a class or module" % name) def _import_classes(self, class_names): """ Import a list of classes. """ classes = [] for name in class_names: classes.extend(self._import_class_or_module(name)) return classes def _all_classes(self, classes): """ Return a list of all classes that are ancestors of *classes*. """ all_classes = {} def recurse(cls): all_classes[cls] = None for c in cls.__bases__: if c not in all_classes: recurse(c) for cls in classes: recurse(cls) return all_classes.keys() def class_name(self, cls, parts=0): """ Given a class object, return a fully-qualified name. This works for things I've tested in matplotlib so far, but may not be completely general. """ module = cls.__module__ if module == '__builtin__': fullname = cls.__name__ else: fullname = "%s.%s" % (module, cls.__name__) if parts == 0: return fullname name_parts = fullname.split('.') return '.'.join(name_parts[-parts:]) def get_all_class_names(self): """ Get all of the class names involved in the graph. """ return [self.class_name(x) for x in self.all_classes] # These are the default options for graphviz default_graph_options = { "rankdir": "LR", "size": '"8.0, 12.0"' } default_node_options = { "shape": "box", "fontsize": 10, "height": 0.25, "fontname": "Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans", "style": '"setlinewidth(0.5)"' } default_edge_options = { "arrowsize": 0.5, "style": '"setlinewidth(0.5)"' } def _format_node_options(self, options): return ','.join(["%s=%s" % x for x in options.items()]) def _format_graph_options(self, options): return ''.join(["%s=%s;\n" % x for x in options.items()]) def generate_dot(self, fd, name, parts=0, urls={}, graph_options={}, node_options={}, edge_options={}): """ Generate a graphviz dot graph from the classes that were passed in to __init__. *fd* is a Python file-like object to write to. *name* is the name of the graph *urls* is a dictionary mapping class names to http urls *graph_options*, *node_options*, *edge_options* are dictionaries containing key/value pairs to pass on as graphviz properties. """ g_options = self.default_graph_options.copy() g_options.update(graph_options) n_options = self.default_node_options.copy() n_options.update(node_options) e_options = self.default_edge_options.copy() e_options.update(edge_options) fd.write('digraph %s {\n' % name) fd.write(self._format_graph_options(g_options)) for cls in self.all_classes: if not self.show_builtins and cls in __builtins__.values(): continue name = self.class_name(cls, parts) # Write the node this_node_options = n_options.copy() url = urls.get(self.class_name(cls)) if url is not None: this_node_options['URL'] = '"%s"' % url fd.write(' "%s" [%s];\n' % (name, self._format_node_options(this_node_options))) # Write the edges for base in cls.__bases__: if not self.show_builtins and base in __builtins__.values(): continue base_name = self.class_name(base, parts) fd.write(' "%s" -> "%s" [%s];\n' % (base_name, name, self._format_node_options(e_options))) fd.write('}\n') def run_dot(self, args, name, parts=0, urls={}, graph_options={}, node_options={}, edge_options={}): """ Run graphviz 'dot' over this graph, returning whatever 'dot' writes to stdout. *args* will be passed along as commandline arguments. *name* is the name of the graph *urls* is a dictionary mapping class names to http urls Raises DotException for any of the many os and installation-related errors that may occur. """ try: dot = subprocess.Popen(['dot'] + list(args), stdin=subprocess.PIPE, stdout=subprocess.PIPE, close_fds=True) except OSError: raise DotException("Could not execute 'dot'. Are you sure you have 'graphviz' installed?") except ValueError: raise DotException("'dot' called with invalid arguments") except: raise DotException("Unexpected error calling 'dot'") self.generate_dot(dot.stdin, name, parts, urls, graph_options, node_options, edge_options) dot.stdin.close() result = dot.stdout.read() returncode = dot.wait() if returncode != 0: raise DotException("'dot' returned the errorcode %d" % returncode) return result class inheritance_diagram(Body, Element): """ A docutils node to use as a placeholder for the inheritance diagram. """ pass def inheritance_diagram_directive(name, arguments, options, content, lineno, content_offset, block_text, state, state_machine): """ Run when the inheritance_diagram directive is first encountered. """ node = inheritance_diagram() class_names = arguments # Create a graph starting with the list of classes graph = InheritanceGraph(class_names) # Create xref nodes for each target of the graph's image map and # add them to the doc tree so that Sphinx can resolve the # references to real URLs later. These nodes will eventually be # removed from the doctree after we're done with them. for name in graph.get_all_class_names(): refnodes, x = xfileref_role( 'class', ':class:`%s`' % name, name, 0, state) node.extend(refnodes) # Store the graph object so we can use it to generate the # dot file later node['graph'] = graph # Store the original content for use as a hash node['parts'] = options.get('parts', 0) node['content'] = " ".join(class_names) return [node] def get_graph_hash(node): return md5(node['content'] + str(node['parts'])).hexdigest()[-10:] def html_output_graph(self, node): """ Output the graph for HTML. This will insert a PNG with clickable image map. """ graph = node['graph'] parts = node['parts'] graph_hash = get_graph_hash(node) name = "inheritance%s" % graph_hash path = '_images' dest_path = os.path.join(setup.app.builder.outdir, path) if not os.path.exists(dest_path): os.makedirs(dest_path) png_path = os.path.join(dest_path, name + ".png") path = setup.app.builder.imgpath # Create a mapping from fully-qualified class names to URLs. urls = {} for child in node: if child.get('refuri') is not None: urls[child['reftitle']] = child.get('refuri') elif child.get('refid') is not None: urls[child['reftitle']] = '#' + child.get('refid') # These arguments to dot will save a PNG file to disk and write # an HTML image map to stdout. image_map = graph.run_dot(['-Tpng', '-o%s' % png_path, '-Tcmapx'], name, parts, urls) return ('%s' % (path, name, name, image_map)) def latex_output_graph(self, node): """ Output the graph for LaTeX. This will insert a PDF. """ graph = node['graph'] parts = node['parts'] graph_hash = get_graph_hash(node) name = "inheritance%s" % graph_hash dest_path = os.path.abspath(os.path.join(setup.app.builder.outdir, '_images')) if not os.path.exists(dest_path): os.makedirs(dest_path) pdf_path = os.path.abspath(os.path.join(dest_path, name + ".pdf")) graph.run_dot(['-Tpdf', '-o%s' % pdf_path], name, parts, graph_options={'size': '"6.0,6.0"'}) return '\n\\includegraphics{%s}\n\n' % pdf_path def visit_inheritance_diagram(inner_func): """ This is just a wrapper around html/latex_output_graph to make it easier to handle errors and insert warnings. """ def visitor(self, node): try: content = inner_func(self, node) except DotException, e: # Insert the exception as a warning in the document warning = self.document.reporter.warning(str(e), line=node.line) warning.parent = node node.children = [warning] else: source = self.document.attributes['source'] self.body.append(content) node.children = [] return visitor def do_nothing(self, node): pass def setup(app): setup.app = app setup.confdir = app.confdir app.add_node( inheritance_diagram, latex=(visit_inheritance_diagram(latex_output_graph), do_nothing), html=(visit_inheritance_diagram(html_output_graph), do_nothing)) app.add_directive( 'inheritance-diagram', inheritance_diagram_directive, False, (1, 100, 0), parts = directives.nonnegative_int) LTS5-cfflib-9a123ae/doc/source/sphinxext/ipython_console_highlighting.py000066400000000000000000000065551156222202000265100ustar00rootroot00000000000000"""reST directive for syntax-highlighting ipython interactive sessions. """ #----------------------------------------------------------------------------- # Needed modules # Standard library import re # Third party from pygments.lexer import Lexer, do_insertions from pygments.lexers.agile import (PythonConsoleLexer, PythonLexer, PythonTracebackLexer) from pygments.token import Comment, Generic from sphinx import highlighting #----------------------------------------------------------------------------- # Global constants line_re = re.compile('.*?\n') #----------------------------------------------------------------------------- # Code begins - classes and functions class IPythonConsoleLexer(Lexer): """ For IPython console output or doctests, such as: .. sourcecode:: ipython In [1]: a = 'foo' In [2]: a Out[2]: 'foo' In [3]: print a foo In [4]: 1 / 0 Notes: - Tracebacks are not currently supported. - It assumes the default IPython prompts, not customized ones. """ name = 'IPython console session' aliases = ['ipython'] mimetypes = ['text/x-ipython-console'] input_prompt = re.compile("(In \[[0-9]+\]: )|( \.\.\.+:)") output_prompt = re.compile("(Out\[[0-9]+\]: )|( \.\.\.+:)") continue_prompt = re.compile(" \.\.\.+:") tb_start = re.compile("\-+") def get_tokens_unprocessed(self, text): pylexer = PythonLexer(**self.options) tblexer = PythonTracebackLexer(**self.options) curcode = '' insertions = [] for match in line_re.finditer(text): line = match.group() input_prompt = self.input_prompt.match(line) continue_prompt = self.continue_prompt.match(line.rstrip()) output_prompt = self.output_prompt.match(line) if line.startswith("#"): insertions.append((len(curcode), [(0, Comment, line)])) elif input_prompt is not None: insertions.append((len(curcode), [(0, Generic.Prompt, input_prompt.group())])) curcode += line[input_prompt.end():] elif continue_prompt is not None: insertions.append((len(curcode), [(0, Generic.Prompt, continue_prompt.group())])) curcode += line[continue_prompt.end():] elif output_prompt is not None: insertions.append((len(curcode), [(0, Generic.Output, output_prompt.group())])) curcode += line[output_prompt.end():] else: if curcode: for item in do_insertions(insertions, pylexer.get_tokens_unprocessed(curcode)): yield item curcode = '' insertions = [] yield match.start(), Generic.Output, line if curcode: for item in do_insertions(insertions, pylexer.get_tokens_unprocessed(curcode)): yield item #----------------------------------------------------------------------------- # Register the extension as a valid pygments lexer highlighting.lexers['ipython'] = IPythonConsoleLexer() LTS5-cfflib-9a123ae/doc/source/sphinxext/math_dollar.py000066400000000000000000000036101156222202000230220ustar00rootroot00000000000000import re def process_dollars(app, docname, source): r""" Replace dollar signs with backticks. More precisely, do a regular expression search. Replace a plain dollar sign ($) by a backtick (`). Replace an escaped dollar sign (\$) by a dollar sign ($). Don't change a dollar sign preceded or followed by a backtick (`$ or $`), because of strings like "``$HOME``". Don't make any changes on lines starting with spaces, because those are indented and hence part of a block of code or examples. This also doesn't replaces dollar signs enclosed in curly braces, to avoid nested math environments, such as :: $f(n) = 0 \text{ if $n$ is prime}$ Thus the above line would get changed to `f(n) = 0 \text{ if $n$ is prime}` """ s = "\n".join(source) if s.find("$") == -1: return # This searches for "$blah$" inside a pair of curly braces -- # don't change these, since they're probably coming from a nested # math environment. So for each match, we replace it with a temporary # string, and later on we substitute the original back. global _data _data = {} def repl(matchobj): global _data s = matchobj.group(0) t = "___XXX_REPL_%d___" % len(_data) _data[t] = s return t s = re.sub(r"({[^{}$]*\$[^{}$]*\$[^{}]*})", repl, s) # matches $...$ dollars = re.compile(r"(? target_list[0]: raise OSError, 'Target is on a different drive to base. Target: '+target_list[0].upper()+', base: '+base_list[0].upper() # Starting from the filepath root, work out how much of the # filepath is shared by base and target. for i in range(min(len(base_list), len(target_list))): if base_list[i] <> target_list[i]: break else: # If we broke out of the loop, i is pointing to the first # differing path elements. If we didn't break out of the # loop, i is pointing to identical path elements. # Increment i so that in all cases it points to the first # differing path elements. i+=1 rel_list = [os.pardir] * (len(base_list)-i) + target_list[i:] if rel_list: return os.path.join(*rel_list) else: return "" template = """ .. htmlonly:: %(links)s .. figure:: %(prefix)s%(tmpdir)s/%(outname)s.png %(options)s %(caption)s .. latexonly:: .. figure:: %(prefix)s%(tmpdir)s/%(outname)s.pdf %(options)s %(caption)s """ exception_template = """ .. htmlonly:: [`source code <%(linkdir)s/%(basename)s.py>`__] Exception occurred rendering plot. """ template_content_indent = ' ' def out_of_date(original, derived): """ Returns True if derivative is out-of-date wrt original, both of which are full file paths. """ return (not os.path.exists(derived) or (os.path.exists(original) and os.stat(derived).st_mtime < os.stat(original).st_mtime)) def run_code(plot_path, function_name, plot_code): """ Import a Python module from a path, and run the function given by name, if function_name is not None. """ # Change the working directory to the directory of the example, so # it can get at its data files, if any. Add its path to sys.path # so it can import any helper modules sitting beside it. if plot_code is not None: exec(plot_code) else: pwd = os.getcwd() path, fname = os.path.split(plot_path) sys.path.insert(0, os.path.abspath(path)) stdout = sys.stdout sys.stdout = cStringIO.StringIO() os.chdir(path) fd = None try: fd = open(fname) module = imp.load_module( "__plot__", fd, fname, ('py', 'r', imp.PY_SOURCE)) finally: del sys.path[0] os.chdir(pwd) sys.stdout = stdout if fd is not None: fd.close() if function_name is not None: getattr(module, function_name)() def run_savefig(plot_path, basename, tmpdir, destdir, formats): """ Once a plot script has been imported, this function runs savefig on all of the figures in all of the desired formats. """ fig_managers = _pylab_helpers.Gcf.get_all_fig_managers() for i, figman in enumerate(fig_managers): for j, (format, dpi) in enumerate(formats): if len(fig_managers) == 1: outname = basename else: outname = "%s_%02d" % (basename, i) outname = outname + "." + format outpath = os.path.join(tmpdir, outname) try: figman.canvas.figure.savefig(outpath, dpi=dpi) except: s = cbook.exception_to_str("Exception saving plot %s" % plot_path) warnings.warn(s, PlotWarning) return 0 if j > 0: shutil.copyfile(outpath, os.path.join(destdir, outname)) return len(fig_managers) def clear_state(): plt.close('all') matplotlib.rcdefaults() # Set a default figure size that doesn't overflow typical browser # windows. The script is free to override it if necessary. matplotlib.rcParams['figure.figsize'] = (5.5, 4.5) def render_figures(plot_path, function_name, plot_code, tmpdir, destdir, formats): """ Run a pyplot script and save the low and high res PNGs and a PDF in outdir. """ plot_path = str(plot_path) # todo, why is unicode breaking this basedir, fname = os.path.split(plot_path) basename, ext = os.path.splitext(fname) all_exists = True # Look for single-figure output files first for format, dpi in formats: outname = os.path.join(tmpdir, '%s.%s' % (basename, format)) if out_of_date(plot_path, outname): all_exists = False break if all_exists: return 1 # Then look for multi-figure output files, assuming # if we have some we have all... i = 0 while True: all_exists = True for format, dpi in formats: outname = os.path.join( tmpdir, '%s_%02d.%s' % (basename, i, format)) if out_of_date(plot_path, outname): all_exists = False break if all_exists: i += 1 else: break if i != 0: return i # We didn't find the files, so build them clear_state() try: run_code(plot_path, function_name, plot_code) except: s = cbook.exception_to_str("Exception running plot %s" % plot_path) warnings.warn(s, PlotWarning) return 0 num_figs = run_savefig(plot_path, basename, tmpdir, destdir, formats) if '__plot__' in sys.modules: del sys.modules['__plot__'] return num_figs def _plot_directive(plot_path, basedir, function_name, plot_code, caption, options, state_machine): formats = setup.config.plot_formats if type(formats) == str: formats = eval(formats) fname = os.path.basename(plot_path) basename, ext = os.path.splitext(fname) # Get the directory of the rst file, and determine the relative # path from the resulting html file to the plot_directive links # (linkdir). This relative path is used for html links *only*, # and not the embedded image. That is given an absolute path to # the temporary directory, and then sphinx moves the file to # build/html/_images for us later. rstdir, rstfile = os.path.split(state_machine.document.attributes['source']) outdir = os.path.join('plot_directive', basedir) reldir = relpath(setup.confdir, rstdir) linkdir = os.path.join(reldir, outdir) # tmpdir is where we build all the output files. This way the # plots won't have to be redone when generating latex after html. # Prior to Sphinx 0.6, absolute image paths were treated as # relative to the root of the filesystem. 0.6 and after, they are # treated as relative to the root of the documentation tree. We # need to support both methods here. tmpdir = os.path.join('build', outdir) tmpdir = os.path.abspath(tmpdir) if sphinx_version < (0, 6): prefix = '' else: prefix = '/' if not os.path.exists(tmpdir): cbook.mkdirs(tmpdir) # destdir is the directory within the output to store files # that we'll be linking to -- not the embedded images. destdir = os.path.abspath(os.path.join(setup.app.builder.outdir, outdir)) if not os.path.exists(destdir): cbook.mkdirs(destdir) # Properly indent the caption caption = '\n'.join(template_content_indent + line.strip() for line in caption.split('\n')) # Generate the figures, and return the number of them num_figs = render_figures(plot_path, function_name, plot_code, tmpdir, destdir, formats) # Now start generating the lines of output lines = [] if plot_code is None: shutil.copyfile(plot_path, os.path.join(destdir, fname)) if options.has_key('include-source'): if plot_code is None: lines.extend( ['.. include:: %s' % os.path.join(setup.app.builder.srcdir, plot_path), ' :literal:']) if options.has_key('encoding'): lines.append(' :encoding: %s' % options['encoding']) del options['encoding'] else: lines.extend(['::', '']) lines.extend([' %s' % row.rstrip() for row in plot_code.split('\n')]) lines.append('') del options['include-source'] else: lines = [] if num_figs > 0: options = ['%s:%s: %s' % (template_content_indent, key, val) for key, val in options.items()] options = "\n".join(options) for i in range(num_figs): if num_figs == 1: outname = basename else: outname = "%s_%02d" % (basename, i) # Copy the linked-to files to the destination within the build tree, # and add a link for them links = [] if plot_code is None: links.append('`source code <%(linkdir)s/%(basename)s.py>`__') for format, dpi in formats[1:]: links.append('`%s <%s/%s.%s>`__' % (format, linkdir, outname, format)) if len(links): links = '[%s]' % (', '.join(links) % locals()) else: links = '' lines.extend((template % locals()).split('\n')) else: lines.extend((exception_template % locals()).split('\n')) if len(lines): state_machine.insert_input( lines, state_machine.input_lines.source(0)) return [] def plot_directive(name, arguments, options, content, lineno, content_offset, block_text, state, state_machine): """ Handle the arguments to the plot directive. The real work happens in _plot_directive. """ # The user may provide a filename *or* Python code content, but not both if len(arguments): plot_path = directives.uri(arguments[0]) basedir = relpath(os.path.dirname(plot_path), setup.app.builder.srcdir) # If there is content, it will be passed as a caption. # Indent to match expansion below. XXX - The number of spaces matches # that of the 'options' expansion further down. This should be moved # to common code to prevent them from diverging accidentally. caption = '\n'.join(content) # If the optional function name is provided, use it if len(arguments) == 2: function_name = arguments[1] else: function_name = None return _plot_directive(plot_path, basedir, function_name, None, caption, options, state_machine) else: plot_code = '\n'.join(content) # Since we don't have a filename, use a hash based on the content plot_path = md5(plot_code).hexdigest()[-10:] return _plot_directive(plot_path, 'inline', None, plot_code, '', options, state_machine) def mark_plot_labels(app, document): """ To make plots referenceable, we need to move the reference from the "htmlonly" (or "latexonly") node to the actual figure node itself. """ for name, explicit in document.nametypes.iteritems(): if not explicit: continue labelid = document.nameids[name] if labelid is None: continue node = document.ids[labelid] if node.tagname in ('html_only', 'latex_only'): for n in node: if n.tagname == 'figure': sectname = name for c in n: if c.tagname == 'caption': sectname = c.astext() break node['ids'].remove(labelid) node['names'].remove(name) n['ids'].append(labelid) n['names'].append(name) document.settings.env.labels[name] = \ document.settings.env.docname, labelid, sectname break def setup(app): setup.app = app setup.config = app.config setup.confdir = app.confdir options = {'alt': directives.unchanged, 'height': directives.length_or_unitless, 'width': directives.length_or_percentage_or_unitless, 'scale': directives.nonnegative_int, 'align': align, 'class': directives.class_option, 'include-source': directives.flag, 'encoding': directives.encoding } app.add_directive('plot', plot_directive, True, (0, 2, 0), **options) app.add_config_value( 'plot_formats', [('png', 80), ('hires.png', 200), ('pdf', 50)], True) app.connect('doctree-read', mark_plot_labels) LTS5-cfflib-9a123ae/doc/source/tutorial.rst000066400000000000000000000042121156222202000205240ustar00rootroot00000000000000============================================= How to use the Connectome File Format Library ============================================= .. note:: Example connectome files are provided in the GitHub repository `cffdata `_. Import the library. Subsequently, we assume that this has been done:: from cfflib import * Load the dataset from the file system:: a=load_from_meta_cml('example_dataset_01/meta.cml') You can print all the loaded connectome objects:: print a.get_all() If you have a zipped file with ending .cff, you can load it as well with:: a=load_from_cff('datasets/ds1/connectomefile.cff') You can get the first network and load it like this:: mynetwork = a.get_by_name('Network Lausanne83')[0] mynetwork.load() The loaded network object accessible through the data attribute (a NetworkX object):: print mynetwork.data You see that it is a NetworkX graph. You can modify it as you like. After modification, you can store it, which stores it in the corresponding file that this CNetwork was referenced to (relative path):: print mynetwork.src mynetwork.save() Show other attributes:: print mynetwork.name print mynetwork.dtype print mynetwork.description To show the metadata attributes as dictionary:: print mynetwork.get_metadata_as_dict() You can save the currently loaded connectome file:: save_to_cff('myconnectome.cff', a) The same you can do for other connectome objects, if the corresponding Python libraries are installed correctly:: # CVolume obj = a.get_by_name('Example Volume') obj.load() print obj.data # CSurface obj = a.get_by_name('Example Surface') obj.load() print obj.data # CTrack obj = a.get_by_name('Tractography') obj.load() # You do not want to display all fibers, just show the header print obj.data[1] # CTimeseries obj = a.get_by_name('Generated timeseries data') obj.load() print obj.data # CData obj = a.get_by_name('Arbitrary data file') obj.load() print obj.data # CScript obj = a.get_by_name('Analysis Script MMXXXIV') obj.load() print obj.data # CImagestack obj = a.get_by_name('FIB Rat Striatum') obj.load() print obj.data LTS5-cfflib-9a123ae/doc/tuto_code/000077500000000000000000000000001156222202000166155ustar00rootroot00000000000000LTS5-cfflib-9a123ae/doc/tuto_code/tutorial.py000077500000000000000000000067561156222202000210530ustar00rootroot00000000000000#!/usr/bin/env python # # Christophe Chenes # 2010-10-29 # # The tutorial source code # from cfflib import * #----------------------------------------------------------------------# # Create the connectome object myConnectome = connectome() myConnectome = connectome('1st connectome') # Check what's inside the object myConnectome myConnectome.get_all() myConnectome.hasContent_() myConnectome.print_summary() #----------------------------------------------------------------------# #----------------------------------------------------------------------# # Create the connectome metadata myMetadata = myConnectome.get_connectome_meta() myMetadata.set_title('My first connectome') myMetadata.set_species('Homo Sapiens') myMetadata.set_creator('Connectome Tutorial') myMetadata.set_email('yourname@epfl.ch') myMetadata.set_created('2010-10-26') myMetadata.set_modified('2011-02-24') myMetadata.set_description('First connectome object created with the tutorial.') #----------------------------------------------------------------------# # Save the connectome to file #----------------------------------------------------------------------# save_to_meta_cml(myConnectome, 'meta.cml')#'/your/wanted/path/meta.cml') save_to_cff(myConnectome, 'myconnectome.cff')#'/your/wanted/path/myconnectome.cff') #----------------------------------------------------------------------# #----------------------------------------------------------------------# # Load from file myConnectomeFromMeta = load('meta.cml') myConnectomeFromCFF = load('myconnectome.cff') #----------------------------------------------------------------------# #----------------------------------------------------------------------# # Create and add a network # Create a networkx graph myNetworkx = nx.Graph() myNetworkx.add_node(0) myNetworkx.add_node(1) myNetworkx.add_node(2) myNetworkx.add_edge(0,1) myNetworkx.add_edge(1,2) # Create a CNetwork myCNet = CNetwork('My First CNetwork') # Set with the NetworkX graph myCNet.set_with_nxgraph(myNetworkx) # Add the network to the connectome object myConnectome.add_connectome_network(myCNet) # Try to get all myConnectome.get_all() # Modify the CNetwork through the connectome object myConnectome.get_connectome_network()[0].set_description('A first CNetwork created with the tutorial') # From a graphml file # way 1 my2ndCNetwork = CNetwork.create_from_graphml('My GraphML Network', 'network_res83.graphml') myConnectome.add_connectome_network(my2ndCNetwork) #way 2 myConnectome.add_connectome_network_from_graphml('My GraphML Network', 'network_res83.graphml') #----------------------------------------------------------------------# #----------------------------------------------------------------------# # Add metadata to an object #----------------------------------------------------------------------# myCN = myConnectome.get_connectome_network()[0] myCN.update_metadata({'sd':1234}) myCN.get_metadata_as_dict() # Try to save again save_to_meta_cml(myConnectome, 'meta2.cml')#'/your/wanted/path/meta.cml') save_to_cff(myConnectome, 'myconnectome2.cff') #----------------------------------------------------------------------# # Add a CVolume #----------------------------------------------------------------------# cv = CVolume.create_from_nifti('My first volume', 'T1.nii.gz') # Path to the nifti1 file myConnectome.add_connectome_volume(cv) cv.set_description('A first CVolume created with the cfflib tutorial') cv.update_metadata({'meta1': 123}) #----------------------------------------------------------------------# LTS5-cfflib-9a123ae/scratch/000077500000000000000000000000001156222202000155125ustar00rootroot00000000000000LTS5-cfflib-9a123ae/scratch/TODO000066400000000000000000000015471156222202000162110ustar00rootroot00000000000000Generate classes with: generateDS.py --subclass-suffix="" -f --super="cff" -o ../cff.py -s ../cfflib.py -a "xsd:" --namespacedef='xmlns:cml="http://www.connectomics.org/cff-2" xmlns:dcterms="http://purl.org/dc/terms/"' connectome.xsd You need generateDS to create the object model from XML Schema: http://www.rexx.com/~dkuhlman/generateDS.html Convention ---------- .src -> refering to relative path in filesystem (fs) or zip file (iszip = True) .tmpsrc -> refering to absolute path in fs or tempfile. a tempfile is created when .content != None. schema to convert absolute file names to relative: CXXX / unique_name.fileformatending In cfflib --------- * Implement save for iszip == False * how to save imagestack? save hdf5? save trackvis? * test for all but network the saving mechanism for loaded * [METHOD] validate file existence * [METHOD] validate file typeLTS5-cfflib-9a123ae/scratch/xnat_test.py000066400000000000000000000006251156222202000201000ustar00rootroot00000000000000import cfflib as cf a=cf.load('/path/to/meta.cml') cf.set_xnat_connection({'server': 'http://localhost:8080/xnat', 'user':'myuser', 'password': 'mypassword'}) # push connectome object #cf.xnat_push(a, projectid = 'DEB02', subjectid= 'L01', experimentid = 'EXP4', overwrite = True) # pull connectom object cf.xnat_pull( projectid = 'DEB02', subjectid= 'L01', experimentid = 'EXP4', storagepath='/tmp')LTS5-cfflib-9a123ae/setup.py000066400000000000000000000046151156222202000156030ustar00rootroot00000000000000#!/usr/bin/env python """Connectome File Format Library is part of the Connectome Mapping Toolkit """ from glob import glob import os import sys if os.path.exists('MANIFEST'): os.remove('MANIFEST') packages=["cfflib", "cfflib.tests"] package_data = {'cfflib': ['schema/*.xsd', 'tests/data/CData/*.*', 'tests/data/CNetwork/*.*', 'tests/data/CSurface/*.*', 'tests/data/CTrack/*.*', 'tests/data/CVolume/*.*' ]} ################################################################################ # For some commands, use setuptools if len(set(('develop', 'bdist_egg', 'bdist_rpm', 'bdist', 'bdist_dumb', 'bdist_wininst', 'install_egg_info', 'egg_info', 'easy_install', )).intersection(sys.argv)) > 0: from setup_egg import extra_setuptools_args # extra_setuptools_args can be defined from the line above, but it can # also be defined here because setup.py has been exec'ed from # setup_egg.py. if not 'extra_setuptools_args' in globals(): extra_setuptools_args = dict() ver_file = os.path.join('cfflib', 'info.py') exec(open(ver_file).read()) def main(**extra_args): from distutils.core import setup setup(name='cfflib', version=__version__, description='Connectome File Format Library', long_description = """The Connectome File Format library supports handling of multi-modal neuroimaging datasets and metadata""", author= 'Stephan Gerhard', author_email='info@connectomics.org', url='http://www.connectomics.org/', license='Modified BSD License', packages = packages, classifiers = [c.strip() for c in """\ Development Status :: 5 - Production/Stable Intended Audience :: Developers Intended Audience :: Science/Research Operating System :: OS Independent Programming Language :: Python Topic :: Scientific/Engineering Topic :: Software Development """.splitlines() if len(c.split()) > 0], maintainer = 'EPFL LTS5 Diffusion Group', maintainer_email = 'info@connectomics.org', package_data = package_data, requires=["numpy (>=1.2)", "nibabel (>=1.1.0)"], **extra_args ) if __name__ == "__main__": main(**extra_setuptools_args) LTS5-cfflib-9a123ae/setup_egg.py000066400000000000000000000011671156222202000164240ustar00rootroot00000000000000#!/usr/bin/env python # emacs: -*- mode: python; py-indent-offset: 4; indent-tabs-mode: nil -*- # vi: set ft=python sts=4 ts=4 sw=4 et: """Wrapper to run setup.py using setuptools.""" from setuptools import setup ################################################################################ # Call the setup.py script, injecting the setuptools-specific arguments. extra_setuptools_args = dict( zip_safe=False, ) if __name__ == '__main__': execfile('setup.py', dict(__name__='__main__', extra_setuptools_args=extra_setuptools_args))

]^f9t~M$P90"N(BrB1 ||:P=@#Vm%rXh8&kY% !zJL;!'L+H~4׿<^5$ SdjMzw LIz |v5@u:\~yD=U)*`bayME .P f]dhږi l^&~XbB\%>L6)nҤT^{GUsr .M!q%5'wi +i2AJ^} żBm"73QZ>&y ԬWXR'eb msל@dE4;t+`IXsT8R|*w oM!O~b[ѱtA1b':uQ:[8_ݨ% ВJ#%IpM s'+-ĶQߺUݪ. }2'|Qg)齖5r&;}.xFD^04=@$6؁Uڋ-*_Q$4 +S0_*@P #fl endstream endobj 104 0 obj 1111 endobj 106 0 obj <> stream xNN0WRD> stream xWM6W 9C%`z@EOMAm\˙!%ʖ֛כ7m|5lF6xn}4ߘg_ܤI V7mI0ŲD+S#mK. :Ʒ7Ӭw-Ҁ7t&$/1-[xHk̟۟9cO#`cʠ(7Ln%jڈ[uȞ* h)yKK|ۧ.3Du- noqŽ.4qyל.z? {m?8Jj -k`֗)Nvw4 f+XXĭвUAi˾8T{vaoǡ )%%eqg+:*|dywqO>)芚^Ԫ;@P7CxSXt̢_9'l(m!~>g AVQ B@HQ7*Fq\b)p⍣dr]Y}9w_D/`\V+Q!Iiq{ז_XbN/}wCNNd=dàB*ڀʹMz*A %>t3V&!^qkʯ\:I)Ayr/.I߸a2]~Q[N +PEqЊuys5`_M endstream endobj 110 0 obj 1120 endobj 112 0 obj <> stream xWKo6W`rHD@ ЃrrJ gDڬ0%e:fYzxy8?m,dž ?˪_ϯۦb0X3 +k}Q Eroq|3 )a2?HޛEt \ P_)Ag- y1Ws ?6vA/"I i;~!G_,M@xpn"W6OF,n~u ޣ8~--,RC.ˠ6X q.V>ƱϼIrEHA^ga8%z0 Dտ'-~fǠEqdOmf'*iOTR &DB"/YPDJde]DEuēJ6:|1zJ+WsW39(&73R1H9_tYRd{.lFU]wZt˵yjysRK]K.XcZ'n̅< :EU&CTfSl6ft9YWʓ0ft)^:E+yt֭eʜgG7lA'Ru]$Q84ҵaѾ\Σ orW,^}%Q|+3zzЊ)˨}p5a2rW\8o4ЅZ]2jWJSCp͜ϥA#-38qq8}u7]mxT G*'ِՉg+w'Gi$ endstream endobj 113 0 obj 1078 endobj 115 0 obj <> stream xXɎF+l`)Ra>9vS[/II)vuz55{Uiᶳx >o?Q_ꥁEt+LWsM۾+h_óBX%_1?7Xů?|>;zV]^yg#}Q5`dCG>{⍷`|i_-^Pw.Qj.M&!,\ح#1Rf~S6x/M;+]>S@{mv;d\`oHbC/He X9Ivm+*Iڢ| Fҕ,4l.S:SzH'.#KBp]z,Ŵ(zOf[6N:6F4 vP?v >RL>A9At2Xs]-*q\'#ahzñE1 YFo';E6\wj;渨Uw/dUL3CUWr)y}IvD}}H5M*z&f_WjUuiKB.MKb>ɔwEaYfV:ZKĻspN1$ְ@){Ǻ>'+L\Ȭ*'?_ endstream endobj 116 0 obj 1199 endobj 118 0 obj <> stream xWɎ7Wl@2YEՀЀQ9L" $/ƥei(zŢ:WtSG{5xp>ixx34B>&pحaEDWl u&~|uq)O;zGݸ9~ "SpOBF9'H81?H:X7is5c#UoC7pٟ7W;poO[fz>+'pwgKF%)5Ш1Ap򄉉FE~w*w|D,udwZ+o ޹8hPmAƑX\`B;0<EKs|\ec) {H+"Ad'0Y[YCaAp/f^-ܵNܕa3(}#IQ΀kS'l{f)md^b6w^rb@@9K[SFFk@ b!I)Ѩa W [iiJ}ֲSr$t6f@)r*J MJdAͥb8ɔ 5JZB"d'8`oGřr Zh y'{z^2użvUf/kY`bY\niu[\ GxtxJ94,ǔy&v5SXS5jq.kXVUH Z pIVkAP,jP1Vܟ =l{)74fjz 4-> stream xVn0+x`3\$ĎڦAH."ʋdˎ c ߼lK0oŋfbiY!Y2_̟ .,uAd fUaTa>caeY(egk:aNjO)&FTe|*ތ)|)7+yt̏uqqYA﯋`+ʠu2n| QSV.ԃ\ {LA@xvUX_&zl\/!rW Sl,Nn:Zq}u_ܭ$eC5&Z"Iur5> 7 冠A 5v֝4TZ3jEo@f@m@_mVsr.t)[ Ƒa}da?ߍ< O >Bsv0l 4V ffu*> U߸ttLŧ~dGĎx·>*Rn!%l/1wG%`3~vu'\/RkTU9I?O`pjkn%>v  rfXR7]0Mr·M+<Bs YɴrD"_'RzƳ:djS=7G5ZWOv0XQ.,. endstream endobj 122 0 obj 886 endobj 124 0 obj <> stream xVK6 W`d öP6 l䒿_dɳLb=H}qyc<~ӽ}㿯usGB2˨:O7 OJz,*2Q8LfG:}?iʓFRoL!w4O2Mw:K gjR=Шq橏EAU4oc!+y6qmCC ( u1!kX2O3*"W&6n0h{7pE0Pca2O!o1dFm7^nMtT0 A`o d ƒGU|E,*ZMJƯCVdȝ$w1qf !^dKz>5@G,8o;#H^L* Gw}qDy,yD9 Oc#%#]x~=ɔ{OH\=au endstream endobj 125 0 obj 1030 endobj 127 0 obj <> stream xXK6 W`Qd N=l;@EOI ȶH.Hɒ_$b5YGzt kYiu4L㗿? FꥡM<GYм6tYE43`'֐zҼŪy4q#C2 XHҵCׯ^o*oĪA8s7ӁSo?sf4w<.y^Ӈ%%骭QdmG_fQӋ)]5dGhq 5kq]VNEKEV)YAbH;L%y$yLE2Lo\yRIL1Lw\:vemeaUĢm&OwEx_Wj2 u).Iv[`!\x.ꏮJKm] bY>OKfmZ 8b:~o's1WTPfAMOAh&]!jڽf[n!UfT]`Gw؉;6::S%ٶ:zgXʽC"~aK(AI]ާ%/ Y;| yԉ1ʛKPH ,C#8> stream xWK6W g$EҦAm\;Rei7A 7} syPd "?~}nߧ/a%]}u'EƷC18N}gxs+"TLtb5 طq|t Ð^ڔS|g>_;66}nqw%0& h[QIչ(85mG_ k.H- h#SML=+/;^qro{qqq}w*usNm\sm$aAaR2&AY2#J]M6V쮄*=OvUS8o|S, !pԨpKY;h4ǘT8ǡ5NJ̱XT7FuJfQZ LCd86E1 W}pUXhװP / "J$DR" > stream xWK6 W`zS4@CS4-K~)h=d`LRGֶ|m>kv5~8}yjPvɿʧ`wG݊Z_Th$rض ï?ل6 CWz?Mצ`04LpLC'[J;sm@yS0mɱSmfy ^cQ7İ_ %H͂Xuhx&vˮ7{F[qmwJ)n.kAkb-ʺ.a*Z|5<=;/9q@",^$Tuzѱp#o|lrIPQ͔#G?>0ŃunrP1{H[K َ>/8nQcG;DeyxLV"KA[:)9,qȠ f0&ֲUk@-75<תqjvl\-7qfpBt^[KVByhQx/w D~8#SN/Y#Œ .KkJRJɅ(*'?n+'1)ZCB6y%w,od4>9SEp)i8t!`C;8j]ƄB( r̉'TF8sKxe<$a/ReXH2VfԙҬāt pa=y8q.M-] L$ hPשhg_Z"Zd* brB'|pYM6$~|_j'C}t4C4sNZWA7ėvXjZ_8y&#jTeQ [v;WK>]^=!zK܊(fM؄Y3l, 0.Gf"V#!>y`ބvϱ%g?&Tz(N"eėS}^ T9=)r endstream endobj 134 0 obj 1126 endobj 136 0 obj <> stream xWM6 W`d )Mm%?)Y<4EVEcuoAv:/__:/w:~P]ݧx]şyW*G'r`z"o{OjGm>t {AҁUX'{"!p ǍQbn71)],K,q.ObL8&rh] %=5 U SVH8+5}ī0ZдeQQX% ÓUYfȒ 1azWM0@纒/"Z5O!%TW}R}rT[Tz+kRɬ% q`kA>?w,*f]2a-y1#l4湰R\2/@u܄lﮣt*mjޭR/%'khaD9|(o@7y$:b[ආ /pTV+qvP伙EMCaEVЪԓ!Br!O?[0Vj m;z7IC1O)4H+3҈J-+=4Gy|ˌ&7>@XjHZrΖî R bȺOtoK endstream endobj 137 0 obj 1081 endobj 139 0 obj <> stream xXK6 W`z.m)i%)ɒGnXF)#+*IFk/ODw'&} EL#~>dFBófYPN"4oO,{ǎןv|7;/wY s #2xf_o3 L012K#iN FL'tEڿ$cӁ90xo&DӠ s/u#e.Y T%Lj/L;[]t fi$PJ=Ȳ1zp&QF=Q@ #q`+2_YVEWRb@+D"G#тV :b >);e ‘,|KʁFBv&!,=$v:q* ѣczDxC3"5oK<:.\9bӂ7%m>-&6YFBGK&"3aS>necE,n[ڈ) N&WѩR;ѱr FjFsv@o]qP=!xj+@Irc ;2t.SfYmf3ND@,^\\Fj@W|Xk&,ϠȼŜrZWssEP:FY}ȒU[ "HX@=#΅+.~};Μ(3,ͮSqmD#iIc#ES,Ih|ynF4*)"7MUS?JxSE+…9Ա,2?F6Mw|ŕROl +iJBoړqj.v}T_&xёC" #g-m,YҚ8Vml1͠lZds'ohlQ]qKK~,luYJ+o)+SprkEx}XË@j_W*͐ R65Jew( J;/YTM{˻f;)q|;5ZNB s9X/- ʍ+1r̮Jkvvpj9|FKܺzZ7CjE&#> stream xWK6 W`d az(rJAErEI*</QtY"DЈuZ2yOk2`XNvԟ#3D6l 2zԼɨqYxcCqG9T"_$ši;?0x# EV`MB([1+.Rʍk3u>7+97% B Ec:tfJNcPc{̀u7R&7#ב u JSJ?EmJp]A>6Y15 3_.n /X45f}6=J|12 3+垗r0ޑOEYBJXSi|{_p8Y7W-]UүSj󡀭ᖑ%-#THѸ ˖c}]kU$-0Lg lC} RuՃaGaQɚV> oS WJwV(mإfcţ =&d}$B|# ! '9,$y'2klst)N"\zG> stream xWKo6W 9R+@ݵ=9M n\3!%J \.9oyXF}o*4m;ð~[J~zj>*M~l>jtwP_ *6=ΣxauI퉾};*l}ӭ7Iuz[ gGHum y8ݑhͱHH[MYwu( UBTy&8"I/z}x;h3 a4]7hhxۛ!yޓgMx$W[UbGl&))i58EJ4ӑ/4tȟ*y'{8U{wY$< I}nظx~1D_%[SZtqc,_6A+ `wIf~V܋]AI~G6U8FcDm`HdVwla3~QԺ9jT<7@_hGOG̊j`AFDYhOvfh)(e@%]WS >+HIVHp4ɅP.9"A+9s-"Γd9l:fO(Me"/늌Ӫu_*/6䝼DPi$bb6ʂT GE̵@cŹ=TmLjr||]6NKќuKv!=#Rɲ]r`NHˣiM endstream endobj 146 0 obj 1121 endobj 148 0 obj <> stream xWI; ׯi*R+Ro8 NB .}g)<ЈLpNFJ~)$n=՚ ^?:%OLCh5w]sI'/,܋B "Qwv/ێ0  O=_Sċ0ʠOW=*3>m x=}`黸T>Y1t XWĴk;l&/S ΍Ia'!契w;_ܞ)-{Z%M&Yx7UR5.5pj$YH{EԁQGrM|f'N֬^#03wW'!.,CĪ5SE0Ww G8Psʊa,J9P%uH*a9 %n,WE1ɾaFv VIʀ%guo7[w/h΂>;0llJ:(LUPN2ot7n#(-04.*WdtNEB xxV\ZMćF֨><.[ .u4un MB,]|xEMŐIl f:͈r}&I|Q]n̔2կTFGUd.OoTD߬9i?X4Ьz(9 lN98[bY$pH ._Q.kSKuG?USq^ l2c2(">2 (dS- ]^3e>|܏kqk37_][u.7$>6 ?GkCC0VeRfL#1,KoMLGi5TLFBC̵4oN7hSQ]DZiَ4ŕ G")V{& endstream endobj 149 0 obj 1010 endobj 151 0 obj <> stream xWn0+x.`.CE @EO݂ i\(YAhloȺ6zRZm4n;ZOԯ({Yiz+Ļ3rzWxU:6 `jEx *vXͶÛe?]!US` 8C!=- of5mX~oul-XyݠlXHbXMX.?)RA~Gӏ[m:jVnl6]u8q J}AK!I7PkUd]_lckEіDV@7մ%֠~kDn = +Ur'{Ƨf~.^Bg1&TxtՁ]rki9t,G9FtI`0qS Õ8!{wR‰JJYE WsYPbW#&is6ኋ)VWM`*gIП3 tbX&w)L Z< ِ:%UW ȵD~?E(rbʢsd>}J˼`ޱl?B'IV_ggR f'S]nA)zn;WW_vߴ8 %K Uj( F4+'7^Fc5F )%\ !FRcjLiIb8$<^Tt~J&vn)UJǔ/[%Œ̾f^ ‹ԧk޵6,7 hULC^30&UVV<o2#a.I_)p3O*A?0&\3k[ endstream endobj 152 0 obj 969 endobj 154 0 obj <> stream xWɎ7Wl`dqn@h@(&C0< ?pV4cJ4UdzXlp1s}yЉGg2{4@ ?Әvx2+}YEyCǀm0_6&adh>%` 3MGo.8p4k5Oђ.hB\LbZHM?8n&RMAls4"_Nμ>{^n #4yy=^zd ~~Wb=a,Q- h#Ad\zvBkΥ9܀)qy^VoCfgP6g{Qd^}s6/ᡟ ~Z&5Ptl3jFyBbuKt~g&Wr9){mQAf3?O!-,FV;5"G ]yl4՗"5X&A|ЪcfN$%v5Lr 3;- ȍ#+r5‚*BTm-Pc&F +SxxP >1n9,CNL f!]2d*7 K5j:J+{K9Uhc>Z r4"|f{ښBxxI7v'Iziod;V5Y)K5>Aw隄8[ځ-w {/?NeBŒu7GnG1m (6 (lЎÝy~Ow\nPN{"Jw8GO+٫Kt֫TS"Q΍ԱjWomܮRJbv&crtd6t S_!kyӤoQ7ZXZv^{j'KB+F\?t`C0pƃrd-yK4  KeZ<>-z~Ǟؙe3 !4/)"6%v\c)|*<c` endstream endobj 155 0 obj 1084 endobj 157 0 obj <> stream xWM6 W`d zvAm\KMmj4H=>Rƶ|kkv1<~8ؼ`^ijyɟuƶ }>l2Ū"0`F:X֧F_kctO x㝧3c809!Kd^V/"+A͐Gm);\u)L? endstream endobj 158 0 obj 1022 endobj 160 0 obj <> stream xy|T0~ιΝ},d;$L6HHF2, KH1#I2,@@@@ `EDԺVuKh[59lb}c{syϹBFq(Pl-#^Ev$}z?!$T670PPP tQ&Q7PrJSKzCA涺ixZj#P[-9(P΋m]{'P>j^zO!FH0|@ -4V7Mfd1N;.>!1#{})ig3sr'~~fǧ!B}FÃҶhϠf| u h?'I;ZD(s+ i Πe]؎ ȍft{৸ "L>Eob\,,$ z!`V T.5=k}Ӆ"/ 0s =~w&w,02N ?\=/;4Ta7ϡWx)n ~kq0v9MDsSZt (v/:BvFOM/ZAVƩx0އ!")"[~NS=h M3ԃ<Rt ®֡- u|E{уS@f<_qn!|į_$?%g8#~&Eѝ#_8P4Of*C7`Ga ~ PN ;8 /q#=j|ލ^y ??Ÿ/2@fb !$dlRIV'OuyE'#⬜>\7]ʵqn(=Yt>?̿K07 w kF\Yiܮh rBA$^%^-"O3ttݏ~B<l\h5+@I/ Zp<:Ax&} Фd5Y[%s,:@>hC0Z0o-x*@G=n.FfIx } a%rГE-]|Ѕ4ڂH% > K9n"Ex@RTAAmǕBp NF@ΠyKR| hGsH{W\r=5 ?C}lހc1>a~=nŷԠ/5COEOA`?*4ڈݠWv QXH P*M 1`te`1 p:$h5&xq_4hrrs2ǥ')1!>r86d1N+j`"FZ7O͞E˾ TGUPU6WehX`6|3`1$L'#x*o髖{1|+B4Sŵrioڦ3a# ߌ>+4ΩY:AZ77I˥{,*VgeuU7g(hW3WdaC> }Kz`5yg:7uapی[L۷o{-jԲe0NJEW,.nETWJkj/{u龦CE=ޣqqSRy*$Wpā/sdؖ#UE@hA B勆ɉ|s@ z:VR働Ldn2O5^pnFvi {T'o}>[Tk4җT8 ڇ^7#ʅ8 kʓ2FH]C [K#@лyaRѪ(%顖ePpZ1jӆYX{iӔ^CJ{b_UrZKƔm*kQ"kIt|*0IZEV^vr{?Sdsڋ=F[hLy9X0Fʗ,߾]? e>l{`dp*,"q42ؿ#lg5l OɢN[x=B8"DE8)p#V#v8CbP)}^SKK9 h`T/ntB.t55y8w㼟G)]#v~Jn8-1`Ykj|!]o c-fȴ5ng|n>l8$Q3FHQS p`ن|tt.BvOBY?YiϢsT2KE"eʈTQK6)+̳ry8b&⏓]ȍ۲+qWk &L(6R&މ+voA.FS;ŚRٚӤ'pp.8"gmEqa%H` 0}<^eZwو[w4_l 8|d,w-ejJm%D9݊Fs D,zOiұ2Щ}i@["^.ثJ+7-ٓko۟o_7%x8l擖ׯ;gEnn0b@ <'pqgtNg|!w(PǝR2R%UN&'ieZM&&)AHFTŬCbR#;dZ!cGl>l;R= kFFdxH!!d'^0y*YBC<ƃQQ#Kd&zQ)h9,?NKs!ck,h.35+ f,<㩡5u,쫻:ا/G_a>e6uLX3<,5xș9?ڢ7ߠxoA,|{3D*.Z5`]IsHez̎do14mYΝF!ò+ 3l@mqa٦:OFŚ ߏj@OFV^;Ŵ4,jL<{it[//~/1n.lNX#q苙eĬq8!3cJ*bb&xyg_?Cnió>iN.Om^74eTέ:zݭڛuk:} 5I#d\@f|SJ1xNòXP,3e5CH-dAM2yWNb4Ĥ/jkլxB#tfg bY/ɞGl%Ln'4܇9!㙸RE1j,Ztss&|h9kL~#z.r84 =X" S >cj<krEK^>?3礧8 JM9I?1.ԛz)6EvO^Yeű@RI+IJo0)`$)-KzG( Lg|Uz@t%jn5g33D"zQb&UHVAAaA q,H /LRIscKz:nSwV/J=i8풆.?P{ǶV߰f4'ΝP21T#wn?|Eҙ[*Er`̨ `+bGD|8q[Z6(jt`%tgJixW]߬.UxWyetJt5Yְjއ97`4V#‘8R8st"j F ${K k;DF=Z{fۛ ; =A{ XE,z6q:o(ߵ\8V`x8>ZF` :56ևPI,밃drv?xN Zirp]B:<.qs^ GU*Y( EgVwӧ!(@-Jլa4lSɐ~" jiO=κkNTp"pwcM\:v~@%a/D|1ؒn^glx:;tu|Hݜ@ C7>3 Rdflu:.w\(iLh4qlw:lVi2b79q8 \?G:t٪2XH@ˍg: N*gT| 25, U!})\19FTpV?<߹P_x<<,ށK16ʵ>)#{yL\sH/z>iECKd 揤mW 졖b|y@!%(eLΟ۬{]yt9úӺAPs ҉(x5uFЈ<$ `<K>ٜ߭|q>P]ºJJTV+OSjӼPHL)1Wy&(OsPqtU<(5Q>O2Q%50O<39̙o|7ʩ/ں#nD1zLDSspnVQܠ`}8$tr 9`%V3jJg(NU&. K.LT!Wt ́q#-sXB>XLZakYH닇,ͼG4<@qLHd xXc΀ ;,_ q~\Hwi#1^7W,)jn6AtCd +i %31'N.,T`LpV.KhiQ{|7v|}+WUݏ{/ ?mۮ]V.9e&!rOdw4Fn{O2cddKfpõpėq=m.ØMM6%B O;SbQ (UJ%Dzs(V%A(LgW8[`ǹ5ԣij:!S:H Yq M!,=e)?Ϙұ~7w_֔t˂/nlقW*[jddltoة;&NL+Xx;WXA(>!_C4Z(F^5Fkt#&2 I!Fb$88`@ԢzM?0"4\s#F0ZT5ۿ*Og}N'`RaS8/sJ>Y?%"vb-| \ߺec`:^Nb zAyQX 5nSd# J bu) I^+\o's/ыO"ۤ@,QV{/$F;@C*xiRp:a֯8g!.G`H9YâbQ 2ͻ+(u9s=r??GǰϸoD$N@n/ӄ\n7? _}5)A5u-\`l 2@`+.Ň!*ӯNe8 W稜,<,xT/Swko7VC$|1Ƞ %t4zCoE^L i1v2`OOHLT_vozqOZ6ufh#dOd@)SjS6))@R"$HKLܨ@~K*DQQ 7T KIq,g#,C+1MD[y;љQ#* ]w"uzpEsa=)/ÕetMr y3g8rRZ('Biʉ˄HMl X~c]Ei͓T$jK)AvttS靐C;q ;U{zS ϔqt&ck<KvW*'8s9NFH1O@^ $y{JAtN}>yX藞Y?,}ipح7c(qm;<`YJ. ٣f9-;QNyN,2=),uSǙrkMMM=r$N?;'v'WjMʁ:^n$ͬmy+VZN.-:l׹?̻^8O6Mj,n)Xx%֬'n[=E73S |Z |r&'Hc%-z43%ulېt<"@VN>Je$JbȉiQqBqk"k .*q a݅4JOO+^Y}|w۔U1[\3 ߊ _='ٛ$v㬺.5o a[n8!Kiuk׻no?=ю֊k]n&HE9V>r:}nGl@* \vF͕֡:XHiA*-bpB\z[+HΪX*qc=߽몴WQ{#GnQ%)5ksRCjJNS#%Ej!5շ*4|KH|&ۜYn{cko0^SU>g.V)'PZ<f ;~u4e%2ɸ|.ƙ/mB5Yai#7.m/xit +A3&LyKyt lͻǹ _Xr| !̄Ћ]ķ?%[m;4vN̄(x6|@C5 I{vl>l=eՌ椖ΊYŜliR8N#,v⁸~At$ % |:`я%v{=|NQXCI; {35sة38\诩C#ǡ94s 4">s6sc$u-vλk7]{qx_VF :roÖϟ7uʜm7]]vkAw~vY`E$Fk%l2 fu8]vIǦ8X,$X6K5y 6Zld x &NKlFڔӹ9f Oy2dMhf1/ƨK'S 8hc 5rR(zh/|>>tJAW-#'X7 _:pќMg=-OT95d⃛>]Te{lu+쩛}e<~/՘{y뉰s_5&]_ X,@V3L:>0٤ju"1ȎEDC&^8 bObˏOF@]Vph@-SNgEVmsmx&xЏ+׉ /95I;ʾ3'{LK:r]a_NNa-*ʛ'dK[~過gOC 5!>'ah%xiH߉f" W'kA3Q?4ydVEt1/stU),=3/b-9 HXw-NPX+x48qaA7mtMp s!:<(g 'E?#t i֋YN]N"b4rSy~R&lllu3!f?_:kT^LD4\|(M`f#[o@Hm;YcXjj`fS5(ï*C r6UZFԠWa*lFZ6 KU?0NVa4e*̡^ydVa*Af h kݚ:TjznPa`k7F6q%*lFλ`%T7;_Ta9`´~JS.EV Y ֲ*LW3XGF-* * uߡ7Sao\ T7_v07* Sa * 4J1ר0$]ًש0tF*TG /3 UL_(c[lgU2Ai5~ }+ka*L:Dz{U?`7y /*LDaUaHdORaZ?)tjq2귨0,j 2Va~2$پ2~´] 0E3* |O@KPjG!Ԁ2z% եb ig ԇ 5?>qh14aNOe >(K&iУO#ZuՁ½:=sؚTwZSh4Cd'y:znj&]F0.逖N1#ߍ35/vQҵia+] utsPKuuQP8]K_2Zː*>n` >Q)7ֱtY"m0oMPwX!&o[UaU*uՕIXV9fl WVŨ*Xؘǂߡuh#Tp~BjghLCJ&1|>*狕%(^}=;+y+c3Pa(LJJ=fG1C8&:a*+ h*X}*=~kcdW}{ 騤~g]c@ž#|aڤ6eM˚F@ziOjkE~|Pm sZgWW7 WixN[}vތ% W@j3J#O+PYL+9nqNS'g\KwR`D u endstream endobj 161 0 obj 15949 endobj 162 0 obj <> endobj 163 0 obj <> stream x]n0E .E qC@bǀ}N?@hG@, ߗw.]8$gQ=㰤?b{ws.ØX1-qݵ4]ylg8-a^$w;?k{ }?Սɒ1;:_[{uf=p<,/1;#Ts/.dYc6}X3t>ZBmͲ ,+`L .;p\s_W,++Y2[߸1{gm}Ա _?dVп܃Wǽb?ze_F͍蕥  ^ k8oppK[$kMĽBRc_i,Փ5 +GJ-Nşq60 cziF~T endstream endobj 164 0 obj <> endobj 165 0 obj <> stream xy|E0^U==sGL$$B @8"F E **ൠj eE}]]]uee]QTM'u>]OUWOUM ##Z865tԾ:=ʗ?{5 #;CI^[6vMBz%4ffAZU" ֳW?B֎ƆԽ5[?A}+ mZ߉-?PAigGw;('!+ܙuNG ecPGddXmvx}Ĥ%LK_P88T2#@ډ PĎg4%كE, ؇ǢG_<ȉ؎Ґ-@1urэا<3tI|Ul<NcTfA(>>BmD4nԀކ` ѯeЫ]핣IhRnoKO[SXkEP2JEHn؇(բ_GaL? Jt ڊ} ݁@Ql$u\ 4-DmB؎g Ď!r,S}KL o{]|S(Z7r' EMCW=FfA?YC<78 +806+(f[EP?Pz Aa'N32|+Iy˽cawzЃh+X lw-^|W2Gfȏ.Du_/V<p?>?'I%5l&_r[g~%=ZA-k'c TA zZ}BڟKn|?Y"M%d赃t"ۡW*y|@F \*7[sܫǼ| e (:NRϪ)TfwjHMlUQsUl=[7 : [h BL#Ytzv=* =4pQ]jμ!H;EQ 9'D B^| էf \al72Ph 5JSMmos "mA*. n; BD7Y%[T)"jW%+p1dI8d(9I8LG%cĐI:Q0ݮ@-+B(5m[BcG3c7>38b@$4U(S,y'̇B3]nq eq 6[:FaOXEL2 `NFձ>@alv)B+R")chթU33֫`V:Gv]NOJBIғW֏)myY\V:miyy$f<=z{cuN ܙ}ovl7S>ʿK NH}zMz ] s92"/)x4ZGy2eu k9h k w|h"iG8p:[)>),ߢjZBBomVN$u&O&q+M6pM)IAҳG0!Qlʞl)lbAq5%-.g#y|uթLJ?fí8^q\"7D]0%:]0٬"..T 跓v/y2m=Waߐ` mX޴j!tӃ黝Xtow:7?"zJҊLijn~(MM͂/)ԑv&U%Q+4[B%adMO:OJHR A j"&X'xh(3cBHtU ϙ2ʑ7^XxѠZ49bUlzFv ف8%ŀb(dY8nMO@:S+Xe--E ΥhIƐYDL8*+FneE(9){r)w\ŀ-轧5Wc0/ykٜ_9r/Ob >Z:k[VVpLɺS;{ݯ/^ zFբlP|8yY&:H9|œF)Bj pUXSЀR /qRL!;L(J`m IF)ޓKy7I!ɏް'gܳeOơQ3mHE;Je!]|VIHf1G:; rp QPa\V0,˟p:LdIE (:u+):ΗiRHNIKiլՐ٦zAJ).KD:@5$'8yfM Oxq3_ӀhO^8l|!\oOfFEy@, 9[ǏZ@|88[}Le9/gF D#;N36:as*۠m&%XmAz wJRaR}Rg$!j~'RD}6[NO0#I^kٖY+^zWW^2dpkh}I[L2|8Ա 0ТPHTpzBHPz BpB Z~~tq D^ۆԫF% pQ6G4*͖z_:$*}! )RNs?PNe"f`} -<掌}X5O+#ma>z|Ʒo[KDwLePdnicr B‘Hug!H=m0X-fO@(Ɩm6[2V:zɗT@rP֣F8AoȦY<:%n ˞I+~l~Lg/f龩yU6.蟢CSw }xށo.9KyKlJ ^ _Yc  h  ދ88axOg'JĿ؏jN.fCN))Ӡ_widJI~ȴO[ai+)ђRB.l Y\ϸ^qq.f+Xj@J~-flsvLF_BKSixMdjk;] °ԍ v/rAD\ Ԙ_4#y[2l U%!R BmVybU^57˼4~cK C|? *ٵ{1^@1}I$ϲ?J:ֽY,ifڽYd!(S Vb Vlh1AowܧGvM;8!%ܚc<s/F^~4znY`mn3_\.W I AYAv:.<-wHIO_ |ŻC wUMOt/Hq]3`,W_+>t ZY͎`C| msIDX2ROuD9 X X݊K)OyR!Լ }*;TQ1tu\Pvԥ|ĸ$K+.aNǁ8/bx)o+oIF 8/qr!×/۔^z2Cu;n$j~$ȷn<V#u,2`, Rrd&E,یFf₆2L7mIf=kddy 2oL@~-8%2(HYrq,qKUh**LK}h '}ƍ:~pt.zKx [`> GƯ)x )0oR„70ﱜLsgt};e& *4{8SE'8\>:$ (kCTa^,?Dmf0qLP\L`!*I{ sz sȠi #.@*!Q@õ~l{Il;>ɽ|42Ho# -1D,1.!_MGozz@x zl4"v/T4*焚 (B d@2އD Tf-zBSФx*W52'B2_"[Z%yBy\\uǭCu8hOJ{fWQ1{]5F{ }µ}w xB4} MC,BG HHzpww##bZ vDS<HsiN=y<TɺORWaJm |l7?67scMu+g73> ?h[w碎_=! "NIr뺀-PB љON|OճȶܶY$OWNmդvϳ7]N'g˅hlv3w/QV$'u^< ]]|0#"7ܬ #+w]})s+u`߶.ٵlz'Ňqa~.ӁC{YvPkH Ho:zPFhS@Ɓ`Y rxAMzpqn YHq]udb=19,T/ DX 2& |}ܙC>S/5z{ . 64n1UqΫ0g=qb7gl,BlU8 8' C=UW ff20CxWW.Z7{,%.0/ϐuKoꮥo.@~:ZzmhEMMÿ8)]2f^WVЋzO61K5NaZNP>7. 7^Q=d^j5lQ]ސeg12g¼}I8ѕ]1E,9L8p!  YB`٬O|N !_CPSQWwݾzIħf;]_յ7>L6 o$qH P?R8+pM |tGfZ&,Aڌ@<ܯ6/<PTa!գ[czvX+/0/H y}I&mAvh!̘:'lA~UW.W1L`\mZ\a ך.M޴)uPC%.U>"lgW)/nF RFYJN4L+xRoq?>/#yyGuxBj13ßo%jM1kx7] F.Jy]Gi &Gj_8ȽNs{I2@#d/e?YX_d_; lE m. {u_<#F;.yq+73Ϣoon{ąku/V5 p+A3%C\%mL"vs쵦cyI+K+I%Wku֦/^[[pvah*vO*VpWgM;a7`4rLc2diXQq1n- _tl(((]Md,F>]N!l/oB ;ʨ8-`i9j;HGNv TK3;kX"HH[nfڒL cZZ}`En*Ex< UeE .iy{p$:٣wU* I9-N88TKy ou2k LtJFy׼|fNh1LwNt"%@fLf t*&bz3!s_wHm b%XpޡIxvm8S)b:Me;}tIv{.6f?l+?k%|kEyʹDŽ5/_;}$\Hm`nV f\dJ=JNS]dx˔XKT.T7dry I2CjEnXAHceFJCGE|$Dbv$pSM|3[v^PhtΞ_a\N4k_DOF#)HAu} //z_{կLLLZ軛ûߑ+O+J>͛Ks ~!{Iڕ+IogƔI6$ݒv(s;]$b5Zygz*= Z-G B5b,0 A:vkb9l#7+3N* Y /”d`[qn|+)vha%Zel(at|%•;m3d ~g- HdZ -'>SgGOMuc!XE . I'/XI'ggPJ̌5z^rq?I!v:q}n'&H1Y NS%t3(vbZRsH,| KX_LS`^rsʶSIRkp?}Ӈ#_0Q($ FXF\%uDziăE/u|6'REO VSלE}]sUtY<}Z!:뵯\+D?~7@K>"f,nϻfEZ{;kO|Ȅ^RˌHF18ϸ x7g.24=iz$aGFIdIDF4S yg"Dt*dYH޻<^2)Vq 8~KYG 4;:k,c-"ф?Akg vq6Lz\}q)g.*.I.*vt[lY1ڧا4ܼY-h df$U4Mv٩Ern6x\6zqQ Ք"D 'pCNw Ts?:mkX+5VJZi_[vz ?g@ӯ=mq$OE#ɣtTZCAO֭ő8Vs9,Ck"/iaqŗmX[rly,{ 󑛣!6iiͷlܸ2@~uAĻO_'_Ыߨ)?log;8d{ar l [_uOWu^5AI  SJ @a8i <1JM &*#KK>\Χ?{K_Mzz$~sWU5|Nxy#v&~=!ϯ5rOӯ }W̙9N'?/yCEO \Ƿᦧ|zp5Osm>I/EI&MOEBfV'>ҝLF#FDLwHFbzŌ'j3a}Q 'J0W;|;[=5\- AJ>8~I͏qgmm{h\qQ_q %{R{9 BdisF3']PP+/2-tzj v;OKL_96dN~>opQ?a-V7%۳!vɰ,߿يj鎓9ܑJ;"r#6s㔦;]$䦗>M;rEO\|E[{a+F8eE~SŶ1j2k#[H6 4aaW?56p"J1HPc 2~IB0/zPWͤÜ߄Ϩy9@W3ŀqEܳ}_{3p!Y5=CȋP!E#{ϙ5K/ >NM^]!}dž $8At(2I]jЇkLLG 4h1)6babe쩂U^j}  +p(wհC➲U0cv2sF.z+^ xFt+>{$H8-* G]| txll\J仍y~ f /$n韑"ϓF-Kӳr_GjVLtx;# BYh)A" _RJ.r=B]nq8(N²(cO e嗖V[Efߝ۝ϸx&w+ZoeS~˄]IRRiߒ#)Rǣb44 |V(Y_<{Of9V9[5GNܢ4X,GS%l`S4؀`#jO`n~ŖKFgX4 zs(zHk5xh #K 2i`xd;`i`3D`$X7{h0,@yFy`<j0잏,Rx`'`= כ`[@__C; j0ۦ@_߀}}` ` MX@_ŧ@_' U@;,S\eCW9ܞ`%g2H5]aYsl`%f2ڹUi;`}/ Rl7ik?08;_:N 3بѸw rZz{°{{a:lqĹҢayo]0j5h}0stoj`co[6b uQF uF6{kGѸS`ᦛqc|vjzSXG5LycmZ{< #v^fX@oQ+eu;v1H)=۴{hdzh3#m,&m-^z L"~/˝j7V6a=2w /VjmȴI0ΚXYi}*a-L:5;- VqPGZYN&{qnlgog2##E%F66ʛ5ي֑qYE>z0ZØ82f 5 ݌zFItqyѴF\5.;=OEХiYNİɤd,ng:>o`2b{xíw2jczsxl `S ]gFk|ڠF Vjg \7Zx N8&^74ڻ?S.h1yqߧc[g=Fxb uhb=kQXb{ @I( dB)p 1)*Dtudjӱ$.8Thwn|{#ppsCcXyXVfvw@RhW:[ = J1e^Gk/-V{c (_ڪ̍,oV憻]M" t6 9(hpW7m(|53ܓ}t kk>Rw54V*qJWxy'nR"JT]0OУd(g*5JC{n@`˻:[֎. +"@en2hzV;i4(zۛ`"E=6:Jw`iVݑyJ|P!:JKo[C; _ilijhi@& hhWZ:&n www@wtB ~ocњm+}&6a=0F@jpYO_'ڍvW;V=]ᆞ6xD_hw(]lͽBmIMgmkx4&(v^]mvVc%4o셎l4,ZJK0ҡ, V@ܵGzCggNPd)50pZ Jh2hԭo, +R UtJsLZIP>w=@n@cOȶ5,o4M{Hכ"ݝ kip_wgC' 4{"ݴaZ9/McƎւu/mϧ }V( Wf̟^5r5*Sf͛L:wʔSf7&y~ ukŔ&0PA ed:ekFmg&Gq`< k ˻aʉJ-lбs`(wQv ]s3( ;YF4z{ifHԨ ev y#/SnSV76,kvY4ݠtw#t?sθ<\Ŵr-beAF"tB ѵ;ΤYaG(eGw0*HչV3s;b|vrT{ wn@5ڵtif[:z[@VG}quz@0h*nd0,X{ҘNAu7ˆ<&ZCOCZaI`ƇJұ %iA5 T)WRVRfGamxL!\ kNuuF/bSli3:w[JEO2: < w~~N?nm?nm?nm?nmmw+ 'BV{N?ʴF9˪Ч_NAOUs 3_u`g.d:i,w'5b&kј8S|%?ϫy|5_6>+:gK7xI5Pg՚o;#Um/\doK'ˣX&z w`*XE wQNrwpD"@=cl.Bz8Uhn{,6O[4{[0QpW@ i#I.@OqkzWp.PB)$΍ ߵj{~zdMJ˪X8hNω{R8Fr H:X]Ek89zK;6;ݣQ8؊Ībō葱SVCjV3 K\`ju0~hq!B"6^d{7$29~{Ge]At$cņX6ôHJM6BAցk]lv'kڻ* ;k!+6c }1󪷅d?#, L4rTH6iK3(>YiWXFd "4 #S3^q(6Y]O-v(Ykh%cDPmv3;B,\ bDL2/ /icɈ<ۅ/x)21k;"V8&:.fU.4r qW*$4 @W M-Ur$NEd@d@d@dQ " ҊHHHH+ƛVDDDDB    E$@$@$a0A LE L&S&000" Š+a0@0@ " CnnnnEAAAV듃* **,hا@*@*@* (R? m3MC3eeeeŖAZ ,K Ra)""""<<<"j "K# W1Ï*fOMo7ْ75WXD$+G{ʳL-#FBEh*w%G>/=}ײ^EsĹ\vsZvVˆufuũi \DFU.*N88a}i<{^w38OMrgqf_y_ge? t @PAR">iԛ\P7dP۴U̗63R,;pܚJv`$c | ~+w lf-O^`2_dAXGqmm`ˣSt/:(Op_:\kӰ[h s' ȵ"h'-ʇ(9`}Fz1i)ׇB-r7+C[ܷ"*PɅ–׌e32,rB>//emNd)Vd ~ Gs9CiʀWuU2Rʻ9S]=Ϭ=Z\Gy* _o|%kw[qN%} -=q!Y|>RKXķz'}}7:WO]J1OQOl۩sC;$z#_=OfG/RV?eRq*}hC,\udDy*wdR{°[ds 2p>0Q-qdklf~olVqNqMcx`*ئ'bc~5xxkU IT!o!UgV!z՗ƿGcAL|yxnjcx;Ci_X3 0 KJ~qyLJ)Q8CUXaދCbL2_}>+yfPcI+ۡ:FQ+F}ŨU} F>, = \yQnNwv;ܙWOw{:8vSVwj* Ũ gTՂzgtw~^Fqw40 o[ݣ/%iXŝl^Æ_?*H6++MP 9nƭgC).4UVhh.mQ x\SFu"n] > >NL}~YL{|t- ~zI(f[Bh!C} ]J%el6jFTy=^|{OD |v{Aj\ 涡\Q9 >b endstream endobj 166 0 obj 21064 endobj 167 0 obj <> endobj 168 0 obj <> stream x]M0 0ư+EHd#5 H w^zH؞|{qͿ?՜i6C_)+ cn{|V=Lyoqyz_8]ӏ1e~ZM9[>wWkax)?oD%Uy}見6Eњ~f~[s)s 1EQ\-WRr157ʍοp^s_{c;;{+;=wexe7)_o'0 gIF.%k}K7zuW0/qߡ>BAM$BgI\[ݟB OŽN瓿Onp8ߢ6Ѧoa_ͦ+"~6<:|_bKhj/ e^ߠ endstream endobj 169 0 obj <> endobj 170 0 obj <> stream x}k`T̜^g7f7 ٳl rHB;AdIZPj5U_*b[  Vb} XUa{fE~_.s93<$mBR]KkW# -lBkֶ7|*uk6wBw5hz-ˆ`VhYBnQjk{߆?px{}i{`C׽Zx#{W awu=`O? !K!aҏ@D`4-lw;\DG8Xy%( ;#%.틴E!@`?v1DWq rt" HD.Dc գ=}cCtge [D p|Q&0TTq^x _̑y #Cqh:z_e}_F.bPzrH)i ,h6@%Z 6ݰt|ZP2@s<Ԁ#dp4tF)3EHTT ;kDQ/݃E^' 0p6kh`;jrZ(`@uW7,\ &E'QUh} {z+2 pa3++[2́I:r7pqGa'u{v4^ Ű^ft+O(ڇ=ћW''s%I9$A3rKn.>Y7l% "'!7dDVQx 8 |C-h</mߊow{oI<%ud-_QS4&͏#h-~à?C3Խ  8.&lЭrx?a$~kmgW7|pMeV!y9wUI*~hEw'&ۍo~߸^$XE;?y%d: +C2N#Wsn\ǭO:e!TgdcA{ѽ"~oT+3v~¿{ a+NoDJjKʧM-+-).*R09?/7';+sR?=-7ѫxR&$'%] X]X-f ٕ&%}s{_ 4U]Vr! kj(&rTT}0^p?W§<|: #JWl%p-Maf,߬)'64Nu 1HB@U872ͦ$@KnI^o}Nvj#̰-Yl8+,e;Ж[e)k Zt {;;pI-Lb$nK+-[6+C Wk}=cIZUӖ*XEWBɧ[6UҖ˕7׺&H0Z;!RٲdHf'C[mV=9ٻe16X>1t ,e'A JFJ%X4|1 Ba㬦-TNLJ4٧l}?%iLjT9F GpVV834  4NgE92_@Cu+`XPXz6֩a_Wp rKۚ%i}:`xONU@\AV 5 ñVpI^HǦ]5:3Yasi"S0jRjzc%øA3tƆ[ Oͺ~Pg|:Yr}Uࣶl)U[Vٷe?$tU6H8zI[axjB#qQ&.$s$c6 ɕ%R~|||rT|.v= .: kdp0v,%bDX$1Ǔ!Q28I \'M:#I NCpdsj܊rҍ&nt/#'@?vvD9|;?/<+??EsR&36"4067x^DAh-`d0`0R3ZWչՅX-/ 1gys&o*yHS 况c#ڟyav#a$noJpq/pm0ntm7Idqc\0Nj FENħ4)"xE/Pb6.ssN$x3ތE911 64Wf3+N.%Q_Rgd,c#a*%pXdJBRV7= wAgy!T8ȥ]myߠ gO 7f@+$hBY9l V0A ؒ)%iljTIJ$MoJb˾Ň73Kb/͙-i—w>|92kݛ&lo? !1'(>#Ǥ׌'л F^^x I|Xo<#.s% +,X6%ibcQ|.(*a-wE%WƓTvpcq4Ǫ>GE?@8exhQ6W5bQMUDxCF!&#xX'dJpjH5{EtD<@&"LT|#Ox gGȼNJ7p'Avw={R> ỴVtgQe1lLˡHUq> ̽L󣗀om@ԴGEA`Xl\˖DI⊳_=-{[B{o/]NvvOϸ%/ߘ-vAopTIXX9?FA8fc<R<C$)Qbŋ:N?@aiOiU_0{ بG+)vO|x n_#y{WްK8 K8aے 燓Jx0A9*?@>4XܐqcI7$o<'*h gvT%NߔxoL|IyS^N?1\yrP{rtG'A^v>Wn<95Ky8u;d5+Xd!c3q99L5S`uFVZMǙ҈:gs$ #* R2(H'ٞ,@K(Ѳ>dm- aRo Ja)+svZQԘԄ !p|ޕ9(g!{N 38Me yA @ 7X5!(X5B G 8 ҭkWͯp;mgO?6JW6\iu# .]h2`6+[4`Kq8-$De" |A rBlȾw 0Xww؏#ߌD"7mx ׬U=7oF!k%=4[-ss2[aޜrw)<ƃdO d"iD9EJ6[sS&yRSWV[֔y*GW+q=ޡx< #{"$+#hj`"1r$T`lt`8iK G&f`"L5"\( g\ Խu6pg#CXcDz۷dQ60oD@&_̥\?~ ~4|Ypy'Y!pԍrrh*㲲yOaOҩ؈KJdȮ]3?|v!S "mgqȼv5WZZÛ[<$7d>洑5FK6$cmx'-cuD מ43#j+҅sXs ZA@Yf'+NӠ@=FM`+&TSz@-zʱ D!2 2V;vgb-9BS-D~|qm/x%rvv\?pvޙuvUo,n&__8! 7-ZE:ђ`IC<{FZnnwJ]f:l=l{a~~tD1)<ņl6qB54,(՘KD,:J"$ˮHI$]`10x nm9iᓆLNaiA{B@A輻E 8`K]gϻwYf {AL/D0><[er äbˀMi'9}iiUJ^8X.N,N8'Mm@,s.JX$1.w Ƭbvoږ}!硬g?KL^*މԴtk\&qDžm. m#93 oÇx.Y9Lkv^BEBm,\אz̏cE/_ [s=e0=ȓ: EAb7L&Zc2QF𞜙ZfO4guF͂-y^i=D|ʲ9ilO=du(cϙXLtCSzLI#zvu46)uRr x2qu`FyU'Fv(9N>"frE1C5 2U /}gZ]eJP^ T7lyne^ul3!̞q{'eh8gP"wpdz2lef GJY?Zd{cٕLwd <~l X+ 1{wwsd!w2Q'Q2J0&h\M##sNjYNFD4v3G**X K'E)"!qӋjۼ7]Yxo~^>Y]dEԤ`ZiBl8s|=_;AQBIyd%3)E[,8]74n5kד}l$y6vK|3gVK8ed'_Xu%W_,ɎJ0'-fB , 4&U֤hID.y92 5О͸=unA K~.&Mnk()nK:oߐK8Wy)~B)\>ig҄nImQ" RuJ 069сe0^Z@ Lیأ+ vϣۢ'̫|Wӂ)NWp3-XO]-Ȇ_-7'ѧ?p Yy%a< va-vKlfiMOfZj/K5U[h9{m?77k~[MwLžEϙE^<ār) M vx+챞#$N# p '9CtL,8ՇyzDػ3| |Bje-cd/k,8 EVHN!iyr%܋ J/dNrҶXo:ޯh??DO)"O{We2w?qC1@uOsBҟE '5u.~]|Vm`?ƒ#?K5={l4=_/.$hDAz"eh/rXB7̈́:(Ja)"Z`̀[3qh 'or2EqTlH4N3>or·,i}('S>fwϰ$Z!`Eyh~ik#OcvMcؠZStG:, ~DEa =NFph 9&26[mV1 AlwJqȝ: \aMa!E~ZE䐏간VogUڗ鰉M=76Srtʭk@O昧\OI8$gSGV|uFXeXMvCnm2g7~EA=si;(b ο"sEŎqmd]IZCHϸ ;{gގo?W7俎Is|:0;WPGYUcBG5W%7{ј34m7Z̤%|c3l_?;PֳhϮgף!t,rԸ569j# |kWW0_HQPb @'3vȀL+9p,3FǤb2p *FEp#H_ޗ7l 4*KZΎ>hRfutuBJW[s2;dζ~ҫTwee9p)Uf)Bk[zE``ˌPmfg[Rh 5L=u(z҅ rK 5}l"̡KXeIO%YtM)=޾`OE u(}tRSҕ%5kr@Gl ZLε=֍㛂@c-(:W Bͭml:{O9P;Z`;҂Y}vJ[F7 (-ڎlEcD3`BTZ@ 46& t(з? PonUBTtAe BGSB#m}P٘0Nw$ }=@_;tt1*`#aM[VX uml U^J=0z: s5TֆPڃP3Ǝ ,;D7fڃm;mtPconcz0buPb vSb)5e6GjzeL==6pE5gkL-ޮF ti$z͖55/o`` ]W־>{t㹴_0l vIuUKk(Uʥճ*,TfYTY9rjZ le1  ;cPE{^QOG6Sm>3;(̯k{AJ= k tf#. jU .H9l9>EEع6PGǁh@{W@f'XԸ {GEe`m@[`5hX4d\eiٍ#= ;vCts NV0M{ouP{nax=z5%e;n u`.@?k)Ρ b^39꽺l{}=: COp}(8l$Z\,XdL7Щ^siɣt'u}S)3 dLRJ&Kk1BL)QJʊʬo4FzNA=ӳ~2="͘}[!xzֱ+XkkݸYǏXE.{;HqOp?pnoȷF}7oߍ|nw#߾ȷF}7oߍ|nw#Ͻ}B}☗Bis'à:3m?ۿ?yt?rcL_Uއu}nBhsy$D#g/Fc/hd?197=&:=ggZ[=qlv\ xi_;_=t~?/Kyː'Bπ5{$mMkhL} u:?`K\&BZ|vg>~|Im;ѳPUt~rM)PCӧjOev[nVjUp&ڙ:8l-͈k|Cpr(~]O4D`=f\sF[±|FT"Λ~VOL-^(Gn-țA0Xq# e=yfzxBxQOLuzvw;XFdR2 [ЭBV!h0|n2x+)XBBB4W!MP!:_UH0 A;&1}QvAugޑfR endstream endobj 171 0 obj 15408 endobj 172 0 obj <> endobj 173 0 obj <> stream x]n0E|"R$}i?CTeȂgR;+ê95W7 ̢v0w@\֛ Bj^WWCk^i1XA-bsipGu/" Rh|>TmeK !is5jlAE( {2k>[筱FQr.=K,A r~3cuy`ɑYO+>K"X2Bg;5?5?f9_s~yD?t PwмpR߷dGU}  endstream endobj 174 0 obj <> endobj 175 0 obj <> stream xԼy`E?^U}tg&3p&!K3H% HP. %@DdYpqvEEw, ItW1]U|^sLB G '?'gPy!>B6aУ;O3e֨g B\Ô')ݏR6z{[{t `N5s`>ܳ'WНMpY͙*d0Cw5i['?3{ͨ0FzМ}AU}# {yvI/4%?Mm+B;n< Fq|~FmFѓh)5Zx4Hry}gΥ"1z U(iOפG f~b R߁f؆P|;5aħғ '3ȏTya<~n5: tj4ai(at }Yga6a<˽A މwFxig=B,<0Ɂ%B撻ɯɓ,_OaL)S00`94sWn3ɽ.p>ZU ֦6BNhCB6th q{ЇXB|353OuxJ8~xPKU0޹#)%jX HD!3#0&8Bd&1fy3s Kl6q;]>~~Ǎe~o.tnCQ8(|$ւtCy|YaH1%'y&2U$k2HrE|FdLz0Ux .%H*7P {{"^yÈ$c:q=t9v! 7sQy4q`+F  RT|G3gZNAb}^^QNƮ#v܈ Jh%N2?tW+o*"w =`Z+bn4<1x$@-eaHV : #z2Up3bhaz }|hߣF~8iBS83^64&ښJ?:>X^ w܉AN*usƒ7݁#ad ,A}ܫh)*t烆݊Dy( 2ͨ85Me@yϢXFS3Q5:84^={7Tѣ{kΝ:v(Ţp(;۬Ŭ*&YcQQHPCEnݏ;PC}o!Tk\J_W+kWb-T*:DB '{GBMxѐw&b䫌&#B>x5P Sn$$w(B{edMkpG!>$R H> Ho L Ct(j&Dl@[,qxL߫A0FKև5Ф;kcG70k3qxn_v^\Ϭ֭ 5l:a{oIo PidU %ʔoR=R;= EnL]7Ʒݶ8!_к#Jf|^Zw^=L5S{͖^t휑3.]YL(!4!o2:e*Ih݄r >5~0ZdZԫv֝oZ$_$ o;G!rrM|{!o(,""6w/PD"s$P}hatt'4;)^@j3L}k?$7 Ʈ}-gj8=)s~cFmہo˜/v-`53Yʱ.;6 _MRi ZmQS"lq 7#8pu΁eؿ-GGCQ6ZoСz @2voߖE}Aѭ[7껮vtYw'S.8M# }7@]M; !@Dvı$ y"ϝ'Q0@.WV .UTVJkWaӥsFa] 1Wu]A!ؿp(?9cl4Iz1AY}{cF?`7竱\EYJ"}: 4MWg';&yK,˴󢫙uuUGQ7[6;\j@`d8x.ч}-5Cs0p .A|* lCPo {Pɪ-Z`rR llZadV .Q'eARܵ[ҒX^,7/+-֭bHt] qo/Ұ!c{f6ٟVsG,w5HG/Y}婷R܊?zp-zq=;i¼Wq`Se X6F\yYy 4vIsFG @,V"dssz.ͱ L2a5eDSW\Z ft@: `*Eɺx.bkF}7k+w2=Y-mK RtV( HʖHҶC礴$gK@0܋ Ql̞cf"KbOQ}**[0m8w[g/-v2jkٿ:uƮ؈/0g( },V%jo+uFma)d"7I 4g}lǏx:veg} @ߜMBGvtu'@G%T߹~Ɨv2ffAI"`LbVKTN[fխz+ko=& i*j!jiMUh WJNE%Q]DJJ;\ L?^0k7wzew޳h7\yvf I?%}3:ٛqf($#$F&13$! k$9Obi oX/r^&=ravqպWIۮMcY@M%]ɭT:’l*X M`s6vk[Xr]e,^z~V_WNzŖ蔬h0fH M1j+:CuwǑ>#vc W/VMz UG>t~gce~OZhϑս@jpkޭ׃;ƿ*%+5p eymQ7o}1!;k-K joKTJ_}AYy݀ĀD55W[ {AMU݂"s#%U:uz#r’#$e{]Rv9^Q }0yjLL7ke r` M΍:ñnʺgO/2>;sߓ?|x?36{wϊ f_=~v~skw 5yu#A0Ƞ&R?b C|N f cj YVPPX['*4CҰ3l%T.ݻ'm5`|'́F.>tl-~De9=-qV`8,Npd%*Jn4E]ҭuE渶\i"B֝pE`gƣX4A~`{-ͼYyŏU((Ć6 -;km^ f yw?I>d8c=Z*;/#PfJ,$nǹݥ`# Qh7nvc`Q0ZhEk}ZH!4XVVZL WYHdd Jc5jQ /ȉ Տh WjSyR0.êC\VkFCd㭳KGZ?إaגVyݯd#l ۋNf糼d%QRVIEM^P!R&9!;m䥹P+صLyH{gy $%@"_Asziq-dc;nb^ڹQxu=idҏU׈SiXuuwzhm]}?h[jPuK֜Ц?=_#ޮuOg(ӴYЇ/=_> w CR֗Ѿ1%+fxxf2{sOXuVYy>b[f 0w;n1+q5ov2UZ%`렶hipۤBTB@qs~2+=cűXyi2V.NMӕjc1BTnA1riblb_O*?Vh]ʳy.ʢe &ƈyQEf}5uQVz{ś=e*euL4|5L0ŐW MZqDZY3HV)l`^)6 p@t!.uܕTvJj\ʵEUZviuUZ6 E-s V@4jt(7`a(Y5f>G /16A?ʉX q~$q֏, T2j+(&D)i/seA^,#v[[X$fc,ܳtQiWonY^e6(-rux&}?l}aҝ,974u☲-oRuN-z)o@|T$U*0vs/LR/x_?}5T_拽]8۝$DQ֢bM|8-PY1u-qw ;< f@'syy9m涙43fsqFqy:#>yrW(΅ky:iPslOuIޘM!E9A'pt=ƟI6_K9U) $rohA\'8[{흯LG6^CŠ17N1`NiRb{wk3Spqg5x:ڗh;h}cΚ6X#jˍwuS~>~@E:Z{{MwnMr[F2hH@=!S+ҤE,Z- sza"gۅY8-2yp3pE e/U 0;T;oF@foDTTq̢+8`wln  3SnhUUW} Bvd֤}|g\,%]Ljb oN{y6$: `(UV͊9dipiQ!s<= faHmwKjY.*ɢ,7bVƷ Wn mBb.CZ<C4pƭ^dc3yd]z>~L1z0PQ<{^1w9Db("y!a"M1e|:7EGI 7@'pԽG4›vD(F F~ &БKiL-ʊ `լ N@=P~lSVt Uu|tG/|,w~ids~8zأ9Ȟy䩙?\cdߢECsi&]γ`QӚp~,B[m;1!a^>-eHLjy1`'`T`>1GW,λ)eI =;ztͺͯNQ“q$LTJ0LH aD%DD < p4Tkc7q&Q eR_{&5B PRc| 8@Q& QvM9u ٮ,=1)XtA;d2,:i?{3x>8 ~Bb l}-yj;relz2OCZ,Rq/1$XXH’/;K d،c j:k22 Z"{=>M".bx?c61.FKgڀ I$~{kᓫR{qzlݩ#άAwNx15n]|·. R!vB F bXZV$ OHDJm%iI)42ƀpLjΰd ihٝ꾻uIO5"F6ʼT-hsŜm&Wl[d/WLFZW@}ܔd1URC97+gGJhtHսsO(OTѧ f/".UFd$qex$os`Gڮ( Gti%YzGF@)AHʠ}Z* dšAK/$YyS_ (R=q:ڷmwAc]o}%}Gٞ޹*wJ9r v$՚tLػK9 w,A!X/*oEx$GKd2M&-Bwbqt!:)EzX~=# {w3ck $Ɉ=%磘\&W#]8*t+ QIvH0jB::18YF$%aQu^" j:Wr":1*f[I{e0l4†xu BdoR3{> Sw֕Sf_Hx2EldY-ևB);\(>-ayE~kX&dm3! MY\ Ÿ L?^ā^~-f)ax?b9hE7YQgη:9QnqyLy$;M/(Ams{1GxA$YM"kV)=p?lt}l1ް bHlqNpp`%jK\s]kED`cEU1Uf((YmٌdeMŵ^e&.e<[^.Хj+m]n%Vg8\k$2/')݁/k-QC"vMpcƬZ]inTCJMCVst#l ٚP2la$O:c@xc Q GF-!zo)}zЙq*'G2OvksCl\ݘ%PM ;EuIl!v7WdwVz=Ww| By-$!K\=?94qjk'Y$ϪG+6ǹLzgl˲fe1|0trNfdc[o{j~<?GvZ?6ۑ4c)bؗ0&y ͂0d%-fb!/ EopBqJX$\J|sm S6ʦ7%{pE=ծv&ˏW^wa-pYy^kKy}daY"b*y1urE3+JjqZ0$sɼͪ $ (c1䓡9Ln Ezik:̀gp"PcO=Ä/:X!%aѺ[mium+MX`5끄5k8"U#D7{HFp83A֝xɻVt|]: XycϦ:sG^'Y Ru &uS\nni}9"A"PY0_oa بZd.TרpbBf&ނ.V-d+Y,d^xҙ#`jgNf`H'i\5$JVo##d'Rq}(]EIrGH&8C#IB9֚C!6cVʖpth#@wm|zE@#tא%=e` 52Ѵ*(p\N%]ˌpC[̥nAF088 ڂs]R<sFIBosH{WJsWBAGMvi0ktC&TG4[0C*}5ǥkl dH {i&~cf%e!݀-CnV\[qn #PX+ghV&nOQԨ,o2lSĘv_t ^p=*cXhb$E5ُ% ?*HԜne{>֟~g#+OTM<$}iaoR')8;=>]ku?A`WӞ)ꕧitnBA`<|@Q\Л&9gee>g{9.uXLШIXS-?ـ8sO m\rn[a(5-s/ 0@cZy{i0{~͙Կ~?f.VNr: &+ϘƇTt$ {HI84-G{ogwl1^*h#'O5R+|?VF ^= @27c`Bjvġ&٩sFEd"CFICFuMtcN[k4# )\q $;]i _RL-ILu.]ϕ33?k#::Y:9:sdMdYS4 ӡ_0QK1d">ĩHNp2;8w{?^;:xx+/X w_7;/cꓧc#֟|'4IdаÈ$ȸBc &6fC;|< D.&%: EG Uk ڔ3|o7_}(|-%<>'=ib@'@xL##yؠx=Mbށ[\g0Dhۋ2>x~u\ҵ1z~$?Fb,?<3[&6>d2RggJ8³,eR?П|y|7@>| /8DŽ˥JZakB]m< fR/IJB&n`Aɰgr{$rW&7YCc!L3cb'-k}gYu&?}q=~ҭj͍Fi#c<#}[ 2-h_}βČ(t:I\{|@ wese -&൸{ˍN|g}/ߧ>%Yx6xoSN%ؿ~:/BBwY l1Ou&ltsTCA[h 6>O r~%I-",a l! 6hd%L]VBq'X>D4q&pN8!vW7x7hn*+eԶ1y؂WَOS_O:R|%I%#*߷͜(D+!,722292OZ)| 9<&>%1 +K`aaA e=1~x4mBE(1Be X\$5w͌"XL2$y8 _VS_Ywz> ܑÓx8h]۬Ug\.(3޶ TA-hP 2R%m2Uy\٥pAYƆAPzݪ2`"J^E""x.#KлC2]HP.6Ym\Uu as`X&Kq~.U\h^a) DŽn* `X`m`]9ݔP$=rQCqX1ܺ<7lLq3x>`jKE4J/d ۵I '3JjQ{X%/S.ȁFa?>K HR{>ee6WS0x;YЭi9 [L$N ==@X+ށMA^ OO۾W~h$G;TO*c4koW;#\ ,Roa-cPVLH_Tm[[  ZgZï,ž MM#b#ᡟ{1O|㭏>yJ0d p?rۼ{GG;9+S);9&=;&lF;WNWd8AƈcDqEXLdfV V*TTb:g ˅Pnl/wTUb1n_yBWa6x=u/^#u4ΘbP%(Z$<ẶNbg =cۋJ{`ŐG|OՍ5uQ XrN8g'v,4I`'##vrp$q ՔE~xNFQPYv6/]lT(P_yf:HgQ[Cר\%Ä+Z=Ae2 iv Zmv5aM׈]5Gn ;݈6w($oeAӁqd!r7hp.<i^o-ɖ$d ߰jwdѯO2Dv܌^zk֟x}Օ.WR Ǧ.< f 8jbtZ2]N6" %s8դG,)Z2Ls8ἦ#B #2ќJ:`H.rs=7/Mw뉛t2 poC0 W P:y0[ԩ h82bٓ@=@fȌJI>=otgoo f0Qn/.W>?rYdyH(LU5?CT?p1q.qA?tP{Y;с<͐ #MӈH" ]tsv/w&?VF&ZB7>1NԤX6j̼rau\)?cdwG4}zRz/[˪}9^Aս_>Vg;vް} /N.DLTtVjMJrQ1! }HD!8D8! }HF4IēHޔ"zq*fn qC8ҙ6qE&jnthœN."-qP @}d4e~q޴~n8Hַu7z;r9+q:ty@S>2 Vwִ򎙓ru!0Mt%5a #yYM"Ҧl<ԮL@v; Lmf lNN̋5C\42-~Kww$WOϤR7vo9J=E<O4# !#fVW̽#jsS{] 9h`| ?Kjm,Nc!L/~ 99KH<@$Q80&\<^Ej,YA pWƖsES/ˊFos!8p rlzl,F`8COXװN`RX[nY)!P k=RHiȯ MW2Ro K'7̎Guq/"'T`옅QLUE'Uqxa*!CP1l[QuQL2 3^t36Zvfϻ7<4}z䆁qe.\V3'u2/֙* %hWV*[ߴrhc I(ԉ&B1>!=H;n;Ac]ϳ!PD,Xz5] Ss^JNI\J-ڥ뇣ld6UɀԱaN#ڇ~s=(X3fy0uSsu&Yy5]^ *ՈX0p;3oYELVGʓe$W ̬eWft.^`rSw[]ai3m7ʐr_7ׇ;l xhGMeVoCO@,#m ?T`F2ϙB8C=tys6dI%ꃩhMV$:Q? 6;W McAnǔU/iﺂPy-)z\vDыlB[oKtM,- n>;mr~inӽ`"O(y{!>6L-XFϲyn/nVD1y#koխĺ)ö\Oڡa^ԇg"|hc?.%fgnÖ 醻:U,%3/ڷkxA?xFggx?RߥSOnnddG L; ;1RH 0_e 2@΃:/g$(^a׸tP2 á3Q?zt#m*Y7y{Y&(29 J4Yb2^c5ZTB*y,:rJ^6 TNƙlIJNisǏܑȘUpYCDgz$yюmLn. $c43,% 6'b Ղ[ 4]c2 /g|еnU9vو? x Ĵ3l,Yap`/0aMP Q.01慷 z4j!"eGBg q6Nq2Ȭ?Kmk܏| Gb{w5<|śI+y}5Niu9UCWVv"eJz.jaltD~8$ʨ1mukwfW` #@H  +xX)A!j+YijoKT%3wEHu~8igbR.|d S3(Z K(=['߫>TsbY֧kM6IC;vҏf]*.5WQ <'ǡҩ</+<\(R@YM Y|+}-fE@=G7ޥD6{t| m.A où٘} ι(Tx) 8kQV;xf8CJ.ry]˟./d ߅J:7Ы3c\- x YY_ Qb|~.!CެEOpITb?:qcϻ[_*\o<ىׅcu>)oqzɮa%+u͛BٱV7F.oz{)^{ߕ~`z{\4fz=-_Ltn'׀O :FL;&)?<3q;w0d%ڋst^Ө@W`38PoC3Eқm6oe:t;9Y8 NkƳ+t RCaPv)ެsʼw'}VAO7 ݅ Hq~%tyf;f6s lY`깇束ʿx?EmX;{͕XQZXu_uSk5k֨ח|#KzFTQ,ĸ&h*hۅ헹tpf(;ĭl;OIHe|.UOpѮZ#UֶNԮm{YY&j!ɄqX~H\2Iz8/G_}aA#5PiD&,IE ēR 5QsπT0$iװɎo zɦA\"aj הYaͲqn19CP&j;v6Q6% roqآK9hgɾ̢\tzFX"K: h-d%~#2e řg.!]ڟdmklU&:f١I@1emo'G2SiWLԶ젤$ӔQ񌍳Gܟ,xFd ZM9R{y%5WSz7&Gb2rQ8Klݵs"ZٱP[dpXZKy,u0O3̔1 9CI3zHzۖ[u0(or3s(G29lf̿]F&Pnɹe;>eo3uRG/KH!lUf[.]O쨓|OUÞM̲iF8"x7&Ane5ȳd$;(Ԯ'R!ۋ 8#}s(fƶz>%֊siҧ&:E|dv볜9cl^cXq؈#|t؄L %f :nQx-1rדy.GY,̊s/?̮mv>GWK{ȭ5i9=RHGj=$֙x ddgds:GB~WfnjIRrj}} H+muLTJVjxTS=eWg՚3kb:Auh Ko[r nPrU0.c^uh=kʝۉ&s1:im襕=mN:'푗e6w~kOuɫy㌁ޡ&$?m=e~Vީ9V#VՑc={FA $[[I< hXL]gϔ:]G[ke^=3ӯuemWkzj!w {2MW7f\ki(Wh9+%#:% Mx@Vp-@@sݟ~f̴5\{d׃y;dhbX$mc,> 3z]Oi]p(5~+[ZV,GXns ݆ećwɰψme&{E W7j`͌j v Zަhf-c8$76C#Iׇ5X/Do7XX4uKOF0iuX4aDȶf dk}eDi_M4FbqC %#zk׃̠qQ m#4~.aY1鐟 4S'6l&BH,G S -1lD d|^cOdžX'↞:E(zFMO@VĠČ%JɞLHQCI(g1jZ#1m2S^p1໨>8hѠ%Mrf܎DYȝ0ɈavoBN"K G%-{8$cAÐ!J$(O0'qz06m$l{i RAư54Ąi`b"1VJ$[#2a냱HC( 7D"A^Oķajp;nں{ڎM;nաmѱc{w[3^#SL`(F`^c`(i̽#H,I=m3#;-/_@0(t HX/M#LL1s@ t&~1g06`0 8A& 3cQTceB"g]L٦ ދ -dڞ(Hf\޺f A#(gL deWeDoyv_aT،4 (aXe')#cXPa ȲA~jpDWzh"h:4,Vu/hģrqi73[X2܇94dru4喸a/D.40]ZmlrRVbՆ@%ZW4XqʕMM(ol֚WrSK:-'#5HxR5y)K'۰x .E"m8N9888-[b-[ӷoOҟ?}K-[ӷo???WcL'w#3>Y\tnvތeZ'e;Z{чC~kgyD mDc8e` (|D[9Gan 7nxY]oe[mVmeM`5캴1Eɶَzr>-Eg74@u$%([\x)O't(%m>uB(J_Ov˱%nQ_4S}r=9EK}~(n(\?@Y~>"E`//´64aA"*̙/ٍ??xLmHT({Ÿ`'`D 1gi }^@ @Q= 5smoψ9p7կq \?_G] hG@bŨО>5?V{(;G.p_ !O Qן="p?P9QQz30Ǵcj!|~/0*C zG70꧿߼㰢04 / :Ll{ptRx@ݒY%e%[IWRCIWIUR*:%U*T@I=_)Ǧʔ%uRIYJZIU)JJSjj5Jxi]is > I[h3ϭzq}kcmz# ŏN< T+ ˋ늷8+Eʎ Y̦_'xJƕӿ/ oWW=* 7ǕOV?oAp"QT^-,>I{n#Gg_+WGƝʨ_@y{_oqYYϔE;:` Z8 wWo^\7Q0F%tQ <wWܕn{{{S)<E?WrߴrRdXRa*U"3jg3dPtju-W|mPҥ{Czu]{bw3}Pѽo\ ]ӥO(%w}t>յw}GZ_t]I˦kd9[eS;^Гn$dbAOg]ځ}g(h?}gt&c]{OO縲|Ș_3Bh'4OW[L^Q|U^/9;e-h?x1֓y9d U੪b)qy.NOzYyYʕy̲7 YɲÚJ)|9S2x?cC]2'xXqhQ8P,մSjҎCպYdڵSk\5Y~Jw@h]XӱHoۼy{v^CND67_7fL66.9s)г]>=f]SYvؐu=E҅jZ޶0iE5*'dS1%6DJoH$9.C[G:[ !:K:ww )ݚwO> endobj 178 0 obj <> stream x]͎@<aLdYZ!?7a ŀ0>CuM)[]|ScNٷOaJ/m׌?:pmpiSV I6)܎ݥ_|>e)ɾM؝c~[4O s5|n!c3n9uAo}0V5$<_a[ΖYsi1湗ZJОC/L4-Vdti[j߱ySÁE%[Dwȿ&OA~_w`(ȿo_jlد#Ǒ_o#?|8]9/̓:o/I~c/.۳bM"?+&8;!>⩱w!7 ab1\/Jvl=_/ѫ/K+{W ؔ 2Ԙ_4?K~5O;22og]'_d|EFHZ?q6ln`b];ӆ~@~y' endstream endobj 179 0 obj <> endobj 180 0 obj <> stream x|y|[Օ=-7*=Yb[ȉ8 ٖmR$َ3$ltQL˔Bi't PLI9-IIhEsgo =AWϠ;);I K/|wI4}kqE&lH@bQƂDLdap`0}hLǾ Y>{Gy4׽+bҐ{г P}im_cだ'J(C#x5SAT?xy69yyj+X&b#וSYaNZ VZ yTP .8 KI n+8rUwP0 ^B([T[n/hj>{;6 w-@څݪp%k6IJH-lvxR}aJX pH$8 ~Ќ3u­d>9{ $eDP{i0B TBhkp7IdP)L\$A J؈w 1Z.lQ=2>$5 '#W4*<>&v0"r<-p9{hH>YCA>ê3{&6y,$a`܂&~h$~SM5 ʡ n8F$RD$L~Ah2>Gocͱc?D4`Ы;k{wpc=|FK^Cn%aFoUo>=; hm+BN2X 詗Ux %\Gn"vury|JowGcU5[Uk5ɻ&RQv5bc11q?qPghT\m!YH֑Z%"k" aph?ڡu6sFBԻЇV~xF0?p6~'LV<֣;MN]|@4нku[apppP0)T*Dl_^Dxg?{f Ǔ;U_O;"X!^ýh?i݄zTxgѵO?"vWҁc?V{S#j< /b_=>3@]B 0wPk9M!dT}r5.^԰f~QVj/).gZ ̒ɘb''%&J(V-RĶ%",]V7"ܳ["ΥH[84҅}gQdJ4%K PV*Zȫ-)J6D+-.)r+9|6Ajh"dY:20޺5[=R8G0H%pd.&(hQH5miaDk7fmgkKUV!=XD4usDçl5ptmQ=to'Zz;#a-dzf(<٣xkWbȷv5kW@^j]e|)N}3bV9*gK屴2̖kHee`-菜3O与ĎAN4i1Gs-]i0n`Kʞ;RVz@oy )Yg1qr6'aYcD 5BjS =H.\^t7׼e\_?-'n\[O,8 ǧ))aqiFGy~YH~` %l|ٺf3Qtc'{mܗ;w\FNg#FٷX0|6_>#u>B2>g#[nZǷ(mӓk()RH8M: ъy$F5Z E!҈~eKg6_$S4 f>pNz *,h[džqݜXvǗZ[n[xu˔Go͍, 1@KUxݍQrJ>W*S4)Zqy;ˮL*ViFRYa6 V%i $(؝CŤ5/s~~H+eݕ[ݕ@-$#ռxeQ~WN(!98d4xcI٨ψCq!!JM[T/ʝoƎ_Xےj޺,FI{ƽFj.1fKt7f;.mпx+ht% H:Fѵ''dxSîݩўr~|lEt%5&FcÚr @3hӴj:ӔZâuR2 Nõ?vsISD7 ao31(X֥9i99qy(ߕ>'RS9ESrX8ykwȭXno]Y9ջrٟ#D񩂸̜]reyq%42Ɖ:Y^ >8UݨTv5N7444LľC&3 3ug sY`t -NfA `.XHR uNZG™U%%${(;]4 2"h 9%t)9͜^+!іy% eFSZMru߿=y9Rq8rΰ9m?}nP]+y&{?::Ǫ1ޣ MO%@9=Oxð]M*uΕ@X)R`J ,x&(lNu+;8 }?ՇW$بN[k(0dJ6lT`j ,B^VA!j2<CR8hNiW`ݗrC]zgN6?I֠&DdVOʞ"9m 8f~\G8a-+0s9^ѿ S7W<Yѿ)0ײPѿ[ߒ8c6[mbG|}Pmq8E!VE(a=_(ToW`טlUW>q8ӿ g0|/3p8)kT`S\N?s _ఉ 29l߬ ?2V )8kaFo*0s&pTF|/R:` |z<;`+Cx* D]݈r 1>w PRfiB[<_%Qe TűMvaε ^{q/ r4~ĹQrx9p54Je-^%(Bٌ&#!< I[gdfנMZ_|{.[4,!փa &H]J5nͷq>o!}@8Nrlq^Si&4ZOU2hC̘b _Z+8}%X,9b}6dLY \4L2=z_ ue)S)o\^GCܒ!r|%}F=xerzLyC\: (4!nmvqucǝ5}"bCL ϝ"[&G|&<̊Ð۔Eds;9o߇rdI?Vp|~,S,2zfeD783\Ͷl!Eӡi0üJJvuC[#\WCF2.y*G#9lTN{ht̝_..-#ǵZ9.e; )u~ޗ{[X4.ϹbÈwϪ+kpn.߫wN45rk!Ru܏neޠRBsi2nJG Jl==Sh7>ݘa^keI|dK!7#J3)6]O9VEWBx4,Rf VFsjh/9^5?KZ/_dle/Pvʯ+p1;"J)(a^ ^\ur} NiG'j,0K:0ٌ< ^X=Ky`VĴ-̾s3U Ǧ+3*^ckxxd]*;O079nr8Rfc9n^%,3u6,j*/gR-糗_YgN%sU*IgtV<3{<k)y/97*Ν٫䨄s7'<.nf))cB{BFnYRE.SuּvrKg=?NSg}[ǫ>#oj +y3~řz͎AJ*L5CX~B.4k5Ný:tg{F2[*{ PxJe?/N;׏|y<1YBXzn7[#q@~R)gj`Js5ЦPVh%T+p >Cp0(ɤϲ~1{<#RǀGZ%5! 3aR70!iUU!5|:o@8$<OowVyFuA홒_֨$_ ؔU*h''M)i/S8a# [%Y z'镼CRI׷Kka&uV9$P<H昖݁(tzS&C>Cޞ?(p{=Ca4cB]nG O %w q+:2rֲe 5⊆<; J}8耷g@QwHC^y 1H! 1zCҠ xBaWM z C()K}R4ƒ P'xBޠ;{l'+ !ɳ= yG^V@8//u *t`}aW 僡a: HHQE"gYcMWV/V,on]*5-[ںuUG.Qsg:a<]`>OUyqh-~ca@Y&43-a`H 携mwhaeX]ĕ<^rȣ,3z~̳|pЋ!QM%;gfɴ)vK#n0/)PcFbMפTB B xz"\B+^/cL J:mkYJ^%9PX,8?z yPlA I]0U,4w"n}3cY.ħ9qh?xqCa1pz҃y"^#1g|V;X4Cַnϔ gۛpS))j*k*+*ַ!5fuuW󐿨*|U?z+퀓;z,I)Ӷ}Y·gDŽ΢QGK.}TQGK.}TQGK.}TQGK.}Tu_m\o^<ij9/I^o!k |=Åm}* p*^ȲfCEZ`ՂKoJ61MM4TU頉/{7;D馚͚Y_M Cq]LU:]N00J(O*#֮'W:t] bvl,N 96.2*Ir8y˷9E]~y5kѐ1;q%; lUU6g-ʥq\s8vl0Ƥ.W7~} яT{$ jaJnOOs7A<ߥڈc XWG(Yg „0AOrjT@LOZ*,~uT'Nru@ubWubGueՉՉEՉMz: N"eWr_ȯkԕ#%~$%>/%~MJRf)EJlJ$I-ޘ- ~gWrPd{{D6L4}VmҴ [#6 3l }xJ+Idx B [)J}LfS:z>>TJŇl)6 N䓌L8웨 d+PZ1DXۨY&4=K` lc3o0Ւ F ({8vx%\gɏ@C]mOӦqij5 4eYMINժjAs_Q*rXOke)R"Bmk_E5uZ{[$nUE@[%"*Ii%YH7G ttFIqܐܳ놯䲶놯tuAHcVcbCҖ\(W/>3h~WȲvicSkz-k:tg:'K[0E2 ke]`ddݻ82 F08<0݁}֖&2ӜE NsBerB$,d$ @a^;3lw;̰S~T~K?ϒ Qzۗ5yfy/ڝ4~ β$oYYv})ߤN/4g]hrFDe a8$S)CY-4$+CzDpcG;Hl,-]m&P(<~`ko,Zeo?g)AFƤѴF\ 9>,(g2=4g;AFc4]ݙe;>Hq2. 3n%Kq endstream endobj 181 0 obj 9683 endobj 182 0 obj <> endobj 183 0 obj <> stream x]Pj0+tLA$|胺YZZ|wN[Abfwgwqn/IF;H|D5FXYqcu19Ժ7 o؛S\xu#};L/{TxVR[m=J"^nV70!*7kBz ׫7E?Oqɢ8=H1V'\ov߶+9\/1sʊ,go v endstream endobj 184 0 obj <> endobj 185 0 obj <> stream xy|[Ź033>3hv8bQkGfqЏ†ƒ>;=AHBґM=~;Ut__UBƶB$IiՐAz+[_ kMRH ia guDhh7ER> 8!?PHa%R'W(UjV bBGz U ކ~,fW>^WΰF/݁#:Ksh@D݆ѣHv! Fc7bdRtz}eB+iBCȌRݔ{j)Qz(2P' 5GCzQE_FtaCmEȃ:AI@j=^+jF)C؂so'z f|M31Az (.CQJ?^F\ʦs] +ar0Z:ЗWYV$~s[е [_=AOR\X `˂h=BGa4^4~=*M rܟr9T6 ga8u`$Ҳ v{i3bx~|ٛۘ{(GQ5mFh'څT}=(˒Jnb{ ^ }*GS cVQW5x;>Su:#c<0gvITzF `VXC6. g1|y{{H3~;8ಥ1m_Wsղeff[##+Uln7O]>[_nEGðgK[.Pa̹F\w#Y~ OS1 f;s<1WX'eṏ=ž.A$'-gAُ*3/],nc?6v``wAwRx+7Djux)^O3lě୸x_oϝ[<'ye860Kf <ۙAx,( syy5~Ͱ]w_-a$QI\R+ .^g$H&i>s2B^vN٣dr2]~~Gk7@.t^1~m+_l{uo z{5#??ҧɯ@wnνL"Vge4*]-aB=sc%.:IA#h:E5dEyYi"+Fá`y۬sѠuZZT9T2EK:@$], kɥu&NZMfjnHʹX3=_B-- M^a'^a ob_j 3n5{<@h6 Sh\@Sg#twLl6(KR Iw\)Xj1HIMڽM6o#$otO^D'qCw$.Eh@5LrtE<ţu;MlkZ/&sCæ} K&k@&\iaڠIƿf@ʵжi ddMzM$*aR]=pU'~`9nȝA&M^dۖit+@>aK KKJxcZ]Pk=e r<^1w9ä%L6yaMStUC5ij7h<@>OOJW8{g޽4'ϑ 3dq1a( s%ѝS̤w Vm&xyNVHL_IL h8J#mL')+1'%s%;'n4)fcSo$6|Z+6otqr%)z,a>){lD2Կ׹ D 8il:6b, 3=&5KQ4 K&eMrH+]l_dMKҗLO} KuP^RՁK’2S^xn:09GܓKnnE06Rx`g̡c ~q$L1;"%G0egA,#_ jQ*Mx^,;aZ>oaگȽ>.E~ )M4N>~;;:*`Yl#oEn}+.dVV"^ULCq2Y_ȼE@o1UVU+`[ɘ7n{n>p+5e}o5_}S}#8=# ekgΝe^aE"VDmQ`UhH7oI2 wtSXHӴWH#{=M*C]=:P'zbqcܹPL:F*22bK^5B[Kq+ޯT&]m)(&|MFCGbtRzqa7>#ӱ)lO닭.mǼ]3vRh{L W4P,^\ /쟳٬St9T̏ ^LiՐwt:V7+Ӷs˱pUUu{[{l$Tqow0z Vև[JpZb 8rǕ);Di2( wy;HȖM:nLyH )c*j5}ľtCRQ@ڜKtPMby !K40@iw7m1bX̦* t^}a" TF\2, ;nc=&q޷icfw%%|\죳/~%աpliRқo"tDMj ʝeײ2 inDRLY Δ DٰBn$PRplM+-v Ͳ} `>f%y?YԶxy')ƹgu8s/2Ipd3JfŽY {(PNSL*9>,0NsMpGINDj4 æ7L LN/HID^2CJRR}Ɓ~=Xn9R:3452rOș 9rX|R~F.[kdwFӆ6mղHk-{Nd& @ od8m0LŷOD6[7էDM bJUWvܰ an eA\@ 钔px(ʼnD1)R)Ml>(%fj;3 Cy9!kݽo %n<ᇤr̢v]S~M_67`1*YToav\ˠbYL j2X5rHrHzC_th-[n2%yBzrRK+rf˹-`*-+*VzV8nMa4(~l (Pב82?gSvSd܃ =z!z]Jc!U +4HC֊\0I] a-Mm+qnQͨ2v"5M~jfi+C 6Lux!2BPBӡ!IhLؒؒr BjU-Cw,KJ3֙/O1Ow2,F,2,Yħ%۷y˓cLz&{ lϞo3y&:~&˟Oȴecpe~UK ސ"Qtʍ5MbҀZ1q`;Zlb\'ˤuNZDk"h]xTw,BJWxdei\RīW8j486B7}bj,fۉSM+c<@7b`OhÁ "̈́ dˑ׭¢YF$)H'mɑ;hYEvU?qiI8~zYU~ +U$QIaӊƊU[gOt?}WviLa+eC IXB3f֍eV]^y}g=y/O.߻lBzd 1N̎a}['OaA.])ÓEUaW)iUѪk"}eb'+1jNzî%/6ׯsoөpH8 ڨU+UL".)MX-6}I>Uc_u UMV1U$ܼ޷johfP34Y(0W4wnjb6|su w>O' gŨvuSO㛰 ?u_3F]mAKf>DyȧiހO ΗVW;q \,@c`J0K'"+Aϧ_yhլiss,Zjcm6Sd8)OI$[ɡDRZ"i Cj2)LN2I IPntS./ ]EK[vy1oi>*mt"oY9g28:Vi1 9c/%r1B_; %dEa>̄ lm(  1 u Ry7XmLⷱ'ʬR= '"y f9ڮ֕Y*]<Ș.WJwTi sԛynfwotۜ>Su-xמ/ >Ky<'&V^ SWx.3gSlBߎ[-u=+d ZYj G0kJH#laLGu*Ěz ?F)n:*:/,d WjFq8mPmۡR ǍIZE+ m6$@a H[%|;C>s,xKOֳv`ffS#C6x4O*Ƭ9s\N$bE 6xZY!ITN>0Z8;s0eYqKO"M3 D6$$91M6b{Y*I*As->g )ig]X]旸֢e~,S_a_xek`W iNz R"oiۄw|#s>k1i(+qu$q:fWX."MeXmӨ2,K!T+R>ސdE]Z4>k:<{eMńZqu:a=b=gZ{#;=:q,|s ؛,.Pg?EEk}VZ?sP-xѬ炰!^gn Ԕ31wV"8ad5id%-;C@"N7oһ~@vJgD B`)'&[yAPSot4Z-j$q6s*W[:!e:G!O5!̈́F2I 4F$֜p\jNs#yl|f{,.J&*. .ەV'YUjRnG6É ec@3 inG{ !mNznK?[n,bcIԖ}; 1??;xM ؽK/.g&vyr!@z62LfҺ/Ht1(0* +؈b}cuXE\6E82sb„ p'i :-gE{dgn<,kD͖y1Z(FvW-y7 QȒ"RA%6 `eSA嫂鎸eN>6P!ޔn2SK _W Re&F f~Ν.KJa7%;vrޏ8_2HqTu-G* I&$]59Luѡ+'[|LZ~-Yf󦧑:7$ܹi0Rm lmmǂ$8mo=+q 0~g@VjYȨ`eRYdk~S<*qlqqæ~]V{u)ooO)>`"*VFodk"dGh :wkՋ!󹾥{=/]u];l yfPZ w lzn L&Ê% ^sLGqGqʵ'][I7ni1(2kN*%Sqqd iM( :=N}DggkjĸN}4N -&W!VEde,o; )7(X#4l Lħ7T˗IYt'+T C"Aelܴ;eZnL7x,cbwwfmung| L0b$'P9Kz}:ݹyO[GO%$lC!n|b\6R(|nGvD<^Gu+r0ns{:]a9:&EzY4aLG o9r#r:n/ Z8{$qġAv`k[C#I6"ハ3O}sN퀊g/7@hP!jDm3~abCtdK/<ԆS)ޤ襤Ǐ`j kϾʇM\^D""Xu I4z̅P>.vWWt[f[ey1{HqJ"=hO`RVh0uustIh*ZU_(Wj9-+U˓+j_Q]u/tכw]G)/GpIS؁DqR![MW4:լ@jJ*êT:heֽV97(KԦkڨddș GDG)? TM!?Ks~f܏O1 C&_A?rS\ZVncyp+' g"Է̝Ղ܀ȜpBP 2N=%"Wjfd Rf06r0 }).rU^ݗ]q*gW,{5=L;ݮ[n$޹I`E.N1W+'T{tw1>:Tl){ߡpA=׌W|^}u3u:kZK-ec:y)>fӄ,VlS8Ő/G1>6I[cx<6Aguj _sCv燳w5}?gmz6\ѣWz*+*X;z*9QÄ󲸝 }>VzwȐ @.NTT$ҧtb#bWcRt?oqM'xtsnQ+rO߲fG;l-Jl6?bͳ%^Jb=楷|8JA.(d-z}WĵJr}t[|zsR {Ϯ`D),INKnEѺE+[W鯊wwG(?ʽ-o&hSy[E$l(l0 a"#لzQtF _+dZͪ-+u+'Lr\U#0Fz/q<^ROg ̋PQ'PZOdY-ONIN#Wԁ?ɕ 8WRyY Ms>@plܼpJ*e˪辇~큥Z|fo YR+g[Uh.W(;v_~gқqʾ;_ܳפ+}rߏͪnvk[ª;Aoͦ۞j+EVYȫ:#x.Dm"[ڞm>>|vЫX4_8ǯH/^sAL*VM&a#uÈ PalipPæ?s. GX*Iuo)go MeCJKm݇7-.7.o;̜pǼj^ kv >$=Fo׎e6!HNU%5ґD!CG"2N\냮PhWBX͙ |I9~1Ucb v6=AH;#9G~!wM*Hw.z4F/375"~nhif{9C xU_+tүQY9kb͕XWBDrU ߢ_ZXZY`o{{{-sO\ZuQ7ֻaeQ5+[k$ VT$*ܪTp-P(O q='Y]®лxyR% 孰=IJ9|IA2WD\ vުP[ʃ~:.XKvGgA%Dcq\JnzlЌ1?0 m5|2mIH S ۏ'cAP 'P9.yP |a;l3 v{m\pH6Hx`!'n}?N=9_bi-zkrW{:C=OX-,. q&[k+[-8mitZ,#PS]܊"vɂ޹K"BLOw#%ULqw#sjy5~m׸xAHXq_zW??kX:[WkV{t7T{y6}Rz}߉^D6lc,ϛYv*0$܀NjFgrMi Un]٬>M Q 'i7 ŜSDl5 JkVV.~hhѡVFQ)/]2ұβ3&0Unn6")Y`+{EJ^0M(RI[}|Qdm-ߥnoG_}{۞?.z} \D?謠qT]a1^TA1zXq:msV芮CYe ޠ?TW(+)eӞM}6ʰryk*wc:͖P(  n;ꮉ^ݦN´CyOyXyJKTG VOGO mN&5"7%I:OgNExH")C>Tp|;i6JYxF~Wv4GE=-M0:H)5urЩCȷ0gE41倐bQ|7G9`ʫG* ٧³OCn}MMuVSw-YieW/C`~n{!?>7ć%CH[9mB&FvJZnKh˦XͤPC~[Hp-5B@`$(m 7A!&*>CXG\/ H~%s?{^'NR~jU/oh^]a;ݹZkorHmU h3bģ8yDg(8+Ѝ_R&PVGJkc>%[aG-2FD=*uZ;i}y9q$ ѶsXh'վ;e:;;Oy%៓1qu)|=8?/E< yR_1a1vqVq3 J+'<]͢MgO[Е繮17wdu#c-9n(W y=B?Ǩ{EKzio:+OFFMG؝B}:?WC!\KNY+6`4_2x5v zP>n!JݗR5F(ԯ!8 Ojk8z{j2/AoQDRbN'^e5H:%!p YBo&RMƑuH4\;0s tP˻5?ge/Ҫ/Oenʯscvѿ}y+Xe#ӎ6,CA䬁|:jSE#|ޖHμJw_r=dRPˋ--z.Ѥs2$K%l^clSfd |)D[q}ys_R2NPcHѦ-D:]0Cg4D1ۗ" ͅqtPNsMWO?Yp?־0P?T7+l΄ d#tB;23 \ Ġȡ݃]cIL 72ԟ-fvɎzGGj]vv։% B|H(!cHd wNMV[dyC-%ª M6 K4557^QjTv t1`OY>X2`1Ҳkp'U"˒~N;e~@Tlń6h֛b nzLh] BO@H-#2)|; hXis'R2g1R2##= [DŽ )VkkB`Œ02, EiLwwc, Q#їtZȨ ]Ƕq/;%a@݂Ȧy ]:mG';_A6?oZywp 5۳ ၏/Jeԛ_#L )HcL~>[:]߶udFkHk+BUiuI"P(֯DiiEʫd*(Ca$x~zTaXbӋO/V>XbӋO/V>Xb+~\3'#mz.9=Or%),\%#zYMeqx"*P+KmQi'SGb4> тvgGN!f-ŋ@e(.){^}:@f?t#7:MB`P _3쏡K0S}tqd@nXZ}a0ig Ah/C A:x!!aaQ);! AoC>^mA+4~b;_|Cć{ &w;W!?u;1n4aG|  ,@t6B`xczt 2w1kqh t~`n`nkgusu따AuP:JFȯ2 @`#w? ii=Ia~!70tYS6@uvVXvbJ$6HZsB&='b ײ]To $lq_$퐣ֽJ [ZXZvwNŐb\ AP =IJn6ֱ-l+%IՔ_Z*)PQMUUIٴL*VYlH6.)Kc:UCq˫UBVnJ~74g BJtPO:oLGKZ!tBʗKڐH j!x#@J) :|3-@hҼ3k=WȗwBs\Ye>Lga<Gx"ӵue"x o#qT2JZ-PQI_;*{x(~TЪGW=UUbo{$wgWEvǶÖ ZtgQJLQF!R)N5RQ&c%#1J"m:;E"F>HoD|F~q? n\%!`! 3*6>+eRU)J࠺ 4d0ԲSK怚 >;B;,>3b&d'5%[ZSI4b,m+ޯ[q{bI~OOO+*tX!I[I.c1woQl'b٘cL%7ŨJúXRܧxuAK}Իa,xbӑH:.9bids, $#pC~[?g[Cg#eSKo~ſUIޫT۽أR`?/2[U}.z0C {!:xO\#KibsԓՊ7#MƙVi*P=r%7Y*'Sd+3UTna%<:3C{uFgHpX~s_`Z~@+2O2I,#Vr%gM}˄?!_2 >A`afgZnbzyyue;?-״+!Qy *6UWn:&ga^LBx4=|kx}xm#n /Ӛ&m֨kVhBc2z3敨kRSר&A,* ;!W)7ݖn9|~.ZO{eζe1@ɴ&]`_҇=y1w?7uЯ5SQhw7lL/BUSыy܁NwV7 b؝I/q/{2[J{˜! g1ϫ* ȤKQ R*hW%W;J W? *֮rUPIwF#*Yd+)dY- )uY(Y]=۴*XSu8'J FA5FhYsK`>?rzg&63cwEGGJ;OWg]=_ qpUN؀oIgᴧ.Vls 39ŢsI!Ƅq4:rܑ=p&PdҪf/myZ Jx1ޓM,;إ Z!s,PudwN49Б;+:0X-uQhн>pΎ?~jCNX^ݧkɏ.q{Px3/2 )kI^Y endstream endobj 186 0 obj 19969 endobj 187 0 obj <> endobj 188 0 obj <> stream x]n0 > endobj 190 0 obj <> stream x{ |93{ovBn!~Q6 $$ &!Iv-H Ţ"bT!RDW֪*6*=lv{e̙3GCg1ǫ&g' I&q sh<w 0} t{ 3/0uh{@ovt3 YYtq'$LR8UpOr\w;&p!0W˅1~~>|'Y+z.=Bx M=|@7؀ f^-6Mnt݉9v&`r -(!(# s =𪣿Sh(@+ mWulLB{yQ݁:ћG6f 2m[Ut':2;\hH4OՠQ6t¬@R4Va?PPZ#R@4w @꫚ vn70BtOkaفSjaAy7U혻@|eaY-FU ŮgpI|neeΝ]@}9]꬝s5 `H`3t7ś7gN<`C RolFCz4Rf4JC\GzY-YpRGR?*QA簣MMf kh(DZj9c?|쩍cŌe,fN9 sIf&/{=L(UIn>t3cr*R 8p8l*YtإݯT){ ﱓ=nN*x*81*%2~30>J+pw}kVˡgjw5<6څ$ $!G+0ƞoJ)(đ6 MV@Gx<͢Ӱqi<2&yZlҁNa/ nIP̟N*cʠp7vxf +0nSSLg`?p=HQo}cV]A3c_=n-װ e5<~xWv\+C h#NmE.!Zi.ڝC' WꕚڕJ JJJJJ kgD  Py 33o6qcعU? ~+/UzE>^菃سgߖ3U6ф;uիg~fWUͽS{ M*1X~RCg8,UZK3XlQ8"8As]_yWW{zluߥ1 Q$VF9g'~g4*Pnz{ C[2Ltک}LGBىi=6Zĵi3,(1h549 ^?SXhq^POAIPRRZV dLv8RiёȨJJJҫ2kRS5ewfNlllMMkH_*m*} _Ld3BL 7vt*8ZWwW״7v9iXQzɜ37hp?w3+oۑݫ8xG""ldTFK~TA)!?Ƀ=kDzv`*MLsߴϽn?#v۽۞~ ^ 1̣,݄nd<q*`Ekk UUxQ[_}ޫ q%ѸqOZwp̮n3CS'"~j9$aS]Q}֎\5s$du( f6=cxTZX$M|p${ܹ۪=7^;;]@8%#ud33~RJÆP1 ZMQ3Ov''Y]fV3&DGδ@Jg)'Rih3f5\I׀t;(Gϊ1HMӷ[ٻG/տqtRFN}-FEϾ?L٥vx~Kw3?t!bM!oH4~YvA!1[ u*w .t-~ c'q :´1+5CjϸKdaCM [U'P<קOҒH>)qP WE ̠~Sq:f-SUWJ/Kޒ^7g΄k ;q p Mq$G3zoC* IlOϼc}o?@mxP .n*yW2؇θӝ;OGAlcT5ԴTpw 4 }C6YMhc6"UХ%QFRq:і1ޞc$oN31 %( `VP,ct޴,cL#8V4ɖ㸱È ~Ճl{KzW:U+zo߲ט}ⷿ8ae޴Qo}/o8KoqiCFxcÉސ_qD4͑27qƵn םEj@3mNpc0K'?5HgJ2'J-3gbd 9{~Kb΃H`F3ysvc0J#ce&gg9֢C&z-ѪI&2ɨJL"*?JZ(1"^9wޓ*}$m='-?F2È 9RN;9°<`VT!U1ѯy_<#JH#9mٻ+"RLٲPY|Of0d‹Jv-j#-rv8p491d@SJ2\ƕ3U|4YrU[7j5(̬+V:Yqlf;;ͪGU54ij.[>-3ɼJj{]xNj'??75JDjg[k_7UVW4n4FƖAʏ#shq  ahNu<8su))ND"3!Ѝ˷GƏH#^+խկ5X,T:l&lƉx(N\6;?gZU9+sVܖәs"gqUe!@-,Zn㴃~E/45^;'iFpeƑwۺ73qΝ]eiYr) M-ZILF  E :vQl4 #3̲ޭ>8i9xВ0/hm?+IB!*kTZl fCaL* BaU@ :Scg͜Ol:~q) khFhaalHHh^>- xxD$$S9;TCSu 3 e2Bs<\UU5k/, L(>SeZ㵦uf:::]MM--njv[~kyr'6aHxwTlrטti(\eZWѻ7Q[ 8}710h 'Pj*9ZcǬ{@Ba*X@-!# es5^9H@f"vpkq@W0R:[6Μ8=mI}js4H|j RYZp* ǶGZh}s,ϜL=zU+hl66K4!_ͮ7k`Z^buXP~jڡoĵux d[U0W/ w,pn6gvW8rc>!W6rċ8OѴ<}0 AX.SDŲ(w-ʢ,pA.ږξA^-R*oBb7^KP=t` 8anY.`_|[XnFp7`9Ynꀲ%ePH2rGtBz }k%y|M`" mF$ z/%bְ ې fojI|Fki) %m zN%Z AB1'h !yX%jt75 u^5OO EPl- n`' i{9D l|Map=QC5#\M@y!ߒ*9VaPw= yB90'4-}1n.u^/YZ2 ]"630<2HfP2Jy!Vd'0D uM^@(5J;,6C@uQ-EਨNBV HTS#&= V" K@1@\9U?V@DoSjS,p5ˋbYXU]9lsQTe\".p-+KŢ첊鹢sAUFT9a|b1쫨tes\@UI*ʜ5guL-*.+/s-J\@ĪjWYɼjj^uUehLe9 Jʪe3fra &sWut眢ٹ"E$s>\3\,.sոEsZΌ9Nr^"WYeXU˝lJIyQٜ\qzќDLV' @6pV8sŚ*gIe] Tܒʊy0",rg:) P+Q+@]BUYgXT]VC,RZ] {VRxU(sV݊ӝE@B]k뽁0m%HӨ;sI\xF W!\ AB4)4aD0H>ǣ_`AKy@ {JcEp\g[/P6XK`L(̀'aM#g*wړ ;2Pi#g0eaڹ,#\T|q9:@Ga:Cb}5NYLEGejϼ^K(깊ekd9oJ@5O7!#-(4TTO?G(ղ/{iʾ%rd^CTzVhԃ6S*a$OH'c+D0c2QtwD L}SpJ4׃dIFu 2t.V~^)KJ1̍7S{ʶb2HvG>=i)e9d>ֿdi}rE.Qţ8DfECo GMx+Ab)5?nR2[BJS$LӥH~6EQ->DCHDDJ.d4}{)'*oh[IDNNQ^?.`\9[d*G&YR'^9ADќD>L\Mt<\NY7+QPGFeUjF}z!ier̔8_hcdmU 'oļZsȧfToߎX2GfA#fx^C^IH,w{IB` 1jfYH$ʡ*;S P~/Q,&ī]fkUHX9O%;§\r#2'n:Nv)O ØPD(-F5& -{r7W-׉PNVU˜Оpu*Ȏd<*TW\4v>", \KUF9F$w@hQzD\Zq"\5N0" ޑypu5",mա˺8%dJZɊ @8ԎDt?:%TLQ*y }k.qQ݈̠EcկPI9uEgyUXEF$N9QDj$B-:yaI*kG'/뛑Z`-Ӕ^tKIJsS"]-.G-P.,j źy\kT.褫kbEy}쓬?8!ӊoԟ kАW+.'k='ܗܱUc;scrml% gtmuYmI>:`oؑcTC;Ql\?}I}=J=pvӳ?W,ҒJ7 hy3 ^Fa2!*kuކ#sm j.Uʻ"L7:>BLB}oC>E; Cʧ\ |*VMy~ \j?c Ůr=-S6/#\'%?YF|" vs?tSKoZ?:Vԁc5O+w;;~ۊt~iG | 7%$; !J7>܁_?ʿ.CB_Zc_J/~AK9 %~ ?-}ܽ6pSO]~jbS.v{ܯe#'$[¿.~܈w>vXDz+~~~DK! ?h%FB|+mmGޝo໷3KwJxs,6uw#FS۞om=o[mYa1~o[% j\ݤM:ZXO%'^m7JxWJq7X7܀.;" _'ֈx[%>CpH/ 7%R/> 7ހMH^uvOƵzXWHx.__^KxpW]v\Ø!چΊJJ+%\1WHxKx6<-Yef~V.K1ef<ӀgH;;t Si\4;$%lp*a j)Ƀ6yZuX+a ,HXm*!`0%=;3f$t1527Z _̆ endstream endobj 191 0 obj 10583 endobj 192 0 obj <> endobj 193 0 obj <> stream x]n0 ߬",yjs;BHYFaY>/} bZKV& m;pBPDQ).0ߙRrPC(IJ1q#+0G)SLF9yc{fy:r99E>}fFOq 9֑>gR Tsa"?%f dE5?!O=^1+Iͺwۆs39Gf?O;Y̢ p endstream endobj 194 0 obj <> endobj 195 0 obj <> stream xkeǟn+M7R4 kPRVVu% 6ww_ͥ]P⡧Z%)CErEP/"RI|53=t4kcLD"b#ֻP70ziT\wo֥yߦ#~!w?]w8;e^k@7׼@- #<ӕ>߄?&?#4NWڞ5 qjbϚF?O45j_!׍fk̹s PeT37n4LӴ?9~lHM͞|ZO Bٌ v6`_K-ne|89>cXS蕇;W~}/׻M-7/\>'vyGy碍%W*쐰I׉Aj -PXNDctޠRq?k/a jgx{+ع)*/*=@|aВbF9ZU)Ok5u)N_*}Xf~W =ۧ8WQ<^R(J1bF9CMŜFا5h0=$N11>>>XCX8Cb)kZ=!OЏQ,H@z ; 8fئ #DP,nGO9(5AݶĜ4$Ѽ]A(3p$AdG2҉7D:NwHUȪKFͱcx]$ZyWs~ tsmQUUl)c)  ,7OIHϕ㳁HRJWJr3c_Z1'HMfq-RBgF.$"j$wAg*@C2(Z@ 軛bXmxET/MKQ ߕ]??b[ endstream endobj 196 0 obj 954 endobj 197 0 obj <> endobj 198 0 obj <> stream x]Pj0+l >A~,A,|WRzagX'9bXM8B@,jm)58-kH>7(9oҿyvm&,h|-ʼWQNBv@V| 7]LbwWf||uJK>[b|\-2O~br| endstream endobj 199 0 obj <> endobj 200 0 obj <> endobj 201 0 obj <> endobj 202 0 obj <> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <>/Contents 2 0 R>> endobj 5 0 obj <>/Contents 6 0 R>> endobj 8 0 obj <>/Contents 9 0 R>> endobj 11 0 obj <>/Contents 12 0 R>> endobj 14 0 obj <>/Contents 15 0 R>> endobj 17 0 obj <>/Contents 18 0 R>> endobj 20 0 obj <>/Contents 21 0 R>> endobj 23 0 obj <>/Contents 24 0 R>> endobj 28 0 obj <>/Contents 29 0 R>> endobj 31 0 obj <>/Contents 32 0 R>> endobj 34 0 obj <>/Contents 35 0 R>> endobj 39 0 obj <>/Contents 40 0 R>> endobj 42 0 obj <>/Contents 43 0 R>> endobj 45 0 obj <>/Contents 46 0 R>> endobj 48 0 obj <>/Contents 49 0 R>> endobj 51 0 obj <>/Contents 52 0 R>> endobj 54 0 obj <>/Contents 55 0 R>> endobj 57 0 obj <>/Contents 58 0 R>> endobj 60 0 obj <>/Contents 61 0 R>> endobj 63 0 obj <>/Contents 64 0 R>> endobj 66 0 obj <>/Contents 67 0 R>> endobj 69 0 obj <>/Contents 70 0 R>> endobj 72 0 obj <>/Contents 73 0 R>> endobj 75 0 obj <>/Contents 76 0 R>> endobj 78 0 obj <>/Contents 79 0 R>> endobj 81 0 obj <>/Contents 82 0 R>> endobj 84 0 obj <>/Contents 85 0 R>> endobj 87 0 obj <>/Contents 88 0 R>> endobj 90 0 obj <>/Contents 91 0 R>> endobj 93 0 obj <>/Contents 94 0 R>> endobj 96 0 obj <>/Contents 97 0 R>> endobj 99 0 obj <>/Contents 100 0 R>> endobj 102 0 obj <>/Contents 103 0 R>> endobj 105 0 obj <>/Contents 106 0 R>> endobj 108 0 obj <>/Contents 109 0 R>> endobj 111 0 obj <>/Contents 112 0 R>> endobj 114 0 obj <>/Contents 115 0 R>> endobj 117 0 obj <>/Contents 118 0 R>> endobj 120 0 obj <>/Contents 121 0 R>> endobj 123 0 obj <>/Contents 124 0 R>> endobj 126 0 obj <>/Contents 127 0 R>> endobj 129 0 obj <>/Contents 130 0 R>> endobj 132 0 obj <>/Contents 133 0 R>> endobj 135 0 obj <>/Contents 136 0 R>> endobj 138 0 obj <>/Contents 139 0 R>> endobj 141 0 obj <>/Contents 142 0 R>> endobj 144 0 obj <>/Contents 145 0 R>> endobj 147 0 obj <>/Contents 148 0 R>> endobj 150 0 obj <>/Contents 151 0 R>> endobj 153 0 obj <>/Contents 154 0 R>> endobj 156 0 obj <>/Contents 157 0 R>> endobj 203 0 obj <> endobj 204 0 obj < /Dest[1 0 R/XYZ 0 540 0]/Parent 203 0 R/Next 205 0 R>> endobj 205 0 obj < /Dest[5 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 204 0 R/Next 206 0 R>> endobj 206 0 obj < /Dest[8 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 205 0 R/Next 207 0 R>> endobj 207 0 obj < /Dest[11 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 206 0 R/Next 208 0 R>> endobj 208 0 obj < /Dest[14 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 207 0 R/Next 209 0 R>> endobj 209 0 obj < /Dest[17 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 208 0 R/Next 210 0 R>> endobj 210 0 obj < /Dest[20 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 209 0 R/Next 211 0 R>> endobj 211 0 obj < /Dest[23 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 210 0 R/Next 212 0 R>> endobj 212 0 obj < /Dest[28 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 211 0 R/Next 213 0 R>> endobj 213 0 obj < /Dest[31 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 212 0 R/Next 214 0 R>> endobj 214 0 obj < /Dest[34 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 213 0 R/Next 215 0 R>> endobj 215 0 obj < /Dest[39 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 214 0 R/Next 216 0 R>> endobj 216 0 obj < /Dest[42 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 215 0 R/Next 217 0 R>> endobj 217 0 obj < /Dest[45 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 216 0 R/Next 218 0 R>> endobj 218 0 obj < /Dest[48 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 217 0 R/Next 219 0 R>> endobj 219 0 obj < /Dest[51 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 218 0 R/Next 220 0 R>> endobj 220 0 obj < /Dest[54 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 219 0 R/Next 221 0 R>> endobj 221 0 obj < /Dest[57 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 220 0 R/Next 222 0 R>> endobj 222 0 obj < /Dest[60 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 221 0 R/Next 223 0 R>> endobj 223 0 obj < /Dest[63 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 222 0 R/Next 224 0 R>> endobj 224 0 obj < /Dest[66 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 223 0 R/Next 225 0 R>> endobj 225 0 obj < /Dest[69 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 224 0 R/Next 226 0 R>> endobj 226 0 obj < /Dest[72 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 225 0 R/Next 227 0 R>> endobj 227 0 obj < /Dest[75 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 226 0 R/Next 228 0 R>> endobj 228 0 obj < /Dest[78 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 227 0 R/Next 229 0 R>> endobj 229 0 obj < /Dest[81 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 228 0 R/Next 230 0 R>> endobj 230 0 obj < /Dest[84 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 229 0 R/Next 231 0 R>> endobj 231 0 obj < /Dest[87 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 230 0 R/Next 232 0 R>> endobj 232 0 obj < /Dest[90 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 231 0 R/Next 233 0 R>> endobj 233 0 obj < /Dest[93 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 232 0 R/Next 234 0 R>> endobj 234 0 obj < /Dest[96 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 233 0 R/Next 235 0 R>> endobj 235 0 obj < /Dest[99 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 234 0 R/Next 236 0 R>> endobj 236 0 obj < /Dest[102 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 235 0 R/Next 237 0 R>> endobj 237 0 obj < /Dest[105 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 236 0 R/Next 238 0 R>> endobj 238 0 obj < /Dest[108 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 237 0 R/Next 239 0 R>> endobj 239 0 obj < /Dest[111 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 238 0 R/Next 240 0 R>> endobj 240 0 obj < /Dest[114 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 239 0 R/Next 241 0 R>> endobj 241 0 obj < /Dest[117 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 240 0 R/Next 242 0 R>> endobj 242 0 obj < /Dest[120 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 241 0 R/Next 243 0 R>> endobj 243 0 obj < /Dest[123 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 242 0 R/Next 244 0 R>> endobj 244 0 obj < /Dest[126 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 243 0 R/Next 245 0 R>> endobj 245 0 obj < /Dest[129 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 244 0 R/Next 246 0 R>> endobj 246 0 obj < /Dest[132 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 245 0 R/Next 247 0 R>> endobj 247 0 obj < /Dest[135 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 246 0 R/Next 248 0 R>> endobj 248 0 obj < /Dest[138 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 247 0 R/Next 249 0 R>> endobj 249 0 obj < /Dest[141 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 248 0 R/Next 250 0 R>> endobj 250 0 obj < /Dest[144 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 249 0 R/Next 251 0 R>> endobj 251 0 obj < /Dest[147 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 250 0 R/Next 252 0 R>> endobj 252 0 obj < /Dest[150 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 251 0 R/Next 253 0 R>> endobj 253 0 obj < /Dest[153 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 252 0 R/Next 254 0 R>> endobj 254 0 obj < /Dest[156 0 R/XYZ 0 540 0]/Parent 203 0 R/Prev 253 0 R>> endobj 159 0 obj <> endobj 255 0 obj <> /Outlines 203 0 R >> endobj 256 0 obj < /Author /Creator /Producer /CreationDate(D:20100705115808+01'00')>> endobj xref 0 257 0000000000 65535 f 0000338241 00000 n 0000000019 00000 n 0000000516 00000 n 0000000536 00000 n 0000338387 00000 n 0000081536 00000 n 0000082487 00000 n 0000338533 00000 n 0000082507 00000 n 0000083666 00000 n 0000338679 00000 n 0000083688 00000 n 0000084679 00000 n 0000338827 00000 n 0000084700 00000 n 0000085777 00000 n 0000338975 00000 n 0000085799 00000 n 0000086962 00000 n 0000339123 00000 n 0000086984 00000 n 0000088416 00000 n 0000339271 00000 n 0000088438 00000 n 0000089435 00000 n 0000089456 00000 n 0000109780 00000 n 0000339419 00000 n 0000109803 00000 n 0000110914 00000 n 0000339567 00000 n 0000110936 00000 n 0000112070 00000 n 0000339715 00000 n 0000112092 00000 n 0000112548 00000 n 0000112569 00000 n 0000166146 00000 n 0000339863 00000 n 0000166169 00000 n 0000167539 00000 n 0000340011 00000 n 0000167561 00000 n 0000168725 00000 n 0000340159 00000 n 0000168747 00000 n 0000170406 00000 n 0000340307 00000 n 0000170428 00000 n 0000171484 00000 n 0000340455 00000 n 0000171505 00000 n 0000172647 00000 n 0000340603 00000 n 0000172669 00000 n 0000173801 00000 n 0000340751 00000 n 0000173823 00000 n 0000174953 00000 n 0000340899 00000 n 0000174975 00000 n 0000176237 00000 n 0000341047 00000 n 0000176259 00000 n 0000177467 00000 n 0000341195 00000 n 0000177489 00000 n 0000177831 00000 n 0000341343 00000 n 0000177852 00000 n 0000178902 00000 n 0000341491 00000 n 0000178923 00000 n 0000179880 00000 n 0000341639 00000 n 0000179901 00000 n 0000180950 00000 n 0000341787 00000 n 0000180971 00000 n 0000182163 00000 n 0000341935 00000 n 0000182185 00000 n 0000183186 00000 n 0000342083 00000 n 0000183207 00000 n 0000184312 00000 n 0000342231 00000 n 0000184334 00000 n 0000185530 00000 n 0000342379 00000 n 0000185552 00000 n 0000186697 00000 n 0000342527 00000 n 0000186719 00000 n 0000187806 00000 n 0000342675 00000 n 0000187828 00000 n 0000188989 00000 n 0000342823 00000 n 0000189011 00000 n 0000190273 00000 n 0000342972 00000 n 0000190296 00000 n 0000191482 00000 n 0000343122 00000 n 0000191505 00000 n 0000191784 00000 n 0000343272 00000 n 0000191806 00000 n 0000193001 00000 n 0000343422 00000 n 0000193024 00000 n 0000194177 00000 n 0000343572 00000 n 0000194200 00000 n 0000195474 00000 n 0000343722 00000 n 0000195497 00000 n 0000196782 00000 n 0000343872 00000 n 0000196805 00000 n 0000197766 00000 n 0000344022 00000 n 0000197788 00000 n 0000198893 00000 n 0000344172 00000 n 0000198916 00000 n 0000200185 00000 n 0000344322 00000 n 0000200208 00000 n 0000201233 00000 n 0000344472 00000 n 0000201255 00000 n 0000202456 00000 n 0000344622 00000 n 0000202479 00000 n 0000203635 00000 n 0000344772 00000 n 0000203658 00000 n 0000205003 00000 n 0000344922 00000 n 0000205026 00000 n 0000206136 00000 n 0000345072 00000 n 0000206159 00000 n 0000207355 00000 n 0000345222 00000 n 0000207378 00000 n 0000208463 00000 n 0000345372 00000 n 0000208486 00000 n 0000209530 00000 n 0000345522 00000 n 0000209552 00000 n 0000210711 00000 n 0000345672 00000 n 0000210734 00000 n 0000211831 00000 n 0000357090 00000 n 0000211854 00000 n 0000227892 00000 n 0000227916 00000 n 0000228118 00000 n 0000228633 00000 n 0000228994 00000 n 0000250147 00000 n 0000250171 00000 n 0000250368 00000 n 0000250906 00000 n 0000251289 00000 n 0000266786 00000 n 0000266810 00000 n 0000267016 00000 n 0000267425 00000 n 0000267698 00000 n 0000291713 00000 n 0000291737 00000 n 0000291929 00000 n 0000292568 00000 n 0000293047 00000 n 0000302819 00000 n 0000302842 00000 n 0000303054 00000 n 0000303371 00000 n 0000303565 00000 n 0000323623 00000 n 0000323647 00000 n 0000323849 00000 n 0000324276 00000 n 0000324568 00000 n 0000335240 00000 n 0000335264 00000 n 0000335460 00000 n 0000335899 00000 n 0000336192 00000 n 0000337234 00000 n 0000337256 00000 n 0000337449 00000 n 0000337756 00000 n 0000337928 00000 n 0000337992 00000 n 0000338116 00000 n 0000345822 00000 n 0000345882 00000 n 0000346134 00000 n 0000346291 00000 n 0000346488 00000 n 0000346662 00000 n 0000346888 00000 n 0000347106 00000 n 0000347324 00000 n 0000347622 00000 n 0000347800 00000 n 0000348018 00000 n 0000348240 00000 n 0000348438 00000 n 0000348636 00000 n 0000348886 00000 n 0000349084 00000 n 0000349282 00000 n 0000349480 00000 n 0000349678 00000 n 0000349876 00000 n 0000350074 00000 n 0000350304 00000 n 0000350550 00000 n 0000350796 00000 n 0000351042 00000 n 0000351288 00000 n 0000351534 00000 n 0000351780 00000 n 0000352026 00000 n 0000352272 00000 n 0000352518 00000 n 0000352768 00000 n 0000353018 00000 n 0000353269 00000 n 0000353468 00000 n 0000353611 00000 n 0000353754 00000 n 0000353897 00000 n 0000354040 00000 n 0000354183 00000 n 0000354422 00000 n 0000354661 00000 n 0000354900 00000 n 0000355139 00000 n 0000355378 00000 n 0000355617 00000 n 0000355856 00000 n 0000356095 00000 n 0000356334 00000 n 0000356577 00000 n 0000356820 00000 n 0000357560 00000 n 0000357710 00000 n trailer < ] /DocChecksum /E735BE730BCCB2CF7803CBA2F6BC255F >> startxref 358061 %%EOF LTS5-cfflib-9a123ae/doc/pdf/electrophysiology_mini.pdf000066400000000000000000004331151156222202000227030ustar00rootroot00000000000000%PDF-1.4 % 1 0 obj << /Matrix [1 0 0 1 0 0] /Subtype /Form /Length 156 /Resources << /Font << /F1 2 0 R >> /ProcSet 3 0 R >> /FormType 1 /Type /XObject /BBox [0 0 612 792] >> stream 0.000 0.000 0.000 rg 0.000 0.000 0.000 RG BT 18.000 762.440 Td /F1 10.0 Tf 0 Tr (Nature Precedings : hdl:10101/npre.2008.1720.1 : Posted 25 Mar 2008) Tj ET endstream endobj 2 0 obj << /BaseFont /Helvetica /Subtype /Type1 /Name /F1 /Encoding /WinAnsiEncoding /Type /Font >> endobj 3 0 obj [/PDF /Text] endobj 4 0 obj << /Filter /FlateDecode /Length 10 >> stream x+| endstream endobj 5 0 obj << /Filter /FlateDecode /Length 48 >> stream xS**T0г4723W0A8T\!9WA?"L%_!+  u endstream endobj 6 0 obj << /Filter /FlateDecode /Length 10 >> stream x+| endstream endobj 7 0 obj << /Filter /FlateDecode /Length 48 >> stream xS**T0г4723W0A8T\!9WA?"T%_!+  t endstream endobj 8 0 obj << /Filter /FlateDecode /Length 10 >> stream x+| endstream endobj 9 0 obj << /Filter /FlateDecode /Length 48 >> stream xS**T0г4723W0A8T\!9WA?"@%_!+  o endstream endobj 10 0 obj << /Filter /FlateDecode /Length 10 >> stream x+| endstream endobj 11 0 obj << /Filter /FlateDecode /Length 48 >> stream xS**T0г4723W0A8T\!9WA?"\%_!+  v endstream endobj 12 0 obj << /Filter /FlateDecode /Length 10 >> stream x+| endstream endobj 13 0 obj << /Filter /FlateDecode /Length 48 >> stream xS**T0г4723W0A8T\!9WA?"D%_!+  s endstream endobj 14 0 obj << /Filter /FlateDecode /Length 10 >> stream x+| endstream endobj 15 0 obj << /Filter /FlateDecode /Length 48 >> stream xS**T0г4723W0A8T\!9WA?"X%_!+  r endstream endobj 16 0 obj << /Filter /FlateDecode /Length 10 >> stream x+| endstream endobj 17 0 obj << /Filter /FlateDecode /Length 48 >> stream xS**T0г4723W0A8T\!9WA?"H%_!+  q endstream endobj 18 0 obj << /Filter /FlateDecode /Length 10 >> stream x+| endstream endobj 19 0 obj << /Filter /FlateDecode /Length 48 >> stream xS**T0г4723W0A8T\!9WA?"P%_!+  p endstream endobj 20 0 obj << /Font << /F28 21 0 R /F27 22 0 R /F26 23 0 R /F21 24 0 R /F8 25 0 R /F20 26 0 R /F18 27 0 R /F17 28 0 R /F15 29 0 R >> /ProcSet [/PDF /Text] >> endobj 21 0 obj << /LastChar 121 /BaseFont /ZDOTJN+CMSS8 /Subtype /Type1 /Widths 30 0 R /FontDescriptor 31 0 R /Type /Font /Encoding 32 0 R /FirstChar 14 >> endobj 22 0 obj << /LastChar 3 /BaseFont /ZMQLXU+CMSY6 /Subtype /Type1 /Widths 33 0 R /FontDescriptor 34 0 R /Type /Font /Encoding 35 0 R /FirstChar 3 >> endobj 23 0 obj << /LastChar 3 /BaseFont /FWCREU+CMSY8 /Subtype /Type1 /Widths 36 0 R /FontDescriptor 37 0 R /Type /Font /Encoding 38 0 R /FirstChar 3 >> endobj 24 0 obj << /LastChar 57 /BaseFont /ZDGBOE+CMR6 /Subtype /Type1 /Widths 39 0 R /FontDescriptor 40 0 R /Type /Font /Encoding 41 0 R /FirstChar 49 >> endobj 25 0 obj << /LastChar 121 /BaseFont /ZTDPTD+CMR10 /Subtype /Type1 /Widths 42 0 R /FontDescriptor 43 0 R /Type /Font /Encoding 44 0 R /FirstChar 11 >> endobj 26 0 obj << /LastChar 123 /BaseFont /LGNHCU+CMR8 /Subtype /Type1 /Widths 45 0 R /FontDescriptor 46 0 R /Type /Font /Encoding 47 0 R /FirstChar 40 >> endobj 27 0 obj << /LastChar 122 /BaseFont /PQVYTK+CMSS12 /Subtype /Type1 /Widths 48 0 R /FontDescriptor 49 0 R /Type /Font /Encoding 50 0 R /FirstChar 44 >> endobj 28 0 obj << /LastChar 121 /BaseFont /ICDELU+CMSSBX10 /Subtype /Type1 /Widths 51 0 R /FontDescriptor 52 0 R /Type /Font /Encoding 53 0 R /FirstChar 40 >> endobj 29 0 obj << /LastChar 121 /BaseFont /ZDKWNS+CMSS10 /Subtype /Type1 /Widths 54 0 R /FontDescriptor 55 0 R /Type /Font /Encoding 56 0 R /FirstChar 12 >> endobj 57 0 obj << /Parent 58 0 R /Resources << /XObject << /Xi0 1 0 R >> /Font << /F28 21 0 R /F27 22 0 R /F26 23 0 R /F21 24 0 R /F8 25 0 R /F20 26 0 R /F18 27 0 R /F17 28 0 R /F15 29 0 R >> /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] >> /MediaBox [0 0 595.276 841.89] /Type /Page /Contents [8 0 R 59 0 R 9 0 R] >> endobj 58 0 obj << /Parent 60 0 R /Kids [57 0 R 61 0 R 62 0 R 63 0 R 64 0 R 65 0 R] /Type /Pages /Count 6 >> endobj 59 0 obj << /Filter /FlateDecode /Length 3356 >> stream xڭZYw6~#uNu^vIf"=4EKT_ij 쏘/`~!.j1S.k a6WRӱLY5qM"]:'#Q0AD<0ˮ$Yx, l%ܯrG ㇧o4'p Z WyG)Z֚QގhtGpyX$E2]N#~nb k]Xb͌jP/똵JsVadю,yؔUk`.80zFqAC0ۙ$#?x @?TOt{ Җ^tjfhM< f%`%C[._ (v(үJ*DfigxxUSYUq]'mЂ l[vUپ+<;(۪ h0zQ΄e&'-w9+R&ves2~mURd2{Ի>Uv;ę(Im&ܶtg/3Ln`zHuاEOfM=eO0Hs$#m)[LŴ;φE~}5K4~+3l^//$/uJz#|@`?G9nZ[h.`_(݉OP&fRC&;Y߃i+|qE}I! }$)H9gg]j6shJ94n9'GJLtmc!|_g(Aj4m_4gcoTlڎG6Qs eѴ<5]J:'$GuK_\#ۣYK&FZ|}( Qm7ŝ1ᘣڷ$?ݞ|V VI[|>R郳5)IZ FUm&כ(&tE#gy_㸭(ضx`؉ 򪈹}HSEO$4HrlY9Pg`ﲻ2CMH_`*d_'sٛ&O5fw::]հ/# hOV.KHja}EӤ)c{G)-ס&~qPztB`b+>kZ:>^uv9Ypt8ߝY=s,~;Eq!g`h :=CߎZHl.͙!(}̃;Ψ#(P,pHVӷ{MpgpEՀj˟*LhNܘRw+c[ /?\D'Jf]A'jzgx`S҆* Za\Y4*2}/YyϱFZvaDmœV+h{]%< ed+; -kir g9~^K>b x̿+WelC=iZ;ٜlqUsqQ{2KrMcX^/tr| /4tan\#L7V%n¶]b.&Vp+=ݍtnz-m)z5 LXpB<<͍* juo-OՌ$" g#e1#C(qi}cj#ጮy8G)8#b~S6lFDHr $ 9L2.Oy(3 94Tm c AH;GQ|ε #tXPᵳ?Qz!0/f1[$t7\`V_u <|R)G.xSKr!ߞBMx<7fCMkt oo"9\1A]g"8+ c[J@8NWDzmt";7".|IU6UMmB#}w!c? @e\RfBs 9 N,Ԧ6c-jEIT %6 bD7}St_+7$–GH_nN#dp*cm6n4@иNTy'Y)obMQ`>c>r"A! 8B9Jj;~G[ojE`xFGz}(鏂lu2HQCPh:-a5LOkʾM*1,yװAu.kS:T#Մ(p߄)fݛҐ|zRuC6P"AvbhzR/чB>4 䚐;y3c8T WJ]Ҏ&;c5xu@Ba^ڸ?uh"DV 7׎ɬH9.Z;=NnX0kj 0+.)K['I(f1f0m("W4 vaFgWL!kkͪ8+cGxn~J endstream endobj 52 0 obj << /FontName /ICDELU+CMSSBX10 /StemV 136 /CharSet (/parenleft/parenright/hyphen/one/colon/A/E/G/I/L/M/N/R/S/T/V/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/q/r/s/t/u/v/w/y) /FontFile 66 0 R /Ascent 694 /Flags 4 /XHeight 458 /Descent -194 /ItalicAngle 0 /FontBBox [-71 -250 1099 780] /CapHeight 694 >> endobj 66 0 obj << /Filter /FlateDecode /Length 7061 /Length3 532 /Length2 6270 /Length1 1323 >> stream xe\]nkKafn%  nP$$%%%yt~g\k{k^fe畷AZCUw^H㱲*BaH;T=u !A ~tm32:HR+6+4~}Y>BrμL]Ss׽𜨭G ܇g˞X5Di1KgoOGVm7R^7k@l/' ]" sETgdh:~v\$y1!} Z/}kO]Im{DkrnqꏄmJqbܡ%?YKÄ{2{bo-o:I=zRp@ŹA[6`I=dgjoUBH !͉sZ0x[S5c:1q])\2M.' QDcK#LӐL\]A/U.|ܭʪuz%j# rʝ{ z ٌ3В?ݛ5xkXH sHB}6n+0xݛ*]4t:u]Djp@+uɱO葑;|ϰ t!K6uӤ ]bj)W㜴R+~nI,"EaUefyvu-VGQdmp}ydҮMwNmIS^ɗϕ[^u~t>sl"ٝA/$ObnDI!;{ozw],ZF?͍F}.Q  mB@X*H\jܯ~ ` ]y61O# :-𑂀.W#mJL`I|!5Ll0J)aD:d@A1#oE]n5mXDZj{t_%H+ Ք_A˂aN*T?+~8r̂Ffk>o9sx^6Gn?(kc'ymm~eEop}];kIJьg,6[)e,uݔA^.R0JX.q#SKB{zE4h)Ύ( ؼz!Yv8 ]%ex/q_-|Cc+ 4iuyP0BknɵZ?, ]N4hFLYMB@MIK/ʎ{]tӫܪ mJJ`3ǾjAƳ:_K|X-\[٩$:1[8~~$ɸݐs֚6d-uFnUY{['­-v.|=9#7ж?FHa+N޶gJJC_5؄L[HpslL笪:mX.{V[i::x Oϖz︷n@z8{!d9\-1{K隥>yPN"I9q0r)V'vCv8lCR0f9]p /L ԡHކcZծ~viEF}xV;Få=|@=9vBO{\k7?5 m OW=2T<16cқ,<[TB-Y#hIq.NCB:j"u ӥ㹍983;&)/?yLOǡ=}A0\fk_2[8bm.%l5@-B)fk,u 2|tږK{'5'\h>V PZcl?[k;Y>+[.MFd|YfMl7 UKb$DqJ5Fs;0VLä4cNjy *G&Ɏ'^-y#CAII~pϻA?bѦ3e/@ף|qc^/8ϙ~9FPq|Xąj^2wڧAGdٗNq#$4C5O~3އ /*0(F4|=)IW6NyK?NmF>M5k :jZcF"jDˈ鴶68nƮDb«x~-j?^͠wڨyfaZje jr Wj=j* O5.WW{.^|H2Hjn@fw:QѠ| d4)GϡLLY$Ѿ[l#J7Yu8L|lƖ|f趺D2~NO{X޸ `Q=>u8w``oYj- m%RNp4EOڮ#ru籽Cox 8c5ؗi:Z߆',5;3t٥9{ $Ȗ&IyĦ8pX7-|}9܀d{W}4}oD>3PVr6zg{npy9H/#lˣ%iAe,L5vh6a l};r)ۧH-$3y.w H}]}*d\a-5n\B̻fIy\Q@oq6 K(@-x5wwKI)Cr8|VJcKqgbL5AzϝEfXʤLL+[+tֽIif D ! ^Ϋ.-+Xzo3OAvaЌ:Qh䯝HN8X6&3K[){4 FcX#B\1֛pKG׊]cU0ZY48Rj#(l"b-5B'3Z1J0]"έ6s܉0YEJuRqO (8NIc3-uR6DlpxrsEV&  J< 8<]z?L3?ecݑp<D.gȫ { ԍY緇")ixswN\&Wa;v,6V!vadrQ/(#yo-$ ]%k3ŴGsW/B0N& DPb0kcChcbBnh=ٌqʟ KtԨnO{3_nn>æ5_Έ^smӀ3į, |*oGlʧZH}b:_ɬ}׋nZ]Q(Ɗ|s#B <m!I_]Wٯ|d=mXz#!R-[y%Z:,`^CEVBEp s,~IAv9NRR1W+ zQDGrnc#u+Y_t_\fo]}aF36-JP3'H|Ǵ^9fW&sYtkS1{"صKIOa$"y'"2VOq'fBYEe|bn+ 4Yolk'ԍdDž_՟j6nc,]/ف<JfyOԔipУZe_e>+G!/Ed_qy0cc!i¹Mb662%t@,5q넬v.u3x$:M^iv^ݛqKzL^&.j&ny{ 4u4ԍPktR^Dƽft l|g{)SMne%9n;敀5&9oDx#!=FPeBoYlzK[KmHHݏ˺ bRԛ>;\x2eg8OLZ9=ld~}1`Z˖4O Yx0sK)=]t5;YC3c 2K\n'nD1W)ZdB}-&leD&͖xBif, -3RXS<2v'GjyrgAR.d REٲ=Zը*' fb b֌ZѬMI.qJs/ELE/N1/訣!S%§Ϋ̲P7j^R/x1ol Vwgr=Mxu] LU`ĮpRЈX*kg9(hk&tx&'9ȫ&ZEų:?|J ?ċxU|)˝@G }y~PnBc͗Oenj ^UzU`EJ@JD|))G%\waɲDzW+#1c[ۏc s㱣FӖ@S\@5g7NN~P Z|Phm1>$؉=僚{D!BJ!ArѴV& NӐ,211+hMOR(x=]sKYC52:-hOpX8b(;jrbnPfQPRCPO(d$r3ݲf14L{}Y~h0>L6 'dy+Yz+xpڎjc a)`a`DHLjI# 歹Vx,LeS?g(?+(\X?f|ޙɐ6צ+ǢoG`5x'TZ=*NUߊd}N5SIüÉ_Ar+3#ޏK8p &7-nd:PPpW(h(GdhL}d~]Ӯ?9 3i1ϳ-Vի(2[ڈJTOLP1&tB҆V*D PW[}R4k)!ϜdUcSРC[μbsky=Fu<'}1`LwAѠ,|IO9m.JB'~5}Wkv2@d7tF^xvAFUd87ha:\b{#I2Hj\dX} &śS()K+?-733ZPx'y#$ Ly6i1PyЋa=̐) jꎄ[:/' endstream endobj 51 0 obj [428 428 0 0 0 367 0 0 0 550 0 0 0 0 0 0 0 0 306 0 0 0 0 0 0 733 0 0 0 642 0 733 0 331 0 0 581 978 794 0 0 0 703 611 733 0 733 0 0 0 0 0 0 0 0 0 0 525 561 489 561 511 336 550 561 256 0 531 256 867 561 550 561 561 372 422 404 561 500 744 0 500] endobj 53 0 obj << /Type /Encoding /Differences [0 /.notdef 40 /parenleft /parenright 42 /.notdef 45 /hyphen 46 /.notdef 49 /one 50 /.notdef 58 /colon 59 /.notdef 65 /A 66 /.notdef 69 /E 70 /.notdef 71 /G 72 /.notdef 73 /I 74 /.notdef 76 /L /M /N 79 /.notdef 82 /R /S /T 85 /.notdef 86 /V 87 /.notdef 97 /a /b /c /d /e /f /g /h /i 106 /.notdef 107 /k /l /m /n /o /p /q /r /s /t /u /v /w 120 /.notdef 121 /y 122 /.notdef] >> endobj 49 0 obj << /FontName /PQVYTK+CMSS12 /StemV 76 /CharSet (/comma/A/B/C/D/E/F/G/I/J/K/L/M/O/P/R/S/T/V/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/r/s/t/u/v/w/y/z) /FontFile 67 0 R /Ascent 694 /Flags 4 /XHeight 444 /Descent -194 /ItalicAngle 0 /FontBBox [-62 -251 978 758] /CapHeight 694 >> endobj 67 0 obj << /Filter /FlateDecode /Length 6081 /Length3 532 /Length2 5292 /Length1 1336 >> stream xe\ݟI)$AZ:ep`!E:AJ;F@B$rٗ3o:wu~> #u):#y@q.P'dasp{y0&>zȸZ@QqAAq!QB39.W(@ `sz uaHO^  (X¬|[9D5 uu-`GKrЊP{' "p@g&R\\.yvH3@ sgSؿaP?gU`"co5wQ{Zp$9 pC)n>Y CeMekIrMh5U vMtkBiMbv;e.H*Dad{{lƸj] (} vv`^c) A3gN .HGqn9\4ރ7yg(/H^?, YKfkzik;0mfĘux;B?=#'TO!J_IvC6#YkdE; sa&(趒n~t;WrBÓ g7*xr\=.LyC#i4욆tM-,"yμ8YBeMčZ ;,]Ȃ1ŝxqQ9~Yz,axUjMbVrR/fB J=WI(M( UF?ާ8t{6"3C\@|gc9":Ilhh8}6=bɽ\]e{ݡ|4qFi C cȗ;?L G1?BnWw@1U7}fS ۳ (Nz,f-B+1(p [gZԬl{9Ϯ~>,+Cr7suV,6Լ p(Up],R ԑ-GsO?PֆO:>>2|_|7 p徑9``/?{aCO悤d]|ktx!rΛV7t-Ң\X#`C&_azsP=8FJIxsH$wLZ6|?,Bf-&n_hh˺$ ,Q߂oЭ41q|s= pgv,-h{ujn9Vz[ "cٺRkΡzrt9sͯcoPZmr9L9Y$}=+ZuATC? R.h ߿01`^y ճTĵ6,Np+9?LRWv8юen"Of3ɇUP )Їc7G<@R?ZEJ|ˤLr")&Fߺ3ĒS^PY(7H M$=1zJӱ/dd6dD] tv| DcE+Ӆ:sXS|r1jģG'p`P2iӂ\ATzd4n^WۉĹ 'I (*qLCBRW%Q^}6\>ve4/qV?Jr-+3L[kVzjHߧje KF:R@TaSdAx.z0` n e&L vmJ%[sSj6as1H~7gx0_ 9fUSaG}X.& E,}A|Tq6ӎ!1g ;y{( ^뒱.$]PitX`a\<*IZ͂o^#?~Pf(w'nAGKܱO\EAGRiO[Ofl3v+f`5һppCa +7+}!4/s_k8ɓhO^ ֕Q+{Y [ \腖TdoɈæVig^[{- HAKjH4]f,֙~N?+!ܕ_RwzpPS{1PF *nSR x$oTodmXDhLf{m,^t;nO47:Az yVa,Q6ԲVٴExЦ2M PͧgQqW2;!74ڦ-q6nO{ {` 郟⯐'"E lu> R8͈&IeΓgg+}q/b|闙2efNf&-caC9z#~{@׸ms{f!SR N\'?aZؑ͟bkcUF +?i\ex"rإ9|zhd^F}J?7창LްR}V_7d90ș۟D-Miyq&VCǾS}nldF&ܫxFxmeԟxaΓ˭B R9ӣz.1Hrt҆I>'H%1ʿmy%ŀzdC>%*[ u6u-1{ +T?lƅ|`8 ? %(Ɏ%2l=o2Tyn![aҐ7syƟªdҗu{%kـ]v)Lh eD(?y,uLO< 1'*_gBPGߵޗ QL2C*M?$ĻD0\x6E*$k Bp^؛ptya$5Da?<F| !Rulϩ~  [Ni 0n_dZIL0;'olljpܙBT0vϘxl|3i]4z; ZOɦo[IXdm@a_"5^.'2k HOhC7HP/_-sQ{[geA.ڤPګ[PVw>b9qA^$<O&E grYYD0tP/`N{˼>k` oܙ JK`SIJwv||> L]fr. <..B*ܑKnl=~kه<3*;Q X$uL15k=G+/sj֬q |c4k^M=`}DʫxHծSQgJtT:֤6'5uz:|K]f[1:oi+$rR{ e%f*5?6"#'dKmVNz(}RJw|>(TT]Dr/s~IͻCQHZfb)@VDLh\BT!}qG[jRea / o3FRєgsUSEG(`lϟX`W×X[Ɇk'KS{5CVG" ˎ] [Jci5ږƤ6=pqK&^|C\%"6*o=C611{>&טE"''>2~g/˾\͸Xh&|VAP{rv:[U0-[K&Hsw*ֽmhՖD|Ɔjq.&Lzg)8ǘ{0fÓկ9_mC$߶N{W>aϷK|'ISc|pgȒ!.cAc/ oŽJ F ":_rkIHH%s4x>B'7-*/ڏ[P5xNWp~HU~i u8b!/P!M4d&adwD o^ȿ~ @03lKj~V endstream endobj 48 0 obj [272 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 647 650 626 704 583 556 653 0 266 459 674 529 850 0 722 623 0 630 544 668 0 647 0 0 0 0 0 0 0 0 0 0 469 502 435 502 435 299 490 502 230 0 475 230 774 502 490 502 0 333 375 354 502 448 666 0 448 425] endobj 50 0 obj << /Type /Encoding /Differences [0 /.notdef 44 /comma 45 /.notdef 65 /A /B /C /D /E /F /G 72 /.notdef 73 /I /J /K /L /M 78 /.notdef 79 /O /P 81 /.notdef 82 /R /S /T 85 /.notdef 86 /V 87 /.notdef 97 /a /b /c /d /e /f /g /h /i 106 /.notdef 107 /k /l /m /n /o /p 113 /.notdef 114 /r /s /t /u /v /w 120 /.notdef 121 /y /z 123 /.notdef] >> endobj 37 0 obj << /FontName /FWCREU+CMSY8 /StemV 89 /CharSet (/asteriskmath) /FontFile 68 0 R /Ascent 750 /Flags 4 /XHeight 431 /Descent -194 /ItalicAngle -14.035 /FontBBox [-30 -955 1185 779] /CapHeight 683 >> endobj 68 0 obj << /Filter /FlateDecode /Length 1255 /Length3 532 /Length2 713 /Length1 752 >> stream xRkPW-:ʐXgriQLB"M cA-MXHvfʣ-m-:TQQ(+@ qğNs{=]Ϩa(A'AMBT*A&fy@E'KAPdHc1=qA DCd2 !( HIPGR<Ð@>M_@1q/gr,4jyH rN SUz}$fp;Bz 76Y M@Ny@L7 G,'PJ@!R@TQ$'-7}Híp Ѩ~C]Ģ0bX /Ƀ52bH3GDrDnXv| ` Yx'%9bE% 4s4U ĘK4r=IvF*8] \ OgH߅E%!4CBs֧8Y5n+k]޳zaqN]oᏟmTyAvK+.7N\bKƽn[W||nN\mok*+{ ߾$/]Yսjlͥn#?bnSVUxdNv>O &[f]4pjd$\SkO2ȣ ?n_jkS>mk/zhM'%e *UȤ>Ix^=0S!V]:v3\3?/Pǟ2myiѲrm(HV[T&Ϗ؊W_FLh:GLi5i[z{)~ie~jfƂYҘ8FJ-(> endobj 46 0 obj << /FontName /LGNHCU+CMR8 /StemV 76 /CharSet (/parenleft/parenright/comma/hyphen/period/zero/one/two/three/four/five/six/seven/eight/nine/colon/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/r/s/t/u/v/w/y/z/endash) /FontFile 69 0 R /Ascent 694 /Flags 4 /XHeight 431 /Descent -194 /ItalicAngle 0 /FontBBox [-36 -250 1070 750] /CapHeight 683 >> endobj 69 0 obj << /Filter /FlateDecode /Length 12386 /Length3 532 /Length2 11408 /Length1 1749 >> stream xUXL֨`wwwww$kpw'f?ɞ}yyNsZUU]*( :21re8t Žv"Φ\FNNFp03wPS3 hchalh 5t6706([:{Jd8LL]MM`&#S3 [X|$m6q!WSG'(I *Z{LL2!\ m)ܣkػ8:dLLm{dMM,\l{TX9ૡ⦶&-ܶ)Kʋ)(S45`haa3a8ZM53^V6,^51u}l휁)x9s, z{CGS[kӯ ;>Yv66"zs{sS?!6`.L8vz;[0+8+p}gsGӿf0ڹ8 097? Ts2u AGCz[E8OCt?CEC=?lMCE]dE]E?tQC@?tQC@?tQC@?tQC@?tC@'E-N`&! ӿ0 N,B`+!/JY@+? Vv!/j8׿5\B_pLu=Bພ!p7Oӿ~ܽhL&p7h|OX45u75]]3Li.-)2kk X.vڪxHGE<<$p{q 8)v!6u0ݳ G&]! y+xYf`Y!Hkc_F XjHP=3rCY(KȦrbt Ayn4DxUfڦ% \a?G.,'cLK٘j#|_VKhF]G_H/VŏOzJn ̌:"Zp zhHxhlI&9knБpBS wsX$)TB}~s 13Fpi` 77i]{33WUF+fF6J4i|Ox󊄰Z+͂ <ۋtdKgK !9HfWbpyse9rk_P8Ety㑍[Fi9] zHBUg7qDp5nD\A9 orFB^WIY Z XmA3zB0zeH=BuKɔBBmVa31D ΈWi0΄0d1C)reո,e 57.؊!Wb֥Y | R1(}cμD龱^X$ Մ鷕P6H>:L @i\6hCԕTxs"o.؏pxm}]۠i˰er\ Ifӈ`f}E}FLZzR/}R]@p@݇vӫ<vx%eL8psT+?dt olϱ5"oJhd&/| {lѴcg(h> *$ab:Ղ8MAu;1V 6t5E5vr|EBw8fۃeU{xZ#n@֌%=W3U5Db̫Q̷{Z8DvJ=jzhsLB[/3avUh1O ߈4ݵ6ǁ8X ؓ u~ݶ4a ẻ\ߋÆk@> d 5* 7%SGaye_pj JSVW )OAyٞH4AD6, 8w]*{~ #XE 0 6k,)+a K iڠ2xymSv EK:~Љ"5R#]ҷNLXcn*_MWlWܩa峤r5FLr\ &c@toa8cav#u5S=!*5qɆn4+/oʏwP4 c4_?͒,!{RDV8il|%( OW K&Fr) ]1nbk@ m:ѡHDAQȶhi c!O)_-C8SjW>kK4c~r;IJȒT{چK5v#ORUI}.!j,d>3/vB]yWpke& ݒQʡ8xC;Cy% e<ƷX@,M )Zp5H k0}GɁ]]N)ƅs.hN,;ۍ . F\TTqPZhhOx% 45>,1܂*M"ƋsR$U~y>yHiSE}n/Yʭ7#IL[2WVMRD_S">WzǣtφDw!m(Y~#|owҖU Vl #a\W)Djљss :Djʼ#6c4lހbA$cmx4SzRwW@xX)-H^Kd?TNrw\>::M~xY/ aO z+r3y8^6F~Dy'XWiipo'0?{ƓܘFPr!~$,^.B,!+K  snjTI?DЦ,&^l{3TGMn/N]3YZ d~iȏk I*5kf.QUN>}lq)O_#d",vcMŸOp0(Cpf!ur=ҳ[xBgEJJ>.聛f5gJjl!BgR397q%RO(FEs Mt<Pbfp꾐KA._)SS^"rҋxeHV؈Rt=\mA #5Njrp3\͌(G._TG=}O X 6 [a;U:|PюJ=bK]c( ɽ؅gaaa>] JTle-|% X7"9ٟgRsQ; '|MB.'^CC}$ɲ+>:ÛDB#tQC\ i{Z}&GPtE:[IPyb}NjNLUQ7[QС߈}T{>PHrSIKŸXzdWWA;ڛ9[5pQe(폛wC y%S)%a[-+?sv'Gm>I#?Č!訅^2ZmL ଱a r +zjIHPfE<5UNBZϝ /`cGywp(/C"U@*?|cV>oچHuIDދ0 #7Y)VqgW1~C TS]txWk_)s,8GSb)=wc7˃C`ȧ72h13*T0nʠb@UJ/{e&,, ku>~r{[쓌D/NN}+ۿN .]ceۄ.`R)-dѼB)ٞ2 |a_PY8̵^|.t%o5ձ2!}X-^=1 d'oz>zmI. J%qV*){n6x #5ZW/V>0dmT8/&:%.6j&/a1>`H!L1q,FWp\j(6k*(>6qϟm4||Vl\iӓǮn-+YY| +lnDr+&,E8' En\rU`+16}XN5. wkSjˉ^!.1ۡ ϧmPB#c.ܒڛT}!'a#E4X=,x "Q5U{yͱ]'+'X-۟`ܘQIQ*v[6s\s:$*fƉ"|]*>6V}Pmӣ<"(1Wn%}vka$"r-wYvE w= e{$AsiMib4MDAM.}t!]\ 4W zpD)۴td>_!SR?{\{>C ǹEpZB t:V 3$뭌WB'eA$A*mI@zq>~E?>o[޻@qgTy)T"!1ɷw$wH6zc7(97Quץ۷2`gG{#u34& o[\QO~`t[NJwr~wYUz^2Tb:n7Hs8t|2`7mM\b WzNLwwn_!}vXeW jI`"@c ' ͜\w>n{p͢sTǣHRFVTP:5m,_4Pbv]]jRB.SPQ^%oclَTd PƕjB;,y s%je#w>br EOLG ?dBԌ6 &P*pۋ*Tra zI,<:aq"(.]K'6=mQ\x[R_ Ne N~(*0;Ḷ&8tZ Õ_rH*܏R? farX|P]h0yuIDMTvb*2vGJDAJ͹~Z?@SO ^Lqer{h8*"}h&5AȚĹ aDz bi@ dDoo\ihx߫_u^—Qe]4mkc3$L¨չR )-Ψ70BI\dSo!;iz+ƹnȓ1Fd/ =ՋK='t_X/~KA3VDU6*=\@ $p#- 4N!ElL}¯%!V5*EC W@A=8^~W]g6C#mb2強l`ƒ8'=p]:vu37(AXkʇj4,ЀV7H9@IvFkgRIEFB[ȸvB#RV$8Ff3"J/'`ݰ.'fbRQ~g$FfY凢batu2ITڗ;$ ^IOcgf1(h+:"[8)*MX{GFV=GƯҳJ<y7#mr6t{Ōo5\~l9'QrgOlx!rQS8MMNCT?/Dqm_BŬ^KKn*I8=/p&wØtCQ0C͇D9 >Ue1s/]K뮍 QKa1̊#~dhx{`nօfj͒IIӜO%-?Ɩ`F"{v$_d%ݰIh;Wc3R2U$9rp,SAHR4Z!e ~XL|lUʀh0*.N ")Bڿ˦*7y-` -iCL}jߨ%)8q4˹'Y&޴ċ6"X湒:zL˃ !6dĕ[ݣi :/CT +5f3uʟ58}!i0{ ML/zJvlF5+3x~£ܐ;eGקSna' c$(֊!SI*c,h.T^3Hx+q#`+ J4yXB}1ڽBM-»DF^ۛ thj$DY 'V[ZT՛WYO >Pe4ʴV^RhŃ"] i⯡rҼ Ỵeld[0~yT`ׂ;rݬ/' y xǤe;Y6du-~fFZ_j\ QB# 6U)piqgc"x-mzIUF E-ėAwb0W}B%d̆eC$>xE\-*4~m8Y  FSG5;|"+<䍅gd?ң2+)¤*n0[1?gd9iւu!)ݟ@(vZYXqQrF-ώ|""i,3g*(fsc^$mΦ\I'"|[o*mM17D"h43B=Z27OU嗡NG_}+z`;rߊHRH G^E R}ZWy!]ZYu,|&]B\a])\DD'LIxIS AҘ 90|%;g-OMe U' |bsګSd|wo HdA^g lhDA9 V>>&}7ߑ_6AV@WjE͛Owvu&ăχXm*x_Cf!b9O֕ͷɨow#WW||s&5>JL'C:7sg鞧߯5&[/(zix.'\m4/OB)f,'wG.L9N{wkwrrha$W%% NK]*QSky0$WG)O:> |D IK<'WRb-j?JkjytvsLI⏖vaB>"P_Ua!T:-h3F3/f+nXj$UHhÙćd "^ Z 734z` Q\x116!jJCD*Q^MF-?-gB+1Q}}1-]E"I3cGddѹ5z\1H:܋)NԈ~Q&Oz<*./O5+!1p܃[{I*\c%lfD|?^"*xC+7Qu@Ug4{Omxb'Zcrǐ\BMwtO5]>ˏ_kfP n%0~^[8<Omq5mz3m  ~,_Ϲ7AT9Ǧ kJ hpEݐmۦ 3ߗDX\",RűB;]~יhuB;LViĸ>tD}SܑCTɑasehޔ_e5\ОUr7KUO Txmw@, t^hpA._C(uNv*؎C 1A8y?q'NՌN+l (֥r 5s>7KnMxP|B;+cdCc)Ljm?d-<D;D},09FZ/G=&?(t (=zdeuL ZJP}$s2î)4̷cMC^3 ,S`1UCmSzE ݁שj-qH!zLΦjw>*GCB%8ؽ)91a6#=yAzo1Y,^Yb9nKPTL(+6m͝"L8KQ)nfG#9=U*6B֟I?9x"_k4"B]g7#؛CU T@f4yۊ[f%!ňeФmP`ntM7TBC'˼GiH~`eR 㳞܉n ;N6, aZv@"Dr3VVGvY Or,sc3/wB!ƨ%}!Ukpr (s'(>vZAD>mОH] Ֆ :-LnP1RbIpx Vi;BhM=N%j;Q .H‘OM0]:ifM X:?^!^L9!r/ݬ.t@s[0C8UaL+IDU=+"ҼTL weΔ[1AphaoVX@DRʖc j=bCD  % ZɄMz-ycrn%vj.uz}y:is 5U-r[YdcW>f54⎹Pqij_U?IbWkOIub?3ŹԦ,1R1MZ^ %f1^--µP0qP"JnBv; u:2өazqy%#*3t'T KDش D0.E9%µ^3܄B{39E+=5.| Ul&M>]dPn Jn?1~;qHċM& =H8КS<3wߍͼ/uY3G"J/T} 3"5T(oWq;. b"^ m#c?vUI zFJl{(&.T &Mykx`-q6IMa b_k2kA=Ve+/G)WAC~ɰ|]0DW̚YI( ;z8߮EL;dn:MXїy$BPЂ*̧yp t't CHN8Q^ePJºcbIt>(s^C$(Ʀ޹2e)dY]wWr.Ĺ]X9Km{xHG ή3*pu52О#uW3RG)zk 1u(ڒ6ҩ@xqI-a sڔ2BQ <^~ )~oَs٠A_~Z$' F1V6]>R2H#~Q%xT4]JKJ >E )@Gzʠ[ lk/ҥ-xyU%Z̅X$qؼtOc%T$TSp! FoxW_nask"DЅ~`(`lmjlgch# endstream endobj 45 0 obj [413 413 0 0 295 354 295 0 531 531 531 531 531 531 531 531 531 531 295 0 0 0 0 0 0 796 752 767 811 723 693 834 796 383 546 825 664 973 796 826 723 826 782 590 767 796 796 1091 796 796 649 0 0 0 0 0 0 531 590 472 590 472 325 531 590 295 325 561 295 885 590 531 590 0 414 419 413 590 561 767 0 561 472 531] endobj 47 0 obj << /Type /Encoding /Differences [0 /.notdef 40 /parenleft /parenright 42 /.notdef 44 /comma /hyphen /period 47 /.notdef 48 /zero /one /two /three /four /five /six /seven /eight /nine /colon 59 /.notdef 65 /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z 91 /.notdef 97 /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p 113 /.notdef 114 /r /s /t /u /v /w 120 /.notdef 121 /y /z /endash 124 /.notdef] >> endobj 40 0 obj << /FontName /ZDGBOE+CMR6 /StemV 83 /CharSet (/one/two/three/four/five/six/seven/eight/nine) /FontFile 70 0 R /Ascent 694 /Flags 4 /XHeight 431 /Descent -194 /ItalicAngle 0 /FontBBox [-20 -250 1193 750] /CapHeight 683 >> endobj 70 0 obj << /Filter /FlateDecode /Length 3089 /Length3 532 /Length2 2470 /Length1 872 >> stream xRy_z5/dINо(I-D{^JQNbrm\ xUVahJ25@;mҮYBbM(!d:yպBXM‘Ӆw2NjۣJ wh޹W8#77l"||sUW)Grᘍl|v5>_Q:D!OBƬ)Ak"Z}]DwIDŽdN$ +d@_UwcjfHcz)w^lv-(MnJF1>Jl`ί(8Oeij),DpK9E"`5U B.4=hqP9^ܭvaw5|n!jehcm"n~-Qyأ\1N1SL*Hu#`Mqd+cC쮜*s?8B<&'B>ufS@Jd a՚R[+`ǏFX YӖbǤ̖+ #Uߒ1lv= E8mgXY!]uYjU3R^$vlM2mQ7POlՕr|M*q3c[^vj{ńa:ҳ@J!XX/mkX^:1}q8avM:2vFIb ŇYiF V|xgEbB>ESb'v4xr%:git(ΎY ƞ{AXA>*vG8AbSeWh3$^g+ˈ],%M:{jG3 n#o>E}.cFPP/|O,afıJPJ\>{]vfҺDߢ۵~"RBJxD=Z|M).qi ޙ3N7Rr𭚖ԿI d\4jzZ^Mڿ Oк19^zWGDtV nl*y.:47`iC+C){"VDy"fS1Qc|؃vCɦFC|a TجwZmw^oX>_\$k8޴%~] ܭ-M 4DD<3j endstream endobj 39 0 obj [611 611 611 611 611 611 611 611 611] endobj 41 0 obj << /Type /Encoding /Differences [0 /.notdef 49 /one /two /three /four /five /six /seven /eight /nine 58 /.notdef] >> endobj 31 0 obj << /FontName /ZDOTJN+CMSS8 /StemV 87 /CharSet (/ffi/comma/hyphen/period/zero/one/two/three/four/five/seven/colon/semicolon/at/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/R/S/T/U/W/Y/Z/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/r/s/t/u/v/w/y) /FontFile 71 0 R /Ascent 694 /Flags 4 /XHeight 444 /Descent -194 /ItalicAngle 0 /FontBBox [-65 -250 1062 761] /CapHeight 694 >> endobj 71 0 obj << /Filter /FlateDecode /Length 7937 /Length3 532 /Length2 7030 /Length1 1603 >> stream xe\\ ika)iDP:[$$URAD@!AH\JXD $DPB{œ]\J ' Ft.P  0@0zA=} 8@aHBCH'@_aGZzzM&h($u"ZP F)2 A9B=j7#`8 tC Ta~PG}7{ACi}nXh>YÐ'2t8͍ K-5&_}eɾ1x=$- z_ZGHVzzDX74 4S! a@7y P# _kGw DmRX|g3eg~2K5ÖE6! p>Ooh$v>|9 ism/03q/:D//@PؿzΰaRh66#9A"iAo`#,5d ys[ύ#'ȯx*aE"#||hų޵zᥐ0}^I a(`S]=2\cڢ>; k_3L:_!EgBlL p CC4?a_T!zsIF\]*bGt Px/$v}1p}E*mnrb{/ǥ-8 s9;dI$yo^B3X\d(ho+cd4tWv5 ,XS;E.h[@FF=ʯ.MeO[ثJJlB1%F&8eA+Չa[x Af<&qX8Pg2ܦqf$_MʪxT|êN IA1=[ۡEVYm<3bc,1PJ"v,gwà}__:n+5-ۗ fF7&(#'KDYTrfo**Rtivf9=x7xpN0kO,%sDzuW3tM=+o2Sjh{r!;xTgOvJ}YR*qŒ _}t\Hbן%]*hݘHm{MzoPNbk;Zbձ'*]o{3:'2[5[&`Vl%s% K#BC:Dq?;7i"-~zK.N_s\h%=daLCsxp`w8cH|ij<:*=acRkz]_TR95 D=51 $oM`oy5 WҢ&PtWDdE2ghfsЁtiT9?ܘikcs}R,e=㉍v?:X$u~XL[rӆm5-6srhB&MZChyW;fL%ee 24 SxdA5.NR1*m/}ndJjUOa?>#[E\7:|?[32Tϣ`T`b`fĨy;&&|%IqzHa(R[G,v.᳅g{OL]'cTjmTQ.^Ȕ㚊 gm*~Ɨ yT|4E,smHN\ QaRmhYcJlߋ9@A~+: ^ƭ9hi_Jy,?8mts+>BPt08˙Xt &W\ \,_ܻc;lqV)SttR2Z \SxStfAFo'}vS)DCiZest/Mo=~SgXfލ#y۔|8 ]ОQ(@ĪIHpZ ,[cX`XEizb8XD {ʼnk}Ps5ew>r$-e0=3jUW X6U;zP=3)tYi ȯI}E7LVD,^Huޑ/Q<8NZuW|IqʈKCK<&AB:$8EY_3ί*xcP2M<3wNLRb! -IPP.L$^ m Uo2|a( f wMSx/U_d?^/1$%) ݺ'B _7X7孌0B{p 9e9uRLavDTyޞPi^Li]dF;UpDnK:O_(1yx,kQ𳗴q6;OuټoLH)c~lҋK w*$0TF>1ef#_7f,)Qk4VnI9ar\PL9nk~|JF 0 JYY 8^H>u5I5oҋTb l9.QsMg+UI7~bodb'j_9_g7 ;4M.Z [T8_oPl}kRf0UW\coQ0<&VLzN5@ߏM7[Wxϱ:egog$9Ry„e(&:?hIƩu8ړZ=rt`4i^ Q0J25?n\dyS},j[\g[|Iȕ~qSGWNQ7viǗ[gl*_;Vt# Ѯ׌3*:Ta–k"С$,5ŦrXۮon5LIl Y R[Xf*ՆY[tS=}װ>8olٯՠGLrJ_Tki̟zaڦ8DcHR,8a"kaTאV 55šY Y* }qUYIm-SlnAhF"ɾi4&HߞM]6ɍd=^u&?0Oc[F]<#ИϘWn$.7Iy7z,7J9i8kOeGC~lPTG7.yN.1[-]_!5̻Os_A?9 %WVR{oC ?~E{$9He}АRڔ_MɂA]0*mkՕs*-Ϙm={ {fC'#Kwxi ÂA6Czމ* 벢=_Mň6r-Xܙ)<|A/2 H!<[җ]X)dzsUTY38ݎ%ƒ7=2넏dO ?48Xv3E> zJ_ B3&PFx `up_꫙$kKl0Q6;C coK]TC~NTdp_ГUԶwbX?;lVSҳ́@x$0aZ-o^ Yɍm3H[p_Ebn9oz]Y7X}5DSo SwLN~{ ?OO.'VjG1{) S`ϟ^a5NhuܽrxR/xo^׃ߞƾ'}NZ1 MU;xIͬԵ"Qa5s'it"(mޢ8O/W]~cư@Tj>FR.[X-p^Sc͘$L4}JT$gɤ 2I8\+ >;+~6 \'` "~L[+CR$pUiFaܜMq}k8Yֹhw޴0:5{>@I]r2–G6ŹѼP]s=5$2'*1M Ӫ!.a9i~TD厘Pei@UUK"d̒ڱ8[׾@!*>l*ɨig0LmW8iVKY TIR݂A$x~sBc_ ")@I璆P$0۲i~ּe8_n%.o zTL3g;wF7w<=-`O8pZP2~q"WS *Dgۖ2QP±*Lz\Ҭyi^nl7Ϧ:i z^t ̔%3_8m{<;@|#j3oZk ̐I8[[>gq[u?$Jx> endobj 34 0 obj << /FontName /ZMQLXU+CMSY6 /StemV 93 /CharSet (/asteriskmath) /FontFile 72 0 R /Ascent 750 /Flags 4 /XHeight 431 /Descent -194 /ItalicAngle -14.035 /FontBBox [-4 -948 1329 786] /CapHeight 683 >> endobj 72 0 obj << /Filter /FlateDecode /Length 1278 /Length3 532 /Length2 733 /Length1 751 >> stream xSU uLOJu+53Rp 4S03RUu.JM,sI,IR04Tp,MW04U002226RUp/,L(Qp)2WpM-LNSM,HZRQZZTeh\ǥrg^Z9D8&UZT tБ @'T*qJB7ܭ4'/1d<(0s3s* s JKR|SRЕB曚Y.Y옗khg`l ,vˬHM ,IPHK)N楠;z`iCb,WRY`P "0*ʬP6300*B+.׼̼t#S3ĢJ.QF Ն y) @(CV!-  ,IH 3NNպ& & F f(KRJ"0~Z&0SS+Rn^Onɚme X9X&u3SjM*,y־% mHx֮"&4׻,^5+Åa3>_xV/'x楼pZkBZAo`(&^y?ҊoO^~ש&x,o:e} ;yVђ T~x̝4lWg%?.qp>$oW>hJ;Ǻ' DG2O^k$[Ĭe C6WP,~ٸ~ゟ;ͳgdxMPđ:o)]؊^Ujn:u{2wGٹޡiNʓn艜Z\=kGNs| d |ິ _l{ݷ^xBYZ잋gqxTD5o\k;YCs(TTyN AU+Ke ڵ=\q_Pܕz2Z[N58?Hy.;֬7sU/.̙{'l>W`OO<3 ʥwlKUQ_Y~X*A@NL-Rw\>e%=;l5=_ҰiNK,LnG r^P'iXh--XͲ +z (\ sRJs'쿮 endstream endobj 33 0 obj [639] endobj 35 0 obj << /Type /Encoding /Differences [0 /.notdef 3 /asteriskmath 4 /.notdef] >> endobj 43 0 obj << /FontName /ZTDPTD+CMR10 /StemV 69 /CharSet (/ff/fi/fl/ffi/quotedblright/quoteright/parenleft/parenright/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/colon/semicolon/question/A/B/C/D/E/F/G/H/I/L/M/N/O/P/R/S/T/U/V/W/Y/bracketleft/quotedblleft/bracketright/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y) /FontFile 73 0 R /Ascent 694 /Flags 4 /XHeight 431 /Descent -194 /ItalicAngle 0 /FontBBox [-251 -250 1009 969] /CapHeight 683 >> endobj 73 0 obj << /Filter /FlateDecode /Length 14962 /Length3 532 /Length2 13901 /Length1 1932 >> stream xeT\ݲki]-KCp sNy?ݣU՜sMNJ/l`pwgf`ʫ03DEƮVbƮ@377 @hqagag#:8z9[YXD LƮ@9LmV@W/-@. h 02u-$mo/܁.TI i`o01*8|d~hC\Vi6;G7W3@ lC5MhffҮƶV@\$?O}S7q}SCTG?P?QȮ>k|&LMm>t{GnPMЇ?wGf2_ ?dXͰ ?m!/d~&fPe?&FC_/g#_/P~r ?Tyu} ?Ty VDӇbkndzM~,9XU|/hMPh^I-ulzBG:< xsU tJX|;p7:n%H|ٲp{89Y]<{5rZD%vN үԟ%e@JTၒ=u8LڵCSL~fEj/Yffع]m?Q,6I8EU!GZ0l^ŶPfN1d]TLNޘʈP,*aO 4lvd eVLgIT18H]њETr9ggf{zUYuؚD7<]0.5 T=6]d')GB g"T$TĤjZi~!U܁& `葬Ӹ8*W%#)XKYҧq˷a4$ĐnjZPaڃHʌR~Nݏ55r ܟ] ^5#+6X /jO^8hd{ xm!m/ŠJ%C8Rʈ xJբn}l5|XFwpFiJJ`kdGPC8gaHF™>*½({_NTx8w77vT|[aіD JLYB(6tkLq0 c̪8 I0TWEJ7_MXC\4lOKI:Xlqb%(0B8Y,iDzꏋǎ`u {Xm+`X c$8ȗ9T[CIv"$`Қ3XK(jT2"`Oo7AcWwkQқPF&!BwD-ɾ^t%:Dkvm_L+f0d"ͫ9@at6ۀ! F"ͣj.Vs5r2aNy-<51#eIF.e;5X O4Ag[FxfOf罴YT|) n34{1ѻ~7Uxk_jN &ZU<}ߔAȢo1p}"Ɉ}^kpL}"duJgozTКfJReaْ7; )^H\mN%m0Cnzg°rižoXBߖ/s0፞9<]>7<ufI[TW;^?jK`aK2߈@k%2(( k o)2Ȃ2CoT BqOAʠU8__ 㬂e*n4p.S4+wf̄hU+㰂gv`A M&fx?AAiy}T$yMejb_Ac^ی>bt1ND@c;15V3@S==76Hoh2iJx9x<E*L8b3%?Brth2GG/9HTV!H+^ȡR<LJFmvpxG ^f8׹ BBAѱ5_p  T3v)uD67M;Sע\L_KԾoC[S[T7~I#e[ d;Q* F_ABk T:;aT@X<(<LC> 'Hqqio? 92K{R?@=쁒42ͶjCҡK.ORŵ !1fK$0$qrbK{Bu+V|_b" 3v"-X(lG)Cw4d)^cf]N=umZ*^-b"n9ȭ, eMf\s؄:PCuDyΗW2t@[ ޸k`RDȔ`Ʈhywlΐtss= ' sA ٴ5@hu5+)# CG:t1-pN ,!}oC;Z7뢬y'6$'>6e$Gv=14^ZG 3ȸӯ`+JVm$0U5fD^Y\åՉ1 @a .\}ϰrI89vk}ħ`(Irlt pC b!OWH0WaiFȎJ)ey{7)pfg| *L!or1xmJCtsXr\4a8tIe&tEo}<˴m|j:9pInԇb(M\#wx(CV!C~5*!J0AmFV=c,$ϣu xJUY^NŬjFW [" +IXtKqċ3@ݖ懲䨟0 ;dHh8< /;v =QvMH]JTś&_N_r`$/7jbe= &?h$:~cOζahfntN-T18D< R6Q&o|s4RYįe̬2Ou"X-\79l[)= 4[CIS ϴ|gCJ<ץ /6EEᗮAK?h{D2ݞ ݛ 3DѦl1=kuh^^I)GAbM#;5vUzyHL OjZ3˼v0|&bqt %.@ dD1JƠufJ3c54`.{@U$&߶p~Nq[&i"ۚhKDK59'5rBn+UrⒻJƲyj&Lc}w7tPVJz5sM&c4=QBcԾ,/k3̙,3 ] fi<@r $h:k"'Zkd x慠ARuOxeca3\mO|q1wLEٖɡPLwD|Q) ĚCrݴWQ$-kFVtkR{uo&mHuꐏ!4 8:u]4M`r o{ B^SB=fʊ!5_b-!-OScaCdۣ%k5'b*&Ķ߇SG$(L?f c~r&!%U- ҒM&CwD"k-󔛦'3\% D|.=.djXUxijﲠIKsKt.pm^E\+,ڗ=VY]7Fr|QI$Ǵ4j`!xm$nڶ}5m`RhI CϮ%sOSKeB͝9's?d`͓̃ v~7x& ZeBbfwڧKC9TXu@ze QTU!/nҗ%؟I_^6Nh*IQj 7^RC{#+6>c|КE-ô>ìMI,Q #rKw\F|cJZ{9Ĕh5>Uie i=jO[}xe+\?[baot]}rٟ`7\U{MLiA7_A MB6'uP~KL-R# ݆书{./>f_k²kR|@%rE?3a&2_aK hmiZlf`bn+ߡhi@suOJ7g.`m 7`M;:zizj37ŋoQMў$Y'p17PJ}@L2~{eLkvd*YՏIQ{ d ?n}ҖV.Ef@J5^u_#mW >!h25wA\d69946QKK]i4'a)uSדN3[ L8oD L历(u2Am$lxzҜ,Tr"v–:[xq{|No+ճy &ErEk2|PU4u(C2)yUz$rl TxG\ P.FGS۟K-s^atE`AC3;AT5qmeX33}1 Uն?AuwWp\5-j={/] B@ Z[:Vȳn}UX=K-4M/AS ^ov㱨*_{.%U]#}R vSU: R`v!3iv8x #9OQz4:Z\al&.Ƀŏ#t{CTCDBsp]=,t~&zNG.6pj8c}h}EJ-yRoGI4ԸEZ)E+8,vøiu- UVm픱JW}֬co*oYuE}KR4?u#EM> OFbѾ9g`cɠr|?:!XDk6L 1cġ\I{hQ|O S`.i{ 5RSfma$xwiHU_4;t*$TZpK[Aݹ,Ĩ"M};J:`Uxn:o`wwA8Ǧ~UеFKFC%aa*Zœ%8/U#&+'HZh wwc/^r;X,=(v~G}8e;M(M !ySQΠ;w _koWh;uoS/]>*LSpز2oorx0,y${aMU9gxqԴ[;\3ZA֟==72܇>W-:w-+ʋ&Se<颞CyZI9S OGyy@djbc$\#6ϪeJ[w ߆rYH2DqD[ uAtLFgj@Πk+ I&\Q;3*$05No)4piĸM wN>Z)ŋ<0# ݏo$P~0FxE]fX4ag.dYR]rcV=//7?E925Ϲ1%bl*'?Di3Ium4ۥk"f`f2ض =Ӻ@Z (ؤZYCKTYJSm(`|f`J.DT5$-0"DQAZhb-ZS>V(+mC8Rp]`;0tCsۖ!-1q`6/e5l[ֈg#[@!AkVPPѫȻ#~y0-ͽr%t HOh<Η[؂^8v!׷X #C^t\5.swߗp>!O~Q;P8xl1́=˸ΆuhH}\2$$}m6kkAXF΁baO1 P欥I,"i-}I*.j%VO>c\r I fB*=XΖ|K?|XsWlxzhmTdy=qm9*&9F*ʼnP]ט^[zVMn6|XjB7Ԩ{s!ʀ LXjj&ɍg^+x| )ǩZ ֯m6.cDd;'}e]|ʐ h[T| c8splfy8=?XDNN|ټ~/3}YЍA/:X .ԉ6]f.T#=^ɇBP(nm)6GH9Wn6wdµ-mbk2a[Zт|0X kj@E ·r2$]6iF>þx^Y1xdut-*"1۽5&%!B#Q$뵣1ouE}!3𖹒3BzB۫ W XGnTrL(SnmiJ.@Žߜ_"U[_lCw~q΍C)q$f b~1l`Ahz@?~}֝o,ؽ;ed'QJ %8u _P8 24|]M1qg5=?Uܛ<z[ Phh"g~l hc ;,Ҙ2:S=|6\ň w"`@&(ZtD]DԮp` St%D=O Dr5z 9ZYgmfRH|ٓ F <՛:A"p_]l1I]Hy1)>" 3&§˝.v…uFB] !gqѶh\_d0-,Z]HwkW#O)Mo""mRɑ:upǦ![g8+Dmkv;\(&x)"lCd#Ó'b?]\+ΌIb 1򨷬 >?nڪ͜-PȰSp)#HDaM6@ tyZMɵ74xS~,9BKX[ Jps f;E~T$<#\v [n`ڌrө{OjEБBnTKECF"]ر}O'7eJێf0w+0LW7Cc} \/`Xwآyc~%f$iњA79 ѷrs ΰQp1wV/v%l2۷r*i>'*rTRҋ·\X h/Yb(U=%*曳nWd%T8J*u&EUz]15<|c)$!閌 bM3kx61w!t-rkǓkS㚨 #N¬)/Łwاh}nR)6lC^07֋lr5CX 7WTES}cc0>jTAyJb;t$Z6c0dU,I&Hib&y ڴ%il-eA'd%oki_Ԭwg IuS_ӎ>de$.ځgf-Qz4dM981*5ik3c3yHU&L[̵h6Ci -e8DEa=&=D-`M,*16os6v|TX.h{ZX*oQTIυ$zk:jmbp9Wy>)B*mRe?ƱHxfֈg/GU]{7'l "Zbh$6];Nmzȱrk[`!0wz)JɁ~M?D'.yv V]:LMҨu4f`]bZa;QɇO"܇=Y-{r--<p`l̖ђ>mlqIU$7Ӡ.ClNt:]XZԋe(Z?hZ]VyMV;1nYKHWЉeڪ@2ŠGMU-YB~\Xݗ'qU XX!}B#*ɔŝ ! 9vA88I;c29Xb" aKɜݠà:KȧdLa ND'Rko.w}[ >W"`t+C(7 3Lw2^.$ٹ̭\xK$f2|nUՓKd|jAl[|9FHo 1okS~pu'8Ԝ@$K"UB?N&(|.K6e3=Cb ECh)3`9&P$) ;  +dтzyڰ`d2HvO0,9\+S0f'i[81-7PGN8F5=Y!;_3 ļ(Mu.ro4Pecq m|ٹ>u$NΘ]wMgPYpZur!^XK3ܘ65p6k\F/56T5厱r53ܿO22eu| @[> ih.*Z.VxztO9RѡkFt"gsDCF*"5:} ~OP6IBKgoX("utSW]y2`dPH688wȮjF򊘈35mvW倗oMy2G({7cJVS$w8+nJK0a %,džDl8u`cB4Ǣ~( w,-Jձ'5TᴲxP3Mm͊:]lbV'wm'zy$j*+3n-VyIЍ\g&"kt1 "}kZJÍ'l=bXdzj]t(?s^OV>񭋜/g[jߍB' 34Y؝J Ҩ@^d ż7ɩkmYp%j j2(4Ϗj,ƺuYq ΀6-[H\\ 4t/ׇ@Gzyz..>y7 h1eȖ8<%TB-g֠G^E5WFP/OL`j 4vvu3v?s endstream endobj 42 0 obj [583 556 556 833 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 0 0 0 0 278 389 389 0 0 278 333 278 500 500 500 500 500 500 500 500 500 500 0 278 278 0 0 0 472 0 750 708 722 764 681 653 785 750 361 0 0 625 917 750 778 681 0 736 556 722 750 750 1028 0 750 0 278 500 278 0 0 278 500 556 444 556 444 306 500 556 278 306 528 278 833 556 500 556 528 392 394 389 556 528 722 528 528] endobj 44 0 obj << /Type /Encoding /Differences [0 /.notdef 11 /ff /fi /fl /ffi 15 /.notdef 34 /quotedblright 35 /.notdef 39 /quoteright /parenleft /parenright 42 /.notdef 44 /comma /hyphen /period /slash /zero /one /two /three /four /five /six /seven /eight 57 /.notdef 58 /colon /semicolon 60 /.notdef 63 /question 64 /.notdef 65 /A /B /C /D /E /F /G /H /I 74 /.notdef 76 /L /M /N /O /P 81 /.notdef 82 /R /S /T /U /V /W 88 /.notdef 89 /Y 90 /.notdef 91 /bracketleft /quotedblleft /bracketright 94 /.notdef 96 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y 122 /.notdef] >> endobj 55 0 obj << /FontName /ZDKWNS+CMSS10 /StemV 78 /CharSet (/fi/parenleft/parenright/comma/period/A/C/E/M/N/R/T/a/b/c/d/e/f/g/h/i/l/m/n/o/p/q/r/s/t/u/w/y) /FontFile 74 0 R /Ascent 694 /Flags 4 /XHeight 444 /Descent -194 /ItalicAngle 0 /FontBBox [-61 -250 999 759] /CapHeight 694 >> endobj 74 0 obj << /Filter /FlateDecode /Length 5230 /Length3 532 /Length2 4468 /Length1 1231 >> stream xW\AEHj5TT*$@4B"HUJU:tAH&Ew8ѵr־g  ~ BŸ8R)$:B⹐(:D]$^>s SHu>D]SHŝB)$N p;DP saձ>b`qn9yVswπf$A <0A,L1nZYyd¤1eo. =!Es/Oa#8p ѭx\wz׬3Nm͛eR]-~.e5ɿ4Z7Yhn H%JyǞpnE֍a?"=f9V׳\~t`/-zn`3iC&rk-j- S;6Xv鱬$Yd䓛+0h3+T^!B$M섢6֧]{CzOCc!vW,z̑BTܪfArf̬oKJPgJ~r5ڌ/Dwlل:ޣ)/ZR hwN s2+|Lu[L ;щK +Vڋ%#u.e,ƴ𮃙~Jt8aM.0"L-E}]ξۜuסE :OKsc .=d26iS#+gsWfDI}djvQ8I󗲋u0Io2uz;ڇP|s=PrBz=3^<r,LḁHLj=kzVj7zBXV3ԏn[U4Ki{\j w&Zr۱(vȫ_t[}r²1M~?Ǵ|cumː뀦5[l$٦_ S3KU %)Esw0jlVD`7d>ǚZzJ _Wu]rƣVk?, Mf4>Slgd[Dbi%J,2zJ7ݎu5意 Q/:*֍ 5V.76~h\,w\0#Cj7vK6FXqn!\D[8e:o>iR%5hJ$4RVapjԓm>"r.:3[q%.kꄾhXZ1a+&UMi =v)AQ:f5s=M@{JTf[6׬'FX=_gTS鿕teS hÛ{6WV矯~'[7455!$2\aR3M1hI9Nj+ gR25רk&4YfC5𨕆H4s .2+Bǘ1%鍥pKZ\ܢYzuX!u[mnFDweK8.v`T P uaml}W܈gu汥F|, ǚ ^IIX].) W⋜oV:q7YhnW _l4uꭿtn#^ Pұ`Ƚz984𜆢NYVLiLH2˘PipFaվY(?miM^$uRxbu&{&7LUU̗}D_R~Au-Mpmxzl֧ҬY# 1%;o_- + np)%6׵ ǻ.j{'0K7DW:C⍧Z[hWmwQÓeD=u:YxqK72`WgΎefwˡfx.;j,dR}y՚0'kvEY$2AD5;W_]wO^MJ\2a{ρ:N:R0ѨQz}6ͪ()O2Sª=GRo.U8)pd^yWƽ)`h]*d/]42R}IV&w|geUCB[dbbg[°XAxznFavTHNrw)f{V/ z3?D! m{JvdPCW"afv<.d(nK\M#/PzV=~)5I%u7O9416)rdY}^|F9;F#6eu%F o^m}Mzk$׮R9\QғVӓtLscV!SFިEu5ndV Ug.(W S _-Y5@]A?$o X4w&u endstream endobj 54 0 obj [536 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 389 389 0 0 278 0 278 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 667 0 639 0 597 0 0 0 0 0 0 0 875 708 0 0 0 646 0 681 0 0 0 0 0 0 0 0 0 0 0 0 481 517 444 517 444 306 500 517 239 0 0 239 794 517 500 517 517 342 383 361 517 0 683 0 461] endobj 56 0 obj << /Type /Encoding /Differences [0 /.notdef 12 /fi 13 /.notdef 40 /parenleft /parenright 42 /.notdef 44 /comma 45 /.notdef 46 /period 47 /.notdef 65 /A 66 /.notdef 67 /C 68 /.notdef 69 /E 70 /.notdef 77 /M /N 79 /.notdef 82 /R 83 /.notdef 84 /T 85 /.notdef 97 /a /b /c /d /e /f /g /h /i 106 /.notdef 108 /l /m /n /o /p /q /r /s /t /u 118 /.notdef 119 /w 120 /.notdef 121 /y 122 /.notdef] >> endobj 60 0 obj << /Kids [58 0 R 75 0 R] /Type /Pages /Count 8 >> endobj 61 0 obj << /Parent 58 0 R /Resources << /XObject << /Xi1 1 0 R >> /Font << /F36 76 0 R /F35 77 0 R /F8 25 0 R /F17 28 0 R >> /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] >> /MediaBox [0 0 595.276 841.89] /Type /Page /Contents [18 0 R 78 0 R 19 0 R] >> endobj 62 0 obj << /Parent 58 0 R /Resources << /XObject << /Xi2 1 0 R >> /Font << /F36 76 0 R /F35 77 0 R /F8 25 0 R /F17 28 0 R /F29 79 0 R >> /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] >> /MediaBox [0 0 595.276 841.89] /Type /Page /Contents [16 0 R 80 0 R 17 0 R] >> endobj 63 0 obj << /Parent 58 0 R /Resources << /XObject << /Xi3 1 0 R >> /Font << /F20 26 0 R /F8 25 0 R /F17 28 0 R /F39 81 0 R /F40 82 0 R >> /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] >> /MediaBox [0 0 595.276 841.89] /Type /Page /Contents [14 0 R 83 0 R 15 0 R] >> endobj 64 0 obj << /Parent 58 0 R /Resources << /XObject << /Xi4 1 0 R >> /Font << /F36 76 0 R /F8 25 0 R /F17 28 0 R >> /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] >> /MediaBox [0 0 595.276 841.89] /Type /Page /Contents [12 0 R 84 0 R 13 0 R] >> endobj 65 0 obj << /Parent 58 0 R /Resources << /XObject << /Xi5 1 0 R >> /Font << /F36 76 0 R /F35 77 0 R /F8 25 0 R >> /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] >> /MediaBox [0 0 595.276 841.89] /Type /Page /Contents [6 0 R 85 0 R 7 0 R] >> endobj 86 0 obj << /Font << /F36 76 0 R /F35 77 0 R /F8 25 0 R /F17 28 0 R >> /ProcSet [/PDF /Text] >> endobj 76 0 obj << /LastChar 121 /BaseFont /FNUCFY+CMBX10 /Subtype /Type1 /Widths 87 0 R /FontDescriptor 88 0 R /Type /Font /Encoding 89 0 R /FirstChar 12 >> endobj 77 0 obj << /LastChar 118 /BaseFont /NUBCWK+CMTI10 /Subtype /Type1 /Widths 90 0 R /FontDescriptor 91 0 R /Type /Font /Encoding 92 0 R /FirstChar 40 >> endobj 78 0 obj << /Filter /FlateDecode /Length 3441 >> stream xڕn۸_GUIuM9@EnhKʒ$7HѶDù޼PܔAǛ)JΐF%I/X\C;e0"4iϑq!w$tZDf$1tMOB%[-3:R{3{9}9~:mD0ii8-uikcD([G7C}Sk‡ؒdrzJrA$5 Wi~<'k+t\AA@=&_?J`s[G*ik4"Ti|xHkjWذGR=ъ98g]ޤU 6:|ȖK4Vq~. Ѣ)6M| ;㑔[x%: FtkqF}I,8EįT)eU ΢\dɢ8k,@z+CRB CڪG\yⱦ؎󔱌f/vJg N\a?wƸX&n|Lk;O0"ctZN)l 1ipcMCeH^eUW@KywlxcU÷3*d0kxr Xw%2Chű9=T# xt$T:$`{r 2x+Ü =FQqà 6Aٗ#X16N^.(HULQ,NL)9.Ĵ<-<} Y04C^IR-ey~.,ϮF(JӺQ,eNY=<,$& ){)׳b\iVR14Z3N2KN.;rQn鑋pqʽ\8UnD.קP3P]a,ɻ9= 5XD |†`=+x?o|*|GjNdrg$ˊ{ιX׭P0P{=GHYl bKZyII{PaK 2︦0?Y%OqdlOeHIB:K,kjS3ze@rvN|mwq,KMޛS Ŵ},*PS7{5+KNzDww{$T}OMqi:ky_< ;eIKʇhNBΦe]vvɪvnPmQ0 /Qج=e}d)%Nc=^d6Ua9X(ӤqD$@Je.o. CI1دf+te$TX@>=-9?qP͖>0MN@:Si=0F3(3pl6 ++p^ n;M8J+mWq!gd]['hrW*|*ɀDmHž ,9&us^@g([XFŮRi&G)ٞ-X.62F!U7P W+{qTBMVQhsT5s /,ι4NHR0oW]^#ߨ+{(6@FR &ny^Xi^GKviE$ʼX 'i,#*ZH $ZwaV(ݞa8HQVٶЌ9H5DOb?&NuzT^U(QvڷģKB.޹eD :21n|0)ԊMi'2>@V)f ny #VfUh{* #NI,I2tRUT^EmP {2 flK!q)Rwp붳mav p:L?V7,u[X1.𥟚Nfcj/ڌī{)p8% LE ϙ;$ɲhkn.i4;_^>'f%ēFs\tEB9-tMԾ34CkW L#ŕr/_L-& ǔ;!,+_"K o,8*$KlGOˢH< +sL,y{ U`L?{,?S3 fn,N.IJ}-tӱmݢ{?~_&(>dyй=k9y NF{t\ vwHz"G9f"]0\n{>g.Yn~4WMwp?nɰN}:VNgmorJvXsjk @(im>(S71#81'.E>X~0k[0㌻qM?A/=] eMbDtcFP.^B s3+yJB [nw…~5GC@Q/vܖa$hWk)S7v:*=!XSD30-X/e%㠈/r- *=Z7y< bjN.3-x?ֶ2Zulam5-5ux-F85F~`< AD1ܥtl-Q\4w8V'߉0 we{%76KfY?H!LO~ceQ K.(H"/'m#>9|\gNdD?lhWvCVRpUXVYX^Ƒ+/3ez&nk[Ly9WLfwL] _r1:I*ų%#γOx 0dR?!k+|(&VA"@ς8Ϳ@? endstream endobj 91 0 obj << /FontName /NUBCWK+CMTI10 /StemV 68 /CharSet (/parenleft/parenright/hyphen/period/one/four/A/E/I/M/bracketleft/bracketright/a/d/e/f/i/l/m/o/p/r/t/v) /FontFile 93 0 R /Ascent 694 /Flags 4 /XHeight 431 /Descent -194 /ItalicAngle -14.04 /FontBBox [-163 -250 1146 969] /CapHeight 683 >> endobj 93 0 obj << /Filter /FlateDecode /Length 6177 /Length3 532 /Length2 5431 /Length1 1135 >> stream xeXT .jfAZi$D@@@JCJBAd;x{{?^?kl}#!%@ i X $EDIxxTPp(P(@n I prFxU~%Jp@pwl 退%77;p/8$0`wBxaޞ=`Mn~ܑDX}?{BS-uG+鍆$ gOs8 ϨpPpr@@?u:GP7/:O'CXBYDE_#Ex<`ߌm vM}ey8 a'$BAHK% @}p_caL"5Wq'p;TAR_@$Ď [#=(@KĖQjX 7H upí_0/`+7ĖlX@7Ěv/07Ė ¨2o[ ID%D~UHIJG7 ;)*v͎p$A&눒j|^,EaC2y T1*QFS! sXdz`$>EKN˗aDie=+g4ƒv pv ^ɟ]1i0T뗭wSk [|$UU1%k,yTKOr"|K$l)ͫoSࢢ(Y]>Ӏ8$Uˌ}GJ;' "@?o^6&r{XgRlraD0u8EYŤ}IEtAJ4ʭ0`Ulւis{q\uK# I-=>ن>$>6< C."_96pdQOt8gW~ۉjIX#π+a)"y/oyѭ$#cVa]';)SR|X٭Ǜl`>U u+:q&GA?:-銥PpZHF|Sl@j3 nH %kPpD#$vFP٠uj@޳i҆EWH@lk:J/[b4o]_d{D+&ם޲kYKh!J.jcuQ{-հԶ 4bw%$Tf׫/V ã\53 1L }v9EpdiO۞ogJ .zóɶoA"IS}*>RoxE~"CP7M)~kMS*<Ec:wKEWCdyAT>3pGFǤϜ-u^*j L~ѥx?:]`R<ڨԾ 2dʾ7M$Hk;425 [bwXmDUU+he/<ݳbN\ 8#@ dc4'+^(qOCX*-nKZ5YPZ0XVq#-MȌIezĩ[jJM.0Z p6xqKvah.\Z#I0J{O`j&1J.QGᘢ*crVN;x↚!bY] G(w {8t\[=WރHa.W7aoSU,=c[kdzhn oQjBZk:SN,iOv]JTŚ= 0[K΀}E*́ív4bTH#A .jUF.?\:(_F B+U9rKhUf+xi`Z $9l=UT EV1w~S|م\hLF4)ٚ鎩UYEū-uO+E'ܠ_Fh۹'Gz-U n*YJwD06)"ޮ0XWMJhun?_35svE&ny}7B1]*Tkבyn9Mi#b9hTiC‚^:%COGN?»1}Ԍ_O]NfcaW|{ÖRb?x7[a.d wՈi>7Lh17N[`l kM?X0kgޣ;S'ߓLX,Qjן%w(ZX <c^dVx@XP๫ Uy8@,M хe/il.J; )4 dʣo<ϗIՐ:Hd{|#/ZP0-!yd+;/Nʛ*O̶B6kd=ܷ5Wov0jOaˈMT~O4p# !k.NHZ<9@3.WkCWYΕvק]=s!5Eܩ[t|;Gs~(ݷAὃ˩)քv[[d'%U{.o2h 鍨wG<G(Fʼn0T,^8l4dq MԻȭ3:Q xMZJ1D%snQA5Iq>lT:IJ 'qľ Εa(B˴ ^+:NjDƪ*dLrtu:]i_&0/zafOy,*U)(G*]ܣ~wʞdd4,;&ĨYzH3=W!sm7c ~Ze5طU3deUfG0UR,s2 M;D ^"yӌspI϶? NܘR4u9uW&? RP'*z&G_dAI7nXx1q{1u/iAy=31k;שR|HOuZD׈F$af !*4 ` }wQ"] !Q3l܏7ұ.KC>_1QغS{$4kӠcO]jrs $b!'!{,,iףq9Vu;z٬qBo6IbIy"8lw)Bhߚ75JZ\˅eNbeW\,3h-ºÒ[zk݊,ϑGn%mx^Ƚ_c5ϓ4,xH4o3Mx%%Iܢ鴱NX ̫3xmu]|ݸN<\ ٜ>OW3u~NfmAJ d'lt_?({˰ͷI>'0?Ûe g l+BswGU))UF+}2"L0sfC \VqYޫ~Z-.dы<-|Tʹ>*ؾѾsmKyJSnCDsJ[SA{O )tRVzg+.?VVOՔ)Vo06l.ym1n Gߙ_oK]u<0kXUj::dŽcg)xiwW$kW9t{|ԛ1L{b>㘤u\Jk+1UY)J?dE7 K6eXzgC%yLNon \޺4 vuqi Fy}wMFt!@rzm xEx[sTү^2> endobj 88 0 obj << /FontName /FNUCFY+CMBX10 /StemV 114 /CharSet (/fi/ffi/period/one/two/three/four/five/six/seven/eight/B/C/D/G/L/P/R/S/T/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/r/s/t/u/v/y) /FontFile 94 0 R /Ascent 694 /Flags 4 /XHeight 444 /Descent -194 /ItalicAngle 0 /FontBBox [-301 -250 1164 946] /CapHeight 686 >> endobj 94 0 obj << /Filter /FlateDecode /Length 9479 /Length3 532 /Length2 8662 /Length1 1352 >> stream xeX[)Rkp)RJqIŵ8)P]Hn9t5x5Ɯyjr%U&QS1P 01ŴXl̬b(@#%$aR@cʍB ۹9X[@t%Dm&F h abdPX!nQ_+*@G3Д `ji-A(,y< :3j @MzԤ)d0(j@_7q @ 91@l,MDA6@BR@S%Kw2O mE]CJCTJF ?e~3;]Vh{٠CLd6عFFn(%.d t]YA`t /寁X, 9srX#X ? `3-dvrK #a.(nhD7X/E:Mur/Խo:UMP Qe3Mn)+T5jPQ?ڗ? }?l#t?@+uՅP]?١>%bb`W&hKءZe898Alf =@+eal"h\\-7V[׎VԀ8X!Y{Ҵ7d.D-ʣRg~)3v w.v(0맯`'WK>if}VPC\&uLђJQ WL/ Yq2mvu BD#amH߫q+x+k,l$ oT~=/puTVx{o!QW$o6GoEgl"}nis-c?xՙ+QThFNa5'E@3,(g*L3҂_y)nJI/~0c$G2 k{UyKtM aP1bBZkYu%"OK'ӹ;HA#D|y_l\nĜ;#RQG$X{LUhːdNDzP6W/Z1f5v TfJ3N~=oe[^kj d* GWR8ʥ? 1}a'On.hytfxH 8ZAYn8f!s =]7]_bT9]%f&i9J]#ٯTHI5w-۔汧b<7ajDaRZдQ2EtL,%W i.:ܯ|]YD.ջ,~y!=*22CT}zҼ3۴z`,]~/RD-_):s\r_DZ&'k_9Dbgfk|u ? fc嶴Zyhh8JE-ť;8w FHI|zcH sRCcG HYN)/M܇PDdnMP%05aiLՅf_WpiQ0HJ:AdAY{ v:c-@}$pd҆8#wv3 ۱<)"2/+<nNPc/! qG?X5kMT4_v >8s6j 6ytSi&+N 6oL|/8eVs;|VMdd=; Y۵Uq{+|ے) VX·fu7F$ M.' uQD{(z8kuhllfR˲kO7_qE>cއGOY0h5 hm(^ \l9x$f#4hg v>6EJ.Pb+<=9?<8E yfC߲x^%ڥOvʽVHCAbącBr_>XnǓK'm #oͭn0 ݭlW4uգx6Fo>oή8@o 0yB(s^%J )Ps711Y4Wq&;9؆Fa=j }d`(ovC4/cn9/$gyϙd/9ZG}"d jIwY2ÔS1mzq j$fl7JoXBo< 6iFOtG~a/H2,.Ec`yc|/SO[AK8@ $eGBZ(:ejW3㸀ǒ zQ+//AN0ԫnjN3HJԋB~WXwN(X'ÂOfN/ bխ~mGL9Jb;XיD]7_ΥMU⍃7Ri[W$N: ?쾜lYr HYB㚖cW 0zj\G|-ivvIla. }UJ37XTF V>` v8:|͏j_b7'iĸKמPqUKitՎa4yAQg{]H{n0\JKNCGs4Qg?ZCڵ6}[ N\gƊSmH(C8À|'-b9201ic]rGfF^L>jSY{m_* ;Qn+e6śP7 0fhG"(z,ܭJG~5L~/M$'SFA!$UtvUgwfѕQm;KS0)sqmsɗayA 2Hl92TIU1@~V=hﻘm,9 jSR+•0CJ'qo6?EMuk7U[OGG[7ϻZ3ZD.OŁT c=uDRX}dglQ7Y];ILXGT8 S߹kչ\'{Af4> 2|%0!h&fl)M8Dqcx+wY,vt0L9GfY ev,7Sk̞y̲#762zhE!yQ>|4f'K|EUɂZ}c4a-zF! ~L lʧ9WP',>$ĄUPy75`CO~Uj~մYr@)3fq !'scoJ86_SrxȊ3S:qfA Yt]rSIZ [UGuL̰Eweʈ^W_ wK{d,)@ oy*̧F?ls wӖ6tḽd8yf긕Tˮz(K-ǘO#r]?FG˰I8+4OԤԄLcƠL3iloLv\ʾ]]hY4{Į<M5`6Imt^X'Qwbj>2FtSrX*mJo {}y2LJYvYY>=V Ѽ.НJ/̲ 1Ӿ^uҖCNǯ8Z͌U L;LH=Epok.0 g,nơ,뱟_B^wQW!d! ]rJFg?fέ-nJ0ogZ 8Z4+xr8( a!3cؙp {k Hj/#G6Ki`0+Il5tZ*JN7 TFe5AL:YGt|dAk>*"ج 2uO(k"_6lRlo8#)X6xUzoenRc8wYȘw@it*9}&kGA cSÚ~9)Ibxu==Y; 8{:x/-d9u$o1ɤ8͟avزc &SP ef+rtnXty=e1\uU /o"]^;rd67x|aN'K[!Xo+}_˻A֏4 E_ uL\r",sJ^ϙF9ʾAjGV1;0*؇1GAew^jҀ7NEی][mދ#BFH:8= @<1Z۱%u:;RϡjPJ;J^^޴-R:qWLG`UW#! */H2ߕK%r0zOT|~\\{匤JLmDQjc6\6+sC=RΆT@0]0|)#=!g)gU MF2(lQQZ%yi:VՒvt̅mHG،9s2"&nPK/O{ lsN].OeX\ǒó pB/1!;B% ͺQ4[ |^r\wi  -c @uuq:i̡=vj:`\}U) w c>za*^&^ !xQi J>FVMCXִA_έ~̪zf&Ո+ {e3!v DqWdQp:Mu(OcNJVI/o_-4T;[|9Q TƴF4 3|_IRlț}usʟ"nhH:~g*v87a$Ҩ X)k]ML+1҇-Z|;$!ϋ%Y\*1UUv6MО`-*`Nes4A˧& t6v`>9O!|.łHuMhSO͗$ca/6o{Mab̥eK#mkLYgᖸ{NNaVM<ȤO)ݲ%xeࣇ}zD=%Y;âcTa?NfjQe0k*CЀZLq]\HnQ#4Q%kjJO>^ۚÄf+#ܓQ_A;!+|'a'59ʇOza=ZhoT|1m;[ jRX<fMGY0^T(޳=1$yF8~RdT9yS;oL2W 0,?qfV-1Q*o>4m%<3Yw7#$~Ѭ>vKAլR{^u %S1= SθjJIHLOL9|ub-1ɥa8aB c c+R!YJ]C)/ ,nl~@CF׀)h6Ra5K'ޡ!o淨蹍QG6$w1'-lT~{X|öHэ =bby*n^'xƩ#tO"<Ꭿ+pI Ѥ\j :lv؟=>xTH:8c3`3Z j c%ʤ SX`%JPʀf/1=1l麂^3qfb. ͐긍@|o+ƿ0}a}{ON3Zc %@oU, %X汿ٱF;u^UubȺyŚQGdQe",CKoCzkHX_\e29]=k{> %*}H+8P /8Ċ u 'TYLh!3Tn8a{⫂h ;㒾'/5OJ{.rWd5_BX##|Hb$^o~K[XtG. O*YTT0LCfh`\ƞSD"]6'>=%C%`=^'UK82R]aqب:Zs'ѫƢ 3Vqr=3eȭ$W>s ܵ?:6>4FGi~FŮ?_jf-gm0x(K6*v[݋j>>?I5^tyR%kq~C(leY Hu;˻x$')ȯm#b& 3\(w|I 񄟂z;R\|8lDb.$vwR)nS]C/Zw:ڹB}MZ%y['(6U\U_Z$ 4'6%E0Jio49^n~_JLQb RfX٦6XӬM#ZH)+UH@W7HgVߢ ʤIw< X*VǙC.c{qpFل0$ߗZCUgTw;fځ?;FͅQe_ՒR\lgadmEy>,uml&pU6lwp 2-S xE;7`7D]0<@ͬ&cܴU <'g…a6h?zvQgQ7+f5 jB1#~GB.{/S*u양϶' U\mV 3-bwTQ vq?$Ӷݦ>\OAXR&)W=xG'@^~=A~Qj6k/ҽvjlh#4aCs:nF:iFJaK/Bwi:4Q1}2/s";)QcQ[X͵*KBl?iԚ.X_ztJ ጣ)qTXf? Q[d{.5;iLD6DYsDZm<  5rF_m endstream endobj 87 0 obj [639 0 958 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 319 0 0 575 575 575 575 575 575 575 575 0 0 0 0 0 0 0 0 0 818 831 882 0 0 904 0 0 0 0 692 0 0 0 786 0 862 639 800 0 0 0 0 0 0 0 0 0 0 0 0 559 639 511 639 527 351 575 639 319 351 607 319 958 639 575 0 0 474 454 447 639 607 0 0 607] endobj 89 0 obj << /Type /Encoding /Differences [0 /.notdef 12 /fi 13 /.notdef 14 /ffi 15 /.notdef 46 /period 47 /.notdef 49 /one /two /three /four /five /six /seven /eight 57 /.notdef 66 /B /C /D 69 /.notdef 71 /G 72 /.notdef 76 /L 77 /.notdef 80 /P 81 /.notdef 82 /R /S /T 85 /.notdef 97 /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o 112 /.notdef 114 /r /s /t /u /v 119 /.notdef 121 /y 122 /.notdef] >> endobj 95 0 obj << /Font << /F36 76 0 R /F35 77 0 R /F8 25 0 R /F17 28 0 R /F29 79 0 R >> /ProcSet [/PDF /Text] >> endobj 79 0 obj << /LastChar 121 /BaseFont /NQPQCO+CMR9 /Subtype /Type1 /Widths 96 0 R /FontDescriptor 97 0 R /Type /Font /Encoding 98 0 R /FirstChar 40 >> endobj 80 0 obj << /Filter /FlateDecode /Length 2446 >> stream xYKsϯБ(sqʦf\* S9DٞX F0_7_"P,6 E &8qqku[hֿ+JJa;埛/V`r; ^a$1ZJqgF~p\_$Kl'bsm^l"gGa;>O~XX’EG[da{q 3oԫ`Js٪k'EC;:va[e *Yڱ:TҎj^(aYnh%v("&lZߋpX84p,/w 5o)4=+hBrFm 'rPL6ݱߴ ptjҶ#;gL_q1n&s-N$Ƶ]'RD/%@mH1"=|/jm摔AlS \(e3HR[BBD4^`{{%)³o:HX{w[hLЙX^ϕ$>O,В͋ GUMCx_xjR2E\z$goak;o=;XخawxSa X8]c7ܔUݚ;uwʠ =9V=Q:bw$̏{[i.(׌P?ӹƚ=]#NHpweN.wT$D#JdԉK'd j&M|qBK]o$earE(*gvy8B2/ENu~^pzq鹓Pp̆&egN~L69lb!S;=^XWm}nwDж9ǽ\@Wxw6*bϐBgBoҗB:j^Z제Vx"(*W 4J!q]8DebZ#L~G屔6xƁ%:Ѐ"f.+4jm.d.|+0BPcc|eFB"G#ۧ@ :q#md|(@?h<ejJ S+ 63> endobj 99 0 obj << /Filter /FlateDecode /Length 8277 /Length3 532 /Length2 7444 /Length1 1372 >> stream xe\mEfhDiNI 3|ڿ=e֬uͺ2ʃ;(jH|80uW! E%$$E$pXP#W@ sApG`s0xA`>0;'w|N@`^H)RTC]`=9 4!U]]u@nGeAnNyx!06 g)_jf W';ywW@_!'/'?X nzAC)\ *)=;㟦ߌ `!' D"?F)AN " ` @ prC?/?; =a =@0+W_QEuxE!Qd%D!1+wD HXiA·; T [A]'"eroBWĐZ Y}u!qo&!oC{MȞ b# B@H?9Dup. DjF RDj@@ s@z RDjH (7HA+$D.Db"AW7 yK7!@ v8sP;pOeϕ GBQphHҩh MFq-Z1UEJ{C9PD(3ݖVֳ&,mEw–Og"(CeiO {sP2\d|iSי.*fjQ&h@ʳ,Z8jɗ(-mi,sV# 7ɯ; Db B\d۲QD=UrC` }`P=,4*cQhm#fO7 5fS ̚o'tdM63V[,\Q nL ##4ShЪjdY'૥qGGVLG2Sޑ$4l>7ntR BOWlR"Şe`pgyS"N7!6b\dGq)3U<$G~QGL*S6p 9.?j{fQ0%S0xtK| yUKcc ЯTOY" P Om/.ψV~P:Qe0N }UGCRw {RBPq͕\Ox^1/\ 9Q)&JoZhQ֠Kl"Z1c)@1pM0evQ XfgJR KI<"PaLT+;!I9ľwa.uP2fD><[c.rI $6`ix IqG ٺ]/#ή'KBx\Na5g/woXDJ3@6bC؛uIcMOKIlYU!^]&6J]Ǯ +bΑFǶ|=ݵoU,Lɠ+>:St-3Nh*rnKe7}ɧ =2ݩZvTcVBήC* .>.ؖ掸I2iy\Tk2-NgU0ƓCzK4 QI؂*[4J7m  VFG%գ@̾w'&9ww2ʧ7o>|&PPr$HdH?}c]=G&c )#1MeZ6Ma﹁i.]ߍPq8Y{o=c.VW:4v]gXEeGg)_.?_ac,T|h%ozxu91<2i8u;xi)V–4x-̋v"}5hgcmDi{!QP-8 {C`g7|҉ڪr 'eZP%MoĞ}L " ,5р0F5P3 *ŗk#^r $ʟVp|OOۤ4HKLfʤ#z]+2PKq? H%;GP[f^a38 gmrqHM=SqF3rJ:>IOkej./ZbTOmd"qG]Me _F者ʿk44˾+*%L^I|ޥZ.`\ y F-BΡp$ ٬+4t膊{d8z&!^ogr% qf6-8r1h iёFt<li)|V?Tkl'f<"p }nUU/Ww~+Qsd2 >Kqgvրgz wpy0(yj*׽p-ybu n,k輰F͌BAdl܊NYu§_pV8c &0}e`&@6֕OL(1\i9ʜAj;j{Z"} ZNh͜rS`Tv2|6>b/>Ju­bȍ&3ƃ(x_Mb;oN?plb1 T[c[},B}J?[)V:0u:}y(6m_gI Mيoë?V&Uyå4KRQ .9<9=FǏquEիo'+wRs2,&O:)ɲBTF{S^k'vY#BJ\ -%_2|. *lDR?B6Ѥ4{2։15)̓xn4&$BQ/M6khN=Pm9FPh/e}j!}%mkckG2 r}Zʗ;󏣉?S/X6k?*Tq3Y͕ Պ{d~1Ԡ fS1*XE C%I@BglI_P;퀎DI8i)8iȽ|ZP X?)fEف|3$h>MCC<濕sv.^PlSIh$QǏz] tmDOU>NnOӎS9Pg ( N` LcYҘ,7;K9ᢁsO75NT8Wt.a/W#39yNUg"!d!=l΂."qyA?Ç82`fm1N3CEIÑ-CrT7k?qS5Mr=R #y4wUXr)MmJ{c6gU y("JXlO+vRMt=ƅv0uu;or\c\r"bO2lCL݇6c)a:{L+jz+ ;n29ɈwLy?eԕ_\rxً?6Npx2\e6]"Wwֈ&"'W @{Y'SR1o~-vA+(_aINp #, Xoz1<9r14<')i݊3/-_k(*U.&9_r%*FǎB$g//87 ' mSMVɓ?bx𸱮bey-*;|2w iKQW04۾|U v tw2: MWG;Ehnġ%?j4%@Mfv< 2Vdckaw'8BLr%޷xWNF,C$U{c?rpW51(^>N\ W" b| #1]4m fR\ w}^xhD>!J]xFE",&Ш$BCtZ2LE0 O!j%h͘3w3hkŸn *$fؐUoLdi&pMo5~nuf)oeɖ|Mm{xe\snE뵤Ūfb4]1S.e!ݼ&5IU1l$Xax9% 7"oUOD0SQ$B.%,7K`yO³hL͜luG{)GYQo#nMF*Y $ bwb4ûE/oi4%} {9;vuƻP;9a_UQ*o&u^[+w 1y|7>̯ xwϜďGN[%Uxhy`6eb gig\'p>a>zS_yc6F.Q,븰} ƔJzz˘LM5I3r*QqDom~3l X[pyqѻoIپ?A_$(}!P/>_{?`tRucc3$я$#6yd0W[1f]7uUYh2I'蕾gW\ a%//` jϴ&$FR#"¤-AaxoNj/}V+gShl7 :LѶQfmzmTPS;4Zu{Yɰ+\ 1#V_~F~8~vE{:>r(G)YWK:b%ZxEs[]V#ʜػ:X 3b{I, vaǓN\OI\H@}Ŀ7Z9]< %];=v _>.a@Y5WvB\c;We=rmZ4J*hQkqP5'-C(~GnѪ-Ol'co.h< *IW㕢2ɐj1q D!TW`wNU|^Y~5pF6=fY#ηo= QT^04} GP$o/X[| u#7(bUTDgqoZՀ^4yc'28؇'qq2<8ნ77tE"lݧ=^ k) 7Z͡t>h;ը{À8 iO?^s+o~h^O?\u[w+?'46BJ\hLX' smuS^~8%յ,ΗD ^BGta^X 2J}q#Zy;HYKf,D!VV6\"jTd T!Z|wFf#83aEz)4ʧU.҂E>W dwmfgçۼh"9Za#ɿv=ey|K p7Nj)=ILJFeV5h!BơU/KO4{p]r7>`U- ,/. JHEGACsm/]l T69N80~Wizg=w1@cz{x/"rTVlLLI@>0'9^As_W!zUaU\> endobj 100 0 obj << /Font << /F20 26 0 R /F8 25 0 R /F17 28 0 R /F39 81 0 R /F40 82 0 R >> /ProcSet [/PDF /Text] >> endobj 82 0 obj << /LastChar 121 /BaseFont /ASVLVC+CMTI8 /Subtype /Type1 /Widths 101 0 R /FontDescriptor 102 0 R /Type /Font /Encoding 103 0 R /FirstChar 66 >> endobj 81 0 obj << /LastChar 121 /BaseFont /RURQOT+CMBX8 /Subtype /Type1 /Widths 104 0 R /FontDescriptor 105 0 R /Type /Font /Encoding 106 0 R /FirstChar 40 >> endobj 83 0 obj << /Filter /FlateDecode /Length 1895 >> stream xX[WH~ϯuHj] 81a݇nl #ɓ[ r&p,uUunU5~yfGaIrtpE >$Tsy. 2P:8l{4JԭxQ&q7tLߠBG/Te>1$+yu兒mU߯Ez;^fGſWh@7H?lkm{Mv Yע-}{wsԱbcYՌ- ب:QDh;=?ڲA{V3#z!ɞ%Ҵmh{D_-'C8N_fbN KJ{6kcanNsF\"ض̼qf@yG>meQ@L}M\Q]5H,?\e;Ӏlru+bw+䔽HrBW#sE8'" /Tlb V"TXnoÐ~}V&$A+nW?C.Lⵧc]'>vT\I)%+l{!cőǞۺ͔ HRa[f %*$bT+d> {Ċ ?x <|!$jbj{IGi(Jx(0rb)ikR -w K.t15*]02sVV\~~&@3P0R͏5ϔK(0|˖4$T<7T)'^^{!Y]0ㆱiۮon=B]@r(̙0~, &aqX?$Is׏fv.r] O k;x#k^^F4X:D=7}@ b~v;=S.e30eG[ к@dFC%HٰU&;gӶ /N`XZi1,N2 xr92"9r_c]c GۺA!μcŰy1=Zmߟ~<#e [ő(ԉ!"ptm"P7v k&7(qp.:&a3" #J]We.[u.-Z VJFHQCl'y}r.-z:+x9+i;RK\8Gx+7Ǟ7: E5 q O0*` =OϣYpW^quٟdH3=YfV [A'M] kcij#è]eCEqGd.%h,UDC(TB5؇HZKRe)/R)׀4ơR=th@Hq݃܊qm8:OwnG 8RYI]R kuGӥ!憉~vJ[VnSnyz \R;`\X;|}Fltݸ`%&2N42Uych)ey7*]u2Bx^Li?^0L`ш6%rϙ-%>-7>s^7~@ʉp^0}$o37],8YʲӴ=”LiRb 8^PTiŬw u3~E(w!m I{rl )6b7g.Nf4cLtBS:hXz~s р.+0Mܸ`ciH֑?nӄVY( \0!@^ݾ#  endstream endobj 105 0 obj << /FontName /RURQOT+CMBX8 /StemV 122 /CharSet (/parenleft/parenright/hyphen/period/two/five/nine/colon/A/B/D/E/F/G/I/M/O/P/S/T/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/r/s/t/u/w/x/y) /FontFile 107 0 R /Ascent 694 /Flags 4 /XHeight 444 /Descent -194 /ItalicAngle 0 /FontBBox [-59 -250 1235 750] /CapHeight 686 >> endobj 107 0 obj << /Filter /FlateDecode /Length 8143 /Length3 532 /Length2 7311 /Length1 1381 >> stream xUT ]CJX!ww P\ ݡ8E hqhqf?WcF]xSgf/lX;<%s 4EOű`?p,'N-7hyȝ4?ޱ(^^OQp'ϖ.wAsE<2xB"x؀=ز:dy^cƭ$a5@oRKSAas kU6`.Ѩ@S>:KI`W`k5hQ]ξ3!YILAiG fC(fzcXH_JTXsO  GIKQ^ R[MNs4T1+F8g1Y}x{8Gu<9jt@?൞J2{dHc_{HZ贛#i ePm~Ŵ@cUgӄ lqz|nk(9`&B9nJH~Q_O?^`+Q/-G+[Hnq)ktwAg:/;SwHlzw*^|H !]mZX+e{m*o "ۦRXu72*  Ѽ ѩƾ4ǵ<8`bq' 31 zqXG%5_RY)sőF,1 Ph$k6W\ԅ~^cM_|<ō"xGBrF6%,vM+~;NOH I)䮹BǕ@_7sV qY۾T>! ;d7oS4W|5M[px3St8G LoJF @`lkВsab3|ڵw} $x<ڞإyiN?CIy2O qN'"pL_X%rn2?F!Z=Vt|ZsgM]#E {ayAoXEdJ &dX:Ѩ@ȝnquV|[ê{VYK],]T>OՇ^g&~};ඈ\#cm;W4wW2eej@bdOT0L䙳xO峺Uqt>cΗ)Qa\ÓzDhL9<⺓4)6|Y܏Cp9MTypVbj"./Hd Q fH1S{z|EBdS+!D<@:QTSP3r ,̍Geη4fQɽKQG YY|sDrdAXi.K*UU1:JD =ff +Fv KyOp}mΆ%G1i*A9{贪p 5 mhIT&gX\KPv==gjrWQi%iM={{m~в:F[='d&9sK'BI^)Jr!=i1b`y ֪/(g-*QJޱdbs΍q1C9. l P0=t UvP4b{.<g[v>qfsձyDf6a~T-y}k(26-br9zKݡ|D` W~.8 #&)m! cӼxgJa㔫DCRzҴ3dodfɺ|t (uj 1#ZW-@Հ'+tjѱIr{b@AG\J!&@N'+2lG'{V˩*J:d+z[ķ,5 jW<0@$fNx9RocT ksId?>,؛KѩXxs%Y8-0_,|-\vr6uNz/5vkqT}v!$ʡ =ҠyX ~Ò KM44 ZC{jȂrUC\u~J_m*\jI vAke)ViiRRE({U`>1(+ʾ '#'Odh$F[|ukqT;ۖZn0F %b@85p8H?Q|Lm`22af>yP$X_(kPQ㨦6=R\LGfǑ1uӲMK F^.!7&J"Ȍ|$q&˾OWFۇ^-ruSЧPc~<lW<"$D 4K<E2 x 3X]!ǣMKoON=i3nZ5#Rp ͊uQtʿ-ܱD JΕ&9