libjibx-java-1.1.6a/0000755000175000017500000000000011023302622014071 5ustar moellermoellerlibjibx-java-1.1.6a/build/0000755000175000017500000000000011023035622015173 5ustar moellermoellerlibjibx-java-1.1.6a/build/extras/0000755000175000017500000000000011021525446016507 5ustar moellermoellerlibjibx-java-1.1.6a/build/extras/org/0000755000175000017500000000000011021525446017276 5ustar moellermoellerlibjibx-java-1.1.6a/build/extras/org/jibx/0000755000175000017500000000000011021525446020232 5ustar moellermoellerlibjibx-java-1.1.6a/build/extras/org/jibx/extras/0000755000175000017500000000000011023035622021532 5ustar moellermoellerlibjibx-java-1.1.6a/build/extras/org/jibx/extras/BindingSelector.java0000644000175000017500000002014410071714102025450 0ustar moellermoeller/* Copyright (c) 2003-2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.extras; import java.io.OutputStream; import java.io.Writer; import org.jibx.runtime.BindingDirectory; import org.jibx.runtime.IBindingFactory; import org.jibx.runtime.IMarshallable; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.MarshallingContext; import org.jibx.runtime.impl.UnmarshallingContext; /** * Binding selector that supports versioned XML documents. This looks for a * version attribute on the root element of the document, and selects the * mapping to be used for unmarshalling based on the value. It also supports * selecting the version for marshalling based on a supplied version argument * value. * * @author Dennis M. Sosnoski * @version 1.0 */ public class BindingSelector { /** URI of version selection attribute. */ private final String m_attributeUri; /** Name of version selection attribute. */ private final String m_attributeName; /** Array of version names. */ private final String[] m_versionTexts; /** Array of bindings corresponding to versions. */ private final String[] m_versionBindings; /** Basic unmarshalling context used to determine document version. */ private final UnmarshallingContext m_context; /** Stream for marshalling output. */ private OutputStream m_outputStream; /** Encoding for output stream. */ private String m_outputEncoding; /** Output writer for marshalling. */ private Writer m_outputWriter; /** Indentation for marshalling. */ private int m_outputIndent; /** * Constructor. * * @param uri version selection attribute URI (null if none) * @param name version selection attribute name * @param versions array of version texts (first is default) * @param bindings array of binding names corresponding to versions */ public BindingSelector(String uri, String name, String[] versions, String[] bindings) { m_attributeUri = uri; m_attributeName = name; m_versionTexts = versions; m_versionBindings = bindings; m_context = new UnmarshallingContext(); m_outputIndent = -1; } /** * Get initial unmarshalling context. This gives access to the unmarshalling * context used before the specific version is determined. The document * information must be set for this context before calling {@link * #unmarshalVersioned}. * * @return initial unmarshalling context */ public IUnmarshallingContext getContext() { return m_context; } /** * Set output stream and encoding. * * @param outs stream for document data output * @param enc document output encoding, or null for default */ public void setOutput(OutputStream outs, String enc) { m_outputStream = outs; m_outputEncoding = enc; } /** * Set output writer. * * @param outw writer for document data output */ public void setOutput(Writer outw) { m_outputWriter = outw; } /** * Set nesting indent spaces. * * @param indent number of spaces to indent per level, or disable * indentation if negative */ public void setIndent(int indent) { m_outputIndent = indent; } /** * Marshal according to supplied version. * * @param obj root object to be marshalled * @param version identifier for version to be used in marshalling * @throws JiBXException if error in marshalling */ public void marshalVersioned(Object obj, String version) throws JiBXException { // look up version in defined list String match = (version == null) ? m_versionTexts[0] : version; for (int i = 0; i < m_versionTexts.length; i++) { if (match.equals(m_versionTexts[i])) { // version found, create marshaller for the associated binding IBindingFactory fact = BindingDirectory. getFactory(m_versionBindings[i], obj.getClass()); MarshallingContext context = (MarshallingContext)fact.createMarshallingContext(); // configure marshaller for writing document context.setIndent(m_outputIndent); if (m_outputWriter == null) { if (m_outputStream == null) { throw new JiBXException("Output not configured"); } else { context.setOutput(m_outputStream, m_outputEncoding); } } else { context.setOutput(m_outputWriter); } // output object as document context.startDocument(m_outputEncoding, null); ((IMarshallable)obj).marshal(context); context.endDocument(); return; } } // error if unknown version in document throw new JiBXException("Unrecognized document version " + version); } /** * Unmarshal according to document version. * * @param clas expected class mapped to root element of document (used only * to look up the binding) * @return root object unmarshalled from document * @throws JiBXException if error in unmarshalling */ public Object unmarshalVersioned(Class clas) throws JiBXException { // get the version attribute value (using first value as default) m_context.toStart(); String version = m_context.attributeText(m_attributeUri, m_attributeName, m_versionTexts[0]); // look up version in defined list for (int i = 0; i < m_versionTexts.length; i++) { if (version.equals(m_versionTexts[i])) { // version found, create unmarshaller for the associated binding IBindingFactory fact = BindingDirectory. getFactory(m_versionBindings[i], clas); UnmarshallingContext context = (UnmarshallingContext)fact.createUnmarshallingContext(); // return object unmarshalled using binding for document version context.setFromContext(m_context); return context.unmarshalElement(); } } // error if unknown version in document throw new JiBXException("Unrecognized document version " + version); } }libjibx-java-1.1.6a/build/extras/org/jibx/extras/DiscardElementMapper.java0000644000175000017500000000602610221060356026432 0ustar moellermoeller/* Copyright (c) 2004-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.extras; import org.jibx.runtime.IMarshaller; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshaller; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.UnmarshallingContext; /** *

Custom marshaller/unmarshaller for arbitrary ignored element. This ignores * an element when unmarshalling, if one is present, and does nothing when * marshalling.

* * @author Dennis M. Sosnoski * @version 1.0 */ public class DiscardElementMapper implements IMarshaller, IUnmarshaller { /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#isExtension(int) */ public boolean isExtension(int index) { return false; } /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#marshal(java.lang.Object, * org.jibx.runtime.IMarshallingContext) */ public void marshal(Object obj, IMarshallingContext ictx) {} /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#isPresent(org.jibx.runtime.IUnmarshallingContext) */ public boolean isPresent(IUnmarshallingContext ctx) throws JiBXException { return !ctx.isEnd(); } /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#unmarshal(java.lang.Object, * org.jibx.runtime.IUnmarshallingContext) */ public Object unmarshal(Object obj, IUnmarshallingContext ictx) throws JiBXException { // just discard and return null ((UnmarshallingContext)ictx).skipElement(); return null; } }libjibx-java-1.1.6a/build/extras/org/jibx/extras/DiscardListMapper.java0000644000175000017500000000616210221060356025755 0ustar moellermoeller/* Copyright (c) 2004-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.extras; import org.jibx.runtime.IMarshaller; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshaller; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.UnmarshallingContext; /** *

Custom marshaller/unmarshaller for arbitrary ignored content to end of * element. This ignores all content to the end of the enclosing element when * unmarshalling, and does nothing with marshalling.

* * @author Dennis M. Sosnoski * @version 1.0 */ public class DiscardListMapper implements IMarshaller, IUnmarshaller { /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#isExtension(int) */ public boolean isExtension(int index) { return false; } /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#marshal(java.lang.Object, * org.jibx.runtime.IMarshallingContext) */ public void marshal(Object obj, IMarshallingContext ictx) {} /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#isPresent(org.jibx.runtime.IUnmarshallingContext) */ public boolean isPresent(IUnmarshallingContext ctx) throws JiBXException { return !ctx.isEnd(); } /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#unmarshal(java.lang.Object, * org.jibx.runtime.IUnmarshallingContext) */ public Object unmarshal(Object obj, IUnmarshallingContext ictx) throws JiBXException { // just discard all elements and return null while (!ictx.isEnd()) { ((UnmarshallingContext)ictx).skipElement(); } return null; } }libjibx-java-1.1.6a/build/extras/org/jibx/extras/DocumentComparator.java0000644000175000017500000002626410767277422026241 0ustar moellermoeller/* Copyright (c) 2003-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.extras; import java.io.IOException; import java.io.PrintStream; import java.io.Reader; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlPullParserFactory; /** * XML document comparator. This uses XMLPull parsers to read a pair of * documents in parallel, comparing the streams of components seen from the two * documents. The comparison ignores differences in whitespace separating * elements, but treats whitespace as significant within elements with only * character data content. * * @author Dennis M. Sosnoski */ public class DocumentComparator { /** Parser for first document. */ protected XmlPullParser m_parserA; /** Parser for second document. */ protected XmlPullParser m_parserB; /** Print stream for reporting differences. */ protected PrintStream m_differencePrint; /** * Constructor. Builds the actual parser. * * @param print print stream for reporting differences * @throws XmlPullParserException on error creating parsers */ public DocumentComparator(PrintStream print) throws XmlPullParserException { XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); factory.setNamespaceAware(true); m_parserA = factory.newPullParser(); m_parserB = factory.newPullParser(); m_differencePrint = print; } /** * Build parse input position description. * * @param parser for which to build description * @return text description of current parse position */ protected String buildPositionString(XmlPullParser parser) { return " line " + parser.getLineNumber() + ", col " + parser.getColumnNumber(); } /** * Build name string. * * @param ns namespace URI * @param name local name * @return printable names string */ protected String buildName(String ns, String name) { if ("".equals(ns)) { return name; } else { return "{" + ns + '}' + name; } } /** * Prints error description text. The generated text include position * information from both documents. * * @param msg error message text */ protected void printError(String msg) { if (m_differencePrint != null) { m_differencePrint.println(msg + " - from " + buildPositionString(m_parserA) + " to " + buildPositionString(m_parserB)); } } /** * Verifies that the attributes on the current start tags match. Any * mismatches are printed immediately. * * @return true if the attributes match, false if * not */ protected boolean matchAttributes() { int counta = m_parserA.getAttributeCount(); int countb = m_parserB.getAttributeCount(); boolean[] flags = new boolean[countb]; boolean match = true; for (int i = 0; i < counta; i++) { String name = m_parserA.getAttributeName(i); String ns = m_parserA.getAttributeNamespace(i); String value = m_parserA.getAttributeValue(i); boolean found = false; for (int j = 0; j < countb; j++) { if (name.equals(m_parserB.getAttributeName(j)) && ns.equals(m_parserB.getAttributeNamespace(j))) { flags[j] = true; if (!value.equals(m_parserB.getAttributeValue(j))) { if (match) { printError("Attribute mismatch"); match = false; } m_differencePrint.println(" attribute " + buildName(ns, name) + " value '" + value + "' != '" + m_parserB.getAttributeValue(j) + '\''); } found = true; break; } } if (!found) { if (match) { printError("Attribute mismatch"); match = false; } m_differencePrint.println(" attribute " + buildName(ns, name) + "=\"" + value + "\" is missing from second document"); } } for (int i = 0; i < countb; i++) { if (!flags[i]) { if (match) { printError("Attribute mismatch"); match = false; } m_differencePrint.println(" attribute " + buildName(m_parserB.getAttributeNamespace(i), m_parserB.getAttributeName(i)) + " is missing from first document"); } } return match; } /** * Check if two text strings match, ignoring leading and trailing spaces. * Any mismatch is printed immediately, with the supplied lead text. * * @param texta * @param textb * @param lead error text lead * @return true if the texts match, false if * not */ protected boolean matchText(String texta, String textb, String lead) { if (texta.trim().equals(textb.trim())) { return true; } else { printError(lead); if (m_differencePrint != null) { m_differencePrint.println(" \"" + texta + "\" (length " + texta.length() + " vs. \"" + textb + "\" (length " + textb.length() + ')'); } return false; } } /** * Verifies that the current start or end tag names match. * * @return true if the names match, false if not */ protected boolean matchNames() { return m_parserA.getName().equals(m_parserB.getName()) && m_parserA.getNamespace().equals(m_parserB.getNamespace()); } /** * Compares a pair of documents by reading them in parallel from a pair of * parsers. The comparison ignores differences in whitespace separating * elements, but treats whitespace as significant within elements with only * character data content. * * @param rdra reader for first document to be compared * @param rdrb reader for second document to be compared * @return true if the documents are the same, * false if they're different */ public boolean compare(Reader rdra, Reader rdrb) { try { // set the documents and initialize m_parserA.setInput(rdra); m_parserB.setInput(rdrb); boolean content = false; String texta = ""; String textb = ""; boolean same = true; while (true) { // start by collecting and moving past text content if (m_parserA.getEventType() == XmlPullParser.TEXT) { texta = m_parserA.getText(); m_parserA.next(); } if (m_parserB.getEventType() == XmlPullParser.TEXT) { textb = m_parserB.getText(); m_parserB.next(); } // now check actual tag state int typea = m_parserA.getEventType(); int typeb = m_parserB.getEventType(); if (typea != typeb) { printError("Different document structure"); return false; } else if (typea == XmlPullParser.START_TAG) { // compare start tags, attributes, and prior text content = true; if (!matchNames()) { printError("Different start tags"); return false; } else { if (!matchAttributes()) { same = false; } if (!matchText(texta, textb, "Different text content between elements")) { same = false; } } texta = textb = ""; } else if (typea == XmlPullParser.END_TAG) { // compare end tags and prior text if (!matchNames()) { printError("Different end tags"); return false; } if (content) { if (!matchText(texta, textb, "Different text content")) { same = false; } content = false; } else { if (!matchText(texta, textb, "Different text content between elements")) { same = false; } } texta = textb = ""; } else if (typea == XmlPullParser.END_DOCUMENT) { return same; } // advance both parsers to next component m_parserA.next(); m_parserB.next(); } } catch (IOException ex) { if (m_differencePrint != null) { ex.printStackTrace(m_differencePrint); } return false; } catch (XmlPullParserException ex) { if (m_differencePrint != null) { ex.printStackTrace(m_differencePrint); } return false; } } }libjibx-java-1.1.6a/build/extras/org/jibx/extras/DocumentModelMapperBase.java0000644000175000017500000001177510434260002027104 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.extras; import org.jibx.runtime.IXMLReader; import org.jibx.runtime.IXMLWriter; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.UnmarshallingContext; /** *

Base implementation for custom marshaller/unmarshallers to any document * model representation. This class just provides a few basic operations that * are used by the representation-specific subclasses.

* * @author Dennis M. Sosnoski * @version 1.0 */ public class DocumentModelMapperBase { /** Fixed XML namespace. */ public static final String XML_NAMESPACE = "http://www.w3.org/XML/1998/namespace"; /** Fixed XML namespace namespace. */ public static final String XMLNS_NAMESPACE = "http://www.w3.org/2000/xmlns/"; /** Writer for direct output as XML. */ protected IXMLWriter m_xmlWriter; /** Context being used for unmarshalling. */ protected UnmarshallingContext m_unmarshalContext; /** * Get namespace URI for index. * * @param index namespace index to look up * @return uri namespace URI at index position */ protected String getNamespaceUri(int index) { String[] uris = m_xmlWriter.getNamespaces(); if (index < uris.length) { return uris[index]; } else { index -= uris.length; String[][] uriss = m_xmlWriter.getExtensionNamespaces(); if (uriss != null) { for (int i = 0; i < uriss.length; i++) { uris = uriss[i]; if (index < uris.length) { return uris[index]; } else { index -= uris.length; } } } } return null; } /** * Get next namespace index. * * @return next namespace index */ protected int getNextNamespaceIndex() { int count = m_xmlWriter.getNamespaces().length; String[][] uriss = m_xmlWriter.getExtensionNamespaces(); if (uriss != null) { for (int i = 0; i < uriss.length; i++) { count += uriss[i].length; } } return count; } /** * Accumulate text content. This consolidates consecutive text and entities * to a single string. * * @return consolidated text string * @exception JiBXException on error in unmarshalling */ protected String accumulateText() throws JiBXException { String text = m_unmarshalContext.getText(); StringBuffer buff = null; while (true) { int cev = m_unmarshalContext.nextToken(); if (cev == IXMLReader.TEXT || (cev == IXMLReader.ENTITY_REF && m_unmarshalContext.getText() != null)) { if (buff == null) { buff = new StringBuffer(text); } buff.append(m_unmarshalContext.getText()); } else { break; } } if (buff == null) { return text; } else { return buff.toString(); } } /** * Check if a character is a space character. * * @param chr character to be checked * @return true if whitespace, false if not */ protected boolean isWhitespace(char chr) { if (chr <= 0x20) { return chr == 0x20 || chr == 0x09 || chr == 0x0A || chr == 0x0D; } else { return false; } } }libjibx-java-1.1.6a/build/extras/org/jibx/extras/Dom4JElementMapper.java0000644000175000017500000001446010071714104025777 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.extras; import java.io.IOException; import org.dom4j.Element; import org.jibx.runtime.IAliasable; import org.jibx.runtime.IMarshaller; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshaller; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.UnmarshallingContext; /** *

Custom element marshaller/unmarshaller to dom4j representation. This * allows you to mix data binding and document model representations for XML * within the same application. You simply use this marshaller/unmarshaller with * a linked object type of org.dom4j.Element (the actual runtime * type - the declared type is ignored and can be anything). If a name is * supplied on a reference that element name will always be matched when * unmarshalling but will be ignored when marshalling (with the actual dom4j * element name used). If no name is supplied this will unmarshal a single * element with any name.

* * @author Dennis M. Sosnoski * @version 1.0 */ public class Dom4JElementMapper extends Dom4JMapperBase implements IMarshaller, IUnmarshaller, IAliasable { /** Root element namespace URI. */ private final String m_uri; /** Namespace URI index in binding. */ private final int m_index; /** Root element name. */ private final String m_name; /** * Default constructor. */ public Dom4JElementMapper() { m_uri = null; m_index = -1; m_name = null; } /** * Aliased constructor. This takes a name definition for the element. It'll * be used by JiBX when a name is supplied by the mapping which references * this custom marshaller/unmarshaller. * * @param uri namespace URI for the top-level element * @param index namespace index corresponding to the defined URI within the * marshalling context definitions * @param name local name for the top-level element */ public Dom4JElementMapper(String uri, int index, String name) { // save the simple values m_uri = uri; m_index = index; m_name = name; } /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#isExtension(int) */ public boolean isExtension(int index) { return false; } /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#marshal(java.lang.Object, * org.jibx.runtime.IMarshallingContext) */ public void marshal(Object obj, IMarshallingContext ictx) throws JiBXException { // make sure the parameters are as expected if (!(obj instanceof Element)) { throw new JiBXException("Mapped object not an org.dom4j.Element"); } else { try { // marshal element and all content with only leading indentation m_xmlWriter = ictx.getXmlWriter(); m_xmlWriter.indent(); int indent = ictx.getIndent(); ictx.setIndent(-1); m_defaultNamespaceURI = null; marshalElement((Element)obj); ictx.setIndent(indent); } catch (IOException e) { throw new JiBXException("Error writing to document", e); } } } /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#isPresent(org.jibx.runtime.IUnmarshallingContext) */ public boolean isPresent(IUnmarshallingContext ctx) throws JiBXException { if (m_name == null) { if (!(ctx instanceof UnmarshallingContext)) { throw new JiBXException ("Unmarshalling context not of expected type"); } else { return !((UnmarshallingContext)ctx).isEnd(); } } else { return ctx.isAt(m_uri, m_name); } } /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#unmarshal(java.lang.Object, * org.jibx.runtime.IUnmarshallingContext) */ public Object unmarshal(Object obj, IUnmarshallingContext ictx) throws JiBXException { // verify the entry conditions if (!(ictx instanceof UnmarshallingContext)) { throw new JiBXException ("Unmarshalling context not of expected type"); } else if (m_name != null && !ictx.isAt(m_uri, m_name)) { ((UnmarshallingContext)ictx).throwStartTagNameError(m_uri, m_name); } // position to element start tag m_unmarshalContext = (UnmarshallingContext)ictx; m_unmarshalContext.toStart(); // unmarshal element to document model try { return unmarshalElement(); } catch (IOException e) { throw new JiBXException("Error reading from document", e); } } }libjibx-java-1.1.6a/build/extras/org/jibx/extras/Dom4JListMapper.java0000644000175000017500000001265610434260002025322 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.extras; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.jibx.runtime.IMarshaller; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshaller; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.IXMLReader; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.UnmarshallingContext; /** *

Custom content list marshaller/unmarshaller to dom4j representation. This * allows you to mix data binding and document model representations for XML * within the same application. You simply use this marshaller/unmarshaller with * a linked object type that implements java.util.List (the actual * runtime type - the declared type is ignored and can be anything). When * unmarshalling it will create an instance of java.util.ArrayList * if a list is not passed in and any content is present, then return all the * content up to the close tag for the enclosing element in the list. When * marshalling, it will simply write out any content directly.

* * @author Dennis M. Sosnoski * @version 1.0 */ public class Dom4JListMapper extends Dom4JMapperBase implements IMarshaller, IUnmarshaller { /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#isExtension(int) */ public boolean isExtension(int index) { return false; } /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#marshal(java.lang.Object, * org.jibx.runtime.IMarshallingContext) */ public void marshal(Object obj, IMarshallingContext ictx) throws JiBXException { // make sure the parameters are as expected if (!(obj instanceof List)) { throw new JiBXException("Mapped object not a java.util.List"); } else { try { // marshal all content with no indentation m_xmlWriter = ictx.getXmlWriter(); int indent = ictx.getIndent(); ictx.setIndent(-1); m_defaultNamespaceURI = null; marshalContent((List)obj); ictx.setIndent(indent); } catch (IOException e) { throw new JiBXException("Error writing to document", e); } } } /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#isPresent(org.jibx.runtime.IUnmarshallingContext) */ public boolean isPresent(IUnmarshallingContext ctx) throws JiBXException { if (!(ctx instanceof UnmarshallingContext)) { throw new JiBXException ("Unmarshalling context not of expected type"); } else { return ((UnmarshallingContext)ctx).currentEvent() != IXMLReader.END_TAG; } } /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#unmarshal(java.lang.Object, * org.jibx.runtime.IUnmarshallingContext) */ public Object unmarshal(Object obj, IUnmarshallingContext ictx) throws JiBXException { // verify the entry conditions boolean created = false; List list = null; if (obj == null) { list = new ArrayList(); created = true; } else if (obj instanceof List) { list = (List)obj; } else { throw new JiBXException("Supplied object is not a java.util.List"); } if (!(ictx instanceof UnmarshallingContext)) { throw new JiBXException ("Unmarshalling context not of expected type"); } // unmarshal content to document model m_unmarshalContext = (UnmarshallingContext)ictx; try { unmarshalContent(list); if (created && list.isEmpty()) { return null; } else { return list; } } catch (IOException e) { throw new JiBXException("Error reading from document", e); } } }libjibx-java-1.1.6a/build/extras/org/jibx/extras/Dom4JMapperBase.java0000644000175000017500000003336410434260002025260 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.extras; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.dom4j.Attribute; import org.dom4j.DocumentFactory; import org.dom4j.Element; import org.dom4j.Namespace; import org.dom4j.Node; import org.dom4j.ProcessingInstruction; import org.dom4j.QName; import org.jibx.runtime.IXMLReader; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.UnmarshallingContext; /** *

Base implementation for custom marshaller/unmarshallers to dom4j * representation. This provides the basic code used for both single element and * content list handling.

* * @author Dennis M. Sosnoski * @version 1.0 */ public class Dom4JMapperBase extends DocumentModelMapperBase { /** dom4j component construction factory. */ private static DocumentFactory s_factory = DocumentFactory.getInstance(); /** Current default namespace URI (null if not determined). */ protected String m_defaultNamespaceURI; /** Current default namespace index. */ protected int m_defaultNamespaceIndex; /** * Get index number for declared namespace. * * @param ns namespace of interest * @return namespace index number, or -1 if not declared or * masked */ private int findNamespaceIndex(Namespace ns) { if (Namespace.NO_NAMESPACE.equals(ns)) { return 0; } else if (Namespace.XML_NAMESPACE.equals(ns)) { return 1; } else { String prefix = ns.getPrefix(); if (prefix == null || prefix.length() == 0) { if (m_defaultNamespaceURI == null) { int index = m_xmlWriter.getPrefixIndex(""); if (index >= 0) { m_defaultNamespaceURI = getNamespaceUri(index); m_defaultNamespaceIndex = index; if (m_defaultNamespaceURI.equals(ns.getURI())) { return index; } else { return -1; } } else { return -1; } } else { return m_defaultNamespaceURI.equals(ns.getURI()) ? m_defaultNamespaceIndex : -1; } } else { int index = m_xmlWriter.getPrefixIndex(prefix); if (index >= 0) { return getNamespaceUri(index).equals(ns.getURI()) ? index : -1; } else { return -1; } } } } /** * Marshal content list. * * @param content list of content items to marshal * @exception JiBXException on error in marshalling * @exception IOException on error writing to output */ protected void marshalContent(List content) throws JiBXException, IOException { int size = content.size(); for (int i = 0; i < size; i++) { Node node = (Node)content.get(i); switch (node.getNodeType()) { case Node.CDATA_SECTION_NODE: m_xmlWriter.writeCData(node.getText()); break; case Node.COMMENT_NODE: m_xmlWriter.writeComment(node.getText()); break; case Node.ELEMENT_NODE: marshalElement((Element)node); break; case Node.ENTITY_REFERENCE_NODE: m_xmlWriter.writeEntityRef(node.getName()); break; case Node.PROCESSING_INSTRUCTION_NODE: m_xmlWriter.writePI(((ProcessingInstruction)node). getTarget(), node.getText()); break; case Node.TEXT_NODE: m_xmlWriter.writeTextContent(node.getText()); break; default: break; } } } /** * Marshal element with all attributes and content. * * @param element element to be marshalled * @exception JiBXException on error in marshalling * @exception IOException on error writing to output */ protected void marshalElement(Element element) throws JiBXException, IOException { // accumulate all needed namespace declarations int size = element.nodeCount(); Namespace ns = element.getNamespace(); int nsi = findNamespaceIndex(ns); ArrayList nss = null; boolean hascontent = false; int defind = -1; String defuri = null; for (int i = 0; i < size; i++) { Node node = element.node(i); if (node instanceof Namespace) { Namespace dns = (Namespace)node; if (findNamespaceIndex(dns) < 0) { if (nss == null) { nss = new ArrayList(); } nss.add(dns); String prefix = dns.getPrefix(); if (prefix == null || prefix.length() == 0) { defind = nss.size() - 1; defuri = dns.getURI(); } } } else { hascontent = true; } } // check for namespace declarations required String[] uris = null; if (nss == null) { m_xmlWriter.startTagOpen(nsi, element.getName()); } else { int base = getNextNamespaceIndex(); if (defind >= 0) { m_defaultNamespaceIndex = base + defind; m_defaultNamespaceURI = defuri; } uris = new String[nss.size()]; int[] nums = new int[nss.size()]; String[] prefs = new String[nss.size()]; for (int i = 0; i < uris.length; i++) { Namespace addns = (Namespace)nss.get(i); uris[i] = addns.getURI(); nums[i] = base + i; prefs[i] = addns.getPrefix(); if (nsi < 0 && ns.equals(addns)) { nsi = base + i; } } m_xmlWriter.pushExtensionNamespaces(uris); m_xmlWriter.startTagNamespaces(nsi, element.getName(), nums, prefs); if (defind >= 0) { m_defaultNamespaceIndex = defind; m_defaultNamespaceURI = defuri; } } // add attributes if present if (element.attributeCount() > 0) { for (int i = 0; i < element.attributeCount(); i++) { Attribute attr = element.attribute(i); int index = findNamespaceIndex(attr.getNamespace()); m_xmlWriter.addAttribute(index, attr.getName(), attr.getValue()); } } // check for content present if (hascontent) { m_xmlWriter.closeStartTag(); marshalContent(element.content()); m_xmlWriter.endTag(nsi, element.getName()); } else { m_xmlWriter.closeEmptyTag(); } // pop namespaces if defined by element if (nss != null) { m_xmlWriter.popExtensionNamespaces(); if (defind >= 0) { m_defaultNamespaceURI = null; } } } /** * Unmarshal element content. This unmarshals everything up to the * containing element close tag, adding each component to the content list * supplied. On return, the parse position will always be at an END_TAG. * * @param content list for unmarshalled content * @exception JiBXException on error in unmarshalling * @exception IOException on error reading input */ protected void unmarshalContent(List content) throws JiBXException, IOException { // loop until end of containing element found loop: while (true) { int cev = m_unmarshalContext.currentEvent(); switch (cev) { case IXMLReader.CDSECT: content.add(s_factory. createCDATA(m_unmarshalContext.getText())); break; case IXMLReader.COMMENT: content.add(s_factory. createComment(m_unmarshalContext.getText())); break; case IXMLReader.END_TAG: break loop; case IXMLReader.ENTITY_REF: if (m_unmarshalContext.getText() == null) { content.add(s_factory. createEntity(m_unmarshalContext.getName(), null)); break; } else { content.add(s_factory.createText(accumulateText())); continue loop; } case IXMLReader.PROCESSING_INSTRUCTION: { String text = m_unmarshalContext.getText(); int index = 0; while (++index < text.length() && !isWhitespace(text.charAt(index))); if (index < text.length()) { String target = text.substring(0, index); while (++index < text.length() && isWhitespace(text.charAt(index))); String data = text.substring(index); content.add(s_factory. createProcessingInstruction(target, data)); } else { content.add(s_factory. createProcessingInstruction(text, "")); } } break; case IXMLReader.START_TAG: content.add(unmarshalElement()); continue loop; case IXMLReader.TEXT: content.add(s_factory.createText(accumulateText())); continue loop; } m_unmarshalContext.nextToken(); } } /** * Unmarshal element with all attributes and content. This must be called * with the unmarshalling context positioned at a START_TAG event. * * @return unmarshalled element * @exception JiBXException on error in unmarshalling * @exception IOException on error reading input */ protected Element unmarshalElement() throws JiBXException, IOException { // start by creating the actual element QName qname = QName.get(m_unmarshalContext.getName(), m_unmarshalContext.getPrefix(), m_unmarshalContext.getNamespace()); Element element = s_factory.createElement(qname); // add all namespace declarations to element int ncount = m_unmarshalContext.getNamespaceCount(); for (int i = 0; i < ncount; i++) { String prefix = m_unmarshalContext.getNamespacePrefix(i); String uri = m_unmarshalContext.getNamespaceUri(i); element.addNamespace(prefix, uri); } // add all attributes to element int acount = m_unmarshalContext.getAttributeCount(); for (int i = 0; i < acount; i++) { String prefix = m_unmarshalContext.getAttributePrefix(i); String uri = m_unmarshalContext.getAttributeNamespace(i); String name = m_unmarshalContext.getAttributeName(i); String value = m_unmarshalContext.getAttributeValue(i); qname = QName.get(name, prefix, uri); element.addAttribute(qname, value); } // add all content to element int event = m_unmarshalContext.nextToken(); if (event != IXMLReader.END_TAG) { unmarshalContent(element.content()); } m_unmarshalContext.nextToken(); return element; } }libjibx-java-1.1.6a/build/extras/org/jibx/extras/DomElementMapper.java0000644000175000017500000001471510071714110025601 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.extras; import java.io.IOException; import org.jibx.runtime.IAliasable; import org.jibx.runtime.IMarshaller; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshaller; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.UnmarshallingContext; import org.w3c.dom.Element; /** *

Custom element marshaller/unmarshaller to DOM representation. This allows * you to mix data binding and document model representations for XML within the * same application. You simply use this marshaller/unmarshaller with a linked * object of type org.w3c.dom.Element (the actual runtime type - * the declared type is ignored and can be anything). If a name is supplied on a * reference that element name will always be matched when unmarshalling but * will be ignored when marshalling (with the actual DOM element name used). If * no name is supplied this will unmarshal a single element with any name.

* * @author Dennis M. Sosnoski * @version 1.0 */ public class DomElementMapper extends DomMapperBase implements IMarshaller, IUnmarshaller, IAliasable { /** Root element namespace URI. */ private final String m_uri; /** Namespace URI index in binding. */ private final int m_index; /** Root element name. */ private final String m_name; /** * Default constructor. * * @throws JiBXException on error creating document */ public DomElementMapper() throws JiBXException { m_uri = null; m_index = -1; m_name = null; } /** * Aliased constructor. This takes a name definition for the element. It'll * be used by JiBX when a name is supplied by the mapping which references * this custom marshaller/unmarshaller. * * @param uri namespace URI for the top-level element * @param index namespace index corresponding to the defined URI within the * marshalling context definitions * @param name local name for the top-level element * @throws JiBXException on error creating document */ public DomElementMapper(String uri, int index, String name) throws JiBXException { // save the simple values m_uri = uri; m_index = index; m_name = name; } /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#isExtension(int) */ public boolean isExtension(int index) { return false; } /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#marshal(java.lang.Object, * org.jibx.runtime.IMarshallingContext) */ public void marshal(Object obj, IMarshallingContext ictx) throws JiBXException { // make sure the parameters are as expected if (!(obj instanceof Element)) { throw new JiBXException("Mapped object not an org.w3c.dom.Element"); } else { try { // marshal element and all content with only leading indentation m_xmlWriter = ictx.getXmlWriter(); m_xmlWriter.indent(); int indent = ictx.getIndent(); ictx.setIndent(-1); m_defaultNamespaceURI = null; marshalElement((Element)obj); ictx.setIndent(indent); } catch (IOException e) { throw new JiBXException("Error writing to document", e); } } } /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#isPresent(org.jibx.runtime.IUnmarshallingContext) */ public boolean isPresent(IUnmarshallingContext ctx) throws JiBXException { if (m_name == null) { if (!(ctx instanceof UnmarshallingContext)) { throw new JiBXException ("Unmarshalling context not of expected type"); } else { return !((UnmarshallingContext)ctx).isEnd(); } } else { return ctx.isAt(m_uri, m_name); } } /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#unmarshal(java.lang.Object, * org.jibx.runtime.IUnmarshallingContext) */ public Object unmarshal(Object obj, IUnmarshallingContext ictx) throws JiBXException { // verify the entry conditions if (!(ictx instanceof UnmarshallingContext)) { throw new JiBXException ("Unmarshalling context not of expected type"); } else if (m_name != null && !ictx.isAt(m_uri, m_name)) { ((UnmarshallingContext)ictx).throwStartTagNameError(m_uri, m_name); } // position to element start tag m_unmarshalContext = (UnmarshallingContext)ictx; m_unmarshalContext.toStart(); // unmarshal element to document model try { return unmarshalElement(); } catch (IOException e) { throw new JiBXException("Error reading from document", e); } } }libjibx-java-1.1.6a/build/extras/org/jibx/extras/DomFragmentMapper.java0000644000175000017500000001343710434260002025752 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.extras; import java.io.IOException; import org.jibx.runtime.IMarshaller; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshaller; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.IXMLReader; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.UnmarshallingContext; import org.w3c.dom.DocumentFragment; import org.w3c.dom.Node; /** *

Custom content list marshaller/unmarshaller to DOM representation. This * allows you to mix data binding and document model representations for XML * within the same application. You simply use this marshaller/unmarshaller with * a linked object type of org.w3c.dom.DocumentFragment (the actual * runtime type - the declared type is ignored and can be anything). When * unmarshalling it will create a fragment to hold any content up to the close * tag for the enclosing element in the list. When marshalling, it will simply * write out any content directly.

* * @author Dennis M. Sosnoski * @version 1.0 */ public class DomFragmentMapper extends DomMapperBase implements IMarshaller, IUnmarshaller { /** * Default constructor. * * @throws JiBXException on configuration error */ public DomFragmentMapper() throws JiBXException { super(); } /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#isExtension(int) */ public boolean isExtension(int index) { return false; } /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#marshal(java.lang.Object, * org.jibx.runtime.IMarshallingContext) */ public void marshal(Object obj, IMarshallingContext ictx) throws JiBXException { // make sure the parameters are as expected if (!(obj instanceof DocumentFragment)) { throw new JiBXException ("Mapped object not an org.w3c.dom.DocumentFragment"); } else { try { // marshal document fragment with no indentation m_xmlWriter = ictx.getXmlWriter(); int indent = ictx.getIndent(); ictx.setIndent(-1); m_defaultNamespaceURI = null; marshalContent(((DocumentFragment)obj).getChildNodes()); ictx.setIndent(indent); } catch (IOException e) { throw new JiBXException("Error writing to document", e); } } } /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#isPresent(org.jibx.runtime.IUnmarshallingContext) */ public boolean isPresent(IUnmarshallingContext ctx) throws JiBXException { if (!(ctx instanceof UnmarshallingContext)) { throw new JiBXException ("Unmarshalling context not of expected type"); } else { return ((UnmarshallingContext)ctx).currentEvent() != IXMLReader.END_TAG; } } /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#unmarshal(java.lang.Object, * org.jibx.runtime.IUnmarshallingContext) */ public Object unmarshal(Object obj, IUnmarshallingContext ictx) throws JiBXException { // verify the entry conditions boolean created = false; DocumentFragment frag = null; if (obj == null) { frag = m_document.createDocumentFragment(); created = true; } else if (obj instanceof DocumentFragment) { frag = (DocumentFragment)obj; } else { throw new JiBXException ("Supplied object is not an org.w3c.dom.DocumentFragment"); } if (!(ictx instanceof UnmarshallingContext)) { throw new JiBXException ("Unmarshalling context not of expected type"); } // unmarshal content to document model m_unmarshalContext = (UnmarshallingContext)ictx; try { Node node; while ((node = unmarshalNode()) != null) { frag.appendChild(node); } if (created && !frag.hasChildNodes()) { return null; } else { return frag; } } catch (IOException e) { throw new JiBXException("Error reading from document", e); } } }libjibx-java-1.1.6a/build/extras/org/jibx/extras/DomListMapper.java0000644000175000017500000001414010434260002025112 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.extras; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.jibx.runtime.IMarshaller; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshaller; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.IXMLReader; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.UnmarshallingContext; import org.w3c.dom.Node; /** *

Custom content list marshaller/unmarshaller to DOM representation. This * allows you to mix data binding and document model representations for XML * within the same application. You simply use this marshaller/unmarshaller with * a linked object type that implements java.util.List (the actual * runtime type - the declared type is ignored and can be anything). When * unmarshalling it will create an instance of java.util.ArrayList * if a list is not passed in and any content is present, then return all the * content up to the close tag for the enclosing element in the list. When * marshalling, it will simply write out any content directly.

* * @author Dennis M. Sosnoski * @version 1.0 */ public class DomListMapper extends DomMapperBase implements IMarshaller, IUnmarshaller { /** * Default constructor. * * @throws JiBXException on configuration error */ public DomListMapper() throws JiBXException { super(); } /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#isExtension(int) */ public boolean isExtension(int index) { return false; } /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#marshal(java.lang.Object, * org.jibx.runtime.IMarshallingContext) */ public void marshal(Object obj, IMarshallingContext ictx) throws JiBXException { // make sure the parameters are as expected if (!(obj instanceof List)) { throw new JiBXException("Mapped object not a java.util.List"); } else { try { // marshal content list with no indentation m_xmlWriter = ictx.getXmlWriter(); int indent = ictx.getIndent(); ictx.setIndent(-1); m_defaultNamespaceURI = null; for (Iterator iter = ((List)obj).iterator(); iter.hasNext();) { Object item = iter.next(); if (item instanceof Node) { marshalNode((Node)item); } else { throw new JiBXException ("List item is not an org.w3c.dom.Node"); } } ictx.setIndent(indent); } catch (IOException e) { throw new JiBXException("Error writing to document", e); } } } /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#isPresent(org.jibx.runtime.IUnmarshallingContext) */ public boolean isPresent(IUnmarshallingContext ctx) throws JiBXException { if (!(ctx instanceof UnmarshallingContext)) { throw new JiBXException ("Unmarshalling context not of expected type"); } else { return ((UnmarshallingContext)ctx).currentEvent() != IXMLReader.END_TAG; } } /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#unmarshal(java.lang.Object, * org.jibx.runtime.IUnmarshallingContext) */ public Object unmarshal(Object obj, IUnmarshallingContext ictx) throws JiBXException { // verify the entry conditions boolean created = false; List list = null; if (obj == null) { list = new ArrayList(); created = true; } else if (obj instanceof List) { list = (List)obj; } else { throw new JiBXException("Supplied object is not a java.util.List"); } if (!(ictx instanceof UnmarshallingContext)) { throw new JiBXException ("Unmarshalling context not of expected type"); } // unmarshal content to document model m_unmarshalContext = (UnmarshallingContext)ictx; try { Node node; while ((node = unmarshalNode()) != null) { list.add(node); } if (created && list.isEmpty()) { return null; } else { return list; } } catch (IOException e) { throw new JiBXException("Error reading from document", e); } } }libjibx-java-1.1.6a/build/extras/org/jibx/extras/DomMapperBase.java0000644000175000017500000004042210434260002025053 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.extras; import java.io.IOException; import java.util.ArrayList; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.jibx.runtime.IXMLReader; import org.jibx.runtime.JiBXException; import org.w3c.dom.Attr; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; /** *

Base implementation for custom marshaller/unmarshallers to DOM * representation. This provides the basic code used for both single element and * content list handling.

* * @author Dennis M. Sosnoski * @version 1.0 */ public class DomMapperBase extends DocumentModelMapperBase { /** Actual document instance (required by DOM). */ protected Document m_document; /** Current default namespace URI (null if not determined). */ protected String m_defaultNamespaceURI; /** Current default namespace index. */ protected int m_defaultNamespaceIndex; /** * Constructor. Initializes the document used by this * marshaller/unmarshaller instance as the owner of all DOM components. * * @throws JiBXException on error creating document */ protected DomMapperBase() throws JiBXException { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setNamespaceAware(true); try { m_document = dbf.newDocumentBuilder().newDocument(); } catch (ParserConfigurationException e) { throw new JiBXException("Unable to create DOM document", e); } } /** * Get index number for declared namespace. * * @param prefix namespace prefix (null if none) * @param uri namespace URI (empty string if none) * @return namespace index number, or -1 if not declared or * masked */ private int findNamespaceIndex(String prefix, String uri) { if ((prefix == null || "".equals(prefix)) && (uri == null || "".equals(uri))) { return 0; } else if ("xml".equals(prefix) && XML_NAMESPACE.equals(uri)) { return 1; } else { if (prefix == null) { if (m_defaultNamespaceURI == null) { int index = m_xmlWriter.getPrefixIndex(""); if (index >= 0) { m_defaultNamespaceURI = getNamespaceUri(index); m_defaultNamespaceIndex = index; if (m_defaultNamespaceURI.equals(uri)) { return index; } else { return -1; } } else { return -1; } } else { return m_defaultNamespaceURI.equals(uri) ? m_defaultNamespaceIndex : -1; } } else { int index = m_xmlWriter.getPrefixIndex(prefix); if (index >= 0) { return getNamespaceUri(index).equals(uri) ? index : -1; } else { return -1; } } } } /** * Marshal node. * * @param node node to be marshalled * @exception JiBXException on error in marshalling * @exception IOException on error writing to output */ protected void marshalNode(Node node) throws JiBXException, IOException { switch (node.getNodeType()) { case Node.CDATA_SECTION_NODE: m_xmlWriter.writeCData(node.getNodeValue()); break; case Node.COMMENT_NODE: m_xmlWriter.writeComment(node.getNodeValue()); break; case Node.ELEMENT_NODE: marshalElement((Element)node); break; case Node.ENTITY_REFERENCE_NODE: m_xmlWriter.writeEntityRef(node.getNodeName()); break; case Node.PROCESSING_INSTRUCTION_NODE: m_xmlWriter.writePI(node.getNodeName(), node.getNodeValue()); break; case Node.TEXT_NODE: m_xmlWriter.writeTextContent(node.getNodeValue()); break; default: break; } } /** * Marshal node list. * * @param content list of nodes to marshal * @exception JiBXException on error in marshalling * @exception IOException on error writing to output */ protected void marshalContent(NodeList content) throws JiBXException, IOException { int size = content.getLength(); for (int i = 0; i < size; i++) { marshalNode(content.item(i)); } } /** * Marshal element with all attributes and content. * * @param element element to be marshalled * @exception JiBXException on error in marshalling * @exception IOException on error writing to output */ protected void marshalElement(Element element) throws JiBXException, IOException { // accumulate all needed namespace declarations String prefix = element.getPrefix(); String uri = element.getNamespaceURI(); int nsi = findNamespaceIndex(prefix, uri); ArrayList nss = null; int defind = -1; String defuri = null; NamedNodeMap attrs = element.getAttributes(); int size = attrs.getLength(); for (int i = 0; i < size; i++) { Attr attr = (Attr)attrs.item(i); if (XMLNS_NAMESPACE.equals(attr.getNamespaceURI())) { // found namespace declaration, convert to simple prefix String declpref = attr.getLocalName(); if ("xmlns".equals(declpref)) { declpref = null; } String decluri = attr.getValue(); if (findNamespaceIndex(declpref, decluri) < 0) { if (nss == null) { nss = new ArrayList(); } nss.add(declpref == null ? "" : declpref); nss.add(decluri == null ? "" : decluri); if (declpref == null) { defind = (nss.size() / 2) - 1; defuri = decluri; } if (uri == decluri) { nsi = defind; } } } } // check for namespace declarations required String[] uris = null; if (nss == null) { m_xmlWriter.startTagOpen(nsi, element.getLocalName()); } else { int base = getNextNamespaceIndex(); if (defind >= 0) { m_defaultNamespaceIndex = base + defind; m_defaultNamespaceURI = defuri; } int length = nss.size() / 2; uris = new String[length]; int[] nums = new int[length]; String[] prefs = new String[length]; for (int i = 0; i < length; i++) { prefs[i] = (String)nss.get(i*2); uris[i] = (String)nss.get(i*2+1); nums[i] = base + i; if (nsi < 0 && uri.equals(uris[i])) { if ((prefix == null && prefs[i] == "") || (prefix != null && prefix.equals(prefs[i]))) { nsi = base + i; } } } m_xmlWriter.pushExtensionNamespaces(uris); m_xmlWriter.startTagNamespaces(nsi, element.getLocalName(), nums, prefs); if (defind >= 0) { m_defaultNamespaceIndex = defind; m_defaultNamespaceURI = defuri; } } // add attributes if present for (int i = 0; i < size; i++) { Attr attr = (Attr)attrs.item(i); if (!XMLNS_NAMESPACE.equals(attr.getNamespaceURI())) { int index = 0; String apref = attr.getPrefix(); if (apref != null) { index = findNamespaceIndex(apref, attr.getNamespaceURI()); } m_xmlWriter.addAttribute(index, attr.getLocalName(), attr.getValue()); } } // check for content present NodeList nodes = element.getChildNodes(); size = nodes.getLength(); if (size > 0) { m_xmlWriter.closeStartTag(); marshalContent(element.getChildNodes()); m_xmlWriter.endTag(nsi, element.getLocalName()); } else { m_xmlWriter.closeEmptyTag(); } // pop namespaces if defined by element if (nss != null) { m_xmlWriter.popExtensionNamespaces(); if (defind >= 0) { m_defaultNamespaceURI = null; } } } /** * Unmarshal single node. This unmarshals the next node from the input * stream, up to the close tag of the containing element. * * @return unmarshalled node * @exception JiBXException on error in unmarshalling * @exception IOException on error reading input */ protected Node unmarshalNode() throws JiBXException, IOException { while (true) { int cev = m_unmarshalContext.currentEvent(); switch (cev) { case IXMLReader.CDSECT: { String text = m_unmarshalContext.getText(); m_unmarshalContext.nextToken(); return m_document.createCDATASection(text); } case IXMLReader.COMMENT: { String text = m_unmarshalContext.getText(); m_unmarshalContext.nextToken(); return m_document.createComment(text); } case IXMLReader.END_TAG: return null; case IXMLReader.ENTITY_REF: if (m_unmarshalContext.getText() == null) { String name = m_unmarshalContext.getName(); m_unmarshalContext.nextToken(); return m_document.createEntityReference(name); } else { String text = accumulateText(); return m_document.createTextNode(text); } case IXMLReader.PROCESSING_INSTRUCTION: { String text = m_unmarshalContext.getText(); m_unmarshalContext.nextToken(); int index = 0; while (++index < text.length() && !isWhitespace(text.charAt(index))); if (index < text.length()) { String target = text.substring(0, index); while (++index < text.length() && isWhitespace(text.charAt(index))); String data = text.substring(index); return m_document. createProcessingInstruction(target, data); } else { return m_document. createProcessingInstruction(text, ""); } } case IXMLReader.START_TAG: return unmarshalElement(); case IXMLReader.TEXT: return m_document.createTextNode(accumulateText()); default: m_unmarshalContext.nextToken(); } } } /** * Unmarshal node content. This unmarshals everything up to the containing * element close tag, adding each component to the content list supplied. On * return, the parse position will always be at an END_TAG. * * @param parent node to which children are to be added * @exception JiBXException on error in unmarshalling * @exception IOException on error reading input */ protected void unmarshalContent(Node parent) throws JiBXException, IOException { Node node; while ((node = unmarshalNode()) != null) { parent.appendChild(node); } } /** * Unmarshal element with all attributes and content. This must be called * with the unmarshalling context positioned at a START_TAG event. * * @return unmarshalled element * @exception JiBXException on error in unmarshalling * @exception IOException on error reading input */ protected Element unmarshalElement() throws JiBXException, IOException { // start by creating the actual element String uri = m_unmarshalContext.getNamespace(); String prefix = m_unmarshalContext.getPrefix(); String name = m_unmarshalContext.getName(); if (prefix != null) { name = prefix + ':' + name; } Element element = m_document.createElementNS(uri, name); // add all namespace declarations to element int ncount = m_unmarshalContext.getNamespaceCount(); for (int i = 0; i < ncount; i++) { prefix = m_unmarshalContext.getNamespacePrefix(i); uri = m_unmarshalContext.getNamespaceUri(i); if (prefix == null) { element.setAttributeNS(XMLNS_NAMESPACE, "xmlns", uri); } else { element.setAttributeNS(XMLNS_NAMESPACE, "xmlns:" + prefix, uri); } } // add all attributes to element int acount = m_unmarshalContext.getAttributeCount(); for (int i = 0; i < acount; i++) { prefix = m_unmarshalContext.getAttributePrefix(i); uri = m_unmarshalContext.getAttributeNamespace(i); name = m_unmarshalContext.getAttributeName(i); if (prefix != null) { name = prefix + ':' + name; } String value = m_unmarshalContext.getAttributeValue(i); element.setAttributeNS(uri, name, value); } // add all content to element int event = m_unmarshalContext.nextToken(); if (event != IXMLReader.END_TAG) { unmarshalContent(element); } m_unmarshalContext.nextToken(); return element; } }libjibx-java-1.1.6a/build/extras/org/jibx/extras/HashMapperStringToComplex.java0000644000175000017500000002307210222700114027446 0ustar moellermoeller/* Copyright (c) 2003-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.extras; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.jibx.runtime.IAliasable; import org.jibx.runtime.IMarshallable; import org.jibx.runtime.IMarshaller; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshaller; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.MarshallingContext; import org.jibx.runtime.impl.UnmarshallingContext; /** *

Custom marshaller/unmarshaller for java.util.Map * instances. This handles mapping hash maps with simple keys and complex values * to and from XML. There are a number of limitations, though. First off, the * key objects are marshalled as simple text values, using the * toString() method to convert them to String. When * unmarshalling the keys are always treated as String values. The * corresponding values can be any complex type with a <mapping> defined in * the binding. The name of the top-level element in the XML structure can be * configured in the binding definition, but the rest of the names are * predefined and set in the code (though the namespace configured for the * top-level element will be used with all the names).

* *

The net effect is that the XML structure will always be of the form:

* *
<map-name size="3">
 *   <entry key="38193">
 *     <customer state="WA" zip="98059">
 *       <name first-name="John" last-name="Smith"/>
 *       <street>12345 Happy Lane</street>
 *       <city>Plunk</city>
 *     </customer>
 *   </entry>
 *   <entry key="39122">
 *     <customer state="WA" zip="98094">
 *       <name first-name="Sally" last-name="Port"/>
 *       <street>932 Easy Street</street>
 *       <city>Fort Lewis</city>
 *     </customer>
 *   </entry>
 *   <entry key="83132">
 *     <customer state="WA" zip="98059">
 *       <name first-name="Mary" last-name="Smith"/>
 *       <street>12345 Happy Lane</street>
 *       <city>Plunk</city>
 *     </customer>
 *   </entry>
 * </map-name>
* *

where "map-name" is the configured top-level element name, the "size" * attribute is the number of pairs in the hash map, and the "entry" elements * are the actual entries in the hash map.

* *

This is obviously not intended to handle all types of hash maps, but it * should be useful as written for many applications and easily customized to * handle other requirements.

* * @author Dennis M. Sosnoski * @version 1.0 */ public class HashMapperStringToComplex implements IMarshaller, IUnmarshaller, IAliasable { private static final int DEFAULT_SIZE = 10; private String m_uri; private int m_index; private String m_name; /** * Default constructor. This uses a pre-defined name for the top-level * element. It'll be used by JiBX when no name information is supplied by * the mapping which references this custom marshaller/unmarshaller. */ public HashMapperStringToComplex() { m_uri = null; m_index = 0; m_name = "hashmap"; } /** * Aliased constructor. This takes a name definition for the top-level * element. It'll be used by JiBX when a name is supplied by the mapping * which references this custom marshaller/unmarshaller. * * @param uri namespace URI for the top-level element (also used for all * other names within the binding) * @param index namespace index corresponding to the defined URI within the * marshalling context definitions * @param name local name for the top-level element */ public HashMapperStringToComplex(String uri, int index, String name) { m_uri = uri; m_index = index; m_name = name; } /** * Method which can be overridden to supply a different name for the wrapper * element attribute used to give the number of items present. If present, * this attribute is used when unmarshalling to set the initial size of the * hashmap. It will be generated when marshalling if the supplied name is * non-null. */ protected String getSizeAttributeName() { return "size"; } /** * Method which can be overridden to supply a different name for the element * used to represent each item in the map. */ protected String getEntryElementName() { return "entry"; } /** * Method which can be overridden to supply a different name for the * attribute defining the key value for each item in the map. */ protected String getKeyAttributeName() { return "key"; } /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#isExtension(int) */ public boolean isExtension(int index) { return false; } /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#marshal(java.lang.Object, * org.jibx.runtime.IMarshallingContext) */ public void marshal(Object obj, IMarshallingContext ictx) throws JiBXException { // make sure the parameters are as expected if (!(obj instanceof Map)) { throw new JiBXException("Invalid object type for marshaller"); } else if (!(ictx instanceof MarshallingContext)) { throw new JiBXException("Invalid object type for marshaller"); } else { // start by generating start tag for container MarshallingContext ctx = (MarshallingContext)ictx; Map map = (Map)obj; ctx.startTagAttributes(m_index, m_name). attribute(m_index, getSizeAttributeName(), map.size()). closeStartContent(); // loop through all entries in map Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry)iter.next(); ctx.startTagAttributes(m_index, getEntryElementName()); ctx.attribute(m_index, getKeyAttributeName(), entry.getKey().toString()); ctx.closeStartContent(); if (entry.getValue() instanceof IMarshallable) { ((IMarshallable)entry.getValue()).marshal(ctx); ctx.endTag(m_index, getEntryElementName()); } else { throw new JiBXException("Mapped value is not marshallable"); } } // finish with end tag for container element ctx.endTag(m_index, m_name); } } /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#isPresent(org.jibx.runtime.IUnmarshallingContext) */ public boolean isPresent(IUnmarshallingContext ctx) throws JiBXException { return ctx.isAt(m_uri, m_name); } /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#unmarshal(java.lang.Object, * org.jibx.runtime.IUnmarshallingContext) */ public Object unmarshal(Object obj, IUnmarshallingContext ictx) throws JiBXException { // make sure we're at the appropriate start tag UnmarshallingContext ctx = (UnmarshallingContext)ictx; if (!ctx.isAt(m_uri, m_name)) { ctx.throwStartTagNameError(m_uri, m_name); } // create new hashmap if needed int size = ctx.attributeInt(m_uri, getSizeAttributeName(), DEFAULT_SIZE); Map map = (Map)obj; if (map == null) { map = new HashMap(size); } // process all entries present in document ctx.parsePastStartTag(m_uri, m_name); while (ctx.isAt(m_uri, getEntryElementName())) { Object key = ctx.attributeText(m_uri, getKeyAttributeName(), null); ctx.parsePastStartTag(m_uri, getEntryElementName()); Object value = ctx.unmarshalElement(); map.put(key, value); ctx.parsePastEndTag(m_uri, getEntryElementName()); } ctx.parsePastEndTag(m_uri, m_name); return map; } }libjibx-java-1.1.6a/build/extras/org/jibx/extras/HashMapperStringToSchemaType.java0000644000175000017500000004656310434260002030115 0ustar moellermoeller/* Copyright (c) 2004-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.extras; import java.math.BigDecimal; import java.math.BigInteger; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.jibx.runtime.EnumSet; import org.jibx.runtime.IAliasable; import org.jibx.runtime.IMarshaller; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshaller; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.IXMLWriter; import org.jibx.runtime.JiBXException; import org.jibx.runtime.Utility; import org.jibx.runtime.impl.MarshallingContext; import org.jibx.runtime.impl.UnmarshallingContext; /** *

Custom marshaller/unmarshaller for java.util.Map * instances. This handles mapping hash maps with string keys and values that * match basic schema datatypes to and from XML. The key objects are marshalled * as simple text values, using the toString() method to convert * them to String if they are not already of that type. When * unmarshalling the keys are always treated as String values. The * corresponding values can be any of the object types corresponding to basic * schema data types, and are marshalled with xsi:type attributes to specify the * type of each value. The types currently supported are Byte, * Double, Float, Integer, * Long, java.util.Date (as xsd:dateTime), * java.sql.Date (as xsd:date), java.sql.Time (as * xsd:time), java.math.BigDecimal (with no exponent allowed, as * xsd:decimal), and java.math.BigInteger (as xsd:integer). The * xsd:type attribute is checked when unmarshalling values to select the proper * deserialization and value type. The name of the top-level element in the XML * structure can be configured in the binding definition, but the rest of the * names are predefined and set in the code (though the namespace configured for * the top-level element will be used with all the names).

* *

The net effect is that the XML structure will always be of the form:

* *
<map-name size="6" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 *     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 *   <entry key="name" xsi:type="xsd:string">John Smith</entry>
 *   <entry key="street" xsi:type="xsd:string">12345 Happy Lane</entry>
 *   <entry key="city" xsi:type="xsd:string">Plunk</entry>
 *   <entry key="state" xsi:type="xsd:string">WA</entry>
 *   <entry key="rating" xsi:type="xsd:int">6</entry>
 *   <entry key="joined" xsi:type="xsd:dateTime">2002-08-06T00:13:31Z</entry>
 * </map-name>
* *

where "map-name" is the configured top-level element name, the "size" * attribute is the number of pairs in the hash map, and the "entry" elements * are the actual entries in the hash map.

* *

For unmarshalling this requires an active namespace declaration with a * prefix for the schema namespace. All xsi:type attribute values must use this * prefix. If more than one prefix is declared for the schema namespace, the * innermost one declared must be used.

* * @author Dennis M. Sosnoski * @version 1.0 */ public class HashMapperStringToSchemaType implements IMarshaller, IUnmarshaller, IAliasable { // // Basic constants used in code private static final String SIZE_ATTRIBUTE_NAME = "size"; private static final String ENTRY_ELEMENT_NAME = "entry"; private static final String KEY_ATTRIBUTE_NAME = "key"; private static final String TYPE_ATTRIBUTE_NAME = "type"; private static final String XSI_NAMESPACE_URI = "http://www.w3.org/2001/XMLSchema-instance"; private static final String XSD_NAMESPACE_URI = "http://www.w3.org/2001/XMLSchema"; private static final String[] SCHEMA_NAMESPACE_URIS = { XSI_NAMESPACE_URI, XSD_NAMESPACE_URI }; private static final String XSI_NAMESPACE_PREFIX = "xsi"; private static final String XSD_NAMESPACE_PREFIX = "xsd"; private static final String[] SCHEMA_NAMESPACE_PREFIXES = { XSI_NAMESPACE_PREFIX, XSD_NAMESPACE_PREFIX }; private static final String XSD_PREFIX_LEAD = "xsd:"; private static final int DEFAULT_SIZE = 10; // // Supported XML schema type correspondences enumeration // numeric values for types public static final int BOOLEAN_TYPE = 0; public static final int BYTE_TYPE = 1; public static final int DOUBLE_TYPE = 2; public static final int FLOAT_TYPE = 3; public static final int INT_TYPE = 4; public static final int LONG_TYPE = 5; public static final int SHORT_TYPE = 6; public static final int DATETIME_TYPE = 7; public static final int DECIMAL_TYPE = 8; public static final int INTEGER_TYPE = 9; public static final int BYTERRAY_TYPE = 10; public static final int STRING_TYPE = 11; //#!j2me{ public static final int DATE_TYPE = 12; public static final int TIME_TYPE = 13; //#j2me} // enumeration definition (string order must match numeric list, above) private static final EnumSet s_javaTypesEnum = new EnumSet(BOOLEAN_TYPE, new String[] { "java.lang.Boolean", "java.lang.Byte", "java.lang.Double", "java.lang.Float", "java.lang.Integer", "java.lang.Long", "java.lang.Short", "java.util.Date", "java.math.BigDecimal", "java.math.BigInteger", "byte[]", "java.lang.String", //#!j2me{ "java.sql.Date", "java.sql.Time", //#j2me} } ); // corresponding schema types (string order must match numeric list, above) private static final EnumSet s_schemaTypesEnum = new EnumSet(BOOLEAN_TYPE, new String[] { "boolean", "byte", "double", "float", "int", "long", "short", "dateTime", "decimal", "integer", "base64Binary", "string", //#!j2me{ "date", "time", //#j2me} } ); // // Member fields private String m_uri; private int m_index; private String m_name; /** * Default constructor. This uses a pre-defined name for the top-level * element. It'll be used by JiBX when no name information is supplied by * the mapping which references this custom marshaller/unmarshaller. */ public HashMapperStringToSchemaType() { m_uri = null; m_index = 0; m_name = "hashmap"; } /** * Aliased constructor. This takes a name definition for the top-level * element. It'll be used by JiBX when a name is supplied by the mapping * which references this custom marshaller/unmarshaller. * * @param uri namespace URI for the top-level element (also used for all * other names within the binding) * @param index namespace index corresponding to the defined URI within the * marshalling context definitions * @param name local name for the top-level element */ public HashMapperStringToSchemaType(String uri, int index, String name) { m_uri = uri; m_index = index; m_name = name; } /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#isExtension(int) */ public boolean isExtension(int index) { return false; } /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#marshal(java.lang.Object, * org.jibx.runtime.IMarshallingContext) */ public void marshal(Object obj, IMarshallingContext ictx) throws JiBXException { // make sure the parameters are as expected if (!(obj instanceof Map)) { throw new JiBXException("Invalid object type for marshaller"); } else if (!(ictx instanceof MarshallingContext)) { throw new JiBXException("Invalid object type for marshaller"); } else { // start by setting up added namespaces MarshallingContext ctx = (MarshallingContext)ictx; IXMLWriter xwrite = ctx.getXmlWriter(); int ixsi = xwrite.getNamespaces().length; String[][] extens = xwrite.getExtensionNamespaces(); if (extens != null) { for (int i = 0; i < extens.length; i++) { ixsi += extens[i].length; } } xwrite.pushExtensionNamespaces(SCHEMA_NAMESPACE_URIS); // generate start tag for containing element Map map = (Map)obj; ctx.startTagNamespaces(m_index, m_name, new int[] { ixsi, ixsi+1 }, SCHEMA_NAMESPACE_PREFIXES). attribute(m_index, SIZE_ATTRIBUTE_NAME, map.size()). closeStartContent(); // loop through all entries in hashmap Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { // first make sure we have a value Map.Entry entry = (Map.Entry)iter.next(); Object value = entry.getValue(); if (value != null) { // write element with key attribute ctx.startTagAttributes(m_index, ENTRY_ELEMENT_NAME); ctx.attribute(m_index, KEY_ATTRIBUTE_NAME, entry.getKey().toString()); // translate value object class to schema type String tname = value.getClass().getName(); int type = s_javaTypesEnum.getValue(tname); if (type < 0) { throw new JiBXException("Value of type " + tname + " with key " + entry.getKey() + " is not a supported type"); } // generate xsi:type attribute for value ctx.attribute(ixsi, TYPE_ATTRIBUTE_NAME, XSD_PREFIX_LEAD + s_schemaTypesEnum.getName(type)); ctx.closeStartContent(); // handle the actual value conversion based on type switch (type) { case BOOLEAN_TYPE: ctx.content(Utility.serializeBoolean (((Boolean)value).booleanValue())); break; case BYTE_TYPE: ctx.content(Utility. serializeByte(((Byte)value).byteValue())); break; case DOUBLE_TYPE: ctx.content(Utility. serializeDouble(((Double)value).doubleValue())); break; case FLOAT_TYPE: ctx.content(Utility. serializeFloat(((Float)value).floatValue())); break; case INT_TYPE: ctx.content(((Integer)value).intValue()); break; case LONG_TYPE: ctx.content(Utility. serializeLong(((Long)value).longValue())); break; case SHORT_TYPE: ctx.content(Utility. serializeShort(((Short)value).shortValue())); break; case DATETIME_TYPE: ctx.content(Utility.serializeDateTime((Date)value)); break; //#!j2me{ case DATE_TYPE: ctx.content(Utility. serializeSqlDate((java.sql.Date)value)); break; case TIME_TYPE: ctx.content(Utility. serializeSqlTime((java.sql.Time)value)); break; //#j2me} case BYTERRAY_TYPE: ctx.content(Utility.serializeBase64((byte[])value)); break; case DECIMAL_TYPE: case INTEGER_TYPE: case STRING_TYPE: ctx.content(value.toString()); break; } // finish with close tag for entry element ctx.endTag(m_index, ENTRY_ELEMENT_NAME); } } // finish with end tag for container element ctx.endTag(m_index, m_name); xwrite.popExtensionNamespaces(); } } /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#isPresent(org.jibx.runtime.IUnmarshallingContext) */ public boolean isPresent(IUnmarshallingContext ctx) throws JiBXException { return ctx.isAt(m_uri, m_name); } /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#unmarshal(java.lang.Object, * org.jibx.runtime.IUnmarshallingContext) */ public Object unmarshal(Object obj, IUnmarshallingContext ictx) throws JiBXException { // make sure we're at the appropriate start tag UnmarshallingContext ctx = (UnmarshallingContext)ictx; if (!ctx.isAt(m_uri, m_name)) { ctx.throwStartTagNameError(m_uri, m_name); } // lookup the prefixes assigned to required namespaces int nscnt = ctx.getActiveNamespaceCount(); String xsdlead = null; for (int i = nscnt-1; i >= 0; i--) { String uri = ctx.getActiveNamespaceUri(i); if (XSD_NAMESPACE_URI.equals(uri)) { String prefix = ctx.getActiveNamespacePrefix(i); if (!"".equals(prefix)) { xsdlead = prefix + ':'; break; } } } if (xsdlead == null) { throw new JiBXException ("Missing required schema namespace declaration"); } // create new hashmap if needed int size = ctx.attributeInt(m_uri, SIZE_ATTRIBUTE_NAME, DEFAULT_SIZE); Map map = (Map)obj; if (map == null) { map = new HashMap(size); } // process all entries present in document ctx.parsePastStartTag(m_uri, m_name); String tdflt = xsdlead + "string"; while (ctx.isAt(m_uri, ENTRY_ELEMENT_NAME)) { // unmarshal key and type from start tag attributes Object key = ctx.attributeText(m_uri, KEY_ATTRIBUTE_NAME); String tname = ctx.attributeText(XSI_NAMESPACE_URI, TYPE_ATTRIBUTE_NAME, tdflt); // convert type name to type index number int type = -1; if (tname.startsWith(xsdlead)) { type = s_schemaTypesEnum. getValue(tname.substring(xsdlead.length())); } if (type < 0) { throw new JiBXException("Value of type " + tname + " with key " + key + " is not a supported type"); } // deserialize content as specified type String text = ctx.parseElementText(m_uri, ENTRY_ELEMENT_NAME); Object value = null; switch (type) { case BOOLEAN_TYPE: value = Utility.parseBoolean(text) ? Boolean.TRUE : Boolean.FALSE; break; case BYTE_TYPE: value = new Byte(Utility.parseByte(text)); break; case DOUBLE_TYPE: value = new Double(Utility.parseDouble(text)); break; case FLOAT_TYPE: value = new Float(Utility.parseFloat(text)); break; case INT_TYPE: value = new Integer(Utility.parseInt(text)); break; case LONG_TYPE: value = new Long(Utility.parseLong(text)); break; case SHORT_TYPE: value = new Short(Utility.parseShort(text)); break; case DATETIME_TYPE: value = Utility.deserializeDateTime(text); break; //#!j2me{ case DATE_TYPE: value = Utility.deserializeSqlDate(text); break; case TIME_TYPE: value = Utility.deserializeSqlTime(text); break; //#j2me} case BYTERRAY_TYPE: value = Utility.deserializeBase64(text); break; case DECIMAL_TYPE: value = new BigDecimal(text); break; case INTEGER_TYPE: value = new BigInteger(text); break; case STRING_TYPE: value = text; break; } // add key-value pair to map map.put(key, value); } // finish by skipping past wrapper end tag ctx.parsePastEndTag(m_uri, m_name); return map; } } libjibx-java-1.1.6a/build/extras/org/jibx/extras/IdDefRefMapperBase.java0000644000175000017500000001624210270750710025757 0ustar moellermoeller/* Copyright (c) 2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.extras; import java.util.HashMap; import org.jibx.runtime.IAliasable; import org.jibx.runtime.IMarshallable; import org.jibx.runtime.IMarshaller; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshaller; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.MarshallingContext; import org.jibx.runtime.impl.UnmarshallingContext; /** *

Abstract base custom marshaller/unmarshaller for an object that may have * multiple references. The first time an object is seen when marshalling the * full XML representation is generated; successive uses of the same object then * use XML references to the object ID. To use this class you need to create a * subclass with a constructor using the same signature as the one provided * (calling the base class constructor from your subclass constructor) and * implement the abstract {@link #getIdValue(java.lang.Object)} method in your subclass. You can * also override the provided {@link #getAttributeName()} method to change the * name used for the IDREF attribute, which must not match the name of an * attribute used in the normal marshalled form of the object. The name used for * this marshaller/unmarshaller in the mapping definition must match the name * used for the base object type being handled.

* * @author Dennis M. Sosnoski * @version 1.0 */ public abstract class IdDefRefMapperBase implements IMarshaller, IUnmarshaller, IAliasable { private String m_uri; private int m_index; private String m_name; /** * Aliased constructor taking a name definition for reference elements. The * subclass version will be used by JiBX to define the element name to be * used with this custom marshaller/unmarshaller. * * @param uri namespace URI for the top-level element * @param index namespace index corresponding to the defined URI within the * marshalling context definitions * @param name local name for the reference element */ public IdDefRefMapperBase(String uri, int index, String name) { m_uri = uri; m_index = index; m_name = name; } /** * Get the ID value from object being marshalled. * * @return ID value */ protected abstract String getIdValue(Object item); /** * Method which can be overridden to supply a different name for the ID * reference attribute. The attribute name used by default is just "ref". */ protected String getAttributeName() { return "ref"; } /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#isExtension(int) */ public boolean isExtension(int index) { return false; } /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#marshal(java.lang.Object, * org.jibx.runtime.IMarshallingContext) */ public void marshal(Object obj, IMarshallingContext ictx) throws JiBXException { // make sure the parameters are as expected if (obj == null) { return; } else if (!(ictx instanceof MarshallingContext)) { throw new JiBXException("Invalid context type for marshaller"); } else { // check if ID already defined MarshallingContext ctx = (MarshallingContext)ictx; HashMap map = ctx.getIdMap(); String id = getIdValue(obj); Object value = map.get(id); if (value == null) { if (obj instanceof IMarshallable) { // new id, write full representation and add to map map.put(id, obj); ((IMarshallable)obj).marshal(ctx); } else { throw new JiBXException("Object of type " + obj.getClass().getName() + " is not marshallable"); } } else if (value.equals(obj)) { // generate reference to previously-defined item ctx.startTagAttributes(m_index, m_name); ctx.attribute(0, getAttributeName(), id); ctx.closeStartEmpty(); } else { throw new JiBXException("Duplicate definition for ID " + id); } } } /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#isPresent(org.jibx.runtime.IUnmarshallingContext) */ public boolean isPresent(IUnmarshallingContext ictx) throws JiBXException { return ictx.isAt(m_uri, m_name); } /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#unmarshal(java.lang.Object, * org.jibx.runtime.IUnmarshallingContext) */ public Object unmarshal(Object obj, IUnmarshallingContext ictx) throws JiBXException { // make sure we're at the appropriate start tag UnmarshallingContext ctx = (UnmarshallingContext)ictx; if (!ctx.isAt(m_uri, m_name)) { return null; } else { // check for reference to existing ID String id = ctx.attributeText(null, getAttributeName(), null); if (id == null) { // no ID value supplied, unmarshal full definition obj = ctx.unmarshalElement(); } else { // find object based on ID obj = ctx.findID(id, 0); ctx.parsePastEndTag(m_uri, m_name); if (obj == null) { ctx.throwStartTagException("Reference to undefined ID " + id); } } } return obj; } }libjibx-java-1.1.6a/build/extras/org/jibx/extras/IdRefMapperBase.java0000644000175000017500000001351110217761632025342 0ustar moellermoeller/* Copyright (c) 2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.extras; import org.jibx.runtime.IAliasable; import org.jibx.runtime.IMarshaller; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshaller; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.MarshallingContext; import org.jibx.runtime.impl.UnmarshallingContext; /** *

Abstract base custom marshaller/unmarshaller for an object reference. This * marshals the reference as an empty element with a single IDREF attribute, and * unmarshals an element with the same structure to create a reference to the * object with that ID value. To use this class you need to create a subclass * with a constructor using the same signature as the one provided (calling the * base class constructor from your subclass constructor) and implement the * abstract {@link #getIdValue} method in your subclass. You can also override * the provided {@link #getAttributeName} method to change the name used for the * IDREF attribute. Note that this class can only be used when the definitions * precede the references in the XML document; if a referenced ID is not defined * the unmarshaller throws an exception.

* * @author Dennis M. Sosnoski * @version 1.0 */ public abstract class IdRefMapperBase implements IMarshaller, IUnmarshaller, IAliasable { private String m_uri; private int m_index; private String m_name; /** * Aliased constructor taking a name definition for the element. The * subclass version will be used by JiBX to define the element name to be * used with this custom marshaller/unmarshaller. * * @param uri namespace URI for the top-level element * @param index namespace index corresponding to the defined URI within the * marshalling context definitions * @param name local name for the top-level element */ public IdRefMapperBase(String uri, int index, String name) { m_uri = uri; m_index = index; m_name = name; } /** * Get the ID value from object being marshalled. * * @return ID value */ protected abstract String getIdValue(Object item); /** * Method which can be overridden to supply a different name for the ID * reference attribute. The attribute name used by default is just "ref". */ protected String getAttributeName() { return "ref"; } /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#isExtension(int) */ public boolean isExtension(int index) { return false; } /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#marshal(java.lang.Object, * org.jibx.runtime.IMarshallingContext) */ public void marshal(Object obj, IMarshallingContext ictx) throws JiBXException { // make sure the parameters are as expected if (obj == null) { return; } else if (!(ictx instanceof MarshallingContext)) { throw new JiBXException("Invalid context type for marshaller"); } else { // generate the element start tag MarshallingContext ctx = (MarshallingContext)ictx; ctx.startTagAttributes(m_index, m_name); // add attribute reference to object ID ctx.attribute(0, getAttributeName(), getIdValue(obj)); // close start tag for empty element ctx.closeStartEmpty(); } } /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#isPresent(org.jibx.runtime.IUnmarshallingContext) */ public boolean isPresent(IUnmarshallingContext ctx) throws JiBXException { return ctx.isAt(m_uri, m_name); } /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#unmarshal(java.lang.Object, * org.jibx.runtime.IUnmarshallingContext) */ public Object unmarshal(Object obj, IUnmarshallingContext ictx) throws JiBXException { // make sure we're at the appropriate start tag UnmarshallingContext ctx = (UnmarshallingContext)ictx; if (!ctx.isAt(m_uri, m_name)) { return null; } // get object reference for ID obj = ctx.attributeExistingIDREF(null, getAttributeName(), 0); // skip past the element ctx.parsePastEndTag(m_uri, m_name); return obj; } }libjibx-java-1.1.6a/build/extras/org/jibx/extras/JDOMWriter.java0000644000175000017500000001714510270321622024334 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.extras; import java.io.IOException; import org.jdom.CDATA; import org.jdom.Comment; import org.jdom.DocType; import org.jdom.Document; import org.jdom.Element; import org.jdom.EntityRef; import org.jdom.Namespace; import org.jdom.ProcessingInstruction; import org.jdom.Text; import org.jibx.runtime.impl.XMLWriterNamespaceBase; /** * JDOM implementation of XML writer interface. The Document that is * created can be accessed by using getDocument(). * * @author Andreas Brenk * @version 1.0 */ public class JDOMWriter extends XMLWriterNamespaceBase { /** * The JDOM Document this writer is creating. */ private Document document; /** * The currently open Element that is used for add* methods. */ private Element currentElement; /** * Creates a new instance with the given namespace URIs. */ public JDOMWriter(String[] namespaces) { super(namespaces); reset(); } /** * Creates a new instance with the given Document as target for marshalling. * * @param document must not be null */ public JDOMWriter(String[] namespaces, Document document) { this(namespaces); this.document = document; if(document.hasRootElement()) { this.currentElement = document.getRootElement(); } } /** * Creates a new instance with the given Element as target for marshalling. * * @param currentElement must not be null */ public JDOMWriter(String[] namespaces, Element currentElement) { this(namespaces, currentElement.getDocument()); this.currentElement = currentElement; } /** * Does nothing. */ public void setIndentSpaces(int count, String newline, char indent) { // do nothing } /** * Does nothing. */ public void writeXMLDecl(String version, String encoding, String standalone) throws IOException { // do nothing } public void startTagOpen(int index, String name) throws IOException { Element newElement = new Element(name, getNamespace(index)); if(this.currentElement == null) { this.document.setRootElement(newElement); } else { this.currentElement.addContent(newElement); } this.currentElement = newElement; } public void startTagNamespaces(int index, String name, int[] nums, String[] prefs) throws IOException { // find the namespaces actually being declared int[] deltas = openNamespaces(nums, prefs); // create the start tag for element startTagOpen(index, name); // add namespace declarations to open element for (int i = 0; i < deltas.length; i++) { int slot = deltas[i]; this.currentElement.addNamespaceDeclaration(getNamespace(slot)); } } public void addAttribute(int index, String name, String value) throws IOException { this.currentElement.setAttribute(name, value, getNamespace(index)); } public void closeStartTag() throws IOException { incrementNesting(); } public void closeEmptyTag() throws IOException { incrementNesting(); decrementNesting(); this.currentElement = this.currentElement.getParentElement(); } public void startTagClosed(int index, String name) throws IOException { startTagOpen(index, name); closeStartTag(); } public void endTag(int index, String name) throws IOException { decrementNesting(); this.currentElement = this.currentElement.getParentElement(); } public void writeTextContent(String text) throws IOException { this.currentElement.addContent(new Text(text)); } public void writeCData(String text) throws IOException { this.currentElement.addContent(new CDATA(text)); } public void writeComment(String text) throws IOException { this.currentElement.addContent(new Comment(text)); } public void writeEntityRef(String name) throws IOException { this.currentElement.addContent(new EntityRef(name)); } public void writeDocType(String name, String sys, String pub, String subset) throws IOException { DocType docType; if(null != pub) { docType = new DocType(name, pub, sys); } else if(null != sys) { docType = new DocType(name, sys); } else { docType = new DocType(name); } if(null != subset) { docType.setInternalSubset(subset); } this.document.setDocType(docType); } public void writePI(String target, String data) throws IOException { this.currentElement.addContent(new ProcessingInstruction(target, data)); } /** * Does nothing. */ public void indent() throws IOException { // do nothing } /** * Does nothing. */ public void flush() throws IOException { // do nothing } /** * Does nothing. */ public void close() throws IOException { // do nothing } public void reset() { super.reset(); this.document = new Document(); this.currentElement = null; } /** * @return the JDOM Document this writer created. */ public Document getDocument() { return document; } /** * Does nothing. */ protected void defineNamespace(int index, String prefix) throws IOException { // do nothing } /** * Does nothing. */ protected void undefineNamespace(int index) { // do nothing } /** * This will retrieve (if in existence) or create (if not) a * Namespace for the supplied namespace index. */ private Namespace getNamespace(int index) { String prefix = getNamespacePrefix(index); String uri = getNamespaceUri(index); if(prefix == null) { return Namespace.getNamespace(uri); } else { return Namespace.getNamespace(prefix, uri); } } } libjibx-java-1.1.6a/build/extras/org/jibx/extras/ObjectArrayMapper.java0000644000175000017500000001603510071714112025754 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.extras; import java.util.ArrayList; import org.jibx.runtime.IAliasable; import org.jibx.runtime.IMarshallable; import org.jibx.runtime.IMarshaller; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshaller; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.MarshallingContext; import org.jibx.runtime.impl.UnmarshallingContext; /** *

Custom marshaller/unmarshaller for Object[] instances. This * handles mapping arrays typed as java.lang.Object[], where each * item in the array must be of a mapped type. If a name is specified by the * mapping definition that name is used as a wrapper around the elements * representing the items in the array; otherwise, the elements are just handled * inline.

* * @author Dennis M. Sosnoski * @version 1.0 */ public class ObjectArrayMapper implements IMarshaller, IUnmarshaller, IAliasable { private static final Object[] DUMMY_ARRAY = {}; private String m_uri; private int m_index; private String m_name; private ArrayList m_holder; /** * Default constructor. This just sets up for an XML representation with no * element wrapping the actual item structures. It'll be used by JiBX when * no name information is supplied by the mapping which references this * custom marshaller/unmarshaller. */ public ObjectArrayMapper() { m_uri = null; m_index = 0; m_name = null; } /** * Aliased constructor. This takes a name definition for the top-level * wrapper element. It'll be used by JiBX when a name is supplied by the * mapping which references this custom marshaller/unmarshaller. * * @param uri namespace URI for the top-level element * @param index namespace index corresponding to the defined URI within the * marshalling context definitions * @param name local name for the top-level element */ public ObjectArrayMapper(String uri, int index, String name) { m_uri = uri; m_index = index; m_name = name; } /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#isExtension(int) */ public boolean isExtension(int index) { return false; } /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#marshal(java.lang.Object, * org.jibx.runtime.IMarshallingContext) */ public void marshal(Object obj, IMarshallingContext ictx) throws JiBXException { // make sure the parameters are as expected if (obj == null) { if (m_name == null) { throw new JiBXException ("null array not allowed without wrapper"); } } else if (!(DUMMY_ARRAY.getClass().isInstance(obj))) { throw new JiBXException("Invalid object type for marshaller"); } else if (!(ictx instanceof MarshallingContext)) { throw new JiBXException("Invalid object type for marshaller"); } else { // start by generating start tag for container MarshallingContext ctx = (MarshallingContext)ictx; Object[] array = (Object[])obj; if (m_name != null) { ctx.startTag(m_index, m_name); } // loop through all entries in array for (int i = 0; i < array.length; i++) { Object item = array[i]; if (item instanceof IMarshallable) { ((IMarshallable)item).marshal(ctx); } else if (item == null) { throw new JiBXException("Null value at offset " + i + " not supported"); } else { throw new JiBXException("Array value of type " + item.getClass().getName() + " at offset " + i + " is not marshallable"); } } // finish with end tag for container element if (m_name != null) { ctx.endTag(m_index, m_name); } } } /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#isPresent(org.jibx.runtime.IUnmarshallingContext) */ public boolean isPresent(IUnmarshallingContext ctx) throws JiBXException { return ctx.isAt(m_uri, m_name); } /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#unmarshal(java.lang.Object, * org.jibx.runtime.IUnmarshallingContext) */ public Object unmarshal(Object obj, IUnmarshallingContext ictx) throws JiBXException { // make sure we're at the appropriate start tag UnmarshallingContext ctx = (UnmarshallingContext)ictx; if (m_name != null) { if (ctx.isAt(m_uri, m_name)) { ctx.parsePastStartTag(m_uri, m_name); } else { return null; } } // create new array if needed if (m_holder == null) { m_holder = new ArrayList(); } // process all items present in document while (!ctx.isEnd()) { Object item = ctx.unmarshalElement(); m_holder.add(item); } // discard close tag if used if (m_name != null) { ctx.parsePastEndTag(m_uri, m_name); } // return array containing all items Object[] result = m_holder.toArray(); m_holder.clear(); return result; } }libjibx-java-1.1.6a/build/extras/org/jibx/extras/QName.java0000644000175000017500000001677210434260002023410 0ustar moellermoeller/* Copyright (c) 2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.extras; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.IXMLWriter; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.MarshallingContext; import org.jibx.runtime.impl.UnmarshallingContext; /** * Representation of a qualified name. This includes the serializer/deserializer * methods for the representation. It assumes that the actual namespace * declarations are being handled separately for marshalling. * * @author Dennis M. Sosnoski */ public class QName { private String m_uri; private String m_prefix; private String m_name; /** * Default constructor. */ public QName() {} /** * Constructor from full set of components. * * @param uri * @param prefix * @param name */ public QName(String uri, String prefix, String name) { m_uri = uri; m_prefix = prefix; m_name = name; } /** * Get local name. * * @return name */ public String getName() { return m_name; } /** * Set local name. * * @param name name */ public void setName(String name) { m_name = name; } /** * Get namespace prefix. * * @return prefix */ public String getPrefix() { return m_prefix; } /** * Set namespace prefix. * * @param prefix prefix */ public void setPrefix(String prefix) { m_prefix = prefix; } /** * Get namespace URI. * * @return uri */ public String getUri() { return m_uri; } /** * Set namespace URI. * * @param uri uri */ public void setUri(String uri) { m_uri = uri; } /** * JiBX deserializer method. This is intended for use as a deserializer for * instances of the class. * * @param text value text * @param ictx unmarshalling context * @return created class instance * @throws JiBXException on error in unmarshalling */ public static QName deserialize(String text, IUnmarshallingContext ictx) throws JiBXException { // check for prefix used in text representation int split = text.indexOf(':'); if (split > 0) { // strip off prefix String prefix = text.substring(0, split); text = text.substring(split+1); // make sure there aren't multiple colons if (text.indexOf(':') >= 0) { throw new JiBXException("Not a valid QName"); } else { // look up the namespace URI associated with the prefix String uri = ((UnmarshallingContext)ictx).getNamespaceUri(prefix); if (uri == null) { throw new JiBXException("Undefined prefix " + prefix); } else { // create an instance of class to hold all components return new QName(uri, prefix, text); } } } else { // get the default namespace URI String uri = ((UnmarshallingContext)ictx).getNamespaceUri(""); if (uri == null) { uri = ""; } // create an instance of class to hold all components return new QName(uri, "", text); } } /** * JiBX serializer method. This is intended for use as a serializer for * instances of the class. The namespace must be active in the output * document at the point where this is called. * * @param qname instance to be serialized * @param ictx unmarshalling context * @return created class instance * @throws JiBXException on error in marshalling */ public static String serialize(QName qname, IMarshallingContext ictx) throws JiBXException { // check if prefix is alread defined in document with correct URI IXMLWriter ixw = ((MarshallingContext)ictx).getXmlWriter(); int index = -1; int tryidx = ixw.getPrefixIndex(qname.m_prefix); if (tryidx >= 0 && qname.m_uri.equals(ixw.getNamespaceUri(tryidx))) { index = tryidx; } if (index < 0) { // prefix not defined, find the namespace index in binding String[] nss = ixw.getNamespaces(); for (int i = 0; i < nss.length; i++) { if (nss[i].equals(qname.m_uri)) { index = i; break; } } if (index < 0) { // namespace not in binding, check extensions String[][] nsss = ixw.getExtensionNamespaces(); if (nsss != null) { int base = nss.length; outer: for (int i = 0; i < nsss.length; i++) { nss = nsss[i]; for (int j = 0; j < nss.length; j++) { if (nss[j].equals(qname.m_uri)) { index = base + j; break outer; } } base += nss.length; } } } } if (index >= 0) { // get prefix defined for namespace String prefix = ixw.getNamespacePrefix(index); if (prefix == null) { throw new JiBXException("Namespace URI " + qname.m_uri + " cannot be used since it is not active"); } else if (prefix.length() > 0) { return prefix + ':' + qname.m_name; } else { return qname.m_name; } } else { throw new JiBXException("Unknown namespace URI " + qname.m_uri); } } }libjibx-java-1.1.6a/build/extras/org/jibx/extras/TestMultRoundtrip.java0000644000175000017500000001030010267760304026072 0ustar moellermoeller/* Copyright (c) 2003-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.extras; import java.io.File; /** * Test program for the JiBX framework. Works with three or four command line * arguments: mapped-class, binding-name, in-file, and out-file (optional, only * needed if different from in-file). You can also supply a multiple of four * input arguments, in which case each set of four is processed in turn (in this * case the out-file is required). Unmarshals documents from files using the * specified bindings for the mapped classes, then marshals them back out using * the same bindings and compares the results. In case of a comparison error the * output file is left as temp.xml . * * @author Dennis M. Sosnoski * @version 1.0 */ public class TestMultRoundtrip { public static void main(String[] args) { if (args.length == 3 || (args.length > 0 && args.length % 4 == 0)) { // delete generated output file if present File temp = new File("temp.xml"); if (temp.exists()) { temp.delete(); } // process input arguments int base = 0; boolean err = false; String fin = null; String fout = null; while (base < args.length) { // run test with one argument set fin = args[base+2]; fout = (args.length < base+4) ? fin : args[base+3]; try { if (!TestRoundtrip.runTest(args[base], args[base+1], fin, fout)) { err = true; } } catch (Exception ex) { ex.printStackTrace(); // System.err.println(ex.getMessage()); err = true; } // take error exit if difference found if (err) { System.err.println("Error round-tripping class: " + args[base] + "\n with input file " + fin + " and output compared to " + fout); System.err.println("Saved output document file path " + temp.getAbsolutePath()); System.exit(1); } // advance to next argument set base += 4; } } else { System.err.println("Usage: java TestMultRoundtrip mapped-class" + " binding-name in-file [out-file]\n where out-file is only" + " required if the output document is different from\nthe" + " input document. Leaves output as temp.xml in case of error"); System.exit(1); } } } libjibx-java-1.1.6a/build/extras/org/jibx/extras/TestRoundtrip.java0000644000175000017500000001613310767277356025261 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.extras; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; import java.net.URLClassLoader; import org.jibx.runtime.*; import org.jibx.runtime.impl.UnmarshallingContext; import org.xmlpull.v1.XmlPullParserException; /** * Test program for the JiBX framework. Works with two or three command line * arguments: mapped-class, in-file, and out-file (optional, only needed if * different from in-file). You can also supply a multiple of three input * arguments, in which case each set of three is processed in turn (in this case * the out-file is required). Unmarshals documents from files using the binding * defined for the mapped class, then marshals them back out using the same * bindings and compares the results. In case of a comparison error the output * file is left as temp.xml. * * @author Dennis M. Sosnoski * @version 1.0 */ public class TestRoundtrip { protected static boolean runTest(String mname, String bname, String fin, String fout) throws IOException, JiBXException, XmlPullParserException { // look up the mapped class and associated binding factory Class mclas; try { URL[] urls = new URL[] { new File(".").toURL() }; ClassLoader parent = Thread.currentThread().getContextClassLoader(); if (parent == null) { parent = TestMultRoundtrip.class.getClassLoader(); } ClassLoader loader = new URLClassLoader(urls, parent); Thread.currentThread().setContextClassLoader(loader); mclas = loader.loadClass(mname); } catch (ClassNotFoundException ex) { System.err.println("Class " + mname + " not found"); return false; } IBindingFactory bfact; if (bname == null) { bfact = BindingDirectory.getFactory(mclas); } else { bfact = BindingDirectory.getFactory(bname, mclas); } // unmarshal document to construct objects IUnmarshallingContext uctx = bfact.createUnmarshallingContext(); Object obj = uctx.unmarshalDocument(new FileInputStream(fin), null); String encoding = ((UnmarshallingContext)uctx).getInputEncoding(); if (!mclas.isInstance(obj)) { System.err.println("Unmarshalled result not expected type"); return false; } // marshal root object back out to document in memory IMarshallingContext mctx = bfact.createMarshallingContext(); mctx.setIndent(2); ByteArrayOutputStream bos = new ByteArrayOutputStream(); mctx.marshalDocument(obj, "UTF-8", null, bos); // compare with output document to be matched InputStreamReader brdr = new InputStreamReader (new ByteArrayInputStream(bos.toByteArray()), "UTF-8"); InputStreamReader frdr = new InputStreamReader (new FileInputStream(fout), encoding); DocumentComparator comp = new DocumentComparator(System.err); if (comp.compare(frdr, brdr)) { return true; } else { // save file before returning failure try { FileOutputStream fos = new FileOutputStream("temp.xml"); fos.write(bos.toByteArray()); fos.close(); } catch (IOException ex) { System.err.println("Error writing to temp.xml: " + ex.getMessage()); } return false; } } public static void main(String[] args) { if (args.length == 2 || (args.length > 0 && args.length % 3 == 0)) { // delete generated output file if present File temp = new File("temp.xml"); if (temp.exists()) { temp.delete(); } // process input arguments int base = 0; boolean err = false; String fin = null; String fout = null; while (base < args.length) { // run test with one argument set fin = args[base+1]; fout = (args.length < base+3) ? fin : args[base+2]; try { if (!runTest(args[base], null, fin, fout)) { err = true; } } catch (Exception ex) { ex.printStackTrace(); // System.err.println(ex.getMessage()); err = true; } // take error exit if difference found if (err) { System.err.println("Error round-tripping class: " + args[base] + "\n with input file " + fin + " and output compared to " + fout); System.err.println("Saved output document file path " + temp.getAbsolutePath()); System.exit(1); } // advance to next argument set base += 3; } } else { System.err.println("Usage: java TestRoundtrip mapped-class" + " in-file [out-file]\n where out-file is only required if the" + " output document is different from\nthe input document. " + "Leaves output as temp.xml in case of error"); System.exit(1); } } } libjibx-java-1.1.6a/build/extras/org/jibx/extras/TypedArrayMapper.java0000644000175000017500000002157210264402766025652 0ustar moellermoeller/* Copyright (c) 2003-2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.extras; import java.lang.reflect.Array; import java.util.ArrayList; import org.jibx.runtime.IAliasable; import org.jibx.runtime.IMarshallable; import org.jibx.runtime.IMarshaller; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshaller; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.MarshallingContext; import org.jibx.runtime.impl.UnmarshallingContext; /** *

Custom marshaller/unmarshaller for reference arrays of a particular type. * This handles mapping arrays typed as object-type[], where the * object-type is any class name (not a primitive type). All items in the * array must be of a mapped type. If a name is specified by the mapping * definition that name is used as a wrapper around the elements representing * the items in the array; otherwise, the elements are just handled inline.

* * @author Dennis M. Sosnoski * @version 1.0 */ public class TypedArrayMapper implements IMarshaller, IUnmarshaller, IAliasable { private static final Object[] DUMMY_ARRAY = {}; private String m_uri; private int m_index; private String m_name; private Object[] m_baseArray; private ArrayList m_holder; /** * Aliased constructor. This takes a name definition for the top-level * wrapper element. It'll be used by JiBX when a name is supplied by the * mapping which references this custom marshaller/unmarshaller. * * @param uri namespace URI for the top-level element * @param index namespace index corresponding to the defined URI within the * marshalling context definitions * @param name local name for the top-level element * @param type class name for type of items in array */ public TypedArrayMapper(String uri, int index, String name, String type) { // save the simple values m_uri = uri; m_index = index; m_name = name; // strip trailing array bracket sets from type (at least one) int dimen = 0; while (type.endsWith("[]")) { type = type.substring(0, type.length()-2); dimen++; } // now get the class used for array items try { // first try loading item class from context classloader Class clas = null; ClassLoader loader = Thread.currentThread().getContextClassLoader(); if (loader != null) { try { clas = loader.loadClass(type); } catch (ClassNotFoundException e) { /* fall through */ } } if (clas == null) { // if not found, try the loader that loaded this class clas = UnmarshallingContext.class.getClassLoader(). loadClass(type); } // create a dummy base array of specified type int[] dimens = new int[dimen]; m_baseArray = (Object[])Array.newInstance(clas, dimens); } catch (ClassNotFoundException e) { throw new IllegalArgumentException ("Error loading array item class " + type + ": " + e.getMessage()); } } /** * Class only constructor. This just sets up for an XML representation with * no element wrapping the actual item structures. It'll be used by JiBX * when no name information is supplied by the mapping which references this * custom marshaller/unmarshaller. * * @param type class name for type of items in array */ public TypedArrayMapper(String type) { this(null, 0, null, type); } /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#isExtension(int) */ public boolean isExtension(int index) { return false; } /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#marshal(java.lang.Object, * org.jibx.runtime.IMarshallingContext) */ public void marshal(Object obj, IMarshallingContext ictx) throws JiBXException { // make sure the parameters are as expected if (obj == null) { if (m_name == null) { throw new JiBXException ("null array not allowed without wrapper"); } } else if (!(ictx instanceof MarshallingContext)) { throw new JiBXException("Marshalling context not of expected type"); } else { // verify object as a handled array type Class clas = obj.getClass(); if (!clas.isArray()) { throw new JiBXException("Invalid object type for marshaller"); } else { // start by generating start tag for container MarshallingContext ctx = (MarshallingContext)ictx; Object[] array = (Object[])obj; if (m_name != null) { ctx.startTag(m_index, m_name); } // loop through all entries in array for (int i = 0; i < array.length; i++) { Object item = array[i]; if (item == null) { throw new JiBXException("Null value at offset " + i + " not supported"); } else if (item instanceof IMarshallable) { ((IMarshallable)item).marshal(ctx); } else { throw new JiBXException("Array item of type " + item.getClass().getName() + " does not implement " + "org.jibx.runtime.IMarshallable"); } } // finish with end tag for container element if (m_name != null) { ctx.endTag(m_index, m_name); } } } } /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#isPresent(org.jibx.runtime.IUnmarshallingContext) */ public boolean isPresent(IUnmarshallingContext ctx) throws JiBXException { return ctx.isAt(m_uri, m_name); } /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#unmarshal(java.lang.Object, * org.jibx.runtime.IUnmarshallingContext) */ public Object unmarshal(Object obj, IUnmarshallingContext ictx) throws JiBXException { // make sure we're at the appropriate start tag UnmarshallingContext ctx = (UnmarshallingContext)ictx; if (m_name != null) { if (ctx.isAt(m_uri, m_name)) { ctx.parsePastStartTag(m_uri, m_name); } else { return null; } } // create new array if needed if (m_holder == null) { m_holder = new ArrayList(); } // process all items present in document while (!ctx.isEnd()) { Object item = ctx.unmarshalElement(); m_holder.add(item); } // discard close tag if used if (m_name != null) { ctx.parsePastEndTag(m_uri, m_name); } // return array containing all items Object[] result = m_holder.toArray(m_baseArray); m_holder.clear(); return result; } }libjibx-java-1.1.6a/build/extras/org/jibx/extras/package.html0000644000175000017500000000021010071714114024006 0ustar moellermoeller Extra goodies for working with JiBX. These are helper classes that can be useful but are not core to the JiBX framework. libjibx-java-1.1.6a/build/jenable/0000755000175000017500000000000011021525446016601 5ustar moellermoellerlibjibx-java-1.1.6a/build/jenable/JEnable.class0000644000175000017500000002601410434261436021136 0ustar moellermoellerÊþº¾-õ ¦ù ú û ü ý þ ÿ   ù        8  8 8   8  !ù  Œ ! — ! !! ¦"# !$ 8"% Œ& 8' ( )* N+ @, Œ-./ N0 H1 H2 834 H567 A8 @9:; —& 8<= H>?@ HA HBCD O8 NE F @G NG HH HI HJ HK HLM HN HOPQ ^8R `8 ST UV UG SG HW HXYZ[\]^ _`a bcde _fg hi j 8k 8l Hmn o Hp q r s t Hu H vwxyz{ ‡ | Œ}~ Œù €‚ƒ„ …†‡ˆ‰ —ù ŒŠ —‹Œ Ž  ‘ _’  “” £•–— OPTION_LEADLjava/lang/String; ConstantValue LEAD_LENGTHICOPY_BUFFER_SIZE NOT_OPTION FILE_OPTIONBLOCK_START_OPTIONBLOCK_ELSE_OPTIONBLOCK_END_OPTIONBLOCK_COMMENT_OPTIONFILE_OPTION_ERRNESTED_SAME_ERR INDETERM_ERRUNBALANCED_ERR BADELSE_ERR UNCLOSED_ERRUNKNOWN_OPTION_ERR EXTENSION_ERRBACKUP_DIR_ERR˜OLD_BACKUP_ERRBACKUP_FILE_ERR DELETE_ERR RENAME_ERRTEMP_RENAME_ERRTEMP_DELETE_ERR STAMP_ERR DUAL_USE_ERR™ m_keepStampZ m_markBackupm_listModifiedm_listProcessed m_listSummary m_backupDirLjava/io/File;m_enabledTokensLjava/util/Hashtable;m_disabledTokensm_matchedCountm_modifiedCountm_tokenm_invert m_endOffset@(ZZZZZLjava/io/File;Ljava/util/Hashtable;Ljava/util/Hashtable;)VCodeisTokenLeadChar(C)ZisTokenBodyChar throwError((ILjava/lang/String;Ljava/lang/String;)V ExceptionscheckOptionLine(ILjava/lang/String;)I processStreamE(Ljava/io/BufferedReader;Ljava/lang/String;Ljava/io/BufferedWriter;)Z processFile(Ljava/io/File;)Z isPathMatch'(Ljava/lang/String;Ljava/lang/String;)Z isNameMatchmatchPathSegment#(Ljava/io/File;Ljava/lang/String;)V processPath(Ljava/lang/String;)VparseTokenList'(Ljava/lang/String;Ljava/util/Vector;)Vmain([Ljava/lang/String;)V()V Ýø ÍÎ ÏÎ ÐÎ ÑÎ ÒÎ ÓÔ ÕÖ ×Öjava/io/IOExceptionjava/lang/StringBufferError on input line š› šœ, : ž Ýò Ú¨ ÛÎ Ü« Ÿ  ª«//# ¡¢ £¤ àá âá ¥¦unknown option line type ãäjava/util/Stack æç,file option token must be first line of file §¨@block option start cannot be nested within block with same token ©ª «¬ ­®Cblock option token within enabled block must be enabled or disabled ¯° ±¬(block option else without matching start ²°'block option end without matching start ³¬ ¥´ šµ¶ ·ò ¸ø ¹ž º java/lang/Stringend of file with open block »ø ¼ž ½ž ¾¿ ÀÁjava/io/BufferedReaderjava/io/FileReader Ý ÝÃjavajavx §¿ java/io/File ÝÄ"unknown file option line extensionsop ÅÆ ÇÈjava/io/BufferedWriterjava/io/FileWriter ÝÉ èé Êø Ëž ÌÍ Ýð ή Ï®"unable to create backup directory О Ñ® unable to delete old backup filejava/io/FileInputStreamjava/io/FileOutputStreamÒ ·ÓÔ ÕÖ ×Ø Ùë unable to rename file for backupunable to delete input file&unable to change file modify timestampunable to rename temp file&unable to delete temporary output fileunable to rename source fileÚ ÛÜ modified file Ý Þò checked file java/lang/Exception ßÜError processing à áž ìí §â 㢠äå** ïð æ® îí Ø« êë Ù« ç¨. matched  files and modified  for path: "java/lang/IllegalArgumentExceptionEmpty token not allowed: "Illegal character in token: " è¬java/util/Vectoré êë)Backup directory path must be a directoryjava/lang/SecurityException!Unable to access backup directory$Missing directory path for -b option óôMissing token list for - optionUnknown option -java/util/Hashtable ìí îï0Same token cannot be both enabled and disabled: šðJEnable ÝÞ ñòjava/io/InputStreamReader ñò Ýójava/io/OutputStreamWriter Ýô JEnable Java source configuration processor version 0.8 Usage: JEnable [-options] path-list Options are: -b backup directory tree (base directory is next argument) -d disabled token list (comma-separated token name list is next argument) -e enabled token list (comma-separated token name list is next argument) -m list modified files as they're processed -p preserve timestamp on modified files -q quiet mode, do not print file summary by path -t backup modified files in same directory with '~' suffix -v verbose listing of all files processed (modified or not) These options may be concatenated together with a single leading dash. Path lists may include '*' wildcards, and may consist of multiple paths separated by ',' characters. The special directory pattern '**' matches any number of intervening directories. Any number of path list parameters may be supplied. java/lang/Object!unable to create backup directory.Same token cannot be both enabled and disabledappend,(Ljava/lang/String;)Ljava/lang/StringBuffer;(I)Ljava/lang/StringBuffer;toString()Ljava/lang/String;length()I startsWith(Ljava/lang/String;)ZcharAt(I)C substring(II)Ljava/lang/String;indexOf(Ljava/lang/Object;)Ipush&(Ljava/lang/Object;)Ljava/lang/Object; containsKey(Ljava/lang/Object;)Zempty()Zpeek()Ljava/lang/Object;equalspopcontains(I)Ljava/lang/String;(C)Ljava/lang/StringBuffer;java/io/WriterwritenewLinereadLinesizeflushgetName getParent lastIndexOf(I)I lastModified()J(Ljava/io/File;)V(Ljava/io/Reader;)V'(Ljava/lang/String;Ljava/lang/String;)V getParentFile()Ljava/io/File;createTempFileB(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Ljava/io/File;(Ljava/io/Writer;)VclosegetCanonicalPath separatorCharCexistsmkdirsgetPathdeletejava/io/OutputStream([BII)Vjava/io/InputStreamread([B)IsetLastModified(J)ZrenameTojava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintlnerrjava/lang/Throwable getMessage(Ljava/lang/String;I)IendsWith listFiles()[Ljava/io/File; isDirectory separatoraddjava/lang/Character toLowerCase(C)C elementAt(I)Ljava/lang/Object;put8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;,(Ljava/lang/Object;)Ljava/lang/StringBuffer;inLjava/io/InputStream;(Ljava/io/InputStream;)V(Ljava/io/OutputStream;)V!¦'§¨©ª«¬«©­®«©¯°«©±²«©³´«©µ¶«©·¸«©¹º¨©$»¨©&¼¨©*½¨©0¾¨©-¿¨©9À¨©Á¨©J¨©ÃĨ©]Ũ©hƨ©iǨ©mȨ©kɨ©lʨ©j˨©ÌÍÎÏÎÐÎÑÎÒÎÓÔÕÖ×ÖØ«Ù«Ú¨ÛÎÜ«ÝÞßF :*·*µ*µ*µ*µ*š§µ*µ*µ*µ ± àáß0$a¡ z¤A¡ Z¤ _ §¬ âáß<0a¡ z¤!A¡ Z¤_Ÿ0¡ 9£§¬ãäß9-» Y» Y·  ¶¶¶-¶¶,¶¶·¿å æçß8 ,>*µ*µ*µ,¶²¤,¶™ ²6,¶6!Ÿ }  „§66,¶¸™Õ²`6§Â,„¶6¸š¯*,d¶µ*µ«‹*):y{J}g>!  *µ§h™c*,¶ §X} >§L! *µ>§;>™4*,¶ §)>™"*,¶ §*,¶ § ,¶¡ÿ;¬å èéßwk»!Y·":»!Y·"::6,:6 §)6 * ¶#6  ªÍ(.AË6—6 §¬ ¤¦* $¶ §™*´¶%›* &¶ §€*´¶'WÇq*´*´¶(6 *´ *´¶(6 *´™ 6 6 6  ™ *´:§6 ™*´¶'W§$¶)š* *¶ §¶)š¶+*´¶,š* -¶ §ëÇ)¶)šÞ¶+*´¶,™Ï¶.W*´:§À*´¶/™´:*´¶'W§¤¶)š¶+*´¶,š* 0¶ §€¶.WÇ#¶)šm¶+*´¶,™^¶.W§U*´¶/™I:§CÆ*´¶/™Ç-*´¶1™!*´¶2:6 6§ * ¶  š+Æ&» Y· ¶¶:¶3¶¶:6-¶4-¶5+¶6:„ Çýض7ž* ¶.À89¶ -¶:¬å êëßáÅM+¶;N+¶<:-.¶=6›-`¶2§>::*´™ +¶?§ 7+: »@Y»AY+·B·C:  ¶6: * ¶#6    D¶/š E¶/™‚*´*´¶F™*´™E§D:§!*´ *´¶F™*´™D§E:¶/šC-.¶G6» Y· -¶¶.¶3¶¶N»HY-·I: § » YJ·¿6E¶/šçK+¶L¸MM»NY»OY,·P·Q:*  ¶R6 ¶S¶T™d*´ÆÌ+¶U:²V¶G6›`¶2:»HY*´·W:¶L:¶Xš*¶Yš"» Y» Y· Z¶¶[¶¶·¿¶X™¶\š » Y]·¿¼:»^Y+·_:»`Y·a:§ ¶b¶cY6œÿì¶d¶e+¶?¶fW*´™N»HY» Y· -¶~¶3¶·I:¶X™¶\š » Y]·¿+¶gš» Yh·¿+¶\š » Yi·¿, ¶g™*´™­ ¶f𣻠Yj·¿» Yk·¿,¶\š » Yl·¿¶/št+ ¶g™!6*´™a ¶fšW» Yj·¿» Ym·¿¶/š9 ¶S+ ¶g™!6*´™! ¶fš» Yj·¿» Ym·¿™0*´š *´™"²n» Y· o¶+¶[¶¶¶p§&*´™²n» Y· q¶+¶[¶¶¶p¬N²s» Y· t¶+¶[¶¶¶p²s-¶u¶p,Æ ,¶\W§:¬ŽŽr¹¾Árìíß¶,¶š+¶š§¬,¶* f,¶ ¬,¶2M,*¶G>žE,¶:,¶2M6§¶`6*+¶2,¶v™¬+„¶wY6ÿا<+,¶x¬,*¶G>ž%,¶:+¶™*+¶2,¶2¶v¬¬+,¶/¬¬îíßpd,.¶G›(++¶d¶~ ,,¶d¶~ >*+,¶v¬+.¶=>›,+`¶2:D¶/š E¶/™*+¶,¶v¬¬ïðßèÜ+¶yN,/¶G6›„,¶:,`¶2:z¶/™0*+¶{6§-2¶|™ *-2,¶{„-¾¡ÿæ§‚6§*-2¶|™*-2¶;¶v™ *-2¶{„-¾¡ÿÕ§K6§>-2¶|š1*-2¶;,¶}™"*Y´~`µ~*-2¶™ *Y´€`µ€„-¾¡ÿÁ±ñòß„x+¶žs+¶/ *»HY²·‚+¶2¶{§*»HYƒ·‚+¶{*´™>²n» Y· „¶*´~¶…¶*´€¶†¶+¶¶¶p*µ~*µ€± óôß·«§£*,¶G=š#»‡Y» Y· ˆ¶*¶"¶3¶·‰¿ž*¶N*`¶2K§*N>K6§H-¶6𠏙ž+¸š#»‡Y» Y· ж-¶"¶3¶·‰¿„-¶¡ÿµ+-¶‹W*¶ÿ\± õößJ &*¾ž<=>666:»ŒY·:»ŒY·: 6 §p* „ 2: 6 §W  „ ¶¸Ž6  ª(bva(££((((((((( (((" *¾¢3»HY* „ 2·‚:¶|š ²s¶p§»:²s‘¶p§®²s’¶p§£ *¾¢E d  §:* „ 2¸“§:²s¶u¶p± d  : §a:§Z²s» Y· ”¶ ¶3•¶¶¶p±=§56§/>§*6§$6§²s» Y· –¶ ¶3¶¶p±  ¶¡þ¥ *¾¢* 2¶-Ÿþ‚»—Y·˜: 6 § ¶™:    ¶šW„  ¶7¡ÿã»—Y·˜: 6§> ¶™: ¶šW ¶(™²s» Y· ›¶¶œ¶¶p±„ ¶7¡ÿ¾»Y  ·ž: *¾¢L§?* „ 2:§¶:¶Ÿ`¶2:,¶GY6ÿÚ¶Ÿ *¾¡ÿÀ§Ž»@Y» Y²¡·¢·C:»NY»£Y²n·¤·Q:¶6:¶#6 *´™ ´¶F§  ´¶F6™±¶RW§:²s¶u¶p§ ²s¥¶p±·×Ú ‡À  ÷øß ¶³±libjibx-java-1.1.6a/build/jenable/JEnable.java0000644000175000017500000010462310541603272020752 0ustar moellermoeller/* * Copyright (c) 2000-2001 Sosnoski Software Solutions, Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS * IN THE SOFTWARE. */ import java.io.*; import java.util.*; /** * Source configuration processor program. This program processes a set of Java * source files (or standard input to standard output, if no source files are * specified), scanning for configuration control lines. A control line is a * line that starts with "//#token*" (valid only as the first line of a * file), "//#token{" (beginning an option block), "//#}token{" (inverting an * option block), or "//#token} (closing an option block). The first two formats * also allow a '!' immediately before the token in order to invert the token * state.

* * The token strings to be processed are specified on the command line as * either enabled or disabled. See the program documentation for more details * of the command line options and usage.

* * Nested option blocks are allowed, but overlapping option blocks are an * error. In order to ensure proper processing of nested option blocks, the * user should generally specify every token used for the nested blocks * as either enabled or disabled if any of them are either enabled or * disabled. It is an error if an indeterminant beginning of block token (one * with a token which is not on either list) is immediately contained within * a block with an enabled token. In other words, the case: *

 *   //#a{
 *   //#b{
 *   //#c{
 *	 //#c}
 *	 //#b}
 *	 //#a}
 * 
* gives an error if "a" is on the enabled list and "b" is not on either list, * or if "a" is not on the disabled list, "b" is on the enabled list, and "c" * is not on either list. * * @author Dennis M. Sosnoski * @version 0.8 */ public class JEnable { /** Lead text for option token. */ protected static final String OPTION_LEAD = "//#"; /** Length of lead text for option token. */ protected static final int LEAD_LENGTH = OPTION_LEAD.length(); /** Size of buffer used to copy file. */ protected static final int COPY_BUFFER_SIZE = 4096; /** Return code for not an option line. */ protected static final int NOT_OPTION = 0; /** Return code for file option line. */ protected static final int FILE_OPTION = 1; /** Return code for block start option line. */ protected static final int BLOCK_START_OPTION = 2; /** Return code for block else option line. */ protected static final int BLOCK_ELSE_OPTION = 3; /** Return code for block end option line. */ protected static final int BLOCK_END_OPTION = 4; /** Return code for block comment option line. */ protected static final int BLOCK_COMMENT_OPTION = 5; /** Error text for file option not on first line. */ protected static final String FILE_OPTION_ERR = "file option token must be first line of file"; /** Error text for token nested within block for same token. */ protected static final String NESTED_SAME_ERR = "block option start cannot be nested within block with same token"; /** Error text for indeterminant token nested in enabled block. */ protected static final String INDETERM_ERR = "block option token within enabled block must be enabled or disabled"; /** Error text for block end token not matching block start token. */ protected static final String UNBALANCED_ERR = "block option end without matching start"; /** Error text for block else token not matching block start token. */ protected static final String BADELSE_ERR = "block option else without matching start"; /** Error text for end of file with open block. */ protected static final String UNCLOSED_ERR = "end of file with open block"; /** Error text for unknown option token type. */ protected static final String UNKNOWN_OPTION_ERR = "unknown option line type"; /** Error text for file option line with unknown file extension. */ protected static final String EXTENSION_ERR = "unknown file option line extension"; /** Error text for unable to rename file to backup directory. */ protected static final String BACKUP_DIR_ERR = "unable to create backup directory"; /** Error text for unable to delete old backup file. */ protected static final String OLD_BACKUP_ERR = "unable to delete old backup file"; /** Error text for unable to rename file within directory. */ protected static final String BACKUP_FILE_ERR = "unable to rename file for backup"; /** Error text for unable to delete original file. */ protected static final String DELETE_ERR = "unable to delete input file"; /** Error text for unable to rename original file. */ protected static final String RENAME_ERR = "unable to rename source file"; /** Error text for unable to rename temp file. */ protected static final String TEMP_RENAME_ERR = "unable to rename temp file"; /** Error text for unable to delete temporary file. */ protected static final String TEMP_DELETE_ERR = "unable to delete temporary output file"; /** Error text for unable to change file modify timestamp. */ protected static final String STAMP_ERR = "unable to change file modify timestamp"; /** Error text for token in both sets. */ protected static final String DUAL_USE_ERR = "Same token cannot be both enabled and disabled"; /** Preserve timestamp on modified files flag. */ protected boolean m_keepStamp; /** Mark backup file with tilde flag. */ protected boolean m_markBackup; /** List modified files flag. */ protected boolean m_listModified; /** List all files processed flag. */ protected boolean m_listProcessed; /** List file summary by path flag. */ protected boolean m_listSummary; /** Backup root path (null if not backing up). */ protected File m_backupDir; /** Map for enabled tokens (values same as keys). */ protected Hashtable m_enabledTokens; /** Map for disabled tokens (values same as keys). */ protected Hashtable m_disabledTokens; /** Number of files matched. */ protected int m_matchedCount; /** Number of files modified. */ protected int m_modifiedCount; /** Current option token, set by check method. */ private String m_token; /** Inverted token flag, set by check method. */ private boolean m_invert; /** Offset past end of token in line, set by check method. */ private int m_endOffset; /** * Constructor. * * @param keep preserve timestamp on modified files flag * @param mark mark backup files with tilde flag * @param mods list modified files flag * @param quiet do not list file summaries by path flag * @param verbose list all files processed flag * @param backup root back for backup directory tree (null if * no backups) * @param enabled map of enabled tokens * @param disabled map of disabled tokens */ protected JEnable(boolean keep, boolean mark, boolean mods, boolean quiet, boolean verbose, File backup, Hashtable enabled, Hashtable disabled) { m_keepStamp = keep; m_markBackup = mark; m_listModified = mods; m_listProcessed = verbose; m_listSummary = !quiet; m_backupDir = backup; m_enabledTokens = enabled; m_disabledTokens = disabled; } /** * Checks for valid first character of token. The first character must be * an alpha or underscore. * * @param chr character to be validated * @return true if valid first character, false * if not */ protected static boolean isTokenLeadChar(char chr) { return (chr >= 'a' && chr <= 'z') || (chr >= 'A' && chr <= 'Z') || chr == '_'; } /** * Checks for valid body character of token. All body characters must be * an alpha, digits, or underscore. * * @param chr character to be validated * @return true if valid body character, false * if not */ protected static boolean isTokenBodyChar(char chr) { return (chr >= 'a' && chr <= 'z') || (chr >= 'A' && chr <= 'Z') || chr == '_' || (chr >= '0' && chr <= '9'); } /** * Convenience method for generating an error report exception. * * @param lnum line number within file * @param line source line to check for option * @param msg error message text * @throws IOException wrapping the error information */ protected void throwError(int lnum, String line, String msg) throws IOException { throw new IOException("Error on input line " + lnum + ", " + msg + ":\n" + line); } /** * Check if line is an option. Returns a code for the option line type * (or "not an option line"), with the actual token from the line stored * in the instance variable. Ugly technique, but the only easy way to * return multiple results without using another class. * * @param lnum line number within file (used for error reporting) * @param line source line to check for option * @return return code for option line type * @throws IOException on option line error */ protected int checkOptionLine(int lnum, String line) throws IOException { // check if line is a candidate for option token int type = NOT_OPTION; m_token = null; m_invert = false; m_endOffset = 0; if (line.length() > LEAD_LENGTH && line.startsWith(OPTION_LEAD)) { // check for special leading character before token int offset = LEAD_LENGTH; char lead = line.charAt(offset); if (lead == '!' || lead == '}') { offset++; } else { lead = 0; } // make sure a valid token start character follows int start = offset; if (isTokenLeadChar(line.charAt(start))) { // parse the token characters int scan = LEAD_LENGTH+1; while (scan < line.length()) { char chr = line.charAt(scan++); if (!isTokenBodyChar(chr)) { // token found, classify and set type m_token = line.substring(start, scan-1); m_endOffset = scan; switch (chr) { case '*': // file option, inverted token is only variation type = FILE_OPTION; if (lead == '!') { m_invert = true; } else if (lead != 0) { throwError(lnum, line, UNKNOWN_OPTION_ERR); } break; case '{': // block start option, check variations if (lead == '}') { type = BLOCK_ELSE_OPTION; } else { if (lead == '!') { m_invert = true; } type = BLOCK_START_OPTION; } break; case '}': // block end option, no variations allowed type = BLOCK_END_OPTION; if (lead != 0) { throwError(lnum, line, UNKNOWN_OPTION_ERR); } break; case ':': // block comment option, no variations allowed type = BLOCK_COMMENT_OPTION; if (lead != 0) { throwError(lnum, line, UNKNOWN_OPTION_ERR); } break; default: // no idea what this is supposed to be throwError(lnum, line, UNKNOWN_OPTION_ERR); break; } break; } } } } return type; } /** * Processes source options for a text stream. If an error occurs in * processing, this generates an IOException with the error * information (including input line number). * * @param in input reader for source data * @param lead first line of file (previously read for checking file enable * or disable) * @param out output writer for modified source data * @return true if source modified, false if not */ protected boolean processStream(BufferedReader in, String lead, BufferedWriter out) throws IOException { // initialize state information Stack enables = new Stack(); Stack nests = new Stack(); String disable = null; boolean changed = false; // basic file line copy loop String line = lead; int lnum = 1; while (line != null) { // process based on option type boolean option = true; int type = checkOptionLine(lnum, line); switch (type) { case NOT_OPTION: option = false; break; case FILE_OPTION: // file option processed outside, but must be first line if (lnum > 1) { throwError(lnum, line, FILE_OPTION_ERR); } break; case BLOCK_START_OPTION: // option block start token, must not be duplicated if (nests.indexOf(m_token) >= 0) { throwError(lnum, line, NESTED_SAME_ERR); } else { // push to nesting stack and check if we're handling nests.push(m_token); if (disable == null) { // see if we know about this token boolean on = m_enabledTokens.containsKey(m_token); boolean off = m_disabledTokens.containsKey(m_token); // swap flags if inverted token if (m_invert) { boolean hold = on; on = off; off = hold; } // handle start of block if (off) { // set disabling option disable = m_token; } else if (on) { // stack enabled option enables.push(m_token); } else if (!enables.empty()) { // error if unknown inside enable throwError(lnum, line, INDETERM_ERR); } } } break; case BLOCK_ELSE_OPTION: // option block else, must match top of nesting stack if (nests.empty() || !nests.peek().equals(m_token)) { throwError(lnum, line, BADELSE_ERR); } else { // reverse current state, if known if (disable == null) { // enabled state, check if top of stack if (!enables.empty()) { if (enables.peek().equals(m_token)) { // flip to disable state enables.pop(); disable = m_token; } } } else if (disable.equals(m_token)) { // flip to enable state disable = null; enables.push(m_token); } } break; case BLOCK_END_OPTION: // option block end, must match top of nesting stack if (nests.empty() || !nests.peek().equals(m_token)) { throwError(lnum, line, UNBALANCED_ERR); } else { // remove from nesting stack and check state nests.pop(); if (disable == null) { // enabled state, check if top of stack if (!enables.empty()) { if (enables.peek().equals(m_token)) { enables.pop(); } } } else if (disable.equals(m_token)) { disable = null; } } break; case BLOCK_COMMENT_OPTION: // disabled line option, check if clearing if ((disable != null && !disable.equals(m_token)) || (disable == null && enables.contains(m_token))) { // clear disabled line option line = line.substring(m_endOffset); option = false; changed = true; } break; default: throwError(lnum, line, UNKNOWN_OPTION_ERR); } // check for disabling lines if (!option && disable != null) { // change line to disabled state line = OPTION_LEAD + disable + ':' + line; changed = true; } // write (possibly modified) line to output out.write(line); out.newLine(); // read next line of input line = in.readLine(); lnum++; } // check for valid end state if (nests.size() > 0) { throwError(lnum, (String)nests.pop(), UNCLOSED_ERR); } out.flush(); return changed; } /** * Processes source options for a file. Starts by checking the first line * of the file for a file option and processing that. If, after processing * the file option, the file has a ".java" extension, it is processed for * other option lines.

* * This saves the output to a temporary file, then if processing is * completed successfully first renames or moves the original file (if * backup has been requested), or deletes it (if backup not requested), * and then renames the temporary file to the original file name.

* * Processing errors are printed to System.err, and any * results are discarded without being saved. * * @param file source file to be processed * @return true if source modified, false if not */ protected boolean processFile(File file) { File temp = null; try { // set up basic information String name = file.getName(); String dir = file.getParent(); int split = name.lastIndexOf('.'); String ext = (split >= 0) ? name.substring(split+1) : ""; String toext = ext; long stamp = m_keepStamp ? file.lastModified() : 0; File target = file; // check first line for file option BufferedReader in = new BufferedReader(new FileReader(file)); String line = in.readLine(); int type = checkOptionLine(1, line); if (type == FILE_OPTION) { // make sure we have one of the extensions we know about if (ext.equals("java") || ext.equals("javx")) { // set "to" extension based on option setting if (m_enabledTokens.contains(m_token)) { toext = m_invert ? "javx" : "java"; } else if (m_disabledTokens.contains(m_token)) { toext = m_invert ? "java" : "javx"; } // generate new target file name if different extension if (!toext.equals(ext)) { split = name.indexOf('.'); name = name.substring(0, split) + '.' + toext; target = new File(dir, name); } } else { throw new IOException(EXTENSION_ERR); } } // check if extension valid for processing boolean changed = false; if (!toext.equals("javx")) { // set up output to temporary file in same directory temp = File.createTempFile("sop", null, file.getParentFile()); BufferedWriter out = new BufferedWriter(new FileWriter(temp)); // process the file for changes changed = processStream(in, line, out); in.close(); out.close(); if (changed) { // handle backup of original file if (m_backupDir != null) { // construct path within backup directory String extra = file.getCanonicalPath(); int mark = extra.indexOf(File.separatorChar); if (mark >= 0) { extra = extra.substring(mark+1); } File backup = new File(m_backupDir, extra); // copy file to backup directory File backdir = backup.getParentFile(); if (!backdir.exists() && !backdir.mkdirs()) { throw new IOException(BACKUP_DIR_ERR + '\n' + backdir.getPath()); } if (backup.exists()) { if (!backup.delete()) { throw new IOException(OLD_BACKUP_ERR); } } byte[] buff = new byte[COPY_BUFFER_SIZE]; InputStream is = new FileInputStream(file); OutputStream os = new FileOutputStream(backup); int bytes; while ((bytes = is.read(buff)) >= 0) { os.write(buff, 0, bytes); } is.close(); os.close(); backup.setLastModified(file.lastModified()); } if (m_markBackup) { // suffix file name with tilde File backup = new File(dir, name+'~'); if (backup.exists()) { if (!backup.delete()) { throw new IOException(OLD_BACKUP_ERR); } } if (!file.renameTo(backup)) { throw new IOException(BACKUP_FILE_ERR); } } else { // just delete the original file if (!file.delete()) { throw new IOException(DELETE_ERR); } } // rename temp to target name if (temp.renameTo(target)) { if (m_keepStamp && !target.setLastModified(stamp)) { throw new IOException(STAMP_ERR); } } else { throw new IOException(TEMP_RENAME_ERR); } } else { // just discard the temporary output file if (!temp.delete()) { throw new IOException(TEMP_DELETE_ERR); } // check if file needs to be renamed if (!toext.equals(ext)) { // just rename file for file option result if (file.renameTo(target)) { changed = true; if (m_keepStamp && !target.setLastModified(stamp)) { throw new IOException(STAMP_ERR); } } else { throw new IOException(RENAME_ERR); } } } } else if (!toext.equals(ext)) { // just rename file for file option result in.close(); if (file.renameTo(target)) { changed = true; if (m_keepStamp && !target.setLastModified(stamp)) { throw new IOException(STAMP_ERR); } } else { throw new IOException(RENAME_ERR); } } // check file listing if (changed && (m_listProcessed || m_listModified)) { System.out.println(" modified file " + file.getPath()); } else if (m_listProcessed) { System.out.println(" checked file " + file.getPath()); } return changed; } catch (Exception ex) { // report error System.err.println("Error processing " + file.getPath()); System.err.println(ex.getMessage()); // discard temporary output file if (temp != null) { try { temp.delete(); } catch (Exception ex2) {} } return false; } } /** * Checks if file or directory name directly matches a pattern. This * method accepts one or more '*' wildcard characters in the pattern, * calling itself recursively in order to handle multiple wildcards. * * @param name file or directory name * @param pattern match pattern * @return true if any pattern matched, false * if not */ protected boolean isPathMatch(String name, String pattern) { // check special match cases first if (pattern.length() == 0) { return name.length() == 0; } else if (pattern.charAt(0) == '*') { // check if the wildcard is all that's left of pattern if (pattern.length() == 1) { return true; } else { // check if another wildcard follows next segment of text pattern = pattern.substring(1); int split = pattern.indexOf('*'); if (split > 0) { // recurse on each match to text segment String piece = pattern.substring(0, split); pattern = pattern.substring(split); int offset = -1; while ((offset = name.indexOf(piece, ++offset)) > 0) { int end = offset + piece.length(); if (isPathMatch(name.substring(end), pattern)) { return true; } } } else { // no more wildcards, need exact match to end of name return name.endsWith(pattern); } } } else { // check for leading text before first wildcard int split = pattern.indexOf('*'); if (split > 0) { // match leading text to start of name String piece = pattern.substring(0, split); if (name.startsWith(piece)) { return isPathMatch(name.substring(split), pattern.substring(split)); } else { return false; } } else { // no wildcards, need exact match return name.equals(pattern); } } return false; } /** * Checks if file name matches a pattern. This works a little differently * from the general path matching in that if the pattern does not include * an extension both ".java" and ".javx" file extensions are matched. If * the pattern includes an extension ending in '*' it is blocked from * matching with a tilde final character in the file name as a special case. * * @param name file or directory name * @param pattern match pattern * @return true if any file modified, false if not */ protected boolean isNameMatch(String name, String pattern) { // check for extension included in pattern if (pattern.indexOf('.') >= 0) { // pattern includes extension, use as is except for tilde endings if (name.charAt(name.length()-1) != '~' || pattern.charAt(pattern.length()-1) == '~') { return isPathMatch(name, pattern); } } else { // split extension from file name int split = name.lastIndexOf('.'); if (split >= 0) { // check for valid extension with match on name String ext = name.substring(split+1); if (ext.equals("java") || ext.equals("javx")) { return isPathMatch(name.substring(0, split), pattern); } } } return false; } /** * Process files matching path segment. This method matches a single step * (directory specification) in a path for each call, calling itself * recursively to match the complete path. * * @param base base directory for path match * @param path file path remaining to be processed */ protected void matchPathSegment(File base, String path) { // find break for leading directory if any in path File[] files = base.listFiles(); int split = path.indexOf('/'); if (split >= 0) { // split off the directory and check it String dir = path.substring(0, split); String next = path.substring(split+1); if (dir.equals("**")) { // match directly against files in this directory matchPathSegment(base, next); // walk all directories in tree under this one for (int i = 0; i < files.length; i++) { if (files[i].isDirectory()) { matchPathSegment(files[i], path); } } } else { // try for concrete match to directory for (int i = 0; i < files.length; i++) { if (files[i].isDirectory()) { if (isPathMatch(files[i].getName(), dir)) { matchPathSegment(files[i], next); } } } } } else { // match directly against files in this directory for (int i = 0; i < files.length; i++) { if (!files[i].isDirectory()) { if (isNameMatch(files[i].getName(), path)) { m_matchedCount++; if (processFile(files[i])) { m_modifiedCount++; } } } } } } /** * Process all files matching path and print summary. The file path * format is similar to Ant, supporting arbitrary directory recursion using * '**' separators between '/' separators. Single '*'s may be used within * names for wildcarding, but aside from the special case of the directory * recursion matcher only one '*' may be used per name.

* * If an extension is * not specified for the final name in the path both ".java" and ".javx" * extensions are checked, but after checking for file option lines (which * may change the file extension) only ".java" extensions are processed for * other source options. * * @param path file path to be processed */ protected void processPath(String path) { // make sure we have something to process if (path.length() > 0) { // begin matching from root or current directory if (path.charAt(0) == '/') { matchPathSegment(new File(File.separator), path.substring(1)); } else { matchPathSegment(new File("."), path); } // print summary information for path if (m_listSummary) { System.out.println(" matched " + m_matchedCount + " files and modified " + m_modifiedCount + " for path: " + path); m_matchedCount = 0; m_modifiedCount = 0; } } } /** * Parse comma-separated token list. Parses and validates the tokens, * adding them to the supplied list. errors are signalled by throwing * IllegalArgumentException. * * @param list comma-separated token list to be parsed * @param tokens list of tokens to add to * @throws IllegalArgumentException on error in supplied list */ protected static void parseTokenList(String list, Vector tokens) { // accumulate comma-delimited tokens from list while (list.length() > 0) { // find end for next token int mark = list.indexOf(','); String token; if (mark == 0) { throw new IllegalArgumentException("Empty token not " + "allowed: \"" + list + '"'); } else if (mark > 0) { // split token off list token = list.substring(0, mark); list = list.substring(mark+1); } else { // use rest of list as final token token = list; list = ""; } // validate the token for (int i = 0; i < token.length(); i++) { char chr = token.charAt(i); if ((i == 0 && !isTokenLeadChar(chr)) || (i > 0 && !isTokenBodyChar(chr))) { throw new IllegalArgumentException("Illegal " + "character in token: \"" + token + '"'); } } // add validated token to list tokens.add(token); } } /** * Test driver, just reads the input parameters and executes the source * checks. * * @param argv command line arguments */ public static void main(String[] argv) { if (argv.length > 0) { // parse the leading command line parameters boolean valid = true; boolean keep = false; boolean listmod = false; boolean quiet = false; boolean tilde = false; boolean verbose = false; File backup = null; Vector enables = new Vector(); Vector disables = new Vector(); int anum = 0; while (anum < argv.length && argv[anum].charAt(0) == '-') { String arg = argv[anum++]; int cnum = 1; while (cnum < arg.length()) { char option = Character.toLowerCase(arg.charAt(cnum++)); switch (option) { case 'b': if (anum < argv.length) { try { backup = new File(argv[anum++]); if (!backup.isDirectory()) { System.err.println("Backup directory " + "path must be a directory"); } } catch (SecurityException ex) { System.err.println("Unable to access " + "backup directory"); } } else { System.err.println("Missing directory path " + "for -b option"); } break; case 'd': case 'e': if (anum < argv.length) { // accumulate comma-delimited tokens from list Vector tokens = (option == 'd') ? disables : enables; try { parseTokenList(argv[anum++], tokens); } catch (IllegalArgumentException ex) { System.err.println(ex.getMessage()); return; } if (option == 'd') { disables = tokens; } else { enables = tokens; } } else { System.err.println("Missing token list for -" + option + " option"); return; } break; case 'p': keep = true; break; case 'q': quiet = true; break; case 'm': listmod = true; break; case 't': tilde = true; break; case 'v': verbose = true; break; default: System.err.println("Unknown option -" + option); return; } } } // build hashsets of the tokens, checking for overlap Hashtable enabled = new Hashtable(); for (int i = 0; i < enables.size(); i++) { Object token = enables.elementAt(i); enabled.put(token, token); } Hashtable disabled = new Hashtable(); for (int i = 0; i < disables.size(); i++) { Object token = disables.elementAt(i); disabled.put(token, token); if (enabled.containsKey(token)) { System.err.println(DUAL_USE_ERR + ": " + token); return; } } // construct an instance of class JEnable opt = new JEnable(keep, tilde, listmod, quiet, verbose, backup, enabled, disabled); // check if we have file paths if (anum < argv.length) { // process each file path supplied while (anum < argv.length) { String arg = argv[anum++]; int split; while ((split = arg.indexOf(',')) > 0) { String path = arg.substring(0, split); opt.processPath(path); arg = arg.substring(split+1); } opt.processPath(arg); } } else { // just process standard input to standard output BufferedReader in = new BufferedReader (new InputStreamReader(System.in)); BufferedWriter out = new BufferedWriter (new OutputStreamWriter(System.out)); // check first line for disabled token try { String line = in.readLine(); int type = opt.checkOptionLine(1, line); if (type == FILE_OPTION) { boolean discard = opt.m_invert ? enabled.contains(opt.m_token) : disabled.contains(opt.m_token); if (discard) { return; } } opt.processStream(in, line, out); } catch (IOException ex) { System.err.println(ex.getMessage()); } } } else { System.err.println ("\nJEnable Java source configuration processor version " + "0.8\nUsage: JEnable [-options] path-list\n" + "Options are:\n" + " -b backup directory tree (base directory is next " + "argument)\n" + " -d disabled token list (comma-separated token name list" + " is next argument)\n" + " -e enabled token list (comma-separated token name list" + " is next argument)\n" + " -m list modified files as they're processed\n" + " -p preserve timestamp on modified files\n" + " -q quiet mode, do not print file summary by path\n" + " -t backup modified files in same directory with '~' " + "suffix\n" + " -v verbose listing of all files processed (modified or " + "not)\n" + "These options may be concatenated together with a single" + " leading dash.\n\n" + "Path lists may include '*' wildcards, and may consist of " + "multiple paths\n" + "separated by ',' characters. The special directory " + "pattern '**' matches\n" + "any number of intervening directories. Any number of path " + "list parameters may\n" + "be supplied.\n"); } } } libjibx-java-1.1.6a/build/maven2/0000755000175000017500000000000011023035452016364 5ustar moellermoellerlibjibx-java-1.1.6a/build/maven2/build-remote-maven-repository.sh0000644000175000017500000000176711023022262024637 0ustar moellermoeller# Hack: I don't know why jibx-extras upload the POM whereas jibx-run and jibx-bind don't! scp jibx-run.pom $username@shell.sf.net:/home/groups/j/ji/jibx/htdocs/maven2/org/jibx/jibx-run/1.1.6/jibx-run-1.1.6.pom scp jibx-bind.pom $username@shell.sf.net:/home/groups/j/ji/jibx/htdocs/maven2/org/jibx/jibx-bind/1.1.6/jibx-bind-1.1.6.pom # Regular deployment on Maven 2 repository mvn deploy:deploy-file -Dversion=1.1.6 -Dfile=../../lib/jibx-run.jar -DpomFile=jibx-run.pom -Dpackaging=jar -DrepositoryId=sf.net -DgeneratePom=true -Durl=scp://shell.sf.net/home/groups/j/ji/jibx/htdocs/maven2 mvn deploy:deploy-file -Dversion=1.1.6 -Dfile=../../lib/jibx-bind.jar -DpomFile=jibx-bind.pom -Dpackaging=jar -DrepositoryId=sf.net -DgeneratePom=true -Durl=scp://shell.sf.net/home/groups/j/ji/jibx/htdocs/maven2 mvn deploy:deploy-file -Dversion=1.1.6 -Dfile=../../lib/jibx-extras.jar -DpomFile=jibx-extras.pom -Dpackaging=jar -DrepositoryId=sf.net -DgeneratePom=true -Durl=scp://shell.sf.net/home/groups/j/ji/jibx/htdocs/maven2 libjibx-java-1.1.6a/build/maven2/jibx-bind.pom0000644000175000017500000000401611023022264020745 0ustar moellermoeller 4.0.0 org.jibx jibx-bind 1.1.6 jar jibx-bind http://jibx.sourceforge.net JiBX bind BSD http://jibx.sourceforge.net/jibx-license.html repo org.jibx jibx-run 1.1.6 bcel bcel 5.1 sf.net scp://shell.sf.net/home/groups/j/ji/jibx/htdocs/maven2 sf.net scp://shell.sf.net/home/groups/j/ji/jibx/htdocs/maven-jibx-plugin jira http://jira.codehaus.org/browse/JIBX org.apache.maven.plugins maven-project-info-reports-plugin jibx.sf.net JiBX repository http://jibx.sf.net/maven2 never false scm:cvs:pserver:anonymous@cvs.sourceforge.net:/cvsroot/jibx:maven-jibx-plugin scm:cvs:ext:developername@cvs.sourceforge.net:/cvsroot/jibx:maven-jibx-plugin http://cvs.sourceforge.net/viewcvs.py/jibx/maven-jibx-plugin/ libjibx-java-1.1.6a/build/maven2/jibx-extras.pom0000644000175000017500000000364411023022264021345 0ustar moellermoeller 4.0.0 org.jibx jibx-extras 1.1.6 jar jibx-extras http://jibx.sourceforge.net JiBX extras BSD http://jibx.sourceforge.net/jibx-license.html repo org.jibx jibx-run 1.1.6 sf.net scp://shell.sf.net/home/groups/j/ji/jibx/htdocs/maven2 sf.net scp://shell.sf.net/home/groups/j/ji/jibx/htdocs/maven-jibx-plugin jira http://jira.codehaus.org/browse/JIBX org.apache.maven.plugins maven-project-info-reports-plugin jibx.sf.net JiBX repository http://jibx.sf.net/maven2 never false scm:cvs:pserver:anonymous@cvs.sourceforge.net:/cvsroot/jibx:maven-jibx-plugin scm:cvs:ext:developername@cvs.sourceforge.net:/cvsroot/jibx:maven-jibx-plugin http://cvs.sourceforge.net/viewcvs.py/jibx/maven-jibx-plugin/ libjibx-java-1.1.6a/build/maven2/jibx-run.pom0000644000175000017500000000365311023022264020643 0ustar moellermoeller 4.0.0 org.jibx jibx-run 1.1.6 jar jibx-run http://jibx.sourceforge.net JiBX run BSD http://jibx.sourceforge.net/jibx-license.html repo org.codehaus.woodstox wstx-asl 3.2.1 sf.net scp://shell.sf.net/home/groups/j/ji/jibx/htdocs/maven2 sf.net scp://shell.sf.net/home/groups/j/ji/jibx/htdocs/maven-jibx-plugin jira http://jira.codehaus.org/browse/JIBX org.apache.maven.plugins maven-project-info-reports-plugin jibx.sf.net JiBX repository http://jibx.sf.net/maven2 never false scm:cvs:pserver:anonymous@cvs.sourceforge.net:/cvsroot/jibx:maven-jibx-plugin scm:cvs:ext:developername@cvs.sourceforge.net:/cvsroot/jibx:maven-jibx-plugin http://cvs.sourceforge.net/viewcvs.py/jibx/maven-jibx-plugin/ libjibx-java-1.1.6a/build/src/0000755000175000017500000000000011021525446015770 5ustar moellermoellerlibjibx-java-1.1.6a/build/src/org/0000755000175000017500000000000011021525446016557 5ustar moellermoellerlibjibx-java-1.1.6a/build/src/org/jibx/0000755000175000017500000000000011021525452017510 5ustar moellermoellerlibjibx-java-1.1.6a/build/src/org/jibx/binding/0000755000175000017500000000000011023035620021115 5ustar moellermoellerlibjibx-java-1.1.6a/build/src/org/jibx/binding/ant/0000755000175000017500000000000011023035622021701 5ustar moellermoellerlibjibx-java-1.1.6a/build/src/org/jibx/binding/ant/CompileTask.java0000644000175000017500000002517710221057702024775 0ustar moellermoeller/* Copyright (c) 2003, Andrew J. Glover 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.ant; import java.io.File; import java.util.ArrayList; import java.util.List; import org.apache.tools.ant.AntClassLoader; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.DirectoryScanner; import org.apache.tools.ant.Task; import org.apache.tools.ant.types.FileSet; import org.apache.tools.ant.types.Path; import org.jibx.binding.Compile; import org.jibx.runtime.JiBXException; /** * Class alters user defined class files for JiBX functionality. * @author aglover * @author pledbrook */ public class CompileTask extends Task { private boolean m_load; private boolean m_verbose; private Path m_classpath; private List m_fileSet; private List m_bindingFileSet; private String m_bindingFile; /** * Hook method called by ant framework to handle * task initialization. * */ public void init() throws BuildException { // // Do aprent initialisation first. // super.init(); // // Now create the lists that store the classpathsets and // the bindingsets. // m_fileSet = new ArrayList(); m_bindingFileSet = new ArrayList(); } /** * Returns an array of paths of all the files specified by the * or tags. Note that the * and tags cannot both be specified. */ private String[] getPaths() { String[] pathArray = null; if (m_classpath != null) { // // If a tag has been set, m_classpath will // not be null. In this case, just return the array of // paths directly. // pathArray = m_classpath.list(); } else { // // Store the directory paths specified by each of the // tags. // pathArray = new String[m_fileSet.size()]; for(int i = 0; i < m_fileSet.size(); i++) { FileSet fileSet = (FileSet)m_fileSet.get(i); File directory = fileSet.getDir(project); pathArray[i] = directory.getAbsolutePath(); } } // make Ant classpath usable by application try { System.setProperty("java.class.path", ((AntClassLoader)CompileTask.class.getClassLoader()).getClasspath()); } catch (Exception e) { System.err.println("Failed setting classpath from Ant task"); } // // If verbose mode is on, print out the paths we are using. // if (m_verbose) { log("Using the following paths:"); for (int i = 0; i < pathArray.length; i++) { log(" " + pathArray[i]); } } return pathArray; } /** * Returns an array of all the paths specified by the "binding" * attribute or the tags. */ private String[] getBindings() { String[] bindings = null; if (m_bindingFileSet.size() == 0) { // // No tags have been specified, so use // the task's "binding" attribute instead. // bindings = new String[] { m_bindingFile }; } else { // // For each fileset, get all the file paths included by it. // ArrayList paths = new ArrayList(); for(int i = 0; i < m_bindingFileSet.size(); i++){ FileSet bPath = (FileSet)m_bindingFileSet.get(i); DirectoryScanner dirScn = bPath.getDirectoryScanner(project); String[] bndingFiles = dirScn.getIncludedFiles(); for(int x = 0; x < bndingFiles.length; x++){ String fullPath = dirScn.getBasedir() + System.getProperty("file.separator") + bndingFiles[x]; paths.add(fullPath); } } // // Convert the ArrayList of binding files into a native array. // bindings = (String[])paths.toArray(new String[paths.size()]); } // // If verbose mode is on, print out the binding files // we are using. // if (m_verbose) { log("Using the following binding paths:"); for (int i = 0; i < bindings.length; i++) { log(" " + bindings[i]); } } return bindings; } /** * This checks that the build file has specified the correct * mix of <classpath>, <classpathset>, <bindingfileset> * and "binding". The rules are as follows: *

* @throws BuildException */ private void validateRequiredFields() throws BuildException { // // Check at least one of the binding file properties is set. // if (m_bindingFileSet.isEmpty() && m_bindingFile == null) { throw new BuildException("Either the binding attribute or at " + "least one bindingset nested element " + "must be defined."); } // // Make sure that the "binding" attribute has not been used with the // nested element. // if (!m_bindingFileSet.isEmpty() && m_bindingFile != null) { throw new BuildException("You cannot specify both a binding attribute and a " + "bindingset nested element."); } // // Check either or has been set. // if(m_classpath == null && m_fileSet.isEmpty()) { throw new BuildException("You must specify either a classpath " + "or at least one nested classpathset element."); } // // Make sure that only one of the above is specified. // if (m_classpath != null && !m_fileSet.isEmpty()) { throw new BuildException("You cannot specify both a classpath and a " + "classpathset nested element."); } } /** * * Hook method called by Ant. Method first determines * class file path from user defined value, then * determines all binding files for class file weaving. * */ public void execute() throws BuildException{ try{ validateRequiredFields(); String[] pathArr = getPaths(); String[] bindings = getBindings(); Compile compiler = new Compile(); //right now there is an issue with dynamically loading //class files with ant. it doesnt work unless the class //files are part of ANT's classpath. so I am forcing this //to always be false until we can come up with a better solution. compiler.setLoad(m_load); compiler.setVerbose(m_verbose); compiler.compile(pathArr, bindings); } catch(JiBXException jEx) { jEx.printStackTrace(); throw new BuildException("JiBXException in JiBX binding compilation", jEx); } } /** * * @param fSet */ public void addClassPathSet(FileSet fSet){ m_fileSet.add(fSet); } /** * Returns the current classpath. */ public Path getClasspath() { return m_classpath; } /** * Sets the classpath for this task. Multiple calls append the * new classpath to the current one, rather than overwriting it. * @param classpath The new classpath as a Path object. */ public void setClasspath(Path classpath) { if (m_classpath == null) { m_classpath = classpath; } else { m_classpath.append(classpath); } } /** * Creates the classpath for this task and returns * it. If the classpath has already been created, * the method just returns that one. */ public Path createClasspath() { if (m_classpath == null) { m_classpath = new Path(project); } return m_classpath; } /** * @param file */ public void setBinding(String file) { m_bindingFile = file; } /** * * @param bfSet */ public void addBindingFileSet(FileSet bfSet) { m_bindingFileSet.add(bfSet); } /** * @param bool */ public void setLoad(boolean bool) { m_load = bool; } /** * @param bool */ public void setVerbose(boolean bool) { m_verbose = bool; } } libjibx-java-1.1.6a/build/src/org/jibx/binding/classes/0000755000175000017500000000000011023035622022554 5ustar moellermoellerlibjibx-java-1.1.6a/build/src/org/jibx/binding/classes/BindingMethod.java0000644000175000017500000001573710210703666026156 0ustar moellermoeller/* Copyright (c) 2003-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.classes; import org.apache.bcel.Constants; import org.apache.bcel.classfile.ExceptionTable; import org.apache.bcel.classfile.Method; /** * Binding method information. Tracks a method used by the binding code, * supplying hash code and equality checking based on the method signature and * actual byte code of the method, ignoring the method name. This allows * comparisons between methods generated by different bindings, and between * generated and existing methods. * * @author Dennis M. Sosnoski * @version 1.0 */ public abstract class BindingMethod { /** Owning class file information. */ private ClassFile m_classFile; /** * Constructor. * * @param cf owning class file information */ protected BindingMethod(ClassFile cf) { m_classFile = cf; } /** * Get class file containing method. * * @return class file owning this method */ public ClassFile getClassFile() { return m_classFile; } /** * Get name of method. This abstract method must be implemented by every * subclass. * * @return method name */ public abstract String getName(); /** * Get signature. This abstract method must be implemented by every * subclass. * * @return signature for method */ public abstract String getSignature(); /** * Get access flags. This abstract method must be implemented by every * subclass. * * @return flags for access type of method */ public abstract int getAccessFlags(); /** * Set access flags. This abstract method must be implemented by every * subclass. * * @param flags access type to be set */ public abstract void setAccessFlags(int flags); /** * Get the actual method. * * @return method information */ public abstract Method getMethod(); /** * Get the method item. * * @return method item information */ public abstract ClassItem getItem(); /** * Make accessible method. Check if this method is accessible from another * class, and if not decreases the access restrictions to make it * accessible. * * @param src class file for required access */ public void makeAccessible(ClassFile src) { // no need to change if already public access int access = getAccessFlags(); if ((access & Constants.ACC_PUBLIC) == 0) { // check for same package as most restrictive case ClassFile dest = getClassFile(); if (dest.getPackage().equals(src.getPackage())) { if ((access & Constants.ACC_PRIVATE) != 0) { access = access - Constants.ACC_PRIVATE; } } else { // check if access is from a subclass of this method class ClassFile ancestor = src; while ((ancestor = ancestor.getSuperFile()) != null) { if (ancestor == dest) { break; } } // handle access adjustments based on subclass status if (ancestor == null) { int clear = Constants.ACC_PRIVATE | Constants.ACC_PROTECTED; access = (access & ~clear) | Constants.ACC_PUBLIC; } else if ((access & Constants.ACC_PROTECTED) == 0) { access = (access & ~Constants.ACC_PRIVATE) | Constants.ACC_PROTECTED; } } // set new access flags if (access != getAccessFlags()) { setAccessFlags(access); } } } /** * Computes the hash code for a method. The hash code is based on the * method signature, the exceptions thrown, and the actual byte code * (including the exception handlers). * * @return computed hash code for method */ public static int computeMethodHash(Method method) { int hash = method.getSignature().hashCode(); ExceptionTable etab = method.getExceptionTable(); if (etab != null) { String[] excepts = etab.getExceptionNames(); for (int i = 0; i < excepts.length; i++) { hash += excepts[i].hashCode(); } } byte[] code = method.getCode().getCode(); for (int i = 0; i < code.length; i++) { hash = hash * 49 + code[i]; } return hash; } /** * Get hash code. This abstract method must be implemented by every * subclass, using the same algorithm in each case. See one of the existing * subclasses for details. * * @return hash code for this method */ public abstract int hashCode(); /** * Check if objects are equal. Compares first based on hash code, then on * the actual byte code sequence. * * @return true if equal objects, false if not */ public boolean equals(Object obj) { if (obj instanceof BindingMethod) { BindingMethod comp = (BindingMethod)obj; if (hashCode() == comp.hashCode() && getSignature().equals(comp.getSignature())) { return ClassFile.equalMethods (this.getMethod(), comp.getMethod()); } } return false; } } libjibx-java-1.1.6a/build/src/org/jibx/binding/classes/BoundClass.java0000644000175000017500000004313010752421336025466 0ustar moellermoeller/* * Copyright (c) 2003-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.classes; import java.io.File; import java.util.HashMap; import org.apache.bcel.Constants; import org.apache.bcel.classfile.Utility; import org.apache.bcel.generic.Type; import org.jibx.binding.def.BindingDefinition; import org.jibx.runtime.JiBXException; /** * Bound class handler. Each instance controls and organizes information for a * class included in one or more binding definitions. * * @author Dennis M. Sosnoski */ public class BoundClass { // // Constants and such related to code generation. /** Class used for code munging when no specific class available. */ private static final String GENERIC_MUNGE_CLASS = BindingDefinition.GENERATE_PREFIX + "MungeAdapter"; /** Prefix used for access methods. */ private static final String ACCESS_PREFIX = BindingDefinition.GENERATE_PREFIX + "access_"; /** Empty argument type array. */ private static final Type[] EMPTY_TYPE_ARGS = {}; // // Static data. /** * Map from bound class name (or bound and munged combination) to binding * information. */ private static HashMap s_nameMap; /** Package of first modifiable class. */ private static String s_modifyPackage; /** Root for package of first modifiable class. */ private static File s_modifyRoot; /** Class used for code generation proxy with unmodifiable classes. */ private static MungedClass s_genericMunge; // // Actual instance data. /** Bound class file information. */ private final ClassFile m_boundClass; /** Class receiving code generated for target class. */ private final MungedClass m_mungedClass; /** * Map from field or method to load access method (lazy create, * null if not used). */ private HashMap m_loadMap; /** * Map from field or method to store access method (lazy create, * null if not used). */ private HashMap m_storeMap; /** * Constructor. * * @param bound target class file information * @param munge class file for class hosting generated code */ private BoundClass(ClassFile bound, MungedClass munge) { m_boundClass = bound; m_mungedClass = munge; } /** * Get bound class file information. * * @return class file information for bound class */ public ClassFile getClassFile() { return m_boundClass; } /** * Get bound class file name. * * @return name of bound class */ public String getClassName() { return m_boundClass.getName(); } /** * Get munged class file information. * * @return class file information for class being modified */ public ClassFile getMungedFile() { return m_mungedClass.getClassFile(); } /** * Check if class being changed directly. * * @return true if bound class is being modified, * false if using a surrogate */ public boolean isDirectAccess() { return m_boundClass == m_mungedClass.getClassFile(); } /** * Get load access method for member of this class. If the access method * does not already exist it's created by this call. If the access method * does exist but without access from the context class, the access * permission on the method is broadened (from package to protected or * public, or from protected to public). * * @param item field or method to be accessed * @param from context class from which access is required * @return the item itself if it's accessible from the required context, an * access method that is accessible if the item is not itself * @throws JiBXException on configuration error */ public ClassItem getLoadMethod(ClassItem item, ClassFile from) throws JiBXException { // initialize tracking information for access methods if first time if (m_loadMap == null) { m_loadMap = new HashMap(); } // check if a new access method needed BindingMethod method = (BindingMethod)m_loadMap.get(item); if (method == null) { // set up for constructing new method String name = ACCESS_PREFIX + "load_" + item.getName(); ClassFile cf = item.getClassFile(); Type type = Type.getType(Utility.getSignature(item.getTypeName())); MethodBuilder mb = new ExceptionMethodBuilder(name, type, EMPTY_TYPE_ARGS, cf, (short)0); // add the actual access method code mb.appendLoadLocal(0); if (item.isMethod()) { mb.addMethodExceptions(item); mb.appendCall(item); } else { mb.appendGetField(item); } mb.appendReturn(type); // track unique instance of this method method = m_mungedClass.getUniqueMethod(mb, true); m_loadMap.put(item, method); } // make sure method is accessible method.makeAccessible(from); return method.getItem(); } /** * Get store access method for member of this class. If the access method * does not already exist it's created by this call. If the access method * does exist but without access from the context class, the access * permission on the method is broadened (from package to protected or * public, or from protected to public). * * @param item field or method to be accessed * @param from context class from which access is required * @return the item itself if it's accessible from the required context, an * access method that is accessible if the item is not itself * @throws JiBXException on configuration error */ public ClassItem getStoreMethod(ClassItem item, ClassFile from) throws JiBXException { // initialize tracking information for access methods if first time if (m_storeMap == null) { m_storeMap = new HashMap(); } // check if a new access method needed BindingMethod method = (BindingMethod)m_storeMap.get(item); if (method == null) { // set up for constructing new method String name = ACCESS_PREFIX + "store_" + item.getName(); ClassFile cf = item.getClassFile(); Type type; if (item.isMethod()) { String sig = item.getSignature(); int start = sig.indexOf('('); int end = sig.indexOf(')'); type = Type.getType(sig.substring(start + 1, end)); } else { type = Type.getType(Utility.getSignature(item.getTypeName())); } MethodBuilder mb = new ExceptionMethodBuilder(name, Type.VOID, new Type[] { type }, cf, (short)0); // add the actual access method code mb.appendLoadLocal(0); mb.appendLoadLocal(1); if (item.isMethod()) { mb.addMethodExceptions(item); mb.appendCall(item); } else { mb.appendPutField(item); } mb.appendReturn(); // track unique instance of this method method = m_mungedClass.getUniqueMethod(mb, true); m_storeMap.put(item, method); } // make sure method is accessible method.makeAccessible(from); return method.getItem(); } /** * Get unique method. Just delegates to the modified class handling, with * unique suffix appended to method name. * * @param builder method to be defined * @return defined method item * @throws JiBXException on configuration error */ public BindingMethod getUniqueMethod(MethodBuilder builder) throws JiBXException { return m_mungedClass.getUniqueMethod(builder, true); } /** * Get unique method. Just delegates to the modified class handling. The * supplied name is used without change. * * @param builder method to be defined * @return defined method item * @throws JiBXException on configuration error */ public BindingMethod getUniqueNamed(MethodBuilder builder) throws JiBXException { return m_mungedClass.getUniqueMethod(builder, false); } /** * Add binding factory to class. Makes sure that there's no surrogate class * for code generation, then delegates to the modified class handling. * * @param fact binding factory name */ public void addFactory(String fact) { if (isDirectAccess()) { m_mungedClass.addFactory(fact); } else { throw new IllegalStateException( "Internal error: not directly modifiable class"); } } /** * Generate factory list. Makes sure that there's no surrogate class for * code generation, then delegates to the modified class handling. * * @throws JiBXException on configuration error */ public void setFactoryList() throws JiBXException { if (isDirectAccess()) { m_mungedClass.setFactoryList(); } else { throw new IllegalStateException( "Internal error: not directly modifiable class"); } } /** * Create binding information for class. This creates the combination of * bound class and (if different) munged class and adds it to the internal * tables. * * @param key text identifier for this bound class and munged class * combination * @param bound class information for bound class * @param munge information for surrogate class receiving generated code, or * null if no separate class * @return binding information for class */ private static BoundClass createInstance(String key, ClassFile bound, MungedClass munge) { BoundClass inst = new BoundClass(bound, munge); s_nameMap.put(key, inst); return inst; } /** * Find or create binding information for class. If the combination of bound * class and munged class already exists it's returned directly, otherwise * it's created and returned. * * @param bound class information for bound class * @param munge information for surrogate class receiving generated code * @return binding information for class */ private static BoundClass findOrCreateInstance(ClassFile bound, MungedClass munge) { String key = bound.getName() + ':' + munge.getClassFile().getName(); BoundClass inst = (BoundClass)s_nameMap.get(key); if (inst == null) { inst = createInstance(key, bound, munge); } return inst; } /** * Get binding information for class. This finds the class in which code * generation for the target class takes place. Normally this class will be * the target class itself, but in cases where the target class is not * modifiable an alternate class will be used. This can take two forms. If * the context class is provided and it is a subclass of the target class, * code for the target class is instead added to the context class. If there * is no context class, or if the context class is not a subclass of the * target class, a unique catch-all class is used. * * @param cf bound class information * @param context context class for code generation, or null * if no context * @return binding information for class * @throws JiBXException on configuration error */ public static BoundClass getInstance(ClassFile cf, BoundClass context) throws JiBXException { // check if new instance needed for this class BoundClass inst = (BoundClass)s_nameMap.get(cf.getName()); if (inst == null) { // load the basic class information and check for modifiable if (!cf.isInterface() && cf.isModifiable()) { // return instance directly inst = createInstance(cf.getName(), cf, MungedClass .getInstance(cf)); } else { // see if the context class is a subclass if (context != null && context.getClassFile().isSuperclass(cf.getName())) { // find or create munge with subclass as surrogate inst = findOrCreateInstance(cf, context.m_mungedClass); } else { // use catch-all munge class as surrogate for all else if (s_genericMunge == null) { String mname; if (s_modifyPackage == null) { mname = GENERIC_MUNGE_CLASS; MungedClass.checkDirectory(s_modifyRoot, ""); } else { mname = s_modifyPackage + '.' + GENERIC_MUNGE_CLASS; MungedClass.checkDirectory(s_modifyRoot, s_modifyPackage); } ClassFile base = ClassCache .getClassFile("java.lang.Object"); int acc = Constants.ACC_PUBLIC | Constants.ACC_ABSTRACT; ClassFile gen = new ClassFile(mname, s_modifyRoot, base, acc, new String[0]); gen.addDefaultConstructor(); s_genericMunge = MungedClass.getInstance(gen); MungedClass.delayedAddUnique(gen); } inst = findOrCreateInstance(cf, s_genericMunge); } } } return inst; } /** * Get binding information for class. This version takes a fully-qualified * class name, calling the paired method if necessary to create a new * instance. * * @param name fully qualified name of bound class * @param context context class for code generation, or null * if no context * @return binding information for class * @throws JiBXException on configuration error */ public static BoundClass getInstance(String name, BoundClass context) throws JiBXException { // check if new instance needed for this class BoundClass inst = (BoundClass)s_nameMap.get(name); if (inst == null) { ClassFile cf = ClassCache.getClassFile(name); return getInstance(cf, context); } return inst; } /** * Discard cached information and reset in preparation for a new binding * run. */ public static void reset() { s_nameMap = new HashMap(); s_modifyPackage = null; s_modifyRoot = null; s_genericMunge = null; } /** * Set override modification information. This allows the binding to * control directly the root directory and package for added classes. * * @param root classpath root directory for added classes * @param pkg package for added classes */ public static void setModify(File root, String pkg) { s_modifyRoot = root; s_modifyPackage = pkg; if (s_modifyPackage.length() == 0) { s_modifyPackage = null; } } /** * Derive generated class name for bound class. This generates a JiBX class * name from the name of this class, using the supplied prefix and suffix * information. The derived class name is always in the same package as the * munged class for this class. * * @param prefix generated class name prefix * @param suffix generated class name suffix * @return derived class name */ public String deriveClassName(String prefix, String suffix) { String pack = m_mungedClass.getClassFile().getPackage(); if (pack.length() > 0) { pack += '.'; } String tname = m_boundClass.getName(); int split = tname.lastIndexOf('.'); if (split >= 0) { tname = tname.substring(split + 1); } return pack + prefix + tname + suffix; } }libjibx-java-1.1.6a/build/src/org/jibx/binding/classes/BranchTarget.java0000644000175000017500000000643410071714136026000 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.classes; import org.apache.bcel.generic.InstructionHandle; /** * Wrapper for branch target information. This preserves a snapshot of the stack * state for the branch target, allowing it to be matched against the stack * state for the branch source. * * @author Dennis M. Sosnoski * @version 1.0 */ public class BranchTarget { /** Actual wrapped instruction handle. */ private final InstructionHandle m_targetHandle; /** Stack state for branch target. */ private final String[] m_stackTypes; /** * Constructor. * * @param hand instruction handle * @param types array of types of values on stack */ /*package*/ BranchTarget(InstructionHandle hand, String[] types) { m_targetHandle = hand; m_stackTypes = types; } /** * Get actual target instruction. * * @return handle for target instruction */ /*package*/ InstructionHandle getInstruction() { return m_targetHandle; } /** * Get stack state information. * * @return array of type names on stack */ /*package*/ String[] getStack() { return m_stackTypes; } /** * Matches the branch target stack state against the supplied stack state. * * @param types array of types of values on stack * @return true if stack states match, false if * not */ /*package*/ boolean matchStacks(String[] types) { // match stack states if (types.length == m_stackTypes.length) { for (int i = 0; i < types.length; i++) { if (!types[i].equals(m_stackTypes[i])) { return false; } } return true; } else { return false; } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/classes/BranchWrapper.java0000644000175000017500000001766110270431156026175 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.classes; import org.apache.bcel.generic.BranchHandle; import org.apache.bcel.generic.InstructionHandle; /** * Wrapper for branch handle. This preserves a snapshot of the stack state for * the branch instruction, matching it against the stack state for the target * instruction when set. * * @author Dennis M. Sosnoski * @version 1.0 */ public class BranchWrapper { /** Track source code location for generated branches. */ private static boolean s_trackSource; /** Continue on after code generation error flag. */ private static boolean s_errorOverride; /** Actual wrapped instruction handle. */ private final BranchHandle m_branchHandle; /** Stack state for branch origin. */ private final String[] m_stackTypes; /** Object that generated branch. */ private final Object m_sourceObject; /** Code generation backtrace for source of branch. */ private final Throwable m_sourceTrace; /** * Constructor. * * @param hand branch handle * @param types array of types of values on stack * @param src object responsible for generating branch */ /*package*/ BranchWrapper(BranchHandle hand, String[] types, Object src) { m_branchHandle = hand; m_stackTypes = types; m_sourceObject = src; if (s_trackSource) { m_sourceTrace = new Throwable(); } else { m_sourceTrace = null; } } /** * Get branch origin stack state information. * * @return array of types of values on stack */ /*package*/ String[] getStackState() { return m_stackTypes; } /** * Generate description of stack state. * * @param types array of types on stack * @return stack state description */ private String describeStack(String[] types) { StringBuffer buff = new StringBuffer(); for (int i = 0; i < types.length; i++) { buff.append(" "); buff.append(i); buff.append(": "); buff.append(types[i]); buff.append('\n'); } return buff.toString(); } /** * Report branch target error. Dumps the stack trace for the source of the * branch, if source tracking is enabled, and generates an exception that * includes the stack state information. * * @param text basic error message text * @param types stack state description * @param mb method builder using this code * @return complete error description text */ private String buildReport(String text, String[] types, MethodBuilder mb) { // start by dumping branch generation source trace if (m_sourceTrace != null) { System.err.println("Backtrack for branch source:"); m_sourceTrace.printStackTrace(System.err); } // generate error message leading text StringBuffer buff = new StringBuffer(text); buff.append("\n in method "); buff.append(mb.getClassFile().getName()); buff.append('.'); buff.append(mb.getName()); buff.append("\n generated by "); buff.append(m_sourceObject.toString()); buff.append("\n from stack:\n"); buff.append(describeStack(m_stackTypes)); buff.append(" to stack:\n"); buff.append(describeStack(types)); return buff.toString(); } /** * Set target instruction for branch. Validates the branch source stack * state against the branch target stack state. * * @param hand target branch instruction handle * @param types stack state description * @param mb method builder using this code */ /*package*/ void setTarget(InstructionHandle hand, String[] types, MethodBuilder mb) { // match stack states if (types.length == m_stackTypes.length) { for (int i = 0; i < types.length; i++) { String stype = m_stackTypes[i]; if (!types[i].equals(stype)) { if (!"".equals(types[i]) && !"".equals(stype)) { if (m_sourceTrace != null) { System.err.println("Backtrack for branch source:"); m_sourceTrace.printStackTrace(System.err); } String text = buildReport ("Stack value type mismatch on branch", types, mb); if (s_errorOverride) { new Throwable(text).printStackTrace(System.err); } else { throw new IllegalStateException(text); } } } } } else { String text = buildReport("Stack size mismatch on branch", types, mb); if (s_errorOverride) { new Throwable(text).printStackTrace(System.err); } else { throw new IllegalStateException(text); } } // set the branch target m_branchHandle.setTarget(hand); } /** * Set target instruction for branch. Validates the branch source stack * state against the branch target stack state. * * @param target branch target wrapper * @param mb method builder using this code */ public void setTarget(BranchTarget target, MethodBuilder mb) { setTarget(target.getInstruction(), target.getStack(), mb); } /** * Set branch code generation tracking state. When set, this saves a stack * trace for each generated branch instruction, allowing the source of a * branch to be traced when an error occurs in setting the branch target. * * @param track true to enable branch code generation tracking, * false to disable it */ public static void setTracking(boolean track) { s_trackSource = track; } /** * Set target setting error override state. When set, this blocks throwing * an exception when an error occurs on setting the branch target, instead * just printing the information to the console. * * @param over true to override exception on target error, * false to allow it */ public static void setErrorOverride(boolean over) { s_errorOverride = over; } }libjibx-java-1.1.6a/build/src/org/jibx/binding/classes/ClassCache.java0000644000175000017500000001741110602524416025422 0ustar moellermoeller/* Copyright (c) 2003-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.classes; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import org.apache.bcel.classfile.Utility; import org.jibx.runtime.JiBXException; /** * Cache for class files being modified. Handles loading and saving of class * files. Classes are loaded directly from the file system paths supplied on * initialization in preference to the system class path. * * @author Dennis M. Sosnoski * @version 1.0 */ public class ClassCache { /** Singleton instance of class (created when paths set) */ private static ClassCache s_instance; /** Paths to be searched for class files. */ private String[] m_paths; /** Root directories corresponding to paths. */ private File[] m_roots; /** Map from class names to actual class information. */ private HashMap m_classMap; /** * Constructor. Discards jar file paths and normalizes all other paths * (except the empty path) to end with the system path separator character. * * @param paths ordered set of paths to be searched for class files */ private ClassCache(String[] paths) { ArrayList keepers = new ArrayList(); for (int i = 0; i < paths.length; i++) { File file = new File(paths[i]); if (file.isDirectory() && file.canWrite()) { keepers.add(paths[i]); } } m_paths = new String[keepers.size()]; m_roots = new File[keepers.size()]; for (int i = 0; i < keepers.size(); i++) { String path = (String)keepers.get(i); int length = path.length(); if (length > 0) { if (path.charAt(length-1) != File.separatorChar) { path = path + File.separator; } } m_paths[i] = path; m_roots[i] = new File(path); } m_classMap = new HashMap(); } /** * Get class information. Looks up the class in cache, and if not already * present tries to find it based on the class file search path list. If * the class file is found it is loaded and this method calls itself * recursively to load the whole hierarchy of superclasses. * * @param name fully-qualified name of class to be found * @return class information, or null if class not found * @throws JiBXException on any error accessing class file */ private ClassFile getClassFileImpl(String name) throws JiBXException { // first try for match on fully-qualified class name Object match = m_classMap.get(name); if (match != null) { return (ClassFile)match; } else if (ClassItem.isPrimitive(name) || name.endsWith("[]")) { // create synthetic class file for array type ClassFile cf = new ClassFile(name, Utility.getSignature(name)); m_classMap.put(name, cf); return cf; } else { try { // got to load it, convert to file path format ClassFile cf = null; String path = name.replace('.', File.separatorChar) + ".class"; for (int i = 0; i < m_paths.length; i++) { // check for file found off search path File file = new File(m_paths[i], path); if (file.exists()) { // load file information cf = new ClassFile(name, m_roots[i], file); break; } } // finally try loading (non-modifiable) class from classpath if (cf == null) { cf = new ClassFile(name); } // check for class found if (cf != null) { // force loading of superclass as well (to root) String sname = cf.getSuperName(); if (!name.equals(sname) && sname != null) { ClassFile sf = getClassFileImpl(sname); if (sf == null) { throw new JiBXException("Superclass " + sname + " of class " + name + " not found"); } cf.setSuperFile(sf); } // add class information to cache m_classMap.put(name, cf); } return cf; } catch (IOException ex) { throw new JiBXException("Error loading class " + name); } } } /** * Get class information. Looks up the class in cache, and if not already * present tries to find it based on the class file search path list. If * the class file is found it is loaded along with all superclasses. * * @param name fully-qualified name of class to be found * @return class information, or null if class not found * @throws JiBXException on any error accessing class file */ public static ClassFile getClassFile(String name) throws JiBXException { return s_instance.getClassFileImpl(name); } /** * Check if class information has been loaded. * * @param name full-qualified name of class to be checked * @return true if found */ public static boolean hasClassFile(String name) { return s_instance.m_classMap.containsKey(name); } /** * Add created class information to cache. * * @param cf information for class to be added */ /*package*/ static void addClassFile(ClassFile cf) { s_instance.m_classMap.put(cf.getName(), cf); } /** * Set class paths to be searched. Discards jar file paths and normalizes * all other paths (except the empty path) to end with the system path * separator character. * * @param paths ordered set of paths to be searched for class files */ public static void setPaths(String[] paths) { s_instance = new ClassCache(paths); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/classes/ClassFile.java0000644000175000017500000021312611021732036025272 0ustar moellermoeller/* Copyright (c) 2003-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.classes; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.MalformedURLException; import java.net.URL; import java.net.URLClassLoader; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import org.apache.bcel.Constants; import org.apache.bcel.classfile.ClassParser; import org.apache.bcel.classfile.Code; import org.apache.bcel.classfile.CodeException; import org.apache.bcel.classfile.Constant; import org.apache.bcel.classfile.ConstantDouble; import org.apache.bcel.classfile.ConstantFloat; import org.apache.bcel.classfile.ConstantInteger; import org.apache.bcel.classfile.ConstantLong; import org.apache.bcel.classfile.ConstantPool; import org.apache.bcel.classfile.ConstantString; import org.apache.bcel.classfile.ConstantUtf8; import org.apache.bcel.classfile.ConstantValue; import org.apache.bcel.classfile.ExceptionTable; import org.apache.bcel.classfile.Field; import org.apache.bcel.classfile.FieldOrMethod; import org.apache.bcel.classfile.JavaClass; import org.apache.bcel.classfile.Method; import org.apache.bcel.classfile.Synthetic; import org.apache.bcel.classfile.Utility; import org.apache.bcel.generic.ClassGen; import org.apache.bcel.generic.ConstantPoolGen; import org.apache.bcel.generic.FieldGen; import org.apache.bcel.generic.Type; import org.apache.bcel.util.ClassPath; import org.jibx.runtime.JiBXException; /** * Class file information. Wraps the actual class file data as well as * associated management information. * * @author Dennis M. Sosnoski */ public class ClassFile { // // Constants for code generation. public static final int PRIVATE_ACCESS = 0; public static final int PACKAGE_ACCESS = 1; public static final int PROTECTED_ACCESS = 2; public static final int PUBLIC_ACCESS = 3; public static final int SYNTHETIC_ACCESS_FLAG = 0x1000; protected static final int PRIVATEFIELD_ACCESS = Constants.ACC_PRIVATE | SYNTHETIC_ACCESS_FLAG; protected static final ExistingMethod[] EMPTY_METHOD_ARRAY = {}; protected static final byte[] EMPTY_BYTES = new byte[0]; public static final ClassItem[] EMPTY_CLASS_ITEMS = new ClassItem[0]; // // Class data. /** Singleton loader from classpath. */ private static ClassPath s_loader; /** Direct class loader. */ private static ClassLoader s_directLoader; // // Actual instance data. /** Fully qualified class name. */ private String m_name; /** Signature for class as type. */ private String m_signature; /** Class as type. */ private Type m_type; /** Directory root for class. */ private File m_root; /** Actual class file information. */ private File m_file; /** Class in same package as superclass flag. */ private boolean m_isSamePackage; /** File is writable flag. */ private boolean m_isWritable; /** Super class of this class (set by caller, since it may require additional information to find the class file). */ protected ClassFile m_superClass; /** Names of all interfaces directly implemented by this class. */ protected String[] m_interfaceNames; /** Class files of interfaces extended by interface. */ private ClassFile[] m_superInterfaces; /** All classes and interfaces of which this is an instance (lazy create, only if needed. */ private String[] m_instanceOfs; /** All methods defined by this class or interface (lazy create, only if needed). */ private Method[] m_methods; /** Base class information as loaded by BCEL. */ private JavaClass m_curClass; /** Modified class generator (lazy create, only if needed). */ private ClassGen m_genClass; /** Constant pool generator for modified class (lazy create, only if needed). */ private ConstantPoolGen m_genPool; /** Instruction factory for modified class (lazy create, only if needed). */ protected InstructionBuilder m_instBuilder; /** Map for method names with possibly generated suffixes (lazy create, only if needed). */ private HashMap m_suffixMap; /** Map to class item information. */ private HashMap m_itemMap; /** Flag for class modified. */ private boolean m_isModified; /** Usage count for this class. */ private int m_useCount; /** Hash code computation for class is current flag. */ private boolean m_isHashCurrent; /** Cached hash code value for class. */ private int m_hashCode; /** Depth of superclass hierarchy for class (lazy computation). */ private int m_inheritDepth; /** Suffix number for making method names unique (lazy computation). */ private int m_uniqueIndex; /** Added default constructor for class. */ private ClassItem m_defaultConstructor; /** * Constructor for class file loaded from a stream. Loads the class data * and prepares it for use. * * @param name fully qualified class name * @param path class file path * @param ins input stream for class file data * @throws JiBXException if unable to load class file */ public ClassFile(String name, String path, InputStream ins) throws JiBXException { init(name, path, ins); } /** * Constructor for preexisting class file. Loads the class data and * prepares it for use. * * @param name fully qualified class name * @param root directory root from class loading path list * @param file actual class file * @throws IOException if unable to open file * @throws JiBXException if error in reading class file */ public ClassFile(String name, File root, File file) throws IOException, JiBXException { init(name, root.getPath(), new FileInputStream(file)); m_root = root; m_file = file; m_isWritable = file.canWrite(); } /** * Constructor for preexisting class file from classpath. Loads the class * data and prepares it for use. * * @param name fully qualified class name * @throws IOException if unable to open file * @throws JiBXException if error in reading class file */ public ClassFile(String name) throws IOException, JiBXException { // try out class path first, then BCEL system path ClassPath.ClassFile cf = null; try { cf = s_loader.getClassFile(name); } catch (IOException ex) { try { cf = ClassPath.SYSTEM_CLASS_PATH.getClassFile(name); } catch (IOException ex1) { /* deliberately left empty */ } } if (cf == null) { throw new JiBXException("Class " + name + " not found in any classpath"); } else { init(name, cf.getPath(), cf.getInputStream()); } } /** * Constructor for synthetic placeholder classfile with no backing class * data. * * @param name fully qualified class name * @param sig corresponding class signature */ public ClassFile(String name, String sig) { m_name = name; m_signature = sig; m_type = Type.getType(sig); m_interfaceNames = new String[0]; m_superInterfaces = new ClassFile[0]; m_itemMap = new HashMap(); } /** * Constructor for new class file. Initializes the class data and * prepares it for use. * * @param name fully qualified class name * @param root directory root from class loading path list * @param sclas superclass of new class * @param access access flags for class * @param impls array of interfaces implemented by new class * @throws JiBXException on error loading interface information */ public ClassFile(String name, File root, ClassFile sclas, int access, String[] impls) throws JiBXException { String fname = name.replace('.', File.separatorChar)+".class"; File file = new File(root, fname); m_name = name; m_signature = Utility.getSignature(name); m_type = ClassItem.typeFromName(name); m_root = root; m_superClass = sclas; m_interfaceNames = impls; m_file = file; m_isWritable = true; m_genClass = new ClassGen(name, sclas.getName(), "", access | SYNTHETIC_ACCESS_FLAG, impls); m_genPool = m_genClass.getConstantPool(); int index = m_genPool.addUtf8("Synthetic"); m_genClass.addAttribute(new Synthetic(index, 0, EMPTY_BYTES, m_genPool.getConstantPool())); m_instBuilder = new InstructionBuilder(m_genClass, m_genPool); m_itemMap = new HashMap(); initInterface(); ClassCache.addClassFile(this); } /** * Internal initialization method. This is used to handle common * initialization for the constructors. * * @param name fully qualified class name * @param path class file path * @param ins input stream for class file data * @throws JiBXException if unable to load class file */ private void init(String name, String path, InputStream ins) throws JiBXException { m_name = name; m_signature = Utility.getSignature(name); m_type = ClassItem.typeFromName(name); m_itemMap = new HashMap(); if (path == null) { m_interfaceNames = new String[0]; } else { String fname = name.replace('.', File.separatorChar) + ".class"; ClassParser parser = new ClassParser(ins, fname); try { m_curClass = parser.parse(); m_interfaceNames = m_curClass.getInterfaceNames(); } catch (Exception ex) { throw new JiBXException("Error reading path " + path + " for class " + name); } } initInterface(); } /** * Retrieve superinterfaces for an interface class. These are collected at * initialization so that we can support getting the full set of methods * later without worrying about throwing an exception. * * @throws JiBXException on error loading interface information */ private void initInterface() throws JiBXException { if (isInterface() && m_interfaceNames.length > 0) { ClassFile[] supers = new ClassFile[m_interfaceNames.length]; for (int i = 0; i < m_interfaceNames.length; i++) { supers[i] = ClassCache.getClassFile(m_interfaceNames[i]); } m_superInterfaces = supers; } else { m_superInterfaces = new ClassFile[0]; } } /** * Check if class is an interface. This only checks existing classes, * assuming that no generated classes are interfaces. * * @return true if an interface, false if not */ public boolean isInterface() { return m_curClass != null && m_curClass.isInterface(); } /** * Check if class is abstract. This only checks existing classes, * assuming that no generated classes are abstract. * * @return true if an abstract class, false if not */ public boolean isAbstract() { return m_curClass != null && m_curClass.isAbstract(); } /** * Check if class is an array. This only checks existing classes, * assuming that no generated classes are arrays. * * @return true if an array class, false if not */ public boolean isArray() { return m_name.endsWith("[]"); } /** * Check if class is modifiable. * * @return true if class is modifiable, false if * not */ public boolean isModifiable() { return m_isWritable && !isInterface(); } /** * Get fully qualified class name. * * @return fully qualified name for class */ public String getName() { return m_name; } /** * Get signature for class as type. * * @return signature for class used as type */ public String getSignature() { return m_signature; } /** * Get class as type. * * @return class as type */ public Type getType() { return m_type; } /** * Get package name. * * @return package name for class */ public String getPackage() { int split = m_name.lastIndexOf('.'); if (split >= 0) { return m_name.substring(0, split); } else { return ""; } } /** * Get root directory for load path. * * @return root directory in path used for loading file */ public File getRoot() { return m_root; } /** * Get actual file for class. * * @return file used for class */ public File getFile() { return m_file; } /** * Get raw current class information. * * @return raw current class information */ public JavaClass getRawClass() { if (m_curClass == null) { throw new IllegalStateException ("No loadable class information for " + m_name); } else { return m_curClass; } } /** * Get superclass name. * * @return fully qualified name of superclass */ public String getSuperName() { if (m_curClass == null) { return null; } else { return m_curClass.getSuperclassName(); } } /** * Set superclass information. * * @param sclas superclass information */ public void setSuperFile(ClassFile sclas) { m_superClass = sclas; m_isSamePackage = getPackage().equals(sclas.getPackage()); } /** * Get superclass information. * * @return super class information as loaded (null if no * superclass - java.lang.Object, interface, or primitive) */ public ClassFile getSuperFile() { return m_superClass; } /** * Get names of all interfaces implemented by class. * * @return names of all interfaces implemented directly by class */ public String[] getInterfaces() { return m_interfaceNames; } /** * Add interface to class. The interface is added to the class if not * already defined. * * @param intf fully qualified interface name * @return true if added, false if already present * @throws JiBXException on configuration error */ public boolean addInterface(String intf) throws JiBXException { ClassGen gen = getClassGen(); String[] intfs = gen.getInterfaceNames(); for (int i = 0; i < intfs.length; i++) { if (intf.equals(intfs[i])) { return false; } } gen.addInterface(intf); m_isModified = true; m_instanceOfs = null; return true; } /** * Accumulate interface signatures recursively. * * @param intfs names of interfaces implemented * @param map map for interfaces already accumulated * @param accs accumulated interface names * @throws JiBXException if configuration error */ protected void accumulateInterfaces(String[] intfs, HashMap map, ArrayList accs) throws JiBXException { for (int i = 0; i < intfs.length; i++) { String name = intfs[i]; if (map.get(name) == null) { ClassFile cf = ClassCache.getClassFile(name); String sig = cf.getSignature(); map.put(name, sig); accs.add(sig); String[] inherits = cf.m_curClass.getInterfaceNames(); accumulateInterfaces(inherits, map, accs); } } } /** * Get signatures for all types of which instances of this type are * instances. * * @return all signatures suppored by instances * @throws JiBXException if configuration error */ public String[] getInstanceSigs() throws JiBXException { if (m_instanceOfs == null) { // check for an array class String name = getName(); if (name.endsWith("[]")) { // accumulate prefix by stripping suffixes String prefix = ""; do { name = name.substring(0, name.length()-2); prefix = prefix + '['; } while (name.endsWith("[]")); // check for a primitive base type on array String[] bsigs; if (ClassItem.isPrimitive(name)) { bsigs = new String[1]; bsigs[0] = ClassItem.getPrimitiveSignature(name); } else { ClassFile bcf = ClassCache.getClassFile(name); bsigs = bcf.getInstanceSigs(); } // derive array signatures from signatures for base type String[] asigs = new String[bsigs.length+1]; for (int i = 0; i < bsigs.length; i++) { asigs[i] = prefix + bsigs[i]; } asigs[bsigs.length] = "Ljava/lang/Object;"; m_instanceOfs = asigs; } else { // walk all classes and interfaces to find signatures HashMap map = new HashMap(); ArrayList iofs = new ArrayList(); ClassFile cur = this; while (cur != null) { String sig = cur.getSignature(); map.put(name, sig); iofs.add(sig); accumulateInterfaces(cur.getInterfaces(), map, iofs); cur = cur.getSuperFile(); } String[] sigs = new String[iofs.size()]; m_instanceOfs = (String[])iofs.toArray(sigs); } } return m_instanceOfs; } /** * Check if class implements an interface. * * @param sig signature of interface to be checked * @return true if interface is implemented by class, * false if not * @throws JiBXException if configuration error */ public boolean isImplements(String sig) throws JiBXException { String[] sigs = getInstanceSigs(); for (int i = 0; i < sigs.length; i++) { if (sig.equals(sigs[i])) { return true; } } return false; } /** * Check if another class is a superclass of this one. * * @param name of superclass to be checked * @return true if named class is a superclass of this one, * false if not */ public boolean isSuperclass(String name) { ClassFile cur = this; while (cur != null) { if (cur.getName().equals(name)) { return true; } else { cur = cur.getSuperFile(); } } return false; } /** * Get array of fields defined by class. * * @return array of fields defined by class */ public ClassItem[] getFieldItems() { if (m_curClass == null) { return EMPTY_CLASS_ITEMS; } else { Field[] fields = m_curClass.getFields(); ClassItem[] items = new ClassItem[fields.length]; for (int i = 0; i < fields.length; i++) { Field field = fields[i]; items[i] = new ClassItem(field.getName(), this, field); } return items; } } /** * Get internal information for field. This can only be used with * existing classes, and only checks for fields that are actually members * of the class (not superclasses). * * @param name field name * @return field information, or null if field not found */ protected Field getDefinedField(String name) { // check for match to field name defined in class Field[] fields = m_curClass.getFields(); for (int i = 0; i < fields.length; i++) { if (fields[i].getName().equals(name)) { return fields[i]; } } return null; } /** * Get internal information for field. This can only be used with existing * classes. If the field is not found directly, superclasses are checked for * inherited fields matching the supplied name. * * @param name field name * @return field information, or null if field not found */ protected Field getAccessibleField(String name) { // always return not found for unloadable class if (m_curClass == null) { return null; } else { // check for match to field name defined in class Field field = getDefinedField(name); if (field == null) { // try match to field inherited from superclass if (m_superClass != null) { field = m_superClass.getAccessibleField(name); if (field != null && (!m_isSamePackage || field.isPrivate()) && !field.isPublic() && !field.isProtected()) { field = null; } } } return field; } } /** * Get information for field. This can only be used with existing classes, * and only checks for fields that are actually members of the class (not * superclasses). * * @param name field name * @return field information, or null if field not found */ public ClassItem getDirectField(String name) { Field field = getAccessibleField(name); if (field == null) { return null; } else { ClassItem item = (ClassItem)m_itemMap.get(field); if (item == null) { item = new ClassItem(name, this, field); m_itemMap.put(field, item); } return item; } } /** * Get information for field. This can only be used with existing classes. * If the field is not found directly, superclasses are checked for * inherited fields matching the supplied name. * * @param name field name * @return field information * @throws JiBXException if field not found */ public ClassItem getField(String name) throws JiBXException { Field field = getAccessibleField(name); if (field == null) { throw new JiBXException("Field " + name + " not found in class " + m_name); } else { ClassItem item = (ClassItem)m_itemMap.get(field); if (item == null) { item = new ClassItem(name, this, field); m_itemMap.put(field, item); } return item; } } /** * Get array of methods defined by class or interface. In the case of an * interface, this merges all methods from superinterfaces in the array * returned. * * @return array of methods defined by class */ private Method[] getMethods() { if (m_methods == null) { // start with methods defined directly Method[] methods = null; if (m_genClass != null) { methods = m_genClass.getMethods(); } else { methods = m_curClass.getMethods(); } if (m_curClass.isInterface() && m_superInterfaces.length > 0) { // for interface extending other interfaces, merge methods ArrayList merges = new ArrayList(); for (int i = 0; i < methods.length; i++) { merges.add(methods[i]); } for (int i = 0; i < m_superInterfaces.length; i++) { methods = m_superInterfaces[i].getMethods(); for (int j = 0; j < methods.length; j++) { merges.add(methods[j]); } } // set merged array methods = (Method[])merges.toArray(new Method[merges.size()]); } // cache the created method array m_methods = methods; } return m_methods; } /** * Get array of methods defined by class. * * @return array of methods defined by class */ public ClassItem[] getMethodItems() { if (m_curClass == null) { return EMPTY_CLASS_ITEMS; } else { Method[] methods = getMethods(); ClassItem[] items = new ClassItem[methods.length]; for (int i = 0; i < methods.length; i++) { Method method = methods[i]; items[i] = new ClassItem(method.getName(), this, method); } return items; } } /** * Get internal information for method without respect to potential trailing * arguments or return value. This can only be used with existing classes. * If the method is not found directly, superclasses are checked for * inherited methods matching the supplied name. This compares the supplied * partial signature against the actual method signature, and considers it * a match if the actual sigature starts with the supplied signature.. * * @param name method name * @param sig partial method signature to be matched * @return method information, or null if method not found */ protected Method getAccessibleMethod(String name, String sig) { // only check loadable classes if (m_curClass != null) { // check for match to method defined in class Method[] methods = getMethods(); for (int i = 0; i < methods.length; i++) { Method method = methods[i]; if (method.getName().equals(name)) { if (method.getSignature().startsWith(sig)) { return method; } } } // try match to method inherited from superclass if (m_superClass != null) { Method method = m_superClass.getAccessibleMethod(name, sig); if (method != null && ((m_isSamePackage && !method.isPrivate()) || method.isPublic() || method.isProtected())) { return method; } } } return null; } /** * Get information for method without respect to potential trailing * arguments or return value. This can only be used with existing classes. * If the method is not found directly, superclasses are checked for * inherited methods matching the supplied name. This compares the supplied * partial signature against the actual method signature, and considers it * a match if the actual sigature starts with the supplied signature.. * * @param name method name * @param sig partial method signature to be matched * @return method information, or null if method not found */ public ClassItem getMethod(String name, String sig) { Method method = getAccessibleMethod(name, sig); if (method == null) { return null; } else { ClassItem item = (ClassItem)m_itemMap.get(method); if (item == null) { item = new ClassItem(name, this, method); m_itemMap.put(method, item); } return item; } } /** * Get information for method matching one of several possible signatures. * This can only be used with existing classes. If a match is not found * directly, superclasses are checked for inherited methods matching the * supplied name and signatures. The signature variations are checked in * the order supplied. * * @param name method name * @param sigs possible signatures for method (including return type) * @return method information, or null if method not found */ public ClassItem getMethod(String name, String[] sigs) { Method method = null; for (int i = 0; method == null && i < sigs.length; i++) { method = getAccessibleMethod(name, sigs[i]); } if (method == null) { return null; } else { ClassItem item = (ClassItem)m_itemMap.get(method); if (item == null) { item = new ClassItem(name, this, method); m_itemMap.put(method, item); } return item; } } /** * Check for match to specified access level. This treats a field or method * as matching if the access level is the same as or more open than the * required level. * * @param item information for field or method to be checked * @param access required access level for match * @return true if access level match, false if * not */ private static boolean matchAccess(FieldOrMethod item, int access) { if (item.isPublic()) { return true; } else if (item.isProtected()) { return access <= PROTECTED_ACCESS; } else if (item.isPrivate()) { return access == PRIVATE_ACCESS; } else { return access <= PACKAGE_ACCESS; } } /** * Check if one type is assignment compatible with another type. This is an * ugly replacement for apparently broken BCEL code. * * @param have type being checked * @param need type needed * @return true if compatible, false if not */ private static boolean isAssignmentCompatible(Type have, Type need) { if (have.equals(need)) { return true; } else { try { return ClassItem.isAssignable(have.toString(), need.toString()); } catch (JiBXException e) { throw new IllegalStateException ("Internal error: Unable to access data for " + have.toString() + " or " + need.toString() + ":\n" + e.getMessage()); } } } /** * Get information for best matching method. This tries to find a method * which matches the specified name, return type, and argument types. If an * exact match is not found it looks for a method with a return type that * is extended or implemented by the specified type and arguments that are * extended or implemented by the specified types. This can only be used * with existing classes. If the method is not found directly, superclasses * are checked for inherited methods. * * @param name method name * @param access access level required for matching methods * @param ret return value type (null if indeterminant) * @param args argument value types * @return method information, or null if method not found */ private Method getBestAccessibleMethod(String name, int access, Type ret, Type[] args) { // just fail for classes that aren't loadable if (m_curClass == null) { return null; } // check for match to method defined in class Method[] methods = getMethods(); Method best = null; int diff = Integer.MAX_VALUE; for (int i = 0; i < methods.length; i++) { Method method = methods[i]; if (method.getName().equals(name) && matchAccess(method, access)) { // make sure the return type is compatible boolean match = true; int ndiff = 0; if (ret != null) { Type type = method.getReturnType(); match = isAssignmentCompatible(ret, type); } if (match) { // check closeness of argument types Type[] types = method.getArgumentTypes(); if (args.length == types.length) { for (int j = 0; j < args.length; j++) { Type type = types[j]; Type arg = args[j]; if (!type.equals(arg)) { ndiff++; match = isAssignmentCompatible(arg, type); if (!match) { break; } } } } else { match = false; } } if (match && ndiff < diff) { best = method; } } } if (best != null) { return best; } // try methods inherited from superclass if no match found if (m_superClass != null) { if (access < PROTECTED_ACCESS) { if (m_isSamePackage) { access = PACKAGE_ACCESS; } else { access = PROTECTED_ACCESS; } } return m_superClass.getBestAccessibleMethod(name, access, ret, args); } else { return null; } } /** * Get information for best matching method. This tries to find a method * which matches the specified name, return type, and argument types. If an * exact match is not found it looks for a method with a return type that * is extended or implemented by the specified type and arguments that are * extended or implemented by the specified types. This can only be used * with existing classes. If the method is not found directly, superclasses * are checked for inherited methods. * * @param name method name * @param ret return value type (null if indeterminant) * @param args argument value types * @return method information, or null if method not found */ public ClassItem getBestMethod(String name, String ret, String[] args) { Type rtype = null; if (ret != null) { rtype = ClassItem.typeFromName(ret); } Type[] atypes = new Type[args.length]; for (int i = 0; i < args.length; i++) { atypes[i] = ClassItem.typeFromName(args[i]); } Method method = getBestAccessibleMethod(name, PRIVATE_ACCESS, rtype, atypes); if (method == null) { return null; } ClassItem item = (ClassItem)m_itemMap.get(method); if (item == null) { item = new ClassItem(name, this, method); m_itemMap.put(method, item); } return item; } /** * Get information for initializer. This can only be used with existing * classes. Only the class itself is checked for an initializer matching * the argument list signature. * * @param sig encoded argument list signature * @return method information, or null if method not found */ public ClassItem getInitializerMethod(String sig) { // only check if loadable class if (m_curClass != null) { // check for match to method defined in class Method[] methods = getMethods(); for (int i = 0; i < methods.length; i++) { Method method = methods[i]; if (method.getName().equals("")) { if (method.getSignature().startsWith(sig)) { ClassItem item = (ClassItem)m_itemMap.get(method); if (item == null) { item = new ClassItem("", this, method); m_itemMap.put(method, item); } return item; } } } } return null; } /** * Get information for static method without respect to return value. This * can only be used with existing classes. Only the class itself is checked * for a method matching the supplied name and argument list signature. * * @param name method name * @param sig encoded argument list signature * @return method information, or null if method not found */ public ClassItem getStaticMethod(String name, String sig) { // only check if loadable class if (m_curClass != null) { // check for match to method defined in class Method[] methods = getMethods(); for (int i = 0; i < methods.length; i++) { Method method = methods[i]; if (method.getName().equals(name) && method.isStatic()) { if (method.getSignature().startsWith(sig)) { ClassItem item = (ClassItem)m_itemMap.get(method); if (item == null) { item = new ClassItem(name, this, method); m_itemMap.put(method, item); } return item; } } } } return null; } /** * Get all binding methods currently defined in class. Binding methods are * generally identified by a supplied prefix, but additional methods * can be specified the the combination of exact name and signature. This * is a little kludgy, but necessary to handle the "marshal" method added * to mapped classes. * * @param prefix identifying prefix for binding methods * @param matches pairs of method name and signature to be matched as * exceptions to the prefix matching * @return existing binding methods */ public ExistingMethod[] getBindingMethods(String prefix, String[] matches) { // return empty array if newly created class or unloadable class if (m_curClass == null) { return EMPTY_METHOD_ARRAY; } // check for binding methods defined in class Method[] methods = getMethods(); int count = 0; for (int i = 0; i < methods.length; i++) { Method method = methods[i]; String name = method.getName(); if (name.startsWith(prefix)) { count++; } else { String sig = method.getSignature(); for (int j = 0; j < matches.length; j += 2) { if (name.equals(matches[j]) && sig.equals(matches[j+1])) { count++; break; } } } } // generate array of methods found if (count == 0) { return EMPTY_METHOD_ARRAY; } else { ExistingMethod[] exists = new ExistingMethod[count]; int fill = 0; for (int i = 0; i < methods.length; i++) { Method method = methods[i]; String name = method.getName(); boolean match = name.startsWith(prefix); if (!match) { String sig = method.getSignature(); for (int j = 0; j < matches.length; j += 2) { if (name.equals(matches[j]) && sig.equals(matches[j+1])) { match = true; break; } } } if (match) { ClassItem item = (ClassItem)m_itemMap.get(method); if (item == null) { item = new ClassItem(name, this, method); m_itemMap.put(method, item); } exists[fill++] = new ExistingMethod(method, item, this); } } return exists; } } /** * Check accessible method. Check if a field or method in another class is * accessible from within this class. * * @param item field or method information * @return true if accessible, false if not */ public boolean isAccessible(ClassItem item) { if (item.getClassFile() == this) { return true; } else { int access = item.getAccessFlags(); if ((access & Constants.ACC_PUBLIC) != 0) { return true; } else if ((access & Constants.ACC_PRIVATE) != 0) { return false; } else if (getPackage().equals(item.getClassFile().getPackage())) { return true; } else if ((access & Constants.ACC_PROTECTED) != 0) { ClassFile target = item.getClassFile(); ClassFile ancestor = this; while ((ancestor = ancestor.getSuperFile()) != null) { if (ancestor == target) { return true; } } return false; } else { return false; } } } /** * Get generator for modifying class. * * @return generator for class * @throws JiBXException if class not modifiable */ private ClassGen getClassGen() throws JiBXException { if (m_genClass == null) { if (m_isWritable) { m_genClass = new ClassGen(m_curClass); m_genPool = m_genClass.getConstantPool(); m_instBuilder = new InstructionBuilder(m_genClass, m_genPool); m_isHashCurrent = false; } else { throw new JiBXException("Cannot modify class " + m_name); } } return m_genClass; } /** * Get constant pool generator for modifying class. * * @return constant pool generator for class * @throws JiBXException if class not modifiable */ public ConstantPoolGen getConstPoolGen() throws JiBXException { if (m_genPool == null) { getClassGen(); } return m_genPool; } /** * Get instruction builder for modifying class. * * @return instruction builder for class * @throws JiBXException if class not modifiable */ public InstructionBuilder getInstructionBuilder() throws JiBXException { if (m_instBuilder == null) { getClassGen(); } return m_instBuilder; } /** * Add method to class. * * @param method method to be added * @return added method information * @throws JiBXException on error in adding method */ public ClassItem addMethod(Method method) throws JiBXException { getClassGen().addMethod(method); setModified(); String mname = method.getName(); if (m_suffixMap != null && isSuffixName(mname)) { m_suffixMap.put(mname, method); } m_methods = null; return new ClassItem(mname, this, method); } /** * Remove method from class. * * @param method method to be removed * @throws JiBXException on error in removing method */ public void removeMethod(Method method) throws JiBXException { getClassGen().removeMethod(method); setModified(); String mname = method.getName(); if (m_suffixMap != null && isSuffixName(mname)) { m_suffixMap.remove(mname); } m_methods = null; } /** * Add field to class with initial String value. If a field * with the same name already exists, it is overwritten. * * @param type fully qualified class name of field type * @param name field name * @param access access flags for field * @param init initial value for field * @return field information * @throws JiBXException if unable to add field */ public ClassItem addField(String type, String name, int access, String init) throws JiBXException { deleteField(name); FieldGen fgen = new FieldGen(access, Type.getType(Utility.getSignature(type)), name, getConstPoolGen()); fgen.setInitValue(init); Field field = fgen.getField(); getClassGen().addField(field); m_isModified = true; m_isHashCurrent = false; return new ClassItem(name, this, field); } /** * Update class field with initial String value. If the field * already exists with the same characteristics it is left unchanged; * otherwise any existing field with the same name is overwritten. * * @param type fully qualified class name of field type * @param name field name * @param access access flags for field * @param init initial value for field * @return field information * @throws JiBXException if unable to add field */ public ClassItem updateField(String type, String name, int access, String init) throws JiBXException { // first check for match with existing field Field[] fields = m_curClass.getFields(); for (int i = 0; i < fields.length; i++) { Field field = fields[i]; if (field.getName().equals(name) && field.getAccessFlags() == access) { String sig = field.getSignature(); if (type.equals(Utility.signatureToString(sig, false))) { ConstantValue cval = field.getConstantValue(); if (cval != null) { int index = cval.getConstantValueIndex(); ConstantPool cp = m_curClass.getConstantPool(); Constant cnst = cp.getConstant(index); if (cnst instanceof ConstantString) { Object value = ((ConstantString)cnst). getConstantValue(cp); if (init.equals(value)) { return new ClassItem(name,this, field); } } } } } } // no exact match, so replace any existing field with same name deleteField(name); FieldGen fgen = new FieldGen(access, Type.getType(Utility.getSignature(type)), name, getConstPoolGen()); fgen.setInitValue(init); Field field = fgen.getField(); getClassGen().addField(field); m_isModified = true; m_isHashCurrent = false; return new ClassItem(name, this, field); } /** * Add field to class without initialization. If a field with the same name * already exists, it is overwritten. * * @param type fully qualified class name of field type * @param name field name * @param access access flags for field * @return field information * @throws JiBXException if unable to add field */ public ClassItem addField(String type, String name, int access) throws JiBXException { deleteField(name); FieldGen fgen = new FieldGen(access, Type.getType(Utility.getSignature(type)), name, getConstPoolGen()); Field field = fgen.getField(); getClassGen().addField(field); m_isModified = true; m_isHashCurrent = false; return new ClassItem(name, this, field); } /** * Add private field to class without initialization. If a field * with the same name already exists, it is overwritten. * * @param type fully qualified class name of field type * @param name field name * @return field information * @throws JiBXException if unable to add field */ public ClassItem addPrivateField(String type, String name) throws JiBXException { return addField(type, name, PRIVATEFIELD_ACCESS); } /** * Add default constructor to a class. The added default constructor just * calls the default constructor for the superclass. If the superclass * doesn't have a default constructor, this method is called recursively to * add one if possible. * * @return constructor information * @throws JiBXException if unable to add constructor */ public ClassItem addDefaultConstructor() throws JiBXException { if (m_defaultConstructor == null) { // check for default constructor in superclass ClassItem cons = m_superClass.getInitializerMethod("()V"); if (cons == null) { if (m_superClass.addDefaultConstructor() == null) { return null; } } else { cons.makeAccessible(this); } // add the public constructor method ExceptionMethodBuilder mb = new ExceptionMethodBuilder("", Type.VOID, new Type[0], this, Constants.ACC_PUBLIC); // call the superclass constructor mb.appendLoadLocal(0); mb.appendCallInit(m_superClass.getName(), "()V"); // finish with return mb.appendReturn(); mb.codeComplete(false); m_defaultConstructor = mb.addMethod(); } return m_defaultConstructor; } /** * Check if a method name matches the pattern for a generated unique suffix. * * @param name method name to be checked * @return true if name matches suffix pattern, * false if not */ private static boolean isSuffixName(String name) { int last = name.length() - 1; for (int i = last; i > 0; i--) { char chr = name.charAt(i); if (chr == '_') { return i < last; } else if (!Character.isDigit(chr)) { break; } } return false; } /** * Make method name unique with generated suffix. The suffixed method name * is tracked so that it will not be used again. * * @param name base name before suffix is appended * @return name with unique suffix appended */ public String makeUniqueMethodName(String name) { // check if map creation is needed if (m_suffixMap == null) { m_suffixMap = new HashMap(); if (m_curClass != null) { Method[] methods = getMethods(); for (int i = 0; i < methods.length; i++) { Method method = methods[i]; String mname = method.getName(); if (isSuffixName(mname)) { m_suffixMap.put(mname, method); } } } } // check if inheritance depth is needed if (m_inheritDepth == 0) { ClassFile cf = this; while ((cf = cf.getSuperFile()) != null) { m_inheritDepth++; } } // generate suffix to make name unique, trying low values first while (true) { String uname = name + '_' + m_inheritDepth + '_' + m_uniqueIndex; if (m_suffixMap.get(uname) == null) { return uname; } else { m_uniqueIndex++; } } } /** * Delete field from class. * * @param name field name * @return true if field was present, false if not * @throws JiBXException if unable to delete field */ public boolean deleteField(String name) throws JiBXException { ClassGen cg = getClassGen(); Field field = cg.containsField(name); if (field == null) { return false; } else { cg.removeField(field); m_isModified = true; m_isHashCurrent = false; return true; } } /** * Get use count for class. * * @return use count for this class */ public int getUseCount() { return m_useCount; } /** * Increment use count for class. * * @return use count (after increment) */ public int incrementUseCount() { return ++m_useCount; } /** * Check if class has been modified. * * @return true if class is modified, false if not */ public boolean isModified() { return m_isModified; } /** * Set class modified flag. */ public void setModified() { if (!m_isModified) { m_isModified = true; MungedClass.addModifiedClass(this); } } /** * Check if class is in complete state. * * @return true if class is complete, false if not */ public boolean isComplete() { return m_genClass == null; } /** * Computes a hash code based on characteristics of the class. The * characteristics used in computing the hash code include the base class, * implemented interfaces, method names, field names, and package, but not * the actual class name or signature. The current static version of the * class is used for this computation, so if the class is being modified * {@link #codeComplete} should be called before this method. Note that this * is designed for use with the classes generated by JiBX, and is not * necessarily a good model for general usage. * * @return computed hash code value */ protected int computeHashCode() { // start with basic characteristics of class int hash = getPackage().hashCode(); ClassFile sfile = getSuperFile(); if (sfile != null) { hash += sfile.getName().hashCode(); } String[] intfs = getInterfaces(); for (int i = 0; i < intfs.length; i++) { hash += intfs[i].hashCode(); } hash += m_curClass.getAccessFlags(); // include field and method names Field[] fields = m_curClass.getFields(); for (int i = 0; i < fields.length; i++) { hash = hash * 49 + fields[i].getName().hashCode(); } Method[] methods = m_curClass.getMethods(); for (int i = 0; i < methods.length; i++) { hash = hash * 49 + methods[i].getName().hashCode(); } // finish with constant table simple values (except name and signature) Constant[] cnsts = m_curClass.getConstantPool().getConstantPool(); for (int i = m_curClass.getClassNameIndex()+1; i < cnsts.length; i++) { Constant cnst = cnsts[i]; if (cnst != null) { int value = 0; switch (cnst.getTag()) { case Constants.CONSTANT_Double: value = (int)Double.doubleToRawLongBits (((ConstantDouble)cnst).getBytes()); break; case Constants.CONSTANT_Float: value = Float.floatToRawIntBits (((ConstantFloat)cnst).getBytes()); break; case Constants.CONSTANT_Integer: value = ((ConstantInteger)cnst).getBytes(); break; case Constants.CONSTANT_Long: value = (int)((ConstantLong)cnst).getBytes(); break; case Constants.CONSTANT_Utf8: String text = ((ConstantUtf8)cnst).getBytes(); if (!text.equals(m_signature)) { value = text.hashCode(); } break; default: break; } hash = hash * 49 + value; } } // System.out.println("Hashed " + m_name + " to value " + hash); return hash; } /** * Finalize current modified state of class. This converts the modified * class state into a static form, then computes a hash code based on * characteristics of the class. If the class has not been modified it * just computes the hash code. Note that this won't initialize the array * of superinterfaces if used with an interface, but that shouldn't be a * problem since we don't create any interfaces. */ public void codeComplete() { if (m_genClass != null) { m_curClass = m_genClass.getJavaClass(); m_interfaceNames = m_curClass.getInterfaceNames(); m_superInterfaces = new ClassFile[0]; m_genClass = null; } } /** * Get hash code. This is based on most characteristics of the class, * including the actual methods, but excluding the class name. It is only * valid after the {@link #codeComplete} method is called. * * @return hash code based on code sequence */ public int hashCode() { if (!m_isHashCurrent) { if (m_genClass != null) { throw new IllegalStateException ("Class still being constructed"); } m_hashCode = computeHashCode(); m_isHashCurrent = true; } return m_hashCode; } /** * Compare two field or method items to see if they're equal. This handles * only the comparisons that apply to both fields and methods. It does not * include comparing access flags, since these may be different due to * access requirements. * * @param a first field or method item * @param b second field or method item * @return true if the equal, false if not */ public static boolean equalFieldOrMethods(FieldOrMethod a, FieldOrMethod b) { return a.getName().equals(b.getName()) && a.getSignature().equals(b.getSignature()); } /** * Compare two methods to see if they're equal. This checks only the details * of the exception handling and actual code, not the name or signature. * * @param a first method * @param b second method * @return true if the equal, false if not */ public static boolean equalMethods(Method a, Method b) { // check the exceptions thrown by the method ExceptionTable etaba = a.getExceptionTable(); ExceptionTable etabb = b.getExceptionTable(); if (etaba != null && etabb != null) { String[] aexcepts = etaba.getExceptionNames(); String[] bexcepts = etabb.getExceptionNames(); if (!Arrays.equals(aexcepts, bexcepts)) { return false; } } else if (etaba != null || etabb != null) { return false; } // compare the exception handling details Code acode = a.getCode(); Code bcode = b.getCode(); CodeException[] acexs = acode.getExceptionTable(); CodeException[] bcexs = bcode.getExceptionTable(); if (acexs.length == bcexs.length) { for (int i = 0; i < acexs.length; i++) { CodeException acex = acexs[i]; CodeException bcex = bcexs[i]; if (acex.getCatchType() != bcex.getCatchType() || acex.getStartPC() != bcex.getStartPC() || acex.getEndPC() != bcex.getEndPC() || acex.getHandlerPC() != bcex.getHandlerPC()) { return false; } } } // finally compare the actual byte codes return Arrays.equals(acode.getCode(), bcode.getCode()); } /** * Check if objects are equal. Compares first based on hash code, then on * the actual contents of the class, including package, implemented * interfaces, superclass, methods, and fields (but not the actual class * name). It is only valid after the {@link #codeComplete} method is called. * * @param obj * @return true if equal objects, false if not */ public boolean equals(Object obj) { if (obj instanceof ClassFile && obj.hashCode() == hashCode()) { // check basic details of the classes ClassFile comp = (ClassFile)obj; if (!org.jibx.runtime.Utility.isEqual(getPackage(), comp.getPackage()) || getSuperFile() != comp.getSuperFile() || !Arrays.equals(getInterfaces(), comp.getInterfaces())) { return false; } JavaClass tjc = m_curClass; JavaClass cjc = comp.m_curClass; if (tjc.getAccessFlags() != cjc.getAccessFlags()) { return false; } // compare the defined fields Field[] tfields = tjc.getFields(); Field[] cfields = cjc.getFields(); if (tfields.length != cfields.length) { return false; } for (int i = 0; i < tfields.length; i++) { if (!equalFieldOrMethods(tfields[i], cfields[i])) { return false; } } // compare the defined methods Method[] tmethods = tjc.getMethods(); Method[] cmethods = cjc.getMethods(); if (tmethods.length != cmethods.length) { return false; } for (int i = 0; i < tmethods.length; i++) { Method tmethod = tmethods[i]; Method cmethod = cmethods[i]; if (!equalFieldOrMethods(tmethod, cmethod) || !equalMethods(tmethod, cmethod)) { return false; } } // finish with constant table values (correcting name and signature) Constant[] tcnsts = tjc.getConstantPool().getConstantPool(); Constant[] ccnsts = cjc.getConstantPool().getConstantPool(); if (tcnsts.length != ccnsts.length) { return false; } for (int i = tjc.getClassNameIndex()+1; i < tcnsts.length; i++) { Constant tcnst = tcnsts[i]; Constant ccnst = ccnsts[i]; if (tcnst != null && ccnst != null) { int tag = tcnst.getTag(); if (tag != ccnst.getTag()) { return false; } boolean equal = true; switch (tag) { case Constants.CONSTANT_Double: equal = ((ConstantDouble)tcnst).getBytes() == ((ConstantDouble)ccnst).getBytes(); break; case Constants.CONSTANT_Float: equal = ((ConstantFloat)tcnst).getBytes() == ((ConstantFloat)ccnst).getBytes(); break; case Constants.CONSTANT_Integer: equal = ((ConstantInteger)tcnst).getBytes() == ((ConstantInteger)ccnst).getBytes(); break; case Constants.CONSTANT_Long: equal = ((ConstantLong)tcnst).getBytes() == ((ConstantLong)ccnst).getBytes(); break; case Constants.CONSTANT_Utf8: String ttext = ((ConstantUtf8)tcnst).getBytes(); String ctext = ((ConstantUtf8)ccnst).getBytes(); if (ttext.equals(m_signature)) { equal = ctext.equals(comp.m_signature); } else { equal = ttext.equals(ctext); } break; default: break; } if (!equal) { return false; } } else if (tcnst != null || ccnst != null) { return false; } } // if nothing failed, the classes are equal return true; } else { return false; } } /** * Delete class file information. Deletes the class file for this class, * if it exists. Does nothing if no class file has been generated. */ public void delete() { if (m_file.exists()) { m_file.delete(); } } /** * Write out modified class information. Writes the modified class file to * an output stream. * * @param os output stream for writing modified class * @throws IOException if error writing to file */ public void writeFile(OutputStream os) throws IOException { codeComplete(); m_curClass.dump(new BufferedOutputStream(os)); os.close(); } /** * Write out modified class information. Writes the modified class file * back out to the original file. If the class file has not been modified, * the original file is kept unchanged. * * @throws IOException if error writing to file */ public void writeFile() throws IOException { if (m_isModified) { OutputStream os = new FileOutputStream(m_file); writeFile(os); } } /** * Derive generated class name. This generates a JiBX class name from the * name of this class, using the supplied prefix and suffix information. The * derived class name is always in the same package as this class. * * @param prefix generated class name prefix * @param suffix generated class name suffix * @return derived class name */ public String deriveClassName(String prefix, String suffix) { String pack = ""; String tname = m_name; int split = tname.lastIndexOf('.'); if (split >= 0) { pack = tname.substring(0, split+1); tname = tname.substring(split+1); } return pack + prefix + tname + suffix; } /** * Set class paths to be searched. * * @param paths ordered set of paths to be searched for class files */ public static void setPaths(String[] paths) { // create full path string with separators for BCEL loader StringBuffer full = new StringBuffer(); for (int i = 0; i < paths.length; i++) { if (i > 0) { full.append(File.pathSeparatorChar); } full.append(paths[i]); } s_loader = new ClassPath(full.toString()); // create direct classloader for access to classes during binding URL[] urls = new URL[paths.length]; try { // generate array of component file or directory URLs for (int i = 0; i < urls.length; i++) { urls[i] = new File(paths[i]).toURL(); } // initialize classloader with full array of path URLs s_directLoader = new URLClassLoader(urls); } catch (MalformedURLException ex) { throw new IllegalArgumentException ("Error initializing classloading: " + ex.getMessage()); } } /** * Try loading class from classpath. * * @param name fully qualified name of class to be loaded * @return loaded class, or null if not found */ public static Class loadClass(String name) { try { return s_directLoader.loadClass(name); } catch (ClassNotFoundException ex) { return null; } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/classes/ClassItem.java0000644000175000017500000004615410737003264025325 0ustar moellermoeller/* Copyright (c) 2003-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.classes; import java.util.HashMap; import org.apache.bcel.Constants; import org.apache.bcel.classfile.Attribute; import org.apache.bcel.classfile.ExceptionTable; import org.apache.bcel.classfile.FieldOrMethod; import org.apache.bcel.classfile.LocalVariableTable; import org.apache.bcel.classfile.Method; import org.apache.bcel.classfile.Utility; import org.apache.bcel.generic.ArrayType; import org.apache.bcel.generic.ObjectType; import org.apache.bcel.generic.Type; import org.jibx.runtime.JiBXException; /** * Wrapper for field or method information. Provides the information needed * for access to either existing or added methods in existing classes. * * @author Dennis M. Sosnoski * @version 1.0 */ public class ClassItem { /** Empty array of strings. */ private static final String[] EMPTY_STRING_ARRAY = new String[0]; /** Tag value for signature attribute. */ private static final byte SIGNATURE_ATTRIBUTE_TAG = 10; /** Map for primitive type signature variants. */ private static HashMap s_primitiveMap = new HashMap(); /** Map from type name to BCEL type. */ private static HashMap s_typeMap = new HashMap(); /** Map from method signature to array of argument types. */ private static HashMap s_signatureParamsMap = new HashMap(); /** Map from method signature to return type. */ private static HashMap s_signatureTypeMap = new HashMap(); static { s_primitiveMap.put("boolean", new String[] { "Z", "I" }); s_primitiveMap.put("byte", new String[] { "B", "S", "I" }); s_primitiveMap.put("char", new String[] { "C", "I" }); s_primitiveMap.put("double", new String[] { "D" }); s_primitiveMap.put("float", new String[] { "F" }); s_primitiveMap.put("int", new String[] { "I" }); s_primitiveMap.put("long", new String[] { "J" }); s_primitiveMap.put("short", new String[] { "S", "I" }); s_primitiveMap.put("void", new String[] { "V" }); s_typeMap.put("boolean", Type.BOOLEAN); s_typeMap.put("byte", Type.BYTE); s_typeMap.put("char", Type.CHAR); s_typeMap.put("double", Type.DOUBLE); s_typeMap.put("float", Type.FLOAT); s_typeMap.put("int", Type.INT); s_typeMap.put("long", Type.LONG); s_typeMap.put("short", Type.SHORT); s_typeMap.put("void", Type.VOID); } /** Owning class information. */ private ClassFile m_classFile; /** Item name. */ private String m_name; /** Encoded signature. */ private String m_signature; /** Fully qualified class name of item type. */ private String m_typeName; /** Argument types for method. */ private String[] m_argTypes; /** Wrapped existing item. */ private FieldOrMethod m_item; /** * Constructor. Builds a wrapper for an item based on an existing field or * method. * * @param name field or method name * @param cf owning class information * @param item field or method information */ public ClassItem(String name, ClassFile cf, FieldOrMethod item) { m_classFile = cf; m_name = name; m_item = item; m_signature = item.getSignature(); if (item instanceof Method) { m_typeName = getTypeFromSignature(m_signature); m_argTypes = getParametersFromSignature(m_signature); } else { m_typeName = Utility.signatureToString(m_signature, false); } } /** * Get owning class information. * * @return owning class information */ public ClassFile getClassFile() { return m_classFile; } /** * Get item name. * * @return item name */ public String getName() { return m_name; } /** * Get item type as fully qualified class name. * * @return item type name */ public String getTypeName() { return m_typeName; } /** * Get number of arguments for method. * * @return argument count for method, or zero if not a method */ public int getArgumentCount() { if (m_item instanceof Method) { return m_argTypes.length; } else { return 0; } } /** * Get argument type as fully qualified class name. * * @param index argument number * @return argument type name */ public String getArgumentType(int index) { if (m_item instanceof Method) { return m_argTypes[index]; } else { throw new IllegalArgumentException("Internal error: not a method"); } } /** * Get method parameter name. * * @param index parameter index * @return parameter name */ public String getParameterName(int index) { if (m_item instanceof Method) { int position = index; if (!isStatic()) { position++; } LocalVariableTable vtab = ((Method)m_item).getLocalVariableTable(); if (vtab == null) { return null; } else { return vtab.getLocalVariable(position).getName(); } } else { throw new IllegalArgumentException("Internal error: not a method"); } } /** * Get argument types as array of fully qualified class names. * * @return array of argument types */ public String[] getArgumentTypes() { if (m_item instanceof Method) { return m_argTypes; } else { return null; } } /** * Get access flags. * * @return flags for access type of field or method */ public int getAccessFlags() { return m_item.getAccessFlags(); } /** * Set access flags. * * @param flags access flags for field or method */ public void setAccessFlags(int flags) { m_item.setAccessFlags(flags); m_classFile.setModified(); } /** * Make accessible item. Check if this field or method is accessible from * another class, and if not decreases the access restrictions to make it * accessible. * * @param src class file for required access * @throws JiBXException if cannot be accessed */ public void makeAccessible(ClassFile src) throws JiBXException { // no need to change if already public access int access = getAccessFlags(); if ((access & Constants.ACC_PUBLIC) == 0) { // check for same package as most restrictive case ClassFile dest = getClassFile(); if (dest.getPackage().equals(src.getPackage())) { if ((access & Constants.ACC_PRIVATE) != 0) { access = access - Constants.ACC_PRIVATE; } } else { // check if access is from a subclass of this method class ClassFile ancestor = src; while ((ancestor = ancestor.getSuperFile()) != null) { if (ancestor == dest) { break; } } // handle access adjustments based on subclass status if (ancestor == null) { int clear = Constants.ACC_PRIVATE | Constants.ACC_PROTECTED; access = (access & ~clear) | Constants.ACC_PUBLIC; } else if ((access & Constants.ACC_PROTECTED) == 0) { access = (access & ~Constants.ACC_PRIVATE) | Constants.ACC_PROTECTED; } } // set new access flags if (access != getAccessFlags()) { if (dest.isModifiable()) { setAccessFlags(access); } else { throw new JiBXException ("Unable to change access permissions for " + getName() + " in class " + src.getName()); } } } } /** * Check if item is a static. * * @return true if a static, false if member */ public boolean isStatic() { return (getAccessFlags() & Constants.ACC_STATIC) != 0; } /** * Get method signature. * * @return encoded method signature */ public String getSignature() { return m_signature; } /** * Check if item is a method. * * @return true if a method, false if a field */ public boolean isMethod() { return m_item == null || m_item instanceof Method; } /** * Check if item is an initializer. * * @return true if an initializer, false if a * field or normal method */ public boolean isInitializer() { return m_item != null && m_item.getName().equals(""); } /** * Get names of exceptions thrown by method. * * @return array of exceptions thrown by method, or null if * a field */ public String[] getExceptions() { if (m_item instanceof Method) { ExceptionTable etab = ((Method)m_item).getExceptionTable(); if (etab != null) { return etab.getExceptionNames(); } else { return EMPTY_STRING_ARRAY; } } return null; } /** * Get the generics signature information for item. * * @return generics signature (null if none) */ public String getGenericsSignature() { Attribute[] attrs = m_item.getAttributes(); for (int j = 0; j < attrs.length; j++) { Attribute attr = attrs[j]; if (attr.getTag() == SIGNATURE_ATTRIBUTE_TAG) { return attr.toString(); } } return null; } /** * Check if type is a primitive. * * @param type * @return true if a primitive, false if not */ public static boolean isPrimitive(String type) { return s_primitiveMap.get(type) != null; } /** * Get the signature for a primitive. * * @param type * @return signature for a primitive type */ public static String getPrimitiveSignature(String type) { return ((String[])s_primitiveMap.get(type))[0]; } /** * Get parameter type names from method signature. * * @param sig method signature to be decoded * @return array of argument type names */ public static String[] getParametersFromSignature(String sig) { String[] types = (String[])s_signatureParamsMap.get(sig); if (types == null) { types = Utility.methodSignatureArgumentTypes(sig, false); s_signatureParamsMap.put(sig, types); } return types; } /** * Get return type names from method signature. * * @param sig method signature to be decoded * @return return type name */ public static String getTypeFromSignature(String sig) { String type = (String)s_signatureTypeMap.get(sig); if (type == null) { type = Utility.methodSignatureReturnType(sig, false); s_signatureTypeMap.put(sig, type); } return type; } /** * Create type from name. * * @param name fully qualified type name * @return corresponding type */ public static Type typeFromName(String name) { // first check for type already created Type type = (Type)s_typeMap.get(name); if (type == null) { // new type, strip off array dimensions int dimen = 0; String base = name; while (base.endsWith("[]")) { dimen++; base = base.substring(0, base.length()-2); } // check for base type defined if array if (dimen > 0) { type = (Type)s_typeMap.get(base); } // create and record base type if new if (type == null) { type = new ObjectType(base); s_typeMap.put(base, type); } // create and record array type if (dimen > 0) { type = new ArrayType(type, dimen); s_typeMap.put(name, type); } } return type; } /** * Get virtual method by fully qualified name. This splits the class * name from the method name, finds the class, and then tries to find a * matching method name in that class or a superclass. * * @param name fully qualified class and method name * @param sigs possible method signatures * @return information for the method, or null if not found * @throws JiBXException if configuration error */ public static ClassItem findVirtualMethod(String name, String[] sigs) throws JiBXException { // get the class containing the method int split = name.lastIndexOf('.'); String cname = name.substring(0, split); String mname = name.substring(split+1); ClassFile cf = ClassCache.getClassFile(cname); // find the method in class or superclass for (int i = 0; i < sigs.length; i++) { ClassItem method = cf.getMethod(mname, sigs[i]); if (method != null) { return method; } } return null; } /** * Get static method by fully qualified name. This splits the class * name from the method name, finds the class, and then tries to find a * matching method name in that class. * * @param name fully qualified class and method name * @param sigs possible method signatures * @return information for the method, or null if not found * @throws JiBXException if configuration error */ public static ClassItem findStaticMethod(String name, String[] sigs) throws JiBXException { // get the class containing the method int split = name.lastIndexOf('.'); String cname = name.substring(0, split); String mname = name.substring(split+1); ClassFile cf = ClassCache.getClassFile(cname); // find the method in class or superclass for (int i = 0; i < sigs.length; i++) { ClassItem method = cf.getStaticMethod(mname, sigs[i]); if (method != null) { return method; } } return null; } /** * Get all variant signatures for a fully qualified class name. The * returned array gives all signatures (for interfaces or classes) which * instances of the class can match. * * @param name fully qualified class name * @return possible signature variations for instances of the class * @throws JiBXException if configuration error */ public static String[] getSignatureVariants(String name) throws JiBXException { Object obj = s_primitiveMap.get(name); if (obj == null) { ClassFile cf = ClassCache.getClassFile(name); return cf.getInstanceSigs(); } else { return (String[])obj; } } /** * Check if a value of one type can be directly assigned to another type. * This is basically the equivalent of the instanceof operator, but with * application to primitive types as well as object types. * * @param from fully qualified class name of initial type * @param to fully qualified class name of assignment type * @return true if assignable, false if not * @throws JiBXException if configuration error */ public static boolean isAssignable(String from, String to) throws JiBXException { // always assignable if the two are the same if (from.equals(to)) { return true; } else { // try direct lookup for primitive types Object fobj = s_primitiveMap.get(from); Object tobj = s_primitiveMap.get(to); if (fobj == null && tobj == null) { // assignable if from type has to as a possible signature ClassFile cf = ClassCache.getClassFile(from); String[] sigs = cf.getInstanceSigs(); String match = Utility.getSignature(to); for (int i = 0; i < sigs.length; i++) { if (match.equals(sigs[i])) { return true; } } return false; } else if (fobj != null && tobj != null) { // assignable if from type has to as a possible signature String[] fsigs = (String[])fobj; String[] tsigs = (String[])tobj; if (tsigs.length == 1) { for (int i = 0; i < fsigs.length; i++) { if (fsigs[i] == tsigs[0]) { return true; } } } return false; } else { // primitive and object types never assignable return false; } } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/classes/ContextMethodBuilder.java0000644000175000017500000001577610270751224027541 0ustar moellermoeller/* Copyright (c) 2003-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.classes; import org.apache.bcel.Constants; import org.apache.bcel.generic.*; import org.jibx.runtime.JiBXException; /** * Builder for binding methods with a context and current object. Tracks the * current object reference and the context object reference positions in the * local variables table. * * @author Dennis M. Sosnoski * @version 1.0 */ public class ContextMethodBuilder extends ExceptionMethodBuilder { /** Variable slot for current object reference. */ private int m_objectSlot; /** Object type as accessed by method. */ private String m_objectType; /** Variable slot for context reference. */ private int m_contextSlot; /** Context type as accessed by method. */ private String m_contextType; /** Context type as accessed by method. */ private final boolean m_isStatic; /** * Constructor with types specified. This sets up for constructing a * binding method that uses a current object and a marshalling or * unmarshalling context. * * @param name method name to be built * @param ret method return type * @param args types of arguments * @param cf owning class file information * @param access flags for method access * @param obj variable slot for current object (negative value if to be * defined later) * @param type current object type as defined in method * @param ctx variable slot for marshalling/unmarshalling context * @param ctype context type as defined in method * @throws JiBXException on error in initializing method construction */ public ContextMethodBuilder(String name, Type ret, Type[] args, ClassFile cf, int access, int obj, String type, int ctx, String ctype) throws JiBXException { super(name, ret, args, cf, access); m_objectSlot = obj; m_objectType = type; m_contextSlot = ctx; m_contextType = ctype; m_isStatic = (access & Constants.ACC_STATIC) != 0; addException(FRAMEWORK_EXCEPTION_CLASS); } /** * Constructor from signature. * * @param name method name to be built * @param sig method signature * @param cf owning class file information * @param access flags for method access * @param obj variable slot for current object (negative value if to be * defined later) * @param type current object type * @param ctx variable slot for marshalling/unmarshalling context * @param ctype context type as defined in method * @throws JiBXException on error in initializing method construction */ public ContextMethodBuilder(String name, String sig, ClassFile cf, int access, int obj, String type, int ctx, String ctype) throws JiBXException { this(name, Type.getReturnType(sig), Type.getArgumentTypes(sig), cf, access, obj, type, ctx, ctype); } /** * Constructor from signature for public, final method. * * @param name method name to be built * @param sig method signature * @param cf owning class file information * @param obj variable slot for current object (negative value if to be * defined later) * @param type current object type * @param ctx variable slot for marshalling/unmarshalling context * @param ctype context type as defined in method * @throws JiBXException on error in initializing method construction */ public ContextMethodBuilder(String name, String sig, ClassFile cf, int obj, String type, int ctx, String ctype) throws JiBXException { this(name, sig, cf, Constants.ACC_PUBLIC|Constants.ACC_FINAL, obj, type, ctx, ctype); } /** * Set current object slot. Sets the local variable position of the current * object, as required when the object is actually created within the * method. * * @param slot local variable slot for current object */ public void setObjectSlot(int slot) { m_objectSlot = slot; } /** * Append instruction to load object to stack. */ public void loadObject() { appendLoadLocal(m_objectSlot); } /** * Append instruction to store object from stack. */ public void storeObject() { if (m_objectSlot < 0) { LocalVariableGen var = createLocal("obj", ClassItem.typeFromName(m_objectType)); m_objectSlot = var.getIndex(); } else { appendCreateCast(m_objectType); appendStoreLocal(m_objectSlot); } } /** * Append instruction(s) to load object to stack as specified type. * * @param type loaded type expected on stack */ public void loadObject(String type) { appendLoadLocal(m_objectSlot); if (!m_objectType.equals(type)) { appendCreateCast(m_objectType, type); } } /** * Append instruction to load context to stack. */ public void loadContext() { appendLoadLocal(m_contextSlot); } /** * Append instruction(s) to load context to stack as specified type. * * @param type loaded type expected on stack */ public void loadContext(String type) { appendLoadLocal(m_contextSlot); if (!m_contextType.equals(type)) { appendCreateCast(m_contextType, type); } } /** * Check if method is static. * * @return true if static, false if not */ public boolean isStaticMethod() { return m_isStatic; } }libjibx-java-1.1.6a/build/src/org/jibx/binding/classes/ExceptionMethodBuilder.java0000644000175000017500000001254610210703666030044 0ustar moellermoeller/* Copyright (c) 2003-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.classes; import java.util.HashMap; import org.apache.bcel.Constants; import org.apache.bcel.generic.*; import org.jibx.runtime.JiBXException; /** * Builder for simple methods that may just pass checked exceptions on to * caller. * * @author Dennis M. Sosnoski * @version 1.0 */ public class ExceptionMethodBuilder extends MethodBuilder { /** Map for object to variable assignments. */ private HashMap m_slotMap; /** * Constructor with types specified. * * @param name method name to be built * @param ret method return type * @param args types of arguments * @param cf owning class file information * @param access flags for method access * @throws JiBXException on error in initializing method construction */ public ExceptionMethodBuilder(String name, Type ret, Type[] args, ClassFile cf, int access) throws JiBXException { super(name, ret, args, cf, access); } /** * Constructor from signature. * * @param name method name to be built * @param sig method signature * @param cf owning class file information * @param access flags for method access * @throws JiBXException on error in initializing method construction */ public ExceptionMethodBuilder(String name, String sig, ClassFile cf, int access) throws JiBXException { super(name, Type.getReturnType(sig), Type.getArgumentTypes(sig), cf, access); } /** * Constructor from signature for public, final method. * * @param name method name to be built * @param sig method signature * @param cf owning class file information * @throws JiBXException on error in initializing method construction */ public ExceptionMethodBuilder(String name, String sig, ClassFile cf) throws JiBXException { super(name, Type.getReturnType(sig), Type.getArgumentTypes(sig), cf, Constants.ACC_PUBLIC | Constants.ACC_FINAL); } /** * Define local variable slot for object. The current code in the method * must have the initial value for the variable on the stack * * @param obj owning object of slot */ public void defineSlot(Object obj, Type type) { if (m_slotMap == null) { m_slotMap = new HashMap(); } LocalVariableGen var = createLocal("var" + m_slotMap.size(), type); m_slotMap.put(obj, var); } /** * Check if local variable slot defined for object. * * @param obj owning object of slot * @return local variable slot assigned to object, or -1 if * none */ public int getSlot(Object obj) { if (m_slotMap != null) { LocalVariableGen var = (LocalVariableGen)m_slotMap.get(obj); if (var != null) { return var.getIndex(); } } return -1; } /** * Free local variable slot for object. This clears the usage of the slot * (if one has been defined for the object) so it can be reused for other * purposes. * * @param obj owning object of slot */ public void freeSlot(Object obj) { if (m_slotMap != null) { LocalVariableGen var = (LocalVariableGen)m_slotMap.get(obj); if (var != null) { var.setEnd(getLastInstruction()); m_slotMap.remove(obj); } } } /** * Process accumulated exceptions. Just adds the checked exceptions that * may be thrown within the body to the list for this method, passing them * on to the caller for handling. * * @throws JiBXException on error in exception handling */ protected void handleExceptions() throws JiBXException { for (int i = 0; i < m_exceptions.size(); i++) { m_generator.addException((String)m_exceptions.get(i)); } } } libjibx-java-1.1.6a/build/src/org/jibx/binding/classes/ExistingMethod.java0000644000175000017500000001050610210703666026363 0ustar moellermoeller/* Copyright (c) 2003-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.classes; import org.apache.bcel.classfile.Method; import org.jibx.runtime.JiBXException; /** * Information for an existing binding method. It supplies hash code and * equality checking based on the method signature and actual byte code of the * generated method, ignoring the method name. * * @author Dennis M. Sosnoski * @version 1.0 */ public class ExistingMethod extends BindingMethod { /** Class item information. */ private ClassItem m_item; /** Actual method information. */ private Method m_method; /** Accumulated hash code from adding instructions. */ private int m_hashCode; /** Flag for method used in code. */ private boolean m_used; /** * Constructor. * * @param method actual method information * @param item class item information for method * @param file class file information */ public ExistingMethod(Method method, ClassItem item, ClassFile file) { super(file); m_item = item; m_method = method; m_hashCode = computeMethodHash(method); // System.out.println("Computed hash for existing method " + // m_classFile.getName() + '.' + method.getName() + " as " + m_hashCode); } /** * Get name of method. * * @return method name */ public String getName() { return m_item.getName(); } /** * Get signature. * * @return signature for method */ public String getSignature() { return m_item.getSignature(); } /** * Get access flags. * * @return flags for access type of method */ public int getAccessFlags() { return m_item.getAccessFlags(); } /** * Set access flags. * * @param flags access type to be set */ public void setAccessFlags(int flags) { m_item.setAccessFlags(flags); } /** * Check method used status. * * @return method used status */ public boolean isUsed() { return m_used; } /** * Set method used status. */ public void setUsed() { m_used = true; } /** * Get the actual method. * * @return method information */ public Method getMethod() { return m_method; } /** * Get the method item. * * @return method item information */ public ClassItem getItem() { return m_item; } /** * Delete method from class. * * @throws JiBXException if unable to delete method */ public void delete() throws JiBXException { getClassFile().removeMethod(m_method); } /** * Get hash code. * * @return hash code for this method */ public int hashCode() { return m_hashCode; } } libjibx-java-1.1.6a/build/src/org/jibx/binding/classes/InstructionBuilder.java0000644000175000017500000002254010263161056027260 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.classes; import java.security.InvalidParameterException; import org.apache.bcel.Constants; import org.apache.bcel.generic.*; /** * Instruction builder. Extends the basic instruction construction tools in * BCEL with some convenience methods. * * @author Dennis M. Sosnoski * @version 1.0 */ public class InstructionBuilder extends InstructionFactory { /** * Constructor. * * @param cg class generation information * @param cp constant pool generator */ public InstructionBuilder(ClassGen cg, ConstantPoolGen cp) { super(cg, cp); } /** * Get constant pool generator. * * @return constant pool generator for class */ public ConstantPoolGen getConstantPoolGen() { return cp; } /** * Create load constant instruction. Builds the most appropriate type of * instruction for the value. * * @param value constant value to be loaded * @return generated instruction information */ public CompoundInstruction createLoadConstant(int value) { return new PUSH(cp, value); } /** * Create load constant instruction. Loads a String reference * from the constant pool. * * @param value constant value to be loaded * @return generated instruction information */ public CompoundInstruction createLoadConstant(String value) { return new PUSH(cp, value); } /** * Create load constant instruction. Loads an unwrapped primitive value or * String from the constant pool. * * @param value constant value to be loaded * @return generated instruction information */ public CompoundInstruction createLoadConstant(Object value) { if (value instanceof Boolean) { return new PUSH(cp, (Boolean)value); } else if (value instanceof Character) { return new PUSH(cp, (Character)value); } else if (value instanceof Number) { return new PUSH(cp, (Number)value); } else if (value instanceof String) { return new PUSH(cp, (String)value); } else { throw new InvalidParameterException ("Internal code generation error!"); } } /** * Create getfield instruction. Uses the field information to generate * the instruction. * * @param item information for field to be set * @return generated instruction information */ public FieldInstruction createGetField(ClassItem item) { String cname = item.getClassFile().getName(); String fname = item.getName(); return new GETFIELD(cp.addFieldref(cname, fname, item.getSignature())); } /** * Create putfield instruction. Uses the field information to generate * the instruction. * * @param item information for field to be set * @return generated instruction information */ public FieldInstruction createPutField(ClassItem item) { String cname = item.getClassFile().getName(); String fname = item.getName(); return new PUTFIELD(cp.addFieldref(cname, fname, item.getSignature())); } /** * Create getstatic instruction. Uses the field information to generate * the instruction. * * @param item information for field to be set * @return generated instruction information */ public FieldInstruction createGetStatic(ClassItem item) { String cname = item.getClassFile().getName(); String fname = item.getName(); return new GETSTATIC(cp.addFieldref(cname, fname, item.getSignature())); } /** * Create putstatic instruction. Uses the field information to generate * the instruction. * * @param item information for field to be set * @return generated instruction information */ public FieldInstruction createPutStatic(ClassItem item) { String cname = item.getClassFile().getName(); String fname = item.getName(); return new PUTSTATIC(cp.addFieldref(cname, fname, item.getSignature())); } /** * Create invoke instruction for static method. Uses the method information * to generate the instruction. * * @param item information for method to be called * @return generated instruction information */ public InvokeInstruction createCallStatic(ClassItem item) { String cname = item.getClassFile().getName(); String mname = item.getName(); int index = cp.addMethodref(cname, mname, item.getSignature()); return new INVOKESTATIC(index); } /** * Create invoke instruction for virtual method. Uses the method information * to generate the instruction. * * @param item information for method to be called * @return generated instruction information */ public InvokeInstruction createCallVirtual(ClassItem item) { String cname = item.getClassFile().getName(); String mname = item.getName(); int index = cp.addMethodref(cname, mname, item.getSignature()); return new INVOKEVIRTUAL(index); } /** * Create invoke instruction for interface method. Uses the method * information to generate the instruction. * * @param item information for method to be called * @return generated instruction information */ public InvokeInstruction createCallInterface(ClassItem item) { String cname = item.getClassFile().getName(); String mname = item.getName(); String signature = item.getSignature(); return createInvoke(cname, mname, Type.getReturnType(signature), Type.getArgumentTypes(signature), Constants.INVOKEINTERFACE); } /** * Create invoke static method instruction from signature. * * @param method fully qualified class and method name * @param signature method signature in standard form * @return generated instruction information */ public InvokeInstruction createCallStatic(String method, String signature) { int split = method.lastIndexOf('.'); String cname = method.substring(0, split); String mname = method.substring(split+1); int index = cp.addMethodref(cname, mname, signature); return new INVOKESTATIC(index); } /** * Create invoke virtual method instruction from signature. * * @param method fully qualified class and method name * @param signature method signature in standard form * @return generated instruction information */ public InvokeInstruction createCallVirtual(String method, String signature) { int split = method.lastIndexOf('.'); String cname = method.substring(0, split); String mname = method.substring(split+1); int index = cp.addMethodref(cname, mname, signature); return new INVOKEVIRTUAL(index); } /** * Create invoke interface method instruction from signature. * * @param method fully qualified interface and method name * @param signature method signature in standard form * @return generated instruction information */ public InvokeInstruction createCallInterface(String method, String signature) { int split = method.lastIndexOf('.'); String cname = method.substring(0, split); String mname = method.substring(split+1); return createInvoke(cname, mname, Type.getReturnType(signature), Type.getArgumentTypes(signature), Constants.INVOKEINTERFACE); } /** * Create invoke initializer instruction from signature. * * @param name fully qualified class name * @param signature method signature in standard form * @return generated instruction information */ public InvokeInstruction createCallInit(String name, String signature) { int index = cp.addMethodref(name, "", signature); return new INVOKESPECIAL(index); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/classes/MarshalBuilder.java0000644000175000017500000001044610071714172026330 0ustar moellermoeller/* Copyright (c) 2003-2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.classes; import org.apache.bcel.Constants; import org.apache.bcel.generic.*; import org.jibx.runtime.JiBXException; /** * Marshalling method builder. Tracks the creation of a marshalling method, * including special handling of exceptions that may be generated by object * accesses during the marshalling process. * * @author Dennis M. Sosnoski * @version 1.0 */ public class MarshalBuilder extends MarshalUnmarshalBuilder { // // Constants for code generation. private static final String MARSHALCONTEXT_CLASS = "org.jibx.runtime.impl.MarshallingContext"; protected static final String MARSHAL_EXCEPTION_TEXT = "Error while marshalling"; protected static final Type[] MARSHAL_METHOD_ARGS = { new ObjectType("org.jibx.runtime.impl.MarshallingContext") }; /** * Constructor. This sets up for constructing a marshalling method with * public access and wrapped exception handling. If the method is being * generated directly to the class being marshalled it's built as a virtual * method; otherwise, it's done as a static method. * * @param name method name to be built * @param cf owning class file information * @param mf method generation class file information * @throws JiBXException on error in initializing method construction */ public MarshalBuilder(String name, ClassFile cf, ClassFile mf) throws JiBXException { super(name, Type.VOID, (mf == cf) ? MARSHAL_METHOD_ARGS : new Type[] {ClassItem.typeFromName(cf.getName()), MARSHAL_METHOD_ARGS[0]}, mf, (mf == cf) ? Constants.ACC_PUBLIC | Constants.ACC_FINAL : Constants.ACC_PUBLIC | Constants.ACC_STATIC, 0, cf.getName(), 1, MARSHALCONTEXT_CLASS); } /** * Add exception handler code. The implementation of this abstract base * class method provides handling specific to a marshalling method. * * @return handle for first instruction in handler * @throws JiBXException on error in creating exception handler */ public InstructionHandle genExceptionHandler() throws JiBXException { // instruction sequence is create new exception object, duplicate two // down (below caught exception), swap (so order is new, new, caught), // load message, swap again, invoke constructor, and throw exception initStackState(new String[] {"java.lang.Exception"}); InstructionHandle start = internalAppendCreateNew(FRAMEWORK_EXCEPTION_CLASS); appendDUP_X1(); appendSWAP(); appendLoadConstant(MARSHAL_EXCEPTION_TEXT); appendSWAP(); appendCallInit(FRAMEWORK_EXCEPTION_CLASS, EXCEPTION_CONSTRUCTOR_SIGNATURE2); appendThrow(); return start; } }libjibx-java-1.1.6a/build/src/org/jibx/binding/classes/MarshalUnmarshalBuilder.java0000644000175000017500000001023010071714174030174 0ustar moellermoeller/* Copyright (c) 2003-2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.classes; import org.apache.bcel.generic.InstructionHandle; import org.apache.bcel.generic.ObjectType; import org.apache.bcel.generic.Type; import org.jibx.runtime.JiBXException; /** * Builder for marshal and unmarshal methods. Adds exception accumulation with * actual handling provided by the subclass. * * @author Dennis M. Sosnoski * @version 1.0 */ public abstract class MarshalUnmarshalBuilder extends ContextMethodBuilder { /** * Constructor. This sets up for constructing the marshal or unmarshal * method. * * @param name method name to be built * @param ret method return type * @param args types of arguments * @param mf method generation class file information * @param access flags for method access * @param obj variable slot for current object * @param type marshalled or unmarshalled class name * @param ctx variable slot for marshalling/unmarshalling context * @param ctype context type as defined in method * @throws JiBXException on error in initializing method construction */ protected MarshalUnmarshalBuilder(String name, Type ret, Type[] args, ClassFile mf, int access, int obj, String type, int ctx, String ctype) throws JiBXException { super(name, ret, args, mf, access, obj, type, ctx, ctype); } /** * Add exception handler code. This method must be implemented by each * subclass to provide the appropriate handling code. * * @return handle for first instruction in handler * @throws JiBXException on error in creating exception handler */ public abstract InstructionHandle genExceptionHandler() throws JiBXException; /** * Process accumulated exceptions. Sets up an exception handler framework * and then calls the {@link #genExceptionHandler} method to build the * handler body. * * @throws JiBXException on error in exception handling */ protected void handleExceptions() throws JiBXException { int index = m_exceptions.indexOf(FRAMEWORK_EXCEPTION_CLASS); if (index >= 0) { m_generator.addException(FRAMEWORK_EXCEPTION_CLASS); m_exceptions.remove(index); } if (m_exceptions.size() > 0) { InstructionHandle begin = getFirstInstruction(); InstructionHandle end = getLastInstruction(); InstructionHandle handle = genExceptionHandler(); for (int i = 0; i < m_exceptions.size(); i++) { m_generator.addExceptionHandler(begin, end, handle, (ObjectType)ClassItem. typeFromName((String)m_exceptions.get(i))); } } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/classes/MethodBuilder.java0000644000175000017500000016600311006326374026164 0ustar moellermoeller/* Copyright (c) 2003-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.classes; import java.util.ArrayList; import java.util.HashMap; import org.apache.bcel.Constants; import org.apache.bcel.classfile.Method; import org.apache.bcel.classfile.Utility; import org.apache.bcel.generic.ANEWARRAY; import org.apache.bcel.generic.BranchHandle; import org.apache.bcel.generic.CompoundInstruction; import org.apache.bcel.generic.GOTO; import org.apache.bcel.generic.IFEQ; import org.apache.bcel.generic.IFGE; import org.apache.bcel.generic.IFLT; import org.apache.bcel.generic.IFNE; import org.apache.bcel.generic.IFNONNULL; import org.apache.bcel.generic.IFNULL; import org.apache.bcel.generic.IF_ICMPNE; import org.apache.bcel.generic.IINC; import org.apache.bcel.generic.Instruction; import org.apache.bcel.generic.InstructionConstants; import org.apache.bcel.generic.InstructionFactory; import org.apache.bcel.generic.InstructionHandle; import org.apache.bcel.generic.InstructionList; import org.apache.bcel.generic.LocalVariableGen; import org.apache.bcel.generic.MULTIANEWARRAY; import org.apache.bcel.generic.MethodGen; import org.apache.bcel.generic.NEWARRAY; import org.apache.bcel.generic.ReferenceType; import org.apache.bcel.generic.Type; import org.jibx.binding.util.StringStack; import org.jibx.runtime.JiBXException; /** * Method builder. Organizes and tracks the creation of a method, providing * convenience methods for common operations. This is customized for the needs * of JiBX, with some predetermined settings as appropriate. It supplies hash * code and equality checking based on the method signature and actual byte * code of the generated method, ignoring the method name. * * @author Dennis M. Sosnoski * @version 1.0 */ public abstract class MethodBuilder extends BindingMethod { // // Constants for code generation. public static final String FRAMEWORK_EXCEPTION_CLASS = "org.jibx.runtime.JiBXException"; public static final String EXCEPTION_CONSTRUCTOR_SIGNATURE1 = "(Ljava/lang/String;)V"; public static final String EXCEPTION_CONSTRUCTOR_SIGNATURE2 = "(Ljava/lang/String;Ljava/lang/Throwable;)V"; public static final int SYNTHETIC_ACCESS_FLAG = 0x1000; // // Static data. /** Table of argument name lists (generated as needed). */ protected static ArrayList s_argNameLists = new ArrayList(); /** Zero-length string array. */ protected static String[] EMPTY_STRING_ARRAY = new String[0]; // // Actual instance data /** Builder for class instructions. */ protected InstructionBuilder m_instructionBuilder; /** List of instructions in method definition. */ private InstructionList m_instructionList; /** List of types currently on stack. */ private StringStack m_stackState; /** Generator for constructing method. */ protected MethodGen m_generator; /** Actual generated method information. */ protected Method m_method; /** Method class item information. */ protected ClassItem m_item; /** Value types associated with local variable slots. */ private ArrayList m_localTypes; /** Exceptions needing to be handled in method (lazy create, null if not used). */ protected ArrayList m_exceptions; /** Accumulated hash code from adding instructions. */ protected int m_hashCode; /** Branch to be aimed at next appended instruction. */ protected BranchWrapper[] m_targetBranches; /** Map for initialized properties (lazy create, null if not used). */ protected HashMap m_valueMap; /** * Constructor. This sets up for constructing a method with public access. * * @param name method name to be built * @param ret method return type * @param args types of arguments * @param cf owning class file information * @param access flags for method access * @throws JiBXException on error in constructing method */ protected MethodBuilder(String name, Type ret, Type[] args, ClassFile cf, int access) throws JiBXException { super(cf); // make sure the dummy argument names are defined if (args.length >= s_argNameLists.size()) { // append to end of argument names list for (int i = s_argNameLists.size(); i <= args.length; i++) { String[] list = new String[i]; if (i > 0) { Object last = s_argNameLists.get(i-1); System.arraycopy(last, 0, list, 0, i-1); list[i-1] = "arg" + i; } s_argNameLists.add(list); } } // create the method generator with empty instruction list String[] names = (String[])s_argNameLists.get(args.length); m_instructionList = new InstructionList(); m_stackState = new StringStack(); m_instructionBuilder = cf.getInstructionBuilder(); m_generator = new MethodGen(access | SYNTHETIC_ACCESS_FLAG, ret, args, names, name, cf.getName(), m_instructionList, cf.getConstPoolGen()); // initialize local variables for method parameters m_localTypes = new ArrayList(); if ((access & Constants.ACC_STATIC) == 0) { m_localTypes.add(cf.getName()); } for (int i = 0; i < args.length; i++) { m_localTypes.add(args[i].toString()); if (args[i].getSize() > 1) { m_localTypes.add(null); } } } /** * Get name of method being constructed. * * @return name of method being constructed */ public String getName() { return m_generator.getName(); } /** * Get signature. * * @return signature for method */ public String getSignature() { return m_generator.getSignature(); } /** * Get access flags. * * @return flags for access type of method */ public int getAccessFlags() { return m_generator.getAccessFlags(); } /** * Set access flags. * * @param flags access type to be set */ public void setAccessFlags(int flags) { m_generator.setAccessFlags(flags); } /** * Get the actual method. This can only be called once code generation is * completed (after the {@link #codeComplete(boolean)} method is called). * * @return constructed method information */ public Method getMethod() { if (m_method == null) { throw new IllegalStateException("Method still under construction"); } else { return m_method; } } /** * Add keyed value to method definition. * * @param key retrieval key * @param value keyed value * @return prior value for key */ public Object setKeyValue(Object key, Object value) { if (m_valueMap == null) { m_valueMap = new HashMap(); } return m_valueMap.put(key, value); } /** * Get local variable for object. * * @param key object key for local variable * @return local variable */ public Object getKeyValue(Object key) { return m_valueMap == null ? null : m_valueMap.get(key); } /** * Add exception to those needing handling. * * @param name fully qualified name of exception class */ public void addException(String name) { if (m_exceptions == null) { m_exceptions = new ArrayList(); } if (!m_exceptions.contains(name)) { m_exceptions.add(name); } } /** * Add exceptions thrown by called method to those needing handling. * * @param method information for method to be handled */ public void addMethodExceptions(ClassItem method) { String[] excepts = method.getExceptions(); if (excepts != null) { for (int i = 0; i < excepts.length; i++) { addException(excepts[i]); } } } /** * Get first instruction in method. * * @return handle for first instruction in method */ protected InstructionHandle getFirstInstruction() { return m_instructionList.getStart(); } /** * Get last instruction in method. * * @return handle for last instruction in method */ protected InstructionHandle getLastInstruction() { return m_instructionList.getEnd(); } /** * Target branches if pending. This implements setting the target of * branch instructions supplied using the {@link #targetNext} method. * * @param inst handle for appended instruction */ protected final void setTarget(InstructionHandle inst) { if (m_targetBranches != null) { // TODO: fix this ugly kludge with code rewrite // adjust stack with POPs if need to match size String[] types = m_stackState.toArray(); if (m_targetBranches.length > 0) { boolean match = true; int depth = m_targetBranches[0].getStackState().length; for (int i = 1; i < m_targetBranches.length; i++) { if (depth != m_targetBranches[i].getStackState().length) { match = false; break; } } if (match) { if (depth > types.length) { BranchWrapper merge = new BranchWrapper (m_instructionList.insert(inst, new GOTO(null)), types, this); String[] stack = m_targetBranches[0].getStackState(); m_stackState = new StringStack(stack); InstructionHandle poph = m_instructionList. insert(inst, InstructionConstants.POP); for (int i = 0; i < m_targetBranches.length; i++) { m_targetBranches[i].setTarget(poph, stack, this); } m_stackState.pop(); while (m_stackState.size() > types.length) { m_instructionList.insert(inst, InstructionConstants.POP); m_stackState.pop(); } merge.setTarget(inst, m_stackState.toArray(), this); m_targetBranches = null; return; } else { while (depth < types.length) { m_instructionList.insert(inst, InstructionConstants.POP); m_stackState.pop(); types = m_stackState.toArray(); } } } } // set all branch targets for (int i = 0; i < m_targetBranches.length; i++) { m_targetBranches[i].setTarget(inst, types, this); } m_targetBranches = null; } } /** * Generate description of current stack state. * * @return stack state description */ private String describeStack() { StringBuffer buff = new StringBuffer(); String[] types = m_stackState.toArray(); for (int i = 0; i < types.length; i++) { buff.append(" "); buff.append(i); buff.append(": "); buff.append(types[i]); buff.append('\n'); } return buff.toString(); } /** * Verify that a pair of value types represent compatible types. This checks * for equal types or downcast object types. * * @param type actual known type of value * @param need type needed */ private void verifyCompatible(String type, String need) { if (!need.equals(type)) { try { if ("".equals(type)) { if (ClassItem.isPrimitive(need)) { throw new IllegalStateException ("Internal error: Expected " + need + " on stack , found null"); } } else if ("java.lang.Object".equals(need)) { if (ClassItem.isPrimitive(type)) { throw new IllegalStateException("Internal error: " + "Expected object reference on stack, found " + type + "\n full stack:\n" + describeStack()); } } else { boolean match = false; if ("int".equals(need)) { match = "boolean".equals(type) || "short".equals(type) || "char".equals(type) || "byte".equals(type); } else if ("int".equals(type)) { match = "boolean".equals(need) || "short".equals(need) || "char".equals(need) || "byte".equals(need); } if (!match && !ClassItem.isAssignable(type, need)) { throw new IllegalStateException ("Internal error: Expected " + need + " on stack, found " + type + "\n full stack:\n" + describeStack()); } } } catch (JiBXException e) { throw new RuntimeException ("Internal error: Attempting to compare types " + need + " and " + type); } } } /** * Verify that at least the specified number of items are present on the * stack. * * @param count minimum number of items required */ private void verifyStackDepth(int count) { if (m_stackState.size() < count) { throw new IllegalStateException ("Internal error: Too few values on stack\n full stack:\n" + describeStack()); } } /** * Verify the top value in the stack state resulting from the current * instruction list. * * @param t1 expected type for top item on stack */ private void verifyStack(String t1) { verifyStackDepth(1); verifyCompatible(m_stackState.peek(), t1); } /** * Verify the top value in the stack state resulting from the current * instruction list is an array. * * @return array item type */ private String verifyArray() { verifyStackDepth(1); String type = m_stackState.peek(); if (type.endsWith("[]")) { return type.substring(0, type.length()-2); } else { throw new IllegalStateException ("Internal error: Expected array type on stack , found " + type); } } /** * Verify the top value in the stack state resulting from the current * instruction list is an array of the specified type. * * @param type array item type */ private void verifyArray(String type) { String atype = verifyArray(); if (!atype.equals(type)) { throw new IllegalStateException ("Internal error: Expected array of " + type + " on stack , found array of " + atype); } } /** * Verify the top two values in the stack state resulting from the current * instruction list. * * @param t1 expected type for first item on stack * @param t2 expected type for second item on stack */ private void verifyStack(String t1, String t2) { verifyStackDepth(2); verifyCompatible(m_stackState.peek(), t1); verifyCompatible(m_stackState.peek(1), t2); } /** * Verify the top values in the stack state resulting from the current * instruction list. This form checks only the actual call parameters. * * @param types expected parameter types on stack */ private void verifyCallStack(String[] types) { // make sure there are enough items on stack int count = types.length; verifyStackDepth(count); // verify all parameter types for call for (int i = 0; i < count; i++) { int slot = count - i - 1; verifyCompatible(m_stackState.peek(slot), types[i]); } } /** * Verify the top values in the stack state resulting from the current * instruction list. This form checks both the object being called and the * actual call parameters. * * @param clas name of method class * @param types expected parameter types on stack */ private void verifyCallStack(String clas, String[] types) { // start by verifying object reference int count = types.length; verifyStackDepth(count+1); verifyCompatible(m_stackState.peek(count), clas); // check values for call parameters verifyCallStack(types); } /** * Verify that the top value in the stack state resulting from the current * instruction list is an object reference. */ private void verifyStackObject() { verifyStackDepth(1); String top = m_stackState.peek(); if (ClassItem.isPrimitive(top)) { throw new IllegalStateException("Internal error: " + "Expected object reference on stack , found " + m_stackState.peek() + "\n full stack:\n" + describeStack()); } } /** * Append IFEQ branch instruction to method. * * @param src object responsible for generating branch * @return wrapper for appended conditional branch */ public BranchWrapper appendIFEQ(Object src) { verifyStack("int"); BranchHandle hand = m_instructionList.append(new IFEQ(null)); setTarget(hand); m_stackState.pop(); return new BranchWrapper(hand, m_stackState.toArray(), src); } /** * Append IFGE branch instruction to method. * * @param src object responsible for generating branch * @return wrapper for appended conditional branch */ public BranchWrapper appendIFGE(Object src) { verifyStack("int"); BranchHandle hand = m_instructionList.append(new IFGE(null)); setTarget(hand); m_stackState.pop(); return new BranchWrapper(hand, m_stackState.toArray(), src); } /** * Append IFLT branch instruction to method. * * @param src object responsible for generating branch * @return wrapper for appended conditional branch */ public BranchWrapper appendIFLT(Object src) { verifyStack("int"); BranchHandle hand = m_instructionList.append(new IFLT(null)); setTarget(hand); m_stackState.pop(); return new BranchWrapper(hand, m_stackState.toArray(), src); } /** * Append IFNE branch instruction to method. * * @param src object responsible for generating branch * @return wrapper for appended conditional branch */ public BranchWrapper appendIFNE(Object src) { verifyStack("int"); BranchHandle hand = m_instructionList.append(new IFNE(null)); setTarget(hand); m_stackState.pop(); return new BranchWrapper(hand, m_stackState.toArray(), src); } /** * Append IFNONNULL branch instruction to method. * * @param src object responsible for generating branch * @return wrapper for appended conditional branch */ public BranchWrapper appendIFNONNULL(Object src) { verifyStackObject(); BranchHandle hand = m_instructionList.append(new IFNONNULL(null)); setTarget(hand); m_stackState.pop(); return new BranchWrapper(hand, m_stackState.toArray(), src); } /** * Append IFNULL branch instruction to method. * * @param src object responsible for generating branch * @return wrapper for appended conditional branch */ public BranchWrapper appendIFNULL(Object src) { verifyStackObject(); BranchHandle hand = m_instructionList.append(new IFNULL(null)); setTarget(hand); m_stackState.pop(); return new BranchWrapper(hand, m_stackState.toArray(), src); } /** * Append IF_ICMPNE branch instruction to method. * * @param src object responsible for generating branch * @return wrapper for appended conditional branch */ public BranchWrapper appendIF_ICMPNE(Object src) { verifyStack("int", "int"); BranchHandle hand = m_instructionList.append(new IF_ICMPNE(null)); setTarget(hand); m_stackState.pop(2); return new BranchWrapper(hand, m_stackState.toArray(), src); } /** * Append unconditional branch instruction to method. * * @param src object responsible for generating branch * @return wrapper for appended unconditional branch */ public BranchWrapper appendUnconditionalBranch(Object src) { BranchHandle hand = m_instructionList.append(new GOTO(null)); setTarget(hand); BranchWrapper wrapper = new BranchWrapper(hand, m_stackState.toArray(), src); m_stackState = null; return wrapper; } /** * Append compound instruction to method. * * @param ins instruction to be appended */ private void append(CompoundInstruction ins) { setTarget(m_instructionList.append(ins)); } /** * Append instruction to method. * * @param ins instruction to be appended */ private void append(Instruction ins) { setTarget(m_instructionList.append(ins)); } /** * Create load constant instruction and append to method. Builds the most * appropriate type of instruction for the value. * * @param value constant value to be loaded */ public void appendLoadConstant(int value) { append(m_instructionBuilder.createLoadConstant(value)); m_stackState.push("int"); } /** * Create load constant instruction and append to method. Loads a * String reference from the constant pool. * * @param value constant value to be loaded */ public void appendLoadConstant(String value) { append(m_instructionBuilder.createLoadConstant(value)); m_stackState.push("java.lang.String"); } /** * Create load constant instruction and append to method. Loads an * unwrapped primitive value from the constant pool. * * @param value constant value to be loaded */ public void appendLoadConstant(Object value) { append(m_instructionBuilder.createLoadConstant(value)); if (value instanceof Integer || value instanceof Character || value instanceof Short || value instanceof Boolean || value instanceof Byte) { m_stackState.push("int"); } else if (value instanceof Long) { m_stackState.push("long"); } else if (value instanceof Float) { m_stackState.push("float"); } else if (value instanceof Double) { m_stackState.push("double"); } else { throw new IllegalArgumentException("Unknown argument type"); } } /** * Create getfield instruction and append to method. Uses the target field * information to generate the instruction. * * @param item information for field to be gotton */ public void appendGetField(ClassItem item) { verifyStack(item.getClassFile().getName()); append(m_instructionBuilder.createGetField(item)); m_stackState.pop(); m_stackState.push(item.getTypeName()); } /** * Create getstatic instruction and append to method. Uses the target field * information to generate the instruction. * * @param item information for field to be set */ public void appendGetStatic(ClassItem item) { append(m_instructionBuilder.createGetStatic(item)); m_stackState.push(item.getTypeName()); } /** * Create get instruction and append to method. This generates either a * getstatic or a getfield instruction, as appropriate. * * @param item information for field to be gotten */ public void appendGet(ClassItem item) { if (item.isStatic()) { appendGetStatic(item); } else { appendGetField(item); } } /** * Create putfield instruction and append to method. Uses the target field * information to generate the instruction. * * @param item information for field to be set */ public void appendPutField(ClassItem item) { String tname = item.getTypeName(); verifyStack(tname, item.getClassFile().getName()); append(m_instructionBuilder.createPutField(item)); m_stackState.pop(2); } /** * Create putstatic instruction and append to method. Uses the target field * information to generate the instruction. * * @param item information for field to be set */ public void appendPutStatic(ClassItem item) { verifyStack(item.getTypeName()); append(m_instructionBuilder.createPutStatic(item)); m_stackState.pop(); } /** * Create put instruction and append to method. This generates either a * putstatic or a putfield instruction, as appropriate. * * @param item information for field to be gotten */ public void appendPut(ClassItem item) { if (item.isStatic()) { appendPutStatic(item); } else { appendPutField(item); } } /** * Create invoke instruction for static, member, or interface method and * append to method. Uses the target method information to generate the * correct instruction. * * @param item information for method to be called */ public void appendCall(ClassItem item) { // process based on call type String[] types = item.getArgumentTypes(); int count = types.length; if (item.getClassFile().isInterface()) { // process parameters and object reference for interface call verifyCallStack(item.getClassFile().getName(), types); append(m_instructionBuilder.createCallInterface(item)); m_stackState.pop(count+1); } else if ((item.getAccessFlags() & Constants.ACC_STATIC) != 0) { // process only parameters for static call verifyCallStack(types); append(m_instructionBuilder.createCallStatic(item)); if (count > 0) { m_stackState.pop(count); } } else { // process parameters and object reference for normal method call verifyCallStack(item.getClassFile().getName(), types); append(m_instructionBuilder.createCallVirtual(item)); m_stackState.pop(count+1); } // adjust stack state to reflect result of call if (!"void".equals(item.getTypeName())) { m_stackState.push(item.getTypeName()); } } /** * Create invoke static method instruction from signature and append to * method. * * @param method fully qualified class and method name * @param signature method signature in standard form */ public void appendCallStatic(String method, String signature) { // verify all call parameters on stack String[] types = ClassItem.getParametersFromSignature(signature); verifyCallStack(types); // generate the actual method call append(m_instructionBuilder.createCallStatic(method, signature)); // change stack state to reflect result of call if (types.length > 0) { m_stackState.pop(types.length); } String result = ClassItem.getTypeFromSignature(signature); if (!"void".equals(result)) { m_stackState.push(result); } } /** * Create invoke virtual method instruction from signature and append to * method. * * @param method fully qualified class and method name * @param signature method signature in standard form */ public void appendCallVirtual(String method, String signature) { // verify all call parameters and object reference on stack String[] types = ClassItem.getParametersFromSignature(signature); int split = method.lastIndexOf('.'); if (split < 0) { throw new IllegalArgumentException ("Internal error: Missing class name on method " + method); } verifyCallStack(method.substring(0, split), types); // generate the actual method call append(m_instructionBuilder.createCallVirtual(method, signature)); // change stack state to reflect result of call m_stackState.pop(types.length+1); String result = ClassItem.getTypeFromSignature(signature); if (!"void".equals(result)) { m_stackState.push(result); } } /** * Create invoke interface method instruction from signature and append to * method. * * @param method fully qualified interface and method name * @param signature method signature in standard form */ public void appendCallInterface(String method, String signature) { // verify all call parameters and object reference on stack String[] types = ClassItem.getParametersFromSignature(signature); int split = method.lastIndexOf('.'); if (split < 0) { throw new IllegalArgumentException ("Internal error: Missing class name on method " + method); } verifyCallStack(method.substring(0, split), types); // generate the actual method call append(m_instructionBuilder.createCallInterface(method, signature)); // change stack state to reflect result of call m_stackState.pop(types.length+1); String result = ClassItem.getTypeFromSignature(signature); if (!"void".equals(result)) { m_stackState.push(result); } } /** * Append instruction to create instance of class. * * @param name fully qualified class name */ public void appendCreateNew(String name) { append(m_instructionBuilder.createNew(name)); m_stackState.push(name); } /** * Create invoke initializer instruction from signature and append to * method. * * @param name fully qualified class name * @param signature method signature in standard form */ public void appendCallInit(String name, String signature) { // verify all call parameters and object reference on stack String[] types = ClassItem.getParametersFromSignature(signature); verifyCallStack(name, types); // generate the actual method call append(m_instructionBuilder.createCallInit(name, signature)); // change stack state to reflect result of call m_stackState.pop(types.length+1); } /** * Append instruction to create instance of array. * * @param type fully qualified type name of array elements */ public void appendCreateArray(String type) { if (ClassItem.isPrimitive(type)) { String sig = Utility.getSignature(type); append(new NEWARRAY(Utility.typeOfSignature(sig))); } else if (type.endsWith("[]")) { String cname = Utility.getSignature(type + "[]"); append(new MULTIANEWARRAY(m_instructionBuilder. getConstantPoolGen().addClass(cname), (short)1)); } else { append(new ANEWARRAY(m_instructionBuilder. getConstantPoolGen().addClass(type))); } m_stackState.pop(); m_stackState.push(type + "[]"); } /** * Append check cast instruction (if needed). * * @param from fully qualified name of current type * @param to fully qualified name of desired type */ public void appendCreateCast(String from, String to) { // verify current top of stack verifyStack(from); // check if any change of type if (!from.equals(to)) { // generate instruction and change stack state to match append(m_instructionBuilder. createCast(ClassItem.typeFromName(from), ClassItem.typeFromName(to))); m_stackState.pop(); m_stackState.push(to); } } /** * Append check cast instruction from object (if needed). * * @param to fully qualified name of desired type */ public void appendCreateCast(String to) { // verify current top of stack verifyStackObject(); // check if any change of type if (!m_stackState.peek().equals(to)) { // generate instruction and change stack state to match append(m_instructionBuilder. createCast(Type.OBJECT, ClassItem.typeFromName(to))); m_stackState.pop(); m_stackState.push(to); } } /** * Append instanceof check instruction. * * @param to fully qualified name of type to check */ public void appendInstanceOf(String to) { // make sure the stack has an object reference verifyStackObject(); // see if anything actually needs to be checked if ("java.lang.Object".equals(to)) { append(InstructionConstants.POP); appendLoadConstant(1); } else { append(m_instructionBuilder. createInstanceOf((ReferenceType)ClassItem.typeFromName(to))); } // change stack state to reflect results of added code m_stackState.pop(); m_stackState.push("int"); } /** * Add local variable to method. The current code in the method must have * the initial value for the variable on the stack. The scope of the * variable is defined from the last instruction to the end of the * method unless otherwise modified. * * @param name local variable name (may be null to use default) * @param type variable type */ protected LocalVariableGen createLocal(String name, Type type) { // verify top of stack verifyStack(type.toString()); // create name if needed if (name == null) { name = "var" + m_generator.getLocalVariables().length; } // allocation local and store value LocalVariableGen var = m_generator.addLocalVariable (name, type, getLastInstruction(), null); append(InstructionFactory.createStore(type, var.getIndex())); // save type information for local variable slot int slot = var.getIndex(); while (slot >= m_localTypes.size()) { m_localTypes.add(null); } m_localTypes.set(slot, type.toString()); // change stack state to reflect result m_stackState.pop(); return var; } /** * Add local variable to method. The current code in the method must have * the initial value for the variable on the stack. The scope of the * variable is defined from the preceding instruction to the end of the * method. * * @param name local variable name * @param type variable type * @return local variable slot number */ public int addLocal(String name, Type type) { LocalVariableGen var = createLocal(name, type); return var.getIndex(); } /** * Append instruction to load local variable. * * @param slot local variable slot to load */ public void appendLoadLocal(int slot) { String type = (String)m_localTypes.get(slot); if (type == null) { throw new IllegalArgumentException ("Internal error: No variable defined at position " + slot); } append(InstructionFactory. createLoad(ClassItem.typeFromName(type), slot)); m_stackState.push(type); } /** * Append instruction to store local variable. * * @param slot local variable slot to store */ public void appendStoreLocal(int slot) { String type = (String)m_localTypes.get(slot); if (type == null) { throw new IllegalArgumentException ("Internal error: No variable defined at position " + slot); } verifyStack(type); append(InstructionFactory. createStore(ClassItem.typeFromName(type), slot)); m_stackState.pop(); } /** * Append instruction to increment local integer variable. * * @param inc amount of incrment * @param slot local variable slot to load */ public void appendIncrementLocal(int inc, int slot) { String type = (String)m_localTypes.get(slot); if (type == null) { throw new IllegalArgumentException ("Internal error: No variable defined at position " + slot); } else if (!"int".equals(type)) { throw new IllegalArgumentException("Internal error: Variable at " + slot + " is " + type + ", not int"); } append(new IINC(slot, inc)); } /** * Append simple return. */ public void appendReturn() { append(InstructionConstants.RETURN); m_stackState = null; } /** * Append typed return. * * @param type returned type (may be Type.VOID) */ public void appendReturn(Type type) { // verify and return the object reference if (type != Type.VOID) { verifyStack(type.toString()); } append(InstructionFactory.createReturn(type)); // set open stack state for potential continuation code m_stackState = null; } /** * Append typed return. * * @param type returned type (may be void) */ public void appendReturn(String type) { // verify stack and generate return if ("void".equals(type)) { append(InstructionConstants.RETURN); } else { verifyStack(type); if (ClassItem.isPrimitive(type)) { if ("int".equals(type) || "char".equals(type) || "short".equals(type) || "boolean".equals(type)) { append(InstructionConstants.IRETURN); } else if ("long".equals(type)) { append(InstructionConstants.LRETURN); } else if ("float".equals(type)) { append(InstructionConstants.FRETURN); } else if ("double".equals(type)) { append(InstructionConstants.DRETURN); } else { throw new IllegalArgumentException("Unknown argument type"); } } else { append(InstructionConstants.ARETURN); } } // set open stack state for potential continuation code m_stackState = null; } /** * Append exception throw. */ public void appendThrow() { append(InstructionConstants.ATHROW); m_stackState = null; } /** * Append appropriate array load to the instruction list. * * @param type array item type expected */ public void appendALOAD(String type) { verifyStack("int"); m_stackState.pop(); verifyArray(type); if ("byte".equals(type) || "boolean".equals(type)) { append(InstructionConstants.BALOAD); } else if ("char".equals(type)) { append(InstructionConstants.CALOAD); } else if ("double".equals(type)) { append(InstructionConstants.DALOAD); } else if ("float".equals(type)) { append(InstructionConstants.FALOAD); } else if ("int".equals(type)) { append(InstructionConstants.IALOAD); } else if ("long".equals(type)) { append(InstructionConstants.LALOAD); } else if ("short".equals(type)) { append(InstructionConstants.SALOAD); } else { append(InstructionConstants.AALOAD); } m_stackState.pop(); m_stackState.push(type); } /** * Append an AASTORE to the instruction list. Doesn't actually check the * types, just the count of items present. */ public void appendAASTORE() { verifyStackDepth(3); String vtype = m_stackState.pop(); verifyStack("int"); m_stackState.pop(); String atype = verifyArray(); verifyCompatible(vtype, atype); m_stackState.pop(); append(InstructionConstants.AASTORE); } /** * Append the appropriate array store to the instruction list. * * @param type array item type expected */ public void appendASTORE(String type) { verifyStackDepth(3); String vtype = m_stackState.pop(); verifyStack("int"); m_stackState.pop(); String atype = verifyArray(); verifyCompatible(vtype, atype); m_stackState.pop(); if ("byte".equals(type) || "boolean".equals(type)) { append(InstructionConstants.BASTORE); } else if ("char".equals(type)) { append(InstructionConstants.CASTORE); } else if ("double".equals(type)) { append(InstructionConstants.DASTORE); } else if ("float".equals(type)) { append(InstructionConstants.FASTORE); } else if ("int".equals(type)) { append(InstructionConstants.IASTORE); } else if ("long".equals(type)) { append(InstructionConstants.LASTORE); } else if ("short".equals(type)) { append(InstructionConstants.SASTORE); } else { append(InstructionConstants.AASTORE); } } /** * Append an ACONST_NULL to the instruction list. */ public void appendACONST_NULL() { append(InstructionConstants.ACONST_NULL); m_stackState.push(""); } /** * Append an ARRAYLENGTH to the instruction list. */ public void appendARRAYLENGTH() { verifyArray(); append(InstructionConstants.ARRAYLENGTH); m_stackState.pop(); m_stackState.push("int"); } /** * Append an DCMPG to the instruction list. */ public void appendDCMPG() { verifyStack("double", "double"); append(InstructionConstants.DCMPG); m_stackState.pop(2); m_stackState.push("int"); } /** * Append a DUP to the instruction list. */ public void appendDUP() { verifyStackDepth(1); String type = m_stackState.peek(); if ("long".equals(type) || "double".equals(type)) { throw new IllegalStateException ("Internal error: DUP splits long value"); } append(InstructionConstants.DUP); m_stackState.push(m_stackState.peek()); } /** * Append a DUP2 to the instruction list. */ public void appendDUP2() { verifyStackDepth(1); append(InstructionConstants.DUP2); m_stackState.push(m_stackState.peek()); } /** * Append a DUP_X1 to the instruction list. */ public void appendDUP_X1() { verifyStackDepth(2); String type = m_stackState.peek(); if ("long".equals(type) || "double".equals(type)) { throw new IllegalStateException ("Internal error: DUP_X1 splits long value"); } append(InstructionConstants.DUP_X1); String hold0 = m_stackState.pop(); String hold1 = m_stackState.pop(); m_stackState.push(hold0); m_stackState.push(hold1); m_stackState.push(hold0); } /** * Append an FCMPG to the instruction list. */ public void appendFCMPG() { verifyStack("float", "float"); append(InstructionConstants.FCMPG); m_stackState.pop(2); m_stackState.push("int"); } /** * Append an IASTORE to the instruction list. Doesn't actually check the * types, just the count of items present. */ public void appendIASTORE() { verifyStackDepth(3); append(InstructionConstants.IASTORE); m_stackState.pop(3); } /** * Append an ICONST_0 to the instruction list. */ public void appendICONST_0() { append(InstructionConstants.ICONST_0); m_stackState.push("int"); } /** * Append an ICONST_1 to the instruction list. */ public void appendICONST_1() { append(InstructionConstants.ICONST_1); m_stackState.push("int"); } /** * Append an ISUB to the instruction list. */ public void appendISUB() { verifyStack("int", "int"); append(InstructionConstants.ISUB); m_stackState.pop(1); } /** * Append an IXOR to the instruction list. */ public void appendIXOR() { verifyStack("int", "int"); append(InstructionConstants.IXOR); m_stackState.pop(1); } /** * Append an LCMP to the instruction list. */ public void appendLCMP() { verifyStack("long", "long"); append(InstructionConstants.LCMP); m_stackState.pop(2); m_stackState.push("int"); } /** * Append a POP to the instruction list. */ public void appendPOP() { verifyStackDepth(1); String type = m_stackState.peek(); if ("long".equals(type) || "double".equals(type)) { throw new IllegalStateException ("Internal error: POP splits long value"); } append(InstructionConstants.POP); m_stackState.pop(); } /** * Append a POP2 to the instruction list. */ public void appendPOP2() { verifyStackDepth(1); String type = m_stackState.peek(); if (!"long".equals(type) && !"double".equals(type)) { throw new IllegalStateException ("Internal error: POP2 requires long value"); } append(InstructionConstants.POP2); m_stackState.pop(); } /** * Append a SWAP to the instruction list. */ public void appendSWAP() { verifyStackDepth(2); append(InstructionConstants.SWAP); String hold0 = m_stackState.pop(); String hold1 = m_stackState.pop(); m_stackState.push(hold0); m_stackState.push(hold1); } /** * Append instructions to exchange a single-word value on the top of the * stack with the double-word value below it on the stack. */ public void appendSWAP1For2() { verifyStackDepth(2); append(InstructionConstants.DUP_X2); append(InstructionConstants.POP); String hold0 = m_stackState.pop(); String hold1 = m_stackState.pop(); m_stackState.push(hold0); m_stackState.push(hold1); } /** * Append a compound instruction to the list as a branch target. * * @param inst compound instruction to be appended as branch target * @return branch target information */ private BranchTarget appendTargetInstruction(CompoundInstruction inst) { String[] types = m_stackState.toArray(); InstructionHandle hand = m_instructionList.append(inst); return new BranchTarget(hand, types); } /** * Append an instruction to the list as a branch target. * * @param inst instruction to be appended as branch target * @return branch target information */ private BranchTarget appendTargetInstruction(Instruction inst) { String[] types = m_stackState.toArray(); InstructionHandle hand = m_instructionList.append(inst); return new BranchTarget(hand, types); } /** * Append a NOP to the instruction list as a branch target. * * @return branch target information */ public BranchTarget appendTargetNOP() { return appendTargetInstruction(InstructionConstants.NOP); } /** * Append an ACONST_NULL to the instruction list as a branch target. * * @return branch target information */ public BranchTarget appendTargetACONST_NULL() { BranchTarget target = appendTargetInstruction (InstructionConstants.ACONST_NULL); m_stackState.push(""); return target; } /** * Append a load constant instruction as a branch target. Builds the most * appropriate type of instruction for the value. * * @param value constant value to be loaded * @return branch target information */ public BranchTarget appendTargetLoadConstant(int value) { BranchTarget target = appendTargetInstruction(m_instructionBuilder. createLoadConstant(value)); m_stackState.push("int"); return target; } /** * Append a load constant instruction as a branch target. Loads a * String reference from the constant pool. * * @param value constant value to be loaded * @return branch target information */ public BranchTarget appendTargetLoadConstant(String value) { BranchTarget target = appendTargetInstruction(m_instructionBuilder. createLoadConstant(value)); m_stackState.push("java.lang.String"); return target; } /** * Append instruction to create instance of class as a branch target. * * @param name fully qualified class name * @return branch target information */ public BranchTarget appendTargetCreateNew(String name) { BranchTarget target = appendTargetInstruction(m_instructionBuilder.createNew(name)); m_stackState.push(name); return target; } /** * Internal append instruction to create instance of class. This is used by * subclasses when they need access to the actual instruction handle. * * @param name fully qualified class name */ protected InstructionHandle internalAppendCreateNew(String name) { InstructionHandle handle = m_instructionList.append (m_instructionBuilder.createNew(name)); m_stackState.push(name); return handle; } /** * Check if top item on stack is a long value. * * @return true if long value, false if not */ public boolean isStackTopLong() { verifyStackDepth(1); String type = m_stackState.peek(); return "long".equals(type) || "double".equals(type); } /** * Initialize stack state to match branch source. This can be used to set * the expected stack state following an unconditional transfer of control * instruction. The principle here is that the code to be generated must be * reached by a branch, so the stack state must match that of the branch * source. * * @param branch wrapper for branch to be for stack initialization */ public void initStackState(BranchWrapper branch) { m_stackState = new StringStack(branch.getStackState()); } /** * Initialize stack state to partially match branch source. This can be used * to set the expected stack state following an unconditional transfer of * control instruction. The specified number of items are removed from the * branch stack, with the assumption that code to add these items will be * appended before the branch join point is reached. * * @param branch wrapper for branch to be for stack initialization * @param pop number of items to be removed from branch source stack state */ public void initStackState(BranchWrapper branch, int pop) { m_stackState = new StringStack(branch.getStackState()); if (pop > 0) { m_stackState.pop(pop); } } /** * Initialize stack state to array of value types. This can be used to set * the expected stack state following an unconditional transfer of control * instruction. * * @param types array of type names on stack */ protected void initStackState(String[] types) { m_stackState = new StringStack(types); } /** * Set branch target as next instruction added to method. This effectively * sets up a state trigger for the next append operation. The appended * instruction is set as the target for the branch. This requires that * instructions are only appended using the methods supplied in this class. * * @param branch wrapper for branch to be aimed at next instruction (may be * null, in which case nothing is done) */ public void targetNext(BranchWrapper branch) { if (branch != null) { if (m_targetBranches == null) { m_targetBranches = new BranchWrapper[] { branch }; if (m_stackState == null) { m_stackState = new StringStack(branch.getStackState()); } } else { int length = m_targetBranches.length; BranchWrapper[] wrappers = new BranchWrapper[length+1]; System.arraycopy(m_targetBranches, 0, wrappers, 0, length); wrappers[length] = branch; m_targetBranches = wrappers; } } } /** * Set branch targets as next instruction added to method. This effectively * sets up a state trigger for the next append operation. The appended * instruction is set as the target for all the branches. This requires that * instructions are only appended using the methods supplied in this class. * * @param branches wrappers for branches to be aimed at next instruction * (may be null, in which case nothing is done) */ public void targetNext(BranchWrapper[] branches) { if (branches != null && branches.length > 0) { if (m_targetBranches == null) { m_targetBranches = branches; if (m_stackState == null) { m_stackState = new StringStack(branches[0].getStackState()); } } else { int offset = m_targetBranches.length; int length = offset + branches.length; BranchWrapper[] wrappers = new BranchWrapper[length]; System.arraycopy(m_targetBranches, 0, wrappers, 0, offset); System.arraycopy(branches, 0, wrappers, offset, branches.length); m_targetBranches = wrappers; } } } /** * Process accumulated exceptions. Each subclass must implement this * method to perform the appropriate handling of the checked exceptions * that may be thrown in the constructed method. * * @throws JiBXException on error in exception handling */ protected abstract void handleExceptions() throws JiBXException; /** * Complete method construction. Finalizes the instruction list and * generates the byte code for the constructed method, then computes the * hash code based on the byte code. If requested, an appropriate suffix is * tacked on the end of the supplied name in order to make sure that it will * not be duplicated (even in a superclass or subclass). * * @param suffix add suffix to make method name unique * @throws JiBXException on error in finishing method construction */ public void codeComplete(boolean suffix) throws JiBXException { if (m_targetBranches != null) { throw new IllegalStateException ("Method complete with pending branch target"); } if (m_exceptions != null) { handleExceptions(); } if (suffix) { m_generator.setName(getClassFile(). makeUniqueMethodName(m_generator.getName())); } m_generator.setMaxStack(); m_generator.setMaxLocals(); m_instructionList.setPositions(true); m_method = m_generator.getMethod(); m_instructionList.dispose(); m_hashCode = computeMethodHash(m_method); } /** * Get the method item. * * @return method item information */ public ClassItem getItem() { if (m_item == null) { throw new IllegalStateException("Method not added to class"); } else { return m_item; } } /** * Get hash code. This is based only on the byte code in the method, and * is only valid after the {@link #codeComplete} method is called. * * @return hash code based on code sequence */ public int hashCode() { if (m_method == null) { throw new IllegalStateException("Method still under construction"); } else { return m_hashCode; } } /** * Add constructed method to class. Makes the method callable, generating * the method information. * * @return added method information * @throws JiBXException on error in finishing method construction */ public ClassItem addMethod() throws JiBXException { if (m_method == null) { throw new IllegalStateException("Method not finalized."); } else { m_item = getClassFile().addMethod(m_method); return m_item; } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/classes/MungedClass.java0000644000175000017500000003645610677535436025670 0ustar moellermoeller/* Copyright (c) 2003-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.classes; import java.io.File; import java.io.FileFilter; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import org.apache.bcel.Constants; import org.jibx.binding.def.BindingDefinition; import org.jibx.runtime.BindingDirectory; import org.jibx.runtime.JiBXException; /** * Modifiable class handler. Each instance controls changes to a particular * class modified by one or more binding definitions. As methods are generated * they're checked for uniqueness. If an already-generated method is found with * the same characteristics (including byte code) as the one being generated, * the already-generated is used instead. * * @author Dennis M. Sosnoski */ public class MungedClass { // // Constants and such related to code generation. /** Empty class file array. */ private static final ClassFile[] EMPTY_CLASSFILE_ARRAY = {}; /** Name and signature for generated methods without standard prefix. */ private static final String[] EXTRA_METHODS_MATCHES = { "marshal", "(Lorg/jibx/runtime/IMarshallingContext;)V", "unmarshal", "(Lorg/jibx/runtime/IUnmarshallingContext;)V" }; // // Static data. /** Munged class information. */ private static ArrayList s_classes; /** Set of class names in list (used to assure uniqueness). */ private static HashSet s_classNameSet; /** Map from generated class to binding information. */ private static HashMap s_classMap; /** Map of directories already checked for JiBX classes. */ private static HashMap s_directories; /** Map from class name to binding information. */ private static HashMap s_nameMap; /** Munged classes to be unique-added at end of binding. */ private static ArrayList s_pendingClasses; // // Actual instance data. /** Munged class file information. */ private ClassFile m_classFile; /** Map from method byte code and signature to method item. */ private HashMap m_methodMap; /** Existing binding methods in class. */ private ExistingMethod[] m_existingMethods; /** List of factory names for this class. */ private String m_factoryList; /** * Constructor. This sets up for modifying a class with added methods. * * @param cf owning class file information */ private MungedClass(ClassFile cf) { // initialize basic class information m_classFile = cf; m_methodMap = new HashMap(); // get information for existing binding methods in this class ExistingMethod[] exists = cf.getBindingMethods (BindingDefinition.GENERATE_PREFIX, EXTRA_METHODS_MATCHES); if (exists != null) { for (int i = 0; i < exists.length; i++) { m_methodMap.put(exists[i], exists[i]); } } m_existingMethods = exists; } /** * Get munged class file information. * * @return class file information for bound class */ /*package*/ ClassFile getClassFile() { return m_classFile; } /** * Delete pre-existing binding methods that are no longer needed. * * @throws JiBXException on configuration error */ private void purgeUnusedMethods() throws JiBXException { if (m_existingMethods != null) { for (int i = 0; i < m_existingMethods.length; i++) { ExistingMethod method = m_existingMethods[i]; if (!method.isUsed()) { method.delete(); } } } } /** * Get unique method. If a method matching the byte code of the supplied * method has already been defined the existing method is returned. * Otherwise the method is added to the definitions. If necessary, a number * suffix is appended to the method name to prevent conflicts with existing * names. * * @param builder method to be defined * @param suffix append name suffix to assure uniqueness flag * @return defined method item * @throws JiBXException on configuration error */ /*package*/ BindingMethod getUniqueMethod(MethodBuilder builder, boolean suffix) throws JiBXException { // try to find already added method with same characteristics if (builder.getClassFile() != m_classFile) { throw new IllegalStateException ("Internal error: wrong class for call"); } builder.codeComplete(suffix); BindingMethod method = (BindingMethod)m_methodMap.get(builder); if (method == null) { // System.out.println("No match found for method " + // builder.getClassFile().getName()+ '.' + builder.getName() + // "; adding method"); // create as new method builder.addMethod(); m_methodMap.put(builder, builder); return builder; } else if (method instanceof ExistingMethod) { ((ExistingMethod)method).setUsed(); } // System.out.println("Found " + method.getClassFile().getName()+ // '.' + method.getName() + " as match for " + builder.getName()); return method; } /** * Get unique generated support class. Allows tracking of all generated * classes for common handling with the bound classes. Each generated * support class is associated with a particular bound class. * * @param cf generated class file * @return unique class file information */ public static ClassFile getUniqueSupportClass(ClassFile cf) { cf.codeComplete(); Object value = s_classMap.get(cf); if (value == null) { if (!s_classNameSet.contains(cf.getName())) { s_classes.add(cf); s_classNameSet.add(cf.getName()); } s_classMap.put(cf, cf); return cf; } else { ClassFile prior = (ClassFile)value; prior.incrementUseCount(); return prior; } } /** * Check directory for JiBX generated files. Scans through all class files * in the target directory and loads any that start with the JiBX * identifier string. * * @param root class path root for directory * @param pack package relative to root directory * @throws JiBXException on configuration error */ /*package*/ static void checkDirectory(File root, String pack) throws JiBXException { try { File directory = new File (root, pack.replace('.', File.separatorChar)); String cpath = directory.getCanonicalPath(); if (s_directories.get(cpath) == null) { File[] matches = new File(cpath).listFiles(new JiBXFilter()); for (int i = 0; i < matches.length; i++) { File file = matches[i]; String name = file.getName(); int split = name.indexOf('.'); if (split >= 0) { name = name.substring(0, split); } if (pack.length() > 0) { name = pack + '.' + name; } ClassFile cf = ClassCache.getClassFile(name); s_classes.add(cf); s_classMap.put(cf, cf); } s_directories.put(cpath, cpath); } } catch (IOException ex) { throw new JiBXException("Error loading class file", ex); } } /** * Add binding factory to class. The binding factories are accumulated as * a delimited string during generation, then dumped to a static field in * the class at the end. * * @param fact binding factory name */ /*package*/ void addFactory(String fact) { String match = "|" + fact + "|"; if (m_factoryList == null) { m_factoryList = match; } else if (m_factoryList.indexOf(match) < 0) { m_factoryList = m_factoryList + fact + "|"; } } /** * Generate factory list. Adds or replaces the existing static array of * factories in the class. * * @throws JiBXException on configuration error */ /*package*/ void setFactoryList() throws JiBXException { if (m_factoryList != null) { short access = Constants.ACC_PUBLIC | Constants.ACC_FINAL | Constants.ACC_STATIC; m_classFile.updateField("java.lang.String", BindingDirectory.BINDINGLIST_NAME, access, m_factoryList); } } /** * Get modification tracking information for class. * * @param cf information for class to be modified (must be writable) * @return binding information for class * @throws JiBXException on configuration error */ /*package*/ static MungedClass getInstance(ClassFile cf) throws JiBXException { MungedClass inst = (MungedClass)s_nameMap.get(cf.getName()); if (inst == null) { inst = new MungedClass(cf); s_nameMap.put(cf.getName(), inst); if (cf.isComplete()) { if (s_classMap.get(cf) == null) { if (!s_classNameSet.contains(cf.getName())) { s_classes.add(inst); s_classNameSet.add(cf.getName()); } s_classMap.put(cf, cf); } else { throw new IllegalStateException ("Existing class conflicts with load"); } String pack = cf.getPackage(); checkDirectory(cf.getRoot(), pack); } } inst.m_classFile.incrementUseCount(); return inst; } /** * Add unique support class at end of binding process. This allows a class * to be constructed in steps during handling of one or more bindings, with * the class finished and checked for uniqueness only after all bindings * have been handled. The actual add of the class is done during the * {@link #fixChanges(boolean)} handling. * * @param cf class file to be added as unique support class at end of * binding */ public static void delayedAddUnique(ClassFile cf) { s_pendingClasses.add(cf); } /** * Add class file to set modified. This uses the class name as a identifier * to prevent duplicate entries in the list, so that classes which are still * under construction can be handled. * * @param cf */ public static void addModifiedClass(ClassFile cf) { if (!s_classNameSet.contains(cf.getName())) { s_classes.add(cf); s_classNameSet.add(cf.getName()); } } /** * Finalize changes to modified class files. * * @param write replace original class files with modified versions * @return three-way array of class files, for written, unmodified, and * deleted * @throws JiBXException on write error */ public static ClassFile[][] fixChanges(boolean write) throws JiBXException { try { // process all pending class adds for (int i = 0; i < s_pendingClasses.size(); i++) { getUniqueSupportClass((ClassFile)s_pendingClasses.get(i)); } // first delete all existing classes which are no longer needed ArrayList writes = new ArrayList(); ArrayList keeps = new ArrayList(); ArrayList deletes = new ArrayList(); for (int i = 0; i < s_classes.size(); i++) { Object obj = s_classes.get(i); ClassFile cf; if (obj instanceof MungedClass) { MungedClass inst = (MungedClass)obj; inst.purgeUnusedMethods(); inst.setFactoryList(); cf = inst.getClassFile(); } else { cf = (ClassFile)obj; } if (cf.isModified()) { writes.add(cf); } else if (cf.getUseCount() > 0) { keeps.add(cf); } else { cf.delete(); deletes.add(cf); } } // now write all modified classes (separate step for name conflicts) if (write) { for (int i = 0; i < writes.size(); i++) { ((ClassFile)writes.get(i)).writeFile(); } } // return changes in separate lists ClassFile[][] results = new ClassFile[3][]; results[0] = (ClassFile[])writes.toArray(EMPTY_CLASSFILE_ARRAY); results[1] = (ClassFile[])keeps.toArray(EMPTY_CLASSFILE_ARRAY); results[2] = (ClassFile[])deletes.toArray (EMPTY_CLASSFILE_ARRAY); return results; } catch (IOException ex) { throw new JiBXException("Error writing to file", ex); } } /** * Filter for class files generated by JiBX. */ private static class JiBXFilter implements FileFilter { public boolean accept(File file) { String name = file.getName(); return name.startsWith(BindingDefinition.GENERATE_PREFIX) && name.endsWith(".class"); } } /** * Discard cached information and reset in preparation for a new binding * run. */ public static void reset() { s_classes = new ArrayList(); s_classNameSet = new HashSet(); s_classMap = new HashMap(); s_directories = new HashMap(); s_nameMap = new HashMap(); s_pendingClasses = new ArrayList(); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/classes/UnmarshalBuilder.java0000644000175000017500000001274210263161374026677 0ustar moellermoeller/* Copyright (c) 2003-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.classes; import org.apache.bcel.Constants; import org.apache.bcel.generic.*; import org.jibx.runtime.JiBXException; /** * Unmarshalling method builder. Tracks the creation of an unmarshalling method, * including special handling of exceptions that may be generated by object * accesses during the unmarshalling process. * * @author Dennis M. Sosnoski * @version 1.0 */ public class UnmarshalBuilder extends MarshalUnmarshalBuilder { // // Constants for code generation. private static final String UNMARSHALCONTEXT_CLASS = "org.jibx.runtime.impl.UnmarshallingContext"; protected static final String UNMARSHAL_EXCEPTION_TEXT = "Error while unmarshalling "; protected static final String UNMARSHALLING_POSITION_METHOD = "org.jibx.runtime.impl.UnmarshallingContext.buildPositionString"; protected static final String UNMARSHALLING_POSITION_SIGNATURE = "()Ljava/lang/String;"; protected static final Type[] UNMARSHAL_METHOD_ARGS = { new ObjectType("org.jibx.runtime.impl.UnmarshallingContext") }; protected static final Type[] SINGLE_STRING_ARGS = { Type.STRING }; /** * Constructor. This sets up for constructing a virtual unmarshalling method * with public access and wrapped exception handling. If the method is being * generated directly to the class being unmarshalled it's built as a * virtual method; otherwise, it's done as a static method. * * @param name method name to be built * @param cf unmarshal class file information * @param mf method generation class file information * @throws JiBXException on error in initializing method construction */ public UnmarshalBuilder(String name, ClassFile cf, ClassFile mf) throws JiBXException { super(name, cf.getType(), (mf == cf) ? UNMARSHAL_METHOD_ARGS : new Type[] { cf.getType(), UNMARSHAL_METHOD_ARGS[0]}, mf, (mf == cf) ? Constants.ACC_PUBLIC | Constants.ACC_FINAL : Constants.ACC_PUBLIC | Constants.ACC_STATIC, 0, cf.getName(), 1, UNMARSHALCONTEXT_CLASS); } /** * Add exception handler code. The implementation of this abstract base * class method provides handling specific to an unmarshalling method. * * @return handle for first instruction in handler * @throws JiBXException on error in creating exception handler */ public InstructionHandle genExceptionHandler() throws JiBXException { // first part of instruction sequence is create new exception object, // duplicate two down (below caught exception), swap (so order is new, // new, caught) initStackState(new String[] {"java.lang.Exception"}); InstructionHandle start = internalAppendCreateNew(FRAMEWORK_EXCEPTION_CLASS); appendDUP_X1(); appendSWAP(); // second part of sequence is build StringBuffer, duplicate, load lead // String, call constructor with String argument, load unmarshalling // context, call position String method, call StringBuffer append, // call StringBuffer toString appendCreateNew("java.lang.StringBuffer"); appendDUP(); appendLoadConstant(UNMARSHAL_EXCEPTION_TEXT); appendCallInit("java.lang.StringBuffer", "(Ljava/lang/String;)V"); loadContext(); appendCallVirtual(UNMARSHALLING_POSITION_METHOD, UNMARSHALLING_POSITION_SIGNATURE); appendCallVirtual("java.lang.StringBuffer.append", "(Ljava/lang/String;)Ljava/lang/StringBuffer;"); appendCallVirtual("java.lang.StringBuffer.toString", "()Ljava/lang/String;"); // final part of sequence is swap to get arguments in correct order, // invoke exception constructor, throw exception appendSWAP(); appendCallInit(FRAMEWORK_EXCEPTION_CLASS, EXCEPTION_CONSTRUCTOR_SIGNATURE2); appendThrow(); return start; } }libjibx-java-1.1.6a/build/src/org/jibx/binding/def/0000755000175000017500000000000011023035634021660 5ustar moellermoellerlibjibx-java-1.1.6a/build/src/org/jibx/binding/def/BaseMappingWrapper.java0000644000175000017500000000606710524434556026276 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import org.jibx.binding.classes.*; import org.jibx.runtime.JiBXException; /** * Component decorator for abstract base mapping from extension mapping. This * just handles necessary glue code generation. * * @author Dennis M. Sosnoski * @version 1.0 */ public class BaseMappingWrapper extends PassThroughComponent { /** * Constructor. * * @param wrap wrapped binding component */ public BaseMappingWrapper(IComponent wrap) { super(wrap); } // // IComponent interface method definitions public void genAttributeUnmarshal(ContextMethodBuilder mb) throws JiBXException { mb.loadObject(); super.genAttributeUnmarshal(mb); } public void genAttributeMarshal(ContextMethodBuilder mb) throws JiBXException { mb.loadObject(); super.genAttributeMarshal(mb); } public void genContentUnmarshal(ContextMethodBuilder mb) throws JiBXException { mb.loadObject(); super.genContentUnmarshal(mb); mb.appendPOP(); } public void genContentMarshal(ContextMethodBuilder mb) throws JiBXException { mb.loadObject(); super.genContentMarshal(mb); } public void genNewInstance(ContextMethodBuilder mb) throws JiBXException { throw new IllegalStateException ("Internal error - no new instance for base class"); } // DEBUG public void print(int depth) { BindingDefinition.indent(depth); System.out.println("base mapping wrapper"); m_component.print(depth+1); } } libjibx-java-1.1.6a/build/src/org/jibx/binding/def/BindingBuilder.java0000644000175000017500000025325311013374746025427 0ustar moellermoeller/* Copyright (c) 2003-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.HashSet; import org.apache.bcel.Constants; import org.apache.bcel.classfile.Utility; import org.jibx.binding.classes.BoundClass; import org.jibx.binding.classes.BranchTarget; import org.jibx.binding.classes.BranchWrapper; import org.jibx.binding.classes.ClassCache; import org.jibx.binding.classes.ClassFile; import org.jibx.binding.classes.ClassItem; import org.jibx.binding.classes.ExceptionMethodBuilder; import org.jibx.binding.classes.MethodBuilder; import org.jibx.runtime.JiBXException; import org.jibx.runtime.QName; import org.jibx.runtime.impl.UnmarshallingContext; /** * Binding definition builder. This processes the binding definition file to * generate the code generation structure. * * @author Dennis M. Sosnoski * @version 1.0 */ public abstract class BindingBuilder { /** Element namespace used for binding definition file. */ private static final String URI_ELEMENTS = null; /** Attribute namespace used for binding definition file. */ private static final String URI_ATTRIBUTES = null; /* Common style attribute. */ private static final String COMMON_STYLE = "value-style"; /* Common linkage attributes. */ private static final String COMMON_AUTOLINK = "auto-link"; private static final String COMMON_ACCESSLEVEL = "access-level"; private static final String COMMON_STRIPPREFIX = "strip-prefix"; private static final String COMMON_STRIPSUFFIX = "strip-suffix"; private static final String COMMON_NAMESTYLE = "name-style"; /* Common name attributes. */ private static final String COMMON_NAME = "name"; private static final String COMMON_NAMESPACE = "ns"; /* Common object attributes. */ private static final String COMMON_FACTORY = "factory"; private static final String COMMON_PRESET = "pre-set"; private static final String COMMON_POSTSET = "post-set"; private static final String COMMON_PREGET = "pre-get"; private static final String COMMON_MARSHALLER = "marshaller"; private static final String COMMON_UNMARSHALLER = "unmarshaller"; private static final String COMMON_CREATETYPE = "create-type"; /* Common property attributes. */ private static final String COMMON_FIELD = "field"; private static final String COMMON_TYPE = "type"; private static final String COMMON_USAGE = "usage"; private static final String COMMON_TESTMETHOD = "test-method"; private static final String COMMON_GETMETHOD = "get-method"; private static final String COMMON_SETMETHOD = "set-method"; /* Common string attributes. */ private static final String COMMON_DEFAULT = "default"; private static final String COMMON_SERIALIZER = "serializer"; private static final String COMMON_DESERIALIZER = "deserializer"; private static final String COMMON_ENUMVALUEMETHOD = "enum-value-method"; /* Common label attributes. */ private static final String COMMON_LABEL = "label"; private static final String COMMON_USING = "using"; /* Common ordered and choice attributes. */ private static final String COMMON_ORDERED = "ordered"; private static final String COMMON_CHOICE = "choice"; private static final String COMMON_FLEXIBLE = "flexible"; private static final String COMMON_DUPLICATES = "allow-repeats"; /* Common nillable attribute. */ private static final String COMMON_NILLABLE = "nillable"; /** Definitions for "binding" element use "BINDING" prefix. */ private static final String BINDING_ELEMENT = "binding"; private static final String BINDING_NAME = "name"; private static final String BINDING_DIRECTION = "direction"; private static final String BINDING_GLOBALID = "global-id"; private static final String BINDING_FORWARDS = "forwards"; private static final String BINDING_PACKAGE = "package"; private static final String BINDING_TRACKING = "track-source"; private static final String BINDING_FORCE = "force-classes"; // also COMMON_STYLE, and linkage group /** Definitions for "namespace" element use "NAMESPACE" prefix. */ private static final String NAMESPACE_ELEMENT = "namespace"; private static final String NAMESPACE_URI = "uri"; private static final String NAMESPACE_PREFIX = "prefix"; private static final String NAMESPACE_DEFAULT = "default"; /** Definitions for "format" element use "FORMAT" prefix. */ private static final String FORMAT_ELEMENT = "format"; private static final String FORMAT_NAME = "label"; private static final String FORMAT_TYPE = "type"; // also string group /** Definitions for "mapping" element use "MAPPING" prefix. */ private static final String MAPPING_ELEMENT = "mapping"; private static final String MAPPING_CLASS = "class"; private static final String MAPPING_ABSTRACT = "abstract"; private static final String MAPPING_EXTENDS = "extends"; private static final String MAPPING_TYPENAME = "type-name"; // also COMMON_STYLE, name, object, ordered, and linkage groups /** Definitions for "value" element use "VALUE" prefix. */ private static final String VALUE_ELEMENT = "value"; private static final String VALUE_STYLE = "style"; private static final String VALUE_FORMAT = "format"; private static final String VALUE_CONSTANT = "constant"; private static final String VALUE_IDENT = "ident"; // also name, property, and string groups /** Definitions for "structure" element use "STRUCTURE" prefix. */ private static final String STRUCTURE_ELEMENT = "structure"; private static final String STRUCTURE_MAPAS = "map-as"; // also COMMON_STYLE, name, object, ordered, property, and label groups /** Definitions for "collection" element use "COLLECTION" prefix. */ private static final String COLLECTION_ELEMENT = "collection"; private static final String COLLECTION_LOADMETHOD = "load-method"; private static final String COLLECTION_SIZEMETHOD = "size-method"; private static final String COLLECTION_STOREMETHOD = "store-method"; private static final String COLLECTION_ADDMETHOD = "add-method"; private static final String COLLECTION_ITERMETHOD = "iter-method"; private static final String COLLECTION_ITEMTYPE = "item-type"; // also COMMON_STYLE, name, ordered, property, and label groups /** Definitions for "include" element use "INCLUDE" prefix. */ private static final String INCLUDE_ELEMENT = "include"; private static final String INCLUDE_PATH = "path"; // // Value style enumeration. private static final String[] VALUE_STYLE_NAMES = { "attribute", "cdata", "element", "text" }; private static final int[] VALUE_STYLE_NUMS = { ValueChild.ATTRIBUTE_STYLE, ValueChild.CDATA_STYLE, ValueChild.ELEMENT_STYLE, ValueChild.TEXT_STYLE }; private static final String[] CONTAINING_STYLE_NAMES = { "attribute", "element" }; private static final int[] CONTAINING_STYLE_NUMS = { ValueChild.ATTRIBUTE_STYLE, ValueChild.ELEMENT_STYLE }; // // Enumeration for auto-link types. /*package*/ static final int LINK_NONE = 0; /*package*/ static final int LINK_FIELDS = 1; /*package*/ static final int LINK_METHODS = 2; private static final String[] AUTO_LINK_NAMES = { "fields", "none", "methods" }; private static final int[] AUTO_LINK_NUMS = { LINK_FIELDS, LINK_NONE, LINK_METHODS }; // // Enumeration for access level. /*package*/ static final int ACC_PRIVATE = 0; /*package*/ static final int ACC_PACKAGE = 1; /*package*/ static final int ACC_PROTECTED = 2; /*package*/ static final int ACC_PUBLIC = 3; private static final String[] ACCESS_LEVEL_NAMES = { "package", "private", "protected", "public" }; private static final int[] ACCESS_LEVEL_NUMS = { ACC_PACKAGE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC }; // // Enumeration for name generation styles. /*package*/ static final int NAME_HYPHENS = 0; /*package*/ static final int NAME_MIXED = 1; private static final String[] NAME_GENERATE_NAMES = { "hyphens", "mixed-case" }; private static final int[] NAME_GENERATE_NUMS = { NAME_HYPHENS, NAME_MIXED }; // // Attributes that imply a component object private static final String[] COMPONENT_OBJECT_NAMESPACES = { URI_ATTRIBUTES, URI_ATTRIBUTES, URI_ATTRIBUTES, URI_ATTRIBUTES }; private static final String[] COMPONENT_OBJECT_NAMES = { COMMON_FACTORY, COMMON_PRESET, COMMON_POSTSET, COMMON_PREGET }; // // Enumeration for namespace usage. private static final String[] NAMESPACEACCESS_NAMES = { "all", "attributes", "elements", "none" }; private static final int[] NAMESPACEACCESS_NUMS = { NamespaceDefinition.ALLDEFAULT_USAGE, NamespaceDefinition.ATTRIBUTES_USAGE, NamespaceDefinition.ELEMENTS_USAGE, NamespaceDefinition.NODEFAULT_USAGE }; // // Ident type enumeration. private static final String[] IDENTTYPE_NAMES = { "auto", "def", "direct", "ref" }; private static final int[] IDENTTYPE_NUMS = { ValueChild.AUTO_IDENT, ValueChild.DEF_IDENT, ValueChild.DIRECT_IDENT, ValueChild.REF_IDENT }; // // Binding direction enumeration. private static final int DIRECTION_INPUT = 0; private static final int DIRECTION_OUTPUT = 1; private static final int DIRECTION_BOTH = 2; private static final String[] BINDINGDIR_NAMES = { "both", "input", "output" }; private static final int[] BINDINGDIR_NUMS = { DIRECTION_BOTH, DIRECTION_INPUT, DIRECTION_OUTPUT }; // // Constants for property usage values private static final String USAGE_OPTIONAL = "optional"; private static final String USAGE_REQUIRED = "required"; // // Checking and code generation constants private static final String UNMARSHALLER_INTERFACE = "org.jibx.runtime.IUnmarshaller"; private static final String MARSHALLER_INTERFACE = "org.jibx.runtime.IMarshaller"; private static final String UNMARSHALLER_INTERFACETYPE = "Lorg/jibx/runtime/IUnmarshaller;"; private static final String MARSHALLER_INTERFACETYPE = "Lorg/jibx/runtime/IMarshaller;"; private static final String CUSTOM_ENUM_SERIALIZER_NAME = "_jibx_serialize"; private static final String CUSTOM_ENUM_DESERIALIZER_NAME = "_jibx_deserialize"; /** * Check if attributes supply a name definition. * * @param ctx unmarshalling context information * @return true if attributes define a name, * false if not */ private static boolean isNamePresent(UnmarshallingContext ctx) { return ctx.attributeText(URI_ATTRIBUTES, COMMON_NAME, null) != null; } /** * Check for property definition present. Just checks the attributes of * the current element. * * @param ctx unmarshalling context information */ private static boolean isPropertyPresent(UnmarshallingContext ctx) { return ctx.attributeText(URI_ATTRIBUTES, COMMON_FIELD, null) != null || ctx.attributeText(URI_ATTRIBUTES, COMMON_GETMETHOD, null) != null || ctx.attributeText(URI_ATTRIBUTES, COMMON_SETMETHOD, null) != null || ctx.attributeText(URI_ATTRIBUTES, COMMON_TESTMETHOD, null) != null; } /** * Check if attributes define a direct object reference. Just checks the * attributes of the current element. * * @param ctx unmarshalling context information */ private static boolean isDirectObject(UnmarshallingContext ctx) { return ctx.attributeText(URI_ATTRIBUTES, COMMON_MARSHALLER, null) != null || ctx.attributeText(URI_ATTRIBUTES, COMMON_UNMARSHALLER, null) != null; } /** * Check if attributes define a mapping reference. * * @param ctx unmarshalling context information * @return true if attributes define a mapping reference, * false if not * @throws JiBXException if error in unmarshalling */ private static boolean isMappingRef(UnmarshallingContext ctx) throws JiBXException { return ctx.hasAttribute(URI_ATTRIBUTES, STRUCTURE_MAPAS); } /** * Check for component object present. Just checks the attributes of the * current element, so this is not definitive - there may still be child * binding definitions even without attributes. * * @param ctx unmarshalling context information * @throws JiBXException if error in unmarshalling */ private static boolean isObjectBinding(UnmarshallingContext ctx) throws JiBXException { return ctx.hasAnyAttribute(COMPONENT_OBJECT_NAMESPACES, COMPONENT_OBJECT_NAMES); } /** * Unmarshal name definition. This unmarshals directly from attributes of * the current element. * * @param ctx unmarshalling context information * @param attr flag for attribute name definition * @throws JiBXException if error in unmarshalling */ private static NameDefinition unmarshalName(UnmarshallingContext ctx, boolean attr) throws JiBXException { String name = ctx.attributeText(URI_ATTRIBUTES, COMMON_NAME); String ns = ctx.attributeText(URI_ATTRIBUTES, COMMON_NAMESPACE, null); return new NameDefinition(name, ns, attr); } /** * Unmarshal namespace definition. * * @param ctx unmarshalling context information * @throws JiBXException if error in unmarshalling */ private static NamespaceDefinition unmarshalNamespace (UnmarshallingContext ctx) throws JiBXException { // set up the basic information String uri = ctx.attributeText(URI_ATTRIBUTES, NAMESPACE_URI); String prefix = ctx.attributeText(URI_ATTRIBUTES, NAMESPACE_PREFIX, null); if ("".equals(prefix)) { prefix = null; } // check default usage attribute int usage = ctx.attributeEnumeration(URI_ATTRIBUTES, NAMESPACE_DEFAULT, NAMESPACEACCESS_NAMES, NAMESPACEACCESS_NUMS, NamespaceDefinition.NODEFAULT_USAGE); // finish parsing the element ctx.parsePastEndTag(URI_ELEMENTS, NAMESPACE_ELEMENT); return new NamespaceDefinition(uri, prefix, usage); } /** * Add serializer and deserializer methods to enum class with special value * method. This allows enums to be used even when the values present in XML * are not valid Java names. * * @param type * @param evmeth * @throws JiBXException */ private static void buildEnumValueMethods(String type, String evmeth) throws JiBXException { // set up for adding serialize/deserialize methods to enum class BoundClass bndclas = BoundClass.getInstance(type, null); String typesig = bndclas.getClassFile().getSignature(); ClassFile cf = bndclas.getMungedFile(); String evfull = type + '.' + evmeth; // build the serializer method (just delegates to value method) String sersig = "(" + typesig + ")Ljava/lang/String;"; ExceptionMethodBuilder smeth = new ExceptionMethodBuilder (CUSTOM_ENUM_SERIALIZER_NAME, sersig, cf, Constants.ACC_PUBLIC | Constants.ACC_STATIC); smeth.appendLoadLocal(0); BranchWrapper nonnull = smeth.appendIFNONNULL(smeth); smeth.appendACONST_NULL(); smeth.appendReturn("java.lang.String"); smeth.targetNext(nonnull); smeth.appendLoadLocal(0); smeth.appendCallVirtual(evfull, "()Ljava/lang/String;"); smeth.appendReturn("java.lang.String"); bndclas.getUniqueNamed(smeth); // create the deserializer method String dsersig = "(Ljava/lang/String;)" + typesig; ExceptionMethodBuilder dmeth = new ExceptionMethodBuilder (CUSTOM_ENUM_DESERIALIZER_NAME, dsersig, cf, Constants.ACC_PUBLIC | Constants.ACC_STATIC); dmeth.addException(MethodBuilder.FRAMEWORK_EXCEPTION_CLASS); // start by handling the null string case dmeth.appendLoadLocal(0); nonnull = dmeth.appendIFNONNULL(dmeth); dmeth.appendACONST_NULL(); dmeth.appendReturn(type); dmeth.targetNext(nonnull); // set up locals for array of values and decrementing index dmeth.appendCallStatic(type + ".values", "()[" + typesig); dmeth.appendDUP(); int arraylocal = dmeth.addLocal("values", ClassItem.typeFromName(type + "[]")); dmeth.appendARRAYLENGTH(); int arrayindex = dmeth.addLocal("index", ClassItem.typeFromName("int")); // start comparison loop with check for off bottom of array BranchTarget start = dmeth.appendTargetNOP(); dmeth.appendIncrementLocal(-1, arrayindex); dmeth.appendLoadLocal(arrayindex); BranchWrapper loadnext = dmeth.appendIFGE(dmeth); // throw an exception for value not found dmeth.appendCreateNew("java.lang.StringBuffer"); dmeth.appendDUP(); dmeth.appendLoadConstant("No match found for value '"); dmeth.appendCallInit("java.lang.StringBuffer", "(Ljava/lang/String;)V"); dmeth.appendLoadLocal(0); dmeth.appendCallVirtual("java.lang.StringBuffer.append", "(Ljava/lang/String;)Ljava/lang/StringBuffer;"); dmeth.appendLoadConstant("' in enum class " + type); dmeth.appendCallVirtual("java.lang.StringBuffer.append", "(Ljava/lang/String;)Ljava/lang/StringBuffer;"); dmeth.appendCallVirtual("java.lang.StringBuffer.toString", "()Ljava/lang/String;"); dmeth.appendCreateNew(MethodBuilder.FRAMEWORK_EXCEPTION_CLASS); dmeth.appendDUP_X1(); dmeth.appendSWAP(); dmeth.appendCallInit(MethodBuilder.FRAMEWORK_EXCEPTION_CLASS, MethodBuilder.EXCEPTION_CONSTRUCTOR_SIGNATURE1); dmeth.appendThrow(); // load and compare the value dmeth.targetNext(loadnext); dmeth.appendLoadLocal(0); dmeth.appendLoadLocal(arraylocal); dmeth.appendLoadLocal(arrayindex); dmeth.appendALOAD(type); dmeth.appendCallVirtual(evfull, "()Ljava/lang/String;"); dmeth.appendCallVirtual("java.lang.Object.equals", "(Ljava/lang/Object;)Z"); BranchWrapper tonext = dmeth.appendIFEQ(dmeth); tonext.setTarget(start, dmeth); // return the matching instance dmeth.appendLoadLocal(arraylocal); dmeth.appendLoadLocal(arrayindex); dmeth.appendALOAD(type); dmeth.appendReturn(type); // add completed method to class bndclas.getUniqueNamed(dmeth); } /** * Unmarshal string conversion. Unmarshals conversion information directly * from the attributes of the current start tag. * * @param ctx unmarshalling context information * @param base conversion used as base for this conversion * @param type fully qualified class name of type handled by conversion * @throws JiBXException if error in unmarshalling */ private static StringConversion unmarshalStringConversion (UnmarshallingContext ctx, StringConversion base, String type) throws JiBXException { String dflt = ctx.attributeText(URI_ATTRIBUTES, COMMON_DEFAULT, null); String ser = ctx.attributeText(URI_ATTRIBUTES, COMMON_SERIALIZER, null); String dser = ctx.attributeText(URI_ATTRIBUTES, COMMON_DESERIALIZER, null); String evmeth = ctx.attributeText(URI_ATTRIBUTES, COMMON_ENUMVALUEMETHOD, null); if (evmeth != null) { ser = type + '.' + CUSTOM_ENUM_SERIALIZER_NAME; dser = type + '.' + CUSTOM_ENUM_DESERIALIZER_NAME; buildEnumValueMethods(type, evmeth); } return base.derive(type, ser, dser, dflt); } /** * Check for optional property. Just checks for the attribute and makes sure * it has a valid value if present, returning either the default or the * defined value. * * @param ctx unmarshalling context information * @return true if attribute present with value "true", * false otherwise * @throws JiBXException if error in unmarshalling */ private static boolean isOptionalProperty(UnmarshallingContext ctx) throws JiBXException { boolean opt = false; String value = ctx.attributeText(URI_ATTRIBUTES, COMMON_USAGE, USAGE_REQUIRED); if (USAGE_OPTIONAL.equals(value)) { opt = true; } else if (!USAGE_REQUIRED.equals(value)) { ctx.throwStartTagException("Illegal value for \"" + COMMON_USAGE+ "\" attribute"); } return opt; } /** * Unmarshal property definition. This unmarshals directly from attributes * of the current element. * * @param ctx unmarshalling context information * @param parent containing binding definition structure * @param cobj context object information * @param opt force optional value flag * @throws JiBXException if error in unmarshalling */ private static PropertyDefinition unmarshalProperty (UnmarshallingContext ctx, IContainer parent, IContextObj cobj, boolean opt) throws JiBXException { // read basic attribute values for property definition String type = ctx.attributeText(URI_ATTRIBUTES, COMMON_TYPE, null); if (!(parent instanceof NestedCollection) && isOptionalProperty(ctx)) { opt = true; } // read and validate method and/or field attribute values PropertyDefinition pdef = null; try { String fname = ctx.attributeText(URI_ATTRIBUTES, COMMON_FIELD, null); String test = ctx.attributeText(URI_ATTRIBUTES, COMMON_TESTMETHOD, null); String get = ctx.attributeText(URI_ATTRIBUTES, COMMON_GETMETHOD, null); String set = ctx.attributeText(URI_ATTRIBUTES, COMMON_SETMETHOD, null); boolean isthis = fname == null && get == null && set == null; pdef = new PropertyDefinition (parent, cobj, type, isthis, opt, fname, test, get, set); } catch (JiBXException ex) { // rethrow error message with position information ctx.throwStartTagException(ex.getMessage()); } return pdef; } /** * Unmarshal value definition. This handles the complete element supplying * the value binding. * * @param ctx unmarshalling context information * @param parent containing binding definition structure * @param cobj context object information * @param uord unordered collection member flag * @param impl implicit value from collection flag * @param itype base type for value * @throws JiBXException if error in unmarshalling */ private static ValueChild unmarshalValue(UnmarshallingContext ctx, IContainer parent, IContextObj cobj, boolean uord, boolean impl, String itype) throws JiBXException { // find the style for this value int style = ctx.attributeEnumeration(URI_ATTRIBUTES, VALUE_STYLE, VALUE_STYLE_NAMES, VALUE_STYLE_NUMS, parent.getStyleDefault()); // set up the basic structures boolean isatt = style == ValueChild.ATTRIBUTE_STYLE; NameDefinition name = null; if (isatt || style == ValueChild.ELEMENT_STYLE) { name = unmarshalName(ctx, isatt); name.fixNamespace(parent.getDefinitionContext()); } else if (isNamePresent(ctx)) { ctx.throwStartTagException ("Name not allowed for text or CDATA value"); } String constant = ctx.attributeText(URI_ATTRIBUTES, VALUE_CONSTANT, null); // handle property information (unless auto ident or implicit value) int ident = ctx.attributeEnumeration(URI_ATTRIBUTES, VALUE_IDENT, IDENTTYPE_NAMES, IDENTTYPE_NUMS, ValueChild.DIRECT_IDENT); PropertyDefinition prop = null; if (ident == ValueChild.AUTO_IDENT) { ctx.throwStartTagException ("Automatic id generation not yet supported"); } else if (impl) { String type = ctx.attributeText(URI_ATTRIBUTES, COMMON_TYPE, itype); prop = new PropertyDefinition(type, cobj, !(parent instanceof NestedCollection) && isOptionalProperty(ctx)); } else { prop = unmarshalProperty(ctx, parent, cobj, ctx.hasAttribute(URI_ATTRIBUTES, COMMON_DEFAULT)); /* if (constant == null && prop.isThis()) { ctx.throwStartTagException("No property for value"); } else if (prop.isOptional()) { if (ident == ValueChild.DEF_IDENT) { ctx.throwStartTagException("Object ID cannot be optional"); } } else if (uord) { ctx.throwStartTagException("All items in unordered " + "structure must be optional"); } */ } if (ident != ValueChild.DIRECT_IDENT && uord) { ctx.throwStartTagException(VALUE_IDENT + " not allowed in unordered structure"); } // get serializer/deserializer attributes now to allow enum override String ser = ctx.attributeText(URI_ATTRIBUTES, COMMON_SERIALIZER, null); String dser = ctx.attributeText(URI_ATTRIBUTES, COMMON_DESERIALIZER, null); // check for enum with value method String type = (prop == null || constant != null) ? "java.lang.String" : prop.getTypeName(); String evmeth = ctx.attributeText(URI_ATTRIBUTES, COMMON_ENUMVALUEMETHOD, null); boolean basicenum = false; ClassFile target = ClassCache.getClassFile(type); if (evmeth != null) { // handle enum using generated serialize and deserialize methods ser = type + '.' + CUSTOM_ENUM_SERIALIZER_NAME; dser = type + '.' + CUSTOM_ENUM_DESERIALIZER_NAME; buildEnumValueMethods(type, evmeth); } else { // check for a Java 5 enumeration ClassFile sclas = target; while ((sclas = sclas.getSuperFile()) != null) { if (sclas.getName().equals("java.lang.Enum")) { basicenum = true; break; } } } // find the basic converter to use StringConversion convert = null; String format = ctx.attributeText(URI_ATTRIBUTES, VALUE_FORMAT, null); DefinitionContext defc = parent.getDefinitionContext(); if (format == null) { // no format name, get specific convertor for type or best match convert = defc.getSpecificConversion(type); if (convert == null) { // find best match converter for type convert = defc.getConversion(target); // generate specific converter based on general form if (basicenum) { String basedeser = type + '.' + "valueOf"; convert = convert.derive(type, null, basedeser, null); } else if (convert.getTypeName().equals("java.lang.Object")) { convert = new ObjectStringConversion(type, (ObjectStringConversion)convert); } } } else { // format name supplied, look it up and check compatibility QName qname = QName.deserialize(format, ctx); convert = defc.getNamedConversion(qname); if (convert == null) { ctx.throwStartTagException ("Unknown format \"" + format + "\""); } String ctype = convert.getTypeName(); if (!ClassItem.isAssignable(type, ctype) && !ClassItem.isAssignable(ctype, type)) { ctx.throwStartTagException ("Converter type not compatible with value type"); } } // check for any special conversion handling String dflt = ctx.attributeText(URI_ATTRIBUTES, COMMON_DEFAULT, null); if (dflt != null || ser != null || dser != null) { convert = convert.derive(type, ser, dser, dflt); } // create the instance to be returned boolean nillable = ctx.attributeBoolean(URI_ATTRIBUTES, COMMON_NILLABLE, false); if (nillable) { parent.getBindingRoot().setSchemaInstanceUsed(); } ValueChild value = new ValueChild(parent, cobj, name, prop, convert, style, ident, constant, nillable); // handle identifier property flag if (ident == ValueChild.DEF_IDENT || ident == ValueChild.AUTO_IDENT) { if (!cobj.setIdChild(value)) { ctx.throwStartTagException ("Duplicate ID definition for containing mapping"); } else if (!"java.lang.String".equals(type)) { ctx.throwStartTagException ("ID property must be a String"); } } // finish with skipping past end tag ctx.parsePastEndTag(URI_ELEMENTS, VALUE_ELEMENT); return value; } /** * Unmarshal direct object component. Just constructs the component to * be returned along with the supporting objects, and verifies that no * disallowed properties are present. * * @param ctx unmarshalling context information * @param type fully qualified class name of object type handled * @param parent containing binding definition structure * @param defc definition context to be used (if separate from parent, * otherwise null) * @param slot marshaller/unmarshaller slot number * @param name element name information (null if no element * name) * @return constructed direct object component * @throws JiBXException if error in unmarshalling */ private static DirectObject unmarshalDirectObj(UnmarshallingContext ctx, String type, IContainer parent, DefinitionContext defc, int slot, NameDefinition name) throws JiBXException { // define and validate marshaller ClassFile mcf = null; if (parent.getBindingRoot().isOutput()) { String clas = ctx.attributeText(URI_ATTRIBUTES, COMMON_MARSHALLER); mcf = ClassCache.getClassFile(clas); if (!mcf.isImplements(MARSHALLER_INTERFACETYPE)) { ctx.throwStartTagException("Marshaller class " + clas + " does not implement required interface " + MARSHALLER_INTERFACE); } } // define and validate unmarshaller ClassFile ucf = null; if (parent.getBindingRoot().isInput()) { String clas = ctx.attributeText(URI_ATTRIBUTES, COMMON_UNMARSHALLER); ucf = ClassCache.getClassFile(clas); if (!ucf.isImplements(UNMARSHALLER_INTERFACETYPE)) { ctx.throwStartTagException("Unmarshaller class " + clas + " does not implement required interface " + UNMARSHALLER_INTERFACE); } } // make sure none of the prohibited attributes are present if (isObjectBinding(ctx)) { ctx.throwStartTagException("Other object attributes not " + "allowed when using marshaller or unmarshaller"); } else if (isMappingRef(ctx)) { ctx.throwStartTagException("Mapping not allowed when " + "using marshaller or unmarshaller"); } else if (ctx.hasAttribute(URI_ATTRIBUTES, COMMON_USING)) { ctx.throwStartTagException(COMMON_USING + " attribute not allowed when using marshaller or unmarshaller"); } // return constructed instance return new DirectObject(parent, defc, ClassCache.getClassFile(type), false, mcf, ucf, slot, name); } /** * Unmarshal mapping reference component. Just constructs the component to * be returned along with the supporting objects, and verifies that no * disallowed properties are present. * * @param ctx unmarshalling context information * @param parent containing binding definition structure * @param objc current object context * @param prop property definition * @param name reference name definition (only allowed with abstract * mappings) * @return constructed mapping reference component * @throws JiBXException if error in unmarshalling */ private static IComponent unmarshalMappingRef(UnmarshallingContext ctx, IContainer parent, IContextObj objc, PropertyDefinition prop, NameDefinition name) throws JiBXException { // make sure no forbidden attributes are present if (isObjectBinding(ctx)) { ctx.throwStartTagException("Other object attributes not " + "allowed when using mapping reference"); } else if (ctx.hasAttribute(URI_ATTRIBUTES, COMMON_USING)) { ctx.throwStartTagException(COMMON_USING + " attribute not allowed when using mapping reference"); } // build the actual component to be returned String type = (prop == null) ? null : prop.getTypeName(); String text = ctx.attributeText(URI_ATTRIBUTES, STRUCTURE_MAPAS, type); QName qname = QName.deserialize(text, ctx); boolean nillable = ctx.attributeBoolean(URI_ATTRIBUTES, COMMON_NILLABLE, false); if (nillable) { parent.getBindingRoot().setSchemaInstanceUsed(); } return new MappingReference(parent, prop, type, text, qname.toString(), objc, name, false, nillable); } /** * Unmarshal structure reference component. Just constructs the component to * be returned along with the supporting objects, and verifies that no * disallowed properties are present. * * @param ctx unmarshalling context information * @param contain containing binding component * @param name element name information (null if no element * name) * @param prop property definition (null if no separate * property) * @param cobj context object * @return constructed structure reference component * @throws JiBXException if error in unmarshalling */ private static IComponent unmarshalStructureRef(UnmarshallingContext ctx, IContainer contain, NameDefinition name, PropertyDefinition prop, IContextObj cobj) throws JiBXException { // make sure no forbidden attributes are present if (isObjectBinding(ctx)) { ctx.throwStartTagException("Other object attributes not " + "allowed when using structure reference"); } // build the actual component to be returned String ident = ctx.attributeText(URI_ATTRIBUTES, COMMON_USING); IComponent comp = new StructureReference(contain, ident, prop, name != null, cobj); if (name != null) { boolean nillable = ctx.attributeBoolean(URI_ATTRIBUTES, COMMON_NILLABLE, false); if (nillable) { contain.getBindingRoot().setSchemaInstanceUsed(); } comp = new ElementWrapper(contain.getDefinitionContext(), name, comp, nillable); if (prop != null && prop.isOptional()) { ((ElementWrapper)comp).setOptionalNormal(true); ((ElementWrapper)comp).setStructureObject(true); comp = new OptionalStructureWrapper(comp, prop, true); prop.setOptional(false); } } return comp; } /** * Unmarshal child bindings for a nested structure definition. * * @param ctx unmarshalling context information * @param nest nested structure definition * @param objc context object definition * @param impl property value implicit flag * @param itype item type for child components * @throws JiBXException if error in unmarshalling */ private static void unmarshalStructureChildren(UnmarshallingContext ctx, NestedBase nest, IContextObj objc, boolean impl, String itype) throws JiBXException { boolean uord = !nest.isContentOrdered(); while (true) { // unmarshal next child binding definition IComponent comp; if (ctx.isAt(URI_ELEMENTS, VALUE_ELEMENT)) { ValueChild child = unmarshalValue(ctx, nest, objc, uord, impl, itype); comp = child; } else if (ctx.isAt(URI_ELEMENTS, STRUCTURE_ELEMENT)) { comp = unmarshalStructure(ctx, nest, objc, false, uord, impl); } else if (ctx.isAt(URI_ELEMENTS, COLLECTION_ELEMENT)) { comp = unmarshalStructure(ctx, nest, objc, true, uord, impl); } else { break; } // add component to structure nest.addComponent(comp); } } /** * Unmarshal object binding component. Just constructs the component to * be returned along with the supporting objects. This handles both the * unmarshalling of attributes, and of nested binding components. * * @param ctx unmarshalling context information * @param parent containing binding definition structure * @param objc current object context * @param type fully qualified name of object class * @return constructed structure reference component * @throws JiBXException if error in unmarshalling */ private static ObjectBinding unmarshalObjectBinding (UnmarshallingContext ctx, IContextObj objc, IContainer parent, String type) throws JiBXException { // set method names from attributes of start tag String fact = ctx.attributeText(URI_ATTRIBUTES, COMMON_FACTORY, null); String pres = ctx.attributeText(URI_ATTRIBUTES, COMMON_PRESET, null); String posts = ctx.attributeText(URI_ATTRIBUTES, COMMON_POSTSET, null); String preg = ctx.attributeText(URI_ATTRIBUTES, COMMON_PREGET, null); String ctype = ctx.attributeText(URI_ATTRIBUTES, COMMON_CREATETYPE, null); ObjectBinding bind = null; try { bind = new ObjectBinding(parent, objc, type, fact, pres, posts, preg, ctype); } catch (JiBXException ex) { ctx.throwStartTagException(ex.getMessage(), ex); } return bind; } /** * Unmarshal namespace definitions. Any namespace definitions present are * unmarshalled and added to the supplied definition context. * * @param ctx unmarshalling context information * @param defc definition context for defined namespaces * @throws JiBXException if error in unmarshalling */ private static void unmarshalNamespaces(UnmarshallingContext ctx, DefinitionContext defc) throws JiBXException { while (ctx.isAt(URI_ELEMENTS, NAMESPACE_ELEMENT)) { defc.addNamespace(unmarshalNamespace(ctx)); } } /** * Unmarshal format definitions. Any format definitions present are * unmarshalled and added to the supplied definition context. * * @param ctx unmarshalling context information * @param defc definition context for defined formats * @throws JiBXException if error in unmarshalling */ private static void unmarshalFormats(UnmarshallingContext ctx, DefinitionContext defc) throws JiBXException { // process all format definitions at level while (ctx.isAt(URI_ELEMENTS, FORMAT_ELEMENT)) { // find the current default format information for type String type = ctx.attributeText(URI_ATTRIBUTES, FORMAT_TYPE); String sig = Utility.getSignature(type); StringConversion base = null; if (sig.length() == 1) { // must be a primitive, check type directly base = defc.getSpecificConversion(type); if (base == null) { ctx.throwStartTagException("Unsupported \"" + FORMAT_TYPE + "\" value"); } } else { // must be an object type, find best match ClassFile cf = ClassCache.getClassFile(type); base = defc.getConversion(cf); } // unmarshal with defaults provided by existing format StringConversion format = unmarshalStringConversion(ctx, base, type); // handle based on presence or absence of name attribute String text = ctx.attributeText(URI_ATTRIBUTES, FORMAT_NAME, null); if (text == null) { defc.setConversion(format); } else { QName qname = QName.deserialize(text, ctx); defc.setNamedConversion(qname, format); } // scan past end of definition ctx.parsePastEndTag(URI_ELEMENTS, FORMAT_ELEMENT); } } /** * Unmarshal mapping definitions. Any mapping definitions present are * unmarshalled and added to the supplied definition context. * * @param ctx unmarshalling context information * @param parent containing binding definition structure * @param nss extra namespaces to be included in this mapping definition * (may be null) * @param uord container is unordered structure flag * @throws JiBXException if error in unmarshalling */ private static void unmarshalMappings(UnmarshallingContext ctx, IContainer parent, ArrayList nss, boolean uord) throws JiBXException { while (ctx.isAt(URI_ELEMENTS, MAPPING_ELEMENT)) { unmarshalMapping(ctx, parent, nss, uord); } } /** * Unmarshal subclass instance for structure definition. This handles all * combinations of attributes on the start tag, generating the appropriate * structure of nested components and other classes to represent the binding * information within the current element. This must be called with the * parse positioned at the start tag of the element to be unmarshalled. * * TODO: At least split this up, or organize a better way to build binding * * @param ctx unmarshalling context information * @param contain containing binding definition structure * @param cobj context object information * @param coll collection structure flag * @param uord container is unordered structure flag * @param implic property value implicit flag * @return root of component tree constructed from binding * @throws JiBXException if error in unmarshalling */ public static IComponent unmarshalStructure(UnmarshallingContext ctx, IContainer contain, IContextObj cobj, boolean coll, boolean uord, boolean implic) throws JiBXException { // get name definition if supplied (check later to see if valid) NameDefinition name = null; if (isNamePresent(ctx)) { name = unmarshalName(ctx, false); } // check for optional flag on structure boolean opt = isOptionalProperty(ctx); boolean incoll = false; if (contain instanceof NestedCollection) { incoll = true; opt = false; } // check for property definition supplied IComponent comp; boolean hasprop = isPropertyPresent(ctx); boolean thisref = false; if (!hasprop) { thisref = incoll || ctx.hasAttribute(URI_ATTRIBUTES, COMMON_TYPE); } boolean mapping = isMappingRef(ctx); if (hasprop || coll || implic || thisref) { // set up the property definition to be used PropertyDefinition prop = null; boolean hasobj = hasprop; if (implic) { // make sure no override of implicit property from collection if (hasprop) { ctx.throwStartTagException("Property definition not " + "allowed for collection items"); } else { String type = ctx.attributeText(URI_ATTRIBUTES, COMMON_TYPE, null); if (type == null) { if (!mapping) { if (incoll) { type = ((NestedCollection)contain).getItemType(); hasobj = true; } else { type = "java.lang.Object"; } } } else { hasobj = true; } prop = new PropertyDefinition(type, cobj, opt); } } else if (hasprop || thisref) { prop = unmarshalProperty(ctx, contain, cobj, opt); } else { prop = new PropertyDefinition(cobj, opt); } // check if using direct object marshalling and unmarshalling if (isDirectObject(ctx)) { // validate and configure direct marshalling and unmarshalling comp = new DirectProperty(prop, unmarshalDirectObj(ctx, prop.getTypeName(), contain, null, -1, name)); } else if (mapping) { // validate and configure reference to mapping in context comp = unmarshalMappingRef(ctx, contain, cobj, prop, name); } else { // check for object binding needed IContextObj icobj = cobj; ObjectBinding bind = null; boolean typed = false; if (implic) { typed = !prop.getTypeName().equals("java.lang.Object"); } else { typed = !prop.getTypeName().equals (cobj.getBoundClass().getClassName()); } if ((hasobj && !prop.isThis()) || (!hasobj && typed)) { bind = unmarshalObjectBinding(ctx, cobj, contain, prop.getTypeName()); icobj = bind; } // validate and configure reference to structure in context if (ctx.hasAttribute(URI_ATTRIBUTES, COMMON_USING)) { comp = unmarshalStructureRef(ctx, contain, name, prop, icobj); } else { // validate and configure actual binding definition DefinitionContext defc = contain.getDefinitionContext(); IComponent top = bind; // check for optional label definition String label = ctx.attributeText(URI_ATTRIBUTES, COMMON_LABEL, null); // set load and store handlers for collection NestedCollection.CollectionLoad load = null; NestedCollection.CollectionStore store = null; String itype = null; if (coll) { // get any method names and type supplied by user String stname = ctx.attributeText(URI_ATTRIBUTES, COLLECTION_STOREMETHOD, null); String aname = ctx.attributeText(URI_ATTRIBUTES, COLLECTION_ADDMETHOD, null); String lname = ctx.attributeText(URI_ATTRIBUTES, COLLECTION_LOADMETHOD, null); String szname = ctx.attributeText(URI_ATTRIBUTES, COLLECTION_SIZEMETHOD, null); String iname = ctx.attributeText(URI_ATTRIBUTES, COLLECTION_ITERMETHOD, null); itype = ctx.attributeText(URI_ATTRIBUTES, COLLECTION_ITEMTYPE, "java.lang.Object"); // verify combinations of attributes supplied if ((lname == null || szname == null) && !(lname == null && szname == null)) { ctx.throwStartTagException(COLLECTION_LOADMETHOD + " and " + COLLECTION_SIZEMETHOD + " attributes must be used together"); } if (iname != null && lname != null) { ctx.throwStartTagException(COLLECTION_ITERMETHOD + " and " + COLLECTION_LOADMETHOD + " attributes cannot be used together"); } if (aname != null && stname != null) { ctx.throwStartTagException(COLLECTION_ADDMETHOD + " and " + COLLECTION_STOREMETHOD + " attributes cannot be used together"); } // set defaults based on collection type ClassFile cf = ClassCache.getClassFile (prop.getTypeName()); if (cf.isSuperclass("java.util.Vector")|| cf.isSuperclass("java.util.ArrayList")) { if (stname == null && aname == null) { aname = "add"; } if (iname == null && lname == null) { lname = "get"; szname = "size"; } } else if (cf.isImplements("Ljava/util/Collection;")) { if (stname == null && aname == null) { aname = "add"; } if (iname == null && lname == null) { iname = "iterator"; } } else if (cf.isArray()) { String ptype = prop.getTypeName(); itype = ptype.substring(0, ptype.length()-2); } // check binding direction(s) BindingDefinition bdef = contain.getBindingRoot(); boolean isdoub = "long".equals(itype) || "double".equals(itype); if (bdef.isInput()) { // define strategy for adding items to collection if (aname != null) { ClassItem meth = cf.getBestMethod(aname, null, new String[] { itype }); if (meth == null) { ctx.throwStartTagException ("Add method " + aname + " not found in collection type " + cf.getName()); } boolean hasval = !"void".equals(meth.getTypeName()); store = new NestedCollection.AddStore(meth, isdoub, hasval); } else if (stname != null) { ClassItem meth = cf.getBestMethod(stname, null, new String[] { "int", itype }); if (meth == null) { ctx.throwStartTagException ("Indexed store method " + stname + " not found in collection type " + cf.getName()); } boolean hasval = !"void".equals(meth.getTypeName()); store = new NestedCollection.IndexedStore(meth, isdoub, hasval); } else if (cf.isArray()) { store = new NestedCollection.ArrayStore(itype, isdoub); } else { ctx.throwStartTagException ("Unknown collection " + "type with no add or store method defined"); } } if (bdef.isOutput()) { // define strategy for loading items from collection if (lname != null) { ClassItem smeth = cf.getMethod(szname, "()I"); if (smeth == null) { ctx.throwStartTagException ("Size method " + szname + " not found in collection type " + cf.getName()); } ClassItem lmeth = cf.getBestMethod(lname, itype, new String[] { "int" }); if (lmeth == null) { ctx.throwStartTagException ("Load method " + lname + " not found in collection type " + cf.getName()); } load = new NestedCollection. IndexedLoad(smeth, isdoub, lmeth); } else if (iname != null) { String mname = "hasNext"; String nname = "next"; ClassItem meth = cf.getMethod(iname, "()Ljava/util/Iterator;"); if (meth == null) { mname = "hasMoreElements"; nname = "nextElement"; meth = cf.getMethod(iname, "()Ljava/util/Enumeration;"); if (meth == null) { ctx.throwStartTagException ("Iterator method " + iname + " not found in collection type " + cf.getName()); } } load = new NestedCollection. IteratorLoad(meth, isdoub, "java.util.Iterator." + mname, "java.util.Iterator." + nname); } else if (cf.isArray()) { load = new NestedCollection.ArrayLoad(itype, isdoub); } else { ctx.throwStartTagException ("Unknown collection " + "type with no load method defined"); } } } // unmarshal basics of nested structure NestedBase nest; boolean ordered = ctx.attributeBoolean(URI_ATTRIBUTES, COMMON_ORDERED, true); boolean flex = ctx.attributeBoolean(URI_ATTRIBUTES, COMMON_FLEXIBLE, false); boolean nillable = ctx.attributeBoolean(URI_ATTRIBUTES, COMMON_NILLABLE, false); if (nillable) { contain.getBindingRoot().setSchemaInstanceUsed(); } if (coll) { // create collection definition nest = new NestedCollection(contain, icobj, ordered, opt, flex, itype, load, store); nest.unmarshal(ctx); ctx.parsePastStartTag(URI_ELEMENTS, COLLECTION_ELEMENT); } else { // create structure definition boolean choice = ctx.attributeBoolean(URI_ATTRIBUTES, COMMON_CHOICE, false); boolean dupl = ctx.attributeBoolean(URI_ATTRIBUTES, COMMON_DUPLICATES, false); nest = new NestedStructure(contain, icobj, ordered, choice, flex, false, hasobj, dupl); nest.unmarshal(ctx); ctx.parsePastStartTag(URI_ELEMENTS, STRUCTURE_ELEMENT); } // unmarshal child bindings with optional label String ctype = (itype == null) ? "java.lang.Object" : itype; unmarshalFormats(ctx, nest.getDefinitionContext()); unmarshalMappings(ctx, contain, null, uord); unmarshalStructureChildren(ctx, nest, icobj, coll | (implic && !hasobj), ctype); if (top == null) { top = nest; } // special check for structure wrapping value boolean impstruct = false; boolean childs = nest.hasContent(); if (implic && !coll && childs) { ArrayList contents = nest.getContents(); impstruct = true; for (int i = 0; i < contents.size(); i++) { if (!(contents.get(i) instanceof ValueChild)) { impstruct = false; break; } else { ValueChild vchild = (ValueChild)contents.get(i); if (!vchild.isImplicit()) { impstruct = false; break; } } } } if (impstruct) { comp = nest; nest.setObjectContext(cobj); if (name != null) { comp = new ElementWrapper(defc, name, comp, nillable); if (bind != null && implic) { if (!hasprop) { ((ElementWrapper)comp).setDirect(true); ArrayList contents = nest.getContents(); impstruct = true; for (int i = 0; i < contents.size(); i++) { if (contents.get(i) instanceof ValueChild) { ValueChild vchild = (ValueChild)contents.get(i); vchild.switchProperty(); } } } prop.setOptional(false); } } } else { // check for children defined boolean addref = false; if (!childs) { if (coll) { // add mapping as only child if (ctype.equals("java.lang.Object")) { nest.addComponent (new DirectGeneric(nest, null)); } else { nest.addComponent(new MappingReference(contain, new PropertyDefinition(ctype, cobj, false), ctype, null, null, icobj, null, true, false)); } childs = true; } else if (name != null) { // must be abstract mappping reference, create child addref = true; } } // handle nested children comp = top; if (childs || addref) { // define component property wrapping object binding boolean optprop = hasprop && prop.isOptional(); if (bind != null) { boolean skip = name != null && optprop; comp = new ComponentProperty(prop, comp, skip); bind.setWrappedComponent(nest); } // create reference to mapping as special case // this allows structure with name but no children to // use abstract mapping if (addref) { PropertyDefinition thisprop = new PropertyDefinition(bind, false); nest.addComponent(new MappingReference (nest, thisprop, comp.getType(), null, null, icobj, null, false, false)); } if (name != null) { comp = new ElementWrapper(defc, name, comp, nillable); if (bind != null && implic) { if (!hasprop) { ((ElementWrapper)comp).setDirect(true); } prop.setOptional(false); } if (optprop) { ((ElementWrapper)comp).setOptionalNormal(true); boolean isobj = bind != null; ((ElementWrapper)comp). setStructureObject(isobj); ((ElementWrapper)comp).setDirect(isobj); comp = new OptionalStructureWrapper(comp, prop, isobj); prop.setOptional(false); } else if (opt && !implic) { ((ElementWrapper)comp).setOptionalNormal(true); comp = new OptionalStructureWrapper(comp, prop, false); prop.setOptional(false); } } } else { // treat as mapping, with either type or generic String type = prop.getTypeName(); if (prop.equals("java.lang.Object")) { comp = new ComponentProperty(prop, new DirectGeneric(contain, null), false); } else { comp = new MappingReference(contain, prop, type, null, null, icobj, name, false, false); } } } // set object binding as definition for label if (label != null) { defc.addNamedStructure(label, top); } } } } else { // structure with no separate object, verify no forbidden attributes if (isObjectBinding(ctx)) { ctx.throwStartTagException("Object attributes not " + "allowed without property definition"); } else if (isDirectObject(ctx)) { ctx.throwStartTagException("Marshaller and unmarshaller not " + "allowed without property definition"); } // check for reference to structure defined elsewhere if (mapping) { // handle "this" reference as anonymous property PropertyDefinition prop = new PropertyDefinition(cobj, opt); // handle reference to defined mapping comp = unmarshalMappingRef(ctx, contain, cobj, prop, name); implic = true; } else if (ctx.hasAttribute(URI_ATTRIBUTES, COMMON_USING)) { // make sure forbidden attribute not used if (ctx.hasAttribute(URI_ATTRIBUTES, COMMON_ORDERED)) { ctx.throwStartTagException(COMMON_ORDERED + " attribute " + " not allowed with " + COMMON_USING + " attribute"); } // validate and configure reference to structure in context comp = unmarshalStructureRef(ctx, contain, name, null, cobj); } else { // unmarshal children as nested structure boolean ordered = ctx.attributeBoolean(URI_ATTRIBUTES, COMMON_ORDERED, true); boolean choice = ctx.attributeBoolean(URI_ATTRIBUTES, COMMON_CHOICE, false); boolean flex = ctx.attributeBoolean(URI_ATTRIBUTES, COMMON_FLEXIBLE, false); boolean dupl = ctx.attributeBoolean(URI_ATTRIBUTES, COMMON_DUPLICATES, false); NestedStructure nest = new NestedStructure(contain, cobj, ordered, choice, flex, false, hasprop, dupl); nest.unmarshal(ctx); // unmarshal child bindings with optional label String label = ctx.attributeText(URI_ATTRIBUTES, COMMON_LABEL, null); ctx.parsePastStartTag(URI_ELEMENTS, STRUCTURE_ELEMENT); unmarshalFormats(ctx, nest.getDefinitionContext()); unmarshalMappings(ctx, contain, null, uord); unmarshalStructureChildren(ctx, nest, cobj, false, "java.lang.Object"); // check for children defined DefinitionContext defc = contain.getDefinitionContext(); if (nest.hasContent()) { // build structure to access children or with elment wrapper if (name == null) { comp = nest; } else { comp = new ElementWrapper(defc, name, nest, false); if (opt) { ((ElementWrapper)comp).setOptionalNormal(true); ((ElementWrapper)comp).setStructureObject(true); } } if (label != null) { defc.addNamedStructure(label, nest); } } else { // make sure there's a name defined if (name == null) { ctx.throwException ("Property, name, or child component required"); } // treat as throwaway portion of document comp = new ElementWrapper(defc, name, null, false); if (opt) { ((ElementWrapper)comp).setOptionalIgnored(true); } } } } // finish by parsing past end tag ctx.parsePastEndTag(URI_ELEMENTS, coll ? COLLECTION_ELEMENT : STRUCTURE_ELEMENT); return comp; } /** * Unmarshal mapping definition. This handles all combinations of attributes * on the start tag, generating the appropriate structure of nested * components and other classes to represent the binding information within * the current element. This must be called with the parse positioned at the * start tag of the element to be unmarshalled. * * @param ctx unmarshalling context information * @param parent containing binding definition structure * @param nss extra namespaces to be included in this mapping definition * (may be null) * @param uord container is unordered structure flag * @return mapping definition constructed from binding * @throws JiBXException if error in unmarshalling */ public static IMapping unmarshalMapping(UnmarshallingContext ctx, IContainer parent, ArrayList nss, boolean uord) throws JiBXException { // first check for an abstract mapping boolean abs = ctx.attributeBoolean(URI_ATTRIBUTES, MAPPING_ABSTRACT, false); String type = ctx.attributeText(URI_ATTRIBUTES, MAPPING_CLASS); // get name definition if supplied NameDefinition name = null; if (isNamePresent(ctx)) { name = unmarshalName(ctx, false); } // get type name information String text = ctx.attributeText(URI_ATTRIBUTES, MAPPING_TYPENAME, null); String tname = null; if (text != null) { tname = QName.deserialize(text, ctx).toString(); } // check if using direct object marshalling and unmarshalling IMapping mapping; if (isDirectObject(ctx)) { // check for definition context needed DefinitionContext defc = null; if (nss != null && nss.size() > 0) { // add all outer namespaces to context defc = new DefinitionContext(parent); if (nss != null && nss.size() > 0) { for (int j = 0; j < nss.size(); j++) { defc.addNamespace((NamespaceDefinition)nss.get(j)); } } } // validate and configure direct marshalling and unmarshalling int slot = parent.getBindingRoot().getMappedClassIndex(type); mapping = new MappingDirect(parent, type, tname, unmarshalDirectObj(ctx, type, parent, defc, slot, name), abs); } else { // not direct mapping, check for missing required name if (!abs && name == null) { ctx.throwStartTagException("Non-abstract mapping must define " + "an element name"); } // check for optional definitions String label = ctx.attributeText(URI_ATTRIBUTES, COMMON_LABEL, null); // create definition context for namespaces and formats String base = ctx.attributeText(URI_ATTRIBUTES, MAPPING_EXTENDS, null); ObjectBinding bind = unmarshalObjectBinding(ctx, null, parent, type); boolean ordered = ctx.attributeBoolean(URI_ATTRIBUTES, COMMON_ORDERED, true); boolean choice = ctx.attributeBoolean(URI_ATTRIBUTES, COMMON_CHOICE, false); boolean flex = ctx.attributeBoolean(URI_ATTRIBUTES, COMMON_FLEXIBLE, false); boolean nillable = ctx.attributeBoolean(URI_ATTRIBUTES, COMMON_NILLABLE, false); if (nillable) { parent.getBindingRoot().setSchemaInstanceUsed(); } boolean dupl = ctx.attributeBoolean(URI_ATTRIBUTES, COMMON_DUPLICATES, false); NestedStructure nest = new NestedStructure(parent, bind, ordered, choice, flex, true, true, dupl); nest.unmarshal(ctx); // add all outer namespaces to context DefinitionContext defc = nest.getDefinitionContext(); if (nss != null && nss.size() > 0) { for (int j = 0; j < nss.size(); j++) { defc.addNamespace((NamespaceDefinition)nss.get(j)); } } // unmarshal all contained binding information ctx.parsePastStartTag(URI_ELEMENTS, MAPPING_ELEMENT); unmarshalNamespaces(ctx, nest.getDefinitionContext()); unmarshalFormats(ctx, nest.getDefinitionContext()); unmarshalMappings(ctx, nest, null, uord); unmarshalStructureChildren(ctx, nest, bind, false, "java.lang.Object"); // validate and configure actual binding definition bind.setWrappedComponent(nest); mapping = new MappingDefinition(parent, nest.getDefinitionContext(), type, name, tname, abs, base, bind, nillable); // set label if defined if (label != null) { defc.addNamedStructure(label, bind); } } // finish by adding mapping and parsing past end tag parent.getDefinitionContext().addMapping(mapping); ctx.parsePastEndTag(URI_ELEMENTS, MAPPING_ELEMENT); return mapping; } /** * Unmarshal included binding. This handles the actual include element along * with the actual included binding. The current implementation allows for * nested includes, but requires that all the included bindings use * compatible settings for the attributes of the root element, and only * allows mapping elements as children of the included bindings (no * namespace or format elements). * * @param ctx unmarshalling context information * @param bdef binding defintion at root of includes * @param root base URL for binding, or null if unknown * @param nslist list of namespaces defined * @param paths set of binding paths processed * @throws JiBXException if error in unmarshalling */ public static void unmarshalInclude(UnmarshallingContext ctx, BindingDefinition bdef, URL root, ArrayList nslist, HashSet paths) throws JiBXException { // make sure path hasn't already been processed ctx.parseToStartTag(URI_ELEMENTS, INCLUDE_ELEMENT); String path = ctx.attributeText(URI_ATTRIBUTES, INCLUDE_PATH); URL url; try { if (root == null) { url = new URL(path); } else { url = new URL(root, path); } } catch (MalformedURLException e) { throw new JiBXException("Unable to handle include path " + path, e); } String fpath = url.toExternalForm(); if (paths.add(fpath)) { try { // access the included binding as input stream UnmarshallingContext ictx = new UnmarshallingContext(); ictx.setDocument(url.openStream(), null); // unmarshal namespaces (to apply to these mappings, only) ictx.parseToStartTag(URI_ELEMENTS, BINDING_ELEMENT); ictx.parsePastStartTag(URI_ELEMENTS, BINDING_ELEMENT); ArrayList nss = new ArrayList(nslist); while (ictx.isAt(URI_ELEMENTS, NAMESPACE_ELEMENT)) { nss.add(unmarshalNamespace(ictx)); } // process any format definitions (for global context) unmarshalFormats(ictx, bdef.getDefinitionContext()); // check for nested includes while (ictx.isAt(URI_ELEMENTS, INCLUDE_ELEMENT)) { unmarshalInclude(ictx, bdef, url, nss, paths); } // process all mappings defined in included binding unmarshalMappings(ictx, bdef, nss, false); } catch (IOException e) { throw new JiBXException ("Error accessing included binding with path " + path, e); } } // finish by skipping past end of tag in main binding ctx.parsePastEndTag(URI_ELEMENTS, INCLUDE_ELEMENT); } /** * Unmarshal binding definition. This handles the entire binding definition * document. * * @param ctx unmarshalling context information * @param name default name for binding * @param root base URL for binding, or null if unknown * @throws JiBXException if error in unmarshalling */ public static BindingDefinition unmarshalBindingDefinition (UnmarshallingContext ctx, String name, URL root) throws JiBXException { // start by reading optional binding name ctx.parseToStartTag(URI_ELEMENTS, BINDING_ELEMENT); name = ctx.attributeText(URI_ATTRIBUTES, BINDING_NAME, name); // set the binding direction flags int dir = ctx.attributeEnumeration(URI_ATTRIBUTES, BINDING_DIRECTION, BINDINGDIR_NAMES, BINDINGDIR_NUMS, DIRECTION_BOTH); boolean ibind = dir == DIRECTION_BOTH || dir == DIRECTION_INPUT; boolean obind = dir == DIRECTION_BOTH || dir == DIRECTION_OUTPUT; // read other attribute values String tpack = ctx.attributeText(URI_ATTRIBUTES, BINDING_PACKAGE, null); boolean glob = ctx.attributeBoolean(URI_ATTRIBUTES, BINDING_GLOBALID, true); boolean forward = ctx.attributeBoolean(URI_ATTRIBUTES, BINDING_FORWARDS, true); boolean track = ctx.attributeBoolean(URI_ATTRIBUTES, BINDING_TRACKING, false); boolean force = ctx.attributeBoolean(URI_ATTRIBUTES, BINDING_FORCE, false); // create actual binding instance BindingDefinition bdef = new BindingDefinition(name, ibind, obind, tpack, glob, forward, track, force); bdef.unmarshal(ctx); // unmarshal namespaces and formats defined under root ctx.parsePastStartTag(URI_ELEMENTS, BINDING_ELEMENT); ArrayList nss = new ArrayList(); while (ctx.isAt(URI_ELEMENTS, NAMESPACE_ELEMENT)) { nss.add(unmarshalNamespace(ctx)); } unmarshalFormats(ctx, bdef.getDefinitionContext()); // process any included binding definitions HashSet paths = new HashSet(); if (root != null) { paths.add(root.toExternalForm()); } while (ctx.isAt(URI_ELEMENTS, INCLUDE_ELEMENT)) { unmarshalInclude(ctx, bdef, root, nss, paths); } // finish with common handling for elements which can be nested unmarshalMappings(ctx, bdef, nss, false); ctx.parsePastEndTag(URI_ELEMENTS, BINDING_ELEMENT); return bdef; } /** * Base class for containers. This just handles unmarshalling and checking * the values of attributes used by all containers. The container class * should set the appropriate default values for all these attributes in its * constructor, using -1 (for int values) and * null (for String values) if the default is to * simply use setting inherited from a containing component. The binding * definition root object must always define actual values as the defaults, * since otherwise the code will fall off the end of the chain of ancestors. */ /*package*/ static class ContainerBase { /** Containing binding component. */ protected IContainer m_container; /** Default style for value expression. */ protected int m_styleDefault; /** Auto-link style for default mappings. */ protected int m_autoLink; /** Access level for default mappings. */ protected int m_accessLevel; /** Prefix text to be stripped from names. */ protected String m_stripPrefix; /** Suffix text to be stripped from names. */ protected String m_stripSuffix; /** Style used for generating element or attribute names. */ protected int m_nameStyle; /** * Constructor. * * @param parent containing binding definition context */ public ContainerBase(IContainer parent) { m_container = parent; } /** * Unmarshal common container attributes. * * @param ctx unmarshalling context information * @throws JiBXException if error in unmarshalling */ public void unmarshal(UnmarshallingContext ctx) throws JiBXException { m_styleDefault = ctx.attributeEnumeration(URI_ATTRIBUTES, COMMON_STYLE, CONTAINING_STYLE_NAMES, CONTAINING_STYLE_NUMS, m_styleDefault); m_autoLink = ctx.attributeEnumeration(URI_ATTRIBUTES, COMMON_AUTOLINK, AUTO_LINK_NAMES, AUTO_LINK_NUMS, m_autoLink); m_accessLevel = ctx.attributeEnumeration(URI_ATTRIBUTES, COMMON_ACCESSLEVEL, ACCESS_LEVEL_NAMES, ACCESS_LEVEL_NUMS, m_accessLevel); m_stripPrefix = ctx.attributeText(URI_ATTRIBUTES, COMMON_STRIPPREFIX, m_stripPrefix); m_stripSuffix = ctx.attributeText(URI_ATTRIBUTES, COMMON_STRIPSUFFIX, m_stripSuffix); m_nameStyle = ctx.attributeEnumeration(URI_ATTRIBUTES, COMMON_NAMESTYLE, NAME_GENERATE_NAMES, NAME_GENERATE_NUMS, m_nameStyle); } // // IContainer interface method definitions (partial list) public int getStyleDefault() { if (m_styleDefault >= 0) { return m_styleDefault; } else { return m_container.getStyleDefault(); } } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/def/BindingDefinition.java0000644000175000017500000014120011005476404026110 0ustar moellermoeller/* Copyright (c) 2003-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import org.apache.bcel.Constants; import org.apache.bcel.generic.ArrayType; import org.apache.bcel.generic.Type; import org.jibx.binding.classes.BoundClass; import org.jibx.binding.classes.BranchWrapper; import org.jibx.binding.classes.ClassCache; import org.jibx.binding.classes.ClassFile; import org.jibx.binding.classes.ClassItem; import org.jibx.binding.classes.ExceptionMethodBuilder; import org.jibx.binding.classes.MethodBuilder; import org.jibx.binding.classes.MungedClass; import org.jibx.binding.util.ArrayMap; import org.jibx.binding.util.IntegerCache; import org.jibx.runtime.IBindingFactory; import org.jibx.runtime.JiBXException; import org.jibx.runtime.QName; /** * Binding definition. This is the root of the object graph for a binding. * * @author Dennis M. Sosnoski */ public class BindingDefinition extends BindingBuilder.ContainerBase implements IContainer { // // Miscellaneous static data. private static final String EXPAND_NAMESPACES_SIGNATURE = "(Ljava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;"; private static final String EXPAND_NAMESPACES_METHOD = "org.jibx.runtime.impl.RuntimeSupport.expandNamespaces"; /** Current distribution file name. This is filled in by the Ant build process to match the current distribution. */ public static final String CURRENT_VERSION_NAME = "@distrib@"; /** Prefix used in all code generation for methods and classes. */ public static final String GENERATE_PREFIX = "JiBX_"; /** Default prefix for automatic ID generation. */ /*package*/ static final String DEFAULT_AUTOPREFIX = "id_"; /** Minimum size to use map for index from type name. */ private static final int TYPEMAP_MINIMUM_SIZE = 5; /** Table of defined bindings. */ private static ArrayList s_bindings; /** Classes included in any binding. */ private static ArrayMap s_mappedClasses; // // Static instances of predefined conversions. private static StringConversion s_byteConversion = new PrimitiveStringConversion(Byte.TYPE, new Byte((byte)0), "B", "serializeByte", "parseByte", "attributeByte", "parseElementByte"); private static StringConversion s_charConversion = new PrimitiveStringConversion(Character.TYPE, new Character((char)0), "C", "serializeChar", "parseChar", "attributeChar", "parseElementChar"); private static StringConversion s_doubleConversion = new PrimitiveStringConversion(Double.TYPE, new Double(0.0d), "D", "serializeDouble", "parseDouble", "attributeDouble", "parseElementDouble"); private static StringConversion s_floatConversion = new PrimitiveStringConversion(Float.TYPE, new Float(0.0f), "F", "serializeFloat", "parseFloat", "attributeFloat", "parseElementFloat"); private static StringConversion s_intConversion = new PrimitiveStringConversion(Integer.TYPE, new Integer(0), "I", "serializeInt", "parseInt", "attributeInt", "parseElementInt"); private static StringConversion s_longConversion = new PrimitiveStringConversion(Long.TYPE, new Long(0L), "J", "serializeLong", "parseLong", "attributeLong", "parseElementLong"); private static StringConversion s_shortConversion = new PrimitiveStringConversion(Short.TYPE, new Short((short)0), "S", "serializeShort", "parseShort", "attributeShort", "parseElementShort"); private static StringConversion s_booleanConversion = new PrimitiveStringConversion(Boolean.TYPE, Boolean.FALSE, "Z", "serializeBoolean", "parseBoolean", "attributeBoolean", "parseElementBoolean"); private static StringConversion s_dateConversion = new ObjectStringConversion(null, "org.jibx.runtime.Utility.serializeDateTime", "org.jibx.runtime.Utility.deserializeDateTime", "java.util.Date"); //#!j2me{ private static StringConversion s_sqlDateConversion = new ObjectStringConversion(null, "org.jibx.runtime.Utility.serializeSqlDate", "org.jibx.runtime.Utility.deserializeSqlDate", "java.sql.Date"); private static StringConversion s_sqlTimeConversion = new ObjectStringConversion(null, "org.jibx.runtime.Utility.serializeSqlTime", "org.jibx.runtime.Utility.deserializeSqlTime", "java.sql.Time"); private static StringConversion s_timestampConversion = new ObjectStringConversion(null, "org.jibx.runtime.Utility.serializeTimestamp", "org.jibx.runtime.Utility.deserializeTimestamp", "java.sql.Timestamp"); //#j2me} public static StringConversion s_base64Conversion = new ObjectStringConversion(null, "org.jibx.runtime.Utility.serializeBase64", "org.jibx.runtime.Utility.deserializeBase64", "byte[]"); public static StringConversion s_stringConversion = new ObjectStringConversion(null, null, null, "java.lang.String"); public static StringConversion s_objectConversion = new ObjectStringConversion(null, null, null, "java.lang.Object"); // // Constants for code generation private static final String FACTORY_SUFFIX = "Factory"; private static final String FACTORY_INTERFACE = "org.jibx.runtime.IBindingFactory"; private static final String[] FACTORY_INTERFACES = { FACTORY_INTERFACE }; private static final String FACTORY_INSTNAME = "m_inst"; private static final int FACTORY_INSTACCESS = Constants.ACC_PRIVATE | Constants.ACC_STATIC; private static final String MARSHALLER_ARRAYNAME = "m_marshallers"; private static final String UNMARSHALLER_ARRAYNAME = "m_unmarshallers"; private static final String STRING_ARRAYTYPE = "java.lang.String[]"; private static final String CLASSES_ARRAYNAME = "m_classes"; private static final String URIS_ARRAYNAME = "m_uris"; private static final String PREFIXES_ARRAYNAME = "m_prefixes"; private static final String GNAMES_ARRAYNAME = "m_globalNames"; private static final String GURIS_ARRAYNAME = "m_globalUris"; private static final String IDNAMES_ARRAYNAME = "m_idNames"; private static final String TYPEMAP_NAME = "m_typeMap"; private static final String CREATEMARSHAL_METHODNAME = "createMarshallingContext"; private static final String MARSHALCONTEXT_INTERFACE = "org.jibx.runtime.IMarshallingContext"; private static final String MARSHALCONTEXT_IMPLEMENTATION = "org.jibx.runtime.impl.MarshallingContext"; private static final String MARSHALCONTEXTINIT_SIGNATURE = "([Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;" + "Lorg/jibx/runtime/IBindingFactory;)V"; private static final String CREATEUNMARSHAL_METHODNAME = "createUnmarshallingContext"; private static final String UNMARSHALCONTEXT_INTERFACE = "org.jibx.runtime.IUnmarshallingContext"; private static final String UNMARSHALCONTEXT_IMPLEMENTATION = "org.jibx.runtime.impl.UnmarshallingContext"; private static final String UNMARSHALCONTEXTINIT_SIGNATURE = "(I[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;" + "[Ljava/lang/String;Lorg/jibx/runtime/IBindingFactory;)V"; private static final String GETINST_METHODNAME = "getInstance"; private static final String UNSUPPORTED_EXCEPTION_CLASS = "java.lang.UnsupportedOperationException"; private static final String GETVERSION_METHODNAME = "getCompilerVersion"; private static final String GETDISTRIB_METHODNAME = "getCompilerDistribution"; private static final String GETDEFINEDNSS_METHODNAME = "getNamespaces"; private static final String GETDEFINEDPREFS_METHODNAME = "getPrefixes"; private static final String GETCLASSES_METHODNAME = "getMappedClasses"; private static final String GETELEMENTNSS_METHODNAME = "getElementNamespaces"; private static final String GETELEMENTNAMES_METHODNAME = "getElementNames"; private static final String GETTYPEINDEX_METHODNAME = "getTypeIndex"; private static final String STRINGINT_MAPTYPE = "org.jibx.runtime.impl.StringIntHashMap"; private static final String STRINGINTINIT_SIGNATURE = "(I)V"; private static final String STRINGINTADD_METHOD = "org.jibx.runtime.impl.StringIntHashMap.add"; private static final String STRINGINTADD_SIGNATURE = "(Ljava/lang/String;I)I"; private static final String STRINGINTGET_METHOD = "org.jibx.runtime.impl.StringIntHashMap.get"; private static final String STRINGINTGET_SIGNATURE = "(Ljava/lang/String;)I"; private static final int MAX_STRING_LENGTH = 0x7FFF; private static final String SPLIT_NAMES_METHOD = "org.jibx.runtime.impl.RuntimeSupport.splitNames"; private static final String SPLIT_CLASS_NAMES_SIGNATURE = "(ILjava/lang/String;)[Ljava/lang/String;"; private static final String SPLIT_CLASS_NAMES_METHOD = "org.jibx.runtime.impl.RuntimeSupport.splitClassNames"; // // Actual instance data /** Binding name. */ private final String m_name; /** Index number of this binding. */ private final int m_index; /** Input binding flag. */ private final boolean m_isInput; /** Output binding flag. */ private final boolean m_isOutput; /** Use global ID values flag. */ private final boolean m_isIdGlobal; /** Support forward references to IDs flag. */ private final boolean m_isForwards; /** Generate souce tracking interface flag. */ private final boolean m_isTrackSource; /** Generate marshaller/unmarshaller classes for top-level non-base abstract mappings flag. */ private final boolean m_isForceClasses; /** Add default constructors where needed flag. */ private boolean m_isAddConstructors; /** Package for generated context factory. */ private String m_targetPackage; /** File root for generated context factory. */ private File m_targetRoot; /** Classes using unique (per class) identifiers. This is null and unused when using global ID values. */ private ArrayMap m_uniqueIds; /** Namespaces URIs included in binding. */ private ArrayMap m_namespaceUris; /** Original prefixes for namespaces. */ private ArrayList m_namespacePrefixes; /** Outer definition context with default definitions. */ private DefinitionContext m_outerContext; /** Inner definition context constructed for binding. */ private DefinitionContext m_activeContext; /** Flag for done assigning indexes to mapped classes. */ private boolean m_isMappedDone; /** Flag for schema instance namespace used in binding. */ private boolean m_isSchemaInstanceUsed; /** Next index number for marshaller/unmarshaller slots used in-line. */ private int m_mumIndex; /** Classes handled by in-line marshaller/unmarshaller references. */ private ArrayList m_extraClasses; /** Marshaller classes used in-line. */ private ArrayList m_extraMarshallers; /** Unmarshaller classes used in-line. */ private ArrayList m_extraUnmarshallers; /** * Constructor. Sets all defaults, including the default name provided, and * initializes the definition context for the outermost level of the * binding. * * @param name binding name * @param ibind input binding flag * @param obind output binding flag * @param tpack target package * @param glob global IDs flag * @param forward support forward referenced IDs flag * @param source add source tracking for unmarshalled objects flag * @param force create marshaller/unmarshaller classes for top-level * non-base mappings * @throws JiBXException if error in transformation */ public BindingDefinition(String name, boolean ibind, boolean obind, String tpack, boolean glob, boolean forward, boolean source, boolean force) throws JiBXException { // handle basic initialization super(null); m_name = name; m_isInput = ibind; m_isOutput = obind; m_targetPackage = tpack; m_isIdGlobal = glob; m_isForwards = forward; m_isTrackSource = source; m_isForceClasses = force; // set base class defaults m_styleDefault = ValueChild.ELEMENT_STYLE; m_autoLink = BindingBuilder.LINK_FIELDS; m_accessLevel = BindingBuilder.ACC_PRIVATE; m_nameStyle = BindingBuilder.NAME_HYPHENS; // initialize the contexts m_outerContext = m_activeContext = new DefinitionContext(this); m_activeContext = new DefinitionContext(this); m_namespaceUris = new ArrayMap(); m_namespaceUris.findOrAdd(""); m_namespacePrefixes = new ArrayList(); m_namespacePrefixes.add(""); m_outerContext.addNamespace(NamespaceDefinition.buildNamespace ("http://www.w3.org/XML/1998/namespace", "xml")); getNamespaceUriIndex ("http://www.w3.org/2001/XMLSchema-instance", "xsi"); // build the default converters in outer context m_outerContext.setDefaultConversion(new QName("byte.default"), s_byteConversion); m_outerContext.setDefaultConversion(new QName("char.default"), s_charConversion); StringConversion schar = s_charConversion.derive("char", "org.jibx.runtime.Utility.serializeCharString", "org.jibx.runtime.Utility.parseCharString", null); m_outerContext.setNamedConversion(new QName("char.string"), schar); m_outerContext.setDefaultConversion(new QName("double.default"), s_doubleConversion); m_outerContext.setDefaultConversion(new QName("float.default"), s_floatConversion); m_outerContext.setDefaultConversion(new QName("int.default"), s_intConversion); m_outerContext.setDefaultConversion(new QName("long.default"), s_longConversion); m_outerContext.setDefaultConversion(new QName("short.default"), s_shortConversion); m_outerContext.setDefaultConversion(new QName("boolean.default"), s_booleanConversion); m_outerContext.setDefaultConversion(new QName("Date.default"), s_dateConversion); //#!j2me{ m_outerContext.setDefaultConversion(new QName("SqlDate.default"), s_sqlDateConversion); m_outerContext.setDefaultConversion(new QName("SqlTime.default"), s_sqlTimeConversion); m_outerContext.setDefaultConversion(new QName("Timestamp.default"), s_timestampConversion); //#j2me} m_outerContext.setDefaultConversion(new QName("byte-array.default"), s_base64Conversion); m_outerContext.setDefaultConversion(new QName("String.default"), s_stringConversion); m_outerContext.setDefaultConversion(new QName("Object.default"), s_objectConversion); // add this binding to list m_index = s_bindings.size(); s_bindings.add(this); } /** * Get class linked to binding element. Implementation of * {@link org.jibx.binding.def.IContainer} interface, just returns * null in this case. * * @return information for class linked by binding */ public BoundClass getBoundClass() { return null; } /** * Get default style for value expression. Implementation of * {@link org.jibx.binding.def.IContainer} interface. * * @return default style type for values */ public int getStyleDefault() { return m_styleDefault; } /** * Set ID property. This parent binding component interface method should * never be called for the binding definition, and will throw a runtime * exception if it is called. * * @param child child defining the ID property * @return false */ public boolean setIdChild(IComponent child) { throw new IllegalStateException("Internal error - setIdChild for root"); } /** * Get default package used for code generation. * * @return default code generation package */ public String getDefaultPackage() { return m_targetPackage; } /** * Get root directory for default code generation package. * * @return root for default code generation */ public File getDefaultRoot() { return m_targetRoot; } /** * Set location for binding factory class generation. * * @param tpack target package for generated context factory * @param root target root for generated context factory */ public void setFactoryLocation(String tpack, File root) { m_targetPackage = tpack; m_targetRoot = root; } /** * Get index number of binding. * * @return index number for this binding definition */ public int getIndex() { return m_index; } /** * Check if binding is defined for unmarshalling. * * @return true if defined, false if not */ public boolean isInput() { return m_isInput; } /** * Check if binding is defined for marshalling. * * @return true if defined, false if not */ public boolean isOutput() { return m_isOutput; } /** * Check if global ids are used by binding. * * @return true if defined, false if not */ public boolean isIdGlobal() { return m_isIdGlobal; } /** * Check if forward ids are supported by unmarshalling binding. * * @return true if supported, false if not */ public boolean isForwards() { return m_isForwards; } /** * Check if source tracking is supported by unmarshalling binding. * * @return true if defined, false if not */ public boolean isTrackSource() { return m_isTrackSource; } /** * Check if default constructor generation is enabled. * * @return true if default constructor generation enabled, * false if not */ public boolean isAddConstructors() { return m_isAddConstructors; } /** * Get prefix for method or class generation. * * @return prefix for names created by this binding */ public String getPrefix() { return GENERATE_PREFIX + m_name; } /** * Get index for mapped class from binding. If the class is not already * included in any binding it is first added to the list of bound classes. * All bindings use the same index numbers to allow easy lookup of the * appropriate marshaller and unmarshaller within a particular binding, but * this does mean that all bindings dealing with a common set of classes * need to be compiled together. This uses the same sequence of values as * the {@link #getMarshallerUnmarshallerIndex} method but differs in that * the values returned by this method are unique per class. This method is * intended for use with <mapping> definitions. It is an error to call * this method after calling the {@link #getMarshallerUnmarshallerIndex} * method. * * @param name fully qualified name of mapped class * @return index number of class */ public int getMappedClassIndex(String name) { if (m_isMappedDone) { throw new IllegalStateException ("Internal error: Call out of sequence"); } else { return s_mappedClasses.findOrAdd(name); } } /** * Get marshaller/unmarshaller slot index in binding. This uses the same * sequence of values as the {@link #getMappedClassIndex} method but differs * in that the same class may have more than one marshaller/unmarshaller * slot defined. It's intended for user-defined marshallers/unmarshallers * where use is specific to a particular context. After the slot has been * assigned by this method, the {@link #setMarshallerUnmarshallerClasses} * method must be used to set the actual class names. * * @param clas fully qualified name of class handled by * marshaller/unmarshaller * @return slot number for marshaller/unmarshaller */ public int getMarshallerUnmarshallerIndex(String clas) { if (!m_isMappedDone) { m_isMappedDone = true; m_mumIndex = s_mappedClasses.size(); m_extraClasses = new ArrayList(); m_extraMarshallers = new ArrayList(); m_extraUnmarshallers = new ArrayList(); } m_extraClasses.add(clas); m_extraMarshallers.add(null); m_extraUnmarshallers.add(null); return m_mumIndex++; } /** * Set marshaller and unmarshaller class names for slot. * * @param slot assigned marshaller/unmarshaller slot number * @param mclas fully qualified name of marshaller class * @param uclas fully qualified name of unmarshaller class */ public void setMarshallerUnmarshallerClasses(int slot, String mclas, String uclas) { int index = slot - s_mappedClasses.size(); m_extraMarshallers.set(index, mclas); m_extraUnmarshallers.set(index, uclas); } /** * Get index for ID'ed class from binding. If the class is not already * included it is first added to the binding. If globally unique IDs are * used this always returns 0. * * @param name fully qualified name of ID'ed class * @return index number of class */ public int getIdClassIndex(String name) { if (m_isIdGlobal) { return 0; } else { if (m_uniqueIds == null) { m_uniqueIds = new ArrayMap(); } return m_uniqueIds.findOrAdd(name); } } /** * Get index for namespace URI in binding. If the URI is not already * included it is first added to the binding. The empty namespace URI * is always given index number 0. * * @param uri namespace URI to be included in binding * @param prefix prefix used with namespace * @return index number of namespace */ public int getNamespaceUriIndex(String uri, String prefix) { int index = m_namespaceUris.findOrAdd(uri); if (index > m_namespacePrefixes.size()) { m_namespacePrefixes.add(prefix); } return index; } /** * Set flag for schema instance namespace used in binding. */ public void setSchemaInstanceUsed() { m_isSchemaInstanceUsed = true; } /** * Build a class name blob from an array of class names. The returned string * consists of compacted fully-qualified class names separated by '|' * delimitor characters. If some number of package name levels are the same * as the last name, these packages are replaced with simple '.' characters * in the compacted name. null values are represented as empty * names. * * @param names fully-qualified class names * @return compacted name blob */ private static String buildClassNamesBlob(String[] names) { StringBuffer buff = new StringBuffer(); String last = ""; for (int i = 0; i < names.length; i++) { if (i > 0) { buff.append('|'); } String name = names[i]; if (name != null) { int base = 0; int scan = -1; int limit = Math.min(last.lastIndexOf('.'), name.lastIndexOf('.')); while (++scan <= limit) { char chr = last.charAt(scan); if (chr == name.charAt(scan)) { if (chr == '.') { buff.append('.'); base = scan + 1; } } else { break; } } buff.append(name.substring(base)); last = name; } } return buff.toString(); } /** * Build a namespace index blob from an array of namespace URIs. The * returned string consists of one character per namespace, giving the index * of the namespace URI within the array of definitions, biased by +2 to * avoid use of null characters (with +1 used for null values). * * @param uris table of namespaces defined in binding * @param nss namespaces for index blob * @return index blob */ private static String buildNamespaceIndexBlob(String[] uris, String[] nss) { Map indexmap = new HashMap(); for (int i = 0; i < uris.length; i++) { indexmap.put(uris[i], IntegerCache.getInteger(i+2)); } StringBuffer buff = new StringBuffer(nss.length); for (int i = 0; i < nss.length; i++) { String uri = nss[i]; if (uri == null) { buff.append((char)1); } else { buff.append((char)((Integer)indexmap.get(uri)).intValue()); } } return buff.toString(); } /** * Build a name blob from an array of names. The returned string consists of * names separated by '|' delimitor characters. null values are * represented as empty names. * * @param names names for blob * @return name blob */ private static String buildNamesBlob(String[] names) { StringBuffer buff = new StringBuffer(); for (int i = 0; i < names.length; i++) { if (i > 0) { buff.append('|'); } if (names[i] != null) { buff.append(names[i]); } } return buff.toString(); } /** * Generate code to load a string value, which may be longer than the * maximum string length. This either loads the string directly (if within * the limit) or recreates it by concatenating two or more shorter strings. * * @param string * @param mb */ private static void codegenString(String string, MethodBuilder mb) { if (string.length() < MAX_STRING_LENGTH) { mb.appendLoadConstant(string); } else { // build a StringBuffer, then loop loading each component constant // string in turn and appending it; when all strings done, call // StringBuffer.toString() mb.appendCreateNew("java.lang.StringBuffer"); mb.appendDUP(); mb.appendLoadConstant(string.length()); mb.appendCallInit("java.lang.StringBuffer", "(I)V"); int base = 0; while (base < string.length()) { int end = Math.min(base + MAX_STRING_LENGTH, string.length()); mb.appendLoadConstant(string.substring(base, end)); mb.appendCallVirtual("java.lang.StringBuffer.append", "(Ljava/lang/String;)Ljava/lang/StringBuffer;"); base = end; } mb.appendCallVirtual("java.lang.StringBuffer.toString", "()Ljava/lang/String;"); } } /** * Generate code. First sets linkages and executes code generation for * each top-level mapping defined in this binding, which in turn propagates * the code generation all the way down. Then generates the actual binding * factory for this binding. * * TODO: handle unidirectional bindings properly * * @param verbose flag for verbose output * @throws JiBXException if error in code generation */ public void generateCode(boolean verbose) throws JiBXException { // check schema instance namespace usage if (m_isSchemaInstanceUsed) { NamespaceDefinition xsins = NamespaceDefinition.buildNamespace ("http://www.w3.org/2001/XMLSchema-instance", "xsi"); ArrayList mappings = m_activeContext.getMappings(); for (int i = 0; i < mappings.size(); i++) { Object mapping = mappings.get(i); if (mapping instanceof MappingDefinition) { ((MappingDefinition)mapping).addNamespace(xsins); } } } // handle basic linkage and child code generation BoundClass.setModify(m_targetRoot, m_targetPackage); m_activeContext.linkMappings(); m_activeContext.setLinkages(); m_activeContext.generateCode(verbose, m_isForceClasses); // disabled because of potential recursion issues /* if (verbose) { System.out.println("After linking view of binding " + m_name + ':'); print(); } */ // build the binding factory class String name; if (m_targetPackage.length() == 0) { name = getPrefix() + FACTORY_SUFFIX; } else { name = m_targetPackage + '.' + getPrefix() + FACTORY_SUFFIX; } ClassFile base = ClassCache.getClassFile("java.lang.Object"); ClassFile cf = new ClassFile(name, m_targetRoot, base, Constants.ACC_PUBLIC, FACTORY_INTERFACES); // add static field for instance and member fields for data ClassItem inst = cf.addField(FACTORY_INTERFACE, FACTORY_INSTNAME, FACTORY_INSTACCESS); ClassItem marshs = cf.addPrivateField(STRING_ARRAYTYPE, MARSHALLER_ARRAYNAME); ClassItem umarshs = cf.addPrivateField(STRING_ARRAYTYPE, UNMARSHALLER_ARRAYNAME); ClassItem classes = cf.addPrivateField(STRING_ARRAYTYPE, CLASSES_ARRAYNAME); ClassItem uris = cf.addPrivateField(STRING_ARRAYTYPE, URIS_ARRAYNAME); ClassItem prefs = cf.addPrivateField(STRING_ARRAYTYPE, PREFIXES_ARRAYNAME); ClassItem gnames = cf.addPrivateField(STRING_ARRAYTYPE, GNAMES_ARRAYNAME); ClassItem guris = cf.addPrivateField(STRING_ARRAYTYPE, GURIS_ARRAYNAME); ClassItem idnames = cf.addPrivateField(STRING_ARRAYTYPE, IDNAMES_ARRAYNAME); // add the private constructor method MethodBuilder mb = new ExceptionMethodBuilder("", Type.VOID, new Type[0], cf, Constants.ACC_PRIVATE); // call the superclass constructor mb.appendLoadLocal(0); mb.appendCallInit("java.lang.Object", "()V"); // create and fill array of unmarshaller class names int count = s_mappedClasses.size(); int mcnt = m_isMappedDone ? m_mumIndex : count; if (m_isInput) { String[] names = new String[mcnt]; for (int i = 0; i < count; i++) { String cname = (String)s_mappedClasses.get(i); IMapping map = m_activeContext.getMappingAtLevel(cname); if (map != null && map.getUnmarshaller() != null) { names[i] = map.getUnmarshaller().getName(); } } for (int i = count; i < mcnt; i++) { names[i] = (String)m_extraUnmarshallers.get(i-count); } mb.appendLoadLocal(0); mb.appendLoadConstant(mcnt); codegenString(buildClassNamesBlob(names), mb); mb.appendCallStatic(SPLIT_CLASS_NAMES_METHOD, SPLIT_CLASS_NAMES_SIGNATURE); mb.appendPutField(umarshs); } // create and fill array of marshaller class names if (m_isOutput) { String[] names = new String[mcnt]; for (int i = 0; i < count; i++) { String cname = (String)s_mappedClasses.get(i); IMapping map = m_activeContext.getMappingAtLevel(cname); if (map != null && map.getMarshaller() != null) { names[i] = map.getMarshaller().getName(); } } for (int i = count; i < mcnt; i++) { names[i] = (String)m_extraMarshallers.get(i-count); } mb.appendLoadLocal(0); mb.appendLoadConstant(mcnt); codegenString(buildClassNamesBlob(names), mb); mb.appendCallStatic(SPLIT_CLASS_NAMES_METHOD, SPLIT_CLASS_NAMES_SIGNATURE); mb.appendPutField(marshs); } // create and fill array of mapped class names String[] names = new String[mcnt]; for (int i = 0; i < count; i++) { names[i] = (String)s_mappedClasses.get(i); } for (int i = count; i < mcnt; i++) { names[i] = (String)m_extraClasses.get(i-count); } mb.appendLoadLocal(0); mb.appendLoadConstant(mcnt); codegenString(buildClassNamesBlob(names), mb); mb.appendCallStatic(SPLIT_CLASS_NAMES_METHOD, SPLIT_CLASS_NAMES_SIGNATURE); mb.appendPutField(classes); // create and fill array of namespace URIs String[] nsuris = new String[m_namespaceUris.size()]; mb.appendLoadLocal(0); mb.appendLoadConstant(m_namespaceUris.size()); mb.appendCreateArray("java.lang.String"); for (int i = 0; i < m_namespaceUris.size(); i++) { mb.appendDUP(); mb.appendLoadConstant(i); String uri = (String)m_namespaceUris.get(i); mb.appendLoadConstant(uri); mb.appendAASTORE(); nsuris[i] = uri; } mb.appendPutField(uris); // create and fill array of namespace prefixes if (m_isOutput) { mb.appendLoadLocal(0); mb.appendLoadConstant(m_namespacePrefixes.size()); mb.appendCreateArray("java.lang.String"); for (int i = 0; i < m_namespacePrefixes.size(); i++) { mb.appendDUP(); mb.appendLoadConstant(i); mb.appendLoadConstant((String)m_namespacePrefixes.get(i)); mb.appendAASTORE(); } mb.appendPutField(prefs); } // create and fill arrays of globally mapped element names and URIs names = new String[count]; String[] namespaces = new String[count]; for (int i = 0; i < count; i++) { String cname = (String)s_mappedClasses.get(i); IMapping map = m_activeContext.getMappingAtLevel(cname); if (map != null) { NameDefinition ndef = map.getName(); if (ndef != null) { names[i] = ndef.getName(); namespaces[i] = ndef.getNamespace(); } } } mb.appendLoadLocal(0); mb.appendLoadConstant(mcnt); codegenString(buildNamesBlob(names), mb); mb.appendCallStatic(SPLIT_NAMES_METHOD, SPLIT_CLASS_NAMES_SIGNATURE); mb.appendPutField(gnames); mb.appendLoadLocal(0); mb.appendLoadConstant(buildNamespaceIndexBlob(nsuris, namespaces)); mb.appendLoadLocal(0); mb.appendGetField(uris); mb.appendCallStatic(EXPAND_NAMESPACES_METHOD, EXPAND_NAMESPACES_SIGNATURE); mb.appendPutField(guris); // create and fill array of class names with unique IDs (null if none) mb.appendLoadLocal(0); if (m_uniqueIds != null && m_uniqueIds.size() > 0) { mb.appendLoadConstant(m_uniqueIds.size()); mb.appendCreateArray("java.lang.String"); for (int i = 0; i < m_uniqueIds.size(); i++) { mb.appendDUP(); mb.appendLoadConstant(i); mb.appendLoadConstant((String)m_uniqueIds.get(i)); mb.appendAASTORE(); } } else { mb.appendACONST_NULL(); } mb.appendPutField(idnames); // get class names for types (abstract non-base mappings) ArrayList tnames = new ArrayList(); if (m_isForceClasses) { for (int i = 0; i < count; i++) { String cname = (String)s_mappedClasses.get(i); IMapping map = m_activeContext.getMappingAtLevel(cname); if (map != null && map.isAbstract() && !map.isBase()) { String tname = map.getTypeName(); if (tname == null) { tname = cname; } tnames.add(tname); } } } // check if map needed for types ClassItem tmap = null; if (tnames.size() >= TYPEMAP_MINIMUM_SIZE) { // create field for map tmap = cf.addPrivateField(STRINGINT_MAPTYPE, TYPEMAP_NAME); // initialize with appropriate size mb.appendLoadLocal(0); mb.appendCreateNew(STRINGINT_MAPTYPE); mb.appendDUP(); mb.appendLoadConstant(tnames.size()); mb.appendCallInit(STRINGINT_MAPTYPE, STRINGINTINIT_SIGNATURE); // add all values to map for (int i = 0; i < tnames.size(); i++) { int index = s_mappedClasses.find(tnames.get(i)); if (index >= 0) { mb.appendDUP(); mb.appendLoadConstant((String)tnames.get(i)); mb.appendLoadConstant(index); mb.appendCallVirtual(STRINGINTADD_METHOD, STRINGINTADD_SIGNATURE); mb.appendPOP(); } } mb.appendPutField(tmap); } // finish with return from constructor mb.appendReturn(); mb.codeComplete(false); mb.addMethod(); // add the public marshalling context construction method mb = new ExceptionMethodBuilder(CREATEMARSHAL_METHODNAME, ClassItem.typeFromName(MARSHALCONTEXT_INTERFACE), new Type[0], cf, Constants.ACC_PUBLIC); if (m_isOutput) { // construct and return marshaller instance mb.appendCreateNew(MARSHALCONTEXT_IMPLEMENTATION); mb.appendDUP(); mb.appendLoadLocal(0); mb.appendGetField(classes); mb.appendLoadLocal(0); mb.appendGetField(marshs); mb.appendLoadLocal(0); mb.appendGetField(uris); mb.appendLoadLocal(0); mb.appendCallInit(MARSHALCONTEXT_IMPLEMENTATION, MARSHALCONTEXTINIT_SIGNATURE); mb.appendReturn(MARSHALCONTEXT_IMPLEMENTATION); } else { // throw exception for unsupported operation mb.appendCreateNew(UNSUPPORTED_EXCEPTION_CLASS); mb.appendDUP(); mb.appendLoadConstant ("Binding is input only - cannot create marshaller"); mb.appendCallInit(UNSUPPORTED_EXCEPTION_CLASS, MethodBuilder.EXCEPTION_CONSTRUCTOR_SIGNATURE1); mb.appendThrow(); } mb.codeComplete(false); mb.addMethod(); // add the public unmarshalling context construction method mb = new ExceptionMethodBuilder(CREATEUNMARSHAL_METHODNAME, ClassItem.typeFromName(UNMARSHALCONTEXT_INTERFACE), new Type[0], cf, Constants.ACC_PUBLIC); if (m_isInput) { // construct and return unmarshaller instance mb.appendCreateNew(UNMARSHALCONTEXT_IMPLEMENTATION); mb.appendDUP(); mb.appendLoadConstant(mcnt); mb.appendLoadLocal(0); mb.appendGetField(umarshs); mb.appendLoadLocal(0); mb.appendGetField(guris); mb.appendLoadLocal(0); mb.appendGetField(gnames); mb.appendLoadLocal(0); mb.appendGetField(idnames); mb.appendLoadLocal(0); mb.appendCallInit(UNMARSHALCONTEXT_IMPLEMENTATION, UNMARSHALCONTEXTINIT_SIGNATURE); mb.appendReturn(UNMARSHALCONTEXT_IMPLEMENTATION); } else { // throw exception for unsupported operation mb.appendCreateNew(UNSUPPORTED_EXCEPTION_CLASS); mb.appendDUP(); mb.appendLoadConstant ("Binding is output only - cannot create unmarshaller"); mb.appendCallInit(UNSUPPORTED_EXCEPTION_CLASS, MethodBuilder.EXCEPTION_CONSTRUCTOR_SIGNATURE1); mb.appendThrow(); } mb.codeComplete(false); mb.addMethod(); // add the compiler version access method mb = new ExceptionMethodBuilder(GETVERSION_METHODNAME, Type.INT, new Type[0], cf, Constants.ACC_PUBLIC); mb.appendLoadConstant(IBindingFactory.CURRENT_VERSION_NUMBER); mb.appendReturn("int"); mb.codeComplete(false); mb.addMethod(); // add the compiler distribution access method mb = new ExceptionMethodBuilder(GETDISTRIB_METHODNAME, Type.STRING, new Type[0], cf, Constants.ACC_PUBLIC); mb.appendLoadConstant(CURRENT_VERSION_NAME); mb.appendReturn(Type.STRING); mb.codeComplete(false); mb.addMethod(); // add the defined namespace URI array access method Type satype = new ArrayType(Type.STRING, 1); mb = new ExceptionMethodBuilder(GETDEFINEDNSS_METHODNAME, satype, new Type[0], cf, Constants.ACC_PUBLIC); mb.appendLoadLocal(0); mb.appendGetField(uris); mb.appendReturn(satype); mb.codeComplete(false); mb.addMethod(); // add the defined namespace prefixes array access method mb = new ExceptionMethodBuilder(GETDEFINEDPREFS_METHODNAME, satype, new Type[0], cf, Constants.ACC_PUBLIC); mb.appendLoadLocal(0); mb.appendGetField(prefs); mb.appendReturn(satype); mb.codeComplete(false); mb.addMethod(); // add the class name array access method mb = new ExceptionMethodBuilder(GETCLASSES_METHODNAME, satype, new Type[0], cf, Constants.ACC_PUBLIC); mb.appendLoadLocal(0); mb.appendGetField(classes); mb.appendReturn(satype); mb.codeComplete(false); mb.addMethod(); // add the element namespace URI array access method mb = new ExceptionMethodBuilder(GETELEMENTNSS_METHODNAME, satype, new Type[0], cf, Constants.ACC_PUBLIC); mb.appendLoadLocal(0); mb.appendGetField(guris); mb.appendReturn(satype); mb.codeComplete(false); mb.addMethod(); // add the element name array access method mb = new ExceptionMethodBuilder(GETELEMENTNAMES_METHODNAME, satype, new Type[0], cf, Constants.ACC_PUBLIC); mb.appendLoadLocal(0); mb.appendGetField(gnames); mb.appendReturn(satype); mb.codeComplete(false); mb.addMethod(); // add the type mapping index lookup method mb = new ExceptionMethodBuilder(GETTYPEINDEX_METHODNAME, Type.INT, new Type[] { Type.STRING }, cf, Constants.ACC_PUBLIC); if (tnames.size() > 0) { if (tmap == null) { // generate in-line compares for mapping for (int i = 0; i < tnames.size(); i++) { int index = s_mappedClasses.find(tnames.get(i)); if (index >= 0) { mb.appendLoadLocal(1); mb.appendLoadConstant((String)tnames.get(i)); mb.appendCallVirtual("java.lang.String.equals", "(Ljava/lang/Object;)Z"); BranchWrapper onfail = mb.appendIFEQ(this); mb.appendLoadConstant(index); mb.appendReturn(Type.INT); mb.targetNext(onfail); } } mb.appendLoadConstant(-1); } else { // use map constructed in initializer mb.appendLoadLocal(0); mb.appendGetField(tmap); mb.appendLoadLocal(1); mb.appendCallVirtual(STRINGINTGET_METHOD, STRINGINTGET_SIGNATURE); } } else { // no types to handle, just always return failure mb.appendLoadConstant(-1); } mb.appendReturn(Type.INT); mb.codeComplete(false); mb.addMethod(); // finish with instance creation method mb = new ExceptionMethodBuilder(GETINST_METHODNAME, ClassItem.typeFromName(FACTORY_INTERFACE), new Type[0], cf, (short)(Constants.ACC_PUBLIC | Constants.ACC_STATIC)); mb.appendGetStatic(inst); BranchWrapper ifdone = mb.appendIFNONNULL(this); mb.appendCreateNew(cf.getName()); mb.appendDUP(); mb.appendCallInit(cf.getName(), "()V"); mb.appendPutStatic(inst); mb.targetNext(ifdone); mb.appendGetStatic(inst); mb.appendReturn(FACTORY_INTERFACE); mb.codeComplete(false); mb.addMethod(); // add factory class to generated registry cf = MungedClass.getUniqueSupportClass(cf); String link = name; if (!name.equals(cf.getName())) { link = cf.getName() + '=' + name; } // record the binding factory in each top-level mapped class ArrayList maps = m_activeContext.getMappings(); for (int i = 0; i < maps.size(); i++) { IMapping map = (IMapping)maps.get(i); if (map instanceof MappingBase) { BoundClass bound = ((MappingBase)map).getBoundClass(); if (bound.getClassFile().isModifiable()) { bound.addFactory(link); } } } } /** * Get indexed binding. * * @param index number of binding to be returned * @return binding at the specified index */ public static BindingDefinition getBinding(int index) { return (BindingDefinition)s_bindings.get(index); } /** * Discard cached information and reset in preparation for a new binding * run. */ public static void reset() { s_bindings = new ArrayList(); s_mappedClasses = new ArrayMap(); } // // IContainer interface method definitions public boolean isContentOrdered() { return true; } public boolean hasNamespaces() { return false; } public BindingDefinition getBindingRoot() { return this; } public DefinitionContext getDefinitionContext() { return m_activeContext; } // DEBUG private static byte[] s_blanks = " ".getBytes(); public static void indent(int depth) { if (depth < s_blanks.length) { System.out.write(s_blanks, 0, depth); } else { System.out.print(s_blanks); } } public void print() { System.out.println("binding " + m_name + ":"); m_activeContext.print(1); } } libjibx-java-1.1.6a/build/src/org/jibx/binding/def/ComponentProperty.java0000644000175000017500000003103711013374744026245 0ustar moellermoeller/* Copyright (c) 2003-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import org.jibx.binding.classes.*; import org.jibx.runtime.JiBXException; /** * Property reference with binding defined by component. This handles loading * and storing the property value, calling the wrapped component methods for * everything else. * * @author Dennis M. Sosnoski */ public class ComponentProperty extends PassThroughComponent { /** Property definition. */ private final PropertyDefinition m_property; /** Skip marshalling code tests flag. */ private boolean m_skipMarshal; /** Fake content to force unmarshal to create an object. */ private boolean m_forceUnmarshal; /** * Constructor. * * @param prop actual property definition * @param impl component that defines marshalling and unmarshalling * @param skip flag for marshalling code tests to be skipped */ public ComponentProperty(PropertyDefinition prop, IComponent impl, boolean skip) { super(impl); m_property = prop; m_skipMarshal = skip; } /** * Set flag for skipping marshalling presence test code generation. * * @param skip true if skipping, false if not */ public void setSkipping(boolean skip) { m_skipMarshal = skip; } /** * Set flag to force unmarshalling to create an object. * * @param force true if skipping, false if not */ public void setForceUnmarshal(boolean force) { m_forceUnmarshal = force; } /** * Get the property information. This is a kludge used by the ElementWrapper * code to store a null value directly to the property when * unmarshalling a missing or xsi:nil element. * * @return property information */ public PropertyDefinition getProperty() { return m_property; } // // IComponent interface method definitions (overrides of defaults) public boolean isOptional() { return m_property.isOptional(); } public boolean hasContent() { return m_forceUnmarshal || super.hasContent(); } public void genAttributeUnmarshal(ContextMethodBuilder mb) throws JiBXException { // start by generating code to load owning object so can finish by // storing to property if (!m_property.isImplicit() && !m_property.isThis()) { mb.loadObject(); } BranchWrapper ifpres = null; BranchWrapper tosave = null; if (m_property.isOptional()) { // generate code to check presence for the case of an optional item, // with branch if so; if not present, set a null value with branch // to be targeted at property store. m_component.genAttrPresentTest(mb); ifpres = mb.appendIFNE(this); mb.appendACONST_NULL(); tosave = mb.appendUnconditionalBranch(this); } // generate unmarshalling code for not optional, or optional and // present; get existing instance or create a new one and handle // attribute unmarshalling mb.targetNext(ifpres); if (m_property.isImplicit()) { m_component.genNewInstance(mb); } else if (!m_property.isThis()) { // load current value, cast, copy, and test for non-null mb.loadObject(); m_property.genLoad(mb); mb.appendCreateCast(m_property.getGetValueType(), m_component.getType()); mb.appendDUP(); BranchWrapper haveinst = mb.appendIFNONNULL(this); // current value null, pop copy and create a new instance mb.appendPOP(); m_component.genNewInstance(mb); mb.targetNext(haveinst); } m_component.genAttributeUnmarshal(mb); // convert the type if necessary, then store result to property mb.appendCreateCast(m_component.getType(), m_property.getSetValueType()); mb.targetNext(tosave); if (!m_property.isImplicit() && !m_property.isThis()) { m_property.genStore(mb); } } public void genAttributeMarshal(ContextMethodBuilder mb) throws JiBXException { if (m_skipMarshal) { // just generate pass-through marshal code generation m_component.genAttributeMarshal(mb); } else { // start by generating code to load the actual object reference if (!m_property.isImplicit()) { mb.loadObject(); m_property.genLoad(mb); } BranchWrapper ifpres = null; BranchWrapper toend = null; if (m_property.isOptional()) { // generate code to check nonnull for the case of an optional item, // with branch if so; if not present, just pop the copy with branch // to be targeted past end. mb.appendDUP(); ifpres = mb.appendIFNONNULL(this); mb.appendPOP(); toend = mb.appendUnconditionalBranch(this); } // generate code for actual marshalling if not optional, or optional and // nonnull; then finish by setting target for optional with // null value case mb.targetNext(ifpres); m_component.genAttributeMarshal(mb); mb.targetNext(toend); } } public void genContentUnmarshal(ContextMethodBuilder mb) throws JiBXException { // check for both attribute and content components if (m_component.hasAttribute()) { // start with code to load reference from attribute unmarshalling if (!m_property.isImplicit()) { mb.loadObject(); m_property.genLoad(mb); } else { mb.appendDUP(); } BranchWrapper toend = null; if (m_property.isOptional()) { // generate code to check value defined for the case of an // optional item, with branch if so; if not present, just pop // the copy with branch to be targeted past end. toend = mb.appendIFNULL(this); if (!m_property.isImplicit()) { mb.loadObject(); m_property.genLoad(mb); } else { mb.appendDUP(); } } // follow up in case where present with unmarshalling content m_component.genContentUnmarshal(mb); mb.appendPOP(); mb.targetNext(toend); } else { // start by generating code to load owning object so can finish by // storing to property if (!m_property.isImplicit() && !m_property.isThis()) { mb.loadObject(); } BranchWrapper ifpres = null; BranchWrapper tosave = null; if (m_property.isOptional() && !m_forceUnmarshal) { // generate code to check presence for the case of an optional // item, with branch if so; if not present, set a null value // with branch to be targeted at property store. m_component.genContentPresentTest(mb); ifpres = mb.appendIFNE(this); mb.appendACONST_NULL(); tosave = mb.appendUnconditionalBranch(this); } // generate unmarshalling code for not optional, or optional and // present; get existing instance or create a new one and handle // content unmarshalling mb.targetNext(ifpres); if (m_property.isImplicit()) { m_component.genNewInstance(mb); } else if (!m_property.isThis()) { // load current value, cast, copy, and test for non-null mb.loadObject(); m_property.genLoad(mb); mb.appendCreateCast(m_property.getGetValueType(), m_component.getType()); mb.appendDUP(); BranchWrapper haveinst = mb.appendIFNONNULL(this); // current value null, pop copy and create a new instance mb.appendPOP(); m_component.genNewInstance(mb); mb.targetNext(haveinst); } if (!m_forceUnmarshal) { m_component.genContentUnmarshal(mb); } // convert the type if necessary, then store result to property mb.appendCreateCast(m_component.getType(), m_property.getSetValueType()); mb.targetNext(tosave); if (!m_property.isImplicit() && !m_property.isThis()) { m_property.genStore(mb); } } } public void genContentMarshal(ContextMethodBuilder mb) throws JiBXException { if (m_forceUnmarshal) { if (m_property.isImplicit()) { // discard the object reference mb.appendPOP(); } } else { if (m_skipMarshal) { // just generate pass-through marshal code generation m_component.genContentMarshal(mb); } else { // start by generating code to load the actual object reference if (!m_property.isImplicit()) { mb.loadObject(); m_property.genLoad(mb); } BranchWrapper ifpres = null; BranchWrapper tonext = null; if (m_property.isOptional()) { // generate code to check nonull for the case of an optional item, // with branch if so; if not present, just pop the copy with branch // to be targeted past end. mb.appendDUP(); ifpres = mb.appendIFNONNULL(this); mb.appendPOP(); tonext = mb.appendUnconditionalBranch(this); } // generate code for actual marshalling if not optional, or optional and // nonnull; then finish by setting target for optional with null value // case mb.targetNext(ifpres); m_component.genContentMarshal(mb); mb.targetNext(tonext); } } } // DEBUG public void print(int depth) { BindingDefinition.indent(depth); System.out.print("component " + m_property.toString()); if (m_skipMarshal) { System.out.print(" (pass-through marshal)"); } System.out.println(); m_component.print(depth+1); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/def/DefinitionContext.java0000644000175000017500000006262710541614666026211 0ustar moellermoeller/* Copyright (c) 2003-2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import java.util.ArrayList; import java.util.HashMap; import org.jibx.binding.classes.ClassFile; import org.jibx.binding.classes.MethodBuilder; import org.jibx.binding.util.ArrayMap; import org.jibx.runtime.JiBXException; import org.jibx.runtime.QName; /** * Nesting level for definitions in binding. This tracks namespace and mapping * definitions that apply to all enclosed items. * * @author Dennis M. Sosnoski * @version 1.0 */ public class DefinitionContext { /** Containing binding definition component. */ private final IContainer m_container; /** Containing definition context. */ private final DefinitionContext m_context; /** Namespace used by default at this level for attributes. */ private NamespaceDefinition m_attributeDefault; /** Namespace used by default at this level for elements. */ private NamespaceDefinition m_elementDefault; /** Namespaces defined at level (lazy create). */ private ArrayList m_namespaces; /** Mapping from prefix to namespace definition (lazy create). */ private HashMap m_prefixMap; /** Mapping from URI to namespace definition (lazy create). */ private HashMap m_uriMap; /** Mapping from fully qualified class name to mapping index (lazy create). */ private ArrayMap m_classMap; /** Class mappings defined at level (lazy create). */ private ArrayList m_mappings; /** Map from signatures to String conversions. */ private HashMap m_convertMap; /** Map from format qnames to String conversions. */ private HashMap m_formatMap; /** Named binding components (only for root context of a binding). */ private HashMap m_namedStructureMap; /** * Constructor. Uses the containing context to establish the hierarchy for * resolving namespaces and class mappings. * * @param contain containing binding definition component */ public DefinitionContext(IContainer contain) { m_container = contain; m_context = contain.getDefinitionContext(); // TODO: make these lazy m_convertMap = new HashMap(); m_formatMap = new HashMap(); if (m_context == null) { m_namedStructureMap = new HashMap(); } } /** * Check for duplicate or conflicting namespace. This also intializes the * namespace structures for this context the first time the method is * called. * * @param def * @return duplicate flag (either complete duplicate, or prior definition * of same URI with prefix is present) * @throws JiBXException on conflicting prefix */ private boolean checkDuplicateNamespace(NamespaceDefinition def) throws JiBXException { // create structures if not already done if (m_namespaces == null) { m_namespaces = new ArrayList(); m_prefixMap = new HashMap(); m_uriMap = new HashMap(); } // check for conflict (or duplicate) on prefix String uri = def.getUri(); String prefix = def.getPrefix(); NamespaceDefinition dup = (NamespaceDefinition)m_prefixMap.get(prefix); DefinitionContext ctx = this; while (dup == null && (ctx = ctx.m_context) != null) { if (ctx.m_prefixMap != null) { dup = (NamespaceDefinition)ctx.m_prefixMap.get(prefix); } } if (dup == null) { // check for duplicate definition of same URI, but with prefix NamespaceDefinition prior = (NamespaceDefinition)m_uriMap.get(uri); if (prior != null && prior.getPrefix() != null) { return true; } else { return false; } } else { // check for repeated definition of same namespace if (uri.equals(dup.getUri())) { return true; } else { throw new JiBXException("Namespace prefix conflict"); } } } /** * Add namespace to internal tables. * * @param def */ private void internalAddNamespace(NamespaceDefinition def) { String uri = def.getUri(); String prefix = def.getPrefix(); def.setIndex(m_container.getBindingRoot(). getNamespaceUriIndex(uri, prefix)); m_namespaces.add(def); m_prefixMap.put(prefix, def); m_uriMap.put(uri, def); } /** * Add namespace to set defined at this level. If the new namespace * conflicts with an existing namespace at this level (in terms of default * usage or prefix) this throws an exception. * * @param def namespace definition to be added (duplicates ignored) * @throws JiBXException on namespace definition conflict */ public void addNamespace(NamespaceDefinition def) throws JiBXException { if (!checkDuplicateNamespace(def)) { // check for conflict as default for attributes if (def.isAttributeDefault()) { if (m_attributeDefault == null) { m_attributeDefault = def; } else { throw new JiBXException ("Multiple default attribute namespaces at level"); } } // check for conflict as default for elements if (def.isElementDefault()) { if (m_elementDefault == null) { m_elementDefault = def; } else { throw new JiBXException ("Multiple default element namespaces at level"); } } // no conflicts, add it internalAddNamespace(def); } } /** * Add namespace declaration to set defined at this level. This method * treats all namespaces as though they were declared with default="none". * If the new namespace prefix conflicts with an existing namespace this * throws an exception. * * @param def namespace definition to be added (duplicates ignored) * @throws JiBXException on namespace definition conflict */ public void addImpliedNamespace(NamespaceDefinition def) throws JiBXException { if (!checkDuplicateNamespace(def)) { internalAddNamespace(def); } } /** * Add class mapping to set defined at this level. If the new mapping * conflicts with an existing one at this level it throws an exception. * * @param def mapping definition to be added * @throws JiBXException on mapping definition conflict */ public void addMapping(IMapping def) throws JiBXException { // create structure if not already done if (m_mappings == null) { m_classMap = new ArrayMap(); m_mappings = new ArrayList(); } // check for conflict on class name before adding to definitions String name = def.getTypeName(); if (name == null) { name = def.getReferenceType(); } int index = m_classMap.findOrAdd(name); if (index < m_mappings.size()) { if (def.getTypeName() == null) { throw new JiBXException ("Conflicting mappings for class " + name); } else { throw new JiBXException ("Conflicting mappings for type name " + name); } } else { m_mappings.add(def); } } /** * Add named structure component to set defined at this level. If the name * conflicts with an existing one at this level it throws an exception. * * @param name component name to be set * @param comp named component * @throws JiBXException on mapping definition conflict */ public void addNamedStructure(String name, IComponent comp) throws JiBXException { if (m_namedStructureMap == null) { m_context.addNamedStructure(name, comp); } else { m_namedStructureMap.put(name, comp); } } /** * Get the default namespace for a contained name. Elements and attributes * are treated separately, since namespace handling differs between the two. * * @param attr flag for attribute name * @return default namespace URI, or null if none */ private NamespaceDefinition getDefaultNamespace(boolean attr) { NamespaceDefinition ns; if (attr) { ns = m_attributeDefault; } else { ns = m_elementDefault; } if (ns == null && m_context != null) { ns = m_context.getDefaultNamespace(attr); } return ns; } /** * Get the default namespace URI for a contained name. Elements and * attributes are treated separately, since namespace handling differs * between the two. * * @param attr flag for attribute name * @return default namespace URI, or null if none */ public String getDefaultURI(boolean attr) { NamespaceDefinition ns = getDefaultNamespace(attr); if (ns == null) { return null; } else { return ns.getUri(); } } /** * Get the default namespace index for a contained name. Elements and * attributes are treated separately, since namespace handling differs * between the two. * * @param attr flag for attribute name * @return default namespace index */ public int getDefaultIndex(boolean attr) { NamespaceDefinition ns = getDefaultNamespace(attr); if (ns == null) { return 0; } else { return ns.getIndex(); } } /** * Get namespace index for a given URI. Finds the prefix for a URI in a * name contained by this level, throwing an exception if the URI is not * found or does not have a prefix. * * @param uri namespace URI to be found * @param attr flag for attribute name * @return namespace index for URI * @throws JiBXException if URI not defined or not usable */ public int getNamespaceIndex(String uri, boolean attr) throws JiBXException { // check for namespace URI defined at this level if (m_uriMap != null) { Object value = m_uriMap.get(uri); if (value != null) { if (!attr || ((NamespaceDefinition)value).getPrefix() != null) { return ((NamespaceDefinition)value).getIndex(); } } } // if all else fails, try the higher level if (m_context == null) { throw new JiBXException("Namespace URI \"" + uri + "\" not defined or not usable"); } else { return m_context.getNamespaceIndex(uri, attr); } } /** * Get mapping definition for class if defined at this level. * * @param name fully qualified class name * @return mapping definition for class, or null if not defined */ public IMapping getMappingAtLevel(String name) { // check for class mapping defined at this level if (m_classMap != null) { // check for definition at this level int index = m_classMap.find(name); if (index >= 0) { return (IMapping)m_mappings.get(index); } } return null; } /** * Get mapping definition for class. Finds the mapping for a fully * qualified class name, throwing an exception if no mapping is defined. * This can only be used during the linkage phase. * * @param name fully qualified class name * @return mapping definition for class, or null if not defined */ public IMapping getClassMapping(String name) { // check for class mapping defined at this level IMapping def = getMappingAtLevel(name); if (def == null && m_context != null) { // try finding definition at higher level def = m_context.getClassMapping(name); } return def; } /** * Get nested structure by name. Finds the nested structure with the given * name, throwing an exception if no component with that name is defined. * * @param name component name to be found * @return component with given name * @throws JiBXException if name not defined */ public IComponent getNamedStructure(String name) throws JiBXException { // check for named component defined at this level IComponent comp = null; if (m_namedStructureMap != null) { comp = (IComponent)m_namedStructureMap.get(name); } if (comp == null) { if (m_context == null) { throw new JiBXException("Referenced label \"" + name + "\" not defined"); } else { comp = m_context.getNamedStructure(name); } } return comp; } /** * Get mapping definitions at level. * * @return mapping definitions, null if none defined at level */ public ArrayList getMappings() { return m_mappings; } /** * Get specific conversion definition for type. Finds with an exact match * on the class name, checking the containing definitions if a conversion * is not found at this level. * * @param name fully qualified class name to be converted * @return conversion definition for class, or null if not * found */ public StringConversion getSpecificConversion(String name) { StringConversion conv = (StringConversion)m_convertMap.get(name); if (conv == null && m_context != null) { conv = m_context.getSpecificConversion(name); } return conv; } /** * Get conversion definition for class. Finds the conversion based on a * fully qualified class name. If a specific conversion for the actual * class is not found (either in this or a containing level) this returns * the generic object conversion. * * @param clas information for target conversion class * @return conversion definition for class */ public StringConversion getConversion(ClassFile clas) { // use conversions for superclasses only StringConversion conv = getSpecificConversion(clas.getName()); if (conv == null) { return BindingDefinition.s_objectConversion; } else { return conv; } } /** * Get named conversion definition. Finds the conversion with the supplied * name, checking the containing definitions if the conversion is not found * at this level. * * @param name conversion name to be found * @return conversion definition for class */ public StringConversion getNamedConversion(QName name) { StringConversion conv = (StringConversion)m_formatMap.get(name); if (conv == null && m_context != null) { conv = m_context.getNamedConversion(name); } return conv; } /** * Add named conversion. Checks for duplicate conversions defined within * a level with the same name. * * @param name format name for this conversion * @param conv conversion definition for class * @throws JiBXException if duplicate conversion definition */ public void addConversion(QName name, StringConversion conv) throws JiBXException { if (m_formatMap.put(name, conv) != null) { throw new JiBXException("Duplicate conversion defined with name " + name); } } /** * Set specific conversion definition for type. Sets the conversion based * on a type signature, checking for duplicate conversions defined within * a level. * * @param conv conversion definition for class * @throws JiBXException if duplicate conversion definition */ public void setConversion(StringConversion conv) throws JiBXException { if (m_convertMap.put(conv.getTypeName(), conv) != null) { throw new JiBXException("Duplicate conversion defined for type " + conv.getTypeName()); } } /** * Sets a named conversion definition. * * @param name format name for this conversion * @param conv conversion definition for class * @throws JiBXException if duplicate conversion definition */ public void setNamedConversion(QName name, StringConversion conv) throws JiBXException { addConversion(name, conv); } /** * Sets a conversion definition by both type and name. Both the type and * name are checked for duplicate conversions defined within a level. * * @param name format name for this conversion * @param conv conversion definition for class * @throws JiBXException if duplicate conversion definition */ public void setDefaultConversion(QName name, StringConversion conv) throws JiBXException { addConversion(name, conv); setConversion(conv); } /** * Check if one or more namespaces are defined in this context. * * @return true if namespaces are defined, false * if not */ public boolean hasNamespace() { return m_namespaces != null && m_namespaces.size() > 0; } /** * Get the namespaces defined in this context * * @return namespace definitions (may be null if none) */ public ArrayList getNamespaces() { return m_namespaces; } /** * Internal method to generate code to fill array with namespace indexes. * The code generated to this point must have the array reference on the * stack. * * @param nss namespaces to be handled * @param mb method builder for generated code */ private void genFillNamespaceIndexes(ArrayList nss, MethodBuilder mb) { if (nss != null) { for (int i = 0; i < nss.size(); i++) { mb.appendDUP(); mb.appendLoadConstant(i); mb.appendLoadConstant (((NamespaceDefinition)nss.get(i)).getIndex()); mb.appendIASTORE(); } } } /** * Internal method to generate code to fill array with namespace prefixes. * The code generated to this point must have the array reference on the * stack. * * @param nss namespaces to be handled * @param mb method builder for generated code */ private void genFillNamespacePrefixes(ArrayList nss, MethodBuilder mb) { if (nss != null) { for (int i = 0; i < nss.size(); i++) { mb.appendDUP(); mb.appendLoadConstant(i); String prefix = ((NamespaceDefinition)nss.get(i)).getPrefix(); if (prefix == null) { prefix = ""; } mb.appendLoadConstant(prefix); mb.appendAASTORE(); } } } /** * Generate code for loading namespace index and URI arrays. The code * creates the arrays and leaves the references on the stack. * * @param mb method builder for generated code */ public void genLoadNamespaces(MethodBuilder mb) { // first create the array of namespace indexes int count = m_namespaces == null ? 0 : m_namespaces.size(); mb.appendLoadConstant(count); mb.appendCreateArray("int"); genFillNamespaceIndexes(m_namespaces, mb); // next create the array of prefixes mb.appendLoadConstant(count); mb.appendCreateArray("java.lang.String"); genFillNamespacePrefixes(m_namespaces, mb); } /** * Generate code. Executes code generation for each top-level mapping * defined in this binding, which in turn propagates the code generation * all the way down. * * @param verbose flag for verbose output * @param force create marshaller/unmarshaller even for abstract non-base * mappings flag * @throws JiBXException if error in transformation */ public void generateCode(boolean verbose, boolean force) throws JiBXException { if (m_mappings != null) { for (int i = 0; i < m_mappings.size(); i++) { IMapping mapping = (IMapping)m_mappings.get(i); if (verbose) { System.out.println("Generating code for mapping " + mapping.getBoundType()); } ((IMapping)m_mappings.get(i)).generateCode(force); } } } /** * Links extension mappings to their base mappings. This must be done before * the more general linking step in order to determine which abstract * mappings are standalone and which are extended by other mappings * * @throws JiBXException if error in linking */ public void linkMappings() throws JiBXException { // check if any mappings are defined if (m_mappings != null) { for (int i = 0; i < m_mappings.size(); i++) { Object obj = m_mappings.get(i); if (obj instanceof MappingDefinition) { ((MappingDefinition)obj).linkMappings(); } } } } /** * Set linkages between binding components. This is called after all the * basic information has been set up. All linkage to higher level * components should be done by this method, in order to prevent problems * due to the order of definitions between components. For the definition * context this calls the same method on all mappings defined in this * context. * * @throws JiBXException if error in configuration */ public void setLinkages() throws JiBXException { // check if any mappings are defined if (m_mappings != null) { for (int i = 0; i < m_mappings.size(); i++) { Object obj = m_mappings.get(i); if (obj instanceof MappingDefinition) { ((MappingDefinition)obj).setLinkages(); } } } } // DEBUG public void print(int depth) { BindingDefinition.indent(depth); System.out.print("context"); if (m_namespaces != null) { System.out.print(" (ns#=" + m_namespaces.size() + ')'); } if (m_mappings != null) { System.out.print(" (mp#=" + m_mappings.size() + ')'); } if (m_namedStructureMap != null) { System.out.print(" (nm#=" + m_namedStructureMap.size() + ')'); } if (m_convertMap != null) { System.out.print(" (cv#=" + m_convertMap.size() + ')'); } if (m_formatMap != null) { System.out.print(" (fm#=" + m_formatMap.size() + ')'); } System.out.println(); if (m_namespaces != null) { for (int i = 0; i < m_namespaces.size(); i++) { NamespaceDefinition ndef = (NamespaceDefinition)m_namespaces.get(i); ndef.print(depth+1); } } if (m_mappings != null) { for (int i = 0; i < m_mappings.size(); i++) { Object obj = m_mappings.get(i); if (obj instanceof MappingDefinition) { MappingDefinition mdef = (MappingDefinition)obj; mdef.print(depth+1); } else if (obj instanceof MappingDirect) { MappingDirect mdir = (MappingDirect)obj; mdir.print(depth+1); } else { BindingDefinition.indent(depth+1); System.out.println("unexpected type " + obj.getClass().getName()); } } } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/def/DirectGeneric.java0000644000175000017500000002160110435324110025226 0ustar moellermoeller/* Copyright (c) 2003-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import org.jibx.binding.classes.*; import org.jibx.runtime.JiBXException; /** * Linkage to generic object with defined marshaller and/or unmarshaller. This * provides methods used to generate code for marshalling and unmarshalling * objects of types unknown at binding time, so long as they have mappings * defined. * * @author Dennis M. Sosnoski * @version 1.0 */ public class DirectGeneric implements IComponent { // // Constants and such related to code generation. private static final String ISEND_METHOD = "org.jibx.runtime.impl.UnmarshallingContext.isEnd"; private static final String ISEND_SIGNATURE = "()Z"; private static final String UNMARSHALELEMENT_METHOD = "org.jibx.runtime.impl.UnmarshallingContext.unmarshalElement"; private static final String UNMARSHALELEMENT_SIGNATURE = "()Ljava/lang/Object;"; private static final String MARSHALLABLE_INTERFACE = "org.jibx.runtime.IMarshallable"; private static final String MARSHALLABLE_METHOD = "org.jibx.runtime.IMarshallable.marshal"; private static final String MARSHALLABLE_SIGNATURE = "(Lorg/jibx/runtime/IMarshallingContext;)V"; // // Actual instance data. /** Type handled by this binding. */ private final String m_type; /** Optional property definition. */ private final PropertyDefinition m_property; /** * Constructor without implicit property. * * @param parent containing binding definition structure * @param type fully qualified class name of object type handled by this * binding (null if unspecified) */ public DirectGeneric(IContainer parent, String type) { m_type = (type == null) ? "java.lang.Object" : type; m_property = null; } /** * Constructor with defined property. * * @param parent containing binding definition structure * @param type fully qualified class name of object type handled by this * binding (null if unspecified) * @param prop associated property information */ public DirectGeneric(IContainer parent, String type, PropertyDefinition prop) { m_type = (type == null) ? "java.lang.Object" : type; m_property = prop; } /** * Generate presence test code for this mapping. The generated code just * checks that a start tag is next in the document, rather than an end tag. * * @param mb method builder */ public void genTestPresent(ContextMethodBuilder mb) { // append code to call unmarshalling context method to check for end tag // as next in document, then invert the result mb.loadContext(); mb.appendCallVirtual(ISEND_METHOD, ISEND_SIGNATURE); mb.appendLoadConstant(1); mb.appendIXOR(); } /** * Generate unmarshalling code for this mapping. The generated code just * calls the generic unmarshal element method, leaving the unmarshalled * object on the stack (after casting it, if necessary, to the appropriate * type). * TODO: Instead call unmarshalling method with class passed directly, for * better error reporting. * * @param mb method builder */ public void genUnmarshal(ContextMethodBuilder mb) throws JiBXException { // check for optional property BranchWrapper tosave = null; if (m_property != null && m_property.isOptional()) { // generate code to check presence for the case of an optional // item, with branch if so; if not present, set a null value // with branch to be targeted at property store. genTestPresent(mb); BranchWrapper ifpres = mb.appendIFNE(this); mb.appendACONST_NULL(); tosave = mb.appendUnconditionalBranch(this); mb.targetNext(ifpres); } // append code to call unmarshalling context method for generic element mb.loadContext(); mb.appendCallVirtual(UNMARSHALELEMENT_METHOD, UNMARSHALELEMENT_SIGNATURE); mb.appendCreateCast(m_type); mb.targetNext(tosave); if (m_property != null && !m_property.isImplicit() && !m_property.isThis()) { mb.loadObject(); mb.appendSWAP(); m_property.genStore(mb); } } /** * Generate marshalling code for this mapping. The generated code loads the * object reference and casts it to the generic marshal interface, then * calls the marshal method of that interface. * * @param mb method builder */ public void genMarshal(ContextMethodBuilder mb) throws JiBXException { // append code to cast object and call generic marshal method BranchWrapper toend = null; if (m_property != null && !m_property.isImplicit()) { mb.loadObject(); m_property.genLoad(mb); if (m_property.isOptional()) { // generate code to check nonnull for the case of an optional item, // with branch if so; if not present, just pop the copy with branch // to be targeted past end. mb.appendDUP(); BranchWrapper ifpres = mb.appendIFNONNULL(this); mb.appendPOP(); toend = mb.appendUnconditionalBranch(this); mb.targetNext(ifpres); } } mb.appendCreateCast(MARSHALLABLE_INTERFACE); mb.loadContext(); mb.appendCallInterface(MARSHALLABLE_METHOD, MARSHALLABLE_SIGNATURE); mb.targetNext(toend); } // // IComponent interface method definitions public boolean isOptional() { return false; } public boolean hasAttribute() { return false; } public void genAttrPresentTest(ContextMethodBuilder mb) { throw new IllegalStateException ("Internal error - no attributes defined"); } public void genAttributeUnmarshal(ContextMethodBuilder mb) { throw new IllegalStateException ("Internal error - no attributes defined"); } public void genAttributeMarshal(ContextMethodBuilder mb) { throw new IllegalStateException ("Internal error - no attributes defined"); } public boolean hasContent() { return true; } public void genContentPresentTest(ContextMethodBuilder mb) throws JiBXException { genTestPresent(mb); } public void genContentUnmarshal(ContextMethodBuilder mb) throws JiBXException { genUnmarshal(mb); } public void genContentMarshal(ContextMethodBuilder mb) throws JiBXException { genMarshal(mb); } public void genNewInstance(ContextMethodBuilder mb) { throw new IllegalStateException ("Internal error - no instance creation"); } public String getType() { return MARSHALLABLE_INTERFACE; } public boolean hasId() { return false; } public void genLoadId(ContextMethodBuilder mb) { throw new IllegalStateException("Internal error - no ID allowed"); } public NameDefinition getWrapperName() { return null; } public void setLinkages() {} // DEBUG public void print(int depth) { BindingDefinition.indent(depth); System.out.println("direct generic reference" ); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/def/DirectObject.java0000644000175000017500000005473710435324110025100 0ustar moellermoeller/* Copyright (c) 2003-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import org.apache.bcel.Constants; import org.apache.bcel.generic.Type; import org.jibx.binding.classes.*; import org.jibx.runtime.JiBXException; /** * Linkage to object with supplied marshaller and unmarshaller. This provides * methods used to generate code for calling the supplied classes. * * @author Dennis M. Sosnoski * @version 1.0 */ public class DirectObject implements IComponent { // // Constants and such related to code generation. private static final String GETUNMARSHALLER_METHOD = "org.jibx.runtime.IUnmarshallingContext.getUnmarshaller"; private static final String GETUNMARSHALLER_SIGNATURE = "(I)Lorg/jibx/runtime/IUnmarshaller;"; private static final String GETMARSHALLER_METHOD = "org.jibx.runtime.IMarshallingContext.getMarshaller"; private static final String GETMARSHALLER_SIGNATURE = "(ILjava/lang/String;)Lorg/jibx/runtime/IMarshaller;"; private static final String MARSHALLER_MARSHAL_METHOD = "org.jibx.runtime.IMarshaller.marshal"; private static final String MARSHALLER_MARSHAL_SIGNATURE = "(Ljava/lang/Object;Lorg/jibx/runtime/IMarshallingContext;)V"; private static final String UNMARSHALLER_TESTPRESENT_METHOD = "org.jibx.runtime.IUnmarshaller.isPresent"; private static final String UNMARSHALLER_TESTPRESENT_SIGNATURE = "(Lorg/jibx/runtime/IUnmarshallingContext;)Z"; private static final String UNMARSHALLER_UNMARSHAL_METHOD = "org.jibx.runtime.IUnmarshaller.unmarshal"; private static final String UNMARSHALLER_UNMARSHAL_SIGNATURE = "(Ljava/lang/Object;Lorg/jibx/runtime/IUnmarshallingContext;)" + "Ljava/lang/Object;"; private static final String ABSTRACTMARSHALLER_INTERFACE = "org.jibx.runtime.IAbstractMarshaller"; private static final String ABSTRACTMARSHAL_METHOD = "org.jibx.runtime.IAbstractMarshaller.baseMarshal"; private static final String ABSTRACTMARSHAL_SIGNATURE = MARSHALLER_MARSHAL_SIGNATURE; private static final String ALIASABLE_INTERFACETYPE = "Lorg/jibx/runtime/IAliasable;"; private static final String ANY_INIT_SIG = "()V"; private static final String ANY_INITCLASS_SIG = "(Ljava/lang/String;)V"; private static final String MARSHALUNMARSHAL_INIT_SIG = "(Ljava/lang/String;ILjava/lang/String;)V"; private static final String MARSHALONLY_INIT_SIG = "(ILjava/lang/String;)V"; private static final String UNMARSHALONLY_INIT_SIG = "(Ljava/lang/String;Ljava/lang/String;)V"; private static final String MARSHALUNMARSHAL_INITCLASS_SIG = "(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V"; private static final String MARSHALONLY_INITCLASS_SIG = "(ILjava/lang/String;Ljava/lang/String;)V"; private static final String UNMARSHALONLY_INITCLASS_SIG = "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"; // // Actual instance data. /** Containing binding definition structure. */ private final IContainer m_parent; /** Definition context for resolving names. */ private final DefinitionContext m_defContext; /** Abstract mapping flag. If this is set the marshalling code will call the special interface method used to verify the type of a passed object and marshal it with the proper handling. */ private final boolean m_isAbstract; /** Element name information (null if no bound element). */ private final NameDefinition m_name; /** Flag for marshaller/unmarshaller slot defined. This is done during code generation, rather than during linking, so that all mapped bindings can be defined with lower index numbers than for marshallers/unmarshallers used only in a specific context. */ private boolean m_isSlotSet; /** Marshaller/unmarshaller slot number. */ private int m_mumSlot; /** Class handled by this binding. */ private final ClassFile m_targetClass; /** Marshaller base class. */ private final ClassFile m_marshallerBase; /** Unmarshaller base class. */ private final ClassFile m_unmarshallerBase; /** Marshaller class (lazy create on first use if name supplied). */ private ClassFile m_marshaller; /** Unmarshaller class (lazy create on first use if name supplied). */ private ClassFile m_unmarshaller; /** * Constructor. * * @param parent containing binding definition structure * @param target class handled by this binding * @param abs abstract mapping flag * @param mcf marshaller class information (null if input only * binding) * @param ucf unmarshaller class information (null if output * only binding) * @param slot marshaller/unmarshaller slot number (-1 if to be * defined later) * @param name element name information (null if no element * name) * @throws JiBXException if configuration error */ public DirectObject(IContainer parent, DefinitionContext defc, ClassFile target, boolean abs, ClassFile mcf, ClassFile ucf, int slot, NameDefinition name) throws JiBXException { // initialize the basic information m_parent = parent; m_defContext = (defc == null) ? m_parent.getDefinitionContext() : defc; m_isAbstract = abs; m_targetClass = target; m_marshallerBase = mcf; m_unmarshallerBase = ucf; m_name = name; m_mumSlot = slot; m_isSlotSet = slot >= 0; // check for marshaller and/or unmarshaller configuration valid if (name == null) { // no name, make sure there's an appropriate constructor if (mcf != null) { if (mcf.getInitializerMethod(ANY_INIT_SIG) != null) { m_marshaller = mcf; } else if (mcf.getInitializerMethod (ANY_INITCLASS_SIG) == null) { throw new JiBXException("Marshaller class " + mcf.getName() + " requires name to be set"); } } if (ucf != null) { if (ucf.getInitializerMethod(ANY_INIT_SIG) != null) { m_unmarshaller = ucf; } else if (ucf.getInitializerMethod (ANY_INITCLASS_SIG) == null) { throw new JiBXException("Unmarshaller class " + ucf.getName() + " requires name to be set"); } } } if (name != null) { // name supplied, make sure both support it if (mcf != null && !mcf.isImplements(ALIASABLE_INTERFACETYPE)) { throw new JiBXException("Marshaller class " + mcf.getName() + " does not allow name to be set"); } if (ucf != null && !ucf.isImplements(ALIASABLE_INTERFACETYPE)) { throw new JiBXException("Unmarshaller class " + ucf.getName() + " does not allow name to be set"); } } } /** * Get marshaller/unmarshaller index. This is the index into the tables of * marshaller and unmarshaller instances maintained by the respective * contexts. On the first time call this gets the index number from the * binding definition, then the index number is reused on subsequent calls. * * @return slot number for binding * @throws JiBXException on configuration error */ private int getSlot() throws JiBXException { if (!m_isSlotSet) { // first set slot in case called recursively BindingDefinition bdef = m_parent.getBindingRoot(); m_mumSlot = bdef.getMarshallerUnmarshallerIndex (m_targetClass.getName()); m_isSlotSet = true; // now generate the classes (if needed) and set the names String mclas = null; String uclas = null; if (bdef.isOutput()) { if (m_marshaller == null) { createSubclass(true); } mclas = m_marshaller.getName(); } if (bdef.isInput()) { if (m_unmarshaller == null) { createSubclass(false); } uclas = m_unmarshaller.getName(); } bdef.setMarshallerUnmarshallerClasses(m_mumSlot, mclas, uclas); } return m_mumSlot; } /** * Load marshaller/unmarshaller index. This is assigned by the binding * definition and used thereafter. * * @param mb method builder */ private void genLoadSlot(ContextMethodBuilder mb) throws JiBXException { mb.appendLoadConstant(getSlot()); } /** * Create aliased subclass for marshaller or unmarshaller with element name * defined by binding. If the same aliasable superclass is defined for use * as both a marshaller and an unmarshaller a single subclass is generated * to handle both uses. * * @param out true if alias needed for marshalling, * false if for unmarshalling * @throws JiBXException on configuration error */ private void createSubclass(boolean out) throws JiBXException { // find initializer call to be used ClassItem init = null; boolean dual = false; boolean classed = true; boolean named = false; ClassFile base = out ? m_marshallerBase : m_unmarshallerBase; // check for name supplied if (m_name == null) { init = base.getInitializerMethod(ANY_INITCLASS_SIG); classed = init != null; } if (init == null) { named = true; if (m_unmarshallerBase == m_marshallerBase) { // single class, look first for signature with class name init = base.getInitializerMethod (MARSHALUNMARSHAL_INITCLASS_SIG); if (init == null) { classed = false; init = base.getInitializerMethod(MARSHALUNMARSHAL_INIT_SIG); } dual = true; } else { // using only one function, first check one way with class name String sig = out ? MARSHALONLY_INITCLASS_SIG : UNMARSHALONLY_INITCLASS_SIG; init = base.getInitializerMethod(sig); if (init == null) { // now check dual function with class name sig = MARSHALUNMARSHAL_INITCLASS_SIG; init = base.getInitializerMethod(sig); dual = true; if (init == null) { // now try alternatives without class name included classed = false; sig = out ? MARSHALONLY_INIT_SIG : UNMARSHALONLY_INIT_SIG; init = base.getInitializerMethod(sig); dual = false; if (init == null) { sig = MARSHALUNMARSHAL_INIT_SIG; init = base.getInitializerMethod(sig); dual = true; } } } } } // make sure the initializer is defined and public if (init == null || ((init.getAccessFlags() & Constants.ACC_PUBLIC) == 0)) { throw new JiBXException("No usable constructor for " + "marshaller or unmarshaller based on " + base.getName()); } // get package and target name from bound class String tname = base.getName(); int split = tname.lastIndexOf('.'); if (split >= 0) { tname = tname.substring(split+1); } // create the helper class BindingDefinition def = m_parent.getBindingRoot(); String pack = def.getDefaultPackage(); if (pack.length() > 0) { pack += '.'; } String name = pack + def.getPrefix() + tname + '_' + getSlot(); String[] intfs = def.isInput() ? (def.isOutput() ? MappingDefinition.BOTH_INTERFACES : MappingDefinition.UNMARSHALLER_INTERFACES) : MappingDefinition.MARSHALLER_INTERFACES; ClassFile cf = new ClassFile(name, def.getDefaultRoot(), base, Constants.ACC_PUBLIC, intfs); // add the public constructor method ExceptionMethodBuilder mb = new ExceptionMethodBuilder("", Type.VOID, new Type[0], cf, Constants.ACC_PUBLIC); // call the superclass constructor mb.appendLoadLocal(0); if (m_name == null) { if (named) { if (dual) { mb.appendACONST_NULL(); mb.appendICONST_0(); mb.appendACONST_NULL(); } else if (out) { mb.appendICONST_0(); mb.appendACONST_NULL(); } else { mb.appendACONST_NULL(); mb.appendACONST_NULL(); } } } else { if (dual) { m_name.genPushUri(mb); m_name.genPushIndexPair(mb); } else if (out) { m_name.genPushIndexPair(mb); } else { m_name.genPushUriPair(mb); } } if (classed) { mb.appendLoadConstant(m_targetClass.getName()); } mb.appendCallInit(base.getName(), init.getSignature()); // finish with return mb.appendReturn(); mb.codeComplete(false); // add method and class mb.addMethod(); cf = MungedClass.getUniqueSupportClass(cf); // save as appropriate type(s) if (dual) { m_marshaller = m_unmarshaller = cf; } else if (out) { m_marshaller = cf; } else { m_unmarshaller = cf; } } /** * Generate presence test code for this mapping. The generated code finds * the unmarshaller and calls the test method, leaving the result on the * stack. * * @param mb method builder * @throws JiBXException if error in generating code */ public void genTestPresent(ContextMethodBuilder mb) throws JiBXException { // start with call to unmarshalling context method to get the // unmarshaller instance mb.loadContext(); genLoadSlot(mb); mb.appendCallInterface(GETUNMARSHALLER_METHOD, GETUNMARSHALLER_SIGNATURE); // call the actual unmarshaller test method with context as argument mb.loadContext(); mb.appendCallInterface(UNMARSHALLER_TESTPRESENT_METHOD, UNMARSHALLER_TESTPRESENT_SIGNATURE); } /** * Generate unmarshalling code for this mapping. The generated code finds * and calls the unmarshaller with the object to be unmarshaller (which * needs to be loaded on the stack by the code prior to this call, but may * be null). The unmarshalled object (or null in * the case of a missing optional item) is left on the stack after this * call. The calling method generally needs to cast this object reference to * the appropriate type before using it. * * @param mb method builder * @throws JiBXException if error in generating code */ public void genUnmarshal(ContextMethodBuilder mb) throws JiBXException { // start with call to unmarshalling context method to get the // unmarshaller instance mb.loadContext(); genLoadSlot(mb); mb.appendCallInterface(GETUNMARSHALLER_METHOD, GETUNMARSHALLER_SIGNATURE); // call the actual unmarshaller with object and context as arguments mb.appendSWAP(); mb.loadContext(); mb.appendCallInterface(UNMARSHALLER_UNMARSHAL_METHOD, UNMARSHALLER_UNMARSHAL_SIGNATURE); } /** * Generate marshalling code for this mapping. The generated code finds * and calls the marshaller, passing the object to be marshalled (which * should have been loaded to the stack by the prior generated code).. * * @param mb method builder * @throws JiBXException if error in configuration */ public void genMarshal(ContextMethodBuilder mb) throws JiBXException { // start with call to marshalling context method to get the marshaller // instance mb.loadContext(); genLoadSlot(mb); mb.appendLoadConstant(m_targetClass.getName()); mb.appendCallInterface(GETMARSHALLER_METHOD, GETMARSHALLER_SIGNATURE); // check for an abstract mapping being used if (m_isAbstract) { // make sure returned marshaller implements required interface mb.appendCreateCast(ABSTRACTMARSHALLER_INTERFACE); // swap to reorder object and marshaller mb.appendSWAP(); // call indirect marshaller for abstract base class with the object // itself and context as arguments mb.loadContext(); mb.appendCallInterface(ABSTRACTMARSHAL_METHOD, ABSTRACTMARSHAL_SIGNATURE); } else { // swap to reorder object and marshaller mb.appendSWAP(); // call the direct marshaller with the object itself and context as // arguments mb.loadContext(); mb.appendCallInterface(MARSHALLER_MARSHAL_METHOD, MARSHALLER_MARSHAL_SIGNATURE); } } /** * Get target class for mapping. * * @return target class information */ public ClassFile getTargetClass() { return m_targetClass; } /** * Get marshaller class used for mapping. If a name has been supplied the * actual marshaller class is created by extending the base class the first * time this method is called. * * @return marshaller class information * @throws JiBXException if error in transformation */ public ClassFile getMarshaller() throws JiBXException { if (m_marshaller == null && m_marshallerBase != null) { createSubclass(true); } return m_marshaller; } /** * Get unmarshaller class used for mapping. If a name has been supplied the * actual unmarshaller class is created by extending the base class the * first time this method is called. * * @return unmarshaller class information * @throws JiBXException if error in transformation */ public ClassFile getUnmarshaller() throws JiBXException { if (m_unmarshaller == null && m_unmarshallerBase != null) { createSubclass(false); } return m_unmarshaller; } // // IComponent interface method definitions public boolean isOptional() { return false; } public boolean hasAttribute() { return false; } public void genAttrPresentTest(ContextMethodBuilder mb) { throw new IllegalStateException ("Internal error - no attributes defined"); } public void genAttributeUnmarshal(ContextMethodBuilder mb) { throw new IllegalStateException ("Internal error - no attributes defined"); } public void genAttributeMarshal(ContextMethodBuilder mb) { throw new IllegalStateException ("Internal error - no attributes defined"); } public boolean hasContent() { return true; } public void genContentPresentTest(ContextMethodBuilder mb) throws JiBXException { genTestPresent(mb); } public void genContentUnmarshal(ContextMethodBuilder mb) throws JiBXException { genUnmarshal(mb); } public void genContentMarshal(ContextMethodBuilder mb) throws JiBXException { genMarshal(mb); } public void genNewInstance(ContextMethodBuilder mb) { throw new IllegalStateException ("Internal error - no instance creation"); } public String getType() { return m_targetClass.getFile().getName(); } public boolean hasId() { return false; } public void genLoadId(ContextMethodBuilder mb) { throw new IllegalStateException("Internal error - no ID allowed"); } public NameDefinition getWrapperName() { return m_name; } public void setLinkages() throws JiBXException { if (m_name != null) { m_name.fixNamespace(m_defContext); } } // DEBUG public void print(int depth) { BindingDefinition.indent(depth); System.out.println("direct marshaller/unmarshaller reference" ); } } libjibx-java-1.1.6a/build/src/org/jibx/binding/def/DirectProperty.java0000644000175000017500000001660710435324110025510 0ustar moellermoeller/* Copyright (c) 2003-2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import org.jibx.binding.classes.*; import org.jibx.runtime.JiBXException; /** * Property reference with marshaller and unmarshaller. This handles loading * and storing the property value, calling the supplied marshaller and * unmarshaller for all else. * * @author Dennis M. Sosnoski * @version 1.0 */ public class DirectProperty implements IComponent { /** Property definition. */ private final PropertyDefinition m_property; /** Property value direct binding. */ private final DirectObject m_direct; /** * Constructor. * * @param prop property definition * @param direct object direct binding information */ public DirectProperty(PropertyDefinition prop, DirectObject direct) { m_property = prop; m_direct = direct; } // // IComponent interface method definitions public boolean isOptional() { return m_property.isOptional(); } public boolean hasAttribute() { return false; } public void genAttrPresentTest(ContextMethodBuilder mb) throws JiBXException { throw new IllegalStateException ("Internal error - no attributes allowed"); } public void genAttributeUnmarshal(ContextMethodBuilder mb) throws JiBXException { throw new IllegalStateException ("Internal error - no attributes allowed"); } public void genAttributeMarshal(ContextMethodBuilder mb) throws JiBXException { throw new IllegalStateException ("Internal error - no attributes allowed"); } public boolean hasContent() { return true; } public void genContentPresentTest(ContextMethodBuilder mb) throws JiBXException { m_direct.genContentPresentTest(mb); } public void genContentUnmarshal(ContextMethodBuilder mb) throws JiBXException { // check type of property binding if (m_property.isImplicit()) { // load null to force create of new object for item in collection mb.appendACONST_NULL(); m_direct.genContentUnmarshal(mb); } else if (m_property.isThis()) { // load existing object to unmarshal for "this" reference mb.loadObject(); m_direct.genContentUnmarshal(mb); } else { // start by generating code to load owning object so can finish by // storing to property mb.loadObject(); BranchWrapper ifpres = null; BranchWrapper tosave = null; if (m_property.isOptional()) { // generate code to check presence for the case of an optional // item, with branch if so; if not present, set a null value // with branch to be targeted at property store. m_direct.genContentPresentTest(mb); ifpres = mb.appendIFNE(this); mb.appendACONST_NULL(); tosave = mb.appendUnconditionalBranch(this); } // generate unmarshalling code for not optional, or optional and // present; get existing instance or create a new one and handle // attribute unmarshalling mb.targetNext(ifpres); mb.loadObject(); m_property.genLoad(mb); m_direct.genContentUnmarshal(mb); mb.appendCreateCast(m_property.getSetValueType()); mb.targetNext(tosave); m_property.genStore(mb); } } public void genContentMarshal(ContextMethodBuilder mb) throws JiBXException { // check type of property binding if (m_property.isImplicit()) { // marshal object already loaded on stack m_direct.genContentMarshal(mb); } else if (m_property.isThis()) { // load object to marshal for "this" reference mb.loadObject(); m_direct.genContentMarshal(mb); } else { // start by generating code to load the actual object reference mb.loadObject(); m_property.genLoad(mb); BranchWrapper missing = null; if (m_property.isOptional()) { // generate code to check null for the case of an optional item, // with branch if so; if present, just reload object and fall // through. missing = mb.appendIFNULL(this); mb.loadObject(); m_property.genLoad(mb); } // generate code for actual marshalling if not optional, or optional // and nonnull; then finish by setting target for optional with // null value case m_direct.genContentMarshal(mb); mb.targetNext(missing); } } public void genNewInstance(ContextMethodBuilder mb) { throw new IllegalStateException ("Internal error - no instance creation"); } public String getType() { return m_property.getTypeName(); } public boolean hasId() { return false; } public void genLoadId(ContextMethodBuilder mb) throws JiBXException { throw new IllegalStateException("Internal error - no id defined"); } public NameDefinition getWrapperName() { return m_direct.getWrapperName(); } public void setLinkages() throws JiBXException { m_direct.setLinkages(); } // DEBUG public void print(int depth) { BindingDefinition.indent(depth); if (m_property == null) { System.out.println("direct implicit property"); } else { System.out.println("direct property using " + m_property.toString()); } m_direct.print(depth+1); } } libjibx-java-1.1.6a/build/src/org/jibx/binding/def/ElementWrapper.java0000644000175000017500000005237311013374744025476 0ustar moellermoeller/* Copyright (c) 2003-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import org.jibx.binding.classes.*; import org.jibx.runtime.JiBXException; /** * Component decorator for element definition. This associates an element name * with a component. * * @author Dennis M. Sosnoski */ public class ElementWrapper implements IComponent { // // Constants and such related to code generation. private static final String UNMARSHAL_PARSESTARTATTRIBUTES = "org.jibx.runtime.impl.UnmarshallingContext.parseToStartTag"; private static final String UNMARSHAL_PARSESTARTNOATTRIBUTES = "org.jibx.runtime.impl.UnmarshallingContext.parsePastStartTag"; private static final String UNMARSHAL_PARSEPASTSTART = "org.jibx.runtime.impl.UnmarshallingContext.parsePastStartTag"; private static final String UNMARSHAL_PARSESTARTSIGNATURE = "(Ljava/lang/String;Ljava/lang/String;)V"; private static final String UNMARSHAL_PARSEENDMETHOD = "org.jibx.runtime.impl.UnmarshallingContext.parsePastCurrentEndTag"; private static final String UNMARSHAL_PARSEENDSIGNATURE = "(Ljava/lang/String;Ljava/lang/String;)V"; private static final String UNMARSHAL_ISATMETHOD = "org.jibx.runtime.IUnmarshallingContext.isAt"; private static final String UNMARSHAL_ISATSIGNATURE = "(Ljava/lang/String;Ljava/lang/String;)Z"; private static final String UNMARSHAL_SKIPELEMENTMETHOD = "org.jibx.runtime.impl.UnmarshallingContext.parsePastElement"; private static final String UNMARSHAL_SKIPELEMENTSIGNATURE = "(Ljava/lang/String;Ljava/lang/String;)V"; private static final String MARSHAL_WRITESTARTNAMESPACES = "org.jibx.runtime.impl.MarshallingContext.startTagNamespaces"; private static final String MARSHAL_STARTNAMESPACESSIGNATURE = "(ILjava/lang/String;[I[Ljava/lang/String;)" + "Lorg/jibx/runtime/impl/MarshallingContext;"; private static final String MARSHAL_WRITESTARTATTRIBUTES = "org.jibx.runtime.impl.MarshallingContext.startTagAttributes"; private static final String MARSHAL_WRITESTARTNOATTRIBUTES = "org.jibx.runtime.impl.MarshallingContext.startTag"; private static final String MARSHAL_WRITESTARTSIGNATURE = "(ILjava/lang/String;)Lorg/jibx/runtime/impl/MarshallingContext;"; private static final String MARSHAL_CLOSESTARTCONTENT = "org.jibx.runtime.impl.MarshallingContext.closeStartContent"; private static final String MARSHAL_CLOSESTARTEMPTY = "org.jibx.runtime.impl.MarshallingContext.closeStartEmpty"; private static final String MARSHAL_CLOSESTARTSIGNATURE = "()Lorg/jibx/runtime/impl/MarshallingContext;"; private static final String MARSHAL_WRITEENDMETHOD = "org.jibx.runtime.impl.MarshallingContext.endTag"; private static final String MARSHAL_WRITEENDSIGNATURE = "(ILjava/lang/String;)Lorg/jibx/runtime/impl/MarshallingContext;"; private static final String UNMARSHAL_PARSE_TO_START_NAME = "org.jibx.runtime.impl.UnmarshallingContext.parseToStartTag"; private static final String UNMARSHAL_PARSE_TO_START_SIGNATURE = "(Ljava/lang/String;Ljava/lang/String;)V"; protected static final String UNMARSHAL_ATTRIBUTE_BOOLEAN_NAME = "org.jibx.runtime.impl.UnmarshallingContext.attributeBoolean"; protected static final String UNMARSHAL_ATTRIBUTE_BOOLEAN_SIGNATURE = "(Ljava/lang/String;Ljava/lang/String;Z)Z"; private static final String UNMARSHAL_SKIP_NAME = "org.jibx.runtime.impl.UnmarshallingContext.skipElement"; private static final String UNMARSHAL_SKIP_SIGNATURE = "()V"; protected static final String MARSHAL_STARTTAG_ATTRIBUTES = "org.jibx.runtime.impl.MarshallingContext.startTagAttributes"; protected static final String MARSHAL_STARTTAG_SIGNATURE = "(ILjava/lang/String;)Lorg/jibx/runtime/impl/MarshallingContext;"; protected static final String MARSHAL_CLOSESTART_EMPTY = "org.jibx.runtime.impl.MarshallingContext.closeStartEmpty"; protected static final String MARSHAL_CLOSESTART_EMPTY_SIGNATURE = "()Lorg/jibx/runtime/impl/MarshallingContext;"; protected static final String MARSHAL_ATTRIBUTE = "org.jibx.runtime.impl.MarshallingContext.attribute"; protected static final String MARSHAL_SIGNATURE = "(ILjava/lang/String;Ljava/lang/String;)" + "Lorg/jibx/runtime/impl/MarshallingContext;"; private static final String MARSHALLING_CONTEXT = "org.jibx.runtime.impl.MarshallingContext"; private static final String UNMARSHALLING_CONTEXT = "org.jibx.runtime.impl.UnmarshallingContext"; // // Actual instance data. /** Property value binding component. */ private final IComponent m_component; /** Binding definition context. */ private final DefinitionContext m_defContext; /** Element name information. */ private final NameDefinition m_name; /** Flag for nillable element. */ private final boolean m_isNillable; /** Flag for value from collection (TODO: fix this in update). */ private boolean m_directAccess; /** Flag for optional ignored element (TODO: fix this in update). */ private boolean m_optionalIgnored; /** Flag for optional normal element (TODO: fix this in update). */ private boolean m_optionalNormal; /** Flag for optional structure object (TODO: fix this in update). */ private boolean m_structureObject; /** * Constructor. * * @param defc definition context for this component * @param name element name definition * @param wrap wrapped binding component (may be null, in the * case of a throwaway component) * @param nillable flag for nillable element */ public ElementWrapper(DefinitionContext defc, NameDefinition name, IComponent wrap, boolean nillable) { m_defContext = defc; m_name = name; m_component = wrap; m_isNillable = nillable; } /** * Set the direct access flag. This controls a variation in the code * generation to handle values loaded from a collection. * * @param direct true if direct access from collection, * false if not */ public void setDirect(boolean direct) { m_directAccess = direct; } /** * Set flag for an optional ignored element. * * @param opt true if optional ignored element, * false if not */ public void setOptionalIgnored(boolean opt) { m_optionalIgnored = opt; } /** * Set flag for an optional structure object. * * @param opt true if optional structure object, * false if not */ public void setStructureObject(boolean opt) { m_structureObject = opt; } /** * Set flag for an optional normal element. * * @param opt true if optional normal element, * false if not */ public void setOptionalNormal(boolean opt) { m_optionalNormal = opt; } // // IComponent interface method definitions public boolean isOptional() { return m_optionalNormal || m_optionalIgnored; } public boolean hasAttribute() { return false; } public void genAttrPresentTest(ContextMethodBuilder mb) { throw new IllegalStateException ("Internal error - no attributes from child element"); } public void genAttributeUnmarshal(ContextMethodBuilder mb) { throw new IllegalStateException ("Internal error - no attributes from child element"); } public void genAttributeMarshal(ContextMethodBuilder mb) { throw new IllegalStateException ("Internal error - no attributes from child element"); } public boolean hasContent() { return true; } public void genContentPresentTest(ContextMethodBuilder mb) throws JiBXException { // create call to unmarshalling context method with namespace and // name, then return result directly mb.loadContext(); m_name.genPushUriPair(mb); mb.appendCallInterface(UNMARSHAL_ISATMETHOD, UNMARSHAL_ISATSIGNATURE); } public void genContentUnmarshal(ContextMethodBuilder mb) throws JiBXException { // check for optional empty wrapper present BranchWrapper ifmiss = null; if (isOptional()) { genContentPresentTest(mb); ifmiss = mb.appendIFEQ(this); } BranchWrapper ifnil = null; if (m_isNillable) { // make sure we're at the element mb.loadContext(UNMARSHALLING_CONTEXT); m_name.genPushUriPair(mb); mb.appendCallVirtual(UNMARSHAL_PARSE_TO_START_NAME, UNMARSHAL_PARSE_TO_START_SIGNATURE); // check for xsi:nil="true" mb.loadContext(UNMARSHALLING_CONTEXT); mb.appendLoadConstant("http://www.w3.org/2001/XMLSchema-instance"); mb.appendLoadConstant("nil"); mb.appendICONST_0(); mb.appendCallVirtual(UNMARSHAL_ATTRIBUTE_BOOLEAN_NAME, UNMARSHAL_ATTRIBUTE_BOOLEAN_SIGNATURE); BranchWrapper notnil = mb.appendIFEQ(this); // skip past the element before jumping to end mb.loadContext(UNMARSHALLING_CONTEXT); mb.appendCallVirtual(UNMARSHAL_SKIP_NAME, UNMARSHAL_SKIP_SIGNATURE); ifnil = mb.appendUnconditionalBranch(this); mb.targetNext(notnil); } // set up flags for controlling code generation paths boolean attr = m_component != null && m_component.hasAttribute(); boolean cont = m_component != null && m_component.hasContent(); // load the unmarshalling context followed by the namespace URI and // element name. mb.loadContext(UNMARSHALLING_CONTEXT); m_name.genPushUriPair(mb); // check type of unmarshalling behavior required if (attr) { // unmarshal start tag with attribute(s) mb.appendCallVirtual(UNMARSHAL_PARSESTARTATTRIBUTES, UNMARSHAL_PARSESTARTSIGNATURE); m_component.genAttributeUnmarshal(mb); // generate code to parse past the start tag with another call // to unmarshalling context mb.loadContext(UNMARSHALLING_CONTEXT); m_name.genPushUriPair(mb); mb.appendCallVirtual(UNMARSHAL_PARSEPASTSTART, UNMARSHAL_PARSESTARTSIGNATURE); } else if (cont) { // unmarshal start tag without attributes mb.appendCallVirtual(UNMARSHAL_PARSESTARTNOATTRIBUTES, UNMARSHAL_PARSESTARTSIGNATURE); } else { // unmarshal element discarding all content mb.appendCallVirtual(UNMARSHAL_SKIPELEMENTMETHOD, UNMARSHAL_SKIPELEMENTSIGNATURE); } // unmarshal child content if (cont) { m_component.genContentUnmarshal(mb); } // next add code to push context, namespace and name, and call // method to parse past end tag if (attr || cont) { mb.loadContext(UNMARSHALLING_CONTEXT); m_name.genPushUriPair(mb); mb.appendCallVirtual(UNMARSHAL_PARSEENDMETHOD, UNMARSHAL_PARSEENDSIGNATURE); } // check if need code to handle missing or nil element if (ifmiss != null || ifnil != null) { // handle branch conditions, jumping around code to set null BranchWrapper toend = mb.appendUnconditionalBranch(this); mb.targetNext(ifmiss); mb.targetNext(ifnil); // generate code to store null to property if (m_component instanceof ComponentProperty) { PropertyDefinition prop = ((ComponentProperty)m_component).getProperty(); if (!prop.isImplicit()) { mb.loadObject(); mb.appendACONST_NULL(); prop.genStore(mb); } else { mb.appendACONST_NULL(); } } else { mb.appendPOP(); mb.appendACONST_NULL(); } mb.targetNext(toend); } } public void genContentMarshal(ContextMethodBuilder mb) throws JiBXException { // nothing to be done if optional ignored element if (!m_optionalIgnored) { boolean noprop = m_directAccess || (!(m_component instanceof ComponentProperty) && !(m_component instanceof NestedStructure)); BranchWrapper ifmiss = null; if (m_isNillable) { // check for null object BranchWrapper ifhit; if (noprop) { mb.appendDUP(); ifhit = mb.appendIFNONNULL(this); mb.appendPOP(); } else { PropertyDefinition prop = ((ComponentProperty)m_component).getProperty(); mb.loadObject(); prop.genLoad(mb); ifhit = mb.appendIFNONNULL(this); } // generate empty element with xsi:nil="true" mb.loadContext(MARSHALLING_CONTEXT); m_name.genPushIndexPair(mb); mb.appendCallVirtual(MARSHAL_STARTTAG_ATTRIBUTES, MARSHAL_STARTTAG_SIGNATURE); mb.appendLoadConstant(2); mb.appendLoadConstant("nil"); mb.appendLoadConstant("true"); mb.appendCallVirtual(MARSHAL_ATTRIBUTE, MARSHAL_SIGNATURE); mb.appendCallVirtual(MARSHAL_CLOSESTART_EMPTY, MARSHAL_CLOSESTART_EMPTY_SIGNATURE); mb.appendPOP(); ifmiss = mb.appendUnconditionalBranch(this); mb.targetNext(ifhit); } // set up flags for controlling code generation paths boolean attr = m_component != null && m_component.hasAttribute(); boolean cont = m_component != null && m_component.hasContent(); boolean needns = !m_structureObject && m_defContext.hasNamespace(); // duplicate object reference on stack if both attribute(s) and // content if (attr && cont && noprop) { mb.appendDUP(); } // load the context followed by namespace index and element name mb.loadContext(MARSHALLING_CONTEXT); m_name.genPushIndexPair(mb); // check type of marshalling behavior required if (attr || needns) { // check for namespace definition required if (needns) { // marshal start tag with namespace(s) m_defContext.genLoadNamespaces(mb); mb.appendCallVirtual(MARSHAL_WRITESTARTNAMESPACES, MARSHAL_STARTNAMESPACESSIGNATURE); } else { // marshal start tag with attribute(s) mb.appendCallVirtual(MARSHAL_WRITESTARTATTRIBUTES, MARSHAL_WRITESTARTSIGNATURE); } // handle attributes other than namespace declarations if (attr) { if (noprop) { // discard marshalling context from stack before call mb.appendPOP(); m_component.genAttributeMarshal(mb); mb.loadContext(MARSHALLING_CONTEXT); } else { m_component.genAttributeMarshal(mb); } } // generate code to close the start tag with another call // to marshalling context if (cont) { mb.appendCallVirtual(MARSHAL_CLOSESTARTCONTENT, MARSHAL_CLOSESTARTSIGNATURE); } else { mb.appendCallVirtual(MARSHAL_CLOSESTARTEMPTY, MARSHAL_CLOSESTARTSIGNATURE); } } else if (cont) { // marshal start tag without attributes mb.appendCallVirtual(MARSHAL_WRITESTARTNOATTRIBUTES, MARSHAL_WRITESTARTSIGNATURE); } else { // marshal empty tag mb.appendCallVirtual(MARSHAL_WRITESTARTATTRIBUTES, MARSHAL_WRITESTARTSIGNATURE); mb.appendCallVirtual(MARSHAL_CLOSESTARTEMPTY, MARSHAL_CLOSESTARTSIGNATURE); } // handle child content if present if (cont) { if (noprop) { // discard marshalling context from stack before call mb.appendPOP(); m_component.genContentMarshal(mb); mb.loadContext(MARSHALLING_CONTEXT); } else { m_component.genContentMarshal(mb); } // write the element close tag m_name.genPushIndexPair(mb); mb.appendCallVirtual(MARSHAL_WRITEENDMETHOD, MARSHAL_WRITEENDSIGNATURE); } mb.appendPOP(); mb.targetNext(ifmiss); } } public void genNewInstance(ContextMethodBuilder mb) throws JiBXException { if (m_component == null) { throw new IllegalStateException ("Internal error - no wrapped component"); } else { m_component.genNewInstance(mb); } } public String getType() { if (m_component == null) { throw new IllegalStateException ("Internal error - no wrapped component"); } else { return m_component.getType(); } } public boolean hasId() { if (m_component == null) { return false; } else { return m_component.hasId(); } } public void genLoadId(ContextMethodBuilder mb) throws JiBXException { if (m_component == null) { throw new IllegalStateException ("Internal error - no wrapped component"); } else { m_component.genLoadId(mb); } } public NameDefinition getWrapperName() { return m_name; } public void setLinkages() throws JiBXException { m_name.fixNamespace(m_defContext); if (m_component != null) { m_component.setLinkages(); } } // DEBUG public void print(int depth) { BindingDefinition.indent(depth); System.out.println(toString()); if (m_component != null) { m_component.print(depth+1); } } public String toString() { StringBuffer buff = new StringBuffer("element wrapper"); if (m_name != null) { buff.append(' '); buff.append(m_name.toString()); } if (m_directAccess) { buff.append(" direct"); } if (m_optionalIgnored) { buff.append(" optional ignored"); } if (m_optionalNormal) { buff.append(" optional"); } if (m_structureObject) { buff.append(" structure object"); } return buff.toString(); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/def/IComponent.java0000644000175000017500000002021310435324110024570 0ustar moellermoeller/* Copyright (c) 2003-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import org.jibx.binding.classes.ContextMethodBuilder; import org.jibx.runtime.JiBXException; /** * Child component (attribute or content) interface definition. This interface * provides the basic hooks for generating code from the binding definition. * * @author Dennis M. Sosnoski * @version 1.0 */ public interface IComponent { /** * Check if component is an optional item. * * @return true if optional, false if required */ public boolean isOptional(); /** * Check if component defines one or more attribute values of the * containing element. * * @return true if one or more attribute values defined for * containing element, false if not */ public boolean hasAttribute(); /** * Generate code to test for attribute present. This generates code that * tests if a child is present as determined by attributes of the containing * start tag. It leaves the result of the test (zero if missing, nonzero if * present) on the stack. This call is only valid if this component has one * or more attributes for the containing element. * * @param mb method builder * @throws JiBXException if configuration error */ public void genAttrPresentTest(ContextMethodBuilder mb) throws JiBXException; /** * Generate attribute unmarshalling code. This is called within the code * generation for the unmarshaller of the class associated with the * containing element. It needs to generate the necessary code for handling * the unmarshalling operation, leaving the unmarshalled object * reference on the stack. * * @param mb method builder * @throws JiBXException if error in configuration */ public void genAttributeUnmarshal(ContextMethodBuilder mb) throws JiBXException; /** * Generate attribute marshalling code. This is called within the code * generation for the marshaller of the class associated with the * containing element. It needs to generate the necessary code for handling * the marshalling operation, consuming the marshalled object * reference from the stack. * * @param mb method builder * @throws JiBXException if error in configuration */ public void genAttributeMarshal(ContextMethodBuilder mb) throws JiBXException; /** * Check if component defines one or more elements or text values as * children of the containing element. This method is only valid after the * call to {@link #setLinkages()}. * * @return true if one or more content values defined * for containing element, false if not */ public boolean hasContent(); /** * Generate code to test for content present. This generates code that * tests if a required element is present, leaving the result of the test * (zero if missing, nonzero if present) on the stack. This call is only * valid if this component has one or more content components for the * containing element. * * @param mb method builder * @throws JiBXException if configuration error */ public void genContentPresentTest(ContextMethodBuilder mb) throws JiBXException; /** * Generate element or text unmarshalling code. This is called within the * code generation for the unmarshaller of the class associated with the * containing element. It needs to generate the necessary code for * handling the unmarshalling operation, leaving the unmarshalled object * reference on the stack. * * @param mb method builder * @throws JiBXException if error in configuration */ public void genContentUnmarshal(ContextMethodBuilder mb) throws JiBXException; /** * Generate element or text marshalling code. This is called within the * code generation for the marshaller of the class associated with the * containing element. It needs to generate the necessary code for * handling the marshalling operation, consuming the marshalled object * reference from the stack. * * @param mb method builder * @throws JiBXException if error in configuration */ public void genContentMarshal(ContextMethodBuilder mb) throws JiBXException; /** * Generate code to create new instance of object. This is called within the * code generation for the unmarshaller of the class associated with the * containing element. It needs to generate the necessary code for creating * an instance of the object to be unmarshalled, leaving the object * reference on the stack. * * @param mb method builder * @throws JiBXException if error in configuration */ public void genNewInstance(ContextMethodBuilder mb) throws JiBXException; /** * Get type expected by component. * * @return fully qualified class name of expected type */ public String getType(); /** * Check if component defines an ID value for instances of context object. * * @return true if ID value defined for instances, * false if not */ public boolean hasId(); /** * Generate code to load ID value of instance to stack. The generated code * should assume that the top of the stack is the reference for the * containing object. It must consume this and leave the actual ID value * on the stack (as a String). * * @param mb method builder * @throws JiBXException if configuration error */ public void genLoadId(ContextMethodBuilder mb) throws JiBXException; /** * Get element wrapper name. If the component defines an element as the * container for content, this returns the name information for that * element. * * @return component element name, null if no wrapper element */ public NameDefinition getWrapperName(); /** * Establish and validate linkages between binding components. This is * called after the basic binding structures have been set up. All linkages * between components must be resolved by this method, in order to prevent * problems due to the order of definitions between components. This implies * that each component must in turn call the same method for each child * component. None of the other method calls defined by this interface are * valid until after this call. * * @throws JiBXException if error in configuration */ public void setLinkages() throws JiBXException; // DEBUG public void print(int depth); } libjibx-java-1.1.6a/build/src/org/jibx/binding/def/IContainer.java0000644000175000017500000000503010071714302024552 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; /** * Containing binding definitions structure interface. This interface is * implemented by components corresponding to elements in the binding definition * that can contain other elements. It supplies a context for resolving * reference to mappings, formats, or labeled structures, and for inherited * settings. * * @author Dennis M. Sosnoski * @version 1.0 */ public interface IContainer { /** * Check if content children are ordered. * * @return true if ordered, false if not */ public boolean isContentOrdered(); /** * Get default style for value expression. * * @return default style type for values */ public int getStyleDefault(); /** * Get definition context for binding element. * * @return binding definition context */ public DefinitionContext getDefinitionContext(); /** * Get root of binding definition. * * @return binding definition root */ public BindingDefinition getBindingRoot(); } libjibx-java-1.1.6a/build/src/org/jibx/binding/def/IContextObj.java0000644000175000017500000000445010071714302024714 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import org.jibx.binding.classes.*; /** * Containing object context interface. This interface is implemented by binding * definition components that link to objects and can contain nested components. * * @author Dennis M. Sosnoski * @version 1.0 */ public interface IContextObj { /** * Get class linked to binding element. * * @return information for class linked by binding */ public BoundClass getBoundClass(); /** * Set ID property. Tells the parent binding element that a particular * child defines an ID property for the class linked to the parent. * * @param child child defining the ID property * @return true if successful, false if ID * already defined */ public boolean setIdChild(IComponent child); }libjibx-java-1.1.6a/build/src/org/jibx/binding/def/IMapping.java0000644000175000017500000001272210541604220024230 0ustar moellermoeller/* Copyright (c) 2003-2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import java.util.ArrayList; import org.jibx.binding.classes.ClassFile; import org.jibx.runtime.JiBXException; /** * Interface for mapping definitions. This defines the additional access methods * used with mappings (beyond those used with ordinary components). * * @author Dennis M. Sosnoski * @version 1.0 */ public interface IMapping extends IComponent { /** * Get class name handled by mapping. * * @return name of class bound by mapping */ public String getBoundType(); /** * Get class name of type to be assumed for references to this mapping. * * @return reference type class name name */ public String getReferenceType(); /** * Get binding component implementing mapping. This call is only valid for * mappings with child components, not for mappings defined using * marshallers or unmarshallers. * * @return binding component implementing this mapping */ public IComponent getImplComponent(); /** * Get marshaller class used for mapping. * * @return marshaller class information * @throws JiBXException if error in configuration */ public ClassFile getMarshaller() throws JiBXException; /** * Get unmarshaller class used for mapping. * * @return unmarshaller class information * @throws JiBXException if error in configuration */ public ClassFile getUnmarshaller() throws JiBXException; /** * Get mapped element name. * * @return mapped element name information (may be null if no * element name defined for mapping) */ public NameDefinition getName(); /** * Get type name. * * @return qualified type name, in text form (null if unnamed) */ public String getTypeName(); /** * Get mapped class index number. * * @return mapped class index number in context */ public int getIndex(); /** * Add namespace. This adds a namespace definition to those active for the * mapping. * * @param ns namespace definition to be added * @throws JiBXException if error in defining namespace */ public void addNamespace(NamespaceDefinition ns) throws JiBXException; /** * Check if mapping is abstract. * * @return true if an abstract mapping, false if * not */ public boolean isAbstract(); /** * Check if mapping has extensions. * * @return true if one or more mappings extend this mapping, * false if not */ public boolean isBase(); /** * Add extension to abstract mapping. This call is only valid for abstract * mappings. * * @param mdef extension mapping definition * @throws JiBXException if configuration error */ public void addExtension(MappingDefinition mdef) throws JiBXException; /** * Build reference to mapping. Constructs and returns the component for * handling the mapping. * * @param parent containing binding definition structure * @param objc current object context * @param type mapped value type * @param prop property definition (may be null) * @return constructed mapping reference component * @throws JiBXException if configuration error */ public IComponent buildRef(IContainer parent, IContextObj objc, String type, PropertyDefinition prop) throws JiBXException; /** * Get namespaces defined for mapping. * * @return namespace definitions (may be null if none) */ public ArrayList getNamespaces(); /** * Generate required code for mapping. * * @param force add marshaller/unmarshaller classes for abstract non-base * mappings flag (not passed on to children) * @throws JiBXException if error in transformation */ public void generateCode(boolean force) throws JiBXException; }libjibx-java-1.1.6a/build/src/org/jibx/binding/def/LinkableBase.java0000644000175000017500000000711710767272750025065 0ustar moellermoeller/* Copyright (c) 2003-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import org.jibx.runtime.JiBXException; /** * Base class for components that can be linked from multiple locations within * the binding definition structure. The implemented basic behavior is a simple * pass-through component, with the addition of recursion checking during the * linking phase. * * @author Dennis M. Sosnoski */ public abstract class LinkableBase extends PassThroughComponent { /** Flag for linkage in progress. */ private boolean m_isLinking; /** Flag for linkage complete. */ private boolean m_isLinked; /** * No argument constructor. This requires the component to be set later, * using the {@link * org.jibx.binding.def.PassThroughComponent#setWrappedComponent} method. */ protected LinkableBase() {} /** * Constructor. * * @param wrap wrapped binding component */ public LinkableBase(IComponent wrap) { super(wrap); } /** * Handler for recursion. If recursion is found during linking this method * will be called. The base class implementation does nothing, but may be * overridden by subclases to implement the appropriate behavior. */ protected void handleRecursion() {} /** * Check if linkage processing for this component is complete. * * @return true if complete, false if not */ protected boolean isLinked() { return m_isLinked; } // // IComponent interface method definitions // subclasses should call the base class implementation if they override // this method public void setLinkages() throws JiBXException { if (m_isLinking) { handleRecursion(); } else { if (!m_isLinked) { m_isLinking = true; m_component.setLinkages(); m_isLinking = false; m_isLinked = true; } } } // DEBUG public void print(int depth) { BindingDefinition.indent(depth); System.out.println("linkable wrapper"); m_component.print(depth+1); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/def/MappingBase.java0000644000175000017500000002274110434260242024717 0ustar moellermoeller/* Copyright (c) 2003-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import org.apache.bcel.Constants; import org.jibx.binding.classes.BoundClass; import org.jibx.binding.classes.ClassFile; import org.jibx.binding.classes.ContextMethodBuilder; import org.jibx.binding.classes.ExceptionMethodBuilder; import org.jibx.runtime.JiBXException; /** * Base class for mapping definitions. This is used for both normal and custom * mappings. It handles adding the appropriate marshalling and/or unmarshalling * interfaces and methods to the classes. */ public abstract class MappingBase extends LinkableBase implements IMapping { // // Constants and such related to code generation. // definitions for IMarshallable interface defined on mapped classes protected static final String IMARSHALLABLE_INTERFACE = "org.jibx.runtime.IMarshallable"; protected static final String MARSHALLABLE_METHODNAME = "marshal"; protected static final String MARSHALLABLE_SIGNATURE = "(Lorg/jibx/runtime/IMarshallingContext;)V"; protected static final String GETINDEX_METHODNAME = "JiBX_getIndex"; protected static final String GETINDEX_SIGNATURE = "()I"; protected static final String CHECKEXTENDS_METHODNAME = "isExtension"; protected static final String CHECKEXTENDS_SIGNATURE = "(I)Z"; // definitions for IUnmarshallable interface defined on mapped classes protected static final String IUNMARSHALLABLE_INTERFACE = "org.jibx.runtime.IUnmarshallable"; protected static final String UNMARSHALLABLE_METHODNAME = "unmarshal"; protected static final String UNMARSHALLABLE_SIGNATURE = "(Lorg/jibx/runtime/IUnmarshallingContext;)V"; // interface implemented by unmarshaller class protected static final String UNMARSHALLER_INTERFACE = "org.jibx.runtime.IUnmarshaller"; protected static final String UNMARSHALLERUNMARSHAL_METHOD = "org.jibx.runtime.IUnmarshaller.unmarshal"; protected static final String UNMARSHALLERUNMARSHAL_SIGNATURE = "(Ljava/lang/Object;Lorg/jibx/runtime/IUnmarshallingContext;)" + "Ljava/lang/Object;"; // interface implemented by marshaller class protected static final String MARSHALLER_INTERFACE = "org.jibx.runtime.IMarshaller"; protected static final String ABSTRACTMARSHALLER_INTERFACE = "org.jibx.runtime.IAbstractMarshaller"; protected static final String MARSHALLERMARSHAL_METHOD = "org.jibx.runtime.IMarshaller.marshal"; protected static final String MARSHALLERMARSHAL_SIGNATURE = "(Ljava/lang/Object;Lorg/jibx/runtime/IMarshallingContext;)V"; // definitions for context methods used to find marshaller and unmarshaller protected static final String GETMARSHALLER_METHOD = "org.jibx.runtime.IMarshallingContext.getMarshaller"; protected static final String GETMARSHALLER_SIGNATURE = "(ILjava/lang/String;)Lorg/jibx/runtime/IMarshaller;"; protected static final String GETUNMARSHALLER_METHOD = "org.jibx.runtime.IUnmarshallingContext.getUnmarshaller"; protected static final String GETUNMARSHALLER_SIGNATURE = "(I)Lorg/jibx/runtime/IUnmarshaller;"; // // Actual instance data. /** Index number for this particular binding definition. */ private final int m_indexNumber; /** Qualified type name, in text form. */ private final String m_typeName; /** * Constructor. This version requires the component to be set later, * using the {@link * org.jibx.binding.def.PassThroughComponent#setWrappedComponent} method. * * @param contain containing binding definition structure * @param type class name handled by mapping * @param tname qualified type name, in text form */ public MappingBase(IContainer contain, String type, String tname) { String name = (tname == null) ? type : tname; m_indexNumber = contain.getBindingRoot().getMappedClassIndex(name); m_typeName = tname; } /** * Constructor with wrapped component supplied. * * @param contain containing binding definition structure * @param type class name handled by mapping * @param tname qualified type name, in text form * @param wrap wrapped binding component */ public MappingBase(IContainer contain, String type, String tname, IComponent wrap) { this(contain, type, tname); setWrappedComponent(wrap); } /** * Get the mapped class information. This must be implemented in each * subclass to return the type of the bound class. * * @return information for mapped class */ public abstract BoundClass getBoundClass(); /** * Generate marshallable interface methods for this mapping. This is not * applicable to abstract mappings, since they cannot be marshalled as * separate items. * * @throws JiBXException if error in generating code */ protected void addIMarshallableMethod() throws JiBXException { // set up for constructing actual marshal method BoundClass clas = getBoundClass(); ClassFile cf = clas.getMungedFile(); ContextMethodBuilder mb = new ContextMethodBuilder (MARSHALLABLE_METHODNAME, MARSHALLABLE_SIGNATURE, cf, Constants.ACC_PUBLIC, 0, clas.getClassFile().getName(), 1, MARSHALLER_INTERFACE); // create call to marshalling context method with class index and // actual class name mb.loadContext(); mb.appendLoadConstant(getIndex()); mb.appendLoadConstant(cf.getName()); mb.appendCallInterface(GETMARSHALLER_METHOD, GETMARSHALLER_SIGNATURE); // call the returned marshaller with this object and the marshalling // context as parameters mb.loadObject(); mb.loadContext(); mb.appendCallInterface(MARSHALLERMARSHAL_METHOD, MARSHALLERMARSHAL_SIGNATURE); mb.appendReturn(); // add method to class clas.getUniqueNamed(mb); // set up for constructing get index method ExceptionMethodBuilder xb = new ExceptionMethodBuilder (GETINDEX_METHODNAME, GETINDEX_SIGNATURE, cf, Constants.ACC_PUBLIC); // generate code to return the constant index number xb.appendLoadConstant(getIndex()); xb.appendReturn("int"); // add the method and interface to class clas.getUniqueNamed(xb); clas.getClassFile().addInterface(IMARSHALLABLE_INTERFACE); } /** * Generate unmarshallable interface method for this mapping. This is not * applicable to abstract mappings, since they cannot be unmarshalled as * separate items. * * @throws JiBXException if error in generating code */ protected void addIUnmarshallableMethod() throws JiBXException { // set up for constructing new method BoundClass clas = getBoundClass(); ClassFile cf = clas.getMungedFile(); ContextMethodBuilder mb = new ContextMethodBuilder (UNMARSHALLABLE_METHODNAME, UNMARSHALLABLE_SIGNATURE, cf, Constants.ACC_PUBLIC, 0, clas.getClassFile().getName(), 1, UNMARSHALLER_INTERFACE); // create call to unmarshalling context method with class index mb.loadContext(); mb.appendLoadConstant(getIndex()); mb.appendCallInterface(GETUNMARSHALLER_METHOD, GETUNMARSHALLER_SIGNATURE); // call the returned unmarshaller with this object and the unmarshalling // context as parameters mb.loadObject(); mb.loadContext(); mb.appendCallInterface(UNMARSHALLERUNMARSHAL_METHOD, UNMARSHALLERUNMARSHAL_SIGNATURE); mb.appendReturn(); // add the method and interface to class clas.getUniqueNamed(mb); clas.getClassFile().addInterface(IUNMARSHALLABLE_INTERFACE); } // // IMapping interface method definitions /* (non-Javadoc) * @see org.jibx.binding.def.IMapping#getIndex() */ public int getIndex() { return m_indexNumber; } /* (non-Javadoc) * @see org.jibx.binding.def.IMapping#getTypeName() */ public String getTypeName() { return m_typeName; } }libjibx-java-1.1.6a/build/src/org/jibx/binding/def/MappingDefinition.java0000644000175000017500000010570311010026614026127 0ustar moellermoeller/* Copyright (c) 2003-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import java.util.ArrayList; import org.apache.bcel.Constants; import org.apache.bcel.generic.*; import org.jibx.binding.classes.*; import org.jibx.runtime.JiBXException; /** * Normal mapping with defined binding. This is used for a mapping definition * which includes detailed binding information (rather than marshaller and * unmarshaller classes which handle the binding directly). * * @author Dennis M. Sosnoski */ public class MappingDefinition extends MappingBase { // // Constants and such related to code generation. // definitions used in generating the adapter class private static final String ADAPTERCLASS_SUFFIX = "_access"; private static final String MARSHAL_METHODNAME = "marshal"; private static final String BASEMARSHAL_METHODNAME = "baseMarshal"; private static final String UNMARSHAL_METHODNAME = "unmarshal"; private static final String ISPRESENT_METHODNAME = "isPresent"; private static final String UNMARSHALCONTEXT_CLASS = "org.jibx.runtime.impl.UnmarshallingContext"; private static final String MARSHALCONTEXT_CLASS = "org.jibx.runtime.impl.MarshallingContext"; private static final String UNMARSHAL_ISATMETHOD = "org.jibx.runtime.IUnmarshallingContext.isAt"; private static final String UNMARSHAL_ISATSIGNATURE = "(Ljava/lang/String;Ljava/lang/String;)Z"; private static final String CHECKEXTENDS_METHOD = "org.jibx.runtime.IMarshaller.isExtension"; private static final String GETINDEX_METHOD = "org.jibx.runtime.IMarshallable.JiBX_getIndex"; private static final String UNMARSHALLERPRESENT_METHOD = "org.jibx.runtime.IUnmarshaller.isPresent"; private static final String UNMARSHALLERPRESENT_SIGNATURE = "(Lorg/jibx/runtime/IUnmarshallingContext;)Z"; private static final String UNMARSHALCONTEXT_INTERFACE = "org.jibx.runtime.IUnmarshallingContext"; private static final String MARSHALCONTEXT_INTERFACE = "org.jibx.runtime.IMarshallingContext"; private static final String CURRENTELEMENT_METHOD = "org.jibx.runtime.impl.UnmarshallingContext.currentNameString"; private static final String CURRENTELEMENT_SIGNATURE = "()Ljava/lang/String;"; private static final String PARSERNEXT_METHOD = "org.jibx.runtime.impl.UnmarshallingContext.next"; private static final String PARSERNEXT_SIGNATURE = "()I"; private static final String CLOSESTART_METHOD = "org.jibx.runtime.impl.MarshallingContext.closeStartContent"; private static final String CLOSESTART_SIGNATURE = "()Lorg/jibx/runtime/impl/MarshallingContext;"; private static final String ADDUNMARSHALLER_METHOD = "org.jibx.runtime.impl.UnmarshallingContext.addUnmarshalling"; private static final String ADDUNMARSHALLER_SIGNATURE = "(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"; private static final String REMOVEUNMARSHALLER_METHOD = "org.jibx.runtime.impl.UnmarshallingContext.removeUnmarshalling"; private static final String REMOVEUNMARSHALLER_SIGNATURE = "(I)V"; private static final String ADDMARSHALLER_METHOD = "org.jibx.runtime.impl.MarshallingContext.addMarshalling"; private static final String ADDMARSHALLER_SIGNATURE = "(ILjava/lang/String;)V"; private static final String REMOVEMARSHALLER_METHOD = "org.jibx.runtime.impl.MarshallingContext.removeMarshalling"; private static final String REMOVEMARSHALLER_SIGNATURE = "(I)V"; // argument list for the unmarshaller methods private static final Type[] ISPRESENT_METHOD_ARGS = { ClassItem.typeFromName("org.jibx.runtime.IUnmarshallingContext") }; private static final Type[] UNMARSHAL_METHOD_ARGS = { Type.OBJECT, ClassItem.typeFromName("org.jibx.runtime.IUnmarshallingContext") }; // argument list for the marshaller methods private static final Type[] MARSHAL_METHOD_ARGS = { Type.OBJECT, ClassItem.typeFromName("org.jibx.runtime.IMarshallingContext") }; // // Data shared with other classes within package // interface list for adapter with unmarshaller only /*package*/ static final String[] UNMARSHALLER_INTERFACES = { UNMARSHALLER_INTERFACE }; // interface list for adapter with marshaller only /*package*/ static final String[] MARSHALLER_INTERFACES = { MARSHALLER_INTERFACE }; // interface list for adapter with both unmarshaller and marshaller /*package*/ static final String[] BOTH_INTERFACES = { UNMARSHALLER_INTERFACE, MARSHALLER_INTERFACE }; // // Actual instance data. /** Containing binding definition structure. */ private final IContainer m_container; /** Definition context for mapping. */ private final DefinitionContext m_defContext; /** Class linked to mapping. */ private final BoundClass m_class; /** Mapped element name (may be null if element(s) defined by marshaller and unmarshaller, or if abstract mapping). */ private final NameDefinition m_name; /** Abstract mapping flag. */ private final boolean m_isAbstract; /** Name of abstract base type. */ private final String m_baseType; /** Type name for abstract mapping. */ private final String m_typeName; /** Abstract binding this one is based on (null if not an extension. */ private IMapping m_baseMapping; /** Duplicate of component structure for use as "this" reference * (null if not yet defined). */ private IComponent m_thisBinding; /** Constructed marshaller class. */ private ClassFile m_marshaller; /** Constructed unmarshaller class. */ private ClassFile m_unmarshaller; /** Mapping which extend this one (null if none). */ private ArrayList m_extensions; /** Reference type of mapping, as fully qualifed class name. */ private String m_referenceType; /** * Constructor. This initializes the new definition context. * * @param contain containing binding definition structure * @param defc definition context for this mapping * @param type bound class name * @param name mapped element name information (null if defined * by marshaller and unmarshaller) * @param tname qualified type name for abstract mapping (null * if none) * @param abs abstract mapping flag * @param base abstract mapping extended by this one * @param bind binding definition component * @param nillable flag for nillable element * @throws JiBXException if class definition not found */ public MappingDefinition(IContainer contain, DefinitionContext defc, String type, NameDefinition name, String tname, boolean abs, String base, ObjectBinding bind, boolean nillable) throws JiBXException { super(contain, type, tname); IComponent tref = new ObjectBinding(bind); if (name == null) { setWrappedComponent(bind); } else { setWrappedComponent(new ElementWrapper(defc, name, bind, nillable)); tref = new ElementWrapper(defc, name, tref, nillable); } m_thisBinding = tref; m_container = contain; m_defContext = defc; m_class = BoundClass.getInstance(type, null); m_referenceType = type == null ? "java.lang.Object" : type; m_name = name; m_isAbstract = abs; m_baseType = base; m_typeName = tname; } /** * Check if one or more namespaces are defined for element. * * @return true if namespaces are defined, false * if not */ /*package*/ boolean hasNamespace() { return m_defContext.hasNamespace(); } /** * Generate code for loading namespace index and URI arrays. * * @param mb method builder for generated code */ /*package*/ void genLoadNamespaces(MethodBuilder mb) { m_defContext.genLoadNamespaces(mb); } /** * Get the mapped class information. This implements the method used by the * base class. * * @return information for mapped class */ public BoundClass getBoundClass() { return m_class; } /** * Links extension mappings to their base mappings. This must be done before * the more general linking step in order to determine which abstract * mappings are standalone and which are extended by other mappings * * @throws JiBXException if error in linking */ public void linkMappings() throws JiBXException { if (m_baseType != null) { m_baseMapping = m_defContext.getClassMapping(m_baseType); if (m_baseMapping == null) { throw new JiBXException("Mapping for base class " + m_baseType + " not defined"); } m_baseMapping.addExtension(this); } m_defContext.linkMappings(); } // // IMapping interface method definitions public String getBoundType() { return m_class.getClassName(); } public String getReferenceType() { return m_referenceType; } public IComponent getImplComponent() { return m_component; } public ClassFile getMarshaller() { return m_marshaller; } public ClassFile getUnmarshaller() { return m_unmarshaller; } public NameDefinition getName() { return m_name; } public void addNamespace(NamespaceDefinition ns) throws JiBXException { m_defContext.addNamespace(ns); } public boolean isAbstract() { return m_isAbstract; } public boolean isBase() { return m_extensions != null && m_extensions.size() > 0; } public void addExtension(MappingDefinition mdef) throws JiBXException { if (m_extensions == null) { m_extensions = new ArrayList(); } if (!m_extensions.contains(mdef)) { m_extensions.add(mdef); } ClassFile cf = mdef.getBoundClass().getClassFile(); if (!cf.isSuperclass(m_referenceType) && !cf.isImplements(m_referenceType)) { m_referenceType = "java.lang.Object"; } } public IComponent buildRef(IContainer parent, IContextObj objc, String type, PropertyDefinition prop) throws JiBXException { if (prop.isThis()) { // directly incorporate base mapping definition return new BaseMappingWrapper(m_thisBinding); } else if (m_isAbstract && m_extensions == null) { // create reference to use mapping definition directly ComponentProperty comp = new ComponentProperty(prop, m_component, false); if (!hasAttribute() && !hasContent()) { comp.setForceUnmarshal(true); } return comp; } else { // create link to mapping definition DirectObject dobj = new DirectObject(m_container, null, m_class.getClassFile(), m_isAbstract || m_extensions != null, m_marshaller, m_unmarshaller, getIndex(), null); return new DirectProperty(prop, dobj); } } public ArrayList getNamespaces() { return m_defContext.getNamespaces(); } /** * Add abstract marshaller interface to handler class. This adds the * interface and generates the {@link * org.jibx.runtime.IAbstractMarshaller#baseMarshal(Object, * org.jibx.runtime.IMarshallingContext)} method responsible for passing * handling on to the appropriate extension class. * * @param cf hanlder class * @throws JiBXException */ private void generateAbstractMarshaller(ClassFile cf) throws JiBXException { // build the implementation method ContextMethodBuilder mb = new ContextMethodBuilder(BASEMARSHAL_METHODNAME, Type.VOID, MARSHAL_METHOD_ARGS, cf, Constants.ACC_PUBLIC|Constants.ACC_FINAL, 1, "java.lang.Object", 2, MARSHALCONTEXT_INTERFACE); mb.addException(MethodBuilder.FRAMEWORK_EXCEPTION_CLASS); // TODO: optionally check for null value on object mb.loadContext(); mb.loadObject(IMARSHALLABLE_INTERFACE); mb.appendCallInterface(GETINDEX_METHOD, GETINDEX_SIGNATURE); mb.loadObject(); mb.appendCallVirtual("java.lang.Object.getClass", "()Ljava/lang/Class;"); mb.appendCallVirtual("java.lang.Class.getName", "()Ljava/lang/String;"); mb.appendCallInterface(GETMARSHALLER_METHOD, GETMARSHALLER_SIGNATURE); mb.appendDUP(); mb.appendLoadConstant(getIndex()); mb.appendCallInterface(CHECKEXTENDS_METHOD, CHECKEXTENDS_SIGNATURE); BranchWrapper ifvalid = mb.appendIFNE(this); // generate and throw exception describing the problem mb.appendCreateNew("java.lang.StringBuffer"); mb.appendDUP(); mb.appendLoadConstant("Mapping for type "); mb.appendCallInit("java.lang.StringBuffer", "(Ljava/lang/String;)V"); mb.appendDUP(); mb.loadObject(); mb.appendCallVirtual("java.lang.Object.getClass", "()Ljava/lang/Class;"); mb.appendCallVirtual("java.lang.Class.getName", "()Ljava/lang/String;"); mb.appendCallVirtual("java.lang.StringBuffer.append", "(Ljava/lang/String;)Ljava/lang/StringBuffer;"); mb.appendDUP(); mb.appendLoadConstant(" must extend abstract mapping for " + "type " + m_class.getClassName()); mb.appendCallVirtual("java.lang.StringBuffer.append", "(Ljava/lang/String;)Ljava/lang/StringBuffer;"); mb.appendCallVirtual("java.lang.StringBuffer.toString", "()Ljava/lang/String;"); mb.appendCreateNew(MethodBuilder.FRAMEWORK_EXCEPTION_CLASS); mb.appendDUP_X1(); mb.appendSWAP(); mb.appendCallInit(MethodBuilder.FRAMEWORK_EXCEPTION_CLASS, MethodBuilder.EXCEPTION_CONSTRUCTOR_SIGNATURE1); mb.appendThrow(); // for valid extension mapping, just call the marshaller mb.targetNext(ifvalid); mb.loadObject(); mb.loadContext(); mb.appendCallInterface(MARSHALLERMARSHAL_METHOD, MARSHALLERMARSHAL_SIGNATURE); mb.appendReturn(); mb.codeComplete(false); mb.addMethod(); // add extended interface to constructed class cf.addInterface(ABSTRACTMARSHALLER_INTERFACE); } /** * Generate the {@link org.jibx.runtime.IMarshaller#isExtension(int)} * method to check if this mapping is extending a particular abstract * mapping. * * @param cf * @param hasname * @throws JiBXException */ private void generateIfExtendingCheck(ClassFile cf, boolean hasname) throws JiBXException { // build the method ExceptionMethodBuilder xb = new ExceptionMethodBuilder (CHECKEXTENDS_METHODNAME, CHECKEXTENDS_SIGNATURE, cf, Constants.ACC_PUBLIC|Constants.ACC_FINAL); xb.appendLoadLocal(1); xb.appendLoadConstant(getIndex()); xb.appendISUB(); ArrayList ifeqs = new ArrayList(); ifeqs.add(xb.appendIFEQ(this)); IMapping base = m_baseMapping; while (base != null) { xb.appendLoadLocal(1); xb.appendLoadConstant(base.getIndex()); xb.appendISUB(); ifeqs.add(xb.appendIFEQ(this)); if (base instanceof MappingDefinition) { base = ((MappingDefinition)base).m_baseMapping; } else { break; } } xb.appendICONST_0(); xb.appendReturn("int"); for (int i = 0; i < ifeqs.size(); i++) { xb.targetNext((BranchWrapper)ifeqs.get(i)); } xb.appendICONST_1(); xb.appendReturn("int"); xb.codeComplete(false); xb.addMethod(); } /** * Generate the {@link org.jibx.runtime.IUnmarshaller#unmarshal(Object, * org.jibx.runtime.IUnmarshallingContext)} method implementation. * * @param cf class to receive method * @param hasattr attribute definition present flag * @param hascont content definition present flag * @param hasname element name defined by this mapping flag * @throws JiBXException */ private void generateUnmarshalImplementation(ClassFile cf, boolean hasattr, boolean hascont, boolean hasname) throws JiBXException { // build the unmarshal method for item; this just generates code // to unmarshal attributes and content, first creating an // instance of the class if one was not passed in, then // returning the unmarshalled instance as the value of the call String type = m_class.getClassName(); ContextMethodBuilder mb = new ContextMethodBuilder(UNMARSHAL_METHODNAME, Type.OBJECT, UNMARSHAL_METHOD_ARGS, cf, Constants.ACC_PUBLIC|Constants.ACC_FINAL, 1, type, 2, UNMARSHALCONTEXT_INTERFACE); mb.addException(MethodBuilder.FRAMEWORK_EXCEPTION_CLASS); // first part of generated code just checks if an object has // been supplied; if it has, this can just go direct to // unmarshalling mb.loadObject(); BranchWrapper ifnnull = mb.appendIFNONNULL(this); // check for extension mapping handling required if (m_extensions != null) { // generate name comparison unless an abstract mapping BranchWrapper ifthis = null; if (hasname) { // test if at defined element name mb.addException(MethodBuilder.FRAMEWORK_EXCEPTION_CLASS); mb.loadContext(); m_name.genPushUriPair(mb); mb.appendCallInterface(UNMARSHAL_ISATMETHOD, UNMARSHAL_ISATSIGNATURE); ifthis = mb.appendIFNE(this); } // build code to check each extension mapping in turn, // keeping an instance of the unmarshaller for the matching // extension BranchWrapper[] iffounds = new BranchWrapper[m_extensions.size()]; for (int i = 0; i < iffounds.length; i++) { IMapping map = (IMapping)m_extensions.get(i); mb.loadContext(); mb.appendLoadConstant(map.getIndex()); mb.appendCallInterface(GETUNMARSHALLER_METHOD, GETUNMARSHALLER_SIGNATURE); mb.appendDUP(); mb.loadContext(); mb.appendCallInterface(UNMARSHALLERPRESENT_METHOD, UNMARSHALLERPRESENT_SIGNATURE); iffounds[i] = mb.appendIFNE(this); mb.appendPOP(); } // generate code to throw exception if no matching extension // found mb.appendCreateNew("java.lang.StringBuffer"); mb.appendDUP(); mb.appendLoadConstant("Element "); mb.appendCallInit("java.lang.StringBuffer", "(Ljava/lang/String;)V"); mb.appendDUP(); mb.loadContext(UNMARSHALCONTEXT_CLASS); mb.appendCallVirtual(CURRENTELEMENT_METHOD, CURRENTELEMENT_SIGNATURE); mb.appendCallVirtual("java.lang.StringBuffer.append", "(Ljava/lang/String;)Ljava/lang/StringBuffer;"); mb.appendDUP(); mb.appendLoadConstant(" has no mapping that extends " + m_class.getClassName()); mb.appendCallVirtual("java.lang.StringBuffer.append", "(Ljava/lang/String;)Ljava/lang/StringBuffer;"); mb.appendCallVirtual("java.lang.StringBuffer.toString", "()Ljava/lang/String;"); mb.appendCreateNew(MethodBuilder.FRAMEWORK_EXCEPTION_CLASS); mb.appendDUP_X1(); mb.appendSWAP(); mb.appendCallInit(MethodBuilder.FRAMEWORK_EXCEPTION_CLASS, MethodBuilder.EXCEPTION_CONSTRUCTOR_SIGNATURE1); mb.appendThrow(); if (iffounds.length > 0) { // finish by calling unmarshaller for extension mapping // found and returning the result with no further // processing mb.initStackState(iffounds[0]); BranchTarget found = mb.appendTargetACONST_NULL(); for (int i = 0; i < iffounds.length; i++) { iffounds[i].setTarget(found, mb); } mb.loadContext(); mb.appendCallInterface(UNMARSHALLERUNMARSHAL_METHOD, UNMARSHALLERUNMARSHAL_SIGNATURE); mb.appendReturn("java.lang.Object"); } // fall into instance creation if this mapping reference if (ifthis != null) { mb.targetNext(ifthis); } } else if (m_isAbstract) { // throw an exception when no instance supplied mb.appendCreateNew(MethodBuilder.FRAMEWORK_EXCEPTION_CLASS); mb.appendDUP(); mb.appendLoadConstant("Abstract mapping requires instance to " + "be supplied for class " + m_class.getClassName()); mb.appendCallInit(MethodBuilder.FRAMEWORK_EXCEPTION_CLASS, MethodBuilder.EXCEPTION_CONSTRUCTOR_SIGNATURE1); mb.appendThrow(); } if (hasname) { // just create an instance of the (non-abstract) mapped class genNewInstance(mb); mb.storeObject(); } // define unmarshallings for child mappings of this mapping mb.targetNext(ifnnull); ArrayList maps = m_defContext.getMappings(); if (maps != null && maps.size() > 0) { for (int i = 0; i < maps.size(); i++) { IMapping map = (IMapping)maps.get(i); if (!map.isAbstract() || map.isBase()) { mb.loadContext(UNMARSHALCONTEXT_CLASS); mb.appendLoadConstant(map.getIndex()); NameDefinition mname = map.getName(); if (mname == null) { mb.appendACONST_NULL(); mb.appendACONST_NULL(); } else { map.getName().genPushUriPair(mb); } mb.appendLoadConstant(map.getUnmarshaller().getName()); mb.appendCallVirtual(ADDUNMARSHALLER_METHOD, ADDUNMARSHALLER_SIGNATURE); } } } // load object and cast to type mb.loadObject(); mb.appendCreateCast(type); // handle the actual unmarshalling if (hasattr) { m_component.genAttributeUnmarshal(mb); } if (hasattr || !hasname) { mb.loadContext(UNMARSHALCONTEXT_CLASS); mb.appendCallVirtual(PARSERNEXT_METHOD, PARSERNEXT_SIGNATURE); mb.appendPOP(); } if (hascont) { m_component.genContentUnmarshal(mb); } // undefine unmarshallings for child mappings of this mapping if (maps != null && maps.size() > 0) { for (int i = 0; i < maps.size(); i++) { IMapping map = (IMapping)maps.get(i); if (!map.isAbstract() || map.isBase()) { mb.loadContext(UNMARSHALCONTEXT_CLASS); mb.appendLoadConstant(map.getIndex()); mb.appendCallVirtual(REMOVEUNMARSHALLER_METHOD, REMOVEUNMARSHALLER_SIGNATURE); } } } // finish by returning unmarshalled object reference mb.appendReturn("java.lang.Object"); mb.codeComplete(false); mb.addMethod(); // add interface if mapped class is directly unmarshallable if (hasname && m_class.getClassFile() == m_class.getMungedFile()) { addIUnmarshallableMethod(); } } /** * Generate the {@link * org.jibx.runtime.IUnmarshaller#isPresent(org.jibx.runtime.IUnmarshallingContext)} * method implementation. * * @param cf class to receive method * @param hasname element name defined by this mapping flag * @throws JiBXException */ private void generateIsPresent(ClassFile cf, boolean hasname) throws JiBXException { // create the method builder ContextMethodBuilder mb = new ContextMethodBuilder (ISPRESENT_METHODNAME, Type.BOOLEAN, ISPRESENT_METHOD_ARGS, cf, Constants.ACC_PUBLIC|Constants.ACC_FINAL, -1, null, 1, UNMARSHALCONTEXT_INTERFACE); // generate name comparison unless an abstract mapping if (hasname) { // test if at defined element name mb.addException(MethodBuilder.FRAMEWORK_EXCEPTION_CLASS); mb.loadContext(); m_name.genPushUriPair(mb); mb.appendCallInterface(UNMARSHAL_ISATMETHOD, UNMARSHAL_ISATSIGNATURE); } // check for extension mapping handling required if (m_extensions != null) { // return immediately if this mapping name check successful BranchWrapper ifthis = null; if (hasname) { ifthis = mb.appendIFNE(this); } // build code to check each extension mapping in turn; // return "true" if one matches, or "false" if none do mb.addException(MethodBuilder.FRAMEWORK_EXCEPTION_CLASS); BranchWrapper[] iffounds = new BranchWrapper[m_extensions.size()]; for (int i = 0; i < iffounds.length; i++) { IMapping map = (IMapping)m_extensions.get(i); mb.loadContext(); mb.appendLoadConstant(map.getIndex()); mb.appendCallInterface(GETUNMARSHALLER_METHOD, GETUNMARSHALLER_SIGNATURE); mb.loadContext(); mb.appendCallInterface(UNMARSHALLERPRESENT_METHOD, UNMARSHALLERPRESENT_SIGNATURE); iffounds[i] = mb.appendIFNE(this); } mb.appendICONST_0(); mb.appendReturn("int"); mb.initStackState(iffounds[0]); BranchTarget found = mb.appendTargetLoadConstant(1); if (ifthis != null) { ifthis.setTarget(found, mb); } for (int i = 0; i < iffounds.length; i++) { iffounds[i].setTarget(found, mb); } } else if (!hasname) { // mapping with no separate element name, just return "true" mb.appendICONST_1(); } mb.appendReturn("int"); mb.codeComplete(false); mb.addMethod(); } /** * Generate the {@link org.jibx.runtime.IMarshaller#marshal(Object, * org.jibx.runtime.IMarshallingContext)} method implementation. * * @param cf class to receive method * @param hasattr attribute definition present flag * @param hascont content definition present flag * @throws JiBXException */ private void generateMarshalImplementation(ClassFile cf, boolean hasattr, boolean hascont) throws JiBXException { // build the marshal implementation method; this loads the // passed object and casts it to the target type, then handles // marshalling first attributes and followed by content for the // item ContextMethodBuilder mb = new ContextMethodBuilder (MARSHAL_METHODNAME, Type.VOID, MARSHAL_METHOD_ARGS, cf, Constants.ACC_PUBLIC|Constants.ACC_FINAL, 1, "java.lang.Object", 2, MARSHALCONTEXT_INTERFACE); mb.addException(MethodBuilder.FRAMEWORK_EXCEPTION_CLASS); // TODO: optionally check for null value on object // define marshallings for child mappings of this mapping ArrayList maps = m_defContext.getMappings(); if (maps != null && maps.size() > 0) { for (int i = 0; i < maps.size(); i++) { IMapping map = (IMapping)maps.get(i); if (!map.isAbstract() || map.isBase()) { mb.loadContext(MARSHALCONTEXT_CLASS); mb.appendLoadConstant(map.getIndex()); mb.appendLoadConstant(map.getMarshaller().getName()); mb.appendCallVirtual(ADDMARSHALLER_METHOD, ADDMARSHALLER_SIGNATURE); } } } // handle the actual marshalling if (hasattr || hascont) { mb.loadObject(m_class.getClassName()); if (hasattr) { if (hascont) { mb.appendDUP(); } m_component.genAttributeMarshal(mb); } if (hasattr || m_isAbstract) { mb.loadContext(MARSHALCONTEXT_CLASS); mb.appendCallVirtual(CLOSESTART_METHOD, CLOSESTART_SIGNATURE); mb.appendPOP(); } if (hascont) { m_component.genContentMarshal(mb); } } // undefine marshallings for child mappings of this mapping if (maps != null && maps.size() > 0) { for (int i = 0; i < maps.size(); i++) { IMapping map = (IMapping)maps.get(i); if (!map.isAbstract() || map.isBase()) { mb.loadContext(MARSHALCONTEXT_CLASS); mb.appendLoadConstant(map.getIndex()); mb.appendCallVirtual(REMOVEMARSHALLER_METHOD, REMOVEMARSHALLER_SIGNATURE); } } } // finish with plain return mb.appendReturn(); mb.codeComplete(false); mb.addMethod(); } public void generateCode(boolean force) throws JiBXException { // first call code generation for child mappings m_defContext.generateCode(false, false); if (!force && m_isAbstract && m_extensions == null) { return; } // create the helper class BindingDefinition def = m_container.getBindingRoot(); String init = m_class.deriveClassName(def.getPrefix(), ADAPTERCLASS_SUFFIX); String name = init; int loop = 0; while (ClassCache.hasClassFile(name)) { name = init + ++loop; } ClassFile base = ClassCache.getClassFile("java.lang.Object"); String[] intfs = def.isInput() ? (def.isOutput() ? BOTH_INTERFACES : UNMARSHALLER_INTERFACES) : MARSHALLER_INTERFACES; ClassFile cf = new ClassFile(name, m_class.getMungedFile().getRoot(), base, Constants.ACC_PUBLIC, intfs); cf.addDefaultConstructor(); // add marshaller/unmarshaller implementation methods boolean hasattr = m_component.hasAttribute(); boolean hascont = m_component.hasContent(); boolean hasname = !m_isAbstract && m_name != null; if (def.isInput()) { generateIsPresent(cf, hasname); generateUnmarshalImplementation(cf, hasattr, hascont, hasname); } if (def.isOutput()) { // generate the basic method generateMarshalImplementation(cf, hasattr, hascont); generateIfExtendingCheck(cf, hasname); // add interface if mapped class is directly marshallable if (hasname && m_class.getClassFile() == m_class.getMungedFile()) { addIMarshallableMethod(); } // check for mapping with extensions to add extra method and // interface if (m_extensions != null) { generateAbstractMarshaller(cf); } } // add as generated class m_marshaller = m_unmarshaller = MungedClass.getUniqueSupportClass(cf); } public NameDefinition getWrapperName() { return m_name; } public void setLinkages() throws JiBXException { if (!isLinked()) { super.setLinkages(); m_defContext.setLinkages(); if (m_name != null) { m_name.fixNamespace(m_defContext); } } } // DEBUG public void print(int depth) { BindingDefinition.indent(depth); System.out.print("mapping class " + m_class.getClassFile().getName()); if (m_name != null) { System.out.print(" to element " + m_name.toString()); } System.out.print(" (#" + getIndex() + ')'); if (m_baseMapping != null) { System.out.print(" extends " + m_baseMapping.getBoundType()); } if (m_isAbstract) { if (m_extensions != null) { System.out.print(" (abstract, " + m_extensions.size() + " extensions)"); } else { System.out.print(" (abstract)"); } } System.out.println(); m_defContext.print(depth+1); m_component.print(depth+1); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/def/MappingDirect.java0000644000175000017500000001205610541604220025252 0ustar moellermoeller/* Copyright (c) 2003-2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import java.util.ArrayList; import org.jibx.binding.classes.BoundClass; import org.jibx.binding.classes.ClassFile; import org.jibx.runtime.JiBXException; /** * Direct mapping using supplied marshaller and unmarshaller. * * @author Dennis M. Sosnoski */ public class MappingDirect extends MappingBase { /** Direct mapping implementation. */ private final DirectObject m_mappingImpl; /** Class file to use for added code. */ private final BoundClass m_boundClass; /** Flag for abstract mapping. */ private final boolean m_isAbstract; /** Flag for code added to class (if appropriate). */ private boolean m_isGenerated; /** * Constructor. * * @param contain containing binding definition structure * @param type bound class name * @param tname qualified type name (null if not specified) * @param dir direct object information * @param abs abstract mapping flag * @throws JiBXException on mapping definition conflict */ public MappingDirect(IContainer contain, String type, String tname, DirectObject dir, boolean abs) throws JiBXException { super(contain, type, tname, dir); m_mappingImpl = dir; m_boundClass = BoundClass.getInstance(type, null); m_isAbstract = abs; } /** * Get the mapped class information. This implements the method used by the * base class. * * @return information for mapped class */ public BoundClass getBoundClass() { return m_boundClass; } // // IMapping interface method definitions public String getBoundType() { return m_mappingImpl.getTargetClass().getName(); } public String getReferenceType() { return getBoundType(); } public IComponent getImplComponent() { return m_component; } public ClassFile getMarshaller() throws JiBXException { return m_mappingImpl.getMarshaller(); } public ClassFile getUnmarshaller() throws JiBXException { return m_mappingImpl.getUnmarshaller(); } public NameDefinition getName() { return m_mappingImpl.getWrapperName(); } public void addNamespace(NamespaceDefinition ns) { throw new IllegalStateException ("Internal error: no namespace definition possible"); } public boolean isAbstract() { return m_isAbstract; } public boolean isBase() { return false; } public void addExtension(MappingDefinition mdef) { throw new IllegalStateException ("Internal error: no extension possible"); } public IComponent buildRef(IContainer parent, IContextObj objc, String type, PropertyDefinition prop) throws JiBXException { return new DirectProperty(prop, m_mappingImpl); } public ArrayList getNamespaces() { return null; } public void generateCode(boolean force) throws JiBXException { if (!m_isGenerated) { if (m_boundClass.isDirectAccess()) { addIMarshallableMethod(); addIUnmarshallableMethod(); } m_isGenerated = true; } } public NameDefinition getWrapperName() { return null; } public void setLinkages() throws JiBXException { m_mappingImpl.setLinkages(); } // DEBUG public void print(int depth) { BindingDefinition.indent(depth); System.out.println("mapping direct " + m_mappingImpl.getTargetClass().getName()); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/def/MappingReference.java0000644000175000017500000002235711013374744025755 0ustar moellermoeller/* Copyright (c) 2003-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import java.util.ArrayList; import org.jibx.binding.classes.ContextMethodBuilder; import org.jibx.runtime.JiBXException; /** * Reference to a mapping definition. This is used as a placeholder when * building the component structure of a binding definition. It's necessary * because the referenced mapping may not have been parsed yet. During the * linkage phase that follows parsing this looks up the appropriate mapping * definition and sets up the corresponding component structure. Thereafter it * operates as a simple pass-through wrapper for the top child component. * * @author Dennis M. Sosnoski */ public class MappingReference extends PassThroughComponent { /** Containing binding definition structure. */ private final IContainer m_container; /** Property definition. */ private final PropertyDefinition m_property; /** Flag for nillable element. */ private final boolean m_isNillable; /** Fully qualified name of mapped type. */ private String m_type; /** Ordinary name of type for abstract mapping. */ private String m_referenceText; /** Qualified name of type for abstract mapping. */ private String m_referenceQName; /** Context object. */ private final IContextObj m_contextObject; /** Name from reference (only allowed with abstract mappings) */ private final NameDefinition m_name; /** Synthetic reference added to empty collection flag */ private final boolean m_isSynthetic; /** Generated wrapped component, used when checking for both attributes and elements present. */ private IComponent m_wrappedReference; /** * Constructor from property and type. * * @param contain containing binding definition structure * @param prop property definition * @param type fully qualified name of mapped type * @param reftext ordinary text name for abstract mapping reference * (null if not specified) * @param refqname qualified type name for abstract mapping reference * (null if not specified) * @param objc current object context * @param name reference name definition (only allowed with abstract * mappings) * @param synth sythentic reference added to empty collection flag * @param nillable flag for nillable element */ public MappingReference(IContainer contain, PropertyDefinition prop, String type, String reftext, String refqname, IContextObj objc, NameDefinition name, boolean synth, boolean nillable) { super(); m_container = contain; m_property = prop; m_type = type; m_referenceText = reftext; m_referenceQName = refqname; m_contextObject = objc; m_name = name; m_isSynthetic = synth; m_isNillable = nillable; } // // IComponent interface method definitions (overrides of defaults) public boolean isOptional() { return m_property.isOptional(); } public String getType() { return m_type; } public void setLinkages() throws JiBXException { // find the mapping being used DefinitionContext defc = m_container.getDefinitionContext(); IMapping mdef = null; if (m_referenceText != null) { mdef = defc.getClassMapping(m_referenceText); if (mdef == null) { mdef = defc.getClassMapping(m_referenceQName); } } if (mdef == null) { mdef = defc.getClassMapping(m_type); } IComponent wrap = null; PropertyDefinition prop = m_property; if (mdef == null) { // generate generic mapping to unknown type if (m_name != null) { throw new JiBXException ("Name not allowed for generic mapping of type " + m_type); } wrap = new DirectGeneric(m_container, m_type, prop); } else if (m_isSynthetic && mdef.isAbstract() && !mdef.isBase()) { // collection reference to abstract non-base mapping as generic wrap = new DirectGeneric(m_container, m_type, prop); } else { // check for reference from collection if (prop.isImplicit()) { prop.setOptional(false); } // add mapping namespaces to context (only if no element on mapping) if (mdef.getName() == null) { mdef.setLinkages(); ArrayList nss = mdef.getNamespaces(); if (nss != null) { for (int i = 0; i < nss.size(); i++) { defc.addImpliedNamespace((NamespaceDefinition)nss.get(i)); } } } // generate wrapped component for all calls String type = mdef.getBoundType(); if (prop.getTypeName() == null) { prop = new PropertyDefinition(type, m_contextObject, prop.isOptional()); } wrap = mdef.buildRef(m_container, m_contextObject, prop.getTypeName(), prop); if (m_name != null) { m_wrappedReference = wrap; if (mdef.getName() == null) { // create the replacement components IComponent icomp = wrap; wrap = new ElementWrapper(defc, m_name, icomp, m_isNillable); if (prop.isImplicit()) { ((ElementWrapper)wrap).setDirect(true); } if (prop.isOptional()) { // make element optional if (icomp instanceof ComponentProperty) { ((ComponentProperty)icomp).setSkipping(true); } ((ElementWrapper)wrap).setOptionalNormal(true); ((ElementWrapper)wrap).setStructureObject(true); ((ElementWrapper)wrap).setDirect(true); wrap = new OptionalStructureWrapper(wrap, prop, true); } } else { throw new JiBXException ("Name not allowed for reference to mapping of type " + type + ", which already defines a name"); } } // set type based on mapping m_type = mdef.getReferenceType(); } // link actual component into structure setWrappedComponent(wrap); super.setLinkages(); } /** * Patch the generated code to remove the unmarshalled object when it's a * "this" reference with both elements and attributes. * * @param mb * @throws JiBXException */ public void genContentUnmarshal(ContextMethodBuilder mb) throws JiBXException { super.genContentUnmarshal(mb); // check for unmarshalling fix needed if (m_wrappedReference != null && m_property.isThis() && m_wrappedReference.hasAttribute() && m_wrappedReference.hasContent()) { mb.appendPOP(); } } // DEBUG public void print(int depth) { BindingDefinition.indent(depth); System.out.print("mapping reference to " + ((m_referenceText == null) ? m_type : m_referenceText)); if (m_property != null) { System.out.print(" using " + m_property.toString()); } System.out.println(); if (m_component != null) { m_component.print(depth+1); } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/def/NameDefinition.java0000644000175000017500000001204610732007414025420 0ustar moellermoeller/* Copyright (c) 2003-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import org.jibx.binding.classes.MethodBuilder; import org.jibx.runtime.JiBXException; /** * Named value definition from binding. This is a component of all items * in the mapping corresponding to elements or attributes in the document. * * @author Dennis M. Sosnoski */ public class NameDefinition { /** Element or attribute name. */ private final String m_name; /** Element or attribute namespace URI. */ private String m_namespace; /** Flag for attribute name. */ private final boolean m_isAttribute; /** Namespace index used for marshalling (derived from nesting). */ private int m_namespaceIndex; /** * Constructor. * * @param name * @param ns * @param attr flag for attribute name */ public NameDefinition(String name, String ns, boolean attr) { m_name = name; m_namespace = ns; m_isAttribute = attr; } /** * Get the local name. * * @return name */ public String getName() { return m_name; } /** * Get the namespace URI. * * @return namespace (null if no-namespace namespace) */ public String getNamespace() { return m_namespace; } /** * Check if namespace URI is null. * * @return true if URI null, false if not */ public boolean isNullUri() { return m_namespace == null; } /** * Generate code to push namespace URI. * * @param mb method builder */ public void genPushUri(MethodBuilder mb) { if (m_namespace == null) { mb.appendACONST_NULL(); } else { mb.appendLoadConstant(m_namespace); } } /** * Generate code to push name. * * @param mb method builder */ public void genPushName(MethodBuilder mb) { mb.appendLoadConstant(m_name); } /** * Generate code to push namespace URI followed by name. * * @param mb method builder */ public void genPushUriPair(MethodBuilder mb) { genPushUri(mb); genPushName(mb); } /** * Generate code to push namespace index followed by name. * * @param mb method builder */ public void genPushIndexPair(MethodBuilder mb) { mb.appendLoadConstant(m_namespaceIndex); genPushName(mb); } /** * Finds the index for the namespace used with a name. If no explicit * namespace has been set it uses the appropriate default. This is a * separate operation from the unmarshalling in order to properly handle * namespace definitions as children of the named binding component. * * @param defc definition context for namespaces * @throws JiBXException if error in namespace handling */ public void fixNamespace(DefinitionContext defc) throws JiBXException { if (m_namespace == null) { m_namespace = defc.getDefaultURI(m_isAttribute); m_namespaceIndex = defc.getDefaultIndex(m_isAttribute); } else { try { m_namespaceIndex = defc.getNamespaceIndex (m_namespace, m_isAttribute); } catch (JiBXException ex) { throw new JiBXException("Undefined or unusable namespace \"" + m_namespace + '"'); } } } // DEBUG public String toString() { if (m_namespace == null) { return m_name; } else { return "{" + m_namespace + "}:" + m_name; } } } libjibx-java-1.1.6a/build/src/org/jibx/binding/def/NamespaceDefinition.java0000644000175000017500000001214110071714320026425 0ustar moellermoeller/* Copyright (c) 2003-2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import org.jibx.runtime.JiBXException; /** * Namespace definition from binding. * * @author Dennis M. Sosnoski * @version 1.0 */ public class NamespaceDefinition { // // Enumeration for namespace usage. /*package*/ static final int NODEFAULT_USAGE = 0; /*package*/ static final int ELEMENTS_USAGE = 1; /*package*/ static final int ATTRIBUTES_USAGE = 2; /*package*/ static final int ALLDEFAULT_USAGE = 3; // // Actual instance data /** Namespace URI. */ private String m_uri; /** Namespace prefix (may be null, but not ""). */ private String m_prefix; /** Index in namespace table for binding. */ private int m_index; /** Use by default for nested elements. */ private boolean m_elementDefault; /** Use by default for nested attributes. */ private boolean m_attributeDefault; /** * Constructor. * * @param uri namespace URI * @param prefix namespace prefix (may be null for default * namespace, but not "") * @param usage code for default usage of namespace * @throws JiBXException if configuration error */ public NamespaceDefinition(String uri, String prefix, int usage) throws JiBXException { m_uri = uri; m_prefix = prefix; m_elementDefault = (usage == ALLDEFAULT_USAGE) || (usage == ELEMENTS_USAGE); m_attributeDefault = (usage == ALLDEFAULT_USAGE) || (usage == ATTRIBUTES_USAGE); if (usage != ELEMENTS_USAGE && prefix == null) { throw new JiBXException ("Prefix required for namespace unless element default"); } if (m_attributeDefault && m_prefix == null) { throw new JiBXException("Prefix required for attribute namespace"); } } /** * Check if default namespace for attributes. * * @return true if default namespace for attributes, * false if not */ public boolean isAttributeDefault() { return m_attributeDefault; } /** * Check if default namespace for elements. * * @return true if default namespace for elements, * false if not */ public boolean isElementDefault() { return m_elementDefault; } /** * Get prefix for namespace. * * @return namespace prefix (may be null, but not "") */ public String getPrefix() { return m_prefix; } /** * Get namespace URI. * * @return namespace URI */ public String getUri() { return m_uri; } /** * Set namespace index. * * @param index namespace index */ public void setIndex(int index) { m_index = index; } /** * Get namespace index. * * @return namespace index */ public int getIndex() { return m_index; } /** * Instance builder with supplied values. Used for canned definitions. * * @param uri namespace URI * @param prefix namespace prefix * @throws JiBXException if configuration error */ public static NamespaceDefinition buildNamespace(String uri, String prefix) throws JiBXException { return new NamespaceDefinition(uri, prefix, NODEFAULT_USAGE); } // DEBUG public void print(int depth) { BindingDefinition.indent(depth); System.out.print("namespace " + m_uri); if (m_prefix != null) { System.out.print(" (prefix " + m_prefix + ")"); } System.out.println(); } } libjibx-java-1.1.6a/build/src/org/jibx/binding/def/NestedBase.java0000644000175000017500000001732410435546730024561 0ustar moellermoeller/* Copyright (c) 2003-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import java.util.ArrayList; import org.jibx.binding.classes.*; import org.jibx.runtime.JiBXException; /** * Base class for structure and collection binding definitions. This handles one * or more child components, which may be ordered or unordered. * * @author Dennis M. Sosnoski * @version 1.0 */ public abstract class NestedBase extends BindingBuilder.ContainerBase implements IComponent, IContainer { /** Context object for this definition. */ private IContextObj m_contextObject; /** Flag for context defined at level. */ private final boolean m_hasContext; /** Flag for ordered child content (used by subclasses). */ protected final boolean m_isOrdered; /** Flag for flexible element handling (used by subclasses). */ protected final boolean m_isFlexible; /** Definition context for container (may be same as parent). */ private final DefinitionContext m_defContext; /** Included attribute definitions (lazy create, only if needed). */ protected ArrayList m_attributes; /** Nested content definitions (initially used for all child components). */ protected ArrayList m_contents; /** * Constructor. * * @param contain containing binding definition context * @param objc current object context * @param ord ordered content flag * @param flex flexible element handling flag * @param defc define context for structure flag */ public NestedBase(IContainer contain, IContextObj objc, boolean ord, boolean flex, boolean defc) { // set base class defaults super(contain); m_styleDefault = m_autoLink = m_accessLevel = m_nameStyle = -1; // initialize members at this level m_contextObject = objc; m_contents = new ArrayList(); m_isOrdered = ord; m_isFlexible = flex; m_hasContext = defc; if (defc) { m_defContext = new DefinitionContext(contain); } else { m_defContext = contain.getDefinitionContext(); } } /** * Set the object context. * * @param objc object context */ public void setObjectContext(IContextObj objc) { m_contextObject = objc; } /** * Get the attribute children of this mapping. * * @return list of attribute children (null if none; should not * be modified) */ public ArrayList getAttributes() { return m_attributes; } /** * Get the content children of this mapping. * * @return list of content children (should not be modified) */ public ArrayList getContents() { return m_contents; } /** * Add child component to nested structure. All components are initially * assumed to contain content. When {@link #setLinkages} is called the * components are checked to determine whether they actually supply * attribute(s), content, or both. * * @param comp child component to be added to structure */ public void addComponent(IComponent comp) { m_contents.add(comp); } /** * Check if flexible unmarshalling. * * @return flexible flag */ public boolean isFlexible() { return m_isFlexible; } // // IContainer interface method definitions public boolean isContentOrdered() { return m_isOrdered; } public boolean hasNamespaces() { return m_hasContext && m_defContext.hasNamespace(); } public BindingDefinition getBindingRoot() { return m_container.getBindingRoot(); } public DefinitionContext getDefinitionContext() { return m_defContext; } // // IComponent interface method definitions public boolean isOptional() { // optional if and only if all child components are optional if (m_attributes != null) { for (int i = 0; i < m_attributes.size(); i++) { if (!((IComponent)m_attributes.get(i)).isOptional()) { return false; } } } for (int i = 0; i < m_contents.size(); i++) { if (!((IComponent)m_contents.get(i)).isOptional()) { return false; } } return true; } public boolean hasContent() { return m_contents.size() > 0; } public void genContentPresentTest(ContextMethodBuilder mb) throws JiBXException { if (m_contents.size() > 0) { // if single possiblity just test it directly int count = m_contents.size(); if (count == 1) { ((IComponent)m_contents.get(0)).genContentPresentTest(mb); } else { // generate code for chained test with branches to found exit BranchWrapper[] tofound = new BranchWrapper[count]; for (int i = 0; i < count; i++) { IComponent comp = (IComponent)m_contents.get(i); comp.genContentPresentTest(mb); tofound[i] = mb.appendIFNE(this); } // fall off end of loop to push "false" on stack and jump to end mb.appendICONST_0(); BranchWrapper toend = mb.appendUnconditionalBranch(this); // generate found target to push "true" on stack and continue for (int i = 0; i < count; i++) { mb.targetNext(tofound[i]); } mb.appendICONST_1(); mb.targetNext(toend); } } else { throw new IllegalStateException ("Internal error - no content present"); } } public void genNewInstance(ContextMethodBuilder mb) { throw new IllegalStateException ("Internal error - no instance creation"); } public String getType() { return m_contextObject.getBoundClass().getClassName(); } public NameDefinition getWrapperName() { if (m_contents.size() == 1) { return ((IComponent)m_contents.get(0)).getWrapperName(); } else { return null; } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/def/NestedCollection.java0000644000175000017500000010442110611637722025773 0ustar moellermoeller/* Copyright (c) 2003-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import org.apache.bcel.generic.*; import org.jibx.binding.classes.*; import org.jibx.runtime.JiBXException; /** * Collection binding definition. This handles one or more child components, * which may be ordered or unordered. * * @author Dennis M. Sosnoski * @version 1.0 */ public class NestedCollection extends NestedBase { // // Method definitions used in code generation private static final String GROWARRAY_METHOD = "org.jibx.runtime.Utility.growArray"; private static final String GROWARRAY_SIGNATURE = "(Ljava/lang/Object;)Ljava/lang/Object;"; private static final String RESIZEARRAY_METHOD = "org.jibx.runtime.Utility.resizeArray"; private static final String RESIZEARRAY_SIGNATURE = "(ILjava/lang/Object;)Ljava/lang/Object;"; private static final String CHECK_ISSTART_NAME = "org.jibx.runtime.impl.UnmarshallingContext.isStart"; private static final String CHECK_ISSTART_SIGNATURE = "()Z"; private static final String SKIP_ELEMENT_NAME = "org.jibx.runtime.impl.UnmarshallingContext.skipElement"; private static final String SKIP_ELEMENT_SIGNATURE = "()V"; // // Actual instance data. /** Fully qualified class name of values from collection. */ private final String m_itemType; /** Strategy for generating code to load item from collection. */ private final CollectionLoad m_loadStrategy; /** Strategy for generating code to store item to collection. */ private final CollectionStore m_storeStrategy; /** Optional component flag. */ private final boolean m_isOptional; /** * Constructor. * * @param parent containing binding definition context * @param objc current object context * @param ord ordered content flag * @param opt optional component flag * @param flex flexible element handling flag * @param type fully qualified class name of values from collection (may be * null, if child content present) * @param load collection load code generation strategy * @param store collection store code generation strategy */ public NestedCollection(IContainer parent, IContextObj objc, boolean ord, boolean opt, boolean flex, String type, CollectionLoad load, CollectionStore store) { super(parent, objc, ord, flex, false); m_itemType = type; m_loadStrategy = load; m_storeStrategy = store; m_isOptional = opt; } /** * Get the collection item type. * * @return item type */ public String getItemType() { return m_itemType; } // // IComponent interface method definitions public boolean hasAttribute() { return false; } public void genAttrPresentTest(ContextMethodBuilder mb) { throw new IllegalStateException ("Internal error - no attributes present"); } public void genAttributeUnmarshal(ContextMethodBuilder mb) { throw new IllegalStateException ("Internal error - no attributes present"); } public void genAttributeMarshal(ContextMethodBuilder mb) { throw new IllegalStateException ("Internal error - no attributes present"); } public boolean hasContent() { return m_contents.size() > 0; } public void genContentUnmarshal(ContextMethodBuilder mb) throws JiBXException { if (m_contents.size() > 0) { // set up common handling and check for ordered or unordered content m_storeStrategy.genStoreInit(mb); BranchWrapper link = null; int count = m_contents.size(); if (m_isOrdered) { // just generate unmarshal code for each component in order for (int i = 0; i < count; i++) { // start with branch target for loop and link from last type if (link != null) { mb.initStackState(link); } BranchTarget start = mb.appendTargetNOP(); if (link != null) { link.setTarget(start, mb); } // generate code to check if an element matching this // component type is present IComponent child = (IComponent)m_contents.get(i); child.genContentPresentTest(mb); link = mb.appendIFEQ(this); // follow with code to unmarshal the component and store to // collection, ending with loop back to start of this // component child.genContentUnmarshal(mb); if (m_itemType != null && !ClassItem.isPrimitive(m_itemType)) { mb.appendCreateCast(m_itemType); } m_storeStrategy.genStoreItem(mb); mb.appendUnconditionalBranch(this).setTarget(start, mb); } } else { // generate unmarshal loop code that checks for each component, // branching to the next component until one is found and // exiting the loop only when no component is matched BranchTarget first = mb.appendTargetNOP(); for (int i = 0; i < count; i++) { if (link != null) { mb.targetNext(link); } IComponent child = (IComponent)m_contents.get(i); child.genContentPresentTest(mb); link = mb.appendIFEQ(this); child.genContentUnmarshal(mb); if (m_itemType != null && !ClassItem.isPrimitive(m_itemType)) { mb.appendCreateCast(m_itemType); } m_storeStrategy.genStoreItem(mb); mb.appendUnconditionalBranch(this).setTarget(first, mb); } // handle fall through condition depending on flexible flag if (m_isFlexible) { // exit loop if not positioned at element start mb.targetNext(link); mb.loadContext(); mb.appendCallVirtual(CHECK_ISSTART_NAME, CHECK_ISSTART_SIGNATURE); link = mb.appendIFEQ(this); // ignore unknown element and loop back to start mb.loadContext(); mb.appendCallVirtual(SKIP_ELEMENT_NAME, SKIP_ELEMENT_SIGNATURE); mb.appendUnconditionalBranch(this).setTarget(first, mb); } } // patch final test failure branch to fall through loop mb.targetNext(link); m_storeStrategy.genStoreDone(mb); } else { throw new IllegalStateException ("Internal error - no content present"); } } public void genContentMarshal(ContextMethodBuilder mb) throws JiBXException { if (m_contents.size() > 0) { // set up common handling of unknown item and collection empty BranchWrapper[] ifempties; BranchWrapper link = null; m_loadStrategy.genLoadInit(mb); // check for ordered or unordered content int count = m_contents.size(); if (m_isOrdered) { // generate marshal code for each component type in order, with // an exception generated if the end of the possible component // list is reached with anything left in the collection ifempties = new BranchWrapper[count]; for (int i = 0; i < count; i++) { // start generated code with loading next value from // collection if (link != null) { mb.initStackState(link, 1); } BranchTarget start = mb.appendTargetNOP(); ifempties[i] = m_loadStrategy.genLoadItem(mb); mb.targetNext(link); // if multiple types are included in content, append code to // check if item type matches this component IComponent child = (IComponent)m_contents.get(i); String type = child.getType(); if (count > 1) { mb.appendDUP(); mb.appendInstanceOf(type); link = mb.appendIFEQ(this); } if ((!"java.lang.Object".equals(type) && !ClassItem.isPrimitive(type))) { mb.appendCreateCast(type); } // finish with code to marshal the component, looping back // to start of block for more of same type child.genContentMarshal(mb); mb.appendUnconditionalBranch(this).setTarget(start, mb); } } else { // generate marshal loop code that loads an item from the // collection and then checks to see if it matches a component // type, branching to the next component until a match is found // (or generating an exception on no match) BranchTarget start = mb.appendTargetNOP(); ifempties = new BranchWrapper[1]; ifempties[0] = m_loadStrategy.genLoadItem(mb); for (int i = 0; i < count; i++) { // start by setting target for branch from last component mb.targetNext(link); // if multiple types are included in content, append code to // check if item type matches this component IComponent child = (IComponent)m_contents.get(i); String type = child.getType(); if (count > 1 || (!"java.lang.Object".equals(type) && !ClassItem.isPrimitive(type))) { mb.appendDUP(); mb.appendInstanceOf(type); link = mb.appendIFEQ(this); mb.appendCreateCast(type); } // finish with code to marshal the component, branching back // to start of loop child.genContentMarshal(mb); mb.appendUnconditionalBranch(this).setTarget(start, mb); } } // patch final test failure branch to generate an exception if (link != null) { // instruction sequence for exception is create new exception // object, build message in StringBuffer using type of item // from stack, convert StringBuffer to String, invoke the // exeception constructor with the String, and finally throw // the exception mb.targetNext(link); mb.appendCreateNew("java.lang.StringBuffer"); mb.appendDUP(); mb.appendLoadConstant("Collection item of type "); mb.appendCallInit("java.lang.StringBuffer", "(Ljava/lang/String;)V"); mb.appendSWAP(); mb.appendDUP(); BranchWrapper ifnull = mb.appendIFNULL(this); mb.appendCallVirtual("java.lang.Object.getClass", "()Ljava/lang/Class;"); mb.appendCallVirtual("java.lang.Class.getName", "()Ljava/lang/String;"); BranchWrapper toend = mb.appendUnconditionalBranch(this); mb.targetNext(ifnull); mb.appendPOP(); mb.appendLoadConstant("NULL"); mb.targetNext(toend); mb.appendCallVirtual("java.lang.StringBuffer.append", "(Ljava/lang/String;)Ljava/lang/StringBuffer;"); mb.appendLoadConstant(" has no binding defined"); mb.appendCallVirtual("java.lang.StringBuffer.append", "(Ljava/lang/String;)Ljava/lang/StringBuffer;"); mb.appendCallVirtual("java.lang.StringBuffer.toString", "()Ljava/lang/String;"); mb.appendCreateNew(MethodBuilder.FRAMEWORK_EXCEPTION_CLASS); mb.appendDUP_X1(); mb.appendSWAP(); mb.appendCallInit(MethodBuilder.FRAMEWORK_EXCEPTION_CLASS, MethodBuilder.EXCEPTION_CONSTRUCTOR_SIGNATURE1); mb.appendThrow(); } // finish by setting target for collection empty case(s) m_loadStrategy.genLoadDone(mb); mb.targetNext(ifempties); } else { throw new IllegalStateException ("Internal error - no content present"); } } public boolean hasId() { return false; } public void genLoadId(ContextMethodBuilder mb) throws JiBXException { throw new IllegalStateException("No ID child"); } public NameDefinition getWrapperName() { return null; } public boolean isOptional() { return m_isOptional; } public void setLinkages() throws JiBXException { for (int i = 0; i < m_contents.size(); i++) { ((IComponent)m_contents.get(i)).setLinkages(); } } // DEBUG public void print(int depth) { BindingDefinition.indent(depth); System.out.print("collection " + (m_isOrdered ? "ordered" : "unordered")); if (m_itemType != null) { System.out.print(" (" + m_itemType + ")"); } if (isFlexible()) { System.out.print(", flexible"); } System.out.println(); for (int i = 0; i < m_contents.size(); i++) { IComponent comp = (IComponent)m_contents.get(i); comp.print(depth+1); } } /** * Base class for collection item load strategy. The implementation class * must handle the appropriate form of code generation for the type of * collection being used. */ /*package*/ static abstract class CollectionBase { /** Double word value flag. */ private final boolean m_isDoubleWord; /** * Constructor. * * @param doubword double word value flag */ protected CollectionBase(boolean doubword) { m_isDoubleWord = doubword; } /** * Append the appropriate instruction to swap the top of the stack * (which must be a single-word value) with an item value (which may * be one or two words, as configured for this collection). * * @param mb method */ protected void appendSWAP(MethodBuilder mb) { if (m_isDoubleWord) { mb.appendSWAP1For2(); } else { mb.appendSWAP(); } } /** * Append the appropriate instruction to pop the item value (which may * be one or two words, as configured for this collection) from the top * of the stack. * * @param mb method */ protected void appendPOP(MethodBuilder mb) { if (m_isDoubleWord) { mb.appendPOP2(); } else { mb.appendPOP(); } } } /** * Base class for collection item load strategy. The implementation class * must handle the appropriate form of code generation for the type of * collection being used. */ /*package*/ static abstract class CollectionLoad extends CollectionBase { /** * Constructor. * * @param add method used to add item to collection * @param doubword double word value flag * @param ret value returned by add flag */ protected CollectionLoad(boolean doubword) { super(doubword); } /** * Generate code to initialize collection for loading items. This * generates the necessary code for handling the initialization. It * must be called before attempting to call the {@link #genLoadItem} * method. The base class implementation does nothing. * * @param mb method builder * @throws JiBXException if error in configuration */ protected void genLoadInit(ContextMethodBuilder mb) throws JiBXException {} /** * Generate code to load next item from collection. This generates the * necessary code for handling the load operation, leaving the item on * the stack. The {@link #genLoadInit} method must be called before * calling this method, and the {@link #genLoadDone} method must be * called after the last call to this method. This method must be * overridden by each subclass. * * @param mb method builder * @return branch wrapper for case of done with collection * @throws JiBXException if error in configuration */ protected abstract BranchWrapper genLoadItem(ContextMethodBuilder mb) throws JiBXException; /** * Generate code to clean up after loading items from collection. This * generates the necessary code for handling the clean up. It must be * called after the last call to {@link #genLoadItem}. The base class * implementation does nothing. * * @param mb method builder * @throws JiBXException if error in configuration */ protected void genLoadDone(ContextMethodBuilder mb) throws JiBXException {} } /** * Base class for collection item store strategy. The implementation class * must handle the appropriate form of code generation for the type of * collection being used. */ /*package*/ static abstract class CollectionStore extends CollectionBase { /** * Constructor. * * @param doubword double word value flag */ protected CollectionStore(boolean doubword) { super(doubword); } /** * Generate code to initialize collection for storing items. This * generates the necessary code for handling the initialization, * including creating the collection object if appropriate. It must be * called before attempting to call the {@link #genStoreItem} method. * The base class implementation does nothing. * * @param mb method builder * @throws JiBXException if error in configuration */ protected void genStoreInit(ContextMethodBuilder mb) throws JiBXException {} /** * Generate code to store next item to collection. This generates the * necessary code for handling the store operation, removing the item * from the stack. The {@link #genStoreInit} method must be called * before calling this method, and the {@link #genStoreDone} method must * be called after the last call to this method. This method must be * overridden by each subclass. * * @param mb method builder * @throws JiBXException if error in configuration */ protected abstract void genStoreItem(ContextMethodBuilder mb) throws JiBXException; /** * Generate code to clean up after storing items to collection. This * generates the necessary code for handling the clean up. It must be * called after the last call to {@link #genStoreItem}. The base class * implementation does nothing. * * @param mb method builder * @throws JiBXException if error in configuration */ protected void genStoreDone(ContextMethodBuilder mb) throws JiBXException {} } /** * Collection item load strategy for collection with items accessed by * index number. */ /*package*/ static class IndexedLoad extends CollectionLoad { /** Method used to get count of items in collection. */ private final ClassItem m_sizeMethod; /** Method used to get items by index from collection. */ private final ClassItem m_getMethod; /** * Constructor. * * @param size method used to get count of items in collection * @param doubword double word value flag * @param get method used to retrieve items by index from collection */ /*package*/ IndexedLoad(ClassItem size, boolean doubword, ClassItem get) { super(doubword); m_sizeMethod = size; m_getMethod = get; } protected void genLoadInit(ContextMethodBuilder mb) throws JiBXException { // create index local with appended code to set initial value mb.appendLoadConstant(-1); mb.defineSlot(m_getMethod, Type.INT); // create size local with appended code to set initial value from // collection method call if (!m_sizeMethod.isStatic()) { mb.loadObject(); } mb.appendCall(m_sizeMethod); mb.defineSlot(m_sizeMethod, Type.INT); } protected BranchWrapper genLoadItem(ContextMethodBuilder mb) throws JiBXException { // start by getting local variable slots for the index and size int islot = mb.getSlot(m_getMethod); int sslot = mb.getSlot(m_sizeMethod); // append code to first increment index, then check for end of // collection reached mb.appendIncrementLocal(1, islot); mb.appendLoadLocal(islot); mb.appendLoadLocal(sslot); mb.appendISUB(); BranchWrapper ifempty = mb.appendIFGE(this); // finish by calling collection method to load item at current index // position if (!m_getMethod.isStatic()) { mb.loadObject(); } mb.appendLoadLocal(islot); mb.appendCall(m_getMethod); return ifempty; } protected void genLoadDone(ContextMethodBuilder mb) throws JiBXException { mb.freeSlot(m_getMethod); mb.freeSlot(m_sizeMethod); } } /** * Collection item store strategy for collection with items set by * index number. */ /*package*/ static class IndexedStore extends CollectionStore { /** Method used to set items by index in collection. */ private final ClassItem m_setMethod; /** Flag for method returns result. */ private final boolean m_isReturned; /** * Constructor. * * @param set method used to store items by index in collection * @param doubword double word value flag * @param ret value returned by add flag */ /*package*/ IndexedStore(ClassItem set, boolean doubword, boolean ret) { super(doubword); m_setMethod = set; m_isReturned = ret; } protected void genStoreInit(ContextMethodBuilder mb) throws JiBXException { // create index local with appended code to set initial value mb.appendLoadConstant(-1); mb.defineSlot(m_setMethod, Type.INT); } protected void genStoreItem(ContextMethodBuilder mb) throws JiBXException { // start by getting local variable slot for the index int islot = mb.getSlot(m_setMethod); // append code to first load object and swap with item, then // increment index and swap copy with item, and finally call // collection method to store item at new index position if (!m_setMethod.isStatic()) { mb.loadObject(); appendSWAP(mb); } mb.appendIncrementLocal(1, islot); mb.appendLoadLocal(islot); appendSWAP(mb); mb.appendCall(m_setMethod); if (m_isReturned) { appendPOP(mb); } } protected void genStoreDone(ContextMethodBuilder mb) throws JiBXException { mb.freeSlot(m_setMethod); } } /** * Collection item load strategy for collection with items accessed by * iterator or enumeration. */ /*package*/ static class IteratorLoad extends CollectionLoad { /** Method used to get iterator for collection. */ private final ClassItem m_iterMethod; /** Fully qualified method name to test if more in iteration. */ private final String m_moreName; /** Fully qualified method name to get next item in iteration. */ private final String m_nextName; /** * Constructor. * * @param iter method to get iterator or enumerator from collection * @param doubword double word value flag * @param more fully qualified method name to test if more in iteration * @param next fully qualified method name to get next item in iteration */ /*package*/ IteratorLoad(ClassItem iter, boolean doubword, String more, String next) { super(doubword); m_iterMethod = iter; m_moreName = more; m_nextName = next; } protected void genLoadInit(ContextMethodBuilder mb) throws JiBXException { // create iterator local with appended code to set initial value if (!m_iterMethod.isStatic()) { mb.loadObject(); } mb.appendCall(m_iterMethod); mb.defineSlot(m_iterMethod, Type.getType("Ljava/util/Iterator;")); } protected BranchWrapper genLoadItem(ContextMethodBuilder mb) throws JiBXException { // start with code to load and test iterator int islot = mb.getSlot(m_iterMethod); mb.appendLoadLocal(islot); mb.appendCallInterface(m_moreName, "()Z"); BranchWrapper ifempty = mb.appendIFEQ(this); // append code to get next item from iterator mb.appendLoadLocal(islot); mb.appendCallInterface(m_nextName, "()Ljava/lang/Object;"); return ifempty; } protected void genLoadDone(ContextMethodBuilder mb) throws JiBXException { mb.freeSlot(m_iterMethod); } } /** * Collection item store strategy for collection with add method. */ /*package*/ static class AddStore extends CollectionStore { /** Method used to add item to collection. */ private final ClassItem m_addMethod; /** Flag for method returns result. */ private final boolean m_isReturned; /** * Constructor. * * @param add method used to add item to collection * @param doubword double word value flag * @param ret value returned by add flag */ /*package*/ AddStore(ClassItem add, boolean doubword, boolean ret) { super(doubword); m_addMethod = add; m_isReturned = ret; } protected void genStoreItem(ContextMethodBuilder mb) throws JiBXException { // append code to call collection method to add the item if (!m_addMethod.isStatic()) { mb.loadObject(); appendSWAP(mb); } mb.appendCall(m_addMethod); if (m_isReturned) { appendPOP(mb); } } } /** * Collection item load strategy for array. */ /*package*/ static class ArrayLoad extends CollectionLoad { /** Array item type. */ private final String m_itemType; /** Handle for referencing loop counter local variable. */ private Object m_slotHandle = new Object(); /** * Constructor. * * @param itype array item type * @param doubword double word value flag */ /*package*/ ArrayLoad(String itype, boolean doubword) { super(doubword); m_itemType = itype; } protected void genLoadInit(ContextMethodBuilder mb) throws JiBXException { // create index local with initial value -1 mb.appendLoadConstant(-1); mb.defineSlot(m_slotHandle, Type.INT); } protected BranchWrapper genLoadItem(ContextMethodBuilder mb) throws JiBXException { // start by getting local variable slots for the index int islot = mb.getSlot(m_slotHandle); // append code to first increment index, then check for end of // collection reached mb.appendIncrementLocal(1, islot); mb.appendLoadLocal(islot); mb.loadObject(); mb.appendARRAYLENGTH(); mb.appendISUB(); BranchWrapper ifempty = mb.appendIFGE(this); // finish by loading array item at current index position mb.loadObject(); mb.appendLoadLocal(islot); mb.appendALOAD(m_itemType); return ifempty; } protected void genLoadDone(ContextMethodBuilder mb) throws JiBXException { mb.freeSlot(m_slotHandle); } } /** * Collection item store strategy for array. */ /*package*/ static class ArrayStore extends CollectionStore { /** Array item type. */ private final String m_itemType; /** * Constructor. * * @param itype array item type * @param doubword double word value flag */ /*package*/ ArrayStore(String itype, boolean doubword) { super(doubword); m_itemType = itype; } protected void genStoreInit(ContextMethodBuilder mb) throws JiBXException { // create index local with initial value -1 mb.appendLoadConstant(-1); mb.defineSlot(m_itemType, Type.INT); } protected void genStoreItem(ContextMethodBuilder mb) throws JiBXException { // start by getting local variable slot for the index int islot = mb.getSlot(m_itemType); // append code to first increment index and check array size mb.appendIncrementLocal(1, islot); mb.appendLoadLocal(islot); mb.loadObject(); mb.appendARRAYLENGTH(); mb.appendISUB(); BranchWrapper ifnotfull = mb.appendIFLT(this); // grow the array size to make room for more values mb.loadObject(); mb.appendCallStatic(GROWARRAY_METHOD, GROWARRAY_SIGNATURE); mb.storeObject(); // swap the array reference with the item, swap index with item, and // finally store item at new index position mb.targetNext(ifnotfull); mb.loadObject(); appendSWAP(mb); mb.appendLoadLocal(islot); appendSWAP(mb); if (!ClassItem.isPrimitive(m_itemType)) { mb.appendCreateCast(m_itemType); } mb.appendASTORE(m_itemType); } protected void genStoreDone(ContextMethodBuilder mb) throws JiBXException { // resize the array to match actual item count int islot = mb.getSlot(m_itemType); mb.appendIncrementLocal(1, islot); mb.appendLoadLocal(islot); mb.loadObject(); mb.appendCallStatic(RESIZEARRAY_METHOD, RESIZEARRAY_SIGNATURE); mb.storeObject(); mb.freeSlot(m_itemType); } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/def/NestedStructure.java0000644000175000017500000004037710442760652025712 0ustar moellermoeller/* Copyright (c) 2003-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import java.util.ArrayList; import org.jibx.binding.classes.*; import org.jibx.runtime.JiBXException; /** * Structure binding definition. This handles one or more child components, * which may be ordered or unordered. * * @author Dennis M. Sosnoski * @version 1.0 */ public class NestedStructure extends NestedBase { // // Method definitions used in code generation private static final String CHECK_ISSTART_NAME = "org.jibx.runtime.impl.UnmarshallingContext.isStart"; private static final String CHECK_ISSTART_SIGNATURE = "()Z"; private static final String SKIP_ELEMENT_NAME = "org.jibx.runtime.impl.UnmarshallingContext.skipElement"; private static final String SKIP_ELEMENT_SIGNATURE = "()V"; private static final String THROW_EXCEPTION_NAME = "org.jibx.runtime.impl.UnmarshallingContext.throwNameException"; private static final String THROW_EXCEPTION_SIGNATURE = "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"; // // Instance data /** Child supplying ID for bound class. */ private IComponent m_idChild; /** Flag for choice of child content (used by subclasses). */ protected final boolean m_isChoice; /** Flag for duplicate values allowed when unmarshalling unordered group. */ private final boolean m_allowDuplicates; /** Flag for structure has associated object. */ private boolean m_hasObject; /** Flag for already linked (to avoid multiple passes). */ private boolean m_isLinked; /** * Constructor. * * @param parent containing binding definition context * @param objc current object context * @param ord ordered content flag * @param choice choice content flag * @param flex flexible element handling flag * @param ctx define context for structure flag * @param hasobj has associated object flag * @param dupl allow duplicates in unordered group flag */ public NestedStructure(IContainer parent, IContextObj objc, boolean ord, boolean choice, boolean flex, boolean ctx, boolean hasobj, boolean dupl) { super(parent, objc, ord, flex, ctx); m_isChoice = choice; m_hasObject = hasobj; m_allowDuplicates = dupl; } /** * Set the object context. * * @param objc object context */ public void setObjectContext(IContextObj objc) { m_hasObject = false; } // // IComponent interface method definitions public boolean hasAttribute() { return m_attributes != null && m_attributes.size() > 0; } public void genAttrPresentTest(ContextMethodBuilder mb) throws JiBXException { if (m_attributes != null && m_attributes.size() > 0) { // if single possiblity just test it directly int count = m_attributes.size(); if (count == 1) { ((IComponent)m_attributes.get(0)).genAttrPresentTest(mb); } else { // generate code for chained test with branches to found exit BranchWrapper[] tofound = new BranchWrapper[count]; for (int i = 0; i < count; i++) { IComponent comp = (IComponent)m_attributes.get(i); comp.genAttrPresentTest(mb); tofound[i] = mb.appendIFNE(this); } // fall off end of loop to push "false" on stack and jump to end mb.appendICONST_0(); BranchWrapper toend = mb.appendUnconditionalBranch(this); // generate found target to push "true" on stack and continue for (int i = 0; i < count; i++) { mb.targetNext(tofound[i]); } mb.appendICONST_1(); mb.targetNext(toend); } } else { throw new IllegalStateException ("Internal error - no attributes present"); } } public void genAttributeUnmarshal(ContextMethodBuilder mb) throws JiBXException { if (m_attributes != null && m_attributes.size() > 0) { for (int i = 0; i < m_attributes.size(); i++) { IComponent attr = (IComponent)m_attributes.get(i); attr.genAttributeUnmarshal(mb); } } else { throw new IllegalStateException ("Internal error - no attributes present"); } } public void genAttributeMarshal(ContextMethodBuilder mb) throws JiBXException { if (m_attributes != null && m_attributes.size() > 0) { for (int i = 0; i < m_attributes.size(); i++) { IComponent attr = (IComponent)m_attributes.get(i); attr.genAttributeMarshal(mb); } } else { throw new IllegalStateException ("Internal error - no attributes present"); } } public boolean hasContent() { return m_contents.size() > 0; } public void genContentUnmarshal(ContextMethodBuilder mb) throws JiBXException { if (m_contents.size() > 0) { // check for ordered or unordered content if (m_isOrdered) { // just generate unmarshal code for each component in order for (int i = 0; i < m_contents.size(); i++) { IComponent child = (IComponent)m_contents.get(i); child.genContentUnmarshal(mb); } } else { // start by finding the number of required elements int count = m_contents.size(); int nreq = 0; for (int i = 0; i < count; i++) { if (!((IComponent)m_contents.get(i)).isOptional()) { nreq++; } } // create array for tracking elements seen boolean useflag = nreq > 0 || !m_allowDuplicates; if (useflag) { mb.appendLoadConstant(count); mb.appendCreateArray("boolean"); mb.defineSlot(this, ClassItem.typeFromName("boolean[]")); } // generate unmarshal loop code that checks for each component, // branching to the next component until one is found and // exiting the loop only when no component is matched (or in // the case of flexible unmarshalling, only exiting the loop // when the enclosing end tag is seen). this uses the array(s) // of booleans to track elements seen and detect duplicates. BranchWrapper link = null; // TODO: initialize default values BranchTarget first = mb.appendTargetNOP(); BranchWrapper[] toends; if (m_isChoice) { toends = new BranchWrapper[count+1]; } else { toends = new BranchWrapper[1]; } for (int i = 0; i < count; i++) { // start with basic test code if (link != null) { mb.targetNext(link); } IComponent child = (IComponent)m_contents.get(i); child.genContentPresentTest(mb); link = mb.appendIFEQ(this); // check for duplicate (if enforced) if (!m_allowDuplicates) { genFlagTest(true, i, "Duplicate element ", child.getWrapperName(), mb); } // set flag for element seen if (useflag || !(child.isOptional() && m_allowDuplicates)) { mb.appendLoadLocal(mb.getSlot(this)); mb.appendLoadConstant(i); mb.appendLoadConstant(1); mb.appendASTORE("boolean"); } // generate actual unmarshalling code child.genContentUnmarshal(mb); BranchWrapper next = mb.appendUnconditionalBranch(this); if (m_isChoice) { toends[i+1] = next; } else { next.setTarget(first, mb); } } // handle comparison fall through depending on flexible flag if (m_isFlexible) { if (link != null) { // exit loop if not positioned at element start mb.targetNext(link); mb.loadContext(); mb.appendCallVirtual(CHECK_ISSTART_NAME, CHECK_ISSTART_SIGNATURE); toends[0] = mb.appendIFEQ(this); // ignore unknown element and loop back to start mb.loadContext(); mb.appendCallVirtual(SKIP_ELEMENT_NAME, SKIP_ELEMENT_SIGNATURE); mb.appendUnconditionalBranch(this).setTarget(first, mb); } } else { // set final test failure branch to fall through loop toends[0] = link; } // patch all branches that exit loop mb.targetNext(toends); // handle required element present tests if (nreq > 0) { for (int i = 0; i < count; i++) { IComponent child = (IComponent)m_contents.get(i); if (!child.isOptional()) { genFlagTest(false, i, "Missing required element ", child.getWrapperName(), mb); } } } mb.freeSlot(this); } } else { throw new IllegalStateException ("Internal error - no content present"); } } /** * Helper method to generate test code for value in boolean array. If the * test fails, the generated code throws an exception with the appropriate * error message. * * @param cond flag setting resulting in exception * @param pos position of element in list of child components * @param msg basic error message when test fails * @param name * @param mb */ private void genFlagTest(boolean cond, int pos, String msg, NameDefinition name, ContextMethodBuilder mb) { // generate code to load array item value mb.appendLoadLocal(mb.getSlot(this)); mb.appendLoadConstant(pos); mb.appendALOAD("boolean"); // append branch for case where test is passed BranchWrapper ifgood; if (cond) { ifgood = mb.appendIFEQ(this); } else { ifgood = mb.appendIFNE(this); } // generate exception for test failed mb.loadContext(); mb.appendLoadConstant(msg); if (name == null) { mb.appendACONST_NULL(); mb.appendLoadConstant("(unknown name, position " + pos + " in binding structure)"); } else { name.genPushUriPair(mb); } mb.appendCallVirtual(THROW_EXCEPTION_NAME, THROW_EXCEPTION_SIGNATURE); // set target for success branch on test mb.targetNext(ifgood); } public void genContentMarshal(ContextMethodBuilder mb) throws JiBXException { if (m_contents.size() > 0) { for (int i = 0; i < m_contents.size(); i++) { IComponent content = (IComponent)m_contents.get(i); content.genContentMarshal(mb); } } else { throw new IllegalStateException ("Internal error - no content present"); } } public String getType() { if (m_hasObject) { return super.getType(); } else if (m_attributes != null && m_attributes.size() > 0) { return ((IComponent)m_attributes.get(0)).getType(); } else if (m_contents.size() > 0) { return ((IComponent)m_contents.get(0)).getType(); } else { throw new IllegalStateException("Internal error - " + "no type defined for structure"); } } public boolean hasId() { return m_idChild != null; } public void genLoadId(ContextMethodBuilder mb) throws JiBXException { if (m_idChild == null) { throw new IllegalStateException("No ID child defined"); } else { m_idChild.genLoadId(mb); } } public void setLinkages() throws JiBXException { if (!m_isLinked) { // set flag first in case of recursive reference m_isLinked = true; // process all child components to link and sort by type int i = 0; while (i < m_contents.size()) { IComponent comp = (IComponent)m_contents.get(i); comp.setLinkages(); if (comp.hasAttribute()) { if (m_attributes == null) { m_attributes = new ArrayList(); } m_attributes.add(comp); } if (!comp.hasContent()) { m_contents.remove(i); } else { i++; } } } } // DEBUG public void print(int depth) { BindingDefinition.indent(depth); System.out.print("structure " + (m_isChoice ? "choice" : (m_isOrdered ? "ordered" : "unordered"))); if (m_allowDuplicates) { System.out.print(", duplicates allowed"); } if (isFlexible()) { System.out.print(", flexible"); } if (m_idChild != null) { System.out.print(" (ID)"); } System.out.println(); for (int i = 0; i < m_contents.size(); i++) { IComponent comp = (IComponent)m_contents.get(i); comp.print(depth+1); } if (m_attributes != null) { for (int i = 0; i < m_attributes.size(); i++) { IComponent comp = (IComponent)m_attributes.get(i); comp.print(depth+1); } } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/def/ObjectBinding.java0000644000175000017500000011535410651465024025243 0ustar moellermoeller/* Copyright (c) 2003-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import org.apache.bcel.Constants; import org.apache.bcel.generic.*; import org.jibx.binding.classes.*; import org.jibx.runtime.JiBXException; import org.jibx.runtime.Utility; /** * Binding modifiers that apply to a class reference. This adds the methods used * for handling binding operations to the object class, then generates calls to * the added methods as this binding definition is used. * * @author Dennis M. Sosnoski */ public class ObjectBinding extends PassThroughComponent implements IComponent, IContextObj { // // Constants and such related to code generation. // recognized marshal hook method (pre-get) signatures. private static final String[] MARSHAL_HOOK_SIGNATURES = { "(Lorg/jibx/runtime/IMarshallingContext;)V", "(Ljava/lang/Object;)V", "()V" }; // recognized factory hook method signatures. private static final String[] FACTORY_HOOK_SIGNATURES = { "(Lorg/jibx/runtime/IUnmarshallingContext;)", "(Ljava/lang/Object;)", "()" }; // recognized unmarshal hook method (pre-set, post-set) signatures. private static final String[] UNMARSHAL_HOOK_SIGNATURES = { "(Lorg/jibx/runtime/IUnmarshallingContext;)V", "(Ljava/lang/Object;)V", "()V" }; // definitions used in generating calls to user defined methods private static final String UNMARSHAL_GETSTACKTOPMETHOD = "org.jibx.runtime.impl.UnmarshallingContext.getStackTop"; private static final String MARSHAL_GETSTACKTOPMETHOD = "org.jibx.runtime.impl.MarshallingContext.getStackTop"; private static final String GETSTACKTOP_SIGNATURE = "()Ljava/lang/Object;"; private static final String MARSHALLING_CONTEXT = "org.jibx.runtime.impl.MarshallingContext"; private static final String UNMARSHALLING_CONTEXT = "org.jibx.runtime.impl.UnmarshallingContext"; private static final String UNMARSHAL_PARAMETER_SIGNATURE = "(Lorg/jibx/runtime/impl/UnmarshallingContext;)"; private static final String UNMARSHAL_PUSHOBJECTMETHOD = "org.jibx.runtime.impl.UnmarshallingContext.pushObject"; private static final String UNMARSHAL_PUSHTRACKEDOBJECTMETHOD = "org.jibx.runtime.impl.UnmarshallingContext.pushTrackedObject"; private static final String MARSHAL_PUSHOBJECTMETHOD = "org.jibx.runtime.impl.MarshallingContext.pushObject"; private static final String PUSHOBJECT_SIGNATURE = "(Ljava/lang/Object;)V"; private static final String UNMARSHAL_POPOBJECTMETHOD = "org.jibx.runtime.impl.UnmarshallingContext.popObject"; private static final String MARSHAL_POPOBJECTMETHOD = "org.jibx.runtime.impl.MarshallingContext.popObject"; private static final String POPOBJECT_SIGNATURE = "()V"; // definitions for methods added to mapped class private static final String NEWINSTANCE_SUFFIX = "_newinstance"; private static final String UNMARSHAL_ATTR_SUFFIX = "_unmarshalAttr"; private static final String MARSHAL_ATTR_SUFFIX = "_marshalAttr"; private static final String UNMARSHAL_SUFFIX = "_unmarshal"; private static final String MARSHAL_SUFFIX = "_marshal"; // definitions for source position tracking private static final String SOURCE_TRACKING_INTERFACE = "org.jibx.runtime.impl.ITrackSourceImpl"; private static final String SETSOURCE_METHODNAME = "jibx_setSource"; private static final Type[] SETSOURCE_ARGS = { Type.STRING, Type.INT, Type.INT }; private static final String SOURCEDOCUMENT_FIELDNAME ="jibx_sourceDocument"; private static final String SOURCELINE_FIELDNAME = "jibx_sourceLine"; private static final String SOURCECOLUMN_FIELDNAME = "jibx_sourceColumn"; private static final String SOURCENAME_METHODNAME = "jibx_getDocumentName"; private static final String SOURCELINE_METHODNAME = "jibx_getLineNumber"; private static final String SOURCECOLUMN_METHODNAME = "jibx_getColumnNumber"; private static final Type[] EMPTY_ARGS = {}; // // Actual instance data. /** Containing binding definition structure. */ private final IContainer m_container; /** Class linked to mapping. */ private BoundClass m_class; /** Object factory method. */ private final ClassItem m_factoryMethod; /** Preset method for object. */ private final ClassItem m_preSetMethod; /** Postset method for object. */ private final ClassItem m_postSetMethod; /** Preget method for object. */ private final ClassItem m_preGetMethod; /** Type to be used for creating new instances. */ private final ClassFile m_createClass; /** Generated new instance method. */ private ClassItem m_newInstanceMethod; /** Flag for recursion while generating attribute unmarshal. */ private boolean m_lockAttributeUnmarshal; /** Flag for recursion while generating attribute marshal. */ private boolean m_lockAttributeMarshal; /** Flag for recursion while generating attribute unmarshal. */ private boolean m_lockContentUnmarshal; /** Flag for recursion while generating attribute marshal. */ private boolean m_lockContentMarshal; /** Signature used for unmarshal methods. */ private String m_unmarshalSignature; /** Name for unmarshal attribute method (null unless generation started). */ private String m_unmarshalAttributeName; /** Name for unmarshal content method (null unless generation started). */ private String m_unmarshalContentName; /** Flag for static unmarshal methods. */ private boolean m_isStaticUnmarshal; /** Flag for static marshal methods. */ private boolean m_isStaticMarshal; /** Signature used for marshal methods. */ private String m_marshalSignature; /** Name for marshal attribute method (null unless generation started). */ private String m_marshalAttributeName; /** Name for marshal content method (null unless generation istarted). */ private String m_marshalContentName; /** Generated unmarshal attribute method. */ private ClassItem m_unmarshalAttributeMethod; /** Generated unmarshal content method. */ private ClassItem m_unmarshalContentMethod; /** Generated marshal attribute method. */ private ClassItem m_marshalAttributeMethod; /** Generated marshal content method. */ private ClassItem m_marshalContentMethod; /** Child supplying instance identifier value. */ private IComponent m_idChild; /** Flag for "this" reference, meaning that there's no separate object * instance created. */ private boolean m_isThisBinding; /** * Constructor. This initializes the definition context to be the same as * the parent's. Subclasses may change this definition context if * appropriate. * * @param contain containing binding definition component * @param objc current object context * @param type fully qualified class name for bound object * @param fact user new instance factory method * @param pres user preset method for unmarshalling * @param posts user postset method for unmarshalling * @param pget user preget method for marshalling * @param ctype type to use for creating new instance (null if * not specified) * @throws JiBXException if method not found */ public ObjectBinding(IContainer contain, IContextObj objc, String type, String fact, String pres, String posts, String pget, String ctype) throws JiBXException { // initialize the basics m_container = contain; BoundClass ctxc = (objc == null) ? null : objc.getBoundClass(); m_class = BoundClass.getInstance(type, ctxc); ClassFile cf = m_class.getClassFile(); if (ctype == null) { m_createClass = cf; } else { m_createClass = ClassCache.getClassFile(ctype); } // check instance creation for unmarshalling if (fact == null) { m_factoryMethod = null; } else { // look up supplied static factory method int split = fact.lastIndexOf('.'); if (split >= 0) { // verify the method is defined String cname = fact.substring(0, split); String mname = fact.substring(split+1); ClassFile mcf = ClassCache.getClassFile(cname); m_factoryMethod = mcf.getMethod(mname, FACTORY_HOOK_SIGNATURES); if (m_factoryMethod == null) { throw new JiBXException("Factory method " + fact + " not found"); } else { // force access if necessary m_factoryMethod.makeAccessible(cf); } } else { m_factoryMethod = null; } if (m_factoryMethod == null) { throw new JiBXException("Factory method " + fact + " not found."); } } // look up other method names as members of class if (pres == null) { m_preSetMethod = null; } else { m_preSetMethod = cf.getMethod(pres, UNMARSHAL_HOOK_SIGNATURES); if (m_preSetMethod == null) { throw new JiBXException("User method " + pres + " not found."); } } if (posts == null) { m_postSetMethod = null; } else { m_postSetMethod = cf.getMethod(posts, UNMARSHAL_HOOK_SIGNATURES); if (m_postSetMethod == null) { throw new JiBXException("User method " + posts + " not found."); } } if (pget == null) { m_preGetMethod = null; } else { m_preGetMethod = cf.getMethod(pget, MARSHAL_HOOK_SIGNATURES); if (m_preGetMethod == null) { throw new JiBXException("User method " + pget + " not found."); } } } /** * Abstract binding copy constructor. This is used to create a variation of * the object binding for a mapping which will be used for "this" * references. The "this" reference handling differs only in the code * generation, where it skips adding the source tracking interfaces and * does not push an instance of the object on the marshalling or * unmarshalling stack (since the object will already be there). This method * is only to be used before code generation. * * @param base original object binding */ public ObjectBinding(ObjectBinding base) { m_container = base.m_container; m_class = base.m_class; m_factoryMethod = null; m_preSetMethod = base.m_preSetMethod; m_postSetMethod = base.m_postSetMethod; m_preGetMethod = base.m_preGetMethod; m_createClass = base.m_createClass; m_idChild = base.m_idChild; m_component = base.m_component; m_isThisBinding = true; } /** * Copy constructor. This is used in handling abstract mappings, where the * properties of the mapping definition object binding need to be copied for * each use of that binding. * * @param contain binding definition component for constructed copy * @param base instance to be copied */ public ObjectBinding(IContainer contain, ObjectBinding base) { m_container = contain; m_class = base.m_class; m_factoryMethod = base.m_factoryMethod; m_preSetMethod = base.m_preSetMethod; m_postSetMethod = base.m_postSetMethod; m_preGetMethod = base.m_preGetMethod; m_newInstanceMethod = base.m_newInstanceMethod; m_unmarshalSignature = base.m_unmarshalSignature; m_unmarshalAttributeName = base.m_unmarshalAttributeName; m_unmarshalContentName = base.m_unmarshalContentName; m_isStaticUnmarshal = base.m_isStaticUnmarshal; m_isStaticMarshal = base.m_isStaticMarshal; m_marshalSignature = base.m_marshalSignature; m_marshalAttributeName = base.m_marshalAttributeName; m_marshalContentName = base.m_marshalAttributeName; m_marshalContentName = base.m_marshalContentName; m_unmarshalAttributeMethod = base.m_unmarshalAttributeMethod; m_unmarshalContentMethod = base.m_unmarshalContentMethod; m_marshalAttributeMethod = base.m_marshalAttributeMethod; m_marshalContentMethod = base.m_marshalContentMethod; m_createClass = base.m_createClass; m_idChild = base.m_idChild; m_component = base.m_component; } /** * Generate code for calling a user supplied method. The object methods * support three signature variations, with no parameters, with the * marshalling or unmarshalling context, or with the owning object. * * @param in flag for unmarshalling method * @param method information for method being called * @param mb method builder for generated code */ private void genUserMethodCall(boolean in, ClassItem method, ContextMethodBuilder mb) { // load object reference for virtual call if (!method.isStatic()) { mb.loadObject(); } // check if parameter required for call if (method.getArgumentCount() > 0) { // generate code to load context, then get containing object if // needed for call mb.loadContext(); String type = method.getArgumentType(0); if ("java.lang.Object".equals(type)) { String name = in ? UNMARSHAL_GETSTACKTOPMETHOD : MARSHAL_GETSTACKTOPMETHOD; mb.appendCallVirtual(name, GETSTACKTOP_SIGNATURE); } } // generate appropriate form of call to user method mb.appendCall(method); mb.addMethodExceptions(method); } /** * Generate code to create an instance of the object for this mapping. This * convenience method generates the actual code for creating an instance of * an object. The generated code leaves the created object reference on the * stack. * * @param mb method builder * @return true if able to create instance, false * if not * @throws JiBXException if error in generating code */ private boolean genNewInstanceCode(ContextMethodBuilder mb) throws JiBXException { // check for factory supplied to create instance if (m_factoryMethod == null) { if (m_createClass.isArray()) { // construct array instance directly with basic size mb.appendLoadConstant(Utility.MINIMUM_GROWN_ARRAY_SIZE); String type = m_createClass.getName(); mb.appendCreateArray(type.substring(0, type.length()-2)); return true; } else if (m_createClass.isInterface()) { // cannot create instance, throw exception mb.appendCreateNew(MethodBuilder.FRAMEWORK_EXCEPTION_CLASS); mb.appendDUP(); mb.appendLoadConstant("Cannot create instance of interface " + m_createClass.getName()); mb.appendCallInit(MethodBuilder.FRAMEWORK_EXCEPTION_CLASS, MethodBuilder.EXCEPTION_CONSTRUCTOR_SIGNATURE1); mb.appendThrow(); return false; } else { // make sure we have a no argument constructor ClassItem cons = m_createClass.getInitializerMethod("()V"); if (cons == null) { m_createClass.addDefaultConstructor(); } else { cons.makeAccessible(m_class.getMungedFile()); } // no factory, so create an instance, duplicate the // reference, and then call the null constructor mb.appendCreateNew(m_createClass.getName()); mb.appendDUP(); mb.appendCallInit(m_createClass.getName(),"()V"); return true; } } else { // generate call to factory method genUserMethodCall(true, m_factoryMethod, mb); mb.appendCreateCast(m_factoryMethod.getTypeName(), m_class.getClassName()); return true; } } /** * Generate call to new instance creation method for object. This * convenience method just generates code to call the generated new * instance method added to the class definition. * * @param mb method builder * @throws JiBXException if error in configuration */ private void genNewInstanceCall(ContextMethodBuilder mb) throws JiBXException { // check if new instance method needs to be added to class if (m_newInstanceMethod == null) { // set up for constructing new method String name = m_container.getBindingRoot().getPrefix() + NEWINSTANCE_SUFFIX; String sig = UNMARSHAL_PARAMETER_SIGNATURE + m_class.getClassFile().getSignature(); ClassFile cf = m_class.getMungedFile(); ContextMethodBuilder meth = new ContextMethodBuilder(name, sig, cf, Constants.ACC_PUBLIC|Constants.ACC_STATIC, -1, m_class.getClassName(), 0, UNMARSHALLING_CONTEXT); // generate the code to build a new instance if (genNewInstanceCode(meth)) { // finish method code with return of new instance meth.appendReturn(m_class.getClassName()); } m_newInstanceMethod = m_class.getUniqueMethod(meth).getItem(); } // generate code to call created new instance method mb.loadContext(UNMARSHALLING_CONTEXT); mb.appendCall(m_newInstanceMethod); } /** * Generate code to handle unmarshal source location tracking. This * convenience method generates the member variables and method used to * support setting the source location, the methods used to access the * information, and also adds the appropriate interfaces to the class. * * @throws JiBXException if error in generating code */ private void genTrackSourceCode() throws JiBXException { ClassFile cf = m_class.getMungedFile(); if (!m_isThisBinding && m_class.isDirectAccess() && !cf.isAbstract() && cf.addInterface(SOURCE_TRACKING_INTERFACE)) { // add position tracking fields to class ClassItem srcname = cf.addPrivateField("java.lang.String;", SOURCEDOCUMENT_FIELDNAME); ClassItem srcline = cf.addPrivateField("int", SOURCELINE_FIELDNAME); ClassItem srccol = cf.addPrivateField("int", SOURCECOLUMN_FIELDNAME); // add method for setting the source information MethodBuilder mb = new ExceptionMethodBuilder(SETSOURCE_METHODNAME, Type.VOID, SETSOURCE_ARGS, cf, Constants.ACC_PUBLIC); mb.appendLoadLocal(0); mb.appendLoadLocal(1); mb.appendPutField(srcname); mb.appendLoadLocal(0); mb.appendLoadLocal(2); mb.appendPutField(srcline); mb.appendLoadLocal(0); mb.appendLoadLocal(3); mb.appendPutField(srccol); mb.appendReturn(); mb.codeComplete(false); mb.addMethod(); // add methods for getting the source information mb = new ExceptionMethodBuilder(SOURCENAME_METHODNAME, Type.STRING, EMPTY_ARGS, cf, Constants.ACC_PUBLIC); mb.appendLoadLocal(0); mb.appendGetField(srcname); mb.appendReturn(Type.STRING); mb.codeComplete(false); mb.addMethod(); mb = new ExceptionMethodBuilder(SOURCELINE_METHODNAME, Type.INT, EMPTY_ARGS, cf, Constants.ACC_PUBLIC); mb.appendLoadLocal(0); mb.appendGetField(srcline); mb.appendReturn("int"); mb.codeComplete(false); mb.addMethod(); mb = new ExceptionMethodBuilder(SOURCECOLUMN_METHODNAME, Type.INT, EMPTY_ARGS, cf, Constants.ACC_PUBLIC); mb.appendLoadLocal(0); mb.appendGetField(srccol); mb.appendReturn("int"); mb.codeComplete(false); mb.addMethod(); } } /** * Construct fullly-qualified class and method name for method under * construction. * * @param mb method to be named * @return fully-qualified class and method name */ private String fullMethodName(ContextMethodBuilder mb) { return mb.getClassFile().getName() + '.' + mb.getName(); } /** * Construct fully-qualified class and method name for constructed method. * * @param item method to be named * @return fully-qualified class and method name */ private String fullMethodName(ClassItem item) { return item.getClassFile().getName() + '.' + item.getName(); } /** * Generate call to a constructed unmarshal method. * * @param name * @param mb */ private void genUnmarshalCall(String name, ContextMethodBuilder mb) { if (m_isStaticUnmarshal) { mb.appendCallStatic(name, m_unmarshalSignature); } else { mb.appendCallVirtual(name, m_unmarshalSignature); } } /** * Generate call to a constructed marshal method. * * @param name * @param mb */ private void genMarshalCall(String name, ContextMethodBuilder mb) { if (m_isStaticMarshal) { mb.appendCallStatic(name, m_marshalSignature); } else { mb.appendCallVirtual(name, m_marshalSignature); } } /** * Generate call to attribute unmarshal method for object. This convenience * method just generates code to call the generated unmarshal method added * to the class definition. The code generated prior to this call must have * loaded a reference to the object to be unmarshalled on the stack, and the * generated code returns the (possibly different, in the case of arrays) * object on the stack. * * @param mb method builder * @throws JiBXException if error in configuration */ private void genUnmarshalAttributeCall(ContextMethodBuilder mb) throws JiBXException { // check if unmarshal method needs to be added to class if (m_unmarshalAttributeMethod == null) { if (m_unmarshalAttributeName == null) { // set up for constructing new method String name = m_container.getBindingRoot().getPrefix() + UNMARSHAL_ATTR_SUFFIX; UnmarshalBuilder meth = new UnmarshalBuilder(name, m_class.getClassFile(), m_class.getMungedFile()); m_unmarshalAttributeName = fullMethodName(meth); m_unmarshalSignature = meth.getSignature(); m_isStaticUnmarshal = meth.isStaticMethod(); // if preset method supplied add code to call it if (m_preSetMethod != null) { meth.loadObject(); genUserMethodCall(true, m_preSetMethod, meth); } // push object being unmarshalled to unmarshaller stack if (!m_isThisBinding) { meth.loadContext(); meth.loadObject(); meth.appendCallVirtual(UNMARSHAL_PUSHTRACKEDOBJECTMETHOD, PUSHOBJECT_SIGNATURE); } // generate the actual unmarshalling code in method meth.loadObject(); m_component.genAttributeUnmarshal(meth); // pop object from unmarshal stack if (!m_isThisBinding) { meth.loadContext(); meth.appendCallVirtual(UNMARSHAL_POPOBJECTMETHOD, POPOBJECT_SIGNATURE); } // if postset method supplied and no content add code to call it if (m_postSetMethod != null && !hasContent()) { genUserMethodCall(true, m_postSetMethod, meth); } // finish by returning object meth.loadObject(); meth.appendReturn(m_class.getClassFile().getName()); // add method to class if (m_lockAttributeUnmarshal) { m_unmarshalAttributeMethod = m_class.getUniqueNamed(meth).getItem(); } else { m_unmarshalAttributeMethod = m_class.getUniqueMethod(meth).getItem(); m_unmarshalAttributeName = fullMethodName(m_unmarshalAttributeMethod); } } else { m_lockAttributeUnmarshal = true; } } // generate code to call created unmarshal method mb.loadContext(UNMARSHALLING_CONTEXT); genUnmarshalCall(m_unmarshalAttributeName, mb); } /** * Generate call to attribute marshal method for object. This convenience * method just generates code to call the generated marshal method added to * the class definition. The code generated prior to this call must have * loaded a reference to the object to be marshalled on the stack. * * @param mb method builder * @throws JiBXException if error in configuration */ private void genMarshalAttributeCall(ContextMethodBuilder mb) throws JiBXException { // check if marshal method needs to be added to class if (m_marshalAttributeMethod == null) { if (m_marshalAttributeName == null) { // set up for constructing new method String name = m_container.getBindingRoot().getPrefix() + MARSHAL_ATTR_SUFFIX; MarshalBuilder meth = new MarshalBuilder(name, m_class.getClassFile(), m_class.getMungedFile()); m_marshalAttributeName = fullMethodName(meth); m_marshalSignature = meth.getSignature(); m_isStaticMarshal = meth.isStaticMethod(); // if preget method supplied add code to call it if (m_preGetMethod != null) { genUserMethodCall(false, m_preGetMethod, meth); } // push object being marshalled to marshaller stack if (!m_isThisBinding) { meth.loadContext(); meth.loadObject(); meth.appendCallVirtual(MARSHAL_PUSHOBJECTMETHOD, PUSHOBJECT_SIGNATURE); } // generate actual marshalling code meth.loadContext(); m_component.genAttributeMarshal(meth); // pop object from stack if (!m_isThisBinding) { meth.loadContext(); meth.appendCallVirtual(MARSHAL_POPOBJECTMETHOD, POPOBJECT_SIGNATURE); } // finish and add constructed method to class meth.appendReturn(); if (m_lockAttributeMarshal) { m_marshalAttributeMethod = m_class.getUniqueNamed(meth).getItem(); } else { m_marshalAttributeMethod = m_class.getUniqueMethod(meth).getItem(); m_marshalAttributeName = fullMethodName(m_marshalAttributeMethod); } } else { m_lockAttributeMarshal = true; } } // generate code to call created marshal method // if (!m_directAccess) { mb.loadContext(MARSHALLING_CONTEXT); // } genMarshalCall(m_marshalAttributeName, mb); } /** * Generate call to content unmarshal method for object. This convenience * method just generates code to call the generated unmarshal method added * to the class definition. The code generated prior to this call must have * loaded a reference to the object to be unmarshalled on the stack, and the * generated code returns the (possibly different, in the case of arrays) * object on the stack. * * @param mb method builder * @throws JiBXException if error in configuration */ private void genUnmarshalContentCall(ContextMethodBuilder mb) throws JiBXException { // check if unmarshal method needs to be added to class if (m_unmarshalContentMethod == null) { if (m_unmarshalContentName == null) { // set up for constructing new method String name = m_container.getBindingRoot().getPrefix() + UNMARSHAL_SUFFIX; UnmarshalBuilder meth = new UnmarshalBuilder(name, m_class.getClassFile(), m_class.getMungedFile()); m_unmarshalContentName = fullMethodName(meth); m_unmarshalSignature = meth.getSignature(); m_isStaticUnmarshal = meth.isStaticMethod(); // if preset method supplied add code to call it if (!hasAttribute() && m_preSetMethod != null) { meth.loadObject(); genUserMethodCall(true, m_preSetMethod, meth); } // push object being unmarshalled to unmarshaller stack if (!m_isThisBinding) { meth.loadContext(); meth.loadObject(); String mname = hasAttribute() ? UNMARSHAL_PUSHOBJECTMETHOD : UNMARSHAL_PUSHTRACKEDOBJECTMETHOD; meth.appendCallVirtual(mname, PUSHOBJECT_SIGNATURE); } // generate the actual unmarshalling code in method meth.loadObject(); m_component.genContentUnmarshal(meth); // pop object from unmarshal stack if (!m_isThisBinding) { meth.loadContext(); meth.appendCallVirtual(UNMARSHAL_POPOBJECTMETHOD, POPOBJECT_SIGNATURE); } // if postset method supplied and no attributes add code to call if (m_postSetMethod != null) { genUserMethodCall(true, m_postSetMethod, meth); } // finish by returning object meth.loadObject(); meth.appendReturn(m_class.getClassFile().getName()); // add method to class if (m_lockContentUnmarshal) { m_unmarshalContentMethod = m_class.getUniqueNamed(meth).getItem(); } else { m_unmarshalContentMethod = m_class.getUniqueMethod(meth).getItem(); m_unmarshalContentName = fullMethodName(m_unmarshalContentMethod); } } else { m_lockContentUnmarshal = true; } } // generate code to call created unmarshal method mb.loadContext(UNMARSHALLING_CONTEXT); genUnmarshalCall(m_unmarshalContentName, mb); } /** * Generate call to content marshal method for object. This convenience * method just generates code to call the generated marshal method added to * the class definition. The code generated prior to this call must have * loaded a reference to the object to be marshalled on the stack. * * @param mb method builder * @throws JiBXException if error in configuration */ private void genMarshalContentCall(ContextMethodBuilder mb) throws JiBXException { // check if marshal method needs to be added to class if (m_marshalContentMethod == null) { if (m_marshalContentName == null) { // set up for constructing new method String name = m_container.getBindingRoot().getPrefix() + MARSHAL_SUFFIX; MarshalBuilder meth = new MarshalBuilder(name, m_class.getClassFile(), m_class.getMungedFile()); m_marshalContentName = fullMethodName(meth); m_marshalSignature = meth.getSignature(); m_isStaticMarshal = meth.isStaticMethod(); // if preget method supplied and no attributes add code to call it if (m_preGetMethod != null && !hasAttribute()) { genUserMethodCall(false, m_preGetMethod, meth); } // push object being marshalled to marshaller stack if (!m_isThisBinding) { meth.loadContext(); meth.loadObject(); meth.appendCallVirtual(MARSHAL_PUSHOBJECTMETHOD, PUSHOBJECT_SIGNATURE); } // generate actual marshalling code meth.loadContext(); m_component.genContentMarshal(meth); // pop object from stack if (!m_isThisBinding) { meth.loadContext(); meth.appendCallVirtual(MARSHAL_POPOBJECTMETHOD, POPOBJECT_SIGNATURE); } // finish and add constructed method to class meth.appendReturn(); if (m_lockContentMarshal) { m_marshalContentMethod = m_class.getUniqueNamed(meth).getItem(); } else { m_marshalContentMethod = m_class.getUniqueMethod(meth).getItem(); m_marshalContentName = fullMethodName(m_marshalContentMethod); } } else { m_lockContentMarshal = true; } } // generate code to call created marshal method mb.loadContext(MARSHALLING_CONTEXT); genMarshalCall(m_marshalContentName, mb); } // // IContextObj interface method definitions public BoundClass getBoundClass() { return m_class; } public boolean setIdChild(IComponent child) { if (m_idChild == null) { m_idChild = child; return true; } else { return false; } } // // IComponent interface method definitions public boolean isOptional() { return false; } public void genAttributeUnmarshal(ContextMethodBuilder mb) throws JiBXException { genUnmarshalAttributeCall(mb); } public void genAttributeMarshal(ContextMethodBuilder mb) throws JiBXException { genMarshalAttributeCall(mb); } public void genContentUnmarshal(ContextMethodBuilder mb) throws JiBXException { genUnmarshalContentCall(mb); } public void genContentMarshal(ContextMethodBuilder mb) throws JiBXException { genMarshalContentCall(mb); } public void genNewInstance(ContextMethodBuilder mb) throws JiBXException { genNewInstanceCall(mb); } public String getType() { return m_class.getClassName(); } public boolean hasId() { return m_idChild != null; } public void genLoadId(ContextMethodBuilder mb) throws JiBXException { if (m_idChild == null) { throw new IllegalStateException("Internal error: no id defined"); } else { m_idChild.genLoadId(mb); } } public void setLinkages() throws JiBXException { super.setLinkages(); if (m_container.getBindingRoot().isTrackSource()) { genTrackSourceCode(); } } // DEBUG public void print(int depth) { BindingDefinition.indent(depth); System.out.print("object binding for " + m_class.getClassFile().getName()); if (m_isThisBinding) { System.out.print(" (\"this\" reference)"); } if (m_createClass != null) { System.out.print(" create class " + m_createClass.getName()); } System.out.println(); m_component.print(depth+1); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/def/ObjectStringConversion.java0000644000175000017500000003737210602533642027206 0ustar moellermoeller/* Copyright (c) 2003-2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import org.jibx.binding.classes.*; import org.jibx.runtime.JiBXException; /** * Object string conversion handling. Defines serialization handling for * converting objects to and from a String value. The default is * to just use the object toString() method for serialization and * a constructor from a String value for deserialization. * java.lang.String itself is a special case, with no added code * used by default for either serializing or deserializing. * java.lang.Object is also a special case, with no added code * used by default for deserializing (the String value is used * directly). Other classes must either implement toString() and * a constructor from String, or use custom serializers and/or * deserializers. * * @author Dennis M. Sosnoski * @version 1.0 */ public class ObjectStringConversion extends StringConversion { // // Constants for code generation. private static final String TOSTRING_METHOD = "toString"; private static final String TOSTRING_SIGNATURE = "()Ljava/lang/String;"; private static final String FROMSTRING_SIGNATURE = "(Ljava/lang/String;)V"; // // Actual instance data /** Flag for conversion from String needed (type is anything other than String or Object) */ private boolean m_needDeserialize; /** Initializer used for creating instance from String (only used if no conversion needed and no deserializer supplied; may be null) */ private ClassItem m_initFromString; /** Flag for conversion to String needed (type is anything other than String) */ private boolean m_needSerialize; /** toString() method for converting instance to String (only used if conversion needed and no serializer supplied; may be null) */ private ClassItem m_instToString; /** * Constructor. Initializes conversion handling based on the supplied * inherited handling. * * @param type fully qualified name of class handled by conversion * @param inherit conversion information inherited by this conversion * @throws JiBXException if error in configuration */ /*package*/ ObjectStringConversion(String type, ObjectStringConversion inherit) throws JiBXException { super(type, inherit); if (type.equals(inherit.m_typeName)) { m_needDeserialize = inherit.m_needDeserialize; m_initFromString = inherit.m_initFromString; m_needSerialize = inherit.m_needSerialize; m_instToString = inherit.m_instToString; } else { initMethods(); } } /** * Constructor. Initializes conversion handling based on argument values. * This form is only used for constructing the default set of conversions. * Because of this, it throws an unchecked exception on error. * * @param dflt default value object (wrapped value for primitive types, * otherwise String) * @param ser fully qualified name of serialization method * @param deser fully qualified name of deserialization method * @param type fully qualified name of class handled by conversion */ /*package*/ ObjectStringConversion(Object dflt, String ser, String deser, String type) { super(dflt, ser, deser, type); try { initMethods(); } catch (JiBXException ex) { throw new IllegalArgumentException(ex.getMessage()); } } /** * Initialize methods used for conversion of types without serializer or * deserializer. Sets flags for types needed, with errors thrown at time * of attempted use rather than at definition time. That offers the * advantages of simpler handling (we don't need to know which directions * are supported in a binding) and more flexibility (can support nested * partial definitions cleanly). */ private void initMethods() throws JiBXException { if (!"java.lang.String".equals(m_typeName)) { m_needSerialize = true; m_needDeserialize = !"java.lang.Object".equals(m_typeName); ClassFile cf = ClassCache.getClassFile(m_typeName); m_initFromString = cf.getInitializerMethod(FROMSTRING_SIGNATURE); m_instToString = cf.getMethod(TOSTRING_METHOD, TOSTRING_SIGNATURE); } } /** * Generate code to convert String representation. The * code generated by this method assumes that the String * value has already been pushed on the stack. It consumes this and * leaves the converted value on the stack. * * @param mb method builder */ public void genFromText(ContextMethodBuilder mb) throws JiBXException { // first generate code to duplicate value and check for null, with // duplicate replaced by explicit null if already null (confusing // in the bytecode, but will be optimized out by any native code // generation) mb.appendDUP(); BranchWrapper ifnnull = mb.appendIFNONNULL(this); mb.appendPOP(); mb.appendACONST_NULL(); BranchWrapper toend = mb.appendUnconditionalBranch(this); mb.targetNext(ifnnull); // check if a deserializer is used for this type if (m_deserializer != null) { // just generate call to the deserializer (adding any checked // exceptions thrown by the deserializer to the list needing // handling) mb.addMethodExceptions(m_deserializer); if (m_deserializer.getArgumentCount() > 1) { mb.loadContext(); } mb.appendCall(m_deserializer); } else if (m_initFromString != null) { // generate code to create an instance of object and pass text value // to constructor mb.appendCreateNew(m_typeName); mb.appendDUP_X1(); mb.appendSWAP(); mb.appendCallInit(m_typeName, FROMSTRING_SIGNATURE); } else if (m_needDeserialize) { throw new JiBXException("No deserializer for " + m_typeName + "; define deserializer or constructor from java.lang.String"); } // finish by setting target for null case branch mb.targetNext(toend); } /** * Generate code to parse and convert optional attribute or element. The * code generated by this method assumes that the unmarshalling context * and name information for the attribute or element have already * been pushed on the stack. It consumes these and leaves the converted * value (or converted default value, if the item itself is missing) on * the stack. * * @param attr item is an attribute (vs element) flag * @param mb method builder * @throws JiBXException if error in configuration */ public void genParseOptional(boolean attr, ContextMethodBuilder mb) throws JiBXException { // first part of generated instruction sequence is to push the default // value, then call the appropriate unmarshalling context method to get // the value as a String mb.appendLoadConstant((String)m_default); String name = attr ? UNMARSHAL_OPT_ATTRIBUTE : UNMARSHAL_OPT_ELEMENT; mb.appendCallVirtual(name, UNMARSHAL_OPT_SIGNATURE); // second part is to actually convert to an instance of the type genFromText(mb); } /** * Generate code to parse and convert required attribute or element. The * code generated by this method assumes that the unmarshalling context and * name information for the attribute or element have already been pushed * on the stack. It consumes these and leaves the converted value on the * stack. * * @param attr item is an attribute (vs element) flag * @param mb method builder * @throws JiBXException if error in configuration */ public void genParseRequired(boolean attr, ContextMethodBuilder mb) throws JiBXException { // first part of generated instruction sequence is a call to the // appropriate unmarshalling context method to get the value as a // String String name = attr ? UNMARSHAL_REQ_ATTRIBUTE : UNMARSHAL_REQ_ELEMENT; mb.appendCallVirtual(name, UNMARSHAL_REQ_SIGNATURE); // second part is to actually convert to an instance of the type genFromText(mb); } /** * Shared code generation for converting instance of type to * String. This override of the base class method checks for * serialization using the toString method and implements that * case directly, while calling the base class method for normal handling. * The code generated by this method assumes that the reference to the * instance to be converted is on the stack. It consumes the reference, * replacing it with the corresponding String value. * * @param type fully qualified class name for value on stack * @param mb marshal method builder * @throws JiBXException if error in configuration */ public void genToText(String type, ContextMethodBuilder mb) throws JiBXException { if (m_serializer == null && m_needSerialize) { // report error if no handling available if (m_instToString == null) { throw new JiBXException("No serializer for " + m_typeName + "; define serializer or toString() method"); } else { // generate code to call toString() method of instance (adding // any checked exceptions thrown by the method to the list // needing handling) mb.addMethodExceptions(m_instToString); mb.appendCall(m_instToString); } } else { super.genToText(type, mb); } } /** * Generate code to check if an optional value is not equal to the default. * The code generated by this method assumes that the actual value to be * converted has already been pushed on the stack. It consumes this, * leaving the converted text reference on the stack if it's not equal to * the default value. * * @param type fully qualified class name for value on stack * @param mb method builder * @param extra count of extra values to be popped from stack if missing * @return handle for branch taken when value is equal to the default * (target must be set by caller) * @throws JiBXException if error in configuration */ protected BranchWrapper genToOptionalText(String type, ContextMethodBuilder mb, int extra) throws JiBXException { // check if the default value is just null if (m_default == null) { // generate code to call the serializer and get String value on // stack genToText(type, mb); return null; } else { // start with code to call the serializer and get the String value // on stack genToText(type, mb); // add code to check if the serialized text is different from the // default, by duplicating the returned reference, pushing the // default, and calling the object comparison method. This is // followed by a branch if the comparison says they're not equal // (nonzero result, since it's a boolean value). mb.appendDUP(); mb.appendLoadConstant((String)m_default); mb.appendCallStatic(COMPARE_OBJECTS_METHOD, COMPARE_OBJECTS_SIGNATURE); BranchWrapper iffalse = mb.appendIFEQ(this); // finish by discarding copy of object reference on stack when // equal to the default genPopValues(extra+1, mb); BranchWrapper toend = mb.appendUnconditionalBranch(this); mb.targetNext(iffalse); return toend; } } /** * Check if the type handled by this conversion is of a primitive type. * * @return false to indicate object type */ public boolean isPrimitive() { return false; } /** * Convert text representation into default value object. For object types * this just returns the text value. * * @param text value representation to be converted * @return converted default value object * @throws JiBXException on conversion error */ protected Object convertDefault(String text) throws JiBXException { return text; } /** * Derive from existing formatting information. This allows constructing * a new instance from an existing format of the same or an ancestor * type, with the properties of the existing format copied to the new * instance except where overridden by the supplied values. * * @param type fully qualified name of class handled by conversion * @param ser fully qualified name of serialization method * (null if inherited) * @param dser fully qualified name of deserialization method * (null if inherited) * @param dflt default value text (null if inherited) * @return new instance initialized from existing one * @throws JiBXException if error in configuration information */ public StringConversion derive(String type, String ser, String dser, String dflt) throws JiBXException { if (type == null) { type = m_typeName; } StringConversion inst = new ObjectStringConversion(type, this); if (ser != null) { inst.setSerializer(ser); } if (dser != null) { inst.setDeserializer(dser); } if (dflt != null) { inst.m_default = inst.convertDefault(dflt); } return inst; } }libjibx-java-1.1.6a/build/src/org/jibx/binding/def/OptionalStructureWrapper.java0000644000175000017500000000660510624253474027613 0ustar moellermoeller/* Copyright (c) 2003-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import org.jibx.binding.classes.*; import org.jibx.runtime.JiBXException; /** * Component decorator for optional structure with associated property. This * just handles necessary glue code generation for the marshalling operations, * where the presence of the structure needs to be tested before actually * handling tag generation. */ public class OptionalStructureWrapper extends PassThroughComponent { /** Property definition. */ private final PropertyDefinition m_property; /** Load object for marshalling code generation flag. */ private final boolean m_loadMarshal; /** * Constructor. * * @param wrap wrapped binding component * @param load flag for need to load object for marshalling code */ public OptionalStructureWrapper(IComponent wrap, PropertyDefinition prop, boolean load) { super(wrap); m_property = prop; m_loadMarshal = load; } // // IComponent interface method definitions public void genAttributeMarshal(ContextMethodBuilder mb) throws JiBXException { mb.loadObject(); BranchWrapper ifmiss = m_property.genTest(mb); super.genAttributeMarshal(mb); mb.targetNext(ifmiss); } public void genContentMarshal(ContextMethodBuilder mb) throws JiBXException { mb.loadObject(); BranchWrapper ifmiss = m_property.genTest(mb); if (m_loadMarshal) { mb.loadObject(); m_property.genLoad(mb); } super.genContentMarshal(mb); mb.targetNext(ifmiss); } // DEBUG public void print(int depth) { BindingDefinition.indent(depth); System.out.print("optional structure wrapper " + m_property.toString()); if (m_loadMarshal) { System.out.print(" (load marshal)"); } System.out.println(); m_component.print(depth+1); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/def/PassThroughComponent.java0000644000175000017500000001050510435324110026652 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import org.jibx.binding.classes.ContextMethodBuilder; import org.jibx.runtime.JiBXException; /** * Default component decorator. This just passes through all method calls to * the wrapped component. * * @author Dennis M. Sosnoski * @version 1.0 */ public class PassThroughComponent implements IComponent { /** Property value binding component. */ protected IComponent m_component; /** * No argument constructor. This requires the component to be set later, * using the {@link #setWrappedComponent} method. */ protected PassThroughComponent() {} /** * Constructor. * * @param comp wrapped component */ protected PassThroughComponent(IComponent comp) { m_component = comp; } /** * Set the wrapped component. * * @param comp wrapped component */ protected void setWrappedComponent(IComponent comp) { m_component = comp; } // // IComponent interface method definitions public boolean isOptional() { return m_component.isOptional(); } public boolean hasAttribute() { return m_component.hasAttribute(); } public void genAttrPresentTest(ContextMethodBuilder mb) throws JiBXException { m_component.genAttrPresentTest(mb); } public void genAttributeUnmarshal(ContextMethodBuilder mb) throws JiBXException { m_component.genAttributeUnmarshal(mb); } public void genAttributeMarshal(ContextMethodBuilder mb) throws JiBXException { m_component.genAttributeMarshal(mb); } public boolean hasContent() { return m_component.hasContent(); } public void genContentPresentTest(ContextMethodBuilder mb) throws JiBXException { m_component.genContentPresentTest(mb); } public void genContentUnmarshal(ContextMethodBuilder mb) throws JiBXException { m_component.genContentUnmarshal(mb); } public void genContentMarshal(ContextMethodBuilder mb) throws JiBXException { m_component.genContentMarshal(mb); } public void genNewInstance(ContextMethodBuilder mb) throws JiBXException { m_component.genNewInstance(mb); } public String getType() { return m_component.getType(); } public boolean hasId() { return m_component.hasId(); } public void genLoadId(ContextMethodBuilder mb) throws JiBXException { m_component.genLoadId(mb); } public NameDefinition getWrapperName() { return m_component.getWrapperName(); } public void setLinkages() throws JiBXException { m_component.setLinkages(); } // DEBUG public void print(int depth) { throw new IllegalStateException ("Method must be overridden by subclass" + getClass().getName()); } } libjibx-java-1.1.6a/build/src/org/jibx/binding/def/PrimitiveStringConversion.java0000644000175000017500000004664310270435556027757 0ustar moellermoeller/* Copyright (c) 2003-2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import org.jibx.binding.classes.*; import org.jibx.runtime.JiBXException; /** * Primitive string conversion handling. Class for handling serialization * converting a primitive type to and from String values. * * @author Dennis M. Sosnoski * @version 1.0 */ public class PrimitiveStringConversion extends StringConversion { // // Static class references private static ClassFile s_unmarshalClass; { try { s_unmarshalClass = ClassCache.getClassFile ("org.jibx.runtime.impl.UnmarshallingContext"); } catch (JiBXException ex) { /* no handling required */ } } // // enum for comparison types of primitive values private static final int INT_TYPE = 0; private static final int LONG_TYPE = 1; private static final int FLOAT_TYPE = 2; private static final int DOUBLE_TYPE = 3; // // Constants for code generation. /** Class providing basic conversion methods. */ private static final String UTILITY_CLASS_NAME = "org.jibx.runtime.Utility"; /** Unmarshal method signature leading portion. */ private static final String UNMARSHAL_SIG_LEAD = "(Ljava/lang/String;Ljava/lang/String;"; /** Constant argument type array for finding conversion methods. */ private static final Class[] SINGLE_STRING_ARGS = new Class[] { String.class }; // // Actual instance data /** Marshalling requires conversion to text flag. */ private boolean m_isMarshalText; /** Unmarshalling requires conversion to text flag. */ private boolean m_isUnmarshalText; /** Unmarshalling context method for optional attribute. */ private ClassItem m_unmarshalOptAttribute; /** Unmarshalling context method for optional element. */ private ClassItem m_unmarshalOptElement; /** Unmarshalling context method for required attribute. */ private ClassItem m_unmarshalReqAttribute; /** Unmarshalling context method for required element. */ private ClassItem m_unmarshalReqElement; /** Comparison and marshal type of value (INT_TYPE, LONG_TYPE, FLOAT_TYPE, or DOUBLE_TYPE) */ private int m_valueType; /** Name of value type on stack. */ private String m_stackType; /** * Constructor. Initializes conversion handling based on the supplied * inherited handling. * * @param type name of primitive type handled by conversion * @param inherit conversion information inherited by this conversion */ protected PrimitiveStringConversion(String type, PrimitiveStringConversion inherit) { super(type, inherit); m_isMarshalText = inherit.m_isMarshalText; m_isUnmarshalText = inherit.m_isUnmarshalText; m_unmarshalOptAttribute = inherit.m_unmarshalOptAttribute; m_unmarshalOptElement = inherit.m_unmarshalOptElement; m_unmarshalReqAttribute = inherit.m_unmarshalReqAttribute; m_unmarshalReqElement = inherit.m_unmarshalReqElement; m_valueType = inherit.m_valueType; m_stackType = inherit.m_stackType; } /** * Constructor. Initializes conversion handling based on argument values. * This form is only used for constructing the default set of conversions. * * @param cls class of primitive type handled by conversion * @param dflt default value object (wrapped value, or String * or null with special deserializer) * @param ts name of utility class static method for converting value to * String * @param fs name of utility class static method for converting * String to value * @param uattr unmarshalling context method name for attribute value * @param uelem unmarshalling context method name for element value */ public PrimitiveStringConversion(Class cls, Object dflt, String code, String ts, String fs, String uattr, String uelem) { super(dflt, UTILITY_CLASS_NAME+'.'+ts, UTILITY_CLASS_NAME+'.'+fs, cls.getName()); m_isMarshalText = m_isUnmarshalText = false; String sig = UNMARSHAL_SIG_LEAD + code + ')' + code; m_unmarshalOptAttribute = s_unmarshalClass.getMethod(uattr, sig); m_unmarshalOptElement = s_unmarshalClass.getMethod(uelem, sig); sig = UNMARSHAL_SIG_LEAD + ')' + code; m_unmarshalReqAttribute = s_unmarshalClass.getMethod(uattr, sig); m_unmarshalReqElement = s_unmarshalClass.getMethod(uelem, sig); if (cls == Long.TYPE) { m_valueType = LONG_TYPE; m_stackType = "long"; } else if (cls == Float.TYPE) { m_valueType = FLOAT_TYPE; m_stackType = "float"; } else if (cls == Double.TYPE) { m_valueType = DOUBLE_TYPE; m_stackType = "double"; } else { m_valueType = INT_TYPE; m_stackType = "int"; } } /** * Generate code to convert String representation. The * code generated by this method assumes that the String * value has already been pushed on the stack. It consumes this and * leaves the converted value on the stack. * * @param mb method builder */ public void genFromText(ContextMethodBuilder mb) { // check if a deserializer is used for this type if (m_deserializer != null) { // just generate call to the deserializer (adding any checked // exceptions thrown by the deserializer to the list needing // handling) mb.addMethodExceptions(m_deserializer); if (m_deserializer.getArgumentCount() > 1) { mb.loadContext(); } mb.appendCall(m_deserializer); } } /** * Push default value on stack. Just adds the appropriate instruction to * the list for the method. * * @param mb method builder */ protected void pushDefault(ContextMethodBuilder mb) { mb.appendLoadConstant(m_default); } /** * Generate code to parse and convert optional attribute or element. The * code generated by this method assumes that the unmarshalling context * and name information for the attribute or element have already * been pushed on the stack. It consumes these and leaves the converted * value (or default value, if the item itself is missing) on the stack. * * @param attr item is an attribute (vs element) flag * @param mb method builder * @throws JiBXException if error in configuration */ public void genParseOptional(boolean attr, ContextMethodBuilder mb) throws JiBXException { // choose between custom deserializer or standard built-in method if (m_isUnmarshalText) { // first part of generated instruction sequence is to push the // default value text, then call the appropriate unmarshalling // context method to get the value as a String String dflt; if (m_default instanceof String || m_default == null) { dflt = (String)m_default; } else { dflt = m_default.toString(); } mb.appendLoadConstant(dflt); String name = attr ? UNMARSHAL_OPT_ATTRIBUTE : UNMARSHAL_OPT_ELEMENT; mb.appendCallVirtual(name, UNMARSHAL_OPT_SIGNATURE); // second part is to generate call to deserializer genFromText(mb); } else { // generated instruction sequence just pushes the unwrapped default // value, then calls the appropriate unmarshalling context method // to get the value as a primitive pushDefault(mb); mb.appendCall(attr ? m_unmarshalOptAttribute : m_unmarshalOptElement); } } /** * Generate code to parse and convert required attribute or element. The * code generated by this method assumes that the unmarshalling context and * name information for the attribute or element have already been pushed * on the stack. It consumes these and leaves the converted value on the * stack. * * @param attr item is an attribute (vs element) flag * @param mb method builder * @throws JiBXException if error in configuration */ public void genParseRequired(boolean attr, ContextMethodBuilder mb) throws JiBXException { // choose between custom deserializer or standard built-in method if (m_isUnmarshalText) { // first part of generated instruction sequence is a call to // the appropriate unmarshalling context method to get the value // as a String String name = attr ? UNMARSHAL_REQ_ATTRIBUTE : UNMARSHAL_REQ_ELEMENT; mb.appendCallVirtual(name, UNMARSHAL_REQ_SIGNATURE); // second part is to generate call to deserializer genFromText(mb); } else { // generated instruction sequence just calls the appropriate // unmarshalling context method to get the value as a primitive mb.appendCall(attr ? m_unmarshalReqAttribute : m_unmarshalReqElement); } } /** * Generate code to check if an optional value is not equal to the default. * The code generated by this method assumes that the actual value to be * converted has already been pushed on the stack. It consumes this, * leaving the converted text reference on the stack if it's not equal to * the default value. * * @param type fully qualified class name for value on stack * @param mb method builder * @param extra count of extra values to be popped from stack if missing * @return handle for branch taken when value is equal to the default * (target must be set by caller) * @throws JiBXException if error in configuration */ protected BranchWrapper genToOptionalText(String type, ContextMethodBuilder mb, int extra) throws JiBXException { // set instructions based on value size if (m_valueType == LONG_TYPE || m_valueType == DOUBLE_TYPE) { mb.appendDUP2(); } else { mb.appendDUP(); } extra++; // first add code to check if the value is different from the default, // by duplicating the value, pushing the default, and executing the // appropriate branch comparison // TODO: this should not be done inline, but necessary for now Object value = m_default; if (m_isUnmarshalText) { try { String mname = m_deserializer.getName(); String cname = m_deserializer.getClassFile().getName(); Class clas = ClassFile.loadClass(cname); if (clas == null) { throw new JiBXException("Deserializer class " + cname + " not found for converting default value"); } else { // try first to find a declared method, then a public one Method meth; try { meth = clas.getDeclaredMethod(mname, SINGLE_STRING_ARGS); meth.setAccessible(true); } catch (NoSuchMethodException ex) { meth = clas.getMethod(mname, SINGLE_STRING_ARGS); } String text; if (value instanceof String || value == null) { text = (String)value; } else { text = value.toString(); } value = meth.invoke(null, new Object[] { text }); } } catch (IllegalAccessException ex) { throw new JiBXException("Conversion method not accessible", ex); } catch (InvocationTargetException ex) { throw new JiBXException("Internal error", ex); } catch (NoSuchMethodException ex) { throw new JiBXException("Internal error", ex); } } mb.appendLoadConstant(value); BranchWrapper ifne = null; switch (m_valueType) { case LONG_TYPE: mb.appendLCMP(); break; case FLOAT_TYPE: mb.appendFCMPG(); break; case DOUBLE_TYPE: mb.appendDCMPG(); break; default: ifne = mb.appendIF_ICMPNE(this); break; } if (ifne == null) { ifne = mb.appendIFNE(this); } // generate code for branch not taken case, popping the value from // stack along with extra parameters, and branching past using code genPopValues(extra, mb); BranchWrapper toend = mb.appendUnconditionalBranch(this); mb.targetNext(ifne); genToText(m_stackType, mb); return toend; } /** * Convert text representation into default value object. This override of * the base class method uses reflection to call the actual deserialization * method, returning the wrapped result value. If a custom deserializer is * defined this just returns the String value directly. * * @param text value representation to be converted * @return converted default value object * @throws JiBXException on conversion error */ protected Object convertDefault(String text) throws JiBXException { if (!m_isUnmarshalText) { try { String mname = m_deserializer.getName(); String cname = m_deserializer.getClassFile().getName(); Class clas = ClassFile.loadClass(cname); if (clas == null) { throw new JiBXException("Deserializer class " + cname + " not found for converting default value"); } else { // try first to find a declared method, then a public one Method meth; try { meth = clas.getDeclaredMethod(mname, SINGLE_STRING_ARGS); meth.setAccessible(true); } catch (NoSuchMethodException ex) { meth = clas.getMethod(mname, SINGLE_STRING_ARGS); } return meth.invoke(null, new Object[] { text }); } } catch (IllegalAccessException ex) { throw new JiBXException("Conversion method not accessible", ex); } catch (InvocationTargetException ex) { throw new JiBXException("Internal error", ex); } catch (NoSuchMethodException ex) { throw new JiBXException("Internal error", ex); } } else { return text; } } /** * Check if the type handled by this conversion is of a primitive type. * * @return true to indicate primitive type */ public boolean isPrimitive() { return true; } /** * Set serializer for conversion. This override of the base class method * sets a flag to indicate that values must be converted to text before * they are written to a document after executing the base class processing. * * @param ser fully qualified class and method name of serializer * @throws JiBXException if serializer not found or not usable */ protected void setSerializer(String ser) throws JiBXException { super.setSerializer(ser); m_isMarshalText = true; } /** * Set deserializer for conversion. This override of the base class method * sets a flag to indicate that values must be read from a document as text * and converted as a separate step after executing the base class * processing. * * @param deser fully qualified class and method name of deserializer * @throws JiBXException if deserializer not found or not usable */ protected void setDeserializer(String deser) throws JiBXException { super.setDeserializer(deser); m_isUnmarshalText = true; } /** * Derive from existing formatting information. This allows constructing * a new instance from an existing format of the same or an ancestor * type, with the properties of the existing format copied to the new * instance except where overridden by the supplied values. * * @param type fully qualified name of class handled by conversion * @param ser fully qualified name of serialization method * (null if inherited) * @param dser fully qualified name of deserialization method * (null if inherited) * @param dflt default value text (null if inherited) * @return new instance initialized from existing one * @throws JiBXException if error in configuration information */ public StringConversion derive(String type, String ser, String dser, String dflt) throws JiBXException { if (type == null) { type = m_typeName; } StringConversion inst = new PrimitiveStringConversion(type, this); if (ser != null) { inst.setSerializer(ser); } if (dser != null) { inst.setDeserializer(dser); } if (dflt != null) { inst.m_default = inst.convertDefault(dflt); } return inst; } }libjibx-java-1.1.6a/build/src/org/jibx/binding/def/PropertyDefinition.java0000644000175000017500000005551511006326500026367 0ustar moellermoeller/* Copyright (c) 2003-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import java.util.ArrayList; import org.jibx.binding.classes.BranchWrapper; import org.jibx.binding.classes.ClassFile; import org.jibx.binding.classes.ClassItem; import org.jibx.binding.classes.ContextMethodBuilder; import org.jibx.binding.classes.MethodBuilder; import org.jibx.binding.model.ClassUtils; import org.jibx.binding.util.IntegerCache; import org.jibx.runtime.JiBXException; /** * Property definition from binding. This organizes shared information for * bindings linked to fields or get/set methods of an object, and provides * methods for related code generation. * * @author Dennis M. Sosnoski */ public class PropertyDefinition { // // Constants and such related to code generation. // recognized test-method signatures. private static final String[] TEST_METHOD_SIGNATURES = { "(Lorg/jibx/runtime/IMarshallingContext;)Z", "()Z" }; // recognized get-method signatures. private static final String[] GET_METHOD_SIGNATURES = { "(Lorg/jibx/runtime/IMarshallingContext;)", "()" }; // // Actual instance data /** Reference to "this" property of object flag. */ private boolean m_isThis; /** Reference to implicit value from collection. */ private boolean m_isImplicit; /** Optional item flag. */ private boolean m_isOptional; /** Containing object context. */ private final IContextObj m_objContext; /** Fully qualified name of actual type of value. */ private final String m_typeName; /** Fully qualified name of declared type of value loaded. */ private final String m_getValueType; /** Fully qualified name of declared type of value stored. */ private final String m_setValueType; /** Information for field (if given, may be null). */ private final ClassItem m_fieldItem; /** Information for test method (if given, may be null). */ private final ClassItem m_testMethod; /** Information for get method (if given, may be null). */ private final ClassItem m_getMethod; /** Information for set method (if given, may be null). */ private final ClassItem m_setMethod; /** * Constructor. * * @param parent containing binding definition structure * @param obj containing object context * @param type fully qualified name of type * @param isthis "this" object reference flag * @param opt optional property flag * @param fname containing object field name for property (may be * null) * @param test containing object method to test for property present (may be * null) * @param get containing object method to get property value (may be * null) * @param set containing object method to set property value (may be * null) * @throws JiBXException if configuration error */ public PropertyDefinition(IContainer parent, IContextObj obj, String type, boolean isthis, boolean opt, String fname, String test, String get, String set) throws JiBXException { m_objContext = obj; m_isThis = isthis; m_isOptional = opt; ClassFile cf = m_objContext.getBoundClass().getClassFile(); m_isImplicit = false; String dtype = null; String gtype = null; String stype = null; if (isthis) { if (type == null) { dtype = gtype = stype = cf.getName(); } else { dtype = gtype = stype = type; } } if (fname == null) { m_fieldItem = null; } else { m_fieldItem = cf.getField(fname); dtype = gtype = stype = m_fieldItem.getTypeName(); } if (test == null) { m_testMethod = null; } else { if (opt) { m_testMethod = cf.getMethod(test, TEST_METHOD_SIGNATURES); if (m_testMethod == null) { throw new JiBXException("test-method " + test + " not found in class " + cf.getName()); } } else { throw new JiBXException ("Test method only allowed for optional properties"); } } if (get == null) { m_getMethod = null; } else { m_getMethod = cf.getMethod(get, GET_METHOD_SIGNATURES); if (m_getMethod == null) { throw new JiBXException("get-method " + get + " not found in class " + cf.getName()); } else { gtype = m_getMethod.getTypeName(); if (dtype == null) { dtype = gtype; } } } if (set == null) { m_setMethod = null; } else { // need to handle overloads, so generate possible signatures ArrayList sigs = new ArrayList(); if (m_getMethod != null) { String psig = ClassUtils.getSignature(gtype); sigs.add("(" + psig + "Lorg/jibx/runtime/IUnmarshallingContext;" + ")V"); sigs.add("(" + psig + ")V"); } if (type != null) { String psig = ClassUtils.getSignature(type); sigs.add("(" + psig + "Lorg/jibx/runtime/IUnmarshallingContext;" + ")V"); sigs.add("(" + psig + ")V"); } if (m_fieldItem != null) { String psig = m_fieldItem.getSignature(); sigs.add("(" + psig + "Lorg/jibx/runtime/IUnmarshallingContext;" + ")V"); sigs.add("(" + psig + ")V"); } sigs.add ("(Ljava/lang/Object;Lorg/jibx/runtime/IUnmarshallingContext;)V"); sigs.add("(Ljava/lang/Object;)V"); // set method needs verification of argument and return type ClassItem setmeth = cf.getMethod(set, (String[])sigs.toArray(new String[0])); if (setmeth == null) { // nothing known about signature, try anything by name setmeth = cf.getMethod(set, ""); if (setmeth != null) { if (!setmeth.getTypeName().equals("void") || setmeth.getArgumentCount() > 2) { setmeth = null; } else if (setmeth.getArgumentCount() == 2) { String xtype = setmeth.getArgumentType(1); if (!"org.jibx.runtime.IUnmarshallingContext".equals(xtype)) { setmeth = null; } } } } // check if method found m_setMethod = setmeth; if (m_setMethod == null) { throw new JiBXException("set-method " + set + " not found in class " + cf.getName()); } else { stype = m_setMethod.getArgumentType(0); if (dtype == null) { dtype = stype; } } } if (gtype == null) { gtype = "java.lang.Object"; } m_getValueType = gtype; m_setValueType = stype; // check that enough information is supplied BindingDefinition root = parent.getBindingRoot(); if (!isthis && m_fieldItem == null) { if (root.isInput() && m_setMethod == null) { throw new JiBXException ("Missing way to set value for input binding"); } if (root.isOutput() && m_getMethod == null) { throw new JiBXException ("Missing way to get value for output binding"); } } // check that type information is consistent if (type == null) { m_typeName = dtype; } else { m_typeName = type; boolean valid = true; if (isthis) { valid = ClassItem.isAssignable(dtype, type); } else { if (root.isInput()) { valid = ClassItem.isAssignable(type, m_setValueType) || ClassItem.isAssignable(m_setValueType, type); } if (valid && root.isOutput()) { valid = ClassItem.isAssignable(type, m_getValueType) || ClassItem.isAssignable(m_getValueType, type); } } if (!valid) { throw new JiBXException ("Incompatible types for property definition"); } } } /** * Constructor for "this" object reference. * * @param obj containing object context * @param opt optional property flag */ public PropertyDefinition(IContextObj obj, boolean opt) { m_objContext = obj; m_isThis = true; m_isImplicit = false; m_isOptional = opt; ClassFile cf = m_objContext.getBoundClass().getClassFile(); m_fieldItem = m_testMethod = m_getMethod = m_setMethod = null; m_typeName = m_getValueType = m_setValueType = cf.getName(); } /** * Constructor for implicit object reference. * * @param type object type supplied * @param obj containing object context * @param opt optional property flag */ public PropertyDefinition(String type, IContextObj obj, boolean opt) { m_objContext = obj; m_isImplicit = true; m_isThis = false; m_isOptional = opt; m_fieldItem = m_testMethod = m_getMethod = m_setMethod = null; m_typeName = m_getValueType = m_setValueType = type; } /** * Check if property is "this" reference for object. * * @return true if reference to "this", false if * not */ public boolean isThis() { return m_isThis; } /** * Check if property is implicit value from collection. * * @return true if implicit, false if not */ public boolean isImplicit() { return m_isImplicit; } /** * Switch property from "this" to "implicit". */ public void switchProperty() { m_isThis = false; m_isImplicit = true; } /** * Check if property is optional. * * @return true if optional, false if required */ public boolean isOptional() { return m_isOptional; } /** * Set flag for an optional property. * * @param opt true if optional property, false if * not */ public void setOptional(boolean opt) { m_isOptional = opt; } /** * Get property name. If a field is defined this is the same as the field; * otherwise it is either the get method name (with leading "get" stripped, * if present) or the set method (with leading "set" stripped, if present), * whichever is found. * * @return name for this property */ public String getName() { if (m_isThis) { return "this"; } else if (m_fieldItem != null) { return m_fieldItem.getName(); } else if (m_getMethod != null) { String name = m_getMethod.getName(); if (name.startsWith("get") && name.length() > 3) { name = name.substring(3); } return name; } else if (m_setMethod != null) { String name = m_setMethod.getName(); if (name.startsWith("set") && name.length() > 3) { name = name.substring(3); } return name; } else { return "item"; } } /** * Get declared type fully qualified name. * * @return fully qualified class name of declared type */ public String getTypeName() { return m_typeName; } /** * Get value type as fully qualified name for loaded property value. * * @return fully qualified class name of value type */ public String getGetValueType() { return m_getValueType; } /** * Get value type as fully qualified name for stored property value. * * @return fully qualified class name of value type */ public String getSetValueType() { return m_setValueType; } /** * Check if property has presence test. Code needs to be generated to check * for the presence of the property if it is optional and either a test * method is defined or the value is an object reference. * * @return true if presence test needed, false if * not */ public boolean hasTest() { return isOptional() && !isImplicit() && (m_testMethod != null || !ClassItem.isPrimitive(m_typeName)); } /** * Append instruction to duplicate the value on the stack. This will use the * appropriate instruction for the size of the value. * * @param mb */ private void duplicateValue(MethodBuilder mb) { if ("long".equals(m_typeName) || "double".equals(m_typeName)) { mb.appendDUP2(); } else { mb.appendDUP(); } } /** * Append instruction to pop the value from the stack. This will use the * appropriate instruction for the size of the value. * * @param mb */ private void discardValue(MethodBuilder mb) { if ("long".equals(m_typeName) || "double".equals(m_typeName)) { mb.appendPOP2(); } else { mb.appendPOP(); } } /** * Generate code to test if property is present. The generated code * assumes that the top of the stack is the reference for the containing * object, and consumes this value for the test. The target for the * returned branch instruction must be set by the caller. * * @param mb method builder * @return wrapper for branch instruction taken when property is missing */ public BranchWrapper genTest(ContextMethodBuilder mb) { // first check for supplied test method if (m_testMethod != null) { // generate call to test method to check for property present mb.addMethodExceptions(m_testMethod); if (m_testMethod.isStatic()) { discardValue(mb); } if (m_testMethod.getArgumentCount() > 0) { mb.loadContext(); } mb.appendCall(m_testMethod); return mb.appendIFEQ(this); } else if (!m_isThis && !m_isImplicit && !ClassItem.isPrimitive(m_typeName)) { // generated instruction either loads a field value or calls a "get" // method, as appropriate if (m_getMethod == null) { if (m_fieldItem.isStatic()) { discardValue(mb); } mb.appendGet(m_fieldItem); } else { if (m_getMethod.isStatic()) { discardValue(mb); } if (m_getMethod.getArgumentCount() > 0) { mb.loadContext(); } mb.addMethodExceptions(m_getMethod); mb.appendCall(m_getMethod); } return mb.appendIFNULL(this); } else { return null; } } /** * Generate code to load property value to stack. The generated code * assumes that the top of the stack is the reference for the containing * object. It consumes this and leaves the actual value on the stack. If * the property value is not directly accessible from the context of the * method being generated this automatically constructs an access method * and uses that method. * * @param mb method builder * @throws JiBXException if configuration error */ public void genLoad(ContextMethodBuilder mb) throws JiBXException { // nothing to be done if called on "this" or implicit reference if (!m_isThis && !m_isImplicit) { // first check direct access to property from method class ClassFile from = mb.getClassFile(); ClassItem access = m_getMethod; if (access == null) { access = m_fieldItem; } if (access != null && !from.isAccessible(access)) { access = m_objContext.getBoundClass(). getLoadMethod(access, mb.getClassFile()); } // generated instruction either loads a field value or calls a "get" // method, as appropriate if (access == null) { Integer index = (Integer)mb.getKeyValue(m_setMethod); discardValue(mb); if (index == null) { mb.appendACONST_NULL(); } else { mb.appendLoadLocal(index.intValue()); } } else { if (access.isStatic()) { discardValue(mb); } if (access.isMethod()) { if (access.getArgumentCount() > 0) { mb.loadContext(); } mb.addMethodExceptions(access); mb.appendCall(access); } else { mb.appendGet(access); } } // cast value if necessary to assure correct type mb.appendCreateCast(m_getValueType, m_typeName); } } /** * Generate code to store property value from stack. The generated code * assumes that the reference to the containing object and the value to be * stored have already been pushed on the stack. It consumes these, leaving * nothing. If the property value is not directly accessible from the * context of the method being generated this automatically constructs an * access method and uses that method. * * @param mb method builder * @throws JiBXException if configuration error */ public void genStore(MethodBuilder mb) throws JiBXException { // check for cast needed to convert to actual type if (!ClassItem.isPrimitive(m_setValueType)) { mb.appendCreateCast(m_setValueType); } // nothing to be done if called on "this" or implicit reference if (!m_isThis && !m_isImplicit) { // first check direct access to property from method class ClassFile from = mb.getClassFile(); ClassItem access = m_setMethod; if (access == null) { access = m_fieldItem; } if (!from.isAccessible(access)) { access = m_objContext.getBoundClass(). getStoreMethod(access, mb.getClassFile()); } // save to local if no way of getting value if (m_getMethod == null && m_fieldItem == null) { duplicateValue(mb); Integer index = (Integer)mb.getKeyValue(m_setMethod); if (index == null) { int slot = mb.addLocal(null, ClassItem.typeFromName(m_typeName)); index = IntegerCache.getInteger(slot); mb.setKeyValue(m_setMethod, index); } else { mb.appendStoreLocal(index.intValue()); } } // generated instruction either stores a field value or calls a // "set" method, as appropriate if (access.isMethod()) { if (access.getArgumentCount() > 1) { // this test is ugly, needed because of backfill method // calls from ValueChild if (mb instanceof ContextMethodBuilder) { ((ContextMethodBuilder)mb).loadContext(); } else { mb.appendACONST_NULL(); } } mb.addMethodExceptions(access); mb.appendCall(access); } else { mb.appendPut(access); } if (access.isStatic()) { discardValue(mb); } } } // DEBUG public String toString() { StringBuffer text = new StringBuffer(); if (m_isOptional) { text.append("optional "); } text.append("property "); if (m_isThis) { text.append("\"this\" "); } else if (m_isImplicit) { text.append("from collection "); } else if (m_fieldItem != null) { text.append(m_fieldItem.getName() + " "); } else { if (m_getMethod != null) { text.append("from " + m_getMethod.getName() + " "); } if (m_setMethod != null) { text.append("to " + m_setMethod.getName() + " "); } } if (m_typeName != null) { text.append( "("+ m_typeName + ")"); } return text.toString(); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/def/StringConversion.java0000644000175000017500000004272310434260242026047 0ustar moellermoeller/* Copyright (c) 2003-2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import org.apache.bcel.classfile.Utility; import org.jibx.binding.classes.*; import org.jibx.runtime.JiBXException; import org.jibx.runtime.QName; /** * String conversion handling. Defines serialization handling for converting * to and from a String value. This uses an inheritance approach, * where each serialization definition is initialized based on the handling * set for the containing definition of the same (or parent class) type. * * @author Dennis M. Sosnoski * @version 1.0 */ public abstract class StringConversion { // // Constants for code generation. protected static final String UNMARSHAL_OPT_ATTRIBUTE = "org.jibx.runtime.impl.UnmarshallingContext.attributeText"; protected static final String UNMARSHAL_OPT_ELEMENT = "org.jibx.runtime.impl.UnmarshallingContext.parseElementText"; protected static final String UNMARSHAL_OPT_SIGNATURE = "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)" + "Ljava/lang/String;"; protected static final String UNMARSHAL_REQ_ATTRIBUTE = "org.jibx.runtime.impl.UnmarshallingContext.attributeText"; protected static final String UNMARSHAL_REQ_ELEMENT = "org.jibx.runtime.impl.UnmarshallingContext.parseElementText"; protected static final String UNMARSHAL_REQ_SIGNATURE = "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"; protected static final String MARSHAL_ATTRIBUTE = "org.jibx.runtime.impl.MarshallingContext.attribute"; protected static final String MARSHAL_ELEMENT = "org.jibx.runtime.impl.MarshallingContext.element"; protected static final String MARSHAL_SIGNATURE = "(ILjava/lang/String;Ljava/lang/String;)" + "Lorg/jibx/runtime/impl/MarshallingContext;"; protected static final String COMPARE_OBJECTS_METHOD = "org.jibx.runtime.Utility.isEqual"; protected static final String COMPARE_OBJECTS_SIGNATURE = "(Ljava/lang/Object;Ljava/lang/Object;)Z"; protected static final String[] DESERIALIZER_SIGNATURES = { "(Ljava/lang/String;)", "(Ljava/lang/String;Lorg/jibx/runtime/IUnmarshallingContext;)" }; // values used for name in marshalling; must be 1 or 2 public static final int MARSHAL_NAME_VALUES = 2; // // Actual instance data /** Default value used for this type (wrapper for primitives, otherwise String or null). */ protected Object m_default; /** Serializer method information. */ protected ClassItem m_serializer; /** Deserializer method information. */ protected ClassItem m_deserializer; /** Fully qualified name of class handled by conversion. */ protected String m_typeName; /** Signature of class handled by conversion. */ protected String m_typeSignature; /** * Constructor. This internal form only initializes the type information. * * @param type fully qualified name of class handled by conversion */ private StringConversion(String type) { m_typeName = type; m_typeSignature = Utility.getSignature(type); } /** * Constructor. Initializes conversion handling based on the supplied * inherited handling. * * @param type fully qualified name of class handled by conversion * @param inherit conversion information inherited by this conversion */ protected StringConversion(String type, StringConversion inherit) { this(type); m_default = inherit.m_default; m_serializer = inherit.m_serializer; m_deserializer = inherit.m_deserializer; } /** * Constructor. Initializes conversion handling based on argument values. * This form is only used for constructing the default set of conversions. * Because of this, it throws an unchecked exception on error. * * @param dflt default value object (wrapped value for primitive types, * otherwise String) * @param ser fully qualified name of serialization method * @param deser fully qualified name of deserialization method * @param type fully qualified name of class handled by conversion */ /*package*/ StringConversion(Object dflt, String ser, String deser, String type) { this(type); m_default = dflt; try { if (ser != null) { setSerializer(ser); } if (deser != null) { setDeserializer(deser); } } catch (JiBXException ex) { throw new IllegalArgumentException(ex.getMessage()); } } /** * Get name of type handled by this conversion. * * @return fully qualified class name of type handled by conversion */ public String getTypeName() { return m_typeName; } /** * Generate code to convert String representation. The * code generated by this method assumes that the String * value has already been pushed on the stack. It consumes this and * leaves the converted value on the stack. * * @param mb method builder * @throws JiBXException if error in configuration */ public abstract void genFromText(ContextMethodBuilder mb) throws JiBXException; /** * Generate code to parse and convert optional attribute or element. This * abstract base class method must be implemented by every subclass. The * code generated by this method assumes that the unmarshalling context * and name information for the attribute or element have already * been pushed on the stack. It consumes these and leaves the converted * value (or converted default value, if the item itself is missing) on * the stack. * * @param attr item is an attribute (vs element) flag * @param mb method builder * @throws JiBXException if error in configuration */ public abstract void genParseOptional(boolean attr, ContextMethodBuilder mb) throws JiBXException; /** * Generate code to parse and convert required attribute or element. This * abstract base class method must be implemented by every subclass. The * code generated by this method assumes that the unmarshalling context and * name information for the attribute or element have already been pushed * on the stack. It consumes these and leaves the converted value on the * stack. * * @param attr item is an attribute (vs element) flag * @param mb method builder * @throws JiBXException if error in configuration */ public abstract void genParseRequired(boolean attr, ContextMethodBuilder mb) throws JiBXException; /** * Generate code to write String value to generated document. * The code generated by this method assumes that the marshalling context, * the name information, and the actual value to be converted have already * been pushed on the stack. It consumes these, leaving the marshalling * context on the stack. * * @param attr item is an attribute (vs element) flag * @param mb method builder */ public void genWriteText(boolean attr, ContextMethodBuilder mb) { // append code to call the appropriate generic marshalling context // String method String name = attr ? MARSHAL_ATTRIBUTE : MARSHAL_ELEMENT; mb.appendCallVirtual(name, MARSHAL_SIGNATURE); } /** * Generate code to pop values from stack. * * @param count number of values to be popped * @param mb method builder */ public void genPopValues(int count, ContextMethodBuilder mb) { while (--count >= 0) { if (mb.isStackTopLong()) { mb.appendPOP2(); } else { mb.appendPOP(); } } } /** * Generate code to check if an optional value is not equal to the default. * This abstract base class method must be implemented by every subclass. * The code generated by this method assumes that the actual value to be * converted has already been pushed on the stack. It consumes this, * leaving the converted text reference on the stack if it's not equal to * the default value. * * @param type fully qualified class name for value on stack * @param mb method builder * @param extra count of extra words to be popped from stack if missing * @return handle for branch taken when value is equal to the default * (target must be set by caller) * @throws JiBXException if error in configuration */ protected abstract BranchWrapper genToOptionalText(String type, ContextMethodBuilder mb, int extra) throws JiBXException; /** * Generate code to convert value to a String. The code * generated by this method assumes that the actual value to be converted * has already been pushed on the stack. It consumes this, leaving the * converted text reference on the stack. * * @param type fully qualified class name for value on stack * @param mb method builder * @throws JiBXException if error in configuration */ public void genToText(String type, ContextMethodBuilder mb) throws JiBXException { // check if a serializer is used for this type if (m_serializer != null) { // just generate call to the serializer (adding any checked // exceptions thrown by the serializer to the list needing // handling) if (!isPrimitive()) { mb.appendCreateCast(type, m_serializer.getArgumentType(0)); } mb.addMethodExceptions(m_serializer); if (m_serializer.getArgumentCount() > 1) { mb.loadContext(); } mb.appendCall(m_serializer); } else { // make sure this is a string mb.appendCreateCast(type, "java.lang.String"); } } /** * Generate code to convert and write optional value to generated document. * The generated code first tests if the value is the same as the supplied * default, and if so skips writing. The code assumes that the marshalling * context, the name information, and the actual value to be converted have * already been pushed on the stack. It consumes these, leaving only the * marshalling context on the stack. * * @param attr item is an attribute (vs element) flag * @param type fully qualified class name for value on stack * @param mb method builder * @throws JiBXException if error in configuration */ public void genWriteOptional(boolean attr, String type, ContextMethodBuilder mb) throws JiBXException { // start with code to convert value to String, if it's not equal to the // default value BranchWrapper toend = genToOptionalText(type, mb, MARSHAL_NAME_VALUES); // next use standard write code, followed by targeting branch genWriteText(attr, mb); if (toend != null) { mb.targetNext(toend); } } /** * Generate code to convert and write required value to generated document. * The code generated by this method assumes that the marshalling context, * the name information, and the actual value to be converted have already * been pushed on the stack. It consumes these, leaving the returned * marshalling context on the stack. * * @param attr item is an attribute (vs element) flag * @param type fully qualified class name for value on stack * @param mb method builder * @throws JiBXException if error in configuration */ public void genWriteRequired(boolean attr, String type, ContextMethodBuilder mb) throws JiBXException { // generate code to convert to text, followed by code to marshal text genToText(type, mb); genWriteText(attr, mb); } /** * Check if the type handled by this conversion is of a primitive type. * * @return true if a primitive type, false if an * object type */ public abstract boolean isPrimitive(); /** * Set serializer for conversion. This finds the named static method and * sets it as the serializer to be used for this conversion. The serializer * method is expected to take a single argument of either the handled * type or a superclass or interface of the handled type, and to return a * String result. * * @param ser fully qualified class and method name of serializer * @throws JiBXException if serializer not found or not usable */ protected void setSerializer(String ser) throws JiBXException { // build all possible signature variations String[] tsigs = ClassItem.getSignatureVariants(m_typeName); String[] msigs = new String[tsigs.length*2]; for (int i = 0; i < tsigs.length; i++) { msigs[i*2] = "(" + tsigs[i] + ")Ljava/lang/String;"; msigs[i*2+1] = "(" + tsigs[i] + "Lorg/jibx/runtime/IMarshallingContext;)Ljava/lang/String;"; } // find a matching static method ClassItem method = ClassItem.findStaticMethod(ser, msigs); // report error if method not found if (method == null) { throw new JiBXException("Serializer " + ser + " not found"); } else { m_serializer = method; } } /** * Set deserializer for conversion. This finds the named static method and * sets it as the deserializer to be used for this conversion. The * deserializer method is expected to take a single argument of type * String, and to return a value of the handled type or a * subtype of that type. * * @param deser fully qualified class and method name of deserializer * @throws JiBXException if deserializer not found or not usable */ protected void setDeserializer(String deser) throws JiBXException { // find a matching static method ClassItem method = ClassItem.findStaticMethod(deser, DESERIALIZER_SIGNATURES); // report error if method not found or incompatible if (method == null) { throw new JiBXException("Deserializer " + deser + " not found"); } else if (ClassItem.isAssignable(method.getTypeName(), m_typeName)) { m_deserializer = method; } else { throw new JiBXException("Deserializer " + deser + " returns wrong type"); } } /** * Convert text representation into default value object. Each subclass * must implement this with the appropriate conversion handling. * * @param text value representation to be converted * @return converted default value object * @throws JiBXException on conversion error */ protected abstract Object convertDefault(String text) throws JiBXException; /** * Derive from existing formatting information. This abstract base class * method must be implemented by every subclass. It allows constructing * a new instance from an existing format of the same or an ancestor * type, with the properties of the existing format copied to the new * instance except where overridden by the supplied values. * * @param type fully qualified name of class handled by conversion * @param ser fully qualified name of serialization method * (null if inherited) * @param dser fully qualified name of deserialization method * (null if inherited) * @param dflt default value text (null if inherited) * @return new instance initialized from existing one * @throws JiBXException if error in configuration information */ public abstract StringConversion derive(String type, String ser, String dser, String dflt) throws JiBXException; }libjibx-java-1.1.6a/build/src/org/jibx/binding/def/StructureReference.java0000644000175000017500000001312410221060302026330 0ustar moellermoeller/* Copyright (c) 2003-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import org.jibx.binding.classes.ClassCache; import org.jibx.binding.classes.ClassFile; import org.jibx.binding.classes.ContextMethodBuilder; import org.jibx.runtime.JiBXException; /** * Reference to a structure definition. This is used as a placeholder when * building the component structure of a binding definition. It's necessary * because the referenced structure may not have been parsed yet. During the * linkage phase that follows parsing this looks up the appropriate structure * definition and sets up the corresponding component structure. Thereafter it * operates as a simple pass-through wrapper for the top child component. * * @author Dennis M. Sosnoski * @version 1.0 */ public class StructureReference extends PassThroughComponent { /** Containing binding component. */ private final IContainer m_container; /** Containing binding definition structure. */ private final IContextObj m_contextObject; /** Property definition (may be null). */ private final PropertyDefinition m_property; /** Identifier for referenced structure definition. */ private final String m_label; /** Flag for marshalling code generation to be skipped by component. */ private boolean m_skipMarshal; /** Object load needed for marshalling flag (used with object binding). */ private boolean m_needLoad; /** * Constructor. * * @param contain containing binding component * @param label reference structure identifier * @param prop property definition (may be null) * @param hasname element name used with reference flag * @param cobj context object */ public StructureReference(IContainer contain, String label, PropertyDefinition prop, boolean hasname, IContextObj cobj) { super(); m_container = contain; m_contextObject = cobj; m_property = prop; m_skipMarshal = hasname && prop != null && prop.isOptional(); m_label = label; } // // IComponent interface method definitions (overrides of defaults) public void genAttributeMarshal(ContextMethodBuilder mb) throws JiBXException { if (m_needLoad) { mb.loadObject(); } m_component.genAttributeMarshal(mb); } public void genContentMarshal(ContextMethodBuilder mb) throws JiBXException { if (m_needLoad) { mb.loadObject(); } m_component.genContentMarshal(mb); } public void setLinkages() throws JiBXException { // find the structure being used DefinitionContext defc = m_container.getDefinitionContext(); IComponent impl = defc.getNamedStructure(m_label); // verify compatible use of structure String type = (m_property == null) ? m_contextObject.getBoundClass().getClassName() : m_property.getTypeName(); ClassFile cf = ClassCache.getClassFile(type); String itype = impl.getType(); if (!cf.isSuperclass(itype)) { throw new JiBXException("Reference to structure " + m_label + " has object of type " + type + " rather than required " + itype); } // generate component matching mapping type IComponent wrap; if (impl instanceof DirectObject) { wrap = new DirectProperty(m_property, (DirectObject)impl); } else if (m_property == null || m_property.isImplicit()) { wrap = impl; m_needLoad = impl instanceof ObjectBinding; } else { wrap = new ComponentProperty(m_property, impl, m_skipMarshal); } // set the wrapped component used for all other calls setWrappedComponent(wrap); m_component.setLinkages(); } // DEBUG public void print(int depth) { BindingDefinition.indent(depth); System.out.print("structure reference to " + m_label); if (m_property != null) { System.out.println(" using " + m_property.toString()); } System.out.println(); } } libjibx-java-1.1.6a/build/src/org/jibx/binding/def/ValueChild.java0000644000175000017500000010457211005476514024562 0ustar moellermoeller/* Copyright (c) 2003-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.def; import org.apache.bcel.Constants; import org.apache.bcel.generic.*; import org.jibx.binding.classes.*; import org.jibx.runtime.JiBXException; /** * Attribute or simple content value definition from binding. This organizes * information for anything that can be converted to and from a simple * String. Content values include both elements with only character * data content and text, as character data content or CDATA sections. * * @author Dennis M. Sosnoski * @version 1.0 */ public class ValueChild implements IComponent { // // Ident type enumeration. /*package*/ static final int DIRECT_IDENT = 0; /*package*/ static final int AUTO_IDENT = 1; /*package*/ static final int DEF_IDENT = 2; /*package*/ static final int REF_IDENT = 3; // // Value style enumeration. /*package*/ static final int ATTRIBUTE_STYLE = 0; /*package*/ static final int ELEMENT_STYLE = 1; /*package*/ static final int TEXT_STYLE = 2; /*package*/ static final int CDATA_STYLE = 3; // // Constants for unmarshalling. /** Prefix used for backfill classes. */ private static final String BACKFILL_SUFFIX = "_backfill_"; private static final String[] BACKFILL_INTERFACES = { "org.jibx.runtime.impl.BackFillReference" }; private static final String BACKFILL_METHODNAME = "backfill"; private static final Type[] BACKFILL_METHODARGS = { Type.OBJECT }; private static final String BOUNDREF_NAME = "m_obj"; private static final String CHECK_ELEMENT_NAME = "org.jibx.runtime.impl.UnmarshallingContext.isAt"; private static final String CHECK_ATTRIBUTE_NAME = "org.jibx.runtime.impl.UnmarshallingContext.hasAttribute"; private static final String CHECK_SIGNATURE = "(Ljava/lang/String;Ljava/lang/String;)Z"; private static final String UNMARSHAL_DEFREF_ATTR_NAME = "org.jibx.runtime.impl.UnmarshallingContext.attributeExistingIDREF"; private static final String UNMARSHAL_DEFREF_ELEM_NAME = "org.jibx.runtime.impl.UnmarshallingContext.parseElementExistingIDREF"; private static final String UNMARSHAL_FWDREF_ATTR_NAME = "org.jibx.runtime.impl.UnmarshallingContext.attributeForwardIDREF"; private static final String UNMARSHAL_FWDREF_ELEM_NAME = "org.jibx.runtime.impl.UnmarshallingContext.parseElementForwardIDREF"; private static final String UNMARSHAL_DEFREF_SIGNATURE = "(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/Object;"; private static final String REGISTER_BACKFILL_NAME = "org.jibx.runtime.impl.UnmarshallingContext.registerBackFill"; private static final String REGISTER_BACKFILL_SIGNATURE = "(ILorg/jibx/runtime/impl/BackFillReference;)V"; private static final String DEFINE_ID_NAME = "org.jibx.runtime.impl.UnmarshallingContext.defineID"; private static final String DEFINE_ID_SIGNATURE = "(Ljava/lang/String;ILjava/lang/Object;)V"; private static final String UNMARSHAL_TEXT_NAME = "org.jibx.runtime.impl.UnmarshallingContext.parseContentText"; private static final String UNMARSHAL_TEXT_SIGNATURE = "()Ljava/lang/String;"; private static final String UNMARSHAL_ELEMENT_TEXT_NAME = "org.jibx.runtime.impl.UnmarshallingContext.parseElementText"; private static final String UNMARSHAL_ELEMENT_TEXT_SIGNATURE = "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"; private static final String UNMARSHAL_PARSE_IF_START_NAME = "org.jibx.runtime.impl.UnmarshallingContext.parseIfStartTag"; private static final String UNMARSHAL_PARSE_IF_START_SIGNATURE = "(Ljava/lang/String;Ljava/lang/String;)Z"; private static final String UNMARSHAL_PARSE_TO_START_NAME = "org.jibx.runtime.impl.UnmarshallingContext.parseToStartTag"; private static final String UNMARSHAL_PARSE_TO_START_SIGNATURE = "(Ljava/lang/String;Ljava/lang/String;)V"; private static final String UNMARSHAL_PARSE_PAST_END_NAME = "org.jibx.runtime.impl.UnmarshallingContext.parsePastEndTag"; private static final String UNMARSHAL_PARSE_PAST_END_SIGNATURE = "(Ljava/lang/String;Ljava/lang/String;)V"; private static final String MARSHAL_TEXT_NAME = "org.jibx.runtime.impl.MarshallingContext.writeContent"; private static final String MARSHAL_CDATA_NAME = "org.jibx.runtime.impl.MarshallingContext.writeCData"; private static final String MARSHAL_TEXT_SIGNATURE = "(Ljava/lang/String;)Lorg/jibx/runtime/impl/MarshallingContext;"; private static final String UNMARSHALLING_THROWEXCEPTION_METHOD = "org.jibx.runtime.impl.UnmarshallingContext.throwException"; private static final String UNMARSHALLING_THROWEXCEPTION_SIGNATURE = "(Ljava/lang/String;)V"; protected static final String MARSHAL_ATTRIBUTE = "org.jibx.runtime.impl.MarshallingContext.attribute"; protected static final String MARSHAL_ELEMENT = "org.jibx.runtime.impl.MarshallingContext.element"; protected static final String MARSHAL_SIGNATURE = "(ILjava/lang/String;Ljava/lang/String;)" + "Lorg/jibx/runtime/impl/MarshallingContext;"; protected static final String MARSHAL_STARTTAG_ATTRIBUTES = "org.jibx.runtime.impl.MarshallingContext.startTagAttributes"; protected static final String MARSHAL_STARTTAG_SIGNATURE = "(ILjava/lang/String;)Lorg/jibx/runtime/impl/MarshallingContext;"; protected static final String MARSHAL_CLOSESTART_EMPTY = "org.jibx.runtime.impl.MarshallingContext.closeStartEmpty"; protected static final String MARSHAL_CLOSESTART_EMPTY_SIGNATURE = "()Lorg/jibx/runtime/impl/MarshallingContext;"; protected static final String UNMARSHAL_ATTRIBUTE_BOOLEAN_NAME = "org.jibx.runtime.impl.UnmarshallingContext.attributeBoolean"; protected static final String UNMARSHAL_ATTRIBUTE_BOOLEAN_SIGNATURE = "(Ljava/lang/String;Ljava/lang/String;Z)Z"; // // Actual instance data /** Containing binding definition structure. */ private final IContainer m_container; /** Containing object context. */ private final IContextObj m_objContext; /** Value style code. */ private final int m_valueStyle; /** Constant value. */ private final String m_constantValue; /** Ident type code. */ private final int m_identType; /** Attribute or element name information. */ private final NameDefinition m_name; /** Fully qualified name of type. */ private final String m_type; /** Nillable element flag. */ private final boolean m_isNillable; /** Linked property information. */ private final PropertyDefinition m_property; /** Conversion handling for value. */ private final StringConversion m_conversion; /** Mapping definition for object class supplying identifier. */ private IMapping m_idRefMap; /** * Constructor. Saves the context information for later use. * * @param contain containing binding definition structure * @param objc containing object context * @param name element or attribute name information (may be * null) * @param prop property reference information * @param conv string conversion handler * @param style value style code * @param ident identifier type code * @param constant value for constant * @param nillable nillable element flag */ public ValueChild(IContainer contain, IContextObj objc, NameDefinition name, PropertyDefinition prop, StringConversion conv, int style, int ident, String constant, boolean nillable) { m_container = contain; m_objContext = objc; m_name = name; m_property = prop; m_type = prop.getTypeName(); m_conversion = conv; m_valueStyle = style; m_identType = ident; m_constantValue = constant; m_isNillable = nillable; } /** * Create backfill handler class if it does not already exist. This either * looks up the existing backfill handler class or creates a new one * specifically for this value. * * @return backfill handler class for value * @throws JiBXException if error in configuration */ private ClassFile createBackfillClass() throws JiBXException { // create the new class BoundClass bc = m_objContext.getBoundClass(); BindingDefinition def = m_container.getBindingRoot(); String name = bc.getClassFile().deriveClassName(def.getPrefix(), BACKFILL_SUFFIX + m_property.getName()); ClassFile base = ClassCache.getClassFile("java.lang.Object"); ClassFile cf = new ClassFile(name, bc.getClassFile().getRoot(), base, Constants.ACC_PUBLIC, BACKFILL_INTERFACES); // add member variable for bound class reference String type = bc.getClassFile().getName(); ClassItem ref = cf.addPrivateField(type, BOUNDREF_NAME); // add the constructor taking bound class reference Type[] args = new Type[] { ClassItem.typeFromName(type) }; MethodBuilder mb = new ExceptionMethodBuilder("", Type.VOID, args, cf, (short)0); // call the superclass constructor mb.appendLoadLocal(0); mb.appendCallInit("java.lang.Object", "()V"); // store bound class reference to member variable mb.appendLoadLocal(0); mb.appendLoadLocal(1); mb.appendPutField(ref); mb.appendReturn(); mb.codeComplete(false); mb.addMethod(); // add actual backfill interface implementation method mb = new ExceptionMethodBuilder(BACKFILL_METHODNAME, Type.VOID, BACKFILL_METHODARGS, cf, Constants.ACC_PUBLIC); mb.appendLoadLocal(0); mb.appendGetField(ref); mb.appendLoadLocal(1); mb.appendCreateCast(m_property.getSetValueType()); m_property.genStore(mb); mb.appendReturn(); mb.codeComplete(false); mb.addMethod(); // return unique instance of class return MungedClass.getUniqueSupportClass(cf); } /** * Generate unmarshalling code for object identifier reference. The code * generated by this method assumes the unmarshalling context and name have * already been loaded to the stack, and these are consumed by the code. * * @param mb method builder * @throws JiBXException if error in configuration */ private void genParseIdRef(ContextMethodBuilder mb) throws JiBXException { // first part of generated instruction sequence is to check if optional // value is present BranchWrapper ifmiss = null; if (m_property.isOptional()) { // use existing context reference and name information to check for // attribute or element present String name = m_valueStyle == ValueChild.ATTRIBUTE_STYLE ? CHECK_ATTRIBUTE_NAME : CHECK_ELEMENT_NAME; mb.appendCallVirtual(name, CHECK_SIGNATURE); BranchWrapper ifpres = mb.appendIFNE(this); // push a null value to be stored as result for missing case mb.appendACONST_NULL(); ifmiss = mb.appendUnconditionalBranch(this); // reload context reference and name information for use by actual // unmarshalling call mb.targetNext(ifpres); mb.loadContext(); m_name.genPushUriPair(mb); } // find index of target class ID map int index = m_container.getBindingRoot(). getIdClassIndex(m_property.getTypeName()); // check if forward references allowed if (m_container.getBindingRoot().isForwards()) { // generate call to unmarshal with forward allowed mb.appendLoadConstant(index); String name = m_valueStyle == ValueChild.ATTRIBUTE_STYLE ? UNMARSHAL_FWDREF_ATTR_NAME : UNMARSHAL_FWDREF_ELEM_NAME; mb.appendCallVirtual(name, UNMARSHAL_DEFREF_SIGNATURE); // check for null result returned mb.appendDUP(); BranchWrapper ifdef = mb.appendIFNONNULL(this); // build and register backfill handler; start by loading the // unmarshalling context, then load the index number of the target // class and create an instance of the backfill handler ClassFile backclas = createBackfillClass(); mb.loadContext(); mb.appendLoadConstant(index); mb.appendCreateNew(backclas.getName()); // duplicate the backfill handler reference, then load a reference // to the owning object and call the initializer before calling // the unmarshalling context to register the handler mb.appendDUP(); mb.loadObject(); mb.appendCallInit(backclas.getName(), "(" + m_objContext.getBoundClass().getClassFile().getSignature() + ")V"); mb.appendCallVirtual(REGISTER_BACKFILL_NAME, REGISTER_BACKFILL_SIGNATURE); // set branch target for case where already defined mb.targetNext(ifdef); } else { // generate call to unmarshal with predefined ID required mb.appendLoadConstant(index); String name = m_valueStyle == ValueChild.ATTRIBUTE_STYLE ? UNMARSHAL_DEFREF_ATTR_NAME : UNMARSHAL_DEFREF_ELEM_NAME; mb.appendCallVirtual(name, UNMARSHAL_DEFREF_SIGNATURE); } // handle object type conversion if needed mb.appendCreateCast(m_property.getSetValueType()); // store returned reference to property if (ifmiss != null) { mb.targetNext(ifmiss); } m_property.genStore(mb); } /** * Generate test if present code. This generates code that tests if the * child is present, leaving the result of the test (zero if missing, * nonzero if present) on the stack. * * @param mb unmarshal method builder * @throws JiBXException if configuration error */ public void genIfPresentTest(UnmarshalBuilder mb) throws JiBXException { // make sure this is an appropriate call if (m_name == null) { throw new JiBXException("Method call on invalid value"); } // load the unmarshalling context and name information, then call the // appropriate method to test for item present mb.loadContext(); m_name.genPushUriPair(mb); String name = (m_valueStyle == ValueChild.ATTRIBUTE_STYLE) ? CHECK_ATTRIBUTE_NAME : CHECK_ELEMENT_NAME; mb.appendCallVirtual(name, CHECK_SIGNATURE); } /** * Generate unmarshalling code. This internal method generates the * necessary code for handling the unmarshalling operation. The code * generated by this method restores the stack to the original state * when done. * * @param mb method builder * @throws JiBXException if error in configuration */ private void genUnmarshal(ContextMethodBuilder mb) throws JiBXException { // first part of generated instruction sequence is to preload object // reference for later use, then load the unmarshalling context and // the name information if (m_constantValue == null && !m_property.isImplicit()) { mb.loadObject(); } // prepare for parsing the element name mb.loadContext(); if (m_name != null) { m_name.genPushUriPair(mb); } // check if this is an identifier for object boolean isatt = (m_valueStyle == ValueChild.ATTRIBUTE_STYLE); if (m_identType == DEF_IDENT || m_identType == AUTO_IDENT) { // always unmarshal identifier value as text, then duplicate for use // if storing BindingDefinition.s_stringConversion.genParseRequired(isatt, mb); if (m_identType != AUTO_IDENT) { mb.appendDUP(); } // load the context and swap to reorder, load the index for the // class, and finally the ID'ed object, then call ID definition // method mb.loadContext(); mb.appendSWAP(); int index = m_container.getBindingRoot(). getIdClassIndex(m_property.getTypeName()); mb.appendLoadConstant(index); mb.loadObject(); mb.appendCallVirtual(DEFINE_ID_NAME, DEFINE_ID_SIGNATURE); // convert from text and store result using object reference loaded // earlier if (m_identType != AUTO_IDENT) { m_conversion.genFromText(mb); m_property.genStore(mb); } } else if (m_identType == REF_IDENT) { // generate code for unmarshalling object ID genParseIdRef(mb); } else if (m_constantValue == null) { // unmarshal and convert value if (m_isNillable) { // first check for element present at all BranchWrapper ifmiss = null; if (m_property.isOptional()) { mb.appendCallVirtual(CHECK_ELEMENT_NAME, CHECK_SIGNATURE); ifmiss = mb.appendIFEQ(this); } else { mb.appendCallVirtual(UNMARSHAL_PARSE_TO_START_NAME, UNMARSHAL_PARSE_TO_START_SIGNATURE); } // check for xsi:nil="true" mb.loadContext(); mb.appendLoadConstant("http://www.w3.org/2001/XMLSchema-instance"); mb.appendLoadConstant("nil"); mb.appendICONST_0(); mb.appendCallVirtual(UNMARSHAL_ATTRIBUTE_BOOLEAN_NAME, UNMARSHAL_ATTRIBUTE_BOOLEAN_SIGNATURE); BranchWrapper notnil = mb.appendIFEQ(this); // code to handle nil case just parses past end mb.loadContext(); m_name.genPushUriPair(mb); mb.appendCallVirtual(UNMARSHAL_PARSE_PAST_END_NAME, UNMARSHAL_PARSE_PAST_END_SIGNATURE); // merge path with element not present, which just loads null mb.targetNext(ifmiss); mb.appendACONST_NULL(); m_conversion.genFromText(mb); BranchWrapper ifnil = mb.appendUnconditionalBranch(this); // read element text and process for not-nil case mb.targetNext(notnil); mb.loadContext(); m_name.genPushUriPair(mb); mb.appendCallVirtual(UNMARSHAL_ELEMENT_TEXT_NAME, UNMARSHAL_ELEMENT_TEXT_SIGNATURE); m_conversion.genFromText(mb); mb.targetNext(ifnil); } else if (m_valueStyle == ValueChild.TEXT_STYLE || m_valueStyle == ValueChild.CDATA_STYLE) { // unmarshal text value directly and let handler convert mb.appendCallVirtual(UNMARSHAL_TEXT_NAME, UNMARSHAL_TEXT_SIGNATURE); m_conversion.genFromText(mb); } else if (m_property.isOptional() && (isatt || m_container.isContentOrdered())) { // parse value with possible default in ordered container m_conversion.genParseOptional(isatt, mb); } else { // parse required value, or value in unordered container m_conversion.genParseRequired(isatt, mb); } // handle object type conversion if needed if (!m_conversion.isPrimitive() && m_property != null) { String stype = m_conversion.getTypeName(); String dtype = m_property.getSetValueType(); mb.appendCreateCast(stype, dtype); } // store result using object reference loaded earlier m_property.genStore(mb); } else { // unmarshal and compare value BranchWrapper ifmiss = null; if (m_valueStyle == ValueChild.TEXT_STYLE || m_valueStyle == ValueChild.CDATA_STYLE) { // unmarshal text value directly and let handler convert mb.appendCallVirtual(UNMARSHAL_TEXT_NAME, UNMARSHAL_TEXT_SIGNATURE); } else if (m_property.isOptional() && (isatt || m_container.isContentOrdered())) { // parse optional attribute or element value m_conversion.genParseOptional(isatt, mb); mb.appendDUP(); ifmiss = mb.appendIFNULL(this); } else { // parse required attribute or element value m_conversion.genParseRequired(isatt, mb); } // compare unmarshalled value with required constant mb.appendDUP(); mb.appendLoadConstant(m_constantValue); mb.appendCallVirtual("java.lang.String.equals", "(Ljava/lang/Object;)Z"); BranchWrapper ifmatch = mb.appendIFNE(this); // throw exception on comparison error mb.appendCreateNew("java.lang.StringBuffer"); mb.appendDUP(); mb.appendLoadConstant("Expected constant value \"" + m_constantValue + "\", found \""); mb.appendCallInit("java.lang.StringBuffer", "(Ljava/lang/String;)V"); mb.appendSWAP(); mb.appendCallVirtual("java.lang.StringBuffer.append", "(Ljava/lang/String;)Ljava/lang/StringBuffer;"); mb.appendLoadConstant("\""); mb.appendCallVirtual("java.lang.StringBuffer.append", "(Ljava/lang/String;)Ljava/lang/StringBuffer;"); mb.appendCallVirtual("java.lang.StringBuffer.toString", "()Ljava/lang/String;"); mb.loadContext(); mb.appendSWAP(); mb.appendCallVirtual(UNMARSHALLING_THROWEXCEPTION_METHOD, UNMARSHALLING_THROWEXCEPTION_SIGNATURE); mb.appendACONST_NULL(); // finish by setting target for branch mb.targetNext(ifmatch); mb.targetNext(ifmiss); mb.appendPOP(); } } /** * Generate marshalling code. This internal method generates the * necessary code for handling the marshalling operation. The code * generated by this method restores the stack to the original state * when done. * * @param mb method builder * @throws JiBXException if error in configuration */ private void genMarshal(ContextMethodBuilder mb) throws JiBXException { if (m_constantValue == null) { // first part of generated instruction sequence is to generate a // check for an optional property present, then load the context // and the name information (if present) for later use, then // finally load the actual property value BranchWrapper ifmiss = null; String type = m_property.getTypeName(); if (m_property.hasTest()) { mb.loadObject(); ifmiss = m_property.genTest(mb); } else if (m_isNillable && !ClassItem.isPrimitive(type)) { // check for null object BranchWrapper ifhit; if (m_property.isImplicit()) { mb.appendDUP(); ifhit = mb.appendIFNONNULL(this); mb.appendPOP(); } else { mb.loadObject(); m_property.genLoad(mb); ifhit = mb.appendIFNONNULL(this); } // generate empty element with xsi:nil="true" mb.loadContext(); m_name.genPushIndexPair(mb); mb.appendCallVirtual(MARSHAL_STARTTAG_ATTRIBUTES, MARSHAL_STARTTAG_SIGNATURE); mb.appendLoadConstant(2); mb.appendLoadConstant("nil"); mb.appendLoadConstant("true"); mb.appendCallVirtual(MARSHAL_ATTRIBUTE, MARSHAL_SIGNATURE); mb.appendCallVirtual(MARSHAL_CLOSESTART_EMPTY, MARSHAL_CLOSESTART_EMPTY_SIGNATURE); mb.appendPOP(); ifmiss = mb.appendUnconditionalBranch(this); mb.targetNext(ifhit); } if (m_name != null) { // handle implicit property by first saving value to local, then // reloading after the name information is on the stack Type tobj = ClassItem.typeFromName(type); if (m_property.isImplicit()) { mb.defineSlot(this, tobj); } m_name.genPushIndexPair(mb); if (m_property.isImplicit()) { mb.appendLoadLocal(mb.getSlot(this)); mb.freeSlot(this); } } if (!m_property.isImplicit()) { mb.loadObject(); m_property.genLoad(mb); } // check for object identity definition (accessed through property) StringConversion convert = m_conversion; if (m_identType == REF_IDENT) { m_idRefMap.getImplComponent().genLoadId(mb); convert = BindingDefinition.s_stringConversion; type = "java.lang.String"; } // convert to expected type if object if (!ClassItem.isPrimitive(type)) { mb.appendCreateCast(type); } // convert and marshal value boolean isatt = m_valueStyle == ValueChild.ATTRIBUTE_STYLE; if (m_valueStyle == ValueChild.TEXT_STYLE || m_valueStyle == ValueChild.CDATA_STYLE) { convert.genToText(type, mb); String name = (m_valueStyle == ValueChild.TEXT_STYLE) ? MARSHAL_TEXT_NAME : MARSHAL_CDATA_NAME; mb.appendCallVirtual(name, MARSHAL_TEXT_SIGNATURE); } else if (m_property.isOptional()) { convert.genWriteOptional(isatt, type, mb); } else { convert.genWriteRequired(isatt, type, mb); } // finish by setting target for missing optional property test mb.targetNext(ifmiss); } else { // just write constant value directly if (m_name != null) { m_name.genPushIndexPair(mb); } mb.appendLoadConstant(m_constantValue); switch (m_valueStyle) { case ATTRIBUTE_STYLE: mb.appendCallVirtual(MARSHAL_ATTRIBUTE, MARSHAL_SIGNATURE); break; case ELEMENT_STYLE: mb.appendCallVirtual(MARSHAL_ELEMENT, MARSHAL_SIGNATURE); break; case TEXT_STYLE: mb.appendCallVirtual(MARSHAL_TEXT_NAME, MARSHAL_TEXT_SIGNATURE); break; case CDATA_STYLE: mb.appendCallVirtual(MARSHAL_CDATA_NAME, MARSHAL_TEXT_SIGNATURE); break; } } } /** * Get property name. If the child has an associated property this returns * the name of that property. * * @return name for child property */ public String getPropertyName() { if (m_property == null) { return null; } else { return m_property.getName(); } } /** * Check if implicit. * * @return true if implicit, false if not */ public boolean isImplicit() { return m_property.isThis(); } /** * Switch property from "this" to "implicit". */ public void switchProperty() { m_property.switchProperty(); } // // IComponent interface method definitions public boolean isOptional() { return m_property.isOptional(); } public boolean hasAttribute() { return m_valueStyle == ATTRIBUTE_STYLE; } public void genAttrPresentTest(ContextMethodBuilder mb) throws JiBXException { // make sure this is an appropriate call if (m_valueStyle != ATTRIBUTE_STYLE || m_name == null) { throw new JiBXException("Method call on invalid structure"); } // generate load of the unmarshalling context and the name information, // then just call the attribute check method mb.loadContext(); m_name.genPushUriPair(mb); mb.appendCallVirtual(CHECK_ATTRIBUTE_NAME, CHECK_SIGNATURE); } public void genAttributeUnmarshal(ContextMethodBuilder mb) throws JiBXException { if (m_valueStyle == ATTRIBUTE_STYLE) { genUnmarshal(mb); } } public void genAttributeMarshal(ContextMethodBuilder mb) throws JiBXException { if (m_valueStyle == ATTRIBUTE_STYLE) { genMarshal(mb); } } public boolean hasContent() { return m_valueStyle != ATTRIBUTE_STYLE; } public void genContentPresentTest(ContextMethodBuilder mb) throws JiBXException { // make sure this is an appropriate call if (m_valueStyle != ELEMENT_STYLE) { throw new JiBXException("Method call on invalid structure"); } // generate load of the unmarshalling context and the name information, // then just call the attribute check method mb.loadContext(); m_name.genPushUriPair(mb); mb.appendCallVirtual(CHECK_ELEMENT_NAME, CHECK_SIGNATURE); } public void genContentUnmarshal(ContextMethodBuilder mb) throws JiBXException { if (m_valueStyle != ATTRIBUTE_STYLE) { genUnmarshal(mb); } } public void genContentMarshal(ContextMethodBuilder mb) throws JiBXException { if (m_valueStyle != ATTRIBUTE_STYLE) { genMarshal(mb); } } public void genNewInstance(ContextMethodBuilder mb) { throw new IllegalStateException ("Internal error - no instance creation"); } public String getType() { return m_type; } public boolean hasId() { return m_identType == DEF_IDENT; } public void genLoadId(ContextMethodBuilder mub) throws JiBXException { m_property.genLoad(mub); } public NameDefinition getWrapperName() { return (m_valueStyle == ELEMENT_STYLE) ? m_name : null; } public void setLinkages() throws JiBXException { if (m_identType == REF_IDENT) { String type; if (m_property == null) { type = m_objContext.getBoundClass().getClassFile().getName(); } else { type = m_property.getTypeName(); } m_idRefMap = m_container.getDefinitionContext(). getClassMapping(type); if (m_idRefMap == null) { throw new JiBXException("No mapping defined for " + type + " used as IDREF target"); } else if (!m_idRefMap.getImplComponent().hasId()) { throw new JiBXException("No ID value defined for " + type + " used as IDREF target"); } } } // DEBUG public void print(int depth) { BindingDefinition.indent(depth); if (m_valueStyle == ELEMENT_STYLE) { if (m_isNillable) { System.out.print("nillable "); } System.out.print("element"); } else if (m_valueStyle == ATTRIBUTE_STYLE) { System.out.print("attribute"); } else if (m_valueStyle == TEXT_STYLE) { System.out.print("text"); } else if (m_valueStyle == CDATA_STYLE) { System.out.print("cdata"); } if (m_name != null) { System.out.print(" " + m_name.toString()); } if (m_property != null) { System.out.print(" from " + m_property.toString()); } System.out.println(); } } libjibx-java-1.1.6a/build/src/org/jibx/binding/generator/0000755000175000017500000000000011023035622023105 5ustar moellermoellerlibjibx-java-1.1.6a/build/src/org/jibx/binding/generator/BindingGenerator.java0000644000175000017500000014021710767273656027227 0ustar moellermoeller/* * Copyright (c) 2007-2008, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.generator; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import org.jibx.binding.model.BindingDirectory; import org.jibx.binding.model.BindingHolder; import org.jibx.binding.model.CollectionElement; import org.jibx.binding.model.ElementBase; import org.jibx.binding.model.IClass; import org.jibx.binding.model.MappingElement; import org.jibx.binding.model.NestingElementBase; import org.jibx.binding.model.StructureElement; import org.jibx.binding.model.StructureElementBase; import org.jibx.binding.model.ValueElement; import org.jibx.runtime.JiBXException; import org.jibx.runtime.QName; import org.jibx.runtime.Utility; import org.jibx.schema.codegen.ReferenceCountMap; import org.jibx.util.Types; /** * Binding generator implementation. * * @author Dennis M. Sosnoski */ public class BindingGenerator { /** Binding generation customizations. */ private final GlobalCustom m_global; /** Set of class names to be included. */ private final Set m_includeSet; /** Set of class names to be ignored. */ private final Set m_ignoreSet; /** Set of class names to be handled directly. */ private final Set m_directSet; /** Set of class names subclassed by other classes in binding. */ private final Set m_superSet; /** Map from fully-qualified class name to mapping details. */ private final Map m_mappingDetailsMap; /** Map from namespace URI to {@link UniqueNameSet} for type names. */ private final Map m_typeNamesMap; /** Map from namespace URI to {@link UniqueNameSet} for element names. */ private final Map m_elementNamesMap; /** Target package for binding code generation. */ private String m_targetPackage; /** Directory for bindings being built. */ private BindingDirectory m_directory; /** * Create a generator based on a particular set of customizations. * * @param glob */ public BindingGenerator(GlobalCustom glob) { m_global = glob; m_includeSet = new HashSet(); m_ignoreSet = new HashSet(); m_directSet = new HashSet(); m_superSet = new HashSet(); m_mappingDetailsMap = new HashMap(); m_typeNamesMap = new HashMap(); m_elementNamesMap = new HashMap(); m_directory = new BindingDirectory(glob.isForceClasses(), glob.isTrackSource(), glob.isAddConstructors(), glob.isInput(), glob.isOutput()); } /** * Check if a class represents a simple value. TODO: implement ClassCustom hooks for this purpose * * @param type fully qualified class name * @return true if simple value, false if not */ public boolean isValueClass(String type) { ClassCustom clas = m_global.forceClassCustomization(type); IClass sinfo = clas.getClassInformation().getSuperClass(); if (sinfo != null && "java.lang.Enum".equals(sinfo.getName())) { return true; } else { return false; } } /** * Check if a class needs to be included in the binding. This checks all members of the class and if necessary * superclasses, returning true if any member is ultimately found with a simple value. * * @param type fully qualified class name * @return true if class to be included in binding, false if it should be skipped */ public boolean checkInclude(String type) { if (m_includeSet.contains(type)) { return true; } else if (m_ignoreSet.contains(type)) { return false; } else { // check if any members are to be included boolean include = false; ClassCustom clas = m_global.forceClassCustomization(type); for (Iterator iter = clas.getMembers().iterator(); iter.hasNext();) { MemberCustom memb = (MemberCustom)iter.next(); String mtype = memb.isCollection() ? memb.getItemType() : memb.getWorkingType(); if (Types.isSimpleValue(mtype) || isValueClass(mtype) || !m_global.isKnownMapping(mtype) || checkInclude(mtype)) { include = true; break; } } if (!include) { // force superclass handling if appropriate if (clas.getMembers().size() > 0 && clas.isUseSuper()) { String stype = clas.getClassInformation().getSuperClass().getName(); if (!"java.lang.Object".equals(stype) && checkInclude(stype)) { include = true; } } } if (include) { m_includeSet.add(type); } else { m_ignoreSet.add(type); } return include; } } /** * Expand all references from a class. This checks the types of all members of the class, counting references and * calling itself recursively for any types which are not primitives and not java.* or javax.* classes. It also * expands the superclass, if specified by the class customizations. * * @param type fully qualified class name * @param refmap reference count map */ public void expandReferences(String type, ReferenceCountMap refmap) { if (checkInclude(type)) { // expand all references from members ClassCustom clas = m_global.forceClassCustomization(type); for (Iterator iter = clas.getMembers().iterator(); iter.hasNext();) { MemberCustom memb = (MemberCustom)iter.next(); String mtype = memb.isCollection() ? memb.getItemType() : memb.getWorkingType(); if (!Types.isSimpleValue(mtype) && !isValueClass(mtype) && !m_global.isKnownMapping(mtype)) { if ((mtype.startsWith("java.")) || (mtype.startsWith("javax."))) { throw new IllegalStateException("No way to handle type '" + mtype + '\''); } else if (checkInclude(mtype)) { if (refmap.incrementCount(mtype) <= 1) { expandReferences(mtype, refmap); } m_directSet.add(mtype); } } } // force superclass handling if appropriate if (clas.getMembers().size() > 0 && clas.isUseSuper()) { String stype = clas.getClassInformation().getSuperClass().getName(); if (!"java.lang.Object".equals(stype) && !Types.isSimpleValue(stype) && !isValueClass(stype) && !m_global.isKnownMapping(stype) && checkInclude(stype)) { if (refmap.incrementCount(stype) <= 1) { expandReferences(stype, refmap); } m_superSet.add(stype); } } } } /** * Set creation information for structure binding component. This includes the declared type, as well as the create * type and factory method. * * @param memb * @param struct */ private void setTypes(MemberCustom memb, StructureElementBase struct) { String type = memb.getActualType(); if (type != null && !type.equals(memb.getStatedType())) { struct.setDeclaredType(type); } struct.setCreateType(memb.getCreateType()); struct.setFactoryName(memb.getFactoryMethod()); } /** * Define the details of a collection binding. Collection bindings may be empty (in the case where the item type is * directly mapped), have a <value> child element, or have either a mapping reference or direct definition * <structure> child element. This determines the appropriate form based on the item type. * * @param itype item type * @param iname item name * @param coll * @param hold */ public void defineCollection(String itype, String iname, CollectionElement coll, BindingHolder hold) { // check item type handling BindingMappingDetail detail = (BindingMappingDetail)m_mappingDetailsMap.get(itype); ClassCustom icust = m_global.getClassCustomization(itype); if (detail != null) { if (detail.isUseAbstract() && !detail.isExtended()) { // add reference to appropriate binding QName qname = detail.getTypeQName(); hold.addReference(m_directory.findBinding(qname.getUri())); // add with map-as for abstract mapping if (iname == null) { iname = icust.getElementName(); } StructureElement struct = new StructureElement(); if (qname == null) { struct.setMapAsName(itype); } else { // set the type reference struct.setMapAsQName(qname); // check dependency on other binding m_directory.addDependency(qname.getUri(), hold); } struct.setName(iname); struct.setCreateType(icust.getCreateType()); struct.setFactoryName(icust.getFactoryMethod()); coll.addChild(struct); } else { // just set item-type for concrete mapping coll.setItemTypeName(itype); } } else if (m_global.isKnownMapping(itype)) { // just set item-type for known mapping coll.setItemTypeName(itype); } else if (Types.isSimpleValue(itype) || isValueClass(itype)) { // add for simple type, or enum type with optional value method ValueElement value = new ValueElement(); value.setName(iname); value.setDeclaredType(itype); coll.addChild(value); if (icust != null) { value.setDefaultText(icust.getEnumValueMethod()); } } else { // embed structure definition within the collection StructureElement struct = new StructureElement(); struct.setDeclaredType(itype); if (iname == null) { iname = icust.getElementName(); } struct.setName(iname); fillStructure(icust, null, null, struct, hold); coll.addChild(struct); } } /** * Add binding details for the actual members of a class, excluding any members which have been handled separately. * * @param cust class customization information * @param exmethmap map from property method names to be excluded to the corresponding property customizations * @param inmethmap map from property method names included in binding to the corresponding property customizations * (populated by this method, null if not needed) * @param parent containing binding component * @param hold binding holder */ private void addMemberBindings(ClassCustom cust, Map exmethmap, Map inmethmap, NestingElementBase parent, BindingHolder hold) { // generate binding component for each member of class for (Iterator iter = cust.getMembers().iterator(); iter.hasNext();) { // skip this member if excluded property MemberCustom memb = (MemberCustom)iter.next(); String gmeth = memb.getGetName(); String smeth = memb.getSetName(); if (memb.isProperty() && !memb.isPrivate()) { MemberCustom match = (MemberCustom)(gmeth != null ? exmethmap.get(gmeth) : exmethmap.get(smeth)); if (match == null) { // add methods for included property to map implemented for this binding if (inmethmap != null) { if (gmeth != null) { inmethmap.put(gmeth, memb); } if (smeth != null) { inmethmap.put(smeth, memb); } } } else { continue; } } // check for repeated item if (memb.isCollection()) { // create collection element for field or property CollectionElement coll = new CollectionElement(); if (memb.getFieldName() == null) { coll.setGetName(gmeth); coll.setSetName(memb.getSetName()); } else { coll.setFieldName(memb.getFieldName()); } setTypes(memb, coll); // set the element name, if defined String name = memb.getXmlName(); if (cust.isWrapCollections() && name != null) { coll.setName(name); } // check for optional value if (!memb.isRequired()) { coll.setUsageName("optional"); } // check for type defined String itype = memb.getItemType(); if (itype != null) { // set name to be used for items in collection String iname = memb.getItemName(); if (iname == null) { // use name based on item type String simple = itype; int split = simple.lastIndexOf('.'); if (split >= 0) { simple = simple.substring(0, split); } iname = cust.convertName(simple); } // define the collection details defineCollection(itype, iname, coll, hold); // check for special case of two unwrapped collections with same item-type and no children ArrayList siblings = parent.children(); if (siblings.size() > 0 && coll.children().size() == 0 && coll.getName() == null) { ElementBase sibling = (ElementBase)siblings.get(siblings.size()-1); if (sibling.type() == ElementBase.COLLECTION_ELEMENT) { CollectionElement lastcoll = (CollectionElement)sibling; if (lastcoll.children().size() == 0 && lastcoll.getName() == null && Utility.safeEquals(lastcoll.getItemTypeName(), coll.getItemTypeName())) { throw new IllegalStateException("Need to use wrapper element for collection member '" + memb.getBaseName() + "' of class " + cust.getName()); } } } } parent.addChild(coll); } else { // check whether value or structure String wtype = memb.getWorkingType(); if (Types.isSimpleValue(wtype) || isValueClass(wtype)) { // add for simple type or enum ValueElement value = new ValueElement(); if (memb.getFieldName() == null) { value.setGetName(gmeth); value.setSetName(memb.getSetName()); } else { value.setFieldName(memb.getFieldName()); } value.setName(memb.getXmlName()); // pass on optional value method for enum ClassCustom icust = m_global.getClassCustomization(wtype); if (icust != null) { value.setEnumValueName(icust.getEnumValueMethod()); } // check for optional value if (!memb.isRequired()) { value.setUsageName("optional"); } // configure added property values int style = memb.getStyle(); if (style == NestingBase.ATTRIBUTE_VALUE_STYLE) { value.setStyleName("attribute"); } else if (style == NestingBase.ELEMENT_VALUE_STYLE) { value.setStyleName("element"); } else { value.setStyleName("text"); } if (memb.getActualType() != null) { value.setDeclaredType(memb.getActualType()); } parent.addChild(value); } else { // create with name and access information StructureElement struct = new StructureElement(); if (memb.getFieldName() == null) { struct.setGetName(gmeth); struct.setSetName(memb.getSetName()); } else { struct.setFieldName(memb.getFieldName()); } setTypes(memb, struct); // check for optional value if (!memb.isRequired()) { struct.setUsageName("optional"); } // set details based on class handling ClassCustom mcust = m_global.getClassCustomization(memb.getWorkingType()); fillStructure(mcust, memb, null, struct, hold); parent.addChild(struct); } } } } /** * Add binding details for the full representation of a class. This includes superclasses, if configured, and makes * use of any appropriate <mapping> definitions as part of the binding. * * @param cust class customization information * @param memb member customization information (null if implicit reference, rather than member) * @param inmethmap map from property method names included in binding to the corresponding property customizations * (populated by this method, null if not needed) * @param struct structure element referencing the class * @param hold binding holder */ private void fillStructure(ClassCustom cust, MemberCustom memb, Map inmethmap, StructureElement struct, BindingHolder hold) { // check for an actual definition String type = cust.getName(); BindingMappingDetail detail = (BindingMappingDetail)m_mappingDetailsMap.get(type); if (detail != null) { // use existing definition for type if (detail.isUseAbstract() && !detail.isExtended()) { QName qname = detail.getTypeQName(); m_directory.addDependency(qname.getUri(), hold); struct.setMapAsQName(qname); if (memb != null) { struct.setName(memb.getXmlName()); } } else { struct.setMapAsName(cust.getName()); } if (inmethmap != null) { inmethmap.putAll(detail.getAccessMethodMap()); } } else if (!m_global.isKnownMapping(type)) { // add member reference information if (memb != null) { // check for type settings needed if (memb.getActualType() != null) { struct.setDeclaredType(memb.getActualType()); } if (memb.getCreateType() != null) { struct.setCreateType(memb.getCreateType()); } if (memb.getFactoryMethod() != null) { struct.setFactoryName(memb.getFactoryMethod()); } // add a name if an optional value if (!memb.isRequired()) { struct.setName(memb.getXmlName()); } } // check if need to use superclass in binding IClass clas = cust.getClassInformation(); IClass sclas = clas.getSuperClass(); String stype = sclas.getName(); Map exmethmap = Collections.EMPTY_MAP; if (checkInclude(stype)) { // check if any added content from this class ClassCustom scust = m_global.getClassCustomization(stype); exmethmap = new HashMap(); if (cust.getMembers().size() > 0) { // add child element for superclass, followed by content from this class StructureElement sstruct = new StructureElement(); sstruct.setDeclaredType(stype); fillStructure(scust, null, exmethmap, sstruct, hold); struct.addChild(sstruct); } else { // just replace class reference with superclass reference in existing struct.setDeclaredType(stype); fillStructure(scust, null, exmethmap, struct, hold); } } else { // check for interface with abstract mapping to reference String[] intfs = sclas.getInterfaces(); for (int i = 0; i < intfs.length; i++) { String intf = intfs[i]; BindingMappingDetail idetail = (BindingMappingDetail)m_mappingDetailsMap.get(intf); if (idetail != null && idetail.isUseAbstract() && idetail.getTypeQName() == null) { // reference abstract mapped interface struct = new StructureElement(); struct.setMapAsName(intf); exmethmap = idetail.getAccessMethodMap(); break; } } } // fill in content details from this class if (inmethmap != null) { inmethmap.putAll(exmethmap); } if (cust.getMembers().size() > 0) { addMemberBindings(cust, exmethmap, inmethmap, struct, hold); } } } /** * Add the <mapping> definition for a class to a binding. This creates either an abstract mapping with a type * name, or a concrete mapping with an element name, as determined by the passed-in mapping information. If the * class is a concrete mapping that extends or implements another class with an anonymous abstract mapping, the * created <mapping> will extend that base mapping. TODO: type substitution requires extending the binding * definition * * @param type fully qualified class name * @param detail mapping details */ private void addMapping(String type, BindingMappingDetail detail) { // create the basic mapping structure(s) ClassCustom cust = m_global.forceClassCustomization(type); MappingElement mainmapping = null; QName qname = null; MappingElement mapcon = null; IClass clas = cust.getClassInformation(); if (detail.isUseConcrete()) { // create concrete mapping mapcon = createMapping(type, cust); qname = detail.getElementQName(); mapcon.setName(qname.getName()); detail.setConcreteMapping(mapcon); // make "concrete" mapping abstract if no class creation possible if (clas.isAbstract() || clas.isInterface()) { mapcon.setAbstract(true); } // fill details directly to this mapping unless abstract also created mainmapping = mapcon; } MappingElement mapabs = null; if (detail.isUseAbstract()) { // create abstract mapping mapabs = createMapping(type, cust); mapabs.setAbstract(true); qname = detail.getTypeQName(); mapabs.setTypeQName(qname); detail.setAbstractMapping(mapabs); // use abstract mapping for details (concrete will reference this one) mainmapping = mapabs; } if (mainmapping != null) { // check for superclass mapping to be extended (do this first for // compatibility with schema type extension) BindingHolder hold = m_directory.findBinding(qname.getUri()); StructureElement struct = null; String ptype = detail.getExtendsType(); Map exmembmap = Collections.EMPTY_MAP; Map inmembmap = new HashMap(); if (ptype == null) { // not extending a base mapping, check if need to include superclass IClass parent = clas.getSuperClass(); if (cust.isUseSuper() && parent != null) { ptype = parent.getName(); if (checkInclude(ptype)) { struct = new StructureElement(); struct.setDeclaredType(ptype); ClassCustom scust = m_global.getClassCustomization(ptype); exmembmap = new HashMap(); fillStructure(scust, null, exmembmap, struct, hold); } } } else { // create reference to parent mapping struct = new StructureElement(); BindingMappingDetail pdetail = (BindingMappingDetail)m_mappingDetailsMap.get(ptype); if (!pdetail.isGenerated()) { addMapping(ptype, pdetail); } exmembmap = pdetail.getAccessMethodMap(); if (pdetail.isUseAbstract()) { // reference abstract mapped superclass QName tname = pdetail.getTypeQName(); if (tname == null) { throw new IllegalStateException("Internal error: unimplemented case of superclass " + ptype + " to be extended by subclass " + type + ", without an abstract "); } else { m_directory.addDependency(tname.getUri(), hold); struct.setMapAsQName(tname); } } else { // reference concrete mapped superclass struct.setMapAsName(ptype); } // set extension for child concrete mapping if (mapcon != null) { mapcon.setExtendsName(ptype); } } // add extension reference structure to mapping if (struct != null) { mainmapping.addChild(struct); } // add all details of class member handling to binding inmembmap.putAll(exmembmap); addMemberBindings(cust, exmembmap, inmembmap, mainmapping, hold); hold.addMapping(mainmapping); if (mapabs != null && mapcon != null) { // define content as structure reference to abstract mapping struct = new StructureElement(); QName tname = detail.getTypeQName(); struct.setMapAsQName(tname); mapcon.addChild(struct); hold.addMapping(mapcon); } // set the member property map for mapping detail.setAccessMethodMap(inmembmap); detail.setGenerated(true); } else { throw new IllegalStateException("Internal error: mapping detail for " + type + " with neither abstract nor concrete mapping"); } } /** * Create and initialize a <mapping> element. * * @param type * @param cust * @return mapping */ private MappingElement createMapping(String type, ClassCustom cust) { MappingElement mapabs; mapabs = new MappingElement(); mapabs.setClassName(type); mapabs.setCreateType(cust.getCreateType()); mapabs.setFactoryName(cust.getFactoryMethod()); return mapabs; } /** * Add the details for mapping a class. * TODO: should add checks for unique particle attribution rule - need to check for duplicate element names without * a required element in between, and if found alter the names after the first; note that duplicates may be from the * base type, or from a group; also need to make sure attribute names are unique * * @param abstr force abstract mapping flag * @param ename element name for concrete mapping (null if unspecified) * @param type fully-qualified class name * @return mapping details */ private BindingMappingDetail addMappingDetails(Boolean abstr, QName ename, String type) { // check for existing detail BindingMappingDetail detail = (BindingMappingDetail)m_mappingDetailsMap.get(type); if (detail == null) { // provide warning when interface used with field access ClassCustom cust = m_global.getClassCustomization(type); IClass sclas = cust.getClassInformation(); if (sclas.isInterface() && !cust.isPropertyAccess()) { System.out.println("Warning: generating mapping for interface " + type + " without checking properties - consider setting property-access='true'"); } // check if a superclass is base for extension String stype = null; Boolean isabs = null; while ((sclas = sclas.getSuperClass()) != null) { if (m_directSet.contains(sclas.getName())) { stype = sclas.getName(); isabs = Boolean.valueOf(sclas.isAbstract()); break; } } // TODO: really should check for multiple superclasses/interfaces to // be handled (and generate a warning, since they can't be handled) if (stype == null) { // check if an interface is base for extension sclas = cust.getClassInformation(); loop: while (sclas != null) { String[] intfs = sclas.getInterfaces(); for (int i = 0; i < intfs.length; i++) { String itype = intfs[i]; while (true) { if (m_directSet.contains(itype)) { stype = itype; isabs = Boolean.TRUE; break loop; } else { ClassCustom icust = m_global.getClassCustomization(itype); if (icust == null) { break; } else { // check for interface (should only ever be one) of interface String[] sintfs = icust.getClassInformation().getInterfaces(); if (sintfs.length > 0) { itype = sintfs[0]; } else { break; } } } } } sclas = sclas.getSuperClass(); } } if (stype != null) { BindingMappingDetail sdetail = addMappingDetails(isabs, null, stype); sdetail.setExtended(true); } // fix names if necessary to avoid conflicts QName tname = fixTypeName(cust.getTypeQName()); if (isQNameUsed(ename, m_elementNamesMap)) { throw new IllegalStateException("Internal error - attempting to create mapping with element name " + ename + " already used"); } else if (ename == null) { ename = cust.getElementQName(); } ename = fixElementName(ename); // create mapping details as specified boolean abs = (abstr == null) ? cust.isMapAbstract() : abstr.booleanValue(); detail = new BindingMappingDetail(type, tname, ename, stype); if (abs || !cust.isConcrete()) { detail.setUseAbstract(true); } else { detail.setUseConcrete(true); } m_mappingDetailsMap.put(type, detail); // force concrete mapping if extension or base for extension if (abs && (sclas != null || m_superSet.contains(type))) { detail.setUseConcrete(true); } // check if package usable as target for binding code if (m_targetPackage == null && cust.getClassInformation().isModifiable()) { m_targetPackage = ((PackageCustom)cust.getParent()).getName(); } } else if (abstr != null) { // mapping detail already generated, just make sure of variety if (abstr.booleanValue()) { detail.setUseAbstract(true); } else { detail.setUseConcrete(true); } } return detail; } /** * Check if a qualified name is already defined within a category of names. * * @param qname requested qualified name (null allowed, always returns false) * @param map namespace URI to {@link UniqueNameSet} map for category * @return true if used, false if not */ private boolean isQNameUsed(QName qname, Map map) { if (qname != null) { UniqueNameSet nameset = (UniqueNameSet)map.get(qname.getUri()); if (nameset != null) { return nameset.contains(qname.getName()); } } return false; } /** * Fix local name to be unique within the appropriate namespace for a category of names. * * @param qname requested qualified name (null allowed, always returns null) * @param map namespace URI to {@link UniqueNameSet} map for category * @return unique version of qualified name */ private QName fixQName(QName qname, Map map) { if (qname != null) { String uri = qname.getUri(); UniqueNameSet nameset = (UniqueNameSet)map.get(uri); if (nameset == null) { nameset = new UniqueNameSet(); map.put(uri, nameset); } String base = qname.getName(); String name = nameset.add(base); if (name.equals(base)) { return qname; } else { return new QName(uri, name); } } else { return null; } } /** * Fix element local name to be unique within the appropriate namespace. * * @param qname requested qualified name (null allowed, always returns null) * @return unique version of qualified name */ private QName fixElementName(QName qname) { return fixQName(qname, m_elementNamesMap); } /** * Fix type local name to be unique within the appropriate namespace. * * @param qname requested qualified name (null allowed, always returns null) * @return unique version of qualified name */ private QName fixTypeName(QName qname) { return fixQName(qname, m_typeNamesMap); } /** * Find closure of references from a supplied list of classes. References counted, and direct references are * accumulated for handling. The supplied list may include generic classes with type parameters. * * @param classes * @param refmap */ private void findReferences(List classes, ReferenceCountMap refmap) { for (int i = 0; i < classes.size(); i++) { String type = (String)classes.get(i); int split = type.indexOf('<'); if (split > 0) { type = type.substring(split + 1, type.length() - 1); } expandReferences(type, refmap); } } /** * Flag classes referenced more than once to be handled with <mapping> definitions. * * @param refmap */ private void flagMultipleReferences(ReferenceCountMap refmap) { for (Iterator iter = refmap.iterator(); iter.hasNext();) { String type = (String)iter.next(); if (refmap.getCount(type) > 1) { m_directSet.add(type); } } } /** * Add mapping details for classes referenced more than once. * * @param refmap */ private void addReferencedMappings(ReferenceCountMap refmap) { for (Iterator iter = refmap.iterator(); iter.hasNext();) { String type = (String)iter.next(); if (refmap.getCount(type) > 1 && !m_mappingDetailsMap.containsKey(type)) { addMappingDetails(null, null, type); } } } /** * Generate the mapping definitions for classes referenced more than once. * * @param refmap */ private void generateReferencedMappings(ReferenceCountMap refmap) { for (Iterator iter = refmap.iterator(); iter.hasNext();) { String type = (String)iter.next(); if (refmap.getCount(type) > 1) { BindingMappingDetail detail = (BindingMappingDetail)m_mappingDetailsMap.get(type); if (!detail.isGenerated()) { addMapping(type, detail); } } } } /** * Generate mappings for a list of classes. The mapping details must have been configured before this method is * called. * * @param classes */ private void generateMappings(List classes) { for (int i = 0; i < classes.size(); i++) { String type = (String)classes.get(i); BindingMappingDetail detail = (BindingMappingDetail)m_mappingDetailsMap.get(type); if (!detail.isGenerated()) { addMapping(type, detail); } } } /** * Fix the base classes that are to be used as extension types. This step is needed to generate the substitution * group structures for classes which are both referenced directly and extended by other classes. The method must be * called after all mapping details have been constucted but before the actual binding generation. */ private void fixBaseClasses() { for (Iterator iter = m_directSet.iterator(); iter.hasNext();) { String type = (String)iter.next(); BindingMappingDetail detail = (BindingMappingDetail)m_mappingDetailsMap.get(type); if (detail != null && detail.isExtended()) { detail.setUseConcrete(true); } } } /** * Generate binding(s) for a list of classes. This creates a <mapping> definition for each class in the list, and * either embeds <structure> definitions or creates separate <mapping>s for other classes referenced by these * classes. If all the classes use the same namespace only the binding for that namespace will be created; * otherwise, a separate binding will be created for each namespace. * * @param abstr force abstract mapping flag (determined by class customizations if null) * @param classes class list */ public void generate(Boolean abstr, List classes) { // start by expanding and counting references from supplied classes ReferenceCountMap refmap = new ReferenceCountMap(); m_directSet.addAll(classes); findReferences(classes, refmap); flagMultipleReferences(refmap); // set the classes to be handled with definitions for (int i = 0; i < classes.size(); i++) { addMappingDetails(abstr, null, (String)classes.get(i)); } addReferencedMappings(refmap); fixBaseClasses(); // generate the binding(s) generateMappings(classes); generateReferencedMappings(refmap); } /** * Generate binding(s) for lists of classes. This creates a <mapping> definition for each class in the lists, and * either embeds <structure> definitions or creates separate <mapping>s for other classes referenced by these * classes. If all the classes use the same namespace only the binding for that namespace will be created; * otherwise, a separate binding will be created for each namespace. * * @param qnames list of names for concrete mappings * @param concrs list of classes to be given concrete mappings * @param abstrs list of classes to be given abstract mappings */ public void generateSpecified(ArrayList qnames, List concrs, List abstrs) { // start by expanding and counting references from supplied classes ReferenceCountMap refmap = new ReferenceCountMap(); m_directSet.addAll(concrs); m_directSet.addAll(abstrs); findReferences(concrs, refmap); findReferences(abstrs, refmap); flagMultipleReferences(refmap); // set classes to be handled with mapping definitions for (int i = 0; i < concrs.size(); i++) { BindingMappingDetail detail = addMappingDetails(Boolean.FALSE, (QName)qnames.get(i), (String)concrs.get(i)); if (detail.getElementQName() == null) { detail.setElementQName(fixElementName((QName)qnames.get(i))); } } for (int i = 0; i < abstrs.size(); i++) { addMappingDetails(Boolean.TRUE, null, (String)abstrs.get(i)); } addReferencedMappings(refmap); fixBaseClasses(); // generate the binding(s) generateMappings(concrs); generateMappings(abstrs); generateReferencedMappings(refmap); } /** * Get the mapping details for a class. This method should only be used after the * {@link #generate(Boolean, List)} method has been called. * * @param type fully-qualified class name * @return mapping details, or null if none */ public BindingMappingDetail getMappingDetail(String type) { return (BindingMappingDetail)m_mappingDetailsMap.get(type); } /** * Find the binding to be used for a particular namespace. If this is the first time a particular namespace was * requested, a new binding will be created for that namespace and returned. This method just delegates to the * {@link org.jibx.binding.model.BindingDirectory} implementation. * * @param uri namespace URI (null if no namespace) * @return binding holder */ public BindingHolder findBinding(String uri) { return m_directory.findBinding(uri); } /** * Get the binding definition for a namespace. This method should only be used after the * {@link #generate(Boolean, List)} method has been called. It delegates to the * {@link org.jibx.binding.model.BindingDirectory} implementation. * * @param uri * @return binding holder, or null if none */ public BindingHolder getBinding(String uri) { return m_directory.getBinding(uri); } /** * Get the list of binding namespace URIs. * * @return namespaces */ public ArrayList getNamespaces() { return m_directory.getNamespaces(); } /** * Complete the generated bindings and write them as files. * * @param name * @param adduris * @param dir * @return root binding holder * @throws JiBXException on error in generated bindings * @throws IOException on error writing bindings */ public BindingHolder finish(String name, String[] adduris, File dir) throws JiBXException, IOException { m_directory.finish(); BindingHolder root = m_directory.configureFiles(name, adduris, m_targetPackage); m_directory.writeBindings(dir); return root; } /** * Run the binding generation using command line parameters. * * @param args * @throws JiBXException * @throws IOException */ public static void main(String[] args) throws JiBXException, IOException { BindingGeneratorCommandLine parms = new BindingGeneratorCommandLine(); if (args.length > 0 && parms.processArgs(args)) { // generate bindings for all namespaces BindingGenerator gen = new BindingGenerator(parms.getGlobal()); gen.generate(parms.getAbstract(), parms.getExtraArgs()); gen.finish(parms.getBindingName(), new String[0], parms.getGeneratePath()); } else { if (args.length > 0) { System.err.println("Terminating due to command line errors"); } else { parms.printUsage(); } System.exit(1); } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/generator/BindingGeneratorCommandLine.java0000644000175000017500000001352110736011270031305 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.generator; import java.io.FileInputStream; import java.io.IOException; import java.util.Map; import org.jibx.binding.model.IClassLocator; import org.jibx.runtime.BindingDirectory; import org.jibx.runtime.IBindingFactory; import org.jibx.runtime.IUnmarshallable; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.schema.validation.ValidationContext; /** * Command line processing specifically for the {@link BindingGenerator} class. * * @author Dennis M. Sosnoski */ public class BindingGeneratorCommandLine extends ClassCustomizationBase { /** Ordered array of extra usage lines. */ protected static final String[] EXTRA_USAGE_LINES = new String[] { " -a force abstract mappings for specified classes", " -b generated root binding name (default is 'binding.xml')", " -m force concrete mappings for specified classes" }; /** * TRUE if abstract mappings forced, FALSE if concrete mappings forced, * null if left to class settings. */ private Boolean m_abstract; /** Customizations model root. */ private GlobalCustom m_global; /** Name used for root binding. */ private String m_bindingName = "binding.xml"; /** * Get force abstract mapping setting. * * @return TRUE if abstract mappings forced, FALSE if concrete mappings forced, * null if left to class settings */ public Boolean getAbstract() { return m_abstract; } /** * Get customizations model root. * * @return customizations */ public GlobalCustom getGlobal() { return m_global; } /** * Get binding name. * * @return name */ public String getBindingName() { return m_bindingName; } /* * (non-Javadoc) * * @see org.jibx.binding.generator.CustomizationCommandLineBase#checkParameter(org.jibx.binding.generator.CustomizationCommandLineBase.ArgList) */ protected boolean checkParameter(ArgList alist) { boolean match = true; String arg = alist.current(); if ("-a".equalsIgnoreCase(arg)) { m_abstract = Boolean.TRUE; } else if ("-b".equalsIgnoreCase(arg)) { m_bindingName = alist.next(); } else if ("-m".equalsIgnoreCase(arg)) { m_abstract = Boolean.FALSE; } else { match = false; } return match; } /* * (non-Javadoc) * * @see org.jibx.binding.generator.ClassCustomizationBase#loadCustomizations(String,IClassLocator.ValidationContext) */ protected void loadCustomizations(String path, IClassLocator loc, ValidationContext vctx) throws JiBXException, IOException { // load or create customization information m_global = new GlobalCustom(loc); if (path != null) { IBindingFactory fact = BindingDirectory.getFactory(GlobalCustom.class); IUnmarshallingContext ictx = fact.createUnmarshallingContext(); FileInputStream is = new FileInputStream(path); ictx.setDocument(is, null); ictx.setUserContext(vctx); ((IUnmarshallable)m_global).unmarshal(ictx); } } /* * (non-Javadoc) * * @see org.jibx.binding.generator.CustomizationCommandLineBase#applyOverrides(Map) */ protected Map applyOverrides(Map overmap) { Map unknowns = applyKeyValueMap(overmap, m_global); m_global.initClasses(); m_global.fillClasses(); return unknowns; } /* * (non-Javadoc) * * @see org.jibx.binding.generator.CustomizationCommandLineBase#printUsage() */ public void printUsage() { System.out.println("\nUsage: java org.jibx.binding.generator.BindingGenerator " + "[options] class1 class2 ...\nwhere options are:"); String[] usages = mergeUsageLines(BASE_USAGE_LINES, EXTRA_USAGE_LINES); for (int i = 0; i < usages.length; i++) { System.out.println(usages[i]); } System.out.println("The class# files are different classes to be included in " + "the binding (references from\nthese classes will also be " + "included).\n"); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/generator/BindingMappingDetail.java0000644000175000017500000002166210651175632030004 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.generator; import java.util.Map; import org.jibx.binding.model.MappingElement; import org.jibx.runtime.QName; /** * Holder for the details of how a class is going to be mapped. This information is needed in order to determine how to * reference the mapped class when it's used within another mapping definition. * * @author Dennis M. Sosnoski */ public class BindingMappingDetail { /** Fully-qualified class name of mapped class. */ private final String m_type; /** Generate abstract mapping flag. */ private boolean m_useAbstract; /** Generate concrete mapping flag. */ private boolean m_useConcrete; /** Flag for class extended by other mapped class(es). */ private boolean m_isExtended; /** Abstract mapping type name (null if none). */ private final QName m_typeQName; /** Concrete mapping element name (null if none). */ private QName m_elementQName; /** Concrete mapping type extended by this one. */ private String m_extendsType; /** Map from access method name to property customization information for properties covered by this mapping (including inherited ones). */ private Map m_propertyMethodMap; /** Flag for mapping(s) has been generated. */ private boolean m_isGenerated; /** Abstract mapping definition (null if none). */ private MappingElement m_abstractMapping; /** Concrete mapping definition (null if none). */ private MappingElement m_concreteMapping; /** * Constructor. * * @param type fully-qualified mapped class name * @param aname abstract mapping type name * @param cname concrete mapping element name * @param stype superclass for extension (null if not an extension mapping) */ protected BindingMappingDetail(String type, QName aname, QName cname, String stype) { m_type = type; m_typeQName = aname; m_elementQName = cname; m_extendsType = stype; } /** * Get fully-qualified name of mapped class. * * @return class name */ public String getType() { return m_type; } /** * Get the abstract <mapping> for the target class. * * @return abstract , null if none */ public MappingElement getAbstractMapping() { return m_abstractMapping; } /** * Set the abstract <mapping> for the target class. * * @param abs abstract , null if none */ public void setAbstractMapping(MappingElement abs) { m_abstractMapping = abs; } /** * Get the concrete <mapping> for the target class. * * @return concrete , null if none */ public MappingElement getConcreteMapping() { return m_concreteMapping; } /** * Set the concrete <mapping> for the target class. * * @param con concrete , null if none */ public void setConcreteMapping(MappingElement con) { m_concreteMapping = con; } /** * Check for target class extended by other mapped class(es). * * @return true if extended, false if not */ public boolean isExtended() { return m_isExtended; } /** * Set target class extended by other mapped class(es). Setting this true forces a concrete * <mapping> to be used. * * @param ext */ public void setExtended(boolean ext) { m_isExtended = ext; if (ext) { setUseConcrete(true); } } /** * Check if this <mapping> has been generated. * * @return true if generated, false if not */ public boolean isGenerated() { return m_isGenerated; } /** * Set flag for <mapping> generated. * * @param gen */ public void setGenerated(boolean gen) { m_isGenerated = gen; } /** * Check if an abstract <mapping> used for this class. * * @return true if abstract mapping used, false if not */ public boolean isUseAbstract() { return m_useAbstract; } /** * Set flag for abstract <mapping> used for this class. * * @param abs true if abstract mapping used, false if not */ public void setUseAbstract(boolean abs) { m_useAbstract = abs; } /** * Check if a concrete <mapping> used for this class. * * @return true if concrete mapping used, false if not */ public boolean isUseConcrete() { return m_useConcrete; } /** * Set flag for concrete <mapping> used for this class. * * @param con true if concrete mapping used, false if not */ public void setUseConcrete(boolean con) { m_useConcrete = con; if (!con && m_isExtended) { throw new IllegalStateException("Internal error - concrete must be used for extensions"); } } /** * Get the element name used for a concrete mapping. Note that this method will always return a * non-null result if a concrete mapping is being used, but may also return a non-null * result even if there is no concrete mapping - so check first using the {@link #isUseConcrete()} method. * * @return element name, or null if not defined */ public QName getElementQName() { return m_elementQName; } /** * Set the element name used for a concrete mapping. * * @param qname element name, or null if not defined */ public void setElementQName(QName qname) { m_elementQName = qname; } /** * Get the fully-qualified class name of the type extended by this <mapping>. * * @return class name, or null if none */ public String getExtendsType() { return m_extendsType; } /** * Get the type name used for an abstract mapping. Note that this method will always return a non-null * result if an abstract mapping is being used, but may also return a non-null result even if there is * no abstract mapping - so check first using the {@link #isUseConcrete()} method. * * @return type name, or null if not defined */ public QName getTypeQName() { return m_typeQName; } /** * Get map from access method name to property customization information for properties covered by this * <mapping>. This map includes both properties defined directly, and those inherited from any base mapping. * * @return map (non-null after <mapping> constructed) */ public Map getAccessMethodMap() { return m_propertyMethodMap; } /** * Set map from access method name to property customization information for properties covered by this * <mapping>. This must be done at the time the <mapping> is constructed. * * @param map (non-null, use empty map if not applicable) */ public void setAccessMethodMap(Map map) { m_propertyMethodMap = map; } }libjibx-java-1.1.6a/build/src/org/jibx/binding/generator/ClassCustom.java0000644000175000017500000006744610752422164026242 0ustar moellermoeller/* * Copyright (c) 2007-2008, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.generator; import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import org.jibx.binding.model.IClass; import org.jibx.binding.model.IClassItem; import org.jibx.binding.model.IClassLocator; import org.jibx.binding.util.StringArray; import org.jibx.custom.CustomUtils; import org.jibx.runtime.EnumSet; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.QName; import org.jibx.util.InsertionOrderedMap; /** * Class customization information. This supports direct class customizations. (such as the corresponding element name, * when building a concrete mapping) and also acts as a container for individual fields and/or properties. * * @author Dennis M. Sosnoski */ public class ClassCustom extends NestingBase implements IApply { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "create-type", "element-name", "enum-value-method", "excludes", "factory", "form", "includes", "name", "optionals", "requireds", "type-name", "use-super" }, NestingBase.s_allowedAttributes); /** Element name in XML customization file. */ public static final String ELEMENT_NAME = "class"; // value set information public static final int DEFAULT_REPRESENTATION = 0; public static final int CONCRETE_MAPPING_REPRESENTATION = 1; public static final int ABSTRACT_MAPPING_REPRESENTATION = 2; public static final EnumSet s_representationEnum = new EnumSet(DEFAULT_REPRESENTATION, new String[] { "default", "concrete-mapping", "abstract-mapping" }); // values specific to class level private String m_name; private String m_elementName; private String m_typeName; private String m_createType; private String m_factoryMethod; private String m_enumValueMethod; private int m_form; private String[] m_includes; private String[] m_excludes; private boolean m_useSuper; private String[] m_requireds; private String[] m_optionals; // list of contained items private final ArrayList m_children; // values filled in by apply() method private boolean m_isApplied; private QName m_typeQName; private QName m_elementQName; private IClass m_classInformation; private InsertionOrderedMap m_memberMap; /** * Constructor. * * @param parent * @param name class simple name (without package) */ /* package */ClassCustom(NestingBase parent, String name) { super(parent); m_name = name; m_children = new ArrayList(); m_useSuper = true; } /** * Make sure all attributes are defined. * * @param uctx unmarshalling context */ private void preSet(IUnmarshallingContext uctx) { validateAttributes(uctx, s_allowedAttributes); } /** * Get fully-qualified class name. * * @return class name */ public String getName() { PackageCustom parent = (PackageCustom)getParent(); String pack = parent.getName(); if (pack.length() > 0) { return pack + '.' + m_name; } else { return m_name; } } /** * Get simple class name. * * @return class name */ public String getSimpleName() { return m_name; } /** * Get the element name to be used for this class in a concrete mapping. * * @return element name */ public String getElementName() { return m_elementName; } /** * Get the qualified element name to be used for this class in a concrete mapping. * * @return element name */ public QName getElementQName() { return m_elementQName; } /** * Get the type name to be used for this class in an abstract mapping. * * @return type name */ public String getTypeName() { return m_typeName; } /** * Get the type name to be used when creating an instance of this class. * * @return type name */ public String getCreateType() { return m_createType; } /** * Set the type name to be used when creating an instance of this class. * * @param type */ public void setCreateType(String type) { m_createType = type; } /** * Get the method used to retrieve the text value for an enum class. * * @return method name */ public String getEnumValueMethod() { return m_enumValueMethod; } /** * Get the factory method to be used when creating an instance of this class. * * @return method name */ public String getFactoryMethod() { return m_factoryMethod; } /** * Get the qualified type name to be used for this class in an abstract mapping. * * @return type qname */ public QName getTypeQName() { return m_typeQName; } /** * Get the representation code. * * @return value from {@link #s_representationEnum} enumeration */ public int getForm() { return m_form; } /** * Get list of names to be excluded from class representation. * * @return excludes (null if none) */ public String[] getExcludes() { return m_excludes; } /** * Get list of names to be included in class representation. * * @return includes (null if none) */ public String[] getIncludes() { return m_includes; } /** * Check for superclass to be included in binding. * * @return true if superclass included, false if not */ public boolean isUseSuper() { return m_useSuper; } /** * Check if this is a directly instantiable class (not an interface, and not abstract) * * @return true if instantiable, false if not */ public boolean isConcrete() { return !(m_classInformation.isAbstract() || m_classInformation.isInterface()); } /** * Get list of children. * * @return list */ public List getChildren() { return m_children; } /** * Add child. * * @param child */ protected void addChild(CustomBase child) { if (child.getParent() == this) { m_children.add(child); } else { throw new IllegalStateException("Internal error: child not linked"); } } /** * Form set text method. This is intended for use during unmarshalling. TODO: add validation * * @param text * @param ictx */ private void setFormText(String text, IUnmarshallingContext ictx) { m_form = s_representationEnum.getValue(text); } /** * Form get text method. This is intended for use during marshalling. * * @return text */ private String getFormText() { return s_representationEnum.getName(m_form); } /** * Build map from member names to read access methods. This assumes that each no-argument method which returns a * value and has a name beginning with "get" or "is" is a property read access method. It maps the corresponding * property name to the method, and returns the map. * * @param methods * @param inclset set of member names to be included (null if not specified) * @param exclset set of member names to be excluded (null if not specified, ignored if inclset is * non-null) * @return map */ private Map mapPropertyReadMethods(IClassItem[] methods, Set inclset, Set exclset) { // check all methods for property read access matches InsertionOrderedMap getmap = new InsertionOrderedMap(); for (int i = 0; i < methods.length; i++) { IClassItem item = methods[i]; String name = item.getName(); if (item.getArgumentCount() == 0 && ((name.startsWith("get") && !item.getTypeName().equals("void")) || (name.startsWith("is") && item .getTypeName().equals("boolean")))) { // have what appears to be a getter, check if it should be used String memb = MemberCustom.memberNameFromGetMethod(name); boolean use = true; if (inclset != null) { use = inclset.contains(memb.toLowerCase()); } else if (exclset != null) { use = !exclset.contains(memb.toLowerCase()); } if (use) { getmap.put(memb, item); } } } return getmap; } /** * Build map from member names to write access methods. This assumes that each single-argument method which returns * void and has a name beginning with "set" is a property write access method. It maps the corresponding property * name to the method, and returns the map. * * @param methods * @param inclset set of member names to be included (null if not specified) * @param exclset set of member names to be excluded (null if not specified, ignored if inclset is * non-null) * @return map */ private Map mapPropertyWriteMethods(IClassItem[] methods, Set inclset, Set exclset) { // check all methods for property write access matches InsertionOrderedMap setmap = new InsertionOrderedMap(); for (int i = 0; i < methods.length; i++) { IClassItem item = methods[i]; String name = item.getName(); if (item.getArgumentCount() == 1 && name.startsWith("set") && item.getTypeName().equals("void")) { // have what appears to be a setter, check if it should be used String memb = MemberCustom.memberNameFromSetMethod(name); boolean use = true; if (inclset != null) { use = inclset.contains(memb.toLowerCase()); } else if (exclset != null) { use = !exclset.contains(memb.toLowerCase()); } if (use) { setmap.put(memb, item); } } } return setmap; } /** * Build map from member names to fields. This includes all non-static and non-transient fields of the class. * * @param fields * @param prefs prefixes to be stripped in deriving names * @param suffs suffixes to be stripped in deriving names * @param inclset set of member names to be included (null if not specified) * @param exclset set of member names to be excluded (null if not specified, ignored if inclset is * non-null) * @return map */ private Map mapFields(IClassItem[] fields, String[] prefs, String[] suffs, Set inclset, Set exclset) { // check all fields for use as members InsertionOrderedMap fieldmap = new InsertionOrderedMap(); for (int i = 0; i < fields.length; i++) { IClassItem item = fields[i]; String name = item.getName(); String memb = MemberCustom.memberNameFromField(name, prefs, suffs); boolean use = true; if (inclset != null) { use = inclset.contains(memb.toLowerCase()); } else if (exclset != null) { use = !exclset.contains(memb.toLowerCase()); } if (use) { fieldmap.put(memb, item); } } return fieldmap; } /** * Find the most specific type for a property based on the access methods. * * @param gmeth read access method (null if not defined) * @param smeth write access method (null if not defined) * @param icl * @return most specific type name */ private String findPropertyType(IClassItem gmeth, IClassItem smeth, IClassLocator icl) { String type; if (gmeth == null) { if (smeth == null) { throw new IllegalArgumentException("Internal error: no access methods known"); } else { type = smeth.getArgumentType(0); } } else if (smeth == null) { type = gmeth.getTypeName(); } else { String gtype = gmeth.getTypeName(); String stype = smeth.getArgumentType(0); IClass gclas = icl.getClassInfo(gtype); if (gclas.isSuperclass(stype) || gclas.isImplements(stype)) { type = gtype; } else { type = stype; } } return type; } /** * Utility method to strip any leading non-alphanumeric characters from an array of name strings. * * @param names (null if none) * @return array of stripped names (null if none) */ private static String[] stripNames(String[] names) { if (names == null) { return null; } else { String[] strips = null; for (int i = 0; i < names.length; i++) { String name = names[i]; int index = 0; while (index < name.length()) { char chr = name.charAt(index); if (Character.isLetter(chr) || Character.isDigit(chr)) { break; } else { index++; } } if (index > 0) { if (strips == null) { strips = new String[names.length]; System.arraycopy(names, 0, strips, 0, names.length); } strips[i] = name.substring(index); } } return (strips == null) ? names : strips; } } /** * Classify an array of names as elements or attributes, based on leading flag characters ('@' for an attribute, * '<' for an element). * * @param names (null if none) * @param elems set of element names * @param attrs set of attribute names */ private static void classifyNames(String[] names, Set elems, Set attrs) { if (names != null) { for (int i = 0; i < names.length; i++) { String name = names[i]; if (name.length() > 0) { char chr = name.charAt(0); Set addset = null; Set altset = null; if (chr == '@') { addset = attrs; altset = elems; } else if (chr == '/') { addset = elems; altset = attrs; } if (addset != null) { name = name.substring(1).toLowerCase(); addset.add(name); if (altset.contains(name)) { throw new IllegalArgumentException("Name " + name + " used as both element and attribute"); } } } } } } /** * Apply customizations to class to fill out members. * * @param icl class locator */ public void apply(IClassLocator icl) { // check for repeated call (happens due to package-level apply() if (m_isApplied) { return; } m_isApplied = true; // initialize class information m_classInformation = icl.getClassInfo(getName()); if (m_classInformation == null) { throw new IllegalStateException("Internal error: unable to find class " + m_name); } // inherit namespace directly from package level, if not specified String ns = getSpecifiedNamespace(); if (ns == null) { ns = getParent().getNamespace(); } setNamespace(ns); // set the name(s) to be used if mapped String cname = convertName(getSimpleName()); if (m_elementName == null) { m_elementName = cname; } m_elementQName = new QName(getNamespace(), m_elementName); if (m_typeName == null) { m_typeName = cname; } m_typeQName = new QName(getNamespace(), m_typeName); // initialize maps with existing member customizations HashMap namemap = new HashMap(); for (Iterator iter = getChildren().iterator(); iter.hasNext();) { MemberCustom memb = (MemberCustom)iter.next(); String name = memb.getBaseName(); if (name != null) { namemap.put(name, memb); } } // generate sets of names to be included or ignored, and optional/requires, elements/attributes Set exclset = null; Set inclset = null; Set elemset = Collections.EMPTY_SET; Set attrset = Collections.EMPTY_SET; Set optset = Collections.EMPTY_SET; Set reqset = Collections.EMPTY_SET; if (m_includes != null || m_optionals != null || m_requireds != null) { String[] optionals = stripNames(m_optionals); String[] requireds = stripNames(m_requireds); inclset = CustomUtils.noCaseNameSet(stripNames(m_includes)); if (optionals != null) { optset = CustomUtils.noCaseNameSet(optionals); } if (requireds != null) { reqset = CustomUtils.noCaseNameSet(requireds); } elemset = new HashSet(); attrset = new HashSet(); classifyNames(m_requireds, elemset, attrset); classifyNames(m_optionals, elemset, attrset); classifyNames(m_includes, elemset, attrset); } else if (m_excludes != null) { exclset = CustomUtils.noCaseNameSet(stripNames(m_excludes)); } // first find members from property access methods Map getmap = null; Map setmap = null; IClassItem[] methods = m_classInformation.getMethods(); GlobalCustom global = getGlobal(); if (global.isOutput()) { // find properties using read access methods getmap = mapPropertyReadMethods(methods, inclset, exclset); if (global.isInput()) { // find properties using write access methods setmap = mapPropertyWriteMethods(methods, inclset, exclset); // discard any read-only properties for (Iterator iter = getmap.keySet().iterator(); iter.hasNext();) { if (!setmap.containsKey(iter.next())) { iter.remove(); } } } } if (global.isInput()) { // find properties using write access methods setmap = mapPropertyWriteMethods(methods, inclset, exclset); } // find members from fields Map fieldmap = mapFields(m_classInformation.getFields(), getStripPrefixes(), getStripSuffixes(), inclset, exclset); // get list of names selected for use by options ArrayList names; if (isPropertyAccess()) { if (global.isOutput()) { names = new ArrayList(getmap.keySet()); } else { names = new ArrayList(setmap.keySet()); } } else { names = new ArrayList(); for (Iterator iter = fieldmap.keySet().iterator(); iter.hasNext();) { String name = (String)iter.next(); IClassItem field = (IClassItem)fieldmap.get(name); int access = field.getAccessFlags(); if (!Modifier.isStatic(access) && !Modifier.isTransient(access)) { names.add(name); } } } // process all members found in class m_memberMap = new InsertionOrderedMap(); boolean auto = !getName().startsWith("java.") && !getName().startsWith("javax."); for (int i = 0; i < names.size(); i++) { // get basic member information String name = (String)names.get(i); String lcname = name.toLowerCase(); MemberCustom cust = null; IClassItem gmeth = (IClassItem)(getmap == null ? null : getmap.get(name)); IClassItem smeth = (IClassItem)(setmap == null ? null : setmap.get(name)); IClassItem field = (IClassItem)(fieldmap == null ? null : fieldmap.get(name)); // find the optional/required setting Boolean isreq = null; if (optset.contains(lcname)) { isreq = Boolean.FALSE; } if (reqset.contains(lcname)) { isreq = Boolean.TRUE; } // find the style setting Integer style = null; if (attrset.contains(lcname)) { style = ATTRIBUTE_STYLE_INTEGER; } else if (elemset.contains(lcname)) { style = ELEMENT_STYLE_INTEGER; } // check for existing customization if (namemap.containsKey(name)) { // fill in data missing from existing member customization cust = (MemberCustom)namemap.get(name); if (cust instanceof MemberFieldCustom) { MemberFieldCustom mfcust = (MemberFieldCustom)cust; mfcust.completeField((IClassItem)fieldmap.get(name), isreq, style); } else { String type = findPropertyType(gmeth, smeth, icl); MemberPropertyCustom mpcust = (MemberPropertyCustom)cust; mpcust.completeProperty(gmeth, smeth, type, isreq, style); } } else if (auto) { if (isPropertyAccess()) { if (gmeth != null || smeth != null) { // check for a collection property MemberPropertyCustom pcust; String type = findPropertyType(gmeth, smeth, icl); IClass info = icl.getClassInfo(type); if (type.endsWith("[]") || info.isImplements("Ljava/util/Collection;")) { pcust = new CollectionPropertyCustom(this, name); } else { pcust = new MemberPropertyCustom(this, name); } // fill in the details of the property pcust.completeProperty(gmeth, smeth, type, isreq, style); cust = pcust; } } else if (field != null) { // check for a collection field MemberFieldCustom fcust; String type = field.getTypeName(); IClass info = icl.getClassInfo(type); if (type.endsWith("[]") || info.isImplements("Ljava/util/Collection;")) { fcust = new CollectionFieldCustom(this, name); } else { fcust = new MemberFieldCustom(this, name); } // fill in the details of the property fcust.completeField(field, isreq, style); cust = fcust; } } // add customization to map if (cust != null) { m_memberMap.put(name, cust); } } // check for any supplied customizations that haven't been matched for (Iterator iter = namemap.keySet().iterator(); iter.hasNext();) { String name = (String)iter.next(); String lcname = name.toLowerCase(); if (!m_memberMap.containsKey(name)) { // find the optional/required setting Boolean req = null; if (optset != null && optset.contains(lcname)) { req = Boolean.FALSE; } if (reqset != null && reqset.contains(lcname)) { req = Boolean.TRUE; } // find the style setting Integer style = null; if (attrset.contains(lcname)) { style = ATTRIBUTE_STYLE_INTEGER; } else if (elemset.contains(lcname)) { style = ELEMENT_STYLE_INTEGER; } // complete the customization and add to map MemberCustom cust = (MemberCustom)namemap.get(name); cust.complete(null, req, style); m_memberMap.put(name, cust); } } } /** * Get customization information for a member by name. This method may only be called after * {@link #apply(IClassLocator)}. * * @param name * @return customization, or null if none */ public MemberCustom getMember(String name) { return (MemberCustom)m_memberMap.get(name); } /** * Get actual class information. This method may only be called after {@link #apply(IClassLocator)}. * * @return class information */ public IClass getClassInformation() { return m_classInformation; } /** * Get collection of members in class. * * @return members */ public Collection getMembers() { return m_memberMap.values(); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/generator/ClassCustomizationBase.java0000644000175000017500000001617110720550330030410 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.generator; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.jibx.binding.Utility; import org.jibx.binding.classes.ClassCache; import org.jibx.binding.classes.ClassFile; import org.jibx.binding.model.IClassLocator; import org.jibx.custom.CustomizationCommandLineBase; import org.jibx.runtime.JiBXException; import org.jibx.schema.validation.ValidationContext; import org.jibx.schema.validation.ValidationProblem; /** * Command line processor for customizable tools working with Java classes. * * @author Dennis M. Sosnoski */ public abstract class ClassCustomizationBase extends CustomizationCommandLineBase { /** Ordered array of usage lines. */ protected static final String[] BASE_USAGE_LINES = new String[] { " -p path class loading path component", " -s path source path component" }; /** List of class paths. */ private List m_classPaths; /** List of source paths. */ private List m_sourcePaths; /** * Constructor. */ protected ClassCustomizationBase() { m_classPaths = new ArrayList(); m_sourcePaths = new ArrayList(); } /** * Check if an extension parameter is recognized. Subclasses which override this method should call the base class * method before doing their own checks, and only perform their own checks if this method returns * false.. * * @param alist argument list * @return true if parameter processed, false if unknown */ protected boolean checkParameter(ArgList alist) { boolean match = true; String arg = alist.current(); if ("-p".equalsIgnoreCase(arg)) { m_classPaths.add(alist.next()); } else if ("-s".equalsIgnoreCase(arg)) { m_sourcePaths.add(alist.next()); } else { match = false; } return match; } /** * Finish processing of command line parameters. This adds the JVM classpath directories to the set of paths * specified on the command line. Subclasses which override this method need to call this base class implementation * as part of their processing. * * @param alist */ protected void finishParameters(ArgList alist) { // add JVM class path directories to those specified on command line String[] vmpaths = Utility.getClassPaths(); for (int i = 0; i < vmpaths.length; i++) { m_classPaths.add(vmpaths[i]); } // set paths to be used for loading referenced classes String[] parray = (String[])m_classPaths.toArray(new String[m_classPaths.size()]); ClassCache.setPaths(parray); ClassFile.setPaths(parray); } /** * Print any extension details. This method may be overridden by subclasses to print extension parameter values for * verbose output, but the base class implementation should be called first. */ protected void verboseDetails() { System.out.println("Using class loading paths:"); for (int i = 0; i < m_classPaths.size(); i++) { System.out.println(" " + m_classPaths.get(i)); } System.out.println("Using source loading paths:"); for (int i = 0; i < m_sourcePaths.size(); i++) { System.out.println(" " + m_sourcePaths.get(i)); } System.out.println("Starting from classes:"); List types = getExtraArgs(); for (int i = 0; i < types.size(); i++) { System.out.println(" " + types.get(i)); } } /** * Load the customizations file. This method must load the specified customizations file, or create a default * customizations instance, of the appropriate type. * * @param path customization file path * @return true if successful, false if an error * @throws JiBXException * @throws IOException */ protected boolean loadCustomizations(String path) throws JiBXException, IOException { // load customizations and check for errors String[] spaths = (String[])m_sourcePaths.toArray(new String[m_sourcePaths.size()]); ValidationContext vctx = new ValidationContext(); loadCustomizations(path, new ClassSourceLocator(spaths), vctx); ArrayList probs = vctx.getProblems(); if (probs.size() > 0) { for (int i = 0; i < probs.size(); i++) { ValidationProblem prob = (ValidationProblem)probs.get(i); System.out.print(prob.getSeverity() >= ValidationProblem.ERROR_LEVEL ? "Error: " : "Warning: "); System.out.println(prob.getDescription()); } if (vctx.getErrorCount() > 0 || vctx.getFatalCount() > 0) { return false; } } return true; } /** * Get the merged usage lines for this class and superclasses. * * @return usage lines */ protected String[] getBaseUsage() { return mergeUsageLines(BASE_USAGE_LINES, COMMON_USAGE_LINES); } /** * Load the customizations file. This method must load the specified customizations file, or create a default * customizations instance, of the appropriate type. * * @param path customizations file path, null if none * @param loc class locator * @param vctx validation context * @throws JiBXException * @throws IOException */ protected abstract void loadCustomizations(String path, IClassLocator loc, ValidationContext vctx) throws JiBXException, IOException; }libjibx-java-1.1.6a/build/src/org/jibx/binding/generator/ClassItemSourceWrapper.java0000644000175000017500000002116710651175632030401 0ustar moellermoeller/* * Copyright (c) 2004-2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.generator; import org.jibx.binding.classes.ClassItem; import org.jibx.binding.model.ClassItemWrapper; import org.jibx.binding.model.IClass; import org.jibx.binding.model.IClassLocator; import com.thoughtworks.qdox.model.DocletTag; import com.thoughtworks.qdox.model.JavaClass; import com.thoughtworks.qdox.model.JavaField; import com.thoughtworks.qdox.model.JavaMethod; import com.thoughtworks.qdox.model.JavaParameter; import com.thoughtworks.qdox.model.Member; import com.thoughtworks.qdox.model.Type; /** * Wrapper for class field or method item with added source information. This wraps the basic class handling * implementation with added support for retrieving information from source files. * * @author Dennis M. Sosnoski */ public class ClassItemSourceWrapper extends ClassItemWrapper { private boolean m_checkedSource; private Member m_itemSource; /** * Constructor * * @param clas * @param item */ /* package */ClassItemSourceWrapper(IClass clas, ClassItem item) { super(clas, item); } /** * Check for source method signature match. * * @param method * @return true if match to this method, false if not */ private boolean matchSignature(JavaMethod method) { boolean match = true; JavaParameter[] parms = method.getParameters(); if (parms.length == getArgumentCount()) { for (int j = 0; j < parms.length; j++) { Type ptype = parms[j].getType(); String type = ptype.getValue(); int ndim = ptype.getDimensions(); while (ndim-- > 0) { type += "[]"; } String comp = getArgumentType(j); if (!comp.equals(type)) { if (type.indexOf('.') >= 0 || !comp.endsWith('.' + type)) { match = false; break; } } } } return match; } /** * Internal method to get the source code information for this item. * * @return source information */ private Member getItemSource() { if (!m_checkedSource) { m_checkedSource = true; IClass clas = getContainingClass(); IClassLocator loc = clas.getLocator(); if (loc instanceof IClassSourceLocator) { IClassSourceLocator sloc = (IClassSourceLocator)loc; JavaClass jc = sloc.getSourceInfo(clas.getName()); if (jc != null) { if (isMethod()) { String mname = getName(); JavaMethod[] methods = jc.getMethods(); for (int i = 0; i < methods.length; i++) { JavaMethod method = methods[i]; if (mname.equals(method.getName())) { if (matchSignature(method)) { m_itemSource = method; break; } } } } else { m_itemSource = jc.getFieldByName(getName()); } } } } return m_itemSource; } /** * Return JavaDoc text only if non-empty. * * @param text raw JavaDoc text * @return trimmed text if non-empty, otherwise null */ private static String docText(String text) { if (text != null) { text = text.trim(); if (text.length() > 0) { return text; } } return null; } /* * (non-Javadoc) * * @see org.jibx.binding.model.IClassItem#getJavaDoc() */ public String getJavaDoc() { Member src = getItemSource(); if (src == null) { return null; } else if (isMethod()) { return docText(((JavaMethod)src).getComment()); } else { return docText(((JavaField)src).getComment()); } } /* * (non-Javadoc) * * @see org.jibx.binding.model.IClassItem#getReturnJavaDoc() */ public String getReturnJavaDoc() { if (isMethod()) { JavaMethod jm = (JavaMethod)getItemSource(); if (jm != null) { DocletTag tag = jm.getTagByName("return"); if (tag != null) { return docText(tag.getValue()); } } return null; } else { throw new IllegalStateException("Internal error: not a method"); } } /* * (non-Javadoc) * * @see org.jibx.binding.model.IClassItem#getParameterJavaDoc(int) */ public String getParameterJavaDoc(int index) { if (isMethod()) { JavaMethod jm = (JavaMethod)getItemSource(); if (jm != null) { String name = jm.getParameters()[index].getName(); DocletTag[] tags = jm.getTagsByName("param"); for (int i = 0; i < tags.length; i++) { DocletTag tag = tags[i]; String[] parms = tag.getParameters(); if (parms != null && parms.length > 0 && name.equals(parms[0])) { String text = tag.getValue().trim(); if (text.startsWith(name)) { text = text.substring(name.length()).trim(); } return docText(text); } } } return null; } else { throw new IllegalStateException("Internal error: not a method"); } } /* * (non-Javadoc) * * @see org.jibx.binding.model.IClassItem#getParameterName(int) */ public String getParameterName(int index) { String name = super.getParameterName(index); if (name == null) { JavaMethod jm = (JavaMethod)getItemSource(); if (jm != null) { name = jm.getParameters()[index].getName(); } } return name; } /* * (non-Javadoc) * * @see org.jibx.binding.model.IClassItem#getExceptionJavaDoc(int) */ public String getExceptionJavaDoc(int index) { if (isMethod()) { JavaMethod jm = (JavaMethod)getItemSource(); if (jm != null) { String name = getExceptions()[index]; DocletTag[] tags = jm.getTagsByName("throws"); for (int i = 0; i < tags.length; i++) { DocletTag tag = tags[i]; String[] parms = tag.getParameters(); if (parms != null && parms.length > 0 && name.equals(parms[0])) { return docText(tag.getValue()); } } } return null; } else { throw new IllegalStateException("Internal error: not a method"); } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/generator/ClassSourceLocator.java0000644000175000017500000001126710651465104027541 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.generator; import java.io.File; import java.io.IOException; import java.util.HashSet; import java.util.Set; import org.jibx.binding.classes.ClassCache; import org.jibx.binding.model.IClass; import org.jibx.runtime.JiBXException; import com.thoughtworks.qdox.JavaDocBuilder; import com.thoughtworks.qdox.model.JavaClass; /** * Locator that supports both class file lookup and source file lookup. * * @author Dennis M. Sosnoski */ public class ClassSourceLocator implements IClassSourceLocator { /** Paths for source lookup. */ private final String[] m_sourcePaths; /** Source file parser. */ private final JavaDocBuilder m_builder; /** Set of classes parsed. */ private final Set m_lookupSet; /** * Constructor. * * @param paths source lookup paths (may be empty, but not null) */ public ClassSourceLocator(String[] paths) { m_sourcePaths = paths; m_builder = new JavaDocBuilder(); m_lookupSet = new HashSet(); } /** * Get the source code information for a class. * * @param name fully-qualified class name (using '$' as inner class marker) * @return source code information, null if not available */ public JavaClass getSourceInfo(String name) { int split = name.lastIndexOf('$'); if (split >= 0) { JavaClass outer = getSourceInfo(name.substring(0, split)); if (outer == null) { return null; } else { return outer.getNestedClassByName(name.substring(split + 1)); } } else if (m_lookupSet.contains(name)) { return m_builder.getClassByName(name); } else { for (int i = 0; i < m_sourcePaths.length; i++) { StringBuffer buff = new StringBuffer(); buff.append(m_sourcePaths[i]); int length = buff.length(); if (length > 0 || buff.charAt(length - 1) != File.separatorChar) { buff.append(File.separatorChar); } buff.append(name.replace('.', File.separatorChar)); buff.append(".java"); File file = new File(buff.toString()); if (file.exists()) { try { m_builder.addSource(file); m_lookupSet.add(name); return m_builder.getClassByName(name); } catch (IOException e) { throw new IllegalStateException("Unable to access source file " + buff.toString() + ": " + e.getMessage()); } } } return null; } } /** * Get the information for a class. * * @param name fully-qualified class name (using '$' as inner class marker) * @return class information */ public IClass getClassInfo(String name) { try { return new ClassSourceWrapper(this, ClassCache.getClassFile(name)); } catch (JiBXException e) { throw new IllegalStateException("Class not found " + name); } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/generator/ClassSourceWrapper.java0000644000175000017500000000606110651175632027556 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.generator; import org.jibx.binding.classes.ClassFile; import org.jibx.binding.classes.ClassItem; import org.jibx.binding.model.ClassWrapper; import org.jibx.binding.model.IClassItem; import com.thoughtworks.qdox.model.JavaClass; /** * Wrapper for class with added source information. This wraps the basic class handling implementation with added * support for retrieving information from source files. * * @author Dennis M. Sosnoski */ public class ClassSourceWrapper extends ClassWrapper { /** * Constructor. * * @param loc * @param clas */ public ClassSourceWrapper(IClassSourceLocator loc, ClassFile clas) { super(loc, clas); } /** * Build an item wrapper. This override of the base class implementation always creates a wrapper which will support * source operations. * * @param item * @return wrapper */ protected IClassItem buildItem(ClassItem item) { return new ClassItemSourceWrapper(this, item); } /* * (non-Javadoc) * * @see org.jibx.binding.model.IClass#getJavaDoc() */ public String getJavaDoc() { IClassSourceLocator loc = (IClassSourceLocator)getLocator(); JavaClass jc = loc.getSourceInfo(getClassFile().getName()); if (jc != null) { String text = jc.getComment(); if (text != null) { text = text.trim(); if (text.length() > 0) { return text; } } } return null; } }libjibx-java-1.1.6a/build/src/org/jibx/binding/generator/CollectionFieldCustom.java0000644000175000017500000001203410651175632030216 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.generator; import org.apache.bcel.generic.Type; import org.jibx.binding.model.IClassItem; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; /** * Collection field customization information. * * @author Dennis M. Sosnoski */ public class CollectionFieldCustom extends MemberFieldCustom { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "item-name", "item-type" }, MemberFieldCustom.s_allowedAttributes); // values specific to member level private String m_itemType; private String m_itemName; /** * Constructor. * * @param parent */ protected CollectionFieldCustom(NestingBase parent) { super(parent); } /** * Constructor with name known. * * @param parent * @param name */ protected CollectionFieldCustom(NestingBase parent, String name) { super(parent, name); } /** * Make sure all attributes are defined. * * @param uctx unmarshalling context */ protected void preSet(IUnmarshallingContext uctx) { validateAttributes(uctx, s_allowedAttributes); } /** * Check if collection member. * * @return true */ public boolean isCollection() { return true; } /** * Get item type. * * @return item type (null if none) */ public String getItemType() { return m_itemType; } /** * Get item element name. * * @return item name (null if none) */ public String getItemName() { return m_itemName; } /** * Complete customization information based on field information. * * @param field (null if none available) * @param req required member flag (null if unknown) * @param style representation style (null if unspecified) */ /* package */void completeField(IClassItem field, Boolean req, Integer style) { super.completeField(field, req, style); if (field != null) { // set information from field String tname = getWorkingType(); if (m_itemType == null) { if (tname.endsWith("[]")) { m_itemType = tname.substring(0, tname.length() - 2); } else { String sig = field.getGenericsSignature(); if (sig != null) { int start = sig.indexOf('<'); int end = sig.lastIndexOf('>'); if (start > 0 && end > 0 && start < end) { String tsig = sig.substring(start + 1, end); if (tsig.indexOf('<') < 0) { m_itemType = Type.getType(tsig).toString(); } } } } } if (m_itemName == null) { m_itemName = deriveItemName(getXmlName(), m_itemType, getParent().getNameStyle()); } } if (m_itemType == null) { m_itemType = "java.lang.Object"; } if (m_itemName == null) { m_itemName = "item"; } } private static CollectionFieldCustom factory(IUnmarshallingContext ictx) { return new CollectionFieldCustom(getContainingClass(ictx)); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/generator/CollectionPropertyCustom.java0000644000175000017500000001245510651175632031026 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.generator; import org.apache.bcel.generic.Type; import org.jibx.binding.model.IClassItem; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; /** * Collection field customization information. * * @author Dennis M. Sosnoski */ public class CollectionPropertyCustom extends MemberPropertyCustom { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "item-name", "item-type" }, MemberPropertyCustom.s_allowedAttributes); // values specific to member level private String m_itemType; private String m_itemName; /** * Constructor. * * @param parent */ protected CollectionPropertyCustom(NestingBase parent) { super(parent); } /** * Constructor with name known. * * @param parent * @param name */ protected CollectionPropertyCustom(NestingBase parent, String name) { super(parent, name); } /** * Make sure all attributes are defined. * * @param uctx unmarshalling context */ protected void preSet(IUnmarshallingContext uctx) { validateAttributes(uctx, s_allowedAttributes); } /** * Check if collection member. * * @return true */ public boolean isCollection() { return true; } /** * Get item type. * * @return item type (null if none) */ public String getItemType() { return m_itemType; } /** * Get item element name. * * @return item name (null if none) */ public String getItemName() { return m_itemName; } /** * Complete customization information based on access method information. * * @param gmeth read access method (null if none) * @param smeth write access method (null if none) * @param type value type * @param req required member flag (null if unknown) * @param style representation style (null if unspecified) */ /* package */void completeProperty(IClassItem gmeth, IClassItem smeth, String type, Boolean req, Integer style) { super.completeProperty(gmeth, smeth, type, req, style); if (type != null) { // set information from field String tname = getWorkingType(); if (m_itemType == null) { if (tname.endsWith("[]")) { m_itemType = tname.substring(0, tname.length() - 2); } else { String sig; if (gmeth == null) { sig = smeth.getGenericsSignature(); } else { sig = gmeth.getGenericsSignature(); } int start = sig.indexOf('<'); int end = sig.lastIndexOf('>'); if (start > 0 && end > 0 && start < end) { String tsig = sig.substring(start + 1, end); if (tsig.indexOf('<') < 0) { m_itemType = Type.getType(tsig).toString(); } } } } if (m_itemName == null) { m_itemName = deriveItemName(getXmlName(), m_itemType, getParent().getNameStyle()); } } if (m_itemType == null) { m_itemType = "java.lang.Object"; } if (m_itemName == null) { m_itemName = "item"; } } private static CollectionPropertyCustom factory(IUnmarshallingContext ictx) { return new CollectionPropertyCustom(getContainingClass(ictx)); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/generator/CustomBase.java0000644000175000017500000003342710752422106026033 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.generator; import java.util.Collection; import org.jibx.binding.util.NameUtilities; import org.jibx.binding.util.StringArray; import org.jibx.runtime.EnumSet; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.impl.UnmarshallingContext; import org.jibx.schema.validation.ValidationContext; /** * Base class for all customizations. This defines a way to navigate up the tree of nested components without making * assumptions about the specific type of the containing components. This allows for other types of customizations, * beyond the binding customizations included directly in this package. This also includes enumeration definitions which * are used with both base and extension customizations. * * @author Dennis M. Sosnoski */ public class CustomBase { // name style value set information public static final int CAMEL_CASE_NAMES = 0; public static final int UPPER_CAMEL_CASE_NAMES = 1; public static final int HYPHENATED_NAMES = 2; public static final int DOTTED_NAMES = 3; public static final int UNDERSCORED_NAMES = 4; public static final EnumSet s_nameStyleEnum = new EnumSet(CAMEL_CASE_NAMES, new String[] { "camel-case", "upper-camel-case", "hyphenated", "dotted", "underscored" }); // require value set information public static final int REQUIRE_NONE = 0; public static final int REQUIRE_PRIMITIVES = 1; public static final int REQUIRE_OBJECTS = 2; public static final int REQUIRE_ALL = 3; public static final EnumSet s_requireEnum = new EnumSet(REQUIRE_NONE, new String[] { "none", "primitives", "objects", "all" }); // derive-namespace value set information public static final int DERIVE_NONE = 0; public static final int DERIVE_BY_PACKAGE = 1; public static final int DERIVE_FIXED = 2; public static final EnumSet s_namespaceStyleEnum = new EnumSet(DERIVE_NONE, new String[] { "none", "package", "fixed" }); // parent element (null if none) - would be final, except for unmarshalling private SharedNestingBase m_parent; /** * Constructor. * * @param parent */ public CustomBase(SharedNestingBase parent) { m_parent = parent; } /** * Get container. * * @return container */ public SharedNestingBase getParent() { return m_parent; } /** * Get global customizations root. * * @return global customization */ public GlobalCustom getGlobal() { CustomBase parent = m_parent; while (!(parent instanceof GlobalCustom)) { parent = parent.getParent(); } return (GlobalCustom)parent; } /** * Convert class, method, or parameter name to XML name. * * @param base class or simple field name to be converted * @param code conversion format style code * @return XML name */ public static String convertName(String base, int code) { // strip off trailing array indication while (base.endsWith("[]")) { base = base.substring(0, base.length() - 2); } // skip any leading special characters in name int length = base.length(); int offset = -1; char chr = 0; while (++offset < length && ((chr = base.charAt(offset)) == '_' || (chr == '$'))); if (offset >= length) { return "_"; } else { // make sure valid first character of name StringBuffer buff = new StringBuffer(); if (Character.isDigit(chr)) { buff.append('_'); } // scan for word splits in supplied name boolean split = true; boolean caps = false; while (offset < length) { // split if underscore or change to upper case, or upper ending chr = base.charAt(offset++); boolean nextlower = offset < length && !Character.isUpperCase(base.charAt(offset)); if (chr == '_') { split = true; continue; } else if (Character.isUpperCase(chr)) { if (!caps || nextlower) { split = true; } if (code != CAMEL_CASE_NAMES && code != UPPER_CAMEL_CASE_NAMES) { chr = Character.toLowerCase(chr); } } if (split) { // convert word break caps = !nextlower; boolean tolower = false; char separator = 0; switch (code) { case CAMEL_CASE_NAMES: { if (buff.length() != 0) { chr = Character.toUpperCase(chr); tolower = false; } else { tolower = nextlower || offset == length; } break; } case UPPER_CAMEL_CASE_NAMES: { tolower = false; chr = Character.toUpperCase(chr); break; } case HYPHENATED_NAMES: { separator = '-'; break; } case DOTTED_NAMES: { separator = '.'; break; } case UNDERSCORED_NAMES: { separator = '_'; break; } } if (separator > 0 && buff.length() > 0) { buff.append(separator); } if (tolower) { chr = Character.toLowerCase(chr); } split = false; } if (chr != '$') { // no split, just append the character buff.append(chr); } } return buff.toString(); } } /** * Derive name for item in a collection. If the supplied collection name ends in a recognized plural form the * derived item name is the singular version of the collection name. Otherwise, it is the converted name of the * collection item class, or just "item" if the class is unknown. TODO: internationalization? * * @param cname collection name * @param type item type (null if unknown) * @param code conversion format style code * @return item name */ public static String deriveItemName(String cname, String type, int code) { String name = NameUtilities.depluralize(cname); if (!name.equals(cname)) { return name; } else if (type != null && !"java.lang.Object".equals(type)) { return convertName(type.substring(type.lastIndexOf('.') + 1), code); } else { return "item"; } } /** * Get the package from a fully-qualified type name. * * @param type fully-qualified type name * @return package of the type (empty string if in default package) */ public static String packageOfType(String type) { int split = type.lastIndexOf('.'); if (split >= 0) { return type.substring(0, split); } else { return ""; } } /** * Create a namespace URL from a package path. * * @param pkgpth fully-qualified package name * @return namespace based on package (null if none) */ public static String packageToNamespace(String pkgpth) { int mark = pkgpth.indexOf('.'); if (mark >= 0) { StringBuffer buff = new StringBuffer(); buff.append("http://"); String comp = pkgpth.substring(0, mark); int base = mark + 1; char delim = '.'; if ("com".equals(comp) || "net".equals(comp) || "org".equals(comp)) { mark = pkgpth.indexOf('.', base); if (mark > 0) { buff.append(pkgpth.substring(base, mark)); } else { buff.append(pkgpth.substring(base)); } buff.append('.'); base = mark + 1; delim = '/'; } buff.append(comp); while (mark > 0) { buff.append(delim); base = mark + 1; mark = pkgpth.indexOf('.', base); if (mark > 0) { buff.append(pkgpth.substring(base, mark)); } else { buff.append(pkgpth.substring(base)); } } return buff.toString(); } else { return null; } } /** * Derive namespace using specified technique. * * @param uri base namespace URI (null if none) * @param pkgpth fully qualified package name * @param style namespace style code * @return derived namespace */ public static String deriveNamespace(String uri, String pkgpth, int style) { switch (style) { case DERIVE_NONE: return null; case DERIVE_FIXED: return uri; case DERIVE_BY_PACKAGE: { if (uri == null) { return packageToNamespace(pkgpth); } else if (pkgpth == null) { return uri; } else { // append the last package to passed URI String pack; int start = pkgpth.lastIndexOf('.'); if (start >= 0) { pack = pkgpth.substring(start + 1); } else { pack = pkgpth; } if (uri.endsWith("/")) { return uri + pack; } else { return uri + '/' + pack; } } } default: throw new IllegalStateException("Invalid style code"); } } /** * Validate attributes of element. This is designed to be called during unmarshalling as part of the pre-set method * processing when a subclass instance is being created. * * @param ictx unmarshalling context * @param attrs attributes array */ protected void validateAttributes(IUnmarshallingContext ictx, StringArray attrs) { // setup for attribute access ValidationContext vctx = (ValidationContext)ictx.getUserContext(); UnmarshallingContext uctx = (UnmarshallingContext)ictx; // loop through all attributes of current element for (int i = 0; i < uctx.getAttributeCount(); i++) { // check if nonamespace attribute is in the allowed set String name = uctx.getAttributeName(i); if (uctx.getAttributeNamespace(i).length() == 0) { if (attrs.indexOf(name) < 0) { vctx.addWarning("Undefined attribute " + name, this); } } } } /** * Gets the parent element link from the unmarshalling stack. This method is for use by factories during * unmarshalling. * * @param ictx unmarshalling context * @return containing class */ protected static Object getContainingObject(IUnmarshallingContext ictx) { Object parent = ictx.getStackTop(); if (parent instanceof Collection) { parent = ictx.getStackObject(1); } return parent; } }libjibx-java-1.1.6a/build/src/org/jibx/binding/generator/GlobalCustom.java0000644000175000017500000005147310651175632026371 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.generator; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.jibx.binding.classes.ClassCache; import org.jibx.binding.model.ClassWrapper; import org.jibx.binding.model.IClass; import org.jibx.binding.model.IClassLocator; import org.jibx.binding.util.StringArray; import org.jibx.runtime.EnumSet; import org.jibx.runtime.IBindingFactory; import org.jibx.runtime.IUnmarshaller; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.UnmarshallingContext; /** * Global customization information. This includes some options specific to the <binding> element of the definition, * as well as controls for structuring of the generated binding(s). It handles the binding customization child elements * directly, by invoking the abstract unmarshallers for the child elements to process the content. It also allows for * extension elements which are not part of the binding customization structure, as long as the binding in use defines * the unmarshalling for these elements. * * @author Dennis M. Sosnoski */ public class GlobalCustom extends NestingBase { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "add-constructors", "direction", "force-classes", "namespace-modular", "track-source" }, NestingBase.s_allowedAttributes); /** Element name in XML customization file. */ public static final String ELEMENT_NAME = "custom"; // // Value set information public static final int IN_BINDING = 0; public static final int OUT_BINDING = 1; public static final int BOTH_BINDING = 2; /* package */static final EnumSet s_directionEnum = new EnumSet(IN_BINDING, new String[] { "input", "output", "both" }); // // Instance data // structure for package hierarchy private Map m_packageMap; // class locator private final IClassLocator m_classLocator; // extension elements private List m_extensionChildren; // values applied directly to element (or to structure) private boolean m_addConstructors; private boolean m_forceClasses; private boolean m_trackSource; private boolean m_namespaceModular; private boolean m_isInput; private boolean m_isOutput; private ArrayList m_unmarshalledClasses; /** * Constructor with class locator supplied. * * @param loc */ public GlobalCustom(IClassLocator loc) { super(null); m_packageMap = new HashMap(); m_classLocator = loc; PackageCustom dflt = new PackageCustom("", "", this); m_packageMap.put("", dflt); m_isInput = true; m_isOutput = true; m_unmarshalledClasses = new ArrayList(); } /** * Constructor. This always creates the default package as the only direct child, since other packages will be * treated as children of the default package. */ public GlobalCustom() { this(new IClassLocator() { public IClass getClassInfo(String name) { try { return new ClassWrapper(this, ClassCache.getClassFile(name)); } catch (JiBXException e) { throw new IllegalStateException("Class not found " + name); } } }); } /** * Make sure all attributes are defined. * * @param uctx unmarshalling context */ private void preSet(IUnmarshallingContext uctx) { validateAttributes(uctx, s_allowedAttributes); } /** * Get global customizations root. * * @return global customization */ public GlobalCustom getGlobal() { return this; } /** * Get list of unmarshalled classes. This list is populated by the custom unmarshalling code as the customizations * document is unmarshalled. * * @return list */ public ArrayList getUnmarshalledClasses() { return m_unmarshalledClasses; } // // Access methods for values applied only at top level /** * Get 'add-constructors' setting. * * @return 'add-constructors' value */ public boolean isAddConstructors() { return m_addConstructors; } /** * Set 'add-constructors' value. * * @param add 'add-constructors' value */ public void setAddConstructors(boolean add) { m_addConstructors = add; } /** * Get 'force-classes' setting. * * @return 'force-classes' value */ public boolean isForceClasses() { return m_forceClasses; } /** * Set 'force-classes' value. * * @param force 'force-classes' value */ public void setForceClasses(boolean force) { m_forceClasses = force; } /** * Get 'track-source' attribute value. * * @return 'track-source' value */ public boolean isTrackSource() { return m_trackSource; } /** * Set 'track-source' value. * * @param track 'track-source' value */ public void setTrackSource(boolean track) { m_trackSource = track; } /** * Check if using namespace modular bindings. * * @return flag for bindings to be modular by namespace */ public boolean isNamespaceModular() { return m_namespaceModular; } /** * Check for an input binding. * * @return input flag */ public boolean isInput() { return m_isInput; } /** * Set input binding flag. * * @param input */ public void setInput(boolean input) { m_isInput = input; } /** * Check for an output binding. * * @return output flag */ public boolean isOutput() { return m_isOutput; } /** * Set output binding falg. * * @param output */ public void setOutput(boolean output) { m_isOutput = output; } /** * Get class locator. * * @return locator */ protected IClassLocator getClassLocator() { return m_classLocator; } /** * Get class information. * * @param type fully-qualified class name * @return information */ public IClass getClassInfo(String type) { return m_classLocator.getClassInfo(type); } /** * Get the extension elements used in this customization. This does not include the <package> or <class> child * elements, which are added directly to the customization structures. * * @return child list */ public List getExtensionChildren() { if (m_extensionChildren == null) { return Collections.EMPTY_LIST; } else { return m_extensionChildren; } } /** * Internal method used during unmarshalling to add a child extension element. * * @param child */ protected void internalAddExtensionChild(Object child) { if (m_extensionChildren == null) { m_extensionChildren = new ArrayList(); } m_extensionChildren.add(child); } /** * Add a child extension element. This both adds the child to the list and invokeds the extension element's * {@link IApply#apply(IClassLocator)} method, if present. * * @param child */ public void addExtensionChild(Object child) { internalAddExtensionChild(child); if (child instanceof IApply) { ((IApply)child).apply(m_classLocator); } } /** * Check if a class is included in the customization information. This method does not alter the structures in any * way, it only checks if the class customization information is part of the existing structure. * * @param type fully qualified class name * @return true if class includes, false if not */ public boolean isClassUsed(String type) { int split = type.lastIndexOf('.'); if (split < 0) { split = 0; } PackageCustom pack = (PackageCustom)m_packageMap.get(type.substring(0, split)); if (pack == null) { return false; } else { return pack.getClassCustomization(type.substring(split + 1)) != null; } } /** * Get class customization information. * * @param type fully qualified class name * @return class information (null if not defined) */ public ClassCustom getClassCustomization(String type) { int split = type.lastIndexOf('.'); if (split < 0) { split = 0; } PackageCustom pack = (PackageCustom)m_packageMap.get(type.substring(0, split)); if (pack == null) { return null; } else { return pack.getClassCustomization(type.substring(split + 1)); } } /** * Add new class customization information. This creates the customization information and adds it to the internal * structures, initializing all values based on the settings inherited from <package> and <global> elements of * the structure. This method should only be used after first calling {@link #getClassCustomization(String)} and * obtaining a null result. * * @param type fully qualified class name * @return class information */ public ClassCustom addClassCustomization(String type) { int split = type.lastIndexOf('.'); if (split < 0) { split = 0; } PackageCustom pack = getPackage(type.substring(0, split)); ClassCustom clas = pack.addClassCustomization(type.substring(split + 1)); clas.apply(m_classLocator); return clas; } /** * Get class customization information, creating it if it doesn't already exist. * * @param type fully qualified class name * @return class information */ public ClassCustom forceClassCustomization(String type) { ClassCustom custom = getClassCustomization(type); if (custom == null) { custom = addClassCustomization(type); } return custom; } /** * Check if type represents a known mapping. * * @param type fully qualified class name * @return known mapping flag */ public boolean isKnownMapping(String type) { // TODO: add known mappings for org.w3c.dom.*, etc. return false; } /** * Direction set text method. This is intended for use during unmarshalling. TODO: add validation * * @param text * @param ictx */ private void setDirectionText(String text, IUnmarshallingContext ictx) { int direct = s_directionEnum.getValue(text); if (direct < 0) { throw new IllegalArgumentException("Value '" + text + "' not recognized for 'direction' attribute"); } else { m_isInput = direct != OUT_BINDING; m_isOutput = direct != IN_BINDING; } } /** * Direction get text method. This is intended for use during marshalling. * * @return text */ private String getDirectionText() { if (m_isInput && m_isOutput) { return s_directionEnum.getName(BOTH_BINDING); } else if (m_isInput) { return s_directionEnum.getName(IN_BINDING); } else { return s_directionEnum.getName(OUT_BINDING); } } /** * Initialize the global default namespace, along with special classes with built-in defaults. This needs to be done * as a separate step before unmarshalling, so that the special classes are available for use. */ public void initClasses() { // set default namespace if (getNamespace() == null) { setNamespace(getSpecifiedNamespace()); } // create information for some special classes ClassCustom custom = forceClassCustomization("java.util.List"); if (custom.getCreateType() == null && custom.getFactoryMethod() == null) { custom.setCreateType("java.util.ArrayList"); } custom = forceClassCustomization("java.util.Set"); if (custom.getCreateType() == null && custom.getFactoryMethod() == null) { custom.setCreateType("java.util.HashSet"); } custom = forceClassCustomization("java.util.Collection"); if (custom.getCreateType() == null && custom.getFactoryMethod() == null) { custom.setCreateType("java.util.ArrayList"); } } /** * Fills in class information based on inspection of the actual class data. This needs to be done as a separate step * following unmarshalling, so that the full details of the unmarshalled customizations are available. */ public void fillClasses() { // fill in details for all packages for (Iterator iter = m_packageMap.values().iterator(); iter.hasNext();) { PackageCustom pack = (PackageCustom)iter.next(); pack.apply(m_classLocator); } // fill in details for any extension elements if (m_extensionChildren != null) { for (int i = 0; i < m_extensionChildren.size(); i++) { Object child = m_extensionChildren.get(i); if (child instanceof IApply) { ((IApply)child).apply(m_classLocator); } } } } // // Package structure support /** * Get package customizations. If the requested package is already defined the existing instance will be returned, * otherwise a new instance will be created (along with any ancestor packages) and added to the structure. * * @param name * @return package */ public PackageCustom getPackage(String name) { // find existing package information PackageCustom pack = (PackageCustom)m_packageMap.get(name); if (pack == null) { // create new package information PackageCustom parent = null; int split = name.lastIndexOf('.'); String simple = name; String full = name; if (split > 0) { parent = getPackage(name.substring(0, split)); simple = name.substring(split + 1); full = parent.getName() + '.' + simple; } else if (name.length() > 0) { parent = getPackage(""); } pack = new PackageCustom(simple, full, parent); m_packageMap.put(name, pack); pack.apply(m_classLocator); } return pack; } /** * Unmarshaller implementation for class. This handles the nested structure of packages and classes, using the * abstract mappings defined by the binding to handle all the actual details. */ public static class Mapper implements IUnmarshaller { private int m_packageIndex; private int m_classIndex; public boolean isPresent(IUnmarshallingContext ictx) throws JiBXException { return true; } /** * Build the fully-qualified name for a package or class by appending the supplied name attribute value to the * fully-qualified name of the containing package. * * @param contain * @param ctx * @throws JiBXException */ private String buildFullName(PackageCustom contain, UnmarshallingContext ctx) throws JiBXException { String lead = ""; if (contain != null) { lead = contain.getName() + '.'; } return lead + ctx.attributeText(null, "name"); } private PackageCustom unmarshalPackage(GlobalCustom global, PackageCustom contain, UnmarshallingContext ctx) throws JiBXException { // create class instance and populate mapped values PackageCustom inst = global.getPackage(buildFullName(contain, ctx)); ctx.pushTrackedObject(inst); ctx.getUnmarshaller(m_packageIndex).unmarshal(inst, ctx); // handle nested package and class information while (ctx.isStart()) { String element = ctx.getName(); if (PackageCustom.ELEMENT_NAME.equals(element)) { unmarshalPackage(global, inst, ctx); } else if (ClassCustom.ELEMENT_NAME.equals(element)) { unmarshalClass(global, inst, ctx); } } ctx.popObject(); ctx.parsePastEndTag(null, PackageCustom.ELEMENT_NAME); return inst; } private ClassCustom unmarshalClass(GlobalCustom global, PackageCustom contain, UnmarshallingContext ctx) throws JiBXException { // create class instance and populate mapped values String name = buildFullName(contain, ctx); int split = name.lastIndexOf('.'); if (split < 0) { split = 0; } PackageCustom pack = global.getPackage(name.substring(0, split)); String simple = name.substring(split + 1); ClassCustom inst = pack.getClassCustomization(simple); if (inst == null) { inst = pack.addClassCustomization(simple); } ctx.pushTrackedObject(inst); ctx.getUnmarshaller(m_classIndex).unmarshal(inst, ctx); ctx.popObject(); ctx.parsePastEndTag(null, ClassCustom.ELEMENT_NAME); // add to list unmarshalled global.getUnmarshalledClasses().add(inst); return inst; } public Object unmarshal(Object obj, IUnmarshallingContext ictx) throws JiBXException { // set up the mapping indexes UnmarshallingContext ctx = (UnmarshallingContext)ictx; IBindingFactory factory = ((UnmarshallingContext)ictx).getFactory(); m_packageIndex = factory.getTypeIndex(PackageCustom.ELEMENT_NAME); m_classIndex = factory.getTypeIndex(ClassCustom.ELEMENT_NAME); if (m_packageIndex < 0 || m_classIndex < 0) { throw new JiBXException("Missing required abstract mappings"); } // initialize namespace and special classes GlobalCustom global = (GlobalCustom)obj; global.initClasses(); // process all child elements while (ctx.isStart()) { // check type of child present String element = ctx.getName(); if (PackageCustom.ELEMENT_NAME.equals(element)) { unmarshalPackage(global, null, ctx); } else if (ClassCustom.ELEMENT_NAME.equals(element)) { unmarshalClass(global, null, ctx); } else { global.internalAddExtensionChild(ctx.unmarshalElement()); } } return global; } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/generator/IApply.java0000644000175000017500000000413310651175632025163 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.generator; import org.jibx.binding.model.IClassLocator; /** * Apply customizations interface. This is used by the {@link GlobalCustom} class to fill out the customization details * for all unmarshalled components, including extension components from other packages. * * @author Dennis M. Sosnoski */ public interface IApply { /** * Apply customizations to default values. This is called to fill in the details for this customization (and all * child customization components). * * @param loc class locator */ public void apply(IClassLocator loc); } libjibx-java-1.1.6a/build/src/org/jibx/binding/generator/IClassSourceLocator.java0000644000175000017500000000415710651175632027656 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.generator; import org.jibx.binding.model.IClassLocator; import com.thoughtworks.qdox.model.JavaClass; /** * Locator for class and/or source information. Looks up class and source data as requested, using whatever method is * appropriate for the usage environment. * * @author Dennis M. Sosnoski */ public interface IClassSourceLocator extends IClassLocator { /** * Get source information. * * @param name fully-qualified name of class to be found * @return source information, or null if source not found */ public JavaClass getSourceInfo(String name); } libjibx-java-1.1.6a/build/src/org/jibx/binding/generator/MemberCustom.java0000644000175000017500000003217110651175632026372 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.generator; import org.jibx.binding.classes.ClassItem; import org.jibx.binding.util.StringArray; import org.jibx.runtime.EnumSet; import org.jibx.runtime.IUnmarshallingContext; /** * Member field or property customization information. * * @author Dennis M. Sosnoski */ public abstract class MemberCustom extends CustomBase { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "actual-type", "attribute", "create-type", "element", "factory", "required" }); // values specific to member level private String m_baseName; // internal use, not included in binding private String m_statedType; // internal use, not included in binding private String m_workingType; // internal use, not included in binding private boolean m_isPrimitive; // internal use, not included in binding private Integer m_style; // internal use, not included in binding private String m_xmlName; private String m_actualType; private String m_createType; private String m_factoryMethod; private Boolean m_required; /** * Constructor. * * @param parent */ protected MemberCustom(SharedNestingBase parent) { super(parent); } /** * Constructor with name known. * * @param parent * @param name */ protected MemberCustom(SharedNestingBase parent, String name) { this(parent); m_baseName = name; } /** * Get member (field or property) name. In the case of a field, this is the name with any prefix or suffix stripped; * in the case of a property, it's the property name. For both field and property names, the initial letter is * converted to lowercase unless the second letter is lowercase. * * @return name */ public String getBaseName() { return m_baseName; } /** * Set member (field or property) name. This is only for use by subclasses. * * @param name */ protected void setBaseName(String name) { m_baseName = name; } /** * Get stated type of member. * * @return stated type */ public String getStatedType() { return m_statedType; } /** * Get working type of member. * * @return working type */ public String getWorkingType() { return m_workingType; } /** * Convert case of member name derived from method or field name. If the supplied name starts with an uppercase * letter followed by a lowercase letter, the initial letter is converted to lowercase in order to obtain a standard * form of the name. * * @param name * @return converted name */ public static String convertMemberNameCase(String name) { if (name.length() > 0) { char lead = name.charAt(0); if (name.length() > 1) { if (Character.isUpperCase(lead) && Character.isLowerCase(name.charAt(1))) { StringBuffer buff = new StringBuffer(name); buff.setCharAt(0, Character.toLowerCase(lead)); name = buff.toString(); } } else { name = name.toLowerCase(); } } return name; } /** * Get the member name for a property from the read method name. This means stripping off the leading "get" or "is" * prefix, then case-converting the result. * * @param name * @return member name * @see #convertMemberNameCase(String) * @see #memberNameFromSetMethod(String) * @see #memberNameFromField(String, String[], String[]) */ public static String memberNameFromGetMethod(String name) { if (name.startsWith("get")) { name = name.substring(3); } else if (name.startsWith("is")) { name = name.substring(2); } return convertMemberNameCase(name); } /** * Get the member name for a property from the write method name. This means stripping off the leading "set" prefix, * then case-converting the result. * * @param name * @return member name * @see #convertMemberNameCase(String) * @see #memberNameFromGetMethod(String) * @see #memberNameFromField(String, String[], String[]) */ public static String memberNameFromSetMethod(String name) { if (name.startsWith("set")) { name = name.substring(3); } return convertMemberNameCase(name); } /** * Get the member name for a field from the field name. This means stripping off and leading field name prefix * and/or trailing suffix, then case-converting the result. * * @param name * @param prefs field prefixes to be stripped * @param suffs field suffixes to be stripped * @return member name * @see #convertMemberNameCase(String) * @see #memberNameFromGetMethod(String) * @see #memberNameFromSetMethod(String) */ public static String memberNameFromField(String name, String[] prefs, String[] suffs) { if (prefs != null) { for (int i = 0; i < prefs.length; i++) { if (name.startsWith(prefs[i])) { name = name.substring(prefs[i].length()); break; } } } if (suffs != null) { for (int i = 0; i < suffs.length; i++) { if (name.endsWith(prefs[i])) { name = name.substring(name.length() - prefs[i].length()); break; } } } return convertMemberNameCase(name); } /** * Get style code. * * @return value from {@link NestingBase#s_valueStyleEnum} enumeration */ public int getStyle() { if (m_style == null) { return ((NestingBase)getParent()).getValueStyle(m_workingType); } else { return m_style.intValue(); } } /** * Get XML element or attribute name. * * @return name (null if none) */ public String getXmlName() { return m_xmlName; } /** * Get member actual type. * * @return member actual type (null if none) */ public String getActualType() { return m_actualType; } /** * Get member create type. * * @return type used for creating new instance (null if none) */ public String getCreateType() { return m_createType; } /** * Get factory method. * * @return method used for creating new instance (null if none) */ public String getFactoryMethod() { return m_factoryMethod; } /** * Check if value is required. * * @return true if required, false if not */ public boolean isRequired() { if (m_required == null) { if (m_isPrimitive) { return getParent().isPrimitiveRequired(m_workingType); } else { return getParent().isObjectRequired(m_workingType); } } else { return m_required.booleanValue(); } } /** * Set element name method. This is intended for use during unmarshalling. TODO: add validation * * @param text * @param ictx */ private void setElement(String text, IUnmarshallingContext ictx) { m_xmlName = text; m_style = new Integer(NestingBase.ELEMENT_VALUE_STYLE); } /** * Set attribute name method. This is intended for use during unmarshalling. TODO: add validation * * @param text * @param ictx */ private void setAttribute(String text, IUnmarshallingContext ictx) { m_xmlName = text; m_style = new Integer(NestingBase.ATTRIBUTE_VALUE_STYLE); } /** * Style get text method. This is intended for use during marshalling. TODO: add validation * * @return text */ private String getStyleText() { if (m_style == null) { return null; } else { return NestingBase.s_valueStyleEnum.getName(m_style.intValue()); } } // // Methods overridden by subclasses /** * Check if member represents a property. * * @return true if property, false if not */ public abstract boolean isProperty(); /** * Check if a private member. * * @return true if private, false if not */ public abstract boolean isPrivate(); /** * Check if collection member. * * @return true if collection, false if not */ public boolean isCollection() { return false; } /** * Get field name. * * @return field name (null if none) */ public String getFieldName() { return null; } /** * Get 'get' method name. * * @return 'get' method name (null if none) */ public String getGetName() { return null; } /** * Get 'set' method name. * * @return 'set' method name (null if none) */ public String getSetName() { return null; } /** * Get collection item type. * * @return item type (null if none) */ public String getItemType() { return null; } /** * Get collection item element name. * * @return item name (null if none) */ public String getItemName() { return null; } /** * Complete customization information based on supplied type. If the type information has not previously been set, * this will set it. It will also derive the appropriate XML name, if not previously set. * * @param type (null if none available) * @param req required member flag (null if unspecified) * @param style representation style (null if unspecified) */ /* package */void complete(String type, Boolean req, Integer style) { m_statedType = type; if (m_actualType == null) { if (type == null) { m_workingType = "java.lang.Object"; } else { m_workingType = type; } } else { m_workingType = m_actualType; } if (m_xmlName == null) { m_xmlName = getParent().convertName(m_baseName); } m_isPrimitive = ClassItem.isPrimitive(m_workingType); // TODO: check consistency of setting if (m_required == null) { m_required = req; } if (m_style == null) { m_style = style; } if (!m_isPrimitive && m_createType == null && m_factoryMethod == null) { ClassCustom cust = getGlobal().getClassCustomization(m_workingType); if (cust != null) { m_createType = cust.getCreateType(); m_factoryMethod = cust.getFactoryMethod(); } } } /** * Gets the parent class link from the unmarshalling stack. This method is for use by factories during * unmarshalling. * * @param ictx unmarshalling context * @return containing class */ protected static ClassCustom getContainingClass(IUnmarshallingContext ictx) { return (ClassCustom)getContainingObject(ictx); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/generator/MemberFieldCustom.java0000644000175000017500000001134210651175632027333 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.generator; import java.lang.reflect.Modifier; import org.jibx.binding.model.IClassItem; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; /** * Member field customization information. * * @author Dennis M. Sosnoski */ public class MemberFieldCustom extends MemberCustom { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "field" }, MemberCustom.s_allowedAttributes); // values specific to member level private boolean m_isPrivate; // internal use, not included in binding private String m_fieldName; /** * Constructor. * * @param parent */ protected MemberFieldCustom(NestingBase parent) { super(parent); } /** * Constructor with name known. * * @param parent * @param name */ protected MemberFieldCustom(NestingBase parent, String name) { super(parent, name); } /** * Make sure all attributes are defined. * * @param uctx unmarshalling context */ protected void preSet(IUnmarshallingContext uctx) { validateAttributes(uctx, s_allowedAttributes); } /** * Check if member represents a property. * * @return false */ public boolean isProperty() { return false; } /** * Check if a private member. * * @return true if private, false if not */ public boolean isPrivate() { return m_isPrivate; } /** * Check if collection member. * * @return false */ public boolean isCollection() { return false; } /** * Get field name. * * @return field name (null if none) */ public String getFieldName() { return m_fieldName; } /** * Post-set method that converts the field name to a member name. * * @throws JiBXException */ protected void postSet() throws JiBXException { if (m_fieldName == null) { throw new JiBXException("'field' attribute is required for element"); } else { ClassCustom clas = (ClassCustom)getParent(); setBaseName(memberNameFromField(m_fieldName, clas.getStripPrefixes(), clas.getStripSuffixes())); } } /** * Complete customization information based on field information. * * @param field (null if none available) * @param req required member flag (null if unspecified) * @param style representation style (null if unspecified) */ /* package */void completeField(IClassItem field, Boolean req, Integer style) { if (m_fieldName == null) { m_fieldName = field.getName(); } m_isPrivate = Modifier.isPrivate(field.getAccessFlags()); complete(field == null ? null : field.getTypeName(), req, style); } private static MemberFieldCustom factory(IUnmarshallingContext ictx) { return new MemberFieldCustom(getContainingClass(ictx)); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/generator/MemberPropertyCustom.java0000644000175000017500000001256710651175632030146 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.generator; import java.lang.reflect.Modifier; import org.jibx.binding.model.IClassItem; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; /** * Member property customization information. * * @author Dennis M. Sosnoski */ public class MemberPropertyCustom extends MemberCustom { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "get-name", "set-name" }, MemberCustom.s_allowedAttributes); // values specific to member level private boolean m_isPrivate; // internal use, not included in binding private String m_getName; private String m_setName; /** * Constructor. * * @param parent */ protected MemberPropertyCustom(NestingBase parent) { super(parent); } /** * Constructor with name known. * * @param parent * @param name */ protected MemberPropertyCustom(NestingBase parent, String name) { super(parent, name); } /** * Make sure all attributes are defined. * * @param uctx unmarshalling context */ protected void preSet(IUnmarshallingContext uctx) { validateAttributes(uctx, s_allowedAttributes); } /** * Check if member represents a property. * * @return true */ public boolean isProperty() { return true; } /** * Check if a private member. * * @return true if private, false if not */ public boolean isPrivate() { return m_isPrivate; } /** * Check if collection member. * * @return false */ public boolean isCollection() { return false; } /** * Get 'get' method name. * * @return 'get' method name (null if none) */ public String getGetName() { return m_getName; } /** * Get 'set' method name. * * @return 'set' method name (null if none) */ public String getSetName() { return m_setName; } /** * Post-set method that converts the get/set method names to a member name. * * @throws JiBXException */ protected void postSet() throws JiBXException { if (m_getName == null && m_setName == null) { throw new JiBXException("'get-name' or 'set-name' attribute is required for element"); } else { if (m_setName == null) { setBaseName(memberNameFromGetMethod(m_getName)); } else { setBaseName(memberNameFromSetMethod(m_setName)); } } } /** * Complete customization information based on access method information. * * @param gmeth read access method (null if none) * @param smeth write access method (null if none) * @param type value type * @param req required member flag (null if unknown) * @param style representation style (null if unspecified) */ /* package */void completeProperty(IClassItem gmeth, IClassItem smeth, String type, Boolean req, Integer style) { if (m_getName == null && gmeth != null) { m_getName = gmeth.getName(); } if (m_setName == null && smeth != null) { m_setName = smeth.getName(); } m_isPrivate = (gmeth == null || Modifier.isPrivate(gmeth.getAccessFlags())) && (smeth == null || Modifier.isPrivate(smeth.getAccessFlags())); complete(type, req, style); } private static MemberPropertyCustom factory(IUnmarshallingContext ictx) { return new MemberPropertyCustom(getContainingClass(ictx)); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/generator/NestingBase.java0000644000175000017500000001763510673566260026207 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.generator; import org.jibx.binding.util.StringArray; import org.jibx.runtime.EnumSet; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.util.Types; /** * Base class for all standard binding customizations that can contain other customizations. * * @author Dennis M. Sosnoski */ public abstract class NestingBase extends SharedNestingBase { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "force-mapping", "map-abstract", "property-access", "strip-prefixes", "strip-suffixes", "value-style", "wrap-collections" }, SharedNestingBase.s_allowedAttributes); private static final String[] EMPTY_STRING_ARRAY = {}; // value style value set information public static final int ATTRIBUTE_VALUE_STYLE = 0; public static final int ELEMENT_VALUE_STYLE = 1; public static final int TEXT_VALUE_STYLE = 2; public static final Integer ATTRIBUTE_STYLE_INTEGER = new Integer(ATTRIBUTE_VALUE_STYLE); public static final Integer ELEMENT_STYLE_INTEGER = new Integer(ELEMENT_VALUE_STYLE); public static final Integer TEXT_STYLE_INTEGER = new Integer(TEXT_VALUE_STYLE); public static final EnumSet s_valueStyleEnum = new EnumSet(ATTRIBUTE_VALUE_STYLE, new String[] { "attribute", "element", "text" }); // values inherited through nesting private Integer m_valueStyle; private Boolean m_propertyAccess; private String[] m_stripPrefixes; private String[] m_stripSuffixes; private Boolean m_mapAbstract; private Boolean m_wrapCollections; private Boolean m_forceMapping; /** * Constructor. * * @param parent */ public NestingBase(SharedNestingBase parent) { super(parent); } // // Access methods for values inherited through nesting /** * Check abstract mapping flag. * * @return abstract mapping flag */ public boolean isMapAbstract() { if (m_mapAbstract == null) { if (getParent() == null) { return true; } else { return ((NestingBase)getParent()).isMapAbstract(); } } else { return m_mapAbstract.booleanValue(); } } /** * Set abstract mapping flag. * * @param abs */ public void setMapAbstract(Boolean abs) { m_mapAbstract = abs; } /** * Check force mapping flag. * * @return force mapping flag */ public boolean isForceMapping() { if (m_forceMapping == null) { if (getParent() == null) { return false; } else { return ((NestingBase)getParent()).isForceMapping(); } } else { return m_forceMapping.booleanValue(); } } /** * Check wrap collections flag. * * @return wrap collections flag */ public boolean isWrapCollections() { if (m_wrapCollections == null) { if (getParent() == null) { return false; } else { return ((NestingBase)getParent()).isWrapCollections(); } } else { return m_wrapCollections.booleanValue(); } } /** * Check property access mode flag. * * @return true if bean-style get/set methods to be used, false if fields to be used * directly */ public boolean isPropertyAccess() { if (m_propertyAccess == null) { if (getParent() == null) { return false; } else { return ((NestingBase)getParent()).isPropertyAccess(); } } else { return m_propertyAccess.booleanValue(); } } /** * Get prefixes to be stripped from field names. * * @return strip prefixes (null if none) */ public String[] getStripPrefixes() { if (m_stripPrefixes == null) { if (getParent() == null) { return EMPTY_STRING_ARRAY; } else { return ((NestingBase)getParent()).getStripPrefixes(); } } else { return m_stripPrefixes; } } /** * Get suffixes to be stripped from field names. * * @return strip suffix (null if none) */ public String[] getStripSuffixes() { if (m_stripSuffixes == null) { if (getParent() == null) { return EMPTY_STRING_ARRAY; } else { return ((NestingBase)getParent()).getStripSuffixes(); } } else { return m_stripSuffixes; } } /** * Get value style code. * * @param type value type name * @return value from {@link NestingBase#s_valueStyleEnum} enumeration */ public int getValueStyle(String type) { if (m_valueStyle == null) { if (getParent() == null) { if (!"java.lang.String".equals(type) && Types.isSimpleValue(type)) { return ATTRIBUTE_VALUE_STYLE; } else { return ELEMENT_VALUE_STYLE; } } else { return ((NestingBase)getParent()).getValueStyle(type); } } else { return m_valueStyle.intValue(); } } /** * Set value style. * * @param style (null if none at this level) */ public void setValueStyle(Integer style) { m_valueStyle = style; } /** * Value style set text method. This is intended for use during unmarshalling. TODO: add validation * * @param text * @param ictx */ private void setValueStyleText(String text, IUnmarshallingContext ictx) { if (text == null) { m_valueStyle = null; } else { m_valueStyle = new Integer(s_valueStyleEnum.getValue(text)); } } /** * Value style get text method. This is intended for use during marshalling. * * @return text */ private String getValueStyleText() { if (m_valueStyle == null) { return null; } else { return s_valueStyleEnum.getName(m_valueStyle.intValue()); } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/generator/PackageCustom.java0000644000175000017500000001236510651175632026521 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.generator; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.jibx.binding.model.IClassLocator; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; /** * Package customization information. * * @author Dennis M. Sosnoski */ public class PackageCustom extends NestingBase implements IApply { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "name" }, NestingBase.s_allowedAttributes); /** Element name in XML customization file. */ public static final String ELEMENT_NAME = "package"; // values specific to package level private String m_simpleName; private String m_fullName; // flag for namespace derivation done (from apply() method) private boolean m_fixedNamespace; // map from simple name to class information for classes in package private Map m_classMap; /** * Constructor. This has package access so that it can be used from the {@link GlobalCustom} class. * * @param simple simple package name * @param full fully-qualified package name * @param parent */ /* package */PackageCustom(String simple, String full, NestingBase parent) { super(parent); m_simpleName = simple; m_fullName = full; m_classMap = new HashMap(); } /** * Make sure all attributes are defined. * * @param uctx unmarshalling context */ private void preSet(IUnmarshallingContext uctx) { validateAttributes(uctx, s_allowedAttributes); } /** * Get fully-qualified package name. * * @return package name (empty string if default package) */ public String getName() { return m_fullName; } /** * Get existing information for class in this package. * * @param name simple class name (without package) * @return class information (null if no existing information) */ public ClassCustom getClassCustomization(String name) { return (ClassCustom)m_classMap.get(name); } /** * Add information for class in this package. This just creates the basic class information structure and returns * it, without populating the class details. * * @param name simple class name (without package) * @return class information (null if no existing information) */ /* package */ClassCustom addClassCustomization(String name) { ClassCustom clas = new ClassCustom(this, name); m_classMap.put(name, clas); return clas; } /** * Apply customizations to default values. This fills in the information for classes in this package by deriving * information for fields or properties in each class. This is intended to be used once, after customizations have * been unmarshalled. * * @param loc class locator */ public void apply(IClassLocator loc) { // derive namespace from parent setting, if not specified String ns = getSpecifiedNamespace(); if (ns == null) { SharedNestingBase parent = getParent(); if (parent instanceof PackageCustom && !((PackageCustom)parent).m_fixedNamespace) { ((PackageCustom)parent).apply(loc); } ns = deriveNamespace(parent.getNamespace(), m_fullName, getNamespaceStyle()); } setNamespace(ns); m_fixedNamespace = true; // apply customizations for all classes for (Iterator iter = m_classMap.values().iterator(); iter.hasNext();) { ((ClassCustom)iter.next()).apply(loc); } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/generator/SchemaDetailDirectory.java0000644000175000017500000004644610767273606030222 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.generator; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Map; import org.jibx.binding.model.BindingElement; import org.jibx.binding.model.BindingHolder; import org.jibx.binding.model.CollectionElement; import org.jibx.binding.model.ContainerElementBase; import org.jibx.binding.model.IClass; import org.jibx.binding.model.IClassLocator; import org.jibx.binding.model.IComponent; import org.jibx.binding.model.MappingElement; import org.jibx.binding.model.ModelVisitor; import org.jibx.binding.model.StructureElement; import org.jibx.binding.model.StructureElementBase; import org.jibx.binding.model.TemplateElementBase; import org.jibx.binding.model.ValidationContext; import org.jibx.binding.model.ValueElement; import org.jibx.runtime.QName; import org.jibx.util.Types; /** * Directory for components included in schema generation. This includes both <mapping> elements of the bindings and * special formats, with the latter currently limited to enumeration types. The building code works from a supplied list * of bindings, walking the tree structure of the bindings to find all mappings and processing each mapping directly * using the lists of child components. It creates mapping details and sets flags for the types of access to each * mapping, as well as creating enumeration details and counting usage to select globals. * * @author Dennis M. Sosnoski */ public class SchemaDetailDirectory { /** Locator for class information (null if none). */ private final IClassLocator m_locator; /** Binding customization information. */ private final GlobalCustom m_custom; /** Validation context for bindings. */ private final ValidationContext m_context; /** Map from <mapping> definition to mapping detail. */ private final Map m_mappingMap; /** Map from class name to enumeration detail. */ private final Map m_enumMap; /** * Constructor. * * @param loc locator for class information (null if none) * @param custom binding customization information (used for creating names as needed) * @param vctx binding validation context */ public SchemaDetailDirectory(IClassLocator loc, GlobalCustom custom, ValidationContext vctx) { m_locator = loc; m_custom = custom; m_context = vctx; m_mappingMap = new HashMap(); m_enumMap = new HashMap(); } /** * Populate the mapping directory from a supplied list of root bindings. This uses a visitor to analyze the * bindings, building the detail information to be used during the actual generation process. * * @param holders */ public void populate(ArrayList holders) { AnalysisVisitor visitor = new AnalysisVisitor(m_context); for (int i = 0; i < holders.size(); i++) { BindingHolder holder = (BindingHolder)holders.get(i); m_context.tourTree(holder.getBinding(), visitor); } } /** * Check if a <structure> element represents a type derivation. If the element is empty, has no name or property, * is required, and is a mapping reference, then it can be handled as a type derivation. * * @param struct * @return true if a type derivation, false if not */ private static boolean isTypeDerivation(StructureElement struct) { return struct.children().size() == 0 && !struct.hasName() && !struct.hasProperty() && !struct.isOptional() && (struct.getDeclaredType() != null || struct.getEffectiveMapping() != null); } /** * Check if class is an enumeration type. * * @param clas * @return enumeration type flag */ private boolean isEnumeration(IClass clas) { return clas.isSuperclass("java.lang.Enum"); } /** * Check if class is a simple value type. * * @param clas * @return simple value type flag */ private boolean isSimpleValue(IClass clas) { return Types.isSimpleValue(clas.getName()); } /** * Count the usage of an enumeration type. The first time this is called for a type it just creates the enumeration * detail, then if called again for the same type it flags it as a global. * * @param type */ private void countEnumUsage(String type) { SchemaEnumDetail detail = (SchemaEnumDetail)m_enumMap.get(type); if (detail == null) { ClassCustom custom = m_custom.forceClassCustomization(type); detail = new SchemaEnumDetail(custom); m_enumMap.put(type, detail); } else { detail.setGlobal(true); } } /** * Check references to mappings or enumeration types from component children of binding container element. This * allows the starting offset for content children to be passed in, so that mappings with type extension components * can be handled (with the extension component processed separately, since it's a special case). * * @param cont container element * @param offset starting offset for content */ private void checkReferences(ContainerElementBase cont, int offset) { // process all child components of container ArrayList childs = cont.children(); for (int i = offset; i < childs.size(); i++) { Object child = childs.get(i); if (child instanceof ValueElement) { // check value reference to enumeration type IClass type = ((ValueElement)child).getType(); if (isEnumeration(type)) { countEnumUsage(type.getName()); } } else if (child instanceof CollectionElement) { // check for collection item type CollectionElement collect = (CollectionElement)child; IClass itype = collect.getItemTypeClass(); if (isEnumeration(itype)) { // collection items are enumeration type, count directly countEnumUsage(itype.getName()); } else if (!isSimpleValue(itype)) { // find implied mapping, if one defined String type = itype.getName(); TemplateElementBase ref = collect.getDefinitions().getSpecificTemplate(type); if (ref instanceof MappingElement) { MappingElement mapref = (MappingElement)ref; SchemaMappingDetail detail = forceMappingDetail(mapref); detail.setElement(true); } } // check for nested type reference(s) checkReferences(collect, 0); } else if (child instanceof StructureElement) { // structure, check for nested definition StructureElement struct = (StructureElement)child; if (struct.children().size() > 0) { // just handle references from nested components checkReferences(struct, 0); } else { // no nested definition, check for mapping reference MappingElement ref = (MappingElement)struct.getEffectiveMapping(); if (ref == null) { m_context.addError("No handling defined for empty structure with no mapping reference", struct); } else { // get the referenced mapping information SchemaMappingDetail detail = forceMappingDetail(ref); if (struct.getName() == null) { if (ref.isAbstract()) { // abstract inline treated as group detail.setGroup(true); } else { // concrete treated as element reference detail.setElement(true); } } else if (!ref.isAbstract()) { // concrete with name should never happen m_context.addError("No handling defined for name on concrete mapping reference", struct); } } } } } } /** * Create the detail information for a <mapping>. This creates the detail information and adds it to the map, * then analyzes the structure of the mapping to find references to other mappings and to enumeration types. * * @param map * @return detail */ private SchemaMappingDetail addDetail(MappingElement map) { // check structure of mapping definition for schema type extension MappingElement base = null; ArrayList contents = map.getContentComponents(); if (contents.size() > 0) { // type extension requires reference as first content component Object content = contents.get(0); if (content instanceof StructureElement) { StructureElement struct = (StructureElement)content; if (isTypeDerivation(struct)) { base = (MappingElement)struct.getEffectiveMapping(); } } } // next search recursively for text and/or child element components this is done at this point (with loop // recursion, if needed) so that the flags can be set when creating the detail instance boolean haschild = false; boolean hastext = false; ArrayList expands = new ArrayList(); expands.add(map); for (int i = 0; i < expands.size(); i++) { // check for container with element name or text content ContainerElementBase contain = (ContainerElementBase)expands.get(i); contents = contain.getContentComponents(); for (int j = 0; j < contents.size(); j++) { IComponent comp = (IComponent)contents.get(j); if (comp.hasName()) { // component with name means child element haschild = true; } else if (comp instanceof ValueElement) { // value with no name implies text content hastext = true; } else if (comp instanceof CollectionElement) { // collection implies child element (repeating) haschild = true; } else { // structure, check for mapping reference StructureElement struct = (StructureElement)comp; if (struct.children().size() > 0) { // add container structure to expansion list expands.add(comp); } else { MappingElement ref = (MappingElement)struct.getEffectiveMapping(); if (ref != null) { // mapping element reference, check if named if (ref.getName() != null) { haschild = true; } else { expands.add(ref); } } } } } } // get the names for this mapping ClassCustom custom = m_custom.forceClassCustomization(map.getClassName()); QName tname = map.getTypeQName(); if (tname == null) { tname = custom.getTypeQName(); } QName oname = null; String name = map.getName(); if (name == null) { oname = custom.getElementQName(); } else { oname = new QName(map.getNamespace().getUri(), name); } // add new mapping detail based on information found SchemaMappingDetail detail = new SchemaMappingDetail(map, haschild, hastext, base, tname, oname); m_mappingMap.put(map, detail); // check for mapping to element name if (map.getName() == null) { // require base type generation as type if (base != null) { SchemaMappingDetail basedetail = forceMappingDetail(base); basedetail.setType(true); } } else { // force generating an element for this mapping detail.setElement(true); } // error if mapping extension doesn't map to type extension MappingElement extended = map.getExtendsMapping(); if (extended != null) { // recursively check for extension type match boolean isext = false; MappingElement ancest = base; while (ancest != null) { if (ancest.getClassName().equals(extended.getClassName())) { isext = true; break; } else { ancest = forceMappingDetail(ancest).getExtensionBase(); } } if (isext) { // flag generation as element in substitution group SchemaMappingDetail extdetail = forceMappingDetail(extended); extdetail.setElement(true); detail.setSubstitution(extdetail.getOtherName()); detail.setElement(true); } else { m_context.addError("'extends' mapping not usable as schema extension base", map); } } // process all references from this mapping checkReferences(map, base == null ? 0 : 1); return detail; } /** * Find detail information for a <mapping>. If this is the first time a particular mapping was requested, a new * detail information will be created for that mapping and returned. * * @param map * @return detail */ protected SchemaMappingDetail forceMappingDetail(MappingElement map) { SchemaMappingDetail detail = (SchemaMappingDetail)m_mappingMap.get(map); if (detail == null) { detail = addDetail(map); } return detail; } /** * Get detail information for a <mapping>. If the detail information does not exist, this throws an exception. * * @param map * @return detail */ public SchemaMappingDetail getMappingDetail(MappingElement map) { SchemaMappingDetail detail = (SchemaMappingDetail)m_mappingMap.get(map); if (detail == null) { throw new IllegalStateException("Detail not found"); } else { return detail; } } /** * Get detail information for a simple type. If the detail information does not exist, this throws an exception. * * @param type * @return detail */ public SchemaEnumDetail getSimpleDetail(String type) { SchemaEnumDetail detail = (SchemaEnumDetail)m_enumMap.get(type); if (detail == null) { throw new IllegalStateException("Detail not found"); } else { return detail; } } /** * Get all complex type details. * * @return collection of {@link SchemaMappingDetail} */ public Collection getComplexDetails() { return m_mappingMap.values(); } /** * Get all simple type details. * * @return collection of {@link SchemaEnumDetail} */ public Collection getSimpleDetails() { return m_enumMap.values(); } /** * Model visitor for analyzing the structure of bindings and determining the appropriate schema components. */ public class AnalysisVisitor extends ModelVisitor { /** Validation context running this visitor. */ private final ValidationContext m_context; /** * Constructor. * * @param vctx validation context that will run this visitor */ public AnalysisVisitor(ValidationContext vctx) { m_context = vctx; } /** * Visit mapping element. This just adds the mapping definition, if not already added. * * @param node * @return expansion flag */ public boolean visit(MappingElement node) { // check for nested mapping if (!(m_context.getParentElement() instanceof BindingElement)) { m_context.addWarning("No schema equivalent for nested type definitions - converting to global type"); } // add the definition forceMappingDetail(node); return super.visit(node); } /** * Visit structure or collection element. This just stops the expansion, since the content of mapping * definitions is processed at the time the mapping is added. * * @param node * @return false to block further expansion */ public boolean visit(StructureElementBase node) { return false; } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/generator/SchemaEnumDetail.java0000644000175000017500000000527410651175632027144 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.generator; /** * Holder for details about an enumeration type to be included in the schema definition. An instance of this class is * created for each enumeration type found. The actual generation process may be either in-line or as a separate * simpleType, depending on whether the same enumeration is used more than once. * * @author Dennis M. Sosnoski */ public class SchemaEnumDetail { /** Enumeration class customization information. */ private final ClassCustom m_custom; /** Global type definition flag. */ private boolean m_isGlobal; /** * Constructor. * * @param cust */ public SchemaEnumDetail(ClassCustom cust) { m_custom = cust; } /** * Check if global type definition. * * @return flag */ public boolean isGlobal() { return m_isGlobal; } /** * Set global type definition. * * @param global */ public void setGlobal(boolean global) { m_isGlobal = global; } /** * Get class customization information. * * @return custom */ public ClassCustom getCustom() { return m_custom; } }libjibx-java-1.1.6a/build/src/org/jibx/binding/generator/SchemaGenerator.java0000644000175000017500000013233410767273656027056 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.generator; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.AbstractList; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.jibx.binding.model.BindingHolder; import org.jibx.binding.model.CollectionElement; import org.jibx.binding.model.ContainerElementBase; import org.jibx.binding.model.DocumentFormatter; import org.jibx.binding.model.IClass; import org.jibx.binding.model.IClassItem; import org.jibx.binding.model.IClassLocator; import org.jibx.binding.model.IComponent; import org.jibx.binding.model.MappingElement; import org.jibx.binding.model.StructureElement; import org.jibx.binding.model.StructureElementBase; import org.jibx.binding.model.TemplateElementBase; import org.jibx.binding.model.ValidationContext; import org.jibx.binding.model.ValidationProblem; import org.jibx.binding.model.ValueElement; import org.jibx.runtime.QName; import org.jibx.schema.ISchemaResolver; import org.jibx.schema.SchemaHolder; import org.jibx.schema.TreeWalker; import org.jibx.schema.elements.AllElement; import org.jibx.schema.elements.AnnotatedBase; import org.jibx.schema.elements.AnnotationElement; import org.jibx.schema.elements.AttributeElement; import org.jibx.schema.elements.AttributeGroupElement; import org.jibx.schema.elements.AttributeGroupRefElement; import org.jibx.schema.elements.ChoiceElement; import org.jibx.schema.elements.CommonCompositorDefinition; import org.jibx.schema.elements.ComplexContentElement; import org.jibx.schema.elements.ComplexExtensionElement; import org.jibx.schema.elements.ComplexTypeElement; import org.jibx.schema.elements.DocumentationElement; import org.jibx.schema.elements.ElementElement; import org.jibx.schema.elements.FilteredSegmentList; import org.jibx.schema.elements.GroupElement; import org.jibx.schema.elements.GroupRefElement; import org.jibx.schema.elements.SchemaElement; import org.jibx.schema.elements.SequenceElement; import org.jibx.schema.elements.SimpleContentElement; import org.jibx.schema.elements.SimpleExtensionElement; import org.jibx.schema.elements.SimpleRestrictionElement; import org.jibx.schema.elements.SimpleTypeElement; import org.jibx.schema.elements.FacetElement.Enumeration; import org.jibx.schema.types.Count; import org.jibx.schema.validation.PrevalidationVisitor; import org.jibx.schema.validation.RegistrationVisitor; import org.jibx.schema.validation.ValidationVisitor; import org.jibx.util.Types; import org.w3c.dom.Node; /** * Schema generator from binding definition. * * @author Dennis M. Sosnoski */ public class SchemaGenerator { /** Locator for class information (null if none). */ private final IClassLocator m_locator; /** Binding customization information. */ private final GlobalCustom m_custom; /** Document used for annotations (null if none). */ private final DocumentFormatter m_formatter; /** Map from fully-qualified class name to qualified simple type name. */ private final Map m_simpleTypeMap; /** Map from namespace to schema holder. */ private final Map m_uriSchemaMap; /** Validation context for bindings. */ private final ValidationContext m_context; /** Details for mappings and enum usages. */ private final SchemaDetailDirectory m_detailDirectory; /** * Constructor. * * @param loc locator for class information (null if none) * @param custom binding customization information (used for creating names as needed) */ public SchemaGenerator(IClassLocator loc, GlobalCustom custom) { m_locator = loc; if (loc == null) { m_formatter = null; } else { m_formatter = new DocumentFormatter(); } m_custom = custom; m_simpleTypeMap = new HashMap(); m_uriSchemaMap = new HashMap(); m_context = new ValidationContext(loc); m_detailDirectory = new SchemaDetailDirectory(loc, custom, m_context); } /** * Find the schema to be used for a particular namespace. If this is the first time a particular namespace was * requested, a new schema will be created for that namespace and returned, using a default file name. * * @param uri namespace URI (null if no namespace) * @return schema holder */ public SchemaHolder findSchema(String uri) { SchemaHolder hold = (SchemaHolder)m_uriSchemaMap.get(uri); if (hold == null) { hold = new SchemaHolder(uri); m_uriSchemaMap.put(uri, hold); String sname; if (uri == null) { sname = "nonamespace.xsd"; } else { sname = uri.substring(uri.lastIndexOf('/') + 1) + ".xsd"; } hold.setFileName(sname); } return hold; } /** * Get the qualified name of the simple type used for a component, if a named simple type. If this returns * null, the {@link #buildSimpleType(IComponent)} method needs to be able to construct the * appropriate simple type definition. * * @param comp * @return qualified type name, null if inline definition needed */ private QName getSimpleTypeQName(IComponent comp) { IClass type = comp.getType(); String tname = comp.getType().getName(); QName qname = Types.schemaType(tname); if (qname == null) { qname = (QName)m_simpleTypeMap.get(tname); if (qname == null) { if (!type.isSuperclass("java.lang.Enum")) { m_context.addWarning("No schema equivalent known for type - treating as string", comp); qname = Types.STRING_QNAME; } } } return qname; } /** * Add class-level documentation to a schema component. * * @param info * @param root */ private void addDocumentation(IClass info, AnnotatedBase root) { if (info != null) { List nodes = m_formatter.docToNodes(info.getJavaDoc()); if (nodes != null) { AnnotationElement anno = new AnnotationElement(); DocumentationElement doc = new DocumentationElement(); for (Iterator iter = nodes.iterator(); iter.hasNext();) { Node node = (Node)iter.next(); doc.addContent(node); } anno.getItemsList().add(doc); root.setAnnotation(anno); } } } /** * Set the documentation for a schema component matching a class member. * * @param elem * @param item */ private void setDocumentation(IClassItem item, AnnotatedBase elem) { List nodes = m_formatter.docToNodes(item.getJavaDoc()); if (nodes != null) { AnnotationElement anno = new AnnotationElement(); DocumentationElement doc = new DocumentationElement(); for (Iterator iter = nodes.iterator(); iter.hasNext();) { Node node = (Node)iter.next(); doc.addContent(node); } anno.getItemsList().add(doc); elem.setAnnotation(anno); } } /** * Add documentation for a particular field or property. * * @param struct * @param elem */ private void addItemDocumentation(StructureElementBase struct, AnnotatedBase elem) { IClassItem item = struct.getField(); if (item == null) { item = struct.getGet(); } if (item != null) { setDocumentation(item, elem); } } /** * Add documentation for a particular field or property. * * @param value * @param elem */ private void addItemDocumentation(ValueElement value, AnnotatedBase elem) { IClassItem item = value.getField(); if (item == null) { item = value.getGet(); } if (item != null) { setDocumentation(item, elem); } } /** * Create the simple type definition for a type. This is only used for cases where * {@link #getSimpleTypeQName(IComponent)} returns null. The current implementation only supports * Java 5 Enum types, but in the future should be extended to support <format>-type conversions with supplied * schema definitions. This code requires a Java 5+ JVM to execute, but uses reflection to allow this class to be * loaded on older JVMs. * * @param type * @return type definition */ private SimpleTypeElement buildSimpleType(IClass type) { SchemaEnumDetail detail = m_detailDirectory.getSimpleDetail(type.getName()); try { Class clas = type.loadClass(); Method valsmeth = clas.getMethod("values", (Class[])null); String totxtname = detail.getCustom().getEnumValueMethod(); if (totxtname == null) { totxtname = "name"; } Method namemeth = clas.getMethod(totxtname, (Class[])null); try { valsmeth.setAccessible(true); } catch (RuntimeException e) { /* deliberately empty */ } try { namemeth.setAccessible(true); } catch (RuntimeException e) { /* deliberately empty */ } Object[] values = (Object[])valsmeth.invoke(null, (Object[])null); SimpleTypeElement simple = new SimpleTypeElement(); SimpleRestrictionElement restr = new SimpleRestrictionElement(); restr.setBase(Types.STRING_QNAME); for (int i = 0; i < values.length; i++) { Enumeration enumel = new Enumeration(); enumel.setValue(namemeth.invoke(values[i], (Object[])null).toString()); restr.getFacetsList().add(enumel); } simple.setDerivation(restr); addDocumentation(detail.getCustom().getClassInformation(), simple); return simple; } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } return null; } /** * Convenience method to create the simple type definition for the type of a component. * * @param comp * @return type definition */ private SimpleTypeElement buildSimpleType(IComponent comp) { return buildSimpleType(comp.getType()); } /** * General object comparison method. Don't know why Sun hasn't seen fit to include this somewhere, but at least it's * easy to write (over and over again). * * @param a first object to be compared * @param b second object to be compared * @return true if both objects are null, or if a.equals(b); * false otherwise */ public static boolean isEqual(Object a, Object b) { return (a == null) ? b == null : a.equals(b); } /** * Check if a name references a different schema. * * @param qname name to be checked * @param hold schema holder * @return true if different, false if the same */ public static boolean isDifferentSchema(QName qname, SchemaHolder hold) { return qname != null && !isEqual(qname.getUri(), hold.getNamespace()) && !isEqual(qname.getUri(), Types.SCHEMA_NAMESPACE); } /** * Check for dependency on another schema. This creates an import for the target schema, and assigns a prefix for * referencing the target schema namespace. * * @param qname name referenced by this schema * @param hold schema holder */ public void checkDependency(QName qname, SchemaHolder hold) { if (isDifferentSchema(qname, hold)) { String uri = qname.getUri(); SchemaHolder tohold = findSchema(uri); hold.addReference(tohold); hold.getPrefix(uri); } } /** * Check for dependency between two schemas. This creates schema imports in both directions, and assigns a prefix * for referencing the target schema namespace from within the current schema. * * @param qname name referenced by this schema * @param hold schema holder */ private void checkBidirectionalDependency(QName qname, SchemaHolder hold) { if (isDifferentSchema(qname, hold)) { String uri = qname.getUri(); SchemaHolder tohold = findSchema(uri); hold.addReference(tohold); hold.getPrefix(uri); tohold.addReference(hold); } } /** * Build a schema element description from a binding content component. * * @param comp source component * @param repeat repeated element flag * @param hold * @return element */ private ElementElement buildElement(IComponent comp, boolean repeat, SchemaHolder hold) { // create the basic element structure ElementElement elem = new ElementElement(); if (repeat) { elem.setMinOccurs(Count.COUNT_ZERO); elem.setMaxOccurs(Count.COUNT_UNBOUNDED); } else if (comp.isOptional()) { elem.setMinOccurs(Count.COUNT_ZERO); } // set or create the element type definition boolean isref = false; if (comp instanceof ValueElement) { QName qname = getSimpleTypeQName(comp); if (qname == null) { elem.setTypeDefinition(buildSimpleType(comp)); } else { setElementType(qname, elem, hold); } addItemDocumentation((ValueElement)comp, elem); } else if (comp instanceof CollectionElement) { CollectionElement coll = (CollectionElement)comp; if (coll.children().size() > 0) { // collection with children, choice or sequence from order ComplexTypeElement type = new ComplexTypeElement(); if (coll.isOrdered()) { // ordered children go to sequence element, repeating SequenceElement seq = new SequenceElement(); type.setContentDefinition(seq); } else { // unordered children go to repeated choice element ChoiceElement choice = new ChoiceElement(); type.setContentDefinition(choice); } type.setContentDefinition(buildCompositor(coll, 0, true, hold)); elem.setTypeDefinition(type); } else { // empty collection, item-type must reference a concrete mapping String itype = coll.getItemTypeName(); TemplateElementBase ref = coll.getDefinitions().getSpecificTemplate(itype); if (ref instanceof MappingElement) { // item type with concrete mapping, make it an element SchemaMappingDetail detail = m_detailDirectory.getMappingDetail((MappingElement)ref); ComplexTypeElement type = new ComplexTypeElement(); SequenceElement seq = new SequenceElement(); type.setContentDefinition(seq); ElementElement item = new ElementElement(); setElementRef(detail.getOtherName(), item, hold); item.setMinOccurs(Count.COUNT_ZERO); item.setMaxOccurs(Count.COUNT_UNBOUNDED); seq.getParticleList().add(item); elem.setTypeDefinition(type); addItemDocumentation(coll, item); } else { // TODO: handle this with xs:any strict? m_context.addWarning("Handling not implemented for unspecified mapping", coll); } } } else { // must be a structure, check children StructureElement struct = (StructureElement)comp; if (struct.children().size() > 0) { // structure with children, choice or sequence from order ComplexTypeElement type = new ComplexTypeElement(); if (struct.isOrdered()) { // ordered children go to sequence element SequenceElement seq = new SequenceElement(); type.setContentDefinition(seq); } else { // unordered children go to repeated choice element ChoiceElement choice = new ChoiceElement(); type.setContentDefinition(choice); } type.setContentDefinition(buildCompositor(struct, 0, false, hold)); fillAttributes(struct, 0, type.getAttributeList(), hold); elem.setTypeDefinition(type); } else { // no children, must be a mapping reference MappingElement ref = (MappingElement)struct.getEffectiveMapping(); if (ref == null) { // TODO: handle this with xs:any strict? m_context.addWarning("Handling not implemented for unspecified mapping", struct); } else { // implicit mapping reference, find the handling SchemaMappingDetail detail = m_detailDirectory.getMappingDetail(ref); if (detail.isElement()) { // structure with concrete mapping setElementRef(detail.getOtherName(), elem, hold); isref = true; } else { // set element type to that constructed from mapping setElementType(detail.getTypeName(), elem, hold); } } } addItemDocumentation(struct, elem); } if (!isref) { elem.setName(comp.getName()); } return elem; } /** * Add a compositor as a particle in another compositor. If the compositor being added has only one particle, the * particle is directly added to the containing compositor. * * @param part compositor being added as a particle * @param comp target compositor for add */ private static void addCompositorPart(CommonCompositorDefinition part, CommonCompositorDefinition comp) { FilteredSegmentList parts = part.getParticleList(); Count maxo = part.getMaxOccurs(); Count mino = part.getMinOccurs(); if (parts.size() == 1 && (maxo == null || maxo.isEqual(1)) && (mino == null || mino.isEqual(1))) { comp.getParticleList().add(parts.get(0)); } else if (parts.size() > 1) { comp.getParticleList().add(part); } } /** * Build compositor for type definition. This creates and returns the appropriate form of compositor for the * container, populated with particles matching the child element components of the binding container. * * @param cont container element defining structure * @param offset offset for first child component to process * @param repeat repeated item flag * @param hold holder for schema under construction * @return constructed compositor */ private CommonCompositorDefinition buildCompositor(ContainerElementBase cont, int offset, boolean repeat, SchemaHolder hold) { // start with the appropriate type of compositor CommonCompositorDefinition cdef; if (cont.isChoice()) { // choice container goes directly to choice compositor cdef = new ChoiceElement(); } else if (cont.isOrdered()) { // ordered container goes directly to sequence compositor cdef = new SequenceElement(); } else if (repeat) { // unordered repeat treated as repeated choice compositor cdef = new ChoiceElement(); cdef.setMaxOccurs(Count.COUNT_UNBOUNDED); } else { // unordered non-repeat treated as all compositor // TODO: verify conditions for all cdef = new AllElement(); } // generate schema equivalents for content components of container ArrayList comps = cont.getContentComponents(); for (int i = offset; i < comps.size(); i++) { IComponent comp = (IComponent)comps.get(i); if (comp.hasName()) { // create element for named content component ElementElement element = buildElement(comp, repeat, hold); if (comp instanceof StructureElementBase) { addItemDocumentation((StructureElementBase)comp, element); } cdef.getParticleList().add(element); } else if (comp instanceof ContainerElementBase) { ContainerElementBase contain = (ContainerElementBase)comp; boolean iscoll = comp instanceof CollectionElement; if (contain.children().size() > 0) { // no element name, but children; handle with recursive call CommonCompositorDefinition part = buildCompositor(contain, 0, iscoll, hold); addCompositorPart(part, cdef); } else if (iscoll) { // collection without a wrapper element CollectionElement coll = (CollectionElement)comp; String itype = coll.getItemTypeName(); TemplateElementBase ref = coll.getDefinitions().getSpecificTemplate(itype); if (ref instanceof MappingElement) { // item type with concrete mapping, make it an element SchemaMappingDetail detail = m_detailDirectory.getMappingDetail((MappingElement)ref); ElementElement item = new ElementElement(); QName oname = detail.getOtherName(); setElementRef(oname, item, hold); item.setMinOccurs(Count.COUNT_ZERO); item.setMaxOccurs(Count.COUNT_UNBOUNDED); addItemDocumentation(coll, item); cdef.getParticleList().add(item); } else { // TODO: handle this with xs:any strict? m_context.addWarning("Handling not implemented for unspecified mapping", coll); } } else if (comp instanceof StructureElement) { // no children, must be mapping reference StructureElement struct = (StructureElement)comp; MappingElement ref = (MappingElement)struct.getEffectiveMapping(); if (ref == null) { // TODO: handle this with xs:any strict? m_context.addWarning("Handling not implemented for unspecified mapping", struct); } else { // handle mapping reference based on form and name use SchemaMappingDetail detail = m_detailDirectory.getMappingDetail(ref); if (ref.isAbstract()) { // abstract inline treated as group GroupRefElement group = new GroupRefElement(); setGroupRef(detail.getOtherName(), group, hold); if (comp.isOptional()) { group.setMinOccurs(Count.COUNT_ZERO); } cdef.getParticleList().add(group); } else { // concrete treated as element reference ElementElement elem = new ElementElement(); setElementRef(detail.getOtherName(), elem, hold); if (comp.isOptional()) { elem.setMinOccurs(Count.COUNT_ZERO); } addItemDocumentation(struct, elem); cdef.getParticleList().add(elem); } } } else { m_context.addError("Unsupported binding construct", comp); } } else { m_context.addError("Unsupported component", comp); } } // simplify by eliminating this level if only child a compositor if ((cont.isOrdered() || cont.isChoice()) && cdef.getParticleList().size() == 1) { Object child = cdef.getParticleList().get(0); if (child instanceof CommonCompositorDefinition) { cdef = (CommonCompositorDefinition)child; } } return cdef; } /** * Set group reference, adding schema reference if necessary. * * @param qname reference name * @param group * @param hold schema holder */ public void setGroupRef(QName qname, AttributeGroupRefElement group, SchemaHolder hold) { checkDependency(qname, hold); group.setRef(qname); } /** * Set group reference, adding schema reference if necessary. * * @param qname reference name * @param group * @param hold schema holder */ public void setGroupRef(QName qname, GroupRefElement group, SchemaHolder hold) { checkDependency(qname, hold); group.setRef(qname); } /** * Set element reference, adding schema reference if necessary. * * @param qname reference name * @param elem * @param hold schema holder */ public void setElementRef(QName qname, ElementElement elem, SchemaHolder hold) { checkDependency(qname, hold); elem.setRef(qname); } /** * Set attribute type, adding schema reference if necessary. * * @param qname type name * @param elem * @param hold schema holder */ public void setAttributeType(QName qname, AttributeElement elem, SchemaHolder hold) { elem.setType(qname); checkDependency(qname, hold); } /** * Set element type, adding schema reference if necessary. * * @param qname type name * @param elem * @param hold schema holder */ public void setElementType(QName qname, ElementElement elem, SchemaHolder hold) { elem.setType(qname); checkDependency(qname, hold); } /** * Set element substitution group, adding schema references in each direction if necessary. * * @param qname substitution group element name * @param elem * @param hold schema holder */ public void setSubstitutionGroup(QName qname, ElementElement elem, SchemaHolder hold) { elem.setSubstitutionGroup(qname); checkBidirectionalDependency(qname, hold); } /** * Build attributes as part of complex type definition. * * @param cont container element defining structure * @param offset offset for first child component to process * @param attrs complex type attribute list * @param hold holder for schema under construction */ private void fillAttributes(ContainerElementBase cont, int offset, AbstractList attrs, SchemaHolder hold) { // add child attribute components ArrayList comps = cont.getAttributeComponents(); for (int i = 0; i < comps.size(); i++) { IComponent comp = (IComponent)comps.get(i); if (comp instanceof ValueElement) { // simple attribute definition AttributeElement attr = new AttributeElement(); attr.setName(comp.getName()); QName qname = getSimpleTypeQName(comp); if (qname == null) { attr.setTypeDefinition(buildSimpleType(comp)); } else { setAttributeType(qname, attr, hold); } if (!comp.isOptional()) { attr.setUse(AttributeElement.REQUIRED_USE); } addItemDocumentation((ValueElement)comp, attr); attrs.add(attr); } else if (comp instanceof ContainerElementBase) { ContainerElementBase contain = (ContainerElementBase)comp; if (contain.children().size() > 0) { // handle children with recursive call fillAttributes(contain, 0, attrs, hold); } else if (comp instanceof StructureElement) { // no children, must be mapping reference StructureElement struct = (StructureElement)comp; if (struct.isOptional()) { m_context.addError("No schema equivalent for optional abstract mapping with attributes", comp); } else { MappingElement ref = (MappingElement)struct.getEffectiveMapping(); if (ref != null && ref.isAbstract()) { // abstract inline treated as group SchemaMappingDetail detail = m_detailDirectory.getMappingDetail(ref); AttributeGroupRefElement group = new AttributeGroupRefElement(); setGroupRef(detail.getOtherName(), group, hold); attrs.add(group); } else { throw new IllegalStateException("Unsupported binding construct " + comp); } } } else { m_context.addError("Unsupported binding construct", comp); } } else { m_context.addError("Unsupported component", comp); } } } /** * Check if a container element of the binding represents complex content. * * @param cont * @return true if complex content, false if not */ private static boolean isComplexContent(ContainerElementBase cont) { ArrayList contents = cont.getContentComponents(); for (int i = 0; i < contents.size(); i++) { Object item = contents.get(i); if (item instanceof IComponent && ((IComponent)item).hasName()) { return true; } else if (item instanceof ContainerElementBase && isComplexContent((ContainerElementBase)item)) { return true; } } return false; } /** * Build the complex type definition for a mapping. * * @param detail mapping detail * @param hold target schema for definition * @return constructed complex type */ private ComplexTypeElement buildComplexType(SchemaMappingDetail detail, SchemaHolder hold) { // create the type and compositor ComplexTypeElement type = new ComplexTypeElement(); MappingElement mapping = detail.getMapping(); MappingElement base = detail.getExtensionBase(); if (base == null) { if (detail.isGroup()) { // create type using references to group and/or attributeGroup SequenceElement seq = new SequenceElement(); if (detail.hasChild()) { GroupRefElement gref = new GroupRefElement(); setGroupRef(detail.getOtherName(), gref, hold); seq.getParticleList().add(gref); } type.setContentDefinition(seq); if (detail.hasAttribute()) { AttributeGroupRefElement gref = new AttributeGroupRefElement(); setGroupRef(detail.getOtherName(), gref, hold); type.getAttributeList().add(gref); } } else { // create type directly type.setContentDefinition(buildCompositor(mapping, 0, false, hold)); fillAttributes(mapping, 0, type.getAttributeList(), hold); } } else { // create type as extension of base type SchemaMappingDetail basedet = m_detailDirectory.getMappingDetail(base); if (isComplexContent(base) || isComplexContent(mapping)) { // complex extension with complex content ComplexExtensionElement ext = new ComplexExtensionElement(); setComplexExtensionBase(basedet.getTypeName(), ext, hold); CommonCompositorDefinition comp = buildCompositor(mapping, 1, false, hold); if (comp.getParticleList().size() > 0) { ext.setContentDefinition(comp); } fillAttributes(mapping, 0, ext.getAttributeList(), hold); ComplexContentElement cont = new ComplexContentElement(); cont.setDerivation(ext); type.setContentType(cont); } else { // simple extension with simple content SimpleExtensionElement ext = new SimpleExtensionElement(); setSimpleExtensionBase(basedet.getTypeName(), ext, hold); fillAttributes(mapping, 0, ext.getAttributeList(), hold); SimpleContentElement cont = new SimpleContentElement(); cont.setDerivation(ext); type.setContentType(cont); } } return type; } /** * Set the base for a complex extension type. * * @param qname * @param ext * @param hold */ private void setComplexExtensionBase(QName qname, ComplexExtensionElement ext, SchemaHolder hold) { ext.setBase(qname); checkBidirectionalDependency(qname, hold); } /** * Set the base for a simple extension type. * * @param qname * @param ext * @param hold */ private void setSimpleExtensionBase(QName qname, SimpleExtensionElement ext, SchemaHolder hold) { ext.setBase(qname); checkBidirectionalDependency(qname, hold); } /** * Add mapping to schema definitions. This generates the appropriate schema representation for the mapping based on * the detail flags, which may include group and/or attributeGroup, complexType, and element definitions. * * @param detail */ private void addMapping(SchemaMappingDetail detail) { // get the documentation to be used for type IClass info = null; if (m_locator != null) { info = m_locator.getClassInfo(detail.getMapping().getClassName()); } // start by generating group/attributeGroup schema components MappingElement mapping = detail.getMapping(); if (detail.isGroup()) { // TODO: extend base type for group/attributeGroup? QName qname = detail.getOtherName(); SchemaHolder hold = findSchema(qname.getUri()); if (detail.hasChild()) { GroupElement group = new GroupElement(); group.setName(qname.getName()); group.setDefinition(buildCompositor(mapping, 0, false, hold)); addDocumentation(info, group); hold.getSchema().getTopLevelChildren().add(group); } if (detail.hasAttribute()) { AttributeGroupElement attgrp = new AttributeGroupElement(); attgrp.setName(qname.getName()); fillAttributes(mapping, 0, attgrp.getAttributeList(), hold); addDocumentation(info, attgrp); hold.getSchema().getTopLevelChildren().add(attgrp); } } // next generate the complex type definition if (detail.isType()) { // set up the basic definition structure QName qname = detail.getTypeName(); SchemaHolder hold = findSchema(qname.getUri()); ComplexTypeElement type = buildComplexType(detail, hold); type.setName(qname.getName()); addDocumentation(info, type); hold.getSchema().getTopLevelChildren().add(type); } // finish by generating element definition if (detail.isElement()) { QName qname = detail.getOtherName(); SchemaHolder hold = findSchema(qname.getUri()); ElementElement elem = new ElementElement(); elem.setName(qname.getName()); setSubstitutionGroup(detail.getSubstitution(), elem, hold); if (detail.isType()) { setElementType(detail.getTypeName(), elem, hold); } else { // check for just an element wrapper around type reference MappingElement ext = detail.getExtensionBase(); if (ext != null && !detail.hasAttribute() && mapping.getContentComponents().size() == 1) { setElementType(ext.getTypeQName(), elem, hold); } else { // add documentation to element which is not also a type addDocumentation(info, elem); elem.setTypeDefinition(buildComplexType(detail, hold)); } } hold.getSchema().getTopLevelChildren().add(elem); } } /** * Generate a list of schemas from a list of bindings. The two lists are not necessarily in any particular * relationship to each other. * * @param holders list of {@link BindingHolder} * @return schemas list of {@link SchemaHolder} */ public ArrayList generate(ArrayList holders) { // start by scanning all bindings to build mapping and enum details m_detailDirectory.populate(holders); // process all the simple type definitions (formats or enums) Collection simples = m_detailDirectory.getSimpleDetails(); for (Iterator iter = simples.iterator(); iter.hasNext();) { SchemaEnumDetail detail = (SchemaEnumDetail)iter.next(); if (detail.isGlobal()) { ClassCustom custom = detail.getCustom(); SimpleTypeElement type = buildSimpleType(custom.getClassInformation()); type.setName(custom.getTypeName()); SchemaHolder hold = findSchema(custom.getNamespace()); hold.getSchema().getTopLevelChildren().add(type); m_simpleTypeMap.put(custom.getName(), custom.getTypeQName()); } } // process all the mapping definitions from directory Collection mappings = m_detailDirectory.getComplexDetails(); for (Iterator iter = mappings.iterator(); iter.hasNext();) { SchemaMappingDetail detail = (SchemaMappingDetail)iter.next(); addMapping(detail); } // report any problems found in schema generation ArrayList probs = m_context.getProblems(); boolean error = m_context.getErrorCount() > 0 || m_context.getFatalCount() > 0; if (probs.size() > 0) { System.out.print(error ? "Errors" : "Warnings"); System.out.println(" in generated binding:"); for (int j = 0; j < probs.size(); j++) { ValidationProblem prob = (ValidationProblem)probs.get(j); System.out.print(prob.getSeverity() >= ValidationProblem.ERROR_LEVEL ? "Error: " : "Warning: "); System.out.println(prob.getDescription()); } } // fix all references between schemas ArrayList schemas = new ArrayList(m_uriSchemaMap.values()); for (int i = 0; i < schemas.size(); i++) { SchemaHolder hold = (SchemaHolder)schemas.get(i); hold.finish(); } // validate the schemas and report any problems org.jibx.schema.validation.ValidationContext vctx = new org.jibx.schema.validation.ValidationContext(); for (int i = 0; i < schemas.size(); i++) { SchemaHolder holder = (SchemaHolder)schemas.get(i); String id = holder.getFileName(); SchemaElement schema = holder.getSchema(); schema.setResolver(new MemoryResolver(id)); vctx.setSchema(id, schema); } TreeWalker wlkr = new TreeWalker(vctx, vctx); vctx.clearTraversed(); for (int i = 0; i < schemas.size(); i++) { wlkr.walkSchema(((SchemaHolder)schemas.get(i)).getSchema(), new PrevalidationVisitor(vctx)); } vctx.clearTraversed(); for (int i = 0; i < schemas.size(); i++) { wlkr.walkSchema(((SchemaHolder)schemas.get(i)).getSchema(), new RegistrationVisitor(vctx)); } vctx.clearTraversed(); for (int i = 0; i < schemas.size(); i++) { wlkr.walkSchema(((SchemaHolder)schemas.get(i)).getSchema(), new ValidationVisitor(vctx)); } probs = vctx.getProblems(); if (probs.size() > 0) { for (int j = 0; j < probs.size(); j++) { org.jibx.schema.validation.ValidationProblem prob = (org.jibx.schema.validation.ValidationProblem)probs.get(j); System.out.print(prob.getSeverity() >= ValidationProblem.ERROR_LEVEL ? "Error: " : "Warning: "); System.out.println(prob.getDescription()); } } return schemas; } /** * Get details of schema handling of a mapping. * * @param map * @return mapping details */ public SchemaMappingDetail getMappingDetail(MappingElement map) { return m_detailDirectory.forceMappingDetail(map); } private static class MemoryResolver implements ISchemaResolver { private final String m_id; public MemoryResolver(String id) { m_id = id; } public InputStream getContent() throws IOException { throw new IOException("Source not available"); } public String getName() { return m_id; } public String getId() { return m_id; } public ISchemaResolver resolve(String loc) throws IOException { return new MemoryResolver(loc); } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/generator/SchemaMappingDetail.java0000644000175000017500000001176610651175632027636 0ustar moellermoellerpackage org.jibx.binding.generator; import org.jibx.binding.model.MappingElement; import org.jibx.runtime.QName; /** * Holder for the details of how a mapping is to be represented in a schema. Each mapping is converted to a complex * type, but the complex type may be either global or local to a containing global element. In the case of a mapping * used as the base for one or more extension types, both a global complex type and a global element that references the * type are required. This also tracks the content form for the complex type definition. * * @author Dennis M. Sosnoski */ public class SchemaMappingDetail { /** Mapping to be generated. */ private final MappingElement m_mapping; /** Schema type extension base mapping. */ private final MappingElement m_extensionBase; /** Has child element(s) flag. */ private final boolean m_hasChild; /** Has child text(s) flag. */ private final boolean m_hasText; /** Has attribute(s) flag. */ private final boolean m_hasAttribute; /** Type name (ignored if not generated as complex type). */ private final QName m_typeName; /** * Element/group/attributeGroup name (ignored if not generated as any of these). */ private final QName m_otherName; /** Substitution group base name. */ private QName m_substitutionName; /** Generate as complex type flag. */ private boolean m_isType; /** Generate as element flag. */ private boolean m_isElement; /** * Generate as group/attributeGroup flag. If set, will be generated as either a group (if elements defined), an * attributeGroup (if attributes defined), or both. */ private boolean m_isGroup; /** * Constructor. * * @param map mapping definition * @param haschild has child element(s) flag * @param hastext has child text(s) flag * @param base base mapping for schema type extension * @param tname name as type * @param oname name as element/group/attributeGroup */ public SchemaMappingDetail(MappingElement map, boolean haschild, boolean hastext, MappingElement base, QName tname, QName oname) { m_mapping = map; m_extensionBase = base; m_hasChild = haschild; m_hasText = hastext; m_hasAttribute = map.getAttributeComponents().size() > 0; m_typeName = tname; m_otherName = oname; if (map.isAbstract() && map.getTypeName() != null) { m_isType = true; } else if (!map.isAbstract()) { m_isElement = true; } } /** * Check if generating as an element. * * @return flag */ public boolean isElement() { return m_isElement; } /** * Set generating as an element. * * @param gen */ public void setElement(boolean gen) { m_isElement = gen; } /** * Check if generating as a group. * * @return flag */ public boolean isGroup() { return m_isGroup; } /** * Set generating as a group. * * @param gen */ public void setGroup(boolean gen) { m_isGroup = gen; } /** * Check if generating as a group. * * @return flag */ public boolean isType() { return m_isType; } /** * Set generating as a type. * * @param gen */ public void setType(boolean gen) { m_isType = gen; } /** * Get base mapping for schema type extension. * * @return extension base */ public MappingElement getExtensionBase() { return m_extensionBase; } /** * Check if attribute component present. * * @return flag */ public boolean hasAttribute() { return m_hasAttribute; } /** * Check if child element component present. * * @return flag */ public boolean hasChild() { return m_hasChild; } /** * Check if text component present. * * @return flag */ public boolean hasText() { return m_hasText; } /** * Get mapping. * * @return mapping */ public MappingElement getMapping() { return m_mapping; } /** * Get name for type. * * @return name */ public QName getTypeName() { return m_typeName; } /** * Get element name. * * @return element name for concrete mapping (null if abstract) */ public QName getOtherName() { return m_otherName; } /** * Get substitution group base name. * * @return substitution group base name */ public QName getSubstitution() { return m_substitutionName; } /** * Set substitution group base name. * * @param qname */ public void setSubstitution(QName qname) { m_substitutionName = qname; } }libjibx-java-1.1.6a/build/src/org/jibx/binding/generator/SharedNestingBase.java0000644000175000017500000002042510651175632027320 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.generator; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; /** * Base class for all binding customizations that can contain other customizations. This includes inherited values * shared with customization extensions (in particular, the WSDL extensions). * * @author Dennis M. Sosnoski */ public abstract class SharedNestingBase extends CustomBase { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "name-style", "namespace", "namespace-style", "require" }); // values inherited through nesting private String m_namespace; private Integer m_namespaceStyle; private Integer m_nameStyle; private Integer m_require; // value set by subclasses private String m_actualNamespace; /** * Constructor. * * @param parent */ public SharedNestingBase(SharedNestingBase parent) { super(parent); } // // Access methods for values inherited through nesting /** * Get namespace specified on this element. This method is only intended for use by subclasses - otherwise the * {@link #getNamespace()} method should instead be used. * * @return namespace (null if none) */ protected String getSpecifiedNamespace() { return m_namespace; } /** * Get namespace style. * * @return namespace style */ public int getNamespaceStyle() { if (m_namespaceStyle == null) { if (getParent() == null) { return DERIVE_BY_PACKAGE; } else { return getParent().getNamespaceStyle(); } } else { return m_namespaceStyle.intValue(); } } /** * Set name style. * * @param style (null if none at this level) */ public void setNamespaceStyle(Integer style) { m_namespaceStyle = style; } /** * Get name style. * * @return name style */ public int getNameStyle() { if (m_nameStyle == null) { if (getParent() == null) { return CAMEL_CASE_NAMES; } else { return getParent().getNameStyle(); } } else { return m_nameStyle.intValue(); } } /** * Set name style. * * @param style (null if none at this level) */ public void setNameStyle(Integer style) { m_nameStyle = style; } /** * Get the namespace for schema definitions. This value must be set by subclasses using the * {@link #setNamespace(String)} method. * * @return schema namespace */ public final String getNamespace() { return m_actualNamespace; } /** * Set the namespace to be used for schema definitions. This method is only intended for use by subclasses. * * @param ns */ protected void setNamespace(String ns) { m_actualNamespace = ns; } /** * Check if primitive value should be treated as required. * * @param type primitive type * @return true if required value, false if not */ public boolean isPrimitiveRequired(String type) { if (m_require == null) { if (getParent() == null) { return true; } else { return getParent().isPrimitiveRequired(type); } } else { return m_require.intValue() == REQUIRE_ALL || m_require.intValue() == REQUIRE_PRIMITIVES; } } /** * Check if object value should be treated as required. * * @param type object type * @return true if required value, false if not */ public boolean isObjectRequired(String type) { if (m_require == null) { if (getParent() == null) { return false; } else { return getParent().isObjectRequired(type); } } else { return m_require.intValue() == REQUIRE_ALL || m_require.intValue() == REQUIRE_OBJECTS; } } /** * Convert class or unprefixed field name to element or attribute name using current format. * * @param base class or simple field name to be converted * @return element or attribute name */ public String convertName(String base) { return convertName(base, getNameStyle()); } /** * Name style set text method. This is intended for use during unmarshalling. TODO: add validation * * @param text * @param ictx */ private void setNameStyleText(String text, IUnmarshallingContext ictx) { if (text == null) { m_nameStyle = null; } else { m_nameStyle = new Integer(s_nameStyleEnum.getValue(text)); } } /** * Name style get text method. This is intended for use during marshalling. * * @return text */ private String getNameStyleText() { if (m_nameStyle == null) { return null; } else { return s_nameStyleEnum.getName(m_nameStyle.intValue()); } } /** * Namespace style set text method. This is intended for use during unmarshalling. TODO: add validation * * @param text * @param ictx */ private void setNamespaceStyleText(String text, IUnmarshallingContext ictx) { if (text == null) { m_namespaceStyle = null; } else { m_namespaceStyle = new Integer(s_namespaceStyleEnum.getValue(text)); } } /** * Namespace style get text method. This is intended for use during marshalling. * * @return text */ private String getNamespaceStyleText() { if (m_namespaceStyle == null) { return null; } else { return s_namespaceStyleEnum.getName(m_namespaceStyle.intValue()); } } /** * Required set text method. This is intended for use during unmarshalling. TODO: add validation * * @param text * @param ictx */ private void setRequireText(String text, IUnmarshallingContext ictx) { if (text == null) { m_require = null; } else { m_require = new Integer(s_requireEnum.getValue(text)); } } /** * Required get text method. This is intended for use during marshalling. * * @return text */ private String getRequireText() { if (m_require == null) { return null; } else { return s_requireEnum.getName(m_require.intValue()); } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/generator/UniqueNameSet.java0000644000175000017500000001050610756324060026506 0ustar moellermoeller/* * Copyright (c) 2007-2008, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.generator; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import org.apache.log4j.Logger; /** * Set of unique names for a context. This assures uniqueness as names are added to the set. * * @author Dennis M. Sosnoski */ public class UniqueNameSet { /** Logger for class. */ private static final Logger s_logger = Logger.getLogger(UniqueNameSet.class.getName()); /** Set of names used. */ private final Set m_nameSet; /** * Constructor. */ public UniqueNameSet() { m_nameSet = new HashSet(); } /** * Copy constructor. Creates a name set initialized to contain all the names from another name set. * * @param original */ public UniqueNameSet(UniqueNameSet original) { this(); addAll(original); } /** * Check if a name is already present in context. * * @param name * @return true if present, false if not */ public boolean contains(String name) { return m_nameSet.contains(name); } /** * Add all the names from another name set to this set. This does not check for conflicts between the names in the * two sets. * * @param other */ public void addAll(UniqueNameSet other) { m_nameSet.addAll(other.m_nameSet); } /** * Add name to set. If the supplied name is already present, it is modified by appending a variable suffix. If the * supplied name ends with a digit, the suffix is generated starting with the letter 'a'; otherwise, it's generated * starting at '1'. Either way, the suffix is incremented as many times as necessary to obtain a unique name. * * @param base name to try adding * @return assigned name */ public String add(String base) { String name = base; int index = 1; boolean usealpha = base.length() > 0 && Character.isDigit(base.charAt(base.length()-1)); while (m_nameSet.contains(name)) { if (usealpha) { String suffix = ""; int value = index++ - 1; do { int modulo = value % 52; if (modulo > 26) { suffix = (char)('A' + modulo - 26) + suffix; } else { suffix = (char)('a' + modulo) + suffix; } value /= 52; } while (value > 0); name = base + suffix; } else { name = base + index++; } } m_nameSet.add(name); return name; } /** * Get iterator for names in set. * * @return iterator */ public Iterator iterator() { return m_nameSet.iterator(); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/generator/binding.xml0000644000175000017500000001636210752422164025262 0ustar moellermoeller libjibx-java-1.1.6a/build/src/org/jibx/binding/model/0000755000175000017500000000000011023035622022217 5ustar moellermoellerlibjibx-java-1.1.6a/build/src/org/jibx/binding/model/AttributeBase.java0000644000175000017500000000534510210703670025631 0ustar moellermoeller/* Copyright (c) 2004-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; /** * Base class for all attribute group structures in binding definition model. * This just provides the basic validation hooks. * * @author Dennis M. Sosnoski * @version 1.0 */ public abstract class AttributeBase { /** * Prevalidate attribute information. The prevalidation step is used to * check attribute values in isolation, such as the settings for enumerated * values and class file information. This empty base class implementation * should be overridden by each subclass that requires prevalidation * handling. * * @param vctx validation context */ public void prevalidate(ValidationContext vctx) {} /** * Validate attribute information. The validation step is used for checking * the interactions between attributes, such as references to named elements * and namespace usage. The {@link #prevalidate} method will always be * called for every component in the binding definition before this method * is called for any component. This empty base class implementation should * be overridden by each subclass that requires validation handling. * * @param vctx validation context */ public void validate(ValidationContext vctx) {} }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/BindingDirectory.java0000644000175000017500000003407010767273606026351 0ustar moellermoeller/* * Copyright (c) 2008, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.HashSet; import java.util.Set; import org.jibx.runtime.IBindingFactory; import org.jibx.runtime.IMarshallable; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.util.InsertionOrderedMap; /** * Organizer for a set of bindings under construction. This tracks the individual bindings by default namespace, and * manages the relationships between the different bindings. * * @author Dennis M. Sosnoski */ public class BindingDirectory { // // Flags to initialize constructed bindings private final boolean m_forceClasses; private final boolean m_trackSource; private final boolean m_addConstructors; private final boolean m_inBinding; private final boolean m_outBinding; /** Map from namespace URI to binding holder. */ private final InsertionOrderedMap m_uriBindingMap; /** * Constructor taking flags used with constructed bindings. * * @param force force classes flag * @param track track source flag * @param addcon add constructors flag * @param in input binding flag * @param out output binding flag */ public BindingDirectory(boolean force, boolean track, boolean addcon, boolean in, boolean out) { m_forceClasses = force; m_trackSource = track; m_addConstructors = addcon; m_inBinding = in; m_outBinding = out; m_uriBindingMap = new InsertionOrderedMap(); } /** * Find the binding to be used for a particular namespace. If this is the first time a particular namespace was * requested, a new binding will be created for that namespace and returned. * * @param uri namespace URI (null if no namespace) * @return binding holder */ public BindingHolder findBinding(String uri) { BindingHolder hold = (BindingHolder)m_uriBindingMap.get(uri); if (hold == null) { hold = new BindingHolder(uri, m_uriBindingMap.size() + 1, this); m_uriBindingMap.put(uri, hold); BindingElement binding = hold.getBinding(); binding.setForceClasses(m_forceClasses); binding.setTrackSource(m_trackSource); binding.setAddConstructors(m_addConstructors); binding.setInBinding(m_inBinding); binding.setOutBinding(m_outBinding); } return hold; } /** * General object comparison method. Don't know why Sun hasn't seen fit to include this somewhere, but at least it's * easy to write (over and over again). * * @param a first object to be compared * @param b second object to be compared * @return true if both objects are null, or if a.equals(b); * false otherwise */ public static boolean isEqual(Object a, Object b) { return (a == null) ? b == null : a.equals(b); } /** * Add dependency on another binding. * * @param uri namespace for binding of referenced component * @param hold binding holder */ public void addDependency(String uri, BindingHolder hold) { if (!isEqual(uri, hold.getNamespace())) { BindingHolder tohold = findBinding(uri); hold.addReference(tohold); } } /** * Fix all references between bindings. This needs to be called after the generation of binding components is * completed, in order to make sure that required namespace definitions are included in the output bindings. */ public void finish() { ArrayList uris = getNamespaces(); for (int i = 0; i < uris.size(); i++) { String uri = (String)uris.get(i); BindingHolder holder = (BindingHolder)m_uriBindingMap.get(uri); holder.finish(); } } /** * Get the existing binding definition for a namespace. * * @param uri * @return binding holder, or null if none */ public BindingHolder getBinding(String uri) { return (BindingHolder)m_uriBindingMap.get(uri); } /** * Get the list of binding namespace URIs. * * @return namespaces */ public ArrayList getNamespaces() { return m_uriBindingMap.keyList(); } /** * Add namespace declarations to binding. This is used to define any namespaces which are not directly used by the * binding(s) but need to be present in the binding definition. * * @param adduris * @param binding */ private void addNamespaceDeclarations(String[] adduris, BindingElement binding) { int offset = -1; int nsnum = m_uriBindingMap.size(); for (int i = 0; i < adduris.length; i++) { String adduri = adduris[i]; if (!m_uriBindingMap.containsKey(adduri)) { ArrayList childs = binding.topChildren(); if (offset < 0) { while (++offset < childs.size() && (childs.get(offset) instanceof NamespaceElement)); } NamespaceElement ns = new NamespaceElement(); ns.setDefaultName("none"); ns.setUri(adduri); ns.setPrefix("ns" + ++nsnum); childs.add(offset++, ns); } } } /** * Check if a character is an ASCII alpha character. * * @param chr * @return alpha character flag */ private static boolean isAsciiAlpha(char chr) { return (chr >= 'a' && chr <= 'z') || (chr >= 'A' && chr <= 'Z'); } /** * Check if a character is an ASCII numeric character. * * @param chr * @return numeric character flag */ private static boolean isAsciiNum(char chr) { return chr >= '0' && chr <= '9'; } /** * Check if a character is an ASCII alpha or numeric character. * * @param chr * @return alpha or numeric character flag */ private static boolean isAsciiAlphaNum(char chr) { return isAsciiAlpha(chr) || isAsciiNum(chr); } /** * Configure the names to be used for writing bindings to files. If only one binding has been defined, it just gets * the supplied name. If multiple bindings have been defined, a single root binding is constructed which includes * all the other bindings, and that root binding is given the supplied name while the other bindings are given * unique names within the same directory. * * @param name file name for root or singleton binding definition * @param adduris list of namespaces to be added to bindings, if not already defined * @param pack target package for binding * @return root or singleton binding holder */ public BindingHolder configureFiles(String name, String[] adduris, String pack) { BindingHolder rhold; BindingElement root; ArrayList uris = getNamespaces(); if (uris.size() == 1) { // single binding, just write it using supplied name and added namespaces rhold = (BindingHolder)m_uriBindingMap.get(uris.get(0)); root = rhold.getBinding(); } else { // get or create no namespace binding rhold = findBinding(null); root = rhold.getBinding(); // set file names and add to root binding Set nameset = new HashSet(); for (int i = 0; i < uris.size(); i++) { String uri = (String)uris.get(i); BindingHolder holder = (BindingHolder)m_uriBindingMap.get(uri); if (holder != rhold) { // get last part of namespace URI as file name candidate String bindname; String raw = holder.getNamespace(); if (raw == null) { bindname = "nonamespaceBinding"; } else { // strip off protocol and any trailing slash raw = raw.replace('\\', '/'); int split = raw.indexOf("://"); if (split >= 0) { raw = raw.substring(split + 3); } while (raw.endsWith("/")) { raw = raw.substring(0, raw.length()-1); } // strip off host portion if present and followed by path split = raw.indexOf('/'); if (split > 0 && raw.substring(0, split).indexOf('.') > 0) { raw = raw.substring(split+1); } // eliminate any invalid characters in name StringBuffer buff = new StringBuffer(); int index = 0; char chr = raw.charAt(0); if (isAsciiAlpha(chr)) { buff.append(chr); index = 1; } else { buff.append('_'); } boolean toupper = false; while (index < raw.length()) { chr = raw.charAt(index++); if (isAsciiAlphaNum(chr)) { if (toupper) { chr = Character.toUpperCase(chr); toupper = false; } buff.append(chr); } else if (chr == '.') { toupper = true; } } buff.append("Binding"); bindname = buff.toString(); } // ensure uniqueness of the name String uname = bindname.toLowerCase(); int pass = 0; while (nameset.contains(uname)) { bindname = bindname + pass; uname = bindname.toLowerCase(); } nameset.add(uname); holder.setFileName(bindname + ".xml"); // include within the root binding IncludeElement include = new IncludeElement(); include.setIncludePath(holder.getFileName()); rhold.addInclude(include); } } } // add any necessary namespace declarations to binding root addNamespaceDeclarations(adduris, root); // set the file name on the singleton or root binding rhold.setFileName(name); // set the binding name based on the file name int split = name.lastIndexOf('.'); if (split > 0) { root.setName(name.substring(0, split)); } else { root.setName(name); } // set the target package for code generation root.setTargetPackage(pack); return rhold; } /** * Write the bindings to supplied destination path. This first finalizes the binding defintions with a call to * {@link #finish()}, then writes the completed bindings. The binding file names must be set before calling this * method, generally by a call to {@link #configureFiles(String, String[], String)}. * * @param dir target directory for writing binding definitions * @throws JiBXException * @throws IOException */ public void writeBindings(File dir) throws JiBXException, IOException { finish(); IBindingFactory fact = org.jibx.runtime.BindingDirectory.getFactory(BindingElement.class); IMarshallingContext ictx = fact.createMarshallingContext(); ictx.setIndent(2); ArrayList uris = getNamespaces(); for (int i = 0; i < uris.size(); i++) { String uri = (String)uris.get(i); BindingHolder holder = (BindingHolder)m_uriBindingMap.get(uri); File file = new File(dir, holder.getFileName()); ictx.setOutput(new FileOutputStream(file), null); ((IMarshallable)holder.getBinding()).marshal(ictx); ictx.getXmlWriter().flush(); } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/BindingElement.java0000644000175000017500000007447211002542656025773 0ustar moellermoeller/* Copyright (c) 2004-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.Map; import java.util.Set; import org.jibx.binding.classes.ClassCache; import org.jibx.binding.util.StringArray; import org.jibx.runtime.BindingDirectory; import org.jibx.runtime.EnumSet; import org.jibx.runtime.IBindingFactory; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.IXMLWriter; import org.jibx.runtime.JiBXException; import org.jibx.runtime.Utility; import org.jibx.runtime.impl.UnmarshallingContext; /** * Model component for binding element. * * @author Dennis M. Sosnoski */ public class BindingElement extends NestingElementBase { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "add-constructors", "direction", "force-classes", "forwards", "name", "package", "track-source" }, NestingElementBase.s_allowedAttributes); // // Value set information public static final int IN_BINDING = 0; public static final int OUT_BINDING = 1; public static final int BOTH_BINDING = 2; /*package*/ static final EnumSet s_directionEnum = new EnumSet(IN_BINDING, new String[] { "input", "output", "both" }); // // Instance data /** Binding name. */ private String m_name; /** Binding direction. */ private String m_direction; /** Input binding flag. */ private boolean m_isInput; /** Output binding flag. */ private boolean m_isOutput; /** Support forward references to IDs flag. */ private boolean m_isForward; /** Generate souce tracking interface flag. */ private boolean m_isTrackSource; /** Generate souce tracking interface flag. */ private boolean m_isForceClasses; /** Add default constructors where needed flag. */ private boolean m_isAddConstructors; /** Package for generated context factory. */ private String m_targetPackage; /** Base URL for use with relative include paths. */ private URL m_baseUrl; /** Set of paths for includes. */ private final Set m_includePaths; /** Map from include path to actual binding. */ private final Map m_includeBindings; /** List of child elements. */ private final ArrayList m_children; /** Set of class names which can be referenced by ID. */ private Set m_idClassSet; /** List of namespace declarations to be added on output (lazy create, null if none). */ private ArrayList m_namespaceDeclares; /** * Default constructor. */ public BindingElement() { super(BINDING_ELEMENT); m_includePaths = new HashSet(); m_includeBindings = new HashMap(); m_children = new ArrayList(); m_isForward = true; } /** * Set binding name. * * @param name binding definition name */ public void setName(String name) { m_name = name; } /** * Get binding name. * * @return binding definition name */ public String getName() { return m_name; } /** * Set forward references to IDs be supported in XML. * * @param forward true if forward references supported, * false if not */ public void setForward(boolean forward) { m_isForward = forward; } /** * Check if forward references to IDs must be supported in XML. * * @return true if forward references required, * false if not */ public boolean isForward() { return m_isForward; } /** * Set source position tracking for unmarshalling. * * @param track true if source position tracking enabled, * false if not */ public void setTrackSource(boolean track) { m_isTrackSource = track; } /** * Check if source position tracking enabled for unmarshalling. * * @return true if source position tracking enabled, * false if not */ public boolean isTrackSource() { return m_isTrackSource; } /** * Set force marshaller/unmarshaller class creation for top-level non-base * abstract mappings. * * @param force true if class generation forced, * false if not */ public void setForceClasses(boolean force) { m_isForceClasses = force; } /** * Check if marshaller/unmarshaller class creation for top-level non-base * abstract mappings is forced. * * @return true if class generation forced, * false if not */ public boolean isForceClasses() { return m_isForceClasses; } /** * Set default constructor generation. * * @param add true if constructors should be added, * false if not */ public void setAddConstructors(boolean add) { m_isAddConstructors = add; } /** * Check if default constructor generation is enabled. * * @return true if default constructor generation enabled, * false if not */ public boolean isAddConstructors() { return m_isAddConstructors; } /** * Set package for generated context factory class. * * @param pack generated context factory package */ public void setTargetPackage(String pack) { m_targetPackage = pack; } /** * Get package for generated context factory class. * * @return package for generated context factory */ public String getTargetPackage() { return m_targetPackage; } /** * Set base URL for relative include paths. * * @param base */ public void setBaseUrl(URL base) { m_baseUrl = base; } /** * Get base URL for relative include paths. * * @return base URL */ public URL getBaseUrl() { return m_baseUrl; } /** * Set the correct direction text. This should be used whenever the * individual in and out flags are set, so that modifications are output * correctly when a binding is marshalled. */ private void setDirection() { int direct = m_isInput ? (m_isOutput ? BOTH_BINDING : IN_BINDING) : OUT_BINDING; m_direction = s_directionEnum.getName(direct); } /** * Set binding component applies for marshalling XML. * * @param out true if binding supports output, * false if not */ public void setOutBinding(boolean out) { m_isOutput = out; setDirection(); } /** * Check if this binding component applies for marshalling XML. * * @return true if binding supports output, false * if not */ public boolean isOutBinding() { return m_isOutput; } /** * Set binding component applies for unmarshalling XML. * * @param in true if binding supports input, * false if not */ public void setInBinding(boolean in) { m_isInput = in; setDirection(); } /** * Check if this binding component applies for unmarshalling XML. * * @return true if binding supports input, false * if not */ public boolean isInBinding() { return m_isInput; } /** * Add include path to set processed. * * @param path * @return true if new path, false if duplicate */ public boolean addIncludePath(String path) { return m_includePaths.add(path); } /** * Get included binding. If the binding was supplied directly it's just * returned; otherwise, it's read from the URL. This method should only be * called if {@link #addIncludePath(String)} returns true, * so that each unique included binding is only processed once. * * @param url binding path * @param root binding containing the include * @param vctx validation context * @return binding * @throws IOException * @throws JiBXException */ public BindingElement getIncludeBinding(URL url, BindingElement root, ValidationContext vctx) throws IOException, JiBXException { String path = url.toExternalForm(); BindingElement bind = (BindingElement)m_includeBindings.get(path); if (bind == null) { // get base name from path path = path.replace('\\', '/'); int split = path.lastIndexOf('/'); String fname = path; if (split >= 0) { fname = fname.substring(split+1); } // read stream to create object model InputStream is = url.openStream(); bind = BindingElement.readBinding(is, fname, root, vctx); } // set binding base, and context from root context bind.setBaseUrl(url); bind.setDefinitions(root.getDefinitions().getIncludeCopy()); m_includeBindings.put(path, bind); return bind; } /** * Get existing included binding. * * @param url binding path * @return binding if it exists, otherwise null */ public BindingElement getExistingIncludeBinding(URL url) { return (BindingElement)m_includeBindings.get(url.toExternalForm()); } /** * Add binding accessible to includes. This allows bindings to be supplied * directly, without needing to be parsed from an input document. * * @param path URL string identifying the binding (virtual path) * @param bind */ public void addIncludeBinding(String path, BindingElement bind) { if (addIncludePath(path)) { m_includeBindings.put(path, bind); } } /** * Add a class defined with a ID value. This is used to track the classes * with ID values for validating ID references in the binding. If the * binding uses global IDs, the actual ID class is added to the table along * with all interfaces implemented by the class and all superclasses, since * instances of the ID class can be referenced in any of those forms. If the * binding does not use global IDs, only the actual ID class is added, since * references must be type-specific. * * @param clas information for class with ID value */ public void addIdClass(IClass clas) { // create the set if not already present if (m_idClassSet == null) { m_idClassSet = new HashSet(); } // add the class if not already present if (m_idClassSet.add(clas.getName())) { // new class, add all interfaces if not previously defined String[] inames = clas.getInterfaces(); for (int i = 0; i < inames.length; i++) { m_idClassSet.add(inames[i]); } while (clas != null && m_idClassSet.add(clas.getName())) { clas = clas.getSuperClass(); } } } /** * Check if a class can be referenced by ID. This just checks if any classes * compatible with the reference type are bound with ID values. * * @param name fully qualified name of class * @return true if class is bound with an ID, * false if not */ public boolean isIdClass(String name) { if (m_idClassSet == null) { return false; } else { return m_idClassSet.contains(name); } } /** * Add top-level child element. * TODO: should be ElementBase argument, but JiBX doesn't allow yet * * @param child element to be added as child of this element */ public void addTopChild(Object child) { m_children.add(child); } /** * Get list of top-level child elements. * * @return list of child elements, or null if none */ public ArrayList topChildren() { return m_children; } /** * Get iterator for top-level child elements. * * @return iterator for child elements */ public Iterator topChildIterator() { return m_children.iterator(); } /** * Add namespace declaration for output when marshalling. * * @param prefix * @param uri */ public void addNamespaceDecl(String prefix, String uri) { if (m_namespaceDeclares == null) { m_namespaceDeclares = new ArrayList(); } m_namespaceDeclares.add(prefix); m_namespaceDeclares.add(uri); } // // Overrides of base class methods. /* (non-Javadoc) * @see org.jibx.binding.model.ElementBase#hasAttribute() */ public boolean hasAttribute() { throw new IllegalStateException ("Internal error: method should never be called"); } /* (non-Javadoc) * @see org.jibx.binding.model.ElementBase#hasContent() */ public boolean hasContent() { throw new IllegalStateException ("Internal error: method should never be called"); } /* (non-Javadoc) * @see org.jibx.binding.model.ElementBase#isOptional() */ public boolean isOptional() { throw new IllegalStateException ("Internal error: method should never be called"); } /** * Get default style value for child components. This call is only * meaningful after validation. * * @return default style value for child components */ public int getDefaultStyle() { int style = super.getDefaultStyle(); if (style < 0) { style = NestingAttributes.s_styleEnum.getValue("element"); } return style; } // // Marshalling/unmarshalling methods /** * Marshalling hook method to add namespace declarations to <binding> * element. * * @param ictx * @throws IOException */ private void preGet(IMarshallingContext ictx) throws IOException { if (m_namespaceDeclares != null) { // set up information for namespace indexes and prefixes IXMLWriter writer = ictx.getXmlWriter(); String[] uris = new String[m_namespaceDeclares.size()/2]; int[] indexes = new int[uris.length]; String[] prefs = new String[uris.length]; int base = writer.getNamespaceCount(); for (int i = 0; i < uris.length; i++) { indexes[i] = base + i; prefs[i] = (String)m_namespaceDeclares.get(i*2); uris[i] = (String)m_namespaceDeclares.get(i*2+1); } // add the namespace declarations to current element writer.pushExtensionNamespaces(uris); writer.openNamespaces(indexes, prefs); for (int i = 0; i < uris.length; i++) { String prefix = prefs[i]; String name = prefix.length() > 0 ? "xmlns:" + prefix : "xmlns"; writer.addAttribute(0, name, uris[i]); } } } // // Validation methods /** * Make sure all attributes are defined. * * @param ictx unmarshalling context * @exception JiBXException on unmarshalling error */ private void preSet(IUnmarshallingContext ictx) throws JiBXException { // validate the attributes defined for this element validateAttributes(ictx, s_allowedAttributes); // get the unmarshal wrapper UnmarshalWrapper wrapper = (UnmarshalWrapper)ictx.getStackObject(ictx.getStackDepth()-1); if (wrapper.getContainingBinding() != null) { // check attributes not allowed on included binding BindingElement root = wrapper.getContainingBinding(); ValidationContext vctx = wrapper.getValidation(); UnmarshallingContext uctx = (UnmarshallingContext)ictx; for (int i = 0; i < uctx.getAttributeCount(); i++) { // check if nonamespace attribute is in the allowed set String name = uctx.getAttributeName(i); if (uctx.getAttributeNamespace(i).length() == 0) { if (s_allowedAttributes.indexOf(name) >= 0) { String value = uctx.getAttributeValue(i); if ("direction".equals(name)) { if (!root.m_direction.equals(value)) { vctx.addError("'direction' value on included binding must match the root binding", this); } } else if ("track-source".equals(name)) { boolean flag = Utility.parseBoolean(value); if (root.m_isTrackSource != flag) { vctx.addError("'track-source' value on included binding must match the root binding", this); } } else if ("value-style".equals(name)) { if (!root.getStyleName().equals(value)) { vctx.addError("'value-style' value on included binding must match the root binding", this); } } else if ("force-classes".equals(name)) { boolean flag = Utility.parseBoolean(value); if (root.m_isForceClasses != flag) { vctx.addError("'force-classes' value on included binding must match the root binding", this); } } else if ("add-constructors".equals(name)) { boolean flag = Utility.parseBoolean(value); if (root.m_isAddConstructors != flag) { vctx.addError("'add-constructors' value on included binding must match the root binding", this); } } else if ("forwards".equals(name)) { boolean flag = Utility.parseBoolean(value); if (root.m_isForward != flag) { vctx.addError("'forwards' value on included binding must match the root binding", this); } } else { vctx.addError("Attribute '" + name + "' not allowed on included binding", this); } } } } } } /** * Prevalidate all attributes of element in isolation. * * @param vctx validation context */ public void prevalidate(ValidationContext vctx) { // set the direction flags int index = -1; if (m_direction != null) { index = s_directionEnum.getValue(m_direction); if (index < 0) { vctx.addError("Value \"" + m_direction + "\" is not a valid choice for direction"); } } else { index = BOTH_BINDING; } m_isInput = index == IN_BINDING || index == BOTH_BINDING; m_isOutput = index == OUT_BINDING || index == BOTH_BINDING; // check for illegal characters in name if (m_name != null) { int length = m_name.length(); for (int i = 0; i < length; i++) { if (!Character.isJavaIdentifierPart(m_name.charAt(i))) { vctx.addError("Binding name '" + m_name + " contains invalid characters (only Java identifier part characters allowed)", this); break; } } } super.prevalidate(vctx); } private static FormatElement buildFormat(String name, String type, boolean use, String sname, String dname, String dflt) { FormatElement format = new FormatElement(); format.setLabel(name); format.setTypeName(type); format.setDefaultFormat(use); format.setSerializerName(sname); format.setDeserializerName(dname); format.setDefaultText(dflt); return format; } private void defineBaseFormat(FormatElement format, DefinitionContext dctx, ValidationContext vctx) { format.prevalidate(vctx); format.validate(vctx); dctx.addFormat(format, vctx); } /** * Run the actual validation of a binding model. * * @param vctx context for controlling validation */ public void runValidation(ValidationContext vctx) { // initially enable both directions for format setup m_isInput = true; m_isOutput = true; // create outer definition context DefinitionContext dctx = new DefinitionContext(null); vctx.setGlobalDefinitions(dctx); for (int i = 0; i < FormatDefaults.s_defaultFormats.length; i++) { defineBaseFormat(FormatDefaults.s_defaultFormats[i], dctx, vctx); } FormatElement format = buildFormat("char.string", "char", false, "org.jibx.runtime.Utility.serializeCharString", "org.jibx.runtime.Utility.deserializeCharString", "0"); format.setDefaultFormat(false); format.prevalidate(vctx); format.validate(vctx); dctx.addFormat(format, vctx); NamespaceElement ns = new NamespaceElement(); ns.setDefaultName("all"); ns.prevalidate(vctx); dctx.addNamespace(ns); // TODO: check for errors in basic configuration // create a definition context for the binding setDefinitions(new DefinitionContext(dctx)); // run the actual validation vctx.prevalidate(this); RegistrationVisitor rvisitor = new RegistrationVisitor(vctx); rvisitor.visitTree(this); vctx.validate(this); } /** * Read a binding definition (possibly as an include) to construct binding * model. * * @param is input stream for reading binding * @param fname name of input file (null if unknown) * @param contain containing binding (null if none) * @param vctx validation context used during unmarshalling * @return root of binding definition model * @throws JiBXException on error in reading binding */ public static BindingElement readBinding(InputStream is, String fname, BindingElement contain, ValidationContext vctx) throws JiBXException { // look up the binding factory IBindingFactory bfact = BindingDirectory.getFactory(BindingElement.class); // unmarshal document to construct objects IUnmarshallingContext uctx = bfact.createUnmarshallingContext(); uctx.setDocument(is, fname, null); uctx.pushObject(new UnmarshalWrapper(vctx, contain)); BindingElement binding = (BindingElement)uctx.unmarshalElement(); uctx.popObject(); return binding; } /** * Read a binding definition to construct binding model. * * @param is input stream for reading binding * @param fname name of input file (null if unknown) * @param vctx validation context used during unmarshalling * @return root of binding definition model * @throws JiBXException on error in reading binding */ public static BindingElement readBinding(InputStream is, String fname, ValidationContext vctx) throws JiBXException { return readBinding(is, fname, null, vctx); } /** * Validate a binding definition. * * @param name binding definition name * @param path binding definition URL * @param is input stream for reading binding * @param vctx validation context to record problems * @return root of binding definition model, or null if error * in unmarshalling * @throws JiBXException on error in binding XML structure */ public static BindingElement validateBinding(String name, URL path, InputStream is, ValidationContext vctx) throws JiBXException { // construct object model for binding BindingElement binding = readBinding(is, name, vctx); binding.setBaseUrl(path); vctx.setBindingRoot(binding); // validate the binding definition binding.runValidation(vctx); // list validation errors ArrayList probs = vctx.getProblems(); if (probs.size() > 0) { for (int i = 0; i < probs.size(); i++) { ValidationProblem prob = (ValidationProblem)probs.get(i); System.out.print(prob.getSeverity() >= ValidationProblem.ERROR_LEVEL ? "Error: " : "Warning: "); System.out.println(prob.getDescription()); } } return binding; } /** * Create a default validation context. * * @return new validation context */ public static ValidationContext newValidationContext() { IClassLocator locate = new IClassLocator() { public IClass getClassInfo(String name) { try { return new ClassWrapper(this, ClassCache.getClassFile(name)); } catch (JiBXException e) { return null; } } }; return new ValidationContext(locate); } /* // test runner // This code only used in testing, to roundtrip binding definitions public static void test(String ipath, String opath, ValidationContext vctx) throws Exception { // validate the binding definition FileInputStream is = new FileInputStream(ipath); URL url = new URL("file://" + ipath); BindingElement binding = validateBinding(ipath, url, is, vctx); // marshal back out for comparison purposes IBindingFactory bfact = BindingDirectory.getFactory(BindingElement.class); IMarshallingContext mctx = bfact.createMarshallingContext(); mctx.setIndent(2); mctx.marshalDocument(binding, null, null, new FileOutputStream(opath)); System.out.println("Wrote output binding " + opath); // compare input document with output document DocumentComparator comp = new DocumentComparator(System.err); boolean match = comp.compare(new FileReader(ipath), new FileReader(opath)); if (!match) { System.err.println("Mismatch from input " + ipath + " to output " + opath); } } // test runner public static void main(String[] args) throws Exception { // configure class loading String[] paths = new String[] { "." }; ClassCache.setPaths(paths); ClassFile.setPaths(paths); ValidationContext vctx = newValidationContext(); // process all bindings listed on command line for (int i = 0; i < args.length; i++) { try { String ipath = args[i]; int split = ipath.lastIndexOf(File.separatorChar); String opath = "x" + ipath.substring(split+1); test(ipath, opath, vctx); } catch (Exception e) { System.err.println("Error handling binding " + args[i]); e.printStackTrace(); } } } */ /** * Inner class as wrapper for binding element on unmarshalling. This * provides a handle for passing the validation context, allowing elements * to check for problems during unmarshalling. */ public static class UnmarshalWrapper { private final ValidationContext m_validationContext; private final BindingElement m_containingBinding; protected UnmarshalWrapper(ValidationContext vctx, BindingElement contain) { m_validationContext = vctx; m_containingBinding = contain; } public ValidationContext getValidation() { return m_validationContext; } public BindingElement getContainingBinding() { return m_containingBinding; } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/BindingHolder.java0000644000175000017500000001420010767273436025614 0ustar moellermoeller/* * Copyright (c) 2007-2008, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import java.util.ArrayList; import java.util.Iterator; import org.jibx.schema.support.LazyList; import org.jibx.util.HolderBase; /** * External data for a binding definition. This tracks references to other bindings, along with the associated namespace * information. * * TODO: replace the lists for individual child element types with filtered lists on the binding element * * @author Dennis M. Sosnoski */ public class BindingHolder extends HolderBase { /** Directory managing this holder. */ private final BindingDirectory m_directory; /** Actual binding definition. */ private BindingElement m_binding; /** Binding finalized flag. */ private boolean m_finished; /** List of format definitions in binding. */ private final LazyList m_formats; /** List of includes for binding. */ private final LazyList m_includes; /** List of mapping definitions in binding. */ private final LazyList m_mappings; /** * Constructor. * * @param uri (null if no-namespace binding) * @param index binding index number * @param dir directory managing this holder */ public BindingHolder(String uri, int index, BindingDirectory dir) { super(uri); m_directory = dir; m_binding = new BindingElement(); m_formats = new LazyList(); m_includes = new LazyList(); m_mappings = new LazyList(); if (uri != null) { NamespaceElement ns = new NamespaceElement(); ns.setDefaultName("elements"); ns.setUri(uri); ns.setPrefix("ns" + index); m_binding.addTopChild(ns); m_binding.addNamespaceDecl("tns", uri); } } /** * Get the binding directory managing this holder. * * @return directory */ public BindingDirectory getDirectory() { return m_directory; } /** * Get the binding element. * * @return binding */ public BindingElement getBinding() { return m_binding; } /** * Set the binding element. This method is provided so that the generated binding element can be replaced by one * which has been read in from a file after being written. * * @param bind */ public void setBinding(BindingElement bind) { m_binding = bind; } /** * Internal check method to verify that the binding is still modifiable. */ private void checkModifiable() { if (m_finished) { throw new IllegalStateException("Internal error - attempt to modify binding after finalized"); } } /** * Implementation method to handle adding a namespace declaration. This sets up the namespace declaration for output * in the generated XML. * * @param prefix * @param uri */ protected void addNamespaceDecl(String prefix, String uri) { checkModifiable(); m_binding.addNamespaceDecl(prefix, uri); } /** * Add a format definition to the binding. * * @param format */ public void addFormat(FormatElement format) { checkModifiable(); m_formats.add(format); } /** * Add an include to the binding. * * @param include */ public void addInclude(IncludeElement include) { checkModifiable(); m_includes.add(include); } /** * Add a mapping definition to the binding. * * @param mapping */ public void addMapping(MappingElement mapping) { checkModifiable(); m_mappings.add(mapping); } /** * Add dependency on another binding. * * @param uri namespace for binding of referenced component */ public void addDependency(String uri) { checkModifiable(); m_directory.addDependency(uri, this); } /** * Complete the construction of the binding. This includes processing references to other bindings, as well as the * actual mappings and formats which are included in the binding. This method must be called after all references * and binding components have been added. */ public void finish() { if (!m_finished) { for (Iterator iter = getReferences().iterator(); iter.hasNext();) { getPrefix(((BindingHolder)iter.next()).getNamespace()); } ArrayList topchilds = m_binding.topChildren(); topchilds.addAll(m_formats); topchilds.addAll(m_includes); topchilds.addAll(m_mappings); m_finished = true; } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/ClassHierarchyContext.java0000644000175000017500000002017310767275612027361 0ustar moellermoeller/* Copyright (c) 2005-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import java.util.HashMap; import java.util.HashSet; import java.util.Set; /** * Context for components using a hierarchy of definitions based on class type. * This is used to track conversion definitions in the form of format and * template elements. The access methods take the different levels of * nesting into account, automatically delegating to the containing context (if * defined) when a lookup fails. * * @author Dennis M. Sosnoski */ public class ClassHierarchyContext { /** Link to containing context. */ private final ClassHierarchyContext m_outerContext; /** Map from type name to binding component. */ private HashMap m_typeToComponentMap; /** Set of compatible type names. */ private HashSet m_compatibleTypeSet; /** Map from format names to String conversions (lazy create). */ private HashMap m_nameToComponentMap; /** * Constructor. * * @param outer containing context (null if at root of tree) */ protected ClassHierarchyContext(ClassHierarchyContext outer) { m_outerContext = outer; m_typeToComponentMap = new HashMap(); m_compatibleTypeSet = new HashSet(); m_nameToComponentMap = new HashMap(); } /** * Get containing context. * * @return containing context information (null if at root of * tree) */ public ClassHierarchyContext getContaining() { return m_outerContext; } /** * Accumulate all the interfaces implemented (both directly and indirectly) * by a class. * * @param clas * @param intfset set of interfaces */ private void accumulateInterfaces(IClass clas, Set intfset) { String[] interfaces = clas.getInterfaces(); for (int i = 0; i < interfaces.length; i++) { String name = interfaces[i]; if (!intfset.contains(name)) { intfset.add(name); IClassLocator locator = clas.getLocator(); accumulateInterfaces(locator.getClassInfo(name), intfset); } } } /** * Add typed component to set defined at this level. This associates the * component with the type for class hierarchy-based lookups. * * @param clas class information to be associated with component * @param comp definition component to be added * @param vctx validation context in use */ public void addTypedComponent(IClass clas, ElementBase comp, ValidationContext vctx) { String type = clas.getName(); if (m_typeToComponentMap.put(type, comp) == null) { // new type, add all interfaces and supertypes to compatible set IClass sclas = clas; do { m_compatibleTypeSet.add(sclas.getName()); accumulateInterfaces(sclas, m_compatibleTypeSet); } while ((sclas = sclas.getSuperClass()) != null); } else { vctx.addError("Duplicate conversion defined for type " + type, comp); } } /** * Add named component to set defined at this level. * TODO: Make this use qname instead of text * * @param label name to be associated with component * @param comp definition component to be added * @param vctx validation context in use */ public void addNamedComponent(String label, ElementBase comp, ValidationContext vctx) { if (m_nameToComponentMap.put(label, comp) != null) { if (label.startsWith("{}")) { label = label.substring(2); } vctx.addError("Duplicate name " + label, comp); } } /** * Get specific binding component for type. Looks for an exact match on the * type name, checking the containing definitions if a matching component is * not found at this level. * * @param name fully qualified class name to be converted * @return binding component for class, or null if not * found */ public ElementBase getSpecificComponent(String name) { ElementBase comp = null; if (m_typeToComponentMap != null) { comp = (ElementBase)m_typeToComponentMap.get(name); } if (comp == null && m_outerContext != null) { comp = m_outerContext.getSpecificComponent(name); } return comp; } /** * Get named binding component definition. Finds the component with the * supplied name, checking the containing definitions if the component is * not found at this level. * * @param name component name to be found * @return binding component with name, or null if not * found */ public ElementBase getNamedComponent(String name) { ElementBase comp = null; if (m_nameToComponentMap != null) { comp = (ElementBase)m_nameToComponentMap.get(name); } if (comp == null && m_outerContext != null) { comp = m_outerContext.getNamedComponent(name); } return comp; } /** * Get best binding component for class. Finds the component based on a * fully qualified class name. If a specific component for the actual * class is not found (either in this or a containing level) this returns * the most specific superclass component. * * @param clas information for target class * @return binding component definition for class, or null if * none found */ public ElementBase getMostSpecificComponent(IClass clas) { ElementBase comp = getSpecificComponent(clas.getName()); while (comp == null) { IClass sclas = clas.getSuperClass(); if (sclas == null) { break; } clas = sclas; comp = getSpecificComponent(clas.getName()); } return comp; } /** * Checks if a class is compatible with one or more components. If a * specific component for the actual class is not found (either in this or a * containing level) this checks for components that handle subclasses or * implementations of the class. * * @param clas information for target class * @return true if compatible type, false if not */ public boolean isCompatibleType(IClass clas) { if (m_compatibleTypeSet.contains(clas.getName())) { return true; } else if (m_outerContext != null) { return m_outerContext.isCompatibleType(clas); } else { return false; } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/ClassItemWrapper.java0000644000175000017500000001303410602534664026324 0ustar moellermoeller/* Copyright (c) 2004-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import org.jibx.binding.classes.ClassItem; /** * Wrapper for class field or method item information. This wraps the BCEL-based * class handling implementation to support the interface defined for use with * the binding model. * * @author Dennis M. Sosnoski */ public class ClassItemWrapper implements IClassItem { private final IClass m_class; private final ClassItem m_item; /** * Constructor. * * @param clas * @param item */ protected ClassItemWrapper(IClass clas, ClassItem item) { m_class = clas; m_item = item; } /** * Get containing class information. * * @return class information */ protected IClass getContainingClass() { return m_class; } /** * Get class item information. * * @return item information */ protected ClassItem getClassItem() { return m_item; } /* (non-Javadoc) * @see org.jibx.binding.model.IClassItem#getOwningClass() */ public IClass getOwningClass() { return m_class; } /* (non-Javadoc) * @see org.jibx.binding.model.IClassItem#getName() */ public String getName() { return m_item.getName(); } /* (non-Javadoc) * @see org.jibx.binding.model.IClassItem#getJavaDoc() */ public String getJavaDoc() { return null; } /* (non-Javadoc) * @see org.jibx.binding.model.IClassItem#getType() */ public String getTypeName() { return m_item.getTypeName(); } /* (non-Javadoc) * @see org.jibx.binding.model.IClassItem#getReturnJavaDoc() */ public String getReturnJavaDoc() { if (m_item.isMethod()) { return null; } else { throw new IllegalStateException("Internal error: not a method"); } } /* (non-Javadoc) * @see org.jibx.binding.model.IClassItem#getArgumentCount() */ public int getArgumentCount() { return m_item.getArgumentCount(); } /* (non-Javadoc) * @see org.jibx.binding.model.IClassItem#getArgumentType(int) */ public String getArgumentType(int index) { return m_item.getArgumentTypes()[index]; } /* (non-Javadoc) * @see org.jibx.binding.model.IClassItem#getParameterJavaDoc(int) */ public String getParameterJavaDoc(int index) { if (m_item.isMethod()) { return null; } else { throw new IllegalStateException("Internal error: not a method"); } } /* (non-Javadoc) * @see org.jibx.binding.model.IClassItem#getParameterName(int) */ public String getParameterName(int index) { return m_item.getParameterName(index); } /* (non-Javadoc) * @see org.jibx.binding.model.IClassItem#getAccessFlags() */ public int getAccessFlags() { return m_item.getAccessFlags(); } /* (non-Javadoc) * @see org.jibx.binding.model.IClassItem#getSignature() */ public String getSignature() { return m_item.getSignature(); } /* (non-Javadoc) * @see org.jibx.binding.model.IClassItem#isMethod() */ public boolean isMethod() { return m_item.isMethod(); } /* (non-Javadoc) * @see org.jibx.binding.model.IClassItem#isInitializer() */ public boolean isInitializer() { return m_item.isInitializer(); } /* (non-Javadoc) * @see org.jibx.binding.model.IClassItem#getExceptions() */ public String[] getExceptions() { return m_item.getExceptions(); } /* (non-Javadoc) * @see org.jibx.binding.model.IClassItem#getExceptionJavaDoc(int) */ public String getExceptionJavaDoc(int index) { if (m_item.isMethod()) { return null; } else { throw new IllegalStateException("Internal error: not a method"); } } /* (non-Javadoc) * @see org.jibx.binding.model.IClassItem#getGenericsSignature() */ public String getGenericsSignature() { return m_item.getGenericsSignature(); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/ClassUtils.java0000644000175000017500000002453410767275736025212 0ustar moellermoeller/* Copyright (c) 2004-2008, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import java.util.HashMap; /** * Utilities for working with class, field, or method information. * * @author Dennis M. Sosnoski */ public class ClassUtils { /** Map for primitive type signature variants. */ private static HashMap s_variantMap = new HashMap(); /** Map for signatures corresponding to class names. */ private static HashMap s_signatureMap = new HashMap(); static { // initialize primitive type variants s_variantMap.put("boolean", new String[] { "Z" }); s_variantMap.put("byte", new String[] { "B", "S", "I" }); s_variantMap.put("char", new String[] { "C", "I" }); s_variantMap.put("double", new String[] { "D" }); s_variantMap.put("float", new String[] { "F" }); s_variantMap.put("int", new String[] { "I" }); s_variantMap.put("long", new String[] { "J" }); s_variantMap.put("short", new String[] { "S", "I" }); s_variantMap.put("void", new String[] { "V" }); // initialize signatures for primitive types s_signatureMap.put("boolean", "Z"); s_signatureMap.put("byte", "B"); s_signatureMap.put("char", "C"); s_signatureMap.put("double", "D"); s_signatureMap.put("float", "F"); s_signatureMap.put("int", "I"); s_signatureMap.put("long", "J"); s_signatureMap.put("short", "S"); s_signatureMap.put("void", "V"); } /** * Check if type name is a primitive. * * @param type * @return true if a primitive, false if not */ public static boolean isPrimitive(String type) { return s_variantMap.get(type) != null; } /** * Get virtual method by fully qualified name. This splits the class * name from the method name, finds the class, and then tries to find a * matching method name in that class or a superclass. * * @param name fully qualified class and method name * @param sigs possible method signatures * @param vctx validation context (used for class lookup) * @return information for the method, or null if not found */ public static IClassItem findVirtualMethod(String name, String[] sigs, ValidationContext vctx) { // get the class containing the method int split = name.lastIndexOf('.'); String cname = name.substring(0, split); String mname = name.substring(split+1); IClass iclas = vctx.getClassInfo(cname); if (iclas != null) { // find the method in class or superclass for (int i = 0; i < sigs.length; i++) { IClassItem method = iclas.getMethod(mname, sigs[i]); if (method != null) { return method; } } } return null; } /** * Get static method by fully qualified name. This splits the class * name from the method name, finds the class, and then tries to find a * matching method name in that class. * * @param name fully qualified class and method name * @param sigs possible method signatures * @param vctx validation context (used for class lookup) * @return information for the method, or null if not found */ public static IClassItem findStaticMethod(String name, String[] sigs, ValidationContext vctx) { // get the class containing the method int split = name.lastIndexOf('.'); if (split > 0) { String cname = name.substring(0, split); String mname = name.substring(split+1); IClass iclas = vctx.getClassInfo(cname); if (iclas != null) { // find the method in class or superclass for (int i = 0; i < sigs.length; i++) { IClassItem method = iclas.getStaticMethod(mname, sigs[i]); if (method != null) { return method; } } } } return null; } /** * Get all variant signatures for a fully qualified class name. The * returned array gives all signatures (for interfaces or classes) which * instances of the class can match. * * @param name fully qualified class name * @param vctx validation context (used for class lookup) * @return possible signature variations for instances of the class */ public static String[] getSignatureVariants(String name, ValidationContext vctx) { Object obj = s_variantMap.get(name); if (obj == null) { IClass iclas = vctx.getRequiredClassInfo(name); return iclas.getInstanceSigs(); } else { return (String[])obj; } } /** * Gets the signature string corresponding to a type. The base for the type * may be a primitive or class name, and may include trailing array * brackets. * * @param type type name * @return signature string for type */ public static String getSignature(String type) { //. check if already built signature for this type String sig = (String)s_signatureMap.get(type); if (sig == null) { // check if this is an array type int dim = 0; int split = type.indexOf('['); if (split >= 0) { // count pairs of array brackets int mark = split; while ((type.length()-mark) >= 2) { if (type.charAt(mark) == '[' || type.charAt(mark+1) == ']') { dim++; mark += 2; } else { throw new IllegalArgumentException ("Invalid type name " + type); } } // make sure only bracket pairs at end if (mark < type.length()) { throw new IllegalArgumentException("Invalid type name " + type); } // see if signature for base object type needs to be added String cname = type.substring(0, split); String base = (String)s_signatureMap.get(cname); if (base == null) { // add base type signature to map base = "L" + cname.replace('.', '/') + ';'; s_signatureMap.put(cname, base); } // prepend appropriate number of StringBuffer buff = new StringBuffer(dim + base.length()); for (int i = 0; i < dim; i++) { buff.append('['); } buff.append(base); sig = buff.toString(); } else { // define signature for ordinary object type sig = "L" + type.replace('.', '/') + ';'; } // add signature definition to map s_signatureMap.put(type, sig); } // return signature for type return sig; } /** * Check if a value of one type can be directly assigned to another type. * This is basically the equivalent of the instanceof operator, but with * application to primitive types as well as object types. * * @param from fully qualified class name of initial type * @param to fully qualified class name of assignment type * @param vctx validation context (used for class lookup) * @return true if assignable, false if not */ public static boolean isAssignable(String from, String to, ValidationContext vctx) { // always assignable if the two are the same if (from.equals(to)) { return true; } else { // try direct lookup for primitive types Object fobj = s_variantMap.get(from); Object tobj = s_variantMap.get(to); if (fobj == null && tobj == null) { // find the actual class information IClass fclas = vctx.getRequiredClassInfo(from); IClass tclas = vctx.getRequiredClassInfo(to); // assignable if from type has to as a possible signature String[] sigs = fclas.getInstanceSigs(); String match = tclas.getSignature(); for (int i = 0; i < sigs.length; i++) { if (match.equals(sigs[i])) { return true; } } return false; } else if (fobj != null && tobj != null) { // assignable if from type has to as a possible signature String[] fsigs = (String[])fobj; String[] tsigs = (String[])tobj; if (tsigs.length == 1) { for (int i = 0; i < fsigs.length; i++) { if (fsigs[i] == tsigs[0]) { return true; } } } return false; } else { // primitive and object types never assignable return false; } } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/ClassWrapper.java0000644000175000017500000002471010624254264025507 0ustar moellermoeller/* Copyright (c) 2004-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import org.jibx.binding.classes.ClassFile; import org.jibx.binding.classes.ClassItem; import org.jibx.runtime.JiBXException; /** * Wrapper for class information. This wraps the BCEL-based class handling * implementation to support the interface defined for use with the binding * model. * * @author Dennis M. Sosnoski */ public class ClassWrapper implements IClass { private final IClassLocator m_locator; private final ClassFile m_class; private IClassItem[] m_fields; private IClassItem[] m_methods; /** * Constructor. * * @param loc * @param clas */ public ClassWrapper(IClassLocator loc, ClassFile clas) { m_locator = loc; m_class = clas; } /** * Build an item wrapper. This method may be overridden by subclasses to * return a specialized form of wrapper. * * @param item * @return wrapper */ protected IClassItem buildItem(ClassItem item) { return new ClassItemWrapper(this, item); } /* (non-Javadoc) * @see org.jibx.binding.model.IClass#getName() */ public String getName() { return m_class.getName(); } /* (non-Javadoc) * @see org.jibx.binding.model.IClass#getSignature() */ public String getSignature() { return m_class.getSignature(); } /* (non-Javadoc) * @see org.jibx.binding.model.IClass#getPackage() */ public String getPackage() { return m_class.getPackage(); } /* (non-Javadoc) * @see org.jibx.binding.model.IClass#getSuperClass() */ public IClass getSuperClass() { ClassFile scf = m_class.getSuperFile(); if (scf == null) { return null; } else { return new ClassWrapper(m_locator, m_class.getSuperFile()); } } /* (non-Javadoc) * @see org.jibx.binding.model.IClass#getInterfaces() */ public String[] getInterfaces() { return m_class.getInterfaces(); } /* (non-Javadoc) * @see org.jibx.binding.model.IClass#getInstanceSigs() */ public String[] getInstanceSigs() { try { return m_class.getInstanceSigs(); } catch (JiBXException e) { // TODO need to handle this differently - perhaps get all when created throw new IllegalStateException("Internal error: instance " + "signatures not found for class " + m_class.getName()); } } /* (non-Javadoc) * @see org.jibx.binding.model.IClass#isImplements(java.lang.String) */ public boolean isImplements(String sig) { try { return m_class.isImplements(sig); } catch (JiBXException e) { // TODO need to handle this differently - perhaps get all when created throw new IllegalStateException("Internal error: instance " + "signatures not found for class " + m_class.getName()); } } /* (non-Javadoc) * @see org.jibx.binding.model.IClass#isAbstract() */ public boolean isAbstract() { return m_class.isAbstract(); } /* (non-Javadoc) * @see org.jibx.binding.model.IClass#isInterface() */ public boolean isInterface() { return m_class.isInterface(); } /* (non-Javadoc) * @see org.jibx.binding.model.IClass#isModifiable() */ public boolean isModifiable() { return m_class.isModifiable(); } /* (non-Javadoc) * @see org.jibx.binding.model.IClass#isSuperclass(org.jibx.binding.model.IClass) */ public boolean isSuperclass(String name) { ClassFile current = m_class; while (current != null) { if (current.getName().equals(name)) { return true; } else { current = current.getSuperFile(); } } return false; } /* (non-Javadoc) * @see org.jibx.binding.model.IClass#getDirectField(java.lang.String) */ public IClassItem getDirectField(String name) { ClassItem item = m_class.getDirectField(name); if (item == null) { return null; } else { return buildItem(item); } } /* (non-Javadoc) * @see org.jibx.binding.model.IClass#getField(java.lang.String) */ public IClassItem getField(String name) { try { return buildItem(m_class.getField(name)); } catch (JiBXException e) { // TODO need to handle this differently - perhaps get all when created return null; } } /* (non-Javadoc) * @see org.jibx.binding.model.IClass#getMethod(java.lang.String, java.lang.String) */ public IClassItem getMethod(String name, String sig) { ClassItem item = m_class.getMethod(name, sig); if (item == null) { return null; } else { return buildItem(item); } } /* (non-Javadoc) * @see org.jibx.binding.model.IClass#getMethod(java.lang.String, java.lang.String[]) */ public IClassItem getMethod(String name, String[] sigs) { ClassItem item = m_class.getMethod(name, sigs); if (item == null) { return null; } else { return buildItem(item); } } /* (non-Javadoc) * @see org.jibx.binding.model.IClass#getInitializerMethod(java.lang.String) */ public IClassItem getInitializerMethod(String sig) { ClassItem item = m_class.getInitializerMethod(sig); if (item == null) { return null; } else { return buildItem(item); } } /* (non-Javadoc) * @see org.jibx.binding.model.IClass#getStaticMethod(java.lang.String, java.lang.String) */ public IClassItem getStaticMethod(String name, String sig) { ClassItem item = m_class.getStaticMethod(name, sig); if (item == null) { return null; } else { return buildItem(item); } } /* (non-Javadoc) * @see org.jibx.binding.model.IClass#isAccessible(org.jibx.binding.model.IClassItem) */ public boolean isAccessible(IClassItem item) { return m_class.isAccessible(((ClassItemWrapper)item).getClassItem()); } /* (non-Javadoc) * @see org.jibx.binding.model.IClass#isAssignable(org.jibx.binding.model.IClass) */ public boolean isAssignable(IClass other) { String[] sigs; try { sigs = m_class.getInstanceSigs(); } catch (JiBXException e) { throw new IllegalStateException ("Internal error: class information not available"); } String match = other.getSignature(); for (int i = 0; i < sigs.length; i++) { if (match.equals(sigs[i])) { return true; } } return false; } /* (non-Javadoc) * @see org.jibx.binding.model.IClass#getBestMethod(java.lang.String, java.lang.String, java.lang.String[]) */ public IClassItem getBestMethod(String name, String type, String[] args) { ClassItem item = m_class.getBestMethod(name, type, args); if (item == null) { return null; } else { return buildItem(item); } } /* (non-Javadoc) * @see org.jibx.binding.model.IClass#getClassFile() * TODO: eliminate this method */ public ClassFile getClassFile() { return m_class; } /* (non-Javadoc) * @see org.jibx.binding.model.IClass#loadClass() */ public Class loadClass() { String name = m_class.getName(); Class clas = ClassFile.loadClass(name); if (clas == null) { // TODO: this is a kludge try { clas = ClassUtils.class.getClassLoader().loadClass(name); } catch (ClassNotFoundException ex) { /* deliberately empty */ } } return clas; } /* (non-Javadoc) * @see org.jibx.binding.model.IClass#getFields() */ public IClassItem[] getFields() { if (m_fields == null) { ClassItem[] items = m_class.getFieldItems(); m_fields = new IClassItem[items.length]; for (int i = 0; i < items.length; i++) { m_fields[i] = buildItem(items[i]); } } return m_fields; } /* (non-Javadoc) * @see org.jibx.binding.model.IClass#getMethods() */ public IClassItem[] getMethods() { if (m_methods == null) { ClassItem[] items = m_class.getMethodItems(); m_methods = new IClassItem[items.length]; for (int i = 0; i < items.length; i++) { m_methods[i] = buildItem(items[i]); } } return m_methods; } /* (non-Javadoc) * @see org.jibx.binding.model.IClass#getJavaDoc() */ public String getJavaDoc() { return null; } /* (non-Javadoc) * @see org.jibx.binding.model.IClass#getLocator() */ public IClassLocator getLocator() { return m_locator; } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/CollectionElement.java0000644000175000017500000006722410767276064026527 0ustar moellermoeller/* Copyright (c) 2004-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; /** * Model component for collection element of binding definition. * * @author Dennis M. Sosnoski * @version 1.0 */ public class CollectionElement extends StructureElementBase { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "add-method", "item-type", "iter-method", "load-method", "size-method", "store-method" }, StructureElementBase.s_allowedAttributes); /** Load method name. */ private String m_loadMethodName; /** Size method name. */ private String m_sizeMethodName; /** Store method name. */ private String m_storeMethodName; /** Add method name. */ private String m_addMethodName; /** Iterator method name. */ private String m_iterMethodName; /** Item type name. */ private String m_itemTypeName; /** Load method information. */ private IClassItem m_loadMethodItem; /** Size method information. */ private IClassItem m_sizeMethodItem; /** Store method information. */ private IClassItem m_storeMethodItem; /** Add method information. */ private IClassItem m_addMethodItem; /** Iterator method information. */ private IClassItem m_iterMethodItem; /** Item type information. */ private IClass m_itemTypeClass; /** * Default constructor. */ public CollectionElement() { super(COLLECTION_ELEMENT); } /** * Get item type name. * * @return item type name (or null if none) */ public String getItemTypeName() { return m_itemTypeName; } /** * Set item type name. * * @param type item type name (or null if none) */ public void setItemTypeName(String type) { m_itemTypeName = type; } /** * Get item type information. This call is only meaningful after * validation. * * @return item type information */ public IClass getItemTypeClass() { return m_itemTypeClass; } /** * Get add method name. * * @return add method name (or null if none) */ public String getAddMethodName() { return m_addMethodName; } /** * Set add method name. * * @param name add method name (or null if none) */ public void setAddMethodName(String name) { m_addMethodName = name; } /** * Get add method information. This call is only meaningful after * validation. * * @return add method information (or null if none) */ public IClassItem getAddMethodItem() { return m_addMethodItem; } /** * Get iterator method name. * * @return iterator method name (or null if none) */ public String getIterMethodName() { return m_iterMethodName; } /** * Set iterator method name. * * @param name iterator method name (or null if none) */ public void setIterMethodName(String name) { m_iterMethodName = name; } /** * Get iterator method information. This call is only meaningful after * validation. * * @return iterator method information (or null if none) */ public IClassItem getIterMethodItem() { return m_iterMethodItem; } /** * Get load method name. * * @return load method name (or null if none) */ public String getLoadMethodName() { return m_loadMethodName; } /** * Set load method name. * * @param name load method name (or null if none) */ public void setLoadMethodName(String name) { m_loadMethodName = name; } /** * Get load method information. This call is only meaningful after * validation. * * @return load method information (or null if none) */ public IClassItem getLoadMethodItem() { return m_loadMethodItem; } /** * Get size method name. * * @return size method name (or null if none) */ public String getSizeMethodName() { return m_sizeMethodName; } /** * Set size method name. * * @param name size method name (or null if none) */ public void setSizeMethodName(String name) { m_sizeMethodName = name; } /** * Get size method information. This call is only meaningful after * validation. * * @return size method information (or null if none) */ public IClassItem getSizeMethodItem() { return m_sizeMethodItem; } /** * Get store method name. * * @return store method name (or null if none) */ public String getStoreMethodName() { return m_storeMethodName; } /** * Set store method name. * * @param name store method name (or null if none) */ public void setStoreMethodName(String name) { m_storeMethodName = name; } /** * Get store method information. This call is only meaningful after * validation. * * @return store method information (or null if none) */ public IClassItem getStoreMethodItem() { return m_storeMethodItem; } // // Overrides of base class methods /** * Set ID property. This is never supported for an object coming from a * collection. * * @param child child defining the ID property * @return true if successful, false if ID * already defined */ public boolean setIdChild(IComponent child) { throw new IllegalStateException ("Internal error: method should never be called"); } /** * Check for object present. Always true for collection. * * @return true */ public boolean hasObject() { return true; } /** * Check for attribute definition. Always false for collection. * * @return false */ public boolean hasAttribute() { return false; } /** * Check for content definition. Always true for collection. * * @return true */ public boolean hasContent() { return true; } /* (non-Javadoc) * @see org.jibx.binding.model.ContainerElementBase#getChildObjectType() */ public IClass getChildObjectType() { return getItemTypeClass(); } // // Validation methods /** * Make sure all attributes are defined. * * @param uctx unmarshalling context * @exception JiBXException on unmarshalling error */ private void preSet(IUnmarshallingContext uctx) throws JiBXException { validateAttributes(uctx, s_allowedAttributes); } /* (non-Javadoc) * @see org.jibx.binding.model.ElementBase#prevalidate(org.jibx.binding.model.ValidationContext) */ public void prevalidate(ValidationContext vctx) { // first process attributes and check for errors super.prevalidate(vctx); if (!vctx.isSkipped(this)) { // check for ignored attributes if (isAllowRepeats()) { vctx.addWarning("'allow-repeats' attribute ignored on collection"); } if (isChoice()) { vctx.addWarning("'choice' attribute ignored on collection"); } // get the actual collection type and item type IClass clas = getType(); if (clas == null) { clas = vctx.getContextObject().getObjectType(); } String tname = m_itemTypeName; if (tname == null) { String ctype = clas.getName(); if (ctype.endsWith("[]")) { tname = ctype.substring(0, ctype.length()-2); } else { tname = "java.lang.Object"; } } m_itemTypeClass = vctx.getClassInfo(tname); if (m_itemTypeClass == null) { vctx.addFatal("Can't find class " + tname); } // handle input and output bindings separately if (vctx.isInBinding()) { // check store techniques String sname = m_storeMethodName; String aname = m_addMethodName; if (sname != null && aname != null) { vctx.addWarning("Both store-method and add-method supplied; using add-method"); sname = null; } // set defaults based on collection type if needed if (sname == null && aname == null) { if (clas.isSuperclass("java.util.ArrayList") || clas.isSuperclass("java.util.Vector") || clas.isImplements("Ljava/util/Collection;")) { aname = "add"; } else if (!clas.getName().endsWith("[]")) { vctx.addError("Need store-method or add-method for input binding"); } } // find the actual method information if (sname != null) { m_storeMethodItem = clas.getBestMethod(sname, null, new String[] { "int", tname }); if (m_storeMethodItem == null) { vctx.addError("store-method " + sname + " not found in class " + clas.getName()); } } if (aname != null) { m_addMethodItem = clas.getBestMethod(aname, null, new String[] { tname }); if (m_addMethodItem == null) { vctx.addError("add-method " + aname + " not found in class " + clas.getName()); } } } if (vctx.isOutBinding()) { // precheck load techniques String lname = m_loadMethodName; String sname = m_sizeMethodName; String iname = m_iterMethodName; if (lname == null) { if (sname != null) { vctx.addWarning("size-method requires load-method; ignoring supplied size-method"); sname = null; } } else { if (sname == null) { vctx.addWarning("load-method requires size-method; ignoring supplied load-method"); lname = null; } else { if (iname != null) { vctx.addWarning("Both load-method and iter-method supplied; using load-method"); iname = null; } } } // set defaults based on collection type if needed if (lname == null && iname == null) { if (clas.isSuperclass("java.util.ArrayList") || clas.isSuperclass("java.util.Vector")) { lname = "get"; sname = "size"; } else if (clas.isImplements("Ljava/util/Collection;")) { iname = "iterator"; } } // postcheck load techniques with defaults set if (lname == null) { if (iname == null && !clas.getName().endsWith("[]")) { vctx.addError("Need load-method and size-method, or iter-method, for output binding"); } } else { if (sname == null && iname == null) { vctx.addError("Need load-method and size-method, or iter-method, for output binding"); } } // find the actual method information if (lname != null) { m_loadMethodItem = clas.getBestMethod(lname, tname, new String[] { "int" }); if (m_loadMethodItem == null) { vctx.addError("load-method " + lname + " not found in class " + clas.getName()); } } if (iname != null) { m_iterMethodItem = clas.getBestMethod(iname, "java.util.Iterator", new String[0]); if (m_iterMethodItem == null) { vctx.addError("iter-method " + iname + " not found in class " + clas.getName()); } } } } } /** * Check that child components are of types compatible with the collection * item-type. This method may call itself recursively to process the * children of child components which do not themselves set a type. The * result is used for recursive checking to detect conditions where an * inner structure defines a type but an outer one does not (which causes * errors in the current code generation). * * @param vctx validation context * @param type collection item type * @param children list of child components to be checked * @return true if only child is a <value> element with * type, false if not */ private boolean checkCollectionChildren(ValidationContext vctx, IClass type, ArrayList children) { boolean valonly = children.size() == 1; for (int i = 0; i < children.size(); i++) { ElementBase child = (ElementBase)children.get(i); if (!vctx.isSkipped(child)) { // track whether children of this child must be type-checked boolean expand = true; valonly = valonly && (child instanceof ValueElement); if (child instanceof IComponent) { // first make sure a name is present IComponent comp = (IComponent)child; if (vctx.isInBinding() && !comp.hasName() && comp instanceof ValueElement) { vctx.addFatal(" elements within a collection must define element name for unmarshalling", comp); } // find the type associated with this component (if any) IClass ctype = comp.getType(); expand = false; if (comp instanceof ContainerElementBase) { ContainerElementBase contain = (ContainerElementBase)comp; if (contain.hasObject()) { ctype = contain.getObjectType(); } else { expand = true; } } // see if a type was found (no need to look at children) if (!expand) { // verify that type is compatible with collection if (!ctype.isAssignable(type)) { vctx.addFatal("References to collection items must use compatible types: " + ctype.getName() + " cannot be used as " + type.getName(), child); } } } // recurse on children if necessary for type-checking if (expand && child instanceof NestingElementBase) { NestingElementBase nest = (NestingElementBase)child; if (nest.children().size() > 0) { // type check child definitions boolean valchild = checkCollectionChildren(vctx, type, ((NestingElementBase)child).children()); // now check for structure element with no type if (!valchild && child instanceof StructureElement) { vctx.addError("Type must be specified on outermost element within collection", child); } } } } } return valonly; } /** * Check children of unordered collection for consistency. In an input * binding each child element must define a unique qualified name. In an * output binding each child element must define a unique type or supply * a test method to allow checking when that element should be generated for * an object. * * @param vctx validation context * @param children list of child components */ private void checkUnorderedChildren(ValidationContext vctx, ArrayList children) { HashMap typemap = new HashMap(); HashMap namemap = new HashMap(); for (int i = 0; i < children.size(); i++) { ElementBase child = (ElementBase)children.get(i); if (child instanceof IComponent && !vctx.isSkipped(child)) { IComponent comp = (IComponent)child; if (vctx.isInBinding()) { // names must be distinct in input binding String name = comp.getName(); String uri = comp.getUri(); if (uri == null) { uri = ""; } Object value = namemap.get(name); if (value == null) { // first instance of name, store directly namemap.put(name, comp); } else if (value instanceof HashMap) { // multiple instances already found, match on URI HashMap urimap = (HashMap)value; if (urimap.get(uri) != null) { vctx.addError("Duplicate names are not allowed in unordered collection", comp); } else { urimap.put(uri, comp); } } else { // duplicate name, check URI IComponent match = (IComponent)value; if ((uri == null && match.getUri() == null) || (uri != null && uri.equals(match.getUri()))) { vctx.addError("Duplicate names are not allowed in unordered collection", comp); } else { // multiple namespaces for same name, use map HashMap urimap = new HashMap(); urimap.put(uri, comp); String muri = match.getUri(); if (muri == null) { muri = ""; } urimap.put(muri, match); namemap.put(name, urimap); } } } if (vctx.isOutBinding()) { // just accumulate lists of each type in this loop String type = comp.getType().getName(); Object value = typemap.get(type); if (value == null) { typemap.put(type, comp); } else if (value instanceof ArrayList) { ArrayList types = (ArrayList)value; types.add(comp); } else { ArrayList types = new ArrayList(); types.add(value); types.add(comp); typemap.put(type, types); } } } } // check for duplicate type usage in output binding for (Iterator iter = typemap.values().iterator(); iter.hasNext();) { Object value = iter.next(); if (value instanceof ArrayList) { // multiple instances of type, make sure we can distinguish ArrayList types = (ArrayList)value; for (int i = 0; i < types.size(); i++) { Object child = types.get(i); if (child instanceof ValueElement) { ValueElement vel = (ValueElement)child; if (vel.getTest() == null) { vctx.addError("test-method needed for multiple instances of same type in unordered collection", vel); } } else if (child instanceof StructureElementBase) { StructureElementBase sel = (StructureElementBase)child; if (sel.getTest() == null) { vctx.addError("test-method needed for multiple instances of same type in unordered collection", sel); } } } } } } /** * Check children of ordered collection for consistency. In an input binding * each child element must use a different qualified name from the preceding * child element. In an output binding each child element must define a * different type from the preceding child element, or the preceding child * element must supply a test method to allow checking when that element * should be generated for an object. * * @param vctx validation context * @param children list of child components */ private void checkOrderedChildren(ValidationContext vctx, ArrayList children) { IComponent prior = null; for (int i = 0; i < children.size(); i++) { ElementBase child = (ElementBase)children.get(i); if (child instanceof IComponent && !vctx.isSkipped(child)) { IComponent comp = (IComponent)child; if (prior == null) { prior = comp; } else { if (vctx.isInBinding()) { // make sure names are different String uri = comp.getUri(); String cname = comp.getName(); String pname = prior.getName(); if (cname != null && pname != null && cname.equals(pname) && ((uri == null && prior.getUri() == null) || (uri != null && uri.equals(prior.getUri())))) { vctx.addError("Successive elements of collection cannot use duplicate names for unmarshalling", comp); } } if (vctx.isOutBinding()) { // make sure types differ or test method supplied IClass type = comp.getType(); if (type.isAssignable(prior.getType())) { IClassItem test = null; if (prior instanceof ValueElement) { test = ((ValueElement)prior).getTest(); } else if (prior instanceof StructureElementBase) { test = ((StructureElementBase)prior).getTest(); } if (test == null) { vctx.addError("Collection component must specify a test-method to distinguish from next component of compatible type for marshalling", prior); } } } } } } } /* (non-Javadoc) * @see org.jibx.binding.model.ElementBase#validate(org.jibx.binding.model.ValidationContext) */ public void validate(ValidationContext vctx) { // call base class method first super.validate(vctx); // check for way to determine if named collection present on output if (vctx.isOutBinding() && hasName() && !hasProperty() && isOptional() && getTest() == null && !(vctx.getParentContainer() instanceof CollectionElement)) { vctx.addError ("Need test method for optional collection output element"); } // TODO: this should really check that item-type on an empty collection // specifies a concrete mapping // make sure only element components are present ArrayList children = children(); for (int i = 0; i < children.size(); i++) { IComponent child = (IComponent)children.get(i); if (child.hasAttribute()) { vctx.addFatal ("Attributes not allowed as child components of collection", child); } } // check each child component checkCollectionChildren(vctx, m_itemTypeClass, children); // make sure child components can be distinguished if (children.size() > 1) { if (isOrdered()) { checkOrderedChildren(vctx, children); } else { checkUnorderedChildren(vctx, children); } } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/ContainerElementBase.java0000644000175000017500000005530311006326624027125 0ustar moellermoeller/* Copyright (c) 2004-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import java.util.ArrayList; import org.jibx.binding.util.StringArray; /** * Model component for elements that can contain detailed binding information in * the form of nested child components. Elements of this type include * mapping, template, structure, and collection * elements. * * @author Dennis M. Sosnoski */ public abstract class ContainerElementBase extends NestingElementBase { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(NestingElementBase.s_allowedAttributes, new StringArray(ObjectAttributes.s_allowedAttributes, StructureAttributes.s_allowedAttributes)); /** Object attributes information for nesting. */ private ObjectAttributes m_objectAttrs; /** Structure attributes information for nesting. */ private StructureAttributes m_structureAttrs; /** Label for this structure definition. */ private String m_label; /** Label for structure to be used as definition. */ private String m_using; /** Child component that contributes an ID (null if none). */ private IComponent m_idChild; /** Flag for child classification in progress. */ private boolean m_inClassify; /** Child components defining content (created during validation, contains subset of child components defining element or character data content). */ private ArrayList m_contentComponents; /** Child components defining attributes (created during validation, contains subset of child components defining attributes). */ private ArrayList m_attributeComponents; /** * Constructor. * * @param type element type code */ protected ContainerElementBase(int type) { super(type); m_objectAttrs = new ObjectAttributes(); m_structureAttrs = new StructureAttributes(); } /** * Get label for this definition. * * @return label for this definition */ public String getLabel() { return m_label; } /** * Set label for this definition. * * @param label label for this definition */ public void setLabel(String label) { m_label = label; } /** * Get label for definition to be used. * * @return label for definition to be used */ public String getUsing() { return m_using; } /** * Set label for definition to be used. * * @param label label for definition to be used */ public void setUsing(String label) { m_using = label; } /** * Get list of child components contributing content items to this * container element. This call is only meaningful after validation. * * @return list of child binding components defining content items */ public ArrayList getContentComponents() { return m_contentComponents == null ? EmptyList.INSTANCE : m_contentComponents; } /** * Get list of child components contributing attribute items to this * container element. This call is only meaningful after validation. * * @return list of child binding components defining attribute items */ public ArrayList getAttributeComponents() { return m_attributeComponents == null ? EmptyList.INSTANCE : m_attributeComponents; } /** * Check if this container defines a context object. * * @return true if defines context object, * false if not */ public abstract boolean hasObject(); /** * Get class linked to binding element. This call is only meaningful after * validation. * * @return information for class linked by binding */ public abstract IClass getObjectType(); /** * Get class passed to child components. This call is only meaningful after * validation. * * @return information for class linked by binding */ public IClass getChildObjectType() { return getObjectType(); } /** * Set ID property child. Used to set the ID property associated with a * particular class instance. There can only be at most one child ID * property for each actual object instance. * * @param child child defining the ID property * @param vctx validation context */ public final void setIdChild(IComponent child, ValidationContext vctx) { if (m_idChild == null) { m_idChild = child; vctx.getBindingRoot().addIdClass(getObjectType()); } else { vctx.addError("Only one child ID property allowed for an object " + "- " + ValidationProblem.componentDescription(m_idChild) + " and " + ValidationProblem.componentDescription(child) + " refer to the same object"); } } /** * Get ID property child. * * @return ID child */ public IComponent getId() { return m_idChild; } // // Object attribute delegate methods /** * Get factory method name. * * @return fully-qualified factory class and method name (or * null if none) */ public String getFactoryName() { return m_objectAttrs.getFactoryName(); } /** * Get factory method information. This call is only meaningful after * a call to {@link #prevalidate(ValidationContext)}. * * @return factory method information (or null if none) */ public IClassItem getFactory() { return m_objectAttrs.getFactory(); } /** * Set factory method name. * * @param name fully qualified class and method name for object factory */ public void setFactoryName(String name) { m_objectAttrs.setFactoryName(name); } /** * Get pre-set method name. * * @return pre-set method name (or null if none) */ public String getPresetName() { return m_objectAttrs.getPresetName(); } /** * Get pre-set method information. This call is only meaningful after * a call to {@link #prevalidate(ValidationContext)}. * * @return pre-set method information (or null if none) */ public IClassItem getPreset() { return m_objectAttrs.getPreset(); } /** * Set pre-set method name. * * @param name member method name to be called before unmarshalling */ public void setPresetName(String name) { m_objectAttrs.setPresetName(name); } /** * Get post-set method name. * * @return post-set method name (or null if none) */ public String getPostsetName() { return m_objectAttrs.getPostsetName(); } /** * Get post-set method information. This call is only meaningful after * a call to {@link #prevalidate(ValidationContext)}. * * @return post-set method information (or null if none) */ public IClassItem getPostset() { return m_objectAttrs.getPostset(); } /** * Set post-set method name. * * @param name member method name to be called after unmarshalling */ public void setPostsetName(String name) { m_objectAttrs.setPostsetName(name); } /** * Get pre-get method name. * * @return pre-get method name (or null if none) */ public String getPregetName() { return m_objectAttrs.getPregetName(); } /** * Get pre-get method information. This call is only meaningful after * a call to {@link #prevalidate(ValidationContext)}. * * @return pre-get method information (or null if none) */ public IClassItem getPreget() { return m_objectAttrs.getPreget(); } /** * Set pre-get method name. * * @param name member method name to be called before marshalling */ public void setPreget(String name) { m_objectAttrs.setPreget(name); } /** * Get marshaller class name. * * @return marshaller class name (or null if none) */ public String getMarshallerName() { return m_objectAttrs.getMarshallerName(); } /** * Get marshaller class information. This call is only meaningful after * a call to {@link #prevalidate(ValidationContext)}. * * @return class information for marshaller (or null if none) */ public IClass getMarshaller() { return m_objectAttrs.getMarshaller(); } /** * Set marshaller class name. * * @param name class name to be used for marshalling */ public void setMarshallerName(String name) { m_objectAttrs.setMarshallerName(name); } /** * Get unmarshaller class name. * * @return unmarshaller class name (or null if none) */ public String getUnmarshallerName() { return m_objectAttrs.getUnmarshallerName(); } /** * Get unmarshaller class information. This call is only meaningful after * a call to {@link #prevalidate(ValidationContext)}. * * @return class information for unmarshaller (or null if none) */ public IClass getUnmarshaller() { return m_objectAttrs.getUnmarshaller(); } /** * Set unmarshaller class name. * * @param name class name to be used for unmarshalling */ public void setUnmarshallerName(String name) { m_objectAttrs.setUnmarshallerName(name); } /** * Check if nillable object. * * @return nillable flag */ public boolean isNillable() { return m_objectAttrs.isNillable(); } /** * Set nillable flag. * * @param nillable flag */ public void setNillable(boolean nillable) { m_objectAttrs.setNillable(nillable); } /** * Get type to be used for creating new instance. * * @return class name for type to be created (or null if none) */ public String getCreateType() { return m_objectAttrs.getCreateType(); } /** * Get new instance creation class information. This method is only usable * a call to {@link #prevalidate(ValidationContext)}. * * @return class information for type to be created (or null if * none) */ public IClass getCreateClass() { return m_objectAttrs.getCreateClass(); } /** * Set new instance type class name. * * @param name class name to be used for creating new instance */ public void setCreateType(String name) { m_objectAttrs.setCreateType(name); } // // Structure attribute delegate methods /** * Get flexible flag. * * @return flexible flag */ public boolean isFlexible() { return m_structureAttrs.isFlexible(); } /** * Set flexible flag. * * @param flexible */ public void setFlexible(boolean flexible) { m_structureAttrs.setFlexible(flexible); } /** * Check if child components are ordered. * * @return true if ordered, false if not */ public boolean isOrdered() { return m_structureAttrs.isOrdered(); } /** * Set child components ordered flag. * * @param ordered true if ordered, false if not */ public void setOrdered(boolean ordered) { m_structureAttrs.setOrdered(ordered); } /** * Check if child components are a choice. * * @return true if choice, false if not */ public boolean isChoice() { return m_structureAttrs.isChoice(); } /** * Set child components choice flag. * * @param choice true if choice, false if not */ public void setChoice(boolean choice) { m_structureAttrs.setChoice(choice); } /** * Check if repeated child elements are allowed. * * @return true if repeats allowed, false if not */ public boolean isAllowRepeats() { return m_structureAttrs.isAllowRepeats(); } /** * Set repeated child elements allowed flag. * * @param ignore true if repeated child elements to be allowed, * false if not */ public void setAllowRepeats(boolean ignore) { m_structureAttrs.setAllowRepeats(ignore); } // // Validation methods. /** * Check that there's a way to construct an instance of an object class for * input bindings. This can be a factory method, an unmarshaller, a * no-argument constructor already defined in the class, or a modifiable * class with constructor generation enabled. If a create-type is specified, * this is used in place of the declared type. The call always succeeds if * the binding is output-only. * * Note that this method should not be changed to pass the "this" object * when reporting errors, because it may be called indirectly during the * validation of other elements. Because of this, it needs to only use * values defined after {@link #prevalidate(ValidationContext)}. * * @param vctx validation context * @param type constructed object type */ protected void verifyConstruction(ValidationContext vctx, IClass type) { if (vctx.isInBinding() && getFactory() == null && getUnmarshaller() == null) { IClass create = getCreateClass(); if (create != null) { if (create.isAssignable(type)) { type = create; } else { vctx.addError("Specified create-type '" + create.getName() + "' is not compatible with type '" + type.getName() + '\''); } } if (type.isAbstract()) { vctx.addError("factory-method needed for abstract type '" + type.getName() + '\''); } else if (!type.getName().endsWith("[]") && type.getInitializerMethod("()V") == null) { BindingElement binding = vctx.getBindingRoot(); if (binding.isAddConstructors()) { if (!type.isModifiable()) { vctx.addError("Need no-argument constructor or " + "factory method for unmodifiable class " + type.getName()); } else { IClass suptype = type; while ((suptype = suptype.getSuperClass()) != null) { IClassItem cons = suptype.getInitializerMethod("()V"); if ((cons == null || !type.isAccessible(cons)) && !suptype.isModifiable()) { vctx.addError("Need accessible no-argument constructor for unmodifiable class " + suptype.getName() + " (superclass of " + type.getName() + ')'); } } } } else { vctx.addError("Need no-argument constructor or " + "factory method for class " + type.getName()); } } } } /** * Check that child components are of types compatible with the container * object type. This method may call itself recursively to process the * children of child components which do not themselves set a type. It's not * used directly, but is here for use by subclasses. * * @param vctx validation context * @param type structure object type * @param children list of child components to be checked */ protected void checkCompatibleChildren(ValidationContext vctx, IClass type, ArrayList children) { for (int i = 0; i < children.size(); i++) { ElementBase child = (ElementBase)children.get(i); boolean expand = true; if (child instanceof IComponent && !vctx.isSkipped(child)) { IComponent comp = (IComponent)child; IClass ctype = comp.getType(); if (comp instanceof ContainerElementBase) { ContainerElementBase contain = (ContainerElementBase)comp; expand = !contain.hasObject(); } if (comp.isImplicit()) { if (!type.isAssignable(ctype)) { vctx.addFatal ("References to structure object must have " + "compatible types: " + type.getName() + " cannot be used as " + ctype.getName(), child); } } } if (expand && child instanceof NestingElementBase) { checkCompatibleChildren(vctx, type, ((NestingElementBase)child).children()); } } } /** * Check for child components classified. This is a convenience method for * subclasses to check if classification has already been done. * * @return true if classified, false if not */ protected boolean isClassified() { return m_attributeComponents != null; } /** * Classify child components as contributing attributes, content, or both. * This method is needed to handle on-demand classification during * validation. When a child component is another instance of this class, the * method calls itself on the child component prior to checking the child * component's contribution. * * @param vctx */ protected void classifyComponents(ValidationContext vctx) { if (m_attributeComponents == null && !m_inClassify) { ArrayList childs = children(); if (childs == null || childs.size() == 0) { // no children, so no components of either type m_attributeComponents = EmptyList.INSTANCE; m_contentComponents = EmptyList.INSTANCE; } else { // classify child components, setting flag to catch recursion m_inClassify = true; m_attributeComponents = new ArrayList(); m_contentComponents = new ArrayList(); for (int i = 0; i < childs.size(); i++) { Object child = childs.get(i); if (child instanceof ContainerElementBase) { ((ContainerElementBase)child).classifyComponents(vctx); } if (child instanceof IComponent) { IComponent comp = (IComponent)child; if (comp.hasAttribute()) { m_attributeComponents.add(child); } if (comp.hasContent()) { m_contentComponents.add(child); if (!comp.hasName()) { if (isFlexible()) { vctx.addError("All child components must define element names for flexible='true'", comp); } else if (comp instanceof ValueElement && !isOrdered()) { vctx.addError("Text values cannot be used with ordered='false'", comp); } } } } } m_inClassify = false; } } } /** * Set child attribute and content components directly. This is provided for * use by subclasses requiring special handling, in particular the * <structure> element used as a mapping reference. * * @param attribs * @param contents */ protected void setComponents(ArrayList attribs, ArrayList contents) { m_attributeComponents = attribs; m_contentComponents = contents; } /* (non-Javadoc) * @see org.jibx.binding.model.ElementBase#prevalidate(org.jibx.binding.model.ValidationContext) */ public void prevalidate(ValidationContext vctx) { m_objectAttrs.prevalidate(vctx); m_structureAttrs.prevalidate(vctx); if (m_using != null && children().size() > 0) { vctx.addFatal("Child elements not allowed with using attribute"); } super.prevalidate(vctx); } /* (non-Javadoc) * @see org.jibx.binding.model.ElementBase#validate(org.jibx.binding.model.ValidationContext) */ public void validate(ValidationContext vctx) { super.validate(vctx); m_objectAttrs.validate(vctx); m_structureAttrs.validate(vctx); classifyComponents(vctx); if (isChoice() && m_attributeComponents.size() > 0) { vctx.addError("Attributes cannot be included in choice"); } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/DefinitionContext.java0000644000175000017500000005773011002542726026540 0ustar moellermoeller/* Copyright (c) 2004-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import java.util.ArrayList; import java.util.HashMap; /** * Definition context information. This is used to track definitions of items * that can be referenced by other items. The contexts are nested, so that names * not found in a context may be defined by a containing context. The access * methods take this into account, automatically delegating to the containing * context (if defined) when a lookup fails. * * @author Dennis M. Sosnoski */ public class DefinitionContext { /** Link to containing definition context. */ private final DefinitionContext m_outerContext; /** Namespace used by default at this level for attributes. */ private NamespaceElement m_attributeDefault; /** Namespace used by default at this level for elements. */ private NamespaceElement m_elementDefault; /** Namespaces defined at level (lazy create). */ private ArrayList m_namespaces; /** Mapping from prefix to namespace definition (lazy create). */ private HashMap m_prefixMap; /** Mapping from URI to namespace definition (lazy create). */ private HashMap m_uriMap; /** Map from element names to mappings defined at level (lazy create). */ private HashMap m_mappingMap; /** Class hierarchy context for format definitions (lazy create). */ private ClassHierarchyContext m_formatContext; /** Class hierarchy context for template definitions (lazy create). */ private ClassHierarchyContext m_templateContext; /** Named binding components (lazy create). */ private HashMap m_namedStructureMap; /** * Constructor. * * @param outer containing definition context (null if * at root of tree) */ protected DefinitionContext(DefinitionContext outer) { m_outerContext = outer; } /** * Copy a context for use by an included binding. The duplicated context has * the same containing context as the original, and shared reference * structures for formats and templates, but only a static copy of the * namespace definitions. * * @return context copy for included binding */ /*package*/ DefinitionContext getIncludeCopy() { DefinitionContext dupl = new DefinitionContext(m_outerContext); if (m_mappingMap == null) { m_mappingMap = new HashMap(); } dupl.m_mappingMap = m_mappingMap; if (m_formatContext == null) { m_formatContext = new ClassHierarchyContext(getContainingFormatContext()); } dupl.m_formatContext = m_formatContext; if (m_templateContext == null) { m_templateContext = new ClassHierarchyContext(getContainingTemplateContext()); } dupl.m_templateContext = m_templateContext; return dupl; } /** * Inject namespaces from this context into another context. This is * intended for includes, where the included binding inherits the * namespace declarations of the containing binding. * * @param to */ /*package*/ void injectNamespaces(DefinitionContext to) { to.m_attributeDefault = m_attributeDefault; to.m_elementDefault = m_elementDefault; if (m_namespaces != null) { to.m_namespaces = new ArrayList(m_namespaces); to.m_prefixMap = new HashMap(m_prefixMap); to.m_uriMap = new HashMap(m_uriMap); } } /** * Get containing context. * * @return containing context information (null if at root of * tree) */ public DefinitionContext getContaining() { return m_outerContext; } /** * Get containing format context. * * @return innermost containing context for format definitions * (null none defined) */ private ClassHierarchyContext getContainingFormatContext() { if (m_outerContext == null) { return null; } else { return m_outerContext.getFormatContext(); } } /** * Get current format context. * * @return innermost context for format definitions (null none * defined) */ private ClassHierarchyContext getFormatContext() { if (m_formatContext == null) { return getContainingFormatContext(); } else { return m_formatContext; } } /** * Get containing template context. * * @return innermost containing context for template definitions * (null none defined) */ private ClassHierarchyContext getContainingTemplateContext() { if (m_outerContext == null) { return null; } else { return m_outerContext.getTemplateContext(); } } /** * Get current template context. * * @return innermost context for template definitions (null none * defined) */ private ClassHierarchyContext getTemplateContext() { if (m_templateContext == null) { return getContainingTemplateContext(); } else { return m_templateContext; } } /** * Add namespace to set defined at this level. * * @param def namespace definition element to be added * @return problem information, or null if no problem */ /* public ValidationProblem addNamespace(NamespaceElement def) { // initialize structures if first namespace definition if (m_namespaces == null) { m_namespaces = new ArrayList(); m_prefixMap = new HashMap(); m_uriMap = new HashMap(); } // check for conflict as default for attributes if (def.isAttributeDefault()) { if (m_attributeDefault == null) { m_attributeDefault = def; } else { return new ValidationProblem ("Conflicting attribute namespaces", def); } } // check for conflict as default for elements if (def.isElementDefault()) { if (m_elementDefault == null) { m_elementDefault = def; } else { return new ValidationProblem ("Conflicting element namespaces", def); } } // check for conflict on prefix String prefix = def.getPrefix(); if (m_prefixMap.get(prefix) != null) { return new ValidationProblem("Namespace prefix conflict", def); } // check for duplicate definition of same URI String uri = def.getUri(); Object prior = m_uriMap.get(uri); if (prior != null && ((NamespaceElement)prior).getPrefix() != null) { // TODO: is this needed? multiple prefixes should be allowed return null; } // add only if successful in all tests m_namespaces.add(def); m_prefixMap.put(prefix, def); m_uriMap.put(uri, def); return null; } */ /** * Get namespace for prefix. * * @param prefix * @return namespace definition in this context, null if none */ public NamespaceElement getNamespaceForPrefix(String prefix) { if (m_prefixMap == null) { return null; } else { return (NamespaceElement)m_prefixMap.get(prefix); } } /** * Check for namespace using the same prefix. This also intializes the * namespace structures for this context the first time the method is * called. * * @param def * @return namespace definition using same prefix, null if none */ private NamespaceElement checkDuplicatePrefix(NamespaceElement def) { // create structures if not already done if (m_namespaces == null) { m_namespaces = new ArrayList(); m_prefixMap = new HashMap(); m_uriMap = new HashMap(); } // check for conflict (or duplicate) on prefix String prefix = def.getPrefix(); return (NamespaceElement)m_prefixMap.get(prefix); } /** * Add namespace to internal tables. * * @param def */ private void internalAddNamespace(NamespaceElement def) { String uri = def.getUri(); String prefix = def.getPrefix(); m_namespaces.add(def); m_prefixMap.put(prefix, def); m_uriMap.put(uri, def); } /** * Add namespace to set defined at this level. * * @param def namespace definition element to be added (duplicates ignored) * @return problem information, or null if no problem */ public ValidationProblem addNamespace(NamespaceElement def) { String uri = def.getUri(); NamespaceElement dup = checkDuplicatePrefix(def); if (dup == null) { // check for no definition of same URI with prefix NamespaceElement prior = (NamespaceElement)m_uriMap.get(uri); if (prior == null || prior.getPrefix() == null) { // check for conflict as default for attributes if (def.isAttributeDefault()) { if (m_attributeDefault == null) { m_attributeDefault = def; } else { return new ValidationProblem ("Conflicting attribute namespaces", def); } } // check for conflict as default for elements if (def.isElementDefault()) { if (m_elementDefault == null) { m_elementDefault = def; } else { return new ValidationProblem ("Conflicting element namespaces", def); } } // no conflicts, add it internalAddNamespace(def); } } else if (!uri.equals(dup.getUri())) { String prefix = def.getPrefix(); if (prefix == null) { return new ValidationProblem ("Default namespace conflict", def); } else { return new ValidationProblem ("Namespace prefix conflict for prefix '" + prefix + '\'', def); } } return null; } /** * Add namespace declaration to set defined at this level. This method * treats all namespaces as though they were declared with default="none". * * @param def namespace definition to be added (duplicates ignored) * @param ref binding element referencing the namespace * @return problem information, or null if no problem */ public ValidationProblem addImpliedNamespace(NamespaceElement def, ElementBase ref) { String uri = def.getUri(); NamespaceElement dup = checkDuplicatePrefix(def); DefinitionContext ctx = this; String prefix = def.getPrefix(); while (dup == null && (ctx = ctx.getContaining()) != null) { dup = getNamespaceForPrefix(prefix); } if (dup == null) { // check for no definition of same URI with prefix NamespaceElement prior = (NamespaceElement)m_uriMap.get(uri); if (prior == null || prior.getPrefix() == null) { // no conflicts, add it internalAddNamespace(def); } } else if (!uri.equals(dup.getUri())) { if (prefix == null) { return new ValidationProblem ("Default namespace conflict on mapping reference", ref); } else { return new ValidationProblem ("Namespace conflict on mapping reference, for prefix '" + prefix + '\'', ref); } } return null; } /** * Get namespace definition for element name. * TODO: handle multiple prefixes for namespace, proper screening * * @param name attribute group defining name * @return namespace definition, or null if none that matches */ public NamespaceElement getElementNamespace(NameAttributes name) { String uri = name.getUri(); String prefix = name.getPrefix(); NamespaceElement ns = null; if (uri != null) { if (m_uriMap != null) { ns = (NamespaceElement)m_uriMap.get(uri); if (ns != null && prefix != null) { if (!prefix.equals(ns.getPrefix())) { ns = null; } } } } else if (prefix != null) { if (m_prefixMap != null) { ns = (NamespaceElement)m_prefixMap.get(prefix); } } else { ns = m_elementDefault; } if (ns == null && m_outerContext != null) { ns = m_outerContext.getElementNamespace(name); } return ns; } /** * Get namespace definition for attribute name. * TODO: handle multiple prefixes for namespace, proper screening * * @param name attribute group defining name * @return namespace definition, or null if none that matches */ public NamespaceElement getAttributeNamespace(NameAttributes name) { String uri = name.getUri(); String prefix = name.getPrefix(); NamespaceElement ns = null; if (uri != null) { if (m_uriMap != null) { ns = (NamespaceElement)m_uriMap.get(uri); if (ns != null && prefix != null) { if (!prefix.equals(ns.getPrefix())) { ns = null; } } } } else if (prefix != null) { if (m_prefixMap != null) { ns = (NamespaceElement)m_prefixMap.get(prefix); } } else { ns = m_attributeDefault; } if (ns == null && m_outerContext != null) { ns = m_outerContext.getAttributeNamespace(name); } return ns; } /** * Add format to set defined at this level. * * @param def format definition element to be added * @param vctx validation context in use */ public void addFormat(FormatElement def, ValidationContext vctx) { if (m_formatContext == null) { m_formatContext = new ClassHierarchyContext(getContainingFormatContext()); } if (def.isDefaultFormat()) { IClass clas = def.getType(); m_formatContext.addTypedComponent(clas, def, vctx); } String label = def.getLabel(); if (label != null) { m_formatContext.addNamedComponent(label, def, vctx); } } /** * Get specific format definition for type. Finds with an exact match * on the class name, checking the containing definitions if a format * is not found at this level. * * @param type fully qualified class name to be converted * @return conversion definition for class, or null if not * found */ public FormatElement getSpecificFormat(String type) { ClassHierarchyContext ctx = getFormatContext(); if (ctx == null) { return null; } else { return (FormatElement)ctx.getSpecificComponent(type); } } /** * Get named format definition. Finds the format with the supplied * name, checking the containing definitions if the format is not found * at this level. * * @param name conversion name to be found * @return conversion definition with specified name, or null * if no conversion with that name */ public FormatElement getNamedFormat(String name) { ClassHierarchyContext ctx = getFormatContext(); if (ctx == null) { return null; } else { return (FormatElement)ctx.getNamedComponent(name); } } /** * Get best format definition for class. Finds the format based on the * inheritance hierarchy for the supplied class. If a specific format for * the actual class is not found (either in this or a containing level) this * returns the most specific superclass format. * * @param clas information for target conversion class * @return conversion definition for class, or null if no * compatible conversion defined */ public FormatElement getBestFormat(IClass clas) { ClassHierarchyContext ctx = getFormatContext(); if (ctx == null) { return null; } else { return (FormatElement)ctx.getMostSpecificComponent(clas); } } /** * Add mapped name to set defined at this level. * * @param name mapped name * @param def mapping definition * @param vctx validation context */ public void addMappedName(NameAttributes name, MappingElement def, ValidationContext vctx) { if (m_mappingMap == null) { m_mappingMap = new HashMap(); } String fullname = name.getName(); NamespaceElement namespace = getElementNamespace(name); if (namespace != null && namespace.getUri() != null) { fullname = '{' + namespace.getUri() + '}' + fullname; } if (m_mappingMap.containsKey(fullname)) { if (vctx.isInBinding()) { vctx.addError ("Duplicate mapping name not allowed for unmarshalling"); } } else { m_mappingMap.put(fullname, def); } } /** * Add template or mapping to set defined at this level. * * @param def template definition element to be added * @param vctx validation context in use */ public void addTemplate(TemplateElementBase def, ValidationContext vctx) { if (m_templateContext == null) { m_templateContext = new ClassHierarchyContext(getContainingTemplateContext()); } if (def.isDefaultTemplate()) { IClass clas = def.getHandledClass(); m_templateContext.addTypedComponent(clas, def, vctx); } if (def instanceof TemplateElement) { TemplateElement tdef = (TemplateElement)def; if (tdef.getLabel() != null) { m_templateContext.addNamedComponent(tdef.getLabel(), def, vctx); } } else { // TODO: Remove for 2.0 MappingElement mdef = (MappingElement)def; if (mdef.getTypeName() != null) { m_templateContext.addNamedComponent(mdef.getTypeName(), def, vctx); } } } /** * Get specific template definition for type. Finds with an exact match * on the class name, checking the containing definitions if a template * is not found at this level. * * @param type fully qualified class name to be converted * @return template definition for type, or null if not * found */ public TemplateElementBase getSpecificTemplate(String type) { ClassHierarchyContext ctx = getTemplateContext(); if (ctx == null) { return null; } else { return (TemplateElementBase)ctx.getSpecificComponent(type); } } /** * Get named template definition. Finds the template with the supplied * name, checking the containing definitions if the template is not found * at this level. * TODO: Make this specific to TemplateElement in 2.0 * * @param name conversion name to be found * @return template definition for class, or null if no * template with that name */ public TemplateElementBase getNamedTemplate(String name) { ClassHierarchyContext ctx = getTemplateContext(); if (ctx == null) { return null; } else { return (TemplateElementBase)ctx.getNamedComponent(name); } } /** * Checks if a class is compatible with one or more templates. This checks * based on the inheritance hierarchy for the supplied class, looks for the * class or interface itself as well as any subclasses or implementations. * * @param clas information for target class * @return true if compatible type, false if not */ public boolean isCompatibleTemplateType(IClass clas) { ClassHierarchyContext chctx = getTemplateContext(); if (chctx == null) { return false; } else { return chctx.isCompatibleType(clas); } } /** * Add named structure to set defined in this context. For named structures * only the definition context associated with the binding element should be * used. This is a kludge, but will go away in 2.0. * * @param def structure definition * @return problem information, or null if no problem */ public ValidationProblem addNamedStructure(ContainerElementBase def) { // create structure if not already done if (m_namedStructureMap == null) { m_namedStructureMap = new HashMap(); } // check for conflict on label before adding to definitions String label = def.getLabel(); if (m_namedStructureMap.get(label) == null) { m_namedStructureMap.put(label, def); return null; } else { return new ValidationProblem("Duplicate label \"" + label + '"', def); } } /** * Get labeled structure definition within this context. For named * structures only the definition context associated with the binding * element should be used. This is a kludge, but will go away in 2.0. * * @param label structure definition label * @return structure definition with specified label, or null * if not defined */ public ContainerElementBase getNamedStructure(String label) { if (m_namedStructureMap == null) { return null; } else { return (ContainerElementBase)m_namedStructureMap.get(label); } } /** * Get the namespaces defined in this context * * @return namespace definitions (may be null if none) */ public ArrayList getNamespaces() { return m_namespaces; } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/DocumentFormatter.java0000644000175000017500000001207510611640246026537 0ustar moellermoeller/* Copyright (c) 2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Node; /** * Formatter for JavaDoc conversion to XML documentation components. */ public class DocumentFormatter { /** Document used for constructing DOM components. */ private final Document m_document; /** * Constructor. */ public DocumentFormatter() { try { DocumentBuilderFactory fact = DocumentBuilderFactory.newInstance(); m_document = fact.newDocumentBuilder().newDocument(); } catch (Exception e) { throw new RuntimeException("Internal error: unable to create DOM builder", e); } } /** * Reformat a segment of JavaDoc text as either a CDATA section (if it * contains embedded HTML tags) or a simple text node. This also replaces * line breaks with single spaces, so that the output format will not use * indenting based on the original supplied text. * * @param jdoc raw JavaDoc text * @return formatted text */ public Node reformDocSegment(String jdoc) { StringBuffer buff = new StringBuffer(jdoc); int index = 0; boolean dirty = false; while (index < buff.length()) { char chr = buff.charAt(index); if (chr < 0x20) { if (chr == '\n' || chr == '\r') { if ((index > 0 && buff.charAt(index) == ' ') || (index+1 < buff.length() && buff.charAt(index+1) == ' ')) { buff.deleteCharAt(index); } else { buff.setCharAt(index, ' '); } } else { buff.deleteCharAt(index); } } else { dirty = dirty || chr == '&' || chr == '<'; index++; } } String text = buff.toString(); if (dirty) { return m_document.createCDATASection(text); } else { return m_document.createTextNode(text); } } /** * Convert JavaDoc text to a list of formatted nodes. * * @param jdoc JavaDoc text (may be null) * @return formatted representation (may be null) */ public List docToNodes(String jdoc) { if (jdoc != null) { jdoc = jdoc.trim(); if (jdoc.length() > 0) { List nodes = new ArrayList(); boolean dirty = jdoc.indexOf('<') >= 0; if (dirty) { String ldoc = jdoc.toLowerCase(); int split; int base = 0; while ((split = ldoc.indexOf("
", base)) > 0) {
                        if (split > base) {
                            nodes.add(reformDocSegment(jdoc.substring(base, split)));
                        }
                        int end = ldoc.lastIndexOf("
"); if (end < 0) { end = ldoc.length(); } nodes.add(reformDocSegment(jdoc.substring(split, end))); base = end+1; } if (base < jdoc.length()) { nodes.add(reformDocSegment(jdoc.substring(base))); } } else { nodes.add(reformDocSegment(jdoc)); } return nodes; } } return null; } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/ElementBase.java0000644000175000017500000001610410651176146025265 0ustar moellermoeller/* Copyright (c) 2004-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import org.jibx.binding.util.StringArray; import org.jibx.runtime.ITrackSource; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.impl.UnmarshallingContext; /** * Base class for all element structures in binding definition model. This just * provides the linkages for the binding definition tree structure and related * validation hooks. * * @author Dennis M. Sosnoski * @version 1.0 */ public abstract class ElementBase { // // Element type definitions. public static final int BINDING_ELEMENT = 0; public static final int COLLECTION_ELEMENT = 1; public static final int FORMAT_ELEMENT = 2; public static final int MAPPING_ELEMENT = 3; public static final int NAMESPACE_ELEMENT = 4; public static final int STRUCTURE_ELEMENT = 5; public static final int TEMPLATE_ELEMENT = 6; public static final int VALUE_ELEMENT = 7; // special elements eliminated during splitting public static final int INCLUDE_ELEMENT = 8; public static final int SPLIT_ELEMENT = 9; public static final int INPUT_ELEMENT = 10; public static final int OUTPUT_ELEMENT = 11; public static final String[] ELEMENT_NAMES = { "binding", "collection", "format", "mapping", "namespace", "structure", "template", "value", "include", "split", "input", "output" }; // // Instance data. /** Element type. */ private final int m_type; /** Comment associated with element. */ private String m_comment; /** * Constructor. * * @param type element type code */ protected ElementBase(int type) { m_type = type; } /** * Get element type. * * @return type code for this element */ public final int type() { return m_type; } /** * Get element name. * * @return type code for this element */ public final String name() { return ELEMENT_NAMES[m_type]; } /** * Get element comment. * * @return comment for this element */ public final String getComment() { return m_comment; } /** * Set element comment. * * @param text comment for this element */ public final void setComment(String text) { m_comment = text; } /** * Validate attributes of element. This is designed to be called during * unmarshalling as part of the pre-set method processing when a subclass * instance is being created. * * @param ictx unmarshalling context * @param attrs attributes array */ protected void validateAttributes(IUnmarshallingContext ictx, StringArray attrs) { // setup for attribute access int count = ictx.getStackDepth(); BindingElement.UnmarshalWrapper wrapper = (BindingElement.UnmarshalWrapper)ictx.getStackObject(count-1); ValidationContext vctx = wrapper.getValidation(); UnmarshallingContext uctx = (UnmarshallingContext)ictx; // loop through all attributes of current element for (int i = 0; i < uctx.getAttributeCount(); i++) { // check if nonamespace attribute is in the allowed set String name = uctx.getAttributeName(i); if (uctx.getAttributeNamespace(i).length() == 0) { if (attrs.indexOf(name) < 0) { vctx.addWarning("Undefined attribute " + name, this); } } } } /** * Prevalidate element information. The prevalidation step is used to * check isolated aspects of an element, such as the settings for enumerated * values on the element and attributes. This empty base class * implementation should be overridden by each subclass that requires * prevalidation handling. * * @param vctx validation context */ public void prevalidate(ValidationContext vctx) {} /** * Validate element information. The validation step is used for checking * the interactions between elements, such as name references to other * elements. The {@link #prevalidate} method will always be called for every * element in the binding definition before this method is called for any * element. This empty base class implementation should be overridden by * each subclass that requires validation handling. * * @param vctx validation context */ public void validate(ValidationContext vctx) {} /** * Simple text representation of binding definition element. This uses the * element name, along with position information if present. * * @return text representation */ public String toString() { StringBuffer buff = new StringBuffer(); buff.append('<'); buff.append(name()); buff.append('>'); buff.append(" element"); if (this instanceof ITrackSource) { ITrackSource track = (ITrackSource)this; int line = track.jibx_getLineNumber(); if (line >= 0) { buff.append(" (line "); buff.append(line); buff.append(", column "); buff.append(track.jibx_getColumnNumber()); String dname = track.jibx_getDocumentName(); if (dname == null) { buff.append(')'); } else { buff.append(" in '"); buff.append(dname); buff.append("')"); } } } return buff.toString(); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/EmptyList.java0000644000175000017500000000734410673571520025040 0ustar moellermoeller/* Copyright (c) 2004-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import java.util.ArrayList; import java.util.Collection; /** * Unmodifiable empty array list. This defines a singleton instance of itself, * which can then be used whereever an empty list is convenient. This class is * required to support methods which return instances of java.util.ArrayList in * order to guarantee random access to the returned list in constant time as * part of the method contract. java.util.Collection.EMPTY_LIST is not an * instance of java.util.ArrayList, so it cannot be used. * * @author Dennis M. Sosnoski */ public class EmptyList extends ArrayList { public static final EmptyList INSTANCE = new EmptyList(); private EmptyList() {} public void add(int index, Object element) { throw new UnsupportedOperationException("List is not modifiable"); } public boolean add(Object o) { throw new UnsupportedOperationException("List is not modifiable"); } public boolean addAll(Collection c) { throw new UnsupportedOperationException("List is not modifiable"); } public boolean addAll(int index, Collection c) { throw new UnsupportedOperationException("List is not modifiable"); } public void ensureCapacity(int minCapacity) { throw new UnsupportedOperationException("List is not modifiable"); } public void clear() { throw new UnsupportedOperationException("List is not modifiable"); } public Object remove(int index) { throw new UnsupportedOperationException("List is not modifiable"); } public boolean remove(Object o) { throw new UnsupportedOperationException("List is not modifiable"); } protected void removeRange(int fromIndex, int toIndex) { throw new UnsupportedOperationException("List is not modifiable"); } public Object set(int index, Object element) { throw new UnsupportedOperationException("List is not modifiable"); } public void trimToSize() { throw new UnsupportedOperationException("List is not modifiable"); } public boolean removeAll(Collection c) { throw new UnsupportedOperationException("List is not modifiable"); } public boolean retainAll(Collection c) { throw new UnsupportedOperationException("List is not modifiable"); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/FormatDefaults.java0000644000175000017500000001113711002542656026014 0ustar moellermoeller/* * Copyright (c) 2008, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; /** * Default <format> definitions. * * @author Dennis M. Sosnoski */ public abstract class FormatDefaults { /** Default format definitions. */ public static final FormatElement[] s_defaultFormats = { buildFormat("byte.default", "byte", true, "org.jibx.runtime.Utility.serializeByte", "org.jibx.runtime.Utility.parseByte", "0"), buildFormat("char.default", "char", true, "org.jibx.runtime.Utility.serializeChar", "org.jibx.runtime.Utility.parseChar", "0"), buildFormat("double.default", "double", true, "org.jibx.runtime.Utility.serializeDouble", "org.jibx.runtime.Utility.parseDouble", "0.0"), buildFormat("float.default", "float", true, "org.jibx.runtime.Utility.serializeFloat", "org.jibx.runtime.Utility.parseFloat", "0.0"), buildFormat("int.default", "int", true, "org.jibx.runtime.Utility.serializeInt", "org.jibx.runtime.Utility.parseInt", "0"), buildFormat("long.default", "long", true, "org.jibx.runtime.Utility.serializeLong", "org.jibx.runtime.Utility.parseLong", "0"), buildFormat("short.default", "short", true, "org.jibx.runtime.Utility.serializeShort", "org.jibx.runtime.Utility.parseShort", "0"), buildFormat("boolean.default", "boolean", true, "org.jibx.runtime.Utility.serializeBoolean", "org.jibx.runtime.Utility.parseBoolean", "false"), buildFormat("Date.default", "java.util.Date", true, "org.jibx.runtime.Utility.serializeDateTime", "org.jibx.runtime.Utility.deserializeDateTime", null), //#!j2me{ buildFormat("SqlDate.default", "java.sql.Date", true, "org.jibx.runtime.Utility.serializeSqlDate", "org.jibx.runtime.Utility.deserializeSqlDate", null), buildFormat("SqlTime.default", "java.sql.Time", true, "org.jibx.runtime.Utility.serializeSqlTime", "org.jibx.runtime.Utility.deserializeSqlTime", null), buildFormat("SqlTimestamp.default", "java.sql.Timestamp", true, "org.jibx.runtime.Utility.serializeTimestamp", "org.jibx.runtime.Utility.deserializeTimestamp", null), //#j2me} buildFormat("byte-array.default", "byte[]", true, "org.jibx.runtime.Utility.serializeBase64", "org.jibx.runtime.Utility.deserializeBase64", null), buildFormat("String.default", "java.lang.String", true, null, null, null), buildFormat("Object.default", "java.lang.Object", true, null, null, null) }; /** * Default format builder. * * @param name * @param type * @param use * @param sname * @param dname * @param dflt * @return constructed format */ private static FormatElement buildFormat(String name, String type, boolean use, String sname, String dname, String dflt) { FormatElement format = new FormatElement(); format.setLabel(name); format.setTypeName(type); format.setDefaultFormat(use); format.setSerializerName(sname); format.setDeserializerName(dname); format.setDefaultText(dflt); return format; } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/FormatElement.java0000644000175000017500000002521610752421640025641 0ustar moellermoeller/* Copyright (c) 2004-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.QName; /** * Model component for format element. This element defines conversion to * and from simple unstructured text representations. * * @author Dennis M. Sosnoski * @version 1.0 */ public class FormatElement extends ElementBase { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "label", "type" }, StringAttributes.s_allowedAttributes); /** Format label. */ private String m_label; /** Format qualified name. */ private QName m_qname; /** Default format for type flag. */ private boolean m_isDefault; /** Name of value type. */ private String m_typeName; /** Value type information. */ private IClass m_type; /** String attributes information for value. */ private StringAttributes m_stringAttrs; /** * Constructor. */ public FormatElement() { super(FORMAT_ELEMENT); m_stringAttrs = new StringAttributes(); } /** * Get format label. * * @return format label (null if none) */ public String getLabel() { return m_label; } /** * Set format label. This method changes the qualified name to match the * label. * * @param label format label (null if none) */ public void setLabel(String label) { m_label = label; m_qname = (label == null) ? null : new QName(label); } /** * Get format qualified name. * * @return format qualified name (null if none) */ public QName getQName() { return m_qname; } /** * Set format qualified name. This method changes the label value to match * the qualified name. * * @param qname format qualified name (null if none) */ public void setQName(QName qname) { m_qname = qname; m_label = (qname == null) ? null : qname.toString(); } /** * Check if default format for type. * * @return true if default for type, false if not */ public boolean isDefaultFormat() { return m_isDefault; } /** * Set default format for type. * * @param dflt true if default for type, false if * not */ public void setDefaultFormat(boolean dflt) { m_isDefault = dflt; } /** * Get value type. This method is only usable after a * call to {@link #validate}. * * @return default value object */ public IClass getType() { return m_type; } /** * Get value type name. * * @return value type name */ public String getTypeName() { return m_typeName; } /** * Set value type name. * * @param value type name */ public void setTypeName(String value) { m_typeName = value; } // // String attribute delegate methods /** * Get default value text. * * @return default value text */ public String getDefaultText() { return m_stringAttrs.getDefaultText(); } /** * Get default value. This call is only meaningful after validation. * * @return default value object */ public Object getDefault() { return m_stringAttrs.getDefault(); } /** * Set default value text. * * @param value default value text */ public void setDefaultText(String value) { m_stringAttrs.setDefaultText(value); } /** * Get enum value method information. This method is only usable after a * call to {@link #validate(ValidationContext)}. * * @return enum value method information (or null if none) */ public IClassItem getEnumValue() { return m_stringAttrs.getEnumValue(); } /** * Get enum value method name. * * @return enum value method name (or null if none) */ public String getEnumValueName() { return m_stringAttrs.getEnumValueName(); } /** * Set enum value method name. * * @param name enum value method name (null if none) */ public void setEnumValueName(String name) { m_stringAttrs.setEnumValueName(name); } /** * Get serializer name. * * @return fully qualified class and method name for serializer (or * null if none) */ public String getSerializerName() { return m_stringAttrs.getSerializerName(); } /** * Get serializer method information. This call is only meaningful after * validation. * * @return serializer information (or null if none) */ public IClassItem getSerializer() { return m_stringAttrs.getSerializer(); } /** * Set serializer method name. * * @param fully qualified class and method name for serializer */ public void setSerializerName(String name) { m_stringAttrs.setSerializerName(name); } /** * Get deserializer name. * * @return fully qualified class and method name for deserializer (or * null if none) */ public String getDeserializerName() { return m_stringAttrs.getDeserializerName(); } /** * Get deserializer method information. This call is only meaningful after * validation. * * @return deserializer information (or null if none) */ public IClassItem getDeserializer() { return m_stringAttrs.getDeserializer(); } /** * Set deserializer method name. * * @param fully qualified class and method name for deserializer */ public void setDeserializerName(String name) { m_stringAttrs.setDeserializerName(name); } /** * Get base format information. This method is only usable after a * call to {@link #validate}. * * @return base format element (or null if none) */ public FormatElement getBaseFormat() { return m_stringAttrs.getBaseFormat(); } // // Validation methods /** * JiBX access method to set format label as qualified name. * * @param label format label text (null if none) * @param ictx unmarshalling context * @throws JiBXException on deserialization error */ private void setQualifiedLabel(String label, IUnmarshallingContext ictx) throws JiBXException { setQName(QName.deserialize(label, ictx)); } /** * JiBX access method to get format label as qualified name. * * @param ictx marshalling context * @return format label text (null if none) * @throws JiBXException on deserialization error */ private String getQualifiedLabel(IMarshallingContext ictx) throws JiBXException { return QName.serialize(getQName(), ictx); } /** * Make sure all attributes are defined. * * @param uctx unmarshalling context * @exception JiBXException on unmarshalling error */ private void preSet(IUnmarshallingContext uctx) throws JiBXException { validateAttributes(uctx, s_allowedAttributes); } /** * Set default flag based on whether name supplied or not. * TODO: use explicit flag for 2.0 */ private void postSet() { m_isDefault = m_label == null; } /** * Prevalidate attributes of element in isolation. Note that this adds the * format information to the context, which is necessary because the string * attributes for values need to have access to the format information for * their own prevalidation. This is the only type of registration which is * done during the prevalidation pass. * * @param vctx validation context */ public void prevalidate(ValidationContext vctx) { // prevalidate this format if (m_typeName != null) { m_type = vctx.getClassInfo(m_typeName); if (m_type != null) { m_stringAttrs.setType(m_type); m_stringAttrs.prevalidate(vctx); } else { vctx.addFatal("Unable to find type " + m_typeName); } } else { vctx.addFatal("Missing required type name"); } // now try adding to context (except when run during setup) - kludgy if (vctx.getParentElement() != null) { vctx.getFormatDefinitions().addFormat(this, vctx); } super.prevalidate(vctx); } /* (non-Javadoc) * @see org.jibx.binding.model.ElementBase#validate(org.jibx.binding.model.ValidationContext) */ public void validate(ValidationContext vctx) { m_stringAttrs.validate(vctx); super.validate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/IClass.java0000644000175000017500000002073610756324254024266 0ustar moellermoeller/* Copyright (c) 2004-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import org.jibx.binding.classes.ClassFile; /** * Interface for class file information. Provides access to class field and * method information. * * @author Dennis M. Sosnoski */ public interface IClass { /** * Get class file information. * TODO: eliminate this sucker * * @return class file information */ public ClassFile getClassFile(); /** * Get fully qualified class name. * * @return fully qualified name for class */ public String getName(); /** * Get signature for class as type. * * @return signature for class used as type */ public String getSignature(); /** * Get package name. * * @return package name for class */ public String getPackage(); /** * Get superclass. * * @return superclass information */ public IClass getSuperClass(); /** * Get names of all interfaces implemented directly by class. * * @return names of all interfaces implemented directly by class */ public String[] getInterfaces(); /** * Get signatures for all types of which instances of this type are * instances. * * @return all signatures suppored by instances */ public String[] getInstanceSigs(); /** * Check if class implements an interface. * * @param sig signature of interface to be checked * @return true if interface is implemented by class, * false if not */ public boolean isImplements(String sig); /** * Check if class is abstract. * * @return true if class is abstract, false if not */ public boolean isAbstract(); /** * Check if class is an interface. * * @return true if class is an interface, false if * not */ public boolean isInterface(); /** * Check if class is modifiable. * * @return true if class is modifiable, false if * not */ public boolean isModifiable(); /** * Check if another class is a superclass of this one. * * @param name potential superclass to be checked * @return true if named class is a superclass of this one, * false if not */ public boolean isSuperclass(String name); /** * Get information for field. This only checks for fields that are actually * members of the class (not superclasses). * TODO: make this work with both static and member fields * * @param name field name * @return field information, or null if field not found */ public IClassItem getDirectField(String name); /** * Get information for field. If the field is not found directly, * superclasses are checked for inherited fields matching the supplied name. * TODO: make this work with both static and member fields * * @param name field name * @return field information, or null if field not found */ public IClassItem getField(String name); /** * Get information for best matching method. This tries to find a method * which matches the specified name, return type, and argument types. If an * exact match is not found it looks for a method with a return type that * is extended or implemented by the specified type and arguments that are * extended or implemented by the specified types. If no match is found for * this class superclasses are checked. * TODO: make this work with both static and member methods * * @param name method name * @param type return value type name (null if indeterminant) * @param args argument value type names * @return method information, or null if method not found */ public IClassItem getBestMethod(String name, String type, String[] args); /** * Get information for method without respect to potential trailing * arguments or return value. If the method is not found directly, * superclasses are checked for inherited methods matching the supplied * name. This compares the supplied partial signature against the actual * method signature, and considers it a match if the actual sigature starts * with the supplied signature. * TODO: make this work with both static and member methods * * @param name method name * @param sig partial method signature to be matched * @return method information, or null if method not found */ public IClassItem getMethod(String name, String sig); /** * Get information for method matching one of several possible signatures. * If a match is not found directly, superclasses are checked for inherited * methods matching the supplied name and signatures. The signature * variations are checked in the order supplied. * TODO: make this work with both static and member methods * * @param name method name * @param sigs possible signatures for method (including return type) * @return method information, or null if method not found */ public IClassItem getMethod(String name, String[] sigs); /** * Get information for initializer. Only the class itself is checked for an * initializer matching the argument list signature. * * @param sig encoded argument list signature * @return method information, or null if method not found */ public IClassItem getInitializerMethod(String sig); /** * Get information for static method without respect to return value. Only * the class itself is checked for a method matching the supplied name and * argument list signature. * * @param name method name * @param sig encoded argument list signature * @return method information, or null if method not found */ public IClassItem getStaticMethod(String name, String sig); /** * Check accessible method. Check if a field or method in another class is * accessible from within this class. * * @param item field or method information * @return true if accessible, false if not */ public boolean isAccessible(IClassItem item); /** * Check if a value of this type can be directly assigned to another type. * This is basically the equivalent of the instanceof operator. * * @param other type to be assigned to * @return true if assignable, false if not */ public boolean isAssignable(IClass other); /** * Load class in executable form. * * @return loaded class, or null if unable to load */ public Class loadClass(); /** * Get all methods of class. * * @return methods */ public IClassItem[] getMethods(); /** * Get all fields of class. * * @return fields */ public IClassItem[] getFields(); /** * Get the JavaDoc comment for this class. * * @return comment text, or null if none or no source available */ public String getJavaDoc(); /** * Get the locator which provided this class. * * @return locator */ public IClassLocator getLocator(); }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/IClassItem.java0000644000175000017500000001131610611640402025061 0ustar moellermoeller/* Copyright (c) 2004-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; /** * Interface for field or method information. Provides the information needed * for access to the item. * * @author Dennis M. Sosnoski * @version 1.0 */ public interface IClassItem { /** * Get owning class information. * * @return owning class information */ public IClass getOwningClass(); /** * Get item name. * * @return item name */ public String getName(); /** * Get item JavaDoc description, if available. * * @return non-empty JavaDoc text (null if not available) */ public String getJavaDoc(); /** * Get item type as fully qualified class name. * * @return item type name */ public String getTypeName(); /** * Get return JavaDoc description for method, if available. * * @return non-empty JavaDoc text (null if not available) */ public String getReturnJavaDoc(); /** * Get number of arguments for method. * * @return argument count for method, or -1 if not a method */ public int getArgumentCount(); /** * Get argument type as fully qualified class name. This method will throw a * runtime exception if called on a field. * * @param index argument number * @return argument type name */ public String getArgumentType(int index); /** * Get method parameter name, if available. This method will throw a * runtime exception if called on a field. * * @param index parameter number * @return parameter name (null if not available) */ public String getParameterName(int index); /** * Get method parameter JavaDoc description, if available. This method will * throw a runtime exception if called on a field. * * @param index parameter number * @return non-empty JavaDoc text (null if not available) */ public String getParameterJavaDoc(int index); /** * Get access flags. * * @return flags for access type of field or method */ public int getAccessFlags(); /** * Get field or method signature. * * @return encoded method signature */ public String getSignature(); /** * Check if item is a method. * * @return true if a method, false if a field */ public boolean isMethod(); /** * Check if item is an initializer. * * @return true if an initializer, false if a * field or normal method */ public boolean isInitializer(); /** * Get names of exceptions thrown by method. * * @return array of exceptions thrown by method, or null if * a field */ public String[] getExceptions(); /** * Get method throws JavaDoc description, if available. This method will * throw a runtime exception if called on a field. * * @param index exception index (into array returned by * {@link #getExceptions()} * @return non-empty JavaDoc text (null if not available) */ public String getExceptionJavaDoc(int index); /** * Get the generics signature information for item. * * @return generics signature (null if none) */ public String getGenericsSignature(); }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/IClassLocator.java0000644000175000017500000000364510602535544025606 0ustar moellermoeller/* Copyright (c) 2004-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; /** * Locator for class information. Looks up classes using whatever method is * appropriate for the usage environment. * * @author Dennis M. Sosnoski */ public interface IClassLocator { /** * Get class information. * * @param name fully-qualified name of class to be found * @return class information, or null if class not found */ public IClass getClassInfo(String name); }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/IComponent.java0000644000175000017500000000736110264375314025157 0ustar moellermoeller/* Copyright (c) 2004-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; /** * Child component interface definition. This is the basic interface implemented * by every binding definition element that actually participates in the nested * structure of a binding (as opposed to elements such as format * elements, which are simply convenience shortcuts). It defines the hooks used * to handle structure validation of a binding definition model. * * @author Dennis M. Sosnoski * @version 1.0 */ public interface IComponent { /** * Check if component is an optional item. * * @return true if optional, false if required */ public boolean isOptional(); /** * Check if component defines one or more attribute values of the * containing element. This method is only valid after the call to {@link * setLinkages}. * * @return true if one or more attribute values defined for * containing element, false if not */ public boolean hasAttribute(); /** * Check if component defines one or more elements or text values as * children of the containing element. This method is only valid after the * call to {@link setLinkages}. * * @return true if one or more content values defined * for containing element, false if not */ public boolean hasContent(); /** * Check if component has a name. * * @return true if component has a name, false if * not */ public boolean hasName(); /** * Get name. * * @return name text */ public String getName(); /** * Get specified namespace URI. * * @return namespace URI (null if not set) */ public String getUri(); /** * Get value type information. This call is only meaningful after * prevalidation. * * @return type information */ public IClass getType(); /** * Check if this structure implicitly uses the containing object. This call * is only meaningful after prevalidation. * * @return true if using the containing object, * false if own object */ public boolean isImplicit(); }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/IncludeElement.java0000644000175000017500000001233410602537500025766 0ustar moellermoeller/* Copyright (c) 2004-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import java.io.IOException; import java.net.URL; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; /** * Model component for include element of binding definition. During * prevalidation this reads the included binding definition. All further * processing of the included components needs to be handled directly by the * tree walking code in {@link org.jibx.binding.model.TreeContext}, since the * components of the included binding need to be treated as though they were * direct children of the container of this element (and accessed in the * appropriate order). * * @author Dennis M. Sosnoski * @version 1.0 */ public class IncludeElement extends NestingElementBase { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "path" }); /** Path to included binding definition. */ private String m_includePath; /** Object model for included binding. */ private BindingElement m_binding; /** * Constructor. */ public IncludeElement() { super(INCLUDE_ELEMENT); } /** * Set path to included binding. * * @param path */ public void setIncludePath(String path) { m_includePath = path; } /** * Get path to included binding. * * @return */ public String getIncludePath() { return m_includePath; } /** * Get the included binding model. This call is only valid after * prevalidation. * * @return binding element, or null if redundant include */ public BindingElement getBinding() { return m_binding; } // // Validation methods /** * Make sure all attributes are defined. * * @param uctx unmarshalling context * @exception JiBXException on unmarshalling error */ private void preSet(IUnmarshallingContext uctx) throws JiBXException { validateAttributes(uctx, s_allowedAttributes); } /* (non-Javadoc) * @see org.jibx.binding.model.ElementBase#prevalidate(org.jibx.binding.model.ValidationContext) */ public void prevalidate(ValidationContext vctx) { if (m_includePath == null) { vctx.addFatal("No include path specified"); } else { try { // locate the innermost binding element int limit = vctx.getNestingDepth(); BindingElement root = null; for (int i = 1; i < limit; i++) { ElementBase parent = vctx.getParentElement(i); if (parent instanceof BindingElement) { root = (BindingElement)parent; break; } } if (root == null) { throw new JiBXException("No binding element found"); } // access the included binding as input stream URL base = root.getBaseUrl(); URL url = new URL(base, m_includePath); String path = url.toExternalForm(); BindingElement real = vctx.getBindingRoot(); if (real.addIncludePath(path)) { m_binding = real.getIncludeBinding(url, root, vctx); } } catch (JiBXException e) { vctx.addFatal(e.getMessage()); } catch (IOException e) { vctx.addFatal("Error accessing included binding with path \"" + m_includePath + "\": " + e.getMessage()); } } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/InputElement.java0000644000175000017500000000355510210703670025505 0ustar moellermoeller/* Copyright (c) 2004-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; /** * Model component for input element of binding definition. This is only * used for structuring purposes and doesn't require any actual processing. * * @author Dennis M. Sosnoski * @version 1.0 */ public class InputElement extends NestingElementBase { /** * Constructor. */ public InputElement() { super(INPUT_ELEMENT); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/MappingElement.java0000644000175000017500000003570210756324616026016 0ustar moellermoeller/* Copyright (c) 2004-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import java.util.ArrayList; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.QName; /** * Model component for mapping element of binding definition. * * @author Dennis M. Sosnoski */ public class MappingElement extends TemplateElementBase { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "abstract", "class", "extends", "type-name" }, new StringArray(NameAttributes.s_allowedAttributes, ContainerElementBase.s_allowedAttributes)); // TODO: move "mapping" to TemplateElementBase in 2.0 /** Abstract mapping flag. */ private boolean m_isAbstract; /** Name attributes information for nesting. */ private NameAttributes m_nameAttrs; /** Name of mapped class extended by this mapping. */ private String m_extendsName; /** Type qualified name (defaults to fully-qualified class name in no-namespace namespace). */ private QName m_typeQName; /** Mapping extended by this mapping. */ private MappingElement m_extendsMapping; /** Constructability verified flag. */ private boolean m_constructVerified; /** * Default constructor. */ public MappingElement() { super(MAPPING_ELEMENT); m_nameAttrs = new NameAttributes(); m_topChildren = new ArrayList(); } /** * Check for abstract mapping. * * @return true if abstract, false if not */ public boolean isAbstract() { return m_isAbstract; } /** * Set abstract mapping. * * @param abs true if abstract, false if not */ public void setAbstract(boolean abs) { m_isAbstract = abs; } /** * Get type name. * * @return type name */ public String getTypeName() { return (m_typeQName == null) ? null : m_typeQName.toString(); } /** * Set type name. * * @param name type name */ public void setTypeName(String name) { m_typeQName = new QName(name); } /** * Get type qualified name. * * @return type qualified name */ public QName getTypeQName() { return m_typeQName; } /** * Set type qualified name. * * @param qname type qualified name */ public void setTypeQName(QName qname) { m_typeQName = qname; } /** * Set name of mapped class extended by this one. * * @param name */ public void setExtendsName(String name) { m_extendsName = name; } /** * Get name of mapped class extended by this one. * * @return name */ public String getExtendsName() { return m_extendsName; } /** * Get mapping extended by this one. * * @return mapping extended by this one */ public MappingElement getExtendsMapping() { return m_extendsMapping; } /* (non-Javadoc) * @see org.jibx.binding.model.TemplateElementBase#isDefaultTemplate() */ public boolean isDefaultTemplate() { return m_typeQName == null; } // // Access methods /** * Get name attributes. This is provided for use with the name attributes as * a hash key. * * @return name attributes structure */ public NameAttributes getNameAttributes() { return m_nameAttrs; } // // Name attribute delegate methods /** * Get name. * * @return name text */ public String getName() { return m_nameAttrs.getName(); } /** * Set name. * * @param name text for name */ public void setName(String name) { m_nameAttrs.setName(name); } /** * Get specified namespace URI. * * @return namespace URI (null if not set) */ public String getUri() { return m_nameAttrs.getUri(); } /** * Set namespace URI. * * @param uri namespace URI (null if not set) */ public void setUri(String uri) { m_nameAttrs.setUri(uri); } /** * Get specified namespace prefix. * * @return namespace prefix (null if not set) */ public String getPrefix() { return m_nameAttrs.getPrefix(); } /** * Set namespace prefix. * * @param prefix namespace prefix (null if not set) */ public void setPrefix(String prefix) { m_nameAttrs.setPrefix(prefix); } /** * Get effective namespace information. This call is only meaningful after * validation. * * @return effective namespace information */ public NamespaceElement getNamespace() { return m_nameAttrs.getNamespace(); } // // Validation methods /** * JiBX access method to set mapping type name as qualified name. * * @param text mapping name text (null if none) * @param ictx unmarshalling context * @throws JiBXException on deserialization error */ private void setQualifiedTypeName(String text, IUnmarshallingContext ictx) throws JiBXException { m_typeQName = QName.deserialize(text, ictx); } /** * JiBX access method to get mapping type name as qualified name. * * @param ictx marshalling context * @return mapping type name text (null if none) * @throws JiBXException on deserialization error */ private String getQualifiedTypeName(IMarshallingContext ictx) throws JiBXException { return QName.serialize(m_typeQName, ictx); } /** * Verify that instances of the mapped class can be constructed. This * method may be called during the {@link #validate(ValidationContext)} * processing of other elements. If this mapping has any extensions, the * check is ignored. * TODO: check that at least one of the extensions can be created * * @param vctx */ public void verifyConstruction(ValidationContext vctx) { if (!m_constructVerified && getExtensionTypes().size() == 0) { verifyConstruction(vctx, getHandledClass()); } } /** * Make sure all attributes are defined. * * @param uctx unmarshalling context * @exception JiBXException on unmarshalling error */ private void preSet(IUnmarshallingContext uctx) throws JiBXException { validateAttributes(uctx, s_allowedAttributes); } /* (non-Javadoc) * @see org.jibx.binding.model.ElementBase#prevalidate(org.jibx.binding.model.ValidationContext) */ public void prevalidate(ValidationContext vctx) { m_nameAttrs.prevalidate(vctx); if (m_isAbstract) { if (m_typeQName != null && m_nameAttrs.getName() != null) { vctx.addError("Type name cannot be used with an element name"); } if (isNillable()) { vctx.addError ("nillable='true' cannot be used on an abstract mapping"); } } else { if (m_nameAttrs.getName() == null) { if ((vctx.isInBinding() && getUnmarshallerName() == null) || (vctx.isOutBinding() && getMarshallerName() == null)) { vctx.addError ("Non-abstract mapping must define an element name"); } if (isNillable()) { vctx.addError ("nillable='true' cannot be used without an element name"); } } if (m_typeQName != null) { vctx.addError ("Type name can only be used with an abstract mapping"); } } super.prevalidate(vctx); } /* (non-Javadoc) * @see org.jibx.binding.model.ElementBase#validate(org.jibx.binding.model.ValidationContext) */ public void validate(ValidationContext vctx) { m_nameAttrs.validate(vctx); // check use of text values in children of structure with name SequenceVisitor visitor = new SequenceVisitor(null, vctx); TreeContext tctx = vctx.getChildContext(); tctx.tourTree(this, visitor); // make sure we can construct instances of concrete mapped class if (!m_isAbstract) { verifyConstruction(vctx, getHandledClass()); m_constructVerified = true; } // check for class that probably should extend another mapped class if (m_extendsName == null) { if (!m_isAbstract) { // first check ancestor classes for ones with specific mappings IClass sclass = getHandledClass(); DefinitionContext defc = vctx.getCurrentDefinitions(); while ((sclass = sclass.getSuperClass()) != null) { TemplateElementBase stmpl = defc.getSpecificTemplate(sclass.getName()); if (stmpl != null) { if (stmpl instanceof MappingElement) { MappingElement smap = (MappingElement)stmpl; if (smap.getExtensionTypes().size() > 0) { vctx.addWarning("Class " + getClassName() + " extends " + smap.getClassName() + " which has a base mapping with extensions, but this mapping does not extend it"); } } break; } } // next check interfaces for ones with specific mappings String[] interfaces = getHandledClass().getInterfaces(); for (int i = 0; i < interfaces.length; i++) { String iname = interfaces[i]; TemplateElementBase itmpl = defc.getSpecificTemplate(iname); if (itmpl != null) { if (itmpl instanceof MappingElement) { MappingElement smap = (MappingElement)itmpl; if (smap.getExtensionTypes().size() > 0) { vctx.addWarning("Class " + getClassName() + " implements " + iname + " which has a base mapping with extensions, but this mapping does not extend it"); } } break; } } } } else { if (m_extendsName.equals(getClassName())) { vctx.addError("Mapping cannot extend itself"); } if (m_isAbstract && getExtensionTypes().size() == 0) { vctx.addWarning("Only concrete mappings should be 'leaf' mappings for extensions; you should either remove 'extends' attribute or add concrete extension mappings for this abstract mapping"); } } // run base class validation super.validate(vctx); } /** * Special validation method to link extension mappings to base mappings. * This is called as a special step following registration, so that the * normal validation pass can make use of the linkage information. * * @param vctx validation context */ public void validateExtension(ValidationContext vctx) { if (m_extendsName != null) { // find the base class mapping TemplateElementBase base = vctx.getDefinitions().getSpecificTemplate(m_extendsName); if (base instanceof MappingElement) { if (base != this) { // check base class using custom marshaller/unmarshaller MappingElement mbase = (MappingElement)base; if (mbase.getMarshaller() != null || mbase.getUnmarshaller() != null) { vctx.addError("Cannot extend a mapping using custom " + "marshaller/unmarshaller"); } // add reference to base class mbase.addExtensionType(this); m_extendsMapping = mbase; // check for circular references MappingElement mark = this; boolean skip = true; while (mbase != null) { if (mbase == mark) { vctx.addError("Circular 'extends' reference chain", mbase); break; } else if (skip) { skip = false; } else { mark = mbase; skip = true; } mbase = mbase.getExtendsMapping(); } } } else { vctx.addFatal("No mapping found for class " + m_extendsName); } } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/ModelVisitor.java0000644000175000017500000002526310410213252025506 0ustar moellermoeller/* Copyright (c) 2004-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; /** * Binding model visitor base class. This works with the {@link * org.jibx.binding.model.TreeContext} class for handling tree-based * operations on the binding definition. Subclasses can override any or all of * the base class visit and exit methods, including both those for abstract base * classes and those for concrete classes, but should normally call the base * class implementation of the method in order to implement the class * inheritance hierarchy handling. Elements in the binding definition are always * visited in tree order (down and across). * * @author Dennis M. Sosnoski * @version 1.0 */ public abstract class ModelVisitor { // // Visit methods for base classes /** * Visit element. This method will be called for every element in the model. * * @param node element being visited * @return true if children to be processed, false * if not */ public boolean visit(ElementBase node) { return true; } /** * Visit nesting element. This method will be called for any form of nesting * element. * * @param node nesting element being visited * @return true if children to be processed, false * if not */ public boolean visit(NestingElementBase node) { return visit((ElementBase)node); } /** * Visit container element. This method will be called for any form of * container element. * * @param node container element being visited * @return true if children to be processed, false * if not */ public boolean visit(ContainerElementBase node) { return visit((NestingElementBase)node); } /** * Visit structure element. This method will be called for any form of * structure element. * * @param node structure element being visited * @return true if children to be processed, false * if not */ public boolean visit(StructureElementBase node) { return visit((ContainerElementBase)node); } /** * Visit template element. This method will be called for any form of * template element. * * @param node template element being visited * @return true if children to be processed, false * if not */ public boolean visit(TemplateElementBase node) { return visit((ContainerElementBase)node); } // // Visit methods for concrete classes /** * Visit binding element. * * @param node binding element being visited * @return true if children to be processed, false * if not */ public boolean visit(BindingElement node) { return visit((NestingElementBase)node); } /** * Visit collection element. * * @param node collection element being visited * @return true if children to be processed, false * if not */ public boolean visit(CollectionElement node) { return visit((StructureElementBase)node); } /** * Visit format element. * * @param node format element being visited * @return true if children to be processed, false * if not */ public boolean visit(FormatElement node) { return visit((ElementBase)node); } /** * Visit include element. * * @param node include element being visited * @return true if children to be processed, false * if not */ public boolean visit(IncludeElement node) { return visit((ElementBase)node); } /** * Visit input element. * * @param node input element being visited * @return true if children to be processed, false * if not */ public boolean visit(InputElement node) { return visit((NestingElementBase)node); } /** * Visit mapping element. * * @param node mapping element being visited * @return true if children to be processed, false * if not */ public boolean visit(MappingElement node) { return visit((TemplateElementBase)node); } /** * Visit namespace element. * * @param node namespace element being visited * @return true if children to be processed, false * if not */ public boolean visit(NamespaceElement node) { return visit((ElementBase)node); } /** * Visit output element. * * @param node output element being visited * @return true if children to be processed, false * if not */ public boolean visit(OutputElement node) { return visit((NestingElementBase)node); } /** * Visit split element. * * @param node split element being visited * @return true if children to be processed, false * if not */ public boolean visit(SplitElement node) { return visit((NestingElementBase)node); } /** * Visit structure element. * * @param node structure element being visited * @return true if children to be processed, false * if not */ public boolean visit(StructureElement node) { return visit((StructureElementBase)node); } /** * Visit template element. * * @param node template element being visited * @return true if children to be processed, false * if not */ public boolean visit(TemplateElement node) { return visit((TemplateElementBase)node); } /** * Visit value element. * * @param node value element being visited * @return true if children to be processed, false * if not */ public boolean visit(ValueElement node) { return visit((ElementBase)node); } // // Exit methods for base classes /** * Exit any element. * * @param node element being exited */ public void exit(ElementBase node) {} /** * Exit any nesting element. * * @param node nesting element being exited */ public void exit(NestingElementBase node) { exit((ElementBase)node); } /** * Exit any container element. * * @param node container element being exited */ public void exit(ContainerElementBase node) { exit((NestingElementBase)node); } /** * Exit any structure element. * * @param node structure element being exited */ public void exit(StructureElementBase node) { exit((ContainerElementBase)node); } /** * Exit any template element. * * @param node template element being exited */ public void exit(TemplateElementBase node) { exit((NestingElementBase)node); } // // Exit methods for concrete classes /** * Exit binding element. * * @param node binding element being exited */ public void exit(BindingElement node) { exit((NestingElementBase)node); } /** * Exit collection element. * * @param node collection element being exited */ public void exit(CollectionElement node) { exit((StructureElementBase)node); } /** * Exit include element. * * @param node input element being exited */ public void exit(IncludeElement node) { exit((ElementBase)node); } /** * Exit input element. * * @param node input element being exited */ public void exit(InputElement node) { exit((NestingElementBase)node); } /** * Exit mapping element. * * @param node mapping element being exited */ public void exit(MappingElement node) { exit((TemplateElementBase)node); } /** * Exit output element. * * @param node output element being exited */ public void exit(OutputElement node) { exit((NestingElementBase)node); } /** * Exit split element. * * @param node split element being exited */ public void exit(SplitElement node) { exit((NestingElementBase)node); } /** * Exit structure element. * * @param node structure element being exited */ public void exit(StructureElement node) { exit((StructureElementBase)node); } /** * Exit template element. * * @param node template element being exited */ public void exit(TemplateElement node) { exit((TemplateElementBase)node); } /** * Exit value element. * * @param node value element being exited */ public void exit(ValueElement node) { exit((ElementBase)node); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/NameAttributes.java0000644000175000017500000001364310752662244026036 0ustar moellermoeller/* Copyright (c) 2004-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import org.jibx.binding.util.StringArray; import org.jibx.runtime.Utility; /** * Model component for name attribute group in binding definition. * * @author Dennis M. Sosnoski */ public class NameAttributes extends AttributeBase { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "name", "ns" }); // TODO: add "prefix" to set for 2.0 /** Name text. */ private String m_name; /** Namespace URI. */ private String m_uri; /** Namespace prefix. */ private String m_prefix; /** Name represents an attribute flag. */ private boolean m_isAttribute; /** Namespace definition used by this name. */ private NamespaceElement m_namespace; /** * Default constructor. */ public NameAttributes() {} /** * Set flag for an attribute name. This information is necessary for * resolving the namespace definition to be used with a name, but has to be * determined by the element owning this attribute group. It must be set (if * different from the default of false) prior to validation. * * @param isattr flag for name represents an attribute */ public void setIsAttribute(boolean isattr) { m_isAttribute = isattr; } /** * Get flag for an attribute name. * * @return true if an attribute, false if an * element */ public boolean isAttribute() { return m_isAttribute; } /** * Get name. * * @return name text */ public String getName() { return m_name; } /** * Set name. * * @param name text for name */ public void setName(String name) { m_name = name; } /** * Get specified namespace URI. * * @return namespace URI (null if not set) */ public String getUri() { return m_uri; } /** * Set namespace URI. * * @param uri namespace URI (null if not set) */ public void setUri(String uri) { m_uri = uri; } /** * Get specified namespace prefix. * * @return namespace prefix (null if not set) */ public String getPrefix() { return m_prefix; } /** * Set namespace prefix. * * @param prefix namespace prefix (null if not set) */ public void setPrefix(String prefix) { m_prefix = prefix; } /** * Get effective namespace definition. This call can only be used after * validation. * * @return definition for namespace used by this name */ public NamespaceElement getNamespace() { return m_namespace; } // // Overrides of base class methods /* (non-Javadoc) * @see org.jibx.binding.model.AttributeBase#validate(org.jibx.binding.model.ValidationContext) */ public void validate(ValidationContext vctx) { if (m_name != null) { DefinitionContext dctx = null; ElementBase elem = vctx.peekElement(); if (elem instanceof ContainerElementBase) { dctx = ((ContainerElementBase)elem).getDefinitions(); } if (dctx == null) { dctx = vctx.getDefinitions(); } if (m_isAttribute) { m_namespace = dctx.getAttributeNamespace(this); } else { m_namespace = dctx.getElementNamespace(this); } } super.validate(vctx); } /* (non-Javadoc) * @see java.lang.Object#equals(java.lang.Object) */ public boolean equals(Object obj) { if (obj instanceof NameAttributes) { NameAttributes comp = (NameAttributes)obj; if (Utility.safeEquals(m_name, comp.m_name)) { if (m_namespace == null) { return comp.m_namespace == null; } else { return Utility.safeEquals(m_namespace.getUri(), comp.m_namespace.getUri()); } } else { return false; } } else { return false; } } /* (non-Javadoc) * @see java.lang.Object#hashCode() */ public int hashCode() { if (m_uri == null) { return m_name.hashCode(); } else { return m_name.hashCode() + m_uri.hashCode(); } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/NamespaceElement.java0000644000175000017500000001247110434260370026302 0ustar moellermoeller/* Copyright (c) 2004-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import org.jibx.binding.util.StringArray; import org.jibx.runtime.EnumSet; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; /** * Model component for namespace element of binding definition. * * @author Dennis M. Sosnoski * @version 1.0 */ public class NamespaceElement extends ElementBase { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "default", "prefix", "uri" }); // // Enumeration for namespace usage. public static final int NODEFAULT_USAGE = 0; public static final int ELEMENTS_USAGE = 1; public static final int ATTRIBUTES_USAGE = 2; public static final int ALLDEFAULT_USAGE = 3; public static final EnumSet s_defaultEnum = new EnumSet(NODEFAULT_USAGE, new String[] { "none", "elements", "attributes", "all" }); // // Actual instance data /** Default type name. */ private String m_defaultName = s_defaultEnum.getName(NODEFAULT_USAGE); /** Actual selected default. */ private int m_defaultIndex; /** Namespace URI. */ private String m_uri; /** Namespace prefix (may be null, but not ""). */ private String m_prefix; /** * Constructor. */ public NamespaceElement() { super(NAMESPACE_ELEMENT); } /** * Get prefix. * * @return prefix text */ public String getPrefix() { return m_prefix; } /** * Set prefix. * * @param prefix text */ public void setPrefix(String text) { m_prefix = text; } /** * Get namespace URI. * * @return namespace URI (null if no-namespace namespace) */ public String getUri() { return m_uri; } /** * Set namespace URI. * * @param uri namespace URI (null if no-namespace namespace) */ public void setUri(String uri) { m_uri = uri; } /** * Set namespace default type name. * * @param name namespace default type */ public void setDefaultName(String name) { m_defaultName = name; } /** * Get namespace default type name. * * @return namespace default type name */ public String getDefaultName() { return m_defaultName; } /** * Check if default namespace for attributes. This method is only meaningful * after a call to {@link #validate}. * * @return true if default namespace for attributes, * false if not */ public boolean isAttributeDefault() { return m_defaultIndex == ATTRIBUTES_USAGE || m_defaultIndex == ALLDEFAULT_USAGE; } /** * Check if default namespace for elements. This method is only meaningful * after a call to {@link #validate}. * * @return true if default namespace for elements, * false if not */ public boolean isElementDefault() { return m_defaultIndex == ELEMENTS_USAGE || m_defaultIndex == ALLDEFAULT_USAGE; } // // Validation methods /** * Make sure all attributes are defined. * * @param uctx unmarshalling context * @exception JiBXException on unmarshalling error */ private void preSet(IUnmarshallingContext uctx) throws JiBXException { validateAttributes(uctx, s_allowedAttributes); } /** * Prevalidate attributes of element in isolation. * * @param vctx validation context */ public void prevalidate(ValidationContext vctx) { m_defaultIndex = s_defaultEnum.getValue(m_defaultName); if (m_defaultIndex < 0) { vctx.addError("Value \"" + m_defaultName + "\" is not a valid choice for namespace default usage"); } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/NestingAttributes.java0000644000175000017500000000740710602537162026560 0ustar moellermoeller/* Copyright (c) 2004-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import org.jibx.binding.util.StringArray; import org.jibx.runtime.EnumSet; /** * Model component for nesting attribute group in binding definition. * * @author Dennis M. Sosnoski */ public class NestingAttributes extends AttributeBase { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "value-style" }); // // Value set information public static final int ATTRIBUTE_STYLE = 0; public static final int ELEMENT_STYLE = 1; /*package*/ static final EnumSet s_styleEnum = new EnumSet(ATTRIBUTE_STYLE, new String[] { "attribute", "element" }); // // Instance data /** Supplied style name. */ private String m_styleName; /** Actual selected style. */ private int m_styleIndex; /** * Get style string value. * * @return style string value (null if undefined at this level) */ public String getStyleName() { return m_styleName; } /** * Get style value. This method is only usable after a call to {@link * #validate}. * * @return style value */ public int getStyle() { return m_styleIndex; } /** * Set style name. * * @param name style name (null to undefine style at this * level) */ public void setStyleName(String name) { m_styleName = name; } // // Overrides of base class methods /* (non-Javadoc) * @see org.jibx.binding.model.AttributeBase#prevalidate(org.jibx.binding.model.ValidationContext) */ public void prevalidate(ValidationContext vctx) { if (m_styleName == null) { NestingElementBase parent = vctx.getParentElement(); if (parent == null) { m_styleIndex = ELEMENT_STYLE; } else { m_styleIndex = parent.getDefaultStyle(); } } else { int style = s_styleEnum.getValue(m_styleName); if (style < 0) { vctx.addError("Value \"" + m_styleName + "\" is not a valid style"); } else { m_styleIndex = style; } } super.prevalidate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/NestingElementBase.java0000644000175000017500000001270110624255526026614 0ustar moellermoeller/* Copyright (c) 2004-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import java.util.ArrayList; import java.util.Iterator; import org.jibx.binding.util.StringArray; /** * Model component for elements that can contain other component elements. * TODO: The list of child elements here conflicts with that in BindingElement; * should change the type hierarchy to better reflect usage * * @author Dennis M. Sosnoski */ public abstract class NestingElementBase extends ElementBase { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "value-style" }); /** Value style attribute information. */ private NestingAttributes m_nestingAttrs; /** Definition context for this nesting (created by validation). */ private DefinitionContext m_defContext; /** List of child elements. */ private ArrayList m_children; /** * Constructor. * * @param type element type code */ protected NestingElementBase(int type) { super(type); m_nestingAttrs = new NestingAttributes(); m_children = new ArrayList(); } /** * Add child element. * TODO: should be ElementBase argument, but JiBX doesn't allow yet * * @param child element to be added as child of this element */ public final void addChild(Object child) { m_children.add(child); } /** * Get list of child elements. * * @return list of child elements (never null) */ public final ArrayList children() { return m_children; } /** * Get iterator for child elements. * * @return iterator for child elements */ public final Iterator childIterator() { return m_children.iterator(); } /** * Get definition context. * * @return definition context, or null if no definition context * for this element */ public final DefinitionContext getDefinitions() { return m_defContext; } /** * Set definition context. * * @param ctx definition context to be set */ /*package*/ void setDefinitions(DefinitionContext ctx) { m_defContext = ctx; } // // Nesting attribute delegate methods /** * Get style name set on this nesting element. * * @return style string value (null if undefined at this level) */ public String getStyleName() { return m_nestingAttrs.getStyleName(); } /** * Get style value set on this nesting element. This call is only meaningful * after validation. * * @return style value (-1 if undefined at this level) */ public int getStyle() { return m_nestingAttrs.getStyle(); } /** * Set style name on this nesting element. * * @param name style name (null to undefine style at this * level) */ public void setStyleName(String name) { m_nestingAttrs.setStyleName(name); } /** * Get default style value for child components. This call is only * meaningful after validation. * * @return default style value for child components (-1 if not * defined at this level) */ public int getDefaultStyle() { return m_nestingAttrs.getStyle(); } /* (non-Javadoc) * @see org.jibx.binding.model.ElementBase#prevalidate(org.jibx.binding.model.ValidationContext) */ public void prevalidate(ValidationContext vctx) { m_nestingAttrs.prevalidate(vctx); super.prevalidate(vctx); } /* (non-Javadoc) * @see org.jibx.binding.model.ElementBase#validate(org.jibx.binding.model.ValidationContext) */ public void validate(ValidationContext vctx) { if (m_defContext == null) { m_defContext = vctx.getCurrentDefinitions(); } m_nestingAttrs.validate(vctx); super.validate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/ObjectAttributes.java0000644000175000017500000004320610767275736026376 0ustar moellermoeller/* Copyright (c) 2004-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import org.jibx.binding.util.StringArray; /** * Model component for object attribute group in binding definition. * * @author Dennis M. Sosnoski */ public class ObjectAttributes extends AttributeBase { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "create-type", "factory", "marshaller", "nillable", "post-set", "pre-get", "pre-set", "unmarshaller" }); // // Constants and such related to code generation. // recognized marshal hook method (pre-get) signatures. private static final String[] MARSHAL_HOOK_SIGNATURES = { "(Lorg/jibx/runtime/IMarshallingContext;)V", "(Ljava/lang/Object;)V", "()V" }; // recognized factory hook method signatures. private static final String[] FACTORY_HOOK_SIGNATURES = { "(Lorg/jibx/runtime/IUnmarshallingContext;)", "(Ljava/lang/Object;)", "()" }; // recognized unmarshal hook method (pre-set, post-set) signatures. private static final String[] UNMARSHAL_HOOK_SIGNATURES = { "(Lorg/jibx/runtime/IUnmarshallingContext;)V", "(Ljava/lang/Object;)V", "()V" }; // marshaller/unmarshaller definitions private static final String UNMARSHALLER_INTERFACE = "org.jibx.runtime.IUnmarshaller"; private static final String MARSHALLER_INTERFACE = "org.jibx.runtime.IMarshaller"; private static final String UNMARSHALLER_INTERFACETYPE = "Lorg/jibx/runtime/IUnmarshaller;"; private static final String MARSHALLER_INTERFACETYPE = "Lorg/jibx/runtime/IMarshaller;"; // // Instance data. /** Factory method name (fully qualified, including package and class). */ private String m_factoryName; /** Pre-set method name. */ private String m_preSetName; /** Post-set method name. */ private String m_postSetName; /** Pre-get method name. */ private String m_preGetName; /** Object marshaller class name. */ private String m_marshallerName; /** Object unmarshaller class name. */ private String m_unmarshallerName; /** Nillable object flag. */ private boolean m_isNillable; /** Instance type for creation (fully qualified, including package and class). */ private String m_createType; /** Factory method information. */ private IClassItem m_factoryItem; /** Pre-set method information. */ private IClassItem m_preSetItem; /** Post-set method information. */ private IClassItem m_postSetItem; /** Pre-get method information. */ private IClassItem m_preGetItem; /** Object marshaller class. */ private IClass m_marshallerClass; /** Object unmarshaller class. */ private IClass m_unmarshallerClass; /** Class to use for new instance creation. */ private IClass m_createClass; /** * Constructor. */ public ObjectAttributes() {} /** * Get factory method name. * * @return fully-qualified factory class and method name (or * null if none) */ public String getFactoryName() { return m_factoryName; } /** * Get factory method information. This method is only usable after a * call to {@link #prevalidate(ValidationContext)}. * * @return factory method information (or null if none) */ public IClassItem getFactory() { return m_factoryItem; } /** * Set factory method name. * * @param name fully qualified class and method name for object factory */ public void setFactoryName(String name) { m_factoryName = name; } /** * Get pre-set method name. * * @return pre-set method name (or null if none) */ public String getPresetName() { return m_preSetName; } /** * Get pre-set method information. This method is only usable after a * call to {@link #prevalidate(ValidationContext)}. * * @return pre-set method information (or null if none) */ public IClassItem getPreset() { return m_preSetItem; } /** * Set pre-set method name. * * @param name member method name to be called before unmarshalling */ public void setPresetName(String name) { m_preSetName = name; } /** * Get post-set method name. * * @return post-set method name (or null if none) */ public String getPostsetName() { return m_postSetName; } /** * Get post-set method information. This method is only usable after a * call to {@link #prevalidate(ValidationContext)}. * * @return post-set method information (or null if none) */ public IClassItem getPostset() { return m_postSetItem; } /** * Set post-set method name. * * @param name member method name to be called after unmarshalling */ public void setPostsetName(String name) { m_postSetName = name; } /** * Get pre-get method name. * * @return pre-get method name (or null if none) */ public String getPregetName() { return m_preGetName; } /** * Get pre-get method information. This method is only usable after a * call to {@link #prevalidate(ValidationContext)}. * * @return pre-get method information (or null if none) */ public IClassItem getPreget() { return m_preGetItem; } /** * Set pre-get method name. * * @param name member method name to be called before marshalling */ public void setPreget(String name) { m_preGetName = name; } /** * Get marshaller class name. * * @return marshaller class name (or null if none) */ public String getMarshallerName() { return m_marshallerName; } /** * Get marshaller class information. This method is only usable after a * call to {@link #prevalidate(ValidationContext)}. * * @return class information for marshaller (or null if none) */ public IClass getMarshaller() { return m_marshallerClass; } /** * Set marshaller class name. * * @param name class name to be used for marshalling */ public void setMarshallerName(String name) { m_marshallerName = name; } /** * Get unmarshaller class name. * * @return unmarshaller class name (or null if none) */ public String getUnmarshallerName() { return m_unmarshallerName; } /** * Get unmarshaller class information. This method is only usable after a * call to {@link #prevalidate(ValidationContext)}. * * @return class information for unmarshaller (or null if none) */ public IClass getUnmarshaller() { return m_unmarshallerClass; } /** * Set unmarshaller class name. * * @param name class name to be used for unmarshalling */ public void setUnmarshallerName(String name) { m_unmarshallerName = name; } /** * Check if nillable object. * * @return nillable flag */ public boolean isNillable() { return m_isNillable; } /** * Set nillable flag. * * @param nillable flag */ public void setNillable(boolean nillable) { m_isNillable = nillable; } /** * Get type to be used for creating new instance. * * @return class name for type to be created (or null if none) */ public String getCreateType() { return m_createType; } /** * Get new instance creation class information. This method is only usable * after a call to {@link #prevalidate(ValidationContext)}. * * @return class information for type to be created (or null if * none) */ public IClass getCreateClass() { return m_createClass; } /** * Set new instance type class name. * * @param name class name to be used for creating new instance */ public void setCreateType(String name) { m_createType = name; } /* (non-Javadoc) * @see org.jibx.binding.model.AttributeBase#prevalidate(org.jibx.binding.model.ValidationContext) */ public void prevalidate(ValidationContext vctx) { // first check for actual object association IClass iclas; ElementBase element = vctx.getParentElement(0); if (element instanceof StructureElementBase) { if (!((StructureElementBase)element).hasObject()) { if (m_factoryName != null) { vctx.addWarning("No object for structure; factory attribute ignored"); m_factoryName = null; } if (m_preSetName != null) { vctx.addWarning("No object for structure; pre-set attribute ignored"); m_preSetName = null; } if (m_preGetName != null) { vctx.addWarning("No object for structure; pre-get attribute ignored"); m_preGetName = null; } if (m_postSetName != null) { vctx.addWarning("No object for structure; post-set attribute ignored"); m_postSetName = null; } if (m_marshallerName != null) { vctx.addWarning("No object for structure; marshaller attribute ignored"); m_marshallerName = null; } if (m_unmarshallerName != null) { vctx.addWarning("No object for structure; unmarshaller attribute ignored"); m_unmarshallerName = null; } if (m_createType != null) { vctx.addWarning("No object for structure; create-type attribute ignored"); m_createType = null; } if (m_isNillable) { vctx.addError("No object for structure; nillable attribute forbidden"); m_isNillable = false; } return; } else { iclas = ((StructureElementBase)element).getType(); } } else if (element instanceof MappingElement) { iclas = ((MappingElement)element).getHandledClass(); } else { throw new IllegalStateException ("Unknown element for object attributes"); } String type = iclas.getName(); // first check for marshaller and unmarshaller classes if (m_marshallerName != null) { if (vctx.isOutBinding()) { IClass mclas = vctx.getClassInfo(m_marshallerName); if (mclas == null) { vctx.addError("Marshaller class " + m_marshallerName + " not found"); } else if (!mclas.isImplements(MARSHALLER_INTERFACETYPE)) { vctx.addError("Marshaller class " + m_marshallerName + " does not implement interface " + MARSHALLER_INTERFACE); } else { m_marshallerClass = mclas; } } else { vctx.addWarning("marshaller attribute ignored for input-only binding"); } } if (m_unmarshallerName != null) { if (vctx.isInBinding()) { // get the unmarshaller information IClass uclas = vctx.getClassInfo(m_unmarshallerName); if (uclas == null) { vctx.addError("Unmarshaller class " + m_unmarshallerName + " not found"); } else if (!uclas.isImplements(UNMARSHALLER_INTERFACETYPE)) { vctx.addError("Unmarshaller class " + m_unmarshallerName + " does not implement interface " + UNMARSHALLER_INTERFACE); } else { m_unmarshallerClass = uclas; } // check for incompatible attributes if (m_factoryName != null) { vctx.addWarning("unmarshaller supplied, factory attribute ignored"); m_factoryName = null; } if (m_createType != null) { vctx.addWarning ("unmarshaller supplied, create-type attribute ignored"); m_createType = null; } } else { vctx.addWarning("unmarshaller attribute ignored for output-only binding"); } } // make sure both are supplied if either is supplied if (vctx.isInBinding() && vctx.isOutBinding()) { if (m_unmarshallerName != null && m_marshallerName == null) { vctx.addError("Marshaller is required if unmarshaller is supplied"); } else if (m_marshallerName != null && m_unmarshallerName == null) { vctx.addError("Unmarshaller is required if marshaller is supplied"); } } // next check for factory supplied if (m_factoryName != null) { if (vctx.isInBinding()) { // find factory method and verify signature m_factoryItem = ClassUtils.findStaticMethod(m_factoryName, FACTORY_HOOK_SIGNATURES, vctx); if (m_factoryItem == null) { if (m_factoryName.indexOf('.') > 0) { vctx.addError("Static factory method " + m_factoryName + " not found"); } else { vctx.addError("Need class name for static method " + m_factoryName); } } else { String ftype = m_factoryItem.getTypeName(); if (!ClassUtils.isAssignable(ftype, type, vctx) && !ClassUtils.isAssignable(type, ftype, vctx)) vctx.addError("Static factory method " + m_factoryName + " return type is not compatible with " + type); } // check for incompatible attributes if (m_createType != null) { vctx.addWarning("unmarshaller supplied, create-type attribute ignored"); m_createType = null; } } else { vctx.addWarning("factory attribute ignored for output-only binding"); } } // check for create-type attribute if (m_createType != null) { if (vctx.isInBinding()) { // find create type class and verify compatibility m_createClass = vctx.getClassInfo(m_createType); if (m_createClass == null) { vctx.addError("create-type class " + m_createType + " not found"); } else { if (!ClassUtils.isAssignable(m_createType, type, vctx) && !ClassUtils.isAssignable(type, m_createType, vctx)) vctx.addError("create-type " + m_createType + " is not compatible with expected type " + type); } } else { vctx.addWarning ("create-type attribute ignored for output-only binding"); } } // handle pre-set, post-set, and pre-get methods if (vctx.isInBinding()) { if (m_preSetName != null) { m_preSetItem = iclas.getMethod(m_preSetName, UNMARSHAL_HOOK_SIGNATURES); if (m_preSetItem == null) { vctx.addError("Nonstatic pre-set method " + m_preSetName + " not found"); } } if (m_postSetName != null) { m_postSetItem = iclas.getMethod(m_postSetName, UNMARSHAL_HOOK_SIGNATURES); if (m_postSetItem == null) { vctx.addError("Nonstatic post-set method " + m_postSetName + " not found"); } } } if (vctx.isOutBinding()) { if (m_preGetName != null) { m_preGetItem = iclas.getMethod(m_preGetName, MARSHAL_HOOK_SIGNATURES); if (m_preGetItem == null) { vctx.addError("Nonstatic pre-get method " + m_preGetName + " not found"); } } } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/OutputElement.java0000644000175000017500000000356110210703670025703 0ustar moellermoeller/* Copyright (c) 2004-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; /** * Model component for output element of binding definition. This is only * used for structuring purposes and doesn't require any actual processing. * * @author Dennis M. Sosnoski * @version 1.0 */ public class OutputElement extends NestingElementBase { /** * Constructor. */ public OutputElement() { super(OUTPUT_ELEMENT); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/PropertyAttributes.java0000644000175000017500000004337510756324440027004 0ustar moellermoeller/* Copyright (c) 2004-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import java.util.ArrayList; import org.jibx.binding.util.StringArray; import org.jibx.runtime.EnumSet; /** * Model component for property attribute group in binding definition. * * @author Dennis M. Sosnoski */ public class PropertyAttributes extends AttributeBase { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "field", "get-method", "set-method", "test-method", "type", "usage" }); // recognized test-method signatures. private static final String[] TEST_METHOD_SIGNATURES = { "(Lorg/jibx/runtime/IMarshallingContext;)Z", "()Z" }; // recognized get-method signatures. private static final String[] GET_METHOD_SIGNATURES = { "(Lorg/jibx/runtime/IMarshallingContext;)", "()" }; // // Value set information public static final int REQUIRED_USAGE = 0; public static final int OPTIONAL_USAGE = 1; public static final int OPTIONAL_IN_USAGE = 2; public static final int OPTIONAL_OUT_USAGE = 3; private static final EnumSet s_usageEnum = new EnumSet(REQUIRED_USAGE, new String[] { "required", "optional", "opt-in", "opt-out" }); // // Instance data. /** Usage type code. */ private int m_usage; /** Usage name. */ private String m_usageName = s_usageEnum.getName(REQUIRED_USAGE); /** Property type name. */ private String m_declaredType; /** Property field name. */ private String m_fieldName; /** Test method name. */ private String m_testName; /** Get method name. */ private String m_getName; /** Set method name. */ private String m_setName; /** Type for value loaded on stack. */ private IClass m_getType; /** Type for value stored from stack. */ private IClass m_setType; /** Property type information. */ private IClass m_type; /** Property field information. */ private IClassItem m_fieldItem; /** Test method information. */ private IClassItem m_testItem; /** Get method information. */ private IClassItem m_getItem; /** Set method information. */ private IClassItem m_setItem; /** Flag for no actual property definition. */ private boolean m_isImplicit; /** * Get usage name. * * @return usage name */ public String getUsageName() { return s_usageEnum.getName(m_usage); } /** * Get usage value. This method is only usable after a call to {@link * #prevalidate(ValidationContext)}. * * @return usage value */ public int getUsage() { return m_usage; } /** * Set usage name. * * @param name usage name */ public void setUsageName(String name) { m_usageName = name; } /** * Set usage value. * * @param use value */ public void setUsage(int use) { m_usage = use; m_usageName = s_usageEnum.getName(use); } /** * Check if property is defined. This method is only usable after a call to * {@link #prevalidate(ValidationContext)}. * * @return true if property defined, false if not */ public boolean hasProperty() { return !m_isImplicit && m_type != null; } /** * Get declared type name. * * @return declared type name (or null if none) */ public String getDeclaredType() { return m_declaredType; } /** * Set declared type name. * * @param type declared type name (or null if none) */ public void setDeclaredType(String type) { m_declaredType = type; } /** * Get field name. * * @return field name (or null if none) */ public String getFieldName() { return m_fieldName; } /** * Get field information. This method is only usable after a call to {@link * #prevalidate(ValidationContext)}. * * @return field information (or null if none) */ public IClassItem getField() { return m_fieldItem; } /** * Set field name. * * @param field field name (or null if none) */ public void setFieldName(String field) { m_fieldName = field; } /** * Get test method name. * * @return test method name (or null if none) */ public String getTestName() { return m_testName; } /** * Get test method information. This method is only usable after a call to * {@link #prevalidate(ValidationContext)}. * * @return test method information (or null if none) */ public IClassItem getTest() { return m_testItem; } /** * Set test method name. * * @param test test method name (or null if none) */ public void setTestName(String test) { m_testName = test; } /** * Get get method name. * * @return get method name (or null if none) */ public String getGetName() { return m_getName; } /** * Get get method information. This method is only usable after a call to * {@link #prevalidate(ValidationContext)}. * * @return get method information (or null if none) */ public IClassItem getGet() { return m_getItem; } /** * Get type for value loaded to stack. This method is only usable after a * call to {@link #prevalidate(ValidationContext)}. * * @return get value type (or null if none) */ public IClass getGetType() { return m_getType; } /** * Set get method name. * * @param get get method name (or null if none) */ public void setGetName(String get) { m_getName = get; } /** * Get set method name. * * @return set method name (or null if none) */ public String getSetName() { return m_setName; } /** * Get set method information. This method is only usable after a call to * {@link #prevalidate(ValidationContext)}. * * @return set method information (or null if none) */ public IClassItem getSet() { return m_setItem; } /** * Get type for value stored from stack. This method is only usable after a * call to {@link #prevalidate(ValidationContext)}. * * @return set value type (or null if none) */ public IClass getSetType() { return m_setType; } /** * Set set method name. * * @param set set method name (or null if none) */ public void setSetName(String set) { m_setName = set; } /** * Get type information. This method is only usable after a call to {@link * #prevalidate(ValidationContext)}. * * @return type information (or null if none) */ public IClass getType() { return m_type; } /** * Check if empty property definition. Empty property definitions occur * because every collection, structure, and value * element has associated property attributes but these may not actually * reference a property (when using the containing object). This call is * only meaningful after prevalidation. * * @return true if implicit property, false if not */ public boolean isImplicit() { return m_isImplicit; } /* (non-Javadoc) * @see org.jibx.binding.model.AttributeBase#prevalidate(org.jibx.binding.model.ValidationContext) */ public void prevalidate(ValidationContext vctx) { // check usage value if (m_usageName != null) { m_usage = s_usageEnum.getValue(m_usageName); if (m_usage < 0) { vctx.addError("Value \"" + m_usageName + "\" is not a valid choice for usage"); } } else { m_usage = vctx.getParentElement().getDefaultStyle(); } // handle basic lookups and checks ContainerElementBase parent = vctx.getParentContainer(); IClass cobj = parent.getChildObjectType(); String dtype = null; String gtype = null; String stype = null; boolean err = false; m_isImplicit = true; if (m_fieldName != null) { // field means this is real (not implicit) m_isImplicit = false; // look up the field information m_fieldItem = cobj.getField(m_fieldName); if (m_fieldItem == null) { vctx.addFatal("Nonstatic field " + m_fieldName + " not found in class " + cobj.getName()); err = true; } else { dtype = gtype = stype = m_fieldItem.getTypeName(); } } if (m_testName != null) { // make sure only used with optional if (m_usage == REQUIRED_USAGE) { vctx.addError("test-method can only be used with optional property"); } else { // look up the method information m_testItem = cobj.getMethod(m_testName, TEST_METHOD_SIGNATURES); if (m_testItem == null) { vctx.addError("Nonstatic test-method " + m_testName + " not found in class " + cobj.getName()); } } } if (m_getName != null) { // get-method means this is real (not implicit) m_isImplicit = false; // look up the get method by name (no overload possible) m_getItem = cobj.getMethod(m_getName, GET_METHOD_SIGNATURES); if (m_getItem == null) { vctx.addFatal("Nonstatic get-method " + m_getName + " not found in class " + cobj.getName()); err = true; } else { gtype = m_getItem.getTypeName(); if (dtype == null) { dtype = gtype; } } // check for only get-method supplied when both directions needed if (vctx.isInBinding() && m_fieldName == null && m_setName == null) { vctx.addError("Need field or set-method for input handling"); } } if (m_setName != null) { // set-method means this is real (not implicit) m_isImplicit = false; // need to handle overloads, so generate possible signatures ArrayList sigs = new ArrayList(); if (m_getItem != null) { String psig = ClassUtils.getSignature(gtype); sigs.add("(" + psig + "Lorg/jibx/runtime/IUnmarshallingContext;" + ")V"); sigs.add("(" + psig + ")V"); } if (m_declaredType != null) { String psig = ClassUtils.getSignature(m_declaredType); sigs.add("(" + psig + "Lorg/jibx/runtime/IUnmarshallingContext;" + ")V"); sigs.add("(" + psig + ")V"); } if (m_fieldItem != null) { String psig = m_fieldItem.getSignature(); sigs.add("(" + psig + "Lorg/jibx/runtime/IUnmarshallingContext;" + ")V"); sigs.add("(" + psig + ")V"); } sigs.add ("(Ljava/lang/Object;Lorg/jibx/runtime/IUnmarshallingContext;)V"); sigs.add("(Ljava/lang/Object;)V"); // match any of the possible signatures m_setItem = cobj.getMethod(m_setName, (String[])sigs.toArray(new String[0])); if (m_setItem == null && m_declaredType == null) { // nothing known about signature, try anything by name m_setItem = cobj.getMethod(m_setName, ""); if (m_setItem != null) { if (!m_setItem.getTypeName().equals("void") || m_setItem.getArgumentCount() > 2) { m_setItem = null; } else if (m_setItem.getArgumentCount() == 2) { String xtype = m_setItem.getArgumentType(1); if (!"org.jibx.runtime.IUnmarshallingContext".equals(xtype)) { m_setItem = null; } } } if (m_setItem != null) { // make sure resulting type is compatible String type = m_setItem.getArgumentType(0); if (dtype != null && !ClassUtils.isAssignable(type, dtype, vctx)) { m_setItem = null; } else if (gtype != null && !ClassUtils.isAssignable(type, gtype, vctx)) { m_setItem = null; } if (m_setItem != null) { dtype = type; } } } // check set-method found if (m_setItem == null) { vctx.addFatal("Nonstatic set-method " + m_setName + " with argument of appropriate type not found in class " + cobj.getName()); err = true; } else { stype = m_setItem.getArgumentType(0); if (dtype == null) { dtype = stype; } } // check for only set-method supplied when both directions needed if (vctx.isOutBinding() && m_fieldName == null && m_getName == null) { vctx.addError("Need field or get-method for output handling"); } } // set the property type information String tname = m_declaredType; if (tname == null) { tname = dtype; if (tname == null) { tname = cobj.getName(); } } else if (dtype == null) { dtype = gtype = stype = tname; } m_type = vctx.getClassInfo(tname); if (m_type == null) { vctx.addFatal("Unable to load class " + tname); } else if (vctx.getContextObject() instanceof CollectionElement) { // forbid access specifications for child of collection if (m_fieldName != null || m_getName != null || m_setName != null) { vctx.addWarning("Property access attributes (field, " + "get-method, set-method) ignored for collection item"); } } else if (!err && !m_isImplicit) { // check that type information is consistent boolean valid = true; // require access specifications for child of non-collection if (vctx.isInBinding()) { if (stype == null) { vctx.addError("No way to set property value"); stype = "java.lang.Object"; } else { valid = ClassUtils.isAssignable(tname, stype, vctx) || ClassUtils.isAssignable(stype, tname, vctx); } m_setType = vctx.getClassInfo(stype); } if (gtype == null) { if (vctx.isOutBinding()) { vctx.addError("No way to get property value"); m_getType = vctx.getClassInfo("java.lang.Object"); } } else { if (valid) { valid = ClassUtils.isAssignable(tname, gtype, vctx) || ClassUtils.isAssignable(gtype, tname, vctx); } m_getType = vctx.getClassInfo(gtype); } if (!valid) { vctx.addError("Incompatible types used in property definition"); } } super.prevalidate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/RegistrationVisitor.java0000644000175000017500000001635711002542726027135 0ustar moellermoeller/* Copyright (c) 2004-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import java.util.ArrayList; /** * Model visitor for handling item registration. This works with the {@link * org.jibx.binding.model.ValidationContext} class to handle registration of * items which can be referenced by name or by function (such as ID values * within an object structure). The only items of this type which are not * handled by this visitor are format definitions. The formats need to be * accessed during prevalidation, so they're registered during that pass. * * @author Dennis M. Sosnoski */ public class RegistrationVisitor extends ModelVisitor { /** Validation context running this visitor. */ private final ValidationContext m_context; /** * Constructor. * * @param vctx validation context that will run this visitor */ public RegistrationVisitor(ValidationContext vctx) { m_context = vctx; } /** * Visit binding model tree to handle registration. * * @param root node of tree to be visited */ public void visitTree(ElementBase root) { // first add all namespace declarations to contexts m_context.tourTree(root, new ModelVisitor() { /** * Merge namespaces from containing binding into included binding. * * @param node * @return continue expansion flag */ public boolean visit(IncludeElement node) { BindingElement contain = (BindingElement)m_context.getParentElement(); BindingElement binding = node.getBinding(); if (binding != null) { contain.getDefinitions().injectNamespaces(binding.getDefinitions()); } return super.visit(node); } /** * Add namespace definition to containing context. * * @param node * @return continue expansion flag */ public boolean visit(NamespaceElement node) { ValidationProblem problem = m_context.getCurrentDefinitions().addNamespace(node); if (problem != null) { m_context.addProblem(problem); } return super.visit(node); } /** * Block expansion once a structure-type element is reached. * * @param node * @return false */ public boolean visit(StructureElementBase node) { return false; } }); // next handle adding references to table m_context.tourTree(root, this); // then handle mapping extension linkages with separate pass m_context.tourTree(root, new ModelVisitor() { // expand mapping elements in case child mappings are present public boolean visit(MappingElement node) { node.validateExtension(m_context); return true; } // don't bother expanding structure elements public boolean visit(StructureElementBase node) { return false; } }); } /* (non-Javadoc) * @see org.jibx.binding.model.ModelVisitor#visit(org.jibx.binding.model.ContainerElementBase) */ public boolean visit(ContainerElementBase node) { if (node.getLabel() != null) { ValidationProblem problem = m_context.getBindingRoot(). getDefinitions().addNamedStructure(node); if (problem != null) { m_context.addProblem(problem); } } return super.visit(node); } /* (non-Javadoc) * @see org.jibx.binding.model.ModelVisitor#visit(org.jibx.binding.model.TemplateElementBase) */ public boolean visit(TemplateElementBase node) { // check for a top-level definition if (m_context.getParentElement() instanceof BindingElement) { // add all namespace declarations from binding to template DefinitionContext pctx = m_context.getParentElement().getDefinitions(); if (pctx != null) { ArrayList nss = pctx.getNamespaces(); if (nss != null) { DefinitionContext nctx = node.getDefinitions(); if (nctx == null) { nctx = new DefinitionContext(pctx); node.setDefinitions(nctx); } for (int i = 0; i < nss.size(); i++) { nctx.addNamespace((NamespaceElement)nss.get(i)); } } } } return super.visit(node); } /* (non-Javadoc) * @see org.jibx.binding.model.ModelVisitor#visit(org.jibx.binding.model.MappingElement) */ public boolean visit(MappingElement node) { DefinitionContext dctx = m_context.getCurrentDefinitions(); dctx.addTemplate(node, m_context); if (!node.isAbstract()) { // force name validation to set the namespace information NameAttributes name = node.getNameAttributes(); name.validate(m_context); if (name != null && name.getName() != null) { dctx.addMappedName(name, node, m_context); } } return super.visit(node); } /* (non-Javadoc) * @see org.jibx.binding.model.ModelVisitor#visit(org.jibx.binding.model.TemplateElement) */ public boolean visit(TemplateElement node) { m_context.getCurrentDefinitions().addTemplate(node, m_context); return super.visit(node); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/SequenceVisitor.java0000644000175000017500000000745010767276124026242 0ustar moellermoeller/* Copyright (c) 2005-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; /** * Visitor for child tree of structure with an element definition. This * verifies that text and CDATA components are only used in ways consistent * with parsing (i.e., each use must be preceded by a required element). */ class SequenceVisitor extends ModelVisitor { private final StructureElementBase m_baseStructure; private final ValidationContext m_validationContext; private boolean m_isTextAllowed; /** * Constructor. * * @param base root of subtree being visited (null if not * a structure) * @param vctx validation context used for reporting errors */ public SequenceVisitor(StructureElementBase base, ValidationContext vctx) { m_baseStructure = base; m_validationContext = vctx; m_isTextAllowed = true; } /* (non-Javadoc) * @see org.jibx.binding.model.ModelVisitor#visit(org.jibx.binding.model.StructureElementBase) */ public boolean visit(StructureElementBase node) { if (node != m_baseStructure && node.hasName()) { m_isTextAllowed = !node.isOptional(); return false; } else { return true; } } /* (non-Javadoc) * @see org.jibx.binding.model.ModelVisitor#visit(org.jibx.binding.model.ValueElement) */ public boolean visit(ValueElement node) { switch (node.getStyle()) { case ValueElement.CDATA_STYLE: case ValueElement.TEXT_STYLE: if (m_isTextAllowed) { m_isTextAllowed = false; } else { m_validationContext.addError ("Text value must be preceded by required element", node); } break; case NestingAttributes.ELEMENT_STYLE: m_isTextAllowed = !node.isOptional(); break; case NestingAttributes.ATTRIBUTE_STYLE: break; } return false; } /* (non-Javadoc) * @see org.jibx.binding.model.ModelVisitor#exit(org.jibx.binding.model.StructureElementBase) */ public void exit(StructureElementBase node) { if (node.hasName()) { m_isTextAllowed = !node.isOptional(); } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/SplitElement.java0000644000175000017500000000577310210703672025507 0ustar moellermoeller/* Copyright (c) 2004-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; /** * Model component for split element of binding definition. This is only * used for structuring purposes, and is eliminated when the binding definition * is split into specialized input and output versions. * * @author Dennis M. Sosnoski * @version 1.0 */ public class SplitElement extends NestingElementBase { /** Input side of binding (null if none). */ private InputElement m_inputSide; /** Output side of binding (null if none). */ private OutputElement m_outputSide; /** * Constructor. */ public SplitElement() { super(SPLIT_ELEMENT); } /** * Get input side of binding. * * @return input side (null if none) */ public InputElement getInputSide() { return m_inputSide; } /** * Set input side of binding. * * @param input element containing input binding definition * (null if none) */ public void setInputSide(InputElement input) { m_inputSide = input; } /** * Get output side of binding. * * @return output side (null if none) */ public OutputElement getOutputSide() { return m_outputSide; } /** * Set output side of binding. * * @param output element containing output binding definition * (null if none) */ public void setOutputSide(OutputElement output) { m_outputSide = output; } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/StringAttributes.java0000644000175000017500000005405610767275736026443 0ustar moellermoeller/* Copyright (c) 2004-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.QName; /** * Model component for string attribute group in binding definition. * * @author Dennis M. Sosnoski */ public class StringAttributes extends AttributeBase { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "default", "deserializer", "enum-value-method", "serializer" }); // TODO: add "format" for 2.0 // // Constants and such related to code generation. // signature variants allowed for serializer private static final String[] SERIALIZER_SIGNATURE_VARIANTS = { "Lorg/jibx/runtime/IMarshallingContext;", "Ljava/lang/Object;", "" }; // signatures allowed for deserializer private static final String[] DESERIALIZER_SIGNATURES = { "(Ljava/lang/String;Lorg/jibx/runtime/IUnmarshallingContext;)", "(Ljava/lang/String;Ljava/lang/Object;)", "(Ljava/lang/String;)" }; // signatures allowed for enum-value-method private static final String ENUM_VALUE_METHOD_SIGNATURE = "()Ljava/lang/String;"; // signature required for constructor from string private static final String STRING_CONSTRUCTOR_SIGNATURE = "(Ljava/lang/String;)"; // classes of arguments to constructor or deserializer private static final Class[] STRING_CONSTRUCTOR_ARGUMENT_CLASSES = { java.lang.String.class }; // // Instance data. /** Referenced format name. */ private String m_formatName; /** Format qualified name. */ private QName m_formatQName; /** Default value text. */ private String m_defaultText; /** Serializer fully qualified class and method name. */ private String m_serializerName; /** Deserializer fully qualified class and method name. */ private String m_deserializerName; /** Enum value method name. */ private String m_enumValueName; /** Base format for conversions. */ private FormatElement m_baseFormat; /** Value type class. */ private IClass m_typeClass; /** Default value object. */ private Object m_default; /** Serializer method (or toString equivalent) information. */ private IClassItem m_serializerItem; /** Deserializer method (or constructor from string) information. */ private IClassItem m_deserializerItem; /** Method used to get text representation of an enum. */ private IClassItem m_enumValueItem; /** * Default constructor. */ public StringAttributes() {} /** * Set value type. This needs to be set by the owning element prior to * validation. Even though the type is an important part of the string * information, it's treated as a separate item of information because it * needs to be used as part of the property attributes. * * @param type value type */ public void setType(IClass type) { m_typeClass = type; } /** * Get value type. * * @return value type */ public IClass getType() { return m_typeClass; } /** * Get base format name. * * @return referenced base format */ public String getFormatName() { return m_formatName; } /** * Set base format name. * * @param name referenced base format */ public void setFormatName(String name) { m_formatName = name; m_formatQName = (name == null) ? null : new QName(name); } /** * Get format qualified name. * * @return format qualified name (null if none) */ public QName getFormatQName() { return m_formatQName; } /** * Set format qualified name. This method changes the label value to match * the qualified name. * * @param qname format qualified name (null if none) */ public void setFormatQName(QName qname) { m_formatQName = qname; m_formatName = (qname == null) ? null : qname.toString(); } /** * Get default value text. * * @return default value text */ public String getDefaultText() { return m_defaultText; } /** * Get default value. This method is only usable after a * call to {@link #validate(ValidationContext)}. * * @return default value object */ public Object getDefault() { return m_default; } /** * Set default value text. * * @param value default value text */ public void setDefaultText(String value) { m_defaultText = value; } /** * Get serializer name. * * @return fully qualified class and method name for serializer (or * null if none) */ public String getSerializerName() { return m_serializerName; } /** * Get serializer method information. This method is only usable after a * call to {@link #validate(ValidationContext)}. * * @return serializer information (or null if none) */ public IClassItem getSerializer() { return m_serializerItem; } /** * Set serializer method name. * * @param name fully qualified class and method name for serializer */ public void setSerializerName(String name) { m_serializerName = name; } /** * Get deserializer name. * * @return fully qualified class and method name for deserializer (or * null if none) */ public String getDeserializerName() { return m_deserializerName; } /** * Get deserializer method information. This method is only usable after a * call to {@link #validate(ValidationContext)}. * * @return deserializer information (or null if none) */ public IClassItem getDeserializer() { return m_deserializerItem; } /** * Set deserializer method name. * * @param name fully qualified class and method name for deserializer */ public void setDeserializerName(String name) { m_deserializerName = name; } /** * Get enum value method name. * * @return enum value method name (or null if none) */ public String getEnumValueName() { return m_enumValueName; } /** * Get enum value method information. This method is only usable after a * call to {@link #validate(ValidationContext)}. * * @return enum value method information (or null if none) */ public IClassItem getEnumValue() { return m_enumValueItem; } /** * Set enum value method name. * * @param name enum value method name (null if none) */ public void setEnumValueName(String name) { m_enumValueName = name; } /** * Get base format information. This method is only usable after a * call to {@link #validate(ValidationContext)}. * * @return base format element (or null if none) */ public FormatElement getBaseFormat() { return m_baseFormat; } /** * JiBX access method to set format label as qualified name. * * @param label format label text (null if none) * @param ictx unmarshalling context * @throws JiBXException on deserialization error */ private void setQualifiedFormat(String label, IUnmarshallingContext ictx) throws JiBXException { setFormatQName(QName.deserialize(label, ictx)); } /** * JiBX access method to get format label as qualified name. * * @param ictx marshalling context * @return format label text (null if none) * @throws JiBXException on deserialization error */ private String getQualifiedFormat(IMarshallingContext ictx) throws JiBXException { return QName.serialize(getFormatQName(), ictx); } /* (non-Javadoc) * @see org.jibx.binding.model.AttributeBase#prevalidate(org.jibx.binding.model.ValidationContext) */ public void prevalidate(ValidationContext vctx) { // make sure the type has been configured if (m_typeClass == null) { vctx.addFatal("Missing type information for conversion to string"); } else { // get the base format (if any) DefinitionContext dctx = vctx.getDefinitions(); if (m_formatName == null) { m_baseFormat = dctx.getBestFormat(m_typeClass); } else { m_baseFormat = dctx.getNamedFormat(m_formatName); if (m_baseFormat == null) { String name = m_formatName; if (name.startsWith("{}")) { name = name.substring(2); } vctx.addError("Unknown format " + name); } } // check for a Java 5 enumeration boolean isenum = false; IClass sclas = m_typeClass; while ((sclas = sclas.getSuperClass()) != null) { if (sclas.getName().equals("java.lang.Enum")) { isenum = true; break; } } // find the enum value method, if specified if (m_enumValueName != null) { if (isenum) { if (m_serializerName == null && m_deserializerName == null) { m_enumValueItem = m_typeClass.getMethod(m_enumValueName, ENUM_VALUE_METHOD_SIGNATURE); if (m_enumValueItem == null) { vctx.addError("Nonstatic 'enum-value-method' " + m_enumValueName + " not found in class " + m_typeClass.getName()); } } else { vctx.addError("'enum-value-method' cannot be used with 'serializer' or 'deserializer'"); } } else { vctx.addError("'enum-value-method' may only be used with Java 5 enum classes"); } } // check specified serializer and deserializer String tname = m_typeClass.getName(); if (vctx.isOutBinding()) { if (m_serializerName == null) { if (m_enumValueItem == null) { // try to find an inherited serializer FormatElement ances = m_baseFormat; while (ances != null) { m_serializerItem = ances.getSerializer(); if (m_serializerItem == null) { ances = ances.getBaseFormat(); } else { break; } } if (m_serializerItem == null) { IClassItem item = m_typeClass.getMethod("toString", "()Ljava/lang/String;"); if (item == null) { vctx.addError("toString method not found"); } } } } else { // build all possible signature variations String[] tsigs = ClassUtils. getSignatureVariants(tname, vctx); int vcnt = SERIALIZER_SIGNATURE_VARIANTS.length; String[] msigs = new String[tsigs.length * vcnt]; for (int i = 0; i < tsigs.length; i++) { for (int j = 0; j < vcnt; j++) { msigs[i*vcnt + j] = "(" + tsigs[i] + SERIALIZER_SIGNATURE_VARIANTS[j] + ")Ljava/lang/String;"; } } // find a matching static method m_serializerItem = ClassUtils. findStaticMethod(m_serializerName, msigs, vctx); if (m_serializerItem == null) { if (m_serializerName.indexOf('.') > 0) { vctx.addError("Static serializer method " + m_serializerName + " not found"); } else { vctx.addError("Need class name for static method " + m_serializerName); } } } } if (vctx.isInBinding() || m_defaultText != null) { if (m_deserializerName == null) { if (isenum) { if (m_enumValueItem == null) { m_deserializerItem = m_typeClass. getMethod("valueOf", "(Ljava/lang/String;)"); } } else { // try to find an inherited deserializer FormatElement ances = m_baseFormat; while (ances != null) { m_deserializerItem = ances.getDeserializer(); if (m_deserializerItem == null) { ances = ances.getBaseFormat(); } else { break; } } if (m_deserializerItem == null) { // try to find constructor from string as last resort m_deserializerItem = m_typeClass. getInitializerMethod(STRING_CONSTRUCTOR_SIGNATURE); if (m_deserializerItem == null) { // error unless predefined formats if (vctx.getNestingDepth() > 0) { StringBuffer buff = new StringBuffer(); buff.append("Need deserializer or constructor from string"); if (!vctx.isInBinding()) { buff.append(" for default value of type "); buff.append(tname); } else { buff.append(" for type "); buff.append(tname); } vctx.addError(buff.toString()); } } } } } else { // find a matching static method m_deserializerItem = ClassUtils. findStaticMethod(m_deserializerName, DESERIALIZER_SIGNATURES, vctx); if (m_deserializerItem == null) { if (m_deserializerName.indexOf('.') > 0) { vctx.addError("Static deserializer method " + m_deserializerName + " not found"); } else { vctx.addError("Need class name for static method " + m_deserializerName); } } else { String result = m_deserializerItem.getTypeName(); if (!ClassUtils.isAssignable(result, tname, vctx)) { vctx.addError("Static deserializer method " + m_deserializerName + " has incompatible result type"); } } } } // check for default value to be converted if (m_defaultText != null && m_deserializerItem != null) { // first load the class to handle conversion IClass iclas = m_deserializerItem.getOwningClass(); Class clas = iclas.loadClass(); Exception ex = null; boolean construct = false; try { if (clas == null) { vctx.addError("Unable to load class " + iclas.getName() + " for converting default value of type " + tname); } else if (m_deserializerItem.isInitializer()) { // invoke constructor to process default value construct = true; Constructor cons = clas.getConstructor (STRING_CONSTRUCTOR_ARGUMENT_CLASSES); try { cons.setAccessible(true); } catch (Exception e) { /* deliberately left empty */ } Object[] args = new Object[1]; args[0] = m_defaultText; m_default = cons.newInstance(args); } else { // invoke deserializer to convert default value String mname = m_deserializerItem.getName(); Method deser = clas.getDeclaredMethod(mname, STRING_CONSTRUCTOR_ARGUMENT_CLASSES); try { deser.setAccessible(true); } catch (Exception e) { /* deliberately left empty */ } Object[] args = new Object[1]; args[0] = m_defaultText; m_default = deser.invoke(null, args); } } catch (SecurityException e) { StringBuffer buff = new StringBuffer("Unable to access "); if (construct) { buff.append("constructor from string"); } else { buff.append("deserializer "); buff.append(m_deserializerName); } buff.append(" for converting default value of type "); buff.append(tname); vctx.addError(buff.toString()); } catch (NoSuchMethodException e) { StringBuffer buff = new StringBuffer("Unable to find "); if (construct) { buff.append("constructor from string"); } else { buff.append("deserializer "); buff.append(m_deserializerName); } buff.append(" for converting default value of type "); buff.append(tname); vctx.addError(buff.toString()); } catch (IllegalArgumentException e) { ex = e; } catch (InstantiationException e) { ex = e; } catch (IllegalAccessException e) { ex = e; } catch (InvocationTargetException e) { ex = e; } finally { if (ex != null) { StringBuffer buff = new StringBuffer("Error calling "); if (construct) { buff.append("constructor from string"); } else { buff.append("deserializer "); buff.append(m_deserializerName); } buff.append(" for converting default value of type "); buff.append(tname); vctx.addError(buff.toString()); } } } } super.prevalidate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/StructureAttributes.java0000644000175000017500000001625010435547056027154 0ustar moellermoeller/* Copyright (c) 2004-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import org.jibx.binding.util.StringArray; /** * Model component for structure attribute group in binding definition. * * @author Dennis M. Sosnoski * @version 1.0 */ public class StructureAttributes extends AttributeBase { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "allow-repeats", "choice", "flexible", "label", "ordered", "using" }); // // Instance data. /** Flexible element handling flag. */ private boolean m_isFlexible; /** Flag for ordered child content. */ private boolean m_isOrdered; /** Flag for choice child content. */ private boolean m_isChoice; /** Flag for repeated child elements to be ignored. */ private boolean m_isAllowRepeats; /** Name for labeled child content defined elsewhere. */ private String m_usingName; /** Name for labeled child content potentially referenced elsewhere. */ private String m_labelName; /** * Constructor. */ public StructureAttributes() { m_isOrdered = true; } /** * Get flexible flag. * * @return flexible flag */ public boolean isFlexible() { return m_isFlexible; } /** * Set flexible flag. * * @param flexible */ public void setFlexible(boolean flexible) { m_isFlexible = flexible; } /** * Check if child components are ordered. * * @return true if ordered, false if not */ public boolean isOrdered() { return m_isOrdered; } /** * Set child components ordered flag. * * @param ordered true if ordered, false if not */ public void setOrdered(boolean ordered) { m_isOrdered = ordered; } /** * Check if child components are a choice. * * @return true if choice, false if not */ public boolean isChoice() { return m_isChoice; } /** * Set child components choice flag. * * @param ordered true if choice, false if not */ public void setChoice(boolean choice) { m_isChoice = choice; } /** * Check if repeated child elements are allowed. * * @return true if repeats allowed, false if not */ public boolean isAllowRepeats() { return m_isAllowRepeats; } /** * Set repeated child elements allowed flag. * * @param ignore true if repeated child elements to be allowed, * false if not */ public void setAllowRepeats(boolean ignore) { m_isAllowRepeats = ignore; } /** * Get name for child component list definition. * * @return text of name defining child components (null if * none) */ public String getUsingName() { return m_usingName; } /** * Set name for child component list definition. * * @param name text of name defining child components (null if * none) */ public void setUsingName(String name) { m_usingName = name; } /** * Get label name for child component list. * * @return label name text (null if none) */ public String getLabelName() { return m_labelName; } /** * Set label name for child component list. * * @param name label text for name (null if none) */ public void setLabelName(String name) { m_labelName = name; } /* (non-Javadoc) * @see org.jibx.binding.model.AttributeBase#prevalidate(org.jibx.binding.model.ValidationContext) */ public void prevalidate(ValidationContext vctx) { if (m_isOrdered) { if (m_isChoice) { vctx.addError ("choice='true' cannot be used with ordered children"); } if (m_isFlexible) { vctx.addError ("flexible='true' cannot be used with ordered children"); } if (m_isAllowRepeats) { vctx.addError ("allow-repeats='true' cannot be used with ordered children"); } } if (m_isChoice && m_isFlexible) { vctx.addError ("choice='true' and flexible='true' cannot be used together"); } if (m_isChoice && m_isAllowRepeats) { vctx.addError ("choice='true' and allow-repeats='true' cannot be used together"); } super.prevalidate(vctx); } /* (non-Javadoc) * @see org.jibx.binding.model.AttributeBase#validate(org.jibx.binding.model.ValidationContext) */ public void validate(ValidationContext vctx) { if (m_usingName != null) { DefinitionContext dctx = vctx.getBindingRoot().getDefinitions(); if (dctx.getNamedStructure(m_usingName) == null) { vctx.addError("Label \"" + m_usingName + "\" is not defined"); } else { vctx.addWarning("The label/using approach is deprecated and " + "will not be supported in the future - consider using an " + "abstract mapping instead"); } } if (m_labelName != null) { vctx.addWarning("The label/using approach is deprecated and " + "will not be supported in the future - consider using an " + "abstract mapping instead"); } super.validate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/StructureElement.java0000644000175000017500000004430010767276224026420 0ustar moellermoeller/* Copyright (c) 2004-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import java.util.ArrayList; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.QName; /** * Model component for structure element of binding definition. * * @author Dennis M. Sosnoski */ public class StructureElement extends StructureElementBase { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "map-as" }, StructureElementBase.s_allowedAttributes); /** Mapping type name to use for this object. */ private String m_mapAsName; /** Mapping qualified type name to use for this object. */ private QName m_mapAsQName; /** Flag for structure has a concrete mapping, possibly indeterminant. */ private boolean m_hasMappingName; /** Binding to use for this object. */ private TemplateElementBase m_effectiveMapping; /** * Default constructor. */ public StructureElement() { super(STRUCTURE_ELEMENT); } /** * Get name of mapping type. * * @return mapping type name (or null if none) */ public String getMapAsName() { return m_mapAsName; } /** * Set name of mapping type. This method changes the qualified name to * match the mapping type. * * @param name mapping type name (or null if none) */ public void setMapAsName(String name) { m_mapAsName = name; m_mapAsQName = (name == null) ? null : new QName(name); } /** * Get qualified name of mapping type. * * @return mapping qualified type name (or null if none) */ public QName getMapAsQName() { return m_mapAsQName; } /** * Set qualified name of mapping type. This method changes the mapping name * to match the qualified name. * * @param name mapping qualified type name (or null if none) */ public void setMapAsQName(QName name) { m_mapAsQName = name; m_mapAsName = (name == null) ? null : name.toString(); } /** * Get actual type mapping. This call is only meaningful after validation. * * @return actual type mapping (or null if none) */ public TemplateElementBase getEffectiveMapping() { return m_effectiveMapping; } // // Overrides of base class methods /* (non-Javadoc) * @see org.jibx.binding.model.IComponent#hasName() */ public boolean hasName() { if (m_effectiveMapping instanceof MappingElement) { if (((MappingElement)m_effectiveMapping).getName() != null) { return true; } } else if (m_hasMappingName) { return true; } return super.hasName(); } /* (non-Javadoc) * @see org.jibx.binding.model.IComponent#getName() */ public String getName() { if (m_effectiveMapping instanceof MappingElement) { String name = ((MappingElement)m_effectiveMapping).getName(); if (name != null) { return name; } } else if (m_hasMappingName) { return "#" + getType().getName(); } return super.getName(); } /* (non-Javadoc) * @see org.jibx.binding.model.IComponent#getUri() */ public String getUri() { if (m_effectiveMapping instanceof MappingElement) { String uri = ((MappingElement)m_effectiveMapping).getUri(); if (uri != null) { return uri; } } return super.getUri(); } /* (non-Javadoc) * @see org.jibx.binding.model.IComponent#hasAttribute() */ public boolean hasAttribute() { if (hasName()) { return false; } else if (m_effectiveMapping != null) { return m_effectiveMapping.name() == null && m_effectiveMapping.getAttributeComponents().size() > 0; } else { return super.hasAttribute(); } } /* (non-Javadoc) * @see org.jibx.binding.model.IComponent#hasContent() */ public boolean hasContent() { if (hasName()) { return true; } else if (m_effectiveMapping != null) { return m_effectiveMapping.name() != null || m_effectiveMapping.getContentComponents().size() > 0; } else { return super.hasContent(); } } /* (non-Javadoc) * @see org.jibx.binding.model.IComponent#getType() */ public IClass getType() { if (m_effectiveMapping == null) { return super.getType(); } else { return m_effectiveMapping.getHandledClass(); } } // // Validation methods /** * JiBX access method to set mapping type name as qualified name. * * @param text mapping name text (null if none) * @param ictx unmarshalling context * @throws JiBXException on deserialization error */ private void setQualifiedMapAs(String text, IUnmarshallingContext ictx) throws JiBXException { m_mapAsName = text; m_mapAsQName = QName.deserialize(text, ictx); } /** * JiBX access method to get mapping type name as qualified name. * * @param ictx marshalling context * @return mapping type name text (null if none) * @throws JiBXException on deserialization error */ private String getQualifiedMapAs(IMarshallingContext ictx) throws JiBXException { return QName.serialize(m_mapAsQName, ictx); } /** * Make sure all attributes are defined. * * @param uctx unmarshalling context * @exception JiBXException on unmarshalling error */ private void preSet(IUnmarshallingContext uctx) throws JiBXException { validateAttributes(uctx, s_allowedAttributes); } /** * Merge namespaces from an implicit context to those defined for a * reference. * * @param defc context supplying namespaces to be merged * @param addc context to be merged into * @param vctx */ private void mergeNamespaces(DefinitionContext defc, DefinitionContext addc, ValidationContext vctx) { // check for namespaces present in context ArrayList nss = defc.getNamespaces(); if (nss != null) { // merge namespaces with those defined by containing mapping for (int i = 0; i < nss.size(); i++) { NamespaceElement ns = (NamespaceElement)nss.get(i); ValidationProblem prob = addc.addImpliedNamespace(ns, this); if (prob != null) { vctx.addProblem(prob); } } } } /** * Check for conflicts on namespace prefix usage. Abstract mappings may * define namespaces, but the prefixes used by the abstract mappings must * not conflict with those used at the point of reference. This allows the * namespace definitions from the abstract mapping to be promoted to the * containing element. * * @param base * @param vctx */ private void checkNamespaceUsage(TemplateElementBase base, ValidationContext vctx) { // check for namespace definitions needing to be handled if (base instanceof MappingElement && ((MappingElement)base).isAbstract()) { // merge namespaces defined within this mapping DefinitionContext addc = vctx.getFormatDefinitions(); DefinitionContext defc = base.getDefinitions(); if (defc != null) { mergeNamespaces(defc, addc, vctx); } } } /** * Classify child components as contributing attributes, content, or both. * This method is needed to handle on-demand classification during * validation. When a child component is another instance of this class, the * method calls itself on the child component prior to checking the child * component's contribution. * * @param vctx */ protected void classifyComponents(ValidationContext vctx) { // check for classification already run if (!isClassified()) { // check if there's a mapping if used without children // TODO: this isn't correct, but validation may not have reached // this element yet so the context may not have been set. Clean // this with parent link in all elements. DefinitionContext dctx = vctx.getDefinitions(); if (children().size() == 0) { if (m_mapAsQName == null) { // make sure not just a name, allowed for skipped element if (hasProperty() || getDeclaredType() != null) { // see if this is using implicit marshaller/unmarshaller if ((vctx.isInBinding() && getUnmarshallerName() == null) || (vctx.isOutBinding() && getMarshallerName() == null)) { if (getUsing() == null) { // check for specific type known IClass type = getType(); if (type == null) { vctx.addError("Internal error - null type"); } else if (!"java.lang.Object".equals(type.getName())) { setMappingReference(vctx, dctx, type); } } } } } else { // find mapping by type name or class name TemplateElementBase base = dctx.getNamedTemplate(m_mapAsQName.toString()); if (base == null) { base = dctx.getSpecificTemplate(m_mapAsName); if (base == null) { vctx.addFatal("No mapping with type name " + m_mapAsQName.toString()); } } if (base != null) { // make sure type is compatible IClass type = getType(); if (type != null) { if (!type.isAssignable(base.getHandledClass()) && !base.getHandledClass().isAssignable(type)) { vctx.addError("Object type " + type.getName() + " is incompatible with binding for class " + base.getClassName()); } } m_effectiveMapping = base; // check for namespace conflicts checkNamespaceUsage(base, vctx); // set flag for mapping with name m_hasMappingName = base instanceof MappingElement && !((MappingElement)base).isAbstract(); } } // classify mapping reference as providing content, attributes, or both if (m_effectiveMapping instanceof MappingElement) { MappingElement mapping = (MappingElement)m_effectiveMapping; mapping.classifyComponents(vctx); if (hasProperty()) { mapping.verifyConstruction(vctx); } if (mapping.getName() == null) { ArrayList attribs = EmptyList.INSTANCE; ArrayList contents = EmptyList.INSTANCE; if (mapping.getContentComponents().size() > 0) { contents = new ArrayList(); contents.add(m_effectiveMapping); } if (mapping.getAttributeComponents().size() > 0) { attribs = new ArrayList(); attribs.add(m_effectiveMapping); } setComponents(attribs, contents); } else { ArrayList contents = new ArrayList(); contents.add(m_effectiveMapping); setComponents(EmptyList.INSTANCE, contents); } } } else if (m_mapAsName != null) { vctx.addError("map-as attribute cannot be used with children"); } } // pass on call to superclass implementation super.classifyComponents(vctx); } /* (non-Javadoc) * @see org.jibx.binding.model.ElementBase#validate(org.jibx.binding.model.ValidationContext) */ public void validate(ValidationContext vctx) { // set up child components and effective mapping classifyComponents(vctx); IClass type = getType(); if (type != null) { // check each child component for compatible type ArrayList children = children(); if (hasProperty() || getDeclaredType() != null) { checkCompatibleChildren(vctx, type, children); } // check for only set-method supplied if (!vctx.isOutBinding() && getField() == null && getGet() == null && getSet() != null) { // no way to handle both elements and attributes if (hasAttribute() && hasContent()) { vctx.addError("Need way to load existing object instance " + "to support combined attribute and element values"); } else { vctx.addWarning("No way to load prior value - " + "new instance will be created on each unmarshalling"); } } } // make sure name is defined if nillable if (isNillable() && !hasName()) { vctx.addError("Need element name for nillable='true'"); } super.validate(vctx); } /** * Validate mapping reference. * * @param vctx validation context * @param dctx definition context * @param type referenced type */ private void setMappingReference(ValidationContext vctx, DefinitionContext dctx, IClass type) { // first try to find mapping by specific type m_effectiveMapping = dctx.getNamedTemplate(type.getName()); if (m_effectiveMapping == null) { // see if there's a mapping specific to the reference type String tname = type.getName(); TemplateElementBase match = dctx.getSpecificTemplate(tname); if (match != null) { m_effectiveMapping = match; if (match instanceof MappingElement) { // set flag for name defined by mapping MappingElement base = (MappingElement)match; m_hasMappingName = !base.isAbstract(); checkNamespaceUsage(base, vctx); // check name usage on non-abstract or base mapping if (super.hasName()) { if (!base.isAbstract()) { vctx.addError("name attribute not allowed on concrete mapping reference", this); } else if (base.getExtensionTypes().size() > 0) { vctx.addError("name attribute not allowed on reference to mapping with extensions", this); } } } } else if (!dctx.isCompatibleTemplateType(type)) { vctx.addFatal("No compatible mapping defined for type " + tname, this); } } else if (m_effectiveMapping instanceof MappingElement) { // set flag for name defined by mapping MappingElement base = (MappingElement)m_effectiveMapping; m_hasMappingName = !base.isAbstract(); checkNamespaceUsage(base, vctx); } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/StructureElementBase.java0000644000175000017500000003031710767276372027222 0ustar moellermoeller/* Copyright (c) 2004-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import org.jibx.binding.util.StringArray; /** * Model component for elements that define the binding structure for an object * property. This is the base class for structure and collection * elements. * * @author Dennis M. Sosnoski */ public abstract class StructureElementBase extends ContainerElementBase implements IComponent { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new StringArray(PropertyAttributes.s_allowedAttributes, NameAttributes.s_allowedAttributes), ContainerElementBase.s_allowedAttributes); /** Property attributes information for nesting. */ private PropertyAttributes m_propertyAttrs; /** Name attributes information for nesting. */ private NameAttributes m_nameAttrs; /** * Constructor. * * @param type element type code */ protected StructureElementBase(int type) { super(type); m_nameAttrs = new NameAttributes(); m_propertyAttrs = new PropertyAttributes(); } // // Name attribute delegate methods /** * Get name. * * @return name text */ public String getName() { return m_nameAttrs.getName(); } /** * Set name. * * @param name text for name */ public void setName(String name) { m_nameAttrs.setName(name); } /** * Get specified namespace URI. * * @return namespace URI (null if not set) */ public String getUri() { return m_nameAttrs.getUri(); } /** * Set namespace URI. * * @param uri namespace URI (null if not set) */ public void setUri(String uri) { m_nameAttrs.setUri(uri); } /** * Get specified namespace prefix. * * @return namespace prefix (null if not set) */ public String getPrefix() { return m_nameAttrs.getPrefix(); } /** * Set namespace prefix. * * @param prefix namespace prefix (null if not set) */ public void setPrefix(String prefix) { m_nameAttrs.setPrefix(prefix); } /** * Get effective namespace information. This call is only meaningful after * validation. * * @return effective namespace information */ public NamespaceElement getNamespace() { return m_nameAttrs.getNamespace(); } // // Property attribute delegate methods /** * Get usage name. * * @return usage name */ public String getUsageName() { return m_propertyAttrs.getUsageName(); } /** * Get usage value. This call is only meaningful after a call to * {@link #prevalidate(ValidationContext)}. * * @return usage value */ public int getUsage() { return m_propertyAttrs.getUsage(); } /** * Set usage name. * * @param name usage name */ public void setUsageName(String name) { m_propertyAttrs.setUsageName(name); } /** * Set usage value. * * @param use value */ public void setUsage(int use) { m_propertyAttrs.setUsage(use); } /** * Check if property is defined. This method is only meaningful after * a call to {@link #prevalidate(ValidationContext)}. * * @return true if property defined, false if not */ public boolean hasProperty() { return m_propertyAttrs.hasProperty(); } /** * Get declared type name. * * @return type name (or null if none) */ public String getDeclaredType() { return m_propertyAttrs.getDeclaredType(); } /** * Set declared type name. * * @param type name (or null if none) */ public void setDeclaredType(String type) { m_propertyAttrs.setDeclaredType(type); } /** * Get field name. * * @return field name (or null if none) */ public String getFieldName() { return m_propertyAttrs.getFieldName(); } /** * Get field information. This call is only meaningful after a call to * {@link #prevalidate(ValidationContext)}. * * @return field information (or null if none) */ public IClassItem getField() { return m_propertyAttrs.getField(); } /** * Set field name. * * @param field field name (or null if none) */ public void setFieldName(String field) { m_propertyAttrs.setFieldName(field); } /** * Get test method name. * * @return test method name (or null if none) */ public String getTestName() { return m_propertyAttrs.getTestName(); } /** * Get test method information. This call is only meaningful after a call to * {@link #prevalidate(ValidationContext)}. * * @return test method information (or null if none) */ public IClassItem getTest() { return m_propertyAttrs.getTest(); } /** * Set test method name. * * @param test test method name (or null if none) */ public void setTestName(String test) { m_propertyAttrs.setTestName(test); } /** * Get get method name. * * @return get method name (or null if none) */ public String getGetName() { return m_propertyAttrs.getGetName(); } /** * Get get method information. This call is only meaningful after a call to * {@link #prevalidate(ValidationContext)}. * * @return get method information (or null if none) */ public IClassItem getGet() { return m_propertyAttrs.getGet(); } /** * Get type for value loaded to stack. This call is only meaningful after a * call to {@link #prevalidate(ValidationContext)}. * * @return get value type (or null if none) */ public IClass getGetType() { return m_propertyAttrs.getGetType(); } /** * Set get method name. * * @param get get method name (or null if none) */ public void setGetName(String get) { m_propertyAttrs.setGetName(get); } /** * Get set method name. * * @return set method name (or null if none) */ public String getSetName() { return m_propertyAttrs.getSetName(); } /** * Get set method information. This call is only meaningful after a call to * {@link #prevalidate(ValidationContext)}. * * @return set method information (or null if none) */ public IClassItem getSet() { return m_propertyAttrs.getSet(); } /** * Get type for value stored from stack. This call is only meaningful after * a call to {@link #prevalidate(ValidationContext)}. * * @return set value type (or null if none) */ public IClass getSetType() { return m_propertyAttrs.getSetType(); } /** * Set set method name. * * @param set set method name (or null if none) */ public void setSetName(String set) { m_propertyAttrs.setSetName(set); } /** * Check if this value implicitly uses the containing object. This call * is only meaningful after a call to * {@link #prevalidate(ValidationContext)}. * * @return true if using the containing object, * false if own value */ public boolean isImplicit() { return m_propertyAttrs.isImplicit(); } // // Implementation methods /* (non-Javadoc) * @see org.jibx.binding.model.ElementBase#isOptional() */ public boolean isOptional() { return m_propertyAttrs.getUsage() == PropertyAttributes.OPTIONAL_USAGE; } /* (non-Javadoc) * @see org.jibx.binding.model.ContainerElementBase#hasObject() */ public boolean hasObject() { return !isImplicit() || getDeclaredType() != null; } // // Implementation of methods from IComponent interface (used in extensions) /* (non-Javadoc) * @see org.jibx.binding.model.IComponent#hasAttribute() */ public boolean hasAttribute() { if (m_nameAttrs.getName() != null) { return false; } else { return getAttributeComponents().size() > 0; } } /* (non-Javadoc) * @see org.jibx.binding.model.IComponent#hasContent() */ public boolean hasContent() { if (m_nameAttrs.getName() != null) { return true; } else { return getContentComponents().size() > 0; } } /* (non-Javadoc) * @see org.jibx.binding.model.IComponent#hasName() */ public boolean hasName() { return m_nameAttrs.getName() != null; } /* (non-Javadoc) * @see org.jibx.binding.model.IComponent#getType() */ public IClass getType() { return m_propertyAttrs.getType(); } /* (non-Javadoc) * @see org.jibx.binding.model.ContainerElementBase#getType() */ public IClass getObjectType() { return getType(); } // // Validation methods /* (non-Javadoc) * @see org.jibx.binding.model.ElementBase#prevalidate(org.jibx.binding.model.ValidationContext) */ public void prevalidate(ValidationContext vctx) { m_nameAttrs.prevalidate(vctx); m_propertyAttrs.prevalidate(vctx); if (!vctx.isSkipped(this)) { super.prevalidate(vctx); } } /* (non-Javadoc) * @see org.jibx.binding.model.ElementBase#validate(org.jibx.binding.model.ValidationContext) */ public void validate(ValidationContext vctx) { // validate the attribute groups m_nameAttrs.validate(vctx); m_propertyAttrs.validate(vctx); if (!vctx.isSkipped(this)) { // check for way of constructing object instance on input if (m_propertyAttrs.hasProperty() && children().size() > 0) { verifyConstruction(vctx, m_propertyAttrs.getType()); } // check use of text values in children of structure with name if (hasName()) { SequenceVisitor visitor = new SequenceVisitor(this, vctx); TreeContext tctx = vctx.getChildContext(); tctx.tourTree(this, visitor); } // finish with superclass validation super.validate(vctx); } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/TemplateElement.java0000644000175000017500000001530410222701646026160 0ustar moellermoeller/* Copyright (c) 2004-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; /** * Model component for template element of binding definition. * * @author Dennis M. Sosnoski * @version 1.0 */ public class TemplateElement extends TemplateElementBase { /** Template label. */ private String m_label; /** Default template for type flag. */ private boolean m_isDefault; /** Schema type name for xsi:type. */ private NameAttributes m_typeNameAttrs; /** Base schema type name for xsi:type. */ private NameAttributes m_baseNameAttrs; /** Base template extended by this one. */ private TemplateElement m_extendsMapping; /** * Default constructor. */ public TemplateElement() { super(TEMPLATE_ELEMENT); m_typeNameAttrs = new NameAttributes(); } /** * Get template label. * * @return template label (null if none) */ public String getLabel() { return m_label; } /** * Set template label. * * @param label template label (null if none) */ public void setLabel(String label) { m_label = label; } /** * Check if default template for type. * * @return true if default for type, false if not */ public boolean isDefaultTemplate() { return m_isDefault; } /** * Set default template for type flag. * * @param dflt true if default for type, false if * not */ public void setDefaultTemplate(boolean dflt) { m_isDefault = dflt; } // // Type name attribute delegate methods /** * Get type name. * * @return type name text */ public String getTypeName() { return m_typeNameAttrs.getName(); } /** * Set type name. * * @param name text for type name */ public void setTypeName(String name) { m_typeNameAttrs.setName(name); } /** * Get namespace URI specified for type. * * @return type namespace URI (null if not set) */ public String getTypeUri() { return m_typeNameAttrs.getUri(); } /** * Set type namespace URI. * * @param uri type namespace URI (null if not set) */ public void setTypeUri(String uri) { m_typeNameAttrs.setUri(uri); } /** * Get namespace prefix specified for type. * * @return type namespace prefix (null if not set) */ public String getTypePrefix() { return m_typeNameAttrs.getPrefix(); } /** * Set type namespace prefix. * * @param type prefix namespace prefix (null if not set) */ public void setTypePrefix(String prefix) { m_typeNameAttrs.setPrefix(prefix); } /** * Get effective namespace information for type. This call is only * meaningful after validation. * * @return effective namespace information */ public NamespaceElement getTypeNamespace() { return m_typeNameAttrs.getNamespace(); } /** * Get template extended by this one. * * @return template extended by this one */ public TemplateElement getExtendsMapping() { return m_extendsMapping; } // // Base type name attribute delegate methods /** * Get base type name. * * @return base type name text */ public String getBaseName() { return m_baseNameAttrs.getName(); } /** * Set base type name. * * @param name text for base type name */ public void setBaseName(String name) { m_baseNameAttrs.setName(name); } /** * Get namespace URI specified for base type. * * @return base type namespace URI (null if not set) */ public String getBaseUri() { return m_baseNameAttrs.getUri(); } /** * Set base type namespace URI. * * @param uri base type namespace URI (null if if not set) */ public void setBaseUri(String uri) { m_baseNameAttrs.setUri(uri); } /** * Get namespace URI specified for base type. * * @return base type namespace prefix (null if not set) */ public String getBasePrefix() { return m_baseNameAttrs.getPrefix(); } /** * Set base type namespace prefix. * * @param type base type namespace prefix (null if not set) */ public void setBasePrefix(String prefix) { m_baseNameAttrs.setPrefix(prefix); } /** * Get effective namespace information for base type. This call is only * meaningful after validation. * * @return effective namespace information */ public NamespaceElement getBaseNamespace() { return m_typeNameAttrs.getNamespace(); } // // Validation methods /** * Prevalidate attributes of element in isolation. * * @param vctx validation context */ public void prevalidate(ValidationContext vctx) { m_typeNameAttrs.prevalidate(vctx); super.prevalidate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/TemplateElementBase.java0000644000175000017500000001472310624255206026761 0ustar moellermoeller/* Copyright (c) 2004-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import java.util.ArrayList; import java.util.Iterator; import org.jibx.binding.util.StringArray; /** * Model component for elements that define how instances of a particular class * are converted to or from XML. This includes both mapping and * template elements. * * @author Dennis M. Sosnoski */ public abstract class TemplateElementBase extends ContainerElementBase { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "class" }, ContainerElementBase.s_allowedAttributes); /** Name of handled class. */ private String m_className; /** Handled class information. */ private IClass m_handledClass; /** List of child elements. */ protected ArrayList m_topChildren; /** Templates or mappings that can be used in place of this one (as * substitution group using mapping, or xsi:type with template). */ private ArrayList m_extensionTypes; /** * Constructor. * * @param type element type code */ public TemplateElementBase(int type) { super(type); m_extensionTypes = new ArrayList(); } /** * Set mapped class name. * * @param name mapped class name */ public void setClassName(String name) { m_className = name; } /** * Get mapped class name. * * @return class name */ public String getClassName() { return m_className; } /** * Get handled class information. This call is only meaningful after * prevalidation. * * @return mapped class information */ public IClass getHandledClass() { return m_handledClass; } /** * Add template or mapping which derives from this one. * * @param ext derived template or mapping information */ protected void addExtensionType(TemplateElementBase ext) { m_extensionTypes.add(ext); } /** * Get templates or mappings which derive from this one. * * @return list of derived templates or mappings */ public ArrayList getExtensionTypes() { return m_extensionTypes; } /** * Check if default template for type. Needs to be implemented by subclasses * for common handling. * * @return true if default for type, false if not */ public abstract boolean isDefaultTemplate(); /** * Add top-level child element. * * @param child element to be added as child of this element */ public void addTopChild(Object child) { m_topChildren.add(child); } /** * Get list of top-level child elements. * * @return list of child elements, or null if none */ public ArrayList topChildren() { return m_topChildren; } /** * Get iterator for top-level child elements. * * @return iterator for child elements */ public Iterator topChildIterator() { return m_topChildren.iterator(); } // // Overrides of base class methods /* (non-Javadoc) * @see org.jibx.binding.model.ElementBase#isOptional() */ public boolean isOptional() { throw new IllegalStateException ("Internal error: method should never be called"); } /* (non-Javadoc) * @see org.jibx.binding.model.IContextObj#getType() */ public IClass getType() { return m_handledClass; } /* (non-Javadoc) * @see org.jibx.binding.model.ContainerElementBase#isImplicit() */ public boolean isImplicit() { return false; } /* (non-Javadoc) * @see org.jibx.binding.model.ContainerElementBase#hasObject() */ public boolean hasObject() { return true; } /* (non-Javadoc) * @see org.jibx.binding.model.ContainerElementBase#getObjectType() */ public IClass getObjectType() { return m_handledClass; } // // Validation methods /* (non-Javadoc) * @see org.jibx.binding.model.ElementBase#prevalidate(org.jibx.binding.model.ValidationContext) */ public void prevalidate(ValidationContext vctx) { if (m_className == null) { vctx.addFatal("Class name is required"); } else { m_handledClass = vctx.getClassInfo(m_className); if (m_handledClass == null) { vctx.addFatal("Cannot find information for class " + m_className); } else { super.prevalidate(vctx); } } } /* (non-Javadoc) * @see org.jibx.binding.model.ContainerElementBase#validate(org.jibx.binding.model.ValidationContext) */ public void validate(ValidationContext vctx) { // check each child component for compatible type ArrayList children = children(); checkCompatibleChildren(vctx, m_handledClass, children); super.validate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/TreeContext.java0000644000175000017500000004500210541615360025336 0ustar moellermoeller/* Copyright (c) 2004-2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import java.util.ArrayList; import java.util.HashSet; import org.jibx.binding.util.ObjectStack; /** * Handles walking the tree structure of a binding model, tracking * order-dependent state information collected along the way. * * @author Dennis M. Sosnoski */ public class TreeContext { /** Global definition context (outside of binding). */ private DefinitionContext m_globalContext; /** Binding element model root (may be null, if not configured by caller). */ private BindingElement m_bindingRoot; /** Stack of items for parent hierarchy to current node in tree. */ private ObjectStack m_treeHierarchy; /** Class locator set by environment code. */ private IClassLocator m_locator; /** Set of elements to be skipped in walking tree. */ private HashSet m_skipSet; /** * Internal null constructor. */ private TreeContext() {} /** * Constructor. * * @param iloc class locator to be used */ public TreeContext(IClassLocator iloc) { m_treeHierarchy = new ObjectStack(); m_locator = iloc; m_skipSet = new HashSet(); } /** * Get a secondary context for the same tree as this instance. The secondary * context shares the same skip set, context, and binding root as the * original context. This allows activites invoked during the touring of the * original tree to start subtours of their own part of the tree. * * @return new context linked to original context */ public TreeContext getChildContext() { TreeContext child = new TreeContext(); child.m_bindingRoot = m_bindingRoot; child.m_globalContext = m_globalContext; child.m_locator = m_locator; child.m_skipSet = m_skipSet; child.m_treeHierarchy = new ObjectStack(m_treeHierarchy); return child; } /** * Set the global definition context. This context is external to the actual * binding definition, providing defaults that can be overridden by values * set within the actual binding. * * @param dctx global definition context */ public void setGlobalDefinitions(DefinitionContext dctx) { m_globalContext = dctx; } /** * Tour complete binding model tree. This tours the entire binding model, * starting from the root binding element. Using this method automatically * sets the root binding element for access by processing performed during * the tour. It must be used for the binding element in order to * handle included binding definitions properly. * * @param root binding element root of tree * @param visitor target visitor for element notifications */ public void tourTree(BindingElement root, ModelVisitor visitor) { // set up binding root reference for access during processing BindingElement hold = m_bindingRoot; m_bindingRoot = root; // run the actual tour tourTree((ElementBase)root, visitor); // restore prior binding root reference m_bindingRoot = hold; } /** * Tour binding model tree. This recursively traverses the binding model * tree rooted in the supplied element, notifying the visitor of each * element visited during the traversal. Elements with fatal errors are * skipped in processing, along with all child elements. The method may * itself be called recursively. * * @param root node of tree to be toured * @param visitor target visitor for element notifications */ public void tourTree(ElementBase root, ModelVisitor visitor) { // check for fatal error on element if (m_skipSet.contains(root)) { return; } // visit the actual root of tree boolean expand = false; m_treeHierarchy.push(root); switch (root.type()) { case ElementBase.BINDING_ELEMENT: expand = visitor.visit((BindingElement)root); break; case ElementBase.COLLECTION_ELEMENT: expand = visitor.visit((CollectionElement)root); break; case ElementBase.FORMAT_ELEMENT: visitor.visit((FormatElement)root); break; case ElementBase.INCLUDE_ELEMENT: expand = visitor.visit((IncludeElement)root); break; case ElementBase.INPUT_ELEMENT: expand = visitor.visit((InputElement)root); break; case ElementBase.MAPPING_ELEMENT: expand = visitor.visit((MappingElement)root); break; case ElementBase.NAMESPACE_ELEMENT: visitor.visit((NamespaceElement)root); break; case ElementBase.OUTPUT_ELEMENT: expand = visitor.visit((OutputElement)root); break; case ElementBase.SPLIT_ELEMENT: expand = visitor.visit((SplitElement)root); break; case ElementBase.STRUCTURE_ELEMENT: expand = visitor.visit((StructureElement)root); break; case ElementBase.TEMPLATE_ELEMENT: expand = visitor.visit((TemplateElement)root); break; case ElementBase.VALUE_ELEMENT: visitor.visit((ValueElement)root); break; default: throw new IllegalStateException ("Internal error: unknown element type"); } // check for expansion needed if (expand && !m_skipSet.contains(root)) { if (root instanceof IncludeElement) { // include just delegates to the included binding element BindingElement binding = ((IncludeElement)root).getBinding(); if (binding != null) { m_treeHierarchy.pop(); tourTree((ElementBase)binding, visitor); m_treeHierarchy.push(root); } } else if (root instanceof NestingElementBase) { // process each container child as root of own tree ArrayList childs = null; if (root instanceof MappingElement) { childs = ((MappingElement)root).topChildren(); for (int i = 0; i < childs.size(); i++) { tourTree((ElementBase)childs.get(i), visitor); } } if (root instanceof BindingElement) { childs = ((BindingElement)root).topChildren(); } else { childs = ((NestingElementBase)root).children(); } for (int i = 0; i < childs.size(); i++) { tourTree((ElementBase)childs.get(i), visitor); } } } // exit the actual root of tree switch (root.type()) { case ElementBase.BINDING_ELEMENT: visitor.exit((BindingElement)root); break; case ElementBase.COLLECTION_ELEMENT: visitor.exit((CollectionElement)root); break; case ElementBase.INCLUDE_ELEMENT: visitor.exit((IncludeElement)root); break; case ElementBase.INPUT_ELEMENT: visitor.exit((InputElement)root); break; case ElementBase.MAPPING_ELEMENT: visitor.exit((MappingElement)root); break; case ElementBase.OUTPUT_ELEMENT: visitor.exit((OutputElement)root); break; case ElementBase.SPLIT_ELEMENT: visitor.exit((SplitElement)root); break; case ElementBase.STRUCTURE_ELEMENT: visitor.exit((StructureElement)root); break; case ElementBase.TEMPLATE_ELEMENT: visitor.exit((TemplateElement)root); break; case ElementBase.VALUE_ELEMENT: visitor.exit((ValueElement)root); break; default: break; } m_treeHierarchy.pop(); } /** * Get depth of nesting in binding. * * @return nesting depth */ public int getNestingDepth() { return m_treeHierarchy.size(); } /** * Peek current element of hierarchy. * * @return current element */ protected ElementBase peekElement() { return (ElementBase)m_treeHierarchy.peek(); } /** * Check if a component is being skipped due to a fatal error. * * @param obj component to be checked * @return flag for component being skipped */ public boolean isSkipped(Object obj) { return m_skipSet.contains(obj); } /** * Add element to set to be skipped. * * @param skip */ protected void addSkip(Object skip) { if (skip instanceof ElementBase) { m_skipSet.add(skip); } } /** * Get root element of binding. * * @return root element of binding * @throws IllegalStateException if no root element known */ public BindingElement getBindingRoot() { if (m_bindingRoot == null) { throw new IllegalStateException("No binding root defined"); } else { return m_bindingRoot; } } /** * Set root element of binding. This should be called by the user if an * element other than the binding element is going to be used as the root * for a tour. * * @param root root element of binding */ public void setBindingRoot(BindingElement root) { m_bindingRoot = root; } /** * Get containing element. This is equivalent to the generation * 1 parent, except that it checks for the case where there's * no parent present. * * @return binding definition component for parent element, or * null if no parent */ public NestingElementBase getParentElement() { if (m_treeHierarchy.size() > 1) { return (NestingElementBase)m_treeHierarchy.peek(1); } else { return null; } } /** * Get containing element at generation level. All except the zero-level * containing element are guaranteed to be instances of {@link * org.jibx.binding.model.NestingElementBase}. * * @param level generation level of parent * @return binding definition component for parent at level */ public ElementBase getParentElement(int level) { return (ElementBase)m_treeHierarchy.peek(level); } /** * Get parent container information. This returns the innermost containing * binding component which refers to an object. * * @return innermost containing element referencing bound object */ public ContainerElementBase getParentContainer() { int index = 1; while (index < m_treeHierarchy.size()) { NestingElementBase nest = (NestingElementBase)m_treeHierarchy.peek(index++); if (nest instanceof ContainerElementBase) { return (ContainerElementBase)nest; } } throw new IllegalStateException("Internal error: no container"); } /** * Get parent container with linked object. This returns the innermost * containing binding component which defines a context object. * * @return innermost containing element defining a context object */ public ContainerElementBase getContextObject() { int index = 1; while (index < m_treeHierarchy.size()) { NestingElementBase nest = (NestingElementBase)m_treeHierarchy.peek(index++); if (nest instanceof ContainerElementBase) { ContainerElementBase contain = (ContainerElementBase)nest; if (contain.hasObject()) { return contain; } } } throw new IllegalStateException("Internal error: no context object"); } /** * Check if binding supports input. * * @return true if input binding, false if not */ public boolean isInBinding() { return m_bindingRoot == null ? true : m_bindingRoot.isInBinding(); } /** * Check if binding supports output. * * @return true if output binding, false if not */ public boolean isOutBinding() { return m_bindingRoot == null ? true : m_bindingRoot.isOutBinding(); } /** * Get innermost containing definition context. * * @return innermost definition context containing this element */ public DefinitionContext getDefinitions() { int index = 1; while (index < m_treeHierarchy.size()) { NestingElementBase nest = (NestingElementBase)m_treeHierarchy.peek(index++); if (nest.getDefinitions() != null) { return nest.getDefinitions(); } } if (m_globalContext == null) { throw new IllegalStateException ("Internal error: no definition context"); } else { return m_globalContext; } } /** * Get definition context for innermost nesting element. If the context for * this element isn't already defined it's created by the call. * * @return definition context for innermost nesting element */ public DefinitionContext getCurrentDefinitions() { NestingElementBase parent = getParentElement(); DefinitionContext dctx = parent.getDefinitions(); if (dctx == null) { dctx = new DefinitionContext(getDefinitions()); parent.setDefinitions(dctx); } return dctx; } /** * Get definition context for innermost nesting element for use by a * format (or namespace). If the context for this element * isn't already defined it's created by the call, along with the contexts * for any containing elements. This is ugly, but necessary to keep the tree * structure of contexts from getting split when other items are added by * the registration pass (since the formats are registered in the * prevalidation pass). * * @return definition context for innermost nesting element */ public DefinitionContext getFormatDefinitions() { NestingElementBase parent = getParentElement(); DefinitionContext dctx = parent.getDefinitions(); if (dctx == null) { // scan to find innermost nesting with context int index = 1; DefinitionContext pctx = null; while (++index < m_treeHierarchy.size()) { NestingElementBase nest = (NestingElementBase)m_treeHierarchy.peek(index); pctx = nest.getDefinitions(); if (pctx != null) { break; } } // add contexts for all ancestors to level while (index >= 2) { dctx = new DefinitionContext(pctx); NestingElementBase nest = (NestingElementBase)m_treeHierarchy.peek(--index); nest.setDefinitions(dctx); pctx = dctx; } } return dctx; } /** * Get class information. Finds a class by name using the class locator * configured by the environment code. * * @param name fully-qualified name of class to be found * @return class information, or null if class not found */ public IClass getClassInfo(String name) { return m_locator.getClassInfo(name); } /** * Get requiried class information. Finds a class by name using the class * locator configured by the environment code. If the class cannot be found * a runtime exception is thrown. * * @param name fully-qualified name of class to be found * @return class information */ public IClass getRequiredClassInfo(String name) { IClass iclas = m_locator.getClassInfo(name); if (iclas == null) { throw new IllegalStateException("Internal error: class " + name + " cannot be found"); } else { return iclas; } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/ValidationContext.java0000644000175000017500000002215710624255276026547 0ustar moellermoeller/* Copyright (c) 2004-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import java.util.ArrayList; /** * Tracks the validation state. This includes the current validation phase, as * well as order-dependent state information collected while walking the tree * structure of a binding model. Collects all errors and warnings and maintains * a summary of the severity of the problems found. * * @author Dennis M. Sosnoski * @version 1.0 */ public class ValidationContext extends TreeContext { /** Number of warnings reported. */ private int m_warningCount; /** Number of errors reported. */ private int m_errorCount; /** Number of fatals reported. */ private int m_fatalCount; /** List of problem items reported by validation. */ private ArrayList m_problemList; /** * Constructor. * * @param iloc class locator */ public ValidationContext(IClassLocator iloc) { super(iloc); m_problemList = new ArrayList(); } /** * Peek current element of hierarchy, if any. This variation should be used * for the actual error handling, in case an error occurs during the * initialization of the outer context definitions (canned definitions). * * @return current element, or null if none */ private ElementBase safePeekElement() { try { return peekElement(); } catch (ArrayIndexOutOfBoundsException e) { // just in case there is no context element return null; } } /** * Prevalidate binding model tree. This calls the prevalidate method for * each element in the tree, in preorder traversal order. * * @param root binding node of tree to be prevalidated */ public void prevalidate(BindingElement root) { PrevalidationVisitor visitor = new PrevalidationVisitor(); tourTree(root, visitor); } /** * Validate binding model tree. This calls the validate method for each * element in the tree, in postorder traversal order. * * @param root binding node of tree to be prevalidated */ public void validate(BindingElement root) { ValidationVisitor visitor = new ValidationVisitor(); tourTree(root, visitor); } /** * Get number of warning problems reported. * * @return warning problem count */ public int getWarningCount() { return m_warningCount; } /** * Get number of error problems reported. * * @return error problem count */ public int getErrorCount() { return m_errorCount; } /** * Get number of fatal problems reported. * * @return fatal problem count */ public int getFatalCount() { return m_fatalCount; } /** * Add warning item for current element. Adds a warning item to the problem * list, which is a possible problem that still allows reasonable operation. * This form of the call can only be used during a tree tour being * controlled by this context. * * @param msg problem description */ public void addWarning(String msg) { addWarning(msg, safePeekElement()); } /** * Add warning item. Adds a warning item to the problem list, which is a * possible problem that still allows reasonable operation. * * @param msg problem description * @param obj source object for validation error */ public void addWarning(String msg, Object obj) { addProblem(new ValidationProblem (ValidationProblem.WARNING_LEVEL, msg, obj)); } /** * Add error item for current element. Adds an error item to the problem * list, which is a definite problem that still allows validation to * proceed. This form of the call can only be used during a tree tour being * controlled by this context. * * @param msg problem description */ public void addError(String msg) { addError(msg, safePeekElement()); } /** * Add error item. Adds an error item to the problem list, which is a * definite problem that still allows validation to proceed. * * @param msg problem description * @param obj source object for validation error */ public void addError(String msg, Object obj) { addProblem(new ValidationProblem (ValidationProblem.ERROR_LEVEL, msg, obj)); } /** * Add fatal item for current element. Adds a fatal item to the problem * list, which is a severe problem that blocks further validation within the * tree branch involved. This form of the call can only be used during a * tree tour being controlled by this context. * * @param msg problem description */ public void addFatal(String msg) { addFatal(msg, safePeekElement()); } /** * Add fatal item. Adds a fatal item to the problem list, which is a severe * problem that blocks further validation within the tree branch involved. * The object associated with a fatal error should always be an element. * * @param msg problem description * @param obj source object for validation error (should be an element) */ public void addFatal(String msg, Object obj) { addProblem(new ValidationProblem (ValidationProblem.FATAL_LEVEL, msg, obj)); } /** * Add problem report. The problem is added and counted as appropriate. * * @param problem details of problem report */ public void addProblem(ValidationProblem problem) { m_problemList.add(problem); switch (problem.getSeverity()) { case ValidationProblem.ERROR_LEVEL: m_errorCount++; break; case ValidationProblem.FATAL_LEVEL: m_fatalCount++; addSkip(problem.getComponent()); break; case ValidationProblem.WARNING_LEVEL: m_warningCount++; break; } } /** * Get list of problems. * * @return problem list */ public ArrayList getProblems() { return m_problemList; } /** * Inner class for handling prevalidation. This visitor implementation just * calls the {@link org.jibx.binding.model#prevalidate} method for each * element visited in preorder. */ protected class PrevalidationVisitor extends ModelVisitor { /* (non-Javadoc) * @see org.jibx.binding.model.ModelVisitor#visit(org.jibx.binding.model.ElementBase) */ public boolean visit(ElementBase node) { try { node.prevalidate(ValidationContext.this); } catch (Throwable t) { addFatal("Error during validation: " + t.getMessage()); t.printStackTrace(); return false; } return true; } } /** * Inner class for handling validation. This visitor implementation just * calls the {@link org.jibx.binding.model#validate} method for each * element visited in postorder. */ protected class ValidationVisitor extends ModelVisitor { /* (non-Javadoc) * @see org.jibx.binding.model.ModelVisitor#exit(org.jibx.binding.model.ElementBase) */ public void exit(ElementBase node) { try { node.validate(ValidationContext.this); } catch (Throwable t) { addFatal("Error during validation: " + t.getMessage()); t.printStackTrace(); } } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/ValidationProblem.java0000644000175000017500000001070210602536560026506 0ustar moellermoeller/* Copyright (c) 2004-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import org.jibx.runtime.ITrackSource; import org.jibx.runtime.ValidationException; /** * Problem reported by model validation. Provides the details for a specific * problem item. * * @author Dennis M. Sosnoski * @version 1.0 */ public class ValidationProblem { // severity levels public static final int WARNING_LEVEL = 0; public static final int ERROR_LEVEL = 1; public static final int FATAL_LEVEL = 2; /** Problem severity level. */ private final int m_severity; /** Supplied problem description message. */ private final String m_message; /** Component that reported problem. */ private final Object m_component; /** * Full constructor. * * @param level severity level of problem * @param msg problem description * @param obj source object for validation error (may be null * if not specific to a particular component) */ /*package*/ ValidationProblem(int level, String msg, Object obj) { m_severity = level; m_message = msg; m_component = obj; } /** * Create description text for a component of a binding definition. * * @param obj binding definition component * @return description */ public static String componentDescription(Object obj) { StringBuffer buff = new StringBuffer(); if (obj instanceof ElementBase) { buff.append(ElementBase.ELEMENT_NAMES[((ElementBase)obj).type()]); buff.append(" element"); } else { String cname = obj.getClass().getName(); int split = cname.lastIndexOf('.'); if (split >= 0) { cname = cname.substring(split+1); } buff.append(cname); } if (obj instanceof ITrackSource) { buff.append(" at "); buff.append(ValidationException.describe(obj)); } else { buff.append(" at unknown location"); } return buff.toString(); } /** * Constructor using default (error) severity level. * * @param msg problem description * @param obj source object for validation error */ /*package*/ ValidationProblem(String msg, Object obj) { this(ERROR_LEVEL, msg, obj); } /** * Get the main binding definition item for the problem. * * @return element or attribute at root of problem */ public Object getComponent() { return m_component; } /** * Get problem description. * * @return problem description */ public String getDescription() { if (m_component == null) { return m_message; } else { return m_message + "; on " + componentDescription(m_component); } } /** * Get problem severity level. * * @return severity level for problem */ public int getSeverity() { return m_severity; } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/ValueElement.java0000644000175000017500000005754710756324440025505 0ustar moellermoeller/* Copyright (c) 2004-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.model; import org.jibx.binding.util.StringArray; import org.jibx.runtime.EnumSet; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.QName; /** * Model component for value element. This element defines a value that * can be represented as a simple text string, which may be expressed as an * attribute, element, or text component of the XML document. * * @author Dennis M. Sosnoski */ public class ValueElement extends ElementBase implements IComponent { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "constant", "format", "ident", "nillable", "style" }, new StringArray(new StringArray (NameAttributes.s_allowedAttributes, PropertyAttributes.s_allowedAttributes), StringAttributes.s_allowedAttributes)); // // Value set information public static final int CDATA_STYLE = 2; public static final int TEXT_STYLE = 3; private static final EnumSet s_styleEnum = new EnumSet(NestingAttributes.s_styleEnum, CDATA_STYLE, new String[] { "cdata", "text" }); public static final int NONE_IDENT = 0; public static final int DEF_IDENT = 1; public static final int REF_IDENT = 2; /* public static final int AUTO_IDENT = 3; */ /*package*/ static final EnumSet s_identEnum = new EnumSet(NONE_IDENT, new String[] { "none", "def", "ref"/*, "auto"*/ }); // // Instance data /** Supplied constant value. */ private String m_constantValue; /** Supplied style name. */ private String m_styleName; /** Actual selected style. */ private int m_styleIndex; /** Supplied identity name. */ private String m_identName = s_identEnum.getName(NONE_IDENT); /** Nillable object flag. */ private boolean m_isNillable; /** Actual selected identity. */ private int m_identIndex; /** Name attributes information for value. */ private NameAttributes m_nameAttrs; /** Property attributes information for value. */ private PropertyAttributes m_propertyAttrs; /** String attributes information for value. */ private StringAttributes m_stringAttrs; /** * Constructor. */ public ValueElement() { super(VALUE_ELEMENT); m_nameAttrs = new NameAttributes(); m_propertyAttrs = new PropertyAttributes(); m_stringAttrs = new StringAttributes(); } /** * Get constant value. * * @return constant value, or null if not a constant */ public String getConstantValue() { return m_constantValue; } /** * Set constant value. * * @param value constant value, or null if not a constant */ public void setConstantValue(String value) { m_constantValue = value; } /** * Get style string value. * * @return style string value */ public String getStyleName() { return m_styleName; } /** * Get style value. This call is only meaningful after validation. * * @return style value */ public int getStyle() { return m_styleIndex; } /** * Set style name. * * @param name style name (null if to use inherited default) */ public void setStyleName(String name) { m_styleName = name; } /** * Get name for style that applies to this value. This call is only * meaningful after validation. * * @return name for style */ public String getEffectiveStyleName() { return s_styleEnum.getName(m_styleIndex); } /** * Set style that applies to this value. If the specified style is different * from the nested default it is applied directly, otherwise this value is * configured to use the default. This method should therefore only be used * when the nested settings are considered fixed. * TODO: implement this with parent links * * @param style style value */ public void setEffectiveStyle(int style) { m_styleIndex = style; m_styleName = s_styleEnum.getName(style); } /** * Get identity string value. * * @return identity string value */ public String getIdentName() { return m_identName; } /** * Get identity value. This call is only meaningful after validation. * * @return identity value */ public int getIdent() { return m_identIndex; } /** * Set identity name. * * @param name identity name */ public void setIdentName(String name) { m_identName = name; } // // Name attribute delegate methods /** * Get name. * * @return name text */ public String getName() { return m_nameAttrs.getName(); } /** * Set name. * * @param name text for name */ public void setName(String name) { m_nameAttrs.setName(name); } /** * Get specified namespace URI. * * @return namespace URI (null if not set) */ public String getUri() { return m_nameAttrs.getUri(); } /** * Set namespace URI. * * @param uri namespace URI (null if not set) */ public void setUri(String uri) { m_nameAttrs.setUri(uri); } /** * Get specified namespace prefix. * * @return namespace prefix (null if not set) */ public String getPrefix() { return m_nameAttrs.getPrefix(); } /** * Set namespace prefix. * * @param prefix namespace prefix (null if not set) */ public void setPrefix(String prefix) { m_nameAttrs.setPrefix(prefix); } /** * Get effective namespace information. This call is only meaningful after * validation. * * @return effective namespace information */ public NamespaceElement getNamespace() { return m_nameAttrs.getNamespace(); } // // Property attribute delegate methods /** * Get usage name. * * @return usage name */ public String getUsageName() { return m_propertyAttrs.getUsageName(); } /** * Get usage value. This call is only meaningful after a call to * {@link #prevalidate(ValidationContext)}. * * @return usage value */ public int getUsage() { return m_propertyAttrs.getUsage(); } /** * Set usage name. * * @param name usage name */ public void setUsageName(String name) { m_propertyAttrs.setUsageName(name); } /** * Set usage value. * * @param use value */ public void setUsage(int use) { m_propertyAttrs.setUsage(use); } /** * Check if property is defined. This method is only meaningful after * a call to {@link #prevalidate(ValidationContext)}. * * @return true if property defined, false if not */ public boolean hasProperty() { return m_propertyAttrs.hasProperty(); } /** * Get declared type name. * * @return type name (or null if none) */ public String getDeclaredType() { return m_propertyAttrs.getDeclaredType(); } /** * Set declared type name. * * @param type name (or null if none) */ public void setDeclaredType(String type) { m_propertyAttrs.setDeclaredType(type); } /** * Get field name. * * @return field name (or null if none) */ public String getFieldName() { return m_propertyAttrs.getFieldName(); } /** * Get field information. This call is only meaningful after a call to * {@link #prevalidate(ValidationContext)}. * * @return field information (or null if none) */ public IClassItem getField() { return m_propertyAttrs.getField(); } /** * Set field name. * * @param field field name (or null if none) */ public void setFieldName(String field) { m_propertyAttrs.setFieldName(field); } /** * Get test method name. * * @return test method name (or null if none) */ public String getTestName() { return m_propertyAttrs.getTestName(); } /** * Get test method information. This call is only meaningful after a call to * {@link #prevalidate(ValidationContext)}. * * @return test method information (or null if none) */ public IClassItem getTest() { return m_propertyAttrs.getTest(); } /** * Set test method name. * * @param test test method name (or null if none) */ public void setTestName(String test) { m_propertyAttrs.setTestName(test); } /** * Get get method name. * * @return get method name (or null if none) */ public String getGetName() { return m_propertyAttrs.getGetName(); } /** * Get get method information. This call is only meaningful after a call to * {@link #prevalidate(ValidationContext)}. * * @return get method information (or null if none) */ public IClassItem getGet() { return m_propertyAttrs.getGet(); } /** * Get type for value loaded to stack. This call is only meaningful after a * call to {@link #prevalidate(ValidationContext)}. * * @return get value type (or null if none) */ public IClass getGetType() { return m_propertyAttrs.getGetType(); } /** * Set get method name. * * @param get get method name (or null if none) */ public void setGetName(String get) { m_propertyAttrs.setGetName(get); } /** * Get set method name. * * @return set method name (or null if none) */ public String getSetName() { return m_propertyAttrs.getSetName(); } /** * Get set method information. This call is only meaningful after a call to * {@link #prevalidate(ValidationContext)}. * * @return set method information (or null if none) */ public IClassItem getSet() { return m_propertyAttrs.getSet(); } /** * Get type for value stored from stack. This call is only meaningful after * a call to {@link #prevalidate(ValidationContext)}. * * @return set value type (or null if none) */ public IClass getSetType() { return m_propertyAttrs.getSetType(); } /** * Set set method name. * * @param set set method name (or null if none) */ public void setSetName(String set) { m_propertyAttrs.setSetName(set); } /** * Check if nillable object. * * @return nillable flag */ public boolean isNillable() { return m_isNillable; } /** * Set nillable flag. * * @param nillable flag */ public void setNillable(boolean nillable) { m_isNillable = nillable; } /** * Check if this value implicitly uses the containing object. This call * is only meaningful after a call to * {@link #prevalidate(ValidationContext)}. * * @return true if using the containing object, * false if own value */ public boolean isImplicit() { return m_propertyAttrs.isImplicit(); } // // String attribute delegate methods /** * Get default value text. * * @return default value text */ public String getDefaultText() { return m_stringAttrs.getDefaultText(); } /** * Get default value. This call is only meaningful after validation. * * @return default value object */ public Object getDefault() { return m_stringAttrs.getDefault(); } /** * Set default value text. * * @param value default value text */ public void setDefaultText(String value) { m_stringAttrs.setDefaultText(value); } /** * Get enum value method information. This method is only usable after a * call to {@link #validate(ValidationContext)}. * * @return enum value method information (or null if none) */ public IClassItem getEnumValue() { return m_stringAttrs.getEnumValue(); } /** * Get enum value method name. * * @return enum value method name (or null if none) */ public String getEnumValueName() { return m_stringAttrs.getEnumValueName(); } /** * Set enum value method name. * * @param name enum value method name (null if none) */ public void setEnumValueName(String name) { m_stringAttrs.setEnumValueName(name); } /** * Get base format name. * * @return referenced base format */ public String getFormatName() { return m_stringAttrs.getFormatName(); } /** * Set base format name. * * @param name referenced base format */ public void setFormatName(String name) { m_stringAttrs.setFormatName(name); } /** * Get format qualified name. * * @return format qualified name (null if none) */ public QName getFormatQName() { return m_stringAttrs.getFormatQName(); } /** * Set format qualified name. This method changes the label value to match * the qualified name. * * @return format qualified name (null if none) */ public void setFormatQName(QName qname) { m_stringAttrs.setFormatQName(qname); } /** * Get serializer name. * * @return fully qualified class and method name for serializer (or * null if none) */ public String getSerializerName() { return m_stringAttrs.getSerializerName(); } /** * Get serializer method information. This call is only meaningful after * validation. * * @return serializer information (or null if none) */ public IClassItem getSerializer() { return m_stringAttrs.getSerializer(); } /** * Set serializer method name. * * @param fully qualified class and method name for serializer */ public void setSerializerName(String name) { m_stringAttrs.setSerializerName(name); } /** * Get deserializer name. * * @return fully qualified class and method name for deserializer (or * null if none) */ public String getDeserializerName() { return m_stringAttrs.getDeserializerName(); } /** * Get deserializer method information. This call is only meaningful after * validation. * * @return deserializer information (or null if none) */ public IClassItem getDeserializer() { return m_stringAttrs.getDeserializer(); } /** * Set deserializer method name. * * @param fully qualified class and method name for deserializer */ public void setDeserializerName(String name) { m_stringAttrs.setDeserializerName(name); } // // IComponent implementation methods (also delegated name methods) /* (non-Javadoc) * @see org.jibx.binding.model.IComponent#hasAttribute() */ public boolean hasAttribute() { return m_styleIndex == NestingAttributes.ATTRIBUTE_STYLE; } /* (non-Javadoc) * @see org.jibx.binding.model.IComponent#hasContent() */ public boolean hasContent() { return m_styleIndex != NestingAttributes.ATTRIBUTE_STYLE; } /* (non-Javadoc) * @see org.jibx.binding.model.IComponent#isOptional() */ public boolean isOptional() { return m_propertyAttrs.getUsage() == PropertyAttributes.OPTIONAL_USAGE; } /* (non-Javadoc) * @see org.jibx.binding.model.IComponent#hasName() */ public boolean hasName() { return m_nameAttrs.getName() != null; } /* (non-Javadoc) * @see org.jibx.binding.model.IComponent#getType() */ public IClass getType() { return m_propertyAttrs.getType(); } // // Validation methods /** * Make sure all attributes are defined. * * @param uctx unmarshalling context * @exception JiBXException on unmarshalling error */ private void preSet(IUnmarshallingContext uctx) throws JiBXException { validateAttributes(uctx, s_allowedAttributes); } /* (non-Javadoc) * @see org.jibx.binding.model.ElementBase#prevalidate(org.jibx.binding.model.ValidationContext) */ public void prevalidate(ValidationContext vctx) { // set the style value if (m_styleName != null) { m_styleIndex = s_styleEnum.getValue(m_styleName); if (m_styleIndex < 0) { vctx.addError("Value \"" + m_styleName + "\" is not a valid choice for style"); } } else { m_styleIndex = vctx.getParentElement().getDefaultStyle(); } // validate ID classification m_identIndex = s_identEnum.getValue(m_identName); if (m_identIndex < 0) { vctx.addError("Value \"" + m_identName + " is not a valid choice for ident"); } // validate basic attribute groups m_propertyAttrs.prevalidate(vctx); m_nameAttrs.setIsAttribute (m_styleIndex == NestingAttributes.ATTRIBUTE_STYLE); m_nameAttrs.prevalidate(vctx); if (m_styleIndex == CDATA_STYLE || m_styleIndex == TEXT_STYLE) { if (m_nameAttrs.getName() != null) { vctx.addFatal("Values with \"text\" or \"cdata\" style " + "cannot have names"); } } else { if (m_nameAttrs.getName() == null) { vctx.addFatal ("Missing required name for element or attribute value"); } } // make sure value is not constant if (m_constantValue == null) { // make sure nillable only for optional element with object if (m_isNillable) { if (m_styleIndex != NestingAttributes.ELEMENT_STYLE) { vctx.addFatal("nillable can only be used with element style"); } } // process ID classification if (m_identIndex == DEF_IDENT/* || m_identIndex == AUTO_IDENT*/) { boolean valid = false; IClass gclas = m_propertyAttrs.getGetType(); if (gclas != null) { String gtype = gclas.getName(); if (gtype.equals("java.lang.String")) { vctx.getContextObject().setIdChild(this, vctx); valid = true; } } if (!valid) { vctx.addError("ID property must supply a " + "java.lang.String value"); } } // check string attributes only if valid to this point if (!vctx.isSkipped(this)) { // handle string attributes based on identity type if (m_identIndex == REF_IDENT) { if (m_propertyAttrs.isImplicit()) { vctx.addFatal ("No property value - ID reference can only " + "be used with a property of the appropriate type"); } if (m_stringAttrs.getDeserializerName() != null || m_stringAttrs.getSerializerName() != null || m_stringAttrs.getFormatName() != null || m_stringAttrs.getDefaultText() != null) { vctx.addWarning("String attributes serializer, " + "deserializer, format, and default are " + "prohibited with ID references"); } } else { m_stringAttrs.setType(m_propertyAttrs.getType()); m_stringAttrs.prevalidate(vctx); } super.prevalidate(vctx); } } else { // check prohibited attributes with constant value if (m_identIndex != NONE_IDENT) { vctx.addFatal("ident value must be \"none\" for constant"); } else if (m_propertyAttrs.hasProperty() || m_propertyAttrs.getDeclaredType() != null) { vctx.addFatal ("Property attributes cannot be used with constant"); } else if (m_stringAttrs.getDefaultText() != null || m_stringAttrs.getDeserializerName() != null || m_stringAttrs.getSerializerName() != null || m_stringAttrs.getFormatName() != null) { vctx.addFatal("String attributes cannot be used with constant"); } else if (m_isNillable) { vctx.addFatal("nillable cannot be used with constant"); } } } /* (non-Javadoc) * @see org.jibx.binding.model.ElementBase#validate(org.jibx.binding.model.ValidationContext) */ public void validate(ValidationContext vctx) { // validate basic attributes m_nameAttrs.validate(vctx); m_propertyAttrs.validate(vctx); if (!vctx.isSkipped(this)) { // check identity references for compatible objects if (m_identIndex == REF_IDENT) { String type = m_propertyAttrs.getType().getName(); if (!vctx.getBindingRoot().isIdClass(type)) { vctx.addError("No ID definitions for compatible type"); } } super.validate(vctx); } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/model/binding.xml0000644000175000017500000002411210752421640024362 0ustar moellermoeller libjibx-java-1.1.6a/build/src/org/jibx/binding/util/0000755000175000017500000000000011023035622022074 5ustar moellermoellerlibjibx-java-1.1.6a/build/src/org/jibx/binding/util/ArrayMap.java0000644000175000017500000000744210524407520024467 0ustar moellermoeller/* Copyright (c) 2003-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.util; import java.util.ArrayList; import java.util.HashMap; /** * Array with reverse mapping from values to indices. This operates as the * combination of an array with ordinary int indices and a hashmap from values * back to the corresponding index position. Values are assured to be unique. * * @author Dennis M. Sosnoski */ public class ArrayMap { /** Array of values. */ private ArrayList m_array; /** Map from values to indices. */ private HashMap m_map; /** * Default constructor. */ public ArrayMap() { m_array = new ArrayList(); m_map = new HashMap(); } /** * Constructor with initial capacity supplied. * * @param size initial capacity for array map */ public ArrayMap(int size) { m_array = new ArrayList(size); m_map = new HashMap(size); } /** * Get value for index. The index must be within the valid range (from 0 to * one less than the number of values present). * * @param index number to be looked up * @return value at that index position */ public Object get(int index) { return m_array.get(index); } /** * Find existing object. If the supplied value object is present in the * array map its index position is returned. * * @param obj value to be found * @return index number assigned to value, or -1 if not found */ public int find(Object obj) { Integer index = (Integer)m_map.get(obj); if (index == null) { return -1; } else { return index.intValue(); } } /** * Add object. If the supplied value object is already present in the array * map the existing index position is returned. * * @param obj value to be added * @return index number assigned to value */ public int findOrAdd(Object obj) { Integer index = (Integer)m_map.get(obj); if (index == null) { index = IntegerCache.getInteger(m_array.size()); m_map.put(obj, index); m_array.add(obj); } return index.intValue(); } /** * Get count of values present. * * @return number of values in array map */ public int size() { return m_array.size(); } }libjibx-java-1.1.6a/build/src/org/jibx/binding/util/IntegerCache.java0000644000175000017500000000635610210703674025300 0ustar moellermoeller/* Copyright (c) 2003-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.util; /** * Cache of Integer values. This is designed on the assumption that * clients will start with zero and work their way up from there. By holding * created instances in an array it allows for full reuse. * * @author Dennis M. Sosnoski * @version 1.0 */ public abstract class IntegerCache { /** Initial set of index values supported. */ private static Integer[] s_integers = { new Integer(0), new Integer(1), new Integer(2), new Integer(3), new Integer(4), new Integer(5), new Integer(6), new Integer(7) }; /** * Get Integer for value. * * @param value non-negative integer value * @return corresponding Integer value */ public static Integer getInteger(int value) { if (value >= s_integers.length) { // Note that in multithreaded operation there's a chance of two // threads getting in a race condition here, but the worst that // can happen is that the array gets extended more than it needs // to be. Threads just using the array are safe - though if they // get an old version they may again extend the array // unnecessarily. synchronized(IntegerCache.class) { int size = s_integers.length * 3 / 2; if (size <= value) { size = value + 1; } Integer[] ints = new Integer[size]; System.arraycopy(s_integers, 0, ints, 0, s_integers.length); for (int i = 0; i < size; i++) { ints[i] = new Integer(i); } s_integers = ints; } } return s_integers[value]; } } libjibx-java-1.1.6a/build/src/org/jibx/binding/util/MultipleValueMap.java0000644000175000017500000002167210673571654026221 0ustar moellermoeller/* Copyright (c) 2006-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.util; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.NoSuchElementException; import java.util.Set; import org.jibx.binding.model.EmptyList; /** * Map supporting multiple values for a single key. The multiple value concept * doesn't really fit with the standard collections idea of a map, so this * provides its own variation of a map interface rather than extend the standard * one. * * @author Dennis M. Sosnoski */ public class MultipleValueMap { /** Backing map from key to value or array of values. */ private final HashMap m_backingMap; /** Actual number of values (not keys) present in map. */ private int m_valueCount; /** Last lookup key (null if none, or if value changed). */ private Object m_lastKey; /** Last lookup value (null if none, or if value changed). */ private Object m_lastValue; /** * Constructor. */ public MultipleValueMap() { super(); m_backingMap = new HashMap(); } /** * Internal cached lookup. * * @param key * @return value */ private Object getMapped(Object key) { if (key != m_lastKey) { m_lastKey = key; m_lastValue = m_backingMap.get(key); } return m_lastValue; } /** * Clear all entries. */ public void clear() { m_backingMap.clear(); m_valueCount = 0; } /** * Get number of values present for key. * * @param key * @return value count */ public int getCount(Object key) { Object obj = getMapped(key); if (obj instanceof MultipleValueList) { return ((MultipleValueList)obj).size(); } else if (obj == null) { return 0; } else { return 1; } } /** * Get indexed value for key. * * @param key * @param index * @return value */ public Object get(Object key, int index) { Object obj = getMapped(key); if (obj instanceof MultipleValueList) { return ((MultipleValueList)obj).get(index); } else if (obj == null) { throw new IndexOutOfBoundsException("No value present for key"); } else if (index == 0) { return obj; } else { throw new IndexOutOfBoundsException("Only one value present for key"); } } /** * Add value for key. * * @param key * @param value */ public void add(Object key, Object value) { // first force caching of current value getMapped(key); // update value as appropriate if (m_lastValue == null) { m_backingMap.put(key, value); m_lastValue = value; } else if (m_lastValue instanceof MultipleValueList) { ((MultipleValueList)m_lastValue).add(value); } else { MultipleValueList list = new MultipleValueList(); list.add(m_lastValue); list.add(value); m_backingMap.put(key, list); m_lastValue = list; } m_valueCount++; } /** * Get all values for key. This returns the value(s) from the map and * returns them in the form of a list. * * @param key * @return list of values */ public ArrayList get(Object key) { Object obj = m_backingMap.get(key); if (obj instanceof MultipleValueList) { return (MultipleValueList)obj; } else if (obj == null) { return EmptyList.INSTANCE; } else { MultipleValueList list = new MultipleValueList(); list.add(obj); return list; } } /** * Extract all values for key. This removes the value(s) from the map and * returns them in the form of a list. * * @param key * @return prior list of values */ public ArrayList extract(Object key) { ArrayList result = get(key); m_backingMap.remove(key); return result; } /** * Get number of keys. * * @return key count */ public int keySize() { return m_backingMap.size(); } /** * Get number of values. * * @return value count */ public int valueSize() { return m_valueCount; } /** * Get iterator over only the multiple-valued keys present in the map. * * @return iterator */ public Iterator multipleIterator() { return new MultipleIterator(); } // // Delegated methods /** * Check key present in map. * * @param key * @return key present flag */ public boolean containsKey(Object key) { return m_backingMap.containsKey(key); } /** * Check if map is empty. * * @return empty flag */ public boolean isEmpty() { return m_backingMap.isEmpty(); } /** * Get key set. * * @return set of keys */ public Set keySet() { return m_backingMap.keySet(); } /** * List used for multiple values. This is just a marker, so that the actual * values can be anything at all (including lists). */ private static class MultipleValueList extends ArrayList { public MultipleValueList() {} } /** * Iterator for only the multiple-valued keys in the map. */ public class MultipleIterator implements Iterator { /** Current key value has been consumed flag. */ private boolean m_isConsumed; /** Current key, null if past end. */ private Object m_currentKey; /** Iterator through keys present in map. */ private Iterator m_keyIterator; /** * Constructor. This initializes the key iterator and next key values. */ protected MultipleIterator() { m_keyIterator = keySet().iterator(); m_isConsumed = true; } /** * Advance to next multiple-valued key in map. */ private void advance() { if (m_isConsumed) { m_isConsumed = false; m_currentKey = null; while (m_keyIterator.hasNext()) { Object key = m_keyIterator.next(); if (getCount(key) > 1) { m_currentKey = key; break; } } } } /** * Check for another multiple-valued key present. * * @return true if present, false if not */ public boolean hasNext() { advance(); return m_currentKey != null; } /** * Get the next multiple-valued key in map. This returns the current * next key, advancing to the next next key. * * @return next multiple-valued key */ public Object next() { advance(); if (m_currentKey == null) { throw new NoSuchElementException("Past end of list"); } else { m_isConsumed = true; return m_currentKey; } } /** * Remove current multiple-valued key. */ public void remove() { m_keyIterator.remove(); } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/util/NameUtilities.java0000644000175000017500000000514210752422106025522 0ustar moellermoeller/* * Copyright (c) 2008, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.util; /** * Support methods for name conversions. */ public class NameUtilities { /** * Convert potentially plural name to singular form. TODO: internationalization? * * @param name base name * @return singularized name */ public static String depluralize(String name) { if (name.endsWith("ies")) { return name.substring(0, name.length() - 3) + 'y'; } else if (name.endsWith("sses")) { return name.substring(0, name.length() - 2); } else if (name.endsWith("s")) { return name.substring(0, name.length() - 1); } else { return name; } } /** * Convert singular name to plural form. TODO: internationalization? * * @param name base name * @return plural name */ public static String pluralize(String name) { if (name.endsWith("y")) { return name.substring(0, name.length() - 1) + "ies"; } else if (name.endsWith("ss")) { return name + "es"; } else { return name + 's'; } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/util/ObjectStack.java0000644000175000017500000002372710524427624025162 0ustar moellermoeller/* Copyright (c) 2000-2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.util; import java.lang.reflect.Array; /** * Growable Object stack with type specific access methods. This * implementation is unsynchronized in order to provide the best possible * performance for typical usage scenarios, so explicit synchronization must * be implemented by a wrapper class or directly by the application in cases * where instances are modified in a multithreaded environment. * * @author Dennis M. Sosnoski */ public class ObjectStack { /** Default initial array size. */ public static final int DEFAULT_SIZE = 8; /** Size of the current array. */ protected int m_countLimit; /** The number of values currently present in the stack. */ protected int m_countPresent; /** Maximum size increment for growing array. */ protected int m_maximumGrowth; /** The underlying array used for storing the data. */ protected Object[] m_baseArray; /** * Constructor with full specification. * * @param size number of Object values initially allowed in * stack * @param growth maximum size increment for growing stack */ public ObjectStack(int size, int growth) { m_countLimit = size; m_maximumGrowth = growth; m_baseArray = new Object[size]; } /** * Constructor with initial size specified. * * @param size number of Object values initially allowed in * stack */ public ObjectStack(int size) { this(size, Integer.MAX_VALUE); } /** * Default constructor. */ public ObjectStack() { this(DEFAULT_SIZE); } /** * Copy (clone) constructor. * * @param base instance being copied */ public ObjectStack(ObjectStack base) { this(base.m_countLimit, base.m_maximumGrowth); System.arraycopy(base.m_baseArray, 0, m_baseArray, 0, base.m_countPresent); m_countPresent = base.m_countPresent; } /** * Constructor from array of strings. * * @param strings array of strings for initial contents */ public ObjectStack(Object[] strings) { this(strings.length); System.arraycopy(strings, 0, m_baseArray, 0, strings.length); m_countPresent = strings.length; } /** * Copy data after array resize. This just copies the entire contents of the * old array to the start of the new array. It should be overridden in cases * where data needs to be rearranged in the array after a resize. * * @param base original array containing data * @param grown resized array for data */ private void resizeCopy(Object base, Object grown) { System.arraycopy(base, 0, grown, 0, Array.getLength(base)); } /** * Discards values for a range of indices in the array. Checks if the * values stored in the array are object references, and if so clears * them. If the values are primitives, this method does nothing. * * @param from index of first value to be discarded * @param to index past last value to be discarded */ private void discardValues(int from, int to) { for (int i = from; i < to; i++) { m_baseArray[i] = null; } } /** * Increase the size of the array to at least a specified size. The array * will normally be at least doubled in size, but if a maximum size * increment was specified in the constructor and the value is less than * the current size of the array, the maximum increment will be used * instead. If the requested size requires more than the default growth, * the requested size overrides the normal growth and determines the size * of the replacement array. * * @param required new minimum size required */ private void growArray(int required) { int size = Math.max(required, m_countLimit + Math.min(m_countLimit, m_maximumGrowth)); Object[] grown = new Object[size]; resizeCopy(m_baseArray, grown); m_countLimit = size; m_baseArray = grown; } /** * Ensure that the array has the capacity for at least the specified * number of values. * * @param min minimum capacity to be guaranteed */ public final void ensureCapacity(int min) { if (min > m_countLimit) { growArray(min); } } /** * Push a value on the stack. * * @param value value to be added */ public void push(Object value) { int index = getAddIndex(); m_baseArray[index] = value; } /** * Pop a value from the stack. * * @return value from top of stack * @exception ArrayIndexOutOfBoundsException on attempt to pop empty stack */ public Object pop() { if (m_countPresent > 0) { Object value = m_baseArray[--m_countPresent]; m_baseArray[m_countPresent] = null; return value; } else { throw new ArrayIndexOutOfBoundsException ("Attempt to pop empty stack"); } } /** * Pop multiple values from the stack. The last value popped is the * one returned. * * @param count number of values to pop from stack (must be strictly * positive) * @return value from top of stack * @exception ArrayIndexOutOfBoundsException on attempt to pop past end of * stack */ public Object pop(int count) { if (count < 0) { throw new IllegalArgumentException("Count must be greater than 0"); } else if (m_countPresent >= count) { m_countPresent -= count; Object value = m_baseArray[m_countPresent]; discardValues(m_countPresent, m_countPresent + count); return value; } else { throw new ArrayIndexOutOfBoundsException ("Attempt to pop past end of stack"); } } /** * Copy a value from the stack. This returns a value from within * the stack without modifying the stack. * * @param depth depth of value to be returned * @return value from stack * @exception ArrayIndexOutOfBoundsException on attempt to peek past end of * stack */ public Object peek(int depth) { if (m_countPresent > depth) { return m_baseArray[m_countPresent - depth - 1]; } else { throw new ArrayIndexOutOfBoundsException ("Attempt to peek past end of stack"); } } /** * Copy top value from the stack. This returns the top value without * removing it from the stack. * * @return value at top of stack * @exception ArrayIndexOutOfBoundsException on attempt to peek empty stack */ public Object peek() { return peek(0); } /** * Constructs and returns a simple array containing the same data as held * in this stack. Note that the items will be in reverse pop order, with * the last item to be popped from the stack as the first item in the * array. * * @return array containing a copy of the data */ public Object[] toArray() { Object[] copy = new Object[m_countPresent]; System.arraycopy(m_baseArray, 0, copy, 0, m_countPresent); return copy; } /** * Duplicates the object with the generic call. * * @return a copy of the object */ public Object clone() { return new ObjectStack(this); } /** * Gets the array offset for appending a value to those in the stack. * If the underlying array is full, it is grown by the appropriate size * increment so that the index value returned is always valid for the * array in use by the time of the return. * * @return index position for added element */ private int getAddIndex() { int index = m_countPresent++; if (m_countPresent > m_countLimit) { growArray(m_countPresent); } return index; } /** * Get the number of values currently present in the stack. * * @return count of values present */ public int size() { return m_countPresent; } /** * Check if stack is empty. * * @return true if stack empty, false if not */ public boolean isEmpty() { return m_countPresent == 0; } /** * Set the stack to the empty state. */ public void clear() { discardValues(0, m_countPresent); m_countPresent = 0; } }libjibx-java-1.1.6a/build/src/org/jibx/binding/util/SparseStack.java0000644000175000017500000000675610524427624025214 0ustar moellermoeller/* Copyright (c) 2005-2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.util; import org.jibx.runtime.IntStack; /** * Stack for values that depend on the level of nesting, where only some of the * levels change the current value. * * @author Dennis M. Sosnoski */ public class SparseStack { /** Current item. */ private Object m_current; /** Current nesting level. */ private int m_level; /** Levels with different items (paired with m_items stack). */ private IntStack m_levels; /** Stack of different items (paired with m_levels stack). */ private ObjectStack m_items; /** * Constructor with initial value. * * @param current initial value */ public SparseStack(Object current) { // initialize so peek always works m_levels = new IntStack(); m_levels.push(-1); m_items = new ObjectStack(); m_items.push(current); m_current = current; } /** * Constructor with no initial value. */ public SparseStack() { this(null); } /** * Get current object. * * @return current */ public Object getCurrent() { return m_current; } /** * Set current object. * * @param obj set the current object */ public void setCurrent(Object obj) { m_current = obj; } /** * Enter a level of nesting. */ public void enter() { if (m_current != m_items.peek()) { m_levels.push(m_level); m_items.push(m_current); } m_level++; } /** * Exit a level of nesting with changed item returned. * * @return item that was active until this exit, or null if * same item still active */ public Object exit() { m_level--; if (m_level == m_levels.peek()) { Object obj = m_current; m_levels.pop(); m_current = m_items.pop(); return obj; } else { return null; } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/util/StringArray.java0000644000175000017500000001473210524427624025227 0ustar moellermoellerpackage org.jibx.binding.util; /** * Wrapper for arrays of ordered strings. This verifies the arrays and supports * efficient lookups. * * @author Dennis M. Sosnoski */ public class StringArray { /** Ordered array of strings. */ private final String[] m_list; /** * Constructor from array of values. This checks the array values to make * sure they're ordered and unique, and if they're not throws an exception. * Once the array has been passed to this constructor it must not be * modified by outside code. * * @param list array of values */ public StringArray(String[] list) { validateArray(list); m_list = list; } /** * Constructor from array of values to be added to base instance. This * merges the array values, making sure they're ordered and unique, and if * they're not throws an exception. * * @param list array of values * @param base base instance */ public StringArray(String[] list, StringArray base) { validateArray(list); m_list = mergeArrays(list, base.m_list); } /** * Constructor from pair of base instances. This merges the values, making * sure they're unique, and if they're not throws an exception. * * @param array1 first base array * @param array2 second base array */ public StringArray(StringArray array1, StringArray array2) { m_list = mergeArrays(array1.m_list, array2.m_list); } /** * Constructor from array of values to be added to pair of base instances. * This merges the array values, making sure they're ordered and unique, and * if they're not throws an exception. * * @param list array of values * @param array1 first base array * @param array2 second base array */ public StringArray(String[] list, StringArray array1, StringArray array2) { validateArray(list); m_list = mergeArrays(list, mergeArrays(array1.m_list, array2.m_list)); } /** * Constructor from array of values to be added to three base instances. * This merges the array values, making sure they're ordered and unique, and * if they're not throws an exception. * * @param list array of values * @param array1 first base array * @param array2 second base array * @param array3 third base array */ public StringArray(String[] list, StringArray array1, StringArray array2, StringArray array3) { validateArray(list); m_list = mergeArrays(list, mergeArrays(array1.m_list, mergeArrays(array2.m_list, array3.m_list))); } /** * Constructor from array of values to be added to four base instances. * This merges the array values, making sure they're ordered and unique, and * if they're not throws an exception. * * @param list array of values * @param array1 first base array * @param array2 second base array * @param array3 third base array * @param array4 fourth base array */ public StringArray(String[] list, StringArray array1, StringArray array2, StringArray array3, StringArray array4) { validateArray(list); m_list = mergeArrays(list, mergeArrays(array1.m_list, mergeArrays(array2.m_list, mergeArrays(array3.m_list, array4.m_list)))); } /** * Merge a pair of ordered arrays into a single array. The two source arrays * must not contain any values in common. * * @param list1 first ordered array * @param list2 second ordered array * @return merged array */ private String[] mergeArrays(String[] list1, String[] list2) { String[] merge = new String[list1.length + list2.length]; int fill = 0; int i = 0; int j = 0; while (i < list1.length && j < list2.length) { int diff = list2[j].compareTo(list1[i]); if (diff > 0) { merge[fill++] = list1[i++]; } else if (diff < 0) { merge[fill++] = list2[j++]; } else { throw new IllegalArgumentException ("Repeated value not allowed: \"" + list1[i] + '"'); } } if (i < list1.length) { System.arraycopy(list1, i, merge, fill, list1.length-i); } if (j < list2.length) { System.arraycopy(list2, j, merge, fill, list2.length-j); } return merge; } /** * Make sure passed-in array contains values that are in order and without * duplicate values. * * @param list */ private void validateArray(String[] list) { if (list.length > 0) { String last = list[0]; int index = 0; while (++index < list.length) { String comp = list[index]; int diff = last.compareTo(comp); if (diff > 0) { throw new IllegalArgumentException ("Array values are not ordered"); } else if (diff < 0) { last = comp; } else { throw new IllegalArgumentException ("Duplicate values in array"); } } } } /** * Get string at a particular index in the list. * * @param index list index to be returned * @return string at that index position */ public String get(int index) { return m_list[index]; } /** * Find index of a particular string in the array. This does * a binary search through the array values, using a pair of * index bounds to track the subarray of possible matches at * each iteration. * * @param value string to be found in list * @return index of string in array, or -1 if * not present */ public int indexOf(String value) { int base = 0; int limit = m_list.length - 1; while (base <= limit) { int cur = (base + limit) >> 1; int diff = value.compareTo(m_list[cur]); if (diff < 0) { limit = cur - 1; } else if (diff > 0) { base = cur + 1; } else { return cur; } } return -1; } /** * Get number of values in array * * @return number of values in array */ public int size() { return m_list.length; } }libjibx-java-1.1.6a/build/src/org/jibx/binding/util/StringStack.java0000644000175000017500000002375710524427624025225 0ustar moellermoeller/* Copyright (c) 2000-2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.util; import java.lang.reflect.Array; /** * Growable String stack with type specific access methods. This * implementation is unsynchronized in order to provide the best possible * performance for typical usage scenarios, so explicit synchronization must * be implemented by a wrapper class or directly by the application in cases * where instances are modified in a multithreaded environment. * * @author Dennis M. Sosnoski */ public class StringStack { /** Default initial array size. */ public static final int DEFAULT_SIZE = 8; /** Size of the current array. */ private int m_countLimit; /** The number of values currently present in the stack. */ private int m_countPresent; /** Maximum size increment for growing array. */ private int m_maximumGrowth; /** The underlying array used for storing the data. */ private String[] m_baseArray; /** * Constructor with full specification. * * @param size number of String values initially allowed in * stack * @param growth maximum size increment for growing stack */ public StringStack(int size, int growth) { String[] array = new String[size]; m_countLimit = size; m_maximumGrowth = growth; m_baseArray = array; } /** * Constructor with initial size specified. * * @param size number of String values initially allowed in * stack */ public StringStack(int size) { this(size, Integer.MAX_VALUE); } /** * Default constructor. */ public StringStack() { this(DEFAULT_SIZE); } /** * Copy (clone) constructor. * * @param base instance being copied */ public StringStack(StringStack base) { this(base.m_countLimit, base.m_maximumGrowth); System.arraycopy(base.m_baseArray, 0, m_baseArray, 0, base.m_countPresent); m_countPresent = base.m_countPresent; } /** * Constructor from array of strings. * * @param strings array of strings for initial contents */ public StringStack(String[] strings) { this(strings.length); System.arraycopy(strings, 0, m_baseArray, 0, strings.length); m_countPresent = strings.length; } /** * Copy data after array resize. This just copies the entire contents of the * old array to the start of the new array. It should be overridden in cases * where data needs to be rearranged in the array after a resize. * * @param base original array containing data * @param grown resized array for data */ private void resizeCopy(Object base, Object grown) { System.arraycopy(base, 0, grown, 0, Array.getLength(base)); } /** * Discards values for a range of indices in the array. Checks if the * values stored in the array are object references, and if so clears * them. If the values are primitives, this method does nothing. * * @param from index of first value to be discarded * @param to index past last value to be discarded */ private void discardValues(int from, int to) { for (int i = from; i < to; i++) { m_baseArray[i] = null; } } /** * Increase the size of the array to at least a specified size. The array * will normally be at least doubled in size, but if a maximum size * increment was specified in the constructor and the value is less than * the current size of the array, the maximum increment will be used * instead. If the requested size requires more than the default growth, * the requested size overrides the normal growth and determines the size * of the replacement array. * * @param required new minimum size required */ private void growArray(int required) { int size = Math.max(required, m_countLimit + Math.min(m_countLimit, m_maximumGrowth)); String[] grown = new String[size]; resizeCopy(m_baseArray, grown); m_countLimit = size; m_baseArray = grown; } /** * Ensure that the array has the capacity for at least the specified * number of values. * * @param min minimum capacity to be guaranteed */ public final void ensureCapacity(int min) { if (min > m_countLimit) { growArray(min); } } /** * Push a value on the stack. * * @param value value to be added */ public void push(String value) { int index = getAddIndex(); m_baseArray[index] = value; } /** * Pop a value from the stack. * * @return value from top of stack * @exception ArrayIndexOutOfBoundsException on attempt to pop empty stack */ public String pop() { if (m_countPresent > 0) { String value = m_baseArray[--m_countPresent]; m_baseArray[m_countPresent] = null; return value; } else { throw new ArrayIndexOutOfBoundsException ("Attempt to pop empty stack"); } } /** * Pop multiple values from the stack. The last value popped is the * one returned. * * @param count number of values to pop from stack (must be strictly * positive) * @return value from top of stack * @exception ArrayIndexOutOfBoundsException on attempt to pop past end of * stack */ public String pop(int count) { if (count < 0) { throw new IllegalArgumentException("Count must be greater than 0"); } else if (m_countPresent >= count) { m_countPresent -= count; String value = m_baseArray[m_countPresent]; discardValues(m_countPresent, m_countPresent + count); return value; } else { throw new ArrayIndexOutOfBoundsException ("Attempt to pop past end of stack"); } } /** * Copy a value from the stack. This returns a value from within * the stack without modifying the stack. * * @param depth depth of value to be returned * @return value from stack * @exception ArrayIndexOutOfBoundsException on attempt to peek past end of * stack */ public String peek(int depth) { if (m_countPresent > depth) { return m_baseArray[m_countPresent - depth - 1]; } else { throw new ArrayIndexOutOfBoundsException ("Attempt to peek past end of stack"); } } /** * Copy top value from the stack. This returns the top value without * removing it from the stack. * * @return value at top of stack * @exception ArrayIndexOutOfBoundsException on attempt to peek empty stack */ public String peek() { return peek(0); } /** * Constructs and returns a simple array containing the same data as held * in this stack. Note that the items will be in reverse pop order, with * the last item to be popped from the stack as the first item in the * array. * * @return array containing a copy of the data */ public String[] toArray() { String[] copy = new String[m_countPresent]; System.arraycopy(m_baseArray, 0, copy, 0, m_countPresent); return copy; } /** * Duplicates the object with the generic call. * * @return a copy of the object */ public Object clone() { return new StringStack(this); } /** * Gets the array offset for appending a value to those in the stack. * If the underlying array is full, it is grown by the appropriate size * increment so that the index value returned is always valid for the * array in use by the time of the return. * * @return index position for added element */ private int getAddIndex() { int index = m_countPresent++; if (m_countPresent > m_countLimit) { growArray(m_countPresent); } return index; } /** * Get the number of values currently present in the stack. * * @return count of values present */ public int size() { return m_countPresent; } /** * Check if stack is empty. * * @return true if stack empty, false if not */ public boolean isEmpty() { return m_countPresent == 0; } /** * Set the stack to the empty state. */ public void clear() { discardValues(0, m_countPresent); m_countPresent = 0; } }libjibx-java-1.1.6a/build/src/org/jibx/binding/BindingGenerator.java0000644000175000017500000014022011005500336025201 0ustar moellermoeller/* Copyright (c) 2004-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.PrintStream; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import org.apache.bcel.classfile.Field; import org.apache.bcel.classfile.JavaClass; import org.jibx.binding.classes.ClassCache; import org.jibx.binding.classes.ClassFile; import org.jibx.binding.classes.ClassItem; import org.jibx.binding.model.BindingElement; import org.jibx.binding.model.CollectionElement; import org.jibx.binding.model.ContainerElementBase; import org.jibx.binding.model.MappingElement; import org.jibx.binding.model.NamespaceElement; import org.jibx.binding.model.StructureElement; import org.jibx.binding.model.StructureElementBase; import org.jibx.binding.model.ValueElement; import org.jibx.binding.util.ObjectStack; import org.jibx.runtime.BindingDirectory; import org.jibx.runtime.IBindingFactory; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.JiBXException; /** * Binding generator. This loads the specified input classes and processes them * to generate a default binding definition. * * @author Dennis M. Sosnoski */ public class BindingGenerator { /** Generator version. */ private static String CURRENT_VERSION = "0.4"; /** Set of objects treated as primitives. */ private static HashSet s_objectPrimitiveSet = new HashSet(); static { s_objectPrimitiveSet.add("java.lang.Boolean"); s_objectPrimitiveSet.add("java.lang.Byte"); s_objectPrimitiveSet.add("java.lang.Char"); s_objectPrimitiveSet.add("java.lang.Double"); s_objectPrimitiveSet.add("java.lang.Float"); s_objectPrimitiveSet.add("java.lang.Integer"); s_objectPrimitiveSet.add("java.lang.Long"); s_objectPrimitiveSet.add("java.lang.Short"); s_objectPrimitiveSet.add("java.math.BigDecimal"); s_objectPrimitiveSet.add("java.math.BigInteger"); //#!j2me{ s_objectPrimitiveSet.add("java.sql.Date"); s_objectPrimitiveSet.add("java.sql.Time"); s_objectPrimitiveSet.add("java.sql.Timestamp"); //#j2me} s_objectPrimitiveSet.add("java.util.Date"); } /** Show verbose output flag. */ private boolean m_verbose; /** Use camel case for XML names flag. */ private boolean m_mixedCase; /** Namespace URI for elements. */ private String m_namespaceUri; /** Class names to mapped element names map. */ private HashMap m_mappedNames; /** Class names to properties list map. */ private HashMap m_beanNames; /** Class names to deserializers map for typesafe enumerations. */ private HashMap m_enumerationNames; /** Stack of structure definitions in progress (used to detect cycles). */ private ObjectStack m_structureStack; /** Class names bound as nested structures. */ private HashSet m_structureNames; /** Class names to be treated like interfaces (not mapped directly). */ private HashSet m_ignoreNames; /** * Default constructor. This just initializes all options disabled. */ public BindingGenerator() { m_mappedNames = new HashMap(); m_structureStack = new ObjectStack(); m_structureNames = new HashSet(); m_ignoreNames = new HashSet(); } /** * Constructor with settings specified. * * @param verbose report binding details and results * @param mixed use camel case in element names * @param uri namespace URI for element bindings */ public BindingGenerator(boolean verbose, boolean mixed, String uri) { this(); m_verbose = verbose; m_mixedCase = mixed; m_namespaceUri = uri; } /** * Set control flag for verbose processing reports. * * @param verbose report verbose information in processing bindings flag */ public void setVerbose(boolean verbose) { m_verbose = verbose; } /** * Set control flag for camel case element naming. * * @param camel use camel case element naming flag */ public void setCamelCase(boolean camel) { m_mixedCase = camel; } /** * Indent to proper depth for current item. * * @param pw output print stream to be indented */ private void nestingIndent(PrintStream pw) { for (int i = 0; i < m_structureStack.size(); i++) { pw.print(' '); } } /** * Convert class or unprefixed field name to element or attribute name. * * @param base class or simple field name to be converted * @return element or attribute name */ private String convertName(String base) { StringBuffer name = new StringBuffer(); name.append(Character.toLowerCase(base.charAt(0))); if (m_mixedCase) { name.append(base.substring(1)); } else { boolean ignore = true; for (int i = 1; i < base.length(); i++) { char chr = base.charAt(i); if (Character.isUpperCase(chr)) { chr = Character.toLowerCase(chr); if (ignore) { int next = i + 1; ignore = next >= base.length() || Character.isUpperCase(base.charAt(next)); } if (ignore) { name.append(chr); } else { name.append('-'); name.append(chr); ignore = true; } } else { name.append(chr); ignore = false; } } } return name.toString(); } /** * Generate structure element name from class name using set conversions. * * @param cname class name to be converted * @return element name for instances of class */ public String elementName(String cname) { int split = cname.lastIndexOf('.'); if (split >= 0) { cname = cname.substring(split+1); } while ((split = cname.indexOf('$')) >= 0) { cname = cname.substring(0, split) + cname.substring(split+1); } return convertName(cname); } /** * Generate structure element name from class name using set conversions. * * @param fname field name to be converted * @return element name for instances of class */ private String valueName(String fname) { String base = fname; if (base.startsWith("m_")) { base = base.substring(2); } else if (base.startsWith("_")) { base = base.substring(1); } else if (base.startsWith("f") && base.length() > 1) { if (Character.isUpperCase(base.charAt(1))) { base = base.substring(1); } } return convertName(base); } /** * Construct the list of child binding components that define the binding * structure for fields of a particular class. This binds all * non-final/non-static/non-transient fields of the class, if necessary * creating nested structure elements for unmapped classes referenced by the * fields. * * @param cf class information * @param contain binding structure container element * @throws JiBXException on error in binding generation */ private void defineFields(ClassFile cf, ContainerElementBase contain) throws JiBXException { // process all non-final/non-static/non-transient fields of class JavaClass clas = cf.getRawClass(); Field[] fields = clas.getFields(); for (int i = 0; i < fields.length; i++) { Field field = fields[i]; if (!field.isFinal() && !field.isStatic() && !field.isTransient()) { // find type of handling needed for field type boolean simple = false; boolean object = true; boolean attribute = true; String fname = field.getName(); String tname = field.getType().toString(); if (ClassItem.isPrimitive(tname)) { simple = true; object = false; } else if (s_objectPrimitiveSet.contains(tname)) { simple = true; } else if (tname.equals("byte[]")) { simple = true; attribute = false; } else if (tname.startsWith("java.")) { // check for standard library classes we can handle ClassFile pcf = ClassCache.getClassFile(tname); ClassItem init = pcf.getInitializerMethod ("(Ljava/lang/String;)"); if (init != null) { simple = pcf.getMethod("toString", "()Ljava/lang/String;") != null; attribute = false; } } // check type of handling to use for value if (m_enumerationNames.get(tname) != null) { // define a value using deserializer method String mname = (String)m_enumerationNames.get(tname); int split = mname.lastIndexOf('.'); ClassFile dcf = ClassCache.getClassFile(mname.substring(0, split)); ClassItem dser = dcf.getStaticMethod(mname.substring(split+1), "(Ljava/lang/String;)"); if (dser == null || !tname.equals(dser.getTypeName())) { throw new JiBXException("Deserializer method not " + "found for enumeration class " + tname); } ValueElement value = new ValueElement(); value.setFieldName(fname); value.setName(valueName(fname)); value.setUsageName("optional"); value.setStyleName("element"); value.setDeserializerName(mname); contain.addChild(value); } else if (m_mappedNames.get(tname) != null) { // use mapping definition for class StructureElement structure = new StructureElement(); structure.setUsageName("optional"); structure.setFieldName(fname); if (((String)m_mappedNames.get(tname)).length() == 0) { // add a name for reference to abstract mapping structure.setName(elementName(tname)); } contain.addChild(structure); if (m_verbose) { nestingIndent(System.out); System.out.println("referenced existing binding for " + tname); } } else if (simple) { // define a simple value ValueElement value = new ValueElement(); value.setFieldName(fname); value.setName(valueName(fname)); if (object) { value.setUsageName("optional"); } if (!attribute) { value.setStyleName("element"); } contain.addChild(value); } else if (tname.endsWith("[]")) { // array, check if item type has a mapping String bname = tname.substring(0, tname.length()-2); if (m_mappedNames.get(bname) == null) { // no mapping, use collection with inline structure // TODO: fill it in throw new JiBXException("Base element type " + bname + " must be mapped"); } else { // mapping for type, use simple collection CollectionElement collection = new CollectionElement(); collection.setUsageName("optional"); collection.setFieldName(fname); contain.addChild(collection); } } else { // no defined handling, check for collection vs. structure ClassFile pcf = ClassCache.getClassFile(tname); StructureElementBase element; if (pcf.isImplements("Ljava/util/List;")) { // create a collection for list subclass System.err.println("Warning: field " + fname + " requires mapped implementation of item classes"); element = new CollectionElement(); element.setComment(" add details of collection items " + "to complete binding definition "); element.setFieldName(fname); // specify factory method if just typed as interface if ("java.util.List".equals(tname)) { element.setFactoryName ("org.jibx.runtime.Utility.arrayListFactory"); } } else if (pcf.isInterface() || m_ignoreNames.contains(tname)) { // create mapping reference with warning for interface nestingIndent(System.err); System.err.println("Warning: reference to interface " + "or abstract class " + tname + " requires mapped implementation"); element = new StructureElement(); element.setFieldName(fname); } else { // handle other types of structures directly element = createStructure(pcf, fname); } // finish with common handling element.setUsageName("optional"); contain.addChild(element); } } } } /** * Construct the list of child binding components that define the binding * structure corresponding to properties of a particular class. This binds * the specified properties of the class, using get/set methods, if * necessary creating nested structure elements for unmapped classes * referenced by the properties. * * @param cf class information * @param props list of properties specified for class * @param internal allow private get/set methods flag * @param contain binding structure container element * @throws JiBXException on error in binding generation */ private void defineProperties(ClassFile cf, ArrayList props, boolean internal, ContainerElementBase contain) throws JiBXException { // process all properties of class for (int i = 0; i < props.size(); i++) { String pname = (String)props.get(i); String base = Character.toUpperCase(pname.charAt(0)) + pname.substring(1); String gname = "get" + base; ClassItem gmeth = cf.getMethod(gname, "()"); if (gmeth == null) { throw new JiBXException("No method " + gname + "() found for property " + base + " in class " + cf.getName()); } else { String tname = gmeth.getTypeName(); String sname = "set" + base; String sig = "(" + gmeth.getSignature().substring(2) + ")V"; ClassItem smeth = cf.getMethod(sname, sig); if (smeth == null) { throw new JiBXException("No method " + sname + "(" + tname + ") found for property " + base + " in class " + cf.getName()); } else { // find type of handling needed for field type boolean simple = false; boolean object = true; boolean attribute = true; if (ClassItem.isPrimitive(tname)) { simple = true; object = false; } else if (s_objectPrimitiveSet.contains(tname)) { simple = true; } else if (tname.equals("byte[]")) { simple = true; attribute = false; } else if (tname.startsWith("java.")) { // check for standard library classes we can handle ClassFile pcf = ClassCache.getClassFile(tname); if (pcf.getInitializerMethod("()") != null) { simple = pcf.getMethod("toString", "()Ljava/lang/String;") != null; attribute = false; } } if (simple) { // define a simple value ValueElement value = new ValueElement(); value.setGetName(gname); value.setSetName(sname); value.setName(valueName(pname)); if (object) { value.setUsageName("optional"); } if (!attribute) { value.setStyleName("element"); } contain.addChild(value); } else if (m_enumerationNames.get(tname) != null) { // define a value using deserializer method String mname = (String)m_enumerationNames.get(tname); int split = mname.lastIndexOf('.'); ClassFile dcf = ClassCache.getClassFile(mname.substring(0, split)); ClassItem dser = dcf.getStaticMethod(mname.substring(split+1), "(Ljava/lang/String;)"); if (dser == null || !tname.equals(dser.getTypeName())) { throw new JiBXException("Deserializer method not " + "found for enumeration class " + tname); } ValueElement value = new ValueElement(); value.setGetName(gname); value.setSetName(sname); value.setName(valueName(pname)); value.setUsageName("optional"); value.setStyleName("element"); value.setDeserializerName(mname); contain.addChild(value); } else if (m_mappedNames.get(tname) != null) { // use mapping definition for class StructureElement structure = new StructureElement(); structure.setUsageName("optional"); structure.setGetName(gname); structure.setSetName(sname); if (((String)m_mappedNames.get(tname)).length() == 0) { // add a name for reference to abstract mapping structure.setName(elementName(tname)); } contain.addChild(structure); if (m_verbose) { nestingIndent(System.out); System.out.println ("referenced existing binding for " + tname); } } else if (tname.endsWith("[]")) { // array, only supported for mapped base type String bname = tname.substring(0, tname.length()-2); if (m_mappedNames.get(bname) == null) { throw new JiBXException("Base element type " + bname + " must be mapped"); } else { StructureElement structure = new StructureElement(); structure.setUsageName("optional"); structure.setGetName(gname); structure.setSetName(sname); structure.setMarshallerName ("org.jibx.extras.TypedArrayMapper"); structure.setUnmarshallerName ("org.jibx.extras.TypedArrayMapper"); contain.addChild(structure); } } else { // no defined handling, check collection vs. structure ClassFile pcf = ClassCache.getClassFile(tname); StructureElementBase element; if (pcf.isImplements("Ljava/util/List;")) { // create a collection for list subclass System.err.println("Warning: property " + pname + " requires mapped implementation of item " + "classes"); element = new CollectionElement(); element.setComment(" add details of collection " + "items to complete binding definition "); element.setGetName(gname); element.setSetName(sname); // specify factory method if just typed as interface if ("java.util.List".equals(tname)) { element.setFactoryName("org.jibx.runtime." + "Utility.arrayListFactory"); } } else if (pcf.isInterface() || m_ignoreNames.contains(tname)) { // mapping reference with warning for interface nestingIndent(System.err); System.err.println("Warning: reference to " + "interface or abstract class " + tname + " requires mapped implementation"); element = new StructureElement(); element.setGetName(gname); element.setSetName(sname); } else { // handle other types of structures directly element = createStructure(pcf, pname); } // finish with common handling element.setUsageName("optional"); contain.addChild(element); } } } } } /** * Construct the list of child binding components that define the binding * structure corresponding to a particular class. This binds all * non-final/non-static/non-transient fields of the class, if necessary * creating nested structure elements for unmapped classes referenced by the * fields. * * @param cf class information * @param contain binding structure container element * @throws JiBXException on error in binding generation */ private void defineStructure(ClassFile cf, ContainerElementBase contain) throws JiBXException { // process basic fields or property list Object props = m_beanNames.get(cf.getName()); if (props == null) { defineFields(cf, contain); } else { defineProperties(cf, (ArrayList)props, true, contain); } // check if superclass may have data for binding ClassFile sf = cf.getSuperFile(); String sname = sf.getName(); if (!"java.lang.Object".equals(sname) && !m_ignoreNames.contains(sname)) { if (m_mappedNames.get(sname) != null) { StructureElement structure = new StructureElement(); structure.setMapAsName(sname); structure.setName(elementName(sname)); contain.addChild(structure); } else if (m_beanNames.get(sname) != null) { defineProperties(sf, (ArrayList)m_beanNames.get(sname), false, contain); } else if (sf.getRawClass().getFields().length > 0) { nestingIndent(System.err); System.err.println("Warning: fields from base class " + sname + " of class " + cf.getName() + " not handled by generated " + "binding; use mapping or specify property list"); contain.setComment(" missing information for base class " + sname + " "); } } } /** * Create the structure element for a particular class. This maps all * non-final/non-static/non-transient fields of the class, if necessary * creating nested structures. * * @param cf class information * @param fname name of field supplying reference * @throws JiBXException on error in binding generation */ private StructureElement createStructure(ClassFile cf, String fname) throws JiBXException { JavaClass clas = cf.getRawClass(); if (m_verbose) { nestingIndent(System.out); System.out.println("creating nested structure definition for " + clas.getClassName()); } String cname = clas.getClassName(); for (int i = 0; i < m_structureStack.size(); i++) { if (cname.equals(m_structureStack.peek(i))) { StringBuffer buff = new StringBuffer("Error: recursive use of "); buff.append(cname); buff.append(" requires :\n "); while (i >= 0) { buff.append(m_structureStack.peek(i--)); buff.append(" -> "); } buff.append(cname); throw new JiBXException(buff.toString()); } } if (cname.startsWith("java.")) { nestingIndent(System.err); System.err.println("Warning: trying to create structure for " + cname); } else if (m_structureNames.contains(cname)) { nestingIndent(System.err); System.err.println("Warning: repeated usage of class " + cname + "; consider adding to mapping list"); } else { m_structureNames.add(cname); } m_structureStack.push(cname); StructureElement element = new StructureElement(); element.setFieldName(fname); element.setName(valueName(fname)); defineStructure(cf, element); if (element.children().isEmpty()) { throw new JiBXException("No content found for class " + cname); } m_structureStack.pop(); if (m_verbose) { nestingIndent(System.out); System.out.println("completed nested structure definition for " + clas.getClassName()); } return element; } /** * Create the mapping element for a particular class. This maps all * non-final/non-static/non-transient fields of the class, if necessary * creating nested structures. * * @param cf class information * @param abstr force abstract mapping flag * @throws JiBXException on error in binding generation */ private MappingElement createMapping(ClassFile cf, boolean abstr) throws JiBXException { JavaClass clas = cf.getRawClass(); if (m_verbose) { System.out.println("\nBuilding mapping definition for " + clas.getClassName()); } MappingElement element = new MappingElement(); element.setAbstract(abstr || clas.isAbstract() || clas.isInterface()); String name = clas.getClassName(); element.setClassName(name); if (abstr) { element.setAbstract(true); } else { element.setName((String)m_mappedNames.get(name)); } m_structureStack.push(name); defineStructure(cf, element); m_structureStack.pop(); return element; } private static boolean isMappable(String cname) { if ("java.lang.String".equals(cname)) { return false; } else if ("java.lang.Object".equals(cname)) { return false; } else if (ClassItem.isPrimitive(cname)) { return false; } else { return !s_objectPrimitiveSet.contains(cname); } } /** * Get the set of data classes passed to or returned by a list of methods * within a class. The classes returned exclude primitive types, wrappers, * java.lang.String, and java.lang.Object. * Exception classes thrown by the methods are also optionally accumulated. * * @param cname target class name * @param mnames method names to be checked * @param dataset set for accumulation of data classes (optional, data * classes not recorded if null) * @param exceptset set for accumulation of exception classes (optional, * data classes not recorded if null) * @throws JiBXException on error in loading class information */ public static void findClassesUsed(String cname, ArrayList mnames, HashSet dataset, HashSet exceptset) throws JiBXException { ClassFile cf = ClassCache.getClassFile(cname); if (cf != null) { for (int i = 0; i < mnames.size(); i++) { String mname = (String)mnames.get(i); ClassItem mitem = cf.getMethod(mname, ""); if (mitem == null) { System.err.println("Method " + mname + " not found in class " + cname); } else { if (dataset != null) { String type = mitem.getTypeName(); if (type != null && isMappable(type)) { dataset.add(type); } String[] args = mitem.getArgumentTypes(); for (int j = 0; j < args.length; j++) { type = args[j]; if (isMappable(type)) { dataset.add(args[j]); } } } if (exceptset != null) { String[] excepts = mitem.getExceptions(); for (int j = 0; j < excepts.length; j++) { exceptset.add(excepts[j]); } } } } } } /** * Generate a set of bindings using supplied classpaths and class names. * * @param names list of class names to be included in binding * @param abstracts set of classes to be handled with abstract mappings in * binding * @param customs map of customized class names to marshaller/unmarshaller * class names * @param beans map of class names to supplied lists of properties * @param enums map of typesafe enumeration classes to deserializer methods * @param ignores list of non-interface classes to be treated as interfaces * (no mapping, but mapped subclasses are used at runtime) * @exception JiBXException if error in generating the binding definition */ public BindingElement generate(ArrayList names, HashSet abstracts, HashMap customs, HashMap beans, HashMap enums, ArrayList ignores) throws JiBXException { // print current version information System.out.println("Running binding generator version " + CURRENT_VERSION); // add all classes with mappings to tracking map m_mappedNames.clear(); for (int i = 0; i < names.size(); i++) { // make sure class can potentially be handled automatically boolean drop = false; String name = (String)names.get(i); ClassFile cf = ClassCache.getClassFile(name); if (cf.isImplements("Ljava/util/List;") || cf.isImplements("Ljava/util/Map;")) { System.err.println("Warning: referenced class " + name + " is a collection class that cannot be mapped " + "automatically; dropped from mapped list in binding"); drop = true; } else if (cf.isInterface()) { System.err.println("Warning: interface " + name + " is being handled as abstract mapping"); abstracts.add(name); drop = true; } else if (cf.isAbstract()) { System.err.println("Warning: mapping abstract class " + name + "; make sure actual subclasses are mapped as extending " + "this abstract mapping"); abstracts.add(name); drop = true; } if (drop) { names.remove(i--); } else { m_mappedNames.put(name, elementName(name)); } } for (Iterator iter = abstracts.iterator(); iter.hasNext();) { m_mappedNames.put((String)iter.next(), ""); } for (Iterator iter = customs.keySet().iterator(); iter.hasNext();) { String name = (String)iter.next(); m_mappedNames.put(name, elementName(name)); } // create set for ignores m_ignoreNames.clear(); m_ignoreNames.addAll(ignores); // create binding with optional namespace BindingElement binding = new BindingElement(); binding.setStyleName("attribute"); if (m_namespaceUri != null) { NamespaceElement namespace = new NamespaceElement(); namespace.setComment(" namespace for all elements of binding "); namespace.setDefaultName("elements"); namespace.setUri(m_namespaceUri); binding.addTopChild(namespace); } // add mapping for each specified class m_structureStack.clear(); m_structureNames.clear(); m_beanNames = beans; m_enumerationNames = enums; for (int i = 0; i < names.size(); i++) { String cname = (String)names.get(i); if (!abstracts.contains(cname)) { ClassFile cf = ClassCache.getClassFile(cname); MappingElement mapping = createMapping(cf, false); mapping.setComment(" generated mapping for class " + cname); binding.addTopChild(mapping); } } for (Iterator iter = abstracts.iterator(); iter.hasNext();) { String cname = (String)iter.next(); ClassFile cf = ClassCache.getClassFile(cname); MappingElement mapping = createMapping(cf, true); mapping.setComment(" generate abstract mapping for class " + cname); binding.addTopChild(mapping); } // finish with custom mapping definitions for (Iterator iter = customs.keySet().iterator(); iter.hasNext();) { String cname = (String)iter.next(); String mname = (String)customs.get(cname); MappingElement mapping = new MappingElement(); mapping.setComment(" specified mapping for class " + cname); mapping.setClassName(cname); mapping.setName((String)m_mappedNames.get(cname)); mapping.setMarshallerName(mname); mapping.setUnmarshallerName(mname); binding.addTopChild(mapping); } // list classes handled if verbose if (m_verbose) { for (int i = 0; i < names.size(); i++) { m_structureNames.add(names.get(i)); } m_structureNames.addAll(customs.keySet()); String[] classes = (String[])m_structureNames. toArray(new String[m_structureNames.size()]); Arrays.sort(classes); System.out.println("\nClasses included in binding:"); for (int i = 0; i < classes.length; i++) { System.out.println(" " + classes[i]); } } return binding; } /** * Main method for running compiler as application. * * @param args command line arguments */ public static void main(String[] args) { if (args.length > 0) { try { // check for various flags set boolean mixed = false; boolean verbose = false; String uri = null; String fname = "binding.xml"; ArrayList paths = new ArrayList(); HashMap enums = new HashMap(); HashSet abstracts = new HashSet(); ArrayList ignores = new ArrayList(); HashMap customs = new HashMap(); HashMap beans = new HashMap(); int offset = 0; for (; offset < args.length; offset++) { String arg = args[offset]; if ("-v".equalsIgnoreCase(arg)) { verbose = true; } else if ("-b".equalsIgnoreCase(arg)) { String plist = args[++offset]; int split = plist.indexOf("="); String bname = plist.substring(0, split); ArrayList props = new ArrayList(); int base = ++split; while ((split = plist.indexOf(',', split)) >= 0) { props.add(plist.substring(base, split)); base = ++split; } props.add(plist.substring(base)); beans.put(bname, props); } else if ("-c".equalsIgnoreCase(arg)) { String custom = args[++offset]; int split = custom.indexOf('='); if (split > 0) { customs.put(custom.substring(0, split), custom.substring(split+1)); } else { System.err.println ("Unable to interpret customization " + custom); } } else if ("-e".equalsIgnoreCase(arg)) { String cname; String mname; String enumf = args[++offset]; int split = enumf.indexOf('='); if (split > 0) { cname = enumf.substring(0, split); mname = enumf.substring(split+1); if (mname.indexOf('.') < 0) { mname = cname + '.' + mname; } } else { cname = enumf; split = cname.lastIndexOf('.'); if (split >= 0) { mname = cname + '.' + "get" + cname.substring(split+1); } else { mname = cname + '.' + "get" + cname; } } enums.put(cname, mname); } else if ("-i".equalsIgnoreCase(arg)) { ignores.add(args[++offset]); } else if ("-m".equalsIgnoreCase(arg)) { mixed = true; } else if ("-f".equalsIgnoreCase(arg)) { fname = args[++offset]; } else if ("-n".equalsIgnoreCase(arg)) { uri = args[++offset]; } else if ("-p".equalsIgnoreCase(arg)) { paths.add(args[++offset]); } else if ("-a".equalsIgnoreCase(arg)) { abstracts.add(args[++offset]); } else { break; } } // set up path and binding lists String[] vmpaths = Utility.getClassPaths(); for (int i = 0; i < vmpaths.length; i++) { paths.add(vmpaths[i]); } ArrayList names = new ArrayList(); for (int i = offset; i < args.length; i++) { if (!abstracts.contains(args[i])) { names.add(args[i]); } } // report on the configuration if (verbose) { System.out.println("Using paths:"); for (int i = 0; i < paths.size(); i++) { System.out.println(" " + paths.get(i)); } System.out.println("Using class names:"); for (int i = 0; i < names.size(); i++) { System.out.println(" " + names.get(i)); } if (abstracts.size() > 0) { System.out.println("Using abstract class names:"); for (Iterator iter = abstracts.iterator(); iter.hasNext();) { System.out.println(" " + iter.next()); } } if (customs.size() > 0) { System.out.println ("Using custom marshaller/unmarshallers:"); Iterator iter = customs.keySet().iterator(); while (iter.hasNext()) { String key = (String)iter.next(); System.out.println(" " + customs.get(key) + " for " + key); } } if (beans.size() > 0) { System.out.println("Using bean property lists:"); Iterator iter = beans.keySet().iterator(); while (iter.hasNext()) { String key = (String)iter.next(); System.out.print(" " + key + " with properties:"); ArrayList props = (ArrayList)beans.get(key); for (int i = 0; i < props.size(); i++) { System.out.print(i > 0 ? ", " : " "); System.out.print(props.get(i)); } } } if (enums.size() > 0) { System.out.println("Using enumeration classes:"); Iterator iter = enums.keySet().iterator(); while (iter.hasNext()) { String key = (String)iter.next(); System.out.println(" " + key + " with deserializer " + enums.get(key)); } } } // set paths to be used for loading referenced classes String[] parray = (String[])paths.toArray(new String[paths.size()]); ClassCache.setPaths(parray); ClassFile.setPaths(parray); // generate the binding BindingGenerator generate = new BindingGenerator(verbose, mixed, uri); BindingElement binding = generate.generate(names, abstracts, customs, beans, enums, ignores); // marshal binding out to file IBindingFactory bfact = BindingDirectory.getFactory(BindingElement.class); IMarshallingContext mctx = bfact.createMarshallingContext(); mctx.setIndent(2); mctx.marshalDocument(binding, "UTF-8", null, new FileOutputStream(fname)); } catch (JiBXException ex) { ex.printStackTrace(System.out); System.exit(1); } catch (FileNotFoundException e) { e.printStackTrace(System.out); System.exit(2); } } else { System.out.println ("\nUsage: java org.jibx.binding.BindingGenerator [options] " + "class1 class2 ...\nwhere options are:\n -a abstract class\n" + " -b bean property class,\n -c custom mapped class,\n" + " -e enumeration class,\n -f binding file name,\n" + " -i ignore class,\n -m use mixed case XML names (instead " + "of hyphenated),\n -n namespace URI,\n -p class " + "loading path component,\n -v turns on verbose output\n" + "The class# files are different classes to be included in " + "binding (references from\nthese classes will also be " + "included).\n"); System.exit(1); } } } libjibx-java-1.1.6a/build/src/org/jibx/binding/Compile.java0000644000175000017500000004003010525417720023360 0ustar moellermoeller/* Copyright (c) 2003-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.net.URL; import java.net.URLClassLoader; import org.apache.bcel.classfile.Method; import org.apache.bcel.verifier.VerificationResult; import org.apache.bcel.verifier.Verifier; import org.apache.bcel.verifier.VerifierFactory; import org.jibx.binding.classes.BoundClass; import org.jibx.binding.classes.BranchWrapper; import org.jibx.binding.classes.ClassCache; import org.jibx.binding.classes.ClassFile; import org.jibx.binding.classes.MungedClass; import org.jibx.binding.def.BindingDefinition; import org.jibx.runtime.JiBXException; /** * Binding compiler. This version checks the modified and generated classes * by loading them and listing method information. * * @author Dennis M. Sosnoski * @version 1.0 */ public class Compile { private boolean m_verbose; private boolean m_load; private boolean m_verify; private boolean m_trackBranches; private boolean m_errorOverride; private boolean m_skipValidate; /** * Default constructor. This just initializes all options disabled. */ public Compile() {} /** * Constructor with settings specified. * * @param verbose report binding details and results * @param load test load modified classes to validate * @param verify use BCEL validation of modified classes * @param track keep tracking information for source of branch generation * @param over override code generation error handling */ public Compile(boolean verbose, boolean load, boolean verify, boolean track, boolean over) { m_verbose = verbose; m_load = load; m_verify = verify; m_trackBranches = track; m_errorOverride = over; } /** * Verify generated and modified files using BCEL verifier. This provides a * more comprehensive listing of errors than just loading a class in the * JVM. * * @param file information for class to be verified * @return true if successfully verified, false if * problem found (automatically reported) */ private boolean verifyBCEL(ClassFile file) { try { // construct verifier for class file Verifier verifier = VerifierFactory.getVerifier(file.getName()); // run validation in stages with error handling for each stage boolean verified = false; VerificationResult vr = verifier.doPass1(); if (vr.getStatus() == VerificationResult.VERIFIED_OK) { vr = verifier.doPass2(); if (vr.getStatus() == VerificationResult.VERIFIED_OK) { Method[] methods = file.getRawClass().getMethods(); for (int j = 0; j < methods.length; j++) { vr = verifier.doPass3a(j); if (vr.getStatus() == VerificationResult.VERIFIED_OK) { vr = verifier.doPass3b(j); } if (vr.getStatus() == VerificationResult.VERIFIED_OK) { verified = true; } else { System.out.println ("Verification failure on method " + methods[j].getName() + " of class " + file.getName() + ":"); System.out.println(" " + vr.toString()); } } } else { System.out.println("Verification failure on class " + file.getName() + ":"); System.out.println(" " + vr.toString()); } } else { System.out.println("Verification failure on class " + file.getName() + ":"); System.out.println(" " + vr.toString()); } return verified; } catch (Exception ex) { // catch BCEL errors System.out.println("BCEL failure:"); ex.printStackTrace(); return false; } } /** * Output all generated and modified class files. Writes the actual files, * and optionally verifies and/or reports the changes. * * @param paths array of paths used for loading files * @exception JiBXException if error in processing the binding definition * @exception IOException if path cannot be accessed */ private void handleOutput(String[] paths) throws JiBXException, IOException { // output the modified class files ClassFile[][] lists = MungedClass.fixChanges(true); // report modified file results to user ClassFile[] files = lists[0]; if (m_verbose) { System.out.println("\nWrote " + files.length + " files"); } if (m_verbose || m_load) { // generate class paths as URLs if needed for test loading URL[] urls = null; if (m_load) { urls = new URL[paths.length]; for (int i = 0; i < urls.length; i++) { urls[i] = new File(paths[i]).toURL(); } } for (int i = 0; i < files.length; i++) { // write class file to bytes ClassFile file = files[i]; ByteArrayOutputStream bos = new ByteArrayOutputStream(); file.writeFile(bos); byte[] bytes = bos.toByteArray(); if(m_verbose){ System.out.println("\n " + file.getName() + " output file size is " + bytes.length + " bytes"); } // verify using BCEL verifier if (m_verify) { verifyBCEL(file); } // load to JVM and list method information from class if (m_load) { DirectLoader cloader = new DirectLoader(urls); Class clas = cloader.load(file.getName(), bytes); if (m_verbose) { java.lang.reflect.Method[] methods = clas.getDeclaredMethods(); System.out.println(" Found " + methods.length + " methods:"); for (int j = 0; j < methods.length; j++) { java.lang.reflect.Method method = methods[j]; System.out.println(" " + method.getReturnType().getName() + " " + method.getName()); } } } } } // report summary information for files unchanged or deleted if (m_verbose) { files = lists[1]; System.out.println("\nKept " + files.length + " files unchanged:"); for (int i = 0; i < files.length; i++) { System.out.println(" " + files[i].getName()); } files = lists[2]; System.out.println("\nDeleted " + files.length + " files:"); for (int i = 0; i < files.length; i++) { System.out.println(" " + files[i].getName()); } } } /** * Set control flag for test loading generated/modified classes. * * @param load test load generated/modified classes flag */ public void setLoad(boolean load) { m_load = load; } /** * Set control flag for verbose processing reports. * * @param verbose report verbose information in processing bindings flag */ public void setVerbose(boolean verbose) { m_verbose = verbose; } /** * Set control flag for verifying generated/modified classes with BCEL. * * @param verify use BCEL verification for generated/modified classes flag */ public void setVerify(boolean verify) { m_verify = verify; } /** * Set control flag for skipping binding validation. This flag is intended * only for use while processing the binding model components within JiBX. * Otherwise it'd be impossible to correct errors in the binding validation. * * @param skip test load generated/modified classes flag */ public void setSkipValidate(boolean skip) { m_skipValidate = skip; } /** * Compile a set of bindings using supplied classpaths. * * @param paths list of paths for loading classes * @param files list of binding definition files * @exception JiBXException if error in processing the binding definition */ public void compile(String[] paths, String[] files) throws JiBXException { try { // include current version information in verbose output if (m_verbose) { System.out.println("Running binding compiler version " + BindingDefinition.CURRENT_VERSION_NAME); } // set paths to be used for loading referenced classes ClassCache.setPaths(paths); ClassFile.setPaths(paths); // reset static information accumulation for binding BoundClass.reset(); MungedClass.reset(); BindingDefinition.reset(); BranchWrapper.setTracking(m_trackBranches); BranchWrapper.setErrorOverride(m_errorOverride); // load all supplied bindings BindingDefinition[] defs = new BindingDefinition[files.length]; for (int i = 0; i < files.length; i++) { defs[i] = Utility.loadFileBinding(files[i], !m_skipValidate); if (m_verbose) { defs[i].print(); } } // modify the class files with JiBX hooks for (int i = 0; i < defs.length; i++) { try { defs[i].generateCode(m_verbose); } catch (RuntimeException e) { throw new JiBXException ("\n*** Error during code generation for file '" + files[i] + "' - please enter a bug report for this " + "error in Jira if the problem is not listed as fixed " + "on the online status page ***\n", e); } } // handle file and reporting output handleOutput(paths); } catch (IOException ex) { throw new JiBXException("IOException in compile", ex); } catch (ExceptionInInitializerError ex) { throw new JiBXException("Error during initialization;" + " is jibx-run.jar in load classpath?", ex.getException()); } catch (Throwable ex) { throw new JiBXException("Error running binding compiler", ex); } } /** * Main method for running compiler as application. * * @param args command line arguments */ public static void main(String[] args) { if (args.length > 0) { try { // check for various flags set boolean verbose = false; boolean load = false; boolean verify = false; boolean track = false; boolean over = false; boolean skip = false; int offset = 0; for (; offset < 5 && offset < args.length; offset++) { String arg = args[offset]; if ("-v".equalsIgnoreCase(arg)) { verbose = true; } else if ("-l".equalsIgnoreCase(arg)) { load = true; } else if ("-b".equalsIgnoreCase(arg)) { verify = true; } else if ("-o".equalsIgnoreCase(arg)) { over = true; } else if ("-s".equalsIgnoreCase(arg)) { skip = true; } else if ("-t".equalsIgnoreCase(arg)) { track = true; } else { break; } } // set up path and binding lists String[] clsspths = Utility.getClassPaths(); String[] bindings = new String[args.length - offset]; System.arraycopy(args, offset, bindings, 0, bindings.length); // report on the configuration if (verbose) { System.out.println("Using paths:"); for (int i = 0; i < clsspths.length; i++) { System.out.println(" " + clsspths[i]); } System.out.println("Using bindings:"); for (int i = 0; i < bindings.length; i++) { System.out.println(" " + bindings[i]); } } // compile the bindings Compile compiler = new Compile(verbose, load, verify, track, over); compiler.setSkipValidate(skip); compiler.compile(clsspths, bindings); } catch (JiBXException ex) { ex.printStackTrace(System.out); System.exit(1); } } else { System.out.println ("\nUsage: java org.jibx.binding.Compile [-b] [-l] [-v] " + "binding1 binding2 ...\nwhere:\n -b turns on BCEL " + "verification (debug option),\n -l turns on test loading of " + "modified or generated classes for validation, and\n" + " -v turns on verbose output\nThe bindingn files are " + "different bindings to be compiled.\n"); System.exit(1); } } /** * Direct class loader. This is optionally used for test loading the * modified class files to make sure they're still valid. */ private static class DirectLoader extends URLClassLoader { protected DirectLoader(URL[] urls) { super(urls, DirectLoader.class.getClassLoader()); } protected Class load(String name, byte[] data) { return defineClass(name, data, 0, data.length); } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/Loader.java0000644000175000017500000003227510447002710023202 0ustar moellermoeller/* Copyright (c) 2003-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.net.URLClassLoader; import java.util.ArrayList; import java.util.HashMap; import org.jibx.binding.classes.BoundClass; import org.jibx.binding.classes.ClassCache; import org.jibx.binding.classes.ClassFile; import org.jibx.binding.classes.MungedClass; import org.jibx.binding.def.BindingDefinition; import org.jibx.runtime.JiBXException; /** * Binding classloader. This is intended to substitute for the System * classloader (i.e., the one used for loading user classes). It first processes * one or more binding definitions, caching the binary classes modified by the * bindings. It then uses these modified forms of the classes when they're * requested for loading. * * @author Dennis M. Sosnoski * @version 1.0 */ public class Loader extends URLClassLoader { /** Binding definitions used by loader. */ private ArrayList m_bindings; /** Flag for bindings compiled into class code. */ private boolean m_isBound; /** Map of classes modified by binding. */ private HashMap m_classMap; /** * Constructor with classpath URLs and parent classloader supplied. Sets up * the paths for both actual classloading and finding classes to be bound. * * @param paths array of classpath URLs * @param parent classloader used for delegation loading */ public Loader(URL[] paths, ClassLoader parent) { // configure the base class super(paths, parent); m_bindings = new ArrayList(); m_classMap = new HashMap(); // find all the file URLs in path ArrayList fpaths = new ArrayList(paths.length); for (int i = 0; i < paths.length; i++) { URL path = paths[i]; if ("file".equals(path.getProtocol())) { fpaths.add(path.getPath()); } } // set paths to be used for loading referenced classes String[] dirs = (String[])fpaths.toArray(new String[0]); ClassCache.setPaths(dirs); ClassFile.setPaths(dirs); // reset static information accumulation for binding BoundClass.reset(); MungedClass.reset(); BindingDefinition.reset(); } /** * Constructor with classpath URLs supplied. This uses the supplied * classpaths, delegating directly to the parent classloader of the normal * System classloader. * * @param paths array of classpath URLs */ public Loader(URL[] paths) { this(paths, ClassLoader.getSystemClassLoader().getParent()); } /** * Default constructor. This reads the standard class path and uses it for * locating classes used by the binding, delegating directly to the parent * classloader of the normal System classloader. * * @exception MalformedURLException on error in classpath URLs */ public Loader() throws MalformedURLException { this(getClassPaths()); } /** * Reset loader information. This discards all prior bindings and clears the * internal state in preparation for loading a different set of bindings. It * is not possible to clear the loaded classes, though, so any new bindings * must refer to different classes from those previously loaded. */ public void reset() { m_bindings.clear(); m_classMap.clear(); m_isBound = false; BoundClass.reset(); MungedClass.reset(); BindingDefinition.reset(); } /** * Method builds an array of URL for items in the class path. * * @return array of classpath URLs */ public static URL[] getClassPaths() throws MalformedURLException { String[] paths = Utility.getClassPaths(); URL[] urls = new URL[paths.length]; for (int i = 0; i < urls.length; i++) { urls[i] = new File(paths[i]).toURL(); } return urls; } /** * Load binding definition. This may be called multiple times to load * multiple bindings, but only prior to the bindings being compiled. The * reader form of the call is generally preferred, since the document * encoding may not be properly interpreted from a stream. * * @param fname binding definition full name * @param sname short form of name to use as the default name of the binding * @param is input stream for binding definition document * @param url URL for binding definition (null if not * available) * @exception IllegalStateException if called after bindings have been * compiled * @exception IOException if error reading the binding * @exception JiBXException if error in processing the binding definition */ public void loadBinding(String fname, String sname, InputStream is, URL url) throws JiBXException, IOException { // error if called after bindings have been compiled if (m_isBound) { throw new IllegalStateException ("Call not allowed after bindings compiled"); } else { m_bindings.add(Utility.loadBinding(fname, sname, is, url, true)); } } /** * Load binding definition from file path. This may be called multiple times * to load multiple bindings, but only prior to the bindings being compiled. * * @param path binding definition file path * @exception IllegalStateException if called after bindings have been * compiled * @exception IOException if error reading the file * @exception JiBXException if error in processing the binding definition */ public void loadFileBinding(String path) throws JiBXException, IOException { // error if called after bindings have been compiled if (m_isBound) { throw new IllegalStateException ("Call not allowed after bindings compiled"); } else { m_bindings.add(Utility.loadFileBinding(path, true)); } } /** * Load binding definition from file path. This may be called multiple times * to load multiple bindings, but only prior to the bindings being compiled. * * @param path binding definition file path * @exception IllegalStateException if called after bindings have been * compiled * @exception IOException if error reading the file * @exception JiBXException if error in processing the binding definition */ public void loadResourceBinding(String path) throws JiBXException, IOException { // error if called after bindings have been compiled if (m_isBound) { throw new IllegalStateException ("Call not allowed after bindings compiled"); } else { String fname = path; int split = fname.lastIndexOf('/'); if (split >= 0) { fname = fname.substring(split+1); } String sname = fname; split = sname.lastIndexOf('.'); if (split >= 0) { sname = sname.substring(0, split); } sname = Utility.convertName(sname); InputStream is = getResourceAsStream(path); if (is == null) { throw new IOException("Resource " + path + " not found"); } else { loadBinding(fname, sname, is, null); } } } /** * Process the binding definitions. This compiles the bindings into the * classes, saving the modified classes for loading when needed. * * @exception JiBXException if error in processing the binding definition */ public void processBindings() throws JiBXException { if (!m_isBound) { // handle code generation from bindings int count = m_bindings.size(); for (int i = 0; i < count; i++) { BindingDefinition binding = (BindingDefinition)m_bindings.get(i); binding.generateCode(false); } // build hashmap of modified classes ClassFile[][] lists = MungedClass.fixChanges(false); count = lists[0].length; for (int i = 0; i < count; i++) { ClassFile clas = lists[0][i]; m_classMap.put(clas.getName(), clas); } // finish by setting flag for binding done m_isBound = true; } } /** * Check if a class has been modified by a binding. If bindings haven't been * compiled prior to this call they will be compiled automatically when this * method is called. * * @param name fully qualified package and class name to be found * @return true if class modified by binding, * false if not */ protected boolean isBoundClass(String name) { // first complete binding processing if not already done if (!m_isBound) { try { processBindings(); } catch (JiBXException e) { e.printStackTrace(); } } return m_classMap.containsKey(name); } /** * Find and load class by name. If the named class has been modified by a * binding this loads the modified binary class; otherwise, it just uses the * base class implementation to do the loading. If bindings haven't been * compiled prior to this call they will be compiled automatically when this * method is called. * @see java.lang.ClassLoader#findClass(java.lang.String) * * @param name fully qualified package and class name to be found * @return the loaded class * @throws ClassNotFoundException if the class cannot be found */ protected Class findClass(String name) throws ClassNotFoundException { // check if class has been modified by binding if (isBoundClass(name)) { try { // convert class information to byte array ClassFile clas = (ClassFile)m_classMap.get(name); ByteArrayOutputStream bos = new ByteArrayOutputStream(); clas.writeFile(bos); byte[] bytes = bos.toByteArray(); return defineClass(name, bytes, 0, bytes.length); } catch (IOException e) { throw new ClassNotFoundException ("Unable to load modified class " + name); } } else { // just use base class handling return super.findClass(name); } } /** * Version of bind-on-demand loader which will not delegate handling of * classes included in the binding definition. Somewhat dangerous to use, * since it may result in loading multiple versions of the same class * (with and without binding). */ public static class NondelegatingLoader extends Loader { /** * @throws MalformedURLException */ public NondelegatingLoader() throws MalformedURLException { super(getClassPaths(), ClassLoader.getSystemClassLoader()); } /* (non-Javadoc) * @see java.lang.ClassLoader#loadClass(java.lang.String, boolean) */ protected synchronized Class loadClass(String name, boolean resolve) throws ClassNotFoundException { if (isBoundClass(name)) { Class clas = findLoadedClass(name); if (clas == null) { clas = findClass(name); } return clas; } else { return super.loadClass(name, resolve); } } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/Run.java0000644000175000017500000002223210347114742022540 0ustar moellermoeller/* Copyright (c) 2003-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import org.jibx.runtime.JiBXException; /** * Bind-on-load class runner. This uses a binding loader to compile a binding, * then loads and calls the main execution class for an application substituting * the classes modified by the binding. * * @author Dennis M. Sosnoski * @version 1.0 */ public class Run { private static final String BINDING_LIST_RESOURCE = "jibx_bindings.txt"; private static final String DEFAULT_BINDING_RESOURCE = "jibx_binding.xml"; private Run() {} /** * Accumulate list of bindings from stream. * * @param is stream to be read for list of bindings (one per line) * @param bindings accumulated collection of bindings */ private static void addBindings(InputStream is, ArrayList bindings) throws IOException { BufferedReader rdr = new BufferedReader(new InputStreamReader(is)); String line; while ((line = rdr.readLine()) != null) { if (line.length() > 0) { bindings.add(line); } } } /** * Main method for bind-on-load handling. * * @param args command line arguments */ public static void main(String[] args) { if (args.length >= 1) { try { // first get binding definitions and target class information ArrayList files = new ArrayList(); ArrayList resources = new ArrayList(); int index = 0; String target = null; while (index < args.length) { String arg = args[index++]; if ("-b".equals(arg)) { if (index < args.length) { files.add(args[index++]); } else { System.err.println("Missing binding file and " + "target class following '-b'"); } } else if ("-l".equals(arg)) { if (index < args.length) { FileInputStream is = new FileInputStream(args[index++]); addBindings(is, files); is.close(); } else { System.err.println("Missing binding list file " + "and target class following '-l'"); } } else if ("-r".equals(arg)) { if (index < args.length) { resources.add(args[index++]); } else { System.err.println("Missing binding resource and " + "target class following '-r'"); } } else { target = arg; break; } } // make sure we have a target class name if (target != null) { // save class name and create loader Loader loader = new Loader(); // check binding resources if no specified bindings if (files.size() == 0 && resources.size() == 0) { InputStream is = loader.getResourceAsStream(BINDING_LIST_RESOURCE); if (is == null) { String name = target.replace('.', '/') + "_" + BINDING_LIST_RESOURCE; is = loader.getResourceAsStream(name); } if (is != null) { addBindings(is, resources); is.close(); } else { String name = DEFAULT_BINDING_RESOURCE; is = loader.getResourceAsStream(name); if (is == null) { name = target.replace('.', '/') + "_" + DEFAULT_BINDING_RESOURCE; is = loader.getResourceAsStream(name); } if (is != null) { resources.add(name); is.close(); } } } // make sure at least one binding has been specified if (files.size() == 0 && resources.size() == 0) { System.err.println("No bindings found"); } else { // compile all bindings for (int i = 0; i < files.size(); i++) { loader.loadFileBinding((String)files.get(i)); } for (int i = 0; i < resources.size(); i++) { String path = (String)resources.get(i); String fname = Utility.fileName(path); String bname = fname; int split = bname.indexOf('.'); if (split >= 0) { bname = bname.substring(0, split); } InputStream is = loader.getResourceAsStream(path); if (is == null) { throw new IOException("Resource " + path + " not found on classpath"); } loader.loadBinding(fname, Utility.convertName(bname), is, null); } loader.processBindings(); // load the target class using custom class loader Class clas = loader.loadClass(target); // invoke the "main" method of the application class Class[] ptypes = new Class[] { args.getClass() }; Method main = clas.getDeclaredMethod("main", ptypes); String[] pargs = new String[args.length-index]; System.arraycopy(args, index, pargs, 0, pargs.length); Thread.currentThread().setContextClassLoader(loader); main.invoke(null, new Object[] { pargs }); } } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (JiBXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } else { System.out.println ("Usage: org.jibx.binding.Run [-b binding-file][-l list-file]" + "[-r binding-resource] main-class args..."); } } }libjibx-java-1.1.6a/build/src/org/jibx/binding/SchemaGenerator.java0000644000175000017500000012027611005500414025035 0ustar moellermoeller/* Copyright (c) 2004-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.FactoryConfigurationError; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Result; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.TransformerFactoryConfigurationError; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.jibx.binding.classes.ClassCache; import org.jibx.binding.classes.ClassFile; import org.jibx.binding.model.BindingElement; import org.jibx.binding.model.ClassWrapper; import org.jibx.binding.model.CollectionElement; import org.jibx.binding.model.ContainerElementBase; import org.jibx.binding.model.DefinitionContext; import org.jibx.binding.model.ElementBase; import org.jibx.binding.model.IClass; import org.jibx.binding.model.IClassLocator; import org.jibx.binding.model.MappingElement; import org.jibx.binding.model.NestingAttributes; import org.jibx.binding.model.NestingElementBase; import org.jibx.binding.model.StructureElement; import org.jibx.binding.model.StructureElementBase; import org.jibx.binding.model.TemplateElementBase; import org.jibx.binding.model.ValidationContext; import org.jibx.binding.model.ValidationProblem; import org.jibx.binding.model.ValueElement; import org.jibx.binding.util.ObjectStack; import org.jibx.runtime.JiBXException; import org.jibx.runtime.ValidationException; import org.w3c.dom.Document; import org.w3c.dom.Element; /** * Binding generator. This loads the specified input classes and processes them * to generate a default binding definition. * * @author Dennis M. Sosnoski */ public class SchemaGenerator { /** Generator version. */ private static String CURRENT_VERSION = "0.4"; /** Schema namespace URI. */ private static final String XSD_URI = "http://www.w3.org/2001/XMLSchema"; /** Fixed XML namespace. */ public static final String XML_URI = "http://www.w3.org/XML/1998/namespace"; /** Fixed XML namespace namespace. */ public static final String XMLNS_URI = "http://www.w3.org/2000/xmlns/"; /** Set of object types mapped to schema types. */ private static HashMap s_objectTypeMap = new HashMap(); static { s_objectTypeMap.put("java.lang.Boolean", "xsd:boolean"); s_objectTypeMap.put("java.lang.Byte", "xsd:byte"); s_objectTypeMap.put("java.lang.Char", "xsd:unsignedInt"); s_objectTypeMap.put("java.lang.Double", "xsd:double"); s_objectTypeMap.put("java.lang.Float", "xsd:float"); s_objectTypeMap.put("java.lang.Integer", "xsd:int"); s_objectTypeMap.put("java.lang.Long", "xsd:long"); s_objectTypeMap.put("java.lang.Short", "xsd:short"); s_objectTypeMap.put("java.math.BigDecimal", "xsd:decimal"); s_objectTypeMap.put("java.math.BigInteger", "xsd:integer"); //#!j2me{ s_objectTypeMap.put("java.sql.Date", "xsd:date"); s_objectTypeMap.put("java.sql.Time", "xsd:time"); s_objectTypeMap.put("java.sql.Timestamp", "xsd:dateTime"); //#j2me} s_objectTypeMap.put("java.util.Date", "xsd:dateTime"); s_objectTypeMap.put("byte[]", "xsd:base64"); } /** Set of primitive types mapped to schema types. */ private static HashMap s_primitiveTypeMap = new HashMap(); static { s_primitiveTypeMap.put("boolean", "xsd:boolean"); s_primitiveTypeMap.put("byte", "xsd:byte"); s_primitiveTypeMap.put("char", "xsd:unsignedInt"); s_primitiveTypeMap.put("double", "xsd:double"); s_primitiveTypeMap.put("float", "xsd:float"); s_primitiveTypeMap.put("int", "xsd:int"); s_primitiveTypeMap.put("long", "xsd:long"); s_primitiveTypeMap.put("short", "xsd:short"); } /** Show verbose output flag. */ private boolean m_verbose; /** Use qualified elements default in schema flag. */ private boolean m_isElementQualified; /** Use qualified attributes default in schema flag. */ private boolean m_isAttributeQualified; /** Indentation sequence per level of nesting. */ private String m_indentSequence; /** Map from namespaces to schemas. */ private HashMap m_schemaMap; /** Locator for finding classes referenced by binding. */ private IClassLocator m_classLocator; /** Document used for all schema definitions. */ private Document m_document; /** Stack of structure definitions in progress (used to detect cycles). */ private ObjectStack m_structureStack; /** * Constructor with only paths supplied. This just initializes all other * options disabled. * * @param paths class paths to be checked for classes referenced by bindings */ public SchemaGenerator(ArrayList paths) { m_structureStack = new ObjectStack(); m_schemaMap = new HashMap(); // set paths to be used for loading referenced classes String[] parray = (String[])paths.toArray(new String[paths.size()]); ClassCache.setPaths(parray); ClassFile.setPaths(parray); // set class locator m_classLocator = new IClassLocator() { public IClass getClassInfo(String name) { try { return new ClassWrapper(this, ClassCache.getClassFile(name)); } catch (JiBXException e) { throw new IllegalStateException("Class not found " + name); } } }; try { // create the document used for all schemas DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setNamespaceAware(true); m_document = dbf.newDocumentBuilder().newDocument(); } catch (ParserConfigurationException e) { throw new IllegalStateException("Parser configuration error " + e.getMessage()); } catch (FactoryConfigurationError e) { throw new IllegalStateException("Factory configuration error " + e.getMessage()); } } /** * Constructor with settings specified. * * @param verbose report binding details and results * @param equal use element form default qualified flag * @param aqual use attribute form default qualified flag * @param paths class paths to be checked for classes referenced by bindings */ public SchemaGenerator(boolean verbose, boolean equal, boolean aqual, ArrayList paths) { this(paths); m_verbose = verbose; m_isElementQualified = equal; m_isAttributeQualified = aqual; m_indentSequence = " "; } /** * Set control flag for verbose processing reports. * * @param verbose report verbose information in processing bindings flag */ public void setVerbose(boolean verbose) { m_verbose = verbose; } /** * Set control flag for element qualified default schema. * * @param qual element qualified default schemas flag */ public void setElementQualified(boolean qual) { m_isElementQualified = qual; } /** * Set control flag for attribute qualified default schema. * * @param qual attribute qualified default schemas flag */ public void setAttributeQualified(boolean qual) { m_isAttributeQualified = qual; } /** * Get array of generated schemas. * * @return array of schema elements */ public Element[] getSchemas() { Element[] schemas = new Element[m_schemaMap.size()]; int fill = 0; for (Iterator iter = m_schemaMap.values().iterator(); iter.hasNext();) { schemas[fill++] = (Element)iter.next(); } return schemas; } /** * Generate indentation to proper depth for current item. This creates the * indentation text and appends it to the supplied parent. The generated * indentation is appropriate for the close tag of the parent element; if * a child element is to be added following this indentation it needs to * use an additional leading indent. * * @param parent element to contain indented child item */ private void indentForClose(Element parent) { StringBuffer buff = new StringBuffer(20); buff.append('\n'); Element ancestor = parent; boolean count = false; while (ancestor != null) { if (count) { buff.append(m_indentSequence); } ancestor = (Element)ancestor.getParentNode(); count = true; } parent.appendChild(m_document.createTextNode(buff.toString())); } /** * Add comment with appropriate indentation. * * @param parent element to contain indented child item * @param text comment text */ private void addComment(Element parent, String text) { if (parent.getChildNodes().getLength() == 0) { indentForClose(parent); } parent.appendChild(m_document.createTextNode(m_indentSequence)); parent.appendChild(m_document.createComment(text)); indentForClose(parent); } /** * Add child element with appropriate indentation. This generates and * returns the child element after adding it to the supplied parent, * allowing further modification of the new child element. * * @param parent element to contain indented child item * @param name child element name */ private Element addChildElement(Element parent, String name) { if (parent.getChildNodes().getLength() == 0) { indentForClose(parent); } parent.appendChild(m_document.createTextNode(m_indentSequence)); Element element = m_document.createElementNS(XSD_URI, name); element.setPrefix(parent.getPrefix()); parent.appendChild(element); indentForClose(parent); return element; } /** * Get innermost containing definition context. * * @return innermost definition context containing this element */ public DefinitionContext getDefinitions() { int index = 0; while (index < m_structureStack.size()) { NestingElementBase nest = (NestingElementBase)m_structureStack.peek(index++); if (nest.getDefinitions() != null) { return nest.getDefinitions(); } } throw new IllegalStateException ("Internal error: no definition context"); } /** * Process a structure component (structure or collection element) with no * name and no child components. This adds the appropriate type of element * or any definition to the container schema element. * * @param comp structure component to be processed * @param egroup schema element to contain element definitions * @param agroup schema element to contain attribute definitions */ private void defineEmptyStructureComponent(StructureElementBase comp, Element egroup, Element agroup) { NestingElementBase parent = (NestingElementBase)m_structureStack.peek(0); boolean only = parent.children().size() == 1; if (comp.type() == ElementBase.COLLECTION_ELEMENT) { // collection may define type or not CollectionElement collection = (CollectionElement)comp; String itype = collection.getItemTypeClass().getName(); DefinitionContext dctx = getDefinitions(); TemplateElementBase templ = dctx.getSpecificTemplate(itype); Element element = null; if (! (templ instanceof MappingElement)) { if (only) { addComment(egroup, " Replace \"any\" with details of " + "content to complete schema "); element = addChildElement(egroup, "any"); } else { addComment(egroup, " No mapping for items of collection at " + ValidationException.describe(collection) + " "); addComment(egroup, " Fill in details of content to complete schema "); } } else { element = addChildElement(egroup, "element"); String name = ((MappingElement)templ).getName(); if (element.getPrefix() == null) { name = "tns:" + name; } element.setAttribute("ref", name); } if (element != null) { element.setAttribute("minOccurs", "0"); element.setAttribute("maxOccurs", "unbounded"); } } else { // check for reference to a mapped class StructureElement structure = (StructureElement)comp; TemplateElementBase templ = structure.getEffectiveMapping(); if (! (templ instanceof MappingElement)) { // unknown content, leave it to user to fill in details if (only) { addComment(egroup, " Replace \"any\" with details of " + "content to complete schema "); addChildElement(egroup, "any"); } else { addComment(egroup, " No mapping for structure at " + ValidationException.describe(structure) + " "); addComment(egroup, " Fill in details of content here to complete schema "); } } else { MappingElement mapping = (MappingElement)templ; if (mapping.isAbstract()) { // check name to be used for instance of type String ename = structure.getName(); if (ename == null) { ename = mapping.getName(); } if (ename == null) { // no schema equivalent, embed definition directly addComment(egroup, "No schema representation for " + "directly-embedded type, inlining definition"); addComment(egroup, "Add element name to structure at " + ValidationException.describe(structure) + " to avoid inlining"); defineList(mapping.children(), egroup, agroup, false); } else { // handle abstract mapping element as reference to type Element element = addChildElement(egroup, "element"); String tname = simpleClassName(mapping.getClassName()); if (element.getPrefix() == null) { tname = "tns:" + tname; } element.setAttribute("type", tname); String name = structure.getName(); if (name == null) { name = mapping.getName(); } element.setAttribute("name", name); if (structure.isOptional()) { element.setAttribute("minOccurs", "0"); } } } else { // concrete mapping, check for name overridden String sname = structure.getName(); String mname = mapping.getName(); if (sname != null && !sname.equals(mname)) { // inline definition for overridden name addComment(egroup, "No schema representation for " + "element reference with different name, inlining " + "definition"); addComment(egroup, "Remove name on mapping reference at " + ValidationException.describe(structure) + " to avoid inlining"); defineList(mapping.children(), egroup, agroup, false); } else { // use element reference for concrete mapping Element element = addChildElement(egroup, "element"); String tname = simpleClassName(mapping.getClassName()); if (element.getPrefix() == null) { tname = "tns:" + tname; } element.setAttribute("ref", tname); if (structure.isOptional()) { element.setAttribute("minOccurs", "0"); } } } } } } /** * Process a structure component (structure or collection element) within a * list of child components. This adds the appropriate type of element or * any definition to the container, if necessary calling other methods for * recursive handling of nested child components. * * @param comp structure component to be processed * @param egroup schema element to contain element definitions * @param agroup schema element to contain attribute definitions * @param mult allow any number of occurrences of components flag */ private void defineStructureComponent(StructureElementBase comp, Element egroup, Element agroup, boolean mult) { // check for element defined by binding component if (comp.getName() != null) { // create basic element definition for name Element element = addChildElement(egroup, "element"); element.setAttribute("name", comp.getName()); if (mult) { element.setAttribute("minOccurs", "0"); element.setAttribute("maxOccurs", "unbounded"); } else if (comp.isOptional()) { element.setAttribute("minOccurs", "0"); } // check for children present if (comp.children().size() > 0) { defineNestedStructure(comp, element); } else { // nest complex type definition for actual content Element type = addChildElement(element, "complexType"); Element seq = addChildElement(type, "sequence"); // process the content description defineEmptyStructureComponent(comp, seq, type); } } else if (comp.children().size() > 0) { // handle child components with recursive call boolean coll = comp.type() == ElementBase.COLLECTION_ELEMENT; m_structureStack.push(comp); defineList(comp.children(), egroup, agroup, coll); m_structureStack.pop(); } else { // handle empty structure definition inline defineEmptyStructureComponent(comp, egroup, agroup); } } /** * Create the schema definition list for a binding component list. This * builds the sequence of elements and attributes defined by the binding * components, including nested complex types for elements with structure. * * @param comps binding component list * @param egroup schema element to contain element definitions * @param agroup schema element to contain attribute definitions * @param mult allow any number of occurrences of components flag */ private void defineList(ArrayList comps, Element egroup, Element agroup, boolean mult) { // handle all nested elements of container for (int i = 0; i < comps.size(); i++) { ElementBase child = (ElementBase)comps.get(i); switch (child.type()) { case ElementBase.COLLECTION_ELEMENT: case ElementBase.STRUCTURE_ELEMENT: { defineStructureComponent((StructureElementBase)child, egroup, agroup, mult); break; } case ElementBase.MAPPING_ELEMENT: { // nested mapping definitions not handled System.err.println("Error: nested mapping not supported " + "(class " + ((MappingElement)child).getClassName() + ")"); break; } case ElementBase.TEMPLATE_ELEMENT: { // templates to be added once usable in binding System.err.println ("Error: template component not yet supported"); break; } case ElementBase.VALUE_ELEMENT: { // get type information for value ValueElement value = (ValueElement)child; String tname = value.getType().getName(); String stype = (String)s_primitiveTypeMap.get(tname); if (stype == null) { stype = (String)s_objectTypeMap.get(tname); if (stype == null) { stype = "xsd:string"; } } // build schema element or attribute for value Element element; int style = value.getStyle(); if (style == NestingAttributes.ATTRIBUTE_STYLE) { // append attribute as child of type element = addChildElement(agroup, "attribute"); if (!value.isOptional()) { element.setAttribute("use", "required"); } } else if (style == NestingAttributes.ELEMENT_STYLE) { // append simple element as child of grouping element = addChildElement(egroup, "element"); if (mult) { element.setAttribute("minOccurs", "0"); element.setAttribute("maxOccurs", "unbounded"); } else if (value.isOptional()) { element.setAttribute("minOccurs", "0"); } } else { // other types are not currently handled System.err.println("Error: value type " + value.getEffectiveStyleName() + " not supported"); break; } // set common attributes on definition element.setAttribute("name", value.getName()); element.setAttribute("type", stype); break; } } } } /** * Create the schema definition for a nested structure. This defines a * complex type, if necessary calling itself recursively for elements which * are themselves complex types. In the special case where the container * element is a mapping which extends an abstract base class this generates * the complex type as an extension of the base class complex type. * * @param container binding definition element containing nested structure * @param parent schema element to hold the definition * @return constructed complex type */ private Element defineNestedStructure(ContainerElementBase container, Element parent) { // create complex type as holder for definition Element type = addChildElement(parent, "complexType"); // check whether ordered or unordered container Element group; ArrayList childs = container.children(); if (container.isOrdered()) { // define content list as sequence group = addChildElement(type, "sequence"); // check for mapping which extends another mapping /* if (container instanceof MappingElement) { MappingElement mapping = (MappingElement)container; MappingElement extended = mapping.getExtendsMapping(); if (extended != null) { // now see if the mapping can extend base complex type boolean extend = false; for (int i = 0; i < childs.size(); i++) { ElementBase child = (ElementBase)childs.get(i); if (child instanceof StructureElement) { StructureElement struct = (StructureElement)child; if (struct.getMapAsMapping() == extended) { if (struct.getName() == null) { extend = true; } } } if (child instanceof IComponent) { } } } } */ } else { group = addChildElement(type, "all"); } // handle all nested elements of container m_structureStack.push(container); defineList(childs, group, type, container.type() == ElementBase.COLLECTION_ELEMENT); m_structureStack.pop(); return type; } /** * Generate a schema from a binding using supplied classpaths. If the schema * for the binding namespace (or default namespace) already exists the * definitions from this binding are added to the existing schema; otherwise * a new schema is created and added to the collection defined. * * @param binding root element of binding */ private void generateSchema(BindingElement binding) { // process each mapping definition for binding m_structureStack.push(binding); ArrayList tops = binding.topChildren(); for (int i = 0; i < tops.size(); i++) { ElementBase top = (ElementBase)tops.get(i); if (top.type() == ElementBase.MAPPING_ELEMENT) { // find or create schema for mapped class MappingElement mapping = (MappingElement)top; String uri = mapping.getNamespace().getUri(); Element schema = (Element)m_schemaMap.get(uri); if (schema == null) { // build new schema element for this namespace schema = m_document.createElementNS(XSD_URI, "schema"); m_schemaMap.put(uri, schema); // set qualification attributes if needed if (m_isElementQualified) { schema.setAttribute("elementFormDefault", "qualified"); } if (m_isAttributeQualified) { schema.setAttribute("attributeFormDefault", "qualified"); } // add namespace declarations to element if (uri == null) { schema.setPrefix("xsd"); } else { schema.setAttribute("targetNamespace", uri); schema.setAttributeNS(XMLNS_URI, "xmlns:tns", uri); schema.setAttributeNS(XMLNS_URI, "xmlns", XSD_URI); } schema.setAttributeNS(XMLNS_URI, "xmlns:xsd", XSD_URI); // add spacing for first child node indentForClose(schema); } // add spacer and comment before actual definition indentForClose(schema); String cname = mapping.getClassName(); addComment(schema, " Created from mapping for class " + cname + " "); if (mapping.isAbstract()) { // add mapping as global type in binding Element type = defineNestedStructure(mapping, schema); type.setAttribute("name", simpleClassName(cname)); } else { // add mapping as global element in binding Element element = addChildElement(schema, "element"); element.setAttribute("name", mapping.getName()); // check type of mapping definition if (mapping.getMarshaller() != null || mapping.getUnmarshaller() != null) { // use "any" for custom marshaller/unmarshaller Element type = addChildElement(element, "complexType"); Element seq = addChildElement(type, "sequence"); addComment(seq, " Replace \"any\" with details of " + "content to complete schema "); addChildElement(seq, "any"); } else { // use complex type for embedded definition defineNestedStructure(mapping, element); } } } } m_structureStack.pop(); } /** * Process a binding definition for schema generation. This first validates * the binding definition, and if it is valid then handles schema generation * from the binding. * * @param binding root element of binding * @exception JiBXException if error in generating the schema */ public void generate(BindingElement binding) throws JiBXException { // validate the binding definition ValidationContext vctx = new ValidationContext(m_classLocator); binding.runValidation(vctx); boolean usable = true; if (vctx.getProblems().size() > 0) { // report problems found System.err.println("Problems found in binding " + binding.getName()); ArrayList probs = vctx.getProblems(); for (int i = 0; i < probs.size(); i++) { ValidationProblem prob = (ValidationProblem)probs.get(i); System.err.println(prob.getDescription()); if (prob.getSeverity() > ValidationProblem.WARNING_LEVEL) { usable = false; } } } // check if binding usable for schema generation if (usable) { generateSchema(binding); } else { System.err.println ("Binding validation errors prevent schema generation"); System.exit(1); } } /** * Get simple class name. * * @param cname class name with full package specification * @return class name only */ private String simpleClassName(String cname) { int split = cname.lastIndexOf('.'); if (split >= 0) { cname = cname.substring(split+1); } return cname; } /** * Main method for running compiler as application. * * @param args command line arguments */ public static void main(String[] args) { if (args.length > 0) { try { // check for various flags set boolean verbose = false; boolean edflt = true; boolean adflt = false; ArrayList paths = new ArrayList(); int offset = 0; for (; offset < args.length; offset++) { String arg = args[offset]; if ("-v".equalsIgnoreCase(arg)) { verbose = true; } else if ("-e".equalsIgnoreCase(arg)) { edflt = false; } else if ("-a".equalsIgnoreCase(arg)) { adflt = true; } else if ("-p".equalsIgnoreCase(arg)) { paths.add(args[++offset]); } else { break; } } // set up path and binding lists String[] vmpaths = Utility.getClassPaths(); for (int i = 0; i < vmpaths.length; i++) { paths.add(vmpaths[i]); } ArrayList bindings = new ArrayList(); for (int i = offset; i < args.length; i++) { bindings.add(args[i]); } // report on the configuration System.out.println("Running schema generator version " + CURRENT_VERSION); if (verbose) { System.out.println("Using paths:"); for (int i = 0; i < paths.size(); i++) { System.out.println(" " + paths.get(i)); } System.out.println("Using input bindings:"); for (int i = 0; i < bindings.size(); i++) { System.out.println(" " + bindings.get(i)); } } // process all specified binding files SchemaGenerator schemagen = new SchemaGenerator(verbose, edflt, adflt, paths); for (int i = 0; i < bindings.size(); i++) { // read binding from file String bpath = (String)bindings.get(i); String name = Utility.fileName(bpath); File file = new File(bpath); BindingElement binding = Utility.validateBinding(name, new URL("file://" + file.getAbsolutePath()), new FileInputStream(file)); // convert the binding to a schema if (binding != null) { schemagen.generate(binding); } } // output each schema to separate file Element[] schemas = schemagen.getSchemas(); for (int i = 0; i < schemas.length; i++) { // get base name for output file from last part of namespace Element schema = schemas[i]; String tns = schema.getAttribute("targetNamespace"); String name = tns; if (name.length() == 0) { // fix this to relate back to binding name = (String)bindings.get(0); int split = name.lastIndexOf('.'); if (split >= 0) { name = name.substring(0, split); } } else { int split = name.lastIndexOf('/'); if (split >= 0) { name = name.substring(split+1); } } try { // write schema to output file name += ".xsd"; FileOutputStream out = new FileOutputStream(name); Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.setOutputProperty("indent", "no"); DOMSource source = new DOMSource(schema); Result result = new StreamResult(out); transformer.transform(source, result); out.close(); System.out.print("Wrote schema " + name); if (tns.length() == 0) { System.out.println(" for default namespace"); } else { System.out.println(" for namespace " + tns); } } catch (TransformerConfigurationException e) { e.printStackTrace(); } catch (TransformerFactoryConfigurationError e) { e.printStackTrace(); } catch (TransformerException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } catch (JiBXException ex) { ex.printStackTrace(); System.exit(1); } catch (FileNotFoundException e) { e.printStackTrace(); System.exit(2); } catch (MalformedURLException e) { e.printStackTrace(); System.exit(3); } } else { System.out.println ("\nUsage: java org.jibx.binding.SchemaGenerator [-v] [-e]" + " [-a] [-p path]* binding1 binding2 ...\nwhere:" + "\n -v turns on verbose output," + "\n -e sets elementFormDefault=\"false\" for the schemas," + "\n -a sets attributeFormDefault=\"true\" for the schemas, " + "and\n -p gives a path component for looking up the classes " + "referenced in the binding\nThe binding# files are " + "different bindings to be used for schema generation.\n"); System.exit(1); } } } libjibx-java-1.1.6a/build/src/org/jibx/binding/Utility.java0000644000175000017500000003740611013374540023443 0ustar moellermoeller/* Copyright (c) 2003-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.ArrayList; import java.util.jar.Attributes; import java.util.jar.JarFile; import java.util.jar.Manifest; import org.jibx.binding.classes.BoundClass; import org.jibx.binding.classes.ClassFile; import org.jibx.binding.def.BindingBuilder; import org.jibx.binding.def.BindingDefinition; import org.jibx.binding.def.MappingBase; import org.jibx.binding.model.BindingElement; import org.jibx.binding.model.IncludeElement; import org.jibx.binding.model.MappingElement; import org.jibx.binding.model.ValidationContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.UnmarshallingContext; /** * Binding compiler support class. Supplies common methods for use in compiling * binding definitions. * * @author Dennis M. Sosnoski */ public class Utility { // buffer size for copying stream input private static final int COPY_BUFFER_SIZE = 1024; // private constructor to prevent any instance creation private Utility() {} /** * Read contents of stream into byte array. * * @param is input stream to be read * @return array of bytes containing all data from stream * @throws IOException on stream access error */ private static byte[] getStreamData(InputStream is) throws IOException { byte[] buff = new byte[COPY_BUFFER_SIZE]; ByteArrayOutputStream os = new ByteArrayOutputStream(); int count; while ((count = is.read(buff)) >= 0) { os.write(buff, 0, count); } return os.toByteArray(); } /** * Recurse through jar file path component, adding all jars referenced from * the original jar to the path collection. Silently ignores problems * loading jar files. * * @param path jar path component * @param paths set of paths processed (added to by call) */ private static void recursePathJars(String path, ArrayList paths) { try { // check class path information in jar file JarFile jfile = new JarFile(path, false); Manifest mfst = jfile.getManifest(); if (mfst != null) { // look for class path information from manifest Attributes attrs = mfst.getMainAttributes(); String cpath = (String)attrs.get(Attributes.Name.CLASS_PATH); if (cpath != null) { // set base path for all relative references int split = path.lastIndexOf(File.separatorChar); String base = (split >= 0) ? path.substring(0, split+1) : ""; // process all references in jar class path while (cpath != null) { split = cpath.indexOf(' '); String item; if (split >= 0) { item = cpath.substring(0, split); cpath = cpath.substring(split+1).trim(); } else { item = cpath; cpath = null; } String ipath = base + item; if (!paths.contains(ipath)) { paths.add(ipath); split = ipath.lastIndexOf('.'); if (split >= 0 && "jar".equalsIgnoreCase (ipath.substring(split+1))) { recursePathJars(ipath, paths); } } } } } } catch (IOException ex) { /* silently ignore problems in loading */ } } /** * Method builds a string array of items in the class path. * * @return array of classpath components */ public static String[] getClassPaths() { // get all class path components String path = System.getProperty("java.class.path"); ArrayList paths = new ArrayList(); int start = 0; int mark; while (path != null) { mark = path.indexOf(File.pathSeparatorChar, start); String item; if (mark >= 0) { item = path.substring(start, mark); } else { item = path.substring(start); path = null; } if (!paths.contains(item)) { paths.add(item); int split = item.lastIndexOf('.'); if (split >= 0 && "jar".equalsIgnoreCase(item.substring(split+1))) { recursePathJars(item, paths); } } start = mark + 1; } paths.add("."); String[] clsspths = new String[paths.size()]; paths.toArray(clsspths); return clsspths; } /** * Generate binding name. This takes a base name (such as a file name with * extension stripped off) and converts it to legal form by substituting '_' * characters for illegal characters in the base name. * * @param name base binding name * @return converted binding name */ public static String convertName(String name) { // convert name to use only legal characters StringBuffer buff = new StringBuffer(name); for (int i = 0; i < buff.length(); i++) { if (!Character.isJavaIdentifierPart(buff.charAt(i))) { buff.setCharAt(i, '_'); } } return buff.toString(); } /** * Extract base file name from a full path. * * @param path full file path * @return file name component from path */ public static String fileName(String path) { int split = path.lastIndexOf(File.separatorChar); return path.substring(split+1); } /** * Validate binding definition. If issues are found in the binding the * issues are printed directly to the console. * * @param name identifier for binding definition * @param url URL for binding definition (null if not * available) * @param is input stream for reading binding definition * @return root element of binding model if binding is valid, * null if one or more errors in binding */ public static BindingElement validateBinding(String name, URL url, InputStream is) { try { ValidationContext vctx = BindingElement.newValidationContext(); BindingElement root = BindingElement.validateBinding(name, url, is, vctx); if (vctx.getErrorCount() == 0 && vctx.getFatalCount() == 0) { return root; } } catch (JiBXException ex) { System.err.println("Unable to process binding " + name); ex.printStackTrace(); } return null; } /** * Load validated binding definition. This first reads the input stream into * a memory buffer, then parses the data once for validation and a second * time for the actual binding definition construction. If any errors are * found in the binding definition validation the construction is skipped * and an exception is thrown. * * @param fname binding definition full name * @param sname short form of name to use as the default name of the binding * @param istrm input stream for binding definition document * @param url URL for binding definition (null if not * available) * @param test validate binding flag * @return constructed binding definition * @exception FileNotFoundException if path cannot be accessed * @exception JiBXException if error in processing the binding definition */ public static BindingDefinition loadBinding(String fname, String sname, InputStream istrm, URL url, boolean test) throws JiBXException, IOException { // read stream into memory buffer byte[] data = getStreamData(istrm); // validate using binding object model boolean valid = true; ClassFile cf = null; String tpack = null; if (test) { BindingElement root = validateBinding(fname, url, new ByteArrayInputStream(data)); if (root == null) { valid = false; } else { // find package of first mapping to use for added classes cf = findMappedClass(root); tpack = root.getTargetPackage(); if (tpack == null && cf != null) { tpack = cf.getPackage(); } } } if (valid) { try { // construct the binding definition code generator UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new ByteArrayInputStream(data), fname, null); if (cf != null) { // set target root and package for created classes BoundClass.setModify(cf.getRoot(), tpack); } BindingDefinition bdef = BindingBuilder.unmarshalBindingDefinition(uctx, sname, url); // set package and class if not validated if (!test) { // a kludge, but needed to support skipping validation ArrayList maps = bdef.getDefinitionContext().getMappings(); if (maps != null) { // set up package information from mapped class for (int i = 0; i < maps.size(); i++) { Object child = maps.get(i); if (child instanceof MappingBase) { // end scan if a real mapping is found MappingBase mapbase = (MappingBase)child; cf = mapbase.getBoundClass().getMungedFile(); if (mapbase.getBoundClass().isDirectAccess()) { break; } } } } } // set up binding root based on first mapping if (cf == null) { throw new JiBXException("One or more elements " + "for modifiable classes must be defined in "); } else { // get package to be used for binding classes if (tpack == null) { tpack = bdef.getDefaultPackage(); if (tpack == null) { tpack = cf.getPackage(); } } bdef.setFactoryLocation(tpack, cf.getRoot()); return bdef; } } catch (JiBXException e) { throw new JiBXException ("\n*** Error during code generation for file '" + fname + "' - please enter a bug report for this error in Jira if " + "the problem is not listed as fixed on the online status " + "page ***\n", e); } } else { throw new JiBXException("Binding " + fname + " is unusable because of validation errors"); } } /** * Recursively search through binding definitions for a modifiable mapped * class. This is used to determine the default package for code generation. * * @param childs * @return */ private static ClassFile findMappedClass(BindingElement root) { ArrayList childs = root.topChildren(); if (childs != null) { // recursively search for modifiable mapped class for (int i = childs.size() - 1; i >= 0 ; i--) { Object child = childs.get(i); if (child instanceof MappingElement) { // end scan if a real mapping is found MappingElement map = (MappingElement)child; ClassFile cf = map.getHandledClass().getClassFile(); if (!cf.isInterface() && cf.isModifiable()) { return cf; } } else if (child instanceof IncludeElement) { // recurse on included binding BindingElement bind = ((IncludeElement)child).getBinding(); if (bind != null) { ClassFile cf = findMappedClass(bind); if (cf != null) { return cf; } } } } } return null; } /** * Load binding definition from file. * * @param path file path for binding definition * @param valid validate binding flag * @return constructed binding definition * @exception IOException if error accessing file * @exception JiBXException if error in processing the binding definition */ public static BindingDefinition loadFileBinding(String path, boolean valid) throws JiBXException, IOException { // extract basic name of binding file from path String fname = fileName(path); String sname = fname; int split = sname.indexOf('.'); if (split > 0) { sname = sname.substring(0, split); } sname = convertName(sname); // construct and return the binding definition File file = new File(path); return loadBinding(fname, sname, new FileInputStream(file), file.toURL(), valid); } }libjibx-java-1.1.6a/build/src/org/jibx/custom/0000755000175000017500000000000011023035620021015 5ustar moellermoellerlibjibx-java-1.1.6a/build/src/org/jibx/custom/CustomUtils.java0000644000175000017500000001011310752422242024157 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.custom; import java.io.File; import java.util.HashSet; import java.util.Set; /** * Support methods used by customization code. * * @author Dennis M. Sosnoski */ public class CustomUtils { /** * Utility method to add an array of names to a set, ignoring case. All the supplied names are converted to lower * case before they are added to the set. * * @param names (null if none) * @param set base set of names (null if none) * @return name set (null if none) */ public static Set addNoCaseSet(String[] names, Set set) { if (names == null) { return set; } else { if (set == null) { set = new HashSet(); } for (int i = 0; i < names.length; i++) { set.add(names[i].toLowerCase()); } return set; } } /** * Utility method to build a set from an array of names, ignoring case. All the supplied names are converted to * lower case before they are added to the set. * * @param names (null if none) * @return name set (null if name array also null, otherwise non-null) */ public static Set noCaseNameSet(String[] names) { if (names == null) { return null; } else { HashSet set = new HashSet(); for (int i = 0; i < names.length; i++) { set.add(names[i].toLowerCase()); } return set; } } /** * Utility method to build a set from an array of names. * * @param names (null if none) * @return name set (null if name array also null, otherwise non-null) */ public static Set nameSet(String[] names) { if (names == null) { return null; } else { HashSet set = new HashSet(); for (int i = 0; i < names.length; i++) { set.add(names[i]); } return set; } } /** * Clean directory by recursively deleting children. * * @param dir directory to be cleaned */ public static void clean(File dir) { if (dir.isDirectory()) { File[] files = dir.listFiles(); for (int i = 0; i < files.length; i++) { File file = files[i]; if (file.isDirectory()) { clean(file); } file.delete(); } } } }libjibx-java-1.1.6a/build/src/org/jibx/custom/CustomizationCommandLineBase.java0000644000175000017500000004413010701164576027453 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.custom; import java.io.File; import java.io.IOException; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; /** * Command line processor for all types of customizable tools. This just provides the basic handling of a customizations * file, target directory, and overrides of values in the customizations root object. * * @author Dennis M. Sosnoski */ public abstract class CustomizationCommandLineBase { /** Array of method parameter classes for single String parameter. */ public static final Class[] STRING_PARAMETER_ARRAY = new Class[] { String.class }; /** Array of classes for String and unmarshaller parameters. */ public static final Class[] STRING_UNMARSHALLER_PARAMETER_ARRAY = new Class[] { String.class, IUnmarshallingContext.class }; /** Ordered array of usage lines. */ protected static final String[] COMMON_USAGE_LINES = new String[] { " -c clean target generation directory (ignored if current directory)", " -f path input customizations file", " -t path target directory for generated output (default is current directory)", " -v verbose output flag" }; /** List of specified classes or files. */ protected List m_extraArgs; /** Target directory for output. */ protected File m_generateDirectory; /** * Process command line arguments array. * * @param args * @return true if valid, false if not * @throws JiBXException * @throws IOException */ public boolean processArgs(String[] args) throws JiBXException, IOException { boolean clean = false; boolean verbose = false; String custom = null; String genpath = null; Map overrides = new HashMap(); ArgList alist = new ArgList(args); m_extraArgs = new ArrayList(); while (alist.hasNext()) { String arg = alist.next(); if ("-c".equalsIgnoreCase(arg)) { clean = true; } else if ("-f".equalsIgnoreCase(arg)) { custom = alist.next(); } else if ("-t".equalsIgnoreCase(arg)) { genpath = alist.next(); } else if ("-v".equalsIgnoreCase(arg)) { verbose = true; } else if (arg.startsWith("--") && arg.length() > 2 && Character.isLetter(arg.charAt(2))) { if (!putKeyValue(arg.substring(2), overrides)) { alist.setValid(false); } } else if (!checkParameter(alist)) { if (arg.startsWith("-")) { System.err.println("Unknown option flag '" + arg + '\''); alist.setValid(false); } else { m_extraArgs.add(alist.current()); break; } } } // collect the extra arguments at end while (alist.hasNext()) { String arg = alist.next(); if (arg.startsWith("-")) { System.err.println("Command line options must precede all other arguments: error on '" + arg + '\''); alist.setValid(false); break; } else { m_extraArgs.add(arg); } } // check for valid command line arguments if (alist.isValid()) { // set output directory if (genpath == null) { m_generateDirectory = new File("."); clean = false; } else { m_generateDirectory = new File(genpath); } if (!m_generateDirectory.exists()) { m_generateDirectory.mkdirs(); clean = false; } if (!m_generateDirectory.canWrite()) { System.err.println("Target directory " + m_generateDirectory.getPath() + " is not writable"); alist.setValid(false); } else { // finish the command line processing finishParameters(alist); // report on the configuration if (verbose) { verboseDetails(); System.out.println("Output to directory " + m_generateDirectory); } // clean generate directory if requested if (clean) { CustomUtils.clean(m_generateDirectory); } // load customizations and check for errors if (!loadCustomizations(custom)) { alist.setValid(false); } else { // apply command line overrides to customizations Map unknowns = applyOverrides(overrides); if (!unknowns.isEmpty()) { for (Iterator iter = unknowns.keySet().iterator(); iter.hasNext();) { String key = (String)iter.next(); System.err.println("Unknown override key '" + key + '\''); } alist.setValid(false); } } } } else { printUsage(); } return alist.isValid(); } /** * Apply a key/value map to a customization object instance. This uses reflection to match the keys to either set * methods (with names of the form setZZZText, or setZZZ, taking a single String parameter) or String fields (named * m_ZZZ). The ZZZ in the names is based on the key name, with hyphenation converted to camel case (leading upper * camel case, for the method names). * * @param map * @param obj * @return map for key/values not found in the supplied object */ public static Map applyKeyValueMap(Map map, Object obj) { Map missmap = new HashMap(); for (Iterator iter = map.keySet().iterator(); iter.hasNext();) { String key = (String)iter.next(); String value = (String)map.get(key); boolean fail = true; Throwable t = null; try { StringBuffer buff = new StringBuffer(key); for (int i = 0; i < buff.length(); i++) { char chr = buff.charAt(i); if (chr == '-') { buff.deleteCharAt(i); buff.setCharAt(i, Character.toUpperCase(buff.charAt(i))); } } String fname = "m_" + buff.toString(); buff.setCharAt(0, Character.toUpperCase(buff.charAt(0))); String mname = "set" + buff.toString(); Method method = null; Class clas = obj.getClass(); int argcnt = 1; while (!clas.getName().equals("java.lang.Object")) { try { method = clas.getDeclaredMethod(mname + "Text", STRING_UNMARSHALLER_PARAMETER_ARRAY); argcnt = 2; break; } catch (NoSuchMethodException e) { try { method = clas.getDeclaredMethod(mname, STRING_PARAMETER_ARRAY); break; } catch (NoSuchMethodException e1) { clas = clas.getSuperclass(); } } } if (method == null) { clas = obj.getClass(); while (!clas.getName().equals("java.lang.Object")) { try { Field field = clas.getDeclaredField(fname); try { field.setAccessible(true); } catch (SecurityException e) { /* deliberately empty */ } String type = field.getType().getName(); if ("java.lang.String".equals(type)) { field.set(obj, value); fail = false; } else if ("boolean".equals(type) || "java.lang.Boolean".equals(type)) { Boolean bval = null; if ("true".equals(value) || "1".equals(value)) { bval = Boolean.TRUE; } else if ("false".equals(value) || "0".equals(value)) { bval = Boolean.FALSE; } if (bval == null) { throw new IllegalArgumentException("Unknown value '" + value + "' for boolean parameter " + key); } field.set(obj, bval); fail = false; } else if ("[Ljava.lang.String;".equals(type)) { try { field.set(obj, org.jibx.runtime.Utility.deserializeTokenList(value)); fail = false; } catch (JiBXException e) { throw new IllegalArgumentException("Error processing list value + '" + value + "': " + e.getMessage()); } } else { throw new IllegalArgumentException("Cannot handle field of type " + type); } break; } catch (NoSuchFieldException e) { clas = clas.getSuperclass(); } } } else { try { method.setAccessible(true); } catch (SecurityException e) { /* deliberately empty */ } Object[] args = new Object[argcnt]; args[0] = value; method.invoke(obj, args); fail = false; } } catch (IllegalAccessException e) { t = e; } catch (SecurityException e) { t = e; } catch (IllegalArgumentException e) { t = e; } catch (InvocationTargetException e) { t = e; } finally { if (t != null) { t.printStackTrace(); System.exit(1); } } if (fail) { missmap.put(key, value); } } return missmap; } /** * Get generate directory. * * @return directory */ public File getGeneratePath() { return m_generateDirectory; } /** * Get extra arguments from command line. These extra arguments must follow all parameter flags. * * @return args */ public List getExtraArgs() { return m_extraArgs; } /** * Set a key=value definition in a map. This is a command line processing assist method that prints an error message * directly if the expected format is not found. * * @param def * @param map * @return true if successful, false if error */ public static boolean putKeyValue(String def, Map map) { int split = def.indexOf('='); if (split >= 0) { String key = def.substring(0, split); if (map.containsKey(key)) { System.err.println("Repeated key item: '" + def + '\''); return false; } else { map.put(key, def.substring(split + 1)); return true; } } else { System.err.println("Missing '=' in expected key=value item: '" + def + '\''); return false; } } /** * Merge two arrays of strings, returning an ordered array containing all the strings from both provided arrays. * * @param base * @param adds * @return ordered merged */ protected String[] mergeUsageLines(String[] base, String[] adds) { if (adds.length == 0) { return base; } else { String fulls[] = new String[base.length + adds.length]; System.arraycopy(base, 0, fulls, 0, base.length); System.arraycopy(adds, 0, fulls, base.length, adds.length); Arrays.sort(fulls); return fulls; } } /** * Check extension parameter. This method may be overridden by subclasses to process parameters beyond those known * to this base class. * * @param alist argument list * @return true if parameter processed, false if unknown */ protected boolean checkParameter(ArgList alist) { return false; } /** * Finish processing of command line parameters. This method may be overridden by subclasses to implement any added * processing after all the command line parameters have been handled. * * @param alist */ protected void finishParameters(ArgList alist) {} /** * Print any extension details. This method may be overridden by subclasses to print extension parameter values for * verbose output. */ protected void verboseDetails() {} /** * Load the customizations file. This method must load the specified customizations file, or create a default * customizations instance, of the appropriate type. * * @param path customization file path, null if none * @return true if successful, false if an error * @throws JiBXException * @throws IOException */ protected abstract boolean loadCustomizations(String path) throws JiBXException, IOException; /** * Apply map of override values to customizations read from file or created as default. * * @param overmap override key-value map * @return map for key/values not recognized */ protected abstract Map applyOverrides(Map overmap); /** * Print usage information. */ public abstract void printUsage(); /** * Wrapper class for command line argument list. */ protected static class ArgList { private int m_offset; private final String[] m_args; private boolean m_valid; /** * Constructor. * * @param args */ protected ArgList(String[] args) { m_offset = -1; m_args = args; m_valid = true; } /** * Check if another argument value is present. * * @return true if argument present, false if all processed */ public boolean hasNext() { return m_args.length - m_offset > 1; } /** * Get current argument value. * * @return argument, or null if none */ public String current() { return (m_offset >= 0 && m_offset < m_args.length) ? m_args[m_offset] : null; } /** * Get next argument value. If this is called with no argument value available it sets the argument list * invalid. * * @return argument, or null if none */ public String next() { if (++m_offset < m_args.length) { return m_args[m_offset]; } else { m_valid = false; return null; } } /** * Set valid state. * * @param valid */ public void setValid(boolean valid) { m_valid = valid; } /** * Check if argument list valid. * * @return true if valid, false if not */ public boolean isValid() { return m_valid; } } }libjibx-java-1.1.6a/build/src/org/jibx/runtime/0000755000175000017500000000000011023035626021174 5ustar moellermoellerlibjibx-java-1.1.6a/build/src/org/jibx/runtime/impl/0000755000175000017500000000000011023035620022127 5ustar moellermoellerlibjibx-java-1.1.6a/build/src/org/jibx/runtime/impl/ArrayRangeIterator.java0000644000175000017500000000740510257171674026567 0ustar moellermoeller/* Copyright (c) 2000-2005, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime.impl; import java.util.Iterator; import java.util.NoSuchElementException; /** * Iterator class for values contained in an array range. This type of iterator * can be used for any contiguous range of items in an object array. * * @author Dennis M. Sosnoski * @version 1.1 */ public class ArrayRangeIterator implements Iterator { /** Empty iterator used whenever possible. */ public static final ArrayRangeIterator EMPTY_ITERATOR = new ArrayRangeIterator(null, 0, 0); /** Array supplying values for iteration. */ protected Object[] m_array; /** Offset of next iteration value. */ protected int m_offset; /** Ending offset for values. */ protected int m_limit; /** * Internal constructor. * * @param array array containing values to be iterated * @param start starting offset in array * @param limit offset past end of values */ private ArrayRangeIterator(Object[] array, int start, int limit) { m_array = array; m_offset = start; m_limit = limit; } /** * Check for iteration element available. * * @return true if element available, false if * not */ public boolean hasNext() { return m_offset < m_limit; } /** * Get next iteration element. * * @return next iteration element * @exception NoSuchElementException if past end of iteration */ public Object next() { if (m_offset < m_limit) { return m_array[m_offset++]; } else { throw new NoSuchElementException(); } } /** * Remove element from iteration. This optional operation is not supported * and always throws an exception. * * @exception UnsupportedOperationException for unsupported operation */ public void remove() { throw new UnsupportedOperationException(); } /** * Build iterator. * * @param array array containing values to be iterated (may be * null) * @param start starting offset in array * @param limit offset past end of values * @return constructed iterator */ public static Iterator buildIterator(Object[] array, int start, int limit) { if (array == null || start >= limit) { return EMPTY_ITERATOR; } else { return new ArrayRangeIterator(array, start, limit); } } }libjibx-java-1.1.6a/build/src/org/jibx/runtime/impl/BackFillArray.java0000644000175000017500000000504410270431330025444 0ustar moellermoeller/* Copyright (c) 2002,2003, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime.impl; /** * Backfill reference item, used for filling in forward references as * members of arrays. Each item holds both the array containing the * reference and the offset in the array. * * @author Dennis M. Sosnoski * @version 1.0 */ public class BackFillArray implements BackFillReference { /** Array containing reference. */ private Object[] m_array; /** Reference offset within array. */ private int m_index; /** * Constructor. Saves the information for filling the reference * once the associated object is defined. * * @param index reference offset within array * @param array array containing the reference */ public BackFillArray(int index, Object[] array) { m_index = index; m_array = array; } /** * Define referenced object. This method is called by the framework * when the forward-referenced item is defined. * * @param obj referenced object */ public void backfill(Object obj) { m_array[m_index] = obj; } }libjibx-java-1.1.6a/build/src/org/jibx/runtime/impl/BackFillHolder.java0000644000175000017500000000620210071714370025607 0ustar moellermoeller/* Copyright (c) 2002,2003, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime.impl; import java.util.ArrayList; /** * Holder used to collect forward references to a particular object. The * references are processed when the object is defined. * * @author Dennis M. Sosnoski * @version 1.0 */ public class BackFillHolder { /** Expected class name of tracked object. */ private String m_class; /** List of references to this object. */ private ArrayList m_list; /** * Constructor. Just creates the backing list. * * @param name expected class name of tracked object */ public BackFillHolder(String name) { m_class = name; m_list = new ArrayList(); } /** * Add forward reference to tracked object. This method is called by * the framework when a reference item is created for the object * associated with this holder. * * @param ref backfill reference item */ public void addBackFill(BackFillReference ref){ m_list.add(ref); } /** * Define referenced object. This method is called by the framework * when the forward-referenced object is defined, and in turn calls each * reference to fill in the reference. * * @param obj referenced object */ public void defineValue(Object obj) { for (int i = 0; i < m_list.size(); i++) { BackFillReference ref = (BackFillReference)m_list.get(i); ref.backfill(obj); } } /** * Get expected class name of referenced object. * * @return expected class name of referenced object */ public String getExpectedClass() { return m_class; } } libjibx-java-1.1.6a/build/src/org/jibx/runtime/impl/BackFillReference.java0000644000175000017500000000423310071714370026272 0ustar moellermoeller/* Copyright (c) 2002,2003, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime.impl; /** * Backfill reference item, used for filling in forward references to * objects. Each reference to an item must define a class implementing * this interface, to be used when a referenced item is not yet defined. * The references for a particular object are collected by a BackFillHolder * instance, and are processed when the object is defined. * * @author Dennis M. Sosnoski * @version 1.0 */ public interface BackFillReference { /** * Define referenced object. This method is called by the framework * when the forward-referenced item is defined. * * @param obj referenced object */ public void backfill(Object obj); } libjibx-java-1.1.6a/build/src/org/jibx/runtime/impl/GenericXMLWriter.java0000644000175000017500000002532110652101062026130 0ustar moellermoeller/* Copyright (c) 2004-2007, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime.impl; import java.io.IOException; import java.io.Writer; import org.jibx.runtime.ICharacterEscaper; import org.jibx.runtime.IXMLWriter; /** * Generic handler for marshalling text document to a writer. This is the * most general output handler since it can be used with any character encoding * and and output writer. * * @author Dennis M. Sosnoski */ public class GenericXMLWriter extends XMLWriterBase { /** Writer for text output. */ private Writer m_writer; /** Escaper for character data content output. */ private ICharacterEscaper m_escaper; /** Indent tags for pretty-printed text. */ private boolean m_indent; /** Base number of characters in indent sequence (end of line only). */ private int m_indentBase; /** Number of extra characters in indent sequence per level of nesting. */ private int m_indentPerLevel; /** Raw text for indentation sequences. */ private char[] m_indentSequence; /** * Constructor. * * @param uris ordered array of URIs for namespaces used in document (must * be constant; the value in position 0 must always be the empty string "", * and the value in position 1 must always be the XML namespace * "http://www.w3.org/XML/1998/namespace") */ public GenericXMLWriter(String[] uris) { super(uris); } /** * Copy constructor. This takes the writer from a supplied instance, while * setting a new array of namespace URIs. It's intended for use when * invoking one binding from within another binding. * * @param base instance to be used as base for writer * @param uris ordered array of URIs for namespaces used in document * (see {@link #GenericXMLWriter(String[])}) */ public GenericXMLWriter(GenericXMLWriter base, String[] uris) { super(base, uris); setOutput(base.m_writer, base.m_escaper); m_indent = base.m_indent; m_indentBase = base.m_indentBase; m_indentPerLevel = base.m_indentPerLevel; m_indentSequence = base.m_indentSequence; } /** * Set output writer and escaper. If an output writer is currently open when * this is called the existing writer is flushed and closed, with any * errors ignored. * * @param outw writer for document data output * @param escaper character escaper for chosen encoding */ public void setOutput(Writer outw, ICharacterEscaper escaper) { try { close(); } catch (IOException e) { /* deliberately empty */ } m_writer = outw; m_escaper = escaper; reset(); } /** * Set nesting indentation. This is advisory only, and implementations of * this interface are free to ignore it. The intent is to indicate that the * generated output should use indenting to illustrate element nesting. * * @param count number of character to indent per level, or disable * indentation if negative (zero means new line only) * @param newline sequence of characters used for a line ending * (null means use the single character '\n') * @param indent whitespace character used for indentation */ public void setIndentSpaces(int count, String newline, char indent) { if (count >= 0) { if (newline == null) { newline = "\n"; } m_indent = true; m_indentBase = newline.length(); m_indentPerLevel = count; int length = newline.length() + count * 10; m_indentSequence = new char[length]; for (int i = 0; i < length; i++) { if (i < newline.length()) { m_indentSequence[i] = newline.charAt(i); } else { m_indentSequence[i] = indent; } } } else { m_indent = false; } } /** * Write markup text to output. Markup text can be written directly to the * output without the need for any escaping. * * @param text markup text to be written * @throws IOException if error writing to document */ protected void writeMarkup(String text) throws IOException { m_writer.write(text); } /** * Write markup character to output. Markup text can be written directly to * the output without the need for any escaping. * * @param chr markup character to be written * @throws IOException if error writing to document */ protected void writeMarkup(char chr) throws IOException { m_writer.write(chr); } /** * Report that namespace has been defined. * * @param index namespace URI index number * @param prefix prefix used for namespace */ protected void defineNamespace(int index, String prefix) {} /** * Report that namespace has been undefined. * * @param index namespace URI index number */ protected void undefineNamespace(int index) {} /** * Write namespace prefix to output. This internal method is used to throw * an exception when an undeclared prefix is used. * * @param index namespace URI index number * @throws IOException if error writing to document */ protected void writePrefix(int index) throws IOException { try { String text = getNamespacePrefix(index); if (text.length() > 0) { m_writer.write(text); m_writer.write(':'); } } catch (NullPointerException ex) { throw new IOException("Namespace URI has not been declared."); } } /** * Write attribute text to output. This needs to write the text with any * appropriate escaping. * * @param text attribute value text to be written * @throws IOException if error writing to document */ protected void writeAttributeText(String text) throws IOException { m_escaper.writeAttribute(text, m_writer); } /** * Write ordinary character data text content to document. This needs to * write the text with any appropriate escaping. * * @param text content value text * @throws IOException on error writing to document */ public void writeTextContent(String text) throws IOException { flagTextContent(); m_escaper.writeContent(text, m_writer); } /** * Write CDATA text to document. This needs to write the text with any * appropriate escaping. * * @param text content value text * @throws IOException on error writing to document */ public void writeCData(String text) throws IOException { flagTextContent(); m_escaper.writeCData(text, m_writer); } /** * Request output indent. Output the line end sequence followed by the * appropriate number of indent characters. * * @param bias indent depth difference (positive or negative) from current * element nesting depth * @throws IOException on error writing to document */ public void indent(int bias) throws IOException { if (m_indent) { int length = m_indentBase + (getNestingDepth() + bias) * m_indentPerLevel; if (length > m_indentSequence.length) { int use = Math.max(length, m_indentSequence.length*2 - m_indentBase); char[] grow = new char[use]; System.arraycopy(m_indentSequence, 0, grow, 0, m_indentSequence.length); for (int i = m_indentSequence.length; i < use; i++) { grow[i] = grow[m_indentBase]; } m_indentSequence = grow; } m_writer.write(m_indentSequence, 0, length); } } /** * Request output indent. Output the line end sequence followed by the * appropriate number of indent characters for the current nesting level. * * @throws IOException on error writing to document */ public void indent() throws IOException { indent(0); } /** * Flush document output. Forces out all output generated to this point. * * @throws IOException on error writing to document */ public void flush() throws IOException { // internal flush only, do not pass through to writer flagContent(); } /** * Close document output. Completes writing of document output, including * closing the output medium. * * @throws IOException on error writing to document */ public void close() throws IOException { flush(); if (m_writer != null) { m_writer.close(); m_writer = null; } } /** * Create a child writer instance to be used for a separate binding. The * child writer inherits the stream and encoding from this writer, while * using the supplied namespace URIs. * * @param uris ordered array of URIs for namespaces used in document * (see {@link #GenericXMLWriter(String[])}) * @return child writer */ public IXMLWriter createChildWriter(String[] uris) { return new GenericXMLWriter(this, uris); } }libjibx-java-1.1.6a/build/src/org/jibx/runtime/impl/IChunkedOutput.java0000644000175000017500000000554510705471646025740 0ustar moellermoeller/* Copyright (c) 2007, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime.impl; import java.io.IOException; /** * Interface used to enhance an output stream with a separate method for writing * the last chunk of data in a message. This is useful when working with a * chunking transport layer, so that the output stream knows which particular * write operation is the last one in the sequence. * * @author Dennis M. Sosnoski */ public interface IChunkedOutput { /** * Normal write from byte array. This method is included only to make it * clear that the {@link #writeFinal(byte[], int, int)} is an alternative to * the normal write. * * @param b byte array * @param off starting offset * @param len number of bytes to write * @throws IOException on write error */ void write(byte[] b, int off, int len) throws IOException; /** * Write last data chunk from byte array. This method finishes output. It is * an error if any further write operations (using either the {@link * #write(byte[], int, int)} method defined in this interface, or any of the * other java.io.OutputStream methods) are executed after the * call to this method. * * @param b byte array * @param off starting offset * @param len number of bytes to write * @throws IOException on write error */ void writeFinal(byte[] b, int off, int len) throws IOException; } libjibx-java-1.1.6a/build/src/org/jibx/runtime/impl/ISO88591Escaper.java0000644000175000017500000001736110071714376025374 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime.impl; import java.io.IOException; import java.io.Writer; import org.jibx.runtime.ICharacterEscaper; /** * Handler for writing ASCII output stream. This code is specifically for XML * 1.0 and would require changes for XML 1.1 (to handle the added legal * characters, rather than throwing an exception). * * @author Dennis M. Sosnoski * @version 1.0 */ public class ISO88591Escaper implements ICharacterEscaper { /** Singleton instance of class. */ private static final ISO88591Escaper s_instance = new ISO88591Escaper(); /** * Private constructor to prevent external creation. */ private ISO88591Escaper() {} /** * Write attribute value with character entity substitutions. This assumes * that attributes use the regular quote ('"') delimitor. * * @param text attribute value text * @param writer sink for output text * @throws IOException on error writing to document */ public void writeAttribute(String text, Writer writer) throws IOException { int mark = 0; for (int i = 0; i < text.length(); i++) { char chr = text.charAt(i); if (chr == '"') { writer.write(text, mark, i-mark); mark = i+1; writer.write("""); } else if (chr == '&') { writer.write(text, mark, i-mark); mark = i+1; writer.write("&"); } else if (chr == '<') { writer.write(text, mark, i-mark); mark = i+1; writer.write("<"); } else if (chr == '>' && i > 2 && text.charAt(i-1) == ']' && text.charAt(i-2) == ']') { writer.write(text, mark, i-mark-2); mark = i+1; writer.write("]]>"); } else if (chr < 0x20) { if (chr != 0x9 && chr != 0xA && chr != 0xD) { throw new IOException("Illegal character code 0x" + Integer.toHexString(chr) + " in attribute value text"); } } else if (chr >= 0x80) { if (chr < 0xA0 || chr > 0xFF) { writer.write(text, mark, i-mark); mark = i+1; if (chr > 0xD7FF && (chr < 0xE000 || chr == 0xFFFE || chr == 0xFFF || chr > 0x10FFFF)) { throw new IOException("Illegal character code 0x" + Integer.toHexString(chr) + " in attribute value text"); } writer.write("&#x"); writer.write(Integer.toHexString(chr)); writer.write(';'); } } } writer.write(text, mark, text.length()-mark); } /** * Write content value with character entity substitutions. * * @param text content value text * @param writer sink for output text * @throws IOException on error writing to document */ public void writeContent(String text, Writer writer) throws IOException { int mark = 0; for (int i = 0; i < text.length(); i++) { char chr = text.charAt(i); if (chr == '&') { writer.write(text, mark, i-mark); mark = i+1; writer.write("&"); } else if (chr == '<') { writer.write(text, mark, i-mark); mark = i+1; writer.write("<"); } else if (chr == '>' && i > 2 && text.charAt(i-1) == ']' && text.charAt(i-2) == ']') { writer.write(text, mark, i-mark-2); mark = i+1; writer.write("]]>"); } else if (chr < 0x20) { if (chr != 0x9 && chr != 0xA && chr != 0xD) { throw new IOException("Illegal character code 0x" + Integer.toHexString(chr) + " in content text"); } } else if (chr >= 0x80) { if (chr < 0xA0 || chr > 0xFF) { writer.write(text, mark, i-mark); mark = i+1; if (chr > 0xD7FF && (chr < 0xE000 || chr == 0xFFFE || chr == 0xFFF || chr > 0x10FFFF)) { throw new IOException("Illegal character code 0x" + Integer.toHexString(chr) + " in content text"); } writer.write("&#x"); writer.write(Integer.toHexString(chr)); writer.write(';'); } } } writer.write(text, mark, text.length()-mark); } /** * Write CDATA to document. This writes the beginning and ending sequences * for a CDATA section as well as the actual text, verifying that only * characters allowed by the encoding are included in the text. * * @param text content value text * @param writer sink for output text * @throws IOException on error writing to document */ public void writeCData(String text, Writer writer) throws IOException { writer.write("' && i > 2 && text.charAt(i-1) == ']' && text.charAt(i-2) == ']') { throw new IOException("Sequence \"]]>\" is not allowed " + "within CDATA section text"); } else if (chr < 0x20) { if (chr != 0x9 && chr != 0xA && chr != 0xD) { throw new IOException("Illegal character code 0x" + Integer.toHexString(chr) + " in CDATA section"); } } else if (chr >= 0x80 && (chr < 0xA0 || chr > 0xFF)) { throw new IOException("Character code 0x" + Integer.toHexString(chr) + " not supported by encoding in CDATA section"); } } writer.write(text); writer.write("]]>"); } /** * Get instance of escaper. * * @return escaper instance */ public static ICharacterEscaper getInstance() { return s_instance; } }libjibx-java-1.1.6a/build/src/org/jibx/runtime/impl/ISO88591StreamWriter.java0000644000175000017500000003307311003053060026416 0ustar moellermoeller/* Copyright (c) 2004-2008, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime.impl; import java.io.IOException; import org.jibx.runtime.IXMLWriter; /** * Handler for marshalling text document to a UTF-8 output stream. * * @author Dennis M. Sosnoski */ public class ISO88591StreamWriter extends StreamWriterBase { /** * Constructor with supplied buffer. * * @param uris ordered array of URIs for namespaces used in document (must * be constant; the value in position 0 must always be the empty string "", * and the value in position 1 must always be the XML namespace * "http://www.w3.org/XML/1998/namespace") * @param buffer output data buffer */ public ISO88591StreamWriter(String[] uris, byte[] buffer) { super("ISO-8859-1", uris, buffer); try { defineNamespace(0, ""); defineNamespace(1, "xml"); } catch (IOException e) { throw new RuntimeException(e.getMessage()); } } /** * Constructor using default buffer size. * * @param uris ordered array of URIs for namespaces used in document (must * be constant; the value in position 0 must always be the empty string "", * and the value in position 1 must always be the XML namespace * "http://www.w3.org/XML/1998/namespace") */ public ISO88591StreamWriter(String[] uris) { this(uris, new byte[DEFAULT_BUFFER_SIZE]); } /** * Copy constructor. This uses the stream and actual buffer from a supplied * instance, while setting a new array of namespace URIs. It's intended for * use when invoking one binding from within another binding. * * @param base instance to be used as base for writer * @param uris ordered array of URIs for namespaces used in document * (see {@link #ISO88591StreamWriter(String[])}) */ public ISO88591StreamWriter(ISO88591StreamWriter base, String[] uris) { super(base, uris); m_prefixBytes = new byte[uris.length][]; try { defineNamespace(0, ""); defineNamespace(1, "xml"); } catch (IOException e) { throw new RuntimeException(e.getMessage()); } } /** * Write markup text to output. Markup text can be written directly to the * output without the need for any escaping, but still needs to be properly * encoded. * * @param text markup text to be written * @throws IOException if error writing to document */ protected void writeMarkup(String text) throws IOException { int length = text.length(); makeSpace(length); int fill = m_fillOffset; for (int i = 0; i < length; i++) { char chr = text.charAt(i); if (chr > 0xFF) { throw new IOException("Unable to write character code 0x" + Integer.toHexString(chr) + " in encoding ISO-8859-1"); } else { m_buffer[fill++] = (byte)chr; } } m_fillOffset = fill; } /** * Write markup character to output. Markup text can be written directly to * the output without the need for any escaping, but still needs to be * properly encoded. * * @param chr markup character to be written * @throws IOException if error writing to document */ protected void writeMarkup(char chr) throws IOException { makeSpace(1); if (chr > 0xFF) { throw new IOException("Unable to write character code 0x" + Integer.toHexString(chr) + " in encoding ISO-8859-1"); } else { m_buffer[m_fillOffset++] = (byte)chr; } } /** * Report that namespace has been defined. * * @param index namespace URI index number * @param prefix prefix used for namespace * @throws IOException if error writing to document */ protected void defineNamespace(int index, String prefix) throws IOException { byte[] buff; if (prefix.length() > 0) { buff = new byte[prefix.length()+1]; for (int i = 0; i < buff.length-1; i++) { char chr = prefix.charAt(i); if (chr > 0xFF) { throw new IOException("Unable to write character code 0x" + Integer.toHexString(chr) + " in encoding ISO-8859-1"); } else { buff[i] = (byte)chr; } } buff[buff.length-1] = ':'; } else { buff = new byte[0]; } if (index < m_prefixBytes.length) { m_prefixBytes[index] = buff; } else if (m_extensionBytes != null) { index -= m_prefixBytes.length; for (int i = 0; i < m_extensionBytes.length; i++) { int length = m_extensionBytes[i].length; if (index < length) { m_extensionBytes[i][index] = buff; } else { index -= length; } } } else { throw new IllegalArgumentException("Index out of range"); } } /** * Write attribute text to output. This needs to write the text with any * appropriate escaping. * * @param text attribute value text to be written * @throws IOException if error writing to document */ protected void writeAttributeText(String text) throws IOException { int length = text.length(); makeSpace(length * 6); int fill = m_fillOffset; for (int i = 0; i < length; i++) { char chr = text.charAt(i); if (chr == '"') { fill = writeEntity(QUOT_ENTITY, fill); } else if (chr == '&') { fill = writeEntity(AMP_ENTITY, fill); } else if (chr == '<') { fill = writeEntity(LT_ENTITY, fill); } else if (chr == '>' && i > 2 && text.charAt(i-1) == ']' && text.charAt(i-2) == ']') { m_buffer[fill++] = (byte)']'; m_buffer[fill++] = (byte)']'; fill = writeEntity(GT_ENTITY, fill); } else if (chr < 0x20) { if (chr != 0x9 && chr != 0xA && chr != 0xD) { throw new IOException("Illegal character code 0x" + Integer.toHexString(chr) + " in attribute value text"); } else { m_buffer[fill++] = (byte)chr; } } else { if (chr > 0xFF) { if (chr > 0xD7FF && (chr < 0xE000 || chr == 0xFFFE || chr == 0xFFFF || chr > 0x10FFFF)) { throw new IOException("Illegal character code 0x" + Integer.toHexString(chr) + " in attribute value text"); } else { m_fillOffset = fill; makeSpace(length - i + 8); fill = m_fillOffset; m_buffer[fill++] = (byte)'&'; m_buffer[fill++] = (byte)'#'; m_buffer[fill++] = (byte)'x'; for (int j = 12; j >= 0; j -= 4) { int nib = (chr >> j) & 0xF; if (nib < 10) { m_buffer[fill++] = (byte)('0' + nib); } else { m_buffer[fill++] = (byte)('A' + nib); } } m_buffer[fill++] = (byte)';'; } } else { m_buffer[fill++] = (byte)chr; } } } m_fillOffset = fill; } /** * Write ordinary character data text content to document. * * @param text content value text * @throws IOException on error writing to document */ public void writeTextContent(String text) throws IOException { flagTextContent(); int length = text.length(); makeSpace(length * 5); int fill = m_fillOffset; for (int i = 0; i < length; i++) { char chr = text.charAt(i); if (chr == '&') { fill = writeEntity(AMP_ENTITY, fill); } else if (chr == '<') { fill = writeEntity(LT_ENTITY, fill); } else if (chr == '>' && i > 2 && text.charAt(i-1) == ']' && text.charAt(i-2) == ']') { fill = writeEntity(GT_ENTITY, fill); } else if (chr < 0x20) { if (chr != 0x9 && chr != 0xA && chr != 0xD) { throw new IOException("Illegal character code 0x" + Integer.toHexString(chr) + " in content text"); } else { m_buffer[fill++] = (byte)chr; } } else { if (chr > 0xFF) { if (chr > 0xD7FF && (chr < 0xE000 || chr == 0xFFFE || chr == 0xFFFF || chr > 0x10FFFF)) { throw new IOException("Illegal character code 0x" + Integer.toHexString(chr) + " in character data text"); } else { m_fillOffset = fill; makeSpace(length - i + 8); fill = m_fillOffset; m_buffer[fill++] = (byte)'&'; m_buffer[fill++] = (byte)'#'; m_buffer[fill++] = (byte)'x'; for (int j = 12; j >= 0; j -= 4) { int nib = (chr >> j) & 0xF; if (nib < 10) { m_buffer[fill++] = (byte)('0' + nib); } else { m_buffer[fill++] = (byte)('A' + nib); } } m_buffer[fill++] = (byte)';'; } } else { m_buffer[fill++] = (byte)chr; } } } m_fillOffset = fill; } /** * Write CDATA text to document. * * @param text content value text * @throws IOException on error writing to document */ public void writeCData(String text) throws IOException { flagTextContent(); int length = text.length(); makeSpace(length + 12); int fill = m_fillOffset; fill = writeEntity(LT_CDATASTART, fill); for (int i = 0; i < length; i++) { char chr = text.charAt(i); if (chr == '>' && i > 2 && text.charAt(i-1) == ']' && text.charAt(i-2) == ']') { throw new IOException("Sequence \"]]>\" is not allowed " + "within CDATA section text"); } else if (chr < 0x20) { if (chr != 0x9 && chr != 0xA && chr != 0xD) { throw new IOException("Illegal character code 0x" + Integer.toHexString(chr) + " in content text"); } else { m_buffer[fill++] = (byte)chr; } } else { if (chr > 0xFF) { throw new IOException("Character code 0x" + Integer.toHexString(chr) + " not allowed by encoding in CDATA section text"); } else { m_buffer[fill++] = (byte)chr; } } } m_fillOffset = writeEntity(LT_CDATAEND, fill); } /** * Create a child writer instance to be used for a separate binding. The * child writer inherits the stream and encoding from this writer, while * using the supplied namespace URIs. * * @param uris ordered array of URIs for namespaces used in document * (see {@link #ISO88591StreamWriter(String[])}) * @return child writer * @throws IOException */ public IXMLWriter createChildWriter(String[] uris) throws IOException { flagContent(); return new ISO88591StreamWriter(this, uris); } }libjibx-java-1.1.6a/build/src/org/jibx/runtime/impl/ITrackSourceImpl.java0000644000175000017500000000441610071714376026175 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime.impl; import org.jibx.runtime.ITrackSource; /** * Unmarshalling source tracking implementation interface. This interface is * added to bound classes when requested by the binding definition. It defines * the method used by JiBX to add unmarshal source tracking information to an * instance of a bound class. * * @author Dennis M. Sosnoski * @version 1.0 */ public interface ITrackSourceImpl extends ITrackSource { /** * Set source document information. * * @param name of source document, or null if none * @param line source document line number, or -1 if unknown * @param column source document column position, or -1 if * unknown */ public void jibx_setSource(String name, int line, int column); } libjibx-java-1.1.6a/build/src/org/jibx/runtime/impl/IXMLReaderFactory.java0000644000175000017500000001050510434260716026232 0ustar moellermoeller/* Copyright (c) 2005, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime.impl; import java.io.InputStream; import java.io.Reader; import org.jibx.runtime.IXMLReader; import org.jibx.runtime.JiBXException; /** * Interface for factories used to create XML reader instances. Instances of * this interface must be assumed to be single threaded. * * @author Dennis M. Sosnoski * @version 1.0 */ public interface IXMLReaderFactory { /** * Get new XML reader instance for document from input stream. * * @param is document input stream * @param name document name (null if unknown) * @param enc document character encoding (null if unknown) * @param nsf namespaces enabled flag * @return new reader instance for document * @throws JiBXException on parser configuration error */ public IXMLReader createReader(InputStream is, String name, String enc, boolean nsf) throws JiBXException; /** * Get new XML reader instance for document from reader. * * @param rdr document reader * @param name document name (null if unknown) * @param nsf namespaces enabled flag * @return new reader instance for document * @throws JiBXException on parser configuration error */ public IXMLReader createReader(Reader rdr, String name, boolean nsf) throws JiBXException; /** * Recycle XML reader instance for new document from input stream. If the * supplied reader can be reused it will be configured for the new document * and returned; otherwise, a new reader will be created for the document. * The namespace enabled state of the returned reader is always the same as * that of the supplied reader. * * @param old reader instance to be recycled * @param is document input stream * @param name document name (null if unknown) * @param enc document character encoding (null if unknown) * @return new reader instance for document * @throws JiBXException on parser configuration error */ public IXMLReader recycleReader(IXMLReader old, InputStream is, String name, String enc) throws JiBXException; /** * Recycle XML reader instance for document from reader. If the supplied * reader can be reused it will be configured for the new document and * returned; otherwise, a new reader will be created for the document. The * namespace enabled state of the returned reader is always the same as that * of the supplied reader. * * @param old reader instance to be recycled * @param rdr document reader * @param name document name (null if unknown) * @return new reader instance for document * @throws JiBXException on parser configuration error */ public IXMLReader recycleReader(IXMLReader old, Reader rdr, String name) throws JiBXException; }libjibx-java-1.1.6a/build/src/org/jibx/runtime/impl/InputStreamWrapper.java0000644000175000017500000005661210732007636026634 0ustar moellermoeller/* Copyright (c) 2004-2007, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime.impl; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; /** * Wrapper for input stream that supports multiple character encodings. This is * needed because the XPP3 pull parser does not support detecting the character * encoding for a document based on the content of the document. If used with a * common encoding this performs the conversion to characters using an inner * reader class; otherwise, this creates the appropriate reader type * * @author Dennis M. Sosnoski */ public class InputStreamWrapper { /** Default input buffer size. */ public static final int DEFAULT_BUFFER_SIZE = 4096; /** Name of encoding to be used for stream. */ private String m_encodingName; /** Stream for byte input. */ private InputStream m_stream; /** Flag for end of stream reached. */ private boolean m_isEnd; /** Buffer for input bytes. */ private byte[] m_buffer; /** Offset past end of bytes in buffer. */ private int m_endOffset; /** Current offset for generating character from buffer. */ private int m_emptyOffset; /** Scan position offset used for lookahead in buffer. */ private int m_scanOffset; /** * Constructor. */ public InputStreamWrapper(int size) { m_buffer = new byte[size]; } /** * Constructor using default buffer size. */ public InputStreamWrapper() { this(DEFAULT_BUFFER_SIZE); } /** * Set input stream with encoding to be defined later. If an input stream is * currently open when this is called the existing stream is closed, with * any errors ignored. * * @param ins stream for document data input */ public void setInput(InputStream ins) { try { close(); } catch (IOException e) { /* deliberately empty */ } reset(); m_stream = ins; } /** * Set input stream with specified encoding. If an input stream is currently * open when this is called the existing stream is closed, with any errors * ignored. * * @param ins stream for document data input * @param enc character encoding used for input from stream * (null if to be determined from XML input) * @throws IOException */ public void setInput(InputStream ins, String enc) throws IOException { setInput(ins); setEncoding(enc); } /** * Set encoding for stream. This call is only valid if the encoding has not * been set previously, and if the encoding is a recognized type. * * @param enc character encoding used for input from stream * (null if to be determined from XML input) * @throws IOException if unknown encoding, or encoding already set */ public void setEncoding(String enc) throws IOException { if (m_encodingName == null) { m_encodingName = enc; } else { throw new IOException("Encoding has already been set for stream"); } } /** * Reads data into the buffer. Any retained data is first copied down to the * start of the buffer array. Next, data is read from the wrapped stream * into the available space in the buffer. The actual number of characters * read by a call to this method is normally between one and the space * available in the buffer array. * * @return true if data has been read into buffer, * false if not * @throws IOException on error reading from wrapped stream */ private boolean fillBuffer() throws IOException { if (m_isEnd) { return false; } else { // move remaining data in buffer down to start int rem = m_endOffset - m_emptyOffset; if (rem > 0) { System.arraycopy(m_buffer, m_emptyOffset, m_buffer, 0, rem); } m_emptyOffset = 0; // read to maximum capacity of buffer int max = m_buffer.length - rem; int actual = m_stream.read(m_buffer, rem, max); if (actual >= 0) { m_endOffset = rem + actual; return true; } else { m_endOffset = rem; m_isEnd = true; return false; } } } /** * Reads data into the buffer to at least a minimum number of bytes. Any * retained data is first copied down to the start of the buffer array. * Next, data is read from the wrapped stream into the available space in * the buffer until the end of the input stream is reached or at least the * requested number of bytes are present in the buffer. * * @param min number of bytes required * @return true if buffer contains at least the required byte * count on return, false if not * @throws IOException on error reading from wrapped stream */ private boolean require(int min) throws IOException { while (m_endOffset - m_emptyOffset < min) { if (!fillBuffer()) { return false; } } return true; } /** * Check if a character is XML whitespace. * * @param chr * @return true if whitespace, false if not */ private boolean isWhite(int chr) { return chr == ' ' || chr == 0x09 || chr == 0x0A || chr == 0x0D; } /** * Reads a space or equals ('=') delimited token from the scan position in * the buffer. This treats bytes in the buffer as equivalent to characters. * Besides ending a token on a delimitor, it also ends a token after adding * a greater-than ('>') character. * * @return token read from buffer * @throws IOException on error reading from wrapped stream */ private String scanToken() throws IOException { boolean skipping = true; StringBuffer buff = new StringBuffer(); while (require(m_scanOffset+1)) { char chr = (char)m_buffer[m_scanOffset++]; if (skipping) { if (!isWhite(chr)) { skipping = false; buff.append(chr); if (chr == '=') { return buff.toString(); } } } else if (isWhite(chr) || chr == '=') { m_scanOffset--; return buff.toString(); } else { buff.append(chr); if (chr == '>') { return buff.toString(); } } } return null; } /** * Reads a quote delimited token from the scan position in the buffer. This * treats bytes in the buffer as equivalent to characters, and skips past * any leading whitespace. * * @return token read from buffer * @throws IOException on error reading from wrapped stream */ private String scanQuoted() throws IOException { boolean skipping = true; int quot = 0; StringBuffer buff = new StringBuffer(); while (require(m_scanOffset+1)) { char chr = (char)m_buffer[m_scanOffset++]; if (skipping) { if (!isWhite(chr)) { if (chr == '"' || chr == '\'') { skipping = false; quot = chr; } else { break; } } } else if (chr == quot) { return buff.toString(); } else { buff.append(chr); } } return null; } /** * Get reader for wrapped input stream. This creates and returns a reader * using the appropriate encoding, if necessary reading and examining the * first part of the stream (including the XML declaration, if present) to * determine the encoding. * * @return reader * @throws IOException if error reading from document or creating a reader * for the encoding found */ public Reader getReader() throws IOException { // check if we need to determine an encoding if (m_encodingName == null) { // try to get enough input to decide if anything other than default m_encodingName = "UTF-8"; if (require(4)) { // get first four bytes for initial determination int bom = (((m_buffer[0] << 8) + (m_buffer[1] & 0xFF) << 8) + (m_buffer[2] & 0xFF) << 8) + (m_buffer[3] & 0xFF); if (bom == 0x3C3F786D) { // read encoding declaration with single byte characters m_scanOffset = 2; String token = scanToken(); if ("xml".equals(token)) { while ((token = scanToken()) != null && !"?>".equals(token)) { if ("encoding".equals(token)) { if ("=".equals(scanToken())) { token = scanQuoted(); if (token != null) { m_encodingName = token; break; } } } else if ("=".equals(token)) { scanQuoted(); } } } } else if (bom == 0x0000FEFF || bom == 0xFFFE0000 || bom == 0x0000FFFE || bom == 0xFEFF0000) { // just use generic UCS-4 and let the libaries figure it out m_encodingName = "UCS-4"; } else if ((bom & 0xFFFFFF00) == 0xEFBBBF00) { // UTF-8 as specified by byte order mark m_encodingName = "UTF-8"; } else { int upper = bom & 0xFFFF0000; if (upper == 0xFEFF0000 || bom == 0x003C003F) { // assume UTF-16BE for 16-bit BE m_encodingName = "UTF-16BE"; } else if (upper == 0xFFFE0000 || bom == 0x3C003F00) { // assume UTF-16LE for 16-bit LE m_encodingName = "UTF-16LE"; } else if (bom == 0x4C6FA794){ // just because we can, even though nobody should m_encodingName = "EBCDIC"; } } } } if (m_encodingName.equalsIgnoreCase("UTF-8")) { return new WrappedStreamUTF8Reader(); } else if (m_encodingName.equalsIgnoreCase("ISO-8859-1") || m_encodingName.equalsIgnoreCase("ASCII")) { return new WrappedStreamISO88591Reader(); } else { return new InputStreamReader(new WrappedStream(), m_encodingName); } } /** * Get encoding for input document. This call may not return an accurate * result until after {@link #getReader} is called. * * @return character encoding for input document */ public String getEncoding() { return m_encodingName; } /** * Close document input. Completes reading of document input, including * closing the input medium. * * @throws IOException on error closing document */ public void close() throws IOException { if (m_stream != null) { m_stream.close(); m_stream = null; } reset(); } /** * Reset to initial state for reuse. */ public void reset() { m_isEnd = false; m_endOffset = 0; m_emptyOffset = 0; m_encodingName = null; m_stream = null; } /** * Stream that just uses the enclosing class to buffer input from the * wrapped stream. */ private class WrappedStream extends InputStream { /* (non-Javadoc) * @see java.io.InputStream#available() */ public int available() throws IOException { return m_endOffset - m_emptyOffset + m_stream.available(); } /* (non-Javadoc) * @see java.io.InputStream#close() */ public void close() throws IOException { InputStreamWrapper.this.close(); } /* (non-Javadoc) * @see java.io.InputStream#read(byte[], int, int) */ public int read(byte[] b, int off, int len) throws IOException { int avail; int actual = 0; while (len > (avail = m_endOffset - m_emptyOffset)) { System.arraycopy(m_buffer, m_emptyOffset, b, off, avail); off += avail; len -= avail; actual += avail; m_emptyOffset = m_endOffset = 0; if (!fillBuffer()) { return actual == 0 ? -1 : actual; } } System.arraycopy(m_buffer, m_emptyOffset, b, off, len); m_emptyOffset += len; return actual + len; } /* (non-Javadoc) * @see java.io.InputStream#read(byte[]) */ public int read(byte[] b) throws IOException { return read(b, 0, b.length); } /* (non-Javadoc) * @see java.io.InputStream#skip(long) */ public long skip(long n) throws IOException { int avail = m_endOffset - m_emptyOffset; if (n >= (long)avail) { return avail + m_stream.skip(n - avail); } else { m_emptyOffset += (int)n; return n; } } /* (non-Javadoc) * @see java.io.InputStream#read() */ public int read() throws IOException { if (m_emptyOffset >= m_endOffset && !fillBuffer()) { return -1; } else { return m_buffer[m_emptyOffset++]; } } } /** * Reader for input stream using UTF-8 encoding. This uses the enclosing * class to buffer input from the stream, interpreting it as characters on * demand. */ private class WrappedStreamUTF8Reader extends Reader { /* (non-Javadoc) * @see java.io.Reader#close() */ public void close() throws IOException { InputStreamWrapper.this.close(); } /* (non-Javadoc) * @see java.io.Reader#read(char[], int, int) */ public int read(char[] b, int off, int len) throws IOException { // load up local variables for conversion loop int end = off + len; int empty = m_emptyOffset; byte[] buff = m_buffer; while (off < end) { // fill buffer if less than maximum byte count in character if (empty + 3 > m_endOffset) { m_emptyOffset = empty; fillBuffer(); empty = m_emptyOffset; if (empty == m_endOffset) { int actual = len + off - end; return actual > 0 ? actual : -1; } } // check for single-byte vs multi-byte character next int byt = buff[empty++]; if (byt >= 0) { // single-byte character, just store to output array b[off++] = (char)byt; if (byt == 0) { System.err.println("Wrote null"); } } else if ((byt & 0xE0) == 0xC0) { // double-byte character, check bytes available and store if (empty < m_endOffset) { b[off++] = (char)(((byt & 0x1F) << 6) + (buff[empty++] & 0x3F)); if (b[off-1] == 0) { System.err.println("Wrote null"); } } else { throw new IOException("UTF-8 conversion error"); } } else { // three-byte character, check bytes available and store if (empty + 1 < m_endOffset) { int byt2 = buff[empty++] & 0x3F; b[off++] = (char)((((byt & 0x0F) << 6) + byt2 << 6) + (buff[empty++] & 0x3F)); if (b[off-1] == 0) { System.err.println("Wrote null"); } } else { throw new IOException("UTF-8 conversion error"); } } } m_emptyOffset = empty; return len; } /* (non-Javadoc) * @see java.io.Reader#read(char[]) */ public int read(char[] b) throws IOException { return read(b, 0, b.length); } /* (non-Javadoc) * @see java.io.Reader#read() */ public int read() throws IOException { // fill buffer if less than maximum byte count in character if (m_emptyOffset + 3 > m_endOffset) { fillBuffer(); if (m_emptyOffset == m_endOffset) { return -1; } } // check for single-byte vs multi-byte character next int byt = m_buffer[m_emptyOffset++]; if (byt >= 0) { // single-byte character, just store to output array return byt & 0xFF; } else if ((byt & 0xE0) == 0xC0) { // double-byte character, check bytes available and store if (m_emptyOffset < m_endOffset) { return ((byt & 0x1F) << 6) + (m_buffer[m_emptyOffset++] & 0x3F); } else { throw new IOException("UTF-8 conversion error"); } } else { // three-byte character, check bytes available and store if (m_emptyOffset + 1 < m_endOffset) { int byt2 = m_buffer[m_emptyOffset++] & 0xFF; return (((byt & 0x0F) << 6) + byt2 << 6) + (m_buffer[m_emptyOffset++] & 0x3F); } else { throw new IOException("UTF-8 conversion error"); } } } /* (non-Javadoc) * @see java.io.Reader#ready() */ public boolean ready() throws IOException { return m_emptyOffset + 2 < m_endOffset; } } /** * Reader for input stream using ISO8859-1 encoding. This uses the enclosing * class to buffer input from the stream, interpreting it as characters on * demand. */ private class WrappedStreamISO88591Reader extends Reader { /* (non-Javadoc) * @see java.io.Reader#close() */ public void close() throws IOException { InputStreamWrapper.this.close(); } /* (non-Javadoc) * @see java.io.Reader#read(char[], int, int) */ public int read(char[] b, int off, int len) throws IOException { // load up local variables for conversion loop int end = off + len; int empty = m_emptyOffset; byte[] buff = m_buffer; while (off < end) { // make sure there's data in buffer int avail = m_endOffset - empty; if (avail == 0) { m_emptyOffset = empty; if (fillBuffer()) { empty = m_emptyOffset; avail = m_endOffset - empty; } else { int actual = len + off - end; return actual > 0 ? actual : -1; } } // find count of bytes to convert to characters int use = end - off; if (use > avail) { use = avail; } // convert bytes directly to characters int limit = empty + use; while (empty < limit) { b[off++] = (char)(buff[empty++] & 0xFF); } } m_emptyOffset = empty; return len; } /* (non-Javadoc) * @see java.io.Reader#read(char[]) */ public int read(char[] b) throws IOException { return read(b, 0, b.length); } /* (non-Javadoc) * @see java.io.Reader#read() */ public int read() throws IOException { if (m_emptyOffset >= m_endOffset && !fillBuffer()) { return -1; } else { return m_buffer[m_emptyOffset++] & 0xFF; } } /* (non-Javadoc) * @see java.io.Reader#ready() */ public boolean ready() throws IOException { return m_emptyOffset < m_endOffset; } } }libjibx-java-1.1.6a/build/src/org/jibx/runtime/impl/MarshallingContext.java0000644000175000017500000013352010736011440026610 0ustar moellermoeller/* Copyright (c) 2002-2007, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime.impl; import java.io.*; import java.util.*; import org.jibx.runtime.*; import org.jibx.runtime.ICharacterEscaper; import org.jibx.runtime.IMarshallable; import org.jibx.runtime.IMarshaller; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.JiBXException; /** * JiBX serializer supplying convenience methods for marshalling. Most of these * methods are designed for use in code generated by the binding generator. * * @author Dennis M. Sosnoski */ public class MarshallingContext implements IMarshallingContext { /** Fixed XML namespace. */ public static final String XML_NAMESPACE = "http://www.w3.org/XML/1998/namespace"; /** Starting size for object stack. */ private static final int INITIAL_STACK_SIZE = 20; /** Binding factory used to create this unmarshaller. */ private IBindingFactory m_factory; /** Names of classes included in mapping definition. */ private String[] m_classes; /** Number of classes with global marshallers. */ private int m_globalCount; /** Marshaller classes for mapping definition (null for mappings out of context). */ private String[] m_marshallerClasses; /** Marshallers for classes in mapping definition (lazy create of actual marshaller instances) */ private IMarshaller[] m_marshallers; /** URIs for namespaces used in binding. */ private String[] m_uris; /** Current marshalling stack depth. */ private int m_stackDepth; /** Stack of objects being marshalled. */ private Object[] m_objectStack; /** Indent character count per level. */ private int m_indentCount; /** Character sequence for end of line. */ private String m_newLine; /** Character used for indenting. */ private char m_indentChar; /** Shared map from IDs to objects. This is not used directly by the marshalling code, but is available for user extensions (lazy create). */ private HashMap m_idMap; /** Output document handler. */ private IXMLWriter m_writer; /** User context object (not used by JiBX, only for user convenience). */ protected Object m_userContext; /** * Constructor. * * @param classes ordered array of class names included in mapping * definition (reference kept, must be constant) * @param mcs names of marshaller classes for indexes with fixed marshallers * (as opposed to mapping slots, which may be overridden; reference kept, * must be constant) * @param uris ordered array of URIs for namespaces used in binding (must * be constant; the value in position 0 must always be the empty string "", * and the value in position 1 must always be the XML namespace * "http://www.w3.org/XML/1998/namespace") * @param ifact binding factory creating this unmarshaller */ public MarshallingContext(String[] classes, String[] mcs, String[] uris, IBindingFactory ifact) { m_classes = classes; m_globalCount = mcs.length; m_marshallers = new IMarshaller[classes.length]; m_marshallerClasses = new String[classes.length]; System.arraycopy(mcs, 0, m_marshallerClasses, 0, mcs.length); m_uris = uris; m_objectStack = new Object[INITIAL_STACK_SIZE]; m_indentCount = -1; m_indentChar = ' '; m_newLine = "\n"; m_factory = ifact; } /** * Create character escaper for encoding. * * @param enc document output encoding, or null for default * @return character escaper for encoding * @throws JiBXException if error creating setting output */ private ICharacterEscaper createEscaper(String enc) throws JiBXException { if (enc.equalsIgnoreCase("UTF-8") || enc.equalsIgnoreCase("UTF-16") || enc.equalsIgnoreCase("UTF-16BE") || enc.equalsIgnoreCase("UTF-16LE")) { return UTF8Escaper.getInstance(); } else if (enc.equalsIgnoreCase("ISO-8859-1")) { return ISO88591Escaper.getInstance(); } else if (enc.equalsIgnoreCase("US-ASCII")) { return USASCIIEscaper.getInstance(); } else { throw new JiBXException ("No character escaper defined for encoding " + enc); } } /** * Set output stream with encoding and escaper. This forces handling of the * output stream to use the Java character encoding support with the * supplied escaper. * * @param outs stream for document data output * @param enc document output encoding, or null uses UTF-8 * default * @param esc escaper for writing characters to stream * @throws JiBXException if error setting output */ public void setOutput(OutputStream outs, String enc, ICharacterEscaper esc) throws JiBXException { try { if (enc == null) { enc = "UTF-8"; } // handle any other encodings using library support if (!(m_writer instanceof GenericXMLWriter)) { m_writer = new GenericXMLWriter(m_uris); m_writer.setIndentSpaces(m_indentCount, m_newLine, m_indentChar); } Writer writer = new BufferedWriter (new OutputStreamWriter(outs, enc)); ((GenericXMLWriter)m_writer).setOutput(writer, esc); reset(); } catch (IOException ex) { throw new JiBXException("Error setting output", ex); } } /** * Set output stream and encoding. * * @param outs stream for document data output * @param enc document output encoding, or null for default * @throws JiBXException if error creating setting output */ public void setOutput(OutputStream outs, String enc) throws JiBXException { if (enc == null) { enc = "UTF-8"; } if ("UTF-8".equalsIgnoreCase(enc)) { // handle UTF-8 output to stream directly if (!(m_writer instanceof UTF8StreamWriter)) { m_writer = new UTF8StreamWriter(m_uris); m_writer.setIndentSpaces(m_indentCount, m_newLine, m_indentChar); } ((UTF8StreamWriter)m_writer).setOutput(outs); reset(); } else if ("ISO-8859-1".equalsIgnoreCase(enc)) { // handle ISO-8859-1 output to stream directly if (!(m_writer instanceof ISO88591StreamWriter)) { m_writer = new ISO88591StreamWriter(m_uris); m_writer.setIndentSpaces(m_indentCount, m_newLine, m_indentChar); } ((ISO88591StreamWriter)m_writer).setOutput(outs); reset(); } else { setOutput(outs, enc, createEscaper(enc)); } } /** * Set output writer and escaper. * * @param outw writer for document data output * @param esc escaper for writing characters */ public void setOutput(Writer outw, ICharacterEscaper esc) { if (!(m_writer instanceof GenericXMLWriter)) { m_writer = new GenericXMLWriter(m_uris); m_writer.setIndentSpaces(m_indentCount, m_newLine, m_indentChar); } ((GenericXMLWriter)m_writer).setOutput(outw, esc); reset(); } /** * Set output writer. * * @param outw writer for document data output */ public void setOutput(Writer outw) { setOutput(outw, UTF8Escaper.getInstance()); } /** * Get the writer being used for output. * * @return XML writer used for output */ public IXMLWriter getXmlWriter() { return m_writer; } /** * Set the writer being used for output. * * @param xwrite XML writer used for output */ public void setXmlWriter(IXMLWriter xwrite) { m_writer = xwrite; } /** * Get current nesting indent spaces. This returns the number of spaces used * to show indenting, if used. * * @return number of spaces indented per level, or negative if indentation * disabled */ public int getIndent() { return m_indentCount; } /** * Set nesting indent spaces. This is advisory only, and implementations of * this interface are free to ignore it. The intent is to indicate that the * generated output should use indenting to illustrate element nesting. * * @param count number of spaces to indent per level, or disable * indentation if negative */ public void setIndent(int count) { if (m_writer != null) { m_writer.setIndentSpaces(count, m_newLine, m_indentChar); } m_indentCount = count; } /** * Set nesting indentation. This is advisory only, and implementations of * this interface are free to ignore it. The intent is to indicate that the * generated output should use indenting to illustrate element nesting. * * @param count number of character to indent per level, or disable * indentation if negative (zero means new line only) * @param newline sequence of characters used for a line ending * (null means use the single character '\n') * @param indent whitespace character used for indentation */ public void setIndent(int count, String newline, char indent) { if (m_writer != null) { m_writer.setIndentSpaces(count, newline, indent); } m_indentCount = count; m_newLine = newline; m_indentChar = indent; } /** * Initializes the context to use the same marshalled text destination and * parameters as another marshalling context. This method is designed for * use when an initial context needs to create and invoke a secondary * context (generally from a different binding) in the course of an * marshalling operation. Note that once the secondary context has been used * it's generally necessary to do a {@link XMLWriterBase#flush()} operation * on the writer used by the that context before resuming output on the * parent. * * @param parent context supplying target for marshalled document text * @throws IOException on error writing output */ public void setFromContext(MarshallingContext parent) throws IOException { reset(); m_indentCount = parent.m_indentCount; m_newLine = parent.m_newLine; m_indentChar = parent.m_indentChar; if (parent.m_writer instanceof IExtensibleWriter) { IExtensibleWriter base = (IExtensibleWriter)parent.m_writer; base.flush(); m_writer = base.createChildWriter(m_uris); } else if (parent.m_writer instanceof StAXWriter) { m_writer = ((StAXWriter)parent.m_writer).createChildWriter(m_uris); } else { m_writer = parent.m_writer; } } /** * Reset to initial state for reuse. The context is serially reusable, * as long as this method is called to clear any retained state information * between uses. It is automatically called when output is set. */ public void reset() { if (m_writer != null) { m_writer.reset(); } for (int i = m_globalCount; i < m_marshallers.length; i++) { m_marshallers[i] = null; } for (int i = 0; i < m_objectStack.length; i++) { m_objectStack[i] = null; } m_stackDepth = 0; } /** * Return the binding factory used to create this unmarshaller. * * @return binding factory */ public IBindingFactory getFactory() { return m_factory; } /** * Get namespace URIs for mapping. This gets the full ordered array of * namespaces known in the binding used for this marshalling, where the * index number of each namespace URI is the namespace index used to lookup * the prefix when marshalling a name in that namespace. The returned array * must not be modified. * * @return array of namespaces */ public String[] getNamespaces() { return m_uris; } /** * Start document. This can only be validly called immediately following * one of the set output methods; otherwise the output document will be * corrupt. * * @param enc document encoding, null if not specified * @param alone standalone document flag, null if not * specified * @throws JiBXException on any error (possibly wrapping other exception) */ public void startDocument(String enc, Boolean alone) throws JiBXException { try { String atext = null; if (alone != null) { atext = alone.booleanValue() ? "yes" : "no"; } m_writer.writeXMLDecl("1.0", enc, atext); } catch (IOException ex) { throw new JiBXException("Error writing marshalled document", ex); } } /** * Start document with output stream and encoding. The effect is the same * as from first setting the output stream and encoding, then making the * call to start document. * * @param enc document encoding, null if not specified * @param alone standalone document flag, null if not * specified * @param outs stream for document data output * @throws JiBXException on any error (possibly wrapping other exception) */ public void startDocument(String enc, Boolean alone, OutputStream outs) throws JiBXException { setOutput(outs, enc); startDocument(enc, alone); } /** * Start document with writer. The effect is the same as from first * setting the writer, then making the call to start document. * * @param enc document encoding, null if not specified * @param alone standalone document flag, null if not * specified * @param outw writer for document data output * @throws JiBXException on any error (possibly wrapping other exception) */ public void startDocument(String enc, Boolean alone, Writer outw) throws JiBXException { setOutput(outw); startDocument(enc, alone); } /** * End document. Finishes all output and closes the document. Note that if * this is called with an imcomplete marshalling the result will not be * well-formed XML. * * @throws JiBXException on any error (possibly wrapping other exception) */ public void endDocument() throws JiBXException { try { m_writer.close(); } catch (IOException ex) { throw new JiBXException("Error writing marshalled document", ex); } } /** * Build name with optional namespace. Just returns the appropriate * name format. * * @param index namespace URI index number * @param name local name part of name * @return formatted name string */ public String buildNameString(int index, String name) { String ns = m_writer.getNamespaceUri(index); if (ns == null || "".equals(ns)) { return "\"" + name + "\""; } else { return "\"{" + ns + "}" + name + "\""; } } /** * Generate start tag for element without attributes. * * @param index namespace URI index number * @param name element name * @return this context (to allow chained calls) * @throws JiBXException on any error (possibly wrapping other exception) */ public MarshallingContext startTag(int index, String name) throws JiBXException { try { m_writer.startTagClosed(index, name); return this; } catch (IOException ex) { throw new JiBXException("Error writing marshalled document", ex); } } /** * Generate start tag for element with attributes. This only opens the start * tag, allowing attributes to be added immediately following this call. * * @param index namespace URI index number * @param name element name * @return this context (to allow chained calls) * @throws JiBXException on any error (possibly wrapping other exception) */ public MarshallingContext startTagAttributes(int index, String name) throws JiBXException { try { m_writer.startTagOpen(index, name); return this; } catch (IOException ex) { throw new JiBXException("Error writing marshalled document", ex); } } /** * Generate text attribute. This can only be used following an open start * tag with attributes. * * @param index namespace URI index number * @param name attribute name * @param value text value for attribute (cannot be null) * @return this context (to allow chained calls) * @throws JiBXException on any error (possibly wrapping other exception) */ public MarshallingContext attribute(int index, String name, String value) throws JiBXException { try { m_writer.addAttribute(index, name, value); return this; } catch (IOException ex) { throw new JiBXException("Error writing marshalled document", ex); } catch (Exception ex) { String text = buildNameString(index, name); if (value == null) { throw new JiBXException("null value for attribute " + text + " from object of type " + getStackTop().getClass().getName()); } else { throw new JiBXException ("Exception while marshalling attribute " + text, ex); } } } /** * Generate integer attribute. This can only be used following an open start * tag. * * @param index namespace URI index number * @param name attribute name * @param value integer value for attribute * @return this context (to allow chained calls) * @throws JiBXException on any error (possibly wrapping other exception) */ public MarshallingContext attribute(int index, String name, int value) throws JiBXException { return attribute(index, name, Integer.toString(value)); } /** * Generate enumeration attribute. The actual text to be written is obtained * by indexing into the supplied array of values. This can only be used * following an open start tag. * * @param index namespace URI index number * @param name attribute name * @param value integer enumeration value (zero-based) * @param table text values in enumeration * @return this context (to allow chained calls) * @throws JiBXException on any error (possibly wrapping other exception) */ public MarshallingContext attribute(int index, String name, int value, String[] table) throws JiBXException { try { return attribute(index, name, table[value]); } catch (ArrayIndexOutOfBoundsException ex) { throw new JiBXException("Enumeration value of " + value + " is outside to allowed range of 0 to " + table.length); } } /** * Close start tag with content to follow. * * @return this context (to allow chained calls) * @throws JiBXException on any error (possibly wrapping other exception) */ public MarshallingContext closeStartContent() throws JiBXException { try { m_writer.closeStartTag(); return this; } catch (IOException ex) { throw new JiBXException("Error writing marshalled document", ex); } } /** * Close start tag with no content (empty tag). * * @return this context (to allow chained calls) * @throws JiBXException on any error (possibly wrapping other exception) */ public MarshallingContext closeStartEmpty() throws JiBXException { try { m_writer.closeEmptyTag(); return this; } catch (IOException ex) { throw new JiBXException("Error writing marshalled document", ex); } } /** * Add text content to current element. * * @param value text element content * @return this context (to allow chained calls) * @throws JiBXException on any error (possibly wrapping other exception) */ public MarshallingContext content(String value) throws JiBXException { try { m_writer.writeTextContent(value); return this; } catch (IOException ex) { throw new JiBXException("Error writing marshalled document", ex); } } /** * Add integer content to current element. * * @param value integer element content * @return this context (to allow chained calls) * @throws JiBXException on any error (possibly wrapping other exception) */ public MarshallingContext content(int value) throws JiBXException { content(Integer.toString(value)); return this; } /** * Add enumeration content to current element. The actual text to be * written is obtained by indexing into the supplied array of values. * * @param value integer enumeration value (zero-based) * @param table text values in enumeration * @return this context (to allow chained calls) * @throws JiBXException on any error (possibly wrapping other exception) */ public MarshallingContext content(int value, String[] table) throws JiBXException { try { content(table[value]); return this; } catch (ArrayIndexOutOfBoundsException ex) { throw new JiBXException("Enumeration value of " + value + " is outside to allowed range of 0 to " + table.length); } } /** * Generate end tag for element. * * @param index namespace URI index number * @param name element name * @return this context (to allow chained calls) * @throws JiBXException on any error (possibly wrapping other exception) */ public MarshallingContext endTag(int index, String name) throws JiBXException { try { m_writer.endTag(index, name); return this; } catch (IOException ex) { throw new JiBXException("Error writing marshalled document", ex); } } /** * Generate complete element with text content. * * @param index namespace URI index number * @param name element name * @param value text element content * @return this context (to allow chained calls) * @throws JiBXException on any error (possibly wrapping other exception) */ public MarshallingContext element(int index, String name, String value) throws JiBXException { try { if (value.length() == 0) { m_writer.startTagOpen(index, name); m_writer.closeEmptyTag(); } else { m_writer.startTagClosed(index, name); m_writer.writeTextContent(value); m_writer.endTag(index, name); } return this; } catch (IOException ex) { throw new JiBXException("Error writing marshalled document", ex); } catch (Exception ex) { String text = buildNameString(index, name); if (value == null) { throw new JiBXException("null value for element " + text + " from object of type " + getStackTop().getClass().getName()); } else { throw new JiBXException ("Exception while marshalling element " + text, ex); } } } /** * Generate complete element with integer content. * * @param index namespace URI index number * @param name element name * @param value integer element content * @return this context (to allow chained calls) * @throws JiBXException on any error (possibly wrapping other exception) */ public MarshallingContext element(int index, String name, int value) throws JiBXException { return element(index, name, Integer.toString(value)); } /** * Generate complete element with enumeration content. The actual text to be * written is obtained by indexing into the supplied array of values. * * @param index namespace URI index number * @param name element name * @param value integer enumeration value (zero-based) * @param table text values in enumeration * @return this context (to allow chained calls) * @throws JiBXException on any error (possibly wrapping other exception) */ public MarshallingContext element(int index, String name, int value, String[] table) throws JiBXException { try { return element(index, name, table[value]); } catch (ArrayIndexOutOfBoundsException ex) { throw new JiBXException("Enumeration value of " + value + " is outside to allowed range of 0 to " + table.length); } } /** * Write CDATA text to document. * * @param text content value text * @return this context (to allow chained calls) * @throws IOException on error writing to document */ public MarshallingContext writeCData(String text) throws IOException { try { m_writer.writeCData(text); return this; } catch (NullPointerException e) { if (text == null) { throw new IOException ("Null value writing CDATA from object of type " + getStackTop().getClass().getName()); } else { throw e; } } } /** * Write content value with character entity substitutions. * * @param text content value text * @return this context (to allow chained calls) * @throws IOException on error writing to document */ public MarshallingContext writeContent(String text) throws IOException { try { m_writer.writeTextContent(text); return this; } catch (NullPointerException e) { if (text == null) { throw new IOException ("Null value writing text content from object " + getStackTop().getClass().getName()); } else { throw e; } } } /** * Marshal all items in a collection. This variation is for generic * collections. * * @param col collection of items to be marshalled * @return this context (to allow chained calls) * @throws JiBXException on any error (possibly wrapping other exception) */ public MarshallingContext marshalCollection(Collection col) throws JiBXException { Iterator iter = col.iterator(); while (iter.hasNext()) { Object obj = iter.next(); if (obj instanceof IMarshallable) { ((IMarshallable)obj).marshal(this); } else { throw new JiBXException ("Unmarshallable object of class " + obj.getClass() + " found in marshalling"); } } return this; } /** * Marshal all items in a collection. This variation is for ArrayList * collections. * * @param col collection of items to be marshalled * @return this context (to allow chained calls) * @throws JiBXException on any error (possibly wrapping other exception) */ public MarshallingContext marshalCollection(ArrayList col) throws JiBXException { for (int i = 0; i < col.size(); i++) { Object obj = col.get(i); if (obj instanceof IMarshallable) { ((IMarshallable)obj).marshal(this); } else { throw new JiBXException ("Unmarshallable object of class " + obj.getClass().getName() + " found in marshalling"); } } return this; } /** * Marshal all items in a collection. This variation is for Vector * collections. * * @param col collection of items to be marshalled * @return this context (to allow chained calls) * @throws JiBXException on any error (possibly wrapping other exception) */ public MarshallingContext marshalCollection(Vector col) throws JiBXException { for (int i = 0; i < col.size(); i++) { Object obj = col.elementAt(i); if (obj instanceof IMarshallable) { ((IMarshallable)obj).marshal(this); } else { throw new JiBXException ("Unmarshallable object of class " + obj.getClass().getName() + " found in marshalling"); } } return this; } /** * Define marshalling for class. Adds the marshalling definition using fixed * indexes for each class, allowing direct lookup of the marshaller when * multiple versions are defined. * * @param index class index for marshalling definition * @param name marshaller class name handling */ public void addMarshalling(int index, String name) { m_marshallerClasses[index] = name; } /** * Undefine marshalling for element. Removes the marshalling * definition for a particular class index. * * @param index class index for marshalling definition */ public void removeMarshalling(int index) { m_marshallers[index] = null; } /** * Generate start tag for element with namespaces. This creates the actual * start tag, along with any necessary namespace declarations. Previously * active namespace declarations are not duplicated. The tag is * left incomplete, allowing other attributes to be added. * * TODO: Handle nested default namespaces declarations, prefixes for outers * * @param index namespace URI index number * @param name element name * @param nums array of namespace indexes defined by this element (must * be constant, reference is kept until end of element) * @param prefs array of namespace prefixes mapped by this element (no * null values, use "" for default namespace declaration) * @return this context (to allow chained calls) * @throws JiBXException on any error (possibly wrapping other exception) */ public MarshallingContext startTagNamespaces(int index, String name, int[] nums, String[] prefs) throws JiBXException { try { m_writer.startTagNamespaces(index, name, nums, prefs); return this; } catch (IOException ex) { throw new JiBXException("Error writing marshalled document", ex); } } /** * Find the marshaller for a particular class index * in the current context. * TODO: Eliminate the string passing, since it's not a common enough * problem to be worth checking (and with abstract mappings can be really * difficult to set properly) * * @param index class index for marshalling definition * @param name fully qualified name of class to be marshalled (used only * for validation) * @return marshalling handler for class * @throws JiBXException on any error (possibly wrapping other exception) */ public IMarshaller getMarshaller(int index, String name) throws JiBXException { if (index >= m_classes.length || !name.equals(m_classes[index])) { throw new JiBXException("Marshalling not defined for class " + name); } if (m_marshallers[index] == null) { // load the marshaller class and create an instance String mname = m_marshallerClasses[index]; if (mname == null) { throw new JiBXException("No marshaller defined for class " + name); } try { // first try loading class from binding factory class loader Class clas = null; ClassLoader factldr = null; if (m_factory != null) { factldr = m_factory.getClass().getClassLoader(); try { clas = factldr.loadClass(mname); } catch (ClassNotFoundException e) { /* fall through */ } } if (clas == null) { // next try the context class loader, if set ClassLoader ctxldr = Thread.currentThread().getContextClassLoader(); if (ctxldr != null) { try { clas = ctxldr.loadClass(mname); } catch (ClassNotFoundException e) { /* fall through */ } } if (clas == null) { // not found, try the loader that loaded this class ClassLoader thisldr = MarshallingContext.class.getClassLoader(); if (thisldr != factldr && thisldr != ctxldr) { try { clas = thisldr.loadClass(mname); } catch (ClassNotFoundException e) { /* fall through */ } } } } if (clas == null) { throw new JiBXException("Unable to load marshaller class " + mname); } // create an instance of marshaller class IMarshaller m = (IMarshaller)clas.newInstance(); m_marshallers[index] = m; } catch (JiBXException e) { throw e; } catch (Exception e) { throw new JiBXException ("Unable to create marshaller of class " + mname + ":", e); } } return m_marshallers[index]; } /** * Marshal document from root object. This internal method just verifies * that the object is marshallable, then calls the marshal method on the * object itself. * * @param root object at root of structure to be marshalled, which must have * a top-level mapping in the binding * @throws JiBXException on any error (possibly wrapping other exception) */ protected void marshalRoot(Object root) throws JiBXException { if (root instanceof IMarshallable) { boolean valid = false; IMarshallable mable = (IMarshallable)root; int index = mable.JiBX_getIndex(); if (index < m_classes.length) { String cname = m_classes[index]; Class mclass = mable.getClass(); while (!mclass.getName().equals("java.lang.Object")) { if (mclass.getName().equals(cname)) { valid = true; break; } else { mclass = mclass.getSuperclass(); } } } if (valid) { mable.marshal(this); } else { throw new JiBXException("Supplied root object of class " + root.getClass().getName() + " is incompatible with the binding used for this context"); } } else { throw new JiBXException("Supplied root object of class " + root.getClass().getName() + " cannot be marshalled without top-level mapping"); } } /** * Marshal document from root object without XML declaration. This can only * be validly called immediately following one of the set output methods; * otherwise the output document will be corrupt. The effect of this method * is the same as the sequence of a call to marshal the root object using * this context followed by a call to {@link #endDocument}. * * @param root object at root of structure to be marshalled, which must have * a top-level mapping in the binding * @throws JiBXException on any error (possibly wrapping other exception) */ public void marshalDocument(Object root) throws JiBXException { marshalRoot(root); endDocument(); } /** * Marshal document from root object. This can only be validly called * immediately following one of the set output methods; otherwise the output * document will be corrupt. The effect of this method is the same as the * sequence of a call to {@link #startDocument}, a call to marshal the root * object using this context, and finally a call to {@link #endDocument}. * * @param root object at root of structure to be marshalled, which must have * a top-level mapping in the binding * @param enc document encoding, null if not specified * @param alone standalone document flag, null if not * specified * @throws JiBXException on any error (possibly wrapping other exception) */ public void marshalDocument(Object root, String enc, Boolean alone) throws JiBXException { startDocument(enc, alone); marshalRoot(root); endDocument(); } /** * Marshal document from root object to output stream with encoding. The * effect of this method is the same as the sequence of a call to {@link * #startDocument}, a call to marshal the root object using this context, * and finally a call to {@link #endDocument}. * * @param root object at root of structure to be marshalled, which must have * a top-level mapping in the binding * @param enc document encoding, null if not specified * @param alone standalone document flag, null if not * specified * @param outs stream for document data output * @throws JiBXException on any error (possibly wrapping other exception) */ public void marshalDocument(Object root, String enc, Boolean alone, OutputStream outs) throws JiBXException { startDocument(enc, alone, outs); marshalRoot(root); endDocument(); } /** * Marshal document from root object to writer. The effect of this method * is the same as the sequence of a call to {@link #startDocument}, a call * to marshal the root object using this context, and finally a call to * {@link #endDocument}. * * @param root object at root of structure to be marshalled, which must have * a top-level mapping in the binding * @param enc document encoding, null if not specified * @param alone standalone document flag, null if not * specified * @param outw writer for document data output * @throws JiBXException on any error (possibly wrapping other exception) */ public void marshalDocument(Object root, String enc, Boolean alone, Writer outw) throws JiBXException { startDocument(enc, alone, outw); marshalRoot(root); endDocument(); } /** * Get shared ID map. The ID map returned is not used directly by the * marshalling code, but is provided to support user extensions. * * @return ID map */ public HashMap getIdMap() { if (m_idMap == null) { m_idMap = new HashMap(); } return m_idMap; } /** * Set a user context object. This context object is not used directly by * JiBX, but can be accessed by all types of user extension methods. The * context object is automatically cleared by the {@link #reset()} method, * so to make use of this you need to first call the appropriate version of * the setOutput() method, then this method, and finally one of * the marshalDocument methods which uses the previously-set * output (not the ones which take a stream or writer as parameter, since * they call setOutput() themselves). * * @param obj user context object, or null if clearing existing * context object * @see #getUserContext() */ public void setUserContext(Object obj) { m_userContext = obj; } /** * Get the user context object. * * @return user context object, or null if no context object * set * @see #setUserContext(Object) */ public Object getUserContext() { return m_userContext; } /** * Push created object to marshalling stack. This must be called before * beginning the marshalling of the object. It is only called for objects * with structure, not for those converted directly to and from text. * * @param obj object being marshalled */ public void pushObject(Object obj) { int depth = m_stackDepth; if (depth >= m_objectStack.length) { Object[] stack = new Object[depth*2]; System.arraycopy(m_objectStack, 0, stack, 0, depth); m_objectStack = stack; } m_objectStack[depth] = obj; m_stackDepth++; } /** * Pop marshalled object from stack. * * @throws JiBXException if no object on stack */ public void popObject() throws JiBXException { if (m_stackDepth > 0) { --m_stackDepth; } else { throw new JiBXException("No object on stack"); } } /** * Get current marshalling object stack depth. This allows tracking * nested calls to marshal one object while in the process of * marshalling another object. The bottom item on the stack is always the * root object being marshalled. * * @return number of objects in marshalling stack */ public int getStackDepth() { return m_stackDepth; } /** * Get object from marshalling stack. This stack allows tracking nested * calls to marshal one object while in the process of marshalling * another object. The bottom item on the stack is always the root object * being marshalled. * * @param depth object depth in stack to be retrieved (must be in the range * of zero to the current depth minus one). * @return object from marshalling stack */ public Object getStackObject(int depth) { return m_objectStack[m_stackDepth-depth-1]; } /** * Get top object on marshalling stack. This is safe to call even when no * objects are on the stack. * * @return object from marshalling stack, or null if none */ public Object getStackTop() { if (m_stackDepth > 0) { return m_objectStack[m_stackDepth-1]; } else { return null; } } }libjibx-java-1.1.6a/build/src/org/jibx/runtime/impl/RuntimeSupport.java0000644000175000017500000001241410732007524026024 0ustar moellermoeller/* Copyright (c) 2007, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime.impl; /** * Support class providing methods used by generated code. * * @author Dennis M. Sosnoski */ public abstract class RuntimeSupport { /** * Split concatenated class names string into an array of individual class * names. This is used by the generated binding factory code, to reduce the * size of the generated classes and methods. It takes as input a string * consisting of compacted fully-qualified class names separated by '|' * delimitor characters. If the compacted name starts with one or more '.' * characters the corresponding number of package name levels are taken from * the last class name. Empty names are left null in the array. * * @param count number of names * @param blob compacted class names separated by '|' delimitors * @return expanded class names */ public static String[] splitClassNames(int count, String blob) { String[] names = new String[count]; String last = ""; int split = -1; int index = 0; StringBuffer buff = new StringBuffer(); while (split < blob.length()) { int base = split + 1; split = blob.indexOf('|', base); if (split < 0) { split = blob.length(); } if (split > base) { int mark = 0; while (blob.charAt(base) == '.') { mark = last.indexOf('.', mark) + 1; base++; } buff.setLength(0); if (mark > 0) { buff.append(last.substring(0, mark)); } buff.append(blob.substring(base, split)); names[index] = last = buff.toString().intern(); } index++; } return names; } /** * Expand names URI indexes into an array of individual names URIs. This is * used by the generated binding factory code, to reduce the size of the * generated classes and methods. It takes as input a string where each * character is a namespace index, biased by +2 in order to avoid the use of * null characters, along with a table of corresponding namespace URIs. The * character value 1 is used as a marker for the case where no namespace is * associated with an index. * * @param blob string of characters representing namespace indexes * @param uris namespace URIs defined in binding * @return expanded class names */ public static String[] expandNamespaces(String blob, String[] uris) { String[] nameuris = new String[blob.length()]; for (int i = 0; i < blob.length(); i++) { int index = blob.charAt(i) - 2; if (index >= 0) { nameuris[i] = uris[index]; } } return nameuris; } /** * Split concatenated names string into an array of individual names. This * is used by the generated binding factory code, to reduce the size of the * generated classes and methods. It takes as input a string consisting of * names separated by '|' delimitor characters. * * @param count number of names * @param blob element names separated by '|' delimitors * @return expanded class names */ public static String[] splitNames(int count, String blob) { String[] names = new String[count]; int split = -1; int index = 0; while (split < blob.length()) { int base = split + 1; split = blob.indexOf('|', base); if (split < 0) { split = blob.length(); } if (split > base) { names[index] = blob.substring(base, split); } index++; } return names; } }libjibx-java-1.1.6a/build/src/org/jibx/runtime/impl/SparseArrayIterator.java0000644000175000017500000000671210257171674026770 0ustar moellermoeller/* * Copyright (c) 2000-2001 Sosnoski Software Solutions, Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS * IN THE SOFTWARE. */ package org.jibx.runtime.impl; import java.util.Iterator; import java.util.NoSuchElementException; /** * Iterator class for sparse values in an array. This type of iterator * can be used for an object array which has references interspersed with * nulls. * * @author Dennis M. Sosnoski * @version 1.1 */ public class SparseArrayIterator implements Iterator { /** Array supplying values for iteration. */ protected Object[] m_array; /** Offset of next iteration value. */ protected int m_offset; /** * Internal constructor. * * @param array array containing values to be iterated */ private SparseArrayIterator(Object[] array) { m_array = array; m_offset = -1; advance(); } /** * Advance to next iteration value. This advances the current position in * the array to the next non-null value. * * @return true if element available, false if * not */ protected boolean advance() { while (++m_offset < m_array.length) { if (m_array[m_offset] != null) { return true; } } return false; } /** * Check for iteration element available. * * @return true if element available, false if * not */ public boolean hasNext() { return m_offset < m_array.length; } /** * Get next iteration element. * * @return next iteration element * @exception NoSuchElementException if past end of iteration */ public Object next() { if (m_offset < m_array.length) { Object result = m_array[m_offset]; advance(); return result; } else { throw new NoSuchElementException(); } } /** * Remove element from iteration. This optional operation is not supported * and always throws an exception. * * @exception UnsupportedOperationException for unsupported operation */ public void remove() { throw new UnsupportedOperationException(); } /** * Build iterator. * * @param array array containing values to be iterated (may be * null) * @return constructed iterator */ public static Iterator buildIterator(Object[] array) { if (array == null || array.length == 0) { return ArrayRangeIterator.EMPTY_ITERATOR; } else { return new SparseArrayIterator(array); } } }libjibx-java-1.1.6a/build/src/org/jibx/runtime/impl/StAXReaderFactory.java0000644000175000017500000001410010611642106026265 0ustar moellermoeller/* Copyright (c) 2005, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime.impl; import java.io.InputStream; import java.io.Reader; import javax.xml.stream.FactoryConfigurationError; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; import org.jibx.runtime.IXMLReader; import org.jibx.runtime.JiBXException; /** * Factory for creating XMLPull parser instances. * * @author Dennis M. Sosnoski * @version 1.0 */ public class StAXReaderFactory implements IXMLReaderFactory { /** Singleton instance of class. */ private static final StAXReaderFactory s_instance = new StAXReaderFactory(); /** Factory used for constructing parser instances. */ private final XMLInputFactory m_factory; /** Namespace processing state configured on factory. */ private boolean m_isNamespaceEnabled; /** * Internal constructor. */ private StAXReaderFactory() { XMLInputFactory factory; try { factory = XMLInputFactory.newInstance(); } catch (FactoryConfigurationError e) { Thread thread = Thread.currentThread(); ClassLoader cl = thread.getContextClassLoader(); thread.setContextClassLoader (StAXReaderFactory.class.getClassLoader()); try { factory = XMLInputFactory.newInstance(); } finally { thread.setContextClassLoader(cl); } } m_factory = factory; m_isNamespaceEnabled = true; } /** * Get instance of factory. * * @return factory instance */ public static StAXReaderFactory getInstance() { return s_instance; } /** * Create new parser instance. In order to avoid thread safety issues the * caller must have a lock on the factory object. * * @param nsf enable namespace processing on parser flag * @throws JiBXException on error creating parser */ private void setNamespacesState(boolean nsf) throws JiBXException { if (nsf != m_isNamespaceEnabled) { try { m_factory.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE, nsf ? Boolean.TRUE : Boolean.FALSE); m_isNamespaceEnabled = nsf; } catch (IllegalArgumentException e) { throw new JiBXException ("Unable to create parser with required namespace handling"); } } } /* (non-Javadoc) * @see org.jibx.runtime.impl.IXMLReaderFactory#createReader(java.io.InputStream, java.lang.String, java.lang.String, boolean) */ public IXMLReader createReader(InputStream is, String name, String enc, boolean nsf) throws JiBXException { try { synchronized (m_factory) { setNamespacesState(nsf); if (enc == null) { XMLStreamReader rdr = m_factory.createXMLStreamReader(is); return new StAXReaderWrapper(rdr, name, nsf); } else { XMLStreamReader rdr = m_factory.createXMLStreamReader(is, enc); return new StAXReaderWrapper(rdr, name, nsf); } } } catch (XMLStreamException e) { throw new JiBXException("Error creating parser", e); } } /* (non-Javadoc) * @see org.jibx.runtime.impl.IXMLReaderFactory#createReader(java.io.Reader, java.lang.String, boolean) */ public IXMLReader createReader(Reader rdr, String name, boolean nsf) throws JiBXException { try { synchronized (m_factory) { setNamespacesState(nsf); return new StAXReaderWrapper(m_factory.createXMLStreamReader(rdr), name, nsf); } } catch (XMLStreamException e) { throw new JiBXException("Error creating parser", e); } } /* (non-Javadoc) * @see org.jibx.runtime.impl.IXMLReaderFactory#recycleReader(org.jibx.runtime.IXMLReader, java.io.InputStream, java.lang.String, java.lang.String) */ public IXMLReader recycleReader(IXMLReader old, InputStream is, String name, String enc) throws JiBXException { return createReader(is, name, enc, old.isNamespaceAware()); } /* (non-Javadoc) * @see org.jibx.runtime.impl.IXMLReaderFactory#recycleReader(org.jibx.runtime.IXMLReader, java.io.Reader, java.lang.String) */ public IXMLReader recycleReader(IXMLReader old, Reader rdr, String name) throws JiBXException { return createReader(rdr, name, old.isNamespaceAware()); } }libjibx-java-1.1.6a/build/src/org/jibx/runtime/impl/StAXReaderWrapper.java0000644000175000017500000003534710624255756026335 0ustar moellermoellerpackage org.jibx.runtime.impl; import javax.xml.stream.Location; import javax.xml.stream.XMLStreamConstants; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; import org.jibx.runtime.IXMLReader; import org.jibx.runtime.IntStack; import org.jibx.runtime.JiBXException; /** * Wrapper for a StAX parser implementation. This delegates most calls * more or less directly, only adding the required namespace functionality * on top of the StAX API. */ public class StAXReaderWrapper implements IXMLReader { /** Event type code translation array. Indexed by the StAX event code, it returns the corresponding XML reader event code. */ static final byte[] s_eventTranslations = new byte[256]; static { s_eventTranslations[XMLStreamConstants.CDATA] = IXMLReader.CDSECT; s_eventTranslations[XMLStreamConstants.CHARACTERS] = IXMLReader.TEXT; s_eventTranslations[XMLStreamConstants.COMMENT] = IXMLReader.COMMENT; s_eventTranslations[XMLStreamConstants.DTD] = IXMLReader.DOCDECL; s_eventTranslations[XMLStreamConstants.END_DOCUMENT] = IXMLReader.END_DOCUMENT; s_eventTranslations[XMLStreamConstants.END_ELEMENT] = IXMLReader.END_TAG; s_eventTranslations[XMLStreamConstants.ENTITY_REFERENCE] = IXMLReader.ENTITY_REF; s_eventTranslations[XMLStreamConstants.PROCESSING_INSTRUCTION] = IXMLReader.PROCESSING_INSTRUCTION; s_eventTranslations[XMLStreamConstants.SPACE] = IXMLReader.IGNORABLE_WHITESPACE; s_eventTranslations[XMLStreamConstants.START_DOCUMENT] = IXMLReader.START_DOCUMENT; s_eventTranslations[XMLStreamConstants.START_ELEMENT] = IXMLReader.START_TAG; } /** Actual parser. */ private final XMLStreamReader m_parser; /** Parser processing namespaces flag. */ final boolean m_isNamespaceAware; /** Document name. */ private final String m_docName; /** Current element nesting depth. */ int m_nestingDepth; /** Namespace definitions in scope at each nesting depth. */ private IntStack m_inScopeCounts; /** Namespace URIs in scope. */ private StringArray m_inScopeUris; /** Namespace prefixes in scope. */ private StringArray m_inScopePrefixes; /** Accumulated text for return. */ private String m_accumulatedText; /** Accumulated text is processing instruction flag (otherwise content) */ private boolean m_isProcessingInstruction; /** Document encoding (apparently cannot be read after parse done). */ private String m_encoding; /** * Constructor used by factory. * * @param rdr event reader * @param nsa namespace aware flag */ public StAXReaderWrapper(XMLStreamReader rdr, String name, boolean nsa) { m_parser = rdr; m_docName = name; m_isNamespaceAware = nsa; m_inScopeCounts = new IntStack(); m_inScopeCounts.push(0); m_inScopeUris = new StringArray(); m_inScopePrefixes = new StringArray(); } /** * Build current parse input position description. * * @return text description of current parse position */ public String buildPositionString() { Location location = m_parser.getLocation(); String base = "(line " + location.getLineNumber() + ", col " + location.getColumnNumber(); if (m_docName != null) { base += ", in " + m_docName; } return base + ')'; } /** * Handle start tag. This increments the nesting count, and records all * namespaces associated with the start tag. */ private void startTag() { if (m_nestingDepth == 0) { m_encoding = m_parser.getEncoding(); if (m_encoding == null) { m_encoding = m_parser.getCharacterEncodingScheme(); if (m_encoding == null) { m_encoding = "UTF-8"; } } } m_nestingDepth++; int count = m_parser.getNamespaceCount(); for (int i = 0; i < count; i++) { m_inScopeUris.add(m_parser.getNamespaceURI(i)); m_inScopePrefixes.add(m_parser.getNamespacePrefix(i)); } m_inScopeCounts.push(m_inScopeUris.size()); } /** * Handle end tag. This decrements the nesting count, and deletes all * namespaces associated with the start tag. */ private void endTag() { m_nestingDepth--; int count = m_inScopeCounts.pop() - m_inScopeCounts.peek(); if (count > 0) { m_inScopeUris.remove(count); m_inScopePrefixes.remove(count); } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#nextToken() */ public int nextToken() throws JiBXException { if (m_accumulatedText == null) { try { int code; loop: while (true) { code = s_eventTranslations[m_parser.next()]; switch (code) { case START_TAG: startTag(); break loop; case END_TAG: endTag(); break loop; case PROCESSING_INSTRUCTION: m_accumulatedText = m_parser.getPITarget() + ' ' + m_parser.getPIData(); m_isProcessingInstruction = true; while (s_eventTranslations[m_parser.next()] == 0); break loop; case 0: break; default: break loop; } } return code; } catch (XMLStreamException e) { throw new JiBXException ("Error parsing document " + buildPositionString(), e); } } else { m_accumulatedText = null; m_isProcessingInstruction = false; int code = s_eventTranslations[m_parser.getEventType()]; if (code == START_TAG) { startTag(); } else if (code == END_TAG) { endTag(); } return code; } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#next() */ public int next() throws JiBXException { String text = null; StringBuffer buff = null; try { int type; if (m_accumulatedText == null) { m_parser.next(); } else { m_accumulatedText = null; m_isProcessingInstruction = false; } loop: while (true) { type = s_eventTranslations[m_parser.getEventType()]; switch (type) { case ENTITY_REF: if (m_parser.getText() == null) { throw new JiBXException ("Unexpanded entity reference in text at " + buildPositionString()); } // fall through into text accumulation case CDSECT: case TEXT: if (text == null) { text = m_parser.getText(); } else { if (buff == null) { buff = new StringBuffer(text); } buff.append(m_parser.getTextCharacters()); } break; case END_TAG: if (text == null) { endTag(); return type; } break loop; case START_TAG: if (text == null) { startTag(); return type; } break loop; case END_DOCUMENT: if (text == null) { return type; } break loop; default: break; } m_parser.next(); } if (buff == null) { m_accumulatedText = text; } else { m_accumulatedText = buff.toString(); } return TEXT; } catch (XMLStreamException e) { throw new JiBXException ("Error parsing document " + buildPositionString(), e); } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getEventType() */ public int getEventType() throws JiBXException { if (m_accumulatedText == null) { return s_eventTranslations[m_parser.getEventType()]; } else if (m_isProcessingInstruction) { return PROCESSING_INSTRUCTION; } else { return TEXT; } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getName() */ public String getName() { return m_parser.getLocalName(); } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getNamespace() */ public String getNamespace() { String uri = m_parser.getNamespaceURI(); if (uri == null) { return ""; } else { return uri; } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getPrefix() */ public String getPrefix() { String prefix = m_parser.getPrefix(); if (prefix != null && prefix.length() == 0) { return null; } else { return prefix; } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getAttributeCount() */ public int getAttributeCount() { return m_parser.getAttributeCount(); } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getAttributeName(int) */ public String getAttributeName(int index) { try { return m_parser.getAttributeLocalName(index); } catch (ArrayIndexOutOfBoundsException e) { throw new IllegalStateException(e.getMessage()); } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getAttributeNamespace(int) */ public String getAttributeNamespace(int index) { try { String uri = m_parser.getAttributeNamespace(index); if (uri == null) { return ""; } else { return uri; } } catch (ArrayIndexOutOfBoundsException e) { throw new IllegalStateException(e.getMessage()); } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getAttributePrefix(int) */ public String getAttributePrefix(int index) { try { String prefix = m_parser.getAttributePrefix(index); if (prefix != null && prefix.length() == 0) { return null; } else { return prefix; } } catch (ArrayIndexOutOfBoundsException e) { throw new IllegalStateException(e.getMessage()); } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getAttributeValue(int) */ public String getAttributeValue(int index) { try { return m_parser.getAttributeValue(index); } catch (ArrayIndexOutOfBoundsException e) { throw new IllegalStateException(e.getMessage()); } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getAttributeValue(java.lang.String, java.lang.String) */ public String getAttributeValue(String ns, String name) { try { return m_parser.getAttributeValue(ns, name); } catch (ArrayIndexOutOfBoundsException e) { throw new IllegalStateException(e.getMessage()); } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getText() */ public String getText() { if (m_accumulatedText == null) { return m_parser.getText(); } else { return m_accumulatedText; } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getNestingDepth() */ public int getNestingDepth() { return m_nestingDepth; } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getNamespaceCount(int) */ public int getNamespaceCount(int depth) { return m_inScopeCounts.peek(m_nestingDepth-depth); } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getNamespaceUri(int) */ public String getNamespaceUri(int index) { return m_inScopeUris.get(index); } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getNamespacePrefix(int) */ public String getNamespacePrefix(int index) { String prefix = m_inScopePrefixes.get(index); if (prefix != null && prefix.length() == 0) { return null; } else { return prefix; } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getDocumentName() */ public String getDocumentName() { return m_docName; } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getLineNumber() */ public int getLineNumber() { return m_parser.getLocation().getLineNumber(); } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getColumnNumber() */ public int getColumnNumber() { return m_parser.getLocation().getColumnNumber(); } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getNamespace(java.lang.String) */ public String getNamespace(String prefix) { int index = m_inScopePrefixes.size(); while (--index >= 0) { String comp = m_inScopePrefixes.get(index); if ((prefix == null && comp == null) || (prefix != null && prefix.equals(comp))) { return m_inScopeUris.get(index); } } return null; } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getInputEncoding() */ public String getInputEncoding() { return m_encoding; } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#isNamespaceAware() */ public boolean isNamespaceAware() { return m_isNamespaceAware; } }libjibx-java-1.1.6a/build/src/org/jibx/runtime/impl/StAXWriter.java0000644000175000017500000003043710736011440025021 0ustar moellermoeller/* Copyright (c) 2005-2007, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime.impl; import java.io.IOException; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; import org.jibx.runtime.IExtensibleWriter; import org.jibx.runtime.IXMLWriter; /** * Writer generating StAX parse event stream output. * * @author Dennis M. Sosnoski * @version 1.0 */ public class StAXWriter extends XMLWriterNamespaceBase implements IExtensibleWriter { /** Target for parse event stream. */ private XMLStreamWriter m_writer; /** * Constructor. * * @param uris ordered array of URIs for namespaces used in document (must * be constant; the value in position 0 must always be the empty string "", * and the value in position 1 must always be the XML namespace * "http://www.w3.org/XML/1998/namespace") */ public StAXWriter(String[] uris) { super(uris); } /** * Constructor with writer supplied. * * @param uris ordered array of URIs for namespaces used in document (must * be constant; the value in position 0 must always be the empty string "", * and the value in position 1 must always be the XML namespace * "http://www.w3.org/XML/1998/namespace") * @param wrtr StAX writer for parse event output */ public StAXWriter(String[] uris, XMLStreamWriter wrtr) { this(uris); m_writer = wrtr; } /** * Copy constructor. This initializes the writer and extension namespace * information from an existing instance. * * @param base existing instance * @param uris ordered array of URIs for namespaces used in document */ public StAXWriter(StAXWriter base, String[] uris) { super(base, uris); m_writer = base.m_writer; } /** * Set StAX writer. * * @param wrtr StAX writer for parse event output */ public void setWriter(XMLStreamWriter wrtr) { m_writer = wrtr; } /* (non-Javadoc) * @see org.jibx.runtime.impl.XMLWriterNamespaceBase#defineNamespace(int, java.lang.String) */ protected void defineNamespace(int index, String prefix) throws IOException { /* try { // inform writer of new namespace usage String uri = getNamespaceUri(index); if (prefix.length() == 0) { m_writer.setDefaultNamespace(uri); } else { m_writer.setPrefix(prefix, uri); } } catch (XMLStreamException e) { throw new IOException("Error writing to stream: " + e.getMessage()); } */ } /* (non-Javadoc) * @see org.jibx.runtime.impl.XMLWriterNamespaceBase#undefineNamespace(int) */ protected void undefineNamespace(int index) {} /* (non-Javadoc) * @see org.jibx.runtime.IXMLWriter#setIndentSpaces(int, java.lang.String, char) */ public void setIndentSpaces(int count, String newline, char indent) {} /* (non-Javadoc) * @see org.jibx.runtime.IXMLWriter#writeXMLDecl(java.lang.String, java.lang.String, java.lang.String) */ public void writeXMLDecl(String version, String encoding, String standalone) throws IOException { try { m_writer.writeStartDocument(version, encoding); } catch (XMLStreamException e) { throw new IOException("Error writing to stream: " + e.getMessage()); } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLWriter#startTagOpen(int, java.lang.String) */ public void startTagOpen(int index, String name) throws IOException { try { // write start element, without or with namespace if (index == 0) { m_writer.writeStartElement(name); } else { m_writer.writeStartElement(getNamespacePrefix(index), name, getNamespaceUri(index)); } // increment nesting for any possible content incrementNesting(); } catch (XMLStreamException e) { throw new IOException("Error writing to stream: " + e.getMessage()); } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLWriter#startTagNamespaces(int, java.lang.String, int[], java.lang.String[]) */ public void startTagNamespaces(int index, String name, int[] nums, String[] prefs) throws IOException { try { // find the namespaces actually being declared int[] deltas = openNamespaces(nums, prefs); // open the start tag startTagOpen(index, name); // write the namespace declarations for (int i = 0; i < deltas.length; i++) { int slot = deltas[i]; String prefix = getNamespacePrefix(slot); String uri = getNamespaceUri(slot); if (prefix.length() > 0) { m_writer.writeNamespace(prefix, uri); } else { m_writer.writeDefaultNamespace(uri); } } } catch (XMLStreamException e) { throw new IOException("Error writing to stream: " + e.getMessage()); } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLWriter#addAttribute(int, java.lang.String, java.lang.String) */ public void addAttribute(int index, String name, String value) throws IOException { try { if (index == 0) { m_writer.writeAttribute(name, value); } else { m_writer.writeAttribute(getNamespacePrefix(index), getNamespaceUri(index), name, value); } } catch (XMLStreamException e) { throw new IOException("Error writing to stream: " + e.getMessage()); } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLWriter#closeStartTag() */ public void closeStartTag() throws IOException { } /* (non-Javadoc) * @see org.jibx.runtime.IXMLWriter#closeEmptyTag() */ public void closeEmptyTag() throws IOException { try { m_writer.writeEndElement(); decrementNesting(); } catch (XMLStreamException e) { throw new IOException("Error writing to stream: " + e.getMessage()); } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLWriter#startTagClosed(int, java.lang.String) */ public void startTagClosed(int index, String name) throws IOException { startTagOpen(index, name); } /* (non-Javadoc) * @see org.jibx.runtime.IXMLWriter#endTag(int, java.lang.String) */ public void endTag(int index, String name) throws IOException { // not valid approach in general, but okay for StAX case closeEmptyTag(); } /* (non-Javadoc) * @see org.jibx.runtime.IXMLWriter#writeTextContent(java.lang.String) */ public void writeTextContent(String text) throws IOException { try { m_writer.writeCharacters(text); } catch (XMLStreamException e) { throw new IOException("Error writing to stream: " + e.getMessage()); } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLWriter#writeCData(java.lang.String) */ public void writeCData(String text) throws IOException { try { m_writer.writeCData(text); } catch (XMLStreamException e) { throw new IOException("Error writing to stream: " + e.getMessage()); } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLWriter#writeComment(java.lang.String) */ public void writeComment(String text) throws IOException { try { m_writer.writeComment(text); } catch (XMLStreamException e) { throw new IOException("Error writing to stream: " + e.getMessage()); } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLWriter#writeEntityRef(java.lang.String) */ public void writeEntityRef(String name) throws IOException { try { m_writer.writeEntityRef(name); } catch (XMLStreamException e) { throw new IOException("Error writing to stream: " + e.getMessage()); } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLWriter#writeDocType(java.lang.String, java.lang.String, java.lang.String, java.lang.String) */ public void writeDocType(String name, String sys, String pub, String subset) throws IOException { try { StringBuffer buff = new StringBuffer(); buff.append("'); m_writer.writeDTD(buff.toString()); } catch (XMLStreamException e) { throw new IOException("Error writing to stream: " + e.getMessage()); } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLWriter#writePI(java.lang.String, java.lang.String) */ public void writePI(String target, String data) throws IOException { try { m_writer.writeProcessingInstruction(target, data); } catch (XMLStreamException e) { throw new IOException("Error writing to stream: " + e.getMessage()); } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLWriter#indent() */ public void indent() throws IOException {} /* (non-Javadoc) * @see org.jibx.runtime.IXMLWriter#flush() */ public void flush() throws IOException { // internal flush only, do not pass through to writer } /* (non-Javadoc) * @see org.jibx.runtime.IXMLWriter#close() */ public void close() throws IOException { try { m_writer.close(); } catch (XMLStreamException e) { throw new IOException("Error closing stream: " + e.getMessage()); } } /** * Create a child writer instance to be used for a separate binding. The * child writer inherits the output handling from this writer, while using * the supplied namespace URIs. * * @param uris ordered array of URIs for namespaces used in document * (see {@link #StAXWriter(String[])}) * @return child writer */ public IXMLWriter createChildWriter(String[] uris) { return new StAXWriter(this, uris); } }libjibx-java-1.1.6a/build/src/org/jibx/runtime/impl/StreamWriterBase.java0000644000175000017500000004176410737003370026241 0ustar moellermoeller/* Copyright (c) 2004-2007, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime.impl; import java.io.IOException; import java.io.OutputStream; import java.io.UnsupportedEncodingException; /** * Base handler for marshalling text document to an output stream. This is * designed for use with character encodings that use standard one-byte values * for Unicode characters in the 0x20-0x7F range, which includes the most * widely used encodings for XML documents. It needs to be subclassed with * implementation methods specific to the encoding used. * * @author Dennis M. Sosnoski */ public abstract class StreamWriterBase extends XMLWriterBase { // // Defined entities and special sequences as bytes protected static final byte[] QUOT_ENTITY = { (byte)'&', (byte)'q', (byte)'u', (byte)'o', (byte)'t', (byte)';' }; protected static final byte[] AMP_ENTITY = { (byte)'&', (byte)'a', (byte)'m', (byte)'p', (byte)';' }; protected static final byte[] GT_ENTITY = { (byte)'&', (byte)'g', (byte)'t', (byte)';' }; protected static final byte[] LT_ENTITY = { (byte)'&', (byte)'l', (byte)'t', (byte)';' }; protected static final byte[] LT_CDATASTART = { (byte)'<', (byte)'!', (byte)'[', (byte)'C', (byte)'D', (byte)'A', (byte)'T', (byte)'A', (byte)'[' }; protected static final byte[] LT_CDATAEND = { (byte)']', (byte)']', (byte)'>' }; /** Default output buffer size. */ public static final int DEFAULT_BUFFER_SIZE = 4096; /** Name of encoding used for stream. */ private final String m_encodingName; /** Original writer (only used when created using copy constructor, null otherwise). */ private final StreamWriterBase m_baseWriter; /** Stream for text output. */ private OutputStream m_stream; /** Buffer for accumulating output bytes. */ protected byte[] m_buffer; /** Current offset in filling buffer. */ protected int m_fillOffset; /** Byte sequences for prefixes of namespaces in scope. */ protected byte[][] m_prefixBytes; /** Byte sequences for prefixes of extension namespaces in scope. */ protected byte[][][] m_extensionBytes; /** Indent tags for pretty-printed text. */ private boolean m_indent; /** Base number of characters in indent sequence (end of line only). */ private int m_indentBase; /** Number of extra characters in indent sequence per level of nesting. */ private int m_indentPerLevel; /** Raw text for indentation sequences. */ private byte[] m_indentSequence; /** * Constructor with supplied buffer. * * @param enc character encoding used for output to streams (upper case) * @param uris ordered array of URIs for namespaces used in document (must * be constant; the value in position 0 must always be the empty string "", * and the value in position 1 must always be the XML namespace * "http://www.w3.org/XML/1998/namespace") * @param buffer output data buffer */ protected StreamWriterBase(String enc, String[] uris, byte[] buffer) { super(uris); m_encodingName = enc; m_baseWriter = null; m_prefixBytes = new byte[uris.length][]; m_buffer = buffer; } /** * Constructor using default buffer size. * * @param enc character encoding used for output to streams (upper case) * @param uris ordered array of URIs for namespaces used in document (must * be constant; the value in position 0 must always be the empty string "", * and the value in position 1 must always be the XML namespace * "http://www.w3.org/XML/1998/namespace") */ public StreamWriterBase(String enc, String[] uris) { this(enc, uris, new byte[DEFAULT_BUFFER_SIZE]); } /** * Copy constructor. This takes the stream and encoding information from a * supplied instance, while setting a new array of namespace URIs. It's * intended for use when invoking one binding from within another binding. * * @param base instance to be used as base for writer * @param uris ordered array of URIs for namespaces used in document * (see {@link #StreamWriterBase(String, String[])}) */ public StreamWriterBase(StreamWriterBase base, String[] uris) { super(base, uris); m_encodingName = base.m_encodingName; m_baseWriter = base; m_prefixBytes = new byte[uris.length][]; m_stream = base.m_stream; m_buffer = base.m_buffer; m_fillOffset = base.m_fillOffset; m_indent = base.m_indent; m_indentBase = base.m_indentBase; m_indentPerLevel = base.m_indentPerLevel; m_indentSequence = base.m_indentSequence; byte[][][] extbytes = base.m_extensionBytes; if (extbytes != null) { m_extensionBytes = new byte[extbytes.length][][]; System.arraycopy(extbytes, 0, m_extensionBytes, 0, m_extensionBytes.length); } } /** * Get the name of the character encoding used by this writer. * * @return encoding */ public String getEncodingName() { return m_encodingName; } /** * Set output stream. If an output stream is currently open when this is * called the existing stream is flushed and closed, with any errors * ignored. * * @param outs stream for document data output */ public void setOutput(OutputStream outs) { try { close(); } catch (IOException e) { /* deliberately empty */ } m_stream = outs; reset(); } /** * Set namespace URIs. This forces a reset of the writer, clearing any * buffered output. It is intended to be used only for reconfiguring an * existing writer for reuse. * * @param uris ordered array of URIs for namespaces used in document * @throws IOException */ public void setNamespaceUris(String[] uris) throws IOException { reset(); boolean diff = false; String[] olds = getNamespaces(); if (olds.length == uris.length) { for (int i = 0; i < uris.length; i++) { if (!uris[i].equals(olds[i])) { diff = true; break; } } } else { diff = true; } if (diff) { internalSetUris(uris); m_prefixBytes = new byte[uris.length][]; defineNamespace(0, ""); defineNamespace(1, "xml"); } } /** * Set nesting indentation. This is advisory only, and implementations of * this interface are free to ignore it. The intent is to indicate that the * generated output should use indenting to illustrate element nesting. * * @param count number of character to indent per level, or disable * indentation if negative (zero means new line only) * @param newline sequence of characters used for a line ending * (null means use the single character '\n') * @param indent whitespace character used for indentation */ public void setIndentSpaces(int count, String newline, char indent) { if (count >= 0) { try { if (newline == null) { newline = "\n"; } m_indent = true; byte[] base = newline.getBytes(m_encodingName); m_indentBase = base.length; byte[] per = new String(new char[] { indent }).getBytes(m_encodingName); m_indentPerLevel = count * per.length; int length = m_indentBase + m_indentPerLevel * 10; m_indentSequence = new byte[length]; for (int i = 0; i < length; i++) { if (i < newline.length()) { m_indentSequence[i] = base[i]; } else { int index = (i - m_indentBase) % per.length; m_indentSequence[i] = per[index]; } } } catch (UnsupportedEncodingException e) { throw new RuntimeException ("Encoding " + m_encodingName + " not recognized by JVM"); } } else { m_indent = false; } } /** * Make at least the requested number of bytes available in the output * buffer. If necessary, the output buffer will be replaced by a larger * buffer. * * @param length number of bytes space to be made available * @throws IOException if error writing to document */ protected void makeSpace(int length) throws IOException { if (m_fillOffset + length > m_buffer.length) { m_stream.write(m_buffer, 0, m_fillOffset); m_fillOffset = 0; if (length > m_buffer.length) { m_buffer = new byte[Math.max(length, m_buffer.length*2)]; } } } /** * Report that namespace has been undefined. * * @param index namespace URI index number */ protected void undefineNamespace(int index) { if (index < m_prefixBytes.length) { m_prefixBytes[index] = null; } else if (m_extensionBytes != null) { index -= m_prefixes.length; for (int i = 0; i < m_extensionBytes.length; i++) { int length = m_extensionBytes[i].length; if (index < length) { m_extensionBytes[i][index] = null; break; } else { index -= length; } } } else { throw new IllegalArgumentException("Index out of range"); } } /** * Write namespace prefix to output. This internal method is used to throw * an exception when an undeclared prefix is used. * * @param index namespace URI index number * @throws IOException if error writing to document */ protected void writePrefix(int index) throws IOException { try { byte[] bytes = null; if (index < m_prefixBytes.length) { bytes = m_prefixBytes[index]; } else if (m_extensionBytes != null) { index -= m_prefixes.length; for (int i = 0; i < m_extensionBytes.length; i++) { int length = m_extensionBytes[i].length; if (index < length) { bytes = m_extensionBytes[i][index]; break; } else { index -= length; } } } if (bytes.length > 0) { makeSpace(bytes.length); System.arraycopy(bytes, 0, m_buffer, m_fillOffset, bytes.length); m_fillOffset += bytes.length; } } catch (NullPointerException ex) { throw new IOException("Namespace URI has not been declared."); } } /** * Write entity bytes to output. * * @param bytes actual bytes to be written * @param offset starting offset in buffer * @return offset for next data byte in buffer */ protected int writeEntity(byte[] bytes, int offset) { System.arraycopy(bytes, 0, m_buffer, offset, bytes.length); return offset + bytes.length; } /** * Append extension namespace URIs to those in mapping. * * @param uris namespace URIs to extend those in mapping */ public void pushExtensionNamespaces(String[] uris) { super.pushExtensionNamespaces(uris); byte[][] items = new byte[uris.length][]; if (m_extensionBytes == null) { m_extensionBytes = new byte[][][] { items }; } else { int length = m_extensionBytes.length; byte[][][] grow = new byte[length+1][][]; System.arraycopy(m_extensionBytes, 0, grow, 0, length); grow[length] = items; m_extensionBytes = grow; } } /** * Remove extension namespace URIs. This removes the last set of * extension namespaces pushed using {@link #pushExtensionNamespaces}. */ public void popExtensionNamespaces() { super.popExtensionNamespaces(); int length = m_extensionBytes.length; if (length == 1) { m_extensionBytes = null; } else { byte[][][] shrink = new byte[length-1][][]; System.arraycopy(m_extensionBytes, 0, shrink, 0, length-1); m_extensionBytes = shrink; } } /** * Request output indent. Output the line end sequence followed by the * appropriate number of indent characters. * * @param bias indent depth difference (positive or negative) from current * element nesting depth * @throws IOException on error writing to document */ public void indent(int bias) throws IOException { if (m_indent) { int length = m_indentBase + (getNestingDepth() + bias) * m_indentPerLevel; if (length > m_indentSequence.length) { int use = Math.max(length, m_indentSequence.length*2 - m_indentBase); byte[] grow = new byte[use]; System.arraycopy(m_indentSequence, 0, grow, 0, m_indentSequence.length); for (int i = m_indentSequence.length; i < use; i++) { grow[i] = grow[m_indentBase]; } m_indentSequence = grow; } makeSpace(length); System.arraycopy(m_indentSequence, 0, m_buffer, m_fillOffset, length); m_fillOffset += length; } } /** * Request output indent. Output the line end sequence followed by the * appropriate number of indent characters for the current nesting level. * * @throws IOException on error writing to document */ public void indent() throws IOException { indent(0); } /** * Flush document output. Forces out all output generated to this point, * unless using a chunking output mechanism. * * @throws IOException on error writing to document */ public void flush() throws IOException { flagContent(); if (m_stream != null) { if (m_baseWriter == null) { if (!(m_stream instanceof IChunkedOutput)) { m_stream.write(m_buffer, 0, m_fillOffset); m_fillOffset = 0; } } else { m_baseWriter.m_fillOffset = m_fillOffset; } } } /** * Close document output. Completes writing of document output, including * closing the output medium. * * @throws IOException on error writing to document */ public void close() throws IOException { flush(); if (m_stream != null) { try { if (m_stream instanceof IChunkedOutput) { ((IChunkedOutput)m_stream).writeFinal(m_buffer, 0, m_fillOffset); } m_stream.close(); } finally { m_fillOffset = 0; m_stream = null; } } } /** * Reset to initial state for reuse. This override of the base class * method handles clearing the internal buffer when starting a new * document. */ public void reset() { super.reset(); m_fillOffset = 0; } }libjibx-java-1.1.6a/build/src/org/jibx/runtime/impl/StringArray.java0000644000175000017500000002047210434260716025257 0ustar moellermoeller/* Copyright (c) 2000-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime.impl; import java.lang.reflect.Array; /** * Growable String array with type specific access methods. This * implementation is unsynchronized in order to provide the best possible * performance for typical usage scenarios, so explicit synchronization must * be implemented by a wrapper class or directly by the application in cases * where instances are modified in a multithreaded environment. * * @author Dennis M. Sosnoski * @version 1.0 */ public class StringArray { /** Default initial array size. */ public static final int DEFAULT_SIZE = 8; /** Size of the current array. */ private int m_countLimit; /** The number of values currently present in the array. */ private int m_countPresent; /** Maximum size increment for growing array. */ private int m_maximumGrowth; /** The underlying array used for storing the data. */ private String[] m_baseArray; /** * Constructor with full specification. * * @param size number of String values initially allowed in * array * @param growth maximum size increment for growing array */ public StringArray(int size, int growth) { String[] array = new String[size]; m_countLimit = size; m_maximumGrowth = growth; m_baseArray = array; } /** * Constructor with initial size specified. * * @param size number of String values initially allowed in * array */ public StringArray(int size) { this(size, Integer.MAX_VALUE); } /** * Default constructor. */ public StringArray() { this(DEFAULT_SIZE); } /** * Copy (clone) constructor. * * @param base instance being copied */ public StringArray(StringArray base) { this(base.m_countLimit, base.m_maximumGrowth); System.arraycopy(base.m_baseArray, 0, m_baseArray, 0, base.m_countPresent); m_countPresent = base.m_countPresent; } /** * Copy data after array resize. This just copies the entire contents of the * old array to the start of the new array. It should be overridden in cases * where data needs to be rearranged in the array after a resize. * * @param base original array containing data * @param grown resized array for data */ private void resizeCopy(Object base, Object grown) { System.arraycopy(base, 0, grown, 0, Array.getLength(base)); } /** * Discards values for a range of indices in the array. Clears references to * removed values. * * @param from index of first value to be discarded * @param to index past last value to be discarded */ private void discardValues(int from, int to) { for (int i = from; i < to; i++) { m_baseArray[i] = null; } } /** * Increase the size of the array to at least a specified size. The array * will normally be at least doubled in size, but if a maximum size * increment was specified in the constructor and the value is less than * the current size of the array, the maximum increment will be used * instead. If the requested size requires more than the default growth, * the requested size overrides the normal growth and determines the size * of the replacement array. * * @param required new minimum size required */ private void growArray(int required) { int size = Math.max(required, m_countLimit + Math.min(m_countLimit, m_maximumGrowth)); String[] grown = new String[size]; resizeCopy(m_baseArray, grown); m_countLimit = size; m_baseArray = grown; } /** * Ensure that the array has the capacity for at least the specified * number of values. * * @param min minimum capacity to be guaranteed */ public final void ensureCapacity(int min) { if (min > m_countLimit) { growArray(min); } } /** * Add a value at the end of the array. * * @param value value to be added */ public void add(String value) { int index = getAddIndex(); m_baseArray[index] = value; } /** * Remove some number of values from the end of the array. * * @param count number of values to be removed * @exception ArrayIndexOutOfBoundsException on attempt to remove more than * the count present */ public void remove(int count) { int start = m_countPresent - count; if (start >= 0) { discardValues(start, m_countPresent); m_countPresent = start; } else { throw new ArrayIndexOutOfBoundsException ("Attempt to remove too many values from array"); } } /** * Get a value from the array. * * @param index index of value to be returned * @return value from stack * @exception ArrayIndexOutOfBoundsException on attempt to access outside * valid range */ public String get(int index) { if (m_countPresent > index) { return m_baseArray[index]; } else { throw new ArrayIndexOutOfBoundsException ("Attempt to access past end of array"); } } /** * Constructs and returns a simple array containing the same data as held * in this array. * * @return array containing a copy of the data */ public String[] toArray() { String[] copy = new String[m_countPresent]; System.arraycopy(m_baseArray, 0, copy, 0, m_countPresent); return copy; } /** * Duplicates the object with the generic call. * * @return a copy of the object */ public Object clone() { return new StringArray(this); } /** * Gets the array offset for appending a value to those in the array. If the * underlying array is full, it is grown by the appropriate size increment * so that the index value returned is always valid for the array in use by * the time of the return. * * @return index position for added element */ private int getAddIndex() { int index = m_countPresent++; if (m_countPresent > m_countLimit) { growArray(m_countPresent); } return index; } /** * Get the number of values currently present in the array. * * @return count of values present */ public int size() { return m_countPresent; } /** * Check if array is empty. * * @return true if array empty, false if not */ public boolean isEmpty() { return m_countPresent == 0; } /** * Set the array to the empty state. */ public void clear() { discardValues(0, m_countPresent); m_countPresent = 0; } }libjibx-java-1.1.6a/build/src/org/jibx/runtime/impl/StringIntHashMap.java0000644000175000017500000003572710263166014026202 0ustar moellermoeller/* * Copyright (c) 2000-2005, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime.impl; /** * Hash map using String values as keys mapped to primitive * int values. This implementation is unsynchronized in order to * provide the best possible performance for typical usage scenarios, so * explicit synchronization must be implemented by a wrapper class or directly * by the application in cases where instances are modified in a multithreaded * environment. The map implementation is not very efficient when resizing, but * works well when the size of the map is known in advance. * * @author Dennis M. Sosnoski * @version 1.1 */ public class StringIntHashMap { /** Default value returned when key not found in table. */ public static final int DEFAULT_NOT_FOUND = Integer.MIN_VALUE; /** Default fill fraction allowed before growing table. */ protected static final double DEFAULT_FILL = 0.3d; /** Minimum size used for hash table. */ protected static final int MINIMUM_SIZE = 31; /** Fill fraction allowed for this hash table. */ protected final double m_fillFraction; /** Number of entries present in table. */ protected int m_entryCount; /** Entries allowed before growing table. */ protected int m_entryLimit; /** Size of array used for keys. */ protected int m_arraySize; /** Offset added (modulo table size) to slot number on collision. */ protected int m_hitOffset; /** Array of key table slots. */ protected String[] m_keyTable; /** Array of value table slots. */ protected int[] m_valueTable; /** Value returned when key not found in table. */ protected int m_notFoundValue; /** * Constructor with full specification. * * @param count number of values to assume in initial sizing of table * @param fill fraction full allowed for table before growing * @param miss value returned when key not found in table */ public StringIntHashMap(int count, double fill, int miss) { // check the passed in fill fraction if (fill <= 0.0d || fill >= 1.0d) { throw new IllegalArgumentException("fill value out of range"); } m_fillFraction = fill; // compute initial table size (ensuring odd) m_arraySize = Math.max((int)(count / m_fillFraction), MINIMUM_SIZE); m_arraySize += (m_arraySize + 1) % 2; // initialize the table information m_entryLimit = (int)(m_arraySize * m_fillFraction); m_hitOffset = m_arraySize / 2; m_keyTable = new String[m_arraySize]; m_valueTable = new int[m_arraySize]; m_notFoundValue = miss; } /** * Constructor with size and fill fraction specified. Uses default hash * technique and value returned when key not found in table. * * @param count number of values to assume in initial sizing of table * @param fill fraction full allowed for table before growing */ public StringIntHashMap(int count, double fill) { this(count, fill, DEFAULT_NOT_FOUND); } /** * Constructor with only size supplied. Uses default hash technique and * values for fill fraction and value returned when key not found in table. * * @param count number of values to assume in initial sizing of table */ public StringIntHashMap(int count) { this(count, DEFAULT_FILL); } /** * Default constructor. */ public StringIntHashMap() { this(0, DEFAULT_FILL); } /** * Copy (clone) constructor. * * @param base instance being copied */ public StringIntHashMap(StringIntHashMap base) { // copy the basic occupancy information m_fillFraction = base.m_fillFraction; m_entryCount = base.m_entryCount; m_entryLimit = base.m_entryLimit; m_arraySize = base.m_arraySize; m_hitOffset = base.m_hitOffset; m_notFoundValue = base.m_notFoundValue; // copy table of items m_keyTable = new String[m_arraySize]; System.arraycopy(base.m_keyTable, 0, m_keyTable, 0, m_arraySize); m_valueTable = new int[m_arraySize]; System.arraycopy(base.m_valueTable, 0, m_valueTable, 0, m_arraySize); } /** * Step the slot number for an entry. Adds the collision offset (modulo * the table size) to the slot number. * * @param slot slot number to be stepped * @return stepped slot number */ private final int stepSlot(int slot) { return (slot + m_hitOffset) % m_arraySize; } /** * Find free slot number for entry. Starts at the slot based directly * on the hashed key value. If this slot is already occupied, it adds * the collision offset (modulo the table size) to the slot number and * checks that slot, repeating until an unused slot is found. * * @param slot initial slot computed from key * @return slot at which entry was added */ private final int freeSlot(int slot) { while (m_keyTable[slot] != null) { slot = stepSlot(slot); } return slot; } /** * Standard base slot computation for a key. * * @param key key value to be computed * @return base slot for key */ private final int standardSlot(Object key) { return (key.hashCode() & Integer.MAX_VALUE) % m_arraySize; } /** * Standard find key in table. This method may be used directly for key * lookup using either the hashCode() method defined for the * key objects or the System.identityHashCode() method, and * either the equals() method defined for the key objects or * the == operator, as selected by the hash technique * constructor parameter. To implement a hash class based on some other * methods of hashing and/or equality testing, define a separate method in * the subclass with a different name and use that method instead. This * avoids the overhead caused by overrides of a very heavily used method. * * @param key to be found in table * @return index of matching key, or -index-1 of slot to be * used for inserting key in table if not already present (always negative) */ private int standardFind(Object key) { // find the starting point for searching table int slot = standardSlot(key); // scan through table to find target key while (m_keyTable[slot] != null) { // check if we have a match on target key if (m_keyTable[slot].equals(key)) { return slot; } else { slot = stepSlot(slot); } } return -slot-1; } /** * Reinsert an entry into the hash map. This is used when the table is being * directly modified, and does not adjust the count present or check the * table capacity. * * @param slot position of entry to be reinserted into hash map * @return true if the slot number used by the entry has has * changed, false if not */ private boolean reinsert(int slot) { String key = m_keyTable[slot]; m_keyTable[slot] = null; return assignSlot(key, m_valueTable[slot]) != slot; } /** * Internal remove pair from the table. Removes the pair from the table * by setting the key entry to null and adjusting the count * present, then chains through the table to reinsert any other pairs * which may have collided with the removed pair. If the associated value * is an object reference, it should be set to null before * this method is called. * * @param slot index number of pair to be removed */ protected void internalRemove(int slot) { // delete pair from table m_keyTable[slot] = null; m_entryCount--; while (m_keyTable[(slot = stepSlot(slot))] != null) { // reinsert current entry in table to fill holes reinsert(slot); } } /** * Restructure the table. This is used when the table is increasing or * decreasing in size, and works directly with the old table representation * arrays. It inserts pairs from the old arrays directly into the table * without adjusting the count present or checking the table size. * * @param keys array of keys * @param values array of values */ private void restructure(String[] keys, int[] values) { for (int i = 0; i < keys.length; i++) { if (keys[i] != null) { assignSlot(keys[i], values[i]); } } } /** * Assign slot for entry. Starts at the slot found by the hashed key value. * If this slot is already occupied, it steps the slot number and checks the * resulting slot, repeating until an unused slot is found. This method does * not check for duplicate keys, so it should only be used for internal * reordering of the tables. * * @param key to be added to table * @param value associated value for key * @return slot at which entry was added */ private int assignSlot(String key, int value) { int offset = freeSlot(standardSlot(key)); m_keyTable[offset] = key; m_valueTable[offset] = value; return offset; } /** * Add an entry to the table. If the key is already present in the table, * this replaces the existing value associated with the key. * * @param key key to be added to table (non- null) * @param value associated value for key * @return value previously associated with key, or reserved not found value * if key not previously present in table */ public int add(String key, int value) { // first validate the parameters if (key == null) { throw new IllegalArgumentException("null key not supported"); } else if (value == m_notFoundValue) { throw new IllegalArgumentException( "value matching not found return not supported"); } else { // check space available int min = m_entryCount + 1; if (min > m_entryLimit) { // find the array size required int size = m_arraySize; int limit = m_entryLimit; while (limit < min) { size = size * 2 + 1; limit = (int) (size * m_fillFraction); } // set parameters for new array size m_arraySize = size; m_entryLimit = limit; m_hitOffset = size / 2; // restructure for larger arrays String[] keys = m_keyTable; m_keyTable = new String[m_arraySize]; int[] values = m_valueTable; m_valueTable = new int[m_arraySize]; restructure(keys, values); } // find slot of table int offset = standardFind(key); if (offset >= 0) { // replace existing value for key int prior = m_valueTable[offset]; m_valueTable[offset] = value; return prior; } else { // add new pair to table m_entryCount++; offset = -offset - 1; m_keyTable[offset] = key; m_valueTable[offset] = value; return m_notFoundValue; } } } /** * Check if an entry is present in the table. This method is supplied to * support the use of values matching the reserved not found value. * * @param key key for entry to be found * @return true if key found in table, false * if not */ public final boolean containsKey(String key) { return standardFind(key) >= 0; } /** * Find an entry in the table. * * @param key key for entry to be returned * @return value for key, or reserved not found value if key not found */ public final int get(String key) { int slot = standardFind(key); if (slot >= 0) { return m_valueTable[slot]; } else { return m_notFoundValue; } } /** * Remove an entry from the table. If multiple entries are present with the * same key value, only the first one found will be removed. * * @param key key to be removed from table * @return value associated with removed key, or reserved not found value if * key not found in table */ public int remove(String key) { int slot = standardFind(key); if (slot >= 0) { int value = m_valueTable[slot]; internalRemove(slot); return value; } else { return m_notFoundValue; } } /** * Construct a copy of the table. * * @return shallow copy of table */ public Object clone() { return new StringIntHashMap(this); } }libjibx-java-1.1.6a/build/src/org/jibx/runtime/impl/USASCIIEscaper.java0000644000175000017500000001673710071714404025421 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime.impl; import java.io.IOException; import java.io.Writer; import org.jibx.runtime.ICharacterEscaper; /** * Handler for writing ASCII output stream. This code is specifically for XML * 1.0 and would require changes for XML 1.1 (to handle the added legal * characters, rather than throwing an exception). * * @author Dennis M. Sosnoski * @version 1.0 */ public class USASCIIEscaper implements ICharacterEscaper { /** Singleton instance of class. */ private static final USASCIIEscaper s_instance = new USASCIIEscaper(); /** * Private constructor to prevent external creation. */ private USASCIIEscaper() {} /** * Write attribute value with character entity substitutions. This assumes * that attributes use the regular quote ('"') delimitor. * * @param text attribute value text * @param writer sink for output text * @throws IOException on error writing to document */ public void writeAttribute(String text, Writer writer) throws IOException { int mark = 0; for (int i = 0; i < text.length(); i++) { char chr = text.charAt(i); if (chr == '"') { writer.write(text, mark, i-mark); mark = i+1; writer.write("""); } else if (chr == '&') { writer.write(text, mark, i-mark); mark = i+1; writer.write("&"); } else if (chr == '<') { writer.write(text, mark, i-mark); mark = i+1; writer.write("<"); } else if (chr == '>' && i > 2 && text.charAt(i-1) == ']' && text.charAt(i-2) == ']') { writer.write(text, mark, i-mark-2); mark = i+1; writer.write("]]>"); } else if (chr < 0x20) { if (chr != 0x9 && chr != 0xA && chr != 0xD) { throw new IOException("Illegal character code 0x" + Integer.toHexString(chr) + " in attribute value text"); } } else if (chr > 0x7F) { writer.write(text, mark, i-mark); mark = i+1; if (chr > 0xD7FF && (chr < 0xE000 || chr == 0xFFFE || chr == 0xFFFF || chr > 0x10FFFF)) { throw new IOException("Illegal character code 0x" + Integer.toHexString(chr) + " in attribute value text"); } writer.write("&#x"); writer.write(Integer.toHexString(chr)); writer.write(';'); } } writer.write(text, mark, text.length()-mark); } /** * Write content value with character entity substitutions. * * @param text content value text * @param writer sink for output text * @throws IOException on error writing to document */ public void writeContent(String text, Writer writer) throws IOException { int mark = 0; for (int i = 0; i < text.length(); i++) { char chr = text.charAt(i); if (chr == '&') { writer.write(text, mark, i-mark); mark = i+1; writer.write("&"); } else if (chr == '<') { writer.write(text, mark, i-mark); mark = i+1; writer.write("<"); } else if (chr == '>' && i > 2 && text.charAt(i-1) == ']' && text.charAt(i-2) == ']') { writer.write(text, mark, i-mark-2); mark = i+1; writer.write("]]>"); } else if (chr < 0x20) { if (chr != 0x9 && chr != 0xA && chr != 0xD) { throw new IOException("Illegal character code 0x" + Integer.toHexString(chr) + " in content text"); } } else if (chr > 0x7F) { writer.write(text, mark, i-mark); mark = i+1; if (chr > 0xD7FF && (chr < 0xE000 || chr == 0xFFFE || chr == 0xFFFF || chr > 0x10FFFF)) { throw new IOException("Illegal character code 0x" + Integer.toHexString(chr) + " in content text"); } writer.write("&#x"); writer.write(Integer.toHexString(chr)); writer.write(';'); } } writer.write(text, mark, text.length()-mark); } /** * Write CDATA to document. This writes the beginning and ending sequences * for a CDATA section as well as the actual text, verifying that only * characters allowed by the encoding are included in the text. * * @param text content value text * @param writer sink for output text * @throws IOException on error writing to document */ public void writeCData(String text, Writer writer) throws IOException { writer.write("' && i > 2 && text.charAt(i-1) == ']' && text.charAt(i-2) == ']') { throw new IOException("Sequence \"]]>\" is not allowed " + "within CDATA section text"); } else if (chr < 0x20) { if (chr != 0x9 && chr != 0xA && chr != 0xD) { throw new IOException("Illegal character code 0x" + Integer.toHexString(chr) + " in CDATA section"); } } else if (chr >= 0x80) { throw new IOException("Character code 0x" + Integer.toHexString(chr) + " not supported by encoding in CDATA section"); } } writer.write(text); writer.write("]]>"); } /** * Get instance of escaper. * * @return escaper instance */ public static ICharacterEscaper getInstance() { return s_instance; } }libjibx-java-1.1.6a/build/src/org/jibx/runtime/impl/UTF8Escaper.java0000644000175000017500000001600410231200600025014 0ustar moellermoeller/* Copyright (c) 2004-2005, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime.impl; import java.io.IOException; import java.io.Writer; import org.jibx.runtime.ICharacterEscaper; /** * Handler for writing UTF output stream (for any form of UTF, despite the * name). This code is specifically for XML 1.0 and would require changes for * XML 1.1 (to handle the added legal characters, rather than throwing an * exception). * * @author Dennis M. Sosnoski * @version 1.0 */ public class UTF8Escaper implements ICharacterEscaper { /** Singleton instance of class. */ private static final UTF8Escaper s_instance = new UTF8Escaper(); /** * Private constructor to prevent external creation. */ private UTF8Escaper() {} /** * Write attribute value with character entity substitutions. This assumes * that attributes use the regular quote ('"') delimitor. * * @param text attribute value text * @param writer sink for output text * @throws IOException on error writing to document */ public void writeAttribute(String text, Writer writer) throws IOException { int mark = 0; for (int i = 0; i < text.length(); i++) { char chr = text.charAt(i); if (chr == '"') { writer.write(text, mark, i-mark); mark = i+1; writer.write("""); } else if (chr == '&') { writer.write(text, mark, i-mark); mark = i+1; writer.write("&"); } else if (chr == '<') { writer.write(text, mark, i-mark); mark = i+1; writer.write("<"); } else if (chr == '>' && i > 2 && text.charAt(i-1) == ']' && text.charAt(i-2) == ']') { writer.write(text, mark, i-mark-2); mark = i+1; writer.write("]]>"); } else if (chr < 0x20) { if (chr != 0x9 && chr != 0xA && chr != 0xD) { throw new IOException("Illegal character code 0x" + Integer.toHexString(chr) + " in attribute value text"); } } else if (chr > 0xD7FF && (chr < 0xE000 || chr == 0xFFFE || chr == 0xFFFF || chr > 0x10FFFF)) { throw new IOException("Illegal character code 0x" + Integer.toHexString(chr) + " in attribute value text"); } } writer.write(text, mark, text.length()-mark); } /** * Write content value with character entity substitutions. * * @param text content value text * @param writer sink for output text * @throws IOException on error writing to document */ public void writeContent(String text, Writer writer) throws IOException { int mark = 0; for (int i = 0; i < text.length(); i++) { char chr = text.charAt(i); if (chr == '&') { writer.write(text, mark, i-mark); mark = i+1; writer.write("&"); } else if (chr == '<') { writer.write(text, mark, i-mark); mark = i+1; writer.write("<"); } else if (chr == '>' && i > 2 && text.charAt(i-1) == ']' && text.charAt(i-2) == ']') { writer.write(text, mark, i-mark-2); mark = i+1; writer.write("]]>"); } else if (chr < 0x20) { if (chr != 0x9 && chr != 0xA && chr != 0xD) { throw new IOException("Illegal character code 0x" + Integer.toHexString(chr) + " in content text"); } } else if (chr > 0xD7FF && (chr < 0xE000 || chr == 0xFFFE || chr == 0xFFFF || chr > 0x10FFFF)) { throw new IOException("Illegal character code 0x" + Integer.toHexString(chr) + " in content text"); } } writer.write(text, mark, text.length()-mark); } /** * Write CDATA to document. This writes the beginning and ending sequences * for a CDATA section as well as the actual text, verifying that only * characters allowed by the encoding are included in the text. * * @param text content value text * @param writer sink for output text * @throws IOException on error writing to document */ public void writeCData(String text, Writer writer) throws IOException { writer.write("' && i > 2 && text.charAt(i-1) == ']' && text.charAt(i-2) == ']') { throw new IOException("Sequence \"]]>\" is not allowed " + "within CDATA section text"); } else if (chr < 0x20) { if (chr != 0x9 && chr != 0xA && chr != 0xD) { throw new IOException("Illegal character code 0x" + Integer.toHexString(chr) + " in CDATA section"); } } else if (chr > 0xD7FF && (chr < 0xE000 || chr == 0xFFFE || chr == 0xFFFF)) { throw new IOException("Illegal character code 0x" + Integer.toHexString(chr) + " in CDATA section"); } } writer.write(text); writer.write("]]>"); } /** * Get instance of escaper. * * @return escaper instance */ public static ICharacterEscaper getInstance() { return s_instance; } }libjibx-java-1.1.6a/build/src/org/jibx/runtime/impl/UTF8StreamWriter.java0000644000175000017500000003501210737003370026102 0ustar moellermoeller/* Copyright (c) 2004-2007, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime.impl; import java.io.IOException; import org.jibx.runtime.IXMLWriter; /** * Handler for marshalling text document to a UTF-8 output stream. * * @author Dennis M. Sosnoski */ public class UTF8StreamWriter extends StreamWriterBase { /** Conversion buffer for prefixes; */ private byte[] m_converts; /** * Constructor with supplied buffer. * * @param uris ordered array of URIs for namespaces used in document (must * be constant; the value in position 0 must always be the empty string "", * and the value in position 1 must always be the XML namespace * "http://www.w3.org/XML/1998/namespace") * @param buffer output data buffer */ public UTF8StreamWriter(String[] uris, byte[] buffer) { super("UTF-8", uris, buffer); defineNamespace(0, ""); defineNamespace(1, "xml"); } /** * Constructor creating a buffer of the default size. * * @param uris ordered array of URIs for namespaces used in document (must * be constant; the value in position 0 must always be the empty string "", * and the value in position 1 must always be the XML namespace * "http://www.w3.org/XML/1998/namespace") */ public UTF8StreamWriter(String[] uris) { this(uris, new byte[DEFAULT_BUFFER_SIZE]); } /** * Copy constructor. This takes the stream from a supplied instance, while * setting a new array of namespace URIs. It's intended for use when * invoking one binding from within another binding. * * @param base instance to be used as base for writer * @param uris ordered array of URIs for namespaces used in document * (see {@link #UTF8StreamWriter(String[])}) */ public UTF8StreamWriter(UTF8StreamWriter base, String[] uris) { super(base, uris); defineNamespace(0, ""); defineNamespace(1, "xml"); } /** * Write markup text to output. Markup text can be written directly to the * output without the need for any escaping, but still needs to be properly * encoded. * * @param text markup text to be written * @throws IOException if error writing to document */ protected void writeMarkup(String text) throws IOException { int length = text.length(); makeSpace(length * 3); int fill = m_fillOffset; for (int i = 0; i < length; i++) { char chr = text.charAt(i); if (chr > 0x7F) { if (chr > 0x7FF) { m_buffer[fill++] = (byte)(0xE0 + (chr >> 12)); m_buffer[fill++] = (byte)(0x80 + ((chr >> 6) & 0x3F)); m_buffer[fill++] = (byte)(0x80 + (chr & 0x3F)); } else { m_buffer[fill++] = (byte)(0xC0 + (chr >> 6)); m_buffer[fill++] = (byte)(0x80 + (chr & 0x3F)); } } else { m_buffer[fill++] = (byte)chr; } } m_fillOffset = fill; } /** * Write markup character to output. Markup text can be written directly to * the output without the need for any escaping, but still needs to be * properly encoded. * * @param chr markup character to be written * @throws IOException if error writing to document */ protected void writeMarkup(char chr) throws IOException { makeSpace(3); if (chr > 0x7F) { if (chr > 0x7FF) { m_buffer[m_fillOffset++] = (byte)(0xE0 + (chr >> 12)); m_buffer[m_fillOffset++] = (byte)(0x80 + ((chr >> 6) & 0x3F)); m_buffer[m_fillOffset++] = (byte)(0x80 + (chr & 0x3F)); } else { m_buffer[m_fillOffset++] = (byte)(0xC0 + (chr >> 6)); m_buffer[m_fillOffset++] = (byte)(0x80 + (chr & 0x3F)); } } else { m_buffer[m_fillOffset++] = (byte)chr; } } /** * Report that namespace has been defined. * * @param index namespace URI index number * @param prefix prefix used for namespace */ protected void defineNamespace(int index, String prefix) { int limit = prefix.length() * 3; if (m_converts == null) { m_converts = new byte[limit]; } else if (limit > m_converts.length) { m_converts = new byte[limit]; } int fill = 0; for (int i = 0; i < prefix.length(); i++) { char chr = prefix.charAt(i); if (chr > 0x7F) { if (chr > 0x7FF) { m_converts[fill++] = (byte)(0xE0 + (chr >> 12)); m_converts[fill++] = (byte)(0x80 + ((chr >> 6) & 0x3F)); m_converts[fill++] = (byte)(0x80 + (chr & 0x3F)); } else { m_converts[fill++] = (byte)(0xC0 + (chr >> 6)); m_converts[fill++] = (byte)(0x80 + (chr & 0x3F)); } } else { m_converts[fill++] = (byte)chr; } } byte[] trim; if (fill > 0) { trim = new byte[fill+1]; System.arraycopy(m_converts, 0, trim, 0, fill); trim[fill] = ':'; } else { trim = new byte[0]; } if (index < m_prefixBytes.length) { m_prefixBytes[index] = trim; } else if (m_extensionBytes != null) { index -= m_prefixBytes.length; for (int i = 0; i < m_extensionBytes.length; i++) { int length = m_extensionBytes[i].length; if (index < length) { m_extensionBytes[i][index] = trim; } else { index -= length; } } } else { throw new IllegalArgumentException("Index out of range"); } } /** * Write attribute text to output. This needs to write the text with any * appropriate escaping. * * @param text attribute value text to be written * @throws IOException if error writing to document */ protected void writeAttributeText(String text) throws IOException { int length = text.length(); makeSpace(length * 6); int fill = m_fillOffset; for (int i = 0; i < length; i++) { char chr = text.charAt(i); if (chr == '"') { fill = writeEntity(QUOT_ENTITY, fill); } else if (chr == '&') { fill = writeEntity(AMP_ENTITY, fill); } else if (chr == '<') { fill = writeEntity(LT_ENTITY, fill); } else if (chr == '>' && i > 2 && text.charAt(i-1) == ']' && text.charAt(i-2) == ']') { m_buffer[fill++] = (byte)']'; m_buffer[fill++] = (byte)']'; fill = writeEntity(GT_ENTITY, fill); } else if (chr < 0x20) { if (chr != 0x9 && chr != 0xA && chr != 0xD) { throw new IOException("Illegal character code 0x" + Integer.toHexString(chr) + " in attribute value text"); } else { m_buffer[fill++] = (byte)chr; } } else { if (chr > 0x7F) { if (chr > 0x7FF) { if (chr > 0xD7FF && (chr < 0xE000 || chr == 0xFFFE || chr == 0xFFFF || chr > 0x10FFFF)) { throw new IOException("Illegal character code 0x" + Integer.toHexString(chr) + " in attribute value text"); } else { m_buffer[fill++] = (byte)(0xE0 + (chr >> 12)); m_buffer[fill++] = (byte)(0x80 + ((chr >> 6) & 0x3F)); m_buffer[fill++] = (byte)(0x80 + (chr & 0x3F)); } } else { m_buffer[fill++] = (byte)(0xC0 + (chr >> 6)); m_buffer[fill++] = (byte)(0x80 + (chr & 0x3F)); } } else { m_buffer[fill++] = (byte)chr; } } } m_fillOffset = fill; } /** * Write ordinary character data text content to document. * * @param text content value text * @throws IOException on error writing to document */ public void writeTextContent(String text) throws IOException { flagTextContent(); int length = text.length(); makeSpace(length * 5); int fill = m_fillOffset; for (int i = 0; i < length; i++) { char chr = text.charAt(i); if (chr == '&') { fill = writeEntity(AMP_ENTITY, fill); } else if (chr == '<') { fill = writeEntity(LT_ENTITY, fill); } else if (chr == '>' && i > 2 && text.charAt(i-1) == ']' && text.charAt(i-2) == ']') { fill = writeEntity(GT_ENTITY, fill); } else if (chr < 0x20) { if (chr != 0x9 && chr != 0xA && chr != 0xD) { throw new IOException("Illegal character code 0x" + Integer.toHexString(chr) + " in content text"); } else { m_buffer[fill++] = (byte)chr; } } else { if (chr > 0x7F) { if (chr > 0x7FF) { if (chr > 0xD7FF && (chr < 0xE000 || chr == 0xFFFE || chr == 0xFFFF || chr > 0x10FFFF)) { throw new IOException("Illegal character code 0x" + Integer.toHexString(chr) + " in content text"); } else { m_buffer[fill++] = (byte)(0xE0 + (chr >> 12)); m_buffer[fill++] = (byte)(0x80 + ((chr >> 6) & 0x3F)); m_buffer[fill++] = (byte)(0x80 + (chr & 0x3F)); } } else { m_buffer[fill++] = (byte)(0xC0 + (chr >> 6)); m_buffer[fill++] = (byte)(0x80 + (chr & 0x3F)); } } else { m_buffer[fill++] = (byte)chr; } } } m_fillOffset = fill; } /** * Write CDATA text to document. * * @param text content value text * @throws IOException on error writing to document */ public void writeCData(String text) throws IOException { flagTextContent(); int length = text.length(); makeSpace(length * 3 + 12); int fill = m_fillOffset; fill = writeEntity(LT_CDATASTART, fill); for (int i = 0; i < length; i++) { char chr = text.charAt(i); if (chr == '>' && i > 2 && text.charAt(i-1) == ']' && text.charAt(i-2) == ']') { throw new IOException("Sequence \"]]>\" is not allowed " + "within CDATA section text"); } else if (chr < 0x20) { if (chr != 0x9 && chr != 0xA && chr != 0xD) { throw new IOException("Illegal character code 0x" + Integer.toHexString(chr) + " in content text"); } else { m_buffer[fill++] = (byte)chr; } } else { if (chr > 0x7F) { if (chr > 0x7FF) { if (chr > 0xD7FF && (chr < 0xE000 || chr == 0xFFFE || chr == 0xFFFF || chr > 0x10FFFF)) { throw new IOException("Illegal character code 0x" + Integer.toHexString(chr) + " in CDATA section text"); } else { m_buffer[fill++] = (byte)(0xE0 + (chr >> 12)); m_buffer[fill++] = (byte)(0x80 + ((chr >> 6) & 0x3F)); m_buffer[fill++] = (byte)(0x80 + (chr & 0x3F)); } } else { m_buffer[fill++] = (byte)(0xC0 + (chr >> 6)); m_buffer[fill++] = (byte)(0x80 + (chr & 0x3F)); } } else { m_buffer[fill++] = (byte)chr; } } } m_fillOffset = writeEntity(LT_CDATAEND, fill); } /** * Create a child writer instance to be used for a separate binding. The * child writer inherits the stream and encoding from this writer, while * using the supplied namespace URIs. * * @param uris ordered array of URIs for namespaces used in document * (see {@link #UTF8StreamWriter(String[])}) * @return child writer * @throws IOException */ public IXMLWriter createChildWriter(String[] uris) throws IOException { flagContent(); return new UTF8StreamWriter(this, uris); } }libjibx-java-1.1.6a/build/src/org/jibx/runtime/impl/UnmarshallingContext.java0000644000175000017500000036667111003053146027167 0ustar moellermoeller/* Copyright (c) 2002-2007, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime.impl; import java.io.InputStream; import java.io.Reader; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import org.jibx.runtime.IBindingFactory; import org.jibx.runtime.IUnmarshaller; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.IXMLReader; import org.jibx.runtime.JiBXConstrainedParseException; import org.jibx.runtime.JiBXException; import org.jibx.runtime.JiBXParseException; import org.jibx.runtime.Utility; /** * Pull parser wrapper supplying convenience methods for access. Most of * these methods are designed for use in code generated by the binding * generator. * * @author Dennis M. Sosnoski */ public class UnmarshallingContext implements IUnmarshallingContext { /** Starting size for object stack. */ private static final int INITIAL_STACK_SIZE = 20; /** Empty array of strings. */ private static final String[] EMPTY_STRING_ARRAY = new String[0]; /** Factory for creating XML readers. */ private static final IXMLReaderFactory s_readerFactory; static { String prop = null; try { System.getProperty("org.jibx.runtime.impl.parser"); } catch (SecurityException e) { /* exception just means the value will be null */ } if (prop == null) { // try XMLPull parser factory first IXMLReaderFactory fact = null; try { fact = createReaderFactory ("org.jibx.runtime.impl.XMLPullReaderFactory"); } catch (Throwable e) { fact = createReaderFactory ("org.jibx.runtime.impl.StAXReaderFactory"); } s_readerFactory = fact; } else { // try loading factory class specified by property s_readerFactory = createReaderFactory(prop); } } /** Binding factory used to create this unmarshaller. */ private IBindingFactory m_factory; /** Parser in use. */ private IXMLReader m_reader; // // Structures organized by mapping index number. Each unmarshaller in the // binding definition is assigned a unique index number by the binding // compiler. This includes both generated unmarshallers (from non-abstract // definitions) and user-defined unmarshallers. Instances of // the unmarshaller classes are created as needed. The indexes for the // unmarshallers corresponding to named mappings always precede those for // internal mappings in the list. /** Unmarshaller classes for mapping definition (null for mappings out of context). */ protected String[] m_unmarshallerClasses; /** Unmarshallers for classes in mapping definition (lazy create of actual unmarshaller instances) */ protected IUnmarshaller[] m_unmarshallers; // // Structures organized by mapping /** Namespaces for elements associated with class mappings. */ protected String[] m_namespaces; /** Names for elements associated with class mappings. */ protected String[] m_names; /** Number of classes with global unmarshallers. */ protected int m_globalCount; /** ID maps for finding references. */ protected HashMap[] m_idMaps; /** Class names of referenced types (null unless class-specific IDs used). */ protected String[] m_idClasses; /** Current unmarshalling stack depth. */ protected int m_stackDepth; /** Stack of objects being unmarshalled. */ protected Object[] m_objectStack; /** Mapping from element name to class index. If only a single namespace is defined for a particular local name the value for that name in this table is the Integer index of the associated class. If multiple namespaces are defined using the same local name the value is an ArrayList of Integer indexes. This is a high-overhead construct, so lazy construction is used - it's built the first time needed, then kept up to date thereafter. */ protected HashMap m_unmarshalMap; /** Wrapped index values used with unmarshalling map. */ protected Integer[] m_indexes; /** Last IDREF value parsed. */ protected String m_idref; /** User context object (not used by JiBX, only for user convenience). */ protected Object m_userContext; /** * Parser factory class loader method. This is used during initialization to * check that a particular factory class is usable. * * @param cname class name * @return reader factory instance * @throws RuntimeException on error creating class instance */ private static IXMLReaderFactory createReaderFactory(String cname) { // try loading factory class from context loader Class clas = null; ClassLoader loader = Thread.currentThread().getContextClassLoader(); if (loader != null) { try { clas = loader.loadClass(cname); } catch (ClassNotFoundException e) { /* deliberately empty */ } } if (clas == null) { // next try the class loader that loaded the unmarshaller interface try { loader = IUnmarshallingContext.class.getClassLoader(); clas = loader.loadClass(cname); } catch (ClassNotFoundException e) { throw new RuntimeException ("Unable to specified parser factory class " + cname); } } if (! (IXMLReaderFactory.class.isAssignableFrom(clas))) { throw new RuntimeException("Specified parser factory class " + cname + " does not implement IXMLReaderFactory interface"); } // use static method to create parser factory class instance try { Method meth = clas.getMethod("getInstance", null); return (IXMLReaderFactory)meth.invoke(null, null); } catch (NoSuchMethodException e) { throw new RuntimeException("Specified parser factory class " + cname + " does not define static getInstance() method"); } catch (IllegalAccessException e) { throw new RuntimeException("Error on parser factory class " + cname + " getInstance() method call: " + e.getMessage()); } catch (InvocationTargetException e) { throw new RuntimeException("Error on parser factory class " + cname + " getInstance() method call: " + e.getMessage()); } } /** * Constructor. Builds the actual parser and initializes internal data * structures. * * @param nmap number of mapping definitions included * @param umcs names of unmarshaller classes for indexes with fixed * unmarshallers (as opposed to mapping slots, which may be overridden; * reference kept, must be constant) * @param nss namespaces for elements of classes with global definitions * @param names names for elements of classes with global definitions * @param idcs array of class names with IDs (null if no IDs or * global IDs) * @param ifact binding factory creating this unmarshaller */ public UnmarshallingContext(int nmap, String[] umcs, String[] nss, String[] names, String[] idcs, IBindingFactory ifact) { // initialize internal unmarshaller state m_globalCount = nss.length; m_unmarshallerClasses = new String[nmap]; System.arraycopy(umcs, 0, m_unmarshallerClasses, 0, umcs.length); m_unmarshallers = new IUnmarshaller[nmap]; m_namespaces = new String[nmap]; System.arraycopy(nss, 0, m_namespaces, 0, nss.length); m_names = new String[nmap]; System.arraycopy(names, 0, m_names, 0, names.length); m_idClasses = idcs; int size = idcs == null ? 1 : idcs.length; m_idMaps = new HashMap[size]; m_objectStack = new Object[INITIAL_STACK_SIZE]; m_factory = ifact; } /** * Default constructor. This can be used for creating a context outside of * the generated code for special purposes. */ public UnmarshallingContext() { this(0, EMPTY_STRING_ARRAY, EMPTY_STRING_ARRAY, EMPTY_STRING_ARRAY, EMPTY_STRING_ARRAY, null); } /** * Build name with optional namespace. Just returns the appropriate * name format. * * @param ns namespace URI of name * @param name local name part of name * @return formatted name string */ public static String buildNameString(String ns, String name) { if (ns == null || "".equals(ns)) { return "\"" + name + "\""; } else { return "\"{" + ns + "}" + name + "\""; } } /** * Build current element name, with optional namespace. * * @return formatted name string */ public String currentNameString() { return buildNameString(m_reader.getNamespace(), m_reader.getName()); } /** * Build current parse input position description. * * @return text description of current parse position */ public String buildPositionString() { return m_reader.buildPositionString(); } /** * Throw exception for expected element start tag not found. * * @param ns namespace URI of name * @param name local name part of name * @exception JiBXException always thrown */ public void throwStartTagNameError(String ns, String name) throws JiBXException { throw new JiBXException("Expected " + buildNameString(ns, name) + " start tag, found " + currentNameString() + " start tag " + buildPositionString()); } /** * Throw exception for expected element end tag not found. * * @param ns namespace URI of name * @param name local name part of name * @exception JiBXException always thrown */ public void throwEndTagNameError(String ns, String name) throws JiBXException { throw new JiBXException("Expected " + buildNameString(ns, name) + " end tag, found " + currentNameString() + " end tag " + buildPositionString()); } /** * Throw exception including a name and position information. * * @param msg leading message text * @param ns namespace URI of name * @param name local name part of name * @exception JiBXException always thrown */ public void throwNameException(String msg, String ns, String name) throws JiBXException { throw new JiBXException(msg + buildNameString(ns, name) + buildPositionString()); } /** * Advance to next parse item. This wraps the base parser call in order to * catch and handle exceptions. * * @exception JiBXException on any error (possibly wrapping other exception) */ private void advance() throws JiBXException { m_reader.nextToken(); } /** * Verify namespace. This is a simple utility method that allows multiple * representations for the empty namespace as a convenience for generated * code. * * @param ns namespace URI expected (may be null * or the empty string for the empty namespace) * @return true if the current namespace matches that * expected, false if not */ private boolean verifyNamespace(String ns) { if (ns == null || "".equals(ns)) { return m_reader.getNamespace().length() == 0; } else { return ns.equals(m_reader.getNamespace()); } } /** * Get attribute value from parser. * * @param ns namespace URI for expected attribute (may be null * or the empty string for the empty namespace) * @param name attribute name expected * @return attribute value text, or null if missing */ private String getAttributeValue(String ns, String name) { return m_reader.getAttributeValue(ns, name); } /** * Set document to be parsed from stream. This call is not part of the * interface definition, but is supplied to allow direct control of the * namespace processing by the compiler. The option of disabling namespaces * should be considered experimental and may not be supported in the future. * * @param ins stream supplying document data * @param name document name (null if unknown) * @param enc document input encoding, or null if to be * determined by parser * @param nsa enable namespace processing for parser flag * @throws JiBXException if error creating parser */ public void setDocument(InputStream ins, String name, String enc, boolean nsa) throws JiBXException { if (m_reader == null) { m_reader = s_readerFactory.createReader(ins, name, enc, nsa); } else { m_reader = s_readerFactory.recycleReader(m_reader, ins, name, enc); } reset(); } /** * Set document to be parsed from stream. * * @param ins stream supplying document data * @param enc document input encoding, or null if to be * determined by parser * @throws JiBXException if error creating parser */ public void setDocument(InputStream ins, String enc) throws JiBXException { setDocument(ins, null, enc, true); } /** * Set document to be parsed from reader. This call is not part of the * interface definition, but is supplied to allow direct control of the * namespace processing by the compiler. The option of disabling namespaces * should be considered experimental and may not be supported in the future. * * @param rdr reader supplying document data * @param name document name (null if unknown) * @param nsa enable namespace processing for parser flag * @throws JiBXException if error creating parser */ public void setDocument(Reader rdr, String name, boolean nsa) throws JiBXException { if (m_reader == null) { m_reader = s_readerFactory.createReader(rdr, name, nsa); } else { m_reader = s_readerFactory.recycleReader(m_reader, rdr, name); } reset(); } /** * Set document to be parsed from reader. * * @param rdr reader supplying document data * @throws JiBXException if error creating parser */ public void setDocument(Reader rdr) throws JiBXException { setDocument(rdr, null, true); } /** * Set named document to be parsed from stream. * * @param ins stream supplying document data * @param name document name * @param enc document input encoding, or null if to be * determined by parser * @throws JiBXException if error creating parser */ public void setDocument(InputStream ins, String name, String enc) throws JiBXException { setDocument(ins, name, enc, true); } /** * Set named document to be parsed from reader. * * @param rdr reader supplying document data * @param name document name * @throws JiBXException if error creating parser */ public void setDocument(Reader rdr, String name) throws JiBXException { setDocument(rdr, name, true); } /** * Set input document parse source directly. * * @param rdr document parse event reader */ public void setDocument(IXMLReader rdr) { m_reader = rdr; } /** * Initializes the context to use the same parser and document as another * unmarshalling context. This method is designed for use when an initial * context needs to create and invoke a secondary context in the course of * an unmarshalling operation. * * @param parent context supplying parser and document to be unmarshalled */ public void setFromContext(UnmarshallingContext parent) { m_factory = parent.m_factory; m_reader = parent.m_reader; } /** * Reset unmarshalling information. This releases all references to * unmarshalled objects and prepares the context for potential reuse. * It is automatically called when input is set. */ public void reset() { for (int i = 0; i < m_idMaps.length; i++) { m_idMaps[i] = null; } for (int i = m_globalCount; i < m_unmarshallers.length; i++) { m_namespaces[i] = null; m_names[i] = null; m_unmarshallers[i] = null; } m_unmarshalMap = null; m_idref = null; for (int i = 0; i < m_objectStack.length; i++) { m_objectStack[i] = null; } m_stackDepth = 0; m_userContext = null; } /** * Parse to start tag. Ignores character data seen prior to a start tag, but * throws exception if an end tag or the end of the document is seen before * a start tag. Leaves the parser positioned at the start tag. * * @return element name of start tag found * @throws JiBXException on any error (possibly wrapping other exception) */ public String toStart() throws JiBXException { if (m_reader.getEventType() == IXMLReader.START_TAG) { return m_reader.getName(); } while (true) { m_reader.next(); switch (m_reader.getEventType()) { case IXMLReader.START_TAG: return m_reader.getName(); case IXMLReader.END_TAG: throw new JiBXException("Expected start tag, " + "found end tag " + currentNameString() + " " + buildPositionString()); case IXMLReader.END_DOCUMENT: throw new JiBXException("Expected start tag, " + "found end of document " + buildPositionString()); } } } /** * Parse to end tag. Ignores character data seen prior to an end tag, but * throws exception if a start tag or the end of the document is seen before * an end tag. Leaves the parser positioned at the end tag. * * @return element name of end tag found * @throws JiBXException on any error (possibly wrapping other exception) */ public String toEnd() throws JiBXException { if (m_reader.getEventType() == IXMLReader.END_TAG) { return m_reader.getName(); } while (true) { m_reader.next(); switch (m_reader.getEventType()) { case IXMLReader.START_TAG: throw new JiBXException("Expected end tag, " + "found start tag " + currentNameString() + " " + buildPositionString()); case IXMLReader.END_TAG: return m_reader.getName(); case IXMLReader.END_DOCUMENT: throw new JiBXException("Expected end tag, " + "found end of document " + buildPositionString()); } } } /** * Parse to start or end tag. If not currently positioned at a start or end * tag this first advances the parse to the next start or end tag. * * @return parser event type for start tag or end tag * @throws JiBXException on any error (possibly wrapping other exception) */ public int toTag() throws JiBXException { int type = m_reader.getEventType(); while (type != IXMLReader.START_TAG && type != IXMLReader.END_TAG) { type = m_reader.next(); } return m_reader.getEventType(); } /** * Check if next tag is start of element. If not currently positioned at a * start or end tag this first advances the parse to the next start or end * tag. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param name element name expected * @return true if at start of element with supplied name, * false if not * @throws JiBXException on any error (possibly wrapping other exception) */ public boolean isAt(String ns, String name) throws JiBXException { int type = m_reader.getEventType(); while (type != IXMLReader.START_TAG && type != IXMLReader.END_TAG) { type = m_reader.next(); } return m_reader.getEventType() == IXMLReader.START_TAG && m_reader.getName().equals(name) && verifyNamespace(ns); } /** * Check if attribute is present on current start tag. Throws an exception * if not currently positioned on a start tag. * * @param ns namespace URI for expected attribute (may be null * or the empty string for the empty namespace) * @param name attribute name expected * @return true if named attribute is present, * false if not * @throws JiBXException on any error (possibly wrapping other exception) */ public boolean hasAttribute(String ns, String name) throws JiBXException { if (m_reader.getEventType() == IXMLReader.START_TAG) { return getAttributeValue(ns, name) != null; } else { throw new JiBXException("Error parsing document " + buildPositionString()); } } /** * Check if any of several attributes is present on current start tag. * Throws an exception if not currently positioned on a start tag. * * @param nss namespace URIs for expected attributes (each may be * null or the empty string for the empty namespace) * @param names attribute names expected * @return true if at least one of the named attributes is * present, false if not * @throws JiBXException on any error (possibly wrapping other exception) */ public boolean hasAnyAttribute(String[] nss, String[] names) throws JiBXException { if (m_reader.getEventType() == IXMLReader.START_TAG) { for (int i = 0; i < names.length; i++) { if (getAttributeValue(nss[i], names[i]) != null) { return true; } } return false; } else { throw new JiBXException("Error parsing document " + buildPositionString()); } } /** * Check that only allowed attributes are present on current start tag. * Throws an exception if not currently positioned on a start tag, or if * an attribute is present which is not in the list. * * @param nss namespace URIs for allowed attributes (each may be * null or the empty string for the empty namespace) * @param names alphabetical list of attribute names expected (duplicates * names are ordered by namespace URI) * @throws JiBXException on any error (possibly wrapping other exception) */ public void checkAllowedAttributes(String[] nss, String[] names) throws JiBXException { if (m_reader.getEventType() == IXMLReader.START_TAG) { int count = m_reader.getAttributeCount(); loop: for (int i = 0; i < count; i++) { String name = m_reader.getAttributeName(i); String ns = m_reader.getAttributeNamespace(i); int base = 0; int limit = names.length - 1; while (base <= limit) { int cur = (base + limit) >> 1; int diff = name.compareTo(names[cur]); if (diff == 0) { String comp = nss[cur]; if (comp == null) { diff = ns.compareTo(""); } else { diff = ns.compareTo(comp); } if (diff == 0) { continue loop; } } if (diff < 0) { limit = cur - 1; } else if (diff > 0) { base = cur + 1; } } throwStartTagException("Illegal attribute " + buildNameString(ns, name)); } } else { throw new JiBXException("Error parsing document " + buildPositionString()); } } /** * Internal parse to expected start tag. Ignores character data seen prior * to a start tag, but throws exception if an end tag or the end of the * document is seen before a start tag. Leaves the parser positioned at the * start tag. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param name element name expected * @throws JiBXException on any error (possibly wrapping other exception) */ private void matchStart(String ns, String name) throws JiBXException { if (toTag() == IXMLReader.START_TAG) { if (!m_reader.getName().equals(name) || !verifyNamespace(ns)) { throwStartTagNameError(ns, name); } } else { throw new JiBXException("Expected " + buildNameString(ns, name) + " start tag, found " + currentNameString() + " end tag " + buildPositionString()); } } /** * Parse to start of element. Ignores character data to next start or end * tag, but throws exception if an end tag is seen before a start tag, or if * the start tag seen does not match the expected name. Leaves the parse * positioned at the start tag. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param name element name expected * @throws JiBXException on any error (possibly wrapping other exception) */ public void parseToStartTag(String ns, String name) throws JiBXException { matchStart(ns, name); } /** * Parse past start of element. Ignores character data to next start or end * tag, but throws exception if an end tag is seen before a start tag, or if * the start tag seen does not match the expected name. Leaves the parse * positioned following the start tag. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param name element name expected * @throws JiBXException on any error (possibly wrapping other exception) */ public void parsePastStartTag(String ns, String name) throws JiBXException { matchStart(ns, name); advance(); } /** * Parse past start of expected element. If not currently positioned at a * start or end tag this first advances the parser to the next tag. If the * expected start tag is found it is skipped and the parse is left * positioned following the start tag. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param name element name expected * @return true if start tag found, false if not * @throws JiBXException on any error (possibly wrapping other exception) */ public boolean parseIfStartTag(String ns, String name) throws JiBXException { if (isAt(ns, name)) { advance(); return true; } else { return false; } } /** * Parse past current end of element. Ignores character data to next start * or end tag, but throws exception if a start tag is seen before a end tag, * or if the end tag seen does not match the expected name. Leaves the parse * positioned following the end tag. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param name element name expected * @throws JiBXException on any error (possibly wrapping other exception) */ public void parsePastCurrentEndTag(String ns, String name) throws JiBXException { // move parse to start or end tag int event = toTag(); // check for match on expected end tag if (event == IXMLReader.END_TAG) { if (m_reader.getName().equals(name) && verifyNamespace(ns)) { advance(); } else { throwEndTagNameError(ns, name); } } else { throw new JiBXException("Expected " + buildNameString(ns, name) + " end tag, found " + currentNameString() + " start tag " + buildPositionString()); } } /** * Parse past end of element. If currently at a start tag parses past that * start tag, then ignores character data to next start or end tag, and * throws exception if a start tag is seen before a end tag, or if * the end tag seen does not match the expected name. Leaves the parse * positioned following the end tag. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param name element name expected * @throws JiBXException on any error (possibly wrapping other exception) */ public void parsePastEndTag(String ns, String name) throws JiBXException { // most past current tag if start int event = m_reader.getEventType(); if (event == IXMLReader.START_TAG) { advance(); } // handle as current tag parsePastCurrentEndTag(ns, name); } /** * Check if next tag is a start tag. If not currently positioned at a * start or end tag this first advances the parse to the next start or * end tag. * * @return true if at start of element, false if * at end * @throws JiBXException on any error (possibly wrapping other exception) */ public boolean isStart() throws JiBXException { int type = m_reader.getEventType(); while (type != IXMLReader.START_TAG && type != IXMLReader.END_TAG) { type = m_reader.next(); } return m_reader.getEventType() == IXMLReader.START_TAG; } /** * Check if next tag is an end tag. If not currently positioned at a * start or end tag this first advances the parse to the next start or * end tag. * * @return true if at end of element, false if * at start * @throws JiBXException on any error (possibly wrapping other exception) */ public boolean isEnd() throws JiBXException { int type = m_reader.getEventType(); while (type != IXMLReader.START_TAG && type != IXMLReader.END_TAG) { type = m_reader.next(); } return m_reader.getEventType() == IXMLReader.END_TAG; } /** * Accumulate text content. This skips past comments and processing * instructions, and consolidates text and entities to a single string. Any * unexpanded entity references found are treated as errors. * * @return consolidated text string (empty string if no text components) * @exception JiBXException on error in unmarshalling */ public String accumulateText() throws JiBXException { String text = null; StringBuffer buff = null; loop: while (true) { switch (m_reader.getEventType()) { case IXMLReader.ENTITY_REF: if (m_reader.getText() == null) { throw new JiBXException ("Unexpanded entity reference in text at " + buildPositionString()); } // fall through into text accumulation case IXMLReader.CDSECT: case IXMLReader.TEXT: if (text == null) { text = m_reader.getText(); } else { if (buff == null) { buff = new StringBuffer(text); } buff.append(m_reader.getText()); } break; case IXMLReader.END_TAG: case IXMLReader.START_TAG: case IXMLReader.END_DOCUMENT: break loop; default: break; } m_reader.nextToken(); } if (buff == null) { return (text == null) ? "" : text; } else { return buff.toString(); } } /** * Parse required text content. Assumes the parse is already positioned at * the text content, so just returns the text. * * @return content text found * @throws JiBXException on any error (possible wrapping other exception) */ public String parseContentText() throws JiBXException { return accumulateText(); } /** * Parse past end of element, returning optional text content. Assumes * you've already parsed past the start tag of the element, so it just looks * for text content followed by the end tag, and returns with the parser * positioned after the end tag. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param tag element name expected * @return content text from element * @throws JiBXException on any error (possible wrapping other exception) */ public String parseContentText(String ns, String tag) throws JiBXException { String text = accumulateText(); switch (m_reader.getEventType()) { case IXMLReader.END_TAG: if (m_reader.getName().equals(tag) && verifyNamespace(ns)) { m_reader.nextToken(); return text; } else { throwEndTagNameError(ns, tag); } case IXMLReader.START_TAG: throw new JiBXException("Expected " + buildNameString(ns, tag) + " end tag, " + "found " + currentNameString() + " start tag " + buildPositionString()); case IXMLReader.END_DOCUMENT: throw new JiBXException("Expected " + buildNameString(ns, tag) + " end tag, " + "found end of document " + buildPositionString()); } return null; } /** * Parse past end of element, returning integer value of * content. Assumes you've already parsed past the start tag of the * element, so it just looks for text content followed by the end tag. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param tag element name expected * @return converted value from element text * @throws JiBXException on any error (possible wrapping other exception) */ public int parseContentInt(String ns, String tag) throws JiBXException { String text = parseContentText(ns, tag); try { return Utility.parseInt(text); } catch (JiBXException ex) { throw new JiBXParseException(ex.getMessage() + ' ' + buildPositionString(), text, ns, tag, ex.getRootCause()); } } /** * Parse entire element, returning text content. * Expects to find the element start tag, text content, and end tag, * in that order, and returns with the parser positioned following * the end tag. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param tag element name expected * @return content text from element * @throws JiBXException on any error (possible wrapping other exception) */ public String parseElementText(String ns, String tag) throws JiBXException { parsePastStartTag(ns, tag); return parseContentText(ns, tag); } /** * Parse entire element, returning optional text content. * Expects to find the element start tag, text content, and end tag, * in that order, and returns with the parser positioned following * the end tag. Returns the default text if the element is not found. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param tag element name expected * @param dflt default text value * @return content text from element * @throws JiBXException on any error (possible wrapping other exception) */ public String parseElementText(String ns, String tag, String dflt) throws JiBXException { if (parseIfStartTag(ns, tag)) { return parseContentText(ns, tag); } else { return dflt; } } /** * Get text value of attribute from current start tag. * Throws an exception if the attribute value is not found in the start * tag. * * @param ns namespace URI for expected attribute (may be null * or the empty string for the empty namespace) * @param name attribute name expected * @return attribute value text * @throws JiBXException if attribute not present */ public String attributeText(String ns, String name) throws JiBXException { String value = getAttributeValue(ns, name); if (value == null) { throw new JiBXException("Missing required attribute " + buildNameString(ns, name) + " " + buildPositionString()); } else { return value; } } /** * Get text value of optional attribute from current start * tag. If the attribute is not present the supplied default value is * returned instead. * * @param ns namespace URI for expected attribute (may be null * or the empty string for the empty namespace) * @param name attribute name expected * @param dflt value to be returned if attribute is not present * @return attribute value text */ public String attributeText(String ns, String name, String dflt) { String value = getAttributeValue(ns, name); if (value == null) { return dflt; } else { return value; } } /** * Find the object corresponding to an ID. This method just handles the * lookup and checks the object type. * * @param id ID text * @param index expected reference type index * @return object corresponding to IDREF, or null if not * yet defined * @throws JiBXException on any error */ public Object findID(String id, int index) throws JiBXException { HashMap map = m_idMaps[index]; if (map != null) { Object obj = map.get(id); if (obj == null || obj instanceof BackFillHolder) { return null; } else if (m_idClasses == null || m_idClasses[index].equals(obj.getClass().getName())) { return obj; } else { throwStartTagException ("IDREF element content mapped to wrong type"); } } return null; } /** * Find previously defined object corresponding to an ID. This does the * lookup and checks that the referenced object has been defined. * * @param id ID text * @param index expected reference type index * @return object corresponding to IDREF * @throws JiBXException on any error */ public Object findDefinedID(String id, int index) throws JiBXException { Object obj = findID(id, index); if (obj == null) { throwStartTagException("ID " + id + " not defined"); } return obj; } /** * Parse entire element, returning object (if defined yet) corresponding * to content interpreted as IDREF. Expects to find the element start tag, * text content, and end tag, in that order, and returns with the parser * positioned following the end tag. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param tag attribute name expected * @param index expected reference type index * @return object corresponding to IDREF, or null if not * yet defined * @throws JiBXException on any error (possibly wrapping other exception) */ public Object parseElementForwardIDREF(String ns, String tag, int index) throws JiBXException { parsePastStartTag(ns, tag); m_idref = parseContentText(ns, tag); return findID(m_idref, index); } /** * Get object (if defined yet) corresponding to IDREF attribute from * current start tag. * * @param ns namespace URI for expected attribute (may be null * or the empty string for the empty namespace) * @param name attribute name expected * @param index expected reference type index * @return object corresponding to IDREF, or null if not * yet defined * @throws JiBXException if attribute not present, or ID mapped to a * different type of object than expected */ public Object attributeForwardIDREF(String ns, String name, int index) throws JiBXException { m_idref = attributeText(ns, name); return findID(m_idref, index); } /** * Parse entire element, returning previously defined object corresponding * to content interpreted as IDREF. Expects to find the element start tag, * text content, and end tag, in that order, and returns with the parser * positioned following the end tag. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param tag attribute name expected * @param index expected reference type index * @return object corresponding to IDREF * @throws JiBXException if attribute not present, ID not defined, or * mapped to a different type of object than expected */ public Object parseElementExistingIDREF(String ns, String tag, int index) throws JiBXException { parsePastStartTag(ns, tag); m_idref = parseContentText(ns, tag); return findDefinedID(m_idref, index); } /** * Get previously defined object corresponding to IDREF attribute from * current start tag. * * @param ns namespace URI for expected attribute (may be null * or the empty string for the empty namespace) * @param name attribute name expected * @param index expected reference type index * @return object corresponding to IDREF * @throws JiBXException if attribute not present, ID not defined, or * mapped to a different type of object than expected */ public Object attributeExistingIDREF(String ns, String name, int index) throws JiBXException { m_idref = attributeText(ns, name); return findDefinedID(m_idref, index); } /** * Get integer value of attribute from current start tag. * Throws an exception if the attribute is not found in the start * tag, or if it is not a valid integer value. * * @param ns namespace URI for expected attribute (may be null * or the empty string for the empty namespace) * @param name attribute name expected * @return attribute integer value * @throws JiBXException if attribute not present or not a valid integer * value */ public int attributeInt(String ns, String name) throws JiBXException { String text = attributeText(ns, name); try { return Utility.parseInt(text); } catch (JiBXException ex) { throw new JiBXParseException(ex.getMessage() + ' ' + buildPositionString(), text, ns, name, ex.getRootCause()); } } /** * Get integer value of optional attribute from current * start tag. If the attribute is not present the supplied default value * is returned instead. * * @param ns namespace URI for expected attribute (may be null * or the empty string for the empty namespace) * @param name attribute name expected * @param dflt value to be returned if attribute is not present * @return attribute integer value * @throws JiBXException if attribute value is not a valid integer */ public int attributeInt(String ns, String name, int dflt) throws JiBXException { String value = getAttributeValue(ns, name); if (value == null) { return dflt; } else { try { return Utility.parseInt(value); } catch (JiBXException ex) { throw new JiBXParseException(ex.getMessage() + ' ' + buildPositionString(), value, ns, name, ex.getRootCause()); } } } /** * Parse entire element, returning integer value of content. * Expects to find the element start tag, text content, and end tag, * in that order, and returns with the parser positioned following * the end tag. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param tag element name expected * @return content text from element * @throws JiBXException on any error (possibly wrapping other exception) */ public int parseElementInt(String ns, String tag) throws JiBXException { parsePastStartTag(ns, tag); return parseContentInt(ns, tag); } /** * Parse entire optional element, returning integer value of content. * Expects to find the element start tag, text content, and end tag, * in that order, and returns with the parser positioned following * the end tag. Returns the default value if the element is missing or * has no content. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param tag element name expected * @param dflt default value * @return content text from element * @throws JiBXException on any error (possibly wrapping other exception) */ public int parseElementInt(String ns, String tag, int dflt) throws JiBXException { if (parseIfStartTag(ns, tag)) { return parseContentInt(ns, tag); } else { return dflt; } } /** * Find required text value in enumeration. Looks up and returns the * enumeration value corresponding to the target text. * * @param target text to be found in enumeration * @param enums ordered array of texts included in enumeration * @param vals array of values to be returned for corresponding text match * positions (position returned directly if this is null) * @return enumeration value for target text * @throws JiBXException if target text not found in enumeration */ public int convertEnum(String target, String[] enums, int[] vals) throws JiBXException { if (target == null) { throwStartTagException("Missing required enumeration value"); } try { return Utility.enumValue(target, enums, vals); } catch (JiBXException ex) { throw new JiBXConstrainedParseException(ex.getMessage() + ' ' + buildPositionString(), target, enums); } } /** * Find optional text value in enumeration. Looks up and returns the * enumeration value corresponding to the target text, or the default * value if the text is null. * * @param target text to be found in enumeration (may be null) * @param enums ordered array of texts included in enumeration * @param vals array of values to be returned for corresponding text match * positions (position returned directly if this is null) * @param dflt default value returned if target text is null * @return enumeration value for target text * @throws JiBXException if target text not found in enumeration */ public int convertEnum(String target, String[] enums, int[] vals, int dflt) throws JiBXException { if (target == null) { return dflt; } try { return Utility.enumValue(target, enums, vals); } catch (JiBXException ex) { throw new JiBXConstrainedParseException(ex.getMessage() + ' ' + buildPositionString(), target, enums); } } /** * Get enumeration attribute value from current start tag. * Throws an exception if the attribute value is not found in the start * tag or the text does not match a value defined in the enumeration table. * * @param ns namespace URI for expected attribute (may be null * or the empty string for the empty namespace) * @param name attribute name expected * @param enums ordered array of texts included in enumeration * @param vals array of values to be returned for corresponding text match * positions (position returned directly if this is null) * @return enumeration value for target text * @throws JiBXException if attribute not present or value not found in * enumeration list */ public int attributeEnumeration(String ns, String name, String[] enums, int[] vals) throws JiBXException { try { return convertEnum(getAttributeValue(ns, name), enums, vals); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(name); throw e; } } /** * Get optional enumeration attribute value from current start tag. * Throws an exception if the attribute value is present but does not match * a value defined in the enumeration table. * * @param ns namespace URI for expected attribute (may be null * or the empty string for the empty namespace) * @param name attribute name expected * @param enums ordered array of texts included in enumeration * @param vals array of values to be returned for corresponding text match * positions (position returned directly if this is null) * @param dflt default value returned if attribute is not present * @return enumeration value for target text * @throws JiBXException if attribute not present or value not found in * enumeration list */ public int attributeEnumeration(String ns, String name, String[] enums, int[] vals, int dflt) throws JiBXException { try { return convertEnum(getAttributeValue(ns, name), enums, vals, dflt); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(name); throw e; } } /** * Parse past end of element, returning enumeration value of content. * Assumes you've already parsed past the start tag of the element, so it * just looks for text content followed by the end tag, and returns with the * parser positioned after the end tag. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param tag element name expected * @param enums ordered array of texts included in enumeration * @param vals array of values to be returned for corresponding text match * positions (position returned directly if this is null) * @return enumeration value for element text * @throws JiBXException on any error (possible wrapping other exception) */ public int parseContentEnumeration(String ns, String tag, String[] enums, int[] vals) throws JiBXException { try { return convertEnum(parseContentText(ns, tag), enums, vals); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(tag); throw e; } } /** * Parse entire element, returning enumeration value of optional content. * Expects to find the element start tag, text content, and end tag, * in that order, and returns with the parser positioned following * the end tag. Returns the default value if no content is present. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param tag element name expected * @param enums ordered array of texts included in enumeration * @param vals array of values to be returned for corresponding text match * positions (position returned directly if this is null) * @param dflt default value * @return enumeration value for element text * @throws JiBXException on any error (possibly wrapping other exception) */ public int parseElementEnumeration(String ns, String tag, String[] enums, int[] vals, int dflt) throws JiBXException { if (parseIfStartTag(ns, tag)) { String text = parseContentText(ns, tag); try { return convertEnum(text, enums, vals, dflt); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(tag); throw e; } } else { return dflt; } } /** * Convert byte value with exception wrapper. This internal method is used * by all the byte unmarshalling calls. It adds position information to * any exceptions that occur. * * @param text text for value to be converted * @return converted byte value * @throws JiBXException if not a valid byte value */ public byte convertByte(String text) throws JiBXException { try { return Utility.parseByte(text); } catch (JiBXException ex) { throw new JiBXParseException(ex.getMessage() + ' ' + buildPositionString(), text, ex.getRootCause()); } } /** * Get byte value of attribute from current start tag. Throws an exception * if the attribute is not found in the start tag, or if it is not a valid * integer value. * * @param ns namespace URI for expected attribute (may be null * or the empty string for the empty namespace) * @param name attribute name expected * @return attribute byte value * @throws JiBXException if attribute not present or not a valid byte value */ public byte attributeByte(String ns, String name) throws JiBXException { try { return convertByte(attributeText(ns, name)); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(name); throw e; } } /** * Get byte value of optional attribute from current start tag. If the * attribute is not present the supplied default value is returned instead. * * @param ns namespace URI for expected attribute (may be null * or the empty string for the empty namespace) * @param name attribute name expected * @param dflt value to be returned if attribute is not present * @return attribute byte value * @throws JiBXException if attribute value is not a valid byte */ public byte attributeByte(String ns, String name, byte dflt) throws JiBXException { String text = getAttributeValue(ns, name); if (text == null) { return dflt; } else { try { return convertByte(text); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(name); throw e; } } } /** * Parse past end of element, returning byte value of content. Assumes * you've already parsed past the start tag of the element, so it just looks * for text content followed by the end tag, and returns with the parser * positioned after the end tag. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param tag element name expected * @return converted value from element text * @throws JiBXException on any error (possible wrapping other exception) */ public byte parseContentByte(String ns, String tag) throws JiBXException { try { return convertByte(parseContentText(ns, tag)); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(tag); throw e; } } /** * Parse entire element, returning byte value of content. * Expects to find the element start tag, text content, and end tag, * in that order, and returns with the parser positioned following * the end tag. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param tag element name expected * @return content text from element * @throws JiBXException on any error (possibly wrapping other exception) */ public byte parseElementByte(String ns, String tag) throws JiBXException { parsePastStartTag(ns, tag); return parseContentByte(ns, tag); } /** * Parse entire element, returning byte value of optional content. * Expects to find the element start tag, text content, and end tag, * in that order, and returns with the parser positioned following * the end tag. Returns the default value if no content is present. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param tag element name expected * @param dflt default value * @return content text from element * @throws JiBXException on any error (possibly wrapping other exception) */ public byte parseElementByte(String ns, String tag, byte dflt) throws JiBXException { if (parseIfStartTag(ns, tag)) { try { return convertByte(parseContentText(ns, tag)); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(tag); throw e; } } else { return dflt; } } /** * Convert short value with exception wrapper. This internal method is used * by all the short unmarshalling calls. It adds position information to * any exceptions that occur. * * @param text text for value to be converted * @return converted short value * @throws JiBXException if not a valid short value */ public short convertShort(String text) throws JiBXException { try { return Utility.parseShort(text); } catch (JiBXException ex) { throw new JiBXParseException(ex.getMessage() + ' ' + buildPositionString(), text, ex.getRootCause()); } } /** * Get short value of attribute from current start tag. Throws an exception * if the attribute is not found in the start tag, or if it is not a valid * integer value. * * @param ns namespace URI for expected attribute (may be null * or the empty string for the empty namespace) * @param name attribute name expected * @return attribute short value * @throws JiBXException if attribute not present or not a valid short value */ public short attributeShort(String ns, String name) throws JiBXException { try { return convertShort(attributeText(ns, name)); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(name); throw e; } } /** * Get short value of optional attribute from current start tag. If the * attribute is not present the supplied default value is returned instead. * * @param ns namespace URI for expected attribute (may be null * or the empty string for the empty namespace) * @param name attribute name expected * @param dflt value to be returned if attribute is not present * @return attribute short value * @throws JiBXException if attribute value is not a valid short */ public short attributeShort(String ns, String name, short dflt) throws JiBXException { String text = getAttributeValue(ns, name); if (text == null) { return dflt; } else { try { return convertShort(text); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(name); throw e; } } } /** * Parse past end of element, returning short value of content. Assumes * you've already parsed past the start tag of the element, so it just looks * for text content followed by the end tag, and returns with the parser * positioned after the end tag. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param tag element name expected * @return converted value from element text * @throws JiBXException on any error (possible wrapping other exception) */ public short parseContentShort(String ns, String tag) throws JiBXException { try { return convertShort(parseContentText(ns, tag)); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(tag); throw e; } } /** * Parse entire element, returning short value of content. * Expects to find the element start tag, text content, and end tag, * in that order, and returns with the parser positioned following * the end tag. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param tag element name expected * @return content text from element * @throws JiBXException on any error (possibly wrapping other exception) */ public short parseElementShort(String ns, String tag) throws JiBXException { parsePastStartTag(ns, tag); try { return parseContentShort(ns, tag); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(tag); throw e; } } /** * Parse entire element, returning short value of optional content. * Expects to find the element start tag, text content, and end tag, * in that order, and returns with the parser positioned following * the end tag. Returns the default value if no content is present. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param tag element name expected * @param dflt default value * @return content text from element * @throws JiBXException on any error (possibly wrapping other exception) */ public short parseElementShort(String ns, String tag, short dflt) throws JiBXException { if (parseIfStartTag(ns, tag)) { try { return convertShort(parseContentText(ns, tag)); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(tag); throw e; } } else { return dflt; } } /** * Convert char value with exception wrapper. This internal method is used * by all the char unmarshalling calls. It adds position information to * any exceptions that occur. * * @param text text for value to be converted * @return converted char value * @throws JiBXException if not a valid char value */ public char convertChar(String text) throws JiBXException { try { return Utility.parseChar(text); } catch (JiBXException ex) { throw new JiBXParseException(ex.getMessage() + ' ' + buildPositionString(), text, ex.getRootCause()); } } /** * Get char value of attribute from current start tag. Throws an exception * if the attribute is not found in the start tag, or if it is not a valid * integer value. * * @param ns namespace URI for expected attribute (may be null * or the empty string for the empty namespace) * @param name attribute name expected * @return attribute char value * @throws JiBXException if attribute not present or not a valid char value */ public char attributeChar(String ns, String name) throws JiBXException { try { return convertChar(attributeText(ns, name)); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(name); throw e; } } /** * Get char value of optional attribute from current start tag. If the * attribute is not present the supplied default value is returned instead. * * @param ns namespace URI for expected attribute (may be null * or the empty string for the empty namespace) * @param name attribute name expected * @param dflt value to be returned if attribute is not present * @return attribute char value * @throws JiBXException if attribute value is not a valid char */ public char attributeChar(String ns, String name, char dflt) throws JiBXException { String text = getAttributeValue(ns, name); if (text == null) { return dflt; } else { try { return convertChar(text); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(name); throw e; } } } /** * Parse past end of element, returning char value of content. Assumes * you've already parsed past the start tag of the element, so it just looks * for text content followed by the end tag, and returns with the parser * positioned after the end tag. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param tag element name expected * @return converted value from element text * @throws JiBXException on any error (possible wrapping other exception) */ public char parseContentChar(String ns, String tag) throws JiBXException { try { return convertChar(parseContentText(ns, tag)); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(tag); throw e; } } /** * Parse entire element, returning char value of content. * Expects to find the element start tag, text content, and end tag, * in that order, and returns with the parser positioned following * the end tag. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param tag element name expected * @return content text from element * @throws JiBXException on any error (possibly wrapping other exception) */ public char parseElementChar(String ns, String tag) throws JiBXException { parsePastStartTag(ns, tag); try { return parseContentChar(ns, tag); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(tag); throw e; } } /** * Parse entire element, returning char value of optional content. * Expects to find the element start tag, text content, and end tag, * in that order, and returns with the parser positioned following * the end tag. Returns the default value if the element is not present. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param tag element name expected * @param dflt default value * @return content text from element * @throws JiBXException on any error (possibly wrapping other exception) */ public char parseElementChar(String ns, String tag, char dflt) throws JiBXException { if (parseIfStartTag(ns, tag)) { try { return convertChar(parseContentText(ns, tag)); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(tag); throw e; } } else { return dflt; } } /** * Convert long value with exception wrapper. This internal method is used * by all the long unmarshalling calls. It adds position information to * any exceptions that occur. * * @param text text for value to be converted * @return converted long value * @throws JiBXException if not a valid long value */ public long convertLong(String text) throws JiBXException { try { return Utility.parseLong(text); } catch (JiBXException ex) { throw new JiBXParseException(ex.getMessage() + ' ' + buildPositionString(), text, ex.getRootCause()); } } /** * Get long value of attribute from current start tag. Throws an exception * if the attribute is not found in the start tag, or if it is not a valid * integer value. * * @param ns namespace URI for expected attribute (may be null * or the empty string for the empty namespace) * @param name attribute name expected * @return attribute long value * @throws JiBXException if attribute not present or not a valid long value */ public long attributeLong(String ns, String name) throws JiBXException { try { return convertLong(attributeText(ns, name)); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(name); throw e; } } /** * Get long value of optional attribute from current start tag. If the * attribute is not present the supplied default value is returned instead. * * @param ns namespace URI for expected attribute (may be null * or the empty string for the empty namespace) * @param name attribute name expected * @param dflt value to be returned if attribute is not present * @return attribute long value * @throws JiBXException if attribute value is not a valid long */ public long attributeLong(String ns, String name, long dflt) throws JiBXException { String text = getAttributeValue(ns, name); if (text == null) { return dflt; } else { try { return convertLong(text); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(name); throw e; } } } /** * Parse past end of element, returning long value of content. * Expects to find the element start tag, text content, and end tag, * in that order, and returns with the parser positioned following * the end tag. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param tag element name expected * @return converted value from element text * @throws JiBXException on any error (possible wrapping other exception) */ public long parseElementLong(String ns, String tag) throws JiBXException { parsePastStartTag(ns, tag); try { return convertLong(parseContentText(ns, tag)); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(tag); throw e; } } /** * Parse entire element, returning long value of optional content. * Expects to find the element start tag, text content, and end tag, * in that order, and returns with the parser positioned following * the end tag. Returns the default value if the element is not present. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param tag element name expected * @param dflt default value * @return content text from element * @throws JiBXException on any error (possibly wrapping other exception) */ public long parseElementLong(String ns, String tag, long dflt) throws JiBXException { if (parseIfStartTag(ns, tag)) { try { return convertLong(parseContentText(ns, tag)); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(tag); throw e; } } else { return dflt; } } /** * Convert boolean value. This internal method is used by all the boolean * unmarshalling calls. It accepts "true" or "1" as equivalent, and "false" * or "0" as equivalent, and throws exceptions for anything else. * * @param text text for value to be converted * @return converted boolean value * @throws JiBXException if not a valid boolean value */ public boolean convertBoolean(String text) throws JiBXException { if ("true".equalsIgnoreCase(text) || "1".equals(text)) { return true; } else if ("false".equalsIgnoreCase(text) || "0".equals(text)) { return false; } throw new JiBXParseException("Invalid boolean value " + buildPositionString(), text); } /** * Get boolean value of attribute from current start tag. Throws an * exception if the attribute is not found in the start tag, or if it is * not a valid integer value. * * @param ns namespace URI for expected attribute (may be null * or the empty string for the empty namespace) * @param name attribute name expected * @return attribute boolean value * @throws JiBXException if attribute not present or not a valid boolean * value */ public boolean attributeBoolean(String ns, String name) throws JiBXException { try { return convertBoolean(attributeText(ns, name)); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(name); throw e; } } /** * Get boolean value of optional attribute from current start tag. If the * attribute is not present the supplied default value is returned instead. * * @param ns namespace URI for expected attribute (may be null * or the empty string for the empty namespace) * @param name attribute name expected * @param dflt value to be returned if attribute is not present * @return attribute boolean value * @throws JiBXException if attribute value is not a valid boolean */ public boolean attributeBoolean(String ns, String name, boolean dflt) throws JiBXException { String text = getAttributeValue(ns, name); if (text == null) { return dflt; } else { try { return convertBoolean(text); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(name); throw e; } } } /** * Parse entire element, returning boolean value of content. * Expects to find the element start tag, text content, and end tag, * in that order, and returns with the parser positioned following * the end tag. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param tag element name expected * @return converted value from element text * @throws JiBXException on any error (possible wrapping other exception) */ public boolean parseElementBoolean(String ns, String tag) throws JiBXException { parsePastStartTag(ns, tag); try { return convertBoolean(parseContentText(ns, tag)); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(tag); throw e; } } /** * Parse entire element, returning boolean value of optional content. * Expects to find the element start tag, text content, and end tag, * in that order, and returns with the parser positioned following * the end tag. Returns the default value if the element is not present. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param tag element name expected * @param dflt default value * @return content text from element * @throws JiBXException on any error (possibly wrapping other exception) */ public boolean parseElementBoolean(String ns, String tag, boolean dflt) throws JiBXException { if (parseIfStartTag(ns, tag)) { try { return convertBoolean(parseContentText(ns, tag)); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(tag); throw e; } } else { return dflt; } } /** * Convert float value with exception wrapper. This internal method is used * by all the float unmarshalling calls. It adds position information to * any exceptions that occur. * * @param text text for value to be converted * @return converted float value * @throws JiBXException if not a valid float value */ public float convertFloat(String text) throws JiBXException { try { return Utility.parseFloat(text); } catch (JiBXException ex) { throw new JiBXParseException(ex.getMessage() + ' ' + buildPositionString(), text, ex.getRootCause()); } } /** * Get float value of attribute from current start tag. Throws an exception * if the attribute is not found in the start tag, or if it is not a valid * integer value. * * @param ns namespace URI for expected attribute (may be null * or the empty string for the empty namespace) * @param name attribute name expected * @return attribute float value * @throws JiBXException if attribute not present or not a valid float value */ public float attributeFloat(String ns, String name) throws JiBXException { try { return convertFloat(attributeText(ns, name)); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(name); throw e; } } /** * Get float value of optional attribute from current start tag. If the * attribute is not present the supplied default value is returned instead. * * @param ns namespace URI for expected attribute (may be null * or the empty string for the empty namespace) * @param name attribute name expected * @param dflt value to be returned if attribute is not present * @return attribute float value * @throws JiBXException if attribute value is not a valid float */ public float attributeFloat(String ns, String name, float dflt) throws JiBXException { String text = getAttributeValue(ns, name); if (text == null) { return dflt; } else { try { return convertFloat(text); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(name); throw e; } } } /** * Parse past end of element, returning float value of content. * Expects to find the element start tag, text content, and end tag, * in that order, and returns with the parser positioned following * the end tag. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param tag element name expected * @return converted value from element text * @throws JiBXException on any error (possible wrapping other exception) */ public float parseElementFloat(String ns, String tag) throws JiBXException { parsePastStartTag(ns, tag); try { return convertFloat(parseContentText(ns, tag)); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(tag); throw e; } } /** * Parse entire element, returning float value of optional content. * Expects to find the element start tag, text content, and end tag, * in that order, and returns with the parser positioned following * the end tag. Returns the default value if the element is not present. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param tag element name expected * @param dflt default value * @return content text from element * @throws JiBXException on any error (possibly wrapping other exception) */ public float parseElementFloat(String ns, String tag, float dflt) throws JiBXException { if (parseIfStartTag(ns, tag)) { try { return convertFloat(parseContentText(ns, tag)); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(tag); throw e; } } else { return dflt; } } /** * Convert double value with exception wrapper. This internal method is used * by all the double unmarshalling calls. It adds position information to * any exceptions that occur. * * @param text text for value to be converted * @return converted double value * @throws JiBXException if not a valid double value */ public double convertDouble(String text) throws JiBXException { try { return Utility.parseDouble(text); } catch (JiBXException ex) { throw new JiBXParseException(ex.getMessage() + ' ' + buildPositionString(), text, ex.getRootCause()); } } /** * Get double value of attribute from current start tag. Throws an exception * if the attribute is not found in the start tag, or if it is not a valid * integer value. * * @param ns namespace URI for expected attribute (may be null * or the empty string for the empty namespace) * @param name attribute name expected * @return attribute double value * @throws JiBXException if attribute not present or not a valid double * value */ public double attributeDouble(String ns, String name) throws JiBXException { try { return convertDouble(attributeText(ns, name)); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(name); throw e; } } /** * Get double value of optional attribute from current start tag. If the * attribute is not present the supplied default value is returned instead. * * @param ns namespace URI for expected attribute (may be null * or the empty string for the empty namespace) * @param name attribute name expected * @param dflt value to be returned if attribute is not present * @return attribute double value * @throws JiBXException if attribute value is not a valid double */ public double attributeDouble(String ns, String name, double dflt) throws JiBXException { String text = getAttributeValue(ns, name); if (text == null) { return dflt; } else { try { return convertDouble(text); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(name); throw e; } } } /** * Parse past end of element, returning double value of content. * Expects to find the element start tag, text content, and end tag, * in that order, and returns with the parser positioned following * the end tag. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param tag element name expected * @return converted value from element text * @throws JiBXException on any error (possible wrapping other exception) */ public double parseElementDouble(String ns, String tag) throws JiBXException { parsePastStartTag(ns, tag); try { return convertDouble(parseContentText(ns, tag)); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(tag); throw e; } } /** * Parse entire element, returning double value of optional content. * Expects to find the element start tag, text content, and end tag, * in that order, and returns with the parser positioned following * the end tag. Returns the default value if the element is not present. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param tag element name expected * @param dflt default value * @return content text from element * @throws JiBXException on any error (possibly wrapping other exception) */ public double parseElementDouble(String ns, String tag, double dflt) throws JiBXException { if (parseIfStartTag(ns, tag)) { try { return convertDouble(parseContentText(ns, tag)); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(tag); throw e; } } else { return dflt; } } /** * Convert java.util.Date value with exception wrapper. This * internal method is used by all the Date unmarshalling calls. It adds * position information to any exceptions that occur. * * @param text text for value to be converted * @return converted Date value * @throws JiBXException if not a valid Date value */ public Date convertDate(String text) throws JiBXException { try { return new Date(Utility.parseDateTime(text)); } catch (JiBXException ex) { throw new JiBXParseException(ex.getMessage() + ' ' + buildPositionString(), text, ex.getRootCause()); } } /** * Get java.util.Date value of attribute from current start * tag. Throws an exception if the attribute is not found in the start tag, * or if it is not a valid integer value. * * @param ns namespace URI for expected attribute (may be null * or the empty string for the empty namespace) * @param name attribute name expected * @return attribute Date value * @throws JiBXException if attribute not present or not a valid Date * value */ public Date attributeDate(String ns, String name) throws JiBXException { try { return convertDate(attributeText(ns, name)); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(name); throw e; } } /** * Get java.util.Date value of optional attribute from current * start tag. If the attribute is not present the supplied default value is * returned instead. * * @param ns namespace URI for expected attribute (may be null * or the empty string for the empty namespace) * @param name attribute name expected * @param dflt value to be returned if attribute is not present * @return attribute Date value * @throws JiBXException if attribute value is not a valid Date */ public Date attributeDate(String ns, String name, Date dflt) throws JiBXException { String text = getAttributeValue(ns, name); if (text == null) { return dflt; } else { try { return convertDate(text); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(name); throw e; } } } /** * Parse past end of element, returning java.util.Date value * of content. Expects to find the element start tag, text content, * and end tag, in that order, and returns with the parser positioned * following the end tag. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param tag element name expected * @return converted value from element text * @throws JiBXException on any error (possible wrapping other exception) */ public Date parseElementDate(String ns, String tag) throws JiBXException { parsePastStartTag(ns, tag); try { return convertDate(parseContentText(ns, tag)); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(tag); throw e; } } /** * Parse entire element, returning java.util.Date value of * optional content. Expects to find the element start tag, text content, * and end tag, in that order, and returns with the parser positioned * following the end tag. Returns the default value if the element is not * present. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param tag element name expected * @param dflt default value * @return content text from element * @throws JiBXException on any error (possibly wrapping other exception) */ public Date parseElementDate(String ns, String tag, Date dflt) throws JiBXException { if (parseIfStartTag(ns, tag)) { try { return convertDate(parseContentText(ns, tag)); } catch (JiBXParseException e) { e.setNamespace(ns); e.setTagName(tag); throw e; } } else { return dflt; } } /** * Register back fill item for undefined ID value. This adds a holder to * the mapping table if not already present, then adds the back fill item * to the holder. * * @param id target undefined ID value * @param index target reference type index * @param fill back fill item * @throws JiBXException if attribute not present, or ID already defined */ public void registerBackFill(String id, int index, BackFillReference fill) throws JiBXException { HashMap map = m_idMaps[index]; if (map == null) { m_idMaps[index] = map = new HashMap(); } Object obj = map.get(id); if (obj == null) { String xclass = (m_idClasses == null) ? null : m_idClasses[index]; BackFillHolder holder = new BackFillHolder(xclass); map.put(id, holder); holder.addBackFill(fill); } else if (obj instanceof BackFillHolder) { ((BackFillHolder)obj).addBackFill(fill); } else { throw new JiBXException ("Internal operation error (back fill error) " + buildPositionString()); } } /** * Register back fill item for last parsed ID value. This adds a holder to * the mapping table if not already present, then adds the back fill item * to the holder. This form of call always applies to the last IDREF value * parsed (from either an element or an attribute). * * @param index target reference type index * @param fill back fill item * @throws JiBXException if attribute not present, or ID already defined */ public void registerBackFill(int index, BackFillReference fill) throws JiBXException { registerBackFill(m_idref, index, fill); } /** * Define object for ID. Adds the owning object to a map with the ID * value as key. Throws an exception if the object class does not match * that expected from forward references, or if another object has * previously been registered with the same ID. * * @param id text ID value * @param index ID class index number * @param obj object corresponding to element * @throws JiBXException if duplicate ID or wrong class */ public void defineID(String id, int index, Object obj) throws JiBXException { HashMap map = m_idMaps[index]; if (map == null) { m_idMaps[index] = map = new HashMap(); } Object prior = map.put(id, obj); if (prior instanceof BackFillHolder) { BackFillHolder holder = (BackFillHolder)prior; String xclass = holder.getExpectedClass(); if (xclass == null || xclass.equals(obj.getClass().getName())) { holder.defineValue(obj); } else { throw new JiBXException("ID object has wrong type " + buildPositionString()); } } else if (prior != null) { throw new JiBXException("Duplicate ID definition " + buildPositionString()); } } /** * Map unmarshalling for element. Adds the entry for a particular class * index to the unmarshalling map. * * @param index class index for unmarshalling definition to be added */ protected void mapUnmarshalling(int index) { Object value = m_unmarshalMap.get(m_names[index]); if (value instanceof Integer) { ArrayList list = new ArrayList(); list.add(value); list.add(m_indexes[index]); m_unmarshalMap.put(m_names[index], list); } else if (value instanceof ArrayList) { ArrayList list = (ArrayList)value; list.add(m_indexes[index]); } else { m_unmarshalMap.put(m_names[index], m_indexes[index]); } } /** * Define unmarshalling for element. Enables the unmarshalling definition * linking an element name (including namespace) with a handler. The * unmarshalling definitions use fixed indexes for each class, allowing * direct lookup of the unmarshaller when multiple versions are defined. * * @param index class index for unmarshalling definition * @param ns namespace for element (may be null * or the empty string for the empty namespace) * @param name name for element * @param cname name of class created by unmarshaller */ public void addUnmarshalling(int index, String ns, String name, String cname) { m_namespaces[index] = ns; m_names[index] = name; m_unmarshallerClasses[index] = cname; if (m_unmarshalMap != null && name != null) { mapUnmarshalling(index); } } /** * Undefine unmarshalling for element. Disables the unmarshalling * definition for a particular class index. * * @param index class index for unmarshalling definition */ public void removeUnmarshalling(int index) { if (m_unmarshalMap != null && m_names[index] != null) { Object value = m_unmarshalMap.get(m_names[index]); if (value instanceof Integer) { m_unmarshalMap.remove(m_names[index]); } else if (value instanceof ArrayList) { ArrayList list = (ArrayList)value; list.remove(list.indexOf(m_indexes[index])); } } m_namespaces[index] = null; m_names[index] = null; m_unmarshallers[index] = null; m_unmarshallerClasses[index] = null; } /** * Find the unmarshaller for a particular class index in the current * context. * * @param index class index for unmarshalling definition * @return unmarshalling handler for class * @throws JiBXException if unable to create unmarshaller */ public IUnmarshaller getUnmarshaller(int index) throws JiBXException { if (m_unmarshallers[index] == null) { // load the unmarshaller class and create an instance String name = m_unmarshallerClasses[index]; if (name == null) { throw new JiBXException ("No unmarshaller defined for class at index " + index); } try { // first try loading class from binding factory class loader Class clas = null; ClassLoader factldr = null; if (m_factory != null) { factldr = m_factory.getClass().getClassLoader(); try { clas = factldr.loadClass(name); } catch (ClassNotFoundException e) { /* fall through */ } } if (clas == null) { // next try the context class loader, if set ClassLoader ctxldr = Thread.currentThread().getContextClassLoader(); if (ctxldr != null) { try { clas = ctxldr.loadClass(name); } catch (ClassNotFoundException e) { /* fall through */ } } if (clas == null) { // not found, try the loader that loaded this class ClassLoader thisldr = UnmarshallingContext.class.getClassLoader(); if (thisldr != factldr && thisldr != ctxldr) { try { clas = thisldr.loadClass(name); } catch (ClassNotFoundException e) { /* fall through */ } } } } if (clas == null) { throw new JiBXException("Unable to load unmarshaller class " + name); } // create an instance of unmarshaller class IUnmarshaller um = (IUnmarshaller)clas.newInstance(); m_unmarshallers[index] = um; } catch (JiBXException e) { throw e; } catch (Exception e) { throw new JiBXException ("Unable to create unmarshaller of class " + name + ":", e); } } return m_unmarshallers[index]; } /** * Find the unmarshaller for a particular element name (including * namespace) in the current context. * * @param ns namespace for element (may be null * or the empty string for the empty namespace) * @param name name for element * @return unmarshalling handler for element, or null if none * found * @throws JiBXException if unable to create unmarshaller */ public IUnmarshaller getUnmarshaller(String ns, String name) throws JiBXException { if (m_unmarshalMap == null) { m_unmarshalMap = new HashMap(m_names.length); m_indexes = new Integer[m_names.length]; for (int i = 0; i < m_names.length; i++) { m_indexes[i] = new Integer(i); if (m_names[i] != null) { mapUnmarshalling(i); } } } Object value = m_unmarshalMap.get(name); if (value instanceof Integer) { int index = ((Integer)value).intValue(); String mns = m_namespaces[index]; if (ns == mns || (ns == null && mns.length() == 0) || (mns == null && ns.length() == 0) || (ns != null && ns.equals(mns))) { return getUnmarshaller(index); } } else if (value instanceof ArrayList) { ArrayList list = (ArrayList)value; for (int i = 0; i < list.size(); i++) { int index = ((Integer)list.get(i)).intValue(); String mns = m_namespaces[index]; if (ns == mns || (ns == null && mns.length() == 0) || (mns == null && ns.length() == 0) || (ns != null && ns.equals(mns))) { return getUnmarshaller(index); } } } return null; } /** * Unmarshal optional element. If not currently positioned at a start or * end tag this first advances the parse to the next start or end tag. * * @return unmarshalled object from element, or null if end tag * rather than start tag seen * @throws JiBXException on any error (possibly wrapping other exception) */ public Object unmarshalOptionalElement() throws JiBXException { int type = toTag(); if (type == IXMLReader.START_TAG) { IUnmarshaller unmarshal = getUnmarshaller(m_reader.getNamespace(), m_reader.getName()); if (unmarshal != null) { return unmarshal.unmarshal(null, this); } } return null; } /** * Unmarshal required element of specified type. If not currently positioned * at a start or end tag this first advances the parse to the next start or * end tag. The returned object will always be assignable to the specified * type. * * @param clas expected class of unmarshalled object * @return unmarshalled object from element * @throws JiBXException on any error (possibly wrapping other exception) */ public Object unmarshalElement(Class clas) throws JiBXException { String name = toStart(); IUnmarshaller unmarshal = getUnmarshaller(m_reader.getNamespace(), name); if (unmarshal == null) { throw new JiBXException("No unmarshaller for element " + currentNameString() + " " + buildPositionString()); } else { Object obj = unmarshal.unmarshal(null, this); if (!clas.isInstance(obj)) { throw new JiBXException("Element " + name + " not compatible with expected type " + clas.getName() + " " + buildPositionString()); } return obj; } } /** * Unmarshal required element. If not currently positioned at a start or * end tag this first advances the parse to the next start or end tag. * * @return unmarshalled object from element * @throws JiBXException on any error (possibly wrapping other exception) */ public Object unmarshalElement() throws JiBXException { String name = toStart(); IUnmarshaller unmarshal = getUnmarshaller(m_reader.getNamespace(), name); if (unmarshal == null) { throw new JiBXException("No unmarshaller for element " + currentNameString() + " " + buildPositionString()); } else { return unmarshal.unmarshal(null, this); } } /** * Parse past element, ignoring all content. This may be used while * positioned either before or on the element start tag. It checks if * currently positioned at the element start tag, and if so advances to the * next parse event. Then looks for the next end tag, ignoring character * data and skipping child elements. Leaves the parse positioned following * the end tag. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param tag element name expected * @throws JiBXException on any error (possible wrapping other exception) */ public void parsePastElement(String ns, String tag) throws JiBXException { parsePastStartTag(ns, tag); int depth = 0; while (true) { switch (m_reader.getEventType()) { case IXMLReader.END_TAG: if (depth == 0) { if (m_reader.getName().equals(tag) && verifyNamespace(ns)) { m_reader.nextToken(); return; } else { throwEndTagNameError(ns, tag); } } else { depth--; } break; case IXMLReader.START_TAG: depth++; break; default: break; } m_reader.nextToken(); } } /** * Returns current element name. * * @return local name part of name, or null if not at a start * or end tag * @throws JiBXException if error from parser */ public String getElementName() throws JiBXException { int type = m_reader.getEventType(); if (type == IXMLReader.START_TAG || type == IXMLReader.END_TAG) { return m_reader.getName(); } else { return null; } } /** * Returns current element namespace URI. * * @return namespace URI of name, or null if not at a start * or end tag * @throws JiBXException if error from parser */ public String getElementNamespace() throws JiBXException { int type = m_reader.getEventType(); if (type == IXMLReader.START_TAG || type == IXMLReader.END_TAG) { return m_reader.getNamespace(); } else { return null; } } /** * Throw exception with start tag and position information. * * @param msg exception message text * @exception JiBXException always thrown */ public void throwStartTagException(String msg) throws JiBXException { throw new JiBXException(msg + " at tag " + currentNameString() + buildPositionString()); } /** * Throw exception with start tag, position information, and nested * exception. * * @param msg exception message text * @param ex nested exception * @exception JiBXException always thrown */ public void throwStartTagException(String msg, Exception ex) throws JiBXException { throw new JiBXException(msg + " at tag " + currentNameString() + buildPositionString(), ex); } /** * Throw exception with position information. * * @param msg exception message text * @exception JiBXException always thrown */ public void throwException(String msg) throws JiBXException { throw new JiBXException(msg + " " + buildPositionString()); } /** * Throw exception with position information and nested exception. * * @param msg exception message text * @param ex nested exception * @exception JiBXException always thrown */ public void throwException(String msg, Exception ex) throws JiBXException { throw new JiBXException(msg + " " + buildPositionString(), ex); } /** * Unmarshal document from stream to object. The effect of this is the same * as if {@link #setDocument} were called, followed by {@link * #unmarshalElement} * * @param ins stream supplying document data * @param enc document input encoding, or null if to be * determined by parser * @return unmarshalled object * @throws JiBXException if error creating parser */ public Object unmarshalDocument(InputStream ins, String enc) throws JiBXException { setDocument(ins, enc); return unmarshalElement(); } /** * Unmarshal document from reader to object. The effect of this is the same * as if {@link #setDocument} were called, followed by {@link * #unmarshalElement} * * @param rdr reader supplying document data * @return unmarshalled object * @throws JiBXException if error creating parser */ public Object unmarshalDocument(Reader rdr) throws JiBXException { setDocument(rdr); return unmarshalElement(); } /** * Unmarshal named document from stream to object. The effect of this is the * same as if {@link #setDocument} were called, followed by {@link * #unmarshalElement} * * @param ins stream supplying document data * @param name document name * @param enc document input encoding, or null if to be * determined by parser * @return unmarshalled object * @throws JiBXException if error creating parser */ public Object unmarshalDocument(InputStream ins, String name, String enc) throws JiBXException { setDocument(ins, name, enc); return unmarshalElement(); } /** * Unmarshal named document from reader to object. The effect of this is the * same as if {@link #setDocument} were called, followed by {@link * #unmarshalElement} * * @param rdr reader supplying document data * @param name document name * @return unmarshalled object * @throws JiBXException if error creating parser */ public Object unmarshalDocument(Reader rdr, String name) throws JiBXException { setDocument(rdr, name); return unmarshalElement(); } /** * Return the binding factory used to create this unmarshaller. * * @return binding factory */ public IBindingFactory getFactory() { return m_factory; } /** * Return the supplied document name. * * @return supplied document name (null if none) */ public String getDocumentName() { return m_reader.getDocumentName(); } /** * Return the input encoding, if known. This is only valid after parsing of * a document has been started. * * @return input encoding (null if unknown) */ public String getInputEncoding() { return m_reader.getInputEncoding(); } /** * Set a user context object. This context object is not used directly by * JiBX, but can be accessed by all types of user extension methods. The * context object is automatically cleared by the {@link #reset()} method, * so to make use of this you need to first call the appropriate version of * the setDocument() method, then this method, and finally the * {@link #unmarshalElement} method. * * @param obj user context object, or null if clearing existing * context object * @see #getUserContext() */ public void setUserContext(Object obj) { m_userContext = obj; } /** * Get the user context object. * * @return user context object, or null if no context object * set * @see #setUserContext(Object) */ public Object getUserContext() { return m_userContext; } /** * Push created object to unmarshalling stack. This must be called before * beginning the unmarshalling of the object. It is only called for objects * with structure, not for those converted directly to and from text. * * @param obj object being unmarshalled */ public void pushObject(Object obj) { int depth = m_stackDepth; if (depth >= m_objectStack.length) { Object[] stack = new Object[depth*2]; System.arraycopy(m_objectStack, 0, stack, 0, depth); m_objectStack = stack; } m_objectStack[depth] = obj; m_stackDepth++; } /** * Set position tracking information for object, if supported. * * @param obj object being tracked */ public void trackObject(Object obj) { if (obj instanceof ITrackSourceImpl) { ((ITrackSourceImpl)obj).jibx_setSource(m_reader.getDocumentName(), m_reader.getLineNumber(), m_reader.getColumnNumber()); } } /** * Push created object to unmarshalling stack with position tracking. If the * object supports setting source location information, the location is also * set by this method. * * @param obj object being unmarshalled */ public void pushTrackedObject(Object obj) { pushObject(obj); trackObject(obj); } /** * Pop unmarshalled object from stack. * * @throws JiBXException if no object on stack */ public void popObject() throws JiBXException { if (m_stackDepth > 0) { --m_stackDepth; } else { throw new JiBXException("No object on stack"); } } /** * Get current unmarshalling object stack depth. This allows tracking * nested calls to unmarshal one object while in the process of * unmarshalling another object. The bottom item on the stack is always the * root object being unmarshalled. * * @return number of objects in unmarshalling stack */ public int getStackDepth() { return m_stackDepth; } /** * Get object from unmarshalling stack. This stack allows tracking nested * calls to unmarshal one object while in the process of unmarshalling * another object. The bottom item on the stack is always the root object * being unmarshalled. * * @param depth object depth in stack to be retrieved (must be in the range * of zero to the current depth minus one). * @return object from unmarshalling stack */ public Object getStackObject(int depth) { if (depth >= 0 && depth < m_stackDepth) { return m_objectStack[m_stackDepth-depth-1]; } else { throw new ArrayIndexOutOfBoundsException("Depth " + depth + " is out of range"); } } /** * Get top object on unmarshalling stack. This is safe to call even when no * objects are on the stack. * * @return object from unmarshalling stack, or null if none */ public Object getStackTop() { if (m_stackDepth > 0) { return m_objectStack[m_stackDepth-1]; } else { return null; } } /** * Get count of active namespaces. * * @return number of active namespaces in stack */ public int getActiveNamespaceCount() { try { return m_reader.getNamespaceCount(m_reader.getNestingDepth()); } catch (IllegalArgumentException e) { throw new IllegalStateException("Internal error: " + e.getMessage()); } } /** * Get URI for an active namespace. * * @param index index number of namespace to be returned * @return URI for namespace at position * @throws IllegalArgumentException if invalid index */ public String getActiveNamespaceUri(int index) { return m_reader.getNamespaceUri(index); } /** * Get prefix for an active namespace. * * @param index stack position of namespace to be returned * @return prefix for namespace at position * @throws IllegalArgumentException if invalid index */ public String getActiveNamespacePrefix(int index) { return m_reader.getNamespacePrefix(index); } /** * Skip past current element. * * @exception JiBXException on any error (possibly wrapping other exception) */ public void skipElement() throws JiBXException { // check positioned at start tag if (!isEnd()) { // skip past the start tag next(); // loop until end tag reached int depth = 1; while (depth > 0) { if (isEnd()) { depth--; } else { depth++; } next(); } } } /** * Advance to next major parse event. This wraps the base parser call in * order to catch and handle exceptions, and to preserve a reasonable level * of parser independence. * * @return event type for next major parse event (START_TAG, TEXT, END_TAG, * or END_DOCUMENT) * @exception JiBXException on any error (possibly wrapping other exception) */ public int next() throws JiBXException { return m_reader.next(); } /** * Advance to next parse event. This wraps the base parser call in order to * catch and handle exceptions, and to preserve a reasonable level of parser * independence. * * @return event type for next parse event * @exception JiBXException on any error (possibly wrapping other exception) */ public int nextToken() throws JiBXException { return m_reader.nextToken(); } /** * Get the current parse event type. This wraps the base parser call in * order to catch and handle exceptions, and to preserve a reasonable level * of parser independence. * * @return event type for current parse event * @exception JiBXException on any error (possibly wrapping other exception) */ public int currentEvent() throws JiBXException { return m_reader.getEventType(); } /** * Get name associated with current parse event. * * @return name text for name associated with event (START_ELEMENT, * END_ELEMENT, or ENTITY_REF only) * @throws IllegalStateException if not at a start or end tag (optional) */ public String getName() { return m_reader.getName(); } /** * Get namespace associated with current parse event. * * @return URI for namespace associated with event (START_ELEMENT or * END_ELEMENT only), empty string if none * @throws IllegalStateException if not at a start or end tag (optional) */ public String getNamespace() { return m_reader.getNamespace(); } /** * Get namespace prefix associated with current parse event. * * @return prefix for namespace associated with event (START_ELEMENT or * END_ELEMENT only), null if none * @throws IllegalStateException if not at a start or end tag (optional) */ public String getPrefix() { return m_reader.getPrefix(); } /** * Get number of attributes for current START_ELEMENT event. The results are * undefined if called when not at a START_ELEMENT event. * * @return number of attributes, or -1 if not at START_ELEMENT * @throws IllegalStateException if not at a start tag (optional) */ public int getAttributeCount() { return m_reader.getAttributeCount(); } /** * Get attribute name for current START_ELEMENT event. The results are * undefined if called when not at a START_ELEMENT event. * * @param index index number of attribute to be returned * @return name of attribute at position * @throws IllegalStateException if not at a start tag or invalid index */ public String getAttributeName(int index) { return m_reader.getAttributeName(index); } /** * Get attribute namespace for current START_ELEMENT event. The results are * undefined if called when not at a START_ELEMENT event. * * @param index index number of attribute to be returned * @return namespace URI of attribute at position, empty string if none * @throws IllegalStateException if not at a start tag or invalid index */ public String getAttributeNamespace(int index) { return m_reader.getAttributeNamespace(index); } /** * Get attribute namespace prefix for current START_ELEMENT event. The * results are undefined if called when not at a START_ELEMENT event. * * @param index index number of attribute to be returned * @return prefix for namespace of attribute at position, null * if none * @throws IllegalStateException if not at a start tag or invalid index */ public String getAttributePrefix(int index) { return m_reader.getAttributePrefix(index); } /** * Get attribute value for current START_ELEMENT event. The results are * undefined if called when not at a START_ELEMENT event. * * @param index index number of attribute to be returned * @return value of attribute at position * @throws IllegalStateException if not at a start tag or invalid index */ public String getAttributeValue(int index) { return m_reader.getAttributeValue(index); } /** * Get number of namespace declarations for current START_ELEMENT event. The * results are undefined if called when not at a START_ELEMENT event. * * @return number of namespace declarations, or -1 if not at * START_ELEMENT */ public int getNamespaceCount() { try { int level = m_reader.getNestingDepth(); return m_reader.getNamespaceCount(level)- m_reader.getNamespaceCount(level-1); } catch (IllegalArgumentException e) { throw new IllegalStateException("Internal error: " + e.getMessage()); } } /** * Get namespace URI for namespace declaration on current START_ELEMENT * event. The results are undefined if called when not at a START_ELEMENT * event. * * @param index index number of declaration to be returned * @return namespace URI for declaration at position * @throws IllegalArgumentException if invalid index */ public String getNamespaceUri(int index) { int base = m_reader.getNamespaceCount(m_reader.getNestingDepth()-1); return m_reader.getNamespaceUri(base + index); } /** * Get namespace prefix for namespace declaration on current START_ELEMENT * event. The results are undefined if called when not at a START_ELEMENT * event. * * @param index index number of declaration to be returned * @return namespace prefix for declaration at position, * @throws IllegalArgumentException if invalid index */ public String getNamespacePrefix(int index) { int base = m_reader.getNamespaceCount(m_reader.getNestingDepth()-1); return m_reader.getNamespacePrefix(base + index); } /** * Get namespace URI matching prefix. * * @param prefix namespace prefix to be matched (null for * default namespace) * @return namespace URI for prefix */ public String getNamespaceUri(String prefix) { return m_reader.getNamespace(prefix); } /** * Get text value for current event. * * @return text value for event */ public String getText() { return m_reader.getText(); } }libjibx-java-1.1.6a/build/src/org/jibx/runtime/impl/XMLPullReaderFactory.java0000644000175000017500000004130110720550514026750 0ustar moellermoeller/* Copyright (c) 2005-2006, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime.impl; import java.io.IOException; import java.io.InputStream; import java.io.Reader; import org.jibx.runtime.IXMLReader; import org.jibx.runtime.JiBXException; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlPullParserFactory; /** * Factory for creating XMLPull parser instances. * * @author Dennis M. Sosnoski * @version 1.0 */ public class XMLPullReaderFactory implements IXMLReaderFactory { /** Default parser factory name when nothing else found. */ private static final String DEFAULT_PARSER_NAME = "org.xmlpull.mxp1.MXParserFactory"; /** Singleton instance of class. */ private static final XMLPullReaderFactory s_instance; static { // first try getting factory defined by property value XmlPullParserFactory factory = null; ClassLoader loader = Thread.currentThread().getContextClassLoader(); if (loader == null) { loader = XMLPullReaderFactory.class.getClassLoader(); } try { String name = System.getProperty(XmlPullParserFactory.PROPERTY_NAME); if (name != null && (name = name.trim()).length() > 0) { factory = XmlPullParserFactory.newInstance(name, loader.getClass()); } } catch (Exception ex) { /* deliberately empty */ } // if no luck that way, try getting it directly if (factory == null) { try { factory = XmlPullParserFactory.newInstance(); } catch (Exception ex) { /* deliberately empty */ } if (factory == null) { throw new RuntimeException("Unable to create XMLPull parser"); } } s_instance = new XMLPullReaderFactory(factory); } /** Factory used for constructing parser instances. */ private final XmlPullParserFactory m_factory; /** * Internal constructor. * * @param factory */ private XMLPullReaderFactory(XmlPullParserFactory factory) { m_factory = factory; } /** * Get instance of factory. * * @return factory instance */ public static XMLPullReaderFactory getInstance() { return s_instance; } /** * Create new parser instance. * * @param nsf enable namespace processing on parser flag * @return parser instance * @throws XmlPullParserException on error creating parser */ private XmlPullParser createParser(boolean nsf) throws XmlPullParserException { XmlPullParser parser = m_factory.newPullParser(); if (nsf) { parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true); } return parser; } /* (non-Javadoc) * @see org.jibx.runtime.impl.IXMLReaderFactory#createReader(java.io.InputStream, java.lang.String, java.lang.String, boolean) */ public IXMLReader createReader(InputStream is, String name, String enc, boolean nsf) throws JiBXException { try { return recycleReader(new XMLPullReader(createParser(nsf)), is, name, enc); } catch (XmlPullParserException e) { throw new JiBXException("Error creating parser", e); } } /* (non-Javadoc) * @see org.jibx.runtime.impl.IXMLReaderFactory#createReader(java.io.Reader, java.lang.String, boolean) */ public IXMLReader createReader(Reader rdr, String name, boolean nsf) throws JiBXException { try { return recycleReader(new XMLPullReader(createParser(nsf)), rdr, name); } catch (XmlPullParserException e) { throw new JiBXException("Error creating parser", e); } } /* (non-Javadoc) * @see org.jibx.runtime.impl.IXMLReaderFactory#recycleReader(org.jibx.runtime.IXMLReader, java.io.InputStream, java.lang.String, java.lang.String) */ public IXMLReader recycleReader(IXMLReader old, InputStream is, String name, String enc) throws JiBXException { ((XMLPullReader)old).setDocument(is, name, enc); return old; } /* (non-Javadoc) * @see org.jibx.runtime.impl.IXMLReaderFactory#recycleReader(org.jibx.runtime.IXMLReader, java.io.Reader, java.lang.String) */ public IXMLReader recycleReader(IXMLReader old, Reader rdr, String name) throws JiBXException { ((XMLPullReader)old).setDocument(rdr, name); return old; } /** * Wrapper for an XMLPull parser implementation. Since the internal parser * API was originally based on XMLPull, this basically just delegates all * the calls with minimal processing. */ private static class XMLPullReader implements IXMLReader { /** Actual parser. */ private final XmlPullParser m_parser; /** Document name. */ private String m_docName; /** Wrapper for supplied input stream. */ private InputStreamWrapper m_streamWrapper; /** Input document character encoding (null if unknown) */ private String m_encoding; /** * Constructor used by factory. * * @param parser */ private XMLPullReader(XmlPullParser parser) { m_parser = parser; } /** * Set document to be parsed from input stream. * * @param is document input stream * @param name document name (null if unknown) * @param enc document character encoding (null if unknown) * @throws JiBXException on parser configuration error */ private void setDocument(InputStream is, String name, String enc) throws JiBXException { try { if (enc == null) { if (m_streamWrapper == null) { m_streamWrapper = new InputStreamWrapper(); } m_streamWrapper.setInput(is, enc); setDocument(m_streamWrapper.getReader(), name); m_encoding = m_streamWrapper.getEncoding(); } else { m_docName = name; m_encoding = enc; m_parser.setInput(is, enc); } } catch (XmlPullParserException e) { throw new JiBXException("Error initializing parser", e); } catch (IOException e) { throw new JiBXException("Error reading from stream", e); } } /** * Set document to be parsed from reader. * * @param rdr document reader * @param name document name (null if unknown) * @throws JiBXException on parser configuration error */ private void setDocument(Reader rdr, String name) throws JiBXException { try { m_docName = name; m_encoding = null; m_parser.setInput(rdr); } catch (XmlPullParserException e) { throw new JiBXException("Error initializing parser", e); } } /** * Format error message from exception. * * @param e root cause exception */ private String describeException(Exception e) { return "Error parsing document " + buildPositionString() + ": " + e.getMessage(); } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#buildPositionString() */ public String buildPositionString() { String base = "(line " + m_parser.getLineNumber() + ", col " + m_parser.getColumnNumber(); if (m_docName != null) { base += ", in " + m_docName; } return base + ')'; } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#nextToken() */ public int nextToken() throws JiBXException { try { return m_parser.nextToken(); } catch (IOException e) { throw new JiBXException("Error accessing document", e); } catch (XmlPullParserException e) { throw new JiBXException ("Error parsing document " + buildPositionString(), e); } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#next() */ public int next() throws JiBXException { try { return m_parser.next(); } catch (IOException e) { throw new JiBXException("Error accessing document", e); } catch (XmlPullParserException e) { throw new JiBXException ("Error parsing document " + buildPositionString(), e); } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getEventType() */ public int getEventType() throws JiBXException { try { return m_parser.getEventType(); } catch (XmlPullParserException e) { throw new JiBXException ("Error parsing document " + buildPositionString(), e); } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getName() */ public String getName() { String name = m_parser.getName(); if (name == null) { throw new IllegalStateException ("Internal state error: not at start or end tag"); } else { return name; } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getNamespace() */ public String getNamespace() { String uri = m_parser.getNamespace(); if (uri == null) { throw new IllegalStateException ("Internal state error: not at start or end tag"); } else { return uri; } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getPrefix() */ public String getPrefix() { return m_parser.getPrefix(); } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getAttributeCount() */ public int getAttributeCount() { int count = m_parser.getAttributeCount(); if (count < 0) { throw new IllegalStateException ("Internal state error: not at start tag"); } else { return count; } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getAttributeName(int) */ public String getAttributeName(int index) { try { return m_parser.getAttributeName(index); } catch (ArrayIndexOutOfBoundsException e) { throw new IllegalStateException(describeException(e)); } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getAttributeNamespace(int) */ public String getAttributeNamespace(int index) { try { return m_parser.getAttributeNamespace(index); } catch (ArrayIndexOutOfBoundsException e) { throw new IllegalStateException(describeException(e)); } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getAttributePrefix(int) */ public String getAttributePrefix(int index) { try { return m_parser.getAttributePrefix(index); } catch (ArrayIndexOutOfBoundsException e) { throw new IllegalStateException(describeException(e)); } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getAttributeValue(int) */ public String getAttributeValue(int index) { try { return m_parser.getAttributeValue(index); } catch (ArrayIndexOutOfBoundsException e) { throw new IllegalStateException(describeException(e)); } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getAttributeValue(java.lang.String, java.lang.String) */ public String getAttributeValue(String ns, String name) { try { return m_parser.getAttributeValue(ns, name); } catch (ArrayIndexOutOfBoundsException e) { throw new IllegalStateException(describeException(e)); } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getText() */ public String getText() { return m_parser.getText(); } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getNestingDepth() */ public int getNestingDepth() { return m_parser.getDepth(); } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getNamespaceCount(int) */ public int getNamespaceCount(int depth) { try { return m_parser.getNamespaceCount(depth); } catch (XmlPullParserException e) { throw new IllegalArgumentException(describeException(e)); } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getNamespaceUri(int) */ public String getNamespaceUri(int index) { try { return m_parser.getNamespaceUri(index); } catch (XmlPullParserException e) { throw new IllegalArgumentException(describeException(e)); } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getNamespacePrefix(int) */ public String getNamespacePrefix(int index) { try { return m_parser.getNamespacePrefix(index); } catch (XmlPullParserException e) { throw new IllegalArgumentException(describeException(e)); } } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getDocumentName() */ public String getDocumentName() { return m_docName; } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getLineNumber() */ public int getLineNumber() { return m_parser.getLineNumber(); } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getColumnNumber() */ public int getColumnNumber() { return m_parser.getColumnNumber(); } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getNamespace(java.lang.String) */ public String getNamespace(String prefix) { return m_parser.getNamespace(prefix); } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#getInputEncoding() */ public String getInputEncoding() { return m_encoding; } /* (non-Javadoc) * @see org.jibx.runtime.IXMLReader#isNamespaceAware() */ public boolean isNamespaceAware() { return m_parser.getFeature (XmlPullParser.FEATURE_PROCESS_NAMESPACES); } } }libjibx-java-1.1.6a/build/src/org/jibx/runtime/impl/XMLWriterBase.java0000644000175000017500000003643510767273760025464 0ustar moellermoeller/* Copyright (c) 2004-2008, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime.impl; import java.io.IOException; import org.jibx.runtime.IExtensibleWriter; /** * Base implementation of XML writer interface. This provides common handling of * indentation and formatting that can be used for all forms of text output. * * @author Dennis M. Sosnoski */ public abstract class XMLWriterBase extends XMLWriterNamespaceBase implements IExtensibleWriter { /** Flag for current element has text content. */ private boolean m_textSeen; /** Flag for current element has content. */ private boolean m_contentSeen; /** Flag for first write done (used to skip indentation before first element). */ private boolean m_afterFirst; /** * Constructor. * * @param uris ordered array of URIs for namespaces used in document (must * be constant; the value in position 0 must always be the empty string "", * and the value in position 1 must always be the XML namespace * "http://www.w3.org/XML/1998/namespace") */ public XMLWriterBase(String[] uris) { super(uris); m_contentSeen = true; } /** * Copy constructor. This initializes the extension namespace information * from an existing instance. * * @param base existing instance * @param uris ordered array of URIs for namespaces used in document */ public XMLWriterBase(XMLWriterBase base, String[] uris) { super(base, uris); m_contentSeen = true; m_afterFirst = base.m_afterFirst; } /** * Write markup text to output. Markup text can be written directly to the * output without the need for any escaping, but still needs to be properly * encoded. * * @param text markup text to be written * @throws IOException if error writing to document */ protected abstract void writeMarkup(String text) throws IOException; /** * Write markup character to output. Markup text can be written directly to * the output without the need for any escaping, but still needs to be * properly encoded. * * @param chr markup character to be written * @throws IOException if error writing to document */ protected abstract void writeMarkup(char chr) throws IOException; /** * Write namespace prefix to output. This internal method is used to throw * an exception when an undeclared prefix is used. * * @param index namespace URI index number * @throws IOException if error writing to document */ protected abstract void writePrefix(int index) throws IOException; /** * Write attribute text to output. This needs to write the text with any * appropriate escaping. * * @param text attribute value text to be written * @throws IOException if error writing to document */ protected abstract void writeAttributeText(String text) throws IOException; /** * Request output indent with bias from current element nesting level. This * is used internally for proper indenting in special cases. * * @throws IOException on error writing to document */ protected abstract void indent(int bias) throws IOException; /** * Set up for writing any content to element. If the start tag for the * element has not been closed, this will close it. * * @throws IOException on error writing to document */ protected final void flagContent() throws IOException { if (!m_contentSeen) { writeMarkup('>'); incrementNesting(); m_contentSeen = true; } } /** * Set up for writing text content to element. If the start tag for the * element has not been closed, this will close it. * * @throws IOException on error writing to document */ protected final void flagTextContent() throws IOException { flagContent(); m_textSeen = true; } /** * Write XML declaration to document. This can only be called before any * other methods in the interface are called. * * @param version XML version text * @param encoding text for encoding attribute (unspecified if * null) * @param standalone text for standalone attribute (unspecified if * null) * @throws IOException on error writing to document */ public void writeXMLDecl(String version, String encoding, String standalone) throws IOException { if (m_afterFirst) { throw new IllegalStateException ("XML declaration must be written before any other output"); } else { writeMarkup(""); m_afterFirst = true; } } /** * Generate open start tag. This allows attributes to be added to the start * tag, but must be followed by a {@link #closeStartTag} call. * * @param index namespace URI index number * @param name unqualified element name * @throws IOException on error writing to document */ public void startTagOpen(int index, String name) throws IOException { flagContent(); indentAfterFirst(); writeMarkup('<'); writePrefix(index); writeMarkup(name); } /** * Generate start tag for element with namespaces. This creates the actual * start tag, along with any necessary namespace declarations. Previously * active namespace declarations are not duplicated. The tag is * left incomplete, allowing other attributes to be added. * * @param index namespace URI index number * @param name element name * @param nums array of namespace indexes defined by this element (must * be constant, reference is kept until end of element) * @param prefs array of namespace prefixes mapped by this element (no * null values, use "" for default namespace declaration) * @throws IOException on error writing to document */ public void startTagNamespaces(int index, String name, int[] nums, String[] prefs) throws IOException { // find the namespaces actually being declared flagContent(); int[] deltas = openNamespaces(nums, prefs); // create the start tag for element startTagOpen(index, name); // add namespace declarations to open element for (int i = 0; i < deltas.length; i++) { int slot = deltas[i]; String prefix = getNamespacePrefix(slot); if (prefix.length() > 0) { writeMarkup(" xmlns:"); writeMarkup(prefix); writeMarkup("=\""); } else { writeMarkup(" xmlns=\""); } writeAttributeText(getNamespaceUri(slot)); writeMarkup('"'); } } /** * Add attribute to current open start tag. This is only valid after a call * to {@link #startTagOpen} or {@link #startTagNamespaces} and before the * corresponding call to {@link #closeStartTag}. * * @param index namespace URI index number * @param name unqualified attribute name * @param value text value for attribute * @throws IOException on error writing to document */ public void addAttribute(int index, String name, String value) throws IOException { writeMarkup(' '); writePrefix(index); writeMarkup(name); writeMarkup("=\""); writeAttributeText(value); writeMarkup('"'); } /** * Close the current open start tag. This is only valid after a call to * {@link #startTagOpen}. * * @throws IOException on error writing to document */ public void closeStartTag() throws IOException { m_textSeen = m_contentSeen = false; } /** * Close the current open start tag as an empty element. This is only valid * after a call to {@link #startTagOpen}. * * @throws IOException on error writing to document */ public void closeEmptyTag() throws IOException { writeMarkup("/>"); incrementNesting(); decrementNesting(); m_contentSeen = true; } /** * Conditionally indent output only if not the first write. This is used * both to track the output state (useful to check that the XML declaration * is only written at the start of the document) and to avoid an initial * blank line in the case where an XML declaration is not written. * * @throws IOException on write error */ private void indentAfterFirst() throws IOException { if (m_afterFirst) { indent(0); } else { m_afterFirst = true; } } /** * Generate closed start tag. No attributes or namespaces can be added to a * start tag written using this call. * * @param index namespace URI index number * @param name unqualified element name * @throws IOException on error writing to document */ public void startTagClosed(int index, String name) throws IOException { flagContent(); indentAfterFirst(); writeMarkup('<'); writePrefix(index); writeMarkup(name); m_textSeen = m_contentSeen = false; } /** * Generate end tag. * * @param index namespace URI index number * @param name unqualified element name * @throws IOException on error writing to document */ public void endTag(int index, String name) throws IOException { // first adjust indentation if (m_contentSeen && !m_textSeen) { indent(-1); } // check for content written to element if (m_contentSeen) { // content was written, which means start tag closed and end needed writeMarkup("'); } else { // no content, just close start tag as empty tag writeMarkup("/>"); incrementNesting(); } // adjust flags for containing element decrementNesting(); m_textSeen = false; m_contentSeen = true; } /** * Write comment to document. * * @param text comment text * @throws IOException on error writing to document */ public void writeComment(String text) throws IOException { flagContent(); writeMarkup(""); } /** * Write entity reference to document. * * @param name entity name * @throws IOException on error writing to document */ public void writeEntityRef(String name) throws IOException { flagContent(); writeMarkup('&'); writeMarkup(name); writeMarkup(';'); } /** * Write DOCTYPE declaration to document. * * @param name root element name * @param sys system ID (null if none, must be * non-null for public ID to be used) * @param pub public ID (null if none) * @param subset internal subset (null if none) * @throws IOException on error writing to document */ public void writeDocType(String name, String sys, String pub, String subset) throws IOException { indentAfterFirst(); writeMarkup("'); } /** * Write processing instruction to document. * * @param target processing instruction target name * @param data processing instruction data * @throws IOException on error writing to document */ public void writePI(String target, String data) throws IOException { flagContent(); indentAfterFirst(); writeMarkup(""); } /** * Flush document output. Subclasses must implement this method to force all * buffered output to be written. To assure proper handling of an open start * tag they should first call {@link #flagContent()}. * * @throws IOException on error writing to document */ public abstract void flush() throws IOException; /** * Close document output. Completes writing of document output, including * closing the output medium. * * @throws IOException on error writing to document */ public abstract void close() throws IOException; /** * Reset to initial state for reuse. The writer is serially reusable, * as long as this method is called to clear any retained state information * between uses. It is automatically called when output is set. */ public void reset() { m_textSeen = false; m_contentSeen = true; m_afterFirst = false; super.reset(); } }libjibx-java-1.1.6a/build/src/org/jibx/runtime/impl/XMLWriterNamespaceBase.java0000644000175000017500000004343210720550514027254 0ustar moellermoeller/* Copyright (c) 2004-2005, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime.impl; import java.io.IOException; import java.util.Stack; import org.jibx.runtime.IXMLWriter; /** * Base implementation of XML writer interface namespace handling. This tracks * only the namespace declarations and the element nesting depth. It can be used * as a base class for all forms of output. * * @author Dennis M. Sosnoski * @version 1.0 */ public abstract class XMLWriterNamespaceBase implements IXMLWriter { /** Empty array for default return. */ private static final int[] EMPTY_INT_ARRAY = new int[0]; /** URIs for namespaces. */ protected String[] m_uris; /** Prefixes currently defined for namespaces. */ protected String[] m_prefixes; /** Depth of nested tags. */ private int m_nestingDepth; /** Stack of information for namespace declarations. */ private Stack m_namespaceStack; /** Depth of top namespace declaration level. */ private int m_namespaceDepth; /** Extension namespace URIs (null if not in use). */ private String[][] m_extensionUris; /** Extension namespace prefixes (null if not in use). */ private String[][] m_extensionPrefixes; /** * Constructor. * * @param uris ordered array of URIs for namespaces used in document (must * be constant; the value in position 0 must always be the empty string "", * and the value in position 1 must always be the XML namespace * "http://www.w3.org/XML/1998/namespace") */ public XMLWriterNamespaceBase(String[] uris) { m_uris = uris; m_prefixes = new String[uris.length]; m_prefixes[0] = ""; m_prefixes[1] = "xml"; m_namespaceStack = new Stack(); m_namespaceDepth = -1; } /** * Copy constructor. This initializes the extension namespace information * from an existing instance. * * @param base existing instance * @param uris ordered array of URIs for namespaces used in document */ public XMLWriterNamespaceBase(XMLWriterNamespaceBase base, String[] uris) { this(uris); m_extensionUris = base.m_extensionUris; m_extensionPrefixes = base.m_extensionPrefixes; m_nestingDepth = base.m_nestingDepth; } /** * Report to subclass that namespace has been defined. * * @param index namespace URI index number * @param prefix prefix used for namespace * @throws IOException if error writing to document */ protected abstract void defineNamespace(int index, String prefix) throws IOException; /** * Report to subclass that namespace has been undefined. * * @param index namespace URI index number */ protected abstract void undefineNamespace(int index); /** * Set namespace URIs. It is provided so that subclasses can implement easy * reuse. * * @param uris ordered array of URIs for namespaces used in document */ protected void internalSetUris(String[] uris) { m_uris = uris; m_prefixes = new String[uris.length]; m_prefixes[0] = ""; m_prefixes[1] = "xml"; } /** * Set prefix for namespace. * * @param index namespace URI index number * @param prefix */ private void setNamespacePrefix(int index, String prefix) { if (index < m_prefixes.length) { m_prefixes[index] = prefix; } else if (m_extensionUris != null) { index -= m_prefixes.length; for (int i = 0; i < m_extensionUris.length; i++) { int length = m_extensionUris[i].length; if (index < length) { m_extensionPrefixes[i][index] = prefix; break; } else { index -= length; } } } } /** * Open the specified namespaces. Previously active namespace declarations * are not duplicated. * * @param nums array of namespace indexes defined by this element (must * be constant, reference is kept until end of element) * @param prefs array of namespace prefixes mapped by this element (no * null values, use "" for default namespace declaration) * @return array of indexes for namespaces not previously active (the ones * actually needing to be declared, in the case of text output) * @throws IOException on error writing to document */ public int[] openNamespaces(int[] nums, String[] prefs) throws IOException { // find the number of namespaces actually being declared int count = 0; for (int i = 0; i < nums.length; i++) { // set prefix only if different and not changing prefix to default String newpref = prefs[i]; String oldpref = getNamespacePrefix(nums[i]); boolean use = false; if (!newpref.equals(oldpref) && (!"".equals(newpref) || oldpref == null)) { use = true; for (int j = 0; j < i; j++) { if (nums[i] == nums[j]) { if (prefs[i] == null) { nums[i] = -1; } else { use = false; break; } } } } if (use) { count++; } else { nums[i] = -1; } } // check if there's actually any change int[] deltas = EMPTY_INT_ARRAY; if (count > 0) { // get the set of namespace indexes that are changing String[] priors = new String[count]; if (count == nums.length) { // replace the full set, tracking the prior values deltas = nums; for (int i = 0; i < count; i++) { int slot = deltas[i]; priors[i] = getNamespacePrefix(slot); setNamespacePrefix(slot, prefs[i]); defineNamespace(slot, prefs[i]); } } else { // replace only changed ones, tracking both indexes and priors int fill = 0; deltas = new int[count]; for (int i = 0; i < nums.length; i++) { int slot = nums[i]; if (slot >= 0) { deltas[fill] = slot; priors[fill++] = getNamespacePrefix(slot); setNamespacePrefix(slot, prefs[i]); defineNamespace(slot, prefs[i]); } } } // set up for undeclaring namespaces on close of element m_namespaceStack.push (new DeclarationInfo(m_nestingDepth, deltas, priors)); m_namespaceDepth = m_nestingDepth; } return deltas; } /** * Ends the current innermost set of nested namespace definitions. Reverts * the namespaces involved to their previously-declared prefixes, and sets * up for ending the new innermost set. */ private void closeNamespaces() { // revert prefixes for namespaces included in last declaration DeclarationInfo info = (DeclarationInfo)m_namespaceStack.pop(); int[] deltas = info.m_deltas; String[] priors = info.m_priors; for (int i = 0; i < deltas.length; i++) { int index = deltas[i]; undefineNamespace(index); if (index < m_prefixes.length) { m_prefixes[index] = priors[i]; } else if (m_extensionUris != null) { index -= m_prefixes.length; for (int j = 0; j < m_extensionUris.length; j++) { int length = m_extensionUris[j].length; if (index < length) { m_extensionPrefixes[j][index] = priors[i]; } else { index -= length; } } } } // set up for clearing next nested set if (m_namespaceStack.empty()) { m_namespaceDepth = -1; } else { m_namespaceDepth = ((DeclarationInfo)m_namespaceStack.peek()).m_depth; } } /** * Get the current element nesting depth. Elements are only counted in the * depth returned when they're officially open - after the start tag has * been output and before the end tag has been output. * * @return number of nested elements at current point in output */ public final int getNestingDepth() { return m_nestingDepth; } /** * Get the number of namespaces currently defined. This is equivalent to the * index of the next extension namespace added. * * @return namespace count */ public final int getNamespaceCount() { int count = m_uris.length; if (m_extensionUris != null) { for (int i = 0; i < m_extensionUris.length; i++) { count += m_extensionUris[i].length; } } return count; } /** * Increment the current nesting depth. Subclasses need to call this method * whenever an element start tag is written. */ protected void incrementNesting() { m_nestingDepth++; } /** * Decrement the current nesting depth. Subclasses need to call this method * whenever an element end tag is written. */ protected void decrementNesting() { --m_nestingDepth; if (m_nestingDepth >= 0) { while (m_nestingDepth == m_namespaceDepth) { closeNamespaces(); } } } /** * Reset to initial state for reuse. Subclasses overriding this method need * to call this base class implementation during their processing. */ public void reset() { m_nestingDepth = 0; m_namespaceDepth = -1; m_namespaceStack.clear(); m_extensionUris = null; m_extensionPrefixes = null; } /** * Get namespace URIs for mapping. This gets the full ordered array of * namespaces known in the binding used for this marshalling, where the * index number of each namespace URI is the namespace index used to lookup * the prefix when marshalling a name in that namespace. The returned array * must not be modified. * * @return array of namespaces */ public final String[] getNamespaces() { return m_uris; } /** * Get URI for namespace. * * @param index namespace URI index number * @return namespace URI text, or null if the namespace index * is invalid */ public final String getNamespaceUri(int index) { if (index < m_uris.length) { return m_uris[index]; } else if (m_extensionUris != null) { index -= m_uris.length; for (int i = 0; i < m_extensionUris.length; i++) { int length = m_extensionUris[i].length; if (index < length) { return m_extensionUris[i][index]; } else { index -= length; } } } return null; } /** * Get current prefix defined for namespace. * * @param index namespace URI index number * @return current prefix text, or null if the namespace is not * currently mapped */ public final String getNamespacePrefix(int index) { if (index < m_prefixes.length) { return m_prefixes[index]; } else if (m_extensionUris != null) { index -= m_prefixes.length; for (int i = 0; i < m_extensionUris.length; i++) { int length = m_extensionUris[i].length; if (index < length) { return m_extensionPrefixes[i][index]; } else { index -= length; } } } return null; } /** * Get index of namespace mapped to prefix. This can be an expensive * operation with time proportional to the number of namespaces defined, so * it should be used with care. * * @param prefix text to match (non-null, use "" for default * prefix) * @return index namespace URI index number mapped to prefix */ public final int getPrefixIndex(String prefix) { if (m_extensionPrefixes != null) { for (int i = m_extensionPrefixes.length-1; i >= 0; i--) { String[] prefixes = m_extensionPrefixes[i]; for (int j = prefixes.length-1; j >= 0; j--) { if (prefix.equals(prefixes[j])) { int index = j + m_prefixes.length; for (int k = i-1; k >= 0; k--) { index += m_extensionPrefixes[k].length; } return index; } } } } for (int i = m_prefixes.length-1; i >= 0; i--) { if (prefix.equals(m_prefixes[i])) { return i; } } return -1; } /** * Grow array of array of strings. * * @param base array to be grown (null is treated as zero * length) * @param items array of strings to be added at end of base array * @return array with added array of items */ protected static String[][] growArray(String[][] base, String[] items) { if (base == null) { return new String[][] { items }; } else { int length = base.length; String[][] grow = new String[length+1][]; System.arraycopy(base, 0, grow, 0, length); grow[length] = items; return grow; } } /** * Shrink array of array of strings. * * @param base array to be shrunk * @return array with last set of items eliminated (null if * empty) */ protected static String[][] shrinkArray(String[][] base) { int length = base.length; if (length == 1) { return null; } else { String[][] shrink = new String[length-1][]; System.arraycopy(base, 0, shrink, 0, length-1); return shrink; } } /** * Append extension namespace URIs to those in mapping. * * @param uris namespace URIs to extend those in mapping */ public void pushExtensionNamespaces(String[] uris) { m_extensionUris = growArray(m_extensionUris, uris); m_extensionPrefixes = growArray(m_extensionPrefixes, new String[uris.length]); } /** * Remove extension namespace URIs. This removes the last set of * extension namespaces pushed using {@link #pushExtensionNamespaces}. */ public void popExtensionNamespaces() { m_extensionUris = shrinkArray(m_extensionUris); m_extensionPrefixes = shrinkArray(m_extensionPrefixes); } /** * Get extension namespace URIs added to those in mapping. This gets the * current set of extension definitions. The returned arrays must not be * modified. * * @return array of arrays of extension namespaces (null if * none) */ public final String[][] getExtensionNamespaces() { return m_extensionUris; } /** * Namespace declaration tracking information. This tracks all information * associated with an element that declares namespaces. */ private static class DeclarationInfo { /** Depth of element making declaration. */ public final int m_depth; /** Indexes of namespaces included in declarations. */ public final int[] m_deltas; /** Prior prefixes for namespaces. */ public final String[] m_priors; /** Simple constructor. */ public DeclarationInfo(int depth, int[] deltas, String[] priors) { m_depth = depth; m_deltas = deltas; m_priors = priors; } } }libjibx-java-1.1.6a/build/src/org/jibx/runtime/impl/package.html0000644000175000017500000000111310071714422024412 0ustar moellermoeller JiBX data binding framework runtime implementation package. These classes are designed for use in generated code by the binding generator portion of the framework. They are not generally intended for direct use by end users, and are subject to more change than the published external APIs.

The only circumstance in which an end user of the framework should need to work with these classes is when writing a marshaller or unmarshaller for a class. These replace generated code for the classes involved, and hence allow full control over the operation of the framework. libjibx-java-1.1.6a/build/src/org/jibx/runtime/BindingDirectory.java0000644000175000017500000003003311002543054025271 0ustar moellermoeller/* Copyright (c) 2002-2008, Sosnoski Software Solutions, Inc. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; /** * Abstract class with static methods to find the binding factory corresponding * to a binding name. * * @author Dennis M. Sosnoski */ public abstract class BindingDirectory { /** Name of String[] field giving binding factory name list. */ public static final String BINDINGLIST_NAME = "JiBX_bindingList"; /** Prefix of binding factory name. */ public static final String BINDINGFACTORY_PREFIX = "JiBX_"; /** Suffix of binding factory name. */ public static final String BINDINGFACTORY_SUFFIX = "Factory"; /** Binding factory method to get instance of factory. */ public static final String FACTORY_INSTMETHOD = "getInstance"; /** Empty argument list. */ public static final Class[] EMPTY_ARGS = new Class[0]; /** * Get list of bindings for class. This just accesses the static variable * added to each class with a top-level mapping. * * @param clas class with top-level mapping in binding * @return list of bindings defined for that class (as a text string) * @throws JiBXException on error accessing binding information */ private static String getBindingList(Class clas)throws JiBXException { try { Field field = clas.getDeclaredField(BINDINGLIST_NAME); try { // should be able to access field anyway, but just in case field.setAccessible(true); } catch (Exception e) { /* deliberately left empty */ } return (String)field.get(null); } catch (NoSuchFieldException e) { throw new JiBXException ("Unable to access binding information for class " + clas.getName() + "\nMake sure the binding has been compiled", e); } catch (IllegalAccessException e) { throw new JiBXException ("Error in added code for class " + clas.getName() + "Please report this to the JiBX developers", e); } } /** * Get instance of factory. Loads the factory class using the classloader * for the supplied class, then calls the get instance method of the * factory class. * * @param name fully qualified name of factory class * @param clas class providing factory * @param loader class loader to be used for loading factory * @return binding factory instance * @throws JiBXException on error loading or accessing factory */ private static IBindingFactory getFactoryFromName(String name, Class clas, ClassLoader loader) throws JiBXException { Throwable ex = null; Object result = null; IBindingFactory ifact = null; try { Class factory = loader.loadClass(name); Method method = factory.getMethod(FACTORY_INSTMETHOD, EMPTY_ARGS); result = method.invoke(null, (Object[])null); } catch (SecurityException e) { ex = e; } catch (ClassNotFoundException e) { ex = e; } catch (NoSuchMethodException e) { ex = e; } catch (IllegalAccessException e) { ex = e; } catch (InvocationTargetException e) { ex = e; } finally { if (ex == null) { if (result instanceof IBindingFactory) { ifact = (IBindingFactory)result; int diff = ifact.getCompilerVersion() ^ IBindingFactory.CURRENT_VERSION_NUMBER; if ((diff & IBindingFactory.COMPATIBLE_VERSION_MASK) != 0) { throw new JiBXException ("Binding information for class " + clas.getName() + " must be recompiled with current binding " + "compiler (compiled with " + ifact.getCompilerDistribution() + ", runtime is " + IBindingFactory.CURRENT_VERSION_NAME + ")"); } } else { throw new JiBXException ("Binding information for class " + clas.getName() + " must be regenerated with current binding " + "compiler"); } } else { throw new JiBXException ("Unable to access binding information for class " + clas.getName() + "\nMake sure classes generated by the " + "binding compiler are available at runtime", ex); } } return ifact; } /** * Get instance of binding factory. Finds the binding factory for the * named binding on the target class, then loads that factory and returns * an instance. * * @param name binding name * @param clas target class for binding * @param loader class loader to be used for loading factory * @return binding factory instance * @throws JiBXException on any error in finding or accessing factory */ public static IBindingFactory getFactory(String name, Class clas, ClassLoader loader) throws JiBXException { String list = getBindingList(clas); String match = BINDINGFACTORY_PREFIX + name + BINDINGFACTORY_SUFFIX + '|'; int index = list.indexOf(match); if (index >= 0) { int mark = list.lastIndexOf('|', index); String fname = list.substring(mark+1, index + match.length() - 1); mark = fname.indexOf('='); if (mark >= 0) { fname = fname.substring(0, mark); } return getFactoryFromName(fname, clas, loader); } else { throw new JiBXException("Binding '" + name + "' not found for class " + clas.getName()); } } /** * Get instance of binding factory. Finds the binding factory for the * named binding on the target class, then loads that factory and returns * an instance. * * @param name binding name * @param clas target class for binding * @return binding factory instance * @throws JiBXException on any error in finding or accessing factory */ public static IBindingFactory getFactory(String name, Class clas) throws JiBXException { return getFactory(name, clas, clas.getClassLoader()); } /** * Get instance of binding factory. Finds the binding factory for the * target class, then loads that factory and returns an instance. This * method can only be used with target classes that are mapped in only * one binding. * * @param clas target class for binding * @return binding factory instance * @throws JiBXException on any error in finding or accessing factory */ public static IBindingFactory getFactory(Class clas) throws JiBXException { String list = getBindingList(clas); if (list != null && list.length() > 2) { String fact = list.substring(1, list.length()-1); if (fact.indexOf('|') < 0) { return getFactoryFromName(fact, clas, clas.getClassLoader()); } } throw new JiBXException("Multiple bindings defined for class " + clas.getName()); } /** * Get instance of binding factory. Finds the binding factory for the * named binding on the target class, then loads that factory and returns * an instance. * * @param bname binding name * @param pack target package for binding * @param loader class loader to be used for loading factory * @return binding factory instance * @throws JiBXException on any error in finding or accessing factory */ public static IBindingFactory getFactory(String bname, String pack, ClassLoader loader) throws JiBXException { String cname = (pack == null ? "" : pack + '.') + BINDINGFACTORY_PREFIX + bname + BINDINGFACTORY_SUFFIX; Throwable ex = null; Object result = null; IBindingFactory ifact = null; try { Class factory = loader.loadClass(cname); Method method = factory.getMethod(FACTORY_INSTMETHOD, EMPTY_ARGS); result = method.invoke(null, (Object[])null); } catch (SecurityException e) { ex = e; } catch (ClassNotFoundException e) { ex = e; } catch (NoSuchMethodException e) { ex = e; } catch (IllegalAccessException e) { ex = e; } catch (InvocationTargetException e) { ex = e; } finally { if (ex == null) { if (result instanceof IBindingFactory) { ifact = (IBindingFactory)result; int diff = ifact.getCompilerVersion() ^ IBindingFactory.CURRENT_VERSION_NUMBER; if ((diff & IBindingFactory.COMPATIBLE_VERSION_MASK) != 0) { throw new JiBXException ("Binding '" + bname + "' must be recompiled with current binding " + "compiler (compiled with " + ifact.getCompilerDistribution() + ", runtime is " + IBindingFactory.CURRENT_VERSION_NAME + ")"); } } else { throw new JiBXException ("Classloader conflict for binding '" + bname + "' - factory does not implement required interface"); } } else { throw new JiBXException ("Unable to access binding '" + bname + "'\nMake sure classes generated by the " + "binding compiler are available at runtime", ex); } } return ifact; } /** * Get instance of binding factory. Finds the binding factory for the named * binding compiled to the specified package, then loads that factory and * returns an instance. * * @param bname binding name * @param pack target package for binding * @return binding factory instance * @throws JiBXException on any error in finding or accessing factory */ public static IBindingFactory getFactory(String bname, String pack) throws JiBXException { return getFactory(bname, pack, BindingDirectory.class.getClassLoader()); } }libjibx-java-1.1.6a/build/src/org/jibx/runtime/EnumSet.java0000644000175000017500000002402610524403562023426 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime; import java.util.Arrays; import java.util.Comparator; /** * Named value set support class. This provides convenience methods to support * working with a set of named static final int values, including * translating them to and from String representations. It's * intended for use with relatively small nonnegative int values. * * @author Dennis M. Sosnoski */ public class EnumSet { /** Maximum int value supported for enumerations. */ public static final int VALUE_LIMIT = 512; /** Actual item definitions (used for extensions). */ private final EnumItem[] m_items; /** Enumeration names in index number order. */ private final String[] m_indexedNames; /** Enumeration names in sort order. */ private final String[] m_orderedNames; /** Index values corresponding to sorted names. */ private final int[] m_orderedIndexes; /** * Constructor from array of enumeration items. The supplied items can be in * any order, and the numeric values do not need to be contiguous (but must * be unique, nonnegative, and should be fairly small). Note that this * constructor will reorder the items in the supplied array as a side * effect. * * @param items array of enumeration items (will be reordered) */ public EnumSet(EnumItem[] items) { m_items = items; if (items.length > 0) { // first sort items in ascending name order Arrays.sort(items, new Comparator() { public int compare(Object a, Object b) { return ((EnumItem)a).m_name.compareTo(((EnumItem)b).m_name); } }); // populate arrays for name lookup m_orderedNames = new String[items.length]; m_orderedIndexes = new int[items.length]; int high = -1; for (int i = 0; i < items.length; i++) { EnumItem item = items[i]; if (item.m_value < 0) { throw new IllegalArgumentException("Negative item value " + item.m_value + " not allowed"); } else if (item.m_value > high) { high = item.m_value; if (high >= VALUE_LIMIT) { throw new IllegalArgumentException ("Enumeration with value " + high + " too large to be used."); } } m_orderedNames[i] = item.m_name; m_orderedIndexes[i] = item.m_value; } // populate array for indexed lookup of names m_indexedNames = new String[high+1]; for (int i = 0; i < items.length; i++) { EnumItem item = items[i]; if (m_indexedNames[item.m_value] == null) { m_indexedNames[item.m_value] = item.m_name; } else { throw new IllegalArgumentException ("Duplicate index value " + item.m_value); } } } else { m_indexedNames = new String[0]; m_orderedNames = new String[0]; m_orderedIndexes = new int[0]; } } /** * Constructor from array of names. The value associated with each name is * just the position index in the array added to the start value. * * @param start item value for first added name * @param names array of names (no null entries allowed) */ public EnumSet(int start, String[] names) { this(buildItems(start, names)); } /** * Constructor from existing enumeration with added names. The value * associated with each name is just the position index in the array added * to the start value. * * @param base base enumeration to be extended * @param start item value for first added name * @param names array of names (no null entries allowed) */ public EnumSet(EnumSet base, int start, String[] names) { this(mergeItems(base, start, names)); } /** * Generate array of enumeration items from array of names. The value * associated with each name is just the position index in the array added * to the start value. * * @param start item value for first added name * @param names array of names (no null entries allowed) */ private static EnumItem[] buildItems(int start, String[] names) { EnumItem[] items = new EnumItem[names.length]; for (int i = 0; i < items.length; i++) { items[i] = new EnumItem(start+i, names[i]); } return items; } /** * Generate array of enumeration items from base enumeration and array of * names. The value associated with each name is just the position index in * the array added to the start value. * * @param base base enumeration to be extended * @param start item value for first added name * @param names array of names (no null entries allowed) */ private static EnumItem[] mergeItems(EnumSet base, int start, String[] names) { int prior = base.m_items.length; EnumItem[] merges = new EnumItem[prior + names.length]; System.arraycopy(base.m_items, 0, merges, 0, prior); for (int i = 0; i < names.length; i++) { merges[prior+i] = new EnumItem(start+i, names[i]); } return merges; } /** * Get name for value if defined. * * @param value enumeration value * @return name for value, or null if not defined */ public String getName(int value) { if (value >= 0 && value < m_indexedNames.length) { return m_indexedNames[value]; } else { return null; } } /** * Get name for value. If the supplied value is not defined in the * enumeration this throws an exception. * * @param value enumeration value * @return name for value */ public String getNameChecked(int value) { if (value >= 0 && value < m_indexedNames.length) { String name = m_indexedNames[value]; if (name != null) { return name; } } throw new IllegalArgumentException("Value " + value + " not defined"); } /** * Get value for name if defined. * * @param name possible enumeration name * @return value for name, or -1 if not found in enumeration */ public int getValue(String name) { int base = 0; int limit = m_orderedNames.length - 1; while (base <= limit) { int cur = (base + limit) >> 1; int diff = name.compareTo(m_orderedNames[cur]); if (diff < 0) { limit = cur - 1; } else if (diff > 0) { base = cur + 1; } else if (m_orderedIndexes != null) { return m_orderedIndexes[cur]; } else { return cur; } } return -1; } /** * Get value for name. If the supplied name is not present in the * enumeration this throws an exception. * * @param name enumeration name * @return value for name */ public int getValueChecked(String name) { int index = getValue(name); if (index >= 0) { return index; } else { throw new IllegalArgumentException("Name " + name + " not defined"); } } /** * Check value with exception. Throws an exception if the supplied value is * not defined by this enumeration. * * @param value */ public void checkValue(int value) { if (value < 0 || value >= m_indexedNames.length || m_indexedNames[value] == null) { throw new IllegalArgumentException("Value " + value + " not defined"); } } /** * Get maximum index value in enumeration set. * * @return maximum */ public int maxIndex() { return m_indexedNames.length - 1; } /** * Enumeration pair information. This gives an int value along * with the associated String representation. */ public static class EnumItem { public final int m_value; public final String m_name; public EnumItem(int value, String name) { m_value = value; m_name = name; } } }libjibx-java-1.1.6a/build/src/org/jibx/runtime/IAbstractMarshaller.java0000644000175000017500000000531610330637136025737 0ustar moellermoeller/* Copyright (c) 2002,2003, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime; /** * Abstract base marshaller interface definition. This interface must be * implemented by the handler for marshalling an object as an instance of a * binding with extension mappings.

* * This extension to the normal marshaller interface allows the base * marshalling to determine the proper marshaller implementation to use at * runtime. The code needs to check that the object to be marshalled has a * marshaller that extends this base mapping. * * @author Dennis M. Sosnoski * @version 1.0 */ public interface IAbstractMarshaller extends IMarshaller { /** * Marshal instance of class with mapping extending this abstract mapping. * This method call is responsible for all handling of the marshalling of an * appropriate object to XML text. It is called at the point where the start * tag for the associated element should be generated. * * @param obj object to be marshalled (may be null, in the case * of a non-optional property with no value supplied) * @param ctx XML text output context * @throws JiBXException on error in marshalling process */ public void baseMarshal(Object obj, IMarshallingContext ctx) throws JiBXException; } libjibx-java-1.1.6a/build/src/org/jibx/runtime/IAliasable.java0000644000175000017500000000473510071714354024042 0ustar moellermoeller/* Copyright (c) 2002-2004, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime; /** * Nameable extension interface definition. This interface must be implemented * by a marshaller {@link org.jibx.runtime.IMarshaller} or unmarshaller {@link * org.jibx.runtime.IUnmarshaller} that can use different top-level element * names. Although it does not define any methods, it designates the marshaller * or unmarshaller as being usable with a namespace and element name, and * particular bound class name, defined within a binding. * * If this interface is implemented by a marshaller or unmarshaller class used * with a specified element name in a binding the binding compiler will actually * generate a subclass of the original class. The subclass uses a standard * no-argument constructor, but calls a superclass constructor with the * specified element name and bound class information. The superclass code can * then make use of the specified name in marshalling and/or unmarshalling. * * @author Dennis M. Sosnoski * @version 1.0 */ public interface IAliasable {} libjibx-java-1.1.6a/build/src/org/jibx/runtime/IBindingFactory.java0000644000175000017500000001365710435557336025103 0ustar moellermoeller/* Copyright (c) 2002-2005, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime; /** * Binding factory interface definition. This interface is implemented by * the binding factory class generated by each binding definition. All binding * factory instances are guaranteed to be threadsafe and reusable. * * @author Dennis M. Sosnoski * @version 1.0 */ public interface IBindingFactory { /** Current binary version number. This is a byte-ordered value, allowing for two levels of major and two levels of minor version. */ public static final int CURRENT_VERSION_NUMBER = 0x00020000; /** Current distribution file name. This is filled in by the Ant build process to match the current distribution. */ public static final String CURRENT_VERSION_NAME = "@distrib@"; /** Mask for portions of version number that effect compatibility. */ public static final int COMPATIBLE_VERSION_MASK = 0xFFFF0000; /** * Create marshalling context instance. * * @return created marshalling context instance * @throws JiBXException if error creating context * @throws UnsupportedOperationException if marshalling not supported * by binding */ public IMarshallingContext createMarshallingContext() throws JiBXException; /** * Create unmarshalling context instance. * * @return created unmarshalling context instance * @throws JiBXException if error creating context * @throws UnsupportedOperationException if unmarshalling not supported * by binding */ public IUnmarshallingContext createUnmarshallingContext() throws JiBXException; /** * Get version number for binding compiler used. * * @return version number of code used to compile binding */ public int getCompilerVersion(); /** * Get distribution name for binding compiler used. * * @return name of distribution for binding compiler */ public String getCompilerDistribution(); /** * Get namespaces defined in mapping. The returned array is indexed by the * namespace index number used when marshalling. * * @return array of namespaces defined in binding (null if not * an output binding) */ public String[] getNamespaces(); /** * Get initial prefixes for namespaces defined in mapping. The returned * array is indexed by the namespace index number used when marshalling. * Note that these are only the first prefixes associated with each * namespace; it's possible to reuse the namespace in the binding with a * different prefix. * * @return array of prefixes for namespaces defined in binding * (null if not an output binding) */ public String[] getPrefixes(); /** * Get mapped class names (or type names, in the case of abstract mappings). * Returns array of fully-qualified class and/or type names, ordered by * index number of the class. * * @return array of class names */ public String[] getMappedClasses(); /** * Get namespaces of elements corresponding to mapped classes. The returned * array uses the same ordering as the result of the {@link * #getMappedClasses} call. Entries in the array are null if * there is no element for a class or the element is in the default * namespace. * * @return array of element namespaces */ public String[] getElementNamespaces(); /** * Get names of elements corresponding to mapped classes. The returned array * uses the same ordering as the result of the {@link #getMappedClasses} * call. Entries in the array are null if there is no element * for a class. * * @return array of element names */ public String[] getElementNames(); /** * Get mapped class index from type name for abstract non-base mappings * included in the binding. This is intended to allow identifying and using * abstract mappings (basically type mappings) at runtime. The method is * only returns a non-negative result if the "force-classes" option is used * for the binding definition (since otherwise no marshaller/unmarshaller * classes are created for abstract non-base mappings). * * @param type fully-qualified class or type name * @return mapping index for type, or -1 if type is not an * abstract non-base mapping */ public int getTypeIndex(String type); }libjibx-java-1.1.6a/build/src/org/jibx/runtime/ICharacterEscaper.java0000644000175000017500000000574210071714354025363 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime; import java.io.IOException; import java.io.Writer; /** * Escaper for character data to be written to output document. This allows * special character encodings to be handled appropriately on output. It's used * by the generic output handler class during document marshalling. * * @author Dennis M. Sosnoski * @version 1.0 */ public interface ICharacterEscaper { /** * Write attribute value with character entity substitutions. This assumes * that attributes use the regular quote ('"') delimitor. * * @param text attribute value text * @param writer sink for output text * @throws IOException on error writing to document */ public void writeAttribute(String text, Writer writer) throws IOException; /** * Write content value with character entity substitutions. * * @param text content value text * @param writer sink for output text * @throws IOException on error writing to document */ public void writeContent(String text, Writer writer) throws IOException; /** * Write CDATA to document. This writes the beginning and ending sequences * for a CDATA section as well as the actual text, verifying that only * characters allowed by the encoding are included in the text. * * @param text content value text * @param writer sink for output text * @throws IOException on error writing to document */ public void writeCData(String text, Writer writer) throws IOException; }libjibx-java-1.1.6a/build/src/org/jibx/runtime/IExtensibleWriter.java0000644000175000017500000000422110737003370025450 0ustar moellermoeller/* Copyright (c) 2007, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime; import java.io.IOException; /** * Extensible version of standard XML writer interface. This allows the creation * of child writer instances with added namespaces. * * @author Dennis M. Sosnoski */ public interface IExtensibleWriter extends IXMLWriter { /** * Create a child writer instance to be used for a separate binding. The * child writer inherits the output handling from this writer, while using * the supplied namespace URIs. * * @param uris ordered array of URIs for namespaces used in document * @return child writer * @throws IOException */ IXMLWriter createChildWriter(String[] uris) throws IOException; }libjibx-java-1.1.6a/build/src/org/jibx/runtime/IListItemDeserializer.java0000644000175000017500000000370310434260716026255 0ustar moellermoeller/* Copyright (c) 2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime; /** * Schema list component deserializer interface. This is a convenience for * defining list variations of basic types. * * @author Dennis M. Sosnoski */ public interface IListItemDeserializer { /** * Deserializer method for list items. * * @param text value text * @return created item class instance * @exception JiBXException on error deserializing text */ public Object deserialize(String text) throws JiBXException; }libjibx-java-1.1.6a/build/src/org/jibx/runtime/IMarshallable.java0000644000175000017500000000530210071714354024543 0ustar moellermoeller/* Copyright (c) 2002,2003, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime; /** * Marshallable interface definition. This interface must be implemented by all * classes which can be marshalled as independent units (not just as children of * other objects). Classes implementing this interface may either marshal * themselves directly (if there's only one marshalling format defined), or * obtain an instance of the appropriate marshaller from the context and use * that. This interface is automatically added by the binding compiler to all * classes targeted by <mapping> elements in a binding. * * @author Dennis M. Sosnoski * @version 1.0 */ public interface IMarshallable { /** * Get class index. This returns the mapping index number for a class within * the compiled bindings. It's intended primarily for internal use by the * binding framework. * * @return mapping index number */ public int JiBX_getIndex(); /** * Marshal self. This method call is responsible for all handling of the * marshalling of an object to XML text. * * @param ctx marshalling context * @throws JiBXException on error in marshalling process */ public void marshal(IMarshallingContext ctx) throws JiBXException; } libjibx-java-1.1.6a/build/src/org/jibx/runtime/IMarshaller.java0000644000175000017500000000663610071714354024261 0ustar moellermoeller/* Copyright (c) 2002,2003, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime; /** * Marshaller interface definition. This interface must be implemented * by the handler for marshalling an object.

* * Instances of classes implementing this interface must be serially * reusable, meaning they can store state information while in the process * of marshalling an object but must reset all state when called to * marshal another object after the first one is done (even if the first * object throws an exception during marshalling). * * The JiBX framework will only create one instance of a marshaller class * for each mapped class using that marshaller. Generally the marshaller * instance will not be called recursively, but this may happen in cases where * the binding definition includes recursive mappings and the marshaller * uses other marshallers (as opposed to handling all children directly). * * @author Dennis M. Sosnoski * @version 1.0 */ public interface IMarshaller { /** * Check if marshaller represents an extension mapping. This is used by the * framework in generated code to verify compatibility of objects being * marshalled using an abstract mapping. * * @param index abstract mapping index to be checked * @return true if this mapping is an extension of the abstract * mapping, false if not */ public boolean isExtension(int index); /** * Marshal instance of handled class. This method call is responsible * for all handling of the marshalling of an object to XML text. It is * called at the point where the start tag for the associated element * should be generated. * * @param obj object to be marshalled (may be null if property * is not optional) * @param ctx XML text output context * @throws JiBXException on error in marshalling process */ public void marshal(Object obj, IMarshallingContext ctx) throws JiBXException; } libjibx-java-1.1.6a/build/src/org/jibx/runtime/IMarshallingContext.java0000644000175000017500000003264710434260716025777 0ustar moellermoeller/* Copyright (c) 2002-2006, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime; import java.io.OutputStream; import java.io.Writer; /** * User interface for serializer to XML. This provides methods used to set up * and control the marshalling process, as well as access to the marshalling * object stack while marshalling. * * @author Dennis M. Sosnoski */ public interface IMarshallingContext { /** * Set output stream with encoding and escaper. This forces handling of the * output stream to use the Java character encoding support with the * supplied escaper. * * @param outs stream for document data output * @param enc document output encoding, or null uses UTF-8 * default * @param esc escaper for writing characters to stream * @throws JiBXException if error setting output */ void setOutput(OutputStream outs, String enc, ICharacterEscaper esc) throws JiBXException; /** * Set output stream and encoding. * * @param outs stream for document data output * @param enc document output encoding, or null uses UTF-8 * default * @throws JiBXException if error setting output */ void setOutput(OutputStream outs, String enc) throws JiBXException; /** * Set output writer and escaper. * * @param outw writer for document data output * @param esc escaper for writing characters */ void setOutput(Writer outw, ICharacterEscaper esc); /** * Set output writer. This assumes the standard UTF-8 encoding. * * @param outw writer for document data output */ void setOutput(Writer outw); /** * Get the writer being used for output. * * @return XML writer used for output */ IXMLWriter getXmlWriter(); /** * Set the writer being used for output. * * @param xwrite XML writer used for output */ void setXmlWriter(IXMLWriter xwrite); /** * Get current nesting indent spaces. This returns the number of spaces used * to show indenting, if used. * * @return number of spaces indented per level, or negative if indentation * disabled */ int getIndent(); /** * Set nesting indent spaces. This is advisory only, and implementations of * this interface are free to ignore it. The intent is to indicate that the * generated output should use indenting to illustrate element nesting. * * @param count number of spaces to indent per level, or disable * indentation if negative */ void setIndent(int count); /** * Set nesting indentation. This is advisory only, and implementations of * this interface are free to ignore it. The intent is to indicate that the * generated output should use indenting to illustrate element nesting. * * @param count number of character to indent per level, or disable * indentation if negative (zero means new line only) * @param newline sequence of characters used for a line ending * (null means use the single character '\n') * @param indent whitespace character used for indentation */ public void setIndent(int count, String newline, char indent); /** * Reset to initial state for reuse. The context is serially reusable, * as long as this method is called to clear any retained state information * between uses. It is automatically called when output is set. */ void reset(); /** * Start document, writing the XML declaration. This can only be validly * called immediately following one of the set output methods; otherwise the * output document will be corrupt. * * @param enc document encoding, null uses UTF-8 default * @param alone standalone document flag, null if not * specified * @throws JiBXException on any error (possibly wrapping other exception) */ void startDocument(String enc, Boolean alone) throws JiBXException; /** * Start document with output stream and encoding. The effect is the same * as from first setting the output stream and encoding, then making the * call to start document. * * @param enc document encoding, null uses UTF-8 default * @param alone standalone document flag, null if not * specified * @param outs stream for document data output * @throws JiBXException on any error (possibly wrapping other exception) */ void startDocument(String enc, Boolean alone, OutputStream outs) throws JiBXException; /** * Start document with writer. The effect is the same as from first * setting the writer, then making the call to start document. * * @param enc document encoding, null uses UTF-8 default * @param alone standalone document flag, null if not * specified * @param outw writer for document data output * @throws JiBXException on any error (possibly wrapping other exception) */ void startDocument(String enc, Boolean alone, Writer outw) throws JiBXException; /** * End document. Finishes all output and closes the document. Note that if * this is called with an imcomplete marshalling the result will not be * well-formed XML. * * @throws JiBXException on any error (possibly wrapping other exception) */ void endDocument() throws JiBXException; /** * Marshal document from root object without XML declaration. This can only * be validly called immediately following one of the set output methods; * otherwise the output document will be corrupt. The effect of this method * is the same as the sequence of a call to marshal the root object using * this context followed by a call to {@link #endDocument}. * * @param root object at root of structure to be marshalled, which must have * a top-level mapping in the binding * @throws JiBXException on any error (possibly wrapping other exception) */ public void marshalDocument(Object root) throws JiBXException; /** * Marshal document from root object. This can only be validly called * immediately following one of the set output methods; otherwise the output * document will be corrupt. The effect of this method is the same as the * sequence of a call to {@link #startDocument}, a call to marshal the root * object using this context, and finally a call to {@link #endDocument}. * * @param root object at root of structure to be marshalled, which must have * a top-level mapping in the binding * @param enc document encoding, null uses UTF-8 default * @param alone standalone document flag, null if not * specified * @throws JiBXException on any error (possibly wrapping other exception) */ public void marshalDocument(Object root, String enc, Boolean alone) throws JiBXException; /** * Marshal document from root object to output stream with encoding. The * effect of this method is the same as the sequence of a call to {@link * #startDocument}, a call to marshal the root object using this context, * and finally a call to {@link #endDocument}. * * @param root object at root of structure to be marshalled, which must have * a top-level mapping in the binding * @param enc document encoding, null uses UTF-8 default * @param alone standalone document flag, null if not * specified * @param outs stream for document data output * @throws JiBXException on any error (possibly wrapping other exception) */ public void marshalDocument(Object root, String enc, Boolean alone, OutputStream outs) throws JiBXException; /** * Marshal document from root object to writer. The effect of this method * is the same as the sequence of a call to {@link #startDocument}, a call * to marshal the root object using this context, and finally a call to * {@link #endDocument}. * * @param root object at root of structure to be marshalled, which must have * a top-level mapping in the binding * @param enc document encoding, null uses UTF-8 default * @param alone standalone document flag, null if not * specified * @param outw writer for document data output * @throws JiBXException on any error (possibly wrapping other exception) */ public void marshalDocument(Object root, String enc, Boolean alone, Writer outw) throws JiBXException; /** * Set a user context object. This context object is not used directly by * JiBX, but can be accessed by all types of user extension methods. The * context object is automatically cleared by the {@link #reset()} method, * so to make use of this you need to first call the appropriate version of * the setOutput() method, then this method, and finally one of * the marshalDocument methods which uses the previously-set * output (not the ones which take a stream or writer as parameter, since * they call setOutput() themselves). * * @param obj user context object, or null if clearing existing * context object * @see #getUserContext() */ public void setUserContext(Object obj); /** * Get the user context object. * * @return user context object, or null if no context object * set * @see #setUserContext(Object) */ public Object getUserContext(); /** * Push created object to marshalling stack. This must be called before * beginning the marshalling of the object. It is only called for objects * with structure, not for those converted directly to and from text. * * @param obj object being marshalled */ public void pushObject(Object obj); /** * Pop marshalled object from stack. * * @throws JiBXException if no object on stack */ public void popObject() throws JiBXException; /** * Get current marshalling object stack depth. This allows tracking * nested calls to marshal one object while in the process of marshalling * another object. The bottom item on the stack is always the root object * of the marshalling. * * @return number of objects in marshalling stack */ public int getStackDepth(); /** * Get object from marshalling stack. This stack allows tracking nested * calls to marshal one object while in the process of marshalling * another object. The bottom item on the stack is always the root object * of the marshalling. * * @param depth object depth in stack to be retrieved (must be in the range * of zero to the current depth minus one). * @return object from marshalling stack */ public Object getStackObject(int depth); /** * Get top object on marshalling stack. This is safe to call even when no * objects are on the stack. * * @return object from marshalling stack, or null if none */ public Object getStackTop(); /** * Find the marshaller for a particular class index * in the current context. * * @param index class index for marshalling definition * @param name fully qualified name of class to be marshalled (used only * for validation) * @return marshalling handler for class * @throws JiBXException on any error (possibly wrapping other exception) */ public IMarshaller getMarshaller(int index, String name) throws JiBXException; }libjibx-java-1.1.6a/build/src/org/jibx/runtime/ITrackSource.java0000644000175000017500000000472010071714354024404 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime; /** * Unmarshalling source tracking interface. This interface is added to bound * classes when requested by the binding definition. It allows the user to * retrieve information about the location in the input document corresponding * to an unmarshalled object, if the parser used for unmarshalling supports * reporting this information. * * @author Dennis M. Sosnoski * @version 1.0 */ public interface ITrackSource { /** * Get source document name. * * @return name given for source document, or null if none */ public String jibx_getDocumentName(); /** * Get source document line number. * * @return line number in source document, or -1 if unknown */ public int jibx_getLineNumber(); /** * Get source document column number. * * @return column number in source document, or -1 if unknown */ public int jibx_getColumnNumber(); } libjibx-java-1.1.6a/build/src/org/jibx/runtime/IUnmarshallable.java0000644000175000017500000000447310071714356025120 0ustar moellermoeller/* Copyright (c) 2002,2003, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime; /** * Unmarshallable interface definition. This interface must be implemented by * all classes which can be unmarshalled as independent units (not just as * children of other objects). Classes implementing this interface may either * unmarshal themselves directly (if there's only one unmarshalling format * defined), or obtain an instance of the appropriate unmarshaller from the * context and use that. * * @author Dennis M. Sosnoski * @version 1.0 */ public interface IUnmarshallable { /** * Unmarshal self. This method call is responsible for all handling of the * unmarshalling of the object from XML text. * * @param ctx unmarshalling context * @throws JiBXException on error in unmarshalling process */ public void unmarshal(IUnmarshallingContext ctx) throws JiBXException; } libjibx-java-1.1.6a/build/src/org/jibx/runtime/IUnmarshaller.java0000644000175000017500000000735610071714356024626 0ustar moellermoeller/* Copyright (c) 2002,2003, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime; /** * Unmarshaller interface definition. This interface must be implemented * by the handler for unmarshalling an object. * * Instances of classes implementing this interface must be serially * reusable, meaning they can store state information while in the process * of unmarshalling an object but must reset all state when called to * unmarshal another object after the first one is done (even if the first * object throws an exception during unmarshalling). * * The JiBX framework will only create one instance of an unmarshaller class * for each mapped class using that unmarshaller. Generally the unmarshaller * instance will not be called recursively, but this may happen in cases where * the binding definition includes recursive mappings and the unmarshaller * uses other unmarshallers (as opposed to handling all children directly). * * @author Dennis M. Sosnoski * @version 1.0 */ public interface IUnmarshaller { /** * Check if instance present in XML. This method can be called when the * unmarshalling context is positioned at or just before the start of the * data corresponding to an instance of this mapping. It verifies that the * expected data is present. * * @param ctx unmarshalling context * @return true if expected parse data found, * false if not * @throws JiBXException on error in unmarshalling process */ public boolean isPresent(IUnmarshallingContext ctx) throws JiBXException; /** * Unmarshal instance of handled class. This method call is responsible * for all handling of the unmarshalling of an object from XML text, * including creating the instance of the handled class if an instance is * not supplied. When it is called the unmarshalling context is always * positioned at or just before the start tag corresponding to the start of * the class data. * * @param obj object to be unmarshalled (may be null) * @param ctx unmarshalling context * @return unmarshalled object (may be null) * @throws JiBXException on error in unmarshalling process */ public Object unmarshal(Object obj, IUnmarshallingContext ctx) throws JiBXException; } libjibx-java-1.1.6a/build/src/org/jibx/runtime/IUnmarshallingContext.java0000644000175000017500000002444410434260716026336 0ustar moellermoeller/* Copyright (c) 2002-2006, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime; import java.io.InputStream; import java.io.Reader; /** * User interface for deserializer from XML. This provides methods used to set * up and control the marshalling process, as well as access to the * unmarshalling object stack while unmarshalling. * * @author Dennis M. Sosnoski */ public interface IUnmarshallingContext { /** * Set document to be parsed from stream. * * @param ins stream supplying document data * @param enc document input encoding, or null if to be * determined by parser * @throws JiBXException if error creating parser */ void setDocument(InputStream ins, String enc) throws JiBXException; /** * Set document to be parsed from reader. * * @param rdr reader supplying document data * @throws JiBXException if error creating parser */ void setDocument(Reader rdr) throws JiBXException; /** * Set named document to be parsed from stream. * * @param ins stream supplying document data * @param name document name * @param enc document input encoding, or null if to be * determined by parser * @throws JiBXException if error creating parser */ void setDocument(InputStream ins, String name, String enc) throws JiBXException; /** * Set named document to be parsed from reader. * * @param rdr reader supplying document data * @param name document name * @throws JiBXException if error creating parser */ void setDocument(Reader rdr, String name) throws JiBXException; /** * Reset unmarshalling information. This releases all references to * unmarshalled objects and prepares the context for potential reuse. * It is automatically called when input is set. */ void reset(); /** * Unmarshal the current element. If not currently positioned at a start * or end tag this first advances the parse to the next start or end tag. * There must be an unmarshalling defined for the current element, and this * unmarshalling is used to build an object from that element. * * @return unmarshalled object from element * @throws JiBXException on any error (possibly wrapping other exception) */ Object unmarshalElement() throws JiBXException; /** * Unmarshal document from stream to object. The effect of this is the same * as if {@link #setDocument} were called, followed by {@link * #unmarshalElement} * * @param ins stream supplying document data * @param enc document input encoding, or null if to be * determined by parser * @return unmarshalled object * @throws JiBXException if error creating parser */ Object unmarshalDocument(InputStream ins, String enc) throws JiBXException; /** * Unmarshal document from reader to object. The effect of this is the same * as if {@link #setDocument} were called, followed by {@link * #unmarshalElement} * * @param rdr reader supplying document data * @return unmarshalled object * @throws JiBXException if error creating parser */ Object unmarshalDocument(Reader rdr) throws JiBXException; /** * Unmarshal named document from stream to object. The effect of this is the * same as if {@link #setDocument} were called, followed by {@link * #unmarshalElement} * * @param ins stream supplying document data * @param name document name * @param enc document input encoding, or null if to be * determined by parser * @return unmarshalled object * @throws JiBXException if error creating parser */ Object unmarshalDocument(InputStream ins, String name, String enc) throws JiBXException; /** * Unmarshal named document from reader to object. The effect of this is the * same as if {@link #setDocument} were called, followed by {@link * #unmarshalElement} * * @param rdr reader supplying document data * @param name document name * @return unmarshalled object * @throws JiBXException if error creating parser */ Object unmarshalDocument(Reader rdr, String name) throws JiBXException; /** * Return the supplied document name. * * @return supplied document name (null if none) */ public String getDocumentName(); /** * Check if next tag is start of element. If not currently positioned at a * start or end tag this first advances the parse to the next start or end * tag. * * @param ns namespace URI for expected element (may be null * or the empty string for the empty namespace) * @param name element name expected * @return true if at start of element with supplied name, * false if not * @throws JiBXException on any error (possibly wrapping other exception) */ public boolean isAt(String ns, String name) throws JiBXException; /** * Check if next tag is a start tag. If not currently positioned at a * start or end tag this first advances the parse to the next start or * end tag. * * @return true if at start of element, false if * at end * @throws JiBXException on any error (possibly wrapping other exception) */ public boolean isStart() throws JiBXException; /** * Check if next tag is an end tag. If not currently positioned at a * start or end tag this first advances the parse to the next start or * end tag. * * @return true if at end of element, false if * at start * @throws JiBXException on any error (possibly wrapping other exception) */ public boolean isEnd() throws JiBXException; /** * Find the unmarshaller for a particular class index in the current * context. * * @param index class index for unmarshalling definition * @return unmarshalling handler for class * @throws JiBXException if unable to create unmarshaller */ public IUnmarshaller getUnmarshaller(int index) throws JiBXException; /** * Set a user context object. This context object is not used directly by * JiBX, but can be accessed by all types of user extension methods. The * context object is automatically cleared by the {@link #reset()} method, * so to make use of this you need to first call the appropriate version of * the setDocument() method, then this method, and finally the * {@link #unmarshalElement} method. * * @param obj user context object, or null if clearing existing * context object * @see #getUserContext() */ public void setUserContext(Object obj); /** * Get the user context object. * * @return user context object, or null if no context object * set * @see #setUserContext(Object) */ public Object getUserContext(); /** * Push created object to unmarshalling stack. This must be called before * beginning the unmarshalling of the object. It is only called for objects * with structure, not for those converted directly to and from text. * * @param obj object being unmarshalled */ public void pushObject(Object obj); /** * Pop unmarshalled object from stack. * * @throws JiBXException if stack empty */ public void popObject() throws JiBXException; /** * Get current unmarshalling object stack depth. This allows tracking * nested calls to unmarshal one object while in the process of * unmarshalling another object. The bottom item on the stack is always the * root object being unmarshalled. * * @return number of objects in unmarshalling stack */ public int getStackDepth(); /** * Get object from unmarshalling stack. This stack allows tracking nested * calls to unmarshal one object while in the process of unmarshalling * another object. The bottom item on the stack is always the root object * being unmarshalled. * * @param depth object depth in stack to be retrieved (must be in the range * of zero to the current depth minus one). * @return object from unmarshalling stack */ public Object getStackObject(int depth); /** * Get top object on unmarshalling stack. This is safe to call even when no * objects are on the stack. * * @return object from unmarshalling stack, or null if none */ public Object getStackTop(); }libjibx-java-1.1.6a/build/src/org/jibx/runtime/IXMLReader.java0000644000175000017500000002134010434260716023740 0ustar moellermoeller/* Copyright (c) 2005, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime; /** * XML reader interface used for input of unmarshalled document. This interface * allows easy substitution of different parsers or other input sources. * * @author Dennis M. Sosnoski * @version 1.0 */ public interface IXMLReader { // // Event types reported by nextEvent() method public static final int START_DOCUMENT = 0; public static final int END_DOCUMENT = 1; public static final int START_TAG = 2; public static final int END_TAG = 3; public static final int TEXT = 4; public static final int CDSECT = 5; public static final int ENTITY_REF = 6; public static final int IGNORABLE_WHITESPACE = 7; public static final int PROCESSING_INSTRUCTION = 8; public static final int COMMENT = 9; public static final int DOCDECL = 10; /** * Build current parse input position description. * * @return text description of current parse position */ public String buildPositionString(); /** * Advance to next parse event of input document. * * @return parse event type code * @throws JiBXException if error reading or parsing document */ public int nextToken() throws JiBXException; /** * Advance to next binding component of input document. This is a * higher-level operation than {@link #nextToken()}, which consolidates text * content and ignores parse events for components such as comments and PIs. * * @return parse event type code * @throws JiBXException if error reading or parsing document */ public int next() throws JiBXException; /** * Gets the current parse event type, without changing the current parse * state. * * @return parse event type code * @throws JiBXException if error parsing document */ public int getEventType() throws JiBXException; /** * Get element name from the current start or end tag. * * @return local name if namespace handling enabled, full name if namespace * handling disabled * @throws IllegalStateException if not at a start or end tag (optional) */ public String getName(); /** * Get element namespace from the current start or end tag. * * @return namespace URI if namespace handling enabled and element is in a * namespace, empty string otherwise * @throws IllegalStateException if not at a start or end tag (optional) */ public String getNamespace(); /** * Get element prefix from the current start or end tag. * * @return prefix text (null if no prefix) * @throws IllegalStateException if not at a start or end tag */ public String getPrefix(); /** * Get the number of attributes of the current start tag. * * @return number of attributes * @throws IllegalStateException if not at a start tag (optional) */ public int getAttributeCount(); /** * Get an attribute name from the current start tag. * * @param index attribute index * @return local name if namespace handling enabled, full name if namespace * handling disabled * @throws IllegalStateException if not at a start tag or invalid index */ public String getAttributeName(int index); /** * Get an attribute namespace from the current start tag. * * @param index attribute index * @return namespace URI if namespace handling enabled and attribute is in a * namespace, empty string otherwise * @throws IllegalStateException if not at a start tag or invalid index */ public String getAttributeNamespace(int index); /** * Get an attribute prefix from the current start tag. * * @param index attribute index * @return prefix for attribute (null if no prefix present) * @throws IllegalStateException if not at a start tag or invalid index */ public String getAttributePrefix(int index); /** * Get an attribute value from the current start tag. * * @param index attribute index * @return value text * @throws IllegalStateException if not at a start tag or invalid index */ public String getAttributeValue(int index); /** * Get an attribute value from the current start tag. * * @param ns namespace URI for expected attribute (may be null * or the empty string for the empty namespace) * @param name attribute name expected * @return attribute value text, or null if missing * @throws IllegalStateException if not at a start tag */ public String getAttributeValue(String ns, String name); /** * Get current text. When positioned on a TEXT event this returns the actual * text; for CDSECT it returns the text inside the CDATA section; for * COMMENT, DOCDECL, or PROCESSING_INSTRUCTION it returns the text inside * the structure. * * @return text for current event */ public String getText(); /** * Get current element nesting depth. The returned depth always includes the * current start or end tag (if positioned on a start or end tag). * * @return element nesting depth */ public int getNestingDepth(); /** * Get number of namespace declarations active at depth. * * @param depth element nesting depth * @return number of namespaces active at depth * @throws IllegalArgumentException if invalid depth */ public int getNamespaceCount(int depth); /** * Get namespace URI. * * @param index declaration index * @return namespace URI * @throws IllegalArgumentException if invalid index */ public String getNamespaceUri(int index); /** * Get namespace prefix. * * @param index declaration index * @return namespace prefix, null if a default namespace * @throws IllegalArgumentException if invalid index */ public String getNamespacePrefix(int index); /** * Get document name. * * @return document name, null if not known */ public String getDocumentName(); /** * Get current source line number. * * @return line number from source document, -1 if line number * information not available */ public int getLineNumber(); /** * Get current source column number. * * @return column number from source document, -1 if column * number information not available */ public int getColumnNumber(); /** * Get namespace URI associated with prefix. * * @param prefix to be found * @return associated URI (null if prefix not defined) */ public String getNamespace(String prefix); /** * Return the input encoding, if known. This is only valid after parsing of * a document has been started. * * @return input encoding (null if unknown) */ public String getInputEncoding(); /** * Return namespace processing flag. * * @return namespace processing flag (true if namespaces are * processed by reader, false if not) */ public boolean isNamespaceAware(); }libjibx-java-1.1.6a/build/src/org/jibx/runtime/IXMLWriter.java0000644000175000017500000003144710624255760024027 0ustar moellermoeller/* Copyright (c) 2004-2007, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime; import java.io.IOException; /** * XML writer interface used for output of marshalled document. This interface * allows easy substitution of different output formats, including parse event * stream equivalents. This makes heavy use of state information, so each * method call defined is only valid in certain states. * * @author Dennis M. Sosnoski */ public interface IXMLWriter { /** * Get the current element nesting depth. Elements are only counted in the * depth returned when they're officially open - after the start tag has * been output and before the end tag has been output. * * @return number of nested elements at current point in output */ public int getNestingDepth(); /** * Get the number of namespaces currently defined. This is equivalent to the * index of the next extension namespace added. * * @return namespace count */ public int getNamespaceCount(); /** * Set nesting indentation. This is advisory only, and implementations of * this interface are free to ignore it. The intent is to indicate that the * generated output should use indenting to illustrate element nesting. * * @param count number of character to indent per level, or disable * indentation if negative (zero means new line only) * @param newline sequence of characters used for a line ending * (null means use the single character '\n') * @param indent whitespace character used for indentation */ public void setIndentSpaces(int count, String newline, char indent); /** * Write XML declaration to document. This can only be called before any * other methods in the interface are called. * * @param version XML version text * @param encoding text for encoding attribute (unspecified if * null) * @param standalone text for standalone attribute (unspecified if * null) * @throws IOException on error writing to document */ public void writeXMLDecl(String version, String encoding, String standalone) throws IOException; /** * Generate open start tag. This allows attributes and/or namespace * declarations to be added to the start tag, but must be followed by a * {@link #closeStartTag} call. * * @param index namespace URI index number * @param name unqualified element name * @throws IOException on error writing to document */ public void startTagOpen(int index, String name) throws IOException; /** * Generate start tag for element with namespaces. This creates the actual * start tag, along with any necessary namespace declarations. Previously * active namespace declarations are not duplicated. The tag is * left incomplete, allowing other attributes to be added. * * @param index namespace URI index number * @param name element name * @param nums array of namespace indexes defined by this element (must * be constant, reference is kept until end of element) * @param prefs array of namespace prefixes mapped by this element (no * null values, use "" for default namespace declaration) * @throws IOException on error writing to document */ public void startTagNamespaces(int index, String name, int[] nums, String[] prefs) throws IOException; /** * Add attribute to current open start tag. This is only valid after a call * to {@link #startTagOpen} and before the corresponding call to {@link * #closeStartTag}. * * @param index namespace URI index number * @param name unqualified attribute name * @param value text value for attribute * @throws IOException on error writing to document */ public void addAttribute(int index, String name, String value) throws IOException; /** * Close the current open start tag. This is only valid after a call to * {@link #startTagOpen}. * * @throws IOException on error writing to document */ public void closeStartTag() throws IOException; /** * Close the current open start tag as an empty element. This is only valid * after a call to {@link #startTagOpen}. * * @throws IOException on error writing to document */ public void closeEmptyTag() throws IOException; /** * Generate closed start tag. No attributes or namespaces can be added to a * start tag written using this call. * * @param index namespace URI index number * @param name unqualified element name * @throws IOException on error writing to document */ public void startTagClosed(int index, String name) throws IOException; /** * Generate end tag. * * @param index namespace URI index number * @param name unqualified element name * @throws IOException on error writing to document */ public void endTag(int index, String name) throws IOException; /** * Write ordinary character data text content to document. * * @param text content value text (must not be null) * @throws IOException on error writing to document */ public void writeTextContent(String text) throws IOException; /** * Write CDATA text to document. * * @param text content value text (must not be null) * @throws IOException on error writing to document */ public void writeCData(String text) throws IOException; /** * Write comment to document. * * @param text comment text (must not be null) * @throws IOException on error writing to document */ public void writeComment(String text) throws IOException; /** * Write entity reference to document. * * @param name entity name (must not be null) * @throws IOException on error writing to document */ public void writeEntityRef(String name) throws IOException; /** * Write DOCTYPE declaration to document. * * @param name root element name * @param sys system ID (null if none, must be * non-null for public ID to be used) * @param pub public ID (null if none) * @param subset internal subset (null if none) * @throws IOException on error writing to document */ public void writeDocType(String name, String sys, String pub, String subset) throws IOException; /** * Write processing instruction to document. * * @param target processing instruction target name (must not be * null) * @param data processing instruction data (must not be null) * @throws IOException on error writing to document */ public void writePI(String target, String data) throws IOException; /** * Request output indent. The writer implementation should normally indent * output as appropriate. This method can be used to request indenting of * output that might otherwise not be indented. The normal effect when used * with a text-oriented writer should be to output the appropriate line end * sequence followed by the appropriate number of indent characters for the * current nesting level. * * @throws IOException on error writing to document */ public void indent() throws IOException; /** * Flush document output. Writes any buffered data to the output medium. * This does not flush the output medium itself, only any internal * buffering within the writer. * * @throws IOException on error writing to document */ public void flush() throws IOException; /** * Close document output. Completes writing of document output, including * flushing and closing the output medium. * * @throws IOException on error writing to document */ public void close() throws IOException; /** * Reset to initial state for reuse. The context is serially reusable, * as long as this method is called to clear any retained state information * between uses. It is automatically called when output is set. */ public void reset(); /** * Get namespace URIs for mapping. This gets the full ordered array of * namespaces known in the binding used for this marshalling, where the * index number of each namespace URI is the namespace index used to lookup * the prefix when marshalling a name in that namespace. The returned array * must not be modified. * * @return array of namespaces */ public String[] getNamespaces(); /** * Get URI for namespace. * * @param index namespace URI index number * @return namespace URI text, or null if the namespace index * is invalid */ public String getNamespaceUri(int index); /** * Get current prefix defined for namespace. * * @param index namespace URI index number * @return current prefix text, or null if the namespace is not * currently mapped */ public String getNamespacePrefix(int index); /** * Get index of namespace mapped to prefix. This can be an expensive * operation with time proportional to the number of namespaces defined, so * it should be used with care. * * @param prefix text to match (non-null, use "" for default * prefix) * @return index namespace URI index number mapped to prefix */ public int getPrefixIndex(String prefix); /** * Append extension namespace URIs to those in mapping. * * @param uris namespace URIs to extend those in mapping */ public void pushExtensionNamespaces(String[] uris); /** * Remove extension namespace URIs. This removes the last set of * extension namespaces pushed using {@link #pushExtensionNamespaces}. */ public void popExtensionNamespaces(); /** * Get extension namespace URIs added to those in mapping. This gets the * current set of extension definitions. The returned arrays must not be * modified. * * @return array of arrays of extension namespaces (null if * none) */ public String[][] getExtensionNamespaces(); /** * Open the specified namespaces for use. This method is normally only * called internally, when namespace declarations are actually written to * output. It is exposed as part of this interface to allow for special * circumstances where namespaces are being written outside the usual * processing. The namespaces will remain open for use until the current * element is closed. * * @param nums array of namespace indexes defined by this element (must * be constant, reference is kept until namespaces are closed) * @param prefs array of namespace prefixes mapped by this element (no * null values, use "" for default namespace declaration) * @return array of indexes for namespaces not previously active (the ones * actually needing to be declared, in the case of text output) * @throws IOException on error writing to document */ public int[] openNamespaces(int[] nums, String[] prefs) throws IOException; }libjibx-java-1.1.6a/build/src/org/jibx/runtime/IntStack.java0000644000175000017500000002313510434260716023570 0ustar moellermoeller/* Copyright (c) 2000-2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime; import java.lang.reflect.Array; /** * Growable int stack with type specific access methods. This * implementation is unsynchronized in order to provide the best possible * performance for typical usage scenarios, so explicit synchronization must * be implemented by a wrapper class or directly by the application in cases * where instances are modified in a multithreaded environment. See the base * classes for other details of the implementation. * * @author Dennis M. Sosnoski * @version 1.0 */ public class IntStack { /** Default initial array size. */ public static final int DEFAULT_SIZE = 8; /** Size of the current array. */ protected int m_countLimit; /** The number of values currently present in the stack. */ protected int m_countPresent; /** Maximum size increment for growing array. */ protected int m_maximumGrowth; /** The underlying array used for storing the data. */ protected int[] m_baseArray; /** * Constructor with full specification. * * @param size number of int values initially allowed in * stack * @param growth maximum size increment for growing stack */ public IntStack(int size, int growth) { m_countLimit = size; m_maximumGrowth = growth; m_baseArray = new int[size]; } /** * Constructor with initial size specified. * * @param size number of int values initially allowed in * stack */ public IntStack(int size) { this(size, Integer.MAX_VALUE); } /** * Default constructor. */ public IntStack() { this(DEFAULT_SIZE); } /** * Copy (clone) constructor. * * @param base instance being copied */ public IntStack(IntStack base) { this(base.m_countLimit, base.m_maximumGrowth); System.arraycopy(base.m_baseArray, 0, m_baseArray, 0, base.m_countPresent); m_countPresent = base.m_countPresent; } /** * Constructor from array of ints. * * @param ints array of ints for initial contents */ public IntStack(int[] ints) { this(ints.length); System.arraycopy(ints, 0, m_baseArray, 0, ints.length); m_countPresent = ints.length; } /** * Copy data after array resize. This just copies the entire contents of the * old array to the start of the new array. It should be overridden in cases * where data needs to be rearranged in the array after a resize. * * @param base original array containing data * @param grown resized array for data */ private void resizeCopy(Object base, Object grown) { System.arraycopy(base, 0, grown, 0, Array.getLength(base)); } /** * Increase the size of the array to at least a specified size. The array * will normally be at least doubled in size, but if a maximum size * increment was specified in the constructor and the value is less than * the current size of the array, the maximum increment will be used * instead. If the requested size requires more than the default growth, * the requested size overrides the normal growth and determines the size * of the replacement array. * * @param required new minimum size required */ private void growArray(int required) { int size = Math.max(required, m_countLimit + Math.min(m_countLimit, m_maximumGrowth)); int[] grown = new int[size]; resizeCopy(m_baseArray, grown); m_countLimit = size; m_baseArray = grown; } /** * Ensure that the array has the capacity for at least the specified * number of values. * * @param min minimum capacity to be guaranteed */ public final void ensureCapacity(int min) { if (min > m_countLimit) { growArray(min); } } /** * Push a value on the stack. * * @param value value to be added */ public void push(int value) { int index = getAddIndex(); m_baseArray[index] = value; } /** * Pop a value from the stack. * * @return value from top of stack * @exception ArrayIndexOutOfBoundsException on attempt to pop empty stack */ public int pop() { if (m_countPresent > 0) { return m_baseArray[--m_countPresent]; } else { throw new ArrayIndexOutOfBoundsException ("Attempt to pop empty stack"); } } /** * Pop multiple values from the stack. The last value popped is the * one returned. * * @param count number of values to pop from stack (must be strictly * positive) * @return value from top of stack * @exception ArrayIndexOutOfBoundsException on attempt to pop past end of * stack */ public int pop(int count) { if (count <= 0) { throw new IllegalArgumentException("Count must be greater than 0"); } else if (m_countPresent >= count) { m_countPresent -= count; return m_baseArray[m_countPresent]; } else { throw new ArrayIndexOutOfBoundsException ("Attempt to pop past end of stack"); } } /** * Copy a value from the stack. This returns a value from within * the stack without modifying the stack. * * @param depth depth of value to be returned * @return value from stack * @exception ArrayIndexOutOfBoundsException on attempt to peek past end of * stack */ public int peek(int depth) { if (m_countPresent > depth) { return m_baseArray[m_countPresent - depth - 1]; } else { throw new ArrayIndexOutOfBoundsException ("Attempt to peek past end of stack"); } } /** * Copy top value from the stack. This returns the top value without * removing it from the stack. * * @return value at top of stack * @exception ArrayIndexOutOfBoundsException on attempt to peek empty stack */ public int peek() { return peek(0); } /** * Constructs and returns a simple array containing the same data as held * in this stack. Note that the items will be in reverse pop order, with * the last item to be popped from the stack as the first item in the * array. * * @return array containing a copy of the data */ public int[] toArray() { int[] copy = new int[m_countPresent]; System.arraycopy(m_baseArray, 0, copy, 0, m_countPresent); return copy; } /** * Duplicates the object with the generic call. * * @return a copy of the object */ public Object clone() { return new IntStack(this); } /** * Gets the array offset for appending a value to those in the stack. * If the underlying array is full, it is grown by the appropriate size * increment so that the index value returned is always valid for the * array in use by the time of the return. * * @return index position for added element */ private int getAddIndex() { int index = m_countPresent++; if (m_countPresent > m_countLimit) { growArray(m_countPresent); } return index; } /** * Get the number of values currently present in the stack. * * @return count of values present */ public int size() { return m_countPresent; } /** * Check if stack is empty. * * @return true if stack empty, false if not */ public boolean isEmpty() { return m_countPresent == 0; } /** * Set the stack to the empty state. */ public void clear() { m_countPresent = 0; } } libjibx-java-1.1.6a/build/src/org/jibx/runtime/JiBXConstrainedParseException.java0000644000175000017500000000604011003053146027672 0ustar moellermoeller/* Copyright (c) 2008, Joshua Davies. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime; import java.util.Arrays; /** * Thrown when a "constrained" parsing exception is encountered (e.g. an * enumerated value). * * @author Joshua Davies */ public class JiBXConstrainedParseException extends JiBXParseException { private String[] m_allowableValues; public JiBXConstrainedParseException(String msg, String value, String[] allowableValues) { super(msg, value); m_allowableValues = allowableValues; } public JiBXConstrainedParseException(String msg, String value, String[] allowableValues, String namespace, String tagName, Throwable root) { super(msg, value, namespace, tagName, root); m_allowableValues = allowableValues; } /** * @return the default message with "constraint" text appended. */ public String getMessage() { StringBuffer constraint = new StringBuffer(); constraint.append(". Acceptable values are "); for (int i = 0; i < m_allowableValues.length; i++) { constraint.append("'" + m_allowableValues[i] + "'"); if (i < (m_allowableValues.length - 1)) { constraint.append(", "); } } return super.getMessage() + constraint.toString() + "."; } /** * Solely used by unit tests. * * @param obj what to compare against * @return true or false */ public boolean equals(Object obj) { if (this == obj) return true; if (!super.equals(obj)) return false; if (getClass() != obj.getClass()) return false; final JiBXConstrainedParseException other = (JiBXConstrainedParseException) obj; if (!Arrays.equals(m_allowableValues, other.m_allowableValues)) return false; return true; } } libjibx-java-1.1.6a/build/src/org/jibx/runtime/JiBXException.java0000644000175000017500000000716110230250172024511 0ustar moellermoeller/* Copyright (c) 2002-2005, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime; import java.io.PrintStream; import java.io.PrintWriter; /** * Binding exception class. This is used for all types of errors that * can be generated by the runtime. * * @author Dennis M. Sosnoski * @version 1.0 */ public class JiBXException extends Exception { /** Exception that caused this exception. */ private Throwable m_rootCause; /** * Constructor from message. * * @param msg message describing the exception condition */ public JiBXException(String msg) { super(msg); } /** * Constructor from message and wrapped exception. * * @param msg message describing the exception condition * @param root exception which caused this exception */ public JiBXException(String msg, Throwable root) { super(msg); m_rootCause = root; } /** * Get root cause exception. * * @return exception that caused this exception */ public Throwable getRootCause() { return m_rootCause; } /** * Print stack trace to standard error. This is an override of the base * class method to implement exception chaining. */ public void printStackTrace() { printStackTrace(System.err); } /** * Print stack trace to stream. This is an override of the base class method * to implement exception chaining. * * @param s stream for printing stack trace */ public void printStackTrace(PrintStream s) { if (m_rootCause == null) { super.printStackTrace(s); } else { s.println(getMessage()); m_rootCause.printStackTrace(s); s.println(); } } /** * Print stack trace to writer. This is an override of the base class method * to implement exception chaining. * * @param s writer for printing stack trace */ public void printStackTrace(PrintWriter s) { if (m_rootCause == null) { super.printStackTrace(s); } else { s.println(getMessage()); m_rootCause.printStackTrace(s); s.println(); } } }libjibx-java-1.1.6a/build/src/org/jibx/runtime/JiBXParseException.java0000644000175000017500000001100711003053146025477 0ustar moellermoeller/* Copyright (c) 2008, Joshua Davies. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime; /** * JiBX parsing exception class. This subclass of JiBXException provides * additional details when a parsing error occurs such as what tag was * being parsed and what value caused the error. * * @author Joshua Davies */ public class JiBXParseException extends JiBXException { private String m_value; private String m_namespace; private String m_tagName; /** * Constructor from message. * @param msg the throwers description of what's gone wrong. * @param value the value which was unparseable (in string format). */ public JiBXParseException(String msg, String value) { super(msg); m_value = value; } /** * Constructor from message and wrapped exception. * @param msg the throwers description of what's gone wrong. * @param value the value which was unparseable (in string format). * @param root exception which caused this exception */ public JiBXParseException(String msg, String value, Throwable root) { super(msg, root); m_value = value; } /** * Constructor from message, wrapped exception and tag name. * * @param msg message describing the exception condition * @param value the value which was unparseable (in string format). * @param namespace the namespace (if any) associated with the tag. * @param tagName the name of the tag whose element caused the exception. * @param root exception which caused this exception */ public JiBXParseException(String msg, String value, String namespace, String tagName, Throwable root) { super(msg, root); m_value = value; m_namespace = namespace; m_tagName = tagName; } /** * Add namespace detail to the exception. * @param namespace the namespace of the offending tag. */ public void setNamespace(String namespace) { m_namespace = namespace; } /** * Add tag name detail to the exception. * @param tagName the name of the offending tag. */ public void setTagName(String tagName) { m_tagName = tagName; } /** * Append useful parsing details onto the default message. * @return the parent's message plus "caused by value" addendum. */ public String getMessage() { return super.getMessage() + ", caused by value '" + m_value + "' for tag '" + ( m_namespace == null ? "" : m_namespace + ":" ) + m_tagName + "'"; } /** * This is only used for testing purposes. * @param obj what to compare against. * @return true or false */ public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; final JiBXParseException other = (JiBXParseException) obj; if (m_namespace == null) { if (other.m_namespace != null) return false; } else if (!m_namespace.equals(other.m_namespace)) return false; if (m_tagName == null) { if (other.m_tagName != null) return false; } else if (!m_tagName.equals(other.m_tagName)) return false; if (m_value == null) { if (other.m_value != null) return false; } else if (!m_value.equals(other.m_value)) return false; return true; } } libjibx-java-1.1.6a/build/src/org/jibx/runtime/QName.java0000644000175000017500000003030510673571742023057 0ustar moellermoeller/* Copyright (c) 2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime; import java.util.ArrayList; import org.jibx.runtime.impl.MarshallingContext; import org.jibx.runtime.impl.UnmarshallingContext; /** *

Representation of a qualified name. This includes the JiBX * serializer/deserializer methods for the representation. It assumes that the * actual namespace declarations are being handled separately for * marshalling

* *

Note that this implementation treats only the namespace and local name as * significant for purposes of comparing values. The prefix is held only as a * convenience, and the actual prefix used when writing a value may differ from * the prefix defined by the instance.

* * @author Dennis M. Sosnoski */ public class QName { /** Namespace URI. */ private String m_uri; /** Namespace prefix. */ private String m_prefix; /** Local name. */ private String m_name; /** * Constructor from full set of components. * * @param uri namespace uri, null if no-namespace namespace * @param prefix namespace prefix, null if unspecified, empty * string if default namespace * @param name local name */ public QName(String uri, String prefix, String name) { m_uri = uri; m_prefix = prefix; m_name = name; } /** * Constructor from namespace and local name. This constructor is provided * as a convenience for when the actual prefix used for a namespace is * irrelevant. * * @param uri namespace uri, null if no-namespace namespace * @param name */ public QName(String uri, String name) { this(uri, null, name); } /** * Constructor from local name only. This constructor is provided as a * convenience for names in the no-namespace namespace. * * @param name */ public QName(String name) { this(null, null, name); } // // Overrides of base class methods /* (non-Javadoc) * @see java.lang.Object#equals(java.lang.Object) */ public boolean equals(Object obj) { if (obj instanceof QName) { QName qname = (QName)obj; if (m_name.equals(qname.getName())) { if (m_uri == null) { return qname.getUri() == null; } else { return m_uri.equals(qname.getUri()); } } } return false; } /* (non-Javadoc) * @see java.lang.Object#hashCode() */ public int hashCode() { return (m_uri == null ? 0 : m_uri.hashCode()) + m_name.hashCode(); } /* (non-Javadoc) * @see java.lang.Object#toString() */ public String toString() { if (m_uri == null) { return m_name; } else { return "{" + m_uri + "}:" + m_name; } } // // Access methods /** * Get local name. * * @return name */ public String getName() { return m_name; } /** * Set local name. * * @param name name */ public void setName(String name) { m_name = name; } /** * Get namespace prefix. * * @return prefix, null if unspecified, empty string if default * namespace */ public String getPrefix() { return m_prefix; } /** * Set namespace prefix. * * @param prefix prefix, null if unspecified, empty string if * default namespace */ public void setPrefix(String prefix) { m_prefix = prefix; } /** * Get namespace URI. * * @return uri namespace uri, null if no-namespace namespace */ public String getUri() { return m_uri; } /** * Set namespace URI. * * @param uri namespace uri, null if no-namespace namespace */ public void setUri(String uri) { m_uri = uri; } // // JiBX conversion methods /** * JiBX deserializer method. This is intended for use as a deserializer for * instances of the class. * * @param text value text * @param ictx unmarshalling context * @return created class instance * @throws JiBXException on error in unmarshalling */ public static QName deserialize(String text, IUnmarshallingContext ictx) throws JiBXException { if (text == null) { return null; } else { // check for prefix used in text representation int split = text.indexOf(':'); if (split > 0) { // strip off prefix String prefix = text.substring(0, split); text = text.substring(split+1); // look up the namespace URI associated with the prefix String uri = ((UnmarshallingContext)ictx).getNamespaceUri(prefix); if (uri == null) { throw new JiBXException("Undefined prefix " + prefix); } else { // create an instance of class to hold all components return new QName(uri, prefix, text); } } else { // create it using the default namespace URI String uri = ((UnmarshallingContext)ictx).getNamespaceUri(null); if (uri != null && uri.length() == 0) { uri = null; } return new QName(uri, "", text); } } } /** * JiBX serializer method. This is intended for use as a serializer for * instances of the class. The namespace must be active in the output * document at the point where this is called. * * @param qname value to be serialized * @param ictx unmarshalling context * @return created class instance * @throws JiBXException on error in marshalling */ public static String serialize(QName qname, IMarshallingContext ictx) throws JiBXException { if (qname == null) { return null; } else { // check for specified prefix IXMLWriter ixw = ((MarshallingContext)ictx).getXmlWriter(); int index = -1; String uri = qname.getUri(); if (uri == null) { uri = ""; } if (qname.getPrefix() != null) { // see if prefix already defined in document with correct URI int tryidx = ixw.getPrefixIndex(qname.getPrefix()); if (tryidx >= 0 && uri.equals(ixw.getNamespaceUri(tryidx))) { index = tryidx; } } // check if need to lookup prefix for namespace if (index < 0) { // prefix not defined, find the namespace index in binding if (uri == null) { uri = ""; } String[] nss = ixw.getNamespaces(); for (int i = 0; i < nss.length; i++) { if (nss[i].equals(uri)) { index = i; break; } } if (index < 0) { // namespace not in binding, check extensions String[][] nsss = ixw.getExtensionNamespaces(); if (nsss != null) { int base = nss.length; outer: for (int i = 0; i < nsss.length; i++) { nss = nsss[i]; for (int j = 0; j < nss.length; j++) { if (nss[j].equals(uri)) { index = base + j; break outer; } } base += nss.length; } } } } // check if prefix is alread defined in document with correct URI if (index >= 0) { // get prefix defined for namespace String prefix = ixw.getNamespacePrefix(index); if (prefix == null) { throw new JiBXException("Namespace URI " + qname.getUri() + " cannot be used since it is not active"); } else if (prefix.length() > 0) { return prefix + ':' + qname.getName(); } else { return qname.getName(); } } else { throw new JiBXException("Unknown namespace URI " + qname.m_uri); } } } /** * JiBX deserializer method. This is intended for use as a deserializer for * a list made up of instances of the class. * * @param text value text * @param ictx unmarshalling context * @return array of instances * @throws JiBXException on error in marshalling */ public static QName[] deserializeList(String text, final IUnmarshallingContext ictx) throws JiBXException { // use basic qualified name deserializer to handle items IListItemDeserializer ldser = new IListItemDeserializer() { public Object deserialize(String text) throws JiBXException { return QName.deserialize(text, ictx); } }; ArrayList list = Utility.deserializeList(text, ldser); if (list == null) { return null; } else { return (QName[])list.toArray(new QName[list.size()]); } } /** * JiBX serializer method. This is intended for use as a serializer for a * list made up of instances of the class. The namespace must be active in * the output document at the point where this is called. * * @param qnames array of names to be serialized * @param ictx unmarshalling context * @return generated text * @throws JiBXException on error in marshalling */ public static String serializeList(QName[] qnames, IMarshallingContext ictx) throws JiBXException { StringBuffer buff = new StringBuffer(); for (int i = 0; i < qnames.length; i++) { QName qname = qnames[i]; if (qname != null) { if (buff.length() > 0) { buff.append(' '); } buff.append(serialize(qname, ictx)); } } return buff.toString(); } }libjibx-java-1.1.6a/build/src/org/jibx/runtime/RecoverableException.java0000644000175000017500000000430310071714360026150 0ustar moellermoeller/* Copyright (c) 2002,2003, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime; /** * Recoverable exception class. This is used for non-fatal errors in marshalling * and unmarshalling. * * @author Dennis M. Sosnoski * @version 1.0 */ public class RecoverableException extends JiBXException { /** * Constructor from message. * * @param msg message describing the exception condition */ public RecoverableException(String msg) { super(msg); } /** * Constructor from message and wrapped exception. * * @param msg message describing the exception condition * @param root exception which caused this exception */ public RecoverableException(String msg, Throwable root) { super(msg, root); } } libjibx-java-1.1.6a/build/src/org/jibx/runtime/UnrecoverableException.java0000644000175000017500000000430710071714360026517 0ustar moellermoeller/* Copyright (c) 2002,2003, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime; /** * Unrecoverable exception class. This is used for fatal errors in marshalling * and unmarshalling. * * @author Dennis M. Sosnoski * @version 1.0 */ public class UnrecoverableException extends JiBXException { /** * Constructor from message. * * @param msg message describing the exception condition */ public UnrecoverableException(String msg) { super(msg); } /** * Constructor from message and wrapped exception. * * @param msg message describing the exception condition * @param root exception which caused this exception */ public UnrecoverableException(String msg, Throwable root) { super(msg, root); } } libjibx-java-1.1.6a/build/src/org/jibx/runtime/Utility.java0000644000175000017500000021616711003053234023510 0ustar moellermoeller/* Copyright (c) 2002-2008, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime; import java.lang.reflect.Array; //#!j2me{ import java.sql.Time; import java.sql.Timestamp; //#j2me} import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.List; /** * Utility class supplying static methods. Date serialization is based on the * algorithms published by Peter Baum (http://www.capecod.net/~pbaum). All date * handling is done according to the W3C Schema specification, which uses a * proleptic Gregorian calendar with no year 0. Note that this differs from the * Java date handling, which uses a discontinuous Gregorian calendar. * * @author Dennis M. Sosnoski */ public abstract class Utility { /** Minimum size for array returned by {@link #growArray}. */ public static final int MINIMUM_GROWN_ARRAY_SIZE = 16; /** Number of milliseconds in a minute. */ private static final int MSPERMINUTE = 60000; /** Number of milliseconds in an hour. */ private static final int MSPERHOUR = MSPERMINUTE*60; /** Number of milliseconds in a day. */ private static final int MSPERDAY = MSPERHOUR*24; /** Number of milliseconds in a day as a long. */ private static final long LMSPERDAY = (long)MSPERDAY; /** Number of milliseconds in a (non-leap) year. */ private static final long MSPERYEAR = LMSPERDAY*365; /** Average number of milliseconds in a year within century. */ private static final long MSPERAVGYEAR = (long)(MSPERDAY*365.25); /** Number of milliseconds in a normal century. */ private static final long MSPERCENTURY = (long)(MSPERDAY*36524.25); /** Millisecond value of base time for internal representation. This gives the bias relative to January 1 of the year 1 C.E. */ private static final long TIME_BASE = 1969*MSPERYEAR + (1969/4 - 19 + 4)*LMSPERDAY; /** Day number for start of month in non-leap year. */ private static final int[] MONTHS_NONLEAP = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 }; /** Day number for start of month in non-leap year. */ private static final int[] MONTHS_LEAP = { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366 }; /** Millisecond count prior to start of month in March 1-biased year. */ private static final long[] BIAS_MONTHMS = { 0*LMSPERDAY, 0*LMSPERDAY, 0*LMSPERDAY, 0*LMSPERDAY, 31*LMSPERDAY, 61*LMSPERDAY, 92*LMSPERDAY, 122*LMSPERDAY, 153*LMSPERDAY, 184*LMSPERDAY, 214*LMSPERDAY, 245*LMSPERDAY, 275*LMSPERDAY, 306*LMSPERDAY, 337*LMSPERDAY }; /** Date for setting change to Gregorian calendar. */ private static Date BEGINNING_OF_TIME = new Date(Long.MIN_VALUE); /** Pad character for base64 encoding. */ private static final char PAD_CHAR = '='; /** Characters used in base64 encoding. */ private static final char[] s_base64Chars = { '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', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/' }; /** Values corresponding to characters used in bas64 encoding. */ private static final byte[] s_base64Values = new byte[128]; static { for (int i = 0; i < s_base64Values.length; i++) { s_base64Values[i] = -1; } s_base64Values[PAD_CHAR] = 0; for (int i = 0; i < s_base64Chars.length; i++) { s_base64Values[s_base64Chars[i]] = (byte)i; } } /** * Parse digits in text as integer value. This internal method is used * for number values embedded within lexical structures. Only decimal * digits can be included in the text range parsed. * * @param text text to be parsed * @param offset starting offset in text * @param length number of digits to be parsed * @return converted positive integer value * @throws JiBXException on parse error */ private static int parseDigits(String text, int offset, int length) throws JiBXException { // check if overflow a potential problem int value = 0; if (length > 9) { // use library parse code for potential overflow try { value = Integer.parseInt(text.substring(offset, offset+length)); } catch (NumberFormatException ex) { throw new JiBXException(ex.getMessage()); } } else { // parse with no overflow worries int limit = offset + length; while (offset < limit) { char chr = text.charAt(offset++); if (chr >= '0' && chr <= '9') { value = value * 10 + (chr - '0'); } else { throw new JiBXException("Non-digit in number value"); } } } return value; } /** * Parse integer value from text. Integer values are parsed with optional * leading sign flag, followed by any number of digits. * * @param text text to be parsed * @return converted integer value * @throws JiBXException on parse error */ public static int parseInt(String text) throws JiBXException { // make sure there's text to be processed text = text.trim(); int offset = 0; int limit = text.length(); if (limit == 0) { throw new JiBXException("Empty number value"); } // check leading sign present in text boolean negate = false; char chr = text.charAt(0); if (chr == '-') { if (limit > 9) { // special case to make sure maximum negative value handled try { return Integer.parseInt(text); } catch (NumberFormatException ex) { throw new JiBXException(ex.getMessage()); } } else { negate = true; offset++; } } else if (chr == '+') { offset++; } if (offset >= limit) { throw new JiBXException("Invalid number format"); } // handle actual value conversion int value = parseDigits(text, offset, limit-offset); if (negate) { return -value; } else { return value; } } /** * Serialize int value to text. * * @param value int value to be serialized * @return text representation of value */ public static String serializeInt(int value) { return Integer.toString(value); } /** * Check if a text string is a valid boolean representation. * * @param text * @return true if valid boolean, false if not */ public static boolean ifBoolean(String text) { return "0".equals(text) || "1".equals(text) || "true".equals(text) || "false".equals(text); } /** * Parse long value from text. Long values are parsed with optional * leading sign flag, followed by any number of digits. * * @param text text to be parsed * @return converted long value * @throws JiBXException on parse error */ public static long parseLong(String text) throws JiBXException { // make sure there's text to be processed text = text.trim(); int offset = 0; int limit = text.length(); if (limit == 0) { throw new JiBXException("Empty number value"); } // check leading sign present in text boolean negate = false; char chr = text.charAt(0); if (chr == '-') { negate = true; offset++; } else if (chr == '+') { offset++; } if (offset >= limit) { throw new JiBXException("Invalid number format"); } // check if overflow a potential problem long value = 0; if (limit-offset > 18) { // pass text to library parse code (less leading +) if (chr == '+') { text = text.substring(1); } try { value = Long.parseLong(text); } catch (NumberFormatException ex) { throw new JiBXException(ex.getMessage()); } } else { // parse with no overflow worries while (offset < limit) { chr = text.charAt(offset++); if (chr >= '0' && chr <= '9') { value = value * 10 + (chr - '0'); } else { throw new JiBXException("Non-digit in number value"); } } if (negate) { value = -value; } } return value; } /** * Serialize long value to text. * * @param value long value to be serialized * @return text representation of value */ public static String serializeLong(long value) { return Long.toString(value); } /** * Convert gYear text to Java date. Date values are expected to be in * W3C XML Schema standard format as CCYY, with optional leading sign. * * @param text text to be parsed * @return start of year date as millisecond value from 1 C.E. * @throws JiBXException on parse error */ public static long parseYear(String text) throws JiBXException { // start by validating the length text = text.trim(); boolean valid = true; int minc = 4; char chr = text.charAt(0); if (chr == '-') { minc = 5; } else if (chr == '+') { valid = false; } if (text.length() < minc) { valid = false; } if (!valid) { throw new JiBXException("Invalid year format"); } // handle year conversion int year = parseInt(text); if (year == 0) { throw new JiBXException("Year value 0 is not allowed"); } if (year > 0) { year--; } long day = ((long)year)*365 + year/4 - year/100 + year/400; return day*MSPERDAY - TIME_BASE; } /** * Parse short value from text. Short values are parsed with optional * leading sign flag, followed by any number of digits. * * @param text text to be parsed * @return converted short value * @throws JiBXException on parse error */ public static short parseShort(String text) throws JiBXException { int value = parseInt(text); if (value < Short.MIN_VALUE || value > Short.MAX_VALUE) { throw new JiBXException("Value out of range"); } return (short)value; } /** * Serialize short value to text. * * @param value short value to be serialized * @return text representation of value */ public static String serializeShort(short value) { return Short.toString(value); } /** * Parse byte value from text. Byte values are parsed with optional * leading sign flag, followed by any number of digits. * * @param text text to be parsed * @return converted byte value * @throws JiBXException on parse error */ public static byte parseByte(String text) throws JiBXException { int value = parseInt(text); if (value < Byte.MIN_VALUE || value > Byte.MAX_VALUE) { throw new JiBXException("Value out of range"); } return (byte)value; } /** * Serialize byte value to text. * * @param value byte value to be serialized * @return text representation of value */ public static String serializeByte(byte value) { return Byte.toString(value); } /** * Parse boolean value from text. Boolean values are parsed as either text * "true" and "false", or "1" and "0" numeric equivalents. * * @param text text to be parsed * @return converted boolean value * @throws JiBXException on parse error */ public static boolean parseBoolean(String text) throws JiBXException { text = text.trim(); if ("true".equals(text) || "1".equals(text)) { return true; } else if ("false".equals(text) || "0".equals(text)) { return false; } else { throw new JiBXException("Invalid boolean value"); } } /** * Serialize boolean value to text. This serializes the value using the * text representation as "true" or "false". * * @param value boolean value to be serialized * @return text representation of value */ public static String serializeBoolean(boolean value) { return value ? "true" : "false"; } /** * Parse char value from text as unsigned 16-bit integer. Char values are * parsed with optional leading sign flag, followed by any number of digits. * * @param text text to be parsed * @return converted char value * @throws JiBXException on parse error */ public static char parseChar(String text) throws JiBXException { int value = parseInt(text); if (value < Character.MIN_VALUE || value > Character.MAX_VALUE) { throw new JiBXException("Value out of range"); } return (char)value; } /** * Serialize char value to text as unsigned 16-bit integer. * * @param value char value to be serialized * @return text representation of value */ public static String serializeChar(char value) { return Integer.toString(value); } /** * Parse char value from text as character value. This requires that the * string must be of length one. * * @param text text to be parsed * @return converted char value * @throws JiBXException on parse error */ public static char parseCharString(String text) throws JiBXException { if (text.length() == 1) { return text.charAt(0); } else { throw new JiBXException("Input must be a single character"); } } /** * Deserialize char value from text as character value. This requires that * the string must be null or of length one. * * @param text text to be parsed (may be null) * @return converted char value * @throws JiBXException on parse error */ public static char deserializeCharString(String text) throws JiBXException { if (text == null) { return 0; } else { return parseCharString(text); } } /** * Serialize char value to text as string of length one. * * @param value char value to be serialized * @return text representation of value */ public static String serializeCharString(char value) { return String.valueOf(value); } /** * Parse float value from text. This uses the W3C XML Schema format for * floats, with the exception that it will accept "+NaN" and "-NaN" as * valid formats. This is not in strict compliance with the specification, * but is included for interoperability with other Java XML processing. * * @param text text to be parsed * @return converted float value * @throws JiBXException on parse error */ public static float parseFloat(String text) throws JiBXException { text = text.trim(); if ("-INF".equals(text)) { return Float.NEGATIVE_INFINITY; } else if ("INF".equals(text)) { return Float.POSITIVE_INFINITY; } else { try { return Float.parseFloat(text); } catch (NumberFormatException ex) { throw new JiBXException(ex.getMessage()); } } } /** * Serialize float value to text. * * @param value float value to be serialized * @return text representation of value */ public static String serializeFloat(float value) { if (Float.isInfinite(value)) { return (value < 0.0f) ? "-INF" : "INF"; } else { return Float.toString(value); } } /** * Parse double value from text. This uses the W3C XML Schema format for * doubles, with the exception that it will accept "+NaN" and "-NaN" as * valid formats. This is not in strict compliance with the specification, * but is included for interoperability with other Java XML processing. * * @param text text to be parsed * @return converted double value * @throws JiBXException on parse error */ public static double parseDouble(String text) throws JiBXException { text = text.trim(); if ("-INF".equals(text)) { return Double.NEGATIVE_INFINITY; } else if ("INF".equals(text)) { return Double.POSITIVE_INFINITY; } else { try { return Double.parseDouble(text); } catch (NumberFormatException ex) { throw new JiBXException(ex.getMessage()); } } } /** * Serialize double value to text. * * @param value double value to be serialized * @return text representation of value */ public static String serializeDouble(double value) { if (Double.isInfinite(value)) { return (value < 0.0f) ? "-INF" : "INF"; } else { return Double.toString(value); } } /** * Convert gYearMonth text to Java date. Date values are expected to be in * W3C XML Schema standard format as CCYY-MM, with optional * leading sign. * * @param text text to be parsed * @return start of month in year date as millisecond value * @throws JiBXException on parse error */ public static long parseYearMonth(String text) throws JiBXException { // start by validating the length and basic format text = text.trim(); boolean valid = true; int minc = 7; char chr = text.charAt(0); if (chr == '-') { minc = 8; } else if (chr == '+') { valid = false; } int split = text.length() - 3; if (text.length() < minc) { valid = false; } else { if (text.charAt(split) != '-') { valid = false; } } if (!valid) { throw new JiBXException("Invalid date format"); } // handle year and month conversion int year = parseInt(text.substring(0, split)); if (year == 0) { throw new JiBXException("Year value 0 is not allowed"); } int month = parseDigits(text, split+1, 2) - 1; if (month < 0 || month > 11) { throw new JiBXException("Month value out of range"); } boolean leap = (year%4 == 0) && !((year%100 == 0) && (year%400 != 0)); if (year > 0) { year--; } long day = ((long)year)*365 + year/4 - year/100 + year/400 + (leap ? MONTHS_LEAP : MONTHS_NONLEAP)[month]; return day*MSPERDAY - TIME_BASE; } /** * Convert date text to Java date. Date values are expected to be in * W3C XML Schema standard format as CCYY-MM-DD, with optional * leading sign and trailing time zone (though the time zone is ignored * in this case). * * Note that the returned value is based on UTC, which matches the * definition of java.util.Date but will typically not be the * expected value if you're using a java.util.Calendar on the * result. In this case you probably want to instead use {@link * #deserializeSqlDate(String)}, which does adjust the value to match * the local time zone. * * @param text text to be parsed * @return start of day in month and year date as millisecond value * @throws JiBXException on parse error */ public static long parseDate(String text) throws JiBXException { // start by validating the length and basic format if (!ifDate(text)) { throw new JiBXException("Invalid date format"); } // handle year, month, and day conversion int split = text.indexOf('-', 1); int year = parseInt(text.substring(0, split)); if (year == 0) { throw new JiBXException("Year value 0 is not allowed"); } int month = parseDigits(text, split+1, 2) - 1; if (month < 0 || month > 11) { throw new JiBXException("Month value out of range"); } long day = parseDigits(text, split+4, 2) - 1; boolean leap = (year%4 == 0) && !((year%100 == 0) && (year%400 != 0)); int[] starts = leap ? MONTHS_LEAP : MONTHS_NONLEAP; if (day < 0 || day >= (starts[month+1]-starts[month])) { throw new JiBXException("Day value out of range"); } if (year > 0) { year--; } day += ((long)year)*365 + year/4 - year/100 + year/400 + starts[month]; return day*MSPERDAY - TIME_BASE; } /** * Deserialize date from text. Date values are expected to match W3C XML * Schema standard format as CCYY-MM-DD, with optional leading sign and * trailing time zone (though the time zone is ignored in this case). This * method follows standard JiBX deserializer usage requirements by accepting * a null input. * * Note that the returned value is based on UTC, which matches the * definition of java.util.Date but will typically not be the * expected value if you're using a java.util.Calendar on the * result. In this case you probably want to instead use {@link * #deserializeSqlDate(String)}, which does adjust the value to match * the local time zone. * * @param text text to be parsed (may be null) * @return converted date, or null if passed null * input * @throws JiBXException on parse error */ public static Date deserializeDate(String text) throws JiBXException { if (text == null) { return null; } else { return new Date(parseDate(text)); } } //#!j2me{ /** * Deserialize SQL date from text. Date values are expected to match W3C XML * Schema standard format as CCYY-MM-DD, with optional leading sign and * trailing time zone (though the time zone is ignored in this case). This * method follows standard JiBX deserializer usage requirements by accepting * a null input. * * @param text text to be parsed (may be null) * @return converted date, or null if passed null * input * @throws JiBXException on parse error */ public static java.sql.Date deserializeSqlDate(String text) throws JiBXException { if (text == null) { return null; } else { // make sure date is valid if (!ifDate(text)) { throw new JiBXException("Invalid date format"); } // handle year, month, and day conversion int split = text.indexOf('-', 1); int year = parseInt(text.substring(0, split)); if (year == 0) { throw new JiBXException("Year value 0 is not allowed"); } int month = parseDigits(text, split+1, 2) - 1; if (month < 0 || month > 11) { throw new JiBXException("Month value out of range"); } int day = parseDigits(text, split+4, 2) - 1; boolean leap = (year%4 == 0) && !((year%100 == 0) && (year%400 != 0)); int[] starts = leap ? MONTHS_LEAP : MONTHS_NONLEAP; if (day < 0 || day >= (starts[month+1]-starts[month])) { throw new JiBXException("Day value out of range"); } if (year < 0) { year++; } // set it into a calendar GregorianCalendar cal; if (year < 1800) { cal = new GregorianCalendar(); cal.setGregorianChange(BEGINNING_OF_TIME); cal.clear(); cal.set(year, month, day+1); } else { cal = new GregorianCalendar(year, month, day+1); } return new java.sql.Date(cal.getTime().getTime()); } } //#j2me} /** * Parse general time value from text. Time values are expected to be in W3C * XML Schema standard format as hh:mm:ss.fff, with optional leading sign * and trailing time zone. * * @param text text to be parsed * @param start offset of first character of time value * @param length number of characters in time value * @return converted time as millisecond value * @throws JiBXException on parse error */ public static long parseTime(String text, int start, int length) throws JiBXException { // validate time value following date long milli = 0; boolean valid = length > (start+7) && (text.charAt(start+2) == ':') && (text.charAt(start+5) == ':'); if (valid) { int hour = parseDigits(text, start, 2); int minute = parseDigits(text, start+3, 2); int second = parseDigits(text, start+6, 2); if (hour > 23 || minute > 59 || second > 60) { valid = false; } else { // convert to base millisecond in day milli = (((hour*60)+minute)*60+second)*1000; start += 8; if (length > start) { // adjust for time zone if (text.charAt(length-1) == 'Z') { length--; } else { char chr = text.charAt(length-6); if (chr == '-' || chr == '+') { hour = parseDigits(text, length-5, 2); minute = parseDigits(text, length-2, 2); if (hour > 23 || minute > 59) { valid = false; } else { int offset = ((hour*60)+minute)*60*1000; if (chr == '-') { milli += offset; } else { milli -= offset; } } length -= 6; } } // check for trailing fractional second if (text.charAt(start) == '.') { double fraction = Double.parseDouble (text.substring(start, length)); milli += fraction*1000.0; } else if (length > start) { valid = false; } } } } // check for valid result if (valid) { return milli; } else { throw new JiBXException("Invalid dateTime format"); } } /** * Parse general dateTime value from text. Date values are expected to be in * W3C XML Schema standard format as CCYY-MM-DDThh:mm:ss.fff, with optional * leading sign and trailing time zone. * * @param text text to be parsed * @return converted date as millisecond value * @throws JiBXException on parse error */ public static long parseDateTime(String text) throws JiBXException { // split text to convert portions separately int split = text.indexOf('T'); if (split < 0) { throw new JiBXException("Missing 'T' separator in dateTime"); } return parseDate(text.substring(0, split)) + parseTime(text, split+1, text.length()); } /** * Deserialize date from general dateTime text. Date values are expected to * match W3C XML Schema standard format as CCYY-MM-DDThh:mm:ss, with * optional leading minus sign and trailing seconds decimal, as necessary. * This method follows standard JiBX deserializer usage requirements by * accepting a null input. * * @param text text to be parsed (may be null) * @return converted date, or null if passed null * input * @throws JiBXException on parse error */ public static Date deserializeDateTime(String text) throws JiBXException { if (text == null) { return null; } else { return new Date(parseDateTime(text)); } } //#!j2me{ /** * Deserialize timestamp from general dateTime text. Timestamp values are * represented in the same way as regular dates, but allow more precision in * the fractional second value (down to nanoseconds). This method follows * standard JiBX deserializer usage requirements by accepting a * null input. * * @param text text to be parsed (may be null) * @return converted timestamp, or null if passed * null input * @throws JiBXException on parse error */ public static Timestamp deserializeTimestamp(String text) throws JiBXException { if (text == null) { return null; } else { // check for fractional second value present int split = text.indexOf('.'); int nano = 0; if (split > 0) { // make sure there aren't multiple decimal points if (text.indexOf('.', split+1) > 0) { throw new JiBXException("Not a valid timestamp value"); } // scan through all digits following decimal point int limit = text.length(); int scan = split; while (++scan < limit) { char chr = text.charAt(scan); if (chr < '0' || chr > '9') { break; } } // parse digits following decimal point int length = scan - split - 1; if (length > 9) { length = 9; } nano = parseDigits(text, split+1, length); // convert to number of nanoseconds while (length < 9) { nano *= 10; length++; } // strip fractional second off text if (scan < limit) { text = text.substring(0, split) + text.substring(scan); } else { text = text.substring(0, split); } } // return timestamp value with nanoseconds Timestamp stamp = new Timestamp(parseDateTime(text)); stamp.setNanos(nano); return stamp; } } /** * Deserialize time from text. Time values obey the rules of the time * portion of a dataTime value. This method follows standard JiBX * deserializer usage requirements by accepting a null input. * * @param text text to be parsed (may be null) * @return converted time, or null if passed null * input * @throws JiBXException on parse error */ public static Time deserializeSqlTime(String text) throws JiBXException { if (text == null) { return null; } else { return new Time(parseTime(text, 0, text.length())); } } //#j2me} /** * Format year number consistent with W3C XML Schema definitions, using a * minimum of four digits padded with zeros if necessary. A leading minus * sign is included for years prior to 1 C.E. * * @param year number to be formatted * @param buff text formatting buffer */ protected static void formatYearNumber(long year, StringBuffer buff) { // start with minus sign for dates prior to 1 C.E. if (year <= 0) { buff.append('-'); year = -(year-1); } // add padding if needed to bring to length of four if (year < 1000) { buff.append('0'); if (year < 100) { buff.append('0'); if (year < 10) { buff.append('0'); } } } // finish by converting the actual year number buff.append(year); } /** * Format a positive number as two digits. This uses an optional leading * zero digit for values less than ten. * * @param value number to be formatted (0 to 99) * @param buff text formatting buffer */ protected static void formatTwoDigits(int value, StringBuffer buff) { if (value < 10) { buff.append('0'); } buff.append(value); } /** * Format time in milliseconds to year number. The resulting year number * format is consistent with W3C XML Schema definitions, using a minimum * of four digits padded with zeros if necessary. A leading minus sign is * included for years prior to 1 C.E. * * @param value time in milliseconds to be converted (from 1 C.E.) * @param buff text formatting buffer */ protected static void formatYear(long value, StringBuffer buff) { // find the actual year and month number; this uses a integer arithmetic // conversion based on Baum, first making the millisecond count // relative to March 1 of the year 0 C.E., then using simple arithmetic // operations to compute century, year, and month; it's slightly // different for pre-C.E. values because of Java's handling of divisions. long time = value + 306*LMSPERDAY + LMSPERDAY*3/4; long century = time / MSPERCENTURY; // count of centuries long adjusted = time + (century - (century/4)) * MSPERDAY; int year = (int)(adjusted / MSPERAVGYEAR); // year in March 1 terms if (adjusted < 0) { year--; } long yms = adjusted + LMSPERDAY/4 - (year * 365 + year/4) * LMSPERDAY; int yday = (int)(yms / LMSPERDAY); // day number in year int month = (5*yday + 456) / 153; // (biased) month number if (month > 12) { // convert start of year year++; } // format year to text formatYearNumber(year, buff); } /** * Format time in milliseconds to year number and month number. The * resulting year number format is consistent with W3C XML Schema * definitions, using a minimum of four digits for the year and exactly * two digits for the month. * * @param value time in milliseconds to be converted (from 1 C.E.) * @param buff text formatting buffer * @return number of milliseconds into month */ protected static long formatYearMonth(long value, StringBuffer buff) { // find the actual year and month number; this uses a integer arithmetic // conversion based on Baum, first making the millisecond count // relative to March 1 of the year 0 C.E., then using simple arithmetic // operations to compute century, year, and month; it's slightly // different for pre-C.E. values because of Java's handling of divisions. long time = value + 306*LMSPERDAY + LMSPERDAY*3/4; long century = time / MSPERCENTURY; // count of centuries long adjusted = time + (century - (century/4)) * MSPERDAY; int year = (int)(adjusted / MSPERAVGYEAR); // year in March 1 terms if (adjusted < 0) { year--; } long yms = adjusted + LMSPERDAY/4 - (year * 365 + year/4) * LMSPERDAY; int yday = (int)(yms / LMSPERDAY); // day number in year if (yday == 0) { // special for negative boolean bce = year < 0; if (bce) { year--; } int dcnt = year % 4 == 0 ? 366 : 365; if (!bce) { year--; } yms += dcnt * LMSPERDAY; yday += dcnt; } int month = (5*yday + 456) / 153; // (biased) month number long rem = yms - BIAS_MONTHMS[month] - LMSPERDAY; // ms into month if (month > 12) { // convert start of year year++; month -= 12; } // format year and month as text formatYearNumber(year, buff); buff.append('-'); formatTwoDigits(month, buff); // return extra milliseconds into month return rem; } /** * Format time in milliseconds to year number, month number, and day * number. The resulting year number format is consistent with W3C XML * Schema definitions, using a minimum of four digits for the year and * exactly two digits each for the month and day. * * @param value time in milliseconds to be converted (from 1 C.E.) * @param buff text formatting buffer * @return number of milliseconds into day */ protected static int formatYearMonthDay(long value, StringBuffer buff) { // convert year and month long extra = formatYearMonth(value, buff); // append the day of month int day = (int)(extra / MSPERDAY) + 1; buff.append('-'); formatTwoDigits(day, buff); // return excess of milliseconds into day return (int)(extra % MSPERDAY); } /** * Serialize time to general gYear text. Date values are formatted in * W3C XML Schema standard format as CCYY, with optional * leading sign included if necessary. * * @param time time to be converted, as milliseconds from January 1, 1970 * @return converted gYear text */ public static String serializeYear(long time) { StringBuffer buff = new StringBuffer(6); formatYear(time + TIME_BASE, buff); return buff.toString(); } /** * Serialize date to general gYear text. Date values are formatted in * W3C XML Schema standard format as CCYY, with optional * leading sign included if necessary. * * @param date date to be converted * @return converted gYear text */ public static String serializeYear(Date date) { return serializeYear(date.getTime()); } /** * Serialize time to general gYearMonth text. Date values are formatted in * W3C XML Schema standard format as CCYY-MM, with optional * leading sign included if necessary. * * @param time time to be converted, as milliseconds from January 1, 1970 * @return converted gYearMonth text */ public static String serializeYearMonth(long time) { StringBuffer buff = new StringBuffer(12); formatYearMonth(time + TIME_BASE, buff); return buff.toString(); } /** * Serialize date to general gYearMonth text. Date values are formatted in * W3C XML Schema standard format as CCYY-MM, with optional * leading sign included if necessary. * * @param date date to be converted * @return converted gYearMonth text */ public static String serializeYearMonth(Date date) { return serializeYearMonth(date.getTime()); } /** * Serialize time to general date text. Date values are formatted in * W3C XML Schema standard format as CCYY-MM-DD, with optional * leading sign included if necessary. * * @param time time to be converted, as milliseconds from January 1, 1970 * @return converted date text */ public static String serializeDate(long time) { StringBuffer buff = new StringBuffer(12); formatYearMonthDay(time + TIME_BASE, buff); return buff.toString(); } /** * Serialize date to general date text. Date values are formatted in * W3C XML Schema standard format as CCYY-MM-DD, with optional * leading sign included if necessary. * * Note that the conversion is based on UTC, which matches the * definition of java.util.Date but may not match the value as * serialized using java.util.Calendar (which assumes values * are in the local time zone). To work with values in the local time zone * you want to instead use {@link #serializeSqlDate(java.sql.Date)}. * * @param date date to be converted * @return converted date text */ public static String serializeDate(Date date) { return serializeDate(date.getTime()); } //#!j2me{ /** * Serialize SQL date to general date text. Date values are formatted in * W3C XML Schema standard format as CCYY-MM-DD, with optional * leading sign included if necessary. This interprets the date value with * respect to the local time zone, as fits the definition of the * java.sql.Date type. * * @param date date to be converted * @return converted date text */ public static String serializeSqlDate(java.sql.Date date) { // values should be normalized to midnight in zone, but no guarantee // so convert using the lame calendar approach GregorianCalendar cal = new GregorianCalendar(); cal.setGregorianChange(BEGINNING_OF_TIME); cal.setTime(date); StringBuffer buff = new StringBuffer(12); int year = cal.get(Calendar.YEAR); if (date.getTime() < 0) { if (cal.get(Calendar.ERA) == GregorianCalendar.BC) { year = -year + 1; } } formatYearNumber(year, buff); buff.append('-'); formatTwoDigits(cal.get(Calendar.MONTH)+1, buff); buff.append('-'); formatTwoDigits(cal.get(Calendar.DAY_OF_MONTH), buff); return buff.toString(); } //#j2me} /** * Serialize time to general time text in buffer. Time values are formatted * in W3C XML Schema standard format as hh:mm:ss, with optional trailing * seconds decimal, as necessary. This form uses a supplied buffer to * support flexible use, including with dateTime combination values. * * @param time time to be converted, as milliseconds in day * @param buff buffer for appending time text */ public static void serializeTime(int time, StringBuffer buff) { // append the hour, minute, and second formatTwoDigits(time/MSPERHOUR, buff); time = time % MSPERHOUR; buff.append(':'); formatTwoDigits(time/MSPERMINUTE, buff); time = time % MSPERMINUTE; buff.append(':'); formatTwoDigits(time/1000, buff); time = time % 1000; // check if decimals needed on second if (time > 0) { buff.append('.'); buff.append(time / 100); time = time % 100; if (time > 0) { buff.append(time / 10); time = time % 10; if (time > 0) { buff.append(time); } } } } /** * Serialize time to general dateTime text. Date values are formatted in * W3C XML Schema standard format as CCYY-MM-DDThh:mm:ss, with optional * leading sign and trailing seconds decimal, as necessary. * * @param time time to be converted, as milliseconds from January 1, 1970 * @param zone flag for trailing 'Z' to be appended to indicate UTC * @return converted dateTime text */ public static String serializeDateTime(long time, boolean zone) { // start with the year, month, and day StringBuffer buff = new StringBuffer(25); int extra = formatYearMonthDay(time + TIME_BASE, buff); // append the time for full form buff.append('T'); serializeTime(extra, buff); // return full text with optional trailing zone indicator if (zone) { buff.append('Z'); } return buff.toString(); } /** * Serialize time to general dateTime text. This method is provided for * backward compatibility. It generates the dateTime text without the * trailing 'Z' to indicate UTC. * * @param time time to be converted, as milliseconds from January 1, 1970 * @return converted dateTime text */ public static String serializeDateTime(long time) { return serializeDateTime(time, false); } /** * Serialize date to general dateTime text. Date values are formatted in * W3C XML Schema standard format as CCYY-MM-DDThh:mm:ssZ, with optional * leading sign and trailing seconds decimal, as necessary. * * @param date date to be converted * @return converted dateTime text */ public static String serializeDateTime(Date date) { return serializeDateTime(date.getTime(), true); } //#!j2me{ /** * Serialize timestamp to general dateTime text. Timestamp values are * represented in the same way as regular dates, but allow more precision in * the fractional second value (down to nanoseconds). * * @param stamp timestamp to be converted * @return converted dateTime text */ public static String serializeTimestamp(Timestamp stamp) { // check for nanosecond value to be included int nano = stamp.getNanos(); if (nano > 0) { // convert the number of nanoseconds to text String value = serializeInt(nano); // pad with leading zeros if less than 9 digits StringBuffer digits = new StringBuffer(9); if (value.length() < 9) { int lead = 9 - value.length(); for (int i = 0; i < lead; i++) { digits.append('0'); } } digits.append(value); // strip trailing zeros from value int last = 9; while (--last >= 0) { if (digits.charAt(last) != '0') { break; } } digits.setLength(last+1); // finish by appending to rounded time with decimal separator long time = stamp.getTime(); return serializeDateTime(time - time % 1000, false) + '.' + digits + 'Z'; } else { return serializeDateTime(stamp.getTime(), true); } } /** * Serialize time to standard text. Time values are formatted in W3C XML * Schema standard format as hh:mm:ss, with optional trailing seconds * decimal, as necessary. The standard conversion does not append a time * zone indication. * * @param time time to be converted * @return converted time text */ public static String serializeSqlTime(Time time) { StringBuffer buff = new StringBuffer(12); serializeTime((int)time.getTime(), buff); return buff.toString(); } //#j2me} /** * General object comparison method. Don't know why Sun hasn't seen fit to * include this somewhere, but at least it's easy to write (over and over * again). * * @param a first object to be compared * @param b second object to be compared * @return true if both objects are null, or if * a.equals(b); false otherwise */ public static boolean isEqual(Object a, Object b) { return (a == null) ? b == null : a.equals(b); } /** * Find text value in enumeration. This first does a binary search through * an array of allowed text matches. If a separate array of corresponding * values is supplied, the value at the matched position is returned; * otherwise the match index is returned directly. * * @param target text to be found in enumeration * @param enums ordered array of texts included in enumeration * @param vals array of values to be returned for corresponding text match * positions (position returned directly if this is null) * @return enumeration value for target text * @throws JiBXException if target text not found in enumeration */ public static int enumValue(String target, String[] enums, int[] vals) throws JiBXException { int base = 0; int limit = enums.length - 1; while (base <= limit) { int cur = (base + limit) >> 1; int diff = target.compareTo(enums[cur]); if (diff < 0) { limit = cur - 1; } else if (diff > 0) { base = cur + 1; } else if (vals != null) { return vals[cur]; } else { return cur; } } throw new JiBXException("Target value \"" + target + "\" not found in enumeration"); } /** * Decode a chunk of data from base64 encoding. The length of a chunk is * always 4 characters in the base64 representation, but may be 1, 2, or 3 * bytes of data, as determined by whether there are any pad characters at * the end of the base64 representation * * @param base starting offset within base64 character array * @param chrs character array for base64 text representation * @param fill starting offset within byte data array * @param byts byte data array * @return number of decoded bytes */ private static int decodeChunk(int base, char[] chrs, int fill, byte[] byts) { // find the byte count to be decoded int length = 3; if (chrs[base+3] == PAD_CHAR) { length = 2; if (chrs[base+2] == PAD_CHAR) { length = 1; } } // get 6-bit values int v0 = s_base64Values[chrs[base+0]]; int v1 = s_base64Values[chrs[base+1]]; int v2 = s_base64Values[chrs[base+2]]; int v3 = s_base64Values[chrs[base+3]]; // convert and store bytes of data switch (length) { case 3: byts[fill+2] = (byte)(v2 << 6 | v3); case 2: byts[fill+1] = (byte)(v1 << 4 | v2 >> 2); case 1: byts[fill] = (byte)(v0 << 2 | v1 >> 4); break; } return length; } /** * Parse base64 data from text. This converts the base64 data into a byte * array of the appopriate length. In keeping with the recommendations, * * @param text text to be parsed (may include extra characters) * @return byte array of data * @throws JiBXException if invalid character in base64 representation */ public static byte[] parseBase64(String text) throws JiBXException { // convert raw text to base64 character array char[] chrs = new char[text.length()]; int length = 0; for (int i = 0; i < text.length(); i++) { char chr = text.charAt(i); if (chr < 128 && s_base64Values[chr] >= 0) { chrs[length++] = chr; } } // check the text length if (length % 4 != 0) { throw new JiBXException ("Text length for base64 must be a multiple of 4"); } else if (length == 0) { return new byte[0]; } // find corresponding byte count for data int blength = length / 4 * 3; if (chrs[length-1] == PAD_CHAR) { blength--; if (chrs[length-2] == PAD_CHAR) { blength--; } } // convert text to actual bytes of data byte[] byts = new byte[blength]; int fill = 0; for (int i = 0; i < length; i += 4) { fill += decodeChunk(i, chrs, fill, byts); } if (fill != blength) { throw new JiBXException ("Embedded padding characters in byte64 text"); } return byts; } /** * Parse base64 data from text. This converts the base64 data into a byte * array of the appopriate length. In keeping with the recommendations, * * @param text text to be parsed (may be null, or include extra characters) * @return byte array of data * @throws JiBXException if invalid character in base64 representation */ public static byte[] deserializeBase64(String text) throws JiBXException { if (text == null) { return null; } else { return parseBase64(text); } } /** * Encode a chunk of data to base64 encoding. Converts the next three bytes * of data into four characters of text representation, using padding at the * end of less than three bytes of data remain. * * @param base starting offset within byte array * @param byts byte data array * @param buff buffer for encoded text */ public static void encodeChunk(int base, byte[] byts, StringBuffer buff) { // get actual byte data length to be encoded int length = 3; if (base + length > byts.length) { length = byts.length - base; } // convert up to three bytes of data to four characters of text int b0 = byts[base]; int value = (b0 >> 2) & 0x3F; buff.append(s_base64Chars[value]); if (length > 1) { int b1 = byts[base+1]; value = ((b0 & 3) << 4) + ((b1 >> 4) & 0x0F); buff.append(s_base64Chars[value]); if (length > 2) { int b2 = byts[base+2]; value = ((b1 & 0x0F) << 2) + ((b2 >> 6) & 3); buff.append(s_base64Chars[value]); value = b2 & 0x3F; buff.append(s_base64Chars[value]); } else { value = (b1 & 0x0F) << 2; buff.append(s_base64Chars[value]); buff.append(PAD_CHAR); } } else { value = (b0 & 3) << 4; buff.append(s_base64Chars[value]); buff.append(PAD_CHAR); buff.append(PAD_CHAR); } } /** * Serialize byte array to base64 text. In keeping with the specification, * this adds a line break every 76 characters in the encoded representation. * * @param byts byte data array * @return base64 encoded text */ public static String serializeBase64(byte[] byts) { StringBuffer buff = new StringBuffer((byts.length + 2) / 3 * 4); for (int i = 0; i < byts.length; i += 3) { encodeChunk(i, byts, buff); if (i > 0 && i % 57 == 0 && (i + 3) < byts.length) { buff.append("\r\n"); } } return buff.toString(); } /** * Resize array of arbitrary type. * * @param size new aray size * @param base array to be resized * @return resized array, with all data to minimum of the two sizes copied */ public static Object resizeArray(int size, Object base) { int prior = Array.getLength(base); if (size == prior) { return base; } else { Class type = base.getClass().getComponentType(); Object copy = Array.newInstance(type, size); int count = Math.min(size, prior); System.arraycopy(base, 0, copy, 0, count); return copy; } } /** * Grow array of arbitrary type. The returned array is double the size of * the original array, providing this is at least the defined minimum size. * * @param base array to be grown * @return array of twice the size as original array, with all data copied */ public static Object growArray(Object base) { int length = Array.getLength(base); Class type = base.getClass().getComponentType(); int newlen = Math.max(length*2, MINIMUM_GROWN_ARRAY_SIZE); Object copy = Array.newInstance(type, newlen); System.arraycopy(base, 0, copy, 0, length); return copy; } /** * Factory method to create a java.util.ArrayList as the * implementation of a java.util.List. * * @return new java.util.ArrayList */ public static List arrayListFactory() { return new ArrayList(); } /** * Convert whitespace-separated list of values. This implements the * whitespace skipping, calling the supplied item deserializer for handling * each individual value. * * @param text value to be converted * @param ideser list item deserializer * @return list of deserialized items (null if input * null, or if nonrecoverable error) * @throws JiBXException if error in deserializing text */ public static ArrayList deserializeList(String text, IListItemDeserializer ideser) throws JiBXException { if (text == null) { return null; } else { // scan text to find whitespace breaks between items ArrayList items = new ArrayList(); int length = text.length(); int base = 0; boolean space = true; for (int i = 0; i < length; i++) { char chr = text.charAt(i); switch (chr) { case 0x09: case 0x0A: case 0x0D: case ' ': // ignore if preceded by space if (!space) { String itext = text.substring(base, i); items.add(ideser.deserialize(itext)); space = true; } base = i + 1; break; default: space = false; break; } } // finish last item if (base < length) { String itext = text.substring(base); items.add(ideser.deserialize(itext)); } // check if any items found if (items.size() > 0) { return items; } else { return null; } } } /** * Deserialize a list of whitespace-separated tokens into an array of * strings. * * @param text value text * @return created class instance * @throws JiBXException on error in marshalling */ public static String[] deserializeTokenList(String text) throws JiBXException { // use basic qualified name deserializer to handle items IListItemDeserializer ldser = new IListItemDeserializer() { public Object deserialize(String text) throws JiBXException { return text; } }; ArrayList list = Utility.deserializeList(text, ldser); if (list == null) { return null; } else { return (String[])list.toArray(new String[list.size()]); } } /** * Serialize an array of strings into a whitespace-separated token list. * * @param tokens array of strings to be serialized * @return list text */ public static String serializeTokenList(String[] tokens) { StringBuffer buff = new StringBuffer(); for (int i = 0; i < tokens.length; i++) { if (buff.length() > 0) { buff.append(' '); } buff.append(tokens[i]); } return buff.toString(); } /** * Safe equals test. This does an equals comparison for objects which may be * null. * * @param a * @param b * @return true if both null or a.equals(b), * false otherwise */ public static boolean safeEquals(Object a, Object b) { if (a == null) { return b == null; } else { return a.equals(b); } } /** * Check if a text string is a valid integer subtype representation. * * @param text (non-null) * @param digitmax maximum number of digits allowed * @param abslimit largest absolute value allowed (null if no * limit) * @return true if valid representation, false if * not */ public static boolean ifInIntegerRange(String text, int digitmax, String abslimit) { if (text.length() >= 1) { // first skip past a leading sign character int length = text.length(); int first = 0; boolean negate = false; char chr = text.charAt(0); if (chr == '-') { negate = true; first = 1; } else if (chr == '+') { first = 1; } // scan for any non-digit characters, and to find first non-zero for (int i = first; i < length; i++) { chr = text.charAt(i); if (chr < '0' || chr > '9') { return false; } else if (chr == '0' && i == first) { first++; } } // check if the digit count is allowed int digitcnt = length - first; if (digitcnt > digitmax) { return false; } else if (digitcnt == digitmax) { String number = text; if (first > 0) { number = text.substring(first); } if (negate) { return abslimit.compareTo(number) > 0; } else { return abslimit.compareTo(number) >= 0; } } else { return true; } } else { return false; } } /** * Check if a text string is a valid byte representation. * * @param text (non-null) * @return true if valid byte, false if not */ public static boolean ifByte(String text) { return ifInIntegerRange(text, 3, "128"); } /** * Check if a text string is a valid short representation. * * @param text (non-null) * @return true if valid short, false if not */ public static boolean ifShort(String text) { return ifInIntegerRange(text, 5, "32768"); } /** * Check if a text string is a valid int representation. * * @param text (non-null) * @return true if valid int, false if not */ public static boolean ifInt(String text) { return ifInIntegerRange(text, 10, "2147483648"); } /** * Check if a text string is a valid long representation. * * @param text (non-null) * @return true if valid long, false if not */ public static boolean ifLong(String text) { return ifInIntegerRange(text, 19, "9223372036854775808"); } /** * Check if a text string is a valid integer representation. * * @param text (non-null) * @return true if valid integer, false if not */ public static boolean ifInteger(String text) { return ifInIntegerRange(text, Integer.MAX_VALUE, null); } /** * Check if a portion of a text string consists of decimal digits. * * @param text * @param offset starting offset * @param limit ending offset plus one (false return if the * text length is less than this value) * @return true if digits, false if not */ public static boolean ifDigits(String text, int offset, int limit) { if (text.length() < limit) { return false; } else { for (int i = offset; i < limit; i++) { char chr = text.charAt(i); if (chr < '0' || chr > '9') { return false; } } return true; } } /** * Check if a portion of a text string is a bounded string of decimal * digits. This is used for checking fixed-length decimal fields with a * maximum value. * * @param text * @param offset * @param bound * @return true if bounded decimal, false if not */ public static boolean ifFixedDigits(String text, int offset, String bound) { int length = bound.length(); boolean lessthan = false; for (int i = 0; i < length; i++) { char chr = text.charAt(offset + i); if (chr < '0' || chr > '9') { return false; } else if (!lessthan) { int diff = bound.charAt(i) - chr; if (diff > 0) { lessthan = true; } else if (diff < 0) { return false; } } } return true; } /** * Check if a text string ends with a valid zone suffix. This accepts an * empty suffix, the single letter 'Z', or an offset of +/-HH:MM. * * @param text * @param offset * @return true if valid suffix, false if not */ public static boolean ifZoneSuffix(String text, int offset) { int length = text.length(); if (length <= offset) { return true; } else { char chr = text.charAt(offset); if (length == offset+1 && chr == 'Z') { return true; } else if (length == offset+6 && (chr == '+' || chr == '-') && text.charAt(offset+3) == ':') { return ifFixedDigits(text, offset+1, "24") && ifFixedDigits(text, offset+4, "59"); } else { return false; } } } /** * Check if a text string follows the schema date format. This does not * assure that the text string is actually a valid date representation, * since it doesn't fully check the value ranges (such as the day number * range for a particular month). * * @param text (non-null) * @return true if date format, false if not */ public static boolean ifDate(String text) { if (text.length() < 10) { return false; } else { int base = 0; int split = text.indexOf('-'); if (split == 0) { base = 1; split = text.indexOf('-', 1); } if (split > 0 && text.length() - split >= 5 && ifDigits(text, base, split) && text.charAt(split+3) == '-' && ifFixedDigits(text, split+1, "12") && ifFixedDigits(text, split+4, "31")) { return ifZoneSuffix(text, split+6); } else { return false; } } } /** * Check if a text string ends with a valid time suffix. This matches the * format HH:MM:SS with optional training fractional seconds and optional * time zone. * * @param text * @param offset * @return true if valid suffix, false if not */ public static boolean ifTimeSuffix(String text, int offset) { if (text.length() - offset >= 8 && ifFixedDigits(text, offset, "23") && text.charAt(offset+2) == ':' && ifFixedDigits(text, offset+3, "59") && text.charAt(offset+5) == ':' && ifFixedDigits(text, offset+6, "60")) { int base = offset + 8; int length = text.length(); if (base < length && text.charAt(base) == '.') { while (++base < length) { char chr = text.charAt(base); if (chr < '0' || chr > '9') { break; } } } return ifZoneSuffix(text, base); } else { return false; } } /** * Check if a text string follows the schema dateTime format. This does not * assure that the text string is actually a valid dateTime representation, * since it doesn't fully check the value ranges (such as the day number * range for a particular month). * * @param text (non-null) * @return true if date format, false if not */ public static boolean ifDateTime(String text) { if (text.length() < 19) { return false; } else { int base = 0; int split = text.indexOf('-'); if (split == 0) { base = 1; split = text.indexOf('-', 1); } if (split > 0 && text.length() - split >= 14 && ifDigits(text, base, split) && text.charAt(split+3) == '-' && ifFixedDigits(text, split+1, "12") && ifFixedDigits(text, split+4, "31") && text.charAt(split+6) == 'T') { return ifTimeSuffix(text, split+7); } else { return false; } } } /** * Check if a text string follows the schema dateTime format. This does not * assure that the text string is actually a valid dateTime representation, * since it doesn't fully check the value ranges (such as the day number * range for a particular month). * * @param text (non-null) * @return true if date format, false if not */ public static boolean ifTime(String text) { return ifTimeSuffix(text, 0); } }libjibx-java-1.1.6a/build/src/org/jibx/runtime/ValidationException.java0000644000175000017500000001232610611641774026025 0ustar moellermoeller/* Copyright (c) 2002-2007, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.runtime; /** * Validation exception class. This is used for marshalling and unmarshalling * errors that relate to data content. * * @author Dennis M. Sosnoski * @version 1.0 */ public class ValidationException extends RecoverableException { /** * Constructor from message. * * @param msg message describing the exception condition */ public ValidationException(String msg) { super(msg); } /** * Constructor from message and wrapped exception. * * @param msg message describing the exception condition * @param root exception which caused this exception */ public ValidationException(String msg, Throwable root) { super(msg, root); } /** * Constructor from message and validation object. * * @param msg message describing the exception condition * @param obj source object for validation error */ public ValidationException(String msg, Object obj) { super(addDescription(msg, obj)); } /** * Constructor from message, wrapped exception, and validation object. * * @param msg message describing the exception condition * @param root exception which caused this exception * @param obj source object for validation error */ public ValidationException(String msg, Throwable root, Object obj) { super(addDescription(msg, obj), root); } /** * Constructor from message, validation object, and unmarshalling context. * * @param msg message describing the exception condition * @param obj source object for validation error * @param ctx context used for unmarshalling */ public ValidationException(String msg, Object obj, IUnmarshallingContext ctx) { super(addDescription(msg, obj)); } /** * Get description information for a validation object. For an unmarshalled * object with source references available this returns the source position * description. Otherwise, it returns the result of a {@link * java.lang.Object#toString} method call. * * @param obj source object for validation error * @return object description text */ public static String describe(Object obj) { if (obj instanceof ITrackSource) { ITrackSource track = (ITrackSource)obj; if (track.jibx_getColumnNumber() != 0 || track.jibx_getLineNumber() != 0 || track.jibx_getDocumentName() != null) { StringBuffer text = new StringBuffer(); text.append("(line "); text.append(track.jibx_getLineNumber()); text.append(", col "); text.append(track.jibx_getColumnNumber()); if (track.jibx_getDocumentName() != null) { text.append(", in "); text.append(track.jibx_getDocumentName()); } text.append(')'); return text.toString(); } } return "(source unknown)"; } /** * Add description information for a validation object to message. This just * appends the result of a {@link #describe} call to the supplied message, * with some appropriate formatting. * * @param msg base message text * @param obj source object for validation error * @return message with object description appended */ public static String addDescription(String msg, Object obj) { return msg + " (" + describe(obj) + ")"; } /** * Get exception description. * * @return message describing the exception condition */ public String getMessage() { return super.getMessage(); } }libjibx-java-1.1.6a/build/src/org/jibx/runtime/package.html0000644000175000017500000000032710071714366023466 0ustar moellermoeller User interface to JiBX data binding framework runtime. These are the classes and interfaces generally intended for direct use by end users, and are considered published APIs which will remain stable. libjibx-java-1.1.6a/build/src/org/jibx/schema/0000755000175000017500000000000011023035620020743 5ustar moellermoellerlibjibx-java-1.1.6a/build/src/org/jibx/schema/attributes/0000755000175000017500000000000011023035620023131 5ustar moellermoellerlibjibx-java-1.1.6a/build/src/org/jibx/schema/attributes/AttributeBase.java0000644000175000017500000000637310602646266026563 0ustar moellermoeller/* Copyright (c) 2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.attributes; import org.jibx.schema.IComponent; import org.jibx.schema.elements.SchemaBase; import org.jibx.schema.validation.ValidationContext; /** * Base class for schema attributes and attribute groups. This just provides * a link to the owning element, along with dummy implementations of the * validation methods. * * @author Dennis M. Sosnoski */ public class AttributeBase implements IComponent { /** Owning element. */ private final SchemaBase m_owner; /** * Constructor. * * @param owner owning element */ protected AttributeBase(SchemaBase owner) { m_owner = owner; } /** * Get owning element. * * @return owning element (cannot be null) */ public final SchemaBase getOwner() { return m_owner; } /** * Prevalidate component information. The prevalidation step is used to * check isolated aspects of a component, such as the settings for * enumerated values. This empty base class implementation should be * overridden by each subclass that requires prevalidation handling. * * @param vctx validation context */ public void prevalidate(ValidationContext vctx) {} /** * Validate component information. The validation step is used for checking * the interactions between components, such as name references to other * components. The {@link #prevalidate} method will always be called for * every component in the schema definition before this method is called for * any component. This empty base class implementation should be overridden * by each subclass that requires validation handling. * * @param vctx validation context */ public void validate(ValidationContext vctx) {} }libjibx-java-1.1.6a/build/src/org/jibx/schema/attributes/DefRefAttributeGroup.java0000644000175000017500000000717010602646266030055 0ustar moellermoeller/* Copyright (c) 2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.attributes; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.QName; import org.jibx.schema.elements.SchemaBase; import org.jibx.schema.validation.ValidationContext; /** * Schema defRef attribute group. * * @author Dennis M. Sosnoski */ public class DefRefAttributeGroup extends AttributeBase { /** List of allowed attribute names. */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "name", "ref" }); /** Name definition. */ private String m_name; /** Reference definition. */ private QName m_ref; /** * Constructor. * * @param owner owning element */ public DefRefAttributeGroup(SchemaBase owner) { super(owner); } /** * Factory method for use during unmarshalling. This gets the owning element * from the unmarshalling context, and creates an instance of the attribute * tied to that element. * * @param ictx * @return constructed instance */ private static DefRefAttributeGroup unmarshalFactory(IUnmarshallingContext ictx) { return new DefRefAttributeGroup((SchemaBase)ictx.getStackTop()); } /** * Get 'name' attribute value. * * @return name */ public String getName() { return m_name; } /** * Set 'name' attribute value. * * @param name */ public void setName(String name) { m_name = name; } /** * Get 'ref' attribute value. * * @return ref */ public QName getRef() { return m_ref; } /** * Set 'ref' attribute value. * * @param ref */ public void setRef(QName ref) { m_ref = ref; } // // Validation methods /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#prevalidate(org.jibx.schema.ValidationContext) */ public void prevalidate(ValidationContext vctx) { if (m_ref != null && m_name != null) { vctx.addError("Cannot use both 'ref' and 'name'", getOwner()); } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/attributes/FormChoiceAttribute.java0000644000175000017500000001067010602646266027722 0ustar moellermoeller/* Copyright (c) 2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.attributes; import org.jibx.binding.util.StringArray; import org.jibx.runtime.EnumSet; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.schema.elements.SchemaBase; import org.jibx.schema.support.Conversions; /** * Attribute to set form of name (qualified or unqualified). * * @author Dennis M. Sosnoski */ public class FormChoiceAttribute extends AttributeBase { /** List of allowed attribute names. */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "form" }); // // Value set information public static final int QUALIFIED_FORM = 0; public static final int UNQUALIFIED_FORM = 1; public static final EnumSet s_formValues = new EnumSet(QUALIFIED_FORM, new String[] { "qualified", "unqualified"}); // // Instance data /** 'form' attribute type code (-1 if not set). */ private int m_formType; /** * Constructor. * * @param owner owning element */ public FormChoiceAttribute(SchemaBase owner) { super(owner); m_formType = -1; } /** * Factory method for use during unmarshalling. This gets the owning element * from the unmarshalling context, and creates an instance of the attribute * tied to that element. * * @param ictx * @return constructed instance */ private static FormChoiceAttribute unmarshalFactory(IUnmarshallingContext ictx) { return new FormChoiceAttribute((SchemaBase)ictx.getStackTop()); } // // Access methods /** * Get 'form' attribute type code. * * @return type */ public int getForm() { return m_formType; } /** * Set 'form' attribute type code. * * @param type */ public void setForm(int type) { s_formValues.checkValue(type); m_formType = type; } /** * Get 'form' attribute text. * * @return text (null if not set) */ public String getFormText() { if (m_formType >= 0) { return s_formValues.getName(m_formType); } else { return null; } } /** * Set 'form' attribute text. This method is provided only for use when * unmarshalling. * * @param text * @param ictx */ private void setFormText(String text, IUnmarshallingContext ictx) { m_formType = Conversions.convertEnumeration(text, s_formValues, "form", ictx); } // // Convenience method based on default /** * Check if qualified. * * @param def default if not overridden * @return true if qualified, false if not */ public boolean isQualified(boolean def) { if (m_formType >= 0) { return m_formType == FormChoiceAttribute.QUALIFIED_FORM; } else { return def; } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/attributes/OccursAttributeGroup.java0000644000175000017500000001033410602646266030154 0ustar moellermoeller/* Copyright (c) 2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.attributes; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.schema.elements.SchemaBase; import org.jibx.schema.types.Count; import org.jibx.schema.validation.ValidationContext; /** * Schema occurs attribute group. * * @author Dennis M. Sosnoski */ public class OccursAttributeGroup extends AttributeBase { /** List of allowed attribute names. */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "maxOccurs", "minOccurs" }); /** 'minOccurs' attribute value (null if not set). */ private Count m_minOccurs; /** 'maxOccurs' attribute value (null if not set). */ private Count m_maxOccurs; /** * Constructor. * * @param owner owning element */ public OccursAttributeGroup(SchemaBase owner) { super(owner); } /** * Factory method for use during unmarshalling. This gets the owning element * from the unmarshalling context, and creates an instance of the attribute * tied to that element. * * @param ictx * @return constructed instance */ private static OccursAttributeGroup unmarshalFactory(IUnmarshallingContext ictx) { return new OccursAttributeGroup((SchemaBase)ictx.getStackTop()); } /** * Get 'maxOccurs' attribute value. * * @return count (null if not set) */ public Count getMaxOccurs() { return m_maxOccurs; } /** * Set 'maxOccurs' attribute value. * * @param count (null if unsetting) */ public void setMaxOccurs(Count count) { m_maxOccurs = count; } /** * Get 'minOccurs' attribute value. * * @return minimum count (null if not set) */ public Count getMinOccurs() { return m_minOccurs; } /** * Set 'minOccurs' attribute value. * * @param count (null if unsetting) */ public void setMinOccurs(Count count) { m_minOccurs = count; } // // Validation methods /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#prevalidate(org.jibx.schema.ValidationContext) */ public void prevalidate(ValidationContext vctx) { if (m_minOccurs != null) { if (m_minOccurs.isUnbounded()) { vctx.addError("'minOccurs' value cannot be 'unbounded'", getOwner()); } else if (m_maxOccurs != null && !m_maxOccurs.isUnbounded() && m_maxOccurs.getCount() < m_minOccurs.getCount()) { vctx.addError("'minOccurs' cannot be larger than 'maxOccurs'", getOwner()); } } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/attributes/TypeAttribute.java0000644000175000017500000000571710602646266026633 0ustar moellermoeller/* Copyright (c) 2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.attributes; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.QName; import org.jibx.schema.elements.SchemaBase; /** * Global type reference as an attribute. * * @author Dennis M. Sosnoski */ public class TypeAttribute extends AttributeBase { /** List of allowed attribute names. */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "type" }); // // Instance data /** Qualified name of type. */ private QName m_qname; /** * Constructor. * * @param owner owning element */ public TypeAttribute(SchemaBase owner) { super(owner); } /** * Factory method for use during unmarshalling. This gets the owning element * from the unmarshalling context, and creates an instance of the attribute * tied to that element. * * @param ictx * @return constructed instance */ private static TypeAttribute unmarshalFactory(IUnmarshallingContext ictx) { return new TypeAttribute((SchemaBase)ictx.getStackTop()); } // // Access methods /** * Get type qualified name. * * @return type qualified name */ public QName getType() { return m_qname; } /** * Set type qualified name. * * @param qname type qualified name */ public void setType(QName qname) { m_qname = qname; } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/0000755000175000017500000000000011023035620022347 5ustar moellermoellerlibjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/classes/0000755000175000017500000000000011023035620024004 5ustar moellermoellerlibjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/custom/0000755000175000017500000000000011023035620023661 5ustar moellermoellerlibjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/custom/BaseExtension.java0000644000175000017500000001031210752422370027302 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen.custom; import org.apache.log4j.Logger; import org.jibx.runtime.QName; import org.jibx.schema.elements.OpenAttrBase; /** * Base extension information for any schema component. This is the basic extension structure that applies to each * schema component. For the schema element itself this is used directly; for all other elements a subclass is used. * * @author Dennis M. Sosnoski */ public class BaseExtension { /** Logger for class. */ private static final Logger s_logger = Logger.getLogger(BaseExtension.class.getName()); // // Arity types public static final int ARITY_OPTIONAL_SINGLETON = 0; public static final int ARITY_REQUIRED_SINGLETON = 1; public static final int ARITY_OPTIONAL_COLLECTION = 2; public static final int ARITY_REQUIRED_COLLECTION = 3; // // Instance data /** Annotated schema definition component. */ private final OpenAttrBase m_component; /** Type replacement implementation (null if no replacements at this level). */ private TypeReplacer m_typeReplacer; /** * Constructor. * * @param comp */ public BaseExtension(OpenAttrBase comp) { m_component = comp; comp.setExtension(this); } /** * Get schema component. * * @return component */ public OpenAttrBase getComponent() { return m_component; } /** * Set type replacer. This type replacer will apply to this extension and any child extensions which do not have * their own type replacers. * * @param replacer */ public void setTypeReplacer(TypeReplacer replacer) { m_typeReplacer = replacer; } /** * Get the replacement type to be substituted for a supplied type. This starts with this extension and then scans * up the tree to find the first extension with a type replacer defined. If a type replacer is found at any level * it is applied to the supplied type. If multiple extensions in the path up the tree have type replacers defined, * only the first type replacer is used. * * @param qname original type * @return substitute type (null if deletion; original type, if no substitution defined) */ public QName getReplacementType(QName qname) { // use direct navigation up tree to avoid call overhead BaseExtension ancestor = this; while (ancestor != null) { if (ancestor.m_typeReplacer != null) { return ancestor.m_typeReplacer.getReplacement(qname); } ancestor = (BaseExtension)ancestor.getComponent().getParent().getExtension(); } return qname; } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/custom/ComponentCustom.java0000644000175000017500000001573410756325130027705 0ustar moellermoeller/* * Copyright (c) 2007-2008, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen.custom; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.QName; import org.jibx.schema.elements.OpenAttrBase; import org.jibx.schema.elements.SchemaPath; import org.jibx.schema.support.LazyList; import org.jibx.schema.validation.ValidationContext; /** * Class for all schema component elements, with the exception of the <schema> element itself. Almost all of these * schema elements can contain other elements, so this extends the nesting base to handle inherited values. * * @author Dennis M. Sosnoski */ public class ComponentCustom extends NestingCustomBase { /** Schema element name. */ private final String m_elementName; /** Path to component (null if not specified). */ private String m_path; /** Component position in siblings of same type (null if not specified). */ private String m_position; /** Component name, if relevant. */ private String m_componentName; /** Ignore component flag. */ private boolean m_ignore; /** Corresponding generated class name (null if not specified). */ private String m_className; /** Generation handling (null if not specified). */ private Integer m_generation; /** Base name for corresponding property in generated code (null if not specified). */ private String m_baseName; /** Actual type to be used. */ private QName m_type; /** * Constructor. * * @param name schema element name * @param parent */ public ComponentCustom(String name, NestingCustomBase parent) { super(parent); m_elementName = name; } /** * Get the schema element name for the component. * * @return name */ public final String getElementName() { return m_elementName; } /** * Get generation handling code. * * @return generation code */ public int getGeneration() { if (m_generation != null) { return m_generation.intValue(); } else { SchemaRootBase root = getSchemaRoot(); if (root.isPreferInline()) { return GENERATE_INLINE; } else if (root.isUseInner()) { return GENERATE_INNER_CLASS; } else { return GENERATE_SEPARATE_CLASS; } } } /** * Generation set text method. This is intended for use during unmarshalling. TODO: add validation * * @param text * @param ictx */ private void setGenerationText(String text, IUnmarshallingContext ictx) { if (text != null) { m_generation = new Integer(s_generateEnum.getValue(text)); } } /** * Build the schema path for this customization. * * @param vctx validation context * @return path constructed path, or null if error */ public final SchemaPath buildPath(ValidationContext vctx) { return SchemaPath.buildPath(m_path, getElementName(), m_componentName, m_position, this, vctx); } /** * Check if schema component is to be ignored. * * @return true if ignored, false if not */ public boolean isIgnored() { return m_ignore || getGeneration() == GENERATE_SKIP; } /** * Get name to be used for generated class. * * @return class name (null if not set) */ public String getClassName() { return m_className; } /** * Get base name for corresponding property. * * @return property name (null if not set) */ public String getBaseName() { return m_baseName; } /** * Apply customizations to a schema extension. This also finds matches for any child customizations, and applies * the child customizations recursively. * * @param exten target schema extension * @param vctx validation context */ public final void apply(ComponentExtension exten, ValidationContext vctx) { if (validate(vctx)) { exten.setCustom(this); if (isIgnored()) { // flag component removed from schema exten.setRemoved(true); // warn that any child customizations are ignored if (getChildren().size() > 0) { vctx.addWarning("Child customizations ignored for skipped component", this); } } else { // apply customizations to extension exten.setTypeReplacer(this); exten.setOverrideType(m_type); exten.setSeparateClass(getGeneration() == GENERATE_SEPARATE_CLASS); // match and apply child customizations LazyList childs = getChildren(); for (int i = 0; i < childs.size(); i++) { ComponentCustom child = (ComponentCustom)childs.get(i); SchemaPath path = child.buildPath(vctx); if (path != null) { OpenAttrBase match = path.matchUnique(exten.getComponent()); if (match != null) { child.apply((ComponentExtension)match.getExtension(), vctx); } } } } } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/custom/ComponentCustomUnmarshaller.java0000644000175000017500000002110410673717104032253 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen.custom; import java.util.Arrays; import org.jibx.binding.util.StringArray; import org.jibx.runtime.BindingDirectory; import org.jibx.runtime.IBindingFactory; import org.jibx.runtime.IUnmarshaller; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.UnmarshallingContext; import org.jibx.schema.elements.FacetElement; import org.jibx.schema.elements.SchemaBase; import org.jibx.schema.validation.ProblemLocation; import org.jibx.schema.validation.ValidationContext; /** * Unmarshaller class for all nested customizations. This is used for all the customizations below the <schema> * level. */ public class ComponentCustomUnmarshaller implements IUnmarshaller { /** Attribute names allowed for all types of components. */ public static final StringArray s_baseAttributes = new StringArray(new String[] { "path", "position" }, NestingCustomBase.s_allowedAttributes); /** Attribute names allowed for all ignorable of components. */ public static final StringArray s_ignorableAttributes = new StringArray(new String[] { "ignore" }, s_baseAttributes); /** Mask for elements with values but no names. */ private static final long s_unnamedValueMask; /** Allowed attribute names for customizing elements with values but no names. */ public static final StringArray s_unnamedValueAttributes = new StringArray(new String[] { "class", "generation", "property", "type" }, s_ignorableAttributes); /** Mask for elements with values and names. */ private static final long s_namedValueMask; /** Allowed attribute names for customizing elements with values and names. */ public static final StringArray s_namedValueAttributes = new StringArray(new String[] { "name" }, s_unnamedValueAttributes); /** Mask for type definition elements. */ private static final long s_typeDefinitionMask; /** Allowed attribute names for type definition elements. */ public static final StringArray s_typeDefinitionAttributes = new StringArray(new String[] { "class", "generation", "name" }, s_ignorableAttributes); /** Mask for elements which are not deletable but do support nesting. */ private static final long s_simpleNestingMask; /** Mask for elements which are deletable but do not support nesting. */ private static final long s_deletableLeafMask; static { long[] masks = SchemaBase.ELEMENT_MASKS; long mask = masks[SchemaBase.ATTRIBUTE_TYPE]; mask |= masks[SchemaBase.ATTRIBUTEGROUP_TYPE]; mask |= masks[SchemaBase.ELEMENT_TYPE]; mask |= masks[SchemaBase.GROUP_TYPE]; s_namedValueMask = mask; mask = masks[SchemaBase.ALL_TYPE]; mask |= masks[SchemaBase.CHOICE_TYPE]; mask |= masks[SchemaBase.SEQUENCE_TYPE]; s_unnamedValueMask = mask; mask = masks[SchemaBase.COMPLEXTYPE_TYPE]; mask |= masks[SchemaBase.SIMPLETYPE_TYPE]; s_typeDefinitionMask = mask; mask = SchemaBase.COMPLEXCONTENT_TYPE; mask |= masks[SchemaBase.EXTENSION_TYPE]; mask |= masks[SchemaBase.LIST_TYPE]; mask |= masks[SchemaBase.RESTRICTION_TYPE]; mask |= masks[SchemaBase.SIMPLECONTENT_TYPE]; mask |= masks[SchemaBase.UNION_TYPE]; s_simpleNestingMask = mask; mask = FacetElement.FACET_ELEMENT_MASK; mask |= masks[SchemaBase.ANY_TYPE]; mask |= masks[SchemaBase.ANYATTRIBUTE_TYPE]; s_deletableLeafMask = mask; }; // // Binding information /** Index for abstract mapping. */ protected static final int s_mappingIndex; static { try { IBindingFactory factory = BindingDirectory.getFactory(ComponentCustom.class); s_mappingIndex = factory.getTypeIndex("component-custom"); if (s_mappingIndex < 0) { throw new RuntimeException("Missing required 'component-custom' abstract mapping in binding"); } } catch (JiBXException e) { throw new RuntimeException("Unable to load binding: " + e.getMessage()); } }; /** * Check if element present. If there's a start tag, we want to handle it. * * @param ctx * @return true if at a start tag * @throws JiBXException */ public boolean isPresent(IUnmarshallingContext ctx) throws JiBXException { return ctx.isStart(); } /** * Unmarshal the element. This matches the current start tag name to the corresponding schema component element, * then unmarshals the content based on the type of schema element (invoking the abstract unmarshaller defined * in the binding for the actual content). * * @param obj ignored * @param ictx unmarshalling context * @return unmarshalled instance * @throws JiBXException on error in document */ public Object unmarshal(Object obj, IUnmarshallingContext ictx) throws JiBXException { // make sure current element name matches an allowed schema element UnmarshallingContext ctx = (UnmarshallingContext)ictx; String name = ctx.getElementName(); int index = Arrays.binarySearch(SchemaBase.ELEMENT_NAMES, name); if (index >= 0) { // check the type of element long mask = SchemaBase.ELEMENT_MASKS[index]; StringArray attrs = null; if ((mask & s_namedValueMask) != 0) { attrs = s_namedValueAttributes; } else if ((mask & s_unnamedValueMask) != 0) { attrs = s_unnamedValueAttributes; } else if ((mask & s_typeDefinitionMask) != 0) { attrs = s_typeDefinitionAttributes; } else if ((mask & s_simpleNestingMask) != 0) { attrs = s_baseAttributes; } else if ((mask & s_deletableLeafMask) != 0) { attrs = s_ignorableAttributes; } if (attrs != null) { // create an instance and unmarshal with the appropriate handling ComponentCustom comp = new ComponentCustom(name, (NestingCustomBase)CustomBase.getContainingObject(ictx)); comp.validateAttributes(ictx, attrs); ctx.getUnmarshaller(s_mappingIndex).unmarshal(comp, ctx); ctx.parsePastCurrentEndTag(null, name); return comp; } else { // report a validation error for unsupported element ValidationContext vctx = (ValidationContext)ictx.getUserContext(); vctx.addFatal("No customizations allowed for element '" + name + '\'', new ProblemLocation(ictx)); } } else { // report a validation error for unknown element ValidationContext vctx = (ValidationContext)ictx.getUserContext(); vctx.addFatal("Unknown element '" + name + '\'', new ProblemLocation(ictx)); } return null; } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/custom/ComponentExtension.java0000644000175000017500000011332611017732440030400 0ustar moellermoeller/* * Copyright (c) 2007-2008, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen.custom; import java.util.ArrayList; import java.util.HashSet; import java.util.Set; import org.apache.log4j.Logger; import org.jibx.runtime.QName; import org.jibx.schema.IArity; import org.jibx.schema.INamed; import org.jibx.schema.SchemaUtils; import org.jibx.schema.elements.AttributeElement; import org.jibx.schema.elements.AttributeGroupRefElement; import org.jibx.schema.elements.CommonCompositorBase; import org.jibx.schema.elements.CommonCompositorDefinition; import org.jibx.schema.elements.CommonTypeDefinition; import org.jibx.schema.elements.CommonTypeDerivation; import org.jibx.schema.elements.ComplexRestrictionElement; import org.jibx.schema.elements.ComplexTypeElement; import org.jibx.schema.elements.ElementElement; import org.jibx.schema.elements.FilteredSegmentList; import org.jibx.schema.elements.GroupRefElement; import org.jibx.schema.elements.ListElement; import org.jibx.schema.elements.OpenAttrBase; import org.jibx.schema.elements.SchemaBase; import org.jibx.schema.elements.SimpleRestrictionElement; import org.jibx.schema.elements.SimpleTypeElement; import org.jibx.schema.elements.UnionElement; import org.jibx.schema.validation.ValidationContext; /** * Extension information for all schema components other than the schema element itself. This is the basic extension * which associates schema components with values or classes for code generation. * * @author Dennis M. Sosnoski */ public class ComponentExtension extends BaseExtension { /** Logger for class. */ private static final Logger s_logger = Logger.getLogger(ComponentExtension.class.getName()); /** Component dropped from schema definition. */ private boolean m_removed; /** Class to be generated for component flag. */ private boolean m_separateClass; /** Optional component flag. */ private boolean m_optional; /** Repeated component flag. */ private boolean m_repeated; /** Containing global definition extension. */ private final GlobalExtension m_global; /** Customization information for this component. */ private ComponentCustom m_custom; /** Override for type specified in schema (null if none). */ private QName m_overrideType; /** Number of times a component is used in code generation. */ private int m_useCount; /** * Constructor. * * @param comp * @param global containing global definition extension (null allowed only as special case when * calling this constructor from the global extension subclass constructor) */ public ComponentExtension(OpenAttrBase comp, GlobalExtension global) { super(comp); m_global = global == null ? (GlobalExtension)this : global; if (comp instanceof IArity) { IArity particle = (IArity)comp; m_repeated = SchemaUtils.isRepeated(particle); if (comp.type() == SchemaBase.ELEMENT_TYPE) { m_optional = SchemaUtils.isOptionalElement((ElementElement)comp); } else { m_optional = SchemaUtils.isOptional(particle); } } else if (comp.type() == SchemaBase.ATTRIBUTE_TYPE) { m_repeated = false; m_optional = ((AttributeElement)comp).getUse() == AttributeElement.OPTIONAL_USE; } } /** * Check if component to be removed from schema. * * @return removed flag */ public boolean isRemoved() { return m_removed; } /** * Set flag for component to be removed from schema. * * @param removed */ public void setRemoved(boolean removed) { if (removed && getComponent().type() == SchemaBase.EXTENSION_TYPE) { System.out.println(); } m_removed = removed; } /** * Check if optional component. * * @return optional */ public boolean isOptional() { return m_optional; } /** * Set optional component. * * @param optional */ public void setOptional(boolean optional) { m_optional = optional; } /** * Check if repeated component. * * @return repeated */ public boolean isRepeated() { return m_repeated; } /** * Set repeated component. * * @param repeated */ public void setRepeated(boolean repeated) { m_repeated = repeated; } /** * Check if class to be generated for component. * * @return generate */ public boolean isSeparateClass() { return m_separateClass; } /** * Set class to be generated for component. * * @param generate true if class generated, false if not */ public void setSeparateClass(boolean generate) { m_separateClass = generate; } /** * Get the containing global extension. * * @return global */ public GlobalExtension getGlobal() { return m_global; } /** * Get override type. * * @return type name (null if none) */ public QName getOverrideType() { return m_overrideType; } /** * Set override type. * * @param qname type name (null if none) */ public void setOverrideType(QName qname) { m_overrideType = qname; } /** * Increment the use count for the component. * * @return incremented use count */ public int incrementUseCount() { return ++m_useCount; } /** * Get the use count for the component. * * @return use count */ public int getUseCount() { return m_useCount; } /** * Get name to be used for generated class. * * @return class name (null if not set) */ public String getClassName() { if (m_custom == null) { return null; } else { return m_custom.getClassName(); } } /** * Get base name for corresponding property. * * @return property name (null if not set) */ public String getBaseName() { if (m_custom == null) { return null; } else { return m_custom.getBaseName(); } } /** * Get customization information for this component. * * @return custom */ public ComponentCustom getCustom() { return m_custom; } /** * Set customization information for this component. * * @param custom */ public void setCustom(ComponentCustom custom) { m_custom = custom; } /** * Check for type substitution on a type reference, then record the reference. * TODO: how to handle substitutions across namespaces? the problem here is that the returned name needs to be * correct in the use context, which may be using a different namespace for the same definition (due to includes of * no-namespace schemas into a namespaced schema). the current code is only an interim fix that will not always work * * @param type original type * @param vctx validation context * @return replacement type (may be the same as the original type; null if to be deleted) */ private QName replaceAndReference(QName type, ValidationContext vctx) { QName repl = getReplacementType(type); if (repl != type && s_logger.isDebugEnabled()) { s_logger.debug("Replacing type " + type + " with type " + repl + " in component " + SchemaUtils.describeComponent(getComponent())); } while (repl != null) { CommonTypeDefinition def = vctx.findType(repl); if (def == null) { // try substituting the original namespace, to work with no-namespace schemas if (repl.getUri() == null && type.getUri() != null) { repl = new QName(type.getUri(), repl.getName()); def = vctx.findType(repl); } if (def == null) { throw new IllegalStateException("Internal error - type definition not found"); } } GlobalExtension exten = (GlobalExtension)def.getExtension(); if (exten == null) { if (s_logger.isDebugEnabled()) { s_logger.debug("No extension found for referenced type " + SchemaUtils.describeComponent(def)); } return repl; } else { if (exten.isRemoved()) { if (s_logger.isDebugEnabled()) { s_logger.debug("Reference to deleted type " + SchemaUtils.describeComponent(def)); } return null; } else { if (exten.getOverrideType() == null) { exten.addReference(this); m_global.addDependency(exten); return repl; } else { repl = exten.getOverrideType(); } } } } return repl; } /** * Check a reference to a component. If the reference component has been deleted this just returns * false. If the component has not been deleted it counts the reference on that component, and records * the dependency from this component before returning true. For convenience, this may be called with a * null argument, which just returns true. * * @param comp component (call ignored if null) * @return true if reference to be kept, false if deleted */ private boolean checkReference(OpenAttrBase comp) { if (comp != null) { GlobalExtension exten = (GlobalExtension)comp.getExtension(); if (exten == null) { if (s_logger.isDebugEnabled()) { s_logger.debug("No extension found for referenced component " + SchemaUtils.describeComponent(comp)); } } else { if (exten.isRemoved()) { if (s_logger.isDebugEnabled()) { s_logger.debug("Referenced to deleted component " + SchemaUtils.describeComponent(comp)); } return false; } else { exten.addReference(this); m_global.addDependency(exten); } } } return true; } /** * Remove a child element. This checks to make sure the removal is valid, and also handles logging of the change. * * @param index */ private void removeChild(int index) { SchemaBase child = getComponent().getChild(index); switch (child.type()) { case SchemaBase.ALL_TYPE: case SchemaBase.ANY_TYPE: case SchemaBase.ANYATTRIBUTE_TYPE: case SchemaBase.ATTRIBUTE_TYPE: case SchemaBase.ATTRIBUTEGROUP_TYPE: case SchemaBase.CHOICE_TYPE: case SchemaBase.COMPLEXTYPE_TYPE: case SchemaBase.ELEMENT_TYPE: case SchemaBase.ENUMERATION_TYPE: case SchemaBase.FRACTIONDIGITS_TYPE: case SchemaBase.GROUP_TYPE: case SchemaBase.LENGTH_TYPE: case SchemaBase.MAXEXCLUSIVE_TYPE: case SchemaBase.MAXINCLUSIVE_TYPE: case SchemaBase.MAXLENGTH_TYPE: case SchemaBase.MINEXCLUSIVE_TYPE: case SchemaBase.MININCLUSIVE_TYPE: case SchemaBase.MINLENGTH_TYPE: case SchemaBase.PATTERN_TYPE: case SchemaBase.SEQUENCE_TYPE: case SchemaBase.SIMPLETYPE_TYPE: case SchemaBase.TOTALDIGITS_TYPE: case SchemaBase.WHITESPACE_TYPE: { // definition component - just delete from the parent structure getComponent().detachChild(index); if (s_logger.isDebugEnabled()) { s_logger.debug("Removed component " + SchemaUtils.describeComponent(child) + " as per extension"); } break; } default: throw new IllegalStateException("Internal error: element type '" + child.name() + "' cannot be deleted"); } } /** * Apply extensions to schema definition component, deleting components flagged for skipping and substituting types * as configured. This code is not intended to handle the deletion of global definition components, which should be * removed separately. * * @param vctx validation context */ public void applyAndCountUsage(ValidationContext vctx) { // handle type substitutions for this component OpenAttrBase component = getComponent(); boolean delete = false; switch (component.type()) { case SchemaBase.ATTRIBUTE_TYPE: { AttributeElement attr = ((AttributeElement)component); if (m_overrideType != null) { attr.setType(m_overrideType); } QName type = attr.getType(); if (type == null) { delete = !checkReference(attr.getReference()); } else { QName repl = replaceAndReference(type, vctx); if (repl == null) { // TODO optionally make sure the attribute is optional? delete = true; } else if (repl != type) { attr.setType(repl); } } break; } case SchemaBase.ATTRIBUTEGROUP_TYPE: { if (component instanceof AttributeGroupRefElement) { delete = !checkReference(((AttributeGroupRefElement)component).getReference()); } break; } case SchemaBase.ELEMENT_TYPE: { ElementElement elem = ((ElementElement)component); if (m_overrideType != null) { elem.setType(m_overrideType); } QName type = elem.getType(); if (type == null) { delete = !checkReference(elem.getReference()); } else { QName repl = replaceAndReference(type, vctx); if (repl == null) { // TODO optionally make sure the element is optional? delete = true; } else if (repl != type) { elem.setType(repl); } } break; } case SchemaBase.EXTENSION_TYPE: case SchemaBase.RESTRICTION_TYPE: { CommonTypeDerivation deriv = (CommonTypeDerivation)component; QName type = deriv.getBase(); QName repl = replaceAndReference(type, vctx); if (repl == null) { delete = true; } else if (repl != type) { deriv.setBase(repl); } break; } case SchemaBase.GROUP_TYPE: { if (component instanceof GroupRefElement) { delete = !checkReference(((GroupRefElement)component).getReference()); } break; } case SchemaBase.LIST_TYPE: { ListElement list = ((ListElement)component); /* // not currently supported - is it needed? if (m_overrideType != null) { list.setItemType(m_overrideType); } */ QName type = list.getItemType(); if (type != null) { QName repl = replaceAndReference(type, vctx); if (repl == null) { delete = true; } else if (repl != type) { list.setItemType(repl); } } break; } case SchemaBase.UNION_TYPE: { UnionElement union = ((UnionElement)component); QName[] types = union.getMemberTypes(); if (types != null) { ArrayList repls = new ArrayList(); boolean changed = false; for (int i = 0; i < types.length; i++) { QName type = types[i]; QName repl = replaceAndReference(type, vctx); changed = changed || repl != type; if (repl != null) { repls.add(repl); } } if (changed) { if (repls.size() > 0) { union.setMemberTypes((QName[])repls.toArray(new QName[repls.size()])); } else { union.setMemberTypes(null); } } } break; } } if (delete) { // raise deletion to containing removable component SchemaBase parent = component; SchemaBase remove = null; loop: while (parent != null) { switch (parent.type()) { case SchemaBase.ATTRIBUTE_TYPE: case SchemaBase.ATTRIBUTEGROUP_TYPE: case SchemaBase.ELEMENT_TYPE: case SchemaBase.GROUP_TYPE: remove = parent; break loop; case SchemaBase.COMPLEXTYPE_TYPE: case SchemaBase.SIMPLETYPE_TYPE: remove = parent; break; default: if (remove == null) { parent = parent.getParent(); break; } else { break loop; } } } if (remove == null) { throw new IllegalStateException("Internal error: no removable ancestor found for component " + SchemaUtils.describeComponent(component)); } else { ((ComponentExtension)remove.getExtension()).setRemoved(true); } } else { // process all child component extensions boolean modified = false; for (int i = 0; i < component.getChildCount(); i++) { SchemaBase child = component.getChild(i); ComponentExtension exten = (ComponentExtension)child.getExtension(); if (!exten.isRemoved()) { exten.applyAndCountUsage(vctx); } if (exten.isRemoved()) { removeChild(i); modified = true; } } if (modified) { component.compactChildren(); } } } /** * Normalize the child schema definition . This recursively traverses the schema model tree rooted in the * component associated with this extension, normalizing each child component. * * TODO: handle revalidation for changed subtrees * * @param depth nesting depth for validation * @return true if any part of tree under this component modified, false if not */ protected boolean normalize(int depth) { // initialize debug handling String path = null; String lead = null; OpenAttrBase comp = getComponent(); if (s_logger.isDebugEnabled()) { path = SchemaUtils.componentPath(comp); lead = SchemaUtils.getIndentation(depth); s_logger.debug(lead + "entering normalization for node " + path); } // normalize each child component in turn int count = comp.getChildCount(); boolean modified = false; boolean compact = false; for (int i = 0; i < count; i++) { SchemaBase child = comp.getChild(i); if (child instanceof OpenAttrBase) { // start by normalizing the child component content OpenAttrBase childcomp = (OpenAttrBase)child; ComponentExtension childext = (ComponentExtension)childcomp.getExtension(); if (childext.normalize(depth+1)) { modified = true; } // check for child components with special normalization handling switch (childcomp.type()) { case SchemaBase.ALL_TYPE: case SchemaBase.CHOICE_TYPE: case SchemaBase.SEQUENCE_TYPE: { // child component is a compositor, so see if it can be deleted or replaced CommonCompositorDefinition def = (CommonCompositorDefinition)childcomp; int size = def.getParticleList().size(); if (size == 0) { // empty compositor, just remove (always safe to do this) childext.setRemoved(true); modified = true; if (s_logger.isDebugEnabled()) { s_logger.debug(lead + "eliminated empty compositor " + path); } } else if (size == 1 && comp instanceof CommonCompositorDefinition) { // nested compositor, check if can be simplified OpenAttrBase grandchild = (OpenAttrBase)def.getParticleList().get(0); if (SchemaUtils.isSingleton(def)) { // nested singleton compositor with only child, just replace with the child comp.replaceChild(i, grandchild); modified = true; if (s_logger.isDebugEnabled()) { s_logger.debug(lead + "replacing singleton compositor " + SchemaUtils.componentPath(childcomp) + " with only child " + SchemaUtils.describeComponent(grandchild)); } } else if (SchemaUtils.isSingleton((IArity)grandchild)) { // nested non-singleton compositor with singleton only child, replace with child with // counts set from the compositor comp.replaceChild(i, grandchild); modified = true; if (s_logger.isDebugEnabled()) { s_logger.debug(lead + "replacing compositor " + SchemaUtils.componentPath(childcomp) + " with singleton only child " + SchemaUtils.describeComponent(grandchild)); } if (grandchild.type() == SchemaBase.ELEMENT_TYPE) { ElementElement elem = (ElementElement)grandchild; elem.setMaxOccurs(def.getMaxOccurs()); elem.setMinOccurs(def.getMinOccurs()); } else { CommonCompositorBase compositor = (CommonCompositorBase)grandchild; compositor.setMaxOccurs(def.getMaxOccurs()); compositor.setMinOccurs(def.getMinOccurs()); } } } break; } case SchemaBase.RESTRICTION_TYPE: { if (childcomp instanceof SimpleRestrictionElement) { // replace empty simple type restriction with base type SimpleRestrictionElement restrict = (SimpleRestrictionElement)childcomp; if (restrict.getFacetsList().size() == 0) { replaceSimpleType(childcomp, restrict.getBase()); modified = true; if (s_logger.isDebugEnabled()) { s_logger.debug(lead + "replaced inline type " + SchemaUtils.componentPath(childcomp) + " with base type " + restrict.getBase() + " from empty restriction"); } } } else { // replace any complex type restriction with base type ComplexRestrictionElement restrict = (ComplexRestrictionElement)child; SchemaBase parent = comp; loop: while (parent != null) { switch (parent.type()) { case SchemaBase.ELEMENT_TYPE: { // set the element type to the restriction base ElementElement elem = (ElementElement)parent; elem.setTypeDefinition(restrict.getBaseType()); if (s_logger.isDebugEnabled()) { s_logger.debug(lead + "replaced element " + SchemaUtils.componentPath(elem) + " type with base type from complex restriction " + SchemaUtils.componentPath(childcomp)); } break loop; } case SchemaBase.COMPLEXTYPE_TYPE: { if (parent.isGlobal()) { ComplexTypeElement type = (ComplexTypeElement)parent; ComponentExtension typeext = (ComponentExtension)type.getExtension(); typeext.setOverrideType(restrict.getBase()); if (s_logger.isDebugEnabled()) { s_logger.debug(lead + "set substition for global complex type " + SchemaUtils.componentPath(type) + " to base type from empty restriction " + SchemaUtils.componentPath(childcomp)); } break loop; } break; } } parent = parent.getParent(); } } break; } } // delete child component if flagged for removal if (childext.isRemoved()) { removeChild(i); compact = true; } } } if (compact) { comp.compactChildren(); modified = true; } // handle union normalization after all children have been normalized if (comp.type() == SchemaBase.UNION_TYPE) { // start by checking duplicates in the member types compact = false; UnionElement union = (UnionElement)comp; Set typeset = new HashSet(); ArrayList keeptypes = new ArrayList(); QName[] membertypes = union.getMemberTypes(); if (membertypes != null) { for (int i = 0; i < membertypes.length; i++) { QName type = membertypes[i]; if (typeset.contains(type)) { if (s_logger.isDebugEnabled()) { s_logger.debug(lead + "removed redundant member type " + type + " from " + path); } } else { typeset.add(type); keeptypes.add(type); } } } // then check inline types for duplicates, simplifying where possible count = union.getChildCount(); for (int i = 0; i < count; i++) { SchemaBase child = comp.getChild(i); if (child instanceof OpenAttrBase) { // child schema component must be an inline simple type definition SimpleTypeElement simple = (SimpleTypeElement)child; boolean keeper = false; SchemaBase derivation = simple.getDerivation(); QName repltype = null; if (derivation != null) { // keep the inline definition by default, but check for replacement cases keeper = true; if (derivation.type() == SchemaBase.RESTRICTION_TYPE) { SimpleRestrictionElement innerrestrict = (SimpleRestrictionElement)derivation; if (innerrestrict.getChildCount() == 0) { // treat empty restriction the same as a member type from list repltype = innerrestrict.getBase(); if (typeset.contains(repltype)) { keeper = false; } } } else if (derivation.type() == SchemaBase.UNION_TYPE) { UnionElement innerunion = (UnionElement)derivation; QName[] innertypes = innerunion.getMemberTypes(); FilteredSegmentList innerinlines = innerunion.getInlineBaseList(); if (innertypes.length + innerinlines.size() == 1) { // replace child union with single type from union if (innertypes.length == 1) { // global type reference, delete the child union and check if new type repltype = innertypes[0]; if (typeset.contains(repltype)) { keeper = false; } } else { // inline type definition, replace the child union with the inline type union.replaceChild(i, (SchemaBase)innerinlines.get(0)); } } } } if (keeper) { if (repltype != null) { // convert unnecessary inline type to member type typeset.add(repltype); removeChild(i); compact = true; if (s_logger.isDebugEnabled()) { s_logger.debug(lead + "converted inline type " + SchemaUtils.describeComponent(comp) + " to member type in " + path); } } } else { // remove inline definition that matches already-processed type removeChild(i); compact = true; if (s_logger.isDebugEnabled()) { s_logger.debug(lead + "removed redundant inline type from " + path); } } } } // set the new list of member types for union QName[] newtypes = null; if (keeptypes.size() > 0) { newtypes = (QName[])keeptypes.toArray(new QName[keeptypes.size()]); } union.setMemberTypes(newtypes); // clean up for any deleted child components if (compact) { comp.compactChildren(); modified = true; } } if (s_logger.isDebugEnabled()) { s_logger.debug(lead + "exiting normalization for node " + path); } return modified; } /** * Replace an inline simple type definition with a global type reference. * * @param comp component containing the type definition * @param qname replacement global type qualified name */ private void replaceSimpleType(OpenAttrBase comp, QName qname) { SchemaBase parent = comp; loop: while (parent != null) { switch (parent.type()) { case SchemaBase.ATTRIBUTE_TYPE: { // set the attribute type to the specified type AttributeElement attr = (AttributeElement)parent; attr.setType(qname); break loop; } case SchemaBase.ELEMENT_TYPE: { // set the element type to the restriction base ElementElement elem = (ElementElement)parent; elem.setType(qname); break loop; } case SchemaBase.SIMPLETYPE_TYPE: { // propagate restriction type only if global type definition if (parent.isGlobal()) { SimpleTypeElement type = (SimpleTypeElement)parent; ComponentExtension parentext = (ComponentExtension)type.getExtension(); parentext.setOverrideType(qname); break loop; } } case SchemaBase.UNION_TYPE: { // this will be handled by union normalization, so just leave in place break loop; } } parent = parent.getParent(); } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/custom/CustomBase.java0000644000175000017500000001133410674525050026607 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen.custom; import java.util.Collection; import org.jibx.binding.util.StringArray; import org.jibx.runtime.EnumSet; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.impl.UnmarshallingContext; import org.jibx.schema.validation.ValidationContext; /** * Base class for all schema customizations. This defines a way to navigate up the tree of nested customizations without * making assumptions about the specific type of the containing components. * * @author Dennis M. Sosnoski */ public class CustomBase { // // Generation modes public static final int GENERATE_SKIP = 0; public static final int GENERATE_INLINE = 1; public static final int GENERATE_INNER_CLASS = 2; public static final int GENERATE_SEPARATE_CLASS = 3; public static final EnumSet s_generateEnum = new EnumSet(GENERATE_SKIP, new String[] { "skip", "inline", "inner", "separate" }); // // Instance data /** Parent element (null if none). This would be final, except for unmarshalling. */ private NestingCustomBase m_parent; /** * Constructor. * * @param parent */ public CustomBase(NestingCustomBase parent) { m_parent = parent; } /** * Get container. * * @return container */ public NestingCustomBase getParent() { return m_parent; } /** * Get schema customizations parent. * * @return schema customization */ public SchemaRootBase getSchemaRoot() { NestingCustomBase parent = m_parent; while (!(parent instanceof SchemaRootBase)) { parent = parent.getParent(); } return (SchemaRootBase)parent; } /** * Validate attributes of element. This is designed to be called during unmarshalling as part of the pre-set method * processing when a subclass instance is being created. * * @param ictx unmarshalling context * @param attrs attributes array */ protected void validateAttributes(IUnmarshallingContext ictx, StringArray attrs) { // setup for attribute access ValidationContext vctx = (ValidationContext)ictx.getUserContext(); UnmarshallingContext uctx = (UnmarshallingContext)ictx; // loop through all attributes of current element for (int i = 0; i < uctx.getAttributeCount(); i++) { // check if nonamespace attribute is in the allowed set String name = uctx.getAttributeName(i); if (uctx.getAttributeNamespace(i).length() == 0) { if (attrs.indexOf(name) < 0) { vctx.addWarning("Undefined attribute " + name, this); } } } } /** * Gets the parent element link from the unmarshalling stack. This method is for use by factories during * unmarshalling. * * @param ictx unmarshalling context * @return containing class */ protected static Object getContainingObject(IUnmarshallingContext ictx) { Object parent = ictx.getStackTop(); if (parent instanceof Collection) { parent = ictx.getStackObject(1); } return parent; } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/custom/GeneratorCustom.java0000644000175000017500000000653010673717104027667 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen.custom; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; /** * Generator customization. * * TODO: use separate subclasses for the different types of generation, or an interface? looks like there'll only be a * few alternatives (normal class, enumeration, collection). or have generators for different types of fields, and such? * that gives the maximum flexibility, but also adds a lot of complexity. at a minimum, need to support different types * of generators for enumeration, choice, union, and collection value types. would also like to support different * validation method generators, orthoganal to the other variations. finally, want to support different JavaDoc * formatters. perhaps best to use a separate class for each. * * @author Dennis M. Sosnoski */ public class GeneratorCustom extends CustomBase { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "class" }); /** Generator class name. */ private String m_class; /** Parameter values for generator class instance. */ private String[] m_parameters; /** * Constructor. * * @param parent */ public GeneratorCustom(NestingCustomBase parent) { super(parent); } /** * Make sure all attributes are defined. * * @param uctx unmarshalling context */ private void preSet(IUnmarshallingContext uctx) { validateAttributes(uctx, s_allowedAttributes); } /** * Get class name. * * @return class */ public String getClassName() { return m_class; } /** * Get parameter values. * * @return parameters */ public String[] getParameters() { return m_parameters; } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/custom/GlobalExtension.java0000644000175000017500000002237111002543776027643 0ustar moellermoeller/* * Copyright (c) 2007-2008, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen.custom; import java.util.ArrayList; import org.apache.log4j.Logger; import org.jibx.schema.INamed; import org.jibx.schema.SchemaUtils; import org.jibx.schema.codegen.DefinitionItem; import org.jibx.schema.codegen.NameConverter; import org.jibx.schema.codegen.PackageHolder; import org.jibx.schema.elements.OpenAttrBase; import org.jibx.schema.elements.SchemaElement; /** * Extension information for a schema global definition component. This adds reference tracking to the basic extension * information, along with a map for child components of the definition. * * @author Dennis M. Sosnoski */ public class GlobalExtension extends ComponentExtension { /** Logger for class. */ static final Logger s_logger = Logger.getLogger(GlobalExtension.class.getName()); /** Name converter used for this component. */ private final NameConverter m_nameConverter; /** Package to be used for class generation. */ private final PackageHolder m_package; /** Component to be specifically included in code generation. */ private boolean m_included; /** Replace references to component with inline definitions. */ private boolean m_inline; /** Use inner classes for substructures flag. */ private boolean m_useInnerClasses; /** Number of references to this definition. */ private int m_referenceCount; /** List of extensions for components referencing this definition. */ private ArrayList m_references; /** List of global definitions used by this definition (one entry per reference, may contain duplicates). */ private ArrayList m_dependencies; /** Definition item for this global definition. */ private DefinitionItem m_definition; /** Flag for component normalized. This is actually set at the start of the normalization processing for a component, which in the case of circular references means the */ private boolean m_normalized; /** * Constructor. * * @param comp * @param nconv * @param pack */ public GlobalExtension(OpenAttrBase comp, NameConverter nconv, PackageHolder pack) { super(comp, null); m_nameConverter = nconv; m_package = pack; } /** * Get name converter used for this component. * * @return converter */ public NameConverter getNameConverter() { return m_nameConverter; } /** * Get package for class generation. * * @return package */ public PackageHolder getPackage() { return m_package; } /** * Check if component specifically included in code generation. * * @return included */ public boolean isIncluded() { return m_included; } /** * Set flag for component specifically included in code generation. * * @param included */ public void setIncluded(boolean included) { m_included = included; } /** * Check if references should be replaced by inline definitions. * * @return inline */ public boolean isInline() { return m_inline; } /** * Set flag for references to be replaced by inline definitions. * * @param inline */ public void setInline(boolean inline) { m_inline = inline; } /** * Check if inner classes should be used for substructures. * * @return inner */ public boolean isUseInnerClasses() { return m_useInnerClasses; } /** * Set flag for inner classes to be used for substructures. * * @param inner */ public void setUseInnerClasses(boolean inner) { m_useInnerClasses = inner; } /** * Add reference extension. * * @param anno */ public void addReference(ComponentExtension anno) { if (m_references == null) { m_references = new ArrayList(); } m_references.add(anno); m_referenceCount++; } /** * Get referencing extension by index position. * * @param index * @return reference */ public ComponentExtension getReference(int index) { return (ComponentExtension)m_references.get(index); } /** * Add dependency extension. * * @param anno */ public void addDependency(ComponentExtension anno) { if (m_dependencies == null) { m_dependencies = new ArrayList(); } m_dependencies.add(anno); } /** * Get the number of dependencies for this component. * * @return count */ public int getDependencyCount() { if (m_dependencies == null) { return 0; } else { return m_dependencies.size(); } } /** * Get dependency extension by index position. * * @param index * @return reference */ public GlobalExtension getDependency(int index) { return (GlobalExtension)m_dependencies.get(index); } /** * Reset the dependencies and references of this component. This must be called before beginning a reference * tracking pass, to clear any information from prior passes. */ public void resetDependencies() { if (m_dependencies != null) { m_dependencies.clear(); } if (m_references != null) { m_references.clear(); } m_referenceCount = 0; } /** * Check if the global definition can be removed from the schema. If it can, this adjusts the usage counts for all * dependencies of the definition, forcing a check of each dependency as the counts are adjusted. */ public void checkRemovable() { if (!isRemoved()) { if (m_referenceCount > 0) { if (s_logger.isDebugEnabled()) { OpenAttrBase component = getComponent(); s_logger.debug("Retaining " + ((INamed)component).getQName() + " from schema " + ((SchemaElement)component.getParent()).getResolver().getName() + " with " + m_referenceCount + " references"); } } else if (!m_included && !isRemoved() && m_referenceCount == 0) { // flag definition for deletion setRemoved(true); if (s_logger.isDebugEnabled()) { OpenAttrBase component = getComponent(); s_logger.debug(" Flagging deletion of " + ((INamed)component).getQName() + " from schema " + ((SchemaElement)component.getParent()).getResolver().getName()); } // recursively adjust the usage counts for dependencies for (int j = 0; j < getDependencyCount(); j++) { GlobalExtension dependency = getDependency(j); dependency.m_referenceCount--; dependency.checkRemovable(); } } } } /** * Get definition item. * * @return item */ public DefinitionItem getDefinition() { return m_definition; } /** * Set definition item. * * @param item */ public void setDefinition(DefinitionItem item) { m_definition = item; } /** * Normalize the schema definition component. This recursively traverses the schema model tree rooted in the * global component, normalizing each child component. */ public void normalize() { if (!m_normalized) { if (s_logger.isDebugEnabled()) { s_logger.debug("Normalization invoked for global " + SchemaUtils.componentPath(getComponent())); } normalize(0); } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/custom/NestingCustomBase.java0000644000175000017500000001647110752422370030144 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen.custom; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.QName; import org.jibx.schema.elements.FacetElement; import org.jibx.schema.elements.SchemaBase; import org.jibx.schema.support.LazyList; import org.jibx.schema.validation.ValidationContext; /** * Base class for all standard schema customizations that can contain other customizations. * * @author Dennis M. Sosnoski */ public abstract class NestingCustomBase extends CustomBase implements TypeReplacer { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "enforced-facets", "ignored-facets", "type-substitutions" }); // // Bound fields. /** List of type substitution pairs. */ private QName[] m_substitutions; /** Mask for facets enforced at this level. */ private long m_enforcedFacetsMask; /** Mask for facets ignored at this level. */ private long m_ignoredFacetsMask; /** Child customizations. */ private final LazyList m_children; // // Constructed fields. /** Map of type substitutions. */ private Map m_typeSubstitutionMap; /** Mask for facets active at this level (all facets not in scope of an ignore state). */ private long m_activeFacetsMask; /** * Constructor. * * @param parent */ public NestingCustomBase(NestingCustomBase parent) { super(parent); m_children = new LazyList(); } /** * Get type substitution pairs list. * * @return substitutions */ public QName[] getSubstitutions() { return m_substitutions; } /** * Set type substitution pairs list. * * @param subs */ public void setSubstitutions(QName[] subs) { m_substitutions = subs; } /** * Set the list of facet elements to be enforced. * * @param facets * @param ictx */ public void setEnforcedFacets(String[] facets, IUnmarshallingContext ictx) { ValidationContext vctx = (ValidationContext)ictx.getUserContext(); long mask = 0; if (facets != null) { for (int i = 0; i < facets.length; i++) { String facet = facets[i]; int index = Arrays.binarySearch(FacetElement.FACET_ELEMENT_NAMES, facet); if (index >= 0) { mask |= SchemaBase.ELEMENT_MASKS[FacetElement.FACET_ELEMENT_INDEXES[index]]; } else { vctx.addError("'" + facet + "' is not a facet name", this); } } } m_enforcedFacetsMask = mask; } /** * Set the list of facet elements to be ignored. * * @param facets * @param ictx */ public void setIgnoredFacets(String[] facets, IUnmarshallingContext ictx) { ValidationContext vctx = (ValidationContext)ictx.getUserContext(); long mask = 0; if (facets != null) { for (int i = 0; i < facets.length; i++) { String facet = facets[i]; int index = Arrays.binarySearch(FacetElement.FACET_ELEMENT_NAMES, facet); if (index >= 0) { mask |= SchemaBase.ELEMENT_MASKS[FacetElement.FACET_ELEMENT_INDEXES[index]]; } else { vctx.addError("'" + facet + "' is not a facet name", this); } } } m_ignoredFacetsMask = mask; } /** * Get the bitmask of facet element flags to be processed. * * @return bitmask */ public long getActiveFacetsMask() { return m_activeFacetsMask; } /** * Get child customizations. * * @return children */ public LazyList getChildren() { return m_children; } /** * Set a type replacement. * * @param original * @param replace */ protected void setReplacement(QName original, QName replace) { m_typeSubstitutionMap.put(original, replace); } /** * Get replacement type. * * @param qname * @return replacement type (null if deletion; original type, if no replacement defined) */ public QName getReplacement(QName qname) { if (m_typeSubstitutionMap.containsKey(qname)) { return (QName)m_typeSubstitutionMap.get(qname); } else { return qname; } } /** * Validate and finalize customization information. This creates a new type substitution map and active facets mask, * or inherits unchanged values from the parent customization. * * @param vctx validation context * @return true if valid, false if not */ public boolean validate(ValidationContext vctx) { NestingCustomBase parent = getParent(); if (m_substitutions == null || m_substitutions.length == 0) { m_typeSubstitutionMap = parent.m_typeSubstitutionMap; } else if ((m_substitutions.length % 2) == 0) { if (parent == null) { m_typeSubstitutionMap = new HashMap(); } else { m_typeSubstitutionMap = new HashMap(parent.m_typeSubstitutionMap); } for (int i = 0; i < m_substitutions.length; i += 2) { m_typeSubstitutionMap.put(m_substitutions[i], m_substitutions[i+1]); } } else { vctx.addError("Type substitution list must be pairs, not an odd number of names", this); } // TODO: implement the facet handling m_activeFacetsMask = SchemaBase.ELEMENT_MASKS[SchemaBase.ENUMERATION_TYPE]; return true; } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/custom/SchemaComponentWrapper.java0000644000175000017500000001350710673717104031174 0ustar moellermoeller/* * Copyright (c) 2006-2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen.custom; import java.io.StringWriter; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.jibx.schema.INamed; import org.jibx.schema.elements.AnnotatedBase; import org.jibx.schema.elements.AnnotationElement; import org.jibx.schema.elements.DocumentationElement; import org.jibx.schema.elements.SchemaBase; import org.w3c.dom.Node; /** * Wrapper for a schema definition component used in code generation. This provides some convenience methods, but also * gives the basis for schema code generation customizations. An instance is associated with each schema component which * contributes to the code generation, including attributes and elements as well as groupings including compositors, and * type definitions. * * @author Dennis M. Sosnoski */ public class SchemaComponentWrapper { private final SchemaBase m_schemaComponent; private ArrayList m_nestedComponents; /** * Constructor. * * @param comp */ public SchemaComponentWrapper(SchemaBase comp) { m_schemaComponent = comp; } /** * Get the name associated with this component. * * @return name (null if none) */ public String getSchemaName() { if (m_schemaComponent instanceof INamed) { return ((INamed)m_schemaComponent).getName(); } else { throw new IllegalStateException("Component " + m_schemaComponent + " has no name"); } } /** * Get the name of the schema element. * * @return name */ public String getSchemaForm() { return m_schemaComponent.name(); } /** * Get JavaDocs for component. This just returns the XML text for the content of all Documentation * annotation items on the component. * * @return documentation text */ public String getJavaDocs() { if (m_schemaComponent instanceof AnnotatedBase) { AnnotationElement ann = ((AnnotatedBase)m_schemaComponent).getAnnotation(); if (ann != null) { return elementListText(ann.getItemsList()); } } return ""; } /** * Extract documentation content from list of annotation items. * * @param items annotation items * @return XML documentation text */ private static String elementListText(List items) { try { // start by setting up the transform String text = null; Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); DOMSource source = new DOMSource(); // loop through all annotation items for (Iterator iter = items.iterator(); iter.hasNext();) { Object item = iter.next(); if (item instanceof DocumentationElement) { // accumulate XML text content of documentation elements ArrayList contents = ((DocumentationElement)item).getContents(); StringWriter swrite = new StringWriter(); for (int i = 0; i < contents.size(); i++) { source.setNode((Node)contents.get(i)); transformer.transform(source, new StreamResult(swrite)); } if (text == null) { text = " "; } text += swrite.toString(); } } return text; } catch (TransformerConfigurationException e) { throw new IllegalStateException("Unable to configure transform: " + e.getMessage()); } catch (TransformerException e) { throw new IllegalStateException("Error in transform: " + e.getMessage()); } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/custom/SchemaCustom.java0000644000175000017500000004163311002543776027143 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen.custom; import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import org.apache.log4j.Logger; import org.jibx.binding.util.ObjectStack; import org.jibx.binding.util.StringArray; import org.jibx.custom.CustomUtils; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.schema.INamed; import org.jibx.schema.SchemaUtils; import org.jibx.schema.SchemaVisitor; import org.jibx.schema.TreeWalker; import org.jibx.schema.codegen.NameConverter; import org.jibx.schema.codegen.PackageHolder; import org.jibx.schema.elements.AnnotatedBase; import org.jibx.schema.elements.FacetElement; import org.jibx.schema.elements.FilteredSegmentList; import org.jibx.schema.elements.OpenAttrBase; import org.jibx.schema.elements.SchemaBase; import org.jibx.schema.elements.SchemaElement; import org.jibx.schema.elements.SchemaPath; import org.jibx.schema.validation.ValidationContext; /** * Individual schema customization information. * * @author Dennis M. Sosnoski */ public class SchemaCustom extends SchemaRootBase { /** Logger for class. */ private static final Logger s_logger = Logger.getLogger(SchemaCustom.class.getName()); /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "excludes", "includes", "name", "namespace" }, SchemaRootBase.s_allowedAttributes); // // Bound instance data /** Schema name. */ private String m_name; /** Schema namespace. */ private String m_namespace; /** Global names included in code generation. */ private String[] m_includes; /** Global names excluded from code generation. */ private String[] m_excludes; // // Internal instance data /** Schema definition. */ private SchemaElement m_schema; /** Extension attached to actual schema element (only used for children). */ private BaseExtension m_extension; /** * Constructor. * * @param parent */ public SchemaCustom(SchemasetCustom parent) { super(parent); } /** * Make sure all attributes are defined. * * @param uctx unmarshalling context */ private void preSet(IUnmarshallingContext uctx) { validateAttributes(uctx, s_allowedAttributes); } /** * Get schema name. * * @return name */ public String getName() { return m_name; } /** * Set schema name. * * @param name */ public void setName(String name) { m_name = name; } /** * Get schema namespace. * * @return namespace */ public String getNamespace() { return m_namespace; } /** * Set schema namespace. * * @param namespace */ public void setNamespace(String namespace) { m_namespace = namespace; } /** * Get schema definition. * * @return schema */ public SchemaElement getSchema() { return m_schema; } /** * Set schema definition. * * @param name * @param schema */ public void setSchema(String name, SchemaElement schema) { if (m_name == null) { m_name = name; } if (m_namespace == null) { m_namespace = schema.getTargetNamespace(); } m_schema = schema; } /** * Check if this customization matches a particular schema. * * @param name * @param schema * @return true if a match, false if not */ public boolean checkMatch(String name, SchemaElement schema) { return (m_name == null || (m_name.equals(name))) && (m_namespace == null || (m_namespace.equals(schema.getTargetNamespace()))); } /** * Build the extensions tree for a global definition. * * @param visitor * @param wlkr * @param anno */ private void extendGlobal(ExtensionBuilderVisitor visitor, TreeWalker wlkr, GlobalExtension anno) { visitor.setRoot(anno); wlkr.walkChildren(anno.getComponent(), visitor); } /** * Build the schema extension structure. This first builds extensions for all the global definitions in the schema, * marking the ones specified to be included or excluded from the schema, and for all the child components of the * non-excluded globals. It then applies the customizations to the extensions. * * @param nconv name converter * @param pack package for generated classes * @param vctx validation context */ public void extend(NameConverter nconv, PackageHolder pack, ValidationContext vctx) { // build the basic include and exclude sets Set inclset = Collections.EMPTY_SET; Set exclset = Collections.EMPTY_SET; if (m_includes != null) { inclset = CustomUtils.nameSet(m_includes); } if (m_excludes != null) { exclset = CustomUtils.nameSet(m_excludes); } // check for any conflicts between the two if (!inclset.isEmpty() && !exclset.isEmpty()) { for (Iterator iter = inclset.iterator(); iter.hasNext();) { Object next = iter.next(); if (exclset.contains(next)) { vctx.addError("Name '" + next.toString() + "' cannot be on both include and exclude list", this); } } } // build the extensions for each global definition component (and descendant components) m_extension = new BaseExtension(m_schema); m_extension.setTypeReplacer(this); FilteredSegmentList globals = m_schema.getTopLevelChildren(); ExtensionBuilderVisitor builder = new ExtensionBuilderVisitor(nconv); TreeWalker wlkr = new TreeWalker(null, null); // Level level = TreeWalker.setLogging(s_logger.getLevel()); boolean inner = isUseInner(); Set foundset = Collections.EMPTY_SET; if (m_includes != null || m_excludes != null) { foundset = new HashSet(); } for (int i = 0; i < globals.size(); i++) { // set up the basic global definition extension AnnotatedBase global = (AnnotatedBase)globals.get(i); GlobalExtension exten = new GlobalExtension(global, nconv, pack); String name = ((INamed)global).getName(); boolean exclude = exclset.contains(name); exten.setRemoved(exclude); if (exclude) { foundset.add(name); } boolean include = inclset.contains(name); exten.setIncluded(include); if (include) { foundset.add(name); } exten.setUseInnerClasses(inner); // initialize extensions for full tree of non-excluded global definition components if (!exten.isRemoved()) { extendGlobal(builder, wlkr, exten); } else if (global.type() == SchemaBase.SIMPLETYPE_TYPE || global.type() == SchemaBase.COMPLEXTYPE_TYPE) { setReplacement(((INamed)global).getQName(), null); } } // TreeWalker.setLogging(level); // report any names not found if (foundset.size() < exclset.size() + inclset.size()) { Set mergeset = new HashSet(); mergeset.addAll(exclset); mergeset.addAll(inclset); for (Iterator iterator = mergeset.iterator(); iterator.hasNext();) { String name = (String)iterator.next(); if (!foundset.contains(name)) { vctx.addWarning("Name '" + name + "' not found in schema", this); } } } // use child customizations to amend the generated extensions int size = getChildren().size(); for (int i = 0; i < size; i++) { ComponentCustom custom = (ComponentCustom)getChildren().get(i); SchemaPath path = custom.buildPath(vctx); if (path != null) { if (path.isWildStart()) { vctx.addError("Top level customizations cannot use wildcard as first step", custom); } else { // match only the first path step OpenAttrBase match = path.partialMatchUnique(0, 0, m_schema); if (s_logger.isDebugEnabled()) { if (match == null) { s_logger.debug("No match found for customization " + custom); } else { s_logger.debug("Matched customization " + custom + " to extension for schema component " + SchemaUtils.describeComponent(match)); } } if (match != null) { String name = ((INamed)match).getName(); GlobalExtension exten = (GlobalExtension)match.getExtension(); if (custom.isIgnored()) { // force exclude if generation skipped by customization if (exten.isIncluded()) { vctx.addWarning("Name '" + name + "' is on include list for schema, but excluded by customization", custom); } exten.setIncluded(false); } else { // check for customization for global excluded at schema level if (exten.isRemoved()) { vctx.addWarning("Name '" + name + "' is on excludes list for schema, but has a customization", custom); exten.setRemoved(false); extendGlobal(builder, wlkr, exten); } // check if customization applies to descendant of global definition component OpenAttrBase target = match; if (path.getPathLength() > 1) { target = path.partialMatchUnique(1, path.getPathLength(), target); } // apply customization to target extension if (target != null) { custom.apply((ComponentExtension)match.getExtension(), vctx); } } } } } } // flag extensions for facets to be removed from schema SchemaVisitor visitor = new FacetRemoverVisitor(this); for (Iterator iter = globals.iterator(); iter.hasNext();) { AnnotatedBase global = (AnnotatedBase)iter.next(); if (!((ComponentExtension)global.getExtension()).isRemoved()) { wlkr.walkElement(global, visitor); } } } /** * Factory used during unmarshalling. * * @param ictx * @return instance */ private static SchemaCustom factory(IUnmarshallingContext ictx) { return new SchemaCustom((SchemasetCustom)getContainingObject(ictx)); } /** * Visitor to build basic extensions for schema components. This also sets class and base names for the extensions, * if the component has a name. */ private static class ExtensionBuilderVisitor extends SchemaVisitor { /** Name converter. */ private final NameConverter m_nameConverter; /** Extension for root component being expanded. */ private GlobalExtension m_root; /** * Constructor. * * @param nconv name converter */ public ExtensionBuilderVisitor(NameConverter nconv) { super(); m_nameConverter = nconv; } /** * Set the extension for the root of the schema definition component to be expanded. * * @param root */ public void setRoot(GlobalExtension root) { m_root = root; } /** * Visit any component of schema definition. This just creates the extension for the component. * * @param node * @return true to continue expansion */ public boolean visit(AnnotatedBase node) { node.setExtension(new ComponentExtension(node, m_root)); return true; } } /** * Visitor to flag extensions to remove unused facets. This relies on each customization being set as the type * substitution handler for the corresponding extension. */ private static class FacetRemoverVisitor extends SchemaVisitor { /** Stack of active customizations. */ private ObjectStack m_customStack; /** Currently active customization. */ private NestingCustomBase m_currentCustom; /** * Constructor. * * @param root customization for root element being processed */ public FacetRemoverVisitor(SchemaCustom root) { m_customStack = new ObjectStack(); m_currentCustom = root; } /** * Exit the generic precursor class of all elements which can have customizations. This just pops the saved * customization for the higher level off the stack. * * @param node */ public void exit(AnnotatedBase node) { super.exit(node); m_currentCustom = (NestingCustomBase)m_customStack.pop(); } /** * Visit a facet element. This first calls the handling for the supertype, in order to activate a customization * that applies to this particular element, then checks if the facet element subtype is to be included in the * code generation. * * @param node * @return true if continuing expansion, false if not */ public boolean visit(FacetElement node) { boolean ret = super.visit(node); if ((m_currentCustom.getActiveFacetsMask() & node.bit()) == 0) { ((ComponentExtension)node.getExtension()).setRemoved(true); } return ret; } /** * Visit the generic precursor class of all elements which can have customizations. This saves the current * customization on the stack, then checks for one associated with the current element and makes that active if * found. * * @param node * @return true if continuing expansion, false if not */ public boolean visit(AnnotatedBase node) { m_customStack.push(m_currentCustom); NestingCustomBase custom = (NestingCustomBase)(((ComponentExtension)node.getExtension())).getCustom(); if (custom != null) { m_currentCustom = custom; } return super.visit(node); } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/custom/SchemaRootBase.java0000644000175000017500000001422110752422370027375 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen.custom; import org.jibx.binding.util.StringArray; /** * Base class for possible root customizations. * * @author Dennis M. Sosnoski */ public abstract class SchemaRootBase extends NestingCustomBase { /** Empty array used as return value when nothing else specified. */ private static final String[] EMPTY_STRING_ARRAY = new String[0]; /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "generate-unused", "package", "prefer-inline", "prefer-inner-class", "strip-prefixes", "strip-suffixes" }, NestingCustomBase.s_allowedAttributes); /** Fully-qualified package name. */ private String m_package; /** Generate even unused global definitions. */ private Boolean m_generateUnused; /** Prefer inline definitions (separate classes for all if FALSE). */ private Boolean m_preferInline; /** Use inner classes for substructures (top-level classes for all if FALSE). */ private Boolean m_useInner; /** Prefix strings to be stripped when converting names. */ private String[] m_stripPrefixes; /** Suffix strings to be stripped when converting names. */ private String[] m_stripSuffixes; /** * Constructor. * * @param parent */ public SchemaRootBase(SchemaRootBase parent) { super(parent); } /** * Get parent customization (which will either be null, or another instance of this class). * * @return parent, or null if none */ public SchemaRootBase getRootParent() { return (SchemaRootBase)getParent(); } /** * Check whether unused definitions should be included in code generation. The default is true if not * overridden at any level. * * @return generate unused flag */ public boolean isGenerateUnused() { SchemaRootBase root = this; while (root != null) { if (root.m_generateUnused != null) { return root.m_generateUnused.booleanValue(); } else { root = root.getRootParent(); } } return true; } /** * Check whether inlining of components is preferred. The default is true if not overridden at any * level. * * @return inline components flag */ public boolean isPreferInline() { SchemaRootBase root = this; while (root != null) { if (root.m_preferInline != null) { return root.m_preferInline.booleanValue(); } else { root = root.getRootParent(); } } return true; } /** * Check whether inner classes are preferred for components used only by one definition. The default is * true if not overridden at any level. * * @return inline components flag */ public boolean isUseInner() { SchemaRootBase root = this; while (root != null) { if (root.m_useInner != null) { return root.m_useInner.booleanValue(); } else { root = root.getRootParent(); } } return true; } /** * Get the prefixes to be stripped when converting XML names. * * @return prefixes */ public String[] getStripPrefixes() { SchemaRootBase root = this; while (root != null) { if (root.m_stripPrefixes != null) { return root.m_stripPrefixes; } else { root = root.getRootParent(); } } return EMPTY_STRING_ARRAY; } /** * Get the suffixes to be stripped when converting XML names. * * @return suffixes */ public String[] getStripSuffixes() { SchemaRootBase root = this; while (root != null) { if (root.m_stripSuffixes != null) { return root.m_stripSuffixes; } else { root = root.getRootParent(); } } return EMPTY_STRING_ARRAY; } /** * Get fully-qualified package name. This is inherited by nested schemas if set at any level. * * @return package (null if none set) */ public String getPackage() { SchemaRootBase root = this; while (root != null) { if (root.m_package != null) { return root.m_package; } else { root = root.getRootParent(); } } return null; } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/custom/SchemasetCustom.java0000644000175000017500000002521610713703266027656 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen.custom; import java.util.HashMap; import java.util.Map; import org.apache.log4j.Logger; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.schema.elements.SchemaElement; import org.jibx.schema.support.LazyList; import org.jibx.schema.validation.ValidationContext; import org.jibx.schema.validation.ValidationProblem; /** * Customization information for a set of schemas. * * @author Dennis M. Sosnoski */ public class SchemasetCustom extends SchemaRootBase { /** Logger for class. */ private static final Logger s_logger = Logger.getLogger(SchemasetCustom.class.getName()); /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "names", "namespaces" }, SchemaRootBase.s_allowedAttributes); // // Unmarshalled data /** Schema name patterns. */ private String[] m_names; /** Schema namespace patterns. */ private String[] m_namespaces; // // Instance data /** Map from schema file name to customization. */ private final Map m_schemaMap; /** * Constructor. * * @param parent */ public SchemasetCustom(SchemasetCustom parent) { super(parent); m_schemaMap = new HashMap(); } /** * Get schema name match patterns. * * @return names (null if not set) */ public String[] getNames() { return m_names; } /** * Make sure all attributes are defined. * * @param uctx unmarshalling context */ private void preSet(IUnmarshallingContext uctx) { validateAttributes(uctx, s_allowedAttributes); } /** * Check if a schema is included in this set. * * @param name schema file name * @param schema actual schema * @return true if in set, false if not */ public boolean isInSet(String name, SchemaElement schema) { // check for match on file name boolean match = true; if (m_names != null) { match = false; for (int i = 0; i < m_names.length; i++) { if (isPatternMatch(name, m_names[i])) { match = true; break; } } } // check for match on target namespace if (m_namespaces != null) { match = false; String ns = schema.getTargetNamespace(); if (ns == null) { ns = ""; } for (int i = 0; i < m_namespaces.length; i++) { if (isPatternMatch(ns, m_namespaces[i])) { match = true; break; } } } // return 'and' of two tests return match; } /** * Get existing schema customization information. * * @param name schema file name * @return customization */ public SchemaCustom getCustomization(String name) { return (SchemaCustom)m_schemaMap.get(name); } /** * Get schema customization information, creating it if it doesn't already exist. * * @param name schema file name * @param schema actual schema * @param vctx validation context for reporting errors * @return customization */ public SchemaCustom forceCustomization(String name, SchemaElement schema, ValidationContext vctx) { SchemaCustom custom = (SchemaCustom)m_schemaMap.get(name); if (custom == null) { // check for unique match to schema customization for (int i = 0; i < getChildren().size(); i++) { SchemaRootBase child = (SchemaRootBase)getChildren().get(i); if (child instanceof SchemaCustom && ((SchemaCustom)child).checkMatch(name, schema)) { if (custom == null) { custom = (SchemaCustom)child; } else { vctx.addError("Multiple matches to schema " + name + " (first match " + ValidationProblem.componentDescription(custom) + ')', child); } } } // create default customization if no match found if (custom == null) { custom = new SchemaCustom(this); } // add customization to map and link to schema m_schemaMap.put(name, custom); custom.setSchema(name, schema); } return custom; } /** * Factory used during unmarshalling. * * @param ictx * @return instance */ private static SchemasetCustom factory(IUnmarshallingContext ictx) { return new SchemasetCustom((SchemasetCustom)getContainingObject(ictx)); } /** * Checks if a name matches a pattern. This method accepts one or more '*' wildcard * characters in the pattern, calling itself recursively in order to handle multiple wildcards. * * @param name * @param pattern match pattern * @return true if pattern matched, false if not */ public static boolean isPatternMatch(String name, String pattern) { // check special match cases first if (pattern.length() == 0) { return name.length() == 0; } else if (pattern.charAt(0) == '*') { // check if the wildcard is all that's left of pattern if (pattern.length() == 1) { return true; } else { // check if another wildcard follows next segment of text pattern = pattern.substring(1); int split = pattern.indexOf('*'); if (split > 0) { // recurse on each match to text segment String piece = pattern.substring(0, split); pattern = pattern.substring(split); int offset = -1; while ((offset = name.indexOf(piece, ++offset)) > 0) { int end = offset + piece.length(); if (isPatternMatch(name.substring(end), pattern)) { return true; } } } else { // no more wildcards, need exact match to end of name return name.endsWith(pattern); } } } else { // check for leading text before first wildcard int split = pattern.indexOf('*'); if (split > 0) { // match leading text to start of name String piece = pattern.substring(0, split); if (name.startsWith(piece)) { return isPatternMatch(name.substring(split), pattern.substring(split)); } else { return false; } } else { // no wildcards, need exact match return name.equals(pattern); } } return false; } /** * Recursively check that each schema customization has been matched to a schema. A warning is generated for any * customization without a matching schema. * * @param vctx */ public void checkSchemas(ValidationContext vctx) { // check for unique match to schema customization for (int i = 0; i < getChildren().size(); i++) { SchemaRootBase child = (SchemaRootBase)getChildren().get(i); if (child instanceof SchemaCustom) { SchemaCustom custom = (SchemaCustom)child; if (custom.getSchema() == null) { vctx.addError("No schema loaded for customization ", custom); } } else if (child instanceof SchemasetCustom) { ((SchemasetCustom)child).checkSchemas(vctx); } } } /** * Validate and finalize customization information. This override of the base class implementation also invokes the * same method on any nested schemasets in order to make sure that the type substitution map and active facets mask * will be available for use by nested schemas. * * @param vctx validation context * @return true if valid, false if not */ public boolean validate(ValidationContext vctx) { boolean valid = super.validate(vctx); if (valid) { LazyList children = getChildren(); for (int i = 0; i < children.size(); i++) { Object child = children.get(i); if (child instanceof SchemasetCustom) { if (!((SchemasetCustom)child).validate(vctx)) { valid = false; } } } } return valid; } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/custom/TypeReplacer.java0000644000175000017500000000357310673717104027151 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen.custom; import org.jibx.runtime.QName; /** * Interface defining type substitutions. * * @author Dennis M. Sosnoski */ public interface TypeReplacer { /** * Get replacement type. * * @param qname * @return replacement type (the same as the supplied type, if no replacement defined) */ QName getReplacement(QName qname); }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/custom/binding.xml0000644000175000017500000001061510713703266026035 0ustar moellermoeller libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/datamodel/0000755000175000017500000000000011023035620024301 5ustar moellermoellerlibjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/ASTBuilderBase.java0000644000175000017500000001061110752422370025754 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.BodyDeclaration; import org.eclipse.jdt.core.dom.Modifier; import org.eclipse.jdt.core.dom.NumberLiteral; import org.eclipse.jdt.core.dom.StringLiteral; /** * Abstract syntax tree builder base class. This wraps the AST with convenience methods. * * @author Dennis M. Sosnoski */ public class ASTBuilderBase { /** Actual AST instance. */ protected final AST m_ast; /** * Constructor. * * @param ast */ public ASTBuilderBase(AST ast) { m_ast = ast; } /** * Set the public access flag for a declaration. * * @param decl */ public void setPublic(BodyDeclaration decl) { decl.modifiers().add(m_ast.newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD)); } /** * Set the private access flag for a declaration. * * @param decl */ public void setPrivate(BodyDeclaration decl) { decl.modifiers().add(m_ast.newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD)); } /** * Set the static flag for a declaration. * * @param decl */ public void setStatic(BodyDeclaration decl) { decl.modifiers().add(m_ast.newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD)); } /** * Set the final flag for a declaration. * * @param decl */ public void setFinal(BodyDeclaration decl) { decl.modifiers().add(m_ast.newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD)); } /** * Set declaration as private final. * * @param decl */ public void setPrivateFinal(BodyDeclaration decl) { setPrivate(decl); setFinal(decl); } /** * Set declaration as private static final. * * @param decl */ public void setPrivateStaticFinal(BodyDeclaration decl) { setPrivate(decl); setStatic(decl); setFinal(decl); } /** * Set declaration as public static. * * @param decl */ public void setPublicStatic(BodyDeclaration decl) { setPublic(decl); setStatic(decl); } /** * Set declaration as public static final. * * @param decl */ public void setPublicStaticFinal(BodyDeclaration decl) { setPublic(decl); setStatic(decl); setFinal(decl); } /** * Create a string literal. * * @param value literal value * @return literal */ public StringLiteral stringLiteral(String value) { StringLiteral literal = m_ast.newStringLiteral(); literal.setLiteralValue(value); return literal; } /** * Create a number literal. * * @param value literal value * @return literal */ public NumberLiteral numberLiteral(String value) { return m_ast.newNumberLiteral(value); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/ArrayAccessBuilder.java0000644000175000017500000000521010713703146026731 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import org.eclipse.jdt.core.dom.ArrayAccess; import org.eclipse.jdt.core.dom.Expression; /** * Abstract syntax tree array access expression builder. This adds convenience methods and control information to the * base builder. */ public class ArrayAccessBuilder extends ExpressionBuilderBase { /** Array creation expression. */ private final ArrayAccess m_arrayAccess; /** * Constructor. * * @param source * @param expr */ public ArrayAccessBuilder(ClassBuilder source, ArrayAccess expr) { super(source, expr); m_arrayAccess = expr; } /** * Add operand to expression. This just sets the supplied operand expression as the index value, as long as the * index has not been set previously. * * @param operand */ protected void addOperand(Expression operand) { Expression index = m_arrayAccess.getIndex(); if (index == null) { m_arrayAccess.setIndex(operand); } else { throw new IllegalStateException("Internal error: attempt to set index expression more than once"); } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/BlockBuilder.java0000644000175000017500000003530011002543774025567 0ustar moellermoeller/* * Copyright (c) 2007-2008, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import org.eclipse.jdt.core.dom.Assignment; import org.eclipse.jdt.core.dom.Block; import org.eclipse.jdt.core.dom.ClassInstanceCreation; import org.eclipse.jdt.core.dom.EnhancedForStatement; import org.eclipse.jdt.core.dom.Expression; import org.eclipse.jdt.core.dom.FieldAccess; import org.eclipse.jdt.core.dom.ForStatement; import org.eclipse.jdt.core.dom.IfStatement; import org.eclipse.jdt.core.dom.InfixExpression; import org.eclipse.jdt.core.dom.MethodInvocation; import org.eclipse.jdt.core.dom.PrefixExpression; import org.eclipse.jdt.core.dom.PrimitiveType; import org.eclipse.jdt.core.dom.ReturnStatement; import org.eclipse.jdt.core.dom.SingleVariableDeclaration; import org.eclipse.jdt.core.dom.Statement; import org.eclipse.jdt.core.dom.ThrowStatement; import org.eclipse.jdt.core.dom.Type; import org.eclipse.jdt.core.dom.VariableDeclarationExpression; import org.eclipse.jdt.core.dom.VariableDeclarationFragment; import org.eclipse.jdt.core.dom.VariableDeclarationStatement; import org.eclipse.jdt.core.dom.InfixExpression.Operator; /** * Block builder. This wraps the AST block representation with convenience methods and added control information. */ public class BlockBuilder extends StatementBuilderBase { /** Compilation unit. */ private final Block m_block; /** * Constructor. * * @param source * @param block */ public BlockBuilder(ClassBuilder source, Block block) { super(source); m_block = block; } /** * Get the statement. * * @return statement */ Statement getStatement() { return m_block; } /** * Append an assignment from an expression to a field or local variable. * * @param expr * @param name */ public void addAssignToName(Expression expr, String name) { Assignment asgn = m_ast.newAssignment(); asgn.setLeftHandSide(m_ast.newSimpleName(name)); asgn.setRightHandSide(expr); m_block.statements().add(m_ast.newExpressionStatement(asgn)); } /** * Append an assignment from a local variable to a field. This handles the case where the local variable name is the * same as the field name. * * @param vname * @param fname */ public void addAssignVariableToField(String vname, String fname) { Assignment asgn = m_ast.newAssignment(); if (fname.equals(vname)) { FieldAccess access = m_ast.newFieldAccess(); access.setExpression(m_ast.newThisExpression()); access.setName(m_ast.newSimpleName(fname)); asgn.setLeftHandSide(access); } else { asgn.setLeftHandSide(m_ast.newSimpleName(fname)); } asgn.setRightHandSide(m_ast.newSimpleName(vname)); m_block.statements().add(m_ast.newExpressionStatement(asgn)); } /** * Append a local variable declaration. * * @param type * @param vname */ public void addLocalVariableDeclaration(String type, String vname) { VariableDeclarationFragment vfrag = m_ast.newVariableDeclarationFragment(); vfrag.setName(m_ast.newSimpleName(vname)); VariableDeclarationStatement stmt = m_ast.newVariableDeclarationStatement(vfrag); stmt.setType(m_source.createType(type)); m_block.statements().add(stmt); } /** * Append a local variable declaration with initializer expression. * * @param type * @param vname * @param expr initializer expression */ public void addLocalVariableDeclaration(String type, String vname, ExpressionBuilderBase expr) { VariableDeclarationFragment vfrag = m_ast.newVariableDeclarationFragment(); vfrag.setName(m_ast.newSimpleName(vname)); vfrag.setInitializer(expr.getExpression()); VariableDeclarationStatement stmt = m_ast.newVariableDeclarationStatement(vfrag); stmt.setType(m_source.createType(type)); m_block.statements().add(stmt); } /** * Append a simple 'if' statement (no else). * * @param expr conditional expression * @param ifblock block executed when condition true */ public void addIfStatement(ExpressionBuilderBase expr, BlockBuilder ifblock) { IfStatement ifstmt = m_ast.newIfStatement(); ifstmt.setExpression(expr.getExpression()); ifstmt.setThenStatement(ifblock.m_block); m_block.statements().add(ifstmt); } /** * Append an 'if-else' statement. * * @param expr conditional expression * @param ifblock block executed when condition true * @param elseblock block executed when condition false */ public void addIfElseStatement(ExpressionBuilderBase expr, BlockBuilder ifblock, BlockBuilder elseblock) { IfStatement ifstmt = m_ast.newIfStatement(); ifstmt.setExpression(expr.getExpression()); ifstmt.setThenStatement(ifblock.m_block); ifstmt.setElseStatement(elseblock.m_block); m_block.statements().add(ifstmt); } /** * Append an 'if-else-if' statement. * * @param ifexpr if conditional expression * @param elsexpr if conditional expression * @param ifblock block executed when condition true * @param elseblock block executed when condition false */ public void addIfElseIfStatement(ExpressionBuilderBase ifexpr, ExpressionBuilderBase elsexpr, BlockBuilder ifblock, BlockBuilder elseblock) { IfStatement ifstmt = m_ast.newIfStatement(); ifstmt.setExpression(ifexpr.getExpression()); ifstmt.setThenStatement(ifblock.m_block); IfStatement elseifstmt = m_ast.newIfStatement(); elseifstmt.setExpression(elsexpr.getExpression()); elseifstmt.setThenStatement(elseblock.m_block); ifstmt.setElseStatement(elseifstmt); m_block.statements().add(ifstmt); } /** * Append a three-part 'for' statement with an associated variable. This assumes the first part is a local variable * declaration with an initializer expression, while the other two parts are just expressions. * * @param name iteration variable name * @param type variable type * @param init variable initialization expression * @param test loop test expression (second part of 'for') * @param post post-loop expression (optional third part of 'for', null if none) * @param block statement body block */ private void addForStatement(String name, Type type, Expression init, Expression test, Expression post, BlockBuilder block) { ForStatement stmt = m_ast.newForStatement(); VariableDeclarationFragment declfrag = m_ast.newVariableDeclarationFragment(); declfrag.setName(m_ast.newSimpleName(name)); declfrag.setInitializer(init); VariableDeclarationExpression varexpr = m_ast.newVariableDeclarationExpression(declfrag); varexpr.setType(type); stmt.initializers().add(varexpr); stmt.setExpression(test); if (post != null) { stmt.updaters().add(post); } stmt.setBody(block.getStatement()); m_block.statements().add(stmt); } /** * Append a standard 'for' statement using an iterator. * * @param name iteration variable name * @param type variable type (must be an iterator subclass or generic type) * @param init variable initialization expression * @param block statement body block */ public void addIteratedForStatement(String name, Type type, ExpressionBuilderBase init, BlockBuilder block) { MethodInvocation methcall = m_ast.newMethodInvocation(); methcall.setExpression(m_ast.newSimpleName(name)); methcall.setName(m_ast.newSimpleName("hasNext")); addForStatement(name, type, init.getExpression(), methcall, null, block); } /** * Append a standard 'for' statement using an index variable. The index is always initialized to '0', and * incremented each time the loop is executed until the limit value is reached. * * @param name index variable name * @param limit end value for loop * @param block statement body block */ public void addIndexedForStatement(String name, ExpressionBuilderBase limit, BlockBuilder block) { InfixExpression test = m_ast.newInfixExpression(); test.setOperator(Operator.LESS); test.setLeftOperand(m_ast.newSimpleName(name)); test.setRightOperand(limit.getExpression()); PrefixExpression post = m_ast.newPrefixExpression(); post.setOperator(PrefixExpression.Operator.INCREMENT); post.setOperand(m_ast.newSimpleName(name)); addForStatement(name, m_ast.newPrimitiveType(PrimitiveType.INT), m_ast.newNumberLiteral("0"), test, post, block); } /** * Append a Java 5 "enhanced" 'for' statement. * * @param name iteration variable name * @param type iteration variable type * @param expr iteration source expression * @param block statement body block */ public void addSugaredForStatement(String name, String type, ExpressionBuilderBase expr, BlockBuilder block) { EnhancedForStatement stmt = m_ast.newEnhancedForStatement(); stmt.setExpression(expr.getExpression()); SingleVariableDeclaration decl = m_ast.newSingleVariableDeclaration(); decl.setName(m_ast.newSimpleName(name)); decl.setType(m_source.createType(type)); stmt.setParameter(decl); stmt.setBody(block.getStatement()); m_block.statements().add(stmt); } /** * Append a statement returning the value of an expression. * * @param expr expression */ public void addReturnExpression(ExpressionBuilderBase expr) { ReturnStatement ret = m_ast.newReturnStatement(); ret.setExpression(expr.getExpression()); m_block.statements().add(ret); } /** * Append a statement returning the value of a field or local variable. * * @param name field name */ public void addReturnNamed(String name) { ReturnStatement ret = m_ast.newReturnStatement(); ret.setExpression(m_ast.newSimpleName(name)); m_block.statements().add(ret); } /** * Append a statement returning null. */ public void addReturnNull() { ReturnStatement ret = m_ast.newReturnStatement(); ret.setExpression(m_ast.newNullLiteral()); m_block.statements().add(ret); } /** * Append a throw new exception statement. * * @param type exception type * @param text */ public void addThrowException(String type, String text) { ThrowStatement thrwstmt = m_ast.newThrowStatement(); ClassInstanceCreation exexpr = m_ast.newClassInstanceCreation(); exexpr.setType(m_ast.newSimpleType(m_ast.newSimpleName(type))); exexpr.arguments().add(stringLiteral(text)); thrwstmt.setExpression(exexpr); m_block.statements().add(thrwstmt); } /** * Append a throw new exception statement. * * @param type exception type * @param expr initializer expression */ public void addThrowException(String type, ExpressionBuilderBase expr) { ThrowStatement thrwstmt = m_ast.newThrowStatement(); ClassInstanceCreation exexpr = m_ast.newClassInstanceCreation(); exexpr.setType(m_ast.newSimpleType(m_ast.newSimpleName(type))); exexpr.arguments().add(expr.getExpression()); thrwstmt.setExpression(exexpr); m_block.statements().add(thrwstmt); } /** * Append a method call statement. * * @param call */ public void addCall(InvocationBuilder call) { m_block.statements().add(m_ast.newExpressionStatement(call.getExpression())); } /** * Append a 'break' statement. */ public void addBreak() { m_block.statements().add(m_ast.newBreakStatement()); } /** * Append a 'switch' statement using a local variable or field name as the switch value. * * @param name * @return statement builder */ public SwitchBuilder addSwitch(String name) { SwitchBuilder builder = new SwitchBuilder(m_source, m_ast.newSimpleName(name)); m_block.statements().add(builder.getStatement()); return builder; } /** * Append a 'switch' statement using a constructed expression as the switch value. * * @param expr * @return statement builder */ public SwitchBuilder addSwitch(ExpressionBuilderBase expr) { SwitchBuilder builder = new SwitchBuilder(m_source, expr.getExpression()); m_block.statements().add(builder.getStatement()); return builder; } /** * Append an expression statement. * * @param expr */ public void addExpressionStatement(ExpressionBuilderBase expr) { m_block.statements().add(m_ast.newExpressionStatement(expr.getExpression())); } /** * Append a constructed statement. * * @param stmt */ public void addStatement(StatementBuilderBase stmt) { m_block.statements().add(stmt.getStatement()); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/BodyBuilderBase.java0000644000175000017500000000704710713703146026233 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import org.eclipse.jdt.core.dom.BodyDeclaration; import org.eclipse.jdt.core.dom.Modifier; /** * Abstract syntax tree body declaration builder base. This adds convenience methods and control information to the base * builder. */ public class BodyBuilderBase extends ASTBuilderBase { /** Source builder. */ protected final ClassBuilder m_source; /** Body declaration under construction. */ protected final BodyDeclaration m_declaration; /** * Constructor. * * @param source * @param decl */ public BodyBuilderBase(ClassBuilder source, BodyDeclaration decl) { super(source.getAST()); m_source = source; m_declaration = decl; } /** * Set the public access flag. */ public void setPublic() { m_declaration.modifiers().add(m_ast.newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD)); } /** * Set the private access flag. */ public void setPrivate() { m_declaration.modifiers().add(m_ast.newModifier(Modifier.ModifierKeyword.PRIVATE_KEYWORD)); } /** * Set the static flag. */ public void setStatic() { m_declaration.modifiers().add(m_ast.newModifier(Modifier.ModifierKeyword.STATIC_KEYWORD)); } /** * Set the final flag. */ public void setFinal() { m_declaration.modifiers().add(m_ast.newModifier(Modifier.ModifierKeyword.FINAL_KEYWORD)); } /** * Set private final flags. */ public void setPrivateFinal() { setPrivate(); setFinal(); } /** * Set private static final flags. */ public void setPrivateStaticFinal() { setPrivate(); setStatic(); setFinal(); } /** * Set public static flags. */ public void setPublicStatic() { setPublic(); setStatic(); } /** * Set public static final flags. */ public void setPublicStaticFinal() { setPublic(); setStatic(); setFinal(); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/CastBuilder.java0000644000175000017500000000520310756325130025425 0ustar moellermoeller/* * Copyright (c) 2008, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import org.eclipse.jdt.core.dom.CastExpression; import org.eclipse.jdt.core.dom.Expression; /** * Abstract syntax tree array cast expression builder. This adds convenience methods and control information to the base * builder. */ public class CastBuilder extends ExpressionBuilderBase { /** Cast expression. */ private final CastExpression m_cast; /** Flag for expression set. */ private boolean m_set; /** * Constructor. * * @param source * @param expr */ public CastBuilder(ClassBuilder source, CastExpression expr) { super(source, expr); m_cast = expr; } /** * Add operand to expression. This just sets the supplied operand expression as the target, as long as the target * has not been set previously. * * @param operand */ protected void addOperand(Expression operand) { if (m_set) { throw new IllegalStateException("Internal error: attempt to set cast expression more than once"); } else { m_cast.setExpression(operand); m_set = true; } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/ClassBuilder.java0000644000175000017500000004665711002543776025625 0ustar moellermoeller/* * Copyright (c) 2007-2008, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.AbstractTypeDeclaration; import org.eclipse.jdt.core.dom.AnonymousClassDeclaration; import org.eclipse.jdt.core.dom.ArrayAccess; import org.eclipse.jdt.core.dom.ArrayCreation; import org.eclipse.jdt.core.dom.CastExpression; import org.eclipse.jdt.core.dom.ClassInstanceCreation; import org.eclipse.jdt.core.dom.EnumConstantDeclaration; import org.eclipse.jdt.core.dom.EnumDeclaration; import org.eclipse.jdt.core.dom.FieldDeclaration; import org.eclipse.jdt.core.dom.InfixExpression; import org.eclipse.jdt.core.dom.Javadoc; import org.eclipse.jdt.core.dom.MethodDeclaration; import org.eclipse.jdt.core.dom.MethodInvocation; import org.eclipse.jdt.core.dom.Name; import org.eclipse.jdt.core.dom.PrefixExpression; import org.eclipse.jdt.core.dom.StringLiteral; import org.eclipse.jdt.core.dom.TagElement; import org.eclipse.jdt.core.dom.TextElement; import org.eclipse.jdt.core.dom.Type; import org.eclipse.jdt.core.dom.TypeDeclaration; import org.eclipse.jdt.core.dom.VariableDeclarationFragment; import org.eclipse.jdt.core.dom.InfixExpression.Operator; /** * Builder for a class definition. This wraps the AST with convenience methods and added control information. */ public class ClassBuilder { /** Source file containing this class. */ private final SourceBuilder m_source; /** Type declaration for class. */ private final ASTNode m_class; /** Fields added to class. */ private final ArrayList m_fields; /** Methods added to class. */ private final ArrayList m_methods; /** Builders for inner classes of this class. */ private final ArrayList m_innerBuilders; /** * Constructor. * * @param clas * @param source */ ClassBuilder(AbstractTypeDeclaration clas, SourceBuilder source) { m_source = source; m_class = clas; m_fields = new ArrayList(); m_methods = new ArrayList(); m_innerBuilders = new ArrayList(); } /** * Constructor for an inner class. * * @param clas * @param outer */ ClassBuilder(AbstractTypeDeclaration clas, ClassBuilder outer) { this(clas, outer.m_source); outer.m_innerBuilders.add(this); } /** * Constructor for an anonymous inner class. * * @param clas * @param outer */ public ClassBuilder(AnonymousClassDeclaration clas, ClassBuilder outer) { m_source = outer.m_source; m_class = clas; m_fields = null; m_methods = null; m_innerBuilders = null; } /** * AST access for related classes. * * @return AST */ AST getAST() { return m_source.getAST(); } /** * Create type name. * * @param type fully qualified type name * @return name */ Name createTypeName(String type) { return m_source.createTypeName(type); } /** * Clone an AST node. The cloned node will have no parent. * * @param node * @return clone */ public ASTNode clone(ASTNode node) { return ASTNode.copySubtree(m_source.getAST(), node); } /** * Create type definition. This uses the supplied type name, which may include array suffixes, to construct the * actual type definition. * * @param type fully qualified type name, or primitive type name * @return constructed typed definition */ public Type createType(String type) { return m_source.createType(type); } /** * Create a parameterized type. * * @param type fully qualified type name * @param param fully qualified parameter type name * @return type */ public Type createParameterizedType(String type, String param) { return m_source.createParameterizedType(type, param); } /** * Set source comment for this class. * * @param text comment text */ public void addSourceComment(String text) { if (m_class instanceof AbstractTypeDeclaration) { Javadoc javadoc = getAST().newJavadoc(); TextElement element = getAST().newTextElement(); element.setText(text); TagElement tag = getAST().newTagElement(); tag.fragments().add(element); javadoc.tags().add(tag); ((AbstractTypeDeclaration)m_class).setJavadoc(javadoc); } else { throw new IllegalStateException("Internal error - cannot add JavaDoc to non-class type"); } } /** * Add an interface to this class definition. * * @param type interface type */ public void addInterface(String type) { if (m_class instanceof TypeDeclaration) { ((TypeDeclaration)m_class).superInterfaceTypes().add(m_source.createType(type)); } else if (m_class instanceof EnumDeclaration) { ((EnumDeclaration)m_class).superInterfaceTypes().add(m_source.createType(type)); } else { // should not be possible, but just in case of added types in future throw new IllegalStateException("Internal error - interface not supported for class type"); } } /** * Add a constant to a Java 5 enum definition. * * @param name * @param value */ public void addConstant(String name, String value) { if (m_class instanceof EnumDeclaration) { EnumConstantDeclaration enumdecl = getAST().newEnumConstantDeclaration(); enumdecl.setName(getAST().newSimpleName(name)); StringLiteral strlit = getAST().newStringLiteral(); strlit.setLiteralValue(value); enumdecl.arguments().add(strlit); ((EnumDeclaration)m_class).enumConstants().add(enumdecl); } else { // should not be possible, but just in case of added types in future throw new IllegalStateException("Internal error - cannot add constant to class type"); } } /** * Create new instance of array type. * * @param type base type name * @return array creation */ public NewArrayBuilder newArrayBuilder(String type) { ArrayCreation create = getAST().newArrayCreation(); create.setType(getAST().newArrayType(m_source.createType(type))); return new NewArrayBuilder(this, create); } /** * Build new instance creator of type using a no-argument constructor. * * @param type actual type * @return instance creation */ public NewInstanceBuilder newInstance(Type type) { ClassInstanceCreation create = getAST().newClassInstanceCreation(); create.setType(type); return new NewInstanceBuilder(this, create); } /** * Build new instance creator of type using a no-argument constructor. * * @param type base type name * @return instance creation */ public NewInstanceBuilder newInstance(String type) { return newInstance(m_source.createType(type)); } /** * Build new instance creator of a simple type using a constructor that takes a single string value. * * @param type simple type name * @param value string value to be passed to constructor * @return instance creation */ public NewInstanceBuilder newInstanceFromString(String type, String value) { ClassInstanceCreation create = getAST().newClassInstanceCreation(); create.setType(createType(type)); StringLiteral literal = getAST().newStringLiteral(); literal.setLiteralValue(value); create.arguments().add(literal); return new NewInstanceBuilder(this, create); } /** * Build new instance creator of a simple type using a constructor that takes a pair of string values. * * @param type simple type name * @param value1 first string value to be passed to constructor * @param value2 second string value to be passed to constructor * @return instance creation */ public NewInstanceBuilder newInstanceFromStrings(String type, String value1, String value2) { ClassInstanceCreation create = getAST().newClassInstanceCreation(); create.setType(createType(type)); StringLiteral literal = getAST().newStringLiteral(); literal.setLiteralValue(value1); create.arguments().add(literal); literal = getAST().newStringLiteral(); literal.setLiteralValue(value2); create.arguments().add(literal); return new NewInstanceBuilder(this, create); } /** * Add field declaration. * * @param name field name * @param type field type * @return field builder */ public FieldBuilder addField(String name, Type type) { VariableDeclarationFragment vfrag = getAST().newVariableDeclarationFragment(); vfrag.setName(getAST().newSimpleName(name)); FieldDeclaration fdecl = getAST().newFieldDeclaration(vfrag); fdecl.setType(type); m_fields.add(fdecl); return new FieldBuilder(this, fdecl); } /** * Add field declaration. * * @param name field name * @param type type name * @return field builder */ public FieldBuilder addField(String name, String type) { return addField(name, m_source.createType(type)); } /** * Add int field declaration with constant initialization. * * @param name variable name * @param value initial value * @return field builder */ public FieldBuilder addIntField(String name, String value) { FieldBuilder field = addField(name, "int"); field.setNumberInitializer(value); return field; } /** * Add constructor declaration. * * @param name simple class name * @return constructor builder */ public MethodBuilder addConstructor(String name) { MethodDeclaration constr = getAST().newMethodDeclaration(); constr.setName(getAST().newSimpleName(name)); constr.setConstructor(true); m_methods.add(constr); return new MethodBuilder(this, constr); } /** * Add method declaration. * * @param name * @param type * @return method builder */ public MethodBuilder addMethod(String name, Type type) { MethodDeclaration meth = getAST().newMethodDeclaration(); meth.setName(getAST().newSimpleName(name)); meth.setConstructor(false); meth.setReturnType2(type); if (m_class instanceof AnonymousClassDeclaration) { ((AnonymousClassDeclaration)m_class).bodyDeclarations().add(meth); } else { m_methods.add(meth); } return new MethodBuilder(this, meth); } /** * Add method declaration. * * @param name * @param type fully qualified type name or primitive type name, with optional array suffixes * @return method builder */ public MethodBuilder addMethod(String name, String type) { return addMethod(name, m_source.createType(type)); } /** * Create internal member method call builder. * * @param mname method name * @return builder */ public InvocationBuilder createMemberMethodCall(String mname) { MethodInvocation methcall = getAST().newMethodInvocation(); methcall.setName(getAST().newSimpleName(mname)); return new InvocationBuilder(this, methcall); } /** * Create internal static method call builder. * * @param mname method name * @return builder */ public InvocationBuilder createLocalStaticMethodCall(String mname) { MethodInvocation methcall = getAST().newMethodInvocation(); methcall.setName(getAST().newSimpleName(mname)); return new InvocationBuilder(this, methcall); } /** * Create a static method call builder. * * @param cname fully qualified class name * @param mname method name * @return builder */ public InvocationBuilder createStaticMethodCall(String cname, String mname) { MethodInvocation methcall = getAST().newMethodInvocation(); methcall.setExpression(getAST().newName(cname)); methcall.setName(getAST().newSimpleName(mname)); return new InvocationBuilder(this, methcall); } /** * Create a static method call builder. * * @param fname fully-qualified class and method name * @return builder */ public InvocationBuilder createStaticMethodCall(String fname) { int split = fname.lastIndexOf('.'); return createStaticMethodCall(fname.substring(0, split), fname.substring(split+1)); } /** * Create method call builder on a local variable or field value. * * @param name local variable or field name * @param mname method name * @return builder */ public InvocationBuilder createNormalMethodCall(String name, String mname) { MethodInvocation methcall = getAST().newMethodInvocation(); methcall.setExpression(getAST().newSimpleName(name)); methcall.setName(getAST().newSimpleName(mname)); return new InvocationBuilder(this, methcall); } /** * Create method call builder on the reference result of an expression. * * @param expr instance expression * @param mname method name * @return builder */ public InvocationBuilder createExpressionMethodCall(ExpressionBuilderBase expr, String mname) { MethodInvocation methcall = getAST().newMethodInvocation(); methcall.setExpression(expr.getExpression()); methcall.setName(getAST().newSimpleName(mname)); return new InvocationBuilder(this, methcall); } /** * Build general infix expression. * * @param op operator * @return expression */ public InfixExpressionBuilder buildInfix(Operator op) { InfixExpression infixex = getAST().newInfixExpression(); infixex.setOperator(op); return new InfixExpressionBuilder(this, infixex); } /** * Build infix expression involving a local variable or field name as the left operand. * * @param name local variable or field name * @param op operator * @return expression */ public InfixExpressionBuilder buildNameOp(String name, Operator op) { InfixExpression infixex = getAST().newInfixExpression(); infixex.setOperator(op); return new InfixExpressionBuilder(this, infixex, getAST().newSimpleName(name)); } /** * Build a string concatenation expression starting from from a string literal. * * @param text literal text * @return string concatenation expression */ public InfixExpressionBuilder buildStringConcatenation(String text) { InfixExpression expr = getAST().newInfixExpression(); StringLiteral strlit = getAST().newStringLiteral(); strlit.setLiteralValue(text); expr.setOperator(Operator.PLUS); return new InfixExpressionBuilder(this, expr, strlit); } /** * Build a preincrement expression using a local variable or field name as the operand. * * @param name local variable or field name * @return expression */ public PrefixExpressionBuilder buildPreincrement(String name) { PrefixExpression prefixex = getAST().newPrefixExpression(); prefixex.setOperator(PrefixExpression.Operator.INCREMENT); return new PrefixExpressionBuilder(this, prefixex, getAST().newSimpleName(name)); } /** * Build a cast expression. * * @param type result type * @return expression */ public CastBuilder buildCast(Type type) { CastExpression castex = getAST().newCastExpression(); castex.setType(type); return new CastBuilder(this, castex); } /** * Build a cast expression. * * @param type result type * @return expression */ public CastBuilder buildCast(String type) { return buildCast(createType(type)); } /** * Build array access expression for a named array variable and named index variable. * * @param aname * @param iname * @return array access */ public ArrayAccessBuilder buildArrayIndexAccess(String aname, String iname) { ArrayAccess access = getAST().newArrayAccess(); access.setArray(getAST().newSimpleName(aname)); access.setIndex(getAST().newSimpleName(iname)); return new ArrayAccessBuilder(this, access); } /** * Create a new block. * * @return block builder */ public BlockBuilder newBlock() { return new BlockBuilder(this, getAST().newBlock()); } /** * Finish building the source file data structures. */ public void finish() { if (m_class instanceof AbstractTypeDeclaration) { List decls = ((AbstractTypeDeclaration)m_class).bodyDeclarations(); decls.addAll(m_fields); decls.addAll(m_methods); for (int i = 0; i < m_innerBuilders.size(); i++) { ClassBuilder builder = (ClassBuilder)m_innerBuilders.get(i); builder.finish(); decls.add(builder.m_class); } } } /** * Get a sorted array of the field names and types defined in this class. * * @return sorted pairs */ public StringPair[] getSortedFields() { StringPair[] pairs = new StringPair[m_fields.size()]; for (int i = 0; i < m_fields.size(); i++) { FieldDeclaration field = (FieldDeclaration)m_fields.get(i); String name = ((VariableDeclarationFragment)field.fragments().get(0)).getName().toString(); pairs[i] = new StringPair(name, field.getType().toString()); } Arrays.sort(pairs); return pairs; } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/ClassHolder.java0000644000175000017500000012174411017732434025440 0ustar moellermoeller/* * Copyright (c) 2006-2008, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import java.io.StringWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import java.util.Set; import java.util.TreeSet; import org.apache.log4j.Logger; import org.jibx.binding.classes.ClassItem; import org.jibx.binding.generator.UniqueNameSet; import org.jibx.binding.model.BindingHolder; import org.jibx.runtime.BindingDirectory; import org.jibx.runtime.IBindingFactory; import org.jibx.runtime.IMarshallable; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.schema.INamed; import org.jibx.schema.SchemaUtils; import org.jibx.schema.elements.AnnotatedBase; import org.jibx.schema.elements.SchemaBase; import org.jibx.schema.elements.SchemaElement; import org.jibx.schema.support.LazyList; /** * Information for a class to be included in code generated from schema. * * @author Dennis M. Sosnoski */ public abstract class ClassHolder { // collection constants protected static final String COLLECTION_INSTANCE_TYPE = "java.util.ArrayList"; protected static final String COLLECTION_VARIABLE_TYPE = "java.util.List"; protected static final String COLLECTION_VARIABLE_NAME = "list"; // general definitions used in binding code generation // protected static final String STATIC_UNMARSHAL_METHOD = "_unmarshal_if_present"; // protected static final String STRUCTURE_INTERFACE = "org.jibx.v2.MappedStructure"; // protected static final String MARSHAL_METHOD = "_marshal"; // protected static final String WRITER_TYPE = "org.jibx.v2.XmlWriter"; // protected static final String WRITER_VARNAME = "wrtr"; // protected static final String UNMARSHAL_METHOD = "_unmarshal"; // protected static final String QNAME_TYPE = "org.jibx.runtime.QName"; // protected static final String TYPE_INTERFACE = "org.jibx.v2.MappedType"; // protected static final String TYPE_NAME_METHOD = "_get_type_qname"; // protected static final String TYPE_NAME_VARIABLE = "_type_name"; // protected static final String ELEMENT_INTERFACE = "org.jibx.v2.MappedElement"; // protected static final String ELEMENT_NAME_METHOD = "_get_element_qname"; // protected static final String ELEMENT_NAME_VARIABLE = "_element_name"; // protected static final String INSTANCE_VARNAME = "inst"; // reader definitions // protected static final String READER_TYPE = "org.jibx.v2.XmlReader"; // protected static final String READER_VARNAME = "rdr"; // protected static final String READER_CHECK_START_TAG_METHOD = "checkStartTag"; // TODO: make these customization flags protected static final boolean USE_COLLECTIONS = true; protected static final boolean USE_GENERIC_TYPES = false; protected static final boolean INCLUDE_SCHEMA_COMMENTS = true; protected static final boolean USE_JAVA5_ENUM = false; protected static final boolean IMPLEMENT_SERIALIZABLE = false; protected static final boolean EXTRA_COLLECTION_METHODS = true; protected static final boolean USE_SELECTION_SET_METHODS = true; public static final boolean FORCE_COLLECTION_WRAPPER = false; public static final boolean TRIM_COMMON_SUFFIXES = false; public static final boolean ADD_GLOBAL_ELEMENTS = false; // protected static final boolean USE_COLLECTIONS = true; // protected static final boolean USE_GENERIC_TYPES = true; // protected static final boolean INCLUDE_SCHEMA_COMMENTS = true; // protected static final boolean USE_JAVA5_ENUM = true; // protected static final boolean IMPLEMENT_SERIALIZABLE = true; // protected static final boolean EXTRA_COLLECTION_METHODS = true; // protected static final boolean USE_SELECTION_SET_METHODS = true; // public static final boolean FORCE_COLLECTION_WRAPPER = false; // public static final boolean TRIM_COMMON_SUFFIXES = false; // public static final boolean ADD_GLOBAL_ELEMENTS = true; // different categories of class generation // private static final int NONBOUND_CLASS = 0; // private static final int TYPE_CLASS = 1; // private static final int ELEMENT_CLASS = 2; // private static final int STRUCTURE_CLASS = 3; private static final IMarshallingContext s_schemaMarshaller; static { try { if (INCLUDE_SCHEMA_COMMENTS) { IBindingFactory factory = BindingDirectory.getFactory(SchemaElement.class); s_schemaMarshaller = factory.createMarshallingContext(); s_schemaMarshaller.setIndent(2, "\n * ", ' '); } else { s_schemaMarshaller = null; } } catch (JiBXException e) { throw new IllegalStateException("Internal error - unable to access schema binding: " + e.getMessage()); } } /** Logger for class. */ private static final Logger s_logger = Logger.getLogger(ClassHolder.class.getName()); // // Private instance data. /** Simple class name. */ private final String m_name; /** Package containing class. */ protected final PackageHolder m_package; /** Fully-qualified class name. */ private final String m_fullName; /** Class name as used for binding (with '$' marker for inner class). */ private final String m_bindingName; /** Set of imported classes. */ private final TreeSet m_importedTypes; /** Map from simple names of imported types to full names. */ private final Map m_unqualifiedTypes; /** Schema namespace for component associated with class. */ private String m_namespaceUri; /** Superclass to be extended. */ private ClassHolder m_superClass; /** Class generated flag. */ private boolean m_generated; /** Builder for class. */ private ClassBuilder m_classBuilder; // // Data shared with subclasses. /** Name conversion handler. */ protected final NameConverter m_nameConverter; /** Base class name (for use when generating separate classes for nested structures). */ protected final String m_baseName; /** Use inner classes for substructures flag. */ protected final boolean m_useInnerClasses; /** Holders for inner classes defined within this class (null if an inner class). */ protected final LazyList m_inners; /** Containing class (null if not an inner class). */ protected final ClassHolder m_outerClass; /** Value names used in class. */ protected UniqueNameSet m_nameSet; /** * Constructor. * * @param name class name * @param base base class name * @param pack package information * @param nconv name converter * @param inner use inner classes for substructures */ public ClassHolder(String name, String base, PackageHolder pack, NameConverter nconv, boolean inner) { m_package = pack; m_nameConverter = nconv; m_name = name; m_baseName = base; StringBuffer buff = new StringBuffer(); buff.append(pack.getName()); if (buff.length() > 0) { buff.append('.'); } buff.append(name); m_fullName = m_bindingName = buff.toString(); m_useInnerClasses = inner; m_importedTypes = new TreeSet(); m_unqualifiedTypes = new HashMap(); m_outerClass = null; m_inners = new LazyList(); m_nameSet = new UniqueNameSet(); m_nameSet.add(name); addLocalType(name, m_fullName); } /** * Constructor for creating a child inner class definition. * * @param name class name * @param context parent class */ protected ClassHolder(String name, ClassHolder context) { m_package = context.m_package; m_nameConverter = context.m_nameConverter; m_name = name; m_baseName = null; m_fullName = context.m_fullName + '.' + name; m_bindingName = context.m_bindingName + '$' + name; m_useInnerClasses = true; m_importedTypes = context.m_importedTypes; m_unqualifiedTypes = context.m_unqualifiedTypes; m_outerClass = context; m_inners = new LazyList(); m_nameSet = new UniqueNameSet(context.m_nameSet); addLocalType(name, m_fullName); m_package.addInnerClass(this); } /** * Derive group names from the containing group prefix and the simple name of the group. * * @param group * @param container (null if none) * @return name */ // static String deriveGroupName(GroupItem group, Group container) { // String prefix = null; // if (container != null) { // prefix = group.getClassName(); // String prior = container.getPrefix(); // if (prior == null) { // prefix = NameConverter.toNameLead(prefix); // } else { // prefix = prior + NameConverter.toNameWord(prefix); // } // prefix = container.uniqueChildPrefix(prefix); // } // return prefix; // } /** * Import the type associated with an item, if not directly accessible * * @param value */ protected void importValueType(Value value) { String type = value.getType(); if (type != null) { while (type.endsWith("[]")) { type = type.substring(0, type.length()-2); } if (!ClassItem.isPrimitive(type)) { ClassHolder outer = this; while (outer.m_outerClass != null) { outer = outer.m_outerClass; } if (!type.startsWith(outer.getFullName())) { addImport(type, false); } } } } /** * Convert an item structure to a class representation. This may include creating child classes, where necessary. * * @param group */ public abstract void createStructure(GroupItem group); /** * Set the schema namespace for the component associated with this class. * * @param uri */ protected void setNamespace(String uri) { m_namespaceUri = uri; } /** * Get the schema namespace for the component associated with this class. * * @return uri */ protected String getNamespace() { return m_namespaceUri; } /** * Get containing package. * * @return package */ public PackageHolder getPackage() { return m_package; } /** * Get simple name. * * @return name */ public String getName() { return m_name; } /** * Get fully-qualified name. * * @return name */ public String getFullName() { return m_fullName; } /** * Get fully-qualified name as used in binding. This differs from the standard fully-qualified name in that it uses * '$' rather than '.' to delimit inner class names. * * @return name */ public String getBindingName() { return m_bindingName; } /** * Get base class to be extended. * * @return base (null if none) */ public ClassHolder getSuperClass() { return m_superClass; } /** * Set superclass to be extended. * * @param sclas (null if none) */ public void setSuperClass(ClassHolder sclas) { m_superClass = sclas; if (sclas != null) { boolean imported = addImport(sclas.getFullName(), false); if (s_logger.isDebugEnabled()) { s_logger.debug("Set superclass of " + getFullName() + " to " + sclas.getFullName() + (imported ? " (imported)" : "")); } } } /** * Add local definition name to those visible in class. If the name conflicts with an import, the import is removed * to force fully-qualified references. * * @param name simple class name * @param fqname fully qualified class name */ protected void addLocalType(String name, String fqname) { // check for conflict with current import String prior = (String)m_unqualifiedTypes.get(name); if (prior != null) { if (!fqname.equals(prior)) { m_importedTypes.remove(prior); } } // add name to unqualified types m_unqualifiedTypes.put(name, fqname); } /** * Add import for class. If the requested import doesn't conflict with the current set it's added. * * @param fqname fully qualified class name * @param force force replacement of current import * @return true if added as import */ protected boolean addImport(String fqname, boolean force) { if (m_importedTypes.contains(fqname) || m_unqualifiedTypes.containsKey(fqname)) { return true; } else { // get simple class name boolean auto = false; String sname = fqname; int split = sname.lastIndexOf('.'); if (split >= 0) { sname = sname.substring(split+1); auto = "java.lang".equals(fqname.substring(0, split)); } // check for conflict with current import preventing addition if (m_unqualifiedTypes.containsKey(sname) && !(split < 0 || auto || force)) { return false; } // add import for type (overriding old import, if any) m_unqualifiedTypes.put(sname, fqname); if (split >= 0 && !fqname.substring(0, split).equals(m_package.getName())) { m_importedTypes.add(fqname); } return true; } } /** * Check if type needs qualified references. * * @param fqname fully qualified class name * @return true if needs qualification */ public boolean isQualified(String fqname) { return !m_importedTypes.contains(fqname); } /** * Get the imports defined for this class. In the case of inner classes, the set used (and returned by this method) * is that of the containing class. * * @return imports */ public Set getImports() { return m_importedTypes; } /** * Get the map from unqualified type names to fully qualified names used by this class. In the case of inner * classes, the map used (and returned by this method) is that of the containing class. * * @return imports */ public Map getUnqualifieds() { return m_unqualifiedTypes; } /** * Check if the class has been generated. This should always be called before calling {@link * #generate(SourceBuilder, BindingHolder)}, in order to prevent multiple generation passes over the same class. * * @return true if generated, false if not */ public boolean isGenerated() { return m_generated; } /** * Set the builder for this class. * * @param builder */ protected void setBuilder(ClassBuilder builder) { m_classBuilder = builder; } /** * Get the builder for this class. * * @return builder */ protected ClassBuilder getBuilder() { return m_classBuilder; } /** * Initialize the class construction. This is a support method for use by subclasses, which handles common setup * including superclass generation. The {@link #setBuilder(ClassBuilder)} method must be called before this method * is called. * * @param claswrap wrapper for values * @param holder binding holder */ protected void initClass(Wrapper claswrap, BindingHolder holder) { // make sure the builder has been set if (m_classBuilder == null) { throw new IllegalStateException("Internal error - need to set class builder before initializing class construction."); } // add serializable necessities if requested if (IMPLEMENT_SERIALIZABLE) { m_classBuilder.addInterface("java.io.Serializable"); FieldBuilder serialfield = m_classBuilder.addField("serialVersionUID", "long"); serialfield.setPrivateStaticFinal(); serialfield.setNumberInitializer("1L"); } // include schema in class comment if enabled and top-level class // TODO: include inlined component definitions AnnotatedBase comp = claswrap.getSchemaComponent(); if (INCLUDE_SCHEMA_COMMENTS && m_outerClass == null) { StringWriter writer = new StringWriter(); try { ArrayList decls = comp.getParent().getNamespaceDeclarations(); for (int i = 0; i < decls.size(); i++) { comp.addNamespaceDeclaration((String)decls.get(i), (String)decls.get(++i)); } s_schemaMarshaller.setOutput(writer); ((IMarshallable)comp).marshal(s_schemaMarshaller); s_schemaMarshaller.endDocument(); m_classBuilder.addSourceComment(writer.toString()); } catch (JiBXException e) { s_logger.debug("Error marshalling component to create schema", e); } } // force generation of superclass, and include all names from that // TODO: maintain separate name list for those which are public/protected, vs. private if (m_superClass != null) { BindingHolder superhold = holder.getDirectory().getBinding(m_superClass.getNamespace()); m_superClass.getPackage().generate(m_superClass, superhold, m_classBuilder.getAST()); m_nameSet.addAll(m_superClass.m_nameSet); } // set flag to avoid re-generation m_generated = true; } /** * Generate any inner classes of this class. * * @param builder class source file builder * @param holder binding holder */ protected void generateInner(SourceBuilder builder, BindingHolder holder) { for (int i = 0; i < m_inners.size(); i++) { ((ClassHolder)m_inners.get(i)).generate(builder, holder); } } /** * Generate this class. Subclasses must implement this method to first do the appropriate setup and then call * {@link #initClass(org.jibx.schema.codegen.ClassHolder.Wrapper, BindingHolder)} before doing their own code * generation. * * @param builder class source file builder * @param holder binding holder */ public abstract void generate(SourceBuilder builder, BindingHolder holder); /** * Information for a simple value item within the class definition. Group items use the {@link Wrapper} subclass for * extended behavior. */ protected static class Value { /** Associated item. */ private final Item m_item; /** Containing group (null if none defined, only allowed for item corresponding to class). */ private final Wrapper m_container; /** Flag for an optional item. */ private final boolean m_optional; /** Flag for a collection item. */ private final boolean m_collection; /** Element or attribute name flag. */ private final boolean m_named; /** Value type name. */ private final String m_type; /** Flag for name value used in binding. There needs to be one and only one binding component for each element or attribute name, but that component can sometimes be at different levels of the binding. This tracks whether the name (if any) has been used yet. */ private boolean m_nameUsed; /** Selection value name (only used with group selectors, null if no selector for group). */ private String m_selectValue; /** Field name for value (null if no field). */ private String m_fieldName; /** Get-method name for value (null if no get-method). */ private String m_getMethodName; /** Set-method name for value (null if no set-method). */ private String m_setMethodName; /** * Constructor. This automatically links to the containing group, and modifies the itme name to use the group * prefix (if any). * * @param item * @param container */ public Value(Item item, Wrapper container) { m_item = item; // boolean optional = item.isOptional(); // boolean collection = item.isCollection(); boolean optional = item.getComponentExtension().isOptional(); boolean collection = item.getComponentExtension().isRepeated(); m_container = container; AnnotatedBase comp = item.getSchemaComponent(); if (container != null) { if (!optional && comp.type() == SchemaBase.ELEMENT_TYPE) { container.forceDefinite(); } // if (((GroupItem)container.getItem()).isInline()) { // optional = optional || container.isOptional(); // collection = collection || container.isCollection(); // } } m_optional = optional; m_collection = collection; int comptype = comp.type(); m_named = (comptype == SchemaBase.ATTRIBUTE_TYPE || comptype == SchemaBase.ELEMENT_TYPE) && ((INamed)comp).getName() != null; String type = null; if (item instanceof GroupItem) { if (!((GroupItem)item).isInline()) { // group item as value will always be a reference to the group class type = ((GroupItem)item).getGenerateClass().getFullName(); } } else if (item instanceof ReferenceItem) { // reference item as value will always be a reference to the definition class type = ((ReferenceItem)item).getDefinition().getGenerateClass().getFullName(); } else { // value item will always be a primitive or wrapper value JavaType jtype = ((ValueItem)item).getType(); type = jtype.getPrimitiveName(); if (type == null || optional || collection) { type = jtype.getClassName(); } } m_type = type; if (container != null) { container.addValue(this); } } /** * Adjust name based on group nesting. * TODO: needs switch to control */ // public void adjustName() { // if (!m_item.isFixedName() && m_container != null) { // String prefix = m_container.getPrefix(); // if (prefix != null) { // m_item.setName(prefix + NameConverter.toNameWord(m_item.getEffectiveName())); // } // } // } /** * Get associated item. * * @return item */ public Item getItem() { return m_item; } /** * Get the associated schema component. * * @return component */ public AnnotatedBase getSchemaComponent() { return m_item.getSchemaComponent(); } /** * Get containing wrapper. * * @return container */ public Wrapper getWrapper() { return m_container; } /** * Check if value is optional. * * @return optional */ public boolean isOptional() { return m_optional; } /** * Check if a collection value. * * @return true if collection */ public boolean isCollection() { return m_collection; } /** * Check if a list value. * * @return true if list */ public boolean isList() { return m_item.getSchemaComponent().type() == SchemaBase.LIST_TYPE; } /** * Check if a named (element or attribute) value. * * @return true if named */ public boolean isNamed() { return m_named; } /** * Check if the name associated with the component has been represented in the binding. * * @return true if already used, false if not */ public boolean isNameUsed() { return m_nameUsed; } /** * Set flag for name associated with the component has been represented in the binding. * * @param used true if already used, false if not */ public void setNameUsed(boolean used) { m_nameUsed = used; } /** * Get the value type name. * * @return type (null if no type associated with value, only on group) */ public String getType() { return m_type; } /** * Get selection value name. This is only used with group selectors, and is null if the containing * group does not use a selector. * * @return name (null if no selector for group) */ public String getSelectValue() { return m_selectValue; } /** * Set selection value name. This is only used with group selectors. * * @param name (null if no selector for group) */ public void setSelectValue(String name) { m_selectValue = name; } /** * Get field name used for value. * * @return name (null if no field) */ public String getFieldName() { return m_fieldName; } /** * Set field name used for value. * * @param name (null if no field) */ public void setFieldName(String name) { m_fieldName = name; } /** * Get get-method name used for value. * * @return name (null if no get-method) */ public String getGetMethodName() { return m_getMethodName; } /** * Set get-method name used for value. * * @param name (null if no get-method) */ public void setGetMethodName(String name) { m_getMethodName = name; } /** * Get set-method name used for value. * * @return name (null if no set-method) */ public String getSetMethodName() { return m_setMethodName; } /** * Set set-method name used for value. * * @param name (null if no set-method) */ public void setSetMethodName(String name) { m_setMethodName = name; } /** * Print the value description. * * @param depth current nesting depth * @return description */ public String describe(int depth) { StringBuffer buff = new StringBuffer(depth + 40); buff.append(SchemaUtils.getIndentation(depth)); if (isOptional()) { buff.append("optional "); } if (isCollection()) { buff.append("collection "); } buff.append("value "); buff.append(m_item.getName()); buff.append(" of type "); buff.append(m_type); buff.append(" for schema component "); buff.append(SchemaUtils.describeComponent(m_item.getSchemaComponent())); if (m_selectValue != null) { buff.append(" (selection "); buff.append(m_selectValue); buff.append(')'); } return buff.toString(); } } /** * Information for a wrapper around one or more values within the class definition. Depending on the type of * wrapper a selector field may be used to track which of a set of alternatives is actually present. * TODO: should probably really be three separate classes, SimpleValue, CollectionValue, and WrapperValue */ protected static class Wrapper extends Value { /** Selector field needed for group flag. Selector fields are used with mutually exclusive alternatives. */ private final boolean m_selectorNeeded; /** Definite group flag. A definite group is one which always represents at least one element in a document. */ private boolean m_definite; // TODO: is this the right place for the above? this should be used by the code generation to check when an // alternative within a can be inlined, which means it should go into GroupItem /** Prefix for all contained value names (null if none used). */ private final String m_prefix; /** Values in this group. */ private final ArrayList m_values; /** Nameset for prefixes used by child groups (lazy create, null if not used). */ private UniqueNameSet m_nameset; /** Field name for selector */ private String m_selectField; /** Method name for selection set method. */ private String m_selectMethod; /** * Constructor. This derives the prefix used for all contained value names by appending the class name set for * this group to the prefix used for the containing group. * * @param group * @param container */ public Wrapper(GroupItem group, Wrapper container) { super(group, container); String prefix = NameConverter.toNameWord(group.getEffectiveClassName()); // TODO: this really should be a separate pass to handle fixed class names m_prefix = prefix; int type = group.getSchemaComponent().type(); boolean select = type == SchemaBase.CHOICE_TYPE || type == SchemaBase.UNION_TYPE; if (select) { select = container == null || container.getSchemaComponent() != group.getSchemaComponent(); if (group.getChildCount() <= 1) { select = false; } } m_selectorNeeded = select; m_values = new ArrayList(); } /** * Check if a selector field is required for this group. * * @return selector */ public boolean isSelectorNeeded() { return m_selectorNeeded; } /** * Adjust name based on group nesting. This has special handling for the case of <sequence> compositors, * substituting the name of the first value in the sequence for the value name if a fixed name has not been * assigned to the sequence. */ public void adjustName() { Item item = getItem(); if (!item.isFixedName()) { if (item.getSchemaComponent().type() == SchemaBase.SEQUENCE_TYPE) { if (m_values.size() > 0) { item.setName(((Value)m_values.get(0)).getItem().getEffectiveName()); } } // TODO: make the inheritance of names controlled by a flag // Group container = getContainer(); // if (container != null) { // String prefix = container.getPrefix(); // if (prefix != null) { // name = prefix + NameConverter.toNameWord(item.getName()); // } // } } } /** * Get prefix for value names in group. * * @return prefix (null if none used) */ public String getPrefix() { return m_prefix; } /** * Add a value (which may be another group) to this group. This method is normally only used by the superclass, * when creating a new instance. The instance must be fully initialized before it is added. * * @param value */ protected void addValue(Value value) { m_values.add(value); /* if (value.isNamed()) { AnnotatedBase match = value.getSchemaComponent(); Wrapper wrapper = this; while (wrapper != null && !wrapper.m_nestedName && wrapper.getSchemaComponent() != match) { wrapper.m_nestedName = true; if (wrapper.isNamed()) { match = wrapper.getSchemaComponent(); } wrapper = wrapper.getWrapper(); } } */ } /** * Get values in group. The returned list is "live", but should never be modified. * * @return values */ public ArrayList getValues() { return m_values; } /** * Get selector field name. * * @return name (null if no selector for group) */ public String getSelectField() { return m_selectField; } /** * Set selector field name. * * @param name (null if no selector for group) */ public void setSelectField(String name) { m_selectField = name; } /** * Get selector set method name. * * @return name (null if no selector set method for group) */ public String getSelectMethod() { return m_selectMethod; } /** * Set selector set method name. * * @param name (null if no selector set method for group) */ public void setSelectMethod(String name) { m_selectMethod = name; } /** * Check if this is a "definite" group, meaning it contains at least one required element and hence will always * be present in instance documents. * * @return true if definite, false if not */ public boolean isDefinite() { return m_definite; } /** * Set the indication for a "definite" group. * */ protected void forceDefinite() { m_definite = true; } /** * Check if this is a collection wrapper. This is an ugly sort of test, but necessary so that the binding * generation can determine whether to create a <structure> element or a <collection> element to represent * the values in this wrapper. * * @return true if a collection wrapper, false if not */ public boolean isCollectionWrapper() { // a collection wrapper has a single child which does not share the same schema component, and either that // child is a simple collection value or is itself a collection wrapper if (m_values.size() == 1) { Value value = (Value)m_values.get(0); if (value.getSchemaComponent() != getSchemaComponent()) { if (value instanceof Wrapper) { return ((Wrapper)value).isCollectionWrapper(); } else { return value.isCollection(); } } } return false; } /** * Generate the group description. * * @param depth current nesting depth * @return description */ public String describe(int depth) { StringBuffer buff = new StringBuffer(depth + 40); buff.append(SchemaUtils.getIndentation(depth)); if (isOptional()) { buff.append("optional "); } if (isCollection()) { buff.append("collection "); } buff.append("wrapper "); buff.append(getItem().getName()); if (m_selectorNeeded) { buff.append(" (with selector)"); } buff.append(" for schema component "); buff.append(SchemaUtils.describeComponent(getItem().getSchemaComponent())); for (int i = 0; i < m_values.size(); i++) { buff.append('\n'); Value value = (Value)m_values.get(i); buff.append(value.describe(depth+1)); } return buff.toString(); } } /** * Builder for an unmarshalling presence test method. This is based around the structure of a schema sequence, which * may have any number of mixed required and optional elements. The presence test checks if the current element name * matches one of those in the sequence up to and including the first required element name. */ // private class UnmarshalPresenceTestBuilder // { // /** Builder for the logical or expression. */ // private final InfixExpressionBuilder m_expression; // // /** Implicit namespace in use at point of evaluation. */ // private final String m_implicitNamespace; // // /** Expression completed flag (set when a required element is added to expression). */ // private boolean m_complete; // // /** // * Constructor. // * // * @param implns implicit namespace in use at point of evaluation // */ // public UnmarshalPresenceTestBuilder(String implns) { // m_expression = m_classBuilder.buildInfix(Operator.OR); // m_implicitNamespace = implns; // } // // /** // * Add an element to the presence test expression. If the expression is already complete (with a required // * element found), the call is ignored. // * // * @param ns // * @param name // * @param required // */ // public void addElement(String ns, String name, boolean required) { // if (!m_complete) { // InvocationBuilder call = m_classBuilder.createNormalMethodCall(READER_VARNAME, // READER_CHECK_START_TAG_METHOD); // if ((m_implicitNamespace == null && ns != null) || // (m_implicitNamespace != null && !m_implicitNamespace.equals(ns))) { // call.addStringLiteralOperand(ns); // } // call.addStringLiteralOperand(name); // m_expression.addOperand(call); // if (required) { // m_complete = true; // } // } // } // // /** // * Get the expression. // * // * @return expression // */ // public InfixExpressionBuilder getExpression() { // return m_expression; // } // } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/CodeGenerator.java0000644000175000017500000020436611017732434025760 0ustar moellermoeller/* * Copyright (c) 2007-2008, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import java.io.BufferedWriter; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileWriter; import java.io.FilenameFilter; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.Map; import java.util.Set; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.eclipse.jdt.core.dom.AST; import org.jibx.binding.model.BindingDirectory; import org.jibx.binding.model.BindingHolder; import org.jibx.binding.model.ElementBase; import org.jibx.binding.model.FormatElement; import org.jibx.binding.model.MappingElement; import org.jibx.binding.model.StructureElement; import org.jibx.extras.DocumentComparator; import org.jibx.runtime.IBindingFactory; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.QName; import org.jibx.runtime.impl.UnmarshallingContext; import org.jibx.schema.INamed; import org.jibx.schema.SchemaUtils; import org.jibx.schema.SchemaVisitor; import org.jibx.schema.TreeWalker; import org.jibx.schema.UrlResolver; import org.jibx.schema.codegen.custom.ComponentExtension; import org.jibx.schema.codegen.custom.GlobalExtension; import org.jibx.schema.codegen.custom.SchemaCustom; import org.jibx.schema.codegen.custom.SchemasetCustom; import org.jibx.schema.elements.AnnotatedBase; import org.jibx.schema.elements.CommonTypeDerivation; import org.jibx.schema.elements.ComplexTypeElement; import org.jibx.schema.elements.ElementElement; import org.jibx.schema.elements.FilteredSegmentList; import org.jibx.schema.elements.OpenAttrBase; import org.jibx.schema.elements.SchemaBase; import org.jibx.schema.elements.SchemaElement; import org.jibx.schema.elements.SchemaLocationBase; import org.jibx.schema.elements.SimpleRestrictionElement; import org.jibx.schema.elements.UnionElement; import org.jibx.schema.support.LazyList; import org.jibx.schema.support.SchemaTypes; import org.jibx.schema.validation.PrevalidationVisitor; import org.jibx.schema.validation.RegistrationVisitor; import org.jibx.schema.validation.ValidationContext; import org.jibx.schema.validation.ValidationProblem; import org.jibx.schema.validation.ValidationVisitor; import org.jibx.util.InsertionOrderedSet; import org.xmlpull.v1.XmlPullParserException; /** * Code generator from schema definition. */ public class CodeGenerator { /** Logger for class. */ private static final Logger s_logger = Logger.getLogger(CodeGenerator.class.getName()); /** Default type replacements applied. */ private static final QName[] DEFAULT_REPLACEMENTS = new QName[] { SchemaTypes.ANY_URI.getQName(), SchemaTypes.STRING.getQName(), SchemaTypes.DURATION.getQName(), SchemaTypes.STRING.getQName(), SchemaTypes.ENTITIES.getQName(), SchemaTypes.STRING.getQName(), SchemaTypes.ENTITY.getQName(), SchemaTypes.STRING.getQName(), SchemaTypes.GDAY.getQName(), SchemaTypes.STRING.getQName(), SchemaTypes.GMONTH.getQName(), SchemaTypes.STRING.getQName(), SchemaTypes.GMONTHDAY.getQName(), SchemaTypes.STRING.getQName(), SchemaTypes.GYEAR.getQName(), SchemaTypes.STRING.getQName(), SchemaTypes.GYEARMONTH.getQName(), SchemaTypes.STRING.getQName(), SchemaTypes.ID.getQName(), SchemaTypes.STRING.getQName(), SchemaTypes.IDREF.getQName(), SchemaTypes.STRING.getQName(), SchemaTypes.IDREFS.getQName(), SchemaTypes.STRING.getQName(), SchemaTypes.LANGUAGE.getQName(), SchemaTypes.STRING.getQName(), SchemaTypes.NAME.getQName(), SchemaTypes.STRING.getQName(), SchemaTypes.NEGATIVE_INTEGER.getQName(), SchemaTypes.INTEGER.getQName(), SchemaTypes.NON_NEGATIVE_INTEGER.getQName(), SchemaTypes.INTEGER.getQName(), SchemaTypes.NON_POSITIVE_INTEGER.getQName(), SchemaTypes.INTEGER.getQName(), SchemaTypes.NORMALIZED_STRING.getQName(), SchemaTypes.STRING.getQName(), SchemaTypes.NCNAME.getQName(), SchemaTypes.STRING.getQName(), SchemaTypes.NMTOKEN.getQName(), SchemaTypes.STRING.getQName(), SchemaTypes.NMTOKENS.getQName(), SchemaTypes.STRING.getQName(), SchemaTypes.NOTATION.getQName(), SchemaTypes.STRING.getQName(), SchemaTypes.POSITIVE_INTEGER.getQName(), SchemaTypes.STRING.getQName(), SchemaTypes.TOKEN.getQName(), SchemaTypes.STRING.getQName(), SchemaTypes.UNSIGNED_BYTE.getQName(), SchemaTypes.BYTE.getQName(), SchemaTypes.UNSIGNED_INT.getQName(), SchemaTypes.INT.getQName(), SchemaTypes.UNSIGNED_LONG.getQName(), SchemaTypes.LONG.getQName(), SchemaTypes.UNSIGNED_SHORT.getQName(), SchemaTypes.SHORT.getQName() }; /** Mask for schema elements which derive from a type. */ private static final long TYPE_DERIVE_MASK = SchemaBase.ELEMENT_MASKS[SchemaBase.EXTENSION_TYPE] | SchemaBase.ELEMENT_MASKS[SchemaBase.RESTRICTION_TYPE]; /** Mask for schema elements which define a type. */ private static final long TYPE_DEFINE_MASK = SchemaBase.ELEMENT_MASKS[SchemaBase.COMPLEXTYPE_TYPE] | SchemaBase.ELEMENT_MASKS[SchemaBase.SIMPLETYPE_TYPE]; /** Mask for schema elements which block name inheritance downward. */ private static final long BLOCK_NAME_INHERIT_MASK = TYPE_DERIVE_MASK | SchemaBase.ELEMENT_MASKS[SchemaBase.UNION_TYPE]; /** Code generation customizations. */ private final SchemasetCustom m_global; /** Root URL for schemas. */ private final URL m_schemaRoot; /** Root directory for schemas. */ private final File m_schemaDir; /** Target directory for code generation. */ private final File m_targetDir; /** Context for loading and processing schemas. */ private final ValidationContext m_validationContext; /** Package directory for generated classes. */ private PackageDirectory m_packageDirectory; /** Definitions to be generated (may be global schema definitions, or reused nested components with classes). */ private ArrayList m_definitions; /** Directory for constructed bindings. */ private BindingDirectory m_bindingDirectory; /** * Constructor. * * @param parms command line parameters */ public CodeGenerator(CodeGeneratorCommandLine parms) { m_global = parms.getCustomRoot(); m_global.setSubstitutions(DEFAULT_REPLACEMENTS); m_schemaRoot = parms.getSchemaRoot(); m_schemaDir = parms.getSchemaDir(); m_targetDir = parms.getGeneratePath(); m_validationContext = new ValidationContext(); } /** * Constructor used by tests. This uses supplied schemas and skips writing to the file system. * * @param custom * @param vctx */ public CodeGenerator(SchemasetCustom custom, ValidationContext vctx) { m_global = custom; m_global.setSubstitutions(DEFAULT_REPLACEMENTS); m_schemaRoot = null; m_schemaDir = null; m_targetDir = null; m_validationContext = vctx; } /** * Find the most specific schemaset owning a schema. If multiple matches are found which are not in line of * containment the first match is returned and the conflict is reported as an error. * * @param schema * @param custom schema set customization * @return owning schemaset, null if none */ private SchemasetCustom findSchemaset(SchemaElement schema, SchemasetCustom custom) { LazyList childs = custom.getChildren(); SchemasetCustom owner = null; String name = schema.getResolver().getName(); for (int i = 0; i < childs.size(); i++) { Object child = childs.get(i); if (child instanceof SchemasetCustom) { SchemasetCustom schemaset = (SchemasetCustom)child; if (schemaset.isInSet(name, schema)) { SchemasetCustom match = findSchemaset(schema, schemaset); if (match != null) { if (owner == null) { owner = match; } else { m_validationContext.addError("schema-set overlap on schema " + name + " (first match " + ValidationProblem.componentDescription(owner) + ')', match); } } } } } return owner == null ? custom : owner; } /** * Validate the schemas. * * @param schemas schemas to be validated */ public void validateSchemas(SchemaElement[] schemas) { // validate the schemas and report any problems TreeWalker wlkr = new TreeWalker(m_validationContext, m_validationContext); s_logger.debug("Beginning schema prevalidation pass"); m_validationContext.clearTraversed(); s_logger.debug("Beginning schema prevalidation pass"); for (int i = 0; i < schemas.length; i++) { wlkr.walkSchema(schemas[i], new PrevalidationVisitor(m_validationContext)); System.out.println("After prevalidation schema " + schemas[i].getResolver().getName() + " has effective namespace " + schemas[i].getEffectiveNamespace()); } s_logger.debug("Beginning schema registration pass"); m_validationContext.clearTraversed(); for (int i = 0; i < schemas.length; i++) { wlkr.walkSchema(schemas[i], new RegistrationVisitor(m_validationContext)); } s_logger.debug("Beginning validation pass"); m_validationContext.clearTraversed(); for (int i = 0; i < schemas.length; i++) { wlkr.walkSchema(schemas[i], new ValidationVisitor(m_validationContext)); System.out.println("After validation schema " + schemas[i].getResolver().getName() + " has effective namespace " + schemas[i].getEffectiveNamespace()); } } /** * Load and validate the root schema list. * * @param list resolvers for schemas to be loaded * @return schemas in validation order * @throws JiBXException on unrecoverable error in schemas * @throws IOException on error reading schemas */ private SchemaElement[] load(ArrayList list) throws JiBXException, IOException { IBindingFactory factory = org.jibx.runtime.BindingDirectory.getFactory(SchemaElement.class); IUnmarshallingContext ictx = factory.createUnmarshallingContext(); int count = list.size(); SchemaElement[] schemas = new SchemaElement[count]; for (int i = 0; i < count; i++) { // unmarshal document to construct schema structure UrlResolver resolver = (UrlResolver)list.get(i); ictx.setDocument(resolver.getContent(), resolver.getName(), null); ictx.setUserContext(m_validationContext); Object obj = ictx.unmarshalElement(); // set resolver for use during schema processing SchemaElement schema = (SchemaElement)obj; schemas[i] = schema; schema.setResolver(resolver); String id = resolver.getId(); m_validationContext.setSchema(id, schema); // verify schema roundtripping if debug enabled if (s_logger.isDebugEnabled()) { try { // determine encoding of input document String enc = ((UnmarshallingContext)ictx).getInputEncoding(); if (enc == null) { enc = "UTF-8"; } // marshal root object back out to document in memory IMarshallingContext mctx = factory.createMarshallingContext(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); mctx.setIndent(2); mctx.marshalDocument(obj, "UTF-8", null, bos); // compare with original input document InputStreamReader brdr = new InputStreamReader(new ByteArrayInputStream(bos.toByteArray()), "UTF-8"); InputStreamReader frdr = new InputStreamReader(resolver.getContent(), enc); ByteArrayOutputStream baos = new ByteArrayOutputStream(); PrintStream pstream = new PrintStream(baos); DocumentComparator comp = new DocumentComparator(pstream); if (comp.compare(frdr, brdr)) { // report schema roundtripped successfully s_logger.debug("Successfully roundtripped schema " + id); } else { // report problems in roundtripping schema s_logger.debug("Errors in roundtripping schema " + id); pstream.flush(); s_logger.debug(baos.toString()); } } catch (XmlPullParserException e) { s_logger.debug("Error during schema roundtripping", e); } } } // to correctly handle namespaces for includes, process namespaced schemas first Set schemaset = new HashSet(count); ArrayList ordereds = new ArrayList(); m_validationContext.clearTraversed(); for (int i = 0; i < count; i++) { SchemaElement schema = schemas[i]; if (schema.getTargetNamespace() != null) { // add namespaced schema to both reached set and processing order list ordereds.add(schema); schemaset.add(schema); // add any child include and imports only to reached set FilteredSegmentList childs = schema.getSchemaChildren(); for (int j = 0; j < childs.size(); j++) { Object child = childs.get(j); if (child instanceof SchemaLocationBase) { schemaset.add(((SchemaLocationBase)child).getReferencedSchema()); } } } } // add any schemas not already covered for (int i = 0; i < count; i++) { SchemaElement schema = schemas[i]; if (!schemaset.contains(schema)) { ordereds.add(schema); } } // add element definitions to schema if requested if (ClassHolder.ADD_GLOBAL_ELEMENTS) { for (int i = 0; i < ordereds.size(); i++) { SchemaElement schema = (SchemaElement)ordereds.get(i); ArrayList elementdefs = new ArrayList(); FilteredSegmentList childs = schema.getTopLevelChildren(); for (int j = 0; j < childs.size(); j++) { SchemaBase child = (SchemaBase)childs.get(j); if (child.type() == SchemaBase.COMPLEXTYPE_TYPE) { ElementElement elementdef = new ElementElement(); String name = ((ComplexTypeElement)child).getName(); elementdef.setType(new QName(schema.getTargetNamespace(), name)); elementdef.setName(name); elementdefs.add(elementdef); } } if (elementdefs.size() > 0) { childs.addAll(elementdefs); s_logger.debug("Added " + elementdefs.size() + " element definitions for complexTypes to schema " + schema.getResolver().getName()); } } } // validate the schemas in order SchemaElement[] ordschemas = (SchemaElement[])ordereds.toArray(new SchemaElement[ordereds.size()]); validateSchemas(ordschemas); return ordschemas; } /** * Validate and apply customizations to loaded schemas. * * @return true if successful, false if error */ public boolean customizeSchemas() { // TODO: remove this once union handling fully implemented SchemaVisitor visitor = new SchemaVisitor() { public void exit(UnionElement node) { OpenAttrBase parent = node.getParent(); int count = parent.getChildCount(); for (int i = 0; i < count; i++) { if (parent.getChild(i) == node) { SimpleRestrictionElement empty = new SimpleRestrictionElement(); empty.setBase(SchemaTypes.STRING.getQName()); parent.replaceChild(i, empty); break; } } } }; TreeWalker wlkr = new TreeWalker(null, null); for (Iterator iter = m_validationContext.iterateSchemas(); iter.hasNext();) { wlkr.walkElement((SchemaElement)iter.next(), visitor); } // validate the customizations m_global.validate(m_validationContext); // create the package directory, using default package from root schemaset String dfltpack = m_global.getPackage(); if (dfltpack == null) { dfltpack = ""; } m_packageDirectory = new PackageDirectory(m_targetDir, dfltpack); // link each schema to a customization, creating a default customization if necessary int count = 0; for (Iterator iter = m_validationContext.iterateSchemas(); iter.hasNext();) { SchemaElement schema = (SchemaElement)iter.next(); s_logger.debug("Assigning customization for schema " + ++count + ": " + schema.getResolver().getName()); SchemasetCustom owner = findSchemaset(schema, m_global); SchemaCustom custom = owner.forceCustomization(schema.getResolver().getName(), schema, m_validationContext); custom.validate(m_validationContext); NameConverter nconv = new NameConverter(); nconv.setDiscardPrefixSet(custom.getStripPrefixes()); nconv.setDiscardSuffixSet(custom.getStripSuffixes()); String pname = custom.getPackage(); PackageHolder holder = null; if (pname == null) { String uri = schema.getEffectiveNamespace(); if (uri == null) { uri = ""; } holder = m_packageDirectory.getPackageForUri(uri); } else { holder = m_packageDirectory.getPackage(pname); } custom.extend(nconv, holder, m_validationContext); } // check all the customizations m_global.checkSchemas(m_validationContext); return !reportProblems(m_validationContext); } /** * Process substitutions and deletions defined by extensions. This builds the cross-reference information for the * global definition components of the schemas while removing references to deleted components. * * @return true if any changes to the schemas, false if not */ private boolean processExtensions() { // first clear all the cross reference information for (Iterator iter = m_validationContext.iterateSchemas(); iter.hasNext();) { SchemaElement schema = (SchemaElement)iter.next(); int count = schema.getChildCount(); for (int i = 0; i < count; i++) { SchemaBase child = schema.getChild(i); Object obj = child.getExtension(); if (obj instanceof GlobalExtension) { ((GlobalExtension)obj).resetDependencies(); } } } // process each loaded schema for deletions and cross referencing int index = 0; m_validationContext.clearTraversed(); boolean modified = false; // Level level = TreeWalker.setLogging(s_logger.getLevel()); for (Iterator iter = m_validationContext.iterateSchemas(); iter.hasNext();) { SchemaElement schema = (SchemaElement)iter.next(); m_validationContext.enterSchema(schema); s_logger.debug("Applying extensions to schema " + ++index + ": " + schema.getResolver().getName()); int count = schema.getChildCount(); boolean instmod = false; for (int i = 0; i < count; i++) { SchemaBase child = schema.getChild(i); Object obj = child.getExtension(); if (obj instanceof GlobalExtension) { // apply extension to global definition element ComponentExtension exten = (ComponentExtension)obj; if (exten.isRemoved()) { // just eliminate this definition from the schema schema.detachChild(i); instmod = true; } else { // process the definition to remove references to deleted components exten.applyAndCountUsage(m_validationContext); } } } if (instmod) { schema.compactChildren(); modified = true; } m_validationContext.exitSchema(); } // TreeWalker.setLogging(level); return modified; } /** * Apply extensions and normalize all schemas. This may be a multipass process, since applying extensions may create * the opportunity for further normalizations and vice versa. */ public void applyAndNormalize() { // loop until no modifications, with at least one pass of extensions and normalizations boolean modified = true; while (processExtensions() || modified) { // normalize all the schema definitions modified = false; for (Iterator iter = m_validationContext.iterateSchemas(); iter.hasNext();) { SchemaElement schema = (SchemaElement)iter.next(); int count = schema.getChildCount(); boolean instmod = false; for (int i = 0; i < count; i++) { SchemaBase child = schema.getChild(i); Object obj = child.getExtension(); if (obj instanceof GlobalExtension) { GlobalExtension global = (GlobalExtension)obj; global.normalize(); if (global.isRemoved()) { // just eliminate this definition from the schema schema.detachChild(i); instmod = true; } } } if (instmod) { schema.compactChildren(); modified = true; } } } // finish by flagging global definitions requiring separate classes for (Iterator iter = m_validationContext.iterateSchemas(); iter.hasNext();) { SchemaElement schema = (SchemaElement)iter.next(); SchemaCustom custom = findSchemaset(schema, m_global).getCustomization(schema.getResolver().getName()); if (custom.isGenerateUnused()) { int count = schema.getChildCount(); for (int i = 0; i < count; i++) { SchemaBase comp = schema.getChild(i); if (comp.type() == SchemaBase.ELEMENT_TYPE || comp.type() == SchemaBase.COMPLEXTYPE_TYPE) { Object obj = comp.getExtension(); if (obj instanceof GlobalExtension) { ((GlobalExtension)obj).setIncluded(true); if (s_logger.isDebugEnabled()) { s_logger.debug("Set include for definition " + SchemaUtils.describeComponent(comp)); } } } } } } } /** * Processes the schemas to remove unused global definitions. */ public void pruneDefinitions() { // start by recursively checking for removable global definitions int index = 0; for (Iterator iter = m_validationContext.iterateSchemas(); iter.hasNext();) { SchemaElement schema = (SchemaElement)iter.next(); s_logger.debug("Checking for unused definitions in schema " + ++index + ": " + schema.getResolver().getName()); int count = schema.getChildCount(); for (int i = 0; i < count; i++) { SchemaBase child = schema.getChild(i); Object exten = child.getExtension(); if (exten instanceof GlobalExtension) { // check if global definition is unused and not specifically required ((GlobalExtension)exten).checkRemovable(); } } } // next remove all the definitions flagged in the first step index = 0; for (Iterator iter = m_validationContext.iterateSchemas(); iter.hasNext();) { SchemaElement schema = (SchemaElement)iter.next(); s_logger.debug("Deleting unused definitions in schema " + ++index + ": " + schema.getResolver().getName()); int count = schema.getChildCount(); boolean modified = false; for (int i = 0; i < count; i++) { SchemaBase child = schema.getChild(i); Object exten = child.getExtension(); if (exten instanceof GlobalExtension && ((ComponentExtension)exten).isRemoved()) { // remove the definition from schema schema.detachChild(i); modified = true; if (s_logger.isDebugEnabled()) { s_logger.debug(" Removed definition " + ((INamed)child).getQName()); } } } if (modified) { schema.compactChildren(); } } } /** * Check if an item has an associated name. If the component associated with the item has a name, this just returns * that name. The only exception is for inlined global type definitions, which are treated as unnamed. * * @param item * @return name associated name, or null if none */ private String checkDirectName(Item item) { AnnotatedBase comp = item.getSchemaComponent(); if (comp instanceof INamed) { // check for an inlined global type definition boolean usename = true; if (comp.isGlobal()) { if ((comp.bit() & TYPE_DEFINE_MASK) != 0 && !(item instanceof DefinitionItem)) { usename = false; } } if (usename) { // use name from schema component String name = ((INamed)comp).getName(); if (name != null) { NameConverter nconv = item.getComponentExtension().getGlobal().getNameConverter(); return nconv.toBaseName(nconv.trimXName(name)); } } } return null; } /** * Derive the base name for an item. If not forced, the only time a name will be returned is when the item is a * reference to a non-type definition. If forced, this will try other alternatives for names including the text * "Enumeration" for an enumeration group, the base type name for a type derivation, the schema type name for a * value of a schema type, or finally the schema component element name. * * @param item * @param force name forced flag * @return name (null if to use inherited name when force == false) */ private String deriveName(Item item, boolean force) { // try alternatives, in decreasing preference order AnnotatedBase comp = item.getSchemaComponent(); String text = null; if (force) { if (item instanceof ReferenceItem) { text = ((ReferenceItem)item).getDefinition().getName(); } else if (item instanceof GroupItem && ((GroupItem)item).isEnumeration()) { text = "Enumeration"; } else if ((TYPE_DERIVE_MASK & comp.bit()) != 0) { text = ((CommonTypeDerivation)comp).getBase().getName(); } else if (item instanceof ValueItem) { text = ((ValueItem)item).getSchemaType().getName(); } else { text = comp.name(); } } else if (item instanceof ReferenceItem && (TYPE_DEFINE_MASK & comp.type()) == 0) { // use name from definition in the case of anything except a type definition text = ((ReferenceItem)item).getDefinition().getName(); } if (text == null) { return null; } else { return item.getComponentExtension().getGlobal().getNameConverter().toBaseName(text); } } /** * Compact group structures. This eliminates redundant groupings, in the form of groups with only one child, which * child is a group referencing the same schema component as the parent group, from the data structure * representation. * * @param group */ private void compactGroups(GroupItem group) { Item child; while (group.getChildCount() == 1 && (child = group.getFirstChild()) instanceof GroupItem && child.getSchemaComponent() == group.getSchemaComponent()) { group.adoptChildren((GroupItem)child); } for (child = group.getFirstChild(); child != null; child = child.getNext()) { if (child instanceof GroupItem) { compactGroups((GroupItem)child); } } } /** * Set the basic names to be used for a structure of items. For named components of the schema definition the names * used are simply the converted XML local names, for other components more complex rules apply (see {@link * #deriveName(Item,boolean)}. This method calls itself recursively to handle nested groups. * * @param group * @param force group name forced flag */ private void assignNames(GroupItem group, boolean force) { // use existing name if set, otherwise derive from context if necessary String name = group.getName(); boolean propagate = group.getChildCount() == 1; if (name == null) { name = checkDirectName(group); if (name == null && force) { propagate = false; name = deriveName(group, true); } } // set name needed for this structure (as either value or class) if (name != null) { if (group.getName() == null) { group.setName(NameConverter.toNameLead(name)); } if (group.getClassName() == null) { group.setClassName(NameConverter.toNameWord(name)); } } // propagate name downward if group is inline and single nested item without its own name Item head = group.getFirstChild(); if (propagate) { // name can be inherited, but continue recursion for child group if (head instanceof GroupItem) { assignNames((GroupItem)head, false); } } else { // process all child items with definite name assignments for (Item item = head; item != null; item = item.getNext()) { if (item instanceof GroupItem) { assignNames((GroupItem)item, true); } else { if (item.getName() == null) { String childname = checkDirectName(item); if (childname == null) { childname = deriveName(item, true); } item.setName(NameConverter.toNameLead(childname)); } } } } } /** * Compute the complexity of a structure. In order to find the complexity of a structure all items of the structure * must first be checked for inlining, which in turn requires checking their complexity. That makes this method * mutually recursive with {@link #checkInline(DefinitionItem, int)}. * * @param group * @param depth nesting depth * @return complexity (0, 1, or 2 for anything more than a single value) */ private int computeComplexity(GroupItem group, int depth) { if (s_logger.isDebugEnabled()) { s_logger.debug(SchemaUtils.getIndentation(depth) + "counting values for " + (group instanceof DefinitionItem ? "definition " : "group ") + SchemaUtils.describeComponent(group.getSchemaComponent())); } // count the actual values in the structure int count = 0; for (Item item = group.getFirstChild(); item != null; item = item.getNext()) { // handle inlining of references if (item instanceof ReferenceItem) { // first make sure the definition has been checked for inlining ReferenceItem reference = (ReferenceItem)item; DefinitionItem definition = reference.getDefinition(); checkInline(definition, depth + 1); if (definition.isInline()) { // convert the reference to an inline copy of the definition item = reference.inlineReference(); if (s_logger.isDebugEnabled()) { s_logger.debug(SchemaUtils.getIndentation(depth) + "converted reference to " + SchemaUtils.describeComponent(definition.getSchemaComponent()) + " to inline group"); } } } // handle actual item count, and inlining of child group (may be new, from converted reference) if (item instanceof GroupItem) { // check count for nested group GroupItem grpitem = (GroupItem)item; int grpcount = computeComplexity(grpitem, depth + 1); // avoid inlining if an enumeration, or an extension reference; or the nested group is optional or a // collection and has more than one item (or a single item which is itself optional or a collection, // which will be counted as multiple items); or the main group is a choice, and the nested group is a // compositor with more than one element, and the first element is optional (or the first element child // of that element, if inlined) boolean inline = true; if (grpitem.isEnumeration() || grpitem.isExtensionReference()) { inline = false; } else if (grpitem.isCollection() || grpitem.isOptional()) { if (grpcount > 1 || ClassHolder.FORCE_COLLECTION_WRAPPER) { inline = false; } else { // must be single child, but block inlining if that child is a collection Item child; GroupItem childgrp = grpitem; while ((child = childgrp.getFirstChild()) instanceof GroupItem) { childgrp = (GroupItem)child; if (childgrp.isCollection()) { inline = false; break; } } } } else if (grpcount > 1 && group.getSchemaComponent().type() == SchemaBase.CHOICE_TYPE) { // assume no inlining, but dig into structure to make sure first non-inlined element is required inline = false; Item child = grpitem.getFirstChild(); while (!child.isOptional()) { if (child.getSchemaComponent().type() == SchemaBase.ELEMENT_TYPE && !(child instanceof GroupItem && ((GroupItem)child).isInline())) { // required element with simple value or separate class, safe to inline inline = true; break; } else if (child instanceof GroupItem) { child = ((GroupItem)child).getFirstChild(); } else { // required reference item, safe to inline inline = true; break; } } } if (inline) { // inline the group grpitem.setInline(true); count += grpcount; if (s_logger.isDebugEnabled()) { s_logger.debug(SchemaUtils.getIndentation(depth) + "inlining " + (grpitem instanceof DefinitionItem ? "definition " : "group ") + SchemaUtils.describeComponent(grpitem.getSchemaComponent()) + " with item count " + count); } } else { // force separate class for group grpitem.setInline(false); count++; } } else { count++; } // bump up the complexity if the item is optional or repeated (optionally inlining collection wrappers) if (item.isOptional() || (ClassHolder.FORCE_COLLECTION_WRAPPER && item.isCollection())) { count++; } } return count > 1 ? 2 : count; } /** * Check if a group consists only of a single non-repeating item, which is not an enumeration. * * @param group * @return true if simple group, false if repeated, multiple, or enumeration */ private boolean isSimple(GroupItem group) { if (group.isEnumeration() || group.getChildCount() > 1) { return false; } else { for (Item item = group.getFirstChild(); item != null; item = item.getNext()) { if (item.isCollection()) { return false; } else if (item instanceof GroupItem && !isSimple((GroupItem)item)) { return false; } } return true; } } /** * Check if a global definition structure is to be inlined. This method is mutually recursive with {@link * #computeComplexity(GroupItem, int)}. The two methods together determine the inlining status of all items. * * @param definition * @param depth nesting depth */ private void checkInline(DefinitionItem definition, int depth) { if (!definition.isChecked()) { // initially say it won't be inlined, to avoid issues with circular references boolean forceinline = definition.isInline(); definition.setInline(false); definition.setChecked(true); if (s_logger.isDebugEnabled()) { s_logger.debug(SchemaUtils.getIndentation(depth) + "checking inlining of definition " + SchemaUtils.describeComponent(definition.getSchemaComponent()) + (definition.isInlineBlocked() ? " (inlining blocked)" : "")); } // inline references where appropriate, and count the values defined int count = computeComplexity(definition, depth); if (!definition.isInlineBlocked() && (forceinline || (count == 1 && isSimple(definition)) || definition.getReferenceCount() == 1)) { // set state as inlined definition.setInline(true); if (s_logger.isDebugEnabled()) { s_logger.debug(SchemaUtils.getIndentation(depth) + "inlining definition " + SchemaUtils.describeComponent(definition.getSchemaComponent()) + " with item count " + count); } // convert non-inlined child components to definitions if multiple use if (definition.getReferenceCount() > 1) { convertToDefinitions(definition); } } } } /** * Convert nested groups which are not inlined to freestanding definitions. This calls itself recursively to process * nested groups, except those nested within groups converted to definitions. * * @param group */ private void convertToDefinitions(GroupItem group) { Item item = group.getFirstChild(); while (item != null) { if (item instanceof GroupItem) { GroupItem childgrp = (GroupItem)item; if (childgrp.isInline()) { convertToDefinitions(childgrp); } else { DefinitionItem definition = childgrp.convertToDefinition(); definition.setChecked(true); OpenAttrBase ancestor = group.getSchemaComponent(); while (!ancestor.isGlobal()) { ancestor = ancestor.getParent(); } GlobalExtension global = (GlobalExtension)ancestor.getExtension(); PackageHolder pack = global.getPackage(); String clasname = definition.getClassName(); NameConverter nconv = global.getNameConverter(); boolean useinner = global.isUseInnerClasses(); ClassHolder clas = pack.addClass(clasname, nconv, useinner, childgrp.isEnumeration()); definition.setGenerateClass(clas); m_definitions.add(definition); } } item = item.getNext(); } } /** * Generate the data model. This first builds a representation of all the data items from the schema definitions, * then determines which items can be inlined and which need separate class representations. * * @throws IOException * @throws JiBXException */ public void generate() throws JiBXException, IOException { // build the item structure for each definition ItemVisitor visitor = new ItemVisitor(); int index = 0; ArrayList items = new ArrayList(); ArrayList checkitems = new ArrayList(); for (Iterator iter = m_validationContext.iterateSchemas(); iter.hasNext();) { SchemaElement schema = (SchemaElement)iter.next(); m_validationContext.enterSchema(schema); s_logger.info("Building item structure for schema " + ++index + ": " + schema.getResolver().getName()); int count = schema.getChildCount(); for (int i = 0; i < count; i++) { SchemaBase child = schema.getChild(i); if (child.getExtension() instanceof GlobalExtension) { // create the definition GlobalExtension global = (GlobalExtension)child.getExtension(); DefinitionItem definition = global.getDefinition(); if (definition == null) { definition = visitor.buildGlobal((AnnotatedBase)child); if (s_logger.isInfoEnabled()) { s_logger.info("Constructed item structure for " + SchemaUtils.describeComponent(child) + ":\n" + definition.describe(0)); } } else if (s_logger.isInfoEnabled()) { s_logger.info("Found existing item structure for " + SchemaUtils.describeComponent(child) + ":\n" + definition.describe(0)); } items.add(definition); // set the names on the definition so they'll be available for inlining NameConverter nconv = global.getNameConverter(); String dfltname = nconv.toBaseName(nconv.trimXName(((INamed)child).getName())); String name = global.getBaseName(); if (name == null) { name = NameConverter.toNameLead(dfltname); } definition.setName(name); name = global.getClassName(); if (name == null) { name = NameConverter.toNameWord(dfltname); } definition.setClassName(name); // force class generation if required if (global.isIncluded()) { definition.setInlineBlocked(true); if (s_logger.isDebugEnabled()) { s_logger.debug("Forcing class generation for " + SchemaUtils.describeComponent(child)); } } // record all simple element definition items separately for next pass if (child.type() == SchemaBase.ELEMENT_TYPE && definition.getChildCount() == 1) { Item item = definition.getFirstChild(); if (item instanceof ReferenceItem) { // skip elements based on simpleTypes for this check, since simpleTypes never need a class AnnotatedBase comp = ((ReferenceItem)item).getDefinition().getSchemaComponent(); if (comp.type() != SchemaBase.SIMPLETYPE_TYPE) { checkitems.add(definition); } } } } } } // check for special (but common) case of single global element using global complexType Map usemap = new HashMap(); for (int i = 0; i < checkitems.size(); i++) { ReferenceItem reference = (ReferenceItem)((DefinitionItem)checkitems.get(i)).getFirstChild(); DefinitionItem basedef = reference.getDefinition(); Boolean usedirect = (Boolean)usemap.get(basedef); if (usedirect == null) { // first time type was referenced, flag to use directly usemap.put(basedef, Boolean.TRUE); } else if (usedirect.booleanValue()) { // second time type was referenced, flag to use separate classes usemap.put(basedef, Boolean.FALSE); } } HashMap typeinstmap = new HashMap(); for (int i = 0; i < checkitems.size(); i++) { DefinitionItem definition = (DefinitionItem)checkitems.get(i); ReferenceItem reference = (ReferenceItem)definition.getFirstChild(); DefinitionItem basedef = reference.getDefinition(); if (((Boolean)usemap.get(basedef)).booleanValue()) { // single element definition using type, force class for type but none for element basedef.setInlineBlocked(true); definition.setInlineBlocked(false); definition.setInline(true); typeinstmap.put(basedef, definition); if (s_logger.isDebugEnabled()) { s_logger.debug("Forcing inlining of type-isomorphic " + SchemaUtils.describeComponent(definition.getSchemaComponent())); } } else { // multiple element definitions using type, force separate class for each // definition.setInlineBlocked(true); // if (s_logger.isDebugEnabled()) { // s_logger.debug("Forcing class generation for type " // + SchemaUtils.describeComponent(basedef.getSchemaComponent()) // + " used by multiple global elements"); // } } } // compact and assign class and property names for all items for (int i = 0; i < items.size(); i++) { DefinitionItem definition = (DefinitionItem)items.get(i); compactGroups(definition); assignNames(definition, true); if (s_logger.isInfoEnabled()) { s_logger.info("After assigning names for " + SchemaUtils.describeComponent(definition.getSchemaComponent()) + ":\n" + definition.describe(0)); } } // inline references where appropriate m_definitions = new ArrayList(); for (int i = 0; i < items.size(); i++) { // make sure definition has been checked for inlining (may add new definitions directly to list) DefinitionItem definition = (DefinitionItem)items.get(i); checkInline(definition, 1); if (s_logger.isInfoEnabled()) { s_logger.info("After inlining for " + SchemaUtils.describeComponent(definition.getSchemaComponent()) + ":\n" + definition.describe(0)); } // add definition to list if not inlined if (!definition.isInline()) { m_definitions.add(definition); GlobalExtension global = (GlobalExtension)definition.getComponentExtension(); PackageHolder pack = global.getPackage(); String cname = definition.getClassName(); NameConverter nconv = global.getNameConverter(); boolean userinner = global.isUseInnerClasses(); ClassHolder clas = pack.addClass(cname, nconv, userinner, definition.isEnumeration()); definition.setGenerateClass(clas); } } // convert extension references for all global type definitions for (int i = 0; i < m_definitions.size(); i++) { ((DefinitionItem)m_definitions.get(i)).convertExtensionReference(); } // classify all the items by form of content for (int i = 0; i < items.size(); i++) { ((DefinitionItem)items.get(i)).setChecked(false); } for (int i = 0; i < items.size(); i++) { ((DefinitionItem)items.get(i)).classifyContent(); } // build the actual class and binding structure m_bindingDirectory = new BindingDirectory(false, false, false, true, true); for (int i = 0; i < m_definitions.size(); i++) { // compact again after inlining and converting extension references DefinitionItem definition = (DefinitionItem)m_definitions.get(i); compactGroups(definition); // build the binding component for this definition ClassHolder clas = definition.getGenerateClass(); OpenAttrBase comp = definition.getSchemaComponent(); ElementBase binding; String uri = null; if (definition.isEnumeration()) { FormatElement format = new FormatElement(); format.setTypeName(clas.getFullName()); ((EnumerationClassHolder)clas).setBinding(format); binding = format; } else { MappingElement mapping = new MappingElement(); mapping.setClassName(clas.getBindingName()); if (comp.type() == SchemaBase.ELEMENT_TYPE) { ElementElement element = ((ElementElement)comp); mapping.setName(element.getName()); uri = element.getQName().getUri(); } else { mapping.setAbstract(true); mapping.setTypeQName(((INamed)comp).getQName()); } ((StructureClassHolder)clas).setBinding(mapping); binding = mapping; } if (uri == null) { while (!(comp instanceof INamed) || ((INamed)comp).getName() == null) { comp = comp.getParent(); } uri = ((INamed)comp).getQName().getUri(); } // add the mapping to appropriate binding BindingHolder holder = m_bindingDirectory.findBinding(uri); if (binding instanceof FormatElement) { holder.addFormat((FormatElement)binding); } else { MappingElement mapping = (MappingElement)binding; holder.addMapping(mapping); DefinitionItem elementdef = (DefinitionItem)typeinstmap.get(definition); if (elementdef != null) { // add concrete mapping for element name linked to type ElementElement element = (ElementElement)elementdef.getSchemaComponent(); MappingElement concrete = new MappingElement(); concrete.setClassName(clas.getBindingName()); concrete.setName(element.getName()); StructureElement struct = new StructureElement(); struct.setMapAsQName(mapping.getTypeQName()); concrete.addChild(struct); holder.addMapping(concrete); } } // set the definition for the class (and create any required secondary classes) clas.createStructure(definition); } // build the actual classes AST ast = AST.newAST(AST.JLS3); ArrayList packs = m_packageDirectory.getPackages(); PackageHolder rootpack = null; for (int i = 0; i < packs.size(); i++) { PackageHolder pack = ((PackageHolder)packs.get(i)); if (pack.getClassCount() > 0) { if (rootpack == null) { PackageHolder scan = pack; while (scan != null) { if (scan.getClassCount() > 0 || scan.getSubpackageCount() > 1) { rootpack = scan; } scan = scan.getParent(); } } pack.generate(ast, m_bindingDirectory); } } // write the binding definition(s) if (rootpack == null) { rootpack = m_packageDirectory.getPackage(""); } m_bindingDirectory.configureFiles("binding.xml", new String[0], rootpack.getName()); m_bindingDirectory.finish(); m_bindingDirectory.writeBindings(m_targetDir); } /** * Report problems using console output. This clears the problem list after they've been reported, to avoid multiple * reports of the same problems. * * @param vctx * @return true if one or more errors, false if not */ private static boolean reportProblems(ValidationContext vctx) { ArrayList probs = vctx.getProblems(); boolean error = false; if (probs.size() > 0) { for (int j = 0; j < probs.size(); j++) { ValidationProblem prob = (ValidationProblem)probs.get(j); String text; if (prob.getSeverity() >= ValidationProblem.ERROR_LEVEL) { error = true; text = "Error: " + prob.getDescription(); s_logger.error(text); } else { text = "Warning: " + prob.getDescription(); s_logger.info(text); } System.out.println(text); } } probs.clear(); return error; } /** * Add the schemas specified by customizations to the set to be loaded. * * @param base root URL for schemas * @param dir root directory for schemas * @param custom schema set customization * @param fileset set of schema files to be loaded * @throws MalformedURLException */ private static void addCustomizedSchemas(URL base, File dir, SchemasetCustom custom, InsertionOrderedSet fileset) throws MalformedURLException { // first check for name match patterns supplied String[] names = custom.getNames(); if (names != null) { for (int i = 0; i < names.length; i++) { SchemaNameFilter filter = new SchemaNameFilter(); String name = names[i]; filter.setPattern(name); s_logger.debug("Matching file names to schemaset pattern '" + name + '\''); String[] matches = dir.list(filter); for (int j = 0; j < matches.length; j++) { String match = matches[j]; fileset.add(new UrlResolver(match, new URL(base, match))); s_logger.debug("Added schema from schemaset pattern match: " + match); } } } // next check all child customizations LazyList childs = custom.getChildren(); for (int i = 0; i < childs.size(); i++) { Object child = childs.get(i); if (child instanceof SchemaCustom) { String name = ((SchemaCustom)child).getName(); if (name != null) { try { fileset.add(new UrlResolver(name, new URL(base, name))); s_logger.debug("Added schema from customizations: " + name); } catch (MalformedURLException e) { System.out.println("Error adding schema from customizations: " + name); } } } else if (child instanceof SchemasetCustom) { addCustomizedSchemas(base, dir, (SchemasetCustom)child, fileset); } } } /** * Get the package directory used for code generation. * * @return directory */ public PackageDirectory getPackageDirectory() { return m_packageDirectory; } /** * Run the binding generation using command line parameters. * * @param args * @throws Exception */ public static void main(String[] args) throws Exception { TreeWalker.setLogging(Level.ERROR); CodeGeneratorCommandLine parms = new CodeGeneratorCommandLine(); if (args.length > 0 && parms.processArgs(args)) { // build set of schemas specified on command line (including via wildcards) InsertionOrderedSet fileset = new InsertionOrderedSet(); URL base = parms.getSchemaRoot(); File basedir = parms.getSchemaDir(); SchemaNameFilter filter = new SchemaNameFilter(); boolean err = false; for (Iterator iter = parms.getExtraArgs().iterator(); iter.hasNext();) { String name = (String)iter.next(); if (name.indexOf('*') >= 0) { if (basedir == null) { System.err.println("File name pattern argument not allowed for non-file base: '" + name + '\''); } else { filter.setPattern(name); s_logger.debug("Matching file names to command line pattern '" + name + '\''); String[] matches = basedir.list(filter); for (int i = 0; i < matches.length; i++) { String match = matches[i]; fileset.add(new UrlResolver(match, new URL(base, match))); } } } else { if (basedir == null) { URL url = new URL(base, name); s_logger.debug("Adding schema URL from command line: " + url.toExternalForm()); fileset.add(new UrlResolver(name, url)); } else { File sfile = new File(basedir, name); if (sfile.exists()) { s_logger.debug("Adding schema file from command line: " + sfile.getCanonicalPath()); fileset.add(new UrlResolver(name, new URL(base, name))); } else { System.err.println("Schema file from command line not found: " + sfile.getAbsolutePath()); err = true; } } } } if (!err) { // add any schemas specified in customizations addCustomizedSchemas(base, basedir, parms.getCustomRoot(), fileset); // load the full set of schemas CodeGenerator inst = new CodeGenerator(parms); SchemaElement[] schemas = inst.load(fileset.asList()); if (!reportProblems(inst.m_validationContext)) { if (inst.customizeSchemas()) { System.out.println("Loaded and validated " + fileset.size() + " schemas"); // apply the customizations to the schema inst.applyAndNormalize(); inst.pruneDefinitions(); // revalidate and run the generation inst.validateSchemas(schemas); inst.generate(); // check if dump file to be output File dump = parms.getDumpFile(); if (dump != null) { // delete the file it it already exists if (dump.exists()) { dump.delete(); } dump.createNewFile(); // now print out the class details by package BufferedWriter writer = new BufferedWriter(new FileWriter(dump)); DataModelUtils.writeImage(inst.m_packageDirectory, writer); writer.close(); } } } } } else { if (args.length > 0) { System.err.println("Terminating due to command line errors"); } else { parms.printUsage(); } System.exit(1); } } /** * File name pattern matcher. */ private static class SchemaNameFilter implements FilenameFilter { /** Current match pattern. */ private String m_pattern; /** * Set the match pattern. * * @param pattern */ public void setPattern(String pattern) { m_pattern = pattern; } /** * Check for file name match. * * @param dir * @param name * @return match flag */ public boolean accept(File dir, String name) { boolean match = SchemasetCustom.isPatternMatch(name, m_pattern); if (match) { s_logger.debug(" matched file name '" + name + '\''); } return match; } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/CodeGeneratorCommandLine.java0000644000175000017500000002211110752422372030053 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.net.URL; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.jibx.custom.CustomizationCommandLineBase; import org.jibx.runtime.BindingDirectory; import org.jibx.runtime.IBindingFactory; import org.jibx.runtime.IUnmarshallable; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.schema.codegen.custom.SchemasetCustom; import org.jibx.schema.validation.ValidationContext; import org.jibx.schema.validation.ValidationProblem; /** * Command line processing specifically for the {@link CodeGenerator} class. * * @author Dennis M. Sosnoski */ public class CodeGeneratorCommandLine extends CustomizationCommandLineBase { /** Ordered array of extra usage lines. */ protected static final String[] EXTRA_USAGE_LINES = new String[] { " -d file for dumping the generated class structure", " -n default package for no-namespace schema definitions", " -p default package for all schema definitions", " -s schema root directory path" }; /** Default package for no-namespace schemas. */ private String m_nonamespacePackage; /** Default package for all schemas. */ private String m_defaultPackage; /** Schema root URL path. */ private String m_rootPath; /** Root URL for schemas. */ private URL m_schemaRoot; /** Root directory for schemas (null if not a file system root). */ private File m_schemaDir; /** File for dumping the generated class structure (null if none). */ private File m_dumpFile; /** Customizations model root. */ private SchemasetCustom m_customRoot; /** * Get root URL for schemas. * * @return directory */ public URL getSchemaRoot() { return m_schemaRoot; } /** * Get root directory for schemas. * * @return directory (null if root is not a directory) */ public File getSchemaDir() { return m_schemaDir; } /** * Get customizations model root. * * @return customizations */ public SchemasetCustom getCustomRoot() { return m_customRoot; } /** * Get default package for no-namespace schemas. * * @return package (null if not set) */ public String getNonamespacePackage() { return m_nonamespacePackage; } /** * Get default package for all schemas. * * @return package (null if not set) */ public String getDefaultPackage() { return m_defaultPackage; } /** * Get file to be used for dumping generated data model. * * @return dump file (null if none) */ public File getDumpFile() { return m_dumpFile; } /* * (non-Javadoc) * * @see org.jibx.binding.generator.CustomizationCommandLineBase#checkParameter(org.jibx.binding.generator.CustomizationCommandLineBase.ArgList) */ protected boolean checkParameter(ArgList alist) { boolean match = true; String arg = alist.current(); if ("-d".equalsIgnoreCase(arg)) { m_dumpFile = new File(alist.next()); } else if ("-n".equalsIgnoreCase(arg)) { m_nonamespacePackage = alist.next(); } else if ("-p".equalsIgnoreCase(arg)) { m_defaultPackage = alist.next(); } else if ("-s".equalsIgnoreCase(arg)) { m_rootPath = alist.next(); } else { match = false; } return match; } /* * (non-Javadoc) * * @see org.jibx.binding.generator.CustomizationCommandLineBase#verboseDetails */ protected void verboseDetails() { System.out.println("Starting from schemas:"); List schemas = getExtraArgs(); for (int i = 0; i < schemas.size(); i++) { System.out.println(" " + schemas.get(i)); } } /** * Finish processing of command line parameters. This just sets up the schema directory. * * @param alist */ protected void finishParameters(ArgList alist) { super.finishParameters(alist); try { File dir = new File("."); URL url = new URL("file://" + dir.getCanonicalPath()); if (m_rootPath == null) { m_schemaRoot = url; m_schemaDir = new File("."); } else { String path = m_rootPath; if (path.charAt(path.length()-1) != '/') { path = path + '/'; } m_schemaRoot = new URL(url, path); if (m_schemaRoot.getProtocol().equals("file")) { m_schemaDir = new File(path); } } } catch (IOException e) { System.out.println("Error processing root path '" + m_rootPath + "': " + e.getMessage()); alist.setValid(false); } } /** * Load the customizations file. This method must load the specified customizations file, or create a default * customizations instance, of the appropriate type. * * @param path customization file path * @return true if successful, false if an error * @throws JiBXException * @throws IOException */ protected boolean loadCustomizations(String path) throws JiBXException, IOException { // load customizations and check for errors ValidationContext vctx = new ValidationContext(); m_customRoot = new SchemasetCustom(null); if (path != null) { IBindingFactory fact = BindingDirectory.getFactory("binding", "org.jibx.schema.codegen.custom"); IUnmarshallingContext ictx = fact.createUnmarshallingContext(); FileInputStream is = new FileInputStream(path); ictx.setDocument(is, null); ictx.setUserContext(vctx); ((IUnmarshallable)m_customRoot).unmarshal(ictx); } ArrayList probs = vctx.getProblems(); if (probs.size() > 0) { for (int i = 0; i < probs.size(); i++) { ValidationProblem prob = (ValidationProblem)probs.get(i); System.out.print(prob.getSeverity() >= ValidationProblem.ERROR_LEVEL ? "Error: " : "Warning: "); System.out.println(prob.getDescription()); } if (vctx.getErrorCount() > 0 || vctx.getFatalCount() > 0) { return false; } } return true; } /* * (non-Javadoc) * * @see org.jibx.binding.generator.CustomizationCommandLineBase#applyOverrides(Map) */ protected Map applyOverrides(Map overmap) { return applyKeyValueMap(overmap, m_customRoot); } /* * (non-Javadoc) * * @see org.jibx.binding.generator.CustomizationCommandLineBase#printUsage() */ public void printUsage() { System.out.println("\nUsage: java org.jibx.schema.codegen.CodeGenerator " + "[options] schema1 schema2 ...\nwhere options are:"); String[] usages = mergeUsageLines(COMMON_USAGE_LINES, EXTRA_USAGE_LINES); for (int i = 0; i < usages.length; i++) { System.out.println(usages[i]); } System.out.println("The schema# files are different schemas to be included in " + "the generation (references from\nthese schemas will also be included).\n"); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/DataModelUtils.java0000644000175000017500000002140710756325130026103 0ustar moellermoeller/* * Copyright (c) 2008, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.util.ArrayList; /** * Utility methods for working with generated data models. */ public class DataModelUtils { /** * Get the complete data model. * * @param directory * @return ordered list of class name-values array pairs */ public static StringObjectPair[] getImage(PackageDirectory directory) { ArrayList packs = directory.getPackages(); ArrayList classdetails = new ArrayList(); for (int i = 0; i < packs.size(); i++) { StringObjectPair[] classfields = ((PackageHolder)packs.get(i)).getClassFields(); for (int j = 0; j < classfields.length; j++) { classdetails.add(classfields[j]); } } return (StringObjectPair[])classdetails.toArray(new StringObjectPair[classdetails.size()]); } /** * Write a complete generated data model. * * @param directory * @param writer * @throws IOException */ public static void writeImage(PackageDirectory directory, BufferedWriter writer) throws IOException { ArrayList packs = directory.getPackages(); for (int i = 0; i < packs.size(); i++) { StringObjectPair[] claspairs = ((PackageHolder)packs.get(i)).getClassFields(); for (int j = 0; j < claspairs.length; j++) { StringObjectPair claspair = claspairs[j]; writer.write(claspair.getKey()); writer.newLine(); StringPair[] fields = (StringPair[])claspair.getValue(); for (int k = 0; k < fields.length; k++) { StringPair field = fields[k]; writer.write(' '); writer.write(field.getKey()); writer.write(" ("); writer.write(field.getValue()); writer.write(')'); writer.newLine(); } } } } /** * Read a complete generated data model. * * @param reader * @return ordered list of class name-values array pairs * @throws IOException */ public static StringObjectPair[] readImage(BufferedReader reader) throws IOException { String line; ArrayList clasdetails = new ArrayList(); ArrayList values = new ArrayList(); String clasname = null; while ((line = reader.readLine()) != null) { if (line.charAt(0) == ' ') { int split = line.indexOf(' ', 1); String name = line.substring(1, split); split = line.indexOf('(', split); String type = line.substring(split, line.length()-1); values.add(new StringPair(name, type)); } else { if (clasname != null) { StringPair[] valuepairs = (StringPair[])values.toArray(new StringPair[values.size()]); clasdetails.add(new StringObjectPair(clasname, valuepairs)); } values.clear(); clasname = line; } } return (StringObjectPair[])clasdetails.toArray(new StringObjectPair[clasdetails.size()]); } /** * List the values in a class. * * @param values * @param buff */ private static void listClass(StringPair[] values, StringBuffer buff) { for (int i = 0; i < values.length; i++) { buff.append(' '); buff.append(values[i].getKey()); buff.append(" of type "); buff.append(values[i].getValue()); buff.append('\n'); } } /** * Find the difference between two class value lists. * * @param name * @param pairs1 * @param pairs2 * @param buff */ private static void classDiff(String name, StringPair[] pairs1, StringPair[] pairs2, StringBuffer buff) { int index1 = 0; int index2 = 0; boolean header = true; while (true) { StringPair pair1 = null; StringPair pair2 = null; int diff = -1; if (index1 < pairs1.length) { pair1 = pairs1[index1]; } if (index2 < pairs2.length) { pair2 = pairs2[index2]; if (pair1 == null) { diff = 1; } else { diff = pair1.getKey().compareTo(pair2.getKey()); } } else if (pair1 == null) { break; } if (diff == 0) { index1++; index2++; } else { if (header) { buff.append("Difference(s) for class "); buff.append(name); buff.append(":\n"); header = false; } if (diff < 0) { buff.append(" Missing value '"); buff.append(pair1.getKey()); buff.append("' of type "); buff.append(pair1.getValue()); buff.append('\n'); index1++; } else { buff.append(" Added value '"); buff.append(pair2.getKey()); buff.append("' of type "); buff.append(pair2.getValue()); buff.append('\n'); index2++; } } } } /** * Find the difference between two data model images. * * @param pairs1 reference data model, as class name-value array pairs * @param pairs2 comparison data model, as class name-value array pairs * @return comparison text output */ public static String imageDiff(StringObjectPair[] pairs1, StringObjectPair[] pairs2) { StringBuffer buff = new StringBuffer(); int index1 = 0; int index2 = 0; while (true) { StringObjectPair pair1 = null; StringObjectPair pair2 = null; int diff = -1; if (index1 < pairs1.length) { pair1 = pairs1[index1]; } if (index2 < pairs2.length) { pair2 = pairs2[index2]; if (pair1 == null) { diff = 1; } else { diff = pair1.getKey().compareTo(pair2.getKey()); } } else if (pair1 == null) { break; } if (diff == 0) { classDiff(pair1.getKey(), (StringPair[])pair1.getValue(), (StringPair[])pair2.getValue(), buff); index1++; index2++; } else if (diff < 0) { buff.append("Second image is missing class " + pair1.getKey() + ":\n"); listClass((StringPair[])pair1.getValue(), buff); index1++; } else { buff.append("Second image has added class " + pair2.getKey() + ":\n"); listClass((StringPair[])pair2.getValue(), buff); index2++; } } if (buff.length() == 0) { return null; } else { return buff.toString(); } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/DefinitionItem.java0000644000175000017500000001222711017732434026137 0ustar moellermoeller/* * Copyright (c) 2007-2008, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import org.jibx.schema.SchemaUtils; import org.jibx.schema.elements.AnnotatedBase; /** * Information for a global definition. */ public class DefinitionItem extends GroupItem { /** Number of references to this definition. */ private int m_referenceCount; /** Inlining not allowed flag. */ private boolean m_inlineBlocked; /** Checked flag used by the code generation handling to track which definitions have already been processed, and also used during the classification pass. */ private boolean m_checked; /** * Constructor for new top-level structure. Child structures should always be created using the containing * structure's {@link #addGroup(AnnotatedBase)} method. * * @param comp schema component */ public DefinitionItem(AnnotatedBase comp) { super(comp, null); } /** * Constructor from group. This supports replacing an embedded group with a definition, as needed when an embedded * group is used in multiple locations and cannot be inlined. * * @param group */ DefinitionItem(GroupItem group) { super(group, null, null); } /** * Get the number of references to this definition. * * @return count */ public int getReferenceCount() { return m_referenceCount; } /** * Count a reference to this definition. */ public void countReference() { m_referenceCount++; } /** * Check if inlining is blocked (due to non-singleton references). * * @return blocked */ public boolean isInlineBlocked() { return m_inlineBlocked; } /** * Set inlining blocked flag. * * @param blocked */ public void setInlineBlocked(boolean blocked) { m_inlineBlocked = blocked; if (blocked) { System.out.println("Setting inlining blocked for " + SchemaUtils.describeComponent(getSchemaComponent())); } } /** * Check if definition has been processed. * * @return checked */ public boolean isChecked() { return m_checked; } /** * Set definition has been processed flag. * * @param checked */ public void setChecked(boolean checked) { m_checked = checked; } /** * Classify the content of this item as attribute, element, and/or character data content. For a definition item, * this checks if the classification has already been done, and if not flags it done and invokes the superclass * handling. */ public void classifyContent() { if (!m_checked) { m_checked = true; super.classifyContent(); } } /** * Build a description of the item, including all nested items. * * @param depth current nesting depth * @return description */ public String describe(int depth) { StringBuffer buff = new StringBuffer(depth + 50); buff.append(leadString(depth)); if (isInline()) { buff.append("inlined "); } if (isEnumeration()) { buff.append("enumeration "); } buff.append("definition with "); buff.append(m_referenceCount); buff.append(" references"); if (m_inlineBlocked) { buff.append(" (inlining blocked)"); } buff.append(", and class name "); buff.append(getClassName()); buff.append(": "); buff.append(SchemaUtils.describeComponent(getSchemaComponent())); buff.append('\n'); buff.append(nestedString(depth)); return buff.toString(); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/EnumerationClassHolder.java0000644000175000017500000003536311002543774027651 0ustar moellermoeller/* * Copyright (c) 2006-2008, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import java.util.ArrayList; import java.util.Arrays; import org.apache.log4j.Logger; import org.eclipse.jdt.core.dom.InfixExpression.Operator; import org.jibx.binding.model.BindingHolder; import org.jibx.binding.model.FormatElement; import org.jibx.schema.elements.FacetElement; import org.jibx.schema.elements.FilteredSegmentList; import org.jibx.schema.elements.SchemaBase; import org.jibx.schema.elements.SimpleRestrictionElement; import org.jibx.schema.elements.FacetElement.Enumeration; /** * Information for an enumeration class to be included in code generated from schema. * * @author Dennis M. Sosnoski */ public class EnumerationClassHolder extends ClassHolder { /** Instance method to get text value. */ public static final String INSTANCEVALUE_METHOD = "value"; /** Static conversion method name, with exception if value not matched. */ public static final String CONVERTFORCE_METHOD = "fromValue"; /** Static conversion method name, with null return if value not matched. */ public static final String CONVERTIF_METHOD = "convert"; /** Logger for class. */ private static final Logger s_logger = Logger.getLogger(EnumerationClassHolder.class.getName()); /** Enumeration group defining the class. */ private Wrapper m_classGroup; /** Binding definition element for this class. */ private FormatElement m_bindingFormat; /** * Constructor. * * @param name class name * @param base base class name * @param pack package information * @param nconv name converter * @param inner use inner classes for substructures */ public EnumerationClassHolder(String name, String base, PackageHolder pack, NameConverter nconv, boolean inner) { super(name, base, pack, nconv, inner); } /** * Constructor for creating a child inner class definition. * * @param name class name * @param context parent class */ protected EnumerationClassHolder(String name, ClassHolder context) { super(name, context); } /** * Get the binding component linked to this class. * * @return binding definition element (<mapping> or <structure>) */ public FormatElement getBinding() { return m_bindingFormat; } /** * Set the binding component linked to this class. * * @param format binding definition element */ public void setBinding(FormatElement format) { m_bindingFormat = format; } /** * Convert an item structure to a class representation. This may include creating child classes, where necessary. * * @param group */ public void createStructure(GroupItem group) { if (group.isEnumeration()) { // set the basic configuration information setNamespace(group.getSchemaComponent().getSchema().getEffectiveNamespace()); m_classGroup = new Wrapper(group, null); // just add String as an import addImport("java.lang.String", false); // import the serializable interface if needed if (IMPLEMENT_SERIALIZABLE) { addImport("java.io.Serializable", false); } } else { throw new IllegalArgumentException("Internal error - group is not an enumeration"); } } /** * Generate this class. * * @param builder class source file builder * @param holder binding holder */ public void generate(SourceBuilder builder, BindingHolder holder) { // setup the class builder Item item = m_classGroup.getItem(); String basename = getSuperClass() == null ? null : getSuperClass().getFullName(); ClassBuilder clasbuilder; String name = getName(); if (m_outerClass == null) { clasbuilder = builder.newMainClass(name, basename, USE_JAVA5_ENUM); } else { clasbuilder = builder.newInnerClass(name, basename, m_outerClass.getBuilder(), USE_JAVA5_ENUM); } // handle the common initialization setBuilder(clasbuilder); initClass(m_classGroup, holder); // create a field to hold the string value String fieldname = m_nameConverter.toFieldName(INSTANCEVALUE_METHOD); clasbuilder.addField(fieldname, "java.lang.String").setPrivateFinal(); // add private constructor with field assignment MethodBuilder constr = clasbuilder.addConstructor(name); constr.createBlock().addAssignVariableToField(INSTANCEVALUE_METHOD, fieldname); constr.setPrivate(); constr.addParameter(INSTANCEVALUE_METHOD, "java.lang.String"); // get the list of facets including enumerations String fullname = getFullName(); if (s_logger.isInfoEnabled()) { s_logger.info("Generating enumeration class " + fullname); } GroupItem group = (GroupItem)item; SimpleRestrictionElement restrict = (SimpleRestrictionElement)group.getFirstChild().getSchemaComponent(); FilteredSegmentList facets = restrict.getFacetsList(); if (USE_JAVA5_ENUM) { // add an enumeration constant for each value defined for (int i = 0; i < facets.size(); i++) { FacetElement facet = (FacetElement)facets.get(i); if (facet.type() == SchemaBase.ENUMERATION_TYPE) { // get value for this enumeration element FacetElement.Enumeration enumelem = (Enumeration)facet; String value = enumelem.getValue(); // define the constant String constname = m_nameSet.add(m_nameConverter.toConstantName(value)); clasbuilder.addConstant(constname, value); } } // add value method returning string value MethodBuilder tostring = clasbuilder.addMethod(INSTANCEVALUE_METHOD, "java.lang.String"); tostring.setPublic(); tostring.createBlock().addReturnNamed(fieldname); // add static convert method returning instance for text value, or null if no match MethodBuilder convert = clasbuilder.addMethod(CONVERTIF_METHOD, fullname); convert.setPublicStatic(); convert.addParameter(INSTANCEVALUE_METHOD, "java.lang.String"); BlockBuilder body = convert.createBlock(); // create the return block when value is matched BlockBuilder retblock = clasbuilder.newBlock(); retblock.addReturnNamed("inst"); // create the method calls to compare current instance text with value InvocationBuilder valueexpr = clasbuilder.createNormalMethodCall("inst", INSTANCEVALUE_METHOD); InvocationBuilder equalsexpr = clasbuilder.createExpressionMethodCall(valueexpr, "equals"); equalsexpr.addVariableOperand(INSTANCEVALUE_METHOD); // embed the complete if statement in body block of for loop BlockBuilder forblock = clasbuilder.newBlock(); forblock.addIfStatement(equalsexpr, retblock); InvocationBuilder loopexpr = clasbuilder.createLocalStaticMethodCall("values"); body.addSugaredForStatement("inst", fullname, loopexpr, forblock); // finish with null return for match not found body.addReturnNull(); } else { // create a static instance of class for each enumeration value ArrayList enumpairs = new ArrayList(); for (int i = 0; i < facets.size(); i++) { FacetElement facet = (FacetElement)facets.get(i); if (facet.type() == SchemaBase.ENUMERATION_TYPE) { // get value for this enumeration element FacetElement.Enumeration enumelem = (Enumeration)facet; String value = enumelem.getValue(); // create a field to hold the corresponding instance of class String constname = m_nameSet.add(m_nameConverter.toConstantName(value)); FieldBuilder field = clasbuilder.addField(constname, name); field.setPublicStaticFinal(); field.setInitializer(clasbuilder.newInstanceFromString(name, value)); // track both the value and the corresponding field name enumpairs.add(new StringPair(value, constname)); } } // sort the pairs by value text StringPair[] pairs = (StringPair[])enumpairs.toArray(new StringPair[enumpairs.size()]); Arrays.sort(pairs); // create array of sorted text values String valuesname = m_nameConverter.toStaticFieldName("values"); NewArrayBuilder array = clasbuilder.newArrayBuilder("java.lang.String"); for (int i = 0; i < pairs.length; i++) { array.addStringLiteralOperand(pairs[i].getKey()); } FieldBuilder field = clasbuilder.addField(valuesname, "java.lang.String[]"); field.setInitializer(array); field.setPrivateStaticFinal(); // create matching array of instances corresponding to sorted values String instsname = m_nameConverter.toStaticFieldName("instances"); array = clasbuilder.newArrayBuilder(fullname); for (int i = 0; i < pairs.length; i++) { array.addVariableOperand(pairs[i].getValue()); } field = clasbuilder.addField(instsname, fullname + "[]"); field.setInitializer(array); field.setPrivateStaticFinal(); // add toString method returning string value MethodBuilder tostring = clasbuilder.addMethod(INSTANCEVALUE_METHOD, "java.lang.String"); tostring.setPublic(); tostring.createBlock().addReturnNamed(fieldname); // add static convert method returning instance for text value, or null if no match MethodBuilder convert = clasbuilder.addMethod(CONVERTIF_METHOD, fullname); convert.setPublicStatic(); convert.addParameter(INSTANCEVALUE_METHOD, "java.lang.String"); BlockBuilder body = convert.createBlock(); // build code to handle search for text value InvocationBuilder invoke = clasbuilder.createStaticMethodCall("java.util.Arrays", "binarySearch"); invoke.addVariableOperand(valuesname); invoke.addVariableOperand(INSTANCEVALUE_METHOD); body.addLocalVariableDeclaration("int", "index", invoke); // create the return block when value is matched BlockBuilder retblock = clasbuilder.newBlock(); retblock.addReturnExpression(clasbuilder.buildArrayIndexAccess(instsname, "index")); // create the null return block when value is not matched BlockBuilder nullblock = clasbuilder.newBlock(); nullblock.addReturnNull(); // finish with the if statement that decides which to execute InfixExpressionBuilder test = clasbuilder.buildNameOp("index", Operator.GREATER_EQUALS); test.addNumberLiteralOperand("0"); body.addIfElseStatement(test, retblock, nullblock); } // add static valueOf method returning instance for text value MethodBuilder valueof = clasbuilder.addMethod(CONVERTFORCE_METHOD, fullname); valueof.setPublicStatic(); valueof.addParameter("text", "java.lang.String"); BlockBuilder body = valueof.createBlock(); m_bindingFormat.setDeserializerName(getBindingName() + ".fromValue"); // build code to call convert method InvocationBuilder invoke = clasbuilder.createLocalStaticMethodCall(CONVERTIF_METHOD); invoke.addVariableOperand("text"); body.addLocalVariableDeclaration(fullname, INSTANCEVALUE_METHOD, invoke); // create the return block when value is found BlockBuilder retblock = clasbuilder.newBlock(); retblock.addReturnNamed(INSTANCEVALUE_METHOD); // create the exception thrown when value is not found BlockBuilder throwblock = clasbuilder.newBlock(); InfixExpressionBuilder strcat = clasbuilder.buildStringConcatenation("Value '"); strcat.addVariableOperand("text"); strcat.addStringLiteralOperand("' is not allowed"); throwblock.addThrowException("IllegalArgumentException", strcat); // finish with the if statement that decides which to execute InfixExpressionBuilder test = clasbuilder.buildNameOp(INSTANCEVALUE_METHOD, Operator.EQUALS); test.addNullOperand(); body.addIfElseStatement(test, throwblock, retblock); // finish with subclass generation (which might be needed, if enumeration uses inlined type) generateInner(builder, holder); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/ExpressionBuilderBase.java0000644000175000017500000001017011002543776027467 0ustar moellermoeller/* * Copyright (c) 2007-2008, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import org.eclipse.jdt.core.dom.CharacterLiteral; import org.eclipse.jdt.core.dom.Expression; import org.eclipse.jdt.core.dom.StringLiteral; /** * Abstract syntax tree expression builder base. This is used for expressions with multiple component operands. It adds * convenience methods and control information to the base builder. */ public abstract class ExpressionBuilderBase extends ASTBuilderBase { /** Source builder. */ protected final ClassBuilder m_source; /** Expression under construction. */ protected final Expression m_expression; /** * Constructor. * * @param source * @param expr */ public ExpressionBuilderBase(ClassBuilder source, Expression expr) { super(source.getAST()); m_source = source; m_expression = expr; } /** * Get expression. This is provided only for use by other classes in this package. * * @return expression */ Expression getExpression() { return m_expression; } /** * Add operand to expression. This must be implemented by each subclass to handle adding another operand. * * @param operand */ protected abstract void addOperand(Expression operand); /** * Add a local variable or field name operand to expression. * * @param name */ public void addVariableOperand(String name) { addOperand(m_ast.newSimpleName(name)); } /** * Add a string literal operand to expression. * * @param value */ public void addStringLiteralOperand(String value) { StringLiteral strlit = m_ast.newStringLiteral(); strlit.setLiteralValue(value); addOperand(strlit); } /** * Add a character literal operand to expression. * * @param value */ public void addCharacterLiteralOperand(char value) { CharacterLiteral literal = m_ast.newCharacterLiteral(); literal.setCharValue(value); addOperand(literal); } /** * Add a number literal operand to expression. * * @param value */ public void addNumberLiteralOperand(String value) { addOperand(m_ast.newNumberLiteral(value)); } /** * Add a null literal operand to expression. */ public void addNullOperand() { addOperand(m_ast.newNullLiteral()); } /** * Add another expression as an operand. * * @param builder expression builder */ public void addOperand(ExpressionBuilderBase builder) { addOperand(builder.m_expression); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/FieldBuilder.java0000644000175000017500000000622610713703146025564 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import org.eclipse.jdt.core.dom.FieldDeclaration; import org.eclipse.jdt.core.dom.StringLiteral; import org.eclipse.jdt.core.dom.VariableDeclarationFragment; /** * Abstract syntax tree field declaration builder. This adds convenience methods and control information to the base * builder. */ public class FieldBuilder extends BodyBuilderBase { /** Field invocation. */ private final FieldDeclaration m_field; /** * Constructor. * * @param source * @param field */ public FieldBuilder(ClassBuilder source, FieldDeclaration field) { super(source, field); m_field = field; } /** * Set initializer expression for field declaration. * * @param expr */ public void setInitializer(ExpressionBuilderBase expr) { VariableDeclarationFragment frag = (VariableDeclarationFragment)m_field.fragments().get(0); frag.setInitializer(expr.getExpression()); } /** * Set initializer as a string literal. * * @param value */ public void setStringInitializer(String value) { VariableDeclarationFragment frag = (VariableDeclarationFragment)m_field.fragments().get(0); StringLiteral literal = m_ast.newStringLiteral(); literal.setLiteralValue(value); frag.setInitializer(literal); } /** * Set initializer as a number literal. * * @param value */ public void setNumberInitializer(String value) { VariableDeclarationFragment frag = (VariableDeclarationFragment)m_field.fragments().get(0); frag.setInitializer(m_ast.newNumberLiteral(value)); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/GroupItem.java0000644000175000017500000003410611017732434025143 0ustar moellermoeller/* * Copyright (c) 2007-2008, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import org.apache.log4j.Logger; import org.jibx.runtime.QName; import org.jibx.schema.SchemaUtils; import org.jibx.schema.codegen.custom.ComponentCustom; import org.jibx.schema.codegen.custom.ComponentExtension; import org.jibx.schema.codegen.custom.CustomBase; import org.jibx.schema.elements.AnnotatedBase; import org.jibx.schema.elements.SchemaBase; /** * Information for a grouping of components (attributes, elements, compositors, and/or wildcards). This is used both * directly for local groupings, and by way of the {@link DefinitionItem} subclass for global definitions. */ public class GroupItem extends Item { /** Logger for class. */ private static final Logger s_logger = Logger.getLogger(GroupItem.class.getName()); /** Flag for enumeration value. */ private boolean m_enumeration; /** Inline references to this structure. */ private boolean m_inline; /** Name to be used for generated class (null if inherited). */ private String m_className; /** Number of child items in group. */ private int m_size; /** First child (null if none). */ private Item m_head; /** Last child (null if none). */ private Item m_tail; /** Generated class information (null if inlined). */ private ClassHolder m_generateClass; /** * Internal constructor. This is used both for creating a new child group and by the {@link DefinitionItem} * subclass, so allows for specifying both an optional parent and the actual type of the item. * * @param comp schema component (should be the simpleType component in the case of an enumeration) * @param parent (null if none) */ protected GroupItem(AnnotatedBase comp, GroupItem parent) { super(comp, parent); ComponentExtension exten = getComponentExtension(); m_className = exten.getClassName(); ComponentCustom custom = exten.getCustom(); if (custom != null) { m_inline = custom.getGeneration() == CustomBase.GENERATE_INLINE; } } /** * Copy constructor. This creates a deep copy with a new parent. * * @param original * @param ref reference (for overrides to copy; null if none) * @param parent */ /*package*/ GroupItem(GroupItem original, Item ref, GroupItem parent) { super(original, ref, parent); m_enumeration = original.m_enumeration; for (Item child = original.getFirstChild(); child != null; child = child.getNext()) { appendChild(child.copy(null, this)); } m_inline = original.m_inline; m_className = original.m_className; } /** * Constructor from a reference. This is only used for inlining a referenced definition. It merges usage information * from the reference with a deep copy of the item structure of the definition. * * @param reference */ /*package*/ GroupItem(ReferenceItem reference) { super(reference, reference, reference.getParent()); m_inline = true; DefinitionItem definition = reference.getDefinition(); appendChild(new GroupItem(definition, reference, this)); } /** * Check if this value represents an enumeration. * * @return enumeration */ public boolean isEnumeration() { return m_enumeration; } /** * Set value represents an enumeration flag. * * @param enumeration */ public void setEnumeration(boolean enumeration) { m_enumeration = enumeration; } /** * Append an item to the list of children. * * @param item */ private void appendChild(Item item) { if (m_head == null) { m_head = m_tail = item; } else { m_tail.m_next = item; item.m_last = m_tail; m_tail = item; } m_size++; } /** * Add a child grouping structure. * * @param comp schema component * @return structure */ public GroupItem addGroup(AnnotatedBase comp) { GroupItem group = new GroupItem(comp, this); appendChild(group); return group; } /** * Add a child reference structure. * * @param comp schema component * @param ref referenced definition item * @return reference */ public ReferenceItem addReference(AnnotatedBase comp, DefinitionItem ref) { ReferenceItem reference = new ReferenceItem(comp, this, ref); appendChild(reference); return reference; } /** * Add a child value. * * @param comp schema component extension * @param type schema type name * @param ref schema type equivalent (null if not appropriate) * @return value */ public ValueItem addValue(AnnotatedBase comp, QName type, JavaType ref) { ValueItem item = new ValueItem(comp, type, ref, this); appendChild(item); return item; } /** * Replace an item in this group with another item. * * @param current * @param replace */ /*package*/ void replaceChild(Item current, Item replace) { Item last = current.m_last; Item next = current.m_next; if (last == null) { m_head = replace; } else { last.m_next = replace; } replace.m_last = last; if (next == null) { m_tail = replace; } else { next.m_last = replace; } replace.m_next = next; } /** * Adopt the child items from another group as the child items of this group. * * @param group */ void adoptChildren(GroupItem group) { m_size = group.m_size; m_head = group.m_head; m_tail = group.m_tail; for (Item item = m_head; item != null; item = item.m_next) { item.reparent(this); } } /** * Check if structure to be inlined. * * @return inline */ public boolean isInline() { return m_inline; } /** * Set structure to be inlined flag. * * @param inline */ public void setInline(boolean inline) { m_inline = inline; } /** * Get effective item name, applying inheritance if necessary. * * @return name */ public String getEffectiveClassName() { GroupItem item = this; while (item.getClassName() == null) { item = item.getParent(); if (item == null) { throw new IllegalStateException("Inherited class name with nothing to inherit"); } } return item.getClassName(); } /** * Get class name set directly for this group. * * @return name (null if to be inherited) */ public String getClassName() { return m_className; } /** * Check if the class name is fixed by configuration. * * @return true if fixed, false if not */ public boolean isFixedClassName() { return getComponentExtension().getClassName() != null; } /** * Set class name directly for this group. It is an error to call this method if the class name is fixed. * * @param name (null if to be inherited) */ public void setClassName(String name) { if (isFixedClassName()) { throw new IllegalStateException("Internal error - attempt to change configured class name"); } else { m_className = name; } } /** * Get the number of items present in the group. * * @return count */ public int getChildCount() { return m_size; } /** * Get head item in list grouped by this structure. * * @return item (null if none) */ public Item getFirstChild() { return m_head; } /** * Get information for class to be generated. * * @return class */ public ClassHolder getGenerateClass() { return m_generateClass; } /** * Set information for class to be generated. If this group is a complexType extension and the base type is not * being inlined, this sets the generated class to extend the base type class. * * @param clas */ public void setGenerateClass(ClassHolder clas) { m_generateClass = clas; } /** * Check if this group represents an extension reference. * * @return true if extension reference, false if not */ public boolean isExtensionReference() { return m_head instanceof ReferenceItem && m_head.getSchemaComponent().type() == SchemaBase.EXTENSION_TYPE; } /** * Handle an extension reference to a non-inlined type by subclassing the corresponding class. This removes the * extension reference, if found, from the data structure. */ public void convertExtensionReference() { if (isExtensionReference()) { ClassHolder base = ((ReferenceItem)m_head).getDefinition().getGenerateClass(); if (s_logger.isDebugEnabled()) { s_logger.debug("Setting base class for " + m_generateClass.getFullName() + " to " + base.getFullName()); } m_generateClass.setSuperClass(base); m_head = m_head.m_next; if (m_head == null) { m_tail = null; } else { m_head.m_last = null; } } } /** * Copy the item under a different parent. * * @param ref reference (for overrides to copy; null if none) * @param parent * @return copy */ protected Item copy(Item ref, GroupItem parent) { return new GroupItem(this, ref, parent); } /** * Classify the content of this item as attribute, element, and/or character data content. For a group item, this * just needs to call the corresponding method for each child item. */ protected void classifyContent() { // handle basic classification for this component super.classifyContent(); // classify each child component for (Item item = m_head; item != null; item = item.getNext()) { item.classifyContent(); } } /** * Convert an embedded group to a freestanding definition. This creates a definition using a cloned copy of the * structure of this group, then replaces this group with a reference to the definition. * TODO: just adopt the child items, rather than cloning? minor performance gain. * * @return definition */ public DefinitionItem convertToDefinition() { if (s_logger.isDebugEnabled()) { s_logger.debug("Converting " + SchemaUtils.describeComponent(getSchemaComponent()) + " to freestanding definition"); } DefinitionItem def = new DefinitionItem(this); if (def.getClassName() == null) { def.setClassName(getEffectiveClassName()); } if (def.getName() == null) { def.setName(getEffectiveName()); } ReferenceItem ref = new ReferenceItem(this, def); getParent().replaceChild(this, ref); return def; } /** * Build description of nested items. * * @param depth current nesting depth * @return description */ public String nestedString(int depth) { depth++; Item child = getFirstChild(); StringBuffer buff = new StringBuffer(400); while (child != null) { buff.append(child.describe(depth)); child = child.getNext(); } return buff.toString(); } /** * Generate a description of the item, including all nested items. * * @param depth current nesting depth * @return description */ public String describe(int depth) { StringBuffer buff = new StringBuffer(depth + 50); buff.append(leadString(depth)); if (isInline()) { buff.append("inlined "); } if (m_enumeration) { buff.append("enumeration "); } buff.append("group with class name "); buff.append(getClassName()); buff.append(" and value name "); buff.append(getName()); buff.append(": "); buff.append(SchemaUtils.describeComponent(getSchemaComponent())); buff.append('\n'); buff.append(nestedString(depth)); return buff.toString(); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/IValueOrder.java0000644000175000017500000000354210713703146025411 0ustar moellermoeller/* Copyright (c) 2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import org.jibx.schema.codegen.datamodel.Value; /** * Ordering strategy for handling field or method generation. * * @author Dennis M. Sosnoski */ public interface IValueOrder { /** * Get ordered array of values to be generated. * * @param ch class information * @return ordered values */ Value[] getValues(ClassHolder ch); }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/IfBuilder.java0000644000175000017500000000560710752422370025101 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import org.eclipse.jdt.core.dom.Expression; import org.eclipse.jdt.core.dom.IfStatement; import org.eclipse.jdt.core.dom.Statement; /** * If statement builder. This wraps the AST if representation with convenience methods and added control information. * * @author Dennis M. Sosnoski */ public class IfBuilder extends StatementBuilderBase { /** Method invocation. */ private final IfStatement m_if; /** "then" block of statement (automatically created). */ private BlockBuilder m_thenBlock; /** * Constructor. * * @param source * @param expr expression */ public IfBuilder(ClassBuilder source, Expression expr) { super(source); m_if = source.getAST().newIfStatement(); m_if.setExpression(expr); m_thenBlock = source.newBlock(); m_if.setThenStatement(m_thenBlock.getStatement()); } /** * Get the statement. * * @return statement */ Statement getStatement() { return m_if; } /** * Get the "then" conditional block. * * @return block */ public BlockBuilder getThen() { return m_thenBlock; } /** * Set the "else" conditional statement. * * @param stmt */ public void setElse(StatementBuilderBase stmt) { m_if.setElseStatement(stmt.getStatement()); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/InfixExpressionBuilder.java0000644000175000017500000000612710767276700027710 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import org.eclipse.jdt.core.dom.Expression; import org.eclipse.jdt.core.dom.InfixExpression; /** * Abstract syntax tree infix expression builder. This adds convenience methods and control information to the base * builder. */ public class InfixExpressionBuilder extends ExpressionBuilderBase { /** Method invocation. */ private final InfixExpression m_expression; /** Number of operands added to expression. */ private int m_operandCount; /** * Constructor. * * @param source * @param expr */ public InfixExpressionBuilder(ClassBuilder source, InfixExpression expr) { super(source, expr); m_expression = expr; } /** * Constructor with left operand supplied. * * @param source * @param expr * @param operand */ public InfixExpressionBuilder(ClassBuilder source, InfixExpression expr, Expression operand) { super(source, expr); m_expression = expr; addOperand(operand); } /** * Add operand to expression. If the right operand has not yet been set this will set it; otherwise, it will add the * operand as an extended operand of the expression. * * @param operand */ protected void addOperand(Expression operand) { if (m_operandCount == 0) { m_expression.setLeftOperand(operand); } else if (m_operandCount == 1) { m_expression.setRightOperand(operand); } else { m_expression.extendedOperands().add(operand); } m_operandCount++; } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/InvocationBuilder.java0000644000175000017500000000460110713703146026645 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import org.eclipse.jdt.core.dom.Expression; import org.eclipse.jdt.core.dom.MethodInvocation; /** * Method invocation builder. This wraps the AST method invocation representation with convenience methods and added * control information. */ public class InvocationBuilder extends ExpressionBuilderBase { /** Method invocation. */ private final MethodInvocation m_invoke; /** * Constructor. * * @param source * @param invoke */ public InvocationBuilder(ClassBuilder source, MethodInvocation invoke) { super(source, invoke); m_invoke = invoke; } /** * Add operand to expression. This just adds the supplied operand expression as a new method parameter. * * @param operand */ protected void addOperand(Expression operand) { m_invoke.arguments().add(operand); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/Item.java0000644000175000017500000003222511017732436024130 0ustar moellermoeller/* * Copyright (c) 2007-2008, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import org.jibx.schema.SchemaUtils; import org.jibx.schema.codegen.custom.ComponentExtension; import org.jibx.schema.elements.AnnotatedBase; import org.jibx.schema.elements.ElementElement; import org.jibx.schema.elements.SchemaBase; /** * Base class for code generation items. Each instance corresponds to a particular schema component, and this base class * tracks that schema component (by way of the extension information), along with related details and linkage * information. The linkage uses embedded list links, which allows replacing one instance with another with minimal * overhead. * * @author Dennis M. Sosnoski */ public abstract class Item { /** Corresponding schema component extension. */ private final ComponentExtension m_componentExtension; /** Flag for an optional item. */ private final boolean m_optional; /** Flag for a collection item. */ private final boolean m_collection; /** Flag for a nillable item. */ private final boolean m_nillable; /** Containing group item. */ private GroupItem m_parent; /** Attribute data present flag. */ private boolean m_attributePresent; /** Element data present flag. */ private boolean m_elementPresent; /** Character data content data present flag. */ private boolean m_contentPresent; /** Next item in list (null if none). */ protected Item m_next; /** Preceding item in list (null if none). */ protected Item m_last; /** Actual name to be used for item (null if to be inherited). */ private String m_name; /** * Basic constructor. This uses the schema component to determine all information other than the parent item group, * including the optional/nillable/collection flags. As a special case, if the parent group is associated with the * same component this sets all three of these flags false to avoid redundant handling. * * @param comp schema component * @param parent containing group (null if a top-level group) */ protected Item(AnnotatedBase comp, GroupItem parent) { // save basic values m_componentExtension = (ComponentExtension)comp.getExtension(); m_parent = parent; // set other values based on extension and component information if (parent == null || parent.getSchemaComponent() != comp) { m_optional = m_componentExtension.isOptional(); m_collection = m_componentExtension.isRepeated(); m_nillable = comp.type() == SchemaBase.ELEMENT_TYPE && ((ElementElement)comp).isNillable(); } else { m_optional = m_collection = m_nillable = false; } m_name = m_componentExtension.getBaseName(); } /** * Copy constructor. This creates a copy with a new parent. * * @param original * @param ref reference (for name override; null if none) * @param parent */ protected Item(Item original, Item ref, GroupItem parent) { m_componentExtension = original.m_componentExtension; m_parent = parent; m_optional = original.m_optional; m_collection = original.m_collection; m_nillable = original.m_nillable; m_attributePresent = original.m_attributePresent; m_elementPresent = original.m_elementPresent; m_contentPresent = original.m_contentPresent; if (ref == null || original.isFixedName()) { m_name = original.m_name; } else { m_name = ref.m_name; } } /** * Replace the parent for this item. * * @param parent */ protected void reparent(GroupItem parent) { m_parent = parent; } /** * Get schema component corresponding to this item. * * @return schema component */ public AnnotatedBase getSchemaComponent() { return (AnnotatedBase)m_componentExtension.getComponent(); } /** * Get schema component annotation corresponding to this item. * * @return schema component */ public ComponentExtension getComponentExtension() { return m_componentExtension; } /** * Get containing group item. * * @return group (null if a top-level group) */ public GroupItem getParent() { return m_parent; } /** * Check if the name is fixed by configuration. * * @return true if fixed, false if not */ public boolean isFixedName() { return m_componentExtension.getBaseName() != null; } /** * Get effective item name, applying inheritance if necessary. * * @return name */ public String getEffectiveName() { Item item = this; while (item.m_name == null) { item = item.m_parent; if (item == null) { throw new IllegalStateException("Inherited name with nothing to inherit"); } } return item.m_name; } /** * Get name set directly for this item. * * @return name (null if to be inherited) */ public String getName() { return m_name; } /** * Set name directly for this item. It is an error to call this method if the name is fixed. * * @param name (null if to be inherited) */ public void setName(String name) { if (isFixedName()) { throw new IllegalStateException("Internal error - attempt to change configured name"); } else { m_name = name; } } /** * Get next item in list. * * @return next */ public Item getNext() { return m_next; } /** * Check if item is optional. * * @return optional */ public boolean isOptional() { return m_optional; } /** * Check if a collection item. * * @return true if collection */ public boolean isCollection() { return m_collection; } /** * Check if an attribute is part of this item. This is only true for items corresponding to attribute * definitions, and groupings including these items which do not define an element name. * * @return true if attribute */ public boolean isAttributePresent() { return m_attributePresent; } /** * Check if a child elements is part of this item. This is true for all items corresponding to element * definitions, and all groupings which include such an item. * * @return true if content */ public boolean isElementPresent() { return m_elementPresent; } /** * Check if character data content is part of this item. This is true for all items corresponding to * simpleContent definitions, and all groupings which include such an item. * * @return true if content */ public boolean isContentPresent() { return m_contentPresent; } /** * Set attribute present in group. This cascades the attribute present flag upward through containing groups until * one is found which defines an element name. */ protected void forceAttributePresent() { if (!m_attributePresent && m_componentExtension.getComponent().type() != SchemaBase.ELEMENT_TYPE) { if (m_parent != null) { ((Item)m_parent).forceAttributePresent(); } } m_attributePresent = true; } /** * Set element present in group. This cascades the element present flag upward through containing groups until * one is found which defines an element name. */ protected void forceElementPresent() { if (!m_elementPresent && m_componentExtension.getComponent().type() != SchemaBase.ELEMENT_TYPE) { if (m_parent != null) { ((Item)m_parent).forceElementPresent(); } } m_elementPresent = true; } /** * Set character data content present in group. This cascades the content present flag upward through all containing * groups until one is found which defines an element name. */ protected void forceContentPresent() { if (!m_contentPresent && m_componentExtension.getComponent().type() != SchemaBase.ELEMENT_TYPE) { if (m_parent != null) { ((Item)m_parent).forceContentPresent(); } } m_contentPresent = true; } /** * Copy the item under a different parent. This is intended for replacing a reference with a copy, and allows the * reference to override settings from the original. * * @param ref reference (for overrides to copy; null if none) * @param parent * @return copy */ protected abstract Item copy(Item ref, GroupItem parent); /** * Classify the content of this item as attribute, element, and/or character data content. This needs to be done as * a separate step after construction in order to handle references, which must assume the content of the * definition, and also to work after inlining. This base class implementation does the classification based solely * on the schema component type. Any subclasses which override this method should call the base class implementation * before doing their own classification handling. */ protected void classifyContent() { // find the parent group with a different schema component GroupItem parent = getParent(); AnnotatedBase comp = getSchemaComponent(); while (parent != null && parent.getSchemaComponent() == comp) { parent = parent.getParent(); } if (parent != null) { // flag content type for that parent group switch (comp.type()) { case SchemaBase.ANY_TYPE: case SchemaBase.ELEMENT_TYPE: case SchemaBase.GROUP_TYPE: parent.forceElementPresent(); break; case SchemaBase.SIMPLECONTENT_TYPE: parent.forceContentPresent(); break; case SchemaBase.ANYATTRIBUTE_TYPE: case SchemaBase.ATTRIBUTE_TYPE: case SchemaBase.ATTRIBUTEGROUP_TYPE: parent.forceAttributePresent(); break; } } } /** * Generate a description of the item. For items with nested items this will show the complete structure. * * @param depth current nesting depth * @return description */ public abstract String describe(int depth); /** * Generate the standard leading text for description of the item. * * @param depth current nesting depth * @return leading text for description */ public String leadString(int depth) { StringBuffer buff = new StringBuffer(SchemaUtils.getIndentation(depth)); if (isOptional()) { buff.append("optional "); } if (isCollection()) { buff.append("repeating "); } if (m_attributePresent) { if (m_contentPresent) { buff.append("attribute+content "); } else { buff.append("attribute "); } } else if (m_contentPresent) { buff.append("content "); } return buff.toString(); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/ItemVisitor.java0000644000175000017500000003153711017732436025515 0ustar moellermoeller/* * Copyright (c) 2006-2007, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import org.apache.log4j.Logger; import org.jibx.runtime.QName; import org.jibx.schema.SchemaUtils; import org.jibx.schema.SchemaVisitor; import org.jibx.schema.TreeWalker; import org.jibx.schema.codegen.custom.GlobalExtension; import org.jibx.schema.elements.AnnotatedBase; import org.jibx.schema.elements.AttributeElement; import org.jibx.schema.elements.AttributeGroupRefElement; import org.jibx.schema.elements.CommonCompositorDefinition; import org.jibx.schema.elements.CommonTypeDefinition; import org.jibx.schema.elements.ComplexExtensionElement; import org.jibx.schema.elements.ElementElement; import org.jibx.schema.elements.GroupRefElement; import org.jibx.schema.elements.ListElement; import org.jibx.schema.elements.SimpleExtensionElement; import org.jibx.schema.elements.SimpleRestrictionElement; import org.jibx.schema.elements.SimpleTypeElement; import org.jibx.schema.elements.UnionElement; /** * Visitor to build the code generation items corresponding to a component. */ public class ItemVisitor extends SchemaVisitor { /** Logger for class. */ private static final Logger s_logger = Logger.getLogger(ItemVisitor.class.getName()); /** Group currently being constructed. */ private GroupItem m_group; /** Nesting depth, tracked for indenting of debug information. */ private int m_nestingDepth; /** * Build the item structure corresponding to a schema global definition component. This sets the structure on the * global component extension before filling in the details, so that circular references won't cause a problem. * * @param comp * @return constructed structure */ public DefinitionItem buildGlobal(AnnotatedBase comp) { if (s_logger.isDebugEnabled()) { s_logger.debug(SchemaUtils.getIndentation(m_nestingDepth) + "Building structure for global definition " + SchemaUtils.describeComponent(comp)); m_nestingDepth++; } DefinitionItem definition = new DefinitionItem(comp); m_group = definition; ((GlobalExtension)comp.getExtension()).setDefinition(definition); TreeWalker wlkr = new TreeWalker(null, null); wlkr.walkElement(comp, this); if (s_logger.isDebugEnabled()) { m_nestingDepth--; s_logger.debug(SchemaUtils.getIndentation(m_nestingDepth) + "Completed structure for global definition " + SchemaUtils.describeComponent(comp) + " with " + m_group.getChildCount() + " child items"); } return definition; } /** * Build the item structure corresponding to a particular schema component. The supplied component can be a nested * type definition or a nested compositor. This method may be called recursively, so it needs to save and restore * the entry state. * * @param isenum enumeration flag * @param comp schema component (should be the simpleType component in the case of an enumeration) * @return constructed structure */ private GroupItem buildStructure(boolean isenum, AnnotatedBase comp) { // first build the structure if (s_logger.isDebugEnabled()) { s_logger.debug(SchemaUtils.getIndentation(m_nestingDepth) + "building structure for component " + SchemaUtils.describeComponent(comp)); m_nestingDepth++; } GroupItem hold = m_group; m_group = hold.addGroup(comp); m_group.setEnumeration(isenum); // walk the nested definition to add details to structure TreeWalker wlkr = new TreeWalker(null, null); wlkr.walkChildren(comp, this); // return the structure GroupItem ret = m_group; if (s_logger.isDebugEnabled()) { m_nestingDepth--; s_logger.debug(SchemaUtils.getIndentation(m_nestingDepth) + "completed structure for component " + SchemaUtils.describeComponent(comp) + " with " + m_group.getChildCount() + " child items"); } m_group = hold; return ret; } /** * Add a reference to a global definition to the structure. * * @param comp referencing schema component * @param ref referenced schema component */ private void addReference(AnnotatedBase comp, AnnotatedBase ref) { DefinitionItem definition = ((GlobalExtension)ref.getExtension()).getDefinition(); if (definition == null) { GroupItem holdstruct = m_group; int holddepth = m_nestingDepth; definition = buildGlobal(ref); m_group = holdstruct; m_nestingDepth = holddepth; } m_group.addReference(comp, definition); } /** * Build an item from a type reference. For a predefined schema type this will be a simple {@link ValueItem} * wrapped in a {@link GroupItem}; for a global type it will be a reference to a global definition. * * @param comp * @param def */ private void addTypeRefItem(AnnotatedBase comp, CommonTypeDefinition def) { if (def.isPredefinedType()) { GroupItem group = m_group.addGroup(comp); group.addValue(comp, def.getQName(), JavaType.getType(def.getName())); } else { addReference(comp, def); } } // // Visit methods for generating values to classes /** * Visit <attribute> definition. * * @param node * @return false to block further expansion */ public boolean visit(AttributeElement node) { if (node.getUse() != AttributeElement.PROHIBITED_USE) { // check for direct definition (rather than reference) AttributeElement refattr = node.getReference(); if (refattr == null) { if (node.getType() == null) { // create a group for the embedded definition buildStructure(false, node); } else { // handle reference to global or predefined type addTypeRefItem(node, node.getTypeDefinition()); } } else { // use reference to definition structure addReference(node, node.getReference()); } } return false; } /** * Visit <attributeGroup> reference. * * @param node * @return false to block further expansion */ public boolean visit(AttributeGroupRefElement node) { addReference(node, node.getReference()); return false; } /** * Visit compositor. * * @param node * @return false to block further expansion */ public boolean visit(CommonCompositorDefinition node) { buildStructure(false, node); return false; } /** * Visit complex type <extension> definition. This adds a reference item for the base type, then continues * expansion to handle the items added by extension. * * @param node * @return true to continue expansion */ public boolean visit(ComplexExtensionElement node) { addReference(node, node.getBaseType()); return true; } /** * Visit <element> definition. * * @param node * @return false to block further expansion */ public boolean visit(ElementElement node) { if (!SchemaUtils.isProhibited(node)) { // check if direct definition ElementElement refelem = node.getReference(); if (refelem == null) { if (node.getType() == null) { // create a group for the embedded definition buildStructure(false, node); } else { // handle reference to global or predefined type addTypeRefItem(node, node.getTypeDefinition()); } } else { // use reference to definition structure addReference(node, refelem); } } return false; } /** * Visit <group> reference. * * @param node * @return false to block further expansion */ public boolean visit(GroupRefElement node) { addReference(node, node.getReference()); return false; } /** * Visit <list> element. This adds a collection value matching the type of list. * * @param node * @return false to block further expansion */ public boolean visit(ListElement node) { QName type = node.getItemType(); if (type == null) { buildStructure(false, node); } else { addTypeRefItem(node, node.getItemTypeDefinition()); } return false; } /** * Visit simple type <extension> element. * * @param node * @return true to continue expansion */ public boolean visit(SimpleExtensionElement node) { addTypeRefItem(node, node.getBaseType()); return true; } /** * Visit simple type <restriction> element. * * @param node * @return false to block further expansion */ public boolean visit(SimpleRestrictionElement node) { addTypeRefItem(node, node.getBaseType()); return false; } /** * Visit <simpleType> element. This checks for the special case of a type definition which consists of an * enumeration, and adds a group to represent the enumeration if found. * * @param node * @return true to continue expansion, unless processed as group */ public boolean visit(SimpleTypeElement node) { if (SchemaUtils.isEnumeration(node)) { // check if already an associated group (as will be for global type definition) if (m_group.getSchemaComponent() == node) { m_group.setEnumeration(true); } else { buildStructure(true, node); return false; } } return true; } /** * Visit <union> element. This directly builds a structure matching the component types of the union, with the * nested types handled directly and the referenced types added separately. * * @param node * @return true to expand any inline types */ public boolean visit(UnionElement node) { GroupItem struct = buildStructure(false, node); CommonTypeDefinition[] types = node.getMemberTypeDefinitions(); if (types != null) { for (int i = 0; i < types.length; i++) { CommonTypeDefinition type = types[i]; if (type.isPredefinedType()) { struct.addValue(node, type.getQName(), JavaType.getType(type.getName())); } else { GroupItem hold = m_group; m_group = struct; addReference(node, type); m_group = hold; } } } return false; } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/JavaType.java0000644000175000017500000002245411002543774024757 0ustar moellermoeller/* * Copyright (c) 2006-2008, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import java.util.HashMap; /** * Java types corresponding to schema types. The schema type list here should always match that in * {@link org.jibx.schema.support.SchemaTypes}. As a special case, an instance of this class is also used to represent * the special <any> schema component. * * @author Dennis M. Sosnoski */ public class JavaType { /** Predefined schema simple type correspondences (note not all are defined yet). */ private static final HashMap s_schemaTypesMap; static { // TODO define correspondences and add handling for current nulls s_schemaTypesMap = new HashMap(); addType("anySimpleType", null); addType("anyURI", null); addType("base64Binary", "byte[]"); addType("boolean", "boolean", "java.lang.Boolean", "org.jibx.runtime.Utility.ifBoolean"); addType("byte", "byte", "java.lang.Byte", "org.jibx.runtime.Utility.ifByte"); addType("date", null, "java.sql.Date", "org.jibx.runtime.Utility.ifDate"); addType("dateTime", null, "java.util.Date", "org.jibx.runtime.Utility.ifDateTime"); addType("decimal", "java.math.BigDecimal"); addType("double", "double", "java.lang.Double"); addType("duration", null); addType("ENTITY", null); addType("ENTITIES", null); addType("float", "float", "java.lang.Float"); addType("gDay", null); addType("gMonth", null); addType("gMonthDay", null); addType("gYear", null); addType("gYearMonth", null); addType("hexBinary", "byte[]"); addType("ID", "java.lang.String"); addType("IDREF", "java.lang.String"); addType("IDREFS", null); addType("int", "int", "java.lang.Integer", "org.jibx.runtime.Utility.ifInt"); addType("integer", null, "java.math.BigInteger", "org.jibx.runtime.Utility.ifInteger"); addType("language", null); addType("long", "long", "java.lang.Long", "org.jibx.runtime.Utility.ifLong"); addType("Name", null); addType("negativeInteger", null); addType("nonNegativeInteger", null); addType("nonPositiveInteger", null); addType("normalizedString", null); addType("NCName", null); addType("NMTOKEN", null); addType("NMTOKENS", null); addType("NOTATION", null); addType("positiveInteger", null); addType("QName", "org.jibx.runtime.QName"); addType("short", "short", "java.lang.Short", "org.jibx.runtime.Utility.ifShort"); addType("string", "java.lang.String"); addType("time", null, "java.sql.Time", "org.jibx.runtime.Utility.ifTime"); addType("token", null); addType("unsignedByte", null); addType("unsignedInt", null); addType("unsignedLong", null); addType("unsignedShort", null); } /** <any> schema component type. */ public static final JavaType s_anyType = new JavaType(null, null, "org.w3c.dom.Element"); /** <anyAttribute> schema component type. */ public static final JavaType s_anyAttributeType = new JavaType(null, null, "org.w3c.dom.Attribute"); /** Schema type local name (may be needed for special handling in binding - ID and IDREF, in particular). */ private final String m_schemaName; /** Fully qualified primitive type name (null if none). */ private final String m_primitiveName; /** Fully qualified object type name (non-null). */ private final String m_fqName; /** Object type an implicit import flag (from java.lang package). */ private final boolean m_isImplicit; /** JiBX format name (for types requiring special handling, null otherwise). */ private final String m_format; /** Method to check if a text string matches the format for this type (null if unused). */ private final String m_checkMethod; /** * Constructor supporting special handling. This uses a string value for any types without specific Java equivalents * defined. * * @param slname schema type local name * @param pname primitive type name (null if none) * @param fqname object type fully-qualified name (null if none) * @param format JiBX format name (null if none) * @param check check method name (null if none) */ private JavaType(String slname, String pname, String fqname, String format, String check) { m_schemaName = slname; m_primitiveName = pname; if (fqname == null) { fqname = "java.lang.String"; } m_fqName = fqname; m_isImplicit = fqname.startsWith("java.lang."); m_format = format; m_checkMethod = check; } /** * Basic constructor. * * @param slname schema type local name * @param pname primitive type name (null if none) * @param fqname object type fully-qualified name */ private JavaType(String slname, String pname, String fqname) { this(slname, pname, fqname, null, null); } /** * Helper method for adding object-only types to map. * * @param lname schema type local name * @param fqname fully-qualified java object type name */ private static void addType(String lname, String fqname) { addType(lname, null, fqname, null); } /** * Helper method for adding types without check methods to map. * * @param lname schema type local name * @param pname primitive type name (null if object type) * @param fqname fully-qualified java object type name */ private static void addType(String lname, String pname, String fqname) { addType(lname, null, fqname, null); } /** * Helper method for creating instances and adding them to map. * * @param lname schema type local name * @param pname primitive type name (null if object type) * @param fqname fully-qualified java object type name (null if primitive type) * @param check check method name (null if none) */ private static void addType(String lname, String pname, String fqname, String check) { s_schemaTypesMap.put(lname, new JavaType(lname, pname, fqname, null, check)); } // // Lookup method /** * Get type instance. * * @param name schema type local name * @return type information (non-null) */ public static JavaType getType(String name) { JavaType type = (JavaType)s_schemaTypesMap.get(name); if (type == null) { throw new IllegalArgumentException("Internal error: " + name + " is not a recognized schema type name"); } else { return type; } } // // Access methods /** * Get schema type local name. This is only required because the binding generation needs to implement special * handling for ID and IDREF values. * * @return schema type local name */ public String getSchemaName() { return m_schemaName; } /** * Get fully-qualified object type name. * * @return fully-qualified name */ public String getClassName() { return m_fqName; } /** * Check if object type is implicit import. * * @return implicit */ public boolean isImplicit() { return m_isImplicit; } /** * Get primitive type name. * * @return primitive type, null if none */ public String getPrimitiveName() { return m_primitiveName; } /** * Get format. * * @return format */ public String getFormat() { return m_format; } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/MethodBuilder.java0000644000175000017500000000652411002543776025765 0ustar moellermoeller/* * Copyright (c) 2007-2008, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import org.eclipse.jdt.core.dom.Block; import org.eclipse.jdt.core.dom.MethodDeclaration; import org.eclipse.jdt.core.dom.SingleVariableDeclaration; import org.eclipse.jdt.core.dom.Type; /** * Abstract syntax tree method declaration builder. This adds convenience methods and control information to the base * builder. */ public class MethodBuilder extends BodyBuilderBase { /** Method invocation. */ private final MethodDeclaration m_method; /** * Constructor. * * @param source * @param method */ public MethodBuilder(ClassBuilder source, MethodDeclaration method) { super(source, method); m_method = method; } /** * Add a method parameter. * * @param name * @param type */ public void addParameter(String name, Type type) { SingleVariableDeclaration vdecl = m_ast.newSingleVariableDeclaration(); vdecl.setType(type); vdecl.setName(m_ast.newSimpleName(name)); m_method.parameters().add(vdecl); } /** * Add a method parameter. * * @param name * @param type fully-qualfied type name, or primitive name, with optional array suffixes */ public void addParameter(String name, String type) { addParameter(name, m_source.createType(type)); } /** * Add an exception type to those thrown by the method. * * @param type exception type */ public void addThrows(String type) { m_method.thrownExceptions().add(m_source.createTypeName(type)); } /** * Create a block builder for the method body. * * @return builder */ public BlockBuilder createBlock() { Block block = m_ast.newBlock(); m_method.setBody(block); return new BlockBuilder(m_source, block); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/Name.java0000644000175000017500000001161110752422370024104 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; /** * Name representation for {@link Item} and related structures. Names may be shared between different levels of the item * structure in some cases (such as an element that contains only a single value, with several layers of indirection), * and this class supports name sharing while retaining the ability to modify the actual name text (necessary to avoid * name conflicts in the generated code). * * @author Dennis M. Sosnoski */ public class Name { /** Flag for name fixed by user request. */ private final boolean m_fixed; /** Name checked (and possibly adjusted) for conflicts flag. */ private boolean m_checked; /** Actual name text. */ private String m_text; /** * Default constructor. This just creates a non-fixed name with no initial value. */ public Name() { m_fixed = false; } /** * Constructor. * * @param name fixed name text (null if not fixed) */ public Name(String name) { m_text = name; m_fixed = m_text != null; } /** * Copy constructor. * * @param base */ public Name(Name base) { m_fixed = base.m_fixed; m_checked = base.m_checked; m_text = base.m_text; } /** * Check if name is fixed by configuration. * * @return true if fixed, false if not */ public boolean isFixed() { return m_fixed; } /** * Check if name has been checked for conflicts. This flag is used by the actual class generated code ({@link * ClassHolder}) to track which names have already been entered into the set of names used by a class. * * @return checked */ public boolean isChecked() { return m_checked; } /** * Set flag for name checked for conflicts. This flag is used by the actual class generated code ({@link * ClassHolder}) to track which names have already been entered into the set of names used by a class. * * @param checked */ public void setChecked(boolean checked) { m_checked = checked; } /** * Get item name. * * @return name (null if unspecified) */ public String getText() { return m_text; } /** * Set item name. It is an error to call this method if {@link #isFixed()} returns true. * * @param name (null if unspecified) */ public void setText(String name) { if (m_fixed || name.indexOf('-') > 0) { throw new IllegalStateException("Internal error - attempt to change configured name"); } else { m_text = name; } } /** * Generate printable description of name. This is intended for use in logging output. * * @return description */ public String toString() { StringBuffer buffer = new StringBuffer(); buffer.append('\''); if (m_text == null) { buffer.append("not set"); } else { buffer.append(m_text); } buffer.append("' ("); if (m_fixed) { buffer.append("fixed, "); } if (m_checked) { buffer.append("checked, "); } buffer.append("id="); buffer.append(hashCode()); buffer.append(')'); return buffer.toString(); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/NameConverter.java0000644000175000017500000005604310767276700026016 0ustar moellermoeller/* * Copyright (c) 2006-2008, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import java.util.ArrayList; import java.util.HashSet; /** * Utility methods for working with Java names. * * @author Dennis M. Sosnoski */ public class NameConverter { /** Reserved words for Java (keywords and literals). */ private static final HashSet s_reservedWords = new HashSet(); static { // keywords s_reservedWords.add("abstract"); s_reservedWords.add("assert"); s_reservedWords.add("boolean"); s_reservedWords.add("break"); s_reservedWords.add("byte"); s_reservedWords.add("case"); s_reservedWords.add("catch"); s_reservedWords.add("char"); s_reservedWords.add("class"); s_reservedWords.add("const"); s_reservedWords.add("continue"); s_reservedWords.add("default"); s_reservedWords.add("do"); s_reservedWords.add("double"); s_reservedWords.add("else"); s_reservedWords.add("enum"); s_reservedWords.add("extends"); s_reservedWords.add("final"); s_reservedWords.add("finally"); s_reservedWords.add("float"); s_reservedWords.add("for"); s_reservedWords.add("goto"); s_reservedWords.add("if"); s_reservedWords.add("implements"); s_reservedWords.add("import"); s_reservedWords.add("instanceof"); s_reservedWords.add("int"); s_reservedWords.add("interface"); s_reservedWords.add("long"); s_reservedWords.add("native"); s_reservedWords.add("new"); s_reservedWords.add("package"); s_reservedWords.add("private"); s_reservedWords.add("protected"); s_reservedWords.add("public"); s_reservedWords.add("return"); s_reservedWords.add("short"); s_reservedWords.add("static"); s_reservedWords.add("strictfp"); s_reservedWords.add("super"); s_reservedWords.add("switch"); s_reservedWords.add("synchronized"); s_reservedWords.add("this"); s_reservedWords.add("throw"); s_reservedWords.add("throws"); s_reservedWords.add("transient"); s_reservedWords.add("try"); s_reservedWords.add("void"); s_reservedWords.add("volatile"); s_reservedWords.add("while"); // literals s_reservedWords.add("true"); s_reservedWords.add("false"); s_reservedWords.add("null"); } /** Camelcase field names flag. */ private boolean m_camelCase; /** Prefix used for normal field names (non-null, may be empty). */ private String m_fieldPrefix; /** Suffix used for normal field names (non-null, may be empty). */ private String m_fieldSuffix; /** Prefix used for static field names (non-null, may be empty). */ private String m_staticPrefix; /** Suffix used for static field names (non-null, may be empty). */ private String m_staticSuffix; /** * Use underscores in field names flag (as substitute for special characters, and to split words). */ private boolean m_underscore; /** Uppercase initial letter of field names flag. */ private boolean m_upperInitial; /** Set of XML name prefixes to be discarded in conversions. */ private String[] m_discardPrefixSet; /** Set of XML name suffixes to be discarded in conversions. */ private String[] m_discardSuffixSet; /** Reusable array for words in name. */ private ArrayList m_wordList; /** * Constructor. */ public NameConverter() { m_fieldPrefix = ""; m_fieldSuffix = ""; m_staticPrefix = ""; m_staticSuffix = ""; m_camelCase = true; m_discardPrefixSet = new String[0]; if (ClassHolder.TRIM_COMMON_SUFFIXES) { m_discardSuffixSet = new String[] { "Type", "Group", "Union" }; } else { m_discardSuffixSet = new String[0]; } m_wordList = new ArrayList(); } /** * Check if a name is reserved in Java. * * @param name * @return is reserved */ public static boolean isReserved(String name) { return s_reservedWords.contains(name); } /** * Get prefix text for normal field names. * * @return field prefix (non-null, may be empty) */ public String getFieldPrefix() { return m_fieldPrefix; } /** * Set prefix text for normal field names. * * @param pref field prefix (non-null, may be empty) */ public void setFieldPrefix(String pref) { m_fieldPrefix = pref; } /** * Get suffix text for normal field names. * * @return field suffix (non-null, may be empty) */ public String getFieldSuffix() { return m_fieldPrefix; } /** * Set suffix text for normal field names. * * @param suff field suffix (non-null, may be empty) */ public void setFieldSuffix(String suff) { m_fieldPrefix = suff; } /** * Get prefix text for static field names. * * @return field prefix (non-null, may be empty) */ public String getStaticPrefix() { return m_staticPrefix; } /** * Set prefix text for static field names. * * @param pref field prefix (non-null, may be empty) */ public void setStaticPrefix(String pref) { m_staticPrefix = pref; } /** * Get suffix text for static field names. * * @return field suffix (non-null, may be empty) */ public String getStaticSuffix() { return m_staticPrefix; } /** * Set suffix text for static field names. * * @param suff field suffix (non-null, may be empty) */ public void setStaticSuffix(String suff) { m_staticPrefix = suff; } /** * Get the prefixes to be stripped when converting XML names. * * @return prefixes */ public String[] getDiscardPrefixSet() { return m_discardPrefixSet; } /** * Set the prefixes to be stripped when converting XML names. * * @param prefixes */ public void setDiscardPrefixSet(String[] prefixes) { m_discardPrefixSet = prefixes; } /** * Get the suffixes to be stripped when converting XML names. * * @return suffixes */ public String[] getDiscardSuffixSet() { return m_discardSuffixSet; } /** * Set the suffixes to be stripped when converting XML names. * * @param suffixes */ public void setDiscardSuffixSet(String[] suffixes) { m_discardSuffixSet = suffixes; } /** * Trim specified prefixes and/or suffixes from an XML name. * * @param xname XML name * @return trimmed name, with specified prefixes and/or suffixes removed */ public String trimXName(String xname) { // first trim off a prefix on name for (int i = 0; i < m_discardPrefixSet.length; i++) { String prefix = m_discardPrefixSet[i]; if (xname.startsWith(prefix) && xname.length() > prefix.length()) { xname = xname.substring(prefix.length()); break; } } // next trim off a suffix on name for (int i = 0; i < m_discardSuffixSet.length; i++) { String suffix = m_discardSuffixSet[i]; if (xname.endsWith(suffix) && xname.length() > suffix.length()) { xname = xname.substring(0, xname.length() - suffix.length()); break; } } return xname; } /** * Split an XML name into words. This splits first on the basis of separator characters ('.', '-', and '_') in the * name, and secondly based on case (an uppercase character immediately followed by one or more lowercase characters * is considered a word, and multiple uppercase characters not followed immediately by a lowercase character are * also considered a word). Characters which are not valid as parts of identifiers in Java are dropped from the XML * name before it is split, and words starting with initial uppercase characters have the upper case dropped for * consistency. Note that this method is not threadsafe. * * @param name * @return array of words */ public String[] splitXMLWords(String name) { // start by finding a valid start character int offset = 0; while (!Character.isJavaIdentifierStart(name.charAt(offset))) { if (++offset >= name.length()) { return new String[0]; } } // accumulate the list of words StringBuffer word = new StringBuffer(); m_wordList.clear(); boolean lastupper = false; while (offset < name.length()) { // check next character of name char chr = name.charAt(offset++); if (chr == '-' || chr == '.' || chr == '_') { // force split at each splitting character if (word.length() > 0) { m_wordList.add(word.toString()); word.setLength(0); } } else if (Character.isJavaIdentifierPart(chr)) { // check case of valid identifier part character if (Character.isUpperCase(chr)) { if (!lastupper && word.length() > 0) { // upper after lower, split before upper m_wordList.add(word.toString()); word.setLength(0); } lastupper = true; } else { if (lastupper) { if (word.length() > 1) { // multiple uppers followed by lower, split before last int split = word.length() - 1; m_wordList.add(word.substring(0, split)); char start = Character.toLowerCase(word.charAt(split)); word.setLength(0); word.append(start); } else if (word.length() > 0) { // single upper followed by lower, convert upper to lower word.setCharAt(0, Character.toLowerCase(word.charAt(0))); } } lastupper = false; } word.append(chr); } } if (word.length() > 0) { m_wordList.add(word.toString()); } // return array of words return (String[])m_wordList.toArray(new String[m_wordList.size()]); } /** * Convert a raw package name to a legal Java package name. The raw package name must be in standard package name * form, with periods separating the individual directory components of the package name. * * @param raw basic package name, which may include illegal characters * @return sanitized package name */ public String sanitizePackageName(String raw) { StringBuffer buff = new StringBuffer(raw.length()); boolean first = true; for (int i = 0; i < raw.length();) { char chr = buff.charAt(i); if (first) { if (Character.isJavaIdentifierStart(chr)) { first = false; i++; } else { buff.deleteCharAt(i); } } else if (chr == '.') { first = true; i++; } else if (!Character.isJavaIdentifierPart(chr)) { buff.deleteCharAt(i); } else { i++; } } return buff.toString(); } /** * Convert an XML name to a legal Java class name. * * @param xname XML name * @return converted name */ public String toJavaClassName(String xname) { // split trimed name into a series of words String[] words = splitXMLWords(trimXName(xname)); if (words.length == 0) { return "X"; } // form name by concatenating words with initial uppercase StringBuffer buff = new StringBuffer(); for (int i = 0; i < words.length; i++) { String word = words[i]; buff.append(Character.toUpperCase(word.charAt(0))); if (word.length() > 1) { buff.append(word.substring(1, word.length())); } } return buff.toString(); } /** * Convert a word to a name component. If the supplied word starts with a lowercase letter, this converts it to * upper case. * * @param word * @return word with uppercase initial letter */ public static String toNameWord(String word) { char chr = word.charAt(0); if (Character.isLowerCase(chr)) { StringBuffer buff = new StringBuffer(word); buff.setCharAt(0, Character.toUpperCase(chr)); return buff.toString(); } else { return word; } } /** * Convert a word to a leading name component. If the supplied word starts with an uppercase letter which is not * followed by another uppercase letter, this converts the initial uppercase to lowercase. * * @param word * @return word with lowercase initial letter */ public static String toNameLead(String word) { char chr = word.charAt(0); if (Character.isUpperCase(chr) && (word.length() < 2 || Character.isLowerCase(word.charAt(1)))) { StringBuffer buff = new StringBuffer(word); buff.setCharAt(0, Character.toLowerCase(chr)); return buff.toString(); } else { return word; } } /** * Convert an XML name to a Java value base name. The base name is guaranteed not to match a Java keyword, and is in * normalized camelcase form with leading lower case (unless the first word of the name is all uppercase). * * @param xname XML name * @return converted name */ public String toBaseName(String xname) { // split trimed name into a series of words String[] words = splitXMLWords(trimXName(xname)); if (words.length == 0) { return "x"; } // use single underscore for empty result if (words.length == 0) { words = new String[] { "_" }; } // form name by concatenating words with configured style StringBuffer buff = new StringBuffer(); buff.append(m_fieldPrefix); for (int i = 0; i < words.length; i++) { String word = words[i]; if (i > 0 && m_underscore) { buff.append('_'); } if ((i == 0 && m_upperInitial) || (i > 0 && m_camelCase)) { buff.append(Character.toUpperCase(word.charAt(0))); if (word.length() > 1) { buff.append(word.substring(1, word.length())); } } else { buff.append(word); } } buff.append(m_fieldSuffix); // add leading underscore if match to reserved word String fname = buff.toString(); if (s_reservedWords.contains(fname)) { fname = "_" + fname; } return fname; } /** * Convert text to constant name. * * @param text raw text to be converted * @return constant name */ public String toConstantName(String text) { // insert underscores to separate words of name, and convert invalid characters StringBuffer buff = new StringBuffer(text.length()); boolean lastup = false; boolean multup = false; char lastchar = 0; for (int index = 0; index < text.length(); index++) { char chr = text.charAt(index); if (index == 0 && !Character.isJavaIdentifierStart(chr)) { buff.append('_'); } if (Character.isJavaIdentifierPart(chr)) { if (lastup) { if (Character.isUpperCase(chr)) { multup = true; } else { lastup = false; if (chr == '_') { multup = false; } else if (multup) { buff.insert(buff.length()-1, '_'); multup = false; } } } else if (Character.isUpperCase(chr)) { if (index > 0 && lastchar != '_') { buff.append('_'); } lastup = true; multup = false; } lastchar = Character.toUpperCase(chr); buff.append(lastchar); } } return buff.toString(); } /** * Build a field name using supplied prefix and/or suffix. * * @param base normalized camelcase base name * @param prefix text to be added at start of name * @param suffix text to be added at end of name * @return field name */ private String buildFieldName(String base, String prefix, String suffix) { // check for any change needed int added = prefix.length() + suffix.length(); boolean toupper = m_upperInitial && !Character.isUpperCase(base.charAt(0)); if (added == 0) { // not adding prefix or suffix, check for case conversion if (toupper) { // convert first character to uppercase StringBuffer buff = new StringBuffer(base); buff.setCharAt(0, Character.toUpperCase(buff.charAt(0))); return buff.toString(); } else { // no change needed, just use base name directly return base; } } else { // append prefix and/or suffix, with case conversion if needed StringBuffer buff = new StringBuffer(base.length() + added); buff.append(prefix); int offset = buff.length(); buff.append(base); if (toupper) { buff.setCharAt(offset, Character.toUpperCase(base.charAt(0))); } buff.append(suffix); return buff.toString(); } } /** * Convert base name to normal field name. * * @param base normalized camelcase base name * @return field name */ public String toFieldName(String base) { String prefix = m_fieldPrefix; String suffix = m_fieldSuffix; return buildFieldName(base, prefix, suffix); } /** * Convert base name to static field name. * * @param base normalized camelcase base name * @return field name */ public String toStaticFieldName(String base) { String prefix = m_staticPrefix; String suffix = m_staticSuffix; return buildFieldName(base, prefix, suffix); } /** * Convert base name to property name (used for all method names). The property name is always in initial-upper * camelcase form. * * @param base normalized camelcase base name * @return property name in initial-upper camelcase form */ public String toPropertyName(String base) { if (!Character.isUpperCase(base.charAt(0))) { // convert first character to uppercase StringBuffer buff = new StringBuffer(base); buff.setCharAt(0, Character.toUpperCase(buff.charAt(0))); return buff.toString(); } else { // no change needed, just use base name directly return base; } } /** * Convert property name to read access method name. * * @param prop property name in initial-upper camelcase form * @return read access method name */ public String toReadAccessMethodName(String prop) { return "get" + prop; } /** * Convert property name to write access method name. * * @param prop property name in initial-upper camelcase form * @return write access method name */ public String toWriteAccessMethodName(String prop) { return "set" + prop; } /** * Convert property name to test access method name (for boolean value). * * @param prop property name in initial-upper camelcase form * @return test access method name */ public String toTestAccessMethodName(String prop) { return "is" + prop; } /** * Convert property name to if set access method name (for value in set of alternatives). * * @param prop property name in initial-upper camelcase form * @return if set access method name */ public String toIfSetAccessMethodName(String prop) { return "if" + prop; } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/NewArrayBuilder.java0000644000175000017500000000516410713703146026271 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import org.eclipse.jdt.core.dom.ArrayCreation; import org.eclipse.jdt.core.dom.ArrayInitializer; import org.eclipse.jdt.core.dom.Expression; /** * Abstract syntax tree new array expression builder. This adds convenience methods and control information to the base * builder. */ public class NewArrayBuilder extends ExpressionBuilderBase { /** Array creation expression. */ private final ArrayCreation m_arrayCreation; /** * Constructor. * * @param source * @param expr */ public NewArrayBuilder(ClassBuilder source, ArrayCreation expr) { super(source, expr); m_arrayCreation = expr; } /** * Add operand to expression. This just adds the supplied operand expression as a new initializer value. * * @param operand */ protected void addOperand(Expression operand) { ArrayInitializer init = m_arrayCreation.getInitializer(); if (init == null) { init = m_ast.newArrayInitializer(); m_arrayCreation.setInitializer(init); } init.expressions().add(operand); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/NewInstanceBuilder.java0000644000175000017500000000552311002543776026761 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import org.eclipse.jdt.core.dom.AnonymousClassDeclaration; import org.eclipse.jdt.core.dom.ClassInstanceCreation; import org.eclipse.jdt.core.dom.Expression; /** * Abstract syntax tree new instance expression builder. This adds convenience methods and control information to the * base builder. */ public class NewInstanceBuilder extends ExpressionBuilderBase { /** New instance expression. */ private final ClassInstanceCreation m_newInstance; /** * Constructor. * * @param source * @param expr */ public NewInstanceBuilder(ClassBuilder source, ClassInstanceCreation expr) { super(source, expr); m_newInstance = expr; } /** * Add operand to expression. This just adds the supplied operand expression as a new constructor parameter. * * @param operand */ protected void addOperand(Expression operand) { m_newInstance.arguments().add(operand); } /** * Create an anonymous inner class as the target of this new instance expression. * * @return class */ public ClassBuilder addAnonymousInnerClass() { AnonymousClassDeclaration clas = m_ast.newAnonymousClassDeclaration(); m_newInstance.setAnonymousClassDeclaration(clas); return new ClassBuilder(clas, m_source); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/PackageDirectory.java0000644000175000017500000003415210767276700026463 0ustar moellermoeller/* * Copyright (c) 2006-2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import java.io.File; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.Map; import org.jibx.util.InsertionOrderedMap; /** * Directory for package information. This handles the conversions from namespace URIs to package names, and organizes * the packages in a tree structure. * * @author Dennis M. Sosnoski */ public class PackageDirectory { /** Empty array used for defaults. */ private static final String[] EMPTY_STRING_ARRAY = new String[0]; // // Instance data /** Base directory for code generation. */ private final File m_generateDirectory; /** Leading URI text to be matched (paired with replacement values). These values are matched using case-insensitive comparisons. */ private String[] m_namespaceLeadMatches; /** Replacement text for URI matches (paired with leading URI texts). */ private String[] m_namespaceLeadReplaces; /** Map from schema namespace URI to package (empty if unused). */ private Map m_namespacePackageMap; /** Map from package to base directory for code generation (empty if unused). */ private Map m_packageDirectoryMap; /** Array of case-insensitive strings to be discarded from start of authority component of URI when converting to package name. The default is the string "www." */ private String[] m_authorityDiscards = new String[] { "www." }; /** Map from namespace URI to package information. This is used in combination with the name-package map, since multiple URIs may be converted to the same package name. */ private Map m_uriPackageMap; /** Map from package name to package information. This is used in combination with the URI-package map. */ private InsertionOrderedMap m_namePackageMap; /** Package to use for no-namespace schema components. */ private String m_noNamespacePackage; /** * Constructor. * * @param basedir default base directory for code generation * @param npkg default package for no-namespace schema components */ public PackageDirectory(File basedir, String npkg) { m_generateDirectory = basedir; m_namespaceLeadMatches = EMPTY_STRING_ARRAY; m_namespaceLeadReplaces = EMPTY_STRING_ARRAY; m_namespacePackageMap = Collections.EMPTY_MAP; m_packageDirectoryMap = Collections.EMPTY_MAP; m_uriPackageMap = new HashMap(); m_namePackageMap = new InsertionOrderedMap(); m_noNamespacePackage = npkg; m_namePackageMap.put("", new PackageHolder("", basedir, null)); } /** * Set the namespace lead replacement patterns. This consists of lead texts to be matches and paired replacement * texts. When a particular lead text is found in a URI the replacement text is substituted. * * @param leads * @param repls */ public void setNamespaceLeadReplaces(String[] leads, String[] repls) { m_namespaceLeadMatches = leads; } /** * Set map from namespace URIs to packages. * * @param map String-to-String map */ public void setNSPackageMap(Map map) { m_namespacePackageMap = map; } /** * Set map from package to base generation directory. If this is unset all packages are generated under the default * base directory, as are any packages not covered by this map. All subpackages of a package go under the parent * package unless otherwise specified by this map. * * @param map String-to-File map */ public void setPackageDirMap(Map map) { m_packageDirectoryMap = map; } /** * Check if a character is a hex digit. * * @param chr * @return hex digit flag */ private boolean isHexChar(char chr) { return (chr >= '0' && chr <= '9') || (chr >= 'a' && chr <= 'z') || (chr >= 'A' && chr <= 'Z'); } /** * Get value of character as hex digit. * * @param chr * @return hex digit value */ private int hexValue(char chr) { if (chr >= '0' && chr <= '9') { return chr - '0'; } else { return Character.toLowerCase(chr) - 'a' + 10; } } /** * Check if a character is an ASCII alpha character. * * @param chr * @return alpha character flag */ private static boolean isAsciiAlpha(char chr) { return (chr >= 'a' && chr <= 'z') || (chr >= 'A' && chr <= 'Z'); } /** * Check if a character is an ASCII numeric character. * * @param chr * @return numeric character flag */ private static boolean isAsciiNum(char chr) { return chr >= '0' && chr <= '9'; } /** * Check if a character is an ASCII alpha or numeric character. * * @param chr * @return alpha or numeric character flag */ private static boolean isAsciiAlphaNum(char chr) { return isAsciiAlpha(chr) || isAsciiNum(chr); } /** * Convert namespace URI to package name. * * @param uri * @return package name */ public String uriToPackage(String uri) { // first check for no-namespace namespace if (uri.length() == 0) { return m_noNamespacePackage; } // substitute URI lead text matches String pname = uri.toLowerCase(); for (int i = 0; i < m_namespaceLeadMatches.length; i++) { String lead = m_namespaceLeadMatches[i]; if (pname.startsWith(lead)) { pname = m_namespaceLeadReplaces[i] + pname.substring(lead.length()); break; } } // force expected path separator characters pname = pname.replace('\\', '/'); // discard leading scheme in namespace URI int split = pname.indexOf(':'); if (split > 0 && isAsciiAlpha(pname.charAt(0))) { boolean scheme = true; for (int i = 0; i < split; i++) { char chr = pname.charAt(i); if (!isAsciiAlphaNum(chr) && chr != '-' && chr != '+' && chr != '.') { scheme = false; break; } } if (scheme) { pname = pname.substring(split + 1); } } // delete any port number component int base = pname.indexOf(':'); if (base > 0) { int tail; for (tail = base + 1; tail < pname.length(); tail++) { if (!isAsciiNum(pname.charAt(tail))) { break; } } pname = pname.substring(0, base) + pname.substring(tail); } // preprocess authority, if present, discarding leading matches if (pname.startsWith("//")) { pname = pname.substring(2); for (int i = 0; i < m_authorityDiscards.length; i++) { String match = m_authorityDiscards[i]; if (pname.startsWith(match)) { pname = pname.substring(match.length()); } } } // treat '@' the same as authority (e.g. 'mailto:dms@sosnoski.com') pname = pname.replace('@', '.'); // find end of authority (or first directory in path, don't care) int end = pname.indexOf('/'); if (end < 0) { end = pname.length(); } // reverse order of components in authority StringBuffer buff = new StringBuffer(pname.length()); int mark = end; while ((split = pname.lastIndexOf('.', --mark)) >= 0) { if (buff.length() > 0) { buff.append(pname, split, mark + 1); } else { buff.append(pname, split + 1, mark + 1); } mark = split; } if (mark >= 0) { if (buff.length() > 0) { buff.append('.'); } buff.append(pname, 0, mark + 1); } buff.append(pname.substring(end)); // finish by converting path separators and special characters int index = 0; boolean first = true; while (index < buff.length()) { char chr = buff.charAt(index); boolean delete = false; if (chr == '.') { if (first) { delete = true; } else { first = true; } } else if (chr == '/') { if (first) { delete = true; } else { buff.setCharAt(index, '.'); first = true; } } else if (chr == '+') { buff.setCharAt(index, '_'); first = false; } else if (chr == '%') { if (index + 2 < buff.length()) { char chr1 = buff.charAt(index + 1); char chr2 = buff.charAt(index + 2); if (isHexChar(chr1) && isHexChar(chr2)) { buff.setCharAt(index, (char)(hexValue(chr1) * 16 + hexValue(chr2))); buff.delete(index + 1, index + 3); continue; } } else { delete = true; } } else if (isAsciiAlpha(chr) || (!first && isAsciiNum(chr))) { first = false; } else { delete = true; } if (delete) { buff.deleteCharAt(index); } else { index++; } } if (first && buff.length() > 0) { buff.setLength(buff.length() - 1); } return buff.toString(); } /** * Get package information based on package name. * * @param pname * @return package information */ public PackageHolder getPackage(String pname) { PackageHolder pkg = (PackageHolder)m_namePackageMap.get(pname); if (pkg == null) { // package doesn't exist yet, start by finding the parent package int split = pname.lastIndexOf('.'); PackageHolder parent; if (split >= 0) { parent = getPackage(pname.substring(0, split)); } else if (pname.length() > 0) { parent = getPackage(""); } else { return new PackageHolder("", m_generateDirectory, null); } // check for specified generation directory File gendir = (File)m_packageDirectoryMap.get(pname); if (gendir == null) { File pardir = parent.getGenerateDirectory(); if (pardir != null) { // set directory path based on parent directory gendir = new File(pardir, pname.substring(split + 1)); } } // create the package information pkg = new PackageHolder(pname, gendir, parent); m_namePackageMap.put(pname, pkg); } return pkg; } /** * Get the information for a package. * * @param uri corresponding namespace URI (non-null, empty string for no namespace) * @return package information */ public PackageHolder getPackageForUri(String uri) { // first check for existing package PackageHolder pkg = (PackageHolder)m_uriPackageMap.get(uri); if (pkg == null) { // first check direct mapping of namespace URI to package name String pname = null; if (m_namespacePackageMap != null) { pname = (String)m_namespacePackageMap.get(uri); } // otherwise convert URI to package name if (pname == null) { pname = uriToPackage(uri); } // get package and add to map pkg = getPackage(pname); m_uriPackageMap.put(uri, pkg); } return pkg; } /** * Get the defined packages. The returned list is guaranteed to be ordered such that parent packages precede child * packages. * * @return packages */ public ArrayList getPackages() { ArrayList keys = m_namePackageMap.keyList(); ArrayList packs = new ArrayList(); for (int i = 0; i < keys.size(); i++) { packs.add(m_namePackageMap.get(keys.get(i))); } return packs; } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/PackageHolder.java0000644000175000017500000001715010767276700025733 0ustar moellermoeller/* * Copyright (c) 2006-2008, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import java.io.File; import java.util.ArrayList; import java.util.Arrays; import org.eclipse.jdt.core.dom.AST; import org.jibx.binding.generator.UniqueNameSet; import org.jibx.binding.model.BindingDirectory; import org.jibx.binding.model.BindingHolder; /** * Information for a package to be included in code generated from schema. * * @author Dennis M. Sosnoski */ public class PackageHolder { /** Full package name (dot-separated form). */ private final String m_packageName; /** Target directory for code generation. */ private final File m_generateDirectory; /** Information for parent package. */ private final PackageHolder m_parentPackage; /** Set of class names used in package. */ private final UniqueNameSet m_nameSet; /** List of top-level classes in package. */ private final ArrayList m_classes; /** List of all classes in package, including inner classes. */ private final ArrayList m_allClasses; /** Number of subpackages of this package. */ private int m_subpackageCount; /** * Constructor. * * @param name full package name (dot-separated form) * @param dir target directory for code generation (null if skipping code generation) * @param parent parent package information */ public PackageHolder(String name, File dir, PackageHolder parent) { m_packageName = name; m_generateDirectory = dir; m_parentPackage = parent; if (m_parentPackage != null) { m_parentPackage.m_subpackageCount++; } m_nameSet = new UniqueNameSet(); m_classes = new ArrayList(); m_allClasses = new ArrayList(); if (dir != null) { dir.mkdir(); if (!dir.exists()) { throw new IllegalStateException("Unable to create directory " + dir.getAbsolutePath()); } } } /** * Get generate directory. * * @return generate directory */ public File getGenerateDirectory() { return m_generateDirectory; } /** * Get parent package. * * @return parent package */ public PackageHolder getParent() { return m_parentPackage; } /** * Get fully-qualified package name. * * @return name */ public String getName() { return m_packageName; } /** * Get the total number of classes (including inner classes) in package. * * @return count */ public int getClassCount() { return m_allClasses.size(); } /** * Get the number of subpackages created for this package. * * @return count */ public int getSubpackageCount() { return m_subpackageCount; } /** * Add class to package. * * @param name preferred name for class * @param nconv name converter for class * @param inner use inner classes for substructures * @param enumer enumeration class flag * @return class generator */ public ClassHolder addClass(String name, NameConverter nconv, boolean inner, boolean enumer) { String actual = m_nameSet.add(name); ClassHolder def = enumer ? new EnumerationClassHolder(actual, actual, this, nconv, inner) : new StructureClassHolder(actual, actual, this, nconv, inner); m_classes.add(def); m_allClasses.add(def); return def; } /** * Add derived class to package. This method is only used when top-level classes are being used for substructures. * * @param name preferred name for class * @param base base class name * @param nconv name converter for class * @param enumer enumeration class flag * @return class generator */ public ClassHolder addClass(String name, String base, NameConverter nconv, boolean enumer) { ClassHolder def = enumer ? new EnumerationClassHolder(m_nameSet.add(name), base, this, nconv, false) : new StructureClassHolder(m_nameSet.add(name), base, this, nconv, false); m_classes.add(def); m_allClasses.add(def); return def; } /** * Add an inner class to package. * * @param clas */ public void addInnerClass(ClassHolder clas) { m_allClasses.add(clas); } /** * Generate a specific class within this package. This first tests if the class has already been generated, and if * it has does nothing. * * @param clashold class holder * @param bindhold class binding holder * @param ast */ public void generate(ClassHolder clashold, BindingHolder bindhold, AST ast) { if (!clashold.isGenerated()) { SourceBuilder builder = new SourceBuilder(ast, this, clashold.getName(), clashold.getImports(), clashold.getUnqualifieds()); clashold.generate(builder, bindhold); builder.finish(); } } /** * Generate this package. * * @param ast * @param directory binding directory */ public void generate(AST ast, BindingDirectory directory) { for (int i = 0; i < m_classes.size(); i++) { ClassHolder clashold = (ClassHolder)m_classes.get(i); generate(clashold, directory.getBinding(clashold.getNamespace()), ast); } } /** * Get the field information for every class in this package. The returned pairs have the fully-qualified class name * as the key, and the array of ordered field name and type string pairs as the values. This method is only * meaningful after the class has been generated. * * @return class field information */ public StringObjectPair[] getClassFields() { StringObjectPair[] pairs = new StringObjectPair[m_allClasses.size()]; for (int i = 0; i < m_allClasses.size(); i++) { ClassHolder clas = (ClassHolder)m_allClasses.get(i); pairs[i] = new StringObjectPair(clas.getFullName(), clas.getBuilder().getSortedFields()); } Arrays.sort(pairs); return pairs; } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/PrefixExpressionBuilder.java0000644000175000017500000000502011002543776030050 0ustar moellermoeller/* * Copyright (c) 2008, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import org.eclipse.jdt.core.dom.Expression; import org.eclipse.jdt.core.dom.PrefixExpression; /** * Abstract syntax tree prefix expression builder. This adds convenience methods and control information to the base * builder. */ public class PrefixExpressionBuilder extends ExpressionBuilderBase { /** Cast expression. */ private final PrefixExpression m_expression; /** * Constructor. * * @param source * @param expr * @param operand */ public PrefixExpressionBuilder(ClassBuilder source, PrefixExpression expr, Expression operand) { super(source, expr); m_expression = expr; m_expression.setOperand(operand); } /** * Add operand to expression. This class is not modifiable, so a call to this method just throws an exception. * * @param operand */ protected void addOperand(Expression operand) { throw new IllegalStateException("Internal error: attempt to change operand expression"); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/ReferenceCountMap.java0000644000175000017500000003202410673717106026600 0ustar moellermoeller/* * Copyright (c) 2006-2007, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import java.util.Iterator; /** * Hash map for counting references to Object keys. The map implementation is not very efficient when * resizing, but works well when the size of the map is known in advance or when accesses are substantially more common * than adds. * * @author Dennis M. Sosnoski */ public class ReferenceCountMap { /** Default fill fraction allowed before growing table. */ private static final double DEFAULT_FILL = 0.3d; /** Minimum size used for hash table. */ private static final int MINIMUM_SIZE = 63; /** Number of entries present in table. */ private int m_entryCount; /** Entries allowed before growing table. */ private int m_entryLimit; /** Size of array used for keys. */ private int m_arraySize; /** Offset added (modulo table size) to slot number on collision. */ private int m_hitOffset; /** Array of key table slots. */ private Object[] m_keyTable; /** Array of value table slots. */ private int[] m_valueTable; /** * Constructor with count. * * @param count number of values to assume in initial sizing of table */ public ReferenceCountMap(int count) { // compute initial table size (ensuring odd) m_arraySize = Math.max((int)(count / DEFAULT_FILL), MINIMUM_SIZE); m_arraySize += (m_arraySize + 1) % 2; // initialize the table information m_entryLimit = (int)(m_arraySize * DEFAULT_FILL); m_hitOffset = m_arraySize / 2; m_keyTable = new Object[m_arraySize]; m_valueTable = new int[m_arraySize]; } /** * Default constructor. */ public ReferenceCountMap() { this(0); } /** * Copy (clone) constructor. * * @param base instance being copied */ public ReferenceCountMap(ReferenceCountMap base) { // copy the basic occupancy information m_entryCount = base.m_entryCount; m_entryLimit = base.m_entryLimit; m_arraySize = base.m_arraySize; m_hitOffset = base.m_hitOffset; // copy table of items m_keyTable = new Object[m_arraySize]; System.arraycopy(base.m_keyTable, 0, m_keyTable, 0, m_arraySize); m_valueTable = new int[m_arraySize]; System.arraycopy(base.m_valueTable, 0, m_valueTable, 0, m_arraySize); } /** * Step the slot number for an entry. Adds the collision offset (modulo the table size) to the slot number. * * @param slot slot number to be stepped * @return stepped slot number */ private final int stepSlot(int slot) { return (slot + m_hitOffset) % m_arraySize; } /** * Find free slot number for entry. Starts at the slot based directly on the hashed key value. If this slot is * already occupied, it adds the collision offset (modulo the table size) to the slot number and checks that slot, * repeating until an unused slot is found. * * @param slot initial slot computed from key * @return slot at which entry was added */ private final int freeSlot(int slot) { while (m_keyTable[slot] != null) { slot = stepSlot(slot); } return slot; } /** * Standard base slot computation for a key. * * @param key key value to be computed * @return base slot for key */ private final int standardSlot(Object key) { return (key.hashCode() & Integer.MAX_VALUE) % m_arraySize; } /** * Standard find key in table. This method may be used directly for key lookup using either the * hashCode() method defined for the key objects or the System.identityHashCode() * method, and either the equals() method defined for the key objects or the == * operator, as selected by the hash technique constructor parameter. To implement a hash class based on some other * methods of hashing and/or equality testing, define a separate method in the subclass with a different name and * use that method instead. This avoids the overhead caused by overrides of a very heavily used method. * * @param key to be found in table * @return index of matching key, or -index-1 of slot to be used for inserting key in table if not * already present (always negative) */ private int standardFind(Object key) { // find the starting point for searching table int slot = standardSlot(key); // scan through table to find target key while (m_keyTable[slot] != null) { // check if we have a match on target key if (m_keyTable[slot].equals(key)) { return slot; } else { slot = stepSlot(slot); } } return -slot - 1; } /** * Reinsert an entry into the hash map. This is used when the table is being directly modified, and does not adjust * the count present or check the table capacity. * * @param slot position of entry to be reinserted into hash map * @return true if the slot number used by the entry has has changed, false if not */ private boolean reinsert(int slot) { Object key = m_keyTable[slot]; m_keyTable[slot] = null; return assignSlot(key, m_valueTable[slot]) != slot; } /** * Internal remove pair from the table. Removes the pair from the table by setting the key entry to * null and adjusting the count present, then chains through the table to reinsert any other pairs * which may have collided with the removed pair. If the associated value is an object reference, it should be set * to null before this method is called. * * @param slot index number of pair to be removed */ private void internalRemove(int slot) { // delete pair from table m_keyTable[slot] = null; m_entryCount--; while (m_keyTable[(slot = stepSlot(slot))] != null) { // reinsert current entry in table to fill holes reinsert(slot); } } /** * Restructure the table. This is used when the table is increasing or decreasing in size, and works directly with * the old table representation arrays. It inserts pairs from the old arrays directly into the table without * adjusting the count present or checking the table size. * * @param keys array of keys * @param values array of values */ private void restructure(Object[] keys, int[] values) { for (int i = 0; i < keys.length; i++) { if (keys[i] != null) { assignSlot(keys[i], values[i]); } } } /** * Assign slot for entry. Starts at the slot found by the hashed key value. If this slot is already occupied, it * steps the slot number and checks the resulting slot, repeating until an unused slot is found. This method does * not check for duplicate keys, so it should only be used for internal reordering of the tables. * * @param key to be added to table * @param value associated value for key * @return slot at which entry was added */ private int assignSlot(Object key, int value) { int offset = freeSlot(standardSlot(key)); m_keyTable[offset] = key; m_valueTable[offset] = value; return offset; } /** * Increment a use count in the table. If the key object is already present in the table this adds one to the * reference count; if not present, this adds the key with an initial reference count of one. * * @param key referenced object (non-null) * @return incremented use count */ public int incrementCount(Object key) { // first validate the parameters if (key == null) { throw new IllegalArgumentException("null key not supported"); } else { // check space available int min = m_entryCount + 1; if (min > m_entryLimit) { // find the array size required int size = m_arraySize; int limit = m_entryLimit; while (limit < min) { size = size * 2 + 1; limit = (int)(size * DEFAULT_FILL); } // set parameters for new array size m_arraySize = size; m_entryLimit = limit; m_hitOffset = size / 2; // restructure for larger arrays Object[] keys = m_keyTable; m_keyTable = new Object[m_arraySize]; int[] values = m_valueTable; m_valueTable = new int[m_arraySize]; restructure(keys, values); } // find slot of table int offset = standardFind(key); if (offset >= 0) { // replace existing value for key return ++m_valueTable[offset]; } else { // add new pair to table m_entryCount++; offset = -offset - 1; m_keyTable[offset] = key; m_valueTable[offset] = 1; return 1; } } } /** * Find an entry in the table. * * @param key key for entry to be returned * @return value for key, or zero if key not found */ public final int getCount(Object key) { int slot = standardFind(key); if (slot >= 0) { return m_valueTable[slot]; } else { return 0; } } /** * Get number of entries in map. * * @return entry count */ public int size() { return m_entryCount; } /** * Get iterator for keys in map. The returned iterator is not safe, so the iterator behavior is undefined if the map * is modified. * * @return iterator */ public Iterator iterator() { return SparseArrayIterator.buildIterator(m_keyTable); } /** * Get array of keys in map. * * @return key array */ public Object[] keyArray() { Object[] keys = new Object[m_entryCount]; int fill = 0; for (int i = 0; i < m_arraySize; i++) { if (m_keyTable[i] != null) { keys[fill++] = m_keyTable[i]; } } return keys; } /** * Construct a copy of the table. * * @return shallow copy of table */ public Object clone() { return new ReferenceCountMap(this); } /** * Clear all keys and counts. */ public void clear() { for (int i = 0; i < m_keyTable.length; i++) { if (m_keyTable[i] != null) { m_keyTable[i] = null; m_valueTable[i] = 0; } } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/ReferenceItem.java0000644000175000017500000001502411017732436025745 0ustar moellermoeller/* * Copyright (c) 2007-2008, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import org.apache.log4j.Logger; import org.jibx.schema.SchemaUtils; import org.jibx.schema.elements.AnnotatedBase; import org.jibx.schema.elements.SchemaBase; /** * Information for a reference to a global definition. The reference may be replaced with an inlined copy of the * definition during code generation. */ public class ReferenceItem extends Item { /** Logger for class. */ private static final Logger s_logger = Logger.getLogger(GroupItem.class.getName()); /** Referenced type structure definition. */ private final DefinitionItem m_definition; /** * Copy constructor. * * @param original * @param ref reference (for overrides to copy; null if none) * @param parent */ private ReferenceItem(ReferenceItem original, Item ref, GroupItem parent) { super(original, ref, parent); m_definition = original.m_definition; } /** * Internal constructor for direct reference. * * @param comp schema component * @param parent containing structure (null if a top-level structure) * @param def referenced definition */ /*package*/ ReferenceItem(AnnotatedBase comp, GroupItem parent, DefinitionItem def) { super(comp, parent); m_definition = def; def.countReference(); } /** * Internal constructor for converting group to reference. This is used when an embedded group is converted to a * separate definition, as needed for class reuse. * * @param group * @param def */ /*package*/ ReferenceItem(GroupItem group, DefinitionItem def) { super(group, null, group.getParent()); m_definition = def; def.countReference(); } /** * Get the referenced structure. * * @return reference */ public DefinitionItem getDefinition() { return m_definition; } /** * Inline the referenced structure. This replaces the reference with a deep copy of the definition, copying the * reference name and optional/repeated information over to the definition. * * @return replacement group */ public Item inlineReference() { Item item; AnnotatedBase comp = m_definition.getSchemaComponent(); // Is there any reason for this? It looks like it should work ok without. // int type = comp.type(); // if (m_definition.getChildCount() == 1 && // (type == SchemaBase.ELEMENT_TYPE || type == SchemaBase.ATTRIBUTE_TYPE)) { // // // inlining attribute or element just substitutes the definition for the reference // item = m_definition.getFirstChild().copy(this, getParent()); // if (s_logger.isDebugEnabled()) { // s_logger.debug("Inlining reference to " + SchemaUtils.describeComponent(comp) + // " using direct substitution"); // } // // } else { // inlining anything else creates a new group from the definition item = new GroupItem(this); if (s_logger.isDebugEnabled()) { s_logger.debug("Inlining reference to " + SchemaUtils.describeComponent(comp) + " as new group"); } // } getParent().replaceChild(this, item); return item; } /** * Copy the item under a different parent. * * @param ref reference (for overrides to copy; null if none) * @param parent * @return copy */ protected Item copy(Item ref, GroupItem parent) { return new ReferenceItem(this, ref, parent); } /** * Classify the content of this item as attribute, element, and/or character data content. */ protected void classifyContent() { // handle basic classification for this component super.classifyContent(); // assume the characteristics of the referenced definition m_definition.classifyContent(); if (m_definition.isAttributePresent()) { forceAttributePresent(); } if (m_definition.isElementPresent()) { forceElementPresent(); } if (m_definition.isContentPresent()) { forceContentPresent(); } } /** * Build a description of the reference. * * @param depth current nesting depth * @return description */ public String describe(int depth) { StringBuffer buff = new StringBuffer(depth + 50); buff.append(leadString(depth)); buff.append("reference to "); if (m_definition.isInline()) { buff.append("inlined "); } buff.append(SchemaUtils.describeComponent(m_definition.getSchemaComponent())); buff.append(" with value name "); buff.append(getName()); buff.append(": "); buff.append(SchemaUtils.describeComponent(getSchemaComponent())); buff.append('\n'); return buff.toString(); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/SourceBuilder.java0000644000175000017500000003266110767276700026015 0ustar moellermoeller/* * Copyright (c) 2007-2008, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.core.ToolFactory; import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.AbstractTypeDeclaration; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jdt.core.dom.ImportDeclaration; import org.eclipse.jdt.core.dom.Modifier; import org.eclipse.jdt.core.dom.Name; import org.eclipse.jdt.core.dom.PackageDeclaration; import org.eclipse.jdt.core.dom.ParameterizedType; import org.eclipse.jdt.core.dom.PrimitiveType; import org.eclipse.jdt.core.dom.Type; import org.eclipse.jdt.core.dom.TypeDeclaration; import org.eclipse.jdt.core.dom.PrimitiveType.Code; import org.eclipse.jdt.core.formatter.CodeFormatter; import org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants; import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.Document; import org.eclipse.text.edits.TextEdit; /** * Abstract syntax tree builder. This wraps the AST with convenience methods and added control information. */ public class SourceBuilder { /** Map from primitive type name to type code. */ private static final Map s_primitiveTypeCodes; static { s_primitiveTypeCodes = new HashMap(); s_primitiveTypeCodes.put("boolean", PrimitiveType.BOOLEAN); s_primitiveTypeCodes.put("byte", PrimitiveType.BYTE); s_primitiveTypeCodes.put("char", PrimitiveType.CHAR); s_primitiveTypeCodes.put("double", PrimitiveType.DOUBLE); s_primitiveTypeCodes.put("float", PrimitiveType.FLOAT); s_primitiveTypeCodes.put("int", PrimitiveType.INT); s_primitiveTypeCodes.put("long", PrimitiveType.LONG); s_primitiveTypeCodes.put("short", PrimitiveType.SHORT); s_primitiveTypeCodes.put("void", PrimitiveType.VOID); } /** Actual AST instance. */ private final AST m_ast; /** Package containing this source. */ private final PackageHolder m_package; /** Name of this source. */ private final String m_name; /** Compilation unit. */ private final CompilationUnit m_compilationUnit; /** Imports for source file. */ private final Set m_importsSet; /** Map from class names in imports set to names used. */ private final Map m_nameMap; /** Builders for main classes in file. */ private ArrayList m_classes; /** * Constructor. * * @param ast * @param pack * @param name * @param imports * @param unqualifieds */ public SourceBuilder(AST ast, PackageHolder pack, String name, Set imports, Map unqualifieds) { // initialize basic parameters m_ast = ast; m_package = pack; m_name = name; m_importsSet = imports; m_classes = new ArrayList(); // create file in appropriate package m_compilationUnit = ast.newCompilationUnit(); String pname = pack.getName(); if (pname.length() > 0) { PackageDeclaration packageDeclaration = ast.newPackageDeclaration(); packageDeclaration.setName(ast.newName(pname)); m_compilationUnit.setPackage(packageDeclaration); } // add all imports to file m_nameMap = new HashMap(); for (Iterator iter = imports.iterator(); iter.hasNext();) { String impname = (String)iter.next(); boolean explicit = false; if (impname.startsWith(pname) && pname.length() > 0) { int split = impname.indexOf('.', pname.length()); if (split > 0 && !impname.substring(split+1).startsWith(name + '.')) { explicit = true; } else { m_nameMap.put(impname, impname.substring(pname.length()+1)); } } else if (impname.startsWith("java.lang.") && impname.lastIndexOf('.') <= "java.lang.".length()) { m_nameMap.put(impname, impname.substring("java.lang.".length())); } else { explicit = true; } if (explicit) { ImportDeclaration imp = ast.newImportDeclaration(); imp.setName(ast.newName(impname)); m_compilationUnit.imports().add(imp); int split = impname.lastIndexOf('.') + 1; m_nameMap.put(impname, impname.substring(split)); } } // include mapping for all other local unqualified type names for (Iterator iter = unqualifieds.keySet().iterator(); iter.hasNext();) { String uqname = (String)iter.next(); String fqname = (String)unqualifieds.get(uqname); m_nameMap.put(fqname, uqname); } } /** * AST access for related classes. * * @return AST */ AST getAST() { return m_ast; } /** * Get the name of the package containing this source file. * * @return name */ public String getPackageName() { return m_package.getName(); } /** * Create a type declaration. * * @param cname class name * @param sname superclass name (null if none, i.e. java.lang.Object) * @param isenum Java 5 enum class flag * @return type declaration */ private AbstractTypeDeclaration createClass(String cname, String sname, boolean isenum) { AbstractTypeDeclaration abstype; if (isenum) { if (sname != null) { throw new IllegalArgumentException("Internal error - enumeration type cannot have a superclass"); } abstype = m_ast.newEnumDeclaration(); } else { TypeDeclaration type = m_ast.newTypeDeclaration(); type.setInterface(false); if (sname != null) { type.setSuperclassType(createType(sname)); } abstype = type; } abstype.modifiers().add(m_ast.newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD)); abstype.setName(m_ast.newSimpleName(cname)); return abstype; } /** * Add a new main class to the file. * * @param cname class name * @param sname superclass name (null if none, i.e. java.lang.Object) * @param isenum Java 5 enum class flag * @return builder */ public ClassBuilder newMainClass(String cname, String sname, boolean isenum) { AbstractTypeDeclaration decl = createClass(cname, sname, isenum); m_compilationUnit.types().add(decl); ClassBuilder builder = new ClassBuilder(decl, this); m_classes.add(builder); return builder; } /** * Add a new inner class to the file. * * @param cname class name * @param sname superclass name (null if none, i.e. java.lang.Object) * @param outer containing class builder * @param isenum Java 5 enum class flag * @return builder */ public ClassBuilder newInnerClass(String cname, String sname, ClassBuilder outer, boolean isenum) { AbstractTypeDeclaration decl = createClass(cname, sname, isenum); decl.modifiers().add(m_ast.newModifier(Modifier.ModifierKeyword.STATIC_KEYWORD)); // type.superInterfaceTypes().add(createType("java.io.Serializable")); return new ClassBuilder(decl, outer); } /** * Create type name. * * @param type fully qualified type name * @return name */ protected Name createTypeName(String type) { String name = (String)m_nameMap.get(type); if (name == null) { name = type; } if (name.indexOf('.') > 0) { return m_ast.newName(name); } else { return m_ast.newSimpleName(name); } } /** * Create type definition. This uses the supplied type name, which may include array suffixes, to construct the * actual type definition. * * @param type fully qualified type name, or primitive type name * @return constructed typed definition */ public Type createType(String type) { int arraydepth = 0; while (type.endsWith("[]")) { arraydepth++; type = type.substring(0, type.length()-2); } Type tdef; Code code = (Code)s_primitiveTypeCodes.get(type); if (code == null) { tdef = getAST().newSimpleType(createTypeName(type)); } else { tdef = getAST().newPrimitiveType(code); } if (arraydepth > 0) { tdef = getAST().newArrayType(tdef, arraydepth); } return tdef; } /** * Create a parameterized type. * * @param type fully qualified type name * @param param fully qualified parameter type name * @return type */ public Type createParameterizedType(String type, String param) { ParameterizedType ptype = getAST().newParameterizedType(createType(type)); ptype.typeArguments().add(createType(param)); return ptype; } /** * Generate the actual source file. */ public void finish() { // finish building all the classes in this source for (int i = 0; i < m_classes.size(); i++) { ClassBuilder builder = (ClassBuilder)m_classes.get(i); builder.finish(); } // convert generated AST to text document Map options = new HashMap(); options.put(DefaultCodeFormatterConstants.FORMATTER_TAB_CHAR, JavaCore.SPACE); options.put(DefaultCodeFormatterConstants.FORMATTER_TAB_SIZE, "4"); options.put(DefaultCodeFormatterConstants.FORMATTER_BLANK_LINES_AFTER_PACKAGE, "1"); options.put(DefaultCodeFormatterConstants.FORMATTER_BLANK_LINES_AFTER_IMPORTS, "1"); options.put(DefaultCodeFormatterConstants.FORMATTER_BLANK_LINES_BEFORE_PACKAGE, "1"); options.put(DefaultCodeFormatterConstants.FORMATTER_BLANK_LINES_BEFORE_IMPORTS, "1"); options.put(DefaultCodeFormatterConstants.FORMATTER_BLANK_LINES_BEFORE_METHOD, "1"); options.put(DefaultCodeFormatterConstants.FORMATTER_BRACE_POSITION_FOR_TYPE_DECLARATION, DefaultCodeFormatterConstants.NEXT_LINE); options.put(DefaultCodeFormatterConstants.FORMATTER_ALIGNMENT_FOR_SUPERINTERFACES_IN_TYPE_DECLARATION, DefaultCodeFormatterConstants.createAlignmentValue(false, DefaultCodeFormatterConstants.WRAP_COMPACT, DefaultCodeFormatterConstants.INDENT_BY_ONE)); options.put(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, JavaCore.VERSION_1_5); options.put(JavaCore.COMPILER_SOURCE, JavaCore.VERSION_1_5); options.put(JavaCore.COMPILER_COMPLIANCE, JavaCore.VERSION_1_5); Document doc = new Document(m_compilationUnit.toString()); CodeFormatter fmtr = ToolFactory.createCodeFormatter(options); String text = doc.get(); TextEdit edits = fmtr.format(CodeFormatter.K_COMPILATION_UNIT, text, 0, text.length(), 0, null); if (edits == null) { System.out.println(text); } File gendir = m_package.getGenerateDirectory(); if (gendir != null) { try { edits.apply(doc); text = doc.get(); File file = new File(gendir, m_name + ".java"); FileWriter fwrit = new FileWriter(file); fwrit.write(text); fwrit.flush(); fwrit.close(); System.out.println("Generated class file " + file.getCanonicalPath()); } catch (BadLocationException e) { throw new IllegalStateException("Error in source generation", e); } catch (IOException e) { throw new IllegalStateException("Error in source generation", e); } } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/SparseArrayIterator.java0000644000175000017500000001042410673717106027201 0ustar moellermoeller/* * Copyright (c) 2000-2007, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import java.util.Iterator; import java.util.NoSuchElementException; /** * Iterator class for sparse values in an array. This type of iterator * can be used for an object array which has references interspersed with * nulls. * * @author Dennis M. Sosnoski */ public class SparseArrayIterator implements Iterator { /** Empty iterator. */ public static final SparseArrayIterator EMPTY_ITERATOR = new SparseArrayIterator(new Object[0]); /** Array supplying values for iteration. */ private Object[] m_array; /** Offset of next iteration value. */ private int m_offset; /** * Internal constructor. * * @param array array containing values to be iterated */ private SparseArrayIterator(Object[] array) { m_array = array; m_offset = -1; advance(); } /** * Advance to next iteration value. This advances the current position in * the array to the next non-null value. * * @return true if element available, false if * not */ protected boolean advance() { while (++m_offset < m_array.length) { if (m_array[m_offset] != null) { return true; } } return false; } /** * Check for iteration element available. * * @return true if element available, false if * not */ public boolean hasNext() { return m_offset < m_array.length; } /** * Get next iteration element. * * @return next iteration element * @exception NoSuchElementException if past end of iteration */ public Object next() { if (m_offset < m_array.length) { Object result = m_array[m_offset]; advance(); return result; } else { throw new NoSuchElementException(); } } /** * Remove element from iteration. This optional operation is not supported * and always throws an exception. * * @exception UnsupportedOperationException for unsupported operation */ public void remove() { throw new UnsupportedOperationException(); } /** * Build iterator. * * @param array array containing values to be iterated (may be * null) * @return constructed iterator */ public static Iterator buildIterator(Object[] array) { if (array == null || array.length == 0) { return EMPTY_ITERATOR; } else { return new SparseArrayIterator(array); } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/StatementBuilderBase.java0000644000175000017500000000426210752422370027276 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import org.eclipse.jdt.core.dom.Statement; /** * Base class for all statement builders. This wraps the AST representation with convenience methods and added control * information. * * @author Dennis M. Sosnoski */ public abstract class StatementBuilderBase extends ASTBuilderBase { /** Source builder. */ protected final ClassBuilder m_source; /** * Constructor. * * @param source */ public StatementBuilderBase(ClassBuilder source) { super(source.getAST()); m_source = source; } /** * Get the statement. * * @return statement */ abstract Statement getStatement(); }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/StringKeyed.java0000644000175000017500000000437510752422370025465 0ustar moellermoeller/* * Copyright (c) 2007-2008, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; /** * Base class for a data representation using a string value as a key. This just holds the key and implements the * Comparable interface. */ public class StringKeyed implements Comparable { /** Key string. */ private final String m_key; /** * Constructor. * * @param key */ public StringKeyed(String key) { m_key = key; } /** * Get the key string. * * @return key */ public String getKey() { return m_key; } /** * Compare to another instance. * * @param o other instance * @return difference */ public int compareTo(Object o) { return m_key.compareTo(((StringKeyed)o).m_key); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/StringObjectPair.java0000644000175000017500000000403710752422370026441 0ustar moellermoeller/* * Copyright (c) 2007-2008, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; /** * Holder for a pair consisting of a key string and a value object. */ public class StringObjectPair extends StringKeyed { /** Object value. */ private final Object m_value; /** * Constructor. * * @param key * @param value */ public StringObjectPair(String key, Object value) { super(key); m_value = value; } /** * Get the value object. * * @return value */ public Object getValue() { return m_value; } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/StringPair.java0000644000175000017500000000402310752422370025305 0ustar moellermoeller/* * Copyright (c) 2007-2008, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; /** * Holder for a pair consisting of a key string and a value string. */ public class StringPair extends StringKeyed { /** String value. */ private final String m_value; /** * Constructor. * * @param key * @param value */ public StringPair(String key, String value) { super(key); m_value = value; } /** * Get the value string. * * @return value */ public String getValue() { return m_value; } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/StructureClassHolder.java0000644000175000017500000020456511017732440027361 0ustar moellermoeller/* * Copyright (c) 2006-2008, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import org.apache.log4j.Logger; import org.eclipse.jdt.core.dom.Type; import org.eclipse.jdt.core.dom.InfixExpression.Operator; import org.jibx.binding.model.BindingHolder; import org.jibx.binding.model.CollectionElement; import org.jibx.binding.model.ContainerElementBase; import org.jibx.binding.model.ElementBase; import org.jibx.binding.model.FormatDefaults; import org.jibx.binding.model.FormatElement; import org.jibx.binding.model.MappingElement; import org.jibx.binding.model.NestingAttributes; import org.jibx.binding.model.PropertyAttributes; import org.jibx.binding.model.StructureElement; import org.jibx.binding.model.StructureElementBase; import org.jibx.binding.model.ValueElement; import org.jibx.binding.util.NameUtilities; import org.jibx.runtime.QName; import org.jibx.runtime.Utility; import org.jibx.schema.IArity; import org.jibx.schema.INamed; import org.jibx.schema.SchemaUtils; import org.jibx.schema.codegen.ClassHolder.Value; import org.jibx.schema.elements.AnnotatedBase; import org.jibx.schema.elements.AttributeElement; import org.jibx.schema.elements.CommonCompositorBase; import org.jibx.schema.elements.ElementElement; import org.jibx.schema.elements.SchemaBase; /** * Information for a data class to be included in code generated from schema. * * @author Dennis M. Sosnoski */ public class StructureClassHolder extends ClassHolder { /** Logger for class. */ private static final Logger s_logger = Logger.getLogger(StructureClassHolder.class.getName()); /** Default format definitions map. */ private static final Map s_formatMap; static { s_formatMap = new HashMap(); for (int i = 0; i < FormatDefaults.s_defaultFormats.length; i++) { FormatElement format = FormatDefaults.s_defaultFormats[i]; s_formatMap.put(format.getTypeName(), format); } } /** Flag for collection present in class. */ private boolean m_collectionPresent; /** Parent wrapper for all items included in class. */ private Wrapper m_classGroup; /** Binding definition element for this class. */ private ContainerElementBase m_bindingElement; /** * Constructor. * * @param name class name * @param base base class name * @param pack package information * @param nconv name converter * @param inner use inner classes for substructures */ public StructureClassHolder(String name, String base, PackageHolder pack, NameConverter nconv, boolean inner) { super(name, base, pack, nconv, inner); } /** * Constructor for creating a child inner class definition. * * @param name class name * @param context parent class */ private StructureClassHolder(String name, StructureClassHolder context) { super(name, context); } /** * Derive group names from the containing group prefix and the simple name of the group. * * @param group * @param container (null if none) * @return name */ // static String deriveGroupName(GroupItem group, Group container) { // String prefix = null; // if (container != null) { // prefix = group.getClassName(); // String prior = container.getPrefix(); // if (prior == null) { // prefix = NameConverter.toNameLead(prefix); // } else { // prefix = prior + NameConverter.toNameWord(prefix); // } // prefix = container.uniqueChildPrefix(prefix); // } // return prefix; // } /** * Add the items in a structure to the class representation. This creates a grouping for the items, adding the * grouping to the containing grouping. It should only be used for structures with child items. * * @param struct * @param container */ private void addItems(GroupItem struct, Wrapper container) { for (Item item = struct.getFirstChild(); item != null; item = item.getNext()) { if ((USE_COLLECTIONS || USE_GENERIC_TYPES) && item.isCollection()) { m_collectionPresent = true; } if (item instanceof GroupItem) { GroupItem group = (GroupItem)item; if (group.isInline()) { // create a new group for an inlined compositor only if it's or nested Wrapper into = container; AnnotatedBase comp = item.getSchemaComponent(); if (comp instanceof CommonCompositorBase) { if (comp.type() == SchemaBase.CHOICE_TYPE || comp.getParent() instanceof CommonCompositorBase) { into = new Wrapper(group, container); } } else { into = new Wrapper(group, container); } addItems(group, into); into.adjustName(); } else { // create a new class and populate that ClassHolder child; String text = group.getEffectiveClassName(); if (m_useInnerClasses) { if (m_nameSet.contains(text)) { StructureClassHolder outer = this; while (outer != null) { if (outer.getName().equals(text)) { text += "Inner"; break; } else { outer = (StructureClassHolder)outer.m_outerClass; } } } text = m_nameSet.add(text); child = group.isEnumeration() ? new EnumerationClassHolder(text, this) : new StructureClassHolder(text, this); m_inners.add(child); if (s_logger.isDebugEnabled()) { s_logger.debug("Added inner class " + child.getFullName()); } } else { String fullname = m_baseName + text; child = m_package.addClass(fullname, m_baseName, m_nameConverter, group.isEnumeration()); addImport(child.getFullName(), true); text = child.getName(); if (s_logger.isDebugEnabled()) { s_logger.debug("Added derived class " + child.getFullName()); } } group.setClassName(text); group.setGenerateClass(child); Value value = new Value(item, container); if (!group.isEnumeration()) { group.convertExtensionReference(); importValueType(value); } child.createStructure(group); } } else { importValueType(new Value(item, container)); } } } /** * Get the binding component linked to this class. * * @return binding definition element (<mapping> or <structure>) */ public ContainerElementBase getBinding() { return m_bindingElement; } /** * Set the binding component linked to this class. * * @param container binding definition element (<mapping> or <structure>) */ public void setBinding(ContainerElementBase container) { m_bindingElement = container; } /** * Recursively add all inner enumeration classes as formats to a <mapping> definition. This is used to create the * <format> elements for all nested enumerations, which need to be direct children of the <mapping> element * for the top-level class. * * @param mapping */ private void addInnerFormats(MappingElement mapping) { for (int i = 0; i < m_inners.size(); i++) { ClassHolder inner = (ClassHolder)m_inners.get(i); if (inner instanceof EnumerationClassHolder) { FormatElement format = new FormatElement(); format.setTypeName(inner.getBindingName()); ((EnumerationClassHolder)inner).setBinding(format); mapping.addTopChild(format); } else { ((StructureClassHolder)inner).addInnerFormats(mapping); } } } /** * Convert an item structure to a class representation. This may include creating child classes, where necessary. * * @param group */ public void createStructure(GroupItem group) { if (group.isEnumeration()) { throw new IllegalArgumentException("Internal error - group is an enumeration"); } else { // set the basic configuration information setNamespace(group.getSchemaComponent().getSchema().getEffectiveNamespace()); m_classGroup = new Wrapper(group, null); // populate the actual definition structure addItems(group, m_classGroup); // import the list type if needed if (m_collectionPresent) { addImport(COLLECTION_VARIABLE_TYPE, false); } // import the serializable interface if needed if (IMPLEMENT_SERIALIZABLE) { addImport("java.io.Serializable", false); } } } /** * Add all fixed names in a group to the set of names defined for this class. This calls itself recursively to * handle nested groups. * * @param wrapper */ private void addFixedNames(Wrapper wrapper) { ArrayList values = wrapper.getValues(); for (int i = 0; i < values.size(); i++) { Value value = (Value)values.get(i); Item item = value.getItem(); boolean addname = item.isFixedName(); if (value instanceof Wrapper) { Wrapper childgrp = (Wrapper)value; addFixedNames(childgrp); addname = addname && (childgrp.isSelectorNeeded() || wrapper.isSelectorNeeded()); } if (addname) { String name = item.getEffectiveName(); if (!m_nameSet.add(name).equals(name)) { // TODO: pass in the validation context, create an error throw new IllegalStateException("Name '" + name + "' cannot be used twice in same context"); } } } } /** * Handle value name assignments for a group within this class. This calls itself recursively to handle nested * groups. TODO: set up use-specific linked name sets, so that the same name can be used in different ways without * conflict * * @param wrapper * @param innamed flag for parent group name already fixed */ private void fixFlexibleNames(Wrapper wrapper, boolean innamed) { // check for group which uses a selector (choice or union) String suffix = null; ArrayList values = wrapper.getValues(); if (wrapper.isSelectorNeeded()) { // add the actual variable name used to record current state Item item = wrapper.getItem(); item.setName(m_nameSet.add(m_nameConverter.toBaseName(item.getEffectiveName()) + "Select")); // generate constant for each child value if (wrapper.getSchemaComponent().type() == SchemaBase.UNION_TYPE) { suffix = "_Form"; } else { suffix = "_Choice"; } for (int i = 0; i < values.size(); i++) { Value value = (Value)values.get(i); if (!(value instanceof Wrapper)) { String name = m_nameConverter.toConstantName(value.getItem().getEffectiveName() + suffix); value.setSelectValue(m_nameSet.add(name)); } } } // handle name conversions and recording for (int i = 0; i < values.size(); i++) { Value value = (Value)values.get(i); Item item = value.getItem(); if (value instanceof Wrapper) { // use recursive call to set child group names (adopting name for group if same as first child, for // group inside choice, in order to avoid adding the same name twice for non-conflicting usages) boolean adoptname = false; ArrayList childvals = ((Wrapper)value).getValues(); if (childvals.size() > 0) { Item firstchlditem = ((Value)childvals.get(0)).getItem(); String compname = firstchlditem.getEffectiveName(); String currname = item.getEffectiveName(); if (wrapper.isSelectorNeeded() && Utility.safeEquals(compname, currname)) { adoptname = true; } } boolean passname = item.isFixedName() || (innamed && item.getName() == null); fixFlexibleNames((Wrapper)value, passname); if (adoptname) { item.setName(((Value)childvals.get(0)).getItem().getEffectiveName()); } if (wrapper.isSelectorNeeded()) { String name = m_nameConverter.toConstantName(item.getEffectiveName() + suffix); value.setSelectValue(adoptname ? name : m_nameSet.add(name)); } } else if (!item.isFixedName()) { // just use inherited value name directly if already added String name = item.getEffectiveName(); if (item.getName() == null && innamed) { item.setName(name); } else { // convert and add the value name if (value.isCollection()) { String singular = NameUtilities.depluralize(name); if (!singular.equals(name)) { s_logger.debug("Converted name " + name + " to " + singular); } name = singular; } if (NameConverter.isReserved(name)) { name = name + '_'; } item.setName(m_nameSet.add(name)); } } } } /** * Generate the code to check and set the selection on any containing selector group. This should be used when * setting any value, including inside selector methods (if used), since selector groups may be nested. * * @param selectcall * @param value * @param block * @param builder */ private void generateSelectorSet(boolean selectcall, Value value, BlockBuilder block, ClassBuilder builder) { Wrapper group; while ((group = value.getWrapper()) != null) { if (group.isSelectorNeeded()) { if (selectcall) { // when using select method call, just call that method (it will call containing group method, if // any) InvocationBuilder call = builder.createMemberMethodCall(group.getSelectMethod()); call.addVariableOperand(value.getSelectValue()); block.addCall(call); break; } else { // if setting directly, set this one and continue up to next containing group block.addAssignVariableToField(value.getSelectValue(), group.getSelectField()); } } value = group; } } /** * Generate a test method for a value, if it's part of a group with a selector. * * @param value * @param propname * @param builder */ private void checkIfMethod(Value value, String propname, ClassBuilder builder) { if (value.getWrapper().isSelectorNeeded()) { // add the if method definition for selector group MethodBuilder ifmeth = builder.addMethod("if" + propname, "boolean"); ifmeth.setPublic(); InfixExpressionBuilder testexpr = builder.buildNameOp(value.getWrapper().getSelectField(), Operator.EQUALS); testexpr.addVariableOperand(value.getSelectValue()); ifmeth.createBlock().addReturnExpression(testexpr); } } /** * Set the attributes for a <structure> or <collection> element to represent a wrapped group of values in the * binding. * * @param value * @param struct */ private void setStructureAttributes(Value value, StructureElementBase struct) { struct.setFieldName(value.getFieldName()); if (value.isOptional()) { struct.setUsage(PropertyAttributes.OPTIONAL_USAGE); } } /** * Set the name for a <structure> or <collection> element based on the schema component associated with a * value. * * @param value * @param struct */ private void setStructureName(Value value, StructureElementBase struct) { AnnotatedBase comp = findNamedComponent(value); if (comp != null) { struct.setName(((INamed)comp).getName()); } } /** * Find the component supplying the name to be used for a value. If the value doesn't define an element or attribute * name directly, this searches up through any containing wrappers with no other children until a named component is * found. If that name has not already been represented in the binding this returns that name. Whether obtained * directly or indirectly, the returned name is flagged as used so that it won't be used again. * * @param value * @return component supply name, or null if none */ private AnnotatedBase findNamedComponent(Value value) { // loop to find wrapper with name and no other children while (!value.isNamed()) { Wrapper wrapper = value.getWrapper(); if (wrapper != null && wrapper.getValues().size() == 1) { value = wrapper; } else { return null; } } // check for name used, either directly or at ancestor level with same component AnnotatedBase comp = value.getSchemaComponent(); Value match = value; while (match != null && match.getSchemaComponent() == comp) { if (match.isNameUsed()) { return null; } else { match.setNameUsed(true); match = match.getWrapper(); } } return comp; } /** * Build a <value> binding component for a field. * * @param value * @param propname * @return constructed binding component */ private ValueElement buildValueBinding(Value value, String propname) { // add element to binding structure for simple (primitive or text) value ValueElement element = new ValueElement(); element.setFieldName(value.getFieldName()); // set test method if needed to pick between alternatives Wrapper wrapper = value.getWrapper(); if (wrapper.isSelectorNeeded()) { element.setTestName("if" + propname); element.setUsage(PropertyAttributes.OPTIONAL_USAGE); } else if (value.isOptional()) { element.setUsage(PropertyAttributes.OPTIONAL_USAGE); } // get the schema component supplying an element or attribute name AnnotatedBase comp = findNamedComponent(value); if (comp == null) { element.setEffectiveStyle(ValueElement.TEXT_STYLE); } else { if (comp.type() == SchemaBase.ELEMENT_TYPE) { // value is an element, set the name directly element.setEffectiveStyle(NestingAttributes.ELEMENT_STYLE); ElementElement elem = (ElementElement)comp; element.setName(elem.getName()); if (SchemaUtils.isOptionalElement(elem)) { // TODO: this is needed because the optional status doesn't inherit downward for embedded items, as when // a simpleType is nested inside an optional attribute. should the code be changed to inherit instead? element.setUsage(PropertyAttributes.OPTIONAL_USAGE); } // check for embedded inside a if (wrapper.isSelectorNeeded()) { element.setUsage(PropertyAttributes.OPTIONAL_USAGE); element.setTestName("if" + propname); } } else if (comp.type() == SchemaBase.ATTRIBUTE_TYPE) { // value is an attribute, set the name directly element.setEffectiveStyle(NestingAttributes.ATTRIBUTE_STYLE); AttributeElement attr = (AttributeElement)comp; element.setName(attr.getName()); if (SchemaUtils.isOptionalAttribute(attr)) { // TODO: this is needed because the optional status doesn't inherit downward for embedded items, as when // a simpleType is nested inside an optional attribute. should the code be changed to inherit instead? element.setUsage(PropertyAttributes.OPTIONAL_USAGE); } } else { throw new IllegalStateException("Internal error - expected wrapper element or attribute not found"); } } return element; } /** * Generate the fields and methods for a group, and add to binding. This calls itself recursively to handle nested * groups. * * @param wrapper * @param builder * @param binding * @param holder */ private void buildDataModel(Wrapper wrapper, ClassBuilder builder, ContainerElementBase binding, BindingHolder holder) { // first check if group requires a selector field ArrayList values = wrapper.getValues(); Item grpitem = wrapper.getItem(); if (wrapper.isSelectorNeeded()) { // build the selector field String basename = grpitem.getEffectiveName(); String fieldname = m_nameConverter.toFieldName(basename); wrapper.setSelectField(fieldname); builder.addIntField(fieldname, "-1").setPrivate(); // create constants for each alternative value String descript; if (wrapper.getSchemaComponent().type() == SchemaBase.UNION_TYPE) { descript = "form"; } else { descript = "choice"; } for (int i = 0; i < values.size(); i++) { Value value = (Value)values.get(i); builder.addIntField(value.getSelectValue(), Integer.toString(i)).setPrivateFinal(); } // add selector set method String namesuffix = NameConverter.toNameWord(basename); String resetname = "clear" + namesuffix; String selectname = "set" + namesuffix; wrapper.setSelectMethod(selectname); MethodBuilder setmeth = builder.addMethod(selectname, "void"); setmeth.setPrivate(); BlockBuilder block = setmeth.createBlock(); setmeth.addParameter(descript, "int"); // start by setting any containing selectors generateSelectorSet(USE_SELECTION_SET_METHODS, wrapper, block, builder); // create the set block for when there's no current choice BlockBuilder assignblock = builder.newBlock(); assignblock.addAssignVariableToField(descript, fieldname); // create the exception thrown when choice does not match current setting BlockBuilder throwblock = builder.newBlock(); throwblock.addThrowException("IllegalStateException", "Need to call " + resetname + "() before changing existing " + descript); // finish with the if statement that decides which to execute InfixExpressionBuilder iftest = builder.buildNameOp(fieldname, Operator.EQUALS); iftest.addNumberLiteralOperand("-1"); InfixExpressionBuilder elsetest = builder.buildNameOp(fieldname, Operator.NOT_EQUALS); elsetest.addVariableOperand(descript); block.addIfElseIfStatement(iftest, elsetest, assignblock, throwblock); // add selector clear method MethodBuilder resetmeth = builder.addMethod(resetname, "void"); resetmeth.setPublic(); block = resetmeth.createBlock(); block.addAssignToName(block.numberLiteral("-1"), fieldname); if (s_logger.isDebugEnabled()) { s_logger.debug("Created selector for grouping component " + SchemaUtils.describeComponent(grpitem.getSchemaComponent()) + " in class " + getFullName()); } } // generate all values in group for (int i = 0; i < values.size(); i++) { // get the base name to be used for item Value value = (Value)values.get(i); Item item = value.getItem(); String basename = item.getEffectiveName(); if (value.isCollection()) { basename += "List"; } // generate test method, if inside selector group String propname = NameConverter.toNameWord(basename); checkIfMethod(value, propname, builder); if (value instanceof Wrapper) { // check if wrapper needed for name Wrapper childwrap = (Wrapper)value; if (childwrap.isNamed() && (item.isElementPresent() || item.isAttributePresent())) { // create named or wrapper and add wrapped values to that StructureElementBase struct; StructureElementBase inner; if (childwrap.isCollectionWrapper()) { if (binding.type() == ElementBase.COLLECTION_ELEMENT && ((CollectionElement)binding).getFieldName() == null) { // reuse the already-created collection element in binding struct = inner = (StructureElementBase)binding; } else { // create a new collection element for the binding struct = inner = new CollectionElement(); binding.addChild(struct); String name = ((INamed)childwrap.getSchemaComponent()).getName(); if (name != null) { // use name as wrapper on collection or as embedded element name // TODO: will this work for nested repeating elements? if (item.isCollection()) { // name represents repeated element, use it that way inner = new StructureElement(); struct.addChild(inner); setStructureName(value, struct); } else { // name is a wrapper element for collection, set it that way setStructureName(value, struct); } } } } else { struct = inner = new StructureElement(); setStructureName(value, struct); binding.addChild(struct); } setStructureAttributes(value, struct); if (wrapper.isSelectorNeeded()) { struct.setTestName("if" + propname); struct.setUsage(PropertyAttributes.OPTIONAL_USAGE); } if (childwrap.isSelectorNeeded()) { struct.setChoice(true); struct.setOrdered(false); } buildDataModel(childwrap, builder, inner, holder); if (struct.type() == ElementBase.COLLECTION_ELEMENT && struct.getFieldName() == null) { System.out.println(" with no field"); } } else if (childwrap.isSelectorNeeded() || wrapper.isSelectorNeeded()) { // create unnamed wrapper and add wrapped values to that StructureElement struct = new StructureElement(); setStructureName(value, struct); setStructureAttributes(value, struct); if (childwrap.isSelectorNeeded()) { struct.setChoice(true); struct.setOrdered(false); } binding.addChild(struct); buildDataModel(childwrap, builder, struct, holder); } else { // just ignore this wrapper and add wrapped values directly buildDataModel(childwrap, builder, binding, holder); } } else { // remaining code generation depends on simple or collection item s_logger.debug("Adding value item " + basename); String type = value.getType(); if (type != null) { // set the names to be used for value String fname = m_nameConverter.toFieldName(basename); value.setFieldName(fname); String getname = "get" + propname; value.setGetMethodName(getname); String setname = "set" + propname; value.setSetMethodName(setname); if (value.isCollection() || value.isList()) { // find the types to be used for field and actual instance Type fieldtype; Type gettype; Type settype; Type insttype; if (USE_GENERIC_TYPES) { fieldtype = builder.createParameterizedType(COLLECTION_VARIABLE_TYPE, type); gettype = builder.createParameterizedType(COLLECTION_VARIABLE_TYPE, type); settype = builder.createParameterizedType(COLLECTION_VARIABLE_TYPE, type); insttype = builder.createParameterizedType(COLLECTION_INSTANCE_TYPE, type); } else if (USE_COLLECTIONS) { fieldtype = builder.createType(COLLECTION_VARIABLE_TYPE); gettype = builder.createType(COLLECTION_VARIABLE_TYPE); settype = builder.createType(COLLECTION_VARIABLE_TYPE); insttype = builder.createType(COLLECTION_INSTANCE_TYPE); } else { fieldtype = builder.createType(type + "[]"); gettype = builder.createType(type + "[]"); settype = builder.createType(type + "[]"); insttype = null; } // generate the field as a collection (uninitialized if optional) FieldBuilder field = builder.addField(fname, fieldtype); // if (!value.isOptional()) { if (insttype != null) { field.setInitializer(builder.newInstance(insttype)); } // } field.setPrivate(); // add get method definition (unchecked, but result meaningless if not the selected group item) MethodBuilder getmeth = builder.addMethod(getname, gettype); getmeth.setPublic(); getmeth.createBlock().addReturnNamed(fname); // add the set method definition MethodBuilder setmeth = builder.addMethod(setname, "void"); setmeth.setPublic(); setmeth.addParameter(COLLECTION_VARIABLE_NAME, settype); BlockBuilder block = setmeth.createBlock(); generateSelectorSet(USE_SELECTION_SET_METHODS, value, block, builder); block.addAssignVariableToField(COLLECTION_VARIABLE_NAME, fname); // process list and collection differently for binding CollectionElement collect = null; if (value.isCollection()) { // create a new unless inside a wrapper element if (binding.type() == ElementBase.COLLECTION_ELEMENT) { if (((CollectionElement)binding).getField() == null) { collect = (CollectionElement)binding; } } if (collect == null) { collect = new CollectionElement(); binding.addChild(collect); } // fill in the collection details collect.setFieldName(fname); if (wrapper.isSelectorNeeded()) { collect.setUsage(PropertyAttributes.OPTIONAL_USAGE); collect.setTestName("if" + propname); } if (USE_COLLECTIONS) { collect.setCreateType(COLLECTION_INSTANCE_TYPE); } // check the content (if any) for boolean usevalue = true; String usetype = type; if (item instanceof ReferenceItem) { DefinitionItem definition = ((ReferenceItem)item).getDefinition(); ClassHolder defclas = definition.getGenerateClass(); if (defclas instanceof StructureClassHolder) { // reference to mapped class, configure to handle it properly usevalue = false; if (definition.getSchemaComponent().type() == SchemaBase.ELEMENT_TYPE) { // must be a non-abstract , so use it directly collect.setItemTypeName(defclas.getBindingName()); } else { // abstract mapping reference, create child with map-as type StructureElement struct = new StructureElement(); INamed named = (INamed)definition.getSchemaComponent(); QName qname = named.getQName(); holder.addDependency(qname.getUri()); struct.setMapAsQName(qname); AnnotatedBase comp = findNamedComponent(value); if (comp != null) { struct.setName(((INamed)comp).getName()); } collect.addChild(struct); } } else { usetype = defclas.getBindingName(); } } else if (item instanceof GroupItem) { // handle group directly if a structure class, else just as ClassHolder groupclas = ((GroupItem)item).getGenerateClass(); if (groupclas instanceof StructureClassHolder) { // add element to be filled in by inner class generation usevalue = false; StructureClassHolder classholder = ((StructureClassHolder)groupclas); StructureElement struct = new StructureElement(); struct.setDeclaredType(classholder.getBindingName()); // set attributes without field name (since that will be for collection) setStructureName(value, struct); setStructureAttributes(value, struct); struct.setFieldName(null); // set component for dependent class generation classholder.setBinding(struct); collect.addChild(struct); } else { usetype = groupclas.getBindingName(); } } if (usevalue) { // add element to collection for simple (primitive or text) value ValueElement element = new ValueElement(); element.setEffectiveStyle(NestingAttributes.ELEMENT_STYLE); AnnotatedBase comp = findNamedComponent(value); if (comp == null) { throw new IllegalStateException("Internal error - no name for value in collection"); } else { element.setName(((INamed)comp).getName()); } element.setDeclaredType(usetype); collect.addChild(element); } } else { // determine format conversion handling for type String valsername = null; String valdesername = null; String valuename = null; FormatElement format = (FormatElement)s_formatMap.get(type); if (format != null) { valsername = format.getSerializerName(); valdesername = format.getDeserializerName(); if (valsername == null && !"java.lang.String".equals(type)) { valuename = "toString"; } } else if (item instanceof ReferenceItem) { DefinitionItem def = ((ReferenceItem)item).getDefinition(); if (def.isEnumeration()) { EnumerationClassHolder genclas = (EnumerationClassHolder)def.getGenerateClass(); valsername = EnumerationClassHolder.CONVERTFORCE_METHOD; valuename = genclas.getName() + '.' + EnumerationClassHolder.INSTANCEVALUE_METHOD; } } // add list serializer method to class String sername = "serialize" + propname; MethodBuilder sermeth = builder.addMethod(sername, "java.lang.String"); sermeth.addParameter("values", (Type)builder.clone(settype)); sermeth.setPublicStatic(); // create a simple null return for null parameter string BlockBuilder nullblock = builder.newBlock(); nullblock.addReturnNull(); // create block for actual serialization when parameter non-null BlockBuilder serblock = builder.newBlock(); NewInstanceBuilder newbuff = builder.newInstance("java.lang.StringBuffer"); serblock.addLocalVariableDeclaration("java.lang.StringBuffer", "buff", newbuff); // create body of loop to handle the conversion BlockBuilder forblock = builder.newBlock(); if (USE_GENERIC_TYPES) { forblock.addLocalVariableDeclaration(type, "value", builder.createNormalMethodCall( "iter", "next")); } else if (USE_COLLECTIONS) { CastBuilder castexpr = builder.buildCast(type); castexpr.addOperand(builder.createNormalMethodCall("iter", "next")); forblock.addLocalVariableDeclaration(type, "value", castexpr); } else { forblock.addLocalVariableDeclaration(type, "value", builder.buildArrayIndexAccess( "values", "index")); } // append space to buffer unless empty InfixExpressionBuilder lengthexpr = builder.buildInfix(Operator.GREATER); lengthexpr.addOperand(builder.createNormalMethodCall("buff", "length")); lengthexpr.addNumberLiteralOperand("0"); InvocationBuilder appendcall = builder.createNormalMethodCall("buff", "append"); appendcall.addCharacterLiteralOperand(' '); BlockBuilder spaceblock = builder.newBlock(); spaceblock.addExpressionStatement(appendcall); forblock.addIfStatement(lengthexpr, spaceblock); // append the current value to the buffer appendcall = builder.createNormalMethodCall("buff", "append"); if (valuename != null) { appendcall.addOperand(builder.createNormalMethodCall("value", valuename)); } else if (valdesername != null) { InvocationBuilder desercall = builder.createStaticMethodCall(valdesername); desercall.addVariableOperand("value"); appendcall.addOperand(desercall); } else { appendcall.addVariableOperand("value"); } forblock.addExpressionStatement(appendcall); // build the for loop around the conversion if (USE_GENERIC_TYPES) { Type itertype = builder.createParameterizedType("java.util.Iterator", type); serblock.addIteratedForStatement("iter", itertype, builder.createNormalMethodCall( "values", "iterator"), forblock); } else if (USE_COLLECTIONS) { serblock.addIteratedForStatement("iter", builder.createType("java.util.Iterator"), builder.createNormalMethodCall("values", "iterator"), forblock); } else { serblock.addIndexedForStatement("iter", builder.createNormalMethodCall("values", "iterator"), forblock); } // finish non-null serialization block with buffer conversion serblock.addReturnExpression(builder.createNormalMethodCall("buff", "toString")); // finish with the if statement that decides which to execute InfixExpressionBuilder iftest = builder.buildNameOp("values", Operator.EQUALS); iftest.addNullOperand(); sermeth.createBlock().addIfElseStatement(iftest, nullblock, serblock); // add list deserializer method to class String desername = "deserialize" + propname; MethodBuilder desermeth = builder.addMethod(desername, (Type)builder.clone(gettype)); desermeth.addParameter("text", "java.lang.String"); desermeth.setPublicStatic(); desermeth.addThrows("org.jibx.runtime.JiBXException"); block = desermeth.createBlock(); // build instance creation for anonymous inner class to handle deserialization NewInstanceBuilder newinst = builder.newInstance("org.jibx.runtime.IListItemDeserializer"); ClassBuilder anonclas = newinst.addAnonymousInnerClass(); MethodBuilder innermeth = anonclas.addMethod("deserialize", "java.lang.Object"); innermeth.addParameter("text", "java.lang.String"); innermeth.setPublic(); BlockBuilder innerblock = innermeth.createBlock(); if (valdesername == null) { innerblock.addReturnNamed("text"); } else { InvocationBuilder desercall = builder.createLocalStaticMethodCall(valdesername); desercall.addVariableOperand("text"); innerblock.addReturnExpression(desercall); } block.addLocalVariableDeclaration("org.jibx.runtime.IListItemDeserializer", "ldser", newinst); // build call using anonymous inner class to deserialize to untyped collection InvocationBuilder desercall = builder .createStaticMethodCall("org.jibx.runtime.Utility.deserializeList"); desercall.addVariableOperand("text"); desercall.addVariableOperand("ldser"); // handle the return as appropriate if (USE_GENERIC_TYPES) { CastBuilder castexpr = builder.buildCast((Type)builder.clone(gettype)); castexpr.addOperand(desercall); block.addReturnExpression(castexpr); } else if (USE_COLLECTIONS) { block.addReturnExpression(desercall); } else { // save deserialization result list to local variable block.addLocalVariableDeclaration("java.util.List", "list", desercall); // create null return block BlockBuilder ifnull = builder.newBlock(); ifnull.addReturnNull(); // create non-null return with conversion to array BlockBuilder ifnonnull = builder.newBlock(); InvocationBuilder toarraycall = builder.createNormalMethodCall("list", "toArray"); NewArrayBuilder newarray = builder.newArrayBuilder(type); newarray.addOperand(builder.createNormalMethodCall("list", "size")); toarraycall.addOperand(newarray); CastBuilder castexpr = builder.buildCast((Type)builder.clone(fieldtype)); castexpr.addOperand(toarraycall); ifnonnull.addReturnExpression(castexpr); // finish with the if statement that decides which to execute iftest = builder.buildNameOp("list", Operator.EQUALS); iftest.addNullOperand(); block.addIfElseStatement(iftest, ifnull, ifnonnull); } // handle list serialization and deserialization directly ValueElement valbind = buildValueBinding(value, propname); valbind.setSerializerName(getBindingName() + '.' + sername); valbind.setDeserializerName(getBindingName() + '.' + desername); binding.addChild(valbind); } if (EXTRA_COLLECTION_METHODS && (USE_GENERIC_TYPES || USE_COLLECTIONS)) { // add size method String sizename = "size" + propname; MethodBuilder sizemeth = builder.addMethod(sizename, "int"); sizemeth.setPublic(); InvocationBuilder expr = builder.createNormalMethodCall(fname, "size"); sizemeth.createBlock().addReturnExpression(expr); // add typed indexed get method (AKA binding load-method) String itemname = item.getEffectiveName(); String itemprop = NameConverter.toNameWord(itemname); String loadname = "get" + itemprop; MethodBuilder getitem = builder.addMethod(loadname, type); getitem.setPublic(); getitem.addParameter("index", "int"); expr = builder.createNormalMethodCall(fname, "get"); expr.addVariableOperand("index"); if (USE_GENERIC_TYPES) { getitem.createBlock().addReturnExpression(expr); } else { CastBuilder cast = builder.buildCast(type); cast.addOperand(expr); getitem.createBlock().addReturnExpression(cast); } // add typed add method String addname = "add" + itemprop; MethodBuilder additem = builder.addMethod(addname, "void"); additem.setPublic(); additem.addParameter("item", type); block = additem.createBlock(); expr = builder.createNormalMethodCall(fname, "add"); expr.addVariableOperand("item"); block.addExpressionStatement(expr); // add methods to binding description, if used (only if not using fields directly) // if (collect != null) { // collect.setSizeMethodName(sizename); // collect.setLoadMethodName(loadname); // collect.setAddMethodName(addname); // } } } else { // generate the field as a simple value FieldBuilder field = builder.addField(fname, type); field.setPrivate(); // add get method definition (unchecked, but result meaningless if not the selected group item) MethodBuilder getmeth = builder.addMethod(getname, type); getmeth.setPublic(); getmeth.createBlock().addReturnNamed(fname); // add the set method definition MethodBuilder setmeth = builder.addMethod(setname, "void"); setmeth.setPublic(); setmeth.addParameter(basename, type); BlockBuilder block = setmeth.createBlock(); generateSelectorSet(USE_SELECTION_SET_METHODS, value, block, builder); block.addAssignVariableToField(basename, fname); // build the appropriate binding representation StructureElement struct = null; if (item instanceof ReferenceItem) { // handle reference directly if a structure class, else just as value DefinitionItem def = ((ReferenceItem)item).getDefinition(); ClassHolder defclas = def.getGenerateClass(); if (defclas instanceof StructureClassHolder) { // add element for field, with type name if needed struct = new StructureElement(); if (def.getSchemaComponent().type() != SchemaBase.ELEMENT_TYPE) { QName qname = ((INamed)def.getSchemaComponent()).getQName(); holder.addDependency(qname.getUri()); struct.setMapAsQName(qname); } // fill in structure attributes setStructureName(value, struct); setStructureAttributes(value, struct); /* // special case: delete the name if already set on containing binding component if (struct.getName() != null) { boolean duplname = false; if (binding instanceof StructureElement) { duplname = struct.getName().equals(((StructureElement)binding).getName()); } else if (binding instanceof MappingElement) { duplname = struct.getName().equals(((MappingElement)binding).getName()); } if (duplname) { // same name reused, check if named wrapper relate to same schema component Wrapper ancestor = wrapper; while (!ancestor.isNamed() && ancestor.getValues().size() == 1) { ancestor = ancestor.getWrapper(); } if (ancestor.getSchemaComponent() == item.getSchemaComponent()) { // same name for same schema component, wipe it from this struct.setName(null); } } } */ } } else if (item instanceof GroupItem) { // handle group directly if a structure class, else just as value ClassHolder groupclas = ((GroupItem)item).getGenerateClass(); if (groupclas instanceof StructureClassHolder) { // add element to be filled in by inner class generation struct = new StructureElement(); setStructureName(value, struct); setStructureAttributes(value, struct); ((StructureClassHolder)groupclas).setBinding(struct); } } if (struct == null) { // add simple binding for field binding.addChild(buildValueBinding(value, propname)); } else { // common handling for structure if (wrapper.isSelectorNeeded()) { struct.setUsage(PropertyAttributes.OPTIONAL_USAGE); struct.setTestName("if" + propname); } // add to containing binding component binding.addChild(struct); } } } } } // finish with check that names have been used AnnotatedBase comp = findNamedComponent(wrapper); if (comp != null) { throw new IllegalStateException("Internal error - name '" + ((INamed)comp).getName() + "' not used in binding"); } } /** * Generate this class. * * @param builder class source file builder * @param holder binding holder */ public void generate(SourceBuilder builder, BindingHolder holder) { // setup the class builder String basename = getSuperClass() == null ? null : getSuperClass().getFullName(); ClassBuilder clasbuilder; String name = getName(); if (m_outerClass == null) { clasbuilder = builder.newMainClass(name, basename, false); } else { clasbuilder = builder.newInnerClass(name, basename, m_outerClass.getBuilder(), false); } // handle the common initialization setBuilder(clasbuilder); initClass(m_classGroup, holder); m_classGroup.setNameUsed(true); // add nested definitions to if (m_bindingElement instanceof MappingElement) { addInnerFormats((MappingElement)m_bindingElement); } // fix all the value names String fullname = getFullName(); if (s_logger.isInfoEnabled()) { s_logger.info("Generating class " + fullname + ":\n" + m_classGroup.describe(0)); } addFixedNames(m_classGroup); fixFlexibleNames(m_classGroup, false); if (s_logger.isInfoEnabled()) { s_logger.info("Class " + fullname + " after names fixed:\n" + m_classGroup.describe(0)); } // check for superclass handling needed if (basename != null) { StructureElement struct = new StructureElement(); AnnotatedBase comp = ((StructureClassHolder)getSuperClass()).m_classGroup.getSchemaComponent(); QName qname = ((INamed)comp).getQName(); holder.addDependency(qname.getUri()); struct.setMapAsQName(qname); m_bindingElement.addChild(struct); } buildDataModel(m_classGroup, clasbuilder, m_bindingElement, holder); // generate the binding code // m_classBuilder.addInterface("org.jibx.v2.MappedStructure"); // finish with subclass generation (which might be needed, if enumeration uses inlined type) generateInner(builder, holder); /* * // add the binding code for top-level classes if (m_generateCategory == TYPE_CLASS) { * m_classBuilder.addInterface(TYPE_INTERFACE); FieldBuilder field = m_classBuilder.addField(TYPE_NAME_VARIABLE, * QNAME_TYPE); field.setPrivateStaticFinal(); QName qname = ((INamed)comp).getQName(); * field.setInitializer(m_classBuilder.newInstanceFromStrings(QNAME_TYPE, qname.getUri(), qname.getName())); * MethodBuilder namemeth = m_classBuilder.addMethod(TYPE_NAME_METHOD, QNAME_TYPE); namemeth.setPublic(); * BlockBuilder block = namemeth.createBlock(); block.addReturnNamed(TYPE_NAME_VARIABLE); } else if * (m_generateCategory == ELEMENT_CLASS) { m_classBuilder.addInterface(ELEMENT_INTERFACE); FieldBuilder field = * m_classBuilder.addField(ELEMENT_NAME_VARIABLE, QNAME_TYPE); field.setPrivateStaticFinal(); QName qname = * ((INamed)comp).getQName(); field.setInitializer(m_classBuilder.newInstanceFromStrings(QNAME_TYPE, * qname.getUri(), qname.getName())); MethodBuilder namemeth = m_classBuilder.addMethod(ELEMENT_NAME_METHOD, * QNAME_TYPE); namemeth.setPublic(); BlockBuilder block = namemeth.createBlock(); * block.addReturnNamed(ELEMENT_NAME_VARIABLE); } else if (m_generateCategory == STRUCTURE_CLASS) { * m_classBuilder.addInterface(STRUCTURE_INTERFACE); } if (m_generateCategory != NONBOUND_CLASS) { * InfixExpressionBuilder ifexpr = m_generateCategory == TYPE_CLASS ? null : * m_classBuilder.buildInfix(Operator.OR); if (m_generateCategory != TYPE_CLASS) { // how to handle if present * unmarshalling method? the logic will look like: // if (rdr.isAt("a") || rdr.isAt("b") || ...) { // if (inst == * null || inst.getClass().getName() != "...") { // inst = new ...(); // } // inst._unmarshal(rdr); // } else { // * inst = null; // } // return inst; // so just pass an expression builder? } MethodBuilder marmeth = * m_classBuilder.addMethod(MARSHAL_METHOD, "void"); marmeth.setPublic(); marmeth.addParameter(WRITER_VARNAME, * WRITER_TYPE); MethodBuilder umarmeth = m_classBuilder.addMethod(UNMARSHAL_METHOD, "void"); * umarmeth.setPublic(); umarmeth.addParameter(READER_VARNAME, READER_TYPE); // bindGroup(m_classGroup, * marmeth.createBlock(), ifexpr, umarmeth.createBlock()); } */ } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/SwitchBuilder.java0000644000175000017500000001366111002543774026004 0ustar moellermoeller/* * Copyright (c) 2007-2008, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import java.util.List; import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.Block; import org.eclipse.jdt.core.dom.Expression; import org.eclipse.jdt.core.dom.Statement; import org.eclipse.jdt.core.dom.SwitchCase; import org.eclipse.jdt.core.dom.SwitchStatement; /** * Switch statement builder. This wraps the AST switch representation with convenience methods and added control * information. * * @author Dennis M. Sosnoski */ public class SwitchBuilder extends StatementBuilderBase { /** Method invocation. */ private final SwitchStatement m_switch; /** * Constructor. * * @param source * @param expr expression */ public SwitchBuilder(ClassBuilder source, Expression expr) { super(source); m_switch = source.getAST().newSwitchStatement(); m_switch.setExpression(expr); } /** * Get the statement. * * @return statement */ Statement getStatement() { return m_switch; } /** * Check if a break statement is needed following the statement for a particular case. * * @param stmt * @return true if break needed, false if not */ private static boolean isBreakNeeded(Statement stmt) { switch (stmt.getNodeType()) { case ASTNode.BLOCK: { List stmts = ((Block)stmt).statements(); int size = stmts.size(); if (size == 0) { return true; } else { return isBreakNeeded((Statement)stmts.get(size-1)); } } case ASTNode.RETURN_STATEMENT: case ASTNode.THROW_STATEMENT: return false; default: return true; } } /** * Add case to switch statement with a named constant as the match value. * * @param name named constant * @param stmt statement to be executed */ public void addNamedCase(String name, StatementBuilderBase stmt) { SwitchCase swcase = m_ast.newSwitchCase(); swcase.setExpression(m_ast.newSimpleName(name)); m_switch.statements().add(swcase); m_switch.statements().add(stmt.getStatement()); if (isBreakNeeded(stmt.getStatement())) { m_switch.statements().add(m_ast.newBreakStatement()); } } /** * Add case to switch statement with a number as the match value. * * @param value match value * @param stmt statement to be executed */ public void addNumberCase(String value, StatementBuilderBase stmt) { SwitchCase swcase = m_ast.newSwitchCase(); swcase.setExpression(numberLiteral(value)); m_switch.statements().add(swcase); m_switch.statements().add(stmt.getStatement()); if (isBreakNeeded(stmt.getStatement())) { m_switch.statements().add(m_ast.newBreakStatement()); } } /** * Add default case to switch statement. * * @param stmt statement to be executed */ public void addDefault(StatementBuilderBase stmt) { SwitchCase swcase = m_ast.newSwitchCase(); m_switch.statements().add(swcase); m_switch.statements().add(stmt.getStatement()); if (isBreakNeeded(stmt.getStatement())) { m_switch.statements().add(m_ast.newBreakStatement()); } } /** * Add case to switch statement with new block for case code. * * @param expr * @return block */ private BlockBuilder newCaseBlock(Expression expr) { SwitchCase swcase = m_ast.newSwitchCase(); swcase.setExpression(expr); m_switch.statements().add(swcase); BlockBuilder block = m_source.newBlock(); m_switch.statements().add(block.getStatement()); return block; } /** * Add case to switch statement with returned block for code. * * @param name named constant * @return block */ public BlockBuilder newNamedCase(String name) { return newCaseBlock(m_ast.newSimpleName(name)); } /** * Add case to switch statement with returned block for code. * * @param value match value * @return block */ public BlockBuilder newNumberCase(String value) { return newCaseBlock(numberLiteral(value)); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/codegen/ValueItem.java0000644000175000017500000001051511017732440025116 0ustar moellermoeller/* * Copyright (c) 2007-2008, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.codegen; import org.jibx.runtime.QName; import org.jibx.schema.SchemaUtils; import org.jibx.schema.elements.AnnotatedBase; /** * Information for an item of a predefined type to be included in code generated from schema. * * @author Dennis M. Sosnoski */ public class ValueItem extends Item { /** Predefined type reference. */ private final JavaType m_type; /** Original schema type. */ private final QName m_schemaType; /** * Copy constructor. This creates a copy with a new parent. * * @param original * @param ref reference (for overrides to copy; null if none) * @param parent */ private ValueItem(ValueItem original, Item ref, GroupItem parent) { super(original, ref, parent); if (isOptional() || isCollection()) { throw new IllegalStateException("Internal error - value item should never be repeating or optional"); } m_type = original.m_type; m_schemaType = original.m_schemaType; } /** * Constructor. * * @param comp schema component extension * @param type schema type name * @param ref schema type equivalent (null if not appropriate) * @param parent containing structure (null if a top-level structure) */ /*package*/ ValueItem(AnnotatedBase comp, QName type, JavaType ref, GroupItem parent) { super(comp, parent); m_type = ref; m_schemaType = type; } /** * Get the simple type for this value. * * @return type */ public JavaType getType() { return m_type; } /** * Get schema type name. * * @return name */ public QName getSchemaType() { return m_schemaType; } /** * Copy the item under a different parent. * * @param ref reference (for overrides to copy; null if none) * @param parent * @return copy */ protected Item copy(Item ref, GroupItem parent) { return new ValueItem(this, ref, parent); } /** * Build a description of the item. * * @param depth current nesting depth * @return description */ public String describe(int depth) { StringBuffer buff = new StringBuffer(depth + 50); buff.append(leadString(depth)); buff.append("value of type "); buff.append(m_type.getClassName()); if (m_type.getPrimitiveName() != null) { buff.append(" ("); buff.append(m_type.getPrimitiveName()); buff.append(")"); } buff.append(" with value name "); buff.append(getName()); buff.append(": "); buff.append(SchemaUtils.describeComponent(getSchemaComponent())); buff.append('\n'); return buff.toString(); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/0000755000175000017500000000000011023035620022557 5ustar moellermoellerlibjibx-java-1.1.6a/build/src/org/jibx/schema/elements/AllElement.java0000644000175000017500000000636010624256126025465 0ustar moellermoeller/* Copyright (c) 2006-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import org.jibx.schema.types.Count; import org.jibx.schema.validation.ValidationContext; /** * <all> element definition. Even though <all> is considered a compositor * by the schema specification, it has substantial restrictions on use. * * @author Dennis M. Sosnoski */ public class AllElement extends CommonCompositorDefinition { /** Mask bits for allowed child elements. */ private static long PARTICLE_MASK = ELEMENT_MASKS[ELEMENT_TYPE]; /** * Constructor. */ public AllElement() { super(ALL_TYPE, PARTICLE_MASK); } // // Validation methods /* (non-Javadoc) * @see org.jibx.schema.AnnotatedBase#prevalidate(org.jibx.schema.ValidationContext) */ public void prevalidate(ValidationContext vctx) { // handle base class prevalidation first so values will be available super.prevalidate(vctx); // check added constraints for all Count count = getMaxOccurs(); if (count != null && (count.isUnbounded() || count.getCount() != 1)) { vctx.addError("The element only allows 'maxOccurs' of '1'", this); } count =getMinOccurs(); if (count != null && (count.isUnbounded() || count.getCount() > 1)) { vctx.addError("The element only allows 'minOccurs' of '0' or '1'", this); } } /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#validate(org.jibx.schema.ValidationContext) */ public void validate(ValidationContext vctx) { // TODO handle checks to make sure each element child has minOccurs=0 or 1 // and maxOccurs=1 // continue with base class prevalidation super.validate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/AnnotatedBase.java0000644000175000017500000000723010602646266026154 0ustar moellermoeller/* Copyright (c) 2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import org.jibx.binding.util.StringArray; import org.jibx.schema.support.Conversions; import org.jibx.schema.validation.ValidationContext; /** * Base class for all element structures in schema definition which support * annotations. The 'id' attribute handling is also implemented in this class, * since it goes together with the annotation support in the schema for schema. * Finally, this class maintains the parent element relationship. * * @author Dennis M. Sosnoski */ public abstract class AnnotatedBase extends OpenAttrBase { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "id" }); // // Instance data /** Annotation for this element (null if none). */ private AnnotationElement m_annotation; /** "id" attribute value. */ private String m_id; /** * Constructor. * * @param type element type */ protected AnnotatedBase(int type) { super(type); } /** * Get annotation. * * @return annotation element (null if none) */ public final AnnotationElement getAnnotation() { return m_annotation; } /** * Set annotation. * * @param ann annotation element (null if none) */ public final void setAnnotation(AnnotationElement ann) { m_annotation = ann; } /** * Get "id" attribute value. * * @return id attribute value */ public String getId() { return m_id; } /** * Set "id" value for element. * * @param id id attribute value */ public void setId(String id) { m_id = id; } // // Validation methods /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#prevalidate(org.jibx.schema.ValidationContext) */ public void prevalidate(ValidationContext vctx) { // check for valid "id" attribute value m_id = Conversions.deserializeNCName(m_id, vctx, this); // continue with parent class prevalidation super.prevalidate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/AnnotationElement.java0000644000175000017500000000773410602646266027101 0ustar moellermoeller/* Copyright (c) 2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import java.util.ArrayList; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.schema.support.Conversions; import org.jibx.schema.validation.ValidationContext; /** * Model component for annotation element. * * @author Dennis M. Sosnoski */ public class AnnotationElement extends OpenAttrBase { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "id" }); /** Mask bits for annotation item child elements. */ private long ITEMS_MASK = ELEMENT_MASKS[APPINFO_TYPE] | ELEMENT_MASKS[DOCUMENTATION_TYPE]; // // Instance data /** Filtered list of annotation items. */ private final FilteredSegmentList m_itemsList; /** "id" attribute value. */ private String m_id; /** Annotation items. */ private ArrayList m_items; /** * Constructor. */ public AnnotationElement() { super(ANNOTATION_TYPE); m_itemsList = new FilteredSegmentList(getChildrenWritable(), ITEMS_MASK, this); } // // Base class overrides /* (non-Javadoc) * @see org.jibx.schema.ElementBase#preset(org.jibx.runtime.IUnmarshallingContext) */ protected void preset(IUnmarshallingContext ictx) throws JiBXException { validateAttributes(ictx, s_allowedAttributes); super.preset(ictx); } // // Access methods /** * Get list of annotation item (appInfo and/or documentation) * child elements. * * @return list of attributes */ public FilteredSegmentList getItemsList() { return m_itemsList; } /** * Get "id" attribute value. * * @return id attribute value */ public String getId() { return m_id; } /** * Set "id" value for element. * * @param id id attribute value */ public void setId(String id) { m_id = id; } // // Validation methods /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#prevalidate(org.jibx.schema.ValidationContext) */ public void prevalidate(ValidationContext vctx) { // check for valid "id" attribute value m_id = Conversions.deserializeNCName(m_id, vctx, this); // continue with parent class prevalidation super.prevalidate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/AnnotationItem.java0000644000175000017500000000514410673572516026403 0ustar moellermoeller/* Copyright (c) 2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import java.util.Iterator; import org.jibx.schema.support.LazyList; /** * Annotation item base class. The actual annotation elements are defined as * subclasses. */ public abstract class AnnotationItem extends SchemaBase { /** Annotation item source. */ private String m_source; /** * Constructor. * * @param type element type */ protected AnnotationItem(int type) { super(type); } // // Base class overrides /* (non-Javadoc) * @see org.jibx.schema.SchemaBase#getChildCount() */ public int getChildCount() { return 0; } /* (non-Javadoc) * @see org.jibx.schema.SchemaBase#getChildIterator() */ public Iterator getChildIterator() { return LazyList.EMPTY_ITERATOR; } // // Access methods /** * Get annotation item source. * * @return item source */ public String getSource() { return m_source; } /** * Set annotation item source. * * @param source item source */ public void setSource(String source) { m_source = source; } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/AnyAttributeElement.java0000644000175000017500000000434010602646264027366 0ustar moellermoeller/* * Copyright (c) 2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; /** * anyAttribute element definition. * * @author Dennis M. Sosnoski */ public class AnyAttributeElement extends WildcardBase { /** * Constructor. */ public AnyAttributeElement() { super(ANYATTRIBUTE_TYPE); } // // Base class overrides /* * (non-Javadoc) * * @see org.jibx.binding.schema.ElementBase#preset(org.jibx.runtime.IUnmarshallingContext) */ protected void preset(IUnmarshallingContext ictx) throws JiBXException { validateAttributes(ictx, WildcardBase.s_allowedAttributes); super.preset(ictx); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/AnyElement.java0000644000175000017500000001112110602646266025477 0ustar moellermoeller/* * Copyright (c) 2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.schema.attributes.DefRefAttributeGroup; import org.jibx.schema.attributes.FormChoiceAttribute; import org.jibx.schema.attributes.OccursAttributeGroup; import org.jibx.schema.types.Count; import org.jibx.schema.validation.ValidationContext; /** * anyAttribute element definition. * * @author Dennis M. Sosnoski */ public class AnyElement extends WildcardBase { /** List of allowed attribute names. */ public static final StringArray s_allowedAttributes = new StringArray(WildcardBase.s_allowedAttributes, OccursAttributeGroup.s_allowedAttributes); // // Instance data /** Occurs attribute group. */ private OccursAttributeGroup m_occurs; /** * Constructor. */ public AnyElement() { super(ANY_TYPE); m_occurs = new OccursAttributeGroup(this); } // // Base class overrides /* (non-Javadoc) * @see org.jibx.schema.ElementBase#preset(org.jibx.runtime.IUnmarshallingContext) */ protected void preset(IUnmarshallingContext ictx) throws JiBXException { validateAttributes(ictx, s_allowedAttributes); super.preset(ictx); } // // Delegated methods /** * Get 'maxOccurs' attribute value. * * @return count * @see org.jibx.schema.attributes.OccursAttributeGroup#getMaxOccurs() */ public Count getMaxOccurs() { return m_occurs.getMaxOccurs(); } /** * Get 'minOccurs' attribute value. * * @return count * @see org.jibx.schema.attributes.OccursAttributeGroup#getMinOccurs() */ public Count getMinOccurs() { return m_occurs.getMinOccurs(); } /** * Set 'maxOccurs' attribute value. * * @param count * @see org.jibx.schema.attributes.OccursAttributeGroup#setMaxOccurs(org.jibx.schema.types.Count) */ public void setMaxOccurs(Count count) { m_occurs.setMaxOccurs(count); } /** * Get 'maxOccurs' attribute value. * * @param count * @see org.jibx.schema.attributes.OccursAttributeGroup#setMinOccurs(org.jibx.schema.types.Count) */ public void setMinOccurs(Count count) { m_occurs.setMinOccurs(count); } // // Validation methods /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#prevalidate(org.jibx.schema.ValidationContext) */ public void prevalidate(ValidationContext vctx) { // prevalidate the attributes m_occurs.prevalidate(vctx); // continue with parent class prevalidation super.prevalidate(vctx); } /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#validate(org.jibx.schema.ValidationContext) */ public void validate(ValidationContext vctx) { // validate the attributes m_occurs.validate(vctx); // handle base class validation super.validate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/AppInfoElement.java0000644000175000017500000000116310602646264026307 0ustar moellermoellerpackage org.jibx.schema.elements; import org.w3c.dom.Element; /** * appinfo annotation item element. */ public class AppInfoElement extends AnnotationItem { /** Content of item. */ private Element m_content; /** * Constructor. */ public AppInfoElement() { super(APPINFO_TYPE); } /** * Get content element. * * @return content */ public Element getContent() { return m_content; } /** * Set content element. * * @param content */ public void setContent(Element content) { m_content = content; } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/AttributeElement.java0000644000175000017500000003475110767276600026734 0ustar moellermoeller/* Copyright (c) 2006-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import org.jibx.binding.util.StringArray; import org.jibx.runtime.EnumSet; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.QName; import org.jibx.schema.INamed; import org.jibx.schema.attributes.DefRefAttributeGroup; import org.jibx.schema.attributes.FormChoiceAttribute; import org.jibx.schema.support.Conversions; import org.jibx.schema.validation.ValidationContext; /** * Base representation for both local and global attribute element * definition. * * @author Dennis M. Sosnoski */ public class AttributeElement extends AnnotatedBase implements INamed { /** List of allowed attribute names. */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "default", "fixed", "type", "use" }, DefRefAttributeGroup.s_allowedAttributes, FormChoiceAttribute.s_allowedAttributes, AnnotatedBase.s_allowedAttributes); // // Value set information public static final int OPTIONAL_USE = 0; public static final int PROHIBITED_USE = 1; public static final int REQUIRED_USE = 2; public static final EnumSet s_useValues = new EnumSet(OPTIONAL_USE, new String[] { "optional", "prohibited", "required"}); // // Instance data /** Filtered list of inline type definition elements (zero or one only). */ private final FilteredSegmentList m_inlineTypeList; /** Name or reference. */ private DefRefAttributeGroup m_defRef; /** Form of name. */ private FormChoiceAttribute m_formChoice; /** 'type' attribute value. */ private QName m_type; /** 'use' attribute value type code. */ private int m_useType; /** 'default' attribute value. */ private String m_default; /** 'fixed' attribute value. */ private String m_fixed; /** Attribute definition (from 'ref' attribute - null if none). */ private AttributeElement m_refElement; /** Simple type definition (from 'type' attribute, or inline definition - null if none). */ private CommonTypeDefinition m_typeDefinition; /** Qualified name. */ private QName m_qname; /** * Constructor. */ public AttributeElement() { super(ATTRIBUTE_TYPE); m_inlineTypeList = new FilteredSegmentList(getChildrenWritable(), ELEMENT_MASKS[SIMPLETYPE_TYPE], this); m_defRef = new DefRefAttributeGroup(this); m_formChoice = new FormChoiceAttribute(this); m_useType = -1; } /** * Clear any type information. This method is only visible for internal use, * to be called in the process of setting new type information. */ private void clearType() { m_inlineTypeList.clear(); m_defRef.setRef(null); m_refElement = null; m_type = null; } // // Base class overrides /* (non-Javadoc) * @see org.jibx.schema.ElementBase#preset(org.jibx.runtime.IUnmarshallingContext) */ protected void preset(IUnmarshallingContext ictx) throws JiBXException { validateAttributes(ictx, s_allowedAttributes); super.preset(ictx); } // // Access methods /** * Get 'type' attribute value. * * @return type (null if not set) */ public QName getType() { return m_type; } /** * Set 'type' attribute value. Note that this method should only be used * prior to validation, since it will only set the type name and not link * the actual type information. * * @param type (null if not set) */ public void setType(QName type) { clearType(); m_type = type; } /** * Get 'default' attribute value. * * @return default (null if not set) */ public String getDefault() { return m_default; } /** * Set the 'default' attribute value. * * @param dflt (null if not set) */ public void setDefault(String dflt) { m_default = dflt; } /** * Get 'fixed' attribute value. * * @return fixed (null if not set) */ public String getFixed() { return m_fixed; } /** * Set 'fixed' attribute value. * * @param fixed (null if not set) */ public void setFixed(String fixed) { m_fixed = fixed; } /** * Get 'use' attribute type code. * * @return type code applied to this attribute */ public int getUse() { return m_useType >= 0 ? m_useType : OPTIONAL_USE; } /** * Set 'use' attribute type code. * * @param code (-1 to unset) */ public void setUse(int code) { if (code >= 0) { s_useValues.checkValue(code); } m_useType = code; } /** * Get 'use' attribute text. * * @return text (null if not set) */ public String getUseText() { return s_useValues.getName(m_useType); } /** * Set 'use' attribute text. This method is provided only for use when * unmarshalling. * * @param text * @param ictx */ private void setUseText(String text, IUnmarshallingContext ictx) { m_useType = Conversions.convertEnumeration(text, s_useValues, "use", ictx); } /** * Get qualified name for attribute. This method is only usable after * prevalidation. * * @return qname (null if a reference) */ public QName getQName() { return m_qname; } /** * Get the referenced attribute declaration. This method is only usable * after validation. * * @return referenced attribute declaration, or null if not a * reference */ public AttributeElement getReference() { return m_refElement; } /** * Check if the attribute uses an inline type definition. * * @return true if inline, false if not */ public boolean isInlineType() { return m_inlineTypeList.size() == 1; } /** * Get type definition. This returns the actual type definition for the * attribute, irrespective of whether the attribute uses an attribute * reference, a type reference, or an inline type definition. It is only * usable after validation. * * @return type definition */ public CommonTypeDefinition getTypeDefinition() { if (m_defRef.getRef() != null) { return m_refElement.getTypeDefinition(); } else if (m_typeDefinition != null) { return m_typeDefinition; } else { throw new IllegalStateException("Internal error: no type definition"); } } /** * Set type definition. If the supplied type definition is a global type it * is used by reference; if a local type it is used inline. * * @param def type definition */ public void setTypeDefinition(CommonTypeDefinition def) { // clear existing type information and set new clearType(); m_typeDefinition = def; // check form of type definition if (def.getQName() == null) { // embed inline type definition m_inlineTypeList.add(def); def.setParent(this); } else { // set type reference m_type = def.getQName(); } } // // Delegated methods /** * Get 'name' attribute value. * * @return name * @see org.jibx.schema.attributes.DefRefAttributeGroup#getName() */ public String getName() { return m_defRef.getName(); } /** * Get 'ref' attribute value. * * @return ref * @see org.jibx.schema.attributes.DefRefAttributeGroup#getRef() */ public QName getRef() { return m_defRef.getRef(); } /** * Set 'name' attribute value. * * @param name * @see org.jibx.schema.attributes.DefRefAttributeGroup#setName(java.lang.String) */ public void setName(String name) { m_defRef.setName(name); } /** * Set 'ref' attribute value. * * @param ref * @see org.jibx.schema.attributes.DefRefAttributeGroup#setRef(org.jibx.runtime.QName) */ public void setRef(QName ref) { clearType(); m_defRef.setRef(ref); } /** * Get 'form' attribute type code. * * @return form * @see org.jibx.schema.attributes.FormChoiceAttribute#getForm() */ public int getForm() { return m_formChoice.getForm(); } /** * Get 'form' attribute name value. * * @return form * @see org.jibx.schema.attributes.FormChoiceAttribute#getFormText() */ public String getFormText() { return m_formChoice.getFormText(); } /** * Set 'form' attribute type code. * * @param type * @see org.jibx.schema.attributes.FormChoiceAttribute#setForm(int) */ public void setForm(int type) { m_formChoice.setForm(type); } // // Validation methods /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#prevalidate(org.jibx.schema.ValidationContext) */ public void prevalidate(ValidationContext vctx) { // prevalidate the attributes m_defRef.prevalidate(vctx); m_formChoice.prevalidate(vctx); // check whether global or local definition if (isGlobal()) { // make sure name is supplied if (getName() == null) { vctx.addError("The 'name' attribute is required for a global definition", this); } else { m_qname = new QName(vctx.getCurrentSchema().getTargetNamespace(), getName()); } // make sure prohibited attributes are not present if (getRef() != null || getForm() != -1 || m_useType != -1) { vctx.addError("The 'ref', 'form', and 'use' attributes are prohibited for a global attribute definition", this); } } else { // make sure name or reference is supplied if (getName() == null && getRef() == null) { vctx.addError("Either a 'name' attribute or a 'ref' attribute is required for a local attribute definition", this); } // generate qname if name supplied if (getName() != null) { SchemaElement schema = vctx.getCurrentSchema(); boolean def = schema.isAttributeQualifiedDefault(); String uri = null; if (m_formChoice.isQualified(def)) { uri = vctx.getCurrentSchema().getTargetNamespace(); } m_qname = new QName(uri, getName()); } } // continue with parent class prevalidation super.prevalidate(vctx); } /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#validate(org.jibx.schema.ValidationContext) */ public void validate(ValidationContext vctx) { // start with validating the attributes m_defRef.validate(vctx); m_formChoice.validate(vctx); // check type of definition QName ref = getRef(); if (ref == null) { // set the type definition if (m_type == null) { // verify inline type definition if (m_inlineTypeList.size() == 1) { m_typeDefinition = (CommonTypeDefinition)m_inlineTypeList.get(0); } else if (m_inlineTypeList.size() == 0) { vctx.addWarning("No type defined", this); } else { vctx.addFatal("Only one inline type definition allowed", this); } } else { // look up referenced type definition m_typeDefinition = vctx.findType(m_type); if (m_typeDefinition == null) { vctx.addFatal("Referenced type '" + m_type + "' is not defined", this); } } } else { // make sure element reference is defined m_refElement = vctx.findAttribute(ref); if (m_refElement == null) { vctx.addFatal("Referenced attribute '" + ref + "' is not defined", this); } // check for any conflicting attributes if (m_type != null) { vctx.addError("'type' attribute not allowed with 'ref' attribute", this); } } // handle base class validation if still going if (!vctx.isSkipped(this)) { super.validate(vctx); } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/AttributeGroupElement.java0000644000175000017500000001305710674450164027741 0ustar moellermoeller/* Copyright (c) 2006-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.QName; import org.jibx.schema.INamed; import org.jibx.schema.validation.ValidationContext; /** * Top-level group element definition. * * @author Dennis M. Sosnoski */ public class AttributeGroupElement extends AnnotatedBase implements INamed { /** List of allowed attribute names. */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "name" }, AnnotatedBase.s_allowedAttributes); /** Mask bits for attribute child elements. */ private long ATTRIBUTE_MASK = ELEMENT_MASKS[ATTRIBUTE_TYPE] | ELEMENT_MASKS[ATTRIBUTEGROUP_TYPE]; /** Mask bits for any attribute child elements. */ private long ANYATTRIBUTE_MASK = ELEMENT_MASKS[ANYATTRIBUTE_TYPE]; // // Instance data /** Filtered list of attribute definitions. */ private final FilteredSegmentList m_attributeList; /** Filtered list of anyAttribute definition (zero or one). */ private final FilteredSegmentList m_anyAttributeList; /** 'name' attribute value. */ private String m_name; /** Qualified name (only defined after validation). */ private QName m_qname; /** * Constructor. */ public AttributeGroupElement() { super(ATTRIBUTEGROUP_TYPE); m_attributeList = new FilteredSegmentList(getChildrenWritable(), ATTRIBUTE_MASK, this); m_anyAttributeList = new FilteredSegmentList(getChildrenWritable(), ANYATTRIBUTE_MASK, m_attributeList, this); } // // Access methods /** * Get 'name' attribute value. * * @return name */ public String getName() { return m_name; } /** * Set 'name' attribute value. * * @param name */ public void setName(String name) { m_name = name; } /** * Get qualified name for element. This method is only usable after * prevalidation. * * @return qname (null if not defined) */ public QName getQName() { return m_qname; } /** * Get list of attribute and attributeGroup child elements. * * @return list of attributes */ public FilteredSegmentList getAttributeList() { return m_attributeList; } /** * Get anyAttribute child element. * * @return element, or null if none */ public AnyAttributeElement getAnyAttribute() { return m_anyAttributeList.size() > 0 ? (AnyAttributeElement)m_anyAttributeList.get(0) : null; } /** * Set anyAttribute child element. * * @param element element, or null if unsetting */ public void setAnyAttribute(AnyAttributeElement element) { m_anyAttributeList.clear(); if (element != null) { m_anyAttributeList.add(element); } } // // Overrides of base class methods /* (non-Javadoc) * @see org.jibx.schema.ElementBase#preset(org.jibx.runtime.IUnmarshallingContext) */ protected void preset(IUnmarshallingContext ictx) throws JiBXException { validateAttributes(ictx, s_allowedAttributes); super.preset(ictx); } // // Validation methods /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#prevalidate(org.jibx.schema.ValidationContext) */ public void prevalidate(ValidationContext vctx) { // check for missing items if (m_name == null) { vctx.addError("Missing required 'name' attribute", this); } else { m_qname = new QName(vctx.getCurrentSchema().getTargetNamespace(), getName()); } if (m_anyAttributeList.size() > 1) { vctx.addError("Only one child allowed", this); } // continue with parent class prevalidation super.prevalidate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/AttributeGroupRefElement.java0000644000175000017500000001016010602646264030365 0ustar moellermoeller/* Copyright (c) 2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.QName; import org.jibx.schema.validation.ValidationContext; /** * Definition for embedded attributeGroup element (attribute group * reference). * * @author Dennis M. Sosnoski */ public class AttributeGroupRefElement extends AnnotatedBase { /** List of allowed attribute names. */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "ref" }, AnnotatedBase.s_allowedAttributes); // // Instance data /** Reference definition. */ private QName m_ref; /** Referenced element (filled in by validation). */ private AttributeGroupElement m_refGroup; /** * Constructor. */ public AttributeGroupRefElement() { super(ATTRIBUTEGROUP_TYPE); } // // Base class overrides /* (non-Javadoc) * @see org.jibx.schema.ElementBase#preset(org.jibx.runtime.IUnmarshallingContext) */ protected void preset(IUnmarshallingContext ictx) throws JiBXException { validateAttributes(ictx, s_allowedAttributes); super.preset(ictx); } // // Access methods /** * Get 'ref' attribute value. * * @return ref */ public QName getRef() { return m_ref; } /** * Set 'ref' attribute value. * * @param ref */ public void setRef(QName ref) { m_ref = ref; } /** * Get the referenced attributeGroup declaration. This method is only usable * after validation. * * @return referenced group definition */ public AttributeGroupElement getReference() { return m_refGroup; } // // Validation methods /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#prevalidate(org.jibx.schema.ValidationContext) */ public void prevalidate(ValidationContext vctx) { if (m_ref == null) { vctx.addFatal("'ref' attribute is required for attributeGroup reference", this); } } /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#validate(org.jibx.schema.ValidationContext) */ public void validate(ValidationContext vctx) { // make sure element reference is defined m_refGroup = vctx.findAttributeGroup(m_ref); if (m_refGroup == null) { vctx.addFatal("Referenced attributeGroup '" + m_ref + "' is not defined", this); } // handle base class validation super.validate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/ChoiceElement.java0000644000175000017500000000350710624256126026147 0ustar moellermoeller/* Copyright (c) 2006-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; /** * <choice> element definition. This is just a trivial variation of the base * compositor class. * * @author Dennis M. Sosnoski */ public class ChoiceElement extends CommonCompositorDefinition { /** * Constructor. */ public ChoiceElement() { super(CHOICE_TYPE, CHOICE_SEQUENCE_PARTICLE_MASK); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/CommonComplexModification.java0000644000175000017500000001347410674556712030566 0ustar moellermoeller/* * Copyright (c) 2006-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.schema.validation.ValidationContext; /** * Base representation for all complex type modification elements. This includes * both extension and restriction, but only when used with * complex types. * * @author Dennis M. Sosnoski */ public abstract class CommonComplexModification extends CommonTypeDerivation implements IComplexStructure { /** Mask bits for content definition child elements. */ private long CONTENT_DEFINITION_MASK = ELEMENT_MASKS[ALL_TYPE] | ELEMENT_MASKS[CHOICE_TYPE] | ELEMENT_MASKS[GROUP_TYPE] | ELEMENT_MASKS[SEQUENCE_TYPE]; /** Mask bits for attribute child elements. */ private long ATTRIBUTE_MASK = ELEMENT_MASKS[ATTRIBUTE_TYPE] | ELEMENT_MASKS[ATTRIBUTEGROUP_TYPE]; /** Mask bits for attribute child elements. */ private long ANYATTRIBUTE_MASK = ELEMENT_MASKS[ANYATTRIBUTE_TYPE]; // // Instance data /** Filtered list of content definitions. */ private final FilteredSegmentList m_contentDefinitionList; /** Filtered list of attribute definitions. */ private final FilteredSegmentList m_attributeList; /** Filtered list of anyAttribute definitions (zero or one). */ private final FilteredSegmentList m_anyAttributeList; /** * Constructor. * * @param type actual element type */ public CommonComplexModification(int type) { super(type); m_contentDefinitionList = new FilteredSegmentList( getChildrenWritable(), CONTENT_DEFINITION_MASK, this); m_attributeList = new FilteredSegmentList(getChildrenWritable(), ATTRIBUTE_MASK, m_contentDefinitionList, this); m_anyAttributeList = new FilteredSegmentList(getChildrenWritable(), ANYATTRIBUTE_MASK, m_attributeList, this); } // // Base class overrides /* (non-Javadoc) * @see org.jibx.schema.elements.CommonTypeDerivation#isComplexType() */ public boolean isComplexType() { return true; } /* (non-Javadoc) * @see org.jibx.schema.ElementBase#preset(org.jibx.runtime.IUnmarshallingContext) */ protected void preset(IUnmarshallingContext ictx) throws JiBXException { validateAttributes(ictx, s_allowedAttributes); super.preset(ictx); } /* (non-Javadoc) * @see org.jibx.schema.elements.IComplexStructure#getContentDefinition() */ public CommonCompositorDefinition getContentDefinition() { return m_contentDefinitionList.size() > 0 ? (CommonCompositorDefinition)m_contentDefinitionList.get(0) : null; } /* (non-Javadoc) * @see org.jibx.schema.elements.IComplexStructure#setContentDefinition(org.jibx.schema.elements.CommonCompositorDefinition) */ public void setContentDefinition(CommonCompositorDefinition element) { m_contentDefinitionList.clear(); if (element != null) { m_contentDefinitionList.add(element); } } /* (non-Javadoc) * @see org.jibx.schema.elements.IComplexStructure#getAttributeList() */ public FilteredSegmentList getAttributeList() { return m_attributeList; } /* (non-Javadoc) * @see org.jibx.schema.elements.IComplexStructure#getAnyAttribute() */ public AnyAttributeElement getAnyAttribute() { return m_anyAttributeList.size() > 0 ? (AnyAttributeElement)m_anyAttributeList.get(0) : null; } /* (non-Javadoc) * @see org.jibx.schema.elements.IComplexStructure#setAnyAttribute(org.jibx.schema.elements.AnyAttributeElement) */ public void setAnyAttribute(AnyAttributeElement element) { m_anyAttributeList.clear(); if (element != null) { m_anyAttributeList.add(element); } } // // Validation methods /* * (non-Javadoc) * * @see org.jibx.schema.ComponentBase#prevalidate(org.jibx.schema.ValidationContext) */ public void prevalidate(ValidationContext vctx) { // check form of definition if (m_anyAttributeList.size() > 1) { vctx.addError("Only one child allowed", this); } // continue with parent class prevalidation super.prevalidate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/CommonCompositorBase.java0000644000175000017500000000762710651200244027542 0ustar moellermoeller/* Copyright (c) 2006-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import org.jibx.binding.util.StringArray; import org.jibx.schema.IArity; import org.jibx.schema.attributes.OccursAttributeGroup; import org.jibx.schema.types.Count; import org.jibx.schema.validation.ValidationContext; /** * Base class for all complex content model compositors. This includes the * special case of the <group> (reference) compositor, which doesn't contain * any children but acts as a placeholder for the compositor in the <group> * definition. * * @author Dennis M. Sosnoski */ public abstract class CommonCompositorBase extends AnnotatedBase implements IArity { /** List of allowed attribute names. */ public static final StringArray s_allowedAttributes = new StringArray(OccursAttributeGroup.s_allowedAttributes, AnnotatedBase.s_allowedAttributes); // // Instance data /** Attribute values for specify occurance constraints. */ private OccursAttributeGroup m_occurs; /** * Constructor. * * @param type element type */ protected CommonCompositorBase(int type) { super(type); m_occurs = new OccursAttributeGroup(this); } // // Access methods // // Attribute delegate methods /* (non-Javadoc) * @see org.jibx.schema.attributes.OccursAttributeGroup#getMaxOccurs() */ public Count getMaxOccurs() { return m_occurs.getMaxOccurs(); } /* (non-Javadoc) * @see org.jibx.schema.attributes.OccursAttributeGroup#getMinOccurs() */ public Count getMinOccurs() { return m_occurs.getMinOccurs(); } /* (non-Javadoc) * @see org.jibx.schema.attributes.OccursAttributeGroup#setMaxOccurs(org.jibx.schema.attributes.Count) */ public void setMaxOccurs(Count count) { m_occurs.setMaxOccurs(count); } /* (non-Javadoc) * @see org.jibx.schema.attributes.OccursAttributeGroup#setMinOccurs(org.jibx.schema.attributes.Count) */ public void setMinOccurs(Count count) { m_occurs.setMinOccurs(count); } // // Validation methods /* (non-Javadoc) * @see org.jibx.schema.AnnotatedBase#prevalidate(org.jibx.schema.ValidationContext) */ public void prevalidate(ValidationContext vctx) { // validate the attributes m_occurs.prevalidate(vctx); // continue with base class prevalidation super.prevalidate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/CommonCompositorDefinition.java0000644000175000017500000000622610624256130030757 0ustar moellermoeller/* Copyright (c) 2006-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; /** * Compositor for complex content model, including the special case of <all>. * The subclasses implement the different models for how nested particles are * combined. * * @author Dennis M. Sosnoski */ public abstract class CommonCompositorDefinition extends CommonCompositorBase { /** Mask for child elements allowed by <choice> and <sequence>. */ protected static long CHOICE_SEQUENCE_PARTICLE_MASK = ELEMENT_MASKS[ANY_TYPE] | ELEMENT_MASKS[CHOICE_TYPE] | ELEMENT_MASKS[ELEMENT_TYPE] | ELEMENT_MASKS[GROUP_TYPE] | ELEMENT_MASKS[SEQUENCE_TYPE]; // // Instance data /** Filtered list of composited particle elements. */ private final FilteredSegmentList m_particleList; /** * Constructor. * * @param type element type * @param mask mask for allowed particle elements */ protected CommonCompositorDefinition(int type, long mask) { super(type); m_particleList = new FilteredSegmentList(getChildrenWritable(), mask, this); } // // Access methods /** * Get list of composited particles. * * @return list */ public FilteredSegmentList getParticleList() { return m_particleList; } // // Overrides of base class methods /* (non-Javadoc) * @see org.jibx.schema.ElementBase#preset(org.jibx.runtime.IUnmarshallingContext) */ protected void preset(IUnmarshallingContext ictx) throws JiBXException { validateAttributes(ictx, s_allowedAttributes); super.preset(ictx); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/CommonContentBase.java0000644000175000017500000001012210624256130027003 0ustar moellermoeller/* Copyright (c) 2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import org.jibx.schema.validation.ValidationContext; /** * Common base for simpleContent and complexContent elements. * * @author Dennis M. Sosnoski */ public abstract class CommonContentBase extends AnnotatedBase { /** Mask bits for content derivation child elements. */ private long CONTENT_DERIVATION_MASK = ELEMENT_MASKS[EXTENSION_TYPE] | ELEMENT_MASKS[RESTRICTION_TYPE]; // // Instance data /** Filtered list of content derivation elements (must be exactly one). */ private final FilteredSegmentList m_contentDerivationList; /** * Constructor. * * @param type actual element type */ public CommonContentBase(int type) { super(type); m_contentDerivationList = new FilteredSegmentList(getChildrenWritable(), CONTENT_DERIVATION_MASK, this); } // // Access methods /** * Check if a complex content definition. * * @return true if complex content, false if * simple content */ public abstract boolean isComplexContent(); /** * Get derivation child element. This is either an <extension> or a * <restriction> element. * * @return derivation element, or null if not yet set */ public CommonTypeDerivation getDerivation() { return m_contentDerivationList.size() > 0 ? (CommonTypeDerivation)m_contentDerivationList.get(0) : null; } /** * Set derivation child element. This is either an <extension> or a * <restriction> element. * * @param element derivation element, or null if unsetting */ public void setDerivation(CommonTypeDerivation element) { m_contentDerivationList.clear(); if (element != null) { m_contentDerivationList.add(element); element.setParent(this); } } // // Validation methods /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#prevalidate(org.jibx.schema.ValidationContext) */ public void prevalidate(ValidationContext vctx) { // make sure exactly one content definition item is present if (m_contentDerivationList.size() == 0 ) { vctx.addError("Missing required or child element", this); } else if (m_contentDerivationList.size() > 1) { vctx.addError("Only one or child element allowed", this); } // continue with parent class prevalidation super.prevalidate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/CommonTypeDefinition.java0000644000175000017500000001032710767276600027553 0ustar moellermoeller/* Copyright (c) 2006-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import org.jibx.binding.util.StringArray; import org.jibx.runtime.QName; import org.jibx.schema.INamed; import org.jibx.schema.validation.ValidationContext; /** * Base representation for all type definition elements. * * @author Dennis M. Sosnoski */ public abstract class CommonTypeDefinition extends AnnotatedBase implements INamed { /** List of allowed attribute names. */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "name" }, AnnotatedBase.s_allowedAttributes); /** 'name' attribute value. */ private String m_name; /** Qualified name. */ protected QName m_qname; /** * Constructor. * * @param type actual element type */ public CommonTypeDefinition(int type) { super(type); } /** * Check if a complex type definition. * * @return true if complex type, false if simple * type */ public abstract boolean isComplexType(); /** * Check if a predefined type definition. * * @return true if predefined, false if user type */ public abstract boolean isPredefinedType(); /** * Get 'name' attribute value. * * @return name */ public String getName() { return m_name; } /** * Set 'name' attribute value. * * @param name */ public void setName(String name) { m_name = name; } /** * Get qualified name for type. This method is only usable after validation. * * @return qname (null if not defined) */ public QName getQName() { return m_qname; } // // Validation methods /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#prevalidate(org.jibx.schema.ValidationContext) */ public void prevalidate(ValidationContext vctx) { // check whether global or local definition if (isGlobal()) { // make sure name is supplied for global complex type if (getName() == null) { vctx.addError("The 'name' attribute is required for a global definition", this); } else { m_qname = new QName(vctx.getCurrentSchema().getTargetNamespace(), getName()); } } else { // make sure local type prohibited name attribute is not present if (getName() != null) { vctx.addError("The 'name' attribute is prohibited for a local definition", this); } } // continue with parent class prevalidation super.prevalidate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/CommonTypeDerivation.java0000644000175000017500000001020110673572516027557 0ustar moellermoeller/* Copyright (c) 2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import org.jibx.binding.util.StringArray; import org.jibx.runtime.QName; import org.jibx.schema.validation.ValidationContext; /** * Base class for all extension and restriction element * variations. * * @author Dennis M. Sosnoski */ public abstract class CommonTypeDerivation extends AnnotatedBase { /** List of allowed attribute names. */ public static final StringArray s_allowedAttributes = new StringArray( new String[] { "base" }, AnnotatedBase.s_allowedAttributes); // // Instance data /** 'base' attribute value. */ private QName m_base; /** Referenced type definition (null if none). */ private CommonTypeDefinition m_typeDef; /** * Constructor. * * @param type actual element type */ protected CommonTypeDerivation(int type) { super(type); } // // Access methods /** * Get 'base' attribute value. * * @return attribute value */ public QName getBase() { return m_base; } /** * Set 'base' attribute value. * * @param base attribute value */ public void setBase(QName base) { m_base = base; } /** * Get the base type definition. This method is only usable after * validation. * * @return base type */ public CommonTypeDefinition getBaseType() { return m_typeDef; } /** * Check if complex type derivation. * * @return true if complex type derivation, false * if simple type derivation */ public abstract boolean isComplexType(); /** * Check if extension derivation. * * @return true if extension, false if restriction */ public abstract boolean isExtension(); // // Validation methods /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#prevalidate(org.jibx.schema.ValidationContext) */ public void prevalidate(ValidationContext vctx) { if (getBase() == null) { vctx.addError("The 'base' attribute is required for an extension or restriction", this); } } /* * (non-Javadoc) * * @see org.jibx.schema.ComponentBase#validate(org.jibx.schema.ValidationContext) */ public void validate(ValidationContext vctx) { // look up referenced type definition m_typeDef = vctx.findType(m_base); if (m_typeDef == null) { vctx.addFatal("Referenced type '" + m_base + "' is not defined", this); } // continue with parent class validation super.validate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/ComplexContentElement.java0000644000175000017500000000606210602646266027722 0ustar moellermoeller/* Copyright (c) 2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; /** * Representation for a complexContent element. * * @author Dennis M. Sosnoski */ public class ComplexContentElement extends CommonContentBase { /** List of allowed attribute names. */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "mixed" }, AnnotatedBase.s_allowedAttributes); // // Instance data /** 'mixed' attribute value. */ private Boolean m_mixed; /** * Constructor. */ public ComplexContentElement() { super(COMPLEXCONTENT_TYPE); } // // Base class overrides /* (non-Javadoc) * @see org.jibx.schema.elements.CommonContentBase#isComplexContent() */ public boolean isComplexContent() { return true; } /* (non-Javadoc) * @see org.jibx.schema.ElementBase#preset(org.jibx.runtime.IUnmarshallingContext) */ protected void preset(IUnmarshallingContext ictx) throws JiBXException { validateAttributes(ictx, s_allowedAttributes); super.preset(ictx); } // // Access methods /** * Get 'mixed' attribute value. * * @return mixed (null if not set) */ public Boolean getMixed() { return m_mixed; } /** * Set 'mixed' attribute value. * * @param mixed (null if not set) */ public void setMixed(Boolean mixed) { m_mixed = mixed; } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/ComplexExtensionElement.java0000644000175000017500000000374610624256130030261 0ustar moellermoeller/* Copyright (c) 2006-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; /** * Definition for extension element used with a complex type. * * @author Dennis M. Sosnoski */ public class ComplexExtensionElement extends CommonComplexModification { /** * Constructor. */ public ComplexExtensionElement() { super(EXTENSION_TYPE); } // // Base class overrides /* (non-Javadoc) * @see org.jibx.schema.elements.CommonTypeDerivation#isExtension() */ public boolean isExtension() { return true; } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/ComplexRestrictionElement.java0000644000175000017500000000376210673572516030625 0ustar moellermoeller/* Copyright (c) 2006-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; /** * Definition for restriction element used with a complex type. * * @author Dennis M. Sosnoski */ public class ComplexRestrictionElement extends CommonComplexModification { /** * Constructor. */ protected ComplexRestrictionElement() { super(RESTRICTION_TYPE); } // // Base class overrides /* (non-Javadoc) * @see org.jibx.schema.elements.CommonTypeDerivation#isExtension() */ public boolean isExtension() { return false; } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/ComplexTypeElement.java0000644000175000017500000002447410767276600027243 0ustar moellermoeller/* Copyright (c) 2006-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.schema.types.AllEnumSet; import org.jibx.schema.validation.ValidationContext; /** * complexType element definition. * * @author Dennis M. Sosnoski */ public class ComplexTypeElement extends CommonTypeDefinition implements IComplexStructure { /** List of allowed attribute names. */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "abstract", "block", "final", "mixed" }, CommonTypeDefinition.s_allowedAttributes); /** Mask bits for content type child elements. */ private long CONTENT_TYPE_MASK = ELEMENT_MASKS[COMPLEXCONTENT_TYPE] | ELEMENT_MASKS[SIMPLECONTENT_TYPE]; /** Mask bits for content definition child elements. */ private long CONTENT_DEFINITION_MASK = ELEMENT_MASKS[ALL_TYPE] | ELEMENT_MASKS[CHOICE_TYPE] | ELEMENT_MASKS[GROUP_TYPE] | ELEMENT_MASKS[SEQUENCE_TYPE]; /** Mask bits for attribute child elements. */ private long ATTRIBUTE_MASK = ELEMENT_MASKS[ATTRIBUTE_TYPE] | ELEMENT_MASKS[ATTRIBUTEGROUP_TYPE]; /** Mask bits for attribute child elements. */ private long ANYATTRIBUTE_MASK = ELEMENT_MASKS[ANYATTRIBUTE_TYPE]; // // Instance data /** Filtered list of content type definition (simpleContent or complexContent, one only and only if no direct content definition). */ private final FilteredSegmentList m_contentTypeList; /** Filtered list of direct content definition (group reference or compositor, one only, only if no content type). */ private final FilteredSegmentList m_contentDefinitionList; /** Filtered list of attribute definitions (only if no content type). */ private final FilteredSegmentList m_attributeList; /** Filtered list of anyAttribute definitions (zero or one, only if no content type). */ private final FilteredSegmentList m_anyAttributeList; /** 'abstract' attribute value. */ private Boolean m_abstract; /** 'mixed' attribute value. */ private Boolean m_mixed; /** 'block' attribute value. */ private AllEnumSet m_block; /** 'final' attribute value. */ private AllEnumSet m_final; /** * Constructor. */ public ComplexTypeElement() { super(COMPLEXTYPE_TYPE); m_contentTypeList = new FilteredSegmentList(getChildrenWritable(), CONTENT_TYPE_MASK, this); m_contentDefinitionList = new FilteredSegmentList(getChildrenWritable(), CONTENT_DEFINITION_MASK, m_contentTypeList, this); m_attributeList = new FilteredSegmentList(getChildrenWritable(), ATTRIBUTE_MASK, m_contentDefinitionList, this); m_anyAttributeList = new FilteredSegmentList(getChildrenWritable(), ANYATTRIBUTE_MASK, m_attributeList, this); m_block = new AllEnumSet(ElementElement.s_derivationValues, "block"); m_final = new AllEnumSet(ElementElement.s_derivationValues, "final"); } // // Base class overrides /* (non-Javadoc) * @see org.jibx.schema.ElementBase#preset(org.jibx.runtime.IUnmarshallingContext) */ protected void preset(IUnmarshallingContext ictx) throws JiBXException { validateAttributes(ictx, s_allowedAttributes); super.preset(ictx); } /* (non-Javadoc) * @see org.jibx.schema.CommonTypeDefinition#isComplexType() */ public boolean isComplexType() { return true; } /* (non-Javadoc) * @see org.jibx.schema.elements.CommonTypeDefinition#isPredefinedType() */ public boolean isPredefinedType() { return false; } // // Access methods /** * Get 'abstract' attribute value. * * @return abstract (null if not set) */ public Boolean getAbstract() { return m_abstract; } /** * Set 'abstract' attribute value. * * @param abs (null if not set) */ public void setAbstract(Boolean abs) { m_abstract = abs; } /** * Get 'mixed' attribute value. * * @return mixed (null if not set) */ public Boolean getMixed() { return m_mixed; } /** * Set 'mixed' attribute value. * * @param mixed (null if not set) */ public void setMixed(Boolean mixed) { m_mixed = mixed; } /** * Get 'block' attribute value. * * @return block */ public AllEnumSet getBlock() { return m_block; } /** * Get 'final' attribute value. * * @return final */ public AllEnumSet getFinal() { return m_final; } /** * Get content type element. * * @return content type definition, or null if none */ public CommonContentBase getContentType() { return m_contentTypeList.size() > 0 ? (CommonContentBase)m_contentTypeList.get(0) : null; } /** * Set content type element. * * @param element content type definition, or null if none */ public void setContentType(CommonContentBase element) { m_contentTypeList.clear(); if (element != null) { m_contentTypeList.add(element); } } /** * Get content definition particle. * * @return content definition particle, or null if none */ public CommonCompositorDefinition getContentDefinition() { return m_contentDefinitionList.size() > 0 ? (CommonCompositorDefinition)m_contentDefinitionList.get(0) : null; } /** * Set content definition particle. * * @param element content definition particle, or null if none */ public void setContentDefinition(CommonCompositorDefinition element) { m_contentDefinitionList.clear(); if (element != null) { m_contentDefinitionList.add(element); } } /** * Get list of attribute child elements. This list must be empty when * a simpleContent or complexContent definition is used. * * @return list of attributes */ public FilteredSegmentList getAttributeList() { return m_attributeList; } /** * Get anyAttribute child element. * * @return element, or null if none */ public AnyAttributeElement getAnyAttribute() { return m_anyAttributeList.size() > 0 ? (AnyAttributeElement)m_anyAttributeList.get(0) : null; } /** * Set anyAttribute child element. * * @param element element, or null if unsetting */ public void setAnyAttribute(AnyAttributeElement element) { m_anyAttributeList.clear(); if (element != null) { m_anyAttributeList.add(element); } } // // Validation methods /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#prevalidate(org.jibx.schema.ValidationContext) */ public void prevalidate(ValidationContext vctx) { // check whether global or local definition if (isGlobal()) { // make sure local type prohibited attributes are not present if (getAbstract() != null || getBlock().isPresent() || getFinal().isPresent()) { vctx.addError("The 'abstract', 'block', and 'final' attributes are prohibited for a local definition", this); } } // check form of definition if (m_contentTypeList.size() > 0) { if (m_contentTypeList.size() > 1) { vctx.addError("Can only have one or child", this); } if (m_contentDefinitionList.size() > 0) { vctx.addError("Child content particles not allowed with or ", this); } if (m_attributeList.size() > 0) { vctx.addError("Child and elements not allowed with or ", this); } if (m_anyAttributeList.size() > 0) { vctx.addError("Child elements not allowed with or ", this); } } else if (m_contentDefinitionList.size() > 1) { vctx.addError("Can only have one /// child", this); } if (m_anyAttributeList.size() > 1) { vctx.addError("Only one child allowed", this); } // continue with parent class prevalidation super.prevalidate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/DocumentationElement.java0000644000175000017500000000255310602646264027570 0ustar moellermoellerpackage org.jibx.schema.elements; import java.util.ArrayList; import org.w3c.dom.Node; /** * documentation annotation item element. */ public class DocumentationElement extends AnnotationItem { /** xml:lang attribute value. */ private String m_xmlLang; /** Content of annotation item. */ private ArrayList m_contentList; /** * Constructor. */ public DocumentationElement() { super(DOCUMENTATION_TYPE); m_contentList = new ArrayList(); } /** * Get language code. * * @return language code */ public String getXmlLang() { return m_xmlLang; } /** * Set language code. * * @param xmlLang xmlLang */ public void setXmlLang(String xmlLang) { m_xmlLang = xmlLang; } /** * Get annotation item content list. This is a list consisting of DOM * nodes. * * @return annotation content list */ public final ArrayList getContents() { return m_contentList; } /** * Clear annotation item content. */ public final void clearContents() { m_contentList.clear(); } /** * Add annotation item content node. * * @param node annotation item content node */ public final void addContent(Node node) { m_contentList.add(node); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/ElementElement.java0000644000175000017500000004332610767276600026360 0ustar moellermoeller/* Copyright (c) 2006-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import org.jibx.binding.util.StringArray; import org.jibx.runtime.EnumSet; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.QName; import org.jibx.schema.IArity; import org.jibx.schema.INamed; import org.jibx.schema.attributes.DefRefAttributeGroup; import org.jibx.schema.attributes.FormChoiceAttribute; import org.jibx.schema.attributes.OccursAttributeGroup; import org.jibx.schema.types.AllEnumSet; import org.jibx.schema.types.Count; import org.jibx.schema.validation.ValidationContext; /** * <element> element definition. The same code is used for both global and * local element definitions, with the differences checked during validation. * * TODO: implement common base class for attribute and element? * * @author Dennis M. Sosnoski */ public class ElementElement extends AnnotatedBase implements IArity, INamed { /** List of allowed attribute names. */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "abstract", "block", "default", "final", "fixed", "nillable", "substitutionGroup", "type" }, DefRefAttributeGroup.s_allowedAttributes, FormChoiceAttribute.s_allowedAttributes, OccursAttributeGroup.s_allowedAttributes, AnnotatedBase.s_allowedAttributes); /** Mask bits for inline type definition child. */ private long INLINE_TYPE_MASK = ELEMENT_MASKS[COMPLEXTYPE_TYPE] | ELEMENT_MASKS[SIMPLETYPE_TYPE]; // // Value set information public static final int EXTENSION_BLOCK = 0; public static final int RESTRICTION_BLOCK = 1; public static final int SUBSTITUTION_BLOCK = 2; public static final EnumSet s_blockValues = new EnumSet(EXTENSION_BLOCK, new String[] { "extension", "restriction", "substitution"}); public static final int EXTENSION_FINAL = 0; public static final int RESTRICTION_FINAL = 1; public static final EnumSet s_derivationValues = new EnumSet(EXTENSION_FINAL, new String[] { "extension", "restriction"}); // // Instance data /** Filtered list of inline type definition elements (zero or one only). */ private final FilteredSegmentList m_inlineTypeList; /** Name or reference. */ private DefRefAttributeGroup m_defRef; /** Form of name. */ private FormChoiceAttribute m_formChoice; /** Occurs attribute group. */ private OccursAttributeGroup m_occurs; /** 'type' attribute value. */ private QName m_type; /** 'default' attribute value. */ private String m_default; /** 'fixed' attribute value. */ private String m_fixed; /** 'abstract' attribute value. */ private boolean m_abstract; /** 'nillable' attribute value. */ private boolean m_nillable; /** 'block' attribute value. */ private AllEnumSet m_block; /** 'final' attribute value. */ private AllEnumSet m_final; /** 'substitutionGroup' attribute information. */ private QName m_substitutionGroup; /** Element definition (from 'ref' attribute - null if none). */ private ElementElement m_refElement; /** Complex or simple type definition (from 'type' attribute, or inline definition - null if none). */ private CommonTypeDefinition m_typeDefinition; /** Qualified name (only defined after validation). */ private QName m_qname; /** * Constructor. */ public ElementElement() { super(ELEMENT_TYPE); m_inlineTypeList = new FilteredSegmentList(getChildrenWritable(), INLINE_TYPE_MASK, this); m_defRef = new DefRefAttributeGroup(this); m_formChoice = new FormChoiceAttribute(this); m_occurs = new OccursAttributeGroup(this); m_block = new AllEnumSet(s_blockValues, "block"); m_final = new AllEnumSet(s_derivationValues, "final"); } /** * Clear any type information. This method is only visible for internal use, * to be called in the process of setting new type information. */ private void clearType() { m_inlineTypeList.clear(); m_defRef.setRef(null); m_refElement = null; m_type = null; } // // Base class overrides /* (non-Javadoc) * @see org.jibx.schema.ElementBase#preset(org.jibx.runtime.IUnmarshallingContext) */ protected void preset(IUnmarshallingContext ictx) throws JiBXException { validateAttributes(ictx, s_allowedAttributes); super.preset(ictx); } // // Access methods /** * Get 'type' attribute value. * * @return type (null if not set) */ public QName getType() { return m_type; } /** * Set 'type' attribute value. Note that this method should only be used * prior to validation, since it will only set the type name and not link * the actual type information. * * @param type (null if not set) */ public void setType(QName type) { clearType(); m_type = type; } /** * Get 'default' attribute value. * * @return default (null if not set) */ public String getDefault() { return m_default; } /** * Set the 'default' attribute value. * * @param dflt (null if not set) */ public void setDefault(String dflt) { m_default = dflt; } /** * Get 'fixed' attribute value. * * @return fixed (null if not set) */ public String getFixed() { return m_fixed; } /** * Set 'fixed' attribute value. * * @param fixed (null if not set) */ public void setFixed(String fixed) { m_fixed = fixed; } /** * Check 'abstract' attribute value. * * @return abstract attribute value (null if not set) */ public boolean isAbstract() { return m_abstract; } /** * Set 'abstract' attribute value. * * @param abs abstract attribute value (null if not set) */ public void setAbstract(boolean abs) { m_abstract = abs; } /** * Check 'nillable' attribute value. * * @return nillable attribute value (null if not set) */ public boolean isNillable() { return m_nillable; } /** * Set 'nillable' attribute value. * * @param nil nillable attribute value (null if not set) */ public void setNillable(boolean nil) { m_nillable = nil; } /** * Get 'final' attribute. * * @return final */ public AllEnumSet getFinal() { return m_final; } /** * Get 'block' attribute. * * @return block */ public AllEnumSet getBlock() { return m_block; } /** * Get 'substitutionGroup' attribute value. * * @return substitutionGroup (null if not set) */ public QName getSubstitutionGroup() { return m_substitutionGroup; } /** * Set 'substitutionGroup' attribute value. * * @param qname (null if not set) */ public void setSubstitutionGroup(QName qname) { m_substitutionGroup = qname; } /** * Get the referenced element declaration. This method is only usable after * validation. * * @return referenced element definition, or null if not a * reference */ public ElementElement getReference() { return m_refElement; } /** * Get qualified name for element. This method is only usable after * prevalidation. * * @return qname (null if a reference) */ public QName getQName() { return m_qname; } /** * Check if the element uses an inline type definition. * * @return true if inline, false if not */ public boolean isInlineType() { return m_inlineTypeList.size() == 1; } /** * Get type definition. This returns the actual type definition for the * element, irrespective of whether the element uses an element reference, a * type reference, or an inline type definition. It is only usable after * validation. * * @return type definition (null if empty type definition) */ public CommonTypeDefinition getTypeDefinition() { if (m_defRef.getRef() != null) { return m_refElement.getTypeDefinition(); } else { return m_typeDefinition; } } /** * Set type definition (either inline, or as reference). * * @param def inline type definition */ public void setTypeDefinition(CommonTypeDefinition def) { // clear existing type information and set new clearType(); m_typeDefinition = def; // check form of type definition if (def != null) { if (def.getQName() == null) { // embed inline type definition m_inlineTypeList.add(def); def.setParent(this); } else { // set type reference m_type = def.getQName(); } } } // // Delegated methods /** * Get 'name' attribute value. * * @return name * @see org.jibx.schema.attributes.DefRefAttributeGroup#getName() */ public String getName() { return m_defRef.getName(); } /** * Get 'ref' attribute value. * * @return ref * @see org.jibx.schema.attributes.DefRefAttributeGroup#getRef() */ public QName getRef() { return m_defRef.getRef(); } /** * Set 'name' attribute value. * * @param name * @see org.jibx.schema.attributes.DefRefAttributeGroup#setName(java.lang.String) */ public void setName(String name) { m_defRef.setName(name); } /** * Set 'ref' attribute value. * * @param ref * @see org.jibx.schema.attributes.DefRefAttributeGroup#setRef(org.jibx.runtime.QName) */ public void setRef(QName ref) { clearType(); m_defRef.setRef(ref); } /** * Get 'form' attribute type code. * * @return form * @see org.jibx.schema.attributes.FormChoiceAttribute#getForm() */ public int getForm() { return m_formChoice.getForm(); } /** * Get 'form' attribute name value. * * @return form * @see org.jibx.schema.attributes.FormChoiceAttribute#getFormText() */ public String getFormText() { return m_formChoice.getFormText(); } /** * Set 'form' attribute type code. * * @param type * @see org.jibx.schema.attributes.FormChoiceAttribute#setForm(int) */ public void setForm(int type) { m_formChoice.setForm(type); } /** * Get 'maxOccurs' attribute value. * * @return count * @see org.jibx.schema.attributes.OccursAttributeGroup#getMaxOccurs() */ public Count getMaxOccurs() { return m_occurs.getMaxOccurs(); } /** * Get 'minOccurs' attribute value. * * @return count * @see org.jibx.schema.attributes.OccursAttributeGroup#getMinOccurs() */ public Count getMinOccurs() { return m_occurs.getMinOccurs(); } /** * Set 'maxOccurs' attribute value. * * @param count * @see org.jibx.schema.attributes.OccursAttributeGroup#setMaxOccurs(org.jibx.schema.types.Count) */ public void setMaxOccurs(Count count) { m_occurs.setMaxOccurs(count); } /** * Get 'maxOccurs' attribute value. * * @param count * @see org.jibx.schema.attributes.OccursAttributeGroup#setMinOccurs(org.jibx.schema.types.Count) */ public void setMinOccurs(Count count) { m_occurs.setMinOccurs(count); } // // Validation methods /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#prevalidate(org.jibx.schema.ValidationContext) */ public void prevalidate(ValidationContext vctx) { // prevalidate the attributes m_defRef.prevalidate(vctx); m_formChoice.prevalidate(vctx); m_occurs.prevalidate(vctx); // check whether global or local definition if (isGlobal()) { // make sure name is supplied for global element if (getName() == null) { vctx.addError("The 'name' attribute is required for a global definition", this); } else { m_qname = new QName(vctx.getCurrentSchema().getTargetNamespace(), getName()); } // make sure prohibited attributes are not present if (getRef() != null || getForm() != -1 || getMinOccurs() != null || getMaxOccurs() != null) { vctx.addError("The 'ref', 'form', 'minOccurs' and 'maxOccurs' attributes are prohibited for a global element definition", this); } } else { // make sure name or reference is supplied for local element if (getName() == null && getRef() == null) { vctx.addError("Either a 'name' attribute or a 'ref' attribute is required for a local element definition", this); } // generate qname if name supplied if (getName() != null) { SchemaElement schema = vctx.getCurrentSchema(); boolean def = schema.isElementQualifiedDefault(); String uri = null; if (m_formChoice.isQualified(def)) { uri = vctx.getCurrentSchema().getTargetNamespace(); } m_qname = new QName(uri, getName()); } // make sure prohibited attributes are not present if (getSubstitutionGroup() != null || getBlock().isPresent() || getFinal().isPresent()) { vctx.addError("The 'substitutionGroup', 'block', and 'final' attributes are prohibited for a local element definition", this); } } // continue with parent class prevalidation super.prevalidate(vctx); } /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#validate(org.jibx.schema.ValidationContext) */ public void validate(ValidationContext vctx) { // start with validating the attributes m_defRef.validate(vctx); m_formChoice.validate(vctx); // check type of definition QName ref = getRef(); if (ref != null) { // make sure element reference is defined m_refElement = vctx.findElement(ref); if (m_refElement == null) { vctx.addFatal("Referenced element '" + ref + "' is not defined", this); } // check for any conflicting attributes if (m_type != null) { vctx.addError("'type' attribute not allowed with 'ref' attribute", this); } } else { // set the type definition if (m_type == null) { // verify inline type definition if (m_inlineTypeList.size() == 1) { m_typeDefinition = (CommonTypeDefinition)m_inlineTypeList.get(0); } else if (m_inlineTypeList.size() == 0) { vctx.addWarning("No type defined", this); } else { vctx.addFatal("Only one inline type definition allowed", this); } } else { // look up referenced type definition m_typeDefinition = vctx.findType(m_type); if (m_typeDefinition == null) { vctx.addFatal("Referenced type '" + m_type + "' is not defined", this); } } } // handle base class validation if still going if (!vctx.isSkipped(this)) { super.validate(vctx); } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/FacetElement.java0000644000175000017500000003725010673572516026011 0ustar moellermoeller/* Copyright (c) 2006-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import org.jibx.binding.util.StringArray; import org.jibx.runtime.EnumSet; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.schema.validation.ValidationContext; /** * Facet implementation. This base class is used for all facets, with inner * subclasses for the actual facets. * * @author Dennis M. Sosnoski */ public abstract class FacetElement extends AnnotatedBase { // // Facet bit masks public static final int LENGTH_FACET_BIT = 0x0001; public static final int MINLENGTH_FACET_BIT = 0x0002; public static final int MAXLENGTH_FACET_BIT = 0x0004; public static final int PATTERN_FACET_BIT = 0x0008; public static final int ENUMERATION_FACET_BIT = 0x0010; public static final int WHITESPACE_FACET_BIT = 0x0020; public static final int MAXINCLUSIVE_FACET_BIT = 0x0040; public static final int MAXEXCLUSIVE_FACET_BIT = 0x0080; public static final int MININCLUSIVE_FACET_BIT = 0x0100; public static final int MINEXCLUSIVE_FACET_BIT = 0x0200; public static final int TOTALDIGITS_FACET_BIT = 0x0400; public static final int FRACTIONDIGITS_FACET_BIT = 0x0800; // // Facet element tables /** Ordered array of indexes for facet elements. */ public static final int[] FACET_ELEMENT_INDEXES = { ENUMERATION_TYPE, FRACTIONDIGITS_TYPE, LENGTH_TYPE, MAXEXCLUSIVE_TYPE, MAXINCLUSIVE_TYPE, MAXLENGTH_TYPE, MINEXCLUSIVE_TYPE, MININCLUSIVE_TYPE, MINLENGTH_TYPE, PATTERN_TYPE, TOTALDIGITS_TYPE, WHITESPACE_TYPE }; /** Ordered array of names of just the facet elements. */ public static final String[] FACET_ELEMENT_NAMES; /** Mask for facet elements. */ public static final long FACET_ELEMENT_MASK; static { String[] names = new String[FACET_ELEMENT_INDEXES.length]; long mask = 0; for (int i = 0; i < FACET_ELEMENT_INDEXES.length; i++) { int index = FACET_ELEMENT_INDEXES[i]; names[i] = ELEMENT_NAMES[index]; mask |= ELEMENT_MASKS[index]; } FACET_ELEMENT_NAMES = names; FACET_ELEMENT_MASK = mask; }; // // Instance data /** Facet bit mask. */ private final int m_bitMask; /** Facet exclusion mask. */ private final int m_excludesMask; /** * Constructor. * * @param type * @param bit mask * @param exclude exclusion bit mask */ private FacetElement(int type, int bit, int exclude) { super(type); m_bitMask = bit; m_excludesMask = exclude; } /** * Get facet bit mask. * * @return bit mask */ public int getBitMask() { return m_bitMask; } /** * Get excludes bit mask. * * @return bit mask */ public int getExcludesMask() { return m_excludesMask; } // // Actual facet subclasses private abstract static class FixedFacet extends FacetElement { /** List of allowed attribute names (including "id" from base). */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "fixed", "value" }, AnnotatedBase.s_allowedAttributes); // // Instance data /** "fixed" attribute value. */ private Boolean m_fixed; /** * Constructor. Just passes on the element type to base class. * * @param type * @param bit mask * @param exclude exclusion bit mask */ public FixedFacet(int type, int bit, int exclude) { super(type, bit, exclude); } /** * Check "fixed" attribute value. * * @return fixed attribute value (null if not set) */ public Boolean isFixed() { return m_fixed; } /** * Set "fixed" attribute value. * * @param fixed fixed attribute value (null if unsetting) */ public void setFinal(Boolean fixed) { m_fixed = fixed; } // // Validation methods /** * Make sure all attributes are defined. * * @param uctx unmarshalling context * @exception JiBXException on unmarshalling error */ protected void preset(IUnmarshallingContext uctx) throws JiBXException { validateAttributes(uctx, s_allowedAttributes); super.preset(uctx); } } private abstract static class NumFacet extends FixedFacet { /** "value" attribute value. */ private int m_value; /** * Constructor. Just passes on the element type to base class. * * @param type * @param bit mask * @param exclude exclusion bit mask */ public NumFacet(int type, int bit, int exclude) { super(type, bit, exclude); } /** * Get "value" attribute value. * * @return value attribute value */ public int getValue() { return m_value; } /** * Set "value" attribute value. * * @param value value attribute value */ public void setValue(int value) { m_value = value; } // // Validation methods /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#prevalidate(org.jibx.schema.ValidationContext) */ public void prevalidate(ValidationContext vctx) { // check for valid attribute values if (m_value < 0) { vctx.addError("'value' attribute must not be negative", this); } // continue with parent class prevalidation super.prevalidate(vctx); } } public static class TotalDigits extends FixedFacet { /** "value" attribute value. */ private int m_value; /** * Constructor. */ public TotalDigits() { super(TOTALDIGITS_TYPE, TOTALDIGITS_FACET_BIT, TOTALDIGITS_FACET_BIT); } /** * Get "value" attribute value. * * @return value attribute value */ public int getValue() { return m_value; } /** * Set "value" attribute value. * * @param value value attribute value */ public void setValue(int value) { m_value = value; } // // Validation methods /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#prevalidate(org.jibx.schema.ValidationContext) */ public void prevalidate(ValidationContext vctx) { // check for valid attribute values if (m_value <= 0) { vctx.addError("'value' attribute must be strictly positive", this); } // continue with parent class prevalidation super.prevalidate(vctx); } } public static class FractionDigits extends NumFacet { /** * Constructor. Just sets element type in base class. */ public FractionDigits() { super(FRACTIONDIGITS_TYPE, FRACTIONDIGITS_FACET_BIT, FRACTIONDIGITS_FACET_BIT); } } public static class Length extends NumFacet { /** * Constructor. Just sets element type in base class. */ public Length() { super(LENGTH_TYPE, LENGTH_FACET_BIT, LENGTH_FACET_BIT | MINLENGTH_FACET_BIT | MAXLENGTH_FACET_BIT); } } public static class MinLength extends NumFacet { /** * Constructor. Just sets element type in base class. */ public MinLength() { super(MINLENGTH_TYPE, MINLENGTH_FACET_BIT, LENGTH_FACET_BIT | MINLENGTH_FACET_BIT); } } public static class MaxLength extends NumFacet { /** * Constructor. Just sets element type in base class. */ public MaxLength() { super(MAXLENGTH_TYPE, MAXLENGTH_FACET_BIT, LENGTH_FACET_BIT | MAXLENGTH_FACET_BIT); } } private abstract static class TextFacet extends FixedFacet { /** "value" attribute value. */ private String m_value; /** * Constructor. Just passes on the element type to base class. * * @param type * @param bit mask * @param exclude exclusion bit mask */ public TextFacet(int type, int bit, int exclude) { super(type, bit, exclude); } /** * Get "value" attribute value. * * @return value attribute value */ public String getValue() { return m_value; } /** * Set "value" attribute value. * * @param value value attribute value */ public void setValue(String value) { m_value = value; } } public static class MinExclusive extends TextFacet { /** * Constructor. Just sets element type in base class. */ public MinExclusive() { super(MINEXCLUSIVE_TYPE, MINEXCLUSIVE_FACET_BIT, MINEXCLUSIVE_FACET_BIT | MININCLUSIVE_FACET_BIT); } } public static class MinInclusive extends TextFacet { /** * Constructor. Just sets element type in base class. */ public MinInclusive() { super(MININCLUSIVE_TYPE, MININCLUSIVE_FACET_BIT, MINEXCLUSIVE_FACET_BIT | MININCLUSIVE_FACET_BIT); } } public static class MaxExclusive extends TextFacet { /** * Constructor. Just sets element type in base class. */ public MaxExclusive() { super(MAXEXCLUSIVE_TYPE, MAXEXCLUSIVE_FACET_BIT, MAXEXCLUSIVE_FACET_BIT | MAXINCLUSIVE_FACET_BIT); } } public static class MaxInclusive extends TextFacet { /** * Constructor. Just sets element type in base class. */ public MaxInclusive() { super(MAXINCLUSIVE_TYPE, MAXINCLUSIVE_FACET_BIT, MAXEXCLUSIVE_FACET_BIT | MAXINCLUSIVE_FACET_BIT); } } public static class WhiteSpace extends TextFacet { // // Value set information public static final int PRESERVE_WHITESPACE = 1; public static final int REPLACE_WHITESPACE = 2; public static final int COLLAPSE_WHITESPACE = 3; public static final EnumSet s_finalValues = new EnumSet(PRESERVE_WHITESPACE, new String[] { "preserve", "replace", "collapse"}); // // Instance data private int m_whitespaceType; /** * Constructor. Just sets element type in base class. */ public WhiteSpace() { super(WHITESPACE_TYPE, WHITESPACE_FACET_BIT, WHITESPACE_FACET_BIT); } /** * Get whitespace handling type code. * * @return type code for whitespace handling */ public int getWhitespaceType() { return m_whitespaceType; } // // Validation methods /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#prevalidate(org.jibx.schema.ValidationContext) */ public void prevalidate(ValidationContext vctx) { // check for valid attribute values m_whitespaceType = s_finalValues.getValue(getValue()); if (m_whitespaceType < 0) { vctx.addError("'whitespace' attribute value '" + getValue() + "' is not allowed", this); } // continue with parent class prevalidation super.prevalidate(vctx); } } private abstract static class NoFixedFacet extends FacetElement { /** List of allowed attribute names (including "id" from base). */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "value" }, AnnotatedBase.s_allowedAttributes); // // Instance data /** "value" attribute value. */ private String m_value; /** * Constructor. Just passes on the element type to base class. * * @param type * @param bit mask * @param exclude exclusion bit mask */ public NoFixedFacet(int type, int bit, int exclude) { super(type, bit, exclude); } /** * Get "value" attribute value. * * @return value attribute value */ public String getValue() { return m_value; } /** * Set "value" attribute value. * * @param value value attribute value */ public void setValue(String value) { m_value = value; } // // Validation methods /** * Make sure all attributes are defined. * * @param uctx unmarshalling context * @exception JiBXException on unmarshalling error */ protected void preset(IUnmarshallingContext uctx) throws JiBXException { validateAttributes(uctx, s_allowedAttributes); super.preset(uctx); } } public static class Enumeration extends NoFixedFacet { /** * Constructor. Just sets element type in base class. */ public Enumeration() { super(ENUMERATION_TYPE, ENUMERATION_FACET_BIT, 0); } } public static class Pattern extends NoFixedFacet { /** * Constructor. Just sets element type in base class. */ public Pattern() { super(PATTERN_TYPE, PATTERN_FACET_BIT, 0); } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/FilteredSegmentList.java0000644000175000017500000002321610713703040027346 0ustar moellermoeller/* Copyright (c) 2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import java.util.AbstractList; import org.jibx.schema.support.LazyList; /** * Virtual list generated from a backing list by filtering on the element types. * This exposes a segment of the backing list through the filter, with multiple * filters used to expose the entire backing list piecemeal. It can only be used * with lists of elements. * * @author Dennis M. Sosnoski */ public class FilteredSegmentList extends AbstractList { /** Base list. */ private final LazyList m_list; /** Mask for element types to match in filter. */ private final long m_matchBits; /** Filter for elements prior to this filter in list. */ private final FilteredSegmentList m_prior; /** Element owning this list. */ private final OpenAttrBase m_owner; /** Last modify count matching cached values. */ private int m_lastModify; /** Cached filtered list start index in base list. */ private int m_startIndex; /** Cached size of filtered list. */ private int m_size; /** * Dummy default constructor for unmarshalling. */ private FilteredSegmentList() { throw new IllegalStateException("Default constructor is not valid"); } /** * Constructor with everything specified. * * @param list backing list * @param match included element types mask * @param prior filter which comes before this one (null if * none) * @param owner element owning this list */ public FilteredSegmentList(LazyList list, long match, FilteredSegmentList prior, OpenAttrBase owner) { if (owner == null) { throw new IllegalArgumentException("Internal error - list must have owner"); } m_list = list; m_matchBits = match; m_prior = prior; m_owner = owner; m_lastModify = -1; } /** * Constructor with no prior filter. * * @param list backing list * @param match included element types mask * @param owner element owning this list */ public FilteredSegmentList(LazyList list, long match, OpenAttrBase owner) { this(list, match, null, owner); } /** * Update modify count to show cached state is current. This propagates to * any prior filter(s). */ private void setModify() { m_lastModify = m_list.getModCount(); if (m_prior != null) { m_prior.setModify(); } } /** * Synchronize filter to current list state. If the cached state is not * current this updates the cached state to reflect the current state of the * backing list. */ private void sync() { if (m_lastModify != m_list.getModCount()) { // updating cache, first update preceding filters if (m_prior == null) { m_startIndex = 0; } else { m_prior.sync(); m_startIndex = m_prior.m_startIndex + m_prior.m_size; } // scan through list to find end of items included by this filter int index = m_startIndex; while (index < m_list.size()) { SchemaBase item = (SchemaBase)m_list.get(index); if ((item.bit() & m_matchBits) != 0) { index++; } else { break; } } m_size = index - m_startIndex; // update modify count for cached state m_lastModify = m_list.getModCount(); } } /* (non-Javadoc) * @see java.util.AbstractList#get(int) */ public Object get(int index) { sync(); if (index >= 0 && index < m_size) { return m_list.get(m_startIndex + index); } else { throw new IndexOutOfBoundsException("Index " + index + " is out of valid range 0-" + (m_size-1)); } } /* (non-Javadoc) * @see java.util.AbstractCollection#size() */ public int size() { sync(); return m_size; } /* (non-Javadoc) * @see java.util.AbstractList#add(int, java.lang.Object) */ public void add(int index, Object element) { sync(); if (index >= 0 && index <= m_size) { // make sure added element is allowed by this filter SchemaBase item = (SchemaBase)element; if ((item.bit() & m_matchBits) != 0) { // add the element into backing list m_list.add(m_startIndex + index, item); // set parent link for element item.setParent(m_owner); // mark this and prior filters as current m_size++; setModify(); modCount++; } else { throw new IllegalArgumentException("Element of type \"" + item.name() + "\" is not allowed by filter"); } } else { throw new IndexOutOfBoundsException("Index " + index + " is out of valid range 0-" + m_size); } } /** * Removes the item at the index position. * * @param index * @return removed item */ public Object remove(int index) { sync(); if (index >= 0 && index < m_size) { // remove the element from backing list Object item = m_list.remove(m_startIndex + index); ((SchemaBase)item).setParent(null); // mark this and prior filters as current m_size--; setModify(); modCount++; return item; } else { throw new IndexOutOfBoundsException("Index " + index + " is out of valid range 0-" + (m_size-1)); } } /* (non-Javadoc) * @see java.util.AbstractCollection#remove(java.lang.Object) */ public boolean remove(Object o) { sync(); for (int i = 0; i < m_size; i++) { if (m_list.get(m_startIndex + i) == o) { m_list.remove(m_startIndex + i); ((SchemaBase)o).setParent(null); m_size--; setModify(); modCount++; return true; } } return false; } /* (non-Javadoc) * @see java.util.AbstractList#set(int, java.lang.Object) */ public Object set(int index, Object element) { sync(); if (index >= 0 && index < m_size) { // make sure replacement element is allowed by this filter SchemaBase item = (SchemaBase)element; if ((item.bit() & m_matchBits) != 0) { // set the element in backing list item.setParent(m_owner); Object prior = m_list.set(m_startIndex + index, item); ((SchemaBase)prior).setParent(null); return prior; } else { throw new IllegalArgumentException("Element of type \"" + item.name() + "\" is not allowed by filter"); } } else { throw new IndexOutOfBoundsException("Index " + index + " is out of valid range 0-" + (m_size-1)); } } /* (non-Javadoc) * @see java.util.AbstractList#removeRange(int, int) */ protected void removeRange(int from, int to) { sync(); if (from >= 0 && to <= m_size) { // clear the parent linkages for (int i = from; i < to; i++) { ((SchemaBase)m_list.get(i)).setParent(null); } // delete all items from underlying list m_list.remove(from, to); // mark this and prior filters as current m_size -= to - from; setModify(); modCount++; } else { throw new IndexOutOfBoundsException("Range of " + from + "-" + to + " exceeds valid range 0-" + m_size); } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/GroupElement.java0000644000175000017500000001216410674530552026053 0ustar moellermoeller/* Copyright (c) 2006-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.QName; import org.jibx.schema.INamed; import org.jibx.schema.validation.ValidationContext; /** * Top-level group element definition. * * @author Dennis M. Sosnoski */ public class GroupElement extends AnnotatedBase implements INamed { /** List of allowed attribute names. */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "name" }, AnnotatedBase.s_allowedAttributes); /** Mask bits for allowed child elements. */ private long DEFINITION_MASK = ELEMENT_MASKS[ALL_TYPE] | ELEMENT_MASKS[CHOICE_TYPE] | ELEMENT_MASKS[SEQUENCE_TYPE]; // // Instance data /** Filtered list of composited particle elements. */ private final FilteredSegmentList m_definitionList; /** 'name' attribute value. */ private String m_name; /** Qualified name (only defined after validation). */ private QName m_qname; /** * Constructor. */ public GroupElement() { super(GROUP_TYPE); m_definitionList = new FilteredSegmentList(getChildrenWritable(), DEFINITION_MASK, this); } // // Access methods /** * Get 'name' attribute value. * * @return name */ public String getName() { return m_name; } /** * Set 'name' attribute value. * * @param name */ public void setName(String name) { m_name = name; } /** * Get qualified name for element. This method is only usable after * prevalidation. * * @return qname (null if not defined) */ public QName getQName() { return m_qname; } /** * Get definition element. * * @return definition element, or null if not set */ public CommonCompositorDefinition getDefinition() { return m_definitionList.size() > 0 ? (CommonCompositorDefinition)m_definitionList.get(0) : null; } /** * Set definition element. * * @param element definition element, or null if unsetting */ public void setDefinition(CommonCompositorDefinition element) { m_definitionList.clear(); if (element != null) { m_definitionList.add(element); } } // // Overrides of base class methods /* (non-Javadoc) * @see org.jibx.schema.ElementBase#preset(org.jibx.runtime.IUnmarshallingContext) */ protected void preset(IUnmarshallingContext ictx) throws JiBXException { validateAttributes(ictx, s_allowedAttributes); super.preset(ictx); } // // Validation methods /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#prevalidate(org.jibx.schema.ValidationContext) */ public void prevalidate(ValidationContext vctx) { // check for missing items if (m_name == null) { vctx.addError("Missing required 'name' attribute", this); } else { m_qname = new QName(vctx.getCurrentSchema().getTargetNamespace(), getName()); } if (m_definitionList.size() == 0) { vctx.addError("Missing required , , or child element", this); } else if (m_definitionList.size() > 1) { vctx.addError("Only one , , or child element allowed", this); } // continue with parent class prevalidation super.prevalidate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/GroupRefElement.java0000644000175000017500000001002710624256130026474 0ustar moellermoeller/* Copyright (c) 2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.QName; import org.jibx.schema.validation.ValidationContext; /** * Definition for embedded group element (group reference). * * @author Dennis M. Sosnoski */ public class GroupRefElement extends CommonCompositorBase { /** List of allowed attribute names. */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "ref" }, CommonCompositorBase.s_allowedAttributes); // // Instance data /** Reference definition. */ private QName m_ref; /** Referenced element (filled in by validation). */ private GroupElement m_refGroup; /** * Constructor. */ public GroupRefElement() { super(GROUP_TYPE); } // // Base class overrides /* (non-Javadoc) * @see org.jibx.schema.ElementBase#preset(org.jibx.runtime.IUnmarshallingContext) */ protected void preset(IUnmarshallingContext ictx) throws JiBXException { validateAttributes(ictx, s_allowedAttributes); super.preset(ictx); } // // Access methods /** * Get 'ref' attribute value. * * @return ref */ public QName getRef() { return m_ref; } /** * Set 'ref' attribute value. * * @param ref */ public void setRef(QName ref) { m_ref = ref; } /** * Get the referenced group declaration. This method is only usable after * validation. * * @return referenced group definition */ public GroupElement getReference() { return m_refGroup; } // // Validation methods /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#prevalidate(org.jibx.schema.ValidationContext) */ public void prevalidate(ValidationContext vctx) { if (m_ref == null) { vctx.addFatal("'ref' attribute is required for group reference", this); } } /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#validate(org.jibx.schema.ValidationContext) */ public void validate(ValidationContext vctx) { // make sure element reference is defined m_refGroup = vctx.findGroup(m_ref); if (m_refGroup == null) { vctx.addFatal("Referenced group '" + m_ref + "' is not defined", this); } // handle base class validation super.validate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/IComplexStructure.java0000644000175000017500000000526310674556712027116 0ustar moellermoeller/* Copyright (c) 2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; /** * Complex type structure definition. This defines a structure consisting of an * optional compositor or group reference, along with an optional list of * attributes. * * @author Dennis M. Sosnoski */ public interface IComplexStructure { /** * Get content definition particle. * * @return content definition particle, or null if none */ public CommonCompositorDefinition getContentDefinition(); /** * Set content definition particle. * * @param element content definition particle, or null if none */ public void setContentDefinition(CommonCompositorDefinition element); /** * Get list of attribute child elements. * * @return list of attributes */ public FilteredSegmentList getAttributeList(); /** * Get anyAttribute child element. * * @return element, or null if none */ public AnyAttributeElement getAnyAttribute(); /** * Set anyAttribute child element. * * @param element element, or null if unsetting */ public void setAnyAttribute(AnyAttributeElement element); }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/ImportElement.java0000644000175000017500000000523110602646266026227 0ustar moellermoeller/* Copyright (c) 2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; /** * Model component for import element. * * @author Dennis M. Sosnoski */ public class ImportElement extends SchemaLocationBase { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "namespace" }, SchemaLocationBase.s_allowedAttributes); /** 'namespace' attribute value. */ private String m_namespace; /** * Constructor. */ public ImportElement() { super(IMPORT_TYPE); } // // Access methods public String getNamespace() { return m_namespace; } public void setNamespace(String namespace) { m_namespace = namespace; } // // Base class overrides /* (non-Javadoc) * @see org.jibx.schema.ElementBase#preset(org.jibx.runtime.IUnmarshallingContext) */ protected void preset(IUnmarshallingContext ictx) throws JiBXException { validateAttributes(ictx, s_allowedAttributes); super.preset(ictx); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/IncludeElement.java0000644000175000017500000000507410767276600026350 0ustar moellermoeller/* Copyright (c) 2006-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.schema.validation.ValidationContext; /** * Model component for include element. * * @author Dennis M. Sosnoski */ public class IncludeElement extends SchemaLocationBase { /** * Constructor. */ public IncludeElement() { super(INCLUDE_TYPE); } // // Base class overrides /* (non-Javadoc) * @see org.jibx.schema.ElementBase#preset(org.jibx.runtime.IUnmarshallingContext) */ protected void preset(IUnmarshallingContext ictx) throws JiBXException { validateAttributes(ictx, s_allowedAttributes); super.preset(ictx); } /* (non-Javadoc) * @see org.jibx.schema.elements.AnnotatedBase#prevalidate(org.jibx.schema.validation.ValidationContext) */ public void prevalidate(ValidationContext vctx) { super.prevalidate(vctx); if (getReferencedSchema() != null) { getReferencedSchema().setEffectiveNamespace(getSchema().getEffectiveNamespace()); } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/ListElement.java0000644000175000017500000001341310651200244025653 0ustar moellermoeller/* * Copyright (c) 2006-2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.QName; import org.jibx.schema.validation.ValidationContext; /** * list element definition. * * @author Dennis M. Sosnoski */ public class ListElement extends AnnotatedBase { /** List of allowed attribute names. */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "itemType" }, AnnotatedBase.s_allowedAttributes); /** Mask bits for inline base type definition. */ private long INLINE_TYPE_MASK = ELEMENT_MASKS[SIMPLETYPE_TYPE]; // // Instance data /** Filtered list of inline base type definition element. */ private final FilteredSegmentList m_inlineBaseList; /** 'itemType' attribute value. */ private QName m_itemType; /** Actual definition corresponding to 'itemType' attribute value (set during validation). */ private CommonTypeDefinition m_itemTypeDefinition; /** * Constructor. */ public ListElement() { super(LIST_TYPE); m_inlineBaseList = new FilteredSegmentList(getChildrenWritable(), INLINE_TYPE_MASK, this); } // // Base class overrides /* * (non-Javadoc) * * @see org.jibx.binding.schema.ElementBase#preset(org.jibx.runtime.IUnmarshallingContext) */ protected void preset(IUnmarshallingContext ictx) throws JiBXException { validateAttributes(ictx, s_allowedAttributes); super.preset(ictx); } // // Accessor methods /** * Get 'itemType' attribute value. * * @return attribute value, or null if none */ public QName getItemType() { return m_itemType; } /** * Set 'itemType' attribute value. * * @param base attribute value, or null if none */ public void setItemType(QName base) { m_itemType = base; } /** * Get referenced item type definition. This method can only be called after validation. * * @return item type, or null if none */ public CommonTypeDefinition getItemTypeDefinition() { return m_itemTypeDefinition; } /** * Get inline base type definition element. * * @return inline base type, or null if none */ public SimpleTypeElement getDerivation() { return m_inlineBaseList.size() > 0 ? (SimpleTypeElement)m_inlineBaseList.get(0) : null; } /** * Set inline base type definition element. * * @param element inline base type, or null if unsetting */ public void setDerivation(SimpleTypeElement element) { m_inlineBaseList.clear(); if (element != null) { m_inlineBaseList.add(element); } } // // Validation methods /* * (non-Javadoc) * * @see org.jibx.schema.ComponentBase#prevalidate(org.jibx.schema.ValidationContext) */ public void prevalidate(ValidationContext vctx) { // check for missing or conflicting type information if (m_inlineBaseList.size() == 0 && m_itemType == null) { vctx.addError("Must have 'itemType' attribute or inline definition", this); } if (m_inlineBaseList.size() > 0 && m_itemType != null) { vctx.addError("Can only use 'itemType' attribute without inline definition", this); } if (m_inlineBaseList.size() > 1) { vctx.addError("Only one inline definition allowed", this); } } /* * (non-Javadoc) * * @see org.jibx.schema.ComponentBase#validate(org.jibx.schema.ValidationContext) */ public void validate(ValidationContext vctx) { // look up referenced type definition if (m_itemType != null) { m_itemTypeDefinition = vctx.findType(m_itemType); if (m_itemTypeDefinition == null) { vctx.addFatal("Referenced type '" + m_itemType + "' is not defined", this); } } // continue with parent class validation super.validate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/NotationElement.java0000644000175000017500000001146110602646264026550 0ustar moellermoeller/* Copyright (c) 2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.QName; import org.jibx.schema.INamed; import org.jibx.schema.validation.ValidationContext; /** * Model component for notation element, which can only be used as a * direct child of the schema element. * * @author Dennis M. Sosnoski */ public class NotationElement extends AnnotatedBase implements INamed { /** List of allowed attribute names. */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "name", "public", "system" }, AnnotatedBase.s_allowedAttributes); /** "public" attribute value. */ private String m_public; /** "system" attribute code for element. */ private String m_system; /** 'name' attribute value. */ private String m_name; /** Qualified name (only defined after validation). */ private QName m_qname; /** * Constructor. */ public NotationElement() { super(NOTATION_TYPE); } // // Base class overrides /* (non-Javadoc) * @see org.jibx.schema.ElementBase#preset(org.jibx.runtime.IUnmarshallingContext) */ protected void preset(IUnmarshallingContext ictx) throws JiBXException { validateAttributes(ictx, s_allowedAttributes); super.preset(ictx); } // // Access methods /** * Get "public" attribute value. * * @return public attribute value */ public String getPublic() { return m_public; } /** * Set "public" attribute value. * * @param publc public attribute value */ public void setPublic(String publc) { m_public = publc; } /** * Get "system" attribute value. * * @return system attribute value */ public String getSystem() { return m_system; } /** * Set "system" attribute value. * * @param systm system attribute value */ public void setSystem(String systm) { m_system = systm; } /** * Get 'name' attribute value. * * @return name */ public String getName() { return m_name; } /** * Set 'name' attribute value. * * @param name */ public void setName(String name) { m_name = name; } /** * Get qualified name for element. This method is only usable after * prevalidation. * * @return qname (null if not defined) */ public QName getQName() { return m_qname; } // // Validation methods /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#prevalidate(org.jibx.schema.ValidationContext) */ public void prevalidate(ValidationContext vctx) { // check for missing items if (m_name == null) { vctx.addError("Missing required 'name' attribute", this); } else { m_qname = new QName(vctx.getCurrentSchema().getTargetNamespace(), getName()); } if (m_public == null) { vctx.addError("Missing required 'public' attribute", this); } // continue with parent class prevalidation super.prevalidate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/OpenAttrBase.java0000644000175000017500000002137611017732442025773 0ustar moellermoeller/* Copyright (c) 2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; import org.jibx.binding.model.EmptyList; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.IXMLWriter; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.UnmarshallingContext; import org.jibx.schema.support.LazyList; /** * Base class for all element structures in schema definition which allow * arbitrary attributes from outside the schema namespace. * * @author Dennis M. Sosnoski */ public abstract class OpenAttrBase extends SchemaBase { /** Child element list (lazy create, null if not used) */ private LazyList m_children; /** Extra attributes associated with element (lazy create, null if unused). */ private ArrayList m_attributes; /** * Constructor. * * @param type element type */ protected OpenAttrBase(int type) { super(type); m_children = new LazyList(); } // // Base class overrides /** * Get count of child elements. * * @return child count */ public final int getChildCount() { return m_children.size(); } /** * Get read-only iterator for child elements. * * @return iterator */ public Iterator getChildIterator() { return m_children.iterator(); } /** * Get child by index. * * @param index * @return child element */ public SchemaBase getChild(int index) { return (SchemaBase)m_children.get(index); } /** * Replace child by index. * * @param index * @param repl replacement element * @return detached child */ public SchemaBase replaceChild(int index, SchemaBase repl) { SchemaBase child = (SchemaBase)m_children.get(index); repl.setParent(this); m_children.set(index, repl); return child; } /** * Detach child by index. This method only replaces the child with a null in the child list, leaving * the list in an illegal state for most purposes. After using this method, {@link #compactChildren()} must be * called to remove the null(s) from the list and restore it to a legal state. These methods are * provided to avoid the overhead otherwise associated with multiple removals from a list. * * @param index * @return detached child */ public SchemaBase detachChild(int index) { SchemaBase child = (SchemaBase)m_children.get(index); m_children.set(index, null); return child; } /** * Compact the list of child elements. This removes any null values (which should only be present if * {@link #detachChild(int)} was called) from the list. */ public void compactChildren() { m_children.compact(); } /** * Pre-get method called during marshalling. This first calls the base * class implementation to handle namespaces, then writes any extra * attributes to the element start tag. * * @param ictx marshalling context */ protected void preget(IMarshallingContext ictx) throws JiBXException { // call base class implementation to handle namespaces super.preget(ictx); // write all extra attributes to element start tag if (m_attributes != null) { IXMLWriter writer = ictx.getXmlWriter(); for (int i = 0; i < m_attributes.size();) { String name = (String) m_attributes.get(i++); String uri = (String) m_attributes.get(i++); String value = (String) m_attributes.get(i++); int index = writer.getNamespaceCount(); while (--index >= 0 && !uri.equals(writer.getNamespaceUri(index))); if (index >= 0) { try { writer.addAttribute(index, name, value); } catch (IOException e) { throw new JiBXException("Error writing attribute", e); } } else { throw new JiBXException("Namespace uri \"" + uri + "\" is not defined"); } } } } /** * Pre-set method called during unmarshalling. This just writes any extra * attributes to the element start tag, then calls the base class * implementation. * * @param ictx marshalling context */ protected void preset(IUnmarshallingContext ictx) throws JiBXException { super.preset(ictx); } // // Access methods /** * Get modifiable list of child elements. This method should only be used by * subclasses to work with their own list of child elements. * * @return child list */ protected final LazyList getChildrenWritable() { return m_children; } /** * Get read-only list of extra attributes. Entries in this list are * triplets, consisting of attribute name, namespace, and value. * * @return extra attribute list */ public final List getExtraAttributes() { if (m_attributes == null || m_attributes.size() == 0) { return EmptyList.INSTANCE; } else { return Collections.unmodifiableList(m_attributes); } } /** * Clear extra attribute list. */ public final void clearExtraAttributes() { if (m_attributes != null) { m_attributes.clear(); } } /** * Add extra attribute. * * @param name attribute name * @param uri attribute namespace URI * @param value attribute value */ public final void addExtraAttribute(String name, String uri, String value) { if (m_attributes == null) { m_attributes = new ArrayList(); } m_attributes.add(name); m_attributes.add(uri); m_attributes.add(value); } // // Validation methods /** * Validate attributes of element from schema namespace. This allows any * number of attributes from other namespaces on the element. * * @param ictx unmarshalling context * @param attrs attributes array * @exception JiBXException on unmarshalling error */ protected void validateAttributes(IUnmarshallingContext ictx, StringArray attrs) throws JiBXException { // handle basic validation readNamespaces(ictx); validateAttributes(ictx, true, attrs); // loop through all attributes of current element UnmarshallingContext uctx = (UnmarshallingContext)ictx; clearExtraAttributes(); for (int i = 0; i < uctx.getAttributeCount(); i++) { // collect attributes from non-schema namespaces String ns = uctx.getAttributeNamespace(i); if (ns != null && ns.length() > 0 && !SCHEMA_NAMESPACE.equals(ns)) { addExtraAttribute(uctx.getAttributeName(i), ns, uctx.getAttributeValue(i)); } } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/RedefineElement.java0000644000175000017500000000564510602646264026505 0ustar moellermoeller/* Copyright (c) 2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import java.util.ArrayList; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; /** * Model component for redefine element. * * @author Dennis M. Sosnoski */ public class RedefineElement extends SchemaLocationBase { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "id" }, SchemaLocationBase.s_allowedAttributes); /** "id" attribute value. */ private String m_id; /** Redefinition body. */ private ArrayList m_content; /** * Constructor. */ public RedefineElement() { super(REDEFINE_TYPE); } // // Access methods public String getId() { return m_id; } public void setId(String id) { m_id = id; } public ArrayList getContents() { return m_content; } public void clearContents() { m_content.clear(); } public void addContent(SchemaBase element) { m_content.add(element); } // // Base class overrides /* (non-Javadoc) * @see org.jibx.schema.ElementBase#preset(org.jibx.runtime.IUnmarshallingContext) */ protected void preset(IUnmarshallingContext ictx) throws JiBXException { validateAttributes(ictx, s_allowedAttributes); super.preset(ictx); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/SchemaBase.java0000644000175000017500000004430010767276600025441 0ustar moellermoeller/* * Copyright (c) 2006-2008 Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import org.jibx.binding.model.EmptyList; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.IXMLWriter; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.UnmarshallingContext; import org.jibx.schema.IComponent; import org.jibx.schema.validation.ValidationContext; /** * Base class for all element structures in schema definition model. This just provides the linkages for the schema * definition tree structure and related validation hooks, along with support for extra namespaces. * * @author Dennis M. Sosnoski */ public abstract class SchemaBase implements IComponent { // // Element type definitions. public static final int ALL_TYPE = 0; public static final int ANNOTATION_TYPE = 1; public static final int ANY_TYPE = 2; public static final int ANYATTRIBUTE_TYPE = 3; public static final int APPINFO_TYPE = 4; public static final int ATTRIBUTE_TYPE = 5; public static final int ATTRIBUTEGROUP_TYPE = 6; public static final int CHOICE_TYPE = 7; public static final int COMPLEXCONTENT_TYPE = 8; public static final int COMPLEXTYPE_TYPE = 9; public static final int DOCUMENTATION_TYPE = 10; public static final int ELEMENT_TYPE = 11; public static final int ENUMERATION_TYPE = 12; public static final int EXTENSION_TYPE = 13; public static final int FIELD_TYPE = 14; public static final int FRACTIONDIGITS_TYPE = 15; public static final int GROUP_TYPE = 16; public static final int IMPORT_TYPE = 17; public static final int INCLUDE_TYPE = 18; public static final int KEY_TYPE = 19; public static final int KEYREF_TYPE = 20; public static final int LENGTH_TYPE = 21; public static final int LIST_TYPE = 22; public static final int MAXEXCLUSIVE_TYPE = 23; public static final int MAXINCLUSIVE_TYPE = 24; public static final int MAXLENGTH_TYPE = 25; public static final int MINEXCLUSIVE_TYPE = 26; public static final int MININCLUSIVE_TYPE = 27; public static final int MINLENGTH_TYPE = 28; public static final int NOTATION_TYPE = 29; public static final int PATTERN_TYPE = 30; public static final int REDEFINE_TYPE = 31; public static final int RESTRICTION_TYPE = 32; public static final int SCHEMA_TYPE = 33; public static final int SELECTOR_TYPE = 34; public static final int SEQUENCE_TYPE = 35; public static final int SIMPLECONTENT_TYPE = 36; public static final int SIMPLETYPE_TYPE = 37; public static final int TOTALDIGITS_TYPE = 38; public static final int UNION_TYPE = 39; public static final int UNIQUE_TYPE = 40; public static final int WHITESPACE_TYPE = 41; /** Actual element names. */ public static final String[] ELEMENT_NAMES; /** Bit masks for individual elements. */ public static final long[] ELEMENT_MASKS; static { ELEMENT_NAMES = new String[WHITESPACE_TYPE + 1]; ELEMENT_NAMES[ALL_TYPE] = "all"; ELEMENT_NAMES[ANNOTATION_TYPE] = "annotation"; ELEMENT_NAMES[ANY_TYPE] = "any"; ELEMENT_NAMES[ANYATTRIBUTE_TYPE] = "anyAttribute"; ELEMENT_NAMES[APPINFO_TYPE] = "appinfo"; ELEMENT_NAMES[ATTRIBUTE_TYPE] = "attribute"; ELEMENT_NAMES[ATTRIBUTEGROUP_TYPE] = "attributeGroup"; ELEMENT_NAMES[CHOICE_TYPE] = "choice"; ELEMENT_NAMES[COMPLEXCONTENT_TYPE] = "complexContent"; ELEMENT_NAMES[COMPLEXTYPE_TYPE] = "complexType"; ELEMENT_NAMES[DOCUMENTATION_TYPE] = "documentation"; ELEMENT_NAMES[ELEMENT_TYPE] = "element"; ELEMENT_NAMES[ENUMERATION_TYPE] = "enumeration"; ELEMENT_NAMES[EXTENSION_TYPE] = "extension"; ELEMENT_NAMES[FIELD_TYPE] = "field"; ELEMENT_NAMES[FRACTIONDIGITS_TYPE] = "fractionDigits"; ELEMENT_NAMES[GROUP_TYPE] = "group"; ELEMENT_NAMES[IMPORT_TYPE] = "import"; ELEMENT_NAMES[INCLUDE_TYPE] = "include"; ELEMENT_NAMES[KEY_TYPE] = "key"; ELEMENT_NAMES[KEYREF_TYPE] = "keyref"; ELEMENT_NAMES[LENGTH_TYPE] = "length"; ELEMENT_NAMES[LIST_TYPE] = "list"; ELEMENT_NAMES[MAXEXCLUSIVE_TYPE] = "maxExclusive"; ELEMENT_NAMES[MAXINCLUSIVE_TYPE] = "maxInclusive"; ELEMENT_NAMES[MAXLENGTH_TYPE] = "maxLength"; ELEMENT_NAMES[MINEXCLUSIVE_TYPE] = "minExclusive"; ELEMENT_NAMES[MININCLUSIVE_TYPE] = "minInclusive"; ELEMENT_NAMES[MINLENGTH_TYPE] = "minLength"; ELEMENT_NAMES[NOTATION_TYPE] = "notation"; ELEMENT_NAMES[PATTERN_TYPE] = "pattern"; ELEMENT_NAMES[REDEFINE_TYPE] = "redefine"; ELEMENT_NAMES[RESTRICTION_TYPE] = "restriction"; ELEMENT_NAMES[SCHEMA_TYPE] = "schema"; ELEMENT_NAMES[SELECTOR_TYPE] = "selector"; ELEMENT_NAMES[SEQUENCE_TYPE] = "sequence"; ELEMENT_NAMES[SIMPLECONTENT_TYPE] = "simpleContent"; ELEMENT_NAMES[SIMPLETYPE_TYPE] = "simpleType"; ELEMENT_NAMES[TOTALDIGITS_TYPE] = "totalDigits"; ELEMENT_NAMES[UNION_TYPE] = "union"; ELEMENT_NAMES[UNIQUE_TYPE] = "unique"; ELEMENT_NAMES[WHITESPACE_TYPE] = "whiteSpace"; ELEMENT_MASKS = new long[ELEMENT_NAMES.length]; long mask = 1; for (int i = 0; i < ELEMENT_NAMES.length; i++) { if (ELEMENT_NAMES[i] == null) { throw new RuntimeException("Array not properly initialized for index " + i); } ELEMENT_MASKS[i] = mask; mask <<= 1; } }; // // Instance data. /** Element type code. */ private final int m_type; /** Parent element. */ private OpenAttrBase m_parent; /** Extension data for application use. */ private Object m_extension; /** * Namespace definitions associated with this element (lazy create, null if unused). */ private ArrayList m_namespaces; /** * Constructor. * * @param type element type code */ protected SchemaBase(int type) { m_type = type; } /** * Get element type. * * @return type code for this element */ public final int type() { return m_type; } /** * Get element name. * * @return type code for this element */ public final String name() { return ELEMENT_NAMES[m_type]; } /** * Get element bit mask. * * @return bit mask for this element */ public final long bit() { return ELEMENT_MASKS[m_type]; } /** * Get parent element. * * @return parent element, null if none (schema element only) */ public final OpenAttrBase getParent() { return m_parent; } /** * Set parent element. This method is provided for use by subclasses and other classes in this package (particularly * {@link FilteredSegmentList}). * * @param parent */ protected final void setParent(OpenAttrBase parent) { m_parent = parent; } /** * Get the ancestor schema element. It is an error to call this method with an element which is not part of a * schema, resulting in a runtime exception. * * @return schema */ public final SchemaElement getSchema() { SchemaBase element = this; while (element.type() != SCHEMA_TYPE) { element = element.m_parent; if (element == null) { throw new IllegalStateException("Internal error - no ancestor schema element"); } } return (SchemaElement)element; } /** * Check if this element represents a global definition. * * @return true if global, false if not */ public final boolean isGlobal() { return m_parent instanceof SchemaElement; } /** * Get extension data. The actual type of object used for extension data (if any) is defined by the application. * * @return extension */ public Object getExtension() { return m_extension; } /** * Set extension data. The actual type of object used for extension data (if any) is defined by the application. * * @param extension */ public void setExtension(Object extension) { m_extension = extension; } /** * Get namespace declarations list. Entries in this list consist of pairs, consisting of namespace prefix followed * by namespace URI. The empty string is used as the prefix for the default namespace. * * @return extra attribute list */ public final ArrayList getNamespaceDeclarations() { if (m_namespaces == null || m_namespaces.size() == 0) { return EmptyList.INSTANCE; } else { return m_namespaces; } } /** * Clear namespace declarations list. */ public final void clearNamespaceDeclarations() { if (m_namespaces != null) { m_namespaces.clear(); } } /** * Add namespace declaration. * * @param prefix namespace prefix * @param uri namespace URI */ public final void addNamespaceDeclaration(String prefix, String uri) { if (m_namespaces == null) { m_namespaces = new ArrayList(); } m_namespaces.add(prefix); m_namespaces.add(uri); } /** * Get count of child elements. * * @return child count */ public abstract int getChildCount(); /** * Get read-only iterator for child elements. * * @return iterator */ public abstract Iterator getChildIterator(); /** * Pre-get method to be called by data binding while writing element start tag. The base class implementation just * writes out any extra namespaces defined on the element. Subclasses which override this implementation must call * the base implementation during their processing. * * @param ictx marshalling context * @throws JiBXException on marshalling error */ protected void preget(IMarshallingContext ictx) throws JiBXException { writeNamespaces(ictx); } /** * Pre-set method to be called by data binding while parsing element start tag. The base class implementation just * sets the parent element link and reads in any extra namespaces defined on the element. Subclasses which override * the this implementation must call the base implementation during their processing. * * @param ictx unmarshalling context * @throws JiBXException on error */ protected void preset(IUnmarshallingContext ictx) throws JiBXException { Object parent = ictx.getStackTop(); if (parent instanceof Collection) { parent = ictx.getStackObject(1); } m_parent = (OpenAttrBase)parent; readNamespaces(ictx); } /** * Validate attributes of element. This is designed to be called during unmarshalling as part of the pre-set method * processing when a subclass instance is being created. * * @param ictx unmarshalling context * @param extra allow extra attributes from other namespaces flag * @param attrs attributes array * @see #preset(IUnmarshallingContext) */ protected static void validateAttributes(IUnmarshallingContext ictx, boolean extra, StringArray attrs) { // loop through all attributes of current element UnmarshallingContext uctx = (UnmarshallingContext)ictx; for (int i = 0; i < uctx.getAttributeCount(); i++) { String name = uctx.getAttributeName(i); String ns = uctx.getAttributeNamespace(i); if (ns == null || ns.length() == 0) { // check if schema attribute in allowed set if (attrs.indexOf(name) < 0) { ValidationContext vctx = (ValidationContext)ictx.getUserContext(); vctx.addError("Undefined attribute " + name, ictx.getStackTop()); } } else if (SCHEMA_NAMESPACE.equals(ns)) { // no attributes from schema namespace are defined ValidationContext vctx = (ValidationContext)ictx.getUserContext(); vctx.addError("Undefined attribute " + name, ictx.getStackTop()); } else if (!extra) { // warn on non-schema attribute present where forbidden ValidationContext vctx = (ValidationContext)ictx.getUserContext(); String qname = UnmarshallingContext.buildNameString(ns, name); vctx.addWarning("Non-schema attribute not allowed " + qname, ictx.getStackTop()); } } } /** * Collect namespace declarations from element. This is designed to be called during unmarshalling as part of the * pre-set method processing when a subclass instance is being created. * * @param ictx unmarshalling context */ protected void readNamespaces(IUnmarshallingContext ictx) { UnmarshallingContext ctx = (UnmarshallingContext)ictx; int count = ctx.getNamespaceCount(); if (count > 0) { m_namespaces = new ArrayList(); loop: for (int i = 0; i < count; i++) { String pref = ctx.getNamespacePrefix(i); if (pref == null) { pref = ""; } if (pref.equals("xsd")) { if ("http://www.w3.org/2001/XMLSchema".equals(ctx.getNamespaceUri(i))) { continue loop; } else { throw new RuntimeException("Cannot handle xsd prefix associated with non-schema namespace"); } } m_namespaces.add(pref); m_namespaces.add(ctx.getNamespaceUri(i)); } } else { m_namespaces = null; } } /** * Write namespace declarations to element. This is designed to be called during marshalling as part of the pre-get * method processing when a subclass instance is being marshalled. * * @param ictx marshalling context * @throws JiBXException on error writing */ protected void writeNamespaces(IMarshallingContext ictx) throws JiBXException { if (m_namespaces != null) { try { // set up information for namespace indexes and prefixes IXMLWriter writer = ictx.getXmlWriter(); String[] uris = new String[m_namespaces.size() / 2]; int[] indexes = new int[uris.length]; String[] prefs = new String[uris.length]; int base = writer.getNamespaceCount(); for (int i = 0; i < uris.length; i++) { indexes[i] = base + i; prefs[i] = (String)m_namespaces.get(i * 2); uris[i] = (String)m_namespaces.get(i * 2 + 1); } // add the namespace declarations to current element writer.pushExtensionNamespaces(uris); writer.openNamespaces(indexes, prefs); for (int i = 0; i < uris.length; i++) { String prefix = prefs[i]; String name = prefix.length() > 0 ? "xmlns:" + prefix : "xmlns"; writer.addAttribute(0, name, uris[i]); } } catch (IOException e) { throw new JiBXException("Error writing output document", e); } } } /** * Prevalidate component information. The prevalidation step is used to check isolated aspects of a component, such * as the settings for enumerated values. This empty base class implementation should be overridden by each subclass * that requires prevalidation handling. * * @param vctx validation context */ public void prevalidate(ValidationContext vctx) {} /** * Validate component information. The validation step is used for checking the interactions between components, * such as name references to other components. The {@link #prevalidate} method will always be called for every * component in the schema definition before this method is called for any component. This empty base class * implementation should be overridden by each subclass that requires validation handling. * * @param vctx validation context */ public void validate(ValidationContext vctx) {} }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/SchemaElement.java0000644000175000017500000002747510767276600026176 0ustar moellermoeller/* Copyright (c) 2006-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import org.apache.log4j.Logger; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.schema.ISchemaResolver; import org.jibx.schema.NameRegister; import org.jibx.schema.TreeWalker; import org.jibx.schema.attributes.FormChoiceAttribute; import org.jibx.schema.support.Conversions; import org.jibx.schema.support.LazyList; import org.jibx.schema.types.AllEnumSet; import org.jibx.schema.validation.ValidationContext; /** * Model component for schema element. * * @author Dennis M. Sosnoski */ public class SchemaElement extends OpenAttrBase { /** Logger for class. */ private static final Logger s_logger = Logger.getLogger(TreeWalker.class.getName()); /** List of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "attributeFormDefault", "blockDefault", "elementFormDefault", "finalDefault", "id", "targetNamespace", "version" }); /** Mask bits for schema reference child elements. */ private static final long SCHEMA_REFERENCE_MASK = ELEMENT_MASKS[ANNOTATION_TYPE] | ELEMENT_MASKS[INCLUDE_TYPE] | ELEMENT_MASKS[IMPORT_TYPE] | ELEMENT_MASKS[REDEFINE_TYPE]; /** Mask bits for top-level definition child elements. */ private static final long TOP_LEVEL_DEFINITION_MASK = ELEMENT_MASKS[ANNOTATION_TYPE] | ELEMENT_MASKS[ATTRIBUTE_TYPE] | ELEMENT_MASKS[ATTRIBUTEGROUP_TYPE] | ELEMENT_MASKS[COMPLEXTYPE_TYPE] | ELEMENT_MASKS[ELEMENT_TYPE] | ELEMENT_MASKS[GROUP_TYPE] | ELEMENT_MASKS[NOTATION_TYPE] | ELEMENT_MASKS[SIMPLETYPE_TYPE]; // // Instance data /** Filtered list of schema reference child elements. */ private final FilteredSegmentList m_schemaChildren; /** Filtered list of top-level definition child elements. */ private final FilteredSegmentList m_topLevelChildren; /** Schemas which directly reference this schema. */ private final LazyList m_dependentSchemas; /** 'attributeFormDefault' attribute value (-1 if not set). */ private int m_attributeFormDefaultType; /** 'elementFormDefault' attribute value (-1 if not set). */ private int m_elementFormDefaultType; /** 'blockDefault' attribute value. */ private AllEnumSet m_blockDefault; /** 'finalDefault' attribute value. */ private AllEnumSet m_finalDefault; /** "id" attribute value. */ private String m_id; /** 'targetNamespace' attribute value. */ private String m_targetNamespace; /** Effective namespace overriding the target namespace (null if unused). */ private String m_effectiveNamespace; /** 'version' attribute value. */ private String m_version; /** Resolver for this schema. */ private ISchemaResolver m_resolver; /** Register for names from this context. */ private NameRegister m_register; /** * Constructor. */ public SchemaElement() { super(SCHEMA_TYPE); m_schemaChildren = new FilteredSegmentList(getChildrenWritable(), SCHEMA_REFERENCE_MASK, this); m_topLevelChildren = new FilteredSegmentList(getChildrenWritable(), TOP_LEVEL_DEFINITION_MASK, m_schemaChildren, this); m_dependentSchemas = new LazyList(); m_blockDefault = new AllEnumSet(ElementElement.s_blockValues, "blockDefault"); m_finalDefault = new AllEnumSet(ElementElement.s_derivationValues, "finalDefault"); m_register = new NameRegister(); m_attributeFormDefaultType = -1; m_elementFormDefaultType = -1; } // // Base class overrides /* (non-Javadoc) * @see org.jibx.schema.ElementBase#preset(org.jibx.runtime.IUnmarshallingContext) */ protected void preset(IUnmarshallingContext ictx) throws JiBXException { validateAttributes(ictx, s_allowedAttributes); super.preset(ictx); } // // Access methods /** * Get list of schema-related child elements. * * @return child list */ public FilteredSegmentList getSchemaChildren() { return m_schemaChildren; } /** * Get list of top-level definition child elements. * * @return child list */ public FilteredSegmentList getTopLevelChildren() { return m_topLevelChildren; } /** * Get 'attributeFormDefault' attribute type code. * * @return type */ public int getAttributeFormDefault() { return m_attributeFormDefaultType; } /** * Set 'attributeFormDefault' attribute type code. * * @param type */ public void setAttributeFormDefault(int type) { FormChoiceAttribute.s_formValues.checkValue(type); m_attributeFormDefaultType = type; } /** * Get 'attributeFormDefault' attribute text. * * @return text (null if not set) */ public String getAttributeFormDefaultText() { if (m_attributeFormDefaultType >= 0) { return FormChoiceAttribute.s_formValues. getName(m_attributeFormDefaultType); } else { return null; } } /** * Set 'attributeFormDefault' attribute text. This method is provided only * for use when unmarshalling. * * @param text * @param ictx */ private void setAttributeFormDefaultText(String text, IUnmarshallingContext ictx) { m_attributeFormDefaultType = Conversions.convertEnumeration(text, FormChoiceAttribute.s_formValues, "attributeFormDefault", ictx); } /** * Get 'elementFormDefault' attribute type code. * * @return type */ public int getElementFormDefault() { return m_elementFormDefaultType; } /** * Set 'elementFormDefault' attribute type code. * * @param type */ public void setElementFormDefault(int type) { FormChoiceAttribute.s_formValues.checkValue(type); m_elementFormDefaultType = type; } /** * Get 'elementFormDefault' attribute text. * * @return text (null if not set) */ public String getElementFormDefaultText() { if (m_elementFormDefaultType >= 0) { return FormChoiceAttribute.s_formValues. getName(m_elementFormDefaultType); } else { return null; } } /** * Set 'elementFormDefault' attribute text. This method is provided only * for use when unmarshalling. * * @param text * @param ictx */ private void setElementFormDefaultText(String text, IUnmarshallingContext ictx) { m_elementFormDefaultType = Conversions.convertEnumeration(text, FormChoiceAttribute.s_formValues, "elementFormDefault", ictx); } /** * Get 'blockDefault' attribute. * * @return block default */ public AllEnumSet getBlock() { return m_blockDefault; } /** * Get 'finalDefault' attribute. * * @return final default */ public AllEnumSet getFinal() { return m_finalDefault; } /** * Get 'targetNamespace' attribute. * * @return target namespace (null if none) */ public String getTargetNamespace() { return m_targetNamespace; } /** * Set 'targetNamespace' attribute. * * @param tns target namespace (null if none) */ public void setTargetNamespace(String tns) { m_targetNamespace = tns; } /** * Get the effective namespace applidd to this schema. This will differ from the 'targetNamespace' attribute in the * case where a no-namespace schema is included (directly or indirectly) into a namespaced schema. * * @return effective namespace (null if none) */ public String getEffectiveNamespace() { if (m_effectiveNamespace == null) { return m_targetNamespace; } else { return m_effectiveNamespace; } } /** * Set the effective namespace to be applied to this schema. * * @param ens effective namespace (null if the same as 'targetNamespace' attribute) */ public void setEffectiveNamespace(String ens) { m_effectiveNamespace = ens; } /** * Get 'version' attribute. * * @return version */ public String getVersion() { return m_version; } /** * Set 'version' attribute. * * @param version */ public void setVersion(String version) { m_version = version; } /** * Get resolver. * * @return resolver */ public ISchemaResolver getResolver() { return m_resolver; } /** * Set resolver. * * @param resolver */ public void setResolver(ISchemaResolver resolver) { m_resolver = resolver; } /** * Get register for named components of schema. * * @return register */ public NameRegister getRegister() { return m_register; } // // Convenience methods based on defaults /** * Check if elements are qualified by default. * * @return true if qualified, false if not */ public boolean isElementQualifiedDefault() { return m_elementFormDefaultType == FormChoiceAttribute.QUALIFIED_FORM; } /** * Check if attributes are qualified by default. * * @return true if qualified, false if not */ public boolean isAttributeQualifiedDefault() { return m_attributeFormDefaultType == FormChoiceAttribute.QUALIFIED_FORM; } // // Validation methods /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#validate(org.jibx.schema.ValidationContext) */ public void validate(ValidationContext vctx) { s_logger.debug("Validating schema " + getResolver().getName()); super.validate(vctx); } public void prevalidate(ValidationContext vctx) { s_logger.debug("Prevalidating schema " + getResolver().getName()); super.prevalidate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/SchemaLocationBase.java0000644000175000017500000001216510767276600027136 0ustar moellermoeller/* Copyright (c) 2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import java.io.IOException; import org.jibx.binding.util.StringArray; import org.jibx.runtime.BindingDirectory; import org.jibx.runtime.IBindingFactory; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.schema.ISchemaResolver; import org.jibx.schema.validation.ValidationContext; /** * Base class for elements referencing an external schema. During prevalidation * this first reads the referenced schema, so that it'll automatically be * included in the prevalidation pass. * * @author Dennis M. Sosnoski */ public abstract class SchemaLocationBase extends AnnotatedBase { /** List of allowed attribute names. */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "schemaLocation" }, AnnotatedBase.s_allowedAttributes); // // Instance data /** 'schemaLocation' attribute value. */ private String m_location; /** Referenced schema definition. */ private SchemaElement m_schema; /** * Constructor. * * @param type element type */ protected SchemaLocationBase(int type) { super(type); } /** * Load a schema from a resolver. * * @param vctx validation context * @param resolver * @return loaded schema * @throws JiBXException * @throws IOException */ private SchemaElement readSchema(ValidationContext vctx, ISchemaResolver resolver) throws JiBXException, IOException { IBindingFactory factory = BindingDirectory.getFactory(SchemaElement.class); IUnmarshallingContext uctx = factory.createUnmarshallingContext(); uctx.setDocument(resolver.getContent(), resolver.getId(), null); uctx.setUserContext(vctx); return (SchemaElement)uctx.unmarshalElement(); } // // Access methods /** * Get 'location' attribute value. * * @return 'location' value */ public String getLocation() { return m_location; } /** * Set 'location' attribute value. * * @param location 'location' value */ public void setLocation(String location) { m_location = location; } /** * Get referenced schema. This method is only usable after prevalidation. * * @return schema (null if loading failed) */ public SchemaElement getReferencedSchema() { return m_schema; } // // Base class overrides /* (non-Javadoc) * @see org.jibx.schema.elements.AnnotatedBase#prevalidate(org.jibx.schema.validation.ValidationContext) */ public void prevalidate(ValidationContext vctx) { if (m_location == null) { vctx.addFatal("Missing required 'schemaLocation' value", this); } else { try { // find or load referenced schema ISchemaResolver resolver = vctx.getCurrentSchema().getResolver().resolve(m_location); SchemaElement schema = vctx.getSchema(resolver.getId()); if (schema == null) { schema = readSchema(vctx, resolver); vctx.setSchema(resolver.getId(), schema); schema.setResolver(resolver); } m_schema = schema; } catch (JiBXException e) { vctx.addFatal("Error loading schema: " + e.getMessage(), this); } catch (IOException e) { vctx.addFatal("Error loading schema: " + e.getMessage(), this); } } super.prevalidate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/SchemaPath.java0000644000175000017500000004111310756325126025456 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import java.util.ArrayList; import org.jibx.schema.INamed; import org.jibx.schema.support.LazyList; import org.jibx.schema.validation.ValidationContext; /** * Path specification within a schema definition. This implements simple XPath-like expressions, consisting of any * number of path components given as element names or '*' for any element or '**' for any nesting of elements, along * with optional position number or name attribute predicates in square brackets. * * @author Dennis M. Sosnoski */ public class SchemaPath { /** Single element wildcard step. */ private static final StepBase WILDCARD_ELEMENT_STEP = new StepBase() { public boolean isRepeating() { return false; } public boolean match(OpenAttrBase elem) { return true; } public int position() { return -1; } }; /** Nesteing element wildcard step. */ private static final StepBase WILDCARD_NESTING_STEP = new StepBase() { public boolean isRepeating() { return true; } public boolean match(OpenAttrBase elem) { return true; } public int position() { return -1; } }; /** Source object for path expression. */ private final Object m_sourceObject; /** Validation context used for reporting errors. */ private final ValidationContext m_validationContext; /** Path steps. */ private StepBase[] m_steps; /** * Constructor. * * @param obj source object for expression * @param vctx validation context */ private SchemaPath(Object obj, ValidationContext vctx) { m_sourceObject = obj; m_validationContext = vctx; } /** * Validate a name attribute value. * * @param nameattr name value * @return true if valid, false if not */ private boolean validateName(String nameattr) { for (int i = 0; i < nameattr.length(); i++) { char chr = nameattr.charAt(i); if (!Character.isLetter(chr) && chr != '.' && chr != '_' && chr != '-' && (i <= 0 || !Character.isDigit(chr))) { m_validationContext.addError("Invalid path expression name predicate '" + nameattr + '\'', m_sourceObject); return false; } } return true; } /** * Validate and convert a position value. * * @param postext position text * @return position value (strictly positive), or -1 if error */ private int convertPosition(String postext) { // first check that all characters are digits (for better error message) for (int i = 0; i < postext.length(); i++) { char chr = postext.charAt(i); if (chr < '0' || chr > '9') { if (i == 0) { m_validationContext.addError("Unknown path expression predicate '" + postext + '\'', m_sourceObject); } else { m_validationContext.addError("Illegal character in path expression position predicate '" + postext + "' (must be digits only)", m_sourceObject); } return -1; } } // convert the actual position value int position = -1; try { position = Integer.parseInt(postext); if (position <= 0) { m_validationContext.addError("Path expression position predicate value must be >= 1", m_sourceObject); } } catch (NumberFormatException e) { m_validationContext.addError("Error parsing position predicate in path expression", m_sourceObject); } return position; } /** * Build a path step. * * @param step expression * @return constructed step, or null if error */ private StepBase buildPathStep(String step) { if ("*".equals(step)) { return WILDCARD_ELEMENT_STEP; } else if ("**".equals(step)) { return WILDCARD_NESTING_STEP; } else { // check if there's a predicate present boolean valid = true; String elemname = null; String nameattr = null; String postext = null; int split = step.indexOf('['); if (split >= 0) { // split off element name as part before predicate start elemname = step.substring(0, split); step = step.substring(split + 1); // make sure there's a matching predicate end split = step.indexOf(']'); if (split >= 0) { // check type of predicate String clause = step.substring(0, split).trim(); if (clause.startsWith("@name=")) { nameattr = clause.substring(6); valid = validateName(nameattr); } else { postext = clause; } // check for a second predicate step = step.substring(split + 1); if (step.length() > 0) { // second predicate must be position int end = step.length() - 1; if (step.charAt(0) == '[' && step.charAt(end) == ']') { clause = step.substring(1, end).trim(); if (postext == null) { postext = clause; } else { m_validationContext.addError("Multiple predicates only allowed in path expression " + "with [@name=xxx] as first predicate", m_sourceObject); valid = false; } } else { m_validationContext.addError("Invalid predicate in path expression", m_sourceObject); valid = false; } } } else { m_validationContext.addError("Invalid predicate in path expression", m_sourceObject); valid = false; } } else { elemname = step; } // decode the position predicate int position = -1; if (valid && postext != null) { position = convertPosition(postext); valid = position > 0; } // return constructed step if syntax is valid if (valid) { return new PathStep(elemname, position, nameattr); } else { return null; } } } /** * Find matches for expression starting from a supplied schema element. * * @param offset current path step offset * @param end ending match list offset * @param base starting element for match * @param matches elements matching expression */ private void match(int offset, int end, OpenAttrBase base, ArrayList matches) { LazyList childs = base.getChildrenWritable(); StepBase step = m_steps[offset]; int steppos = step.position(); int position = 0; for (int i = 0; i < childs.size(); i++) { OpenAttrBase child = (OpenAttrBase)childs.get(i); if (step.match(child)) { if (steppos <= 0 || steppos == ++position) { if (offset == end) { matches.add(child); } else { match(offset + 1, end, child, matches); } if (step.isRepeating()) { match(offset, end, child, matches); } if (steppos > 0) { break; } } } } } /** * Get length of this path (minimum number of nested elements). * * @return path length */ public int getPathLength() { return m_steps.length; } /** * Check if the first path step is a wildcard. * * @return true if wildcard, false if not */ public boolean isWildStart() { return m_steps[0] == WILDCARD_ELEMENT_STEP || m_steps[0] == WILDCARD_NESTING_STEP; } /** * Find unique match for subexpression starting from a supplied schema element annotation. An error is reported if * no match is found, or if multiple matches are found. * * @param first starting path step index * @param last ending path step index * @param base starting element for match * @return matching element, or null if error */ public OpenAttrBase partialMatchUnique(int first, int last, OpenAttrBase base) { ArrayList matches = new ArrayList(); match(first, last, base, matches); OpenAttrBase match = null; if (matches.size() == 0) { m_validationContext.addError("No match found for path expression", m_sourceObject); } else if (matches.size() > 1) { m_validationContext.addError("Multiple matches found for path expression", m_sourceObject); } else { match = (OpenAttrBase)matches.get(0); } return match; } /** * Find unique match for expression starting from a supplied schema element annotation. An error is reported if no * match is found, or if multiple matches are found. * * @param base starting element for match * @return matching element, or null if error */ public OpenAttrBase matchUnique(OpenAttrBase base) { return partialMatchUnique(0, m_steps.length-1, base); } /** * Build a path. If a path expression is supplied, the final path step in the expression must either not use an * element name, or the element name must match the actual element supplied. * * @param path expression (null if none) * @param elemname element name for final step in path * @param nameattr name attribute (applied to final step in path, null if none) * @param postext position (applied to final step in path, null if none) * @param obj object defining the path * @param vctx validation context * @return constructed path, or null if error */ public static SchemaPath buildPath(String path, String elemname, String nameattr, String postext, Object obj, ValidationContext vctx) { // start by handling supplied values for final step predicates SchemaPath inst = new SchemaPath(obj, vctx); boolean valid = true; int position = -1; if (postext != null) { position = inst.convertPosition(postext); if (position < 0) { valid = false; } } if (nameattr != null && !inst.validateName(nameattr)) { valid = false; } // check for only last step involved StepBase[] steps; if (path == null) { steps = new StepBase[] { new PathStep(elemname, position, nameattr) }; } else { // path supplied, process each step ArrayList steplist = new ArrayList(); int base = 0; int split; while ((split = path.indexOf('/', base)) >= 0) { StepBase step = inst.buildPathStep(path.substring(base, split)); base = split + 1; if (step == null) { valid = false; } else { steplist.add(step); } } // strip element name from last path step, if present String steptext = path.substring(base); if (steptext.startsWith(elemname)) { steptext = steptext.substring(elemname.length()); } // build the last path step from path StepBase step = inst.buildPathStep(elemname + steptext); if (step instanceof PathStep) { // make sure all components match specified values PathStep laststep = (PathStep)step; if (!elemname.equals(laststep.m_elementName)) { vctx.addError("Last path step must use no element name, or the specified element name", obj); valid = false; } if (position <= 0) { position = laststep.m_position; } else if (laststep.m_position > 0 && position != laststep.m_position) { vctx.addError("Position must not be used in last path step, or must match specified value", obj); valid = false; } if (nameattr == null) { nameattr = laststep.m_name; } else if (laststep.m_name != null && !nameattr.equals(laststep.m_name)) { vctx.addError("Name atribute must not be used in last path step, or must match specified value", obj); valid = false; } } // add generated final step combining specified values with those from path steplist.add(new PathStep(elemname, position, nameattr)); steps = (StepBase[])steplist.toArray(new StepBase[steplist.size()]); } // return configured instance if valid if (valid) { inst.m_steps = steps; return inst; } else { return null; } } public abstract static class StepBase { public abstract boolean match(OpenAttrBase elem); public abstract boolean isRepeating(); public abstract int position(); } public static class PathStep extends StepBase { private final String m_elementName; private final int m_position; private final String m_name; protected PathStep(String elemname, int position, String name) { m_elementName = elemname; m_position = position; m_name = name; } public boolean isRepeating() { return false; } public boolean match(OpenAttrBase elem) { return elem.name().equals(m_elementName) && ((m_name == null) || (elem instanceof INamed && m_name.equals(((INamed)elem).getName()))); } public int position() { return m_position; } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/SequenceElement.java0000644000175000017500000000351710624256130026521 0ustar moellermoeller/* Copyright (c) 2006-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; /** * <sequence> element definition. This is just a trivial variation of the * base compositor class. * * @author Dennis M. Sosnoski */ public class SequenceElement extends CommonCompositorDefinition { /** * Constructor. */ public SequenceElement() { super(SEQUENCE_TYPE, CHOICE_SEQUENCE_PARTICLE_MASK); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/SimpleContentElement.java0000644000175000017500000000452010602646266027541 0ustar moellermoeller/* Copyright (c) 2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; /** * Representation for a simpleContent element. * * @author Dennis M. Sosnoski */ public class SimpleContentElement extends CommonContentBase { /** * Constructor. */ public SimpleContentElement() { super(SIMPLECONTENT_TYPE); } // // Base class overrides /* (non-Javadoc) * @see org.jibx.schema.elements.CommonContentBase#isComplexContent() */ public boolean isComplexContent() { return false; } /* (non-Javadoc) * @see org.jibx.schema.ElementBase#preset(org.jibx.runtime.IUnmarshallingContext) */ protected void preset(IUnmarshallingContext ictx) throws JiBXException { validateAttributes(ictx, s_allowedAttributes); super.preset(ictx); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/SimpleExtensionElement.java0000644000175000017500000001142010651200244030062 0ustar moellermoeller/* Copyright (c) 2006-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.schema.validation.ValidationContext; /** * Definition for extension element used with a simple type. * * @author Dennis M. Sosnoski */ public class SimpleExtensionElement extends CommonTypeDerivation { /** Mask bits for attribute child elements. */ private long ATTRIBUTE_MASK = ELEMENT_MASKS[ATTRIBUTE_TYPE] | ELEMENT_MASKS[ATTRIBUTEGROUP_TYPE]; /** Mask bits for attribute child elements. */ private long ANYATTRIBUTE_MASK = ELEMENT_MASKS[ANYATTRIBUTE_TYPE]; // // Instance data /** Filtered list of attribute definitions. */ private final FilteredSegmentList m_attributeList; /** Filtered list of anyAttribute definitions (zero or one). */ private final FilteredSegmentList m_anyAttributeList; /** * Constructor. */ public SimpleExtensionElement() { super(EXTENSION_TYPE); m_attributeList = new FilteredSegmentList(getChildrenWritable(), ATTRIBUTE_MASK, this); m_anyAttributeList = new FilteredSegmentList(getChildrenWritable(), ANYATTRIBUTE_MASK, m_attributeList, this); } // // Base class overrides /* (non-Javadoc) * @see org.jibx.schema.elements.CommonTypeDerivation#isComplexType() */ public boolean isComplexType() { return false; } /* (non-Javadoc) * @see org.jibx.schema.elements.CommonTypeDerivation#isExtension() */ public boolean isExtension() { return true; } /* * (non-Javadoc) * * @see org.jibx.schema.ElementBase#preset(org.jibx.runtime.IUnmarshallingContext) */ protected void preset(IUnmarshallingContext ictx) throws JiBXException { validateAttributes(ictx, s_allowedAttributes); super.preset(ictx); } // // Access methods /** * Get list of attribute child elements. This list must be empty when * a simpleContent or complexContent definition is used. * * @return list of attributes */ public FilteredSegmentList getAttributeList() { return m_attributeList; } /** * Get anyAttribute child element. * * @return element, or null if none */ public AnyAttributeElement getAnyAttribute() { return m_anyAttributeList.size() > 0 ? (AnyAttributeElement)m_anyAttributeList.get(0) : null; } /** * Set anyAttribute child element. * * @param element element, or null if unsetting */ public void setAnyAttribute(AnyAttributeElement element) { m_anyAttributeList.clear(); if (element != null) { m_anyAttributeList.add(element); } } // // Validation methods /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#prevalidate(org.jibx.schema.ValidationContext) */ public void prevalidate(ValidationContext vctx) { // check form of definition if (m_anyAttributeList.size() > 1) { vctx.addError("Only one child allowed", this); } // continue with parent class prevalidation super.prevalidate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/SimpleRestrictionElement.java0000644000175000017500000001255610602646264030442 0ustar moellermoeller/* Copyright (c) 2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.schema.validation.ValidationContext; /** * restriction element definition used for simple content. * * @author Dennis M. Sosnoski */ public class SimpleRestrictionElement extends CommonTypeDerivation { /** Mask bits for inline base type definition. */ private long INLINE_TYPE_MASK = ELEMENT_MASKS[SIMPLETYPE_TYPE]; /** Mask bits for facet child elements. */ private long FACETS_MASK = ELEMENT_MASKS[ENUMERATION_TYPE] | ELEMENT_MASKS[FRACTIONDIGITS_TYPE] | ELEMENT_MASKS[LENGTH_TYPE] | ELEMENT_MASKS[MAXEXCLUSIVE_TYPE] | ELEMENT_MASKS[MAXINCLUSIVE_TYPE] | ELEMENT_MASKS[MAXLENGTH_TYPE] | ELEMENT_MASKS[MINEXCLUSIVE_TYPE] | ELEMENT_MASKS[MININCLUSIVE_TYPE] | ELEMENT_MASKS[MINLENGTH_TYPE] | ELEMENT_MASKS[PATTERN_TYPE] | ELEMENT_MASKS[TOTALDIGITS_TYPE] | ELEMENT_MASKS[WHITESPACE_TYPE]; // // Instance data /** Filtered list of inline base type definition element. */ private final FilteredSegmentList m_inlineBaseList; /** Filtered list of facet elements. */ private final FilteredSegmentList m_facetsList; /** * Constructor. */ public SimpleRestrictionElement() { super(RESTRICTION_TYPE); m_inlineBaseList = new FilteredSegmentList(getChildrenWritable(), INLINE_TYPE_MASK, this); m_facetsList = new FilteredSegmentList(getChildrenWritable(), FACETS_MASK, m_inlineBaseList, this); } // // Base class overrides /* (non-Javadoc) * @see org.jibx.schema.elements.CommonTypeDerivation#isComplexType() */ public boolean isComplexType() { return false; } /* (non-Javadoc) * @see org.jibx.schema.elements.CommonTypeDerivation#isExtension() */ public boolean isExtension() { return false; } /* (non-Javadoc) * @see org.jibx.binding.schema.ElementBase#preset(org.jibx.runtime.IUnmarshallingContext) */ protected void preset(IUnmarshallingContext ictx) throws JiBXException { validateAttributes(ictx, s_allowedAttributes); super.preset(ictx); } // // Accessor methods /** * Get inline base type definition element. * * @return inline base type, or null if none */ public SimpleTypeElement getDerivation() { return m_inlineBaseList.size() > 0 ? (SimpleTypeElement)m_inlineBaseList.get(0) : null; } /** * Set inline base type definition element. * * @param element inline base type, or null if unsetting */ public void setDerivation(SimpleTypeElement element) { m_inlineBaseList.clear(); if (element != null) { m_inlineBaseList.add(element); } } /** * Get list of child facet elements. * * @return list of facets */ public FilteredSegmentList getFacetsList() { return m_facetsList; } // // Validation methods /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#prevalidate(org.jibx.schema.ValidationContext) */ public void prevalidate(ValidationContext vctx) { // check for missing or conflicting type information if (m_inlineBaseList.size() == 0 && getBase() == null) { vctx.addError("Must have 'base' attribute or inline definition", this); } if (m_inlineBaseList.size() > 0 && getBase() != null) { vctx.addError("Can only use 'base' attribute without inline definition", this); } if (m_inlineBaseList.size() > 1) { vctx.addError("Only one inline definition allowed", this); } // continue with parent class prevalidation super.prevalidate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/SimpleTypeElement.java0000644000175000017500000001234010767276600027052 0ustar moellermoeller/* Copyright (c) 2006-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import org.jibx.binding.util.StringArray; import org.jibx.runtime.EnumSet; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.schema.types.AllEnumSet; import org.jibx.schema.validation.ValidationContext; /** * Representation for a simpleType element. * * @author Dennis M. Sosnoski */ public class SimpleTypeElement extends CommonTypeDefinition { /** List of allowed attribute names. */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "final" }, CommonTypeDefinition.s_allowedAttributes); /** Mask bits for content derivation child elements. */ private long CONTENT_DERIVATION_MASK = ELEMENT_MASKS[LIST_TYPE] | ELEMENT_MASKS[RESTRICTION_TYPE] | ELEMENT_MASKS[UNION_TYPE]; // // Value set information public static final int LIST_FINAL = 0; public static final int RESTRICTION_FINAL = 1; public static final int UNION_FINAL = 2; public static final EnumSet s_simpleDerivationValues = new EnumSet(LIST_FINAL, new String[] { "list", "restriction", "union"}); // // Instance data /** Filtered list of content derivation elements (must be exactly one). */ private final FilteredSegmentList m_contentDerivationList; /** 'final' attribute value. */ private AllEnumSet m_final; /** * Constructor. */ public SimpleTypeElement() { super(SIMPLETYPE_TYPE); m_contentDerivationList = new FilteredSegmentList(getChildrenWritable(), CONTENT_DERIVATION_MASK, this); m_final = new AllEnumSet(s_simpleDerivationValues, "final"); } // // Base class overrides /* (non-Javadoc) * @see org.jibx.schema.ElementBase#preset(org.jibx.runtime.IUnmarshallingContext) */ protected void preset(IUnmarshallingContext ictx) throws JiBXException { validateAttributes(ictx, s_allowedAttributes); super.preset(ictx); } /* (non-Javadoc) * @see org.jibx.schema.CommonTypeDefinition#isComplexType() */ public boolean isComplexType() { return false; } /* (non-Javadoc) * @see org.jibx.schema.elements.CommonTypeDefinition#isPredefinedType() */ public boolean isPredefinedType() { return false; } // // Access methods /** * Get 'final' attribute value. * * @return final */ public AllEnumSet getFinal() { return m_final; } /** * Get derivation child element. * * @return derivation element, or null if not yet set */ public SchemaBase getDerivation() { return m_contentDerivationList.size() > 0 ? (SchemaBase)m_contentDerivationList.get(0) : null; } /** * Set derivation child element. * * @param element derivation element, or null if unsetting */ public void setDerivation(SchemaBase element) { m_contentDerivationList.clear(); if (element != null) { m_contentDerivationList.add(element); } } // // Validation methods /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#prevalidate(org.jibx.schema.ValidationContext) */ public void prevalidate(ValidationContext vctx) { // check whether global or local definition if (isGlobal()) { // make sure local type prohibited attributes are not present if (getFinal().isPresent()) { vctx.addError("The 'final' attribute is prohibited for a local definition", this); } } // continue with parent class prevalidation super.prevalidate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/UnionElement.java0000644000175000017500000001242510651200244026032 0ustar moellermoeller/* Copyright (c) 2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.QName; import org.jibx.schema.validation.ValidationContext; /** * union element definition. * * @author Dennis M. Sosnoski */ public class UnionElement extends AnnotatedBase { /** List of allowed attribute names. */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "memberTypes" }, AnnotatedBase.s_allowedAttributes); /** Mask bits for inline base type definition. */ private long INLINE_TYPE_MASK = ELEMENT_MASKS[SIMPLETYPE_TYPE]; // // Instance data /** Filtered list of inline base type definition elements. */ private final FilteredSegmentList m_inlineBaseList; /** 'memberTypes' attribute value. */ private QName[] m_memberTypes; /** Actual definitions corresponding to 'memberTypes' attribute values (set during validation). */ private CommonTypeDefinition[] m_memberTypeDefinitions; /** * Constructor. */ public UnionElement() { super(UNION_TYPE); m_inlineBaseList = new FilteredSegmentList(getChildrenWritable(), INLINE_TYPE_MASK, this); } // // Base class overrides /* (non-Javadoc) * @see org.jibx.binding.schema.ElementBase#preset(org.jibx.runtime.IUnmarshallingContext) */ protected void preset(IUnmarshallingContext ictx) throws JiBXException { validateAttributes(ictx, s_allowedAttributes); super.preset(ictx); } // // Accessor methods /** * Get 'memberTypes' attribute value. * * @return attribute value, or null if none */ public QName[] getMemberTypes() { return m_memberTypes; } /** * Set 'memberTypes' attribute value. * * @param bases member types, or null if none */ public void setMemberTypes(QName[] bases) { m_memberTypes = bases; } /** * Get referenced member type definitions. This method can only be called after validation. * * @return member types, or null if none */ public CommonTypeDefinition[] getMemberTypeDefinitions() { return m_memberTypeDefinitions; } /** * Get list of inline member type definitions. * * @return inline types */ public FilteredSegmentList getInlineBaseList() { return m_inlineBaseList; } // // Validation methods /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#prevalidate(org.jibx.schema.ValidationContext) */ public void prevalidate(ValidationContext vctx) { // check for missing or conflicting type information if (m_inlineBaseList.size() == 0 && m_memberTypes == null) { vctx.addError("Must have 'memberTypes' attribute or inline definitions", this); } } /* (non-Javadoc) * @see org.jibx.schema.ComponentBase#validate(org.jibx.schema.ValidationContext) */ public void validate(ValidationContext vctx) { // look up referenced type definitions if (m_memberTypes != null) { m_memberTypeDefinitions = new CommonTypeDefinition[m_memberTypes.length]; for (int i = 0; i < m_memberTypes.length; i++) { QName tname = m_memberTypes[i]; CommonTypeDefinition def = vctx.findType(tname); m_memberTypeDefinitions[i] = def; if (def == null) { vctx.addFatal("Referenced type '" + tname + "' is not defined", this); } } } // continue with parent class validation super.validate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/elements/WildcardBase.java0000644000175000017500000001077410602646264025775 0ustar moellermoeller/* * Copyright (c) 2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.elements; import org.jibx.binding.util.StringArray; import org.jibx.runtime.EnumSet; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.schema.support.Conversions; import org.jibx.schema.validation.ValidationContext; /** * Base for wildcard element definitions. * * @author Dennis M. Sosnoski */ public class WildcardBase extends AnnotatedBase { /** List of allowed attribute names. */ public static final StringArray s_allowedAttributes = new StringArray( new String[] { "namespace", "processContents" }, AnnotatedBase.s_allowedAttributes); // // Value set information public static final int LAX_PROCESS = 0; public static final int SKIP_PROCESS = 1; public static final int STRICT_PROCESS = 2; public static final EnumSet s_processValues = new EnumSet(LAX_PROCESS, new String[] { "lax", "skip", "strict" }); // // Instance data /** 'namespace' attribute value. */ private String[] m_namespaces; /** 'processContents' attribute value. */ private int m_processType; /** * Constructor. * * @param type element type */ public WildcardBase(int type) { super(type); m_processType = -1; } // // Accessor methods /** * Get 'namespace' attribute value. * * @return namespaces */ public String[] getNamespaces() { return m_namespaces; } /** * Set 'namespace' attribute value. * * @param namespaces */ public void setNamespaces(String[] namespaces) { m_namespaces = namespaces; } /** * Get 'processContents' attribute type code. * * @return code (-1 if not set) */ public int getProcessContents() { return m_processType; } /** * Set 'processContents' attribute type code. * * @param code (-1 to unset) */ public void setProcessContents(int code) { if (code >= 0) { s_processValues.checkValue(code); } m_processType = code; } /** * Get 'processContents' attribute text. * * @return text (null if not set) */ public String getProcessContentsText() { return s_processValues.getName(m_processType); } /** * Set 'processContents' attribute text. This method is provided only for * use when unmarshalling. * * @param text * @param ictx */ private void setProcessContentsText(String text, IUnmarshallingContext ictx) { m_processType = Conversions.convertEnumeration(text, s_processValues, "use", ictx); } // // Validation methods /* * (non-Javadoc) * * @see org.jibx.schema.ComponentBase#prevalidate(org.jibx.schema.ValidationContext) */ public void prevalidate(ValidationContext vctx) { // TODO check namespace list super.prevalidate(vctx); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/support/0000755000175000017500000000000011023035620022457 5ustar moellermoellerlibjibx-java-1.1.6a/build/src/org/jibx/schema/support/Conversions.java0000644000175000017500000007010610674161422025651 0ustar moellermoeller/* * Copyright (c) 2006-2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.support; import org.jibx.runtime.EnumSet; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.schema.validation.ValidationContext; /** * Utilities for conversion of schema standard datatypes. * * @author Dennis M. Sosnoski */ public final class Conversions { /** Character types allowed as initial characters of a name. */ public static final int NAMEINIT_CHARACTER_TYPES = Character.LOWERCASE_LETTER | Character.UPPERCASE_LETTER | Character.OTHER_LETTER | Character.TITLECASE_LETTER | Character.LETTER_NUMBER; /** Character types allowed as non-initial characters of a name. */ public static final int NAMEFOLLOW_CHARACTER_TYPES = NAMEINIT_CHARACTER_TYPES | Character.NON_SPACING_MARK | Character.DECIMAL_DIGIT_NUMBER | Character.COMBINING_SPACING_MARK | Character.ENCLOSING_MARK | Character.MODIFIER_LETTER; /** Non-constructor for class with no instances. */ private Conversions() {} /** * Convert normalized string value with validation. This handles the actual conversion of a normalized string value. * The first character to be dropped must have been found prior to this call. * * @param text value to be converted * @param index first character offset to be dropped from result * @param tname type name * @param vctx validation context * @param obj object being validated * @return normalized string value (null if nonrecoverable error) */ private static String convertNormalizedString(String text, int index, String tname, ValidationContext vctx, Object obj) { // allocate and initialize copy to first drop int length = text.length(); StringBuffer buff = new StringBuffer(length - 1); buff.append(text.substring(0, index)); // copy remainder of text, one character at a time while (++index < length) { char chr = text.charAt(index); switch (chr) { case 0x09: case 0x0D: // not allowed in normalized string if (vctx.addError("Character 0x" + Integer.toHexString(text.charAt(index)) + " not allowed in " + tname, obj)) { break; } else { return null; } case 0x0A: // drop character from sequence break; default: // copy character to result buffer buff.append(chr); break; } } return buff.toString(); } /** * Validate normalized string value. This checks the text and, if necessary, converts it to valid form. * * @param text value to be converted * @param tname type name * @param vctx validation context * @param obj object being validated * @return normalized string value (null if nonrecoverable error) */ public static String checkNormalizedString(String text, String tname, ValidationContext vctx, Object obj) { // scan through characters to check if conversion needed int index; int length = text.length(); loop: for (index = 0; index < length; index++) { switch (text.charAt(index)) { case 0x09: case 0x0D: // not allowed in normalized string if (vctx.addError("Character 0x" + Integer.toHexString(text.charAt(index)) + " not allowed in " + tname, obj)) { break loop; } else { return null; } case 0x0A: // break into compaction loop break loop; } } // convert if character needs to be dropped if (index < length) { return convertNormalizedString(text, index, tname, vctx, obj); } else { return text; } } /** * Deserialize normalized string value. This validates the text and, if necessary, converts it to standard form. * * @param text value to be converted (may be null) * @param vctx validation context * @param obj object being validated * @return normalized string value (null if input null, or nonrecoverable error) */ public static String deserializeNormalizedString(String text, ValidationContext vctx, Object obj) { if (text == null) { return null; } else { return checkNormalizedString(text, "normalizedString", vctx, obj); } } /** * Convert token-type value with validation. This handles the actual conversion of a value with no leading or * trailing spaces, no non-space whitespaces, . The first character to be dropped must have been found prior to this * call. * * @param text value to be converted * @param index first character offset to be dropped from result * @param tname type name * @param vctx validation context * @param obj object being validated * @return token value (null if nonrecoverable error) */ private static String convertToken(String text, int index, String tname, ValidationContext vctx, Object obj) { // allocate and initialize copy to first drop int length = text.length(); StringBuffer buff = new StringBuffer(length - 1); buff.append(text.substring(0, index)); // copy remainder of text, one character at a time boolean space = text.charAt(index) == ' '; while (++index < length) { char chr = text.charAt(index); switch (chr) { case 0x09: case 0x0D: // not allowed in token { if (vctx.addError("Character 0x" + Integer.toHexString(text.charAt(index)) + " not allowed in " + tname, obj)) { break; } else { return null; } } case 0x20: // check for valid space if (space) { if (vctx.addError("Multiple space not allowed in " + tname, obj)) { break; } else { return null; } } else { buff.append(chr); space = true; } break; default: // copy character to result buffer buff.append(chr); space = false; break; } } return buff.toString(); } /** * Validate token value. This validates the text and, if necessary, converts it to standard form. * * @param text value to be converted (may be null) * @param tname type name * @param vctx validation context * @param obj object being validated * @return token value (null if nonrecoverable error) */ public static String checkToken(String text, String tname, ValidationContext vctx, Object obj) { // scan through characters to check if conversion needed int index; int length = text.length(); boolean space = false; loop: for (index = 0; index < length; index++) { switch (text.charAt(index)) { case 0x09: case 0x0D: // not allowed in token { if (vctx.addError("Character 0x" + Integer.toHexString(text.charAt(index)) + " not allowed in " + tname, obj)) { break loop; } else { return null; } } case 0x0A: // break into compaction loop break loop; case 0x20: // check for valid space if (index == 0) { if (vctx.addError("Leading space not allowed in " + tname, obj)) { break loop; } else { return null; } } else if (space) { if (vctx.addError("Multiple space not allowed in " + tname, obj)) { break loop; } else { return null; } } else { space = true; } break; default: space = false; break; } } // convert if character needs to be dropped if (index < length) { return convertToken(text, index, tname, vctx, obj); } else { return text; } } /** * Deserialize token value. This validates the text and, if necessary, converts it to standard form. * * @param text value to be converted (may be null) * @param vctx validation context * @param obj object being validated * @return token value (null if input null, or nonrecoverable error) */ public static String deserializeToken(String text, ValidationContext vctx, Object obj) { if (text == null) { return null; } else { return checkToken(text, "token", vctx, obj); } } /** * Convert collapsed string value. The first character to be collapsed must must have been found prior to this call. * * @param text value to be converted * @param index first character offset to be dropped from result * @return normalized string value */ private static String convertCollapsed(String text, int index) { // allocate and initialize copy to first drop int length = text.length(); StringBuffer buff = new StringBuffer(length - 1); buff.append(text.substring(0, index)); // copy remainder of text, one character at a time boolean space = index >= 0 && text.charAt(index) == ' '; while (++index < length) { char chr = text.charAt(index); switch (chr) { case 0x09: case 0x0A: case 0x0D: case ' ': // ignore if preceded by space, otherwise convert to space if (!space) { buff.append(' '); space = true; } break; default: // copy character to result buffer buff.append(chr); break; } } return buff.toString(); } /** * Convert Name value with validation. This handles the actual conversion of a Name value by dropping illegal * characters. It should only be called when error recovery is enabled. The first character to be dropped must have * been found prior to this call. * * @param text value to be converted * @param index first character offset to be dropped from result * @param tname type name * @param vctx validation context * @param obj object being validated * @return Name value (null if nonrecoverable error) */ public static String convertName(String text, int index, String tname, ValidationContext vctx, Object obj) { // allocate and initialize copy to first drop int length = text.length(); StringBuffer buff = new StringBuffer(length - 1); buff.append(text.substring(0, index)); // copy remainder of text, one character at a time while (++index < length) { // make sure character is valid for name char chr = text.charAt(index); int type = Character.getType(chr); if ((type & NAMEINIT_CHARACTER_TYPES) == 0) { if (chr != '_' && chr != ':') { boolean valid = false; if (index > 0) { valid = (type & NAMEFOLLOW_CHARACTER_TYPES) != 0 || chr == '.' || chr == '-'; if (!valid) { vctx.addError("Character '" + chr + "' not allowed as first character of " + tname, obj); } } else { vctx.addError("Character '" + chr + "' not allowed in " + tname, obj); } if (valid) { buff.append(chr); } } } } return buff.toString(); } /** * Validate Name value. This validates the text and, if necessary, converts it to valid form by dropping illegal * characters (only if error recovery is enabled). * * @param text value to be converted (may be null) * @param tname type name * @param vctx validation context * @param obj object being validated * @return Name value (null if nonrecoverable error) */ public static String checkName(String text, String tname, ValidationContext vctx, Object obj) { // scan through characters to check if conversion needed int index = 0; int length = text.length(); while (++index < length) { // make sure character is valid for name char chr = text.charAt(index); int type = Character.getType(chr); if ((type & NAMEINIT_CHARACTER_TYPES) == 0) { if (chr != '_' && chr != ':') { if (index > 0) { if ((type & NAMEFOLLOW_CHARACTER_TYPES) == 0 && chr != '.' && chr != '-') { // report invalid nostart character for name if (vctx.addError("Character '" + chr + "' not allowed in " + tname, obj)) { return convertName(text, index, tname, vctx, obj); } else { return null; } } } else { // report invalid start character for name if (vctx.addError("Character '" + chr + "' not allowed as first character of " + tname, obj)) { return convertName(text, index, tname, vctx, obj); } else { return null; } } } } } return text; } /** * Deserialize Name value. This validates the text and, if necessary, converts it to valid form by dropping illegal * characters (only if error recovery is enabled). * * @param text value to be converted (may be null) * @param vctx validation context * @param obj object being validated * @return Name value (null if input null, or nonrecoverable error) */ public static String deserializeName(String text, ValidationContext vctx, Object obj) { if (text == null) { return null; } else { return checkName(text, "Name", vctx, obj); } } /** * Convert NCName value with validation. This handles the actual conversion of an NCName value by dropping illegal * characters. It should only be called when error recovery is enabled. The first character to be dropped must have * been found prior to this call. * * @param text value to be converted * @param index first character offset to be dropped from result * @param tname type name * @param vctx validation context * @param obj object being validated * @return NCName value */ private static String convertNCName(String text, int index, String tname, ValidationContext vctx, Object obj) { // allocate and initialize copy to first drop int length = text.length(); StringBuffer buff = new StringBuffer(length - 1); buff.append(text.substring(0, index)); // copy remainder of text, one character at a time while (++index < length) { // make sure character is valid for name char chr = text.charAt(index); int type = Character.getType(chr); if ((type & NAMEINIT_CHARACTER_TYPES) == 0) { if (chr != '_') { boolean valid = false; if (index > 0) { valid = (type & NAMEFOLLOW_CHARACTER_TYPES) != 0 || chr == '.' || chr == '-'; if (!valid) { vctx.addError("Character '" + chr + "' not allowed as first character of " + tname, obj); } } else { vctx.addError("Character '" + chr + "' not allowed in " + tname, obj); } if (valid) { buff.append(chr); } } } } return buff.toString(); } /** * Check NCName value. This validates the text and, if necessary, converts it to valid form by dropping illegal * characters (only if error recovery is enabled). * * @param text value to be converted (may be null) * @param tname type name * @param vctx validation context * @param obj object being validated * @return NCName value (null if nonrecoverable error) */ public static String checkNCName(String text, String tname, ValidationContext vctx, Object obj) { // scan through characters to check if conversion needed int index = 0; int length = text.length(); while (++index < length) { // make sure character is valid for name char chr = text.charAt(index); int type = Character.getType(chr); if ((type & NAMEINIT_CHARACTER_TYPES) == 0) { if (chr != '_') { if (index > 0) { if ((type & NAMEFOLLOW_CHARACTER_TYPES) == 0 && chr != '.' && chr != '-') { // report invalid nostart character for name if (vctx.addError("Character '" + chr + "' not allowed in " + tname, obj)) { return convertNCName(text, index, tname, vctx, obj); } else { return null; } } } else { // report invalid start character for name if (vctx.addError("Character '" + chr + "' not allowed as first character of " + tname, obj)) { return convertNCName(text, index, tname, vctx, obj); } else { return null; } } } } } return text; } /** * Deserialize NCName value. This validates the text and, if necessary, converts it to valid form by dropping * illegal characters (only if error recovery is enabled). * * @param text value to be converted (may be null) * @param vctx validation context * @param obj object being validated * @return NCName value (null if input null, or nonrecoverable error) */ public static String deserializeNCName(String text, ValidationContext vctx, Object obj) { if (text == null) { return null; } else { return checkNCName(text, "NCName", vctx, obj); } } /** * Convert NMTOKEN value with validation. This handles the actual conversion of an NMTOKEN value by dropping illegal * characters. It should only be called when error recovery is enabled. The first character to be dropped must have * been found prior to this call. * * @param text value to be converted * @param index first character offset to be dropped from result * @param tname type name * @param vctx validation context * @param obj object being validated * @return NMTOKEN value */ private static String convertNMTOKEN(String text, int index, String tname, ValidationContext vctx, Object obj) { // allocate and initialize copy to first drop int length = text.length(); StringBuffer buff = new StringBuffer(length - 1); buff.append(text.substring(0, index)); // copy remainder of text, one character at a time while (++index < length) { // make sure character is valid for name char chr = text.charAt(index); if ((Character.getType(chr) & NAMEFOLLOW_CHARACTER_TYPES) == 0) { vctx.addError("Character '" + chr + "' not allowed in " + tname, obj); } else { buff.append(chr); } } return buff.toString(); } /** * Check NMTOKEN value. This validates the text and, if necessary, converts it to valid form by dropping illegal * characters (only if error recovery is enabled). * * @param text value to be converted (may be null) * @param tname type name * @param vctx validation context * @param obj object being validated * @return NMTOKEN value (null if nonrecoverable error) */ public static String checkNMTOKEN(String text, String tname, ValidationContext vctx, Object obj) { // scan through characters to check if conversion needed int index = 0; int length = text.length(); while (++index < length) { // make sure character is valid for name char chr = text.charAt(index); int type = Character.getType(chr); if ((type & NAMEFOLLOW_CHARACTER_TYPES) == 0) { if (vctx.addError("Character '" + chr + "' not allowed in " + tname, obj)) { return convertNMTOKEN(text, index, tname, vctx, obj); } else { return null; } } } return text; } /** * Deserialize NMTOKEN value. This validates the text and, if necessary, converts it to valid form by dropping * illegal characters (only if error recovery is enabled). * * @param text value to be converted (may be null) * @param vctx validation context * @param obj object being validated * @return NMTOKEN value (null if input null, or nonrecoverable error) */ public static String deserializeNMTOKEN(String text, ValidationContext vctx, Object obj) { if (text == null) { return null; } else { return checkNMTOKEN(text, "NMTOKEN", vctx, obj); } } /** * Check collapsed whitespace value. This checks the text and, if necessary, converts it to standard form. * * @param text value to be converted (may be null) * @return collapsed value */ public static String checkCollapse(String text) { // scan through characters to check if conversion needed int index; int length = text.length(); boolean space = false; loop: for (index = 0; index < length; index++) { switch (text.charAt(index)) { case 0x09: case 0x0A: case 0x0D: // break into compaction loop break loop; case 0x20: // check for valid space if (index == 0 || space) { break loop; } else { space = true; } break; default: space = false; break; } } // convert if needed if (index < length) { return convertCollapsed(text, index); } else { return text; } } /** * Validate and convert anyURI value. * * @param text value to be converted (may be null) * @param vctx validation context * @return normalized string value (null if input null, or error) */ public static String convertAnyUri(String text, ValidationContext vctx) { return checkCollapse(text); } /** * Validate and convert enumeration attribute value. * * @param text value to be converted (may be null) * @param eset enumeration set * @param name attribute name * @param ictx unmarshalling context * @return converted value */ public static int convertEnumeration(String text, EnumSet eset, String name, IUnmarshallingContext ictx) { if (text == null) { return -1; } else { ValidationContext vctx = (ValidationContext)ictx.getUserContext(); String nctext = Conversions.deserializeNMTOKEN(text, vctx, ictx.getStackTop()); int type = eset.getValue(nctext); if (type < 0) { vctx.addError("Illegal value \"" + text + "\" for 'form' attribute", ictx.getStackTop()); } return type; } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/support/LazyList.java0000644000175000017500000001763610713702650025123 0ustar moellermoeller/* * Copyright (c) 2006-2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.support; import java.util.AbstractList; import java.util.Iterator; /** * List implementation with lazy array construction and modification tracking. The lazy array construction is a minor * optimization, to save the added overhead of a backing array for lists which are frequently empty. The modification * tracking feature supports filtered list construction with result caching. * * @author Dennis M. Sosnoski */ public class LazyList extends AbstractList { /** Singleton iterator for empty collection. */ public static final Iterator EMPTY_ITERATOR = new Iterator() { public boolean hasNext() { return false; } public Object next() { throw new IllegalStateException("Internal error - no next"); } public void remove() { throw new IllegalStateException("Internal error - nothing to remove"); } }; /** Unmodifiable empty list instance. */ public static final LazyList EMPTY_LIST = new LazyList() { public void add(int index, Object element) { throw new UnsupportedOperationException("Internal error: Unmodifiable list"); } public Object remove(int index) { throw new UnsupportedOperationException("Internal error: Unmodifiable list"); } protected void removeRange(int from, int to) { throw new UnsupportedOperationException("Internal error: Unmodifiable list"); } }; /** Number of items currently present in list. */ private int m_size; /** Maximum number of items allowed before resizing. */ private int m_limit; /** Backing array (lazy instantiation, null if not used). */ private Object[] m_array; /** * Make sure space is available for adding to the list. This grows the size of the backing array, if necessary. * * @param count */ private void makeSpace(int count) { if (m_limit - m_size < count) { Object[] copy; if (m_array == null) { copy = new Object[count + 4]; } else { copy = new Object[m_size * 2 + count]; System.arraycopy(m_array, 0, copy, 0, m_size); } m_array = copy; m_limit = copy.length; } } /* * (non-Javadoc) * * @see java.util.AbstractList#get(int) */ public Object get(int index) { if (index >= 0 && index < m_size) { return m_array[index]; } else { throw new IndexOutOfBoundsException("Index " + index + " is out of valid range 0-" + (m_size - 1)); } } /* * (non-Javadoc) * * @see java.util.AbstractCollection#size() */ public int size() { return m_size; } /* * (non-Javadoc) * * @see java.util.AbstractList#add(int, java.lang.Object) */ public void add(int index, Object element) { if (index >= 0 && index <= m_size) { makeSpace(1); if (index < m_size) { System.arraycopy(m_array, index, m_array, index + 1, m_size - index); } m_array[index] = element; m_size++; modCount++; } else { throw new IndexOutOfBoundsException("Index " + index + " is out of valid range 0-" + m_size); } } /* * (non-Javadoc) * * @see java.util.AbstractList#iterator() */ public Iterator iterator() { if (m_size == 0) { return EMPTY_ITERATOR; } else { return super.iterator(); } } /* * (non-Javadoc) * * @see java.util.AbstractList#remove(int) */ public Object remove(int index) { if (index >= 0 && index < m_size) { Object item = m_array[index]; int start = index + 1; System.arraycopy(m_array, start, m_array, index, m_size - start); m_array[--m_size] = null; modCount++; return item; } else { throw new IndexOutOfBoundsException("Index " + index + " is out of valid range 0-" + (m_size - 1)); } } /* * (non-Javadoc) * * @see java.util.AbstractList#set(int, java.lang.Object) */ public Object set(int index, Object element) { if (index >= 0 && index < m_size) { Object item = m_array[index]; m_array[index] = element; return item; } else { throw new IndexOutOfBoundsException("Index " + index + " is out of valid range 0-" + (m_size - 1)); } } /* * (non-Javadoc) * * @see java.util.AbstractList#removeRange(int, int) */ protected void removeRange(int from, int to) { if (from >= 0 && to <= m_size) { int length = m_size - to; if (length > 0) { System.arraycopy(m_array, to, m_array, from, length); } for (int i = m_size; i > to;) { m_array[--i] = null; } m_size -= length; modCount++; } else { throw new IndexOutOfBoundsException("Range of " + from + "-" + to + " exceeds valid range 0-" + m_size); } } /** * Get modify counter. This supports tracking changes to determine when cached filters need to be updated. * * @return count */ public int getModCount() { return modCount; } /** * Remove range of values. This is just a public version of the protected base class method * {@link #removeRange(int, int)} * * @param from * @param to */ public void remove(int from, int to) { removeRange(from, to); } /** * Compact the list, removing any null values. */ public void compact() { int offset = 0; while (offset < m_size) { if (m_array[offset] == null) { break; } else { offset++; } } if (offset < m_size) { int fill = offset; while (++offset < m_size) { if (m_array[offset] != null) { m_array[fill++] = m_array[offset]; } } m_size = fill; modCount++; } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/support/SchemaTypes.java0000644000175000017500000002076510674161422025574 0ustar moellermoeller/* * Copyright (c) 2006-2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.support; import java.util.HashMap; import org.jibx.runtime.QName; import org.jibx.schema.INamed; import org.jibx.schema.elements.CommonTypeDefinition; import org.jibx.schema.elements.SchemaBase; /** * Representations for predefined schema types. These are structured as elements to be consistent with user definitions, * but are only generated as static instances. Note that the schema type list here should always match that in * {@link org.jibx.schema.codegen.JavaType}. * * @author Dennis M. Sosnoski */ public abstract class SchemaTypes { /** Predefined schema simple types. */ private static final HashMap s_schemaTypesMap = new HashMap(); public static final SchemaSimpleType ANY_SIMPLE_TYPE = addType("anySimpleType", false); public static final SchemaSimpleType ANY_URI = addType("anyURI", false); public static final SchemaSimpleType BASE64_BINARY = addType("base64Binary", false); public static final SchemaSimpleType BOOLEAN_TYPE = addType("boolean", false); public static final SchemaSimpleType BYTE = addType("byte", false); public static final SchemaSimpleType DATE = addType("date", false); public static final SchemaSimpleType DATETIME = addType("dateTime", false); public static final SchemaSimpleType DECIMAL = addType("decimal", false); public static final SchemaSimpleType DOUBLE = addType("double", false); public static final SchemaSimpleType DURATION = addType("duration", false); public static final SchemaSimpleType ENTITY = addType("ENTITY", true); public static final SchemaSimpleType ENTITIES = addType("ENTITIES", false); public static final SchemaSimpleType FLOAT = addType("float", false); public static final SchemaSimpleType GDAY = addType("gDay", false); public static final SchemaSimpleType GMONTH = addType("gMonth", false); public static final SchemaSimpleType GMONTHDAY = addType("gMonthDay", false); public static final SchemaSimpleType GYEAR = addType("gYear", false); public static final SchemaSimpleType GYEARMONTH = addType("gYearMonth", false); public static final SchemaSimpleType HEX_BINARY = addType("hexBinary", false); public static final SchemaSimpleType ID = addType("ID", true); public static final SchemaSimpleType IDREF = addType("IDREF", true); public static final SchemaSimpleType IDREFS = addType("IDREFS", false); public static final SchemaSimpleType INT = addType("int", false); public static final SchemaSimpleType INTEGER = addType("integer", false); public static final SchemaSimpleType LANGUAGE = addType("language", true); public static final SchemaSimpleType LONG = addType("long", false); public static final SchemaSimpleType NAME = addType("Name", true); public static final SchemaSimpleType NEGATIVE_INTEGER = addType("negativeInteger", false); public static final SchemaSimpleType NON_NEGATIVE_INTEGER = addType("nonNegativeInteger", false); public static final SchemaSimpleType NON_POSITIVE_INTEGER = addType("nonPositiveInteger", false); public static final SchemaSimpleType NORMALIZED_STRING = addType("normalizedString", true); public static final SchemaSimpleType NCNAME = addType("NCName", true); public static final SchemaSimpleType NMTOKEN = addType("NMTOKEN", true); public static final SchemaSimpleType NMTOKENS = addType("NMTOKENS", false); public static final SchemaSimpleType NOTATION = addType("NOTATION", false); public static final SchemaSimpleType POSITIVE_INTEGER = addType("positiveInteger", false); public static final SchemaSimpleType QNAME = addType("QName", false); public static final SchemaSimpleType SHORT = addType("short", false); public static final SchemaSimpleType STRING = addType("string", true); public static final SchemaSimpleType TIME = addType("time", false); public static final SchemaSimpleType TOKEN = addType("token", true); public static final SchemaSimpleType UNSIGNED_BYTE = addType("unsignedByte", false); public static final SchemaSimpleType UNSIGNED_INT = addType("unsignedInt", false); public static final SchemaSimpleType UNSIGNED_LONG = addType("unsignedLong", false); public static final SchemaSimpleType UNSIGNED_SHORT = addType("unsignedShort", false); /** * Helper method for creating instances and adding them to map. * * @param name type local name * @param isstring type derived from string flag */ private static SchemaSimpleType addType(String name, boolean isstring) { SchemaSimpleType type = new SchemaSimpleType(name, isstring); s_schemaTypesMap.put(name, type); return type; } /** * Get predefined schema type. * * @param name local name * @return schema type with name, or null if none */ public static CommonTypeDefinition getSchemaType(String name) { return (CommonTypeDefinition)s_schemaTypesMap.get(name); } /** * Simple schema type representation. */ public static class SchemaSimpleType extends CommonTypeDefinition implements INamed { /** Qualified name. */ private final QName m_qname; /** String-derived type flag. */ private final boolean m_string; /** * Constructor. * * @param name schema type local name * @param isstring type derived from string flag */ protected SchemaSimpleType(String name, boolean isstring) { super(SchemaBase.SIMPLETYPE_TYPE); m_qname = new QName(SCHEMA_NAMESPACE, name); m_string = isstring; } // // Base class overrides /* * (non-Javadoc) * * @see org.jibx.schema.CommonTypeDefinition#isComplexType() */ public boolean isComplexType() { return false; } /* * (non-Javadoc) * * @see org.jibx.schema.elements.CommonTypeDefinition#isPredefinedType() */ public boolean isPredefinedType() { return true; } // // Access methods /** * Get 'name' attribute value. * * @return name */ public String getName() { return m_qname.getName(); } /** * Get qualified name for element. This method is only usable after validation. * * @return qname */ public QName getQName() { return m_qname; } /** * Check for schema type derived from string. * * @return true if derived from string, false if not */ public boolean isString() { return m_string; } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/types/0000755000175000017500000000000011023035620022107 5ustar moellermoellerlibjibx-java-1.1.6a/build/src/org/jibx/schema/types/AllEnumSet.java0000644000175000017500000001722310602646266025010 0ustar moellermoeller/* Copyright (c) 2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.types; import org.jibx.runtime.EnumSet; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.schema.validation.ValidationContext; /** * Bit set based on a string enumeration list with the added option of '#all'. * * @author Dennis M. Sosnoski */ public class AllEnumSet { /** Base enumeration. */ private final EnumSet m_enum; /** Attribute name. */ private final String m_name; /** Bit set for values from enumeration. */ private final ShortBitSet m_bits; /** Flag for present (if false, other values ignored). */ private boolean m_present; /** Flag for '#all' value. */ private boolean m_all; /** * Constructor. * * @param eset enumeration value set * @param name attribute name */ public AllEnumSet(EnumSet eset, String name) { m_enum = eset; m_name = name; m_bits = new ShortBitSet(); if (eset.maxIndex() > 15) { throw new IllegalArgumentException("Too many values in enumeration"); } } // // Needed for JiBX, but should never be called. private AllEnumSet() { throw new IllegalStateException("no-arg constructor should never be called"); } // // Access methods /** * Check if present. * * @return present */ public boolean isPresent() { return m_present; } /** * Set present. * * @param present */ public void setPresent(boolean present) { m_present = present; } /** * Check '#all' value. * * @return all */ public boolean isAll() { return m_all; } /** * Set '#all' value. * * @param all */ public void setAll(boolean all) { m_all = all; } /** * Add value to set. * * @param value * @see org.jibx.schema.types.ShortBitSet#add(int) */ public void add(int value) { m_present = true; if (!m_all) { m_bits.add(value); } } /** * Check if value in set. * * @param value * @return * @see org.jibx.schema.types.ShortBitSet#isSet(int) */ public boolean isSet(int value) { return m_present && (m_all || m_bits.isSet(value)); } /** * Remove value from set. * * @param value * @see org.jibx.schema.types.ShortBitSet#remove(int) */ public void remove(int value) { if (m_present) { if (m_all) { m_all = false; m_bits.setRange(0, m_enum.maxIndex()); } m_bits.remove(value); } } /** * Serializer method for output as value list. * * @return string value, or null if not present */ public String toString() { if (m_present) { if (m_all) { return "#all"; } else { StringBuffer buff = new StringBuffer(); for (int i = 0; i <= m_enum.maxIndex(); i++) { if (m_bits.isSet(i)) { if (buff.length() > 0) { buff.append(' '); } buff.append(m_enum.getName(i)); } } return buff.toString(); } } else { return null; } } /** * Deserializer method for input as value list. * * @param text string value, or null if not present * @param vctx * @param obj object being validated */ public void fromString(String text, ValidationContext vctx, Object obj) { if (text == null) { m_present = false; } else { // indicate present m_present = true; m_all = false; m_bits.clear(); // scan text to find whitespace breaks between items int length = text.length(); int base = 0; boolean space = true; for (int i = 0; i < length; i++) { char chr = text.charAt(i); switch (chr) { case 0x09: case 0x0A: case 0x0D: case ' ': // ignore if preceded by space if (!space) { // process name from list addName(text.substring(base, i), vctx, obj); space = true; } base = i + 1; break; default: space = false; break; } } // finish last item if (base < length) { addName(text.substring(base), vctx, obj); } } } /** * Deserializer method for unmarshalling input as value list. * * @param string value, or null if not present * @param ictx */ private void fromString(String text, IUnmarshallingContext ictx) { fromString(text, (ValidationContext)ictx.getUserContext(), ictx.getStackTop()); } /** * Process name from text list. This validates the name and adds it to the * bit set. * * @param name * @param vctx * @param obj */ private void addName(String name, ValidationContext vctx, Object obj) { if (m_all) { vctx.addError("'#all' cannot be used with other values in '" + m_name + "' attribute", obj); } else if ("#all".equals(name)) { m_all = true; } else { int index = m_enum.getValue(name); if (index >= 0) { m_bits.add(index); } else { vctx.addError("'" + name + "' is not valid for '" + m_name + "' attribute value", obj); } } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/types/Count.java0000644000175000017500000001253310673570326024067 0ustar moellermoeller/* Copyright (c) 2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.types; import org.jibx.runtime.JiBXException; import org.jibx.runtime.Utility; /** * Repetition count in a schema definition. * * @author Dennis M. Sosnoski */ public class Count { /** Predefined count of '0'. */ public static final Count COUNT_ZERO = new Count(0, false); /** Predefined count of '1'. */ public static final Count COUNT_ONE = new Count(1, false); /** Predefined count of 'unbounded'. */ public static final Count COUNT_UNBOUNDED = new Count(0, true); /** Actual count for bounded value. */ private final int m_count; /** Flag for unbounded value. */ private final boolean m_unbounded; /** * Internal constructor. * * @param count * @param unbounded */ private Count(int count, boolean unbounded) { m_count = count; m_unbounded = unbounded; } /** * Get count value. This method throws an exception if used with an * unbounded value, so always try {@link #isUnbounded()} first. * * @return count */ public int getCount() { if (m_unbounded) { throw new IllegalStateException("Cannot get count for unbounded value"); } else { return m_count; } } /** * Check for unbounded count. * * @return unbounded flag */ public boolean isUnbounded() { return m_unbounded; } /** * Check for count equal to a particular value. This is a convenience method * which avoids the need to separately check unbounded and then compare the * count. * * @param value * @return equal flag */ public boolean isEqual(int value) { return !m_unbounded && m_count == value; } /** * Check for count greater than a particular value. This is a convenience * method which avoids the need to separately check unbounded and then * compare the count. * * @param value * @return greater than flag */ public boolean isGreaterThan(int value) { return m_unbounded || m_count > value; } /** * Deserializer method for bounded values. * * @param value text representation * @return instance of class * @throws JiBXException on conversion error */ public static Count getBoundedCount(String value) throws JiBXException { if (value == null) { return null; } else { value = value.trim(); if ("0".equals(value)) { return COUNT_ZERO; } else if ("1".equals(value)) { return COUNT_ONE; } else { return new Count(Utility.parseInt(value), false); } } } /** * Deserializer method. * * @param value text representation * @return instance of class (null if none) * @throws JiBXException on conversion error */ public static Count getCount(String value) throws JiBXException { if ("unbounded".equals(value)) { return COUNT_UNBOUNDED; } else { return getBoundedCount(value); } } /** * Check if a count attribute is equal to a specified value. If the count is null, the value is * taken as '1'. * * @param value * @param count * @return true if value equal, false if not */ public static boolean isCountEqual(int value, Count count) { if (count == null) { return value == 1; } else { return count.isEqual(value); } } /** * Conversion to text form. * * @return count as text */ public String toString() { if (m_unbounded) { return "unbounded"; } else { return Utility.serializeInt(m_count); } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/types/ShortBitSet.java0000644000175000017500000000553010602646266025207 0ustar moellermoeller/* Copyright (c) 2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.types; /** * Bit set stored as a short value. * * @author Dennis M. Sosnoski */ public class ShortBitSet { /** Array of bit masks. */ private static final char[] s_bitMasks = { 0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080, 0x0100, 0x0200, 0x0400, 0x0800, 0x1000, 0x2000, 0x4000, 0x8000 }; /** Mask for values in set. */ private char m_bits; // // Access methods /** * Check for value in set. * * @param value * @return true if in set, false if not */ public boolean isSet(int value) { return (m_bits & s_bitMasks[value]) != 0; } /** * Include value in set. * * @param value */ public void add(int value) { m_bits |= s_bitMasks[value]; } /** * Exclude value from set. * * @param value */ public void remove(int value) { m_bits &= ~s_bitMasks[value]; } /** * Clear all values. */ public void clear() { m_bits = 0; } /** * Set all values in range. * * @param min minimum value in range * @param max maximum value in range */ public void setRange(int min, int max) { int mask = (s_bitMasks[max] << 1) - s_bitMasks[min]; m_bits |= mask; } }libjibx-java-1.1.6a/build/src/org/jibx/schema/validation/0000755000175000017500000000000011023035620023075 5ustar moellermoellerlibjibx-java-1.1.6a/build/src/org/jibx/schema/validation/PrevalidationVisitor.java0000644000175000017500000000507110767277012030145 0ustar moellermoeller/* * Copyright (c) 2006-2008, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.validation; import org.jibx.schema.SchemaVisitor; import org.jibx.schema.elements.SchemaBase; /** * Visitor for handling prevalidation. This just calls the * {@link org.jibx.schema.elements.SchemaBase#prevalidate(ValidationContext)} * method for each element visited, in preorder (parent before children). */ public class PrevalidationVisitor extends SchemaVisitor { /** Validation context. */ private final ValidationContext m_context; /** * Constructor. * * @param context */ public PrevalidationVisitor(ValidationContext context) { m_context = context; } /* (non-Javadoc) * @see org.jibx.binding.model.ModelVisitor#visit(org.jibx.binding.model.ElementBase) */ public boolean visit(SchemaBase node) { try { node.prevalidate(m_context); } catch (Throwable t) { m_context.addFatal("Error during validation: " + t.getMessage(), node); t.printStackTrace(); return false; } return true; } }libjibx-java-1.1.6a/build/src/org/jibx/schema/validation/ProblemLocation.java0000644000175000017500000000525610673570750027063 0ustar moellermoeller/* Copyright (c) 2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.validation; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.impl.ITrackSourceImpl; import org.jibx.runtime.impl.UnmarshallingContext; /** * Location of validation problem. An instance of this can be used in place of * an unmarshalled element in cases where the validation problem prevents the * creation of the element object. * TODO: move this out of the schema package, generalize * * @author Dennis M. Sosnoski */ public class ProblemLocation implements ITrackSourceImpl { private String m_document; private int m_line; private int m_column; /** * Constructor. This initializes the location information from the context. * * @param ictx */ public ProblemLocation(IUnmarshallingContext ictx) { ((UnmarshallingContext)ictx).trackObject(this); } public void jibx_setSource(String name, int line, int column) { m_document = name; m_line = line; m_column = column; } public int jibx_getColumnNumber() { return m_column; } public String jibx_getDocumentName() { return m_document; } public int jibx_getLineNumber() { return m_line; } }libjibx-java-1.1.6a/build/src/org/jibx/schema/validation/RegistrationVisitor.java0000644000175000017500000001612010767277012030013 0ustar moellermoeller/* * Copyright (c) 2006-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.validation; import org.jibx.runtime.QName; import org.jibx.schema.NameRegister; import org.jibx.schema.SchemaVisitor; import org.jibx.schema.TreeWalker; import org.jibx.schema.elements.AttributeElement; import org.jibx.schema.elements.AttributeGroupElement; import org.jibx.schema.elements.ComplexTypeElement; import org.jibx.schema.elements.SchemaBase; import org.jibx.schema.elements.ElementElement; import org.jibx.schema.elements.GroupElement; import org.jibx.schema.elements.ImportElement; import org.jibx.schema.elements.IncludeElement; import org.jibx.schema.elements.RedefineElement; import org.jibx.schema.elements.SchemaElement; import org.jibx.schema.elements.SchemaLocationBase; import org.jibx.schema.elements.SimpleTypeElement; /** * Visitor for handling registration. This records the names for each child * element of the schema in the validation context. */ public class RegistrationVisitor extends SchemaVisitor { /** Validation context. */ private final ValidationContext m_context; /** * Constructor. * * @param context */ public RegistrationVisitor(ValidationContext context) { m_context = context; } /** * Run registration. * * @param root schema element to be validated * @param tctx tree context */ public void run(SchemaElement root, TreeWalker tctx) { tctx.walkSchema(root, this); } // // Visitor implementation methods /* (non-Javadoc) * @see org.jibx.schema.SchemaVisitor#visit(org.jibx.schema.ElementBase) */ public boolean visit(SchemaBase node) { // make sure nothing gets expanded by default return false; } /* (non-Javadoc) * @see org.jibx.schema.SchemaVisitor#visit(org.jibx.schema.AttributeElement) */ public boolean visit(AttributeElement node) { QName qname = node.getQName(); if (qname != null) { m_context.registerAttribute(qname, node); } return false; } /* (non-Javadoc) * @see org.jibx.schema.SchemaVisitor#visit(org.jibx.schema.AttributeGroupElement) */ public boolean visit(AttributeGroupElement node) { QName qname = node.getQName(); if (qname != null) { m_context.registerAttributeGroup(qname, node); } return false; } /* (non-Javadoc) * @see org.jibx.schema.SchemaVisitor#visit(org.jibx.schema.ComplexTypeElement) */ public boolean visit(ComplexTypeElement node) { QName qname = node.getQName(); if (qname != null) { m_context.registerType(qname, node); } return false; } /* (non-Javadoc) * @see org.jibx.schema.SchemaVisitor#visit(org.jibx.schema.ElementElement) */ public boolean visit(ElementElement node) { QName qname = node.getQName(); if (qname != null) { m_context.registerElement(qname, node); } return false; } /* (non-Javadoc) * @see org.jibx.schema.SchemaVisitor#visit(org.jibx.schema.GroupElement) */ public boolean visit(GroupElement node) { QName qname = node.getQName(); if (qname != null) { m_context.registerGroup(qname, node); } return false; } /* (non-Javadoc) * @see org.jibx.schema.SchemaVisitor#visit(org.jibx.schema.SchemaElement) */ public boolean visit(SchemaElement node) { return true; } /* (non-Javadoc) * @see org.jibx.schema.SchemaVisitor#visit(org.jibx.schema.SchemaLocationBase) */ public boolean visit(SchemaLocationBase node) { return true; } /* (non-Javadoc) * @see org.jibx.schema.SchemaVisitor#visit(org.jibx.schema.SimpleTypeElement) */ public boolean visit(SimpleTypeElement node) { QName qname = node.getQName(); if (qname != null) { m_context.registerType(qname, node); } return false; } /* (non-Javadoc) * @see org.jibx.schema.SchemaVisitor#exit(org.jibx.schema.elements.ImportElement) */ public void exit(ImportElement node) { // just merge external definitions NameRegister register1 = m_context.getCurrentSchema().getRegister(); NameRegister register2 = node.getReferencedSchema().getRegister(); register1.mergeImportedDefinitions(register2); super.exit(node); } /* (non-Javadoc) * @see org.jibx.schema.SchemaVisitor#exit(org.jibx.schema.elements.IncludeElement) */ public void exit(IncludeElement node) { // check for special case of importing nonamespace schema into namespace SchemaElement schema1 = m_context.getCurrentSchema(); SchemaElement schema2 = node.getReferencedSchema(); String tns = schema1.getTargetNamespace(); NameRegister register1 = schema1.getRegister(); NameRegister register2 = schema2.getRegister(); if (schema2.getTargetNamespace() == null && tns != null) { // merge imported schema definitions into importing namespace register1.mergeDefinitionsNamespaced(tns, register2); } else { // just merge definitions without effecting namespace register1.mergeDefinitions(register2); } super.exit(node); } /* (non-Javadoc) * @see org.jibx.schema.SchemaVisitor#exit(org.jibx.schema.RedefineElement) */ public void exit(RedefineElement node) { // TODO add redefined components to this schema super.exit(node); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/validation/ValidationContext.java0000644000175000017500000003015410673571112027415 0ustar moellermoeller/* * Copyright (c) 2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.validation; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.Map; import java.util.Set; import org.jibx.runtime.QName; import org.jibx.schema.ISkipElements; import org.jibx.schema.SchemaContextTracker; import org.jibx.schema.elements.AttributeElement; import org.jibx.schema.elements.AttributeGroupElement; import org.jibx.schema.elements.CommonTypeDefinition; import org.jibx.schema.elements.ElementElement; import org.jibx.schema.elements.GroupElement; import org.jibx.schema.elements.SchemaBase; import org.jibx.schema.elements.SchemaElement; /** * Tracks the schema validation state. This includes order-dependent state * information collected while walking the tree structure of a schema model. * Collects all errors and warnings and maintains a summary of the severity of * the problems found. For ease of use, this also wraps the schema name register * with convenience methods for validation. * TODO: separate out a generalized base class and move the base out of the schema package * * @author Dennis M. Sosnoski */ public class ValidationContext extends SchemaContextTracker implements ISkipElements { /** Map from identifier to schemas. */ private Map m_idSchemaMap; /** Number of unimplementeds reported. */ private int m_unimplementedCount; /** Number of warnings reported. */ private int m_warningCount; /** Number of errors reported. */ private int m_errorCount; /** Number of fatals reported. */ private int m_fatalCount; /** List of problem items reported by validation. */ private ArrayList m_problemList; /** Set of elements to be skipped in walking tree. */ private Set m_skipSet; /** * Constructor. */ public ValidationContext() { m_idSchemaMap = new HashMap(); m_problemList = new ArrayList(); m_skipSet = new HashSet(); } /** * Get schema element by identifier. This uses the unique schema identifier * to locate a loaded schema instance. * * @param id * @return schema, or null if not loaded */ public SchemaElement getSchema(String id) { return (SchemaElement)m_idSchemaMap.get(id); } /** * Get iterator for all schemas defined in this context. * * @return iterator */ public Iterator iterateSchemas() { return m_idSchemaMap.values().iterator(); } /** * Add schema element with identifier. * * @param id * @param schema */ public void setSchema(String id, SchemaElement schema) { m_idSchemaMap.put(id, schema); } /** * Get number of unimplemented feature problems reported. * * @return unimplemented feature problem count */ public int getUnimplementedCount() { return m_unimplementedCount; } /** * Get number of warning problems reported. * * @return warning problem count */ public int getWarningCount() { return m_warningCount; } /** * Get number of error problems reported. * * @return error problem count */ public int getErrorCount() { return m_errorCount; } /** * Get number of fatal problems reported. * * @return fatal problem count */ public int getFatalCount() { return m_fatalCount; } /** * Register global attribute in the current schema definition. If the name * has already been registered this creates an error for the new definition. * * @param qname name * @param def attribute definition */ public void registerAttribute(QName qname, AttributeElement def) { AttributeElement dupl = m_nameRegister.registerAttribute(qname, def); if (dupl != null) { addError("Duplicate name " + qname, def); } } /** * Register global attribute group in the current schema definition. If the * name has already been registered this creates an error for the new * definition. * * @param qname name * @param def attribute definition */ public void registerAttributeGroup(QName qname, AttributeGroupElement def) { AttributeGroupElement dupl = m_nameRegister.registerAttributeGroup(qname, def); if (dupl != null) { addError("Duplicate name " + qname, def); } } /** * Register global element in the current schema definition. If the name has * already been registered this creates an error for the new definition. * * @param qname name * @param def element definition */ public void registerElement(QName qname, ElementElement def) { ElementElement dupl = (ElementElement)m_nameRegister.registerElement(qname, def); if (dupl != null) { addError("Duplicate name " + qname, def); } } /** * Register global group in the current schema definition. If the name has * already been registered this creates an error for the new definition. * * @param qname name * @param def attribute definition */ public void registerGroup(QName qname, GroupElement def) { GroupElement dupl = (GroupElement)m_nameRegister.registerGroup(qname, def); if (dupl != null) { addError("Duplicate name " + qname, def); } } /** * Register global type in the current schema definition. If the name has * already been registered this creates an error for the new definition. * * @param qname name * @param def attribute definition */ public void registerType(QName qname, CommonTypeDefinition def) { CommonTypeDefinition dupl = (CommonTypeDefinition)m_nameRegister.registerType(qname, def); if (dupl != null) { addError("Duplicate name " + qname, def); } } /** * Find global attribute by name. * * @param qname name * @return definition, or null if not registered */ public AttributeElement findAttribute(QName qname) { return m_nameRegister.findAttribute(qname); } /** * Find attribute group by name. * * @param qname name * @return definition, or null if not registered */ public AttributeGroupElement findAttributeGroup(QName qname) { return m_nameRegister.findAttributeGroup(qname); } /** * Find global element by name. * * @param qname name * @return definition, or null if not registered */ public ElementElement findElement(QName qname) { return m_nameRegister.findElement(qname); } /** * Find group by name. * * @param qname name * @return definition, or null if not registered */ public GroupElement findGroup(QName qname) { return m_nameRegister.findGroup(qname); } /** * Find global type by name. * * @param qname name * @return definition, or null if not registered */ public CommonTypeDefinition findType(QName qname) { return m_nameRegister.findType(qname); } /** * Add unimplemented feature item for current element. Adds an unimplemented * feature item to the problem list, reporting a schema feature which is not * supported but does not prevent allows reasonable operation. * * @param msg problem description * @param obj source object for validation error */ public void addUnimplemented(String msg, Object obj) { addProblem(new ValidationProblem(ValidationProblem.UNIMPLEMENTED_LEVEL, msg, obj)); } /** * Add warning item. Adds a warning item to the problem list, which is a * possible problem that still allows reasonable operation. * * @param msg problem description * @param obj source object for validation error */ public void addWarning(String msg, Object obj) { addProblem(new ValidationProblem(ValidationProblem.WARNING_LEVEL, msg, obj)); } /** * Add error item. Adds an error item to the problem list, which is a * definite problem that still allows validation to proceed. * * @param msg problem description * @param obj source object for validation error * @return true if to continue validation, false * if not */ public boolean addError(String msg, Object obj) { addProblem(new ValidationProblem(ValidationProblem.ERROR_LEVEL, msg, obj)); return true; } /** * Add fatal item. Adds a fatal item to the problem list, which is a severe * problem that blocks further validation within the tree branch involved. * The object associated with a fatal error should always be an element. * * @param msg problem description * @param obj source object for validation error (should be an element) */ public void addFatal(String msg, Object obj) { addProblem(new ValidationProblem(ValidationProblem.FATAL_LEVEL, msg, obj)); } /** * Add problem report. The problem is added and counted as appropriate. * * @param problem details of problem report */ public void addProblem(ValidationProblem problem) { m_problemList.add(problem); switch (problem.getSeverity()) { case ValidationProblem.ERROR_LEVEL: m_errorCount++; break; case ValidationProblem.FATAL_LEVEL: m_fatalCount++; addSkip(problem.getComponent()); break; case ValidationProblem.UNIMPLEMENTED_LEVEL: m_unimplementedCount++; break; case ValidationProblem.WARNING_LEVEL: m_warningCount++; break; } } /** * Get list of problems. * * @return problem list */ public ArrayList getProblems() { return m_problemList; } /** * Add element to set to be skipped. * * @param skip */ protected void addSkip(Object skip) { if (skip instanceof SchemaBase) { m_skipSet.add(skip); } } // // ISkipElements implementation /* (non-Javadoc) * @see org.jibx.schema.ISkipElements#isSkipped(java.lang.Object) */ public boolean isSkipped(Object obj) { return m_skipSet.contains(obj); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/validation/ValidationProblem.java0000644000175000017500000001113510673571030027366 0ustar moellermoeller/* Copyright (c) 2006-2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.validation; import org.jibx.runtime.ITrackSource; import org.jibx.runtime.ValidationException; import org.jibx.schema.elements.SchemaBase; /** * Problem reported by schema validation. Provides the details for a specific * problem item. * TODO: move this out of the schema package, generalize * * @author Dennis M. Sosnoski */ public class ValidationProblem { // severity levels public static final int UNIMPLEMENTED_LEVEL = 0; public static final int WARNING_LEVEL = 1; public static final int ERROR_LEVEL = 2; public static final int FATAL_LEVEL = 3; /** Problem severity level. */ private final int m_severity; /** Description of problem found. */ private final String m_description; /** Component that reported problem. */ private final Object m_component; /** * Full constructor. * * @param level severity level of problem * @param msg problem description * @param obj source object for validation error (may be null * if not specific to a particular component) */ /*package*/ ValidationProblem(int level, String msg, Object obj) { m_severity = level; if (obj == null) { m_description = msg; } else { m_description = msg + " for " + componentDescription(obj); } m_component = obj; } /** * Create description text for a component of a binding definition. * * @param obj binding definition component * @return component description */ public static String componentDescription(Object obj) { StringBuffer buff = new StringBuffer(); if (obj instanceof SchemaBase) { buff.append(((SchemaBase)obj).name()); buff.append(" element"); } else if (! (obj instanceof ProblemLocation)) { String cname = obj.getClass().getName(); int split = cname.lastIndexOf('.'); if (split >= 0) { cname = cname.substring(split+1); } buff.append(cname); } if (obj instanceof ITrackSource) { buff.append(" at "); buff.append(ValidationException.describe(obj)); } else { buff.append(" at unknown location"); } return buff.toString(); } /** * Constructor using default (error) severity level. * * @param msg problem description * @param obj source object for validation error */ /*package*/ ValidationProblem(String msg, Object obj) { this(ERROR_LEVEL, msg, obj); } /** * Get the main binding definition item for the problem. * * @return element or attribute at root of problem */ public Object getComponent() { return m_component; } /** * Get problem description. * * @return problem description */ public String getDescription() { return m_description; } /** * Get problem severity level. * * @return severity level for problem */ public int getSeverity() { return m_severity; } }libjibx-java-1.1.6a/build/src/org/jibx/schema/validation/ValidationVisitor.java0000644000175000017500000000500510767277012027433 0ustar moellermoeller/* * Copyright (c) 2006-2008, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema.validation; import org.jibx.schema.SchemaVisitor; import org.jibx.schema.elements.SchemaBase; /** * Visitor for handling validation. This just calls the * {@link org.jibx.schema.elements.SchemaBase#validate(ValidationContext)} * method for each element visited, in postorder (children before parent). */ public class ValidationVisitor extends SchemaVisitor { /** Validation context. */ private final ValidationContext m_context; /** * Constructor. * * @param context */ public ValidationVisitor(ValidationContext context) { m_context = context; } /* * (non-Javadoc) * * @see org.jibx.binding.model.ModelVisitor#exit(org.jibx.binding.model.ElementBase) */ public void exit(SchemaBase node) { try { node.validate(m_context); } catch (Throwable t) { m_context.addFatal("Error during validation: " + t.getMessage(), node); t.printStackTrace(); } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/IArity.java0000644000175000017500000000415710651201406023021 0ustar moellermoeller/* * Copyright (c) 2006-2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema; import org.jibx.schema.types.Count; /** * Interface for schema components representing complex or simple values, which may be optional or repeating. */ public interface IArity { /** * Get maximum number of times this item can occur. * * @return count * @see org.jibx.schema.attributes.OccursAttributeGroup#getMaxOccurs() */ public Count getMaxOccurs(); /** * Get minimum number of times this item can occur. * * @return count * @see org.jibx.schema.attributes.OccursAttributeGroup#getMinOccurs() */ public Count getMinOccurs(); }libjibx-java-1.1.6a/build/src/org/jibx/schema/IComponent.java0000644000175000017500000000577410651201406023701 0ustar moellermoeller/* * Copyright (c) 2006, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema; import org.jibx.schema.validation.ValidationContext; /** * Schema component interface. This just provides validation method hooks. The validation contract says that the * {@link #prevalidate(ValidationContext)} method will always be called for every component in the schema definition * before the {@link #validate(ValidationContext)} method is called for any component. These two methods represent the * beginning and end phases of the validation process - other steps (such as registration) may be handled in between * these two phases. * * @author Dennis M. Sosnoski */ public interface IComponent { /** Schema namespace URI. */ public static final String SCHEMA_NAMESPACE = "http://www.w3.org/2001/XMLSchema"; /** * Prevalidate component information. The prevalidation step is used to check isolated aspects of a component, such * as the settings for enumerated values. * * @param vctx validation context */ public void prevalidate(ValidationContext vctx); /** * Validate component information. The validation step is used for checking the interactions between components, * such as name references to other components. The validation contract says that the {@link * #prevalidate(ValidationContext)} method will always be called for every component in the schema definition before * this method is called for any component. * * @param vctx validation context */ public void validate(ValidationContext vctx); }libjibx-java-1.1.6a/build/src/org/jibx/schema/INamed.java0000644000175000017500000000362510651201406022754 0ustar moellermoeller/* * Copyright (c) 2006, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema; import org.jibx.runtime.QName; /** * Interface for schema components with names. */ public interface INamed { /** * Get "name" attribute value. * * @return name attribute value */ String getName(); /** * Get qualified name of item. This method is only usable after validation. * * @return qualified name */ QName getQName(); }libjibx-java-1.1.6a/build/src/org/jibx/schema/ISchemaListener.java0000644000175000017500000000432010651201410024622 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema; import org.jibx.schema.elements.SchemaElement; /** * Listener for schema changes during traversal. The appropriate method is called when entering or exiting a schema. * * @author Dennis M. Sosnoski */ public interface ISchemaListener { /** * Enter schema. This is called before beginning the traversal of a schema, including both standalone schemas and * referenced schemas. * * @param schema * @return true if schema should be entered, false if not */ public boolean enterSchema(SchemaElement schema); /** * Exit schema. This is called when the tranversal of a schema is completed. */ public void exitSchema(); }libjibx-java-1.1.6a/build/src/org/jibx/schema/ISchemaResolver.java0000644000175000017500000000463610673566636024704 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema; import java.io.IOException; import java.io.InputStream; /** * Interface for resolving URL references which may be relative to a base location. */ public interface ISchemaResolver { /** * Resolve a URL reference, which may be relative to this schema location. * * @param loc target URL * @return resolver for target * @throws IOException on resolve error */ public ISchemaResolver resolve(String loc) throws IOException; /** * Get the schema name. * * @return name */ public String getName(); /** * Get unique identifier for this schema. * * @return identifier */ public String getId(); /** * Get the content associated with this schema document. * * @return input stream * @throws IOException on access error */ public InputStream getContent() throws IOException; }libjibx-java-1.1.6a/build/src/org/jibx/schema/ISkipElements.java0000644000175000017500000000360210651201410024321 0ustar moellermoeller/* * Copyright (c) 2006, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema; /** * Interface for checking elements to be skipped in walking the definition tree. * * @author Dennis M. Sosnoski */ public interface ISkipElements { /** * Check if a component is being skipped due to a fatal error. * * @param obj component to be checked * @return flag for component being skipped */ boolean isSkipped(Object obj); }libjibx-java-1.1.6a/build/src/org/jibx/schema/NameRegister.java0000644000175000017500000002712510651201410024200 0ustar moellermoeller/* * Copyright (c) 2006-2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema; import java.util.HashMap; import java.util.Iterator; import org.jibx.runtime.QName; import org.jibx.schema.elements.AttributeElement; import org.jibx.schema.elements.AttributeGroupElement; import org.jibx.schema.elements.CommonTypeDefinition; import org.jibx.schema.elements.ElementElement; import org.jibx.schema.elements.GroupElement; import org.jibx.schema.support.SchemaTypes; /** * Holder for registration of all global components of a schema by name. * * @author Dennis M. Sosnoski */ public class NameRegister { /** Direct attribute definitions. */ private HashMap m_globalAttributeMap; /** * External attribute definitions (lazy create, null if unused). */ private HashMap m_importedAttributeMap; /** Direct attribute group definitions. */ private HashMap m_globalAttributeGroupMap; /** * External attribute group definitions (lazy create, null if unused). */ private HashMap m_importedAttributeGroupMap; /** Direct element definitions. */ private HashMap m_globalElementMap; /** * External element definitions (lazy create, null if unused). */ private HashMap m_importedElementMap; /** Direct group definitions. */ private HashMap m_globalGroupMap; /** * External group definitions (lazy create, null if unused). */ private HashMap m_importedGroupMap; /** Direct type definitions. */ private HashMap m_globalTypeMap; /** External type definitions (lazy create, null if unused). */ private HashMap m_importedTypeMap; /** * Constructor. */ public NameRegister() { m_globalAttributeMap = new HashMap(); m_globalAttributeGroupMap = new HashMap(); m_globalElementMap = new HashMap(); m_globalGroupMap = new HashMap(); m_globalTypeMap = new HashMap(); } // // ValidationContext implementation methods /** * Register global attribute in the current schema definition. * * @param qname name * @param def attribute definition * @return prior registered definition (null if none) */ public AttributeElement registerAttribute(QName qname, AttributeElement def) { return (AttributeElement)m_globalAttributeMap.put(qname, def); } /** * Register global attribute group in the current schema definition. * * @param qname name * @param def attribute definition * @return prior registered definition (null if none) */ public AttributeGroupElement registerAttributeGroup(QName qname, AttributeGroupElement def) { return (AttributeGroupElement)m_globalAttributeGroupMap.put(qname, def); } /** * Register global element in the current schema definition. * * @param qname name * @param def element definition * @return prior registered definition (null if none) */ public ElementElement registerElement(QName qname, ElementElement def) { return (ElementElement)m_globalElementMap.put(qname, def); } /** * Register global group in the current schema definition. * * @param qname name * @param def attribute definition * @return prior registered definition (null if none) */ public GroupElement registerGroup(QName qname, GroupElement def) { return (GroupElement)m_globalGroupMap.put(qname, def); } /** * Register global type in the current schema definition. * * @param qname name * @param def attribute definition * @return prior registered definition (null if none) */ public CommonTypeDefinition registerType(QName qname, CommonTypeDefinition def) { return (CommonTypeDefinition)m_globalTypeMap.put(qname, def); } /** * Find value in main or backup map. If the (non-null) value is present in the main map it is * returned directly; otherwise, if the backup map is non-null it is checked. * * @param key * @param map1 main map * @param map2 backup map (null if none) * @return value (null if value for key not in either map) */ private Object findInMaps(Object key, HashMap map1, HashMap map2) { Object obj = map1.get(key); if (obj == null && map2 != null) { obj = map2.get(key); } return obj; } /** * Find global attribute by name. * * @param qname name * @return definition, or null if not registered */ public AttributeElement findAttribute(QName qname) { return (AttributeElement)findInMaps(qname, m_globalAttributeMap, m_importedAttributeMap); } /** * Find attribute group by name. * * @param qname name * @return definition, or null if not registered */ public AttributeGroupElement findAttributeGroup(QName qname) { AttributeGroupElement agrp = (AttributeGroupElement)m_globalAttributeGroupMap.get(qname); if (agrp == null && m_importedAttributeGroupMap != null) { agrp = (AttributeGroupElement)m_importedAttributeGroupMap.get(qname); } return agrp; } /** * Find global element by name. * * @param qname name * @return definition, or null if not registered */ public ElementElement findElement(QName qname) { ElementElement elem = (ElementElement)m_globalElementMap.get(qname); if (elem == null && m_importedElementMap != null) { elem = (ElementElement)m_importedElementMap.get(qname); } return elem; } /** * Find group by name. * * @param qname name * @return definition, or null if not registered */ public GroupElement findGroup(QName qname) { GroupElement grp = (GroupElement)m_globalGroupMap.get(qname); if (grp == null && m_importedGroupMap != null) { grp = (GroupElement)m_importedGroupMap.get(qname); } return grp; } /** * Find global type by name. * * @param qname name * @return definition, or null if not registered */ public CommonTypeDefinition findType(QName qname) { if (IComponent.SCHEMA_NAMESPACE.equals(qname.getUri())) { return SchemaTypes.getSchemaType(qname.getName()); } else { CommonTypeDefinition type = (CommonTypeDefinition)m_globalTypeMap.get(qname); if (type == null && m_importedTypeMap != null) { type = (CommonTypeDefinition)m_importedTypeMap.get(qname); } return type; } } /** * Merge definitions directly into this register. * * @param mrg register supplying definitions to be merged */ public void mergeDefinitions(NameRegister mrg) { m_globalAttributeMap.putAll(mrg.m_globalAttributeMap); m_globalAttributeGroupMap.putAll(mrg.m_globalAttributeGroupMap); m_globalElementMap.putAll(mrg.m_globalElementMap); m_globalGroupMap.putAll(mrg.m_globalGroupMap); m_globalTypeMap.putAll(mrg.m_globalTypeMap); } /** * Merge one QName map into another, changing the namespace URI for keys in the source map. * * @param uri namespace URI to be used for keys from source map * @param source * @param target */ private void mergeMapNamespaced(String uri, HashMap source, HashMap target) { if (!source.isEmpty()) { for (Iterator iter = source.keySet().iterator(); iter.hasNext();) { QName oldname = (QName)iter.next(); QName newname = new QName(uri, oldname.getName()); target.put(newname, source.get(oldname)); } } } /** * Merge external definitions into this register. * * @param uri namespace URI to be used for merged external definitions * @param mrg register supplying external definitions */ public void mergeDefinitionsNamespaced(String uri, NameRegister mrg) { mergeMapNamespaced(uri, mrg.m_globalAttributeMap, m_globalAttributeMap); mergeMapNamespaced(uri, mrg.m_globalAttributeGroupMap, m_globalAttributeGroupMap); mergeMapNamespaced(uri, mrg.m_globalElementMap, m_globalElementMap); mergeMapNamespaced(uri, mrg.m_globalGroupMap, m_globalGroupMap); mergeMapNamespaced(uri, mrg.m_globalTypeMap, m_globalTypeMap); } /** * Merge one map into another, where the source map may be empty and the target map may be null. If * the source map is nonempty but the target is null, this creates a new map for the target and * returns that map; otherwise, the map returned is always the same as the target map passed in. * * @param source * @param target (null if none) * @return target (possibly changed, if the supplied target was null) */ private HashMap mergeLazyMap(HashMap source, HashMap target) { if (!source.isEmpty()) { if (target == null) { return new HashMap(source); } else { target.putAll(source); return target; } } else { return target; } } /** * Merge external definitions into this register. * * @param mrg register supplying external definitions */ public void mergeImportedDefinitions(NameRegister mrg) { m_importedAttributeMap = mergeLazyMap(mrg.m_globalAttributeMap, m_importedAttributeMap); m_importedAttributeGroupMap = mergeLazyMap(mrg.m_globalAttributeGroupMap, m_importedAttributeGroupMap); m_importedElementMap = mergeLazyMap(mrg.m_globalElementMap, m_importedElementMap); m_importedGroupMap = mergeLazyMap(mrg.m_globalGroupMap, m_importedGroupMap); m_importedTypeMap = mergeLazyMap(mrg.m_globalTypeMap, m_importedTypeMap); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/SchemaContextTracker.java0000644000175000017500000001137210651201410025671 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema; import java.util.HashSet; import java.util.Set; import org.jibx.binding.util.ObjectStack; import org.jibx.schema.elements.SchemaElement; /** * Current schema name context tracker. This tracks the current schema and the name register associated with that * schema. */ public class SchemaContextTracker implements ISchemaListener { /** Schema global name register. */ protected NameRegister m_nameRegister; /** Set of schema elements already visited. */ private final Set m_traversedSchemas; /** * Schema element stack. The bottom item in this will always be the root schema element being traversed, while other * items represent referenced schemas. The top item will always be the current schema. */ private final ObjectStack m_schemaStack; /** * Constructor. */ public SchemaContextTracker() { m_traversedSchemas = new HashSet(); m_schemaStack = new ObjectStack(); } /** * Get name register. This requires the name register to have been set, throwing an exception if it has not. * * @return name register (never null) */ public NameRegister getNameRegister() { if (m_nameRegister == null) { throw new IllegalStateException("Internal error: name register has not been set"); } else { return m_nameRegister; } } /** * Set name register. This is provided for cases where components are being processed individually, so that the user * can set the appropriate register for a component directly. * * @param reg */ public void setNameRegister(NameRegister reg) { m_nameRegister = reg; } /** * Get current schema element. This requires the schema to have been set, throwing an exception if it has not. * * @return current schema element (never null) */ public SchemaElement getCurrentSchema() { if (m_schemaStack.size() == 0) { throw new IllegalStateException("Internal error: schema has not been set"); } else { return (SchemaElement)m_schemaStack.peek(); } } /** * Clear the set of schemas that have been traversed. This must be called between passes on a set of schemas, so * that all the schemas will again be processed in the new pass. */ public void clearTraversed() { m_traversedSchemas.clear(); } // // ISchemaListener implementation /* * (non-Javadoc) * * @see org.jibx.schema.ISchemaListener#enterSchema(org.jibx.schema.elements.SchemaElement) */ public boolean enterSchema(SchemaElement schema) { if (m_traversedSchemas.contains(schema)) { return false; } else { m_traversedSchemas.add(schema); m_schemaStack.push(schema); m_nameRegister = schema.getRegister(); return true; } } /* * (non-Javadoc) * * @see org.jibx.schema.ISchemaListener#exitSchema() */ public void exitSchema() { m_schemaStack.pop(); if (m_schemaStack.size() > 0) { m_nameRegister = ((SchemaElement)m_schemaStack.peek()).getRegister(); } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/SchemaHolder.java0000644000175000017500000001250110767273606024171 0ustar moellermoeller/* * Copyright (c) 2007-2008, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import org.jibx.binding.generator.UniqueNameSet; import org.jibx.schema.attributes.FormChoiceAttribute; import org.jibx.schema.elements.ImportElement; import org.jibx.schema.elements.SchemaElement; import org.jibx.util.HolderBase; /** * External data for a schema definition. This tracks references to other schemas, along with the associated namespace * information. The {@link #finish()} method actually generates the includes. * * @author Dennis M. Sosnoski */ public class SchemaHolder extends HolderBase { /** Actual schema definition. */ private final SchemaElement m_schema; /** Set of type names defined in schema. */ private final UniqueNameSet m_typeNameSet; /** * Set of element names defined in schema (also used for group/attributeGroup). */ private final UniqueNameSet m_elementNameSet; /** Set of schemas imported into this schema. */ private Set m_fixedSet; /** * Constructor. * * @param uri (null if no-namespace schema) */ public SchemaHolder(String uri) { super(uri); m_schema = new SchemaElement(); m_typeNameSet = new UniqueNameSet(); m_elementNameSet = new UniqueNameSet(); if (uri != null) { m_schema.setElementFormDefault(FormChoiceAttribute.QUALIFIED_FORM); m_schema.setTargetNamespace(uri); m_schema.addNamespaceDeclaration("tns", uri); } } /** * Get the schema definition. * * @return definition */ public SchemaElement getSchema() { return m_schema; } /** * Add type name to set defined. This assures uniqueness of the name used, if necessary modifying the supplied base * name to a unique alternative. * * @param base name to try adding * @return name to be used for type */ public String addTypeName(String base) { return m_typeNameSet.add(base); } /** * Add element name to set defined. This assures uniqueness of the name used, if necessary modifying the supplied * base name to a unique alternative. The same set of names is also used for groups and attributeGroups, even though * these name sets are separate in schema terms. Doing things this way avoids the possibility of an element name * matching a group name with the two representing different structures. * * @param base name to try adding * @return name to be used for element */ public String addElementName(String base) { return m_elementNameSet.add(base); } /** * Implementation method to handle adding a namespace declaration. This sets up the namespace declaration for output * in the generated XML. * * @param prefix * @param uri */ protected void addNamespaceDecl(String prefix, String uri) { m_schema.addNamespaceDeclaration(prefix, uri); } /** * Implementation method to handle references from this schema to other schemas. This adds import elements to the * constructed schema for all referenced schemas. */ public void finish() { if (m_fixedSet == null) { m_fixedSet = new HashSet(); } for (Iterator iter = getReferences().iterator(); iter.hasNext();) { SchemaHolder holder = (SchemaHolder)iter.next(); if (!m_fixedSet.contains(holder)) { String ns = holder.getNamespace(); ImportElement imp = new ImportElement(); imp.setLocation(holder.getFileName()); imp.setNamespace(ns); m_schema.getSchemaChildren().add(imp); getPrefix(ns); m_fixedSet.add(holder); } } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/SchemaUtils.java0000644000175000017500000002573611017732442024055 0ustar moellermoeller/* * Copyright (c) 2007-2008, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema; import java.io.File; import java.util.Iterator; import org.apache.log4j.Logger; import org.jibx.runtime.ITrackSource; import org.jibx.schema.elements.AnnotatedBase; import org.jibx.schema.elements.AttributeElement; import org.jibx.schema.elements.ElementElement; import org.jibx.schema.elements.FacetElement; import org.jibx.schema.elements.FilteredSegmentList; import org.jibx.schema.elements.OpenAttrBase; import org.jibx.schema.elements.SchemaBase; import org.jibx.schema.elements.SimpleRestrictionElement; import org.jibx.schema.elements.SimpleTypeElement; import org.jibx.schema.types.Count; /** * Utility methods for working with schema structures. * * @author Dennis M. Sosnoski */ public class SchemaUtils { /** Logger for class. */ public static final Logger s_logger = Logger.getLogger(SchemaUtils.class.getName()); /** String used as basis for indentation. */ private static final String s_indentText = " . . . . . . . . . . . . . . . . . . . . "; /** Pregenerated indentation strings. */ private static final String[] s_indents; static { s_indents = new String[s_indentText.length()]; for (int i = 0; i < s_indents.length; i++) { s_indents[i] = s_indentText.substring(0, i); } }; /** * Check if a particle is a repeated value. * * @param part particle to be checked * @return true if repeated, false if not */ public static boolean isRepeated(IArity part) { Count max = part.getMaxOccurs(); return (max != null && (max.isGreaterThan(1))); } /** * Check if a particle is prohibited (no instances allowed). * * @param part particle to be checked * @return true if prohibited, false if not */ public static boolean isProhibited(IArity part) { return Count.isCountEqual(0, part.getMaxOccurs()); } /** * Check if a particle is optional (zero instances allowed). * * @param part particle to be checked * @return true if optional, false if not */ public static boolean isOptional(IArity part) { return Count.isCountEqual(0, part.getMinOccurs()); } /** * Check if an element is optional (zero instances allowed). * * @param elem element to be checked * @return true if optional, false if not */ public static boolean isOptionalElement(ElementElement elem) { return Count.isCountEqual(0, elem.getMinOccurs()) || (elem.isNillable() && !isRepeated(elem)); } /** * Check if an attribute is optional (zero instances allowed). * * @param attr attribute to be checked * @return true if optional, false if not */ public static boolean isOptionalAttribute(AttributeElement attr) { return attr.getUse() == AttributeElement.OPTIONAL_USE; } /** * Check if a particle is a singleton (one, and only one, instance allowed). * * @param part particle to be checked * @return true if singleton, false if not */ public static boolean isSingleton(IArity part) { return Count.isCountEqual(1, part.getMinOccurs()) && Count.isCountEqual(1, part.getMaxOccurs()); } /** * Check if an element is a singleton (one, and only one, instance allowed). * * @param elem element to be checked * @return true if singleton, false if not */ public static boolean isSingletonElement(ElementElement elem) { return !elem.isNillable() && isSingleton((IArity)elem); } /** * Check if a definition component is nillable (an element with nillable='true'). * * @param comp * @return true if nillable, false if not */ public static boolean isNillable(OpenAttrBase comp) { if (comp instanceof ElementElement) { return ((ElementElement)comp).isNillable(); } else { return false; } } /** * Check if a definition component has a name. * * @param comp * @return true if named, false if not */ public static boolean isNamed(OpenAttrBase comp) { if (comp instanceof INamed) { return ((INamed)comp).getName() != null; } else { return false; } } // // Logging support /** * Get indentation string. This returns a string of the requested number of indents to the maximum value supported, * and otherwise just returns the maximum indentation. * * @param depth * @return indentation string */ public static String getIndentation(int depth) { if (depth < s_indents.length) { return s_indents[depth]; } else { return s_indentText; } } /** * Get string description of component for use in logging. * * @param comp schema component * @return description */ public static String describeComponent(SchemaBase comp) { StringBuffer buff = new StringBuffer(); buff.append(comp.name()); String name; if (comp instanceof INamed && (name = ((INamed)comp).getName()) != null) { buff.append(' '); buff.append(name); } if (comp instanceof ITrackSource) { ITrackSource track = (ITrackSource)comp; String path = track.jibx_getDocumentName(); if (path != null) { buff.append(" ("); int start = path.lastIndexOf(File.separatorChar) + 1; int end = path.length(); if (path.endsWith(".xsd")) { end -= 4; } buff.append(path.substring(start, end)); int line = track.jibx_getLineNumber(); if (line > 0) { buff.append(':'); buff.append(line); } buff.append(")"); } } return buff.toString(); } /** * Get path to component. * * @param comp schema component * @return description */ public static String componentPath(OpenAttrBase comp) { StringBuffer buff = new StringBuffer(); StringBuffer segment = new StringBuffer(); OpenAttrBase node = comp; while (node != null && node.type() != SchemaBase.SCHEMA_TYPE) { segment.append(node.name()); String name; if (node instanceof INamed && (name = ((INamed)node).getName()) != null) { segment.append("[@name="); segment.append(name); segment.append(']'); } else { int index = 1; for (Iterator iter = node.getParent().getChildIterator(); iter.hasNext();) { OpenAttrBase child = (OpenAttrBase)iter.next(); if (child == node) { break; } else if (child.type() == node.type()) { index++; } } if (index > 1) { segment.append('['); segment.append(index); segment.append(']'); } } if (buff.length() > 0) { segment.append('/'); } buff.insert(0, segment); segment.setLength(0); node = node.getParent(); } if (comp instanceof ITrackSource) { ITrackSource track = (ITrackSource)comp; String path = track.jibx_getDocumentName(); if (path != null) { buff.append(" ("); int start = path.lastIndexOf(File.separatorChar) + 1; int end = path.length(); if (path.endsWith(".xsd")) { end -= 4; } buff.append(path.substring(start, end)); int line = track.jibx_getLineNumber(); if (line > 0) { buff.append(':'); buff.append(line); } buff.append(")"); } } return buff.toString(); } /** * Check if a particular schema definition component is an enumeration type definition. Formally, this returns * true if and only if the component is a <simpleType> element which is a restriction using one or * more <enumeration> facets. * * @param comp * @return true if an enumeration definition, false if not */ public static boolean isEnumeration(AnnotatedBase comp) { if (comp.type() == SchemaBase.SIMPLETYPE_TYPE) { SimpleTypeElement type = (SimpleTypeElement)comp; if (type.getDerivation().type() == SchemaBase.RESTRICTION_TYPE) { SimpleRestrictionElement restrict = (SimpleRestrictionElement)type.getDerivation(); FilteredSegmentList facets = restrict.getFacetsList(); for (int i = 0; i < facets.size(); i++) { FacetElement facet = (FacetElement)facets.get(i); if (facet.type() == SchemaBase.ENUMERATION_TYPE) { return true; } } } } return false; } }libjibx-java-1.1.6a/build/src/org/jibx/schema/SchemaVisitor.java0000644000175000017500000006016310701165006024400 0ustar moellermoeller/* * Copyright (c) 2004-2007, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema; import org.jibx.schema.elements.AllElement; import org.jibx.schema.elements.AnnotatedBase; import org.jibx.schema.elements.AnnotationElement; import org.jibx.schema.elements.AnnotationItem; import org.jibx.schema.elements.AnyAttributeElement; import org.jibx.schema.elements.AnyElement; import org.jibx.schema.elements.AppInfoElement; import org.jibx.schema.elements.AttributeElement; import org.jibx.schema.elements.AttributeGroupElement; import org.jibx.schema.elements.AttributeGroupRefElement; import org.jibx.schema.elements.ChoiceElement; import org.jibx.schema.elements.CommonComplexModification; import org.jibx.schema.elements.CommonCompositorBase; import org.jibx.schema.elements.CommonCompositorDefinition; import org.jibx.schema.elements.CommonContentBase; import org.jibx.schema.elements.CommonTypeDefinition; import org.jibx.schema.elements.CommonTypeDerivation; import org.jibx.schema.elements.ComplexContentElement; import org.jibx.schema.elements.ComplexExtensionElement; import org.jibx.schema.elements.ComplexRestrictionElement; import org.jibx.schema.elements.ComplexTypeElement; import org.jibx.schema.elements.DocumentationElement; import org.jibx.schema.elements.FacetElement; import org.jibx.schema.elements.SchemaBase; import org.jibx.schema.elements.ElementElement; import org.jibx.schema.elements.GroupElement; import org.jibx.schema.elements.GroupRefElement; import org.jibx.schema.elements.ImportElement; import org.jibx.schema.elements.IncludeElement; import org.jibx.schema.elements.ListElement; import org.jibx.schema.elements.OpenAttrBase; import org.jibx.schema.elements.RedefineElement; import org.jibx.schema.elements.SchemaElement; import org.jibx.schema.elements.SchemaLocationBase; import org.jibx.schema.elements.SequenceElement; import org.jibx.schema.elements.SimpleContentElement; import org.jibx.schema.elements.SimpleExtensionElement; import org.jibx.schema.elements.SimpleRestrictionElement; import org.jibx.schema.elements.SimpleTypeElement; import org.jibx.schema.elements.UnionElement; /** * Schema model visitor base class. This works with the {@link org.jibx.schema.TreeWalker} class for handling tree-based * operations on the schema definition. Subclasses can override any or all of the base class visit and exit methods, * including both those for abstract base classes and those for concrete classes, but should normally call the base * class implementation of the method in order to implement the class inheritance hierarchy handling. * * @author Dennis M. Sosnoski */ public abstract class SchemaVisitor { // // Visit methods for base classes /** * Visit element. This method will be called for every element in the model. The default implementation just returns * true to continue expansion of the tree. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(SchemaBase node) { return true; } /** * Visit open attribute element. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(OpenAttrBase node) { return visit((SchemaBase)node); } /** * Visit annotated element. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(AnnotatedBase node) { return visit((OpenAttrBase)node); } // // Visit methods for shared implementation classes /** * Visit annotation item element. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(AnnotationItem node) { return visit((SchemaBase)node); } /** * Visit compositor base element. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(CommonCompositorBase node) { return visit((AnnotatedBase)node); } /** * Visit compositor element. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(CommonCompositorDefinition node) { return visit((CommonCompositorBase)node); } /** * Visit complex type modification (complexContent or simpleContent)element. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(CommonComplexModification node) { return visit((CommonTypeDerivation)node); } /** * Visit content element (complexContent or simpleContent). * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(CommonContentBase node) { return visit((AnnotatedBase)node); } /** * Visit type definition element. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(CommonTypeDefinition node) { return visit((AnnotatedBase)node); } /** * Visit type derivation element. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(CommonTypeDerivation node) { return visit((AnnotatedBase)node); } /** * Visit facet element. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(FacetElement node) { return visit((AnnotatedBase)node); } /** * Visit schema location element. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(SchemaLocationBase node) { return visit((AnnotatedBase)node); } // // Visit methods for concrete classes /** * Visit all element. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(AllElement node) { return visit((AnnotatedBase)node); } /** * Visit annotation element. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(AnnotationElement node) { return visit((OpenAttrBase)node); } /** * Visit appinfo element. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(AppInfoElement node) { return visit((AnnotationItem)node); } /** * Visit documentation element. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(DocumentationElement node) { return visit((AnnotationItem)node); } /** * Visit any element. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(AnyElement node) { return visit((AnnotatedBase)node); } /** * Visit anyAttribute element. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(AnyAttributeElement node) { return visit((AnnotatedBase)node); } /** * Visit attribute element. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(AttributeElement node) { return visit((AnnotatedBase)node); } /** * Visit attributeGroup element for definition. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(AttributeGroupElement node) { return visit((AnnotatedBase)node); } /** * Visit attributeGroup element for reference. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(AttributeGroupRefElement node) { return visit((AnnotatedBase)node); } /** * Visit choice element. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(ChoiceElement node) { return visit((CommonCompositorDefinition)node); } /** * Visit complexContent element. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(ComplexContentElement node) { return visit((CommonContentBase)node); } /** * Visit extension element used for complex type. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(ComplexExtensionElement node) { return visit((CommonComplexModification)node); } /** * Visit restriction element used for complex type. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(ComplexRestrictionElement node) { return visit((CommonComplexModification)node); } /** * Visit complexType element. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(ComplexTypeElement node) { return visit((CommonTypeDefinition)node); } /** * Visit element element. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(ElementElement node) { return visit((AnnotatedBase)node); } /** * Visit group element for definition. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(GroupElement node) { return visit((AnnotatedBase)node); } /** * Visit group element for reference. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(GroupRefElement node) { return visit((CommonCompositorBase)node); } /** * Visit import element. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(ImportElement node) { return visit((SchemaLocationBase)node); } /** * Visit include element. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(IncludeElement node) { return visit((SchemaLocationBase)node); } /** * Visit list element. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(ListElement node) { return visit((AnnotatedBase)node); } /** * Visit redefine element. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(RedefineElement node) { return visit((SchemaLocationBase)node); } /** * Visit schema element. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(SchemaElement node) { return visit((OpenAttrBase)node); } /** * Visit sequence element. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(SequenceElement node) { return visit((CommonCompositorDefinition)node); } /** * Visit simpleContent element. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(SimpleContentElement node) { return visit((CommonContentBase)node); } /** * Visit extension element for simple type. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(SimpleExtensionElement node) { return visit((CommonTypeDerivation)node); } /** * Visit restriction element for simple type. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(SimpleRestrictionElement node) { return visit((CommonTypeDerivation)node); } /** * Visit simpleType element. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(SimpleTypeElement node) { return visit((CommonTypeDefinition)node); } /** * Visit union element. * * @param node element being visited * @return true if children to be processed, false if not */ public boolean visit(UnionElement node) { return visit((AnnotatedBase)node); } // // Exit methods for base classes /** * Exit element. * * @param node element being exited */ public void exit(SchemaBase node) {} /** * Exit open attribute element. * * @param node element being exited */ public void exit(OpenAttrBase node) { exit((SchemaBase)node); } /** * Exit annotated element. * * @param node element being exited */ public void exit(AnnotatedBase node) { exit((OpenAttrBase)node); } // // Exit methods for shared implementation classes /** * Exit annotation item element. * * @param node element being exited */ public void exit(AnnotationItem node) { exit((SchemaBase)node); } /** * Exit complex type modification. * * @param node element being exited */ public void exit(CommonComplexModification node) { exit((CommonTypeDerivation)node); } /** * Exit compositor base element. * * @param node element being exited */ public void exit(CommonCompositorBase node) { exit((AnnotatedBase)node); } /** * Exit compositor element. * * @param node element being exited */ public void exit(CommonCompositorDefinition node) { exit((CommonCompositorBase)node); } /** * Exit content element. * * @param node element being exited */ public void exit(CommonContentBase node) { exit((AnnotatedBase)node); } /** * Exit type definition element. * * @param node element being exited */ public void exit(CommonTypeDefinition node) { exit((AnnotatedBase)node); } /** * Exit common type derivation. * * @param node element being exited */ public void exit(CommonTypeDerivation node) { exit((AnnotatedBase)node); } /** * Exit facet element. * * @param node element being exited */ public void exit(FacetElement node) { exit((AnnotatedBase)node); } /** * Exit schema location element. * * @param node element being exited */ public void exit(SchemaLocationBase node) { exit((AnnotatedBase)node); } // // Exit methods for concrete classes /** * Exit all element. * * @param node element being exited */ public void exit(AllElement node) { exit((AnnotatedBase)node); } /** * Exit annotation element. * * @param node element being exited */ public void exit(AnnotationElement node) { exit((OpenAttrBase)node); } /** * Exit any element. * * @param node element being exited */ public void exit(AnyElement node) { exit((AnnotatedBase)node); } /** * Exit appinfo element. * * @param node element being exited */ public void exit(AppInfoElement node) { exit((AnnotationItem)node); } /** * Exit documentation element. * * @param node element being exited */ public void exit(DocumentationElement node) { exit((AnnotationItem)node); } /** * Exit anyAttribute element. * * @param node element being exited */ public void exit(AnyAttributeElement node) { exit((AnnotatedBase)node); } /** * Exit attribute element. * * @param node element being exited */ public void exit(AttributeElement node) { exit((AnnotatedBase)node); } /** * Exit attributeGroup element for definition. * * @param node element being exited */ public void exit(AttributeGroupElement node) { exit((AnnotatedBase)node); } /** * Exit attributeGroup element for reference. * * @param node element being exited */ public void exit(AttributeGroupRefElement node) { exit((AnnotatedBase)node); } /** * Exit choice element. * * @param node element being exited */ public void exit(ChoiceElement node) { exit((CommonCompositorDefinition)node); } /** * Exit complexContent element. * * @param node element being exited */ public void exit(ComplexContentElement node) { exit((CommonContentBase)node); } /** * Exit extension element used for complex type. * * @param node element being exited */ public void exit(ComplexExtensionElement node) { exit((CommonComplexModification)node); } /** * Exit restriction element used for complex type. * * @param node element being exited */ public void exit(ComplexRestrictionElement node) { exit((CommonComplexModification)node); } /** * Exit complexType element. * * @param node element being exited */ public void exit(ComplexTypeElement node) { exit((CommonTypeDefinition)node); } /** * Exit element element. * * @param node element being exited */ public void exit(ElementElement node) { exit((AnnotatedBase)node); } /** * Exit group element for definition. * * @param node element being exited */ public void exit(GroupElement node) { exit((AnnotatedBase)node); } /** * Exit group element for reference. * * @param node element being exited */ public void exit(GroupRefElement node) { exit((CommonCompositorBase)node); } /** * Exit import element. * * @param node element being exited */ public void exit(ImportElement node) { exit((SchemaLocationBase)node); } /** * Exit include element. * * @param node element being exited */ public void exit(IncludeElement node) { exit((SchemaLocationBase)node); } /** * Exit list element. * * @param node element being exited */ public void exit(ListElement node) { exit((AnnotatedBase)node); } /** * Exit redefine element. * * @param node element being exited */ public void exit(RedefineElement node) { exit((SchemaLocationBase)node); } /** * Exit schema element. * * @param node element being exited */ public void exit(SchemaElement node) { exit((OpenAttrBase)node); } /** * Exit sequence element. * * @param node element being exited */ public void exit(SequenceElement node) { exit((CommonCompositorDefinition)node); } /** * Exit simpleContent element. * * @param node element being exited */ public void exit(SimpleContentElement node) { exit((CommonContentBase)node); } /** * Exit extension element for simple type. * * @param node element being exited */ public void exit(SimpleExtensionElement node) { exit((CommonTypeDerivation)node); } /** * Exit restriction element for simple type. * * @param node element being exited */ public void exit(SimpleRestrictionElement node) { exit((CommonTypeDerivation)node); } /** * Exit simpleType element. * * @param node element being exited */ public void exit(SimpleTypeElement node) { exit((CommonTypeDefinition)node); } /** * Exit union element. * * @param node element being exited */ public void exit(UnionElement node) { exit((AnnotatedBase)node); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/SchemaVisitorDelegate.java0000644000175000017500000002476510651201410026035 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema; import org.jibx.schema.elements.AllElement; import org.jibx.schema.elements.AnnotatedBase; import org.jibx.schema.elements.AnnotationElement; import org.jibx.schema.elements.AnnotationItem; import org.jibx.schema.elements.AnyAttributeElement; import org.jibx.schema.elements.AnyElement; import org.jibx.schema.elements.AppInfoElement; import org.jibx.schema.elements.AttributeElement; import org.jibx.schema.elements.AttributeGroupElement; import org.jibx.schema.elements.AttributeGroupRefElement; import org.jibx.schema.elements.ChoiceElement; import org.jibx.schema.elements.CommonComplexModification; import org.jibx.schema.elements.CommonCompositorDefinition; import org.jibx.schema.elements.CommonTypeDefinition; import org.jibx.schema.elements.ComplexContentElement; import org.jibx.schema.elements.ComplexExtensionElement; import org.jibx.schema.elements.ComplexRestrictionElement; import org.jibx.schema.elements.ComplexTypeElement; import org.jibx.schema.elements.DocumentationElement; import org.jibx.schema.elements.SchemaBase; import org.jibx.schema.elements.ElementElement; import org.jibx.schema.elements.GroupElement; import org.jibx.schema.elements.GroupRefElement; import org.jibx.schema.elements.ImportElement; import org.jibx.schema.elements.IncludeElement; import org.jibx.schema.elements.ListElement; import org.jibx.schema.elements.OpenAttrBase; import org.jibx.schema.elements.RedefineElement; import org.jibx.schema.elements.SchemaElement; import org.jibx.schema.elements.SchemaLocationBase; import org.jibx.schema.elements.SequenceElement; import org.jibx.schema.elements.SimpleContentElement; import org.jibx.schema.elements.SimpleExtensionElement; import org.jibx.schema.elements.SimpleRestrictionElement; import org.jibx.schema.elements.SimpleTypeElement; import org.jibx.schema.elements.UnionElement; /** * Instance of {@link SchemaVisitor} that delegates to another instance. This is provided as a base class, allowing * selective overrides of normal visitor handling. * * @author Dennis M. Sosnoski */ public class SchemaVisitorDelegate extends SchemaVisitor { /** Delegate visitor. */ private final SchemaVisitor m_delegate; /** * Constructor. * * @param delegate */ public SchemaVisitorDelegate(final SchemaVisitor delegate) { super(); m_delegate = delegate; } public void exit(AllElement node) { m_delegate.exit(node); } public void exit(AnnotatedBase node) { m_delegate.exit(node); } public void exit(AnnotationElement node) { m_delegate.exit(node); } public void exit(AnnotationItem node) { m_delegate.exit(node); } public void exit(AnyAttributeElement node) { m_delegate.exit(node); } public void exit(AnyElement node) { m_delegate.exit(node); } public void exit(AppInfoElement node) { m_delegate.exit(node); } public void exit(AttributeElement node) { m_delegate.exit(node); } public void exit(AttributeGroupElement node) { m_delegate.exit(node); } public void exit(AttributeGroupRefElement node) { m_delegate.exit(node); } public void exit(ChoiceElement node) { m_delegate.exit(node); } public void exit(CommonComplexModification node) { m_delegate.exit(node); } public void exit(CommonCompositorDefinition node) { m_delegate.exit(node); } public void exit(CommonTypeDefinition node) { m_delegate.exit(node); } public void exit(ComplexContentElement node) { m_delegate.exit(node); } public void exit(ComplexExtensionElement node) { m_delegate.exit(node); } public void exit(ComplexRestrictionElement node) { m_delegate.exit(node); } public void exit(ComplexTypeElement node) { m_delegate.exit(node); } public void exit(DocumentationElement node) { m_delegate.exit(node); } public void exit(SchemaBase node) { m_delegate.exit(node); } public void exit(ElementElement node) { m_delegate.exit(node); } public void exit(GroupElement node) { m_delegate.exit(node); } public void exit(GroupRefElement node) { m_delegate.exit(node); } public void exit(ImportElement node) { m_delegate.exit(node); } public void exit(IncludeElement node) { m_delegate.exit(node); } public void exit(ListElement node) { m_delegate.exit(node); } public void exit(OpenAttrBase node) { m_delegate.exit(node); } public void exit(RedefineElement node) { m_delegate.exit(node); } public void exit(SchemaElement node) { m_delegate.exit(node); } public void exit(SchemaLocationBase node) { m_delegate.exit(node); } public void exit(SequenceElement node) { m_delegate.exit(node); } public void exit(SimpleContentElement node) { m_delegate.exit(node); } public void exit(SimpleExtensionElement node) { m_delegate.exit(node); } public void exit(SimpleRestrictionElement node) { m_delegate.exit(node); } public void exit(SimpleTypeElement node) { m_delegate.exit(node); } public void exit(UnionElement node) { m_delegate.exit(node); } public boolean visit(AllElement node) { return m_delegate.visit(node); } public boolean visit(AnnotatedBase node) { return m_delegate.visit(node); } public boolean visit(AnnotationElement node) { return m_delegate.visit(node); } public boolean visit(AnnotationItem node) { return m_delegate.visit(node); } public boolean visit(AnyAttributeElement node) { return m_delegate.visit(node); } public boolean visit(AnyElement node) { return m_delegate.visit(node); } public boolean visit(AppInfoElement node) { return m_delegate.visit(node); } public boolean visit(AttributeElement node) { return m_delegate.visit(node); } public boolean visit(AttributeGroupElement node) { return m_delegate.visit(node); } public boolean visit(AttributeGroupRefElement node) { return m_delegate.visit(node); } public boolean visit(ChoiceElement node) { return m_delegate.visit(node); } public boolean visit(CommonComplexModification node) { return m_delegate.visit(node); } public boolean visit(CommonCompositorDefinition node) { return m_delegate.visit(node); } public boolean visit(CommonTypeDefinition node) { return m_delegate.visit(node); } public boolean visit(ComplexContentElement node) { return m_delegate.visit(node); } public boolean visit(ComplexExtensionElement node) { return m_delegate.visit(node); } public boolean visit(ComplexRestrictionElement node) { return m_delegate.visit(node); } public boolean visit(ComplexTypeElement node) { return m_delegate.visit(node); } public boolean visit(DocumentationElement node) { return m_delegate.visit(node); } public boolean visit(SchemaBase node) { return m_delegate.visit(node); } public boolean visit(ElementElement node) { return m_delegate.visit(node); } public boolean visit(GroupElement node) { return m_delegate.visit(node); } public boolean visit(GroupRefElement node) { return m_delegate.visit(node); } public boolean visit(ImportElement node) { return m_delegate.visit(node); } public boolean visit(IncludeElement node) { return m_delegate.visit(node); } public boolean visit(ListElement node) { return m_delegate.visit(node); } public boolean visit(OpenAttrBase node) { return m_delegate.visit(node); } public boolean visit(RedefineElement node) { return m_delegate.visit(node); } public boolean visit(SchemaElement node) { return m_delegate.visit(node); } public boolean visit(SchemaLocationBase node) { return m_delegate.visit(node); } public boolean visit(SequenceElement node) { return m_delegate.visit(node); } public boolean visit(SimpleContentElement node) { return m_delegate.visit(node); } public boolean visit(SimpleExtensionElement node) { return m_delegate.visit(node); } public boolean visit(SimpleRestrictionElement node) { return m_delegate.visit(node); } public boolean visit(SimpleTypeElement node) { return m_delegate.visit(node); } public boolean visit(UnionElement node) { return m_delegate.visit(node); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/TreeWalker.java0000644000175000017500000004637011002543776023702 0ustar moellermoeller/* * Copyright (c) 2006-2007, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.jibx.schema.elements.AllElement; import org.jibx.schema.elements.AnnotatedBase; import org.jibx.schema.elements.AnnotationElement; import org.jibx.schema.elements.AnyAttributeElement; import org.jibx.schema.elements.AnyElement; import org.jibx.schema.elements.AppInfoElement; import org.jibx.schema.elements.AttributeElement; import org.jibx.schema.elements.AttributeGroupElement; import org.jibx.schema.elements.AttributeGroupRefElement; import org.jibx.schema.elements.ChoiceElement; import org.jibx.schema.elements.ComplexContentElement; import org.jibx.schema.elements.ComplexExtensionElement; import org.jibx.schema.elements.ComplexRestrictionElement; import org.jibx.schema.elements.ComplexTypeElement; import org.jibx.schema.elements.DocumentationElement; import org.jibx.schema.elements.ElementElement; import org.jibx.schema.elements.FacetElement; import org.jibx.schema.elements.GroupElement; import org.jibx.schema.elements.GroupRefElement; import org.jibx.schema.elements.ImportElement; import org.jibx.schema.elements.IncludeElement; import org.jibx.schema.elements.ListElement; import org.jibx.schema.elements.NotationElement; import org.jibx.schema.elements.OpenAttrBase; import org.jibx.schema.elements.RedefineElement; import org.jibx.schema.elements.SchemaBase; import org.jibx.schema.elements.SchemaElement; import org.jibx.schema.elements.SchemaLocationBase; import org.jibx.schema.elements.SequenceElement; import org.jibx.schema.elements.SimpleContentElement; import org.jibx.schema.elements.SimpleExtensionElement; import org.jibx.schema.elements.SimpleRestrictionElement; import org.jibx.schema.elements.SimpleTypeElement; import org.jibx.schema.elements.UnionElement; /** * Handles walking the tree structure of schema model. This traverses the structure defined by the nesting of elements * and schema references in the XML representation. * * @author Dennis M. Sosnoski */ public class TreeWalker { /** Logger for class. */ private static final Logger s_logger = Logger.getLogger(TreeWalker.class.getName()); /** Selector for elements to be skipped when walking tree (null if unused). */ private final ISkipElements m_skipSet; /** Listener for entering and exiting referenced schemas. (null if unused). */ private final ISchemaListener m_schemaListener; /** * Constructor. * * @param skip selector for elements to be skipped (null if none skipped) * @param listen schema reference listener (null if none) */ public TreeWalker(ISkipElements skip, ISchemaListener listen) { m_skipSet = skip; m_schemaListener = listen; } /** * Control the logging level for this class. Since the generated logs at debug level can become huge, this gives a * way for external code to provide granular control over the logging. * * @param level * @return prior level */ public static Level setLogging(Level level) { Level prior = s_logger.getLevel(); s_logger.setLevel(level); return prior; } /** * Walk entire schema model. * * @param schema root element of schema to be traversed * @param visitor target visitor for element notifications */ public void walkSchema(SchemaElement schema, SchemaVisitor visitor) { if (schema != null) { if (m_schemaListener == null || m_schemaListener.enterSchema(schema)) { walkElement(schema, visitor); if (m_schemaListener != null) { m_schemaListener.exitSchema(); } } } } /** * Walk schema model element tree. This recursively traverses the schema model tree rooted in the supplied element, * including the element itself, notifying the visitor of each element visited during the traversal. * * @param root node of tree to be toured * @param visitor target visitor for element notifications */ public void walkElement(SchemaBase root, SchemaVisitor visitor) { // check for fatal error on element if (m_skipSet != null && m_skipSet.isSkipped(root)) { if (s_logger.isDebugEnabled() && root instanceof OpenAttrBase) { s_logger.debug("Skipping node " + SchemaUtils.componentPath((OpenAttrBase)root)); } return; } // visit the actual root of tree boolean expand = false; if (s_logger.isDebugEnabled() && root instanceof OpenAttrBase) { s_logger.debug("Entering node " + SchemaUtils.componentPath((OpenAttrBase)root)); } switch (root.type()) { case SchemaBase.ALL_TYPE: expand = visitor.visit((AllElement)root); break; case SchemaBase.ANNOTATION_TYPE: expand = visitor.visit((AnnotationElement)root); break; case SchemaBase.ANY_TYPE: expand = visitor.visit((AnyElement)root); break; case SchemaBase.ANYATTRIBUTE_TYPE: expand = visitor.visit((AnyAttributeElement)root); break; case SchemaBase.APPINFO_TYPE: expand = visitor.visit((AppInfoElement)root); break; case SchemaBase.ATTRIBUTE_TYPE: expand = visitor.visit((AttributeElement)root); break; case SchemaBase.ATTRIBUTEGROUP_TYPE: if (root instanceof AttributeGroupElement) { expand = visitor.visit((AttributeGroupElement)root); } else { expand = visitor.visit((AttributeGroupRefElement)root); } break; case SchemaBase.CHOICE_TYPE: expand = visitor.visit((ChoiceElement)root); break; case SchemaBase.COMPLEXCONTENT_TYPE: expand = visitor.visit((ComplexContentElement)root); break; case SchemaBase.COMPLEXTYPE_TYPE: expand = visitor.visit((ComplexTypeElement)root); break; case SchemaBase.DOCUMENTATION_TYPE: expand = visitor.visit((DocumentationElement)root); break; case SchemaBase.ELEMENT_TYPE: expand = visitor.visit((ElementElement)root); break; case SchemaBase.EXTENSION_TYPE: if (root instanceof ComplexExtensionElement) { expand = visitor.visit((ComplexExtensionElement)root); } else { expand = visitor.visit((SimpleExtensionElement)root); } break; case SchemaBase.FIELD_TYPE: // expand = visitor.visit((FieldElement)root); break; case SchemaBase.GROUP_TYPE: if (root instanceof GroupElement) { expand = visitor.visit((GroupElement)root); } else { expand = visitor.visit((GroupRefElement)root); } break; case SchemaBase.IMPORT_TYPE: expand = visitor.visit((ImportElement)root); break; case SchemaBase.INCLUDE_TYPE: expand = visitor.visit((IncludeElement)root); break; case SchemaBase.KEY_TYPE: // expand = visitor.visit((KeyElement)root); break; case SchemaBase.KEYREF_TYPE: // expand = visitor.visit((KeyrefElement)root); break; case SchemaBase.LIST_TYPE: expand = visitor.visit((ListElement)root); break; case SchemaBase.NOTATION_TYPE: expand = visitor.visit((NotationElement)root); break; case SchemaBase.REDEFINE_TYPE: expand = visitor.visit((RedefineElement)root); break; case SchemaBase.RESTRICTION_TYPE: if (root instanceof SimpleRestrictionElement) { expand = visitor.visit((SimpleRestrictionElement)root); } else { expand = visitor.visit((ComplexRestrictionElement)root); } break; case SchemaBase.SCHEMA_TYPE: expand = visitor.visit((SchemaElement)root); break; case SchemaBase.SELECTOR_TYPE: // expand = visitor.visit((SelectorElement)root); break; case SchemaBase.SEQUENCE_TYPE: expand = visitor.visit((SequenceElement)root); break; case SchemaBase.SIMPLECONTENT_TYPE: expand = visitor.visit((SimpleContentElement)root); break; case SchemaBase.SIMPLETYPE_TYPE: expand = visitor.visit((SimpleTypeElement)root); break; case SchemaBase.UNION_TYPE: expand = visitor.visit((UnionElement)root); break; case SchemaBase.UNIQUE_TYPE: // expand = visitor.visit((UniqueElement)root); break; case SchemaBase.ENUMERATION_TYPE: case SchemaBase.FRACTIONDIGITS_TYPE: case SchemaBase.LENGTH_TYPE: case SchemaBase.MAXEXCLUSIVE_TYPE: case SchemaBase.MAXINCLUSIVE_TYPE: case SchemaBase.MAXLENGTH_TYPE: case SchemaBase.MINEXCLUSIVE_TYPE: case SchemaBase.MININCLUSIVE_TYPE: case SchemaBase.MINLENGTH_TYPE: case SchemaBase.PATTERN_TYPE: case SchemaBase.TOTALDIGITS_TYPE: case SchemaBase.WHITESPACE_TYPE: expand = visitor.visit((FacetElement)root); break; default: throw new IllegalStateException("Internal error: unknown element type"); } // check for expansion needed if (expand && (m_skipSet == null || !m_skipSet.isSkipped(root))) { walkChildren(root, visitor); } // exit the actual root of tree switch (root.type()) { case SchemaBase.ALL_TYPE: visitor.exit((AllElement)root); break; case SchemaBase.ANNOTATION_TYPE: visitor.exit((AnnotationElement)root); break; case SchemaBase.ANY_TYPE: visitor.exit((AnyElement)root); break; case SchemaBase.ANYATTRIBUTE_TYPE: visitor.exit((AnyAttributeElement)root); break; case SchemaBase.APPINFO_TYPE: visitor.exit((AppInfoElement)root); break; case SchemaBase.ATTRIBUTE_TYPE: visitor.exit((AttributeElement)root); break; case SchemaBase.ATTRIBUTEGROUP_TYPE: if (root instanceof AttributeGroupElement) { visitor.exit((AttributeGroupElement)root); } else { visitor.exit((AttributeGroupRefElement)root); } break; case SchemaBase.CHOICE_TYPE: visitor.exit((ChoiceElement)root); break; case SchemaBase.COMPLEXCONTENT_TYPE: visitor.exit((ComplexContentElement)root); break; case SchemaBase.COMPLEXTYPE_TYPE: visitor.exit((ComplexTypeElement)root); break; case SchemaBase.DOCUMENTATION_TYPE: visitor.exit((DocumentationElement)root); break; case SchemaBase.ELEMENT_TYPE: visitor.exit((ElementElement)root); break; case SchemaBase.EXTENSION_TYPE: if (root instanceof ComplexExtensionElement) { visitor.exit((ComplexExtensionElement)root); } else { visitor.exit((SimpleExtensionElement)root); } break; case SchemaBase.FIELD_TYPE: // visitor.exit((FieldElement)root); break; case SchemaBase.GROUP_TYPE: if (root instanceof GroupElement) { visitor.exit((GroupElement)root); } else { visitor.exit((GroupRefElement)root); } break; case SchemaBase.IMPORT_TYPE: visitor.exit((ImportElement)root); break; case SchemaBase.INCLUDE_TYPE: visitor.exit((IncludeElement)root); break; case SchemaBase.KEY_TYPE: // visitor.exit((KeyElement)root); break; case SchemaBase.KEYREF_TYPE: // visitor.exit((KeyrefElement)root); break; case SchemaBase.LIST_TYPE: visitor.exit((ListElement)root); break; case SchemaBase.NOTATION_TYPE: visitor.exit((NotationElement)root); break; case SchemaBase.REDEFINE_TYPE: visitor.exit((RedefineElement)root); break; case SchemaBase.RESTRICTION_TYPE: if (root instanceof SimpleRestrictionElement) { visitor.exit((SimpleRestrictionElement)root); } else { visitor.exit((ComplexRestrictionElement)root); } break; case SchemaBase.SCHEMA_TYPE: visitor.exit((SchemaElement)root); break; case SchemaBase.SELECTOR_TYPE: // visitor.exit((SelectorElement)root); break; case SchemaBase.SEQUENCE_TYPE: visitor.exit((SequenceElement)root); break; case SchemaBase.SIMPLECONTENT_TYPE: visitor.exit((SimpleContentElement)root); break; case SchemaBase.SIMPLETYPE_TYPE: visitor.exit((SimpleTypeElement)root); break; case SchemaBase.UNION_TYPE: visitor.exit((UnionElement)root); break; case SchemaBase.UNIQUE_TYPE: // visitor.exit((UniqueElement)root); break; case SchemaBase.ENUMERATION_TYPE: case SchemaBase.FRACTIONDIGITS_TYPE: case SchemaBase.LENGTH_TYPE: case SchemaBase.MAXEXCLUSIVE_TYPE: case SchemaBase.MAXINCLUSIVE_TYPE: case SchemaBase.MAXLENGTH_TYPE: case SchemaBase.MINEXCLUSIVE_TYPE: case SchemaBase.MININCLUSIVE_TYPE: case SchemaBase.MINLENGTH_TYPE: case SchemaBase.PATTERN_TYPE: case SchemaBase.TOTALDIGITS_TYPE: case SchemaBase.WHITESPACE_TYPE: visitor.exit((FacetElement)root); break; default: break; } if (s_logger.isDebugEnabled() && root instanceof OpenAttrBase) { s_logger.debug("Left node " + SchemaUtils.componentPath((OpenAttrBase)root)); } } /** * Walk the descendants of a root element. This recursively traverses the schema model tree rooted in the supplied * element, excluding the element itself, notifying the visitor of each element visited during the traversal. * * @param root node of tree to be toured * @param visitor target visitor for element notifications */ public void walkChildren(SchemaBase root, SchemaVisitor visitor) { // first expand the annotation, if present if (root instanceof AnnotatedBase) { AnnotationElement anno = ((AnnotatedBase)root).getAnnotation(); if (anno != null) { walkElement(anno, visitor); } } // perform special handling for element expansion if (root instanceof SchemaLocationBase) { // references just delegate to the included schema element SchemaElement schema = ((SchemaLocationBase)root).getReferencedSchema(); System.out.println(" checking referenced schema " + schema.getResolver().getName()); if (schema != null && (m_schemaListener == null || m_schemaListener.enterSchema(schema))) { walkElement(schema, visitor); if (m_schemaListener != null) { m_schemaListener.exitSchema(); } } } // handle normal element expansion if (root instanceof OpenAttrBase) { OpenAttrBase parent = (OpenAttrBase)root; int count = parent.getChildCount(); for (int i = 0; i < count; i++) { walkElement(parent.getChild(i), visitor); } } } }libjibx-java-1.1.6a/build/src/org/jibx/schema/UrlResolver.java0000644000175000017500000000631710767276506024131 0ustar moellermoeller/* * Copyright (c) 2007-2008, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.schema; import java.io.IOException; import java.io.InputStream; import java.net.URL; /** * Basic resolver supporting relative URL paths. */ public class UrlResolver implements ISchemaResolver { /** Schema document URL. */ private final URL m_url; /** Schema name. */ private final String m_name; /** Unique identifier for this schema document. */ private final String m_id; /** * Constructor. * * @param name * @param url */ public UrlResolver(String name, URL url) { m_name = name; m_url = url; m_id = url.getProtocol().toLowerCase() + "://" + url.getHost().toLowerCase() + url.getFile(); } /* * (non-Javadoc) * * @see org.jibx.schema.ISchemaResolver#getContent() */ public InputStream getContent() throws IOException { return m_url.openStream(); } /* * (non-Javadoc) * * @see org.jibx.schema.ISchemaResolver#getName() */ public String getName() { return m_name; } /* * (non-Javadoc) * * @see org.jibx.schema.ISchemaResolver#getId() */ public String getId() { return m_id; } /* * (non-Javadoc) * * @see org.jibx.schema.ISchemaResolver#resolve(java.lang.String) */ public ISchemaResolver resolve(String loc) throws IOException { return new UrlResolver(loc, new URL(m_url, loc)); } public boolean equals(Object obj) { if (obj instanceof UrlResolver) { return m_id.equals(((UrlResolver)obj).m_id); } else { return false; } } public int hashCode() { return m_id.hashCode(); } }libjibx-java-1.1.6a/build/src/org/jibx/schema/binding.xml0000644000175000017500000005572310752422372023127 0ustar moellermoeller libjibx-java-1.1.6a/build/src/org/jibx/util/0000755000175000017500000000000011023035620020460 5ustar moellermoellerlibjibx-java-1.1.6a/build/src/org/jibx/util/HolderBase.java0000644000175000017500000001251210767273436023363 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.util; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; /** * Base class for external data used in constructing a namespaced file which may reference other files of the same type. * This class tracks both the referenced files and the corresponding namespace references, assigning prefixes for the * latter as appropriate. The namespace associated with this file is always given the prefix 'tns', while those used for * other files get prefixes of the form 'ns1', 'ns2', etc. * * @author Dennis M. Sosnoski */ public abstract class HolderBase { private final String m_namespace; private final Map m_nsPrefixMap; private String m_fileName; private Set m_referenceSet; /** * Constructor. * * @param uri (null if no-namespace binding) */ public HolderBase(String uri) { m_namespace = uri; m_nsPrefixMap = new HashMap(); if (uri != null) { m_nsPrefixMap.put(uri, "tns"); } } /** * Get the prefix for a namespace URI. The first time this is called for a particular namespace URI a prefix is * assigned and returned. This assumes that the default namespace is always the no-namespace. * * @param uri * @return prefix */ public String getPrefix(String uri) { if (uri == null) { return ""; } else { String prefix = (String)m_nsPrefixMap.get(uri); if (prefix == null) { prefix = "ns" + m_nsPrefixMap.size(); m_nsPrefixMap.put(uri, prefix); addNamespaceDecl(prefix, uri); } return prefix; } } /** * Subclass hook method to handle adding a namespace declaration. The implementation of this method needs to set up * the namespace declaration for output in the generated XML. * * @param prefix * @param uri */ protected abstract void addNamespaceDecl(String prefix, String uri); /** * Get namespace URI associated with this file. * * @return namespace (null if no-namespace) */ public String getNamespace() { return m_namespace; } /** * Get the file name to be used for this file. * * @return name (null if not set) */ public String getFileName() { return m_fileName; } /** * Set the file name to be used for this file. * * @param name */ public void setFileName(String name) { m_fileName = name; } /** * Record a reference from this file to another file of the same type. This adds the reference to the set of * references. * * @param ref */ public void addReference(HolderBase ref) { if (ref == null) { throw new IllegalArgumentException("Reference cannot be to null"); } if (m_referenceSet == null) { m_referenceSet = new HashSet(); } m_referenceSet.add(ref); } /** * Get the set of references from this file to other files of the same type. * * @return references */ public Set getReferences() { if (m_referenceSet == null) { return Collections.EMPTY_SET; } else { return m_referenceSet; } } /** * Implementation method for subclasses to complete the construction of the file. This includes processing * references to other files, as well as any other components of the file which need to be finalized. This method * must be called after all references have been added, allowing the subclass to add any necessary structures to the * file representation. */ public abstract void finish(); }libjibx-java-1.1.6a/build/src/org/jibx/util/InsertionOrderedMap.java0000644000175000017500000001407110651200424025245 0ustar moellermoeller/* Copyright (c) 2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.util; import java.util.AbstractCollection; import java.util.AbstractSet; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.NoSuchElementException; import java.util.Set; /** * Map with keys iterated in insertion order. This is similar to the Java 1.4 * java.util.LinkedHashMap class, but compatible with earlier JVM versions. It * also guarantees insertion ordering only for iterating through the key values, * not for other iterations. This implementation is optimized for insert-only * maps. */ public class InsertionOrderedMap implements Map { private final Map m_baseMap; private final ArrayList m_insertList; public InsertionOrderedMap() { m_baseMap = new HashMap(); m_insertList = new ArrayList(); } /* (non-Javadoc) * @see java.util.Map#clear() */ public void clear() { m_baseMap.clear(); m_insertList.clear(); } /* (non-Javadoc) * @see java.util.Map#containsKey(java.lang.Object) */ public boolean containsKey(Object key) { return m_baseMap.containsKey(key); } /* (non-Javadoc) * @see java.util.Map#containsValue(java.lang.Object) */ public boolean containsValue(Object value) { return m_baseMap.containsValue(value); } /* (non-Javadoc) * @see java.util.Map#entrySet() */ public Set entrySet() { return m_baseMap.entrySet(); } /* (non-Javadoc) * @see java.util.Map#get(java.lang.Object) */ public Object get(Object key) { return m_baseMap.get(key); } /* (non-Javadoc) * @see java.util.Map#isEmpty() */ public boolean isEmpty() { return m_baseMap.isEmpty(); } /* (non-Javadoc) * @see java.util.Map#keySet() */ public Set keySet() { return new ListSet(m_insertList); } /* (non-Javadoc) * @see java.util.Map#put(java.lang.Object, java.lang.Object) */ public Object put(Object key, Object value) { if (!m_baseMap.containsKey(key)) { m_insertList.add(key); } return m_baseMap.put(key, value); } /* (non-Javadoc) * @see java.util.Map#putAll(java.util.Map) */ public void putAll(Map t) { for (Iterator iter = t.entrySet().iterator(); iter.hasNext();) { Entry entry = (Entry)iter.next(); put(entry.getKey(), entry.getValue()); } } /* (non-Javadoc) * @see java.util.Map#remove(java.lang.Object) */ public Object remove(Object key) { if (m_baseMap.containsKey(key)) { m_insertList.remove(key); return m_baseMap.remove(key); } else { return null; } } /* (non-Javadoc) * @see java.util.Map#size() */ public int size() { return m_baseMap.size(); } /* (non-Javadoc) * @see java.util.Map#values() */ public Collection values() { return new ValueCollection(); } /** * Get list of keys in order added. The returned list is live, and will * grow or shrink as pairs are added to or removed from the map. * * @return key list */ public ArrayList keyList() { return m_insertList; } /** * Set implementation backed by a list. */ protected static class ListSet extends AbstractSet { private final List m_list; public ListSet(List list) { m_list = list; } public Iterator iterator() { return m_list.iterator(); } public int size() { return m_list.size(); } } protected class ValueCollection extends AbstractCollection { public Iterator iterator() { return new ValueIterator(); } public int size() { return m_insertList.size(); } } protected class ValueIterator implements Iterator { private int m_index = -1; public boolean hasNext() { return m_index < m_insertList.size()-1; } public Object next() { if (m_index < m_insertList.size()-1) { Object key = m_insertList.get(++m_index); return m_baseMap.get(key); } else { throw new NoSuchElementException("Past end of list"); } } public void remove() { throw new UnsupportedOperationException("Internal error - remove() not supported"); } } }libjibx-java-1.1.6a/build/src/org/jibx/util/InsertionOrderedSet.java0000644000175000017500000001135610624256316025301 0ustar moellermoeller/* Copyright (c) 2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.util; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.Iterator; import java.util.Set; /** * Set with values iterated in insertion order. This is similar to the Java 1.4 * java.util.LinkedHashSet class, but compatible with earlier JVM versions. This * implementation is for insert-only sets. */ public class InsertionOrderedSet implements Set { private final Set m_baseMap; private final ArrayList m_insertList; public InsertionOrderedSet() { m_baseMap = new HashSet(); m_insertList = new ArrayList(); } /* (non-Javadoc) * @see java.util.Map#clear() */ public void clear() { m_baseMap.clear(); m_insertList.clear(); } /* (non-Javadoc) * @see java.util.Set#isEmpty() */ public boolean isEmpty() { return m_baseMap.isEmpty(); } /* (non-Javadoc) * @see java.util.Set#size() */ public int size() { return m_baseMap.size(); } /* (non-Javadoc) * @see java.util.Set#add(java.lang.Object) */ public boolean add(Object o) { if (m_baseMap.contains(o)) { return false; } else { m_baseMap.add(o); m_insertList.add(o); return true; } } /* (non-Javadoc) * @see java.util.Set#addAll(java.util.Collection) */ public boolean addAll(Collection c) { boolean changed = false; for (Iterator iter = c.iterator(); iter.hasNext();) { Object item = (Object)iter.next(); if (add(item)) { changed = true; } } return changed; } /* (non-Javadoc) * @see java.util.Set#contains(java.lang.Object) */ public boolean contains(Object o) { return m_baseMap.contains(o); } /* (non-Javadoc) * @see java.util.Set#containsAll(java.util.Collection) */ public boolean containsAll(Collection c) { return m_baseMap.containsAll(c); } /* (non-Javadoc) * @see java.util.Set#iterator() */ public Iterator iterator() { return m_insertList.iterator(); } /* (non-Javadoc) * @see java.util.Set#remove(java.lang.Object) */ public boolean remove(Object o) { throw new UnsupportedOperationException("add-only set"); } /* (non-Javadoc) * @see java.util.Set#removeAll(java.util.Collection) */ public boolean removeAll(Collection c) { throw new UnsupportedOperationException("add-only set"); } /* (non-Javadoc) * @see java.util.Set#retainAll(java.util.Collection) */ public boolean retainAll(Collection c) { throw new UnsupportedOperationException("add-only set"); } /* (non-Javadoc) * @see java.util.Set#toArray() */ public Object[] toArray() { return m_insertList.toArray(); } /* (non-Javadoc) * @see java.util.Set#toArray(T[]) */ public Object[] toArray(Object[] a) { return m_insertList.toArray(a); } /** * Get list of values in order added. The returned list is live, and will * grow as new items are added to the set. * * @return list */ public ArrayList asList() { return m_insertList; } }libjibx-java-1.1.6a/build/src/org/jibx/util/StringIntSizedMap.java0000644000175000017500000002120610602646344024717 0ustar moellermoeller/* Copyright (c) 2004-2005, Dennis M. Sosnoski. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.util; /** * Fixed size hash map using String values as keys mapped to * primitive int values. * * @author Dennis M. Sosnoski */ public class StringIntSizedMap { /** Default fill fraction for sizing of tables. */ public static final double DEFAULT_FILL_FRACTION = 0.4; /** Default value returned when key not found in table. */ public static final int DEFAULT_NOT_FOUND = Integer.MIN_VALUE; /** Size of array used for keys. */ protected final int m_arraySize; /** Array of key table slots. */ protected final String[] m_keyTable; /** Array of value table slots. */ protected final int[] m_valueTable; /** Value returned when key not found in table. */ protected final int m_notFoundValue; /** Offset added (modulo table size) to slot number on collision. */ protected final int m_hitOffset; /** * Constructor with full specification. * * @param count number of values to assume in sizing of table * @param fill fraction fill for table (maximum of 0.7, to * prevent excessive collisions) * @param miss value returned when key not found in table */ public StringIntSizedMap(int count, double fill, int miss) { // make sure the fill fraction is in a reasonable range if (fill <= 0.0 || fill > 0.7) { throw new IllegalArgumentException("Fill fraction of " + fill + " is out of allowed range"); } // compute initial table size (ensuring odd) int size = Math.max((int) (count / fill), 11); size += (size + 1) % 2; m_arraySize = size; // initialize the table information m_keyTable = new String[size]; m_valueTable = new int[size]; for (int i = 0; i < size; i++) { m_valueTable[i] = -1; } m_hitOffset = m_arraySize / 2; m_notFoundValue = miss; } /** * Constructor with value count and miss value specified. Uses default fill * fraction. * * @param count number of values to assume in initial sizing of table * @param miss value returned when key not found in table */ public StringIntSizedMap(int count, int miss) { this(count, DEFAULT_FILL_FRACTION, miss); } /** * Constructor with only value count specified. Uses default fill fraction * and miss value. * * @param count number of values to assume in initial sizing of table */ public StringIntSizedMap(int count) { this(count, DEFAULT_FILL_FRACTION, DEFAULT_NOT_FOUND); } /** * Step the slot number for an entry. Adds the collision offset (modulo * the table size) to the slot number. * * @param slot slot number to be stepped * @return stepped slot number */ private final int stepSlot(int slot) { return (slot + m_hitOffset) % m_arraySize; } /** * Find free slot number for entry. Starts at the slot based directly * on the hashed key value. If this slot is already occupied, it adds * the collision offset (modulo the table size) to the slot number and * checks that slot, repeating until an unused slot is found. * * @param slot initial slot computed from key * @return slot at which entry was added */ private final int freeSlot(int slot) { while (m_keyTable[slot] != null) { slot = stepSlot(slot); } return slot; } /** * Standard base slot computation for a key. This method may be used * directly for key lookup using either the hashCode() method * defined for the key objects or the System.identityHashCode() * method, as selected by the hash technique constructor parameter. To * implement a hash class based on some other methods of hashing and/or * equality testing, define a separate method in the subclass with a * different name and use that method instead. This avoids the overhead * caused by overrides of a very heavily used method. * * @param key key value to be computed * @return base slot for key */ private final int standardSlot(String key) { return (key.hashCode() & Integer.MAX_VALUE) % m_arraySize; } /** * Standard find key in table. This uses identity comparisons for the key * values. * * @param key to be found in table * @return index of matching key, or -index-1 of slot to be * used for inserting key in table if not already present (always negative) */ private int standardFind(String key) { // find the starting point for searching table int slot = standardSlot(key); // scan through table to find target key while (m_keyTable[slot] != null) { // check if we have a match on target key if (m_keyTable[slot].equals(key)) { return slot; } else { slot = stepSlot(slot); } } return -slot-1; } /** * Add an entry to the table. If the key is already present in the table, * this replaces the existing value associated with the key. * * @param key key to be added to table (non-null) * @param value associated value for key * @return value previously associated with key, or reserved not found * value if key not previously present in table */ public int add(String key, int value) { // first validate the parameters if (key == null) { throw new IllegalArgumentException("null key not supported"); } else if (value == -1) { throw new IllegalArgumentException ("value matching not found return not supported"); } else { // check space and duplicate key int offset = standardFind(key); if (offset >= 0) { // replace existing value for key int prior = m_valueTable[offset]; m_valueTable[offset] = value; return prior; } else { // add new pair to table offset = -offset - 1; m_keyTable[offset] = key; m_valueTable[offset] = value; return m_notFoundValue; } } } /** * Check if an entry is present in the table. This method is supplied to * support the use of values matching the reserved not found value. * * @param key key for entry to be found * @return true if key found in table, false * if not */ public final boolean containsKey(String key) { return standardFind(key) >= 0; } /** * Find an entry in the table. * * @param key key for entry to be returned * @return value for key, or reserved not found value if key not found */ public final int get(String key) { int slot = standardFind(key); if (slot >= 0) { return m_valueTable[slot]; } else { return m_notFoundValue; } } /** * Set the table to the empty state. */ public void clear() { for (int i = 0; i < m_keyTable.length; i++) { m_keyTable[i] = null; m_valueTable[i] = m_notFoundValue; } } }libjibx-java-1.1.6a/build/src/org/jibx/util/Types.java0000644000175000017500000001146110611643062022441 0ustar moellermoeller/* Copyright (c) 2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.util; import java.util.HashMap; import org.jibx.runtime.QName; /** * Mapping information to and from schema types. */ public class Types { public static final String SCHEMA_NAMESPACE = "http://www.w3.org/2001/XMLSchema"; public static final QName STRING_QNAME = new QName(SCHEMA_NAMESPACE, "string"); /** Set of object types mapped to schema types. */ private static HashMap s_objectTypeMap = new HashMap(); static { s_objectTypeMap.put("java.lang.Boolean", new QName(SCHEMA_NAMESPACE, "boolean")); s_objectTypeMap.put("java.lang.Byte", new QName(SCHEMA_NAMESPACE, "byte")); s_objectTypeMap.put("java.lang.Char", new QName(SCHEMA_NAMESPACE, "unsignedInt")); s_objectTypeMap.put("java.lang.Double", new QName(SCHEMA_NAMESPACE, "double")); s_objectTypeMap.put("java.lang.Float", new QName(SCHEMA_NAMESPACE, "float")); s_objectTypeMap.put("java.lang.Integer", new QName(SCHEMA_NAMESPACE, "int")); s_objectTypeMap.put("java.lang.Long", new QName(SCHEMA_NAMESPACE, "long")); s_objectTypeMap.put("java.lang.Short", new QName(SCHEMA_NAMESPACE, "short")); s_objectTypeMap.put("java.lang.String", STRING_QNAME); s_objectTypeMap.put("java.math.BigDecimal", new QName(SCHEMA_NAMESPACE, "decimal")); s_objectTypeMap.put("java.math.BigInteger", new QName(SCHEMA_NAMESPACE, "integer")); //#!j2me{ s_objectTypeMap.put("java.sql.Date", new QName(SCHEMA_NAMESPACE, "date")); s_objectTypeMap.put("java.sql.Time", new QName(SCHEMA_NAMESPACE, "time")); s_objectTypeMap.put("java.sql.Timestamp", new QName(SCHEMA_NAMESPACE, "dateTime")); //#j2me} s_objectTypeMap.put("java.util.Date", new QName(SCHEMA_NAMESPACE, "dateTime")); s_objectTypeMap.put("byte[]", new QName(SCHEMA_NAMESPACE, "base64")); } /** Set of primitive types mapped to schema types. */ private static HashMap s_primitiveTypeMap = new HashMap(); static { s_primitiveTypeMap.put("boolean", new QName(SCHEMA_NAMESPACE, "boolean")); s_primitiveTypeMap.put("byte", new QName(SCHEMA_NAMESPACE, "byte")); s_primitiveTypeMap.put("char", new QName(SCHEMA_NAMESPACE, "unsignedInt")); s_primitiveTypeMap.put("double", new QName(SCHEMA_NAMESPACE, "double")); s_primitiveTypeMap.put("float", new QName(SCHEMA_NAMESPACE, "float")); s_primitiveTypeMap.put("int", new QName(SCHEMA_NAMESPACE, "int")); s_primitiveTypeMap.put("long", new QName(SCHEMA_NAMESPACE, "long")); s_primitiveTypeMap.put("short", new QName(SCHEMA_NAMESPACE, "short")); } /** * Check if type represents a simple text value. * * @param type primitive type name, or fully qualified class name * @return simple value flag */ public static boolean isSimpleValue(String type) { return s_primitiveTypeMap.containsKey(type) || s_objectTypeMap.containsKey(type) || "void".equals(type); } /** * Get the schema type for a simple text value. * * @param type primitive type name, or fully qualified class name * @return schema type */ public static QName schemaType(String type) { QName stype = (QName)s_primitiveTypeMap.get(type); if (stype == null) { stype = (QName)s_objectTypeMap.get(type); } return stype; } }libjibx-java-1.1.6a/build/src/org/jibx/v2/0000755000175000017500000000000011023035620020032 5ustar moellermoellerlibjibx-java-1.1.6a/build/src/org/jibx/v2/BindingFactory.java0000644000175000017500000001311110752422660023610 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.v2; /** * Binding factory interface definition. This interface is implemented by the binding factory class generated by each * binding definition. All binding factory instances are guaranteed to be threadsafe and reusable. * * @author Dennis M. Sosnoski */ public interface BindingFactory { /** * Current binary version number. This is a byte-ordered value, allowing for two levels of major and two levels of * minor version. */ static final int CURRENT_VERSION_NUMBER = 0x02000000; /** Current distribution file name. This is filled in by the Ant build process to match the current distribution. */ static final String CURRENT_VERSION_NAME = "@distrib@"; /** Mask for portions of version number that effect compatibility. */ static final int COMPATIBLE_VERSION_MASK = 0xFFFF0000; /** * Creat instance of class for element name. This implements substitution group handling, by checking the current * element start tag name against the expected element name, and if they're not the same finding the appropriate * class based on the substitution group rooted on the expected element name (which must be a global element name). * * @param root global root element name, including namespace URI, in "lname{uri}" form * @param rdr reader * @param inst supplied instance of root element class or subclass (null if none) * @return instance of appropriate class to use for unmarshalling (may be the same as the provided instance) */ Object createElementInstance(String root, XmlReader rdr, Object inst); /** * Validate instance of class for type name. This implements type substitution handling, by checking for an override * xsi:type specification on the current element start tag, and if the type is different from the default finding * the appropriate class and returning an instance. * * @param dflt global default complexType name, including namespace URI, in "lname{uri}" form * @param rdr reader * @param inst supplied instance of default type class or subclass (null if none) * @return instance of appropriate class to use for unmarshalling (may be the same as the provided instance) */ Object createTypeInstance(String dflt, XmlReader rdr, Object inst); /** * Get namespaces defined in mapping. The returned array is indexed by the namespace index number used when * marshalling. * * @return array of namespaces defined in binding (null if not an output binding) */ String[] getNamespaces(); /** * Get initial prefixes for namespaces defined in mapping. The returned array is indexed by the namespace index * number used when marshalling. Note that these are only the first prefixes associated with each namespace; it's * possible to reuse the namespace in the binding with a different prefix. * * @return array of prefixes for namespaces defined in binding (null if not an output binding) */ String[] getPrefixes(); /** * Get mapped class names (or type names, in the case of abstract mappings). Returns array of fully-qualified class * and/or type names, ordered by index number of the class. * * @return array of class names */ String[] getMappedClasses(); /** * Get namespaces of elements corresponding to mapped classes. The returned array uses the same ordering as the * result of the {@link #getMappedClasses} call. Entries in the array are null if there is no element * for a class or the element is in the default namespace. * * @return array of element namespaces */ String[] getElementNamespaces(); /** * Get names of elements corresponding to mapped classes. The returned array uses the same ordering as the result of * the {@link #getMappedClasses} call. Entries in the array are null if there is no element for a * class. * * @return array of element names */ String[] getElementNames(); }libjibx-java-1.1.6a/build/src/org/jibx/v2/MappedElement.java0000644000175000017500000000056310752422660023435 0ustar moellermoellerpackage org.jibx.v2; import org.jibx.runtime.QName; /** * Interface implemented by all classes corresponding to schema global <element> definitions. */ public interface MappedElement extends MappedStructure { /** * Get the qualified name of the element used for this instance. * * @return qualified name */ QName _get_element_qname(); }libjibx-java-1.1.6a/build/src/org/jibx/v2/MappedStructure.java0000644000175000017500000000336210752422660024044 0ustar moellermoellerpackage org.jibx.v2; import org.jibx.runtime.JiBXException; /** * Interface implemented by all classes corresponding to global schema definitions and <complexType> definitions * (global or nested). This includes <attributeGroup> and <group> definitions, as well as global <attribute> * and <element> definitions. Besides the actual interface methods, classes which correspond to a complexType must * define an unmarshalling method public static ClassName _check_substituted(XmlReader, ClassName) to check * for type substitution, those which correspond to an element or group must define a method public static boolean * _is_present() to check if an optional instance of the element or group is present, and classes which * correspond to anything other than a complexType must define a public static ClassName * _check_instance(ClassName) method to return an instance of the class (where the supplied instance may be * null, or an instance of a subclass). */ public interface MappedStructure { /** * Marshal the structure representation. In the case of an <attribute>, <attributeGroup>, or <complexType> * structure the writer must be positioned on the element start tag at the time of this call. * * @param wrtr * @throws JiBXException */ void _marshal(XmlWriter wrtr) throws JiBXException; /** * Unmarshal the structure representation. In the case of an <attribute>, <attributeGroup>, or * <complexType> structure the reader must be positioned on the element start tag at the time of this call. * * @param rdr * @throws JiBXException */ void _unmarshal(XmlReader rdr) throws JiBXException; }libjibx-java-1.1.6a/build/src/org/jibx/v2/MappedType.java0000644000175000017500000000117310752422660022763 0ustar moellermoellerpackage org.jibx.v2; import org.jibx.runtime.QName; /** * Interface implemented by all classes corresponding to global <complexType> definitions when type substitution is * enabled. Besides the actual interface methods, classes also define a * public static ClassName _check_substituted(XmlReader, ClassName) method, which returns an * unmarshalled instance of the appropriate type, after taking type substitution into account. */ public interface MappedType extends MappedStructure { /** * Get the qualified name of this type. * * @return qualified name */ QName _get_type_qname(); }libjibx-java-1.1.6a/build/src/org/jibx/v2/ProblemLocation.java0000644000175000017500000000523710752422656024016 0ustar moellermoeller/* Copyright (c) 2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.v2; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.impl.ITrackSourceImpl; import org.jibx.runtime.impl.UnmarshallingContext; /** * Location of validation problem. An instance of this can be used in place of * an unmarshalled element in cases where the validation problem prevents the * creation of the element object. * TODO: move this out of the schema package, generalize * * @author Dennis M. Sosnoski */ public class ProblemLocation implements ITrackSourceImpl { private String m_document; private int m_line; private int m_column; /** * Constructor. This initializes the location information from the context. * * @param ictx */ public ProblemLocation(IUnmarshallingContext ictx) { ((UnmarshallingContext)ictx).trackObject(this); } public void jibx_setSource(String name, int line, int column) { m_document = name; m_line = line; m_column = column; } public int jibx_getColumnNumber() { return m_column; } public String jibx_getDocumentName() { return m_document; } public int jibx_getLineNumber() { return m_line; } }libjibx-java-1.1.6a/build/src/org/jibx/v2/SchemaValidationContext.java0000644000175000017500000000674110752422656025506 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.v2; import org.jibx.runtime.JiBXException; /** * Tracks the schema validation state. This includes order-dependent state information collected while walking the tree * structure of a schema model. Collects all errors and warnings and maintains a summary of the severity of the problems * found. For ease of use, this also wraps the schema name register with convenience methods for validation. * * @author Dennis M. Sosnoski */ public class SchemaValidationContext extends ValidationContext { private Object m_object; public void setObject(Object obj) { m_object = obj; } public void requiredPatternCheck(String name, String value, String pattern) throws JiBXException { if (value == null) { addError(name + " is missing (null)", m_object); } else { } } public void optionalPatternCheck(String name, String value, String pattern) throws JiBXException { if (value == null) { addError(name + " is missing (null)", m_object); } else { } } public void requiredLengthCheck(String name, String value, int min, int max) throws JiBXException { if (value == null) { addError(name + " is missing (null)", m_object); } else { int length = value.length(); if (length < min || length > max) { addError(name + " must be a minimum of " + min + " and a maximum of " + max + " characters (found " + length + " characters)", m_object); } } } public void optionalLengthCheck(String name, String value, int min, int max) throws JiBXException { if (value != null) { int length = value.length(); if (length < min || length > max) { addError(name + " must be a minimum of " + min + " and a maximum of " + max + " characters (found " + length + " characters)", m_object); } } } }libjibx-java-1.1.6a/build/src/org/jibx/v2/TrackSource.java0000644000175000017500000000465610752422656023156 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.v2; /** * Unmarshalling source tracking interface. This interface is added to bound classes when requested by the binding * definition. It allows the user to retrieve information about the location in the input document corresponding to an * unmarshalled object, if the parser used for unmarshalling supports reporting this information. * * @author Dennis M. Sosnoski */ public interface TrackSource { /** * Get source document name. * * @return name given for source document, or null if none */ String jibx_getDocumentName(); /** * Get source document line number. * * @return line number in source document, or -1 if unknown */ int jibx_getLineNumber(); /** * Get source document column number. * * @return column number in source document, or -1 if unknown */ int jibx_getColumnNumber(); }libjibx-java-1.1.6a/build/src/org/jibx/v2/ValidationContext.java0000644000175000017500000001652310752422660024357 0ustar moellermoeller/* * Copyright (c) 2006-2007, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.v2; import java.util.ArrayList; import java.util.HashSet; import java.util.Set; import org.jibx.runtime.JiBXException; import org.jibx.schema.ISkipElements; import org.jibx.schema.elements.SchemaBase; /** * Tracks the schema validation state. This includes order-dependent state information collected while walking the tree * structure of a schema model. Collects all errors and warnings and maintains a summary of the severity of the problems * found. For ease of use, this also wraps the schema name register with convenience methods for validation. * * @author Dennis M. Sosnoski */ public class ValidationContext implements ISkipElements { /** Number of warnings reported. */ private int m_warningCount; /** Number of errors reported. */ private int m_errorCount; /** Number of fatals reported. */ private int m_fatalCount; /** List of problem items reported by validation. */ private ArrayList m_problemList; /** Set of elements to be skipped in walking tree. */ private Set m_skipSet; /** Flag for errors to be ignored. */ private boolean m_continueOnError; /** * Constructor. */ public ValidationContext() { m_problemList = new ArrayList(); m_skipSet = new HashSet(); } /** * Get number of warning problems reported. * * @return warning problem count */ public int getWarningCount() { return m_warningCount; } /** * Get number of error problems reported. * * @return error problem count */ public int getErrorCount() { return m_errorCount; } /** * Get number of fatal problems reported. * * @return fatal problem count */ public int getFatalCount() { return m_fatalCount; } /** * Add warning item. Adds a warning item to the problem list, which is a possible problem that still allows * reasonable operation. * * @param msg problem description * @param obj source object for validation error * @throws JiBXException on unrecoverable error */ public void addWarning(String msg, Object obj) throws JiBXException { addProblem(new ValidationProblem(ValidationProblem.WARNING_LEVEL, msg, obj)); } /** * Add error item. Adds an error item to the problem list, which is a definite problem that still allows validation * to proceed. * * @param msg problem description * @param obj source object for validation error * @return true if to continue validation, false if not * @throws JiBXException on unrecoverable error */ public boolean addError(String msg, Object obj) throws JiBXException { addProblem(new ValidationProblem(ValidationProblem.ERROR_LEVEL, msg, obj)); return true; } /** * Add fatal item. Adds a fatal item to the problem list, which is a severe problem that blocks further validation * within the tree branch involved. The object associated with a fatal error should always be an element. * * @param msg problem description * @param obj source object for validation error (should be an element) * @throws JiBXException on unrecoverable error */ public void addFatal(String msg, Object obj) throws JiBXException { addProblem(new ValidationProblem(ValidationProblem.FATAL_LEVEL, msg, obj)); } /** * Add problem report. The problem is added and counted as appropriate. * * @param problem details of problem report * @throws JiBXException on unrecoverable error */ public void addProblem(ValidationProblem problem) throws JiBXException { m_problemList.add(problem); switch (problem.getSeverity()) { case ValidationProblem.ERROR_LEVEL: m_errorCount++; break; case ValidationProblem.FATAL_LEVEL: m_fatalCount++; addSkip(problem.getComponent()); throw new JiBXException("Unrecoverable error " + problem.getDescription()); case ValidationProblem.WARNING_LEVEL: m_warningCount++; break; } } /** * Get list of problems. * * @return problem list */ public ArrayList getProblems() { return m_problemList; } /** * Add element to set to be skipped. * * @param skip */ protected void addSkip(Object skip) { if (skip instanceof SchemaBase) { m_skipSet.add(skip); } } // // ISkipElements implementation /* * (non-Javadoc) * * @see org.jibx.schema.ISkipElements#isSkipped(java.lang.Object) */ public boolean isSkipped(Object obj) { return m_skipSet.contains(obj); } // so what kinds of errors need to be handled? there's the obvious, like missing element when unmarshalling, data // conversion error, etc. - but how specific do I want to make the handling? can I come up with a small number of // specific errors that I can add directly to the context? missing element, for instance, should give the actual // element name. do I want to build in XPath-like navigation, too? could kind of do this when marshalling or // unmarshalling, since I have the path information, but that leaves the issue of position in a collection. should // I optionally implement a generic collection approach for the generated classes? to support full XPath I'd need // to create methods to handle attribute and child element lookup by name, which might be not too difficult. public void handleMissingElement() throws JiBXException { if (m_continueOnError) { addError(""); } } }libjibx-java-1.1.6a/build/src/org/jibx/v2/ValidationProblem.java0000644000175000017500000001117710752422656024340 0ustar moellermoeller/* * Copyright (c) 2006-2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.v2; import org.jibx.runtime.ITrackSource; import org.jibx.runtime.ValidationException; import org.jibx.schema.elements.SchemaBase; /** * Problem reported by validation. Provides the details for a specific problem item. * * @author Dennis M. Sosnoski */ public class ValidationProblem { // severity levels public static final int FATAL_LEVEL = 0; public static final int ERROR_LEVEL = 1; public static final int WARNING_LEVEL = 2; public static final int UNIMPLEMENTED_LEVEL = 3; // users can add their own specific severity levels /** Problem severity level. */ private final int m_severity; /** Description of problem found. */ private final String m_description; /** Component that reported problem. */ private final Object m_component; /** * Full constructor. * * @param level severity level of problem * @param msg problem description * @param obj source object for validation error (may be null if not specific to a particular * component) */ /* package */ValidationProblem(int level, String msg, Object obj) { m_severity = level; if (obj == null) { m_description = msg; } else { m_description = msg + " for " + componentDescription(obj); } m_component = obj; } /** * Create description text for a component of a binding definition. * * @param obj binding definition component * @return component description */ public static String componentDescription(Object obj) { StringBuffer buff = new StringBuffer(); if (obj instanceof TrackSource) { buff.append(((SchemaBase)obj).name()); buff.append(" element"); } else if (!(obj instanceof ProblemLocation)) { String cname = obj.getClass().getName(); int split = cname.lastIndexOf('.'); if (split >= 0) { cname = cname.substring(split + 1); } buff.append(cname); } if (obj instanceof ITrackSource) { buff.append(" at "); buff.append(ValidationException.describe(obj)); } else { buff.append(" at unknown location"); } return buff.toString(); } /** * Constructor using default (error) severity level. * * @param msg problem description * @param obj source object for validation error */ /* package */ValidationProblem(String msg, Object obj) { this(ERROR_LEVEL, msg, obj); } /** * Get the main binding definition item for the problem. * * @return element or attribute at root of problem */ public Object getComponent() { return m_component; } /** * Get problem description. * * @return problem description */ public String getDescription() { return m_description; } /** * Get problem severity level. * * @return severity level for problem */ public int getSeverity() { return m_severity; } }libjibx-java-1.1.6a/build/src/org/jibx/v2/XmlReader.java0000644000175000017500000005651310752422660022606 0ustar moellermoeller/* * Copyright (c) 2005-2007, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.v2; import java.math.BigDecimal; import java.math.BigInteger; import java.util.Date; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.UnmarshallingContext; /** * XML reader interface used for input to the unmarshalling code. This interface allows easy substitution of different * parsers or other input sources. * * @author Dennis M. Sosnoski */ public interface XmlReader { // // Event types reported by nextEvent() method static final int START_DOCUMENT = 0; static final int END_DOCUMENT = 1; static final int START_TAG = 2; static final int END_TAG = 3; static final int TEXT = 4; static final int CDSECT = 5; static final int ENTITY_REF = 6; static final int IGNORABLE_WHITESPACE = 7; static final int PROCESSING_INSTRUCTION = 8; static final int COMMENT = 9; static final int DOCDECL = 10; /** * Get the current validation context for this reader. The validation context is used both for tracking problems, * and to determine the appropriate handling when a problem occurs. * * @return context */ ValidationContext getValidationContext(); /** * Push a validation context on this reader. The supplied validation context is popped after processing the end tag * for the current element. * * @param vctx context */ void pushValidationContext(ValidationContext vctx); /** * Get the unmarshalling context associated with this reader. The unmarshalling context tracks higher-level * information about the conversion of XML into a Java object structure. * * @return context */ UnmarshallingContext getBindingContext(); /** * Build current parse input position description. * * @return text description of current parse position */ String buildPositionString(); /** * Advance to next parse event of input document. * * @return parse event type code * @throws JiBXException if error reading or parsing document */ int nextToken() throws JiBXException; /** * Advance to next binding component of input document. This is a higher-level operation than {@link #nextToken()}, * which consolidates text content and ignores parse events for components such as comments and PIs. * * @return parse event type code * @throws JiBXException if error reading or parsing document */ int next() throws JiBXException; /** * Gets the current parse event type, without changing the current parse state. * * @return parse event type code * @throws JiBXException if error parsing document */ int getEventType() throws JiBXException; /** * Get element name from the current start or end tag. * * @return local name if namespace handling enabled, full name if namespace handling disabled * @throws IllegalStateException if not at a start or end tag (optional) */ String getName(); /** * Get element namespace from the current start or end tag. * * @return namespace URI if namespace handling enabled and element is in a namespace, empty string otherwise * @throws IllegalStateException if not at a start or end tag (optional) */ String getNamespace(); /** * Get element prefix from the current start or end tag. * * @return prefix text (null if no prefix) * @throws IllegalStateException if not at a start or end tag */ String getPrefix(); /** * Set the implicit namespace used for elements unless otherwise specified. * * @param ns namespace URI for element (may be the empty string for the no-namespace namespace) * @return prior implicit namespace */ String setImplicitNamespace(String ns); /** * Advance to a start or end tag, and verify it is the named start tag in the implicit namespace. * * @param name element name * @return true if tag found, false if not (recoverable error case) * @throws JiBXException on unrecoverable error */ boolean requireStartTag(String name) throws JiBXException; /** * Advance to a start or end tag, and verify it is the named start tag. * * @param ns namespace URI for element (may be the empty string for the no-namespace namespace) * @param name element name * @return true if tag found, false if not (exception not thrown) * @throws JiBXException on unrecoverable error */ boolean requireStartTag(String ns, String name) throws JiBXException; /** * Advance to a start or end tag, and check if it is the named start tag in the implicit namespace. * * @param name element name * @return true if match, false if not * @throws JiBXException on unrecoverable error */ boolean checkStartTag(String name) throws JiBXException; /** * Advance to a start or end tag, and verify it is the named start tag. * * @param ns namespace URI for element (may be the empty string for the no-namespace namespace) * @param name element name * @return true if match, false if not * @throws JiBXException on unrecoverable error */ boolean checkStartTag(String ns, String name) throws JiBXException; /** * Advance to the next start or end tag, and verify it is the close tag for the current open element. * * @throws JiBXException on unrecoverable error */ void requireEndTag() throws JiBXException; /** * Get current element text. This is only valid with an open start tag, and reads past the text content of the * element, leaving the reader positioned on the next element start or end tag following the text. * * @return text for current element (may be null, in the case of a recoverable error) * @throws IllegalStateException if not at a start tag * @throws JiBXException on unrecoverable error */ String getElementText() throws JiBXException; /** * Get current text. When positioned on a TEXT event this returns the actual text; for CDSECT it returns the text * inside the CDATA section; for COMMENT, DOCDECL, or PROCESSING_INSTRUCTION it returns the text inside the * structure. * * @return text for current event (may be null, in the case of a recoverable error) * @throws JiBXException on unrecoverable error */ String getText() throws JiBXException; /** * Get the number of attributes of the current start tag. * * @return number of attributes * @throws IllegalStateException if not at a start tag (optional) */ int getAttributeCount(); /** * Get an attribute name from the current start tag. * * @param index attribute index * @return local name if namespace handling enabled, full name if namespace handling disabled * @throws IllegalStateException if not at a start tag or invalid index */ String getAttributeName(int index); /** * Get an attribute namespace from the current start tag. * * @param index attribute index * @return namespace URI if namespace handling enabled and attribute is in a namespace, empty string otherwise * @throws IllegalStateException if not at a start tag or invalid index */ String getAttributeNamespace(int index); /** * Get an attribute prefix from the current start tag. * * @param index attribute index * @return prefix for attribute (null if no prefix present) * @throws IllegalStateException if not at a start tag or invalid index */ String getAttributePrefix(int index); /** * Get the index of a no-namespace attribute from the current start tag. * * @param name attribute name * @return attribute index (-1 if not found) * @throws IllegalStateException if not at a start tag */ int getAttributeIndex(String name); /** * Get the index of an attribute from the current start tag. * * @param ns namespace URI for attribute (may be the empty string for the no-namespace namespace) * @param name attribute name * @return attribute index (-1 if not found) * @throws IllegalStateException if not at a start tag */ int getAttributeIndex(String ns, String name); /** * Get a required text attribute value from the current start tag. * * @param index attribute index (error if negative) * @return value text (may be null, in the case of a recoverable error) * @throws IllegalStateException if not at a start tag or invalid index * @throws JiBXException on unrecoverable error */ String getAttributeText(int index) throws JiBXException; /** * Read a required text attribute value from the current start tag with whitespace collapsed. * * @param index attribute index (error if negative) * @return value text (may be null, in the case of a recoverable error) * @throws IllegalStateException if not at a start tag or invalid index * @throws JiBXException on unrecoverable error */ String getAttributeCollapsed(int index) throws JiBXException; /** * Read an optional text attribute value from the current start tag. * * @param name attribute name * @return value text, null if attribute not present * @throws IllegalStateException if not at a start tag or invalid index */ String getOptionalAttributeText(String name); /** * Read an optional text attribute value from the current start tag. * * @param ns namespace URI for attribute (may be the empty string for the no-namespace namespace) * @param name attribute name * @return value text, null if attribute not present * @throws IllegalStateException if not at a start tag or invalid index */ String getOptionalAttributeText(String ns, String name); /** * Read a required text attribute value from the current start tag. * * @param name attribute name * @return value text, null if attribute not present and recoverable error * @throws JiBXException if attribute not present and unrecoverable error * @throws IllegalStateException if not at a start tag or invalid index */ String getRequiredAttributeText(String name) throws JiBXException; /** * Read a required text attribute value from the current start tag. * * @param ns namespace URI for attribute (may be the empty string for the no-namespace namespace) * @param name attribute name * @return value text, null if attribute not present and recoverable error * @throws JiBXException if attribute not present and unrecoverable error * @throws IllegalStateException if not at a start tag or invalid index */ String getRequiredAttributeText(String ns, String name) throws JiBXException; /** * Select the current text content for conversion. * * @throws JiBXException on unrecoverable error */ void selectText() throws JiBXException; /** * Select an attribute value from the current start tag as text for conversion. * * @param index attribute index (error if negative) * @throws IllegalStateException if not at a start tag or invalid index * @throws JiBXException on unrecoverable error */ void selectAttribute(int index) throws JiBXException; /** * Select an optional no-namespace attribute value from the current start tag as text for conversion. * * @param name attribute name * @return true if attribute present, false if not * @throws IllegalStateException if not at a start tag */ boolean selectOptionalAttribute(String name); /** * Select a required no-namespace attribute value from the current start tag as text for conversion. * * @param name attribute name * @throws IllegalStateException if not at a start tag * @throws JiBXException on unrecoverable error */ void selectRequiredAttribute(String name) throws JiBXException; /** * Select an optional attribute value from the current start tag as text for conversion. * * @param ns namespace URI for attribute (may be the empty string for the no-namespace namespace) * @param name attribute name * @return true if attribute present, false if not * @throws IllegalStateException if not at a start tag */ boolean selectOptionalAttribute(String ns, String name); /** * Select a required attribute value from the current start tag as text for conversion. * * @param ns namespace URI for attribute (may be the empty string for the no-namespace namespace) * @param name attribute name * @throws IllegalStateException if not at a start tag * @throws JiBXException on unrecoverable error */ void selectRequiredAttribute(String ns, String name) throws JiBXException; /** * Convert a String value from the current source selection. This is an empty conversion, which always * just returns the text. * * @return text (null if selection missing) * @throws JiBXException if unrecoverable conversion error */ String convertString() throws JiBXException; /** * Convert an int value from the current source selection. This always uses whitespace collapsed * processing. * * @return converted value (0 if selection missing or in error) * @throws JiBXException if unrecoverable conversion error */ int convertIntPrimitive() throws JiBXException; /** * Convert an Integer value from the current source selection. This always uses whitespace collapsed * processing. * * @return converted value (null if selection missing or in error) * @throws JiBXException if unrecoverable conversion error */ Integer convertInteger() throws JiBXException; /** * Convert a long value from the current source selection. This always uses whitespace collapsed * processing. * * @return converted value (0 if selection missing or in error) * @throws JiBXException if unrecoverable conversion error */ long convertLongPrimitive() throws JiBXException; /** * Convert a Long value from the current source selection. This always uses whitespace collapsed * processing. * * @return converted value (null if selection missing or in error) * @throws JiBXException if unrecoverable conversion error */ Long convertLong() throws JiBXException; /** * Convert a float value from the current source selection. This always uses whitespace collapsed * processing. * * @return converted value (0 if selection missing or in error) * @throws JiBXException if unrecoverable conversion error */ long convertFloatPrimitive() throws JiBXException; /** * Convert a Float value from the current source selection. This always uses whitespace collapsed * processing. * * @return converted value (null if selection missing or in error) * @throws JiBXException if unrecoverable conversion error */ Long convertFloat() throws JiBXException; /** * Convert a boolean value from the current source selection. This always uses whitespace collapsed * processing. * * @return converted value (false if selection missing or in error) * @throws JiBXException if unrecoverable conversion error */ long convertBooleanPrimitive() throws JiBXException; /** * Convert a Boolean value from the current source selection. This always uses whitespace collapsed * processing. * * @return converted value (null if selection missing or in error) * @throws JiBXException if unrecoverable conversion error */ Long convertBoolean() throws JiBXException; /** * Convert a byte[] value from the current source selection using base64Binary encoding. This always * uses whitespace collapsed processing. * * @return converted value (null if selection missing or in error) * @throws JiBXException if unrecoverable conversion error */ byte[] convertBase64() throws JiBXException; /** * Convert a Date value from the current source selection. This always uses whitespace collapsed * processing. * * @return converted value (null if selection missing or in error) * @throws JiBXException if unrecoverable conversion error */ Date convertDateTime() throws JiBXException; /** * Convert a BigDecimal value from the current source selection. This always uses whitespace * collapsed processing. * * @return converted value (null if selection missing or in error) * @throws JiBXException if unrecoverable conversion error */ BigDecimal convertBigDecimal() throws JiBXException; /** * Convert a BigInteger value from the current source selection. This always uses whitespace * collapsed processing. * * @return converted value (null if selection missing or in error) * @throws JiBXException if unrecoverable conversion error */ BigInteger convertBigInteger() throws JiBXException; /** * Read current element text. This is only valid with an open start tag, and reads past the corresponding end tag * after reading the value. * * @return text for current event * @throws IllegalStateException if not at a start tag or invalid index */ String readText(); /** * Creat instance of class for element name. This implements substitution group handling, by checking the current * element start tag name against the expected element name, and if they're not the same finding the appropriate * class based on the substitution group rooted on the expected element name (which must be a global element name). * * @param root global root element name, including namespace URI, in "lname{uri}" form * @param rdr reader * @param inst supplied instance of root element class or subclass (null if none) * @return instance of appropriate class to use for unmarshalling (may be the same as the provided instance) */ Object createElementInstance(String root, XmlReader rdr, Object inst); /** * Validate instance of class for type name. This implements type substitution handling, by checking for an override * xsi:type specification on the current element start tag, and if the type is different from the default finding * the appropriate class. * * @param dflt global default complexType name, including namespace URI, in "lname{uri}" form * @param rdr reader * @param inst supplied instance of default type class or subclass (null if none) * @return instance of appropriate class to use for unmarshalling (may be the same as the provided instance) */ Object createTypeInstance(String dflt, XmlReader rdr, Object inst); /** * Get current element nesting depth. The returned depth always includes the current start or end tag (if positioned * on a start or end tag). * * @return element nesting depth */ int getNestingDepth(); /** * Get number of namespace declarations active at depth. * * @param depth element nesting depth * @return number of namespaces active at depth * @throws IllegalArgumentException if invalid depth */ int getNamespaceCount(int depth); /** * Get namespace URI. * * @param index declaration index * @return namespace URI * @throws IllegalArgumentException if invalid index */ String getNamespaceUri(int index); /** * Get namespace prefix. * * @param index declaration index * @return namespace prefix, null if a default namespace * @throws IllegalArgumentException if invalid index */ String getNamespacePrefix(int index); /** * Get document name. * * @return document name, null if not known */ String getDocumentName(); /** * Get current source line number. * * @return line number from source document, -1 if line number information not available */ int getLineNumber(); /** * Get current source column number. * * @return column number from source document, -1 if column number information not available */ int getColumnNumber(); /** * Get namespace URI associated with prefix. * * @param prefix to be found * @return associated URI (null if prefix not defined) */ String getNamespace(String prefix); /** * Return the input encoding, if known. This is only valid after parsing of a document has been started. * * @return input encoding (null if unknown) */ String getInputEncoding(); /** * Return namespace processing flag. * * @return namespace processing flag (true if namespaces are processed by reader, false * if not) */ boolean isNamespaceAware(); }libjibx-java-1.1.6a/build/src/org/jibx/v2/XmlWriter.java0000644000175000017500000005354310752422656022665 0ustar moellermoeller/* * Copyright (c) 2004-2007, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.v2; import java.math.BigDecimal; import java.math.BigInteger; import java.util.Date; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.MarshallingContext; /** * XML writer interface used for output of marshalled document. This interface allows easy substitution of different * output formats, including parse event stream equivalents. This makes heavy use of state information, so each method * call defined is only valid in certain states. * * @author Dennis M. Sosnoski */ public interface XmlWriter { /** * Get the marshalling context associated with this writer. The marshalling context tracks higher-level information * about the conversion of XML into a Java object structure. * * @return context */ MarshallingContext getContext(); /** * Get the current validation context for this writer. The validation context is used both for tracking problems, * and to determine the appropriate handling when a problem occurs. * * @return context */ ValidationContext getValidationContext(); /** * Get the current element nesting depth. Elements are only counted in the depth returned when they're officially * open - after the start tag has been output and before the end tag has been output. * * @return number of nested elements at current point in output */ int getNestingDepth(); /** * Get the number of namespaces currently defined. This is equivalent to the index of the next extension namespace * added. * * @return namespace count */ int getNamespaceCount(); /** * Set nesting indentation. This is advisory only, and implementations of this interface are free to ignore it. The * intent is to indicate that the generated output should use indenting to illustrate element nesting. * * @param count number of character to indent per level, or disable indentation if negative (zero means new line * only) * @param newline sequence of characters used for a line ending (null means use the single character * '\n') * @param indent whitespace character used for indentation */ void setIndent(int count, String newline, char indent); /** * Set attribute double-quote character usage. If this is true, the double-quote (") character is * preferred for attribute values; if false (the default), the single-quote (') character is preferred. * This setting is advisory only, and implementations of this interface are free to ignore it. * * @param prefdbl prefer double-quote flag */ void setAttributeDoubleQuote(boolean prefdbl); /** * Set boolean numeric value usage. If this is true, numeric values ('0' and '1') are preferred for * boolean values; if false (the default), text values ('false' and 'true') are preferred. This setting * is advisory only, and implementations of this interface are free to ignore it. * * @param prefnum prefer numeric boolean value flag */ void setBooleanNumeric(boolean prefnum); /** * Set the implicit namespace used for elements unless otherwise specified. The namespace must have been opened * prior to this call. * * @param ns namespace URI for element (may be the empty string for the no-namespace namespace) * @return prior implicit namespace */ String setImplicitNamespace(String ns); /** * Write the start tag for an element in the implicit namespace. * * @param name element name * @throws JiBXException on unrecoverable error */ void startTag(String name) throws JiBXException; /** * Write the start tag for an element. * * @param ns namespace URI for element (may be the empty string for the no-namespace namespace) * @param name unqualified element name * @throws JiBXException on unrecoverable error */ void startTag(String ns, String name) throws JiBXException; /** * Declare a namespace, make it the implicit namespace, and write the start tag for an element in that namespace. * This is just a shortcut for the sequence of calls {@link #openNamespace(String, String)}, {@link * #setImplicitNamespace(String)}, {@link #startTag(String)}. * * @param ns namespace URI for element (may be the empty string for the no-namespace namespace) * @param prefix prefix to be used for the namespace (use "" for default namespace declaration) * @param name unqualified element name * @throws JiBXException on unrecoverable error */ void startTagImplicit(String ns, String prefix, String name) throws JiBXException; /** * Add a namespace declaration to the next element start tag. If the namespace is already open this call does * nothing. * * @param ns namespace URI (may be the empty string for the no-namespace namespace) * @param prefix prefix to be used for the namespace (use "" for default namespace declaration) * @throws JiBXException on unrecoverable error */ void openNamespace(String ns, String prefix) throws JiBXException; /** * Add no-namespace text attribute to current open start tag. This is only valid with an open start tag. * * @param name unqualified attribute name * @param value text value for attribute * @throws JiBXException on unrecoverable error */ void addTextAttribute(String name, String value) throws JiBXException; /** * Add text attribute to current open start tag. This is only valid with an open start tag. * * @param ns namespace URI (may be the empty string for the no-namespace namespace) * @param name unqualified attribute name * @param value text value for attribute * @throws JiBXException on unrecoverable error */ void addTextAttribute(String ns, String name, String value) throws JiBXException; /** * Add optional no-namespace text attribute to current open start tag. This is only valid with an open start tag. * * @param name unqualified attribute name * @param value text value for attribute (null if no value) * @throws JiBXException on unrecoverable error */ void addOptionalTextAttribute(String name, String value) throws JiBXException; /** * Add optional text attribute to current open start tag. This is only valid with an open start tag. * * @param ns namespace URI (may be the empty string for the no-namespace namespace) * @param name unqualified attribute name * @param value text value for attribute (null if no value) * @throws JiBXException on unrecoverable error */ void addOptionalTextAttribute(String ns, String name, String value) throws JiBXException; /** * Select text content as the destination for a conversion. * * @throws JiBXException on unrecoverable error */ void selectContent() throws JiBXException; /** * Select a child element in the implicit namespace as the destination for a conversion. * * @param name element name * @throws JiBXException on unrecoverable error */ void selectContent(String name) throws JiBXException; /** * Select a child element as the destination for a conversion. * * @param ns namespace URI (may be the empty string for the no-namespace namespace) * @param name element name * @throws JiBXException on unrecoverable error */ void selectContent(String ns, String name) throws JiBXException; /** * Select a no-namespace attribute as the destination for a conversion. This is only valid with an open start tag. * * @param name unqualified attribute name * @throws JiBXException on unrecoverable error */ void selectAttribute(String name) throws JiBXException; /** * Select an attribute as the destination for a conversion. This is only valid with an open start tag. * * @param ns namespace URI (may be the empty string for the no-namespace namespace) * @param name unqualified attribute name * @throws JiBXException on unrecoverable error */ void selectAttribute(String ns, String name) throws JiBXException; /** * Write a String value to the current text selection. * * @param value * @throws JiBXException on unrecoverable error */ void convert(String value) throws JiBXException; /** * Write an int value to the current text selection. * * @param value * @throws JiBXException on unrecoverable error */ void convert(int value) throws JiBXException; /** * Write a long value to the current text selection. * * @param value * @throws JiBXException on unrecoverable error */ void convert(long value) throws JiBXException; /** * Write a float value to the current text selection. * * @param value * @throws JiBXException on unrecoverable error */ void convert(float value) throws JiBXException; /** * Write a double value to the current text selection. * * @param value * @throws JiBXException on unrecoverable error */ void convert(double value) throws JiBXException; /** * Write a boolean value to the current text selection. * * @param value * @throws JiBXException on unrecoverable error */ void convert(boolean value) throws JiBXException; /** * Write a byte[] value to the current text selection using base64Binary encoding. * * @param value attribute value * @throws JiBXException on unrecoverable error */ void convert(byte[] value) throws JiBXException; /** * Write a long milliseconds time value to the current text selection as an xsd:dateTime. * * @param value * @throws JiBXException on unrecoverable error */ void convertDateTime(long value) throws JiBXException; /** * Write a long milliseconds time value and associated nanosecond count to the current text selection * as an xsd:dateTime. * * @param value * @param nanos * @throws JiBXException on unrecoverable error */ void convertDateTime(long value, int nanos) throws JiBXException; /** * Write a long milliseconds time value to the current text selection as an xsd:date. * * @param value * @throws JiBXException on unrecoverable error */ void convertDate(long value) throws JiBXException; /** * Write a long milliseconds time value to the current text selection as an xsd:time. * * @param value * @throws JiBXException on unrecoverable error */ void convertTime(long value) throws JiBXException; /** * Write a long milliseconds time value and associated nanosecond count to the current text selection * as an xsd:time. * * @param value * @param nanos * @throws JiBXException on unrecoverable error */ void convertTime(long value, int nanos) throws JiBXException; /** * Write a qualified name value to the current text selection. The qualified name is presented as a pair consisting * of namespace URI and local name in order to allow flexible use. * * @param ns namespace URI (empty string if no-namespace namespace) * @param name local name * @throws JiBXException on unrecoverable error */ void convertQName(String ns, String name) throws JiBXException; /** * Write a BigDecimal value to the current text selection. * * @param value (non-null) * @throws JiBXException on unrecoverable error */ void convert(BigDecimal value) throws JiBXException; /** * Write a BigInteger value to the current text selection. * * @param value (non-null) * @throws JiBXException on unrecoverable error */ void convert(BigInteger value) throws JiBXException; /** * Write a text value as the content of the current element. This writes the corresponding end tag after writing the * value. * * @param value content value * @throws JiBXException on unrecoverable error */ void addText(String value) throws JiBXException; /** * Write end tag for current open element. * * @throws JiBXException on unrecoverable error */ void endTag() throws JiBXException; /** * Handle a missing required element value from the implicit namespace in the generated document. * * @param name * @throws JiBXException on unrecoverable error */ void handleMissingElement(String name) throws JiBXException; /** * Handle a missing required element value in the generated document. * * @param ns * @param name * @throws JiBXException on unrecoverable error */ void handleMissingElement(String ns, String name) throws JiBXException; /** * Handle a missing required attribute value from the implicit namespace in the generated document. * * @param name * @throws JiBXException on unrecoverable error */ void handleMissingAttribute(String name) throws JiBXException; /** * Handle a missing required attribute value in the generated document. * * @param ns * @param name * @throws JiBXException on unrecoverable error */ void handleMissingAttribute(String ns, String name) throws JiBXException; /** * Write XML declaration to document. This can only be called before any other methods in the interface are called. * * @param version XML version text * @param encoding text for encoding attribute (unspecified if null) * @param standalone text for standalone attribute (unspecified if null) * @throws JiBXException on error writing to document */ void writeXMLDecl(String version, String encoding, String standalone) throws JiBXException; /** * Write ordinary character data text content to document. * * @param text content value text (must not be null) * @throws JiBXException on error writing to document */ void writeTextContent(String text) throws JiBXException; /** * Write CDATA text to document. * * @param text content value text (must not be null) * @throws JiBXException on error writing to document */ void writeCData(String text) throws JiBXException; /** * Write comment to document. * * @param text comment text (must not be null) * @throws JiBXException on error writing to document */ void writeComment(String text) throws JiBXException; /** * Write entity reference to document. * * @param name entity name (must not be null) * @throws JiBXException on error writing to document */ void writeEntityRef(String name) throws JiBXException; /** * Write DOCTYPE declaration to document. * * @param name root element name * @param sys system ID (null if none, must be non-null for ID to be used) * @param pub ID (null if none) * @param subset internal subset (null if none) * @throws JiBXException on error writing to document */ void writeDocType(String name, String sys, String pub, String subset) throws JiBXException; /** * Write processing instruction to document. * * @param target processing instruction target name (must not be null) * @param data processing instruction data (must not be null) * @throws JiBXException on error writing to document */ void writePI(String target, String data) throws JiBXException; /** * Request output indent. The writer implementation should normally indent output as appropriate. This method can be * used to request indenting of output that might otherwise not be indented. The normal effect when used with a * text-oriented writer should be to output the appropriate line end sequence followed by the appropriate number of * indent characters for the current nesting level. * * @throws JiBXException on error writing to document */ void indent() throws JiBXException; /** * Flush document output. Writes any buffered data to the output medium. This does not flush the output * medium itself, only any internal buffering within the writer. * * @throws JiBXException on error writing to document */ void flush() throws JiBXException; /** * Close document output. Completes writing of document output, including flushing and closing the output medium. * * @throws JiBXException on error writing to document */ void close() throws JiBXException; /** * Reset to initial state for reuse. The context is serially reusable, as long as this method is called to clear any * retained state information between uses. It is automatically called when output is set. */ void reset(); /** * Get namespace URIs for mapping. This gets the full ordered array of namespaces known in the binding used for this * marshalling, where the index number of each namespace URI is the namespace index used to lookup the prefix when * marshalling a name in that namespace. The returned array must not be modified. * * @return array of namespaces */ String[] getNamespaces(); /** * Get URI for namespace. * * @param index namespace URI index number * @return namespace URI text, or null if the namespace index is invalid */ String getNamespaceUri(int index); /** * Get current prefix defined for namespace. * * @param index namespace URI index number * @return current prefix text, or null if the namespace is not currently mapped */ String getNamespacePrefix(int index); /** * Get index of namespace mapped to prefix. This can be an expensive operation with time proportional to the number * of namespaces defined, so it should be used with care. * * @param prefix text to match (non-null, use "" for default prefix) * @return index namespace URI index number mapped to prefix */ int getPrefixIndex(String prefix); /** * Append extension namespace URIs to those in mapping. * * @param uris namespace URIs to extend those in mapping */ void pushExtensionNamespaces(String[] uris); /** * Remove extension namespace URIs. This removes the last set of extension namespaces pushed using * {@link #pushExtensionNamespaces}. */ void popExtensionNamespaces(); /** * Get extension namespace URIs added to those in mapping. This gets the current set of extension definitions. The * returned arrays must not be modified. * * @return array of arrays of extension namespaces (null if none) */ String[][] getExtensionNamespaces(); /** * Open the specified namespaces for use. This method is normally only called internally, when namespace * declarations are actually written to output. It is exposed as part of this interface to allow for special * circumstances where namespaces are being written outside the usual processing. The namespaces will remain open * for use until the current element is closed. * * @param nums array of namespace indexes defined by this element (must be constant, reference is kept until * namespaces are closed) * @param prefs array of namespace prefixes mapped by this element (no null values, use "" for * default namespace declaration) * @return array of indexes for namespaces not previously active (the ones actually needing to be declared, in the * case of text output) * @throws JiBXException on error writing to document */ int[] openNamespaces(int[] nums, String[] prefs) throws JiBXException; }libjibx-java-1.1.6a/build/src/org/jibx/ws/0000755000175000017500000000000011021525452020141 5ustar moellermoellerlibjibx-java-1.1.6a/build/src/org/jibx/ws/wsdl/0000755000175000017500000000000011023035622021107 5ustar moellermoellerlibjibx-java-1.1.6a/build/src/org/jibx/ws/wsdl/CollectionValueCustom.java0000644000175000017500000001003110651200546026235 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.ws.wsdl; import java.util.List; import org.jibx.binding.generator.CustomBase; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; /** * Method parameter or return collection value customization information. * * @author Dennis M. Sosnoski */ public class CollectionValueCustom extends ValueCustom { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "item-element-name", "item-type" }, ValueCustom.s_allowedAttributes); // value customization information private String m_itemType; private String m_itemName; /** * Constructor. * * @param parent * @param name */ protected CollectionValueCustom(NestingBase parent, String name) { super(parent, name); } /** * Make sure all attributes are defined. * * @param uctx unmarshalling context */ private void preSet(IUnmarshallingContext uctx) { validateAttributes(uctx, s_allowedAttributes); } /** * Get item type for collection. This method should only be used after the * {@link #complete(String, String, List, Boolean)} method is called. * * @return collection item type, null if not a collection */ public String getItemType() { return m_itemType; } /** * Get name for elements representing items in collection. This method should only be used after the * {@link #complete(String, String, List, Boolean)} method is called. * * @return collection item type, null if not a collection */ public String getItemElementName() { return m_itemName; } /** * Complete customization information based on supplied type. If the type information has not previously been set, * this will set it. It will also derive the appropriate XML name, if not previously set. * * @param type * @param itype * @param docs default documentation node list (null if none) * @param req required member flag (null if unknown) */ /* package */void complete(String type, String itype, List docs, Boolean req) { if (m_itemType == null) { m_itemType = itype; } complete(type, docs, req); if (m_itemName == null && getElementName() != null) { m_itemName = deriveItemName(getElementName(), m_itemType, CustomBase.CAMEL_CASE_NAMES); } } }libjibx-java-1.1.6a/build/src/org/jibx/ws/wsdl/Definitions.java0000644000175000017500000001627510651200546024245 0ustar moellermoeller/* * Copyright (c) 2004-2007, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.ws.wsdl; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; /** * Top-level component of WSDL definition. * * @author Dennis M. Sosnoski */ public class Definitions { /** Transport specification for SOAP over HTTP. */ public static final String HTTP_TRANSPORT = "http://schemas.xmlsoap.org/soap/http"; /** Supported style value. */ public static final String STYLE_DOCUMENT = "document"; /** Prefix for WSDL target namespace. */ private final String m_wsdlPrefix; /** Target namespace for WSDL. */ private final String m_wsdlNamespace; /** Name for port type. */ private final String m_portTypeName; /** Name for binding. */ private final String m_bindingName; /** Name for service. */ private final String m_serviceName; /** Name for port. */ private final String m_portName; /** Schema definition holders. */ private final ArrayList m_schemas; /** Map from namespace URIs to prefixes. */ private final Map m_uriPrefixMap; /** Message definitions. */ private final ArrayList m_messages; /** Operation definitions. */ private final ArrayList m_operations; /** Documentation for the portType. */ private List m_portTypeDocumentation; /** Service location URL. */ private String m_serviceLocation; /** * Standard constructor. * * @param tname port type name * @param bname binding name * @param sname service name * @param pname port name * @param wpfx prefix for WSDL target namespace * @param wuri WSDL target namespace * @param spfx prefix for schema target namespace * @param suri schema target namespace */ public Definitions(String tname, String bname, String sname, String pname, String wpfx, String wuri, String spfx, String suri) { m_portTypeName = tname; m_bindingName = bname; m_serviceName = sname; m_portName = pname; m_wsdlPrefix = wpfx; m_wsdlNamespace = wuri; m_schemas = new ArrayList(); m_uriPrefixMap = new HashMap(); m_messages = new ArrayList(); m_operations = new ArrayList(); m_uriPrefixMap.put(wuri, wpfx); if (suri != null && !wuri.equals(suri)) { m_uriPrefixMap.put(suri, spfx); } } /** * Set service location. * * @param sloc service location URL string */ public void setServiceLocation(String sloc) { m_serviceLocation = sloc; } /** * Add message definition. * * @param msg message definition */ public void addMessage(Message msg) { m_messages.add(msg); } /** * Add operation definition. * * @param op operation definition */ public void addOperation(Operation op) { m_operations.add(op); } /** * Get port type name. * * @return port type name */ public String getPortTypeName() { return m_portTypeName; } /** * Get binding name. * * @return binding name */ public String getBindingName() { return m_bindingName; } /** * Get service name. * * @return service name */ public String getServiceName() { return m_serviceName; } /** * Get port name. * * @return port name */ public String getPortName() { return m_portTypeName; } /** * Get WSDL target namespace prefix. * * @return target namespace prefix */ public String getWsdlPrefix() { return m_wsdlPrefix; } /** * Get WSDL target namespace URI. * * @return target namespace */ public String getWsdlNamespace() { return m_wsdlNamespace; } /** * Get schema definition holders. * * @return schemas */ public ArrayList getSchemas() { return m_schemas; } /** * Get service location. * * @return service location URL string */ public String getServiceLocation() { return m_serviceLocation; } /** * Get portType documentation. * * @return list of nodes */ public List getPortTypeDocumentation() { return m_portTypeDocumentation; } /** * Set portType documentation. * * @param nodes list of nodes */ public void setPortTypeDocumentation(List nodes) { m_portTypeDocumentation = nodes; } /** * Get messages. * * @return list of messages */ public ArrayList getMessages() { return m_messages; } /** * Get operations. * * @return list of operations */ public ArrayList getOperations() { return m_operations; } /** * Get the prefix for a namespace URI. The first time this is called for a particular namespace URI a prefix is * assigned and returned. * * @param uri * @return prefix */ public String getPrefix(String uri) { if (uri == null) { return ""; } else { String prefix = (String)m_uriPrefixMap.get(uri); if (prefix == null) { prefix = "ns" + (m_uriPrefixMap.size() - 1); m_uriPrefixMap.put(uri, prefix); } return prefix; } } /** * Get the complete set of namespace URIs used by this definition. * * @return set of URIs */ public Set getNamespaces() { return m_uriPrefixMap.keySet(); } }libjibx-java-1.1.6a/build/src/org/jibx/ws/wsdl/FaultCustom.java0000644000175000017500000001420010651200546024222 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.ws.wsdl; import java.util.Collection; import java.util.List; import org.jibx.binding.generator.CustomBase; import org.jibx.binding.model.IClass; import org.jibx.binding.model.IClassItem; import org.jibx.binding.model.IClassLocator; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.UnmarshallingContext; import org.jibx.util.Types; /** * Fault data customization information. * TODO: include this in the customizations file structure - child of service element? * * @author Dennis M. Sosnoski */ public class FaultCustom extends CustomBase { // fault data customization information private String m_exceptionType; private String m_fieldName; private String m_dataType; private String m_faultName; private String m_elementName; private List m_documentation; /** * Constructor. * * @param parent * @param type fully-qualified exception class name */ protected FaultCustom(NestingBase parent, String type) { super(parent); m_exceptionType = type; } /** * Get fully-qualified exception class name. * * @return type */ public String getExceptionType() { return m_exceptionType; } /** * Get Fault name. This method should only be used after the {@link #apply(IClassLocator)} method is called. * * @return parmaterized type */ public String getFaultName() { return m_faultName; } /** * Get XML element name for exception data. This method should only be used after the {@link #apply(IClassLocator)} * method is called. * * @return name */ public String getElementName() { return m_elementName; } /** * Get fully-qualified name of exception data class. * * @return parmaterized type */ public String getDataType() { return m_dataType; } /** * Get value documentation node list. This method should only be used after the {@link #apply(IClassLocator)} method * is called. * * @return list of documentation nodes (null if none) */ public List getDocumentation() { return m_documentation; } /** * Apply customizations to fault to fill out members. * * @param icl class locator */ public void apply(IClassLocator icl) { String simple = m_exceptionType.substring(m_exceptionType.lastIndexOf('.') + 1); if (simple.endsWith("Exception")) { simple = simple.substring(0, simple.length() - 9); } if (m_elementName == null) { m_elementName = getParent().convertName(simple); } if (m_faultName == null) { m_faultName = m_elementName + "Fault"; } IClass clas = icl.getClassInfo(m_exceptionType); if (m_fieldName == null) { IClassItem[] fields = clas.getFields(); for (int i = 0; i < fields.length; i++) { IClassItem item = fields[i]; String type = item.getTypeName(); if (!Types.isSimpleValue(type)) { IClass info = icl.getClassInfo(type); if (info.isModifiable()) { m_fieldName = item.getName(); m_dataType = type; break; } } } if (m_fieldName == null) { throw new IllegalStateException("No data object field found for exception class " + m_exceptionType); } } else { IClassItem field = clas.getField(m_fieldName); if (field == null) { throw new IllegalStateException("Field " + m_fieldName + " not found in exception class " + m_exceptionType); } else { m_dataType = field.getTypeName(); } } } /** * Parameter value unmarshalling factory. This gets the containing element and the name so that the standard * constructor can be used. * * @param ictx * @return created instance * @throws JiBXException */ private static FaultCustom throwsFactory(IUnmarshallingContext ictx) throws JiBXException { UnmarshallingContext uctx = (UnmarshallingContext)ictx; Object parent = uctx.getStackTop(); int depth = 0; if (parent instanceof Collection) { parent = uctx.getStackObject(++depth); } return new FaultCustom((OperationCustom)parent, uctx.attributeText(null, "class")); } }libjibx-java-1.1.6a/build/src/org/jibx/ws/wsdl/Jibx2Wsdl.java0000644000175000017500000006360710767277162023623 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.ws.wsdl; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.net.URL; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import org.jibx.binding.generator.BindingGenerator; import org.jibx.binding.generator.ClassCustom; import org.jibx.binding.generator.CustomBase; import org.jibx.binding.generator.GlobalCustom; import org.jibx.binding.generator.BindingMappingDetail; import org.jibx.binding.generator.SchemaGenerator; import org.jibx.binding.generator.SchemaMappingDetail; import org.jibx.binding.model.BindingElement; import org.jibx.binding.model.BindingHolder; import org.jibx.binding.model.CollectionElement; import org.jibx.binding.model.DocumentFormatter; import org.jibx.binding.model.IClass; import org.jibx.binding.model.IClassLocator; import org.jibx.binding.model.MappingElement; import org.jibx.binding.model.ValidationContext; import org.jibx.runtime.BindingDirectory; import org.jibx.runtime.IBindingFactory; import org.jibx.runtime.IMarshallable; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.QName; import org.jibx.runtime.Utility; import org.jibx.schema.IComponent; import org.jibx.schema.SchemaHolder; import org.jibx.schema.elements.AnnotationElement; import org.jibx.schema.elements.ComplexTypeElement; import org.jibx.schema.elements.DocumentationElement; import org.jibx.schema.elements.ElementElement; import org.jibx.schema.elements.SchemaElement; import org.jibx.schema.elements.SequenceElement; import org.jibx.schema.types.Count; import org.jibx.util.InsertionOrderedSet; import org.jibx.util.Types; import org.w3c.dom.Node; /** * Start-from-code WSDL generator using JiBX data binding. This starts from one or more service classes, each with one * or more methods to be exposed as service operations, and generates complete bindings and WSDL for the services. * * @author Dennis M. Sosnoski */ public class Jibx2Wsdl { /** Parameter information for generation. */ private final WsdlGeneratorCommandLine m_generationParameters; /** Binding generator. */ private final BindingGenerator m_bindingGenerator; /** Schema generator. */ private final SchemaGenerator m_schemaGenerator; /** Map from schema namespace URIs to schema holders. */ private final Map m_uriSchemaMap; /** Map from fully qualified class name to schema type name. */ private Map m_classTypeMap; /** Document used for annotations (null if none). */ private final DocumentFormatter m_formatter; /** * Constructor. * * @param parms generation parameters */ private Jibx2Wsdl(WsdlGeneratorCommandLine parms) { m_generationParameters = parms; GlobalCustom global = parms.getGlobal(); m_bindingGenerator = new BindingGenerator(global); m_schemaGenerator = new SchemaGenerator(parms.getLocator(), global); m_uriSchemaMap = new HashMap(); m_formatter = new DocumentFormatter(); } /** * Get the qualified name used for an abstract mapping. This throws an exception if the qualified name is not found. * * @param type * @param mapping * @return qualified name */ private QName getMappingQName(String type, MappingElement mapping) { SchemaMappingDetail detail = m_schemaGenerator.getMappingDetail(mapping); if (detail == null) { throw new IllegalStateException("No mapping found for type " + type); } else if (detail.isType()) { return detail.getTypeName(); } else { throw new IllegalStateException("Need abstract mapping for type " + type); } } /** * Build an element representing a parameter or return value. * * @param parm * @param typemap map from parameterized type to abstract mapping name * @param hold containing schema holder * @return constructed element */ private ElementElement buildValueElement(ValueCustom parm, Map typemap, SchemaHolder hold) { // create the basic element definition ElementElement elem = new ElementElement(); if (!parm.isRequired()) { elem.setMinOccurs(Count.COUNT_ZERO); } String type = parm.getType(); if (type.endsWith("[]")) { elem.setMaxOccurs(Count.COUNT_UNBOUNDED); } // check type or reference for element boolean isref = false; String ptype = parm.getBoundType(); QName tname = (QName)typemap.get(ptype); if (tname == null) { tname = Types.schemaType(ptype); if (tname == null) { String usetype = ptype.endsWith(">") ? type : ptype; BindingMappingDetail detail = m_bindingGenerator.getMappingDetail(usetype); if (detail == null) { throw new IllegalStateException("No mapping found for type " + usetype); } else if (detail.isExtended()) { elem.setRef(detail.getElementQName()); isref = true; } else { MappingElement mapping = detail.getAbstractMapping(); tname = mapping.getTypeQName(); if (tname == null) { tname = getMappingQName(usetype, mapping); } } } } if (!isref) { // set element type and name m_schemaGenerator.setElementType(tname, elem, hold); String ename = parm.getElementName(); if (ename == null) { ename = tname.getName(); } elem.setName(ename); } // add documentation if available List nodes = parm.getDocumentation(); if (nodes != null) { AnnotationElement anno = new AnnotationElement(); DocumentationElement doc = new DocumentationElement(); for (Iterator iter = nodes.iterator(); iter.hasNext();) { Node node = (Node)iter.next(); doc.addContent(node); } anno.getItemsList().add(doc); elem.setAnnotation(anno); } return elem; } /** * Add reference defined by element to schema. This finds the namespace of the type or element reference used by the * provided element, and adds that namespace to the schema references. * * @param elem * @param holder */ private void addSchemaReference(ElementElement elem, SchemaHolder holder) { QName qname = elem.getType(); if (qname == null) { qname = elem.getRef(); } if (qname != null) { String rns = qname.getUri(); if (!Utility.safeEquals(holder.getNamespace(), rns) && !IComponent.SCHEMA_NAMESPACE.equals(rns)) { holder.addReference((SchemaHolder)m_uriSchemaMap.get(rns)); } } } /** * Build WSDL for service. * * @param service * @param typemap map from parameterized type to abstract mapping name * @return constructed WSDL definitions */ private Definitions buildWSDL(ServiceCustom service, Map typemap) { // initialize root object of definition String wns = service.getWsdlNamespace(); String sns = service.getNamespace(); String spfx = wns.equals(sns) ? "tns" : "sns"; Definitions def = new Definitions(service.getPortTypeName(), service.getBindingName(), service.getServiceName(), service.getPortName(), "tns", wns, spfx, sns); def.setServiceLocation(service.getServiceAddress()); // add service documentation if available IClassLocator locator = m_generationParameters.getLocator(); IClass info = locator.getClassInfo(service.getClassName()); if (info != null) { List nodes = m_formatter.docToNodes(info.getJavaDoc()); def.setPortTypeDocumentation(nodes); } // find or create the schema element and namespace SchemaHolder holder = (SchemaHolder)m_uriSchemaMap.get(sns); if (holder == null) { holder = new SchemaHolder(sns); } SchemaElement schema = holder.getSchema(); def.getSchemas().add(schema); // process messages and operations used by service ArrayList ops = service.getOperations(); Map fltmap = new HashMap(); for (int i = 0; i < ops.size(); i++) { // get information for operation OperationCustom odef = (OperationCustom)ops.get(i); String oname = odef.getOperationName(); Operation op = new Operation(oname); op.setDocumentation(odef.getDocumentation()); op.setSoapAction(odef.getSoapAction()); // generate input message information QName qname = new QName(sns, odef.getRequestWrapperName()); MessagePart part = new MessagePart("part", qname); Message msg = new Message(odef.getRequestMessageName(), part); op.addInputMessage(msg); def.addMessage(msg); // add corresponding schema definition to schema SequenceElement seq = new SequenceElement(); ArrayList parms = odef.getParameters(); for (int j = 0; j < parms.size(); j++) { ValueCustom parm = (ValueCustom)parms.get(j); ElementElement pelem = buildValueElement(parm, typemap, holder); seq.getParticleList().add(pelem); addSchemaReference(pelem, holder); } ComplexTypeElement tdef = new ComplexTypeElement(); tdef.setContentDefinition(seq); ElementElement elem = new ElementElement(); elem.setName(odef.getRequestWrapperName()); elem.setTypeDefinition(tdef); schema.getTopLevelChildren().add(elem); // generate output message information qname = new QName(sns, odef.getResponseWrapperName()); part = new MessagePart("part", qname); msg = new Message(odef.getResponseMessageName(), part); op.addOutputMessage(msg); def.addMessage(msg); // add corresponding schema definition to schema seq = new SequenceElement(); ValueCustom ret = odef.getReturn(); if (!"void".equals(ret.getType())) { ElementElement relem = buildValueElement(ret, typemap, holder); seq.getParticleList().add(relem); addSchemaReference(relem, holder); } tdef = new ComplexTypeElement(); tdef.setContentDefinition(seq); elem = new ElementElement(); elem.setName(odef.getResponseWrapperName()); elem.setTypeDefinition(tdef); schema.getTopLevelChildren().add(elem); // process fault message(s) for operation ArrayList thrws = odef.getThrows(); WsdlCustom wsdlcustom = m_generationParameters.getWsdlCustom(); for (int j = 0; j < thrws.size(); j++) { ThrowsCustom thrw = (ThrowsCustom)thrws.get(j); String type = thrw.getType(); msg = (Message)fltmap.get(type); if (msg == null) { // first time for this throwable, create the message FaultCustom fault = wsdlcustom.forceFaultCustomization(type); qname = new QName(sns, fault.getElementName()); part = new MessagePart("fault", qname); msg = new Message(fault.getFaultName(), part); def.addMessage(msg); // make sure the corresponding mapping exists BindingMappingDetail detail = m_bindingGenerator.getMappingDetail(fault.getDataType()); if (detail == null) { throw new IllegalStateException("No mapping found for type " + type); } // record that the fault has been defined fltmap.put(type, msg); } // add fault to operation definition op.addFaultMessage(msg); } // add operation to list of definitions def.addOperation(op); } holder.finish(); return def; } /** * Accumulate data type(s) from value to be included in binding. * * @param value * @param dataset set of types for binding */ private void accumulateData(ValueCustom value, Set dataset) { String type = value.getBoundType(); if (!dataset.contains(type) && !Types.isSimpleValue(type)) { String itype = value.getItemType(); if (itype == null) { dataset.add(type); } else { dataset.add(itype); } } } /** * Add the <mapping> definition for a typed collection to a binding. This always creates an abstract mapping with * the type name based on both the item type and the collection type. * * @param value collection value * @param typemap map from parameterized type to abstract mapping name * @param bind target binding * @return qualified name for collection */ public QName addCollectionBinding(ValueCustom value, Map typemap, BindingHolder bind) { // check for existing mapping String ptype = value.getBoundType(); QName qname = (QName)typemap.get(ptype); if (qname == null) { // create abstract mapping for collection class type MappingElement mapping = new MappingElement(); mapping.setClassName(value.getType()); mapping.setAbstract(true); mapping.setCreateType(value.getCreateType()); mapping.setFactoryName(value.getFactoryMethod()); // generate the mapping type name from item class name and suffix String suffix; String type = value.getType(); GlobalCustom global = m_generationParameters.getGlobal(); IClass clas = global.getClassInfo(type); if (clas.isImplements("Ljava/util/List;")) { suffix = "List"; } else if (clas.isImplements("Ljava/util/Set;")) { suffix = "Set"; } else { suffix = "Collection"; } String itype = value.getItemType(); ClassCustom cust = global.forceClassCustomization(itype); // register the type name for mapping String name = cust.getSimpleName() + suffix; qname = new QName(bind.getNamespace(), CustomBase.convertName(name, CustomBase.CAMEL_CASE_NAMES)); mapping.setTypeQName(qname); typemap.put(ptype, qname); // add collection definition details CollectionElement coll = new CollectionElement(); m_bindingGenerator.defineCollection(itype, value.getItemElementName(), coll, bind); mapping.addChild(coll); // add mapping to binding bind.addMapping(mapping); } return qname; } /** * Generate based on list of service classes. * * @param classes service class list * @param extras list of extra classes for binding * @return list of WSDLs * @throws JiBXException * @throws IOException */ private ArrayList generate(List classes, List extras) throws JiBXException, IOException { // add any service classes not already present in customizations WsdlCustom wsdlcustom = m_generationParameters.getWsdlCustom(); for (int i = 0; i < classes.size(); i++) { String sclas = (String)classes.get(i); if (wsdlcustom.getServiceCustomization(sclas) == null) { wsdlcustom.addServiceCustomization(sclas); } } // accumulate the data classes used by all service operations // TODO: throws class handling, with multiple services per WSDL InsertionOrderedSet abstrs = new InsertionOrderedSet(); InsertionOrderedSet concrs = new InsertionOrderedSet(); ArrayList qnames = new ArrayList(); List services = wsdlcustom.getServices(); String[] adduris = new String[services.size()]; int index = 0; for (Iterator iter = services.iterator(); iter.hasNext();) { ServiceCustom service = (ServiceCustom)iter.next(); adduris[index++] = service.getNamespace(); List ops = service.getOperations(); for (Iterator iter1 = ops.iterator(); iter1.hasNext();) { OperationCustom op = (OperationCustom)iter1.next(); List parms = op.getParameters(); for (Iterator iter2 = parms.iterator(); iter2.hasNext();) { accumulateData((ValueCustom)iter2.next(), abstrs); } accumulateData(op.getReturn(), abstrs); ArrayList thrws = op.getThrows(); for (int i = 0; i < thrws.size(); i++) { // add concrete mapping for data type, if used ThrowsCustom thrw = (ThrowsCustom)thrws.get(i); FaultCustom fault = wsdlcustom.forceFaultCustomization(thrw.getType()); if (!concrs.contains(fault.getDataType())) { concrs.add(fault.getDataType()); qnames.add(new QName(service.getNamespace(), fault.getElementName())); } } } } // include extra classes as needing concrete mappings GlobalCustom global = m_generationParameters.getGlobal(); for (int i = 0; i < extras.size(); i++) { String type = (String)extras.get(i); if (!concrs.contains(type)) { concrs.add(type); global.forceClassCustomization(type); qnames.add(null); } } // generate bindings for all data classes used m_bindingGenerator.generateSpecified(qnames, concrs.asList(), abstrs.asList()); // add binding definitions for collections passed or returned Map typemap = new HashMap(); for (Iterator iter = services.iterator(); iter.hasNext();) { ServiceCustom service = (ServiceCustom)iter.next(); List ops = service.getOperations(); BindingHolder hold = null; String uri = service.getNamespace(); for (Iterator iter1 = ops.iterator(); iter1.hasNext();) { OperationCustom op = (OperationCustom)iter1.next(); List parms = op.getParameters(); for (Iterator iter2 = parms.iterator(); iter2.hasNext();) { ValueCustom parm = (ValueCustom)iter2.next(); if (parm.getItemType() != null) { if (hold == null) { hold = m_bindingGenerator.findBinding(uri); } addCollectionBinding(parm, typemap, hold); } } ValueCustom ret = op.getReturn(); if (ret.getItemType() != null) { if (hold == null) { hold = m_bindingGenerator.findBinding(uri); } addCollectionBinding(ret, typemap, hold); } } } // write the binding(s), then validate from file (to get line numbers) String name = m_generationParameters.getBindingName(); File path = m_generationParameters.getGeneratePath(); BindingHolder rhold = m_bindingGenerator.finish(name, adduris, path); File file = new File(path, rhold.getFileName()); ValidationContext vctx = new ValidationContext(m_generationParameters.getLocator()); BindingElement binding = BindingElement.validateBinding(name, file.toURL(), new FileInputStream(file), vctx); if (binding == null) { return null; } else { // replace generated binding references with validated versions rhold.setBinding(binding); ArrayList uris = m_bindingGenerator.getNamespaces(); ArrayList holders = new ArrayList(); URL base = path.toURL(); for (int i = 0; i < uris.size(); i++) { String uri = (String)uris.get(i); BindingHolder hold = m_bindingGenerator.findBinding(uri); holders.add(hold); if (hold != rhold) { URL url = new URL(base, hold.getFileName()); if (binding.addIncludePath(url.toExternalForm())) { throw new IllegalStateException("Binding not found when read from file"); } else { hold.setBinding(binding.getExistingIncludeBinding(url)); } } } // build and record the schemas ArrayList schemas = m_schemaGenerator.generate(holders); // TODO: fix this for (int i = 0; i < schemas.size(); i++) { SchemaHolder holder = (SchemaHolder)schemas.get(i); m_uriSchemaMap.put(holder.getNamespace(), holder); } // build the WSDL for each service ArrayList wsdls = new ArrayList(); for (Iterator iter = services.iterator(); iter.hasNext();) { wsdls.add(buildWSDL((ServiceCustom)iter.next(), typemap)); } return wsdls; } } /** * Run the WSDL generation using command line parameters. * * @param args * @throws JiBXException * @throws IOException */ public static void main(String[] args) throws JiBXException, IOException { WsdlGeneratorCommandLine parms = new WsdlGeneratorCommandLine(); if (args.length > 0 && parms.processArgs(args)) { // generate services, bindings, and WSDLs Jibx2Wsdl inst = new Jibx2Wsdl(parms); ArrayList extras = new ArrayList(parms.getExtraTypes()); ArrayList classes = parms.getGlobal().getUnmarshalledClasses(); for (int i = 0; i < classes.size(); i++) { ClassCustom clas = (ClassCustom)classes.get(i); if (clas.isForceMapping()) { extras.add(clas.getName()); } } ArrayList wsdls = inst.generate(parms.getExtraArgs(), extras); if (wsdls != null) { // write the corresponding schemas IBindingFactory fact = BindingDirectory.getFactory(SchemaElement.class); for (Iterator iter = inst.m_uriSchemaMap.values().iterator(); iter.hasNext();) { SchemaHolder holder = (SchemaHolder)iter.next(); IMarshallingContext ictx = fact.createMarshallingContext(); File file = new File(parms.getGeneratePath(), holder.getFileName()); ictx.setOutput(new FileOutputStream(file), null); ictx.setIndent(2); ((IMarshallable)holder.getSchema()).marshal(ictx); ictx.getXmlWriter().flush(); } // output the generated WSDLs WsdlWriter writer = new WsdlWriter(); for (int i = 0; i < wsdls.size(); i++) { Definitions def = (Definitions)wsdls.get(i); File file = new File(parms.getGeneratePath(), def.getServiceName() + ".wsdl"); writer.writeWSDL(def, new FileOutputStream(file)); } } } else { if (args.length > 0) { System.err.println("Terminating due to command line errors"); } else { parms.printUsage(); } System.exit(1); } } }libjibx-java-1.1.6a/build/src/org/jibx/ws/wsdl/Message.java0000644000175000017500000000461410651200546023350 0ustar moellermoeller/* * Copyright (c) 2004-2007, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.ws.wsdl; import java.util.ArrayList; /** * WSDL object model components corresponding to a message definition. * * @author Dennis M. Sosnoski */ public class Message { /** Actual message name. */ private String m_name; /** Parts defined for this message. */ private ArrayList m_parts; /** * Constructor from message name and singleton part. * * @param name message name * @param part singleton part */ public Message(String name, MessagePart part) { m_name = name; m_parts = new ArrayList(); m_parts.add(part); } /** * Get message name. * * @return message name */ public String getName() { return m_name; } /** * Get message parts. * * @return list of parts */ public ArrayList getParts() { return m_parts; } }libjibx-java-1.1.6a/build/src/org/jibx/ws/wsdl/MessagePart.java0000644000175000017500000000462010651200546024174 0ustar moellermoeller/* * Copyright (c) 2004-2007, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.ws.wsdl; import org.jibx.runtime.QName; /** * WSDL object model components corresponding to a message definition part. * * @author Dennis M. Sosnoski */ public class MessagePart { /** Actual part name. */ private String m_name; /** Referenced element. */ private QName m_elementReference; /** * Constructor from part and element names. * * @param mname message name * @param eref element qualified name */ public MessagePart(String mname, QName eref) { m_name = mname; m_elementReference = eref; } /** * Get message name. * * @return message name */ public String getName() { return m_name; } /** * Get referenced element name. * * @return element name */ public QName getElementReference() { return m_elementReference; } }libjibx-java-1.1.6a/build/src/org/jibx/ws/wsdl/MessageReference.java0000644000175000017500000001075210651200546025167 0ustar moellermoeller/* * Copyright (c) 2004-2007, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.ws.wsdl; /** * Reference to a message within an operation. Since messages may be referenced as input, output, or fault messages, the * appropriate type is tracked by this class, along with the actual message. * * @author Dennis M. Sosnoski */ public class MessageReference { /** Reference to message as input. */ public static final int INPUT_REFERENCE = 0; /** Reference to message as output. */ public static final int OUTPUT_REFERENCE = 1; /** Reference to message as fault. */ public static final int FAULT_REFERENCE = 2; /** Type of message reference. */ private int m_usage; /** Actual message. */ private Message m_message; /** * Internal constructor used with JiBX binding. * * @param usage reference type code */ private MessageReference(int usage) { m_usage = usage; } /** * Constructor from part and element names. * * @param usage reference type code * @param msg referenced message */ public MessageReference(int usage, Message msg) { m_usage = usage; m_message = msg; } /** * Check if reference is to message as input. * * @return true if input reference, false if not */ public boolean isInput() { return m_usage == INPUT_REFERENCE; } /** * Check if reference is to message as output. * * @return true if output reference, false if not */ public boolean isOutput() { return m_usage == OUTPUT_REFERENCE; } /** * Check if reference is to message as fault. * * @return true if fault reference, false if not */ public boolean isFault() { return m_usage == FAULT_REFERENCE; } /** * Get referenced message. * * @return referenced message */ public Message getMessage() { return m_message; } /** * Factory for creating input message reference templates. The actual referenced message information needs to be set * separately. TODO: use these as an example * * @return created reference */ private static MessageReference inputReferenceFactory() { return new MessageReference(INPUT_REFERENCE); } /** * Factory for creating output message reference templates. The actual referenced message information needs to be * set separately. * * @return created reference */ private static MessageReference outputReferenceFactory() { return new MessageReference(OUTPUT_REFERENCE); } /** * Factory for creating fault message reference templates. The actual referenced message information needs to be set * separately. * * @return created reference */ private static MessageReference faultReferenceFactory() { return new MessageReference(FAULT_REFERENCE); } }libjibx-java-1.1.6a/build/src/org/jibx/ws/wsdl/NestingBase.java0000644000175000017500000001471210673573044024200 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.ws.wsdl; import java.util.Collection; import java.util.HashMap; import java.util.Map; import org.jibx.binding.generator.CustomBase; import org.jibx.binding.generator.SharedNestingBase; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; /** * Base class for nested WSDL customizations that can contain other customizations. * * @author Dennis M. Sosnoski */ public abstract class NestingBase extends SharedNestingBase { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "service-base", "set-actions", "use-nillable", "wrapped" }, SharedNestingBase.s_allowedAttributes); // values inherited through nesting private Boolean m_wrapped; private Boolean m_setActions; private Boolean m_useNillable; private String m_serviceBase; // set of unique names at level private final Map m_namedChildMap; // TODO: add WSDL namespace prefix, schema namespace prefix, WSDL structuring /** * Constructor. * * @param parent */ public NestingBase(SharedNestingBase parent) { super(parent); m_namedChildMap = new HashMap(); } // // Getters for values inherited through nesting /** * Check wrapped flag. * * @return wrapped flag */ public boolean isWrapped() { if (m_wrapped == null) { if (this instanceof WsdlCustom || getParent() == null) { return true; } else { return ((NestingBase)getParent()).isWrapped(); } } else { return m_wrapped.booleanValue(); } } /** * Check if soapAction should be set. * * @return soapAction flag */ public boolean isSoapAction() { if (m_setActions == null) { if (this instanceof WsdlCustom || getParent() == null) { return true; } else { return ((NestingBase)getParent()).isSoapAction(); } } else { return m_setActions.booleanValue(); } } /** * Check if xsi:nillable should be used for optional values (rather than minOccurs='0'). * * @return xsi:nillable flag */ public boolean isNillable() { if (m_useNillable == null) { if (this instanceof WsdlCustom || getParent() == null) { return false; } else { return ((NestingBase)getParent()).isNillable(); } } else { return m_useNillable.booleanValue(); } } /** * Get the service base address. * * @return base address */ public String getServiceBase() { if (m_serviceBase == null) { if (this instanceof WsdlCustom || getParent() == null) { return "http://localhost:8080/axis2/services"; } else { return ((NestingBase)getParent()).getServiceBase(); } } else { return m_serviceBase; } } /** * Get child by name. * * @param name * @return named child, null if name not registered */ public CustomBase getChild(String name) { return (CustomBase)m_namedChildMap.get(name); } /** * Register a child name. If the base name supplied has already been used by a different child, the name will be * modified by adding a numeric suffix to make it unique. Once a name has been registered for a child, calling this * method again with that name is guaranteed to just return that same name. Depending on the nesting level, the type * of child may take different forms. This doesn't care what the names represent, it just makes sure they're unique. * * @param base proposed name * @param child named child * @return allowed name */ public String registerName(String base, CustomBase child) { int index = 0; String name = base; Object value; while ((value = m_namedChildMap.get(name)) != null && value != child) { name = base + ++index; } m_namedChildMap.put(name, child); return name; } /** * Get WSDL definitions namespace. * * @return WSDL namespace */ public abstract String getWsdlNamespace(); /** * Gets the parent element link from the unmarshalling stack. This method is for use by factories during * unmarshalling. * * @param ictx unmarshalling context * @return containing class */ protected static SharedNestingBase getContainingClass(IUnmarshallingContext ictx) { Object parent = ictx.getStackTop(); int depth = 0; if (parent instanceof Collection) { parent = ictx.getStackObject(++depth); } return (SharedNestingBase)parent; } }libjibx-java-1.1.6a/build/src/org/jibx/ws/wsdl/Operation.java0000644000175000017500000001036410651200546023723 0ustar moellermoeller/* * Copyright (c) 2004-2007, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.ws.wsdl; import java.util.ArrayList; import java.util.List; /** * WSDL object model component corresponding to an operation definition. * * @author Dennis M. Sosnoski */ public class Operation { /** Actual operation name. */ private String m_name; /** SOAP action. */ private String m_soapAction; /** Documentation as node list (null if none). */ private List m_documentation; /** Ordered message references for this operation. */ private ArrayList m_messageRefs; /** * Constructor from operation name. * * @param name operation name */ public Operation(String name) { m_name = name; m_soapAction = ""; m_messageRefs = new ArrayList(); } /** * Add reference to input message. All input message(s) must be set before any output or fault messages are set. * * @param msg input message */ public void addInputMessage(Message msg) { m_messageRefs.add(new MessageReference(MessageReference.INPUT_REFERENCE, msg)); } /** * Add reference to output message. All output message(s) must be set after any input messages and before any fault * messages are set. * * @param msg output message */ public void addOutputMessage(Message msg) { m_messageRefs.add(new MessageReference(MessageReference.OUTPUT_REFERENCE, msg)); } /** * Add reference to fault message. All fault message(s) must be set after any input or output messages are set. * * @param msg fault message */ public void addFaultMessage(Message msg) { m_messageRefs.add(new MessageReference(MessageReference.FAULT_REFERENCE, msg)); } /** * Get operation name. * * @return operation name */ public String getName() { return m_name; } /** * Get soapAction. * * @return soapAction */ public String getSoapAction() { return m_soapAction; } /** * Set soapAction. * * @param action */ public void setSoapAction(String action) { m_soapAction = action; } /** * Get documentation. * * @return list of nodes */ public List getDocumentation() { return m_documentation; } /** * Set documentation. * * @param nodes list of nodes */ public void setDocumentation(List nodes) { m_documentation = nodes; } /** * Get message references for operation. The returned list is live, but should not be modified by the caller. * * @return list of parts */ public ArrayList getMessageReferences() { return m_messageRefs; } }libjibx-java-1.1.6a/build/src/org/jibx/ws/wsdl/OperationCustom.java0000644000175000017500000003545610752422566025141 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.ws.wsdl; import java.util.ArrayList; import java.util.List; import java.util.Set; import org.jibx.binding.generator.CustomBase; import org.jibx.binding.generator.SharedNestingBase; import org.jibx.binding.model.DocumentFormatter; import org.jibx.binding.model.IClass; import org.jibx.binding.model.IClassItem; import org.jibx.binding.model.IClassLocator; import org.jibx.binding.util.StringArray; import org.jibx.custom.CustomUtils; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.UnmarshallingContext; /** * Operation customization information. This supports direct operation customizations (such as the corresponding request * and/or response element name) and also acts as a container for parameter and/or return customizations. * * @author Dennis M. Sosnoski */ public class OperationCustom extends NestingBase { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "service-base", "set-actions", "use-nillable", "wrapped" }, SharedNestingBase.s_allowedAttributes); // values specific to class level private String m_methodName; private String m_operationName; private String m_requestMessageName; private String m_requestWrapperName; private String m_responseMessageName; private String m_responseWrapperName; private String m_soapAction; private List m_documentation; private String[] m_requireds; private String[] m_optionals; // list of contained parameter customizations private final ArrayList m_parameters; // contained result customization (null if none) private ValueCustom m_return; // list of contained throws customizations private final ArrayList m_throws; /** * Constructor. * * @param parent * @param name method name */ OperationCustom(NestingBase parent, String name) { super(parent); m_methodName = name; m_parameters = new ArrayList(); m_throws = new ArrayList(); } /** * Get the namespace for WSDL definitions of this service. * * @return WSDL namespace */ public String getWsdlNamespace() { return ((NestingBase)getParent()).getWsdlNamespace(); } /** * Get method name. * * @return name */ public String getMethodName() { return m_methodName; } /** * Get the operation name. * * @return operation name */ public String getOperationName() { return m_operationName; } /** * Get request message name. * * @return name */ public String getRequestMessageName() { return m_requestMessageName; } /** * Get request wrapper element name. * * @return name */ public String getRequestWrapperName() { return m_requestWrapperName; } /** * Get response message name. * * @return name */ public String getResponseMessageName() { return m_responseMessageName; } /** * Get response wrapper name. * * @return name */ public String getResponseWrapperName() { return m_responseWrapperName; } /** * Get return value. * * @return return */ public ValueCustom getReturn() { return m_return; } /** * Get SOAPAction. * * @return soapAction */ public String getSoapAction() { return m_soapAction; } /** * Get operation documentation. * * @return list of documentation nodes (null if none) */ public List getDocumentation() { return m_documentation; } /** * Get list of children. * * @return list */ public ArrayList getParameters() { return m_parameters; } /** * Get list of throws customizations. * * @return list */ public ArrayList getThrows() { return m_throws; } /** * Add child. * * @param child */ protected void addChild(CustomBase child) { if (child.getParent() == this) { m_parameters.add(child); } else { throw new IllegalStateException("Internal error: child not linked"); } } /** * Unmarshalling factory. This gets the containing element and the name so that the standard constructor can be * used. * * @param ictx * @return created instance * @throws JiBXException */ private static OperationCustom factory(IUnmarshallingContext ictx) throws JiBXException { return new OperationCustom((NestingBase)getContainingObject(ictx), ((UnmarshallingContext)ictx).attributeText( null, "method-name")); } /** * Check if type is a collection type (specifically collection, not array). * * @param type * @return item type, null if not a collection type */ private boolean isCollection(String type, IClassLocator icl) { IClass info = icl.getClassInfo(type); return info.isImplements("Ljava/util/Collection;"); } /** * Parse parameter type. * * @param parse * @return parameter type */ private String parameterType(SignatureParser parse) { String itype = null; while (parse.next() != SignatureParser.TYPE_PARAMETERS_END_EVENT) { if (itype == null && parse.getEvent() == SignatureParser.TYPE_EVENT) { itype = parse.getType(); } } return itype; } /** * Build value representation. The value may be either a simple value or a collection value. * * @param name * @param itype item type (null if not a collection) * @return value */ private ValueCustom buildValue(String name, String itype) { if (itype == null) { ValueCustom parm = new ValueCustom(this, name); return parm; } else { CollectionValueCustom parm = new CollectionValueCustom(this, name); return parm; } } /** * Check if a particular value is required or optional. * * @param name * @param reqset * @param optset * @return TRUE if required, FALSE if optional, null if unknown */ private static Boolean checkRequired(String name, Set reqset, Set optset) { if (reqset != null && reqset.contains(name)) { return Boolean.TRUE; } else if (optset != null && optset.contains(name)) { return Boolean.FALSE; } else { return null; } } /** * Apply customizations to method to fill out parameter and return information. * * @param method * @param icl * @param fmt */ public void apply(IClassItem method, IClassLocator icl, DocumentFormatter fmt) { // fill in missing details if (m_operationName == null) { String name = convertName(m_methodName, CAMEL_CASE_NAMES); m_operationName = registerName(name, this); } else if (!m_operationName.equals(registerName(m_operationName, this))) { throw new IllegalStateException("Operation name conflict for '" + m_operationName + '\''); } if (m_requestMessageName == null) { m_requestMessageName = m_operationName + "Message"; } if (m_requestWrapperName == null) { m_requestWrapperName = m_operationName; } if (m_responseMessageName == null) { m_responseMessageName = m_operationName + "ResponseMessage"; } if (m_responseWrapperName == null) { m_responseWrapperName = m_operationName + "Response"; } if (m_soapAction == null && isSoapAction()) { m_soapAction = "urn:" + m_operationName; } if (m_documentation == null) { m_documentation = fmt.docToNodes(method.getJavaDoc()); } // find parameter types, and item types for collections int count = method.getArgumentCount(); String[] ptypes = new String[count]; String[] pitypes = new String[count]; String rtype = null; String ritype = null; String sig = method.getGenericsSignature(); if (sig == null) { // no signature, just use basic type information for (int i = 0; i < count; i++) { String type = method.getArgumentType(i); ptypes[i] = type; if (isCollection(type, icl)) { pitypes[i] = "java.lang.Object"; } } rtype = method.getTypeName(); if (isCollection(rtype, icl)) { ritype = "java.lang.Object"; } } else { // parse the signature to check collection item types SignatureParser parse = new SignatureParser(sig); int index = 0; boolean inparms = false; while (parse.next() != SignatureParser.END_EVENT) { switch (parse.getEvent()) { case SignatureParser.METHOD_PARAMETERS_START_EVENT: inparms = true; index = 0; break; case SignatureParser.METHOD_PARAMETERS_END_EVENT: inparms = false; break; case SignatureParser.TYPE_EVENT: String type = parse.getType(); String itype = null; if (parse.isParameterized()) { String ptype = parameterType(parse); IClass info = icl.getClassInfo(type); if (info.isImplements("Ljava/util/Collection;")) { itype = ptype; } } if (inparms) { ptypes[index] = type; pitypes[index++] = itype; } else { rtype = type; ritype = itype; } break; } } } // fill in the parameters and return customizations Set reqset = CustomUtils.noCaseNameSet(m_requireds); Set optset = CustomUtils.noCaseNameSet(m_optionals); if (m_parameters.size() == 0) { for (int i = 0; i < count; i++) { String name = method.getParameterName(i); if (name == null) { name = "arg" + (i + 1); } m_parameters.add(buildValue(name, pitypes[i])); } } else { if (m_parameters.size() != count) { // TODO: merge generated with supplied parameter information? throw new IllegalStateException("Wrong parameter count"); } } for (int i = 0; i < count; i++) { ValueCustom param = (ValueCustom)m_parameters.get(i); String name = param.getValueName(); param.setElementName(convertName(name, CAMEL_CASE_NAMES)); String ptype = ptypes[i]; String pitype = pitypes[i]; Boolean req = checkRequired(name, reqset, optset); List docs = fmt.docToNodes(method.getParameterJavaDoc(i)); if (param instanceof CollectionValueCustom) { ((CollectionValueCustom)param).complete(ptype, pitype, docs, req); } else { param.complete(ptype, docs, req); } } Boolean req = checkRequired("return", reqset, optset); String text = method.getReturnJavaDoc(); boolean isname = false; if (text != null && Character.isJavaIdentifierStart(text.charAt(0))) { isname = true; for (int i = 1; i < text.length(); i++) { if (!Character.isJavaIdentifierPart(text.charAt(i))) { isname = false; break; } } } String name = "return"; if (isname) { name = text; text = null; } List docs = fmt.docToNodes(text); if (m_return == null) { m_return = buildValue(name, ritype); } if (m_return instanceof CollectionValueCustom) { ((CollectionValueCustom)m_return).complete(rtype, ritype, docs, req); } else { m_return.complete(rtype, docs, req); } // add throws information count = method.getExceptions().length; if (m_throws.size() == 0) { for (int i = 0; i < count; i++) { name = method.getExceptions()[i]; ThrowsCustom thrw = new ThrowsCustom(this, name); thrw.complete(fmt.docToNodes(method.getExceptionJavaDoc(i))); m_throws.add(thrw); } } } }libjibx-java-1.1.6a/build/src/org/jibx/ws/wsdl/ServiceCustom.java0000644000175000017500000002703410752422566024572 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.ws.wsdl; import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import org.jibx.binding.generator.CustomBase; import org.jibx.binding.generator.SharedNestingBase; import org.jibx.binding.model.DocumentFormatter; import org.jibx.binding.model.IClass; import org.jibx.binding.model.IClassItem; import org.jibx.binding.model.IClassLocator; import org.jibx.binding.util.StringArray; import org.jibx.custom.CustomUtils; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.UnmarshallingContext; /** * Service customization information. This supports direct service customizations (such as the corresponding request * and/or response element name) and also acts as a container for parameter and/or return customizations. * * @author Dennis M. Sosnoski */ public class ServiceCustom extends NestingBase { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "binding-name", "excludes", "includes", "port-name", "port-type-name", "service-address", "service-name", "wsdl-namespace" }, NestingBase.s_allowedAttributes); // values specific to service level private final String m_className; private String m_serviceName; private String m_portName; private String m_bindingName; private String m_portTypeName; private String m_wsdlNamespace; private String m_serviceAddress; private List m_documentation; private String[] m_includes; private String[] m_excludes; // list of contained operation customizations private final ArrayList m_operations; // values filled in by apply() method private IClass m_classInformation; private String m_namespace; /** * Constructor. * * @param parent * @param clas */ public ServiceCustom(SharedNestingBase parent, String clas) { super(parent); m_className = clas; m_operations = new ArrayList(); } /** * Make sure all attributes are defined. * * @param uctx unmarshalling context */ private void preSet(IUnmarshallingContext uctx) { validateAttributes(uctx, s_allowedAttributes); } /** * Get service class name. * * @return class name */ public String getClassName() { return m_className; } /** * Get the service name. * * @return service name */ public String getServiceName() { return m_serviceName; } /** * Get the port name. * * @return port name */ public String getPortName() { return m_portName; } /** * Get the binding name. * * @return binding name */ public String getBindingName() { return m_bindingName; } /** * Get the portType name. * * @return portType name */ public String getPortTypeName() { return m_portTypeName; } /** * Get the service address. * * @return service address */ public String getServiceAddress() { return m_serviceAddress; } /** * Get service documentation node list. * * @return list of documentation nodes (null if none) */ public List getDocumentation() { return m_documentation; } /** * Get list of method names to be excluded as operations. * * @return excludes (null if none) */ public String[] getExcludes() { return m_excludes; } /** * Get list of method names to be included as operations. * * @return includes (null if none) */ public String[] getIncludes() { return m_includes; } /** * Get list of children. * * @return list */ public ArrayList getOperations() { return m_operations; } /** * Get the namespace for WSDL definitions of this service. This value is set by the {@link #apply(IClassLocator)} * method. * * @return WSDL namespace */ public String getWsdlNamespace() { return m_wsdlNamespace; } /** * Add child. * * @param child */ protected void addChild(CustomBase child) { if (child.getParent() == this) { m_operations.add(child); } else { throw new IllegalStateException("Internal error: child not linked"); } } /** * Unmarshalling factory. This gets the containing element and the name so that the standard constructor can be * used. * * @param ictx * @return created instance * @throws JiBXException */ private static ServiceCustom factory(IUnmarshallingContext ictx) throws JiBXException { return new ServiceCustom((SharedNestingBase)getContainingObject(ictx), ((UnmarshallingContext)ictx) .attributeText(null, "class")); } /** * Derive service-specific namespace URI. The appends the service name to the supplied URI, adding a path separator * if necessary. * * @param uri base URI * @return service-specific URI */ private String deriveServiceNamespace(String uri) { if (!uri.endsWith("/")) { uri = uri + '/'; } uri = uri + m_serviceName; return uri; } /** * Apply customizations to service to fill out members. * * @param icl class locator */ public void apply(IClassLocator icl) { // find the service class information m_classInformation = icl.getClassInfo(m_className); // create documentation formatter DocumentFormatter fmt = new DocumentFormatter(); // fill in any missing details int split = m_className.lastIndexOf('.'); if (m_serviceName == null) { String simple = m_className.substring(split + 1); String name = convertName(simple, UPPER_CAMEL_CASE_NAMES); m_serviceName = registerName(name, this); } else if (!m_serviceName.equals(registerName(m_serviceName, this))) { throw new IllegalStateException("Service name conflict for '" + m_serviceName + '\''); } if (m_portName == null) { m_portName = m_serviceName + "Port"; } if (m_bindingName == null) { m_bindingName = m_serviceName + "Binding"; } if (m_portTypeName == null) { m_portTypeName = m_serviceName + "PortType"; } String uri = getSpecifiedNamespace(); if (uri == null) { // append service name to inherited setting uri = deriveNamespace(getParent().getNamespace(), m_className, getNamespaceStyle()); uri = deriveServiceNamespace(uri); } setNamespace(uri); if (m_wsdlNamespace == null) { // no WSDL namespace set, check parent setting String ns = ((NestingBase)getParent()).getWsdlNamespace(); if (ns == null) { // no setting, use class package and service name m_wsdlNamespace = packageToNamespace(packageOfType(m_className)) + '/' + m_serviceName; } else { // append service name to supplied setting m_wsdlNamespace = deriveServiceNamespace(ns); } } if (m_serviceAddress == null) { String base = getServiceBase(); if (base != null) { StringBuffer buff = new StringBuffer(base); if (!base.endsWith("/")) { buff.append('/'); } buff.append(m_serviceName); m_serviceAddress = buff.toString(); } } if (m_documentation == null) { m_documentation = fmt.docToNodes(m_classInformation.getJavaDoc()); } // register any predefined operation children for (int i = 0; i < m_operations.size(); i++) { OperationCustom op = (OperationCustom)m_operations.get(i); String name = op.getOperationName(); if (name != null) { if (registerName(name, op) != name) { throw new IllegalStateException("Duplicate operation name " + name); } } } // generate an operation for each exposed method in service class Set inclset = CustomUtils.noCaseNameSet(m_includes); Set exclset = CustomUtils.noCaseNameSet(m_excludes); Map opmap = new HashMap(); for (int i = 0; i < m_operations.size(); i++) { OperationCustom op = (OperationCustom)m_operations.get(i); opmap.put(op.getMethodName().toLowerCase(), op); } IClassItem[] methods = m_classInformation.getMethods(); for (int i = 0; i < methods.length; i++) { IClassItem method = methods[i]; String name = method.getName(); String lcname = name.toLowerCase(); int access = method.getAccessFlags(); OperationCustom op = (OperationCustom)opmap.get(lcname); if (op == null) { if (!Modifier.isStatic(access) && !Modifier.isTransient(access) && !"".equals(name)) { boolean use = true; if (inclset != null) { use = inclset.contains(lcname); } else if (exclset != null) { use = !exclset.contains(lcname); } if (use) { op = new OperationCustom(this, name); m_operations.add(op); } } } if (op != null) { op.apply(method, icl, fmt); } } } }libjibx-java-1.1.6a/build/src/org/jibx/ws/wsdl/SignatureParser.java0000644000175000017500000002110410651200546025073 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.ws.wsdl; /** * Pull parser for generic method or field signature. * * @author Dennis M. Sosnoski */ public class SignatureParser { // // Signature events public static final int END_EVENT = 0; public static final int TYPE_EVENT = 1; public static final int METHOD_PARAMETERS_START_EVENT = 2; public static final int METHOD_PARAMETERS_END_EVENT = 3; public static final int TYPE_PARAMETERS_START_EVENT = 4; public static final int TYPE_PARAMETERS_END_EVENT = 5; // // Common types private static final String STRING_SIGNATURE = "java/lang/String;"; private static final String STRING_TYPE = "java.lang.String"; private static final String OBJECT_SIGNATURE = "java/lang/Object;"; private static final String OBJECT_TYPE = "java.lang.Object"; // // Instance data private final String m_signature; private int m_offset; private int m_event; private boolean m_isPrimitive; private boolean m_isParameterized; private String m_type; /** * Constructor. * * @param sig signature attribute value */ public SignatureParser(String sig) { if (sig.startsWith("Signature(") && sig.endsWith(")")) { m_signature = sig.substring(10, sig.length() - 1); m_event = -1; } else { throw new IllegalArgumentException("Internal error: not a valid Signature"); } } /** * Check if type is parameterized. It is an error to call this if the current event is not {@link #TYPE_EVENT}. * * @return true if parameterized type */ public boolean isParameterized() { if (m_event == TYPE_EVENT) { return m_isParameterized; } else { throw new IllegalStateException("Internal error: not at TYPE_EVENT"); } } /** * Check if type is a primitive. It is an error to call this if the current event is not {@link #TYPE_EVENT}. * * @return true if primitive type */ public boolean isPrimitive() { if (m_event == TYPE_EVENT) { return m_isPrimitive; } else { throw new IllegalStateException("Internal error: not at TYPE_EVENT"); } } /** * Get current event. * * @return event */ public int getEvent() { return m_event; } /** * Get type. It is an error to call this if the current event is not {@link #TYPE_EVENT}. * * @return type */ public String getType() { if (m_event == TYPE_EVENT) { return m_type; } else { throw new IllegalStateException("Internal error: not at TYPE_EVENT"); } } /** * Get next parse event. * * @return event */ public int next() { if (m_event == END_EVENT) { throw new IllegalStateException("Internal error: cannot advance parser"); } else if (m_offset >= m_signature.length()) { m_event = END_EVENT; } else { // assume next event is a primitive type, then correct if necessary m_event = TYPE_EVENT; m_isPrimitive = true; m_isParameterized = false; char chr = m_signature.charAt(m_offset++); switch (chr) { // blocking start/end characters case '(': m_event = METHOD_PARAMETERS_START_EVENT; break; case ')': m_event = METHOD_PARAMETERS_END_EVENT; break; case '<': m_event = TYPE_PARAMETERS_START_EVENT; break; case '>': m_event = TYPE_PARAMETERS_END_EVENT; if (m_offset < m_signature.length() && m_signature.charAt(m_offset) == ';') { m_offset++; } break; // primitive type indication characters case 'B': m_type = "byte"; break; case 'C': m_type = "char"; break; case 'D': m_type = "double"; break; case 'F': m_type = "float"; break; case 'I': m_type = "int"; break; case 'J': m_type = "long"; break; case 'S': m_type = "short"; break; case 'V': m_type = "void"; break; case 'Z': m_type = "boolean"; break; // object type case 'L': { m_isPrimitive = false; if (m_signature.startsWith(STRING_SIGNATURE, m_offset)) { m_offset += STRING_SIGNATURE.length(); m_type = STRING_TYPE; } else if (m_signature.startsWith(OBJECT_SIGNATURE, m_offset)) { m_offset += OBJECT_SIGNATURE.length(); m_type = OBJECT_TYPE; } else { StringBuffer buff = new StringBuffer(); boolean done = false; while (m_offset < m_signature.length()) { chr = m_signature.charAt(m_offset++); if (chr == '/') { buff.append('.'); } else if (chr == ';') { done = true; break; } else if (chr == '<') { done = true; m_offset--; m_isParameterized = true; break; } else { buff.append(chr); } } if (!done) { throw new IllegalStateException("Internal error: cannot interpret type"); } else { m_type = buff.toString(); } } break; } // error if anything else default: throw new IllegalStateException("Internal error: signature parse state"); } } return m_event; } }libjibx-java-1.1.6a/build/src/org/jibx/ws/wsdl/ThrowsCustom.java0000644000175000017500000000765710651200546024457 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.ws.wsdl; import java.util.List; import org.jibx.binding.generator.CustomBase; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.UnmarshallingContext; /** * Method throws customization information. This just defines the actual exceptions to be handled for a method * * @author Dennis M. Sosnoski */ public class ThrowsCustom extends CustomBase { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "class" }); // value customization information private String m_type; private List m_documentation; /** * Constructor. * * @param parent * @param type fully-qualified class name thrown */ protected ThrowsCustom(NestingBase parent, String type) { super(parent); m_type = type; } /** * Make sure all attributes are defined. * * @param uctx unmarshalling context */ private void preSet(IUnmarshallingContext uctx) { validateAttributes(uctx, s_allowedAttributes); } /** * Get fully-qualified class name thrown. * * @return type */ public String getType() { return m_type; } /** * Get value documentation node list. This method should only be used after the {@link #complete(List)} method is * called. * * @return list of documentation nodes (null if none) */ public List getDocumentation() { return m_documentation; } /** * Complete customization information using supplied default documentation. * * @param docs default documentation text (null if none) */ /* package */void complete(List docs) { if (m_documentation == null) { m_documentation = docs; } } /** * Parameter value unmarshalling factory. This gets the containing element and the name so that the standard * constructor can be used. * * @param ictx * @return created instance * @throws JiBXException */ private static ThrowsCustom throwsFactory(IUnmarshallingContext ictx) throws JiBXException { return new ThrowsCustom((OperationCustom)getContainingObject(ictx), ((UnmarshallingContext)ictx).attributeText( null, "class")); } }libjibx-java-1.1.6a/build/src/org/jibx/ws/wsdl/ValueCustom.java0000644000175000017500000002237110651200546024233 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.ws.wsdl; import java.util.List; import org.jibx.binding.classes.ClassItem; import org.jibx.binding.generator.ClassCustom; import org.jibx.binding.generator.CustomBase; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.UnmarshallingContext; /** * Method parameter or return value customization information. * * @author Dennis M. Sosnoski */ public class ValueCustom extends CustomBase { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "element-name", "required", "type" }); // value customization information private boolean m_primitive; // internal use, not included in binding private String m_boundType; // internal use, not included in binding private String m_valueName; private String m_elementName; private String m_type; private String m_createType; private String m_factoryMethod; private Boolean m_required; private List m_documentation; /** * Constructor. * * @param parent * @param name */ protected ValueCustom(NestingBase parent, String name) { super(parent); m_valueName = name; } /** * Make sure all attributes are defined. * * @param uctx unmarshalling context */ private void preSet(IUnmarshallingContext uctx) { validateAttributes(uctx, s_allowedAttributes); } /** * Get value name. * * @return name */ public String getValueName() { return m_valueName; } /** * Get XML element name. * * @return name */ public String getElementName() { return m_elementName; } /** * Set XML element name. * * @param name */ public void setElementName(String name) { m_elementName = name; } /** * Get value type. This method should only be used after the {@link #complete(String, List, Boolean)} method is * called. * * @return value type */ public String getType() { return m_type; } /** * Get item type for parameterized list collection. This base class implementation always returns null. * * @return null */ public String getItemType() { return null; } /** * Get value type to be bound. This is the same as the plain value type for a simple (non-collection); for an array * value, it's just the array item type; and for a non-array collection it takes the same form as a generic type * declaration, with the actual item type enclosed in a less-than/greater-than sign pair following the base type. * * @return parmaterized type */ public String getBoundType() { return m_boundType; } /** * Get name for elements representing items in collection. This base class implementation always returns * null. * * @return null */ public String getItemElementName() { return null; } /** * Get member create type. * * @return type used for creating new instance (null if none) */ public String getCreateType() { return m_createType; } /** * Get factory method. * * @return method used for creating new instance (null if none) */ public String getFactoryMethod() { return m_factoryMethod; } /** * Check if value is required. * * @return true if required, false if not */ public boolean isRequired() { if (m_required == null) { if (m_primitive) { return getParent().isPrimitiveRequired(m_type); } else { return getParent().isObjectRequired(m_type); } } else { return m_required.booleanValue(); } } /** * Get value documentation node list. This method should only be used after the * {@link #complete(String, List, Boolean)} method is called. * * @return list of documentation nodes (null if none) */ public List getDocumentation() { return m_documentation; } /** * Complete customization information based on supplied type. If the type information has not previously been set, * this will set it. It will also derive the appropriate XML name, if not previously set. * * @param type (null if none available) * @param docs default documentation text (null if none) * @param req required member flag (null if unknown) */ /* package */void complete(String type, List docs, Boolean req) { if (m_type == null) { if (type == null) { m_type = "java.lang.Object"; } else { m_type = type; } } m_primitive = ClassItem.isPrimitive(m_type); // TODO: check consistency of setting if (m_required == null) { m_required = req; } if (m_documentation == null) { m_documentation = docs; } String itype = getItemType(); if (itype == null) { if (type.endsWith("[]")) { m_boundType = type.substring(0, type.length() - 2); } else { m_boundType = type; } } else { m_boundType = type + '<' + itype + '>'; } if (!m_primitive && m_createType == null && m_factoryMethod == null) { ClassCustom cust = getGlobal().getClassCustomization(type); if (cust != null) { m_createType = cust.getCreateType(); m_factoryMethod = cust.getFactoryMethod(); } } } /** * Parameter value unmarshalling factory. This gets the containing element and the name so that the standard * constructor can be used. * * @param ictx * @return created instance * @throws JiBXException */ private static ValueCustom parameterFactory(IUnmarshallingContext ictx) throws JiBXException { return new ValueCustom((OperationCustom)getContainingObject(ictx), ((UnmarshallingContext)ictx).attributeText( null, "name")); } /** * Return value unmarshalling factory. This gets the containing element so that the standard constructor can be * used. * * @param ictx * @return created instance */ private static ValueCustom returnFactory(IUnmarshallingContext ictx) { return new ValueCustom((OperationCustom)getContainingObject(ictx), "return"); } /** * Parameter value unmarshalling factory. This gets the containing element and the name so that the standard * constructor can be used. * * @param ictx * @return created instance * @throws JiBXException */ private static CollectionValueCustom collectionParameterFactory(IUnmarshallingContext ictx) throws JiBXException { return new CollectionValueCustom((OperationCustom)getContainingObject(ictx), ((UnmarshallingContext)ictx) .attributeText(null, "name")); } /** * Return value unmarshalling factory. This gets the containing element so that the standard constructor can be * used. * * @param ictx * @return created instance */ private static CollectionValueCustom collectionReturnFactory(IUnmarshallingContext ictx) { return new CollectionValueCustom((OperationCustom)getContainingObject(ictx), "return"); } }libjibx-java-1.1.6a/build/src/org/jibx/ws/wsdl/WsdlCustom.java0000644000175000017500000002051110651200546024062 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.ws.wsdl; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.jibx.binding.generator.IApply; import org.jibx.binding.generator.SharedNestingBase; import org.jibx.binding.model.IClassLocator; import org.jibx.binding.util.StringArray; import org.jibx.runtime.IUnmarshallingContext; /** * Global customization information for WSDL generation. This extends the binding customization model to include the * information used for service definitions. * * @author Dennis M. Sosnoski */ public class WsdlCustom extends NestingBase implements IApply { /** Enumeration of allowed attribute names */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "wsdl-namespace" }, NestingBase.s_allowedAttributes); /** Customization value from unmarshalling. */ private String m_wsdlNamespace; /** List of Fault definitions. */ private final ArrayList m_faultList; /** Map from fully-qualified class name to Fault information. */ private final Map m_faultMap; /** List of services, in order added. */ private final ArrayList m_serviceList; /** Map from fully-qualified class name to service information. */ private final Map m_serviceMap; /** Class locator. */ private IClassLocator m_locator; /** * Constructor. * * @param parent */ public WsdlCustom(SharedNestingBase parent) { super(parent); m_faultList = new ArrayList(); m_faultMap = new HashMap(); m_serviceList = new ArrayList(); m_serviceMap = new HashMap(); } /** * Make sure all attributes are defined. * * @param uctx unmarshalling context */ private void preSet(IUnmarshallingContext uctx) { validateAttributes(uctx, s_allowedAttributes); } /** * Get the namespace for WSDL definitions of services. * * @return WSDL namespace (null if unspecified) */ public String getWsdlNamespace() { return m_wsdlNamespace; } /** * Set the namespace for WSDL definitions of services. * * @param uri WSDL namespace (null if to be derived from service class name) */ public void setWsdlNamespace(String uri) { m_wsdlNamespace = uri; } /** * Get list of Faults. * * @return fault list */ public List getFaults() { return m_faultList; } /* * (non-Javadoc) * * @see org.jibx.binding.generator.SharedNestingBase#getNameStyle() */ public int getNameStyle() { return CAMEL_CASE_NAMES; } /** * Get fault customization information. This method should only be used after the {@link #apply(IClassLocator)} * method is called. * * @param type fully qualified class name * @return fault customization (null if none) */ public FaultCustom getFaultCustomization(String type) { return (FaultCustom)m_faultMap.get(type); } /** * Force fault customization information. This method should only be used after the {@link #apply(IClassLocator)} * method is called. If the fault customization information has not previously been created, it will be created by * this call. * * @param type fully qualified exception class name * @return fault customization (null if none) */ public FaultCustom forceFaultCustomization(String type) { FaultCustom fault = (FaultCustom)m_faultMap.get(type); if (fault == null) { fault = new FaultCustom(this, type); fault.apply(m_locator); m_faultMap.put(type, fault); } return fault; } /** * Get list of services. * * @return service list */ public List getServices() { return m_serviceList; } /** * Get service customization information. This method should only be used after the {@link #apply(IClassLocator)} * method is called. * * @param type fully qualified class name * @return service customization (null if none) */ public ServiceCustom getServiceCustomization(String type) { return (ServiceCustom)m_serviceMap.get(type); } /** * Add new service customization. This creates the service customization, using defaults, and adds it to the * internal structures. This method should only be used after first calling {@link #getServiceCustomization(String)} * and obtaining a null result. * * @param type fully qualified class name * @return service customization */ public ServiceCustom addServiceCustomization(String type) { ServiceCustom service = new ServiceCustom(this, type); service.apply(m_locator); m_serviceList.add(service); m_serviceMap.put(type, service); return service; } /** * Unmarshalling factory. This gets the containing element and the name so that the standard constructor can be * used. * * @param ictx * @return created instance */ private static WsdlCustom factory(IUnmarshallingContext ictx) { return new WsdlCustom((SharedNestingBase)getContainingObject(ictx)); } /** * Apply customizations to services to fill out members. * * @param icl class locator */ public void apply(IClassLocator icl) { // save locator for later use (when services are added) m_locator = icl; // inherit namespace directly from package level, if not specified String ns = getSpecifiedNamespace(); if (ns == null) { ns = getParent().getNamespace(); } setNamespace(ns); // fix Faults and create map for (int i = 0; i < m_faultList.size(); i++) { FaultCustom fault = (FaultCustom)m_faultList.get(i); fault.apply(icl); m_faultMap.put(fault.getExceptionType(), fault); } // register services with names supplied (priority over generated names) for (int i = 0; i < m_serviceList.size(); i++) { ServiceCustom service = (ServiceCustom)m_serviceList.get(i); String name = service.getServiceName(); if (name != null) { if (registerName(name, service) != name) { throw new IllegalStateException("Duplicate service name " + name); } } } // fix services and create map for (int i = 0; i < m_serviceList.size(); i++) { ServiceCustom service = (ServiceCustom)m_serviceList.get(i); service.apply(icl); m_serviceMap.put(service.getClassName(), service); } } }libjibx-java-1.1.6a/build/src/org/jibx/ws/wsdl/WsdlGeneratorCommandLine.java0000644000175000017500000001657010720550644026663 0ustar moellermoeller/* * Copyright (c) 2007, Dennis M. Sosnoski 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.ws.wsdl; import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import org.jibx.binding.generator.ClassCustomizationBase; import org.jibx.binding.generator.GlobalCustom; import org.jibx.binding.model.IClassLocator; import org.jibx.runtime.BindingDirectory; import org.jibx.runtime.IBindingFactory; import org.jibx.runtime.IUnmarshallable; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.schema.validation.ValidationContext; /** * Command line processing specifically for the {@link Jibx2Wsdl} class. * * @author Dennis M. Sosnoski */ public class WsdlGeneratorCommandLine extends ClassCustomizationBase { /** Ordered array of extra usage lines. */ protected static final String[] EXTRA_USAGE_LINES = new String[] { " -b generated root binding name (default is 'binding.xml')", // " -d use pure doc/lit (not wrapped) style" " -x class,... names of extra classes to be included in binding" }; /** Class locator used to complete customizations. */ private IClassLocator m_locator; /** Global customizations model root. */ private GlobalCustom m_global; /** WSDL customizations model root. */ private WsdlCustom m_wsdlCustom; /** List of extra classes for binding. */ private List m_extraTypes = new ArrayList(); /** Name used for root binding. */ private String m_bindingName = "binding.xml"; /** * Get class locator. * * @return locator */ public IClassLocator getLocator() { return m_locator; } /** * Get customizations model root. * * @return customizations */ public GlobalCustom getGlobal() { return m_global; } /** * Get WSDL customizations model root. * * @return WSDL customizations */ public WsdlCustom getWsdlCustom() { return m_wsdlCustom; } /** * Get binding name. * * @return name */ public String getBindingName() { return m_bindingName; } /** * Get extra classes to be included in binding. * * @return list */ public List getExtraTypes() { return m_extraTypes; } /* * (non-Javadoc) * * @see org.jibx.binding.generator.CustomizationCommandLineBase#checkParameter(org.jibx.binding.generator.CustomizationCommandLineBase.ArgList) */ protected boolean checkParameter(ArgList alist) { String arg = alist.current(); boolean match = true; if ("-b".equalsIgnoreCase(arg)) { m_bindingName = alist.next(); } else if ("-x".equalsIgnoreCase(arg)) { String text = alist.next(); if (text != null) { int split; int base = 0; while ((split = text.indexOf(',', base)) > 0) { m_extraTypes.add(text.substring(base, split)); base = split + 1; } m_extraTypes.add(text.substring(base)); } } else { match = super.checkParameter(alist); } return match; } /* * (non-Javadoc) * * @see org.jibx.binding.generator.CustomizationCommandLineBase#loadCustomizations(String,IClassLocator,org.jibx.schema.validation.ValidationContext) */ protected void loadCustomizations(String path, IClassLocator loc, ValidationContext vctx) throws JiBXException, IOException { // load or create customization information m_global = new GlobalCustom(loc); if (path == null) { m_global.setAddConstructors(true); m_global.setForceClasses(true); m_global.setMapAbstract(Boolean.TRUE); } else { IBindingFactory fact = BindingDirectory.getFactory(WsdlCustom.class); IUnmarshallingContext ictx = fact.createUnmarshallingContext(); FileInputStream is = new FileInputStream(path); ictx.setDocument(is, null); ictx.setUserContext(vctx); ((IUnmarshallable)m_global).unmarshal(ictx); } // find or build WSDL customization WsdlCustom custom = null; List extens = m_global.getExtensionChildren(); for (Iterator iter = extens.iterator(); iter.hasNext();) { Object exten = iter.next(); if (exten instanceof WsdlCustom) { custom = (WsdlCustom)exten; break; } } if (custom == null) { custom = new WsdlCustom(m_global); m_global.addExtensionChild(custom); } m_wsdlCustom = custom; m_locator = loc; } /* * (non-Javadoc) * * @see org.jibx.binding.generator.CustomizationCommandLineBase#applyOverrides(Map) */ protected Map applyOverrides(Map overmap) { Map unknowns = applyKeyValueMap(overmap, m_global); unknowns = applyKeyValueMap(unknowns, m_wsdlCustom); m_global.initClasses(); m_global.fillClasses(); return unknowns; } /* * (non-Javadoc) * * @see org.jibx.binding.generator.CustomizationCommandLineBase#printUsage() */ public void printUsage() { System.out .println("\nUsage: java org.jibx.wsdl.Jibx2Wsdl " + "[options] class1 class2 ...\nwhere options are:"); String[] usages = mergeUsageLines(getBaseUsage(), EXTRA_USAGE_LINES); for (int i = 0; i < usages.length; i++) { System.out.println(usages[i]); } System.out.println("The class# files are different classes to be exposed as " + "services (references from\nthese classes will automatically be " + "included in the generated bindings).\n"); } }libjibx-java-1.1.6a/build/src/org/jibx/ws/wsdl/WsdlWriter.java0000644000175000017500000002055110651200546024070 0ustar moellermoeller/* * Copyright (c) 2004-2007, Dennis M. Sosnoski. 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 * JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.ws.wsdl; import java.io.IOException; import java.io.OutputStream; import java.util.Iterator; import java.util.Map; import java.util.Set; import org.jibx.runtime.BindingDirectory; import org.jibx.runtime.IBindingFactory; import org.jibx.runtime.IMarshallable; import org.jibx.runtime.IMarshaller; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IXMLWriter; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.MarshallingContext; import org.jibx.schema.elements.SchemaElement; import org.jibx.util.StringIntSizedMap; /** * WSDL writer class. This handles writing generated WSDLs and schemas. * * @author Dennis M. Sosnoski */ public class WsdlWriter { /** Fixed URI for WSDL namespace. */ public static final String WSDL_NAMESPACE_URI = "http://schemas.xmlsoap.org/wsdl/"; /** Fixed prefix for WSDL namespace. */ public static final String WSDL_NAMESPACE_PREFIX = "wsdl"; /** Fixed URI for SOAP namespace. */ public static final String SOAP_NAMESPACE_URI = "http://schemas.xmlsoap.org/wsdl/soap/"; /** Fixed prefix for SOAP namespace. */ public static final String SOAP_NAMESPACE_PREFIX = "soap"; /** Fixed prefix for WSDL target namespace. */ public static final String DEFINITIONS_NAMESPACE_PREFIX = "wns"; /** Namespaces defined in binding. */ private StringIntSizedMap s_namespaceMap; /** Index of definitions class in binding. */ private int s_definitionsIndex; /** Namespace index for the WSDL namespace. */ private int s_wsdlNamespaceIndex; /** Map from extra namespace URIs to prefixes. */ private Map m_uriPrefixMap; /** Namespace index for the SOAP namespace. */ private int s_soapNamespaceIndex; /** Marshalling context. */ private final MarshallingContext m_marshalContext; /** * Constructor. * * @throws JiBXException on error creating marshaller */ public WsdlWriter() throws JiBXException { // set the marshalling contexts IBindingFactory ifact = BindingDirectory.getFactory(Definitions.class); m_marshalContext = (MarshallingContext)ifact.createMarshallingContext(); // initialize namespace URI to index map String[] nss = ifact.getNamespaces(); s_namespaceMap = new StringIntSizedMap(nss.length); for (int i = 0; i < nss.length; i++) { s_namespaceMap.add(nss[i], i); } // create other statics used in code s_wsdlNamespaceIndex = s_namespaceMap.get(WSDL_NAMESPACE_URI); s_soapNamespaceIndex = s_namespaceMap.get(SOAP_NAMESPACE_URI); // find the index for the root object in WSDL String[] classes = ifact.getMappedClasses(); s_definitionsIndex = -1; String cname = Definitions.class.getName(); for (int i = 0; i < classes.length; i++) { if (cname.equals(classes[i])) { s_definitionsIndex = i; break; } } if (s_definitionsIndex < 0) { throw new JiBXException("Missing binding definition for " + cname); } } /** * Write WSDL for service to output stream. * * @param def WSDL definitions information * @param os destination output stream * @exception JiBXException on error creating WSDL output */ public void writeWSDL(Definitions def, OutputStream os) throws JiBXException { // configure context for output stream m_marshalContext.setOutput(os, null); m_marshalContext.setIndent(2); m_marshalContext.setUserContext(def); // set up information for namespace indexes and prefixes Set uriset = def.getNamespaces(); String[] uris = new String[uriset.size()]; int[] indexes = new int[uris.length + 2]; String[] prefs = new String[uris.length + 2]; IXMLWriter writer = m_marshalContext.getXmlWriter(); int base = writer.getNamespaceCount(); int index = 0; for (Iterator iter = uriset.iterator(); iter.hasNext();) { String uri = (String)iter.next(); uris[index] = uri; indexes[index] = base + index; prefs[index++] = def.getPrefix(uri); } indexes[index] = s_wsdlNamespaceIndex; prefs[index++] = WSDL_NAMESPACE_PREFIX; indexes[index] = s_soapNamespaceIndex; prefs[index] = SOAP_NAMESPACE_PREFIX; // add the namespace declarations to current element writer.pushExtensionNamespaces(uris); /* * writer.openNamespaces(indexes, prefs); for (int i = 0; i < uris.length; i++) { String prefix = prefs[i]; * String name = prefix.length() > 0 ? "xmlns:" + prefix : "xmlns"; writer.addAttribute(0, name, uris[i]); } */ // write start tag with added namespaces m_marshalContext.startTagNamespaces(s_wsdlNamespaceIndex, "definitions", indexes, prefs); m_marshalContext.attribute(0, "targetNamespace", def.getWsdlNamespace()); m_marshalContext.closeStartContent(); // marshal out remaining data IMarshaller mar = m_marshalContext.getMarshaller(s_definitionsIndex, Definitions.class.getName()); mar.marshal(def, m_marshalContext); // finish with close tag m_marshalContext.endTag(s_wsdlNamespaceIndex, "definitions"); m_marshalContext.endDocument(); } /** * Serialize a reference to a name defined in the WSDL. This generates the name text with the prefix (if any) used * for the WSDL target namespace. * * @param name base name * @param ictx * @return qualified name with WSDL definitions prefix */ public static String WsdlPrefixSerializer(String name, IMarshallingContext ictx) { Definitions def = (Definitions)ictx.getUserContext(); return def.getWsdlPrefix() + ':' + name; } public static class SchemaMarshaller implements IMarshaller { /** Marshalling context for schema. */ private final MarshallingContext m_schemaContext; public SchemaMarshaller() throws JiBXException { IBindingFactory ifact = BindingDirectory.getFactory(SchemaElement.class); m_schemaContext = (MarshallingContext)ifact.createMarshallingContext(); } public boolean isExtension(int index) { return false; } public void marshal(Object obj, IMarshallingContext ctx) throws JiBXException { try { m_schemaContext.setFromContext((MarshallingContext)ctx); ((IMarshallable)obj).marshal(m_schemaContext); m_schemaContext.getXmlWriter().flush(); } catch (IOException e) { throw new JiBXException("Error writing schema", e); } } } }libjibx-java-1.1.6a/build/src/org/jibx/ws/wsdl/binding.xml0000644000175000017500000001204010651200546023245 0ustar moellermoeller libjibx-java-1.1.6a/build/src/org/jibx/ws/wsdl/wsdl-binding.xml0000644000175000017500000001304710611643134024224 0ustar moellermoeller libjibx-java-1.1.6a/build/test/0000755000175000017500000000000011021525452016155 5ustar moellermoellerlibjibx-java-1.1.6a/build/test/data/0000755000175000017500000000000011021525452017066 5ustar moellermoellerlibjibx-java-1.1.6a/build/test/data/binding-5.xml0000644000175000017500000000614711002545554021400 0ustar moellermoeller libjibx-java-1.1.6a/build/test/data/binding-6.xml0000644000175000017500000000427211002545554021376 0ustar moellermoeller libjibx-java-1.1.6a/build/test/data/binding0.xml0000644000175000017500000000306310210704436021304 0ustar moellermoeller libjibx-java-1.1.6a/build/test/data/binding1.xml0000644000175000017500000000313710210704436021307 0ustar moellermoeller libjibx-java-1.1.6a/build/test/data/binding2-shared.xml0000644000175000017500000000231510210704436022551 0ustar moellermoeller libjibx-java-1.1.6a/build/test/data/binding2.xml0000644000175000017500000000112510210704436021303 0ustar moellermoeller libjibx-java-1.1.6a/build/test/data/binding2a.xml0000644000175000017500000000107011006326744021451 0ustar moellermoeller libjibx-java-1.1.6a/build/test/data/binding3.xml0000644000175000017500000000441610210704436021312 0ustar moellermoeller libjibx-java-1.1.6a/build/test/data/binding3a.xml0000644000175000017500000000514010240174042021443 0ustar moellermoeller libjibx-java-1.1.6a/build/test/data/binding4.xml0000644000175000017500000000432110210704436021306 0ustar moellermoeller libjibx-java-1.1.6a/build/test/data/binding5a-include1.xml0000644000175000017500000000156010210704436023154 0ustar moellermoeller libjibx-java-1.1.6a/build/test/data/binding5a-include2.xml0000644000175000017500000000313710210704436023157 0ustar moellermoeller libjibx-java-1.1.6a/build/test/data/binding5a.xml0000644000175000017500000000127410210704436021454 0ustar moellermoeller libjibx-java-1.1.6a/build/test/data/binding5b-formats.xml0000644000175000017500000000055110524437214023130 0ustar moellermoeller libjibx-java-1.1.6a/build/test/data/binding5b-include2.xml0000644000175000017500000000256210524437214023166 0ustar moellermoeller libjibx-java-1.1.6a/build/test/data/binding5b.xml0000644000175000017500000000135110524437214021456 0ustar moellermoeller libjibx-java-1.1.6a/build/test/data/binding5c-include1.xml0000644000175000017500000000156010435546422023166 0ustar moellermoeller libjibx-java-1.1.6a/build/test/data/binding5c-include2.xml0000644000175000017500000000266210443032556023170 0ustar moellermoeller libjibx-java-1.1.6a/build/test/data/binding5c-include3.xml0000644000175000017500000000063110435546422023166 0ustar moellermoeller libjibx-java-1.1.6a/build/test/data/binding5c.xml0000644000175000017500000000114610443032556021461 0ustar moellermoeller libjibx-java-1.1.6a/build/test/data/binding5d-include1.xml0000644000175000017500000000213510602646642023167 0ustar moellermoeller libjibx-java-1.1.6a/build/test/data/binding5d-include2.xml0000644000175000017500000000312010602646642023163 0ustar moellermoeller libjibx-java-1.1.6a/build/test/data/binding5d-include3.xml0000644000175000017500000000105010602646642023164 0ustar moellermoeller libjibx-java-1.1.6a/build/test/data/binding5d.xml0000644000175000017500000000034710602646642021470 0ustar moellermoeller libjibx-java-1.1.6a/build/test/data/splittable3.xml0000644000175000017500000001677610074704750022066 0ustar moellermoeller NL 4 http://www.northleft.com Northleft Airlines CL 9 http://www.classyskylines.com Classy Skylines FF 10 http://www.finefrenchair.com Voies Aériennes Françaises Fines BOS Boston, MA Logan International Airport SEA Seattle, WA Seattle-Tacoma International Airport LAX Los Angeles, CA Los Angeles International Airport BOS SEA CL 796 2003-01-01 2005-12-31 4:12a 1:26a NL 328 2003-01-01 2005-12-31 2:54a 1:29a CL 401 2003-01-01 2005-12-31 4:12a 1:25a SEA BOS CL 634 2003-01-01 2005-12-31 7:43a 9:13a NL 508 2003-01-01 2005-12-31 4:38p 6:12p CL 687 2003-01-01 2005-12-31 1:38p 3:08p BOS LAX NL 955 2003-01-01 2005-12-31 1:06a 3:29a NL 937 2003-01-01 2005-12-31 2:00a 3:33a NL 933 2003-01-01 2005-12-31 3:37a 3:28a CL 829 2003-01-01 2005-12-31 9:05a 12:39p LAX BOS NL 200 2003-01-01 2005-12-31 4:05p 7:35p NL 815 2003-01-01 2005-12-31 3:55a 7:25a NL 300 2003-01-01 2005-12-31 11:40p 3:14a CL 600 2003-01-01 2005-12-31 2:44a 3:30a SEA LAX CL 353 2003-01-01 2005-12-31 3:39a 1:56a LAX SEA CL 474 2003-01-01 2005-12-31 5:50p 7:56p libjibx-java-1.1.6a/build/test/data/splittable3a.xml0000644000175000017500000001673610240174042022211 0ustar moellermoeller NL 4 http://www.northleft.com Northleft Airlines CL 9 http://www.classyskylines.com Classy Skylines FF 10 http://www.finefrenchair.com Voies Aériennes Françaises Fines BOS Boston, MA Logan International Airport SEA Seattle, WA Seattle-Tacoma International Airport LAX Los Angeles, CA Los Angeles International Airport CL 796 2003-01-01 2005-12-31 4:12a 1:26a NL 328 2003-01-01 2005-12-31 2:54a 1:29a CL 401 2003-01-01 2005-12-31 4:12a 1:25a CL 634 2003-01-01 2005-12-31 7:43a 9:13a NL 508 2003-01-01 2005-12-31 4:38p 6:12p CL 687 2003-01-01 2005-12-31 1:38p 3:08p NL 955 2003-01-01 2005-12-31 1:06a 3:29a NL 937 2003-01-01 2005-12-31 2:00a 3:33a NL 933 2003-01-01 2005-12-31 3:37a 3:28a CL 829 2003-01-01 2005-12-31 9:05a 12:39p NL 200 2003-01-01 2005-12-31 4:05p 7:35p NL 815 2003-01-01 2005-12-31 3:55a 7:25a NL 300 2003-01-01 2005-12-31 11:40p 3:14a CL 600 2003-01-01 2005-12-31 2:44a 3:30a CL 353 2003-01-01 2005-12-31 3:39a 1:56a CL 474 2003-01-01 2005-12-31 5:50p 7:56p BOS SEA 001 002 003 SEA BOS 004 005 006 BOS LAX 007 008 009 010 LAX BOS 011 012 013 014 SEA LAX 015 LAX SEA 016 libjibx-java-1.1.6a/build/test/data/splittable3b.xml0000644000175000017500000001655610240174042022212 0ustar moellermoeller NL 4 http://www.northleft.com Northleft Airlines CL 9 http://www.classyskylines.com Classy Skylines FF 10 http://www.finefrenchair.com Voies Aériennes Françaises Fines BOS Boston, MA Logan International Airport SEA Seattle, WA Seattle-Tacoma International Airport LAX Los Angeles, CA Los Angeles International Airport CL 796 2003-01-01 2005-12-31 4:12a 1:26a NL 328 2003-01-01 2005-12-31 2:54a 1:29a CL 401 2003-01-01 2005-12-31 4:12a 1:25a CL 634 2003-01-01 2005-12-31 7:43a 9:13a NL 508 2003-01-01 2005-12-31 4:38p 6:12p CL 687 2003-01-01 2005-12-31 1:38p 3:08p NL 955 2003-01-01 2005-12-31 1:06a 3:29a NL 937 2003-01-01 2005-12-31 2:00a 3:33a NL 933 2003-01-01 2005-12-31 3:37a 3:28a CL 829 2003-01-01 2005-12-31 9:05a 12:39p NL 200 2003-01-01 2005-12-31 4:05p 7:35p NL 815 2003-01-01 2005-12-31 3:55a 7:25a NL 300 2003-01-01 2005-12-31 11:40p 3:14a CL 600 2003-01-01 2005-12-31 2:44a 3:30a CL 353 2003-01-01 2005-12-31 3:39a 1:56a CL 474 2003-01-01 2005-12-31 5:50p 7:56p BOS SEA SEA BOS BOS LAX LAX BOS SEA LAX LAX SEA libjibx-java-1.1.6a/build/test/data/splittable4.xml0000644000175000017500000001607610074704750022060 0ustar moellermoeller NL 4 http://www.northleft.com Northleft Airlines CL 9 http://www.classyskylines.com Classy Skylines FF 10 http://www.finefrenchair.com Voies Aériennes Françaises Fines BOS Boston, MA Logan International Airport SEA Seattle, WA Seattle-Tacoma International Airport LAX Los Angeles, CA Los Angeles International Airport BOS SEA CL 796 0.5 2003-01-01 2005-12-31 4:12a 1:26a NL 328 0.5 2003-01-01 2005-12-31 2:54a 1:29a CL 401 0.5 2003-01-01 2005-12-31 4:12a 1:25a SEA BOS CL 634 0.5 2003-01-01 2005-12-31 7:43a 9:13a NL 508 0.5 2003-01-01 2005-12-31 4:38p 6:12p CL 687 0.5 2003-01-01 2005-12-31 1:38p 3:08p BOS LAX NL 955 0.5 2003-01-01 2005-12-31 1:06a 3:29a NL 937 0.5 2003-01-01 2005-12-31 2:00a 3:33a NL 933 0.5 2003-01-01 2005-12-31 3:37a 3:28a CL 829 0.5 2003-01-01 2005-12-31 9:05a 12:39p LAX BOS NL 200 0.5 2003-01-01 2005-12-31 4:05p 7:35p NL 815 0.5 2003-01-01 2005-12-31 3:55a 7:25a NL 300 0.5 2003-01-01 2005-12-31 11:40p 3:14a CL 600 0.5 2003-01-01 2005-12-31 2:44a 3:30a SEA LAX CL 353 0.5 2003-01-01 2005-12-31 3:39a 1:56a LAX SEA CL 474 0.5 2003-01-01 2005-12-31 5:50p 7:56p libjibx-java-1.1.6a/build/test/data/splittable5.xml0000644000175000017500000002250410074704750022052 0ustar moellermoeller http://www.northleft.com Northleft Airlines Nothing *has* to be inside the 'comments'. http://www.classyskylines.com Classy Skylines Any XML structure can go in here. Even elements that have meaning elsewhere. What's inside 'comments' will be ignored when unmarshalling so it'll disappear when data is marshalled back out. http://www.finefrenchair.com Voies Aériennes Françaises Fines rte st Antoine de Ginestière Boston, MA Logan International Airport Seattle, WA Seattle-Tacoma International Airport Los Angeles, CA Los Angeles International Airport BOS SEA 2003-01-01 2005-12-31 4:12a 1:26a 2003-01-01 2005-12-31 2:54a 1:29a 2003-01-01 2005-12-31 4:12a 1:25a SEA BOS 2003-01-01 2005-12-31 7:43a 9:13a 2003-01-01 2005-12-31 4:38p 6:12p 2003-01-01 2005-12-31 1:38p 3:08p BOS LAX 2003-01-01 2005-12-31 1:06a 3:29a 2003-01-01 2005-12-31 2:00a 3:33a 2003-01-01 2005-12-31 3:37a 3:28a 2003-01-01 2005-12-31 9:05a 12:39p LAX BOS 2003-01-01 2005-12-31 4:05p 7:35p 2003-01-01 2005-12-31 3:55a 7:25a 2003-01-01 2005-12-31 11:40p 3:14a 2003-01-01 2005-12-31 2:44a 3:30a SEA LAX 2003-01-01 2005-12-31 3:39a 1:56a LAX SEA 2003-01-01 2005-12-31 5:50p 7:56p libjibx-java-1.1.6a/build/test/data/splittable5a.xml0000644000175000017500000002162410074704750022215 0ustar moellermoeller http://www.northleft.com Northleft Airlines http://www.classyskylines.com Classy Skylines http://www.finefrenchair.com Voies Aériennes Françaises Fines Boston, MA Logan International Airport Seattle, WA Seattle-Tacoma International Airport Los Angeles, CA Los Angeles International Airport BOS SEA 2003-01-01 2005-12-31 4:12a 1:26a 2003-01-01 2005-12-31 2:54a 1:29a 2003-01-01 2005-12-31 4:12a 1:25a SEA BOS 2003-01-01 2005-12-31 7:43a 9:13a 2003-01-01 2005-12-31 4:38p 6:12p 2003-01-01 2005-12-31 1:38p 3:08p BOS LAX 2003-01-01 2005-12-31 1:06a 3:29a 2003-01-01 2005-12-31 2:00a 3:33a 2003-01-01 2005-12-31 3:37a 3:28a 2003-01-01 2005-12-31 9:05a 12:39p LAX BOS 2003-01-01 2005-12-31 4:05p 7:35p 2003-01-01 2005-12-31 3:55a 7:25a 2003-01-01 2005-12-31 11:40p 3:14a 2003-01-01 2005-12-31 2:44a 3:30a SEA LAX 2003-01-01 2005-12-31 3:39a 1:56a LAX SEA 2003-01-01 2005-12-31 5:50p 7:56p libjibx-java-1.1.6a/build/test/data/timetable0.xml0000644000175000017500000000446610074704750021657 0ustar moellermoeller http://www.northleft.com Northleft Airlines http://www.classyskylines.com Classy Skylines http://www.finefrenchair.com Voies Aériennes Françaises Fines Boston, MA Logan International Airport Seattle, WA Seattle-Tacoma International Airport Los Angeles, CA Los Angeles International Airport libjibx-java-1.1.6a/build/test/data/timetable1.xml0000644000175000017500000000706610074704750021657 0ustar moellermoeller 4 http://www.northleft.com Northleft Airlines 9 http://www.classyskylines.com Classy Skylines 10 http://www.finefrenchair.com Voies Aériennes Françaises Fines Boston, MA Logan International Airport Seattle, WA Seattle-Tacoma International Airport Los Angeles, CA Los Angeles International Airport 796 4:12a 1:26a 328 2:54a 1:29a 401 4:12a 1:25a 634 7:43a 9:13a 508 4:38p 6:12p 687 1:38p 3:08p 955 1:06a 3:29a 937 2:00a 3:33a 933 3:37a 3:28a 829 9:05a 12:39p 200 4:05p 7:35p 815 3:55a 7:25a 300 11:40p 3:14a 600 2:44a 3:30a 353 3:39a 1:56a 474 5:50p 7:56p libjibx-java-1.1.6a/build/test/data/timetable2.xml0000644000175000017500000001367610074704750021664 0ustar moellermoeller NL 4 http://www.northleft.com Northleft Airlines CL 9 http://www.classyskylines.com Classy Skylines FF 10 http://www.finefrenchair.com Voies Aériennes Françaises Fines BOS Boston, MA Logan International Airport SEA Seattle, WA Seattle-Tacoma International Airport LAX Los Angeles, CA Los Angeles International Airport BOS SEA CL 796 4:12a 1:26a NL 328 2:54a 1:29a CL 401 4:12a 1:25a SEA BOS CL 634 7:43a 9:13a NL 508 4:38p 6:12p CL 687 1:38p 3:08p BOS LAX NL 955 1:06a 3:29a NL 937 2:00a 3:33a NL 933 3:37a 3:28a CL 829 9:05a 12:39p LAX BOS NL 200 4:05p 7:35p NL 815 3:55a 7:25a NL 300 11:40p 3:14a CL 600 2:44a 3:30a SEA LAX CL 353 3:39a 1:56a LAX SEA CL 474 5:50p 7:56p libjibx-java-1.1.6a/build/test/data/timetable2a.xml0000644000175000017500000001367610074704750022025 0ustar moellermoeller BOS SEA CL 796 4:12a 1:26a NL 328 2:54a 1:29a CL 401 4:12a 1:25a SEA BOS CL 634 7:43a 9:13a NL 508 4:38p 6:12p CL 687 1:38p 3:08p BOS LAX NL 955 1:06a 3:29a NL 937 2:00a 3:33a NL 933 3:37a 3:28a CL 829 9:05a 12:39p LAX BOS NL 200 4:05p 7:35p NL 815 3:55a 7:25a NL 300 11:40p 3:14a CL 600 2:44a 3:30a SEA LAX CL 353 3:39a 1:56a LAX SEA CL 474 5:50p 7:56p BOS Boston, MA Logan International Airport SEA Seattle, WA Seattle-Tacoma International Airport LAX Los Angeles, CA Los Angeles International Airport NL 4 http://www.northleft.com Northleft Airlines CL 9 http://www.classyskylines.com Classy Skylines FF 10 http://www.finefrenchair.com Voies Aériennes Françaises Fines libjibx-java-1.1.6a/build/test/extras/0000755000175000017500000000000011023035622017460 5ustar moellermoellerlibjibx-java-1.1.6a/build/test/extras/Contact0.java0000644000175000017500000000326410071714430022006 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package extras; public class Contact0 { public String m_firstName; public String m_lastName; public String m_phone; private void setIgnored(Object ignore) {} private Object getIgnored() { return null; } }libjibx-java-1.1.6a/build/test/extras/Dom4JContact0.java0000644000175000017500000000316710071714430022646 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package extras; public class Dom4JContact0 { public String m_firstName; public String m_lastName; public String m_phone; public Object m_information; } libjibx-java-1.1.6a/build/test/extras/Dom4JContact1.java0000644000175000017500000000322310071714430022640 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package extras; import org.dom4j.Element; public class Dom4JContact1 { public String m_firstName; public String m_lastName; public String m_phone; public Element m_information; } libjibx-java-1.1.6a/build/test/extras/Dom4JContact2.java0000644000175000017500000000321510071714430022642 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package extras; import java.util.List; public class Dom4JContact2 { public String m_firstName; public String m_lastName; public String m_phone; public List m_information; } libjibx-java-1.1.6a/build/test/extras/DomContact0.java0000644000175000017500000000316510071714430022446 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package extras; public class DomContact0 { public String m_firstName; public String m_lastName; public String m_phone; public Object m_information; } libjibx-java-1.1.6a/build/test/extras/DomContact1.java0000644000175000017500000000322310071714430022442 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package extras; import org.w3c.dom.Element; public class DomContact1 { public String m_firstName; public String m_lastName; public String m_phone; public Element m_information; } libjibx-java-1.1.6a/build/test/extras/DomContact2.java0000644000175000017500000000364210071714430022450 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package extras; import java.util.List; public class DomContact2 implements org.jibx.runtime.impl.ITrackSourceImpl { public String m_firstName; public String m_lastName; public String m_phone; public List m_information; public String jibx_getDocumentName() { return null; } public int jibx_getLineNumber() { return 0; } public int jibx_getColumnNumber() { return 0; } public void jibx_setSource(String name, int line, int column) {} } libjibx-java-1.1.6a/build/test/extras/DomContact3.java0000644000175000017500000000324510071714430022450 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package extras; import org.w3c.dom.DocumentFragment; public class DomContact3 { public String m_firstName; public String m_lastName; public String m_phone; public DocumentFragment m_information; } libjibx-java-1.1.6a/build/test/extras/JDOMContact0.java0000644000175000017500000000352710267761534022500 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package extras; /** * @author Andreas Brenk */ public class JDOMContact0 { private String firstName; private String lastName; private String phone; public JDOMContact0() {} public JDOMContact0(String firstName, String lastName, String phone) { this.firstName = firstName; this.lastName = lastName; this.phone = phone; } } libjibx-java-1.1.6a/build/test/extras/JDOMContact1.java0000644000175000017500000000372510267761534022501 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package extras; /** * @author Andreas Brenk */ public class JDOMContact1 { private String firstName; private String lastName; private String phone; private JDOMContactInformation1 information; public JDOMContact1() {} public JDOMContact1(String firstName, String lastName, String phone, JDOMContactInformation1 information) { this.firstName = firstName; this.lastName = lastName; this.phone = phone; this.information = information; } } libjibx-java-1.1.6a/build/test/extras/JDOMContactInformation1.java0000644000175000017500000000355010267761534024703 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package extras; /** * @author Andreas Brenk */ public class JDOMContactInformation1 { private String additionalInfo1; private String additionalInfo2; public JDOMContactInformation1() {} public JDOMContactInformation1(String additionalInfo1, String additionalInfo2) { this.additionalInfo1 = additionalInfo1; this.additionalInfo2 = additionalInfo2; } } libjibx-java-1.1.6a/build/test/extras/JDOMWriterTest.java0000644000175000017500000003675510271503144023134 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package extras; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.StringWriter; import junit.framework.TestCase; import org.jdom.Document; import org.jdom.Element; import org.jdom.JDOMException; import org.jdom.input.SAXBuilder; import org.jdom.output.XMLOutputter; import org.jibx.extras.JDOMWriter; import org.jibx.runtime.BindingDirectory; import org.jibx.runtime.IBindingFactory; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.JiBXException; /** * JUnit TestCase against JDOMWriter. * * Most tests marshal a JDOMContact object to a JDOM Document and * compare it to a Document based on a static XML file. * * As JDOMs equals() methods are based on identity comparison is done using * XMLOutputter and comparing the resulting Strings. * * @author Andreas Brenk * @version 1.0 */ public class JDOMWriterTest extends TestCase { private static final String FIRSTNAME = "Tom"; private static final String LASTNAME = "Sawyer"; private static final String PHONE = "1-800-555-1212"; private static final String INFO1 = "Additional Info First Line"; private static final String INFO2 = "Additional Info Second Line"; private static final String EMPTY_NAMESPACE = ""; private static final String XML_NAMESPACE = "http://www.w3.org/XML/1998/namespace"; private static final String[] STD_NAMESPACES = new String[] { EMPTY_NAMESPACE, XML_NAMESPACE }; public JDOMWriterTest(String name) { super(name); } /** * Test a simple binding. */ public void testSimpleBinding() throws Exception { final JDOMContact0 contact = new JDOMContact0(FIRSTNAME, LASTNAME, PHONE); final Document actualDocument = marshalActualDocument(contact); final Document expectedDocument = readExpectedOutput("test/extras/jdomcontact0.xml"); final String actualOutput = formatDocument(actualDocument); final String expectedOutput = formatDocument(expectedDocument); saveActualOutput(actualOutput); assertEquals(expectedOutput, actualOutput); } /** * Test a binding with namespaces. */ public void testNamespaceBinding() throws Exception { JDOMContact1 contact = new JDOMContact1(FIRSTNAME, LASTNAME, PHONE, new JDOMContactInformation1(INFO1, INFO2)); final Document actualDocument = marshalActualDocument(contact); final Document expectedDocument = readExpectedOutput("test/extras/jdomcontact1.xml"); final String actualOutput = formatDocument(actualDocument); final String expectedOutput = formatDocument(expectedDocument); saveActualOutput(actualOutput); assertEquals(expectedOutput, actualOutput); } /** * Test marshalling an object into an existing empty Document. */ public void testExistingDocumentWithoutRootNode() throws Exception { final JDOMContact0 contact = new JDOMContact0(FIRSTNAME, LASTNAME, PHONE); final Document existingDocument = new Document(); final Document returnedDocument = marshalActualDocument(contact, existingDocument); final Document expectedDocument = readExpectedOutput("test/extras/jdomcontact0.xml"); final String actualOutput = formatDocument(existingDocument); final String expectedOutput = formatDocument(expectedDocument); saveActualOutput(actualOutput); assertSame(existingDocument, returnedDocument); assertEquals(expectedOutput, actualOutput); } /** * Test marshalling an object into an existing Document with root Element. */ public void testExistingDocumentWithRootNode() throws Exception { final JDOMContact0 contact = new JDOMContact0(FIRSTNAME, LASTNAME, PHONE); final Element rootElement = new Element("root"); final Document existingDocument = new Document(rootElement); final Document returnedDocument = marshalActualDocument(contact, existingDocument); final Document expectedDocument = readExpectedOutput("test/extras/jdomDocumentContact0.xml"); final String actualOutput = formatDocument(existingDocument); final String expectedOutput = formatDocument(expectedDocument); saveActualOutput(actualOutput); assertSame(existingDocument, returnedDocument); assertEquals(expectedOutput, actualOutput); } /** * Test marshalling an object into an existing Document with root and content Elements. */ public void testExistingDocumentAndCurrentElement() throws Exception { final JDOMContact0 contact = new JDOMContact0(FIRSTNAME, LASTNAME, PHONE); final Element rootElement = new Element("root"); final Element currentElement = new Element("current"); rootElement.addContent(new Element("pre").setText("before current")); rootElement.addContent(currentElement); rootElement.addContent(new Element("post").setText("after current")); final Document existingDocument = new Document(rootElement); final Document returnedDocument = marshalActualDocument(contact, currentElement); final Document expectedDocument = readExpectedOutput("test/extras/jdomElementContact0.xml"); final String actualOutput = formatDocument(existingDocument); final String expectedOutput = formatDocument(expectedDocument); saveActualOutput(actualOutput); assertSame(existingDocument, returnedDocument); assertEquals(expectedOutput, actualOutput); } /** * Test valid constructor usages. */ public void testValidContructorUsage() throws Exception { Element element; Document document; JDOMWriter jdomWriter = null; // valid jdomWriter = new JDOMWriter(STD_NAMESPACES); jdomWriter = new JDOMWriter(new String[] { EMPTY_NAMESPACE, XML_NAMESPACE, "urn:myNs1", "urn:myNs2" }); document = new Document(); // valid jdomWriter = new JDOMWriter(STD_NAMESPACES, document); element = new Element("element"); document = new Document(element); // valid jdomWriter = new JDOMWriter(STD_NAMESPACES, document); jdomWriter = new JDOMWriter(STD_NAMESPACES, element); assertNotNull(jdomWriter); } /** * Test invalid constructor usages. */ public void testInvalidConstructorUsage() throws Exception { JDOMWriter jdomWriter = null; // invalid: empty and xml namespace have to be defined try { jdomWriter = new JDOMWriter(new String[0]); fail("expected ArrayIndexOutOfBoundsException"); } catch(ArrayIndexOutOfBoundsException e) {} try { jdomWriter = new JDOMWriter(new String[1]); fail("expected ArrayIndexOutOfBoundsException"); } catch(ArrayIndexOutOfBoundsException e) {} // invalid: Document is null try { jdomWriter = new JDOMWriter(STD_NAMESPACES, (Document) null); fail("expected NullPointerException"); } catch(NullPointerException e) {} // invalid: Element is null try { jdomWriter = new JDOMWriter(STD_NAMESPACES, (Element) null); fail("expected NullPointerException"); } catch(NullPointerException e) {} // invalid: Element has no parent Document try { jdomWriter = new JDOMWriter(STD_NAMESPACES, new Element("element")); fail("expected NullPointerException"); } catch(NullPointerException e) {} assertNull(jdomWriter); } /** * Test adding and removing extension namespaces. */ public void testExtensionNamespaces() throws Exception { final JDOMWriter jdomWriter = new JDOMWriter(STD_NAMESPACES); String[][] ns; ns = jdomWriter.getExtensionNamespaces(); assertNull(ns); jdomWriter.pushExtensionNamespaces(new String[] { "urn:myNs1", "urn:myNs2" }); ns = jdomWriter.getExtensionNamespaces(); assertEquals(1, ns.length); assertEquals("urn:myNs1", ns[0][0]); assertEquals("urn:myNs2", ns[0][1]); jdomWriter.pushExtensionNamespaces(new String[] { "urn:myNs3" }); ns = jdomWriter.getExtensionNamespaces(); assertEquals(2, ns.length); assertEquals(2, ns[0].length); assertEquals(1, ns[1].length); assertEquals("urn:myNs1", ns[0][0]); assertEquals("urn:myNs2", ns[0][1]); assertEquals("urn:myNs3", ns[1][0]); jdomWriter.popExtensionNamespaces(); ns = jdomWriter.getExtensionNamespaces(); assertEquals(1, ns.length); assertEquals(2, ns[0].length); assertEquals("urn:myNs1", ns[0][0]); assertEquals("urn:myNs2", ns[0][1]); jdomWriter.popExtensionNamespaces(); ns = jdomWriter.getExtensionNamespaces(); assertNull(ns); } /** * Test changing namespace prefixes. */ public void testNamespacePrefixes() throws Exception { JDOMWriter jdomWriter = new JDOMWriter(new String[] { EMPTY_NAMESPACE, XML_NAMESPACE, "urn:myNs1", "urn:myNs2" }); assertEquals("", jdomWriter.getNamespaceUri(0)); assertEquals("http://www.w3.org/XML/1998/namespace", jdomWriter.getNamespaceUri(1)); assertEquals("urn:myNs1", jdomWriter.getNamespaceUri(2)); assertEquals("urn:myNs2", jdomWriter.getNamespaceUri(3)); assertEquals("", jdomWriter.getNamespacePrefix(0)); assertEquals("xml", jdomWriter.getNamespacePrefix(1)); assertNull("unexpected prefix defined", jdomWriter.getNamespacePrefix(2)); assertNull("unexpected prefix defined", jdomWriter.getNamespacePrefix(3)); jdomWriter.startTagNamespaces(0, "element1", new int[] {2, 3}, new String[] {"myns1", "myns2"}); jdomWriter.closeStartTag(); assertEquals("myns1", jdomWriter.getNamespacePrefix(2)); assertEquals("myns2", jdomWriter.getNamespacePrefix(3)); jdomWriter.startTagNamespaces(0, "element2", new int[] {2}, new String[] {"prefix"}); assertEquals("prefix", jdomWriter.getNamespacePrefix(2)); assertEquals("myns2", jdomWriter.getNamespacePrefix(3)); jdomWriter.closeEmptyTag(); assertEquals("myns1", jdomWriter.getNamespacePrefix(2)); assertEquals("myns2", jdomWriter.getNamespacePrefix(3)); jdomWriter.endTag(0, "element1"); assertNull("unexpected prefix defined", jdomWriter.getNamespacePrefix(2)); assertNull("unexpected prefix defined", jdomWriter.getNamespacePrefix(3)); } /** * Helper method to read a file to a Document. * * @param filename the name of a XML file to read * @return a Document based on the given file */ private static Document readExpectedOutput(String filename) throws IOException, JDOMException { final SAXBuilder builder = new SAXBuilder(); final InputStream input = new FileInputStream(filename); return builder.build(input); } /** * Helper method to format a Document to String. * * @param document the Document to format * @return a String containing XML */ private static String formatDocument(Document document) throws IOException { final XMLOutputter outputter = new XMLOutputter(); final StringWriter writer = new StringWriter(); outputter.output(document, writer); return writer.getBuffer().toString(); } /** * Helper method to marshal an Object to a Document. * * @param root the Object to marshal * @return the Document representation */ private static Document marshalActualDocument(Object root) throws JiBXException { final IBindingFactory bfact = BindingDirectory.getFactory(root.getClass()); final IMarshallingContext mctx = bfact.createMarshallingContext(); final JDOMWriter jdomWriter = new JDOMWriter(bfact.getNamespaces()); return marshalDocument(root, mctx, jdomWriter); } private static Document marshalActualDocument(Object root, Document document) throws JiBXException { final IBindingFactory bfact = BindingDirectory.getFactory(root.getClass()); final IMarshallingContext mctx = bfact.createMarshallingContext(); final JDOMWriter jdomWriter = new JDOMWriter(bfact.getNamespaces(), document); return marshalDocument(root, mctx, jdomWriter); } private static Document marshalActualDocument(Object root, Element element) throws JiBXException { final IBindingFactory bfact = BindingDirectory.getFactory(root.getClass()); final IMarshallingContext mctx = bfact.createMarshallingContext(); final JDOMWriter jdomWriter = new JDOMWriter(bfact.getNamespaces(), element); return marshalDocument(root, mctx, jdomWriter); } private static Document marshalDocument(Object root, IMarshallingContext mctx, JDOMWriter jdomWriter) throws JiBXException { mctx.setXmlWriter(jdomWriter); mctx.marshalDocument(root); return jdomWriter.getDocument(); } /** * Helper method to save the actual output to temp.xml * * @param actualOutput the output generated by marshalling */ private static void saveActualOutput(String actualOutput) throws IOException { File fout = new File("temp.xml"); fout.delete(); FileOutputStream fos = new FileOutputStream(fout); fos.write(actualOutput.getBytes()); fos.close(); } } libjibx-java-1.1.6a/build/test/extras/NameArray.java0000644000175000017500000000457210217762724022230 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package extras; import java.util.ArrayList; import org.jibx.extras.IdDefRefMapperBase; import org.jibx.extras.IdRefMapperBase; public class NameArray { public Object[] m_names; public ArrayList m_references; public static class Name { public String m_id; public String m_first; public String m_last; } private static class RefMapper extends IdRefMapperBase { public RefMapper(String uri, int index, String name) { super(uri, index, name); } protected String getIdValue(Object item) { return ((Name)item).m_id; } } private static class DefRefMapper extends IdDefRefMapperBase { public DefRefMapper(String uri, int index, String name) { super(uri, index, name); } protected String getIdValue(Object item) { return ((Name)item).m_id; } } } libjibx-java-1.1.6a/build/test/extras/QNameReference.java0000644000175000017500000000731610270123702023152 0ustar moellermoeller/* Copyright (c) 2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package extras; import java.io.IOException; import java.util.ArrayList; import org.jibx.extras.QName; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.IXMLWriter; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.MarshallingContext; import org.jibx.runtime.impl.UnmarshallingContext; public class QNameReference { protected QName m_ref1; protected QName m_ref2; protected QName m_ref3; protected ArrayList m_namespaces; protected QName getRef() { return m_ref3; } protected void setRef(QName qname) { m_ref3 = qname; } protected void getNamespaces(IUnmarshallingContext ictx) throws JiBXException { UnmarshallingContext ctx = (UnmarshallingContext)ictx; int count = ctx.getNamespaceCount(); if (count > 0) { m_namespaces = new ArrayList(); for (int i = 0; i < count; i++) { m_namespaces.add(ctx.getNamespacePrefix(i)); m_namespaces.add(ctx.getNamespaceUri(i)); } } else { m_namespaces = null; } } protected void setNamespaces(IMarshallingContext ictx) throws IOException { if (m_namespaces != null) { IXMLWriter writer = ((MarshallingContext)ictx).getXmlWriter(); String[] uris = new String[m_namespaces.size()/2]; int[] indexes = new int[uris.length]; String[] prefs = new String[uris.length]; int base = writer.getNamespaceCount(); for (int i = 0; i < uris.length; i++) { indexes[i] = base + i; String pref = (String)m_namespaces.get(i*2); if (pref == null) { pref = ""; } prefs[i] = pref; uris[i] = (String)m_namespaces.get(i*2+1); } writer.pushExtensionNamespaces(uris); writer.openNamespaces(indexes, prefs); for (int i = 0; i < uris.length; i++) { String prefix = prefs[i]; String name = prefix.length() > 0 ? "xmlns:" + prefix : "xmlns"; writer.addAttribute(0, name, uris[i]); } } } }libjibx-java-1.1.6a/build/test/extras/TypedArray.java0000644000175000017500000000442510217762724022432 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package extras; import org.jibx.extras.IdRefMapperBase; public class TypedArray { public Name[] m_names; public Name[] getNames() { return m_names; } public void setNames(Name[] array) { m_names = array; } public Object[] getObjects() { return m_names; } public void setObjects(Object[] array) { m_names = (Name[])array; } public static class Name { public String m_id; public String m_first; public String m_last; } private static class RefMapper extends IdRefMapperBase { public RefMapper(String uri, int index, String name) { super(uri, index, name); } protected String getIdValue(Object item) { return ((Name)item).m_id; } } } libjibx-java-1.1.6a/build/test/extras/ValueMap.java0000644000175000017500000000345210222700120022031 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package extras; import java.util.Hashtable; import java.util.Map; public class ValueMap { public Map m_map = new Hashtable(); private void postSet() { if (!(m_map instanceof Hashtable)) { throw new IllegalStateException ("Original object not passed for custom unmarshaller"); } } } libjibx-java-1.1.6a/build/test/extras/binding0.xml0000644000175000017500000000106310217762724021712 0ustar moellermoeller libjibx-java-1.1.6a/build/test/extras/binding1.xml0000644000175000017500000000101010217762724021703 0ustar moellermoeller libjibx-java-1.1.6a/build/test/extras/binding10.xml0000644000175000017500000000110510270123702021752 0ustar moellermoeller libjibx-java-1.1.6a/build/test/extras/binding2.xml0000644000175000017500000000110710217762724021713 0ustar moellermoeller libjibx-java-1.1.6a/build/test/extras/binding3.xml0000644000175000017500000000105410217762724021715 0ustar moellermoeller libjibx-java-1.1.6a/build/test/extras/binding3a.xml0000644000175000017500000000140710217762724022060 0ustar moellermoeller libjibx-java-1.1.6a/build/test/extras/binding3b.xml0000644000175000017500000000112710217762724022060 0ustar moellermoeller libjibx-java-1.1.6a/build/test/extras/binding4.xml0000644000175000017500000000107710217762724021723 0ustar moellermoeller libjibx-java-1.1.6a/build/test/extras/binding5.xml0000644000175000017500000000120710217762724021717 0ustar moellermoeller libjibx-java-1.1.6a/build/test/extras/binding6.xml0000644000175000017500000000100110071714432021677 0ustar moellermoeller libjibx-java-1.1.6a/build/test/extras/binding7.xml0000644000175000017500000000076510071714432021720 0ustar moellermoeller libjibx-java-1.1.6a/build/test/extras/binding8.xml0000644000175000017500000000072110222700116021701 0ustar moellermoeller libjibx-java-1.1.6a/build/test/extras/binding9.xml0000644000175000017500000000101510257173436021720 0ustar moellermoeller libjibx-java-1.1.6a/build/test/extras/bindingdom0.xml0000644000175000017500000000076210071714432022406 0ustar moellermoeller libjibx-java-1.1.6a/build/test/extras/bindingdom1.xml0000644000175000017500000000076310071714432022410 0ustar moellermoeller libjibx-java-1.1.6a/build/test/extras/bindingdom2.xml0000644000175000017500000000074710071714432022413 0ustar moellermoeller libjibx-java-1.1.6a/build/test/extras/bindingdom3.xml0000644000175000017500000000073710071714432022413 0ustar moellermoeller libjibx-java-1.1.6a/build/test/extras/bindingdom4j0.xml0000644000175000017500000000074610071714432022646 0ustar moellermoeller libjibx-java-1.1.6a/build/test/extras/bindingdom4j1.xml0000644000175000017500000000074610071714432022647 0ustar moellermoeller libjibx-java-1.1.6a/build/test/extras/bindingdom4j2.xml0000644000175000017500000000073310071714432022644 0ustar moellermoeller libjibx-java-1.1.6a/build/test/extras/bindingjdom0.xml0000644000175000017500000000034110267761534022565 0ustar moellermoeller libjibx-java-1.1.6a/build/test/extras/bindingjdom1.xml0000644000175000017500000000110710267761534022567 0ustar moellermoeller libjibx-java-1.1.6a/build/test/extras/contact0.xml0000644000175000017500000000015610071714432021724 0ustar moellermoeller TomSawyer1-800-555-1212 libjibx-java-1.1.6a/build/test/extras/contact1.xml0000644000175000017500000000041510071714432021723 0ustar moellermoeller TomSawyer1-800-555-1212 12345 Happy Lane Plunk WA 98059 libjibx-java-1.1.6a/build/test/extras/contact2.xml0000644000175000017500000000275310071714432021733 0ustar moellermoeller TomSawyer1-800-555-1212 2001-07-02T04:33:22.610Z 152.46613 78.09824 2001-05-04T02:31:00.601Z -48.434654 -91.997185 libjibx-java-1.1.6a/build/test/extras/contact3.xml0000644000175000017500000000511210071714432021724 0ustar moellermoeller TomSawyer1-800-555-1212

Performance tests For performance tests of the data binding frameworks I generated documents containing mock airline flight timetable information. These are based on the same structure I defined in the earlier article on mapped data binding with Castor. Here's a sample of that structure, herein referred to as the "compact" format because it uses mainly attributes for data:

Listing 1. Compact document format<?xml version="1.0"?> <timetable> <carrier ident="AR" rating="9"> <URL>http://www.arcticairlines.com</URL> <name>Arctic Airlines</name> </carrier> <carrier ident="CA" rating="7"> <URL>http://www.combinedlines.com</URL> <name>Combined Airlines</name> </carrier> <airport ident="SEA"> <location>Seattle, WA</location> <name>Seattle-Tacoma International Airport</name> </airport> <airport ident="LAX"> <location>Los Angeles, CA</location> <name>Los Angeles International Airport</name> </airport> <route from="SEA" to="LAX"> <flight carrier="AR" depart="6:23a" arrive="8:42a" number="426"/> <flight carrier="CA" depart="8:10a" arrive="10:52a" number="833"/> <flight carrier="AR" depart="9:00a" arrive="11:36a" number="433"/> </route> <route from="LAX" to="SEA"> <flight carrier="CA" depart="7:45a" arrive="10:20a" number="311"/> <flight carrier="AR" depart="9:27a" arrive="12:04p" number="593"/> <flight carrier="AR" depart="12:30p" arrive="3:07p" number="102"/> </route> </timetable>
libjibx-java-1.1.6a/build/test/extras/jdomDocumentContact0.xml0000644000175000017500000000023610267761534024250 0ustar moellermoeller TomSawyer1-800-555-1212 libjibx-java-1.1.6a/build/test/extras/jdomElementContact0.xml0000644000175000017500000000034410267761534024063 0ustar moellermoeller
before current
TomSawyer1-800-555-1212after current
libjibx-java-1.1.6a/build/test/extras/jdomcontact0.xml0000644000175000017500000000022110267761534022603 0ustar moellermoeller TomSawyer1-800-555-1212 libjibx-java-1.1.6a/build/test/extras/jdomcontact1.xml0000644000175000017500000000055610267761534022617 0ustar moellermoeller TomSawyer1-800-555-1212Additional Info First LineAdditional Info Second Line libjibx-java-1.1.6a/build/test/extras/names0.xml0000644000175000017500000000001110071714432021362 0ustar moellermoeller libjibx-java-1.1.6a/build/test/extras/names1.xml0000644000175000017500000000054210217762724021405 0ustar moellermoeller TomSawyer GeorgeSmith AdamSmith HuckFinn libjibx-java-1.1.6a/build/test/extras/names2.xml0000644000175000017500000000057710217762724021416 0ustar moellermoeller TomSawyer GeorgeSmith AdamSmith HuckFinn libjibx-java-1.1.6a/build/test/extras/names3.xml0000644000175000017500000000076210217762724021413 0ustar moellermoeller TomSawyer GeorgeSmith AdamSmith HuckFinn libjibx-java-1.1.6a/build/test/extras/names3b.xml0000644000175000017500000000072010217762724021547 0ustar moellermoeller TomSawyer GeorgeSmith AdamSmith HuckFinn libjibx-java-1.1.6a/build/test/extras/qnames1.xml0000644000175000017500000000024510267761460021567 0ustar moellermoeller ns1:qname ns2:qname libjibx-java-1.1.6a/build/test/extras/qnames2.xml0000644000175000017500000000021110267761460021561 0ustar moellermoeller ns2:qname ns3:qname libjibx-java-1.1.6a/build/test/extras/values0.xml0000644000175000017500000000061310311007620021555 0ustar moellermoeller 2004-08-06T00:13:31.587Z 0.0 0 string0 libjibx-java-1.1.6a/build/test/extras/values1.xml0000644000175000017500000000073410311007620021562 0ustar moellermoeller 2004-08-06T00:13:31.587Z 0.0 0 string0 libjibx-java-1.1.6a/build/test/java5/0000755000175000017500000000000011023035622017160 5ustar moellermoellerlibjibx-java-1.1.6a/build/test/java5/Customer1.java0000644000175000017500000000341610752422732021723 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package java5; public class Customer1 { public String firstName; public String lastName; public String street1; public String city; public String state; public String zip; public String phone; public Credit credit; public Quality1 quality; public enum Credit { BROKE, MAKING_DO, FLUSH } } libjibx-java-1.1.6a/build/test/java5/Customer2.java0000644000175000017500000000407310752422732021724 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package java5; public class Customer2 { public String firstName; public String lastName; public String street1; public String city; public String state; public String zip; public String phone; public Credit credit; public Quality2 quality; public enum Credit { BROKE("broke, busted, flat"), MAKING_DO("hanging on, hand-to-mouth"), FLUSH("got it all"); private String xmlText; private Credit(String text) { xmlText = text; } private String textValue() { return xmlText; } } } libjibx-java-1.1.6a/build/test/java5/Quality1.java0000644000175000017500000000302110752422732021542 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package java5; public enum Quality1 { GOOD, BAD, UGLY } libjibx-java-1.1.6a/build/test/java5/Quality2.java0000644000175000017500000000336610752422732021557 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package java5; public enum Quality2 { GOOD("good, but not great"), BAD("not even a little good"), UGLY("like C code"); private String text; private Quality2(String text) { this.text = text; } public String toText() { return text; } } libjibx-java-1.1.6a/build/test/java5/binding1.xml0000644000175000017500000000104310434346640021405 0ustar moellermoeller libjibx-java-1.1.6a/build/test/java5/binding2.xml0000644000175000017500000000114410752422732021410 0ustar moellermoeller libjibx-java-1.1.6a/build/test/java5/simple1.xml0000644000175000017500000000055210434346640021270 0ustar moellermoeller Émile Poincaré rte st Antoine de Ginestière’ Paris FR 98059 01 44 27 67 93 MAKING_DO GOOD libjibx-java-1.1.6a/build/test/java5/simple2.xml0000644000175000017500000000061110752422732021265 0ustar moellermoeller Émile Poincaré rte st Antoine de Ginestière’ Paris FR 98059 01 44 27 67 93 hanging on, hand-to-mouth good, but not great libjibx-java-1.1.6a/build/test/multiple/0000755000175000017500000000000011023035622020005 5ustar moellermoellerlibjibx-java-1.1.6a/build/test/multiple/AirportBean.java0000644000175000017500000000453710071714436023100 0ustar moellermoeller/* Copyright (c) 2002,2003, Sosnoski Software Solutions, Inc. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package multiple; /** * Airport information. * * @author Dennis M. Sosnoski * @version 0.8 */ public class AirportBean { private String m_ident; private String m_name; private String m_location; public AirportBean() {} public void setIdent(String ident) { m_ident = ident; } public String getIdent() { return m_ident; } public void setName(String name) { m_name = name; } public String getName() { return m_name; } public void setLocation(String location) { m_location = location; } public String getLocation() { return m_location; } public boolean equals(Object obj) { if (obj instanceof AirportBean) { AirportBean compare = (AirportBean)obj; return Utils.equalStrings(m_ident, compare.m_ident) && Utils.equalStrings(m_name, compare.m_name) && Utils.equalStrings(m_location, compare.m_location); } else { return false; } } } libjibx-java-1.1.6a/build/test/multiple/CarrierBean.java0000644000175000017500000000473310071714436023045 0ustar moellermoeller/* Copyright (c) 2002,2003, Sosnoski Software Solutions, Inc. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package multiple; /** * Carrier information. * * @author Dennis M. Sosnoski * @version 0.8 */ public class CarrierBean { private String m_ident; private String m_name; private String m_url; private int m_rating; public CarrierBean() {} public void setIdent(String ident) { m_ident = ident; } public String getIdent() { return m_ident; } public void setName(String name) { m_name = name; } public String getName() { return m_name; } public void setURL(String url) { m_url = url; } public String getURL() { return m_url; } public void setRating(int rating) { m_rating = rating; } public int getRating() { return m_rating; } public boolean equals(Object obj) { if (obj instanceof CarrierBean) { CarrierBean compare = (CarrierBean)obj; return Utils.equalStrings(m_ident, compare.m_ident) && Utils.equalStrings(m_name, compare.m_name) && Utils.equalStrings(m_url, compare.m_url) && m_rating == compare.m_rating; } else { return false; } } } libjibx-java-1.1.6a/build/test/multiple/FlightBean.java0000644000175000017500000000553010071714436022667 0ustar moellermoeller/* Copyright (c) 2002,2003, Sosnoski Software Solutions, Inc. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package multiple; /** * Flight information. * * @author Dennis M. Sosnoski * @version 0.8 */ public class FlightBean { private CarrierBean m_carrier; private int m_number; private int m_departure; private int m_arrival; public FlightBean() {} public void setCarrier(CarrierBean carrier) { m_carrier = carrier; } public CarrierBean getCarrier() { return m_carrier; } public void setNumber(int number) { m_number = number; } public int getNumber() { return m_number; } public void setDeparture(int minute) { m_departure = minute; } public int getDeparture() { return m_departure; } public void setDepartureTime(String time) { m_departure = Utils.timeToMinute(time); } public String getDepartureTime() { return Utils.minuteToTime(m_departure); } public void setArrival(int minute) { m_arrival = minute; } public int getArrival() { return m_arrival; } public void setArrivalTime(String time) { m_arrival = Utils.timeToMinute(time); } public String getArrivalTime() { return Utils.minuteToTime(m_arrival); } public boolean equals(Object obj) { if (obj instanceof FlightBean) { FlightBean compare = (FlightBean)obj; return Utils.equalCarriers(m_carrier, compare.m_carrier) && m_number == compare.m_number && m_departure == compare.m_departure && m_arrival == compare.m_arrival; } else { return false; } } } libjibx-java-1.1.6a/build/test/multiple/FlightIdentityBean.java0000644000175000017500000000607110221061036024366 0ustar moellermoeller/* Copyright (c) 2002,2003, Sosnoski Software Solutions, Inc. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package multiple; import java.util.Date; import org.jibx.runtime.JiBXException; import org.jibx.runtime.Utility; /** * Flight identity information. * * @author Dennis M. Sosnoski * @version 0.8 */ public class FlightIdentityBean { private static Date s_defaultStartDate; private static Date s_defaultEndDate; { try { s_defaultStartDate = Utility.deserializeDate("2003-01-01"); s_defaultEndDate = Utility.deserializeDate("2005-12-31"); } catch (JiBXException ex) { s_defaultStartDate = s_defaultEndDate = new Date(); } } private CarrierBean m_carrier; private String m_id; private int m_number; private double m_onTime; private Date m_startDate; private Date m_endDate; public FlightIdentityBean() {} public void setCarrier(CarrierBean carrier) { m_carrier = carrier; } public CarrierBean getCarrier() { return m_carrier; } public void setNumber(int number) { m_number = number; } public int getNumber() { return m_number; } public void preset() { m_onTime = 0.5D; } public void postComplete() { if (m_startDate == null) { m_startDate = s_defaultStartDate; } if (m_endDate == null) { m_endDate = s_defaultEndDate; } } public void preget() { m_onTime *= 1.5D; } public boolean equals(Object obj) { if (obj instanceof FlightBean) { FlightIdentityBean compare = (FlightIdentityBean)obj; return Utils.equalCarriers(m_carrier, compare.m_carrier) && m_number == compare.m_number && Utils.equalDates(m_startDate, compare.m_startDate) && Utils.equalDates(m_endDate, compare.m_endDate); } else { return false; } } } libjibx-java-1.1.6a/build/test/multiple/FlightTimesBean.java0000644000175000017500000000424410071714436023672 0ustar moellermoeller/* Copyright (c) 2002,2003, Sosnoski Software Solutions, Inc. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package multiple; /** * Flight time information. * * @author Dennis M. Sosnoski * @version 0.8 */ public class FlightTimesBean { private int m_departure; private int m_arrival; public FlightTimesBean() {} public void setDeparture(int minute) { m_departure = minute; } public int getDeparture() { return m_departure; } public void setArrival(int minute) { m_arrival = minute; } public int getArrival() { return m_arrival; } public boolean equals(Object obj) { if (obj instanceof FlightTimesBean) { FlightTimesBean compare = (FlightTimesBean)obj; return m_departure == compare.m_departure && m_arrival == compare.m_arrival; } else { return false; } } } libjibx-java-1.1.6a/build/test/multiple/RouteBean.java0000644000175000017500000000462710071714436022556 0ustar moellermoeller/* Copyright (c) 2002,2003, Sosnoski Software Solutions, Inc. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package multiple; import java.util.ArrayList; /** * Route information. * * @author Dennis M. Sosnoski * @version 0.8 */ public class RouteBean { private AirportBean m_from; private AirportBean m_to; private ArrayList m_flights; public RouteBean() { m_flights = new ArrayList(); } public void setFrom(AirportBean from) { m_from = from; } public AirportBean getFrom() { return m_from; } public void setTo(AirportBean to) { m_to = to; } public AirportBean getTo() { return m_to; } public ArrayList getFlights() { return m_flights; } public void addFlight(FlightBean flight) { m_flights.add(flight); } public boolean equals(Object obj) { if (obj instanceof RouteBean) { RouteBean compare = (RouteBean)obj; return Utils.equalAirports(m_to, compare.m_to) && Utils.equalAirports(m_from, compare.m_from) && Utils.equalLists(m_flights, compare.m_flights); } else { return false; } } } libjibx-java-1.1.6a/build/test/multiple/SplitFlightBean.java0000644000175000017500000000374210071714436023706 0ustar moellermoeller/* Copyright (c) 2002,2003, Sosnoski Software Solutions, Inc. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package multiple; /** * Flight information in child objects. * * @author Dennis M. Sosnoski * @version 0.8 */ public class SplitFlightBean { private FlightIdentityBean m_identity; private FlightTimesBean m_times; public SplitFlightBean() {} public boolean equals(Object obj) { if (obj instanceof SplitFlightBean) { SplitFlightBean compare = (SplitFlightBean)obj; return m_identity.equals(compare.m_identity) && m_times.equals(compare.m_times); } else { return false; } } } libjibx-java-1.1.6a/build/test/multiple/SplitRouteBean.java0000644000175000017500000000471310071714436023566 0ustar moellermoeller/* Copyright (c) 2002,2003, Sosnoski Software Solutions, Inc. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package multiple; import java.util.ArrayList; /** * Route bean with split route information. * * @author Dennis M. Sosnoski * @version 0.8 */ public class SplitRouteBean { private AirportBean m_from; private AirportBean m_to; private ArrayList m_flights; public SplitRouteBean() { m_flights = new ArrayList(); } public void setFrom(AirportBean from) { m_from = from; } public AirportBean getFrom() { return m_from; } public void setTo(AirportBean to) { m_to = to; } public AirportBean getTo() { return m_to; } public ArrayList getFlights() { return m_flights; } public void addFlight(SplitFlightBean flight) { m_flights.add(flight); } public boolean equals(Object obj) { if (obj instanceof SplitRouteBean) { SplitRouteBean compare = (SplitRouteBean)obj; return Utils.equalAirports(m_to, compare.m_to) && Utils.equalAirports(m_from, compare.m_from) && Utils.equalLists(m_flights, compare.m_flights); } else { return false; } } } libjibx-java-1.1.6a/build/test/multiple/SplitTableBean.java0000644000175000017500000000542010221061040023472 0ustar moellermoeller/* Copyright (c) 2002,2003, Sosnoski Software Solutions, Inc. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package multiple; import java.util.ArrayList; /** * Flight timetable information with split flights. * * @author Dennis M. Sosnoski * @version 0.8 */ public class SplitTableBean { private ArrayList m_carriers; private ArrayList m_airports; private ArrayList m_flights; // used only where flights are predefined in // collection and then referenced private ArrayList m_routes; public SplitTableBean() { m_carriers = new ArrayList(); m_airports = new ArrayList(); m_flights = new ArrayList(); m_routes = new ArrayList(); } public ArrayList getCarriers() { return m_carriers; } public void addCarrier(CarrierBean carrier) { m_carriers.add(carrier); } public ArrayList getAirports() { return m_airports; } public void addAirport(AirportBean airport) { m_airports.add(airport); } public ArrayList getRoutes() { return m_routes; } public void addRoute(SplitRouteBean route) { m_routes.add(route); } public boolean equals(Object obj) { if (obj instanceof SplitTableBean) { SplitTableBean compare = (SplitTableBean)obj; return Utils.equalLists(m_routes, compare.m_routes) && Utils.equalLists(m_airports, compare.m_airports) && Utils.equalLists(m_carriers, compare.m_carriers); } else { return false; } } } libjibx-java-1.1.6a/build/test/multiple/TimeTableBean.java0000644000175000017500000000506610071714436023324 0ustar moellermoeller/* Copyright (c) 2002,2003, Sosnoski Software Solutions, Inc. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package multiple; import java.util.ArrayList; /** * Flight timetable information. * * @author Dennis M. Sosnoski * @version 0.8 */ public class TimeTableBean { private ArrayList m_carriers; private ArrayList m_airports; private ArrayList m_routes; public TimeTableBean() { m_carriers = new ArrayList(); m_airports = new ArrayList(); m_routes = new ArrayList(); } public ArrayList getCarriers() { return m_carriers; } public void addCarrier(CarrierBean carrier) { m_carriers.add(carrier); } public ArrayList getAirports() { return m_airports; } public void addAirport(AirportBean airport) { m_airports.add(airport); } public ArrayList getRoutes() { return m_routes; } public void addRoute(RouteBean route) { m_routes.add(route); } public boolean equals(Object obj) { if (obj instanceof TimeTableBean) { TimeTableBean compare = (TimeTableBean)obj; return Utils.equalLists(m_routes, compare.m_routes) && Utils.equalLists(m_airports, compare.m_airports) && Utils.equalLists(m_carriers, compare.m_carriers); } else { return false; } } } libjibx-java-1.1.6a/build/test/multiple/Utils.java0000644000175000017500000000674310071714436021773 0ustar moellermoeller/* Copyright (c) 2002,2003, Sosnoski Software Solutions, Inc. 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package multiple; import java.util.Date; import java.util.List; /** * Static utility class providing comparison methods. * * @author Dennis M. Sosnoski * @version 0.8 */ public abstract class Utils { public static boolean equalStrings(String a, String b) { return (a == null && b == null) || a.equals(b); } public static boolean equalLists(List a, List b) { return (a == null && b == null) || a.equals(b); } public static boolean equalAirports(AirportBean a, AirportBean b) { return (a == null && b == null) || (a != null && a.equals(b)); } public static boolean equalCarriers(CarrierBean a, CarrierBean b) { return (a == null && b == null) || (a != null && a.equals(b)); } public static boolean equalDates(Date a, Date b) { return (a == null && b == null) || (a != null && a.equals(b)); } public static int timeToMinute(String time) { // find split between hour and minute int mark = time.indexOf(':'); if (mark > 0) { // convert hour to adjusted range (0-11) int hour = Integer.parseInt(time.substring(0, mark)); if (hour == 12) { hour = 0; } // find minute value String mins = time.substring(mark+1, time.length()-1); int minute = Integer.parseInt(mins); // check am/pm flag char last = time.charAt(time.length()-1); boolean pm = Character.toLowerCase(last) == 'p'; // return minute number of flight time return ((pm ? 12 : 0) + hour)*60 + minute; } else { throw new IllegalArgumentException("Not a valid time: " + time); } } public static String minuteToTime(int minute) { // find hour in quirky am/pm form int hour = minute / 60; boolean pm = false; if (hour >= 12) { hour -= 12; pm = true; } if (hour == 0) { hour = 12; } // convert minute value to double-digit text minute %= 60; String mtext = Integer.toString(minute); if (mtext.length() == 1) { mtext = '0' + mtext; } // return complete time text return Integer.toString(hour) + ':' + mtext + (pm ? 'p' : 'a'); } } libjibx-java-1.1.6a/build/test/org/0000755000175000017500000000000011021525452016744 5ustar moellermoellerlibjibx-java-1.1.6a/build/test/org/jibx/0000755000175000017500000000000011021525452017700 5ustar moellermoellerlibjibx-java-1.1.6a/build/test/org/jibx/binding/0000755000175000017500000000000011021525452021312 5ustar moellermoellerlibjibx-java-1.1.6a/build/test/org/jibx/binding/generator/0000755000175000017500000000000011023035622023275 5ustar moellermoellerlibjibx-java-1.1.6a/build/test/org/jibx/binding/generator/BindingGeneratorCommandLineTest.java0000644000175000017500000000774410602647122032352 0ustar moellermoeller/* Copyright (c) 2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.generator; import java.util.Collection; import junit.framework.TestCase; /** * Test code for command line processing. */ public class BindingGeneratorCommandLineTest extends TestCase { private static String[] OVERRIDE_ARGS = new String[] { "--property-access=false", "--require=none", "--namespace-style=fixed", "--namespace=http://www.sosnoski.com/ws", "--name-style=camel-case", "--strip-prefixes=s_ m_" }; public void testOverrides() throws Exception { BindingGeneratorCommandLine cmd = new BindingGeneratorCommandLine(); assertTrue("Basic argument processing", cmd.processArgs(OVERRIDE_ARGS)); ClassCustom clas = cmd.getGlobal().forceClassCustomization("org.jibx.binding.generator.DataClass1"); assertFalse("property-access setting", clas.isPropertyAccess()); assertEquals("namespace-style setting", CustomBase.DERIVE_FIXED, clas.getNamespaceStyle()); assertEquals("namespace setting", "http://www.sosnoski.com/ws", clas.getNamespace()); assertEquals("name-style setting", CustomBase.CAMEL_CASE_NAMES, clas.getNameStyle()); assertEquals("derived name", "dataClass1", clas.getElementName()); Collection members = clas.getMembers(); assertEquals("property count", 4, members.size()); MemberCustom member = clas.getMember("boolean"); assertNotNull("boolean member", member); assertEquals("boolean type", "boolean", member.getWorkingType()); assertEquals("boolean name", "boolean", member.getXmlName()); assertFalse("boolean required", member.isRequired()); member = clas.getMember("int"); assertNotNull("int member", member); assertEquals("int type", "int", member.getWorkingType()); assertEquals("int name", "int", member.getXmlName()); assertFalse("int required", member.isRequired()); member = clas.getMember("linked"); assertNotNull("linked member", member); assertEquals("linked type", "org.jibx.binding.generator.DataClass1", member.getWorkingType()); assertEquals("linked name", "linked", member.getXmlName()); assertFalse("linked required", member.isRequired()); member = clas.getMember("string"); assertNotNull("string member", member); assertEquals("string type", "java.lang.String", member.getWorkingType()); assertEquals("string name", "string", member.getXmlName()); assertFalse("string required", member.isRequired()); } }libjibx-java-1.1.6a/build/test/org/jibx/binding/generator/ClassCustomTest.java0000644000175000017500000002237310651201212027243 0ustar moellermoeller/* Copyright (c) 2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.generator; import java.util.Collection; /** * Test code for class handling. */ public class ClassCustomTest extends CustomizationTestBase { public static final String SIMPLE_PROPERTIES_CLASS = "\n" + " \n" + " \n" + " \n" + ""; public static final String MULTIPLE_FIELDS_CLASSES = "\n" + " \n" + " \n" + " \n" + " \n" + ""; public static final String MULTIPLE_PROPERTIES_CLASSES = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; public void testSimplePropertiesClass() throws Exception { GlobalCustom custom = readCustom(SIMPLE_PROPERTIES_CLASS); ClassCustom clas = custom.getClassCustomization("org.jibx.binding.generator.DataClass1"); assertTrue("property-access setting", clas.isPropertyAccess()); Collection members = clas.getMembers(); assertEquals("property count", 4, members.size()); MemberCustom member = clas.getMember("boolean"); assertNotNull("boolean member", member); assertEquals("boolean type", "boolean", member.getWorkingType()); assertEquals("boolean name", "boolean", member.getXmlName()); assertTrue("boolean required", member.isRequired()); member = clas.getMember("int"); assertNotNull("int member", member); assertEquals("int type", "int", member.getWorkingType()); assertEquals("int name", "int", member.getXmlName()); assertTrue("int required", member.isRequired()); member = clas.getMember("linked"); assertNotNull("linked member", member); assertEquals("linked type", "org.jibx.binding.generator.DataClass1", member.getWorkingType()); assertEquals("linked name", "linked", member.getXmlName()); assertFalse("linked required", member.isRequired()); member = clas.getMember("string"); assertNotNull("string member", member); assertEquals("string type", "java.lang.String", member.getWorkingType()); assertEquals("string name", "string", member.getXmlName()); assertFalse("string required", member.isRequired()); } public void testMultipleFieldsClasses() throws Exception { GlobalCustom custom = readCustom(MULTIPLE_FIELDS_CLASSES); ClassCustom clas = custom.getClassCustomization("org.jibx.binding.generator.DataClass2"); Collection members = clas.getMembers(); assertEquals("property count", 1, members.size()); MemberCustom member = clas.getMember("dataClass1s"); assertNotNull("dataClass1s member", member); assertEquals("dataClass1s type", "java.util.List", member.getWorkingType()); assertEquals("dataClass1s name", "dataClass1s", member.getXmlName()); assertTrue("dataClass1s collection", member instanceof CollectionFieldCustom); CollectionFieldCustom coll = (CollectionFieldCustom)member; assertEquals("dataClass1s type", "java.lang.Object", coll.getItemType()); assertEquals("dataClass1s name", "dataClass1", coll.getItemName()); clas = custom.getClassCustomization("org.jibx.binding.generator.DataClass1"); members = clas.getMembers(); assertEquals("property count", 4, members.size()); member = clas.getMember("boolean"); assertNotNull("boolean member", member); assertEquals("boolean type", "boolean", member.getWorkingType()); assertEquals("boolean name", "boolean", member.getXmlName()); assertFalse("boolean required", member.isRequired()); member = clas.getMember("int"); assertNotNull("int member", member); assertEquals("int type", "int", member.getWorkingType()); assertEquals("int name", "int", member.getXmlName()); assertFalse("int required", member.isRequired()); member = clas.getMember("linked"); assertNotNull("linked member", member); assertEquals("linked type", "org.jibx.binding.generator.DataClass1", member.getWorkingType()); assertEquals("linked name", "linked", member.getXmlName()); assertFalse("linked required", member.isRequired()); member = clas.getMember("string"); assertNotNull("string member", member); assertEquals("string type", "java.lang.String", member.getWorkingType()); assertEquals("string name", "string", member.getXmlName()); assertTrue("string required", member.isRequired()); } public void testMultiplePropertiesClasses() throws Exception { GlobalCustom custom = readCustom(MULTIPLE_PROPERTIES_CLASSES); ClassCustom clas = custom.getClassCustomization("org.jibx.binding.generator.DataClass2"); Collection members = clas.getMembers(); assertEquals("property count", 1, members.size()); MemberCustom member = clas.getMember("dataClass1s"); assertNotNull("dataClass1s member", member); assertEquals("dataClass1s type", "java.util.List", member.getWorkingType()); assertEquals("dataClass1s name", "dataClass1s", member.getXmlName()); assertFalse("dataClass1s required", member.isRequired()); assertTrue("dataClass1s collection", member instanceof CollectionFieldCustom); CollectionFieldCustom coll = (CollectionFieldCustom)member; assertEquals("dataClass1s type", "org.jibx.binding.generator.DataClass1", coll.getItemType()); assertEquals("dataClass1s name", "dataClass1", coll.getItemName()); clas = custom.getClassCustomization("org.jibx.binding.generator.DataClass1"); members = clas.getMembers(); assertEquals("property count", 4, members.size()); member = clas.getMember("boolean"); assertNotNull("boolean member", member); assertEquals("boolean type", "boolean", member.getWorkingType()); assertEquals("boolean name", "boolean", member.getXmlName()); assertTrue("boolean required", member.isRequired()); member = clas.getMember("int"); assertNotNull("int member", member); assertEquals("int type", "int", member.getWorkingType()); assertEquals("int name", "int", member.getXmlName()); assertFalse("int required", member.isRequired()); member = clas.getMember("linked"); assertNotNull("linked member", member); assertEquals("linked type", "org.jibx.binding.generator.DataClass1", member.getWorkingType()); assertEquals("linked name", "linked", member.getXmlName()); assertFalse("linked required", member.isRequired()); member = clas.getMember("string"); assertNotNull("string member", member); assertEquals("string type", "java.lang.String", member.getWorkingType()); assertEquals("string name", "string", member.getXmlName()); assertTrue("string required", member.isRequired()); } }libjibx-java-1.1.6a/build/test/org/jibx/binding/generator/CustomizationTestBase.java0000644000175000017500000001333310651201212030442 0ustar moellermoeller/* Copyright (c) 2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.generator; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.List; import junit.framework.TestCase; import org.jibx.binding.Loader; import org.jibx.binding.Utility; import org.jibx.binding.classes.BoundClass; import org.jibx.binding.classes.ClassCache; import org.jibx.binding.classes.ClassFile; import org.jibx.binding.classes.MungedClass; import org.jibx.binding.def.BindingDefinition; import org.jibx.runtime.BindingDirectory; import org.jibx.runtime.IBindingFactory; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.schema.validation.ValidationContext; import org.jibx.schema.validation.ValidationProblem; /** * Test code for class handling. */ public class CustomizationTestBase extends TestCase { protected static final String ROOT_CLASS = "org.jibx.binding.generator.GlobalCustom"; protected static final IBindingFactory m_bindingFactory; private static final String GlobalCustom = null; static { try { // set paths to be used for loading referenced classes URL[] urls = Loader.getClassPaths(); String[] paths = new String[urls.length]; for (int i = 0; i < urls.length; i++) { paths[i] = urls[i].getFile(); } ClassCache.setPaths(paths); ClassFile.setPaths(paths); // find the binding definition ClassLoader loader = CustomizationTestBase.class.getClassLoader(); InputStream is = loader.getResourceAsStream("org/jibx/binding/generator/binding.xml"); if (is == null) { throw new RuntimeException("Customizations binding definition not found"); } // process the binding BoundClass.reset(); MungedClass.reset(); BindingDefinition.reset(); BindingDefinition def = Utility.loadBinding("binding.xml", "binding", is, null, true); def.generateCode(false); // output the modified class files MungedClass.fixChanges(true); // look up the mapped class and associated binding factory Class mclas = Class.forName(ROOT_CLASS); m_bindingFactory = BindingDirectory.getFactory(mclas); } catch (JiBXException e) { e.printStackTrace(); throw new RuntimeException("JiBXException: " + e.getMessage()); } catch (IOException e) { throw new RuntimeException("IOException: " + e.getMessage()); } catch (ClassNotFoundException e) { throw new RuntimeException("ClassNotFoundException: " + e.getMessage()); } } /** * Read a customization into model from input stream. * * @param is input stream * @return root element * @throws Exception */ protected GlobalCustom readCustom(InputStream is) throws Exception { IUnmarshallingContext ictx = m_bindingFactory.createUnmarshallingContext(); ValidationContext vctx = new ValidationContext(); ictx.setDocument(is, null); ictx.setUserContext(vctx); GlobalCustom custom = (GlobalCustom)ictx.unmarshalElement(); List problems = vctx.getProblems(); if (problems.size() > 0) { StringBuffer buff = new StringBuffer(); for (int i = 0; i < problems.size(); i++) { ValidationProblem prob = (ValidationProblem)problems.get(i); buff.append(prob.getSeverity() >= ValidationProblem.ERROR_LEVEL ? "Error: " : "Warning: "); buff.append(prob.getDescription()); buff.append('\n'); } fail(buff.toString()); } custom.fillClasses(); return custom; } /** * Read a customization into model from string. * * @param text customization document text * @return root element * @throws Exception */ protected GlobalCustom readCustom(String text) throws Exception { return readCustom(new ByteArrayInputStream(text.getBytes("utf-8"))); } }libjibx-java-1.1.6a/build/test/org/jibx/binding/generator/DataClass1.java0000644000175000017500000000131410602647122026065 0ustar moellermoellerpackage org.jibx.binding.generator; public class DataClass1 { private int m_int; private String m_string; private boolean m_boolean; private DataClass1 m_linked; public boolean isBoolean() { return m_boolean; } public void setBoolean(boolean b) { m_boolean = b; } public int getInt() { return m_int; } public void setInt(int i) { m_int = i; } public DataClass1 getLinked() { return m_linked; } public void setLinked(DataClass1 linked) { m_linked = linked; } public String getString() { return m_string; } public void setString(String string) { m_string = string; } }libjibx-java-1.1.6a/build/test/org/jibx/binding/generator/DataClass2.java0000644000175000017500000000121010602647122026061 0ustar moellermoellerpackage org.jibx.binding.generator; import java.util.List; public class DataClass2 { private transient int m_transient; private static int m_static; private List m_dataClass1s; public static int getStatic() { return m_static; } public static void setStatic(int stat) { m_static = stat; } public List getDataClass1s() { return m_dataClass1s; } public void setDataClass1s(List dataClass1s) { m_dataClass1s = dataClass1s; } public int getTransient() { return m_transient; } public void setTransient(int trans) { m_transient = trans; } }libjibx-java-1.1.6a/build/test/org/jibx/binding/generator/DataClass2Generic.java0000644000175000017500000000126310602647122027366 0ustar moellermoellerpackage org.jibx.binding.generator; import java.util.List; public class DataClass2Generic { private transient int m_transient; private static int m_static; private List m_dataClass1s; public static int getStatic() { return m_static; } public static void setStatic(int stat) { m_static = stat; } public List getDataClass1s() { return m_dataClass1s; } public void setDataClass1s(List dataClass1s) { m_dataClass1s = dataClass1s; } public int getTransient() { return m_transient; } public void setTransient(int trans) { m_transient = trans; } }libjibx-java-1.1.6a/build/test/org/jibx/binding/generator/GeneratorSuite.java0000644000175000017500000000073310651201212027077 0ustar moellermoellerpackage org.jibx.binding.generator; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class GeneratorSuite extends TestCase { public static Test suite() { TestSuite suite = new TestSuite(BindingGeneratorCommandLineTest.class); suite.addTestSuite(ClassCustomTest.class); suite.addTestSuite(GeneratorTest.class); suite.addTestSuite(NestingBaseTest.class); return suite; } } libjibx-java-1.1.6a/build/test/org/jibx/binding/generator/GeneratorTest.java0000644000175000017500000001256610767277472026771 0ustar moellermoeller/* Copyright (c) 2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.generator; import java.net.URL; import java.util.ArrayList; import org.jibx.binding.Loader; import org.jibx.binding.classes.ClassCache; import org.jibx.binding.classes.ClassFile; import org.jibx.binding.model.BindingElement; import org.jibx.binding.model.BindingHolder; import org.jibx.binding.model.MappingElement; import org.jibx.schema.codegen.ReferenceCountMap; /** * Test code for binding generation. */ public class GeneratorTest extends CustomizationTestBase { public static final String MULTIPLE_PROPERTIES_CLASSES = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; /* (non-Javadoc) * @see junit.framework.TestCase#setUp() */ protected void setUp() throws Exception { // set paths to be used for loading referenced classes URL[] urls = Loader.getClassPaths(); String[] paths = new String[urls.length]; for (int i = 0; i < urls.length; i++) { paths[i] = urls[i].getFile(); } ClassCache.setPaths(paths); ClassFile.setPaths(paths); } public void testExpandReferences() { GlobalCustom custom = new GlobalCustom(); BindingGenerator gen = new BindingGenerator(custom); ReferenceCountMap refmap = new ReferenceCountMap(); gen.expandReferences("org.jibx.binding.generator.DataClass2Generic", refmap); assertEquals("original class references", 0, refmap.getCount("org.jibx.binding.generator.DataClass2Generic")); assertEquals("referenced class references", 2, refmap.getCount("org.jibx.binding.generator.DataClass1")); } public void testMultiplePropertiesClasses() throws Exception { GlobalCustom custom = readCustom(MULTIPLE_PROPERTIES_CLASSES); BindingGenerator gen = new BindingGenerator(custom); ReferenceCountMap refmap = new ReferenceCountMap(); gen.expandReferences("org.jibx.binding.generator.DataClass2Generic", refmap); assertEquals("original class references", 0, refmap.getCount("org.jibx.binding.generator.DataClass2")); assertEquals("referenced class references", 2, refmap.getCount("org.jibx.binding.generator.DataClass1")); gen.expandReferences("org.jibx.binding.generator.DataClass2Generic", refmap); assertEquals("original class references", 0, refmap.getCount("org.jibx.binding.generator.DataClass2Generic")); assertEquals("referenced class references", 3, refmap.getCount("org.jibx.binding.generator.DataClass1")); } public void testSingleClassBinding() { GlobalCustom custom = new GlobalCustom(); custom.initClasses(); custom.fillClasses(); BindingGenerator gen = new BindingGenerator(custom); ArrayList types = new ArrayList(); types.add("org.jibx.binding.generator.DataClass1"); gen.generate(null, types); BindingHolder hold = gen.getBinding("http://jibx.org/binding/generator"); assertNotNull("default namespace binding", hold); BindingElement binding = hold.getBinding(); ArrayList childs = binding.topChildren(); assertEquals("child count", 2, childs.size()); Object child = childs.get(1); assertTrue("child type", child instanceof MappingElement); MappingElement mapping = (MappingElement)child; assertEquals("mapped class", mapping.getClassName(), "org.jibx.binding.generator.DataClass1"); assertEquals("mapped items", 4, mapping.children().size()); } }libjibx-java-1.1.6a/build/test/org/jibx/binding/generator/NestingBaseTest.java0000644000175000017500000002730110651201212027201 0ustar moellermoeller/* Copyright (c) 2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.binding.generator; /** * Test code for nested property handling. */ public class NestingBaseTest extends CustomizationTestBase { public static final String SIMPLE_CUSTOM = ""; public static final String SIMPLE_PACKAGE = "\n" + " \n" + ""; public static final String NESTED_PACKAGE = "\n" + " \n" + " \n" + " \n" + ""; public static final String MULTIPLE_PACKAGE = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; public static final String MULTIPLE_PACKAGE_HYPHENATED = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; public static final String MULTIPLE_PACKAGE_UPPERCAMELCASE = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; public static final String MULTIPLE_PACKAGE_DOTTED = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; public static final String MULTIPLE_PACKAGE_UNDERSCORED = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; public void testSimpleCustom() throws Exception { GlobalCustom custom = readCustom(SIMPLE_CUSTOM); assertFalse("add-constructors default", custom.isAddConstructors()); assertFalse("force-classes default", custom.isForceClasses()); assertTrue("input default", custom.isInput()); assertTrue("output default", custom.isOutput()); assertFalse("map-abstract default", custom.isMapAbstract()); assertFalse("namespace-modular default", custom.isNamespaceModular()); assertEquals("name style default", NestingBase.CAMEL_CASE_NAMES, custom.getNameStyle()); assertEquals("value style default", NestingBase.ATTRIBUTE_VALUE_STYLE, custom.getValueStyle("int")); assertFalse("require setting", custom.isObjectRequired("java.lang.String")); assertTrue("require setting", custom.isPrimitiveRequired("int")); assertTrue("property-access setting", custom.isPropertyAccess()); assertEquals("get root", custom, custom.getGlobal()); assertNull("empty namespace",custom.getNamespace()); } public void testSimplePackage() throws Exception { GlobalCustom custom = readCustom(SIMPLE_PACKAGE); PackageCustom pack = custom.getPackage("org.jibx.binding"); assertFalse("map-abstract default", pack.isMapAbstract()); assertEquals("name style default", NestingBase.CAMEL_CASE_NAMES, pack.getNameStyle()); assertEquals("value style default", NestingBase.ATTRIBUTE_VALUE_STYLE, pack.getValueStyle("int")); assertFalse("require setting", pack.isObjectRequired("java.lang.String")); assertTrue("require setting", pack.isPrimitiveRequired("int")); assertFalse("property-access setting", pack.isPropertyAccess()); assertEquals("get root", custom, pack.getGlobal()); assertEquals("package namespace", "urn:binding", pack.getNamespace()); } public void testNestedPackage() throws Exception { GlobalCustom custom = readCustom(NESTED_PACKAGE); PackageCustom pack = custom.getPackage("org.jibx.binding.generator"); assertFalse("map-abstract default", pack.isMapAbstract()); assertEquals("name style default", NestingBase.CAMEL_CASE_NAMES, pack.getNameStyle()); assertEquals("value style default", NestingBase.ATTRIBUTE_VALUE_STYLE, pack.getValueStyle("int")); assertFalse("require setting", pack.isObjectRequired("java.lang.String")); assertTrue("require setting", pack.isPrimitiveRequired("int")); assertTrue("property-access setting", pack.isPropertyAccess()); assertEquals("get root", custom, pack.getGlobal()); assertEquals("package namespace", "urn:binding/generator", pack.getNamespace()); } public void testMultiplePackage() throws Exception { GlobalCustom custom = readCustom(MULTIPLE_PACKAGE); PackageCustom pack = custom.getPackage("org.jibx.binding.generator"); assertTrue("property-access setting", pack.isPropertyAccess()); assertEquals("package namespace", "urn:binding.generator", pack.getNamespace()); pack = custom.getPackage("org.jibx.runtime"); assertTrue("property-access setting", pack.isPropertyAccess()); assertEquals("package namespace", "urn:runtime", pack.getNamespace()); pack = custom.getPackage("org.jibx.extras"); assertFalse("property-access setting", pack.isPropertyAccess()); assertNull("package namespace", pack.getNamespace()); assertEquals("simple name", "a", pack.convertName("a")); assertEquals("simple name", "a", pack.convertName("A")); assertEquals("simple name", "aName", pack.convertName("aName")); assertEquals("leading underscore name", "aName", pack.convertName("__aName")); assertEquals("embedded underscores name", "aName", pack.convertName("a__Name")); assertEquals("complex name", "aBCDefgH", pack.convertName("aB_cDefgH")); } public void testHyphenated() throws Exception { GlobalCustom custom = readCustom(MULTIPLE_PACKAGE_HYPHENATED); PackageCustom pack = custom.getPackage("org.jibx.binding.generator"); assertEquals("simple name", "a", pack.convertName("a")); assertEquals("simple name", "a", pack.convertName("A")); assertEquals("simple name", "a-name", pack.convertName("aName")); assertEquals("leading underscore name", "a-name", pack.convertName("__aName")); assertEquals("embedded underscores name", "a-name", pack.convertName("a__Name")); assertEquals("complex name", "a-b-c-defg-h", pack.convertName("aB_cDefgH")); } public void testUpperCamelCase() throws Exception { GlobalCustom custom = readCustom(MULTIPLE_PACKAGE_UPPERCAMELCASE); PackageCustom pack = custom.getPackage("org.jibx.binding.generator"); assertEquals("simple name", "A", pack.convertName("a")); assertEquals("simple name", "A", pack.convertName("A")); assertEquals("simple name", "AName", pack.convertName("aName")); assertEquals("leading underscore name", "AName", pack.convertName("__aName")); assertEquals("embedded underscores name", "AName", pack.convertName("a__Name")); assertEquals("complex name", "ABCDefgH", pack.convertName("aB_cDefgH")); } public void testDotted() throws Exception { GlobalCustom custom = readCustom(MULTIPLE_PACKAGE_DOTTED); PackageCustom pack = custom.getPackage("org.jibx.binding.generator"); assertEquals("simple name", "a", pack.convertName("a")); assertEquals("simple name", "a", pack.convertName("A")); assertEquals("simple name", "a.name", pack.convertName("aName")); assertEquals("leading underscore name", "a.name", pack.convertName("__aName")); assertEquals("embedded underscores name", "a.name", pack.convertName("a__Name")); assertEquals("complex name", "a.b.c.defg.h", pack.convertName("aB_cDefgH")); } public void testUnderscored() throws Exception { GlobalCustom custom = readCustom(MULTIPLE_PACKAGE_UNDERSCORED); PackageCustom pack = custom.getPackage("org.jibx.binding.generator"); assertEquals("simple name", "a", pack.convertName("a")); assertEquals("simple name", "a", pack.convertName("A")); assertEquals("simple name", "a_name", pack.convertName("aName")); assertEquals("leading underscore name", "a_name", pack.convertName("__aName")); assertEquals("embedded underscores name", "a_name", pack.convertName("a__Name")); assertEquals("complex name", "a_b_c_defg_h", pack.convertName("aB_cDefgH")); } }libjibx-java-1.1.6a/build/test/org/jibx/match/0000755000175000017500000000000011023035622020771 5ustar moellermoellerlibjibx-java-1.1.6a/build/test/org/jibx/match/TestLoader.java0000644000175000017500000001137410434261102023707 0ustar moellermoeller/* Copyright (c) 2003-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.match; import java.io.File; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import org.jibx.binding.Loader; /** * Test program for the JiBX framework. Works with sets of three input * parameters: binding-resource, mapped-class, in-file. Unmarshals documents * from files using the binding defined for the mapped class, then marshals them * back out using the same bindings and compares the results. In case of a * comparison error the output file is left as temp.xml. * * @author Dennis M. Sosnoski * @version 1.0 */ public class TestLoader { private static final Class[] RUNNER_PARAM_TYPES = { String.class, String.class, String.class }; private TestLoader() {} public static void main(String[] args) { if (args.length >= 3 && args.length % 3 == 0) { // delete generated output file if present File temp = new File("temp.xml"); if (temp.exists()) { temp.delete(); } // process each set of three arguments boolean err = false; int offset = 0; String[] pargs = new String[3]; ClassLoader base = Thread.currentThread().getContextClassLoader(); for (; offset < args.length; offset += 3) { try { // load the test runner class using new custom class loader Thread.currentThread().setContextClassLoader(base); Loader loader = new Loader(); loader.loadResourceBinding(args[offset]); // invoke the "runTest" method of the runner class Thread.currentThread().setContextClassLoader(loader); Class clas = loader.loadClass("org.jibx.match.TestRunner"); Method test = clas.getDeclaredMethod("runTest", RUNNER_PARAM_TYPES); pargs[0] = args[offset+1]; pargs[1] = args[offset+2]; pargs[2] = args[offset+2]; Boolean result = (Boolean)test.invoke(null, pargs); if (!result.booleanValue()) { err = true; break; } } catch (InvocationTargetException ex) { ex.getTargetException().printStackTrace(); err = true; break; } catch (Exception ex) { ex.printStackTrace(); err = true; break; } } // take error exit if difference found if (err) { System.err.println("Error on argument set: " + args[offset] + ", " + args[offset+1] + ", " + args[offset+2]); System.err.println("File path " + temp.getAbsolutePath()); System.exit(1); } } else { System.err.println("Requires arguments in sets of three:\n" + " binding-resource mapped-class in-file\n" + "Leaves output as temp.xml in case of error"); System.exit(1); } } } libjibx-java-1.1.6a/build/test/org/jibx/match/TestLoaderDiff.java0000644000175000017500000001177010210704526024504 0ustar moellermoeller/* Copyright (c) 2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.match; import java.io.File; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import org.jibx.binding.Loader; /** * Test program for the JiBX framework. Works with sets of four input * parameters: binding-resource, mapped-class, in-file, comp-file. Unmarshals * documents from files using the binding defined for the mapped class, then * marshals them back out using the same bindings and compares the results to * the comparison file. This form of test is intended for asymmetric bindings, * where the output differs from the input. In case of a comparison error the * output file is left as temp.xml. * * @author Dennis M. Sosnoski * @version 1.0 */ public class TestLoaderDiff { private static final Class[] RUNNER_PARAM_TYPES = { String.class, String.class, String.class }; private TestLoaderDiff() {} public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException { if (args.length >= 4 && args.length % 4 == 0) { // delete generated output file if present File temp = new File("temp.xml"); if (temp.exists()) { temp.delete(); } // process each set of three arguments boolean err = false; int offset = 0; String[] pargs = new String[3]; ClassLoader base = Thread.currentThread().getContextClassLoader(); for (; offset < args.length; offset += 4) { try { // load the test runner class using new custom class loader Thread.currentThread().setContextClassLoader(base); Loader loader = new Loader(); loader.loadResourceBinding(args[offset]); // invoke the "runTest" method of the runner class Thread.currentThread().setContextClassLoader(loader); Class clas = loader.loadClass("org.jibx.match.TestRunner"); Method test = clas.getDeclaredMethod("runTest", RUNNER_PARAM_TYPES); pargs[0] = args[offset+1]; pargs[1] = args[offset+2]; pargs[2] = args[offset+3]; Boolean result = (Boolean)test.invoke(null, pargs); if (!result.booleanValue()) { err = true; break; } } catch (InvocationTargetException ex) { ex.getTargetException().printStackTrace(); err = true; break; } catch (Exception ex) { ex.printStackTrace(); err = true; break; } } // take error exit if difference found if (err) { System.err.println("Error on argument set: " + args[offset] + ", " + args[offset+1] + ", " + args[offset+2] + ", " + args[offset+3]); System.err.println("File path " + temp.getAbsolutePath()); System.exit(1); } } else { System.err.println("Requires arguments in sets of four:\n" + " binding-resource mapped-class in-file comp-file\n" + "Leaves output as temp.xml in case of error"); System.exit(1); } } }libjibx-java-1.1.6a/build/test/org/jibx/match/TestLoaderStAX.java0000644000175000017500000001143710434261102024447 0ustar moellermoeller/* Copyright (c) 2003-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.match; import java.io.File; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import org.jibx.binding.Loader; /** * Test program for the JiBX framework. Works with sets of three input * parameters: binding-resource, mapped-class, in-file. Unmarshals documents * from files using the binding defined for the mapped class, then marshals them * back out using the same bindings and compares the results. In case of a * comparison error the output file is left as temp.xml. * * @author Dennis M. Sosnoski * @version 1.0 */ public class TestLoaderStAX { private static final Class[] RUNNER_PARAM_TYPES = { String.class, String.class, String.class }; private TestLoaderStAX() {} public static void main(String[] args) { if (args.length >= 3 && args.length % 3 == 0) { // delete generated output file if present File temp = new File("temp.xml"); if (temp.exists()) { temp.delete(); } // process each set of three arguments boolean err = false; int offset = 0; String[] pargs = new String[3]; ClassLoader base = Thread.currentThread().getContextClassLoader(); for (; offset < args.length; offset += 3) { try { // load the test runner class using new custom class loader Thread.currentThread().setContextClassLoader(base); Loader loader = new Loader(); loader.loadResourceBinding(args[offset]); // invoke the "runTest" method of the runner class Thread.currentThread().setContextClassLoader(loader); Class clas = loader.loadClass("org.jibx.match.TestRunnerStAX"); Method test = clas.getDeclaredMethod("runTest", RUNNER_PARAM_TYPES); pargs[0] = args[offset+1]; pargs[1] = args[offset+2]; pargs[2] = args[offset+2]; Boolean result = (Boolean)test.invoke(null, pargs); if (!result.booleanValue()) { err = true; break; } } catch (InvocationTargetException ex) { ex.getTargetException().printStackTrace(); err = true; break; } catch (Exception ex) { ex.printStackTrace(); err = true; break; } } // take error exit if difference found if (err) { System.err.println("Error on argument set: " + args[offset] + ", " + args[offset+1] + ", " + args[offset+2]); System.err.println("File path " + temp.getAbsolutePath()); System.exit(1); } } else { System.err.println("Requires arguments in sets of three:\n" + " binding-resource mapped-class in-file\n" + "Leaves output as temp.xml in case of error"); System.exit(1); } } }libjibx-java-1.1.6a/build/test/org/jibx/match/TestMultiple.java0000644000175000017500000001411510240174126024274 0ustar moellermoeller/* Copyright (c) 2003-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.match; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import org.jibx.extras.*; import org.jibx.runtime.*; import org.xmlpull.v1.XmlPullParserException; /** * Test program for the JiBX framework. Works with sets of five input * parameters: mapped-class, in-binding, in-file, out-binding, compare-file. * Unmarshals documents from files using the specified in-bindings for the * specified classes, then marshals them back out using the same or different * bindings and compares the results with match files. In case of a comparison * error the output file is left as temp.xml. * * @author Dennis M. Sosnoski * @version 1.0 */ public class TestMultiple { protected static boolean runTest(String mname, String bin, String fin, String bout, String cout) throws IOException, JiBXException, XmlPullParserException { // look up the mapped class Class mclas; try { mclas = TestMultiple.class.getClassLoader().loadClass(mname); } catch (ClassNotFoundException ex) { System.err.println("Class " + mname + " not found"); return false; } // get binding factories for the named bindings IBindingFactory ibf = BindingDirectory.getFactory(bin, mclas); IBindingFactory obf = BindingDirectory.getFactory(bout, mclas); // unmarshal document to construct bean IUnmarshallingContext uctx = ibf.createUnmarshallingContext(); Object obj = uctx.unmarshalDocument(new FileInputStream(fin), null); if (!mclas.isInstance(obj)) { System.err.println("Unmarshalled result not expected type"); return false; } // marshal bean back out to document in memory IMarshallingContext mctx = obf.createMarshallingContext(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); mctx.setIndent(1, "\n", ' '); mctx.marshalDocument(obj, "UTF-8", null, bos); // compare with expected result document InputStreamReader brdr = new InputStreamReader (new ByteArrayInputStream(bos.toByteArray()), "UTF-8"); InputStreamReader frdr = new InputStreamReader (new FileInputStream(cout), "UTF-8"); DocumentComparator comp = new DocumentComparator(System.err); if (comp.compare(frdr, brdr)) { return true; } else { // save file before returning failure try { File fout = new File("temp.xml"); fout.delete(); FileOutputStream fos = new FileOutputStream(fout); fos.write(bos.toByteArray()); fos.close(); } catch (IOException ex) { System.err.println("Error writing to temp.xml: " + ex.getMessage()); } return false; } } public static void main(String[] args) { if (args.length >= 5 && args.length % 5 == 0) { // delete generated output file if present File temp = new File("temp.xml"); if (temp.exists()) { temp.delete(); } // process each set of four arguments boolean err = false; int base = 0; for (; base < args.length; base += 5) { try { if (!runTest(args[base], args[base+1], args[base+2], args[base+3], args[base+4])) { err = true; break; } } catch (Exception ex) { System.err.println("Exception: " + ex.getMessage()); ex.printStackTrace(); err = true; break; } } // take error exit if difference found if (err) { System.err.println("Error on argument set: " + args[base] + ", " + args[base+1] + ", " + args[base+2] + ", " + args[base+3] + ", " + args[base+4]); System.exit(1); } } else { System.err.println("Requires arguments in sets of five:\n" + " mapped-class in-binding in-file out-binding compare-file\n" + "Leaves output as temp.xml in case of error"); System.exit(1); } } }libjibx-java-1.1.6a/build/test/org/jibx/match/TestMultipleStAX.java0000644000175000017500000001504610434261102025034 0ustar moellermoeller/* Copyright (c) 2003-2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.match; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import javax.xml.stream.XMLOutputFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; import org.jibx.extras.*; import org.jibx.runtime.*; import org.jibx.runtime.impl.StAXWriter; import org.xmlpull.v1.XmlPullParserException; /** * Test program for the JiBX framework. Works with sets of five input * parameters: mapped-class, in-binding, in-file, out-binding, compare-file. * Unmarshals documents from files using the specified in-bindings for the * specified classes, then marshals them back out using the same or different * bindings and compares the results with match files. In case of a comparison * error the output file is left as temp.xml. * * @author Dennis M. Sosnoski * @version 1.0 */ public class TestMultipleStAX { protected static boolean runTest(String mname, String bin, String fin, String bout, String cout) throws IOException, JiBXException, XmlPullParserException { // look up the mapped class Class mclas; try { mclas = TestMultipleStAX.class.getClassLoader().loadClass(mname); } catch (ClassNotFoundException ex) { System.err.println("Class " + mname + " not found"); return false; } // get binding factories for the named bindings IBindingFactory ibf = BindingDirectory.getFactory(bin, mclas); IBindingFactory obf = BindingDirectory.getFactory(bout, mclas); // unmarshal document to construct bean IUnmarshallingContext uctx = ibf.createUnmarshallingContext(); Object obj = uctx.unmarshalDocument(new FileInputStream(fin), null); if (!mclas.isInstance(obj)) { System.err.println("Unmarshalled result not expected type"); return false; } // marshal bean back out to document in memory IMarshallingContext mctx = obf.createMarshallingContext(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); try { XMLOutputFactory ofact = XMLOutputFactory.newInstance(); XMLStreamWriter wrtr = ofact.createXMLStreamWriter(bos, "UTF-8"); mctx.setXmlWriter(new StAXWriter(obf.getNamespaces(), wrtr)); mctx.marshalDocument(obj); } catch (XMLStreamException e) { throw new JiBXException("Error creating writer", e); } // compare with expected result document InputStreamReader brdr = new InputStreamReader (new ByteArrayInputStream(bos.toByteArray()), "UTF-8"); InputStreamReader frdr = new InputStreamReader (new FileInputStream(cout), "UTF-8"); DocumentComparator comp = new DocumentComparator(System.err); if (comp.compare(frdr, brdr)) { return true; } else { // save file before returning failure try { File fout = new File("temp.xml"); fout.delete(); FileOutputStream fos = new FileOutputStream(fout); fos.write(bos.toByteArray()); fos.close(); } catch (IOException ex) { System.err.println("Error writing to temp.xml: " + ex.getMessage()); } return false; } } public static void main(String[] args) { if (args.length >= 5 && args.length % 5 == 0) { // delete generated output file if present File temp = new File("temp.xml"); if (temp.exists()) { temp.delete(); } // process each set of four arguments boolean err = false; int base = 0; for (; base < args.length; base += 5) { try { if (!runTest(args[base], args[base+1], args[base+2], args[base+3], args[base+4])) { err = true; break; } } catch (Exception ex) { System.err.println("Exception: " + ex.getMessage()); ex.printStackTrace(); err = true; break; } } // take error exit if difference found if (err) { System.err.println("Error on argument set: " + args[base] + ", " + args[base+1] + ", " + args[base+2] + ", " + args[base+3] + ", " + args[base+4]); System.exit(1); } } else { System.err.println("Requires arguments in sets of five:\n" + " mapped-class in-binding in-file out-binding compare-file\n" + "Leaves output as temp.xml in case of error"); System.exit(1); } } }libjibx-java-1.1.6a/build/test/org/jibx/match/TestRunner.java0000644000175000017500000001136510213525436023762 0ustar moellermoeller/* Copyright (c) 2003-2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.match; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import org.jibx.extras.*; import org.jibx.runtime.*; import org.jibx.runtime.impl.UnmarshallingContext; import org.xmlpull.v1.XmlPullParserException; /** * Test runner for the JiBX framework. This has a single static method, which * runs a test using a mapped class to unmarshal an input file and then * compares the result to an match file. In case of a comparison error the * output file is left as temp.xml. This is a separate class to allow * easy use with a custom classloader. * * @author Dennis M. Sosnoski * @version 1.0 */ public class TestRunner { private TestRunner() {} public static Boolean runTest(String mname, String fin, String fcomp, boolean save) throws IOException, JiBXException, XmlPullParserException { // look up the mapped class and associated binding factory Class mclas; try { mclas = TestSimple.class.getClassLoader().loadClass(mname); } catch (ClassNotFoundException ex) { System.err.println("Class " + mname + " not found"); return Boolean.FALSE; } IBindingFactory bfact = BindingDirectory.getFactory(mclas); // unmarshal document to construct objects IUnmarshallingContext uctx = bfact.createUnmarshallingContext(); Object obj = uctx.unmarshalDocument(new FileInputStream(fin), fin, null); if (!mclas.isInstance(obj)) { System.err.println("Unmarshalled result not expected type"); return Boolean.FALSE; } // determine encoding of input document String enc = ((UnmarshallingContext)uctx).getInputEncoding(); // marshal root object back out to document in memory IMarshallingContext mctx = bfact.createMarshallingContext(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); mctx.setIndent(2); mctx.marshalDocument(obj, enc, null, bos); // compare with match document InputStreamReader brdr = new InputStreamReader (new ByteArrayInputStream(bos.toByteArray()), enc); InputStreamReader frdr = new InputStreamReader (new FileInputStream(fcomp), enc); DocumentComparator comp = new DocumentComparator(System.err); boolean match = comp.compare(frdr, brdr); if (!match || save) { // save file before returning try { File fout = new File("temp.xml"); fout.delete(); FileOutputStream fos = new FileOutputStream(fout); fos.write(bos.toByteArray()); fos.close(); } catch (IOException ex) { System.err.println("Error writing to temp.xml: " + ex.getMessage()); } } return match ? Boolean.TRUE : Boolean.FALSE; } public static Boolean runTest(String mname, String fin, String fcomp) throws IOException, JiBXException, XmlPullParserException { return runTest(mname, fin, fcomp, false); } } libjibx-java-1.1.6a/build/test/org/jibx/match/TestRunnerStAX.java0000644000175000017500000001233410434261102024507 0ustar moellermoeller/* Copyright (c) 2003-2006, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.match; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import javax.xml.stream.XMLOutputFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; import org.jibx.extras.*; import org.jibx.runtime.*; import org.jibx.runtime.impl.StAXWriter; import org.jibx.runtime.impl.UnmarshallingContext; import org.xmlpull.v1.XmlPullParserException; /** * Test runner for the JiBX framework. This has a single static method, which * runs a test using a mapped class to unmarshal an input file and then * compares the result to an match file. In case of a comparison error the * output file is left as temp.xml. This is a separate class to allow * easy use with a custom classloader. * * @author Dennis M. Sosnoski * @version 1.0 */ public class TestRunnerStAX { private TestRunnerStAX() {} public static Boolean runTest(String mname, String fin, String fcomp, boolean save) throws IOException, JiBXException, XmlPullParserException { // look up the mapped class and associated binding factory Class mclas; try { mclas = TestSimple.class.getClassLoader().loadClass(mname); } catch (ClassNotFoundException ex) { System.err.println("Class " + mname + " not found"); return Boolean.FALSE; } IBindingFactory bfact = BindingDirectory.getFactory(mclas); // unmarshal document to construct objects IUnmarshallingContext uctx = bfact.createUnmarshallingContext(); Object obj = uctx.unmarshalDocument(new FileInputStream(fin), fin, null); if (!mclas.isInstance(obj)) { System.err.println("Unmarshalled result not expected type"); return Boolean.FALSE; } // determine encoding of input document String enc = ((UnmarshallingContext)uctx).getInputEncoding(); // marshal root object back out to document in memory IMarshallingContext mctx = bfact.createMarshallingContext(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); try { XMLOutputFactory ofact = XMLOutputFactory.newInstance(); XMLStreamWriter wrtr = ofact.createXMLStreamWriter(bos, enc); mctx.setXmlWriter(new StAXWriter(bfact.getNamespaces(), wrtr)); mctx.marshalDocument(obj); } catch (XMLStreamException e) { throw new JiBXException("Error creating writer", e); } // compare with match document InputStreamReader brdr = new InputStreamReader (new ByteArrayInputStream(bos.toByteArray()), enc); InputStreamReader frdr = new InputStreamReader (new FileInputStream(fcomp), enc); DocumentComparator comp = new DocumentComparator(System.err); boolean match = comp.compare(frdr, brdr); if (!match || save) { // save file before returning try { File fout = new File("temp.xml"); fout.delete(); FileOutputStream fos = new FileOutputStream(fout); fos.write(bos.toByteArray()); fos.close(); } catch (IOException ex) { System.err.println("Error writing to temp.xml: " + ex.getMessage()); } } return match ? Boolean.TRUE : Boolean.FALSE; } public static Boolean runTest(String mname, String fin, String fcomp) throws IOException, JiBXException, XmlPullParserException { return runTest(mname, fin, fcomp, false); } } libjibx-java-1.1.6a/build/test/org/jibx/match/TestSimple.java0000644000175000017500000001367710074705376023762 0ustar moellermoeller/* Copyright (c) 2003-2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.match; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import org.jibx.extras.*; import org.jibx.runtime.*; import org.jibx.runtime.impl.UnmarshallingContext; import org.xmlpull.v1.XmlPullParserException; /** * Test program for the JiBX framework. Works with sets of two input * parameters: mapped-class, in-file. Unmarshals documents from files using the * binding defined for the mapped class, then marshals them back out using the * same bindings and compares the results. In case of a comparison error the * output file is left as temp.xml. * * @author Dennis M. Sosnoski * @version 1.0 */ public class TestSimple { protected static boolean runTest(String mname, String fin) throws IOException, JiBXException, XmlPullParserException { // look up the mapped class and associated binding factory Class mclas; try { mclas = TestSimple.class.getClassLoader().loadClass(mname); } catch (ClassNotFoundException ex) { System.err.println("Class " + mname + " not found"); return false; } IBindingFactory bfact = BindingDirectory.getFactory(mclas); // unmarshal document to construct objects IUnmarshallingContext uctx = bfact.createUnmarshallingContext(); Object obj = uctx.unmarshalDocument(new FileInputStream(fin), null); if (!mclas.isInstance(obj)) { System.err.println("Unmarshalled result not expected type"); return false; } // determine encoding of input document String enc = ((UnmarshallingContext)uctx).getInputEncoding(); if (enc == null) { enc = "UTF-8"; } // marshal root object back out to document in memory IMarshallingContext mctx = bfact.createMarshallingContext(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); mctx.setIndent(2); mctx.marshalDocument(obj, enc, null, bos); // compare with original input document InputStreamReader brdr = new InputStreamReader (new ByteArrayInputStream(bos.toByteArray()), enc); InputStreamReader frdr = new InputStreamReader (new FileInputStream(fin), enc); DocumentComparator comp = new DocumentComparator(System.err); if (comp.compare(frdr, brdr)) { return true; } else { // save file before returning failure try { File fout = new File("temp.xml"); fout.delete(); FileOutputStream fos = new FileOutputStream(fout); fos.write(bos.toByteArray()); fos.close(); } catch (IOException ex) { System.err.println("Error writing to temp.xml: " + ex.getMessage()); } return false; } } public static void main(String[] args) { if (args.length >= 2 && args.length % 2 == 0) { // delete generated output file if present File temp = new File("temp.xml"); if (temp.exists()) { temp.delete(); } // process each set of two arguments boolean err = false; int base = 0; for (; base < args.length; base += 2) { try { if (!runTest(args[base], args[base+1])) { err = true; break; } } catch (Exception ex) { ex.printStackTrace(); // System.err.println(ex.getMessage()); err = true; break; } } // take error exit if difference found if (err) { System.err.println("Error on argument set: " + args[base] + ", " + args[base+1]); System.err.println("File path " + temp.getAbsolutePath()); System.exit(1); } } else { System.err.println("Requires arguments in sets of two:\n" + " mapped-class in-file\n" + "Leaves output as temp.xml in case of error"); System.exit(1); } } } libjibx-java-1.1.6a/build/test/org/jibx/match/TestSimpleStAX.java0000644000175000017500000001516210434261102024471 0ustar moellermoeller/* Copyright (c) 2003-2004, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.match; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import javax.xml.stream.XMLOutputFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; import org.jibx.extras.DocumentComparator; import org.jibx.runtime.BindingDirectory; import org.jibx.runtime.IBindingFactory; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.StAXWriter; import org.jibx.runtime.impl.UnmarshallingContext; import org.xmlpull.v1.XmlPullParserException; /** * Test program for the JiBX framework. Works with sets of two input * parameters: mapped-class, in-file. Unmarshals documents from files using the * binding defined for the mapped class, then marshals them back out using the * same bindings and compares the results. In case of a comparison error the * output file is left as temp.xml. * * @author Dennis M. Sosnoski * @version 1.0 */ public class TestSimpleStAX { protected static boolean runTest(String mname, String fin) throws IOException, JiBXException, XmlPullParserException { // look up the mapped class and associated binding factory Class mclas; try { mclas = TestSimpleStAX.class.getClassLoader().loadClass(mname); } catch (ClassNotFoundException ex) { System.err.println("Class " + mname + " not found"); return false; } IBindingFactory bfact = BindingDirectory.getFactory(mclas); // unmarshal document to construct objects IUnmarshallingContext uctx = bfact.createUnmarshallingContext(); Object obj = uctx.unmarshalDocument(new FileInputStream(fin), null); if (!mclas.isInstance(obj)) { System.err.println("Unmarshalled result not expected type"); return false; } // determine encoding of input document String enc = ((UnmarshallingContext)uctx).getInputEncoding(); if (enc == null) { enc = "UTF-8"; } // marshal root object back out to document in memory IMarshallingContext mctx = bfact.createMarshallingContext(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); try { XMLOutputFactory ofact = XMLOutputFactory.newInstance(); XMLStreamWriter wrtr = ofact.createXMLStreamWriter(bos, enc); mctx.setXmlWriter(new StAXWriter(bfact.getNamespaces(), wrtr)); mctx.marshalDocument(obj); } catch (XMLStreamException e) { throw new JiBXException("Error creating writer", e); } // compare with original input document InputStreamReader brdr = new InputStreamReader (new ByteArrayInputStream(bos.toByteArray()), enc); InputStreamReader frdr = new InputStreamReader (new FileInputStream(fin), enc); DocumentComparator comp = new DocumentComparator(System.err); if (comp.compare(frdr, brdr)) { return true; } else { // save file before returning failure try { File fout = new File("temp.xml"); fout.delete(); FileOutputStream fos = new FileOutputStream(fout); fos.write(bos.toByteArray()); fos.close(); } catch (IOException ex) { System.err.println("Error writing to temp.xml: " + ex.getMessage()); } return false; } } public static void main(String[] args) { if (args.length >= 2 && args.length % 2 == 0) { // delete generated output file if present File temp = new File("temp.xml"); if (temp.exists()) { temp.delete(); } // process each set of two arguments boolean err = false; int base = 0; for (; base < args.length; base += 2) { try { if (!runTest(args[base], args[base+1])) { err = true; break; } } catch (Exception ex) { ex.printStackTrace(); // System.err.println(ex.getMessage()); err = true; break; } } // take error exit if difference found if (err) { System.err.println("Error on argument set: " + args[base] + ", " + args[base+1]); System.err.println("File path " + temp.getAbsolutePath()); System.exit(1); } } else { System.err.println("Requires arguments in sets of two:\n" + " mapped-class in-file\n" + "Leaves output as temp.xml in case of error"); System.exit(1); } } } libjibx-java-1.1.6a/build/test/org/jibx/runtime/0000755000175000017500000000000011023035622021360 5ustar moellermoellerlibjibx-java-1.1.6a/build/test/org/jibx/runtime/impl/0000755000175000017500000000000011023035622022321 5ustar moellermoellerlibjibx-java-1.1.6a/build/test/org/jibx/runtime/impl/UnmarshallingContextTest.java0000644000175000017500000005245411005477264030223 0ustar moellermoeller/* * Created on Feb 5 2008 */ package org.jibx.runtime.impl; import org.jibx.runtime.IXMLReader; import org.jibx.runtime.JiBXConstrainedParseException; import org.jibx.runtime.JiBXException; import org.jibx.runtime.JiBXParseException; import junit.framework.TestCase; /** * Stubbed-out implementation of IXMLReader to be passed into the * unmarshalling context. * @author Joshua Davies */ class TestDocument implements IXMLReader { private int[] m_events; private String m_namespace; private String m_tagName; private String m_textContent; private String m_attributeName; private String m_attributeValue; private int nextEvent = 0; /** * Describe one single element that should be pulled out of this reader instance. * @param events * @param namespace * @param tagName * @param textContent */ public TestDocument(int[] events, String namespace, String tagName, String textContent) { m_events = events; m_namespace = namespace; m_tagName = tagName; m_textContent = textContent; } /** * Describe one single attribute that should be pulled out of this reader instance. * @param attributeName * @param attributeValue */ public TestDocument(String attributeName, String attributeValue) { m_attributeName = attributeName; m_attributeValue = attributeValue; } public int nextToken() { return ++nextEvent; } public int next() throws JiBXException { return ++nextEvent; } public String getName() { return m_tagName; } public String getNamespace() { return m_namespace; } public int getEventType() { return m_events[nextEvent]; } public String getText() { return m_textContent; } public String buildPositionString() { return null; } public int getAttributeCount() { return 0; } public String getAttributeName(int index) { return m_attributeName; } public String getAttributeNamespace(int index) { return null; } public String getAttributePrefix(int index) { return null; } public String getAttributeValue(int index) { return m_attributeValue; } public String getAttributeValue(String ns, String name) { return m_attributeValue; } public int getColumnNumber() { return 0; } public String getDocumentName() { return null; } public String getInputEncoding() { return null; } public int getLineNumber() { return 0; } public String getNamespace(String prefix) { return null; } public int getNamespaceCount(int depth) { return 0; } public String getNamespacePrefix(int index) { return null; } public String getNamespaceUri(int index) { return null; } public int getNestingDepth() { return 0; } public String getPrefix() { return null; } public boolean isNamespaceAware() { return false; } } /** * Test the unmarshalling context. * @author Joshua Davies */ public class UnmarshallingContextTest extends TestCase { /** * Verify that malformed integer content throws a properly * formed JiBXParseException. */ public void testParseContentInt() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument(new int [] {IXMLReader.TEXT, IXMLReader.END_TAG}, "namespace", "tag", "abc")); try { uctx.parseContentInt("namespace", "tag"); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "tag", null)); } } /** * Verify that malformed integer attributes throw a properly * formed JiBXParseException. */ public void testParseAttributeInt() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument("attr", "abc")); try { uctx.attributeInt("namespace", "attr"); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "attr", null)); } } /** * Verify that malformed integer attributes throw a properly * formed JiBXParseException. */ public void testParseAttributeIntDefault() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument("attr", "abc")); try { uctx.attributeInt("namespace", "attr", 5); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "attr", null)); } } /** * Verify that malformed enum-constrained attributes throw a properly * formed JiBXConstrainedParseException. */ public void testParseAttributeEnumeration() { UnmarshallingContext uctx = new UnmarshallingContext(); String[] enums = new String[] {"def", "ghi"}; uctx.setDocument(new TestDocument("attr", "abc")); try { uctx.attributeEnumeration("namespace", "attr", enums, new int[] {1, 2}); fail("Expected JiBXConstrainedParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXConstrainedParseException(null, "abc", enums, "namespace", "attr", null)); } } /** * Verify that malformed enum-constrained attributes throw a properly * formed JiBXConstrainedParseException. */ public void testParseAttributeEnumerationDefault() { UnmarshallingContext uctx = new UnmarshallingContext(); String[] enums = new String[] {"def", "ghi"}; uctx.setDocument(new TestDocument("attr", "abc")); try { uctx.attributeEnumeration("namespace", "attr", enums, new int[] {1, 2}, 1); fail("Expected JiBXConstrainedParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXConstrainedParseException(null, "abc", enums, "namespace", "attr", null)); } } /** * Verify that malformed enum-constrained content throws a properly * formed JiBXConstrainedParseException. */ public void testParseContentEnumeration() { UnmarshallingContext uctx = new UnmarshallingContext(); String[] enums = new String[] {"def", "ghi"}; uctx.setDocument(new TestDocument(new int [] {IXMLReader.TEXT, IXMLReader.END_TAG}, "namespace", "tag", "abc")); try { uctx.parseContentEnumeration("namespace", "tag", enums, new int[] {1, 2}); fail("Expected JiBXConstrainedParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXConstrainedParseException(null, "abc", enums, "namespace", "tag", null)); } } /** * Verify that malformed enum-constrained content throws a properly * formed JiBXConstrainedParseException. */ public void testParseContentEnumerationDefault() { UnmarshallingContext uctx = new UnmarshallingContext(); String[] enums = new String[] {"def", "ghi"}; uctx.setDocument(new TestDocument(new int [] {IXMLReader.START_TAG, IXMLReader.TEXT, IXMLReader.END_TAG}, "namespace", "tag", "abc")); try { uctx.parseElementEnumeration("namespace", "tag", enums, new int[] {1, 2}, 1); fail("Expected JiBXConstrainedParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXConstrainedParseException(null, "abc", enums, "namespace", "tag", null)); } } /** * Verify that malformed short content throws a properly formed * JiBXParseException. */ public void testParseAttributeShort() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument("attr", "abc")); try { uctx.attributeShort("namespace", "attr"); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "attr", null)); } } /** * Verify that malformed short content throws a properly formed * JiBXParseException. */ public void testParseAttributeShortDefault() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument("attr", "abc")); try { uctx.attributeShort("namespace", "attr", (short) 1); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "attr", null)); } } /** * Verify that malformed short content throws a properly formed * JiBXParseException. */ public void testParseContentShort() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument(new int [] {IXMLReader.TEXT, IXMLReader.END_TAG}, "namespace", "tag", "abc")); try { uctx.parseContentShort("namespace", "tag"); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "tag", null)); } } /** * Verify that malformed short content throws a properly formed * JiBXParseException. */ public void testParseElementShort() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument(new int [] {IXMLReader.START_TAG, IXMLReader.TEXT, IXMLReader.END_TAG}, "namespace", "tag", "abc")); try { uctx.parseElementShort("namespace", "tag", (byte) 1); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "tag", null)); } } /** * Verify that malformed byte content throws a properly formed * JiBXParseException. */ public void testParseAttributeByte() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument("attr", "abc")); try { uctx.attributeByte("namespace", "attr"); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "attr", null)); } } /** * Verify that malformed byte content throws a properly formed * JiBXParseException. */ public void testParseAttributeByteDefault() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument("attr", "abc")); try { uctx.attributeByte("namespace", "attr", (byte) 1); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "attr", null)); } } /** * Verify that malformed byte content throws a properly formed * JiBXParseException. */ public void testParseContentByte() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument(new int [] {IXMLReader.TEXT, IXMLReader.END_TAG}, "namespace", "tag", "abc")); try { uctx.parseContentByte("namespace", "tag"); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "tag", null)); } } /** * Verify that malformed byte content throws a properly formed * JiBXParseException. */ public void testParseElementByte() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument(new int [] {IXMLReader.START_TAG, IXMLReader.TEXT, IXMLReader.END_TAG}, "namespace", "tag", "abc")); try { uctx.parseElementByte("namespace", "tag", (byte) 1); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "tag", null)); } } /** * Verify that malformed char content throws a properly formed * JiBXParseException. */ public void testParseAttributeChar() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument("attr", "abc")); try { uctx.attributeChar("namespace", "attr"); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "attr", null)); } } /** * Verify that malformed char content throws a properly formed * JiBXParseException. */ public void testParseAttributeCharDefault() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument("attr", "abc")); try { uctx.attributeChar("namespace", "attr", 'a'); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "attr", null)); } } /** * Verify that malformed char content throws a properly formed * JiBXParseException. */ public void testParseContentChar() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument(new int [] {IXMLReader.TEXT, IXMLReader.END_TAG}, "namespace", "tag", "abc")); try { uctx.parseContentChar("namespace", "tag"); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "tag", null)); } } /** * Verify that malformed char content throws a properly formed * JiBXParseException. */ public void testParseElementChar() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument(new int [] {IXMLReader.START_TAG, IXMLReader.TEXT, IXMLReader.END_TAG}, "namespace", "tag", "abc")); try { uctx.parseElementChar("namespace", "tag", 'a'); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "tag", null)); } } /** * Verify that malformed long content throws a properly formed * JiBXParseException. */ public void testParseAttributeLong() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument("attr", "abc")); try { uctx.attributeLong("namespace", "attr"); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "attr", null)); } } /** * Verify that malformed long content throws a properly formed * JiBXParseException. */ public void testParseAttributeLongDefault() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument("attr", "abc")); try { uctx.attributeLong("namespace", "attr", 1L); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "attr", null)); } } /** * Verify that malformed long content throws a properly formed * JiBXParseException. */ public void testParseContentLong() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument(new int [] {IXMLReader.START_TAG, IXMLReader.TEXT, IXMLReader.END_TAG}, "namespace", "tag", "abc")); try { uctx.parseElementLong("namespace", "tag"); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "tag", null)); } } /** * Verify that malformed long content throws a properly formed * JiBXParseException. */ public void testParseElementLong() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument(new int [] {IXMLReader.START_TAG, IXMLReader.TEXT, IXMLReader.END_TAG}, "namespace", "tag", "abc")); try { uctx.parseElementLong("namespace", "tag", 1L); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "tag", null)); } } /** * Verify that malformed boolean content throws a properly formed * JiBXParseException. */ public void testParseAttributeBool() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument("attr", "abc")); try { uctx.attributeBoolean("namespace", "attr"); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "attr", null)); } } /** * Verify that malformed boolean content throws a properly formed * JiBXParseException. */ public void testParseAttributeBoolDefault() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument("attr", "abc")); try { uctx.attributeBoolean("namespace", "attr", false); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "attr", null)); } } /** * Verify that malformed boolean content throws a properly formed * JiBXParseException. */ public void testParseContentBool() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument(new int [] {IXMLReader.START_TAG, IXMLReader.TEXT, IXMLReader.END_TAG}, "namespace", "tag", "abc")); try { uctx.parseElementBoolean("namespace", "tag"); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "tag", null)); } } /** * Verify that malformed boolean content throws a properly formed * JiBXParseException. */ public void testParseElementBool() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument(new int [] {IXMLReader.START_TAG, IXMLReader.TEXT, IXMLReader.END_TAG}, "namespace", "tag", "abc")); try { uctx.parseElementBoolean("namespace", "tag", false); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "tag", null)); } } /** * Verify that malformed float content throws a properly formed * JiBXParseException. */ public void testParseAttributeFloat() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument("attr", "abc")); try { uctx.attributeFloat("namespace", "attr"); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "attr", null)); } } /** * Verify that malformed float content throws a properly formed * JiBXParseException. */ public void testParseAttributeFloatDefault() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument("attr", "abc")); try { uctx.attributeFloat("namespace", "attr", (float) 1.0); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "attr", null)); } } /** * Verify that malformed float content throws a properly formed * JiBXParseException. */ public void testParseContentFloat() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument(new int [] {IXMLReader.START_TAG, IXMLReader.TEXT, IXMLReader.END_TAG}, "namespace", "tag", "abc")); try { uctx.parseElementFloat("namespace", "tag"); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "tag", null)); } } /** * Verify that malformed float content throws a properly formed * JiBXParseException. */ public void testParseElementFloat() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument(new int [] {IXMLReader.START_TAG, IXMLReader.TEXT, IXMLReader.END_TAG}, "namespace", "tag", "abc")); try { uctx.parseElementFloat("namespace", "tag", (float) 1.0); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "tag", null)); } } /** * Verify that malformed double content throws a properly formed * JiBXParseException. */ public void testParseAttributeDouble() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument("attr", "abc")); try { uctx.attributeDouble("namespace", "attr"); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "attr", null)); } } /** * Verify that malformed double content throws a properly formed * JiBXParseException. */ public void testParseAttributeDoubleDefault() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument("attr", "abc")); try { uctx.attributeDouble("namespace", "attr", 1.0); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "attr", null)); } } /** * Verify that malformed double content throws a properly formed * JiBXParseException. */ public void testParseContentDouble() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument(new int [] {IXMLReader.START_TAG, IXMLReader.TEXT, IXMLReader.END_TAG}, "namespace", "tag", "abc")); try { uctx.parseElementDouble("namespace", "tag"); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "tag", null)); } } /** * Verify that malformed float content throws a properly formed * JiBXParseException. */ public void testParseElementDouble() { UnmarshallingContext uctx = new UnmarshallingContext(); uctx.setDocument(new TestDocument(new int [] {IXMLReader.START_TAG, IXMLReader.TEXT, IXMLReader.END_TAG}, "namespace", "tag", "abc")); try { uctx.parseElementDouble("namespace", "tag", 1.0); fail("Expected JiBXParseException to be thrown"); } catch (JiBXException e) { assertEquals(e, new JiBXParseException(null, "abc", "namespace", "tag", null)); } } } libjibx-java-1.1.6a/build/test/org/jibx/runtime/JiBXConstrainedParseExceptionTest.java0000644000175000017500000000166411005477264030746 0ustar moellermoellerpackage org.jibx.runtime; import junit.framework.TestCase; /** * Verify the permutations of the constrained parse exception (specifically, * string creation). */ public class JiBXConstrainedParseExceptionTest extends TestCase { public void testOneValue() { JiBXConstrainedParseException e = new JiBXConstrainedParseException( "msg", "value", new String[] {"abc"}); assertTrue(e.getMessage().endsWith(". Acceptable values are 'abc'.")); } public void testTwoValues() { JiBXConstrainedParseException e = new JiBXConstrainedParseException( "msg", "value", new String[] {"abc", "def"}); assertTrue(e.getMessage().endsWith(". Acceptable values are 'abc', 'def'.")); } public void testThreeValues() { JiBXConstrainedParseException e = new JiBXConstrainedParseException( "msg", "value", new String[] {"abc", "def", "ghi"}); assertTrue(e.getMessage().endsWith(". Acceptable values are 'abc', 'def', 'ghi'.")); } } libjibx-java-1.1.6a/build/test/org/jibx/runtime/UtilityTest.java0000644000175000017500000007204711002545610024540 0ustar moellermoeller/* * Created on Mar 6, 2003 * * To change this generated comment go to * Window>Preferences>Java>Code Generation>Code Template */ package org.jibx.runtime; import java.sql.Timestamp; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.TimeZone; import junit.framework.TestCase; /** * @author dennis */ public class UtilityTest extends TestCase { private static long LMS_PER_DAY = (long)24*60*60*1000; private DateFormat m_dateTimeFormat = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss"); private DateFormat m_dateFormat = new SimpleDateFormat("yyyy-MM-dd"); private DateFormat m_yearFormat = new SimpleDateFormat("yyyy"); private Calendar m_calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC")); /** * Constructor for UtilityTest. * @param arg0 */ public UtilityTest(String arg0) { super(arg0); m_dateTimeFormat.setCalendar(m_calendar); m_dateFormat.setCalendar(m_calendar); m_yearFormat.setCalendar(m_calendar); } public void testParseInt() throws JiBXException { assertEquals(0, Utility.parseInt("0")); assertEquals(2000000000, Utility.parseInt("2000000000")); assertEquals(-2000000000, Utility.parseInt("-2000000000")); assertEquals(2000000000, Utility.parseInt("+2000000000")); try { Utility.parseInt("-"); fail(); } catch (JiBXException ex) {} try { Utility.parseInt("+"); fail(); } catch (JiBXException ex) {} try { Utility.parseInt("20000000000"); fail(); } catch (JiBXException ex) {} try { Utility.parseInt("-20000000000"); fail(); } catch (JiBXException ex) {} try { Utility.parseInt("+20000000000"); fail(); } catch (JiBXException ex) {} try { Utility.parseInt("2000000X"); fail(); } catch (JiBXException ex) {} } public void testSerializeInt() throws JiBXException { assertEquals("0", Utility.serializeInt(0)); assertEquals("2000000", Utility.serializeInt(2000000)); assertEquals("2000000000", Utility.serializeInt(2000000000)); assertEquals("-2000000", Utility.serializeInt(-2000000)); assertEquals("-2000000000", Utility.serializeInt(-2000000000)); } public void testParseLong() throws JiBXException { assertEquals(0, Utility.parseLong("0")); assertEquals(2000000000, Utility.parseLong("2000000000")); assertEquals(-2000000000, Utility.parseLong("-2000000000")); assertEquals(2000000000, Utility.parseLong("+2000000000")); assertEquals(200000000000000L, Utility.parseLong("200000000000000")); assertEquals(-200000000000000L, Utility.parseLong("-200000000000000")); assertEquals(200000000000000L, Utility.parseLong("+200000000000000")); try { Utility.parseLong("-"); fail(); } catch (JiBXException ex) {} try { Utility.parseLong("+"); fail(); } catch (JiBXException ex) {} try { Utility.parseLong("2000000X"); fail(); } catch (JiBXException ex) {} } public void testSerializeLong() { assertEquals("0", Utility.serializeLong(0)); assertEquals("2000000", Utility.serializeLong(2000000)); assertEquals("2000000000000000", Utility.serializeLong(2000000000000000L)); assertEquals("-2000000", Utility.serializeLong(-2000000)); assertEquals("-2000000000000000", Utility.serializeLong(-2000000000000000L)); } public void testParseShort() throws JiBXException { assertEquals(0, Utility.parseShort("0")); assertEquals(20000, Utility.parseShort("20000")); assertEquals(-20000, Utility.parseShort("-20000")); assertEquals(20000, Utility.parseShort("+20000")); try { Utility.parseShort("-"); fail(); } catch (JiBXException ex) {} try { Utility.parseShort("+"); fail(); } catch (JiBXException ex) {} try { Utility.parseShort("2000000"); fail(); } catch (JiBXException ex) {} try { Utility.parseShort("2000X"); fail(); } catch (JiBXException ex) {} } public void testSerializeShort() { assertEquals("0", Utility.serializeShort((short)0)); assertEquals("20000", Utility.serializeShort((short)20000)); assertEquals("-20000", Utility.serializeShort((short)-20000)); } public void testParseByte() throws JiBXException { assertEquals(0, Utility.parseByte("0")); assertEquals(100, Utility.parseByte("100")); assertEquals(-100, Utility.parseByte("-100")); assertEquals(100, Utility.parseByte("+100")); try { Utility.parseByte("-"); fail(); } catch (JiBXException ex) {} try { Utility.parseByte("+"); fail(); } catch (JiBXException ex) {} try { Utility.parseByte("128"); fail(); } catch (JiBXException ex) {} try { Utility.parseByte("10X"); fail(); } catch (JiBXException ex) {} } public void testSerializeByte() { assertEquals("0", Utility.serializeByte((byte)0)); assertEquals("100", Utility.serializeByte((byte)100)); assertEquals("-100", Utility.serializeByte((byte)-100)); } public void testParseBoolean() throws JiBXException { assertTrue(Utility.parseBoolean("true")); assertTrue(Utility.parseBoolean("1")); assertFalse(Utility.parseBoolean("false")); assertFalse(Utility.parseBoolean("0")); try { Utility.parseBoolean("x"); fail(); } catch (JiBXException ex) {} try { Utility.parseBoolean("2"); fail(); } catch (JiBXException ex) {} try { Utility.parseBoolean("+1"); fail(); } catch (JiBXException ex) {} } public void testSerializeBoolean() { assertEquals("true", Utility.serializeBoolean(true)); assertEquals("false", Utility.serializeBoolean(false)); } public void testParseChar() throws JiBXException { assertEquals(0, Utility.parseChar("0")); assertEquals(100, Utility.parseChar("100")); assertEquals(1000, Utility.parseChar("+1000")); assertEquals(65000, Utility.parseChar("65000")); try { Utility.parseChar("-"); fail(); } catch (JiBXException ex) {} try { Utility.parseChar("+"); fail(); } catch (JiBXException ex) {} try { Utility.parseChar("-10"); fail(); } catch (JiBXException ex) {} try { Utility.parseChar("69000"); fail(); } catch (JiBXException ex) {} } public void testSerializeChar() { assertEquals("0", Utility.serializeChar((char)0)); assertEquals("100", Utility.serializeChar((char)100)); assertEquals("60000", Utility.serializeChar((char)60000)); } public void testParseFloat() throws JiBXException { assertEquals(1.0f, Utility.parseFloat("1.0"), 0.000001f); assertEquals(1000000000.0f, Utility.parseFloat("1000000000.0"), 100.0f); assertEquals(0.0000000001f, Utility.parseFloat("0.0000000001"), 1.0e-17f); assertEquals(0, Float.compare(-0.0f, Utility.parseFloat("-0"))); assertEquals(0, Float.compare(Float.NEGATIVE_INFINITY, Utility.parseFloat("-INF"))); assertEquals(0, Float.compare(Float.POSITIVE_INFINITY, Utility.parseFloat("INF"))); assertEquals(0, Float.compare(Float.NaN, Utility.parseFloat("NaN"))); try { Utility.parseFloat("NAN"); fail(); } catch (JiBXException ex) {} try { Utility.parseFloat("+INF"); fail(); } catch (JiBXException ex) {} try { Utility.parseFloat("1E+2.5"); fail(); } catch (JiBXException ex) {} } public void testSerializeFloat() { assertEquals("1.0", Utility.serializeFloat(1.0f)); assertEquals("1.0E9", Utility.serializeFloat(1000000000.0f)); assertEquals("1.0E-10", Utility.serializeFloat(0.0000000001f)); assertEquals("-INF", Utility.serializeFloat(Float.NEGATIVE_INFINITY)); assertEquals("INF", Utility.serializeFloat(Float.POSITIVE_INFINITY)); assertEquals("NaN", Utility.serializeFloat(Float.NaN)); } public void testParseDouble() throws JiBXException { assertEquals(1.0d, Utility.parseDouble("1.0"), 1.0e-12d); assertEquals(1000000000.0d, Utility.parseDouble("1000000000.0"), 0.01d); assertEquals(0.0000000001d, Utility.parseDouble("0.0000000001"), 1.0e-22d); assertEquals(0, Double.compare(-0.0d, Utility.parseDouble("-0"))); assertEquals(0, Double.compare(Double.NEGATIVE_INFINITY, Utility.parseDouble("-INF"))); assertEquals(0, Double.compare(Double.POSITIVE_INFINITY, Utility.parseDouble("INF"))); assertEquals(0, Double.compare(Double.NaN, Utility.parseDouble("NaN"))); try { Utility.parseDouble("NAN"); fail(); } catch (JiBXException ex) {} try { Utility.parseDouble("+INF"); fail(); } catch (JiBXException ex) {} try { Utility.parseDouble("1E+2.5"); fail(); } catch (JiBXException ex) {} } public void testSerializeDouble() { assertEquals("1.0", Utility.serializeDouble(1.0d)); assertEquals("1.0E9", Utility.serializeDouble(1000000000.0d)); assertEquals("1.0E-10", Utility.serializeDouble(0.0000000001d)); assertEquals("-INF", Utility.serializeDouble(Double.NEGATIVE_INFINITY)); assertEquals("INF", Utility.serializeDouble(Double.POSITIVE_INFINITY)); assertEquals("NaN", Utility.serializeDouble(Double.NaN)); } public void testParseYear() { } public void testParseYearMonth() { } public void testParseDate() throws JiBXException { assertEquals(0, Utility.parseDate("1970-01-01")); assertEquals(LMS_PER_DAY, Utility.parseDate("1970-01-02")); assertEquals(LMS_PER_DAY, Utility.parseDate("0001-03-01") - Utility.parseDate("0001-02-28")); assertEquals(LMS_PER_DAY, Utility.parseDate("0001-01-01") - Utility.parseDate("-0001-12-31")); assertEquals(LMS_PER_DAY, Utility.parseDate("-0001-03-01") - Utility.parseDate("-0001-02-28")); assertEquals(LMS_PER_DAY*2, Utility.parseDate("-0004-03-01") - Utility.parseDate("-0004-02-28")); try { Utility.parseDate("+1970-01-01"); fail(); } catch (JiBXException ex) {} try { Utility.parseDate("197X-01-01"); fail(); } catch (JiBXException ex) {} try { Utility.parseDate("1970-1-01"); fail(); } catch (JiBXException ex) {} try { Utility.parseDate("1970-01-32"); fail(); } catch (JiBXException ex) {} try { Utility.parseDate("1970-02-29"); fail(); } catch (JiBXException ex) {} try { Utility.parseDate("01-01-01"); fail(); } catch (JiBXException ex) {} try { Utility.parseDate("0001-02-29"); fail(); } catch (JiBXException ex) {} try { Utility.parseDate("0000-01-01"); fail(); } catch (JiBXException ex) {} try { Utility.parseDate("-0001-02-29"); fail(); } catch (JiBXException ex) {} try { Utility.parseDate("-0003-02-29"); fail(); } catch (JiBXException ex) {} } public void testParseDateTime() throws JiBXException { assertEquals(0, Utility.parseDateTime("1970-01-01T00:00:00.000")); assertEquals(0, Utility.parseDateTime("1970-01-01T00:00:00")); assertEquals(1, Utility.parseDateTime("1970-01-01T00:00:00.001")); assertEquals(1000, Utility.parseDateTime("1970-01-01T00:00:01")); assertEquals(60*1000, Utility.parseDateTime("1970-01-01T00:01:00")); assertEquals(60*60*1000, Utility.parseDateTime("1970-01-01T01:00:00Z")); assertEquals(60*60*1000, Utility.parseDateTime("1970-01-01T02:00:00+01:00")); assertEquals(LMS_PER_DAY, Utility.parseDateTime("1970-01-02T00:00:00Z")); assertEquals(LMS_PER_DAY, Utility.parseDateTime("0001-03-01T00:00:00Z") - Utility.parseDateTime("0001-02-28T00:00:00Z")); assertEquals(1000, Utility.parseDateTime("0001-01-01T00:00:00Z") - Utility.parseDateTime("-0001-12-31T23:59:59Z")); assertEquals(LMS_PER_DAY, Utility.parseDateTime("0001-01-01T00:00:00Z") - Utility.parseDateTime("-0001-12-31T00:00:00Z")); assertEquals(LMS_PER_DAY, Utility.parseDateTime("-0001-03-01T00:00:00Z") - Utility.parseDateTime("-0001-02-28T00:00:00Z")); assertEquals(LMS_PER_DAY*2, Utility.parseDateTime("-0004-03-01T00:00:00Z") - Utility.parseDateTime("-0004-02-28T00:00:00Z")); try { Utility.parseDateTime("+1970-01-01T00:00:00.000"); fail(); } catch (JiBXException ex) {} try { Utility.parseDateTime("197X-01-01T00:00:00.000"); fail(); } catch (JiBXException ex) {} try { Utility.parseDateTime("1970-1-01T00:00:00.000"); fail(); } catch (JiBXException ex) {} try { Utility.parseDateTime("1970-01-01T00:00"); fail(); } catch (JiBXException ex) {} try { Utility.parseDateTime("1970-01-32T00:00:00"); fail(); } catch (JiBXException ex) {} try { Utility.parseDateTime("1970-02-29T00:00:00"); fail(); } catch (JiBXException ex) {} try { Utility.parseDateTime("1970-01-01T60:00:00"); fail(); } catch (JiBXException ex) {} try { Utility.parseDateTime("1970-01-01T-5:00:00"); fail(); } catch (JiBXException ex) {} try { Utility.parseDateTime("01-01-01T00:00:00"); fail(); } catch (JiBXException ex) {} try { Utility.parseDateTime("0001-02-29T00:00:00"); fail(); } catch (JiBXException ex) {} try { Utility.parseDateTime("0000-01-01T00:00:00"); fail(); } catch (JiBXException ex) {} try { Utility.parseDateTime("-0001-02-29T00:00:00"); fail(); } catch (JiBXException ex) {} try { Utility.parseDateTime("-0003-02-29T00:00:00"); fail(); } catch (JiBXException ex) {} } public void testDeserializeDateTime() { } private void trySerializeYear(String dt) throws JiBXException, ParseException { Date date = m_yearFormat.parse(dt); String result = Utility.serializeYear(date); assertEquals(dt, result); } private void tryRoundtripYear(String dt) throws JiBXException { long time = Utility.parseYear(dt); String result = Utility.serializeYear(new Date(time)); // System.out.println("Parsed date " + dt + " to value " + time + // ", serialized as " + result); assertEquals(dt, result); } public void testSerializeYear() throws JiBXException, ParseException { trySerializeYear("1970"); trySerializeYear("1969"); trySerializeYear("1968"); trySerializeYear("1967"); trySerializeYear("1966"); trySerializeYear("1965"); trySerializeYear("1800"); trySerializeYear("1600"); trySerializeYear("1999"); trySerializeYear("2000"); trySerializeYear("2999"); trySerializeYear("3000"); trySerializeYear("9999"); tryRoundtripYear("1970"); tryRoundtripYear("1969"); tryRoundtripYear("1968"); tryRoundtripYear("1967"); tryRoundtripYear("1966"); tryRoundtripYear("1965"); tryRoundtripYear("1800"); tryRoundtripYear("1600"); tryRoundtripYear("1999"); tryRoundtripYear("2000"); tryRoundtripYear("2001"); tryRoundtripYear("2002"); tryRoundtripYear("2999"); tryRoundtripYear("3000"); tryRoundtripYear("9999"); // the following values can only be tested roundtrip (because Java // conversion insists on a discontinuity in Gregorian calendar) tryRoundtripYear("12999"); tryRoundtripYear("1300"); tryRoundtripYear("0300"); tryRoundtripYear("0001"); tryRoundtripYear("-0001"); tryRoundtripYear("-0004"); tryRoundtripYear("-0005"); tryRoundtripYear("-0199"); tryRoundtripYear("-0198"); } public void testSerializeYearMonth() throws JiBXException { assertEquals("1970-01", Utility.serializeYearMonth(new Date(0))); } private void trySerializeDate(String dt) throws JiBXException, ParseException { Date date = m_dateFormat.parse(dt); String result = Utility.serializeDate(date); assertEquals(dt, result); } // ignores trailing time zone information private void tryRoundtripDate(String dt) throws JiBXException { long time = Utility.parseDate(dt); String result = Utility.serializeDate(new Date(time)); // System.out.println("Parsed date " + dt + " to value " + time + // ", serialized as " + result); assertEquals(dt.substring(0, result.length()), result); } //#!j2me{ private void trySerializeSqlDate(String dt) throws JiBXException, ParseException { java.sql.Date date = java.sql.Date.valueOf(dt); String result = Utility.serializeSqlDate(date); assertEquals(dt, result); } // ignores trailing time zone information private void tryRoundtripSqlDate(String dt) throws JiBXException { java.sql.Date date1 = Utility.deserializeSqlDate(dt); int split = dt.indexOf('-', 1); java.sql.Date date2 = java.sql.Date.valueOf(dt.substring(0, split+6)); assertEquals(date1, date2); String result = Utility.serializeSqlDate(date1); assertEquals(dt.substring(0, result.length()), result); } private void tryRoundtripOnlySqlDate(String dt) throws JiBXException { java.sql.Date date1 = Utility.deserializeSqlDate(dt); String result = Utility.serializeSqlDate(date1); assertEquals(dt, result); } //#j2me} public void testSerializeDate() throws JiBXException, ParseException { trySerializeDate("1970-01-01"); trySerializeDate("1970-02-01"); trySerializeDate("1970-01-02"); trySerializeDate("1969-12-31"); trySerializeDate("1969-01-01"); trySerializeDate("1969-02-28"); trySerializeDate("1969-03-01"); trySerializeDate("1968-01-01"); trySerializeDate("1968-02-29"); trySerializeDate("1968-03-01"); trySerializeDate("1967-01-01"); trySerializeDate("1966-01-01"); trySerializeDate("1965-01-01"); trySerializeDate("1800-01-01"); trySerializeDate("1600-11-11"); trySerializeDate("1999-12-31"); trySerializeDate("2000-01-01"); trySerializeDate("2000-02-29"); trySerializeDate("2000-12-31"); trySerializeDate("2001-01-01"); trySerializeDate("2001-12-31"); trySerializeDate("2002-01-01"); trySerializeDate("2002-02-13"); trySerializeDate("2999-12-31"); trySerializeDate("3000-01-01"); trySerializeDate("3000-12-31"); trySerializeDate("9999-12-31"); tryRoundtripDate("1970-01-01"); tryRoundtripDate("1970-02-01"); tryRoundtripDate("1970-01-02"); tryRoundtripDate("1969-12-31"); tryRoundtripDate("1969-01-01"); tryRoundtripDate("1969-02-28"); tryRoundtripDate("1969-03-01"); tryRoundtripDate("1968-01-01"); tryRoundtripDate("1968-02-29"); tryRoundtripDate("1968-03-01"); tryRoundtripDate("1967-01-01"); tryRoundtripDate("1966-01-01"); tryRoundtripDate("1965-01-01"); tryRoundtripDate("1800-01-01"); tryRoundtripDate("1600-11-11"); tryRoundtripDate("1999-12-31"); tryRoundtripDate("2000-01-01"); tryRoundtripDate("2000-02-29"); tryRoundtripDate("2000-12-31"); tryRoundtripDate("2001-01-01"); tryRoundtripDate("2001-12-31"); tryRoundtripDate("2002-01-01"); tryRoundtripDate("2002-02-13"); tryRoundtripDate("2999-12-31"); tryRoundtripDate("3000-01-01"); tryRoundtripDate("3000-12-31"); tryRoundtripDate("9999-12-31"); tryRoundtripDate("1970-01-01Z"); tryRoundtripDate("1969-03-01+10:30"); tryRoundtripDate("1800-01-01-04:00"); tryRoundtripDate("1600-11-11Z"); tryRoundtripDate("3000-12-31+00:00"); tryRoundtripDate("9999-12-31-12:00"); // the following values can only be tested roundtrip (because Java // conversion insists on a discontinuity in Gregorian calendar) tryRoundtripDate("12999-12-31"); tryRoundtripDate("1300-01-01"); tryRoundtripDate("0300-12-31"); tryRoundtripDate("0001-01-01"); tryRoundtripDate("-0001-12-31"); tryRoundtripDate("-0004-02-29"); tryRoundtripDate("-0004-03-01"); tryRoundtripDate("-0004-12-31"); tryRoundtripDate("-0005-02-28"); tryRoundtripDate("-0005-03-01"); tryRoundtripDate("-0199-12-31"); tryRoundtripDate("-0198-01-01"); } //#!j2me{ public void testSerializeSqlDate() throws JiBXException, ParseException { trySerializeSqlDate("1970-01-01"); trySerializeSqlDate("1970-02-01"); trySerializeSqlDate("1970-01-02"); trySerializeSqlDate("1969-12-31"); trySerializeSqlDate("1969-01-01"); trySerializeSqlDate("1969-02-28"); trySerializeSqlDate("1969-03-01"); trySerializeSqlDate("1968-01-01"); trySerializeSqlDate("1968-02-29"); trySerializeSqlDate("1968-03-01"); trySerializeSqlDate("1967-01-01"); trySerializeSqlDate("1966-01-01"); trySerializeSqlDate("1965-01-01"); trySerializeSqlDate("1800-01-01"); trySerializeSqlDate("1600-11-11"); trySerializeSqlDate("1999-12-31"); trySerializeSqlDate("2000-01-01"); trySerializeSqlDate("2000-02-29"); trySerializeSqlDate("2000-12-31"); trySerializeSqlDate("2001-01-01"); trySerializeSqlDate("2001-12-31"); trySerializeSqlDate("2002-01-01"); trySerializeSqlDate("2002-02-13"); trySerializeSqlDate("2999-12-31"); trySerializeSqlDate("3000-01-01"); trySerializeSqlDate("3000-12-31"); trySerializeSqlDate("9999-12-31"); tryRoundtripSqlDate("1970-01-01"); tryRoundtripSqlDate("1970-02-01"); tryRoundtripSqlDate("1970-01-02"); tryRoundtripSqlDate("1969-12-31"); tryRoundtripSqlDate("1969-01-01"); tryRoundtripSqlDate("1969-02-28"); tryRoundtripSqlDate("1969-03-01"); tryRoundtripSqlDate("1968-01-01"); tryRoundtripSqlDate("1968-02-29"); tryRoundtripSqlDate("1968-03-01"); tryRoundtripSqlDate("1967-01-01"); tryRoundtripSqlDate("1966-01-01"); tryRoundtripSqlDate("1965-01-01"); tryRoundtripSqlDate("1800-01-01"); tryRoundtripSqlDate("1600-11-11"); tryRoundtripSqlDate("1999-12-31"); tryRoundtripSqlDate("2000-01-01"); tryRoundtripSqlDate("2000-02-29"); tryRoundtripSqlDate("2000-12-31"); tryRoundtripSqlDate("2001-01-01"); tryRoundtripSqlDate("2001-12-31"); tryRoundtripSqlDate("2002-01-01"); tryRoundtripSqlDate("2002-02-13"); tryRoundtripSqlDate("2999-12-31"); tryRoundtripSqlDate("3000-01-01"); tryRoundtripSqlDate("3000-12-31"); tryRoundtripSqlDate("9999-12-31"); tryRoundtripSqlDate("12999-12-31"); tryRoundtripSqlDate("1970-01-01Z"); tryRoundtripSqlDate("1969-03-01+10:30"); tryRoundtripSqlDate("1800-01-01-04:00"); tryRoundtripSqlDate("1600-11-11Z"); tryRoundtripSqlDate("3000-12-31+00:00"); tryRoundtripSqlDate("9999-12-31-12:00"); // the following values can only be tested roundtrip (because Java // conversion insists on a discontinuity in Gregorian calendar) tryRoundtripOnlySqlDate("1300-01-01"); tryRoundtripOnlySqlDate("0300-12-31"); tryRoundtripOnlySqlDate("0001-01-01"); tryRoundtripOnlySqlDate("-0001-12-31"); // should work, but inconsistency in conversions at present // tryRoundtripOnlySqlDate("-0004-02-29"); tryRoundtripOnlySqlDate("-0004-03-01"); tryRoundtripOnlySqlDate("-0004-12-31"); tryRoundtripOnlySqlDate("-0005-02-28"); tryRoundtripOnlySqlDate("-0005-03-01"); tryRoundtripOnlySqlDate("-0199-12-31"); tryRoundtripOnlySqlDate("-0198-01-01"); } public void testSerializeTimestamp() throws JiBXException { Timestamp ts = Timestamp.valueOf("2006-09-07 15:37:10.123456"); String text = Utility.serializeTimestamp(ts); assertTrue("Timestamp serialization error", text.startsWith("2006-09-0")); assertTrue("Timestamp serialization error", text.endsWith(":37:10.123456Z")); assertEquals("Timestamp deserialization error", ts, Utility.deserializeTimestamp(text)); } //#j2me} private void trySerializeDateTime(String dt) throws JiBXException, ParseException { Date date = m_dateTimeFormat.parse(dt); String result = Utility.serializeDateTime(date); assertEquals(dt, result); } private void tryRoundtripDateTime(String dt) throws JiBXException { long time = Utility.parseDateTime(dt); String result = Utility.serializeDateTime(new Date(time)); // System.out.println("Parsed date " + dt + " to value " + time + // ", serialized as " + result); assertEquals(dt, result); } public void testSerializeDateTime() throws JiBXException, ParseException { assertEquals("1970-01-01T00:00:00Z", Utility.serializeDateTime(new Date(0))); trySerializeDateTime("1970-01-01T00:00:00Z"); trySerializeDateTime("1970-01-01T01:00:00Z"); trySerializeDateTime("1970-01-01T00:01:00Z"); trySerializeDateTime("1970-01-01T00:00:01Z"); trySerializeDateTime("1970-01-01T23:59:59Z"); trySerializeDateTime("1970-02-01T00:00:00Z"); trySerializeDateTime("1970-01-02T00:00:00Z"); trySerializeDateTime("1969-12-31T23:59:59Z"); trySerializeDateTime("1969-01-01T00:00:00Z"); trySerializeDateTime("1969-02-28T00:00:00Z"); trySerializeDateTime("1969-03-01T00:00:00Z"); trySerializeDateTime("1968-01-01T00:00:00Z"); trySerializeDateTime("1968-02-29T00:00:00Z"); trySerializeDateTime("1968-03-01T00:00:00Z"); trySerializeDateTime("1967-01-01T00:00:00Z"); trySerializeDateTime("1966-01-01T00:00:00Z"); trySerializeDateTime("1965-01-01T00:00:00Z"); trySerializeDateTime("1800-01-01T00:00:00Z"); trySerializeDateTime("1600-11-11T23:59:59Z"); trySerializeDateTime("1999-12-31T23:59:59Z"); trySerializeDateTime("2000-01-01T00:00:00Z"); trySerializeDateTime("2000-02-29T00:00:00Z"); trySerializeDateTime("2000-12-31T23:59:59Z"); trySerializeDateTime("2001-01-01T00:00:00Z"); trySerializeDateTime("2001-02-28T18:54:31Z"); trySerializeDateTime("2001-12-31T23:59:59Z"); trySerializeDateTime("2002-01-01T00:00:00Z"); trySerializeDateTime("2999-12-31T23:59:59Z"); trySerializeDateTime("3000-01-01T00:00:00Z"); trySerializeDateTime("3000-12-31T23:59:59Z"); trySerializeDateTime("9999-12-31T23:59:59Z"); tryRoundtripDateTime("1970-01-01T00:00:00Z"); tryRoundtripDateTime("1970-01-01T01:00:00Z"); tryRoundtripDateTime("1970-01-01T00:01:00Z"); tryRoundtripDateTime("1970-01-01T00:00:01Z"); tryRoundtripDateTime("1970-01-01T23:59:59Z"); tryRoundtripDateTime("1970-02-01T00:00:00Z"); tryRoundtripDateTime("1970-01-02T00:00:00Z"); tryRoundtripDateTime("1969-12-31T23:59:59Z"); tryRoundtripDateTime("1969-01-01T00:00:00Z"); tryRoundtripDateTime("1969-02-28T00:00:00Z"); tryRoundtripDateTime("1969-03-01T00:00:00Z"); tryRoundtripDateTime("1968-01-01T00:00:00Z"); tryRoundtripDateTime("1968-02-29T00:00:00Z"); tryRoundtripDateTime("1968-03-01T00:00:00Z"); tryRoundtripDateTime("1967-01-01T00:00:00Z"); tryRoundtripDateTime("1966-01-01T00:00:00Z"); tryRoundtripDateTime("1965-01-01T00:00:00Z"); tryRoundtripDateTime("1800-01-01T00:00:00Z"); tryRoundtripDateTime("1600-11-11T23:59:59Z"); tryRoundtripDateTime("1999-12-31T23:59:59Z"); tryRoundtripDateTime("2000-01-01T00:00:00Z"); tryRoundtripDateTime("2000-02-29T00:00:00Z"); tryRoundtripDateTime("2000-12-31T23:59:59Z"); tryRoundtripDateTime("2001-01-01T00:00:00Z"); tryRoundtripDateTime("2001-02-28T18:54:31Z"); tryRoundtripDateTime("2001-12-31T23:59:59Z"); tryRoundtripDateTime("2002-01-01T00:00:00Z"); tryRoundtripDateTime("2999-12-31T23:59:59Z"); tryRoundtripDateTime("3000-01-01T00:00:00Z"); tryRoundtripDateTime("3000-12-31T23:59:59Z"); tryRoundtripDateTime("9999-12-31T23:59:59Z"); // the following values can only be tested roundtrip (because Java // conversion insists on a discontinuity in Gregorian calendar) tryRoundtripDateTime("12999-12-31T23:59:59Z"); tryRoundtripDateTime("1300-01-01T00:00:00Z"); tryRoundtripDateTime("0300-12-31T23:59:59Z"); tryRoundtripDateTime("0001-01-01T00:00:00Z"); tryRoundtripDateTime("-0001-12-31T23:59:59Z"); tryRoundtripDateTime("-0004-02-29T23:59:59Z"); tryRoundtripDateTime("-0004-03-01T23:59:59Z"); tryRoundtripDateTime("-0199-12-31T23:59:59Z"); tryRoundtripDateTime("-0198-01-01T00:00:00Z"); } private boolean equalsBytes(byte[] a, byte[] b) { if (a == null) { return b == null; } else if (b == null) { return false; } else if (a.length != b.length) { return false; } else { for (int i = 0; i < a.length; i++) { if (a[i] != b[i]) { return false; } } return true; } } public void testParseBase64() throws JiBXException { assertTrue(equalsBytes(Utility.parseBase64(""), new byte[0])); assertTrue(equalsBytes(Utility.parseBase64("Cg=="), "\n".getBytes())); assertTrue(equalsBytes(Utility.parseBase64("d2hhdA=="), "what".getBytes())); assertTrue(equalsBytes(Utility.parseBase64 ("d2hhdCB3aWxsIHByaW50IG91dA=="), "what will print out".getBytes())); assertTrue(equalsBytes(Utility.parseBase64 ("d2hhdCAgd2lsbCAgIHByaW50ICAgICBvdXQgICAgICA="), "what will print out ".getBytes())); assertTrue(equalsBytes(Utility.parseBase64 ("d2hhdCAgd2lsbCAgIHByaW50ICAgICBvdXQ="), "what will print out".getBytes())); } public void testSerializeBase64() { assertEquals(Utility.serializeBase64(new byte[0]), ""); assertEquals(Utility.serializeBase64("\n".getBytes()), "Cg=="); assertEquals(Utility.serializeBase64("what".getBytes()), "d2hhdA=="); assertEquals(Utility.serializeBase64("what will print out".getBytes()), "d2hhdCB3aWxsIHByaW50IG91dA=="); assertEquals(Utility.serializeBase64 ("what will print out ".getBytes()), "d2hhdCAgd2lsbCAgIHByaW50ICAgICBvdXQgICAgICA="); assertEquals(Utility.serializeBase64 ("what will print out".getBytes()), "d2hhdCAgd2lsbCAgIHByaW50ICAgICBvdXQ="); } public void testIsEqual() { assertTrue(Utility.isEqual(null, null)); assertFalse(Utility.isEqual(null, "text")); assertFalse(Utility.isEqual("text", null)); assertTrue(Utility.isEqual("text", "text")); } public static void main(String[] args) { String[] names = { UtilityTest.class.getName() }; junit.textui.TestRunner.main(names); } } libjibx-java-1.1.6a/build/test/org/jibx/schema/0000755000175000017500000000000011023035622021135 5ustar moellermoellerlibjibx-java-1.1.6a/build/test/org/jibx/schema/codegen/0000755000175000017500000000000011023035622022541 5ustar moellermoellerlibjibx-java-1.1.6a/build/test/org/jibx/schema/codegen/CodeGenerationTest.java0000644000175000017500000002246510767277472027174 0ustar moellermoeller package org.jibx.schema.codegen; import java.io.IOException; import java.util.ArrayList; import org.jibx.runtime.JiBXException; import org.jibx.schema.SchemaTestBase; import org.jibx.schema.codegen.custom.SchemasetCustom; import org.jibx.schema.elements.SchemaElement; /** * Test code generation from schemas. */ public class CodeGenerationTest extends SchemaTestBase { static final StringObjectPair[] DATA1 = new StringObjectPair[] { new StringObjectPair("something.Element", new StringPair[] { new StringPair("DATE_FORM", "int"), new StringPair("DATE_TIME_FORM", "int"), new StringPair("RATING_FORM", "int"), new StringPair("date", "Date"), new StringPair("dateTime", "java.util.Date"), new StringPair("male", "boolean"), new StringPair("mixedSelectSelect", "int"), new StringPair("name", "String"), new StringPair("rated", "int"), new StringPair("rated1", "Integer"), new StringPair("rating", "int")}) }; static final StringObjectPair[] DATA2 = new StringObjectPair[] { }; static final StringObjectPair[] DATA3_A = new StringObjectPair[] { new StringObjectPair("something.Element", new StringPair[] { new StringPair("DATE_FORM", "int"), new StringPair("DATE_TIME_FORM", "int"), new StringPair("_INT_FORM", "int"), new StringPair("_int", "int"), new StringPair("date", "Date"), new StringPair("dateTime", "java.util.Date"), new StringPair("enum1", "Enum1"), new StringPair("enum2", "Enum2"), new StringPair("enum3", "Enum3"), new StringPair("male", "boolean"), new StringPair("mixedSelectSelect", "int"), new StringPair("name", "String"), new StringPair("rated", "int"), new StringPair("rated1", "Integer")}), new StringObjectPair("something.Element.Enum1", new StringPair[] { new StringPair("A1", "Enum1"), new StringPair("B2", "Enum1"), new StringPair("instances", "Enum1[]"), new StringPair("value", "String"), new StringPair("values", "String[]")}), new StringObjectPair("something.Element.Enum2", new StringPair[] { new StringPair("A1", "Enum2"), new StringPair("B2", "Enum2"), new StringPair("instances", "Enum2[]"), new StringPair("value", "String"), new StringPair("values", "String[]")}), new StringObjectPair("something.Element.Enum3", new StringPair[] { new StringPair("A1", "Enum3"), new StringPair("B2", "Enum3"), new StringPair("instances", "Enum3[]"), new StringPair("value", "String"), new StringPair("values", "String[]")}), }; static final StringObjectPair[] DATA3_B = new StringObjectPair[] { new StringObjectPair("anything.Enum1", new StringPair[] { new StringPair("A1", "Enum1"), new StringPair("B2", "Enum1"), new StringPair("instances", "Enum1[]"), new StringPair("value", "String"), new StringPair("values", "String[]")}), new StringObjectPair("anything.Enum2", new StringPair[] { new StringPair("A1", "Enum2"), new StringPair("B2", "Enum2"), new StringPair("instances", "Enum2[]"), new StringPair("value", "String"), new StringPair("values", "String[]")}), new StringObjectPair("anything.Enum3", new StringPair[] { new StringPair("X1", "Enum3"), new StringPair("Y2", "Enum3"), new StringPair("Z3", "Enum3"), new StringPair("instances", "Enum3[]"), new StringPair("value", "String"), new StringPair("values", "String[]")}), new StringObjectPair("something.Element", new StringPair[] { new StringPair("DATE_FORM", "int"), new StringPair("DATE_TIME_FORM", "int"), new StringPair("_INT_FORM", "int"), new StringPair("_int", "int"), new StringPair("date", "Date"), new StringPair("dateTime", "java.util.Date"), new StringPair("enum1", "Enum1"), new StringPair("enum1a", "Enum1"), new StringPair("enum2", "Enum2"), new StringPair("enum2a", "Enum2"), new StringPair("enum3", "Enum3"), new StringPair("enum3a", "Enum3"), new StringPair("male", "boolean"), new StringPair("mixedUnionSelect", "int"), new StringPair("name", "String"), new StringPair("rated", "int"), new StringPair("rated1", "Integer")}), }; static final StringObjectPair[] DATA4 = new StringObjectPair[] { }; static final StringObjectPair[] DATA5 = new StringObjectPair[] { }; private static void dumpImage(StringObjectPair[] classdefs) { for (int i = 0; i < classdefs.length; i++) { StringObjectPair pair = classdefs[i]; StringPair[] fielddefs = (StringPair[])pair.getValue(); System.out.print(" new StringObjectPair(\""); System.out.print(pair.getKey()); System.out.print("\", new StringPair[] { "); for (int j = 0; j < fielddefs.length; j++) { StringPair fielddef = fielddefs[j]; System.out.println(j > 0 ? "," : ""); System.out.print(" new StringPair(\""); System.out.print(fielddef.getKey()); System.out.print("\", \""); System.out.print(fielddef.getValue()); System.out.print("\")"); } System.out.println("}),"); } } private void testDump(SchemasetCustom custom, SchemaElement[] schemas) throws JiBXException, IOException { CodeGenerator generator = new CodeGenerator(custom, m_validationContext, schemas); assertTrue("Schema customization failure", generator.customizeSchemas()); generator.applyExtensions(); generator.pruneDefinitions(); generator.validateSchemas(true); generator.generate(); ArrayList packages = generator.getPackageDirectory().getPackages(); System.out.println("Data model dump:"); for (int i = 0; i < packages.size(); i++) { PackageHolder packhold = (PackageHolder)packages.get(i); StringObjectPair[] classdefs = packhold.getClassFields(); dumpImage(classdefs); } } private void testGeneration(SchemasetCustom custom, SchemaElement[] schemas, StringObjectPair[] image) throws JiBXException, IOException { CodeGenerator generator = new CodeGenerator(custom, m_validationContext, schemas); assertTrue("Schema customization failure", generator.customizeSchemas()); generator.applyExtensions(); generator.pruneDefinitions(); generator.validateSchemas(true); generator.generate(); StringObjectPair[] classpairs = DataModelUtils.getImage(generator.getPackageDirectory()); String diff = DataModelUtils.imageDiff(image, classpairs); if (diff != null) { fail(diff); } } // public void testGeneration1() throws Exception { // SchemaElement[] schemas = new SchemaElement[] { loadSchema(TypeReplacementTest.RESOLVER1) }; // testGeneration(new SchemasetCustom(null), schemas, DATA1); // } // // public void testGeneration3() throws Exception { // SchemaElement[] schemas = new SchemaElement[] { loadSchema(TypeReplacementTest.RESOLVER3) }; // SchemasetCustom custom = loadCustomization(TypeReplacementTest.CUSTOMIZATION3_B); // testGeneration(custom, schemas, DATA3_B); // } public void testGeneration3b() throws Exception { SchemaElement[] schemas = new SchemaElement[] { loadSchema(TypeReplacementTest.RESOLVER3) }; SchemasetCustom custom = loadCustomization(TypeReplacementTest.CUSTOMIZATION3_B); testDump(custom, schemas); testGeneration(custom, schemas, DATA3_B); // testDump(custom, schemas); } /* public void testTypeReplacement() throws Exception { SchemaElement[] schemas = new SchemaElement[] { loadSchema(TypeReplacementTest.RESOLVER1) }; SchemasetCustom custom = loadCustomization(TypeReplacementTest.CUSTOMIZATION2); testGeneration(custom, schemas); } public void testTypeRemoval() throws Exception { SchemaElement[] schemas = new SchemaElement[] { loadSchema(TypeReplacementTest.RESOLVER1) }; SchemasetCustom custom = loadCustomization(TypeReplacementTest.CUSTOMIZATION3); testGeneration(custom, schemas); } public void testTypeReplacement2() throws Exception { SchemaElement[] schemas = new SchemaElement[] { loadSchema(TypeReplacementTest.RESOLVER2) }; SchemasetCustom custom = loadCustomization(TypeReplacementTest.CUSTOMIZATION4); testGeneration(custom, schemas); } public void testCombinedRemovalReplacement() throws Exception { SchemaElement[] schemas = new SchemaElement[] { loadSchema(TypeReplacementTest.RESOLVER2) }; SchemasetCustom custom = loadCustomization(TypeReplacementTest.CUSTOMIZATION5); testGeneration(custom, schemas); } */ }libjibx-java-1.1.6a/build/test/org/jibx/schema/codegen/CodegenSuite.java0000644000175000017500000000063510756366774026021 0ustar moellermoellerpackage org.jibx.schema.codegen; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class CodegenSuite extends TestCase { public static Test suite() { TestSuite suite = new TestSuite(UsageVisitorTest.class); suite.addTestSuite(TypeReplacementTest.class); suite.addTestSuite(CodeGenerationTest.class); return suite; } } libjibx-java-1.1.6a/build/test/org/jibx/schema/codegen/TypeReplacementTest.java0000644000175000017500000005533510756366774027413 0ustar moellermoeller package org.jibx.schema.codegen; import java.util.HashMap; import java.util.Map; import org.jibx.schema.SchemaTestBase; import org.jibx.schema.codegen.custom.SchemasetCustom; import org.jibx.schema.elements.SchemaElement; /** * Test schema simplification and normalization. */ public class TypeReplacementTest extends SchemaTestBase { // test data, also used by CodeGenerationTest // any changes here also need to be matched by changes there static final String MAIN_SCHEMA1 = "\n" + " \n" + " \n" + ""; static final String INCLUDED_SCHEMA1 = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; static final String RESULT_SCHEMA1_A = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; static final String CUSTOMIZATION1_B = "\n" + " \n" + " "; static final String RESULT_SCHEMA1_B = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; static final String CUSTOMIZATION1_C = "\n" + " \n" + " "; static final String RESULT_SCHEMA1_C = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; static final String MAIN_SCHEMA2 = "\n" + " \n" + " \n" + ""; static final String INCLUDED_SCHEMA2 = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " " + ""; static final String CUSTOMIZATION2_A = "\n" + " \n" + " "; static final String RESULT_SCHEMA2_A = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " " + ""; static final String CUSTOMIZATION2_B = "\n" + " \n" + " "; static final String RESULT_SCHEMA2_B = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " " + ""; static final String MAIN_SCHEMA3 = "\n" + " \n" + " \n" + ""; static final String INCLUDED_SCHEMA3 = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " " + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; static final String CUSTOMIZATION3_A = "\n" + " \n" + " "; static final String RESULT_SCHEMA3_A = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " " + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; static final String CUSTOMIZATION3_B = "\n" + " \n" + " \n" + " \n" + " \n" + ""; private static final Map MAP = new HashMap(); static final TestResolver RESOLVER1 = new TestResolver(MAIN_SCHEMA1, "MAIN_SCHEMA1", MAP); static final TestResolver RESOLVER2 = new TestResolver(MAIN_SCHEMA2, "MAIN_SCHEMA2", MAP); static final TestResolver RESOLVER3 = new TestResolver(MAIN_SCHEMA3, "MAIN_SCHEMA3", MAP); static { MAP.put(RESOLVER1.getName(), RESOLVER1); MAP.put("INCLUDED_SCHEMA1", new TestResolver(INCLUDED_SCHEMA1, "INCLUDED_SCHEMA1", MAP)); MAP.put(RESOLVER2.getName(), RESOLVER2); MAP.put("INCLUDED_SCHEMA2", new TestResolver(INCLUDED_SCHEMA2, "INCLUDED_SCHEMA2", MAP)); MAP.put(RESOLVER3.getName(), RESOLVER3); MAP.put("INCLUDED_SCHEMA3", new TestResolver(INCLUDED_SCHEMA3, "INCLUDED_SCHEMA3", MAP)); } /** * Test the schema simplification handling. This first loads and validates the supplied main schema, which * automatically loads and validates any included/imported schemas. It then applies any customizations and finally * simplifies the (possibly modified) included/imported schemas and checks that the result matches expectations. * * @param resolver root schema resolver * @param custom customizations document text * @param inclname included schema name * @param rslttext simplified result schema expected * @throws Exception */ private void testSimplification(TestResolver resolver, String custom, String inclname, String rslttext) throws Exception { SchemaElement[] schemas = new SchemaElement[] { loadSchema(resolver) }; SchemasetCustom custroot; if (custom == null) { custroot = new SchemasetCustom(null); } else { custroot = loadCustomization(custom); } CodeGenerator generator = new CodeGenerator(custroot, m_validationContext, schemas); assertTrue("Schema customization failure", generator.customizeSchemas()); generator.applyExtensions(); generator.pruneDefinitions(); verifySchema(resolver.getText(), writeSchema(schemas[0])); SchemaElement schema = m_validationContext.getSchema(inclname); verifySchema(rslttext, writeSchema(schema)); } public void testSchemaSimplification() throws Exception { testSimplification(RESOLVER1, null, "INCLUDED_SCHEMA1", RESULT_SCHEMA1_A); } public void testTypeReplacement() throws Exception { testSimplification(RESOLVER1, CUSTOMIZATION1_B, "INCLUDED_SCHEMA1", RESULT_SCHEMA1_B); } public void testTypeRemoval() throws Exception { testSimplification(RESOLVER1, CUSTOMIZATION1_C, "INCLUDED_SCHEMA1", RESULT_SCHEMA1_C); } public void testTypeReplacement2() throws Exception { testSimplification(RESOLVER2, CUSTOMIZATION2_A, "INCLUDED_SCHEMA2", RESULT_SCHEMA2_A); } public void testCombinedRemovalReplacement() throws Exception { testSimplification(RESOLVER2, CUSTOMIZATION2_B, "INCLUDED_SCHEMA2", RESULT_SCHEMA2_B); } public void testSimplificationWithEnums() throws Exception { testSimplification(RESOLVER3, CUSTOMIZATION3_A, "INCLUDED_SCHEMA3", RESULT_SCHEMA3_A); } }libjibx-java-1.1.6a/build/test/org/jibx/schema/codegen/UsageVisitorTest.java0000644000175000017500000000626410673717224026717 0ustar moellermoeller package org.jibx.schema.codegen; import org.jibx.runtime.QName; import org.jibx.schema.SchemaTestBase; import org.jibx.schema.codegen.classes.UsageFinder; import org.jibx.schema.elements.SchemaElement; /** * Test usage visitor operation for counting references. */ public class UsageVisitorTest extends SchemaTestBase { public static final String REFERENCE_SCHEMA = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; private void checkAttributeUsage(String name, ReferenceCountMap map, int count) { Object key = m_nameRegister.findAttribute(new QName("urn:anything", name)); assertEquals("Usage count error on attribute '" + name + '\'', count, map.getCount(key)); } private void checkElementUsage(String name, ReferenceCountMap map, int count) { Object key = m_nameRegister.findElement(new QName("urn:anything", name)); assertEquals("Usage count error on element '" + name + '\'', count, map.getCount(key)); } private void checkTypeUsage(String name, ReferenceCountMap map, int count) { Object key = m_nameRegister.findType(new QName("urn:anything", name)); assertEquals("Usage count error on type '" + name + '\'', count, map.getCount(key)); } public void testComplexReferenced() throws Exception { SchemaElement root = runNoErrors(REFERENCE_SCHEMA); if (!hasProblem(m_validationContext)) { UsageFinder usage = new UsageFinder(); usage.countSchemaTree(root); ReferenceCountMap map = usage.getUsageMap(); checkTypeUsage("simple1", map, 1); checkElementUsage("simple1", map, 1); checkTypeUsage("simple2", map, 0); checkTypeUsage("simple3", map, 0); checkTypeUsage("rating", map, 3); checkTypeUsage("mixedUnion", map, 1); } } }libjibx-java-1.1.6a/build/test/org/jibx/schema/elements/0000755000175000017500000000000011023035622022751 5ustar moellermoellerlibjibx-java-1.1.6a/build/test/org/jibx/schema/elements/Annotations.java0000644000175000017500000000542010602647122026120 0ustar moellermoeller package org.jibx.schema.elements; import org.jibx.schema.SchemaTestBase; /** * Test handling of simple schemas with annotations. */ public class Annotations extends SchemaTestBase { public static final String EMPTY_ANNOTATION = "\n" + " \n" + ""; public static final String DOCUMENTATION_ANNOTATION = "\n" + " \n" + " \n" + " this is all good" + " \n" + " \n" + ""; public static final String APPINFO_ANNOTATION = "\n" + " \n" + " \n" + " special good stuff\n" + " \n" + " \n" + ""; public static final String MULTIPLE_ANNOTATION = "\n" + " \n" + " \n" + " special good stuff\n" + " \n" + " \n" + " this is all good" + " \n" + " \n" + " this is all good" + " \n" + " \n" + " \n" + " more good stuff" + " \n" + " \n" + " \n" + " last good stuff\n" + " \n" + " \n" + ""; public void testEmptyAnnotation() throws Exception { runNoErrors(EMPTY_ANNOTATION); } public void testDocumentationAnnotation() throws Exception { runNoErrors(DOCUMENTATION_ANNOTATION); } public void testAppInfoAnnotation() throws Exception { runNoErrors(APPINFO_ANNOTATION); } public void testMultipleAnnotation() throws Exception { runNoErrors(MULTIPLE_ANNOTATION); } }libjibx-java-1.1.6a/build/test/org/jibx/schema/elements/ElementsSuite.java0000644000175000017500000000105010602647122026404 0ustar moellermoellerpackage org.jibx.schema.elements; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class ElementsSuite extends TestCase { public static Test suite() { TestSuite suite = new TestSuite(EmptySchema.class); suite.addTestSuite(Annotations.class); suite.addTestSuite(SimpleGlobals.class); suite.addTestSuite(SimpleComplexTypes.class); suite.addTestSuite(SimpleSimpleTypes.class); suite.addTestSuite(SimpleGroups.class); return suite; } } libjibx-java-1.1.6a/build/test/org/jibx/schema/elements/EmptySchema.java0000644000175000017500000000752010602647122026045 0ustar moellermoeller package org.jibx.schema.elements; import org.jibx.schema.SchemaTestBase; /** * Test handling of simple schemas. */ public class EmptySchema extends SchemaTestBase { public static final String EMPTY_SCHEMA = ""; public static final String EMPTY_SCHEMA_ATTRIBUTES = ""; public static final String EMPTY_SCHEMA_PREFIX = ""; public static final String EMPTY_SCHEMA_EXTRA_NAMESPACES = ""; public static final String EMPTY_SCHEMA_EXTRA_ATTRIBUTE = ""; public static final String EMPTY_SCHEMA_UNKNOWN_ATTRIBUTE = ""; public static final String EMPTY_SCHEMA_ALL_ATTRIBUTES1 = ""; public static final String EMPTY_SCHEMA_ALL_ATTRIBUTES2 = ""; public static final String EMPTY_SCHEMA_UNKNOWN_VALUES = ""; public void testEmpty() throws Exception { runNoErrors(EMPTY_SCHEMA); } public void testEmptyAttributes() throws Exception { runNoErrors(EMPTY_SCHEMA_ATTRIBUTES); } public void testEmptyPrefix() throws Exception { runNoErrors(EMPTY_SCHEMA_PREFIX); } public void testEmptyExtraNamespaces() throws Exception { runNoErrors(EMPTY_SCHEMA_EXTRA_NAMESPACES); } public void testEmptyExtraAttribute() throws Exception { runNoErrors(EMPTY_SCHEMA_EXTRA_ATTRIBUTE); } public void testEmptyUnknownAttribute() throws Exception { runOneError(EMPTY_SCHEMA_UNKNOWN_ATTRIBUTE, "Unknown attribute not reported"); } public void testEmptyAllAttributes1() throws Exception { runNoErrors(EMPTY_SCHEMA_ALL_ATTRIBUTES1); } public void testEmptyAllAttributes2() throws Exception { runNoErrors(EMPTY_SCHEMA_ALL_ATTRIBUTES2); } public void testEmptyUnknownValues() throws Exception { runErrors(EMPTY_SCHEMA_UNKNOWN_VALUES, 4, "Unknown attribute value not reported"); } }libjibx-java-1.1.6a/build/test/org/jibx/schema/elements/SchemaPaths.java0000644000175000017500000002220610752423164026030 0ustar moellermoeller package org.jibx.schema.elements; import org.jibx.schema.SchemaTestBase; /** * Test handling of schemas paths. */ public class SchemaPaths extends SchemaTestBase { public static final String TEST_SCHEMA = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; private void verifyNoProblems() { assertFalse(getProblemText(m_validationContext), hasProblem(m_validationContext)); } public void testDirectSpecification() throws Exception { SchemaElement schema = prepareSchema(TEST_SCHEMA); SchemaPath path = SchemaPath.buildPath(null, "complexType", "simple", null, this, m_validationContext); verifyNoProblems(); OpenAttrBase match = path.matchUnique(schema); verifyNoProblems(); assertTrue("Path not matched", match instanceof ComplexTypeElement); path = SchemaPath.buildPath(null, "complexType", null, "1", this, m_validationContext); verifyNoProblems(); match = path.matchUnique(schema); verifyNoProblems(); assertTrue("Path not matched", match instanceof ComplexTypeElement); path = SchemaPath.buildPath(null, "complexType", "simple", "1", this, m_validationContext); verifyNoProblems(); match = path.matchUnique(schema); verifyNoProblems(); assertTrue("Path not matched", match instanceof ComplexTypeElement); } public void testDirectPath() throws Exception { SchemaElement schema = prepareSchema(TEST_SCHEMA); SchemaPath path = SchemaPath.buildPath("complexType[@name=simple]", "complexType", null, null, this, m_validationContext); verifyNoProblems(); OpenAttrBase match = path.matchUnique(schema); verifyNoProblems(); assertTrue("Path not matched", match instanceof ComplexTypeElement); path = SchemaPath.buildPath("complexType[1]", "complexType", null, null, this, m_validationContext); verifyNoProblems(); match = path.matchUnique(schema); verifyNoProblems(); assertTrue("Path not matched", match instanceof ComplexTypeElement); path = SchemaPath.buildPath("complexType[@name=simple][1]", "complexType", null, null, this, m_validationContext); verifyNoProblems(); match = path.matchUnique(schema); verifyNoProblems(); assertTrue("Path not matched", match instanceof ComplexTypeElement); path = SchemaPath.buildPath("[@name=simple][1]", "complexType", null, null, this, m_validationContext); verifyNoProblems(); match = path.matchUnique(schema); verifyNoProblems(); assertTrue("Path not matched", match instanceof ComplexTypeElement); } public void testPathAndSpecification() throws Exception { SchemaElement schema = prepareSchema(TEST_SCHEMA); SchemaPath path = SchemaPath.buildPath("complexType[@name=complex]/", "attribute", "male", null, this, m_validationContext); verifyNoProblems(); OpenAttrBase match = path.matchUnique(schema); verifyNoProblems(); assertTrue("Path not matched", match instanceof AttributeElement && ((AttributeElement)match).getName().equals("male")); path = SchemaPath.buildPath("complexType[1]/", "attribute", null, "2", this, m_validationContext); verifyNoProblems(); match = path.matchUnique(schema); verifyNoProblems(); assertTrue("Path not matched", match instanceof AttributeElement && ((AttributeElement)match).getName().equals("registered")); path = SchemaPath.buildPath("complexType[2]/", "sequence", null, null, this, m_validationContext); verifyNoProblems(); match = path.matchUnique(schema); verifyNoProblems(); assertTrue("Path not matched", match instanceof SequenceElement); } public void testWildcardPath() throws Exception { SchemaElement schema = prepareSchema(TEST_SCHEMA); SchemaPath path = SchemaPath.buildPath("complexType[@name=complex]/*/element[@name=age]", "element", null, null, this, m_validationContext); verifyNoProblems(); OpenAttrBase match = path.matchUnique(schema); verifyNoProblems(); assertTrue("Path not matched", match instanceof ElementElement && ((ElementElement)match).getName().equals("age")); path = SchemaPath.buildPath("complexType[1]/*/element[3]", "element", null, null, this, m_validationContext); verifyNoProblems(); match = path.matchUnique(schema); verifyNoProblems(); assertTrue("Path not matched", match instanceof ElementElement && ((ElementElement)match).getName() == null); path = SchemaPath.buildPath("complexType[1]/*/[3]", "element", null, null, this, m_validationContext); verifyNoProblems(); match = path.matchUnique(schema); verifyNoProblems(); assertTrue("Path not matched", match instanceof ElementElement && ((ElementElement)match).getName() == null); path = SchemaPath.buildPath("complexType[1]/**/[3]", "element", null, null, this, m_validationContext); verifyNoProblems(); match = path.matchUnique(schema); verifyNoProblems(); assertTrue("Path not matched", match instanceof ElementElement && ((ElementElement)match).getName() == null); path = SchemaPath.buildPath("complexType[2]/**/[3]", "enumeration", null, null, this, m_validationContext); verifyNoProblems(); match = path.matchUnique(schema); verifyNoProblems(); assertTrue("Path not matched", match instanceof FacetElement.Enumeration && ((FacetElement.Enumeration)match).getValue().equals("good")); } public void testErrors() throws Exception { SchemaElement schema = prepareSchema(TEST_SCHEMA); SchemaPath path = SchemaPath.buildPath("complexType[1][1]/", "element", null, null, this, m_validationContext); assertTrue("Multiple position predicates on path step", hasProblem(m_validationContext)); m_validationContext.getProblems().clear(); path = SchemaPath.buildPath("complexType[1][@name=xxx]/", "element", null, null, this, m_validationContext); assertTrue("Predicates in wrong order on path step", hasProblem(m_validationContext)); m_validationContext.getProblems().clear(); path = SchemaPath.buildPath("complexType[1]/*/[3]", "element", null, "2", this, m_validationContext); assertTrue("Position predicate mismatch with specified value", hasProblem(m_validationContext)); m_validationContext.getProblems().clear(); path = SchemaPath.buildPath("complexType[1]/*/[@name=xxx]", "element", "yyy", null, this, m_validationContext); assertTrue("Name predicate mismatch with specified value", hasProblem(m_validationContext)); m_validationContext.getProblems().clear(); path = SchemaPath.buildPath("complexType[1]/**/", "element", null, null, this, m_validationContext); verifyNoProblems(); OpenAttrBase match = path.matchUnique(schema); assertTrue("Multiple matches for path expression", hasProblem(m_validationContext)); m_validationContext.getProblems().clear(); assertNull("Multiple matches for path expression", match); path = SchemaPath.buildPath("complexType[2]/**/[7]", "enumeration", null, null, this, m_validationContext); verifyNoProblems(); match = path.matchUnique(schema); assertTrue("No match for path expression", hasProblem(m_validationContext)); m_validationContext.getProblems().clear(); assertNull("No match for path expression", match); } }libjibx-java-1.1.6a/build/test/org/jibx/schema/elements/SimpleComplexTypes.java0000644000175000017500000000725710602647122027443 0ustar moellermoeller package org.jibx.schema.elements; import org.jibx.schema.SchemaTestBase; /** * Test handling of schemas with simple complex type definitions. */ public class SimpleComplexTypes extends SchemaTestBase { public static final String COMPLEX_EMPTY_SCHEMA = "\n" + " \n" + ""; public static final String COMPLEX_SEQUENCE_SCHEMA = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; public static final String COMPLEX_SEQUENCE_ATTRIBUTES_SCHEMA = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; public static final String COMPLEX_EMBEDDED_SCHEMA = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; public static final String COMPLEX_REFERENCED_SCHEMA = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; public void testComplexEmpty() throws Exception { runNoErrors(COMPLEX_EMPTY_SCHEMA); } public void testComplexSequence() throws Exception { runNoErrors(COMPLEX_SEQUENCE_SCHEMA); } public void testComplexSequenceAttributes() throws Exception { runNoErrors(COMPLEX_SEQUENCE_ATTRIBUTES_SCHEMA); } public void testComplexEmbedded() throws Exception { runNoErrors(COMPLEX_EMBEDDED_SCHEMA); } public void testComplexReferenced() throws Exception { runNoErrors(COMPLEX_REFERENCED_SCHEMA); } }libjibx-java-1.1.6a/build/test/org/jibx/schema/elements/SimpleGlobals.java0000644000175000017500000001115210602647122026357 0ustar moellermoeller package org.jibx.schema.elements; import org.jibx.schema.SchemaTestBase; /** * Test handling of simple schemas with only global elements or attributes and * no nested structure. */ public class SimpleGlobals extends SchemaTestBase { public static final String SIMPLE_ELEMENT_BLANK_SCHEMA = "\n" + " \n" + ""; public static final String SIMPLE_ATTRIBUTE_BLANK_SCHEMA = "\n" + " \n" + ""; public static final String SIMPLE_ELEMENT_SCHEMA = "\n" + " \n" + ""; public static final String SIMPLE_ATTRIBUTE_SCHEMA = "\n" + " \n" + ""; public static final String COMPLEX_ELEMENT_SCHEMA = "\n" + " \n" + " \n" + " this should mean something\n" + " \n" + " \n" + ""; public static final String COMPLEX_ATTRIBUTE_SCHEMA = "\n" + " \n" + " \n" + " this should mean something\n" + " \n" + " \n" + " \n" + ""; public static final String COMPLEX_ELEMENT_ERROR_SCHEMA = "\n" + " \n" + ""; public static final String COMPLEX_ATTRIBUTE_ERROR_SCHEMA = "\n" + " \n" + ""; public static final String ELEMENT_TYPE_REFERENCE_ERROR_SCHEMA = "\n" + " \n" + ""; public void testSimpleElementBlank() throws Exception { runNoErrors(SIMPLE_ELEMENT_BLANK_SCHEMA); } public void testSimpleAttributeBlank() throws Exception { runNoErrors(SIMPLE_ATTRIBUTE_BLANK_SCHEMA); } public void testSimpleElement() throws Exception { runNoErrors(SIMPLE_ELEMENT_SCHEMA); } public void testSimpleAttribute() throws Exception { runNoErrors(SIMPLE_ATTRIBUTE_SCHEMA); } public void testComplexElement() throws Exception { runNoErrors(COMPLEX_ELEMENT_SCHEMA); } public void testComplexAttribute() throws Exception { runNoErrors(COMPLEX_ATTRIBUTE_SCHEMA); } public void testComplexElementError() throws Exception { runOneError(COMPLEX_ELEMENT_ERROR_SCHEMA, "Invalid attributes on global not reported"); } public void testComplexAttributeError() throws Exception { runOneError(COMPLEX_ATTRIBUTE_ERROR_SCHEMA, "Invalid attributes on global not reported"); } public void testElementTypeReferenceError() throws Exception { runOneError(ELEMENT_TYPE_REFERENCE_ERROR_SCHEMA, "Undefined type reference on not reported"); } }libjibx-java-1.1.6a/build/test/org/jibx/schema/elements/SimpleGroups.java0000644000175000017500000001216610602647122026261 0ustar moellermoeller package org.jibx.schema.elements; import org.jibx.schema.SchemaTestBase; /** * Test handling of schemas with simple group and attributeGroup components. */ public class SimpleGroups extends SchemaTestBase { public static final String GROUP_EMPTY_SCHEMA = "\n" + " \n" + " \n" + " \n" + ""; public static final String ATTRIBUTEGROUP_EMPTY_SCHEMA = "\n" + " \n" + ""; public static final String GROUP_SIMPLE_SCHEMA1 = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; public static final String GROUP_SIMPLE_SCHEMA2 = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; public static final String GROUP_SIMPLE_SCHEMA3 = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; public static final String ATTRIBUTEGROUP_SIMPLE_SCHEMA = "\n" + " \n" + " \n" + " \n" + " \n" + ""; public static final String GROUP_REF_SCHEMA = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; public static final String ATTRIBUTEGROUP_REF_SCHEMA = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; public void testGroupEmpty() throws Exception { runNoErrors(GROUP_EMPTY_SCHEMA); } public void testAttributeGroupEmpty() throws Exception { runNoErrors(ATTRIBUTEGROUP_EMPTY_SCHEMA); } public void testGroupSimpleSchema1() throws Exception { runNoErrors(GROUP_SIMPLE_SCHEMA1); } public void testGroupSimpleSchema2() throws Exception { runNoErrors(GROUP_SIMPLE_SCHEMA2); } public void testGroupSimpleSchema3() throws Exception { runNoErrors(GROUP_SIMPLE_SCHEMA3); } public void testAttributeGroupSimple() throws Exception { runNoErrors(ATTRIBUTEGROUP_SIMPLE_SCHEMA); } public void testGroupRef() throws Exception { runNoErrors(GROUP_REF_SCHEMA); } public void testAttributeGroupRef() throws Exception { runNoErrors(ATTRIBUTEGROUP_REF_SCHEMA); } }libjibx-java-1.1.6a/build/test/org/jibx/schema/elements/SimpleSimpleTypes.java0000644000175000017500000003262410602647122027261 0ustar moellermoeller package org.jibx.schema.elements; import org.jibx.schema.SchemaTestBase; /** * Test handling of schemas with simple simple type definitions. */ public class SimpleSimpleTypes extends SchemaTestBase { public static final String PREDEFINED_SIMPLE_TYPES = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; public static final String SIMPLE_RESTRICTION_SCHEMA = "\n" + " \n" + " \n" + " \n" + ""; public static final String COMPLEX_RESTRICTION_SCHEMA1 = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; public static final String COMPLEX_RESTRICTION_SCHEMA2 = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; public static final String COMPLEX_RESTRICTION_SCHEMA3 = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; public static final String RESTRICTION_FACET_ERROR_SCHEMA = // invalid attributes on facets "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; public static final String RESTRICTION_REFERENCE_SCHEMA = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; public static final String SIMPLE_LIST_SCHEMA = "\n" + " \n" + " \n" + " \n" + ""; public static final String RESTRICTION_LIST_SCHEMA = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; public static final String REFERENCE_LIST_SCHEMA = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; public static final String LIST_ERROR_SCHEMA = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; public static final String UNION_REFERENCE_SCHEMA = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; public static final String UNION_INLINE_SCHEMA = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; public static final String UNION_MIXED_SCHEMA = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; public void testPredefinedSimpleTypes() throws Exception { runNoErrors(PREDEFINED_SIMPLE_TYPES); } public void testSimpleRestriction() throws Exception { runNoErrors(SIMPLE_RESTRICTION_SCHEMA); } public void testComplexRestrictionSchema1() throws Exception { runNoErrors(COMPLEX_RESTRICTION_SCHEMA1); } public void testComplexRestrictionSchema2() throws Exception { runNoErrors(COMPLEX_RESTRICTION_SCHEMA2); } public void testComplexRestrictionSchema3() throws Exception { runNoErrors(COMPLEX_RESTRICTION_SCHEMA3); } public void testRestrictionFacetError() throws Exception { runOneError(RESTRICTION_FACET_ERROR_SCHEMA, "facets with illegal attribute not reported"); } public void testRestrictionReference() throws Exception { runNoErrors(RESTRICTION_REFERENCE_SCHEMA); } public void testSimpleList() throws Exception { runNoErrors(SIMPLE_LIST_SCHEMA); } public void testRestrictionList() throws Exception { runNoErrors(RESTRICTION_LIST_SCHEMA); } public void testReferenceList() throws Exception { runNoErrors(REFERENCE_LIST_SCHEMA); } public void testListError() throws Exception { runOneError(LIST_ERROR_SCHEMA, " with embedded type and itemType attribute not reported"); } public void testUnionReference() throws Exception { runNoErrors(UNION_REFERENCE_SCHEMA); } public void testUnionInline() throws Exception { runNoErrors(UNION_INLINE_SCHEMA); } public void testUnionMixed() throws Exception { runNoErrors(UNION_MIXED_SCHEMA); } }libjibx-java-1.1.6a/build/test/org/jibx/schema/SchemaSuite.java0000644000175000017500000000104510752423130024215 0ustar moellermoellerpackage org.jibx.schema; import org.jibx.schema.codegen.CodegenSuite; import org.jibx.schema.elements.ElementsSuite; import org.jibx.schema.elements.SchemaPaths; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class SchemaSuite extends TestCase { public static Test suite() { TestSuite suite = new TestSuite(); suite.addTest(ElementsSuite.suite()); suite.addTest(CodegenSuite.suite()); suite.addTestSuite(SchemaPaths.class); return suite; } } libjibx-java-1.1.6a/build/test/org/jibx/schema/SchemaTestBase.java0000644000175000017500000002725610756366774024702 0ustar moellermoellerpackage org.jibx.schema; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintStream; import java.io.StringReader; import java.io.StringWriter; import java.net.URL; import java.util.ArrayList; import java.util.Map; import junit.framework.TestCase; import org.jibx.binding.Loader; import org.jibx.binding.Utility; import org.jibx.binding.classes.BoundClass; import org.jibx.binding.classes.ClassCache; import org.jibx.binding.classes.ClassFile; import org.jibx.binding.classes.MungedClass; import org.jibx.binding.def.BindingDefinition; import org.jibx.extras.DocumentComparator; import org.jibx.runtime.BindingDirectory; import org.jibx.runtime.IBindingFactory; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshallable; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.schema.codegen.custom.SchemasetCustom; import org.jibx.schema.elements.SchemaElement; import org.jibx.schema.validation.PrevalidationVisitor; import org.jibx.schema.validation.RegistrationVisitor; import org.jibx.schema.validation.ValidationContext; import org.jibx.schema.validation.ValidationProblem; import org.jibx.schema.validation.ValidationVisitor; /** * Base class for all schema tests. This binds and loads the schema classes during initialization, and provides access * methods for working with the schema classes. */ public class SchemaTestBase extends TestCase { private static final String SCHEMA_CLASS = "org.jibx.schema.elements.SchemaElement"; private static final IBindingFactory m_bindingFactory; static { try { // set paths to be used for loading referenced classes URL[] urls = Loader.getClassPaths(); String[] paths = new String[urls.length]; for (int i = 0; i < urls.length; i++) { paths[i] = urls[i].getFile(); } ClassCache.setPaths(paths); ClassFile.setPaths(paths); // find the binding definition ClassLoader loader = SchemaTestBase.class.getClassLoader(); InputStream is = loader.getResourceAsStream("org/jibx/schema/binding.xml"); if (is == null) { throw new RuntimeException("Schema binding definition not found"); } // process the binding BoundClass.reset(); MungedClass.reset(); BindingDefinition.reset(); BindingDefinition def = Utility.loadBinding("binding.xml", "binding", is, null, true); def.generateCode(false); // output the modified class files MungedClass.fixChanges(true); // look up the mapped class and associated binding factory Class mclas = Class.forName(SCHEMA_CLASS); m_bindingFactory = BindingDirectory.getFactory(mclas); } catch (JiBXException e) { throw new RuntimeException("JiBXException: " + e.getMessage()); } catch (IOException e) { throw new RuntimeException("IOException: " + e.getMessage()); } catch (ClassNotFoundException e) { throw new RuntimeException("ClassNotFoundException: " + e.getMessage()); } } protected ValidationContext m_validationContext; protected NameRegister m_nameRegister; protected void setUp() throws Exception { m_validationContext = new ValidationContext(); } /** * Read a schema definition into model. * * @param is schema input stream * @param vctx validation context * @return schema element * @throws Exception */ protected SchemaElement readSchema(InputStream is, ValidationContext vctx) throws Exception { final IUnmarshallingContext ictx = m_bindingFactory.createUnmarshallingContext(); ictx.setDocument(is, null); ictx.setUserContext(vctx); SchemaElement schema = (SchemaElement)ictx.unmarshalElement(); m_nameRegister = schema.getRegister(); return schema; } /** * Read a schema definition into model. * * @param text schema text * @param vctx validation context * @return schema element * @throws Exception */ protected SchemaElement readSchema(String text, ValidationContext vctx) throws Exception { return readSchema(new ByteArrayInputStream(text.getBytes("utf-8")), vctx); } /** * Validate a schema definition. * * @param schema schema element * @param vctx validation context */ protected void validateSchema(SchemaElement schema, ValidationContext vctx) { TreeWalker tctx = new TreeWalker(vctx, vctx); tctx.walkSchema(schema, new PrevalidationVisitor(vctx)); vctx.clearTraversed(); tctx.walkSchema(schema, new RegistrationVisitor(vctx)); vctx.clearTraversed(); tctx.walkSchema(schema, new ValidationVisitor(vctx)); } /** * Check for validation problem. * * @param vctx * @return true if any problem */ protected boolean hasProblem(ValidationContext vctx) { return vctx.getProblems().size() > 0; } /** * Get validation problem report. * * @param vctx * @return problem text */ protected String getProblemText(ValidationContext vctx) { StringWriter writer = new StringWriter(); writer.append("Problems found in schema definition"); ArrayList problems = vctx.getProblems(); for (int i = 0; i < problems.size(); i++) { writer.append('\n'); ValidationProblem prob = (ValidationProblem)problems.get(i); writer.append(prob.getDescription()); } return writer.toString(); } /** * Write schema to text string. * * @param schema schema element * @return output schema text * @throws Exception */ protected String writeSchema(SchemaElement schema) throws Exception { StringWriter writer = new StringWriter(); IMarshallingContext ictx = m_bindingFactory.createMarshallingContext(); ictx.setOutput(writer); ictx.setIndent(2); ictx.marshalDocument(schema); return writer.toString(); } /** * Verify that output schema matches original input. Fails the test if there's any difference between the two * versions of the schema. * * @param text1 original schema text * @param text2 output schema text * @throws Exception */ protected void verifySchema(String text1, String text2) throws Exception { StringReader rdr1 = new StringReader(text1); StringReader rdr2 = new StringReader(text2); ByteArrayOutputStream bos = new ByteArrayOutputStream(); PrintStream pstr = new PrintStream(bos); DocumentComparator comp = new DocumentComparator(pstr); boolean match = comp.compare(rdr1, rdr2); if (!match) { pstr.close(); fail("Error roundtripping schema:\n" + new String(bos.toByteArray()) + "\nOriginal schema:\n" + text1 + "\nOutput schema:\n" + text2); } } /** * Read and validate schema, with one or more validation errors expected. * * @param text schema text * @param count number of errors expected * @param msg text for wrong number of errors found * @throws Exception on unexpected error */ protected void runErrors(String text, int count, String msg) throws Exception { SchemaElement schema = readSchema(text, m_validationContext); validateSchema(schema, m_validationContext); assertEquals(msg, count, m_validationContext.getProblems().size()); } /** * Read and validate schema, with a particular validation error expected. * * @param text schema text * @param msg text for wrong number of errors found * @throws Exception on unexpected error */ protected void runOneError(String text, String msg) throws Exception { SchemaElement schema = readSchema(text, m_validationContext); validateSchema(schema, m_validationContext); assertTrue(msg, hasProblem(m_validationContext)); } /** * Prepare schema model for use. * * @param text schema text * @return schema * @throws Exception on unexpected error */ protected SchemaElement prepareSchema(String text) throws Exception { SchemaElement schema = readSchema(text, m_validationContext); validateSchema(schema, m_validationContext); assertFalse(getProblemText(m_validationContext), hasProblem(m_validationContext)); return schema; } /** * Run schema round-trip with validation, with no validation errors. * * @param text schema text * @return schema * @throws Exception on unexpected error */ protected SchemaElement runNoErrors(String text) throws Exception { SchemaElement schema = prepareSchema(text); verifySchema(text, writeSchema(schema)); return schema; } /** * Load and validate schema directly. This takes the root schema resolver as input, and loads the schema along with * all associated schemas. Only the main schema document is actually validated, though. * * @param resolve resolver for all schema texts * @return root schema * @throws Exception */ protected SchemaElement loadSchema(TestResolver resolve) throws Exception { SchemaElement schema = readSchema(resolve.getContent(), m_validationContext); schema.setResolver(resolve); m_validationContext.setSchema(resolve.getName(), schema); validateSchema(schema, m_validationContext); assertFalse(getProblemText(m_validationContext), hasProblem(m_validationContext)); verifySchema(resolve.getText(), writeSchema(schema)); return schema; } /** * Load a code generation customization. * * @param text customizations document text * @throws Exception */ protected SchemasetCustom loadCustomization(String text) throws Exception { SchemasetCustom custom = new SchemasetCustom(null); IBindingFactory fact = BindingDirectory.getFactory("binding", "org.jibx.schema.codegen.custom"); IUnmarshallingContext ictx = fact.createUnmarshallingContext(); ictx.setDocument(new StringReader(text)); ictx.setUserContext(m_validationContext); ((IUnmarshallable)custom).unmarshal(ictx); return custom; } /** * Resolver used for handling schema text strings directly. */ protected static class TestResolver implements ISchemaResolver { /** Schema document. */ private final String m_document; /** Schema name. */ private final String m_name; /** Map from schema name to resolver. */ private final Map m_schemaMap; public TestResolver(String document, String name, Map map) { m_document = document; m_name = name; m_schemaMap = map; } public InputStream getContent() throws IOException { return new ByteArrayInputStream(m_document.getBytes("UTF-8")); } public String getId() { return m_name; } public String getName() { return m_name; } public ISchemaResolver resolve(String loc) throws IOException { return (ISchemaResolver)m_schemaMap.get(loc); } public String getText() { return m_document; } } }libjibx-java-1.1.6a/build/test/org/jibx/ws/0000755000175000017500000000000011021525452020331 5ustar moellermoellerlibjibx-java-1.1.6a/build/test/org/jibx/ws/wsdl/0000755000175000017500000000000011023035622021277 5ustar moellermoellerlibjibx-java-1.1.6a/build/test/org/jibx/ws/wsdl/CustomizationTestBase.java0000644000175000017500000001165110611643354026462 0ustar moellermoeller/* Copyright (c) 2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.ws.wsdl; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import junit.framework.TestCase; import org.jibx.binding.Loader; import org.jibx.binding.Utility; import org.jibx.binding.classes.BoundClass; import org.jibx.binding.classes.ClassCache; import org.jibx.binding.classes.ClassFile; import org.jibx.binding.classes.MungedClass; import org.jibx.binding.def.BindingDefinition; import org.jibx.binding.generator.GlobalCustom; import org.jibx.runtime.BindingDirectory; import org.jibx.runtime.IBindingFactory; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; /** * Test code for class handling. */ public class CustomizationTestBase extends TestCase { protected static final String ROOT_CLASS = "org.jibx.ws.wsdl.WsdlCustom"; protected static final IBindingFactory m_bindingFactory; static { try { // set paths to be used for loading referenced classes URL[] urls = Loader.getClassPaths(); String[] paths = new String[urls.length]; for (int i = 0; i < urls.length; i++) { paths[i] = urls[i].getFile(); } ClassCache.setPaths(paths); ClassFile.setPaths(paths); // find the binding definition ClassLoader loader = CustomizationTestBase.class.getClassLoader(); URL url = loader.getResource("org/jibx/ws/wsdl/binding.xml"); InputStream is = url.openStream(); if (is == null) { throw new RuntimeException("Customizations binding definition not found"); } // process the binding BoundClass.reset(); MungedClass.reset(); BindingDefinition.reset(); BindingDefinition def = Utility.loadBinding("binding.xml", "binding", is, url, true); def.generateCode(false); // output the modified class files MungedClass.fixChanges(true); // look up the mapped class and associated binding factory Class mclas = Class.forName(ROOT_CLASS); m_bindingFactory = BindingDirectory.getFactory(mclas); } catch (JiBXException e) { throw new RuntimeException("JiBXException: " + e.getMessage()); } catch (IOException e) { throw new RuntimeException("IOException: " + e.getMessage()); } catch (ClassNotFoundException e) { throw new RuntimeException("ClassNotFoundException: " + e.getMessage()); } } /** * Read a customization into model from input stream. * * @param is input stream * @return root element * @throws Exception */ protected GlobalCustom readCustom(InputStream is) throws Exception { IUnmarshallingContext ictx = m_bindingFactory.createUnmarshallingContext(); GlobalCustom global = (GlobalCustom)ictx.unmarshalDocument(is, null); global.fillClasses(); return global; } /** * Read a customization into model from string. * * @param text customization document text * @return root element * @throws Exception */ protected GlobalCustom readCustom(String text) throws Exception { return readCustom(new ByteArrayInputStream(text.getBytes("utf-8"))); } }libjibx-java-1.1.6a/build/test/org/jibx/ws/wsdl/Service1.java0000644000175000017500000000414110602647122023631 0ustar moellermoeller/* Copyright (c) 2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.ws.wsdl; import java.util.List; import org.jibx.binding.generator.*; public class Service1 { public static DataClass1 getStatic() { return null; } public DataClass1 getDataClass1() { return null; } public void setDataClass1(DataClass1 data) {} public DataClass1 changeDataClass1(int index, DataClass1 data) { return null; } public List getTypedList() { return null; } public void setTypedList(List list) {} public List getList() { return null; } public void setList(List list) {} } libjibx-java-1.1.6a/build/test/org/jibx/ws/wsdl/ServiceCustomTest.java0000644000175000017500000004621410611643354025615 0ustar moellermoeller/* Copyright (c) 2007, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jibx.ws.wsdl; import java.util.HashMap; import java.util.List; import java.util.Map; import org.jibx.binding.generator.GlobalCustom; /** * Test code for class handling. */ public class ServiceCustomTest extends CustomizationTestBase { public static final String SIMPLE_SERVICE_CLASS = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; public static final String CUSTOMIZED_SERVICE_CLASS1 = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""; public void testSimpleServiceClass() throws Exception { GlobalCustom custom = readCustom(SIMPLE_SERVICE_CLASS); List extens = custom.getExtensionChildren(); assertEquals("extension count", 1, extens.size()); Object item = extens.get(0); assertTrue("extension child type", item instanceof WsdlCustom); WsdlCustom wsdl = (WsdlCustom)item; List services = wsdl.getServices(); assertEquals("service count", 1, services.size()); ServiceCustom service = (ServiceCustom)services.get(0); assertEquals("service name", "Service1", service.getServiceName()); assertEquals("service port", "Service1Port", service.getPortName()); assertEquals("service binding", "Service1Binding", service.getBindingName()); assertEquals("service portType", "Service1PortType", service.getPortTypeName()); assertEquals("service wsdl namespace", "http://jibx.org/ws/wsdl/Service1", service.getWsdlNamespace()); assertEquals("service schema namespace", "http://jibx.org/ws/wsdl/Service1", service.getNamespace()); assertNull("service address", service.getServiceAddress()); List operations = service.getOperations(); assertEquals("operation count", 7, operations.size()); Map opmap = new HashMap(); for (int i = 0; i < operations.size(); i++) { OperationCustom op = (OperationCustom)operations.get(i); opmap.put(op.getOperationName(), op); } // getDataClass1 method and operation OperationCustom op = (OperationCustom)opmap.get("getDataClass1"); assertNotNull("getDataClass1 operation", op); assertEquals("getDataClass1 request message", "getDataClass1Message", op.getRequestMessageName()); assertEquals("getDataClass1 request wrapper", "getDataClass1", op.getRequestWrapperName()); assertEquals("getDataClass1 response message", "getDataClass1ResponseMessage", op.getResponseMessageName()); assertEquals("getDataClass1 response wrapper", "getDataClass1Response", op.getResponseWrapperName()); List params = op.getParameters(); assertEquals("getDataClass1 parameters count", 0, params.size()); ValueCustom ret = op.getReturn(); assertEquals("getDataClass1 returned type", "org.jibx.binding.generator.DataClass1", ret.getType()); assertNull("getDataClass1 returned element name", ret.getElementName()); // setDataClass1 method and operation op = (OperationCustom)opmap.get("setDataClass1"); assertNotNull("setDataClass1 operation", op); assertEquals("setDataClass1 request message", "setDataClass1Message", op.getRequestMessageName()); assertEquals("setDataClass1 request wrapper", "setDataClass1", op.getRequestWrapperName()); assertEquals("setDataClass1 response message", "setDataClass1ResponseMessage", op.getResponseMessageName()); assertEquals("setDataClass1 response wrapper", "setDataClass1Response", op.getResponseWrapperName()); params = op.getParameters(); assertEquals("setDataClass1 parameters count", 1, params.size()); ValueCustom param = (ValueCustom)params.get(0); assertEquals("setDataClass1 parameter type", "org.jibx.binding.generator.DataClass1", param.getType()); assertEquals("setDataClass1 returned element name", "data", param.getElementName()); ret = op.getReturn(); assertEquals("setDataClass1 returned type", "void", ret.getType()); assertNull("setDataClass1 returned element name", ret.getElementName()); // changeDataClass1 method and operation op = (OperationCustom)opmap.get("changeDataClass1"); assertNotNull("changeDataClass1 operation", op); assertEquals("changeDataClass1 request message", "changeDataClass1Message", op.getRequestMessageName()); assertEquals("changeDataClass1 request wrapper", "changeDataClass1", op.getRequestWrapperName()); assertEquals("changeDataClass1 response message", "changeDataClass1ResponseMessage", op.getResponseMessageName()); assertEquals("changeDataClass1 response wrapper", "changeDataClass1Response", op.getResponseWrapperName()); params = op.getParameters(); assertEquals("setDataClass1 parameters count", 2, params.size()); param = (ValueCustom)params.get(0); assertEquals("changeDataClass1 parameter type", "int", param.getType()); assertEquals("changeDataClass1 returned element name", "index", param.getElementName()); param = (ValueCustom)params.get(1); assertEquals("changeDataClass1 parameter type", "org.jibx.binding.generator.DataClass1", param.getType()); assertEquals("changeDataClass1 returned element name", "data", param.getElementName()); ret = op.getReturn(); assertEquals("changeDataClass1 returned type", "org.jibx.binding.generator.DataClass1", ret.getType()); assertNull("changeDataClass1 returned element name", ret.getElementName()); // getTypedList method and operation op = (OperationCustom)opmap.get("getTypedList"); assertNotNull("getTypedList operation", op); assertEquals("getTypedList request message", "getTypedListMessage", op.getRequestMessageName()); assertEquals("getTypedList request wrapper", "getTypedList", op.getRequestWrapperName()); assertEquals("getTypedList response message", "getTypedListResponseMessage", op.getResponseMessageName()); assertEquals("getTypedList response wrapper", "getTypedListResponse", op.getResponseWrapperName()); params = op.getParameters(); assertEquals("getTypedList parameters count", 0, params.size()); ret = op.getReturn(); assertEquals("getTypedList returned type", "java.util.List", ret.getType()); assertEquals("getTypedList returned item type", "org.jibx.binding.generator.DataClass1", ret.getItemType()); assertNull("getTypedList returned element name", ret.getElementName()); assertEquals("getTypedList returned item element name", "dataClass1", ret.getItemElementName()); // setTypedList method and operation op = (OperationCustom)opmap.get("setTypedList"); assertNotNull("setTypedList operation", op); assertEquals("setTypedList request message", "setTypedListMessage", op.getRequestMessageName()); assertEquals("setTypedList request wrapper", "setTypedList", op.getRequestWrapperName()); assertEquals("setTypedList response message", "setTypedListResponseMessage", op.getResponseMessageName()); assertEquals("setTypedList response wrapper", "setTypedListResponse", op.getResponseWrapperName()); params = op.getParameters(); assertEquals("setTypedList parameters count", 1, params.size()); param = (ValueCustom)params.get(0); assertEquals("setTypedList parameter type", "java.util.List", param.getType()); assertEquals("setTypedList parameter item type", "org.jibx.binding.generator.DataClass1", param.getItemType()); assertEquals("setTypedList parameter element name", "list", param.getElementName()); assertEquals("setTypedList parameter item element name", "dataClass1", param.getItemElementName()); ret = op.getReturn(); assertEquals("setTypedList returned type", "void", ret.getType()); assertNull("setTypedList returned element name", ret.getElementName()); // getList method and operation op = (OperationCustom)opmap.get("getList"); assertNotNull("getList operation", op); assertEquals("getList request message", "getListMessage", op.getRequestMessageName()); assertEquals("getList request wrapper", "getList", op.getRequestWrapperName()); assertEquals("getList response message", "getListResponseMessage", op.getResponseMessageName()); assertEquals("getList response wrapper", "getListResponse", op.getResponseWrapperName()); params = op.getParameters(); assertEquals("getList parameters count", 0, params.size()); ret = op.getReturn(); assertEquals("getList returned type", "java.util.List", ret.getType()); assertEquals("getList returned item type", "java.lang.Object", ret.getItemType()); assertNull("getList returned element name", ret.getElementName()); assertEquals("getList returned item element name", "item", ret.getItemElementName()); // setList method and operation op = (OperationCustom)opmap.get("setList"); assertNotNull("setList operation", op); assertEquals("setList request message", "setListMessage", op.getRequestMessageName()); assertEquals("setList request wrapper", "setList", op.getRequestWrapperName()); assertEquals("setList response message", "setListResponseMessage", op.getResponseMessageName()); assertEquals("setList response wrapper", "setListResponse", op.getResponseWrapperName()); params = op.getParameters(); assertEquals("setList parameters count", 1, params.size()); param = (ValueCustom)params.get(0); assertEquals("setList parameter type", "java.util.List", param.getType()); assertEquals("setList parameter item type", "java.lang.Object", param.getItemType()); assertEquals("setList parameter element name", "list", param.getElementName()); assertEquals("setList parameter item element name", "item", param.getItemElementName()); ret = op.getReturn(); assertEquals("setList returned type", "void", ret.getType()); assertNull("setList returned element name", ret.getElementName()); } public void testCustomizedServiceClass1() throws Exception { GlobalCustom custom = readCustom(CUSTOMIZED_SERVICE_CLASS1); List extens = custom.getExtensionChildren(); assertEquals("extension count", 1, extens.size()); Object item = extens.get(0); assertTrue("extension child type", item instanceof WsdlCustom); WsdlCustom wsdl = (WsdlCustom)item; List services = wsdl.getServices(); assertEquals("service count", 1, services.size()); ServiceCustom service = (ServiceCustom)services.get(0); assertEquals("service name", "MyService", service.getServiceName()); assertEquals("service port", "MyPort", service.getPortName()); assertEquals("service binding", "MyBinding", service.getBindingName()); assertEquals("service portType", "MyPortType", service.getPortTypeName()); assertEquals("service wsdl namespace", "urn:a", service.getWsdlNamespace()); assertEquals("service schema namespace", "urn:b", service.getNamespace()); assertEquals("service address", "http://localhost:8080/jibxsoap/MyService", service.getServiceAddress()); List operations = service.getOperations(); assertEquals("operation count", 4, operations.size()); Map opmap = new HashMap(); for (int i = 0; i < operations.size(); i++) { OperationCustom op = (OperationCustom)operations.get(i); opmap.put(op.getOperationName(), op); } // getTypedList method and operation OperationCustom op = (OperationCustom)opmap.get("getTypedList"); assertNotNull("getTypedList operation", op); assertEquals("getTypedList request message", "getTypedListMessage", op.getRequestMessageName()); assertEquals("getTypedList request wrapper", "getTypedList", op.getRequestWrapperName()); assertEquals("getTypedList response message", "getTypedListResponseMessage", op.getResponseMessageName()); assertEquals("getTypedList response wrapper", "getTypedListResponse", op.getResponseWrapperName()); List params = op.getParameters(); assertEquals("getTypedList parameters count", 0, params.size()); ValueCustom ret = op.getReturn(); assertEquals("getTypedList returned type", "java.util.List", ret.getType()); assertEquals("getTypedList returned item type", "org.jibx.binding.generator.DataClass1", ret.getItemType()); assertNull("getTypedList returned element name", ret.getElementName()); assertEquals("getTypedList returned item element name", "dataClass1", ret.getItemElementName()); // setTypedList method and operation op = (OperationCustom)opmap.get("setTypedList"); assertNotNull("setTypedList operation", op); assertEquals("setTypedList request message", "setTypedListMessage", op.getRequestMessageName()); assertEquals("setTypedList request wrapper", "setTypedList", op.getRequestWrapperName()); assertEquals("setTypedList response message", "setTypedListResponseMessage", op.getResponseMessageName()); assertEquals("setTypedList response wrapper", "setTypedListResponse", op.getResponseWrapperName()); params = op.getParameters(); assertEquals("setTypedList parameters count", 1, params.size()); ValueCustom param = (ValueCustom)params.get(0); assertEquals("setTypedList parameter type", "java.util.List", param.getType()); assertEquals("setTypedList parameter item type", "org.jibx.binding.generator.DataClass1", param.getItemType()); assertEquals("setTypedList parameter element name", "list", param.getElementName()); assertEquals("setTypedList parameter item element name", "dataClass1", param.getItemElementName()); ret = op.getReturn(); assertEquals("setTypedList returned type", "void", ret.getType()); assertNull("setTypedList returned element name", ret.getElementName()); // getList method and operation op = (OperationCustom)opmap.get("getList"); assertNotNull("getList operation", op); assertEquals("getList request message", "glreq", op.getRequestMessageName()); assertEquals("getList request wrapper", "glreqwrap", op.getRequestWrapperName()); assertEquals("getList response message", "glrsp", op.getResponseMessageName()); assertEquals("getList response wrapper", "glrspwrap", op.getResponseWrapperName()); params = op.getParameters(); assertEquals("getList parameters count", 0, params.size()); ret = op.getReturn(); assertEquals("getList returned type", "java.util.List", ret.getType()); assertEquals("getList returned item type", "org.jibx.binding.generator.DataClass1", ret.getItemType()); assertNull("getList returned element name", ret.getElementName()); assertEquals("getList returned item element name", "dataClass1", ret.getItemElementName()); // setList method and operation op = (OperationCustom)opmap.get("setList"); assertNotNull("setList operation", op); assertEquals("setList request message", "setListMessage", op.getRequestMessageName()); assertEquals("setList request wrapper", "setList", op.getRequestWrapperName()); assertEquals("setList response message", "setListResponseMessage", op.getResponseMessageName()); assertEquals("setList response wrapper", "setListResponse", op.getResponseWrapperName()); params = op.getParameters(); assertEquals("setList parameters count", 1, params.size()); param = (ValueCustom)params.get(0); assertEquals("setList parameter type", "java.util.List", param.getType()); assertEquals("setList parameter item type", "org.jibx.binding.generator.DataClass1", param.getItemType()); assertEquals("setList parameter element name", "data-classes", param.getElementName()); assertEquals("setList parameter item element name", "data-class", param.getItemElementName()); ret = op.getReturn(); assertEquals("setList returned type", "void", ret.getType()); assertNull("setList returned element name", ret.getElementName()); } }libjibx-java-1.1.6a/build/test/org/jibx/ws/wsdl/SignatureParserTest.java0000644000175000017500000001777010602647122026142 0ustar moellermoellerpackage org.jibx.ws.wsdl; import junit.framework.TestCase; public class SignatureParserTest extends TestCase { private static final String RETURN_PARAMETERIZED_SIGNATURE = "Signature(()Ljava/util/List;)"; private static final String CALL_PARAMETERIZED_SIGNATURE = "Signature((Ljava/util/List;)V)"; private static final String COMPLEX_PARAMETERIZED_SIGNATURE = "Signature((ILjava/util/List;Ljava/util/List;Ljava/lang/Object;Ljava/lang/Integer;ZF)Ljava/util/List;)"; public void testReturnParameterized() { SignatureParser parse = new SignatureParser(RETURN_PARAMETERIZED_SIGNATURE); assertEquals("start method parameters event", SignatureParser.METHOD_PARAMETERS_START_EVENT, parse.next()); assertEquals("start method parameters state", SignatureParser.METHOD_PARAMETERS_START_EVENT, parse.getEvent()); assertEquals("end method parameters event", SignatureParser.METHOD_PARAMETERS_END_EVENT, parse.next()); assertEquals("type event", SignatureParser.TYPE_EVENT, parse.next()); assertEquals("type value", "java.util.List", parse.getType()); assertFalse("type primitive", parse.isPrimitive()); assertTrue("type parameterized", parse.isParameterized()); assertEquals("start type parameters event", SignatureParser.TYPE_PARAMETERS_START_EVENT, parse.next()); assertEquals("type event", SignatureParser.TYPE_EVENT, parse.next()); assertEquals("type value", "org.jibx.binding.generator.DataClass1", parse.getType()); assertFalse("type primitive", parse.isPrimitive()); assertFalse("type parameterized", parse.isParameterized()); assertEquals("end type parameters event", SignatureParser.TYPE_PARAMETERS_END_EVENT, parse.next()); assertEquals("end event", SignatureParser.END_EVENT, parse.next()); } public void testCallParameterized() { SignatureParser parse = new SignatureParser(CALL_PARAMETERIZED_SIGNATURE); assertEquals("start method parameters event", SignatureParser.METHOD_PARAMETERS_START_EVENT, parse.next()); assertEquals("type event", SignatureParser.TYPE_EVENT, parse.next()); assertEquals("type value", "java.util.List", parse.getType()); assertFalse("type primitive", parse.isPrimitive()); assertTrue("type parameterized", parse.isParameterized()); assertEquals("start type parameters event", SignatureParser.TYPE_PARAMETERS_START_EVENT, parse.next()); assertEquals("type event", SignatureParser.TYPE_EVENT, parse.next()); assertEquals("type value", "org.jibx.binding.generator.DataClass1", parse.getType()); assertFalse("type primitive", parse.isPrimitive()); assertFalse("type parameterized", parse.isParameterized()); assertEquals("end type parameters event", SignatureParser.TYPE_PARAMETERS_END_EVENT, parse.next()); assertEquals("end method parameters event", SignatureParser.METHOD_PARAMETERS_END_EVENT, parse.next()); assertEquals("type event", SignatureParser.TYPE_EVENT, parse.next()); assertEquals("type value", "void", parse.getType()); assertTrue("type primitive", parse.isPrimitive()); assertFalse("type parameterized", parse.isParameterized()); assertEquals("end event", SignatureParser.END_EVENT, parse.next()); } public void testComplexParameterized() { SignatureParser parse = new SignatureParser(COMPLEX_PARAMETERIZED_SIGNATURE); assertEquals("start method parameters event", SignatureParser.METHOD_PARAMETERS_START_EVENT, parse.next()); // first method parameter is an int assertEquals("type event", SignatureParser.TYPE_EVENT, parse.next()); assertEquals("type value", "int", parse.getType()); assertTrue("type primitive", parse.isPrimitive()); assertFalse("type parameterized", parse.isParameterized()); // second method parameter is a List assertEquals("type event", SignatureParser.TYPE_EVENT, parse.next()); assertEquals("type value", "java.util.List", parse.getType()); assertFalse("type primitive", parse.isPrimitive()); assertTrue("type parameterized", parse.isParameterized()); assertEquals("start type parameters event", SignatureParser.TYPE_PARAMETERS_START_EVENT, parse.next()); assertEquals("type event", SignatureParser.TYPE_EVENT, parse.next()); assertEquals("type value", "org.jibx.binding.generator.DataClass1", parse.getType()); assertFalse("type primitive", parse.isPrimitive()); assertFalse("type parameterized", parse.isParameterized()); assertEquals("end type parameters event", SignatureParser.TYPE_PARAMETERS_END_EVENT, parse.next()); // third method parameter is a List assertEquals("type event", SignatureParser.TYPE_EVENT, parse.next()); assertEquals("type value", "java.util.List", parse.getType()); assertFalse("type primitive", parse.isPrimitive()); assertTrue("type parameterized", parse.isParameterized()); assertEquals("start type parameters event", SignatureParser.TYPE_PARAMETERS_START_EVENT, parse.next()); assertEquals("type event", SignatureParser.TYPE_EVENT, parse.next()); assertEquals("type value", "java.lang.String", parse.getType()); assertFalse("type primitive", parse.isPrimitive()); assertFalse("type parameterized", parse.isParameterized()); assertEquals("end type parameters event", SignatureParser.TYPE_PARAMETERS_END_EVENT, parse.next()); // fourth method parameter is an Object assertEquals("type event", SignatureParser.TYPE_EVENT, parse.next()); assertEquals("type value", "java.lang.Object", parse.getType()); assertFalse("type primitive", parse.isPrimitive()); assertFalse("type parameterized", parse.isParameterized()); // fifth method parameter is an Integer assertEquals("type event", SignatureParser.TYPE_EVENT, parse.next()); assertEquals("type value", "java.lang.Integer", parse.getType()); assertFalse("type primitive", parse.isPrimitive()); assertFalse("type parameterized", parse.isParameterized()); // sixth method parameter is a boolean assertEquals("type event", SignatureParser.TYPE_EVENT, parse.next()); assertEquals("type value", "boolean", parse.getType()); assertTrue("type primitive", parse.isPrimitive()); assertFalse("type parameterized", parse.isParameterized()); // seventh method parameter is a float assertEquals("type event", SignatureParser.TYPE_EVENT, parse.next()); assertEquals("type value", "float", parse.getType()); assertTrue("type primitive", parse.isPrimitive()); assertFalse("type parameterized", parse.isParameterized()); assertEquals("end method parameters event", SignatureParser.METHOD_PARAMETERS_END_EVENT, parse.next()); // return value is a List assertEquals("type event", SignatureParser.TYPE_EVENT, parse.next()); assertEquals("type value", "java.util.List", parse.getType()); assertFalse("type primitive", parse.isPrimitive()); assertTrue("type parameterized", parse.isParameterized()); assertEquals("start type parameters event", SignatureParser.TYPE_PARAMETERS_START_EVENT, parse.next()); assertEquals("type event", SignatureParser.TYPE_EVENT, parse.next()); assertEquals("type value", "org.jibx.binding.generator.DataClass1", parse.getType()); assertFalse("type primitive", parse.isPrimitive()); assertFalse("type parameterized", parse.isParameterized()); assertEquals("end type parameters event", SignatureParser.TYPE_PARAMETERS_END_EVENT, parse.next()); assertEquals("end event", SignatureParser.END_EVENT, parse.next()); } }libjibx-java-1.1.6a/build/test/simple/0000755000175000017500000000000011023035622017443 5ustar moellermoellerlibjibx-java-1.1.6a/build/test/simple/Address.java0000644000175000017500000000315610330637714021712 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; public class Address { private Address() {} public String street1; public String city; public String state; public String zip; } libjibx-java-1.1.6a/build/test/simple/Address9.java0000644000175000017500000000021610311010000021741 0ustar moellermoellerpackage simple; public class Address9 { public String street; public String city; public String state; public Integer zip; } libjibx-java-1.1.6a/build/test/simple/Company10.java0000644000175000017500000000016010311010000022030 0ustar moellermoellerpackage simple; public class Company10 extends Identity10 { public String name; public String taxId; } libjibx-java-1.1.6a/build/test/simple/Customer0.java0000644000175000017500000000351310435065574022210 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; public class Customer0 { public Name name; public String street1; public String city; public String state; public String zip; public String phone; public Customer0() { name = new Name(); name.firstName = "first"; name.lastName = "last"; } public void setName(Name name) { this.name = name; } } libjibx-java-1.1.6a/build/test/simple/Customer1.java0000644000175000017500000000340010217763160022176 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; public class Customer1 { public String firstName; public String lastName; public String street1; public String city; public String state; public String zip; public String phone; public boolean hasName() { return firstName != null || lastName != null; } } libjibx-java-1.1.6a/build/test/simple/Customer10.java0000644000175000017500000000031110311010000022221 0ustar moellermoellerpackage simple; public class Customer10 { public Identity10 identity; public String street; public String city; public String state; public Integer zip; public String phone; } libjibx-java-1.1.6a/build/test/simple/Customer2.java0000644000175000017500000000352010330637714022203 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; public class Customer2 { public String firstName; public String lastName; public Address address; public String phone; public boolean hasName() { return firstName != null || lastName != null; } public Address getAddress() { return address; } public void setAddress(Address addr) { address = addr; } } libjibx-java-1.1.6a/build/test/simple/Customer3.java0000644000175000017500000000360210221341134022170 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; import java.util.ArrayList; public class Customer3 { public Name name = new Name(); public String street1; public String city; public String state; public String zip; public String phone; public Customer3 referral; public Object oreferral; public ArrayList orderIds; public static Name nameFactory() { throw new IllegalStateException("Name factory should not be called"); } } libjibx-java-1.1.6a/build/test/simple/Customer4.java0000644000175000017500000000332310071714444022204 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; import java.util.ArrayList; public class Customer4 { public Name name; public Object oname; public String street1; public String city; public String state; public String zip; public String phone; public ArrayList referrals; } libjibx-java-1.1.6a/build/test/simple/Customer5.java0000644000175000017500000000340410071714444022205 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; import java.util.ArrayList; public class Customer5 extends Customer5Base { public long customerId; public boolean repeat; public short orderCount; public double discount; // items in array can be Customer5a, Customer5b, and Customer5c (that order) public ArrayList referrals; } libjibx-java-1.1.6a/build/test/simple/Customer5Base.java0000644000175000017500000000320410071714444022776 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; public class Customer5Base { public Name name; public String street1; public String city; public String state; public String zip; public String phone; } libjibx-java-1.1.6a/build/test/simple/Customer5a.java0000644000175000017500000000305710071714444022352 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; public class Customer5a extends Customer5Base { public int sourceCode; } libjibx-java-1.1.6a/build/test/simple/Customer5b.java0000644000175000017500000000302710071714444022350 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; public class Customer5b extends Customer5Base { } libjibx-java-1.1.6a/build/test/simple/Customer5c.java0000644000175000017500000000305610071714444022353 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; public class Customer5c extends Customer5 { public short qualityCode; } libjibx-java-1.1.6a/build/test/simple/Customer6a.java0000644000175000017500000000321710756367204022361 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; public class Customer6a extends Customer6aIntermediary { public long customerId; public boolean repeat; public byte orderCount; public ICustomer6 innerCustomer; } libjibx-java-1.1.6a/build/test/simple/Customer6aBase.java0000644000175000017500000000322410756367204023152 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; public abstract class Customer6aBase implements ICustomer6a { private Name name; private String street1; private String city; private String state; private String zip; } libjibx-java-1.1.6a/build/test/simple/Customer6aIntermediary.java0000644000175000017500000000310710410214130024704 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; public abstract class Customer6aIntermediary extends Customer6aBase { public String unused; } libjibx-java-1.1.6a/build/test/simple/Customer6b.java0000644000175000017500000000322310756367204022357 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; public class Customer6b extends Customer6bBase implements ICustomer6a { public long customerId; public boolean repeat; public int orderCount; public float discount; } libjibx-java-1.1.6a/build/test/simple/Customer6bBase.java0000644000175000017500000000317010410214130023123 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; public abstract class Customer6bBase { public Name name; public String street1; public String city; public String state; public String zip; } libjibx-java-1.1.6a/build/test/simple/Customer8a.java0000644000175000017500000000425410257173436022363 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; public class Customer8a implements ICustomer8 { protected String id; protected Name name; protected String street1; protected String city; protected String state; protected int zip; public void setId(String value) { id = value; } public Name getName() { return name; } public String getStreet() { return street1; } public String getCity() { return city; } public String getState() { return state; } public String getId() { return id; } public void setName(Name name) { this.name = name; } public void setStreet(String value) { street1 = value; } public void setCity(String value) { city = value; } public void setState(String value) { state = value; } } libjibx-java-1.1.6a/build/test/simple/Customer8b.java0000644000175000017500000000425310221061172022343 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; public class Customer8b implements ICustomer8, ICustomer8b { public String id; public Name name; public String street1; public String city; public String state; public Integer zip; public String getId() { return id; } public Name getName() { return name; } public String getStreet() { return street1; } public String getCity() { return city; } public String getState() { return state; } public void setId(String value) { id = value; } public void setName(Name name) { this.name = name; } public void setStreet(String value) { street1 = value; } public void setCity(String value) { city = value; } public void setState(String value) { state = value; } } libjibx-java-1.1.6a/build/test/simple/Customer8c.java0000644000175000017500000000425310221061172022344 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; public class Customer8c implements ICustomer8, ICustomer8c { public String id; public Name name; public String street1; public String city; public String state; public Integer zip; public String getId() { return id; } public Name getName() { return name; } public String getStreet() { return street1; } public String getCity() { return city; } public String getState() { return state; } public void setId(String value) { id = value; } public void setName(Name name) { this.name = name; } public void setStreet(String value) { street1 = value; } public void setCity(String value) { city = value; } public void setState(String value) { state = value; } } libjibx-java-1.1.6a/build/test/simple/Customer8d.java0000644000175000017500000000322110257173436022357 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; public class Customer8d extends Customer8a { private Integer getZip() { return new Integer(zip); } private void setZip(Integer value) { zip = value.intValue(); } } libjibx-java-1.1.6a/build/test/simple/Customer9.java0000644000175000017500000000033710311010000022161 0ustar moellermoellerpackage simple; public class Customer9 { public int customerNumber; public String firstName; public String lastName; public Address9 shipAddress; public Address9 billAddress; public String phone; } libjibx-java-1.1.6a/build/test/simple/Customers6.java0000644000175000017500000000500210071714444022365 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; import java.util.Iterator; public class Customers6 { private int fillPosition; private Object[] customers; private void setCustomerCount(int count) { customers = new Object[count]; fillPosition = 0; } private int getCustomerCount() { return fillPosition; } private void addCustomer(Object obj) { customers[fillPosition++] = obj; } private Iterator getCustomerIterator() { return new CustomerIterator(); } private class CustomerIterator implements Iterator { int nextIndex; private CustomerIterator() { nextIndex = 0; } public boolean hasNext() { return nextIndex < fillPosition; } public Object next() { if (nextIndex < fillPosition) { return customers[nextIndex++]; } else { return null; } } public void remove() { throw new UnsupportedOperationException("No remove support"); } } } libjibx-java-1.1.6a/build/test/simple/Customers7.java0000644000175000017500000001237010756367204022404 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; import java.util.Iterator; public class Customers7 { private DerivedCollection collection = new DerivedCollection(); private void setCustomerCount(int count) { if (count > 0) { collection.setCustomerCount(count); } else { collection = null; } } private int getCustomerCount() { if (collection == null) { return 0; } else { return collection.getCustomerCount(); } } private void wrappedAddCustomer(Object obj) { collection.addCustomer((CustomerInterface)obj); } private boolean wrappedHasCustomer() { return collection.hasCustomer(); } private Iterator wrappedGetCustomerIterator() { return new CustomerIterator(collection); } private static class CustomerCollection { private int fillPosition; private CustomerInterface[] customers; protected void setCustomerCount(int count) { customers = new Customer[count]; fillPosition = 0; } protected int getCustomerCount() { return fillPosition; } protected void addCustomer(CustomerInterface obj) { customers[fillPosition++] = obj; } protected boolean hasCustomer() { return fillPosition > 0; } protected CustomerInterface getCustomer(int index) { return customers[index]; } protected Iterator getCustomerIterator() { return new CustomerIterator(this); } } private static class DerivedCollection extends CustomerCollection { } private static class CustomerIterator implements Iterator { private final CustomerCollection collection; int nextIndex; private CustomerIterator(CustomerCollection coll) { collection = coll; nextIndex = 0; } public boolean hasNext() { return collection != null && nextIndex < collection.fillPosition; } public Object next() { if (nextIndex < collection.fillPosition) { return collection.getCustomer(nextIndex++); } else { return null; } } public void remove() { throw new UnsupportedOperationException("No remove support"); } } public static CustomerInterface createCustomer() { return new Customer(); } public interface CustomerInterface { public Name getName(); public String getStreet1(); public String getCity(); public String getState(); public String getZip(); public void setName(Name name); public void setStreet1(String street1); public void setCity(String city); public void setState(String state); public void setZip(String zip); } public interface ExtendedCustomerInterface extends CustomerInterface {} public static class Customer implements ExtendedCustomerInterface { private Name name; private String street1; private String city; private String state; private String zip; public Name getName() { return name; } public String getStreet1() { return street1; } public String getCity() { return city; } public String getState() { return state; } public String getZip() { return zip; } public void setName(Name name) { this.name = name; } public void setStreet1(String street1) { this.street1 = street1; } public void setCity(String city) { this.city = city; } public void setState(String state) { this.state = state; } public void setZip(String zip) { this.zip = zip; } } } libjibx-java-1.1.6a/build/test/simple/Customers8.java0000644000175000017500000000440010257173436022376 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; import java.util.ArrayList; public class Customers8 { private ArrayList customers = new SubclassedArrayList(); private int getCount() { return customers.size(); } private Object getObject(int index) { return customers.get(index); } private void addObject(Object obj) { customers.add(obj); } private ICustomer8 getCustomer(int index) { return (ICustomer8)customers.get(index); } private void addCustomer(ICustomer8 customer) { customers.add(customer); } private static class SubclassedArrayList extends ArrayList { public SubclassedArrayList() { super(); } private void internalAddCustomer(ICustomer8 customer) { super.add(customer); } } } libjibx-java-1.1.6a/build/test/simple/ICustomer6.java0000644000175000017500000000006110337570716022322 0ustar moellermoellerpackage simple; public interface ICustomer6 { } libjibx-java-1.1.6a/build/test/simple/ICustomer6a.java0000644000175000017500000000010510756367204022463 0ustar moellermoellerpackage simple; public interface ICustomer6a extends ICustomer6 { } libjibx-java-1.1.6a/build/test/simple/ICustomer8.java0000644000175000017500000000352210217763160022323 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; public interface ICustomer8 { public String getId(); public Name getName(); public String getStreet(); public String getCity(); public String getState(); public void setId(String id); public void setName(Name name); public void setStreet(String value); public void setCity(String value); public void setState(String value); }libjibx-java-1.1.6a/build/test/simple/ICustomer8b.java0000644000175000017500000000300510221061172022446 0ustar moellermoeller/* Copyright (c) 2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; public interface ICustomer8b { }libjibx-java-1.1.6a/build/test/simple/ICustomer8c.java0000644000175000017500000000300510221061172022447 0ustar moellermoeller/* Copyright (c) 2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; public interface ICustomer8c { }libjibx-java-1.1.6a/build/test/simple/Identity10.java0000644000175000017500000000011410311010000022212 0ustar moellermoellerpackage simple; public class Identity10 { public int customerNumber; } libjibx-java-1.1.6a/build/test/simple/MyClass.java0000644000175000017500000000043110071714446021671 0ustar moellermoeller package simple; import java.util.ArrayList; class MyClass { private int a; private String b; private ArrayList ints; public int getA() { return a; } public void setA(int a) { this.a = a; } public String getB() { return b; } public void setB(String b) { this.b = b; } } libjibx-java-1.1.6a/build/test/simple/MyClass1.java0000644000175000017500000000103310541617342021750 0ustar moellermoeller package simple; import java.awt.Dimension; import java.awt.Rectangle; import java.util.ArrayList; class MyClass1 extends MyClass1Base { private int a; private String b; private Dimension dimen; private Rectangle rect; private ArrayList ints; // force generation of default constructor public MyClass1(int a) { super(a); this.a = a; } public int getA() { return a; } public void setA(int a) { this.a = a; } public String getB() { return b; } public void setB(String b) { this.b = b; } } libjibx-java-1.1.6a/build/test/simple/MyClass1Base.java0000644000175000017500000000012010541617342022537 0ustar moellermoeller package simple; class MyClass1Base { protected MyClass1Base(int any) {} } libjibx-java-1.1.6a/build/test/simple/MyClass2.java0000644000175000017500000000247010425211274021752 0ustar moellermoeller package simple; import java.awt.Dimension; import java.awt.Rectangle; import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; class MyClass2 { private int a; private String b; private double c; private boolean d; private Object e; private Integer f; private Integer g; private Dimension dimen; private Rectangle rect; private List ints; private Set orderedStrings; public int getA() { return a; } public void setA(String a) { this.a = Integer.parseInt(a); } public void setA(int a) { this.a = a; } public String getB() { return b; } public void setB(String b) { this.b = b; } public void setB(int b) { this.b = Integer.toString(b); } public double getC() { return c; } public void setC(double c) { this.c = c; } private Object getG() { return g; } private void setG(Object value) { g = (Integer)value; } private List getList() { return ints; } private void setList(ArrayList list) { ints = list; } private static List listFactory() { return new ArrayList(); } private static ArrayList arrayListFactory() { return new ArrayList(); } private static SortedSet sortedSetFactory() { return new TreeSet(); } } libjibx-java-1.1.6a/build/test/simple/MyClass3.java0000644000175000017500000000204410347115046021753 0ustar moellermoeller package simple; import java.awt.Dimension; import java.awt.Rectangle; import java.util.ArrayList; class MyClass3 { private int a; private String b; private double c; private boolean d; private char e; private Dimension dimen; private Rectangle rect; private int[] ints; private Integer[] integers; private long[] longs; private void addInt(Integer value) { if (integers == null) { integers = new Integer[1]; integers[0] = value; } else { int length = integers.length; Integer[] newints = new Integer[length+1]; System.arraycopy(integers, 0, newints, 0, length); newints[length] = value; integers = newints; } } private int sizeInts() { if (integers == null) { return 0; } else { return integers.length; } } private Integer getInt(int index) { return integers[index]; } private boolean hasInts() { return integers != null; } } libjibx-java-1.1.6a/build/test/simple/MyClass4.java0000644000175000017500000000442610435141302021752 0ustar moellermoeller package simple; import java.util.Vector; class MyClass4 { private int a; private String b; private double c; private Boolean d; private Integer e; private Integer f; private String g; private boolean h; private boolean i; private boolean j; private byte[] k; private byte l; private byte m; private char n; private String o; //#!j2me{ private java.sql.Date p; //#j2me} private String q; private String r; private String s; private Vector intsAndStrings; private boolean testG() { return g != null; } private boolean testJ() { return j; } private String getJ() { return ""; } private void setJ(String value) { j = value != null; } private void setO(String value) { o = value; } private boolean testO() { return o != null && !"".equals(o); } private static String serializeInteger(Integer value) { return value.toString(); } private static String yesNoSerializer(boolean flag) { return flag ? "yes" : "no"; } private static boolean yesNoDeserializer(String text) { return "yes".equals(text); } private void postSet() { if (q != null && q.length() == 0) { q = null; } if (r != null && r.length() == 0) { r = null; } } private static class IntWrapper { private int ivalue; } protected static String serializeNumber(Number num) { return num.toString(); } protected static Number deserializeNumber(String value) { if (value.indexOf('.') >= 0) { return new Float(value); } else { return new Integer(value); } } private static String reverse(String string) { StringBuffer buff = new StringBuffer(string.length()); for (int i = string.length() - 1; i >= 0 ; i--) { buff.append(string.charAt(i)); } return buff.toString(); } protected static String serializeReverse(Number num) { return reverse(serializeNumber(num)); } protected static Number deserializeReverse(String value) { return deserializeNumber(reverse(value)); } } libjibx-java-1.1.6a/build/test/simple/MyClass4Format.java0000644000175000017500000000040110071714446023123 0ustar moellermoeller package simple; class MyClass4Format { /*package*/ static String yesNoSerializer(boolean flag) { return flag ? "yes" : "no"; } /*package*/ static boolean yesNoDeserializer(String text) { return "yes".equals(text); } } libjibx-java-1.1.6a/build/test/simple/MyClass5.java0000644000175000017500000000665710425211274021770 0ustar moellermoeller package simple; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.ListIterator; import java.util.Set; import org.jibx.runtime.IUnmarshallingContext; public class MyClass5 { private ArrayList childs1; private ArrayList childs2; private ArrayList childs3; private Set altchilds2; private Set altchilds3; private void unmarshalDone() { for (int i = 0; i < childs1.size(); i++) { ((MyClass5a)childs1.get(i)).verify(); } if (childs2 != null) { for (int i = 0; i < childs2.size(); i++) { ((MyClass5a)childs2.get(i)).verify(); } } if (childs3 != null) { for (int i = 0; i < childs3.size(); i++) { ((MyClass5a)childs3.get(i)).verify(); } } } private static MyClass5a bFactory() { MyClass5b inst = new MyClass5b(); inst.factory = true; return inst; } private static MyClass5a cFactory(Object obj) { if (!(obj instanceof ArrayList)) { throw new IllegalStateException("factory called with wrong object"); } MyClass5c inst = new MyClass5c(); inst.factory = true; return inst; } private static MyClass5a dFactory(IUnmarshallingContext ctx) { if (!(ctx.getStackObject(1) instanceof MyClass5)) { throw new IllegalStateException("wrong object in stack"); } MyClass5d inst = new MyClass5d(); inst.factory = true; return inst; } private static Set setFactory() { return new OrderedSet(); } private static class OrderedSet implements Set { private final ArrayList list; private OrderedSet() { list = new ArrayList(); } private OrderedSet(OrderedSet original) { list = new ArrayList(original.list); } public boolean add(Object arg0) { return list.add(arg0); } public boolean addAll(Collection arg0) { return list.addAll(arg0); } public void clear() { list.clear(); } public Object clone() { return new OrderedSet(this); } public boolean contains(Object elem) { return list.contains(elem); } public boolean containsAll(Collection arg0) { return list.containsAll(arg0); } public boolean equals(Object o) { if (o instanceof OrderedSet) { return ((OrderedSet)o).list.equals(list); } else { return false; } } public int hashCode() { return list.hashCode(); } public boolean isEmpty() { return list.isEmpty(); } public Iterator iterator() { return list.iterator(); } public boolean remove(Object o) { return list.remove(o); } public boolean removeAll(Collection arg0) { return list.removeAll(arg0); } public boolean retainAll(Collection arg0) { return list.retainAll(arg0); } public int size() { return list.size(); } public Object[] toArray() { return list.toArray(); } public Object[] toArray(Object[] arg0) { return list.toArray(arg0); } public String toString() { return list.toString(); } } } libjibx-java-1.1.6a/build/test/simple/MyClass5a.java0000644000175000017500000000017510316003036022110 0ustar moellermoeller package simple; public class MyClass5a { protected int value; protected int altvalue; protected void verify() {} } libjibx-java-1.1.6a/build/test/simple/MyClass5b.java0000644000175000017500000000100410071714446022115 0ustar moellermoeller package simple; class MyClass5b extends MyClass5a { /*package*/ boolean factory; private boolean preset; private boolean postset; private int value; private void preset() { preset = true; value = 1; } private void postset() { postset = true; if (value == 2) { value = 3; } } private void preget() { value = 2; } protected void verify() { if (!factory || !preset || !postset) { throw new IllegalStateException ("factory, pre-set, or post-set method not called"); } } } libjibx-java-1.1.6a/build/test/simple/MyClass5c.java0000644000175000017500000000162210071714446022124 0ustar moellermoeller package simple; import java.util.ArrayList; class MyClass5c extends MyClass5a { /*package*/ boolean factory; private boolean preset; private boolean postset; private int value; private void preset(Object obj) { if (!(obj instanceof ArrayList)) { throw new IllegalStateException("factory called with wrong object"); } preset = true; value = 1; } private void postset(Object obj) { if (!(obj instanceof ArrayList)) { throw new IllegalStateException("factory called with wrong object"); } postset = true; if (value == 2) { value = 3; } } private void preget(Object obj) { if (!(obj instanceof ArrayList)) { throw new IllegalStateException("factory called with wrong object"); } value = 2; } protected void verify() { if (!factory || !preset || !postset) { throw new IllegalStateException ("factory, pre-set, or post-set method not called"); } } } libjibx-java-1.1.6a/build/test/simple/MyClass5d.java0000644000175000017500000000305110316003036022107 0ustar moellermoeller package simple; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.ITrackSource; import org.jibx.runtime.IUnmarshallingContext; class MyClass5d extends MyClass5a { /*package*/ boolean factory; private boolean preset; private boolean postset; private String text1; private String text2; private void preset(IUnmarshallingContext ctx) { if (!(ctx.getStackObject(1) instanceof MyClass5)) { throw new IllegalStateException("wrong object in stack: " + ctx.getStackObject(1).getClass().getName()); } preset = true; value = 1; } private void postset(IUnmarshallingContext ctx) { if (!(ctx.getStackObject(1) instanceof MyClass5)) { throw new IllegalStateException("wrong object in stack: " + ctx.getStackObject(1).getClass().getName()); } postset = true; if (value == 2) { value = 3; } } private void preget(IMarshallingContext ctx) { if (!(ctx.getStackObject(1) instanceof MyClass5)) { throw new IllegalStateException("wrong object in stack: " + ctx.getStackObject(1).getClass().getName()); } value = 2; } protected void verify() { if (!factory || !preset || !postset) { throw new IllegalStateException ("factory, pre-set, or post-set method not called"); } ITrackSource track = (ITrackSource)this; System.out.println("Verified " + this.getClass().getName() + " from \"" + track.jibx_getDocumentName() + "\" (" + track.jibx_getLineNumber() + ":" + track.jibx_getColumnNumber() + ")"); } } libjibx-java-1.1.6a/build/test/simple/MyClass6.java0000644000175000017500000000167410231200704021752 0ustar moellermoeller package simple; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; class MyClass6 { private final List ints = new ArrayList(); private final List strings = new ArrayList(); private byte a; private boolean b; public static ArrayList createList() { throw new IllegalStateException ("Factory method should never be called"); } protected void setInts(final List list) { if (list != ints) { throw new IllegalStateException ("Set method called with different list object"); } } private boolean isPresent() { return ints.size() > 0; } private Iterator intsIterator() { return ints.iterator(); } private void addInt(Object o) { ints.add((Integer)o); } private void addString(Object o) { strings.add((String)o); } } libjibx-java-1.1.6a/build/test/simple/MyClass7.java0000644000175000017500000000037510524454444021771 0ustar moellermoeller package simple; import java.util.List; class MyClass7 { private List list; private Object[] array; private String[] array2; private int[][] array3; private long[][] array4; private double[][] array5; private List list2; } libjibx-java-1.1.6a/build/test/simple/Name.java0000644000175000017500000000334210447004420021171 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; public class Name { /*package*/ Name() {} public String firstName; public String lastName; private void setFirst(String name) { firstName = name; } private void setLast(String name) { lastName = name; } } libjibx-java-1.1.6a/build/test/simple/NameExtended.java0000644000175000017500000000304410316003036022646 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; public class NameExtended extends Name { public String ssn; } libjibx-java-1.1.6a/build/test/simple/NameMarshaller.java0000644000175000017500000000452310257173436023223 0ustar moellermoeller/* Copyright (c) 2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; import org.jibx.runtime.IMarshaller; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.MarshallingContext; public class NameMarshaller implements IMarshaller { /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#isExtension(int) */ public boolean isExtension(int index) { return false; } /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#marshal(java.lang.Object, org.jibx.runtime.IMarshallingContext) */ public void marshal(Object obj, IMarshallingContext ictx) throws JiBXException { MarshallingContext ctx = (MarshallingContext)ictx; Name name = (Name)obj; ctx.startTag(0, "name"); ctx.element(0, "first-name", name.firstName); ctx.element(0, "last-name", name.lastName); ctx.endTag(0, "name"); } }libjibx-java-1.1.6a/build/test/simple/NamePrivate.java0000644000175000017500000000312210330637714022531 0ustar moellermoeller/* Copyright (c) 2003, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; public class NamePrivate { private NamePrivate() {} public String firstName; public String lastName; } libjibx-java-1.1.6a/build/test/simple/NameUnmarshaller.java0000644000175000017500000000511010316003036023537 0ustar moellermoeller/* Copyright (c) 2005, Dennis M. Sosnoski 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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package simple; import org.jibx.runtime.IUnmarshaller; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.UnmarshallingContext; public class NameUnmarshaller implements IUnmarshaller { /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#isPresent(org.jibx.runtime.IUnmarshallingContext) */ public boolean isPresent(IUnmarshallingContext ctx) throws JiBXException { return ctx.isAt(null, "name"); } /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#unmarshal(java.lang.Object, org.jibx.runtime.IUnmarshallingContext) */ public Object unmarshal(Object obj, IUnmarshallingContext ictx) throws JiBXException { UnmarshallingContext ctx = (UnmarshallingContext)ictx; Name name = (Name)obj; if (name == null) { name = new Name(); } ctx.parsePastStartTag(null, "name"); name.firstName = ctx.parseElementText(null, "first-name"); name.lastName = ctx.parseElementText(null, "last-name"); ctx.parsePastEndTag(null, "name"); return name; } }libjibx-java-1.1.6a/build/test/simple/Person10.java0000644000175000017500000000016710311010000021677 0ustar moellermoellerpackage simple; public class Person10 extends Identity10 { public String firstName; public String lastName; } libjibx-java-1.1.6a/build/test/simple/Subscriber9.java0000644000175000017500000000014710311010000022462 0ustar moellermoellerpackage simple; public class Subscriber9 { public String name; public Address9 mailAddress; } libjibx-java-1.1.6a/build/test/simple/binding0.xml0000644000175000017500000000067310071714446021677 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding0a.xml0000644000175000017500000000122410447004252022023 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding0b.xml0000644000175000017500000000071410435066032022030 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding0c.xml0000644000175000017500000000102210435066032022022 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding0d.xml0000644000175000017500000000101610435066032022026 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding1.xml0000644000175000017500000000065610435065660021702 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding10.xml0000644000175000017500000000205310330637714021752 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding1a.xml0000644000175000017500000000110210217763156022031 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding1b.xml0000644000175000017500000000067610434546306022046 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding2.xml0000644000175000017500000000127710071714446021702 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding2a.xml0000644000175000017500000000204310425211274022025 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding2b.xml0000644000175000017500000000143310434347154022037 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding2c.xml0000644000175000017500000000132010524445116022030 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding3.xml0000644000175000017500000000160310264375570021701 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding3a.xml0000644000175000017500000000133010071714446022032 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding3b.xml0000644000175000017500000000136510264375570022050 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding3d.xml0000644000175000017500000000131310264375570022043 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding3e.xml0000644000175000017500000000166510330637714022051 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding4.xml0000644000175000017500000000120110071714446021667 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding4a.xml0000644000175000017500000000123710071714446022041 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding4b.xml0000644000175000017500000000130410221341134022020 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding4c.xml0000644000175000017500000000126310221341134022025 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding4d.xml0000644000175000017500000000121010434261270022026 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding4e.xml0000644000175000017500000000120310435066032022031 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding5.xml0000644000175000017500000000424110305515602021670 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding5a.xml0000644000175000017500000000454410305515602022037 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding5b.xml0000644000175000017500000000406510305515602022036 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding5c.xml0000644000175000017500000000522210602647376022051 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding5d.xml0000644000175000017500000000507510330637714022051 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding5e.xml0000644000175000017500000000467310330637714022055 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding5f.xml0000644000175000017500000000417310334452106022043 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding5g.xml0000644000175000017500000000522310425211274022041 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding6.xml0000644000175000017500000000376510071714452021707 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding6a.xml0000644000175000017500000000410610264375570022046 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding6b.xml0000644000175000017500000000466711005500010022030 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding6c.xml0000644000175000017500000000455011005500010022020 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding7.xml0000644000175000017500000000250010425211274021667 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding7a.xml0000644000175000017500000000213210756367204022045 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding7b.xml0000644000175000017500000000230610257173436022047 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding8.xml0000644000175000017500000000244310222704776021707 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding8a.xml0000644000175000017500000000335110222704776022047 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding8b.xml0000644000175000017500000000332610221061172022033 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding8c.xml0000644000175000017500000000341410257173436022052 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding8d.xml0000644000175000017500000000376510257173436022064 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding9.xml0000644000175000017500000000257210311010000021654 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/binding9d.xml0000644000175000017500000000312210541617520022041 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mybinding.xml0000644000175000017500000000047110071714452022156 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mybinding1.xml0000644000175000017500000000162710434261270022241 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mybinding2.xml0000644000175000017500000000261110230703350022226 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mybinding2a.xml0000644000175000017500000000264410425211274022402 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mybinding2b.xml0000644000175000017500000000256010230703350022373 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mybinding2c.xml0000644000175000017500000000252210272065366022410 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mybinding3.xml0000644000175000017500000000222110434261270022232 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mybinding3a.xml0000644000175000017500000000222710434261270022401 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mybinding3b.xml0000644000175000017500000000173610434261270022406 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mybinding3c.xml0000644000175000017500000000214410434261270022401 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mybinding3d.xml0000644000175000017500000000221610434261270022402 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mybinding3e.xml0000644000175000017500000000175010434261270022405 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mybinding3f.xml0000644000175000017500000000175510434261270022413 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mybinding3g.xml0000644000175000017500000000205710435545616022422 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mybinding3h.xml0000644000175000017500000000206210435545616022417 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mybinding4.xml0000644000175000017500000000473010240174212022234 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mybinding4a.xml0000644000175000017500000000455410305475730022414 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mybinding4b.xml0000644000175000017500000000470010330637714022406 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mybinding4c.xml0000644000175000017500000000535010435141302022376 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mybinding5.xml0000644000175000017500000000205210425211274022235 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mybinding5a.xml0000644000175000017500000000205510677535700022415 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mybinding5b.xml0000644000175000017500000000205210425211274022377 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mybinding6.xml0000644000175000017500000000067210071714452022247 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mybinding6a.xml0000644000175000017500000000123610264375570022415 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mybinding6b.xml0000644000175000017500000000123210264375570022412 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mybinding7.xml0000644000175000017500000000112110263166470022242 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mybinding7a.xml0000644000175000017500000000102210263166470022403 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mybinding7b.xml0000644000175000017500000000135410330637714022413 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mybinding7c.xml0000644000175000017500000000156310434347154022417 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mybinding7d.xml0000644000175000017500000000264310752662354022425 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mytest.xml0000644000175000017500000000023110071714452021515 0ustar moellermoeller 42 The Answer 1 2 3 1234567890 libjibx-java-1.1.6a/build/test/simple/mytest1.xml0000644000175000017500000000043510434261270021602 0ustar moellermoeller 42 <![CDATAThe Answer]]> 22 33 1 2 3 1234567890 libjibx-java-1.1.6a/build/test/simple/mytest2.xml0000644000175000017500000000044610272065366021615 0ustar moellermoeller 12345678 22 33 1 2 3 4567890 libjibx-java-1.1.6a/build/test/simple/mytest2a.xml0000644000175000017500000000017410337570716021756 0ustar moellermoeller12345678 libjibx-java-1.1.6a/build/test/simple/mytest3.xml0000644000175000017500000000047510071714452021612 0ustar moellermoeller 42 The Answer 1.234134 true 22 33 1 2 3 1234567890 libjibx-java-1.1.6a/build/test/simple/mytest3a.xml0000644000175000017500000000032310071714452021743 0ustar moellermoeller 55 true 1 2 3 1234567890 libjibx-java-1.1.6a/build/test/simple/mytest3b.xml0000644000175000017500000000032310071714452021744 0ustar moellermoeller true 55 1 2 3 1234567890 libjibx-java-1.1.6a/build/test/simple/mytest3c.xml0000644000175000017500000000230610263166550021753 0ustar moellermoeller The Answer 22 33 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 libjibx-java-1.1.6a/build/test/simple/mytest3d.xml0000644000175000017500000000023710331457526021757 0ustar moellermoeller The Answer 22 33 libjibx-java-1.1.6a/build/test/simple/mytest3e.xml0000644000175000017500000000037710331641174021757 0ustar moellermoeller The Answer 22 33 1 2 3 1234567890 libjibx-java-1.1.6a/build/test/simple/mytest3f.xml0000644000175000017500000000074510435545616021770 0ustar moellermoeller The Answer 1.234134 42 true all my content 33 all my content 22 all my content 1 2 3 1234567890 libjibx-java-1.1.6a/build/test/simple/mytest3g.xml0000644000175000017500000000105210435545616021761 0ustar moellermoeller false 4.88 The Wrong Answer The Answer 1.234134 true 42 -1 all my content 33 all my content 22 all my content 1 2 3 1234567890 libjibx-java-1.1.6a/build/test/simple/mytest4.xml0000644000175000017500000000053510435141302021600 0ustar moellermoeller42The Answer1.234134 123 456 5 8 a

2004-06-30

abcd 1 2 3 123456789 abc def
libjibx-java-1.1.6a/build/test/simple/mytest4a.xml0000644000175000017500000000046510222704776021761 0ustar moellermoeller42The Answer1.234134 123 456 d2hhdCB3aWxsIHByaW50IG91dA== -25 # 1 2 3 1234567890 abc def libjibx-java-1.1.6a/build/test/simple/mytest4b.xml0000644000175000017500000000060510222704776021756 0ustar moellermoeller42The Answer1.234134 123 456 this is bold text]]> d2hhdCAgd2lsbCAgIHByaW50ICAgICBvdXQgICAgICAa 127 < abcd 1 2 3 1234567890 abc def libjibx-java-1.1.6a/build/test/simple/mytest4c.xml0000644000175000017500000000063610305475730021760 0ustar moellermoeller42The Answer1.234134 123 456 this is bold text]]> d2hhdCAgd2lsbCAgIHByaW50ICAgICBvdXQgICAgICAa 127 < abcd first 1 3 1234567890 abc 2 def libjibx-java-1.1.6a/build/test/simple/mytest4d.xml0000644000175000017500000000054010435141302021740 0ustar moellermoeller42The Answer1.234134 123 456 50 8 a

2004-06-30

abcd 1 12 03 012345678 abc def
libjibx-java-1.1.6a/build/test/simple/mytest5.xml0000644000175000017500000000014310222705000021567 0ustar moellermoeller efgh libjibx-java-1.1.6a/build/test/simple/mytest5a.xml0000644000175000017500000000070510316003036021740 0ustar moellermoeller 1111 22 3333 444 555555 66 libjibx-java-1.1.6a/build/test/simple/mytest5b.xml0000644000175000017500000000071210316003036021737 0ustar moellermoeller 1111 22 3333 444 555555 66 libjibx-java-1.1.6a/build/test/simple/mytest6.xml0000644000175000017500000000005210071714452021604 0ustar moellermoeller libjibx-java-1.1.6a/build/test/simple/mytest6a.xml0000644000175000017500000000015710071714452021753 0ustar moellermoeller 1 2 3 1234567890 libjibx-java-1.1.6a/build/test/simple/mytest6b.xml0000644000175000017500000000032510071714452021751 0ustar moellermoeller 1 2 3 1234567890 this is a test so is this this is not a test libjibx-java-1.1.6a/build/test/simple/mytest6c.xml0000644000175000017500000000032510071714452021752 0ustar moellermoeller this is a test so is this this is not a test 1 2 3 1234567890 libjibx-java-1.1.6a/build/test/simple/mytest7.xml0000644000175000017500000000107610263166550021617 0ustar moellermoeller 7 6 5 4 3 2 1 this is a test so is this this is not a test some more test testing, testing, testing to test or not to test, that is the question 1 2 3 4 5 libjibx-java-1.1.6a/build/test/simple/mytest7a.xml0000644000175000017500000000157610434347154021766 0ustar moellermoeller xxxx 7 so is this 6 5 4 with multiple children 3 2 1 this is a test so is this this is not a test some more test 2 testing, testing, testing to test or not to test, that is the question 1 2 so is this 3 4 5 libjibx-java-1.1.6a/build/test/simple/mytest7b.xml0000644000175000017500000000131710434546306021760 0ustar moellermoeller 7 6 4 3 2 this is a test so is this this is not a test some more test testing, testing, testing to test or not to test, that is the question 3 4 5 libjibx-java-1.1.6a/build/test/simple/mytest7c.xml0000644000175000017500000000270610524454344021764 0ustar moellermoeller 7 6 4 3 2 this is a test so is this this is not a test some more test testing, testing, testing to test or not to test, that is the question 3 4 5 42 73 72653 -1 0 1 42 73 72653 -1 0 1 42.5 73.0 72653.0 -1.5 0.5 1.0 libjibx-java-1.1.6a/build/test/simple/simple.xml0000644000175000017500000000035510071714452021470 0ustar moellermoeller John Smith 12345 Happy Lane Plunk WA 98059 888.555.1234 libjibx-java-1.1.6a/build/test/simple/simple0a.xml0000644000175000017500000000035310240174212021677 0ustar moellermoeller John 12345 Happy Lane Plunk WA 98059 888.555.1234 Smith libjibx-java-1.1.6a/build/test/simple/simple0b.xml0000644000175000017500000000034610435066032021710 0ustar moellermoeller 12345 Happy Lane Plunk WA 98059 888.555.1234 libjibx-java-1.1.6a/build/test/simple/simple0c.xml0000644000175000017500000000022710435066032021707 0ustar moellermoeller 12345 Happy Lane Plunk WA 98059 888.555.1234 libjibx-java-1.1.6a/build/test/simple/simple1.xml0000644000175000017500000000046310074705504021552 0ustar moellermoeller Émile Poincaré rte st Antoine de Ginestière’ Paris FR 98059 01 44 27 67 93 libjibx-java-1.1.6a/build/test/simple/simple10.xml0000644000175000017500000000042210311010000021573 0ustar moellermoeller 123456789 John Smith 12345 Happy Lane Plunk WA 98059 888.555.1234 libjibx-java-1.1.6a/build/test/simple/simple10a.xml0000644000175000017500000000043010311010000021733 0ustar moellermoeller John Smith Enterprises 91-234851 311233459 12345 Happy Lane Plunk WA 98059 888.555.1234 libjibx-java-1.1.6a/build/test/simple/simple1a.xml0000644000175000017500000000030610217763160021710 0ustar moellermoeller 14618 NE 80th Pl. Redmond WA 98052 425 885 7197 libjibx-java-1.1.6a/build/test/simple/simple1b.xml0000644000175000017500000000037510217763160021717 0ustar moellermoeller Sosnoski 14618 NE 80th Pl. Redmond WA 98052 425 885 7197 libjibx-java-1.1.6a/build/test/simple/simple1c.xml0000644000175000017500000000052410434546306021716 0ustar moellermoeller Sosnoski 14618 NE 80th Pl. Redmond WA 98052 425 885 7197 libjibx-java-1.1.6a/build/test/simple/simple2.xml0000644000175000017500000000045110074705504021550 0ustar moellermoeller Émile Poincaré rte st Antoine de Ginestière Paris FR 98059 01 44 27 67 93 libjibx-java-1.1.6a/build/test/simple/simple2a.xml0000644000175000017500000000075210231200704021700 0ustar moellermoellerÿþ<?xml version="1.0" encoding="UTF-16"?> <customer> <name> <first-name>John</first-name> </name> <street1>12345 Happy Lane</street1> <city>Plunk</city> <state>WA</state> <zip>98059</zip> <phone>888.555.1234</phone> </customer> libjibx-java-1.1.6a/build/test/simple/simple2b.xml0000644000175000017500000000046010231200704021675 0ustar moellermoellerÿþ<customer> <street1>12345 Happy Lane</street1> <city>Plunk</city> <state>WA</state> <zip>98059</zip> <phone>888.555.1234</phone> </customer> libjibx-java-1.1.6a/build/test/simple/simple2c.xml0000644000175000017500000000053010172154762021714 0ustar moellermoeller Émile Poincaré rte st Antoine de Ginestière Paris FR 98059 01 44 27 67 93 libjibx-java-1.1.6a/build/test/simple/simple2d.xml0000644000175000017500000000120610434347154021716 0ustar moellermoeller Poincaré Anything at all Émile with multiple children rte st Antoine de Ginestière Paris FR 98059 01 44 27 67 93 libjibx-java-1.1.6a/build/test/simple/simple3.xml0000644000175000017500000000107310071714452021551 0ustar moellermoeller John Smith 12345 Happy Lane Plunk WA 98059 888.555.1234 Mary Smith 12345 Happy Lane Plunk WA 98059 888.555.4321 N313414 N314566 N418833 libjibx-java-1.1.6a/build/test/simple/simple3b.xml0000644000175000017500000000113010257173436021714 0ustar moellermoeller John Smith 12345 Happy Lane Plunk WA 98059 888.555.1234 Mary Smith 12345 Happy Lane Plunk WA 888.555.4321 N313414 N314566 N418833 libjibx-java-1.1.6a/build/test/simple/simple3c.xml0000644000175000017500000000107010330637714021714 0ustar moellermoeller John Smith 12345 Happy Lane Plunk WA 98059 888.555.1234 Mary Smith 12345 Happy Lane Plunk WA 98059 888.555.4321 libjibx-java-1.1.6a/build/test/simple/simple3d.xml0000644000175000017500000000063310071714452021716 0ustar moellermoeller John 12345 Happy Lane Plunk WA 98059 888.555.1234 12345 Happy Lane Plunk WA 98059 888.555.4321 N313414 N314566 N418833 libjibx-java-1.1.6a/build/test/simple/simple4.xml0000644000175000017500000000136610071714452021557 0ustar moellermoeller John Smith 12345 Happy Lane Plunk WA 98059 888.555.1234 Mary Smith 12345 Happy Lane Plunk WA 98059 888.555.4321 Larry Adams 12345 Plunket Lane Happy WA 98095 888.555.1234 libjibx-java-1.1.6a/build/test/simple/simple4a.xml0000644000175000017500000000136610071714452021720 0ustar moellermoeller Smith John 12345 Happy Lane Plunk WA 98059 888.555.1234 Mary Smith 12345 Happy Lane Plunk WA 98059 888.555.4321 Adams Larry 12345 Plunket Lane Happy WA 98095 888.555.1234 libjibx-java-1.1.6a/build/test/simple/simple4b.xml0000644000175000017500000000110710221341134021700 0ustar moellermoeller Smith 12345 Happy Lane Plunk WA 98059 888.555.1234 Smith 12345 Happy Lane Plunk WA 98059 888.555.4321 12345 Plunket Lane Happy WA 98095 888.555.1234 libjibx-java-1.1.6a/build/test/simple/simple4c.xml0000644000175000017500000000113210221341134021677 0ustar moellermoeller Smith 12345 Happy Lane Plunk WA 98059 888.555.1234 Smith 12345 Happy Lane Plunk WA 98059 888.555.4321 12345 Plunket Lane Happy WA 98095 888.555.1234 libjibx-java-1.1.6a/build/test/simple/simple4d.xml0000644000175000017500000000173411010027232021705 0ustar moellermoeller Adam Smith John 12345 Happy Lane Plunk WA 98059 888.555.1234 Doctor Mary Smith Anne 12345 Happy Lane Plunk WA 98059 888.555.4321 Jr. Adams Larry <form>Honorary</form> <type>Ph.D.</type> Doctor 12345 Plunket Lane Happy WA 98095 888.555.1234 libjibx-java-1.1.6a/build/test/simple/simple4e.xml0000644000175000017500000000154610435066032021722 0ustar moellermoeller John Smith 12345 Happy Lane Plunk WA 98059 888.555.1234 Mary Smith 12345 Happy Lane Plunk WA 98059 888.555.4321 Larry Adams 12345 Plunket Lane Happy WA 98095 888.555.1234 libjibx-java-1.1.6a/build/test/simple/simple5.xml0000644000175000017500000000244210305515602021550 0ustar moellermoeller John Smith 12345 Happy Lane Plunk WA 98059 888.555.1234 A Mary Smith 12345 Happy Lane Plunk WA 98059 888.555.4321 Mary Lamb 333 Fleece St. Highlant WA 98088 888.555.8321 Larry Adams 12345 Plunket Lane Happy WA 98095 888.555.9999 A 5 libjibx-java-1.1.6a/build/test/simple/simple5a.xml0000644000175000017500000000223410305515602021710 0ustar moellermoeller John Smith 12345 Happy Lane Plunk WA 98059 888.555.1234 Mary Smith 12345 Happy Lane Plunk WA 98059 888.555.4321 Mary Lamb 333 Fleece St. Highlant WA 98088 888.555.8321 Larry Adams 12345 Plunket Lane Happy WA 98095 888.555.9999 5 libjibx-java-1.1.6a/build/test/simple/simple5b.xml0000644000175000017500000000261710316003036021711 0ustar moellermoeller John Smith 12345 Happy Lane Plunk WA 98059 888.555.1234 A Mary Smith 12345 Happy Lane Plunk WA 98059 888.555.4321 Mary Lamb 333 Fleece St. Highlant WA 98088 888.555.8321 Larry Adams 12345 Plunket Lane Happy WA 98095 888.555.9999 A 5 libjibx-java-1.1.6a/build/test/simple/simple5c.xml0000644000175000017500000000304710425211274021716 0ustar moellermoeller John Smith 12345 Happy Lane Plunk WA 98059 888.555.1234 A Mary Smith 12345 Happy Lane Plunk WA 98059 888.555.4321 Mary Lamb 333 Fleece St. Highlant WA 98088 888.555.8321 Larry Adams 12345 Plunket Lane Happy WA 98095 888.555.9999 A 5 libjibx-java-1.1.6a/build/test/simple/simple5d.xml0000644000175000017500000000261710602647376021736 0ustar moellermoeller John Smith 12345 Happy Lane Plunk WA 98059 888.555.1234 A Mary Smith 12345 Happy Lane Plunk WA 98059 888.555.4321 Larry Adams 12345 Plunket Lane Happy WA 98095 888.555.9999 A 5 Mary Lamb 333 Fleece St. Highlant WA 98088 888.555.8321 libjibx-java-1.1.6a/build/test/simple/simple6.xml0000644000175000017500000000213610071714452021555 0ustar moellermoeller 4 12345 12345 Happy Lane Plunk 3 83838 12345 Happy Lane Plunk 12346 12345 Plunket Lane Happy 4 83222 12345 Plunket Lane Happy 2 libjibx-java-1.1.6a/build/test/simple/simple6a.xml0000644000175000017500000000116510257173436021726 0ustar moellermoeller 4 12346 4 83222 2 libjibx-java-1.1.6a/build/test/simple/simple6b.xml0000644000175000017500000000163110410214130021677 0ustar moellermoeller 4 12346 4 83222 2 libjibx-java-1.1.6a/build/test/simple/simple7.xml0000644000175000017500000000074110071714452021556 0ustar moellermoeller 3 12345 Happy Lane Plunk 12345 Happy Lane Plunk 12345 Plunket Lane Happy libjibx-java-1.1.6a/build/test/simple/simple7a.xml0000644000175000017500000000005410071714452021714 0ustar moellermoeller 0 libjibx-java-1.1.6a/build/test/simple/simple8.xml0000644000175000017500000000230310217763160021555 0ustar moellermoeller John Smith 12345 Happy Lane Plunk WA 98022 Mary Smith 12345 Happy Lane Plunk WA 98022 Larry Adams 12345 Plunket Lane Happy WA 98095 Gary Adams 12345 Plunket Lane Happy WA 98095 libjibx-java-1.1.6a/build/test/simple/simple8a.xml0000644000175000017500000000033510217763160021721 0ustar moellermoeller John Smith 12345 Happy Lane Plunk WA 98059 libjibx-java-1.1.6a/build/test/simple/simple8b.xml0000644000175000017500000000042010217763160021715 0ustar moellermoeller John Smith 12345 Happy Lane Plunk WA 98059 libjibx-java-1.1.6a/build/test/simple/simple8d.xml0000644000175000017500000000211510221061172021707 0ustar moellermoeller John Smith 12345 Happy Lane Plunk WA 98022 Mary Smith 12345 Happy Lane Plunk WA 98022 Larry Adams 12345 Plunket Lane Happy WA 98095 Gary Adams 12345 Plunket Lane Happy WA 98095 libjibx-java-1.1.6a/build/test/simple/simple9.xml0000644000175000017500000000031610311010000021525 0ustar moellermoeller Smith 12345 Happy Lane Plunk WA 888.555.1234 libjibx-java-1.1.6a/build/test/simple/simple9a.xml0000644000175000017500000000020510311010000021663 0ustar moellermoeller John Smith
12345 Happy Lane
libjibx-java-1.1.6a/build/test/simple/simple9b.xml0000644000175000017500000000052010311010000021664 0ustar moellermoeller Smith 12345 Happy Lane Plunk WA 54321 Happy Lane Plunk WA 888.555.1234 libjibx-java-1.1.6a/build/test/simple/simple9c.xml0000644000175000017500000000036710311010000021676 0ustar moellermoeller Smith 54321 Happy Lane Plunk WA 888.555.1234 libjibx-java-1.1.6a/build/test/simple/simple9d.xml0000644000175000017500000000044510541617520021725 0ustar moellermoeller Smith 54321 Happy Lane Plunk WA 888.555.1234 libjibx-java-1.1.6a/build/test/simple/simple9e.xml0000644000175000017500000000063410541617520021726 0ustar moellermoeller Smith 12345 Happy Lane Plunk WA 54321 Happy Lane Plunk WA 888.555.1234 libjibx-java-1.1.6a/build/test/binding5b-include1.xml0000644000175000017500000000156510257173436022264 0ustar moellermoeller libjibx-java-1.1.6a/build/build-binding.xml0000644000175000017500000000305011017732752020435 0ustar moellermoeller libjibx-java-1.1.6a/build/build.xml0000644000175000017500000016521411023034406017024 0ustar moellermoeller <table width='80%%'><tr><td width='50%%'><p align='center'><a href='http://www.jibx.org/' target='_top'><font size='3'><b>Project Web Site</b></font></a></td><td width='50%%'><p align='center'></td></tr></table> <table width='80%%'><tr><td width='50%%'><p align='center'><a href='http://www.jibx.org/' target='_top'><font size='3'><b>Project Web Site</b></font></a></td><td width='50%%'><p align='center'></td></tr></table> libjibx-java-1.1.6a/docs/0000755000175000017500000000000011023035700015021 5ustar moellermoellerlibjibx-java-1.1.6a/docs/api/0000755000175000017500000000000011023035704015576 5ustar moellermoellerlibjibx-java-1.1.6a/docs/api/org/0000755000175000017500000000000011023035702016363 5ustar moellermoellerlibjibx-java-1.1.6a/docs/api/org/jibx/0000755000175000017500000000000011023035704017321 5ustar moellermoellerlibjibx-java-1.1.6a/docs/api/org/jibx/extras/0000755000175000017500000000000011023035704020627 5ustar moellermoellerlibjibx-java-1.1.6a/docs/api/org/jibx/extras/BindingSelector.html0000644000175000017500000003561211023035704024577 0ustar moellermoeller BindingSelector (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.extras
Class BindingSelector

java.lang.Object
  extended by org.jibx.extras.BindingSelector

public class BindingSelector
extends java.lang.Object

Binding selector that supports versioned XML documents. This looks for a version attribute on the root element of the document, and selects the mapping to be used for unmarshalling based on the value. It also supports selecting the version for marshalling based on a supplied version argument value.

Version:
1.0
Author:
Dennis M. Sosnoski

Constructor Summary
BindingSelector(java.lang.String uri, java.lang.String name, java.lang.String[] versions, java.lang.String[] bindings)
          Constructor.
 
Method Summary
 IUnmarshallingContext getContext()
          Get initial unmarshalling context.
 void marshalVersioned(java.lang.Object obj, java.lang.String version)
          Marshal according to supplied version.
 void setIndent(int indent)
          Set nesting indent spaces.
 void setOutput(java.io.OutputStream outs, java.lang.String enc)
          Set output stream and encoding.
 void setOutput(java.io.Writer outw)
          Set output writer.
 java.lang.Object unmarshalVersioned(java.lang.Class clas)
          Unmarshal according to document version.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BindingSelector

public BindingSelector(java.lang.String uri,
                       java.lang.String name,
                       java.lang.String[] versions,
                       java.lang.String[] bindings)
Constructor.

Parameters:
uri - version selection attribute URI (null if none)
name - version selection attribute name
versions - array of version texts (first is default)
bindings - array of binding names corresponding to versions
Method Detail

getContext

public IUnmarshallingContext getContext()
Get initial unmarshalling context. This gives access to the unmarshalling context used before the specific version is determined. The document information must be set for this context before calling unmarshalVersioned(java.lang.Class).

Returns:
initial unmarshalling context

setOutput

public void setOutput(java.io.OutputStream outs,
                      java.lang.String enc)
Set output stream and encoding.

Parameters:
outs - stream for document data output
enc - document output encoding, or null for default

setOutput

public void setOutput(java.io.Writer outw)
Set output writer.

Parameters:
outw - writer for document data output

setIndent

public void setIndent(int indent)
Set nesting indent spaces.

Parameters:
indent - number of spaces to indent per level, or disable indentation if negative

marshalVersioned

public void marshalVersioned(java.lang.Object obj,
                             java.lang.String version)
                      throws JiBXException
Marshal according to supplied version.

Parameters:
obj - root object to be marshalled
version - identifier for version to be used in marshalling
Throws:
JiBXException - if error in marshalling

unmarshalVersioned

public java.lang.Object unmarshalVersioned(java.lang.Class clas)
                                    throws JiBXException
Unmarshal according to document version.

Parameters:
clas - expected class mapped to root element of document (used only to look up the binding)
Returns:
root object unmarshalled from document
Throws:
JiBXException - if error in unmarshalling


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/extras/DiscardElementMapper.html0000644000175000017500000004107711023035704025556 0ustar moellermoeller DiscardElementMapper (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.extras
Class DiscardElementMapper

java.lang.Object
  extended by org.jibx.extras.DiscardElementMapper
All Implemented Interfaces:
IMarshaller, IUnmarshaller

public class DiscardElementMapper
extends java.lang.Object
implements IMarshaller, IUnmarshaller

Custom marshaller/unmarshaller for arbitrary ignored element. This ignores an element when unmarshalling, if one is present, and does nothing when marshalling.

Version:
1.0
Author:
Dennis M. Sosnoski

Constructor Summary
DiscardElementMapper()
           
 
Method Summary
 boolean isExtension(int index)
          Check if marshaller represents an extension mapping.
 boolean isPresent(IUnmarshallingContext ctx)
          Check if instance present in XML.
 void marshal(java.lang.Object obj, IMarshallingContext ictx)
          Marshal instance of handled class.
 java.lang.Object unmarshal(java.lang.Object obj, IUnmarshallingContext ictx)
          Unmarshal instance of handled class.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DiscardElementMapper

public DiscardElementMapper()
Method Detail

isExtension

public boolean isExtension(int index)
Description copied from interface: IMarshaller
Check if marshaller represents an extension mapping. This is used by the framework in generated code to verify compatibility of objects being marshalled using an abstract mapping.

Specified by:
isExtension in interface IMarshaller
Parameters:
index - abstract mapping index to be checked
Returns:
true if this mapping is an extension of the abstract mapping, false if not

marshal

public void marshal(java.lang.Object obj,
                    IMarshallingContext ictx)
Description copied from interface: IMarshaller
Marshal instance of handled class. This method call is responsible for all handling of the marshalling of an object to XML text. It is called at the point where the start tag for the associated element should be generated.

Specified by:
marshal in interface IMarshaller
Parameters:
obj - object to be marshalled (may be null if property is not optional)
ictx - XML text output context

isPresent

public boolean isPresent(IUnmarshallingContext ctx)
                  throws JiBXException
Description copied from interface: IUnmarshaller
Check if instance present in XML. This method can be called when the unmarshalling context is positioned at or just before the start of the data corresponding to an instance of this mapping. It verifies that the expected data is present.

Specified by:
isPresent in interface IUnmarshaller
Parameters:
ctx - unmarshalling context
Returns:
true if expected parse data found, false if not
Throws:
JiBXException - on error in unmarshalling process

unmarshal

public java.lang.Object unmarshal(java.lang.Object obj,
                                  IUnmarshallingContext ictx)
                           throws JiBXException
Description copied from interface: IUnmarshaller
Unmarshal instance of handled class. This method call is responsible for all handling of the unmarshalling of an object from XML text, including creating the instance of the handled class if an instance is not supplied. When it is called the unmarshalling context is always positioned at or just before the start tag corresponding to the start of the class data.

Specified by:
unmarshal in interface IUnmarshaller
Parameters:
obj - object to be unmarshalled (may be null)
ictx - unmarshalling context
Returns:
unmarshalled object (may be null)
Throws:
JiBXException - on error in unmarshalling process


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/extras/DiscardListMapper.html0000644000175000017500000004106611023035704025076 0ustar moellermoeller DiscardListMapper (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.extras
Class DiscardListMapper

java.lang.Object
  extended by org.jibx.extras.DiscardListMapper
All Implemented Interfaces:
IMarshaller, IUnmarshaller

public class DiscardListMapper
extends java.lang.Object
implements IMarshaller, IUnmarshaller

Custom marshaller/unmarshaller for arbitrary ignored content to end of element. This ignores all content to the end of the enclosing element when unmarshalling, and does nothing with marshalling.

Version:
1.0
Author:
Dennis M. Sosnoski

Constructor Summary
DiscardListMapper()
           
 
Method Summary
 boolean isExtension(int index)
          Check if marshaller represents an extension mapping.
 boolean isPresent(IUnmarshallingContext ctx)
          Check if instance present in XML.
 void marshal(java.lang.Object obj, IMarshallingContext ictx)
          Marshal instance of handled class.
 java.lang.Object unmarshal(java.lang.Object obj, IUnmarshallingContext ictx)
          Unmarshal instance of handled class.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DiscardListMapper

public DiscardListMapper()
Method Detail

isExtension

public boolean isExtension(int index)
Description copied from interface: IMarshaller
Check if marshaller represents an extension mapping. This is used by the framework in generated code to verify compatibility of objects being marshalled using an abstract mapping.

Specified by:
isExtension in interface IMarshaller
Parameters:
index - abstract mapping index to be checked
Returns:
true if this mapping is an extension of the abstract mapping, false if not

marshal

public void marshal(java.lang.Object obj,
                    IMarshallingContext ictx)
Description copied from interface: IMarshaller
Marshal instance of handled class. This method call is responsible for all handling of the marshalling of an object to XML text. It is called at the point where the start tag for the associated element should be generated.

Specified by:
marshal in interface IMarshaller
Parameters:
obj - object to be marshalled (may be null if property is not optional)
ictx - XML text output context

isPresent

public boolean isPresent(IUnmarshallingContext ctx)
                  throws JiBXException
Description copied from interface: IUnmarshaller
Check if instance present in XML. This method can be called when the unmarshalling context is positioned at or just before the start of the data corresponding to an instance of this mapping. It verifies that the expected data is present.

Specified by:
isPresent in interface IUnmarshaller
Parameters:
ctx - unmarshalling context
Returns:
true if expected parse data found, false if not
Throws:
JiBXException - on error in unmarshalling process

unmarshal

public java.lang.Object unmarshal(java.lang.Object obj,
                                  IUnmarshallingContext ictx)
                           throws JiBXException
Description copied from interface: IUnmarshaller
Unmarshal instance of handled class. This method call is responsible for all handling of the unmarshalling of an object from XML text, including creating the instance of the handled class if an instance is not supplied. When it is called the unmarshalling context is always positioned at or just before the start tag corresponding to the start of the class data.

Specified by:
unmarshal in interface IUnmarshaller
Parameters:
obj - object to be unmarshalled (may be null)
ictx - unmarshalling context
Returns:
unmarshalled object (may be null)
Throws:
JiBXException - on error in unmarshalling process


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/extras/DocumentComparator.html0000644000175000017500000002424711023035704025334 0ustar moellermoeller DocumentComparator (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.extras
Class DocumentComparator

java.lang.Object
  extended by org.jibx.extras.DocumentComparator

public class DocumentComparator
extends java.lang.Object

XML document comparator. This uses XMLPull parsers to read a pair of documents in parallel, comparing the streams of components seen from the two documents. The comparison ignores differences in whitespace separating elements, but treats whitespace as significant within elements with only character data content.

Author:
Dennis M. Sosnoski

Constructor Summary
DocumentComparator(java.io.PrintStream print)
          Constructor.
 
Method Summary
 boolean compare(java.io.Reader rdra, java.io.Reader rdrb)
          Compares a pair of documents by reading them in parallel from a pair of parsers.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DocumentComparator

public DocumentComparator(java.io.PrintStream print)
                   throws org.xmlpull.v1.XmlPullParserException
Constructor. Builds the actual parser.

Parameters:
print - print stream for reporting differences
Throws:
org.xmlpull.v1.XmlPullParserException - on error creating parsers
Method Detail

compare

public boolean compare(java.io.Reader rdra,
                       java.io.Reader rdrb)
Compares a pair of documents by reading them in parallel from a pair of parsers. The comparison ignores differences in whitespace separating elements, but treats whitespace as significant within elements with only character data content.

Parameters:
rdra - reader for first document to be compared
rdrb - reader for second document to be compared
Returns:
true if the documents are the same, false if they're different


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/extras/DocumentModelMapperBase.html0000644000175000017500000002520411023035704026217 0ustar moellermoeller DocumentModelMapperBase (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.extras
Class DocumentModelMapperBase

java.lang.Object
  extended by org.jibx.extras.DocumentModelMapperBase
Direct Known Subclasses:
Dom4JMapperBase, DomMapperBase

public class DocumentModelMapperBase
extends java.lang.Object

Base implementation for custom marshaller/unmarshallers to any document model representation. This class just provides a few basic operations that are used by the representation-specific subclasses.

Version:
1.0
Author:
Dennis M. Sosnoski

Field Summary
static java.lang.String XML_NAMESPACE
          Fixed XML namespace.
static java.lang.String XMLNS_NAMESPACE
          Fixed XML namespace namespace.
 
Constructor Summary
DocumentModelMapperBase()
           
 
Method Summary
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

XML_NAMESPACE

public static final java.lang.String XML_NAMESPACE
Fixed XML namespace.

See Also:
Constant Field Values

XMLNS_NAMESPACE

public static final java.lang.String XMLNS_NAMESPACE
Fixed XML namespace namespace.

See Also:
Constant Field Values
Constructor Detail

DocumentModelMapperBase

public DocumentModelMapperBase()


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/extras/Dom4JElementMapper.html0000644000175000017500000005047411023035704025123 0ustar moellermoeller Dom4JElementMapper (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.extras
Class Dom4JElementMapper

java.lang.Object
  extended by org.jibx.extras.DocumentModelMapperBase
      extended by org.jibx.extras.Dom4JMapperBase
          extended by org.jibx.extras.Dom4JElementMapper
All Implemented Interfaces:
IAliasable, IMarshaller, IUnmarshaller

public class Dom4JElementMapper
extends Dom4JMapperBase
implements IMarshaller, IUnmarshaller, IAliasable

Custom element marshaller/unmarshaller to dom4j representation. This allows you to mix data binding and document model representations for XML within the same application. You simply use this marshaller/unmarshaller with a linked object type of org.dom4j.Element (the actual runtime type - the declared type is ignored and can be anything). If a name is supplied on a reference that element name will always be matched when unmarshalling but will be ignored when marshalling (with the actual dom4j element name used). If no name is supplied this will unmarshal a single element with any name.

Version:
1.0
Author:
Dennis M. Sosnoski

Field Summary
 
Fields inherited from class org.jibx.extras.DocumentModelMapperBase
XML_NAMESPACE, XMLNS_NAMESPACE
 
Constructor Summary
Dom4JElementMapper()
          Default constructor.
Dom4JElementMapper(java.lang.String uri, int index, java.lang.String name)
          Aliased constructor.
 
Method Summary
 boolean isExtension(int index)
          Check if marshaller represents an extension mapping.
 boolean isPresent(IUnmarshallingContext ctx)
          Check if instance present in XML.
 void marshal(java.lang.Object obj, IMarshallingContext ictx)
          Marshal instance of handled class.
 java.lang.Object unmarshal(java.lang.Object obj, IUnmarshallingContext ictx)
          Unmarshal instance of handled class.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Dom4JElementMapper

public Dom4JElementMapper()
Default constructor.


Dom4JElementMapper

public Dom4JElementMapper(java.lang.String uri,
                          int index,
                          java.lang.String name)
Aliased constructor. This takes a name definition for the element. It'll be used by JiBX when a name is supplied by the mapping which references this custom marshaller/unmarshaller.

Parameters:
uri - namespace URI for the top-level element
index - namespace index corresponding to the defined URI within the marshalling context definitions
name - local name for the top-level element
Method Detail

isExtension

public boolean isExtension(int index)
Description copied from interface: IMarshaller
Check if marshaller represents an extension mapping. This is used by the framework in generated code to verify compatibility of objects being marshalled using an abstract mapping.

Specified by:
isExtension in interface IMarshaller
Parameters:
index - abstract mapping index to be checked
Returns:
true if this mapping is an extension of the abstract mapping, false if not

marshal

public void marshal(java.lang.Object obj,
                    IMarshallingContext ictx)
             throws JiBXException
Description copied from interface: IMarshaller
Marshal instance of handled class. This method call is responsible for all handling of the marshalling of an object to XML text. It is called at the point where the start tag for the associated element should be generated.

Specified by:
marshal in interface IMarshaller
Parameters:
obj - object to be marshalled (may be null if property is not optional)
ictx - XML text output context
Throws:
JiBXException - on error in marshalling process

isPresent

public boolean isPresent(IUnmarshallingContext ctx)
                  throws JiBXException
Description copied from interface: IUnmarshaller
Check if instance present in XML. This method can be called when the unmarshalling context is positioned at or just before the start of the data corresponding to an instance of this mapping. It verifies that the expected data is present.

Specified by:
isPresent in interface IUnmarshaller
Parameters:
ctx - unmarshalling context
Returns:
true if expected parse data found, false if not
Throws:
JiBXException - on error in unmarshalling process

unmarshal

public java.lang.Object unmarshal(java.lang.Object obj,
                                  IUnmarshallingContext ictx)
                           throws JiBXException
Description copied from interface: IUnmarshaller
Unmarshal instance of handled class. This method call is responsible for all handling of the unmarshalling of an object from XML text, including creating the instance of the handled class if an instance is not supplied. When it is called the unmarshalling context is always positioned at or just before the start tag corresponding to the start of the class data.

Specified by:
unmarshal in interface IUnmarshaller
Parameters:
obj - object to be unmarshalled (may be null)
ictx - unmarshalling context
Returns:
unmarshalled object (may be null)
Throws:
JiBXException - on error in unmarshalling process


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/extras/Dom4JListMapper.html0000644000175000017500000004562611023035704024450 0ustar moellermoeller Dom4JListMapper (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.extras
Class Dom4JListMapper

java.lang.Object
  extended by org.jibx.extras.DocumentModelMapperBase
      extended by org.jibx.extras.Dom4JMapperBase
          extended by org.jibx.extras.Dom4JListMapper
All Implemented Interfaces:
IMarshaller, IUnmarshaller

public class Dom4JListMapper
extends Dom4JMapperBase
implements IMarshaller, IUnmarshaller

Custom content list marshaller/unmarshaller to dom4j representation. This allows you to mix data binding and document model representations for XML within the same application. You simply use this marshaller/unmarshaller with a linked object type that implements java.util.List (the actual runtime type - the declared type is ignored and can be anything). When unmarshalling it will create an instance of java.util.ArrayList if a list is not passed in and any content is present, then return all the content up to the close tag for the enclosing element in the list. When marshalling, it will simply write out any content directly.

Version:
1.0
Author:
Dennis M. Sosnoski

Field Summary
 
Fields inherited from class org.jibx.extras.DocumentModelMapperBase
XML_NAMESPACE, XMLNS_NAMESPACE
 
Constructor Summary
Dom4JListMapper()
           
 
Method Summary
 boolean isExtension(int index)
          Check if marshaller represents an extension mapping.
 boolean isPresent(IUnmarshallingContext ctx)
          Check if instance present in XML.
 void marshal(java.lang.Object obj, IMarshallingContext ictx)
          Marshal instance of handled class.
 java.lang.Object unmarshal(java.lang.Object obj, IUnmarshallingContext ictx)
          Unmarshal instance of handled class.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Dom4JListMapper

public Dom4JListMapper()
Method Detail

isExtension

public boolean isExtension(int index)
Description copied from interface: IMarshaller
Check if marshaller represents an extension mapping. This is used by the framework in generated code to verify compatibility of objects being marshalled using an abstract mapping.

Specified by:
isExtension in interface IMarshaller
Parameters:
index - abstract mapping index to be checked
Returns:
true if this mapping is an extension of the abstract mapping, false if not

marshal

public void marshal(java.lang.Object obj,
                    IMarshallingContext ictx)
             throws JiBXException
Description copied from interface: IMarshaller
Marshal instance of handled class. This method call is responsible for all handling of the marshalling of an object to XML text. It is called at the point where the start tag for the associated element should be generated.

Specified by:
marshal in interface IMarshaller
Parameters:
obj - object to be marshalled (may be null if property is not optional)
ictx - XML text output context
Throws:
JiBXException - on error in marshalling process

isPresent

public boolean isPresent(IUnmarshallingContext ctx)
                  throws JiBXException
Description copied from interface: IUnmarshaller
Check if instance present in XML. This method can be called when the unmarshalling context is positioned at or just before the start of the data corresponding to an instance of this mapping. It verifies that the expected data is present.

Specified by:
isPresent in interface IUnmarshaller
Parameters:
ctx - unmarshalling context
Returns:
true if expected parse data found, false if not
Throws:
JiBXException - on error in unmarshalling process

unmarshal

public java.lang.Object unmarshal(java.lang.Object obj,
                                  IUnmarshallingContext ictx)
                           throws JiBXException
Description copied from interface: IUnmarshaller
Unmarshal instance of handled class. This method call is responsible for all handling of the unmarshalling of an object from XML text, including creating the instance of the handled class if an instance is not supplied. When it is called the unmarshalling context is always positioned at or just before the start tag corresponding to the start of the class data.

Specified by:
unmarshal in interface IUnmarshaller
Parameters:
obj - object to be unmarshalled (may be null)
ictx - unmarshalling context
Returns:
unmarshalled object (may be null)
Throws:
JiBXException - on error in unmarshalling process


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/extras/Dom4JMapperBase.html0000644000175000017500000002352311023035704024377 0ustar moellermoeller Dom4JMapperBase (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.extras
Class Dom4JMapperBase

java.lang.Object
  extended by org.jibx.extras.DocumentModelMapperBase
      extended by org.jibx.extras.Dom4JMapperBase
Direct Known Subclasses:
Dom4JElementMapper, Dom4JListMapper

public class Dom4JMapperBase
extends DocumentModelMapperBase

Base implementation for custom marshaller/unmarshallers to dom4j representation. This provides the basic code used for both single element and content list handling.

Version:
1.0
Author:
Dennis M. Sosnoski

Field Summary
 
Fields inherited from class org.jibx.extras.DocumentModelMapperBase
XML_NAMESPACE, XMLNS_NAMESPACE
 
Constructor Summary
Dom4JMapperBase()
           
 
Method Summary
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Dom4JMapperBase

public Dom4JMapperBase()


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/extras/DomElementMapper.html0000644000175000017500000005152411023035704024722 0ustar moellermoeller DomElementMapper (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.extras
Class DomElementMapper

java.lang.Object
  extended by org.jibx.extras.DocumentModelMapperBase
      extended by org.jibx.extras.DomMapperBase
          extended by org.jibx.extras.DomElementMapper
All Implemented Interfaces:
IAliasable, IMarshaller, IUnmarshaller

public class DomElementMapper
extends DomMapperBase
implements IMarshaller, IUnmarshaller, IAliasable

Custom element marshaller/unmarshaller to DOM representation. This allows you to mix data binding and document model representations for XML within the same application. You simply use this marshaller/unmarshaller with a linked object of type org.w3c.dom.Element (the actual runtime type - the declared type is ignored and can be anything). If a name is supplied on a reference that element name will always be matched when unmarshalling but will be ignored when marshalling (with the actual DOM element name used). If no name is supplied this will unmarshal a single element with any name.

Version:
1.0
Author:
Dennis M. Sosnoski

Field Summary
 
Fields inherited from class org.jibx.extras.DocumentModelMapperBase
XML_NAMESPACE, XMLNS_NAMESPACE
 
Constructor Summary
DomElementMapper()
          Default constructor.
DomElementMapper(java.lang.String uri, int index, java.lang.String name)
          Aliased constructor.
 
Method Summary
 boolean isExtension(int index)
          Check if marshaller represents an extension mapping.
 boolean isPresent(IUnmarshallingContext ctx)
          Check if instance present in XML.
 void marshal(java.lang.Object obj, IMarshallingContext ictx)
          Marshal instance of handled class.
 java.lang.Object unmarshal(java.lang.Object obj, IUnmarshallingContext ictx)
          Unmarshal instance of handled class.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DomElementMapper

public DomElementMapper()
                 throws JiBXException
Default constructor.

Throws:
JiBXException - on error creating document

DomElementMapper

public DomElementMapper(java.lang.String uri,
                        int index,
                        java.lang.String name)
                 throws JiBXException
Aliased constructor. This takes a name definition for the element. It'll be used by JiBX when a name is supplied by the mapping which references this custom marshaller/unmarshaller.

Parameters:
uri - namespace URI for the top-level element
index - namespace index corresponding to the defined URI within the marshalling context definitions
name - local name for the top-level element
Throws:
JiBXException - on error creating document
Method Detail

isExtension

public boolean isExtension(int index)
Description copied from interface: IMarshaller
Check if marshaller represents an extension mapping. This is used by the framework in generated code to verify compatibility of objects being marshalled using an abstract mapping.

Specified by:
isExtension in interface IMarshaller
Parameters:
index - abstract mapping index to be checked
Returns:
true if this mapping is an extension of the abstract mapping, false if not

marshal

public void marshal(java.lang.Object obj,
                    IMarshallingContext ictx)
             throws JiBXException
Description copied from interface: IMarshaller
Marshal instance of handled class. This method call is responsible for all handling of the marshalling of an object to XML text. It is called at the point where the start tag for the associated element should be generated.

Specified by:
marshal in interface IMarshaller
Parameters:
obj - object to be marshalled (may be null if property is not optional)
ictx - XML text output context
Throws:
JiBXException - on error in marshalling process

isPresent

public boolean isPresent(IUnmarshallingContext ctx)
                  throws JiBXException
Description copied from interface: IUnmarshaller
Check if instance present in XML. This method can be called when the unmarshalling context is positioned at or just before the start of the data corresponding to an instance of this mapping. It verifies that the expected data is present.

Specified by:
isPresent in interface IUnmarshaller
Parameters:
ctx - unmarshalling context
Returns:
true if expected parse data found, false if not
Throws:
JiBXException - on error in unmarshalling process

unmarshal

public java.lang.Object unmarshal(java.lang.Object obj,
                                  IUnmarshallingContext ictx)
                           throws JiBXException
Description copied from interface: IUnmarshaller
Unmarshal instance of handled class. This method call is responsible for all handling of the unmarshalling of an object from XML text, including creating the instance of the handled class if an instance is not supplied. When it is called the unmarshalling context is always positioned at or just before the start tag corresponding to the start of the class data.

Specified by:
unmarshal in interface IUnmarshaller
Parameters:
obj - object to be unmarshalled (may be null)
ictx - unmarshalling context
Returns:
unmarshalled object (may be null)
Throws:
JiBXException - on error in unmarshalling process


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/extras/DomFragmentMapper.html0000644000175000017500000004625011023035704025074 0ustar moellermoeller DomFragmentMapper (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.extras
Class DomFragmentMapper

java.lang.Object
  extended by org.jibx.extras.DocumentModelMapperBase
      extended by org.jibx.extras.DomMapperBase
          extended by org.jibx.extras.DomFragmentMapper
All Implemented Interfaces:
IMarshaller, IUnmarshaller

public class DomFragmentMapper
extends DomMapperBase
implements IMarshaller, IUnmarshaller

Custom content list marshaller/unmarshaller to DOM representation. This allows you to mix data binding and document model representations for XML within the same application. You simply use this marshaller/unmarshaller with a linked object type of org.w3c.dom.DocumentFragment (the actual runtime type - the declared type is ignored and can be anything). When unmarshalling it will create a fragment to hold any content up to the close tag for the enclosing element in the list. When marshalling, it will simply write out any content directly.

Version:
1.0
Author:
Dennis M. Sosnoski

Field Summary
 
Fields inherited from class org.jibx.extras.DocumentModelMapperBase
XML_NAMESPACE, XMLNS_NAMESPACE
 
Constructor Summary
DomFragmentMapper()
          Default constructor.
 
Method Summary
 boolean isExtension(int index)
          Check if marshaller represents an extension mapping.
 boolean isPresent(IUnmarshallingContext ctx)
          Check if instance present in XML.
 void marshal(java.lang.Object obj, IMarshallingContext ictx)
          Marshal instance of handled class.
 java.lang.Object unmarshal(java.lang.Object obj, IUnmarshallingContext ictx)
          Unmarshal instance of handled class.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DomFragmentMapper

public DomFragmentMapper()
                  throws JiBXException
Default constructor.

Throws:
JiBXException - on configuration error
Method Detail

isExtension

public boolean isExtension(int index)
Description copied from interface: IMarshaller
Check if marshaller represents an extension mapping. This is used by the framework in generated code to verify compatibility of objects being marshalled using an abstract mapping.

Specified by:
isExtension in interface IMarshaller
Parameters:
index - abstract mapping index to be checked
Returns:
true if this mapping is an extension of the abstract mapping, false if not

marshal

public void marshal(java.lang.Object obj,
                    IMarshallingContext ictx)
             throws JiBXException
Description copied from interface: IMarshaller
Marshal instance of handled class. This method call is responsible for all handling of the marshalling of an object to XML text. It is called at the point where the start tag for the associated element should be generated.

Specified by:
marshal in interface IMarshaller
Parameters:
obj - object to be marshalled (may be null if property is not optional)
ictx - XML text output context
Throws:
JiBXException - on error in marshalling process

isPresent

public boolean isPresent(IUnmarshallingContext ctx)
                  throws JiBXException
Description copied from interface: IUnmarshaller
Check if instance present in XML. This method can be called when the unmarshalling context is positioned at or just before the start of the data corresponding to an instance of this mapping. It verifies that the expected data is present.

Specified by:
isPresent in interface IUnmarshaller
Parameters:
ctx - unmarshalling context
Returns:
true if expected parse data found, false if not
Throws:
JiBXException - on error in unmarshalling process

unmarshal

public java.lang.Object unmarshal(java.lang.Object obj,
                                  IUnmarshallingContext ictx)
                           throws JiBXException
Description copied from interface: IUnmarshaller
Unmarshal instance of handled class. This method call is responsible for all handling of the unmarshalling of an object from XML text, including creating the instance of the handled class if an instance is not supplied. When it is called the unmarshalling context is always positioned at or just before the start tag corresponding to the start of the class data.

Specified by:
unmarshal in interface IUnmarshaller
Parameters:
obj - object to be unmarshalled (may be null)
ictx - unmarshalling context
Returns:
unmarshalled object (may be null)
Throws:
JiBXException - on error in unmarshalling process


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/extras/DomListMapper.html0000644000175000017500000004627611023035704024254 0ustar moellermoeller DomListMapper (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.extras
Class DomListMapper

java.lang.Object
  extended by org.jibx.extras.DocumentModelMapperBase
      extended by org.jibx.extras.DomMapperBase
          extended by org.jibx.extras.DomListMapper
All Implemented Interfaces:
IMarshaller, IUnmarshaller

public class DomListMapper
extends DomMapperBase
implements IMarshaller, IUnmarshaller

Custom content list marshaller/unmarshaller to DOM representation. This allows you to mix data binding and document model representations for XML within the same application. You simply use this marshaller/unmarshaller with a linked object type that implements java.util.List (the actual runtime type - the declared type is ignored and can be anything). When unmarshalling it will create an instance of java.util.ArrayList if a list is not passed in and any content is present, then return all the content up to the close tag for the enclosing element in the list. When marshalling, it will simply write out any content directly.

Version:
1.0
Author:
Dennis M. Sosnoski

Field Summary
 
Fields inherited from class org.jibx.extras.DocumentModelMapperBase
XML_NAMESPACE, XMLNS_NAMESPACE
 
Constructor Summary
DomListMapper()
          Default constructor.
 
Method Summary
 boolean isExtension(int index)
          Check if marshaller represents an extension mapping.
 boolean isPresent(IUnmarshallingContext ctx)
          Check if instance present in XML.
 void marshal(java.lang.Object obj, IMarshallingContext ictx)
          Marshal instance of handled class.
 java.lang.Object unmarshal(java.lang.Object obj, IUnmarshallingContext ictx)
          Unmarshal instance of handled class.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DomListMapper

public DomListMapper()
              throws JiBXException
Default constructor.

Throws:
JiBXException - on configuration error
Method Detail

isExtension

public boolean isExtension(int index)
Description copied from interface: IMarshaller
Check if marshaller represents an extension mapping. This is used by the framework in generated code to verify compatibility of objects being marshalled using an abstract mapping.

Specified by:
isExtension in interface IMarshaller
Parameters:
index - abstract mapping index to be checked
Returns:
true if this mapping is an extension of the abstract mapping, false if not

marshal

public void marshal(java.lang.Object obj,
                    IMarshallingContext ictx)
             throws JiBXException
Description copied from interface: IMarshaller
Marshal instance of handled class. This method call is responsible for all handling of the marshalling of an object to XML text. It is called at the point where the start tag for the associated element should be generated.

Specified by:
marshal in interface IMarshaller
Parameters:
obj - object to be marshalled (may be null if property is not optional)
ictx - XML text output context
Throws:
JiBXException - on error in marshalling process

isPresent

public boolean isPresent(IUnmarshallingContext ctx)
                  throws JiBXException
Description copied from interface: IUnmarshaller
Check if instance present in XML. This method can be called when the unmarshalling context is positioned at or just before the start of the data corresponding to an instance of this mapping. It verifies that the expected data is present.

Specified by:
isPresent in interface IUnmarshaller
Parameters:
ctx - unmarshalling context
Returns:
true if expected parse data found, false if not
Throws:
JiBXException - on error in unmarshalling process

unmarshal

public java.lang.Object unmarshal(java.lang.Object obj,
                                  IUnmarshallingContext ictx)
                           throws JiBXException
Description copied from interface: IUnmarshaller
Unmarshal instance of handled class. This method call is responsible for all handling of the unmarshalling of an object from XML text, including creating the instance of the handled class if an instance is not supplied. When it is called the unmarshalling context is always positioned at or just before the start tag corresponding to the start of the class data.

Specified by:
unmarshal in interface IUnmarshaller
Parameters:
obj - object to be unmarshalled (may be null)
ictx - unmarshalling context
Returns:
unmarshalled object (may be null)
Throws:
JiBXException - on error in unmarshalling process


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/extras/DomMapperBase.html0000644000175000017500000002150011023035704024172 0ustar moellermoeller DomMapperBase (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.extras
Class DomMapperBase

java.lang.Object
  extended by org.jibx.extras.DocumentModelMapperBase
      extended by org.jibx.extras.DomMapperBase
Direct Known Subclasses:
DomElementMapper, DomFragmentMapper, DomListMapper

public class DomMapperBase
extends DocumentModelMapperBase

Base implementation for custom marshaller/unmarshallers to DOM representation. This provides the basic code used for both single element and content list handling.

Version:
1.0
Author:
Dennis M. Sosnoski

Field Summary
 
Fields inherited from class org.jibx.extras.DocumentModelMapperBase
XML_NAMESPACE, XMLNS_NAMESPACE
 
Method Summary
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 



Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/extras/HashMapperStringToComplex.html0000644000175000017500000005075011023035704026576 0ustar moellermoeller HashMapperStringToComplex (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.extras
Class HashMapperStringToComplex

java.lang.Object
  extended by org.jibx.extras.HashMapperStringToComplex
All Implemented Interfaces:
IAliasable, IMarshaller, IUnmarshaller

public class HashMapperStringToComplex
extends java.lang.Object
implements IMarshaller, IUnmarshaller, IAliasable

Custom marshaller/unmarshaller for java.util.Map instances. This handles mapping hash maps with simple keys and complex values to and from XML. There are a number of limitations, though. First off, the key objects are marshalled as simple text values, using the toString() method to convert them to String. When unmarshalling the keys are always treated as String values. The corresponding values can be any complex type with a <mapping> defined in the binding. The name of the top-level element in the XML structure can be configured in the binding definition, but the rest of the names are predefined and set in the code (though the namespace configured for the top-level element will be used with all the names).

The net effect is that the XML structure will always be of the form:

<map-name size="3">
   <entry key="38193">
     <customer state="WA" zip="98059">
       <name first-name="John" last-name="Smith"/>
       <street>12345 Happy Lane</street>
       <city>Plunk</city>
     </customer>
   </entry>
   <entry key="39122">
     <customer state="WA" zip="98094">
       <name first-name="Sally" last-name="Port"/>
       <street>932 Easy Street</street>
       <city>Fort Lewis</city>
     </customer>
   </entry>
   <entry key="83132">
     <customer state="WA" zip="98059">
       <name first-name="Mary" last-name="Smith"/>
       <street>12345 Happy Lane</street>
       <city>Plunk</city>
     </customer>
   </entry>
 </map-name>

where "map-name" is the configured top-level element name, the "size" attribute is the number of pairs in the hash map, and the "entry" elements are the actual entries in the hash map.

This is obviously not intended to handle all types of hash maps, but it should be useful as written for many applications and easily customized to handle other requirements.

Version:
1.0
Author:
Dennis M. Sosnoski

Constructor Summary
HashMapperStringToComplex()
          Default constructor.
HashMapperStringToComplex(java.lang.String uri, int index, java.lang.String name)
          Aliased constructor.
 
Method Summary
 boolean isExtension(int index)
          Check if marshaller represents an extension mapping.
 boolean isPresent(IUnmarshallingContext ctx)
          Check if instance present in XML.
 void marshal(java.lang.Object obj, IMarshallingContext ictx)
          Marshal instance of handled class.
 java.lang.Object unmarshal(java.lang.Object obj, IUnmarshallingContext ictx)
          Unmarshal instance of handled class.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

HashMapperStringToComplex

public HashMapperStringToComplex()
Default constructor. This uses a pre-defined name for the top-level element. It'll be used by JiBX when no name information is supplied by the mapping which references this custom marshaller/unmarshaller.


HashMapperStringToComplex

public HashMapperStringToComplex(java.lang.String uri,
                                 int index,
                                 java.lang.String name)
Aliased constructor. This takes a name definition for the top-level element. It'll be used by JiBX when a name is supplied by the mapping which references this custom marshaller/unmarshaller.

Parameters:
uri - namespace URI for the top-level element (also used for all other names within the binding)
index - namespace index corresponding to the defined URI within the marshalling context definitions
name - local name for the top-level element
Method Detail

isExtension

public boolean isExtension(int index)
Description copied from interface: IMarshaller
Check if marshaller represents an extension mapping. This is used by the framework in generated code to verify compatibility of objects being marshalled using an abstract mapping.

Specified by:
isExtension in interface IMarshaller
Parameters:
index - abstract mapping index to be checked
Returns:
true if this mapping is an extension of the abstract mapping, false if not

marshal

public void marshal(java.lang.Object obj,
                    IMarshallingContext ictx)
             throws JiBXException
Description copied from interface: IMarshaller
Marshal instance of handled class. This method call is responsible for all handling of the marshalling of an object to XML text. It is called at the point where the start tag for the associated element should be generated.

Specified by:
marshal in interface IMarshaller
Parameters:
obj - object to be marshalled (may be null if property is not optional)
ictx - XML text output context
Throws:
JiBXException - on error in marshalling process

isPresent

public boolean isPresent(IUnmarshallingContext ctx)
                  throws JiBXException
Description copied from interface: IUnmarshaller
Check if instance present in XML. This method can be called when the unmarshalling context is positioned at or just before the start of the data corresponding to an instance of this mapping. It verifies that the expected data is present.

Specified by:
isPresent in interface IUnmarshaller
Parameters:
ctx - unmarshalling context
Returns:
true if expected parse data found, false if not
Throws:
JiBXException - on error in unmarshalling process

unmarshal

public java.lang.Object unmarshal(java.lang.Object obj,
                                  IUnmarshallingContext ictx)
                           throws JiBXException
Description copied from interface: IUnmarshaller
Unmarshal instance of handled class. This method call is responsible for all handling of the unmarshalling of an object from XML text, including creating the instance of the handled class if an instance is not supplied. When it is called the unmarshalling context is always positioned at or just before the start tag corresponding to the start of the class data.

Specified by:
unmarshal in interface IUnmarshaller
Parameters:
obj - object to be unmarshalled (may be null)
ictx - unmarshalling context
Returns:
unmarshalled object (may be null)
Throws:
JiBXException - on error in unmarshalling process


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/extras/HashMapperStringToSchemaType.html0000644000175000017500000007460211023035704027233 0ustar moellermoeller HashMapperStringToSchemaType (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.extras
Class HashMapperStringToSchemaType

java.lang.Object
  extended by org.jibx.extras.HashMapperStringToSchemaType
All Implemented Interfaces:
IAliasable, IMarshaller, IUnmarshaller

public class HashMapperStringToSchemaType
extends java.lang.Object
implements IMarshaller, IUnmarshaller, IAliasable

Custom marshaller/unmarshaller for java.util.Map instances. This handles mapping hash maps with string keys and values that match basic schema datatypes to and from XML. The key objects are marshalled as simple text values, using the toString() method to convert them to String if they are not already of that type. When unmarshalling the keys are always treated as String values. The corresponding values can be any of the object types corresponding to basic schema data types, and are marshalled with xsi:type attributes to specify the type of each value. The types currently supported are Byte, Double, Float, Integer, Long, java.util.Date (as xsd:dateTime), java.sql.Date (as xsd:date), java.sql.Time (as xsd:time), java.math.BigDecimal (with no exponent allowed, as xsd:decimal), and java.math.BigInteger (as xsd:integer). The xsd:type attribute is checked when unmarshalling values to select the proper deserialization and value type. The name of the top-level element in the XML structure can be configured in the binding definition, but the rest of the names are predefined and set in the code (though the namespace configured for the top-level element will be used with all the names).

The net effect is that the XML structure will always be of the form:

<map-name size="6" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <entry key="name" xsi:type="xsd:string">John Smith</entry>
   <entry key="street" xsi:type="xsd:string">12345 Happy Lane</entry>
   <entry key="city" xsi:type="xsd:string">Plunk</entry>
   <entry key="state" xsi:type="xsd:string">WA</entry>
   <entry key="rating" xsi:type="xsd:int">6</entry>
   <entry key="joined" xsi:type="xsd:dateTime">2002-08-06T00:13:31Z</entry>
 </map-name>

where "map-name" is the configured top-level element name, the "size" attribute is the number of pairs in the hash map, and the "entry" elements are the actual entries in the hash map.

For unmarshalling this requires an active namespace declaration with a prefix for the schema namespace. All xsi:type attribute values must use this prefix. If more than one prefix is declared for the schema namespace, the innermost one declared must be used.

Version:
1.0
Author:
Dennis M. Sosnoski

Field Summary
static int BOOLEAN_TYPE
           
static int BYTE_TYPE
           
static int BYTERRAY_TYPE
           
static int DATE_TYPE
           
static int DATETIME_TYPE
           
static int DECIMAL_TYPE
           
static int DOUBLE_TYPE
           
static int FLOAT_TYPE
           
static int INT_TYPE
           
static int INTEGER_TYPE
           
static int LONG_TYPE
           
static int SHORT_TYPE
           
static int STRING_TYPE
           
static int TIME_TYPE
           
 
Constructor Summary
HashMapperStringToSchemaType()
          Default constructor.
HashMapperStringToSchemaType(java.lang.String uri, int index, java.lang.String name)
          Aliased constructor.
 
Method Summary
 boolean isExtension(int index)
          Check if marshaller represents an extension mapping.
 boolean isPresent(IUnmarshallingContext ctx)
          Check if instance present in XML.
 void marshal(java.lang.Object obj, IMarshallingContext ictx)
          Marshal instance of handled class.
 java.lang.Object unmarshal(java.lang.Object obj, IUnmarshallingContext ictx)
          Unmarshal instance of handled class.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

BOOLEAN_TYPE

public static final int BOOLEAN_TYPE
See Also:
Constant Field Values

BYTE_TYPE

public static final int BYTE_TYPE
See Also:
Constant Field Values

DOUBLE_TYPE

public static final int DOUBLE_TYPE
See Also:
Constant Field Values

FLOAT_TYPE

public static final int FLOAT_TYPE
See Also:
Constant Field Values

INT_TYPE

public static final int INT_TYPE
See Also:
Constant Field Values

LONG_TYPE

public static final int LONG_TYPE
See Also:
Constant Field Values

SHORT_TYPE

public static final int SHORT_TYPE
See Also:
Constant Field Values

DATETIME_TYPE

public static final int DATETIME_TYPE
See Also:
Constant Field Values

DECIMAL_TYPE

public static final int DECIMAL_TYPE
See Also:
Constant Field Values

INTEGER_TYPE

public static final int INTEGER_TYPE
See Also:
Constant Field Values

BYTERRAY_TYPE

public static final int BYTERRAY_TYPE
See Also:
Constant Field Values

STRING_TYPE

public static final int STRING_TYPE
See Also:
Constant Field Values

DATE_TYPE

public static final int DATE_TYPE
See Also:
Constant Field Values

TIME_TYPE

public static final int TIME_TYPE
See Also:
Constant Field Values
Constructor Detail

HashMapperStringToSchemaType

public HashMapperStringToSchemaType()
Default constructor. This uses a pre-defined name for the top-level element. It'll be used by JiBX when no name information is supplied by the mapping which references this custom marshaller/unmarshaller.


HashMapperStringToSchemaType

public HashMapperStringToSchemaType(java.lang.String uri,
                                    int index,
                                    java.lang.String name)
Aliased constructor. This takes a name definition for the top-level element. It'll be used by JiBX when a name is supplied by the mapping which references this custom marshaller/unmarshaller.

Parameters:
uri - namespace URI for the top-level element (also used for all other names within the binding)
index - namespace index corresponding to the defined URI within the marshalling context definitions
name - local name for the top-level element
Method Detail

isExtension

public boolean isExtension(int index)
Description copied from interface: IMarshaller
Check if marshaller represents an extension mapping. This is used by the framework in generated code to verify compatibility of objects being marshalled using an abstract mapping.

Specified by:
isExtension in interface IMarshaller
Parameters:
index - abstract mapping index to be checked
Returns:
true if this mapping is an extension of the abstract mapping, false if not

marshal

public void marshal(java.lang.Object obj,
                    IMarshallingContext ictx)
             throws JiBXException
Description copied from interface: IMarshaller
Marshal instance of handled class. This method call is responsible for all handling of the marshalling of an object to XML text. It is called at the point where the start tag for the associated element should be generated.

Specified by:
marshal in interface IMarshaller
Parameters:
obj - object to be marshalled (may be null if property is not optional)
ictx - XML text output context
Throws:
JiBXException - on error in marshalling process

isPresent

public boolean isPresent(IUnmarshallingContext ctx)
                  throws JiBXException
Description copied from interface: IUnmarshaller
Check if instance present in XML. This method can be called when the unmarshalling context is positioned at or just before the start of the data corresponding to an instance of this mapping. It verifies that the expected data is present.

Specified by:
isPresent in interface IUnmarshaller
Parameters:
ctx - unmarshalling context
Returns:
true if expected parse data found, false if not
Throws:
JiBXException - on error in unmarshalling process

unmarshal

public java.lang.Object unmarshal(java.lang.Object obj,
                                  IUnmarshallingContext ictx)
                           throws JiBXException
Description copied from interface: IUnmarshaller
Unmarshal instance of handled class. This method call is responsible for all handling of the unmarshalling of an object from XML text, including creating the instance of the handled class if an instance is not supplied. When it is called the unmarshalling context is always positioned at or just before the start tag corresponding to the start of the class data.

Specified by:
unmarshal in interface IUnmarshaller
Parameters:
obj - object to be unmarshalled (may be null)
ictx - unmarshalling context
Returns:
unmarshalled object (may be null)
Throws:
JiBXException - on error in unmarshalling process


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/extras/IdDefRefMapperBase.html0000644000175000017500000004543511023035704025100 0ustar moellermoeller IdDefRefMapperBase (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.extras
Class IdDefRefMapperBase

java.lang.Object
  extended by org.jibx.extras.IdDefRefMapperBase
All Implemented Interfaces:
IAliasable, IMarshaller, IUnmarshaller

public abstract class IdDefRefMapperBase
extends java.lang.Object
implements IMarshaller, IUnmarshaller, IAliasable

Abstract base custom marshaller/unmarshaller for an object that may have multiple references. The first time an object is seen when marshalling the full XML representation is generated; successive uses of the same object then use XML references to the object ID. To use this class you need to create a subclass with a constructor using the same signature as the one provided (calling the base class constructor from your subclass constructor) and implement the abstract getIdValue(java.lang.Object) method in your subclass. You can also override the provided getAttributeName() method to change the name used for the IDREF attribute, which must not match the name of an attribute used in the normal marshalled form of the object. The name used for this marshaller/unmarshaller in the mapping definition must match the name used for the base object type being handled.

Version:
1.0
Author:
Dennis M. Sosnoski

Constructor Summary
IdDefRefMapperBase(java.lang.String uri, int index, java.lang.String name)
          Aliased constructor taking a name definition for reference elements.
 
Method Summary
 boolean isExtension(int index)
          Check if marshaller represents an extension mapping.
 boolean isPresent(IUnmarshallingContext ictx)
          Check if instance present in XML.
 void marshal(java.lang.Object obj, IMarshallingContext ictx)
          Marshal instance of handled class.
 java.lang.Object unmarshal(java.lang.Object obj, IUnmarshallingContext ictx)
          Unmarshal instance of handled class.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

IdDefRefMapperBase

public IdDefRefMapperBase(java.lang.String uri,
                          int index,
                          java.lang.String name)
Aliased constructor taking a name definition for reference elements. The subclass version will be used by JiBX to define the element name to be used with this custom marshaller/unmarshaller.

Parameters:
uri - namespace URI for the top-level element
index - namespace index corresponding to the defined URI within the marshalling context definitions
name - local name for the reference element
Method Detail

isExtension

public boolean isExtension(int index)
Description copied from interface: IMarshaller
Check if marshaller represents an extension mapping. This is used by the framework in generated code to verify compatibility of objects being marshalled using an abstract mapping.

Specified by:
isExtension in interface IMarshaller
Parameters:
index - abstract mapping index to be checked
Returns:
true if this mapping is an extension of the abstract mapping, false if not

marshal

public void marshal(java.lang.Object obj,
                    IMarshallingContext ictx)
             throws JiBXException
Description copied from interface: IMarshaller
Marshal instance of handled class. This method call is responsible for all handling of the marshalling of an object to XML text. It is called at the point where the start tag for the associated element should be generated.

Specified by:
marshal in interface IMarshaller
Parameters:
obj - object to be marshalled (may be null if property is not optional)
ictx - XML text output context
Throws:
JiBXException - on error in marshalling process

isPresent

public boolean isPresent(IUnmarshallingContext ictx)
                  throws JiBXException
Description copied from interface: IUnmarshaller
Check if instance present in XML. This method can be called when the unmarshalling context is positioned at or just before the start of the data corresponding to an instance of this mapping. It verifies that the expected data is present.

Specified by:
isPresent in interface IUnmarshaller
Parameters:
ictx - unmarshalling context
Returns:
true if expected parse data found, false if not
Throws:
JiBXException - on error in unmarshalling process

unmarshal

public java.lang.Object unmarshal(java.lang.Object obj,
                                  IUnmarshallingContext ictx)
                           throws JiBXException
Description copied from interface: IUnmarshaller
Unmarshal instance of handled class. This method call is responsible for all handling of the unmarshalling of an object from XML text, including creating the instance of the handled class if an instance is not supplied. When it is called the unmarshalling context is always positioned at or just before the start tag corresponding to the start of the class data.

Specified by:
unmarshal in interface IUnmarshaller
Parameters:
obj - object to be unmarshalled (may be null)
ictx - unmarshalling context
Returns:
unmarshalled object (may be null)
Throws:
JiBXException - on error in unmarshalling process


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/extras/IdRefMapperBase.html0000644000175000017500000004513711023035704024460 0ustar moellermoeller IdRefMapperBase (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.extras
Class IdRefMapperBase

java.lang.Object
  extended by org.jibx.extras.IdRefMapperBase
All Implemented Interfaces:
IAliasable, IMarshaller, IUnmarshaller

public abstract class IdRefMapperBase
extends java.lang.Object
implements IMarshaller, IUnmarshaller, IAliasable

Abstract base custom marshaller/unmarshaller for an object reference. This marshals the reference as an empty element with a single IDREF attribute, and unmarshals an element with the same structure to create a reference to the object with that ID value. To use this class you need to create a subclass with a constructor using the same signature as the one provided (calling the base class constructor from your subclass constructor) and implement the abstract getIdValue(java.lang.Object) method in your subclass. You can also override the provided getAttributeName() method to change the name used for the IDREF attribute. Note that this class can only be used when the definitions precede the references in the XML document; if a referenced ID is not defined the unmarshaller throws an exception.

Version:
1.0
Author:
Dennis M. Sosnoski

Constructor Summary
IdRefMapperBase(java.lang.String uri, int index, java.lang.String name)
          Aliased constructor taking a name definition for the element.
 
Method Summary
 boolean isExtension(int index)
          Check if marshaller represents an extension mapping.
 boolean isPresent(IUnmarshallingContext ctx)
          Check if instance present in XML.
 void marshal(java.lang.Object obj, IMarshallingContext ictx)
          Marshal instance of handled class.
 java.lang.Object unmarshal(java.lang.Object obj, IUnmarshallingContext ictx)
          Unmarshal instance of handled class.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

IdRefMapperBase

public IdRefMapperBase(java.lang.String uri,
                       int index,
                       java.lang.String name)
Aliased constructor taking a name definition for the element. The subclass version will be used by JiBX to define the element name to be used with this custom marshaller/unmarshaller.

Parameters:
uri - namespace URI for the top-level element
index - namespace index corresponding to the defined URI within the marshalling context definitions
name - local name for the top-level element
Method Detail

isExtension

public boolean isExtension(int index)
Description copied from interface: IMarshaller
Check if marshaller represents an extension mapping. This is used by the framework in generated code to verify compatibility of objects being marshalled using an abstract mapping.

Specified by:
isExtension in interface IMarshaller
Parameters:
index - abstract mapping index to be checked
Returns:
true if this mapping is an extension of the abstract mapping, false if not

marshal

public void marshal(java.lang.Object obj,
                    IMarshallingContext ictx)
             throws JiBXException
Description copied from interface: IMarshaller
Marshal instance of handled class. This method call is responsible for all handling of the marshalling of an object to XML text. It is called at the point where the start tag for the associated element should be generated.

Specified by:
marshal in interface IMarshaller
Parameters:
obj - object to be marshalled (may be null if property is not optional)
ictx - XML text output context
Throws:
JiBXException - on error in marshalling process

isPresent

public boolean isPresent(IUnmarshallingContext ctx)
                  throws JiBXException
Description copied from interface: IUnmarshaller
Check if instance present in XML. This method can be called when the unmarshalling context is positioned at or just before the start of the data corresponding to an instance of this mapping. It verifies that the expected data is present.

Specified by:
isPresent in interface IUnmarshaller
Parameters:
ctx - unmarshalling context
Returns:
true if expected parse data found, false if not
Throws:
JiBXException - on error in unmarshalling process

unmarshal

public java.lang.Object unmarshal(java.lang.Object obj,
                                  IUnmarshallingContext ictx)
                           throws JiBXException
Description copied from interface: IUnmarshaller
Unmarshal instance of handled class. This method call is responsible for all handling of the unmarshalling of an object from XML text, including creating the instance of the handled class if an instance is not supplied. When it is called the unmarshalling context is always positioned at or just before the start tag corresponding to the start of the class data.

Specified by:
unmarshal in interface IUnmarshaller
Parameters:
obj - object to be unmarshalled (may be null)
ictx - unmarshalling context
Returns:
unmarshalled object (may be null)
Throws:
JiBXException - on error in unmarshalling process


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/extras/JDOMWriter.html0000644000175000017500000010410311023035704023442 0ustar moellermoeller JDOMWriter (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.extras
Class JDOMWriter

java.lang.Object
  extended by org.jibx.runtime.impl.XMLWriterNamespaceBase
      extended by org.jibx.extras.JDOMWriter
All Implemented Interfaces:
IXMLWriter

public class JDOMWriter
extends XMLWriterNamespaceBase

JDOM implementation of XML writer interface. The Document that is created can be accessed by using getDocument().

Version:
1.0
Author:
Andreas Brenk

Constructor Summary
JDOMWriter(java.lang.String[] namespaces)
          Creates a new instance with the given namespace URIs.
JDOMWriter(java.lang.String[] namespaces, Document document)
          Creates a new instance with the given Document as target for marshalling.
JDOMWriter(java.lang.String[] namespaces, Element currentElement)
          Creates a new instance with the given Element as target for marshalling.
 
Method Summary
 void addAttribute(int index, java.lang.String name, java.lang.String value)
          Add attribute to current open start tag.
 void close()
          Does nothing.
 void closeEmptyTag()
          Close the current open start tag as an empty element.
 void closeStartTag()
          Close the current open start tag.
 void endTag(int index, java.lang.String name)
          Generate end tag.
 void flush()
          Does nothing.
 Document getDocument()
           
 void indent()
          Does nothing.
 void reset()
          Reset to initial state for reuse.
 void setIndentSpaces(int count, java.lang.String newline, char indent)
          Does nothing.
 void startTagClosed(int index, java.lang.String name)
          Generate closed start tag.
 void startTagNamespaces(int index, java.lang.String name, int[] nums, java.lang.String[] prefs)
          Generate start tag for element with namespaces.
 void startTagOpen(int index, java.lang.String name)
          Generate open start tag.
 void writeCData(java.lang.String text)
          Write CDATA text to document.
 void writeComment(java.lang.String text)
          Write comment to document.
 void writeDocType(java.lang.String name, java.lang.String sys, java.lang.String pub, java.lang.String subset)
          Write DOCTYPE declaration to document.
 void writeEntityRef(java.lang.String name)
          Write entity reference to document.
 void writePI(java.lang.String target, java.lang.String data)
          Write processing instruction to document.
 void writeTextContent(java.lang.String text)
          Write ordinary character data text content to document.
 void writeXMLDecl(java.lang.String version, java.lang.String encoding, java.lang.String standalone)
          Does nothing.
 
Methods inherited from class org.jibx.runtime.impl.XMLWriterNamespaceBase
getExtensionNamespaces, getNamespaceCount, getNamespacePrefix, getNamespaces, getNamespaceUri, getNestingDepth, getPrefixIndex, openNamespaces, popExtensionNamespaces, pushExtensionNamespaces
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JDOMWriter

public JDOMWriter(java.lang.String[] namespaces)
Creates a new instance with the given namespace URIs.


JDOMWriter

public JDOMWriter(java.lang.String[] namespaces,
                  Document document)
Creates a new instance with the given Document as target for marshalling.

Parameters:
document - must not be null

JDOMWriter

public JDOMWriter(java.lang.String[] namespaces,
                  Element currentElement)
Creates a new instance with the given Element as target for marshalling.

Parameters:
currentElement - must not be null
Method Detail

setIndentSpaces

public void setIndentSpaces(int count,
                            java.lang.String newline,
                            char indent)
Does nothing.

Parameters:
count - number of character to indent per level, or disable indentation if negative (zero means new line only)
newline - sequence of characters used for a line ending (null means use the single character '\n')
indent - whitespace character used for indentation

writeXMLDecl

public void writeXMLDecl(java.lang.String version,
                         java.lang.String encoding,
                         java.lang.String standalone)
                  throws java.io.IOException
Does nothing.

Parameters:
version - XML version text
encoding - text for encoding attribute (unspecified if null)
standalone - text for standalone attribute (unspecified if null)
Throws:
java.io.IOException - on error writing to document

startTagOpen

public void startTagOpen(int index,
                         java.lang.String name)
                  throws java.io.IOException
Description copied from interface: IXMLWriter
Generate open start tag. This allows attributes and/or namespace declarations to be added to the start tag, but must be followed by a IXMLWriter.closeStartTag() call.

Parameters:
index - namespace URI index number
name - unqualified element name
Throws:
java.io.IOException - on error writing to document

startTagNamespaces

public void startTagNamespaces(int index,
                               java.lang.String name,
                               int[] nums,
                               java.lang.String[] prefs)
                        throws java.io.IOException
Description copied from interface: IXMLWriter
Generate start tag for element with namespaces. This creates the actual start tag, along with any necessary namespace declarations. Previously active namespace declarations are not duplicated. The tag is left incomplete, allowing other attributes to be added.

Parameters:
index - namespace URI index number
name - element name
nums - array of namespace indexes defined by this element (must be constant, reference is kept until end of element)
prefs - array of namespace prefixes mapped by this element (no null values, use "" for default namespace declaration)
Throws:
java.io.IOException - on error writing to document

addAttribute

public void addAttribute(int index,
                         java.lang.String name,
                         java.lang.String value)
                  throws java.io.IOException
Description copied from interface: IXMLWriter
Add attribute to current open start tag. This is only valid after a call to IXMLWriter.startTagOpen(int, java.lang.String) and before the corresponding call to IXMLWriter.closeStartTag().

Parameters:
index - namespace URI index number
name - unqualified attribute name
value - text value for attribute
Throws:
java.io.IOException - on error writing to document

closeStartTag

public void closeStartTag()
                   throws java.io.IOException
Description copied from interface: IXMLWriter
Close the current open start tag. This is only valid after a call to IXMLWriter.startTagOpen(int, java.lang.String).

Throws:
java.io.IOException - on error writing to document

closeEmptyTag

public void closeEmptyTag()
                   throws java.io.IOException
Description copied from interface: IXMLWriter
Close the current open start tag as an empty element. This is only valid after a call to IXMLWriter.startTagOpen(int, java.lang.String).

Throws:
java.io.IOException - on error writing to document

startTagClosed

public void startTagClosed(int index,
                           java.lang.String name)
                    throws java.io.IOException
Description copied from interface: IXMLWriter
Generate closed start tag. No attributes or namespaces can be added to a start tag written using this call.

Parameters:
index - namespace URI index number
name - unqualified element name
Throws:
java.io.IOException - on error writing to document

endTag

public void endTag(int index,
                   java.lang.String name)
            throws java.io.IOException
Description copied from interface: IXMLWriter
Generate end tag.

Parameters:
index - namespace URI index number
name - unqualified element name
Throws:
java.io.IOException - on error writing to document

writeTextContent

public void writeTextContent(java.lang.String text)
                      throws java.io.IOException
Description copied from interface: IXMLWriter
Write ordinary character data text content to document.

Parameters:
text - content value text (must not be null)
Throws:
java.io.IOException - on error writing to document

writeCData

public void writeCData(java.lang.String text)
                throws java.io.IOException
Description copied from interface: IXMLWriter
Write CDATA text to document.

Parameters:
text - content value text (must not be null)
Throws:
java.io.IOException - on error writing to document

writeComment

public void writeComment(java.lang.String text)
                  throws java.io.IOException
Description copied from interface: IXMLWriter
Write comment to document.

Parameters:
text - comment text (must not be null)
Throws:
java.io.IOException - on error writing to document

writeEntityRef

public void writeEntityRef(java.lang.String name)
                    throws java.io.IOException
Description copied from interface: IXMLWriter
Write entity reference to document.

Parameters:
name - entity name (must not be null)
Throws:
java.io.IOException - on error writing to document

writeDocType

public void writeDocType(java.lang.String name,
                         java.lang.String sys,
                         java.lang.String pub,
                         java.lang.String subset)
                  throws java.io.IOException
Description copied from interface: IXMLWriter
Write DOCTYPE declaration to document.

Parameters:
name - root element name
sys - system ID (null if none, must be non-null for public ID to be used)
pub - public ID (null if none)
subset - internal subset (null if none)
Throws:
java.io.IOException - on error writing to document

writePI

public void writePI(java.lang.String target,
                    java.lang.String data)
             throws java.io.IOException
Description copied from interface: IXMLWriter
Write processing instruction to document.

Parameters:
target - processing instruction target name (must not be null)
data - processing instruction data (must not be null)
Throws:
java.io.IOException - on error writing to document

indent

public void indent()
            throws java.io.IOException
Does nothing.

Throws:
java.io.IOException - on error writing to document

flush

public void flush()
           throws java.io.IOException
Does nothing.

Throws:
java.io.IOException - on error writing to document

close

public void close()
           throws java.io.IOException
Does nothing.

Throws:
java.io.IOException - on error writing to document

reset

public void reset()
Description copied from class: XMLWriterNamespaceBase
Reset to initial state for reuse. Subclasses overriding this method need to call this base class implementation during their processing.

Specified by:
reset in interface IXMLWriter
Overrides:
reset in class XMLWriterNamespaceBase

getDocument

public Document getDocument()
Returns:
the JDOM Document this writer created.


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/extras/ObjectArrayMapper.html0000644000175000017500000004516511023035704025102 0ustar moellermoeller ObjectArrayMapper (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.extras
Class ObjectArrayMapper

java.lang.Object
  extended by org.jibx.extras.ObjectArrayMapper
All Implemented Interfaces:
IAliasable, IMarshaller, IUnmarshaller

public class ObjectArrayMapper
extends java.lang.Object
implements IMarshaller, IUnmarshaller, IAliasable

Custom marshaller/unmarshaller for Object[] instances. This handles mapping arrays typed as java.lang.Object[], where each item in the array must be of a mapped type. If a name is specified by the mapping definition that name is used as a wrapper around the elements representing the items in the array; otherwise, the elements are just handled inline.

Version:
1.0
Author:
Dennis M. Sosnoski

Constructor Summary
ObjectArrayMapper()
          Default constructor.
ObjectArrayMapper(java.lang.String uri, int index, java.lang.String name)
          Aliased constructor.
 
Method Summary
 boolean isExtension(int index)
          Check if marshaller represents an extension mapping.
 boolean isPresent(IUnmarshallingContext ctx)
          Check if instance present in XML.
 void marshal(java.lang.Object obj, IMarshallingContext ictx)
          Marshal instance of handled class.
 java.lang.Object unmarshal(java.lang.Object obj, IUnmarshallingContext ictx)
          Unmarshal instance of handled class.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ObjectArrayMapper

public ObjectArrayMapper()
Default constructor. This just sets up for an XML representation with no element wrapping the actual item structures. It'll be used by JiBX when no name information is supplied by the mapping which references this custom marshaller/unmarshaller.


ObjectArrayMapper

public ObjectArrayMapper(java.lang.String uri,
                         int index,
                         java.lang.String name)
Aliased constructor. This takes a name definition for the top-level wrapper element. It'll be used by JiBX when a name is supplied by the mapping which references this custom marshaller/unmarshaller.

Parameters:
uri - namespace URI for the top-level element
index - namespace index corresponding to the defined URI within the marshalling context definitions
name - local name for the top-level element
Method Detail

isExtension

public boolean isExtension(int index)
Description copied from interface: IMarshaller
Check if marshaller represents an extension mapping. This is used by the framework in generated code to verify compatibility of objects being marshalled using an abstract mapping.

Specified by:
isExtension in interface IMarshaller
Parameters:
index - abstract mapping index to be checked
Returns:
true if this mapping is an extension of the abstract mapping, false if not

marshal

public void marshal(java.lang.Object obj,
                    IMarshallingContext ictx)
             throws JiBXException
Description copied from interface: IMarshaller
Marshal instance of handled class. This method call is responsible for all handling of the marshalling of an object to XML text. It is called at the point where the start tag for the associated element should be generated.

Specified by:
marshal in interface IMarshaller
Parameters:
obj - object to be marshalled (may be null if property is not optional)
ictx - XML text output context
Throws:
JiBXException - on error in marshalling process

isPresent

public boolean isPresent(IUnmarshallingContext ctx)
                  throws JiBXException
Description copied from interface: IUnmarshaller
Check if instance present in XML. This method can be called when the unmarshalling context is positioned at or just before the start of the data corresponding to an instance of this mapping. It verifies that the expected data is present.

Specified by:
isPresent in interface IUnmarshaller
Parameters:
ctx - unmarshalling context
Returns:
true if expected parse data found, false if not
Throws:
JiBXException - on error in unmarshalling process

unmarshal

public java.lang.Object unmarshal(java.lang.Object obj,
                                  IUnmarshallingContext ictx)
                           throws JiBXException
Description copied from interface: IUnmarshaller
Unmarshal instance of handled class. This method call is responsible for all handling of the unmarshalling of an object from XML text, including creating the instance of the handled class if an instance is not supplied. When it is called the unmarshalling context is always positioned at or just before the start tag corresponding to the start of the class data.

Specified by:
unmarshal in interface IUnmarshaller
Parameters:
obj - object to be unmarshalled (may be null)
ictx - unmarshalling context
Returns:
unmarshalled object (may be null)
Throws:
JiBXException - on error in unmarshalling process


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/extras/QName.html0000644000175000017500000003764311023035704022533 0ustar moellermoeller QName (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.extras
Class QName

java.lang.Object
  extended by org.jibx.extras.QName

public class QName
extends java.lang.Object

Representation of a qualified name. This includes the serializer/deserializer methods for the representation. It assumes that the actual namespace declarations are being handled separately for marshalling.

Author:
Dennis M. Sosnoski

Constructor Summary
QName()
          Default constructor.
QName(java.lang.String uri, java.lang.String prefix, java.lang.String name)
          Constructor from full set of components.
 
Method Summary
static QName deserialize(java.lang.String text, IUnmarshallingContext ictx)
          JiBX deserializer method.
 java.lang.String getName()
          Get local name.
 java.lang.String getPrefix()
          Get namespace prefix.
 java.lang.String getUri()
          Get namespace URI.
static java.lang.String serialize(QName qname, IMarshallingContext ictx)
          JiBX serializer method.
 void setName(java.lang.String name)
          Set local name.
 void setPrefix(java.lang.String prefix)
          Set namespace prefix.
 void setUri(java.lang.String uri)
          Set namespace URI.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

QName

public QName()
Default constructor.


QName

public QName(java.lang.String uri,
             java.lang.String prefix,
             java.lang.String name)
Constructor from full set of components.

Parameters:
uri -
prefix -
name -
Method Detail

getName

public java.lang.String getName()
Get local name.

Returns:
name

setName

public void setName(java.lang.String name)
Set local name.

Parameters:
name - name

getPrefix

public java.lang.String getPrefix()
Get namespace prefix.

Returns:
prefix

setPrefix

public void setPrefix(java.lang.String prefix)
Set namespace prefix.

Parameters:
prefix - prefix

getUri

public java.lang.String getUri()
Get namespace URI.

Returns:
uri

setUri

public void setUri(java.lang.String uri)
Set namespace URI.

Parameters:
uri - uri

deserialize

public static QName deserialize(java.lang.String text,
                                IUnmarshallingContext ictx)
                         throws JiBXException
JiBX deserializer method. This is intended for use as a deserializer for instances of the class.

Parameters:
text - value text
ictx - unmarshalling context
Returns:
created class instance
Throws:
JiBXException - on error in unmarshalling

serialize

public static java.lang.String serialize(QName qname,
                                         IMarshallingContext ictx)
                                  throws JiBXException
JiBX serializer method. This is intended for use as a serializer for instances of the class. The namespace must be active in the output document at the point where this is called.

Parameters:
qname - instance to be serialized
ictx - unmarshalling context
Returns:
created class instance
Throws:
JiBXException - on error in marshalling


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/extras/TestMultRoundtrip.html0000644000175000017500000002250611023035704025212 0ustar moellermoeller TestMultRoundtrip (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.extras
Class TestMultRoundtrip

java.lang.Object
  extended by org.jibx.extras.TestMultRoundtrip

public class TestMultRoundtrip
extends java.lang.Object

Test program for the JiBX framework. Works with three or four command line arguments: mapped-class, binding-name, in-file, and out-file (optional, only needed if different from in-file). You can also supply a multiple of four input arguments, in which case each set of four is processed in turn (in this case the out-file is required). Unmarshals documents from files using the specified bindings for the mapped classes, then marshals them back out using the same bindings and compares the results. In case of a comparison error the output file is left as temp.xml .

Version:
1.0
Author:
Dennis M. Sosnoski

Constructor Summary
TestMultRoundtrip()
           
 
Method Summary
static void main(java.lang.String[] args)
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TestMultRoundtrip

public TestMultRoundtrip()
Method Detail

main

public static void main(java.lang.String[] args)


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/extras/TestRoundtrip.html0000644000175000017500000002242111023035704024344 0ustar moellermoeller TestRoundtrip (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.extras
Class TestRoundtrip

java.lang.Object
  extended by org.jibx.extras.TestRoundtrip

public class TestRoundtrip
extends java.lang.Object

Test program for the JiBX framework. Works with two or three command line arguments: mapped-class, in-file, and out-file (optional, only needed if different from in-file). You can also supply a multiple of three input arguments, in which case each set of three is processed in turn (in this case the out-file is required). Unmarshals documents from files using the binding defined for the mapped class, then marshals them back out using the same bindings and compares the results. In case of a comparison error the output file is left as temp.xml.

Version:
1.0
Author:
Dennis M. Sosnoski

Constructor Summary
TestRoundtrip()
           
 
Method Summary
static void main(java.lang.String[] args)
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TestRoundtrip

public TestRoundtrip()
Method Detail

main

public static void main(java.lang.String[] args)


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/extras/TypedArrayMapper.html0000644000175000017500000004554611023035704024764 0ustar moellermoeller TypedArrayMapper (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.extras
Class TypedArrayMapper

java.lang.Object
  extended by org.jibx.extras.TypedArrayMapper
All Implemented Interfaces:
IAliasable, IMarshaller, IUnmarshaller

public class TypedArrayMapper
extends java.lang.Object
implements IMarshaller, IUnmarshaller, IAliasable

Custom marshaller/unmarshaller for reference arrays of a particular type. This handles mapping arrays typed as object-type[], where the object-type is any class name (not a primitive type). All items in the array must be of a mapped type. If a name is specified by the mapping definition that name is used as a wrapper around the elements representing the items in the array; otherwise, the elements are just handled inline.

Version:
1.0
Author:
Dennis M. Sosnoski

Constructor Summary
TypedArrayMapper(java.lang.String type)
          Class only constructor.
TypedArrayMapper(java.lang.String uri, int index, java.lang.String name, java.lang.String type)
          Aliased constructor.
 
Method Summary
 boolean isExtension(int index)
          Check if marshaller represents an extension mapping.
 boolean isPresent(IUnmarshallingContext ctx)
          Check if instance present in XML.
 void marshal(java.lang.Object obj, IMarshallingContext ictx)
          Marshal instance of handled class.
 java.lang.Object unmarshal(java.lang.Object obj, IUnmarshallingContext ictx)
          Unmarshal instance of handled class.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TypedArrayMapper

public TypedArrayMapper(java.lang.String uri,
                        int index,
                        java.lang.String name,
                        java.lang.String type)
Aliased constructor. This takes a name definition for the top-level wrapper element. It'll be used by JiBX when a name is supplied by the mapping which references this custom marshaller/unmarshaller.

Parameters:
uri - namespace URI for the top-level element
index - namespace index corresponding to the defined URI within the marshalling context definitions
name - local name for the top-level element
type - class name for type of items in array

TypedArrayMapper

public TypedArrayMapper(java.lang.String type)
Class only constructor. This just sets up for an XML representation with no element wrapping the actual item structures. It'll be used by JiBX when no name information is supplied by the mapping which references this custom marshaller/unmarshaller.

Parameters:
type - class name for type of items in array
Method Detail

isExtension

public boolean isExtension(int index)
Description copied from interface: IMarshaller
Check if marshaller represents an extension mapping. This is used by the framework in generated code to verify compatibility of objects being marshalled using an abstract mapping.

Specified by:
isExtension in interface IMarshaller
Parameters:
index - abstract mapping index to be checked
Returns:
true if this mapping is an extension of the abstract mapping, false if not

marshal

public void marshal(java.lang.Object obj,
                    IMarshallingContext ictx)
             throws JiBXException
Description copied from interface: IMarshaller
Marshal instance of handled class. This method call is responsible for all handling of the marshalling of an object to XML text. It is called at the point where the start tag for the associated element should be generated.

Specified by:
marshal in interface IMarshaller
Parameters:
obj - object to be marshalled (may be null if property is not optional)
ictx - XML text output context
Throws:
JiBXException - on error in marshalling process

isPresent

public boolean isPresent(IUnmarshallingContext ctx)
                  throws JiBXException
Description copied from interface: IUnmarshaller
Check if instance present in XML. This method can be called when the unmarshalling context is positioned at or just before the start of the data corresponding to an instance of this mapping. It verifies that the expected data is present.

Specified by:
isPresent in interface IUnmarshaller
Parameters:
ctx - unmarshalling context
Returns:
true if expected parse data found, false if not
Throws:
JiBXException - on error in unmarshalling process

unmarshal

public java.lang.Object unmarshal(java.lang.Object obj,
                                  IUnmarshallingContext ictx)
                           throws JiBXException
Description copied from interface: IUnmarshaller
Unmarshal instance of handled class. This method call is responsible for all handling of the unmarshalling of an object from XML text, including creating the instance of the handled class if an instance is not supplied. When it is called the unmarshalling context is always positioned at or just before the start tag corresponding to the start of the class data.

Specified by:
unmarshal in interface IUnmarshaller
Parameters:
obj - object to be unmarshalled (may be null)
ictx - unmarshalling context
Returns:
unmarshalled object (may be null)
Throws:
JiBXException - on error in unmarshalling process


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/extras/package-frame.html0000644000175000017500000000627511023035704024212 0ustar moellermoeller org.jibx.extras (JiBX Java data binding to XML - Version 1.1.6a) org.jibx.extras
Classes 
BindingSelector
DiscardElementMapper
DiscardListMapper
DocumentComparator
DocumentModelMapperBase
Dom4JElementMapper
Dom4JListMapper
Dom4JMapperBase
DomElementMapper
DomFragmentMapper
DomListMapper
DomMapperBase
HashMapperStringToComplex
HashMapperStringToSchemaType
IdDefRefMapperBase
IdRefMapperBase
JDOMWriter
ObjectArrayMapper
QName
TestMultRoundtrip
TestRoundtrip
TypedArrayMapper
libjibx-java-1.1.6a/docs/api/org/jibx/extras/package-summary.html0000644000175000017500000002556411023035704024617 0ustar moellermoeller org.jibx.extras (JiBX Java data binding to XML - Version 1.1.6a)

Package org.jibx.extras

Extra goodies for working with JiBX.

See:
          Description

Class Summary
BindingSelector Binding selector that supports versioned XML documents.
DiscardElementMapper Custom marshaller/unmarshaller for arbitrary ignored element.
DiscardListMapper Custom marshaller/unmarshaller for arbitrary ignored content to end of element.
DocumentComparator XML document comparator.
DocumentModelMapperBase Base implementation for custom marshaller/unmarshallers to any document model representation.
Dom4JElementMapper Custom element marshaller/unmarshaller to dom4j representation.
Dom4JListMapper Custom content list marshaller/unmarshaller to dom4j representation.
Dom4JMapperBase Base implementation for custom marshaller/unmarshallers to dom4j representation.
DomElementMapper Custom element marshaller/unmarshaller to DOM representation.
DomFragmentMapper Custom content list marshaller/unmarshaller to DOM representation.
DomListMapper Custom content list marshaller/unmarshaller to DOM representation.
DomMapperBase Base implementation for custom marshaller/unmarshallers to DOM representation.
HashMapperStringToComplex Custom marshaller/unmarshaller for java.util.Map instances.
HashMapperStringToSchemaType Custom marshaller/unmarshaller for java.util.Map instances.
IdDefRefMapperBase Abstract base custom marshaller/unmarshaller for an object that may have multiple references.
IdRefMapperBase Abstract base custom marshaller/unmarshaller for an object reference.
JDOMWriter JDOM implementation of XML writer interface.
ObjectArrayMapper Custom marshaller/unmarshaller for Object[] instances.
QName Representation of a qualified name.
TestMultRoundtrip Test program for the JiBX framework.
TestRoundtrip Test program for the JiBX framework.
TypedArrayMapper Custom marshaller/unmarshaller for reference arrays of a particular type.
 

Package org.jibx.extras Description

Extra goodies for working with JiBX. These are helper classes that can be useful but are not core to the JiBX framework.



Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/0000755000175000017500000000000011023035704021004 5ustar moellermoellerlibjibx-java-1.1.6a/docs/api/org/jibx/runtime/impl/0000755000175000017500000000000011023035704021745 5ustar moellermoellerlibjibx-java-1.1.6a/docs/api/org/jibx/runtime/impl/ArrayRangeIterator.html0000644000175000017500000003031311023035704026400 0ustar moellermoeller ArrayRangeIterator (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime.impl
Class ArrayRangeIterator

java.lang.Object
  extended by org.jibx.runtime.impl.ArrayRangeIterator
All Implemented Interfaces:
java.util.Iterator

public class ArrayRangeIterator
extends java.lang.Object
implements java.util.Iterator

Iterator class for values contained in an array range. This type of iterator can be used for any contiguous range of items in an object array.

Version:
1.1
Author:
Dennis M. Sosnoski

Field Summary
static ArrayRangeIterator EMPTY_ITERATOR
          Empty iterator used whenever possible.
 
Method Summary
static java.util.Iterator buildIterator(java.lang.Object[] array, int start, int limit)
          Build iterator.
 boolean hasNext()
          Check for iteration element available.
 java.lang.Object next()
          Get next iteration element.
 void remove()
          Remove element from iteration.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

EMPTY_ITERATOR

public static final ArrayRangeIterator EMPTY_ITERATOR
Empty iterator used whenever possible.

Method Detail

hasNext

public boolean hasNext()
Check for iteration element available.

Specified by:
hasNext in interface java.util.Iterator
Returns:
true if element available, false if not

next

public java.lang.Object next()
Get next iteration element.

Specified by:
next in interface java.util.Iterator
Returns:
next iteration element
Throws:
java.util.NoSuchElementException - if past end of iteration

remove

public void remove()
Remove element from iteration. This optional operation is not supported and always throws an exception.

Specified by:
remove in interface java.util.Iterator
Throws:
java.lang.UnsupportedOperationException - for unsupported operation

buildIterator

public static java.util.Iterator buildIterator(java.lang.Object[] array,
                                               int start,
                                               int limit)
Build iterator.

Parameters:
array - array containing values to be iterated (may be null)
start - starting offset in array
limit - offset past end of values
Returns:
constructed iterator


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/impl/BackFillArray.html0000644000175000017500000002443411023035704025310 0ustar moellermoeller BackFillArray (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime.impl
Class BackFillArray

java.lang.Object
  extended by org.jibx.runtime.impl.BackFillArray
All Implemented Interfaces:
BackFillReference

public class BackFillArray
extends java.lang.Object
implements BackFillReference

Backfill reference item, used for filling in forward references as members of arrays. Each item holds both the array containing the reference and the offset in the array.

Version:
1.0
Author:
Dennis M. Sosnoski

Constructor Summary
BackFillArray(int index, java.lang.Object[] array)
          Constructor.
 
Method Summary
 void backfill(java.lang.Object obj)
          Define referenced object.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BackFillArray

public BackFillArray(int index,
                     java.lang.Object[] array)
Constructor. Saves the information for filling the reference once the associated object is defined.

Parameters:
index - reference offset within array
array - array containing the reference
Method Detail

backfill

public void backfill(java.lang.Object obj)
Define referenced object. This method is called by the framework when the forward-referenced item is defined.

Specified by:
backfill in interface BackFillReference
Parameters:
obj - referenced object


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/impl/BackFillHolder.html0000644000175000017500000002637511023035704025455 0ustar moellermoeller BackFillHolder (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime.impl
Class BackFillHolder

java.lang.Object
  extended by org.jibx.runtime.impl.BackFillHolder

public class BackFillHolder
extends java.lang.Object

Holder used to collect forward references to a particular object. The references are processed when the object is defined.

Version:
1.0
Author:
Dennis M. Sosnoski

Constructor Summary
BackFillHolder(java.lang.String name)
          Constructor.
 
Method Summary
 void addBackFill(BackFillReference ref)
          Add forward reference to tracked object.
 void defineValue(java.lang.Object obj)
          Define referenced object.
 java.lang.String getExpectedClass()
          Get expected class name of referenced object.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BackFillHolder

public BackFillHolder(java.lang.String name)
Constructor. Just creates the backing list.

Parameters:
name - expected class name of tracked object
Method Detail

addBackFill

public void addBackFill(BackFillReference ref)
Add forward reference to tracked object. This method is called by the framework when a reference item is created for the object associated with this holder.

Parameters:
ref - backfill reference item

defineValue

public void defineValue(java.lang.Object obj)
Define referenced object. This method is called by the framework when the forward-referenced object is defined, and in turn calls each reference to fill in the reference.

Parameters:
obj - referenced object

getExpectedClass

public java.lang.String getExpectedClass()
Get expected class name of referenced object.

Returns:
expected class name of referenced object


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/impl/BackFillReference.html0000644000175000017500000001760611023035704026133 0ustar moellermoeller BackFillReference (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime.impl
Interface BackFillReference

All Known Implementing Classes:
BackFillArray

public interface BackFillReference

Backfill reference item, used for filling in forward references to objects. Each reference to an item must define a class implementing this interface, to be used when a referenced item is not yet defined. The references for a particular object are collected by a BackFillHolder instance, and are processed when the object is defined.

Version:
1.0
Author:
Dennis M. Sosnoski

Method Summary
 void backfill(java.lang.Object obj)
          Define referenced object.
 

Method Detail

backfill

void backfill(java.lang.Object obj)
Define referenced object. This method is called by the framework when the forward-referenced item is defined.

Parameters:
obj - referenced object


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/impl/GenericXMLWriter.html0000644000175000017500000006401611023035704025774 0ustar moellermoeller GenericXMLWriter (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime.impl
Class GenericXMLWriter

java.lang.Object
  extended by org.jibx.runtime.impl.XMLWriterNamespaceBase
      extended by org.jibx.runtime.impl.XMLWriterBase
          extended by org.jibx.runtime.impl.GenericXMLWriter
All Implemented Interfaces:
IExtensibleWriter, IXMLWriter

public class GenericXMLWriter
extends XMLWriterBase

Generic handler for marshalling text document to a writer. This is the most general output handler since it can be used with any character encoding and and output writer.

Author:
Dennis M. Sosnoski

Constructor Summary
GenericXMLWriter(GenericXMLWriter base, java.lang.String[] uris)
          Copy constructor.
GenericXMLWriter(java.lang.String[] uris)
          Constructor.
 
Method Summary
 void close()
          Close document output.
 IXMLWriter createChildWriter(java.lang.String[] uris)
          Create a child writer instance to be used for a separate binding.
 void flush()
          Flush document output.
 void indent()
          Request output indent.
 void indent(int bias)
          Request output indent.
 void setIndentSpaces(int count, java.lang.String newline, char indent)
          Set nesting indentation.
 void setOutput(java.io.Writer outw, ICharacterEscaper escaper)
          Set output writer and escaper.
 void writeCData(java.lang.String text)
          Write CDATA text to document.
 void writeTextContent(java.lang.String text)
          Write ordinary character data text content to document.
 
Methods inherited from class org.jibx.runtime.impl.XMLWriterBase
addAttribute, closeEmptyTag, closeStartTag, endTag, reset, startTagClosed, startTagNamespaces, startTagOpen, writeComment, writeDocType, writeEntityRef, writePI, writeXMLDecl
 
Methods inherited from class org.jibx.runtime.impl.XMLWriterNamespaceBase
getExtensionNamespaces, getNamespaceCount, getNamespacePrefix, getNamespaces, getNamespaceUri, getNestingDepth, getPrefixIndex, openNamespaces, popExtensionNamespaces, pushExtensionNamespaces
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.jibx.runtime.IXMLWriter
getExtensionNamespaces, getNamespaceCount, getNamespacePrefix, getNamespaces, getNamespaceUri, getNestingDepth, getPrefixIndex, openNamespaces, popExtensionNamespaces, pushExtensionNamespaces
 

Constructor Detail

GenericXMLWriter

public GenericXMLWriter(java.lang.String[] uris)
Constructor.

Parameters:
uris - ordered array of URIs for namespaces used in document (must be constant; the value in position 0 must always be the empty string "", and the value in position 1 must always be the XML namespace "http://www.w3.org/XML/1998/namespace")

GenericXMLWriter

public GenericXMLWriter(GenericXMLWriter base,
                        java.lang.String[] uris)
Copy constructor. This takes the writer from a supplied instance, while setting a new array of namespace URIs. It's intended for use when invoking one binding from within another binding.

Parameters:
base - instance to be used as base for writer
uris - ordered array of URIs for namespaces used in document (see GenericXMLWriter(String[]))
Method Detail

setOutput

public void setOutput(java.io.Writer outw,
                      ICharacterEscaper escaper)
Set output writer and escaper. If an output writer is currently open when this is called the existing writer is flushed and closed, with any errors ignored.

Parameters:
outw - writer for document data output
escaper - character escaper for chosen encoding

setIndentSpaces

public void setIndentSpaces(int count,
                            java.lang.String newline,
                            char indent)
Set nesting indentation. This is advisory only, and implementations of this interface are free to ignore it. The intent is to indicate that the generated output should use indenting to illustrate element nesting.

Parameters:
count - number of character to indent per level, or disable indentation if negative (zero means new line only)
newline - sequence of characters used for a line ending (null means use the single character '\n')
indent - whitespace character used for indentation

writeTextContent

public void writeTextContent(java.lang.String text)
                      throws java.io.IOException
Write ordinary character data text content to document. This needs to write the text with any appropriate escaping.

Parameters:
text - content value text
Throws:
java.io.IOException - on error writing to document

writeCData

public void writeCData(java.lang.String text)
                throws java.io.IOException
Write CDATA text to document. This needs to write the text with any appropriate escaping.

Parameters:
text - content value text
Throws:
java.io.IOException - on error writing to document

indent

public void indent(int bias)
            throws java.io.IOException
Request output indent. Output the line end sequence followed by the appropriate number of indent characters.

Parameters:
bias - indent depth difference (positive or negative) from current element nesting depth
Throws:
java.io.IOException - on error writing to document

indent

public void indent()
            throws java.io.IOException
Request output indent. Output the line end sequence followed by the appropriate number of indent characters for the current nesting level.

Throws:
java.io.IOException - on error writing to document

flush

public void flush()
           throws java.io.IOException
Flush document output. Forces out all output generated to this point.

Specified by:
flush in interface IXMLWriter
Specified by:
flush in class XMLWriterBase
Throws:
java.io.IOException - on error writing to document

close

public void close()
           throws java.io.IOException
Close document output. Completes writing of document output, including closing the output medium.

Specified by:
close in interface IXMLWriter
Specified by:
close in class XMLWriterBase
Throws:
java.io.IOException - on error writing to document

createChildWriter

public IXMLWriter createChildWriter(java.lang.String[] uris)
Create a child writer instance to be used for a separate binding. The child writer inherits the stream and encoding from this writer, while using the supplied namespace URIs.

Parameters:
uris - ordered array of URIs for namespaces used in document (see GenericXMLWriter(String[]))
Returns:
child writer


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/impl/IChunkedOutput.html0000644000175000017500000002243611023035704025555 0ustar moellermoeller IChunkedOutput (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime.impl
Interface IChunkedOutput


public interface IChunkedOutput

Interface used to enhance an output stream with a separate method for writing the last chunk of data in a message. This is useful when working with a chunking transport layer, so that the output stream knows which particular write operation is the last one in the sequence.

Author:
Dennis M. Sosnoski

Method Summary
 void write(byte[] b, int off, int len)
          Normal write from byte array.
 void writeFinal(byte[] b, int off, int len)
          Write last data chunk from byte array.
 

Method Detail

write

void write(byte[] b,
           int off,
           int len)
           throws java.io.IOException
Normal write from byte array. This method is included only to make it clear that the writeFinal(byte[], int, int) is an alternative to the normal write.

Parameters:
b - byte array
off - starting offset
len - number of bytes to write
Throws:
java.io.IOException - on write error

writeFinal

void writeFinal(byte[] b,
                int off,
                int len)
                throws java.io.IOException
Write last data chunk from byte array. This method finishes output. It is an error if any further write operations (using either the write(byte[], int, int) method defined in this interface, or any of the other java.io.OutputStream methods) are executed after the call to this method.

Parameters:
b - byte array
off - starting offset
len - number of bytes to write
Throws:
java.io.IOException - on write error


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/impl/ISO88591Escaper.html0000644000175000017500000003147511023035704025221 0ustar moellermoeller ISO88591Escaper (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime.impl
Class ISO88591Escaper

java.lang.Object
  extended by org.jibx.runtime.impl.ISO88591Escaper
All Implemented Interfaces:
ICharacterEscaper

public class ISO88591Escaper
extends java.lang.Object
implements ICharacterEscaper

Handler for writing ASCII output stream. This code is specifically for XML 1.0 and would require changes for XML 1.1 (to handle the added legal characters, rather than throwing an exception).

Version:
1.0
Author:
Dennis M. Sosnoski

Method Summary
static ICharacterEscaper getInstance()
          Get instance of escaper.
 void writeAttribute(java.lang.String text, java.io.Writer writer)
          Write attribute value with character entity substitutions.
 void writeCData(java.lang.String text, java.io.Writer writer)
          Write CDATA to document.
 void writeContent(java.lang.String text, java.io.Writer writer)
          Write content value with character entity substitutions.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

writeAttribute

public void writeAttribute(java.lang.String text,
                           java.io.Writer writer)
                    throws java.io.IOException
Write attribute value with character entity substitutions. This assumes that attributes use the regular quote ('"') delimitor.

Specified by:
writeAttribute in interface ICharacterEscaper
Parameters:
text - attribute value text
writer - sink for output text
Throws:
java.io.IOException - on error writing to document

writeContent

public void writeContent(java.lang.String text,
                         java.io.Writer writer)
                  throws java.io.IOException
Write content value with character entity substitutions.

Specified by:
writeContent in interface ICharacterEscaper
Parameters:
text - content value text
writer - sink for output text
Throws:
java.io.IOException - on error writing to document

writeCData

public void writeCData(java.lang.String text,
                       java.io.Writer writer)
                throws java.io.IOException
Write CDATA to document. This writes the beginning and ending sequences for a CDATA section as well as the actual text, verifying that only characters allowed by the encoding are included in the text.

Specified by:
writeCData in interface ICharacterEscaper
Parameters:
text - content value text
writer - sink for output text
Throws:
java.io.IOException - on error writing to document

getInstance

public static ICharacterEscaper getInstance()
Get instance of escaper.

Returns:
escaper instance


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/impl/ISO88591StreamWriter.html0000644000175000017500000005564411023035704026273 0ustar moellermoeller ISO88591StreamWriter (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime.impl
Class ISO88591StreamWriter

java.lang.Object
  extended by org.jibx.runtime.impl.XMLWriterNamespaceBase
      extended by org.jibx.runtime.impl.XMLWriterBase
          extended by org.jibx.runtime.impl.StreamWriterBase
              extended by org.jibx.runtime.impl.ISO88591StreamWriter
All Implemented Interfaces:
IExtensibleWriter, IXMLWriter

public class ISO88591StreamWriter
extends StreamWriterBase

Handler for marshalling text document to a UTF-8 output stream.

Author:
Dennis M. Sosnoski

Field Summary
 
Fields inherited from class org.jibx.runtime.impl.StreamWriterBase
DEFAULT_BUFFER_SIZE
 
Constructor Summary
ISO88591StreamWriter(ISO88591StreamWriter base, java.lang.String[] uris)
          Copy constructor.
ISO88591StreamWriter(java.lang.String[] uris)
          Constructor using default buffer size.
ISO88591StreamWriter(java.lang.String[] uris, byte[] buffer)
          Constructor with supplied buffer.
 
Method Summary
 IXMLWriter createChildWriter(java.lang.String[] uris)
          Create a child writer instance to be used for a separate binding.
 void writeCData(java.lang.String text)
          Write CDATA text to document.
 void writeTextContent(java.lang.String text)
          Write ordinary character data text content to document.
 
Methods inherited from class org.jibx.runtime.impl.StreamWriterBase
close, flush, getEncodingName, indent, indent, popExtensionNamespaces, pushExtensionNamespaces, reset, setIndentSpaces, setNamespaceUris, setOutput
 
Methods inherited from class org.jibx.runtime.impl.XMLWriterBase
addAttribute, closeEmptyTag, closeStartTag, endTag, startTagClosed, startTagNamespaces, startTagOpen, writeComment, writeDocType, writeEntityRef, writePI, writeXMLDecl
 
Methods inherited from class org.jibx.runtime.impl.XMLWriterNamespaceBase
getExtensionNamespaces, getNamespaceCount, getNamespacePrefix, getNamespaces, getNamespaceUri, getNestingDepth, getPrefixIndex, openNamespaces
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.jibx.runtime.IXMLWriter
getExtensionNamespaces, getNamespaceCount, getNamespacePrefix, getNamespaces, getNamespaceUri, getNestingDepth, getPrefixIndex, openNamespaces
 

Constructor Detail

ISO88591StreamWriter

public ISO88591StreamWriter(java.lang.String[] uris,
                            byte[] buffer)
Constructor with supplied buffer.

Parameters:
uris - ordered array of URIs for namespaces used in document (must be constant; the value in position 0 must always be the empty string "", and the value in position 1 must always be the XML namespace "http://www.w3.org/XML/1998/namespace")
buffer - output data buffer

ISO88591StreamWriter

public ISO88591StreamWriter(java.lang.String[] uris)
Constructor using default buffer size.

Parameters:
uris - ordered array of URIs for namespaces used in document (must be constant; the value in position 0 must always be the empty string "", and the value in position 1 must always be the XML namespace "http://www.w3.org/XML/1998/namespace")

ISO88591StreamWriter

public ISO88591StreamWriter(ISO88591StreamWriter base,
                            java.lang.String[] uris)
Copy constructor. This uses the stream and actual buffer from a supplied instance, while setting a new array of namespace URIs. It's intended for use when invoking one binding from within another binding.

Parameters:
base - instance to be used as base for writer
uris - ordered array of URIs for namespaces used in document (see ISO88591StreamWriter(String[]))
Method Detail

writeTextContent

public void writeTextContent(java.lang.String text)
                      throws java.io.IOException
Write ordinary character data text content to document.

Parameters:
text - content value text
Throws:
java.io.IOException - on error writing to document

writeCData

public void writeCData(java.lang.String text)
                throws java.io.IOException
Write CDATA text to document.

Parameters:
text - content value text
Throws:
java.io.IOException - on error writing to document

createChildWriter

public IXMLWriter createChildWriter(java.lang.String[] uris)
                             throws java.io.IOException
Create a child writer instance to be used for a separate binding. The child writer inherits the stream and encoding from this writer, while using the supplied namespace URIs.

Parameters:
uris - ordered array of URIs for namespaces used in document (see ISO88591StreamWriter(String[]))
Returns:
child writer
Throws:
java.io.IOException


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/impl/ITrackSourceImpl.html0000644000175000017500000002204011023035704026011 0ustar moellermoeller ITrackSourceImpl (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime.impl
Interface ITrackSourceImpl

All Superinterfaces:
ITrackSource

public interface ITrackSourceImpl
extends ITrackSource

Unmarshalling source tracking implementation interface. This interface is added to bound classes when requested by the binding definition. It defines the method used by JiBX to add unmarshal source tracking information to an instance of a bound class.

Version:
1.0
Author:
Dennis M. Sosnoski

Method Summary
 void jibx_setSource(java.lang.String name, int line, int column)
          Set source document information.
 
Methods inherited from interface org.jibx.runtime.ITrackSource
jibx_getColumnNumber, jibx_getDocumentName, jibx_getLineNumber
 

Method Detail

jibx_setSource

void jibx_setSource(java.lang.String name,
                    int line,
                    int column)
Set source document information.

Parameters:
name - of source document, or null if none
line - source document line number, or -1 if unknown
column - source document column position, or -1 if unknown


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/impl/IXMLReaderFactory.html0000644000175000017500000003601011023035704026057 0ustar moellermoeller IXMLReaderFactory (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime.impl
Interface IXMLReaderFactory

All Known Implementing Classes:
StAXReaderFactory, XMLPullReaderFactory

public interface IXMLReaderFactory

Interface for factories used to create XML reader instances. Instances of this interface must be assumed to be single threaded.

Version:
1.0
Author:
Dennis M. Sosnoski

Method Summary
 IXMLReader createReader(java.io.InputStream is, java.lang.String name, java.lang.String enc, boolean nsf)
          Get new XML reader instance for document from input stream.
 IXMLReader createReader(java.io.Reader rdr, java.lang.String name, boolean nsf)
          Get new XML reader instance for document from reader.
 IXMLReader recycleReader(IXMLReader old, java.io.InputStream is, java.lang.String name, java.lang.String enc)
          Recycle XML reader instance for new document from input stream.
 IXMLReader recycleReader(IXMLReader old, java.io.Reader rdr, java.lang.String name)
          Recycle XML reader instance for document from reader.
 

Method Detail

createReader

IXMLReader createReader(java.io.InputStream is,
                        java.lang.String name,
                        java.lang.String enc,
                        boolean nsf)
                        throws JiBXException
Get new XML reader instance for document from input stream.

Parameters:
is - document input stream
name - document name (null if unknown)
enc - document character encoding (null if unknown)
nsf - namespaces enabled flag
Returns:
new reader instance for document
Throws:
JiBXException - on parser configuration error

createReader

IXMLReader createReader(java.io.Reader rdr,
                        java.lang.String name,
                        boolean nsf)
                        throws JiBXException
Get new XML reader instance for document from reader.

Parameters:
rdr - document reader
name - document name (null if unknown)
nsf - namespaces enabled flag
Returns:
new reader instance for document
Throws:
JiBXException - on parser configuration error

recycleReader

IXMLReader recycleReader(IXMLReader old,
                         java.io.InputStream is,
                         java.lang.String name,
                         java.lang.String enc)
                         throws JiBXException
Recycle XML reader instance for new document from input stream. If the supplied reader can be reused it will be configured for the new document and returned; otherwise, a new reader will be created for the document. The namespace enabled state of the returned reader is always the same as that of the supplied reader.

Parameters:
old - reader instance to be recycled
is - document input stream
name - document name (null if unknown)
enc - document character encoding (null if unknown)
Returns:
new reader instance for document
Throws:
JiBXException - on parser configuration error

recycleReader

IXMLReader recycleReader(IXMLReader old,
                         java.io.Reader rdr,
                         java.lang.String name)
                         throws JiBXException
Recycle XML reader instance for document from reader. If the supplied reader can be reused it will be configured for the new document and returned; otherwise, a new reader will be created for the document. The namespace enabled state of the returned reader is always the same as that of the supplied reader.

Parameters:
old - reader instance to be recycled
rdr - document reader
name - document name (null if unknown)
Returns:
new reader instance for document
Throws:
JiBXException - on parser configuration error


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/impl/InputStreamWrapper.html0000644000175000017500000004117011023035704026452 0ustar moellermoeller InputStreamWrapper (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime.impl
Class InputStreamWrapper

java.lang.Object
  extended by org.jibx.runtime.impl.InputStreamWrapper

public class InputStreamWrapper
extends java.lang.Object

Wrapper for input stream that supports multiple character encodings. This is needed because the XPP3 pull parser does not support detecting the character encoding for a document based on the content of the document. If used with a common encoding this performs the conversion to characters using an inner reader class; otherwise, this creates the appropriate reader type

Author:
Dennis M. Sosnoski

Field Summary
static int DEFAULT_BUFFER_SIZE
          Default input buffer size.
 
Constructor Summary
InputStreamWrapper()
          Constructor using default buffer size.
InputStreamWrapper(int size)
          Constructor.
 
Method Summary
 void close()
          Close document input.
 java.lang.String getEncoding()
          Get encoding for input document.
 java.io.Reader getReader()
          Get reader for wrapped input stream.
 void reset()
          Reset to initial state for reuse.
 void setEncoding(java.lang.String enc)
          Set encoding for stream.
 void setInput(java.io.InputStream ins)
          Set input stream with encoding to be defined later.
 void setInput(java.io.InputStream ins, java.lang.String enc)
          Set input stream with specified encoding.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_BUFFER_SIZE

public static final int DEFAULT_BUFFER_SIZE
Default input buffer size.

See Also:
Constant Field Values
Constructor Detail

InputStreamWrapper

public InputStreamWrapper(int size)
Constructor.


InputStreamWrapper

public InputStreamWrapper()
Constructor using default buffer size.

Method Detail

setInput

public void setInput(java.io.InputStream ins)
Set input stream with encoding to be defined later. If an input stream is currently open when this is called the existing stream is closed, with any errors ignored.

Parameters:
ins - stream for document data input

setInput

public void setInput(java.io.InputStream ins,
                     java.lang.String enc)
              throws java.io.IOException
Set input stream with specified encoding. If an input stream is currently open when this is called the existing stream is closed, with any errors ignored.

Parameters:
ins - stream for document data input
enc - character encoding used for input from stream (null if to be determined from XML input)
Throws:
java.io.IOException

setEncoding

public void setEncoding(java.lang.String enc)
                 throws java.io.IOException
Set encoding for stream. This call is only valid if the encoding has not been set previously, and if the encoding is a recognized type.

Parameters:
enc - character encoding used for input from stream (null if to be determined from XML input)
Throws:
java.io.IOException - if unknown encoding, or encoding already set

getReader

public java.io.Reader getReader()
                         throws java.io.IOException
Get reader for wrapped input stream. This creates and returns a reader using the appropriate encoding, if necessary reading and examining the first part of the stream (including the XML declaration, if present) to determine the encoding.

Returns:
reader
Throws:
java.io.IOException - if error reading from document or creating a reader for the encoding found

getEncoding

public java.lang.String getEncoding()
Get encoding for input document. This call may not return an accurate result until after getReader() is called.

Returns:
character encoding for input document

close

public void close()
           throws java.io.IOException
Close document input. Completes reading of document input, including closing the input medium.

Throws:
java.io.IOException - on error closing document

reset

public void reset()
Reset to initial state for reuse.



Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/impl/MarshallingContext.html0000644000175000017500000026333111023035704026451 0ustar moellermoeller MarshallingContext (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime.impl
Class MarshallingContext

java.lang.Object
  extended by org.jibx.runtime.impl.MarshallingContext
All Implemented Interfaces:
IMarshallingContext

public class MarshallingContext
extends java.lang.Object
implements IMarshallingContext

JiBX serializer supplying convenience methods for marshalling. Most of these methods are designed for use in code generated by the binding generator.

Author:
Dennis M. Sosnoski

Field Summary
static java.lang.String XML_NAMESPACE
          Fixed XML namespace.
 
Constructor Summary
MarshallingContext(java.lang.String[] classes, java.lang.String[] mcs, java.lang.String[] uris, IBindingFactory ifact)
          Constructor.
 
Method Summary
 void addMarshalling(int index, java.lang.String name)
          Define marshalling for class.
 MarshallingContext attribute(int index, java.lang.String name, int value)
          Generate integer attribute.
 MarshallingContext attribute(int index, java.lang.String name, int value, java.lang.String[] table)
          Generate enumeration attribute.
 MarshallingContext attribute(int index, java.lang.String name, java.lang.String value)
          Generate text attribute.
 java.lang.String buildNameString(int index, java.lang.String name)
          Build name with optional namespace.
 MarshallingContext closeStartContent()
          Close start tag with content to follow.
 MarshallingContext closeStartEmpty()
          Close start tag with no content (empty tag).
 MarshallingContext content(int value)
          Add integer content to current element.
 MarshallingContext content(int value, java.lang.String[] table)
          Add enumeration content to current element.
 MarshallingContext content(java.lang.String value)
          Add text content to current element.
 MarshallingContext element(int index, java.lang.String name, int value)
          Generate complete element with integer content.
 MarshallingContext element(int index, java.lang.String name, int value, java.lang.String[] table)
          Generate complete element with enumeration content.
 MarshallingContext element(int index, java.lang.String name, java.lang.String value)
          Generate complete element with text content.
 void endDocument()
          End document.
 MarshallingContext endTag(int index, java.lang.String name)
          Generate end tag for element.
 IBindingFactory getFactory()
          Return the binding factory used to create this unmarshaller.
 java.util.HashMap getIdMap()
          Get shared ID map.
 int getIndent()
          Get current nesting indent spaces.
 IMarshaller getMarshaller(int index, java.lang.String name)
          Find the marshaller for a particular class index in the current context.
 java.lang.String[] getNamespaces()
          Get namespace URIs for mapping.
 int getStackDepth()
          Get current marshalling object stack depth.
 java.lang.Object getStackObject(int depth)
          Get object from marshalling stack.
 java.lang.Object getStackTop()
          Get top object on marshalling stack.
 java.lang.Object getUserContext()
          Get the user context object.
 IXMLWriter getXmlWriter()
          Get the writer being used for output.
 MarshallingContext marshalCollection(java.util.ArrayList col)
          Marshal all items in a collection.
 MarshallingContext marshalCollection(java.util.Collection col)
          Marshal all items in a collection.
 MarshallingContext marshalCollection(java.util.Vector col)
          Marshal all items in a collection.
 void marshalDocument(java.lang.Object root)
          Marshal document from root object without XML declaration.
 void marshalDocument(java.lang.Object root, java.lang.String enc, java.lang.Boolean alone)
          Marshal document from root object.
 void marshalDocument(java.lang.Object root, java.lang.String enc, java.lang.Boolean alone, java.io.OutputStream outs)
          Marshal document from root object to output stream with encoding.
 void marshalDocument(java.lang.Object root, java.lang.String enc, java.lang.Boolean alone, java.io.Writer outw)
          Marshal document from root object to writer.
 void popObject()
          Pop marshalled object from stack.
 void pushObject(java.lang.Object obj)
          Push created object to marshalling stack.
 void removeMarshalling(int index)
          Undefine marshalling for element.
 void reset()
          Reset to initial state for reuse.
 void setFromContext(MarshallingContext parent)
          Initializes the context to use the same marshalled text destination and parameters as another marshalling context.
 void setIndent(int count)
          Set nesting indent spaces.
 void setIndent(int count, java.lang.String newline, char indent)
          Set nesting indentation.
 void setOutput(java.io.OutputStream outs, java.lang.String enc)
          Set output stream and encoding.
 void setOutput(java.io.OutputStream outs, java.lang.String enc, ICharacterEscaper esc)
          Set output stream with encoding and escaper.
 void setOutput(java.io.Writer outw)
          Set output writer.
 void setOutput(java.io.Writer outw, ICharacterEscaper esc)
          Set output writer and escaper.
 void setUserContext(java.lang.Object obj)
          Set a user context object.
 void setXmlWriter(IXMLWriter xwrite)
          Set the writer being used for output.
 void startDocument(java.lang.String enc, java.lang.Boolean alone)
          Start document.
 void startDocument(java.lang.String enc, java.lang.Boolean alone, java.io.OutputStream outs)
          Start document with output stream and encoding.
 void startDocument(java.lang.String enc, java.lang.Boolean alone, java.io.Writer outw)
          Start document with writer.
 MarshallingContext startTag(int index, java.lang.String name)
          Generate start tag for element without attributes.
 MarshallingContext startTagAttributes(int index, java.lang.String name)
          Generate start tag for element with attributes.
 MarshallingContext startTagNamespaces(int index, java.lang.String name, int[] nums, java.lang.String[] prefs)
          Generate start tag for element with namespaces.
 MarshallingContext writeCData(java.lang.String text)
          Write CDATA text to document.
 MarshallingContext writeContent(java.lang.String text)
          Write content value with character entity substitutions.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

XML_NAMESPACE

public static final java.lang.String XML_NAMESPACE
Fixed XML namespace.

See Also:
Constant Field Values
Constructor Detail

MarshallingContext

public MarshallingContext(java.lang.String[] classes,
                          java.lang.String[] mcs,
                          java.lang.String[] uris,
                          IBindingFactory ifact)
Constructor.

Parameters:
classes - ordered array of class names included in mapping definition (reference kept, must be constant)
mcs - names of marshaller classes for indexes with fixed marshallers (as opposed to mapping slots, which may be overridden; reference kept, must be constant)
uris - ordered array of URIs for namespaces used in binding (must be constant; the value in position 0 must always be the empty string "", and the value in position 1 must always be the XML namespace "http://www.w3.org/XML/1998/namespace")
ifact - binding factory creating this unmarshaller
Method Detail

setOutput

public void setOutput(java.io.OutputStream outs,
                      java.lang.String enc,
                      ICharacterEscaper esc)
               throws JiBXException
Set output stream with encoding and escaper. This forces handling of the output stream to use the Java character encoding support with the supplied escaper.

Specified by:
setOutput in interface IMarshallingContext
Parameters:
outs - stream for document data output
enc - document output encoding, or null uses UTF-8 default
esc - escaper for writing characters to stream
Throws:
JiBXException - if error setting output

setOutput

public void setOutput(java.io.OutputStream outs,
                      java.lang.String enc)
               throws JiBXException
Set output stream and encoding.

Specified by:
setOutput in interface IMarshallingContext
Parameters:
outs - stream for document data output
enc - document output encoding, or null for default
Throws:
JiBXException - if error creating setting output

setOutput

public void setOutput(java.io.Writer outw,
                      ICharacterEscaper esc)
Set output writer and escaper.

Specified by:
setOutput in interface IMarshallingContext
Parameters:
outw - writer for document data output
esc - escaper for writing characters

setOutput

public void setOutput(java.io.Writer outw)
Set output writer.

Specified by:
setOutput in interface IMarshallingContext
Parameters:
outw - writer for document data output

getXmlWriter

public IXMLWriter getXmlWriter()
Get the writer being used for output.

Specified by:
getXmlWriter in interface IMarshallingContext
Returns:
XML writer used for output

setXmlWriter

public void setXmlWriter(IXMLWriter xwrite)
Set the writer being used for output.

Specified by:
setXmlWriter in interface IMarshallingContext
Parameters:
xwrite - XML writer used for output

getIndent

public int getIndent()
Get current nesting indent spaces. This returns the number of spaces used to show indenting, if used.

Specified by:
getIndent in interface IMarshallingContext
Returns:
number of spaces indented per level, or negative if indentation disabled

setIndent

public void setIndent(int count)
Set nesting indent spaces. This is advisory only, and implementations of this interface are free to ignore it. The intent is to indicate that the generated output should use indenting to illustrate element nesting.

Specified by:
setIndent in interface IMarshallingContext
Parameters:
count - number of spaces to indent per level, or disable indentation if negative

setIndent

public void setIndent(int count,
                      java.lang.String newline,
                      char indent)
Set nesting indentation. This is advisory only, and implementations of this interface are free to ignore it. The intent is to indicate that the generated output should use indenting to illustrate element nesting.

Specified by:
setIndent in interface IMarshallingContext
Parameters:
count - number of character to indent per level, or disable indentation if negative (zero means new line only)
newline - sequence of characters used for a line ending (null means use the single character '\n')
indent - whitespace character used for indentation

setFromContext

public void setFromContext(MarshallingContext parent)
                    throws java.io.IOException
Initializes the context to use the same marshalled text destination and parameters as another marshalling context. This method is designed for use when an initial context needs to create and invoke a secondary context (generally from a different binding) in the course of an marshalling operation. Note that once the secondary context has been used it's generally necessary to do a XMLWriterBase.flush() operation on the writer used by the that context before resuming output on the parent.

Parameters:
parent - context supplying target for marshalled document text
Throws:
java.io.IOException - on error writing output

reset

public void reset()
Reset to initial state for reuse. The context is serially reusable, as long as this method is called to clear any retained state information between uses. It is automatically called when output is set.

Specified by:
reset in interface IMarshallingContext

getFactory

public IBindingFactory getFactory()
Return the binding factory used to create this unmarshaller.

Returns:
binding factory

getNamespaces

public java.lang.String[] getNamespaces()
Get namespace URIs for mapping. This gets the full ordered array of namespaces known in the binding used for this marshalling, where the index number of each namespace URI is the namespace index used to lookup the prefix when marshalling a name in that namespace. The returned array must not be modified.

Returns:
array of namespaces

startDocument

public void startDocument(java.lang.String enc,
                          java.lang.Boolean alone)
                   throws JiBXException
Start document. This can only be validly called immediately following one of the set output methods; otherwise the output document will be corrupt.

Specified by:
startDocument in interface IMarshallingContext
Parameters:
enc - document encoding, null if not specified
alone - standalone document flag, null if not specified
Throws:
JiBXException - on any error (possibly wrapping other exception)

startDocument

public void startDocument(java.lang.String enc,
                          java.lang.Boolean alone,
                          java.io.OutputStream outs)
                   throws JiBXException
Start document with output stream and encoding. The effect is the same as from first setting the output stream and encoding, then making the call to start document.

Specified by:
startDocument in interface IMarshallingContext
Parameters:
enc - document encoding, null if not specified
alone - standalone document flag, null if not specified
outs - stream for document data output
Throws:
JiBXException - on any error (possibly wrapping other exception)

startDocument

public void startDocument(java.lang.String enc,
                          java.lang.Boolean alone,
                          java.io.Writer outw)
                   throws JiBXException
Start document with writer. The effect is the same as from first setting the writer, then making the call to start document.

Specified by:
startDocument in interface IMarshallingContext
Parameters:
enc - document encoding, null if not specified
alone - standalone document flag, null if not specified
outw - writer for document data output
Throws:
JiBXException - on any error (possibly wrapping other exception)

endDocument

public void endDocument()
                 throws JiBXException
End document. Finishes all output and closes the document. Note that if this is called with an imcomplete marshalling the result will not be well-formed XML.

Specified by:
endDocument in interface IMarshallingContext
Throws:
JiBXException - on any error (possibly wrapping other exception)

buildNameString

public java.lang.String buildNameString(int index,
                                        java.lang.String name)
Build name with optional namespace. Just returns the appropriate name format.

Parameters:
index - namespace URI index number
name - local name part of name
Returns:
formatted name string

startTag

public MarshallingContext startTag(int index,
                                   java.lang.String name)
                            throws JiBXException
Generate start tag for element without attributes.

Parameters:
index - namespace URI index number
name - element name
Returns:
this context (to allow chained calls)
Throws:
JiBXException - on any error (possibly wrapping other exception)

startTagAttributes

public MarshallingContext startTagAttributes(int index,
                                             java.lang.String name)
                                      throws JiBXException
Generate start tag for element with attributes. This only opens the start tag, allowing attributes to be added immediately following this call.

Parameters:
index - namespace URI index number
name - element name
Returns:
this context (to allow chained calls)
Throws:
JiBXException - on any error (possibly wrapping other exception)

attribute

public MarshallingContext attribute(int index,
                                    java.lang.String name,
                                    java.lang.String value)
                             throws JiBXException
Generate text attribute. This can only be used following an open start tag with attributes.

Parameters:
index - namespace URI index number
name - attribute name
value - text value for attribute (cannot be null)
Returns:
this context (to allow chained calls)
Throws:
JiBXException - on any error (possibly wrapping other exception)

attribute

public MarshallingContext attribute(int index,
                                    java.lang.String name,
                                    int value)
                             throws JiBXException
Generate integer attribute. This can only be used following an open start tag.

Parameters:
index - namespace URI index number
name - attribute name
value - integer value for attribute
Returns:
this context (to allow chained calls)
Throws:
JiBXException - on any error (possibly wrapping other exception)

attribute

public MarshallingContext attribute(int index,
                                    java.lang.String name,
                                    int value,
                                    java.lang.String[] table)
                             throws JiBXException
Generate enumeration attribute. The actual text to be written is obtained by indexing into the supplied array of values. This can only be used following an open start tag.

Parameters:
index - namespace URI index number
name - attribute name
value - integer enumeration value (zero-based)
table - text values in enumeration
Returns:
this context (to allow chained calls)
Throws:
JiBXException - on any error (possibly wrapping other exception)

closeStartContent

public MarshallingContext closeStartContent()
                                     throws JiBXException
Close start tag with content to follow.

Returns:
this context (to allow chained calls)
Throws:
JiBXException - on any error (possibly wrapping other exception)

closeStartEmpty

public MarshallingContext closeStartEmpty()
                                   throws JiBXException
Close start tag with no content (empty tag).

Returns:
this context (to allow chained calls)
Throws:
JiBXException - on any error (possibly wrapping other exception)

content

public MarshallingContext content(java.lang.String value)
                           throws JiBXException
Add text content to current element.

Parameters:
value - text element content
Returns:
this context (to allow chained calls)
Throws:
JiBXException - on any error (possibly wrapping other exception)

content

public MarshallingContext content(int value)
                           throws JiBXException
Add integer content to current element.

Parameters:
value - integer element content
Returns:
this context (to allow chained calls)
Throws:
JiBXException - on any error (possibly wrapping other exception)

content

public MarshallingContext content(int value,
                                  java.lang.String[] table)
                           throws JiBXException
Add enumeration content to current element. The actual text to be written is obtained by indexing into the supplied array of values.

Parameters:
value - integer enumeration value (zero-based)
table - text values in enumeration
Returns:
this context (to allow chained calls)
Throws:
JiBXException - on any error (possibly wrapping other exception)

endTag

public MarshallingContext endTag(int index,
                                 java.lang.String name)
                          throws JiBXException
Generate end tag for element.

Parameters:
index - namespace URI index number
name - element name
Returns:
this context (to allow chained calls)
Throws:
JiBXException - on any error (possibly wrapping other exception)

element

public MarshallingContext element(int index,
                                  java.lang.String name,
                                  java.lang.String value)
                           throws JiBXException
Generate complete element with text content.

Parameters:
index - namespace URI index number
name - element name
value - text element content
Returns:
this context (to allow chained calls)
Throws:
JiBXException - on any error (possibly wrapping other exception)

element

public MarshallingContext element(int index,
                                  java.lang.String name,
                                  int value)
                           throws JiBXException
Generate complete element with integer content.

Parameters:
index - namespace URI index number
name - element name
value - integer element content
Returns:
this context (to allow chained calls)
Throws:
JiBXException - on any error (possibly wrapping other exception)

element

public MarshallingContext element(int index,
                                  java.lang.String name,
                                  int value,
                                  java.lang.String[] table)
                           throws JiBXException
Generate complete element with enumeration content. The actual text to be written is obtained by indexing into the supplied array of values.

Parameters:
index - namespace URI index number
name - element name
value - integer enumeration value (zero-based)
table - text values in enumeration
Returns:
this context (to allow chained calls)
Throws:
JiBXException - on any error (possibly wrapping other exception)

writeCData

public MarshallingContext writeCData(java.lang.String text)
                              throws java.io.IOException
Write CDATA text to document.

Parameters:
text - content value text
Returns:
this context (to allow chained calls)
Throws:
java.io.IOException - on error writing to document

writeContent

public MarshallingContext writeContent(java.lang.String text)
                                throws java.io.IOException
Write content value with character entity substitutions.

Parameters:
text - content value text
Returns:
this context (to allow chained calls)
Throws:
java.io.IOException - on error writing to document

marshalCollection

public MarshallingContext marshalCollection(java.util.Collection col)
                                     throws JiBXException
Marshal all items in a collection. This variation is for generic collections.

Parameters:
col - collection of items to be marshalled
Returns:
this context (to allow chained calls)
Throws:
JiBXException - on any error (possibly wrapping other exception)

marshalCollection

public MarshallingContext marshalCollection(java.util.ArrayList col)
                                     throws JiBXException
Marshal all items in a collection. This variation is for ArrayList collections.

Parameters:
col - collection of items to be marshalled
Returns:
this context (to allow chained calls)
Throws:
JiBXException - on any error (possibly wrapping other exception)

marshalCollection

public MarshallingContext marshalCollection(java.util.Vector col)
                                     throws JiBXException
Marshal all items in a collection. This variation is for Vector collections.

Parameters:
col - collection of items to be marshalled
Returns:
this context (to allow chained calls)
Throws:
JiBXException - on any error (possibly wrapping other exception)

addMarshalling

public void addMarshalling(int index,
                           java.lang.String name)
Define marshalling for class. Adds the marshalling definition using fixed indexes for each class, allowing direct lookup of the marshaller when multiple versions are defined.

Parameters:
index - class index for marshalling definition
name - marshaller class name handling

removeMarshalling

public void removeMarshalling(int index)
Undefine marshalling for element. Removes the marshalling definition for a particular class index.

Parameters:
index - class index for marshalling definition

startTagNamespaces

public MarshallingContext startTagNamespaces(int index,
                                             java.lang.String name,
                                             int[] nums,
                                             java.lang.String[] prefs)
                                      throws JiBXException
Generate start tag for element with namespaces. This creates the actual start tag, along with any necessary namespace declarations. Previously active namespace declarations are not duplicated. The tag is left incomplete, allowing other attributes to be added. TODO: Handle nested default namespaces declarations, prefixes for outers

Parameters:
index - namespace URI index number
name - element name
nums - array of namespace indexes defined by this element (must be constant, reference is kept until end of element)
prefs - array of namespace prefixes mapped by this element (no null values, use "" for default namespace declaration)
Returns:
this context (to allow chained calls)
Throws:
JiBXException - on any error (possibly wrapping other exception)

getMarshaller

public IMarshaller getMarshaller(int index,
                                 java.lang.String name)
                          throws JiBXException
Find the marshaller for a particular class index in the current context. TODO: Eliminate the string passing, since it's not a common enough problem to be worth checking (and with abstract mappings can be really difficult to set properly)

Specified by:
getMarshaller in interface IMarshallingContext
Parameters:
index - class index for marshalling definition
name - fully qualified name of class to be marshalled (used only for validation)
Returns:
marshalling handler for class
Throws:
JiBXException - on any error (possibly wrapping other exception)

marshalDocument

public void marshalDocument(java.lang.Object root)
                     throws JiBXException
Marshal document from root object without XML declaration. This can only be validly called immediately following one of the set output methods; otherwise the output document will be corrupt. The effect of this method is the same as the sequence of a call to marshal the root object using this context followed by a call to endDocument().

Specified by:
marshalDocument in interface IMarshallingContext
Parameters:
root - object at root of structure to be marshalled, which must have a top-level mapping in the binding
Throws:
JiBXException - on any error (possibly wrapping other exception)

marshalDocument

public void marshalDocument(java.lang.Object root,
                            java.lang.String enc,
                            java.lang.Boolean alone)
                     throws JiBXException
Marshal document from root object. This can only be validly called immediately following one of the set output methods; otherwise the output document will be corrupt. The effect of this method is the same as the sequence of a call to startDocument(java.lang.String, java.lang.Boolean), a call to marshal the root object using this context, and finally a call to endDocument().

Specified by:
marshalDocument in interface IMarshallingContext
Parameters:
root - object at root of structure to be marshalled, which must have a top-level mapping in the binding
enc - document encoding, null if not specified
alone - standalone document flag, null if not specified
Throws:
JiBXException - on any error (possibly wrapping other exception)

marshalDocument

public void marshalDocument(java.lang.Object root,
                            java.lang.String enc,
                            java.lang.Boolean alone,
                            java.io.OutputStream outs)
                     throws JiBXException
Marshal document from root object to output stream with encoding. The effect of this method is the same as the sequence of a call to startDocument(java.lang.String, java.lang.Boolean), a call to marshal the root object using this context, and finally a call to endDocument().

Specified by:
marshalDocument in interface IMarshallingContext
Parameters:
root - object at root of structure to be marshalled, which must have a top-level mapping in the binding
enc - document encoding, null if not specified
alone - standalone document flag, null if not specified
outs - stream for document data output
Throws:
JiBXException - on any error (possibly wrapping other exception)

marshalDocument

public void marshalDocument(java.lang.Object root,
                            java.lang.String enc,
                            java.lang.Boolean alone,
                            java.io.Writer outw)
                     throws JiBXException
Marshal document from root object to writer. The effect of this method is the same as the sequence of a call to startDocument(java.lang.String, java.lang.Boolean), a call to marshal the root object using this context, and finally a call to endDocument().

Specified by:
marshalDocument in interface IMarshallingContext
Parameters:
root - object at root of structure to be marshalled, which must have a top-level mapping in the binding
enc - document encoding, null if not specified
alone - standalone document flag, null if not specified
outw - writer for document data output
Throws:
JiBXException - on any error (possibly wrapping other exception)

getIdMap

public java.util.HashMap getIdMap()
Get shared ID map. The ID map returned is not used directly by the marshalling code, but is provided to support user extensions.

Returns:
ID map

setUserContext

public void setUserContext(java.lang.Object obj)
Set a user context object. This context object is not used directly by JiBX, but can be accessed by all types of user extension methods. The context object is automatically cleared by the reset() method, so to make use of this you need to first call the appropriate version of the setOutput() method, then this method, and finally one of the marshalDocument methods which uses the previously-set output (not the ones which take a stream or writer as parameter, since they call setOutput() themselves).

Specified by:
setUserContext in interface IMarshallingContext
Parameters:
obj - user context object, or null if clearing existing context object
See Also:
getUserContext()

getUserContext

public java.lang.Object getUserContext()
Get the user context object.

Specified by:
getUserContext in interface IMarshallingContext
Returns:
user context object, or null if no context object set
See Also:
setUserContext(Object)

pushObject

public void pushObject(java.lang.Object obj)
Push created object to marshalling stack. This must be called before beginning the marshalling of the object. It is only called for objects with structure, not for those converted directly to and from text.

Specified by:
pushObject in interface IMarshallingContext
Parameters:
obj - object being marshalled

popObject

public void popObject()
               throws JiBXException
Pop marshalled object from stack.

Specified by:
popObject in interface IMarshallingContext
Throws:
JiBXException - if no object on stack

getStackDepth

public int getStackDepth()
Get current marshalling object stack depth. This allows tracking nested calls to marshal one object while in the process of marshalling another object. The bottom item on the stack is always the root object being marshalled.

Specified by:
getStackDepth in interface IMarshallingContext
Returns:
number of objects in marshalling stack

getStackObject

public java.lang.Object getStackObject(int depth)
Get object from marshalling stack. This stack allows tracking nested calls to marshal one object while in the process of marshalling another object. The bottom item on the stack is always the root object being marshalled.

Specified by:
getStackObject in interface IMarshallingContext
Parameters:
depth - object depth in stack to be retrieved (must be in the range of zero to the current depth minus one).
Returns:
object from marshalling stack

getStackTop

public java.lang.Object getStackTop()
Get top object on marshalling stack. This is safe to call even when no objects are on the stack.

Specified by:
getStackTop in interface IMarshallingContext
Returns:
object from marshalling stack, or null if none


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/impl/RuntimeSupport.html0000644000175000017500000003077611023035704025670 0ustar moellermoeller RuntimeSupport (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime.impl
Class RuntimeSupport

java.lang.Object
  extended by org.jibx.runtime.impl.RuntimeSupport

public abstract class RuntimeSupport
extends java.lang.Object

Support class providing methods used by generated code.

Author:
Dennis M. Sosnoski

Constructor Summary
RuntimeSupport()
           
 
Method Summary
static java.lang.String[] expandNamespaces(java.lang.String blob, java.lang.String[] uris)
          Expand names URI indexes into an array of individual names URIs.
static java.lang.String[] splitClassNames(int count, java.lang.String blob)
          Split concatenated class names string into an array of individual class names.
static java.lang.String[] splitNames(int count, java.lang.String blob)
          Split concatenated names string into an array of individual names.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RuntimeSupport

public RuntimeSupport()
Method Detail

splitClassNames

public static java.lang.String[] splitClassNames(int count,
                                                 java.lang.String blob)
Split concatenated class names string into an array of individual class names. This is used by the generated binding factory code, to reduce the size of the generated classes and methods. It takes as input a string consisting of compacted fully-qualified class names separated by '|' delimitor characters. If the compacted name starts with one or more '.' characters the corresponding number of package name levels are taken from the last class name. Empty names are left null in the array.

Parameters:
count - number of names
blob - compacted class names separated by '|' delimitors
Returns:
expanded class names

expandNamespaces

public static java.lang.String[] expandNamespaces(java.lang.String blob,
                                                  java.lang.String[] uris)
Expand names URI indexes into an array of individual names URIs. This is used by the generated binding factory code, to reduce the size of the generated classes and methods. It takes as input a string where each character is a namespace index, biased by +2 in order to avoid the use of null characters, along with a table of corresponding namespace URIs. The character value 1 is used as a marker for the case where no namespace is associated with an index.

Parameters:
blob - string of characters representing namespace indexes
uris - namespace URIs defined in binding
Returns:
expanded class names

splitNames

public static java.lang.String[] splitNames(int count,
                                            java.lang.String blob)
Split concatenated names string into an array of individual names. This is used by the generated binding factory code, to reduce the size of the generated classes and methods. It takes as input a string consisting of names separated by '|' delimitor characters.

Parameters:
count - number of names
blob - element names separated by '|' delimitors
Returns:
expanded class names


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/impl/SparseArrayIterator.html0000644000175000017500000002522411023035704026606 0ustar moellermoeller SparseArrayIterator (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime.impl
Class SparseArrayIterator

java.lang.Object
  extended by org.jibx.runtime.impl.SparseArrayIterator
All Implemented Interfaces:
java.util.Iterator

public class SparseArrayIterator
extends java.lang.Object
implements java.util.Iterator

Iterator class for sparse values in an array. This type of iterator can be used for an object array which has references interspersed with nulls.

Version:
1.1
Author:
Dennis M. Sosnoski

Method Summary
static java.util.Iterator buildIterator(java.lang.Object[] array)
          Build iterator.
 boolean hasNext()
          Check for iteration element available.
 java.lang.Object next()
          Get next iteration element.
 void remove()
          Remove element from iteration.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

hasNext

public boolean hasNext()
Check for iteration element available.

Specified by:
hasNext in interface java.util.Iterator
Returns:
true if element available, false if not

next

public java.lang.Object next()
Get next iteration element.

Specified by:
next in interface java.util.Iterator
Returns:
next iteration element
Throws:
java.util.NoSuchElementException - if past end of iteration

remove

public void remove()
Remove element from iteration. This optional operation is not supported and always throws an exception.

Specified by:
remove in interface java.util.Iterator
Throws:
java.lang.UnsupportedOperationException - for unsupported operation

buildIterator

public static java.util.Iterator buildIterator(java.lang.Object[] array)
Build iterator.

Parameters:
array - array containing values to be iterated (may be null)
Returns:
constructed iterator


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/impl/StAXReaderFactory.html0000644000175000017500000004554211023035704026137 0ustar moellermoeller StAXReaderFactory (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime.impl
Class StAXReaderFactory

java.lang.Object
  extended by org.jibx.runtime.impl.StAXReaderFactory
All Implemented Interfaces:
IXMLReaderFactory

public class StAXReaderFactory
extends java.lang.Object
implements IXMLReaderFactory

Factory for creating XMLPull parser instances.

Version:
1.0
Author:
Dennis M. Sosnoski

Method Summary
 IXMLReader createReader(java.io.InputStream is, java.lang.String name, java.lang.String enc, boolean nsf)
          Get new XML reader instance for document from input stream.
 IXMLReader createReader(java.io.Reader rdr, java.lang.String name, boolean nsf)
          Get new XML reader instance for document from reader.
static StAXReaderFactory getInstance()
          Get instance of factory.
 IXMLReader recycleReader(IXMLReader old, java.io.InputStream is, java.lang.String name, java.lang.String enc)
          Recycle XML reader instance for new document from input stream.
 IXMLReader recycleReader(IXMLReader old, java.io.Reader rdr, java.lang.String name)
          Recycle XML reader instance for document from reader.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getInstance

public static StAXReaderFactory getInstance()
Get instance of factory.

Returns:
factory instance

createReader

public IXMLReader createReader(java.io.InputStream is,
                               java.lang.String name,
                               java.lang.String enc,
                               boolean nsf)
                        throws JiBXException
Description copied from interface: IXMLReaderFactory
Get new XML reader instance for document from input stream.

Specified by:
createReader in interface IXMLReaderFactory
Parameters:
is - document input stream
name - document name (null if unknown)
enc - document character encoding (null if unknown)
nsf - namespaces enabled flag
Returns:
new reader instance for document
Throws:
JiBXException - on parser configuration error

createReader

public IXMLReader createReader(java.io.Reader rdr,
                               java.lang.String name,
                               boolean nsf)
                        throws JiBXException
Description copied from interface: IXMLReaderFactory
Get new XML reader instance for document from reader.

Specified by:
createReader in interface IXMLReaderFactory
Parameters:
rdr - document reader
name - document name (null if unknown)
nsf - namespaces enabled flag
Returns:
new reader instance for document
Throws:
JiBXException - on parser configuration error

recycleReader

public IXMLReader recycleReader(IXMLReader old,
                                java.io.InputStream is,
                                java.lang.String name,
                                java.lang.String enc)
                         throws JiBXException
Description copied from interface: IXMLReaderFactory
Recycle XML reader instance for new document from input stream. If the supplied reader can be reused it will be configured for the new document and returned; otherwise, a new reader will be created for the document. The namespace enabled state of the returned reader is always the same as that of the supplied reader.

Specified by:
recycleReader in interface IXMLReaderFactory
Parameters:
old - reader instance to be recycled
is - document input stream
name - document name (null if unknown)
enc - document character encoding (null if unknown)
Returns:
new reader instance for document
Throws:
JiBXException - on parser configuration error

recycleReader

public IXMLReader recycleReader(IXMLReader old,
                                java.io.Reader rdr,
                                java.lang.String name)
                         throws JiBXException
Description copied from interface: IXMLReaderFactory
Recycle XML reader instance for document from reader. If the supplied reader can be reused it will be configured for the new document and returned; otherwise, a new reader will be created for the document. The namespace enabled state of the returned reader is always the same as that of the supplied reader.

Specified by:
recycleReader in interface IXMLReaderFactory
Parameters:
old - reader instance to be recycled
rdr - document reader
name - document name (null if unknown)
Returns:
new reader instance for document
Throws:
JiBXException - on parser configuration error


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/impl/StAXReaderWrapper.html0000644000175000017500000011753411023035704026151 0ustar moellermoeller StAXReaderWrapper (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime.impl
Class StAXReaderWrapper

java.lang.Object
  extended by org.jibx.runtime.impl.StAXReaderWrapper
All Implemented Interfaces:
IXMLReader

public class StAXReaderWrapper
extends java.lang.Object
implements IXMLReader

Wrapper for a StAX parser implementation. This delegates most calls more or less directly, only adding the required namespace functionality on top of the StAX API.


Field Summary
 
Fields inherited from interface org.jibx.runtime.IXMLReader
CDSECT, COMMENT, DOCDECL, END_DOCUMENT, END_TAG, ENTITY_REF, IGNORABLE_WHITESPACE, PROCESSING_INSTRUCTION, START_DOCUMENT, START_TAG, TEXT
 
Constructor Summary
StAXReaderWrapper(javax.xml.stream.XMLStreamReader rdr, java.lang.String name, boolean nsa)
          Constructor used by factory.
 
Method Summary
 java.lang.String buildPositionString()
          Build current parse input position description.
 int getAttributeCount()
          Get the number of attributes of the current start tag.
 java.lang.String getAttributeName(int index)
          Get an attribute name from the current start tag.
 java.lang.String getAttributeNamespace(int index)
          Get an attribute namespace from the current start tag.
 java.lang.String getAttributePrefix(int index)
          Get an attribute prefix from the current start tag.
 java.lang.String getAttributeValue(int index)
          Get an attribute value from the current start tag.
 java.lang.String getAttributeValue(java.lang.String ns, java.lang.String name)
          Get an attribute value from the current start tag.
 int getColumnNumber()
          Get current source column number.
 java.lang.String getDocumentName()
          Get document name.
 int getEventType()
          Gets the current parse event type, without changing the current parse state.
 java.lang.String getInputEncoding()
          Return the input encoding, if known.
 int getLineNumber()
          Get current source line number.
 java.lang.String getName()
          Get element name from the current start or end tag.
 java.lang.String getNamespace()
          Get element namespace from the current start or end tag.
 java.lang.String getNamespace(java.lang.String prefix)
          Get namespace URI associated with prefix.
 int getNamespaceCount(int depth)
          Get number of namespace declarations active at depth.
 java.lang.String getNamespacePrefix(int index)
          Get namespace prefix.
 java.lang.String getNamespaceUri(int index)
          Get namespace URI.
 int getNestingDepth()
          Get current element nesting depth.
 java.lang.String getPrefix()
          Get element prefix from the current start or end tag.
 java.lang.String getText()
          Get current text.
 boolean isNamespaceAware()
          Return namespace processing flag.
 int next()
          Advance to next binding component of input document.
 int nextToken()
          Advance to next parse event of input document.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

StAXReaderWrapper

public StAXReaderWrapper(javax.xml.stream.XMLStreamReader rdr,
                         java.lang.String name,
                         boolean nsa)
Constructor used by factory.

Parameters:
rdr - event reader
nsa - namespace aware flag
Method Detail

buildPositionString

public java.lang.String buildPositionString()
Build current parse input position description.

Specified by:
buildPositionString in interface IXMLReader
Returns:
text description of current parse position

nextToken

public int nextToken()
              throws JiBXException
Description copied from interface: IXMLReader
Advance to next parse event of input document.

Specified by:
nextToken in interface IXMLReader
Returns:
parse event type code
Throws:
JiBXException - if error reading or parsing document

next

public int next()
         throws JiBXException
Description copied from interface: IXMLReader
Advance to next binding component of input document. This is a higher-level operation than IXMLReader.nextToken(), which consolidates text content and ignores parse events for components such as comments and PIs.

Specified by:
next in interface IXMLReader
Returns:
parse event type code
Throws:
JiBXException - if error reading or parsing document

getEventType

public int getEventType()
                 throws JiBXException
Description copied from interface: IXMLReader
Gets the current parse event type, without changing the current parse state.

Specified by:
getEventType in interface IXMLReader
Returns:
parse event type code
Throws:
JiBXException - if error parsing document

getName

public java.lang.String getName()
Description copied from interface: IXMLReader
Get element name from the current start or end tag.

Specified by:
getName in interface IXMLReader
Returns:
local name if namespace handling enabled, full name if namespace handling disabled

getNamespace

public java.lang.String getNamespace()
Description copied from interface: IXMLReader
Get element namespace from the current start or end tag.

Specified by:
getNamespace in interface IXMLReader
Returns:
namespace URI if namespace handling enabled and element is in a namespace, empty string otherwise

getPrefix

public java.lang.String getPrefix()
Description copied from interface: IXMLReader
Get element prefix from the current start or end tag.

Specified by:
getPrefix in interface IXMLReader
Returns:
prefix text (null if no prefix)

getAttributeCount

public int getAttributeCount()
Description copied from interface: IXMLReader
Get the number of attributes of the current start tag.

Specified by:
getAttributeCount in interface IXMLReader
Returns:
number of attributes

getAttributeName

public java.lang.String getAttributeName(int index)
Description copied from interface: IXMLReader
Get an attribute name from the current start tag.

Specified by:
getAttributeName in interface IXMLReader
Parameters:
index - attribute index
Returns:
local name if namespace handling enabled, full name if namespace handling disabled

getAttributeNamespace

public java.lang.String getAttributeNamespace(int index)
Description copied from interface: IXMLReader
Get an attribute namespace from the current start tag.

Specified by:
getAttributeNamespace in interface IXMLReader
Parameters:
index - attribute index
Returns:
namespace URI if namespace handling enabled and attribute is in a namespace, empty string otherwise

getAttributePrefix

public java.lang.String getAttributePrefix(int index)
Description copied from interface: IXMLReader
Get an attribute prefix from the current start tag.

Specified by:
getAttributePrefix in interface IXMLReader
Parameters:
index - attribute index
Returns:
prefix for attribute (null if no prefix present)

getAttributeValue

public java.lang.String getAttributeValue(int index)
Description copied from interface: IXMLReader
Get an attribute value from the current start tag.

Specified by:
getAttributeValue in interface IXMLReader
Parameters:
index - attribute index
Returns:
value text

getAttributeValue

public java.lang.String getAttributeValue(java.lang.String ns,
                                          java.lang.String name)
Description copied from interface: IXMLReader
Get an attribute value from the current start tag.

Specified by:
getAttributeValue in interface IXMLReader
Parameters:
ns - namespace URI for expected attribute (may be null or the empty string for the empty namespace)
name - attribute name expected
Returns:
attribute value text, or null if missing

getText

public java.lang.String getText()
Description copied from interface: IXMLReader
Get current text. When positioned on a TEXT event this returns the actual text; for CDSECT it returns the text inside the CDATA section; for COMMENT, DOCDECL, or PROCESSING_INSTRUCTION it returns the text inside the structure.

Specified by:
getText in interface IXMLReader
Returns:
text for current event

getNestingDepth

public int getNestingDepth()
Description copied from interface: IXMLReader
Get current element nesting depth. The returned depth always includes the current start or end tag (if positioned on a start or end tag).

Specified by:
getNestingDepth in interface IXMLReader
Returns:
element nesting depth

getNamespaceCount

public int getNamespaceCount(int depth)
Description copied from interface: IXMLReader
Get number of namespace declarations active at depth.

Specified by:
getNamespaceCount in interface IXMLReader
Parameters:
depth - element nesting depth
Returns:
number of namespaces active at depth

getNamespaceUri

public java.lang.String getNamespaceUri(int index)
Description copied from interface: IXMLReader
Get namespace URI.

Specified by:
getNamespaceUri in interface IXMLReader
Parameters:
index - declaration index
Returns:
namespace URI

getNamespacePrefix

public java.lang.String getNamespacePrefix(int index)
Description copied from interface: IXMLReader
Get namespace prefix.

Specified by:
getNamespacePrefix in interface IXMLReader
Parameters:
index - declaration index
Returns:
namespace prefix, null if a default namespace

getDocumentName

public java.lang.String getDocumentName()
Description copied from interface: IXMLReader
Get document name.

Specified by:
getDocumentName in interface IXMLReader
Returns:
document name, null if not known

getLineNumber

public int getLineNumber()
Description copied from interface: IXMLReader
Get current source line number.

Specified by:
getLineNumber in interface IXMLReader
Returns:
line number from source document, -1 if line number information not available

getColumnNumber

public int getColumnNumber()
Description copied from interface: IXMLReader
Get current source column number.

Specified by:
getColumnNumber in interface IXMLReader
Returns:
column number from source document, -1 if column number information not available

getNamespace

public java.lang.String getNamespace(java.lang.String prefix)
Description copied from interface: IXMLReader
Get namespace URI associated with prefix.

Specified by:
getNamespace in interface IXMLReader
Parameters:
prefix - to be found
Returns:
associated URI (null if prefix not defined)

getInputEncoding

public java.lang.String getInputEncoding()
Description copied from interface: IXMLReader
Return the input encoding, if known. This is only valid after parsing of a document has been started.

Specified by:
getInputEncoding in interface IXMLReader
Returns:
input encoding (null if unknown)

isNamespaceAware

public boolean isNamespaceAware()
Description copied from interface: IXMLReader
Return namespace processing flag.

Specified by:
isNamespaceAware in interface IXMLReader
Returns:
namespace processing flag (true if namespaces are processed by reader, false if not)


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/impl/StAXWriter.html0000644000175000017500000013117111023035704024653 0ustar moellermoeller StAXWriter (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime.impl
Class StAXWriter

java.lang.Object
  extended by org.jibx.runtime.impl.XMLWriterNamespaceBase
      extended by org.jibx.runtime.impl.StAXWriter
All Implemented Interfaces:
IExtensibleWriter, IXMLWriter

public class StAXWriter
extends XMLWriterNamespaceBase
implements IExtensibleWriter

Writer generating StAX parse event stream output.

Version:
1.0
Author:
Dennis M. Sosnoski

Constructor Summary
StAXWriter(StAXWriter base, java.lang.String[] uris)
          Copy constructor.
StAXWriter(java.lang.String[] uris)
          Constructor.
StAXWriter(java.lang.String[] uris, javax.xml.stream.XMLStreamWriter wrtr)
          Constructor with writer supplied.
 
Method Summary
 void addAttribute(int index, java.lang.String name, java.lang.String value)
          Add attribute to current open start tag.
 void close()
          Close document output.
 void closeEmptyTag()
          Close the current open start tag as an empty element.
 void closeStartTag()
          Close the current open start tag.
 IXMLWriter createChildWriter(java.lang.String[] uris)
          Create a child writer instance to be used for a separate binding.
 void endTag(int index, java.lang.String name)
          Generate end tag.
 void flush()
          Flush document output.
 void indent()
          Request output indent.
 void setIndentSpaces(int count, java.lang.String newline, char indent)
          Set nesting indentation.
 void setWriter(javax.xml.stream.XMLStreamWriter wrtr)
          Set StAX writer.
 void startTagClosed(int index, java.lang.String name)
          Generate closed start tag.
 void startTagNamespaces(int index, java.lang.String name, int[] nums, java.lang.String[] prefs)
          Generate start tag for element with namespaces.
 void startTagOpen(int index, java.lang.String name)
          Generate open start tag.
 void writeCData(java.lang.String text)
          Write CDATA text to document.
 void writeComment(java.lang.String text)
          Write comment to document.
 void writeDocType(java.lang.String name, java.lang.String sys, java.lang.String pub, java.lang.String subset)
          Write DOCTYPE declaration to document.
 void writeEntityRef(java.lang.String name)
          Write entity reference to document.
 void writePI(java.lang.String target, java.lang.String data)
          Write processing instruction to document.
 void writeTextContent(java.lang.String text)
          Write ordinary character data text content to document.
 void writeXMLDecl(java.lang.String version, java.lang.String encoding, java.lang.String standalone)
          Write XML declaration to document.
 
Methods inherited from class org.jibx.runtime.impl.XMLWriterNamespaceBase
getExtensionNamespaces, getNamespaceCount, getNamespacePrefix, getNamespaces, getNamespaceUri, getNestingDepth, getPrefixIndex, openNamespaces, popExtensionNamespaces, pushExtensionNamespaces, reset
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.jibx.runtime.IXMLWriter
getExtensionNamespaces, getNamespaceCount, getNamespacePrefix, getNamespaces, getNamespaceUri, getNestingDepth, getPrefixIndex, openNamespaces, popExtensionNamespaces, pushExtensionNamespaces, reset
 

Constructor Detail

StAXWriter

public StAXWriter(java.lang.String[] uris)
Constructor.

Parameters:
uris - ordered array of URIs for namespaces used in document (must be constant; the value in position 0 must always be the empty string "", and the value in position 1 must always be the XML namespace "http://www.w3.org/XML/1998/namespace")

StAXWriter

public StAXWriter(java.lang.String[] uris,
                  javax.xml.stream.XMLStreamWriter wrtr)
Constructor with writer supplied.

Parameters:
uris - ordered array of URIs for namespaces used in document (must be constant; the value in position 0 must always be the empty string "", and the value in position 1 must always be the XML namespace "http://www.w3.org/XML/1998/namespace")
wrtr - StAX writer for parse event output

StAXWriter

public StAXWriter(StAXWriter base,
                  java.lang.String[] uris)
Copy constructor. This initializes the writer and extension namespace information from an existing instance.

Parameters:
base - existing instance
uris - ordered array of URIs for namespaces used in document
Method Detail

setWriter

public void setWriter(javax.xml.stream.XMLStreamWriter wrtr)
Set StAX writer.

Parameters:
wrtr - StAX writer for parse event output

setIndentSpaces

public void setIndentSpaces(int count,
                            java.lang.String newline,
                            char indent)
Description copied from interface: IXMLWriter
Set nesting indentation. This is advisory only, and implementations of this interface are free to ignore it. The intent is to indicate that the generated output should use indenting to illustrate element nesting.

Specified by:
setIndentSpaces in interface IXMLWriter
Parameters:
count - number of character to indent per level, or disable indentation if negative (zero means new line only)
newline - sequence of characters used for a line ending (null means use the single character '\n')
indent - whitespace character used for indentation

writeXMLDecl

public void writeXMLDecl(java.lang.String version,
                         java.lang.String encoding,
                         java.lang.String standalone)
                  throws java.io.IOException
Description copied from interface: IXMLWriter
Write XML declaration to document. This can only be called before any other methods in the interface are called.

Specified by:
writeXMLDecl in interface IXMLWriter
Parameters:
version - XML version text
encoding - text for encoding attribute (unspecified if null)
standalone - text for standalone attribute (unspecified if null)
Throws:
java.io.IOException - on error writing to document

startTagOpen

public void startTagOpen(int index,
                         java.lang.String name)
                  throws java.io.IOException
Description copied from interface: IXMLWriter
Generate open start tag. This allows attributes and/or namespace declarations to be added to the start tag, but must be followed by a IXMLWriter.closeStartTag() call.

Specified by:
startTagOpen in interface IXMLWriter
Parameters:
index - namespace URI index number
name - unqualified element name
Throws:
java.io.IOException - on error writing to document

startTagNamespaces

public void startTagNamespaces(int index,
                               java.lang.String name,
                               int[] nums,
                               java.lang.String[] prefs)
                        throws java.io.IOException
Description copied from interface: IXMLWriter
Generate start tag for element with namespaces. This creates the actual start tag, along with any necessary namespace declarations. Previously active namespace declarations are not duplicated. The tag is left incomplete, allowing other attributes to be added.

Specified by:
startTagNamespaces in interface IXMLWriter
Parameters:
index - namespace URI index number
name - element name
nums - array of namespace indexes defined by this element (must be constant, reference is kept until end of element)
prefs - array of namespace prefixes mapped by this element (no null values, use "" for default namespace declaration)
Throws:
java.io.IOException - on error writing to document

addAttribute

public void addAttribute(int index,
                         java.lang.String name,
                         java.lang.String value)
                  throws java.io.IOException
Description copied from interface: IXMLWriter
Add attribute to current open start tag. This is only valid after a call to IXMLWriter.startTagOpen(int, java.lang.String) and before the corresponding call to IXMLWriter.closeStartTag().

Specified by:
addAttribute in interface IXMLWriter
Parameters:
index - namespace URI index number
name - unqualified attribute name
value - text value for attribute
Throws:
java.io.IOException - on error writing to document

closeStartTag

public void closeStartTag()
                   throws java.io.IOException
Description copied from interface: IXMLWriter
Close the current open start tag. This is only valid after a call to IXMLWriter.startTagOpen(int, java.lang.String).

Specified by:
closeStartTag in interface IXMLWriter
Throws:
java.io.IOException - on error writing to document

closeEmptyTag

public void closeEmptyTag()
                   throws java.io.IOException
Description copied from interface: IXMLWriter
Close the current open start tag as an empty element. This is only valid after a call to IXMLWriter.startTagOpen(int, java.lang.String).

Specified by:
closeEmptyTag in interface IXMLWriter
Throws:
java.io.IOException - on error writing to document

startTagClosed

public void startTagClosed(int index,
                           java.lang.String name)
                    throws java.io.IOException
Description copied from interface: IXMLWriter
Generate closed start tag. No attributes or namespaces can be added to a start tag written using this call.

Specified by:
startTagClosed in interface IXMLWriter
Parameters:
index - namespace URI index number
name - unqualified element name
Throws:
java.io.IOException - on error writing to document

endTag

public void endTag(int index,
                   java.lang.String name)
            throws java.io.IOException
Description copied from interface: IXMLWriter
Generate end tag.

Specified by:
endTag in interface IXMLWriter
Parameters:
index - namespace URI index number
name - unqualified element name
Throws:
java.io.IOException - on error writing to document

writeTextContent

public void writeTextContent(java.lang.String text)
                      throws java.io.IOException
Description copied from interface: IXMLWriter
Write ordinary character data text content to document.

Specified by:
writeTextContent in interface IXMLWriter
Parameters:
text - content value text (must not be null)
Throws:
java.io.IOException - on error writing to document

writeCData

public void writeCData(java.lang.String text)
                throws java.io.IOException
Description copied from interface: IXMLWriter
Write CDATA text to document.

Specified by:
writeCData in interface IXMLWriter
Parameters:
text - content value text (must not be null)
Throws:
java.io.IOException - on error writing to document

writeComment

public void writeComment(java.lang.String text)
                  throws java.io.IOException
Description copied from interface: IXMLWriter
Write comment to document.

Specified by:
writeComment in interface IXMLWriter
Parameters:
text - comment text (must not be null)
Throws:
java.io.IOException - on error writing to document

writeEntityRef

public void writeEntityRef(java.lang.String name)
                    throws java.io.IOException
Description copied from interface: IXMLWriter
Write entity reference to document.

Specified by:
writeEntityRef in interface IXMLWriter
Parameters:
name - entity name (must not be null)
Throws:
java.io.IOException - on error writing to document

writeDocType

public void writeDocType(java.lang.String name,
                         java.lang.String sys,
                         java.lang.String pub,
                         java.lang.String subset)
                  throws java.io.IOException
Description copied from interface: IXMLWriter
Write DOCTYPE declaration to document.

Specified by:
writeDocType in interface IXMLWriter
Parameters:
name - root element name
sys - system ID (null if none, must be non-null for public ID to be used)
pub - public ID (null if none)
subset - internal subset (null if none)
Throws:
java.io.IOException - on error writing to document

writePI

public void writePI(java.lang.String target,
                    java.lang.String data)
             throws java.io.IOException
Description copied from interface: IXMLWriter
Write processing instruction to document.

Specified by:
writePI in interface IXMLWriter
Parameters:
target - processing instruction target name (must not be null)
data - processing instruction data (must not be null)
Throws:
java.io.IOException - on error writing to document

indent

public void indent()
            throws java.io.IOException
Description copied from interface: IXMLWriter
Request output indent. The writer implementation should normally indent output as appropriate. This method can be used to request indenting of output that might otherwise not be indented. The normal effect when used with a text-oriented writer should be to output the appropriate line end sequence followed by the appropriate number of indent characters for the current nesting level.

Specified by:
indent in interface IXMLWriter
Throws:
java.io.IOException - on error writing to document

flush

public void flush()
           throws java.io.IOException
Description copied from interface: IXMLWriter
Flush document output. Writes any buffered data to the output medium. This does not flush the output medium itself, only any internal buffering within the writer.

Specified by:
flush in interface IXMLWriter
Throws:
java.io.IOException - on error writing to document

close

public void close()
           throws java.io.IOException
Description copied from interface: IXMLWriter
Close document output. Completes writing of document output, including flushing and closing the output medium.

Specified by:
close in interface IXMLWriter
Throws:
java.io.IOException - on error writing to document

createChildWriter

public IXMLWriter createChildWriter(java.lang.String[] uris)
Create a child writer instance to be used for a separate binding. The child writer inherits the output handling from this writer, while using the supplied namespace URIs.

Specified by:
createChildWriter in interface IExtensibleWriter
Parameters:
uris - ordered array of URIs for namespaces used in document (see StAXWriter(String[]))
Returns:
child writer


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/impl/StreamWriterBase.html0000644000175000017500000007514011023035704026065 0ustar moellermoeller StreamWriterBase (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime.impl
Class StreamWriterBase

java.lang.Object
  extended by org.jibx.runtime.impl.XMLWriterNamespaceBase
      extended by org.jibx.runtime.impl.XMLWriterBase
          extended by org.jibx.runtime.impl.StreamWriterBase
All Implemented Interfaces:
IExtensibleWriter, IXMLWriter
Direct Known Subclasses:
ISO88591StreamWriter, UTF8StreamWriter

public abstract class StreamWriterBase
extends XMLWriterBase

Base handler for marshalling text document to an output stream. This is designed for use with character encodings that use standard one-byte values for Unicode characters in the 0x20-0x7F range, which includes the most widely used encodings for XML documents. It needs to be subclassed with implementation methods specific to the encoding used.

Author:
Dennis M. Sosnoski

Field Summary
static int DEFAULT_BUFFER_SIZE
          Default output buffer size.
 
Constructor Summary
StreamWriterBase(StreamWriterBase base, java.lang.String[] uris)
          Copy constructor.
StreamWriterBase(java.lang.String enc, java.lang.String[] uris)
          Constructor using default buffer size.
 
Method Summary
 void close()
          Close document output.
 void flush()
          Flush document output.
 java.lang.String getEncodingName()
          Get the name of the character encoding used by this writer.
 void indent()
          Request output indent.
 void indent(int bias)
          Request output indent.
 void popExtensionNamespaces()
          Remove extension namespace URIs.
 void pushExtensionNamespaces(java.lang.String[] uris)
          Append extension namespace URIs to those in mapping.
 void reset()
          Reset to initial state for reuse.
 void setIndentSpaces(int count, java.lang.String newline, char indent)
          Set nesting indentation.
 void setNamespaceUris(java.lang.String[] uris)
          Set namespace URIs.
 void setOutput(java.io.OutputStream outs)
          Set output stream.
 
Methods inherited from class org.jibx.runtime.impl.XMLWriterBase
addAttribute, closeEmptyTag, closeStartTag, endTag, startTagClosed, startTagNamespaces, startTagOpen, writeComment, writeDocType, writeEntityRef, writePI, writeXMLDecl
 
Methods inherited from class org.jibx.runtime.impl.XMLWriterNamespaceBase
getExtensionNamespaces, getNamespaceCount, getNamespacePrefix, getNamespaces, getNamespaceUri, getNestingDepth, getPrefixIndex, openNamespaces
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.jibx.runtime.IExtensibleWriter
createChildWriter
 
Methods inherited from interface org.jibx.runtime.IXMLWriter
getExtensionNamespaces, getNamespaceCount, getNamespacePrefix, getNamespaces, getNamespaceUri, getNestingDepth, getPrefixIndex, openNamespaces, writeCData, writeTextContent
 

Field Detail

DEFAULT_BUFFER_SIZE

public static final int DEFAULT_BUFFER_SIZE
Default output buffer size.

See Also:
Constant Field Values
Constructor Detail

StreamWriterBase

public StreamWriterBase(java.lang.String enc,
                        java.lang.String[] uris)
Constructor using default buffer size.

Parameters:
enc - character encoding used for output to streams (upper case)
uris - ordered array of URIs for namespaces used in document (must be constant; the value in position 0 must always be the empty string "", and the value in position 1 must always be the XML namespace "http://www.w3.org/XML/1998/namespace")

StreamWriterBase

public StreamWriterBase(StreamWriterBase base,
                        java.lang.String[] uris)
Copy constructor. This takes the stream and encoding information from a supplied instance, while setting a new array of namespace URIs. It's intended for use when invoking one binding from within another binding.

Parameters:
base - instance to be used as base for writer
uris - ordered array of URIs for namespaces used in document (see StreamWriterBase(String, String[]))
Method Detail

getEncodingName

public java.lang.String getEncodingName()
Get the name of the character encoding used by this writer.

Returns:
encoding

setOutput

public void setOutput(java.io.OutputStream outs)
Set output stream. If an output stream is currently open when this is called the existing stream is flushed and closed, with any errors ignored.

Parameters:
outs - stream for document data output

setNamespaceUris

public void setNamespaceUris(java.lang.String[] uris)
                      throws java.io.IOException
Set namespace URIs. This forces a reset of the writer, clearing any buffered output. It is intended to be used only for reconfiguring an existing writer for reuse.

Parameters:
uris - ordered array of URIs for namespaces used in document
Throws:
java.io.IOException

setIndentSpaces

public void setIndentSpaces(int count,
                            java.lang.String newline,
                            char indent)
Set nesting indentation. This is advisory only, and implementations of this interface are free to ignore it. The intent is to indicate that the generated output should use indenting to illustrate element nesting.

Parameters:
count - number of character to indent per level, or disable indentation if negative (zero means new line only)
newline - sequence of characters used for a line ending (null means use the single character '\n')
indent - whitespace character used for indentation

pushExtensionNamespaces

public void pushExtensionNamespaces(java.lang.String[] uris)
Append extension namespace URIs to those in mapping.

Specified by:
pushExtensionNamespaces in interface IXMLWriter
Overrides:
pushExtensionNamespaces in class XMLWriterNamespaceBase
Parameters:
uris - namespace URIs to extend those in mapping

popExtensionNamespaces

public void popExtensionNamespaces()
Remove extension namespace URIs. This removes the last set of extension namespaces pushed using pushExtensionNamespaces(java.lang.String[]).

Specified by:
popExtensionNamespaces in interface IXMLWriter
Overrides:
popExtensionNamespaces in class XMLWriterNamespaceBase

indent

public void indent(int bias)
            throws java.io.IOException
Request output indent. Output the line end sequence followed by the appropriate number of indent characters.

Parameters:
bias - indent depth difference (positive or negative) from current element nesting depth
Throws:
java.io.IOException - on error writing to document

indent

public void indent()
            throws java.io.IOException
Request output indent. Output the line end sequence followed by the appropriate number of indent characters for the current nesting level.

Throws:
java.io.IOException - on error writing to document

flush

public void flush()
           throws java.io.IOException
Flush document output. Forces out all output generated to this point, unless using a chunking output mechanism.

Specified by:
flush in interface IXMLWriter
Specified by:
flush in class XMLWriterBase
Throws:
java.io.IOException - on error writing to document

close

public void close()
           throws java.io.IOException
Close document output. Completes writing of document output, including closing the output medium.

Specified by:
close in interface IXMLWriter
Specified by:
close in class XMLWriterBase
Throws:
java.io.IOException - on error writing to document

reset

public void reset()
Reset to initial state for reuse. This override of the base class method handles clearing the internal buffer when starting a new document.

Specified by:
reset in interface IXMLWriter
Overrides:
reset in class XMLWriterBase


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/impl/StringArray.html0000644000175000017500000004426711023035704025115 0ustar moellermoeller StringArray (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime.impl
Class StringArray

java.lang.Object
  extended by org.jibx.runtime.impl.StringArray

public class StringArray
extends java.lang.Object

Growable String array with type specific access methods. This implementation is unsynchronized in order to provide the best possible performance for typical usage scenarios, so explicit synchronization must be implemented by a wrapper class or directly by the application in cases where instances are modified in a multithreaded environment.

Version:
1.0
Author:
Dennis M. Sosnoski

Field Summary
static int DEFAULT_SIZE
          Default initial array size.
 
Constructor Summary
StringArray()
          Default constructor.
StringArray(int size)
          Constructor with initial size specified.
StringArray(int size, int growth)
          Constructor with full specification.
StringArray(StringArray base)
          Copy (clone) constructor.
 
Method Summary
 void add(java.lang.String value)
          Add a value at the end of the array.
 void clear()
          Set the array to the empty state.
 java.lang.Object clone()
          Duplicates the object with the generic call.
 void ensureCapacity(int min)
          Ensure that the array has the capacity for at least the specified number of values.
 java.lang.String get(int index)
          Get a value from the array.
 boolean isEmpty()
          Check if array is empty.
 void remove(int count)
          Remove some number of values from the end of the array.
 int size()
          Get the number of values currently present in the array.
 java.lang.String[] toArray()
          Constructs and returns a simple array containing the same data as held in this array.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_SIZE

public static final int DEFAULT_SIZE
Default initial array size.

See Also:
Constant Field Values
Constructor Detail

StringArray

public StringArray(int size,
                   int growth)
Constructor with full specification.

Parameters:
size - number of String values initially allowed in array
growth - maximum size increment for growing array

StringArray

public StringArray(int size)
Constructor with initial size specified.

Parameters:
size - number of String values initially allowed in array

StringArray

public StringArray()
Default constructor.


StringArray

public StringArray(StringArray base)
Copy (clone) constructor.

Parameters:
base - instance being copied
Method Detail

ensureCapacity

public final void ensureCapacity(int min)
Ensure that the array has the capacity for at least the specified number of values.

Parameters:
min - minimum capacity to be guaranteed

add

public void add(java.lang.String value)
Add a value at the end of the array.

Parameters:
value - value to be added

remove

public void remove(int count)
Remove some number of values from the end of the array.

Parameters:
count - number of values to be removed
Throws:
java.lang.ArrayIndexOutOfBoundsException - on attempt to remove more than the count present

get

public java.lang.String get(int index)
Get a value from the array.

Parameters:
index - index of value to be returned
Returns:
value from stack
Throws:
java.lang.ArrayIndexOutOfBoundsException - on attempt to access outside valid range

toArray

public java.lang.String[] toArray()
Constructs and returns a simple array containing the same data as held in this array.

Returns:
array containing a copy of the data

clone

public java.lang.Object clone()
Duplicates the object with the generic call.

Overrides:
clone in class java.lang.Object
Returns:
a copy of the object

size

public int size()
Get the number of values currently present in the array.

Returns:
count of values present

isEmpty

public boolean isEmpty()
Check if array is empty.

Returns:
true if array empty, false if not

clear

public void clear()
Set the array to the empty state.



Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/impl/StringIntHashMap.html0000644000175000017500000004346611023035704026033 0ustar moellermoeller StringIntHashMap (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime.impl
Class StringIntHashMap

java.lang.Object
  extended by org.jibx.runtime.impl.StringIntHashMap

public class StringIntHashMap
extends java.lang.Object

Hash map using String values as keys mapped to primitive int values. This implementation is unsynchronized in order to provide the best possible performance for typical usage scenarios, so explicit synchronization must be implemented by a wrapper class or directly by the application in cases where instances are modified in a multithreaded environment. The map implementation is not very efficient when resizing, but works well when the size of the map is known in advance.

Version:
1.1
Author:
Dennis M. Sosnoski

Field Summary
static int DEFAULT_NOT_FOUND
          Default value returned when key not found in table.
 
Constructor Summary
StringIntHashMap()
          Default constructor.
StringIntHashMap(int count)
          Constructor with only size supplied.
StringIntHashMap(int count, double fill)
          Constructor with size and fill fraction specified.
StringIntHashMap(int count, double fill, int miss)
          Constructor with full specification.
StringIntHashMap(StringIntHashMap base)
          Copy (clone) constructor.
 
Method Summary
 int add(java.lang.String key, int value)
          Add an entry to the table.
 java.lang.Object clone()
          Construct a copy of the table.
 boolean containsKey(java.lang.String key)
          Check if an entry is present in the table.
 int get(java.lang.String key)
          Find an entry in the table.
 int remove(java.lang.String key)
          Remove an entry from the table.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_NOT_FOUND

public static final int DEFAULT_NOT_FOUND
Default value returned when key not found in table.

See Also:
Constant Field Values
Constructor Detail

StringIntHashMap

public StringIntHashMap(int count,
                        double fill,
                        int miss)
Constructor with full specification.

Parameters:
count - number of values to assume in initial sizing of table
fill - fraction full allowed for table before growing
miss - value returned when key not found in table

StringIntHashMap

public StringIntHashMap(int count,
                        double fill)
Constructor with size and fill fraction specified. Uses default hash technique and value returned when key not found in table.

Parameters:
count - number of values to assume in initial sizing of table
fill - fraction full allowed for table before growing

StringIntHashMap

public StringIntHashMap(int count)
Constructor with only size supplied. Uses default hash technique and values for fill fraction and value returned when key not found in table.

Parameters:
count - number of values to assume in initial sizing of table

StringIntHashMap

public StringIntHashMap()
Default constructor.


StringIntHashMap

public StringIntHashMap(StringIntHashMap base)
Copy (clone) constructor.

Parameters:
base - instance being copied
Method Detail

add

public int add(java.lang.String key,
               int value)
Add an entry to the table. If the key is already present in the table, this replaces the existing value associated with the key.

Parameters:
key - key to be added to table (non- null)
value - associated value for key
Returns:
value previously associated with key, or reserved not found value if key not previously present in table

containsKey

public final boolean containsKey(java.lang.String key)
Check if an entry is present in the table. This method is supplied to support the use of values matching the reserved not found value.

Parameters:
key - key for entry to be found
Returns:
true if key found in table, false if not

get

public final int get(java.lang.String key)
Find an entry in the table.

Parameters:
key - key for entry to be returned
Returns:
value for key, or reserved not found value if key not found

remove

public int remove(java.lang.String key)
Remove an entry from the table. If multiple entries are present with the same key value, only the first one found will be removed.

Parameters:
key - key to be removed from table
Returns:
value associated with removed key, or reserved not found value if key not found in table

clone

public java.lang.Object clone()
Construct a copy of the table.

Overrides:
clone in class java.lang.Object
Returns:
shallow copy of table


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/impl/USASCIIEscaper.html0000644000175000017500000003144211023035704025242 0ustar moellermoeller USASCIIEscaper (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime.impl
Class USASCIIEscaper

java.lang.Object
  extended by org.jibx.runtime.impl.USASCIIEscaper
All Implemented Interfaces:
ICharacterEscaper

public class USASCIIEscaper
extends java.lang.Object
implements ICharacterEscaper

Handler for writing ASCII output stream. This code is specifically for XML 1.0 and would require changes for XML 1.1 (to handle the added legal characters, rather than throwing an exception).

Version:
1.0
Author:
Dennis M. Sosnoski

Method Summary
static ICharacterEscaper getInstance()
          Get instance of escaper.
 void writeAttribute(java.lang.String text, java.io.Writer writer)
          Write attribute value with character entity substitutions.
 void writeCData(java.lang.String text, java.io.Writer writer)
          Write CDATA to document.
 void writeContent(java.lang.String text, java.io.Writer writer)
          Write content value with character entity substitutions.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

writeAttribute

public void writeAttribute(java.lang.String text,
                           java.io.Writer writer)
                    throws java.io.IOException
Write attribute value with character entity substitutions. This assumes that attributes use the regular quote ('"') delimitor.

Specified by:
writeAttribute in interface ICharacterEscaper
Parameters:
text - attribute value text
writer - sink for output text
Throws:
java.io.IOException - on error writing to document

writeContent

public void writeContent(java.lang.String text,
                         java.io.Writer writer)
                  throws java.io.IOException
Write content value with character entity substitutions.

Specified by:
writeContent in interface ICharacterEscaper
Parameters:
text - content value text
writer - sink for output text
Throws:
java.io.IOException - on error writing to document

writeCData

public void writeCData(java.lang.String text,
                       java.io.Writer writer)
                throws java.io.IOException
Write CDATA to document. This writes the beginning and ending sequences for a CDATA section as well as the actual text, verifying that only characters allowed by the encoding are included in the text.

Specified by:
writeCData in interface ICharacterEscaper
Parameters:
text - content value text
writer - sink for output text
Throws:
java.io.IOException - on error writing to document

getInstance

public static ICharacterEscaper getInstance()
Get instance of escaper.

Returns:
escaper instance


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/impl/UTF8Escaper.html0000644000175000017500000003144011023035704024666 0ustar moellermoeller UTF8Escaper (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime.impl
Class UTF8Escaper

java.lang.Object
  extended by org.jibx.runtime.impl.UTF8Escaper
All Implemented Interfaces:
ICharacterEscaper

public class UTF8Escaper
extends java.lang.Object
implements ICharacterEscaper

Handler for writing UTF output stream (for any form of UTF, despite the name). This code is specifically for XML 1.0 and would require changes for XML 1.1 (to handle the added legal characters, rather than throwing an exception).

Version:
1.0
Author:
Dennis M. Sosnoski

Method Summary
static ICharacterEscaper getInstance()
          Get instance of escaper.
 void writeAttribute(java.lang.String text, java.io.Writer writer)
          Write attribute value with character entity substitutions.
 void writeCData(java.lang.String text, java.io.Writer writer)
          Write CDATA to document.
 void writeContent(java.lang.String text, java.io.Writer writer)
          Write content value with character entity substitutions.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

writeAttribute

public void writeAttribute(java.lang.String text,
                           java.io.Writer writer)
                    throws java.io.IOException
Write attribute value with character entity substitutions. This assumes that attributes use the regular quote ('"') delimitor.

Specified by:
writeAttribute in interface ICharacterEscaper
Parameters:
text - attribute value text
writer - sink for output text
Throws:
java.io.IOException - on error writing to document

writeContent

public void writeContent(java.lang.String text,
                         java.io.Writer writer)
                  throws java.io.IOException
Write content value with character entity substitutions.

Specified by:
writeContent in interface ICharacterEscaper
Parameters:
text - content value text
writer - sink for output text
Throws:
java.io.IOException - on error writing to document

writeCData

public void writeCData(java.lang.String text,
                       java.io.Writer writer)
                throws java.io.IOException
Write CDATA to document. This writes the beginning and ending sequences for a CDATA section as well as the actual text, verifying that only characters allowed by the encoding are included in the text.

Specified by:
writeCData in interface ICharacterEscaper
Parameters:
text - content value text
writer - sink for output text
Throws:
java.io.IOException - on error writing to document

getInstance

public static ICharacterEscaper getInstance()
Get instance of escaper.

Returns:
escaper instance


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/impl/UTF8StreamWriter.html0000644000175000017500000005535311023035704025745 0ustar moellermoeller UTF8StreamWriter (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime.impl
Class UTF8StreamWriter

java.lang.Object
  extended by org.jibx.runtime.impl.XMLWriterNamespaceBase
      extended by org.jibx.runtime.impl.XMLWriterBase
          extended by org.jibx.runtime.impl.StreamWriterBase
              extended by org.jibx.runtime.impl.UTF8StreamWriter
All Implemented Interfaces:
IExtensibleWriter, IXMLWriter

public class UTF8StreamWriter
extends StreamWriterBase

Handler for marshalling text document to a UTF-8 output stream.

Author:
Dennis M. Sosnoski

Field Summary
 
Fields inherited from class org.jibx.runtime.impl.StreamWriterBase
DEFAULT_BUFFER_SIZE
 
Constructor Summary
UTF8StreamWriter(java.lang.String[] uris)
          Constructor creating a buffer of the default size.
UTF8StreamWriter(java.lang.String[] uris, byte[] buffer)
          Constructor with supplied buffer.
UTF8StreamWriter(UTF8StreamWriter base, java.lang.String[] uris)
          Copy constructor.
 
Method Summary
 IXMLWriter createChildWriter(java.lang.String[] uris)
          Create a child writer instance to be used for a separate binding.
 void writeCData(java.lang.String text)
          Write CDATA text to document.
 void writeTextContent(java.lang.String text)
          Write ordinary character data text content to document.
 
Methods inherited from class org.jibx.runtime.impl.StreamWriterBase
close, flush, getEncodingName, indent, indent, popExtensionNamespaces, pushExtensionNamespaces, reset, setIndentSpaces, setNamespaceUris, setOutput
 
Methods inherited from class org.jibx.runtime.impl.XMLWriterBase
addAttribute, closeEmptyTag, closeStartTag, endTag, startTagClosed, startTagNamespaces, startTagOpen, writeComment, writeDocType, writeEntityRef, writePI, writeXMLDecl
 
Methods inherited from class org.jibx.runtime.impl.XMLWriterNamespaceBase
getExtensionNamespaces, getNamespaceCount, getNamespacePrefix, getNamespaces, getNamespaceUri, getNestingDepth, getPrefixIndex, openNamespaces
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.jibx.runtime.IXMLWriter
getExtensionNamespaces, getNamespaceCount, getNamespacePrefix, getNamespaces, getNamespaceUri, getNestingDepth, getPrefixIndex, openNamespaces
 

Constructor Detail

UTF8StreamWriter

public UTF8StreamWriter(java.lang.String[] uris,
                        byte[] buffer)
Constructor with supplied buffer.

Parameters:
uris - ordered array of URIs for namespaces used in document (must be constant; the value in position 0 must always be the empty string "", and the value in position 1 must always be the XML namespace "http://www.w3.org/XML/1998/namespace")
buffer - output data buffer

UTF8StreamWriter

public UTF8StreamWriter(java.lang.String[] uris)
Constructor creating a buffer of the default size.

Parameters:
uris - ordered array of URIs for namespaces used in document (must be constant; the value in position 0 must always be the empty string "", and the value in position 1 must always be the XML namespace "http://www.w3.org/XML/1998/namespace")

UTF8StreamWriter

public UTF8StreamWriter(UTF8StreamWriter base,
                        java.lang.String[] uris)
Copy constructor. This takes the stream from a supplied instance, while setting a new array of namespace URIs. It's intended for use when invoking one binding from within another binding.

Parameters:
base - instance to be used as base for writer
uris - ordered array of URIs for namespaces used in document (see UTF8StreamWriter(String[]))
Method Detail

writeTextContent

public void writeTextContent(java.lang.String text)
                      throws java.io.IOException
Write ordinary character data text content to document.

Parameters:
text - content value text
Throws:
java.io.IOException - on error writing to document

writeCData

public void writeCData(java.lang.String text)
                throws java.io.IOException
Write CDATA text to document.

Parameters:
text - content value text
Throws:
java.io.IOException - on error writing to document

createChildWriter

public IXMLWriter createChildWriter(java.lang.String[] uris)
                             throws java.io.IOException
Create a child writer instance to be used for a separate binding. The child writer inherits the stream and encoding from this writer, while using the supplied namespace URIs.

Parameters:
uris - ordered array of URIs for namespaces used in document (see UTF8StreamWriter(String[]))
Returns:
child writer
Throws:
java.io.IOException


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/impl/UnmarshallingContext.html0000644000175000017500000067245711023035704027031 0ustar moellermoeller UnmarshallingContext (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime.impl
Class UnmarshallingContext

java.lang.Object
  extended by org.jibx.runtime.impl.UnmarshallingContext
All Implemented Interfaces:
IUnmarshallingContext

public class UnmarshallingContext
extends java.lang.Object
implements IUnmarshallingContext

Pull parser wrapper supplying convenience methods for access. Most of these methods are designed for use in code generated by the binding generator.

Author:
Dennis M. Sosnoski

Constructor Summary
UnmarshallingContext()
          Default constructor.
UnmarshallingContext(int nmap, java.lang.String[] umcs, java.lang.String[] nss, java.lang.String[] names, java.lang.String[] idcs, IBindingFactory ifact)
          Constructor.
 
Method Summary
 java.lang.String accumulateText()
          Accumulate text content.
 void addUnmarshalling(int index, java.lang.String ns, java.lang.String name, java.lang.String cname)
          Define unmarshalling for element.
 boolean attributeBoolean(java.lang.String ns, java.lang.String name)
          Get boolean value of attribute from current start tag.
 boolean attributeBoolean(java.lang.String ns, java.lang.String name, boolean dflt)
          Get boolean value of optional attribute from current start tag.
 byte attributeByte(java.lang.String ns, java.lang.String name)
          Get byte value of attribute from current start tag.
 byte attributeByte(java.lang.String ns, java.lang.String name, byte dflt)
          Get byte value of optional attribute from current start tag.
 char attributeChar(java.lang.String ns, java.lang.String name)
          Get char value of attribute from current start tag.
 char attributeChar(java.lang.String ns, java.lang.String name, char dflt)
          Get char value of optional attribute from current start tag.
 java.util.Date attributeDate(java.lang.String ns, java.lang.String name)
          Get java.util.Date value of attribute from current start tag.
 java.util.Date attributeDate(java.lang.String ns, java.lang.String name, java.util.Date dflt)
          Get java.util.Date value of optional attribute from current start tag.
 double attributeDouble(java.lang.String ns, java.lang.String name)
          Get double value of attribute from current start tag.
 double attributeDouble(java.lang.String ns, java.lang.String name, double dflt)
          Get double value of optional attribute from current start tag.
 int attributeEnumeration(java.lang.String ns, java.lang.String name, java.lang.String[] enums, int[] vals)
          Get enumeration attribute value from current start tag.
 int attributeEnumeration(java.lang.String ns, java.lang.String name, java.lang.String[] enums, int[] vals, int dflt)
          Get optional enumeration attribute value from current start tag.
 java.lang.Object attributeExistingIDREF(java.lang.String ns, java.lang.String name, int index)
          Get previously defined object corresponding to IDREF attribute from current start tag.
 float attributeFloat(java.lang.String ns, java.lang.String name)
          Get float value of attribute from current start tag.
 float attributeFloat(java.lang.String ns, java.lang.String name, float dflt)
          Get float value of optional attribute from current start tag.
 java.lang.Object attributeForwardIDREF(java.lang.String ns, java.lang.String name, int index)
          Get object (if defined yet) corresponding to IDREF attribute from current start tag.
 int attributeInt(java.lang.String ns, java.lang.String name)
          Get integer value of attribute from current start tag.
 int attributeInt(java.lang.String ns, java.lang.String name, int dflt)
          Get integer value of optional attribute from current start tag.
 long attributeLong(java.lang.String ns, java.lang.String name)
          Get long value of attribute from current start tag.
 long attributeLong(java.lang.String ns, java.lang.String name, long dflt)
          Get long value of optional attribute from current start tag.
 short attributeShort(java.lang.String ns, java.lang.String name)
          Get short value of attribute from current start tag.
 short attributeShort(java.lang.String ns, java.lang.String name, short dflt)
          Get short value of optional attribute from current start tag.
 java.lang.String attributeText(java.lang.String ns, java.lang.String name)
          Get text value of attribute from current start tag.
 java.lang.String attributeText(java.lang.String ns, java.lang.String name, java.lang.String dflt)
          Get text value of optional attribute from current start tag.
static java.lang.String buildNameString(java.lang.String ns, java.lang.String name)
          Build name with optional namespace.
 java.lang.String buildPositionString()
          Build current parse input position description.
 void checkAllowedAttributes(java.lang.String[] nss, java.lang.String[] names)
          Check that only allowed attributes are present on current start tag.
 boolean convertBoolean(java.lang.String text)
          Convert boolean value.
 byte convertByte(java.lang.String text)
          Convert byte value with exception wrapper.
 char convertChar(java.lang.String text)
          Convert char value with exception wrapper.
 java.util.Date convertDate(java.lang.String text)
          Convert java.util.Date value with exception wrapper.
 double convertDouble(java.lang.String text)
          Convert double value with exception wrapper.
 int convertEnum(java.lang.String target, java.lang.String[] enums, int[] vals)
          Find required text value in enumeration.
 int convertEnum(java.lang.String target, java.lang.String[] enums, int[] vals, int dflt)
          Find optional text value in enumeration.
 float convertFloat(java.lang.String text)
          Convert float value with exception wrapper.
 long convertLong(java.lang.String text)
          Convert long value with exception wrapper.
 short convertShort(java.lang.String text)
          Convert short value with exception wrapper.
 int currentEvent()
          Get the current parse event type.
 java.lang.String currentNameString()
          Build current element name, with optional namespace.
 void defineID(java.lang.String id, int index, java.lang.Object obj)
          Define object for ID.
 java.lang.Object findDefinedID(java.lang.String id, int index)
          Find previously defined object corresponding to an ID.
 java.lang.Object findID(java.lang.String id, int index)
          Find the object corresponding to an ID.
 int getActiveNamespaceCount()
          Get count of active namespaces.
 java.lang.String getActiveNamespacePrefix(int index)
          Get prefix for an active namespace.
 java.lang.String getActiveNamespaceUri(int index)
          Get URI for an active namespace.
 int getAttributeCount()
          Get number of attributes for current START_ELEMENT event.
 java.lang.String getAttributeName(int index)
          Get attribute name for current START_ELEMENT event.
 java.lang.String getAttributeNamespace(int index)
          Get attribute namespace for current START_ELEMENT event.
 java.lang.String getAttributePrefix(int index)
          Get attribute namespace prefix for current START_ELEMENT event.
 java.lang.String getAttributeValue(int index)
          Get attribute value for current START_ELEMENT event.
 java.lang.String getDocumentName()
          Return the supplied document name.
 java.lang.String getElementName()
          Returns current element name.
 java.lang.String getElementNamespace()
          Returns current element namespace URI.
 IBindingFactory getFactory()
          Return the binding factory used to create this unmarshaller.
 java.lang.String getInputEncoding()
          Return the input encoding, if known.
 java.lang.String getName()
          Get name associated with current parse event.
 java.lang.String getNamespace()
          Get namespace associated with current parse event.
 int getNamespaceCount()
          Get number of namespace declarations for current START_ELEMENT event.
 java.lang.String getNamespacePrefix(int index)
          Get namespace prefix for namespace declaration on current START_ELEMENT event.
 java.lang.String getNamespaceUri(int index)
          Get namespace URI for namespace declaration on current START_ELEMENT event.
 java.lang.String getNamespaceUri(java.lang.String prefix)
          Get namespace URI matching prefix.
 java.lang.String getPrefix()
          Get namespace prefix associated with current parse event.
 int getStackDepth()
          Get current unmarshalling object stack depth.
 java.lang.Object getStackObject(int depth)
          Get object from unmarshalling stack.
 java.lang.Object getStackTop()
          Get top object on unmarshalling stack.
 java.lang.String getText()
          Get text value for current event.
 IUnmarshaller getUnmarshaller(int index)
          Find the unmarshaller for a particular class index in the current context.
 IUnmarshaller getUnmarshaller(java.lang.String ns, java.lang.String name)
          Find the unmarshaller for a particular element name (including namespace) in the current context.
 java.lang.Object getUserContext()
          Get the user context object.
 boolean hasAnyAttribute(java.lang.String[] nss, java.lang.String[] names)
          Check if any of several attributes is present on current start tag.
 boolean hasAttribute(java.lang.String ns, java.lang.String name)
          Check if attribute is present on current start tag.
 boolean isAt(java.lang.String ns, java.lang.String name)
          Check if next tag is start of element.
 boolean isEnd()
          Check if next tag is an end tag.
 boolean isStart()
          Check if next tag is a start tag.
 int next()
          Advance to next major parse event.
 int nextToken()
          Advance to next parse event.
 byte parseContentByte(java.lang.String ns, java.lang.String tag)
          Parse past end of element, returning byte value of content.
 char parseContentChar(java.lang.String ns, java.lang.String tag)
          Parse past end of element, returning char value of content.
 int parseContentEnumeration(java.lang.String ns, java.lang.String tag, java.lang.String[] enums, int[] vals)
          Parse past end of element, returning enumeration value of content.
 int parseContentInt(java.lang.String ns, java.lang.String tag)
          Parse past end of element, returning integer value of content.
 short parseContentShort(java.lang.String ns, java.lang.String tag)
          Parse past end of element, returning short value of content.
 java.lang.String parseContentText()
          Parse required text content.
 java.lang.String parseContentText(java.lang.String ns, java.lang.String tag)
          Parse past end of element, returning optional text content.
 boolean parseElementBoolean(java.lang.String ns, java.lang.String tag)
          Parse entire element, returning boolean value of content.
 boolean parseElementBoolean(java.lang.String ns, java.lang.String tag, boolean dflt)
          Parse entire element, returning boolean value of optional content.
 byte parseElementByte(java.lang.String ns, java.lang.String tag)
          Parse entire element, returning byte value of content.
 byte parseElementByte(java.lang.String ns, java.lang.String tag, byte dflt)
          Parse entire element, returning byte value of optional content.
 char parseElementChar(java.lang.String ns, java.lang.String tag)
          Parse entire element, returning char value of content.
 char parseElementChar(java.lang.String ns, java.lang.String tag, char dflt)
          Parse entire element, returning char value of optional content.
 java.util.Date parseElementDate(java.lang.String ns, java.lang.String tag)
          Parse past end of element, returning java.util.Date value of content.
 java.util.Date parseElementDate(java.lang.String ns, java.lang.String tag, java.util.Date dflt)
          Parse entire element, returning java.util.Date value of optional content.
 double parseElementDouble(java.lang.String ns, java.lang.String tag)
          Parse past end of element, returning double value of content.
 double parseElementDouble(java.lang.String ns, java.lang.String tag, double dflt)
          Parse entire element, returning double value of optional content.
 int parseElementEnumeration(java.lang.String ns, java.lang.String tag, java.lang.String[] enums, int[] vals, int dflt)
          Parse entire element, returning enumeration value of optional content.
 java.lang.Object parseElementExistingIDREF(java.lang.String ns, java.lang.String tag, int index)
          Parse entire element, returning previously defined object corresponding to content interpreted as IDREF.
 float parseElementFloat(java.lang.String ns, java.lang.String tag)
          Parse past end of element, returning float value of content.
 float parseElementFloat(java.lang.String ns, java.lang.String tag, float dflt)
          Parse entire element, returning float value of optional content.
 java.lang.Object parseElementForwardIDREF(java.lang.String ns, java.lang.String tag, int index)
          Parse entire element, returning object (if defined yet) corresponding to content interpreted as IDREF.
 int parseElementInt(java.lang.String ns, java.lang.String tag)
          Parse entire element, returning integer value of content.
 int parseElementInt(java.lang.String ns, java.lang.String tag, int dflt)
          Parse entire optional element, returning integer value of content.
 long parseElementLong(java.lang.String ns, java.lang.String tag)
          Parse past end of element, returning long value of content.
 long parseElementLong(java.lang.String ns, java.lang.String tag, long dflt)
          Parse entire element, returning long value of optional content.
 short parseElementShort(java.lang.String ns, java.lang.String tag)
          Parse entire element, returning short value of content.
 short parseElementShort(java.lang.String ns, java.lang.String tag, short dflt)
          Parse entire element, returning short value of optional content.
 java.lang.String parseElementText(java.lang.String ns, java.lang.String tag)
          Parse entire element, returning text content.
 java.lang.String parseElementText(java.lang.String ns, java.lang.String tag, java.lang.String dflt)
          Parse entire element, returning optional text content.
 boolean parseIfStartTag(java.lang.String ns, java.lang.String name)
          Parse past start of expected element.
 void parsePastCurrentEndTag(java.lang.String ns, java.lang.String name)
          Parse past current end of element.
 void parsePastElement(java.lang.String ns, java.lang.String tag)
          Parse past element, ignoring all content.
 void parsePastEndTag(java.lang.String ns, java.lang.String name)
          Parse past end of element.
 void parsePastStartTag(java.lang.String ns, java.lang.String name)
          Parse past start of element.
 void parseToStartTag(java.lang.String ns, java.lang.String name)
          Parse to start of element.
 void popObject()
          Pop unmarshalled object from stack.
 void pushObject(java.lang.Object obj)
          Push created object to unmarshalling stack.
 void pushTrackedObject(java.lang.Object obj)
          Push created object to unmarshalling stack with position tracking.
 void registerBackFill(int index, BackFillReference fill)
          Register back fill item for last parsed ID value.
 void registerBackFill(java.lang.String id, int index, BackFillReference fill)
          Register back fill item for undefined ID value.
 void removeUnmarshalling(int index)
          Undefine unmarshalling for element.
 void reset()
          Reset unmarshalling information.
 void setDocument(java.io.InputStream ins, java.lang.String enc)
          Set document to be parsed from stream.
 void setDocument(java.io.InputStream ins, java.lang.String name, java.lang.String enc)
          Set named document to be parsed from stream.
 void setDocument(java.io.InputStream ins, java.lang.String name, java.lang.String enc, boolean nsa)
          Set document to be parsed from stream.
 void setDocument(IXMLReader rdr)
          Set input document parse source directly.
 void setDocument(java.io.Reader rdr)
          Set document to be parsed from reader.
 void setDocument(java.io.Reader rdr, java.lang.String name)
          Set named document to be parsed from reader.
 void setDocument(java.io.Reader rdr, java.lang.String name, boolean nsa)
          Set document to be parsed from reader.
 void setFromContext(UnmarshallingContext parent)
          Initializes the context to use the same parser and document as another unmarshalling context.
 void setUserContext(java.lang.Object obj)
          Set a user context object.
 void skipElement()
          Skip past current element.
 void throwEndTagNameError(java.lang.String ns, java.lang.String name)
          Throw exception for expected element end tag not found.
 void throwException(java.lang.String msg)
          Throw exception with position information.
 void throwException(java.lang.String msg, java.lang.Exception ex)
          Throw exception with position information and nested exception.
 void throwNameException(java.lang.String msg, java.lang.String ns, java.lang.String name)
          Throw exception including a name and position information.
 void throwStartTagException(java.lang.String msg)
          Throw exception with start tag and position information.
 void throwStartTagException(java.lang.String msg, java.lang.Exception ex)
          Throw exception with start tag, position information, and nested exception.
 void throwStartTagNameError(java.lang.String ns, java.lang.String name)
          Throw exception for expected element start tag not found.
 java.lang.String toEnd()
          Parse to end tag.
 java.lang.String toStart()
          Parse to start tag.
 int toTag()
          Parse to start or end tag.
 void trackObject(java.lang.Object obj)
          Set position tracking information for object, if supported.
 java.lang.Object unmarshalDocument(java.io.InputStream ins, java.lang.String enc)
          Unmarshal document from stream to object.
 java.lang.Object unmarshalDocument(java.io.InputStream ins, java.lang.String name, java.lang.String enc)
          Unmarshal named document from stream to object.
 java.lang.Object unmarshalDocument(java.io.Reader rdr)
          Unmarshal document from reader to object.
 java.lang.Object unmarshalDocument(java.io.Reader rdr, java.lang.String name)
          Unmarshal named document from reader to object.
 java.lang.Object unmarshalElement()
          Unmarshal required element.
 java.lang.Object unmarshalElement(java.lang.Class clas)
          Unmarshal required element of specified type.
 java.lang.Object unmarshalOptionalElement()
          Unmarshal optional element.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

UnmarshallingContext

public UnmarshallingContext(int nmap,
                            java.lang.String[] umcs,
                            java.lang.String[] nss,
                            java.lang.String[] names,
                            java.lang.String[] idcs,
                            IBindingFactory ifact)
Constructor. Builds the actual parser and initializes internal data structures.

Parameters:
nmap - number of mapping definitions included
umcs - names of unmarshaller classes for indexes with fixed unmarshallers (as opposed to mapping slots, which may be overridden; reference kept, must be constant)
nss - namespaces for elements of classes with global definitions
names - names for elements of classes with global definitions
idcs - array of class names with IDs (null if no IDs or global IDs)
ifact - binding factory creating this unmarshaller

UnmarshallingContext

public UnmarshallingContext()
Default constructor. This can be used for creating a context outside of the generated code for special purposes.

Method Detail

buildNameString

public static java.lang.String buildNameString(java.lang.String ns,
                                               java.lang.String name)
Build name with optional namespace. Just returns the appropriate name format.

Parameters:
ns - namespace URI of name
name - local name part of name
Returns:
formatted name string

currentNameString

public java.lang.String currentNameString()
Build current element name, with optional namespace.

Returns:
formatted name string

buildPositionString

public java.lang.String buildPositionString()
Build current parse input position description.

Returns:
text description of current parse position

throwStartTagNameError

public void throwStartTagNameError(java.lang.String ns,
                                   java.lang.String name)
                            throws JiBXException
Throw exception for expected element start tag not found.

Parameters:
ns - namespace URI of name
name - local name part of name
Throws:
JiBXException - always thrown

throwEndTagNameError

public void throwEndTagNameError(java.lang.String ns,
                                 java.lang.String name)
                          throws JiBXException
Throw exception for expected element end tag not found.

Parameters:
ns - namespace URI of name
name - local name part of name
Throws:
JiBXException - always thrown

throwNameException

public void throwNameException(java.lang.String msg,
                               java.lang.String ns,
                               java.lang.String name)
                        throws JiBXException
Throw exception including a name and position information.

Parameters:
msg - leading message text
ns - namespace URI of name
name - local name part of name
Throws:
JiBXException - always thrown

setDocument

public void setDocument(java.io.InputStream ins,
                        java.lang.String name,
                        java.lang.String enc,
                        boolean nsa)
                 throws JiBXException
Set document to be parsed from stream. This call is not part of the interface definition, but is supplied to allow direct control of the namespace processing by the compiler. The option of disabling namespaces should be considered experimental and may not be supported in the future.

Parameters:
ins - stream supplying document data
name - document name (null if unknown)
enc - document input encoding, or null if to be determined by parser
nsa - enable namespace processing for parser flag
Throws:
JiBXException - if error creating parser

setDocument

public void setDocument(java.io.InputStream ins,
                        java.lang.String enc)
                 throws JiBXException
Set document to be parsed from stream.

Specified by:
setDocument in interface IUnmarshallingContext
Parameters:
ins - stream supplying document data
enc - document input encoding, or null if to be determined by parser
Throws:
JiBXException - if error creating parser

setDocument

public void setDocument(java.io.Reader rdr,
                        java.lang.String name,
                        boolean nsa)
                 throws JiBXException
Set document to be parsed from reader. This call is not part of the interface definition, but is supplied to allow direct control of the namespace processing by the compiler. The option of disabling namespaces should be considered experimental and may not be supported in the future.

Parameters:
rdr - reader supplying document data
name - document name (null if unknown)
nsa - enable namespace processing for parser flag
Throws:
JiBXException - if error creating parser

setDocument

public void setDocument(java.io.Reader rdr)
                 throws JiBXException
Set document to be parsed from reader.

Specified by:
setDocument in interface IUnmarshallingContext
Parameters:
rdr - reader supplying document data
Throws:
JiBXException - if error creating parser

setDocument

public void setDocument(java.io.InputStream ins,
                        java.lang.String name,
                        java.lang.String enc)
                 throws JiBXException
Set named document to be parsed from stream.

Specified by:
setDocument in interface IUnmarshallingContext
Parameters:
ins - stream supplying document data
name - document name
enc - document input encoding, or null if to be determined by parser
Throws:
JiBXException - if error creating parser

setDocument

public void setDocument(java.io.Reader rdr,
                        java.lang.String name)
                 throws JiBXException
Set named document to be parsed from reader.

Specified by:
setDocument in interface IUnmarshallingContext
Parameters:
rdr - reader supplying document data
name - document name
Throws:
JiBXException - if error creating parser

setDocument

public void setDocument(IXMLReader rdr)
Set input document parse source directly.

Parameters:
rdr - document parse event reader

setFromContext

public void setFromContext(UnmarshallingContext parent)
Initializes the context to use the same parser and document as another unmarshalling context. This method is designed for use when an initial context needs to create and invoke a secondary context in the course of an unmarshalling operation.

Parameters:
parent - context supplying parser and document to be unmarshalled

reset

public void reset()
Reset unmarshalling information. This releases all references to unmarshalled objects and prepares the context for potential reuse. It is automatically called when input is set.

Specified by:
reset in interface IUnmarshallingContext

toStart

public java.lang.String toStart()
                         throws JiBXException
Parse to start tag. Ignores character data seen prior to a start tag, but throws exception if an end tag or the end of the document is seen before a start tag. Leaves the parser positioned at the start tag.

Returns:
element name of start tag found
Throws:
JiBXException - on any error (possibly wrapping other exception)

toEnd

public java.lang.String toEnd()
                       throws JiBXException
Parse to end tag. Ignores character data seen prior to an end tag, but throws exception if a start tag or the end of the document is seen before an end tag. Leaves the parser positioned at the end tag.

Returns:
element name of end tag found
Throws:
JiBXException - on any error (possibly wrapping other exception)

toTag

public int toTag()
          throws JiBXException
Parse to start or end tag. If not currently positioned at a start or end tag this first advances the parse to the next start or end tag.

Returns:
parser event type for start tag or end tag
Throws:
JiBXException - on any error (possibly wrapping other exception)

isAt

public boolean isAt(java.lang.String ns,
                    java.lang.String name)
             throws JiBXException
Check if next tag is start of element. If not currently positioned at a start or end tag this first advances the parse to the next start or end tag.

Specified by:
isAt in interface IUnmarshallingContext
Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
name - element name expected
Returns:
true if at start of element with supplied name, false if not
Throws:
JiBXException - on any error (possibly wrapping other exception)

hasAttribute

public boolean hasAttribute(java.lang.String ns,
                            java.lang.String name)
                     throws JiBXException
Check if attribute is present on current start tag. Throws an exception if not currently positioned on a start tag.

Parameters:
ns - namespace URI for expected attribute (may be null or the empty string for the empty namespace)
name - attribute name expected
Returns:
true if named attribute is present, false if not
Throws:
JiBXException - on any error (possibly wrapping other exception)

hasAnyAttribute

public boolean hasAnyAttribute(java.lang.String[] nss,
                               java.lang.String[] names)
                        throws JiBXException
Check if any of several attributes is present on current start tag. Throws an exception if not currently positioned on a start tag.

Parameters:
nss - namespace URIs for expected attributes (each may be null or the empty string for the empty namespace)
names - attribute names expected
Returns:
true if at least one of the named attributes is present, false if not
Throws:
JiBXException - on any error (possibly wrapping other exception)

checkAllowedAttributes

public void checkAllowedAttributes(java.lang.String[] nss,
                                   java.lang.String[] names)
                            throws JiBXException
Check that only allowed attributes are present on current start tag. Throws an exception if not currently positioned on a start tag, or if an attribute is present which is not in the list.

Parameters:
nss - namespace URIs for allowed attributes (each may be null or the empty string for the empty namespace)
names - alphabetical list of attribute names expected (duplicates names are ordered by namespace URI)
Throws:
JiBXException - on any error (possibly wrapping other exception)

parseToStartTag

public void parseToStartTag(java.lang.String ns,
                            java.lang.String name)
                     throws JiBXException
Parse to start of element. Ignores character data to next start or end tag, but throws exception if an end tag is seen before a start tag, or if the start tag seen does not match the expected name. Leaves the parse positioned at the start tag.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
name - element name expected
Throws:
JiBXException - on any error (possibly wrapping other exception)

parsePastStartTag

public void parsePastStartTag(java.lang.String ns,
                              java.lang.String name)
                       throws JiBXException
Parse past start of element. Ignores character data to next start or end tag, but throws exception if an end tag is seen before a start tag, or if the start tag seen does not match the expected name. Leaves the parse positioned following the start tag.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
name - element name expected
Throws:
JiBXException - on any error (possibly wrapping other exception)

parseIfStartTag

public boolean parseIfStartTag(java.lang.String ns,
                               java.lang.String name)
                        throws JiBXException
Parse past start of expected element. If not currently positioned at a start or end tag this first advances the parser to the next tag. If the expected start tag is found it is skipped and the parse is left positioned following the start tag.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
name - element name expected
Returns:
true if start tag found, false if not
Throws:
JiBXException - on any error (possibly wrapping other exception)

parsePastCurrentEndTag

public void parsePastCurrentEndTag(java.lang.String ns,
                                   java.lang.String name)
                            throws JiBXException
Parse past current end of element. Ignores character data to next start or end tag, but throws exception if a start tag is seen before a end tag, or if the end tag seen does not match the expected name. Leaves the parse positioned following the end tag.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
name - element name expected
Throws:
JiBXException - on any error (possibly wrapping other exception)

parsePastEndTag

public void parsePastEndTag(java.lang.String ns,
                            java.lang.String name)
                     throws JiBXException
Parse past end of element. If currently at a start tag parses past that start tag, then ignores character data to next start or end tag, and throws exception if a start tag is seen before a end tag, or if the end tag seen does not match the expected name. Leaves the parse positioned following the end tag.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
name - element name expected
Throws:
JiBXException - on any error (possibly wrapping other exception)

isStart

public boolean isStart()
                throws JiBXException
Check if next tag is a start tag. If not currently positioned at a start or end tag this first advances the parse to the next start or end tag.

Specified by:
isStart in interface IUnmarshallingContext
Returns:
true if at start of element, false if at end
Throws:
JiBXException - on any error (possibly wrapping other exception)

isEnd

public boolean isEnd()
              throws JiBXException
Check if next tag is an end tag. If not currently positioned at a start or end tag this first advances the parse to the next start or end tag.

Specified by:
isEnd in interface IUnmarshallingContext
Returns:
true if at end of element, false if at start
Throws:
JiBXException - on any error (possibly wrapping other exception)

accumulateText

public java.lang.String accumulateText()
                                throws JiBXException
Accumulate text content. This skips past comments and processing instructions, and consolidates text and entities to a single string. Any unexpanded entity references found are treated as errors.

Returns:
consolidated text string (empty string if no text components)
Throws:
JiBXException - on error in unmarshalling

parseContentText

public java.lang.String parseContentText()
                                  throws JiBXException
Parse required text content. Assumes the parse is already positioned at the text content, so just returns the text.

Returns:
content text found
Throws:
JiBXException - on any error (possible wrapping other exception)

parseContentText

public java.lang.String parseContentText(java.lang.String ns,
                                         java.lang.String tag)
                                  throws JiBXException
Parse past end of element, returning optional text content. Assumes you've already parsed past the start tag of the element, so it just looks for text content followed by the end tag, and returns with the parser positioned after the end tag.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
tag - element name expected
Returns:
content text from element
Throws:
JiBXException - on any error (possible wrapping other exception)

parseContentInt

public int parseContentInt(java.lang.String ns,
                           java.lang.String tag)
                    throws JiBXException
Parse past end of element, returning integer value of content. Assumes you've already parsed past the start tag of the element, so it just looks for text content followed by the end tag.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
tag - element name expected
Returns:
converted value from element text
Throws:
JiBXException - on any error (possible wrapping other exception)

parseElementText

public java.lang.String parseElementText(java.lang.String ns,
                                         java.lang.String tag)
                                  throws JiBXException
Parse entire element, returning text content. Expects to find the element start tag, text content, and end tag, in that order, and returns with the parser positioned following the end tag.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
tag - element name expected
Returns:
content text from element
Throws:
JiBXException - on any error (possible wrapping other exception)

parseElementText

public java.lang.String parseElementText(java.lang.String ns,
                                         java.lang.String tag,
                                         java.lang.String dflt)
                                  throws JiBXException
Parse entire element, returning optional text content. Expects to find the element start tag, text content, and end tag, in that order, and returns with the parser positioned following the end tag. Returns the default text if the element is not found.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
tag - element name expected
dflt - default text value
Returns:
content text from element
Throws:
JiBXException - on any error (possible wrapping other exception)

attributeText

public java.lang.String attributeText(java.lang.String ns,
                                      java.lang.String name)
                               throws JiBXException
Get text value of attribute from current start tag. Throws an exception if the attribute value is not found in the start tag.

Parameters:
ns - namespace URI for expected attribute (may be null or the empty string for the empty namespace)
name - attribute name expected
Returns:
attribute value text
Throws:
JiBXException - if attribute not present

attributeText

public java.lang.String attributeText(java.lang.String ns,
                                      java.lang.String name,
                                      java.lang.String dflt)
Get text value of optional attribute from current start tag. If the attribute is not present the supplied default value is returned instead.

Parameters:
ns - namespace URI for expected attribute (may be null or the empty string for the empty namespace)
name - attribute name expected
dflt - value to be returned if attribute is not present
Returns:
attribute value text

findID

public java.lang.Object findID(java.lang.String id,
                               int index)
                        throws JiBXException
Find the object corresponding to an ID. This method just handles the lookup and checks the object type.

Parameters:
id - ID text
index - expected reference type index
Returns:
object corresponding to IDREF, or null if not yet defined
Throws:
JiBXException - on any error

findDefinedID

public java.lang.Object findDefinedID(java.lang.String id,
                                      int index)
                               throws JiBXException
Find previously defined object corresponding to an ID. This does the lookup and checks that the referenced object has been defined.

Parameters:
id - ID text
index - expected reference type index
Returns:
object corresponding to IDREF
Throws:
JiBXException - on any error

parseElementForwardIDREF

public java.lang.Object parseElementForwardIDREF(java.lang.String ns,
                                                 java.lang.String tag,
                                                 int index)
                                          throws JiBXException
Parse entire element, returning object (if defined yet) corresponding to content interpreted as IDREF. Expects to find the element start tag, text content, and end tag, in that order, and returns with the parser positioned following the end tag.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
tag - attribute name expected
index - expected reference type index
Returns:
object corresponding to IDREF, or null if not yet defined
Throws:
JiBXException - on any error (possibly wrapping other exception)

attributeForwardIDREF

public java.lang.Object attributeForwardIDREF(java.lang.String ns,
                                              java.lang.String name,
                                              int index)
                                       throws JiBXException
Get object (if defined yet) corresponding to IDREF attribute from current start tag.

Parameters:
ns - namespace URI for expected attribute (may be null or the empty string for the empty namespace)
name - attribute name expected
index - expected reference type index
Returns:
object corresponding to IDREF, or null if not yet defined
Throws:
JiBXException - if attribute not present, or ID mapped to a different type of object than expected

parseElementExistingIDREF

public java.lang.Object parseElementExistingIDREF(java.lang.String ns,
                                                  java.lang.String tag,
                                                  int index)
                                           throws JiBXException
Parse entire element, returning previously defined object corresponding to content interpreted as IDREF. Expects to find the element start tag, text content, and end tag, in that order, and returns with the parser positioned following the end tag.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
tag - attribute name expected
index - expected reference type index
Returns:
object corresponding to IDREF
Throws:
JiBXException - if attribute not present, ID not defined, or mapped to a different type of object than expected

attributeExistingIDREF

public java.lang.Object attributeExistingIDREF(java.lang.String ns,
                                               java.lang.String name,
                                               int index)
                                        throws JiBXException
Get previously defined object corresponding to IDREF attribute from current start tag.

Parameters:
ns - namespace URI for expected attribute (may be null or the empty string for the empty namespace)
name - attribute name expected
index - expected reference type index
Returns:
object corresponding to IDREF
Throws:
JiBXException - if attribute not present, ID not defined, or mapped to a different type of object than expected

attributeInt

public int attributeInt(java.lang.String ns,
                        java.lang.String name)
                 throws JiBXException
Get integer value of attribute from current start tag. Throws an exception if the attribute is not found in the start tag, or if it is not a valid integer value.

Parameters:
ns - namespace URI for expected attribute (may be null or the empty string for the empty namespace)
name - attribute name expected
Returns:
attribute integer value
Throws:
JiBXException - if attribute not present or not a valid integer value

attributeInt

public int attributeInt(java.lang.String ns,
                        java.lang.String name,
                        int dflt)
                 throws JiBXException
Get integer value of optional attribute from current start tag. If the attribute is not present the supplied default value is returned instead.

Parameters:
ns - namespace URI for expected attribute (may be null or the empty string for the empty namespace)
name - attribute name expected
dflt - value to be returned if attribute is not present
Returns:
attribute integer value
Throws:
JiBXException - if attribute value is not a valid integer

parseElementInt

public int parseElementInt(java.lang.String ns,
                           java.lang.String tag)
                    throws JiBXException
Parse entire element, returning integer value of content. Expects to find the element start tag, text content, and end tag, in that order, and returns with the parser positioned following the end tag.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
tag - element name expected
Returns:
content text from element
Throws:
JiBXException - on any error (possibly wrapping other exception)

parseElementInt

public int parseElementInt(java.lang.String ns,
                           java.lang.String tag,
                           int dflt)
                    throws JiBXException
Parse entire optional element, returning integer value of content. Expects to find the element start tag, text content, and end tag, in that order, and returns with the parser positioned following the end tag. Returns the default value if the element is missing or has no content.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
tag - element name expected
dflt - default value
Returns:
content text from element
Throws:
JiBXException - on any error (possibly wrapping other exception)

convertEnum

public int convertEnum(java.lang.String target,
                       java.lang.String[] enums,
                       int[] vals)
                throws JiBXException
Find required text value in enumeration. Looks up and returns the enumeration value corresponding to the target text.

Parameters:
target - text to be found in enumeration
enums - ordered array of texts included in enumeration
vals - array of values to be returned for corresponding text match positions (position returned directly if this is null)
Returns:
enumeration value for target text
Throws:
JiBXException - if target text not found in enumeration

convertEnum

public int convertEnum(java.lang.String target,
                       java.lang.String[] enums,
                       int[] vals,
                       int dflt)
                throws JiBXException
Find optional text value in enumeration. Looks up and returns the enumeration value corresponding to the target text, or the default value if the text is null.

Parameters:
target - text to be found in enumeration (may be null)
enums - ordered array of texts included in enumeration
vals - array of values to be returned for corresponding text match positions (position returned directly if this is null)
dflt - default value returned if target text is null
Returns:
enumeration value for target text
Throws:
JiBXException - if target text not found in enumeration

attributeEnumeration

public int attributeEnumeration(java.lang.String ns,
                                java.lang.String name,
                                java.lang.String[] enums,
                                int[] vals)
                         throws JiBXException
Get enumeration attribute value from current start tag. Throws an exception if the attribute value is not found in the start tag or the text does not match a value defined in the enumeration table.

Parameters:
ns - namespace URI for expected attribute (may be null or the empty string for the empty namespace)
name - attribute name expected
enums - ordered array of texts included in enumeration
vals - array of values to be returned for corresponding text match positions (position returned directly if this is null)
Returns:
enumeration value for target text
Throws:
JiBXException - if attribute not present or value not found in enumeration list

attributeEnumeration

public int attributeEnumeration(java.lang.String ns,
                                java.lang.String name,
                                java.lang.String[] enums,
                                int[] vals,
                                int dflt)
                         throws JiBXException
Get optional enumeration attribute value from current start tag. Throws an exception if the attribute value is present but does not match a value defined in the enumeration table.

Parameters:
ns - namespace URI for expected attribute (may be null or the empty string for the empty namespace)
name - attribute name expected
enums - ordered array of texts included in enumeration
vals - array of values to be returned for corresponding text match positions (position returned directly if this is null)
dflt - default value returned if attribute is not present
Returns:
enumeration value for target text
Throws:
JiBXException - if attribute not present or value not found in enumeration list

parseContentEnumeration

public int parseContentEnumeration(java.lang.String ns,
                                   java.lang.String tag,
                                   java.lang.String[] enums,
                                   int[] vals)
                            throws JiBXException
Parse past end of element, returning enumeration value of content. Assumes you've already parsed past the start tag of the element, so it just looks for text content followed by the end tag, and returns with the parser positioned after the end tag.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
tag - element name expected
enums - ordered array of texts included in enumeration
vals - array of values to be returned for corresponding text match positions (position returned directly if this is null)
Returns:
enumeration value for element text
Throws:
JiBXException - on any error (possible wrapping other exception)

parseElementEnumeration

public int parseElementEnumeration(java.lang.String ns,
                                   java.lang.String tag,
                                   java.lang.String[] enums,
                                   int[] vals,
                                   int dflt)
                            throws JiBXException
Parse entire element, returning enumeration value of optional content. Expects to find the element start tag, text content, and end tag, in that order, and returns with the parser positioned following the end tag. Returns the default value if no content is present.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
tag - element name expected
enums - ordered array of texts included in enumeration
vals - array of values to be returned for corresponding text match positions (position returned directly if this is null)
dflt - default value
Returns:
enumeration value for element text
Throws:
JiBXException - on any error (possibly wrapping other exception)

convertByte

public byte convertByte(java.lang.String text)
                 throws JiBXException
Convert byte value with exception wrapper. This internal method is used by all the byte unmarshalling calls. It adds position information to any exceptions that occur.

Parameters:
text - text for value to be converted
Returns:
converted byte value
Throws:
JiBXException - if not a valid byte value

attributeByte

public byte attributeByte(java.lang.String ns,
                          java.lang.String name)
                   throws JiBXException
Get byte value of attribute from current start tag. Throws an exception if the attribute is not found in the start tag, or if it is not a valid integer value.

Parameters:
ns - namespace URI for expected attribute (may be null or the empty string for the empty namespace)
name - attribute name expected
Returns:
attribute byte value
Throws:
JiBXException - if attribute not present or not a valid byte value

attributeByte

public byte attributeByte(java.lang.String ns,
                          java.lang.String name,
                          byte dflt)
                   throws JiBXException
Get byte value of optional attribute from current start tag. If the attribute is not present the supplied default value is returned instead.

Parameters:
ns - namespace URI for expected attribute (may be null or the empty string for the empty namespace)
name - attribute name expected
dflt - value to be returned if attribute is not present
Returns:
attribute byte value
Throws:
JiBXException - if attribute value is not a valid byte

parseContentByte

public byte parseContentByte(java.lang.String ns,
                             java.lang.String tag)
                      throws JiBXException
Parse past end of element, returning byte value of content. Assumes you've already parsed past the start tag of the element, so it just looks for text content followed by the end tag, and returns with the parser positioned after the end tag.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
tag - element name expected
Returns:
converted value from element text
Throws:
JiBXException - on any error (possible wrapping other exception)

parseElementByte

public byte parseElementByte(java.lang.String ns,
                             java.lang.String tag)
                      throws JiBXException
Parse entire element, returning byte value of content. Expects to find the element start tag, text content, and end tag, in that order, and returns with the parser positioned following the end tag.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
tag - element name expected
Returns:
content text from element
Throws:
JiBXException - on any error (possibly wrapping other exception)

parseElementByte

public byte parseElementByte(java.lang.String ns,
                             java.lang.String tag,
                             byte dflt)
                      throws JiBXException
Parse entire element, returning byte value of optional content. Expects to find the element start tag, text content, and end tag, in that order, and returns with the parser positioned following the end tag. Returns the default value if no content is present.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
tag - element name expected
dflt - default value
Returns:
content text from element
Throws:
JiBXException - on any error (possibly wrapping other exception)

convertShort

public short convertShort(java.lang.String text)
                   throws JiBXException
Convert short value with exception wrapper. This internal method is used by all the short unmarshalling calls. It adds position information to any exceptions that occur.

Parameters:
text - text for value to be converted
Returns:
converted short value
Throws:
JiBXException - if not a valid short value

attributeShort

public short attributeShort(java.lang.String ns,
                            java.lang.String name)
                     throws JiBXException
Get short value of attribute from current start tag. Throws an exception if the attribute is not found in the start tag, or if it is not a valid integer value.

Parameters:
ns - namespace URI for expected attribute (may be null or the empty string for the empty namespace)
name - attribute name expected
Returns:
attribute short value
Throws:
JiBXException - if attribute not present or not a valid short value

attributeShort

public short attributeShort(java.lang.String ns,
                            java.lang.String name,
                            short dflt)
                     throws JiBXException
Get short value of optional attribute from current start tag. If the attribute is not present the supplied default value is returned instead.

Parameters:
ns - namespace URI for expected attribute (may be null or the empty string for the empty namespace)
name - attribute name expected
dflt - value to be returned if attribute is not present
Returns:
attribute short value
Throws:
JiBXException - if attribute value is not a valid short

parseContentShort

public short parseContentShort(java.lang.String ns,
                               java.lang.String tag)
                        throws JiBXException
Parse past end of element, returning short value of content. Assumes you've already parsed past the start tag of the element, so it just looks for text content followed by the end tag, and returns with the parser positioned after the end tag.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
tag - element name expected
Returns:
converted value from element text
Throws:
JiBXException - on any error (possible wrapping other exception)

parseElementShort

public short parseElementShort(java.lang.String ns,
                               java.lang.String tag)
                        throws JiBXException
Parse entire element, returning short value of content. Expects to find the element start tag, text content, and end tag, in that order, and returns with the parser positioned following the end tag.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
tag - element name expected
Returns:
content text from element
Throws:
JiBXException - on any error (possibly wrapping other exception)

parseElementShort

public short parseElementShort(java.lang.String ns,
                               java.lang.String tag,
                               short dflt)
                        throws JiBXException
Parse entire element, returning short value of optional content. Expects to find the element start tag, text content, and end tag, in that order, and returns with the parser positioned following the end tag. Returns the default value if no content is present.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
tag - element name expected
dflt - default value
Returns:
content text from element
Throws:
JiBXException - on any error (possibly wrapping other exception)

convertChar

public char convertChar(java.lang.String text)
                 throws JiBXException
Convert char value with exception wrapper. This internal method is used by all the char unmarshalling calls. It adds position information to any exceptions that occur.

Parameters:
text - text for value to be converted
Returns:
converted char value
Throws:
JiBXException - if not a valid char value

attributeChar

public char attributeChar(java.lang.String ns,
                          java.lang.String name)
                   throws JiBXException
Get char value of attribute from current start tag. Throws an exception if the attribute is not found in the start tag, or if it is not a valid integer value.

Parameters:
ns - namespace URI for expected attribute (may be null or the empty string for the empty namespace)
name - attribute name expected
Returns:
attribute char value
Throws:
JiBXException - if attribute not present or not a valid char value

attributeChar

public char attributeChar(java.lang.String ns,
                          java.lang.String name,
                          char dflt)
                   throws JiBXException
Get char value of optional attribute from current start tag. If the attribute is not present the supplied default value is returned instead.

Parameters:
ns - namespace URI for expected attribute (may be null or the empty string for the empty namespace)
name - attribute name expected
dflt - value to be returned if attribute is not present
Returns:
attribute char value
Throws:
JiBXException - if attribute value is not a valid char

parseContentChar

public char parseContentChar(java.lang.String ns,
                             java.lang.String tag)
                      throws JiBXException
Parse past end of element, returning char value of content. Assumes you've already parsed past the start tag of the element, so it just looks for text content followed by the end tag, and returns with the parser positioned after the end tag.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
tag - element name expected
Returns:
converted value from element text
Throws:
JiBXException - on any error (possible wrapping other exception)

parseElementChar

public char parseElementChar(java.lang.String ns,
                             java.lang.String tag)
                      throws JiBXException
Parse entire element, returning char value of content. Expects to find the element start tag, text content, and end tag, in that order, and returns with the parser positioned following the end tag.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
tag - element name expected
Returns:
content text from element
Throws:
JiBXException - on any error (possibly wrapping other exception)

parseElementChar

public char parseElementChar(java.lang.String ns,
                             java.lang.String tag,
                             char dflt)
                      throws JiBXException
Parse entire element, returning char value of optional content. Expects to find the element start tag, text content, and end tag, in that order, and returns with the parser positioned following the end tag. Returns the default value if the element is not present.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
tag - element name expected
dflt - default value
Returns:
content text from element
Throws:
JiBXException - on any error (possibly wrapping other exception)

convertLong

public long convertLong(java.lang.String text)
                 throws JiBXException
Convert long value with exception wrapper. This internal method is used by all the long unmarshalling calls. It adds position information to any exceptions that occur.

Parameters:
text - text for value to be converted
Returns:
converted long value
Throws:
JiBXException - if not a valid long value

attributeLong

public long attributeLong(java.lang.String ns,
                          java.lang.String name)
                   throws JiBXException
Get long value of attribute from current start tag. Throws an exception if the attribute is not found in the start tag, or if it is not a valid integer value.

Parameters:
ns - namespace URI for expected attribute (may be null or the empty string for the empty namespace)
name - attribute name expected
Returns:
attribute long value
Throws:
JiBXException - if attribute not present or not a valid long value

attributeLong

public long attributeLong(java.lang.String ns,
                          java.lang.String name,
                          long dflt)
                   throws JiBXException
Get long value of optional attribute from current start tag. If the attribute is not present the supplied default value is returned instead.

Parameters:
ns - namespace URI for expected attribute (may be null or the empty string for the empty namespace)
name - attribute name expected
dflt - value to be returned if attribute is not present
Returns:
attribute long value
Throws:
JiBXException - if attribute value is not a valid long

parseElementLong

public long parseElementLong(java.lang.String ns,
                             java.lang.String tag)
                      throws JiBXException
Parse past end of element, returning long value of content. Expects to find the element start tag, text content, and end tag, in that order, and returns with the parser positioned following the end tag.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
tag - element name expected
Returns:
converted value from element text
Throws:
JiBXException - on any error (possible wrapping other exception)

parseElementLong

public long parseElementLong(java.lang.String ns,
                             java.lang.String tag,
                             long dflt)
                      throws JiBXException
Parse entire element, returning long value of optional content. Expects to find the element start tag, text content, and end tag, in that order, and returns with the parser positioned following the end tag. Returns the default value if the element is not present.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
tag - element name expected
dflt - default value
Returns:
content text from element
Throws:
JiBXException - on any error (possibly wrapping other exception)

convertBoolean

public boolean convertBoolean(java.lang.String text)
                       throws JiBXException
Convert boolean value. This internal method is used by all the boolean unmarshalling calls. It accepts "true" or "1" as equivalent, and "false" or "0" as equivalent, and throws exceptions for anything else.

Parameters:
text - text for value to be converted
Returns:
converted boolean value
Throws:
JiBXException - if not a valid boolean value

attributeBoolean

public boolean attributeBoolean(java.lang.String ns,
                                java.lang.String name)
                         throws JiBXException
Get boolean value of attribute from current start tag. Throws an exception if the attribute is not found in the start tag, or if it is not a valid integer value.

Parameters:
ns - namespace URI for expected attribute (may be null or the empty string for the empty namespace)
name - attribute name expected
Returns:
attribute boolean value
Throws:
JiBXException - if attribute not present or not a valid boolean value

attributeBoolean

public boolean attributeBoolean(java.lang.String ns,
                                java.lang.String name,
                                boolean dflt)
                         throws JiBXException
Get boolean value of optional attribute from current start tag. If the attribute is not present the supplied default value is returned instead.

Parameters:
ns - namespace URI for expected attribute (may be null or the empty string for the empty namespace)
name - attribute name expected
dflt - value to be returned if attribute is not present
Returns:
attribute boolean value
Throws:
JiBXException - if attribute value is not a valid boolean

parseElementBoolean

public boolean parseElementBoolean(java.lang.String ns,
                                   java.lang.String tag)
                            throws JiBXException
Parse entire element, returning boolean value of content. Expects to find the element start tag, text content, and end tag, in that order, and returns with the parser positioned following the end tag.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
tag - element name expected
Returns:
converted value from element text
Throws:
JiBXException - on any error (possible wrapping other exception)

parseElementBoolean

public boolean parseElementBoolean(java.lang.String ns,
                                   java.lang.String tag,
                                   boolean dflt)
                            throws JiBXException
Parse entire element, returning boolean value of optional content. Expects to find the element start tag, text content, and end tag, in that order, and returns with the parser positioned following the end tag. Returns the default value if the element is not present.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
tag - element name expected
dflt - default value
Returns:
content text from element
Throws:
JiBXException - on any error (possibly wrapping other exception)

convertFloat

public float convertFloat(java.lang.String text)
                   throws JiBXException
Convert float value with exception wrapper. This internal method is used by all the float unmarshalling calls. It adds position information to any exceptions that occur.

Parameters:
text - text for value to be converted
Returns:
converted float value
Throws:
JiBXException - if not a valid float value

attributeFloat

public float attributeFloat(java.lang.String ns,
                            java.lang.String name)
                     throws JiBXException
Get float value of attribute from current start tag. Throws an exception if the attribute is not found in the start tag, or if it is not a valid integer value.

Parameters:
ns - namespace URI for expected attribute (may be null or the empty string for the empty namespace)
name - attribute name expected
Returns:
attribute float value
Throws:
JiBXException - if attribute not present or not a valid float value

attributeFloat

public float attributeFloat(java.lang.String ns,
                            java.lang.String name,
                            float dflt)
                     throws JiBXException
Get float value of optional attribute from current start tag. If the attribute is not present the supplied default value is returned instead.

Parameters:
ns - namespace URI for expected attribute (may be null or the empty string for the empty namespace)
name - attribute name expected
dflt - value to be returned if attribute is not present
Returns:
attribute float value
Throws:
JiBXException - if attribute value is not a valid float

parseElementFloat

public float parseElementFloat(java.lang.String ns,
                               java.lang.String tag)
                        throws JiBXException
Parse past end of element, returning float value of content. Expects to find the element start tag, text content, and end tag, in that order, and returns with the parser positioned following the end tag.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
tag - element name expected
Returns:
converted value from element text
Throws:
JiBXException - on any error (possible wrapping other exception)

parseElementFloat

public float parseElementFloat(java.lang.String ns,
                               java.lang.String tag,
                               float dflt)
                        throws JiBXException
Parse entire element, returning float value of optional content. Expects to find the element start tag, text content, and end tag, in that order, and returns with the parser positioned following the end tag. Returns the default value if the element is not present.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
tag - element name expected
dflt - default value
Returns:
content text from element
Throws:
JiBXException - on any error (possibly wrapping other exception)

convertDouble

public double convertDouble(java.lang.String text)
                     throws JiBXException
Convert double value with exception wrapper. This internal method is used by all the double unmarshalling calls. It adds position information to any exceptions that occur.

Parameters:
text - text for value to be converted
Returns:
converted double value
Throws:
JiBXException - if not a valid double value

attributeDouble

public double attributeDouble(java.lang.String ns,
                              java.lang.String name)
                       throws JiBXException
Get double value of attribute from current start tag. Throws an exception if the attribute is not found in the start tag, or if it is not a valid integer value.

Parameters:
ns - namespace URI for expected attribute (may be null or the empty string for the empty namespace)
name - attribute name expected
Returns:
attribute double value
Throws:
JiBXException - if attribute not present or not a valid double value

attributeDouble

public double attributeDouble(java.lang.String ns,
                              java.lang.String name,
                              double dflt)
                       throws JiBXException
Get double value of optional attribute from current start tag. If the attribute is not present the supplied default value is returned instead.

Parameters:
ns - namespace URI for expected attribute (may be null or the empty string for the empty namespace)
name - attribute name expected
dflt - value to be returned if attribute is not present
Returns:
attribute double value
Throws:
JiBXException - if attribute value is not a valid double

parseElementDouble

public double parseElementDouble(java.lang.String ns,
                                 java.lang.String tag)
                          throws JiBXException
Parse past end of element, returning double value of content. Expects to find the element start tag, text content, and end tag, in that order, and returns with the parser positioned following the end tag.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
tag - element name expected
Returns:
converted value from element text
Throws:
JiBXException - on any error (possible wrapping other exception)

parseElementDouble

public double parseElementDouble(java.lang.String ns,
                                 java.lang.String tag,
                                 double dflt)
                          throws JiBXException
Parse entire element, returning double value of optional content. Expects to find the element start tag, text content, and end tag, in that order, and returns with the parser positioned following the end tag. Returns the default value if the element is not present.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
tag - element name expected
dflt - default value
Returns:
content text from element
Throws:
JiBXException - on any error (possibly wrapping other exception)

convertDate

public java.util.Date convertDate(java.lang.String text)
                           throws JiBXException
Convert java.util.Date value with exception wrapper. This internal method is used by all the Date unmarshalling calls. It adds position information to any exceptions that occur.

Parameters:
text - text for value to be converted
Returns:
converted Date value
Throws:
JiBXException - if not a valid Date value

attributeDate

public java.util.Date attributeDate(java.lang.String ns,
                                    java.lang.String name)
                             throws JiBXException
Get java.util.Date value of attribute from current start tag. Throws an exception if the attribute is not found in the start tag, or if it is not a valid integer value.

Parameters:
ns - namespace URI for expected attribute (may be null or the empty string for the empty namespace)
name - attribute name expected
Returns:
attribute Date value
Throws:
JiBXException - if attribute not present or not a valid Date value

attributeDate

public java.util.Date attributeDate(java.lang.String ns,
                                    java.lang.String name,
                                    java.util.Date dflt)
                             throws JiBXException
Get java.util.Date value of optional attribute from current start tag. If the attribute is not present the supplied default value is returned instead.

Parameters:
ns - namespace URI for expected attribute (may be null or the empty string for the empty namespace)
name - attribute name expected
dflt - value to be returned if attribute is not present
Returns:
attribute Date value
Throws:
JiBXException - if attribute value is not a valid Date

parseElementDate

public java.util.Date parseElementDate(java.lang.String ns,
                                       java.lang.String tag)
                                throws JiBXException
Parse past end of element, returning java.util.Date value of content. Expects to find the element start tag, text content, and end tag, in that order, and returns with the parser positioned following the end tag.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
tag - element name expected
Returns:
converted value from element text
Throws:
JiBXException - on any error (possible wrapping other exception)

parseElementDate

public java.util.Date parseElementDate(java.lang.String ns,
                                       java.lang.String tag,
                                       java.util.Date dflt)
                                throws JiBXException
Parse entire element, returning java.util.Date value of optional content. Expects to find the element start tag, text content, and end tag, in that order, and returns with the parser positioned following the end tag. Returns the default value if the element is not present.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
tag - element name expected
dflt - default value
Returns:
content text from element
Throws:
JiBXException - on any error (possibly wrapping other exception)

registerBackFill

public void registerBackFill(java.lang.String id,
                             int index,
                             BackFillReference fill)
                      throws JiBXException
Register back fill item for undefined ID value. This adds a holder to the mapping table if not already present, then adds the back fill item to the holder.

Parameters:
id - target undefined ID value
index - target reference type index
fill - back fill item
Throws:
JiBXException - if attribute not present, or ID already defined

registerBackFill

public void registerBackFill(int index,
                             BackFillReference fill)
                      throws JiBXException
Register back fill item for last parsed ID value. This adds a holder to the mapping table if not already present, then adds the back fill item to the holder. This form of call always applies to the last IDREF value parsed (from either an element or an attribute).

Parameters:
index - target reference type index
fill - back fill item
Throws:
JiBXException - if attribute not present, or ID already defined

defineID

public void defineID(java.lang.String id,
                     int index,
                     java.lang.Object obj)
              throws JiBXException
Define object for ID. Adds the owning object to a map with the ID value as key. Throws an exception if the object class does not match that expected from forward references, or if another object has previously been registered with the same ID.

Parameters:
id - text ID value
index - ID class index number
obj - object corresponding to element
Throws:
JiBXException - if duplicate ID or wrong class

addUnmarshalling

public void addUnmarshalling(int index,
                             java.lang.String ns,
                             java.lang.String name,
                             java.lang.String cname)
Define unmarshalling for element. Enables the unmarshalling definition linking an element name (including namespace) with a handler. The unmarshalling definitions use fixed indexes for each class, allowing direct lookup of the unmarshaller when multiple versions are defined.

Parameters:
index - class index for unmarshalling definition
ns - namespace for element (may be null or the empty string for the empty namespace)
name - name for element
cname - name of class created by unmarshaller

removeUnmarshalling

public void removeUnmarshalling(int index)
Undefine unmarshalling for element. Disables the unmarshalling definition for a particular class index.

Parameters:
index - class index for unmarshalling definition

getUnmarshaller

public IUnmarshaller getUnmarshaller(int index)
                              throws JiBXException
Find the unmarshaller for a particular class index in the current context.

Specified by:
getUnmarshaller in interface IUnmarshallingContext
Parameters:
index - class index for unmarshalling definition
Returns:
unmarshalling handler for class
Throws:
JiBXException - if unable to create unmarshaller

getUnmarshaller

public IUnmarshaller getUnmarshaller(java.lang.String ns,
                                     java.lang.String name)
                              throws JiBXException
Find the unmarshaller for a particular element name (including namespace) in the current context.

Parameters:
ns - namespace for element (may be null or the empty string for the empty namespace)
name - name for element
Returns:
unmarshalling handler for element, or null if none found
Throws:
JiBXException - if unable to create unmarshaller

unmarshalOptionalElement

public java.lang.Object unmarshalOptionalElement()
                                          throws JiBXException
Unmarshal optional element. If not currently positioned at a start or end tag this first advances the parse to the next start or end tag.

Returns:
unmarshalled object from element, or null if end tag rather than start tag seen
Throws:
JiBXException - on any error (possibly wrapping other exception)

unmarshalElement

public java.lang.Object unmarshalElement(java.lang.Class clas)
                                  throws JiBXException
Unmarshal required element of specified type. If not currently positioned at a start or end tag this first advances the parse to the next start or end tag. The returned object will always be assignable to the specified type.

Parameters:
clas - expected class of unmarshalled object
Returns:
unmarshalled object from element
Throws:
JiBXException - on any error (possibly wrapping other exception)

unmarshalElement

public java.lang.Object unmarshalElement()
                                  throws JiBXException
Unmarshal required element. If not currently positioned at a start or end tag this first advances the parse to the next start or end tag.

Specified by:
unmarshalElement in interface IUnmarshallingContext
Returns:
unmarshalled object from element
Throws:
JiBXException - on any error (possibly wrapping other exception)

parsePastElement

public void parsePastElement(java.lang.String ns,
                             java.lang.String tag)
                      throws JiBXException
Parse past element, ignoring all content. This may be used while positioned either before or on the element start tag. It checks if currently positioned at the element start tag, and if so advances to the next parse event. Then looks for the next end tag, ignoring character data and skipping child elements. Leaves the parse positioned following the end tag.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
tag - element name expected
Throws:
JiBXException - on any error (possible wrapping other exception)

getElementName

public java.lang.String getElementName()
                                throws JiBXException
Returns current element name.

Returns:
local name part of name, or null if not at a start or end tag
Throws:
JiBXException - if error from parser

getElementNamespace

public java.lang.String getElementNamespace()
                                     throws JiBXException
Returns current element namespace URI.

Returns:
namespace URI of name, or null if not at a start or end tag
Throws:
JiBXException - if error from parser

throwStartTagException

public void throwStartTagException(java.lang.String msg)
                            throws JiBXException
Throw exception with start tag and position information.

Parameters:
msg - exception message text
Throws:
JiBXException - always thrown

throwStartTagException

public void throwStartTagException(java.lang.String msg,
                                   java.lang.Exception ex)
                            throws JiBXException
Throw exception with start tag, position information, and nested exception.

Parameters:
msg - exception message text
ex - nested exception
Throws:
JiBXException - always thrown

throwException

public void throwException(java.lang.String msg)
                    throws JiBXException
Throw exception with position information.

Parameters:
msg - exception message text
Throws:
JiBXException - always thrown

throwException

public void throwException(java.lang.String msg,
                           java.lang.Exception ex)
                    throws JiBXException
Throw exception with position information and nested exception.

Parameters:
msg - exception message text
ex - nested exception
Throws:
JiBXException - always thrown

unmarshalDocument

public java.lang.Object unmarshalDocument(java.io.InputStream ins,
                                          java.lang.String enc)
                                   throws JiBXException
Unmarshal document from stream to object. The effect of this is the same as if setDocument(java.io.InputStream, java.lang.String, java.lang.String, boolean) were called, followed by unmarshalElement(java.lang.Class)

Specified by:
unmarshalDocument in interface IUnmarshallingContext
Parameters:
ins - stream supplying document data
enc - document input encoding, or null if to be determined by parser
Returns:
unmarshalled object
Throws:
JiBXException - if error creating parser

unmarshalDocument

public java.lang.Object unmarshalDocument(java.io.Reader rdr)
                                   throws JiBXException
Unmarshal document from reader to object. The effect of this is the same as if setDocument(java.io.InputStream, java.lang.String, java.lang.String, boolean) were called, followed by unmarshalElement(java.lang.Class)

Specified by:
unmarshalDocument in interface IUnmarshallingContext
Parameters:
rdr - reader supplying document data
Returns:
unmarshalled object
Throws:
JiBXException - if error creating parser

unmarshalDocument

public java.lang.Object unmarshalDocument(java.io.InputStream ins,
                                          java.lang.String name,
                                          java.lang.String enc)
                                   throws JiBXException
Unmarshal named document from stream to object. The effect of this is the same as if setDocument(java.io.InputStream, java.lang.String, java.lang.String, boolean) were called, followed by unmarshalElement(java.lang.Class)

Specified by:
unmarshalDocument in interface IUnmarshallingContext
Parameters:
ins - stream supplying document data
name - document name
enc - document input encoding, or null if to be determined by parser
Returns:
unmarshalled object
Throws:
JiBXException - if error creating parser

unmarshalDocument

public java.lang.Object unmarshalDocument(java.io.Reader rdr,
                                          java.lang.String name)
                                   throws JiBXException
Unmarshal named document from reader to object. The effect of this is the same as if setDocument(java.io.InputStream, java.lang.String, java.lang.String, boolean) were called, followed by unmarshalElement(java.lang.Class)

Specified by:
unmarshalDocument in interface IUnmarshallingContext
Parameters:
rdr - reader supplying document data
name - document name
Returns:
unmarshalled object
Throws:
JiBXException - if error creating parser

getFactory

public IBindingFactory getFactory()
Return the binding factory used to create this unmarshaller.

Returns:
binding factory

getDocumentName

public java.lang.String getDocumentName()
Return the supplied document name.

Specified by:
getDocumentName in interface IUnmarshallingContext
Returns:
supplied document name (null if none)

getInputEncoding

public java.lang.String getInputEncoding()
Return the input encoding, if known. This is only valid after parsing of a document has been started.

Returns:
input encoding (null if unknown)

setUserContext

public void setUserContext(java.lang.Object obj)
Set a user context object. This context object is not used directly by JiBX, but can be accessed by all types of user extension methods. The context object is automatically cleared by the reset() method, so to make use of this you need to first call the appropriate version of the setDocument() method, then this method, and finally the unmarshalElement(java.lang.Class) method.

Specified by:
setUserContext in interface IUnmarshallingContext
Parameters:
obj - user context object, or null if clearing existing context object
See Also:
getUserContext()

getUserContext

public java.lang.Object getUserContext()
Get the user context object.

Specified by:
getUserContext in interface IUnmarshallingContext
Returns:
user context object, or null if no context object set
See Also:
setUserContext(Object)

pushObject

public void pushObject(java.lang.Object obj)
Push created object to unmarshalling stack. This must be called before beginning the unmarshalling of the object. It is only called for objects with structure, not for those converted directly to and from text.

Specified by:
pushObject in interface IUnmarshallingContext
Parameters:
obj - object being unmarshalled

trackObject

public void trackObject(java.lang.Object obj)
Set position tracking information for object, if supported.

Parameters:
obj - object being tracked

pushTrackedObject

public void pushTrackedObject(java.lang.Object obj)
Push created object to unmarshalling stack with position tracking. If the object supports setting source location information, the location is also set by this method.

Parameters:
obj - object being unmarshalled

popObject

public void popObject()
               throws JiBXException
Pop unmarshalled object from stack.

Specified by:
popObject in interface IUnmarshallingContext
Throws:
JiBXException - if no object on stack

getStackDepth

public int getStackDepth()
Get current unmarshalling object stack depth. This allows tracking nested calls to unmarshal one object while in the process of unmarshalling another object. The bottom item on the stack is always the root object being unmarshalled.

Specified by:
getStackDepth in interface IUnmarshallingContext
Returns:
number of objects in unmarshalling stack

getStackObject

public java.lang.Object getStackObject(int depth)
Get object from unmarshalling stack. This stack allows tracking nested calls to unmarshal one object while in the process of unmarshalling another object. The bottom item on the stack is always the root object being unmarshalled.

Specified by:
getStackObject in interface IUnmarshallingContext
Parameters:
depth - object depth in stack to be retrieved (must be in the range of zero to the current depth minus one).
Returns:
object from unmarshalling stack

getStackTop

public java.lang.Object getStackTop()
Get top object on unmarshalling stack. This is safe to call even when no objects are on the stack.

Specified by:
getStackTop in interface IUnmarshallingContext
Returns:
object from unmarshalling stack, or null if none

getActiveNamespaceCount

public int getActiveNamespaceCount()
Get count of active namespaces.

Returns:
number of active namespaces in stack

getActiveNamespaceUri

public java.lang.String getActiveNamespaceUri(int index)
Get URI for an active namespace.

Parameters:
index - index number of namespace to be returned
Returns:
URI for namespace at position
Throws:
java.lang.IllegalArgumentException - if invalid index

getActiveNamespacePrefix

public java.lang.String getActiveNamespacePrefix(int index)
Get prefix for an active namespace.

Parameters:
index - stack position of namespace to be returned
Returns:
prefix for namespace at position
Throws:
java.lang.IllegalArgumentException - if invalid index

skipElement

public void skipElement()
                 throws JiBXException
Skip past current element.

Throws:
JiBXException - on any error (possibly wrapping other exception)

next

public int next()
         throws JiBXException
Advance to next major parse event. This wraps the base parser call in order to catch and handle exceptions, and to preserve a reasonable level of parser independence.

Returns:
event type for next major parse event (START_TAG, TEXT, END_TAG, or END_DOCUMENT)
Throws:
JiBXException - on any error (possibly wrapping other exception)

nextToken

public int nextToken()
              throws JiBXException
Advance to next parse event. This wraps the base parser call in order to catch and handle exceptions, and to preserve a reasonable level of parser independence.

Returns:
event type for next parse event
Throws:
JiBXException - on any error (possibly wrapping other exception)

currentEvent

public int currentEvent()
                 throws JiBXException
Get the current parse event type. This wraps the base parser call in order to catch and handle exceptions, and to preserve a reasonable level of parser independence.

Returns:
event type for current parse event
Throws:
JiBXException - on any error (possibly wrapping other exception)

getName

public java.lang.String getName()
Get name associated with current parse event.

Returns:
name text for name associated with event (START_ELEMENT, END_ELEMENT, or ENTITY_REF only)
Throws:
java.lang.IllegalStateException - if not at a start or end tag (optional)

getNamespace

public java.lang.String getNamespace()
Get namespace associated with current parse event.

Returns:
URI for namespace associated with event (START_ELEMENT or END_ELEMENT only), empty string if none
Throws:
java.lang.IllegalStateException - if not at a start or end tag (optional)

getPrefix

public java.lang.String getPrefix()
Get namespace prefix associated with current parse event.

Returns:
prefix for namespace associated with event (START_ELEMENT or END_ELEMENT only), null if none
Throws:
java.lang.IllegalStateException - if not at a start or end tag (optional)

getAttributeCount

public int getAttributeCount()
Get number of attributes for current START_ELEMENT event. The results are undefined if called when not at a START_ELEMENT event.

Returns:
number of attributes, or -1 if not at START_ELEMENT
Throws:
java.lang.IllegalStateException - if not at a start tag (optional)

getAttributeName

public java.lang.String getAttributeName(int index)
Get attribute name for current START_ELEMENT event. The results are undefined if called when not at a START_ELEMENT event.

Parameters:
index - index number of attribute to be returned
Returns:
name of attribute at position
Throws:
java.lang.IllegalStateException - if not at a start tag or invalid index

getAttributeNamespace

public java.lang.String getAttributeNamespace(int index)
Get attribute namespace for current START_ELEMENT event. The results are undefined if called when not at a START_ELEMENT event.

Parameters:
index - index number of attribute to be returned
Returns:
namespace URI of attribute at position, empty string if none
Throws:
java.lang.IllegalStateException - if not at a start tag or invalid index

getAttributePrefix

public java.lang.String getAttributePrefix(int index)
Get attribute namespace prefix for current START_ELEMENT event. The results are undefined if called when not at a START_ELEMENT event.

Parameters:
index - index number of attribute to be returned
Returns:
prefix for namespace of attribute at position, null if none
Throws:
java.lang.IllegalStateException - if not at a start tag or invalid index

getAttributeValue

public java.lang.String getAttributeValue(int index)
Get attribute value for current START_ELEMENT event. The results are undefined if called when not at a START_ELEMENT event.

Parameters:
index - index number of attribute to be returned
Returns:
value of attribute at position
Throws:
java.lang.IllegalStateException - if not at a start tag or invalid index

getNamespaceCount

public int getNamespaceCount()
Get number of namespace declarations for current START_ELEMENT event. The results are undefined if called when not at a START_ELEMENT event.

Returns:
number of namespace declarations, or -1 if not at START_ELEMENT

getNamespaceUri

public java.lang.String getNamespaceUri(int index)
Get namespace URI for namespace declaration on current START_ELEMENT event. The results are undefined if called when not at a START_ELEMENT event.

Parameters:
index - index number of declaration to be returned
Returns:
namespace URI for declaration at position
Throws:
java.lang.IllegalArgumentException - if invalid index

getNamespacePrefix

public java.lang.String getNamespacePrefix(int index)
Get namespace prefix for namespace declaration on current START_ELEMENT event. The results are undefined if called when not at a START_ELEMENT event.

Parameters:
index - index number of declaration to be returned
Returns:
namespace prefix for declaration at position,
Throws:
java.lang.IllegalArgumentException - if invalid index

getNamespaceUri

public java.lang.String getNamespaceUri(java.lang.String prefix)
Get namespace URI matching prefix.

Parameters:
prefix - namespace prefix to be matched (null for default namespace)
Returns:
namespace URI for prefix

getText

public java.lang.String getText()
Get text value for current event.

Returns:
text value for event


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/impl/XMLPullReaderFactory.html0000644000175000017500000004561211023035704026613 0ustar moellermoeller XMLPullReaderFactory (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime.impl
Class XMLPullReaderFactory

java.lang.Object
  extended by org.jibx.runtime.impl.XMLPullReaderFactory
All Implemented Interfaces:
IXMLReaderFactory

public class XMLPullReaderFactory
extends java.lang.Object
implements IXMLReaderFactory

Factory for creating XMLPull parser instances.

Version:
1.0
Author:
Dennis M. Sosnoski

Method Summary
 IXMLReader createReader(java.io.InputStream is, java.lang.String name, java.lang.String enc, boolean nsf)
          Get new XML reader instance for document from input stream.
 IXMLReader createReader(java.io.Reader rdr, java.lang.String name, boolean nsf)
          Get new XML reader instance for document from reader.
static XMLPullReaderFactory getInstance()
          Get instance of factory.
 IXMLReader recycleReader(IXMLReader old, java.io.InputStream is, java.lang.String name, java.lang.String enc)
          Recycle XML reader instance for new document from input stream.
 IXMLReader recycleReader(IXMLReader old, java.io.Reader rdr, java.lang.String name)
          Recycle XML reader instance for document from reader.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getInstance

public static XMLPullReaderFactory getInstance()
Get instance of factory.

Returns:
factory instance

createReader

public IXMLReader createReader(java.io.InputStream is,
                               java.lang.String name,
                               java.lang.String enc,
                               boolean nsf)
                        throws JiBXException
Description copied from interface: IXMLReaderFactory
Get new XML reader instance for document from input stream.

Specified by:
createReader in interface IXMLReaderFactory
Parameters:
is - document input stream
name - document name (null if unknown)
enc - document character encoding (null if unknown)
nsf - namespaces enabled flag
Returns:
new reader instance for document
Throws:
JiBXException - on parser configuration error

createReader

public IXMLReader createReader(java.io.Reader rdr,
                               java.lang.String name,
                               boolean nsf)
                        throws JiBXException
Description copied from interface: IXMLReaderFactory
Get new XML reader instance for document from reader.

Specified by:
createReader in interface IXMLReaderFactory
Parameters:
rdr - document reader
name - document name (null if unknown)
nsf - namespaces enabled flag
Returns:
new reader instance for document
Throws:
JiBXException - on parser configuration error

recycleReader

public IXMLReader recycleReader(IXMLReader old,
                                java.io.InputStream is,
                                java.lang.String name,
                                java.lang.String enc)
                         throws JiBXException
Description copied from interface: IXMLReaderFactory
Recycle XML reader instance for new document from input stream. If the supplied reader can be reused it will be configured for the new document and returned; otherwise, a new reader will be created for the document. The namespace enabled state of the returned reader is always the same as that of the supplied reader.

Specified by:
recycleReader in interface IXMLReaderFactory
Parameters:
old - reader instance to be recycled
is - document input stream
name - document name (null if unknown)
enc - document character encoding (null if unknown)
Returns:
new reader instance for document
Throws:
JiBXException - on parser configuration error

recycleReader

public IXMLReader recycleReader(IXMLReader old,
                                java.io.Reader rdr,
                                java.lang.String name)
                         throws JiBXException
Description copied from interface: IXMLReaderFactory
Recycle XML reader instance for document from reader. If the supplied reader can be reused it will be configured for the new document and returned; otherwise, a new reader will be created for the document. The namespace enabled state of the returned reader is always the same as that of the supplied reader.

Specified by:
recycleReader in interface IXMLReaderFactory
Parameters:
old - reader instance to be recycled
rdr - document reader
name - document name (null if unknown)
Returns:
new reader instance for document
Throws:
JiBXException - on parser configuration error


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/impl/XMLWriterBase.html0000644000175000017500000010753211023035704025273 0ustar moellermoeller XMLWriterBase (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime.impl
Class XMLWriterBase

java.lang.Object
  extended by org.jibx.runtime.impl.XMLWriterNamespaceBase
      extended by org.jibx.runtime.impl.XMLWriterBase
All Implemented Interfaces:
IExtensibleWriter, IXMLWriter
Direct Known Subclasses:
GenericXMLWriter, StreamWriterBase

public abstract class XMLWriterBase
extends XMLWriterNamespaceBase
implements IExtensibleWriter

Base implementation of XML writer interface. This provides common handling of indentation and formatting that can be used for all forms of text output.

Author:
Dennis M. Sosnoski

Constructor Summary
XMLWriterBase(java.lang.String[] uris)
          Constructor.
XMLWriterBase(XMLWriterBase base, java.lang.String[] uris)
          Copy constructor.
 
Method Summary
 void addAttribute(int index, java.lang.String name, java.lang.String value)
          Add attribute to current open start tag.
abstract  void close()
          Close document output.
 void closeEmptyTag()
          Close the current open start tag as an empty element.
 void closeStartTag()
          Close the current open start tag.
 void endTag(int index, java.lang.String name)
          Generate end tag.
abstract  void flush()
          Flush document output.
 void reset()
          Reset to initial state for reuse.
 void startTagClosed(int index, java.lang.String name)
          Generate closed start tag.
 void startTagNamespaces(int index, java.lang.String name, int[] nums, java.lang.String[] prefs)
          Generate start tag for element with namespaces.
 void startTagOpen(int index, java.lang.String name)
          Generate open start tag.
 void writeComment(java.lang.String text)
          Write comment to document.
 void writeDocType(java.lang.String name, java.lang.String sys, java.lang.String pub, java.lang.String subset)
          Write DOCTYPE declaration to document.
 void writeEntityRef(java.lang.String name)
          Write entity reference to document.
 void writePI(java.lang.String target, java.lang.String data)
          Write processing instruction to document.
 void writeXMLDecl(java.lang.String version, java.lang.String encoding, java.lang.String standalone)
          Write XML declaration to document.
 
Methods inherited from class org.jibx.runtime.impl.XMLWriterNamespaceBase
getExtensionNamespaces, getNamespaceCount, getNamespacePrefix, getNamespaces, getNamespaceUri, getNestingDepth, getPrefixIndex, openNamespaces, popExtensionNamespaces, pushExtensionNamespaces
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.jibx.runtime.IExtensibleWriter
createChildWriter
 
Methods inherited from interface org.jibx.runtime.IXMLWriter
getExtensionNamespaces, getNamespaceCount, getNamespacePrefix, getNamespaces, getNamespaceUri, getNestingDepth, getPrefixIndex, indent, openNamespaces, popExtensionNamespaces, pushExtensionNamespaces, setIndentSpaces, writeCData, writeTextContent
 

Constructor Detail

XMLWriterBase

public XMLWriterBase(java.lang.String[] uris)
Constructor.

Parameters:
uris - ordered array of URIs for namespaces used in document (must be constant; the value in position 0 must always be the empty string "", and the value in position 1 must always be the XML namespace "http://www.w3.org/XML/1998/namespace")

XMLWriterBase

public XMLWriterBase(XMLWriterBase base,
                     java.lang.String[] uris)
Copy constructor. This initializes the extension namespace information from an existing instance.

Parameters:
base - existing instance
uris - ordered array of URIs for namespaces used in document
Method Detail

writeXMLDecl

public void writeXMLDecl(java.lang.String version,
                         java.lang.String encoding,
                         java.lang.String standalone)
                  throws java.io.IOException
Write XML declaration to document. This can only be called before any other methods in the interface are called.

Specified by:
writeXMLDecl in interface IXMLWriter
Parameters:
version - XML version text
encoding - text for encoding attribute (unspecified if null)
standalone - text for standalone attribute (unspecified if null)
Throws:
java.io.IOException - on error writing to document

startTagOpen

public void startTagOpen(int index,
                         java.lang.String name)
                  throws java.io.IOException
Generate open start tag. This allows attributes to be added to the start tag, but must be followed by a closeStartTag() call.

Specified by:
startTagOpen in interface IXMLWriter
Parameters:
index - namespace URI index number
name - unqualified element name
Throws:
java.io.IOException - on error writing to document

startTagNamespaces

public void startTagNamespaces(int index,
                               java.lang.String name,
                               int[] nums,
                               java.lang.String[] prefs)
                        throws java.io.IOException
Generate start tag for element with namespaces. This creates the actual start tag, along with any necessary namespace declarations. Previously active namespace declarations are not duplicated. The tag is left incomplete, allowing other attributes to be added.

Specified by:
startTagNamespaces in interface IXMLWriter
Parameters:
index - namespace URI index number
name - element name
nums - array of namespace indexes defined by this element (must be constant, reference is kept until end of element)
prefs - array of namespace prefixes mapped by this element (no null values, use "" for default namespace declaration)
Throws:
java.io.IOException - on error writing to document

addAttribute

public void addAttribute(int index,
                         java.lang.String name,
                         java.lang.String value)
                  throws java.io.IOException
Add attribute to current open start tag. This is only valid after a call to startTagOpen(int, java.lang.String) or startTagNamespaces(int, java.lang.String, int[], java.lang.String[]) and before the corresponding call to closeStartTag().

Specified by:
addAttribute in interface IXMLWriter
Parameters:
index - namespace URI index number
name - unqualified attribute name
value - text value for attribute
Throws:
java.io.IOException - on error writing to document

closeStartTag

public void closeStartTag()
                   throws java.io.IOException
Close the current open start tag. This is only valid after a call to startTagOpen(int, java.lang.String).

Specified by:
closeStartTag in interface IXMLWriter
Throws:
java.io.IOException - on error writing to document

closeEmptyTag

public void closeEmptyTag()
                   throws java.io.IOException
Close the current open start tag as an empty element. This is only valid after a call to startTagOpen(int, java.lang.String).

Specified by:
closeEmptyTag in interface IXMLWriter
Throws:
java.io.IOException - on error writing to document

startTagClosed

public void startTagClosed(int index,
                           java.lang.String name)
                    throws java.io.IOException
Generate closed start tag. No attributes or namespaces can be added to a start tag written using this call.

Specified by:
startTagClosed in interface IXMLWriter
Parameters:
index - namespace URI index number
name - unqualified element name
Throws:
java.io.IOException - on error writing to document

endTag

public void endTag(int index,
                   java.lang.String name)
            throws java.io.IOException
Generate end tag.

Specified by:
endTag in interface IXMLWriter
Parameters:
index - namespace URI index number
name - unqualified element name
Throws:
java.io.IOException - on error writing to document

writeComment

public void writeComment(java.lang.String text)
                  throws java.io.IOException
Write comment to document.

Specified by:
writeComment in interface IXMLWriter
Parameters:
text - comment text
Throws:
java.io.IOException - on error writing to document

writeEntityRef

public void writeEntityRef(java.lang.String name)
                    throws java.io.IOException
Write entity reference to document.

Specified by:
writeEntityRef in interface IXMLWriter
Parameters:
name - entity name
Throws:
java.io.IOException - on error writing to document

writeDocType

public void writeDocType(java.lang.String name,
                         java.lang.String sys,
                         java.lang.String pub,
                         java.lang.String subset)
                  throws java.io.IOException
Write DOCTYPE declaration to document.

Specified by:
writeDocType in interface IXMLWriter
Parameters:
name - root element name
sys - system ID (null if none, must be non-null for public ID to be used)
pub - public ID (null if none)
subset - internal subset (null if none)
Throws:
java.io.IOException - on error writing to document

writePI

public void writePI(java.lang.String target,
                    java.lang.String data)
             throws java.io.IOException
Write processing instruction to document.

Specified by:
writePI in interface IXMLWriter
Parameters:
target - processing instruction target name
data - processing instruction data
Throws:
java.io.IOException - on error writing to document

flush

public abstract void flush()
                    throws java.io.IOException
Flush document output. Subclasses must implement this method to force all buffered output to be written. To assure proper handling of an open start tag they should first call flagContent().

Specified by:
flush in interface IXMLWriter
Throws:
java.io.IOException - on error writing to document

close

public abstract void close()
                    throws java.io.IOException
Close document output. Completes writing of document output, including closing the output medium.

Specified by:
close in interface IXMLWriter
Throws:
java.io.IOException - on error writing to document

reset

public void reset()
Reset to initial state for reuse. The writer is serially reusable, as long as this method is called to clear any retained state information between uses. It is automatically called when output is set.

Specified by:
reset in interface IXMLWriter
Overrides:
reset in class XMLWriterNamespaceBase


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/impl/XMLWriterNamespaceBase.html0000644000175000017500000006341211023035704027106 0ustar moellermoeller XMLWriterNamespaceBase (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime.impl
Class XMLWriterNamespaceBase

java.lang.Object
  extended by org.jibx.runtime.impl.XMLWriterNamespaceBase
All Implemented Interfaces:
IXMLWriter
Direct Known Subclasses:
JDOMWriter, StAXWriter, XMLWriterBase

public abstract class XMLWriterNamespaceBase
extends java.lang.Object
implements IXMLWriter

Base implementation of XML writer interface namespace handling. This tracks only the namespace declarations and the element nesting depth. It can be used as a base class for all forms of output.

Version:
1.0
Author:
Dennis M. Sosnoski

Constructor Summary
XMLWriterNamespaceBase(java.lang.String[] uris)
          Constructor.
XMLWriterNamespaceBase(XMLWriterNamespaceBase base, java.lang.String[] uris)
          Copy constructor.
 
Method Summary
 java.lang.String[][] getExtensionNamespaces()
          Get extension namespace URIs added to those in mapping.
 int getNamespaceCount()
          Get the number of namespaces currently defined.
 java.lang.String getNamespacePrefix(int index)
          Get current prefix defined for namespace.
 java.lang.String[] getNamespaces()
          Get namespace URIs for mapping.
 java.lang.String getNamespaceUri(int index)
          Get URI for namespace.
 int getNestingDepth()
          Get the current element nesting depth.
 int getPrefixIndex(java.lang.String prefix)
          Get index of namespace mapped to prefix.
 int[] openNamespaces(int[] nums, java.lang.String[] prefs)
          Open the specified namespaces.
 void popExtensionNamespaces()
          Remove extension namespace URIs.
 void pushExtensionNamespaces(java.lang.String[] uris)
          Append extension namespace URIs to those in mapping.
 void reset()
          Reset to initial state for reuse.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.jibx.runtime.IXMLWriter
addAttribute, close, closeEmptyTag, closeStartTag, endTag, flush, indent, setIndentSpaces, startTagClosed, startTagNamespaces, startTagOpen, writeCData, writeComment, writeDocType, writeEntityRef, writePI, writeTextContent, writeXMLDecl
 

Constructor Detail

XMLWriterNamespaceBase

public XMLWriterNamespaceBase(java.lang.String[] uris)
Constructor.

Parameters:
uris - ordered array of URIs for namespaces used in document (must be constant; the value in position 0 must always be the empty string "", and the value in position 1 must always be the XML namespace "http://www.w3.org/XML/1998/namespace")

XMLWriterNamespaceBase

public XMLWriterNamespaceBase(XMLWriterNamespaceBase base,
                              java.lang.String[] uris)
Copy constructor. This initializes the extension namespace information from an existing instance.

Parameters:
base - existing instance
uris - ordered array of URIs for namespaces used in document
Method Detail

openNamespaces

public int[] openNamespaces(int[] nums,
                            java.lang.String[] prefs)
                     throws java.io.IOException
Open the specified namespaces. Previously active namespace declarations are not duplicated.

Specified by:
openNamespaces in interface IXMLWriter
Parameters:
nums - array of namespace indexes defined by this element (must be constant, reference is kept until end of element)
prefs - array of namespace prefixes mapped by this element (no null values, use "" for default namespace declaration)
Returns:
array of indexes for namespaces not previously active (the ones actually needing to be declared, in the case of text output)
Throws:
java.io.IOException - on error writing to document

getNestingDepth

public final int getNestingDepth()
Get the current element nesting depth. Elements are only counted in the depth returned when they're officially open - after the start tag has been output and before the end tag has been output.

Specified by:
getNestingDepth in interface IXMLWriter
Returns:
number of nested elements at current point in output

getNamespaceCount

public final int getNamespaceCount()
Get the number of namespaces currently defined. This is equivalent to the index of the next extension namespace added.

Specified by:
getNamespaceCount in interface IXMLWriter
Returns:
namespace count

reset

public void reset()
Reset to initial state for reuse. Subclasses overriding this method need to call this base class implementation during their processing.

Specified by:
reset in interface IXMLWriter

getNamespaces

public final java.lang.String[] getNamespaces()
Get namespace URIs for mapping. This gets the full ordered array of namespaces known in the binding used for this marshalling, where the index number of each namespace URI is the namespace index used to lookup the prefix when marshalling a name in that namespace. The returned array must not be modified.

Specified by:
getNamespaces in interface IXMLWriter
Returns:
array of namespaces

getNamespaceUri

public final java.lang.String getNamespaceUri(int index)
Get URI for namespace.

Specified by:
getNamespaceUri in interface IXMLWriter
Parameters:
index - namespace URI index number
Returns:
namespace URI text, or null if the namespace index is invalid

getNamespacePrefix

public final java.lang.String getNamespacePrefix(int index)
Get current prefix defined for namespace.

Specified by:
getNamespacePrefix in interface IXMLWriter
Parameters:
index - namespace URI index number
Returns:
current prefix text, or null if the namespace is not currently mapped

getPrefixIndex

public final int getPrefixIndex(java.lang.String prefix)
Get index of namespace mapped to prefix. This can be an expensive operation with time proportional to the number of namespaces defined, so it should be used with care.

Specified by:
getPrefixIndex in interface IXMLWriter
Parameters:
prefix - text to match (non-null, use "" for default prefix)
Returns:
index namespace URI index number mapped to prefix

pushExtensionNamespaces

public void pushExtensionNamespaces(java.lang.String[] uris)
Append extension namespace URIs to those in mapping.

Specified by:
pushExtensionNamespaces in interface IXMLWriter
Parameters:
uris - namespace URIs to extend those in mapping

popExtensionNamespaces

public void popExtensionNamespaces()
Remove extension namespace URIs. This removes the last set of extension namespaces pushed using pushExtensionNamespaces(java.lang.String[]).

Specified by:
popExtensionNamespaces in interface IXMLWriter

getExtensionNamespaces

public final java.lang.String[][] getExtensionNamespaces()
Get extension namespace URIs added to those in mapping. This gets the current set of extension definitions. The returned arrays must not be modified.

Specified by:
getExtensionNamespaces in interface IXMLWriter
Returns:
array of arrays of extension namespaces (null if none)


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/impl/package-frame.html0000644000175000017500000001015511023035704025320 0ustar moellermoeller org.jibx.runtime.impl (JiBX Java data binding to XML - Version 1.1.6a) org.jibx.runtime.impl
Interfaces 
BackFillReference
IChunkedOutput
ITrackSourceImpl
IXMLReaderFactory
Classes 
ArrayRangeIterator
BackFillArray
BackFillHolder
GenericXMLWriter
InputStreamWrapper
ISO88591Escaper
ISO88591StreamWriter
MarshallingContext
RuntimeSupport
SparseArrayIterator
StAXReaderFactory
StAXReaderWrapper
StAXWriter
StreamWriterBase
StringArray
StringIntHashMap
UnmarshallingContext
USASCIIEscaper
UTF8Escaper
UTF8StreamWriter
XMLPullReaderFactory
XMLWriterBase
XMLWriterNamespaceBase
libjibx-java-1.1.6a/docs/api/org/jibx/runtime/impl/package-summary.html0000644000175000017500000003236611023035704025733 0ustar moellermoeller org.jibx.runtime.impl (JiBX Java data binding to XML - Version 1.1.6a)

Package org.jibx.runtime.impl

JiBX data binding framework runtime implementation package.

See:
          Description

Interface Summary
BackFillReference Backfill reference item, used for filling in forward references to objects.
IChunkedOutput Interface used to enhance an output stream with a separate method for writing the last chunk of data in a message.
ITrackSourceImpl Unmarshalling source tracking implementation interface.
IXMLReaderFactory Interface for factories used to create XML reader instances.
 

Class Summary
ArrayRangeIterator Iterator class for values contained in an array range.
BackFillArray Backfill reference item, used for filling in forward references as members of arrays.
BackFillHolder Holder used to collect forward references to a particular object.
GenericXMLWriter Generic handler for marshalling text document to a writer.
InputStreamWrapper Wrapper for input stream that supports multiple character encodings.
ISO88591Escaper Handler for writing ASCII output stream.
ISO88591StreamWriter Handler for marshalling text document to a UTF-8 output stream.
MarshallingContext JiBX serializer supplying convenience methods for marshalling.
RuntimeSupport Support class providing methods used by generated code.
SparseArrayIterator Iterator class for sparse values in an array.
StAXReaderFactory Factory for creating XMLPull parser instances.
StAXReaderWrapper Wrapper for a StAX parser implementation.
StAXWriter Writer generating StAX parse event stream output.
StreamWriterBase Base handler for marshalling text document to an output stream.
StringArray Growable String array with type specific access methods.
StringIntHashMap Hash map using String values as keys mapped to primitive int values.
UnmarshallingContext Pull parser wrapper supplying convenience methods for access.
USASCIIEscaper Handler for writing ASCII output stream.
UTF8Escaper Handler for writing UTF output stream (for any form of UTF, despite the name).
UTF8StreamWriter Handler for marshalling text document to a UTF-8 output stream.
XMLPullReaderFactory Factory for creating XMLPull parser instances.
XMLWriterBase Base implementation of XML writer interface.
XMLWriterNamespaceBase Base implementation of XML writer interface namespace handling.
 

Package org.jibx.runtime.impl Description

JiBX data binding framework runtime implementation package. These classes are designed for use in generated code by the binding generator portion of the framework. They are not generally intended for direct use by end users, and are subject to more change than the published external APIs.

The only circumstance in which an end user of the framework should need to work with these classes is when writing a marshaller or unmarshaller for a class. These replace generated code for the classes involved, and hence allow full control over the operation of the framework.



Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/BindingDirectory.html0000644000175000017500000005114211023035702025132 0ustar moellermoeller BindingDirectory (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime
Class BindingDirectory

java.lang.Object
  extended by org.jibx.runtime.BindingDirectory

public abstract class BindingDirectory
extends java.lang.Object

Abstract class with static methods to find the binding factory corresponding to a binding name.

Author:
Dennis M. Sosnoski

Field Summary
static java.lang.String BINDINGFACTORY_PREFIX
          Prefix of binding factory name.
static java.lang.String BINDINGFACTORY_SUFFIX
          Suffix of binding factory name.
static java.lang.String BINDINGLIST_NAME
          Name of String[] field giving binding factory name list.
static java.lang.Class[] EMPTY_ARGS
          Empty argument list.
static java.lang.String FACTORY_INSTMETHOD
          Binding factory method to get instance of factory.
 
Constructor Summary
BindingDirectory()
           
 
Method Summary
static IBindingFactory getFactory(java.lang.Class clas)
          Get instance of binding factory.
static IBindingFactory getFactory(java.lang.String name, java.lang.Class clas)
          Get instance of binding factory.
static IBindingFactory getFactory(java.lang.String name, java.lang.Class clas, java.lang.ClassLoader loader)
          Get instance of binding factory.
static IBindingFactory getFactory(java.lang.String bname, java.lang.String pack)
          Get instance of binding factory.
static IBindingFactory getFactory(java.lang.String bname, java.lang.String pack, java.lang.ClassLoader loader)
          Get instance of binding factory.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

BINDINGLIST_NAME

public static final java.lang.String BINDINGLIST_NAME
Name of String[] field giving binding factory name list.

See Also:
Constant Field Values

BINDINGFACTORY_PREFIX

public static final java.lang.String BINDINGFACTORY_PREFIX
Prefix of binding factory name.

See Also:
Constant Field Values

BINDINGFACTORY_SUFFIX

public static final java.lang.String BINDINGFACTORY_SUFFIX
Suffix of binding factory name.

See Also:
Constant Field Values

FACTORY_INSTMETHOD

public static final java.lang.String FACTORY_INSTMETHOD
Binding factory method to get instance of factory.

See Also:
Constant Field Values

EMPTY_ARGS

public static final java.lang.Class[] EMPTY_ARGS
Empty argument list.

Constructor Detail

BindingDirectory

public BindingDirectory()
Method Detail

getFactory

public static IBindingFactory getFactory(java.lang.String name,
                                         java.lang.Class clas,
                                         java.lang.ClassLoader loader)
                                  throws JiBXException
Get instance of binding factory. Finds the binding factory for the named binding on the target class, then loads that factory and returns an instance.

Parameters:
name - binding name
clas - target class for binding
loader - class loader to be used for loading factory
Returns:
binding factory instance
Throws:
JiBXException - on any error in finding or accessing factory

getFactory

public static IBindingFactory getFactory(java.lang.String name,
                                         java.lang.Class clas)
                                  throws JiBXException
Get instance of binding factory. Finds the binding factory for the named binding on the target class, then loads that factory and returns an instance.

Parameters:
name - binding name
clas - target class for binding
Returns:
binding factory instance
Throws:
JiBXException - on any error in finding or accessing factory

getFactory

public static IBindingFactory getFactory(java.lang.Class clas)
                                  throws JiBXException
Get instance of binding factory. Finds the binding factory for the target class, then loads that factory and returns an instance. This method can only be used with target classes that are mapped in only one binding.

Parameters:
clas - target class for binding
Returns:
binding factory instance
Throws:
JiBXException - on any error in finding or accessing factory

getFactory

public static IBindingFactory getFactory(java.lang.String bname,
                                         java.lang.String pack,
                                         java.lang.ClassLoader loader)
                                  throws JiBXException
Get instance of binding factory. Finds the binding factory for the named binding on the target class, then loads that factory and returns an instance.

Parameters:
bname - binding name
pack - target package for binding
loader - class loader to be used for loading factory
Returns:
binding factory instance
Throws:
JiBXException - on any error in finding or accessing factory

getFactory

public static IBindingFactory getFactory(java.lang.String bname,
                                         java.lang.String pack)
                                  throws JiBXException
Get instance of binding factory. Finds the binding factory for the named binding compiled to the specified package, then loads that factory and returns an instance.

Parameters:
bname - binding name
pack - target package for binding
Returns:
binding factory instance
Throws:
JiBXException - on any error in finding or accessing factory


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/EnumSet.EnumItem.html0000644000175000017500000002357511023035702025006 0ustar moellermoeller EnumSet.EnumItem (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime
Class EnumSet.EnumItem

java.lang.Object
  extended by org.jibx.runtime.EnumSet.EnumItem
Enclosing class:
EnumSet

public static class EnumSet.EnumItem
extends java.lang.Object

Enumeration pair information. This gives an int value along with the associated String representation.


Field Summary
 java.lang.String m_name
           
 int m_value
           
 
Constructor Summary
EnumSet.EnumItem(int value, java.lang.String name)
           
 
Method Summary
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

m_value

public final int m_value

m_name

public final java.lang.String m_name
Constructor Detail

EnumSet.EnumItem

public EnumSet.EnumItem(int value,
                        java.lang.String name)


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/EnumSet.html0000644000175000017500000004266411023035702023264 0ustar moellermoeller EnumSet (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime
Class EnumSet

java.lang.Object
  extended by org.jibx.runtime.EnumSet

public class EnumSet
extends java.lang.Object

Named value set support class. This provides convenience methods to support working with a set of named static final int values, including translating them to and from String representations. It's intended for use with relatively small nonnegative int values.

Author:
Dennis M. Sosnoski

Nested Class Summary
static class EnumSet.EnumItem
          Enumeration pair information.
 
Field Summary
static int VALUE_LIMIT
          Maximum int value supported for enumerations.
 
Constructor Summary
EnumSet(EnumSet.EnumItem[] items)
          Constructor from array of enumeration items.
EnumSet(EnumSet base, int start, java.lang.String[] names)
          Constructor from existing enumeration with added names.
EnumSet(int start, java.lang.String[] names)
          Constructor from array of names.
 
Method Summary
 void checkValue(int value)
          Check value with exception.
 java.lang.String getName(int value)
          Get name for value if defined.
 java.lang.String getNameChecked(int value)
          Get name for value.
 int getValue(java.lang.String name)
          Get value for name if defined.
 int getValueChecked(java.lang.String name)
          Get value for name.
 int maxIndex()
          Get maximum index value in enumeration set.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

VALUE_LIMIT

public static final int VALUE_LIMIT
Maximum int value supported for enumerations.

See Also:
Constant Field Values
Constructor Detail

EnumSet

public EnumSet(EnumSet.EnumItem[] items)
Constructor from array of enumeration items. The supplied items can be in any order, and the numeric values do not need to be contiguous (but must be unique, nonnegative, and should be fairly small). Note that this constructor will reorder the items in the supplied array as a side effect.

Parameters:
items - array of enumeration items (will be reordered)

EnumSet

public EnumSet(int start,
               java.lang.String[] names)
Constructor from array of names. The value associated with each name is just the position index in the array added to the start value.

Parameters:
start - item value for first added name
names - array of names (no null entries allowed)

EnumSet

public EnumSet(EnumSet base,
               int start,
               java.lang.String[] names)
Constructor from existing enumeration with added names. The value associated with each name is just the position index in the array added to the start value.

Parameters:
base - base enumeration to be extended
start - item value for first added name
names - array of names (no null entries allowed)
Method Detail

getName

public java.lang.String getName(int value)
Get name for value if defined.

Parameters:
value - enumeration value
Returns:
name for value, or null if not defined

getNameChecked

public java.lang.String getNameChecked(int value)
Get name for value. If the supplied value is not defined in the enumeration this throws an exception.

Parameters:
value - enumeration value
Returns:
name for value

getValue

public int getValue(java.lang.String name)
Get value for name if defined.

Parameters:
name - possible enumeration name
Returns:
value for name, or -1 if not found in enumeration

getValueChecked

public int getValueChecked(java.lang.String name)
Get value for name. If the supplied name is not present in the enumeration this throws an exception.

Parameters:
name - enumeration name
Returns:
value for name

checkValue

public void checkValue(int value)
Check value with exception. Throws an exception if the supplied value is not defined by this enumeration.

Parameters:
value -

maxIndex

public int maxIndex()
Get maximum index value in enumeration set.

Returns:
maximum


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/IAbstractMarshaller.html0000644000175000017500000002333111023035702025561 0ustar moellermoeller IAbstractMarshaller (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime
Interface IAbstractMarshaller

All Superinterfaces:
IMarshaller

public interface IAbstractMarshaller
extends IMarshaller

Abstract base marshaller interface definition. This interface must be implemented by the handler for marshalling an object as an instance of a binding with extension mappings.

This extension to the normal marshaller interface allows the base marshalling to determine the proper marshaller implementation to use at runtime. The code needs to check that the object to be marshalled has a marshaller that extends this base mapping.

Version:
1.0
Author:
Dennis M. Sosnoski

Method Summary
 void baseMarshal(java.lang.Object obj, IMarshallingContext ctx)
          Marshal instance of class with mapping extending this abstract mapping.
 
Methods inherited from interface org.jibx.runtime.IMarshaller
isExtension, marshal
 

Method Detail

baseMarshal

void baseMarshal(java.lang.Object obj,
                 IMarshallingContext ctx)
                 throws JiBXException
Marshal instance of class with mapping extending this abstract mapping. This method call is responsible for all handling of the marshalling of an appropriate object to XML text. It is called at the point where the start tag for the associated element should be generated.

Parameters:
obj - object to be marshalled (may be null, in the case of a non-optional property with no value supplied)
ctx - XML text output context
Throws:
JiBXException - on error in marshalling process


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/IAliasable.html0000644000175000017500000001750111023035702023662 0ustar moellermoeller IAliasable (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime
Interface IAliasable

All Known Implementing Classes:
Dom4JElementMapper, DomElementMapper, HashMapperStringToComplex, HashMapperStringToSchemaType, IdDefRefMapperBase, IdRefMapperBase, ObjectArrayMapper, TypedArrayMapper

public interface IAliasable

Nameable extension interface definition. This interface must be implemented by a marshaller IMarshaller or unmarshaller IUnmarshaller that can use different top-level element names. Although it does not define any methods, it designates the marshaller or unmarshaller as being usable with a namespace and element name, and particular bound class name, defined within a binding. If this interface is implemented by a marshaller or unmarshaller class used with a specified element name in a binding the binding compiler will actually generate a subclass of the original class. The subclass uses a standard no-argument constructor, but calls a superclass constructor with the specified element name and bound class information. The superclass code can then make use of the specified name in marshalling and/or unmarshalling.

Version:
1.0
Author:
Dennis M. Sosnoski



Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/IBindingFactory.html0000644000175000017500000004674711023035702024725 0ustar moellermoeller IBindingFactory (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime
Interface IBindingFactory


public interface IBindingFactory

Binding factory interface definition. This interface is implemented by the binding factory class generated by each binding definition. All binding factory instances are guaranteed to be threadsafe and reusable.

Version:
1.0
Author:
Dennis M. Sosnoski

Field Summary
static int COMPATIBLE_VERSION_MASK
          Mask for portions of version number that effect compatibility.
static java.lang.String CURRENT_VERSION_NAME
          Current distribution file name.
static int CURRENT_VERSION_NUMBER
          Current binary version number.
 
Method Summary
 IMarshallingContext createMarshallingContext()
          Create marshalling context instance.
 IUnmarshallingContext createUnmarshallingContext()
          Create unmarshalling context instance.
 java.lang.String getCompilerDistribution()
          Get distribution name for binding compiler used.
 int getCompilerVersion()
          Get version number for binding compiler used.
 java.lang.String[] getElementNames()
          Get names of elements corresponding to mapped classes.
 java.lang.String[] getElementNamespaces()
          Get namespaces of elements corresponding to mapped classes.
 java.lang.String[] getMappedClasses()
          Get mapped class names (or type names, in the case of abstract mappings).
 java.lang.String[] getNamespaces()
          Get namespaces defined in mapping.
 java.lang.String[] getPrefixes()
          Get initial prefixes for namespaces defined in mapping.
 int getTypeIndex(java.lang.String type)
          Get mapped class index from type name for abstract non-base mappings included in the binding.
 

Field Detail

CURRENT_VERSION_NUMBER

static final int CURRENT_VERSION_NUMBER
Current binary version number. This is a byte-ordered value, allowing for two levels of major and two levels of minor version.

See Also:
Constant Field Values

CURRENT_VERSION_NAME

static final java.lang.String CURRENT_VERSION_NAME
Current distribution file name. This is filled in by the Ant build process to match the current distribution.

See Also:
Constant Field Values

COMPATIBLE_VERSION_MASK

static final int COMPATIBLE_VERSION_MASK
Mask for portions of version number that effect compatibility.

See Also:
Constant Field Values
Method Detail

createMarshallingContext

IMarshallingContext createMarshallingContext()
                                             throws JiBXException
Create marshalling context instance.

Returns:
created marshalling context instance
Throws:
JiBXException - if error creating context
java.lang.UnsupportedOperationException - if marshalling not supported by binding

createUnmarshallingContext

IUnmarshallingContext createUnmarshallingContext()
                                                 throws JiBXException
Create unmarshalling context instance.

Returns:
created unmarshalling context instance
Throws:
JiBXException - if error creating context
java.lang.UnsupportedOperationException - if unmarshalling not supported by binding

getCompilerVersion

int getCompilerVersion()
Get version number for binding compiler used.

Returns:
version number of code used to compile binding

getCompilerDistribution

java.lang.String getCompilerDistribution()
Get distribution name for binding compiler used.

Returns:
name of distribution for binding compiler

getNamespaces

java.lang.String[] getNamespaces()
Get namespaces defined in mapping. The returned array is indexed by the namespace index number used when marshalling.

Returns:
array of namespaces defined in binding (null if not an output binding)

getPrefixes

java.lang.String[] getPrefixes()
Get initial prefixes for namespaces defined in mapping. The returned array is indexed by the namespace index number used when marshalling. Note that these are only the first prefixes associated with each namespace; it's possible to reuse the namespace in the binding with a different prefix.

Returns:
array of prefixes for namespaces defined in binding (null if not an output binding)

getMappedClasses

java.lang.String[] getMappedClasses()
Get mapped class names (or type names, in the case of abstract mappings). Returns array of fully-qualified class and/or type names, ordered by index number of the class.

Returns:
array of class names

getElementNamespaces

java.lang.String[] getElementNamespaces()
Get namespaces of elements corresponding to mapped classes. The returned array uses the same ordering as the result of the getMappedClasses() call. Entries in the array are null if there is no element for a class or the element is in the default namespace.

Returns:
array of element namespaces

getElementNames

java.lang.String[] getElementNames()
Get names of elements corresponding to mapped classes. The returned array uses the same ordering as the result of the getMappedClasses() call. Entries in the array are null if there is no element for a class.

Returns:
array of element names

getTypeIndex

int getTypeIndex(java.lang.String type)
Get mapped class index from type name for abstract non-base mappings included in the binding. This is intended to allow identifying and using abstract mappings (basically type mappings) at runtime. The method is only returns a non-negative result if the "force-classes" option is used for the binding definition (since otherwise no marshaller/unmarshaller classes are created for abstract non-base mappings).

Parameters:
type - fully-qualified class or type name
Returns:
mapping index for type, or -1 if type is not an abstract non-base mapping


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/ICharacterEscaper.html0000644000175000017500000002463711023035702025214 0ustar moellermoeller ICharacterEscaper (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime
Interface ICharacterEscaper

All Known Implementing Classes:
ISO88591Escaper, USASCIIEscaper, UTF8Escaper

public interface ICharacterEscaper

Escaper for character data to be written to output document. This allows special character encodings to be handled appropriately on output. It's used by the generic output handler class during document marshalling.

Version:
1.0
Author:
Dennis M. Sosnoski

Method Summary
 void writeAttribute(java.lang.String text, java.io.Writer writer)
          Write attribute value with character entity substitutions.
 void writeCData(java.lang.String text, java.io.Writer writer)
          Write CDATA to document.
 void writeContent(java.lang.String text, java.io.Writer writer)
          Write content value with character entity substitutions.
 

Method Detail

writeAttribute

void writeAttribute(java.lang.String text,
                    java.io.Writer writer)
                    throws java.io.IOException
Write attribute value with character entity substitutions. This assumes that attributes use the regular quote ('"') delimitor.

Parameters:
text - attribute value text
writer - sink for output text
Throws:
java.io.IOException - on error writing to document

writeContent

void writeContent(java.lang.String text,
                  java.io.Writer writer)
                  throws java.io.IOException
Write content value with character entity substitutions.

Parameters:
text - content value text
writer - sink for output text
Throws:
java.io.IOException - on error writing to document

writeCData

void writeCData(java.lang.String text,
                java.io.Writer writer)
                throws java.io.IOException
Write CDATA to document. This writes the beginning and ending sequences for a CDATA section as well as the actual text, verifying that only characters allowed by the encoding are included in the text.

Parameters:
text - content value text
writer - sink for output text
Throws:
java.io.IOException - on error writing to document


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/IExtensibleWriter.html0000644000175000017500000003057211023035704025311 0ustar moellermoeller IExtensibleWriter (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime
Interface IExtensibleWriter

All Superinterfaces:
IXMLWriter
All Known Implementing Classes:
GenericXMLWriter, ISO88591StreamWriter, StAXWriter, StreamWriterBase, UTF8StreamWriter, XMLWriterBase

public interface IExtensibleWriter
extends IXMLWriter

Extensible version of standard XML writer interface. This allows the creation of child writer instances with added namespaces.

Author:
Dennis M. Sosnoski

Method Summary
 IXMLWriter createChildWriter(java.lang.String[] uris)
          Create a child writer instance to be used for a separate binding.
 
Methods inherited from interface org.jibx.runtime.IXMLWriter
addAttribute, close, closeEmptyTag, closeStartTag, endTag, flush, getExtensionNamespaces, getNamespaceCount, getNamespacePrefix, getNamespaces, getNamespaceUri, getNestingDepth, getPrefixIndex, indent, openNamespaces, popExtensionNamespaces, pushExtensionNamespaces, reset, setIndentSpaces, startTagClosed, startTagNamespaces, startTagOpen, writeCData, writeComment, writeDocType, writeEntityRef, writePI, writeTextContent, writeXMLDecl
 

Method Detail

createChildWriter

IXMLWriter createChildWriter(java.lang.String[] uris)
                             throws java.io.IOException
Create a child writer instance to be used for a separate binding. The child writer inherits the output handling from this writer, while using the supplied namespace URIs.

Parameters:
uris - ordered array of URIs for namespaces used in document
Returns:
child writer
Throws:
java.io.IOException


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/IListItemDeserializer.html0000644000175000017500000001734011023035704026105 0ustar moellermoeller IListItemDeserializer (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime
Interface IListItemDeserializer


public interface IListItemDeserializer

Schema list component deserializer interface. This is a convenience for defining list variations of basic types.

Author:
Dennis M. Sosnoski

Method Summary
 java.lang.Object deserialize(java.lang.String text)
          Deserializer method for list items.
 

Method Detail

deserialize

java.lang.Object deserialize(java.lang.String text)
                             throws JiBXException
Deserializer method for list items.

Parameters:
text - value text
Returns:
created item class instance
Throws:
JiBXException - on error deserializing text


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/IMarshallable.html0000644000175000017500000002173411023035704024401 0ustar moellermoeller IMarshallable (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime
Interface IMarshallable


public interface IMarshallable

Marshallable interface definition. This interface must be implemented by all classes which can be marshalled as independent units (not just as children of other objects). Classes implementing this interface may either marshal themselves directly (if there's only one marshalling format defined), or obtain an instance of the appropriate marshaller from the context and use that. This interface is automatically added by the binding compiler to all classes targeted by <mapping> elements in a binding.

Version:
1.0
Author:
Dennis M. Sosnoski

Method Summary
 int JiBX_getIndex()
          Get class index.
 void marshal(IMarshallingContext ctx)
          Marshal self.
 

Method Detail

JiBX_getIndex

int JiBX_getIndex()
Get class index. This returns the mapping index number for a class within the compiled bindings. It's intended primarily for internal use by the binding framework.

Returns:
mapping index number

marshal

void marshal(IMarshallingContext ctx)
             throws JiBXException
Marshal self. This method call is responsible for all handling of the marshalling of an object to XML text.

Parameters:
ctx - marshalling context
Throws:
JiBXException - on error in marshalling process


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/IMarshaller.html0000644000175000017500000002703611023035704024105 0ustar moellermoeller IMarshaller (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime
Interface IMarshaller

All Known Subinterfaces:
IAbstractMarshaller
All Known Implementing Classes:
DiscardElementMapper, DiscardListMapper, Dom4JElementMapper, Dom4JListMapper, DomElementMapper, DomFragmentMapper, DomListMapper, HashMapperStringToComplex, HashMapperStringToSchemaType, IdDefRefMapperBase, IdRefMapperBase, ObjectArrayMapper, TypedArrayMapper

public interface IMarshaller

Marshaller interface definition. This interface must be implemented by the handler for marshalling an object.

Instances of classes implementing this interface must be serially reusable, meaning they can store state information while in the process of marshalling an object but must reset all state when called to marshal another object after the first one is done (even if the first object throws an exception during marshalling). The JiBX framework will only create one instance of a marshaller class for each mapped class using that marshaller. Generally the marshaller instance will not be called recursively, but this may happen in cases where the binding definition includes recursive mappings and the marshaller uses other marshallers (as opposed to handling all children directly).

Version:
1.0
Author:
Dennis M. Sosnoski

Method Summary
 boolean isExtension(int index)
          Check if marshaller represents an extension mapping.
 void marshal(java.lang.Object obj, IMarshallingContext ctx)
          Marshal instance of handled class.
 

Method Detail

isExtension

boolean isExtension(int index)
Check if marshaller represents an extension mapping. This is used by the framework in generated code to verify compatibility of objects being marshalled using an abstract mapping.

Parameters:
index - abstract mapping index to be checked
Returns:
true if this mapping is an extension of the abstract mapping, false if not

marshal

void marshal(java.lang.Object obj,
             IMarshallingContext ctx)
             throws JiBXException
Marshal instance of handled class. This method call is responsible for all handling of the marshalling of an object to XML text. It is called at the point where the start tag for the associated element should be generated.

Parameters:
obj - object to be marshalled (may be null if property is not optional)
ctx - XML text output context
Throws:
JiBXException - on error in marshalling process


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/IMarshallingContext.html0000644000175000017500000011361311023035704025616 0ustar moellermoeller IMarshallingContext (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime
Interface IMarshallingContext

All Known Implementing Classes:
MarshallingContext

public interface IMarshallingContext

User interface for serializer to XML. This provides methods used to set up and control the marshalling process, as well as access to the marshalling object stack while marshalling.

Author:
Dennis M. Sosnoski

Method Summary
 void endDocument()
          End document.
 int getIndent()
          Get current nesting indent spaces.
 IMarshaller getMarshaller(int index, java.lang.String name)
          Find the marshaller for a particular class index in the current context.
 int getStackDepth()
          Get current marshalling object stack depth.
 java.lang.Object getStackObject(int depth)
          Get object from marshalling stack.
 java.lang.Object getStackTop()
          Get top object on marshalling stack.
 java.lang.Object getUserContext()
          Get the user context object.
 IXMLWriter getXmlWriter()
          Get the writer being used for output.
 void marshalDocument(java.lang.Object root)
          Marshal document from root object without XML declaration.
 void marshalDocument(java.lang.Object root, java.lang.String enc, java.lang.Boolean alone)
          Marshal document from root object.
 void marshalDocument(java.lang.Object root, java.lang.String enc, java.lang.Boolean alone, java.io.OutputStream outs)
          Marshal document from root object to output stream with encoding.
 void marshalDocument(java.lang.Object root, java.lang.String enc, java.lang.Boolean alone, java.io.Writer outw)
          Marshal document from root object to writer.
 void popObject()
          Pop marshalled object from stack.
 void pushObject(java.lang.Object obj)
          Push created object to marshalling stack.
 void reset()
          Reset to initial state for reuse.
 void setIndent(int count)
          Set nesting indent spaces.
 void setIndent(int count, java.lang.String newline, char indent)
          Set nesting indentation.
 void setOutput(java.io.OutputStream outs, java.lang.String enc)
          Set output stream and encoding.
 void setOutput(java.io.OutputStream outs, java.lang.String enc, ICharacterEscaper esc)
          Set output stream with encoding and escaper.
 void setOutput(java.io.Writer outw)
          Set output writer.
 void setOutput(java.io.Writer outw, ICharacterEscaper esc)
          Set output writer and escaper.
 void setUserContext(java.lang.Object obj)
          Set a user context object.
 void setXmlWriter(IXMLWriter xwrite)
          Set the writer being used for output.
 void startDocument(java.lang.String enc, java.lang.Boolean alone)
          Start document, writing the XML declaration.
 void startDocument(java.lang.String enc, java.lang.Boolean alone, java.io.OutputStream outs)
          Start document with output stream and encoding.
 void startDocument(java.lang.String enc, java.lang.Boolean alone, java.io.Writer outw)
          Start document with writer.
 

Method Detail

setOutput

void setOutput(java.io.OutputStream outs,
               java.lang.String enc,
               ICharacterEscaper esc)
               throws JiBXException
Set output stream with encoding and escaper. This forces handling of the output stream to use the Java character encoding support with the supplied escaper.

Parameters:
outs - stream for document data output
enc - document output encoding, or null uses UTF-8 default
esc - escaper for writing characters to stream
Throws:
JiBXException - if error setting output

setOutput

void setOutput(java.io.OutputStream outs,
               java.lang.String enc)
               throws JiBXException
Set output stream and encoding.

Parameters:
outs - stream for document data output
enc - document output encoding, or null uses UTF-8 default
Throws:
JiBXException - if error setting output

setOutput

void setOutput(java.io.Writer outw,
               ICharacterEscaper esc)
Set output writer and escaper.

Parameters:
outw - writer for document data output
esc - escaper for writing characters

setOutput

void setOutput(java.io.Writer outw)
Set output writer. This assumes the standard UTF-8 encoding.

Parameters:
outw - writer for document data output

getXmlWriter

IXMLWriter getXmlWriter()
Get the writer being used for output.

Returns:
XML writer used for output

setXmlWriter

void setXmlWriter(IXMLWriter xwrite)
Set the writer being used for output.

Parameters:
xwrite - XML writer used for output

getIndent

int getIndent()
Get current nesting indent spaces. This returns the number of spaces used to show indenting, if used.

Returns:
number of spaces indented per level, or negative if indentation disabled

setIndent

void setIndent(int count)
Set nesting indent spaces. This is advisory only, and implementations of this interface are free to ignore it. The intent is to indicate that the generated output should use indenting to illustrate element nesting.

Parameters:
count - number of spaces to indent per level, or disable indentation if negative

setIndent

void setIndent(int count,
               java.lang.String newline,
               char indent)
Set nesting indentation. This is advisory only, and implementations of this interface are free to ignore it. The intent is to indicate that the generated output should use indenting to illustrate element nesting.

Parameters:
count - number of character to indent per level, or disable indentation if negative (zero means new line only)
newline - sequence of characters used for a line ending (null means use the single character '\n')
indent - whitespace character used for indentation

reset

void reset()
Reset to initial state for reuse. The context is serially reusable, as long as this method is called to clear any retained state information between uses. It is automatically called when output is set.


startDocument

void startDocument(java.lang.String enc,
                   java.lang.Boolean alone)
                   throws JiBXException
Start document, writing the XML declaration. This can only be validly called immediately following one of the set output methods; otherwise the output document will be corrupt.

Parameters:
enc - document encoding, null uses UTF-8 default
alone - standalone document flag, null if not specified
Throws:
JiBXException - on any error (possibly wrapping other exception)

startDocument

void startDocument(java.lang.String enc,
                   java.lang.Boolean alone,
                   java.io.OutputStream outs)
                   throws JiBXException
Start document with output stream and encoding. The effect is the same as from first setting the output stream and encoding, then making the call to start document.

Parameters:
enc - document encoding, null uses UTF-8 default
alone - standalone document flag, null if not specified
outs - stream for document data output
Throws:
JiBXException - on any error (possibly wrapping other exception)

startDocument

void startDocument(java.lang.String enc,
                   java.lang.Boolean alone,
                   java.io.Writer outw)
                   throws JiBXException
Start document with writer. The effect is the same as from first setting the writer, then making the call to start document.

Parameters:
enc - document encoding, null uses UTF-8 default
alone - standalone document flag, null if not specified
outw - writer for document data output
Throws:
JiBXException - on any error (possibly wrapping other exception)

endDocument

void endDocument()
                 throws JiBXException
End document. Finishes all output and closes the document. Note that if this is called with an imcomplete marshalling the result will not be well-formed XML.

Throws:
JiBXException - on any error (possibly wrapping other exception)

marshalDocument

void marshalDocument(java.lang.Object root)
                     throws JiBXException
Marshal document from root object without XML declaration. This can only be validly called immediately following one of the set output methods; otherwise the output document will be corrupt. The effect of this method is the same as the sequence of a call to marshal the root object using this context followed by a call to endDocument().

Parameters:
root - object at root of structure to be marshalled, which must have a top-level mapping in the binding
Throws:
JiBXException - on any error (possibly wrapping other exception)

marshalDocument

void marshalDocument(java.lang.Object root,
                     java.lang.String enc,
                     java.lang.Boolean alone)
                     throws JiBXException
Marshal document from root object. This can only be validly called immediately following one of the set output methods; otherwise the output document will be corrupt. The effect of this method is the same as the sequence of a call to startDocument(java.lang.String, java.lang.Boolean), a call to marshal the root object using this context, and finally a call to endDocument().

Parameters:
root - object at root of structure to be marshalled, which must have a top-level mapping in the binding
enc - document encoding, null uses UTF-8 default
alone - standalone document flag, null if not specified
Throws:
JiBXException - on any error (possibly wrapping other exception)

marshalDocument

void marshalDocument(java.lang.Object root,
                     java.lang.String enc,
                     java.lang.Boolean alone,
                     java.io.OutputStream outs)
                     throws JiBXException
Marshal document from root object to output stream with encoding. The effect of this method is the same as the sequence of a call to startDocument(java.lang.String, java.lang.Boolean), a call to marshal the root object using this context, and finally a call to endDocument().

Parameters:
root - object at root of structure to be marshalled, which must have a top-level mapping in the binding
enc - document encoding, null uses UTF-8 default
alone - standalone document flag, null if not specified
outs - stream for document data output
Throws:
JiBXException - on any error (possibly wrapping other exception)

marshalDocument

void marshalDocument(java.lang.Object root,
                     java.lang.String enc,
                     java.lang.Boolean alone,
                     java.io.Writer outw)
                     throws JiBXException
Marshal document from root object to writer. The effect of this method is the same as the sequence of a call to startDocument(java.lang.String, java.lang.Boolean), a call to marshal the root object using this context, and finally a call to endDocument().

Parameters:
root - object at root of structure to be marshalled, which must have a top-level mapping in the binding
enc - document encoding, null uses UTF-8 default
alone - standalone document flag, null if not specified
outw - writer for document data output
Throws:
JiBXException - on any error (possibly wrapping other exception)

setUserContext

void setUserContext(java.lang.Object obj)
Set a user context object. This context object is not used directly by JiBX, but can be accessed by all types of user extension methods. The context object is automatically cleared by the reset() method, so to make use of this you need to first call the appropriate version of the setOutput() method, then this method, and finally one of the marshalDocument methods which uses the previously-set output (not the ones which take a stream or writer as parameter, since they call setOutput() themselves).

Parameters:
obj - user context object, or null if clearing existing context object
See Also:
getUserContext()

getUserContext

java.lang.Object getUserContext()
Get the user context object.

Returns:
user context object, or null if no context object set
See Also:
setUserContext(Object)

pushObject

void pushObject(java.lang.Object obj)
Push created object to marshalling stack. This must be called before beginning the marshalling of the object. It is only called for objects with structure, not for those converted directly to and from text.

Parameters:
obj - object being marshalled

popObject

void popObject()
               throws JiBXException
Pop marshalled object from stack.

Throws:
JiBXException - if no object on stack

getStackDepth

int getStackDepth()
Get current marshalling object stack depth. This allows tracking nested calls to marshal one object while in the process of marshalling another object. The bottom item on the stack is always the root object of the marshalling.

Returns:
number of objects in marshalling stack

getStackObject

java.lang.Object getStackObject(int depth)
Get object from marshalling stack. This stack allows tracking nested calls to marshal one object while in the process of marshalling another object. The bottom item on the stack is always the root object of the marshalling.

Parameters:
depth - object depth in stack to be retrieved (must be in the range of zero to the current depth minus one).
Returns:
object from marshalling stack

getStackTop

java.lang.Object getStackTop()
Get top object on marshalling stack. This is safe to call even when no objects are on the stack.

Returns:
object from marshalling stack, or null if none

getMarshaller

IMarshaller getMarshaller(int index,
                          java.lang.String name)
                          throws JiBXException
Find the marshaller for a particular class index in the current context.

Parameters:
index - class index for marshalling definition
name - fully qualified name of class to be marshalled (used only for validation)
Returns:
marshalling handler for class
Throws:
JiBXException - on any error (possibly wrapping other exception)


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/ITrackSource.html0000644000175000017500000002170511023035704024235 0ustar moellermoeller ITrackSource (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime
Interface ITrackSource

All Known Subinterfaces:
ITrackSourceImpl

public interface ITrackSource

Unmarshalling source tracking interface. This interface is added to bound classes when requested by the binding definition. It allows the user to retrieve information about the location in the input document corresponding to an unmarshalled object, if the parser used for unmarshalling supports reporting this information.

Version:
1.0
Author:
Dennis M. Sosnoski

Method Summary
 int jibx_getColumnNumber()
          Get source document column number.
 java.lang.String jibx_getDocumentName()
          Get source document name.
 int jibx_getLineNumber()
          Get source document line number.
 

Method Detail

jibx_getDocumentName

java.lang.String jibx_getDocumentName()
Get source document name.

Returns:
name given for source document, or null if none

jibx_getLineNumber

int jibx_getLineNumber()
Get source document line number.

Returns:
line number in source document, or -1 if unknown

jibx_getColumnNumber

int jibx_getColumnNumber()
Get source document column number.

Returns:
column number in source document, or -1 if unknown


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/IUnmarshallable.html0000644000175000017500000002031711023035704024740 0ustar moellermoeller IUnmarshallable (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime
Interface IUnmarshallable


public interface IUnmarshallable

Unmarshallable interface definition. This interface must be implemented by all classes which can be unmarshalled as independent units (not just as children of other objects). Classes implementing this interface may either unmarshal themselves directly (if there's only one unmarshalling format defined), or obtain an instance of the appropriate unmarshaller from the context and use that.

Version:
1.0
Author:
Dennis M. Sosnoski

Method Summary
 void unmarshal(IUnmarshallingContext ctx)
          Unmarshal self.
 

Method Detail

unmarshal

void unmarshal(IUnmarshallingContext ctx)
               throws JiBXException
Unmarshal self. This method call is responsible for all handling of the unmarshalling of the object from XML text.

Parameters:
ctx - unmarshalling context
Throws:
JiBXException - on error in unmarshalling process


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/IUnmarshaller.html0000644000175000017500000003040111023035704024436 0ustar moellermoeller IUnmarshaller (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime
Interface IUnmarshaller

All Known Implementing Classes:
DiscardElementMapper, DiscardListMapper, Dom4JElementMapper, Dom4JListMapper, DomElementMapper, DomFragmentMapper, DomListMapper, HashMapperStringToComplex, HashMapperStringToSchemaType, IdDefRefMapperBase, IdRefMapperBase, ObjectArrayMapper, TypedArrayMapper

public interface IUnmarshaller

Unmarshaller interface definition. This interface must be implemented by the handler for unmarshalling an object. Instances of classes implementing this interface must be serially reusable, meaning they can store state information while in the process of unmarshalling an object but must reset all state when called to unmarshal another object after the first one is done (even if the first object throws an exception during unmarshalling). The JiBX framework will only create one instance of an unmarshaller class for each mapped class using that unmarshaller. Generally the unmarshaller instance will not be called recursively, but this may happen in cases where the binding definition includes recursive mappings and the unmarshaller uses other unmarshallers (as opposed to handling all children directly).

Version:
1.0
Author:
Dennis M. Sosnoski

Method Summary
 boolean isPresent(IUnmarshallingContext ctx)
          Check if instance present in XML.
 java.lang.Object unmarshal(java.lang.Object obj, IUnmarshallingContext ctx)
          Unmarshal instance of handled class.
 

Method Detail

isPresent

boolean isPresent(IUnmarshallingContext ctx)
                  throws JiBXException
Check if instance present in XML. This method can be called when the unmarshalling context is positioned at or just before the start of the data corresponding to an instance of this mapping. It verifies that the expected data is present.

Parameters:
ctx - unmarshalling context
Returns:
true if expected parse data found, false if not
Throws:
JiBXException - on error in unmarshalling process

unmarshal

java.lang.Object unmarshal(java.lang.Object obj,
                           IUnmarshallingContext ctx)
                           throws JiBXException
Unmarshal instance of handled class. This method call is responsible for all handling of the unmarshalling of an object from XML text, including creating the instance of the handled class if an instance is not supplied. When it is called the unmarshalling context is always positioned at or just before the start tag corresponding to the start of the class data.

Parameters:
obj - object to be unmarshalled (may be null)
ctx - unmarshalling context
Returns:
unmarshalled object (may be null)
Throws:
JiBXException - on error in unmarshalling process


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/IUnmarshallingContext.html0000644000175000017500000010002311023035704026150 0ustar moellermoeller IUnmarshallingContext (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime
Interface IUnmarshallingContext

All Known Implementing Classes:
UnmarshallingContext

public interface IUnmarshallingContext

User interface for deserializer from XML. This provides methods used to set up and control the marshalling process, as well as access to the unmarshalling object stack while unmarshalling.

Author:
Dennis M. Sosnoski

Method Summary
 java.lang.String getDocumentName()
          Return the supplied document name.
 int getStackDepth()
          Get current unmarshalling object stack depth.
 java.lang.Object getStackObject(int depth)
          Get object from unmarshalling stack.
 java.lang.Object getStackTop()
          Get top object on unmarshalling stack.
 IUnmarshaller getUnmarshaller(int index)
          Find the unmarshaller for a particular class index in the current context.
 java.lang.Object getUserContext()
          Get the user context object.
 boolean isAt(java.lang.String ns, java.lang.String name)
          Check if next tag is start of element.
 boolean isEnd()
          Check if next tag is an end tag.
 boolean isStart()
          Check if next tag is a start tag.
 void popObject()
          Pop unmarshalled object from stack.
 void pushObject(java.lang.Object obj)
          Push created object to unmarshalling stack.
 void reset()
          Reset unmarshalling information.
 void setDocument(java.io.InputStream ins, java.lang.String enc)
          Set document to be parsed from stream.
 void setDocument(java.io.InputStream ins, java.lang.String name, java.lang.String enc)
          Set named document to be parsed from stream.
 void setDocument(java.io.Reader rdr)
          Set document to be parsed from reader.
 void setDocument(java.io.Reader rdr, java.lang.String name)
          Set named document to be parsed from reader.
 void setUserContext(java.lang.Object obj)
          Set a user context object.
 java.lang.Object unmarshalDocument(java.io.InputStream ins, java.lang.String enc)
          Unmarshal document from stream to object.
 java.lang.Object unmarshalDocument(java.io.InputStream ins, java.lang.String name, java.lang.String enc)
          Unmarshal named document from stream to object.
 java.lang.Object unmarshalDocument(java.io.Reader rdr)
          Unmarshal document from reader to object.
 java.lang.Object unmarshalDocument(java.io.Reader rdr, java.lang.String name)
          Unmarshal named document from reader to object.
 java.lang.Object unmarshalElement()
          Unmarshal the current element.
 

Method Detail

setDocument

void setDocument(java.io.InputStream ins,
                 java.lang.String enc)
                 throws JiBXException
Set document to be parsed from stream.

Parameters:
ins - stream supplying document data
enc - document input encoding, or null if to be determined by parser
Throws:
JiBXException - if error creating parser

setDocument

void setDocument(java.io.Reader rdr)
                 throws JiBXException
Set document to be parsed from reader.

Parameters:
rdr - reader supplying document data
Throws:
JiBXException - if error creating parser

setDocument

void setDocument(java.io.InputStream ins,
                 java.lang.String name,
                 java.lang.String enc)
                 throws JiBXException
Set named document to be parsed from stream.

Parameters:
ins - stream supplying document data
name - document name
enc - document input encoding, or null if to be determined by parser
Throws:
JiBXException - if error creating parser

setDocument

void setDocument(java.io.Reader rdr,
                 java.lang.String name)
                 throws JiBXException
Set named document to be parsed from reader.

Parameters:
rdr - reader supplying document data
name - document name
Throws:
JiBXException - if error creating parser

reset

void reset()
Reset unmarshalling information. This releases all references to unmarshalled objects and prepares the context for potential reuse. It is automatically called when input is set.


unmarshalElement

java.lang.Object unmarshalElement()
                                  throws JiBXException
Unmarshal the current element. If not currently positioned at a start or end tag this first advances the parse to the next start or end tag. There must be an unmarshalling defined for the current element, and this unmarshalling is used to build an object from that element.

Returns:
unmarshalled object from element
Throws:
JiBXException - on any error (possibly wrapping other exception)

unmarshalDocument

java.lang.Object unmarshalDocument(java.io.InputStream ins,
                                   java.lang.String enc)
                                   throws JiBXException
Unmarshal document from stream to object. The effect of this is the same as if setDocument(java.io.InputStream, java.lang.String) were called, followed by unmarshalElement()

Parameters:
ins - stream supplying document data
enc - document input encoding, or null if to be determined by parser
Returns:
unmarshalled object
Throws:
JiBXException - if error creating parser

unmarshalDocument

java.lang.Object unmarshalDocument(java.io.Reader rdr)
                                   throws JiBXException
Unmarshal document from reader to object. The effect of this is the same as if setDocument(java.io.InputStream, java.lang.String) were called, followed by unmarshalElement()

Parameters:
rdr - reader supplying document data
Returns:
unmarshalled object
Throws:
JiBXException - if error creating parser

unmarshalDocument

java.lang.Object unmarshalDocument(java.io.InputStream ins,
                                   java.lang.String name,
                                   java.lang.String enc)
                                   throws JiBXException
Unmarshal named document from stream to object. The effect of this is the same as if setDocument(java.io.InputStream, java.lang.String) were called, followed by unmarshalElement()

Parameters:
ins - stream supplying document data
name - document name
enc - document input encoding, or null if to be determined by parser
Returns:
unmarshalled object
Throws:
JiBXException - if error creating parser

unmarshalDocument

java.lang.Object unmarshalDocument(java.io.Reader rdr,
                                   java.lang.String name)
                                   throws JiBXException
Unmarshal named document from reader to object. The effect of this is the same as if setDocument(java.io.InputStream, java.lang.String) were called, followed by unmarshalElement()

Parameters:
rdr - reader supplying document data
name - document name
Returns:
unmarshalled object
Throws:
JiBXException - if error creating parser

getDocumentName

java.lang.String getDocumentName()
Return the supplied document name.

Returns:
supplied document name (null if none)

isAt

boolean isAt(java.lang.String ns,
             java.lang.String name)
             throws JiBXException
Check if next tag is start of element. If not currently positioned at a start or end tag this first advances the parse to the next start or end tag.

Parameters:
ns - namespace URI for expected element (may be null or the empty string for the empty namespace)
name - element name expected
Returns:
true if at start of element with supplied name, false if not
Throws:
JiBXException - on any error (possibly wrapping other exception)

isStart

boolean isStart()
                throws JiBXException
Check if next tag is a start tag. If not currently positioned at a start or end tag this first advances the parse to the next start or end tag.

Returns:
true if at start of element, false if at end
Throws:
JiBXException - on any error (possibly wrapping other exception)

isEnd

boolean isEnd()
              throws JiBXException
Check if next tag is an end tag. If not currently positioned at a start or end tag this first advances the parse to the next start or end tag.

Returns:
true if at end of element, false if at start
Throws:
JiBXException - on any error (possibly wrapping other exception)

getUnmarshaller

IUnmarshaller getUnmarshaller(int index)
                              throws JiBXException
Find the unmarshaller for a particular class index in the current context.

Parameters:
index - class index for unmarshalling definition
Returns:
unmarshalling handler for class
Throws:
JiBXException - if unable to create unmarshaller

setUserContext

void setUserContext(java.lang.Object obj)
Set a user context object. This context object is not used directly by JiBX, but can be accessed by all types of user extension methods. The context object is automatically cleared by the reset() method, so to make use of this you need to first call the appropriate version of the setDocument() method, then this method, and finally the unmarshalElement() method.

Parameters:
obj - user context object, or null if clearing existing context object
See Also:
getUserContext()

getUserContext

java.lang.Object getUserContext()
Get the user context object.

Returns:
user context object, or null if no context object set
See Also:
setUserContext(Object)

pushObject

void pushObject(java.lang.Object obj)
Push created object to unmarshalling stack. This must be called before beginning the unmarshalling of the object. It is only called for objects with structure, not for those converted directly to and from text.

Parameters:
obj - object being unmarshalled

popObject

void popObject()
               throws JiBXException
Pop unmarshalled object from stack.

Throws:
JiBXException - if stack empty

getStackDepth

int getStackDepth()
Get current unmarshalling object stack depth. This allows tracking nested calls to unmarshal one object while in the process of unmarshalling another object. The bottom item on the stack is always the root object being unmarshalled.

Returns:
number of objects in unmarshalling stack

getStackObject

java.lang.Object getStackObject(int depth)
Get object from unmarshalling stack. This stack allows tracking nested calls to unmarshal one object while in the process of unmarshalling another object. The bottom item on the stack is always the root object being unmarshalled.

Parameters:
depth - object depth in stack to be retrieved (must be in the range of zero to the current depth minus one).
Returns:
object from unmarshalling stack

getStackTop

java.lang.Object getStackTop()
Get top object on unmarshalling stack. This is safe to call even when no objects are on the stack.

Returns:
object from unmarshalling stack, or null if none


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/IXMLReader.html0000644000175000017500000010234211023035704023570 0ustar moellermoeller IXMLReader (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime
Interface IXMLReader

All Known Implementing Classes:
StAXReaderWrapper

public interface IXMLReader

XML reader interface used for input of unmarshalled document. This interface allows easy substitution of different parsers or other input sources.

Version:
1.0
Author:
Dennis M. Sosnoski

Field Summary
static int CDSECT
           
static int COMMENT
           
static int DOCDECL
           
static int END_DOCUMENT
           
static int END_TAG
           
static int ENTITY_REF
           
static int IGNORABLE_WHITESPACE
           
static int PROCESSING_INSTRUCTION
           
static int START_DOCUMENT
           
static int START_TAG
           
static int TEXT
           
 
Method Summary
 java.lang.String buildPositionString()
          Build current parse input position description.
 int getAttributeCount()
          Get the number of attributes of the current start tag.
 java.lang.String getAttributeName(int index)
          Get an attribute name from the current start tag.
 java.lang.String getAttributeNamespace(int index)
          Get an attribute namespace from the current start tag.
 java.lang.String getAttributePrefix(int index)
          Get an attribute prefix from the current start tag.
 java.lang.String getAttributeValue(int index)
          Get an attribute value from the current start tag.
 java.lang.String getAttributeValue(java.lang.String ns, java.lang.String name)
          Get an attribute value from the current start tag.
 int getColumnNumber()
          Get current source column number.
 java.lang.String getDocumentName()
          Get document name.
 int getEventType()
          Gets the current parse event type, without changing the current parse state.
 java.lang.String getInputEncoding()
          Return the input encoding, if known.
 int getLineNumber()
          Get current source line number.
 java.lang.String getName()
          Get element name from the current start or end tag.
 java.lang.String getNamespace()
          Get element namespace from the current start or end tag.
 java.lang.String getNamespace(java.lang.String prefix)
          Get namespace URI associated with prefix.
 int getNamespaceCount(int depth)
          Get number of namespace declarations active at depth.
 java.lang.String getNamespacePrefix(int index)
          Get namespace prefix.
 java.lang.String getNamespaceUri(int index)
          Get namespace URI.
 int getNestingDepth()
          Get current element nesting depth.
 java.lang.String getPrefix()
          Get element prefix from the current start or end tag.
 java.lang.String getText()
          Get current text.
 boolean isNamespaceAware()
          Return namespace processing flag.
 int next()
          Advance to next binding component of input document.
 int nextToken()
          Advance to next parse event of input document.
 

Field Detail

START_DOCUMENT

static final int START_DOCUMENT
See Also:
Constant Field Values

END_DOCUMENT

static final int END_DOCUMENT
See Also:
Constant Field Values

START_TAG

static final int START_TAG
See Also:
Constant Field Values

END_TAG

static final int END_TAG
See Also:
Constant Field Values

TEXT

static final int TEXT
See Also:
Constant Field Values

CDSECT

static final int CDSECT
See Also:
Constant Field Values

ENTITY_REF

static final int ENTITY_REF
See Also:
Constant Field Values

IGNORABLE_WHITESPACE

static final int IGNORABLE_WHITESPACE
See Also:
Constant Field Values

PROCESSING_INSTRUCTION

static final int PROCESSING_INSTRUCTION
See Also:
Constant Field Values

COMMENT

static final int COMMENT
See Also:
Constant Field Values

DOCDECL

static final int DOCDECL
See Also:
Constant Field Values
Method Detail

buildPositionString

java.lang.String buildPositionString()
Build current parse input position description.

Returns:
text description of current parse position

nextToken

int nextToken()
              throws JiBXException
Advance to next parse event of input document.

Returns:
parse event type code
Throws:
JiBXException - if error reading or parsing document

next

int next()
         throws JiBXException
Advance to next binding component of input document. This is a higher-level operation than nextToken(), which consolidates text content and ignores parse events for components such as comments and PIs.

Returns:
parse event type code
Throws:
JiBXException - if error reading or parsing document

getEventType

int getEventType()
                 throws JiBXException
Gets the current parse event type, without changing the current parse state.

Returns:
parse event type code
Throws:
JiBXException - if error parsing document

getName

java.lang.String getName()
Get element name from the current start or end tag.

Returns:
local name if namespace handling enabled, full name if namespace handling disabled
Throws:
java.lang.IllegalStateException - if not at a start or end tag (optional)

getNamespace

java.lang.String getNamespace()
Get element namespace from the current start or end tag.

Returns:
namespace URI if namespace handling enabled and element is in a namespace, empty string otherwise
Throws:
java.lang.IllegalStateException - if not at a start or end tag (optional)

getPrefix

java.lang.String getPrefix()
Get element prefix from the current start or end tag.

Returns:
prefix text (null if no prefix)
Throws:
java.lang.IllegalStateException - if not at a start or end tag

getAttributeCount

int getAttributeCount()
Get the number of attributes of the current start tag.

Returns:
number of attributes
Throws:
java.lang.IllegalStateException - if not at a start tag (optional)

getAttributeName

java.lang.String getAttributeName(int index)
Get an attribute name from the current start tag.

Parameters:
index - attribute index
Returns:
local name if namespace handling enabled, full name if namespace handling disabled
Throws:
java.lang.IllegalStateException - if not at a start tag or invalid index

getAttributeNamespace

java.lang.String getAttributeNamespace(int index)
Get an attribute namespace from the current start tag.

Parameters:
index - attribute index
Returns:
namespace URI if namespace handling enabled and attribute is in a namespace, empty string otherwise
Throws:
java.lang.IllegalStateException - if not at a start tag or invalid index

getAttributePrefix

java.lang.String getAttributePrefix(int index)
Get an attribute prefix from the current start tag.

Parameters:
index - attribute index
Returns:
prefix for attribute (null if no prefix present)
Throws:
java.lang.IllegalStateException - if not at a start tag or invalid index

getAttributeValue

java.lang.String getAttributeValue(int index)
Get an attribute value from the current start tag.

Parameters:
index - attribute index
Returns:
value text
Throws:
java.lang.IllegalStateException - if not at a start tag or invalid index

getAttributeValue

java.lang.String getAttributeValue(java.lang.String ns,
                                   java.lang.String name)
Get an attribute value from the current start tag.

Parameters:
ns - namespace URI for expected attribute (may be null or the empty string for the empty namespace)
name - attribute name expected
Returns:
attribute value text, or null if missing
Throws:
java.lang.IllegalStateException - if not at a start tag

getText

java.lang.String getText()
Get current text. When positioned on a TEXT event this returns the actual text; for CDSECT it returns the text inside the CDATA section; for COMMENT, DOCDECL, or PROCESSING_INSTRUCTION it returns the text inside the structure.

Returns:
text for current event

getNestingDepth

int getNestingDepth()
Get current element nesting depth. The returned depth always includes the current start or end tag (if positioned on a start or end tag).

Returns:
element nesting depth

getNamespaceCount

int getNamespaceCount(int depth)
Get number of namespace declarations active at depth.

Parameters:
depth - element nesting depth
Returns:
number of namespaces active at depth
Throws:
java.lang.IllegalArgumentException - if invalid depth

getNamespaceUri

java.lang.String getNamespaceUri(int index)
Get namespace URI.

Parameters:
index - declaration index
Returns:
namespace URI
Throws:
java.lang.IllegalArgumentException - if invalid index

getNamespacePrefix

java.lang.String getNamespacePrefix(int index)
Get namespace prefix.

Parameters:
index - declaration index
Returns:
namespace prefix, null if a default namespace
Throws:
java.lang.IllegalArgumentException - if invalid index

getDocumentName

java.lang.String getDocumentName()
Get document name.

Returns:
document name, null if not known

getLineNumber

int getLineNumber()
Get current source line number.

Returns:
line number from source document, -1 if line number information not available

getColumnNumber

int getColumnNumber()
Get current source column number.

Returns:
column number from source document, -1 if column number information not available

getNamespace

java.lang.String getNamespace(java.lang.String prefix)
Get namespace URI associated with prefix.

Parameters:
prefix - to be found
Returns:
associated URI (null if prefix not defined)

getInputEncoding

java.lang.String getInputEncoding()
Return the input encoding, if known. This is only valid after parsing of a document has been started.

Returns:
input encoding (null if unknown)

isNamespaceAware

boolean isNamespaceAware()
Return namespace processing flag.

Returns:
namespace processing flag (true if namespaces are processed by reader, false if not)


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/IXMLWriter.html0000644000175000017500000011003611023035704023641 0ustar moellermoeller IXMLWriter (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime
Interface IXMLWriter

All Known Subinterfaces:
IExtensibleWriter
All Known Implementing Classes:
GenericXMLWriter, ISO88591StreamWriter, JDOMWriter, StAXWriter, StreamWriterBase, UTF8StreamWriter, XMLWriterBase, XMLWriterNamespaceBase

public interface IXMLWriter

XML writer interface used for output of marshalled document. This interface allows easy substitution of different output formats, including parse event stream equivalents. This makes heavy use of state information, so each method call defined is only valid in certain states.

Author:
Dennis M. Sosnoski

Method Summary
 void addAttribute(int index, java.lang.String name, java.lang.String value)
          Add attribute to current open start tag.
 void close()
          Close document output.
 void closeEmptyTag()
          Close the current open start tag as an empty element.
 void closeStartTag()
          Close the current open start tag.
 void endTag(int index, java.lang.String name)
          Generate end tag.
 void flush()
          Flush document output.
 java.lang.String[][] getExtensionNamespaces()
          Get extension namespace URIs added to those in mapping.
 int getNamespaceCount()
          Get the number of namespaces currently defined.
 java.lang.String getNamespacePrefix(int index)
          Get current prefix defined for namespace.
 java.lang.String[] getNamespaces()
          Get namespace URIs for mapping.
 java.lang.String getNamespaceUri(int index)
          Get URI for namespace.
 int getNestingDepth()
          Get the current element nesting depth.
 int getPrefixIndex(java.lang.String prefix)
          Get index of namespace mapped to prefix.
 void indent()
          Request output indent.
 int[] openNamespaces(int[] nums, java.lang.String[] prefs)
          Open the specified namespaces for use.
 void popExtensionNamespaces()
          Remove extension namespace URIs.
 void pushExtensionNamespaces(java.lang.String[] uris)
          Append extension namespace URIs to those in mapping.
 void reset()
          Reset to initial state for reuse.
 void setIndentSpaces(int count, java.lang.String newline, char indent)
          Set nesting indentation.
 void startTagClosed(int index, java.lang.String name)
          Generate closed start tag.
 void startTagNamespaces(int index, java.lang.String name, int[] nums, java.lang.String[] prefs)
          Generate start tag for element with namespaces.
 void startTagOpen(int index, java.lang.String name)
          Generate open start tag.
 void writeCData(java.lang.String text)
          Write CDATA text to document.
 void writeComment(java.lang.String text)
          Write comment to document.
 void writeDocType(java.lang.String name, java.lang.String sys, java.lang.String pub, java.lang.String subset)
          Write DOCTYPE declaration to document.
 void writeEntityRef(java.lang.String name)
          Write entity reference to document.
 void writePI(java.lang.String target, java.lang.String data)
          Write processing instruction to document.
 void writeTextContent(java.lang.String text)
          Write ordinary character data text content to document.
 void writeXMLDecl(java.lang.String version, java.lang.String encoding, java.lang.String standalone)
          Write XML declaration to document.
 

Method Detail

getNestingDepth

int getNestingDepth()
Get the current element nesting depth. Elements are only counted in the depth returned when they're officially open - after the start tag has been output and before the end tag has been output.

Returns:
number of nested elements at current point in output

getNamespaceCount

int getNamespaceCount()
Get the number of namespaces currently defined. This is equivalent to the index of the next extension namespace added.

Returns:
namespace count

setIndentSpaces

void setIndentSpaces(int count,
                     java.lang.String newline,
                     char indent)
Set nesting indentation. This is advisory only, and implementations of this interface are free to ignore it. The intent is to indicate that the generated output should use indenting to illustrate element nesting.

Parameters:
count - number of character to indent per level, or disable indentation if negative (zero means new line only)
newline - sequence of characters used for a line ending (null means use the single character '\n')
indent - whitespace character used for indentation

writeXMLDecl

void writeXMLDecl(java.lang.String version,
                  java.lang.String encoding,
                  java.lang.String standalone)
                  throws java.io.IOException
Write XML declaration to document. This can only be called before any other methods in the interface are called.

Parameters:
version - XML version text
encoding - text for encoding attribute (unspecified if null)
standalone - text for standalone attribute (unspecified if null)
Throws:
java.io.IOException - on error writing to document

startTagOpen

void startTagOpen(int index,
                  java.lang.String name)
                  throws java.io.IOException
Generate open start tag. This allows attributes and/or namespace declarations to be added to the start tag, but must be followed by a closeStartTag() call.

Parameters:
index - namespace URI index number
name - unqualified element name
Throws:
java.io.IOException - on error writing to document

startTagNamespaces

void startTagNamespaces(int index,
                        java.lang.String name,
                        int[] nums,
                        java.lang.String[] prefs)
                        throws java.io.IOException
Generate start tag for element with namespaces. This creates the actual start tag, along with any necessary namespace declarations. Previously active namespace declarations are not duplicated. The tag is left incomplete, allowing other attributes to be added.

Parameters:
index - namespace URI index number
name - element name
nums - array of namespace indexes defined by this element (must be constant, reference is kept until end of element)
prefs - array of namespace prefixes mapped by this element (no null values, use "" for default namespace declaration)
Throws:
java.io.IOException - on error writing to document

addAttribute

void addAttribute(int index,
                  java.lang.String name,
                  java.lang.String value)
                  throws java.io.IOException
Add attribute to current open start tag. This is only valid after a call to startTagOpen(int, java.lang.String) and before the corresponding call to closeStartTag().

Parameters:
index - namespace URI index number
name - unqualified attribute name
value - text value for attribute
Throws:
java.io.IOException - on error writing to document

closeStartTag

void closeStartTag()
                   throws java.io.IOException
Close the current open start tag. This is only valid after a call to startTagOpen(int, java.lang.String).

Throws:
java.io.IOException - on error writing to document

closeEmptyTag

void closeEmptyTag()
                   throws java.io.IOException
Close the current open start tag as an empty element. This is only valid after a call to startTagOpen(int, java.lang.String).

Throws:
java.io.IOException - on error writing to document

startTagClosed

void startTagClosed(int index,
                    java.lang.String name)
                    throws java.io.IOException
Generate closed start tag. No attributes or namespaces can be added to a start tag written using this call.

Parameters:
index - namespace URI index number
name - unqualified element name
Throws:
java.io.IOException - on error writing to document

endTag

void endTag(int index,
            java.lang.String name)
            throws java.io.IOException
Generate end tag.

Parameters:
index - namespace URI index number
name - unqualified element name
Throws:
java.io.IOException - on error writing to document

writeTextContent

void writeTextContent(java.lang.String text)
                      throws java.io.IOException
Write ordinary character data text content to document.

Parameters:
text - content value text (must not be null)
Throws:
java.io.IOException - on error writing to document

writeCData

void writeCData(java.lang.String text)
                throws java.io.IOException
Write CDATA text to document.

Parameters:
text - content value text (must not be null)
Throws:
java.io.IOException - on error writing to document

writeComment

void writeComment(java.lang.String text)
                  throws java.io.IOException
Write comment to document.

Parameters:
text - comment text (must not be null)
Throws:
java.io.IOException - on error writing to document

writeEntityRef

void writeEntityRef(java.lang.String name)
                    throws java.io.IOException
Write entity reference to document.

Parameters:
name - entity name (must not be null)
Throws:
java.io.IOException - on error writing to document

writeDocType

void writeDocType(java.lang.String name,
                  java.lang.String sys,
                  java.lang.String pub,
                  java.lang.String subset)
                  throws java.io.IOException
Write DOCTYPE declaration to document.

Parameters:
name - root element name
sys - system ID (null if none, must be non-null for public ID to be used)
pub - public ID (null if none)
subset - internal subset (null if none)
Throws:
java.io.IOException - on error writing to document

writePI

void writePI(java.lang.String target,
             java.lang.String data)
             throws java.io.IOException
Write processing instruction to document.

Parameters:
target - processing instruction target name (must not be null)
data - processing instruction data (must not be null)
Throws:
java.io.IOException - on error writing to document

indent

void indent()
            throws java.io.IOException
Request output indent. The writer implementation should normally indent output as appropriate. This method can be used to request indenting of output that might otherwise not be indented. The normal effect when used with a text-oriented writer should be to output the appropriate line end sequence followed by the appropriate number of indent characters for the current nesting level.

Throws:
java.io.IOException - on error writing to document

flush

void flush()
           throws java.io.IOException
Flush document output. Writes any buffered data to the output medium. This does not flush the output medium itself, only any internal buffering within the writer.

Throws:
java.io.IOException - on error writing to document

close

void close()
           throws java.io.IOException
Close document output. Completes writing of document output, including flushing and closing the output medium.

Throws:
java.io.IOException - on error writing to document

reset

void reset()
Reset to initial state for reuse. The context is serially reusable, as long as this method is called to clear any retained state information between uses. It is automatically called when output is set.


getNamespaces

java.lang.String[] getNamespaces()
Get namespace URIs for mapping. This gets the full ordered array of namespaces known in the binding used for this marshalling, where the index number of each namespace URI is the namespace index used to lookup the prefix when marshalling a name in that namespace. The returned array must not be modified.

Returns:
array of namespaces

getNamespaceUri

java.lang.String getNamespaceUri(int index)
Get URI for namespace.

Parameters:
index - namespace URI index number
Returns:
namespace URI text, or null if the namespace index is invalid

getNamespacePrefix

java.lang.String getNamespacePrefix(int index)
Get current prefix defined for namespace.

Parameters:
index - namespace URI index number
Returns:
current prefix text, or null if the namespace is not currently mapped

getPrefixIndex

int getPrefixIndex(java.lang.String prefix)
Get index of namespace mapped to prefix. This can be an expensive operation with time proportional to the number of namespaces defined, so it should be used with care.

Parameters:
prefix - text to match (non-null, use "" for default prefix)
Returns:
index namespace URI index number mapped to prefix

pushExtensionNamespaces

void pushExtensionNamespaces(java.lang.String[] uris)
Append extension namespace URIs to those in mapping.

Parameters:
uris - namespace URIs to extend those in mapping

popExtensionNamespaces

void popExtensionNamespaces()
Remove extension namespace URIs. This removes the last set of extension namespaces pushed using pushExtensionNamespaces(java.lang.String[]).


getExtensionNamespaces

java.lang.String[][] getExtensionNamespaces()
Get extension namespace URIs added to those in mapping. This gets the current set of extension definitions. The returned arrays must not be modified.

Returns:
array of arrays of extension namespaces (null if none)

openNamespaces

int[] openNamespaces(int[] nums,
                     java.lang.String[] prefs)
                     throws java.io.IOException
Open the specified namespaces for use. This method is normally only called internally, when namespace declarations are actually written to output. It is exposed as part of this interface to allow for special circumstances where namespaces are being written outside the usual processing. The namespaces will remain open for use until the current element is closed.

Parameters:
nums - array of namespace indexes defined by this element (must be constant, reference is kept until namespaces are closed)
prefs - array of namespace prefixes mapped by this element (no null values, use "" for default namespace declaration)
Returns:
array of indexes for namespaces not previously active (the ones actually needing to be declared, in the case of text output)
Throws:
java.io.IOException - on error writing to document


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/IntStack.html0000644000175000017500000004750011023035704023420 0ustar moellermoeller IntStack (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime
Class IntStack

java.lang.Object
  extended by org.jibx.runtime.IntStack

public class IntStack
extends java.lang.Object

Growable int stack with type specific access methods. This implementation is unsynchronized in order to provide the best possible performance for typical usage scenarios, so explicit synchronization must be implemented by a wrapper class or directly by the application in cases where instances are modified in a multithreaded environment. See the base classes for other details of the implementation.

Version:
1.0
Author:
Dennis M. Sosnoski

Field Summary
static int DEFAULT_SIZE
          Default initial array size.
 
Constructor Summary
IntStack()
          Default constructor.
IntStack(int size)
          Constructor with initial size specified.
IntStack(int[] ints)
          Constructor from array of ints.
IntStack(int size, int growth)
          Constructor with full specification.
IntStack(IntStack base)
          Copy (clone) constructor.
 
Method Summary
 void clear()
          Set the stack to the empty state.
 java.lang.Object clone()
          Duplicates the object with the generic call.
 void ensureCapacity(int min)
          Ensure that the array has the capacity for at least the specified number of values.
 boolean isEmpty()
          Check if stack is empty.
 int peek()
          Copy top value from the stack.
 int peek(int depth)
          Copy a value from the stack.
 int pop()
          Pop a value from the stack.
 int pop(int count)
          Pop multiple values from the stack.
 void push(int value)
          Push a value on the stack.
 int size()
          Get the number of values currently present in the stack.
 int[] toArray()
          Constructs and returns a simple array containing the same data as held in this stack.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_SIZE

public static final int DEFAULT_SIZE
Default initial array size.

See Also:
Constant Field Values
Constructor Detail

IntStack

public IntStack(int size,
                int growth)
Constructor with full specification.

Parameters:
size - number of int values initially allowed in stack
growth - maximum size increment for growing stack

IntStack

public IntStack(int size)
Constructor with initial size specified.

Parameters:
size - number of int values initially allowed in stack

IntStack

public IntStack()
Default constructor.


IntStack

public IntStack(IntStack base)
Copy (clone) constructor.

Parameters:
base - instance being copied

IntStack

public IntStack(int[] ints)
Constructor from array of ints.

Parameters:
ints - array of ints for initial contents
Method Detail

ensureCapacity

public final void ensureCapacity(int min)
Ensure that the array has the capacity for at least the specified number of values.

Parameters:
min - minimum capacity to be guaranteed

push

public void push(int value)
Push a value on the stack.

Parameters:
value - value to be added

pop

public int pop()
Pop a value from the stack.

Returns:
value from top of stack
Throws:
java.lang.ArrayIndexOutOfBoundsException - on attempt to pop empty stack

pop

public int pop(int count)
Pop multiple values from the stack. The last value popped is the one returned.

Parameters:
count - number of values to pop from stack (must be strictly positive)
Returns:
value from top of stack
Throws:
java.lang.ArrayIndexOutOfBoundsException - on attempt to pop past end of stack

peek

public int peek(int depth)
Copy a value from the stack. This returns a value from within the stack without modifying the stack.

Parameters:
depth - depth of value to be returned
Returns:
value from stack
Throws:
java.lang.ArrayIndexOutOfBoundsException - on attempt to peek past end of stack

peek

public int peek()
Copy top value from the stack. This returns the top value without removing it from the stack.

Returns:
value at top of stack
Throws:
java.lang.ArrayIndexOutOfBoundsException - on attempt to peek empty stack

toArray

public int[] toArray()
Constructs and returns a simple array containing the same data as held in this stack. Note that the items will be in reverse pop order, with the last item to be popped from the stack as the first item in the array.

Returns:
array containing a copy of the data

clone

public java.lang.Object clone()
Duplicates the object with the generic call.

Overrides:
clone in class java.lang.Object
Returns:
a copy of the object

size

public int size()
Get the number of values currently present in the stack.

Returns:
count of values present

isEmpty

public boolean isEmpty()
Check if stack is empty.

Returns:
true if stack empty, false if not

clear

public void clear()
Set the stack to the empty state.



Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/JiBXConstrainedParseException.html0000644000175000017500000003635411023035704027545 0ustar moellermoeller JiBXConstrainedParseException (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime
Class JiBXConstrainedParseException

java.lang.Object
  extended by java.lang.Throwable
      extended by java.lang.Exception
          extended by org.jibx.runtime.JiBXException
              extended by org.jibx.runtime.JiBXParseException
                  extended by org.jibx.runtime.JiBXConstrainedParseException
All Implemented Interfaces:
java.io.Serializable

public class JiBXConstrainedParseException
extends JiBXParseException

Thrown when a "constrained" parsing exception is encountered (e.g. an enumerated value).

Author:
Joshua Davies
See Also:
Serialized Form

Constructor Summary
JiBXConstrainedParseException(java.lang.String msg, java.lang.String value, java.lang.String[] allowableValues)
           
JiBXConstrainedParseException(java.lang.String msg, java.lang.String value, java.lang.String[] allowableValues, java.lang.String namespace, java.lang.String tagName, java.lang.Throwable root)
           
 
Method Summary
 boolean equals(java.lang.Object obj)
          Solely used by unit tests.
 java.lang.String getMessage()
          Append useful parsing details onto the default message.
 
Methods inherited from class org.jibx.runtime.JiBXParseException
setNamespace, setTagName
 
Methods inherited from class org.jibx.runtime.JiBXException
getRootCause, printStackTrace, printStackTrace, printStackTrace
 
Methods inherited from class java.lang.Throwable
fillInStackTrace, getCause, getLocalizedMessage, getStackTrace, initCause, setStackTrace, toString
 
Methods inherited from class java.lang.Object
getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

JiBXConstrainedParseException

public JiBXConstrainedParseException(java.lang.String msg,
                                     java.lang.String value,
                                     java.lang.String[] allowableValues)

JiBXConstrainedParseException

public JiBXConstrainedParseException(java.lang.String msg,
                                     java.lang.String value,
                                     java.lang.String[] allowableValues,
                                     java.lang.String namespace,
                                     java.lang.String tagName,
                                     java.lang.Throwable root)
Method Detail

getMessage

public java.lang.String getMessage()
Description copied from class: JiBXParseException
Append useful parsing details onto the default message.

Overrides:
getMessage in class JiBXParseException
Returns:
the default message with "constraint" text appended.

equals

public boolean equals(java.lang.Object obj)
Solely used by unit tests.

Overrides:
equals in class JiBXParseException
Parameters:
obj - what to compare against
Returns:
true or false


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/JiBXException.html0000644000175000017500000003337311023035704024356 0ustar moellermoeller JiBXException (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime
Class JiBXException

java.lang.Object
  extended by java.lang.Throwable
      extended by java.lang.Exception
          extended by org.jibx.runtime.JiBXException
All Implemented Interfaces:
java.io.Serializable
Direct Known Subclasses:
JiBXParseException, RecoverableException, UnrecoverableException

public class JiBXException
extends java.lang.Exception

Binding exception class. This is used for all types of errors that can be generated by the runtime.

Version:
1.0
Author:
Dennis M. Sosnoski
See Also:
Serialized Form

Constructor Summary
JiBXException(java.lang.String msg)
          Constructor from message.
JiBXException(java.lang.String msg, java.lang.Throwable root)
          Constructor from message and wrapped exception.
 
Method Summary
 java.lang.Throwable getRootCause()
          Get root cause exception.
 void printStackTrace()
          Print stack trace to standard error.
 void printStackTrace(java.io.PrintStream s)
          Print stack trace to stream.
 void printStackTrace(java.io.PrintWriter s)
          Print stack trace to writer.
 
Methods inherited from class java.lang.Throwable
fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, setStackTrace, toString
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

JiBXException

public JiBXException(java.lang.String msg)
Constructor from message.

Parameters:
msg - message describing the exception condition

JiBXException

public JiBXException(java.lang.String msg,
                     java.lang.Throwable root)
Constructor from message and wrapped exception.

Parameters:
msg - message describing the exception condition
root - exception which caused this exception
Method Detail

getRootCause

public java.lang.Throwable getRootCause()
Get root cause exception.

Returns:
exception that caused this exception

printStackTrace

public void printStackTrace()
Print stack trace to standard error. This is an override of the base class method to implement exception chaining.

Overrides:
printStackTrace in class java.lang.Throwable

printStackTrace

public void printStackTrace(java.io.PrintStream s)
Print stack trace to stream. This is an override of the base class method to implement exception chaining.

Overrides:
printStackTrace in class java.lang.Throwable
Parameters:
s - stream for printing stack trace

printStackTrace

public void printStackTrace(java.io.PrintWriter s)
Print stack trace to writer. This is an override of the base class method to implement exception chaining.

Overrides:
printStackTrace in class java.lang.Throwable
Parameters:
s - writer for printing stack trace


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/JiBXParseException.html0000644000175000017500000004114311023035704025343 0ustar moellermoeller JiBXParseException (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime
Class JiBXParseException

java.lang.Object
  extended by java.lang.Throwable
      extended by java.lang.Exception
          extended by org.jibx.runtime.JiBXException
              extended by org.jibx.runtime.JiBXParseException
All Implemented Interfaces:
java.io.Serializable
Direct Known Subclasses:
JiBXConstrainedParseException

public class JiBXParseException
extends JiBXException

JiBX parsing exception class. This subclass of JiBXException provides additional details when a parsing error occurs such as what tag was being parsed and what value caused the error.

Author:
Joshua Davies
See Also:
Serialized Form

Constructor Summary
JiBXParseException(java.lang.String msg, java.lang.String value)
          Constructor from message.
JiBXParseException(java.lang.String msg, java.lang.String value, java.lang.String namespace, java.lang.String tagName, java.lang.Throwable root)
          Constructor from message, wrapped exception and tag name.
JiBXParseException(java.lang.String msg, java.lang.String value, java.lang.Throwable root)
          Constructor from message and wrapped exception.
 
Method Summary
 boolean equals(java.lang.Object obj)
          This is only used for testing purposes.
 java.lang.String getMessage()
          Append useful parsing details onto the default message.
 void setNamespace(java.lang.String namespace)
          Add namespace detail to the exception.
 void setTagName(java.lang.String tagName)
          Add tag name detail to the exception.
 
Methods inherited from class org.jibx.runtime.JiBXException
getRootCause, printStackTrace, printStackTrace, printStackTrace
 
Methods inherited from class java.lang.Throwable
fillInStackTrace, getCause, getLocalizedMessage, getStackTrace, initCause, setStackTrace, toString
 
Methods inherited from class java.lang.Object
getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

JiBXParseException

public JiBXParseException(java.lang.String msg,
                          java.lang.String value)
Constructor from message.

Parameters:
msg - the throwers description of what's gone wrong.
value - the value which was unparseable (in string format).

JiBXParseException

public JiBXParseException(java.lang.String msg,
                          java.lang.String value,
                          java.lang.Throwable root)
Constructor from message and wrapped exception.

Parameters:
msg - the throwers description of what's gone wrong.
value - the value which was unparseable (in string format).
root - exception which caused this exception

JiBXParseException

public JiBXParseException(java.lang.String msg,
                          java.lang.String value,
                          java.lang.String namespace,
                          java.lang.String tagName,
                          java.lang.Throwable root)
Constructor from message, wrapped exception and tag name.

Parameters:
msg - message describing the exception condition
value - the value which was unparseable (in string format).
namespace - the namespace (if any) associated with the tag.
tagName - the name of the tag whose element caused the exception.
root - exception which caused this exception
Method Detail

setNamespace

public void setNamespace(java.lang.String namespace)
Add namespace detail to the exception.

Parameters:
namespace - the namespace of the offending tag.

setTagName

public void setTagName(java.lang.String tagName)
Add tag name detail to the exception.

Parameters:
tagName - the name of the offending tag.

getMessage

public java.lang.String getMessage()
Append useful parsing details onto the default message.

Overrides:
getMessage in class java.lang.Throwable
Returns:
the parent's message plus "caused by value" addendum.

equals

public boolean equals(java.lang.Object obj)
This is only used for testing purposes.

Overrides:
equals in class java.lang.Object
Parameters:
obj - what to compare against.
Returns:
true or false


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/QName.html0000644000175000017500000005573011023035704022705 0ustar moellermoeller QName (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime
Class QName

java.lang.Object
  extended by org.jibx.runtime.QName

public class QName
extends java.lang.Object

Representation of a qualified name. This includes the JiBX serializer/deserializer methods for the representation. It assumes that the actual namespace declarations are being handled separately for marshalling

Note that this implementation treats only the namespace and local name as significant for purposes of comparing values. The prefix is held only as a convenience, and the actual prefix used when writing a value may differ from the prefix defined by the instance.

Author:
Dennis M. Sosnoski

Constructor Summary
QName(java.lang.String name)
          Constructor from local name only.
QName(java.lang.String uri, java.lang.String name)
          Constructor from namespace and local name.
QName(java.lang.String uri, java.lang.String prefix, java.lang.String name)
          Constructor from full set of components.
 
Method Summary
static QName deserialize(java.lang.String text, IUnmarshallingContext ictx)
          JiBX deserializer method.
static QName[] deserializeList(java.lang.String text, IUnmarshallingContext ictx)
          JiBX deserializer method.
 boolean equals(java.lang.Object obj)
           
 java.lang.String getName()
          Get local name.
 java.lang.String getPrefix()
          Get namespace prefix.
 java.lang.String getUri()
          Get namespace URI.
 int hashCode()
           
static java.lang.String serialize(QName qname, IMarshallingContext ictx)
          JiBX serializer method.
static java.lang.String serializeList(QName[] qnames, IMarshallingContext ictx)
          JiBX serializer method.
 void setName(java.lang.String name)
          Set local name.
 void setPrefix(java.lang.String prefix)
          Set namespace prefix.
 void setUri(java.lang.String uri)
          Set namespace URI.
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

QName

public QName(java.lang.String uri,
             java.lang.String prefix,
             java.lang.String name)
Constructor from full set of components.

Parameters:
uri - namespace uri, null if no-namespace namespace
prefix - namespace prefix, null if unspecified, empty string if default namespace
name - local name

QName

public QName(java.lang.String uri,
             java.lang.String name)
Constructor from namespace and local name. This constructor is provided as a convenience for when the actual prefix used for a namespace is irrelevant.

Parameters:
uri - namespace uri, null if no-namespace namespace
name -

QName

public QName(java.lang.String name)
Constructor from local name only. This constructor is provided as a convenience for names in the no-namespace namespace.

Parameters:
name -
Method Detail

equals

public boolean equals(java.lang.Object obj)
Overrides:
equals in class java.lang.Object

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

getName

public java.lang.String getName()
Get local name.

Returns:
name

setName

public void setName(java.lang.String name)
Set local name.

Parameters:
name - name

getPrefix

public java.lang.String getPrefix()
Get namespace prefix.

Returns:
prefix, null if unspecified, empty string if default namespace

setPrefix

public void setPrefix(java.lang.String prefix)
Set namespace prefix.

Parameters:
prefix - prefix, null if unspecified, empty string if default namespace

getUri

public java.lang.String getUri()
Get namespace URI.

Returns:
uri namespace uri, null if no-namespace namespace

setUri

public void setUri(java.lang.String uri)
Set namespace URI.

Parameters:
uri - namespace uri, null if no-namespace namespace

deserialize

public static QName deserialize(java.lang.String text,
                                IUnmarshallingContext ictx)
                         throws JiBXException
JiBX deserializer method. This is intended for use as a deserializer for instances of the class.

Parameters:
text - value text
ictx - unmarshalling context
Returns:
created class instance
Throws:
JiBXException - on error in unmarshalling

serialize

public static java.lang.String serialize(QName qname,
                                         IMarshallingContext ictx)
                                  throws JiBXException
JiBX serializer method. This is intended for use as a serializer for instances of the class. The namespace must be active in the output document at the point where this is called.

Parameters:
qname - value to be serialized
ictx - unmarshalling context
Returns:
created class instance
Throws:
JiBXException - on error in marshalling

deserializeList

public static QName[] deserializeList(java.lang.String text,
                                      IUnmarshallingContext ictx)
                               throws JiBXException
JiBX deserializer method. This is intended for use as a deserializer for a list made up of instances of the class.

Parameters:
text - value text
ictx - unmarshalling context
Returns:
array of instances
Throws:
JiBXException - on error in marshalling

serializeList

public static java.lang.String serializeList(QName[] qnames,
                                             IMarshallingContext ictx)
                                      throws JiBXException
JiBX serializer method. This is intended for use as a serializer for a list made up of instances of the class. The namespace must be active in the output document at the point where this is called.

Parameters:
qnames - array of names to be serialized
ictx - unmarshalling context
Returns:
generated text
Throws:
JiBXException - on error in marshalling


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/RecoverableException.html0000644000175000017500000002660611023035704026014 0ustar moellermoeller RecoverableException (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime
Class RecoverableException

java.lang.Object
  extended by java.lang.Throwable
      extended by java.lang.Exception
          extended by org.jibx.runtime.JiBXException
              extended by org.jibx.runtime.RecoverableException
All Implemented Interfaces:
java.io.Serializable
Direct Known Subclasses:
ValidationException

public class RecoverableException
extends JiBXException

Recoverable exception class. This is used for non-fatal errors in marshalling and unmarshalling.

Version:
1.0
Author:
Dennis M. Sosnoski
See Also:
Serialized Form

Constructor Summary
RecoverableException(java.lang.String msg)
          Constructor from message.
RecoverableException(java.lang.String msg, java.lang.Throwable root)
          Constructor from message and wrapped exception.
 
Method Summary
 
Methods inherited from class org.jibx.runtime.JiBXException
getRootCause, printStackTrace, printStackTrace, printStackTrace
 
Methods inherited from class java.lang.Throwable
fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, setStackTrace, toString
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

RecoverableException

public RecoverableException(java.lang.String msg)
Constructor from message.

Parameters:
msg - message describing the exception condition

RecoverableException

public RecoverableException(java.lang.String msg,
                            java.lang.Throwable root)
Constructor from message and wrapped exception.

Parameters:
msg - message describing the exception condition
root - exception which caused this exception


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/UnrecoverableException.html0000644000175000017500000002640511023035704026354 0ustar moellermoeller UnrecoverableException (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime
Class UnrecoverableException

java.lang.Object
  extended by java.lang.Throwable
      extended by java.lang.Exception
          extended by org.jibx.runtime.JiBXException
              extended by org.jibx.runtime.UnrecoverableException
All Implemented Interfaces:
java.io.Serializable

public class UnrecoverableException
extends JiBXException

Unrecoverable exception class. This is used for fatal errors in marshalling and unmarshalling.

Version:
1.0
Author:
Dennis M. Sosnoski
See Also:
Serialized Form

Constructor Summary
UnrecoverableException(java.lang.String msg)
          Constructor from message.
UnrecoverableException(java.lang.String msg, java.lang.Throwable root)
          Constructor from message and wrapped exception.
 
Method Summary
 
Methods inherited from class org.jibx.runtime.JiBXException
getRootCause, printStackTrace, printStackTrace, printStackTrace
 
Methods inherited from class java.lang.Throwable
fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, setStackTrace, toString
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

UnrecoverableException

public UnrecoverableException(java.lang.String msg)
Constructor from message.

Parameters:
msg - message describing the exception condition

UnrecoverableException

public UnrecoverableException(java.lang.String msg,
                              java.lang.Throwable root)
Constructor from message and wrapped exception.

Parameters:
msg - message describing the exception condition
root - exception which caused this exception


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/Utility.html0000644000175000017500000024634011023035704023346 0ustar moellermoeller Utility (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime
Class Utility

java.lang.Object
  extended by org.jibx.runtime.Utility

public abstract class Utility
extends java.lang.Object

Utility class supplying static methods. Date serialization is based on the algorithms published by Peter Baum (http://www.capecod.net/~pbaum). All date handling is done according to the W3C Schema specification, which uses a proleptic Gregorian calendar with no year 0. Note that this differs from the Java date handling, which uses a discontinuous Gregorian calendar.

Author:
Dennis M. Sosnoski

Field Summary
static int MINIMUM_GROWN_ARRAY_SIZE
          Minimum size for array returned by growArray(java.lang.Object).
 
Constructor Summary
Utility()
           
 
Method Summary
static java.util.List arrayListFactory()
          Factory method to create a java.util.ArrayList as the implementation of a java.util.List.
static byte[] deserializeBase64(java.lang.String text)
          Parse base64 data from text.
static char deserializeCharString(java.lang.String text)
          Deserialize char value from text as character value.
static java.util.Date deserializeDate(java.lang.String text)
          Deserialize date from text.
static java.util.Date deserializeDateTime(java.lang.String text)
          Deserialize date from general dateTime text.
static java.util.ArrayList deserializeList(java.lang.String text, IListItemDeserializer ideser)
          Convert whitespace-separated list of values.
static java.sql.Date deserializeSqlDate(java.lang.String text)
          Deserialize SQL date from text.
static java.sql.Time deserializeSqlTime(java.lang.String text)
          Deserialize time from text.
static java.sql.Timestamp deserializeTimestamp(java.lang.String text)
          Deserialize timestamp from general dateTime text.
static java.lang.String[] deserializeTokenList(java.lang.String text)
          Deserialize a list of whitespace-separated tokens into an array of strings.
static void encodeChunk(int base, byte[] byts, java.lang.StringBuffer buff)
          Encode a chunk of data to base64 encoding.
static int enumValue(java.lang.String target, java.lang.String[] enums, int[] vals)
          Find text value in enumeration.
static java.lang.Object growArray(java.lang.Object base)
          Grow array of arbitrary type.
static boolean ifBoolean(java.lang.String text)
          Check if a text string is a valid boolean representation.
static boolean ifByte(java.lang.String text)
          Check if a text string is a valid byte representation.
static boolean ifDate(java.lang.String text)
          Check if a text string follows the schema date format.
static boolean ifDateTime(java.lang.String text)
          Check if a text string follows the schema dateTime format.
static boolean ifDigits(java.lang.String text, int offset, int limit)
          Check if a portion of a text string consists of decimal digits.
static boolean ifFixedDigits(java.lang.String text, int offset, java.lang.String bound)
          Check if a portion of a text string is a bounded string of decimal digits.
static boolean ifInIntegerRange(java.lang.String text, int digitmax, java.lang.String abslimit)
          Check if a text string is a valid integer subtype representation.
static boolean ifInt(java.lang.String text)
          Check if a text string is a valid int representation.
static boolean ifInteger(java.lang.String text)
          Check if a text string is a valid integer representation.
static boolean ifLong(java.lang.String text)
          Check if a text string is a valid long representation.
static boolean ifShort(java.lang.String text)
          Check if a text string is a valid short representation.
static boolean ifTime(java.lang.String text)
          Check if a text string follows the schema dateTime format.
static boolean ifTimeSuffix(java.lang.String text, int offset)
          Check if a text string ends with a valid time suffix.
static boolean ifZoneSuffix(java.lang.String text, int offset)
          Check if a text string ends with a valid zone suffix.
static boolean isEqual(java.lang.Object a, java.lang.Object b)
          General object comparison method.
static byte[] parseBase64(java.lang.String text)
          Parse base64 data from text.
static boolean parseBoolean(java.lang.String text)
          Parse boolean value from text.
static byte parseByte(java.lang.String text)
          Parse byte value from text.
static char parseChar(java.lang.String text)
          Parse char value from text as unsigned 16-bit integer.
static char parseCharString(java.lang.String text)
          Parse char value from text as character value.
static long parseDate(java.lang.String text)
          Convert date text to Java date.
static long parseDateTime(java.lang.String text)
          Parse general dateTime value from text.
static double parseDouble(java.lang.String text)
          Parse double value from text.
static float parseFloat(java.lang.String text)
          Parse float value from text.
static int parseInt(java.lang.String text)
          Parse integer value from text.
static long parseLong(java.lang.String text)
          Parse long value from text.
static short parseShort(java.lang.String text)
          Parse short value from text.
static long parseTime(java.lang.String text, int start, int length)
          Parse general time value from text.
static long parseYear(java.lang.String text)
          Convert gYear text to Java date.
static long parseYearMonth(java.lang.String text)
          Convert gYearMonth text to Java date.
static java.lang.Object resizeArray(int size, java.lang.Object base)
          Resize array of arbitrary type.
static boolean safeEquals(java.lang.Object a, java.lang.Object b)
          Safe equals test.
static java.lang.String serializeBase64(byte[] byts)
          Serialize byte array to base64 text.
static java.lang.String serializeBoolean(boolean value)
          Serialize boolean value to text.
static java.lang.String serializeByte(byte value)
          Serialize byte value to text.
static java.lang.String serializeChar(char value)
          Serialize char value to text as unsigned 16-bit integer.
static java.lang.String serializeCharString(char value)
          Serialize char value to text as string of length one.
static java.lang.String serializeDate(java.util.Date date)
          Serialize date to general date text.
static java.lang.String serializeDate(long time)
          Serialize time to general date text.
static java.lang.String serializeDateTime(java.util.Date date)
          Serialize date to general dateTime text.
static java.lang.String serializeDateTime(long time)
          Serialize time to general dateTime text.
static java.lang.String serializeDateTime(long time, boolean zone)
          Serialize time to general dateTime text.
static java.lang.String serializeDouble(double value)
          Serialize double value to text.
static java.lang.String serializeFloat(float value)
          Serialize float value to text.
static java.lang.String serializeInt(int value)
          Serialize int value to text.
static java.lang.String serializeLong(long value)
          Serialize long value to text.
static java.lang.String serializeShort(short value)
          Serialize short value to text.
static java.lang.String serializeSqlDate(java.sql.Date date)
          Serialize SQL date to general date text.
static java.lang.String serializeSqlTime(java.sql.Time time)
          Serialize time to standard text.
static void serializeTime(int time, java.lang.StringBuffer buff)
          Serialize time to general time text in buffer.
static java.lang.String serializeTimestamp(java.sql.Timestamp stamp)
          Serialize timestamp to general dateTime text.
static java.lang.String serializeTokenList(java.lang.String[] tokens)
          Serialize an array of strings into a whitespace-separated token list.
static java.lang.String serializeYear(java.util.Date date)
          Serialize date to general gYear text.
static java.lang.String serializeYear(long time)
          Serialize time to general gYear text.
static java.lang.String serializeYearMonth(java.util.Date date)
          Serialize date to general gYearMonth text.
static java.lang.String serializeYearMonth(long time)
          Serialize time to general gYearMonth text.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

MINIMUM_GROWN_ARRAY_SIZE

public static final int MINIMUM_GROWN_ARRAY_SIZE
Minimum size for array returned by growArray(java.lang.Object).

See Also:
Constant Field Values
Constructor Detail

Utility

public Utility()
Method Detail

parseInt

public static int parseInt(java.lang.String text)
                    throws JiBXException
Parse integer value from text. Integer values are parsed with optional leading sign flag, followed by any number of digits.

Parameters:
text - text to be parsed
Returns:
converted integer value
Throws:
JiBXException - on parse error

serializeInt

public static java.lang.String serializeInt(int value)
Serialize int value to text.

Parameters:
value - int value to be serialized
Returns:
text representation of value

ifBoolean

public static boolean ifBoolean(java.lang.String text)
Check if a text string is a valid boolean representation.

Parameters:
text -
Returns:
true if valid boolean, false if not

parseLong

public static long parseLong(java.lang.String text)
                      throws JiBXException
Parse long value from text. Long values are parsed with optional leading sign flag, followed by any number of digits.

Parameters:
text - text to be parsed
Returns:
converted long value
Throws:
JiBXException - on parse error

serializeLong

public static java.lang.String serializeLong(long value)
Serialize long value to text.

Parameters:
value - long value to be serialized
Returns:
text representation of value

parseYear

public static long parseYear(java.lang.String text)
                      throws JiBXException
Convert gYear text to Java date. Date values are expected to be in W3C XML Schema standard format as CCYY, with optional leading sign.

Parameters:
text - text to be parsed
Returns:
start of year date as millisecond value from 1 C.E.
Throws:
JiBXException - on parse error

parseShort

public static short parseShort(java.lang.String text)
                        throws JiBXException
Parse short value from text. Short values are parsed with optional leading sign flag, followed by any number of digits.

Parameters:
text - text to be parsed
Returns:
converted short value
Throws:
JiBXException - on parse error

serializeShort

public static java.lang.String serializeShort(short value)
Serialize short value to text.

Parameters:
value - short value to be serialized
Returns:
text representation of value

parseByte

public static byte parseByte(java.lang.String text)
                      throws JiBXException
Parse byte value from text. Byte values are parsed with optional leading sign flag, followed by any number of digits.

Parameters:
text - text to be parsed
Returns:
converted byte value
Throws:
JiBXException - on parse error

serializeByte

public static java.lang.String serializeByte(byte value)
Serialize byte value to text.

Parameters:
value - byte value to be serialized
Returns:
text representation of value

parseBoolean

public static boolean parseBoolean(java.lang.String text)
                            throws JiBXException
Parse boolean value from text. Boolean values are parsed as either text "true" and "false", or "1" and "0" numeric equivalents.

Parameters:
text - text to be parsed
Returns:
converted boolean value
Throws:
JiBXException - on parse error

serializeBoolean

public static java.lang.String serializeBoolean(boolean value)
Serialize boolean value to text. This serializes the value using the text representation as "true" or "false".

Parameters:
value - boolean value to be serialized
Returns:
text representation of value

parseChar

public static char parseChar(java.lang.String text)
                      throws JiBXException
Parse char value from text as unsigned 16-bit integer. Char values are parsed with optional leading sign flag, followed by any number of digits.

Parameters:
text - text to be parsed
Returns:
converted char value
Throws:
JiBXException - on parse error

serializeChar

public static java.lang.String serializeChar(char value)
Serialize char value to text as unsigned 16-bit integer.

Parameters:
value - char value to be serialized
Returns:
text representation of value

parseCharString

public static char parseCharString(java.lang.String text)
                            throws JiBXException
Parse char value from text as character value. This requires that the string must be of length one.

Parameters:
text - text to be parsed
Returns:
converted char value
Throws:
JiBXException - on parse error

deserializeCharString

public static char deserializeCharString(java.lang.String text)
                                  throws JiBXException
Deserialize char value from text as character value. This requires that the string must be null or of length one.

Parameters:
text - text to be parsed (may be null)
Returns:
converted char value
Throws:
JiBXException - on parse error

serializeCharString

public static java.lang.String serializeCharString(char value)
Serialize char value to text as string of length one.

Parameters:
value - char value to be serialized
Returns:
text representation of value

parseFloat

public static float parseFloat(java.lang.String text)
                        throws JiBXException
Parse float value from text. This uses the W3C XML Schema format for floats, with the exception that it will accept "+NaN" and "-NaN" as valid formats. This is not in strict compliance with the specification, but is included for interoperability with other Java XML processing.

Parameters:
text - text to be parsed
Returns:
converted float value
Throws:
JiBXException - on parse error

serializeFloat

public static java.lang.String serializeFloat(float value)
Serialize float value to text.

Parameters:
value - float value to be serialized
Returns:
text representation of value

parseDouble

public static double parseDouble(java.lang.String text)
                          throws JiBXException
Parse double value from text. This uses the W3C XML Schema format for doubles, with the exception that it will accept "+NaN" and "-NaN" as valid formats. This is not in strict compliance with the specification, but is included for interoperability with other Java XML processing.

Parameters:
text - text to be parsed
Returns:
converted double value
Throws:
JiBXException - on parse error

serializeDouble

public static java.lang.String serializeDouble(double value)
Serialize double value to text.

Parameters:
value - double value to be serialized
Returns:
text representation of value

parseYearMonth

public static long parseYearMonth(java.lang.String text)
                           throws JiBXException
Convert gYearMonth text to Java date. Date values are expected to be in W3C XML Schema standard format as CCYY-MM, with optional leading sign.

Parameters:
text - text to be parsed
Returns:
start of month in year date as millisecond value
Throws:
JiBXException - on parse error

parseDate

public static long parseDate(java.lang.String text)
                      throws JiBXException
Convert date text to Java date. Date values are expected to be in W3C XML Schema standard format as CCYY-MM-DD, with optional leading sign and trailing time zone (though the time zone is ignored in this case). Note that the returned value is based on UTC, which matches the definition of java.util.Date but will typically not be the expected value if you're using a java.util.Calendar on the result. In this case you probably want to instead use deserializeSqlDate(String), which does adjust the value to match the local time zone.

Parameters:
text - text to be parsed
Returns:
start of day in month and year date as millisecond value
Throws:
JiBXException - on parse error

deserializeDate

public static java.util.Date deserializeDate(java.lang.String text)
                                      throws JiBXException
Deserialize date from text. Date values are expected to match W3C XML Schema standard format as CCYY-MM-DD, with optional leading sign and trailing time zone (though the time zone is ignored in this case). This method follows standard JiBX deserializer usage requirements by accepting a null input. Note that the returned value is based on UTC, which matches the definition of java.util.Date but will typically not be the expected value if you're using a java.util.Calendar on the result. In this case you probably want to instead use deserializeSqlDate(String), which does adjust the value to match the local time zone.

Parameters:
text - text to be parsed (may be null)
Returns:
converted date, or null if passed null input
Throws:
JiBXException - on parse error

deserializeSqlDate

public static java.sql.Date deserializeSqlDate(java.lang.String text)
                                        throws JiBXException
Deserialize SQL date from text. Date values are expected to match W3C XML Schema standard format as CCYY-MM-DD, with optional leading sign and trailing time zone (though the time zone is ignored in this case). This method follows standard JiBX deserializer usage requirements by accepting a null input.

Parameters:
text - text to be parsed (may be null)
Returns:
converted date, or null if passed null input
Throws:
JiBXException - on parse error

parseTime

public static long parseTime(java.lang.String text,
                             int start,
                             int length)
                      throws JiBXException
Parse general time value from text. Time values are expected to be in W3C XML Schema standard format as hh:mm:ss.fff, with optional leading sign and trailing time zone.

Parameters:
text - text to be parsed
start - offset of first character of time value
length - number of characters in time value
Returns:
converted time as millisecond value
Throws:
JiBXException - on parse error

parseDateTime

public static long parseDateTime(java.lang.String text)
                          throws JiBXException
Parse general dateTime value from text. Date values are expected to be in W3C XML Schema standard format as CCYY-MM-DDThh:mm:ss.fff, with optional leading sign and trailing time zone.

Parameters:
text - text to be parsed
Returns:
converted date as millisecond value
Throws:
JiBXException - on parse error

deserializeDateTime

public static java.util.Date deserializeDateTime(java.lang.String text)
                                          throws JiBXException
Deserialize date from general dateTime text. Date values are expected to match W3C XML Schema standard format as CCYY-MM-DDThh:mm:ss, with optional leading minus sign and trailing seconds decimal, as necessary. This method follows standard JiBX deserializer usage requirements by accepting a null input.

Parameters:
text - text to be parsed (may be null)
Returns:
converted date, or null if passed null input
Throws:
JiBXException - on parse error

deserializeTimestamp

public static java.sql.Timestamp deserializeTimestamp(java.lang.String text)
                                               throws JiBXException
Deserialize timestamp from general dateTime text. Timestamp values are represented in the same way as regular dates, but allow more precision in the fractional second value (down to nanoseconds). This method follows standard JiBX deserializer usage requirements by accepting a null input.

Parameters:
text - text to be parsed (may be null)
Returns:
converted timestamp, or null if passed null input
Throws:
JiBXException - on parse error

deserializeSqlTime

public static java.sql.Time deserializeSqlTime(java.lang.String text)
                                        throws JiBXException
Deserialize time from text. Time values obey the rules of the time portion of a dataTime value. This method follows standard JiBX deserializer usage requirements by accepting a null input.

Parameters:
text - text to be parsed (may be null)
Returns:
converted time, or null if passed null input
Throws:
JiBXException - on parse error

serializeYear

public static java.lang.String serializeYear(long time)
Serialize time to general gYear text. Date values are formatted in W3C XML Schema standard format as CCYY, with optional leading sign included if necessary.

Parameters:
time - time to be converted, as milliseconds from January 1, 1970
Returns:
converted gYear text

serializeYear

public static java.lang.String serializeYear(java.util.Date date)
Serialize date to general gYear text. Date values are formatted in W3C XML Schema standard format as CCYY, with optional leading sign included if necessary.

Parameters:
date - date to be converted
Returns:
converted gYear text

serializeYearMonth

public static java.lang.String serializeYearMonth(long time)
Serialize time to general gYearMonth text. Date values are formatted in W3C XML Schema standard format as CCYY-MM, with optional leading sign included if necessary.

Parameters:
time - time to be converted, as milliseconds from January 1, 1970
Returns:
converted gYearMonth text

serializeYearMonth

public static java.lang.String serializeYearMonth(java.util.Date date)
Serialize date to general gYearMonth text. Date values are formatted in W3C XML Schema standard format as CCYY-MM, with optional leading sign included if necessary.

Parameters:
date - date to be converted
Returns:
converted gYearMonth text

serializeDate

public static java.lang.String serializeDate(long time)
Serialize time to general date text. Date values are formatted in W3C XML Schema standard format as CCYY-MM-DD, with optional leading sign included if necessary.

Parameters:
time - time to be converted, as milliseconds from January 1, 1970
Returns:
converted date text

serializeDate

public static java.lang.String serializeDate(java.util.Date date)
Serialize date to general date text. Date values are formatted in W3C XML Schema standard format as CCYY-MM-DD, with optional leading sign included if necessary. Note that the conversion is based on UTC, which matches the definition of java.util.Date but may not match the value as serialized using java.util.Calendar (which assumes values are in the local time zone). To work with values in the local time zone you want to instead use serializeSqlDate(java.sql.Date).

Parameters:
date - date to be converted
Returns:
converted date text

serializeSqlDate

public static java.lang.String serializeSqlDate(java.sql.Date date)
Serialize SQL date to general date text. Date values are formatted in W3C XML Schema standard format as CCYY-MM-DD, with optional leading sign included if necessary. This interprets the date value with respect to the local time zone, as fits the definition of the java.sql.Date type.

Parameters:
date - date to be converted
Returns:
converted date text

serializeTime

public static void serializeTime(int time,
                                 java.lang.StringBuffer buff)
Serialize time to general time text in buffer. Time values are formatted in W3C XML Schema standard format as hh:mm:ss, with optional trailing seconds decimal, as necessary. This form uses a supplied buffer to support flexible use, including with dateTime combination values.

Parameters:
time - time to be converted, as milliseconds in day
buff - buffer for appending time text

serializeDateTime

public static java.lang.String serializeDateTime(long time,
                                                 boolean zone)
Serialize time to general dateTime text. Date values are formatted in W3C XML Schema standard format as CCYY-MM-DDThh:mm:ss, with optional leading sign and trailing seconds decimal, as necessary.

Parameters:
time - time to be converted, as milliseconds from January 1, 1970
zone - flag for trailing 'Z' to be appended to indicate UTC
Returns:
converted dateTime text

serializeDateTime

public static java.lang.String serializeDateTime(long time)
Serialize time to general dateTime text. This method is provided for backward compatibility. It generates the dateTime text without the trailing 'Z' to indicate UTC.

Parameters:
time - time to be converted, as milliseconds from January 1, 1970
Returns:
converted dateTime text

serializeDateTime

public static java.lang.String serializeDateTime(java.util.Date date)
Serialize date to general dateTime text. Date values are formatted in W3C XML Schema standard format as CCYY-MM-DDThh:mm:ssZ, with optional leading sign and trailing seconds decimal, as necessary.

Parameters:
date - date to be converted
Returns:
converted dateTime text

serializeTimestamp

public static java.lang.String serializeTimestamp(java.sql.Timestamp stamp)
Serialize timestamp to general dateTime text. Timestamp values are represented in the same way as regular dates, but allow more precision in the fractional second value (down to nanoseconds).

Parameters:
stamp - timestamp to be converted
Returns:
converted dateTime text

serializeSqlTime

public static java.lang.String serializeSqlTime(java.sql.Time time)
Serialize time to standard text. Time values are formatted in W3C XML Schema standard format as hh:mm:ss, with optional trailing seconds decimal, as necessary. The standard conversion does not append a time zone indication.

Parameters:
time - time to be converted
Returns:
converted time text

isEqual

public static boolean isEqual(java.lang.Object a,
                              java.lang.Object b)
General object comparison method. Don't know why Sun hasn't seen fit to include this somewhere, but at least it's easy to write (over and over again).

Parameters:
a - first object to be compared
b - second object to be compared
Returns:
true if both objects are null, or if a.equals(b); false otherwise

enumValue

public static int enumValue(java.lang.String target,
                            java.lang.String[] enums,
                            int[] vals)
                     throws JiBXException
Find text value in enumeration. This first does a binary search through an array of allowed text matches. If a separate array of corresponding values is supplied, the value at the matched position is returned; otherwise the match index is returned directly.

Parameters:
target - text to be found in enumeration
enums - ordered array of texts included in enumeration
vals - array of values to be returned for corresponding text match positions (position returned directly if this is null)
Returns:
enumeration value for target text
Throws:
JiBXException - if target text not found in enumeration

parseBase64

public static byte[] parseBase64(java.lang.String text)
                          throws JiBXException
Parse base64 data from text. This converts the base64 data into a byte array of the appopriate length. In keeping with the recommendations,

Parameters:
text - text to be parsed (may include extra characters)
Returns:
byte array of data
Throws:
JiBXException - if invalid character in base64 representation

deserializeBase64

public static byte[] deserializeBase64(java.lang.String text)
                                throws JiBXException
Parse base64 data from text. This converts the base64 data into a byte array of the appopriate length. In keeping with the recommendations,

Parameters:
text - text to be parsed (may be null, or include extra characters)
Returns:
byte array of data
Throws:
JiBXException - if invalid character in base64 representation

encodeChunk

public static void encodeChunk(int base,
                               byte[] byts,
                               java.lang.StringBuffer buff)
Encode a chunk of data to base64 encoding. Converts the next three bytes of data into four characters of text representation, using padding at the end of less than three bytes of data remain.

Parameters:
base - starting offset within byte array
byts - byte data array
buff - buffer for encoded text

serializeBase64

public static java.lang.String serializeBase64(byte[] byts)
Serialize byte array to base64 text. In keeping with the specification, this adds a line break every 76 characters in the encoded representation.

Parameters:
byts - byte data array
Returns:
base64 encoded text

resizeArray

public static java.lang.Object resizeArray(int size,
                                           java.lang.Object base)
Resize array of arbitrary type.

Parameters:
size - new aray size
base - array to be resized
Returns:
resized array, with all data to minimum of the two sizes copied

growArray

public static java.lang.Object growArray(java.lang.Object base)
Grow array of arbitrary type. The returned array is double the size of the original array, providing this is at least the defined minimum size.

Parameters:
base - array to be grown
Returns:
array of twice the size as original array, with all data copied

arrayListFactory

public static java.util.List arrayListFactory()
Factory method to create a java.util.ArrayList as the implementation of a java.util.List.

Returns:
new java.util.ArrayList

deserializeList

public static java.util.ArrayList deserializeList(java.lang.String text,
                                                  IListItemDeserializer ideser)
                                           throws JiBXException
Convert whitespace-separated list of values. This implements the whitespace skipping, calling the supplied item deserializer for handling each individual value.

Parameters:
text - value to be converted
ideser - list item deserializer
Returns:
list of deserialized items (null if input null, or if nonrecoverable error)
Throws:
JiBXException - if error in deserializing text

deserializeTokenList

public static java.lang.String[] deserializeTokenList(java.lang.String text)
                                               throws JiBXException
Deserialize a list of whitespace-separated tokens into an array of strings.

Parameters:
text - value text
Returns:
created class instance
Throws:
JiBXException - on error in marshalling

serializeTokenList

public static java.lang.String serializeTokenList(java.lang.String[] tokens)
Serialize an array of strings into a whitespace-separated token list.

Parameters:
tokens - array of strings to be serialized
Returns:
list text

safeEquals

public static boolean safeEquals(java.lang.Object a,
                                 java.lang.Object b)
Safe equals test. This does an equals comparison for objects which may be null.

Parameters:
a -
b -
Returns:
true if both null or a.equals(b), false otherwise

ifInIntegerRange

public static boolean ifInIntegerRange(java.lang.String text,
                                       int digitmax,
                                       java.lang.String abslimit)
Check if a text string is a valid integer subtype representation.

Parameters:
text - (non-null)
digitmax - maximum number of digits allowed
abslimit - largest absolute value allowed (null if no limit)
Returns:
true if valid representation, false if not

ifByte

public static boolean ifByte(java.lang.String text)
Check if a text string is a valid byte representation.

Parameters:
text - (non-null)
Returns:
true if valid byte, false if not

ifShort

public static boolean ifShort(java.lang.String text)
Check if a text string is a valid short representation.

Parameters:
text - (non-null)
Returns:
true if valid short, false if not

ifInt

public static boolean ifInt(java.lang.String text)
Check if a text string is a valid int representation.

Parameters:
text - (non-null)
Returns:
true if valid int, false if not

ifLong

public static boolean ifLong(java.lang.String text)
Check if a text string is a valid long representation.

Parameters:
text - (non-null)
Returns:
true if valid long, false if not

ifInteger

public static boolean ifInteger(java.lang.String text)
Check if a text string is a valid integer representation.

Parameters:
text - (non-null)
Returns:
true if valid integer, false if not

ifDigits

public static boolean ifDigits(java.lang.String text,
                               int offset,
                               int limit)
Check if a portion of a text string consists of decimal digits.

Parameters:
text -
offset - starting offset
limit - ending offset plus one (false return if the text length is less than this value)
Returns:
true if digits, false if not

ifFixedDigits

public static boolean ifFixedDigits(java.lang.String text,
                                    int offset,
                                    java.lang.String bound)
Check if a portion of a text string is a bounded string of decimal digits. This is used for checking fixed-length decimal fields with a maximum value.

Parameters:
text -
offset -
bound -
Returns:
true if bounded decimal, false if not

ifZoneSuffix

public static boolean ifZoneSuffix(java.lang.String text,
                                   int offset)
Check if a text string ends with a valid zone suffix. This accepts an empty suffix, the single letter 'Z', or an offset of +/-HH:MM.

Parameters:
text -
offset -
Returns:
true if valid suffix, false if not

ifDate

public static boolean ifDate(java.lang.String text)
Check if a text string follows the schema date format. This does not assure that the text string is actually a valid date representation, since it doesn't fully check the value ranges (such as the day number range for a particular month).

Parameters:
text - (non-null)
Returns:
true if date format, false if not

ifTimeSuffix

public static boolean ifTimeSuffix(java.lang.String text,
                                   int offset)
Check if a text string ends with a valid time suffix. This matches the format HH:MM:SS with optional training fractional seconds and optional time zone.

Parameters:
text -
offset -
Returns:
true if valid suffix, false if not

ifDateTime

public static boolean ifDateTime(java.lang.String text)
Check if a text string follows the schema dateTime format. This does not assure that the text string is actually a valid dateTime representation, since it doesn't fully check the value ranges (such as the day number range for a particular month).

Parameters:
text - (non-null)
Returns:
true if date format, false if not

ifTime

public static boolean ifTime(java.lang.String text)
Check if a text string follows the schema dateTime format. This does not assure that the text string is actually a valid dateTime representation, since it doesn't fully check the value ranges (such as the day number range for a particular month).

Parameters:
text - (non-null)
Returns:
true if date format, false if not


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/ValidationException.html0000644000175000017500000004335011023035704025650 0ustar moellermoeller ValidationException (JiBX Java data binding to XML - Version 1.1.6a)

org.jibx.runtime
Class ValidationException

java.lang.Object
  extended by java.lang.Throwable
      extended by java.lang.Exception
          extended by org.jibx.runtime.JiBXException
              extended by org.jibx.runtime.RecoverableException
                  extended by org.jibx.runtime.ValidationException
All Implemented Interfaces:
java.io.Serializable

public class ValidationException
extends RecoverableException

Validation exception class. This is used for marshalling and unmarshalling errors that relate to data content.

Version:
1.0
Author:
Dennis M. Sosnoski
See Also:
Serialized Form

Constructor Summary
ValidationException(java.lang.String msg)
          Constructor from message.
ValidationException(java.lang.String msg, java.lang.Object obj)
          Constructor from message and validation object.
ValidationException(java.lang.String msg, java.lang.Object obj, IUnmarshallingContext ctx)
          Constructor from message, validation object, and unmarshalling context.
ValidationException(java.lang.String msg, java.lang.Throwable root)
          Constructor from message and wrapped exception.
ValidationException(java.lang.String msg, java.lang.Throwable root, java.lang.Object obj)
          Constructor from message, wrapped exception, and validation object.
 
Method Summary
static java.lang.String addDescription(java.lang.String msg, java.lang.Object obj)
          Add description information for a validation object to message.
static java.lang.String describe(java.lang.Object obj)
          Get description information for a validation object.
 java.lang.String getMessage()
          Get exception description.
 
Methods inherited from class org.jibx.runtime.JiBXException
getRootCause, printStackTrace, printStackTrace, printStackTrace
 
Methods inherited from class java.lang.Throwable
fillInStackTrace, getCause, getLocalizedMessage, getStackTrace, initCause, setStackTrace, toString
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ValidationException

public ValidationException(java.lang.String msg)
Constructor from message.

Parameters:
msg - message describing the exception condition

ValidationException

public ValidationException(java.lang.String msg,
                           java.lang.Throwable root)
Constructor from message and wrapped exception.

Parameters:
msg - message describing the exception condition
root - exception which caused this exception

ValidationException

public ValidationException(java.lang.String msg,
                           java.lang.Object obj)
Constructor from message and validation object.

Parameters:
msg - message describing the exception condition
obj - source object for validation error

ValidationException

public ValidationException(java.lang.String msg,
                           java.lang.Throwable root,
                           java.lang.Object obj)
Constructor from message, wrapped exception, and validation object.

Parameters:
msg - message describing the exception condition
root - exception which caused this exception
obj - source object for validation error

ValidationException

public ValidationException(java.lang.String msg,
                           java.lang.Object obj,
                           IUnmarshallingContext ctx)
Constructor from message, validation object, and unmarshalling context.

Parameters:
msg - message describing the exception condition
obj - source object for validation error
ctx - context used for unmarshalling
Method Detail

describe

public static java.lang.String describe(java.lang.Object obj)
Get description information for a validation object. For an unmarshalled object with source references available this returns the source position description. Otherwise, it returns the result of a Object.toString() method call.

Parameters:
obj - source object for validation error
Returns:
object description text

addDescription

public static java.lang.String addDescription(java.lang.String msg,
                                              java.lang.Object obj)
Add description information for a validation object to message. This just appends the result of a describe(java.lang.Object) call to the supplied message, with some appropriate formatting.

Parameters:
msg - base message text
obj - source object for validation error
Returns:
message with object description appended

getMessage

public java.lang.String getMessage()
Get exception description.

Overrides:
getMessage in class java.lang.Throwable
Returns:
message describing the exception condition


Project Web Site

libjibx-java-1.1.6a/docs/api/org/jibx/runtime/package-frame.html0000644000175000017500000001030711023035704024356 0ustar moellermoeller org.jibx.runtime (JiBX Java data binding to XML - Version 1.1.6a) org.jibx.runtime
Interfaces 
IAbstractMarshaller
IAliasable
IBindingFactory
ICharacterEscaper
IExtensibleWriter
IListItemDeserializer
IMarshallable
IMarshaller
IMarshallingContext
ITrackSource
IUnmarshallable
IUnmarshaller
IUnmarshallingContext
IXMLReader
IXMLWriter
Classes 
BindingDirectory
EnumSet
EnumSet.EnumItem
IntStack
QName
Utility
Exceptions 
JiBXConstrainedParseException
JiBXException
JiBXParseException
RecoverableException
UnrecoverableException
ValidationException
libjibx-java-1.1.6a/docs/api/org/jibx/runtime/package-summary.html0000644000175000017500000003051311023035704024762 0ustar moellermoeller org.jibx.runtime (JiBX Java data binding to XML - Version 1.1.6a)

Package org.jibx.runtime

User interface to JiBX data binding framework runtime.

See:
          Description

Interface Summary
IAbstractMarshaller Abstract base marshaller interface definition.
IAliasable Nameable extension interface definition.
IBindingFactory Binding factory interface definition.
ICharacterEscaper Escaper for character data to be written to output document.
IExtensibleWriter Extensible version of standard XML writer interface.
IListItemDeserializer Schema list component deserializer interface.
IMarshallable Marshallable interface definition.
IMarshaller Marshaller interface definition.
IMarshallingContext User interface for serializer to XML.
ITrackSource Unmarshalling source tracking interface.
IUnmarshallable Unmarshallable interface definition.
IUnmarshaller Unmarshaller interface definition.
IUnmarshallingContext User interface for deserializer from XML.
IXMLReader XML reader interface used for input of unmarshalled document.
IXMLWriter XML writer interface used for output of marshalled document.
 

Class Summary
BindingDirectory Abstract class with static methods to find the binding factory corresponding to a binding name.
EnumSet Named value set support class.
EnumSet.EnumItem Enumeration pair information.
IntStack Growable int stack with type specific access methods.
QName Representation of a qualified name.
Utility Utility class supplying static methods.
 

Exception Summary
JiBXConstrainedParseException Thrown when a "constrained" parsing exception is encountered (e.g.
JiBXException Binding exception class.
JiBXParseException JiBX parsing exception class.
RecoverableException Recoverable exception class.
UnrecoverableException Unrecoverable exception class.
ValidationException Validation exception class.
 

Package org.jibx.runtime Description

User interface to JiBX data binding framework runtime. These are the classes and interfaces generally intended for direct use by end users, and are considered published APIs which will remain stable.



Project Web Site

libjibx-java-1.1.6a/docs/api/resources/0000755000175000017500000000000011023035704017610 5ustar moellermoellerlibjibx-java-1.1.6a/docs/api/resources/inherit.gif0000644000175000017500000000007111023035704021737 0ustar moellermoellerGIF89a€ÿÿÿ,„ ¡½®DršjñÔ;߀Q@–¦…N;libjibx-java-1.1.6a/docs/api/allclasses-frame.html0000644000175000017500000002514611023035704021712 0ustar moellermoeller All Classes (JiBX Java data binding to XML - Version 1.1.6a) All Classes
ArrayRangeIterator
BackFillArray
BackFillHolder
BackFillReference
BindingDirectory
BindingSelector
DiscardElementMapper
DiscardListMapper
DocumentComparator
DocumentModelMapperBase
Dom4JElementMapper
Dom4JListMapper
Dom4JMapperBase
DomElementMapper
DomFragmentMapper
DomListMapper
DomMapperBase
EnumSet
EnumSet.EnumItem
GenericXMLWriter
HashMapperStringToComplex
HashMapperStringToSchemaType
IAbstractMarshaller
IAliasable
IBindingFactory
ICharacterEscaper
IChunkedOutput
IdDefRefMapperBase
IdRefMapperBase
IExtensibleWriter
IListItemDeserializer
IMarshallable
IMarshaller
IMarshallingContext
InputStreamWrapper
IntStack
ISO88591Escaper
ISO88591StreamWriter
ITrackSource
ITrackSourceImpl
IUnmarshallable
IUnmarshaller
IUnmarshallingContext
IXMLReader
IXMLReaderFactory
IXMLWriter
JDOMWriter
JiBXConstrainedParseException
JiBXException
JiBXParseException
MarshallingContext
ObjectArrayMapper
QName
QName
RecoverableException
RuntimeSupport
SparseArrayIterator
StAXReaderFactory
StAXReaderWrapper
StAXWriter
StreamWriterBase
StringArray
StringIntHashMap
TestMultRoundtrip
TestRoundtrip
TypedArrayMapper
UnmarshallingContext
UnrecoverableException
USASCIIEscaper
UTF8Escaper
UTF8StreamWriter
Utility
ValidationException
XMLPullReaderFactory
XMLWriterBase
XMLWriterNamespaceBase
libjibx-java-1.1.6a/docs/api/allclasses-noframe.html0000644000175000017500000002216611023035704022246 0ustar moellermoeller All Classes (JiBX Java data binding to XML - Version 1.1.6a) All Classes
ArrayRangeIterator
BackFillArray
BackFillHolder
BackFillReference
BindingDirectory
BindingSelector
DiscardElementMapper
DiscardListMapper
DocumentComparator
DocumentModelMapperBase
Dom4JElementMapper
Dom4JListMapper
Dom4JMapperBase
DomElementMapper
DomFragmentMapper
DomListMapper
DomMapperBase
EnumSet
EnumSet.EnumItem
GenericXMLWriter
HashMapperStringToComplex
HashMapperStringToSchemaType
IAbstractMarshaller
IAliasable
IBindingFactory
ICharacterEscaper
IChunkedOutput
IdDefRefMapperBase
IdRefMapperBase
IExtensibleWriter
IListItemDeserializer
IMarshallable
IMarshaller
IMarshallingContext
InputStreamWrapper
IntStack
ISO88591Escaper
ISO88591StreamWriter
ITrackSource
ITrackSourceImpl
IUnmarshallable
IUnmarshaller
IUnmarshallingContext
IXMLReader
IXMLReaderFactory
IXMLWriter
JDOMWriter
JiBXConstrainedParseException
JiBXException
JiBXParseException
MarshallingContext
ObjectArrayMapper
QName
QName
RecoverableException
RuntimeSupport
SparseArrayIterator
StAXReaderFactory
StAXReaderWrapper
StAXWriter
StreamWriterBase
StringArray
StringIntHashMap
TestMultRoundtrip
TestRoundtrip
TypedArrayMapper
UnmarshallingContext
UnrecoverableException
USASCIIEscaper
UTF8Escaper
UTF8StreamWriter
Utility
ValidationException
XMLPullReaderFactory
XMLWriterBase
XMLWriterNamespaceBase
libjibx-java-1.1.6a/docs/api/constant-values.html0000644000175000017500000006066011023035704021622 0ustar moellermoeller Constant Field Values (JiBX Java data binding to XML - Version 1.1.6a)

Constant Field Values


Contents
org.jibx.*

org.jibx.extras.DocumentModelMapperBase
public static final java.lang.String XML_NAMESPACE "http://www.w3.org/XML/1998/namespace"
public static final java.lang.String XMLNS_NAMESPACE "http://www.w3.org/2000/xmlns/"

org.jibx.extras.HashMapperStringToSchemaType
public static final int BOOLEAN_TYPE 0
public static final int BYTE_TYPE 1
public static final int BYTERRAY_TYPE 10
public static final int DATE_TYPE 12
public static final int DATETIME_TYPE 7
public static final int DECIMAL_TYPE 8
public static final int DOUBLE_TYPE 2
public static final int FLOAT_TYPE 3
public static final int INT_TYPE 4
public static final int INTEGER_TYPE 9
public static final int LONG_TYPE 5
public static final int SHORT_TYPE 6
public static final int STRING_TYPE 11
public static final int TIME_TYPE 13

org.jibx.runtime.BindingDirectory
public static final java.lang.String BINDINGFACTORY_PREFIX "JiBX_"
public static final java.lang.String BINDINGFACTORY_SUFFIX "Factory"
public static final java.lang.String BINDINGLIST_NAME "JiBX_bindingList"
public static final java.lang.String FACTORY_INSTMETHOD "getInstance"

org.jibx.runtime.EnumSet
public static final int VALUE_LIMIT 512

org.jibx.runtime.IBindingFactory
public static final int COMPATIBLE_VERSION_MASK -65536
public static final java.lang.String CURRENT_VERSION_NAME "@distrib@"
public static final int CURRENT_VERSION_NUMBER 131072

org.jibx.runtime.IntStack
public static final int DEFAULT_SIZE 8

org.jibx.runtime.IXMLReader
public static final int CDSECT 5
public static final int COMMENT 9
public static final int DOCDECL 10
public static final int END_DOCUMENT 1
public static final int END_TAG 3
public static final int ENTITY_REF 6
public static final int IGNORABLE_WHITESPACE 7
public static final int PROCESSING_INSTRUCTION 8
public static final int START_DOCUMENT 0
public static final int START_TAG 2
public static final int TEXT 4

org.jibx.runtime.Utility
public static final int MINIMUM_GROWN_ARRAY_SIZE 16

org.jibx.runtime.impl.InputStreamWrapper
public static final int DEFAULT_BUFFER_SIZE 4096

org.jibx.runtime.impl.MarshallingContext
public static final java.lang.String XML_NAMESPACE "http://www.w3.org/XML/1998/namespace"

org.jibx.runtime.impl.StreamWriterBase
public static final int DEFAULT_BUFFER_SIZE 4096

org.jibx.runtime.impl.StringArray
public static final int DEFAULT_SIZE 8

org.jibx.runtime.impl.StringIntHashMap
public static final int DEFAULT_NOT_FOUND -2147483648



Project Web Site

libjibx-java-1.1.6a/docs/api/deprecated-list.html0000644000175000017500000001044211023035704021536 0ustar moellermoeller Deprecated List (JiBX Java data binding to XML - Version 1.1.6a)

Deprecated API


Contents


Project Web Site

libjibx-java-1.1.6a/docs/api/index.html0000644000175000017500000000262411023035704017577 0ustar moellermoeller JiBX Java data binding to XML - Version 1.1.6a <H2> Frame Alert</H2> <P> This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. <BR> Link to<A HREF="overview-summary.html">Non-frame version.</A> libjibx-java-1.1.6a/docs/api/overview-frame.html0000644000175000017500000000236511023035704021430 0ustar moellermoeller Overview List (JiBX Java data binding to XML - Version 1.1.6a)
All Classes

Packages
org.jibx.extras
org.jibx.runtime
org.jibx.runtime.impl

  libjibx-java-1.1.6a/docs/api/overview-summary.html0000644000175000017500000001212111023035704022022 0ustar moellermoeller Overview (JiBX Java data binding to XML - Version 1.1.6a)



JiBX Java data binding to XML - Version 1.1.6a

Packages
org.jibx.extras Extra goodies for working with JiBX.
org.jibx.runtime User interface to JiBX data binding framework runtime.
org.jibx.runtime.impl JiBX data binding framework runtime implementation package.

 



Project Web Site

libjibx-java-1.1.6a/docs/api/package-list0000644000175000017500000000006711023035704020070 0ustar moellermoellerorg.jibx.extras org.jibx.runtime org.jibx.runtime.impl libjibx-java-1.1.6a/docs/api/serialized-form.html0000644000175000017500000002167711023035704021575 0ustar moellermoeller Serialized Form (JiBX Java data binding to XML - Version 1.1.6a)

Serialized Form


Package org.jibx.runtime

Class org.jibx.runtime.JiBXConstrainedParseException extends JiBXParseException implements Serializable

Serialized Fields

m_allowableValues

java.lang.String[] m_allowableValues

Class org.jibx.runtime.JiBXException extends java.lang.Exception implements Serializable

Serialized Fields

m_rootCause

java.lang.Throwable m_rootCause
Exception that caused this exception.

Class org.jibx.runtime.JiBXParseException extends JiBXException implements Serializable

Serialized Fields

m_value

java.lang.String m_value

m_namespace

java.lang.String m_namespace

m_tagName

java.lang.String m_tagName

Class org.jibx.runtime.RecoverableException extends JiBXException implements Serializable

Class org.jibx.runtime.UnrecoverableException extends JiBXException implements Serializable

Class org.jibx.runtime.ValidationException extends RecoverableException implements Serializable



Project Web Site

libjibx-java-1.1.6a/docs/api/stylesheet.css0000644000175000017500000000255711023035704020512 0ustar moellermoeller/* Javadoc style sheet */ /* Define colors, fonts and other style attributes here to override the defaults */ /* Page background color */ body { background-color: #FFFFFF; color:#000000 } /* Headings */ h1 { font-size: 145% } /* Table colors */ .TableHeadingColor { background: #CCCCFF; color:#000000 } /* Dark mauve */ .TableSubHeadingColor { background: #EEEEFF; color:#000000 } /* Light mauve */ .TableRowColor { background: #FFFFFF; color:#000000 } /* White */ /* Font used in left-hand frame lists */ .FrameTitleFont { font-size: 100%; font-family: Helvetica, Arial, sans-serif; color:#000000 } .FrameHeadingFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 } .FrameItemFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 } /* Navigation bar fonts and colors */ .NavBarCell1 { background-color:#EEEEFF; color:#000000} /* Light mauve */ .NavBarCell1Rev { background-color:#00008B; color:#FFFFFF} /* Dark Blue */ .NavBarFont1 { font-family: Arial, Helvetica, sans-serif; color:#000000;color:#000000;} .NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;color:#FFFFFF;} .NavBarCell2 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000} .NavBarCell3 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000} libjibx-java-1.1.6a/docs/axis2/0000755000175000017500000000000011021525454016057 5ustar moellermoellerlibjibx-java-1.1.6a/docs/axis2/index.html0000644000175000017500000003676011017733600020067 0ustar moellermoeller Using JiBX in Axis2

JiBX in Axis2

JiBX has been supported for use in the Axis2 web services framework since Axis2 1.0. The basic information on using JiBX is included in the Axis2 download, but as the Axis2 documentation is going through continual changes the information on JiBX can tend to get lost. This page is intended as a primary source of information for anyone using JiBX with Axis2, including some of the related JiBX tools which are not included in the Axis2 distribution.

One good source of information and examples is JiBX primary developer Dennis Sosnoski's Axis2 Data Binding article on IBM developerWorks. This article includes examples demonstrating how to implement the same web service using Axis2's custom ADB binding framework, JiBX, and XMLBeans. It also includes some discussion of the strengths and weaknesses of the different approachs.

There's also a wiki page discussing an earlier version of the same service example. The wiki discussion includes a separate page with details of the Axis2 SOAP Fault handling, a particularly confusing aspect of working with Axis2.

JiBX is currently (as of the 1.1.x releases) most beneficial when working with existing Java code which implements the functionality which is to be exposed as a web service. The Jibx2Wsdl tool (discussed below) is especially useful for that purpose, even for developers using Axis2 with other data binding frameworks.

If you're instead developing a web service starting from WSDL you can still use JiBX, but you need to do more work "manually" since the Axis2 WSDL2Java tool expects you to have an existing binding and classes for JiBX. The Xsd2Jibx tool can help you to get set up for this, if you first extract the schema definitions from your WSDL (and in the case of a "wrapped" style WSDL you only need to extract the schema definitions for the actual data components, not the wrapper elements). But Xsd2Jibx is very limited, and will not handle complex schema definitions correctly. The JiBX 1.2 development includes a replacement for Xsd2Jibx which handles a much wider range of schema constructs.

For a discussion of the issues involved in either starting from code or starting from WSDL when developing a web service you can see Dennis Sosnoski's "Code First" Web Services Reconsidered.

Jibx2Wsdl

Jibx2Wsdl is a far-superior alternative to the Java2WSDL tool included in the Axis2 distribution. It includes support for Java 5 enumerations and typed collections, and also provides an extensive customization mechanism that allows you to "tune" the schemas and WSDL generated from your Java code.

Jibx2Wsdl is officially part of the JiBX 1.2 development, and full documentation will be available with the first 1.2 beta release. For now, the best source of information on Jibx2Wsdl is the "Code First" Web Services Reconsidered article and the wiki page.


libjibx-java-1.1.6a/docs/details/0000755000175000017500000000000011021525454016456 5ustar moellermoellerlibjibx-java-1.1.6a/docs/details/binding-attributes.html0000644000175000017500000006366011017733600023154 0ustar moellermoeller JiBX: Attribute Groups

Attribute Groups

  • style - controls simple value style (as attribute or element)
  • name - defines XML attribute or element name
  • object - provides options for Java object handling
  • property - controls how a value is accessed from a Java object
  • structure - define ordering and reuse of lists of child binding components
  • string - define conversions between Java property values and text representations

All these attributes are optional unless stated otherwise.

style

value-style

Defines the binding style for simple values. The allowed values are "element" (values as child elements with only text content) or "attribute" (values as attributes).

name

name

Local (unqualified) name of element or attribute.

ns

Gives the namespace URI for the element or attribute name. If this is not used the default value is the innermost default namespace for this type, if any.

object

create-type

Gives the type to be used when creating instances of the object during unmarshalling. This gives an alternative to the factory attribute when all you want to do is use a specific implementation for an interface or an abstract class.

factory

Defines a factory method for constructing new instances of an object type. This applies to bindings for unmarshalling only, and if supplied it must be in the form of a fully-qualified class and method name (e.g., "com.sosnoski.jibx.ObjectBuilderFactory.newInstance" specifies the newInstance() method of the ObjectBuilderFactory class in the com.sosnoski.jibx package) for a static method returning an instance of the bound class. As with the other methods in this group (pre-set, post-set, and pre-get), three different method signatures are allowed: No arguments; a single argument of type java.lang.Object, in which case the owning object is passed in the method call; or a single argument of type org.jibx.runtime.IUnmarshallingContext, in which case the unmarshalling context is passed in the method call (this allows access to the entire stack of objects being unmarshalled). If not supplied, instances of the bound class are constructed using a null argument constructor.

marshaller

Defines a custom serialization handler class, as the fully-qualified name of a class implementing the org.jibx.runtime.Marshaller interface. This is only allowed with an output binding; it is required if an unmarshaller is defined for an input-output binding.

nillable

Allows the W3C XML Schema attribute xsi:nil="true" to be used on an element in instance documents to indicate that the corresponding object is null. The default value is "false", set this attribute "true" to enable xsi:nil support. The marshalling behavior when the attribute is "true" and the object reference is null depends on whether the binding defines the corresponding element as optional or required. If the element is optional it will simply be left out of the marshalled document. If the element is required it will be written with an xsi:nil="true" attribute. This attribute can only be used with objects that are bound to an element name.

post-set

Defines a bound class method called on instances of the class after they are populated with data from unmarshalling. This can be used for any postprocessing or validation required by the class. Three different method signatures are supported, as described in the factory attribute text.

pre-get

Defines a bound class method called on new instances of the class before they are marshalled. This can be used for any preprocessing or validation required by the class. Three different method signatures are supported, as described in the factory attribute text.

pre-set

Defines a bound class method called on new instances of the class before they are populated with data from unmarshalling. This can be used for any initialization or special handling required before a constructed instance is used. Three different method signatures are supported, as described in the factory attribute text.

unmarshaller

Defines a custom deserialization handler class, as the fully-qualified name of a class implementing the org.jibx.runtime.Unmarshaller interface. This attribute cannot be used in combination with the factory, or pre-set attributes. It is only allowed with an input binding; it is required if a marshaller is defined for an input-output binding.

property

field

Gives the name of the field within the containing class that supplies the property value. This is required except for auto-generated identity fields, for values from a collection, or when both get-method (for output bindings) and set-method (for input bindings) definitions are supplied.

get-method

Defines a "get" method for retrieving the property value from an instance of the containing class. This is the name of a no-argument method returning a value (primitive or object). If a get-method is defined for an object value represented by some form of structure in the binding (not just a simple value, in other words), the method will be used to retrieve the current instance of an object when unmarshalling. This follows the principle of JiBX reusing existing objects for unmarshalled data where possible. If you return a null value during unmarshalling, JiBX will create a new instance of the object for unmarshalled data.

set-method

Defines a "set" method for storing the property value in an instance of the containing class. This is the name of a method with return type void, taking a single value (primitive or object) as a parameter. If both get-method and set-method are defined, the set-method parameter type must be the same as the get-method return value.

test-method

Defines a method for checking if an optional property is present in an instance of the containing class. This is the name of a no-argument method with return type boolean, which must return true if the property is present and false if it is not present. This is only allowed in combination with usage="optional". If not specified, a simple == comparison is used with primitive types to check for a value different from the default, and a equals() comparison for object types with non-null defaults

type

Supplies the fully-qualified class name for the property value. This can be used to force a more specific type for a property value defined by the field definition or access method signature as either a base class or an interface.

usage

Defines the usage requirement for this property. The value can either be "required" (property is always present, the default if not specified) or "optional" (property is optional).

structure

allow-repeats

Determines whether repeated elements within an unordered group should be allowed. The default is "false", meaning that if a bound element is repeated the runtime code will throw an exception. Setting this "true" means repeated elements will be processed the same as in pre-1.1 versions of JiBX. A "true" value for this attribute is only allowed when all child definitions are elements (no attributes or text), and requires ordered="false". It cannot be used in combination with choice="true". This attribute is ignored on a collection element.

choice

Defines whether child binding definitions represent a choice between alternatives, with only one allowed (value "true") or a set of possibilities of which one or more may be present ("false", the default). A "true" value for this attribute is only allowed when all child definitions are elements (no attributes or text), and requires ordered="false". It cannot be used in combination with allow-repeats="true" or flexible="true". This attribute is ignored on a collection element.

flexible

Defines whether unknown elements within an unordered group should be ignored. The default is "false", meaning that if an unknown element (one not allowed by the binding) is found during unmarshalling the runtime code will throw an exception. Setting this "true" means unknown elements will be ignored (along with all their content). A "true" value for this attribute is only allowed when all child definitions are elements (no attributes or text), and requires ordered="false". It cannot be used in combination with choice="true". This attribute is ignored on a collection element.

label

Gives a label allowing the list of child components to be referenced from elsewhere in the binding definition. Note that this technique has been deprecated, and will not be supported in JiBX 2.0. In most cases an abstract mapping can be used as a replacement.

ordered

Defines whether child binding definitions represent an ordered list (value "true", the default) or an unordered set ("false"). When this is set "true", each child value component must define either an element or an attribute name (attributes are always unordered, so the ordered setting of the grouping has no effect on attributes). value elements defining text values (style="text") are not allowed as direct children of groups with ordered="false".

using

References a list of child components defined elsewhere in the binding definition. The value must match the label value used on a mapping, structure, or collection element somewhere in the binding definition. The child binding components of the referenced element are used as the content of the element making the reference. The object types associated with the binding definition element making the reference and that defining the reference must match, and the order established by the element that defined the reference determines whether the child definitions are considered as ordered or unordered. The element with this attribute must not have any child definitions. Note that this technique has been deprecated, and will not be supported in JiBX 2.0. In most cases an abstract mapping can be used as a replacement.

string

default

Gives the default value for a conversion. This is only allowed for optional properties. If not specified, the default for primitive types is the same as the member variable initial state defined by the JLS, and for object types is "null".

enum-value-method

Specifies a method to be used to obtain the XML text representation for a Java 5 enum class. If specified, this value method is used for both marshalling and unmarshalling instances of the enum class (in the unmarshalling case, by checking each instance of the enum in turn until one is found matching the input text). If not specified, the toString() method of the enum class is instead used for marshalling, and the static valueOf enum method is used for unmarshalling, both of which use the enum value name directly.

deserializer

Defines a custom deserialization handler method, as the fully-qualified name of a static method with the signature Target xxxx(String text), where xxxx is the method name and Target is the type of the property (primitive or object type). Note that when a custom deserialization handler method is used for an optional object type with no default value, that method will be called with a null argument when the corresponding value is missing in the input document. It's up to the handler method to handle this case appropriately (by returning either a null or an object of the expected type).

serializer

Defines a custom serialization handler method, as the fully-qualified name of a static method with the signature String xxxx(Target value), where xxxx is the method name and Target is the type of the property (primitive or object type).


libjibx-java-1.1.6a/docs/details/binding-element.html0000644000175000017500000004026711017733600022415 0ustar moellermoeller JiBX: <binding> Element

<binding> Element Definition

The binding element is the root of a binding definition. This defines characteristics for the entire binding. It supports several unique attributes as well as two common attribute groups:

Attributes

add-constructors

When this optional attribute is present with value "true", the binding compiler will add a default constructor to a bound class when necessary to make it usable in the binding. Default constructors are needed when there's no unmarshaller or factory method for an object reference. Constructors can only be added to classes which are available as class files for modification during the binding compile.

direction

Binding direction, which must be "input" (unmarshalling only), "output" (marshalling only), or "both" (both marshalling and unmarshalling, the default if this attribute is not given).

force-classes

When this optional attribute is present with value "true", it forces generation of marshaller/unmarshaller classes for top-level abstract mappings which are not extended by other mappings. Normally these classes would not be generated, since such mappings are never used directly within the binding. The classes can be used at runtime by custom code, though, as the equivalent of type mappings. The default value is "false".

forwards

Controls whether forward references to ids are supported when unmarshalling, at the cost of some (minor) additional overhead and code size. If supplied the value must be "true" (forwards supported) or "false" (ids must be defined before they are referenced). The default is "true".

name

The name for this binding. The supplied name must consist only of characters which are valid as part of a Java identifier (so no spaces, periods, etc.). The default if this attribute is not used is to take the name of the file containing the definition document, with any file extension suffix stripped off and invalid characters replaced by underscores (so a binding definition in a file named "binding-2.xml" has the default name "binding_2").

package

Java package used for created binding factory class. By default this is the same package as the class associated with the first mapping child element. If present, the value must be a Java package name (as in "org.jibx.runtime").

track-source

When this optional attribute is present with value "true", the binding compiler adds code to each bound object class to implement the org.jibx.runtime.ITrackSource interface and store source position information when instance objects are unmarshalled. This interface lets you retrieve information about the source document and specific line and column location of the document component associated with that object. The default value is "false".

style

A value-style attribute present on the binding element sets a default for all contained elements. See the style attribute group description for usage details.


libjibx-java-1.1.6a/docs/details/binding-overview.html0000644000175000017500000003207011017733600022623 0ustar moellermoeller JiBX: JiBX Binding Definition

Binding Definition Overview

A binding definition is an XML document that defines the rules for converting your Java objects to and from XML. The JiBX binding compiler takes one or more binding definitions as input, along with your actual class files. It compiles the binding definitions into Java byte code that it adds to the class files. Once the class files have been enhanced with this compiled binding definition code, they're ready to work with the JiBX runtime.

You can provide as many binding definitions as you want for the same set of classes (or for different classes). The binding compiler automatically generates code for all the bindings you provide. It even reuses added code between bindings, whereever possible. However, each time you marshal or unmarshal an XML document you'll first need to decide which particular binding you're going to use for this document. Each binding is independent of the others, so you can't switch between bindings within a single document.


libjibx-java-1.1.6a/docs/details/collection-element.html0000644000175000017500000005152711017733600023137 0ustar moellermoeller JiBX: <collection> Element

<collection> Element Definition

The collection element defines the binding for a Java collection. Many variations of list-like collections are supported, including user-defined collection types. Arrays are also supported. Maps are not supported directly in JiBX 1.0 (but see the JiBX extras description for custom marshaller/unmarshaller classes which can help with this types of structures).

Collections may consist of a single type of object or multiple types. The simplest form of collection just uses a single mapped item type. This may either be defined using the item-type attribute, in which case no child definitions are necessary, or implied by the absence of child definitions (equivalent to using item-type="java.lang.Object").

Collections consisting of multiple types are defined using multiple child definitions within the collection element. These may be ordered (where the different types occur in a particular sequence) or unordered (where all are mixed together), as determined by the ordered attribute of the structure attribute group. Child definitions within collections must define elements rather than text or attribute values (though the elements defined may themselves have attributes and/or text values). Child definitions within collections are always treated as optional, with any number of occurrances of the corresponding element allowed (zero or more).

The collection element supports several unique attributes along with several common attribute groups, listed below. The unique attributes are used for special types of data access to the collection. These are all optional, and have defaults for common collection types, including java.util.Vector and java.util.ArrayList (as well as subclasses of these classes) along with collection classes implementing the java.util.Collection interface. You can use these attributes to select methods of the containing object for accessing data within a collection (with no property definition for the actual collection object).

One potential issue in working with collections is that JiBX generally needs a way to create an instance of the collection when unmarshalling. If the collection is defined using an interface such as java.util.List you'll need to either define a concrete implementation type with a no-argument constructor to be used for the collection (using the type attribute of the property attribute group) or use the factory attribute of the object attribute group to define a factory method to call when an instance of the collection is needed. The org.jibx.runtime.Utility.arrayListFactory is an example of such a factory method, which can be used directly to supply instances of the java.util.ArrayList class.

As with all object-valued properties, if the collection property is already initialized when JiBX begins unmarshalling the existing collection instance will be used to hold the unmarshalled items of the collection. JiBX does not clear items from the existing collection before unmarshalling, so if you want to reuse existing data structures with a collection you should clear the collection yourself before unmarshalling (one easy way of doing this is with a pre-set method on the containing object class). This is only necessary when reusing objects, not when unmarshalling to a new instance of an object (where any collections created by the object constructor will initially be empty in any case). If an element name is used with an optional collection, and that name is missing from an input XML document, the collection property will be set to null. If you don't want the collection property to ever be set to null, use a wrapper structure element for the optional element name around the collection element.

Attributes

load-method

This is an indexed load item method for the collection. If used, the value must be the name of a member method of the collection class taking a single int argument and returning the indexed item value from the collection (which must be an instance of java.lang.Object unless the item-type attribute is used to specify the type of items in the collection). This attribute is only allowed in combination with size-method. The generated code will use the specified method for loading values from the collection when marshalling.

size-method

This is an item count method for the collection. If used, the value must be the name of a no-argument member method of the collection class returning an int value giving the number of items in the collection. This attribute is only allowed in combination with load-method. The generated code will use the specified method for finding the count of items present in the collection when marshalling.

store-method

This is an indexed store item method for the collection. If used, the value must be the name of a member method of the collection class taking an int argument and a java.lang.Object argument (or the type given by the item-type attribute, if present), with no return value. The generated code will use the specified method for storing values to the collection when unmarshalling..

add-method

This is an append item method for the collection. If used, the value must be the name of a member method of the collection class taking a single java.lang.Object argument (or the type given by the item-type attribute, if present). Any return value from the method is ignored. The generated code will use the specified method to append values to the collection when unmarshalling..

iter-method

This is an iterator method for the collection. If used, the value must be the name of a member method of the collection class taking no arguments and returning a java.lang.Iterator or java.lang.Enumeration object for the items in the collection. The generated code will use the specified method to iterate through the values in the collection when marshalling.

item-type

If this attribute is used it must be the fully-qualified class name for items contained in the collection. If the specified type is an interface or a class with subclasses any of the implementations of that type can be used in the collection. The default is java.lang.Object, allowing any type of objects to be present in the collection.

style

A value-style attribute present on the collection element sets a default for all contained elements. See the style attribute group description for usage details.

name

Attributes from the name group define an element mapped to the collection as a whole. The element defined in this way will be a wrapper for the XML representations of all item values from the collection. The name is optional unless a marshaller or unmarshaller is defined (see the object attribute group, below), in which case it's forbidden. See the name attribute group description for usage details.

object

Attributes from the object group define the way the collection object is created and used in marshalling and unmarshalling. See the object attribute group description for usage details.

property

Attributes from the property group define a property value, including how it is accessed and whether it is optional or required. See the property attribute group description for usage details.

structure

Attributes from the structure group define ordering and reuse of child binding components. See the structure attribute group description for usage details.


libjibx-java-1.1.6a/docs/details/contexts.html0000644000175000017500000003650011017733600021216 0ustar moellermoeller JiBX: Nesting and Contexts

Nesting and Context

The binding definition itself uses a nested structure that's partially recursive - some of the element types in the binding definition can contain other instances of the same element as children. This nesting is an important part of how the binding definition describes the rules for converting your objects. It's used both for showing the relationships between your Java and XML structures (see the Structure mapping discussion), and for establishing the scope of definitions.

Each level of nesting establishes a definition context for shared information (such as conversion formats, namespaces, and type mappings). Definitions from an enclosing context apply automatically in all nested contexts unless they are overridden within that context. To understand how this operates, think of the nested elements as similar to curly brace blocks in Java - definitions from a block are only visible within that block (including any inner blocks it encloses). This isn't an exact comparison - for one thing, inner blocks can override definitions from an enclosing block - but it's close.

Here's a partial example from a binding definition to illustrate how context works:

<binding>
  <mapping name="base-table" 
      class="org.jibx.demo.TimeTableBean">
    <format name="flightTime" type="int"
      serializer="org.jibx.demo.Utils.minuteToTime"
      deserializer="org.jibx.demo.Utils.timeToMinute">
    <mapping class="org.jibx.demo.FlightBean" ... >
      ...
      <value name="depart" field="m_departure"
        format="flightTime"/>
      <value name="arrive" field="m_arrival"
        format="flightTime"/>
    </mapping>
    <mapping name="roundtrip" ... >
      <structure name="outbound" field="m_outbound"
        item-type="org.jibx.demo.FlightBean"/>
      <structure name="inbound" field="m_inbound"
        item-type="org.jibx.demo.FlightBean"/>
    </mapping>
    ...
  </mapping>
  <mapping name="split-table" 
      class="org.jibx.demo.SplitTableBean">
  ...

The first mapping element (with name="base-table") establishes a context. The contained format and mapping elements are definitions that apply within the scope of that context. In this case the format definition (with name="flightTime") is used within the first mapping definition, and the second mapping definition in turn uses the first one (by specifying an item-type that matches the class name).

These child definitions from the first mapping element are not available for use within the last mapping element. This element is at the same nesting level as the first one. If you wanted to make the child definitions from the first mapping available for use in the last one, you could do so by moving these definitions up to a higher level, making them children of the binding element.


libjibx-java-1.1.6a/docs/details/conversions.html0000644000175000017500000004642711017733600021730 0ustar moellermoeller JiBX: Value Conversions

Value Conversions

JiBX defines a default set of formats used for converting property values to and from text strings. These format definitions are effectively defined in a context outside the root binding element of the binding definition. Most of the conversions are based on the W3C XML Schema datatype definitions, as described in the following table.

Default Formats

Type Format Label Conversion
byte byte.default

Converts primitive byte values to and from the schema byte representation (integer values in the range of -128 to +127).

char char.default

Converts primitive char values to and from the schema unsigned short representation (integer values in the range of 0 to 65535). Although this is the default for char primitives, JiBX also supports an alternate conversion as single-character text values using the named format char.string (allowing the conversion to be applied on a specific value) and a pair of conversion methods. To make the single-character text conversion the default in your binding, just specify the format as a child of the root binding element as follows:

<format type="char"
  serializer="org.jibx.runtime.Utility.serializeCharString"
  deserializer="org.jibx.runtime.Utility.deserializeCharString"/>
double double.default

Converts primitive double values to and from the schema double representation (IEEE double-precision floating point).

float float.default

Converts primitive float values to and from the schema float representation (IEEE single-precision floating point).

int int.default

Converts primitive int values to and from the schema int representation (integer values in normal 32-bit signed value range).

long long.default

Converts primitive long values to and from the schema long representation (integer values in normal 64-bit signed value range).

short short.default

Converts primitive short values to and from the schema short representation (integer values in normal 16-bit signed value range).

boolean boolean.default

Converts primitive boolean values to and from the schema boolean representation ("true" or "false", or equivalently "1" or "0" - the former values are always used when converting to text).

byte[] byte-array.default

Converts byte arrays to and from the schema base64 representation to allow arbitrary binary data.

java.util.Date Date.default

Converts instances of java.util.Date to and from the schema dateTime representation (a text representation like "2000-03-21T01:33:00", with optional trailing fractional seconds, and difference from UTC). Since schema doesn't have any concept equivalent to Java time zones, this conversion always serializes times as UTC values (identified by a trailing "Z"). When deserializing times which do not include a "Z" or offset from UTC it treats the values as UTC.

java.sql.Date SqlDate.default

Converts instances of java.sql.Date to and from the schema date representation (a text representation like "2000-03-21").

java.sql.Time SqlTime.default

Converts instances of java.sql.Time to and from the schema time representation (a text representation like "01:33:00" with optional trailing fractional seconds).

java.sql.Timestamp Timestamp.default

Converts instances of java.sql.Timestamp to and from the schema dateTime representation, just as the Date:default conversion does for java.util.Date instances. The only difference is that using the timestamp value permits greater precision in the time value represented, down to the nanosecond level.

java.lang.String String.default

Identity converter for java.lang.String instances.

java.lang.Object Object.default

Converts any object to a string representation by using the toString() method, and converts a string to any object by using a constructor that takes a single argument of type java.lang.String. If an optional value is not present when unmarshalling a null value is stored to the object reference. This is the default format conversion used for any object type without a more specific conversion defined.

These are the conversions you'll get unless you specify otherwise. If you use a format element to override one of these defaults you'll still be able to access the default by using the defined label for that format. Defining your own custom serialization formats is easy, basically requiring only a pair of static methods to convert to and from String representations. See the format element description for details of defining your own conversions.

The org.jibx.runtime.Utility class defines a variety of conversion methods, including those used to implement the standard conversions listed in the above table as well as some alternate date-related conversion methods. The methods serializeDate and deserializeDate may be of special interest for developers working with xs:date values, since they support conversion of xs:date format to and from java.util.Date instances (the equivalent to the default conversion used for java.sql.Date instances).

The default conversions listed above don't always match conversions used by other frameworks for working with XML in Java. In particular, many other frameworks convert the various schema date-related types to and from java.util.Calendar instances. This is an incorrect interpretation of the schema types, which do not support the associated time zone which is a necessary part of Calendar instances. JiBX by default takes the approach of converting to and from Java objects which are the nearest possible equivalents to the schema types. You can always change these defaults for your own purposes using the techniques described above.

In addition to the conversions listed in the table, JiBX 1.1 and later support automatic conversion of Java 5 enum values to and from strings.


libjibx-java-1.1.6a/docs/details/format-element.html0000644000175000017500000003524111017733600022267 0ustar moellermoeller JiBX: <format> Element

<format> Element Definition

The format element defines a conversion between some primitive or object type and the text representation used for that type. Any type with a format defined can be used with simple element (one with no child elements), text, or attribute values. During unmarshalling, the text content of the element or attribute is passed to the deserializer defined for that format, which returns a value of the appropriate type. During marshalling, the typed value is passed to the serializer for that format, which returns a text string used as the element content or attribute value.

This flexibility for conversion handling is also available without using a format element definition, by directly specifying the serializer and/or deserializer in a value definition. The advantage to using a format definition is that it can be easily reused. There are two ways of doing this. When a format element does not have a label attribute, it automatically becomes the default for values of the associated type. When a format element is defined with a label, that label can be used to reference it as needed.

The format element supports a pair of unique attributes along with one common attribute group, listed below.

Attributes

label

The label for this format. If supplied, the format can only be used when referenced by label. If not supplied, this format automatically becomes the default for handling the specified type within the context. As of JiBX 1.1, the value of this attribute is interpreted as namespace qualified.

type

This required attribute gives the fully qualified class name or the primitive type for the values handled by this format. For instance, for a format handling instances of the java.util.Date class this would be 'java.util.Date', and for one handling int primitive values it would be 'int'.

string

Attributes from the string group set the default conversion of a value type for all contained elements. See the string attribute group description for usage details.

format elements are subject to the restriction that labels must be unique, and unlabeled formats with the same type cannot be defined in the same context.


libjibx-java-1.1.6a/docs/details/include-element.html0000644000175000017500000003366111017733600022426 0ustar moellermoeller JiBX: <include> Element

<include> Element Definition

The include element allows modular binding definitions by specifying another binding to be read as part of the current binding definition.

Top-level format and mapping definitions from the included binding are treated the same as if they'd been present in the original binding, as children of the binding element. namespace definitions, on the other hand, apply downward only: Top-level namespace definitions in the original binding apply to the included binding just as if they were directly present, but namespace definitions within the included binding do not apply back to the original binding. This makes it easy to structure bindings corresponding to different namespaces, and to combine these bindings without namespace conflicts.

include elements can also be used within included bindings, and circular references are allowed.

The include element uses only one unique attribute.

Attributes

path

The path for the binding definition to be included. This may be an absolute path, or a path relative to the including binding definition. Any type of URL reference can be used for the path. If you're using file paths on Windows and want to specify the absolute path (such as C:/some/directory/file.xml) you'll need to convert this into a valid URL reference by using either '/' or 'file:///' as a prefix (so /C:/some/directory/file.xml or file:///C:/some/directory/file.xml).

If the included binding element has a direction attribute the value must match the direction of the original binding; no other attributes are allowed on the included binding element.


libjibx-java-1.1.6a/docs/details/mapping-element.html0000644000175000017500000004532211017733600022433 0ustar moellermoeller JiBX: <mapping> Element

<mapping> Element Definition

The mapping element defines the binding used for an object type (instances of a particular class) within a context. A normal (or "concrete") mapping links an object type to a particular XML element. This linkage means that only one concrete mapping can be active (in context) for a particular Java class at a time, and the element names used for concrete mappings within a context must be unique. Only concrete mappings defined as children of the root binding element can represent the root object for a marshalling or the root element for an unmarshalling.

An abstract mapping defines a reusable XML representation for an object type, with the actual element name defined at the point of use. This makes abstract mappings roughly equivalent to schema named complex types. Unlike schema complex types, it's also possible to use abstract mappings without an element name (so that the mapping defines a grouping of attributes and or elements that are incorporated directly into the structure at the point of reference). Multiple abstract mappings can be defined for the same object type within a context, as long as different type-names are used for the mappings.

Both abstract and normal mappings can be used as bases for extension mappings. Extension mappings provide an easy way of handling polymorphism in your Java code, using the equivalent of schema substitution groups. A base mapping can be extended by one or more other mappings using the extends attribute, and the extension mappings can then be used anywhere the base mapping is referenced within the binding. When marshalling, JiBX interprets the actual type of the object to find the appropriate extension mapping. When unmarshalling, JiBX uses the actual element name found to identify the extension mapping.

Although an abstract mapping can be used as the base for extension mappings, an abstract mapping can only extend another mapping if the abstract extension is in turn extended. This restriction is required because element names are used to identify the particular extension mapping used when unmarshalling, and abstract mappings have no fixed element name. It means that abstract mappings can never be the "leaf" mappings in an extension structure.

Mappings may use ordered child definitions (where the XML components bound to the child definitions occur in a particular sequence) or unordered definitions (where the XML components can occur in any order), as determined by the ordered attribute of the structure attribute group. In the case of unordered mappings only optional components are allowed as child definitions.

Mapping definitions can be nested, so that the enclosed mapping definitions are only effective within the scope of the enclosing definition. This approach is fine for abstract mappings, but if used for non-abstract mappings it can have a negative impact on performance. JiBX 2.0 will prohibit nesting of non-abstract mappings, so it's best to structure your binding definitions with all non-abstract mappings as direct children of the root element.

The mapping element supports three unique attributes along with several common attribute groups, listed below.

Attributes

class

This required attribute gives the fully qualified class name for the object type handled by this mapping.

abstract

Optional flag for an abstract mapping that can be used directly as a type mapping. This must be "true" (abstract mapping) or "false" (normal mapping, the default if the attribute is not specified).

extends

Optional attribute giving the fully qualified class name of a base mapping for which this mapping can be substituted. Generally this is used with mappings for classes which are subclasses of the class handled by the base mapping, but it can be also be used with unrelated classes. The base mapping may itself extend another mapping, in which case the new extensions also become substitutes for that "inherited" base mapping. Extension is based on element names and does not necessarily indicate any kind of inheritance in terms of the Java class structures (though it is often used for the purpose of representing in XML a tree of subclasses which can be used as instances of a base type).

type-name

Optional attribute giving the type name for an abstract mapping. This allows alternative abstract mappings to be defined for the same class, and referenced by name with a map-as attribute on a structure element (or looked up at runtime when force-classes="true" is used on the binding element). As of JiBX 1.1, the value of this attribute is interpreted as namespace qualified.

style

A value-style attribute present on the mapping element sets a default for all contained elements. See the style attribute group description for usage details.

name

Attributes from the name group define an element mapped to the object type handled by this mapping. The name is required on non-abstract mappings unless a custom marshaller/unmarshaller is supplied (see the object attribute group, below), in which case it is optional. Abstract mappings should not define a name, but are currently allowed to do so with a warning for support of legacy bindings. See the name attribute group description for name usage details.

object

Attributes from the object group define the way object instances are created and used in marshalling and unmarshalling. See the object attribute group description for usage details.

structure

Attributes from the structure group define ordering and reuse of child binding components. See the structure attribute group description for usage details.

mapping elements are subject to the restriction that multiple mappings with the same object type cannot be defined in the same context.


libjibx-java-1.1.6a/docs/details/namespace-element.html0000644000175000017500000003632511017733600022737 0ustar moellermoeller JiBX: <namespace> Element

<namespace> Element Definition

The namespace element defines a namespace used within the bound XML documents. Each namespace used within the documents must be defined using one of these elements. When marshalling to XML, the namespace definitions included in the binding are automatically added to the appropriate XML elements.

This works differently depending upon whether the namespace definition is in the binding element context, or that of a mapping element. If the namespace is the child of a mapping element it will be defined on the element associated with that mapping when it is marshalled. Only mapping elements that define an element name are allowed to have namespace child elements for this reason. If the namespace is a child of the binding element, it applies to all the top-level mappings defined within that binding. The effect is the same as if the namespace were instead present as a child element of every top-level mapping element.

Besides defining a namespace for the XML documents, the namespace element can also make that namespace the default for elements and/or attributes within the context of the definition. This is only a shortcut - a namespace URI can always be defined directly for each element or attribute, and a direct definition will always override the default defined by a namespace element. However, using a default namespace definition allows easy handling of common XML document structures. A default namespace for element names applies to the containing mapping element name as well as child element names.

The namespace element uses three unique attributes, but none of the common attribute groups.

Attributes

uri

This required attribute is the namespace URI being defined.

default

Optionally gives the default usage of this namespace, which must be "none" (only used where specified, the default if this attribute is not given), "elements" (default for elements only), "attributes" (default for attributes only), or "all" (both elements and attributes use this namespace by default).

prefix

This is the prefix to map to the namespace when marshalling. It is ignored when unmarshalling, since the namespace URI is used directly to identify elements and attributes. This attribute is required for namespaces in an output binding unless default="elements" is specified.

namespace elements are subject to the restrictions that namespaces with the same prefix cannot be defined in the same context, and no two namespaces can be defined with conflicting defaults within the same context (i.e., two namespaces each having either default="elements" or default="all", or two namespaces each having default="attributes" or default="all").


libjibx-java-1.1.6a/docs/details/structure-element.html0000644000175000017500000005211111017733600023032 0ustar moellermoeller JiBX: <structure> Element

<structure> Element Definition

The structure element defines a structure component of a binding. This can take any of several forms. The first is where the structure is a complex XML element (one with attributes or child elements) that's linked to an object property of the containing object type. This is the most common form of usage. It's essentially equivalent to an "in-line" mapping definition. This variation applies when both an element name and an object property are defined by the structure element (or when the property is implied rather than defined directly, as when the structure element is the child of a collection element).

Variations of the structure element that define either an element name or a linked property value (but not both) are used for structure mapping. Each of these variations works differently depending on whether the structure element is empty (does not have any child elements). The full set of structure mapping variations is shown in the table below.

Structure Mapping Variations

Defines Empty? What it Does

Element

yes

Adds an empty element to the XML when marshalling (unless optional, in which case it's ignored when marshalling), discards and ignores the named element when unmarshalling.

no

Structure mapping that defines a complex element (one with attributes or child elements) in the XML representation with no corresponding object. Child attribute or element values are in this case linked directly to properties of the containing object type.

Property

yes

References the mapping for the property object type, which must be defined within some enclosing context of this definition. If the property type exactly matches a defined mapping, that mapping will be used; if not, the mapping will be determined by the element name when unmarshalling or the actual object type when marshalling. This allows generic java.lang.Object references to be used, as long as a mapping is defined for the actual type of the item. The only restriction is that if this type of reference is defined as optional it must be the last element in a list (otherwise, if the expected element is missing in a document being unmarshalled the next sibling element will be used instead).

no

Structure mapping that defines an object with no corresponding XML element. Attributes or child elements defined within this structure are part of the XML element defined by the containing structure or mapping. Optional structures with no associated element name are subject to some unmarshalling limitations. If the structure defines both attribute and element values, the presence or absence of the structure is determined based only on the attributes - if one of the defined attributes is present on the containing element the structure is considered to be present, otherwise it is not and the property will be set to null.

Structures with child definitions may be ordered (where the XML components bound to the child definitions occur in a particular sequence) or unordered (where the XML components can occur in any order), as determined by the ordered attribute of the structure attribute group. In the case of unordered structures only optional components are allowed as child definitions.

A structure element can be used without either an element name or a linked property value when you just want to say that some child elements make up an unordered set:

  <mapping name="alphas" class="AlphabetBean">
    <value name="a" field="a"/>
    <structure ordered="false">
      <value name="b" field="b" usage="optional"/>
      <value name="c" field="c" usage="optional"/>
    </structure>
    <value name="d" field="d"/>
  </mapping>

The above binding definition unmarshals both the element sequences (a, b, c, d) and (a, c, b, d). Since the unordered elements are (and have to be) optional, though, the binding will also allow (a, b, d), (a, c, d), and just (a, d). The unordered elements may also be duplicated without an error, so (a, c, b, c, d) would also be accepted (with repeated values stored in order, so that the final value for a property would be that of the last instance of the element). When marshalling an unordered group the sequence used in the binding definition will always be followed (so (a, c, b, d) would marshal as (a, b, c, d)). If you need to control the order of elements (or preserve the order, when starting from an unmarshalled document) you'll need to instead work with objects that can be held in a collection.

When a structure element is used with an object property JiBX will reuse an existing instance of the object during unmarshalling. The way this works is that JiBX only creates a new instance of the object for use in unmarshalling if the property value is null. If an element name is used with an optional structure, and that name is missing from an input XML document, the object property for that structure will always be set to null (since the representation is missing from the XML). If you don't want the property to ever be set to null, use a wrapper structure element for the optional element name around the actual structure definition.

The structure element supports one unique attribute along with several common attribute groups, listed below. The unique attribute is used to reference mapping definitions for objects. It may only be used when a property is supplied (or implied).

Attributes

map-as

This optional attribute can be used to override the type (or type name) to be used for a mapping reference. If used as a type, the value of this attribute must be the fully-qualified class name for the mapped type, and the specified class must be assignment compatible with the actual property type (so you can't map a java.lang.Integer field as a java.lang.String, for instance, but can map a field typed java.lang.Object as a java.lang.String). If used as a type name, the name must match the type name defined by an abstract mapping. A structure element with no property reference can use the map-as attribute to invoke a specified mapping for the this object (where the mapping must be assignment compatible with the this object type). As of JiBX 1.1, the value of this attribute is interpreted as namespace qualified.

style

A value-style attribute present on the structure element sets a default for all contained elements. See the style attribute group description for usage details.

name

Attributes from the name group define an element mapped to the structure definition as a whole. The element defined in this way will be a wrapper for the XML representations of all child values defined by the structure. The name is optional unless this structure defines a mapping reference to the property type (property definition with no children, see the third row of the table at the top of this page), in which case it's forbidden. See the name attribute group description for usage details.

object

Attributes from the object group define the way object instances are created and used in marshalling and unmarshalling. See the object attribute group description for usage details.

property

Attributes from the property group define a property value, including how it is accessed and whether it is optional or required. See the property attribute group description for usage details.

structure

Attributes from the structure group define ordering and reuse of child binding components. See the structure attribute group description for usage details.


libjibx-java-1.1.6a/docs/details/value-element.html0000644000175000017500000004301611017733600022112 0ustar moellermoeller JiBX: <value> Element

<value> Element Definition

The value element defines a simple value, one that is bound to either an attribute or a simple element (one with no attributes or child elements). This always makes use of a format definition. If no format is explicitly named in the value definition the default format for the property type is used (see Conversions for information on default formats.

The value element supports four unique attributes along with several common attribute groups, listed below.

Attributes

constant

This optional attribute is used to define a constant value. If present, none of the attributes from the string group and only the usage attribute from the property group can be present, the format attribute is not allowed, and the only ident value allowed is "none". If the value is defined as required it must be present and match the constant on input; if optional, it is checked for on input and if found must match the constant. The constant value is always included in the output when marshalling.

format

If present, this gives the name of the format to be used for converting the property value to and from text. The named format must be defined in an enclosing context to the value element. As of JiBX 1.1, the value of this attribute is interpreted as namespace qualified.

ident

This optional attribute is used to designate a property value as an identifier type. Possible values are "none" (not an identifier type, the default if this attribute is not used), "def" (value is a unique identifier for the containing object), and "ref" (value is an object with an identifier property and the identifier property of the object is used in the XML representation rather than the actual object). Only one property with ident="def" is allowed for a mapping; if one is present the property must be a String, and must be defined directly as a child of the mapping element; it is not allowed as a child of a structure element.

Values with ident value "ref" cannot be used directly as children of a collection; they can be used if there is a wrapper object for the referenced object, as defined by a structure element with an object type defined. References contained directly in a collection can be handled by using custom marshaller/unmarshallers - see the JiBX extras description for a base custom marshaller/unmarshaller you can extend for this purpose, along with another custom marshaller/unmarshaller you can extend to include the full representation of an object only at the point of first use (with a reference if the same object is later used again).

style

A style attribute present on the value element determines the type of XML component used to represent the value. The allowed values are "attribute", "element", "text", and "cdata". The last two choices are subject to some restrictions. They cannot be used directly within a collection definition (in other words, for value elements that have a collection element as their parent), and also cannot be used for direct children of an unordered mapping or structure. Even within an ordered mapping or structure, multiple value elements using these choices must be separated by a required value using the "element" choice.

The default handling for this attribute is also special. If it isn't specified, it defaults to the value set by the innermost containing element with a value-style attribute, which will always be either the "attribute" or "element" choice. See the style attribute group description for details of this type of usage.

name

Attributes from the name group supply the element or attribute name for this value. At least the name attribute is required if the XML component type used for this value is an attribute or element, and forbidden otherwise. See the name attribute group description for usage details.

property

Attributes from the property group define a property value, including how it is accessed and whether it is optional or required. A property value is required for value elements unless they're contained within a collection element. In this case the value is always an item from the collection, so the only attributes from this group allowed are the "usage" and "type" attributes. See the property attribute group description for usage details.

string

Attributes from the string group set the conversion handling of this value. See the string attribute group description for usage details.


libjibx-java-1.1.6a/docs/details/xml-summary.html0000644000175000017500000004537011017733600021647 0ustar moellermoeller JiBX: Definition XML Summary

Schema

Both a sample XML Schema definition (binding.xsd) and a sample DTD (binding.dtd) for JiBX binding definitions are included in the /docs directory of the JiBX distribution. These grammars will normally be kept current, and if you find any errors please report them so they can be fixed. However, the HTML documentation supplied on these pages is the definitive description of the binding definition format.

Element Summary

Below is a quick summary of the types of elements used by the binding definition, along with their functions and possible child elements. Most child elements are optional and used only where needed. All are ordered, except where "any combination" is specified.

Elements

binding

The root element of the binding definition, with optional attributes for binding name and global settings.

Children: namespace, format, include, mapping (at least 1 mapping required)

namespace

Namespace declaration that defines a namespace URI and associated prefix (with the prefix used for marshalling).

Children: none

format

Format definition for converting simple values to and from text. This is needed only if you want to use nonstandard conversions.

Children: none

include

Include another binding definition within this binding definition.

Children: none

mapping

Defines how objects of a particular class are converted to and from XML. Each mapping defines a rule that applies within a particular context, associating a particular element name with objects of a particular Java class. The mapping definition may be global or local. It's possible to redefine a mapping within the context of another mapping, for instance. Abstract mappings can be used to define handling for base classes which can be extended by mappings for subclasses. Abstract mappings can also be used to define a reusable binding structure for a Java class, which doesn't need to correspond to a particular element name or even to a single element of the XML representation.

Children: namespace, format, mapping, followed by any combination of value, structure, and collection elements

value

Gives the conversion handling for a simple value (a primitive, or an object type with format supplied to convert it to and from text. The XML representation can be an attribute or simple element, or text or CDATA content within a sequence of elements.

Children: none

structure

Structure component of binding, which can represent a Java object, an XML element, or both. The usual case is where this represents both a Java object and an XML element linked to that object. A structure mapping is defined when either the object or the XML element is missing from the definition. The child elements of the structure may be ordered or unordered.

Children: any combination of value, structure, and collection elements

collection

Representation of a collection object. The collection may define the name for an element wrapper that contains the XML representations of the items in the collection. If different types of items are included in the collection the items may be ordered or unordered.

Children: any combination of value, structure, and collection elements

Attribute Group Summary

The binding definition elements define a number of different attributes. In many cases these attributes are grouped and the attribute groups apply to more than one element type. The table below gives a list of the basic attribute groups and the elements that support them. The elements also have unique attributes in addition to these common groups. In almost all cases the attributes are optional and are used to qualify or add details to the basic function of the element.

Attribute Groups

style

This group consists of only one attribute, the value-style attribute. It's used to control whether a simple value is expressed in XML as an element or an attribute.

Used with: binding, mapping, structure, and collection

name

The name attributes define an XML element or attribute name.

Used with: mapping, value, structure, and collection

object

The object group of attributes provide handling options for Java objects. These include factory, pre- and post-unmarshal, and pre-marshal methods for objects.

Used with: mapping, structure, and collection

structure

The structure attributes deal with the children of a binding component. They include control over whether children are ordered or unordered, as well as linkages that allow portions of a binding definition to be referenced and reused within the binding.

Used with: value, structure, and collection

property

The property attributes control how a value is accessed from a Java object. These include field and/or get/set/test method names.

Used with: value, structure, and collection

string

The string attributes define conversions between Java primitive or object values and text representations.

Used with: format and value


libjibx-java-1.1.6a/docs/eclipse/0000755000175000017500000000000011021525454016455 5ustar moellermoellerlibjibx-java-1.1.6a/docs/eclipse/images/0000755000175000017500000000000011021525454017722 5ustar moellermoellerlibjibx-java-1.1.6a/docs/eclipse/images/Task_1.png0000644000175000017500000004762211017733664021576 0ustar moellermoeller‰PNG  IHDR}—(Ís pHYs::—9ÛÂtIMEØ .¤O° IDATxÚìÝw|uþÇñÏlz„$@%!!+("¶;ëyŠg°aÏ¢gAT,'zö³w@ýXPPl@5@:)[g~L2,Û²=¼ž<`væ;ß™ýNyïwvvW‘}ÝÏlarûì{œƺ$î7ÝF¡ô5BWOÜúú:ZÐÑ쩯s8T? ÇĘºtMë 5\wãÍÎÑk„n]]-ÛÐ556ÖÕÖ~ýõ2?Ë}ô“)&9%¥#ÔаgˆL9õ4=z÷^gÖ4M èhš›šjª«¾þzÙ9ç]Ø£gÏ6ËïÚ¹ó×^:úè "’”œÜAjØÛ¾ÿžÙ3¯ŸU_Çåe@‡ÌÝææ/¾Xêgà‰HJjjŸ>ý–,þ¸  0>!¡ƒÔ’šÚ§OŸ>9=c}wvÕZ«µÂl®·Ö™ÕŸ7TW[U»ÝžžŸ7 ëÀƒ2ÓÒØ!QУgOÿ¯ËvïÑÃ=Ý:B bÜWå±"Ûöæ856¶kJU³ü¶µ~§YµZm«ugMÚßvüš6aBn~~{ rE zF=Ý:B mç®­Ê,µvSÏ$[b¢­Ö–˜g±Ú¬V«Ùb5[¬ÍÍ–•+7ïih8ÿ¼C33SØ-?Í™3WDn»íVc€6ÚÌ® glI7·¦_sÇ9<ñD@58—w³O mæ®us£b—=qq ±³ÙÖÜd±X­‹µÙlm6›››-MfËòïJssÓN2„½íkîÜŒá[o½¥}WÀŸÕ0ޏÝÏè²>úÊøXI}’·‡@;Çn3¶ôV#VÃôk®ÑƒÖ[+þ_gVÍvK­eK“fKˆ«©iÚ¾½Öl±™ÍÖf³¥ÉliÒ£·Ùòý¥SNÌnöuË-7‹ÈÌ“v½3__ UÓ4½p$ÖVoç•™;÷ã¡1ðÀóœÇ+cÌÎgÐaº»Jp¯Sݯ;×ðø‚.ågLŸî²5<¾`ÁŒéÓ]÷ñ ¼ÕÐvîjš²óþñ"±šÄ÷êÖ}PŽÝ¡:TÍîPÍá»Cµ«jCÝNt(Æ9oÞƒÆÈ›o¾É£{{è\>èE¼Õ©iš±t—6WÉy¤UuY÷¶¾Ä˜gÔà¼V×èPÁôŒÞ®‡¥#z½ù>5¸ä®Ýfu=hER¿ûý³ ˳Íl±4™-ÍÍÖf³¹©ÙÒd675[šÍæf³51)æ´±—±W ãÐwæ‡yì†ë¯ÕÇ<üÈcóæ=húØãî㯻vÆ£=þÈ£ó¯»v†>òºkgø(ïüИÅë!ãTÆc‚úxà1Jõµ5"ßy\^¸/¹°ËSö»Î%ŽÓáÕÿWÕ–ïF¾ùæ›=œ7ožsæ¹_%6jpvÙf Æ:è ÕΚ5Ëë:´™»±Ùñ1Íjn÷”âÊúªýò²¥åò²Åj¶X­û¸#û7a ¯ŽÑÑr÷±ù DäÚ™-ï»è=f¡>Ðfù€"? ‘¾»°ú*éëóèckh xœ÷±ù \ ˆÏ;¨1×ΜþØüÎ :Fì¶f^[ýݽââÄÓ]QÎ5x ï€j‘¹sæècæÎ™sëm·ù¨¡íÜI‰é›!]ÆšL¦XeÕŸ[›šÍÍfK³Ùj¶X-û¸#s/¼àðž=SÉ]tÀþ®·$›9ãšù?¡'ÙÌ×øè˜†=wç?þÄÌ×øŸ»Fy}½v®ÖÇš¸Ï«×éÜš¦íã^'Ðn¹ëÖ½ÿ¾û<çî¾]X÷O…½çòîc$ Ï‰Hbïx%Å”/ÇwíØA½^þpeY…%.F88ûÈѹÇN(ÊîÙ…ÐE»{|Á“ÆðŒéWkš6cúÕ/xRÏ¢ÈÏòmr®aÆô«]ªÕ×Íw º< #]VÕ¹ZcŒËsq.ãc^}ØXÄŒéW³w¡ƒtxõÿª#Ð]®·g Æýw¶n.gËíbÁO‰Èôk®¢)RR»¼ûöÏ9ïB“ß²X,ï¼ýÆgÝØ°§ƒÔ "V«õ£ß ú¥=€0â¼±Y-SO;ó×^:qâÉmÿ(@uuõgK?zÚ™6«E?²:B r wÍl6''§œ~æ_Þ{ç-?g9ýÌ¿¨Õl6wœ -×™ËKKØ´€«K×®&SŒŸ…UÕ±§¾¾£Õàp8¸Î Ø?Ô×Õ5ˆ~ù¿¯¾Ì bEäìóÿf1›éõ ú×nlÛºå£ß7ÑD ¹ @ôÄ:?à:3a§8}Ûý]èïp ©¿Û£gvtÖ2j Ú_ôè™M›tÀB#Ðb|+±ÕÂÜßõ³¡wí¬èÑ3{×ΊmEo5 zéÎË ×ú‡½Ú\±@Ÿ~7–û:;×ìÿ‚Ú÷)tÌÝÀý(‹Pãט7··õôÿ ŽÜþÙŽÛÝåy|µgÜ.Ñ¡VïÏ]×™wVìp.¶³b‡^8,—¦+ï?bj,4¸åöÌîå¼ =³]–Û¾Œ•ñgÅ}ú‘{!¸ß¬uÞ”Q~ Ý B\ÉàV,šéã·ƒ8¨Ýëu”Eî¸ôYG¡}üß²Â;’Ñéï¶yòê™ÝËÛñÊùÑãBõñú¿¡,˘×}åÝŸ¾\ã_osE´œ—b<}£€·§ãÞ\Þž¯Ë³ö³ =Îå²VÎe|4£ûz|Êámj»·'âcpŸ%,¯ÚÜëüYoûCp›Ûå`tÙ¾þïÏîÇW›› ¼G™ïƒ=¸yl(—cÁÏgÝæÙÀcËq,´É\v€0žñèïúõjHÓ´ì^9;¶;oç‡Á½Ôr©3»Wޱ¸ŠÛ©¡¿Ì÷¶ò_®êSÝŸrØAöX§ËÓ7 èSÝWÌ¥¼·õ4žZëì¾æ.k屌ûÊ[Ùev?ŸB$v÷'âcpY™ÐWÌ÷^çÜ8Þ¦¶¹?„²¹zܾ¾Ù}v÷Ösž%BG™ïfzAÞÊ}À÷³6Ž ÎTÞ†ƒîïú^hèMDî¶!»WŽ1ööu®<õÕ†ø,"ºcëÖ.»oÐ u?Mø(ÓfÉè<ÓPvƒ6ŸiÇÙ4QnR—íÄA…gêÿQµfeA.-ÊQæ²½Œ=s¿Ï]ßMÄ6k÷]<ì–Fp©¤Í:C\hxO»áZ«H?k»Ç:£Ü¼!¾.ŒÂÚ¯Z¢“[î‹‹ÄQÑ j\8é/:ýß^Fu„3Ìž»Á]g‘Û·ùYŸ•{»øÊ}UÞá{AÞFº¯@XaÇömÙ½rŒª¼Õ©ôÊémè•ÓÛÇn>Ö<”ûã<^]ô¸Vâó*¥s%¾gKS{kyÖÄ÷>Ü]fŸ—Ç'î­~‡¡?WЛ[ü¸šêÿiÄã³ÓŸ”qPDâ(óÿ ЦÔËyF}¡m®’{±}½m;UˆMÔ™…ÿûªzåôî˜WO4çŠ~á²cû6ß«§p9†ÃòìÑŸò¹©Û}oÙ±}›ûvlsûîÏ1ì:7HpÓæ*9·|¤·Âp\8ýÝíÛ¶:oíÛ¶úÂÇesnß¶Õ¹ÎíÛ¶æôîãü ˘º}ÛVÿ—âq=Ûé¾tU…Þ.•û®Ó¥Œ‘4—·:Cïy[÷}xlg³ûó"º¸¿Æ÷ØÔ!ö|÷}ï~>¯ Ÿ@/¥ø>¨]Z̸~ã²þ9½û´¹™Âx”y<ØÃu…ÀÇ%"G·ãÂ幇rG•ÿDzËé"ÄmÑ™)÷ß3{æõ³ôßßµX,´ÚKNï>&:N»…¸l}öº[BB‚´þþn¬ŸMìÞiãöóØ)‰ÄŽu´Ã#š.ÐE8WÒÉã öO}– t;l ‡÷Ðè°gž°Ë²¿k6›iÂ+11Ñèïò;€D¿@ôÐß ú»e¥Å´áuÐÁC<ç®óv\g zbihqqq]º¦Ñ¶êªJr:JÜ³Ùl´ ý]@C—¸íÌx]»@èâ@Äuf蔡«iV«Õf³©ªÚÎý?“)6.NÿÅrW22³DäÍ×^>~âI9þ£ÝhgÚ ¼§ÛÔܼmë–_ׯ۽{w;®FLLLFFÆC†öí››˜”ؾ®¸íþ®û=ÐðíF;Ónè°¡k³ZwïÚ¹jÕÊ!ƒ‡ =d˜bRÚkMEiln^¹òÇôôô®i];ÃÏÀs:«Õºö矇–””k2µç½>iq]F>ê»åËÏûÛ…ä.à@ë슈ªª•U•kЉiç(J‰«¬ÜݾñOî¡A‡CQE1)&“ÒÞ§ˆ8ŽN²c»Ðyi­hŠ-wW¿5vÄ_–‡«¶f‹¥ººZ¶˜ÍÎS«««õጌŒ¤ïMohØã2&5µKšhòU—|òÔóQXPEîù«_Z¿ñJs½ˆd%vR8hæˆ ³S{„q)?l_ý¿¯ÙRœäÈRR#zŽ_tø!=ê ûý†FÓÅwÿ÷¸¡E÷\0,»h„êŒÄJúoíÊu?­¬©ÜiÉê™pØá݆~H$–³ô´ÌÌ[TØ«ë°kèìFnoÑ4MϹ;ÿê‹g>ù‚û,[÷4Íü÷Ï# ºÝvêÁ$hÇÍÝÕo=þ²¾xöˆp2ª«ªúôí+"uµµ¹ýú¹LÍÊʪ®®NKO‘­[¶ôÎÉ ìÕŸHzz7ãá®;4ÑD¤Kj׈¶’ÅlwÊà+>yêéH,åÖ¯þµzãÚ)Ç—ääJNã´d‘­M撪헾qÛÂAsÇß–¥<ñÍK?Tþ4vĺ«=~W¹Mµem¬Üðø7kÏ1uBÿ£;àa®]ôú)Ç>òÑÿB¯sÓÖMOüôfuCMuCm·ä®™]3ïœpEÙÒ)á=Ž ÝÏ>®2¢(»ˆÈgo‘°GoÌÒÓ,É}®¾ûùaMú†?^9ŒÐì.m¯þpÉC7éE¹Y‹œ¥Ošõ ÇÌ&AÛ3wÏ~ðK“¢˜LŠj·wIIéÕ£KÏÌ®cΑæÿEDÄfs¬xmôèóV„ሾ³ˆìihèÖ­›{= iii-%¤ªªóþ”œ’b·Û¬kZ—±_ùöëïìÖ=ß~ýݸ£ÇˆˆÅ\¡Ðݼµì/Æ™¥ä®Þ½z`·Ý'%‰ Îì68³Ûâ e·~õ¯Ð£·¤vꊎê›="ù–ñy'¿Ò|íÖÒÝý3óºwMxuõýºeç§u¨c`Å«£ƒÞE×þwnŒÓ’ý²v-»kïü5˯ ºÎ'¿}ñºÿ ë—›Ó'[${P¯Y)Ù?:9ìÇQ@~ZY—üû/[õ‡Ý23š™ÓÞ¿±d÷öüî9õ×crF…%t3޹àÔ;«?¸#iDîîÏר9GûpôU/‰)VSb$&^Lñ}LÕ£Ž9戃µ¯Žðsoiíîî¢3ž¹±z͆W~h xŒXr·swÀQGÄ™”øX%F•ÌÔØœ.ñ=Râò»'üôlÑÔ«>EQÌ哦½+¢~ðÔÈñÓV…¼Æ&÷öM+z öŒ–]PQôhONNÕÇ×ÔÔ„½õ¿êïb»ØlVsÜ ñw|½ò>‘›>0ïÊ[¾¬Š†]«7®R8PÄ<&þ Ñ£7q÷I"f™P”ýÖÚµ#v…xÁùÉ•o¥Ç›v×ׯ;úÄ+iüÔKrÕŠŸÖ$+Ù9)Êëë?»}\{æîÎoé7ö‘n"2ãŒÃ¾ZtèÔ«Þ­©lÒÅo‹"í¢1µU9cÆ''LjÈÎÍ»Çf匜ð¯N ºÎ'¿ýýÕŸL1jXß¡©Y±¦Ø>Ýú­zîèPV2D럙Ð5+­rç5%Å-‡@ÿüyƒ³o]wãÇL9DDîþä1™|m(Ñëºïß‘ähjP›ö””VŽ¥³ë£“Ðëˆs¦cJŒS’ãbÒ’cúwOÚöb^@{‹ûuæê5vm«ÜP^©x;‘#‡?LøeÍOdjôrwÓ7?´ôwmö.]S²3»öÌê’0¤wÏSW¾ñÈp9ï²¹ÿ}öVÑdâÕkÃÐßÕ4UÓôy;|æn^MS5‘;*ªjoUTT‰w_<õ½³{Ç×+?»÷ïeë/{reÜàãîøz岣nj˜2111aù[†eYóW¿Ô'#­¦¹FšEz·ŒÔ£·æÑúÃq}zÌ_ýRˆ]ÞmÛ7uKÜ\ßÜlk‘XIºøà§»%Ìþß÷[DÉ*«(mÇݽâ›G>mŽˆÈæjyüÝŸî™¶êG†‰ÈÙ—Î{ó¹›ÝE-99&kPNCÙî¤.©U[V[jЧÎ\þƼQAÔ¹ië¦Åëþ7qèð£}LáñÆø¾³Ê^»·wÐ+ŠÿÝ~ØYOo‘W.}5-3¹¥[?$ûÙʇ§^»u›(šhÊ”ÂÁ ¿yñ˜³ƒÌ]#tEäƒ;’M{M ÍÅ«.UåxeÚñÛϮ%VLqZLBK÷ÄÕo<2ÔϽEÜ–>¯È“3/-ÊÍzeá‡Ê+Edö-‹Šr³Dä‰ÿ¸zþsÞrwíÏ«EdØ¡#èG5woðŸžç~ì22Á¤eÆkCn-gvoi.57Û'xÞ>IðøãW\~¹þœ‹åégž™9c†Ÿ¹+š¦ç­¦¶niEDkýWD °¿[][רØX]UݧOަj=ztwªQ4UUUuí/ë323RRR2ÒÃyÁyÜÑcÔe+Ëv®¿üÑÞ½ûM«­©®©rü½ÍŸu—ˆL˜vFlb=¡Ci·Õ×ÎH«irýLú]#þ¼[–üt¨ˆôÊÌûvãZÒ6ªªv4ÚwÙ5{“µ©uË$ô•©%ÛnJMN®‹köúÊ Øý¡Mï¼ñ‘¾³\|þÑöÚ%¦ä‘Æ/‚˜›m.^µô©áZS™¹Ù>ñª5Õlµ:D¤¡l·ˆˆ¢ˆˆ­±ª¡|ý™W-{íáqzSoøÕß×F+ÿ;(§gQ¯=t¿øsÉoÛ­kvÜyòM'\ÿóÇ÷â±ÂȵÛú¦Ü}»eç3æZóä3‡>=ÿ÷AC{ŠˆÍnÛÕXû}ƒÙ¹p¥jbË^ºQDTm€Ãæ8óÑ,fGÓµqOsɪ¸=%މïsŽöá†Áoqý÷úðoïÜtð™-ïÂæ^·í‡9=ýÝýœîg¾ê±g·þøåñçõ®øú×ÿ­‹?ïꊯ]0ñU=ë~.õ6føa#õ‡k~Z¥?Ôœ‡]Ê»Á°«&ÉŠß÷5¬"1¢šÇyw¯“íÏ\x÷òß-t.0dð\zÙ¿Ÿ{VDþqéeýýïþ_fV[ãÖjõ|×TM¿fìgýúõíׯïî]»4Mݽ»Ò¹¿;  _Ӵᇑ͛·„+w'_u…ˆ|òÔÓs&~Éü?øç›©‰i "q1ñÿº$ÿúçVÎ=æðe‹Þu™+èvÛµ½NØcÙã½ßô½uÎÂ5½2eÙâ²lbs$6ÛT‡´~ñÜÒõŸÝùÁ}V³£ Ýæcƒý¼Úd±›Ô®gœ¢Åõûa‡ãåþ0&ådTŠÈÅw|ñì]Çœ|}É»o¾wÞ“ý¯Ùfµïܼ+©Kª(JíŽ]K+†oÞU_Ó”XÕxòß?]´pâY·üám• Õ© ¢i "R¼»äÕïÞÓÇÏxý:«Ýzʹ/,ZxaÂYÏE¯ÝÄ!‰ÃE$1[Ææ$ˆôÖ«[TU뙕QS«åäÅŠhŠÞáÕ”šò€û:Ë^º±ï˜«5U³ÙìV³ù¥‡Ÿ9oÚ$GSÃ~ºÑ¿£Ê8ñ:Ÿ'ÿsç¢Û³†þKÛ™Ûz¥YDŠãv½»þÖ'?Ëïžó·É­øú»-å»{egéS¿øµ|{}Ë×kôHKô–»?¯^i¤¬>ì\Ò[r7`V‡IïpŠ"ÊÞN§¢(jŒâ0ÅÄ‹(&‰Ù¾«*ßi®ãŽ;VD&t²ˆÜqûíúCÿú»-ÝÝ.©]ªkêÜ tIí¢ðÿ²‡¦‰¦ª"¢ßV•••å²;©š¦ã¥ý¦åã§×ÜÜ ku45˜eño̦ŠýŽ Rnzé‡ïŽã2WpíVe¶H³ç/`û|Ýç·¾úµˆì¨2[C^Ö ‡ý±ø‡Ä%&&VD¯[úèçO$¥$ääôªih˜Ð×ëvAïm:ï‚ÉO?¿Tlë‘õ¿lÞU[sÜТW s±^æ²;>žóÌGW\@è^?åØý²v[Wë7–VˆÈ[¯|RØ?[D FŽ>~Á«óþyþÍÿô³Âª=5»j,uf‹ˆìØSùSi©~’R%.666þ»)ÿx÷ýŸ>Ÿ2à¨è´›XEÌ­¯£“ÇJ»ó#§ž¨ßW5|ó®·^ùdÚµ·Y™w”ùº"’Ù¥[£¹®¢¶JDr3útKí¢¿ÔûDZ&Åǽ³ú³G/Ô$^BÞFþ6šˆ˜k[ƒÚ¾ß˜Ô[d¶ˆlß[øØƒN ôòò–ïžÌu…Ín³Y­6‹Õjµ©u¿Ý(wvͶ‰1‰h²©ª·õ?³=ð}.myoWÓ~ó¢û{ös›Ù}Ø‘úI¯(=î¾Óx»ÈlŒ<âÈqî×¢]ntõX†Ü ðe—=F¿°¬9¿)*¢ˆ˜Õ¤6Š£jñUõV§ŒhÚÞ·u5Ù¶}»óÄÞ99šh¢‰"J ¹«9QÄõƒIZë3iý³Öw–Ãz¸&$Ì;ñˆóZ±ðê‡8Æ<ò•/ß:nÔQªªÌŸu׸£Ç?íï_,úO(í6áQ·þ‘àºÏ}÷Rïn}$I$qW•eÂ!£BÜFùéEW<ç©Uo¼ú˪Ør²s•X­®Ñ|ÿq×==îÌYë×ëÅ2äR·ÜDâî=Ù•šïoÎêþBM¿{]‘˜‡ŸZ¦hrýÕüÝómvçûª ûg;?\·ôãg\êÿJöÍìµq{ýŽê-õæ=}Ósîœzí{?/)è‘÷·Q§×™ë?\½8%!1'£¿«áei°¹ûÑ“ON¹áÅjkk¿y>°¯|9"kCÎg))ãÞ˜· ÇЋlf›ÝjuXíª¦ÑÓõ_“-îÛ—ïk=ݦŸvñ=.»ôS·×Ö‰¯õ¦*MvÕ{xÏ>1>çõE+ôoJIN‹kó,:zÌQ+¾ûF8zÌQs×[r7À“ZkîºÆ‰Éa»²ã}­Ï¹éÖh ÏOMi-·Mi"²cGEQácRCCý¶íÛ{õÊnÙ£‰rßêÔéÈ«³¸¤TQU¹bAñœtµ¨Öc?ê•¥:Ô)ú'z]B73G\xÎÆkò3zÔ7ï2B÷áÿ{BD’$Aº&&'”ToybÄìП΄þG÷ë–ýúúÏ~Þ¼.))©ª²lià ÿzî´Ó&m¼£åféÓN›´ûŽY{½‘`qĉ£YDîŸ&7¡k–ožþØ»¾ó¿ÚæOOÕCWäðsn~ù…Ùgg|®Íjï<_Ï.¶Ø©»#/IDäßO=£ì½Ì¬¿ë×`m«¿+-oðŠ&ß³ONé2dD‘ˆ|öñ†OÉNêÛFïÙÓ»¹ß/ÿzô˜£¾_þµK Óß ñ¤Öš»ÚÞó¢8b”fÓö·µ>µk™&ͤ Cîjšs§sç®–m¶XÌ/nøY§ÝçaoìÐaßKŽ¿êï˽&"?=fÄ”‰7?3±åMríÔ5^®¥d§ö8²pÔú­kûföÕCwÎÿ=œ ’ѵGršH–ª]GŽ ×·Eæ§9NS¿× IDATwÍS†O:íé»â–kõ1úðš%ïܵLj½YD®y:ó¬+'Y›í¢8_šiÙ Þ^¸äžÇù_­CUï«ç‡Þ>äæÍ€>þ6îŒw~ü´¾¹iGý¿údôNŠOl¶š·Vok¶ØJwíþÛ¸3ôµ³ƒÞßýèùw¦\r¾˜=Ü®\+‰¡„®ÞæßsÃ7ÿðÝ·_išöÝ·_9öh™j û(Cîr|ÚLŠHŒžNŠ(¢™Ô:Så‡"ª–s†ª¥+ZœI‹-\QQhúGr«ªª|ËÌÌ ï—f8;þª¿/åÝHoòìÔsÇßèüåQ0|ô¤5+–èq»÷ÕzmíðÑ“¢óžÞcwŒ˜~ÏOo¿æõ‹jÌúRB]Ý€>ž9ëîŽp‚"Y}‹IX½÷(ËÉ— ¹p¶ìïÚå‡zèßaèÂhšâé›ýš›¶ÔU5éß”""ü²óÜ™ñT(w£¬Kjj—ÔÔ°W›‘ž¹Lõ‡óçŒãš«=¾ÍiÌ>Œð¼_I$É3zëÕ-U• ™Y©WÌ<(.‰ØíĹ õÚCLŒ¦(Š÷7Xcµs/iý2÷–ïÞ“)&&&¦“´<¹ ŽÉdÊÊ̲Y­ññqAýbj¸;ÞšdeuWUµS4>û„¢Ýå>¸u~èaüñ»ÕnWL1ZûQL1š(¿ü²fÜÑG[-ú»òæk/sPv£i7tdñ =³{sìq+ø¡ªºª¿´$&&&3#s±ÇõéÛ¯©±‘Ü•ã'žÄÚv¦ÝÐÁ%&%ö/((tÉÔÎ>UUµY­$t…÷w sÒ4Íb¶XÌš"Êx‚·?¾¹ rrWDD22³22³¾Xº˜–:»ˆF·ÚùGà@Ds»»Ð9ðæ.‚ÎÏïnÙ\ªôí×?rk\SSÕ½_Эܽ«[· ¶.à€ÍÝ-›Kóò õá²’^)--Óú÷Ïc+ ³‹ÎØß¦šºº–Ü©kÖ¥¥…ù7t×þ²~ØÐ!.Ýúp½°oms‰CØÞßÕDÓ4µåO´˜ØØ†ÆFã/&6¶º¦*, R5M9tø0ýOéš–æü§…ï‡"×þ²Þf·‰ˆÍn[ûËz=´ú†1ÃX›ÿúo öËÜMDÓöþ‰¤9 ë:·,¢¼d£>P_WW_Wç<®Ÿ“<øà¿ýögZzúo¿ýyðÁŒÐ%z …í:³¦iÕÑ:¼7÷êëêD¤kZZ˜º ’™‘%"奛ú–oÌí? k×®ú$c@‹À¯876ìÉË/4jv­€®Ün./é_P¤×¦iÚæò—ýróòÚî5í“—_XZ¼!\ :ÞÜE;çnYé&#z’ˆHþ€-Yè©Z^ZÚ//OQQUuKyy^~¾æGf–—nÊË iZ^þ€²’Mýò DdÏž=úÔ.]º¸Wܲônîo¿ý™Û/§|óö̬îúø¼üÆóÕ둲’M~FoyYqÿ‚BMSksmÕ’ýr B\ÿÍåÅÆÍnûæîÞE—oÌÍ+Ëv´) ×™5MëÛ/·o¿\UuhªªªŽ>ýúõí—«Ÿ©ëëëëëë=öAÓÒÓ[¿NÓ4UUׯ]Ó½gϘ˜˜¶;p›Krûh:UÍÍË//ۤǭ.ŒË6tH\lœˆ¤wë6lØ`‡Ãîü§ªUuýL¦ò²â¼ü‚½ï…{ý Ãúkš´¹ ¼ü‚ò²âЗÐÙ¢ÔßíŸ_XR¼¡_n®ˆ˜ËËË išÖ„š{,¥wë¦(Êê•?¨ª:dèð´´t›ÍÚV®¤_^µõ‚¶®_nÿòÒMýò44ì‘ÔÔ.aYÖÞê’è°ÛÛ,¦ªª?µ©ªª©-WâQ4Ñôõ©Š(k nýõeµd°Ó"œªˆ–e¢”»"’_PTܽ"²¹¼|@á q½öë)ÒÒÓ ‹%&%¥¦vñçä®iZyi‰ˆôé×O³uóf#WRRS¥åÎj-ôeòú()ÞÐ//O_LK2:/A wûç––lÌíŸ/¢i¢ˆˆ&{gÔZs7\ë¯jêÞº÷þ§‡®&¢”•÷w»t[¢‘»"R0`PñÆßûååm.++(½sÚ.““Æõ&nû#MtvAî¡ r„ ÷wß|íeÚ]ZQÊÝã'žD tpá:3ºè0ý]脉+"„.È]ˆxÜ’¸ w6)¢xÿáb}Š×ʾÿxšêµ€âå·GŠ÷QmôPÀëTÏOTq} øœê½€¿CžF+žWÊËÔ}§(^·œ÷©­_û;S‰[»€Ÿ4ñõãZkhÜW@Çëïî¬Ø±níÚ èä6¼g¶_¿³ÉI§-)ÞÑEç &wƒgò©§³ý¢æ“ß ô4×É}±t±ð‰ó¨´óºµk|ï–ÆIƒÍ޼Ӗo9jtD½êÇîÑëOèž<å4 ïè¢-z›‹È§½¯ŸÂ`ßôSüKs®N;‹ˆÇR?i°°¿ì´ÕU•ZnFf–Çñ&?CíÀúߺµk¾XºxgÅÚÄ÷¦]ˆt;¯[»Æ}o$t±ßí´Ñg"t÷¯î û Ñ ÷³¡ ¢7¤Üm¥ñסþNž2•Ž/쿼¾¿»níš“N™Ê[ºÐI§L‘Å ^Þ`ƒÞå¥ãv6vB:»ØïvZƒ·÷bƒðæk/û>øÞŒý8}‰^—ÈÝ`Eî½žÍøð¾Š†ÊÞ]{ 5z×n+îÑ5÷«’â丸µÛÊhÕƒ·ÏÜ+>- ¸¹vZ?…ôýÌv»zÄ-w™â¸å.»M ïšéYÒÑDz­ÒÒÓõ¿6GºDoˆ7ÇeöÞYÕ›¸­²¾(³÷~÷Ba¤xAË€6âý]ofÏyBPÚðû´™›¶Ô<;m¦j3æGPMš|jÌÎŽ°V./ÜE©«­ÕC×¹^ïÎ}à²·îø²tGßnÙÿ>Û¯‹Ì™YÝ].àècÜÇ£OFQëpì´aÉ]ÏÏäžÛ®Ö–ÝòòIÌvÚÌËÍ_2ëoå'MžâœyÎÛlÌ=m·uhAÑøp•¦iú³ïþ¤ù~RK>ù(èè}ö/÷Ýóà3³/½\ômV„nÁ†;íþ×ßmóý]«ÅñÑÌY"¢ÿÛfyç‡K?ýH8ñä–4Æ#—~ú‘>Æ÷\Æx÷ªÚ|jÆ"Œaã_—z\Ößy¡Æ\þ𨶦FQ=kWQ”Úšš6?Nm¬p;Þfeôw¯ cœ;ÄFßSF³xëÀ~×ßmà ¬ z^!籤ó$ßsé‘ã>ÒGι$–Kþ »¼,pðVÀçèu]ÿ6”è½çÁgDdmr¨·Y¹¤ sšãÝ#Óc1u’²:cî®{ô1îg>äºÃ¾~~¦fÕz|àíÅA /&‚.¡Dïì›.‘â×KwV5e¤ÿ^Yãã6« îuò–N5úÇÄ0€#w5ßãí6uìw¯6óˆ[îZ~ï]ÞÊï{Åõ½ØÒO?v«Póº§8÷c.Í=VÝkžxò)î&ž|ŠÛ5OõhmMïëÐö{ÃéÝ2\îÐßë­­©$zOÑÛ*¢·Y¹ßWP*s‹2r×/wÍ}J((®øÕé~æC½g€[ ~lŒÜ7J=„‡sIæò¸Dÿ:Á»,1´Ng0•8‡®ó}UÑÞgÿr_ˆ-à»êrјC±ãà¾e°Ó¶[îz»‹çŸ·\¥|s结zÀ¸ŸÙÏûªÜGêÃîÅ4MN<锥Ÿ~|âI§´9×g‹?öXÕg‹÷ÎÞæSs™Ýãa×Ö}¤Çuðÿw&E©©®ÖŒ$ôg*N<é½Y‚ˆÞð~mdä®s‘9ìíI#€¶û»m\g¶Y÷¹Ÿ¹ÍòNy0YÏ£€Ë˜Ošl̨O:ñ¤É¾ç:ñ¤ÉŸ-þÄKU®+°o=-óê%ŹsªÇÇ"4Oн@›/Üjª«ôÂ5ÕUN/åþSk³½¡m¤‡> —Îû©î«:vÞÿü9ïû9ÞeŒóCc¸Í¹|/ÔÏYüY\@ëïÏZéjª«ü¡èõÿ~fQê<Þ[H<€ˆº÷ŽY.cî¼ï¡(åî?o¹²Cµ…ž(þ[çäôt?sGÀEfNw¿øÑû&MŽÐ Ÿ0iò~Ñþ?Ï—øÛë âk#Û ¡ :]ø‚1|Ý•G$w£ó…ˆˆbôžüù’O}D¯ÞÙÕ…~?3Œ+ÌFÖ:pL´ig‹Þ¹:¹P:»â}UØ{½ëÖ®9dØð¿Æ:—+ÌAßQÕvîj\f>@?ñdùb©¯k΀HàýÝΜ¾'}±t1_ð-Ä Ëå.üè=}E„!^U&wá5} `ˆr¾x¿öÅÒÅlSÚ w±?0Pвç€W‡mâó»»»Dä÷ßÖ§¥w£»»€Ü€Ü€Üä.ÐÙ¬yzðš§ÓÀ~Šï«B'µ}ûc8'§ï~ºÇÜúç—s†·Ú̬î>¦VUîf‡È]th[6—ŠHß~ý;fÍ¥%›Šl<ÜðÇoýó„w=—,ÿÃwIcº‘Ø^U•»3³ºkn¿¹­( ¡ »ØB·AaiñÆÕ¯Wtônß¾%7/Ïbnr¨‡Ýa·Û»ed8wÃÕ~ì8¯ ú¿oƒ Ý¿×lÕŠ(úC×Å]ñkˆÑ«(Šsôº¹‹ý&t#½”¢WÓbcãD$Vâ$¾e\FF¦s‘­[6çôCô~úòÛÞ&-z³BD¦ýu‚Ÿ¡;~ú;še»ˆ¨"¦¿£Ç£"bä仳 »3¤×:ÎÑKèï\æ2æÏ{'„^-¹‹pÚ\^Ò¿ Hï2i𶹼ĥ@¿Üü@+ô”›""yù…¥Å­PŸ]Û›Vb2Å—”)Š’ß?WU­e´pµÉÉ;+ˆTvï˾;»ðŒÛŸÑ¾sÿåîeB ]çèÞÓDDdõÃ{ß7¼–:É]„MyYqÿ‚BMSõ‡yžÞ1-+ÙØ/·ÀïÐ-ÎË/ôœ{QZ¼17¯  õÔ4MU[jˆ‰‰ýcænéi"²aSIaA‡ÃÞÜ‘ž a¨ä¸;7¾{oáé7Í cÊz‹^vf åphQ”½/Õ×Û³\Ê ‰­$wÑ>¡›—_`$¢¾f`Ó¶*ÌË/(+)(z5Ñ4U‘ظøõ¿ýÑ£{V—.©ú¤ßþØpð "»ÍêÜ!I O=Çݹñ=§è5¬yz°#3}Ä_–³áµmªí›»S§?äR¦xáÅä.Úªªšªéq¥ˆ¢‰¦ÿ«OÕoÒ‹Z§–FUΕ+¢T§ˆhª¦©jl|ÂÏk×çôÊNNNr8TINNÊÔ2Ö®ûuèƒÃÛß _UzôzXDUíê·Æ½@xmÙcÝç6ŠÀS–ÜE¤ôÏ/,-Ù˜Û?_DÓDMT§.f=>uoWsúO]MD)+-îŸØm\šhª¦‰hÕ±mû“IÉÍí+šlÞ²UÓ4UÕD4#ïÃ"}òíî#k?¹?èèu©¨wÍÓƒC¼«€³Ù ?{ä.½%ÅróúëáX^Vê^&¿ (Ð ÝÇçæµÜÆ\^VP…-¹«iªê077 X˜üÓÚu6«MDìvǡÆXÍÍ–ææð^gn\|i“ëÈ­æ kóøeUšeû„ë¿‘e½@xx¼{Ù¸É9è{›É]„S~AQqñ†ÜÜ\E)<ÛÌéââ š¦‰håååÁÕŸ—WPVZ¼·KíPm6»ˆ8Tµ¬¤e|^ÿ‚06KŒÈ€äðTµæéÁã¯xN× ZÓ&}`üÏ}E¯ˆ{eiÍ›³ºýõ!‘ ï\f¯,åý]´³‚‚¢âMöËË“°¾EºOwU´Íee‚ÿ®DçXÝýÓ‡Ã!"Ù=ºï¨ØyøaÃõ¦Æ—c(áûôáWüúæ]®«ÿå¶–›­ÞšsëÄ»7²‘Óí¯9uyîõ’»ˆ@ô¸iÓŸª\)/+0 l_P|øaÃWþ´¦WvOé•ÝsåOkÒÒºä‡X­þ5ú—c„÷çGÜcuikº@yüÞ î«BÆ\ŒBÍzôëêêÃXù§/¿ýiTÚœÐÂŽïÍ"%Œ——ùù5„.Ð1ñ½< qá{3ˆ¾7€èá{3ˆ’°üêŸ;- @Ô»@À:xH]m í€Ü€Ü"âÏ}U_,]L3pqüÄ“h "¹û›Œ ™¸æ.MD(wµýª ä®§ÜøJÜsÁàƒ.YøûóWÎ~… ÐßúÖr7ôÖÿübù@+ì¿]Þ0F¯ºÞ:»âçuæ-®~íK|;ï–çûtýÄQƒ5ÖÞcìmYõ‡q‰’”Ñ2©h¼ˆÈŸ[«\–ús¾åŵÎâ¼Ü.Æ•tüè‘‘£F‡¥B½6o¡ëoîö):ìÜ›ÿýé37}ðþ»ãÇwžúÕW_M=팓/°OÑaîAUUp¬}Ý·bÍóVù½sÐ% EäæsƺDݼ‹‡ßüšy×ÞüÂç‘ÆC£¼óoSÝGêõ¬ÕËó’»ÐI¢×ÈËpÕæƒ¿Ÿ#êS4â¤ËœzÚÎÑ«‡îI—=اh„·ªkŠkçiÛ_=ë¨óÏ:jþè¦Ek\¦Ï»x¸1òÁi-ÃÆHcŒs›­ypÚpMó<Õe¤¾P÷‘ÎOÐyÒ7 ¸Ÿ¹OÑa“.gD¯º“.ç±§kØcŽk½ˆ\4'AÑDD1nŸÒDe‘¦‰"¢)¢h’5úPçyg=ÿ³ûš8tY®ñPð8Õãªú?€Èæ®Íî0†³ †Ÿ0mî©§qÃu3~tþ‰Óæf w.à®Á– ¶Ý"òâ¬=gÞÛëï÷ï­ä‹·¿–¶oU6OGÚ¼”׺äPß³{«ÇÇH¢ÔßÕåz´9wÝuÅ™×?Sxh›ÂFkœØDäÄ»ÿ㟧™l¢è]^Åy!ÿ¾ëýƒŽè­ÿê­Ã껿;óé•¡tméïÚ%w]Çä 8ìÊùßÄÆ%øLMÖ±›ÇÌ}éM'4ÖX5Ei‰]MEyîÁÏFž˜ï^›Ëý¡óH<–|üÊÃg,\)^Þµõ$QíïêbbãýìZl1ÃowÉÕcj­¢hú›ºâô¦îóO,?jr_µ=~åáÆðô§~tYŸéOý¸àªQîô2§ú©?4 èKw®€öÉ]ÿ59ûÿ>ÜýÔüï½8îÔlo‹¸æÉ|q/à¼Î§¶9Ò[D%wC^Ʊ§v®þ@ýäÕGˆÈÕ' ÓöwƒvÕ+¢0 ä.ä.ˆ|îÒJÐßàÀËÝg¯K3pÞß :M¹ ¹ :[î^>~[°?ŠíÈ+÷í¿Ž0†ÇÝøÃ½“rôá>Ib ß¹d;[@î†êÝé…g,Øh<ܺæ3¹å½ÿT¯ÙðÊÂgaÂ„ÆÆÆäädoÅ*–Ü;ì©‹ÝÇë#_©-«ï—š£Ã%E|§šK2y ò@—뜵î½ySzÁa¼˜ðÑ› tå#Úƒï ' £äîW_}µ`Á‚eË–ù]Ýï»+n=Ò}üÃ+VåóFÙûçdO¯xÿœ´›kü<ÑûH—3µÇ7†=vÛ…Ç¥û^%çHï³´žˆ^À't»®¡ЭU¯XåâgiIDATq|ÚÀ‰bñçR³Ç+Ÿmžý‰#ž}¼Ù^ñvéñwÎÏЩs7 Ðýú† _øœšÖU̵bö÷Rs„ú©¾¯â¶ËIßãÛÀ‘ëyw¨lë€wÃ@»ån@=]{Scß#ò6uË÷ßä]öÆ/ž“7:ñÏ9bnMtºq¡ÄLljÃÒýÊ?÷g…XÈÝ€ôÉ]Km­uç}XQœ4Km­·>®;„=Þñë±°·þ¶¹,ç+Ï~VâgÂy{sÚÛÓŒDT{«ßcÃz¼ßf›øßh¡7/ȹ»lÙ²€¾.ÃZW»éËDZ­u¬"¢‰¢ìS¶Âì~:nó¡?çè Ë¸ÜáìçTß%Û\yžuèÑëcM|0Ú÷3õ§@Ûˆ$Щs7Ð祥úéî6Ë„ýò²?ÐàlîçÇv;Nzyì¾´b|–@§ËÝÃÑ…Úﺉ¡¯}_¿¿ ¹ ¹ È]È]@î@î@îrr»»»€Ü€Üä.ä.ä. w w¹ ¹ È]È]È]@î@îrrr»»€Ü€Ü€Üä.ä. w w¹ ¹ ¹ È]È]@î@î@îrr»»»€Ü€Üä.ä. w w w¹ ¹ È]È]È]@î@îrrr»»€Ü€Ü€Üä.ä. w w¹ ¹ ¹ È]È]@î@î@îrr»»»€Ü€Üä.ä. w w w¹ ¹ È]È]È]@î@îrrr»»€Ü€Üä.ä.ä. w w¹ ¹ ¹ È]È]@î@î@îrr»»€Ü€Ü€Üä.ä. w w w¹ ¹ È]È]È]@î@îrrr»»€Ü€Üä.ä.ä. w w¹ ¹ ¹ È]È]@î@î@îrr»»€Ü€Ü€Üä.ä. w w w¹ ¹ È]È]È]@î@îrr»»»€Ü€Üä.ä.ä. w w¹ ¹ ¹ È]È]@î@î@îrr»»€Ü€Ü€Üä.ä. w w w¹ ¹ È]È]È]@î@îrr»»»€Ü€Üä.ä.ä. w w¹ ¹ ¹ È]È]@î@îrrr»ì?bÛ,Q]UI3@€¨¿ûÅÒÅ4ÿqÒ‚ÏÝã'žDëð' À\g ôwaWR¼‰Fˆ¾ü‚ä.tÆÐ9j4í}«~\ÑqÒׯÜÍÈÌ‘7_{™÷o v$@øpf{Ð_î¬úqEGˆ^; 8ãè gž‘£Fw„ëüÜWí+#3‹Ï_uªýä.¥©;B——܀܀ܡh·Ïï®~k숿,g@{ùèíYb6Kb¢H¢$¦'Jº$¦KbºHº$&&&¦‹$5$³Ý×sù¢<Ž;ísr7€Ð=þ²¾xöˆ°DïCü®ÌšzÐÍÏŸ©Ï»äçáh>»Ì¬îU•»C,h%0³yøE/KKØi±8î™ðÅòßY "߬¨8jHJû®¦CUN¾~¥ËÈK¦/_tÂþ½ÌݳüÒ¤(&“c‘Â^wœ=XDV¼:Z›Í±âµÑ£Ï[ÊR~V|ǹGèÃ÷½þÃgçëÃ7?¦óp4£7ļÌÌêÎÙ@4bWõËŸ¿7,ù¸iÅwɣǤN:E†ÑDD=:»Ý£×¡)î#ãS2 ¹?Fos·GQ~fNx“’§ˆHã›Dä«E#§^õ¾ˆhMe“.~[ùà©‘ã§­ ~¿±Z·šãõá‹N?êß¶ŒÏî)ÿ^¶wøÑ¿î”ƒ‚è¶)¨§©1Òxè·úoSÝGêçrŸ"ÓÝÑD–|’¾ek¿¡#ê·l­]ò‰:t˜h¢(¢ˆ¢iZ(‹ø÷ò|¿ÑR¿;¡k÷¢~=Ε;&/)ÐJ욢¶®Å¡W>ûóÂËÑâS2E$Ðè/ž™tüåKÈ]‘]J*7–˜L¦X“ID s2Ddü´Uo<2LDξtÞ›ÏÝ,šL¼zmHûÕa¶«"Šhš(rÖÉcõWišhŠˆ&Š¢hš&¯~ðup]Oç¼tŽ^q»¬?tŽR÷©îW=Žßî½c–˘;ï{(ðjEDÕ¤iÅòœêDUv'‹¶}ãÚ¬ÛDÄ$Š"¢Š˜ƒ]ÉSþùŽ-1sî߯?4GD>ùiËœ·VN;áÓ‡u ,wŠªj"2âêçV?y©ªj¢Há×èY¼ö—#éï¶îã¿?â¤GŒWJ?.¾^d°ˆLºjíÖšÊÌÍö©7üâRš-ö³êO± *÷‡d$€©¿«jj‰kÈNè’ØµÁ\ßÅš¦‰ˆ¢˜DQYöeé #ƒ¹µê†7ÿPR»¯œ{†ˆì¬m4ù°¾™]oXôÍéÃŽ¨*›S·e@?ë+""©)IûW³G0w“CDkiq¨{?³4õ†_=0è¬[þ})MVG½ÅñÛòŸív»Õf3›mf³Ål675[Íf‹Åb±Xí×ÜvY“ÕýÆåZ1€Èytá ÆðuW^Lî¶FXÚ=÷Ö-þ¨bÅòÔÑcÓOš¢jšhZŒ"J°ÝÖW¿øåú’'.‘±·¾{Ƙ¢×—,=bøÓްÔÜuq8ÄáÑ3Ÿ[1ÿR‡Cnþ«ÿûeƒˆ¬˜©¦Hrr¹Ûze@u¨­©+bW÷YVXBWD,[ÙÑ{ÄPeêÌ‹ÅýÆ¥g ìŒ+ÌFÖ:p€×|þý/&“)Æ;èXtlbB|ì.5¶z}lLÌO«6™L&³9˜äý©¬zh¦Ò¿GêÅ ¿-ê×ã†)CÞù,øO¯ØT“]Ó¾}ì£g>÷ícÿ¸{ÚÑ÷ÈÑš&MMIJíMî¶°:b"¢‰~UÀf‰Èu›£ÞìØóë¯>ú»§]u‘Ùæh߆æM\\gWDÌf~‘RbDMÄ^¹1.«P¿?fÅŠ ‡*|þí_ÿv|H©öâ—ë7-8_D¾ß©=ztA鮆 rWq8´Ö¾¯vϾÑû»_?rÉ÷s²DD&þ‹Ü±9bíšs GjYU)'Jœ&©JKÒ_?6͹̥#§Jàß?îñ†dç1> xœê{¤ËÌÎ#Ààr…9¨;ªDZ?G£˜DÄ\ùç†Î/ºøÕĬ"“hZœdgWDº$ÆÃ=»<óÅ9b@ÖÈ«Ÿyòº3­ÍnW­·U;4íö ÇÝ®%Ц‡ñ”¹åÝš;î¦brW¬öX‡¶ÏÃ-¨Ù®¿Ãîv³»²ïG¾¿ÞcÖú.ÐæÔ6G´¢COÕET‡mà çúë?¾pþ¡7­EDQE‚¾—yx¿Œ%&Ù^ÓøôeÇŽ¼ú™¿N34Svå3ó.?å«ßvŽíXšh&‡CDäóyÓŽ½qÑçó¦ýôÐ>wÏwí‹ÿ÷`Áþ½‘íï:ç®-2ý]«Í!"_?ó«/^‘ñÇ_¨ìÍZEiù7ò衈‚ /,»I“¢üüð‘£Æõ•ퟌ×÷ÇGޏyµˆ˜D ¶»+ÇuY?~äCýzêˆ~oÝu~ÿ©7zˆˆ,úrCZà·A9ŠÚú±•¥s§ýôP“o{mïÔ=Ë’ã'ücÖç÷çs{I§ÎÝFKÂ.ë>#Ó«v|þÑg/¾8÷Šûÿ+"ÆÀ—ÿ:;ÄšƒˆO@¤}UÙ[פßþÚ¥°uô“(¢IŒ(w]>þîg¾š~Öà *Ÿq\îgÖÿßúmÿßÞý»$Æqÿžý †„,i(T°±©=¥%Ð-hk†p(k ,²¨ ­–2‹ § ­ÆDü#’jip 1älx$§êðôº÷kÐãäîyžããó<>ç[µ¦J&<ÃkÑÉ?|TCÝ0aY­6¤þÞþ ¢¯VÿlÚ¢;¹¨ézº>4tä¿®Rs"²˜}¼ÝˆZƒÝ¶WÀwîʈhšx}þÒýƒ*ôúüš&¢5Õ,¡™è…ݱ°ÛüyêMí4×4ñ{GG|³‘ÜæŠˆ¨ 3Ké´þQÉ_.džž»‰Ä’e—¡Ò×xðÛŸP€í¬«Ñ‘áA‘Ò®ˆœåîTÁÌô”zêQ·¬nÚ‹’­÷BjRÿ¨œïç’ÙŠ]꼟nÎt²½ü®Â^¡KîlÌ^‰«¸h6È]È]`ÂÖwoòÔÌ£#Ü]ä/—Š`ȹÏÓ`0ŽpSt1t{äL˜g8"t{a°+ì#Ǽœ£\*ŠH/„.¹ Ö C*`}Í÷ÎÉ»àÐ@W°¾ ¹ ¹ Ìh­ï¾½¾PX‘»G{TøïBöÚ2¾ïIEND®B`‚libjibx-java-1.1.6a/docs/eclipse/images/Task_2.png0000644000175000017500000005405111017733664021571 0ustar moellermoeller‰PNG  IHDR|÷ˆ1 pHYs  šœtIMEØ 2ïŸÌ'tEXtCommentCreated with The GIMPïd%n IDATxÚìÝyœåÿño÷ÌÀpÃpÂp#@PÀƒÃ‘¨¨G~„ƒ&&J²šÝ˜¸“hvÙhÌj€ÄDMŒñ JâÅcP1^(ˆ7ƒ\Ã1Ã5Ìô\]¿?zº©î©ª®¾ù¼_¯žé®ª~êé§««¾ýÔÑžßöccä—H’®<¥›æ.¼U@[µøÂ ºì²ËhiõøãkÅßߣ!Ï=ôÓVà ƒwþý =ü{éú%ߣ¥Ðfù¶¾@#ȶ¿H–y×þR’´zÙ÷Ãßÿ_¡ë®¹Z’´§º––B›Õƒ&!l“¯êp­ššýq=·°À«žÝ:æd¹‹}=ü‚¡¯ðõ=uÝ5Wk×c,dˆßoÐI{‡Uëýõ¯ÆõüñSÎßo´ g¹Pî¾Cu’¤Óκ0úB»t ƒ €La;œ<×êÐÁƒúðÝWué%«Oïž1=ßþ*=ñ·§4ö¤3ä7 õj g¹V®Yá—/ÿŠ>ßw”¥€ òø’¦±©Y¾ûªÎ™3OÞvtà°/¦ç{ÛuÒIÓfëÝ7ÊuÊÌ/†Þ›\+·¤kM9cžÎýêzøœ–1G¨&• *ªoTMƒ_ï~Z­ªz¿›šd© Wuî×Cí:¶c) ä½äñxÿKJJÔç®ò.]»…Ê ¾7¹V®YKà³/|¬4ª¤TÔYÛ÷Ó‡»h¯Ï¯††FÕ74¨îPê¶WªC¯.êwâ êÞ—ÃÞ‘_Þ{K%Hž &Ø>_²xƒ J‰éõxBïU¹Ï¼°ÎU9çŸ}zLåšËŽ|®ÝðÈr[>»nä^M ÒÁ¯¢NEª/.Vã¡Fw*R}C£ä«ÜêêêUýéa=zLcgMP‡.YÚ÷+gH&vé&Ç lWÇ*îÜ{ošïXÆõw­jUhå®~ñµP¹×ßµJóÎ:Íq¸U¹­ŸU[x<Òðú:òhµO5…ÍòùUW[¯ú†Õ×7¨Î× :ŸOuuõªõÕ«êà uèÕE'NÇÒ@ È{É“ü¾ÄËœ>–rï½i¾®¿k•e¸t*·Uà³J‚I]Ô¤Ú ÚQk¨±}‘¬Õî݇ä«o”Ï× :_ èÕC_]½¶}T¡ÑSDz´K ñ%)?%¡‡O¦ž8ûrƒÌ*¬YM­Ü9³¦ëú»V…žô®¿k•æÌšîXn«Àgµ¯×0¤¯W»¿0Tí$R»þ=Ô{Ì55ûÕì7ÿ› 57KMÍ~5ùýª9|”…€q _ò¤ó>³³gL {üÂ+oØNï¦Ü³gL }æ°wöŒi–up<†¯¡±Ùzá“Ôùµô\e½Žúå«ôèÕÕvåÖÖz÷jëê»v} ò蚟,fi vÛbÄÎ|LÜ1_CÂeß›hå:Í+r\,åº)ϪÜVÏ®G®¾Ñ¯šÓNÔi’ü†Ôì7äöì9ôðÕò-€˜°w,yŠ ¼¡ûÍþÀO•½µ~£«çž2e¢¤À^NIòz=jlù¹3«rͬ†EŽ‹¥Ü·Öo´ùêëÇõÕ7hæÅ3uÊÙ'³´!G¿Ò2ƒ]ºI\•Ûì"uu6mËôÁ æ1í"õDÙ¥ë*c-wý»ï…Õ7ò¤`è›rÒÛr]¾OÚ ißÝm®—gw&mX0³¸^Þñ_ÄH_¹'Œ•;qÂø¨Ã­Êµ|öKÙfo;Uû½ÚC:sÊPM>±¿^õ–¶í©W×£¥ý4pôœ4J]Kºð €¸ÛÏd1Ÿõ<&nüxw—Œ‹<ÏîlÚT—k.;ò¹vÃ#Ëmø¢(ºßS ý¤IÅ]4ùk_Ôdéh+^¼£¯$é¬í¥1Ä…mhò{̪««ã¾,ËÑ#‡CeEþ"F®”Û*ðñ­H,ìyó'zéç£i qc[œ<µõ:{^™ž_½R#ÆOWÇÎ]c{~Í}öþë:{^™jëCïM®•køX8€x<ÿ“>:û–O%IÍ͆Öü$ÐÓ7çÖÔöô¿ IøH62@¶>Ú iÏ× ŽÅítö¼2½°ze\eœ=¯LMͪ5]ï.×ʵ|,e@¬Vÿgoý«ùè:IÒ™Kþøàî{W«oí£y?Ù5°ÅóÍžd^äg8ø9¶îö3Îç:¹ŽÕÕ«W÷κàâËãz~cS³­Íùrƒ—Ÿ ðqjl2¤c»%Oǰá» Ôé_þª^Y>T3®ÙæjåNˆrÝg6ÞÏ2ë€äÛðh›/7ø%¤ð©g_a‰ZL:ÙëzÚù?? •7öÔ_¹PÞ£´ê7K%I|åBuì1Jû>=’´ÞƒÈ‹sšÇ{¬.ài,c }Þÿà#)1¦Ë>ýß—«ºê+z@Ò‹/•Ç4}ÙÒ*=¶¤D/œ¯¦&C_¾§Z]R¢KÎWS£?î°gX^Wɰ w‘ížk׋9œÞF 1ñ²ñÀ÷Ï¢ñôåp×ÎZ±¼\^šp[.½¼|üå{ªõäO«¹9°R¿¼åñå÷ŒúaŒ lñH4œî€ø7¨æ[ðóy³;®H'à2ìyó'a¡ïô›Þ =¾ò7uåoŽ<ó}§ e¶¬6$‰l„‚ó‹§<Οa§Ï2- ù¦¸ÓÐX¯Ó¿³<,ôMù¿Ö‹wôMè‚ËV»[SÕãç´ë@æ$,‘_î iÀ¥Ê?JÝÇèôï,<ö½®âîÅšréuzõþÁ:ã[Ÿ§ôƒïÆ€p¤w#Ëç Ùˆ>À…³~´W«oí­³¾ò ©{iظbùttw]Âßì#Öç³éô\ÎÄR/ÑÏ/–À—¨>}ûißÞʬxaÙT—|×§o?IÊûöž÷“ýZySOÉ I\sƒä«Ð3=­²¥Õ1oœ†¹Ù-릜XæÉFHì3ÜÖ>Clgó8ð7ìfûöV¦åM·š·›a®[2ëYŸ\^èy-‰¶i&VvµOß~zì±ÇŸ[vW•$é/ßé!ù*´rÅS®NÐH–D~¡Ü®ƒ syøÜl<öVîiµÁÙ[¹'ôÜTn€"çíæ[–¹nɪ_ß~ý[Õ¥Oß~–õËæºÇúZrõ² ‰Î7Ýa€ä·l[òspyø’€úöë5¬%Säü"ëüŸìú˜Ë³{íví¬Ÿù´r2Ù¶‘õ0·©yÚhmb÷žDk?«vŒçýJ¤œt=ùÏjý¹žŠö8Û»íl:¶KH0ð%’æÍ=|ýúPåžÝ­ˆÈaÉúb5¿~ý„Õ©rÏî°éRÕ+íµ;3œÎ® ÓÙ¶ÁÇNó³jSó´Áéì^‹Õó£½>s%ãõòí@¶°Z:­ŸcÙvÇ»]w»M‹Ü%c»„>7úõ`»€¦Zä¼Ó=óÈ´ÈíCªOÖp³]w»NNÅv Éå1 è®: Iª¯¯§EЦ½ºî5]vÙe4€´züñÇuÆé§ådÝ ”P' R£}ûö’¤];whÅòå±´1`à Ëáéx£íæ®ùgk]r™U;fzYŠöKiùƯÈ‚íÛ´üÓ.Ý];wXOÇÆÉnÞéš¶Ö%—Yµc¦—¥u¯ý+íá.ËOä|™w¢•€ dnûá´>t[§];wðεÀ ½a/“+ÉÈyÇ[Vôc7]aÏ©Ð<.8<=†Áº™ëhWnp¸›ù[ ‹,h‹Xþ‘¶À »C¡Us3}"óv*72´ÅR_sècCi |Û¶Ð"`@° F28v¼}à‹ ´5»+_Ê™@fµÔêd ;©8a$–ùpÞ@ÉÄ.] GYír%´¥¢žA ð0£t»–éãã8>p¯¤g/ þ˜ȲÐ9ÌÍx«3t£•—ªzº™Îí8Â!ØP©Aà2úœ†Eûíj·Ãc™.Z’Yn2ƒ)€Àä•dþRF¢u ¬@ dCÈ"èdç7F544¨±±Q~¿?gªíõzUXT¤öíÛó¦*ðÏz쑇uÎÜy´Z–áý¸U[W§];wèƒ÷7iÿþý9Qç‚‚•””hü&脆¨¸C1{Rø$ÎÊv¼?€h´ß^½ýö[?n¼&|a¢<Þì¿`ºÇãѱº:½õÖ›êÞ½»ºvëªúúzÞÐT>Û´ñÝw5aÂDuèP¬ÂÂBy½Þœ¨{·¢.:ù”©zmÝ:]µà«>°â÷ûu ê€ÆŽ§Â‚Ê[P;¡¥S‘ØŸ3!•À2¢¹¹YGWoà–+<-õ¸`Fè_Z¬ütM¹l]ÊçSW_¯êêêÐãzŸO%%%­¦«®®VûââÐã’’uHð4𚚣–Ã;wî’ Âù×]­gîû}VÔ¥²fŸîYÿÞßü±øŽH’zwÕø‘c´dÊWÕ¯s>¹ÀvÔ0 r|÷|ûëZò¿°-cçÑZ-ùÝ»š2¼‡~8,o/úBzÎ5oèùåÓRúª«ª4è„$I‡ÒÁƒ-§ëÕ«—ª««Õ­{÷ÀB½c‡Ø7)IÝ»÷¶oï |кtîšÑ÷¡Þ׿©gîûmÚëqóÚ»´~óF]xÎV " 8¶H%í¬õikÕn-~ô‡?rŒ~>ë&>½9ÆãñГdÑvÔ0Ô*ðýó—ÿº?jH/­þÅ÷CÏûþ/$Úhà»ü/ÉëñÈëõÈßÔ¤.:©Ÿ.êÛ³«NOu/žØ!/©±±Y¯?2]Ó¯z=e/Ö.á’ŽÖÔ¨G¶Ó­©Q·nÝŽ?/A~¿¿Õ¢c§NjjjTC}ƒû«[×nY^}ù555Õ«/¿¦3fžÖd$ì}¾³B—Mœ(Ÿ¶ê¶)Ÿèöõ£Õcÿ¿‡Mà³4bÆ4y=jWèQ_êÙ¹Pº´SŸNEÖ»½ÞY>J]÷´äñÈãÛ®ó­”ä×Ó÷¬Y‹ÞNYâ3/”Ñ®0œ6 rèCåñ„BgÇŽCã<˜Ö7þœëJ>©Ijlð©hÌ,Ýòò[ú™¤ÿ¸ÿ¿ôßßúAZëSY³/г7r´$ŸNk÷I …¾âýó$ù$I³GõÓã7ªrʾœß½ ñ|Xɦ"ì¥2 éäï?MW\t¢ÚxU\äQÇ¢uëX ¡½;h×KuÑuO>Gµ:ïëOH¹ÞŽÚíÒ­Þð©öí: O·ÝöY5›0irèþ{ÞáMÌ÷À÷Ù+oïáklR—®Ô¯gWõíÕEíÇTßùoéÑÿ™$IºêšŸë¯Ëo– iî·7¦tÃâ7Œà—!5» |Éèâ3 ¿ I{÷TªÙïWSSSè6jÔÈ´oŒž¿ïAIÞ½[^~KÏýt¡**ß×5ÿû–ŠÆ­[^~Kå3OÓ” 窸¸½Ö=¾*¥õ¹gýCTÒMëJu’ }?žvÆ >ºgýCy½k×ÜK\>"‡™ƒLd¯Vä4Vå9MoH#Ó]oZ´09>Z=í^_¬¡Ò©¾æÿvm¤“wÏzlùÛ’§PòÉ(h¼‡ïÜõzô&H’._üßzlŸގÁÞ=|ÿ»d±F é¥?Ý¿JŸn„¼[ð€F üšÓonø†¾}ÏŠ¨Ÿ±ï®—$M}zGÌL2ü~ùý~m|ï}•ô,Q§NTÒ==»wϘyšüåo©bïûºöW7jåí©¡±V‡khÖOïÖ=ß¿-Ы¶¨L…Å]BA1ÙïÏúÍ5®¤›ÖZ_Hó¶)ŸèvÖÖwN’$õïYªW7o”f¥nyÉtØ‹¥—Ênz»ñÉêñŠVÏha/Úp§Ðh©¯Õ|èD¦Ý8îqMû·…øä¿kì—ŽK7ä{»ôÆ}eÔVÈWפ‹nü –bXßuw/×Î7_Ò9W TåËèÅMítÕ·Gªòåtï=«uÝÝË¿,: Ÿ4ùäа ï¼¼ùØjz$øå!U7ùE÷j×úÖ½H*_žf]uû&ÉãÕWo_'ÃÓº:ãÇ×7_£úúzÕ××ë‹¯Ñøqããëe“!¿ß½††ºã·úðÿÁ@høý¡+buìØ1 |‚&4±åCå×¾}ûµ§²R;vîÒ¶Š mþì³ÐnÒI5xð :vìXÊßøó¯û¦Î¿î›’¤;gŸ¢«ïy[Oþø1u.î¦vEUTÐNw]=L7¿ô–$©ü•­Â^²ßŸ}»‡nGëZ†¾o\4Tûv–$õÕ§´>é u‘=[É–©ÐKØKV=ƒmi¾¹.¸ý´Ú®žÿã½zàþ»5nJYLŸCFXèû¬p¯V¾¯Sþ÷ZR¹S]Ï?Y•/ Û÷«¿^¡éÖ¼_¡_Û¡¾S)IêÓ­8ì/æ¼ÿîú·B·I“On5ÞÍô\B&K{øš½¡Ž3y$OXï™GO ðy ÚIòÈ«íÞW¥aåœ}öY’¤óæ}Q’tË~û† °kU’ºtî¢êƒ‡m§íÒ¹KhÚx—/ÃôÞI M#pp«jzƒÓ¦cyž{΢«TWW#cäYjh®UOZýáßuò€‰ò«I·ü¿Nú÷‡ÞÐk-'s(EïO•¯^ªsþ™œ5›Öèæ?¿,IÚSåSC ë“iæh Ó±Ò³ ¤‰Î7]=fÑzy€t nK½-ÛÒ¦æÂÐ}s_DÙôä§kÄlwåúýÍjj l£<^¯>ïxH·?s·n9s®¤/H’nænÝvþwU¼óCIjl ¬uûõî©çÞß®j5or]yrŸÐ¸HNÃß|}NšrŠÞ|}¦N?]o¾¾.ær¯¾e!-ô´ì¼ ®cƒå‘WÍòzš$ªÙ[¬#ÇšCEäýx6þÀA jß¾½Ú·w<>/8m¼+zÃð«¹Ùßòš ¨:™õBgWÉ8~La:7,Ï?ðˆ¦–Í•Çoèð±**h§SLÔo?¦3FŸªzƒš›¥)ÎU—ÞTþÀÊ”¼?í$5t°|+ß^©?s§ÔAêUÜ[õªÍ´ÉZ^ÒÕË-´D¯T'§ÞÆD盬à˜Ì0èvzvï"|Ÿ=+ð¶ŸU T÷:Nëz¹n9ŽO†¡û_ù£.9Nwî ôÐ]8rœîåºsòõžxjhùÕ½H?»d„«ÏTpÜ´SϰýZ é4=²,ð54µ,¤žðCãL¹O^_^ÿ1ÉS ¿ÑNUGì|R6܆~Üž!íÚ½»Õd héêÓøŸø ¬/c˜CÇ.&س˜.EíÛë¿Ï¦¯üòuÝÿíájV³N}ªþôÒã:{ê ùýÝóýÛtÆÌÓt΢…zþ“þþÌþÂTmÞù±ÚÛ„½¯=¤=I¤ö*Ö¾ªzÍþÂÔÔ./iê=KEX2vcFÖ#Y»“úœêkÙñÔ%Ú±~„C$Kmc‘^}øg¦­gw]üõŸD,=C÷Ý|v DÓ †´ïÈ!ý«Æ×j²~ŸŠÛ Ð_x]½ú¶×äSz¨c·¢˜>ïÓO›¡×_{%4lúi3_´é‘eÏg |–!ÃÛ,¯šäÙó”ŒAWªY=t¬>µÇÚ žˆXpöì©Ô¨‘#¦©©9¢]»w«ÿ~-ÏI¬7ÃÍoþEtô¥}Á.ê¸<Œß/}óÞ-ºó]UïoÐY§ÌПž]¥fÿ…¡ëóY…½dX2嫺bów4¬¤ŽÔí {K_\¢¥}©½ºª¸c{m­Þ¡ßL¹5o?˜nÎÐu c©>&Ði>n–ßXC_,¯Ï©NÑê¹ —3t‘iÇ uÑ‚[TÚ!ðøw÷ýBžð=ºÁC§jbèáÓñ³teHPZ(ÉttÈÇðèàvC;uÑø)£$IÏýãS{A?uèZèú³k·Î’¤­{YÓO›¡­{Ù2òùËÀWßl |Æño!ÿÍ*ðÔÉ»û ƒ¾¬&£§¼†7ôœTnœ"{ÏöîÛ¼Îõ>Û@¼ókrù#Ïæo:ìs®[¨ò‘$½Ór–ÿX6÷øA—Æ|møÅ¿¥¼ý:÷Ñ©#§êýuBÏBaïΖª½¤ö%]Õ§c7Iíµ£jŸN95§¯Áí¤«ñцÅr"D´e,eE[aG¾Öx__,õõµ'úÚ€DÕ6„wžøÛ«°eƒá îA ìUmca Ÿ‘ÀÃ|7]p¹~ÿêcÖ·{h£´µònºàr¬®ÑGïí Ô£¨£^¹J³Ï·^ÿžvÆñK'¼öêZ†¡×^]«SOŸéú3ãfzdSàkôÊ#© ˜f<’G†¼þÃòX%É/c@™üFwyŒ"y=ç¤>ð…ïG-6ýf®§%rù|õaÓ%øöíÛ§ˆë-ËÜÁ`.:'Fžy[P,ÝsAàzwgØœ¨‘*?Ÿu“n^{—þµùM­¨}LÝ:¶×”‘§H’×ÔáÚzíªÞ¡SGNÍùëïEë}‹g™‹÷×%rµÍØ -ð5†¾†æÂÀ}Oë^ƒº¦X6éFè8>I:E#¥3¾¬»þñWí9tHý»w×M\®qGOÓ]¿þ¿°gÞÃöó·î•rËϨy¸Õ¸Èòœ¦G–¾¢öT~ß5ZסHã§ÌÖVªS‡Ž’·‹ö5ÕÇëÑÛ^Óácé¨Npù6¬Àïñ…è@UµŸ0@‡ Ÿ.Îå¬Gª®ªV‡Ž¾Ó6²3þøýºÚZ•ô,ÉØQÔ¾SÚƒ^d諜²O÷¬Hå›ß”|;#Š¥Ù#§jé¹·æü¯k¤jå•ï+DVøh‹ê›¼ZzÃÅaî½zÍÔ1tš­{NÑýõü/Í?HüùUuëÙ1ì©õþô\N¹ø.¿úÎð…¶å&I…í¥ñgýPé¾:Zß¾½UY¹Wæ·sWåñ…Ûë =®¬¬Lx~Á‹'WUU¹~NÏž=ÓvÑåHç\·Pëþ´2ã e¿Î}=x³ø€hÛ~ùËߥ¨ÿ£åbã²ïÓ¨«Ý¡ÃUµ3¡ohØÇïíÕ•KNä /»uéÜY]:wNëv‹ødÍÊ€DqÒO*éÙK%={éùgWÓbùø$©ºê­Ï>øn)¿,ËŽÏ·…îŸ0xhÆ^èÁƒÕêÕ»ëéìß§=JXB/ZØ+62ô¸bëæŒ†>IÚ¶­"tèÐR–@àË7>ø$6=êÖ­[Úê³ñ½÷5qÂøVAYJ}hºæ“/õ W¥ô>C† Ãü&C……ª9v,ÑÑߨ IDATìVPX¨êƒU)}¡~Ã!é¤IC7CR×nÝZÝŒ–éSô›%IMÚøÞû¡°3tøÈ´„ªtÌ'^C‡ ;dià“!É0Âo ô ™oéq¼Û·nÝ?rø°Ž>Üê~ ò©3vìh}øá'êÖ½»>üð;š°Gè %RºK×0 5û›MÃcÔ‘–Ý©]»uSŠ;ÔÔ³¤—$iû¶Ï4tøHmÛ²YC†ŽP×®]CӘ狀>‘ŽÕUé°‘aóµ ;‰ìêü|ûV >*4Ã0ôùö­–Ó2,¥¯Ùn¾æö/6RÛ¶|šòº@à‹QŶÏÂBŸùþÖÍK’†}<`9ô¨mß¶MƒKKåñx$I~¿_;¶oWé°aae»±}Ûg*6B†a¨tØUlýLƒK‡K’Ž=š®K—.¶e'«>Á^½?üDCÐöÏw«g¯Þ¡ñ¥ÃF„µ_p~’T±õ³¸BßöŠ-:|¤ Ãßj>–ïãÖÍ …¼à-õ™8a¼Š ‹$IÝ{ôÐĉãÔÜÜÔêæ÷7Ëïoφ{{Å•~LeÔ[ê^`ºûº”®í[RVŸL-‹†Ñ*¦"ì¥rœ­\¹R‹/–ßï§1)éá:l¤¶nùTƒ‡ lØL½wÛ·WhøÈ12 î ÛÓ½Gy<­ë ùý~Ÿ0IݺuWccƒû°·}«—•ß´{9hð¡Ú¾í3 .¡šš@/_çÎ]RZŸ°ÀÒ¥XÍMM1='ž†ßï—á7Bï…G2BÿCá@Çù$ëõë ?uˆ¬›Gž”Ö'›XõÆ™C[dxK¤ç.Yåp6{ölÝqÇZ¼x±V¬X!¯—ß=@>I6|”¶˜B_ xm׈‘c$YíBuEÝ»kä¨1*îÐA;w‰ycn†¶o /6hðàÐðŸ8:uîºï´ñK´>f¥CGÂqii°" e®È*xâ|C‡Ô¶­›5dè°–Wèi™ExY†¢÷%ëõû ØœÃïÃ^ A*¶mÑP›]ÀÉ|?r1Æ»»–ݼ@ú”””hÍš5š>}:¡ùø$iøˆ1Ú²ù# .-Õç>òÄP°ëܹ‹)Eï]èÖ½»<O\óà±_Û> ïU2 :"T‰cÇŽI’:uê”ÒúX…ãÏ>ûD¥¦ÐWQQa;ýˆ£ãšO°çuHéÐP¬Ú^±Í±^©zýÁºØ¿gÇQÜ^±Õ±.É~?ÒÜÌËb,_`â uæB™ }óçÏ×Ò¥K5sæL-\¸FA~>C††£-›?ìÆ•¡c55PÕ¹sØ}7¡D7T†a„í: ìJ>>¾cÇNÇh’7¼ÑŒ1:<ô%종Ë-[>Õ!CèE“†G S©zýv!nË–O[Ê6´}ûv×õ˵ cuBNºçœ7!H½êêj­ZµJ‹-Ò‚ h¤UÊú“÷TV†®u7|ÄèÐýN:©S§N­îgnƒc¨¶öXØMÊL}FŒ­ŠŠ ¥zÎÇÒöŠŠ@øÍÆ }K0ß^Qw͵à—ê“6‚7Ë/AœÐ¤%ìÍ™3G3fÌ`w.2"e=|þ– ɦ> û¸±ª­­m5mÇŽSþËÁ:E>öz<êÜ©S«iö7$ØÓ—jÃÓ4Ÿø"¸´½¢"%=œ¹(Þ0f·û–ݺ@ú•——kòäÉZ¶laùø‚ÝT="~I£cÇŽÖ“§c9,Ýè¥+èdk j‹AÏ||ÕY¸©èã ] }ÊÊÊTVVFC ÿ_p2hÐÀ¬y±‘½Zô !“ÏiXäxó‰n¿,ENÈ_ Ûô¤åò œzìb€œ |D¨dŽ ð —¹Ú¥ûØ#ÓRùøÎ™;–ÈQìÒ ð€À|\HÅïêò¿´dIhËÖ_ßðx<ü2´µÀ··r6mÜ@Ë!?ƒXQqÚæ¢²1XëDè³råJ­^½ZË–-“×k½síùgWÓPYì '©o¿þŽÓlÝòYFë8løˆÄŸ9è]ð¥«xçÛ€<ùHL z>xáÅ—26ïÈ`Ù h#ÇY3§2­Ê% &ZÐVÌž=[wÜq‡/^¬+VX†>®y›Ýžvµ6mÜ`»=ܺå3W/öæ]r¥$©Æ×Ä;ßßoIZý·¿„[ ™ä&¸™Ç»é³+3Yõ`¯¤¤DkÖ¬ÑôéÓC²W0{bí¶ƒÕU2³Œõìå8>jà †½¹_¡c½6Åü~ϽøŠÐýgŸzÔñ[R/aËêØ­ $'ôÍŸ?_K—.ÕÌ™3µpáB%Gƒ_´Ð— Ý„½9ó¯PMa¯-3¿ÿsæÂßšUæÜŸK²ùlÜ`LWøòAuuµV­Z¥E‹iÁ‚4¡/{_ß0äg¥Ž`øó5J’ξðr½ð÷¿ÒÛ—ÂP•Í¡Óé¸A­ÃÞœ9s4cÆ vç"ûߦtæù_ÖQz÷`áh]“Î<ÿË’¤—žy,§¾éd£hÁ)ž`娢³šáˆOyy¹&Ožìx–.rK°—Ïn»혺dx쑇]Ÿì㮇ÏÏ ö¡O’Î<ÿË„¾8ž™9H™w™Z·ù¼È]¯vã©;ˆ®¬¬Leee4D“©8â |~Cj&ð!ŠCÇ5ë‹_ÖÚÿK}è»aÕÏTYs@»öѯ.øaN¶—›d7M´çFŽ ’‰ÔÏ,ö{äᬪOôÀç·?~ïþ_ÿZߺáÞU´„¾Í8ï2½òÏÇSú¾ù·kHïv:wÌ8m¨Ü§oþí6ýö’Ûs®­¢õ¬¥*PE»¶䂞½z»š®êÀþ´”c%Û®«è¢‡ÏP³ß~¼yÜßž.oaW½ûÁn4n€$©ä\9¼-9x¬Q§Ï½Tëž}"%¡oã®-êÓuˆÖnÝ¢ŽEEÚ¸«"'Û)SA‹€ _¸¹öh:ËÉvQõû[zù,nñÇ75ù5í·É[T¬i?¸MM~Ûç&û6np×´Í+Ÿ_ǸÁ]C·XÆ™okuêœKµiãí­Ü“ÔvTÏÚ[U£~…ÅÚuàˆFõÈZ7ÇãxË®zøœ.Éò»ûî ݱ­F-Z¢ÏvÔòEKäoôi–Ãs'íÞºgÛ¡¸_L&.cõrñuX}Ûñx<¡×1qh÷°áÑêxðXƒ¦ó%½ñü“’’×Ó÷à•ÿ¥k¿E/mÛ£zôÓï.}wnÏ^½-»ç{öê­Ç{ŒµäHPKæ6/ÕóÉúÀ×ì7OÚXxí·C÷wüòaÍûŸ{´|Ñ]óÀ=úç÷õ„w¶l "‡¹•©“K¬ê›H]²å$§‹ëº©cuMƒN>«Lo¿¸2©¡oùe?ÓO~±L·.¾64,Nä¸Ï1um«³t.Ëb×P߬¿/ù¾$…þG»¤‹Õøà°“G–„†½½¹:tß<Ü<Î\ÖÉ#KBÃÝ–co7·¯!²æÇæÿVå[½þȺ™Ë‰uZ'oo®nõ“Z‘ßtÞÞ\íúR=k4ùÌ2½óRrCŸY¾œÈ@æŸßýIƒð¦$iÍøhÏöÆ'áaéOª5mtIØpóôÁÿÁib-gÚè5ûe9.ø<·¯!8ßÈù§,ÏüØM‚÷cÖ7>©¶¼À®Ç㉩œ ê£ š4ëmXû·¤†¾Ÿüb™$icÇü8‘€Ì¾(Çð™Ç5=2_’ÂÎÒ-¼jUÔòÝ 3wꘞú×ÇU®êì4ïXê5mtëžÂ}\åX¦U#§sªCäóc™6ñ–S]Ó  3/Ö{/?•´Ðwë¿vénùË6í­ªÑ¨’îúèÀAW'r¸=€6øœ×2kjôëôÿ¼]-Ñ´ܦu?½Mž(»þNÓ3ìñ«•yÆØ^–ó²«Ï©cz†=?(–r‚Ã"ëå4ßW?<`;í«°¬—Ó¼ÝÔ/rœS}c=&ðŒ±½,b Ógõzݨ:Ú ñ3.Ö¦W’ú¤øNä°;i€¶øL—`±òøº?|K¥>ˆ8KwR”°ñòûû[ÍO’fŽï6næøÞa—‚±+댱½Z=/–r‚Ã"ëå4_§ö Î?²^NóvS¿ÈqNõå§ñfŽïmù^‘?Ýe5?W¡ïH½Æž~‘6­{:©¡oùe?ãÓ ˆY>]z%±ÀåÂËÿ¿ãgJ]¶Rçýò¿"ÎÒu.ßíñæÇvÏiöK/½·_3Ç÷ÖKïí©œ3'ôvœÇ™ÂËtûìÊt:vÑéuÚsªo¬ÇÜ™?Á2"é‹·LI:p¤AcN›¯M¯­JZèkëgéFs«c0mèl_=|r} _cƒÅYºQ6:vã_ظ/ÂÌÓZ aã¾°²‚Ó¼°qŸër^ظOgOìã8»ºFNk./ø}:¡–~uÿÂï[_Ooà£' éP}´A'L>_›ÞyÆUè öîåÛYº™ V‘¿²BÈ’úæÏŸ¯¥K—jæÌ™Z¸p!ÒÆ™wåš^døK†¨_/ü¬ì‘&‡Ž5ªÿÄ/jÓÆ Ú[¹'ï_¯Çã »¥*XEÎ'‘šh@›þb[]­U«ViÑ¢EZ°` [ÉîÝ“\ž¥ ¤K¯I}'ÌÓ¦«µiã}a⤔üþn6HWÏ™çYÚNeÑóÄöæÌ™£3f°;a¬vå&ód ÷•:Ò¬¶¾Y½ÇŸ'IÚ´ñŸ’”·¡/ìÂZ¬Ã¸W^^®É“'s–.2†cø•|®åžãÎÓ¦ÿÌûÞ>'Á]©‘ÃRý\«à—h@[UVV¦²²2­¤b÷m|õ:2¨¡É¯'Ε$mÚø¬6mÜ I9þœ“Ýï»™Þ|ÂE<áÐi8!’+»nã|$>dXSË2Øm̹¡a›6>—ÓáÏÍqr¤/ð±ñA–0÷è2Ú:ü%ÄŠŠÓòZu"=ÿìj™ |4²›9ü%ªfëË4(€Œ8gî<ž2œ*ç ÝN8­´€ÖBÞ{a+mÈ?ôðø@à>ø@à2eÃék_“JK¥‹/–²ÔãñXþ¼šÝp|@6øîw¥§ž ¾§Ÿ<I+W®ÔâÅ‹å÷ûi ø€¬s_,Mš$y<Çßýnà~i©ôÊ+é~üc©¼áÙš U Œ ~V18,r|´ò$OII‰Ö¬Y£éÓ§kñâÅZ±b…¼^ú\@à²ÓSOn—\"Ý}wà˜½ Â`0üÚפ!CR¶K7Ø3hþkx™Ð7þ|-]ºT3gÎÔÂ… i”6jô–[ÿä§³S6OàÖĉÿÝ»þ—–†ß°áx¯ÞSOŸÎEx³ d±îzeW-½ª««µjÕ*-Z´H , AÚ¸õK/ {<åÆ'R:?Ðb{Åç œœÏ{‡ïÝ›4)Ð '«]°n$€ì {sæÌÑŒ3Ø IRUmpÝ.™×Üï7õ²œ~|ጰW:l¸>Ûú¹õ“&…¿Y³ŽÀY³¤¥ââ¸æOHs»;—ãô€ìP^^®É“'kÙ²e„=H’võ˰|]ÿKËé·Üÿu(¿ß/ÃïŒÌ=u“&?A#°&OI"ÏâgzÂÊÊÊTVVFC dÇÑɣ𴗄`Gà 6RÛ¶nNÛüœ‚˜yœÛé¢MË´€Ô»õþ¤u~>Àú¶Vì¤!)åt6®ù ÞdžµËY¢éÀ6í¿ïR5Ø €Ã¿õ‡„Ë¥‡ ‹ôøòñ7½|³ |¹ÄéÂËœ´'¸ð2@žãÂËyŽ /ä9.¼ ç¸ð2@Kæ•ÝâÂËyŽ> <í8~ãlôð`Fèfõ@~Y¹r¥/^,¿ßOc€À Àãñ„ÝìÆ9Mo÷|é7{öl½óÎ;„>dŒë]ºÏ?»šÖBþ­¢â¬{‘=}æaæqn†Û• }JJJ´fÍMŸ>]‹/ÖŠ+äõÒç‚, |{ͦµÿ+åïÓRúæÏŸ¯¥K—jæÌ™Z¸p!‚ì |téã´–]´@nª®®ÖªU«´hÑ"-X°€Av>$¾ëά¯¾_ýþ[ºïŸŸóî!oÙí~µÚU 7ÂÞœ9s4cÆ vç"»_¶ÿÃñHhK8Èmåååš"/u k¦o¹&|éÎðù=y³^.¾Vן_šöúéx±,ßn¦öÚ–®ÐWÒ³—«é\÷+û #©·‚õµÜþª±3FªqßTWq¿ªÞ»K;_¾UÚÕ«`ý_%IßöXÊëc¾]~iÊžŸhÙÜR{Ë‘×Ôãzz‚½|±±d„½h½{RŒ»t·¼ÿ†~óÃ+]Wä;wþEÃÇO³WÓP¨¦>§ë‡_k +*–:”ŸfÔ¬ÀÿOvVYÖ'Uîþû¶$ôÚ„?þî…CÓRwä>zã ?BßÉS§§t^ÁùD {1>CÃÆMÕ·ïxD¾ëz=õ·'5kÖ¬VÓ­]»V_ò%}å¦{5lÜTÛWÑÔ‹µ·üÿ¤†Ò¨óþé×ÎÔ‰Wß/Iú+N·Ü(~oþ0ýjÕV}oþ°Ð°_­ÚÚjœy˜YäðhÓÙ  ¼àôæòØ ß¡ÏÈR=7b¾,ËÐqSuåM÷êâK¾Ô*ôÃÞ•7Ý«¡ã¦FÝEv¸¶ÔpØyÆ»ÿ¬Kg|E—δôé-–“~oþ°°q7^4<ôØ<Î<Ú´æûw<öqLm’è8d'ÂÚvà³^zâ)ºõ¡wUÔ®8æ]•µ R“O§Ý:]‹ÿ}ŽŽlì²Õñ¼g-ùOÒŠ_<§/^1Ñv>±ì~w—î-—ÑÏþú±c›$2>2øœN4((j׉õštóºúÛ§«æPCàà¼ÀA{ŠÐ‡l|¬l\Ïg6[>ç¬o¯¡oþüùZºt©fΜ©… Ò(ȾÀwç ´òÞãÒ&^gä®ÚD§‹|޹'‘Þ9  ººZ«V­Ò¢E‹´`ÁÙøäOس;V.R,A-ò˜A§ym1ìÍ™3G3fÌ`w.2‚%ȧp”íaÑÍk‹74ùª¼¼\“'O&ì!cèá²(ô†a;<Ñp¹›5Þú¥²‡ÈWeee*++£!1mêkƵ³¦ðŽ#ëBŸùæf¸SsS†Ý8«°åT†Ýëq3Ü®>NõÄ/¯zø^½kZØã3nzC?=o@èñ  {üŸÿÜÍ€6Ç®wP¾¬·òú‘*»wsذž“$ýàoªzçúÓý«tò›T½áS-¿ýÞ}ä-§ðF°_NzõÎi:ÿ–›T¿w™|‡|òù|ò:¤nCæK’ª7|ª}»èÓíB÷|9¤^MRñ$IRq?©¸eøí  ’þtÿ*}º=ònýÁ5¤—¤À1}ËÖ®oUÞÀC÷wíÚ¥†ýœ&8/U$ù*[ þé_þ ;/9-´÷Ö< ßüó¿Zvén² {Vá-2ìð/|’ä;6ì™_ÿJ’4n\ýý–ïK’枬Ðýqãúhå“T¶tƒ«yð/ƒêÖ‡¾g–ÿAçßð-Çç:tHëú‹e° î®%ä_–ð5Ô«¥ŸOÏ,ÿ‹Î¿æÊV=~aaÏ'­{è/¶½{캾,ìá{æ¡Õ:ÿ«—H>Ÿ}ØS±cØ ðe¡ÃG›ZÂÞ<{ú¬Ã^÷¨a/ò ]+æÝ¾Ñ¦ ð%ÁwŸÜ­?\;FÜ÷·¨Ó~}ÙÇŽã­‚›Ûa@[‘o¿}ëñx¸ 5_.ˆä€l LA‰†t–t‡£L†1»y‡G«AhãÌA€`ûï!øÄÄ©Ð<.ØËdœÖ® «Þ)·=Ž‘ó2×ÁÍ|#‡G–“ªv²«G2{V“ý¾D~ àKga/rÃî´ Ñm8ˆ 'V÷£… «pKYNuŒ5ÐÄÚNv¡0!*ï ø€< vV!$’9¿|(‘=réz_œzû€Àä»]|N!ü«0™ ¡&לÝIéx_€ÀäQð‹ìÁq ©Øý×VBŠÕ.ÖTxB€l㥠€Ü*ùðÍš5+îÐç¹æYMí[«úÂ"Õ´Ó¡âÎòéX»jܰKÆò¹*½âÑ@/_i?*¿BÝFŒ""ƒŸ]¨p0¬ÂH.”l®/aù‚p /_"¡¯ïç¯jûçáÃÚ·ÜæªÛ蹪xTê^ê“Ï—}%2ø™Ûõ8ÿ[Mm¸]˜'¸Z•œÆéuXMçÔnêåôºc âøRú®¿þzÍž=[ÇŽSÇŽ£>§òŸ?ÕÄû¾n;>8î!I‡*Iо[7[X…·ÁÈ<ÌiÚDO´ j×ê4]"áÙ†­Úƒ° ðeµkgäé‡IDAT×êÞ{ïUyy¹«°ôÑþJÝ8ýdÛñK_[¥W<ªŠ§®P¿IÝUùÔêöc 6VÁÅ.HX…§ãz¹²™S=ݾ†ÈP˜®v ì| {‰œ¸±ôõ·Çw=WjÙën]§Ý„±„†Xá3‡ÄhóÉö³O³©~„=/ÇÂÞË7ÎÖó.§ëÖUòU’|ñíÖÍDœÛ]ŸÙ`œŽûË„\ëI /_"={MµÇt©3¢N·ã_¯¨ôšGõñ¯Péôb}üÇ+4íçÓöÝöæ%+„äj IE³ë™%ô|i”Èõ÷êRÃÞOC IžˆûFËtÑzôÜœ½êtö©Ós£]Ó/–úDîê§ìx‚R´ã£µYºCc´ù·•ÐÇ/6/ãÊË˺ØrÃáCúì¥76IaÛµ–´çñ„¯xÝgbkPHæôVgïÆ3ÛçÅòÚcmÇT…>7õÎDØ ^T72„Ù ·š&’›@Gð_Æ$úËýßþ˜¦OçnÜX°{1övHE¯f.ˆ7´ö€ÌX¹r¥V¯^­eË–ÉëõÒ H;–º,BØ‹­‚»²Í·\ mæÞºÈÞ·Èž<»ž½H'ìfU†ù¿Ýt‘ÃÊàlöìÙzçw´xñbùý~>ñ †FóÍí´æù|«r }€{%%%Z³f^yåB|޳ aæ°–h»wô‡¾ùóçëÐÃ?Lƒ ­ i ;B],,•aÍ®Nô艩®®ÖªU«´hÑ"-X°€@æƒh0äïÓ#$öæÌ™£3fhÅŠœ¸´c‰² \Ù…©`o[6†-zü÷ÊËË5yòdÂ2†> Y…-»“)ì¢ÝtæáæÞ=·åh­¬¬Leee4|@[â–¢©xÆ[í–uêUŒg¾€ìE¿2Åøe Ès© {„H ð€À²gé&¾zP¾ºœ†õÏÊœªïC·r™î¸ô"@Ú<úÄÓ9·Þyô‰§yã|@nã V¬w@àXñëø€\æ÷ÓXï€ÀðMrh½óõ³è/îŽy|@þ~ÓNSà»úì¡û¿a—®>{`è¤ß¿°+ôœà}s9‘ÃäözÇj=`^${Ýæç‹.h{ß´Ó3Ÿß=Xqãœ2ŒãÍゾqÎ@ýîù]úÝó»B÷ÍÃd·Ò>tBÏözõãC–ë«aÉþl;­ÛÈ{> ÍÓN×<¯™3HË×ì´­ƒy˜Ý}ÙiWµO“J»èŒ1ÝõòG[¬hŸy³àºâš9ƒBÂëŽàx«áÁõŒÝ¸ÈçFNW2q _pž‘ÿ­¦YöÜ]{î ¡û²Ÿ¯¡YÿX¿O—Lë«'öÐËV‡…>§Ï¼]è3þ¯=÷„Ðc»áNÏ1 #ì±Õ4 ðyø27Ïàÿ`  úí³;²¦®â }~Uì«ÓÄÒ.ÚS]¯Ovsü,G®Ìë«u‚Ýú 8Üé9‘ÿYÏø€¼WßД±yÿßó÷maã—\8´Õ°LÕ@|Š‹¼Ò»X|~T›¶ RVŸe«Ï¼ÓôÁaK.ê¸~q÷͹'°ž!ðmC¶ïÒýîüaº{ÕÖV÷dqØkçÕ%§öÓ®*Ÿžß¸¿U¯Y¬»tí¦\'|wþ0Wë•àÖ'> Íð™›gä»zÙÝ–tÐÞC –aÏÍg>–éý†»ánÖ=ÿvÑ0ýÏÓ„@‡ÒÑÃwãÅÃC÷—>µ¥Õ¼ÿí¢aaÓ§¹ñâáaÓ/}jK«a²Ï§»kôéÖ;‘ëóºÀ®·.¸N°*Ûn½âô\Ö-ùÃc†Q]uÀräóÏ®V—ÑçJ’æMéKk!ï]°d¹fÍ>‹†6kË_̹õÎÚòõЭemþ½{þÙÕ:g®ã®;´bùrzø€Öß’i¬w_|@«/k^¬w@àò¿\€õ|@ÞÓ¦ °ÞÈk¯½ZN#`½¯žÑC—]v  ­üq}Ö™4RÆKø@à>ÙÏãñÐc8KȒмҾÓ8§Àeu¥~§pÆ•ý í ‡ÈÃ0Ânæpæ4Îj¼]x‹mz©±råJ-^¼X~¿ŸÆ€}8LÅ®TÇvs;ÎjöfÏž­wÞy‡Ð€ôòx<¶=‰NãìžÀ^II‰Ö¬Y£W^y…Ð÷aÍM€ì }óçÏ×< ‡~˜AZqÒÁÐfK/Y6ô¨™{ýè᢫®®ÖªU«´hÑ"-X°€h ò!$™Ï,&ôÎaoΜ9š1c†V¬X!¯—lH/–8 ¨€ÜV^^®É“'ö1ôðYðÌ"Ã^´kõ¹aw¹—hã¬ê@œ•••©¬¬Œ†hKœR´ðo¸²z^<õ0‡B@Žâ:€À Ïê ¿pä(>ø@à>„á:|@ï½÷ i&L˜@#€À°r ¹Ø¥ @à>ø@à>| ð€À@ì<Ä &²cceFÆëd®Cäc [–ÍXÇ» ‹nÊàs€˜Dn4²mCÂF Ùö’ýù`ù@Ömà"{$ÌÃÓZmÈÜ<Ïüüà·óÇF™ø¼D.»‰|‘rúLÙÍËíç ð°ÝHYm,œÆ;mdìžç´Qr*‡ 2-Ë¡ÝgÊj^±~>€V=Éž6Ï2ñÅ'ÙÁÎé8ZvƒÀ ©³To’u&£ÓAîv»Ò€lùlYížMv @à±oþÉš‡S9ìºB:Ã[¬Ëk:–K–{ä®Ã°ñÌX9€Ó2–=l4> Ϥã’,€¶…“6|ÈeìÒ"<þøã4€Àä«Ë.»ŒF@ÖX½~¯$éè'Ï霹óBßvuØcˆ†]º>ø@à>ø@à ð€À| ð€À>ø@à>ø@à ð€À| ð€À>ø@à>ø| ð€À| ð€À>ø@à>ø| ð€À| ð€À@࣠| ð€À| ð€À@à>ø@à>| ð€À| ð€À@à>ø@à>| ð€À| ðø@à>ø@à>| ð€À| ðø@à>ø@à€À| ð€À| ðø@à>ø@à€À| ð€À| ðø@à>ø@à€À| ð€Àþ{÷UuÀqü{7 Y LBA D°¤!¼+‹RÀÊXÔ‘(¨à£‚ˆ[_ÁgµyV-ŠSŠ XDMYcÀê€òP„å’¼Þs}K¿‹›ÇÌÃ3ýWLþ°Î²Ýkï dÑà„ }øÆ<¾‡aàp$'F•;·Í`昋p--#P×ë5q-+ àw.Û÷cîº/˜ymÏÐúï|ÀÌ1CëÓŽ®µm¡/,3«µÞ EDâ9ïá -{v~ƱµoRáú7Í z“6t8tíX@à㸠àì˜ }¦eœ²¬IóLrºôJ¸Ð×(/;·#™í²iâ0hš8(Çw¦6oZ”Lj‰ÿÀªØËÐq¯ƒ+ÿ’Ç€¢2{Ÿð••p7 ­ß8² þy²üì6°àšëO½ùw¿°Áê»#‡k«`p«^V}[]!/¸ý§êª,¸-üvNu{""'ÏømÇÖ®¦Õþ´ïÚƒ£ûðýÚÕø»v  ,˲}”|ÃÊÍ»ñ=Lj‹Öä¶Ïft~zŸ×´Á·í³ üÕvùÒÛ^ࣹ0°hÒ<0<ݱKæ ¥ð–µ |‘rh׎ìÞƒÃá ÙQÕÃ×.€Ee¼úd7ÆŒŸÅòùÓÀ‚!“>¶ÿ _iâöùß_, ¸úŠ>U_j ,, ÀÂÀ0,, –®|×–û. xu-‡× m§ªwª¡ÙÓ•‰ˆHãzhæÔ:·ÿááÙ6Üz ‡ÏoA…«„våNü¦_ïÞ5u: À¸m|lÃÿ¸¯3“âë{Sص«·îçÑ×>¤hð%ŒìvVßià¯J|=&ÍgËóãëdw¿`üø“^ ó|j”À÷ЀÍôö$Õ¿/”®™ †t‡Nü˜•O\„U±÷ #¦lÈ~œðø8æö×ûoìpº¥&""‘ìáó[~ÒIáØÙ©¤;[pÌ}”ôÊ–UýF ððÎÆ/œgÏÄ)Ëw`¤µæÃâQüþmZ5å׿8—Ìt'S½ÇÈnýtÞ°¾Ðrð#¿jÄ7­yÓ„9æøLÓI #-8Ênúk^!fÄ”í,z¬ Wß·#bûQQirÔcòiÉGø|>*½^Ün/n··ÛMʼnJÜnO¥Û§O ¢ÒŒÚƒ©!X‘øòÔÜÅ5Öï¾mœ=¯ZþiùàCü°fߺJH+èC«aWâ·,°,’ŒÀç´]½{«¶•³dã6ö”[=à…‡¿†qòŸõ›ùÄáÀ‘ä ¹Ë@è2gj’ùI.ßFrR[Ë>ÇápàvÛù¶î-§k¦ÁùÙiŒ›û>¹í³™råŬXgïÕ8¼~>Ëâý§o¦à®ù¼ÿôÍü©¨?ÒËÓòƒeÐ4í¾Hª4“0,Bú^_ÒϾn¯ÉQ·ÉÛ·ŸQßo&ÞˆÛkÆÌÁÕùy""ñîÞ= évÜ‹NÍ“§±¾#»IÉêLðv—k¿ÌïÌÂ×·s}¡ýÁhÉÆm|þç±l>hñTÿ¾-kÕŸ7hø?Ç>ÝŒÚðígR÷tõδ¬®Ù¹áe""yu åÚ3Y£*ðUMÚH2§S¹ìd×â±äŽ[Š3+p€e‘bØ×»îL©±žÓ&y!¬g§,ò&Íãù»G7ø~|>³ÚÌbÓ²˜qC_fXýÀ°BaðÊâ}¬º¿}ïýB/*}ɘVímá„/xç)¦œu\Ëdžéé§ xgZ·>õêS¦p'"ß‚.É¿ée×â±ä_s+¥‹Çré½eS® £ê#оÀ×½}kðõó× É›4k†ô¦k¦A·Ûæ1ë–álúô:÷iÛ°œa90«äÖÏ*bà=‹X?«ˆ­³kŸë>è÷Kxûñœ¸}ÖÃø¼ÐÃWY5<ûì仨´áEÞZ®ð ãäï( ž7‘øeçðmÝ=|Ãà£'z‘ß÷\øz5ù}Ï¥ôñ榳m@³Wmçªíyí±œŸÆ½W]À¢»hiÃD Ó4ðW»Ç[ÅElÍÓ—Õ¬÷c ©Íšð«›§²þ‘Ž\6cŸŽ{R9TY{ÛÏø|&ëW­cÉ’bn}äï5–7Αûµ#¤)艈Ä';‡nO%âÁÙ“é«•îl· ƒnÀŸæm⎫/²å¾ïÔu;òö¶¯øªüDhû9M™\ØÁ–ûðù Ì4®¦¼ÜžCuÇߤx*­¸~^5ÎeY,›_}:l«ãgßWî¹ €kçldÅýƒj-'‡oˈˆÄ¨à9|†­Û´¥tÍ¿Be­Û´ fVhPËîÐwù-¸ü‚{|~Ë`Añ Úf4á¬ôÚäâå·WÕ<°ë¦OÇ|Ëž]ÊUÅ{øì6räuQÕÁà¾ÜЉ"""Ñê±û‚/a9Þ”Î`áËo†6wïrÁíîœùFÝ£N.¾qOüÇ÷ñâ/3jξ¸?ÞÉzÊ‹ˆˆ$–ç¾I öøDDD$!%JÐ r苈ˆˆ(ð‰ˆˆˆˆŸˆˆˆˆD«z÷|ÙKj1½DDï -#3‹²Rs:Ågà+2LGYD¯Ñ{CB‡½X¤!]‘z„½XëÝ]–EDD¤Á@CY© æÂžŸˆˆÈÿ¡cN§Ð‡¿$ÖqU |""" öá/‰Gçð‰ˆˆˆ(ð‰ˆˆˆˆŸˆˆˆˆD­d€¯ìWKˆˆˆˆÄ)㎉·Zj‘øõ?çsH°š¬IEND®B`‚libjibx-java-1.1.6a/docs/eclipse/images/Task_3.png0000644000175000017500000002742511017733664021577 0ustar moellermoeller‰PNG  IHDRz+÷£ pHYs::—9ÛÂtIMEØ 4Y‚¿ IDATxÚíÝy|ççñ§»º%!t€ uc#0Ø8NlŒcÇW;!¯É&3Ivwâdc ß;ÙŒ7¾’‰/9Þij“M&ÙÄ3!±“IfãØ³‘ŒÇ&¶ñ x 0!$@}WÍ墮®ª¾»?ï—_¸ûé§žªz¤Ö·ÕÕ]q¢»îüº™¹ãëwêï† Aûµ›ogŽÈn膴¬Uƒvjj’Ù@sxj2•’]v–¤`}C£↯ݢOÜ–µ““‡˜Sô¦kwµ?úÉDü;÷?(„ø«¯W[¾sÿƒ÷Ý÷-í®v[kOÛ_ÙÐY[»ÃJ íú‘Uú>n6Þîym¹kî'GÛ ¯ûb7'v?2 hÒ6xüW4aÿÇâ¡€é·Ú¶ºM¥ä#«–¬BVDJVdµ®¥ºEiV·êo¸ÎÐâÐSÿ›þævíÚ¿sÿƒê8†µÛíš§ÑØíšûÉqÓ'íL:ÿÈ€" ŽgbJk¼é¦›NxNÝxã·¿ýmí®$IBˆ@ Ë.?4#8û/m?øâØ¡éh<‰NG¢ÓÑØt$‰D£±X4–ˆÆâ×_sr·ø‘ ¨ÜÿÀCÚí®_g— >Q?²C¯ƒÜpýº|X{è†ë×¹y%árãýí²Ë¸õ4!Ä-J±¼Uÿ/ËǾ3ù–[n9~äæ>íîM7ݤÞÕâÖÙɡùURDî˜7søÀÔø„z 9vìr,Åã±äyçt­é[ÌóÅæúëúÝ䓸Õì;n-Q|h@ñÀƒúmÜzšâ%˜¶ÇãVWÝ !î¹ûnµåž»ï¾íöÛOè O§JI³$i^¨IÔŸ C?mÝ=‰F¢±H4Åc±äyçt|þÏ?ÔÒRÇóÅÆýßt¯q«oèáG®[w­¸5¢ ¥Þv¹ Å·i'DßHÜ¢ôâöø ­º½ë›ßÔßµlž>$„¨i­ Ì Î¯5t}`É‚ÿzÓÈ»±°X|êüsVv\ØwÊü–zž$(Ѹ]×ÍÃßU³Mkч„¡Ý¹¿aúÎëú¯ÑúØ ²®ÿ»‘-wÁÓÆ¸YÊyü´û¢o×4ÏÉÃß5l•6W@ñ”·êÿSrÊë‚Æ©—(ؽs”Y„<*„è¿ö«ìZ¥Í`6³®þ—ëÿñ3Ÿý|Ðõ·9Æb±_¬ü“kÿìè‘ÃjK<ÿç_?rór >f×*d~½D<ö‰+?õøOÿá#—\ÞÔ”þüýSÿò‰+?•ˆÇ<Lˆ[vMï»~OqÍW¿Â_ Tˆh4Z[;óªO}ú‰_üÜå"W}êÓrJŽF£†öc“GwlgZ0«oh%—e9uxjJß’J¥8˜ @S““™Büãÿý1³ @î„„ö¹¿ˆE£Bˆ¦9s™8{îƒ+W?yh‚©7Ævïúç_?d"È5âââ··T€PÚÇE‰Çã‰DÂp!æ%R0 ‡«««ŸÝ€²‰[!Ät$²}øß7mzaïž½LYaI’ÔÜÒ|ÖY+-:¥fF e·‰x|ll÷ÐàÖ\|I[[{0ÈñçB’ey×®ÿúôS³›šººº™(“¸Çã7l¸äÒ+ÎZ¹’ù*mííóç/øÕ“¿¼¦³%!}©*Ëò»ïî]°p!“U<::;ßÝ»‡# P>Õ­"•JiÙox쥊š ®>³·J’¤T*ů/”UÜþÌ™;O½1~`ÿœ¹óÔõÆìW»©7´¥ôw  ×ÑÈ®>S«&‹³¬„'ãökÁ©¿¡ý§¦¯>†ÉZÄ­Èi>põ™7<öÒ ½d?“Õù[–¤Ïi¥ ¨&WÚÛÃи”¶6ïT!ÄŠ¯¼™·5îÚ¹CÑÖÞUDq«V~ê¿j%ª¥£z[û×ú’ѨúaÍKi«³G¿^‡MuXÖ°ý†¥»2—p`ðÊ£§^xÇÖÿ×â<¯·«çäÃïä.q=Ç­e°™³Ó2ƒ-;˜‡5„¢y4ó8–›äfYýëõQ7;ˆ Y}ô’¸4/?zêš;¶ !”B¬=§‰›éÁds\¤($Ë äµrûsJòˆ(Bˆ‹nÙEQ„ŠZí>uï’³Ö½­-òÐÃåË_V¯×‹Å¾÷ýï_·.ýwííîì>Ù*n]ƒ§³{ÑŽáw::{ôŽîØÑÞÙ„úeº££ÝÝŠâ¡Ï_Üf+Ï2ÇrY»·~‘yÁªÞ0T«æ÷nõ­ö ]&¨ÿöà’Koþ‘˜T"+" „¢ˆ€8vTY" „OüvŸe§.ûË/]ý¿ÿî1!Ä_~éê/~á nÖ¥(ï'«Îîž‘íÃúÄmœ5ë­7^_ºl¹¢(o¼ºyÑâ^I’’Éd^ãÖGVe+Û2‡|Í5Cdªw-sÔ²'€ÊÊ"1¡–Šãéj®cñbrÍš …—^v¹â¿ßq‡z7-Y–ùØØÊñ•D@Šú¯z×pÁÙY³g—6½ Ëò²ÓV46ÎJ$âžöÑOÜj§ïÚÅ•ù`çi=åœ~u^ÇI»¬åRiwEܺõÉ»âæÿ%„¢„PŠ.mÕ2W¡˜¾»V‹X—Y{,q߯nÝÿÔ•*BFv w™87Κuò)½53fÔÕÕ{ÍZÿÕ­sY>ê& m¹¬åÈ.7ÆyY瞀Üé»}ëwrÕ÷*≿½õý:÷¸ ïØf^ÐSÐ !ººOÞ>l1NGç±’GG¶w÷œb¹lã¬Y@ÀGÖŠ¬Læ¨, sÞ±íwžòÉïBȲ¸èëÛr´"sšoSEett´Ç&kÕÁŠÏÏ(eá;“ÍŸ å—àÃE_ß¶þo¿©¤"²œßOÞ*Š"”Ñ‘ç¬Í„«êV’$íMc¾O¸¤R)I’˜åç#ßxççÿãä<¯TbtddÑ¢~•Uú¸ ƒóç/Ø»gO[{;¿Ebtddþ‚…†ç <\ò7ïäy9 Úcaš¶G8>÷¼óŸúÝo·mÝÂ%Í‹¡®Ý¶uËã?ûÉ%—]Ř( é«Ûªêê¶¶ö˯øèo~ýä¾}ûHÜÂ’$©¥¥å²Ë¯èîî™>z” €2‰[!DÍŒšÞ¥K—Ÿ¾" 2e'Ër"'k ¬â¶iÎ\¦©ØTUUϬ«g TP­@Ü@Üâââ··€¸ BL|xû­7˜p°dé2â™Z¹ê|&Lš n‘å_#€3Þ»€¸€¸iåï½ÛÖÖVíöØØS nsBKÙÖÖV@ÜæeÕ«5ª-æ>†ÀVïêÿµ[Š PqqëšÎ}ÒhîæiJ5n 5k. €J[ó]ó]µ›Ú˜õì4¯ €r‹[}šjQj™©v„©}¥¨¸>wë¯úÌçR”Fu«/pµãƆ¢Vײ¾ÑÐÁ²Ñn]”UÜâÍá`²›C£–Á>Æ ×øGʨºPÚ%' Y–™ TVa †Âáêêjâ@ÎMG"Û‡ÿ}Ó¦öîÙËl rH’ÔÜÒ|ÖY+-:¥fF¢(Ä-€\IÄãcc»‡ÿ°æâKÚÚÚƒAÞ‡B¥ey×®ÿúôS³›šºººc±q WâñøÆ .¹ôгV®d6PiÚÚÛçÏ_ð«'yMÿ:ßqËKT®^à¿ûîÞ 2¨LïîÝ“Éqâ€+©TŠcȨX’$¥R©LFàÉ@η@±˜3wžËÆ•»oNÍÖÈ­­­|½+r„S¥Pøt?°ÎÜyê¿úãö«ÝÔÚRú»Ú8†>†›—áv‘™­a+DÞ.Mípµl€¸E ÓÒTŸ@ædÕÂ8»èróŠs´ŠJÍ´Kqé0·Ùròª³Œ+ÝLÉÉZA©¯¡Íºi4?dW°š»¹,y-ëõ´ýõ[˜ç×"âÄK‰¨OL}uè]†G —$¦‹”è7wvÜ®Å<”zײ‘F‰Å­û_\2–iê¯FÔ¤9–œÍw §BOi—v΃*bž¤žŽÄê“Õ|ÛòQ»Î.·Êa#õW'3D¯aYž‰(™êÖî™Ã‘¸©ù²Þ.³¸9Ú/ýP…=^‡§mWÁ”yܦ}l8$åð¢Òá‘åEsQB…¬] è¯ÎÛ™½Î%xæYXT§(kc]>¿<²òTGr0 Äm®òX¸8@Ä3°üJ^ÇN ióóZ!Gx‹íd«=× ‡yùåqëó‰dx®æâù*ã<¿Èÿà–‰^¨÷q+Á‹[—ïÝfþÛïõH ˜RÇ~ÍÅ¢ù4¥´lN,Ë·Q=½·j8WY;›É}ê6Ìð¬yp‡þ…óSLÒ¯ç añL–ÕN€ò·1†³—I\”RÜæ³å¨riU¢ê]7ïzšû8/嵿ó&yÖÇ…Í Pi×˜Ï 6<­œïž†io[ŽfÙh~‚[Æ¿Ëw¸”Uܦ}ñh×L-éê¶HʵL¶ŸC¸å*×ï¸ÍßïnÚÃ5–Ò â´ä’«n »ÞL>Î ¯¥pIŒÌ”pܺù”­þ¨‘åñ‡ƒØ´Û^ bC:ªwÍYÙZí_ýfg±|¯ˆ¸Ç_{ýµç6“»œó4,Y ·ÂSeéÜ'Go²Z¦8ç›ñûíê9s}©>jÙÇa)s7çÊÕ.k-·Ç°#–[kn4©PýW¿§SaÞSB(ø5zõÝ'?uj¡¶™×—úà±ËfC;7z-dí–rØáâȰáQóÖú˜ ¹S\Ÿ»õt$9óê™à¬´jØ¡0-æ­ÍÏà„.P&Õ­á¬]5Yݤ¯Ë¼4k¹xÚî·Dkä]Ûf’]šÅñ…Íç‚ñüÄ­ub¥m17:$™›OÙj¬o7wð:¬¹Ñýf£´JCÃÑ×")íÞ¨P´øÎd”¹Ü¥‘ydý)HL€ÂT·@Ž YÑdC湚vcœ@Ü¢sVûÍ;¿žL&­AC¡sV—¶þóšˆ@Ü¢‚̨ñá5_rÙN%UT¬òŠ nl’¤P4‰fïòPœ83ââd?n‡††˜5r·}}}$.¹[!ÄÚµkK:qsz! ®20óóA õëׯ]»výúõ«W¯öEYüËKÁçtð,^"@ÜÚZ½zµ¿ÄUS*‹õ_N“Ï08) ÈkÜf’¸Å®>Ï´Û±]þÙ•¤VÆúíÑ.sk¹Íy(»·jâö÷÷÷õõ=z´¶¶ÖÇnÏz=„kY’Z¡¿âÕ<•1 -ÿŸ»ô—µvIV<á¤n¦$¶PVÕíÐÐP†G’…»7q {q&*§(2ŠÛle­ó«.ûdX¿æ´8æ×  òù¹Û ³Ö!¢Ü‘ÚܬT´æv—ƒ»Ùf*] ºõÌ_ÖÎ1v–iû:Œ™[ Ý´Û–=7à~ÃøUâÖƒÁÁAu­ež¥íæòó9ž†Õ§×ÁÓ.è~p@åð|09ÇKç$²·p_é@Ü@Ü@Üâââ·”oÜ 1kä6nûúúH\r·Bˆµk×VHâr%@Áâvýúõþ·õ¸ì&bކå—Pȸ]½zµ¿ÄU/—ÝPÓÉâÈ|2 ‹BþÓ7“ëÌ®€«¿´ŽvÛÐÇœµÎ…©aaºö­6ŽÃÆØéæÂòø[5qûûûûúúŽ=Z[[›IéZnú8d°v×r}¨;¬ÈnL²à’ÿÏÝ úËZËdU‹Èüǘ¿Õ‘µ€ÜV·CCCIîNG*’S–8s ï¸ÍVÖêßúîSÌå/*ŸŸ»Í0kRÍý‘dýùMTº€r«nýe­áÔ_7a™¶¡ƒúq óYÄžÔ¼ˆ¿1𷃃ƒþêZËKÛ-m¶¹VßbyÛn‘´pÃóÁä\C€¸-sÔ©ââ···€¸€¸ÞãvhhˆY ·qÛ××GâÛ¸B¬]»¶T—«÷J5nׯ_ï/q[ËV”¤ ]ÒP~.À·zõj5q½^‰Oývâ,fžû+ãò“”Xu«OÜLŽ*ªR} ë½ÄæzW½¡ýkܲ'…¬nµÄíïïïëë;zôhmmm&µikk«]ê¦!kõÝ —…×?jî©ßTÀb‰Û¡¡¡ÁÁAYk™¬jÔ¹Þ»uK}ˆF@ÙÆm¶²V\×wŠŸÏÏÝf˜µÕjß:%¡%\ÝúËZ-üÔ4U“ÕMúºÔ±±1ý"æÅµCOÁqi@QÅíàà ¿ºÖœg– ghtHÁ´'3ë£ÝáQ—«À7Ï“sq â···€¸€¸Ä-Ä-Ä- n ns‰kþˆ[‹tT•YNëGã Àq«^ö®¼'”k ÌB\·á ¸ú Ëk· }ìÊGË+×z½œ­ËAÌ›­ý«^C×ÐͰƒæ=·ù(õAëÜÇÐS‹:C£¹§›¬u9ˆa“,»YŽf÷’PöŠèT)­ò+ã"_€ê6ßÜœUT„gq2 dâÖpXÕwŸ"Ül Šës·žÞs%íT·¶é¨¦©þ]çôµkÑnºYŽoŽpã.±Ülý–Xn9oÙq›¿Ê5m‹¹Ñy)}¼¹Y£§UûÛl‡MJ»k€rÅw&@Ü@Üâââd.ý¾ñÓ·˜&|ã³K™ÈaÜ*ŠÂ4ë¸e– º€¸€¸M·L¹Ž[9{Õí=_8M½qÛ^»ç §©ÿê;Üö£×Ônê m)ý]ʱºÍ^ÜÞúÃW…÷~ñtEQÔÛZ£êÞ/ž~ë_½õ‡¯ª7´~NâÖ3EQîûÏ+nù?›ÍãkwÍ7(ã¸ÍþZÕ1õÿºù›¿õ_V¨7ø!¨n}V·Ú¿j¬ªnúûWò°vŠ.nÉTÖ×ªŽ©þ{ý÷ÿ¤µ?øåêïæhíT\ukùÞíC_ùÐußÛ¤¿@yÇmöךö½[ËPݦ1ðÕ³Ôý¾¨ùáÿö!­úÐÀWÏÒúô?ú¢þ.Ä­“k¿û‚ù®¡Ñ¡'e·L¥RÝ@Ü··”uÜ2KPÝPêqûØõç2Md"È@ÜPyq;44ĬÛ¸íëë#qÈmÜ !Ö®][$‰ÛÚÚÊPžq»~ýz‰ÛÚÚjHGs‹á!=BPºB>–Y½zµš¸ëׯ_½zu޶lll,ë=(™êVŸ¸žjܱ±1­mmmÕbR_ž¦-dÍõ®z[û×ü¨¾ÅeÅ @«[-qûûûûúúŽ=Z[[›‡mÕ'tÚêmÃ"Îw(º¸Ìϲ{ÚP¤) lãÖ®ˆÔÂÏvšÕ»ú¥<•ÝúiƒXvH»Ùúí¶6íNñšˆÛl&®¹âTïêÔü¨¹Hµlt³vóJ¶*ífÚí¶ÖåNˆÛLå3Z²X5¦È&n=¬ä¼x&i'í°™wð´¬VÐØ@Ü ÍVüØf^§f²a–ËZ¦”®RýÜmŽ>[l•.€ê6ûµ¯ÃÑfËGJC­Àu^iÚ­rÓÁ¡§ÝiÏÙ­æ·GMÝd•Ë|¬+mgˈu^ûu¹i·9ÄCâ¶01%‡K@Ü@Üâââ··€¸ ¢ã¶µµ•+äˆ[?ñé2DµËõ¸ÜÓ–d²–-vcòŠ uyùÂ^8=«æëÅ·ië?ý_µË™¯ÿjXÄÐßnLí·†wŸ£Ú ý€þ6¬^‘Ê*n ¡¢¿ä»ù±æLÒ›]PéƒÐ° y)ó²™ìŽï ·Y(d ’.Ùº{Öߎտ°°{I n½åŠ!®Ò¦W±md.‘ å¬à­\@ãÖPù)1 c‹B9> 0+®ÏÝU dc8’ T·Ùý¹ÁÂæíUó©ÂæEôGqÓŽ™vÃìVí>¡ oÇf¾aâÖm’YÞµLÃù½ÎCy]DKh÷Û“vdË1}ï €¸-s…-@9’ ÄmE(lÚ‘µP–¸"Ä-Ä- n n nq q ˆ[ˆ[ >.ÔSWî”±ü}‰cv¿‹Ø|™ "Üà ®ÝË÷5q›™‡Ýuéó–^ êo*ÄmaÒKû×}2é¯ÊnW}´ NOu³þ„¡QmÑ.vk¾ë°§–ÛàiBÄ­·öTA:„¨›Í‹û^©þ€áóžZnŸ€¸õ¢.볬GK¶Ô£Y–â6Ë,ÖúÔS>¨IDAT+yÝ„zN÷Â\=çz¥Úh~k€¸u›¹‹‚RVjù–3 $Ñçn3)íBÈý›¯™4殼æÃ@u›…×p^®§t±|Õî½Us£åªÓnåøv+5vy@Ør8-ˆ[·kyW߮Œ¹§¡~uHóCv-ôw—›U˜×âfNHY nËPvO<.ÝmTbÜæ-uŠ!ÞˆX(3\ââ···€¸€¸Ä-Ä-Ä- n n nq q ˆ[ˆ[ˆ[@Ü@Ü@Üââ···€¸€¸€¸Ä-Ä- n n nq q q ˆ[ˆ[@Ü@Ü@Üâââ··€¸€¸€¸Ä-Ä-Ä- n nq q q ˆ[ˆ[ˆ[@Ü@Üâââ···€¸€¸Ä-Ä-Ä- n n nq q ˆ[ˆ[ˆ[@Ü@Ü@Üââ···€¸€¸€¸Ä-Ä- n n nq q q ˆ[ˆ[@Ü@Ü@Üâââ··€¸€¸€¸Ä-Ä-Ä- n nq q q ˆ[ˆ[ˆ[¦ââ···€¸€¸Ä-Ä-Ä- n n¨!¦ÜK&ÉdJQ¦ÂR …¤P(\9˜v—‰[ð&ïÙ½û­7ßœ˜8Èl˜ƒÁ††ÆÅ½½m5ÕÕ•0iw™¸oRÉäýï½òÊË}}îìî‘$‰91NQ*µ}øg‡†BR¨½£] …Ê~w™¸ÏÉäk›_½pÍš®îĔ%I’N>¥7 oܰa^ss]}]ÙO ó.ŸPóûn(Š21q°½£‹©pvR[û䡉D2Q9h·ËT·à‡,Ë’$qž”³P(”’eE–+gv™ê€ü!nÈ}Ì€{Š¢”DZÐP($„H&“.;»ìYü˜Å}!n ‰¥òú<»ôC'~þ$íȾ×^¨¬*æ-!n ç´¿øÿë¯_{ÉE‘¿¬-­Ý$nÀý±PËÛáðûßç—H$ ‰DB½­–¤jó"ápXíi×Áa«‰D(rY¿vý†iëÕÑî*Šâ°Ù–›äf3ü)èçÜn_Ì©î‹þGãiû‰[(<˸24ZìÎ|Ãkô‹ÄbÑ#G«j­Ýò¶v×yLÆٵØ-¨Ý¨««wX¯¹Q»a¹S^'ÐË©K;‡vûbž:â N1¿_{øðT]]ýáÃSj£vÃÐGÍ6íQ»÷€…éI»1Ý´Ø-¨Þ¨¯oÐ:Ô×7˜×kÞóVéwÊëú£‰`¹a–sh·/ùù`q žÂ6ý©RúƆ†Æ©©I‡ÀsÎcZv0¢_Ða3´–††Fç¸u{—è•yßëëÔ¯q;55©.KÜ@æí _«Ýž<4ÑÐÐ8yhB½¡u˜<4¡Èrã¬Ùú»Zõ†å"æÁÍ 9dîà° eE–õ-“‡&gÍÖoŒ~³Í;åc}ýdËË=užXËш[(;ˆºê`{S(hSÁ%“‰d2¥”Ñ>PH …ÂÄ-£-ï&FÆö½ºe$O–ÍNUW…Nï휎·,]h?±x|ÏîÝo½ùæÄÄÁòØß`0ØÐи¸··­££¦ºš¸€â²k<¹ç½ñ—ÞþÂÇÎ^¾ha0(ƒRå…7Fþé÷¯T…CõÕsÛæœ+©dòÀþ÷^yåå¾¾wv÷H’T»œJ¥¶¿óìÐPH µw´K!WIJÜ@žLFå—^þ¯_yêÉ Ëf§ÀÊå]U’ôOOož?¯©íÄGÉäk›_½pÍš®îEe³Ë’$|Jo(Þ¸aÃ¼ææºú:W51OÈW!("ñÄ’žå·k§rR$ž0¿9«(ÊÄÄÁöŽ®òÛå“ÚÚ'M$’ —ý©n ¯‚Á@94t¼à³=0.˲$Iå·Ë¡P(%ËŠ,ç;n‡G¶n¼úöö‘]û„m-§/é^Ü1£§s1Ï.@…ËNÜ>ÿêðïþ°ùì3zÿâ“wµµ(Šٽﵷ·ÿøÉÍ—ö…V®èa¢ÄmF6nÞ>º÷k_þt[kóë[¶ÿê÷Ï !.:ÿŸ»jÍùg-ÿÕï7*BœCâ€BEQÊïÈj‰îr(J&óô‰¬LãvxdëSƒ›ÿêËŸnkm¾ÿ±õÏüñ¥–¹³…?ùå37\½öâóÏüøGV}çû?ož•ä¨2ä:<´ÛZŠ%Ÿ“»*E™ž™üöHä¬3zÛZ›‡G÷>óÇ—–/éþÁ7ÿàþ›[æÎ~ì'¿Q„hkmþнoDx&@® 5MÈêक़µú*íP†Ë¿ööö?ÿÔŲ"º:üýý7 !d!¦§£Šuµ3Ôc§õvÿä—O´oÏBdýÈj8N$úa‰D(J$ÚêÌ}Š|—í68kû¨u34ê»é{Zrñ³ÈUÜŽîÞ×vR‹"„¢ˆæ¹³…ã{ï¸û1!Äu_ú´ºím-£»öñ€BQ3©<öE¨úÄÕ7š÷×Ð’ÿ É4nÕ@U_(BLOGÕ¬½ëö«»ÛÈâýGdmN¸˜e·m-#;÷ÚÛ%„1<ºçètô?]uQ§šµŠ1²s_{[ ¿ñ fC2™ýxˆÅ¢vGއÃGŽ.¹]¶Ü©ººzCC7ËFqâÁd‡nE·Ëz»_ß²ýXÜ*bÞÜÙŸ¹ê¢¥½]Š"D@!Šx}Ëöe½Ý<Ç@¡~.&ƒÚ5*ŠrøðT]]ýáÃS¥µËæ¥êë´½¨¯oÐvÐr¯ Ëvß®[Ždzfò²®Ú¼etì=YYˆÁ /?þÄ3o¼½CB(Bbtì½M›·,ëšÁ3 „Šrìs¨Y455©f¦¾¾ajjRKË>Ù•õ]¶Ü`mwôaiî`h4·è£:»œýê¶§sñÿíÓ¯¸xUÛÂæË>rîÏžx¦ïüEÈBìÞóÞoŸÞ¸úƒm|èއ‡/ÚuoòÐDCC£þ®¶í†ÚgòÐD©ì²y§ -ê°†ÁYN» 6?¹øYä$n…·ê™ þ»ŸŸ¹¢wÙâî}÷¯…olÙñÆÖí/mÞ²úƒm·Šç¨dEȹ9€©¿~»¶Š‰‰ƒúÕîÿ.›wÊÐb·ƒiÌóldç;“/:oU×I[_ßyüɧwîÚ'„hokYÖÛýÅ+WP×€¡Ö«´/q¬È]ÎMÜ !z:÷tŠ+?ÌwY@ºäÉ×Lv¹ ãà:|v™¸ä,—aö¤R¶{ Så¹Ë²$IÄ-@@̨ ¿²eWoÇœ2Ûµ­;ÇgT…ó.gíÚ92o^s™íòøøþÙ³›A·Ÿ§%n Ok‚g.ïybhËGÏ;eIûI ”G]ûöÎñßlØvÎ7Ö³' -[~Úó7ž}öʹóšƒÁrØeYVìoÓ‹/œ¾âŒšêjâŠKÛœÐáØœ3—÷üî…á_ýqkÙìWuUèÌå= ›ç´Í1fŠ Í_¸`Ytùæ—_žššL•Å S’$56ÎZ²ôÔ¦¦93jk‰[(:½óõUóÛ6—Ó[™€¨«¶7…l¸ª«§kAë‚d2U6ç'‚ÁªªpmíL÷‹·?Á èœ[qxÃáªp¸ªÒôüö@Ü@Üâââ··€¸€¸€¸Ä-Ä-Ä-È‚c×Û½‹¹ ‡qûÐýßf"ÈÿS5dòÅš IEND®B`‚libjibx-java-1.1.6a/docs/eclipse/images/Task_4.png0000644000175000017500000004476111017733664021602 0ustar moellermoeller‰PNG  IHDR‚+ôod pHYs::—9ÛÂtIMEØ 7$Ä[üA IDATxÚíÝw˜Å÷ñšî™ÝÕ²yWY«MJ( D”@`ŒÁ˜ä3g߯>°D0Éáp$¿ŒglÀ–9ÃÙ²Áؼؘ{Ñ"„…H€«,ÂfI;±ûý£¥V«ÓôÌNÞïçáYzjªª»jFóÛêéñ‰cÝõã;HïÝùcãM¿)€o¹í»Ì™ c¿žÁZ÷ôt3;ÄÕÛÓ‹)+˲T^Q)„¸é–ÛIì×3¸»»‹9À‹Cvwu½ñÆbõÏ:kŽ$É¥Çw ·WñÙ‹/Ñ’øèIiUU™Vâê;t¨³£ý7_ùÅ«† ·þÞ={žÿݳΚ#„TZzÌ*ù®ßyÃÍ·öts.o1Ü×÷Úk÷˜ÁBˆãÊÊFý·WþÚÒ2¶¨¸øHɨQ#†úÝ—ÂJW8üI0Øî*«7vt„•h4ZUSÔ8¦büñµ••Å<€iÈСÞO$2Ä6pÝb8²»/ øýǵ÷‰vöì *áp$ïé<°æƒ[Þ¯œ3§¡¹¹†G0 ø|¾¤záH{PtE¥¡ƒ"%%‘®HÉqP8‡ƒ¡p0îë ­X±½÷À/}qFmíq<$€Gwß}â»ßýNJúIIWY 9l*˜÷­o !<ú¨K‰ÖÐk ‡·ôEEo pÀ #}‡B¡p8 ÷Ã}Á`__èP0´ô­- •v2rÐ=÷Ük*ùÎwîÈÖa˜vÝÏ+"}fýâÊ$ÀvN\ÊœKa‡òyßú––»ZÛ6ôÃJ0ê í8¤FЇvïî †"Á`¸/: Ò’¸/´ìŸ[>{Ñ$ä¬;î8ü'z÷Þ{ß=÷Ü«ßÌVVi’ìÌz÷s,Ɔ÷Þ{_îŒ ð°ö™ž®,X0Þ†£‘°ùÅKˆ²·>|õ“Po0 …C}}á¾`ðP_èP0x¨/Ô öÃ%ƒäKN¿ŽG9ËôÜÖoêa„öàÃBˆoß|£Vò³¾ï¾ûõ›ú¶^·¾Þ³©²¾w—šÊ=kŒu¼¼Ó¿qÛ¡yŸý0‹Óœ8=d@N¦°täéq~ñ±¹Ëgy†;®†c1åÀiÇŸ&„¢Š˜¢*Ú:˜Õ0ò5¬mÜ|Ó ¦—šÆ»¼Ô·VpªìTþ³Öú1íÝih ŒÎihÞ'ÇK¸3éþ9H’|G²2¦Þzë­Çüûºùæx@¿)˲Âçó)ŠÇ?X$U¯Û²rsÇ?wu †ûú‚‡ú‚‡‚¡C}¡¾¾`0 †"ÁPøÆëÏRO=‰‡9ëÁ‡~®oßtã|§ÌH")=»ÔO´“›nœÿÐÃèwÝtã|/¿ax<øä†ì1†šbù¾Öþ¯(‡?SúöÛo?rÖç>ýæ­·ÞªÝÔc8+¥ýÊä>¥aðqmû{Ú;µsÑ¡Ãç¢Cá`(EÏ8µiîœñü›A.»ñ†y^r+‰6öœt Ûv¢>üóBˆ‡~ÄT'gc8¡ !†‘ç)|$† «a!Ä=wß­•Üs÷Ýßùîw©ˆ„.Ñ’«dy°¿F”Ÿ.I’ß÷Ά‡ú‚}ÁP_0 …C¡è§6\õo' ZÆ¿ä2ï¯õ‰Æ°±üçW@n.‡µÿÇ”X¢ ͤ}µÃÎíÛ˜UÀdÁ£ !æ}ë› m Íàò?-úŸ+¿x•äùS-C¡Ð=Ù_8x W+ ‡ÃyéE¿—_™ÖÓ mÎà$}î’ËŸÿÝÂOÿ™ššøß­ÐÑÑñêßÿïç.¹<%pR1ìä±ÇÿKqý7¿Î« `0XZzÜ¥—þ…?þÁc“K/ÿ¼S‚Á ©üðIém[63­xW^Q!I²ÇÊŠëíé1–Äb1NJ¤žîîþwâBüÏÿ–Ù óüBˆ/|éßCÁ ¢¦¶Ž»¥KÏ:íÌî®N¦úc×ÎyéE‰‰ [ˆaˆaˆa@ @ €´ñÇ­ÑѾ_¨j8ŽD"¦/lBv~u’$ P\\,ø3(øBêëÛÜöÑŠË?Þý1S–]²,:ää“g3®dP Ñpx×®­‹_Ÿ{Þùõõ£%‰óØÙ¤(ÊŽÛÿ÷¯®©ijjfB Àc8¿õæ›çú“gÍb¾rAýèÑÆ ÿó‹º~Þ|fòZü¥­¢(Ÿ|òñð#˜¬ÜÑÐØøÉÇ»93…¿BÄb1ýÿ¦'W¨ z躙9xT²,Çb1ž¾îjë·ïßç¥0U@ZbH:«´T%Ÿñ¦KŸ edšº/rë¬æC×ÍÔWŸ¹¹ EBÚ÷ïKmnijÿ™âÓc”ö§[ȉNS@>tÝÌ›ž\yÓ“+Mý÷gwɵå7€ô-޵ÿ¬ËPc¡±N¢kYí¦µ0ÑnŽÖÔIÝ€Q.ž”ho?¨Å±ž^N V/uÍ~c?Þ#Ót$ÚBÙÔUÊ€‹Û·!êG7ÒŽam¥¨ýÔV®zjjÛúOS¦—˜Ö 5vkm¥ïζã~]Õ¥­éøM­¾TÖÒË{†C4ë±GîÎখ±[Ú6ex¿ÚNÓ—Ä Ç°màY3Õ6›m+X»5…¥µ7k?¶‡ä¥­ñ÷í^/DÒ Ó~ÖqZŒ¦ðÀŒ \2 §28[{Ok÷÷¤´5Ʋ²ˆ$5ó"ƒã&œ—:™Y×fëHXmß¶¹©eœª !„ªªÛ·m6UÝМªY µý66ÝÒ¶1U;Je {—ªëžR~ÅËß,JèŒtÿWÛ*w¶mmkj«ª‡¿X¨±yŒµÎÖÍ›F7´m²eËèÆFŸÏ'´Þ¶­±¹YÕâÔ-ƒÛ›ÇÚÅðÑ]oiÛÔÐØrÌá%µ¯ìÄpªr®?ýضuzk© E-e½ü-PÜ:Ö³ÇÆ&¶ÍãVð~$z!ï ËàÆæ=˜R¯²ªêƒuk'Nž¢ªêºw׌?A–åh4·“¸;jlnÙº¹Í˜ÄÉí+Å1œD†¥*óúÓ¹›•nÜk¡KÂŽ¸Ú˜ÍÆrk…D»µz?lISEUTU¨BŸð©BÕ~j÷ú„O¯flUU]íóùV®X®(Êä©Ó++«"‘°Ç}ŽdÃ.Œ;õ _JöÕßÖ/'vŠ1ëɦ¿N(ÿŒ»K´Ÿ¸mm¯ÌŠ;@@45ݲySCS³ª*|BUMAõH [UVU7¡dР²²r﹨] «†ÿi¬ áÛº¥­Érâ:¹}õw5ìžO¶÷z‰LSrÛ¶µ½"ÚãÁ¸·u¯ ÈJonÛØÐØ¤eâ¶­[¬uš[ÆÙ&±Ïçóž‹ÚŽ¬å ‡/Þ¶u³íŽ’ØW bØ´ö%´iÒÜ2®­mcCCƒ>Uˆ‡,´JèR)Û8okÛ¨ªªê¶mÛÜ÷›è¾t)øLië_ó¤¤PK˸m[·ªBɦ]’TUê¶­[½gZVò,ëoJóy˹ ‹É²Ì<@Icú¿Õ‘%Ù—?GS”m»ö=óò;±p߉“›y(l »¤©{¸Z«%Ôúïù¬ûÜ93›F U”˜ªÄòi5ìÍ£ê>7÷Ä—¾îÚÑÝÕï…$ùÊ+*ÆŒ/„øhÓ†|Q '/¦zÈÐaÌF!İi›$kîØ¹·«iä`IU|BÉ—wÇß4¼ö¹öÞ‰“Ï®¡––:tð@<¥¥ƒ&Nž¼aý‡…1¢NŽOõñ“'¯ÿýÓÎ<‹ÙÈû6¦¬±¶Yëtb™µr HÂ/KBñåõE)˜G¤¼¢âà3¢NŽOuOgþ (†ÝW«I$erk\ÞNûsK²äS%_^AUÕBzPTU-¤Øpr|ª™„‚Ša}A¬Ÿ6-‚7më Ml ö…4>·$á÷å÷'Äø¥|õ)¼_,ø·bØkôÚÞ´Æ¡—S¡žÍIôƒ´e˜O–„â9†ïûâ§nÿÝ«¹6b8‡³ú±iBˆ׿Ë?CÃÀÏ-YÈ’Oñ™OJïøÝúvý_Yxíá¯Þ5Hü÷W¦hÛW=}øûŒG½8së®öÌAµ{ë±kÕ¯ôíª¾šg¹åíÍÔÊЦ®·¯¬šõ|wñظ•šZ¶miË‘á¬zlÆçîÛ&„øóí '\¿:å{ÌØ`³8« †Q«a!K>ÓjøŸwrÙ‚MúÍk^BÜñÂo:Öl|ö‰—æÿâ–Ž5ŸüÑ]²$„õÃkw||4zM733ëb«kÕSÓ.¿[¿ùî¿ã”ÄÍcŒ7·nþÈã~›Çx¯œh}«á®·¯¬š0¬ëí+ÅYï¸ìH/éÏ";Ññº'SE¤["óôαñaòx;£`Ú‘é•Г*݈aäb K’Ïg¸Dk˯>}á÷o íùE°+ ƒ]]•  !:ÖlÜ»kÿÆmûµ !„ÞÊØ|瞎Ãëæ¡5¦ÂQCkô{õ›ÆŸN­¬;Åðÿ}öOÚ ã|}ldï3ÑCÁC=ûºz…^þí¢cÛù>óo—rÛ&ãkœñ¦‹-m›}¡÷^ßcÍî­BˆO„Uá:-NÍõCíO2%1^·V„Þ/T_,ÿ¨šZÆ&ñe+†MϨt ïµÃ(Yø|Ç\¡QQ2]Q2L”!„øÑÕw âÙ'^Ú¸m¿âÎ;ž×P'„øñçÏýá^vxZ³Û™úMSMéHk÷šZ¹ôc‚þªt ì9ý»×„ßU" ñq³6¹û×Eþ½KõV¦5UU›ÇŒÛüÑFí§¢yÌ8ý^c‰Ó½ÖBífSËXk+½‰Óëló}›Oz(ä„䢮’² ?p°hPdͮͷ77^ù|×ÛWV5ëZ|¥zî?^¦õhC3 Äv¤Ö{]f#¡á,{è!„OµïmY¼ìÁBˆY7­²}Šjû5ö°ù£M-cÝLß©ícgleÚ—mM—×6­%ÆÝ™fÕý™c[ßøD1Œ|_ ûÌ'¥ÃB?1ÖùÉsÏÜ}éiÚ¹è;ïxúÑ¿ÝÛ±fã“?Zû“?¾&„س¯cè࣠Ö=ûǤ|läj7m õ&Ö NMLCP޼ê]~ÍE?þª7ºº}ëÖo~ó"½•r싦räåû£MU3vüG›6_O?Ú´á£MÆŒït¯©PQUc¡©•b·²1Ýþæ¶íGï*¢øp¦ýrÓ­¢ª1 ¿¡‰µOã Œ‡j©Âý^/ã;œXTüëw§öíÂ÷ùÛªxîÞ›µ:ïÿò$!ĤÿXáÔÜãÃäòè˜eä4|—WÛ‘ËxõžÍޏlz"ñ F £bXHBH†K´‚Bˆ`—~óåGBLš4ä/ß¿Uqþ‰BÛ˜4iÈ›÷œ}Öw !öí?úíLƒëªµ›Ò±—}i7ãJ–‹ÅŒo[Á/sP÷¡"Žó!Ý‡ŠŒMLi77møP/·­ oØÞk{•ËN]j¾ùÈ—.í>kË^½G±Pˆ®­]BˆºØ–}¾§Î­ƒr*Œ;ÞÇk;œSo^ñìONüÒ­· qø¡üïî=ãÖ•ª¢¬ûå)‡¯Ûº£aòW—»Ï•LJ)îƒë~̶3æô|0f³ñæ¦ Ú6÷Þ¹mMÃ(ˆç–,$I£-ÔÒcøå'Ÿ¹pþ7lvuu-]øœÏîc?´BÓ] ­îoïŒ;„H$¢ßì D¸GqÍÝÅ>õðéÏÃ/^Bø|BU…OøúÞò©â¶OBŒ¼Þüƒuïi½û4nojÆæz¡©‰©áëÞÓZ}°î=ÛA™š¸ï“oÏ:ÑZígo¿Óxåó[_¼rØôªO^¼R¹è ÛæNGe-œ8yªË½NãMt8§Ü¸ì·÷Îú÷¿ªúÔgzêÔo¿‰D>xêôËîY«Fz|>õ⟬}á;“'~e©Óp\/îÑ:uwøî…F¦yÐ*h³¤?Áê<îA #WÃ>ŸÏ~ÁpH[¿üäs^÷¯Æ•ñÑ Š¥ Ÿ›óýÅBˆÚšêöŽÎD·¶¦Úc K¬û–+¥DŠEdŸâ×·ö^þ“áWÿôKNcÿõ÷~§5|íÑ?]µ}ÃØúæ±qÃØ\/´½ˆÆX¨µš8yª©¹íµÄµÅ®ÈpBˆ`PÞív:*Sá¤)Óôƒ™4ešµ‰Ëxά›—ýæg§ !Nûö2UU×ýêŒËòºj÷ùW½ä‡‹ÿxçé“¿ú¦ûdÆ}˜¼?:q‡ï>î%zÿÆ)òÞyÜ=‚Fǰä;æ«•´ÕðË _¹ðªKE0h“Á¢déÂçÎùÏÅÚÍÎÎÎêêjýÞÎÎN/…Ú¶¶_}ïÖV¶ý¸ÇðÁp@D!>õ£I_ýá%ÁáÓÄÆ„WõƒúÏ)#Ó=†÷Nž:}Ý{k¼ôé½°ý×7¼æüîf~e…~Ò%‚bdàãáaIǰí¶{‰>Þ$ÆxêÍoéwE£êï¿3Gñ/?x^¨â÷?¾R{ÀTU]÷ÞšIS¦÷¢íÔåà'OžÄ£w°ÖB㎼Ĥ©91L ‡WÃÆ%gwoôå…¯\xÕښؒÁUK>wέÆÂÎ.›sÜBmÛTÍÚʶÓôÓÎBˆCaYDƒ§Ý9ë?n;ï`gXõ Ÿ8œÂªzx ¿¼ÿÕ_þx¼¡•í‹ÚáÂuï­Ö^mõ›Æ†¶÷ÚígÝ{«'Oa×›ÍÞ…ÑCëO=Óiø;–-i¼îùõ¿¾²qVÉú__YöÅ×õx0î]ëÐa ö#5Ýë2Þ„†ckÚ×–!V=v¦Ú÷±j4&Nøæ½¡ûC`=ø#3¬:7´9Ã7Ï€¾#SWÇös¸šñ¹¡=(Þž9æÃ0>‘x#†‘ÿÏ-Ùçó Ÿáù—ŸþàO·ÍúÝã/85¹ìþ·/ UUÕ6iÝÕ™É!¡ˆ<ý;g|åúÓt……O5¾!,TŸð©O=ºôÙ{šõ&kß]e][˜ ×¾»ÊeÁd{¯K¡ªªú½^–e¡®®ðžz2ø ª¡®®¡!ƆÆ]ë%¶åqGj¼Wß¶-¡á¸ˆÅTµïcᱨù3=œæÓöàGn{´NÇã2|Û°Ö1u’èLz<`ý‰Ä+1lÿ H|-R HB¨ÂwÌ [qùý˽÷Ðoµš!_ž½§þ_nÛýøÏ—9ÕÿýýõÆúS§Ï´ÖyoÍJ—=jMÞ[³2}¯ƒÆžÃÝ]½¾\>I{¤Ô'„zø ­òÖ·ƒZCëˆÜ‡“'J‰©jhŸÏ'ÃGkÙ>@92®ÌL V ›¾É%MÉÚynIâØsÒy9ÓËÙÿÜ7Üûkß»«ßIôõQk’Ö×PcçMwÿ-nåA_xMß¶Ž(ë/÷àÄùo,|è,!ÄÉ7¼¡7±}€ ÆÞ]ý1L Û3†«KÖ’ÁòÜ’…ðùÔ<ß°T0Ã9i~+ËD ôŽ»ðÕnZ Ý×Öú·Ûš¾´ÙY { q¬†‰a†T '‘ÓNám»,’%_ f8@áİu ›ZD/x•'†bØSLösÁj{¦Ú¸#­Áœ]¡P0߇ðáûï؃R`#*¼(g½ò×—˜„„H’TQY9vìøº!Cr%†3¹ðåìt.(¯¨ìíéÎßãÿÒÕ×ò HŽ¢({>ùxÙ’7fœxb¥Ý§ ä\ »/p]*µH“¼þ@Ö•••M˜4ñÃÞŸuÚ9ÃÖ÷†õ³Ç¦mc5kSMÛOùð¸h }**«Ü?‰(s1ì寄õl6–[+Øöf[ €,òù|Šë·8KÌÙB @ @ bH—ŠÊªŠÊ*§»<fæ8û_?UŸ­I žŸ)@Ó¥§»+ó{ÏüNótP9W@þÅð÷Ó„~qb:^Ùy¡O æ(俓ӑü°.‘mÛøÓ©•K8i÷j?µ~œ*Ç=Ákfpš& @WÃJêVÃ÷\=UÛøÎoÞKaoqû¼çê©Ú½¶c1&ÑmÊ'ª€%·üM.ØR²Ôvù ã¬'VÜiÉÀ/¼I ¤=†SxRúŽ_¿+„¸÷ši©êSëPsï5ÓŒ7m«Ùî×Zè±[S[ÎÞ{\PZߎ[h»Ä´¶Jèg—ʶ»ŽÛ¹Ë5ÏI¿#ÞÏiqZšÇ}¬cç© B ›ú¼ïËÓµ›·?³F»©m·MuÜMUUc'z?z¡i¿N´vk{´ZHë%ÚÞ]Ž.!·Ðt5¯Kàyß»KsÛj›úî%ÞÇâ4-îßχÀéhIh 1œú½j}ÞöôᬺÿÚéÚ¶q_Nu\ŽM»éR¨ªæ~î¿vºu€¶=˜Žä¶§×˜ººïËÓÝÈ_¶«j2ÈïÕ°©äÖ§V?ð•úO/­î¿öèºVob»–µþLt5l[b¼ËtÌœ£FHS+)ˆáH4–ò½j}>üµ­{Ñ6ô›¶ut7þâ}ûᯨÝ4U3vhêܩ۾2ú —£µí'ó`5œšÕðÏ¿~Ò ÿµB»ùó¯ŸdZ_j?ê¸/[û¿Öwªs?Zkh’ˆáÔïÕú&®¶=ÿ‰|ã¤ùO¬°Ý»Ç7qõÂG¾q’°¼7ìT!îmÄåðHa@­†|ódmcÞãÿÔ~ê%NËJ—:ÆuêVÛ6­ƒ*¸ÙöHôBm׬†‰òÝõã;o¸ùÖP0(„¨©­³ÖøÖcË™&{îèÆ&Y–™“”P”Ø–¶¶ÖÖ×ý²ÜÐÔä÷ûjN #ó1ÌÙ‰áÕ«Wž3÷¼Æ¦ff#¥«a¹eì8 °tÉ’¡Ã†••—§<†™d¤q5¼mý; NdZ€´ÿÓS”ŽŽŽúÑ LE:ŒUßÕÕ‰„mÈjYŽáßÞýåÿÎÓ£S”ÄûžºfðW~Í$¶E‘e™Wõte9‹%ñ·ñcøÉ¹ )aKÉKOÜòÙoüŸ„’ø‚½_Õ·_ò«’߯m$Ä‘íàÿžãSq×US¾·pmæÛf«gVS€Lÿ>®ªÆÿ„~ñOyâ–­®0ÝåôßÌ—qËrý¿oLýXqÇ ¿¹îß+2EÛ°î(éÿîºjJÿëÛöç “këe,zωœÿrê?^jò…Ÿ)@¦WÖˆÙ³gÿùÅ?}î’Ë.üúõãgº7¿h÷u'}ÿ–О_»‚Á`0ØÕUÙp±¢cÍÆ½»öoܶ_Û©{?åŽ_¿ÛŸ1j_Jm=ž{¯™–DÏýl·•±ç¤9þ0fj IDATc'¥ý~4õR˜ùÞò8†[[[gÏžÍS)Œacæk÷»'qHDEÉt!DÉ0¡ýÞ®¾cÏ>ñÒÆmû…wÞñô¸†:!Dç3×V]ó”Þð¾/O¿ý™5÷}ùð—cÞþÌc¡~S¯o,qº×Z¨ÝÔ¢W«£·uùØTãQÅ=$c[Û½Ûžu¼ÖÊÖžMÇ`ìÄ8«Ö:(+¹T¤ é/|ò=VÓÃsæÌY¼x1IŒ~İ}ùìÙ³o¾é†üà«7>±,Päü'ða!‚Ÿ ~òÜ3w_zÚü_ÜÒ±fãw<ýèßîíX³ñÉ­­¼ú)Ó¾îûòôÛž>÷_{x[/ÔKŒn{zÍý×NWUû{M…BÛB§k%ÖúN‡dÛ›uDÆmk‰ÖÐv*Œ=ëwéÄTß¶7|§$‰Zôö+†…W\qÅ¢E‹ò7‰G޹k×®|ì¼€WÃÚ‰–úùný¥?PìrÒ,(„ý ú—yH1iÒ¿|ÿV!Äù' mcÒ¤!âýk–M|ÆØöÖ§V[ÄXèôýq¿CÓË]Væ»\ɽ­Ë7ošØv*SÛ­Kçm?E¢1Û ¾ø’Ë>uí=ÃZ¦ÛVÐ…zCz ¿üä3Îÿ†mµ®®®¥ Ÿ3ue{ÓXèT_Ûxà+3Ü›»ÑXøð×N¼ñïhÛ7þ⇿v¢¶a­iíÊØÖ¥²¶­õl=`Û‘šzvéÄÚmdS û<6ó´h´-L´ý¦Ç]“¸WógÏN.‰µô2f[­kIßô­†µ >ïÚ»GŒ÷÷ô`8¤-‰_~ò¹ ¯ûWãÊøhÅ҅ϵŽý¥pýöIë/òî«áþkEÒ _áúU˜ZÏ?ÿúIÚ†ûzÔãâUUU½C­sÓ—~zY—;ubêÇ© 9å$\JVœ¶kßüÒŸó,’¾R:é$vYsNßvY@;å¢Ó¶Ÿ+iãñh?wíÚe{ÌX¦çy ›K.¾ä²s¿|÷ˆ1'xyõÖVÃ//|å«.Á M‹’¥ Ÿ[<æ—B³kí¦õmNëMkÍG¾qÒü'V‡·º½ºÔq9$k¡û¶S‰ûHãv2ÿ‰ú ¸rîtT$¦&œB¡ uÛX¨ß´-4:p ×K—»L‹lÛšÃZÏ›7oΜ9,--M¢/§y=l»„µ Èä»ÖÞXI÷5<÷š»FŒ™áq ÕÝ}yá+^u¶&¶dpÕ҅ϽÞò¤m<ò“ôíyÿÓt<óÿç‚ožl­ Õ±½×½P»©WÐönݯ^Áû!y\ ›š'·¶íÄý8Y çü?ÁÔ<@eeå^žBî§‚<–Ä}ööööÄÝo¡Åpkkë‚ /^œ\»$\Ž„–v$î+Ú\;æ|ŒáKoxÂ{ !>:ç…Ê÷®þÝã/8UX9õ7N˱o=¶Ü½ÄZÁx̶÷Æ-´VxôúS\*¸ßtik»mÛ›m¡©çDî4uÈÁÓQý§ŠŠÊžžncIyy…V¢w^QQiCcaÿcØvÆÃ3ÖÔØi;Ïb¸µµµÿ×K{y“8…o$'ÑyV´i=òü~8öæð±3}IxgêoR²ë¸»þ!Äõi5Km=öœ¾#þ*ª¢¤¢ÅZÒÝÕ©E£¢»«³²ªÚ©Ð½7cí¦VÁË.Lõmwá´71œª vãÖc~®wÓº˜æß»—ÕpÆ|óÑ·3Ð$ÝݦéL=§o/È:Eýÿ¨ËÎÎS'zIggÇ‘©î….½›h­¼ïÂZßãv>Åpúþn8¡³»É öù -½§¬s!†ù'Øßƒ55µ¶åíÌo&b8¹ 6]ólzçÕ%á¼Wصk—íºÆB};î[¿NŒ=x?0žjÄ0+!ÜïÓ°íû÷Ùwží¼"†“þ$KÛœ‹[Íãß%Ô­1PíŸ9I UUÛ÷ï[¾|ùÌfÃû6bÄÔ)ÓV­\ÕÓÓ‹ñ ©!ËrUUõäÉSjëjKK#†öŠKŠ[ÆŽ9jT4Qx‡8u$I** ”––%óëÓG P19áLÄ0Ä0ÈÙnmmeÖH‰„/Ñš3gNÒŸg È®h4ÆøðçÔòI’ß/ûýLİHç7,å>¨@! C;vîxíZ¾ )…$Iª¬¬<~⤆†Æ’A%™ˆáE‹%—Ħ/YJURêÛ©í–PXëàè¾½{W­\qöÙsG76%÷ȰR”Ø–¶¶ÖÖ×ý²ÜÐÔä÷'¬ÉÄðìÙ³“Kb-Øâ~¿a.„%  ðbxõê•çÌ=¯±©™ÙHéjXn;Î,]²dè°aeååiáþ$±ËâØ˜©ú¶ËÚ)ƒ­ëcS‰í~]Æ©O­ /¨ŠÒÑÑQ?º©H‡‘£ê»º:#‘p¢ “ÿ­Ù³gÏ›7oΜ9,--íÏŠÓ%̼ÔqÉfý¦m?ưwÙ‘SŸd0€ü¢}_t˜²,Çb±$>"4ù¿nmm]°`ÁâÅ‹“Ë`ÛÄÕ™·ävGú)ÉÕpkkkÿ¯—öò&q ßHî×Ù†Ü8 1œ² 6žNºN./— רªš™“Ò~¿?2áq%sR:}7œÐEOÆëªX@’5nIB½éX '&¹ 6]Šì%DãÖ1Uصk—µ$Ñdµ6I®O(xI¯wMkå¼tN8†“þ$KÛx‹[-næyéÖXb»íÔ$nÈ;ý9)mj"‘ˆþS+ŒD"¦ÊZ—®"‘ˆvSïDïÇÔÖ´G½Žµ•©¤pb˜O“˜ÃÒ68í$nCc›ª%}ùÃ…‡u-ô“SÎ9E qõœÜ‚5Ç׸Ä0À>½¢Ñä, Ú–˜Êµ›@àÀ^kͽƴÖnÚö·Ðº cÆÛV †Y¡¦ð½a½ÄT®Ýìíí)++ïííñÞ³m?q ­GeÚi.p˜ÄSRþÓá$!lKLåÆÂžžîòò kW¦Â¸ýè­¬…NGeÝ—q§NÛýÁj7‡UQ’n]QQ©owwu !´ÞL} »»:+**µÊƶ¦®TE‰[ØÝÕYYUmÚ£µ•m?ÆsßÎ0bEJ²ë¶ÎÎŽc»R;;;ôŸÆj¦BSkoÆš.….{4µrê'î61 Hïr8Þ(­©©µvt´Àǃ€ÂÙ;«kß¿ÏæØràÀò †[[[ùÈçæû†ó9†çÌ™“ôçY²H’$E!†ÓBQY–3Ã"ß°”rÞ¿¯ ›O’ª«ªwìÜ^W[Çl¤\{G{MM­$%ügÀI~ÃRrIlú’¥þG¬©Ä©[=ŒIe–ßïŸ6mú²¥oΚujmÝ`ŸÏÇœ¤„ªªíû÷-_¾|æ 3‹‹‹3ógÏN.‰õ,LÕà½31OÄð°#¦N™¶j媞žîX,Æœ¤„,ËUUÕ“'O©­«--=.1ÜŸ$vY—ªÆõk¢Qjy­7­\ûiý…Àx ,š¤â’â–±cFŽFÞ!NI’ŠŠ¥¥eÉüz”ô^gÏž=oÞ¼9sæ{îèÆ&Y–™“”P”Ø–¶¶ÖÖ×ý²ÜÐÔä÷'¬Ä0 ”^½zå9sÏkljf6Rº–[ÆŽóK—,:lXYyybÍózð|‡x¤*JGGGýè¦"-y4ª¾««3 'Ú0£«aÓ—,e7¿Sx ¦ïEæû!ä&EQdYVU•©H9Y–c±˜’øÜft5¬}½`a?d0 GWÃî‹cÛ5¥um{"Úö›ƒý:aX[ÿ©}‡±©ši€¹sJ0 cØË‰\SSM=M…Öš^2Øc'¦C²­fÛ›àô5€lSU5—OJûýþh4: ‘ºDK_)p>‘»î²ÏÂ¥¦iƒÕpZx¹Î9¯…æòlHŽÇ•î€Zg-†M§g“®“ƒ‡ ¹,‹'¥mwLu@$Ñʵq$!†3!¡÷tIAÈwZâÚF²–ÄÀ™ŽaÓÂÆk†ÝSÙ©Dß6U³íßí¦{=vb{ØÆ#±=rÞë·à#6·bØå’c—B÷VÆØó²Ç„vÜa»RÜ¡@ºE"‘h4káwà@¯ñf(Ô:šî%†yM͵÷†M…ÚM½°à?ó‹€Â"gc¸¢¢Ò=†+**{zºÝ·‰a@.ç°¢*J¶v®­®»«³»«S/ìîꬬªÖOû©ßÛÝÕyäðÃPì·‰a@ŽRT¡di5ÜÙÙa9ÕX®¨jgg‡þÓØJ¯i,·Ý&†9½ÎÖIéššZkaGGû<ˆa`!œ¥ó·íû÷ÙOÞžL&†Éå0ß7L 2N’$E!†ÓBQY–‰a€=Ÿ$UWUïØ¹½®¶ŽÙH¹öŽöššZIJø{ ‰aü~ÿ´iÓ—-}sÖ¬Skëû|>æ$%TUmß¿oùòå3O˜Y\\L ìcx؈S§L[µrUOOw,cNRB–媪êÉ“§ÔÖÕ––G ì—·Œ3rÔ¨h4¢ðqêH’TT(--Kæ×£L¨éË‘l¿@Iû¾Ö›€¤E@ó;2ÃzÊ ‡o"Ò×ø­Ãd0 WÒÙÚqÜ/€Õpvèç«Y ˆá -‹ ]1œé…¯1’IbHŸh4Æø$çÔòI’ß/ûý¼Œa§%2—h@j…‚¡;w¼¿v-ßk”B’$UVV?qRCCcÉ ’‰a@ª×ÁÑ}{÷®Z¹âì³çŽnlJîa¥(±-mm­­¯ûe¹¡©ÉïO,X3ÃÆ?¶-v7lüã%@bxõê•çÌ=¯±©™ÙHéjXn;Î,]²dè°aeåå9æ(ÕnÚæ«mM@¨ŠÒÑÑQ?º©HËRsT}WWg$N´!'¥` Ð¾Œ/:LY–c±X*1wd 1 @ÖpRUU9)M @Àþt'2!Ä0 £ôôõûý$11 ™<)mÜ—¾ýÐÇH$b-Ñoj÷:51ÞkÛ1 À1Œñi¼iÍT}Û©‰Çž‰aÀÀ Ý4­MõxΗ¸MY ·¶¶Îž=›çä£H$f.´èB”••‡BAk6k´»Œ¬ÛÆãMÓ½¶=Z Ï™3gñâÅ$1ä'5óï ÷öö”••÷ööh…ú†±Ží»È¶÷ošîµí9Ç%óñW\qEkkk.½ñk!rñðŸg€ºm,TUµ¼¼Â©¦1bm»íéé./¯èéévé9“2´B,Z´èŠ+®X´hQBkb-2ßÓ`-qÉW—/xà+˜Às+ª¢dpo‡÷ÕÝÕYQQÙÝÕ©m躻:µ:Æ£2m;5±Ý…Sµœ•L Ïž=;¹$Nˆ÷d%ƒÀ#EJ¦NÕvvv÷¥ßììì0jªi»mmâ´ Ûj…ÃI'±ñ˃µ mÕk\κ/m­_NlìJïÐt¯±Ä¶8ËጽcZSSk-ìèhç1HA kIæ$%TUmß¿oùòå3O˜Y\\œ‰ÎÌ:ØúÞ°ñBhÛ8·ÞkºL:nPÀ1ÌÒã×%—¬™üØKï1}a°ñ&ß% þLéþ‡±¡SÂ¥;ƒS²_2 ²þÕ¶©¦ÿôžXz+—Õª©C§@MhmüÅÂT¨•è_e½é2RÛcà{ˆ€ÎB<'´ât W/Z›'½São¦_ÜGj{ œÄb8áêq=—òÈIU‡ÆÅkJº%\€ÎÛ³¾É-‘½„}ZGa]m§{§ú mžµ@ ÷7QÒ'Y ª ìÔö-m@^Ë¡¿îÏ‚Ò)œ¼¿¹ÛŸÂô-Çù‹g`5œÆ±é:á„RÇö=Z§÷n­…¶»Ž{<¶ý;íÔt&Ùã‰eÛcà2i †û½¶7åz\YkšÖ».id½Ë©²m‡É]>æeÖ½x™Òˆá$µBçï1ˆá,,s!öˆ^ ø†%ˆaˆa@ @ bbÃÀ€Ä0Ä0 † †1 1 1 ˆaˆa@ @ bbÃÀ€Ä0Ä0 † †1 1 1 ˆaˆa@ @ bbÃÀ€Ä0Ä0 † † †1 1 ˆaˆa@ @ bbÃÀ€Ä0Ä0 † † †1 1 ˆaˆa@ @ bbÃÀ€Ä0Ä0Ä0 † †1 1 ˆaˆa@ @ bbÃÀ€Ä0Ä0Ä0 †(üL2láÓ¿d€F\zÅ¿0  ã¤4Ä0Ä0 † †1 1 ˆaòß,…‚ápXUU—:>Ÿ¯dPiÀÏS1 ¤T8~wÍê7Z;>/ýþÓÎ8sî¹ç‡‚}û¬¨¬êéîÒ~ÀUTV !lÇb;ÆT Üe¿L@ £@¨ªºôÍ%?üñÝÅ%%öËå`ð'?úÏ >óY—Α×Ӥåa¶†–wE¦¢ðÞ0²#‹9e°¢¸¤$‹yYû2“X ¹¸NÒ·µ“qåä´í±¹é÷ý¼¨é—ï ­»6öi:ÛƒŒ{äúa˜Ïû~]Nû[‡ìqölÌ¥Ÿ\˜(€âg°õE?Í­±7àÚÞå½s=“lë;u˜è~½¼ÛšÐä»ô·ŸlMZœ”F§lBç¥kPÓv -7_»SuT)]®MÑ VÃúû;Š—ßER˜7éèÓËXòn¢b%l²¸±‘Ž“®i:‘›ÖÌÊDVœ”FþpOw—ñ¿DÏKOh'ý·F9õÛƒS·¹ùËJrG•’±ä×DÕ0Ç+B÷‹l“hnºÚºítq¯Ç†‰Ä©+/WÇ“„&ÐÔgB³ç²Ç„Ž![ÃÈW²,‡‚A—ïeÙé×¶ÄøÓåÕÓôíò²î½mÜ>ª·Ží]îqÈÞ÷ëñ‰Û¹õÊg{ÌúDÄ0ò›Ïç;ý̳~úã;£Ñ¨ýóÒï?ý̳˜¨Ãv}Ì´€ÒbРҹçžÁg>ë^- æ×¸H¦ †‘O;¿?ìóþµ P¨¸RbbÃÀ€Ä0Ä0 † †T«¨¬òþu°yñű.#²-çÛpÆgJ#Ó d¼÷ý+*«’ûÐÿ¤¦{ï)90Ä0$c‘Iˆa ›‘¬'±q¡l,Ñ~j5M÷:%º©¡ËŠÜ¥+ëÞ=ƒËÞFäTÓã‘ç_kbH˜mžÆTqÃÆÔ0îŽÞ½»~ôhfH‡m[·Ž1Òö—]I’…N EQÜ~û!†‘#EEgÌžýÊ_ÿRU]Õ2flrÏZNëà¶6-úÃÿ\ñù/„Ã!Ó½>Iª®ªÞ±s{]ms•ríí55µ’”ðŸÃȨ¢@qÃè†Ï^|ÉËýó'‹Å˜ UdY6|ØEŸý\s˘¾CÍ/÷~ÿ´iÓ—-}sÖ¬Skëû|>f,%TUmß¿oùòå3O˜Y\\L #§ù|¢¤dÐÄI“§NŸ‘įÜ)Љ„­¬Åð°#¦N™¶j媞žn~ Náo?UUÕ“'O©­«--=ŽFüî óú3`V¼7 1 1 ˆaˆa@ @ bbÃÀ ÷ù™È:EÛ;¢BŠªΠ|>QV,®ñK+¾h4ÆÔ³Ïçóûe¿?@ @>YÿIdë®=ï®ß G fPÅEþi…‡NaK¡px÷μÿ~ggGaŒW’¤ŠŠÊñ&Ô74”Ãv´Gwïm_¹®íêÏž2eÌIòÀ TU]¾nëï_]]ð—×Õ×7±htÿ¾½«W¯š3çìÆæY– `ȱXlsÛ¦7Z[ý²tÃhÙï)a‰aȲrmÛW.ž5i숂”Ïç›5¥©H–ÿ5Ã×Ô{o$}oÍ»çÌÛÔ<¦`†,ËòØqüþÀ[o¾9xȲò2Okhþ@¶Ž¢/9¾exá mê¸Q}áˆõÍ_UU;;;F74ÞGÕîîêŒD#ë³€œ I¾BºXéÈÑñ»¢(²,Þý~LQTEÉt ·mݰa[ß»nÞºc¢±~è´ã›Ç7 jiÏ¿.ÒÃËÞmûÛëkN™1áß/;¯©~¨ªŠ­;÷¼÷áæß¾¸æÓsü³¦·0Ѥ%†ßZÓ¶yÛÇ·|íóõ#‡¬]¿ùϯ.Bœ{æ _ºtî™'Oùó«o©BœJ€+UU ï mžÙï÷G£ú˱þÆpÛÖ _¼æÛ_û|ýÈ!>¹èµ%+‡ÖU !žýÓk7]wÅygμøS§ýìRåì4d+Tôm=]LI“ÉàIß òQ¯”þpkßÉ3&ÔÒ¶íã×–¬œr|óÓÝöôƒ· ­«~òÙ¿ªBÔrÒŒ níã_dka§óÛý1k>f°qPùýõ³ý{nþ·ËÏSTÑÔ0ü©oB(B:T…(+¤k˜:¡ùÙ?ýã¢9Óù÷.R~†6D"c·‘HÄï÷G"}wÖ:9>d§úõj¦Bc5cMSI:‹tÅð¶{êG U…PU1¤®ZѶíãïÝý¤â†ÿø¼6ŠÑõC·íØÃ?0È5ZVÆXŒAkLbc¡u¼¦’ÌOHcX ZíwUˆC‡‚ZßõÝëšGWÄÑ{dpV‚9—õ7†ê‡nݾgÒ„&!„ð‰¶m» þë¥ç6j¬ á[·ï]?”g<¸gF4šúØ…‚N…ôzónȶƒ*++7U0U³-Çž”v©–£1!„ð©bíúÍ“'4óo \¥å¯wlûÔ UUííí)++ïííɯ![[•—Wè£(/¯Ðh;jS[Óðª¥I¯”žÜ4è5ë·íÚ«¡±øÍUÏ¿ðÚº·¨BU¨BlÛµwÅšõ“›ñ/ \£åðßѦPOO·–IºòòŠžžn=ilë¤Vʇl{ÀúpŒ!j­`*´–#<CNýj¸¥qüY'¶¿ü·.<ï´úC.øÔéϽðÚœ3OªP„ع{ïËÿxkö‰õüÑ0ÄËá>ˆØ»î®ÎŠŠJãM}/ú†V§»«3_†l”©DëÖÔ¹ª(qêó“ŽÇ"-1,„8÷ŒÓ^{ó­G~ù‡™Ó'Lßü›ÇþS±ný–u6¯\³~ö‰õçžqÿ¾À¢ %='B;;; {QõBãîL7sÈÖA™Jœ·a†g#5Ÿ)}î§5Ú°vKßó/þcûŽ=BˆÑõC'Oh¾æ’鬃ÀãÚp }˜å€rzbXÑÒ8¾¥Q\r6ŸÑÉ&R¦N„2äŒa@¿CIeÈÄ0 ¥3)s‘$I±Â²"Ë21 yÃ烊«×ï˜ÐP[`CÛ°½}PQÀç³ÙWYYµcûÖÁƒ‡ØÛÛ÷UW×ø$¯L @–U–H3§´¼Ðºþ¢3Æ?ºV–}…±þp{û_ßÜxê ã+KÌ™ðû'O™ºì­·N9eVÝà!’TCVuÿ¾½+þ¹|Úô%ÅÅÄ0ä‡úZo¨væ”–¿-oûó’ 3®â"ÿÌ)-#†ÔÖך³Föû‡>98eͪU==ݱ‚¸PK–åÊʪã'Nª©©TZJ @Þ˜0,PZ4lôˆ!…ôV©Ï'ÊŠ¥Ñ5~‡.jji>rx4+˜ë¥}’TT(-=Î{b²O’DcÝ€{AŠ¢þÐó쀀Ä0Ä0 † †1 1 ˆaˆa@ @ b€œsø{µvíÜÁ\…þùƒ0dÞÿ½òf™¬M0IEND®B`‚libjibx-java-1.1.6a/docs/eclipse/images/Task_5.png0000644000175000017500000006543011017733664021577 0ustar moellermoeller‰PNG  IHDR}—(Ís pHYs::—9ÛÂtIMEØ 85)sÀ| IDATxÚìw|ÕÚÇŸÙÝô^ !$¤Ð›‚ˆ4QQŠ"^ë˽b}•¢(VÄkCEŠ ½êµ÷ŠH‘{­(Ui6 BH'eÛÌyÿ˜dvgggwgwg“ß÷Ã'ÌΜ9}Îož3gæáèdd>@#˜ÿˆô§ÉIqïºû~Ô õ59DWTÜÆÆÔ½q¼±ç•FCBb’Nb¸ã®{¤ÒkrˆnCC=Ú€iinn¨¯ÿþûoU†;vœÁ`Œ‹ÓC MÇÑ” /¥÷Ä<3c M @o´¶´ÔÕÖ|ÿý·Ÿvm׌ ᫎ}ï7ÆŽGD1±±:‰á„üø#ógÏ™ÛØ€éeºÔÝÖÖ Ö©<"Š‹ïÞ=gíš/ Š"£¢tC\||÷îÝ»ge˜”]¡Þj­4›­ fá×½µµVÁn·'§Fæ&öî›–”… tÍÈP?/Û¥kWWuÓC äXW%‘­¢5B0™ãjZé÷CGÍ‚Õj³X­Gëšvü~¤à·¤qãróóSÑŽã|>QT7=ÄàYwm5fª·2blÑѶz[t\„Åj³Z­f‹Õl±¶¶Z¶n=p¼©éªi§¤¥Å¡[ ’ ž ¢ûï¿Ï±:À£vù|b›º¹Ä0sÆ Ù3V<û¬W1Hûî9)ºk=ÐÌÙéxDD“‰7›m­-‹Õj±X[ÍÖV³¹µÕÒb¶lü©477éÂ)Ð+@hy≅Žíûî»7´P“ Ç õŒNù3£Iñ»Ÿ„Xvý8±ÍZ X 3gÌ…Ösê癳ÝRo9ØÂlQuu-õf‹Íl¶¶š--fK‹(½­–Ÿ·”N¹ ?º-÷Þ{-\¸ˆBº2_̆AeŒ‰‘[±¤™yâ‰…ŽŸŽ… I÷;2ã8ï8ݘ»œo÷©®³ÄÒ–¯Xá~ÖÌ™NI(İ|ÅŠY3g:)îò+ÜÅàYwãŽìIdbÙ-¥KŸ,;/ð³óÏ3ž';/Ø¡©á8.N +rÑ¢';ï¹çnÇqÛÝOixŸ“và.NƘ#u§ Y’îTȪSf\-l1Å… 9bæ ×5Еðú|¢»YbMbpH¯;!?)'ݵ۬Î-QüO¬¯´7ÛÌK‹ÙÒÚjm5›[Z--fsK«¥Õln5[£cŒº ½è±3?½désn÷<½dé¢EO:~:õvá½MÚÁÓK–‘#Ù<86G©Ëžî´S!«ÒÌÜ9çv×]CŠ¢+ €>d×ÐÞWmÞØÞ½ecÍi§r Êç:ÅàÙÞåy¡idß‘D#^`‚héÂÞabïιc¶²Á·ä™e*Ë8‹̹c¶kÒ¢(:uÄ#MÂuÃ)Ží§—,c“=]öçœ;f/yf™#3îò#»Çµ9×.L¼ÊSŒF#q'Ì] ²±9vª‰aîܹ']zsæ,^¼Ø]<ë.ÅRö”n/©Ýr¸¾Ålmm5·´š[Ì––VKk«Ùl±˜-6³ÅzûmcÙ§¡[½éî3K—»î¿ãöYÏ,]¾ä™ewÜ>KÜyÇí³ÂK:Nq{ÉHÂÈ*¨ÂM€¬”йuH¾4N7®IH;YYw¥!ÐÁ+þ/mßF¾çž{d.Z´Hªy®³ÄŽœ¶]wzŒÁ‘1QñçܹsÝæÁ£îš2#­Bn—¸âêÆš:qzÙÒ6½l±š-V«Å>úŒžçŒë»c 7Ý]ºlÝ>»í¹‹øSV Å á½’|¯v*›°b–Äü<³t¹#‡Ž Ùs—.[á€WP;öÜ>{æÒe+¤  Ùm×þ轋/½¢¹é¸Nb "«Õºê‹ÏL>ßÚ4× î°Y-S/ºä½wÞ8oÂäÔTÏNjkkׯûjêE—جñÊÒC  »@wÐ5f³966îo—\öéǪ<åo—\&ð‚ÙlÖO Úæ™ËKKдtKBb¢Á`TXøãz‹çyÌ3:@ $Î3¿ÿö›hQ ˜ˆèŠ«®±˜Í°z€@ ~vã𡃫¾øÌ€ê‚t&éÌ3šÃI¾¶{€½ tDü²w»fd'—AK(\èš‘‰:Ña£ Pc¾–ÐjÛ»*+ºêhe׌̪£•jEw1;õ9uiZZå_óJð˜1o‹¯ac¹æY³ú„B[}v׫,@•ã[eÊ6·»|ª¿¨×?CØîN%’ý´RûÖ%t•½®» óÌG+Hƒ­<"ÖdjZ9¹wbêHÔ·t32»Iêš‘é”nhqdFMƼ-~àž øæ³VÚ”A.B@»Ÿ™ô-cÁ¬L_Š>\Ô®×µ®®²À]Þ–:õ£¾e O$ƒcïz¼22»¹»Þüe÷‹ýIËq®kæ]K'¦ëøëV‚4GñÜǵºÜ•שÔ*ëPö,§\IÃ(T£ke‹¬mU+twQè®§hr—à±×©É»þà[s;]ŒNí«¾?»^_›@Û«Lùb÷-!ÙŠrºT–Úãh [ó>\Ë^5™SÐpă½«ênˆ1–Ù-«òH…´=¤?}»ÕrŠ3³[–#¹Ê#Ž£þßæ»Ë¼ìíªxԵȚW‚¸-§SñÄ£®s ï.ŸŽ¢ùgל;åJ6Œkf­ìtºÊ"¢¸D¡8eÆÿŒ)÷:iå¸;ê±?øÓÜÒŸ²í«\É®§»Öžô”]eÊÕîsBî*ÊuC¹ÔŽëBÍHånÛg{W9Qÿ«ºëÌnYŽmÍëWy âwDëg)Ú±y I÷õ9Q×aB!ŒÇÁ)©?ÝÀcIõÓ4A®R§öõá¢BIÕ_eA«vrªy®2§öê=3ìuW¹Š}h³wqÍ5@“JpŠÄcœ~&ªí°«U®]jÙn g«×Ïû äÖq×ÝrM.WY@Ô1q¢‡›Nõíå¨"=Œ0\w}›g&¢#‡UÆ£2rw“?þ¬«r—„rBîvºf@“J8Rq8³[–#*wqŠݲ²ºee+¬tSȹ?ëãdgesEг”ÒH”OפªÝÕ¼šœ(÷ßV™É–K¶àîâW¸ Õ\\>77©˜MU?ŒÈ–N,”ã¢ÄU¦~ðª)EÅ’ž(&êñð6K®uèCûºk…Någuf´ÿ^U·¬l}Fè[<Á<+øqjÅ‘ŠÃÊÙ8]Ú”ÎÛÕ„×sU‡¼·©8ìÚŽÛ7,ʨy„Ò ñ­räíSsV>$³âð¡¬ìîÒ;,ÇъÇԧ"›O;]S—ÊÿJpŠ\9N§zpìt=Å©ºÜÅé¿ä. ë>dëYöt5Eh7p½Ç—­j?-eQ¹?¨,—Ï—·S)ʵS9æoœòŸ•ÝÝc3ix•É^ìZÍ(L)\Aî® §²û³¢Jýµì4\øÙîñGæÏž3Wô¿k±XP# Tdew÷V €~êÍÏl õÑë:6QQQÔîפ²Š] ÛOÖ( DG NBz»<‚ÙpÞ&!¤“_Æ>ôOñ” ºº­am/ ÝŽ<š\ËÀG{×l6£Fm‰ŽŽvØ»ðø‚ì] DönYi1jЖ¾ýÈë®ô4óÌ@ð0¡ $DDD$$&¡:6µ5ÕÐ]ЋÜol°Ùl¨Ø»(ºÛÎ žïD@w¢ :"˜g€N)ºŒY­V›Í&Bˆí?ƒÁ!zìîRjZ:}ðΛã'L•£Ôêõtné¶´¶>tð·=»;ÂlÆÔÔÔõè‘Ý>WìÙÞu] Ô€zC=£Þ€nE×fµ«:ºmÛÖý 8˜3p¡Ê ÇqÍ­­[·nINNNLJì nà1Ï «Õºó×_ m2™ †P®õIŠHvÚðŸ6nœv͵Ð]ÍØ%"Aªkªûõïo2#Œ&ƒÑb)Š‹¨®>Zù‡îD7€ð<ÏqÇ8ƒ µàqD<Ïw’ŽÝ€Î kUÑÑtwû‡£†^¶Q«ØZ-–ÚÚZqÛb6§¦¦JÖÖÖFEG‹Û©©©1^®Moj:î´'>>!Utþ­×¯~þ• $TÙTµlû{öýYmn$¢ôèÄE}f½63¾«†©l®Øþ¿}_î8XçsqüÐŒ¡gö:m`F_ôû½Í†ë~ÿœA½¹zp ºh€â D&Õ³sëî_¶ÖUµ¤gDzZÊàÓ"㺋þ³%-¿gzT´©WQ·ÄÁ3`ì®·0ÆÉëî²Û®›ýÜk®§:Þ2ûß¿-H¹ÿÂ~PPýêîöG¿ió†—N×jȨ­©éÞ£5Ô×çæä8MOO¯­­MJN&¢Cfgeyw÷G”œœâøYuô#FD ñ‰­%‹Ù.Ñà[V?ÿb R¹ï»§¶ïÛ9e|IV.e5O%:Ôb.©©¸ñ½ûõyâÌ»4IåÙÞØ\ý˨¡»o=e|U¹M°¥ï«Þ»ü‡W :®çX^ZuÑ9SÎ^²êþǹÿÐþgù ¶©®¶©>%61-1íÁq·”­›¢íuä­è®ÿ²rÀÐ^™Ý‰ˆÖ¹—ˆ4—^㺋,±Ýo{øj"Ú¼#yïŸo Ñ l—v¯øsíâ»Å^¹ékžœ+nOœû¤¬fCAC©»W<ùã N°ÛââºuMÈHKÕ/‹ˆZÿ7Š8""›ßôΈÓ6i01"v¢ãMM)))®Ž75%%%µ…ôA¤ý)6.În·Y-Ö¡!)`žC~üþ'»õøßÿ4zìH"²˜$º•]6x°™Jú×ÃÛ{§›CÔ?-¥ZÊš½e÷}÷”ÿÒ[R¿w[åæ1=2‡ÆÞ{fÞä·Zo?Tz¬gZ^—Ĩ··ž“’™ŸÜKW×À¦·GøÜEw¾ÿ„Q2AÒ;'½jãG‰Ùù;6ÞêsœÏýüîšÝÿœ“›Õ=“(³O·Þéq™ûVMÖü:òŠ_¶Ö#bÿØuHü™’–Ú§Mÿì®’cù]²®~ùYYÃ5ÝÔ³®¾ðÁÚÏçÅ Í=öõ;ÆhÆÞúLŒ3’1’ ‘Ý µÃÏ6òô~ì»ÓUö–vs÷$µò®Ú{ßzá dž¬ÄBwC¬»…cN0p‘&Î(PZ¼)+!²k\D~—¨_^ê5õÖωã8sùÄéŸ Ÿ??ìÌéÛü^G“»ûÒŠÀ‡žÑÖ9N”öØØxq]]æµ?þÖ™ìd³YÍ}Μ÷ýÖLjîyaá¢ÿ»Wó´*›ª¶ïÛ9¥¨7‘ydä³D$Joô±IDf"×+óÃ;+‡Vù9áüÜÖ“# Çë#ùî‘\ÒµýžƒnÝôËŽX.3+Ž{wÏúF‡Rwþ¸$gÔõD)D4ëâS¿{õ”©·~FD¬¥lâuG^uQc}MÖÈ3ccDtô@USzÖ°qÿ}{¢Ïq>÷ó»Ÿm_=uèðÁ=¥Æ§› ¦î)9Û^ëO&ýdÏÊq‰éIÕGg”·]=ó»æõϼo÷]óΚ@4ˆ^½”οÝ镊îgóbø–&¡åxIiõ(» FB·Óÿ>µo¤ÑÁÅF“b=»ÄþOžW½Åuž¹vÇÞªÃÕ{˫Šw©cç !§Š»vüM žîîÿas›½k³'$Æe¦%f¤'D Èθpë{K†Ñ´›žxÿ¥ûˆÑ„Ûvj`ï2&0&¾æÍ+ê®/c#:z¤’{;½zâænÃ󝋯î¼ï·®ôe•{nznkDÿsæ}¿õÛ±#‡N™µñÃ/4IkÙö7º§&ÕµÖQ+QvÛNQzëþ!þݽë²íoøiò®Øß%"ú@ck«­™ˆLs]¿S¢æÿïçƒÄ¥—U–†°»Wþ°¤ßE ˆˆÔÑòO~ydú¶÷– &¢+n\ôÁË÷xÛEyžÅÆÓûd5•‹Iˆ¯9¸ÝRWê®Ct‰èóy±|Ëq¾¥©µxÛ?‡×ðÜb8²ùƒ—¶g"C3FµÙ»çmoÉ •½EÜ6›—è¹Ù7öÊMë…/ö–WÑü{_í•›NDÏκá¶e/»ÓÝ¿n'¢Á§ …Tݽ¿ðõŒ+¿tÚe`i‘lÀ}åÏϦÖRs«}âyÓNR‚åËo¹ùfñ›œ‹åÅ•+gÏš¥Rw‰1Qo™ÐÞÒkÿK$xiïÖÖ7477×ÖÔvïžÅÖµkIŒÄA„»ö¤¦¥ÆÅÅ¥&k9ááÖ^ÅlµòDÔTvŒˆˆãˆÈÖ\ÓT¾ç’[¿}çéÑbœSïüMí½ÑÖ÷ûdeôêV Šî†¿Öþ^ñ[C+ÿàä»Ïóë—”0põ¶gŸ)?`9ºÒ\o>ÿ’A/.û£Ï  "²ÙmUÍõ?7™¥«³I|ûÆ]D$°BÞÆ_r1‹™o9.4o-Ùq¼„ŸðÆhîìÿáés~·ÿøî~—´=…ͽãðæj»Ÿd=ó­K_:´å›ñÓ²+¿ÿí»#§ÝVTùýo+–­¹uéK®c©»=CN&þÜñË6ñ§¸!Ýv Ýõ»` ¢ôÈ“ïa92’`àøi力•×>¼ñèO/H è?à†oú÷Ë/Ñ 7ÞôÏüCý4³Ð.·V«ü8Î&ΫŒ³¹¹9'§GNNcUUŒ ÇŽUKíÝ‚|ÆØSѵÒÝóo½…ˆV?ÿâ‚q§]¿lËçÿú >:©‰(ÂùÔõùs^ÞúÄY§}ûê'Ngù\oU âÆqËq'éý¡Ç} ^ØÑ-Ž›-~¦e#Ýjxjÿðܺ=ëüü1«™/H¶)4ˆÏåòˆÅn{Ϻ"ŽEäl>¿ùùŸŽCY©ÕDtݼ /=tÖä9%Ÿ|ðé´«ÏW³Íj?z *&!ž8®þHÕ¾ÒÊ!ªëZ¢kš'ÿã«W_˜p齪­º©6>Š‹"¢âc%oÿô©¸Ö»wXíÖ ®|íÕ®ºôåàÕñ=„ˆ¢3iTVQßß>(,#=µ®že噈'¼Œ«+÷ÚÖùö»zŒ¼ Ìf³[Íæ7ž^9múD¾¥)¬E7ø+ª¯t>ÿ_G_} }Ȉ˯Ñ5)Úîþº}«CeÅmiHwa »^cå ¢ÁIq'ŒNŽã#ÇŒ‘DœŒU5ù’³Î9çl"š8i2Í{àñ§:{·ÍÜMˆO¨­kp Ÿ P?íÁ1A "qYUzzºSwh8•".Z?}Zkk+:ÛÊ·4™iÍ陼e È>ïê¸»ßØüÓØ‘NgùVo5f µÊ€íëÝ_ß÷ö÷Dt¤Ælõ;­sOµ¥xs´‘3MD´f÷ºg¾~6&.*+«[]SÓ¸nØùÜ<2íêó_|eÙ ÈÄÑž]ªêëÎÔkÅ-ƒÈ\,†¹iÞ— V®ºåz/DwΔ³{礳nî+­$¢ßZ]Ô3“ˆ †r抷ýëª{þ¥2šãuUu–³…ˆŽ¯þ¥´T¤8Ž‹0™L‘?M¹á“Ï~ùzJá˜àÔY‰Ì•í÷ѱ£‡GчˆÈ”`ÛqÅ+?~Ÿ‘,Nh”TÖßuÁ>ˆ.ñvÞnµÚ,¶®¦ý{Åþ>.–®W¯8øÚy“NLøÑÅWüø¨ÂqJ1o·Î`8[ÿðê¥Ògö{ô¡ß‰Êl6+evI[¿§ü`uˤS»]9¬«¸ó¤ÛP¹=[6mbÔ–MÕœÝUw_̈ÈÄk›l#·‰3oàìD&ÞÝØÌËµÒ •óÌcÄ(****:JÖ„ÚoãTÇ)ð¼@1bÕÒOÆ·Í4±¶gÉš?ÃØðê;Ã/žÀ ¬¡¹:ÂyZÖà¶}0º÷ÁÊó4tÊ„„.qNV¯õId‘ÑÝO¶}ò¯Õ (†Ò£»Xbë"ÝÈ¡ú´®pÞÎ#¿›¸ÖhSäº=ëûêqÞ$tKêb„OkUþ¾ûغ¹D”™™ÇϸM“þ ³ÕDöfbüéôí‚sÚ&À›v9‡ñ†%«þ·þÁ†M=O\W5ä@Õ‡o­ž~ûµŽeVæ#eêE—ˆÒRšÍ •õ5D”›Ú=%>A¼Õ»áìkc"#>Þ¾þ™5/0Š$¿ÛHm¥‘¹¾ý:¨ÿâéLJ²‰æQʼnÀg÷½ÈÛéåƒ?=—5ü›Ýf³Zm«Õjx!¬E7ÈÆ®Ùf$"£ˆÑþšlëëóe(¥mÏv{á‡ÿ¸>³_pêì.ƒÏ½^Éý­ÐÝ$³cçégŒv‹vZè*ºëåm—Ý(N,3éCQ"ŽÈÀ ¡™8£À"k­ C†0vâ±.£ÃÒƒÙYYŒ1âˆóFwÏóÄ‘ó‹I¬½$íŸ1k²¬éåµè¼Ó¯Z¼é…Û xâGõ>ã­o>Ö>Ü&_tÝ#N]úùûÎñ4ðµ/ªbTÕ(óÌ>:2ëÝW7‰_J‰MŠð8ŠŽ9fÓO?ˆ?GŒ#«»îÂ@w½ÔÚu×YN ¼ìÜ‘ÏX÷+yJi¶hãjе-›bDtäHe¯¢BÇ¡¦¦ÆÃݺe¶õ(o¤\áë £7 wg1ñD$tËŠâ7$ZëÙ§ykݼ0E|£×It}`öÐkÿ¾oF~jׯÖ*‡è>ýßg‰(*†¢(1:6ª¤öà³Cçû_œq=Çæ¤d¾»gý¯vÇÄÄÔT—­k:·ò©—/ºhâ¾ym‹¥/ºhâ±yse­Þ@`á#ˆo%¢Ç§Ó/F]2sª»¯ø\}´6›óº*éOñ¨zntÑU{îéš”²pÍ3×¾úœÞcÎé=†ˆŽ4}gë‡6Þº«¬äž‘7mt0[m¢Ñ»ê¹W¦Üv½CƒO]3ýðÊ+g?ô“úh[¿ºP]¢Óþ~Ï›¯Í¿"­ß•6«½ó|žW+šm¦©×ÌË‹!"ú÷óO¹ÓÌâS¿&«'{—Úð#Ùgö±q †ö"¢õ_î=ï‚̘D“ëYîiîÏ¿1rÌÏ¿w’aØ»~jíºËNŒ?ǹVCÅG¬ûåv–f`1˜ºË˜Ôèo¾¶~\7nˆ¹¾~ܸ!mCF}½¸'8Ýn7\½4ë’«Fµ6Ù‰cm+#®m^íÓ÷6-}ÀëÏ>ô¾ìžÞ’75¤ßgö™#¯š˜súâMoVÕÕ Aº§u{é’ƒiéŠüó•?>;ì­eïº ð·Å^¿|ÉÅžBtZû5µ•5ÿh¯¨gŒÁÒõiÇðô¬ËÙn¾þk— žLv’mq¾þmg Ý_}ûGÇÇRˆÈf_ÆÐî^qý‚]H\5kŠ¢gß? ™ÎÈèRYyÔ±^þÐá¶W ƒ¸]YYémœâ+¹555ÊÁÒÒÒ´ýh†”ñ·þcã[ŸºÉ3ã»>qæ]Òc!#&îØ´V”ÛwëõõCFL Î3½¥ó†Î|ä—Þqû¡Úó‡úŸŠÿ¢+Rؽpå¥ëa€ðAY•1ÆO¨=q•ååS*];ŸÂ8BX¼øß˜0Œqr_ökm9ØPÓ"~)…ˆþÜuôÊÙ}ñE*énIˆOˆ×<ÚÔä¤Àiª¤Î ~Æm²Ïqƒ¹fÅüSqÁ #¼²w1tËì¾¾}°¦º)-=þ–Ù}#b »Xwø;÷`42ŽãÜ?`5E³+¯oÿ˜{Û·w…Á`4¤æ¡»Ðé0 éié6«522Â'©ZÞŒÒÓ»‚Ð)*ýü!ä^î}ËóSNýóÏ?¬v;g0²ÐÁŒŒ¸]»vŒ;Öj±ÀÞ¥Þy• ÞPϨ7 g"£¢22»uö9[7o®©­ áGKŒFcZjÚ¸³ÏéÞ#§¥¹ºKã'LBõÔêõtNtLtÏ‚‚^}ú !žøÁfµvÑ%<߀ΠcÌb¶XÌTEÁó]ðp|¸  »t—ˆˆRÓÒSÓÒ7¬[ƒš» ön­Ô <ª»€îÐ]èàá.ð -ßß=x TÜè‘Ó3p9®««MïâÁSlõ±ª””T´.€«»”æå‰Ûe%û*½DTZZ&nô왇VÀØÑÞ &u mºKÔо-’”¤±Ý»ö 4Àɬ×êÆBÛØô™"š=ßeÄÚþ3šLMÍÍŽF“©¶®F“„ÆÑ)C‹ÿQbR’ôÓÎQäÎ]{lvÙì¶»öˆ¢Õ³ HC Ô06õô,(r<–ºKŒˆ±ÿˆ’$hšç¶$ÊKö‰ Ò ­ÜIöë×û÷ßÿJJNþý÷¿úõëÝ1DÒ !D³yfÆ/ðíÛ't¯±¡ˆ“’42A)-5ˆÊK÷÷,(*-Þ—Û³011Q<äØ`ðâÜÜtS¡™å¥ûóò cyù…e%ûsò ˆèøñãâÑ„„×H|KK4sÿý¯Üœ¬òié]Äýyù…ŽòŠqQYÉ~•Ò[^Vܳ ˆ1A›s­–ìËÉ-ð3ÿÊ‹‹ÝNÖÝI—ïËÍ+Ф]xDƒyfÆXœÜ9¹‚À3A¾{NNœ\q¤nlllll”µA“’“ß³›1&ž;ºddFÏÜ’ÜžLDróòËËö‹r+¢aZƒ ˆ0EQrJÊàÁýyÞ.ý'¼ ðŽŸ*•©¼¬8/¿àijp·ÿ4È?cä1¡¼ü‚ò²bÿÓÆ.A²w{æ•ïÍÉÍ%"ÇsyyYAQÆX»2WYJNIá8nûÖÍ‚ 4$))Ùf³z2àJròz íÚ"9¹=ËK÷çä65'¢øøMÒ:¡C ѼÝî1˜ jb m3ñqŒ˜øW<Ê'›oùÓjÓ`IÒD9â4I @t—ˆò z·K/(//,êCÎs¿r’–œ\Ô«OtLL||‚šÁ1V^ZBDÝsrÄ=‡pèJ\|<µ­¬fþ§å ¯gaIñÞœ¼<1™6e”¦Ày¡»=ó‹JKöåöÌ'bŒ8"btâDÖ®»Zå_`‰¸Oü'Š.#âÊJ‹{ºÌEû\W‚¡»DTPاxß9yyÊÊ ŠúŠÂŸÐ®—än6)9™ã8•ƒ»ø$²¬tÿ 3Ž±Üž…âVss3ÅÅÅi’–ÓÅþýåµKoYY™k˜ÂÂÞ^ÍäæõE°¼¬T6Eÿó/&$WmÏ¡ËËJdò§®èÀ`’èHw±ü¢>Åûþ,(êÈ575Q\|¼cCáñ§·kv;±bZ:G'¯¦ö?-©¬ž^oTVa† 77—ˆcDnÄÏÿü»Êjqñ^Æ+//WNk©@s´y÷He¥hÒö7ââââââ¤ÄYKK³ãQ Ò*,ì]VV¦UÔ½ÊËÊ1 ²¼1ƈ•—•©{Œ] /{W`Œ1¶û·ßÅŸû÷kii‘ˆ´SiTcŽ‹‹“ÈîÖ-@õ%Z½ZÅV ilªg&¨¼¬ÌO{@(uWœØM‘|—*66VÆÊÒÎb“ß Ú*VðõŠ Œ]öº+jj÷îÙÁÉ´ÔL„Š º Óén÷ì,Ïa²²4Ì7ä@8b@Œ]݈.€îÀ<<ßýà7QG»¨ $Ý?aêÑ@+0Ï ] {:¡âD@w àr ÅÐ]<ÂçÞq±xÄmîä?rGÝàÜüïò‹s¿Ëc@™nÊ”sþÁ)u@í–ÜnN>SnŽž|„sÛrî¶ä”úÍÉG!·º €J)9díA ô`]j{·¤x@SÍ/(”Ý´òÈî;Ð*´bàà!™Ýô#v&Ù| >" YÙ¶e“SnŠÛáßÞ°nMÇ+f‡,”·8úðùþ­ã•nõŸzÂÐíµ{ç×®±#…绵5ÕÊGjZºì€ÕFí ëÖt¼bvÈBù&º“§\DÚºšÖ bшè«UŸ‰·`.ˆ”h¸vÚ`ŠÝ ò€ÑE¡:†èvxœê ÂH}ÝIo ±îBtQ(ˆnX ðW«>ÓÃ@@I/Ö3  ¬sþ›_Mò§èâ"¼Ð™îšÛl‡¦µ«“Ê4´ñà¡úµ«…Aƒ‰ÇGœ†%HKïâzC$»3 ü{ã‘ÏÞgi<•Ø¥WN×K†çŽÌ‹ æ ¦&åµ3Nho™Sþï¥__¸‰#—FDù}FlX9qüÍkõœ-ìF£ñÞsÝ_xÿbìÁÏ×ÚÕ_L<ÿB¯NIJN7êë•wBz®4[Ï:­7DÑD$0jÙ´1«6Z c±Ä*öýÉæÞODâ8"Èìi†Aw±{.ø×Ƕè´'®9~P­þåà‚·N?wàß§(ϥ譌vžFDCo{yûs7 #Žº™!^;w¡ œ!i;©`k,ÞÌn4ˆ¨w<#®m®†#&ÞUr&“‘s£»¢\9ÔK?cÇq¢Ê&%';öÀêšãƒ^:Æǹ:ÿfœí] Ñ”•ØdnL°&‰W¹8Ž£o¿)=w˜ÌÒ*鸩GHŽ;?ø“‹ï²õ‰‹‰èh}kFrÌù§öHKˆ¾óÕþ6x¬ì)b¹”Ÿ‚„›ÄÞmÛÄKˆ(>NÉ‚yÛùâI9ÇÛ"¢LDtû‚/[[Z74o<ÞÚÒ²î½ûqc&“‘Yläâ™píêUÏŸâ.Z­dÔgõµ“G4¦(½SÖ®^éA¼ÃÀØÕŸî¶×I<Ú°fUå¦ñ#F%Oš"0FŒ9âäŒ]eƒÆ1ŽKµÊi —mr×ðN{\OôÊ]µ§ö?ßì)yöj"uß'ìõîÚ#†yvúé–ÆcêËè”CWN!ŸÊåU¨4WxžxžFÌ~yÓ²yžxå»ÿîÚKD›–ÝÈ8ŠRá)7™Êvt×úÒŸâ_åñ(T‚Ó½5l&"Zx×ùm®xk·ÉVD„‰kµ;µî«U&Oq½M_÷Õ*Çö„ÉS!ûÅÒŽ`N':²*{H–úº:Žk{¸ã4‰W_WçѨpäÒ ‚0+ãèœ:·»t7ϼãëŸw £ÁÔçlêsvtT¤©J0Õî1¿lÛo0ÌfõÊ{’öÈUî&Ý…Wì­¡öKYí 4®g×øë^ø±WN×;§ øxýFŸoRWΧC\ËëU‰l‚ÁÎØKo1ûå—Þððô±ÐXƈg1.&>Û‡¹#¯²${ÃáØétT6*o;‰Û{mÞAD÷>µšˆ¬fKKKKÓñ¦Ö–‹Ùòéë÷FD˜H°ª©Qb]J÷;dX6¤ëOåÊÒ+]•íé@ßö®™†œ{Faœ‘8bDöê}éED#¶iÓÞÓ†½òÑo׌÷b÷8Dêá¶è?ßìÙ¿â*"úù({flAiU“?³4¾ÝøMàxžµÛ¾ì‘×íÝï—\ÿó‚t"¢ O…霕×ñÖˆ#=4s’X#¢½+¾vED˜8ÞæO–”•Ro@zA  ¯ÕÎz|ÈȈÈ\ý×Þ×®êuÝÛÑ齈 ÄX§d쪟Uooù yêSOˆŽpld$¬Ü°—ˆN/LvÛÊçî¸DÃLça°ÝÎñí&ÏØ׎~€!މb<å‰òU÷厾»8pM 8À•pò|«`3™ŒDdÇ8âщEUÄQD„‰›ÜÃQæ9ò¶ŸÎ;'L¾@Ô¶ “/ðx¢tžÙ}ºm$§¤:­RŸõÖ×Õz#½¬ûêKH/Ðóvçµw‰ÈÈ‘ÀÛö¾vÕðËoÙòÚU§Ü½8"N¼¡1­ê}ˆPvNÛCrRר¢®ùÅ›ÎvÛÊË'Œ”Æ þ¿•‹n¾à»ßò<<9ÍúF¬ÌÀóDD_/š~ö]¯~½hú/‹OJîœÛÿóß' ¼’^õM \Ì UBÛ­7o5™Lï¾ôGŒÇ'>Xeâªf£ÉHþٻÖ}õ¥Dz•BªA*ºÒuU^:ˆîŠï8î×§Ï>ºU¬>ºÇ–'‡ ½g;ˆóæÙ®–bÚöì^ {ζxÕoÍùð¡«zv¿ûÂDôê7{“T¯Brgv«Ì­†"Äóœ ´m¯{bú/‹»N¾ÿGoŒŠwÃܯÏ?ëªZÏkÔ–eg¤®ÞSE’UÍ¥vÓ·{fW§³Î›tÁº¯¾WeN™TSprY‰-]ÓëT^¯*Á. †kkíd©r¾«2¶Z¬LYþ¥+¡ÔgI¹*dº>ð¡Ñ¢&ýñþãÛW<þíáÃDDewË’rÝ=oÒù¢,9~ºîq7ϼ~Íji…Ýr«¸DTW[#««­‘òè<çò<øØbßu—¢‰ˆã¨KF·-kþ'îì’Ñãˆ8&^ì²Ò+;D:ít £|–rx×m߬±óz'ž×;Qý݃WEðª j¢R@`Ü¿Ÿ˜ÀqÔ-52%!"cø9o=0C·‰èêûïšËßYþö…O”©O«Ò)—Ze[{¬a•rÅãß>|°mš™1ŽˆwèÐÁÑÿ÷&ewïq²ÓÉ*èÝñ§W'ºrG]mÊ^бÑPìô6ÏL ï]JDD’¯F”mYDD¯¼Õv“>¤OQô]1kÞ'λ.nûÿ“»r…æò7ž~ëâ§Ê;Im¸“Ué@Ý}æ…×ÛwüßuþDõÜc×£I:$[t;³Ó{Ÿ9wâù_¯…ô‚pB+±ó]wF·#yiž8a÷v|3Âë›ôNþzíW^ s4;ƒ†™óÓØtBéݽsÇÑÊ#¨ Fø)v~Í3;Ýþ¬¨tf«w÷Îá ô‰¶bgB…à'x¾ë'ã'L&¢ ë0ç :~é.&–•U …úNÚ°n _ C´;ßu³ÊÍ¥—ˆDõ%"0К‹æ™zT_0訄^w7¬[Ó*ºC³“´ÐÝÕòÒŒ Ã ´Ý »BÊ¿ïIJNA=@wà½GääŒ]Öa»LêÕé'ÝU…CVÉrQbª ÑvètžÙÉÒ`ï†Ò2v2‹è®Æ†/T4ön^ »¿×é÷£r@GÖ],¡„ŠSÏuþ þ¾µ3÷n^àô®ÿìA•!Ï»èQýTÅþ’2‹Õª&*2²0?/Ð9Ùþᨡ—m„î†Àƺ*@@ƒÀGœèa™#Žˆ"ãÒ›kþÜ´°Ïˆ{}‹– ý/Y&{èÏOgöùÛ Çv‡Ð÷/9-2kÖྒྷóoUyŠÙj50Ác˜ ˆîø›6oxéô°–^ø#쌽ý寫Íb±[möÛ¯—FDIÍÕ¿m|²ÿ¨»}‰V0Qâ]ýÔ”@Dó~wö•cj›X¶bó˜ñ {í z^­ô2Æq\Q¯^îŽïÛ»—˜ލ¯xòÇ œ`·'ÄÅuëš‘–8ª_µþoqDD6¿é#¦m‚îúkŠNö«ëó]©+}§´Ô]ÁÈótåä!Œˆ#"F¼@iƒfˆG®›ç[´6ÞDDNæÐá†d"zwá4"öíúäÀ»sƧ-ÙP3g|ÚòLÎW{"ÇqD!VˆãZèná˜Ó# \¤‰3 ”oÊJˆì‘ß%ê——zM½õsâ8Î\>qú'DÂçÏ;sú¶€öÞ~ë´ç¯GÇ…Rwyråü»oÖªxNÚ)þ”TÙ ±îÚцŸöÚí‚Õf7[ìÃ÷Öicì‚Ñ·hSÒr‰È '¼µÍ +½ÐþË/{W´«ø¤Ä”ØÜŒØÞ™ñ½ºÆ6?yÝÖM¯6‚hÎxZòáaÖ¬2BÆÇˆhï¾ýýÞ‡6>ú®X@øë®‰Ø÷ÛöKíÝ®)qCútë‘•VÔ¼oÑÆ&¤U~ÿTYå§D”\p}Áðëb# »@D…EcÎLÄ1¢êªR2_µ·¤zi•=©"9¦*#îXV|ï.±sƧ-ù÷¯4é”%kÖ}sÃu^FÉ GDû‹KDåyÞnçyžþ”!ƒ 礩IÉÉ¿ïÙÝoÀ@ÆØž; {÷1v»Ýƒš"J5‡ˆRÜSüý-iy£R³ œÅFõ¦LŽ‘ÅÎù_„^ÙqmÂH4`ĵ{6½AD÷'"Ú³a‘w²K$Ú»£–I‘ã\g“’“‹zõ‰Ž‰‰OP#ºDdá DdâH´2E…ßã2oàìD&ÞÝØì¼ Ü¡µŠ.ÍáKÍ»–6óÌV ¿jö\"ÿ@°wy6¨@º³KbĪôô]»v 4hþCäååíÞ½»[·n*ã¬;¼µ¡Ú\s¤øhù|"2EÆ7T›Ëv|’ž=Èh V+÷Ñk‰¦žŸKƒÍ¶ÈH"#wÂ2ýcÓKFå'Ç‘Ùéµ½Ëq‡<±ÇarDÌízæ¤ädŽãTŠ.YíF"2r$]5-&bàƒÐLœQ`‘52j«¸äfõ²c‘³Ïk›µÑݳÿŒ«Сì]Þ$0úaËÒ•Ì7ÿ}̬™w̽{NqqqzzzEE…Õj5óµº[úÎe×ßÉ¥ž¹çºìüÁ1 ]†éºöýÇ †q­Vºæ¦¶Õ³o®ôkéìqKL¢8¾ˆ#Î@c ’6W´ŽÈŽ!¢&sŒWFEEÕ7¸ÍUV”[Ž#Æ¢££ÝH¶7ævÝu"ÂÀÈÎùŒu¿’§”f ªŽa¯.­û`nÊ勉Æõ~ð[{uiPŸï:ø}ùED„õÌ€/p¼ÀFë#}W•-_ñ Ïó±±±%%%999555ËW<£òù.o¸”Ä7mßøyéoÿ=÷òûˆ8Þ.ˆã82[8jÿn†Ù¿O?7Ç‘Ñ 1‰È@£²cþ¬lí“Óè¥îöéuâ9÷Ÿ{÷›Ífq;:*JzÈ,|»î¶Ë:qoäZ ±î—ÛYšÄ`¡"åòÅ“×k«W£õÌ6aÔƒc=3 Ã 0ÆÏ_’îÉÊê>pà’’’ÜÜ\£Ñ¸ô™ËW<Ó£GââbµZnˆ •å»wíÚGDGü™Ñ%†· ÄÇ‘ÙNDôñSWqï¯ÞìŸîF‹ê%~è’èĤmÿ¬bÔd‰ñ6NQn1Ž8&.v"®Õܺc×"ŠŽŽÖD€-6Gd3ÌGÌ 4ª¿ XÖÅKæX„#‹-Nle¿›âuUŽõÌÅ•¿a=3 qÙ¥ÓÅŒê IDATd÷çççïß¿¿¨¨ˆˆcÈÏWûÍ'ž§ã‡7f¤Åÿsú4"ÊH‹°4Uñ<}¶aϱºæî)Ï,þX“Ì›m‘?|µþ¥ ÞÆ©­]ë6[Q1ß>ÓÆ˜ˆCÇ Ì®Œ‹‰%CB•½ßŸßù­ô§†f›¶F£Gt÷Ý Çzæ}2qñB¬gtx¤SÊóðÎ1QÖÀk×¼»Äñó×ï>%¢œS¯ësj7m3yãc´z¯¸þ„ûE ‘Eª(pöýB‘ý~7ÃfÅzfðd2ŽžÕgô,ÔC¡»ïf8÷Ä4€†¾¾›¡¡S@‡è÷»@C¯®P³@Ѐî@8ѷ߀†ú:ÔtÐ]@Oèe]Õ†ukÐÇø “ »'¸|Ú5èÔP[sâQåeeÛÙ~¬ªJ6¤ÑhLMKzêÐܼ<Ø»€_T©øùçãϘ“›k4™ 0Æ1»ÍÎcLàí|iiéOŒˆŠÌê–¥‡<ãù.€peÝW_1²g~>Çq¼Ýn·Ûm6›Íj5›[[[[ZZZÌæÖŒŒ®={ö\÷ÕW:É3t@¸b³Ûû è1X¿þlv;tð ÆXdd¤Ç`F£‘1æ´3¿ pÛ–M©iéÈXjZú¶-›ò ;…îfggûÞu§·ÑvàÝ"Â;ï¼+‚W©¹è*ÕѺ*Çèøðáììlñ¯4ÀáÇÅ`â†ã,éOoSôùÜ@§%-»»•«ÂÏšqJ×u?eqUzט}8K6€ogyl5i9Î’½³QSdÿwÐÙDwÆÌ™o¾ùæ÷?üðôS‹=†MÞaÃG¤¦¥K×Hû/ºîŒ]¿twÖU6Ug'v}æ‚û5É«t°sŒ®BâPeÿ…3˜c“ú´´Õ<=ÜNÉ6¢ÇÙÙ{• À‡³ÔÜÄxLË5Û =V6E?wbMto›1cãÆ³fÍ\µêË;ï¼kñâ'9uÒKDÆÐ$blîD×wݽåÓåv‰<¯Oÿ•U·|úЋ{8´Ö¡²õ¬~Pó6Z5–‡“/µŠÜ•ÑÉr’5ڤѺ–HZ459T¹Çºõ¡á4ikb‚2¹ö1ÜÐ!™1cÆ®]»¾ýæ›ä䤷͸ôÒKï¾ûžÅO.Rcõ:ôÒ×/ÝÝy¸¸kbîw%ű;—¹r ÆtP9ð©Ñ`×h}så¼¹Æà(©&êâó ‡¬Bߨò8•êÛ,fhèL˜0áÑGMJJbLHIIþðÃ~üñG õR+|ÔÝ^iÙGkšz¥&ÿQ]×+-€«r|4tjmÇÖ¬ùÀ²÷(äæ©¹ŸÓVs–·SÛ–õ¡&]çH0 ƒÎÆÔ©SAp¬¨JNNžXÒêÏò8©®áY(”& Z :'ÙÝ2i4•CnݼI'yÖfž9hˬ¦+ømy„׊9RªîÑK—=†Úì´–D‚­»Á\Ï hˆ†®>xçÍñ&\wÃk=3àDàXi¬»Z­gÖ<ÿ¨ù$ÈyÓºý rX4=@Ï|ðΛAKK/ë™I÷~çtOϪ œ85«šïTk[ ˆ+@Šò̰¶hã÷þõ+2.þ›Ò#Æäׯ\è[$ÒOéJ7H=h2zvª‘WW…•6+jЩðËÞ]m×3ëРÏN÷<šn †¾Â7”Ý»›>•_ÖE’šØÈW'ƒÁ±§µu ¡×ÝZK!ñèC$î¾D¨æ¹wœîqV¥ußPôª\z´P5=tÝÕ•@nÔ[óApÆîΔW#Tš< Ü 1 €îj6Œêd-Œ²Ó=o­+¶»z#,†šVN¡Žèn8*?€jœî©ŒÄõãÀêg†C(fî2@%†NXf?ýú¯:¾9)Ò¶ŒÕ‡ÌËÞ”øP!» œ H3{7,üz«ýÜ)/]&7.ÞdÒÖ œrlŽÌkèdP¶*ȧeÛ!iz3ÝÕ¿@•É)p—ùWLß:…ÜúV­œ jXÆ5=h‚U„Rwó ·mÙ¤¡s)©iéÛ¶lÊ/(DÕ{e±è˜”5R[ÿ Òr  <:o®Óž[¬™½ë0yµUJ1*»`ï*Iï°á#4IIŒ-¢ëç[(ʧÚO}òÌ ¯9¶ïø¿ë´×]‡FŠzé?7 ~}ÖÅà*dô‰c†Ù¡µRÖXwUê¥VHßΔ}ÁCúΨ·ß«òGtƒ Š]ü1vI·ß‰ @5ŸªÐ0QRç&ÏÉ-»Oˆ N3Ì>¯¨Òµîz´}öèzH+7pjbö˜œnì„ΠúH¼õ;¤‰FBh@oø9±fº«C?€>ß7;üœU?ÝU¶D­Äþ«&ìWa¯»AÚ@¼¡«•ÓxÐ]Í/@~•MRMÜÀyôßç›<Ð]- ´@e/xêÝóyå¼¼têç±h »@ËtɸÐy€ß{º @wÃ?W+Ÿ.U“D0*cQ4@w}©¼I‘Õ•’£ÉÛAéö@g×]ÑÇŸc[ºÓáþN~ç5h~ÑQhüjf;º{;H!9©Ëa:Ù! šSœœ2Éž…µÓÝÕÀ2Ö›@…SãÐcæö(Ç¹è®ÆF¤Gaöá;)UéPû ­Î‚út×w9 S3ÎÉ€v2Ö=ÚîþXá »Ú(Y¸øtšþ•ÞL8Í!+”E6Ðݰ' ~Cxƒ@s6?ù¥Z4qRøén¸û”uù'¡Âbfw™—Í•Ê jà½çæö¤¤3ÏóÝ pÔÝp÷¨2r?óïn§Ê¤h»+æLþç㵇¶~³ÆÛs1Ï 8sÅ“ß8N`ÌÀqFg2£"Œç É™8<ïËgo¾þÖ;7Û‹ÛEÉ©ão™Ý c`¡€(sz„³ ,ÊÈŘ ñ‘†áÙ±#zĽþ¯Ë¯Ÿuµ±lÛ÷¿W—¬K9ûqØ»€¿ìÿa³hïF˜ 9]O’3,#ù?ó¦Þ0g¾µ±ÌRýû±½Ûþùð§Ÿþ°º øË¬nOܰ•ˆ8¢ÔêI+æŒ?ÿúkEÑ}÷£Ÿf?óµ ýì¯Í…î~a8"J¤Žb ÌÀqÌn++?ZF´gõúÙÏý̳òT[¹7ö.à'VÞ »3rT0þ–™½l»WÂÝþüÏ‚ ˜je†ºÚ#ÞÆ Ýœ1Û DdâÈÎ8ž1"Z±wPñ†‰H˜™' ¸ö`Ð]@Ý5rDDŽ—ˆxA° dç FI0è.à‰îÚ‰ˆˆ#ÆÈ pd<9tÐÈÞeDŒˆ#NTÞv1nf„îþ"®«2ŠRÛ&º²Á8è.à/vûà‘sT„îºNñ¨dÖ=ï(f*Hwaì€îÐ]@wè. »rdgg?­ fÌÊI„K‰BØL ±…ªÕôÜß‚P'Ág¤…R. køN^ÐÝÎNH¤Zöt)ÁσÿCCX ":¿B›¥Ðî/•W–o÷ èÌÀ‰Îõ½*­>á[<þ'-!8y¦"nçu¬°n&Òú#-þ´šV©‡Q»+׆kåx à­â:Åà±Pû¤^žT&¿ pÛ–Mƨ­©Ö<òÔ´ôm[6åvvÝuw͈½SìýŽýŽŽ¿²Ø5…bü®©HO‘¦ëÛuëøé4.HSW“×b:Îu—g§Âê§®B•´»x‚ÓjÊýÜ]r©Ýµ0ÙºRcïªl,wadQeŸw /Û@jZº¶Ò›š–{× ¡r”{§l<{³k*Êwܾ]®‘x•×qÇc N ¡Ÿº m3y”¥ÀµšÇ~®œ\¸·»ž‡õ½Å7Ý©í\Ó…è:™¼J¯(ºîŒ]‚_„LËè¡»k;éÝ!ëJ«¤C8áˆx:Ï5’B­à]'é%¢aÃGh¡›;Ñ%øEÐÄVÖäpšÊöø§ÂfÒvmp*ŸFí®Ó3˜íÕkÒ#޵Ç_~þéÀAƒ#"#F£ò)[7oº`êߤº“ïÐÁU_|†ç»­Öa©¼ºj5ÿ“ »v—µê:g¿Å5«g:‹îjµô&\^¿ñ?-¯>¸£·ü‡°™ü_Jä—|”gh;[»9çË0WÏ`]Ý »øÔ$ øô'6ø IœñÖ ÿuâ¿Ó3ˆ"t·óJµìéðر“Ög–àÐOuôáæ/„wŸã ?€Á‹~ƒYW?€š¦?€êÉ?€¨m?cÃ-èn@îáP6®Å„@ø$øTÜ©|yªi,?k›½þ);TÈÁ™ t7@·Àð¨0îÀ üüj4ìÈfØÿÚVNEM­*d εÏwC0£?€aQWðØÉ¯=Jç/dCtaïzgÿih+kÒ}áPóº‚À`* üúVÿš_e-$ºÛ¡LdøÔ¶®BØL!éðØÙLˆ ל jæ™Ãà~~µ~=æ~;¡ºhÛì]™gøt—+øÔ¶™à~•{‚†µím*ê;œ jüj&Ð1']ø„À°kw=˜Œaw•…isÀ ƒ‰#øìl­ærðüÌë*·¸ðüj&Ð1'-øÔäDø ¯vrÎõp•é¹>;*XW@wèn~5I~ý‰ ~CR'Ág‚ï@w!ÕZÆ?€áÕÜ&Kðè§:†Ü`'¿Ò!ð¼xà0˜uEð¨iêð¨^ŸôæP­:¯îº»fàP6®Å„@ø$øTÜ©|yÚ Sºó¥æJ'8þƒîç~Æø„@‚@†àøô!püð|7,ðu?€üÑC¡qŠþ[ön‡µq5´•5¹ áPóº‚À`* üúVÿzöˆVÐÝn"à¶uÂf I„ÀÎfBºàø/p`ž9 náPÛháÐcà°ƒ‰ œÂÞÕ…‘ ?€îr?€Ú6ü rOа¶ýl\…j?€Ú‡ t ÁI~á0ìÚ]feðõ?€ &—à°³µšÿÉÁ`ð3ÚÜâJð¨}˜@Çœ´àP“á0¼Ú=È9×›@(npÀº*º @w;Áq.¤§"Á¬M¼ž^f@wÏâgœþû,ó2@buû¡°Î? Ã?€þÆãƒ62©þ5ߑתPþx=Ó!XZ€îÜòÙ ìKôÊb£88šäTRw…Rp§òÎÀã·8”¿^¢ì Í5cîòéÚˆî2'hèn0 _Ÿý:ÔK½û6n‚lôK%YÁaœWv­ú2Èž¥àL{8×ïÈ{lP‚4t7„Dçò ù@ïOf‚S™*Ï ‰þAtÐÝJŽ&ñèÐBrZu¬Þ’ÓÄço¢0‡ïƒ{8…n«L »ú5 u%½þÓ¡*…Gd>»T¹*  мGXƒ’¼ô*.¶W¸H‘Ê|BY°wƒa†ºZrÞú”ÐUheßÊÆ©‰Ï2oCúSc*ÅÌ7/ujn\Tº‡sçhOeyºëµÝ£æƒõ C¿»xdÏuðT~5Öãû¯¾}?ÝãºeåBy¬1Ù7w&{=¶‚»Ÿ ÁdoM”Ë«òÿ=ì]µ\'ñ†îÏ:³#08A@w5#~õ¹ZÊÏÓºÒJç’Ŭ« »t·?€¨­üúŸ[,B@w;¸TÃ`”O'j Qøüúü†Ä`H¾†…Wè®6¶ üÊ*$~])7Â=„²?A5a<¶5\ »¾XKð([( ®@§ —Þ©xeÖ»KÝ55ad«.Ð]m€@ +$´:¤ÕÛaQXt7 lÜàÄ?€*ÍSWËRýCnõÒ¨þ;Ûp€î†« ?€ÞƸǥjn2à"PðQ` J‚À ÆÙ_aÀÞíf¨«Õ?€Ææ›@ÙåT M \ó²ùQžÁö¶bº+?žÂ ·… ¾@…’*äV¹æ•w*‡!¸@wu¥å?€hk€îú&BðHáà0$ÕÅhÖUÐ]ºÛ€À@TNýú•úÓ±†ÝÕ…Á`ôIçšçUö ßtràÐßxà°óøÔ,Ѻ +~å .~ÝEå.~Ù,y<Ý5¤»¢Pj8ÀàI?áÂÍ BT²gÉfIÍé†TþÄœ ÝZSÈü¢û »ÄÆ N<ðèÑ0ugpkîP!EúÿöîG{wB`§ÆLó‡sLzzÃ穬ýnfÚPo?A`„£%“Ø0“H 7-ÐÆFu¼Ä,yÐð.âc€ºÛùþŒÀ •­@Ã!f9}av²aÀ_ËÓCsÎ:a„IUuךZ.ävͱKyIÈ @ÝMrãØ¨ìæ¶1HÊKÈ æU@Ý€ºkrãØ9Öä2 u7íÕˆ@Ê¡f%cÚɲ‹À°ã˜ÝÀNUÜöÎÔ]{ºXr}7Êú@ßï†hR5Ç´å2ûên×6¾äún”X¨_CMbD$‘Ì>€º‹ŽÕ9Í:ë‘ Y˳u îv¸ÇMfr[ö¸ÍzÁNåš_ˆp‰ü&¨»ˆ¬q!0è˜Í4Yt„K$³è6|Ž(Þ†RÈìܘm_ž•9€ãº.r#-ý9€š5[ºw%}çCy©þ@'PãPw;ÜŸ‘t£¬Ï4\z1‚aždR@Ý…®["ìdÔÝvŠ9€Ò59€=|T\ ›1¯ ê.Ô] ÇÎéH Pw»±T“ægÓ8q#0ì8ä†É´æþÏ@Ý PÿÈôݨ¸s›í=“Å‘£€º›áÆ—@ß’˜s›í=“Å‘£€ºkr#Ü!|@ººî’èí§;žtq!_ Ô]ûhrcíYÉѺٖCØrè€Ùk?pu×âÆ:hé ÿ‚Œ^<º8þp  ÁÝwŽ(W9J)×u”(W•*ŽRÊq/=£DFGwÐïv¾ õ¶VäF8šù뽃·½™ºÐÙbÕq•뺎«\WËU×UõÏL¼¼?=kK ´|RÈl2Zø@ý; Ã-"G@†p9T-r;±÷ÈÑ@ÝM;rãØ¨09€Ü© @wâþÌPw îZ€À8v9€@ÝM¨‘æg“yéA`ØqÈìT`=fZ îf©‹%Ðw£:’¨ÿRÈ@ݵ ñ%Ðw£¤C9€¾2Pw³‹ÀwHJªEu7=n2ãhòú†;`{oˆM& ê.L›-rÍ÷þ\s·g}Q§H'>GoC)f9á_ÐÙmìÈ¢©¬èw3Ö†z;9r#ÍüõúÉÌd îf²%0èF%–ØrAd î‚ÀTì=2PwÓˆÀ86ªS9€t´|­_·¶þË…#˨»ÄåîŸt]U,W]W9®r]7…+É|f¨»±!0ŽC €4X¿níwžùÖ÷6>óÜ­ßòì¤s%¹ÎlTTÌ‚¢³ö@' yá+ͳŒ"Ü4+Ï)‘‰ëÌ䆇À09€YAÑ@Ý v6üV%°a£Èl9~Ë@@ß·-G6Y–þ(“3¤ó™3Óø’è»Qs`ËñƒšŒl¸¬f;„œA ͸Μ=äF¸C¢úÌtzegÀäÆ;9€æ¯÷Žorgìð;!в˜‰ €º›öšÀ0ãÇt-·½e‘3 <î›oC)ä&8~´?Ee@¿qêí~ÈŒp´@¯÷ß$P¿ç}ÊdY&+ Ô]] 0èFÅØFüŸáΉddrPwSWË…@Ž2PwÛ+BäJ‚9€69`ŽyUPw îZ€À8v9€@ÝM¨ÅñIÓ©ïÓ×äS¿šWj~³i0© ½£¸¤¨ “IDATIÒ­áoü¸Û£@wïÊÖ¡úÝÎHùw½É­šLæE’ßׯ"âØ«m,Èp½ã´÷y™wц‡uIôm¾×T ¯ˆjªK¿â“©"íåFµn¾Ko8F¾_ú®œ®ÅuæX g{ÉK o§KòûRøI\>¹ ÛûÝ@WüBê ïÓO]Ï…MÍ‚ &|Ð÷»ú'M"½‡Iÿ¾Ä7Š±ÙškŽ~Ëñî4ßÉ̾ã0™@÷æJ“l>Ãð>ý€bX§_¨þõ†Ãš¯|ËŸ 4AÌðÉÈ÷jTَ; ºtÀº ]H[ yY¨»‘ ó[8 Ÿ±‰vqáÓãcÚüŽÜ?‹ IÌ«€º u7‹2ýù >|–IÑßw51cÏ‹ñ ‡Í—轩oø˜”üÉ›3°ÛÑ7ß:úæ[ÔÝvwŸ'åÆ[njŸÎº’žU¢è°Þê?§Æ¸®RJ‰ªVªµ¯kOŸ=sæé§Ÿ¢îÆØ¨µÌWo¸‚oÞŸI`Ë=ýí/Äìv &÷Ð&wÖ¬ ØÁu]×u•{‘Rn©Tª’~7‚6Nžj˜gØ,êÓ5Þo™¬›fs4ñs¾#ká?*PwŰIí`½7|2ÂNÏ ûënTS¨Úèž›KÜF6óœ Á† æÏŸ?a„ڗ§NÚ¶mےŋӶž™üQý«¸‘L§tsŽŽÇÿ7Ø´iÓwÞyòäI9yòÔŠŸØºõù®§åŸß5¬d©^Q½iðŽC7   ­Y³fÖ¬Y¿½páCŸÿüÈâÅ3fÌx䑇S¸ži¹ÎÜl¶­o’šïläú—™çÁi*±¾žé§› ;öØp2³˜EìI"9¾º>2Ÿÿ§5kî»ÿþ'žxrÕªU_|ìQQ)›Ìœ¢ºë{§~“yLæasA“õB&ñfÉI[3³"Y°¯ô®yòÉysç._~—ˆ¸é+ºB`;ûÈK )xÏçW­º§öùÝt®!u·Í޼íò_E¤Öè6¹\®\. ýËÇÉåriygÀadToOÏ+ûö¶|Ù+û÷õö¤¥Ï¤î²jdéÒ;·xíµjµêû¥ÔÛo¿óÆoŒ,]š’u¶ÿ:3·Ed_µÜji’v 冦 Í;ûŽm7npÇû‚B¡0q``î¼ùCS†¨»ã¼wâxL#ïݳ;¾Á-ÓûjïžÝcg g 9Ó†‡§ gh…¹Î u¥èﻇܲus¥\iùÊWË×räÀ&×÷ýLÿ‚\.×ÓÛsûm‹²uU9½u÷Ø›Çvîܾ`Á™³f÷õõù¾F)%"|áoï¾s„slòʦ/­~ðsš”Ëå½{vïØ±­·¿/=“¤2\w0úÒâ%wüÊÕW‹ˆïœ´qØUg‹UNS°Ãå—õÔš+ÍM¦ …ÂMùè'|ðûßñ®åË©»a?þîÐÔ©†·õr”r\Å™ vp”jYwk†®ºêøñw3½±i©»Žã güŸ•R{v½3l6vz{ŸóõU Z­ìÞõ£I“¯œ1söÙ3§mÚØTÕÝÆYÊÓ†§zãõr¹Üßß?î•Ìg†½Ž,«ÞÞ€µýîÅùÌ—~·¿wâÄÀÀàŒY7>}ʲMKÝ- Õª£<¿\¦ Oïëï/×]yæ3€eýnm>sÝ爧 M=}êdÃ+]¥®€RwÛ488éÈ០x¿U¼pÁóΈ¿ï€Mý®Ï}3¼¿üEäĉƒƒ“¨»ø[ç¼°uë´iÃ3fÎ(Z¬•™xy?g*XRwEDäì™3ºžØ©îÛ»ïСƒ n»º¡)CsçÍß²uó¾ýû>­ë5:ºƒÓlr}Ÿ<ýôSšŒåe:AR5¯jÚðð½÷þ!'ÀbäÞÐMýîæMÏrÔÝ$,YÂ1t®3@Ý€º ,©»' 2Í àÿ@ÝMÈ{'ŽsHþ¯Ô]@Ý€º ¨»Pw îÚáåuó8Æ€ôè±xÛ^^7oÑg^Úü/sn^±=ühnøIíÁŸ/»aõW>V{üðVÿ˜Ò °¼î^ñk× ]Ñ—ÏýRoNDνz@D^øê-ËîûŽˆ¨óÿþ¿KN6|é–÷þ°í¥Ëå#žÚãO-ÿ­/÷âóWN–/ÿÏ¥ÇÿŸ?ùÓ;nà¬X[wßyíõã?}=ŸÏ÷äó"rÝÐDYpï×>>[DV~úáoÿëjQ2rÿî0K)–bÕɉR’“/'JDrJTNDI.—SJÉ×7¼È)°¹îþÕ‚s–<®ÞÿòÏ> r£ˆ,¾o÷†/Þ¨Î,^¨.ûìþK¹Pªþ¢èš¼ŒS `sÝuœ¼#¢¤öÇ\qÜK3´—}vÿW¿pýÇÿâÕðK9_vΔœW¶ïªV«åJ¥X¬‹¥b±xþB¹X,•J¥R¹úÇù™óe‡S `sÝ­º=Žû~Õ©ºã¶(’¢+"¥RåtÑ™zó,ÍkNR©Â)°¹î–‚#"Jj—š+ÕBK)Vœ3Eçìþýš~÷®û>U¬Ðאַ»§§ªêËp\[t®äæ®»¾Wr½J~9w±Ò?0oBýk>}Ë2!a `s¿[íqÔ¸/cZÐ…jm^•jüF.7îK¥8«6÷»õu·O¿[®8"òÄòÂæ‘‹~¯öàR­Íå.þ €Åu÷\©ÿò¸/ãéªÿÞøÜ×¾öwô7ß‘±Ï?¶’sÐEu×Qùkÿ¡î‰X’¾ùg EäžÇžæÁÛë\lvþÀÖº»|ùï&¶¬Zõ­À*@ äï@Ý€º ¨»PwÀx)šÏüío<Åñø¿Pw²hd Çàÿ`7®3@Ý€º ¨»PwÀxç3=r˜}@u÷”@þ}6‹h )ŠLIEND®B`‚libjibx-java-1.1.6a/docs/eclipse/images/install1.png0000644000175000017500000002525211017733664022176 0ustar moellermoeller‰PNG  IHDRÉPÔV…úbKGDÿÿÿ ½§“ pHYs::—9ÛÂtIMEØ! ŽWtEXtCommentCreated with The GIMPïd%n IDATxÚíÝy”åÝöñ«g†ÝE”AtÀɰƒŠ¨1‚1&ÑŒ¢b^1.¯$Fó‚‘÷h".(‘'* 1 D\uDeQTvAYfëzÿ˜é¶¦¦Öîêžîžïçœaèªê»îª®¾¯ùUWwGyu!POa‘؆d”À©’d'à’¤$êZðÖû’¤Ágô¯óht!™m§[_ûÛéƒôãÑ a_½þöšsß/$IÃoûgÿ§{Ûõ?Ö?Û[Æk¸T’ÙÓÙ…‹~À­†ßöOu:_*÷U:§þ¿íŸ’ä¹mæû»M€œª$­ƒelÀœsß/4ü¶êÌÓúJ’Þ|gI½ûÄæÙÍw›gž›g·ü™§õuü2ë s_ÅÚ†k¬÷=ó´¾Z¸èƒzÛÖ~5{ó%uÂÌ,ö8{n¡;N¸h €J2{Š3Ní£·/µT;†ÞZ¼Ô± ‰ÝÇ:ßmž]c·¼õô¤u OdgœÚ'´}åµìÂÅkÛÂØ¯^Û›o}¬­ócý² JëãÆkñ|…dEeuÖvÞnд†–]•á4ßmžÝÀë¶ï¬Ì:OîÛ³N[ï-ù°Þú¬Ë8í«“ûöÔ{K>tíóraíW·þ›g»þyÃæuŸÜ·§²ù˜æÌÖSNvK¿>=ôÁÒµtí_¯öÜö[ØôëÓÃs§õ|°ô#ÇŠ,Ö®Û¾rÚÎ ýñÚ×^ûÕkûõéQ§*ôÚ¯~ŽáXŸ9Å PHYüš¤¹BèÛ»{½ShnwÄæ9½ö%Éó”œ×ü¾½»K’–,ûØö~}{w¯3Ï©¿æõôíÝݶ¯vÛo,Öuºõ'è¶ûÙ¯~¶Ñ)*z?Çpì~±Çr:$̓rlìӫسêèÓ«XK——Ö{0‘Á7Ñù±éK——ú꯵ëvúéKì>vË9õ'‘móÚ¯~¶qéòÒz©[ß¼¶Ýë8'y†Qsi6üXõîY\gPöäcËx~4Ön¬mÕ¼íû½ty©ç}Íý c_ÅÖi·M~ûãµoüîW¯m´ë›W_Ìý·[·õ8ɦãž~øi¸ŸÈ]³>ÍšRrùGŸÔ{õø‰ít§Óz±û˜—÷3Ïm¾Û­±þYûtÉî+¯jÏiºÛ­aïW¿ý÷ó>Iëúܦ€›ÈϬȪó­}¼B’Ô£{7×é±ÛfæûXç»Ís›ß£{·:ëvê_²ëLf_9µëÔ»í±†g*ö«Ÿþ»=¾NëóšŽ!ù‡¿Âå~ðôqé§uB²{ñIì9oAB8n4ŠJrÂÓ¥ wØW’d$¶!¹âÓÏ٠؈lß¶•R»J2ÌÆ>\½YÏ¿¹Jë·ìl° ÊÏËSaûƒõó3WÏã:ð>$W}³]O¼RªÞ=ºëÔSU^^¤A6(5´uÛ6=ñÊÇú?Íšèø£Úñ(Ù¶õÛPN·þññ·tôq'êÐvm3bömÿN_®þ\w_y2 !ya5´áÛjÓºµ ÃȈŸ6­[k÷;y„ í- ÕQCŠD͔ˀ"UG ¾Ð𕤤”T„£vHø¾dNHF ÛŸ+Î* 4ÝüãÖ®Ÿû¨P?qÇ-—œæùɲdòŽŠpHJÒa‡wз[6Ç'zÝN$œæÅ¦rDéÓço¨³Ì˜!Ghúü u–3/@Ê*IkˆyÝ3$¯ÚIÎ[_gºyš9HÍËÙÝJj%¹eó&Þ¡Ðõ·n§E¯ÚÉõ>v÷µÎûëkë­€¤C2,•UŽózù«zÓnøYçø}®=§“c{Öß~× @R!i>i=õêt*Ö‰ÛbNóbÓ§¾ô•ç}íÚðê§[‰Š¿dó¦êPØQ›7m´½íGÔ0lœæÅ¦ÛÍ¿ñ‚Ξ˸­3J8¬$í*¯ •X¢îL™ó¥Æ?ºÎô)s¾¬wß›†uq\†JzHšolÚX÷-ÖÛÞ•¤ýôûgé9=™eHyH&Ë©j»å¢c\ï7ùÅ/’®T=$à §¶&½°&é¶mƒ`dD%É{T’YTµQI2¢’$¹$²è­…¡$Û¦-ÛØ›+<üPv2·’<±k·PÚ´e¡FŽÉà[II‰Âƒ€”„dºW8~ÜÛéSœÎ£hœ!9~ÜõêÙM£.¿XFaõèÐVmþN=:´ÕÇË^Óߟšªå® , AMš4Ñ̎ȶ?nŒF]~±º÷>'Œ‘{çÇç·Ÿ#£°~Òm©ÆCP@‚¡¸{ת¬¬dç„$/]¤5 ¯?÷t鸾ºþÜÓ¹w¾zth+£°zõìæxJ6l‘H„#@Väî]?hÇwÛã?d–U’½zvÓe£nŒäG›¿“$M[[.8DÓ^ø^’âó5ô2Iw 6ë[MüN€\ª©³¼’ŒU„æ€ìÑ¡­$éú.ͤ¾¯ù-Åç¯ùê›:÷ØWdT’݆^V' ?ÚüŒÛ‡Ä_“œ¶Z2nÈc;¥5’ôá Ûö èS%Æþo7Í\UZÛ°«Pí– 2Ý<-èúÀo@Ž ’mÚ¶“$=7k¦Ÿs^R+ˆã‡.ÐÂØÄ^Š£¹‚<¶óQñß~NÅ:šõº¯[váíµ> ³¤’ÜñÝöPV È›îxWë—þJúÌÒ_î¹@ºá¥š‹x&_ö9MŽ%޼þ˜±!–Új¡Tg]¡õ %é«òÖ×¥Ï$u•.™tK<(ýT’֪έ"lH\E €ê1;¥ü- ±«Y;õ™¥õ ŸT§>³êL×gÒߺþ­&(%_•¤õõ?§à4/oýI§†^? +É)N×ߟšª³nx©æ«¾’梳nxéÇ ì*]óÙ5RWI/Kk¾úFåkÞöõvaè§jkè×yMU$!)IZþá 5;ö›x0š/ÎyN“uɤ[j|YzîôšS­O?÷ˆ.^çuu©Ó2~îÆú€€ æã©ÇÖ¹ÝýÆ5 ·õéüóT¾áÇ3˜Ue•ªÜU©Cúœ˜úœòàôš÷<^2¶N@šƒÒ|ûéûnO¨Št›îgÙ í9mж —,+9M½G¾“’¶Oö€Vν9~=@‘NÃTñýrU®]¬eSM((—¾ÜWƒº¨hÏ“•_t±Œ}ÛTùÃ2Ul_¯¼ëÓóÙ­± ,ïÙM݆^V/(c§XŸ~îÏ€ z é ÈÁW¿¯ö%(OøõÛ’¤|cµª÷|_'(«ª#Ú½é5Í{Y{ׯQYéFUU'v‰MÓÝÕ5ÿ©Þg;?mß ¿Ø'éÄ®^}×4ßÏ)VB@®ÊÔS­g\÷´”W #’/å7•òšêˆ¼êwJÚ¿«Œ7ûKµõKeeµÞ›u²NþÕ{I¯wå3$ ¨WIVWæ«Å1Ô¤}OåµzOÍ›.QõÜ ­ãûuùÚÜb“ZŸÒ\M÷/Rõ÷[´oÓJíýf§ò?Ù•þï“ä> {R’¢úëÒá'ªi~žš7‰¨e“|Ü2_m¡3Š4üºÙ5ELÙ×:÷ŠIiÎÃ}tæo–&¼Î|cu< %ÅR’*ÊcÑ‘”o™ÜA=NTÓv}”ß¼§òÙ&EP~³õÊkµ>ý! È.y›ß×s.•"R^ùÍ~¬$‡.Ó³SŠ%I¿sŸž›~›dHçüöã„×w°êUf±è2â!YY™hœ¹Ÿ$$€*ÒÕÍ'•¨ÿø?âå³çoUןOŠß>ê¦zÿžÃd”}­ýûª4üæO“Zßʹ7;dM æ›Â-_RD•ù‰U¬y–ŒD I@píšÚÿ_’οë[=1¡zœ<2”u9¤$UV¨rÛåµÚ©}ë>S«èUT&g?×TRiíOLSIG’@鮢öÊÑ?Ó©½ÚuZG,ð¼Öf[@¦ k R’a½'ò¿¯/toX~_}ÿ\-YµQƒztÖ_~{®¢–ùA*ÅD¤#DÂ\¡‡\Åû²‘Ñ!™êœpd;íÜU®V-[Ö&\ͯ%«6J’ˆ¤Q3ïëu߯ß;$0ÌÁFˆ6„°úm>5K¸@‡¤$Í[¾V¿ùiïKňtÇ/Ôâ?gÄÞ_»£ÑV]©¨<9õ ‰KùWe½øÇ‘š6ûmزSQ)~Zõž¼­{þñvÍéU£&;7lÙ©i³?ýÊÖd*4ë3ÙXY2¸’<áÈvš·|­†öê¢ÂÃZKéÃéc%IÑhMpnþv§æ-_ëyª5‘Pó:=ëUÅ9µéw]^m†ÝW¶@…ä‹©‹î.Ñ´ÙÄ?–îÀšI’vï©ùXºi³?ðõ±tNƒ¾yz2Ë$³^¯éÖi^·m‹`€, ÉXPJ5.`~od¬rüüñ±¾Úñ:I@².$­a™¨0B ø‘Ç.€€€€€ c¤í- K–½£ç^ýTkÖnÔ±]:ê’sORßÞ§ñwH>ûÌëúüÛõúÓíWǧÝ;õ)}½±B#‡Õ|ùò³N׌ÚªKçvjÖ¼@ÇÛAEƒîâänH.YöŽVmݨÛo¥îx0>ý¡{ÆéÞ©O©hÙ;:nÕm*oy„~{÷e’¤÷?:D«WÎTÑ ÌÙQ|›4>)MrÖËŸèÖ.×ûË>S‹fMôÐ=ãT^^¡'g½¢Ûo¥Y/¢ò–G¨ÍY—iØvÈ(ß§ÞG­Qùþ*×À2ÿ••ä†-Û$Iý{wUÿÞ]5÷ÕEÚ[¶OƒÏìŸßf\M@Îþ} U—íQ´l·Ö~µÝwEG•ÈÊ,:â°:·Ÿ}qî»s¬:u<¬Îü9¿o©ê²Ýª.Û£}_.Õè~ßù^‡9 ݾnÊî+¤bkÚ mrSÊO·^rîIšôÐÌøíŽ92“š©ûn9WFù~U—íVtïníûr‰šì^«ƒµ(ðºbAgþ±†šÝtk@ZÛpjŸS½@H&¥oïÓtÜQ…u‚2cFž­¾%^A–­]ê±p ó5É _n $CõËgëwÒ÷>ªÏ×|£;ï}TW_r¶V|ø‰Úwû•›67PéV-º(û‚HËû$_øËhIÒuÃF«Õ¡ª:Z­O?úD•媨¨T´:šð)V¿Õžõâ‚!Ù¿ÝjޏX‘V-õì}7«}ñhUî¯TUE…ª+ª5 ßôJV®|$*å§[7Î<µ6 O—ÔW—Þ6Sß¼û¨*+*UYQ¥êêêÀ•¢õ”j,ƒÌ Ò>€Ly@ÖÆ®øÓÍZ·äiUUUkËŠjÜÔ¹ƒÒîêÓDæÙU™A–ä®”žnmÒçTK@JÒ{©ººZ[>y6p@ºñªȘŒ´ìYIF< «6}/Ã0B H‚U!yèQ¿6G¦¤~Š´ê§&ÇJ㦲ó’ ^ûO8Uc“æìM…5) ÉJC{Ö¾ÅÞØàsÎc' cå± p¨$Ïë}X( •¬eg¨$ $ $!™íø,Y $]C"Ó>€àBBBBBB€Œ—Ò÷I–––²‡H’Š‹‹Ù $yRr§[ $ $ $ $ $ $ $ $ $ $ $¤_$ ´l媟!™KªžÄÉ´ëu_žÆ†æŸ ÇO$‘a2 #©cÇ©a‹ÓÈEÙ¾±$Uí&Ú~*ú„Ü8>ýSa?©zžT’Y8ùùk9Ù*Ñ®}ó4?óòŽÛ1k=>­ÇŠ×±ã4Í) íÚ³;†©A%™£¡‡ýtÐuØÍK¦BEnWšÖÛvÇJ˜ÇŽÓ±Èñ dq%™È86ø¹¿y¾ù~@¢!äôšd¦ dq%éV‰¥:ÐÌ¡i¤NU#OãÊTŸÝpºëÉeXOV·°5_ehJ§Ðmf§òK×z€L’—íƒC·Zøy-Ð|¹½ù'§\½..â´oöɄnj— €FXIÚŸÝ`ŠKéí*D§õ9Íã4lã©òÂ>&9vÜú汘-¯¹9’vO:kø„ݾu@ Ò'·þx*NÕ©d4ü1ä¸ñ{Ì=Þü>‡‚ó!Ù€ü¼Vèv_žÈ€FUI¦ã¾€Æ‡8€€€€€€€€„­†ø`t@8rîcé²å£ç‚|¼§„¤/^ßi—-aä»ùH $C«ÐÌ¥ÓWUùùVu§¯ÅòÛn˜Û`÷µ\N}wZž°€F’Naa>‰V{AÚM44Ú òM'œ¦€ääô…;© ˆtO"ë €J2”òóMìÙtÕ¨Óë³a}ã<PI6² ´¾¶h:±Ÿl þ Û $¬ºË„ ôê—×mh¬rþÂkˆX§;U‰‰T_vW½†8ví9bu»ÐBÒnà7Os À0Ú÷³Î WÑzÝöÓ§Øm¿ÛŸ­ï5BÒ£:L4ȹL¦  .Ü€€€€€€€€Ì™öÁÜ|P8d·¬ýìV¯ús=^m§«/Aúh¤!™I!a×B ÉŒ H§¯ˆr«øìî›ûèçÆ&Û?}âk±€ ¢æïVt«øìîãt¿T÷ÇmžÝ|*W $ªâÒ±>·ŠðB2kªÌDæ f¿•]Xý15¡ „d¨U¦Ý鈮zƒ†ùµI‚‘uï“´;½™ŠÊ2m¤ªÒµÞÇë6 *I¯×ƒÞÇ-x½Ne&Ò—Dúc}ÓÜ'®lBÒ3ˆ¼¦%zzÓO'ÒǰÖéwý^·Y’n§ô:$ B@ºð- ’’’’’’d¼”¾O²´´”= @’T\\ÌN!É“+8Ý ! ! ! ! ! ! ! ! ! ! !™ë"‘HBó2¥€†QÍD"2 #¥¡emßiºŸÀóÓ×Tn“[ÿ’Yg:ú „ds¦Љö)]ÛB¨@ŽW’A+9¯yvAbas0ÛUP~ÛÚ»6¬ë²[Î:Ý­ÝD÷ßuš+l»ý`·]~úí´ý@H&QaÚ ünó²~—u«žýNKdßŦÙõ%‘jÞîl:K€Ìš lÈÁÔ©2r ß }Lå6…Qu&³ß€ÌæSžA÷TSŸ‚žJöžé¨ºÝ.tJdß@£ÉÆþ– »Ó•a‰[x&ÈÉüAávZR-ëÞ'i~-Ìüã4h‡QÅÖáVídâF5D^Ë[ç{Ý€FWIºšõŠHë•—N˦: œÝï©O»«A­¯Íú­Ðüì;¯ööqýì¶N®l@H&‚^Ó­Ëøç7`¼ìDæÛ2 Ú7¿A’è¶™çtÛmÛî÷1€ øìÖ*Fe $‘Dõ–)íIIIÒ,b„ôâ×Ïn|”½ h0Oß9"ô6C} È¥çQà˳ÿšÃ˜P§T5$¹"@ØcƱou$­9c3; iGHÈ蔤þwl—îi§Õ6ŧ]¶n€þºähuéÜZÍZèøcÛkAÁ-ìTdnHF£ìPáŒ'¼SXçv+gJjåi›ô?¨¬U‘ÆþšU+ÿªèñìSPI&åŠA5O¼'_ß”Óìƒ s~‘»•䉋;ªû/Æ«yû~5v/P³–MÔýãU5³PÕW¼¬VmvkðM4Âê_´L >¬JË”êçV&fÒãïÔ—Dûèç~¼ŒŒT*jßBÚ6Ó¢•ßÛkvÓvl“š·j+­M¯<ýª‘~zãÍÒÞ/õÊôÙ:oòÒ¾%š?aŸ¢e»eìÝ£Ê/ÞÓµ}¿ÔÇ³ÝøàwÌhˆç]û-Øh¬K¶ï±åû‘••¤u=ÎßÿÿÕCް›~ÕàŽõ6¶ÜÕCލזÓmózÌÓ¬í8õ'Èþ‹F¶ýl·¹=§¾Z·ß«¿Nëœlܱ_=ŠÔé'¢·>ßYoÀu3v|ªWž~U~¶^‡½ØIÚû¥æ<<[ÅcæIû–È(ß§hÙ.iÏnU~ù®šïZ¥ÇÃqD·[õùšÈsË®M·q!Ùö­Ïk¿íš—s{ΛïO%™’J2=;Ói=× í¤¿Í[o;íoóÖ×›o·¼ß¯arjçê!GÄÿïÖŸ Ûe˜žvëuZ[_ýî·u^öWTëåe[uQÿÃ4àÄÖzë³urÌî˜_þ:½òô‘Zþ:~r“¢’æ<<[ýÿ°EŸ—~ªEÏÏÒ/¯:»¦‚¬ Èé‡-t-yRõܲò3.$Ó¾u[‚´ë6Ý®Ïn_oGHfè)Iúëkëuí9êMsëCÝ'¥ó¼XÛn¿½¶ÝºŒßSL~¦Û­ß픈Ÿõø9ýÌi$”Q}½uŸº¨Í;ʵjÓ^ÏctÝOשãŠñ:ü´[UtÙÊF£ZùÉçª*¯T›Ÿ\©Ç§>¢Ëæ«ù®Uz´ýBÉãØ¼f¨ý˜ös+ÕÏ]»1+èóÕ«ïÖûsº5DåUiéôÔ—¾ªsûÆ :ǧÙõÁ<Í:ßmy§ß±uºÝ'ÆènûÉkºŸ¾ÚÍsêkþ÷þÞ} IDATN}é«x;Öý¸iÞ$OGÚ\Ÿ®Û­O¾ù¡Î ëtÌwYs«$iË;“T]y³***TYQ¡Êò UTT)Zm¨ù®UšvÈ|ÉǸãtÌ&ûܲò;.$Ú¾×ó×ÏóÕz¯>§k\o$•dÃýÉávjÀ<ÍÏ·Ø[Û²þ7¬‹œ»6¾ü¸a]×o^.ÑýçgÛœæ¹õ5hcó¬mŽÙ4Or¸6~·_ >ÞfsæÂþ˜Ðv¹y©Ôrˆž¿w²Ú_§ªý•ªª¨Puy•¢†¡‡žç»ÌIÅsË*ȸHû~Æ3ó4§ç«ù>~úÜØO·†ú- Q#õ?ã†u©7-¶n»>˜§YçÛ-?eÎZÖES欵½íÖŽŸöíúo^uÙØzݶÍ:oܰ.¾ú”hÓõXó“ý?۴зßWhÞGÛTõwÞ9$Ò™úùíÏkã⩪¬¨ReEµª««ƒNËú7Üž[^ë »}¯çoc µ_æùv㓟±-]?T’µ˜ý¥n¾ðèzÓ¼æÙõѼ¼Ûrn÷sû«ÐOܶͺìøá]|mwì¶a®}µn¿[Ýú8Y½iVoÚã{̸ò‡¡u²v)]öçñúÛM“tH×˵}Å í?û‘@/–%ZIº=·üŒMa¶[nüð.ñç S»NÏW?Ïy·JÒï…¹$Ô¯Ê:sà F…¹å¢c4ùÅ/ØÈo¾ñz½1ãª'ªõ £L)IoJeóõðíKe†Ê=Ì΃íñ”ñ_••Ž?"nqŒã¼I/ävˆpu)rý˜Ž¶8¹6 #ª¹dµ& µñ{†¡½g=ìy%«ß1#×Ç ddH¦~¿ïù5òj¬Û\ɺcÆcKIKÍáÕQÒèšÿLì/Ež;ȘŒRê`Ì!éôW!;cI[‹½ÁÀ˜BÒjÔé­5räHö(_JJJ3êñ” yìZIIÂPÊÆKKKÙÃ$IÅÅž—8p´n¼ãt|{m¯2tÇÌ êPVª²Ânj¹i…šu-ÖguÒqGÍŽEö†d'ÄÜxÇ5zòÿ–$uŒî]¤¶e§jÂäٺ㖠µlë]ýäz­×ŒÑÙaE"I|ÇœnqN:¾½$ikÊS_hçêfê\t’$©sÑIº¸_Ý5ZÚñæžñ†g ÄBÁÏôL 4óOí†!Ã0ÒºýÖueþ'$d¤íU†Æ:FÃÆ?¯ç§\¨'ÿñoÍ_ô‘Æ:FQ£æC¦Ü½@#F Ö×_K«¿ÉÍo¦1Zì'L™ðÀ„$tÇÌ RQ‘®øåùúùøÙzæþóõä?þ­)O}¡-Û7©Úžž6Aöé¯Ñ¥{®÷Í•K,|œ*6kµãTÉù™nצŸÊЮ~*L·>{ͳkÓ© ·ûíw½n÷ ²ÿ IR‡²Rµ-;@gžÒCWüò|ýúwÿÖc÷–$ û¬¶~·)þe»½Û òÏ’¿HÐ\­ÙªÝ<»én՟ݼD~¯vœúlþŽH¯~í‹Û>qZo2ÛBHh´Ê »iÂäÙ}ÃDµnºJ’tÕïèÿM:S§u;PƒÇ>«¨!¾a¢&Lž­²Ân)ëK6^Ü’Î>§z] ½ÿ x:È4-7­Ð·\¨C ORÄî¿k“}V·Mþ\ï¬Ø­©ã©ªZšþ— ÚºéSÝ3c±¤Ažƒ­ÛU‰Vté¸O6Éµí£’qšu-Ö²­{T•ª ©ÕA…ZðÈ¥ñ€<éøöŠRuTZ¶ušuMîífÖSz©ºO, Sy1NCd®m! ãÜqV'ÍxCZ³ë}]{óDE£R‹ µxæxõéÝC-(Ôµ7OÔ¼Ò÷5ãšåƒT&UVNóâõ7?}ÎõJ˜ñŽ;êhýø6ØE:×ýnbÍ[@¢Òø?Ö O-PQ‘’þäX ¹‚Òé>ÖéÖ‹Z¬Wrº…¶Ýò‰´t[Üú¤¿Nó¼¶1“ªP^“‘fŒ¨Ñ’j>+à}õn€$i×ÖOµlëÍxC*:s°ç'îx ênËyMsjÛï:ýX²Óúìg[ìæ™¯V c'º-„$€F”«¿ùR÷,\¯×^Y¬H÷AºgÆb5ëZ¬G¯ð÷Ù­~*ð^»j)ÓecŸ Ét ûwÔÑš1úhI±ŠqP(•X*ñ¶B’¿xfÈyYwáNXŸXÁ_f@ê½ð 3fŒ¢Ñ(;T’ FNŸÇhýø%¯û™o;U­±eœ–5ÏK¤}  8P'NÔ˜1c4}útååÕý»¼¤¤„„Ì.ÌŒFå’’92m•¤ßyæ ²†WˆiÏkÙ í¹bÇŽ:ùä“5`À€zAYRR¢³ÅNBÆÊºÓ­Nï Rq:µ4¤‚,—Hû@.hÓ¦† ¦'žxB3gÎd‡ «dåéÖtV_AßX$<ƒ´ds%9wî\ýæ7¿Ñå—_Î!™K‚~&cªªQ [rÈ!¶§Zl•W·¦bY§×êüRÝ>‰Þxã õêÕ‹€•d:+;§+Bí¾Õî[®ýVqnër ·D^«¤²D.1b„FŒÁŽ!™î ô;Ïí3ý´ë÷3ýÜ7>‡àç? $ $ $ $ $ $ $ $È1)ýÄÒÒRö0IRqq1;„$O @®àt+„$„$„$„$„$„$„$„$„$„$„d.‰D"ôŠ‚lî|$‘a±.§ÀóÓ¿tm‡µ±uÚõÝÜ»þ¥sß!™`heÒ`h?ÒnA$ H„d–3WG֪ȩšr ŠØ}b¿ §õÚ¾Ÿ¾;UAú涬Ó $B2Ò-„‚úÉV¬Aî›lßSb$B2ËBÐ.@j ÷zm/Ùê.Ö 5èºH„$’¢T¶mwº7ȲÉT™öú/’«¶ÆÂnܤzý%€Æ$ëÞ'¤­?a‡f¶†°S¿ƒnS¦b_•d…õõK?óÜn»½5Â.T‚¼è罌~¶ÇO¸ù¹ê—Š!™EÜBÀkp÷3ø¹íwžÓ|»>{m_Ðõ†Ñ†[߀Ìà*‘Á@H6‚$à ³ð- ’êéÖ’’ö( gD ^ËY;¾ÛÿÿMÍÓˆ ÎÑ®²JUG E£ÑÚ߆öWT)5êMos`3½÷Þb]:ìlIÒîUó4øœóâm.xí?un@®át+þ?›Y¿®¹Ö$IEND®B`‚libjibx-java-1.1.6a/docs/eclipse/images/install2.png0000644000175000017500000004021211017733664022170 0ustar moellermoeller‰PNG  IHDRXdB¼È] pHYs::—9ÛÂtIMEØ";‘Íð IDATxÚíÝi”g}ïñ-Ý=ûŒ4›öÕ‹¬Íû –e[f1l¶$„Å7H^‡÷³„ƒ6I9÷žÀƒcccls%Ûà¼Ê²%ÙÖ®-£‘fïîZï‹’Z­îêêêu¦{¾Ÿã#÷TWU?õ—ž…z*‡‡‡¨S@­˜z≠!ç_³f­ªjMÍÍc££"rÕ{®ö²ðøÐ¨ëºT+ &Ä'&Ž|≠úáõôöæÿà?¾û¿×¬Y+"MM'ôo¿íK7Ü|ËÈ0#¢€Ú Âxü±Ç~2E¤¹¥eÞ¼ÿúWK—žÅŽM™7oN¯Üt† c"1b 'œ_?|Øp,Ëê˜]tRÛ©§u¶·Çh Àdééí ?œÙÝÓãyAAhöÇ#Ž®·5Æåµ½#Ža˜IÃ8pdì¥×ö-}µ}íÚ…K–̤%U¦(JÑ † Bs0!C–ÚÛh64˜CfCs$i˜†a$’F"iÄãÉ?þq÷èØØŸøÌÎÎfšH÷•¯|UD¾ð…ϧdÏ=±”¢Î1 “0cÂuŸý¬ˆÜõïLñ „ÆîqÅ’ÑHdL· 3>‘LF2iÄF<‘ˆÇ“‰äïŸÚ±paû{®ZI‹ V|õ«_K=þüçÿ¡¸ÅC.˜:¬|G\¼‰+,hýÙ/Tz™šÉÁÓ¯ûìg½äóRÐwÁ°Aè$¬äPrÏ„kÆ"GŽLô÷%’f"aÄɉDrÂËÂxòé?ì¸êÝ+hÔŠø‡Ï}ík_÷}¥tÈsá×¾öõŒWϘ¡Ð‚…™ŸËÂQwB%cß¾ó®»®¿îºŒ¼ó®»2vþ†F]W9°jqTDw%:{F÷²9–íØŽkÙŽm»¶-–íXŽ36<ʆZäí·_ÿú?‹Èç>÷÷Þï±÷ 5%515ŋҀ9óöƒ“ÏuÝËXÌ}žR²Ž¸œ=BÛvÆ.:í"ÇÛq¯/HõÕ#ôÜ|Ó ¾•ß¼ã[7ßtCÀ ÙOùvóŽ|æš!×ëúÎP’0}Pv ÔUUŽ¥•šxË-·¤ÏsóÍ7ãßHý©išˆ(Šâ8!¿>Ñ¨ÎØ´ãùí‡ÿÐ74‘0âñÄD<1‘HNÄ“ñx"‘L&’f"iÜø™5î…çÒ$¨é ÌN…›n¼þ_¾u§ˆÜñ/ß‘›n¼>ײÞl!ƒð_¾uçM7^> šP’ìE¼í"QÓ]BïÿŽsô·F?÷¹ÏJùzêÏ[n¹Åû3„\5ªÏŠjqgawó¶C#ƒG¼ÑäÑѤ‘HFÒzë…‹/_{*‡ê/E䯮‘o}û./c¼?3æ÷žM=åýÜ# ¸‚´” .Iö"é›C¢6sðX¦õEä«_ùŠ7å«_ùÊç¿ð…fˆD¤ ‹e´MëÖgJë[TUÕ•ç¶îˆ'â‰dãÍsýuŸ¹ó®õžºþºÏ¤ÿ™7}´ì5¤^+=êRÓ3 àmNÆôŒ’ä-sú+5Ô%ôþo;v¡ f~¡ÂûÑí½»wQ«@åÜõ»î³SÐü"RÐ"À´ÒÜÒúó{ïùÓL ý[kÉdòg÷þø}ø“ñ±QoŠaÜ_žÝP.Ee˜@.¦‘|ïÕïÿñÝÿý¶·_9sfþ_½>|øð#¿yè½W¿ß4’ (—ÏüÍ_„@%‰¦¦ækÞÿÁ_üì§!¹æýtl'‘HdL'©èoþúÓ˜@°ññ±Ö¶¶÷ðOCÎï8öøøXöt‚P«ÊrWy]DîùѨMÀô¤‹ÈŸüùG“‰„ˆÌìì¢FõÇuŲÃ’¤á˜¶q†E¤oïžãWPGLÛNbÙ®i»9{„ÔYÿϰlËVlÛ ˆ@‚Po¼»$Y¶"¢x£ y!õÐt\×0mÇUEÛv“¦rY‚Pf†‘ܳkoܘ´/æYÎøÜùË BÀ¤Ù74¶mÏP¨ÒµþÔÔ"Í>¡cgYab{îü°E%e'“I+|f„ŸªýÓqœô§,Ûñ ‡!`rL$ŽfÕ¿÷'U{Ñ%'Í{ûº‹BÀÒÞÖüïw~AQTUq%íÎò×uWq]ÇvÅqÄq]±,GDlÇõþóú‚–sü)Ëqmûèt9v¥èSwê'=»q›·fÃ4£‘A˜|º¦6DuMõ¹q —s"b{a(b;ŽÄ4Û‘ôt´׋@à BÛ±ŽM‘÷æïšÑQ† œ;wnÆ”¾¾¾©S¹^ñREÊø³ÐÅ1“Ãã#}Ýy®ÏÔTµ1¦éš–1Ýqq7•ˆ¶íÚŽj»®f»¶#šë:ªbXŽª)®ãŠˆ¦*©ìMSl»ÔkSCõËsçέÑȩݒ@EmZÿ¿ÌÁgZç­=풯ϩªŠzbÐq\UQ½,Ì NEMDTË>ÞÕSÔ£Y˜«ÓYôV¨Õ©¬ìže ¥ û:ø2âC‹Î\7ºwÃæÇ?”4ÚñT}Fè墪¨™>‚ê} ¨V8©ŠÿŒ0=!Ò;LÙÓSS¼®Uú€döcߋ蕦֜=þ™kD4oÉs©”r@MӚϽæ†g~õÃÍ>¿PQ×õ²Ð™2÷Á-2gSYâÓSÙ&$²—ÍN ‚Ê™]Âô€Ì˜3¸ä¾E*K9 ¦]ðî x% _¨*jF0Õ)L0uƒpnš¼1–š*´M@ôfõãŽìyè²uùe×uÎ;ÃKAëȨµ‡=pÐKAWoôæ·†w‰ÒzÎ{Ô;Ø9þýRÐuüÿ;1½ïË;i_“w7\ˆfÜË¢ =Âð›4= ÕB¾zøyVë›…e)9Ô‡ºQ‹µœÕ?Šˆk[‡6¹c»Åw’£"¢ÆZ%Ò¬4tŸdñ]zÃÌs®øâc?üôØø;½TóÆES££ÁDÛ=ö[k"®÷ë3îñ_Ÿñ•q·¦\DZED"jè L[¯>ýo#‡÷^ñ?þCDÄxÝêÑ5'¼tÃÞ<ªˆd¡{äé×7®×›zÅ<Þϳý”š÷•ùìT³m7c¢ã*"AÁàßWsÜ£Éç8®ãʱ&]‘(Ad&‡w?÷ݳ?ø IÙ¬otÍ gl¿“V’c^·ÎQ[f¹z£bÅEoÅØ©%¶¾öLÿÀëæ§ZzzR}»ãé•1fOfÇg®¾`ÒVâI¯O™gLµnƒáJ(é,ºå‘öÞ•Ý=«\s—6¶ÍI¥àþqg`dXDeÙ¢GûYÖ˜:¾39>¼ýû˜»þJ‹5äJ»ìËξ …äõn=a~j¨„þ1nz„¶?´ðì«IXC;EÄ‘‡G¶ììŸuòå³ÏxkÃŒyoþV‡nºö¸›pÆö¿ºe“é<åòïî{öÍH¤áXžeŽyúŒ‹º'\#c;NzOî„Ìê†ü€ `÷¦õg¿ýo]ó€k‰=î$G÷õïy󠽿£5wÌóæyCÚŽFÝÄ€“ݸe“é<ç½?:4oioHzÏ:®bçŸL@9vÃ^ÛuÓGUíÊ|ïž øÓfGviz‹›<$"[vö¯ûÔ“‘X{f†%¬á½›vîñR0k×£v*EÄuÇú¶^êCD/ÿŽv"ÝT4º®ãú^\Sb_ QÔ¨fˆˆkNìëß3oÅ|R0ÙoÙúø [:zx)è“snæõ2²óÏ›=û7h²“¯ôn"Aðgš‡½M³F”HÓ˜©ª]ÙóØòüó}{¥`[êÛ­M1o°ó¬³V8ŽX¶£(jŽô²ÍõæO@/äR_¥÷þô½RÆ0í–Æ˜ˆX–MÊ ¥£->1Ë7ÛÞã)Ø,b–ˆÙÓyô·f.èŠh""–ãt ÷„´sãA˜þo%„óV|`×óœrúÙ¶Þ¦iͽsöìÿcÆ<Ë/½u¨ÿÕ¹ËÞ¦GU×+JRD\Çhh˜èîTDäÈáásb±¨)"–µ×´3“/=äÜ3/=½AQ+ëêSËv Ó.eK B€%gýÅ?¸ræÂe]ÍÒÐÝÞÖõò ™ÉácŸº"vG÷Òö®ùŠ’tC‘„¸²çÀ¨ˆ˜æ¸iÑHãÒ9Ñž­!:ªºÍ¦2aººk(†¥YVÐG}]ÀÔç‚^ zË–ëJ‚௹cÞikþqãCÿtŇ>oëm±¶9óæÎÛðìýȽ‘X›ˆáº†¢$wÄ´¬­;⯾1Þ7ÓŒ‹ÈXÜML8Kçég,³W­œ©kºæDDZElÛQæYŽïf„_*ÿ¼?³ŒÆ´Š8-5'÷ö{Üü¯¶„l¯Rîº%ü¨Ð±zæè@éþAùÅ÷nY¹æÏN^¶ú´³ß!Ï?üØ÷.nï>µµgÕʵiZc[wÄ_Þ2*" º¬'©=íÉöˆ$õ9ªÖO4íÜ7þÆ›?{lσO ½íœÖ³Îêͺn,î¨Æ‰Y˜ÑÃóÀT Z¶ã‹NBÐ÷æì„_M„MMT]Ñ…,bÁJWHAë¯ÜÌ@‰YØ1gÅkë¿üèÆÛ»OmoïXpR‡Úû꽋Îû“ Ï 'LgÙâèŒvK$ÚM_6Ò䤫yQËœ5'ŸþøK[¶áÕg^9ôñ,ÄÚ#¶âèQÃ’dÚÇ{éŸÿ¥ÆN3º€^ò¥jh˜v)ÝÁ‚ƒÃ¨Ž,LYÝË/úÐÝãC{v==>1àÄéMñ³ßýû—íHcËâfTOø.hÛ®“ˆ$ÇÅS.LÓä*UøE ™«}k/xÁ\›“¾Hv•²9…VxÆ+¼JÀšISTNsǼæŽk¼KCGÇÿ²ÝÔkm2EÄ•FËŠëú ±äJ“Lÿâ`rT™¥6üÅÙïù?Ïßÿ/ÿ±ñ¦O¯ÖÜ6Ë’±„;2ndGš×ÉÛ78â[˜‰¸™=ñàáñjôó¤ïyªÐ‰i¼H˜uôÞ¼¸péYªìmød(ã©‚‚9àÏ€Rù–$ø]EFêø¾¢ïjÃ,¾®| f.¥ÂÃïÒ¾S³Aå¹"¶¢$Móð‹[õ¦½1µ,ï¶~ÉhŽ0ñºƒÉÑ£7㵺½öªßðÀ÷ïÝvã_¬îhuO’¦D¢)÷‹vUaÃÊ„“{àñêïôßтOÁ%žƒ -Õ”}û\ªÒË\å­®~%“d˜ªl×5Ä5úû4imm°’ŽˆXVó±cÒê}L¨hMŽ­; =#£-®ˆüw®ýúÝ÷=úäîU§u;<8>2Ḏ-"Šªù$°c‹HDWEd"i‰HSLO˜ŽaZ"ÒÔ›H$-ËnˆETUœ ,ñ˜Ï5ÎYb'u¯*—*dÓÔP]•^Ôì5d×RuÚ¢&ZuÙŒ»F›ÛÚ#1ÍMˆa:ÅLzYè}RhŽIF]£%–HeäÑŒ5‹ˆÌklû«~þÿ^9çôΦ˜1ÓõD2á ŽÚ¶¦œðÂqÃzáÅͧ/[ðò–Ýãcgœ~ÒÁþ#ýƒ3ft,\еk÷¡]{û—-š¿ha÷^y]DV¯:¥Æ‚P²>B+ï(bq'»ò¦r¹ÎìÕ/UÞ¦™šuU¹¢æs–ÊI†mæ„J%¡kˆkܧ4ŠÕÚ±-i¨b+®ªZIDzšG­‘±áƒ‰„5¯yh42Û98Ô¨uôvÏI¥`¬Q‹4ˆ“w\¾úW¿þÕÍ'-ími#Ã’úùµŒïCèš:>6q߃¿µlsΜE<ò¸ˆôôÎݹc×Ö-¯ŠÈ©ËVl~cûK›6ŠÈYgŸQÙaõ¿™T–—Ëû‘R˜í*èÓ ¢ûv…–jŠóWÜ×*ê©€r°ED‘Ä®AéžÙÑ¢ºêZŽ©Y®mGbŒŽ&îmmžH-0j8"·‡;#§ôž’Š@-âŠâ´EÝsV.}îÕÃ'-푦mdÂÈõÚ_|¶ÈÙÞcËò‰ºeË•²m…õs]f¶\æ§Ða¢… ¹¥ dåÚ´"^"ü"õ“þTÞZ Ó4Á¥*oC„_<|QsUHðÌ;p)&˜SK¬¨P*J2n8 ££½IDTÛ±´KµmÇÕ4Ù»»ODFÇ{[›¼<°`xÌm²Æz”–¶5ÖfØûtÍVÛ±Ãò~wÔ8oEçÿ½õãXzdxàæ®Ý‡ 3gΚ5ãüsÎ,¨Ä M‘s*·ßö¥n¾%™HˆÈÌÎ.Z»¸ýõË1DF÷x}Wtõ©síãw“wm×>|¤oÿ‰„=2aŒŒ9qÃJýÊÚûÎ_¬4Ù‰äÈ’Å'yW»˜Ç¾,808ú÷ß|ä®/žµå͉^9øÚÖ]‡Ç'r•àÌSOºñ¯?œzQE\WŽ–˜º©…“ö•üÔC×ïÛöíÑQéÛ»çûïã·FIAexĉFt5¢OÛq;±˜."#""Ÿ}ò’]O<»é…-ûŸ}cש‹""rpð`GkË QÔª‰È®ÝcQ‰5DÛš›&k»ÂP*ý•˜ú¼/¹7D2¿áРh- ÒÒ ¿¾ÛijpÏZ1ϲK/Zõ–ýÃñ£óXIÑÚ5±ãß7M[Dt5:£Ein ÂF]#“o"‘WËuKSq,;b©I[‘Á»o`´wfóÆ­}"ÒÞ(ºýØ~µ¬o F¢ZTo™Ñ‘ êŒÆã¿yäÿ¹‘ijŒ]tÎêôgÛÑäØ7S=®h!  "º""ñ¸""¦—‚†ˆ¨v²ýСQ·ÉŠÅÅú¿÷?ÙÖÜÚhXDÌ9€­-Šz4q\Ç#~<´šôXC´½1ç­$úwïŒ5DEÄQÍìénÕ¶-U×ËRü¿J¯)Qz„€í\µ·E¼tpâØ-ñ¸ˆÈĸ(zûàpŸˆŒ 56v%Eû ·4ªK{Z4ijmŠFŽ|:Ží%â›{Edá‚–¾½ÆDÂJ&ŒðÚüÚk3ÎM}Âç··5]7Ü€*AÈKsÝØ¬™1éžÑÒîE ˆŒŽˆˆD"½úD¤»Ùì]¤µ¶.=b9†ˆ‰j]Ýǿᣪš‡ÏmÞ¿jaÓDÜØÑwxó¶Ñ7ÞØaŽ}ìΚv´‡ª"mŒ¥—f´võï=£3³”šêꪮF¼Ô”¨«h’ïM! Šˆ+ ózZ^;pðL¥="rè­)3»{%ž|³©õhìD¢š•™7wN4¢FtÕ2#®’LÅáË[ûßq~çØ¨f®aÑÆXD7åØ÷+¼ïZ(‘œßìë;43r<õHD‹ÅDDW#š®K$¢‰î*ôe¢(QQ¢§,Õ_þ͞Ѧ“½‰ã#ñ¸ÇUéîhÒººš£Šˆ´6´Db-mñŽÖ]yñ‰˜–ó²ðwÜ5<šË9–‹žÝýìÆÝ_»é¬¦X·iG•ˆ‘–¼/oÙþc©±PUUœðã¡!  ®+"º¢4º"+N’ W<½é©Å3ΘÙÞåu5M±S_L±;ÕMüÙoÞøÅc/Þø‘'/šŸ´š]«AÑ\íØíííôsmqDSÜ£}AÝ=Ú_tEQÄuŽ}wÞ-9ÈB@˜ô²JsÝM•w®]ÞÛ½÷Ǿ0d·^кZDtÍÔbLJCUMÕµˆ¢šâØ"2xdâ?ï}y÷¾C_½é³VÌKZͶÓ躚ªˆªííiª’Ÿšˆ¨"¢h"⸒zÒËËTâ*i?ºM*Èq]QDµM•³VÌëéŠÝý«½?Ù°þÔE½«Nn_Ôr|„SUDTU{ñÕÁ×v <ñÜŽ —Ïü§¯^ÖÒÔꥠmkSd»B@þîàñ›)ªâŠ—…ózåsŸh}æ…¾Ç_ù¯_îhijjmi˜ÓÕÞ5#º}ïàXÜyõ½IÃ^{Ö¬Û>{Þ)‹ÛiÕ,Óvܤa˜®®ÇÔÌ díøwC~ T,e¡+®ã¸–í$MK± ô,ÃQESO^8gÙÂÎQk^_ßÈöþa‘Ó”ù½"¢¼ë¢•ËOnqŒ˜i«cG”‰DÒJÆ ãèPf4ªŽ)ïGdt]sU]ב¸÷i"â꺈hª÷+3ê±qW… T7 EÇ5,Ë´31aÆÄ„m%Žþê¨SõH,ªé {—ÎëN_Ú2Õñ1lÍ2ÅJ:†aY¦é}ȧ©ŠHD$©EU[ñz¶’öë š®+–åhší8šªŠ8©Ïµœ=E‚§;("ªª4D4]Ó"z‹i9M͆a6&’b[–ê"bÚâJÒÈúäÏ‹@ñ:‚z$¢‹x?‡¦iª®k^iÇ~A&£;¨gvÅEÄ-ãf„€<ÝÁTGL×D×Ô†¨ˆÄÇõ.Ÿq×qI»g½7»m»¶ãº–kõަjÞÍǻ͡ˆÿV}Úõ¢é_¬°·¼[IüB0DܨŠ""ª¦ˆ¨Ž›y\/÷„;Ú~ß‹Ïþ²|*íT¥â[ªÒØ€éì„áïŸÜ@êÛiËWæ  .º˜ Ô·á¡#9ƒ0ã9êŸBBBBBBBBBBBBBBBBBj…^®9Žc$’¦a9Ž­¨ª¦«‘H,‹PÅ€úBÓ0F†Ç¶lÙ´cçŽCE¤»»gñÒ“V¯XÝØÜ¨éz•·ª³«{ðÐ@˜ÙD$ÌœU+Ry_1xëª_¤ª@ïå¿h®9«¹˜´ 4’ÆÁ=öëÎή«ÞsõÜyóE¤oïž'_ÿ³ŸßóÑBÓuÛ²NÖžêçÄ9=U¢$çå:¿‚æ¯BUñµÕ@A("âºîØÈ؆õžsîykÖ^–š¾xÉÒÅK–>ùøúŸÞs÷µŸød¶]× >æ9 Dì?&!“ñĶíoôΚ•ž‚)_riß+7._¾Ü0Œg1ßnbj¢7%cä*Ì"Ù=ÑÔ°Uöâ¹FÆ|Ã;õoÀ†dw‚ÓKž>€Vܶ¯Ów«s­9o7=c†à:Éø7W³+0Wi}Ô©g}«=Ì&´oø},ïηb‹Ø[”?MÃzýõ-W]ý¾\3œá[~ðÕ§Ÿž7ƒ»‰Ù§¿ì¹Ö“=CÆ©Ä÷‹góuâ¿, IDAT Qßóòࡌ9Î}á«+×"¹Î­ÁÅ~+PP„¬íà­(KsøN ¹ÉÁí[Ð>VÜ&¯–‘ ÚAè¸Î¡C³gÏÉ5ÃìÙsvíÚ©û]/“ëmrYÆÁJ?´†=õT´Ø¾1SbI²»DõÔõ½³u„¢”4_®ÎAðØTMË»!¹úRÅ \kzý P‡aÆ9˾ՕXm•÷€ ]׺»º÷íë_´h±ï ûöõ/\¸ÈqìRÞðfŒtÕt æÝßóW£µS¶Ã1Y'èðéÕ`(Ë^=é{ PJýe™H$vÊi+ž}ú÷¹føÃ3OsÞ¦i÷vx*Ç^ø²½“¾ù… Òó‹ßÇ{“^'UØêZ?X€zîF¢ú²S–ýò—?{òñõ_riƳO>¾þðààûÞÿ¡ÑÑ‘\g´Œ·±a&†YO¡'Ö‹g\Ž˜z\æôѪ౬\—°æ*[¡ÛžwÜ,ï ³gÈU'e¬íÒc/»ª½Ðµ¸­.hgž9äÞÀ—rûm_ºáæ[’‰DÑ«°,KUµ»ôýööŽ5—\šúBý“Olúص©ªŠî’ÑÅ õíÝóÀý÷•á—et]×týŸü«žûãÿ~pÿ¾~™5{ΪէŸwÞI#YO)Èè) Î”çW@mËrlû̳Î>÷ü 4MWqÇ4Íññ±ì”©iœ‚i¡?×u Ã0êzP¸!€ € € € € € € € € € ,\…~¨ºFÿº³«›_î®t£W³’«ßšy·®”"M“ý³\ÛX7÷‰ô Y…{¬ÖazÇLÙœ€µå}¡Ê•¤Ä“KêwŸ¹=GÔÊ!=E*¹Õ•këÊòZETïêje£¥è%3¹þœ,•+C)kæ† jètG–Ú$÷÷}*cbzÝwñŒ§2îÇÊã€ûtûÞÔ;ãnàÙ/—½æàųß4äÚ´ô÷y_%à‡ïzê$ÌV×Þ{Íû®<×Qªð‹2 ±j/c¶ì—ó}s·&‹Û–0­æÐÈÛ^y«.ï6×a•P®C#×KW¶ìÖÏuè ×¹+xc}O,Á{©ïÉ'`Ç s®&‹ì&$škOÊu¤…ßJ˜½xøÓeÈWØ´êô¶}³0[í[þ‚‚9àÏ€Rå:£TuÆy-ocÔ¾;­ï (»&CîÿÁÕ•k‘0‡FÞö Suá÷ßm)´ÊxhäÝoCnr®Ö/t/ (R›·¹}§tä·áµB-å¬Z¡Ï'ed ÄU•8pšz¿VÆõ„YçÔZ .Uée.h 5:ú4¥Š]taÊuhTº¢ò–3Ì«”²±Œ‘Nf0׫€·EU;ð|÷¦¹*¿_Én…àź¯Þ쪼£–~mEé5Y•Pôå•Û?+zÅiÞZ­Ü…ÇÓ. }oRÍX*b¬îS°úcý­wœ³¾«7 ¯PµÄ®pYkR*!dÉ«¹]¤²œó¾út;mª¥4d)óp-oöÛ·‚>)É»žB×YßÝÓ •­è­˜ôͯô•÷åêî”ëШtùËr¸åýØxŠì*åú^Y=ô}¯+Ëu±YAótêCŽ¢\•÷r¸ô‰Ù/°eÏÅ€ºÊ˜¡ˆu7¨’þTÞªÈh…0;@ÈÆ*¥ÃÌœþ8dCønHÞê*bG-¢ÕJ¬àÆÊµÁ3‡¬„ravþ›\âaXz‘ M/ß³YÇ]¹6|jRn¿íK7Ü|K2‘˜Î²©Ðsb—5Ý ì-µ¨oïžî¿ßå848„§5‚°à1‡º,hš€]… € € € € € € € € € € € € € € € € € € € € € € € € € € € €  Zôr­Èq#‘4 ËqlEU5]DbÑX„*Ôš†12<¶e˦;w8("ÝÝ=‹—ž´zÅêÆæFM׫¼U]݃‡ÂÌ&"aæ¬N™§Na&· „lA˜Ah$ƒ{ì×]W½çê¹óæ‹HßÞ=O<¾þg?¿ç£ÿ„¦ë¶eœý=U>ñM©Sm…©tù Zåf€©„®ëŽŒmXÿè9çž·fíe©é‹—,]¼d铯ÿé=w_û‰O&lÛuÝà"çÇÚEؾA˜Œ'¶m£wÖ¬5k/‹Çã_þò—xà¹êª«n½õÖ‹/¹´¿¿ï•—/_nFÈ“©o715Ñ›’1€f‘ìžhj42{ñ\t©éyËœ¾l®Ç! ã»ù‹d¿¥(¥Š2ÖŸ·ïžñН°fÒ@M¡iX¯¿¾åª«ß'"_þò—ãñøºuëî¹çžÿú¯ÿ‘Ûo¿ýü ßòðƒ¬>ýô¼AÜMÌ’ì¹Ö“=CFBø¾b®jöšKìÚ†)LÆ+†ü-xµkÈx6üæ­ß) ˜D¥~}ÂqC‡fÏž#"=ôPúSÞŸ³gÏÙµk§îw½ŒwNLýWèKŸ4K?¥„DøxËèDVù\_ý\!ÉL»¡('üuÏ=÷„šÏï¼é;ˆ—þìT®Ç2¯B›Ÿ½†Tý¼ó.HÉ\)èÛà²C@5•çW@mËrlû̳Î>÷ü 4MWqÇ4Íññ±ì”!óõ„"⺮aC €šÂý!!!!!!!!!aá*tŸ½}OgW77*®­«YoS°™Øs¦æn‰é„Þ‘Yöã3`my_¨r%)eÍ©e½{óNñ_/¥þ«3sj Ðfªtù'qÏɵiå::ÈÈ€ÓEyßEUù½T%6¤BôÌ\N–Ê•¡ÄÛíNÃsw™>íH[Oåg²ÎÕ5´Wèeßæ€[™û>•11}ÌwñŒ§2n€žjã€Û¯ûÞ«=ã&ïÙ/—½æàųwÄ\›–¾_æ}•€½Ùw=uf«ƒë?ø¶õ©õûVNú”€5KyWî[{¹ûnfðN¼«øÖC@ÕåÚꌑá¼{cö•«&ÃT”ïþã»Éaš£ÐCÒw'/{‹´Wð¶„Ùò)¾r%!”çê¼;ϔک„yßzìm”ë K®SL˜}=o ³8Ã,¦üU~ça¶Ú·üá pnÍU3aš2äÊ ­½ŒS¿ïªÂWšoQC ¹ŠThñ €ìÌö9WÃ4G‡dE[¼”]Ëww-ôHñ-p˜•”²¥Eì.à=H5^øèb’ê¿ô*±¨å½Ê ëÏ^ä촾0T3e©ÉÝ·K¼ˆ/dÝ–²Ï”«Ç<é2ƒ°Ð·QÕ÷=E.á™"gŠàÏ9&¥ëfxmªõKÊR“¹Ÿ«¼ÓŒ=úfá”=¦&±Haö‡AUÄøM•¥n6$ƒZJó—2=ô¼ïÁ‹¨ØôõL…‘÷)ÕW(½rŠØiK wóšà_¸øUû€õ„Y$üÍònµï‹–å2ô"nð$wl y/ª-•·3Áx*÷Ž*Ì} BÞKòÝ1­¸ã+ïá_Êí®@–ô¾Õ÷,þN:k“|7¯É^0ïm_N¯Áëñý¥•¼ÛnÄS‰^~Èû@…)I˜;¦Z'áo|#§÷kôR½¡Ñ¢ï}S®[ñ¿zu^¥ÊÃbUþ¹Ñ©öB܈'ýìŸ~#Ãê›:·»"ùPæaø!¸rÍ_å K¼»JȾÊUi¥Ï­UX¤V*g²nÄSP6”¥ U«´ìòLçkªQ“AXè­jBÎ_¡{â÷æ1ÌKÏShá§Î›Ù"ª½Ò÷š¶7â)ãÁ¿§O•LU½j´¼#u…öÆJ|õ‚nÝP…óHqWØOÙ~UyßìOÏñÔô¥Â“ûõ B”a3¯¼ó‡¼'Nq·+*â6%E”9̳ÝǪÄv yƒ§ì¥Êr¨¼7µ)âÖQÅUNíÞˆ'xC‚ߨå½ð»,% ¾'|„¿%VyLÕ¾ Óä¾Kå"1°·HñnÃTÕ¡QR0ÕTû3ÂIÜTRì0&9                             !U                                                   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!€ € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚@R‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚€ ÑÓÿØüÚ&jPßN[¾2g^pÑÅT ¾ É„ÏP÷øŒ@@@@@@@@@@@Ptª(˜ë†aš¦ã8õó¦XUõH$‹y:Žì>l%×­ŸvSi‰© fêª:M›5›e™–e»uÔÌŠ¢èº¦ë‚¨ ‰x|xèÈþ}ý£££usºlnnž=gîŒ ®ënÙoîì;ðò–Iꛆ‹EõÓ—-š0z—ωLÏf͘!iý{÷¾öê«GŽ®›Mnkk?uÙ²ù 6䎂(‰ic££{öìZµêô™]Ýš¦ÕÁF9Ž{`_ßæÍ¯¶¶¶E£moö÷|~Ó¶_uþª“横RÝx÷ÙM;òȋшÞëšß©O·fM&“éÏÚ–uhàà‹/¾°ví¥‹–,­M¶m{û¶7žxüq]Ó,\ é¡2Ž  cFßžÕ«ÏììîqÛ²ê¤ÃÔÝ;KUµ7ÞØúÖÙk‡£Ï¿²íï¹`ÅÉsê¦áE¹`Õ⨦ýäÑ—fuÏœ?ýš5#MËÚøÒË—]~ùâ%'ÕM+kšvò)Ët=òÔï~×ÝÓÓÒÚB•x—íŒuÌì´m«ž>Y‘ö3ÆFGUUu]‰æiKg×_ó­>eÞ÷ücv»M‡fÍî"9rxÁÂÅõ×Êóæ/:bZfÈù B ˜,Ô4Õ2Í:Û.MUÓ¯QU¥Î"AD4M™æÍšµÉZýµ²®ë¶ã¸¡/z*[nÛ¹uë®øË›·ïÜs@DÍï=ý´%§.l\ºèTΛ¨K.U@³¢>‚³,kyúåm¯éü3—}ô}W,žß뺲sï›·ÿྗޱV¿àŒ¥T4êð|érΤYAŠˆÈS/mÛ¾kßß}úƒóçö¼²eû/yZDÖ]|ÖŸ_sùÅç­úå#O¹"’…¨¿æ+Ò¯øå;¯zo9·ÑuÝi– “Þ¬eoÄÚme]׫vÉR©A¸mçÖßlxéo?ýÁùs{îøÞ½=ù|o× ùáÏ»éS¸ââ³ßó¶‹¾ù?íé°#E½3+súøõ¯îOÿóï~Oøe[[ÛFG†'ñÌ%"é'¯BÏeÕ<÷U¢Y³Ûî׿º?W æzjr±ˆ÷Ôôu¶¥áæñóÎ\6n϶]û{òùU§-ùÚ>)®üÅÍÿü½þjÝÅgÏŸÛsî™Ë6ïŒ/]Ä©õ”ƒ|ý¡4õø'wÿàﺪ rÑ8“جém'"ïx×U­mí#ÃCÙs‘ø³kÖ-òRÐQdçî æ÷rD=±lË0ŒB—ZÿØ#—®{[wO¯ˆ Ì9L’ñá¥ëÞæ-›=gF¼™Û;f¬¼ S˜evK&"266‰DÆÆFSSÒ¾²góþL*€·ÚÔú§B³æj» ¾r麷yÙéµ²ïœ%©ì­ÐR--­3dÌæ;1×’wg˜*A¸rÙ’W¶l?„®twÍøÓkÖ-_¶ØuEÅ•W¶l_¹l §NÔ•¢ÆÐÖ^~…—gk/¿"x΃ö§w÷ôþäüŠžÞY}ŽŒ2|èÃõæ,×Fºéó{½GGG²gkmmiiiM6ï+¶¶¶y+¬ÈHåMo»\•“>ÑkÙô†Ë¯è®\Üú³—ò4õ8}ðÝ+Òùî!UûŒ°Ôó®\ÜøÜK[võtD‘ ¿{áÇ¿xlÓæ®·K‰ìê;øÇ—¶¬\ÜÈ™ð"ðCþè†ß>ºá·´`Offiöç:ɦ¯¿Ð5ç>Óý’YH"Ççö+cºëºÞ)2ýL细l­­m­­m##Ã##Ãn ¦à^á5«÷F§Úïè låôö Ø|›Þwb®=$xg(o+—Ú#\ºèÔ5ç >øèSïºâ¢ùszÞù¶·üß_<¶öâ³ÄGdoÿÁ}ê’sæó%BÔc‡°ÈSêýû.¹l]ï¬Ù?¹û—\¶.{†ô>Ÿ7Ã%—­KŸ˜=%µ×u/¹l݆ß>ê»æ7²€_k<¶„“=exèH[[{jÊðÐ×q¼¾RÏzƒ¥æÌþT,õQ™[É»æ–Ò¬y;p¾ÓSïZÒÛ«ª=ÂÂ[9ÕŽÍš1Å[mÆÊ}÷ß=¤Òm]Î ‘uo½è±ß=uçþôì3–­ûÙÕÏ<óŒVúéyfF‚[ðío}ð…/}DDDD”›—ü$ œì·îøá¿¤eËQU Â0̂֕$¡†F@]}=à»ß¾×êÓÎaëÿþ¿[_øÒW1::–'""¢ªÇðÐ ž~úɂֿè¢-hniEm]]jÚ‰ã}xàþûð‰OþÕ¤ååä–e±õ‰ˆˆ¨ªÅ¢ÑTÐúà‡>‚ŽÎμÖ?ÙߟÝõ\tÑ@MmmÚ|§<%D"a+³õ‰ˆˆ¨ê…ÇÆððC÷´’zÅ/îù®zÇ»jh°±xàþûðñO|*myÙ-…Ù™#*ÔqÄÇTŒÆMì|cCª ]×ÑÔâÇ¢e 8sE+<ŠDDDTñ::; ÕkïèHýíTFæ´œaKë‹ÁgÊê0^?6†þ¸ UÕ ¨*ú‡#Øõúq,Ý݈-[bÉ’A"""ªH‚ µ¬)‡-m0Œè;k ƒÐF4ë|PT ªª"®$~b1/¼páHú¡ hm­ãÑ$¢iõoÜ øêW¿’ö7Íú´å8ù†Ï|pû?ÿ³§éɲ¦¶Ô#ãt ìó!"ˆÇ5Ä¢ U…¢¨ˆÅUÄâqÄb ¢qØþ.lĻ޹š“h–ºùæo¦=þÊWþ¦heR–ýõQ®~­>ó™T°J­leM9l™qʈ‚£Q ZÀ‡áá(úúFW4Äã*bñDÈŠ&WLÁ³Ï¿…w^½ŠG“h–ú›¿ù2¾ùÍ[R3àRÃ¥$[Ï–ý5á¶ÛoÇ7Üà²n»ývç« ‹Ñ³eYú×,†€lþ¹Íhï™Ý0a˜Vâ·aÁ0Ý0¡›&"£a¾ QÚ Î-·| ðå/)õwòq’}º}ž}z2ÄyYa‹ˆ\Ò–ë,{à²OËV–ç°¥kªó %€úí{ðè Ḇ¸’èÉŠÅÇÑX¢W+SÉqÁ ×¼ízL"šôÚrË-ßÂ_þs€ïÜú½ÔãïÜú=Hͳ/ë4?Yîwný^Ú:ö2êàöZGD³)k‰¶×ÍÃë˜û2‚ËëJæ´¬=[†a"rþ œÀ´Ã´`&{´Ø³ED9d¾|þ¦ÏNšfü[¿‡ÏßôYO˺-“¹{¶ˆÈN[Î1Òæ}ñ‹_œ´üç?ÿyüÓ?ýSÚ4I’&‚›Óœê­jD4¿ö^:8„ç{G«ˆÅâˆÆâ‰sµb b±8⊒8KQñ¹O_ë¼³y4‰(gXJN»és7â»ß» pëw¿¸és7æ,/¹ÃyfF4ÍÓßøå/9õ÷-·Ü’6í‹_übjš=låjDyŽRÌÄÂö:85†ÁáäСrzèpâöª¢ã‚ócë–3ù‚FDy…-øÜgçI|ïû·§‚TršÓúÉåìË$§1l‘{Ö²…­Œž-¸ùßHM¿ùßÀW¾úÕÉËú|©²¦¶¤& R»Œ„ð6Q„( xqß1DcqÄâ bñDÐRœ·ùðÙèì¬ç å¶¾Û?ã³7&®þùìŸÁ÷oûç¼ÃšÛ4†-"J [¶¿í=[ÿøÿ0iZ¶éɲŠrù`—Bˆ9~`[Ãbl\1wÞÿPà“œ¹jÎÛ¼—nYŽ9!¾˜Ír·Ýþ/©¿¿Û?ãÆ>3ÝxçS+éÆ>ZþÆ>Ûnÿ—Ô27ÞðéIÓ¶ˆÈ[Ú²³eS.ËKØ"‘°uìÈa6>U½ºú~yÏÏñÁ}b_Ý£( ~qÏÏðžë>€ñH85]UUqϰEDDD³ÞØèhÉÊž¶~þŸw²Å‰ˆˆˆŠä¹g·§="‘°¥LŒ9¶´¶±…ˆˆˆˆ\XVâ+ UPTšaÁg&zÉzÅ÷߇OþågÒÖ‘ÙlDDDDîLÐ Š è†ÍÈïô+†-"""¢ –¨ºÝ`VA!‹a‹ˆˆˆ(ƒaZÐ º!RC…ù5‹a‹ˆˆˆèt8LË‚ª0-@¢7KÑÌ¢”ϰEDDDe¡ª Ž>†˜Zù·œÒÍqt-XY`xcÏM“ã#8:’÷z²,Mž&‰“C’1¹7J× ûÂé®ÅÙg†-"""*‹XL¢è‡,§p%Ч§™¦9iÝ0Seº¶ˆˆˆhƈÆOžýáÝU·%ËæãòmçO¹#QEhl¨Ã¿ÞöU‚QHAËi °,†•¸ï•9ht=1lh˜VêHôhéfú2ºiÁ0NÏO®§&¶¿r×_± Ͻr µ]UÓà÷ù¦¼Ÿ [DDD4mdIDÐ/C×e’ Ë‚9˜ Ó “‚˜aZ©¥&ÃÖDKNO”á>´8G[sSÞûTPÏVWW ··7ë´|Luýb©”z”cªa_‰ˆ¨riÊ(ÆÇzÑÔîý*>IQ K’ã|ÓJ#Ó´Ò‚—aX0L†eA2,& YLQ€ª›%ÖIJ’(¤6$!ÕËUjâL 3u;åªÿL¯ÍL¯=ñ?ñƣǞ§¾’_Ç…ìQEˆ’Iœ¼œ¥·ÌÎéÄûY¶J z{{{ìfR¨É܇éÞW""šÔØm؆ð±'=.QJD¢íœ-{à‚SæÐcò|/qšÓeYi?E;gË>Då6\•k+óÍ?¹œ}zWW—ãôlåz)Û^ï|¶ã¥S­®aÜÌùSÙW""¢©ƒu8ûÚÏâþ{žú V\|³çuEA€iY©ÀeZVU´IѳŸ[˜p{£Ï\ÏÞûâ2œæ¹… §mg[6ß픪Üb…Þ|ëDDDT,›¯þ0Fú_õÔÃe*3®F´÷h‰‡§[fÏVÑÖ×á,·i]]]%Êó:ì6Ýåº4/'º—ºNDDDnôá0± ›ßý·y.¡jÛ£¢ÎÙ*äj9/á,sø­0ç´^1Ê-eØ­”:Qõè{.õcjAAï‚T‡³¯þfÎÀeZ&LËJý$¦Mü¶]Ehš3sX±bî³Uèm ¼.ïÔ;”϶ܖj¹¥ \•T'""ªš2Š7vü'F?Ñ}hm©ƒákMÍZ=ÐwCn?g]{+^¼÷óˆ?û?ùOœ—i¥† gú¹Z%¿ƒ¼—7öRô¶d k™CjSÙ¾Û‰éS-×K€²÷Ty9™¾Ôu""¢Ùe÷³?À‘ˆîe«±üìKÑÖõñD¸0O±´ 6A< a"p)Ã{àoÞ€Í×Ý?Þs=å‡@ÝG]×ÔCNå GzFÌ<Ÿ*Û¾ÛÕˆö2 9gËí¤y/¤Ðes­[ªr§Ê ­‘MÅöŸ½cGÆ¥º+/½­ó×§‚–>†~â-'SAË’kRë룇!„³ÞýŸh œDëø'-ËÌþãÄ’7*53nNjNÜ Þ* ¼Ù¿øz*¡¯ [?sÈ-[P˧ÜbשíL¥Å2õZn!mNDD´ãáÏA ÔãÜw~-&Œqè§^ƒ9hã0•p¢'|u‚퓃Qì0ä` κìoñøO?‰Èø•© ”B´%žNÙ“aÙ¾º‰¯íI„·ô;Îg“üžÄ|˜¦ ÃLÔÕ—£ëŠßHDDD®v?ûŒ Ãeño‰ êÐûvÂÒ¢© eÆGSˋඬágñÆ+O@®í4Û<ÛH¦•ºY©[PJ|UÏäy¦%ðÖ›åõ«zLët°2M ¦œ>%kâú:‡Þ:À°EDDD¹iÊ(޼øClzß?Hœ%޾K‹ÂŒœ€… DRgI™Äú9°äšÄ9[r=@PAŠ`ßëD_ßÞЮG}GÇD šÜ«ä¤¼†#§ÅÜB[®-ÅS’=fÞ‡$W¬\]š°Åá(""¢êÒ»÷Q4v®F{ÇXÚaH‘°€´ ubÜÄÀX¢g«¦èYÔZßÒ#ÇAÅÁý¯à݆ÃÁOA s)·/ж'òÒÎ×Ê5„¨›tÝ„îñ\.¡H_TÍž-"""rÔða,Üt Ä¡Jšhâ^ZýCcØ{¨sÎØŠ¹ë/@°y>Þ|æëëh’5XÆ8¬øÌÈ ìÞû _+–oý!Ž?÷&|¾ - 9 º!Z“OŠ7LsRÏÓ¤ åÒ‹UÈùZ¹´´¶1lQnG^{›.ÿkXZ?,=‰s´Ž÷Å›' \ôg£®i~jùýh8¢¢0•0^™Zg½û?qj0†úÆF„£Jj9ÓRʋ̕ lÉr2G%i¸êÐà)†-"""òF ¶@> I®‡¥$BÄÞC}Øvýïá 4:¢øôÑcxíÐÑTÐò!û´ •J&LÃÛÚØÏïJ¬äßöÀf˜,ÓÊz‚})z´Ü0l‘+AôCÒÇ¡F‹âxßQÌ_u{ÐRú ïÃS;ö¢©³;´\”å|’¼·€•\ÝíÎónÁª\½^ [DDDäJÓ†`Ê ô1¾ZD4bM›ëòý{_ÂK½ÇlA«öÛ1„j©+7n\ÓL„!As­d`²Rëg†¬dx²ßÌ49-ÛÉñªf ¾&XN7¶ˆˆˆ¨<ꛋŽ#Ç:ÇÒ‚Võtèðièh=}gù…ÝmðMܰ]7Mxéà2­ÉAÊ2ÓÃVæï鯰EDDDŽæ¯º‡_zË×m‚!7@’êÐÚ9GO¼à¸üÊKþ#}»ÑÕóvÈ~–ƒ (HE0E{kbpxhÝóøw7Õu? Á‚f8«Ìðd9ªÌ•>Ô]®vÔ ªf”¼¶ˆˆˆÈÑ’ÃÓw^…–…=hkª‚íhlhÃË;†¦ŒÚÎŲhj_ŠÆ¶–©B@°€£ý‰¯óÑ´qhš ¿¯KçùÑÑ!!èC´ê  Qh– K êtÝÛyVN½Xös´’A+Y^¹OŽgØ""""WuMó±â¢¯á•‡¿ŽËÞÿr ó0¿k>žüéuØòá{&ÎÉRaY*A`AÓuì{+†ÝûÇÑ;ŸZ1@$f#5±t¾Œõ=Ö¬n,ÉL€†)žH9îÃå®ì+9Íí.ôš^ÚáÆ²†­®®®s§ù™T×ÙÄËq)äØMõx—ûùÒÕÕ`f~sÃL®;Ñl´hÝû÷ÞñE¬¾èOpFÏZ¬ØtðÒoðø¢±ýL„:Ö`õ–ÿM`ß[1¼¼7Ñ“ÕݦcÕ2 }€"σ(µ#¯Å¡ããØÿæ~ñøQ<´}o?+„ß©(Y~XV1S„긜z¦²…,{ÐÒ 35„X.b¡+vuu¥ý”óEºÒÞ4JQ^)öµÜe–z*ýùQÊ6ïíí±Akªu¯ÄãL4×eŸzÃý‡ñØÝ7ãùg±¦ ÝËV#äDZÝ÷  ã7O`ÏzûqÞz]óýèhT&•ç ÖbI[.[¿Ÿ½újô´,Å/žÀ~¼†6 _@…ORHÑ è†yúÇ´Ò~⪑¸ÒP7›ÍL|aµaAQë+š‘´TÍ(y¯P`Ï–Ó§xöMÝLl¿lu.÷þTbûñ‚ˆªESûJœÿþ»0>r ‡ŸÅxtfìäÚºç^?¼lÀWSÅÝürÿw^ÿï‹ñDD‰ó¸êš®M]iŽ â/¨ ªM\Yh¡ºƒ,O5jhúÀš0G âc›Þ…½t?¾ûo¯à¦O®…d5@×HÜÂØ¸ê’’½SÇDzÖ=Ó\ç¯ü°•O¯——G§7žbŸW“m›ÙÞ€’à ùì——vʶ¯…´ÙTÊ,Æq/æ±Ë÷ùTèþåÛÎS9æ^ŸÙÚ2×öóÝß|÷5ßdùÔÝëÿ]>Ï—©þQ".A¦ aç>µA5~?tÝŸŒOðçHÉ^-%,¤¦BþrË;ñ¯O>€ßsŸûØZ4…,,C-âñZuk«È+(låúDZ©øB:µ¶+å›’[/Óö*ù8æ •öœ/¤Nù+þßU#–¥–оÞÄIC¡ teâ¤t½Î¶l„PïOœ0/Hµ0 f\v ZþúDÕ_\¹·Üuûý¬YÑŽS# Žc,jÂ2½[‚(¹ÇÁ‰e|r¢-ªè€Ú€Œ¸fBÕ&ˆÆèº`ÀQKÒb÷låú4íåMi¦È§®^—µV¯o¹z;¦ó¥ê0Ýϳjë™î‹JµýJþ?"ª|§{µbj‡Ãuhhô! YˆC…fú hJ*p%ÏÝÒÆGq €â„¥Ö#¯K+5´“ç×4âòÍkðË߽гֵ¢6 b< CŽ+ˆ'G ’0¹†1UÇŽ{°®§/ï=‚ñHë×-Ãɾaô ¢¹¹ »ÛpøÈ)>Ö‡žE °ha;žõ ÀÚ5Ë+'lMõ“äL½D®7€|öËëP—²ó-«”ǽ’BG9ëQmCQåØ|Î,Ç~Uâs˜¨ââÖD¯ÖÉãj #T냡Aø!,Q„®˜Ðõ:„õ1DFO"×1¿naß\ƒc;9‚© íóÒ‚V F‚/HàŠ­kñà^Âî=X¶´õA`x0mßéãtóY1‰â¾‡~ ÝÐ0oÞ"<úèS€ŽÎ.zë0öíÝ 8³göì?ˆ]¯½ظi}IÚ¬hW#NuùR¼¸ú]ÌöR¾h—û ¡Ôa"³üRl¯ÔmV¬s +ýƒG©ŽU±Ê(æ6¼ˆì&†ðÇáA ½%Ÿä‡,ZÐM ’nÁ0üˆCE8ÇÉca„ê¢i%„ÕDDŠ#2ǰ¼syZÈ’| ˜hð[8kõR¼¸{Ë–vjƒÆ¢jÎZ^xá&›RuÝ=Dõô,*y«ýœ-/çsº~®n~§+«²ÝëÉm›™Ûñ:ìϹl¹®zʧl¯WPM¥¾ù¼ÁyÙŸr†Ã|öoªÏíB‚G®çm±÷q:ËJ[{}{]·Ðÿ#¢Ù¶Cˆ&¢qM‰“ÖEÄ.¡‹‰ûXIpìHâÿ(<Þ‰P]?^èÆhÄB­A‡P†cÆ t·Í… 0 ªžü®Dç¬jÅ­?Ù‡^·ãØHÃá#§ j¹ל9Í8÷¬ SÚÛ`­¯(­&D"aK‰'ÆT[ZÛªöéÁO§Äç+ÑTXTaœ85€7û±öÌ®´{[¦ò0:4ŒÞýˆÆ ŒEUŒELÄT=í+{ÞsîbµâÊ–,^–:™]³ÝCk`0Œ/}çQÜþ·±÷Í(v¼z¯ï;Œ¡ñhÎÚn8s>÷—J«› ÒOô²JÂÌøZ ûC+˽O'.è=vÜ>õW7L½g‹ˆŠ®œz[ˆˆ*Ñè˜ÀŸ,Â'§ô0dF$fŒMä¢ 7%Ýmxú¹×°cï <·ÿ0Î\”è9:9xM¡úÉ!&”¸âðð‘jü@ èGC]íŒk¯Y¶øæE|~Gò&¢AŸóí‚‚„ú P”ñƵA W͇n˜¸äü5ر÷Fc§—×@j”&ÂZúKµ‰™Ê¢Íõêê½…­YbØ"""¢™+W+1ô§[&=n4Á„nø GD(FbÚà˜Þ0:[êðÊ¾Ä‡ËÆšD€9pº\ÉåþY>¿¿\æ&ÅSýFc1<òèï`ù‚€ÚšÎ?kí¤å†™Ø¦•ôìŽ o [DDD”Ÿœˆ!±Xâ·– Z*ˆ0”Fœ:`¡V ÿïþߣ¡.„¾S£€îy§VS¨‚x:’Xf⦣j,=üÔe‚~4Ö˜9ëØ70ˆ#'&)Ö`ÑüAt´7DÀ.ÊMºýf¦’àŸR{1l‘§ûy|èßuQÛy걉aÁè8 ÈMô`EFjPÓ¦¨Aß©QÔ׈XÚD(˜hµ¡Zøý§‡MÓH¯7 v×£÷˜Šh\‡W Þƒ=¯¿Žæ³í·Ðàö•Ô’œ¨ƒU„áH†-"""òH‚e0§%Ñ+Õ70ŠæúÆTÈ€ðÄwAû|èO®ö: ‹$„B݇‡¡›* >¿„¶öô „ĉaDÓ4ðâžX³°Ñ˜Š·z‡°ç@û÷¿U5a§{·$étϔߟøÛ_˜Tû¨¦ãpß1ÌmnuÞ;I„%‹E_*hI‚– %.ÆdØ"""¢R‡-°ÄüŽz¼Þ„Æ´§N„´w1åMÔ†N'Ÿ_‚ž¸ãæw̓ß'Â'‹Ð5,AI ]/ïëÃç¶"– ªTM…¿&Ÿœ¸Wò6ÉÛF¾Ü÷Åêí=…_z“}>HÄ4Yô%zµ|>HAkжˆˆˆÈ3Að‚Ë—Êxù‘£מ‘š7>CLõ#K„Ÿö¦ZHmm¨ó'† CÁzø5¨oˆ¡)TyâÌxM7áóiе@*p=óÂaŒ†l\Û‚NœR0‰B¹Ÿ oiZZà2 ÃŽ ÂjOôcQGGbzÀ)€á÷×À’%ˆ‚‚(Á´ŠÓf [DDDä5j!9”8¿³]íãx½÷5¬ìZ=)hµ4Æ£µÎ‡ºÆVÔÕÖ£®¦ †©a4<]W'ÂO ÚWTážÇ_ŵÍ…ßWYºç´¢9à–ÎËZÃÚ@ÀužT{zž$ }>økk ù©Þ,Y ½Õ¶ˆˆˆ(Rªwëâs›ñã{¢Ö˜‹úÚ¦TЪ©1ÊA–´I·smMÓH=N®ŸÝ» ð®+–@2èh17ä  BÎZZŠáDÈ|ýÁĹYRMÉZŒa‹ˆˆˆòpºw«³¥ï¸x>~þ›íXÓy>$¡55&jü‰¡»:Ñ€<1ª'K‰?$ÑŸ,ÂГ÷¶ÒaÚØ“ÏÁs¯Á7oÚˆÚ@;4ÇÁÁõyÕT7²Ú‡ EQ˜ôu= [DDDTv‰ï”!5°¬Zœ·zϾ¶‹›×£¥±-Õ«•¸JÐH»‡–ai½^¿xd?î}|'>÷áU8cÑ(z,=A² ùeÛz¡ÈJôb™ X§{´dët˜,˜¶—ZeŠA [DDD”GÐJ –„$WnY‰ÎöcøÙC;0b„°9”¸S»,i鯢$B–|D ˜>ƒÃQüû=/ãÈñS¸ù¦ó°qÕ|(z ³–%A§v%{ª$QÈm‰òE˜¸zдûbÉ€f~Ò¿ˆša‹ˆˆˆ*‚9‘ºˆ0ÌDàÚ¸j>:Ú¸ëÁc¸ûÉ'pæ¢N¬9£‹êÓ‡þ„D$‚(Jع{¯¿5€§_| ç­lÁ×o¾õµ¡TÐ2 ©*Ú‹a‹ˆˆˆrJöjÙ{· ˆ,¤×üNàËá;zñÔÎ1üß_½…úÚZ„ꃘ×Öˆ¶f?D$fb÷þcPT[6ÎÁßæ,_Üu KÐ5¦¥@U5X²Œ€è|B¼ ¥ßW«÷ÄbØ"""¢ò-[à²`Á4-è† EÓ!*TM‡®ªD@qÆÂyèYØŠ°>½½c8Ø7 ` š,èï85VžQS @3DD†Dã t%U==¶ç÷‹ˆ¾Ô]âeY‚%Ê%@,õµ:`Mü-‰É;Ê‹¶!LaÚÚa‹ˆˆˆ¼¥-¦iAÕuhº -…®ªˆF èñÓ_”(DȾü’Œ…5X:¿}R‘º&b| P ºèŠ UÕ¡kZêüªÄ¹Y> $¿CHöd2¾³P’eºS’`˜æDà2ÓÎÉÄééùbØ"""¢œ9+9|(Š‚> ²$Á'×CÓMÔÖ©PµÄÀÐuˆVâÖšXP ºœ{• YR½Y²ÏH}}Ž$‰'‚• @²Ý!Þ©WKvìÕJ\8¥/8dØ"""¢’¦-;A„,²$"è€LÓJ8ŸøÛLý ¤ß®Á0,¦K7rnÞ”D]È IDATHßÉÁ¬Ó_:voÓŒ«3ïa˜Ö´5!Ã9ç¬<ó‰8‘~DI &—C§V2€™¶àdbnÜnRjR¢0ýíöø#¿fØ""""*•m—_é¶þðû'ÙBDDDD­X¹:ç2iakóù²Õˆˆˆˆ<Î/lyYˆˆˆˆ¼ÙDDDD [DDDD [DDDDİEDDDİEDDDİEDDDD [DDDD [DDDD [DDDDİEDDDİEDDDİEDDDD [DDDD [DDDD [DDDDİEDDDİUíZÛÚ˺^µ¶ÃVo¶ö§7áR¼!O¥Ì™dˆˆˆf&¹˜a`ðÔ€ã´Ì镤’ë6ëIDDD% [ÙB2t%{g’¿íóÝ‚…}žSà(¤L§@˜YÇlõpšç4Öuª±ê™­üBÛ;sÛ…3§v"""bØ*røÊ|ÃÍT¼¼9ç[f6nåL%$¸Õ¥õôºílÓÜÊuû»Ðº1l¤Üz;f)N}›Ù–cè"""†­"¿!{íÕpf³¸j}£.å‰ïní—ϰ&UPØ*VHsšW­ÃQ¥Þ'§öËgˆˆˆ¦¦h·~(æóL“ŸJÏÑtì{¹¶ÉðFDD³QÙÏÙÊÚʶž×+îò)³ûætu ½>^çMµžÙ½WËm›Nó¦r¬‰ˆˆ"‘°¥Äãl """¢)è=vÜ–-]–6½¨75uÃ^"""š-¶]~eiÂÑdü"j""""†-""""†-""""bØ""""bØ""""ª E»ñÁ_ÝËÖ$"¢Šqõ»¯uœnšÀ‘!Å„e±ª õÝ-2Ä éR*êw#~äcŸàQ&"¢i÷“ý»ë¼½'4êíÇË{AQu6V• øe¬ëY„¨Ú‰•ó|Õ¶ˆˆˆ*ÙÑA}'ñÒkðÑwž‹5ËæA6L•°, Ͻvw?º~ŸŒP  Z§?êTMØjüøNš6ú¿ÿ”Ï<"":ý¾7ñÒ«ðñwmƪ3æ±AªŒ ؼf1ü’„»Û…9í-XPõªªž­¯}ä©¿¿þ“ŸóYGDDi, ˆ©V,ËÆ¨bk—ÏÇz¡bÎÉ+iØzì‘ßà‘ß<ì­"²Œ­ÛÞŽË.¿ÂÓòþÇnÀÛÿÛ*>«ˆˆ(/¢(ÀâÙñUK’*kh¸¤aëñÇÁ?Üü-ƒÁœËÆãqü¿ûЧ°õèìÆy ðØ›ñèìN.Ë4 pøˆˆˆfCØ2 ÃSЀ`0Ã0r.÷Ðvà¢öeµ4`Yk3ÞÆ?ØïýÙÙè7&–e ^ººº§÷ööVÔqª§½Ž]]]Wç©ì_r_ìû5Ó÷‘ˆˆ¨äa«Øîùþv\>o5B- ÀÙoañP+àÍÁa„vÂúë–àׯ+‰¼¥»_Î;SÞÀ3ëi3=h¹íÕƒeYF¤²™1wÿÉͦ-4,,nnƲæfˆ±Z¼zçïpÅ  À¡åï§Þ¤ä´ÌßÉ¿í?NëdÎË6ÝKøÊU/uËVg§Ç^ö3W^ƒ¥S™^êBDT”Y†,ËŽÓK½M·m—cŸKQ·¿gåój¦T4à±7&<»°ÿþ´eH°, †nÀÔŠ£º\C\Ùæ»õJMu¨,W= ]Öë:¥êKË\mÅ¡F"ªºm4F–å´Ç•N3ëšœ6SöaËæSÿë=¸õK?Á¢æµŽó}m1œõïÇ};Ɔ¦e n=+¹@>aa&±‡›|Œ}9¯eØ{èfj{ÑÌç6Œ¨idY†–ñ>’\ÞçóMZ>9ݾN®ÇÙêbœm{™ÓíÓ2·­ŒdÏS¶²½¶£¦i°,+µ¿ÅØÃV}þ[Á?ÜøC¬œ»9ýÕ¢õ’·á—/H\ŒhéfÅ¡bÙƒK©ö«Ãu…öPq舦“S`Ê¢J½=/á.[Nó‹½åØÃV‘ýÝmŸÂ×®ÿ66,ÞóÅ?ÞöyH—_øøO'mW6NWÐÊ+Vp)å^¥`•ƒ[HñºŽÛïl¡Ê^ÎLk§Ìi4ÃÃ|ýŽ/àK»ð­ûJjºiš,í>[•Ö‹Rêó“¼!z"Ì÷<°Jm"ªÞ0¥ëΡ@Qâ€H$ ŸÏ‡H$œ6=3\ØçÙÿvûí$¹úúФå²m/sY·ÇNÛvª³—mºÕݾnf›Mu [Óä[?úʤi–iâÖ߃›>z]Þ!*yÛû<§s‹²ÍËÖce?9Þkˆór^Sf}³Õ­s¥Jq~•×23‡Hy®û­ÜΟJþ‡Ç²®“¹|æïlÛ ‡ÇP_JÛF¶íe;×+×¶êìe›žZ×a»ÅÞÃÖI’Ç=ßA^’¤)mï»?¾Æ# éòïd}£ÏÜBR>e:/ßzfëa*ÆþO¥¬BöÏ­ý®ˆ¨¨QË‚§°566ŠP¨!kpihhÄØØhÚòcc£°,kÒã\áÄK²o¯Ta+Û6½L÷¶²m#³Ü\guØÚvÙåøŸ_ûª§Ë?eYƶË.ŸÒöŒGþ:õ;[à¢Òá°ÍŒ´eº~ÓH¶é£#ÃhhhL›>:2¬ÜpLËBÛDi2lU3è¬cë)l}ð¦ïãOþü/qäd˜Gˆ(M7ðúÎg°í²+!úëpj4¿‹D6œ»;Ÿ{g_t̉PÐÒPƒM\‰·äk6J• øelZ³ó:Z± µ2¾('¯Z˜.ÿðmºŠ…5&|u>(Á ´ Á:Uƒªªˆ+‰ŸXLÁУ‡Ç±ò⵨ ñ<„Jô»ß?ŸúûÒ ÏI›n\Êmgn7sZ>åýê–ÞýåŸ{*c*ÛskG{{:Õ©XÛ¤Ê ØÃÖÄëæ¯··á]€¾}?®¼ôü¬Óíe™ [EÕ3LJZÿtÏë`¯aUþÿõÝ-•ó„SF`©ƒCqDdñ¸†XT¢ªP±¸ŠX<ŽXLA4®`ðõC¨i aŹ«ø¬¨0Om*r½°k{™íhoÏ\°TíKåãÖ³•tûÞ…¾}êï´µË'z¶Ø¦E=>"°¨MfCPe†-§OW€tDO©8µ |Ž¢¯oqEC<®"O„¬h2pżµçÎ na©×&3hd{|Ñùgåõ|³¯›ÙwÑùgáéí/:ÖÍ^¦Ó2™uËVïÌõ²í€Ôü§·¿˜s?еMšæž—ž­­ž›¸ìAkë…ç:ö‚ñœ-¢Y¶TÍp~P¿}=¡ ×W=Y±Xbø0KôjEcJb81®BðI¸þï?Á#09õÚ¸³BŸS¹æÙ·eß¶[Ý’’AË­î¹Êp[oóÙ\ëjYNíSŠmÒô²Ÿ³5W=­ã¶œ Yÿˆ¨Ê–[O”¢™ˆœ¿ç0-À0-˜É­,=[Q~Z«hÙz· ]Ï Î9k}ÖÞÍló’ë?ÿâ.×eœæŸsÖú¼ö%×6œêšÜF² 2ë]ŠmReñI§/77l_}òÂK/OêÕNŸÃuö¦u©i’˜(Ch¿>…hÖ„-·®ìˆh~í-¼tpÏ÷Ž W‹ÅÅçjÅÄbqÄ%q—¢â¢k.ÂÙ[92“e®›Êó©”óŸqW^õÎ,Ãm]§m9M/Áu*Û¤Ê 8 #¾´ó•´ •y‚|2pmÚ°v"l.‹Çºøt]ƒ®lÛ*ýÿ“e ²ì«®°µOðaCÐÄÂö:85†ÁáäСrzèpâöª¢cÑÊEX¾~9Ÿäî¬k]{hœÂDrw¼’ÜÎ?šŽ°•k˜1Wnûl_îů¤öû¬kSÓ ý?ó²Mª,¢ýy‡ó°nøöýذnMêo{›|5"ƒu±)ªŠ¾cÇðúîÝbƒTÓÿž(¢¡¡göô`ÁÂ…31l9Oïd¼  ÛCx›(B”¼¸ï¢±8bq±x"h)ŠŽE+âìËÎA¨9ÄË™+\¾Ç'06mX;éÄïÌð°iÃÚœåç (^æOµ÷-×6ìû\Èú¥Ø&UÆ'ëTxšx¢¯[»:Õ›µníêœÓíeñµ²x ]Ç©“عs¶l¹‹–,…$Il˜j9¾†ƒöãé§ž‚,Éè^Ø IžþÛ|íòûE?†L‹›K6-ÆÆsqçý/à­ã $Q@×¢9è:s!ÎX¿ -!~R›aËÂÆõk¯üs;iãú5žŽ­Ó2ömå:×ÉmÛ™ë{­{¶:ØOœ÷²ÏNmæ¶ÅÚ&Uاk[زŸ³µzõÊIÓ²MO–Åc]<š®ã•]/ãÒ­[±xÉ26H•‘$ g,ï,û°ý™gÐÞÑúPýÌ [¹NÈ$ H5€ ÂÆ?¿  (‡¦Ïúu«ñî/ÿë×þ„œ–üÛ-4x]ǾœÛö¦ïzù5×Ð’,3s}¯uÏU†—}öºNmQŒmRåõl 9#zM•Åã]Ü‘ÃÃCè^¸˜QÅæ/èÆèÈ04]«ˆú­g‹ªÇºµ«&ëukW¥=’³=?ÜÖÉõ<òRværöù™Ó½Ô=WùÔËË~8µE1¶I•!ªhØzå{ðø¯‰e«7£¶¾!¿õ#cxóµ?bë•ïATÑxÌ‹Ì4MH’Äv­b²,Ã0MXfe\É[”s¶ˆ¦ç*Û€*4lÅUÔýØzå{ðÛ_ÿ² 2¶^ùhº¨ÇûtQ‡¿üÞÜøîFÓgÍê•ø»;_MýÍç#U²ñ˜‚¶¦z\}Maihº‘pÔaŽÀÆ%bØ"""½Lû•ŽT8˲øžf² ]×ÙÓ¶zB§pß#¿gkU€žÐ)6Â4†“‚I)ÃÊt!9ãÖ ÉºØëŰV„°$.µä?8Ñtê=vÿ~Ç“l*[Ðr – W%[DDDÕ¤ÐaDMÓ Ë24Ms,ÏçóMZ>9ݾN®Ç^êê¶­\õpZÞm™Ó5-q…l²¾Éò’=`NÛÉÜÃÄ)0e Q¥ÚV¶mz xù„O/Á±Tí0ˆü× ""*,`ºNf¯P¥‘dí?”?ölѬ KzwW”8  Ãçó! §Mw $Éyö¿Ý~gÛ¦—é¹Ê«¯åµ|rÿ’œöÙiý\íÀ°U­, ªªBÓ4˜rWY""Q!û|lŒò½!|ÎVæzÉÇÉßáðXÖu2—Ïüíe›Ù¦g+/jH«_(Ôàiû^¶‘¹~®v`تRÑX ¼‰^xÇûŽóµ†ˆ¦$IèèìÀ9çlƲeˬ òþOåùì]”°566ŠP¨!kÈihhÄØÄw]&—…eY“—:ly ‹nuÏ7lek‡Ìrs=fØš!4UEoï1<õäØzÙåX° ¢ÈSÖˆhz™¦‰£Gà·=‚æ–,^¼Š¢°aJž¶ ÿÞ<·õ,ÓÄèÈ0Ó¦Ž OZ'×c§Ð“Yf¶m¹ÍsšžÜ¶SríOò·}¹\uóÚV@Íš°¥ª*¶?ó .¿â8góf¾ÐQÅXÐÝ9sæâW÷ýŸ¾áF†­r„\ 0 èÙš´ÞððÐD™VÚãÓÛ²²–áT¦SùNefÛ–Û<§éÙê­§íy­[>¶fЧÇ'Žcî¼y|•!¢Š³pÑ"œ8ÞÇ÷²™9_×ÓÒÒê8}hh‡‘a«ò†Á2"ªH’$Á0 6D¹¢–e͘aªÁSÎûÀ ½¶ˆˆˆ*8mñBbؚͺººÐÛÛˆ "*Qa˜ [ÕÌ0LH’T}a«µ­ÀäîÎÖ¶v×.ÐJ 6I½½½© cŸnŸï†Ü’S9ö²ºˆˆÊG466áè‘Choï`ƒT©ÁÁ47·@¨S‡f}Ï–=@e† ·@ee^BQ¡‰A‹ˆ¨¸|²ŒÕkÖâÙíÛqî¹›ÑÖÞQØ0UÂ4-œ8‰žëÖo@°Bn\Ô°5xj kOV²÷+¹læ4{™Ë¹-kŸWŒ´r÷&eö|Ù·mïeËìmË\Î-<2¸&É2æÌ›‹Õñ5صcÆÆFaðDóê9¾’„ÆÆ&¬X¹ --­¨©­­¾°å%Œ9…£l¡)ùØ)LMç¥=üdò v™Ëf±\årH’ˆ(!à÷cñÒŘÛ5ºnðª¾*#ˆ"ü~jkë*¦NE[¹z·Ê䊥X½CÙÎÿÊ'ÜQqø|~ø|~6Ḭ́•-peækªëç«X½C¥ Jn=ln'æQ„-· ”íü+¯!®Räs‚|¹B¡½ì #""ª %»&2óD÷R¸©„·Ù„=]DDDÓ£l=[S _NëOµ§Ëíê>·€âÖ“åv¢z¶ c¿…„Ó6ò©Kæ´|Ê%""¢¶œ‚Oæ´B–±?ή ^NÄË0\¶õ¼NÏ·ù–ÏpEDäN׵ĕˆ¼‹|Õ²,A–}Õ¶ˆˆˆfEUÑwì^ß½ÃÃCl*"Š"qfO,\X75¥Ò`/QqºŽS'±sçlÙr -YZQß¡GS<¾†ƒöãé§ž‚,Éè^Ø Ižþ¨3«Â–$I0yó:"ªÐ7 ¾é—ž¦ëxe×˸tëV,^²Œ R…ïóg,ï,û°ý™gÐÞÑúPý´×Kœ-@EÌ™3Çûúøl$¢ŠsøÐ!Ì™;K̲, ¡{áb6F›¿ £#ÃÐt­"ê3kz¶|>ÞvÁ…xä7¡©¹ K—ÁO‘D4í ÃÀ7÷ãžÿú9®yÏ{¡* ¥ÄLÓ„$I<9¾ŠÉ² Ã4+櫘fMØòX° W½ãj˲ Ä(qvÓÍf–eUÍ0¢,ËÐu½ê¶UMؽCDD³ž,Ën —é¶¥ÚŽ\ÆÛ$Û0³-ÝþžUÏ/þ‹MoÐÓu½$½FÓÙ㕜ƞ0†-""š¥2‡5Mƒ,ËÐ4Íq9ŸÏ7iùätû:¹g«‹½NÉõìë»ÕÁ²¬´y™uËV'·2æ9µ[¶öLÖ+Y‡dˬ£Ûö¶ˆˆˆf §Àä%Ds»Ù¶WHÀ˵_nó •+ô•³]¶Jû1ªªBÓ4Þ8ˆ*†(Š}>*ä{Üf3·áu·ß^ÂŽÓò^ë‘k¹|ê4•v˧N³É¬ [ÑX ¯8‰_?woõðèÑô¿K"t6àªÍK±~Ùk‚¼Ùf™B•žqwqE‰"‘0|>"‘pÚt§^ä<ûßn¿ÝdÎw*Óíq¶éNÛwš–m¿²•›)Ù^ör3ÛÐiý\íʰ5“þ±ToÆ=OíÇõï½+—΃,ñbL"š^ºaâõ}¸ãÏ ­¹+—4@á]äË`ò­Ü'‡Ãc“K±­“¹¼ÓyXNêëC9Ët{œmºÓö¦eÛ¯låzjå,uð²}†­FUUÜ÷ûýø«\Œ³zæñu†ˆ*„„Í«@–/ÆOxßúìÕ [åˆZVö 366ŠP¨!kðhhhÄØØhÚòcc£°,kÒc'öõí’ë;l¹Õ)Û~Ùç544ºnËm_¼„­lÛÏ,7×c†­ifš&Áò…|•!¢Š³|a'æ·[”-mMþÞ<·ïѳL£#é°‘4:2œ³Œ\ßÍ—m›™óÝêàVŽS^ËtÚçÑ‘a465;n+Wû$Û—öÔ®Smc†­2Ó “C‡DºººÐÛÛˆ˜îcI„nð²}·ÓÖ£2<<”ö89-±¬•öøt“—ÏUf¶å3§g«“½nË9ÍóZ¦Ó<·må*Ç©^Û5Wýsµ1ÃÑ´™þ¯ëiiiÍ:hh‡©Z>Lñ}oÅl;[}ª¹÷¡«« ªjÿ¦r¼Êu¬Ù£E³:jYÖ´? žÈ^GÞ¢¨jmL­µ­=ëôÖ¶ö´/ëVJÈ5­”Û.×ö¦;”ÌÄ7ýR›j?öDÓœ¶R_FÍŸêü©$eíÙ²§øÖ¶öœ©¾ÚF¶iÉ¿ÙóPÇ·¥<öìÕ¢YÝË Š0L‹÷3«b†aB’¤Ù¶ QŽPfïAH¾eö,õööºN³ÏË|“,äMÍ©ü\uõºÍlûš«\û´Ìß¹ÊÉ6Ý©Ýê’m{^¶é:²?¯u÷ÚCå¥|·¶ÎUF¾ûO4Û‚€ÆÆ&=rííl*588€ææruï¬?AÞ-¨8§iù†¯=nC˜¹êšïy_ùž;æ¶œÛ:ÙÊw OÙêâeÙBöÉ­]ó©{>=H^ŽU1êÈž,¢É|²ŒÕkÖâÙíÛqî¹›ÑÖÞQØ0UÂ4-œ8‰žëÖo@°B¾«¬aË~n–×ÞªR÷j•z¸§˜op•öfYîú”j{3!„0(‡$˘3o.VÇ×`׎…ÁÑ«çøJ›°bå*´´´¢¦¶vö…­dpªÔâË¡T½^zJì=få|󞎽‹µÍ|ËÉÖãVªætL³m“½\4Ûü~,^ºs»æB× ^õWeQ„ßïCmm]ÅÔiZ†O ÌêäKâ¼®r¿áNÇ{±¶Yé'º»S†)¢ì|>?|>?‚Ê¢hgŽ%”]1ÕLï›îË÷‹¹ýéê-*F™öùSÙ~1ê>“{úˆˆ(EíÙÊ \Ù‚VfïVf¨ª„^/§!§iåºòËËUƒÙz·œ®ZËv ÓpnoÚnåd+ßk^–Í<.Å8&¹Êñ2,›Oûf+ÇË•ž…”KDD3,le INÓ“Ór…²R†©\Ó ]Æi^!çkyÊV·¿ ©®ú³üBŽU!ór•›+¤x¹ 5ßz:µq¾m;¿‰€ˆhÖ„-ššjüêšR·•×`DDDİ5åó?Õ^2BE·ÕL¸5Ÿ_DDå'Φ•%ºÁK|‰À*n˜%‘ Aİ5ƒwT±hNÞ8ÜÏ£NDçÃýX4·&ïùDTufÍ0¢Ïçõ.Ç~þ®ïX¹t?EÑ´Ó ¯èÿxŸ¾n3TEa£1lÍLþ@Ë»[ñÑ«Ö㮇þˆ#ý£R$¢é–Dtw6â/Þ¹ «–ÎAt|œBİ5sk‚8keÎ[·¢È^-"ª ¦iBSU-"†­™Ï²,(qJœÝôDDDTìÞ!"""bØ""""bØ"""""†-""""†-""""†-""""bØ""""bØ""""bØ"""""†-""""†-""""†-""""bØ""""ªP2›€ˆˆfË‚ªªÐ4 ¦i²=ªŒ(Š}>†-""¢éÅ0:2ŒÇû‡Ù U´êêê0w^š›[¬ ²,†-""¢rÑT‘pGÆš5ëÐÒÖI’Ø0UÂ4-ôïÅž=» 5Àïo€¢( [DDD墪*úzbíÚ hmï€iÐu SEÚ;ç@%ìß¿ÌݰEDDTN¦i"‰ ©¥†¡WÄ_cs3"á0D±2®dØ""¢Y¸$I®´Ì‡ IDAT„®ilŒ*%‰bE]üÀ°EDD³û´ˆa‹ˆˆ¨”I‹CˆT&¼©)ÍάUÅ??ð«ªßÇ\?•„=[DD4;ãÖ êÙúõƒ÷;N¿òêw¹® 5àî»îL-óëïϺ<1l1kY3îJÄ÷èÏ§Ž¸®sÅ;Þ‰PCcjûßİEDDDƒÕozÀuúïxgjþÝwÝ™ aİEDDT2–…y-§:?òðƒ¸üª«ÑØÔœš– UÐÐØ„˯º<ü`ZïØèÈ0Ÿ [DDDä ’.¿êj@cS³çðÄŰEDDTrº¡CUÕUg·s¶’²í}ÞLÛo†-""¢™h†#žì?á¾KYöÇ>_QT~¼ÏQyò·¼l®ÇTölѬcaæÝúÁ霭‹/݆‹/Ý–6ïâK·á©ß=ž¾¿–•¶ÜÅ—nKÍë蜃þÇ=?&†-"""ikf…­‹.ÙŠ9sç9Î;q¼oÒü‹.Ùšö;¹¯öå’ëeÎÏö˜¶ˆˆˆªÒÓOü6kK†§Ì–mz¡‰a‹ˆˆ(§™vŸ­ ·\йóº\çïëåAeØ"""¢©` bØ"""šDQœ‘'ÈSþÇ™a‹ˆˆhÞ€ëëëqêäIÔÔÖ²AªT,E}(Ó4+ãyÇCBDD³…ÏçCWW7ÞÜ¿‘H˜ R…"‘0ÞÜ¿gö¬„ª(Q'ölѬáÐÐØˆž+qðÍ7TLïM(Ѝ¯«ÇÊÕkÐÚÖ†èø8ÃQ¹k‚hhjÀ¼ù *ê¼*Ó4¡©jÅ-†-""šu,Ë‚W Ä6•#=ÃÑÌÄaD"¦ ÒQLðV<騈èn‘‘ët]× ëïg4© ȲYö±1ˆ¶ˆf§½'4êíÇË{AQu6ˆMÀ/c]Ï"DÕN¬œçUEß±cx}÷n ±á&ˆ¢ˆ††FœÙÓƒ "°Qˆ¶ˆf—£ƒ:úNâ¥×à£ï<k–̓( l$N,~îµC¸ûÑðûd„mXÐ:ùeÄÐuœ8‰;w`Ë–K°hÉRH’Ä`اŸz ²$£{a7$™/Åe~"CUUhšÆÛ>TéÙçC ‚>Èð?œ(ÃhÜÄK¯ÀÇßµ«Î˜Ç±›×,†_’p÷c»0§½ –Ót¯ìz—nÝŠÅK–±ál$IÂË{ Ë>læ´wt >Tφ)£h,†Ñ‘aœ8Þ‡p˜76­¶ UWW‡¹óºÐÜÜŠ`M°"Nc`Ø"šü¡1UÊ¥sÙ.Ö.Ÿ?ô‚ëùl–eaxxÝ ³±\Ì_ÐÑ‘ahºÆÆ(#MU ‡qôèa¬Y³-míìu­"¦i¡ÿx/öìÙP¨~” ¸‹<Ñë'$'v»¤Üê¦iB’$¶¡Û‹¯,Ã0MXÆ*+UUÑ×{k×n@k{LÓ€®ó¼ÌjÒÞ9¢(aÿþ}¸`¤‡öaßá^Þs‡Žö-èĺKpæÂ,]t&Ÿ=DD4e¦i"‰ ©¥†¡óÃ@•jlnF$®˜o˜ö°õìËð›'váÜ =ø³÷\†Å :aYÀ¡cýxeÏAÜyß.\±EÆæõKùì!"¢¢.I¡k­V’(VÔÅÓ¶¶ï:€ƒ‡ã Ÿ|tuàÕ½ñ«GŸl»p#þôÚ­¸ðœ5øÕ£Ûa8‹ÊȲ,~êež~±”e7UÛó“M@Õ¶Ú‡GžÜ…¿žZ·ÞqÿýKèlküô—ã¦ë¯Ãen»Þ~>¾óoÿ…Ž&CŠTýÿ”·°¿Á;½áϦ­mˆòNZü0Ee2mƒ™{ÅpΆ,èêÀÃÇñøï_šKð£ï~ ?ºõKèlkÆ?}€]8{CöŠñˆQÕ‡ ]×Ó~ä,÷`šmA+³mˆ¦”µøSÕ?õú5]~eÏA|ø½—Á´€Å çâßú%€ ÃP_[“j°µ=KðÓ_>†«·¬ç«•﹌Ÿ|}>4M›´MMÓ Ë2´‰óK’óÝ–¯Æ6̵¯>Ÿ/­½ìë8ÍË\'s=§éå~>PâVÏ_?xÚã+¯~U5|Xœ® >Öó;S=¹ÇÇß~ãÀg?ñ¾ÔÿB÷‚Nž¸R‘h¶K rQ™+sž[û9Mg[Wí'©Š ÏïÿП¥þ¾û®;qÅ;ÞÉãŰUðó<ùÙ"õ;§‚Ö?~õz,éž éË1hñÍ¿F4“ŒŽ¤þnhlJ=þÍC¤-— bNÓíÓì-[™Ëe+Ÿf@ØZ¸ ‡ŽôcUÏĦàÀá>ŒGãø“k·aQ2hY‰y‡Žô£{A'•õZ/óݽ%žs^$†ÏçC$žUm˜­mêëCŽË:­“m^2Ìæ»Í<–UÙÙu³, <ü .¿êj465§¦ß}׸üª«Lî³/›|œ«Œ†Æ&ŒŽ §½Ì²2ס [«{–àÕ½O‡- hokƯ݆•=‹=_7©,àÕ½±ºg •óå®ì/ÆÙ¶—œgYÂá1ÔׇÍš6t+'jHk‡P¨!­­²µ£§6͵Q1Ý}ש¿3McSsZJNK²ÏË\6¹œ[—_uõ¤P–k»™Ó¨ÒÂÖâüø¾]8ïì5XÐÕxò™øÙ½ã×lêž%¬DÇÖ‘Þ“xa×^üù5<9žª÷“ïØØ(B¡Œ¦MohhÄØØè¤7|·å«± sí«S/@¡a+sz²ý¶ª‹nèPUµ"ë–졺û®;ÑØÔŒ“ýŽAÌIæ>¹í£Óôä4{(KnÛm»•Ú† [–.:5ˆ‡ÛŽw\v>ÌëÀ•oþß½cË…+qeâ±¾“xè±í¸ø¬¼Ç•9)”ÿ{ëFG†ÑÐÐ8iš½ö¿“ËWì§Ë"¶¡[Û8MOnÓiÛ–iæU–½ýù=†Õôÿ]Ùáùdÿ lÙzî¾ëNlÙzÙ¤ æþÇÊú8ÛôlÓܶË ¶`Ûçãñg¶ã¶ÿ/lZ߃Õg.Áÿåk€×ö¾…×öÄK»öââ³`ÛçóhQY™`Nà ÉððPF=¬´y™uršV­mèÖ6NÓsµU>eUz;Suë蜃“ý'Ò‚XÒ“¿},-ŒM•SÀ+Çv¶Ê¸Ï߇Wߊág÷=†#·wè^ЉÕ=Kðç׬gMÛG_~jcRÕ>3gÄ ò_º wßu'.¾t[êo»‹/݆ŽÎ9“Ös{ìVFæ²sÐâxÖuìËP…‡- 1¤¸tpÍ%<'‹*ëÅŽÃFlCªÚ'gE†­‹.Ù:)ø\tÉVtΙ‹ÇûpÑ%[1gî¼´u’Óíëe{ìVF®:d[‡f@Ø"â‹1Ûˆ€§ŸømÎ ær2§g{œ+(9Íg¸bØ"*:ÓdPpc¹ÛEElÃ,mhB’$6Äô}¨Èçæ…[.ÅÜy]®ó÷õòà1lÍ|‚Ôø}ع÷(z¶²Aì;2ˆ¿‚àÖ†›pôÈ!´·w°Á  ¹¹‚(²1ˆŠa‹hvi ŠØ´f)î}j/®¾`9Vt·B’6 =Z{Ž âÁgÞÀyÏDcÐ9(ød«×¬Å³Û·ãÜs7£­½¢È6=¦§Nâ…çŸÃºõ Ø(e&ŠbÅŸ OÅ9Î [DjA«Œ°ÒŠMk–â7ÏøÿíÝp›õçñô<ò¯Ø’íÄNc;NÚÆ ?vÛ¥N¡I°ƒ 0]¸a»”#KogÊݱÜÞõv§×ÀR(Ù-3{W:·777ÓÞq×ÍNn:ChéÒ”t[h”B)äHLÀI ?e[NlY?žû#‘úXÑ#=²~X’߯™L¬çy¾?ôÕWÒÇß籤gyˆA±©­1õûkWhiûBu-Lÿb˜¦–,íК©µ:°¿ÆÇÇãBù‹cc šµjõ•jm]¨ú†¥ÄoÀ:sêc_Å&/\PcS“âeòºCØÒè[âSCÍu/m¿üÎäñHµ^u·šYBYzWôª£³CÑhŒ¿J´¡×«šŸ0%æóùÔÙÙ­ÃïRïŠO\ö½š¨|!½ä°Ö^}­¦ÃaÂP¾¿ýJËñôÈÿ­F>_ ²QS[+  ¾U«5|ø°&ÎO”Íê ñÚíUã‚F­^³V -Ò…óç [”Z]}üÍ~-½¢«¬®ëAaÄãqE¦§Ë&h¶óŽeY O…ž 3( "=a €°Âa €°Âa €°Âa €°€|äôEÔÇ0bÅ[þgÿ–Ñ(FØzô±mYyîÙgô'ú•Ûþò«®ÿò¿sÝ™\ŽÿÚŸ>.IúÛ'·J’Œ¡oë?þ«/ÊcIòHßþßO)¶ë/2ÖÑÙÙ©ãÇ»ÞæöøLÛݔɵ½b÷/[½nÚŸÍx¸íS.ívvvJ’ã>§:s},È)l•£DȲ³âq=ñýè«÷ÞY”6oЩÛ2„tuäRÓqöí‰m¹ö¯Ð÷;Óqn÷9õ7µ|ºã¦ÝÔ¶Ò=FéŽËÔÿLý ¨aË0 MMM©®®.ë±SSS2 #¯ö¾óý(¶ë/d }ÛuˆÈu›Û7ÓlÇejÇM{¹nÏå8·ãRˆzs©¿Pu»}<3•+t ¶fepÓ}øAE£Ñì1M nÊ«½ÄiÃ\f/Ûj(rØÚ4t³6 Ý\’;’z}V¶ëµ*A¹‡˜réaPÎøœ-Âa „-Â@U0À|FÆdYƒQe<LÓiú[Ì…ðô´N;¦ß¾ý¶‚Ás Hñz½òûZÙ×§®žÕÕÖ¶(¥X4ª3§Oé7ökÆZ¶|EÞß^‚2z|c1 yO/½ø¢LÃTwO· sî£a 0oD¢Q<ð¦nPïòO0 UÆ0 }òS}2MŸöîÙ£¶öv565Îy¿¸@0oX–¥`ðœº{zŒ*vEW·ÆFƒŠD#eÑV¶óJ<—a\_ÅLÓT,——EXÙ lT&N#æ˲8ˆ’ae €1M3ùo.ûOÓd†°@™ŠF£3þ¯´~£H˜!ÌGÅ<˜¨Ûç›ù•1‘HdƶH$’<ÎiŸS=©åìå«Sö:ìRÛÉVÞ©ýtu°@I¥§ÛNûR·g*çt¼SÙt}ÍÔG7}Ãå8@™…²R”Cé°²˜—Á&ZÄO‡§ÒþœévêöBìKgb"”<õ71rÕçÔÓˆ‰cœêa 0ïY%¹f+õçL·Óõ'ß}NB¡qIRccSòçL}N“®tu°˜ïQËÒ¼[ÙêÉÖg¿? ññ1ǺR÷g»MØ êÒVq¾7/ÐÜ’ c£ÁKMÅSšNÛïÌØ>6”kl4è¸/]}öã}H×G§zRËgjß©®\î7a €*·¤xV¶‚Ás¶6,ƒçf´“é¶½l¢|ºzíûRëK=>Ó¾Lõ¤–ÏÔ¾Ss¹MØ ê”æëzZ[ºï_DØ j¢–e•ä4ÖÙ3§Ý÷iV#lPýi‹•$¶(¯×«Xœ°UÍb±¸ à lPjG@³F><ª¶¶v¤J={Z--­òxËã‹r[€yÃgšZ³ö*½¼w¯®»î³ZÔÖ.¯×ÃÀT‰xÜÒ™Ó§ôÚ«ûtõ5ת®¶–°@)¦©%K;´fj­ì߯ññ1Ÿ0½z_ÃP ЬU«¯TkëBÕ74¶(µÚšõ®èUGg‡¢ÑXe<^¯jj|jhXP6}"l柯F>_ ’ð2„-Â[%Ãò€y'\üKD>E¾êx<™¦!Óô¶˜ áéi8vL¿}ûmƒç*âõzå÷´²¯O]==|¨)¥‹Fuæô)½ñÆ~mذQË–¯(«ïÐCžo,¦á#ïé¥_”i˜êîé–aÎ}Ô!læH4ªƒÞÔê]þ ¤Ê†¡O~ªO¦éÓÞ={ÔÖޮƦÆ9ïÈæ ˲ žSwO/ƒQÅ®èêÖØhP‘h¤,úÃÊ`^‰Çã2 ƒ‹ã«˜išŠÅãeóUL¬l¶*§óŽeYœFa €Š{Suø˜h4Z²ösmË^f6åAØ ¤*-¬®[E±N#:Õëóù‰D.»mÿ?!õ8»Ä>§ò‰Õ5{©ý°×•­¼Sûéêa €9“lÒ/§ æÚì?;Ÿ)ð9õ/Óñ™úÂE—º”2Ù‚Øl[”H$¢h‘>]|b"tÙ¶px*¹Ïçóib"”Üfߟ®Ìl÷9õ-íýÌÔ—tá1žr¬ „-$Y%¿fK’ššü …ÆÕØØ¤Ph«Emíòz= L•ˆÇ-9}J¯½ºOW_s­êjk [”’ašZ²´Ck¦ÖêÀþýSŒ‹Ó«çñ5 ÍZµúJµ¶.T}CCõ…­¿ò{<Ò€²V[S£Þ½êèìP4ã/«ŒÇëUMO ʦO [·ýá<€ŠàóÕÈç«a P^†€°@Øa €°@Øa €°@Øa €°@Øa €°@Øa €°@Øa €°Âa €°Âa €°Âa €°Âa €°Âa €°Âa „-Âa „-Âa „-Âa „-Âa „-Âa „-Â[„-Â[„-Â[åÀ,t…Óá°¦ÃaY.÷x<ª«¯—iš<€°•5lMOëà[õ«=/eoÜ4u]ÿ: lÒäädEäÂEm’¤³gN3«Š<ÎùŒq¦òùÖ].÷Påa˲,½òò¯ôècßRm]]ÚcFGGµsçN}é®»´í›ëæÍ·:†­Dˆ)ç Sˆ7ÇJ}ƒ«~—Óx3–Óý®Ä9JpP•aK’b±˜cÐÑÝwß­ááa­\¹R±X,c]gÏœæiç÷›1€y¶œ„B!ÝsÏ=zÿý÷õÐC©¿¿_?|æéYý¶š)”9­†¥–Kì³—³osóF“8Î~1SÙt}sª#µÍÔ~ºío¶ÕÁ|Æ-µßÙ¯tcžË¾t+ÙúçT>Û˜Ìöñ/Dùlãææ>¸ó™ÚÈ4ïÜ>™ÚI÷žísw¶ó*:l?^ ,HÞÞ¶m›>¬­[·êþûïŸUN!Äiº7§7l§7§mé‚Q¶²éú6›Õ;·mº­w6ãæ¶þtõfj3Û>7ËlÛÍ÷ñ/DùÙöÑís%×1ÎgþekÇÍ}œmý¬Š(Eûè‡íÛ·k``@###’¤}ûöiÇŽZ¿~½xà¢Ý¡Ù¾°VÚ r¡û;÷?S›ÅìO%<Ö¥èc¦j_r ‰år_SÊ]QW¶Ž;¦;ï¼SO?ý´yäÕÖÖêñǯˆIwª²eó©w6mÚß8çòÂêjz Ë%Œ¹y\Ëý~TËãs¶¶lÙ"IÚºu«úûû%I÷Þ{¯zzz*b`ò &n?Z o nV‰æâ”J1ïs1Û­¤Õ/·§R+«W*YQ?A~Ë–-3V²î»ï¾Šýw®WIr­ƒ•€Êœgår?Êýz'æ7€JRô¿FL¬píܹSË–-›õ‹jêE¯©o nß<Üü¶œË±¹”ÍÔ×ÔÓB¹ÜÏLmæû9eÙÆ"Ûé¬Lývû”³y¬fÛîlÿl]®ås ŘDžœ#sY9œFÏÄDÈ OM¬ÂÐø¸¾÷Ýÿ¡‡Ù6ã³¶N:¥ööödž§¦´í›ëÑmßÒøØX^¿åòBZy+,åþIîäâø±ýè‡;õoîÿw3¶|eËãñ¨Ýçô×}CÑh4㱦iªÝõ®ƒ/åoë…Pð°UßP¯›4´ùVw,Ká©°ãî|ÿìåi®>ö€Š[†ajjrRSþÅÒ…àe[„-¶[„-¶[„-¶[„-ä¡à_D=k:–åòxÇ£ºúz™¦É£[YÃÖô´¾uP¿ÚóRöÆMS×õ¯ÓÀÀ&MNNòhØ,\Ô¦³gN'ÿ/v; B–eYzåå_éÑǾ¥Úºº´ÇŒŽŽjçÎúÒ]wiÛ7ÖÍ›ou¶f J&RÛ«ö0S¨ûGè¶r‹ÅƒÖÈȈî¾ûn kåÊ•ŠÅb9½WÚ›2‚q¶J& éž{îÑû￯‡zHýýýúá3OçUgºðef‰Ûö7ôÄíÔ7útÛíÛRW¬œÊÛÛ³÷ÏM»N¡#—³L}ËÔN¦c2Mêøf«Ó©öñrú?Û8f:–@¨º°uþüy-X° y{Û¶m:|ø°¶nݪûï¿¿$«%nBŠ}[¦c³—iå-S8*äiÇl÷/—ð–m5ÑíJ£Û1usL¶ã³ @©í£¶oß®ŒŒH’öíÛ§;vhýúõzàf RWFæ‹Ô•¤j©÷-—ûJ¸”›¢®l;vLwÞy§ž~úi=òÈ#ª­­Õã?^WÈÀWȺì¡,ÓiÀb÷£Ü*! PuakË–-’¤­[·ª¿¿_’tï½÷ª§§gÎI!ÂQ®A¦uÙCFjÝnÂF5N)ª6lÙ×׿þuIÒ}÷Ý—wq³½Zò¯1ÝÔC@ ÌÖ=píܹSË–-+ZqsÛ~{jù´é´Ï^¯S»…¾-Ý_ß¹¹Ï™Žq»¯Á,—Ç¿DTmØ2 Cá©©ägmmÙ²ECCC—žš’aYß\³mÏvAµÛ ®s)—éÍÛé8·í¦†™\ÃH¡ÆÑm ÍeŸÓm§û›ilrm €ª[Gýë>§¿~ìŠF£™7Mõ¯»žGÁ¥J<­çvÕŽ` l¹TßP¯›4´ùVw,Ká©0D•B€°U`†ajjrRS|±4@ñ>Ô„-Âa „-Âa „-Âa „-Âa „-Âa „-Â[„-Â[„-Â[„-Â[„-Â[„-Â[„-¶[•Éd g÷®ç [Å28´yÆmN#a  ˆ8P@\³PD\³PB„-Âa „-Âa ™ñ9[fìº]ÿçÕ…ZÞ»ˆ°Pè n¸BöÍ{$q  Â W¨uã=úÂÃçd…' […”Z;ÿª^± „-€B{ö¯¿0¡Ø… ®Ù($+<¥Ø…âçCšþ5a  bBŠ]˜Ðäð¯å s þçû¡&¼&_hX±¡„-€BŠÇâÉ %ñÑ… [–• Z„-€"#lП|ãIÂ@©Ìøè‡w~ûFÀ¥U«×ä¶>»îF À¥±Ñ`naËM¸Ç5[„-Â[„-Â23€ÂÙ½ëyÂ@± mžq›ÓˆEDØ l¶‚ ää- –øÚ IDAT(ɲ,ÃÆãñÈ4 ™¦ïw-KÓÓÓŠD"ŠÇã ’ý·¯W¦Ï§ÚÚZæ\!çcX´1$l(‰ðô´N;¦ß¾ý¶‚Ás ˆ-8øý­ìëSWOê.ˆ ““ êãN( 1P¶ñZ°`:–vª¥e¡êêëCs.·9Çg [J"êÌéSzãýÚ°a£–-_!Ã0I±XLÃGÞÓK/¾(Ó0ÕÝÓ­x<®‰PH##híÚ«Õº¨ñº$·tò£ãzç·ÕÔäWM_áp˜9—çœ3L“1,¶”L$ÕÁoêÆõ.ÿbc†>ù©>™¦O{÷ìQ[{»<éÄñ]uÕµZØÖ®x<¦h4Ê`]Ò¶x‰¼^Cï½wH×wlH¶˜s¹Í¹Æ¦FưcHØP2–e)<§îž^ÃÁ]Ý *È4 MLL¨¹u¡b±(×ʤhiÑD($¯×Ëœ+Àœc ‹3†„-%ÇeÁÁéEÖ4‹ÇeÅã’a\/¯¢‘ƒ“neÁëÍú‡̹æcX´1,›°uäè!ú`Ro¾3¬£#'%I˺ëêU˵²§^+–­ä0/ñÌ£ðV¬Š_~óˆ~òóºîÚ>mù›ÔÛµX–%=vRßÖötóSŸ½f€ù—´XQ[ùØ{àˆ†?øHù¯ÿH]ízëÝa=ûÓ—%Iƒ7üžþåºáÖêÙŸî•%©ŸÀTvv°¬Š?ašfÉ.V·ÄÊÖ|šs¥œ[óíy[îcœPðO?rôvýâ×úÂMëÔÕÙ®'¾ûý§¿ùž^xéu½ðÒëúòWÿV?ýåëêêl×nZ§Ÿüâ×:rô¯fõ›ú¯B¢ÂÅ•­Yþ{þGÏêù=›v{¾õæS¾`ÿÊl>¹™W•3÷J7~(bØzçè¤þàÚ>uu¶ëÈi÷/_×ÚUËõäw¾¦'Ÿøš/jÑwÿá9Y’º:Ûõ™kûôÎÑI ³Fgü«ˆùK+ ³ý—Ðä\¶=u[®õæS¾PÿÊi>%¶¹)7߃Vº±C‘ÂÖÁw†µvÕrÅ-©·§Cÿ뉯é?|åNÅ%M\˜’%©±¡>¹Œ~Ußr|g˜G¨pÅzã5M3ã›r¦möß²SëLÝ—ZW¦vË!<|ñî-zjÇvÇý?ùñfü³oO=ÎþÿS;¶_vLºã«qÎ9Õ™˜ öÿSçUêÏéæ–Ó|œËÀZ¨çh$ɸßi¼ryŽfÚ^¬ùP°0ZèÉÿÁ±“êºbqòúÏöE-’¤#|¤‡¾õ]IÒ¿ÿÊ%WŠ»»ëƒK© >ßÅï%‹äñ ö²>ŸO‘H$ù¶¶#Eüh†‹gË óbî4kl4xY ºå6š[’ÛžÚ±]C·Ü¦¡[nKîßõOÏiè–Ûä4'oñî-É2©õJJ–Oü<çeºy•mî¸=®9Ýo§1q;†•4Žf1^D¤ß]üiIºpa*´þæÁû´¼»CqÍ<f²ǧ{a/Ä›i9ºå¶dˆJhn¹,,Ù·%‚XºãÒ…¬ÔvÍ-É•µj ]ÙæÓlçF„ÏU›×cRð°ÕÓµXG?<©+û.}2­G:òÁ ¿0¥/Ý1¨e‰ e]ÜwôÓêîZ̬*üE3Z€OZnllÒÄÄÅ/g‡§\•Io³Llkllš±/Q§S݉²nÛž­h,ªééé¼ë™žžÖÆÁ›´ëŸžÓÆÁ›fìs:Ř(óÔŽíÉ2©}qÓ·Ó§NjãàMjk_<£®J›sÙæSêœI77ìû&&BÉÀf¯+S¹JÞf»/¹<Ý>–|Q¶ßÎ5l¥Û—íEÙ²,©©ÉŸµÝr²a`SÚ•,{øI¬„öÅK’ÿç’ì!+QOiƒVaç\¡ÃV®û*ýy›í9“ËóÐÍsÔÎï$ÛWakŲ•úü§ÏêÇ/ìÕ­›Ö©ki»6ßô9ýßgvkà ¿'YR\Ò±§ôãöjý§»øÚ âÓVá¾C,!qÝßÈx ‘߸¬œkl4xÙ>§í‰ú÷!qL¶k—òXO(øÊ–Ýú/ _ëoTûâ%zjÇv­¿qpÆq©·?§óâ?ïÖúµxI‡$éäÇUÍœ³Ï§íéöÛ÷Ùÿ(!1³•«†ç­ÓóÊéy˜iLr©+ÛWmØ’¤Áë×i÷ž½ú»ï=­ß¿¦OkV.×÷ÿûÃ’¤ß¼û¾~shX¯xWë?Ý¥Áë×ñFT¸¸%Å‹ô[e0xαî`ð\š¾XŽûûÒmOm'S»…XRÈ'l}~ãÀeaëó´¤cir»ývÂÇÐç7hñ’}üщd¹ÔÛ‰r‰m©mÛ¯¦9çô˜'¶§ÛŸºÏ>·ìóÍ©\5a>Ï·Ô1É¥®rÏ’‡­Dàê½âÞzRÿ¸ó}xé㺻kMßr}ùökXѪÆÜ|ekëBÇ}çέÚÑ~éç?sÆœQêöl·³•¯–9ç4Ÿªw.UÏ×õ”»¢~ÔòŠe+µb™tûF®Éª:jYÖœ,áŸ=sÚ¹Oe|J!ßkenØp£:–vf<æ£Ç™sšOå<—*ñyKØ€Y¦~C.­jSÌ9ư—x½^Åâ¼h;‰Åâ2 cÆxYœ¾É:§˜s…›sŒaqư $<f|xTmmí HgÏžVKK«<^¯¼^¯uæÔ)Õ7408iL^¸ Æ¦&ÅNo1çr›sŒaqÆ0Wƃ>øhŒoç0›°%©®¾A¯¾ºOÍÍͪ¯oÇøHRÏ %¥¥}±]ô…/YxøÐ(c «òB"ï>Øõ曫.»üªºúú´õìßÿÌÓOœyæ|"*.)9¢§xÿ½wßxËm½Q€ü ÂDâ7^õ™‚DTZV6aBã+|iÊ”c‚¡Ð¡’ ÆÕ‹ÞÝA½G–÷%“½r4©°õàAYWUµ¢*8qjù´ãª#‘6-uõõþgÖÖÕ¹FžW*{]ËK»´©­wR—eE’åýÝ}ë7}6ecdþü¦É“«°%`„q7èý¡Ò•¤•¯/VŠŠ”¥¨4 ÉŠ,ËIINJr"!½ûîžX_ß?]>»ºº› ­xˆ¾÷½;°*²’„¶‚ë¯»ŽˆûùÏ=JŒý¡¼§ŸS)ô‰Z2©$â’$Ë’$'’r"™L$¤xRúÛšMM‘/\4[Fƒü!ÝqÇw]ßúä}gpmŒÆLQ~ýu×Ég¤ ëˆ~ƒPOªRÔgJ(ÐÝß»·'))ɤœHJñ¤7²0!½ýÎ΋.œŽM£‡í—%ÓÓ­ýÔÇ)Ü>:„œí÷åÑÇ»áúëmøècÙ~¡284Ê·æ¤ ‘È(8¶²¶yœªéšÎTM×4¦i¤jºªë}Ñ~ia”á~ôÝ~ûwŒÆkã…YâÝ:Ȩo–üð‡?rz´lŒª$t–™Yh¾uÑ=UE¶ÿº•­ÙüÚ>)–T’’OJ‰„œH&ã )žLÆR"™L$å¢bዟ»[FÛ/‹ùöG?zèÖ[n"¢Ÿ<üˆñú'?BDF¡QnÖÿÉÃXËú¶QTEv¶àÚ²9i€Ñ”ƒü¡ßA%õo«Ë Îñ[œ²G¨izßéÇN¤3Òt¦}Aô=‡Fo¹ùFë óµk}[e[5æÛŸ<üÈ-7ßèÚ@ÁãyîPZifám·Ýf­sË-·üøÇ?6ß ‚@DÇéºÏË'ŠùÊw¾¿ãà;í=ñ¤œH$ã‰d<)ÅR"‘LJRRR’’|ÓÒ3ÙÜS°IA˜QùOyÔ£YÛ(ÿôg¶š7ßtƒÑ‚1èæ›nÀvQØ%4þ×õ{Þ~û퇎‘üÈ|{Ûm·oÍ Ìà¬QqLPHèMµ¥Û;{»º#¢ÒÀQINJ²,©ŸŸ;iÁüiøS„•?ò³Çˆè¦¾É0Þz¡YÓ:Ô(4Æýé#Úꌂ<„–!=øÀFɃóôç,>¿ª*ý]¯<øÚ«+/þ⥊,epÓm@ä¦d2YRRzÉ¥_zþ¹ßûå’K¿¤kz2™´•#†êÛßú~‰F^_¸¼üÒ/]æ³¾®kýý}Îr!䫬ÇE@–ɲԺ»-!µ óT½|C ‚ŽšÏzú¶·öøÊ!Q8â­ÀiÚ;UÕ|ÎÀø¿³Š €,K$$IRýG -üx~à­®ëÖAª¦£øC!ñä@VýòWÏŽØD'O°xáéBÈ!‘òÒ_>ú=ŽãyŽ‘åÉòƘÎ8Æt‘®“ΩªNDšÎŒF_PÕRu¦iåtèLÑ5ö\{îÔµ¶-ËŠ „pô‰_ÞåÁFΑf„!‘¦ë4¬é¨é̈@ÙBMW•‘¦»)íí믩¬ÈNŽ?Þú¶½½}øV–1-ïIØæ'»³ägÀ HÑþÞöŠÚ4çg <_DA°•ëL'"]gf"jÓt^cLИ¦“À˜Îs²ªóÇtFDÏ™ÙID‚ÀiÚPÏMå}ƒÁ5‡ŽŠ‘™¥YX€Üôñ_¾¿õµ¯o^}Gú°á9Û?"â9÷ 8Ž8?b(ÇsÞÎá B×ø%)àMNôLœ½0Ö¶Ê; yáp†ñ‡¾#4³?2á¬GP/y~x—Â×w„ãÇwÍ?kTX+¸–; SNC8D™Ñ¤¯íËî1«£™XTzÊ%7þý¥§6¯¾ã¸y¦é{qœÎ˜‘…zÎ<—OÛ4óÀÖC²5u&Gªã–¶r×jfîfÚ'smÓcB~ÜLÁ\;8 ;N»ðŠžýyô Í£ ¼å¬Q³/È{ö<ÊAèÑÕó®ï NïQ¬SñÓåˆÿú4´C»Co  ©Ý1ޝ8íâ;Óe!—›óïëÈ«uïïì:oνô$Û,ytjýOkˆ-’޽kºÒADœšP÷oå„ÒS.üaª,Ô™®3fü£CÇEõCçêúÑmÉã_~-'ýŠJ¯vfaFÓeŒ ûU_'˸~!gû.0U¹Ÿ–‡’‚®gZßú)ôn9[³ Á5Ï|©·uåÙ—?ØröõÕN0RP펩ûvjŒdb±Q_î&.|òÅÿS:PÝÿ»#RéîÿŽLGãzyÝr™¼®1!j{–Ez„ÞûýTƒ\ËS±LUâ¿ñ´c ºÐ–î£Íº•7 ¡²9ÝEDLëW;?f}{Hé×¥ñ¡0J¹¢Ú#’,±[,ª:yÑo<õ¾þóŒT3Ž‹šGG½;ˆ;t¯5"fÜ}†¾ûŒ+ÛÓšRÑu]Ó9" ð™!ŒNßþEïÁ¶E_ý5‘¼UÝûSâF êɨQ‡'"G²î··nø‹XROÊá~žvèVjÆ%óÎTÓ4f+ÔGäÕô¾¿šÎ’O×™ÎèÐW“Œˆ(ˆ OŠÝóÞ¯NúÒ‰HêÞÌG70%®÷íÓ“QNê3ºu:_6†‰Åœš ±Œˆ8y—ìØ²éï{÷vlU®-««3ûv‡ÓËv,Ô3Ìlñ™ª/(i\B2ú”iŽ©"ÀEû'¯EêgÔÖÍdÊn¡o;#2Sp_¿ÞÑ%¢âbjžØ8ÐÏRûøþ]RtǶ ûº•ÝEßBE©ÒÎy³lçc((õqQãѪ緆œï›q#ÀÅþ+›Nú"GIµg±xí?ØûÉ®½cŽY0ö„ÏUNøô­û¢IµBT˜ÖÏ’zß¾Ÿ|¬ª]ð«ÏÖ~Ê3û1O—ã¢ìˆsd4]·öäŽHAGÐç„BÈÀžÿrÒâ[™²Ÿ©}¤õëRì³½­ŸÐμreiÅ£Î6*ˆºx‡.Å6|ò±¨>ùâÿéìJ”E"±¸d Õ§¥;>i@:ôÀ^1ëQUmx®»G€;¡¨JîÞ-ˆeLê$¢Oví]xí_¡ˆ=Ã’j´íã]­F B1¨™)HDŒéºæuµžù%¢‘HfF#c:s=¹fˆ}A!xáø  öSâŸím0}‰K J{Õî-«×}RQßh¤ KÎ1ûù26Îü3ª;ïAãL¾¡w„àNQêb¹ ör’>…ç‹kœuöòþûím‡R°Ü¼Ú!\2vžxât]'UÓ¹á5Έ!bF}k!g^Jo¼u=SFV´²â©ª† €,(«(OÄûC骵NÁR"y ZJ]õÀ½fšk‘ªëÝB‘vL?„ÖŸÃA.&L_²ûý=þ$M,„Òêúq­ûÞµÕi9ëßzönß|ŽäKpœDDL—‹ŠâµÕuŒ6Ž …‚ ©jP㘢ٓÏrìÈ̳F qPTuœ}ªjº¬hCYR!¸˜|â×Þ|òüª¦æšŠR*ª”×|¸n¥"E} Ȉ´ŠÚ)‘šŽ“˜.s”$F­ûcD¤(ýŠ"ÅSÆëê„¢`Œg¥ W˜ÈdNVUõúªÏÖ4¿4RÐ7[gÊ À]iÅ„ãμkÃÊû}ùM,•›0~ª§–Ì¿by TN$3&sœÄ±^EU·ìLlÜÖßÞ‘$"EIQ_B'Š%ãú” â ÍÚÌU¢ z€(L¤i:?g)®/´…Ÿ™Æ[çÍhuðN‡%³ûÄ><óÁºVS­Ûá^K¹óÆ‘™“´SÁc)a4˜xü—ˆèùÇo›qæWŽižuÜIçÒû¯¼ñø‘Úiẙ3æÿ‹¢ömÙ™øð“5Ö¨Ó§òu) IÇ µ‰dÉ®Ïú·}ÚñÜ­/¯é9çäð‰'Ö‘À‚Œ…:/™…¶žkš)¨jºq\t¤{„®O~ÖÎ v7ý‡Ê¨ýá«<‹Œ}}Ú•àñw VLVŒ›¾é/?x}ÃË‘Úi‘HEãÔ =ÑÓ¶qùÄSÿqÕߣIEož¬Œ¨DÁ²`Ì:n ¨drMéIJqgsüêõ[ž[µñïu^½dJ  hœ.e•$Ë×{ÖïÿÌc§¶. ‘|Öo eEJw0³ ´ýnãWݬ"l_€|WQÛrú—ŸîïiëØýv¼COtŠ%‰Æ±þíC-P\6©Q ŠI×5éÉ€ÔOr7wjó¸ÚI+?xíñ§6_{Åqe%"’Ô"IÑl=?ŸùgD`VPú.À£›è:ÈVh¼u=²gäÝšõ ½ÖQœám;Æè§ÙT³”¶—l›¢ÇT g fäëþ4íT²»ö†‰÷L:—q˜6âÑݾ#óÈ…î`BŽïŽ•–G!%IVô§HFß*ýÑN")ÐÅä²PÒÌÈ •M(Ž,>mæÿýù£“¯. Éý!QLJIãਦ ÜNÈêº6ßÜøá'{úûâ'?õÀÞî½]••M5»÷tînÛÛ<±abSí;m%¢Y3Þ Ìô¯ïìîÒ"Ëâü{—Ëúù9ú—¿}kÛ2Žü’ŽÌö™ ÀÑLB&“|Æ“. h*QÓ8Æóª¤«jiLíí‹H&Õ ¥=±ÀX­«·÷@O±PQ_;ÎLÁP±("!Dç.˜õÒßÞ߸¹cê”ú²"ꎒyû5Ûõ¢À÷÷ÅW¼ü'USÆ›øÚk«‰¨®~ü®»·|²‘ˆ¦5Oß¼mÇú7щ'0¼=ÂA|Y’éèÙ™At;°#É2òkÛÏÕ¹°frFD%wwQmUQ@Š—ÏD^äF \q¥{F‚Ò!1*šPW¶iÿÙ\ÄŒ@"êìÔ®ª¶žÒ§%áØ 5ID4aü¸`€ˆ¼ª'™qøá–½çÎ©î‹ ²ÌdE‡¢B‡®¯0®µà)¯loï¬ NG1B!"ù€ Š$2=BÈŽ ££êkÇ×öojÿ¸eü k VE’¡pui 4R]ZRVZ\¡éJ4Ö£ªÓUâkÆÕÄò7>ºä̱Á@±ÈSã˜êÊP€¦ŒspI(äÒ?-(xN ‚%ÅB0dtE>”é²!ÀÁèΛSù»çw”hcËJ*Œ,.ÖCáþ@8! ŠõêþÐk]×xK>óüz"ú¹“½¼ˆÕUé¤JD¤p\ªi3Éåaô\HàI …|°ˆ‰‚ nÁ„A§°¾*rÁ¼ ÿûÊš™õ§ \Uq±^”‰¨”×Ä‘(ˆHà‘×Tãò>U?”‹«ÖîY»aÏo>±$T«hb.Àˆ¨,íäUÍýX§y,”ç9ÝÿñP!d„1"9®˜MŸJsgt¼ýñšI•'TEjŒî  ðDšy± IÓ5³›øÜ«Ûžホ®˜~ÌÄI-ej'0áÐãí5kŒ1ˆt86ÐÙ@‘ÇÓ];φdBð“‚FV Œ <7¿¥¾¶í™—×õháÓ³ˆH!tøp(/ð¢àx…tˆººã¿YþážÏ:¼yî‰Ó'Hj©¦3&ðñÂ@oOà9K| DÄ'‘ÎÈh䥙¸œå¦ÛBF:cDįéEO'NŸPWzú¥¶gWýeÚÄú™ÇD&–>ÂÉOD/DÀ°¥à¡,dÄt©š.)*§É²¢ª²LÄ“ÀÓ4®¹©:¦Nhoïݱ7JÔ«(ÔPODܧÏh9¦L—CŠÆ÷usñ¤¤J Y8” ò}\À¸‰Œ( ŒE#J7H#"&ŠD$ðÆ]føCÇ]9!Œlé:“UUQu%We9×ÔäÀ]GÅ/BAAlª/ž2¡Ö:¶ªðý½$k‚ª*鲬ªŠb|É'ðQ€H‚¼Æ½@³ÜTENUuAÐt]ày"Ýü.ã³ÙSD@šî ñÕÅO¯tˆ•‡>ŸÎÌ¿†5lÒNçÎd33íUŒL‡#£©¤únˆ±‘êÐ. ÿ1I©deÑ [—OøÙ“@ïpXWB®A: õ;B/ý×÷8¾—öÐ_Fß\ú™%çtmçjzT¶uѼ;‹®ígÚÁuNÅ£epâî¿÷îo¹MJ&±.`Tiok}ñ…¸×hÀýᆈUûp‘ÀðA„B!‚`ÔÈà¬Ñ—þð<ÖÀp¸ðâKœ…ªª¨ªÆÃú1q'Š‚(ŽNÑU_»› »žøíoœ…’,ïmkÛ´qcw÷A¬"Ïóåå‘iÍÍ MME¡ÐÑ BšªvvøàƒuóçŸ5qòA°NˆHÓ´Û·½¹zµ(ˆM‚˜Ëû Œ|ý¬o£ÿùOø¬@¾STuÃúÏ^°`Òä©X&AŽ9¶YkÞz«¶®®,\† p×Uÿh¼¸ï‰ÿÅ c¬»û`cÓ$¬ § ÑžnEU²ÕàHá믾òê++½fH,TTT”ªB2™¼Õ¯¾ IDATçßîðÂ×þcãÜHÃëŸîxí?6Y8°:¸œØBãÇoooÇ' _Œôu„𦹦`OOÏ5×\³}ûö¢¢"MÓRþò/ÖÍ4„«Ê§VWöu(/þbÝ#Wž¢éº¦ëšêþÂøCŒ×Ö³Üd+U;¶SÅ!>[…„«W¯æÒY½zuFmvuu]rÉ%+W®\±b…Gµå?[sfíÔpU9²sReåÔêJ%ʇ×w.ž&ꚦëSUçXííífÍúÂd„–ù£W×~$YE§†ŽUÆÙánpS9ÊA8oÞ¼U«VÕÔÔ¬ZµÊ6gfù¼yóü7¨ëú5×\³uëÖÛo¿ýÖ[oMUí‰_[‰ˆ&UVN­¬ä%=ùçs hš¦)ª÷´†££æÚGt퀺vRSµñHGe†XᨭºAŒ3oÞ¼åË—/Y²dùòåfæ­^½ÚVâaÓ¦M­­­‹/&¢§žzjíÚµW\qÅ 7Üà1J<Ù÷ú§;ˆˆÞ!¢õÛ¶m3EƘ¦jzº ôfíúOAïÊÖ ÆkÛ(ÞoüS-GÅDQTU5wæÍ˜Ÿ\›«Á¡3 3JAUU—.]ºsçÎeË–zê©<ð@CCÃ=÷Üã=Ö7ÿýþÎ+gÙÊ5‰“¿úåëz‰HSüžMkí{e{¶àô®øå€AËè0 µ²¢(¢(*ŠBD@ÀZ>°óSÐXSË–-»ì²Ë–.]:qâÄX,öÐC•””¤ñ–‡®úÁ ¿j{Úáµ_ÖU}Öçþïý"∘ê÷lÚÁu²’jÎ~'ŽˆÀð Öd2Þºº¾õ3º™…Š¢äã*ÒY£FÞsÏ=þSÐÐÒÒòÌ3Ï”””lÛ¶MÅóÏ?ßçˆÿöè7?Øù†ñº7Ðúo~ó¼¦iš¦iª¦±Ô§›úìðYOŸ>¶©ø? ¯ÃØì;攡~u9oÞ¼x<^\\œéˆ---Ë—/¿ôÒK—.]šÑ7¨÷=þ¯ßùÚƒDôЯï0Jt]çX®\G8DøŽ¬Ý,5“û§HRҵĖ=’”ìë‹…}}13«œ#¦ÝuZ© ƒÌ×MåSÑ RÐÌÂçž{.‰d:âC¿½Ãú–éúÿ[~óÕK\sÅìu¹–›ƒ¬ ä<¥Å9–³cGnÇN]'d}›¶ÅØ ¿#´–Äb½© ËÊÂÆ ×:£»Î˜ÇÜ–•…Õòþ;ÂÁ!™Lš×Ô·´´Ø*$“ÉLï³þÓß-×^½UXüç [®˜Ù㳦w‰ŸIøiá)‚mð'Ë”—Gz{£Î¤1ʽƒÍ¬“vŸ tN1.OÕþ¨Â…‹ÿ®ïyœ>+ŠâÂE‹3jS{õVã§kämfvGÍòòÃØ¢=ÝÆ¸Ñžngy¤¢ÒúÖµ¥ä,´NÈx{ärè®%ÖŸ£(->×û†Ú™2RÐù: «C¡3Ò}÷–lÏ﵎hd”›%f5×:¶ÊÞõÍBÛ<›íØJ¬?GW€ÿ.¡ÿÆUUÕ®åva="ò6}6ìêìpoähxDÀP’Ï#DŒJ<Ïk:‚Ð…¦é™^\€ È3ÇE"­{vÕÖÖamØtuuTVVq|Öž§‹ È9Qœ1sÖÛkÖÌ™sZMmÏsX'D¤ë¬³ãÀ»ï¬=þ„ÙE¡‚ ` ¢8fÜØÉ™ë×­ëíj8áÅX-‚‰T×2½ªªºØÇ£„y, Nš2iìø±ªªáÌOÇóÁ` ¤¤4‹mæG¾þê+¯¾²Òk1DqÁÂs²{©>ÀÑ ÖÃpË |ãõWðàCæJ’Éä=ÿv‡-Ÿ]·zcÇv"š^;åË'Îûð;;¶/'¢Ú)KŽ_xÿŸÖ|ôêºn"Z|bå‚ÓgnÆð°€|ÇçÅ\jšæš‚===×\sÍöíÛ‹ŠŠ4ÇÃ?Ú÷é7g ßœ-|´ÿS"êØ¾|Á•/-¸ò%#_]×}Ãe³o¸l¶‡®!g²•ãs€ ÌÌêÕ«¹tV¯^Q›]]]—\rÉÊ•+W¬X‘*>M—U]SU"ÒuFz’´¤®3㭢銦énß͇ôŽÌ£z ÀƒpÞ¼y«V­ª©©Yµj;’YžÑ3îu]¿æšk¶nÝzûí·ßz«û½¶5UK*LR™¦êD¤«Œ)1Òút‘ªª’ªJª¦ªºk ZKÌ,4Z£ÑÙqtö&­£@î¹ïçÍ›·|ùò%K–,_¾Ü̼իWÛJP—ûhàñq€Œ —/9‡!@Ê¡QEQDQT…ˆ€¢(@Àh0X«Y+˜omRÍ›9¢­5³ãhêÑ‚Fˆ™v¶·Î®õ½4^Û25£Ör=¿ÿô&|†²krnÌÆ ó);yĸ´`$“IÂýS$)Ù×3KöõÅ$)iš?­5m…Öƒ™Îú¶B×ÖüTÈÓ -Ÿ¿ó÷}Ý|½rÌâކ!]>a×|m¼°5ë,ŒÅzÓö‚lmz”§ª€aîš³îÒÓ~ºÅ|Ûyó´µ'>‡ßHñ¤¡aootAh}]^1Aæ_rëmïzTà!4öDV{‚µðÂלtÇw•ÿ¥Æ“ñÞþDOï±g_P³å_¬u^ªû ~E`ø“pHwÔt—éz´§»¼üð횣=ÝFM³~ª ¦HE¥Ñžnç„Ì·Æ‹´­å[æÕGHÚûþ|ȼC©S2™¼ëÎï B" ”Í"¢@×›ˆˆì>¢Æ/®y1²ðþ«fÞùÄGØW*‘>ØîGw÷Aç¸f¡õa¿f‰µ¾³‚­ssDgƒÞ­åYêyÕ#dºîš‚===·ÝvÛw¿ûÝ)S¦0]wY(5>ð¢è˜«~²‹ˆž¸y%·¥]^=ËxqÇï6"bªîþéüîHD?üçãcÆk³ÐðÃ>þ»ÿýáwÿûCã…Y’ª)?[ÄgMŸ†ÒZv??üçã½›õS!»+à(Äà`"vuvxt°nGoêº~Í5×lݺõöÛo¿á†\JQô ¬˜CÔSR$rĈô7ÙDDg~cɲî½*c?úê ·ÿ×zÊükdÂ}õðQ\³qcBæOëPë(F‰³…´ÓuŵY#™Ì™±¶`CŸsbVKµª½+Øæ o“­å\æßnÚ´©µµuñâÅDôÔSO­]»öŠ+®0SйPM§žGáÙDtÕc=DTQàˆ#J|îŠç‰èÍ_CDO»‹íI¿¢¬?mƒ¾óÛõ}íã…ÏUýÐ×NpV¶NâG_=\Á¨lÅû­ëtSb›sZ®KmΡŸ9ñÿ©KUÁšµíä&žç5AèBÓôì>€¶À{„ªª.]ºtçÎË–-;õÔSxà†††{î¹Çc¡¾¿î ´.NDçŸi=ÐSQdÄ%˜.qD•M_l>éóo=û¯çÑ}ÄÑÊÊu+Êøižá¶ÿüÀç*µŽeŽè¬l­q“¤=¦îœÛ´£¸vm]DzΡÿÓ©Ó~êRU°NîÇ_Ÿí\ù¹‚sp\$RѺgWmmVMWWGeeÇgí¡™¡¢jùÕÛEqÙ²e—]vÙÒ¥K'Nœ‹Åzè¡’’…ª/ÙØª±c«j&’øò™DD%æÂÇ&BSϹðj"úÃëšÇŠ2~Þôë÷ÌòG¾q²õ­Ç*µUKUÙ:!ÛPEÕnúõ{|ãdkk?þúlïÓuÅhÖÖˆµ5çÌØ ÓΉÿO]ª ®ó‹ŽQœ1sÖÛkÖÌ™sZMmÏsXID¤ë¬³ãÀ»ï¬=þ„ÙE¡z„~µ´´<óÌ3K–,Ù¶m›(ŠçŸ¾÷BmÝ7ðö³ƒñõŸ´Ï™ÙÀqÔןÐ;×Ew³®wX×§¯ýî.FÄÆ.NÛ#tíúüì›§Üø«w­/ü¬jï¡ë„lSq–÷$œ£Xçùgß<ÅÐZ˜vN†Þ#Ìñkx<¢8fÜØÉ™ë×­ëíj8½ÅX-‚‰T×2½ªªºøÈ.ÍHa^®»–––åË—_zé¥K—.5Ÿ'™j¡Ž™¨žSw÷A父Bëó~ÍrŸ…Îö::cæ ×±l-# M¿np‡«ªª…vù™Þ(\ËB€ŽÁABìêìpi-]S]9uÄA€$ÄM·„£ÏóšŽ t¡iº B€BÆq\$RѺgWmmÖ†MWWGeeÇgíÎhB€œÅ3g½½fÍœ9§ÕÔÖñ<‡uBDºÎ:;¼ûÎÚãO˜] ! – ŠcÆ‘œ¹~ݺÞÞ¨6*ÏaqY-‚‰T×2½ªªº¸¤APÈBÁà¤)“ÆŽ«ªCÂñ|0())Íb›B€ ÖÃpÃc˜A€ @Œ.8Y G©ª¢ªn.cÅqœ( ¢@8I–÷¶µmÚ¸Ñú<£QŽçùòòÈ´ææ†¦&\PPÈ4Uíì8ðÁëæÏ?kâä)Ù½µf¯MÛ±}Û›«W‹‚ØØÔ(ˆÙ‰0!@ÎQTuÃúÏ^°`Òä©X&AŽ9¶YkÞz«¶®®,\–Ž&Ö,@®aŒuwllš„Uá4¡¡1ÚÓ­¨J¶D éº.ΔqÉ-QÔt=‹·CF5!Œî.&V@nbl0O¨EQUÕ‚ ªa^"!@Þäù:‹Á*f†cr¹ÒB€üëL¢˜“ÈÖär³«Š È]ÖC£Ö׊¢o€µÐZÓu­ÐxktþÌ:ÞSOÛ¬Ù²µAã­ó§Ï‡õìY!@¾r A¶B×ÄÄ…þÛÉVƒB€göÞl=§áÚašÜÈÌ?‚ ïÃOµÜ?¥¯/f(ã­­·$IIó§Ç ×BsŠeeak?ͦ-\ƒB€ÑÆëò cP,Öë,L;ȵ)I”•…ÍÖü4›¶Ð:ȃÃÔäl \JÈ ‡Ë™…50luÒ²q-´•“å¢FïfÃárç Ø ][NÛ mÞÐ# IxøŽšÑžîòòˆ9$ÚÓÍtݵˆR rZ[6Þ9ý#¦íéNÛl´§;RQ™ªÐlÓÿrYÇ&B€¥3Ò-½ëzÍrgaw÷Aó…Ÿúf¡~dOËlÇöÖ»Y£ÄVSgÌÝúÓçr9ë#FQ—Ð< XUUí|ð`WÎÎw­e!@Çà¡C‚].†ó€á uuväæŒ!ò1 ñïì…¶:ÎLµÎ€1i£3D]_#Fsºá™g-3vœ³Ð ëkgý}ŸíµUðhyßg{S5b+7šµÖ1¦bþ4㦚áTó† €oþåO®éh†“5¨\ߺ–x—ûÅuºÖŸ~Fô˜!À¨êºwŒÎ˜öØqãåŸímÇJCŒ È<!@ãyÞãd¬!@ïèËÊÊ:(.)ÁÚ°IÄãeápRërN ?¾ñÓm[úúbXV}}±O·m™ÖÜ"Kz„+ •G"ÍǵìøôÓ¾þ¾,ö~ò¾£\ZÖ2cfuMM¼¿APÈŠŠ‹Ê+ÊÇMhÈî÷aùN×uE–³˜‚B€Å“’’””°*†½£‰UB!‚A€ @ „B!‚A€ @ „B!‚A€ @ „B!‚A€ AbFµŸøío°Ê`”á…_‚õ‡FA€ @ „¹ º¦¶`¦¹)³ëÍÌèê쨮©5~Z+tuvÕŒæXÖ·®Ùc«`«ì1ô¨ÄsNÍŒ\š9g.gæ™1éþ³$×R)0zƒp¸;FÖž¢Ù¸Ùõ´v@­C!*±R5âÑ‹uvy½çFK¦í6Ù:ŽCOVkk¥ 3ïFüÏ’-3j 6½;a~Æò9bV’&‹q…ä@ÚóÀÇ([©fëwâPé LÕáó>Y&»Ý2s*è¥@F ù‚úA÷]GD_`´÷S!éüŽÐÚ tžÒâš+æE¶¦ÒNÈú6m ”úMÛ) æWg!ŒÒ ´åŠÇ¡HךÞ%~&á§´‡F=F±å¢wý´Ë…„£ÓàΉa–­k'~… OŸ!‚A€ @ „B!‚A€ @ „B!‚A€ @ „B!‚A€ (Ô ¬®©­®©Žf‡{¶ñ@5ªkj»:;º:;ŽzØ ØÀF<ŠA‚X€< B£Wç`ÖAÖÊÆO[§ÐkΚ¶¦\Ù s’v,@fÖóæ“yDÔV>”Ö\ߺrNÔVèg,„"@ÁÃY£€aN2fú9h9¸®:| æòÌ™ßä/<ޝâÐë Ç€B’¯‡FG wh-Aß=Â#ò ÕY 'vfÚší”QÆ]yšgñxŒe«ÂôÙæZ!ÕXÞ­9‡z”øŸ®-A}VÀAT€B…³FA€ @ „B!‚A€ ( ?†I–$Y’˜gŽãŠŠ‹EQÄú€‚ BYÞðц¿½õfÊEqÎÜÓ,X”H$2mÜ|ôàðÜ$F`Ær™ëãA†i¬£²t¸©:‚0Œ±¿¿ý·ïßû@¨¨È6¨§§gÅŠ_¹ì²ûþý®sÏ» mfô̦œÝÓ ¢ñᛟáhyÄþt@ @~!išæLÁÖÖÖË/¿|ÇŽÓ¦MÓ4-Ó½v‚Yu0Aè‹Å®¸âŠ;wÞyçsçÎ}áù…@ãŸIDATßen{$¯kßÑœ©^[ǵ¦ó3 ï^¬9¶Æ]Ûq>ì7Õ³ˆ ’jÙ\ cy,£ëXäïÉÉë<í:qÅùwRªÏhqR­ïO ]ô÷÷—––¯ï»ï¾O?ýôŽ;îøö·¿=Ärî†Øwôn!ÓIØF´ë±ûö˜ŸAô›/2+Õ_ α<æÖ£)[\¹ÎŒ÷šL»BÒn²Á­…yùÄ“O>¹`Á‚ÖÖV"Z»víÓO?=o޼뮻.Ó|2ÿùé9G·ýïs¿–³û>ÿ 2¸E(€þÐÁãOœŒ>E€!µµµ-Y²ä÷¿ÿý=÷Ü …|ðÁ¡ì’ŽúÞÇÆC©æ¬`îa·€ÞSbã#°ÆRÕô?úÐg ûAxå•WÑwÜ1wî\"ºúê«›šš ¾«a;ªæ¿ØCŸ±¡4>”J»*<!£Ñ ¸ƒ ¹`ðw–¹òÊ+Í^àµ×^;òÎ[¿UÊè‹·ëj ¢ï)€>Ð ÁÏ(YY3Ùý@÷­ýÂ+VLœ8qp;?Ýû¯™¶…´ßyOÂVÍÙ¸k;ÎsýÏL;c®'@ne4–ëªðßlFkÒ»rª¹úÇF îþ{ï¾ñ–Û¤dÒç±ÞÞß<þË»î¹Ï¼”ðÀuuuf)™¼ïßïúþ}ôF£X¿wVD&ÀèÑÞÖúâ +2îr7÷ôÏýàÞ»UUuïcŠâÜÓ?õ;¸½°³[ƒÕ‚€a•q—Ÿµ`Ñâó.ðªÄ˜””°r3…½0Ö?äA ‚˜L$’™ßP áy„€ @ „B!‚A€ @  CÆ7Ý–%I–$æY‡ã¸¢âbQ±~ à‚P–7|´áoo½™²EQœ3÷ô %õ„Šl=Îç#àsÿ505±ÉŽúšÁcr=cûoß¿÷ó õ6ÆêÏ=ïï ´=„¶«³Ãöû?”ÝÁ ÆÍ‹¨ÈYÊúåÚ&Ë…? \ÛALý $"MÓR¥ …ŠŠ4MóÓŽí÷¹€½spѰ3Åg„#ð§´Ñ_´+³ö Íg?Ò9®sDkkÖÆ­£8û¦¶Éùi6U ©Æ²ºöm=iïÒ®íT³äݸsë¸.{^o2ïù÷ekÆã×Á:ºkûP8AhûsØ–‹©RÁ¹;°íû\G´µìºwöÞ7¥Úífö>ÇrݺÛM;3¡è±žS5î};Õ ä×&ó3ÿÎч²füÌF¦Èõ ôówqN>úä õ©ÿFòn“ ±A„‚0kûï}™Ž8èÖT£G^ÞY&»]¡2ܲŒzHÎò\è/޶M–ï½yôs¥?aJu&¡ÿF¬#Ú ½'ç]Ùö7ûàþÞw]4×yH[躌®‹­ÙKµ°ù¾É†>ÿYY3Î9ÄÁR€¬ãî¿÷îo¹MJ&}ŽëíýÍ㿼ëžû¼/¨ÿþ}ôF£X¿³ÚÛZ_|aEÆ=BŽãæžþ¹Ü{·ªªî}LQœ{úç‡8sÎûÎ`ƒÀpÈ8‹KŠÏZ°hñyxUbLJJC™-$äh ‚˜L$’ƒº¡6@®ÁóA€ @ „B!‚A€ @ „B!‚A€ @ „B!‚A€ @ „B!‚A€ @ „B!‚A€ @ „B!‚A€ @‚A€ @ „…O´¾Ù¼éc¬(lǵÌH„§~V¶hOwÊ ´ (xøŽ„B!‚A€ @ „B!@a± 2Ƙ,ËŠ¢èº^8ó¼„B!ã­®ÓžƒjŸ¤3V8Ûã¨,Ä7V‰é)kA¸}×–-»nÞ±«u?Ml¨?þ¸ÉÓšŠ§Lœ†ý&$†U€Í …œYiåí·¿ò—õsf7_ù‹&5Ô3F»ÚöoؼãÉëÏ/žv¬h(Àý%Ã>›„DD´fýö»?û×o|©a|ÝGŸìøÃkoÑÂ3Nü§KœqêÌ?¼¶†ÍEBáí0sl–þøâλèâl.#cl”¥ÂQ߬Y߈ù»•EQ±S–†„ÛwmyuÕú[¿ñ¥†ñu?¾ü¿¾__SIDOýß7_»dÑ'}áœÓòëß×U¨8F …¶ÏžÝÇ_zÁúö¼ ¿àÜp¸<Ö=Š{."²î¼2Ý—ä¾o86«sÛýñ¥RmÁTƒŽîFÄ7äõy¶C ÂÍ»§Înn_·}÷goüõý™ÇMþá÷®!F_»å¡ÇŸziá'5Œ¯;evóæ]‰)±ë„BÊÁaü;úË—_i¾~öé'Ͻࢌæ ç(nVë¶#¢s/¸(\éö8kz Ê‹˜µäLnؼãŠKéŒ&5ýχ¿CD:Q<ždDe%ÅÆÆœÕ<ù©ÿ{ýÂù'à· Àê•—_LrÖýcy¤¢7ÚóÊË/š;Pstë^ÕgË™æBFõEEQ±œxi´¬uŒ³šñÚ¨ct2Ç©›Öú9ÎºíŒ aþ´n,sylÙ¬lÄáøãÉØÎÍ mÝʶÂTŸ[ÉHþA0Ô Üݶ¿aB½ñs]M%mßýÙÿÂHE¥ÑG\|þ…¯®|É,±Õ4¥jyäÙ2ÌxkìÍŸÆîÏ#íÌýé°Æá7«ë¶+TÙfÛ‚Æ ãµu;ZKÌšùÂöÇMª¿xlÑõ’O=Bc‹›ÅãI#ïÿÞµ“Çêtx(X#ÐØÓ¹fÕ³O?i¾¶îÍÊÆ¸‘ŠJçèf@­ôγ¡ïdG ‡"Õ¶3™Ú¶ ùÚº±œ5säš!Fc.j65ÔïÚ³zó$""޶ïÞÛO~å’…dDíÚ³¿±¡{@($ª¦Ê²œéXyãµ³žS[WODR&±}GxÖÂsŒq5mó`TŽTTz4žÑ.LU3Û‹IR’ˆúúb@ ¯/f–X|9«o­ƒ<ÍšíçÂfMµíl\7ÊY Ï1²ÓØÊ®5‡8KYßÊ[ª¬,l«`«æZ˜ê’öÃ+A8£yòGŸìBFµ5•—]²°¥ycDÇè£OvÌhžŒ]'”AC›¿`‘‘gó,ò®y`ÿ>óum]ý³O?9Á¢ºú1¶>‡m¾|ù•FÍl-d¦Ëh­o¼6~Æb½Îjápy,Ö[V¶M;Åp¸ÜhpX¾@ÊÆ¡Që¶Kµr¬…Æ–µn8çñaý(®}çXÆ5_[?®Ÿ +×OȈ}G8ÔóΘTüÞúOv·Љt¢Uo­{æù7>Þ¼“)¢ÝíÞ]ÿÉŒIÅØsøå˯\õ§×WýéõŒF¬«s`ÿ¾T;Ykû™¶œzO7p‘™OD‡ë÷öFIJ•3ÆŒ]¤uOçÚ‚S8\—÷öF{{£lrðSalVã‘þ‹.ílݾ×MïZ˜êâýaÈîVjpÊÄigžÜõòëk.XtzÃÿoïîz›¶Â8€;¶§nbâÒ&)éZ¢‰P’©ZÑ´ñÒ!펰/²O0 ‰I»ÚÕ4i íbiÒ¤‚†`B¥ÒÒ˜ÔŒRP }OK_iXí³ o–g{¡¦M¡ÇÿßUûôÔÒéß=ONœÄéÎÏŸ¾üýõsgß'”„<žÿqøNñdo"7„¯¹¤ÎÍÎËÕ®dêÛo¾.–«îö=Ÿ9 X®Ú‹îŠuJi±\½ycØóÈ>'éãÓÿý Ã]Yy¾‹Å­ÊÊóejæ¥/ë§æe0k¤ûª˜u©Œ¶ò®¹»‰õ•8Ϻõ¨Åž×¾îý§låèˆÕQ1ë8¸çùày†´:ë½l„„ê™S×¹óù—ß äòÇŽ~õŧ„cÔ&~½?V<™©ž9…u˜ë„»]1gg¦‡J•®djvfÚ^*U’©´c¤»N)uT†JkÑô<²_%¾îO¿¼¼doÞëÕ¬ØïûjU¬Áޝ­1MþvÆjÀ^qÔíE{ˆæ)áÙÒFè7eG(îXí÷)Ñä|hr†€Fhö¾#µß¿¸òÃðäÔ!¤'Ó•ÏýäÂö‚ÍÛ¡£rëçÿ·Âº;*öowÙ­¶°óщ„æY_Zª$MwvC¥Š„gRM~´§9îeÊLÚ³»Od{e{É…Þ5Ù¶êqúÙsåTºÛ]Ÿ™~ö6½~ž›ª/.xg¿žàzã±zf·ÿÁµ4e4BØoËÒI±W8°Ù!e4B€–âyž2ú„’ý>æ†Áàuõ¦ÃhmnN 3‹±ííüË™mcÇ:Jž—fº“1]–›ê{“ôá¶)]Q2iEÙ¹whõ‡Ûg|мpá”éÓG£'ABŸÈ+„™Þõ©b{m¦¦&Ó—©©¥•Œ¢(©´’J+ÉdúÍ7·  ýëŽjm­G—W~øÃ;ˆè;ß¹%ûm „–×^s Ý{ß}GŒy…PÙ2,¨4‹ ÉZ*•IŽ¤ÓŠ’N+É”’L¥’ÉôH*ýÊ«›¦Li¾àü9èPµÜqDz¯o¹åÛáNç<1û=ÅÖ6ÜüÁk¯¹ÆP>COäB=¥¦ûÒ[GX&Û»w¤»»/•ΤRJ2•I¥G -L¦_{cÓù‹f£K@ÕòíoëG?ºÓxZŸ8O„`òëË×áž{ï½îÚk-xϽ÷Z¾/–FvÎ'’ÅÇj›9AÕtMgª¦kÓ4R5]Õõ¡þA|'È~‰î¼ó."úÖ·¾i¼0^/²G²³G )õH !À®„öcY-̾u<ÑYÕŒbýV5¼ºö™éÁT&•N¤Òɤ’L¥F’é‘Tj$™N¦RÉ”RS+]tòWÑ#˜¿DwÞy×Þtýø'?3^ÿø'?#"ã`6帑Ãò³l²ìé–"ì_XªOÅý_‡Œû·Òá#Áö rõ5M:鈓ˆtFšÎtÄG€§GhpÓ×›ßf_ÿø'?»éÆë=Ø?rtñ¥@…ýj¥eÞ|óÍæ47ÝtÓÝwß}+I ‚ ëœ·OÔŠ£ÞßôöÆ=otõ¤”d25’L¤Ò#Ét2™J¥Ó©t&•Vnøú©ìÄcÑ%¸ ›ñöÆ®ûéÏî!¢ŸüôçDtã ×¹k$ƒàëÿëú¾g~ë[ûž zçwfßÞ|óÍÆÛ¬Ø5*‹KI}J[ý†Ý½{Ñô¾Ñ´’J+JZýÔ‰ÓÎ\x8¾“ø !ÝpýµDô³Ÿßk¨ñÖ’Þø4û‘ñB€“îB“GHDwüð‡Æ‘;~øÃ[¾óƒÄbh³ŒÔ"Imòhj.’¥ƒÞJâA’¦䨩*ï#¶;&ñš !1Éd:Vù%Ð"~¢¸ï­®ëæTM7Ná—C!€â0’Ú§U¿úõŸ VèôC&žsÖIB%DsSý¯îùŽ ˆ¢ÀÈYÞ€1¦31]c¤ë¤3FDªª‘¦3ãŸá ªúTiھ㴧è«k¶|õÜC^_³ÁÈYÉdⱄ@ñ‘%±&.K¢Cà@CçˆH3ÄHÓuJHšNfuÔtfH b¡¦«ûKlÞ¡á1£Z"ÂŽŽË‘®®®Òi\Ã<»InÇDH&Ý?<ÐÕÒæ³?SÅÚ„$K’å¸Ît"Òu–UDMcš.jŒIÓt’ÓEAQuQ˜ÎˆH…¬v‘$ š–ëÞT.0Eéèè€2@%ñþŠÿ“é]Ù8qá§ÝáRñ`P×™(ˆ†Z…SH""QÕ¸z‚¸O ÝœÎе ÓXvÏ2¯tuuAt ß(ɾ©G5¸íùµ/Üâ¥4Ò ÷ÿFhè¢(ˆ4¯ ?(ŠyVªð¿šµÍ¬:öãÙ#†Sh^·´¿v<1¨WjYuÌÇã ÅÈ@9@U!×Ô{ñõ+—ÿaí ·øû…‚ 3fh¡^2qpCêlV'¥Îr<+uï ¥w R=“5ÉäZC¯ÔþN¹eÎ1þñ­¥ÿJÿï5i¡ã-ƒvu4î—×M·Éë:ãQY–‚>’[öU£ ñwLã¨aá̳ç,ÎÃHþ ’Xõä R¢áøó¿GDLVw¿Ï†¶PfXO‘˜h¤X½PÓv’%;åšÑÇ|ú»ÏýákCß1TÍXÍ®Žz;ˆÛÿ¬5"f<}†xúŒ#–hMn躮éÅÄœ=Bϯýr`϶Oå7DDÊGj÷;,3b¨ žê7ÒˆDdB¶÷µÖ¬ëÚ)sÀÏÓö?J͸eÞ®jšÆ,u&y9‚ÞÏWÓÙ>åÓu¦3ÚÿÓ$#"ŠCx’I÷oyë× .»›ˆÒ{׊ýkXfDÚ¡§ú…ôáÖéDbÃ8&× j’ä"”ÍRªgý‡+»»{>Ê|µaìØ¬ow@½,k¡žbfùÐ.Ÿn¾`Z’içôYS…p kÝ3ÍísÚÆÎe™Nih#ʪàŽa½g ŸˆjkiæÔÉûü,uHÞœîßøñš{35ÿ.%jÜÔÎþ°l{ r_5BO¨ž¿ Üã†p`çÆ'§,¸H ”Ú·™ˆØHíÜ3°ns÷¸CÏä§jFMüäåï÷§Ô9ôa–êчv|°î}-ÖzØ™¿Þþú'±XÍ~=³®y:¬‹²ƒöÈhºnöäRA› Èù!„@¶¼¿bÁ9ÿÉ2;™:DÚ°žÜÞ½õ“]Ú©_z²¾e¢‘æcjÚ'u#=zzpͺ÷µXë1þqwo²¡¹yp$m|ª3Aó[Ÿ4K íØ«1f^UÕòsß=„€3RÍheo§$7°ôn"Z·¹û¬¯¾K4[5,Õ£öo{óVCc‰f9®eUˆÓuÍ뉞Ù ýÛçD²¬42¦3ÇÍ59ú‚B^b\RˆˆeF¶wo8ûRLw«{׿°j]KûdCtŽY÷ËX°ëŸ‘Üþ »òåî&B8“ÉìÑå&IbuCQ¬cO³sÝÛowmÛ¯‚MÙ»ëÆbçÑGÏÖuR5]D4´éÍhˆ\öVzã­ãN%£5Ô&ˆ(èÝôBÎ4´4%G†~ɶPÁz"eŸ´Ä2c[k×S&‰IDDª®{¸…:;Hí˜~@Íó„€g_Úùö²Ãæ/Ðä&IªomŸ°uÇ›–4³N¿µ¯ûƒŽ™gËq‘±¤ ¤‰ˆéJMÍH[«@D{÷ôOžHÄ3D¤ªqM`ͪ|f‘ckžYEQÕ¶ûTÕt%£åRS!¦}å‹7zÊÌ1-õTÓÖÜ4æÝUOfÒýûdDZKÛŒæ1“!ÍtE 1Úºsˆ2™áLF‰ÇjgLˆ+ÕÄEVŸF2LfŠ ¨’ªzýÔgq³¿ *hœÕN!gê[&qê÷Ö<ùýOþMnJ4M˜Ø1ñù?\ºð‹%šˆÆAH l £ªë7%?øx¸«'ED™L’ˆ†’:Ñ`jDŸ1Q>r¦6wÎhY’%=FÔH¤iº¸OÏ\î/´ˆ_VÿŒ·ö‡ÑdÔð §e&„ñjßÙÇ4}tI,ÎX"©‹ÊÁZhñð%0«‚ª¦뢅ö½«w#éõ™TÕI‹ª + åK­ Åšª¤›¦Î¿¬eÂìWüàÙ5O4·ÞÜÜ2ù=ٷ탿N=_ÙŸÊè3§ÅG5«Dñ†ø ùÜXMÝô1õS&œzèüV¯ôùV¾·û˗Έ%šcš ËqE¥´éç=óïÙµS‹ h(ŸùWC%£åâBK³b&-kÐwà;ÎIKÛ¬“>ÿðpß¶žÎ׆Gzôän¹.9yü¢WÞÕbµ Ó&gârÊñDMcz*–&eH8ñ™Ú¦=ùÎ3¿ýÃÚ¯~ñˆ†ºf"J«5éŒfñü8õÏÀH*(çÞÊv7ÑrĽÖ׳tËÓ¾váxœÜ:(èÀóÆü]é{=êÛYºu¢c…ë÷Ç¡G“-Ýcà–Þ]ÉÀÔk–YÈ÷«ç;ç×·L¬o¹ØØ:8ÔûÊ»Z]M¢±.CDŒjU5)ËÉ£:9pã`zP'Ö\¹à‚Þ~ü§¿Ysã׿I¬IUi(ņ»¤NÞöÞGcF’ûÁ]{†CêÙâÛoìÝÝÓ»»‡y2aÂ߃Æ[óAûkÇS|ót3À^Dˆ=Jñ0Ï­šær½³u«‘[ExššÓ~7|+ÂYGÕ¼sÚh¡‡œ[ {7{ —Ë0T}ß‘®%y¾õ¹÷{ŽãлIùÇ­ï¨ 4E8–t6ȱ×ByÝÑK1Ö£(ë_xë“Þúä5[ÞX³eÕ‡kß[¿zý†•:_Ù¹ý©ÛŸJí^Þß·j`°wwwjë{ê†×´ŸÑ^Ó6¼¦}ãŽÇîúõ_eýààÖÁÞ]=QþûÝ£ÏÿV¯Ûµi{jÓöÔÆn‡†ê­Y½jñí·É\ÀâþFXŽ‹~¹Ãs®Ý…ª€V-XYÑ”cnve¯{­Z„M(+ÇÄÅê—èÊÕSˆ)Ý]56Ö¨iˆTµ~‚Ô5? R®ÉzJV†„ôà¾ô‰Fo`Dô•Ï,¼óáÇž}iËÜ#Úv÷ íéÑ™®‘ Jö‚b²HD#i•ˆêr*£+•ˆêj#©´ªj5‰˜(Šy_ê7Bïµ—|¨DÇĹÛlÏ!{mÁß’1\FueºMuP>†M^¿ø&†n„üÙ–{ÎÅ]´(–gi¸ƒ»¶ µ¤6ÖÅ4•j(.hE5­«jý :0Ô¿+•R'Ö÷ ÆÆk½»új¥–ö¶ YLÔJ±’tî™ó–¿òök{™ÑÞPC{û)ûø5Ëý²$<öÄÿ¨Zf„©Ï<ómïØ¼©sýºˆèð™³×~¼qõûkˆèèGæ×#ÌÓâ[áwŸ*1Üm…¬µ÷bZŽ…>=Ü-\!ò¬¤û^‚®‹†WΖ,)w¶do«-ØpÊS¯q§×ˆH Tg/µ®‰IqYdªž‘T¦iñ)ƒƒ©]ÛëG²' *:%µ¾=úÀaí‡e%PŠ1ô¦8;fÎŒ·>ØsÈŒv"ª«‘F·²O9eÑ㵪:HÝÌ™SsiÛ\# ñáï)Aóô]¿ ”!O5íåZöey$¶ø.ñs޶²ü§[ŒÚ­dÛÞÉÙhùrnÝêÝAAçYüÕçA[’'·‘¢ßÝ2ñݼm>èѤ!ÆO$Tˆ8!’Qjë¢úHJii®#"QÓU©F5Mg’DÛ¶tÑàp{cýÎw{&÷±:uh¬ÐÐ4VL4©ÚŽÉcÆ ‚¦kº¢ÏUŽ›Ýú“×ùÒ{û{>Þœéܲ[ɸjá¸q£Ž?æ¨@òVSãL),¾ý¶ëoº9JÑèÖ1@Å]õ£Ð8°37ƒ‘B4¸cwÏGñy‡wh¢É3±þ={»vìIi#ÊÀžTÔìSÖ.9~šP§¥ÒÓ§bìvÉì¿Y°§wð›?~æÞï½î“‘Uïíúp}çžá7 Ž:üþã ÙBbŒü–˜ j¡›nÉϾdNwÛ7lj¨kÛÖe?†g‚"ùv˜è(âW¯ CÉbL> :šÎöè#‰„LD#DD§,8túä1/¾þþªu;^ÿ¸óð©1"ÚÕ»«¥±á )j”ˆ¨sËPmœ5ñ¦úºbµ„ÌûhÊkŸ²°3œ‘ÆMî51ë5‚ÔPC 5òG[ôºvô쉪¦Ÿ~ÒÜUëvô'÷¥QÓ$5KD¤éîÏd4"’Åø¨¡¾ÁKke B øŒ¤ÒÄD"R™.¨e]Õbê˜Ö$"êкzÛGׯYßED͵$‹q"’÷Gø•lw ÆâR\nÕ’örF“ɧŸù‹ÕQ]mâ¤cæ™?ˆ4]¢ýwf0’ „" & D”L D”1TP!"QK7ïÞ=HÄêÔD’Ôÿ~ü¥¦úÆîÝýD4yÂ>lilÄ}ŠÃt•ˆ”äѪ«‘5ñæZ×PÝ=½[vô&jâD¤‹µS'öŽmk""QÓTQ–uUœo¥—„¸o½Ä¼¶ZÞ6òæ×àÒÙ5%À>窹)¶sgÏÈŒPF¡~J&©w7 rso¿ÐÛ/ õÕÖÆåX¬¶{wC­8J]cLDuuñx(J¢(‘ Ê‚(²­ˆ¦LnÈ(ÚHJM§~ƒÖ~øaf$•I¥Ó-™L§3z*mþ'¨š ò>’;2Ðü0Ù 7ò>žï«ÃÖ@Õ 1–7:ADÝ=ý£š‰hd˜ˆhp€ˆ(kïÙÙEDmõ™ö©RcãäÁÁ½ª®I±¸4¦í€wah¡®ko­Ý1wJÝHRÙÔµgí†Á?Þ¤(º¶?²„$íóÓâq‘ˆâµ ³5#µ³{ÛøQ­V+%‘É¢,ƈˆÉ’$Ä™ ‘_Œ¦È„°ˆ’PþOð€RB"bT3qlÇ;w%4g%ˆvïÖ$at[;%ÓŸÔ5î“X\RSDD;&ÄcbLÕLŒ 鬾»¾ûÜã[‡%EaJF‰×&br†öß_aÜk!Äbî3ðîѱê(ÇbR"AD²“d™b1‰d&pm± ùdûks°ߨ4æ<)Š J<ÑFÍ É-ôÜ"(S!NBü°ò»Oo¬;Ô88u|–›yXDT’«£ÛÛ:Ú†?ìzVdz ŽnN%‡[ëcõÍ­õu õµ-šžéìSÕ4ÓU%³Ž¨É¿>÷ÞŧŽÇje‘&k•ˆÑŒ Ž×%þiݾƒ’(ȱX¼®VŠ' GPAëøkŽ½Ï *¥¹ÈpéŒ( ² §ð´ãGý~ÉÆ:m|C]‹¡‚µµz¢q8Ö˜”¥Œùîqÿk]×D“þiÉj"ºàÜé’ÞT#&ÆŽÖIMQFÜÊfi‡/BBIN$bb¼†É’$Õ†«XyÜ>‘KÀïç:òãu ÛG7ö´‰<õêÜö“$atm­^Wˆ¨^Ôä‘,ňHc1YÔTãö>U߯‹Ï¿¾åõ5[~tãÑu‰¶Œ«bBŒˆ|‹W5çµÎìZ¨( :ÿzhÙ aîn¢ïƒÛíšWR1t ¸0FD² Ô2¢Ù‡Ð‰sz^{ÿÕi£ŽÝ<Æp%I$Ò²7 fÑt-ë&>úôÇKž{ç†/Î>tꤴZÏÔAbR\ÞŸÒ$cL#"$íóe¶Ï_d$Äôý÷γœ…,p`^sð¹¢üôUÖ¿·áÇB@Ùª ¡Uc5’HŸY8«½mÛŸžXÕ§5žÐ8ˆd)#%,‡Š’(K1AÌ®QïÞ‘ûÿúî–í»ï¸ñÄ£gOL«õš^˘$ $Jû¼=ILò)‘q«» ‘Î(û¡¡—YÅLÝ.„ò‹%-I%»ðXÎòˆ ã]®›µ¹˜e„Î $jz$Òѳ'Ž“xxù¶??¿âð©ísmžÚp`…S ‘ˆDQzçƒÞ7õ¼øÖ¦gþþg4Ô5*¨iR‰Ô a˜ø»ƒŒËÞšÎtFº$¦ˆ ”Z¹ªë…w>îÜÝPWרP3aLó˜QñÛz‡’úoK+Ú£ÇqÒäæ5 TŸÑbj&¦³˜¢d˜,'DëA:pï ã€Ã €*HTP×™ªééŒ*hŠ’QUE!I2aæ”ÖAubW×ÀÆî~¢L†&µ‘ðÙ“æÌ:´AWMÚ+Œ¤Òj:©(û„+‡„˜ñY–˜(Ë’@””äýO%•e"’Dã)3âþuW!Ú:Bø)!‘®3EU3ªžI¨Š22¢©©}qtå„(ÇqIžÒ^;cb›ùl5#¢Ij†Ô´®(ªšÉ?òI¢@#JKqQ /PLá–$YTU—$M×%Q$Ò³žŸ F¹¬ !àã‘( 51I–¤˜ÜQõºzEÉÔ¦Ò¤©ªÈ"ÊhÄ(­Ø~ù3$ˆ GPŽÅd"ãqh’$ʲdH‘´ÿ 2wP¶ºƒÄH bVBÀÇÌ:b²D²$Öĉ(¡ëÌØ>£ëLg:™bÖÉ5i:cîQ tI”Œ`‚n„9$¢wÕ›ö‹šo¬Ðtm-!„œDCnDA "QˆDY#ຨ³ƒâýiN÷ÅÛo–Ϫ(佦":@5sGøÊKÏ£ET6GÌšã*„'œt @eÓß·×U-Ÿ~#! „„€BB@!P‘ˆ>±|é´àgÑ…cü"œI:7o~{ÕÛ=»v9¦”$itkë‚£L™:5_BHDkNF¯¦§^±¼üÊ«Ñ2~|àþìëîíݯ½öÊYŸ>wò”)’$1]gŒ1bjFeŒ1¦kª¶iÓ¦W_y9–ˆO?!_BÈCÇ(ù•«þ-BxÐÛ–,åÐ IDATóv\•}ýä¸ÿB?ÈU5g®o²Y³ç¬yï½@9‡÷_õ¹~º>ûv÷‡¿~ô£è*ù€1Ç5MóN&IRÐÅËB¸h×Õ nùvf×ÿSGR#ÃɾÃÎøì˜õ¹¢ËÇÞž't]ÿïÿþï‹/¾(Ç| ¡éu¬aŨv,Q| Ñ™¥þåÕËJ@ _>÷»¾‡¦‚×\{íC=ôâK/ýøÿÞ]8!ÔÍþ¦:²ïEÍ¡—ÿx3=xãDJ}ìš~?w|yžñâ–߯¹ãËóŒ¿æ·ü~‘Ìx‘=ËüÖœåDG³í§‡ÆÑZþs£2#P¶Þ Ì=‚o ,Tðë×\óÊ+¯\wݵ˖-ÿÏÿüÆÝwß%È#Ü/lªÎHé7^_þ«mÓÆ0"ºü§Û¼~ ÑÐ{DL5¶¶ÚøöïÞ%¢]1Ÿ1f¼Î4øÑó¿ý»w¿ý»wÙ#nYñ˜Í™’“\r‹vçí®˜ï-O‚h'ttttuuþÜ2ªfµao«Â·^GG•l—UöpºæškÖ¬YóüŠ--Í×|ýšK/½ô›ßüÖÝwÝYP!Ìdô}BØrcìίù­ÿ·Ú>MgßÚ_øŠÊ_92û:›¹QPö¯ùSó)Æ{¾å:žâ˜­¡LYcÌ9˜-ä´$›Ì­©½Xl(ÌÄaâ+êöÅzœ³ˆŠ™GªY_óW÷’jÕ¬1ÕÓ×çœsÎ÷¿ÿýææfÆôQ£Zþò—?¿üòË¡s yûÄ”ã>CGÑå÷öQK}L (yò—Ñ‹¿9”ˆ¦žð=¶Å?7ó_ËGß|`õ]Wi¼ð¶'Ë]WiOl.âίH`$¶œâýÖ±\·S,ÙËr¬uÖBK<š‚3Yk=òŠ\d&ßé£=½t¨f/³Jê^…]|á…÷o[ZZÎ;ï<¶ÿm<Âÿ³êZ5BDç-hÞº«¯¥!ÎH J2=-šrÑÌŸzùÏßø }ŸzrÔ*ÜŒ¿†àÜü_ïðx~–³²'Ú› ²dnþÈ­8{†vk}OqtmÏ2[è›-ÏGÞ ÌÅÝ}ÕQöÆIÕzGOÑ|Ð~Ù›Ml¼Î.RiÌ-¹9^8gÓÛ³r4ÏœÞmr,Ñ~нšn‡c øºÚ–6 d³cÅÝrö8Ë{ÊŽ¤­¼³òÎÐ1±ÇE›}¨¸û§¾fZ«°dY°åìqGË«GVƒ aFÝwÇ(Ùø=~üè:ã`2µKlšKDT÷¡ñ°dâ³}™ˆ–>«yäfü½á7oeÿìkǘߚ˵`Iæ–Ø\åÓŒªÝð›·~öµc̹Ý}ÕQÞÚËu<ÅÈÖ’‰97»1–ƒ¾–ð|äÀцˆ…\brüš¿®–{üzäñ wüþ{H‘wžöOÝæ/Çj†PGß úNîá²õ^šãÉ'ª¶ò¨ ãGÞåz{`n§8÷Õ°¨üBžZÛ¥FžžnÒ#ühǾÛ÷Œ¬^×uüÜI‚@CÃI}÷j"¢þNÖûëýä™ß±ñçøz„Ž®ÏÏÿýØëý¦ùO£x{„ŽYJq,Ë»û)f›þïÇò{„惾–äîò;‘Àsñù2Q>Ê ‘gÑ'—B¶yQ2ô8‹3C³tå(TѶ‰ãj‡¯m¥`yz„ÙIòÐéÍÆ‹û–¬‰æ¦£ááÒFˆØ†ÕOoXýô?&¿±ÿ4¯Ü<~#t|á˜Ìû OAö”÷üDZ×ýêMÎ",§˜:V$ûúžÿ8Ö±t_KøSº%ðn<͘–ËyNOȲ¸Tâ_×@• 1']3,bÃúš—¿¶*ÍrËq<—wýè‡%äf9jö¸•oméÎcɤ²ôß$¢ç§½î6§Þû¿Ž3^\ûË7ÌyJ`þèÞÿu\6͵¿|ÃüÖ<¡›ß^ûË7Œ”–¬Ìž–cAæ·Ž9x·ƒã)–ƒÆ)ÙƒS×Ç’l£^–VõMÀSDþ¾üö…£ jZ;×ó1ÛZZ µµ|4¬wnùn«R+·Çs©|­Æ›;o~,—$É;囯¯,¨ gbD´bêJo·âš_¼nk9è‘ÒûO<ù¸åìñi¸ƒö×¾µÎ¥þ%"!…™¤JÁ-ˆÐm*Ø|®Ý"1¯0]V¬=#n…ší©Âý,y%ü#Ö²·`Ò£ÿØ`¼(ý(Mˆ#U"d¿ÉŽ›î,›ë,›e,~†ïâþö¬Íã_ïâOæxŠcK „³Ð£•<² d°ñÖ×¼¨ÚŠÞ¨ÊYnоqëjŽçh ÿ–ŸÜGN ,¾ý¶ëoº9Jù&]¾tÉÊ‘¹'Ô½gPÀ¼ ¼()°:yðû³3Éò¥Kø—F-óëÕÀ¶­Ë y*XÕ@ÀÉW(† AËBÑbàÕ)„¿½ád4àáÁ>Œ$Ÿr¹Y0{„°º@¹!¢ @éèŠåE´ÙÀlûÝÌ+‘;€PÊÔ‘ŠðѦp%( 2šÒç‹*” „ rY±äŽCÁ¡ou÷Hd~Uà'„Tˆ_èJ†?B÷“¨øƒãøF²ËO¼¡h?Â¥QPh‘³{Qù%S‘­‡F!å ¶Ã! ªU°DâþPŽüOgýÿt~—¶~„”,… %S™)àMX2ÕÃ%çŸÃt¦1Æt]cÄt–ÎhŒ1M?p„­\ù*2º14O!(‚Îñ¿¶È€wP{žœCí–ÒžÞ#ï<ùO„:!Ø5 @¹‚uQ „À·@!! høn þâ|SFny.vtt¸nyš+Æ €ñÄd™¡JgÂʇ%áòô8+#³Ï_­xruÐx!Å¡ô÷›`GLå5£ï9 Àà>BPœËFKt!·ðCv?$“%=9…[rŒÖdÞÄ’É×ZßúzÄÁp,.œa$ЕcĨ\2të\{x(OÓÙ›‘gy˜go·±DCw… Âå–+Ç/šÇWÆ£5,_™2’v!(ε°=ºOp%þLæãó£ùÛîö6hH&kƒÖ×íSÇÀœ†ñº"¾ˆQüúVÖ2M{'Ôt!†wãSPYœ¡»rÏ9Ú/ZÐeù{\baÀÒ((§5+þÄ¥ð ±Æª”— ‹ÒøœA¾òj[þ2Ï=çwJy‰"5Ø¿Þ&"œ/‚m>š«««««« #§¸×Cü9C´ÊMŠEWW—1SS¼c³Í<¯é£=”׸E#@ˆÒÅ1ÿ z•mVJÇÌÍ™u7ûÖÑó)vΦ·gåhž9½£ÍöŠ;fb.Î1±·ÞÍîV¢ÇÔÏyŠ£Wä¹åSžîðîh·QÇÙÔŽ¸u«¥<†o;[jí›eHsv+„€¢]Yó« Ûœî8Z>rLì8Qúz¢Žâí1G[òôÈÙ1·S¼«ã}yáhg>œ§8v ‘Ž]Àßhœ-ÌÙÔnxÛæ=ØÜÚ‡§)Âåtx@(‰…&Ëíü•ž²Jsº©ÚI0ªŠxù=h>!–[Ê‹¿ýåOæ·§Ÿs!„Tì„eY[ ´!»xUjAT†å¯‚yÝèyæ¡ÛÇ’â6E´¥WÒþK.ûg]g)EÕu¦éL×u!¨d94_Ò†» /Á‹â¨ ËSóÚ\ùs»ƒ¶ƒobÇ Ö‘—޵P!¨4©Êw‰åÞb‘´s„Eç’yäÞRqu"W3ü?¬–XUêš÷ée/o-›÷oï3;”ÞkhüùÛ³r4Ï»Ç)ù·öYò Ú>n%úÚÀyŠ[så²wÑ1Ïía‰ù\Ç jª÷–+þv梹W^D¸4*,¾ý¶ëoº9Jù&]¾tÉåW^Iððà÷/ºðbŒ@T3É÷HÜѾr“åØÑÞ¡ˆÂr†ÆYcŒéºÆˆé¬&&2Æ4ýÀOþ¾Q‡Å:w³“'S ²@A1µÐ÷¿89*“wVŽgñ¤÷ØÔ„€0𬋖‹ï…›(€Àk ç&–c…›e@!%H¸{ "¿3¡££#w;”ò}¾¶åb¼G«šŸãZF#°Äo‰Á;BP9âÇù}öždÙcÜQ˜Z—~h§¨"Xå¯Uóq%T¦ö@ü „ 2ÉÓ#FK°RØS“×R° KÍ`»FA)z–»ÔÝB2Ùƒ%Ù}K2LÄk‰'±ÝTï Nfk…vòÎÙ£vAm ÚAäw‹½šÞS¼[õ-M.!º¼+è= <Æ’G5½›šlð®¦[H· FÛYBŠp-ï·ˆ3<“ãæ–¿[Jï€M¹„”r åf^èœÝ܈p¶ñwoä)‹Æ{'Î%ŽUˆ z$à·Äm”úŠ·w/óT0òΪ°4 ªn™«bìÏ=çHl+JYÂrÙCtUŒã]„ƒGà;ú?,4Ð3E+»M ¹o¢"÷hð¥Ùí\Í!Õå,ú.æp&«ì6±¬‰ÁÏß ÝÔÅj4¸‰X ˜”õM„Å­£ù÷­@!ºø +bïÀ;„GªÝÏãY€òÞ2ê‘Ì-ÿ@ñ’r ·ä.Š'´Sˆ6ñKÅcg娒¹ä–{=Xš×78WhÃ"ôÒ¢í¬JEX|ûm×ßts:•òMº|é’˯¼Ó4àáÁî_táÅ? ô=r, –ËL²|é’¹óæÇâqI’¼Ïzóõ•–ùÇõBaÛÖe?PuâWå°!T?`›e@!·ñ „”*—~t$„€ÝTØ5 Šïx9ng÷ŽÉ{\ËA:8Zw‚Ñ‘Bœܸ)\Ðè»áâÚ¸ÅZòM@A¢#¡ë(e°4 ªŽ|+”x„”ZàBÊÞù+pÄ"@qÁÒ((3_Ê-ê)!ü3{€Ç(0ÞAŽBD¢ 콣󄈎€à fEñNév®cnÞ9Ûcú¾öÈ6Pþ€ÒK£ „„€BÊ Ë&Ï<Ý)Q¾7`×rþÒ#±3h&E)´2Æ„€j”Ø7 ¼¬°¸¢ˆ¶As…à:STíM E¯x (µŽjOŽöãæœ¨À}„ t0ïÀF<—Ãa’쓈cb:8<“ݼ@¥ðÇòåX–=>”›Ž‘4ÜZÞ»hKöÄ-ìÛn¡<,µæé&‹!ºÕןslÇ^öâØøŽ„p`BPEnG`#LjNÞ®¡cnÞ‰=b9Q`OÞµ3¿öÿÄ_–w)ü’ãVV$ÞV¸µ>žn šÞ·¾–ÛCzÊÍ£m,O`i”“4=7þs 9ïDRçó}ìór^çYKœÅx‰2÷¦Î‡P>x„ ŒÉq^á¿ÿîYðÍŠ³,ÇdöÇ¥–oC•²µEog!e¯‚e)ªùŽ§î š!! „ \Èß~îÈs.Ó­çedyeìï/ñ6ÇMBPŠßFÇ»Êø£ †ÇSñSFö™¥ŽÍk~ˆsÇÁ8VC·yþ†h &Í1ðS¥‚ûAшðI•Øë®Åìw¤ÙgsßLjƒ2¢èA!(Å g¸Hâ%ñ‡ã 5)Çx=¾a¤#éäÈ#Œ”[G䨉ÜȾxÚÜmˆ†ÈÜmä»Ùaà'žž-ÇØOBP§ü߈6‘GMŠ$^ñE\"ÏØI!¢9†‘ÊÅq÷x*J7²G†hsï¸ZÞW'üá–òøÉ׆2]6€‚’^«Éq*+£… PŠ[y-=ßUË·ýB QhÕ²0òÌm\‘ÿ†íkgT1Ûo„PùTÌ®+l˸”¢[`~ò§÷ òŽ ²ñ",g9^ùzœÎ¡)P†–«rÇàSöÒÝ à D´UÃF.OáñŽ{E¶'86»¯WäÝìö.Z·QJ?ÿ(Dy ~rMÆÓ>Þ&™g u‹}æñuðB_ðz„!tÓÇyÖ7BÏé<š‚Úã–ž¿t©Êñ” ­Î0þHUö½-ônáÍîÝ_¾±Lý¹ô—G#x¤Ô>AǧKôËRÊ`i`)¬ PžƒS ÓGeĽrTšÈçèü5KáÜÒD<ÍU«µðAٓןú+5BS‰×ÂÞìù«Q9v¨Gû„hº›«L¿BPíÎgþ¡©ôkÁ¹¶™{Ê´C=Ú'hÓRAï+Â2mL,‚jô#܃ï?Ï|ÜôFÞ½rËÒD¹ÄA+£¦ƒGJô{h¼VÉû‚Ô1Ž’ïé<šÂÙcŸ,rÏÍã”@­Î0ßönv·S"éÇ@Í:äVh3?ϰÉ}ÄRÕTïÖȽúÅBX|ûm×ßts:•òMº|é’˯¼Ó4àáÁî_táÅ?¾*Xš“‚~€œI–/]2wÞüX<.I’÷Yo¾¾Ò2ÿ¸Š÷¶­Ë K£ª!E£d½.¸ƒB@!Å¥ì6¯#´ BrÕ¼h…¤ñêÌrD‡! å»AÃíÑ€²7Ôƒ‚ú|¾ax"Ñ{ÌKY޹Ù=9KéÞ‘S`KYij !ÀêKùF¢áöâñ€(ïJ¹ehʆÛÒ( °4 -r$ÂK!)ˆð¨FUæ|¨#B@j!UAÐQ€7XEðÃrðâMžÜ8x‡À# pbéá ã–ÏQß‚ˆ;ðœK „8èïk‹x¸çÏÙã g2«¼í„™:¶ïèÚ¾B zùÖ-ßeYt1ƈ©ÕxoøÃ‚“Ÿ (Yt]×uéû`LO§Óæƒ!òÄfU „„(–.]ºwïÞìÛ¾¾¾'Ÿ|Bª…¼ÞÌç ª4ï ä± ÷>‚Šäé§Ÿ^tþù+ÏœþIDAT†îÝÛwÙeŸÿÇ?V@Aµ×]-åµe†ÇZlÉ}÷Ý7oÞ¼…§Ÿ~ë÷¾wιçΙ3箻Šrø:öc9hqÚ<’¹yEö×ßzí¡Þ-w-,Ÿ:¦tœÍ”,¢(þâ¾ûN>ùä{î¹÷ÄOüñÿ¯(†—3Ü>JQ ía ½C/¹% Q"ÙžýfyËS´£üñ¤,¥{4‹oËäh3¥¬…÷Ý{ïÉ'tñÅQ¸'à‚…ÿ /üçz‡ŠD|3á/‘§àÔÂ/|á_rñáÞg-¬,Så /@Ù!‚¢(’$y'Ó4M!eãHE茚Ãz–:AÅ“åßoîü#½“}øÁû19˜´aiT‹tå)üSIy‡•dÎ9ï¼×^{å“>RUÕ1clçÎ]›6m:ç¼ó‚ùš‹o¿íú›nN§R¾I—/]‚žü,ºðbŒ@„3IçæÍo¯z{Oo¯¦iö”’$nm]pô‚)S§ò^"oÛºìñÇäpÖ£.@P¦LÊ/rü`i@U!! „„€BB@!! „„¨ " ̫뺒JgU×5A%YŒÅñD M  ò…0£(ýCëÖ½¿ió¦Ý=»ˆ¨­m촇̛=¯¶¾V’å2mÖ1m½»{*¬ËÃUª"›¢B%­ìÚÙóÜsomsþuLœDD]Û¶¾øÂŠGÿöÈ—¾|•$ËšS@áÖ1mÆ‹ÂϰÓz$3~adƒ¿”¨ì¢e€ZaŒ =¿âÙcŽ=îÔ…gdO›>cÚô/½°â/<|ÅUW§41f9·ww¦\(|Ó¡³B+édjÃÆÛÇ;uáÉdò?øÁ²eˈèüóÏ¿õÖ[O9íôîî®÷Ö¬™5k–¢(®¯-3oöHö çCníÉŒ¿–™Ýñ#c¼3ñ0Ìl^öâÀ­8»µöLxì Q)‹ßºñíEû–ëmªùŠÊÃ<›9G] ¨|!Ì(êG­;ÿ¢Kˆè?øA2™<묳yä‘ßýîwD´xñâãO<ù©'–Í›??šg"GÇÑ÷ˆyN´äæá‰Ú?²Ÿî‘À1ûÕÝCŸxì W©¨ß» Çr}sð(Ô·\þ–7¢¥O®·OèLß½»güø Dôä“Oš?2ÞŽ?¡³s³\¼ý29NOù›Ý"Ì9hV›² © Y)@x„$ôî‘GáJç‡eí+¯g  \ Ë.Äå{þͱõ8O·WÇ÷Ć9žU>áÁçËRÛ˜¶íÛ»§NvÞyç+¢çwmßÞ=eÊT]×Í>ü³dYø‘x¥ù^|+˜ël©Ž÷‰áƒÛº7œ?€\—Fc±ÄaGÌ~ýµWˆèÖ[o½âŠ+Z[[[[[¯¸âŠ[o½•ˆÞXùê1ÇÉd \±ŠôË¥õBŸžÆ„wȯG‹Ë3›¹té£/½°â”ÓN_¼xñâÅ‹³Ÿ¾ôŠ=½½—|îóƒƒn3‹Ûæ#Ùí ÞGìó—ysŠÛz£ïR¤[An™ð¤ç™sñN"©T î଎ï‰ÞƒÁþ©[ž!z!\›À‰ ìß~Ûõ7ÝœN¥Bg¡ªª(Jÿñ÷ÍÍ-§žvzö†ú—^|¾¿¿ïò+þM…L-£Ñz6˜˜*t1 4]Û¶.{ü±6sʲ,ÉòUWÿûª·Þ|êïOìØÞMDãÆO˜;oþqÇVÒAUÐñGÆ W‹$MUuM;êèÇ‚$É‚@º®g2™áá!ûe|)â} ,@·JN‰ˆ1¦(ŠR¤%P ˆGB@!! „„€BB@!PDöÐm]וT:£¨º® ¢(Éb,–ˆ'bhb•/„EèZ·îýM›7íîÙEDmmc§Í8dÞìyµõµ’œS)Õyµ"k®R½ (u!TÒÊ®=Ï=÷÷ÖÖ1ç_pQ6Bý‹/¬xôo|éËWI²¬©ªãg¼(ü4WĹգèH¬*LÕøK‰ÊÈ!Z€BÆØÐÀÐó+ž=æØãN]xFöø´é3¦MŸñÒ +þòÈÃW\uuJÓìz{w÷à;\¦¾×0N%*„édjÃÆÛÇ3«`–SN;½»»ë½5kfÍš(foÖYt;hŸ Mµ{™ö³Œ#Æ_Ç|8sð=b·Ç£hÇxŒñÎÄÃ0³yÙë·âìÖÚ3á±'D¥,~OèÆ·í[®·©æ‹9óxlæuF @B˜QÔ>ZwþE—¸%8þÄ“ŸzbÙ¼ùóù…Ðâ&f¿ê–ƒnZhŸ©- ¼=Qï‹v³ÍnGÑnÖúVÇ#ûÕÝ»³|í W©¨ß» Çr}sð(Ô·\þ–7¢œäzû„ÎôÝ»{ÆŸà–`üø ›eY.@eJm:ÈÑžüU'œƒfU°>*ä`¨ÈJ!âtEÇqU6Og  \ Ë.Äå{þͱõ8O·WÇ÷Ćù®ê—Úˆä*„²,µiÛ¾½{êÔiŽ ¶oïž2eª®k墂ü³dYø‘x¥ù^|+˜ël©Ž÷‰áƒÛº7œ?J–\—Fc±ÄaGÌ~ýµWܼ±òÕcŽ;!“ÉÅW(#Ÿ²Ä½Ãri½Ð§ç£1áPa,.Ï?88àöõvÛaaymßâÈyYíx–Û¢Ÿ%½cßßßwùÿ&ŠB&Ƚ•öò¡‹%N×¶­Ë,‚Íœ²,K²|ÕÕÿ¾ê­7Ÿúû;¶wѸñæÎ›Üq'¤•tPt\ÂŒJDü0&¨0¢¹«ASU]ÓŽ:zÁ±ÇŸ I² ®ë™LfxxÈþ@_*c~Á,Y‘ [€ºÂSE©¾%Pe â€BB@!! „„€BB@!! „„€BB@!! „„€BB@!! „„€BB@!! „„€BB@!! „„€BBB@!! „„€BB@!P1Èæ7k?|- ²9bÖW!<á¤SÐ@*›þ¾½®Bhù ¨xð!!! „„€BB@!! „@e £ ªfTUcŒULAeI–cÆ[]§-{Ô¡´^AU$A †„8y´,:ºŒ)Š’Édt]¯_GåX,‘HTíH†ÒŠÒ½mÛ‡|°w™.›ššŸ9sÒ”)5‰­Û‘ÙܵóÝu›ÓŠZ1—ˆËógNQÚgMp˜%G’Éþ¾½;¶wVL·Ö×ןÐ1jTkMm]íªa$CˆMUw÷ìzçU ž>uú I’*¡Rš¶qÃÇ/¾ð‚,É“§Lîî§î]½o¿¿áËç?÷ ¢(T@c¯¿¿ùÏϼɉ1“Zšý2Š248¸ukçܹóGi«ŒnÕu¶s{×Úµ466ÅãMétºÚF²$si„€`dTuÍêwÏ8óÌiÓ©˜JI’tèa3e9öêË/·ÛŸŠ¿ýÞ†«.8aö¡*¦Ž‚ œ0wZ\’þüìêqm£'ü©¢(Ý][çÍ;ªµm¬®kªZ!~p[û8Q”>þxý§Æ/´a5Œä†Æ.?óA‹½{÷Lž2­òª6qÒäþ¾½5Ã%•Ì3ÆW^ç61©d쿈éº>44Ô2ºUÓT]×YÑ¢Â×ÞÝðÔŠÕÇ5óK—|zÚ¤vÆhó¶kÖn|è±Õç.”O8rP2È …Â༺zÃÆÎíßøÚe“:ƾ·nãÒg^#¢³N9ú_/>ó”ãæ.}æUFt"´TØ„ÉX©-(ɲí¬c!t°¨ü}ÙÒÏœa•ä<ç< á†ÍëŸ~~õ~í²IcòÛ¿>÷ÒÛícFÑþöÜ_½ôÓ§,¸àì“~ü›¿ŒmQ±F ç÷ßü¶Œ¶/–› :—rîs•ÂTáïË7¿ýÌ¢ þ¾üñÏ,ºÀ-±ãGMƒýe7VËzŸm®B¸vsò¸£fN껡sûs/½=÷ˆé?úÎÕÄèÊ›îúí–ŸuÊ‚Ic=jæÚÍÉS1ÅÀE.Zr÷rÉàó_ø’ùí¹Ÿ=¿±©y ¿ÏžÒ㣲pÄ+idæ*„kÖnüâç>­3š6eüýä›D¤Œ¤QC]­Ñ™ófNÿÃßž]´ðH|Ë@…Í™9æ‹Å2N{-9oc±}CÉž’=’=˜=Ñ-ç|×1“ÉȲl.Úb|ÖT³…Æk#ádتFÀ¬mO=±ìÜÏžŸý›•ÀìGÆ óqÇ#¥6’î°Ÿh¥æžõºö#…¼ ÈU;·íœ4±Ýøyì˜QD´¡sûwø["ºþêËŒZLžÔÞ¹u'æM,óE ™Ý.n§—šfXì1Þf«ýÔ»RÙù4¯Uc,‚É×’CSs‹¡m眷¨¹eýùá‡Î9o‘ñ‘ñÚ8n`>’MY.XF©Û¥GH9y„FÝΈFFR† .þÎW§O¯ÓOœèxuœ£—YÈ©0O6˜]‡’õÿüðCÙ×f 3–LûûöoÍÊ×Ü2*{Ü1¥ùÓ²£,üø\…pʤöÍ[vΞ9ˆH  ÝÃ#©¹ø¬©† 2"6oÙ9yR;f@PId2U ü ohh$¢t:å‘ÌH“6ãmCCcö qº=#±wæy­£QôÐÐ`ÖlãˆYÚíÉÌûod›Í?ZTMU%—,¿šéÙå°0vúYgÚyúYg»¥ÌѤ|Œd·žò¥C—'Y‰ ᜙Óß[·qŸ2j3êŸ/>kÖÌiŒ DD£÷Ömœ3s:¦NPY„ÙU188`̃ƒÞY[Þ666eOill2Ø 0ò÷Î<¯u4§7i1É8hTÊb°o‰MF†yù)Š¥Ñ];wðtköàÂ3?=¶}ÜŸ~hᙟv¥6’­â¥C—'YžÈõY£s¦Õ¾µz]g×.H'zþåUZòÜûk71cHuvízsõº9Ój1q‚Ê’A ÷àÇþþÆÆ&c¦°CDö·æƒö#æãF桟K™KÍ&f8šš5Ï­jnf4`.ÏÞ,ÁádhçØöqå2’‡™ï(õº–â=¢íå\=ÂS?õ˜Þ'ž}õ³Ÿ>iÒ„±Ÿ9ûäÿ^òÜÂSŽ&F:Ѷî]O<ûêiÇLÂM„ â”0À“ í¿ú455;þüÓÔÔlNÉt½¿o¯ù ýˆ‘a’ñQ?,¯£=½£©Lן¾²ŸÖfSÚÏþTÆò5—‹|³Œ÷ñçÿçYãÅigœå±$P‚#ÙÞ­öQjï/Çñà8BòÝ×Q !õ©“ž{ùÕ{îÿË‚#gÎ9|úïñ="zݦ÷×o|{õºÓŽ™tÖ§N´ * Qî±Û÷îÝcÏÄ"5›À|Ü8h9bÎÍ1ç|×ÑR¨až£©–Ė׿Z{·U~– ×rêégZtË8b9n>xêégŽ¿/ÖÕŽíÝŽ)ó*„¹Œä@cÒ܉¾'®Ç£BC §M\ÿÞ¦äŸ{vËÖD4yRûœ™Ó¯¸èHø‚ R]Â¥–#ºÎzví|cåÊÙsæ¶´´è$Çkjž]¹¾¥±¶µ±¶2ê¨iìƒÍ»iýqGÚÑZß\wð,ÉX<^³qÃÇõ ñx¢b†ëÐÐàÆO>ž5g^L–5M«¶‘ly`ÁÖ¯ƒG@0$Y7aüœÔÜÕ«V ôk±Ñ@’¤ææ–#fÍ=ºµ¶®nR ¦[ÌñÔë–¾´¾bú.—Ì1alë¤VëÔO$šš›g1kã'Ÿ éÑ­¢(6Ô7Ìš3·u̘‘áá*ÉœgA1ŸÆ§Í˜6¾c¼ªj³ãNÅx::80ðÔSOXþì³W«ªVW_?2<,"ïÿÀ¥N:5jÛ6«0-$âñþ}O=õÄß~ôòή®¼å÷õôüæî;Ï>{µˆÔÖÕÖS¼á[ß¼êÚë†9# ˜>A˜H<þø#¦ ˆÔ74ÌŸ¿ðÿõвeGFc±ƒCæÏŸÛ¥‡w­tzo29”LZ¯¼yà@Ú2 £¥5ºøˆ¦£iknŽÑ€©ÒÙÕUøéÌŽÎÎÀÈ ÂÌîDÄÒõ¦ú¾„¼±k¨'i¥Ó™T:ÝÓ?²ö=ËÖ7¯^½héÒVZ0ÉE)yÄBƒ0Ó—”CíªÍÔÔd25õ‘T:“N§“©t2•N$R/¾¸cxdäï?zb[[=ML¨oûFùÚ×®w°N@ú\ñ¥/‰Èm?úQÈgÄBƒ0½cT1d8ÑÍd2“ˆ§Rét*•N$Ó‰d2‘HÅ“©¿<óö¢EÍxÿJZ3Ö7~Ç}|ýõ_-môGt÷S.mrõ¯øÒ—œäsR0pÄBƒÐJ©Ôθ‰Eúûã»w$S™d2H¦âÉTÜÉÂDêÙÞ~ÿ%+hÌX_ýêW¾ó›œ%çS#„€§_§øv‡[o»íÊ+®ðEà­·ÝæÛ_Š85jÛJϪ%QÝ–èœYËç¦eZ¶aZ¦i›¦¦eXÖÈà0û$àîD7Ýô]ùÊW¾ì 18LÚ¿W‹4<³áѽ©ád&™JÅ“©D"H&ã‰T<™Œ'R‰d2‘L×Ôj—¾ós´à݉nºé»ÿóÚ«Eäû7ÿÐyüý›("Î@·€o¸SÃ÷oþ¡[ÌÝ7‰ì˜y9¨Ü2¹÷Ê€—”¬=(gÐ4­‘39SIJŴlËé Ò#B{„Žk¯¹ÊûÔ}üý›xí5W…È~)°#ÈN¨ªr0­Lwàu×]ç-síµ×~ï{ßsŸjš&"Š¢XV_Ÿ¨Ug½þöË[¼Ð=O¦‰d<‘Œ'SñD*‘H&S©d*“L¥¯þâÙö§Ò$@®`sž^sõ•?øá­"rón‘k®¾2׸N1‚ÈÛ%tþ·¬±ßýÊWÆ~Aô¦›nrŸ^wÝuÎS7‹¸jTŸÕÖ¢Žú-û‡úú3¢©±3¢©t2•N§Œw±äüÕG³OyƒPD®¾ê ùá-·9iç<õ•w^u_rž„@P BOPDnüö·!7~ûÛ×ík‡ˆD¤¨‹e´MëÐ[¥ñªªêÊK›vÅÉD2•H¦“©t*e¼ëŒE—ìÔ®®öI oÞr뮺òK"rÕ•_ºåÖœô° <øÀíÞð/ÿâ}8DŠúú„ˆÔÌ‹*õêì¨\дä¤cæÜõÀ‹Ûö¦"šrôŠÙgœ¾è¼ÕGÍîjd‡Ä wëm?vÜr뮼⋹’ìÊ+¾èäŸãÊ+¾è”¹òŠ/ÞzÛ—®¼â‹Þ§!Þ%tþ7-³Øý_¨p~t{׎í¬UÀtQßÐøÿ~ûûÑËÕ‚k-•Jýî·¿ù«ÿÍèȰ3$N?øÀ}:o0ÓN&úà¥úÍÝw^xÑÅ­­ùõúÀ>òð/ýP&*âÔ(•)™LÖÕÕ_ö¡Üû»ÿ,p”Ë>ôË´’ɤo8A˜–FGG›š>ô‘¿-°¼e™££#Ùà BÀtU–»Êë"ò¿¾‹µ ˜™tù›¿ÿx*™‘Ö¶vÖ úض¦•6$•¶2¦±E¤{×ÎCWP},K2¦™J‹aÚÓÎÙ# ÊúiÃ4LÅ4í$ÕÆ¹K’a*"Šs4ï(! º€–m§3¦e«"ŠiÚ©ŒUà¸! ÌÒéÔÎí»é)ûbžaÎ[p,A˜2{F¶ì((‡tí°§šzX¤™‡uì £ÐŸØž· ÐY%e–H¤R)£ðô…ŸªŽ=µ,Ëû’aZÎ(…Ç!A˜ñäXVýôg÷LÚD—1ÿ¢ Î$¤¹©þ§·~MQTU±Åsgy‡mÛ–­Ø¶eÚbYbÙ¶ˆ†%"¦e;N_а½dX¶iŽ —ƒWŠ>³nÇçÞsÄóë¶85§3™h$B¦ž®©5Q]Snè䜈˜NŠ˜–%1Í´Ä›Ž¦e;˜v‚дŒƒC$ǽy‡FFÛgµ”!çÍ›'"ÝÝÝe_/Þš‹ÊÄÍ p™ÔàèPwKGžë35U­iº¦ù†[¶%"–e»‰hš¶i©¦mk¦mZ¢Ù¶¥*iÃR5ŶlÑTÅÍNÑ4Å4Ç{mª:AkÇɪʯP²×ÿôÞ|ô3ž¼>بŠïODT%8ƒ4EQ5ES{UQ•ðNgeáD§`ww7ÝA˜réÄÀâ/ÞõDxªÚ¡ S~Fèf¡zxÂyÏ :(ªêÄ.EŸº'$}g&}å>7ož÷̧[ ØÌóqê Ÿð¹”3EjêO½ìªçúÕ†'¯?æœóô½Ųm' ­Š¹nÑ9ë‹77fÜnäx‡x R¿¯¼¯ÎÀx¬?0Œåuú%èy-¤_èžU=Wº}A5ô´gÅa`×Ê—FÙåçÍ›W`[¾„¹”‘Ñ?¬¨-§ðëù²P©Ìùï™Wï©È\ÑÅE¡PMzw?ïüY™^QŒ„Ñó¦¢ÕŸzÉwre¡e[–m;rð¼¨uðúOËšÊÓ¤eø¡ïL©/ÀHA¨™Ôà›k~=¸ýOƒ½›ÚZëÍH›3¼1Ö&FBDŒ¾õzÇi§\vóK÷^›|ö‹þwþ,´lçhå|:Xž ôžås8¨JëŸýÉŽ—~¶ðˆ•Gz^û¼Ïˆˆmý ¶¢¶dúv*FBDRý¢³N<ýÿxî·ŸSR?“úOdgaQÓµm[dÂO¨–çÔ¨{^Ôyš}Ëø?#ÌuÍKà ÊÕ|æ7Úùðy½ñØó®h›‚“‚Fÿ°±÷m³wŸ“‚¶^ë”7·‹ÒxÊÝÛ×6zÇa)h[Á‡§£ó}yËó5y˱ Qß½,ÊÐ#ôæJ!ËR W˜åºv´´äµæá«µXÃiïÿ†ˆØæ¨±ÿu{d‡dF­Ô°ˆ¨±F‰Ô+5‡%Yb»^ÓzÊ»¿þø¯>?2ú^'Õœó¢îÙÑð¢iü­5ÛùõûЯÏòÝ­)˲LK‘ˆZpf¬õÏþdèÀ®wêç""é7ݯؙ¸“‚VrÐ)£ŠHVÚýϾ¹îOz]—dõó̃?¥æ|e>;ÕLÓö ´lE$¬#þûj–=–|–e[¶ühÒ‰„€P™ÔàŽ—~vòG¾'"©þ êà:;·FöZÉA%5âtë,µa¶­×*FBôQÒÛ´dï¦7žÛ½»÷ÍÌç:;ݾݡôò 3ß‹Ùñ™«/˜2•DÊéSæ9§Jto|´¹keGç*;³]Ùb‹¸)¸wÔê‘ÚZY¾xáX?ËQG·¥F·n^··?³½æ Z¬&WÚeÿXvöm($÷yQçÖF视JÁ?ÆMôl}xÑÉ—*’4¶‰ˆï‘žC·íž}äùsNxWͬùo=ýσI£EÏØæ¨ìµFö®ßøºi;êüŸíyþ­H¤æ`žùÏyœµ»FÆ´,oOî°Ìêø!A(ÂŽ×ÿtòEÿÓÎôØÆˆ˜£VjxÏîoí3ÏþøÃõ-ó2›¥i,êâ½VjxÝÆ×ÍHÛ)üõþ¾DCsóp<å¼jÙŠ™ïü¤7åà {MÛöžU5'æ{÷! ˜VÓšîß®é vj¿ˆlܶû‚Ïý9kögX²×Üõú¶N FbÍzÔtSPDl۲̰oë¹":ù7Ö‰´Ýh´m˼¸fœ}A‚FQ£š1$"v&¾g÷Îù+>‚©ÝFÿ¦'×lléZè¤`@ÎÙþëe|²óÏ)žý4ÙÉ7þn"A–ɰô&ÍR"u#U­mÏ.Ó³ñå—»wLÁ&÷Ûu1çdçI'­°,1LKÉq^çŠÛ)ï@'äܯÒ;O¯”Iğژˆ†IÊ ¡¥)å+¶ëP Ö‹¤Ç¢%’élû­™E Û#šˆˆaY!ÝBË>,ílëPzÿ! ÀüÞþòƒG²©7iZ}[×Ü{_ô•9öÜÿ5°{ý¼åêQÕ¶Š’ÛJ×ÔÄ;Úé?0¸pn,͈ˆaDMÅΘþäó†œ}xæy#Ð9)jd]}j˜V:cŽgI B@€¥'}ú©».n]´¼½¥^j:š›Ú_]óp&5xðS@[ÄléXÖܾ@QR¶•V$)¶ìì‘Lf4“IG#µËæF;;µšè°j×g”xÆÖí´’64Ãû¨Ï×t?tRз\WÊ„€`õ-ó9ûëþçwÿõõ¦Þkš;Þü'~õáÕûm$Ö$’¶í´¢¤{(c›ÞN¬ß<ÚÝ›‘L&!"# Kd8·–Í×OXn®ZÙªkºfEDELÓRÇò,Ç÷ }áçæŸó4ûÇh2Fé'NË„Ù÷ ,j\É}×{çÖNSõ“ÙÓîv¹ÖØ®ÃÒšrÊgxâV›îxÖO…lÉ•Üôe·øøˆÈ½¿¸nåÙwäòãŽ9ù=òòÿÅYÍG7v®Z¹ú2ÆÈ¦·¯n‘…íÆŠ#ÔÎæTsDRú\UëH$ë¶íÝüVïïßùûg.<¥ñ¤“:DD³£¶KXjúð,ôõð#ÐMAôœó¢“Ú# ¼ÒxxB·qV^ÂèS›ÙeŸtQuNòQ¾Ò’¾¢Útzmº¼ƒ)v&~ÿ‘–¹+ÞøÓ¿<¶î÷ÍG77·,<¢ÅJ ìZÿÛÅïø›'žLf¬åK¢³š ‘hCtØ;n¤¦ni{ý↹gyü“k7ýî‰õϽ¶ÿ^‰5GLÅÒ£iCRž÷¼Ÿÿ¹çN}]@'ù¼Ÿ¦3æxºƒÅá¶D fÔŽ= [±+Ð×¹ä ŽeJ¶ö–ŽcÏüë»Gvõnv4Þk%öëu‰…s.ùË«f¤¶aÉÂLTOŽhš¶•Œ¤F%=¢œqÄò¹K~åÑ_üjÃç>vLC]³ˆ¤ŒšTÆôõü Ì?'˲€eûŒÐí/zP!ç¼êžÃ /X[®£¡÷DœûoȼeO±yóÕ™=Š·ÎìYʵ~²g5ü-aágKh BV ûªï>ÌE5e®ó %o„I®Ô +»’*¤q \üÀUÞ”•°é†¯BvÃb7•%*|¯/ê0UÚ®TTÓÞ@¹¶öð u<ê[æ×·\æ\:<Ò÷—WͺšXc]FDl©5Œ„®K¶ÔIüÐSÃÊlµæÓ'àö—øÁÏ×]óùã4»É0d$i¦³#Íéäíé œ™x"“=pßÑ© ¼‡æì¯Eà r8ϼ…ô9rMÚWgáiRíÄunJh ÂÇ RTSæm‘\ Ò5,peË®3¼>é¼3¾wunfª6ÝV`ÞFÏõ®%»ò’'WÔajœ»Rá»|! ”k¢|²Ä1%•Éxe“^W£×F£†áÜÖ/Í&Nw05\ßÔ‰ivRÒ+¢dRN:ŸfF÷‹¤"}vº!–t3r,cõ""ók›/:}Õÿûãk§ßVKÆt=™J:'GMSS›p"m¬yeÃñ˾ºqÇèHü„ãØ·»wo߬Y-‹¶oß±û®ÝË/X¼¨ã…×Þ‘ãVUAAX5o¢óžŸ)ãú <ûT 2ŸyWN…o¥5®o…„,ã8¿¨Ù›ÌM·¼“˜èö*ïÖXÆMz’×^qIh§ÅNïÛ£ÔŠÑX1 ©‘¨b*¶ª)Ë0ꇡ‘Á}ɤ1¿~`82ÇìÚ7P«µtuÌuS0V«EjD‹É{Î?î¡¿¼¼~Cï˺j¤PÜŸ_ó}B×ÔÑ‘ø}¿ÿoÃÌÌ»øÑGŸ‘ήyÛÞÞ¾iãz9zùŠ ›·®}}ˆœtò •Õ#ÌÕºt~¬´seÅnj4‰BªÿÂN~•0]ïê*û2Ny²NájŸÂM·Òš&×äʵ,Uz"ÝE’Ûû¤£µ&¢EuÕ6¬ŒfئMJzx8¹o×pc}Üa8m‰HÂ8` Õu”ZÄÅjŠÚ§¬\öÒúG,둺m(žÎ5í³Î:Yädç±aDÝòå‹Ç³l„…\Zxá¢j+jÞ|58ocyÏåD`µw¹WÞE(jŠÙó™kÙKXŸy[¤¼5gU øVHȺ-dsò ¼|£,+¤Œ›n s8þ r…L"ï¥Íg®¦ÏÛ@qH,0%•H[ñdº¥¹NDTÓ2´C5MËÖ4Ùµ£[D†G»ë{^í]88b×#JCS§k2†Ì½ Ûç(Ši™VÚp~w4ýŽm7ß¹é^Ö?Ø»y[fûŽýéLÎ,œ={Öi§œXÔ×ÔE ,©Üð­o^uíu©dRDZÛ&ãúœJ>€½Yl‘´ÈðÞý½onwô<óÐÝämÓ¶ôwïí‰'Í¡xzhÄJ¤ ÷WÖþê´%J™L -]r„sµKæà—{û†¿üýGoûúIߊ¯ymß›¶皃>âêü¨;QEl[}–èÞÔÂò|%ß}h}Û¾9:,"Ý»v>øÀ}úŒÝ &÷Íöúiop(#èjD?”:¦e°â±˜."Cq‘³N>réÂö§ž}ÍÆ½ÏoÞ~ô∈ìëÛ×ÒØpX5j"²}ÇHmTb5Ѧúº©Z®„ì{=Šå|ɽ&âÿ†C¢5ÔHCþæ«®Æ>iÅ|ôÎ=sÕš{ceŒ”hÍšˆ˜Ö¡ïÎg2¦ˆèjtVƒRß„µºF¦^<™[öC‘ŒbfÄQS¦&"}CfwïpWkýºMÝ"Ò\+ºýà~µ¬o F¢ZTo˜Õ’ ëŒ&<úG;R#"uµ±3O9Îûª"bZšüÆ¡;Ða‹FÊ ¢+"’H("’qR0-"ª™jÞ¿XÄ®3b 1þïnªoܽPDÎ À–ÆEKÛ2D$8Zu5z¬&Ú\›óV»{ûvìí‹ÕDEÄRkÏïëìhÕ4 U×-ÃP‚¿J¯)Ѽ˥–kMÎÐãüæl…•Ûû£‚“¿nK˜±©ÝL–±ÎUsS¤§§7—x\2i”DBúö‹¢7÷ *}ƒÊÈ@mmTDjwïl¨U_T×X£‹H]c]4Z§ªšªj"¢¨º¢êoí‘E 2i3ž4RÉtá3´á72ñd&žL¥2f"‘Je¬dÊû§¦bú“ÜÓ G8U_î©ðïx•·N.¢J³íØìÖ˜ˆìîœÕÐ,"ñQ‘á!‘H¤«·§[D:ê3]‹µÆÆ…ÃÃý†•Ñ"Q­½ãЛc' -Ë|iÃÞU‹êâ‰ôÛÝ6lÞ¼ùítÚ2ÞYBÓÆúiѨ*"ÑÚ˜wnâcûî]sfµùçRSm]ÕÕˆˆØº¦)Q[Ñ$ß=š85ZfÔ}”LÇ [jæw6¼Ñ³ïD¥Ù@Ù¿ßÔ”ÖŽ.I¤Þªk‹HT3’""óçÍFÔˆ®™ˆ­¤Ü8|uÓî÷œÖ62¬¥Óv:“ŽÖÆ"zF~¿Âù®…‰ä>ÄíoJG=Ñb1ÑÕˆ¦ë‰h¢ÛJA—ØwcÞ;¹}Gá{…LÚmP*áÞ4ÜG À´¦(QQ¢G-Ó_}dçpÝ‘ÎÀÑ¡D"M$Téh©ÓÚÛ룊ˆ4Ö4Dbµ M‰–Æ]9ñ‰dŒLÌɧ_Ü>8œ:é¸ÖÞÞÄÞý©Ñ‘x:p±ŒÉ¸Yh¥¬”¤E$V#ã2,R··gqg§ˆÄbQ-Scz4Zk뚪DU³ ¾Yo9{„…ß ¤ð[º”å6(rošÉY·%Œ;ù÷Q0írÐ9;:¿«c^Çèݯ;o¥7[›“±ÆÑ¶úH}s[}]C}m‹ie‡ #e[†¨š7 ãFâ·¿vÙÙs¢‘Z]•…³ÛfÅ"²lnà„ëb±€þiÝØ@MUôH$ZW«EcNGPWcÅ.[qw¨¿Pá‡þª¹+PQ‹Ì}”LgšÓ)<ç´YwÜ»µÎœÓP×â¤`m­k4&t-ãýv„zð±e™ª' sïZùÀ{–jVSëlµÄH‰HFQrMÛN\ù¢Ä4UôX,¢Fkl]Ó´ÚÒlÂ?#œœ;¶UÉTÝ›fò×mx*KõÞG ÀÄu »Z›ßwÎüÿøÃ3«ºÎÔ”ÖÚZ«6š‘zÕÔ#""ºMDtÕ4œ¯÷ÖÁ\|âùϯÛñkNª‹udÌH­Q""Òwò†|®Ó=ªªŠUøùÐÉ ÂBnª0™=3™¢{ÓLm4׸Uy%Á¶EDW”Z[dÅrÆÊÞg_fɬZ›Ûî ¦©"¦ûeA—i™n7ñwl¾÷ñW®þØŠ#/Hõ¶Q£h¶vðöö¦7ÆlSD,Ñ{¬/¨ÛcýE[ElëàwçíqYqß#瀦Kïpü£äÊ ½Ò”ìáßz¤ïTQ :Y¥™V(ï]}ì¥çvmè^óÊžgÇ‚JËh±C§CUMÕµˆ›‹}ýñoÿüéÇž]ã5g¼wõ±)£Þ´jm[W•ˆ~ðV¼šª¸¢hâü¯jŠªÙŠ¦4Ö?UuçO÷÷á'¶GX–û+•ë6(!…'áÞ4eÌ›j½€ gÙ¶ˆ(¢šV¦ÊI+æw¶Çî~h×=OüéèÅ]«Žl^Üpè §"ªˆ¨ªöÊú¾7Þî}ꥷÏ8¶õŸo<¯¡®ÑIAÓÔ*d¹¸  wжÅv¿šn[¶Xšš{X‘äskºŸ|ehóöý uu 5sÛ›ÛgE·îêIXë7ïJ¥ÍÕ'Í>ïÌ…G-iV¤>cFŒLIJ#étÆÖõ˜ê¿@FÑ}w0ð‹€Ü† 0‰)(‡RвlôRC1ÓéŒa¤Ó"ªhê‘‹æ._Ô6lÌïîÚº{Pd(“‘]"¢¼ïÌ•ÇÙ`¥cSéWâÉ”‘J¤ÓcÁª#JÄù]×lU×5E$¡é•T×ED;û©<杖w B@¾$±,;mÃÊ$ãF:›Frì>ºzLÕ#±¨¦/êª]6¿Ã;¶‘QG‡$mjFFŒ”•NF&ã\£©ŠHD$¥EUSqz¦â¹Ý’¦ëŠaXšfZ–¦ª"–ÛóSÔržV%yºƒ"¢ªJMDÓ5-¢7d «®>ÎÔ&Sb†j§E$cŠ-©tÖ'NŠˆÓÔ#]Äù94MSu]s¢H;ø 2¾î îïŠ-Šˆ]ÆÅ$yºƒnGL×D×Ôš¨ˆÄ,Ëv.Ÿ±,Û²-ñܳÞ)nš¶iÙvî»@Xšª97 T,ç6‡"rè[õŠ&"–-ª"Þ/V˜–]Þ¥$A!X@ܨŠ""ª¦ˆ¨–í¿®“‹–}Ø÷Ì ïÅgYÞM;U™ð%UilÀLvXð/~‚5¨nÇ»2gž~æY¬ @uèÏ„¾×¨z|F           áhkïpÿTy¶µwxÿJŒ‰¤)/ ˜vŠ»C}ßþÞ*XæêX Àax‡É w 3Ä{þ°oo[{‡7Šœ§Þ ¬Ö7ný¹FÏ5Å©„Ô˜¦¾ETyFš/Túö÷f‡_xm!I™«‡ç}5×\…ÏàT‡y0sƒ0¼§5N“Ÿ+U°€I ÂÀÓŒáyYr_3°Û7Ña“w*\;3: ŒÆìÏÛÊÒµ øÀ}3ñ'ÖJøe@µÒgà2ó%€‹Ý„„„o´¡ IDAT„ÌE\5úÐý÷²¾â’^6ÙA("—ú³¬zÀ”»óö_NAБN§h@Õ(þ õ¶ÍZÌÜ ´ B@)úªQ›¿Êû{éÅçõH”õ@ë°àüÍœM‹!hZ‡BÐ4´ÎŒ_ðúú†ÑÑç_63LRz/–©ohô¾2:2\ÄæÛÐXTù¼µùf ¼õO—CNö:©ÖñÕVZýÓ»M+µu|3ãÔ\ÎIäXðÂëÏ?3Î$r$®wôñ,W®&g3î0U•=‘ᡒßú•ý­¢¯Â™ö<{y+§u²k+¡þ‘á¡éÛ¦Û: MÞ9©oh*ãªÎ>b8S,ªþðÂΫ!eܗƹ\Ù+jüur"§‚0»›šÝÇÃCƒ¾ÎçiCc“3¤±©Ù-é¼êt_ ¬Ökxh°¡±Éû’3o“v‡ø^-dBÓèP[!­ãkg,_ëx§Xsøäܱ*¶á*¶u|sâ4o}æÚ}J>л­¾º¯ºË›½B|AXàê*mò­(g«.||-pw𶵯ÝQYAØÔÜ248àÝ-§î@gÈÐà€[2ðÝœ»M ض«Úðw…Îcߤ‡¸ ™Ðô Â)lÀ¦É5b`ÍU± WÉ­“+«Ü’MÍ-…7táA˜wtæÁ·¼Ù­ì]…¬®’7¡\XÈ:÷ Ì^´¼»CàN„© BŸ¦æ÷qÙ=ÅV˜½µÍpÕ:]ó´k÷ ig¯ qB÷©ŠjµqÎÌ-‹[­{|ã(7õA˜N§½O÷÷îó½äÝ©ÜíÙ5x«òUë<õ ¬6{ÈþÞ}MÍ-Î\åšt®é†Ìÿ´=«•Ó:n»´wtîïÝçÑ}ÕË» Ù“HëØ:Þ¾Ý'o{»à¹ÄyšÝè¾b¹öè¢VWi›P®!®óðUQÔ\M£ãÒL<5*"½ûz|::»Ü]î(!ÝüìóÙÕæ=ó–kÒ¹¦ë<Î;¡ŠUȧPSÕ:E˜] ½£Óyr2°Â/•ªüÖÉUÃxª’|§FgÞ×èÞb!{tQ««´M(üÔhQvÈ!¨„YEÅ¡wHg×ì}={s5vàÀήْû?_µÓÝ׳·£³+¤’ð Ì;¡i„SÕ:…¬ÿÀùÉ{Ä©¦ œ’ÖÉâÖà¼TBC3 \ÞÀ­¢ÀÕ5þ ô®œñoØ¡spó5 *.{öîqöF÷©mÛ¾Î(îÀž½{¼zöîéš=Ç·V[Èa%pÒ!;U!š¾A8…­ãó¾škD·@×ì9Ù/åkšáTµNøúôV^ÚÞá+ã´©³%¶Zv£çZÞìÌ»ºÆ¹ åZüBÖyöÀðEË5Wt'‚r÷¾yÕµ×¥’ɼEºÿÞË?ýY§ýPQÞÚ¼éô3Ïò~¦Z‡¯J³çÌÝ»g7ûÔégžõë;nÿy»wí|ðûø‰µêAÓÐ:,xu›3wÞžÝݬҲSY0-ìÙÝÍJ˜ô«ÁÒeGN£‹zh¨¨M‹ Ð#$a!î¹û.V`æár2« 0å–Ê_¦&9/ ˜Ñ=B_^¼÷3îã‡gÿ+kPõAx( O[ó¡Ó°É}ºÿš£Ÿ?éw¬PÀŒÂKö}öä뿚Ù÷oF<M uÞûÚ7ýƒ·ðC¿dýª+=# ljH¤Aj;E¢‹DDÎß~XéŸ|öÁ ÈÂ._õõ;_£¥1­Uåf\®…*ªžò®I/31-F|ìAÍ‘—›ˆÜyÍ|InÎYþ ?qœóàú;ÖÝø‰ãœ½®¿cSÌyàŽå}ê­Ç7bàlg^²À¹-|ÜrÍF±ó>ÝðÞ&cŸ™¸F o«/U+v¡r­¢¢ê)ïÁâÂ×#<Øä†eKzÐy|ùOw-i·EäòìºóªE""#¯‰Ø†e^eúÕUD¾óÉãmÛv»ßùäñ_ý÷W¿úï¯:Ü!¹ª*d¶ ,Y ñÔ6ÉWÞ~ç“LJO·å]{ÙB6*»f»äíÊ·J¨§\v™„™Œ5„-§‰ ÔÕèŠØ"ÖS?]$"g~³ˆ¤ÓVø®kÛöMŸ:á+ÿ¶V ¸!gÞ{ZºnúÔ îc·rgBî¿ÞW½£8C²kÈ;ÝÀQ«u‚Ço Þ9,pNòrëÉÕá|3‰IÂ\[©[¸ÀÙÛ¸ÞW}sÕ3™‹ŸkžÃ÷ Bê™èß(›™A8ö`Ñ;Þ+'ŠÈå· ˆHK}DE$ñÎÝ+"OýüHY|ú7ìùkóþë{éË·¯ýî§Op„Ï뻟>!»°w7}êP§°o”ð§ÓÍ5ŠoBÙÓ \jw ™“Ú®ØÞ£Àxf…¬ó\[©û’w3(|cöN(ûqàä&mñsÍsö\e/`Þz&ú€@ÎèáÿYóY‘‹OnÞ¹o ¥!j‹"’°­”"2kÑ¥ËO~×Ó÷üÓ{åŸE‘‡g­ ©Íù× <ÇuÿúJ'…¼c¹#æ:Ýäü뫼;SgW˜=·yG ìÚŽåÃ2Þu=︹ xçç{Ÿ91»uPÞaÈVê[ÿnÌ×ýë+ΈÙÿ†Ô3™‹ŸwG?9^Ï„èN%eŠ‚0c˜ÎƒYºó¡=§uΜÖ:g`"¹OmZ%"R÷G¥ñ¨Dìˆ /ù„ˆÜÿ˜R›óïÕ?ÉþÃÏŸâ}ꮯX®ÂÞ ù^ÍæÕ?釟?Å[Û÷>sbx…ÙÓ Å©ÖW‰·¶ì™ñ Ì;'%´]±ge¾­ú~ï3'†ï!ãîÛää4±o/aAë Ü_&è€}˜Âd‹Luðͽcöˆ¯ÝØ}ÚªŠ"#£ kÿZ‘Áívß vß[Þñ [ÄžsQÞaà{®[¾pêU?{Ñû NLøÀÀ ù¦8­ðIdâç[¾pjá=BïÀ¼s2 =Â2öJQÔ¶š½•úv„B:@¾ /p_˜’&.jG(pn øÀ}¥ÿÄÚ¡¹9yÁïþ¸ÅyPùox L‹ÝО”ÝÙžô1í{„ÏÅW±ÊSîôº×¦¨GÈ9q@u!aAÈÐ#`fá/®~'« 0åî¼ýrU¥²63A                                                   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!€ € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € „¬AAAAAAAAAAAAAAAÀ´£UúÎÛÉ*ÌÐ ¼äƒ—±¾U†S£‚‚‚€™EgÀ1ŒŒa˜¶m³*ÊEQ]×t=B@¥K¥Ó»wízcýúþþ¬²PUµ©©ùèåË,ZT‹„P¹LÃØß»ï•WÖ¬^}îâ¥Ë4Mc”a­šæÖ-›ŸzòI]Ó.Z¨éå‰0‚Ê/cëÖ¾zÞùç/Yzk£\4M;ò¨åºyæé§;:;ÊÓÑdÍ@ÙÙ¶Ýß`á¢%¬Š²›¿`áà@ÆÈ”«Bz„0!,ËÒ4+eÊN×uÓ²lË*W…ô3A˜Ù]Ì)œv[{Gßþ^çß²ºËµ°EÕ3£Ö0PQlÛ?5ªëºa¬¨iÓ#lkïpþŠ¥´£|y³g‚jž´ì¬¨zŒ«óá1U30AµMÕMj:½ŠiÝ·˜Ú™Ÿ’î`…,;·ÿ窲¥›¾KTb€»g5}Yïç±ó¯S »|išìÉåš„oÜ 1×MD„8Ùë°´Õ"‡Ÿˆo¸\5({j4‰d2™ì3¥¶mG"c?–ÉdÜÂÞ!θ!Å|…}CrÍ’+p”ìÙsåvÙË5¹æz¡/!?í RZºøÊ‡|¸è›D`±ÀÚ—hrº†!3þjá«¥¨†   ¼Üüð>Î’]Ì;ÄŸìyS'p”À}3X,× .f…(ýªÑê;8.Ñd.æäL‹T*J‘Pi½¨ ZÌiÖ# <†œÄ“I¹^£b/ ™ ˲¼Ù Ç•5@¹Žþ†çPR©dvß@çiCC£oH`±À¾ó¥ÙÍ;$°òÀ¹ò+vV«0åð»BŽàtœ„IL‹^ìøŽ^#P&‡}}"𫾶m766 9O›œÙÅr tÇÍ5ѼC+œ+_±bgµBð…úéÚÅœ´Y¥wŒ#ǾJhÛöÐР“^"’ýÔ;0{HàÀÆÆ¦À’y§XHåÙÅÄóÉbg5°r߬æzì­ajz„îŒyÏ|º¼çܼ+uðÍ×íµ„ËžßòvªŠê~~µgÈ çWKøºÍn¸)_?@%áa?‰98ÐßÔÔì}*"¾ßÌ´-ËWÌ)^lp ¿¹eVö¸ƒýÙ¿Éé+8JöÀÀ¹rºË’k²ç?hmYyOå†o}óªk¯K%“l±ÚWË'å*3Ñ5(D"‘øÝÞóŸÿÇt:59Sœ5«uæÜøÎ»ýâ÷]ÒÚÖ6Îzºwí|ðû¸ûL`—pB? km=”ôq§‹Ò„“¡NX¹ÊLt Š‹Á‰<­çÝ£'úü!A(- 饄0#©ªjZaù™¦¥iAMQ”ææ–;¶utt²6Ê«¯¯wÖ¬VE-Û×ÿB(¿ˆ®¯\uܳÏ}5˜ÞAèM‰ë‹”Vaà™Õ\!’vTçc“ib¿GXà× ïuMí÷Üi嚨÷•;|¾QJ Q¦²Gè=ûëÞôï¸80oN„T˜X!^f˜=­À©lE}à—«p ó(œr÷¾yÕµ×¥’ÉÉìWMòÑœÞ [÷®>p¿5 ˜Ñ¦ '¿sFwPAAAAAAAAAÀ$)ý·F³¨“µé]9¹nr7 _Ö0Ttrh.äýv›û\eJ¸7=`ò‚0ðhAyûF¾ÛJÞÌ¡›KäšúDgIÈÔ ì>ò¦kzé]œ¼}£ð!Ùý¤Àj ì„0Þ ¼ÉßDt°*³¶ÒÖUø<øŠq'B¨è ,ð˜žw ·B÷¶½ÅÖ\B™ÉTàéY_þѯ€ŠÂb2ï¡<ð̪/á?¬œÎ`™¤ï–Ð;œˆ©OI71ïD½ª¤Gè;¸»Ÿ †èUÈå Ù±‘]mÞ MZè83¹²Ï rƒ0û¸\ÈwÂæyë,¼Xi'fËò ´é¸€òâ'Öa¥¢K GAAAAAAAAAAAAAAAAAAA                                        (î}²á×Y#€êv̱+sáégžÅ T·ÁþœAè{ €ªÇg„‚‚‚‚‚‚‚‚‚‚‚€ê ³ €bY–ì8`Œ¤,Û®ž…Riˆ© [uÕy{lÛét:“ÉX–U=oüUUDb±X®†‘1 Ó®¢vUE×5]°È!PN÷f¶u÷¼ºq[*mTÍBÅ¢úñËÇÓ]ÇΈH<‘èß»g÷ððpÕ¤`}}ýœ¹ófÍj«©­É>ô§ÒéÝ»v½±~}ÿªY䦦棗/_°hQMPüÏÀE&2ØÙgìÞ×÷òë[>ñþÓV1WU•*X(Û¶Ÿ}Û=¾è±öÙÖÈððÎÛW­:¾µ½CÓ´ªèÇÛ={º7lXߨØ6¥R)﫦aìïÝ÷Ê+kV¯>wñÒeձȦinݲù©'ŸÔ5}ᢅš®ÏðE&òLZ/¿¶å38}Å‘s«f¡E9}Õ’¨¦ÝóØÚÙ­­±ôîîÇwb[G§e™†Q%ߎ®ÙªªmÞ¼é]sVû‚0cëÖ¾zÞùç/YzDÕ4«¦iGµ\×#Ï<ýtGggCcà _d‚(WçIéÌ1ËæTߢwÔü;~ÿ¢m‹eY###-­m¦iTÓ§G"Òpá™ æuÞü‹ß~å†_>öÔË=õò'¯ùî£~yÁ¼Î\xæžxi˶M:÷¯)îÚEüý׃÷ÿ׃÷û†[CQåKü›Ä¶ iÁ©nÜ2/ï´^ñá†m‰wœ¸|Á¼Î-Û÷<þç—W³ôö|ùö›¿ÜÕ>ë¿zÈY0¯óÔ—oØ–àÈð˜ÊCŒ]g¤Æ¦fïïÓBj(ª|i&­íœ§!%§{ úvæẠ[W³Ô²eÉ¢9ÿzó—¯þì‡-‘‘xÒi¨«uN­·|éº [9º¡ÊŒÿˆ¬ëzàa:ð©ûÖÛ;ºw wÄÀš'!$þú£¿ç‡ÿá÷ºîï«î¿÷Ü}—÷%_™ oÖìцpÿõ¶ ÷¯³ÛzB³¿´M7“ÉÏ^Ƽ›nàñ·E¡>Îfû®žó»œÏÔ;Ûg‰È–í{¾þí_ˆÈUŸýˆ33 tmßÙÃqpE"Éóå·p$Éd2ο¹*Ï”ãk¶-¥EcSsËà@¿7Ã.ºø’æ–YÎÓ{î¾ë¢‹/¹èâKœá<üÐE_ÒÔÜâ<þë~Ü)æ­ADœò΃iÚâ¾ÌÕXá¯V¸ì9Ï^œðEž’¥ÖÇ¿«ÈÁOÔm‘x<é¤à _ûÜÒ…s,9ô*€#Ð)ã;²”pÀ]|‰uÞÍ-³¼Áæ>uÒÑ÷ª/½57·Ìrzœ‡¹Ú®ðFÉT×w7§ÅâŒ7-èÚ¶£gÅò%""ŠlÙ¾{4žü»Ë.X줠-¢È¶= tqD•íÞ†QôÞÐÐ822,"©T2¤˜SÆ=°:OÝÎèÙ•8…Ã+/œaétºØ±Òéô¹\øÈÃ{Á…îÀìó¥N±{î¾Ë)æPÈD{÷õœ{Á…]Ь¹ÚÎÛL¾FqŽŒ ;ÙéŽX²Ò¶ä\3–w+ Ùt )V¡A¸rùÒ×6n B[:Úgýíe»|‰m‹(""Š-¯mܺrùR¨.¥|¢6<<ä)†‡‡Â«ö=mllrGillr?A ¬?¼òb±”S£î(‡Þþº'<½ÅžøïÇVŸÿî?=þèêóß²ø>Oü÷c"²úüwwtvíëÙ[ Í>óåè´—Ûp%+mKœ±B¶ÒM·b•„Kjï¸oí§®Z0¯SDžxzÍoî}üo.½`Åò¥Š-¶ÈŽî}/®ÝøÉKOàÀ‰êŠÁ÷Ò¡¡Aç0á>.$}s&lÛlllÊUó¤Y}þ»}½@7´œüswvÍvþ-$ÒÜtÆš€,½YÇ„… ¬´-9×f–w+ ÙtÝÇMMÍNÍÓ&—->úìSú~ÿØ3ï{÷™ æv¾÷Âwþß{_}ÖIb‹%²k÷¾ß?öÌ9§,à‡ÖPuIXÄ/fs>kjjü<¬©©Ù[Ò¶¬Á~ïÀì!N=Î,9/åú¤­Èaé=B×9ç]à Åsλ ³kö=wßuÎy¸¯z;|•<ùÇÇÏ9ï‚®ÙsD¤gïžÊlV· ²‡ø†»Ýkˆœ†ÎU²·äì-0{+ \œ¼#æZ•„"rÁ»Î|üégnýåž|Âò•G/½ãÇß‘×7¾ýú¦­/¯ÝxÎ) .x×™6Qe,[ÆúþþÙ•øn‘êðwú†xk ¬¹”ÞM1•œ}îùÞ <ûÜógÏ™ë q;öîÙ}ö¹çwÍž³wÏn§¤÷±SÒyê­Ü-S±Íš½Ú!¾áÞn#ºmš]²b¹¨mÒ»8yGœœe/g:Y¸dþ¦×ÞNüæ¾Çvìì‘… ºV._úÉKO /ˆjíNÐy›ÖÖ¶ìôUþyêOÿÙæ’ëq®ò•Ù¬Ùm7ζgü/Ê–íG+–->zÙb¹ô\> ÄŒ‰Á‰9oÓ·¿7`r“uŽèðe,îCš³VŸ7gî¼À—öìîž ÍšÝvSÒp²%ÏÄ f^òÙéx4+[2AŒ—eUááÃ4-‘ªªv•ž4˾=½;ܬÎfµ4Mc‘ B lEj£‘W6î\¾¨­ÊmÓŽ¾ÚhDQDUÕ†††ýûöÕÖÕUÙ2&âñ†ÆÆì›Ô+ŠÒÜܲsÇ¶ŽŽÎ*[ä¾¾ÞY³Z•¬øŸ‹œ‹vþ¹çœ~Æ;ÍiþÛáÀ¤IeìhMÍcÏmji¬mk¬U”*é ®ß¶ÿ?ozÇ GÎk«oªU¢Ñš­[6×74D£±ªi»‘‘á­om>våq]7Mó°T©©­{á…ç[ZZjk몣Âl•OIDATY-ËîÝ×óÂsÏ­X¹ª¥¥Å÷ë-3p‘³  ½¹i#=B 8 ÚôáTÛÉ«–ýáù-÷ÿ¹zn´‹ê'¯Z6·³mA›.¢757/?æØ­o½52:bUÅŪª6Ô7»rU[{{|tÔß'ÐõÙsç¬L®Z»fÍÐРY‹¬iZssË1Ç®hmmËîÜÏÀEÎ… ж|v¤.:{áÜÎjúlEQ¤!¦.l;&ÔÔÖ4µ4Í¿@UÕªYF˲2étv |+]²lÉœys ìš )UF#uuõ,2A”·o!‹Û«|ß±m;•L¥’©Õ²‘H4‰²È3næ              ˜ÆÆn%Ó½k'ë0Cƒð–›¿ÇŠÌLÿẌ°-†G9IEND®B`‚libjibx-java-1.1.6a/docs/eclipse/images/install7.png0000644000175000017500000003412611017733670022201 0ustar moellermoeller‰PNG  IHDRXôn2ă pHYs::—9ÛÂtIMEØ'%]ðc IDATxÚíÝyœg}çñ_Ý=÷Œf43¶îöd[ò%ƒ`#°Í‘pØç $Y’¬³»lœذû"1†e1`² °›äE „ÀŽ/ØÎâ|àÛ–,ÉF²nKæîî:Ÿý£fZ­>ª«Ïééù¼ñKÌÔÔñòg·fg¡™IÁ‰‰qÚ°P$gf&ÆÇ~øÁˆó_yåV]7::;§§¦Däïº6È“§F•R4+`AH%“c'F~øÁßzßï —œÿØÑ£ßþÖ?^yåViïè8¥§xÛ§>yãÍ·LNpF°p‚0•zàŸDLAéìêZ±bÕÿïׯ?3žHÌMY±bÙ°ÞôÇmûH:=iO¤ýg_>qÂö]×íë¯9£gÃÙ½½ v`¾ G?984T0ò‚Ð9œŠù¦ÙÓ9š’—NMû¶íX¶}tlú¹—^[¿½wëÖÕëÖõ³' ¦iZÅ F Bg4-ã®>Üî´µ9ãN[g̲Û¶Ó–¶ìTÊzòÉýSÓÓ¿ó¾ :Ù%@Ƨ?}»ˆ|üãËþ5#3½VëmæLøÐ?("_þë¿™,5íý3š+S±Ø´é¥ÓN*iY¶mYv*m§ÒéTÊJ¦­Ÿ?úêêÕ½ïzç&öZÃí·FD>ö±?™QðžÊ^<ø¹‚»Ò –»Û°Øs°Èô}ðƒAò)XpÁ¨Aè§]kÜ:TN"66–<|xóÙìé9« ¦ò§g¯$gý‹”³  e’0Z& 3¿\°pºŽûÎéztÇ}G¬©´“¶¬dÚJ¥ìT:LYÉt:™²Rét*m·µ×þÊ ì´†?½ù¦ÏßñÅÏ~öüéÍ7‰Èçïøb0ÑuìÌÏÁœÙ³eRæ­ä:v°¶Ì2ÓsV•½¹üõg¯$gý%‹”Ymöt UrPŸ{/8Åæ)ø'-/òŠö=ÏŸ¾üìËE|%ž¯ü /H‹¯SXìçì_oþÈ9SJ®!{ÙàçÌem:¤H!‹ ®ksiåe&ÞrË-ÙóÜ|óÍŸûÜç2¿†!"š¦ù~ÄÇ'Úõ%Û^}zω_O¦íT*L¥“i+™²R©tÚ²Ò–“¶ì›þäJuÙëØ%h¹éÃ_øâw|áK¹éÃÁ¯ÙïŽ;¾ð¥(iTVf|á‹wF\I” ÉT 5º„ÁÿûþìwÞzë­s§C>›ùõ–[n ~Íawš§Å”¿z°s÷ñÉÑ±àŒ¨5{FÔ²Ó–m[î.[{ÕÖ ¼ÁÐ’‚XÊyyßtã‡ê„_üÒ—³×üJÅsp.³z„"rû§?L¹ýÓŸþØÇ?~Ê ±˜”u³ŒÑgƒf¿tÿŠ®ë¦öÔ®ƒÉT:•¶Ri;mÙ–å¾á²Õ¿÷þ× wñC‹¹ñÃüÒü'_ºó¯oüð«Âõ„@Ñ œû!Ó#¼í¯þ*ûׂS¤¬Ç'D¤my\ëÔO‹ËÕ=k/:ûôoÜóäÞ#VÌÐ6œ{Úe—®~óÖ³NîæÝ…–ýòþð‡þäÎ/ÿ¯ 3S*ëæ¬*XOþú3 fÿéÃú“bë /oU´^—0øÏ÷Ê]0÷ŠàK·îßG«ŠÎ®îï÷_~ë}¿§Gþ®5˲¾÷Ýoÿú{sfz*˜bÛöî¹ÛäÓ"`ÁqlëÝ×¾çÛßúÇ·¼õWûûKëõ‰'îûɽï¾ö=Žm•qj€æ”N§;::¯{Ïõw}ï_#.rÝ{®÷=?NçL' ÒÌÌtwOÏ{®ÿ­ˆóû¾733? ,T5UÞ‘ù§oК€ÅÉ‘ßüßµÒiéXJ‹ZRâz¾íŠeûާbþ„ˆ:xàä]£´ßÇó,[\O9ž*Ú# Åú¶ë¹žæy*$ B@« FIr=MD ΂–\„ ´BÐWÊv<_é"šç)Ëñ#.Kj̶­û¦ìy{0Ïõg–¯<‡ Ì›×Æ§w”C¦qʯ†~J¤y§tì\7êWl/_µ¨! ÆR)˲Üè˜~º>û«ïûÙr=?X$z„€ù‘LÏfÕß~å; Ûèº3V¼õêË B@éíéüÛ;?®iº®)ÉY> ”ò•¦”ï)ñ}ñ•×õEÄóUð_Ðtý“r}åy³ÓeîNÑG_ØÃÛÎxâ…ÝÁšmljÇb!`þ™†Þ7 ½ÀÀAΉˆ„¡ˆçû’0<_²ÓÑóUv„žïÎM‘"cóNNÏ,]ÒWƒ \¾|yΔC‡5IËeË)OÁ‰ÑW’Sß*+[na`aq¬‰™ÉC}ƒ%îÏ4t½=a˜†‘3ÝW¾ˆø¾Ê$¢ç)Ï×=¥ Oy¾Jùºf»¾nhÊW"bèZ&;EÄ04Ï«öÞÔH=šÊ—/_Þä‘[ùŸZ©¦PÛ~úßÑÇ»Wl=û·‡Ï©ëš~jÐ÷•®éA槦‰!"ºëìêiúlëtV\ ½1UM®„Çsöš+è:t¨àüŦ—UÓŠW ‚_sáÕSÜñÐÇÂ’Æ8úÜ5 uMÏ Èì3¨ÁE½ÎIUù5œ#~ÈôÌ” «”ßñÊ´bSª/aÎÄLB qUá5 _Iþ̰ ˜m¯»îÆÇøÍ}¬t¿PÓ|¥‚,ô›fÜ s6sÔ.9Ó3÷(Gùüe+;W¾x~_-¤WUnMÃË“9›Z®3ÔÛ¥ïxÿøÑCú…º¦çô3Âìš7—g)c™ùPúœdj@*“dµ­)A —;6¥é}—¾û¥²PkÎòWu³LÁ È?ÙX*WR×<®mM`¡9üDðƒïŒˆlÐÜ”{ôesùÖ×½ã3OþðÏw<ô±e䯡¯|_i™D ΋ús7¿øþ|ž&­ê9€µíó5aO‹KzÇšxù™šØ÷Ó‰‘]ý^l ˜Þ7%"îèvs𒋯»ã©»nN?ößÄüíÜ,ôUp ´y®Ö  !›:dáe¨a É?‹ÐöÇþfÿS_YuƦ³^÷æ¥ËÿPD”?û…ÚšÞçŒÐÜ”ˆXc;âK.¼ô½_{ü»7hÖW¤ó÷ó³°¬í*¥Dê~BµÂ›er®åÜ$’å¬à=¢ág‹m¢ÊÖª²QjZ§ò@#;‚~ûúÉ÷¾ù}·Ÿóæ ¬¸ HAwlÊ=òª7r,HAe¶ó»ûDë¾øÝÿ4860óõSRPù…ÿ;5ƒçåý¬Çä}_DDE Ñœ±,jÐ# 9^ûS”éÅúvÑ·^qIŠÝ,^ˆΙ^îJHGÍæ™{o2]—¼ó/DDy3îñmjz¿83¾5%"z¢[bZÛà)I–Úg¶õ_|Í'øæOϼ=Hµà¼hæìhxÑSsßµ&¢‚oŸQ'¿}¦ œÑšŠñ}ßó5‰é‘ƒ°hmìo&O¼æ_±_v?«œd‚~z"˜G‘¼ Tc½üÂOÍŽaqNö󼹯R ™ÏO5ÏS9}¥‰„uÿ_ÍW³ÉçûÊW2wiR‰ˆÄ B@(ÇšØÿÔW¶\ÿ9±Ævè/('éOñÓš5të|½ë4e¶knJÌ.Ñì½Fzd×K><ò²sC×ÐP¦ow2½rÎ…††YÎóã³X_Ðò´”ô)KœS%Úy_ïð¦Á¡ÍÊÙgLïV"™<2ãLNˆH{»l\³j¶ŸåNë3{­™‰=¯¼pdÌÙ×öŸŒD[±´Ëÿ²ìüa(¤øyÑ`è 7ôª¡ù˸ B@G÷Ü»z˵š¤Ýñ½"¢’#"rôÄäν‡O;óªÓ/xCÛ’¿üÙ_N¤Ý>ÓQÞŒJøÓG¶ïÜæÅκê+¯=ñËX¬m.ÏrÏy8/ªN¹GÆóýìžÜ))˜×Œx ”aÿ¶ŸnyëŸ*ç¨r§Å›ñ­©×øå1ïÊß½·³oE0Ï+Ò3uÉßšzaç6/6pñ»ÿéøhª«·w*iõ•æ•:?™27`¯§TöYU¯>ÏÝ„€ÂŒ¶~{lŸav)븈ìÜ{øê‰%zs3,=âNܶ÷@‚±D¯÷2)("Jù¾ö´^æ"b³H•‰F¥|Uðæš*û‚! Œ¦Ç wRD”“|íðç¾·@ Z‡Ý±]=³³oxU‚rNåÞ/“#?ÿ‚Ùó¿ƒ&?ùªï&„€Âç„oöî¤ë˜vt½}iþýô¡ƒs)Ø“yÚ¡»#œì¼è¢s}_\Ï×4½H Ù¦‚ù³#0¹Ì£ôÁ¯ï”±¯«=!"®ë„€èêëI%g¥f;x2;EìÙh‰9C³ß5³zÕÒ˜!"âú~H·ÐW§¤òOaö¿õ@ Xqî{÷=ýƒ³Îßâ™=†Ñ90¼ìÀ‘'sæ9çMÿuüðöåßbÆu¥Ršf‰ˆòí¶¶äà€&"c'&V-K$⎈¸nÜÓ”ãå&_vÈ©S3/;ƒ“¢nÞݧ®çÛŽWMM B@ë.úƒ‡¿ñ«ý«7.íë”¶ÁÞž¥Ï?s¯cMÌ]T"^ßàúÞ¥+5ÍR¾­IZ”8:%"Ž3ã8v<Ö¾~Y|hÈh‹OéªÓÑ’Ž2•­Ù®áºa—úrº€™ë‚A ËÖêN™²ƒpÏÓ÷%wÝ%"®[·å-¼P Uuö­8ûÊ¿xáÞ¿¼æ7>æ™=‰že+–¯xð›ïÝúþïÆ="¶R¶¦Yššt\w׫©í¯ÌI‹ˆã¤Dd:å‹L¥“þúæ½Í›úMÃ4ü˜H·ˆçùúlžy¾0'ü2ùüšÿe4Ž[ù‰Óò‚pf×]›¯ý3Ùv÷ÿ‚°n–/_Þz_ÀTªõªV¬F 3‚°æüëE䮯ݲéÊß>sãygoy›<ýã¾vEïà†î¡Í›¶þ‘ãNïz5õüÎ)YµÔ=÷ }¨×ê‰e.ÓÁTºcïk3¯ürä{øÑ£ão¹¸û¢‹EÄPq¥)_·OÍœ^Á̤ ëùÁyÑê«YÆ0L{ž¾O”RÊå(%{ž¾/üèýײ:µ:xÕiÍÍst®IÖoæfk–z¤cY)Øb¯@´R^óŸî;ºïþïÜþ‹ÇÑÛûV±©;>spûw§“S?~h|ÇîÔÆµñË.З¯ˆõZÙËÆÚ:Ö-ºæ‚óo|Ç;6ö¯ÿÞƒ#óõž3KØ1ÃN˜¾ˆXŽçzþì¾Êü—¶=×õ]×OÛžë+Ëñ=Oyž²lÏõ|Ëñ2)h;^5ÝÁòz„Ó;¾Þ¯¾ïàÓ?J$›ßùŸ¿ç«ïÖêóuNפ%{`MÕàTX¸úϹü7¾53~pdßc3É?uÜìH­:ý?Þ‹µw­]åÄÍtÁ=Oùé˜5#ö´vÙ— ®½÷Ùû¾öÍ7¼ÿ쮎^±Ü6Ëñrz~ÙÝÁÌ)Ð ó²ïš "°&Œ„/ýû?(QâN~募‘¿ú»ï+%/ýû?œsÕJ&MÎ9±œÊ>BeÏ™ù7d†œ£[±1r+þ`^p WR΂ë _¼ØÄˆe f+xj.ÿOáe‹Øà7Z°RámžÓzᥪ¬GNŽø¢*öJ+XLS„¯!»<Ù‹„T0â‹ ¨­Î¾}×·†NMþüy¯£-ÑÝለ’v×M™æ)±¤¤C’'O:ZSÚizÛly×ß?}ϾúÂGþø|%õ;‚T¹Úf;®5¸<•m®ÅÚ|!–-ÍSÊe>dˆHww›kù"âºs3¤§¥»+>%"šÑá{¦Ÿ6sR0Þ¥DäoßúÙoÝ}ÿ#û7Ÿ=x||úÄèÌdÒW¾'"šnH`ß‘˜©‹HÒrE¤#a¦ßv\éhK$Ó–ëzm‰˜®ëT,RšÞÌ…o>Kíù©ôo‰›º¦‰J•ƒO]¸õõÏüô刟a ¦NËÜ å\Y534çA9üÆÈ蕪_õK²e+¸†:­¨ww0e'÷MuöôƆJ‹íø1ͱ‚, ®:3ÇE¬Ø¨²»éLFΦ`¢SDdE{ï[/Ýüýÿ÷âÅçt$완i¦­tprÔó í” §l÷™gwœ¿qÕó;÷ÏL'/8ÿŒc‡ÇŒ.YÒ·zÕÒ}ûï;xxãš•kVþâÅ—Eä¼ÍgÕ>ŸøÆM†(5ñòøñ£±ØDÌÔuM›™wŽí[q\))Ö)̹:RììS ¼«KV$ü(¼pÛ!ä*lôJÕ»ú•]*®a'¬šÆ¡wˆ&JBe‹²½¦µ‹ÛÝó\i“¸æiJ×]ËwÝÎ)wrzâX:í®èŸŠîNNo7ú†—eR0ÑnÄÚÄHÈÛ®:ï‡?zûŽ‘3ÖwµÉØ„d¾~-çyÓÐg¦“wÿèß]ÏY¶lÍ}÷=$"CÃË÷¾ºo×Îí"²aã¹;^ÙóܶDä¢-Ô¥G¨»Ó[®è“]Oôuˆ$$fꆦu&”´‹ìzlË—<ùðXÄ·kÁh¬wÿ¬¶'?kòA¾N‡°ÅÙE¨²Öå>Rå) ö~”M»vÔŽ'"š¤÷Ê`[̈›ºr}Çp•çÅÓbOM¥œêîLf˜²}Iyã'üɳ†ÏÊD S¢ù=quñ¦õOm?qÆúaéh3&“v±m_qÅ‘-ÁÏ®[ ê6n\SMÝÌ’ÝAñ•fô¨à;ÅÇŸÿ/¿¹IDdüIt‹1ºE¨ìJams1ç–¿ÊÖ\ð¿’kß\±ûKvCŠQ²l!§³ÿT²lQЙ¥BÖ\Û—Aô}]ðÖÓè‹Wöz(k %÷K”—ᇡ¦Y)ÛO¦í¾ÞÑ=ß5Ú\Ýó|erpÿ!™šîî<úüȪ‰iÕáNi]=Cz¢ÇôެZzº¦y¾çÛnð½£öëϸãwýþ{×MŒ¼²×Ù·ÿ¸íÍÂÓN[rÉÅ–Uâ¶ŽXÄ9µÛ>õÉo¾ÅJ§E¤ ÷þœÇÿÏ^òÖMÚ«O*%}þ³_èíŒÿÑÿD}FDQ²ö’Çï{ñÒ?ü»fë(pt/ ”ˆ-2uäøÈËûâçmXîM^yJMœ;täh2íM&íÉi?e»™oYûõKÖj^Úš\·öŒàngîaÁ‘Ñ©~þ¾/⢿L>óâ±—ví;1“,V‚ 7œqÓ~_f£š(%'¯%fµð³¾°-ó£*ô´}o|JD<ðƒ{î6KÕ^‰Þ®ÌvM”hš‰´å)±5#¡Ì¥‰&Z›¨¦ØW|F/ ~&&‘xÌÔcæÉÔñ|uÂO&¦ˆL&ED®ØræºUK~bÛ3;<ñʾ kb"rlôX_w×)QÔmˆÈ¾ýÓíqI´Å{:;æ«^%ƒPžûʼn .yƒÒDS"šü×/~f¶/Ùû† ÿž}âµ¹açG4ðRê'xȽ-–û„C›ftµIW›ùò~¿£M]tî ×óßtùægv™HÍÎãZbô"âù'ŸwODL=¾¤Këì ÂvÓ˜· ¼üþþѯ}àѽ¢‰ˆÒ2C+M‚)Áÿ.¿áx‰@ËK¦-Qºˆ¸Ê×\CDÍw½˜;­[ž!"£“Þ¡‘©áþÎv‘Þv1õ¸ˆ˜s#üyO ÆâFÜìZÒg…uFS©ŸÜ÷ÿT¬MD:Ú—_|^ö_5Ï7dî‰ÃÌĹQUŠ!‘˜©‰H*¥‰ˆ¤ -"ºgõ?>%¢:ÜDJܾ瑞ÎîÃÇ'DdÕ²ÙìëîÒôÙÄQ¾+"vêdhu´™‰¶xo{Ñ“‹‡GF÷M´ÅEÄ×Û׬ìÝó\Ý4}×Õ ?Johñ’õÒí]<dedùòå<ßÝ„¯«ˆ»(e¶sÕÛ;zt$™”dR[&'$•’Ñ㢙½£Úè„6=ÞÞ7c±öÃÇ'ºÚõóWwt·™"ÒÑÝw躡놈hº©éæ/Ž‹ÈêU]Ží%Ó®•¶£hÇK/9É´“L[–ã¥R–åøi+û?Íõ47êWr›µ}×å?eÅŘÊZ£~3×|UölÜâya”û_cv}þâ¼[ÊP*qZBDL,éê‘䌈ÈÔ¤ˆH,6Mg*v§ä Hù›kÂñÂkqì§fr¨Ø QÆ`*ÖbQFt*ë…]Áù’šïú(;"Jcr²gqæ`pvtÅðàòÁ™—m;gù¦ììïM'ºg:c½]í}žïLL»®¥|Wt#; “n껼xÝ•§Çcí¦.«NX’ˆÉúe7Ü‘HèŸvÌN4tÍŒÅâíF<tM=QnÝjß#¬ëØFåfp œ jd!›ªAêñm× «)Zlw ÎŽÂ7^²äëwíéðNïêè R°½ÝOtÏĺS¦ád?¡Ïýìûžž•…ß¾ë9y×ÛÖ~O›žê÷ŵDÄÑ´bÛVV;_´„¡‹™HÄôx›2 Ãh¯¬bæÂÝ'ó{/\þ—y6¬<5ÿ¨æí¼@‡ªxýÕŒQÁøPUîznEM:…Ãý½¿öÆÿòãG7_nhýíí~{Ü‘NÝ3c""¦CÅLÝsƒÇû\.|bÿ/ìÿÌG.êH :^¬]‹i1é*¹y×+|®3s.T×5߯ä{Îj6ÃÐE9§Œßu«rü£ztâCÕ”°úNg¹§O*Þõ-3êæ‹R"bjZ»9÷ ¹lÓÈcÛ]»ä‚þÞ¥AwÐ0t/ó°`†ç{™nâ÷~òÊ]<{ÓûÏ=sÍJËíTn›f(cnx{/;Æ”'"¾šší šj¶¿¨DÓDùsÏΫªƒ¬)ž#¬ÕÛr¾ÎÊ.žÞÕ÷«_¤iÛv¦ ºÈR0È*ÃóÛDë~ûÖs®}ÓðŽCÏ<ûÚc³Ae8FâäéPÝÐM#–ÉÅѱ䧿ú³ûÛ~ûG.{ûÖs,·ÓóÛ•2u-fÎ ÅkèZæ?Ñ þ_74ÝPš¡Ï™íŸêfðŸ^uŽ5¢GXýX6%×YY*(ª¹=/Êú›mü#‰pª­¬rÎ×CU2b‹•\°äNÌ®uew`V³ëKîˆ ‹¯”ˆh¢{~›¡ËEç®ZšøÖ~çÁŸnX3¼ùÌÞ5]'Ïpj¢‹ˆ®Ïn}éÕ‘‡Ÿzõ²súÿòö7wut)èyF“Ô«Ä0L ñ#*o]¨ywP)Q™GÓ•¯Ä7ô´¨)MÒ?sè¡g'_Ùw¼«££»«mÙÒÞ¥Kâ{ŽN§üí¯´loëE§½ùòUg­íÕ¤Óñb®óU̶eš =÷Í8ùì`Á= )‹:åd ú¾r=ßr\ͳmÇum[DC?sõ²«¦Ü‡Mî9ãûÊW¾dYÌîyÊó•*> „oèF0X æÃŠÈɧê5CD|%º&ÙVx¾ªm- B@¡Œ7º¦‰ˆnh"º¯rGÀ rÑW§<ßàz.>ÿaùLÚéZÝkª³³‹Ù)=Ÿ?ò -hmgŸ³©h^zù4 µMŒ œ¿Ðò¸F       X:Xñö–V³x•æqÓóXŒZm.XÏâlC‹4ƒÐÊù¯šÓÀÒÁÑã#£ÇGÉñ®© eßÕ©À„€fö¥Û™Ä ,|EeÅ/dÕ{ßñÚ°Pƒ0âÇüà0— Ëœé9óÿŽÉî%d'nÎ:sÉ^gðkö¿9bÇßüF™’³Ñbó+|YÅ(¹æ‚eï„l¢ì†Í/pÈ&²÷EÁÏIÙËFÜtYMó„ÅŽƒ!}Çœb~¤å÷AóÃ/¼0ÅV[²ä9SÂ7š¿†‚Û _OÄ•«Qx›ç/åOù›+ë”@HÂ7]qSðîPÞ5ÚT'»Ê*Lõ%¯IÝ«\ɼ·vr¡×=º£tã"N,·«ZýRÑkQ[uj“7fM€…„’wÉ0z? çYú·± èÚÎW‡©ÊÝQeÒMÐ0Mñ@}ÇÙˆOk,ÜS«Þa•O¼”ìöU–Xemºà?ô4i0üVÆœchÎÇÿœ‰9sfn?)¸†ÕF< WP‹’Û 9CX²ú!Ë*OþBÚ°Xk×äePr÷EyTS6È¡Ýö©OÞxó-V:M[,BUžû­fñŸv€|‡øÁ=w›4Ä" ¿r»˜µJ²Zmjˆ \tj•@¬‡ðЄ}@@Fׄ7ìÕ¶H%ÇŠZ¸QµÒnªSƒs?*°Ø˜åæý2O½ï6,¶þ’Û-ëkQ›§¾ qE/@±ï¡€HAXñw.×UÓÎ8Î6ó¾`ï¨$K~èÎÏËãNÁwJ¢24AÉï^)¸‰’3K¡±“ N_ Q«µ„óÔøñ§ ö/K¾Trþ-Ö¤!@FMÁ(CçD<¢ED©Ø_ Ž„~Z¬¬±“Â+¸€¢*V»õ„L¬ßøSÑ_~!ÕÏÿ|ÀOò5t¦ ¾Tº&ÃýÔã´ØÂˆªN{ª~Eþàü'€Æõ‹}NŸ÷úÌ{â@TóÞh,3>u Âfø<ÞUþ Õ iT¿ñ§ª±UÖì ð,B†‰'šM%†‰ï,j Bºƒ€E„„„„„„„„„„„¨ÊÀÒAR€’Ìð#iö¯e}Y(cMä·a±á¢²›7gô¢‚ƒ[6¼ µÝÕ¼6êT$¨}r¨ª^v¼å·gvà•ûÑ¡¬AøêZ;hå ,ÙÅÉ™˜}ÜÏîýd1ƒ_³ÿ•RcöffŽ²ÝœîWÁùs&6ì€^²';»¾ÑËV¬ sº¡QZ²ä© ù»)¿`!Žò:€ºaÁHË•üð _[±ÕÛt±í‹·œÐm|þ•ÛÍÊ\Þ+7£ÌŸÝìù‰[pJĽYp‘üÍ•›ñùÁYY* º~¯Ó™Àº£ÄÊŠQñ²á3—{%¸äRÕ7/i`>ƒ°`Ï,ü \}$Ôo©f»‹²1×+l®(/š·9·ÂhhF<ö¼°TïOýlwAô-²/Œ5ìì_Áólºà ®ù—÷è hU=GXÁ¡-Ê"ùÈŸså©ÙR°æùQMƒ×iGW¹ ]CóÐ#Ìy.s¼.ød[昞s›bÈÌe}ä/¸ªr ß°€)¸¹^#Ì>½¾¶ð=˜=%ÊÚrš7|=gÎ)|Èn­ TP’vÛ§>yãÍ·Xé4mÑòxŒ²:xà÷ÜÍW¬5“&X<è @>z„‚‚‚‚‚‚‚‚‚‚‚‚‚p¾Õp˜ò‚CÈ6yÝëZà4H° Æš0ÌèSÖ >Kk8èOm%Ï.[æçüš3ò3¸7²uÚbÅ«md DÙVÉy²ßJ †,¤ lž7mpô¯Gaò×Ù´Ç©LÁ_ÂÅyìŽÒO>ù,Ô ŒøÙ6§ÇüšÝƒÉ> ¿fÿ[îGæ‚GŸü5d6Q²lÙsæ,¸Âè}Ç‚½êü–ɯQΚ³Ë–`-XòüŸ£ïÇ‚ëÏÞt~=dJxJ¾Ší—b]ä‚¥­àeVl×”5)´ZŒ´œcÐèñ‘ˆ¸b‰¾lþÌ!kÈ? Z°lùÇÊ(+,·+\ Ëω‚Çñ‚}â’ͱx9I™ýi ââ!ËœR¬Í‹…wÁSÖÙ{0zºlçèmUóÎ%¡,° ¬ë¸G„º–¹Ê•תlÏîfßÒàWÛÍU¿¶fžb†,€ ?¥>±âÌóµ†z¯°ÁGÞ²îà¨ÉæBÎÙVÜæìVó„£1ü´Þýà¿ ?¶ç_kL×-§ÇSî& ^r­n‘ìVõPÕs„›ju'^øœéFÔ£o‘³ÎÊž±ËäGþÝ%óÕ¡/Y†Z©úO”£Ô—®'К=œ[62wʼé1ûpœÓcÉÕæ³rî•"÷1J„‹X%O–µÂð•”\OÎyÅjN'F,gÁ‹ˆÑ¯,†¿Ê][ô"k±ˆ Xn‘²×åæÛ‚óD| ˜GÚmŸúä7ßb¥Ó´E“?æÎïa”‡´’Cüàž»M¢y¯dŸ˜ªwËÓo!‚°)D|¸»ùËÙz- å1ú€ € € € € € € € € € € € `Qa4/kU‹v(ðz×½ml‚ÁÜÌ#3z\cmG¶&úPà×–YOæçüZ;ö$köFÖ·N[¬xµl(Û*9#Ô 5óß´e½‡Ë βÖ\rJëÉÔ±ñ•]œÇî(ýÔèóÀB ÂnY¹Ÿs 2ò×l"§7üšÝ%ÊÌSp΂+œ—¾cÁ¡çs*R°qr ™]ÍükÁFÈÿ¹d¥ØÍïŒæw÷C¦„ `#”¬]H¹`iÃ7ÿáQWrRhµ ÅðSCù‡¶bkÈ? Z°s™€‹²ÂÆw)²ë’Sµb³ë^‡·mÎú#,³TôCvþsV˜?¥Øî+ÞÏ~g¿¢§KÁvŽÞV5ÿ)×ü£÷b¥ÛTöʎÞb'Ï+Û}¼BÌs.¸Oë|ÖÎ9܇ô?êÑuËéñ”»‰‚WF£\«ã b5{ >úq*äZW>û7y‡ §x•=c—Éü»KêÔ&%×P² µ*Rõ¯Ã( F©/]O õ{„9·o»-0ç)ró¡D¸òTò\_Y+l€œkuÅŠ”s^±šÓ‰«\ð"bô+‹ù[Ì¿´Üë”QŠT¬Å"6`¹EÊ^O”›o Îñ5`i·}ê“7Þ|‹•NÓMÕ),vÌßÃ(h%‡øÁ=w›4Dó„_Éî5 Tï–§ß,BaSˆøpwó—³õZ@Ëcô AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA                                                    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!€ ¤ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!€ € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € €  ÎÌì_v¼´´¶³ÏÙT4/½ü ÐÚ&ÆÇŠaÎßhy\#„„„„„„„„„„„´“&Pë:®ë)¥Z¦F𦙦aš1ªð}Ù¶üª±hšt%ôUý¦¹£G(À²íþ´}ûØØ‰Ö¨‘®ë==½6n\¹zu["A•Edçgï¡£ÏïÜkÙn˼tqóük’öð9Ëb!€ y®{|䨳Ï>³uë›Ö¬[oF+TÊóöì~åá‡2 sÕêU†i.ò*u}zÛîßç%›ÏX¦ëZ TY)õͽ߹ïÙxÌìN,]9)ãB¹×}á¹çß|ÕUk×Ñ2•2 ã̳6šfìÑŸýlph¨«»k‘Wy"í?ýâî?|ץ瞹¬eª¬iÚ¥›×Æ ã;÷?wÚ`ÿʈ]gÞóò?VXµzmëUmÅÊUãcŽëPe¥$e;g¯?½õª|ÞY+R¶ýÂ'=Bø¾oF+Ý62{È3MÏ÷•ïSåÙήµ^• £¼Ó¼5 ÂÝ{wíÚ—z~Çž½ŽŠÈš•Ã矽nÃêöõk6pL4ïg…š¬å±çwÿø§Ï]ráÆßýõkÖ®VJö<úÂŽ=߸û¹·m5/½`= hÙ |ô¹Ý{ö½ög|ýÊåC/îÜóo÷=&"W_qÑï\wÕ¯ßüo÷=ªD.# …F)Õ<'ÍLÓt]7ø·Åª\nÕjÛMµ—ó«¹0‚p÷Þ]?yð¹?ýãëW.ºãkß}à‘§‡—.‘o~ÿÜðÞk®Øò®·\þù¯þëPŸË9R`}Äž»S?ú±¬‘¾…Uµ¦m3ëyŒ±ïŠ©ö®Ñ{S¯¿pãÊåC»÷½öÀ#Oo>{Ýßá£ÇG‡—.ùÚ7¨DV.zÝ…wìMqhà°¸ ŽMRµLÿ¯9{l ûs[•Ë¿°cÏûßs¯díêÓÿˆ/’L¦•HWG{Ðß>oãºo~ÿþwl½€£°°TyÒ,X<‹9Ž‹Í~͇ãÌÞÇŸ=%ø98Ü3äϬ­Þçñ"®¿‘UËÿkm›¢‚õÏ_0§j%Û'¿Mò›eᾃGW®V"JÉÐÒ%"²{ßkŸøô×DäÆÿx}P‹U+‡÷8Ê1X´‚böÏÙS2‘3%YªÖäò«V²}òÛ¡ñÍRmQ¤¶I&ÓA ÞöñÖ­:Ý—“°hµØá¾aUËDBÁü }š%W¯Þ»ÿè¹׊ˆh²{ßá™dú·¯»zM‚JD“½û®Z9̱Xp‡0×­ê(fYéœ2¿NOOgæ§§òç‘®®îœéÙÿÎ{•Vµì‰9­IST¼— n½XÕÂ'Ê©§F³¯k„›6®{qçžÙ T2¸tÉo]wõ9×*%¢‰ˆhJ^ܹgÓÆuV€…FÕä¡ä]ì ~šš ÁÙ³uw÷d&vw÷d_«óu#UÖ5ÂT-;Zr6Z£¦¨p/ç/Rµœ¥ò—Í,X‡ –Ví]£›Ö¶?õÜÎ}‡Žù"¾Èƒ?{æÛw=°mÇ«JD”(‘}‡Ž=ùÜÎMkÛ9¨ -g2«Œd=£VpzÈlù?gÿ[¥ê«Ü˜ªuw÷LNNdÿ—œ «rŽLaŠU¿`!‹•&"9ëQ¾Ì "ãcÁ_'ÆÇzzzƒ2?gæÏùw«ÜȪ›R˦¨t/çT$¼jÙK.˜i·úî롈\ý†ËøÙ£wþïÝrÁÆMÖ}ýý…ˆlÛùê¶]{ž~nç/^yõ.ç,8¾’ŠG.ÏŒmë+56v"{=Á¯Ù3ä,LÉ7³’œUÍK•VµbSjÛ5ÙËáU˯QÉ V¿©ƒ0ȵ+v½øjêÛwß¿ÿÀQYµrxÓÆuÿáÚ è  ·KXñEšþþÌÏ'NŒ.†*×\vf«u{VRå‚e[P;ºA("ë×lX¿F®}OÍ-ƒ•ž›=>rr=:Á5¿U®¹ì6<¥5-aeU.X¶´£ë„Z1 U¦Ê- P€®ëžß‚‡HÏó àÊ~kV¹±wh=š¦õööØ¿wpp¨Åª6::²dI¿¦ëTYÓ¤={vç«Z¬Ê»ö¶ÇcZäaê«ÞôÆK/û¯¿$@…A(ÒÖÞñ‹_<Ñ×××ÞÞý€ÒÌ|_;ú‹Ç?wÓæ¾¾¾œ¯2Y„U¶ok»ÿñ]}ÝíÝí­QeÏSÛ÷¿ç‘]¯¿àÌå½%ž•Ÿšœ|y×Nz„ò> ›æiËNß”ÞüÜ3ÏLNNx ö&ˆS*e½½}gŸsnÿ@{GU^9`NY[6¯ÿñ»ÿí‘]-óêMÄÍ-›×/X95àB&ñµëמ¾üt×õTK¤‚ˆhºÇ:::©r`ãi±Žøi«– µÒUBM“®„¾ª¿Œt#‹Åc±8Unaº.k–’U×(!!!!!!!!!!!!!óivŽCЀE„_ºãs4`qúÿ.¬<ôÒÜIEND®B`‚libjibx-java-1.1.6a/docs/eclipse/images/install8.png0000644000175000017500000001414411017733670022200 0ustar moellermoeller‰PNG  IHDRˬ›æF pHYs::—9ÛÂtIMEØ(¿ÏYÇIDATxÚíytÇÇ}ÌŒ@÷!âˆÃÆ&ñóâc{×8™#vâÜ‹c@ Œwñ‹ƒ 1ˆÃÙÍ&ï%Ùì,öÚ“,¶À6ŽáÅ€$ˆ9t MwOûGK­VÏ¡žÑÌHšù~žž^OMwuUuÍgªSSÃPOžyz#‹'7>m~È[ܺö± h#ˆˆgyC¯º[[[[Ð:ÐÖÚ¢(ªÍ9ŽMMK'¢ŠµëÍ’å ½¶´4£M€ˆ:®_oin>|øO6÷¿õÖ¹,Ë MNnok#¢÷.Ô%Û%Ð4 Í žŽŽ¦Æ†Ã‡ÿ´ì‡rrs{ÝÿÊåË{û«[oKDC†í1¶}æé«+×µ¶ 8DDçÍ7_·©W"JNI)((<øÚ+ÅÅãœ.WWJAA~.|«6KÒç‚Ð*µêñ3’*Ër†Û9jlÚ„‰Yéé.\ @\’“›kÿÎ>;'ǯKƒÖ{ÉãPy>-¹ÁC§ê[/ ª$yEIºÜÔþÑ©¿ŸLŸ;·hÌ7® ž`&ìíÖÛ P³Ìæñ&%y›½IÉQòJ’$ˆ’ JxìXm[{ûƒܘ••ŒKÂfÓ¦ÍD´aÃƆノ}9ÚôjJKª•+‰h×îÝARôíVª½ÎÈÔæp´óŠ x=¢(I¢(yÉ#Ø!ˆÿ{ä\QQú½ &ãŠÄ%›7?kl?ñÄãánó@£ú½Ò-†”¿ï‰ú^f·‚ ¾jåJ]©º^ýh×°ª ‹Íb]‡æu9šš:.]jD¯ HAìÄ]²ñÝ£çÜSŠK—<þøúgŸÝ¢o„=ÕÄæ ûì³[,g·ìjÁììy5ˆXzÂÎ]»ÊW­²¸uç®]–®B”@Ó˜ËSF;‰xœÃ3³KòeEUTMVTEÑ…dE•Uµ½¥ Ý1îÑ/ñ–-?"¢õëÓ7ôm}ÃH1ÝÑAöìu \©š¦Ù,˜åp›e¶ä`.3Hœ(Y²ÆC¿ú7¬ì•¬‘(åÈ'‡>Û¯ Š‚èñHAèðˆ‚Ðá=‚त!ÜÂ/þ3®H|cî[¶üèÑÊ5Dôܶ*}û¹mUD¤';XÒõžÛVeìfn9…ù\úþ–Îèa¯Ó)‰o™}s0—į`Ù®Þå ü¢ðúXúgÀ1¬¢¨í_˜ø"U#EÕT}ôŠ1lau*+Vû½gn[UeÅê ;ø>åwèÚk ÐÎëwÿ %±3jF—ˆoX–éÒ b$®[·Î¼OeeåÖ­[‡ÇéQUµ9[k›yâÜŸ5½ØÜ!HÐá:±Ã#z<‚ Š‚èDiÍŠ[µ93qIǰ¾º©XS¾½j'mÛ¾ƒˆ*Ö”:Vßͦa·Wí¬XSnß°!¥)‰ï!z½`ØŒ¨ªÚZßu«´Åx¸nÝ:ý¡aØæðyNΣe'Ÿ½ÖÚФÄÎà€( ¢$‰ò-sFß>w:\‚–ˆÖ¬^EDU;véòÒZöן5žÒÙWÐÃ/‰ï!æêÀ°‰!Ø.ÚưD´yÓ&=eó¦MOlØÐc‡ƒBú¤‹Ëà¸lÞM©_dY–gÞ¯©ïðAô’ J¢(ß2§è¡¯ÎÌÍMA‡KpÃîØ¹{uùJ"Z]¾rÇÎÝáÝq[6ô<#hX½`6ÃAž2* âÙ°]Æö™þÐüÐo …4[‹ˆ’F8™d6ÏIóÒFOŸ8ü׎ÿ\tp̄Ҽ97}iîø¼ÜTè5ŽÙ¹ëyC+å«V²Oùª†¿ˆ¨|Õ }ŸòU+vîz^ª|Õ óC;Q߮囃q.³CtKôêXÒ-%éµÌæ3‚¸(ªêÖù[úÊ/õµЪ`€°k÷OV­|$¤ý‰(¤CBrJê~·oÙ±¶¿>+Šâï·wÑýK¯··é)’$½|`/+¿Ðïq‰è€_¼’øå…e{û«ùwþ£ÛÝûÒ+‡^õË Ë¼’B”€~aÅ#ð aèÐäûÊÿñ÷/Ù<侲Ū¢ ‚`I‡aÁ ç‘ï-G‘åúõöÔ´´²ÅËlÊõëí¾é0,ø!"¿KÀѾÿü5Z"ODKüšè>6ëë^>°ŸEC@”€a† 0,À°`X€a†Ã 0,`X€aÀ°Ã †€0l›Ç»õÅKø§¯nùsÕþ“moœµcÖ°lã´Ï7͕ȭ”5,»åŒT5ã¦S ÌŰW›…;ßsèý›¾ôƒÇŒxdç‘«ÍB,›8zÞï—s@i=ÈÎ}/§n%ó_ÌšÅ÷¤Jb9¯ßbd Ën¸vµáÚUØ0¼z ¢vàc ×Ê=G7?+;#)'m¸vUïÄæ¥ F/gЗ֎àu±ôã¡ßÄ ‚$º†ÕõZù•ÙSǸ%YýåÛç¢o|iô¼éDUÉÚy÷Ó{ ×ßßíà¯"cËËÞ·vƒG'Œê±Œ¥ÌÁÏh”ÜoþæÖ3WÓ¼srúfÕkáí_S¿ rêÎëwßž¨cXš"P‡ôÛ#Ò†½^ô@MÔkOÞž¾Ç†Ý‡ƒ÷I¿/ÞðºÖ€6¬¡×Ûo¡ëõÌ¥6"úåÛç¾}Éš_]³±bô*åC­XÙ9£ß”@ùy¿ .  -ê3ìöl¯’‰åÎï©ý‘6ìu¬í;B÷[ª ýÓN¿êK¶Ó'ítõØ–±^‰èÌ¥¶_¾}N’ÕyÓ *–ͪÜs4J1Ù^˜!åcy·Ÿó@»OŒxyÂË0¼£ìÇa#X_ý¢Û?iß{]Œ»Ö íÉѾ w D¯fÉ~³_Ãý~ùm&ƸÆ[H ÞÙ¿Ó"òšñ­cHçíõ¥©·ö(µa ò £_E¶¨b,ñ`Ø^õ@²ÕÛ–ÏNɺ•8Űs;9ðÇ×ÁOä÷3«uÿÔ_mØÇ j¿ŠxQƒDbL„£6õjHöo}¦‡ Ö,›]¹§:ªS¸úò¾m¾`ñØÏ&ÚdÛþ*Ox-(\˜8mè\ýÕAÚ?–EŠä6$½jšFD5[ñÖgߺ}Ì1ÉúýèÖò i Z¿×b„T6óý—ßLB*†ïDzAò·snÿ>ÑNá}?¹îõ¨^ëØkvèµ´½¾‡t½"Ò†6Ïhó…à·ÚìW}éÃ6û¤Ñþ¡¶sažyzãêÊu¢ ÄF¯ºX;ÿiiãóÓ¾sG±“g}P_µ¯z{"… @´V˜‘ŠÖî.Ö×½|`d¢vôªY!4MÓTN×·üû¡ÿ“duþMk–Ϊá€M«Ы/0lp½ê6UÕÎÿI®Ûµj·n?©oùÙëŸJ²:ÿ¦‘k–@² b4B´[ØøCkøÒ×8l½êQ–¡©E%iÅy)éC<Ǩšv¥Y8~®é>¾Ü!ÉDDi¤}Rײçà§Ëï7ÆH"ªØƒp ǰ~õj´¦q«¹Øfž oè¢móxßøèïïÖ\óˆŠF4oZÞ}7Ô÷›0"U1™&œªm~þ•Ó+î)¹sF¡ÑpAܲsH ¾ó­‡]ÈhW0¤ücÐÚÁ'!ÎÖ¢×ÿxól×èµ{z@×çXÔÒ!=õÂÇo|¹C”uáþõ³F#+'Ïv¨Ç ÔN)Ÿ¬mÞýÊ'’¬Þ5£°|ñL„ b d’ÁíLÃÚ¥Íã5ëõçoœ=s©Í}uÁœQÑÏß8[s±Õ<§µk’+™§˜7n,v/¿s<Ë0ºŠ_xçܹËm¾»™6´çwì?©i´è–âÎ\à 2p¦(/«1("‘]ˆÏΕ˜l"9†u:ØNEjšªi½ZÄÑ9Éßš7–e;õú«·Îþùäç>ŸŒYsÓ‡ºDD I^5$5DiçPÝÔ¿kÙEV¯1^º°—Rï@ á ;c|öwÏ}å¶qß?ö§?=s±ÕdÅîX%¨JDwÏ(ÐçÃÑËÕu‡O|î0ï¯oN*̬X8™aè‡ÏÎ*¥ÁQd_$~?÷Œ/Å/7ЖR ¢ß½{Üo^ûøÍãõNž}ø®qãóS{~Öt§ß3V—9ÄÈä½ÓWÌ}ÖOڤŒÊûJöà± {ß<ù½%‘Edç^W™ [Laübk¨#eû?Ð/KÀ c_¸Xá1lêǶå³+öT“Fó¦<|÷øŸ¼ZSSßê;hµŒd°÷#†=µC’ Z!piafå}“îà± ;_zûòÙö'ô}¿à‰}ÿ* c}Å®ÓÒpƒe)Å>öD €MÂ\½ðj³P±§ºrÙìyÓ $Y}þ¿OŸ®oíVkàé~#­¾s¼&e®]Ô¥×ßßþ0(À«€Á„¾za˜ßéÊÎHÚ¾|vÅžjèŽé+þ©d÷+§O×µøÉvmlýÖÌ$'§'=òüßA«áÛÒÂÌGMv:¸×Ž^Øõô ½0X ]]²Û÷V¿ña“gWÞS2~Dš±æK÷ä-µ3Ò:ÔÅ%'ñúŸæ]±Ziaæ£eS\Ðkè‘4ñcX“dú Îɳå÷N,)HïZ€¬³dMt~®¥v~¿ÖØgRQô €a{H¶jŸ!ÙIFdøp]”¯ æA«áâҢ̵eS¡W@Ü_B4b²¤Ñü#×,œ´}ÿ‰Sš©g¤uÍž÷È´%;y”{íýS]îµê ;÷~ô ÀV÷¤;Õ±õÛ3¶ï«>ô~­“g+¾Y6fXº‹ã¸Î,L¹1Dú®`0þ|X]…æ[x†aE1$™ëæ6.÷ôÞjèîYE/½aóÞã Cf½n\2nXº‹eu3wÚ™í H8ÃêJåy¾Óª,˪*˲ª‰\7ÿý&>õÛj"º{VÑS_›AD ‘®×ï?0qXš‹aȪÔ.ãr‡+HPÃêpÇqœ¢(Ëêý›ÿçd0Þô»—®—ýÃ8UÓ~øÓ½‡þ¶¡¬8'#‰çùÎhCÏÿp+†íáYêš` ëkq——•üdYÑ‹G>ýÍë{mRþ'ËŠr³’].ÇóLçç[LW1  n »R¨i9IIIééékósdY!"žç’’’‡.S(Æ)\ý¿Ëår¹\hn@BÁ¢ † 0,À°`X€a†Ã 0,`X€aÀ°Ã †`X0,À°Ã€a† 0,À°`X€a†Ðgx4ÑFU©¶QnUM‹ŸJ1 ¥¸ØB7ϧɲW–-ŽêÌ0 Ïs<ï€a@œþÜ{þâ忞>/JrÜTÊåä§•Œêr'åû1Ž(I—êëO<ÙÔÔ'÷û,›––>¡¤ddQQ’ËÃ0 ¨k/]iøàÄÙ¯/˜=el>Ë2qP)MÓªOœñÐq§ƒOu ™ÕÃ$Š,_»zåøñçνmÔ˜bŽãâ ÊŠ¢|vöÓÃï¼Ãs|aQ!ÇÛ’' @tiÔþvöÛ÷Þ\:.?žî—ož2ÚÉq/¾ñQ^¶{dÏg½²üñGýÒí·36nªÌqܸñ%<ï8ò—¿dç䤤¦Øùâ@”‡{䑼‹‡Ç_Õ¦Ž/ðH^ß@«¦iMM…E£ã¯Ê# [𛼲Q,ËÄÓg>]ú€UU9Ž‹¿*ó<¯¨ª¦ªv¯;º>DëMÑó¢ ˆš¦Åß-3ªŒ1,ñ82ò™*Äó|‚TÜRÓ^q€Á‡,Ëf³ð«'¦¤¤ZžŒUö>›ÿj€øö+ÅÆ°æ‡iié­­-ýå(UÙȳµµ%55 †i!|™=ÄŒ»³minJKK7?ÔT5=#Óüp°WÙ7OMUýV† QP5ŠÆ/455Z²5¯x­?e¤Äø'¢QeK}õªYªûšÂ° €8Aä^önw–ßôÆÆ†x­ò ª8 @ìe¹ûÖ†kWmÞAÇM•QÅaXúÅ7ªœhÀ°ÄUCÝ(JÀ±,«Äg•Õ~v † º0 q:ŽŸ®+)ÊŠ³ªÕÔ6 q:Æ·ÊLzzF]íùììœ8«rCÃÕÌL7ÃÚý6, @tIObošRüÇwNßsËø‰…YA~yep^?©mxå/gæLŸždÕƒç'O™úî‘#³gß<,;'>~^WUµkW¯;Z=í†ñkÞ FfñmbÖMSŠVŸý¯?×ÄM½\Nþ¦)Åù9Y–Ÿò&"Žçóò‡O¦|ôᇭ­-Ê@ý*$8ŽKOϘ8©ÔíÎ2t( À@¡$Ï1Ô™W˜ŸOaI†¡[èæø×9ºxôðÃeYÑâ°DݬÓé:4Ùþ!0,Q‡eiÔ°„{­9N‡Ã™è—½`X€aÀ°Ã †`X0,À°Ã€a† 0,À°`X€a éüu¶‹õuh ˆ¼awlÛŠ†€ˆóÿÀcíÃÝ+Ü«IEND®B`‚libjibx-java-1.1.6a/docs/eclipse/images/sflogo.png0000644000175000017500000001172011017733670021730 0ustar moellermoeller‰PNG  IHDRÒ>Ñ}ÒìgAMA±‹ ‘¥ cHRMnštô$„Ïm_èl<‹XÉGO[IDATxœb`£€î €øÿÿÿíŒQ0‚###@1 ´FÁHÄ2Ðaàþa†§Ç~½cøþŒù¿ Ÿ¿¿¯Ö@;Ž~ €F+Y¢À;wàlNNNiii’´ÿÿþåÿ©ULW—20ý``ggÔfP°eÓe`b‚¢Ÿ¯þýb`¸ó†¿QB`@’íïÞ½»}û6„ûBFFFJJJUUnPA$ Ã=ÀJ €F“Q ±±‘øøPQQÉÍÍ…sÿܸò{aÇ+fÞ ZN 6 <ØuþûýîùÍ9‹Ö<}ñž[tuuõôôðÄ:0mß¾9Ïu}ÿþýéÓ§.0ÿ 2jª?¾ž,°YÉÍ>°•†<ôìÙ3ƒ˜\ dT…"'£`©è®… ñ01®K$–1ÀŽ0h_`2– o—zòÈýuëån@îeCØÏƒ—4@°Ýï!ÉÈÈ™8Ð:¼ÈXÜ`6ÓÑ €N:y¤†T@ø’°ÌV¯¸ç,K€Å¤þ"/oa¶IÀª¸Ož<úȺ˜æ€©èä5¥ÑjL SIm@šYO}c¸pÈýÿå+Î@Èn€Ä°ò#0åÛî<‘c¼ HÓÇhâ©[‚Úʀɠ±±‘Hë0@˜¥€Œ{ÁÛI¦òPý°¿¶ €=VH:¶oÐJP´g"Úè °ð Ï…ªQ.Ưó×È3 õO1S°u)ÿ0g´pµÀ€Ésh2°½KÌð2l šìZ €/ ÌaÀr^ìë5`qB|‘Ž (ïÒ¤À‡]C܃ܞ#¯LÅìü’—|¹´˜8¾ŠºŸGO³[›’a`mÒûD.U0C2bªÁÕ¤ŠÕ#N°kˆÐFpIDìRH±÷0‡IIIAؘÃE˜Ä`ÈËÚ Yî<`.§¼6gÏ‘§‘7šÔ¾oÜJ‰€É «8Zoò£•U$• Ä×ÑÈÞž& ¾q;´– d-|`ž9ˆiZB†7!=/R£âÀt‰ SMäu¿´è2„ëƒ!ŒßW®ü¹v¿b\2»ˆU s2Ù "… Ò¡9„¼Ú…x@øf)0<2 Y`È›ÏÀcÇS02€êºàõ,U $`͉H>ýÀÀ­CÚÅ «‚¨`}„ýmΤÿßÉé[Sž B+ð ñ ^亨O§ö9ˆQFö@,@á«d±Ñé2HÒF9¤tÁ?ý‘ª„4ž MÜyžÅ‰ÌFðil EðE`ÀàÀ³è5`ýEÌL90æðtÙðº@U«†<ñïí«_K{ Z„N@Ÿ¢ OB–8 ­Æƒ, "Õv´F-Ö”Ÿv"£ú É3e@ªTø,>°Ú…Œ\àŠc 8dйë)“°®ïæNxA…œ×‘‡ дC2Ù”Zq8YCFõÐÔ-öE€‰•˜Á}`ÈÂ{ˆ˜®Å_^ŠÌªgQQ2þ^9öw};ÃÏÏx#ƒ;·®¡åd¬µ-Zž¢¢¢àe!d6ÓÈ;*ÐdŽÅ=à%dÈ! 4¾’ˆŒd€q3ÆA†¡¨sçÞ‚[p*FæŠ30±³3!!ÎQq"Oy"ŠRZÑ1ujDZSÛùžì¥Zé07’€®û _\5ãžgV[$ºÒÕ°‰*æˆdŽê"w‘XL²&Ä’$ã—!¶×Ϻs°\-ì²øb`¾zˆ©¾ Pß÷Æ|^ºØR•qPL,ó>äXp ÖÇŠ7Uwxðß-î·UóX¶Ml¶Ñ®ç6äõ¼^·ãiüFzÅá+‹D-x5:¯úwÄÚ˜7Œëv¢J¡aË~^ÄÏ<]×ýO©—â#€p&;`rZt(0¾qÉ@oýƒuê ’(…3ÜŸ¡/È~$¬Ö}‰KÈ40Êáñ‡Ü"6˜e  š3 F–Š ;h|·|!*1Ýp “ð—jXGö‘ÁŸCëÏbf}ËÀÅÊ oÆ áÍ cÉÀŠ:uöå.ßoOßþºtëñáêvÀ B´@@3 €aL"—]D`² Ñcô?¾0Ü=Àp} ÃçGÀÀ,udø¥ØØ˜ÿ2pI00ðiÓÚNk[ð`² Ñd7àÕeð®lFÉÈ:`$`² Ñd7 È Ý:$é&;€ݰ8 È ,hll$o¯ @&»Q@øðáCaa!ÙÚh4Ùr0ÍSÙÚh4Ù’Á0 Ä€Mv£€4lÌ%&&Rh@&»Q@rŽŽŽ”›@£'> jé'>Øò;äs»€â6l¸xñ"D½½}@@€‘æÛg@+.\¸1Y@@@__« @•À~ë„ ÐÄ>|ˆÙ™šƒß BÿGÁ øãëýû÷CF0ƒƒÃýû÷ñÔ^__9ÿ¢EAAn½~ýzdõȲÐ4üþ ÑáâÁ €¥°ŒÙ¸q#Zû_Àò)00RÂAÊ ²Èa†¸Š b`] 4˜˜€‰~:Ð@Èh„ ïïï‡$M亹xS4óö5âò###@A½1 3@;4éüùó¤,í।ôB‹{¬¦“#D;PP¦¸ù 8Ê-d[€–’ê .€MvC ¥'0@«!`þüùÈ*\4ÈI ÈÆe#rY…™°(Ov4šì†@;û—Ü«À¥y†³ÀƒËKPü–"Wh-EÊ“@  =,Ãð̾#Ÿž‰Öà¶ÛàÍ2\ǻ²ÀÎ2É®Ä h4Ù =€õ|L8ÀÓå\¸p!œMp€C^^Îvkˆt‘ €FÇíÜ?Äðæ6Ãßÿ3ý—2aRÖ§µ…!:8—àLÖÖ©h4ÙÑ\]Ãpu9ÃÿŸÀ65ïߌ_¿ý?2ïû¯,Vc¢‚   ê",‰ + iÐŽ@£É޾àHÃËc ‚| ìÂÀ¾Ã Ÿ>1±¼g{u÷ÛÌæšž¼…Ù4²­×ÐÐ@#‹ˆ4šìèŽOfx~„AT”APœS”ì¾½b`aeø÷ùçV_ìûÄ#Æ—J·ë\øH ý@v)èŸe¸¶Ž››OA@‹AÔžAÔŽAP“_€‹‹ƒ…ë3çßÏ3VÿyøšÎA+üè h4ÙÑ ü¿º…™••›SŠO“W“CÄ 2³0²ücdùÏÈÊðq29ÇG 6ÙÐh%K'ðïêf¡ ÿ2üýÅðû× ÿÿ~‚ÿÿûÿ(Àð—á×¹´pÚˆÉÅ‹ia ‘ €FK;:¿ï1üüÅðý;×÷ Ÿ®2¼9BŸ®3|ùüñëïÖ?˜ÿ}cüºŸ ‡1b´æ 6P²*B@£ÉŽNà÷'ŽÿŸÿ2|üÄðîÃë /Ï0¼:Çðú!Ãûw Ÿ>ÿÿòïÏ'Ž?Ÿ™þ¾v4iá`9åÓÕçˆ4šìè~½áøõ†ûÿû¯ oÞ0¼xÁðì)oÞüÿíçž_oØÿ¼aúû–‘A€j绣´%ÄoÃILL$oc".@£ÉŽNà?ŸÊ÷çZ¯h>æÊ< 2Hò´(…–„€Õ÷~0šq-¦p” ÑEíôß\{æÜÄÌËÀÄûŸ‘$òÿ'ÿOŒ¿0üýÇìI0 pÉí¯e7€.ýhhh€lÁ¬°€é˜&ôõõá«Qð(¦ b{{{¸b¬ûq€Ê€ÆÍšs Àé ë4°ÚÅUAû.ýýýx–É022Ðh²£+ø²áÌ‹Äéÿ?@/Iû%A±Àª *½¾žæP·/`È[HR À L|¸FR€é&??Ïú( F`ý‹–Ê…+ÐüK€É €F“½Á¿ßÞMØþiá¡ß “`ÀÇo'Tà ,íÄIÀ‚ ˜ò $0¡ µÔ ÀÄÙ{FÌZ`² J\; F™ À„‚«i·–‘+IEND®B`‚libjibx-java-1.1.6a/docs/eclipse/index.html0000644000175000017500000003434411017733662020471 0ustar moellermoeller Eclipse Plugin

Introduction

A new Eclipse plugin for JiBX is now available. You can install the plugin by making use of Eclipse's Software Updates handling, with the update site url http://jibx.sourceforge.net/eclipse/. If you want a detailed walk-through of how to configure Eclipse to use this site, see the Install page.

Once you've installed the plugin, you can activate it for any of your Eclipse projects using the project context menu, and for each project specify a folder containing the binding definitions used by that project. The plugin will parse all XML files contained in your specified mappings folder to identify which Java classes require bindings, and will automatically run the JiBX binding compiler whenever it detects a change that might effect the bindings or bound classes. For a detailed walk-through of how to activate the plugin for a project, and details of when and how it runs the binding compiler, see the Usage page.

JiBX version

The plugin is currently distributed with JiBX version 1.1.6 included. If you want to change to a different version of JiBX (including some older versions, though this has not been thoroughly tested), first locate the plugin jar named org.jibx.eclipse_x.x.x.jar within the plugins folder of your Eclipse installation. You can open this jar with a tool which supports zip file formats (or expand it to a full directory structure using the jar tool included in the Java JDK) and replace the jibx-bind.jar and jibx-run.jar files within the lib directory of the jar with those for your target JiBX version. Then just save the modified org.jibx.eclipse_x.x.x.jar and restart Eclipse.

Module Name Primary Developer Status
jibx-eclipse (svn) Michael McMahon Beta 0.1 release May 30, 2008

libjibx-java-1.1.6a/docs/eclipse/install.html0000644000175000017500000003210111017733662021015 0ustar moellermoeller Eclipse Plugin: Install

Installing the org.jibx.eclipse Plug-in

Software Updates

1. Find and Install...

2. Search for new features to install

3. Click New Remote Site... and enter the update site name "JiBX Eclipse" and URL "http://jibx.sourceforge.net/eclipse/", then click "Ok" on the pop-up and "Finish" on the main dialog.

4. Select the feature to install

5. Accept the license agreement

6. Choose your desired installation directory (or accept the default)

7. Install All (there is no digital signature)

8. Restart Eclipse


libjibx-java-1.1.6a/docs/eclipse/usage.html0000644000175000017500000003350211017733662020461 0ustar moellermoeller Eclipse Plugin: Usage

Using the org.jibx.eclipse Plug-in

Create Java Project

Create a Java project project1 using the project wizard.

Enable JiBX

Enable the JiBX plugin for project1.

JiBX Properties

At the project level are the following JiBX properties:

  1. JiBX Mapping Folder: Location where mapping files are stored.
  2. Verbose compilation: Usefull for seeing what the binding compiler is up to


The location of src/main/config is chosen by default to match the (non-Eclipse based) Maven plugin maven-jibx-plugin, so you would then want a Mavenish classpath like this:

Done

  • The plugin will parse all xml files contained in your mappings folder to identify which java classes require bindings.
  • The JiBX binding process itself is a full binding of all bound classes every time(ie, there is no such thing as incremental JiBX binding).
  • The plugin is invoked by Eclipse whenever
    1. A "full compilation" (Project->Clean) of the workspace is performed
    2. Any bound java file is modified/saved
    3. Any mapping file is modified/saved
    4. A new mapping file is added to the mapping folder
  • Any one of the previous events cause the plugin to re-bind all classes in the project
  • The plugin allocates a new Eclipse console that will display details of the plugin operation

Add an Ant builder to a project

libjibx-java-1.1.6a/docs/images/0000755000175000017500000000000011021525466016301 5ustar moellermoellerlibjibx-java-1.1.6a/docs/images/add.gif0000644000175000017500000000031710350117116017512 0ustar moellermoellerGIF89a³*|¢~’Η0XpNŸÐ>tA9CGÐÒÏúüúOs‚µÀµ+³˜½š„ºØ¬®¬ž¨!ù,|ÉI«½8klÌð_Ø×@4DJ,l’ —Ñ *»¼¤e¸|ïæƒq8HŒH EˆT8(`ª"†BÁ`€êAñ`…iM0·[—!ÀKǸ|N¨ianVXp\ ‚KXDNNRmKc“EXcJn#š›žŸŸ;libjibx-java-1.1.6a/docs/images/eclipse-build1-small.gif0000644000175000017500000045713010350117116022703 0ustar moellermoellerGIF89aê}çÿ #Q=&t,dB*-1A'3[578<80":{!A•DA7L;C>BE CŸ3CnMD0"K¬*J BWd_LVFTw`Rw¨®{ª;‡<àAwÀCÝkŸ;T×=ÕCð ‡;à!îµÏªëžêÎ!xÐÃðG÷ÚçÕuOuç<èáxÈ£{ís‡êº§ºsÈôp<äѽö¹CuÝSÝ9äz¸òè^ûÜ¡ºî©îò€=Üyt¯}îP]÷TwyÀƒ<º×>w¨®{ª;‡x¸É”Ç9TwþwœCðèÞ9TwyœçÇêÐáŽsÐãª+ÆÜqz¬îª;=¾!x ƒÉÒYáVxtà1áœ]˜xepy!‰pep9×sÜÁÿb`ä”sì)xÐgœgþ¢Ä‡Ÿy°ñÀõ\¹Ag8ÉA'wàqtà¡çy¢ù†œo° gÎq¢!'š^x熛oÂ!'œ9¿!'šq¢ñÝ÷p¾ çr¾‰†œo¢á†œo¸'rȉ†ûp¢Q^|n¾ ç›h”'gNr¾‰†n¾ñœp|‡ûh|'çrÂ'å¿AŽopƒ߈7ª!¾pø.Ñ Ç7Èñhø.ßG4¸Žh|ƒß Ç7¸AŽoÃwäø†ïÆ r|#äG4È1¾pDc|Üø†ø¾ ncNÜ 7Æ n„ãä˜7ÂAŽhøŽx¾ ‡øÂp„ãäøþF4|ŽoDã䈆òÂAŽhÃwáø†ï ñ‘cN䈆òÂAŽhÃwáø†ï ñ‘cN䈆òÂAŽhÃwáø†ï ñ‘cN䈆òÂAŽhÃwáø†ï ñ‘cN䈆òÂAŽhÃwáø†ï ñ‘cNäˆÆ2`a Y¢âƒF.`q SÀbß ‡ï¦8xœß Ç9èñ z|¹3ñ wÀ¸B‡<À0ŒG8`€‡;Ôñ† ä!+XC Øqƒ*$"ð@G ‚ €Y¼ N  Π"Ø ‚<‚äw ƒè€=ÎqH˜ö(þ<ÎA !øàG?ÚA t$íð@G°În #çøF4ÐQ xœÃ?æ@‡;¸átÀƒ_ˆ7¢Áhlcœ@ÄQjDC¨Õ€“=äAn•©Ñj4|WhT#ä¨:æð 81U¨ð¸Ã¸QTß õѰ=æ@ŽhT#Þ¨F4üÃoÀ©܈F5àô ®V#ܨF4ªÁjpc¯BåF4¸ np5ÞàFQ£QhNÑj4ª g5¾‹†ï¢ÁÂ25ÕˆF5¢á¢FC¨Ñ`*7„ ¡F£Ñà†P£áh8c´EÆ^£AŽhpƒ©ÑàF4þz[Ôh5\7¢‘\¡FC¨Ñàj4¸ éV#BW£Áhl7BW£Áhl7BF5¢ K ƒ²„Sa!Ëe$ƒ°(FQáôxÐè€:àw$¨(?>xœç Ç9à± ~$þx<Б‹qD‚ è8ÆÁލc@ Ç9L@ŽntÀ  @Ç4^ŠH ¡  ˆÒ‘ rCÅ@<˜wá­8‡’Áé'‚ʇÇ9Ü!s am°„%®px¼B Y8'3Ü“=åØS>[bá>ý3>MÁ=[AöZa2[Zá?a¡d/ܳd¯Ô=[Zá>sZ!&Zá>sZ!:´î3`¡r¡C[á>sZ!:´î3`¡r¡Caa¸!NŠLdZ!¾aæ L!¦Á=çà”ïèÁú²ÒàáÜÎÎÁàAÎAùÎAùÎàáàáèäáàÁàÁÎÎá*ÏÎÁà”Ï”ï¬èèÎáLÎ`áäáäÎÎþÎAùÐAùèiÎÁÎAùÎÎAùÎAàÐÁÐAùÎÜá*Ï¡ LádÉDᨠpÀ LáØóˆÕ°àL¡”@ör6àá6 `áFÁJÀ`¡ÌA`a¼!ÈÁf@–Ì¡n!ÎaÎAˆÕÌ¡° á6 |,¡Â2@Faäa’À¦ÁF¦Áò NÁ`ÁˆõL¡b‰ÕNÁN¡ˆÕ*Ö`A–ˆÕNÁNÁ`XMXMNÁ0öLafm–XÙóLXMXaX[þNÁ0¶fÖZád)ˆU–NA–fÖ*¶ˆµLáLáLádédé`ÁnÖ0ÖNÁNA–NA–NLáfMcMáLádédé`ÁnÖ0ÖNÁNA–NA–NLáfMcMáLádédé`ÁnÖ0Ö`¡Ða'`NÁàáŠL áÐaNÁNÁæ@ùèàá”OàÁ”Ïà¾Ð²RàÁÎÁúèá”ièáài”ÎAùèáàáàÐÎAÜÁú¾¾ÜÎþÐÁ˜”/Áà¡‚èÜáà¬ï”ï}­è”ïèá¬ïÐоá*ÏÎäá >ò#A–òòà#Má#Á Á6®à#ß Ô`@Ô`Þ@ˆ °`Þ@ ,áD Þ€˜à6!°`Þ ÔÀ°à ÁÐA®Àv@Ò ¦€`n@Ô| î@” ®`Lá¦Àn òà >ò6ÁÁ6ÁÁ6Á66ÁA–A–2ø#!6Á66á Á6!‘7þá2øL!‘7Á6áLád LaA–ÁydéLá#CÒ>òLád Lá#M!ƒ!áL!•?dérõLaÁ>Ò6Á6áLá#M!$MáL!•e dé#MaÁ>ÒBÒÁRY– A–>Ò6áLá#M!$MáL!•e dé#MaÁ>ÒBÒÁRY– A–>Ò6áLá#M!$MáL!•e Laáè!–ᢡLAŠá#£`¢ZL6Lá Þ×¾²2i’àáЬþàáàá”/+ÝÎÎÐAùܾÐÞèAùÐèÐÐÁúÐÆÎÁÐÐÐàán`LÜÐáèÁà²ÒúÎàÁÎAù’Ð謔ïàèá¬ÎÁúÎa¡²Ááá*Û*Û!$á,Û !$aAÁ²]ûÁ*ûÁ!$]›PÛ,û !6€ ,û*ûrÛÁ,û !·Cµ]ÛÁ,ÛÁ áÁÁ*Ûr›B’ ¡þ²Á!$ÃÛB2¼ Á²Q;¼Á*Û*ÛÁ,Ûa· ¡² Á² Á¾Á,µ-û ¡²  ¡² ¡² ¡²  !· v»² ¡² ¡² ¡²  !· v»² ¡² ¡² ¡²  !· v»² ¡² ¡² ¡²  !· v»² ¡² ¡² ¡²  !·  Áµ è!–!Š¡²Ð†!Šaèᡲç@ùÎAÜAùÎÎA0ÏiÌÎá*ÏAàÁÓèÎÁΘþÎÐAùÐÐÁ¬ÏÐÁ”ïàÁÎi”/aàáàÁàÎá*ϾÎá*¿ÎAù˜Æàá¬Ïàáàè˜fèAùÐÔàá!î€îòàê aa'ë€v,{Ü a' a'*û¡¡aáP»,{' a*Ûƽê€áê€î€ê€vÒæ€v²Áæ *û a'aÜ¡¡ê€ê€îáæ€îÀþæ€î`áî€æ€v²áaᡲ¡áááÁæàê ²ï¡rû ¡á ááæ€v²,ûaá a'á !î€î`'¡,{'Áv’îÁòàáv’êÀ²w’ a'á !î€î`'¡,{'Áv’îÁòàáv’êÀ²w’ a'á !î€î`'¡¡þáê€ áÐìŠî ÁaäÁìá6aÂzçà<OÞ9xç Â;gžCxçÐуwž»sôÎ<7ŽžÁoÑ9D‡n"z¦öe um¿}îöѳ÷ ={ãÈÙ“Gž½säèÑC/½säìí³‡ŽÜ7yçö}…Åß¿ðêhû× ‹6œ¯ ¼‚%¤‡Nÿî¨ñ÷ÊR¯¯8túwG¿WøŒááÐ響jçÄžR#±è~ádÛÖ­[töà}£G^þ*@H <ÔPÀë 8h €¼7Œ£AÌèžC‡î9zè衃wŽÞ7zèè¡sw3¼s˜¿Ñ;ï9zß衃÷Þ9tôà¹ûFž»sÝÁûF²0„~l ׈Át1œø£$èÄ5b€…^¸a[ÐÆ:“jãä G8¡r|ƒÑG. ù`tÈÃð@þ<ΙsÀÃð8<ΙNžô <:YÎsÀãðp<Ðz|CðpÇ9Bo˜9:0ãz ƒ߀‡;rz ƒè€Ç9àqxÐãô@AÐwÐãð@=ЙsÐãð Ç7ètÐð@Ç9‚‚ ãò@<¸s ãò€Ggà‚ èpAètÀƒð@Ç9‚x¸èÀÌ9b̘ç€=¾q‚ î€:0s‚˜3æ€Ç9àAoœƒ 耇;àÌœƒ æ :BsÐð8‡;ÐtУœßpþ<ÜtЃÀðpD;Ê€£k ãðxA:)tœãäàÆ2à xœçÇ>ÎA±Äɘ:Îz ƒè È90ãtÐãð@=¾zp‡ 耇;ryÐãô@<ès`æî@=¾!xœƒ è€:Ît`æôø=¾áx¸ã8A ñüƒlñÇ?èáøãùÇ>üÑ)üÃÿ ÇnÿÑ©ÐÃÿ؇?öáìc·s0vûsLÃ8ñÇ?üÑ–Ýîö»µ—?þ±´Ç=í87¦ñ ðq#äˆ7ªÑŠòö ˆ<þÎNäð ‡;rx 3ä@AÎsäò8<èqÌ î('<ÐtÀƒß ‡9Йo¤3ç@<èx ƒ耇;ÐAr¢è€=àáxœô@<Üq‚|ƒè <ÐAs $ˆ<Îñ z|ƒ ô€‡;Jz|ƒðø=ÎwÀôàŽ9àŽs„ßÀ :BxøzÀŒs@x‡o x@z€tÀ t r€‡o Ì8t€yøz€t x@Ì@‚ xøz('s€s€t w€t€t€t(þ½s@x@x ‚pRà‚8z z8w ypz n€Ìpxpxpt Ìh…b˜ƒs bz@‡Ò;w@z@x@z@w8w ‡o8?‚@xp‡s@‡s€y ‚@xp‚øz(=yøz8Ì@x@z ˆsˆF0‚Xx°¸ûø‡´»¹c øÀ À „V8¶€‡jøø‡Ýj °øÀ ` °¨—jøEh¨n¨nˆ†_¬†ih…À+¤q x8x tp‡s w€t8Ì ‡s ˆs x8‡rþ:‚ w€t ˆo xè ‚øz ‚px@zÌ@zÀŒs('t€t0w@x@x@xøzø‚px@‡s('w€tÀ t bê Ì8‡Ò£t ‡o ‡q@‚ ‚8zøw€t8x@zøzøx@‚8y ˆs€‡Î t zøx t t€‡o€z ˆs€t€‡s@Ì0x ‡o€z@z@xøx ‚8x@x8tÀ s€zøx t t€‡o(=s(=t8Ì8Ìøzø‚ ‡o ˆs@x ‚0x8z€þ±pxpz ‡s ‡qè Ì@z8xè$xpt ˆspS(,(X(†bø…`ø…\€×,×,†_È…\pÍ_ÈXÈ…bø…\(X(ׄ…b€…bÈXøÔüX@Ía€…bøXø…b€…bÈ…à„…\@Í\(×,†_(ÚtÍbø…Ø„M ˆiØ-¶H;œð‡¶ð‡ð¶Ø­ð¶ð¶ð‡¶ð‡Ø­Ø­˜SÀ¶p‡iØzØzmЃ ‡}े…†àl…V€ ÅPXh…MXÆ{9{€w€t€w€t8xpx ‡o€t ˆo þw8x8x8‚ t8Ìøz@‡o ‡s ‡o ‡s€‡s€‡s€w@w t€t€t w€‡s ˆo ‚8‚8w w€‡s€‡s€w‡o t€tÀ t€‡N‚t€zp‚øz€‡o€t€w8t€tp‚øz‡o t€w('w@x@x ‡s@Ì@x‡o ‡s@zøx@x xp‡s@z€wø‚ w z€t€t€w€±€w8t xp‡o zp‚ x@x@xpx xp‡s€z x@Ìpxþ@‡óûzøzøzpx@x@z ˆs ‡o t('t y8r8w8zè$x t€t€t€‡o ‡s€‡s€t ˆs8…d8t€‡Î€‡s(=t w w8?w t€tÀ t€t ˆNr‚è ‚@x‡spxp‡rrzè xp‚@w@zp‚pxˆÔBz`z€‡N¢x tpz@x8x t tè$z€w tHÙ”…°¥t xpz zhS8ƒ¶ð‡ð‡;º¥Ûð‡¨Û Û{ñ‡ð¶ð½—o ‚pþ±(§s€t(=z@w€z€‡s ‡s ‡Ò;‚@x t€t€t€‡s t ‡o ˆs€t€sp‡r:zpx8z@‡N"ˆs('tÀ zøz@z@x ‡o ‡o€t€sp‡sÀŒÎ€‡o t(=tÀŒsÀ z@x t(½s ˆs('t x@Ì@x t€w@zø†Ò;x ‡q@x t€t8xøw@x0‚@‡r:x ‡q@x t€t8xøw@x0‚@‡r:‚8zøzø†Ò3x8‚øz@zxè Ì8î þt ‡s€tÀ t('z€w€‡Î ˆs€t0z@‚pÌ8zøÌ8…bhw z€‡sp‚px8xpx8‚8x8xè$x8xpÌpxpx8x tpxpÌpx8w€‡”=Ì8tpxè$xp‚p‡Î[w¸G€x@‡i°‡s ‡sèŒq ‡s@z ˆs@‡s@x ‡sp‡o€t ‡s ‡s ‡s t ‡s ‡s@xp‡o€‡q€‡Î˜ƒVÀ¶èe_þe`Æ fbÆ (fdþe@{@:ÄŒs@x8@‚@‚þøz8‡ó;tpxp‚px@x@‚px0‡rBxø‚è ‚è$x@z@z zø†ÒCx@xpt€t€t sÀ w±€t t ‡Î€s ˆo x8t xàŽsè ‚8‚øz@x‡s€‡s€w@s s î€t€t€zøz8Ìp‡s€r@‚pÌ8Ì8‚øz8Ìp‡s€r@‚pÌ8Ì8‚øz8‚8xpt€t€zøx@xpÌ@z@‡N:xpz€t(=î('t ˆo€t€t€‡s þx8xøzøz€‡q ‚ptÀ w z€SH†9€±@Ì wÀŒsÀŒs‡s€‡s€‡sÀŒs€‡spx8w ˆÎpt ‡s€‡s€‡spx xè$‚8x8‚@äspxp‚è$t ‡sˆM0‚¨{@xpzè xàŽóCx@‚è x@x@x@x@x@xpx@‚8z@±˜S8œð‡dFfØoœH»ðÿðs x8z x@x@x@x ‡oz€‡N*=w€t€w t€t zp‡sÀ ± ‡s(§s(§sÀþ z@‚ ‡o€t8x8t€‡s€‡s ‡o ‡o€tpx@x8zø‚pt t('z@xpx@w w€t t zè x0y€z8‡rúypx@‡Ò;Ì@‚@szøz8‚@x@‚øz@‡Ò3‡óC‡r¢t ˆo t(=s8?t('z@‡Ò;‡rBzøzø‚@s tHY‚8‡Î€s€‡s€t w ˆo s€z@zøÌ@w z@zr€‡Î(§o€w ˆq8x8…bøz€w ˆs ˆs€‡s(§s€wþ Ãs€‡s‡s ˆs(=zxp‡Òë ‚8‚8y€w€‡s t8y ‡o t8z@z@xp‡x„Sè$h°x ‡s@‡r:Ìpx8x@:txpx@x@xpx8‡Òz€zø‚VÀœð‡?ù`Þ-”÷o{øz@x0‚0Ì@‚p‡o ‡s ˆs@x8Ìpxøz0xàw tÀ t ˆs@Ì8t sèŒs ‡o€t ‡r’‡s ˆs€t€t‡o ‡s€‡s t xøz ˆo t€t€t ±€t þt t€w8x w8‚€‡s€t€‡o t t tX|x@‚@ÌGz€tpx@x8xpxp‡ÅG‡s ±Xüo tX|t€îX|t8‚‹Åÿ‚@‡ÅGxàx@x@‚8x8x8t€t xøzptpt€w€‡o ̇yøz8z8t€zø†ÅGx@x8‚p‚ &x± t€t ‚@‡Å?€€•l:xçà!„G=xçè¡K(!:„ôž£ï¼sè>Â#'ñBsÀãA=–„tÀƒç@:àx|„ß@=¾sÜà¦@4ìá„|ƒè€Ç9rw|Äôø†;àwÐãð@BÎAoÐãôø<èñ z î Ç9æ`Š3دJ` ð¿+cÙ-þø=‚z|!è BÐÁ”sÐ!î Ç7Bwœç :àqz|ã0ô€/áátÀðà¥;àwÀãð@BÐÁ”s0åôøSÎ!þwð’è@È9èñ z|!¤£:sz ƒè€:èáxœƒ瀇;è¦Ðƒ)ôøBès Äð@<Ðázœƒß :àáxœƒ3ô@BÐsÀƒ¡:ÜÁwÀLA<ÐsÀƒ¡:ÜÁwÀô€‡;àqz Äð@gèxÐô@:àzœƒè€:ÎÁtœ!è@:rΜî8BÈÁ”sÐð <ÎtÀãô@SÐqŠb´á0ç€=Ðs ð0=¾AoÐãò@<èx !çàŒ;˜‚xþÐ!ß Ç9ó z|ÃAGjÜÁtÐãô€‡;bÀˆM $ô@È7èáŽs ƒç@È9àAx ô8‡;àzœ耇;ÆAtÀ=ÐoЃè ÇZû½ãCøBX19#$°F–Ko?Ãðø=Ðz è€Ç7èat ð@<ÐA%Æç@ˆ;bx|ä0ç€9èq„œç`Š9b„ !è` :äñø!è8 :àz è€Ç8ès ç@<Ð^"Äðø<Ðs Ã9ÀÃ9ÀÃ9ÐÃGþŒBÐB|=|=À:À:À:À= <ÈÃ7 „;œ:ÀÃ70…;ÀÃ9 < é¸Ã9Ѓ;œB|= Cj¸<œ:À:¨à9Ѓ;œB < <œB <œ: Ä9ÀÃ9ÀÃGœ9|„;|=˜:À:À:ÀÃ7Ð<œ:Àƒ;Ð<|=|Ãr Ãa =À:ÐÃ9 B = =|= :Àƒ; =|=œ,$ÜB|=|S¸ƒ90Å8Ѓ;À:ÐB ƒ;œBœS < <¸<œB:ÀÃ7Ð: Ä7ÐÃ7Ð:Ðþ:ÀÃ7ÐÃ9ÀÃ9Àƒ;œ:ÀÃ7Àƒ; < <œÃ ˜‚)œʆ=ØÆƒÙ†Ë¦=ü>ÚØþÁþÁþþmº©lÚ£ÛÃþmþÁ؃mþáƒmºÉþ¡lþmÚÃÚƒmþÁØ£lþÛ£áÃþÿáƒm؃mÊŒmºÉÚ£lþ¡l؃mþmþmÎÁ NÁê  æ€—y¹ z¹æ  †¹Ú —™ë  ê  z¹ x¹ ÐÐN¡æÀèáèA¼ÐÜèÁèáÐÐܾÁ èÁ·ÌÐÁ 4Å·ÎÁ äáÈÜaèáȾÁ·Î¾ ‚Ä àaèèÎáÎÜ<˜=ÊF£wuæÀþÎàÊf$¤" " "  $¤GB * ì¦" @B  * *@B*@B  * *  *@B *@B  * " * þáèÜ&àØã;ÖÚìáv®wÒ>ü¡ùü¡Ìüaüü¡ùü=ʦùüA£ý>ü=ü!*ý¡›ü¡£›=ü¡±ý¡=üÁ@üÁ±Ëfüü¡Ìü¡›¾ "öèÁöµSÛR{øaøaøµéÁöX{ø!µùìaЊÁ·`!ÎààáþèξÆÐÐÎÁ·èàÎÈÁ·ÌÁ|ëÜÐÈ|ËÐÁ ξ¾Ðо.àáèáàèaÐÁ bà6Á ¦Á±¼ù¡°€=öA   à…@B* *@Bà…'¤"    *  * *@B @B T* *  *@B*@ÔüìÎÁ·¢=ZÁz£ÜþaèAp!Ü@^A`áþA`!ÌËÜÌÃÜμÌýAÍÛÜÍßÜÌýAÍýþÎëÜÎïÏó\ÏõܾÁЦaèÁÐÇÐÝÐíÑÑ]àa~àáN¡æÀ äáèá à ÂÐÐà&ÎÁ ÜÐà âèá| àáàèáèáÜÎÐÐèáàÁÐÜèáèèá;h‚àábà<È ¡ÎÉ¡BüÁÌõ^aÏÍ|æ¾àüáʆ·çÌÜþ¡lþÁöáøÁÍýá؆Þžà Þàˆ·ý¡ÌýáäÎЪáü¡æ@ Aì!ÌþwÁtpAv!ÌkÀî¼’àp!ÌËê ʦ°ÀÒÝæoçs^çw^çÏàÁ¦¡ì}àAàA|ËÐáA$ Ñ%LàAàÁÐ }à6aàÎÁŠá àáàá;àá âàAS|ëÐÌÁ ÐÁ·ÎàÁÜÐÁ ÐÎ4ÐÆÁ·èá Âà âèàÎÐáÜÎÁ h nà Îaàœ X(A0áDájàÎaüAÍO ¬ÀÎá¾ ÌÙæüáü!ÌÙÆÌÙæüáü¡þÌýáü!ÌËæüáئlþúý!ÌÙ&ÌýáÊæØæ ¿Ìý!ÌýáìäáèÁ¦áü¡þA ö!Ìið±ðAÂÜüŽ Ø žü#¡ïË \ÿþÙØ‡-Íù¦¹7åÚˆ+S¤ÅØamÈ—^ CŠI²¤É“(Sª\ɲ¥Ë—)ý‘³ï\µ6öà¡£wÞ9xçàÁ;—¼DçèÁ#Gï¼sèè ï¼sðÜÁ;'ô¼sè6C‡Þ©ds„ÒswNè9¡çèÁ£÷Þ9ªèè™CGµ/B0Ò ;ÚàOþ´WC;`ÒÞ8÷dÞ=Y WC'`žÿÜ“þ°7Ž=d¹#Ô4èRÌ2ÿÌáz´°ñ„5O ñ„?ÿØÐO ÿdð!¬ƒÄ:ØLž ÿìÂDñd3Å÷`á/ÙL±/öÐ#(§¬òÊ,·Œ£?ߨC=ÕÌþ!Yäs9ß5Î9&ôñ„ ÞhãÄ Å HðÏ7çÏ7çs9ß 3:äŒÏ&¿ CÏ9§$3<î…<äÐó =çÀãŽ;çÀƒ<ãÐã<èÐÏ7ô|CÏ9BуŽPßÀCÙ¤1Ä?÷L!Ä=S\SÂSüã þd£Ä'àâÀâ@€Å Òþ£Ñ8èsÅÕø‡? Á~ÐcûðÇ?>± ;˜CÖ°zjàQÌÁþÈüAŽ9˜è)Ô€ṵx…>zÑ@<ÿ¸ÌñŠúð‡@ ¢‡HÄ"1€çà:Ü19Ðãçø†Éñq|#ç0Á88 ‚g@ Gø nD#gR$Ç7Ð!Er|ƒRü9α‰a Ãð0E1¾pz|ƒß Ç8àxœîèË9ÜqrœÃè :àz|è€:èA•såð8<ÎtÀãôø<ÐtÐè8<ÐtÀƒè€þ:Üq²å›Ø<Ü1 é]ÂÈDæÐS}Àâwȃ?bih£_¸Å>¤møÃsD=H€m0¢X¢ üaŒ/8à$`‡ô1'0=6H p!„äC C¨€w`=6HBÆ1$¤Aÿ¸Çþ!„!ŽÃ~™Æ|VµªqТ¯(E)ºñR¬€£«bJÛ³ªøãý‡?þ±ª ÔGÌ©NwÊÓžî4ö€Ç9ªQxpƒÑÈÙ7ÈœUÃá(¾± !>èFðŒ,<# Ϙ9¢‘3)FƒÑ G4α‰d¸ƒç0Eþ2ætÀô€Ç9„r¡¸æ@‡PÐA¡œè8=Îy|ƒè€Yàz ƒ*B‘Ç7èñ z¸ƒ*è€:àáxÐC(î ‹PÜ!wÐçˆ)LAx@ÃFþð=rË[|bíñÇ>þ‘ÛôÖÿ8n=¦à}Ì_¢ ôƒdÀ„°€5l`Áÿ¨Á>°Á„*Ä#LÂ=°°kìb è±?þQ…x`c HàG=°à!Ñè°‡P¾!hH/·ÿðÇ?rË1·èñ{üñÞúôÂΰ†èoØî€Æäp|#Ñø7þ¦1h|#7ˆÁ ¦QoLCŠÕàF5Xú1HÀ"úèE? X ‡þø9æ Xt# î¸Å?^1ÄsÈè ‡P¦!=üÃíñOýþ±ár›ûÜèv?Èaxœcs G5 Q nTÕHr5 ÁohL£ü®¿«Að‚œÕ˜Á¡Q hT#äØD1àqw´¢s8<ÎY¡ è Ç9ÐzœC(î@UÜsPð@Ç7èw|ƒæ YÜqªÐãô@=0ëx î8Ç7èñ zô€Ç9b°‰SóÉzÖý¡õ®Ïgs0żΞO¬ ·ÿè­{üñüÃÿðÇ?ö°'·ìñzr‹]ëç <È‚xTƒìþø»âÝãÅ;þñ¼ä'OùÊ/Þß°‡P Ñþx@cÓè÷2úMzfžßÑ8}¿™qúeDƒßÓˆÆ)~!”s´¢sÊÜࡸî@UÐwÀôø=Ð᪠ãôø<莹Ñî€Ç7èÙsÀð@‡;ßqxœô@<ÐoÐcèÊ  x¸c–¯<#ZÅó=þ0þÐþðþÀ¹õþàþðþð¹Õ¼yþð ö_ÀL0L0øÈ ø¨#X‚(˜‚%8‚#È,øLð‚ È/ˆ‚#¨‚8¨2èL°ƒL°ƒÈ/X‚@èLÀ‚L0È‚9X‚þ_Y÷ öîÀ § Å ¿ ÅP ÉP ÁP ÂÐ…ÂÐ…Å f( Å ]( f8 ÃP ÃÐ…É Å0 Á Õ0 ðpð` É€Bqôð ô€ð€ôpBqðàðpBð€˜…ð@è@çàçä07ðð ôpð€˜…ðàôpð@ßèß@èàBñ ôàè@ðp@` ¦î g Å…íáû0°ðÊHv¹•uþÐuþyþðç@L€ ÞøàŽâ8ŽäXŽæxŽè˜Žê¸ŽìØŽîˆ ž0 ³@Ž˜ ž0þŽj°шç@îpòÀ ¿LLi– ›` › ›` ¹ – ›` ip§ ôàB É0èè@ãèèç@ç€Yç@èæ èpîî@ç@è@èèôð î€Bqôð ôð ôè ç@èdd!7ð› Óàu°à ¸ð Åð ÿP ùÀCuÆžàuþðŒp X°]çxÙuã =0{˜{À œ d0‚©‚)˜ƒ`Šðа˜{  v  v  v þ ’)™Š0š‚©¦¹˜Š0šƒ`ŠðŠ ™ŠðŠ`ŠðŠ`ŠðŠ`ŠðŠš©©Â˜Š`šŠðŠpœ©’©` › Œš˜Š0v€ Âh °` Š`{ ™þ Œèáä`ð „á˜57îîçP~Tq˜%çè@ðàð07ççè çp ÅðBáèæ çòð ôð ô€ð€Táæ@ß@çè ä@çàôð ôpð€ð`ð€ð€ð@òð ðàèè@è@çèpô þç€ôçp` äÐÐuþ «‘¥¨° þPú C0 jீÆP #ÀÛðÒ€ÚðÒ· w0Ú0­pè¹§“çè`+0c c°ÛÀ M@!Ðc ‚ú¨c0 ¬À ¬€:rp©š*¨r°©*c 9—*ž:Š0¨€—*ª*§ ©r0«rpªr0«c ›*c º:r©r °` °P ¿ð­`c cÀ °ð¿0 ÝY¬‚*+à{êã`wðàç@èç çççç@çþçî@îpîèàçîpôpBáðpBÑ Ñððpðpòè@è èîè`ôpBáð€ôèàTqðpBðàTaTaBATáðpîpðð Gç ô@B¦ ôpÓàuœ` Í` Í` càÿ`÷BÀ »`éP+ð;·°#°"ðöð"pð"0°€îÑ ZW Ž÷ X0 óqXàûÐo æ° î1‘÷ ö€EÐ4`Ê ÐM@!P4Ep¹E0[€=þ°9€ MŠ€ 4P¨À M0„ÙcÀ rЗ ÞXc€ rPŠ€ d ¦ h¨˜ƒ@E°ƒ r0¨ ƒ`  80¨ E ¨ MP…`  —+ƒ°œÐE@˜MPMPMP4€¹î‹¹44óë¾4óKE@÷û¾4îë °À ‚)¦ PPPð § ºÀº °À4p¹4€þàu¬uç@TqTqð€ô çP~îçpôç@ðpðÐÂè@ççàè@ç€ôç` É0þBáBð€å÷ ôàèß èèî@è@ç@îèè@è çî€Yç îè@èP~BAôçpp B ^Ç ”` —` ”þð6X þðið*Àüðû÷þ`ý°X0÷ÿ u` gÐþ Ju?àÒ·Àºà±Ðo ü€¡ðöÐ ýðxàýð‰ÿpj[ÿàÖ æ0_ ºà£0ÿÐ X  üþpö€)4àd@äL(44—!@þ—°!Šp8ƒp,—p৘à!°À±àw šàGÀG ÀJp €Jp  , žðG—¦à„ šÀ4€GŠÐ…p—ð,ƒp,ÝÔ4!@)4!@Ý4!@)4ÐÍ!@)4!@)Ý4!@A4!@)4!@)Ý4ÔÉ èÀr 4° Å 4 ]4 4P ¦ 4ÐÍ4€YÙ’=ã@BAßþç „Gðpðpðpðpôàð€îîpGxðpðpò€Yè@ð€ç ¦P _@ç@è èç ô€ðàð@è æàðpð€Bðpôð BAß@߀Yç ç ß Ççèß@è@îpî€B› ðàÓ0Ùƒ@ …ð:—`èQõ0C€$` n0 [0 @p+à;pOÐ"P€O0­€îþ óaþ`ÿ ýÐý°ý€»èñø[nÀ •ðkÀ »0kÀ »`þÿà¯Pj€CàûÐýÐCÐ#°70Ùìáä`àðp dÐM@Î! åðd® åŠ—( Š()Àžà¦@I`Z¾ZŽRà—`Gà—YàS  €I€ €Gp ðž@ºIà—`[à—ÀIà—0Zž\ž`—(p—p=ðd~븞뺾ë¼Þë¾~ëß Õ Ð T` Õ  ÜÀ Ñ  `Ű æpë@åØ>þð öð ð€ð@˜uð€ð ç ç@þè@ç@î -Lç æ@ôè@çèè€Yçp É0èèß@ç`TAîpäèàæ@ç ô`èî è ßèè@BTñ ôè@è@è òð ôð ô€ðpß@çè@ðp@ð¦ Ð Ùþ° …ÐôNïýþð¹…þ°îáèáÿàèqXðþÀ¦píáJ ¹06Ð;ðð:Ь` S SðþP¼[CÀïÀHÀõ€C mP þÀ»ÀC€UГ0÷þsðÙîç`Pž_M@!P¤_Ÿú  Š`ƒ0 4¨ð)à šðE0Œ`h°vðùh`РwÐIP—`IðX@y°IPi0J Py0Ö`Њ0 oÐIP—0ž MPš 0hÀ y 8Ч¿ÿüßÿþÿÿQA` D˜pà¶bÅBP‘âÔ8( ÀƒUŒÆ0Å`õ:(áßH’%MžD9r=zèà¡c-Ú´jѠɬ–S&4žÕ Éœ&3'´jЪɌÆ3´jH«;ïþµG{X¢ÇyèùTžO;µGz>•ÔNå¡ÇžYí™õz¨:Ç”d¾H t¨:‡*sÆ¢çªÎëzÎgzСg,xÎçyÌñ ¯¾¡s¨B‡žoèAžsÆB‡xÈI zà9'SL!þh2+É’üá÷Jò§$Fòg¤:L9£$þñ¥ 6£˜b~6‰âèÉŸöÙ‡â’6û§â}ÊaŸ‘6 ˜$αG‚ Þ«@ÊÞ« ””ò½ú"¨¯ç"¨/‚ú"hà½"hà½"hའÞkའ"¨€  P²è9‚ »‚úÞ« ‚" „"`a€Â~¯‚*ˆ  "h ‚ê« ‚*ˆ  "¨¯‚¨ ‚*ˆ  Þ« ‚*² "h ‚¨ ‚*ˆ  Þ« ‚¤¬ ‚ t§˜j˜fŠ€z¢i¨xP© ‚Þ“ þeãMǪÎafŸNé‡yà‘žYå¡z¨º^zà¡Ç«ëᑇžîáÙžs¨:¥˜9¨:g,t¨B‡ªsèù†ª¾¡çyÜ¡Š;â•x|ô@<Üa-x|ô@‡WÐAqÀîðÊ9èAtœƒðp<ÒB•<ô8Ç4ö@7¶Ð…/ì™Z…–ý£³@‰?Fâ¦Ä#©˜ðA’ÍôÐä°‡"Ѐ4  xOTà=ˆ@"PT  xO*Ѐ÷4 R"Ѐ4 RÞÓ€÷4à…xOÞÓ€ H© ¨@}¤TþºU ˆ@¼°hÀ{ ¼§hÀ{ ¼§ï©@ðžúD =k@ÂV÷T  xO}ÞSH©‘ƒ9èATx Rª@ tA{h R}$àöÐã°‡W~ax¸çp©âx ƒðè<äwÀ»„Ǭ¨"wȃ*ô‡;áwÀ"_€:ètÀð Ç7èñ x¸ð@<¾AtÀƒç =ÎAtÀƒè GZàAsÀÃð@<ÐAx¸TA<Üqª|ƒß JZ¼rªœô€Ç9b°‰þSPŠèZP•TúhbB jŠÔHÀgh™?šYLÕ$þ°*Iüñ {Hà= ˆ@"к5  ˆ@zV°5@Jõ‰@¤Ô€÷4  ¨@"Ѐ D ˆ@ 4 ,¬Ï{”Ô³ 4 h@ „­ï©@”ôžT hÀ{*T õ‰@"P4 ¨OêD È{*úTà=JŠ€’"ЀT yOÞSú„­ï©À{ê¼§=k@Ï$Õ€ùãô Š;†ax î8<Ü œçpÇ9àŽsþœõu‡;ÎáŽ!Œ£¾õuG}áñ_wœî€<ÎtÀ¢_ Ç8ÐsÐãî :èñ ¯¸ƒ*è8<ÐAtÀÃç :ÎsÀãð@UÜAsÐci¡ :¨rޱ Ã+è Ç7ÎAwÀãð GZ¨rƒG@î˜Æ"  Dà׸CÁ‡=„4(ÂAz–)U ‰€ZîÖÐm¦wýA{H  À@=÷ÙÏt =hBÚЇFt¢½èE7@þhsfÆaoÐãÉ Ç7ίs ã@xA4 „<Xè:Np„<þCSpÀ¨ªœƒ*瀇;Ðqx|ã› Ê9àqŠdÌ¡¾T:è‘w ô8:lwPåÈFÇ´§Mª|îH =¨ò z|ƒ*ô@UÜAoPô€:ÎAz¤…ð8îw@CøÏðä¡íÈF74¡‰A4 ð@!¤Ô€ 4 ŠÄ(0†T@Jˆä ˜â ‘FyÀüÑfÈÀèAz î ;âÐñ:‡;ÐA•üºc€î8‡;àᎴœÃ=?ÇÕŽ¢ÃÃèp<ÜwôüiqGZò«wÄ þi)zZÜw ÃñrGZΞ»#-ç€GZΞ÷¼èñrUÐsÀ£ïñrG¼àᎴäîˆ<Üw Ãi)zZŠŽ D@)?‰?ÆatÀð9¾ŽoãèÀF ^ŒcψÁ8TPŽ|Ã݈A8^@ŽoŸÅ'GñÑAŽoð€=àqx˜¢m  :à‘x ãTA<èñ x Ùç˜ö9àáª|ƒ*è€Ç9èxÐÈFÇ9àAtÐãð@x@ª@zøz@w@w Š´p‡sH ª¸GØx@f؃0X þ‡è™Q8¸vx^À…"¨€B €=„=˜„(‚&ðЈ€Ø¨9`(9\  h,=”ÓXx…"üø{€ ¸xBx w€w˜Bxp‡,äÂ)t‡,tx(:x8‡,t)Dz˜BwèÂ,<xpx8‡ü’‡sÈ/xpxpzàBwBw€‡sp‡.,:)txpxp‡)t‡)<.t‡)<‡)t‡,tx8‡)tx8‡)¬/w€w€wÈBw€‡sBw˜Âü’Âü‚w˜Â¢s‡)tz8w¢ƒ‡ ¨ PÂ’8z˜Â` ‡oþ ‡o ‡o nx†PpPoPg€€jàhÐhà€g‚s8m ‡Wà†X ‡Wˆr ‡â#‡â#‡M@)<XH†/ ‡o ‡o ‡,<x@x@zøz€‡o˜Âo ‡o ‡)Dz€‡o ‡o t€‡´Âs€‡s tp‡sp‡)üzøxH xp‡s@zÂo wBw x8‡xSBh؃÷`€ˆ€úˆ€¸ƒ]hEØE`ˆ€B E(„  EhV ƒ HA@ ؃ð€1ƒ?(„  €?ˆ 0…30 %h”¨¨¡|#°‚þê‡s‚_${x xH‹ü:x8x8xpx ‡s€‡s(ºs€‡¢ƒ‡s€w8‡¢“Âs€‡s€w€w@‡sȯs€‡s€w8x(º)Ì/x(:x8z@Y<‡ü:xEw€‡¢ƒr t8z@‡¢;xÅsp‡sÈBw8x8w8.t‡s€‡s€‡s€‡sxp‡sp‡sBw˜Âs€‡s€‡s€‡s€‡s€‡sxp‡s€‡ü:z@‡¢“BwÂü:xpxÈ/tÂü:xp‡s€‡ ð øE’@{€‡s€‡_‡hø†hø†hà†jþ†:¨nH„j¨ƒgà€#€n°„€i„px ¸…>˜1ІD˜†h ‡hørˆ†o@‡M€zȯV(†6 t€w@x8‡)<zH z@‡s tBz@x@xø)<t t€t8)<zøy8y@x8xp‡)¤t ‡o w€w´€z@‡ú’´Â€„M ‡s˜†=ˆ€ˆ€úè™7€ƒfh[h†h€ ( ؃K#€ƒàTˆ€¨V €?ˆ€Að„Kˆ Ø XÀ“ÀXh…“° …#èvx‚ }ø‚þÀ…؇*°øcˆ°!ȂȂ¸˜&¸,¨‚$`‚{€€4ÈŒpõ‡o ð @z€t x8‡.<)”‡sÂs€y8x8x8x8z‡s€w€‡sBw˜Âs˜Bz‡s€‡s x8z8‡ü‚‡sp)<‡,Dz€w€w€‡s x8x8tÂs ‡s€z8tBw€‡s€‡s€‡s€‡s€‡s€‡s x8x8‡,<z€‡s€‡ú‚y8)”‡s€‡s€‡sÈÂÿ¢.”‡sBy8xpx8x8z8x@)$þz@)D‡,¤‡s€‡sBr ‡s€y8)< ð ×ÀÍŒq°)<‡a nP\Å­n¨ƒȉiȉgˆià†œPÜjˆ†j˜†jø†iø†hÈ Åņœ ‡MH‹spSH†3H xpxøzÈBt8‡ü:)4‡xqxpt xøz€w8‡,üz@‡,t‡)<xˆ—spx@‡s€‡sÂs€‡´p‡,Dz€‡s¸SØxp‡iP„h)i)¡#_#ø€ˆBˆ "ƒ(‚ Hƒ=  ƒ&ð9€(‚¨€1h 0…3(þ PP‚“°x…/p€ vxyxƒ5`‚Íø|‰!à‡w`!Ø!Ø!¸‡$ð!ȇ)‚|€€9Ø€{8ÁÍŒo  ð€#8t€t8)<x8z8)¤rÂs‡sÂsx )Dr tÈÂs ‡o€t€wBt z8x@)D)¬/y ‡o )D)Œ.D)¤x ‡o x@))<x@‡sz˜Âs‡,t‡s ‡s€‡s€‡sBw8z8)<‡)<)¤x8)<.D‡s€‡s€‡sp)<‡,<‡)t‡)¬/yþ8x@‡)üz tÈÂs€t€‡sàBw¸À€}âiþøz˜Â_€‡jà h¨h˜h¨hÈ h˜†e¨h¨†nΉv††vngh¨žhçhøHÂs‡S(†9Âs€z@xøz ‡)t)Dx x8w€‡s ‡´ t€tÂs ‡o tÈBt ‡oàBsBwèÂs˜ÂsÈÂo ‡q@)ŒG8x@f؃÷h€ x›è™"@…  ˆ€ ˆ€ˆ€’ˆ€¨€ži€h€€VÀ“À%ð‡“°~ˆÈ€  X‡+XþlÀ‚‘ø4 ‡^Ø^Ø;‚{°€} zÀ‚!臠‡o¨‡) f“ðr° @.<x8z@x@x¨/z8xpx8)D‡s@)”‡s@x ‡o ‡s€t ‡,D)<t€zp)D.Dxp‡oBtÂs€t€‡oÈBr@rpx@)Dx@z8)tz t€‡s˜Âs€z€tÈ/y8x ‡s x@‡üêÂs t€t˜Âs€z8)¤‡,<x x8zÂsÈBw8r ‡sÂs‡o ‡o ‡o t ‡s€þt€t x8x‡o t˜Â# ð‡Â\ {@z8‡jørør‡h‡‡o‡oˆño ‡oˆt$‡orrñçrøtü†p ‡h‡jh…)<XH†/˜Âspxøz8x8z8t˜Bt8.D‡s€‡´àBt€tÂo€t€t ‡)D‡,<x@x@‡)¤tBz@zøzpt x8‡`SBh؃€ôˆ€ h€ h€hH¯€€ôˆ€€ô€ô¨€P’Q‡ôˆ€€ôˆ€S8’ø€Z§õþð‡Q˜Cð‡|@ƒ 5€Xø‡Í¨%˜…xƒ<ð‡Wð‡Wð‡W¸‡ÀmЇbx…}ð†/@}€\÷q {À8t€‡s t€z€tp‡)txpx x8x x xpx@‡s˜Bt€t€‡s€‡x1‡)<‡)D‡s€‡oBt ‡o t€w˜BsàBs˜Âs€‡sÂs t€t ‡o tp‡)D‡s˜Âs ‡oxH x t˜Bt€‡´€z@z8z@)¤t€tèBtÂxá´€‡´€zøzøz€w€t€z˜Bþz@zxˆ.¬¯,Dx@x@‡sÀr·û» 8z@‡),†M€„M8…M8Ê0|Ç„S8H`|Ê`|Æ?üMx|H  H8Ê€…s˜Bwh…dø)¤tpx@x8x@‡)D‡.ü†,<)Dx@‡,t‡s )4wˆx0)D‡)<z€t€‡opx@x@x@xH xH )¼M0…úª\P„=P„AP„A„=E؃=P„=„ñW„=„ñ„=P„=EðþAP„=P„=P„AP„AÿùïV,ÿ,H°Ô  ôGÐßþ?ÿô7Ðß?ëMY¸OaAG’èœ= !nÐûF-îÃÏ@þ äÏ@ÿøS#?í3Ð>5þã‹-ÄÏ@üøS‡)gø¸$“þ0ù¤?ÿøó¤Bô,éÏ“YjY£?ßУAÀ<ß\Ã9¼ð:çÀsNLè¸C:1у<è$vŽ;‰C:ô|CÏ8çÀƒ<èÀs<èÀCŽ;?C:ô¨S7SÀƒ<èÐ=ç¼à<Ý`!:ð˜s=1¡O9XÀó<Ò¡Ï9ð “;ð¸þ;ð Ï91¡cÎOßÄ„=蜓˜9ðœÓ9ô|“Ø91Ñs<çÀƒ<èÀãNLçü„<ô|=ðЃNbè˜:A¨QÂ>[êû¤?èØó:îãØ9ôœCÏ9çÐs=èü:ð€Þ9òœÏ9ð€:ç¸s<î CÏ7‰ÁRÌô¸CB ^puhàÕxÆàñx”3˜Æ'€0Š#ç¨("†*€"h˜ALÄw¨C#‡ÐÁthàÓˆþI:bpŽ*€"hˆI@gánÅ8¢±mD38‡:Fph #ð8GLàáx ƒè8GLt˜itdæÈ4:ΓsÀÃß :b‚Bz|ƒ™FGLÌ‘it¸ð :Ž PxIþ ‡=¾AoÐãò8GLÜñ z 爉9J sÀðøFL¾wÄä1=ÐAxÈã(„:èVcç€Ç7è!s #&çÏ9àathûîˆ :èx ƒè(5=ΓsÄäô@=ÎtÐãôpÇ9àñ z|ƒð@<ÆQjtÐãè þ<ÎqƒM˜–üq„(¡Fþ ‡,ÚqŒ.8¢ e¸F?FÀz Áý(?è‘%Ì_@\)W,ø#KùhÜôôÁóG8äqSÜî@Ç9èŽ;Á‰8G:¡Ž+Láê¸ÂÎñ %äÁ±PBèqxÜá _H$Αˆ˜¸ãGHÃ5 q<# Ô0Æò@HÀ#ðH$œñ…:@"ð8<Ö€‡q\A çPÇÔ€ŽDœ#&oÀƒ;0 pœà°€‡1Žx kÀƒ:®†sÀÃêxCÒaŠs ã J¸Å2¾H#ÔÆþòpŽDÄ™Fa¦¿Axœ#ÓôøFLÐtÀã1A=|CL < ƒ9Àƒ; < <œCL˜ƒ¶¹Ã9ÐÃ7 <œÐPØ’øÃ9Ѓ;À:ÀÃ7C0 C2À þÂ0  þ Î þ C.C.$,  7Ä:$L+Ü<¸CLÐÃ7Ä=œC¦ÑÃ7¸< <ÐÃ9Ä9 <œƒ;À:˜< <œC¦¹= < C¦¡< PLÐ:ÐÃ8dÚ9À:˜ƒ;À:Ä ÅD @Â)ÄÄ4l‰ä,øÈ>8‚,È~µƒ,¤Ã?¼Â`‚þüC>Á–ø#œ,‰'ÖH øƒ4|Á,°ƒ.ìC,ôè?ôÃ$ÂôÃà?ôÃäÁ@Ô D?¼øC?¼Aüƒ4|Á- tÂ)øƒ4`6èÃÌÁ,|â?ø9ØC <Â|=ÀxÁÜœƒ<œ<œ<Ð<¸C¦¡ƒ;ÀxÀƒ; <œ<œ<¸CLÐÃ9€GLÈÃ9Ä9Àƒ;ÀÃ9 Ã9¸<œ<ÐCL€<¸<œƒ<œCL =œ< <œC©ƒ<œ$Œ<€œCLœƒ;”š<œ:dÚ7Ð<<œ:Ä„;”Ú9”š; þPLœC¦¡C¦}=|=œÃ7Ð<|<¸ƒ<|C¦™C©¡<¸CLЃ<|=ÀÃ9¸CL¸ƒ¶¡CL|=œ<¸<¸CLÜ<Ü5¾%\Ö:ØÃ9ÄD4Tƒ;À ¹Ã9d:Ä„¡=Àƒ¹ ¹ Ñ ¹ ¹< P¦¹Ã7DC©™B2|<ÐÃ9À9¸ƒ<|< CL < =d:Œ= CLÈÃ9Ä„;|=ÀÃ7Ѓ;Àƒ;ÐÃ9ÄxÀÃ9À:ÀÃ9À:Ð<è;œ< <ÈÃ7Ѓ;ÐÃ9 =œ:Ð<œÃ ˜‚)<@Ã[ú䂸Ã>þ”1¤'18Â5øƒ>$hÂüƒ?ì@è5îØÂÄå@øÃøƒ<ô ôCôà ü?ì¬/ì¸.ì¬/ÈÃ@¼Cüƒ?¸.ì¬/ȃ?ÈÃ?@=dÁ?A?ŒÀ>ˆ@>ŒÀ?ìÀ>|¢?ƒ=Ä#Á8¸Ã9À ƒ;ÀÃ9ÈCLÐ:$ =œCL¸Ã9Àƒ;À:À=¸C¦= PLœ<¸ƒ¶ÅÄ9dš;d:$ =$L¦ÑÃ9ÐÃ9Àƒ;ÀÃ9À=ÀÃ9À=ÀxÀƒ;œƒ;œƒ;ÀÃ9Ä„;œ<$ =¸CLCL Ã9Ä=¸Ãþ9ÀÃ9À=œCL$ <¸<ÐÃ9Ä=|< ƒ¶¡< CL¸C¦<Ð:”:”Ú9ÄÄ8 = C¦¹<œ< < Ã9Ä:Ð:Ä:Ð< <Ðà Ðø§³úˆ? ƒ=ÀÃ9ÈC1¸9Äxƒ; CLCL¸ƒ<¸CL¸< x¸CL¸:Àƒ;x 9ÀC1œ<œ<˜B4|;ÄÄ9|i¦ƒÁƒ9Àƒ;À:˜ƒ¶Ñ:À= < < CL|ƒ;œƒ¶ÑÃ7À Áƒ;Àƒ;dš9À= < CL CL PLÄÀ#@=œÃ4À¥Bxâ5TþB(TB%¤ƒ?üƒBøÃ@­?À%#´<« ìÃ|ÁüƒôÁ$ŒÂ8Á ?Ô >¼?øÃ?øC=B >¼?øÃ>ìL@=LÁ?8Á=Á?Ø@=LÁ? ?|¢?|=ÜÀ#<œ<œC¦¡=dÚ9 ƒ;Ä:ÀCÂÐCLœCL Ã8ÐÃ7ÐÃ9€Ç9ÄÄ9ÄÄ9ÀCœ= C¦ƒ; <œC¦GL¸Ã9À:Àƒ;ÀÃ9 CLœ:ÄÄ9 <¬kLœ< =ÈÃ9¸<ÈÃ7Ð< ƒ;œ<œCL¸=À у<œ<œ:ÀÃ9þÄ„<œ< ƒ;Ä9 =|=˜< ƒ¶‘=¸ƒ9 CL =|CL˜CL˜:Ä:Àƒ;Àƒ;œ9ÀÃ9Ä„<|=|=À= CLœ9ÀÃ9ŒCL ÐÀà <+ÿÃ8ÐCL¸Ã/ÐC <œ:¸Ã8ÀÃ9è;& £ƒ;Ô09¸:ÀÃ9 ;ÀÃ9ü‚;ÐCL´B2Ì:À:ÐÃ9”Ú7À:dš9dš; =ÀÃ9Ð:À:¸Ã9:œC¦< =Ä:ÄÄ7À:Ð<¸=|=œ:Ð:Ä„Áƒ;ÀÃ9 =œ:Ð<œC lÂ)Ä4P£?üƒþ?,IÐþƒ?,IÐúˆ?Àå>Ì,|Á³ÖÀ>ˆ@,€?dðC¨Á$Á5ÁdÁ5Ä Xƒ4Ä@ D=@€Â5Ä Xƒ4Ä@ôƒÔôtÂøÃÁÔÃüü%:ؘ ”Ú9ÀÃ9¸<|C¦¹þ¨À?(Ä?-yûÃ?÷?mÐÃ>í?øÃ?øÃ?í?(Ä?øÃ@øÃ?øÃ[ú9Ðà <Ä=œ<Ð<¸:ÐCL¸Ã9dZÂÐCLÐCLÈÃ9€<¸Ã9 ƒ;ÀÃ9ÀÃ9 <Ð<œ<œ< < CL¸Ã7À:Ä:À:ÐCLœ<œCLœ<œCLÐÃ9Ä= < =ÀCÂÀÃ9ÐCLœ=|CLœ<¸ƒƒÀ¢=œ=$ < < C¦¡=|<ÐÃ9¸ Á:Àƒ;d=œCL = C¦¡CL < <Œ=¸Ã7ÐÃ7ÐÃ9ÀÃ8À:Ѓþ:|)=œC¦}=À:¸Ã Àà øCYûç8È=œƒ; Ã7 Ã\£Ã\9ÀÃ\“C1ð=ÈÃ7DÃ2À99 Ã7 Ã7ÀÃ7Ã7Ã7 Ã7˜:Ã7 C4ÀÃ/¸CLœƒ)à<œ:Àƒ9À:œ<œ=ÀÃ9ÀÃ7ÐÃ7À:hÛ7Ð< =ÀÃ9ÀÃ7Ѓ;Ð:ÀÃ9À:À:ÐÃ8ÐÃ9 <ÐÃ9h:dZÂÀÃ7d:ÐÃ9 =ÀÃ9wƒ;@C¦Oü'îÃ´Âø§?¼Â,Ä¥BüƒBøˆ?üƒ?øˆBøˆBÔˆ?|bÐÒ\úC8ÐþC ˜B À:Ä:ÀB+ÀÂ)˜Â)œB+˜,˜B+´ÂÏÿ”Iϱ6îa±‘ä*/¸ôˆé¯#º2˜ÂR[¦¿ï’ì±OD= ìV`ƒ³†=öþ‰¸7ÅŸ¿ìôëÓôGŽ^ŒG7Ω¥|N DA6@`6@`6@`6@`6@`6@`6@`6@`6@`6@`6@`6@`6@`6@`6@`6@`6þ@`6@`6@`6@`6@`6@`6@`6@`6@`6@`6@`6@g4AƒŽZç¸s<7øc_¡1cÏZ°Œs9èó <äÀ :Ü|ó 9ðó <˜¢CÎ7ð|Ï7äÀó 9ß8Ï7ðõÍ9äóÍZ­$3‡;ðœÏ9è¨eŽZî s:ðœ:ð Ï9èÀã<èÀƒ<îÀs=ä ã<–cô¸£:ôÀƒ<èÐ:jÑÏ9ð £Ö9èÐs:ôÀs˜¢4µùó?4ù“I*™’‰1™°ÓO ûþÌäÏ?þüãOLòm ˆ)gØçÏ;Xä“„?6äƒÅ=SÜsÄøüÓÏ_LPþŠóMþŒcO ¦:ç¨NtVÐC)ÐYÐYÐYÐYÐYÐYÐYÐYÐYÐYÐYÐYÐYÐYÐYÐYÐYÐYÐYÐYÐYÐYÐYÐYÐYÐYÐØ@ Ü~Nïò¨u=@ä\Ÿ?ßÐsŽZàƒé7è4OÎ2ôC4ÑpÍ2ßTM4þä,óM4äDóÍ2ð@ÃM4ßÓÿðÇ?üÁÑ”ª4&þø†=bð àï·“€Ô€T€@Š@E*…1Ѐ¸h QØ¡ @Š@=Tþ` MPD"ÐU ¨@"PD  ˆ@ 4 h@*ЀT ¨@"PD  ˆ@ 4 h@*ЀT ¨@"PD  ˆ@ 4 h@*ЀT ¨@"PD  ˆ@ 4 h@*ЀT ¨@"PD  ˆ@ 4 h@*ÐU€@tª@TÜîî Ç7Ôrxa¥õ:ìsÀ£ß G4È rD#áX†<Â1 hÐô(†<ŠfÈãá(†<–1 x@cþ-Ñø9¢ñ rDƒ(Å€Ç9Ô‹d´è€:èñ z|Ã.ô€:ðwz|Cð@<ÎAs¨åô8<Üáµ|C-î€:àxÐj¡:Öò µ˜ƒð@‡ZСǨå€=Î1˜hyË\îò–ýñxyÌ1ñ Z2wÙ1ñǘý±e¨yÎt&³?È!#0âðø<Ðq4  @Jð 4 К@]T€Ø*PˆAL‚…h@öP ì !0Â* Љ@ PÔ5€@ PÔ5€@ PÔ5€@þ PÔ5€@ PÔ5€@ PÔ5€@ PÔ5€@ PÔ5€@ PÔ5€@ Pn×€ D j@"Ѐ Ô± ˆ9zœð¸ÎåsÈC-îø<¢Žh„#Üèø4àQicßP4à y@Ñø†<¼Q s¨£˜‚GÇ£Ññhp#ßH<~~ŽScðpÇÏÑtÀÃð8çÏÉAoüè ÇÔŽxœîp9èqx˜ãçòè:®ŽŽsüî0<Ðz|ãçè˜ú9ÐAs ƒðþ8G 6qŠŸCâ\Þ…áw^Ëþ˜,Î@gyËþز?&ùÌOÞß°Ç Lƒ©›Ãç¸]æ0…'T€@EÐÅ DAAD ØC"PBDp(D(`‡BT`—¨ØD  ˆ@ 4 h@*ЀT ¨@"PD  ˆ@ 4 h@*ЀT ¨@"PD  ˆ@ÐP ÐP ÐP ÐP ÐP ÐP ÐP ÐP þÐP ÐP Ð@'Ð@'„T' @ PçðsèäpôšG…ZvôçÅÕà…_ø…äpèÕ0 `ˆ†ßP Ðà…ÐP Ѐ†_È áP ðpðà­ _ðsè0uô€?g?wðàôð ôð ðpNð`äpuðpð€ðà?‡‘xðpS‡æpuæ€ô€ðpð€æðsèðsŽñs7ðî0 U¸e» Ø@ 1¡°ú ]¦°ð ZæŒp Xyþ`‹Í茘çä`1`G0uòpãÐþЀ7ð ÐÀ P—@vƒP¬Ð …°—E°ƒ°ƒ@v0{PG PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ   PPÐ@ @'@ þ@ ßpð€ôp@7ðŒd&ä`?G¿0ÑP Óà…Ñ ÐÐ=Õ Ðð…ÐP ÐÐ=^ Ðà…Ñà…Ý Ð‡Õ ¹0uçp Å0çðsçç0ô€?wè@ðpèè0uæ0uòp?‡‘èð`?‡ôðsçðsôß@ð€ð€?çèðsòð ô0uè@ç€ôç î ϸ Ö  ú »à÷€þðÐeõ0è eû0¦pé šyþ@ö¦èèôð R à!P PÒÐÐÐþuôS tr;p; ÐÐ                                                     ÐÐPÐPR @'Ð@'·Óèç€ð€G@@¡\&ß@äà^ãߘ2þã@ß@Ñ@Ñ@Ñð ä0ä ã@Ñ@ã@Ñ€ãß@Ñð D ß0Õ ô0u¦P sçðsôàð€ôô€ç‰ç0uèçðsè@ß@½ósèpuŽô€ð€?‡îpuçpuè@èàðpð€?ç?w° ?7 Î蟰 Ö€ æ@ ÿPOPS0s°¸p #pX ÷s@sÐ X¬Ukµþð ô ¦pW‡ãÐ@ tRÐRòS·ÓÐІT Ð  @ @ þ @ @ @ @  @ @ @ @  @ @ @ @  @ @ @ @  @ @ @ @  @ @ @ @      PG tßpuçpðpþ`µZ6üç@ðP ¿ð ÁP Å û› É0 ÉÀ ÅÀ ÅÀ Å ¿ Ãð É0 û› Ãð °¿Å Ì Å ßàèðp­P _ð ôŽñÁþèè@èà|ðpð çæðÁð@èã@èô€9 ßÃŽñÁç@Äî`èÃçè]‡Lè@ç€ôçp` äРy]V Ö° ¸`´à÷û`÷ Cðõ HÀï0BXàHP°peLÈ…lÈeŒöpèßðÁç@ tR @ ÐзÓÐPÐ@'ÐÐuÔ·ÓÐÐÐPÒÐÐPPÐÐÐPÒÐÐPÐÐþÐPPÒÐPPÐÐÐPÒÐÐPÐÐÐPPÒÐPPÐÐÐPÒÐÐPÐÐÐÐPÒRPÐÐP  ß@èÃG@@pÈ™öîpð@ÜuŒçðÁäpðàðÐuðpðà|î€9|ìðàèÐuðàð€îè@ç Å0îèçôð 9|ôð òôð ôîþðÁèçèèàð€ð€ü ôè`ôpð€ôð ðp9Lß@Äð`è@ð€ð€î€ì¦ ôpÓð¯ Û±-Û±m Û€ ¸` ´ð÷`û@÷0Càù0k` » CPSðC0§€³-ÝÓMÝÕmÝ×Ýã@Gð1@è@ðpáðÚ#ÿ ÿà¯-ÿà°íÿ ÿ°1°íü€ßÿàüàøßþÀþàßüàÎþÀþ`àøí îîüàþí îüà Îþ°àþ`àþÀþàßþ°àþþÀþ áþ á+Îþ0àþ€ßòßþÀþÀþ°þðþðä€9|@@€ÝEÛè@çàðàìðp]G›}îè@ô@ôpÜuð€ô]çàðÐuè@Äèî§0 _àß@çç€ôðÁçîèèî@ðàæÃß@ççðÁæðÁè@çðÁî0ô€ð€ôðÁߎAèæ€ìãÃè@è@ç€ôçpp  FþÚþð–€ ¬° æð û wðÑ ° ÿ ½°€þ Åð úÐ ÿ €` g€ëÙ®íÛ>Ûã`7ð@èpü ¯-ª öÛþðÚþðþÛþ ÛæýÛþðþðþÛþðþðÚþðþðþðæ½1°-ÿ°1ÿ°1ÿ°1ÿàÿ௽1ÿàÿ ðòÛòñóóóþðþðÚóþðï°-ÿ°1ÿ°1°íÿàÿàÿ ¯Ýñ°½1ÿ ÿàÿàçèðÁèpðÜNÝþ€öðÁô€ð€ð€ðÐuçD½#ç@ç@èpèðÁç@èç€çÐuçðÁççþðÁèp9Ü;ðp ÅÐô€9|îpLè@ð€|ìŒð@èçðÁèðÁè`î€ðð Œð€çàèô€ô€îèôð DŒæèàèðÁŽñÁ1° î0 Ùîÿð ¯P Çï ÿÐñ¯í¯íÿ °ísÐ XpÝÙ¯ýÛÏý³ô@pðà|èà’оq`¯í¯í²íÕ-×íݯÿûÏÿýïÿ¯ þþ $X ?ræàÁCï¼%N¤Xpœ½sèÜC·½sðÎ-<ç:xèÊþû¶Ix瞣ïó‡z¬‚z¾¡çrÐçzÎA‡tàAžsÜAz¾Yx¾¡g¡q1‚ þ„)Î@@Lúãôˆ)Žð “|ãþøÇ>R!-È@þ(Å@ô‹ìã yØG?Þ&¼â0£˜ƒ!ô }ÀB°Àd1™(|c!è€Ç9Ž Íç°R¡JUúC3úÀ ¬áæ0ñÇ@üqU¼æuH߀Ç7èñ z7š?Èa î@<Îy|ƒçX=Üsxäð@<Ðqx ãä@=Üs˜ä=ÐzÀÃÉÀ‚GÐsÀÄèX=Îás c!è ‡;ÌárÐãô8<Ðá‘oÐÃ#çþ=àqx˜Ã$¥YÈ9Üz,ð° =ÎzÀã@à<Ü ;gÄ,è]ÔÃûÁ=¦°$Ôc CèÇú1øÃ #€Åô*4|Ã1€Ä ¬bzã‘+?ä:$Ä‹ñǃM|bÆ|î€:àz!hþø=èAŽsD ô@‡;àñ wœƒ A‡GÜzxäò8<ÐqyÀæ€=бs Ãð@Ç9à‹dÌA<бrÀƒ߀:àáxÐãð Ç8ÐsÐðp<Ðás<è€Ç7h„Nh…^h†b t€‡ºx¸†þ4 {ðˆ_€tÀÞo iì%‡oàìå†qXy ‡hÀ^rˆrø†hørˆ†o ì%‡q€‡_‡o ‡s8…iPt€‡s€þt t€‡s€‡s s@xptXˆsp‡…p‡…8‡…øz€wøzøz€‡o s@‡…° s0 w@‡…8px° z@x@z@z8t x8 àxphÈgø°„f…m è‡è‡ ȇø‡ ȇ) ‡*ˆ‡lÀ‚~ø†kè è„/¸gÕ^mÖ.¶Ãø{¸Sˆ…xsø†ÖÎmÝÞmÞîmßþmPó‡s€‡s ‡s ‡   nOó‡s°±s€‡bø†ßÅÞ=&‡o¸îh nà†oà†j@f o€rˆ†qø†=þ†ßý†ß†pà†q(þxpx8‡SX†90‡…8w€t8z° w ‡op‡…8y8zøzøzXˆs txz@xpx tðˆo wðˆo t ‡o ‡…øxp‡… ‡q@x8tptX«Xˆx„MXˆiXíÃøK`]°†x(…ø†9˜…9¨ƒ}¸ƒN ‡9€„[ÈSˆ~˜Xø‚Ýîr/6 {(G8‚o ‡s@z ‡/os7s8óÖörXw€tx¸9{@‡…rˆ†hø]B'tr8ôh‡hènh€†b ‡b¨†d ‡hn ‡C'BþÿBïnnø†_€‡Xè…/€‰o x@‡t x8“z@x@x@xp‡s€rp‡s€‡44‰Azøz° w€t€t 8t€‡s0 t ‡s@z€‡s¸G0r€hXmˆRÈÀ ô†ð‡ð@¹ø´}8Œ:0…/s}¿gø†}¸G8‚q€‡)}?x„Ox…µÃør88z9{Xˆs(tàB¯PPç†o¨†hàh(r‡jxpoà†jˆ†jà†pø†ïîjÈyr(w8z8‡Sˆ†6ðt þt x t€tp“@xptpx@@‡h¡xp‡…@xø†…pt€tpxpxp‡…H¡…x8x8wX«Xˆ0H ‡s˜†Üö‡ð‡ð‡ð‡aó`«XÀ‚…_| zˆG‚…8t rX|ÌÏ|ÍÏmøzðt¸x¸ˆós°tXˆahÈùjxôœôjxôœô… xør€†i€×ôGÏyàwýoø…s€‡i…døx@x8x8x8t8‡…° x@x@z8w0 tXr ‡Ò€tz( sðzøz8þ‡…8x8‡…@x8x ‡o ‡Ò t0 €@Gï:zðÎÝxt w¨ÑÏjðóÊ£èòO,6ì#MþÔaÊ1Þ¸ãC¹ä“SN9:üÉ ,¹sÎ7•ƒºè£“^ºé§£^¹?ç CÏ7ôÀ=@¤ù7ô0t<îÀƒÎ9îÀÃ&=è0D=èÀã=,ÏšðœÃ=äÀã<îœcô9,™RÌqCÏ7ðœÃ;žÑƒ=ßÐó =ã¸C:ðÃ: ÑC:,Ã:îxô@<Üw0æ€=ÐAtÀôø<ÐAq0Ä3 ¹Á# AsLcrœ°E3lÑ [ŒÁï8Â?üþ1„{Xà%¨‡üÑ|ì B0G?zÐØ€ÿ¨Á?Ð ,Ô.‰JlÜ7äqS!ç@=ȱÄ+b1‹ZÜâãüAw è€Ç àq-¢Ãîø=àq†Ðƒ!ç€Ç9ÆAtÐãè`ˆgrxÐãqI:èq†œô@<ÐtЃ%§HÆr† ƒðÇ7èqwÀî@<Ðwœã :èq–|ã <¾Á’oÐã ‘<ÎAsÀãô€:Üqzœð@=ÐÏÐãè <΃Mœ‚!И'(a‹KØ‚cðG=’ðþ} áIø‡ò…”b N˜Âü±*ô5ðÇ>ZÀâ \(åÈAÜè`ˆ;’DЇB4¢õÇ7âxÐãô‚Çax¸ƒ!耇g ƒŽs ç Ç7èxœƒ!è`È7èqz¸ãî`:‚x ƒ%²‚Ç9`QŒ9|ƒ%çð CÜsÐî`ˆ;àq†œð8=¾tÐðð =ÐÁz ç`È9äÁt0„è`:àz0äî€:Î!t0Ä3 ¹Á# wLcrƒ D!(A‰Báï€À1„{@à O¨Çþq‡þ/¼ CxH6ð(áø‡L‰FÔß°G LqzÀãè 9`ëÛßWtþ Ç9ÐÏ7È¢?Α?tÀÆACÜÁw0ð@<¾A†¸ß :àzÈãè0Ì7èat0Ä,9E2¾@x ƒ!î` :âzœç0Ì9àátÐðpCÎw˜Ã3ç€9膜ƒ%ä@‡;Ά¸ÃžaÉ7ès ƒç@=àq ˆ äü±Bà8ÇAÍ?öÆùãþø‡?þáøƒOø‡?þ¢g•«lå+þcrç°Ç q–¸ãßÈ2™Ëlæ3£9Íj^óãüAz|ƒI:=€ÀæÆùããÇ9àáxÀ¢°Ð,‚ íäbÅF2Š!Œ\°GÁ(ur¡X\'Åø…vrÁ’uÀÅh: ó –ôCèñ £Áî€:Îs0ð CÎAtÀô`È7ÎAx¸ôøCÎz|ƒç :èÁt0Ä3 ¹Á#6ÁiPùÉ‘{ò?ü9üÃjÀGãPSS`áÎòf³?Èa0 9:èAŽy<à8Áý‘$z î¸™ãøÃ?øÃØú ˜ÂTµTûÃ7ìà ˜B <©;œÃ7œ÷|Ów}Oí8 ƒ;=œÃÐز? ƒ=¸Ã“rC1Ã0°G1,C2Ã0 Ã/ C0C1 C2uÃ0$C0\Ç/$ƒvüÂ0\Ç0$C1p<¸<¸<œB1Ì< < <¸:À=|ƒgÀ:À=|=|<ÐC’¢< < C’º<ÐÃ7$©;$):˜=|=|ƒ<¸< ƒ;$):À:Ð:$):Ð< Ã9¸þ:ÀÃ9 C’zF’ÞÀ#lB’Nƒ*ûÃØúôØ7.û9ÈC ö•¨ $*'ñGSü1‡V`a€‘dŠ?È!#<âô€Ç9ÐArH”¡%(ýAŽÅÐ?è!d#ÙGV²?aŠ3(ÊQ–ò”©LerØãw :âŽs|£Êaó˜É\f3ŸÍb‡;àáxœãðBšìtØ#"è Ç8Üqz ãôø=¾áx ƒè8=Èqx ãi¡Ç7èñˆ ƒt:ÎátÀÃè€Ç9`QŒ9Àô@GZÐAtÀî€Ç9èñ z|#-ç ‹9àxÐãð@‡@ÐtœC è€:èwÄð@GZκÀð0þ‡@Ð!ºäØ„@¦!eÝéV7ºý1‡V`aÝñ–÷¼é]ïtŸƒ10Å ès ƒä°÷À ^pƒá W8ºýñ œC 7Ç ŽîoÐ߀]Ü!tÐè€:àátÀAG_ÑqÐá:àáx¸#-çpÌ)¢ñtÀðø=¾s ãô8GDÆAtÐä€Ç7èáºÐi9GD¾AtÀðp:èoÐð@GZÜQ9tÐãè <ÎqƒG˜‚ð€†¼ÉQ‹PÃô~ºõ‹WÙ€0Å*ÞøŠ£Ã7xÄþ "âŽÅ8ó™×üæ7ï|#-ô=€ ùqЃè :ÎAoÀƒ.î=ÐAoÀã9<Î!oЃçp:àAx c1ôø†@Ü!tœC ç8E1æsÀƒè Ç7ä!tDð@Ç9èBtÐðø†@Ðax¸è0<Î!ˆÐð@Ç9èñ zŒãèáàÌÎA ÎÐA ÐA ÐA èB bÀ Îaâ XAeþ@þAøa ¬݆À€ VàjàÎaü!ÈüaZ 8ãÍÈÁb€€@ ÎèrþÐ ðДãàá4oìàâ"âÐÐ!-ƒ‚¾ÎA ÐÐèáèA ÜÎ!"¾àŠá âèÂÂàáèáàAÎÎÜáÐàáè^ãèÁÒ‚.ÜáÐèàá5àÁàáèÁÐÐäáèá"âÐÎèÎááÔ-*aþÁN"*NÂêÀ΀þ`ëõøáÐA ÜᾡrCWtG7Ýüáàá⎀€@Iý!ìξ!""âàÁÎ!"Ì!"ÜÐè""ÜávÑÐA ¾áváÁÜÎÎÁ’á èáàáÐÁèèáèáèáèáèèÜA Ðâèàèá"âÂÐÜÜоàÌàÁàšÎÜ‚.âèá¦aÝüáüáüÈ¢ÈüÈüAÈ IÈüá$¢Z H—JýöáèÎèþdˆƒ8`¿Ü!"n€€J¿ÁèÐA ¾A èáàÐA ¾A Î!"ÐÐA ÜáàáÌA ÎÐÎA ÐA ÐA ÜZ¡æ"ÂàA9ààaèèÈÁÎA ÐÐÜÎA ÎààèèáÜÎÈàáèÁ¾ÜàáàáàánèáÐàáb`NA  Aáüáàüa`á „¸ñüáø!Lá"ÂÎáŒYš§¹â¾¾A Îáà”ÔÎàA9âèþèB ÐÐ"ÂàÌÁÐÐA èáäA ÐÐÐA ¾¾èáàÎ`¡Ú "ÜÜ¡yÝÎÎÎA оA ÐÜСyÍA9àáèA ÎAà.ÎÐÐèáš÷àáÜA èB nà Ü¡ ©“Z©—š©‘:šª•º¢ N ¨9áüä!!âÐÈ«ËÚ¬çÍÈè¾n@n@Iýì!"Ì!"ÜáèÈÎà.àáèáè!"¾¾ÐÈþÐÐA ܾÐè‚"âN!¾ÐÎÎÎÐΡyÝÐÐàáèСyÑA ÜÜA èB èáèÁà.àáàÁÂÂànèáÐàá€zâèáèáèáèáèáèáèáèáèáèáèÁëÛ¾éÁàaLá κàüáì!LÐA ÜᾡâœÁÜÁ\Þ¢bè‚Ðb€€ÀÁýáèá"‚Ðáèáä¾èáèèaÜÎоÐþÐÐ!"èÐÁДèÎÁ¢á èá"‚ÜÎàÁàÁÎèÐáÜA ÐÐÌA ¾¾ÜàÈèáààá5Èèáè"Ân‚.âaÐA è"Š!~!Š!~!Š!~!Š!~!Š!`á`!`!`!`!`!`!`!`!`!`!r!’ °Â{}ÞüäááèÎè|Ù›ÝÙŸȾÁàA9ŽnÀÁýáìξèÂþÎÐàèДÐA ÜáÜAÎA ÌA ¾ÜA ÎÁÐÁ‚.â’aÎèáà"Âàáèáàèá‚Ð!"ÌA оÐâ‚ÎèÎA ÎÎÁ"âÆn"âèáÐàánzŠaöá$üaNÂöá$üaNÂö!Èöáöáöáöáöáöáöáöá–!ráÐæÀÎÚŸÝÈÁn€n "ÜšãžïûÞïîàÁàÁÐáè|èAþ èâàÎ.à.Îá5âèáèàÁâäávÑÐÐáäÁàá"âàáàÁŠ¡ àâànÂÐA èâàÎA ÐÆÐáè""ÐáàáÜâèánB9ÌA ÌÁàÐA ÐA èB bà àaàÈèaN‚öá$èaN‚öá öíû·ïß¾ûþíû·ïß¾ûþù›øZ1x_ZaùDZ£Ç CŠI²äHßèÅ0¼sèè‘3I³¦Í›8sêÜÉ“&7—ðι»þž!ÏÙƒ‡tà>ñгþìC ?ôøC?ôðC?ôðC?ôðC?ôä@þÐó?þÌaÊ«6½*:öÜðÈ @¹sÎ9Ng­õÖ\wýÏ7ô Ôð¡µ?áØCÏ7Tã=èõ =ßÈ=ßÐó Pæ :îÀsŽ;èPõ <ô sŽ;èЃ=èÀƒÎ)ÅÌ:ô :.¹Ô9ôÀsÂØSωس=ûس=ûس=û…)°dq„=ôÌÑ ^÷ž?ä°G —œô ‡ÿÈÀrÍä8<Ðs7ØÚ8ìz|Ã%ß GSÜq—|ƒèÇ7àx C,îpÉ9\‚z|Ã%è GSèsÀãð8‡;ÎS$C è€:èñ zœî0:\‚ œƒ*èpÇ9äq—|ƒ瀇;à— è0<Ð!t¸äè <Òå—4Å.9þ:èqtÐç¸)6á’bØÃ~À/üpHzØcO ta {èÃø‚8€` }Üa³°‡4° CÒçÈE+`Ñ X؃s€Å6EËZ*Êþ ‡=n`ŠÅçø†¦†IÌbó˜ÈLfwüñ zÀô ÇèenÇç°:èxÐ.9‡KÐAtPÅTù†KÎA•s¸T9<α¸Ã@1E1怎s¸èp :àAoÀð8=\‚ œç<ÐAt¸.9UÜásÀð@‡KÎz4怇;\rxœèp :þ\Ò—Äà¦8‡;˜a|Øøà¬1‹CÚ€òxf@vaö(džÀ Èãòzä9žs¾h ,ïÅ÷Ÿoì!Á” ":zÈÉ·`ƒF8áơ盈Î Ž’{ÎxÎ眈è9‰ÎAt$¢‡)‰Î± tÜ!‡žsÈ¡çtàAǦsN)¦ xÐqwJŠèxСž’à9‡w$:‡wÎiÙxÐG&xÐLj܉‰Ðq‡xÜwÐqtÜw·wàAžL1åx’þ±é›ˆÎ±És"r'¢sÜ¡gxèzJ‚çyàq'"tÈ¡çzà™Ã”3&ýÈoø¹ ЉÈs¾)=vÙg§ÝF¡çzàAçx€(8Êsì‰Èœˆèùt$:'"w$Bžqà¡çxΑ'¢oàAsÜ眈Їžo":w$:¥,~É¥Õ_NiµÐJsù%˜\‚©–dr)F¥ U©_Àâ¹øE0ZU X C~ÉÈE«‚‘ Xü"÷«T0rŒ\ü"­ F.‚QŒVT*¹øE q x¸£ç€Ç9$rxÐã"9GDèÁ”ˆ Ãç°<ÐþwÐC$LÇ9Üwœã ­ÀBí¤èr샸=àqtЃRcÅȤq 〇;nìô@GDÈtÐî€:$âŽsÀãð@=Îwˆð ‡9DrwÐãð :èq‰œC"°HÆ"‚zÀ#A‡;ÎáŽsÀÃð8<ÎáxÈÄð@‡;Îyœ#"ç :"rwœƒô€Ç9àŽˆœ#"爈;àáx¸R&ð8:ÜAx ƒç¸#Látüôø<ètÐã9<èñ wˆä¡Ç9èñ xœÃè€Ç7àq‘þœƒè Ç9æ`Š3Œ1vþø?‚`ŠHÄL1hD%*QŒîˆ=€@  ô€Ç9"rŽ’HÄ6¡Ç7è1xÐA=¾áŽˆ|ô€‡;ÐAsÀãð Ç7èñˆ ãîhE2æpzŒãðÈ…;àቜ£eA‡;à!z0Åð8=àqzÈäò GD˜z ãò :àqzHäô =ÎzDä%¡:àáŽlâç€,àz Ã߀GI艠Cç =ÐtÀð@=à!sÀô@=ÈAsÐÃè8:èñ…V`þa¢ó9äƒGÄ "ç@=Èq[âWv߈ˆ}nìöˆÈ9"âz˜ù=¾tÀãð :àñ x ç :àzqÇ8è‘’Àô=ÎaŠb|èH1àᎈœ#"ô8<ÎAs #"ç Ç9Èᎈ ƒð@GDÐ!“ˆ ƒç:ÜqzA<¾wœð(‰HÎwÀã7à[DŠqwÀã¡:Üt´ ð@=ÎwÀîÈ9èxœè€:àᎈ s0Å 6f$ùãöˆ)€€Žˆ¸ãþßÀRœåøzˆS‚ˆ8t rˆ¾<ÔÃ=äÃ>ü‡o@‡ˆ t¸x¸ÐÃs°tþˆs€zøz€‡o t€z8xp‡ˆ‰o t€tˆˆo x@™ˆs¸*x@‡ˆpx8…dp‚@xÈt€‡q t ‡ˆø†ˆ@‡stˆtˆs ‡o ‡o€t€w@x@z@‰@‡s@x@x0‰z°ˆ@x@z@‡ˆ@zˆˆs¸F0…ˆ(†ˆ0‡ˆ ‡o€z@xp‰pz@x°ˆ@‡ˆpx@zøx°t ‡o ‰@x˜S8?ÄH!{¸; tˆw8‡oÈÈ’4É“ìÃo€‡s x8‡#  ØÃoàþtˆz( x@‡ˆ x@‡ˆ8‡ˆ8x t€t0zøz@‡ˆ@‡s° t0‡ˆ@x@zø†ˆ8x0…dp €‡8xøx8w8‡’€z@x0‡ˆ@sˆtˆˆs x@z@zøzøwˆtpx@x ‡–qx@x8tp‘@x@w€t€‡sp‡’ˆˆØ„M x€tˆ¦@‡ˆpt€‡s€‡sptp‡sˆw ‡o t€™ˆw€z€t€tˆˆs€‡sø‚VÀ”4És ‡0… x8t r@Îê´ÎëÜxøz8t þ‡€ ÐCz€‡’z8z8‡ˆp‡s€w@‡ˆø‰pxøzpt ‡’€‡o x@‰øz€‡oˆt€t t€y8XX0xxx8‡\ˆw‡s€t8‘øzpzøz8‡ˆ@x8t8t€t ‡ˆøzps°‰s€t€w0‰pz` t‰s¸*z8‡0…M8x(xp›@› x@‡ˆ8x@zøzøx ‡o€wˆˆs€‡’ˆˆs€‡sˆz8‡90…3ÀÎ>D{¸G¸‰p¦˜Ó>õÓ“Œr8‡ˆ@‡s8xþ‚=‡w@x@‡ˆ@‡«¢tˆt8z@x( w ‡o tˆo€z@x t€s tpx@x t0…d¸S@KˆX€w zø‰ t€t ‡q ‡o€w€w‰s€tˆw8‰X‡s st ‡’ˆzøzøzˆˆoˆo€t€wˆG8xp‡V ‡s z@xøz8tˆˆs@‡ˆ8‘@x@‡ˆpx8xø‰px8›8t ‡/h,X‹‹ÅØŒÕØåØŽõØõr°‡` ˆˆs@z ‡eÙ–uÙ—…Ùþ˜•Ù™¥Y’o°‰€‡¨Ù {8x8‰ø†ˆ@‡ˆøx(‰q ‡o ‡s€tp‰ x@x@x@z@w8r8‡ˆpt€‡sˆˆ’p‡V(†9`Šsˆˆ_‰o€t x°s ‡’pt ‡ˆøzpx8‡ˆ@‰p‡ˆø†ˆ ‡ˆ@‰8t€‡q x xz@x@x@z@x@zˆsˆF0…s€‡\ ‡sp‡s€z@z€tˆˆs€‡sˆt€‡sˆˆs ‡opz€‡s x@‡ˆ8‡–qx@x˜S8ƒž•ÞéU‹(!{¸Sˆþ‰p‡søêßðßñ%_=x@‡s€zz‚ñ {ˆˆs ts€t t x8w ‡qˆs€‡spx@‡ˆ8zøz@x@‘@xp‡sˆt0y8x€…`˜‰8x€x@x t8w@‡–q‡s€û t8‡–Ax8‡ˆ t€û€sp‡ˆ ‡o€t8‡ˆ8w8xp‡ˆ8x@sp‡’ˆØ„S‡sÈtˆ†4‡«úzøz8‡ˆ@‡ˆ@‡ˆ@sˆˆo ‡ˆøx@‡ˆ8x8‡/h,(ß<îXˆ{ˆG‚ˆ8tþ rÐãCFäDFäo@x ‡’¸x¸ñ=yt€z@‡ˆ@x8x8‡ˆ( wˆwˆsw€t ‡sˆˆs ‡s ‡o ‡o ‡ˆ@z€w‡s8…dør t ‡sÈ…ˆ( z€w0‰8‘8‰ x@‰8s‰’s t€t ‡sˆˆswˆt€yøz€‡s€zøz8‡€S€‡sz8‡ˆp‘@s z@xp‡ˆ@‰@x ‰@z@xøzˆsz8‡90…3X‹}°‡Žöèéé‘&é’6iþx°‡0…þw` E–陦é™ýx@x8zz‚ñ=z€tpx8x@z€t ‡o ‡o€z@‡s€t zø†s ‡s€w@w€‡ot€t t€t€t ‡’p‡ˆ8X(†9@x@‡ˆ€…ˆ8t t0x8x8‡ˆ8zø™ x@x0‰@‰8x@‘@‰8wˆzˆˆsp‡ˆøzøz€tt€t€wˆGØz€‡\@r ‡o ‡spxøzˆt€tp‡s€t ‡o xøz8x‡s€t€™@z8tw8þt ‡/h,X ~8x8x8x8x8x8x8x8x8x8x8x8x8x8x8x8x8x8x8x8x8x8x8x8x8x8x8x8x8x8x8x8x8x8x8x8‡ø{ S‚ˆ8t r¨é—ñ¿Øo€‡sˆtx¸ñõr°‡o ‡sˆt€‡s@x@x@‡ˆ@x‡o t€‡o€wˆtw€t xpxptp‡ˆ@x@‡s€t ‡s€‡SH,XøXH†SP”bEÉX(aþ(”_ˆ”bÈ…B…\€…b€a(†_€…bP”B…b€…_P”bPX(†_€…JQ”bÈ…b€…bÈ…bÈXX(XøXø…bø…0…M zÈx8xpxpx t ‡ˆ0z@‡ˆ8t€t8x@zøz‰s x@‰8‘@x˜S8ƒð‡¨†d€†d€†d€S¨†i¨†i¨†i¨†i¨†i¨†i¨†i¨†i¨†i¨†i¨†i¨†i¨†i¨†i¨†i¨†i¨†i¨†i¨†i¨†i¨†i¨†i¨†i¨†i¨†i¨†i¨†i¨XØ„d€†d€†d€†Sø‡þoà‡` @‡ˆp‡sø§ùšOäo°‰#  _8{@‡ˆøzøx ‡o‘p‡ˆ t€t ‡’ ‡oˆt‰’ˆˆs€‡s‰s€z€t€‡s€SH†/‰8‡ˆp‡s‰p‡s€w ‡†t‡’€w€t€‡sp‡ˆ@‡ˆ@w€t€zpx@‰ x8‰pz@x tp‰@‘@x8‡xS8t†sˆtˆtp‡s ‡o€w@wXEx@x8r0x@x@xpxø‰øz8x8‡/h,øzð‡j‡æw~fpþè—þþé§þê·þëwþa€…é_ ‡} G¸z€‡s@z ›Wÿõ_ xø†ˆ@‡€‡ð‡ðõr ‡ˆøz@zxèèƒw¼sðСƒ‡Þ9tôÐÁ£÷Þ7xèà¡£‡:饛º?ãÀs=ãœs<@Œ3;íµÛ~;îã ó =ðœÏ9ô|CÕ9î 9ð¸CÏ7 CÕ9 :ô|:ð c<è¸c:ç˜t,Éœ:ðÐcÒ9îTF:ðÐó;ðœc= }C<çÐ=@rz°†*è‰;ÎAxœ3þô ‡;èñ |Cð¸)Nqx ãôø=ÆAœð@‡IÜ’s  1 :àzÀƒè Ç7¨rwÀãð8ÇZ×DƒÑ€#¦QVpƒÑ 7È rpƒÑ 7È rpƒÑ 7È rpƒÑ 7È rpƒÑ 7È rpƒÑ 7È rpƒÑ G4¸Q Xä"ÑD5ªÁ Xøƒò8Â#n@xœô Çé2©ÉMr²“žìä7@‚Ü7€=ÎAsÐãô8=ÎAsÐãô8=ÎAsÐãô8=ÎAs¸çþ  :èñ ªœÃ$ä€:èqx¸ƒç€:èq“œð Ç7èzPåôø=à“œ¢s€‡9à±x|ƒ ù=Îwœƒ;@BoÀôø=Ðwã0 :@‚xÐð :ètPå 9:àAtÀãè <ÐAxœã0<ÜQ tÀç`UÎAoÀ#+ ¡Ç7ètÀî€ÇNÐtÐãô Ç9äá“Ðãs0Å\S h@ƒ\…,Š1Œbud-Æ0Î:Œ³ã¬Ã8ë0Î:Œ³ã¬Ã8ë0Î:Œ³#à þ«0N1Œj|uÐh…?Èa0â&qkF'ÙÉR¶²–½,f3»¹oÀ#+ð ètÀð@<ÐtÀð@<ÐtÀð@<ÐtÀ ¡‡;LBx Ã$ß0 :LrwÐãô@=¾At˜&9<Ðs ãð <Ðt˜Äî8Ç)Šñ“œƒ߇;àñ y $ß0É9èx0$î@<Ðáx|Ã$ç€:LBx0 9:Èqz|ƒß :àAoÐ瀇;s€Ä1€Ä)àA\PÅ&qHÐA“ è ‡þ;¾AoÐã A=ІÀãôÉ9àáŽs ƒ_hf7Žb˜bV6…•³¬å-s¹Ë^þ2˜O± HpÙV>‡!c` €äè 94+ç9Ó¹Îv¦¬?ÈsÀè¸<€ÀÕj@£Ш4ªj@£Ш4ªj@£Ш4ªj@#\5d4¦1j€ºÔ†œF4ªÁÕj|µ\554¢QhT#‰¬Æ4¸ZhTÔ·6E2æp“¸Ã$è GeÎw ƒß <Ðs¸$ç =Îs€„ðð3<èñ zðð@_ÐAtœƒðÈ =þ¾Axƒ7x„)ÐáXœ$ç Ç7L‚wø AÇ9üLtÀ 9<ÐqxÐðp:à“€ð˜ƒ)¾`‘“|äô9=HN’Óƒäô 9=HN’Óƒäô 9=HN’Óƒäô 9?äQr~Œœö GÉI~ƒ; qÇ9¾qç©S½êVŸ¬?¾azÀãð=ìA{ÐÃô°=ìA{ÐÃô°=ìA{ÐÃô°=ìA‘Ó#é~÷;=FN’Óãï§=FN¿Ócä¦(Æàñ x¸$ß ‡ŸAò zœô <Ðtp$牟éþñ “ ƒ߀=¾ázŒãð8<ÎQúoÀçpÇ9àáx è€:àq?›ÈÊ0àq ƒ ù=Î!s€äôIVÎatÐã A‡;Î’spüô8<Îñ…V`çÈ 9ètÀ#+&q‡I¸ƒI¸ƒI¸ƒI¸ƒI¸ƒI¸ƒI¸ƒI¸ƒI¸ƒI¸ƒIœ9Ð< H¸Ã9pœ;ÀÃ9p\ ˜Â Ð<œƒ;À4H ¶  ¾ Æ  Î Ö  Þ æ Æ :|<<=;œ<œ<œ<œ<œ<œ<œ<œ<œ<œ<œþ<œƒI ƒ;ÀCVÀƒ<œHœƒIÈÃ9€Ä9€Ä9¸Hœƒ;˜„;ÀÃ9˜:Ѓ;Àƒ;˜:¸ǹÃ9¸<¸=ÀC+$Ã,,C.ü,,ä‚0,äB2$Ã0ÀB0À‚'ÂB2ÀB0,C.äYý‚'&C1ÀB.Ã)þÂYýB1ü,ä,,Õ/Ã/ä,,,ü,C0à ˜Â&Ð:H ƒ;= <¸H = < = Cé¡<œHœCé¡< = HÐÃ9Ì)|<¸Ã9Àƒ; <¸Ã9Àƒ;°<¸kÀƒ;°þ<¸kÀƒ;°<¸kÀƒ;°<¸kÀƒ;°<¸kÀƒ;°<¸Ã9˜„;œ<œǹ<¸Ã9À= Ã9˜Ä < €„;Ð<”œMÞ$Næ¤Nî$Oö¤Oþ$P¥PeOÒƒ= <œ< CÀà ”TF%Tžƒ;ÀÃ9ÀkÀÃ9ÀÃ9˜Ä9Àƒ;€Ä9ÀÃ9˜„;œ<Ð:°<œHœH kÀÃ9Àƒ;ÀÃ9ÀkÀÃ9ÈHøkÀB2œ;ÀƒŸÁ:Àƒ;Àƒ;À=œ:ÀÃ9À:¸CTº< < Ã9Àƒ; ƒ;€„Ÿ:d<= Ã9È=þ¸:¸Áƒðø<>zÀãcðø˜<èáF‡ÐÃ!nF5¾‘¥ÀË@4˜áGføqШÆ2 `Tð Ç7è1 wøqÑX!— f ’ÕX!§±ŒAVcÐàÆ&àzÀô€,Šñ…sÀ#&ôø<ДÃ!î€:àax ƒè€Ç7èJ­‡ðø=ÐAõ|ƒè@Ê9ÆAtÀCß RÐAx Ã!çXÏ9nÀˆMœƒ¹@ :Ît8Äç€:àz ãð :àx ƒð@‡;àAxæ Ç7ätÀþðˆÉLñx ãðø†;àqxœ)è@ :‚¤ )è@ :‚x|ƒð@‡;‚zœãð Ç7àqx è Ç7ÐAŽsÐãðˆ R(ewÀÂz‚xÐëA<èŽõ ô@ÇzÐz c=è€=бtÀƒèX:àAt¬ð :ÖƒxÐëA<莫NcþøGë}ü²=ÜÇ?(ë}ü³ûøfýAzl¢èpÈ9è xÐò€‡;BxÈî@ =à!x¸)ô€‡<àáKÀCq=ܱžaTÃ!þè€:èqz¡ÂF1®+ŒaãºÂ¸îu‘ ï^WÁh<Ðqx¸c§Ã¸î0†‘ ï ûÃF0†q]aCÁF1~‘ŒbûÂHÆ0‚!ÞëÂ"ç@<:ÕŠhÌÁ!çp‡CÎAÂÃð8=Ðw¬çð@=ÐAz¸Ã!è€Ç7Üz ”‚‡9àx ãHA<ÐátœçpGL®Šx|CðˆÁ&Ntðø=®z‡Ððp‡CbBoÐð@‡CÈqÐãAÇz¾As¸ƒ_0‚zÀôXÏ7èñ z|ƒßþ Ç7èñ z|ƒß Ç7èñ z|ƒß Ç7èñ z c=è€:rtÐÃ!ô8:àáŽõ Cß Ç9àqxœô€‡;äASèpÈ7‚ŽqÐãôø†CÐ1z|ƒßp:ÆAoÐãAÇ8èñ z|Ã!è=¾Ao8ã Ç7èñ ‡ côø=¾átŒƒß Ç7‚ŽqÐãôø†CÐás èpH5æÄ}Ðcô"=€H}ÐcôðG:Dp„ÈÃôØB öA}Јô"=€H„ÛcÁ8:‚hœÃ;íÑ9Ðqtœc %¸þ'Ðqwì´Gç@Ç9ܱSw ãî8<ΓsÀc§î(F5ÌátÀcG€ª1 ã M>Õ@Ú4ªáÇj²ÓˆÆ9¾A‡¸î€Ò¢Q hTiÓ€F5 QiÕ˜4¦ahDÕ˜†§Êø±Ð0Ž;ò z¸ƒð0E2¾€‡œAÇUᇠ)ß :àqxìÔç0RÎwœÃ!æpˆ;ètÀƒq<ÐqÕsÀƒçpÈ7ò z ƒð8Ç a x £ð :àñ ‡ ƒä€Ç9àŽs¸Ã!çp<ÐtœçpÈþ9ÜAo¸);•‡;àáç@m` Xôè@ôð€æîè@èè@èè@èè@èè@èè@èèàçèæô€ôð ð@;…ô€Aßàç€ðpòñ ôè`ð€ô0ôð ô€ðpô0ôð ô€ðpô0ôð ô€ðpô0ôð ô€ðpô0ôð ô€ðpô0ôð ô€ðpô0ôð ô€ðpô0ôð ô€ðpô0ôð ô€çôð ôð þ s@ GŠö@Ф¸¼à»5P˜`§¸ö ‹û`û`›P ôð HQ èèpèçàèÝ`è0è` 7°å Y°î°7 µ0' 3°Sèpèßà߀ÅP ð€æ@èpA7àîpUîàîîpUîî°1ç€îàç@è€=ô€Ñ#WåáëáWÕ#==âîçà¦P s€ôð ðàç@ß@ßçè@ßè@èè@çàç §wqð€ç@ß@)ôþpôð ð€ð@ô€ð@ç1á1ð§pð 1qè@ðð ôpHð@ëðpAð@çàç€qèpzçàè0g瀱Sè@ß@î@îç€îç€îç€îç€îç€î=rqaHß@çàð@ð@è@ç€ëðð ðàW…ô $ÀGè@îð ôàç€î€ðpôpî€î€ðpôpî€î€ðpôpî€î€ðpôpî€î€ðpþôpî€î€ðpôpî€î€ðpôpî€î€ðpôpî€î€ðpôàè@è@èÑPû`j¡eôð¡ô¢jñ`Ø5ÀÖ@ Zö@JZ*› è@qÑÐääð çð Ø0ãÀ¤wp ð 1@/ð 1ð ã @€D äð è@ùAùAäð Ѐôèà@@Gpðp‘=sêð€Ñ#ð€ðàð@ô°ô€ðp=vêðð€ðp‘ðpèàî‰ð€ð0þ§ðÐ#ðàè@çîàòps0Xèèôpð€ð€ð€ô€ð€ô€ðàð€ð€ð@ëñ ð€§·îè@Hð€ôàçðàð€ðpðôç¦` ðpÅàôô€îpHa”âôð òBè€ôàôð ô@ð€Háç0Ì`îçàî€ô€ð€ç€ç€ç€ç€ç€çàèàç€îàç€èç@ãpôpèî@ß@ß@î@HçAþ` 11Aèàçàç áç áç áç áç áç áç áç áç äçàçàð€ð0 s@ö@òp¢ôð¡ò@òZòÐO <  &  ô 'Jò`ô Z³ ÁçàÕP¦ßP¦ßP¦áð ã· ¦0Ü0Ï@Ü Þ Ü0 U Õ *@ùQ¦ß@ýAÅ è@ðpô@7@7èpzç@ä@ä@߀ä@þèpçèèèôpð€qëáôèàç@ð@ßçpzç@èàç@ß@äç@èàîpðàÁÓ0qð€§Gèèpç@ð€ð@Aè@ßàèàèè`îèàçßàBî@ß@ß@ß@èç@ß@1á7ð§pð çèpð€îàæ€áð@ßèôð ôpô°SHqèð ð€ô€ô€Wus ŒpAq1îÀ¬•|zèþî€ôð qè@ðàð€îèîî€ð€ðÐ)ð ßàèàî@ðppðpð€î€îàèîpUèîpUèîpUèîpUèîpUèîpUèîpUèîpUèòpáðàß@çP u°cnô1ô  ú1ö@–p ¥`êò`øü¡ccòZ› HAðÀ Ñð Ñð Ñð Ñ ßÜ` WÉðYpÒßpß` AÐ Õp@à €àÑäð Ñð ÑP¦Ñð ÁP þqðàððpß@èèßàè°Sð€ôèàè@ðpðpëHîàèàôð qèð ôð ä€ô€èè€èçèàçàèß@çç j€Hqðð ôç€èð ôpðàè@ððpôð Hñ ôð ô°è@ð@ç€ôpáç€ð€ð€ô€Hðôçp` Q ðàqAî@ßç@ç@ßàè@ãè€èôàq1qþð€æèàçÐÅÀèèpW…ñ Hñ Hñ Hñ Hñ ð@ð€ñ ð€ôð ôè@ð@ðpÑ#ðpáðàAß@Hað€ð@)1` @€ç@qôð ôð ôð ðpHñ ç@ß@ß@ßç€èàßpôð ôð ôð ðpHñ ç@ß@ß@ßç€èàßpôð ôð ç@ð@ðà s@öø,ð H¡çø czîã èÕà “îþ @ó ÓP Ó4ß Õ0 Æ ÜP ”î  ß4Ã0 ð@èpô@@@@€ð€æ@Háqððèð`çàèç°ßàæèàqôð ð€ôð ôàô€ôð Hqîðèaôð ð€§‡ô€ðÐ#ð€ð@WŰ0èàçèàèçô€Hñ ôàô€ôð ôç€ðpô€ð`ðàô0èß@çðèèàè@èèpUçàçàè€çàèà1À§à¹ç€çðèð€ôþàçî€îîî`ððèçpUòð ôß@ß@ð0›0qëqß@èôpèôpèôpèôpð€ôpã@æè@ðpèèççàç@ðpôpHñ ôð ôpî€ð€æ€aôð Gð7àçèð ð€ð€ô€æ€è@ð€ð€ð€ô€æ€è@ð€ð€ð€ô€æ€è@ð€ð€ð€ô€æ€è@ð€ðàðð ôðèðàèÑPþö®þÏñ1¡þzîò› èçàÓ Æ ÕЪ ¬ Ú@hÕ VƒVÍ`5ƒ „V Z5h“A;‡Ž¼sð‚À»Aï=wèࡃwŽ:zðÎÁ£)ïMyçh¢£‡Ž&:xô¾ÑtGÓ:xçÈ¡CçÎÍs4ÑÁ£÷&:zßè;G¼sèè}£wŽ¢ƒ÷Þ9zðÐÁ;÷FwðÐÁCÝGwðÎуwÞ9xîàÓˆŽBG£s>úF£ýÜçtàAžoè9G#tè9tàAtè9G#wà‘ÈxÜ9sÐùÈÃÐoèxÐxСoè9G¤oè9gœÐ¡G"xÐzÎÇtÜA žqèùF$s4:tèAtC‡ÐçzÎÑèœÜçtàAžoèAG$tèqtCÇs4Bç0z4¢çz4ú†xè‘zСÎA‰è1‘¾¡Çtàù†xÎAG#‰þà9s$:‰Îwà1t42xÐxÎA‡žs>B‡ÄÎçzÜqèA‡žsСžsn0eŠçœÐ9‡žsà9‡xÐçzÆxèù†t>B‡žsàA1wàAG#tèAtȇÎçz¾¡‡œÎ¡çxÐ9‡ž…;G$w$‚çxСxÐÇyD:‡t>:‡žoàAtèÑhwè xèAÇxС‡œsèù†xÐÑèxÐqbÜùE£oàAçœÃ¾¡žsà! tÎшžoèù†žo4BG#zÐ9G£sèùFžþsèù†xÐÑèzСG$wàAw4Bžs>¢çwèùžs;ç#zÐ x¾‰tàqwàq‰Ü¡Ðшtà9‡žoà‘žsà¡xÐÑèxÎçwà9è€:èñ z|ã#è Ç7èx ã#çЈ9ÜŽÐcî€:è ãô =Ðáx|C# ƒÇ7>ò z|ƒèÐÈ94‚ ãè Ç9èx ƒè :àáxèø=¾¡t¸ƒ߀:àAtÀÃA‡FÜñ‘sÐã#ô‰94‚x C#ßÐ=Ü¡sh„þß Ç7D‚|ƒûÇ74BsÀC"ç Ç7àw C#ÑH q xœ#î€=Îñ zÀðp<ÐsÀÃèÐÈ9Èáx èÐÈ9ÐzÀð8‡F¾AoÐÃè€Ç9ÜsÀãè€Ç7è¡tÀð8<ÜwÈãô€:àx è8Ì7èz|ƒè€ÇÂÌñwœC$è ‡F¾Aw|äôˆFθÃð <Ðwœƒè€:àáHå° :èx|ƒß Ç94rwÀƒçÐÈ7àx îÐÈ7è±z C#èþø:àx˜ã#èp:àqx¸ôÐÈ94rzÀãð<$¢z ç@ÇGÎŽshðø=ÐAxœçpÇ9àqŽœC#Dèñ zHÄ瀇;ÐAoÐÃAÇ8èqw|Ä9<äñ zœè€:>ò zœî@=Ìx|ƒèÐ:èa’¸è€Ç9àŽH$Ç9ÐAtÀÃèÐ:èñ z î8<ÐAs˜C#ß ‡;è…ðpÇ9èqxœîÐÈ7èxô8<ÐtÐC#$:4â¸ÃèÐþˆD4rtÀ9‡FÌq‰À!‡DèáyœC#çp=¾AtÀÃð :èAxÐã#è <ÐAtÐãè <ÎH˜B#¿€:4‚rÀƒ瀇;DâŽsÐã0ç Ç7D‚ŽsÐãò€Ç9àx ã#ô8ÇGèxÐðø†FÎñ‘sˆðp<èñ z|ƒßÐÈ7àAtÀðp<Ðqz¸C$ôøÆGöC‰ˆç Ç7Î!wÀ‡¡Ç7èñ zÀî ‡FÎtÀ9‡;rXhäð@<ÐAtÀ"9=ÆsÐC#ç Çþ9èqxÐèÐÈ9àx C$äÐÈ9>‚x¸î€=¾Ax ãA=Æñ‘shÄA<ÐAÃ|æ <Ή|Ä"AÇGÎáx¸è Ç84rޏðp<С‘s¸î€:CoÐè€Ç9DrxÐî€:α0z ƒç€:Ît|äôø=¾!˜ãô8=¾Ax¸ãð :àŽÃ èp<Ðñt|ô@<Ðqz ôø†FСz|Ãç <Ît˜CèÐÈ9àá’˜C"ù†FСz|C#ôø†HþÌ!thæøˆ;>rxÐC"ç8Œ;ÐtÀãôøÆ9àqœ9<Ü!zŒÃèЈD4rƒGl瀅FÐAœ9‡FÐwÀ9<ÜtÐC#ç€:àz|„qàAÎA$ÌA#ÎÎÐÐÜÐÐÐá#¾ÎàáÐÜáààáà¾Ü>âèá4â4‚Ìá#¾>âÜàã4âÃÐA$оÐÐA$ÎÎA#ÐÁÐA$ÐÎܾàÁà>ÂàèDàèáèá4ÜÁ>4èá4âèáèá4àáÐÜ$ÐÜäáààà4èÎÁ4Bþ¾ÎèÜáÌá#èáèàè$‚444à¾4â4àáèáÐá0ÐÐÜA#ÐÐèá#ÐàÁ4‚ÎÁàÜÐÎèÎáLÁ4¢ÎÆáÎáØ¾¾ÈáèáèáèÜ$4âèa?àA"àá4ÂÐÜA#èá#èD‚ÐA$ÎÜÎÁÐÎæ4‚¾A#Ðá#èa?àÁÜáàÎÐÐÐÁàÁÐоÐA#ÐÐÜþÜÎÎÐá#ÐÁèá4‚’árÜá>âàDâ4âèξÜÜA#ÎξàáèáàèáèA$¾Aàè4âààá>ÂàÎÐA$Üèáä¾èèáäÐÆÐA#ÐÜá0ÐÜÐèàáèÜξ¾ÐÐá#ÐÁãàÌ4ÂàÁàáà4‚¾è4èèÎÎè4èá4àaaà4‚4þb?>â>̾A#ÐÁààÁèa4èáäA#ÎÜA#¾á0$B$ÎÁ>44âàèaàÎA"èa?ãèáÜÆÐÐÌè4âÜA#¾¾ÆàáD‚$Ì$ÎÐÎÐÁàáÜA#$B#bà6Ü!à>‚о¾ÐÐÜàÁàaèÎá0Ðã4Âàà>baàáàA"àA"ÎA#Ìa?4âàÁÐáØàáèá>è4Âþ$bèA$ÜäáèáTÏÎÐÐ>àÁÎÎÎààá4>à¾rrÜÌD‚ÌÐàáàá4Â>>B¾ÆÐA#ÐÐÎξA$ÐÐÐA#оàã44àèÐA#ÐÎÐ$ȾA$¾ÐÐÎÌ$¾ÜáèáàèèàèáèáèÐA#ÐèáèÁ$ÎA#¾ÐÁ¾ÐA#ÐáþààáàáÃàá4èàèáÐÌ>âèA#ÐÐA# ò#Ð4âDB"ÜÐÐȾ4âàáÐA#ÎA#ÎÐÎáãDÂ>â4ÂÌA#ÎàáèÜÜáÐÌàáèáèèA"Üàá>B"Üá#оÐ$‚4âàáààÜA"DÂ4àá4èáÐàábÀÏÁ`ÎA#ÐÐÐÐÁÐáàÐÐÜÎá#ÌÈáÐáàþÌÁŽÍèáààáà¾Ðá0ÐèÜA#ÐÐÐÐA#¾A#è>âÐA#èÎ ÐÐA#ÐÎÁàáàààáèáà$̾áØèD4Â>èΡÜÎA#èá4âèá#Î>âè4âèáà4ÂÎÜÐá4àÜèDÎàèÐÐÐÁÜÎá#ÐÁèáäH‚¾ÎA#ÐÐÐáäèáèáèá#̾AþDâ4B"à4âÜA"àÎÁàèa>Â4âèàáèáäÐÐÐA#ÜA#Îá#ÌÎA$¾ÐáäÎaaàèaàáÐÁèáèáàÁÐèáèáDàa?èáààÐáèàáÜÎÐξAèèA#оÜèàáDâàèá4èàÐÎÎA#†ÐÐÐÁÐÜàèáDÂàáèÐÐÁÐÁàA"àÐA#èáÐþÜA#ÐA#ÐÈÎA>4B"4âá4"4â4àÁÐA#ÎA#ÎÎÎèàÁãèáØ¾A#ÐÌA$ÐÐáàÁ44â>ààÎá#ÐàA"ÜA$èÁÌA#ÈáD‚>4Â4â4‚ÎÜA#Ðàá>èA$ÎÎÎÈÌàÁàáàÁÐÁà¡èa4ÂоA#ÐÐáTÑá>èA$Üá#¾àá>ÂàA"ÌоàÐÐÜA#¾àþDâèÁÐÎA#ÜÐÐA$ÐÐA#ÎÐÐÐÐA#ÐÐA#ÐA#ÎDâ4Â4âèÐæà4âà$4èÐܾ4âÐáØÜèá>ÜA$èáÐÐÁ4ÂàaèèA#ÎÐÐèá0äá4ÂàÁàA"4â4‚ R#ÜàÁ4àààÁäáÐÎá#¾A#ÐÐÐA¾á#¾ÎààáÜŽ àáàÁÎÜÜHоA#þξÐÐA$ÎÎ$‚¾ÐAÎξ¾A#ÐÎà4èáÐàábàLáà!à¾áèáÜA#ÎÜA$ÐA#ÎA#ÐÐA$ÎàA"àáààÐÐaaàá4ÂDÂà̾A#ÐÌÎܾA#ÌA"4ÂààáÜ>b>âà$ÌA#Ðá0¾Á4ààÁàÐA#ö¾AàÁ>â†ÐÈA#ÎÎA#r`A#Üèàáè4àá4Âþ4àáÜA"ÌÎÜA#Üá#¾ÐáØÌÐÐÐáàáàà>âèáèàÁèA# ÜÜA#¾àÎèÎA#ÎÎA#ÌÐÁà4è$âàÁ>ÎààÁàáÜá#ÌèèÁ4‚àA"4â4àáä¾¾¾ÎоÐèáèáà>â>âàÁÐáÐÐA#Üá#$¾A#ÎÐÎá0ÎÜ$B#Üξá#ÐÎA#ÌÁDþÂàè à 4wŽÞ7yð衃‡Ž:xô¾Á;Ï@xè.ž»xî":tðÎÁ£÷M:z袃÷Þ9xçàƒwNžÀsî.êBqôÓªD‡9àqxÐô@<ÐáŽS¢£Ÿç8å9è1ŽS¢æpÇ)ÏwÀð8=ÐqJzœrª<=Æñ‘þS¢ãðpÇ)ÑAS¢­‘Ç)ÏwÀç€=Ðt¨Ò§¤Ç9àŽsЃª4=¾¡Jzœƒß :èÑOw|æp<Îx¸C•ç€Ç9àqx¸ç€=¾A¸ã”ç Ç7TIoÀä8Ç)ÍÑOtÐã§ü<ÎAtÀð8‡<èñ z|C•ç Ç7äáUºƒðh =¾tÀãôø<ÜŽSº§<Ç)Ñt¸Hð8‡;à ~ã”èpG?ÑAoœòð@<Üt£5ð@‡9N‰ŽS¢Ãôø<ÐtÀã§tPOItþ¨§¤:Üxœ§üÈ)cðHÐãÅ8‡*Ñw î@‡;Ðtœòè :àAoУEð@<ÐÑOtÐHð0<ÐqŽSÊãô8<ÐAS¢-úF?Ñáx¸èp<¾AS¢Ãª<=Îzôóôø=ÐAwÀã§<Ç)?BsÀãèP%:àAS¢ô0‡*ÑsÀôpÇ7NyŽS¢ã”耇;’\œôø=àñ zœî€Ç9NéŽS~ƒðp<Ðqx¸ã§<‡*Ño9úùSÒÃð8Ç)ÑqÊÀþãô@<ÎtÀçü=Nyx è€:àAxÐèP%:àáx ÃæPå9ÐqÊs ƒèô€§„§„ôð ððð€ð$ðð ªtª„§äª„ªäôpJç Jèîp§ô §„ôßî Jç@èpJççpJè@ð€ôpJèàðàôàð€ð€ð@çpJè Jßèç Jè@æèèpJçÐOç@ß@ð`ð€ð@îôð ô Jèèè@ðpîpJß Jèç Jîçàýô ô þß°qèôä@è@ª„ðÐððî`èß@@âðp§äôpè@ðp1° ›îP ç@ß@ßà§tðp§„ð€ðÐ"ðððà­AèÐOßôp§týDß@èî J@bô€î@èèpJçèpJôð ô€ðð ðà§„ðàðà@rJô€ôpð€ç@§D§„ôðîÐO­AßàèæèpJß Jô€ôðô€ªô ôð ôèpîP è §„ð€ç@èîpôpJßpJäþ@èàèîpJçpJçpJèpôð ôèß-îèî Jèpý„ð€ðpð@èè@äÐOè@è°qçpJæàE§„ð@ßà§„§„æôð §äèèÐç@èpJAè@îîî Jô€ý„ð@ß@çè JèpJèÐOèîîçô€ðàAqJç îèTçà瀧tôðð€ý„§týDè@ßTèÐOç@§äð€çèîîpJæ€ççþèßpôð ôð ôðª„ô€ðpð@§„ýt§tð@èÐOèæà§„çççðð`ð@ªdîô€ô€ªtôÐOèpJqJ7ð¦î ð€ð€ôçpJîpJß@èôpîð ôpðà§4ôçè@qèòpðð ð€ðpð@èèçôàèAß@ß@§tðpèèè@§ô §DèpJç Jqî^èèÐ"ªtª„ôpýtð€ô@þáè@ß@ß@îèð ôè ðð ðpýäèîèè@èpJèàð ß@çÐOîÐOîîð ô€ô JèÐOç@èè JèpJæ Jèàç€ðà§tô€ðpô€ð€§ô ô€§äôp§dèè°qß@è@è@§äðð ô JçèpJî€ð€ç Jççðôð §„§„ðàä@æ€ð`ð€ðpèä`ýtª„ªtðpð@èpJè@ß@èpJèpJç°qîîpðð ôþpðpðàèpJç1ôpª„ðpð€ð€§ô§„ð@ªtèÐOî Jôpè@ðàð€ðàç Jèè@ß@çàß JßÐOçpJ-‚§d§äðpðàð@çpJæ JèpJî€çèèçèè@ç€ôç` è°pJ-‚ôð ð@äô€ððð@ðà§t§äAß@çç ôð ôpJô€î Jã@ß@ßpJçèpJçàô€ð€ð€§DîpJç@èpþð@èèpðpªdýDßpJî@ðpªtô€ð€ð@ß@èèpJßTç€ð`§tð@èî@èô€ÉpÅîçèpJçÐOçèpJç@èîpJè Jèß Jçç@ãðªô ª„ð€ôð ôð ôð ôàýtôpJ­ô0ð€ô0ð€§dðàð€ð€îÐOôð ªô ðpð@è^„ðpô€-ôð ôð çîçpJèôð ò@Aß@èæpJèþçôð ªdð@ß@§„æpJô@ðpôð ôpJîèè@ð€ô0ð€§d§tôð ôð §„ýäýtôð ýdð€î@ð€æ@ðàôð ôð §Dß JèçpJôð ð€ðà§ô èô€äpôpð€ªô ôð ð€ðàðàªdýtôèàç@ßîèäpJçèpJèpJèTæÐ"ªtôè@äôð ôð ð€§ô§t° ôàÁ€ôpèèpJè@çàðð ôpäþ€ð@§$ß@çàð€ððª„ôàäðôpôð ðàèè@§„ðpªtèpð€ªôçîAqJî Jô€ðàðpðàè@ð€ð€ß@èß@èæ€ð€ð€ôp§„ô€ðpw§tèà§äðàô€ðà@âŹpð€ôÐOòð ð€§d§tð€ª„ªô ýDßpJôèp§dð€ôßpJèèã@è@î@ð`èpJç@çàç€ððô`èþè@çÐOç€ðð ð€ôèôð ô€î€ðàðpýôôð ð€ð€ôôpªdèè@ä€îèç JAçA@…ô€îð ôàð@îp§4ô€ä@ß@ç€ð0ððç@æ€ðàª4ô€ôð ýt§ô ôð §„ôpJèòpîôð ôàèç€ð€ôç€ð`èpJß@èè@ªtýDè Jè ß@è@ß@è@îpJèè@èè@èß@èÐOè@§dþªDß@ðpð€ôpýdèî@ä@çpJç€ðpðpèèô€ôpè@ðp@` ›pîð è°qç€ð€ç@è@ç Jæ Jèçç@ç@èpJä€ç@ðpèèpJçpJîð@…è`ôà§tª„ðpð€§„ð€ð€ýtðð§tðàð€ô€îpð@ßpJ-îpJçè@ßpJèÐìçpJççàððð@èè ðP §ôð€§Dè@ß Jè@èà§„ôð ðþ€ô€ð`ð€ª„äô€ýtè@èpJæpJî$çpJî@ßôè@èîôð §„î@èè@ßÐOôð ôçàçpJèîèpJîpòpJæ JèpJîçÑOî@ßÐ"ç­qJç@ßôèîî$ð€ððç@ð€ð€ôpô€ðpîpðpð€ôèpôp§„î@ßpJèçàAèpJß ª„ôð ôàEôð ýtô€ð€ýtî€ýDß@ð€ð€ç$þæpJè@çpJçTî@ãèpîçç@ð€ð€ô0ð€ôððð ô@ð$ªdîèÐOèpJßèôð ð€ç€Þ7xô¾ÉƒGÏ@xèÜ¡ˆÀN LÀsè2DçμsôÎÉûö‘!:xèà¡ûxî£;tÏÁ;Ç:zÐaèxÜçxÜz¾СG"†ÐaˆžoäÈtȇtè!çxÐ9t>BG¤s:‡žoÜùsà9ç£sèùæ#tèAç£sà¡xÐçxÎwàAsàqçxÜaÎH¢sàù‰>rç#tèA‡žsTr žsèA‡¡sÈaèzà9GxСçxΑG sà9‡žoè!çxèxèèxÐxΑçz¾¡tÎèz¾¡çÐqG oà‘ˆ;ètþÀãŽA<Ü!z|èp:"Üà›,àzÀôø:"xœä :à!o0ÄAÇ7èsÀã A<Üw8ß ‡;Ða•|ƒç@<È!y|ƒð ‡@¤èwÀÃè€Ç7èátÐ#)î@=àz|CŠè¢;àñ z|CŠù=àqx ã耇;Ìxœã‘=ÎñGwä¿:àx¸C ç Ç9ÈzœCŠã :àxœƒo4‡càA7:F çx#:"sÈÃèˆ;‚zHq‡Ñtþã :àñ zÀ¡Ç9ÐwÀƒç€:àáŽsäo<:àAoÐ#)ô@Ç9àq ƒRD‡@Ðzœç:àx¸ß ‡;rzœãô@=rtÀcô€:èqz Ãçø£Ýa¸ãèÈ7èx C ç:èzœC è€:àq)¢è€:äñ  CŠç:ÜÈÃè€Ç7è!zÀð@=‚Ž?¢è8=Ðq8F ç¢;¤8z ãô€Ç9‚zœô8‡@ÐzœC çGDÑAoÐþð@‡<Îáx ƒç@=àqŽ@Âç€,è1tœC"ð€Ç7 s@–ß :àxГ…Ç7äAt¸´u<ÐtÐî <Ðw@ý†<ÐÙsÈã“EÇ9 ‹s€ö=déxHd²î<ÐAoÐãð8dÝYwÐãô8<ÎAtLöò€,:àAoÀã=<ÐAxœ²ç€ì9èŽ_œ£§…ì7àÈž²è€¬;ÐáÈšŽ1détÀÃ1ðø=ÜYt@æ˜ì9 ëxГE<sÀãþ†:àA‰Àô@<ЉLöð@ÇdÍáŽÉÒð0hÑt@öðp<ÎAsÀðø=àÈšî dÑz¸ç€=Ðt@u‡càAx ãî@<ÎtÀ=ÇdÑYt@EhÑAtÀæ : {x8瀬9èñ yÀæ Ç7 ëxÐ5Ç9@ëŽÉ~²ô@=ÐáxH怇DàAoÐuÇdÝtÀæ€=¾Ax¸ç : {‘Ðð Ç7è‘Àãð8ÇdÏs€æþ€‡;ÎwÀð@ÇiÏáÈJ²7xÄ&è_H„5hÏÙsÀÃð@Ç9 ‹w˜è˜ì9DYt@ö“=d%tLöð0dÑAȺ²ç Ç9@KoÐä0<ÐAs@ÖŽð9@‹x ç dÑYw è˜,:àО²î@= KoÐð@<ÜoÐß :àQ xäç0<ÐtÐç˜,: ‹xœç@ÇdÏz¸è=ÎYsLÖð8Ç7èoÐä Ç7èYw ã“ý=Î!sð@þ<ÌY‰@ðÉ7èñ zœƒß8-:@+‘s@Ö=<ÜwÀÃð@ÇdÑÙs@vô0: ëx ß Ç9Ð1Yt¸ã§%=Ü1Y‰|ƒð8hÝ1ÙoÐߘì7èoÐã“E<ÐwÀãôp:N‹zœô@ÈBz@‡ÉBz˜,tps@‡É:z@x8ÈBz€t8x t ‡s˜,‘€,t€t€t€‡s€‡s wøz@z€‡sz@x8xpt€t€,t€‰€t€‡q t€,w€,s@xpx‡o ‡sþøz€¬s€z@Èúz8È:ÈBz8t x8‡0…M@wøx@xpÈBz8‡ÓBÈ¢‡o€¬s˜,s˜,w8x@Èúy€,t t€‡s ‡o€¬s8-t0w@‡s ‡s x@ÈúÈ:zw-t ‡o€z€w€¬¤€,t€‡s ‡o8‡É¢xp s ‡o w€t€t8­o ‡o‡ÉBw8x@x@x@‡s€,t€w€,tp‡sp‡b8‡b-s t˜¬s ‡s€t0z€w x@Ð:r€¬s@È:‡Éúx8ÈBþx t8z@x@xøz˜,t0xpxpÈBÈBÐ2w€t0x8x ‡o8x t€t€t ‡o ‡o˜,t€¬o ‡ÉúÈBzøÈ:‡Óúzpx8ÈBx@w ‡o€w€w€z@x@x@ÈBÈBxø†s ‰H z@x t ÈúÈ:x8ÈBÐ2xpx t ‡o ‡o ‡o ‡op‡s t€‡s€¬o ‡s€t€,t€t€tpx@ÈB Èrx ‡o˜,t€t ‡o€,‰˜¬spz‡É:x8x@È:þCÈrx8w€,tpÐ:È2‡Ér‡s t€w@w€‡o€,zpzøÐrx t-t8È¢t ‡o8-t€,‰€¬x„M ‡sH†spÈ:t€t-t€‡s€‡s@zøÈ¢t€¬o€,w€z0x@z€,t€t˜,w€‡s°o x@z€tpt˜,t ‡s€wz8z@x8t€,t€¬s€,z€t€z€t x8x8t€‡s€zpt€t8x8Ðúzøzp‡ÉBÈBz€t ‡s€,z€t€z8‡Érxþp‡\€‡\€¬o€wÈúz@x@zpt€‡sp‡o t­s-t€w t€z8x x ‰px@w€w€,t€¬o w t€w@È2‡É2t˜¬o ‡É:t Èr‡s˜,w@x@È2t­s€,t x@x@x ‡o Èúzøz@‡s˜¬o ‡spx@z€,t€‰pt t-w0È¢x@w˜¬s€,Ç€t xøz€yøz8x0t€t Çpt€‡q t t€z€tpxpzøz@x x@þx8Ðrs€t€¬s€zøÈrt ‡É:t€t ‡o ‡s€¬s˜,t8x@‡É’‡o ‡s€,s€t€t€t€¬s€w€¬spÈúx@z­s ‡s€w8xpt t xx@x ‡o€,t€w@x@‡ÓB z€,t€,t ‡s@z€‡sˆSØx@‡bpx@x ‡o ‡o ‡o˜,z@zz@x@x@z˜¬s€tpÈ:‰0z@x@x8z€¬o ‡o€r t t ‡s t€‡s€,t€t˜,t€t€t w€þ¬s€‡s ‡o€‰€s@r8w ‡Ér‡É:xpxpÈ¢t€s€,t€tpx@È2‡s€‰€tpxp x0t€t€‡s˜,w(t€x t-t tpÈ:x@Èrz@x@xøz€,t ‡s ‡o€t€‰€,Ç€w8È:x8x@ÈBz@x@‡s€,zø†ÉBs€zøÈ¢tp‡s€¬spr€‡s€¬s€t8-w ‡o€t˜¬o ‡q@x0ÈBx@xøy@x@Тx@x8x@ zøzp‡s t€tþ0x8‡ÉB‡s€wH z ÈBÈrÈ’z@xøyp‡É¢‡o€tpxp‡sx8w8t8x@r€‡s€r8x@w€‡q8zøÈBs8Ð2‡É:zøz ‡spt€t È:w t8­o t˜,s˜,z@zøÐ2zøÈBƒt t ‡qˆÉBÈBÐBxx@xpx@‡ÓBÐúÐrxpÇ€s€,t€,‰€¬x„S€¬\8‡ÉBzpx@x0Ç€t€w@zøz@x@x@‡Érxø†É¢w@þw0‡ÉBzøz@yøz8x z˜,w8Èúz8Ð:w€‡s@xp‡s@Èúz@z€‡s0tx@ÈBÈBx8‡ÉB‡s€,t8-r s@‡É:w€,w€‡o ‡s-r ‡o x@x@‡\€‡_È:x@x‰s­s€r@w€‡o ‡o w0t€t€t˜¬o x x@z@z8U†t€w@È’‡o€t Èúz€,t x tpÈBz€¬s€,z€yøz8x8x@x@zøzøzøzp‡s˜,w€þw€w@z-w@xxpz°q tpxp‡søz€‡o ÈúzpÐBz8‡o ‡¤€t€‡s€tpÐBxz€w€z8x8ÈrUFz˜¬s€w€t€zøz€±s€,w@x8Èrx@xÈBw8t€‡o˜,t8z@‡ÉB w˜¬o€,t ÐBxøÈ:t€t€‡¤˜,t€w€‡o xøzH x8t ‡s€‡s€w€‡o€t€¬s0x@z€¬o ‡¤px0ÈrÈBz8t x8‡°xp‡b€tþ€‡sr€zpz€‡s€w8xpt€t€t˜,s ‡É¢t€¬s€w w€t€‰€t€,z@w8xHŠs€t˜,z@ÈBsp‡É¢x@È¢‡o€,‘z@È:x8‡Óúzøx ‡o€,t-t ‡o€‡s€‡s€tpzø†ÓBÈ¢t ‡o€¬s€‡s€t€t€z@‡b€‡b˜,zøzø‘€,t€t t z@‡s t€‰€zø£t8z@‡sp‡s@‡É:Èúzøz@x8ÈBx t8Ç ‰ ‡spþt w ‡o€z@x8z€‡opt€z@‡ÓB‡spz@x@x@‡s t€¬s€,t€,‰€¬s­s€‡s@r€‡¤ ‡o€tp‡s€w€z@Èrx@z@x@‡s€,w@x t€z@È¢t€‡s˜¬o ‡o tpx@x@‡ÓrxpÈJ x xH x8È:‡ÉBzw x@x0w€,t€‡s w€‡s ‡o ‡o ‡É¢t€zøz€t€‡st€t€t€¬s€w ‡o€z@x@ s˜,z@x x@zøy€þ,t0zøzøypÈB‡É¢x8È¢‡o ‡o È2‡s­sz@Cx@zÈ’ȺGØx@a0;t ‡s€¬o x ‡s˜¬o s@xs€‰ps@x8r8t€‡o ‡o w€w€‰PkÈr xøz€‡s€,tp‡o t€t t ±xèࡃ'ﺚƒçî#=tð衃‡Î¥;xèࡃ÷M½çþà¡3§Ý9xèà¹c‹Ná7zðÐ)<§½sð胇:xèà¡#÷ñ‚z(äôø†BÐAoÐè€:èñ y|9‡BÐa—œÃð :àx|ƒß8=¾t(ð@Ç9\‚ŽÐÃð Ç7èñ x¸C!çP:ΡtÐç ÇGÎñ z ô@<¾áŽsÀƒ߀:ò z Ã%ç 9âxœã#ç‡BèqxÐãô@=Æáw¸D ‰ NqxäÂôPÈ9àqw ƒô€•;Ì¡t| !=†+zÀãî@‡;\Bx¸îþÇ9äqŽœî€:èq… C!ôø=ÐAx|ƒ耇9âÐ A=Сw|ƒß :àñ zÀð@=à—|è€:àq¶ C!è€:r¶¸怇@Üx ƒðpÇ7>ò¸C!ç Ç9àqÐô8<èñ x î8<ÜqÐÃòø=àAx ß :Bw¸ç@=>‚x˜Ã%ß ‡BÜq¶|ƒîø=ÎñVÑãð ‡;"sÀð8=àñ z˜ù<СtÀ ¡Ç9"s°åè€þ:ØrŽœç€Ç@Îñ‘s ç@=àáx ƒðø=¾átÀðø=ÜsÀÃè€:àátÀô@<ÐwÀã ¡Ç7è¡s C!qÇ9ò z ƒð@‡<¾Ax|ƒß ‡BèqŽ` î€:è¡t(ðp<Ìx C!èPÈ7èAtÀc q‡BÐAx˜ã#QÈ7àátÀãð8‡BÎsÀƒ瀇;rxÄç =¾AsÀã A=àqŽÌáÅÆ)~QŒd£ÅHF2r‘ vË솅¼“QŒ\ÃÅÈEþ2Ø=ŒbCÞ¹w.ä-oXÈ;ÅÈ…¼“Q Xü¢¿Æ/`QŒ_ ¼Á(F2`Áî`ü¢°`÷/Š y£¹F2Šñ y'#°`7,Š v£ÉØ8,Œb£É`7,Šñ‹büá¿(Æ0Øý‹ÃbãÅøE1~!ïaü"°È»sÁî`P=¿÷/Š‘ X ƒÝÁ`w2Š yÿâÉ€E1†QŒ`Ã`÷/Š yÃá¿`÷/6‹b$£¿`w.Š vcã¿€E1~AuyÂÝî.F.äý‹ÃBÞÉ@8,ä ‹Ì³ì»‡ñ XÈ;°(Æ/‹ÏáÁ(Æ/6þ‹bÀ"ó¹(Æ/Š ªÿ‚ÝÉ(Æ/’‘ XÈ;ìþE1~Q Xä‚ÝÉ€»‡Áî\#¹€Õð_ì†E1’Q X°{ÉØøÜaða°òN†êÙ ìö ì6 Å0 É ìö Åð T— °P Ã;libjibx-java-1.1.6a/docs/images/eclipse-build1.gif0000644000175000017500000210773610350117116021603 0ustar moellermoellerGIF89aÔúçÿ   (  9 $ 0 O") & a"x'&$1$+%U^ #0AV!+v3s2Y0‹"5O44315$L·6Qn*Q™-N¥eI3NQL€ByG;S¢)ZÈ€E0b­šGm³Hc$j¿-7B_ª^__/k M^9j–haNx]E?gűPJr}š]%ÂF5g`¥TlœNl³ah™bFkg”i.]zo{sMmo”rsror„^s´“]£J”D@†·D}ÞG—[Q‡œ<‰Ï`~Ëf¹Lm‰}vµxž•‚BÀo=¤zY³{,•{…„†ƒ€ˆ¹™x¨¥…EpŠ¿w—‚n•¦Æ}9¿€PÒƒžˆ…´#—‘rŽ›ŒŠÉßri§Šƒ“–…“²“ĺ‰f¸’<–˜•†§‘z³x›™É]·Ü ¢Ÿ€È1a»Î¬§o˜¢Á§¢¡l³ì©©†‚Ï&„ªèá£ÛA¥§£‰±É¤©«¬§ ˜¨Ô~´Þ±£µ”²¸©«¨Ù mæ‹ÄÂÑ©h­¯¬Ð¦ª¯ºŽ¶ë±±°«±Ç¤³ÒϵU³µ²¸º·í¾Ê»•½»¿}Õè¦Ùg½¿¼Éß³¿Ú¬Ë®»ÀŸÈôä½yÁ¿˜ÔÛÅÂÆ¿ÃÒɿҳÉÚÛÊsÂͲèÊ_äÃü¶›ÇÉÆÏÆÃ¡Ô÷×Ê¢ºØ¨ÜÏ„ËÊί×àæÑkÍÏÌÞÒ˜ØÏ¹õÎyÙÔ¹­ß÷ÏÒáÒÔÑÝÑÄßÌÝÑÖÙÈÙâ×ÙÕÝÚÂðÔ°àÛ·ÚÜØÚßâÕâãòäŽâß×àÞâÞàݹî÷íÛãçäÏåäÛöçãåâóê¨ôåÃÍïùåçäôé±ÞéõôåÓèêçëíêýñÃïñîýõ¸ùôÓå÷üøóãïôùõ÷ôôûþýûêùû÷ýüòþÿü!þCreated with The GIMP,Ôúþ?Äø`ÃFˆ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cŠüðaˆ¸›8sêÜɳ§ÏŸ@ƒ J´¨Ñ£H“*]Ê´©Ó§P£JJµªÕ«X³jÝʵ«×¯`©~QNžYyñÒª]˶­Û·pãÊK·®Ý»xóêÝË·¯ß¿€ L¸°áÈ+^̸±ãÇ#KÊ\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5þÊ\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ìþ5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5Ê\£Ì5ʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãþʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãÊþ¸†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸþ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãʸ†2®¡Œk(ãÊG1²Qj\#Ê †v³Q kì¢ÞèE/4Q!GÀ¡BÊ(†vÅQ 튣ÚG1¨‘iü£ÔG1´+ŽbhWÅЮ8Š¡]qC»â(†vÅQ 튣ÚG1¨‘iüã¶5ÄQ 튣É™†?pu@ÅЮ8Š¡]qC»â(†vÅQ 튣ÚG1´+Ž|`Ù˜†/ p#ÓøG1¨‘ oüÅЮ8Š¡]qC»â(†vÅQ 튣ÚG1´+ŽbhWÅЮþ8Š¡]qC»â(†vÅQ 튣ÚG1´+ŽbhWÅЮ8Š¡]qC»â(†vÅQ 튣ÚG1´+ŽbhWÅЮ8Š¡]qC»â(†vÅQ 튣ÚG1´+ŽbhWÅЮ8Š¡]qC»â(†vÅQ 튣ÚG1´+ŽbhWÅЮ8Š¡]qC»â(†vÅQ 튣ÚG1´+ŽbhWÅЮ8Š¡]qC»â(†vÅQ 튣ÚG1´+ŽbhWÅЮ8Š¡]qC»â(†vÅQ 튣ÚG1´+ŽbhWÅЮ8Š¡]qC»â(†vÅQ 튣ÚG1þ´+ŽbhWÅЮ8Š¡]qC»â(†vÅQ 튣ÚG1´+ŽbhWÅЮ8Š¡]qC»â(†vÅQ 튣ÚG1´+ŽbhWÅЮ8Š¡]qC»â(†vÅQ 튣ÚG1´+ŽbhWÅЮ8Š¡]qC»â(†vÅQ 튣ÚG1´+ŽbhWÅЮ8Š¡]qC»â(†vÅQ 튣ÚG1´+ŽbhWÅЮ8Š¡]qC»â(†vÅQ 튣ÚG1´+ŽbhWÅЮ8Š¡]qC»â(†vÅQ 튣ÚG1´+ŽbhWÅЮ8Š¡]qC»â(†vÅþQ 튣ÚG1´+ŽbhWÅЮ8Š¡]qC»â(†vÅQ 튣ÚG1´+ŽbhWÅ ]âP Ú%Å ]âP Ú%Å ]âP Ú%Å ]âP Ú%Å ]âP Ú%Å ]âP Ú%Å ]âP Ú%Å ]âP Ú%Å ]âP Ú%Å ]âP Ú%Å ]âP Ú%Å ]âP Ú%Å ]âP Ú%Å ]âP Ú%Å ]âP Ú%Å ]âP Ú%Å ]âP Ú%Å ]âP Ú%Å ]âP Ú%Å ]âP Ú%Å ]âP Ú%Å ]âP Ú%Å ]âP þÚ%Å ]âP Ú%Å ]âP Ú%Å ]âP Ú%Å ]âP Ú%Å ]âP Ú%Å ]âP Ú%Å ]âP Ú%Å ]âP ÚE ×  !P ÊP ÔP Ô  ×Ð âÕ ÊÐ ¨ ŽŽpœ ÅP Ê Õ¨ ÙPÊ ÊP Óð ` Ê@ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ ÊP Óð  ðÊ@ Õ¨ ÔP Ô0 þ@Äð X  ÔPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙP ÊðÛ@€zþÓð €·à»P Óð   Þð¤0€P×P ÔP Ê@ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊþ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ þÕ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨þ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÙPÊ Õ¨ ÔP Ê@ ÍÐ %  ×  ¶« ÕX ½` ½À ¼! ¨À Ž€ Êp ÊÐ Êp ÊÐ Êp Ê@ ÊP Ê0 ÿþ°¶  ù°ÿàÅ  ïÀÊp Ê0 ÿp ¶›ûðþP ×  Í  ×  Í  ×  Ä  Å  Óð` »P »° ÊP ï°v¶û0 û° Óðïÿp×  Äà û°ÿ×`»ï°Áø  ×  Í`»Óð ð¶ zÓð` »ð z Ðp Óððþ`Ä`»Ä  Å  ÍP ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  þÍ  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í þ ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×þ  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  þÍ  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í þ ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  Í  ×  ÍP ÊP¶[¹  Ä@ ¹`»¹P œÀ À‹ ©€ Ž€ ‚ Ž Ä° ¹ İ ‘O Ê@ Ê@ »Ð û@¶  Ï0° ÎРʰP ÊðàP¶° Ï0° ÎÐ »ùİ ‘O Ê@ Ê@ »0 ÿ@¶` Å` Å  ÷€jðþ`/Ð ÿ ÊðÀ ÿPH ³@ ¶  û 6ÀÅpð€° ¤Pü}?Àÿ@ ßP ʰ ¶0 ÿ°¶P ʰ ÓàÁ׿Mø¨¸d‹˜2bʔۥ,±]¹rÛe‘Ø.‹ÄvY$¶Ë"±]‰í²Hl—Eb»,Ûe‘Ø.‹ÄvY$¶Ë"±]‰í²Hl—Eb»,Ûe‘Ø.‹ÄvY$¶Ë"±]‰í²Hl—Eb»,Ûe‘Ø.‹ÄvY$¶Ë"±]‰í²Hl—Eb»,Ûe‘Ø.‹ÄvY$¶Ë"±]‰í²Hl—Eb»,Ûe‘Ø.‹ÄvY$¶Ë"±]‰íþ²Hl—Eb»,Ûe‘Ø.‹ÄvY$¶Ë"±]‰í²Hl—Eb»,Ûe‘Ø.‹ÄvY$¶Ë"±]‰í²Hl—Eb»,Ûe‘Ø.‹ÄvY$¶Ë"±]‰í²Hl—Eb»,Ûe‘Ø.‹ÄvY$¶Ë"±]‰í²ˆ˜],"f‹ˆÙÅ"bv±ˆ˜],"f‹ˆÙÅ"bv±ˆ˜],"f‹ˆÙÅ"bv±ˆ˜],"f‹ˆÙÅ"bv±ˆ˜],"f‹ˆÙÅ"bv±ˆ˜],"f‹ˆÙÅ"bv±ˆ˜],"f‹ˆÙÅ"bv±ˆ˜],"f‹ˆÙÅ"bv±ˆ˜],"f‹ˆÙÅ"bv±ˆ˜],"f‹ˆÙþÅ"bv±ˆ˜],"f‹ˆÙÅ"bv±ˆ˜],"f‹ˆÙÅ"bv±ˆ˜],"f‹ˆÙÅ"bv±ˆ˜],"f‹ˆÙÅ"bv±ˆ˜],"f‹ˆÙÅ"bv±ˆ˜],"f‹ˆÙÅ"bv±ˆ˜],"f‹ˆÙÅ"bv±ˆ˜],"f‹ˆÙÅ"bv±ˆ˜],"f‹ˆÙÅ"bv±ˆ˜],"f‹ˆÙÅ"bv±ˆ˜],"f‹ˆÙÅ"bv±ˆ˜],"f‹ˆÙÅ"bv±ˆ˜],"f‹ˆÙÅ"bv±ˆ˜],"f‹ˆÙÅ"bv±ˆ˜],"f‹ˆÙÅ"bv±ˆ˜],"f‹ˆÙÅ"bv±ˆ˜],"f‹ˆþÙÅ"bv±ˆ˜],"f‹ˆÙÅ"bv±ˆ˜],"f‹ˆÙÅ"bv±ˆ˜],"f‹ˆÙÅ"bv±ˆ˜],"f‹ˆÙÅ"bvqˆeˆÁ»[rÙe[,²¥˜^BqÄDÎä ÅϸâŒ+r±%—¾mÉ¥o[rÙ%[”áålÙ%Lvé…vѧŽNlÙG‰lÙ%’NvéÅréÛ–\ú¶%—]r±Å–^þ‰gŸö'ø}zð bdqƒ—èåxÙ§#v¡evù LXaeWþéÁ[¦™ç…bv±%[rqä}ä©f—^þ! x[”¡Å>@ }Üã èD.þˆa‹\ØÂ"¶°HðrÑ7[ä¢o¶ÈEßl‘‹¾Ù"}³E.úf‹\ô͹è›-rÑ7[ä¢o¶ÈEßl‘‹¾Ù"}³E.úf‹\ô͹è›-rÑ7[ä¢o¶ÈEßl‘‹¾Ù"}³E.úf‹\ô͹è›-rÑ7[ä¢o¶ÈEßl‘‹¾Ù"}³E.úf‹\ô͹è›-rÑ7[ä¢o¶ÈEßl‘‹¾Ù"}³E.úf‹\ô͹è›-rÑ7[ä¢o¶ÈEßl‘‹¾Ù"}³E.úf‹\ô͹è›-rÑ7[ä¢o¶ÈEßl‘‹¾Ù"}³E.úf‹\ô͹è›-rÑ7[ä¢o¶ÈEßlþ‘‹¾Ù"}³E.úf‹\ô͹è›-rÑ7[ä¢o¶ÈEßl‘‹¾Ù"}³E.úf‹\ô͹è›-rÑ7[ä¢o¶ÈEßl‘‹¾Ù"}³E.úf‹\ô͹è›-rÑ7[ä¢o¶ÈEßl‘‹¾Ù"}³E.úf‹\ô͹è›-rÑ7[ä¢o¶ÈEßl‘‹¾Ù"}³E.úf‹\ô͹è›-rÑ7[ä¢o¶ÈEßl‘‹¾Ù"}³E.úf‹\ô͹è›-rÑ7[ä¢o¶ÈEßl‘‹¾Ù"}³E.úf‹\ô͹è›-rÑ7[ä¢o¶ÈEßl‘‹¾Ù"}³E.úf‹\ô͹è›-rÑþ7[ä¢o¶ÈEßl‘‹¾Ù"}³E.úf‹\ô͹è›-rÑ7[ä¢o¶ÈEßl‘‹¾Ù"}³E.úf‹\ô͹è›-rÑ7[ä¢o¶ÈEßl‘‹¾Ù"}³E.úf‹\ô͹è›-rÑ7[ä¢o¶ÈEßl‘‹¾Ù"}³E.úf‹\ô͹è›-rÑ7[ä¢o¶ÈEßl‘‹¾Ù"}³E.úf‹\ô͹è›-rÑ7[ä¢o¶ÈEßl‘‹¾Ù"}³E.úf‹\ô͹è›-rÑ7[ä¢o¶ÈEßl‘‹¾Ù"}³E.úf‹\ô͹è›-rÑ7[ä¢o¶ÈEßl‘‹¾Ù"}³E.úf‹þ\ô͹è›-rÑ7[ä¢o¶ÈEßl‘‹¾Ù"}³E.úf‹\ô͹è›-rÑ7[ä¢o¶ÈEßl‘‹¾Ù"}³E.úf‹\ô͹è›-rÑ7[ä¢o¶°H.ü×·ØB¹(FðŠa‹Wôþs*RáT®pŰ…EŠa ‹Ã¬ðŸ-hñØb÷ØÇ>ôáØbóxÁ4ø‘:ØùÐG>öáÈ"ŰE.þñ}Tã»-öñ ôúDàÅ?@[°Â¹àÅ?À‹ €û@'vÁ‹~ x¾ÈÇ9ª± Zü#ùÈÇ>üa[첈D D° {þÐû €-^a‹]Lc Å>b†/ÄÄ)0ÁRœâ§À)1AL”ƒ˜À '^ˆ‰b☠å#f¸ Tü#§XÅ(0XŠŽb˜Å)FAOX£ðK1CLœâ3ôÄ(0qŠUŒâ˜À &N1ŠS`â«ÀÄ(N Rbƒ˜˜!&fˆ‰bbþ†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†þ˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜þ˜!&fˆ‰bb†˜˜!&fˆ‰bb†˜˜!&fˆ‰bâ•%8&0qŠmnó8&0HmLœâ§ˆ6&NîGœâ§xÄ), TìCLp@)Å6On n3Ú§x&NñˆR<âÑö„'À}ŠGœâ|Ä)q Lx"Ú8Å#F±ÍS<â¨øGÀ‰Qœâ¥8&Å#¢}ŠGDûˆö)íS<"Ú§xþD´OñˆhŸâÑ>Å#¢}ŠGDûˆö)íS<"Ú§xD´OñˆhŸâÑ>Å#¢}ŠGDûˆö)íS<"Ú§xD´OñˆhŸâÑ>Å#¢}ŠGDûˆö)íS<"Ú§xD´OñˆhŸâÑ>Å#¢}ŠGDûˆö)íS<"Ú§xD´OñˆhŸâÑ>Å#¢}ŠGDûˆö)íS<"Ú§xD´OñˆhŸâÑ>Å#¢}ŠGDûˆö)íS<"Ú§xD´Â#DÛ)ôSgýyôçПGý9ÔùÑŸCu~ôçÑŸCþ<"}¨ó¡Gý9ô¨ó¡?H?úsèÏ¡?‡þ<úsèÏ#BþüsèÑþŸG9äGþx¤³GþxäGþx¤³Cþ8äþxäG:{äCöøã‘Îùã‘Cþ8äCþÀä‘?0éì?0yäL:;äLù“Îù“GþÀ¤³CþÀä‘?0éì?0yäL:;äLù“Îù“GþÀ¤³CþÀä‘?0éì?0yäL:;äLù“Îù“GþÀ¤³CþÀä‘?0éì?0yäL:;äLù“Îù“GþÀ¤³CþÀä‘?0éì?0yäL:;äLù“Îù“GþÀ¤³CþÀä‘?0éì?0yäL:;äLù“Îþù“GþÀ¤³CþÀä‘?0éì?0yäL:;äLù“Îù“GþÀ¤³CþÀä‘?0éì?0yäL:;äLù“Îù“GþÀ¤³CþÀä‘?0éì?0yäL:;äLù“Îù“GþÀ¤³CþÀä‘?0éì?0yäL:;äLù“Îù“GþÀ¤³CþÀä‘?0éì?0yäL:;äLù“Îù“GþÀ¤³CþÀä‘?0éì?0yäL:;äLù“Îù“GþÀ¤³CþÀä‘?0éì?0yäL:;äLù“Îù“GþÀ¤³CþþÀä‘?0éì?0yäL:;äLù“Îù“GþÀ¤³CþÀä‘?0éì?0yäL:;äLù“Îù“GþÀ¤³CþÀä‘?0éì?0yäL:;äLù“Îù“GþÀ¤³CþÀä‘?0éì?0yäL:;äLù“Îù“Gþ€‰Îâ˜xÄ0Ñ™Cüø&:sˆ?`âÀDgñL<â˜èÌ!þ€‰Gü9Ä0ñˆ?`¢3‡ø&ñLtæÀÄ#þ€‰Îâ˜xÄ0Ñ™Cüø&:sˆ?`âÀDgñL<â˜èþÌ!þ€‰Gü9Ä0ñˆ?`¢3‡ø&ñLtæÀÄ#þ€‰Îâ˜xÄ0Ñ™Cüø&:sˆ?`âÀDgñL<â˜èÌ!þ€‰Gü9Ä0ñˆ?`¢3‡ø&ñLtæÀÄ#þ€‰Îâ˜xÄ0Ñ™Cüø&:sˆ?`âÀDgñL<â˜èÌ!þ€‰Gü9Ä0ñˆ?`¢3‡øÃ!þpˆ?â‡xÄ0AšCüáøÃ!Jð‡Güá8Äñ‡G¢3‡øƒ@þðˆ?â‡xÄ!ñ‡G(â8Ä#ñEtæxÄþ!ñLüáŠ8„@þðˆCtæÀÄñ‡Gâ˜øÃ#ñˆ?HÐñ‡GtæP„"ôˆ?<â˜øÃ#ñEâ‡øƒ@þpˆ?`â˜øÃ#ñLüáxÄñ‡CüáxÄñ‡ýáxÄ!þpˆ?<â‡øÃ! E¢3øÃ!þpˆGü!@‡PÄqˆG(â˜8&þ ?âPD_ÿpˆ?UyõSÿáSÿaVÿATÿATÿaþATÿATÿATÿaT;•WÿaþT;uTQ•WÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTþÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáþSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáSÿaTÿáS;õSÿáS;uTÿáSÿaþATÿáSÿ!¡3ÚàÚ¡âAú8âaÓa¹9‘9Ú!99‘ã‘þ‘ÓÁ9"999Ú!Ä‘‘ y#9•S9yÛ!Ú!Ú! ‘9‘Y•ã‘ãAT9Ú!Ú!R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9þR9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9ù”ûxÛaÓ!äAâ!’ã¡JàáÚ`ÚÁNY¹ÄaÅ!T9‘Å!Ä!Yâ¡´ãÁ⡼!YÄ!Ä!úضã!‘Å!9¼!úX⡼aûØâ‘Åa½!¼!J»´ãÁ⡽!Ú!¼!Ú!Ä!Ä!úØþâ!‘½Aâ!’Å!Ù 9’ãAâ¡âÁâ!‘Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâþ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!"Yâ!’Å!ÙâÁ⡽!ÚÁâÁ¶O9‘Å!ú¸ðà¡ þAÙÚÁþäÁ¶Å!l;¼!Ä!Ä!Ä!Ä!Ä!ÄAÄ!l;ÄaÅ!Ä!Ä!Ä!l{Å!Ä!ÄÁÅaÅÁÛ!Ä!Ä!l;l;¼!ÄaÅa½!ÄAl;ÄaÅAÄaÅ!Ä!Ä!Ä!Ä!Ä!Ä!Ä!l{½!ÄAx^lÛäAâÁâAâAâAâA¹âAâAâAâÁ¶ãA¹¼!Ä!Ä!l[x>¼!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!þÄ!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!B\yÈc}B”Ÿ8ä±>qÄCòˆG;ı>qÈcƒñð†8ä!ŽxˆCâÇû„¸>qÈC~â‡8ä!?qÈCòŸ8ä!yÈOò‡<ä'yˆCò‡<Ä!ù‰Câ‡üÄ!qÈC~â‡8ä!?qÈCòŸ8ä!yÈOò‡<ä'yˆCò‡<Ä!ù‰Câ‡üÄ!qÈC~â‡8ä!?qÈCòŸ8ä!yÈOò‡<ä'yˆCò‡<Ä!ù‰Câ‡üÄ!þqÈC~â‡8ä!?qÈCòŸ8ä!yÈOò‡<ä'yˆCò‡<Ä!ù‰Câ‡üÄ!qÈC~â‡8ä!?qÈCòŸ8ä!yÈOò‡<ä'yˆCò‡<Ä!ù‰Câ‡üÄ!qÈC~â‡8ä!?qÈCòŸ8ä!yÈOò‡<ä'yˆCò‡<Ä!ù‰Câ‡üÄ!qÈC~â‡8ä!?qÈCòŸ8ä!yÈOò‡<ä'yˆCò‡<Ä!ù‰Câ‡üÄ!qÈC~â‡8ä!?qÈCòŸ8ä!yÈOò‡<ä'yþˆCò‡<Ä!ù‰Câ‡üÄ!qÈC~â‡8ä!?qÈCòŸ8ä!yÈOò‡<ä'yˆCò‡<Ä!ù‰Câ‡üÄ!qÈC~â‡8ä!?qÈCòŸ8ä!yÈOò‡<ä'yˆCò‡<Ä!ù‰Câ‡üÄ!qÈC~â‡8ä!?qÈCòŸ8ä!yÈOò‡<ä'yˆCò‡<Ä!ù‰Câ‡üÄ!qÈC~â‡8ä!?qÈCòŸ8ä!yÈOò‡<ä'yˆCò‡<Ä!ù‰Câ‡üÄ!qȃŠï‡<¨ØŽõ‰þƒŠ%ø!ц´ÃïóF;âÑŽx¤ÈïG<¼‘Âõ‰ƒËò‡74èvlPñG<Ú±>qP1…ÞX_;ÒÑŽxˆC~éhG<ÄÑ2“9)lG: ÝŽt:âhÇúÄv¬Oñh—½Qhù‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#þíðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#þíðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑÿ‰#íðŸ8âÑþ#ñÐþ#ñÐþ#ñÐþ#ñÐþ#ñÐþ#ñÐþ#ñÐë#ˆ¶>íí°>…æ )ô>âí°>âà %ð„ðm°ñà ñà ëã ñà ñÐÞíà ñà ñà ñà ñÐþã ïÓÞ°>ÞÞÞÞÐÞ ñPhÞÞ°>Þ)ä ïÓñÐñà þëÓÞÐÞíà ñBñà ñÐâííà ñà ââ ëã ñà ñà ñà ñà ñà ñà ñBÞÞÞ…&ñÐâ°>ÞÞÐÞ…æ íà òÓñÐñà ëÓâ°>ÞíÞÞ ?íà ñà ëÓñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñàþ ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñþà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà þñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐþñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñÐñà ñà ñÐñþÐñà ñà ñÐñÐñà ï#ñ ñà ëÓÞ€hñ ñBëÓñà òSðÐÿÐñÐëã ñÐñà ëã ëã Î0ñà )ä )ä ñà ñà ïã þÓïÓñ ïÓëã ÎPñà à íà ñà ñà ëã ñ âí°>ÞâÐñÐëÓñà ëÓòSh‹æ í°>ÞÞ)´AÞ Þð>ïÐä ñà ñà ñà ñà í°>ò  0ßà ñÐñà éÐÞòà ëã ñà ñÐñà ñà ñà ñÐñà þñà ñà ñÐñà ñà ñà ñÐñà ñà ñà ñÐñà ñà ñà ñÐñà ñà ñà ñÐñà ñà Î0ñÐñà ñà ñà ñÐñà ñà ñà ñÐñà ñà ñà ñÐñà ñà ñà ñÐñà ñà ñà ñÐñà ñà ñà ñÐñà ñà ñà ñÐñà ñà ñà ñÐñà ñà ñà ñÐëã ïíà ÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíà ÞþÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞÎ0ÞÞÞíÞÞÞÎ0ÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÐÎ0ÞíÞÞÞíÞÞÞþíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞþíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíþÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞíÞÞÞ°>Þ ?í°>Þò )$?âBÞÞÞÐñà !@„ðm°)”ííð>É{¯ à Î0Dæ òà ñà ëã ñà ñÐÞÐɰ÷‘Ïïí°>Î0ñ`{à Ü ñÐñÐÞÞ ?Þà?íà # b)þ´>ÞPhïÐÞÞÞÞÞÞð>Þ ?í ñà ñà íà íà ïÓÞÐéÐÞBÉù€³í ?íà ñ`° ß@EÞ°>íà ëà "ð>í°Aí°Aí°Aí°>ÎÐñÐÎþíâ $¯Ý@m¼ lW`;‡ÜD8$ØŽb¼vÛÅs•‚À Z.Ækw±Coíâ¥ó6ÐÙ€xí.¶»Øn`²9 ˜E±Em{ÒQlw±7Û]lG0YÎPÌrØîb»‹í.¶‹·¦A¾ DAÛoÛ9t6 ÝÅvÛ]lw±]²þÞ& Ðîb;g ¶»Øîb»‹í.¶»Øîb»‹í.¶»Øîb»‹í.¶»Øîb»‹í.¶»Øîb»‹í.¶»Øîb»‹í.¶»Øîb»‹í.¶»Øîb»‹í.¶»Øîb»‹í.¶»Øîb»‹í.¶»Øîb»‹í.¶»Øîb»‹í.¶»Øîb»‹í.¶»Ø.^»xí¼ÅóÏ[¼vÞÚÅó6P\$ègð¦xþ¼‰Ç›v¼y§UoÚñ¦oډǛdðfœjpp oÚñfœwZõ¦ÓI'oâñ¦oÞiÕ›v¼iÇ›vœàCoÚñ¦x¼‰Ç›v¼y§Uo’!`œqªÁÁv¼iÇ›wZõ¦oÚñ¦x¼‰Ç›v¼y§UoÚñ¦oJ&€oj`XR!‡tÚÈ›x¼iÇ›wZõ&žoœ x¼‰Ç›v¼y§UoÚñ¦oډǛx¼iÇ›wZõ¦oÚñ&ždðæCo’À›v¼iÇ›v¼y'ghÇ›v¼i'oâñ¦oÞiÕ›v¼iÇ›vâñ&oÚñæV½iÇ›v¼i'þoâñ¦oÞiÕ›v¼iÇ›vâñ&oÚñæV½iÇ›vx£ñðF<¼Ño¼£UÞh‡7ÚávÄÃñðF;¼ñŽVy£Þh‡7ÚoÄÃíðÆ;Zåvx£ÞhG<¼o´Ãïh•7Úávx£ñðF<¼Ño¼£UÞh‡7ÚávÄÃñðF;¼ñŽVy£Þh‡7ÚoÄÃíðÆ;Zåvx£ÞhG<¼o´Ãïh•7Úávx£ñðF<¼Ño¼£UÞh‡7ÚávÄÃñðF;¼ñŽVy£Þh‡7ÚoÄÃíðÆ;Zåvx£ÞhG<¼o´Ãþïh•7Úávx£ñðF<¼Ño¼£UÞh‡7ÚávÄÃñðF;¼ñŽVy£Þh‡7ÚoÄÃíðÆ;Zåvx£ÞhG<¼o´Ãïh•7Úávx£ñðF<¼Ño¼£UÞh‡7ÚávÄÃñðF;¼ñŽVy£Þh‡7ÚoÄÃíðÆ;Zåvx£ÞhG<¼o´Ãïh•7Úávx£ñðF<¼Ño¼£UÞh‡7ÚávÄÃñðF;¼ñŽVy£Þh‡7ÚoÄÃíðÆ;ZÕŽ5Þj;âñ!yˆ#¨Þh‡7âávÄÃòF<¼Q‚Gâmþ؇P½Ôv$#Þª3g @ò0 €`#ÞˆG;¼1vÄÃñðF<ÄdÀˆ7´Q@`ˆ‡3 `D<¼vÄCòhG<¼o ÄÀ†7âqŽvˆ#Ѩ ðƒoÄÃh‡7âÁxÃPƒ0à sÔ (Â8Úa$$@?ÀF<¼vÄÃíð†8‚*Žxx#ðF<¾ÁŒàÈHHÀdðxDˆÀ7´‘‚ ˈ9j €¼@{aá mÔ@øÁ8ÄጨÁˆG:Äv5âþª3P`#ÎÀ@¸‘‚ ˈÇ>ÐqÄCpƼm¤@˜Ã⑎uŒÁ2ä°Þ00|#¨Ç@¼ToÄÃÎÀ7¼y#æ@B ƒo|H)HÀ@°Œx8cj°¼aŽ`Eø†3@Š ËðF<Ò!Žx´cÉñGP“o´Ã¿ €3  `@Ú¨ ðƒoÈȇ7Ì„@߈6j€!{aáx´#Þj:Äv $ðF<¾Á |Ãh‡8âqŒÄÃPCþ, Y5âˆG;ÝŽ¤ãŒˆ‡3°„# `„3Ðg @ !¸€–áxh£€ÀàxD£À¼ÑUT ñPâñ%РI‡8âÑŽA{CÉ€7‚šŒx#æ@B ƒoÄȇ3 X@ßH:Äv ZñFPÓ!Žx´cÐâˆ7‚šqÄ£ƒÇ@¼Ôtˆ#í´8â ¦CñhÇ Å1o5âˆG;-Žx#¨éG<Ú1hq ÄAM‡8âÑŽA‹c Þj:Äv ZñFPÓ!Žx´cÐâˆ7þ‚šqÄ£ƒÇ@¼Ôtˆ#í´8â ¦CñhÇ Å1o5âˆG;-Žx#¨éG<Ú1hq ÄAM‡8âÑŽA‹c Þj:Äv ZñFPÓ!Žx´cÐâˆ7‚šqÄ£ƒÇ@¼Ôtˆ#í´8â ¦CñhÇ Å1o5âˆG;-Žx#¨éG<Ú1hq ÄAM‡8âÑŽA‡ð† Jqˆ‡v4qoªt‡xh‡A‡ð† Jqˆqˆoˆoˆooˆo‡xøwoX²vˆqô†(<øBhƒðþ†Vˆvð†vHð†xð†vp†øg€xð†xlàoˆ‡v€Aoˆoˆ‡vˆ‡vˆoHð†ð†xh‡xo¨€xp†hgo˜Ãxðl‡x0‡LÀ|‡xoˆ† àqp†op†ˆg"ð†th‡xl8‡Gˆq¸ø†pÀ!ð†xð†xh‡9lLˆo*p€¸ø†sÀˆgqˆoà_ˆsÀˆ‡qhø†sà„xp†oh‡xoˆ† ðxp0‚vð‡xð†xþð†øoH†H‡ ðoHð†xˆ_ˆmÀn €eˆoPp†ˆxo0€thmð…x0ø€xp†ð†xð†xhÀsÀ ˆoˆo€Ávoh4‡?À†vˆvhÀ†pÀ ˆqà_ˆsÀðg#hŸiÀ†p8…xp`l*¨;‡xð†xðô†vHð†v0*Pg#ð†sð†xoˆ† àvp†øxl0‡oˆ‡xoh‡Ghg(€vˆoqˆ‡voh‡þxð†d€xð†p ˆgt†ˆg#ð†vXˆoh‡xð†xð†xoˆoP ˆ‡A8_¨€xp†Xg€xp†0ox‡5¨€xð†xo0‡ €xh‡xoІ àqàø†vh€Ð…vÈFˆoh‡xð†xð†vˆ‡oHx‡xð†vHð†xhÀ†p¸hg€xp† ‚xH‡àAqˆoˆo€Ávoh‡xð†xðl‡ð†v€Aqˆoˆo€Ávoh‡xð†xðl‡ð†v€þAqˆoˆo€Ávoh‡xð†xðl‡ð†v€Aqˆoˆo€Ávoh‡xð†xðl‡ð†v€Aqˆoˆo€Ávoh‡xð†xðl‡ð†v€Aqˆoˆo€Ávoh‡xð†xðl‡ð†v€Aqˆoˆo€Ávoh‡xð†xðl‡ð†v€Aqˆoˆo€Ávoh‡xð†xðl‡ð†v€Aqˆoˆo€Ávoh‡xð†xðl‡ð†v€Aqˆoˆo€Ávoh‡xð†xþðl‡ð†v€Aqˆoˆo€Ávoh‡xð†xðl‡ð†v€Aqˆoˆo€Ávoh‡xð†xðl‡ð†v€Aqˆoˆo€Ávoh‡xð†xðl‡ð†v°Ãxh‡xh‡h”oh•xh‡xh‡xð†v˜Cohoh‡ð†x„?x„6ø‡x‡xð†Ád@ˆg€xp†ˆm]Hqøhqˆo˜Ãvˆ‡Vˆd€€Z`m]‡oP…hg€xp†øoohohoˆvð†x‡þxð†c8‚  ˜…pà†X†Phg€tˆ‡vp†hg€oˆ‡vàÐ…9ÔÐùoˆoo‡xh‡wð†H†ˆ€ XoÐÐo‡dP€xp†€A‰‡qøˆn€eHt†ð†ˆX†xhUP€opø†vˆ‡vð†h‡xh‡xð†xh‡wˆ‡vpð\]ph‡xHo‡xøð†vh0Hn€ep†ðm€eˆoP…ˆtqˆ‡_0€vp†ðyˆm€eðqøH‡vˆoˆþoˆo˜Cohoh‡c8‚ ˜o0‡Ð…t‡_P€ð†xð†vøg€on€eˆqg€oH‡pH†ð†xð†h‡xh‡xð†xðL@ Øg€om€eUP€vp†ˆ‡h ]ð†vøðm]ðygo€Ávˆo€Ávð†h‡H†ˆ€ Xop†ð†p†ˆg€o‡wp†ˆvð†h‡xh‡xh‡h‡xH‡J €xPDø†< €xp†ˆg€ohop†ˆm€eyþP…ˆ‡h]U0€wˆ‡ `g €&ès€e‡ð†h‡xh‡9ô†dˆ8F€øs]ˆoHˆg€xpX†s‡_P€xhoˆvˆ‡vˆoˆoˆo€Ávð†h‡xh‡xð†xð†xðloˆvˆ‡vˆoˆoˆo€Ávð†h‡xh‡xð†xð†xðloˆvˆ‡vˆoˆoˆo€Ávð†h‡xh‡xð†xð†xðloˆvˆ‡vˆoˆoˆo€Ávð†h‡xh‡xð†xð†xðloˆvˆ‡vˆoˆþoˆo€Ávð†h‡xh‡xð†xð†xðloˆvˆ‡vˆoˆoˆo€Ávð†h‡xh‡xð†xð†xðloˆvˆ‡vˆoˆoˆo€Ávð†h‡xh‡xð†xð†xðloˆvˆ‡vˆoˆoˆo€Ávð†h‡xh‡xð†xð†xðloˆvˆ‡vˆoˆoˆo€Ávð†h‡xh‡xð†xð†xðloˆvˆ‡vˆoˆoˆo€Ávð†h‡xh‡xð†xð†xðloˆvˆ‡vˆoˆoˆo€Ávð†h‡xh‡xð†xðþ†xðloˆvˆ‡vˆoˆoˆo€Ávð†h‡xh‡xð†xð†xðloˆvˆ‡vˆoˆoˆo€Ávð†h‡xh‡xð†xð†xðloˆoh5÷†xð5÷†vˆ‡vˆqˆ‡vðqˆ‡vð†xààxð†v˜C5ˆøBøƒ6؇vqqˆoh‡d€k¸e˜g(€vp†hg u €€xoˆoˆoh‡wˆqPóxð†djPjh†op€Ag€vp†Hg€9l”qˆ‡vˆ‡vˆo‡t¨p€xpþø†xð†d€vp†ˆ‡txg(€xp†ˆohg€vˆqð†vp†u €€vˆvˆoh‡toH†hjˆ„ƒxp† ÷hgoRöŠ€ðg€oˆthg€ðg€tPód€xp†ð†vˆqˆox5‡vˆoh‡x‡vHh‡thH‡x …¨øˆqP‡A¨yp8g €xhyp†‡x…¨øˆg€hgz/€h‡xh‡xh‡ð†xð|‡xoxp€xpõþ€oˆRŠ€vp†ð†vðg€tð†x‡vp†h‡xxg€xh‡xð†wPóxh‡xh‡ð†vH¨tqˆ‡tp†h‡xh‡d€oPó_€vp†gQˆ‡d€xqˆ‡op†ˆvð†xð†ð†x‡ð5o‡d€f †Hh€0ˆg€xh‡tà†hg€xPsgoˆqˆox5ox‡vˆ‡vH‡qp€ð­Á2o*©HÒÎÙ€oÎÄk×ÎÙ€vÎÄ‹'ÏÙ€vÎÄ/™€xÞzY„ÙU2¶óÏÛ;‰íþây‹'.^2Í”]ËÖÀ»d, Á›³ßœ—1Ù€xâây{'1^»xíâµËè-ž¸xÞÞIŒ×.^»xí2z‹'.ž·w㵋×.^»ŒÞ≋çíÄxíⵋ×.£·xâây{'1^»xíâµËè-ž¸xÞÞIŒ×.^»xí2z‹'.ž·w㵋×.^»ŒÞ≋çíÄxíⵋ×.£·xâây{'1^»xíâµËè-ž¸xÞÞIŒ×.^»xí2z‹'.ž·w㵋×.^»ŒÞ≋çíÄxíⵋ×.£·xââyóŽDñ´O;ñ´“‘7ñˆ7ïHO;ñ´Oþ;y8ñxóŽDñ´O;ñ´“‘7ñˆ7ïHO;ñ´O;y8ñxóŽDñ´O;ñ´“‘7ñˆ7ïHO;ñ´O;y8ñxóŽDñ´O;ñ´“‘7ñˆ7ïHO;ñ´O;y8ñxóŽDñ´O;ñ´“‘7ñˆ7ïHO;ñ´O;y8ñxóŽDñ´O;ñ´“‘7ñˆ7ïHO;ñ´O;y8ñxóŽDñ´O;ñ´“‘7ñˆ7ïHO;ñ´O;y8ñx#8ÅÓ²y³¬8ñÈãͲñ´O;ñx7ÅãM <òþGû +N<í › Þ´“N<Î 3ÄÃËxÓN:Þ,ëMFéx8ñx“Q2x#N<ÞÄ£ ËdôËí83@;Î àM;ÞÄÓŽ7ñx7ÈŠ8˦ó 3ŒÃ Ëd¤Šï@:éÄ“LÞ83@FéhCÀ2Ër#À2Þ´“Ž76-+QFíx“Q2x#N<¢ð 7,ãM;È:3€7ñhÀ%ÞÄ“ŒñhCÀ2鈓‘3 ËMˈ* ´ãÌñxƒl:âÄã ²â ÛŽ3d䌆ÐŽ9\â7É 7ð K‰xãÌñhCÀ2ñ´ó‹Þ¬þ#À%ß´“Ìñ83€7ñ´ÃMË´ã<íx7ñ´#N<ÞÄã<íxO:âdÔŽ7Ì07,#Ž<ñ¤ã9\òM<É 3dÔŽ6,³¬3x7Î NFéˆ7ñHäͲÉÀríˆG:œ1odDXF;â¡ ¼Ãˆ7°ŒvdÄñІ–±,g ÀËj‡7âá yÄÑH;’oˆ#¢(À2¸oÄ#É(@;œ1qÄÃ΀7ä‘‘tˆ#ÞˆG;âáxˆ#é á€qx£>h#¼áŒÄÃ@–3m`ùÅþâÁ è"#ªPÀ9â¡ ¨€Ú0€€àv +∇8¦dàéG<’A€ohCËHG¼!‘Œ°ÐÉ€7Úo8cßp†â!ްé¨'Úáv ˆŒG;’€o¤Ãã¸Y ˆÐŽqÜ`ípÆâÁ ,##ÞÈH;âáxxC"Èú†3²à oThGðÆ X€tTƒíp†âá n`ñ8Žv´€ß8'Ò¡ ,ãfñ0Á ¾ñŒ ð@΀72ÒCz##鈇7Ú‘ ´ÃßHCÐn`ñ8à ‰ôÀF;œ1€xx£,ø†6L0€xpËG;p0€xhƒËhG<ÚÑ`#ÕàD<Úwd¤c>7²` o<ð†ÄC;¼ƒ7ˆC<´CF$x²8Ãă3 @F˜<€@À¤CK–0)Æd bK˜c²´þØ&K˜cz¬Ø&K˜Y„x1bO˜,aò„ÉÒbL--¶ôz±¥×–[RŒ¸¶%L–0YRl ÓcÅ–Ƕôú1&O˜þ±ìãûøG?n¼ïãûøÇ>þ±ôãÆû¸ñ>þ±ìãûøG?n¼ïãûøÇ>þ±ôãÆû¸ñ>þ±ìãûøG?n¼ïãÆÿØÇ>þ±ô£ÿÐó÷çèÏûøÇ>þ±<ïƒÅûø‡ž÷ñ}ücÿØG QŒ?´A i‡7âvÄ£ñH‡8âÑo4$Þˆ‡7âávˆ#Þ``<¼Á@o0Ði‡8âÑo4DñðF<¼¡q ¤!ÞˆG:ÂÑv¤£ i‡7âÑz#áhH;âþ! $íˆG;¼ÑŽxx#íðBâqÄÃñÛvhD ñF<¼ÑŽp´£!âhˆ8tÝŽx¤C#é@ˆ8âÑoÄÃ툇8â!Žx´ÃñF<ÄÑ„hć<âáx´Ãí½vÄÃñðF<Úá qÄÃñðF;tÝvÄ£ºn‡8äÑŽxx#ñF;4↴#ÞˆBÄq4¤ñðF<¼!Žxx#âˆG;Rjo4¤ÞG;¼¡‘R·Ã i‡®½ÑoÄÃâˆG;ÒqÄÃñð†F¼Ñ¢‹#íhˆ7âÑoÄ£ÔÞЈ7âáþ ˆ£!툇7â!Žx´#Þˆ‡8â!Žxx#íhˆ7âÑoÄÃñð†8rºp4ätâG<Äo4$ i‡7âá Äñ@H:‚qÄÃñ@ˆ7âá ]‡£!íЈ7âqÈ#íð†FÒÑoh¤鈇ݽ¡‘vx#ÞЈ8ävÄÃîÞÀ@íÞ@tíÀ@íÐÞ ÞíÐÞÞÐñ  Ôñ€ á ñà íâÀ@íÑÞÞÐñ  Ôñ€ á ñà íâÀ@íÑÞÞÐñ  Ôñ€ á ñà íþâÀ@íÑÞÞÐñ  Ôñ€ á ñà íâÀ@íÑÞÞÐñ  Ôñ€ á ñà íâÀ@íÑÞÞÐñ  Ôñ€ á ñà íâÀ@íÑÞÞÐñ  Ôñ€ á ñà íâÀ@íÑÞÞÐñ  Ôñ€ á ñà íâÀ@íÑÞÞÐñ  Ôñ€ á ñà íâÀ@íÑÞÞÐñ ñ@“¶ò ñà ñà ñÐñ ñ|ñÐÞÐÞÞÞþíâÁíà íà ñà ñà ñÐñ ñ|ñÐÞÐÞÞÞíâÁíà íà ñà ñà ñÐñ ñ|ñÐÞÐÞÞÞíâÁíà íà ñ|âÐí ñ  !á ñ€ÞÐÞPjÞÐâí ñ ñ|ñ ñà !ñPj „%€ Êðmíà á íâà ñà ! !ñ â@tñà í ñà á ñà á ñà ñà ñ ºÖ Ôñà í  !ñà ñà !ñ íþÞò|ÞÐÁâÐÞíâÞÐñà ñà ÑñÐ Ññà á ò  á ñà íâÞ í ïÐÞÐÞÐñÐñà ñà íñ€ÞÐâÐâí ò ñà á ñà ä íÞí âà ºæ $éÐâÞÞ ÞÞÐò ñÐñÐñà ñ ÞÞÐñ á ñà Qjñ ñ ò éâÐÞíÐâò  á ñÐD×ñÐñ éâ ÞÀ—âPjñ Á×ñà þñ| ! „ñà Ô !éíÞÐÞâ âÐñà ñà !ñ  á ñà Qj á ñÐñÐñà ñà ò D‡âÞò ºæ $!â âââñ ò  á éâÞÐ!âÀ@âÀ@ÞÞÐâÞâà ñà !  ÞâÞÞ€éÐñ á ñ ò ñ ÑÞâÐñ ñ ââà ñà ñ íà ñà ñ éâà ‘á á !ñà ñк–þñà ñà ñ ñà ñк–ñà ñà ñ ñà ñк–ñà ñà ñ ñà ñк–ñà ñà ñ ñà ñк–ñà ñà ñ ñà ñк–ñà ñà ñ ñà ñк–ñà ñà ñ ñà ñк–ñà ñà ñ ñà ñк–ñà ñà ñ ñà ñк–ñà ñà ñ ñà ñк–ñà ñà ñ ñà ñк–ñà ñà ñ ñà ñк–ñà ñà ñ ñà ñк–ñà ñà ñ ñà ñк–ñþà ñà ñ ñà ñк–ñà ñà ñ ñà ñк–ñà ñà ñ ñà ñк–ñà ñà ñ ñà ñÐ $ÿ íò Ññà ñÐò  á ñ â íÞí âÐÞò Ññà ñÐò  á ñ â íÞí âÐÞò Ññà ñÐò  á ñ â íÞí âÐÞò  ! á íÐíÐÞ ÞÞÀ@ò íò ñà ÑD×ñÐ awñà ñà –P þÐíÞÐâ kÞÞÐÞÑÞÞÐÞÐâ Þíà ñÐñÐ á òÐíÐíà íà âÞÐÞ â í@tíà $ á !ò kíà ñà âÐíÐÞíÞÞÞ ñà ñà ñà D×ñà ò  Ññà ñà ñÐÞíà á á ñà ñà á ñÐñà Ñ ä íà ä Ñá ! á ñÐ ÞÐ á ñà |Ití kÞÞÞÀ@â â Þ íà âíÀ—ÞíÐþÞÞ kíà ñà ñÐÞÐÞíà ñà ÑñPjñÐñà íà íà ñ ñ ñÐá ñà òÐíÐÞ! ÑÞPjÞÐ ÑâÐâ  $ ä !òÐ Ñ á ñPjÞÐÞÞ â  ÔÞÞâ  á á ñÐÞÞÞ âÀ—ÞÐípÍ!ñ  ä ñà ñ€ÞÐé kíÀ@íà âÞí kÞ âÐí ò€Þí@tâÞíâÐíÐíÐâ  !òà ñà á þ!ñ ñ òÐÞÐñÐ Ñá íà ñà ñà ñÐñ ñÐá íà ñà ñà ñÐñ ñÐá íà ñà ñà ñÐñ ñÐá íà ñà ñà ñÐñ ñÐá íà ñà ñà ñÐñ ñÐá íà ñà ñà ñÐñ ñÐá íà ñà ñà ñÐñ ñÐá íà ñà ñà ñÐñ ñÐá íà ñà ñà ñÐñ ñÐá íà ñà ñà ñÐñ ñÐá íà ñà ñà ñÐñ ñÐá þíà ñà ñà ñÐñ ñÐá íà ñà ñà ñÐñ ñÐá íà ñà ñà ñÐñ ñÐá íà ñà ñà ñÐñ ñÐá íà ñà ñà ñÐñ ñÐá íà ñà ñà ñÐñ ñÐá íà ñà ñà ñÐñ ñÐá íà ò gùÞÀ@éÐ á ñÐ ä ”íÐÞíÀ@ÞÀ@éÐ á ñÐ ä ”íÐÞíÀ@ÞÀ@éÐ á ñÐ ä ”íÐÞíÀ@Þ âÑÞíà Ñþñà á á !ñÐá ñ€ÞÞPjéÐÞ€ââÀ@âíP  ÐñкÖñà ñ ÞÐÞÐÞíÀÕ!ñ ÞÐ á ñ íà $ÞÀ@ÞÐíÞÐÞÐéâÞÞÐÞ€ñà ¥â kÞÐñà ºÖ!Þí ÞÐÞ !í íà á ñà ‘ á í ÞíÀ@íà !ívç ñà Qjá ÞÞÐÑâñ ñ âà íííâà ñþà ñà §ÓéâÞñà ñÐÑñÐá º&ñ âÞÞÞÐ ä íííà íà ºæ á ñÐ Ñ á ñà ¥âà ò  $âÐâÐñÐñ ñà ñÐñ ñà ñ ò ñ  á íÐÞÐá íÐíí kíÞâá-^0Q‘x#ÞˆG;"q´Ãíˆ7â!oÄÃñF;Òƒˆ#Þh‡AÄ¡qÄÈ7"q ¤ óF<¼oФÿø‡"Ú‘…ˆ#âðF;âÑŽxÈCñF;â!Žxx%íðF;âávxà 툇7âáxx#ÞhÇ@Ä¡°vÄ£ñ‡8âáx£ñJÚvÄÃñðF<¼‘;o´Ã ÞhGZ1oTÄñðFEâ!Žþ´#툇7*oÄÃ툇8äá ƒ´c ∇7"Žx£Þˆ‡7 ÒŽx¤£iG<¼¡´ZÂ鈇7âÑŽxx#â0H;âávÄÃ!J<¼oÐÄ©H<¼o ¤ iÇ@Ú1qx£Þh‡7Úo´ÃñG;â!ƒˆ#ÞhG<¼v(ÄñðF;âvÄCñð†A¼ÑŽx#ÞhG<ÄvÄ£òð†AÚv(D⨈ÂÒQ‘xx£"Þˆ‡8h’ŽŠÄÃñF<ÄA“tT$Þ¨ˆ7â!š¤£"ñðFE¼qÐ$‰‡7*âxˆþƒ&é¨H<¼QoÄC4IGEâáŠx#â I:*oTÄñMÒQ‘xx£"Þˆ‡8h’ŽŠÄÃñF<ÄA“tT$Þ¨ˆ7â!š¤£"ñðFE¼qÐ$‰‡7*âxˆƒ&é¨H<¼QoÄC4IGEâáŠx#â I:*oTÄñMÒQ‘xx£"Þˆ‡8h’ŽŠÄÃñF<ÄA“tÈcòˆ8âxx£ñðF;¼o Äñ‡A¼ÑŽxx£Þˆ‡7âxˆÃ ÞhG<¼ÑoÄÃñF<Äao´#Þh‡7âáx#â0ˆ7Úo´ÃþñðÆ@¼qÄ툇7Úáxxà â0ˆ7Úq DÞˆ‡7R…ˆÃñG<*qDñðF<¼vÄ£ñGE¼oÄÃñðF:Úáv ¤˜(ÆÚ ƒü#ŠG<Äaq Äíˆ7âáx´#íðF<Ä!x£"ñ†A¼qÄ£"ïPH;¼oÄÇ<Ä!oÄ£Þˆ‡7Úáx¤#ÞˆG;âá yÄ£ ñF;¼v(DñðF<¼qÄ£ïH‡vø‡tÀohoˆ‡v0o¨ˆxyƒðyˆ‡vˆoqˆ‡vðþ†xh‡x¨ƒ‡xðƒð”‡xð†ð†Šˆthoˆoˆoˆ‡Šˆo‡vˆoˆ‡vð†­ø‡xÀqhoˆoˆq‡x‡xh‡th‡ð†”hoh‡th‡ðƒð†xð†xð”ð†x‡xð†xh‡xð†xð†vð¢‡xhƒhƒh‡xh‡wð†vð†xð†xhƒh‡xð†vð†vð†ð†‡xHoˆqˆ‡HEPoqˆoˆ¢ðƒ‡xðƒ”ð†xhoˆvˆoˆo0ˆv@‰vð†Šð†x¨oˆ‡vð†xhoˆoþˆ‡ðKˆoÈoˆo@ oˆ‡v‡xh‡xh‡xð†x¨ooˆ‡Šð†xð†xð†ho‡xð†xðqˆo‡xhšyP˜Šðšh‡xhoˆoˆoˆqPˆvˆ‡vˆoˆ‡vooq‡ Šð†xhoˆoho¨ƒð†Šð†xð†xð†x¨oq‡v0ˆvð†xð†x¨oq‡v0ˆvð†xð†x¨oq‡v0ˆvð†xð†x¨oq‡v0ˆvð†xð†x¨oq‡v0ˆvð†xð†x¨oq‡v0ˆvð†þxð†x¨oq‡v0ˆvð†xð†x¨oq‡v0ˆvð†xð†x¨oq‡v0ˆvð†xð†x¨oq‡v0ˆvð†xð†x¨oq‡v0ˆvð†xð†x¨oq‡v0ˆvð†xð†x¨oq‡v0ˆvð†xð†x¨oq‡v0ˆvð†xð†x¨oq‡v0ˆvð†xð†x¨oq‡v0ˆvð†xð†x¨oq‡v0ˆvð†xð†x¨oq‡v0ˆvð†xð†|؇qoh‡th‡xh‡h‡xyh‡xh‡y þŠh‡xyh‡xh‡y Šh‡xyh‡xh‡y Šh‡xyh‡xh‡y Šh‡xyh‡xh‡y Šh‡xyh‡xho0ˆŠˆq‡¶ho‡x‡xð†vPˆvˆ‡vð†x¨o0ˆv0oˆoq‡v0ˆvq‡ð†x(GP†?hƒð†K0o0ˆŠð†xðy‡xð†xð†xð†v0ˆvoh‡‡vH‡xð†xðƒð†x‡pˆoh‡x‡xh‡xð†xhšð†h”h‡‡h‡xh‡xð†xð…þ‡xðƒðyðƒh‡x‡Šø‡tP…¨ˆxð†‡vPohƒ‡vPo0qð†x‡vð…h‡xð†xhoH‡qˆvqh‡xðƒhyð†x¨ˆxh‡‡vˆ‡vˆy‡x‡vøoPy‡xh‡¶‡x‡xh”ð†vˆoˆvˆ‡vˆooˆvˆ‡vo¨…hƒð†xð…‡ð¢x‡Šð†xo¨y‡xh‡xð†vˆoh…ñ…ð…h‡ðLð†vð†v ‰vˆqoˆy‡h‡ð†xð†xð†‡ð†þoˆ‡vˆoh‡xð†xð…‡ƒ‡xqoˆˆEh‡ð†vð†xð†vˆoˆ‡vˆvð†xð†‡wh‡xð†xh‡xh…h‡xð†x”ho0ˆvˆ‡vPyð†ŠˆoˆoˆvˆoˆoˆoˆoPˆvˆoˆoh‡xyð”hoˆoh‡x‡ð†vˆoˆoh‡h‡xh‡xð†x‡vˆoqˆ‡vPqð†xðy‡ð†xð†xð…h‡xh‡xð†vð†ð†xð…h‡xh‡xð†vð†ð†xð…h‡xh‡xðþ†vð†ð†xð…h‡xh‡xð†vð†ð†xð…h‡xh‡xð†vð†ð†xð…h‡xh‡xð†vð†ð†xð…h‡xh‡xð†vð†ð†xð…h‡xh‡xð†vð†ð†xð…h‡xh‡xð†vð†ð†xð…h‡xh‡xð†vð†ð†xð…h‡xh‡xð†vð†ð†xð…h‡xh‡xð†vð†ð†xð…h‡xh‡xð†vð†ð†xð…h‡xh‡xð†vð†ð†xð…h‡xh‡xð†vð†ð†xð…h‡xh‡xð†vð†ð†xð…h‡xh‡xð†vþð†ð†xð…h‡xh‡xð†vð†ðyøy0qhy‡ð†vˆoPqð†xð†ØŠxð…oˆoˆ­ˆoPqð†xð†ØŠxð…oˆoˆ­ˆoPqð†xð†ØŠxð…‡voˆoh‡qð†vð†vˆoˆqPˆvqh‡x‡wh‡x‡hƒð†xohoˆ‡vPˆŠˆoˆq0ˆŠð†xð†À„bøƒ6ð†vˆˆLð†ð†xhqˆvÈqˆoˆ‡vðƒ¨”h‡ð”h‡xšhqˆ¢ð†ð†þx¨oˆ‡tð†xð† oˆoˆ‡voˆoˆ‡vˆoh oˆoqˆ‡}HEð†xðqˆoˆ‡vPˆvð†vˆvðƒhoh‡ð†xðy@‰Šð†xh‡wˆ‡v0oˆ‡voƒh‡xð†vðqˆv‡xð†xðƒhqˆ‡vˆqqˆ‡ˆK0ˆŠð†x¨o0ˆvˆ‡tð†vðƒh‡xð†xho‡h‡ð†x¨qˆ‡v0oˆ¢ð†ŠPoˆ‡v ‰vˆqo‡'ò†ð†Šð†xð†xð†xhoh‡h‡xh‡t¨ˆHEhþƒð†xð†xð†xh‡ð†xðƒð†xð†ðyˆv0ˆvˆo¨ˆxh‡xð†ð†xh‡xð†xðƒy¨o ‰v‡xø‡xÀ„thƒH‡ðƒð†vyh‡x¨ƒð†xð†xð†xð†vð†Šq‡x¨oˆq‡vˆvðƒð†xh‡x‡xh‡xh‡x oˆoˆoˆooˆohqooP¢ðqooˆ‡v0oPˆvðqˆ‡vð…h‡xho0ˆwð†xhšhšð†xHoˆoˆo0oPoˆ‡tð†xð†xðƒþð…ð†xHoˆoˆo0oPoˆ‡tð†xð†xðƒð…ð†xHoˆoˆo0oPoˆ‡tð†xð†xðƒð…ð†xHoˆoˆo0oPoˆ‡tð†xð†xðƒð…ð†xHoˆoˆo0oPoˆ‡tð†xð†xðƒð…ð†xHoˆoˆo0oPoˆ‡tð†xð†xðƒð…ð†xHoˆoˆo0oPoˆ‡tð†xð†xðƒð…ð†xHoˆoˆo0oPoˆ‡tð†xð†xðƒð…ð†xHoˆoˆo0oPoˆ‡þtð†xð†xðƒðƒ‡}ˆq@‰Šoˆoho@ oˆ‡­ð†xð†vð”ð†xØ oˆoho@ oˆ‡­ð†xð†vð”ð†xØ oˆoho@ oˆ‡­ð†xð†vðƒð†h‡x‡xðƒyh oˆqh ooˆoˆ‡v ‰v‡xð†vð†xho0ˆvð¢PˆPeøƒ6ˆ‡vˆoøoP„x¨”ð†ŠH‡xð†xð†Šˆvqˆoˆoˆqð†xð†vð†vˆoˆoˆoh…h‡xð†vð†vˆxñ¼Å'0^»xíÚ¯þ@o ¶(.ž7yÞâ½;ØÎ[HBz¦ç‚<ˆƒ7ă7„8Dt<ˆ­zþC4ÃB„<ˆC;„7´ƒ@ˆ°¶ƒ@xCÈCè‹@ê‡é‹@ê‡òƒ¾”@”@€¾Œ¾þ~”€Dô‹€ê‹@ „@ „€ê‡Àè‡@ê‹Àè‹@ ˆ@ꇀê‡@ôû~ ˆ@ô‡ø‡èÿ?@”(Іˆ"†¸a!Š‚aÅ"†(B ‹ E|±0ÄÀ%BT 1PD C !b ˆEÜÔY1DÅ%B”!B ‹!J„(B„@C”Q"„",†(¢DEX Q"D‰"а¢Dˆ!Da1D‰%Bˆ(Âbˆ!J„!P„Å%B”!B ‹!J„(B„@C”Q"„",†(¢DEX Q"D‰"þа¢Dˆ!Da1D‰%Bˆ(Âbˆ!J„!P„Å%B”!B ‹!J„(B„@;†±Ð† qñÚÅóÖ.^ûxí¼Åk÷.^»xíâµkdÓ-ÿÆØÉc{æ±gž<¼q/žv¼‰§wâi'žvâyá^àÁ! ÂC/¼‰§x¼q%Ð@‹xT ¡xÚ‰G›q& Úó&™Üó&žd€P˜¥oÚó&oâi§=oÚó&oâñFÁ+Û'žvÞñ&žvÚkÇ›x¼Q0öJÀD™?ÚH§=oö G‘vâñ&oÚñ&oÄ邈1ˆè¢‹þT|™f<ÐÉã oډǛx¼i'qÚi'oâ§oÚ‹§ö¼‰§™xÚQ&yĉGq⡦½fÄ©´Roâ§ÓvÚÇ›x¼É&e®QÆ–bâé¦xlGYqÂYÖÙgçYo¨­Ö›v ]6œeãÉÚr õÆÛgÓ'žgÓY6œgÓWœx¼ÇZqÒñ¶hÓY6eËY6gÃqwÙtœmGœpı6—MgÙxÄ ‡ál½iÇÙxÄ)Gœx&öÖeËY6eÓñ¦ãlã99hãQ6Ã9ùäxÄIÇÝx–MGàtdîYÙxÄIGÙxÜGœt”ÇÝxÄIGþÙxÜGœt”ÇÝxÄIGÙxÜGœt”ÇÝxÄIGÙxÜGœt”ÇÝxÄIGÙxÜGœt”ÇÝxÄIGÙxÜGœt”ÇÝxÄIGÙxÜGœt”ÇÝxÄIGÙxÜGœt”ÇÝxÄIGÙxÜGœv” çäp µ¡=qä'oÚ‰GœöÄ 'q¼‰Gœv⇠_(â‡@nÉ#uòXÛö¼i'qÚ'œxÄñ¦½8ØaçFºgçžîãˆÇ›vÄç0®1'>¾QÅ€oâ§A'H¤=gàv´ÇÉ€7ÆQ 8 SÞˆG;Ú#o´£=Þˆ‡þ7âáx´ÃíðF<¼w´£=ÞhG§Úo´§ñðF<¼ÑŽöx#–(ÆÚ Žv´gñPD;:ÄxˆCì¸;î¾}ìc ÌXÃ/Äáx´#âèÔ;Ä!DoÄÃñðF{¼!b´G툇7:åk´C×h‡8âÑŽxˆC•ò†8âá yÄCͰÅ5âÑŽöÈê¯A>â!E.’‘ñ`$#ãñHF Qô¤<â!zÄã’ôG<$yÄCôXd>$IF¶GñPd<EÆc‘ñ¸ä"ã±Èö(2‹ì”"ã±È|(2‹l"ó¡ÈxÜR‘í‘G<þäDEÆCñ`d<äÑfÒƒ‘ñXd<˜)IzH²=ò =âÁÌ|02ÌŒÇ#ó!x„S‘í¡§<ÚÃÈx,2ŒÇ"ó¡ÈöÈ#÷”d<äAKÒCôXd{$ÙžpÒ£=ò GâÁÈöÜ2ñ`d{n™x0²=·ÌG<Ùž[æ#ŒlÏ-óF¶ç–ùˆ#ÛsË|ă‘í¹e>âÁÈöÜ2ñ`d{n™x0²=·ÌG<Ùž[æ#ŒlÏ-óF¶ç–ùˆÇ%;uKzäã–â(A§Ú!Äv´§íiGÅþ‡ðE‚ïèÞ ‘‡n´ÃBlG{ÚÑžvx#q`Ç=î‰}€–´q8‡8äá gàïˆG:âñt0 ÞhOÂàd` øF:’€xx£SÉ€7âñ fÀñ00|C΀B`x#íÐF P€x#íG<ÚqÄÕzG<¼v´§íñF§J€ eü¡ ñhG<¼ño`BñðF<¼o´çƒ`iï±{ôãü€†=pD) âÑo´£=íˆG;ÚÓŽx´CÔºµÂA-qŒ£íHG3ÄñŽvtªñG{ÚþJ)Cñ F;®¡ b(cí¸F ÄŽöˆ#∇8„(Žxˆ#∇8Ú#ŽxTª=툇8Ú‘Žt´Gሇ8â!Žx(+âG<žåöˆ#∇8¼tÄ#íG{ÄŽöˆ#âˆG:Ú#Žx(+âðF<ÄÑžeµ#∇²Úq´#∇7âá¬ptJíG<–eU*íˆÇ²â!Žxˆ#áh²Ú#Žxˆ#∇7â!oÄCÞhG<”ÕŽx,+âPs{ÄŽ Š#∇7Ú#Žö(+ËŠ‡8⡬xˆ#Þˆ‡8Ú“ŽöˆÃñPV<”þqÄ£ñG<ÄeÅC툇²â!Žxˆ#∇²Ú#Žöˆ#ñG8Ú#Žxˆ#íhO;⡬ö8«=∇8â!Žxˆ#ÊŠ‡²â!Žxˆ#∇²â!Žp´gYáh8ÔÜ)eÅCñG<–åx¤#•Ї8⡬öˆ#ÊjG<ÄÑŽxˆ#âh8⡬ö,+ñ‡7â!Žxˆ#Êê”8ÚgÅCñPV<Ä¡æxˆ#ÊŠ‡²*eÅCñPV;âáx(+툇8âÑŽxˆ#ÊŠ‡7⡬x´#âˆG;â!Žx(+Þˆ‡²âÑŽxˆ#툇8⡬xþx#ÊŠG;â!Žx´#∇²âáx(+툇8âÑŽxˆ#ÊŠ‡7⡬x´#âˆG;â!Žx(+Þˆ‡²âÑŽxˆ#툇8⡬xx#ÊŠG;â!Žx´#∇²âáx(+툇8â¡âAâAYâÁâAYâ¡âAâ¡âAâAYâÁâAYâ¡âAâ¡âAâAYâÁâAYâ¡âAâ¡âAâAYâÁâAYâ¡âAâ¡âAâAYâÁâAYâ¡âAâ¡âAâAYâÁâAYâ¡âAâ¡âAâAYâÁâAYâ¡âAâþ¡âAâAYâÁâAYŠA^áŠA®AâAYâÁâAYÚCâAÚA”ÁÞð”Ä!”%Ä!Ä!”%Ä!Ä¡ÚÁdÅâÁâÁÞ¡RâA¼¡¼!Ú!Øáò! ìò@âá㡼!¼!¼á*Ç!@kô´öáöáâãÁ@þâÁâ¡Ò â¡œ–!œ!¼a| œA¼!Ú!¼! ¼!¨ÀâÁZ€°Áp€âÁ  ¾!ZÀâAZà¼!6À¼áßÁ_QâÁþ^QÚÁÚ!¼!¼!¼!,¡þ  Äÿ!¡â¡â¡â!Úáã€ö´ö´úøìA¼¡¼!Òx’'½AäAâ¡Ä!Ä!¼Aâ¡â¡â!º¡®¡¨²®AÔ¬âAâÁâ¡ÄA^±¼!ÄAšAäA^ñÚáÄ!®¡–ÅÄÁÄ!ž%ÄÁÄaÄ!”%²ežÅ”eÄaÆ%Ô,”eÄaÄÁÂZÂAY¼aYÆAÆÁYÂAÂÁÄÁâAÂAY¼AâAYÆAÂaY¼AY¼AþÂAÂAâ!œ%”ÅÄZÚAÂÁž%Ä!Ä!ÄÁœ%žeÄaÄ!ÄÁ”ÅÂAYÂÁ”Å:ÆÄÁÄ!”e”ÅÒAÆ!”%Ä!¼AÆAÂAÆáYÆ!œ%”%žÅÄAÍÄÁ”eÒAÆA¼A¼AÔLYÆAY¼ZÂAÆZÆ!”eÂÁÚAY¼AÂAÂaY¨EÔLÆA¼AÂAÂAY¼aYÂAÚaYÆZÂaYÆA¼!¼! eÄ!ÂAYÆAÒa”e”%Ä!œ%¼AYÆ!–%ÂAÂþAÆAÆ!–e”%ÄáÃaY¼!Äa–eÄ!¼A¨eYÆ!Ä!ÄÁÒAYÂAÂÁYÂaY¼AÔLÂAÂÁYÂaY¼AÔLÂAÂÁYÂaY¼AÔLÂAÂÁYÂaY¼AÔLÂAÂÁYÂaY¼AÔLÂAÂÁYÂaY¼AÔLÂAÂÁYÂaY¼AÔLÂAÂÁYÂaY¼AÔLÂAÂÁYÂaY¼AÔLÂAÂÁYÂaY¼AÔLÂAÂÁYÂaY¼AÔLÂAÂÁYÂaY¼AÔLÂAÂÁYÂaY¼AÔLÂAÂÁYÂaYþ¼AÔLÂAÂÁYÂaY¼AÔLÂAÂÁYÂaY¼AÔLÂAY®ÁdXÁVára²aÄ!Ä!žÅÄár¡XAdá ea²a–eœÅÄÁÄ¡`ñâÁâ¡`±`Qä¡^1Øaî!ò!HëЀZ*%¼!ÚÛÁÚÁâ!Èà–èô ô@"AÈ ¼!¼¡Žá& 4`â!œ–¡Ò€Ò!’!Ä@’âA`1 €`ÒÁ@”å œ°¡¼á ´tAþÄA Ò!¼¡¼Aâ¡`±RÓáKà”áÚ ¼!¼áâÄ!Ä¡âÁâAâáâ´–èö´üÀD½!Ú¡'ƒWÞÁåÁâá”aÒAYÆAªeÆA¼A^ÑâÁ`±RŒ±”᳡®®!¨”¡¼¡²aY®AY²!”ÁzÁ8¡za®AY2ø„¯AYºA2Zºá…ÅÁ”å…¯aY®!Ä! %Ä–%”%®aY²A®áYºA¨aY²Aº!Ä!–¥Ä¡”åÄá–þ%œ%®AY²áY®ÁY2XY®A®aY®A²aY²A²AY²A®A¼AºÁY®áY^XºAYNXY²Ä!Ä!–%Ä!Ä!œ¥œ% å„©aY¼á…•%–%Ä¡”å”%ƒ%–¥œ%ƒÅ!ƒÅáÄ¡Ä!œ%Ä!ƒ©aY2XY²A®A²áY²ÁY®A®A²A®aYºaY²AY²AY²á–%¨AºáYºaY2X®AY²A®aY¨áY²A²Z²ÁYºAY¼AY®áY²AY2˜œ¥®á”¥Ä!žå”% %ž%”åþÄ!”%ÄáÄá”%Äá–%Ä¡”åÄá”%Äá–%Ä¡”åÄá”%Äá–%Ä¡”åÄá”%Äá–%Ä¡”åÄá”%Äá–%Ä¡”åÄá”%Äá–%Ä¡”åÄá”%Äá–%Ä¡”åÄá”%Äá–%Ä¡”åÄá”%Äá–%Ä¡”åÄá”%Äá–%Ä¡”åÄá”%Äá–%Ä¡”åÄá”%Äá–%Ä¡”åÄá”%Äá–%Ä¡”åÄá”%Äá–%þÄ¡”åÄá”%Äá–%Ä¡”åÄá”%Äá–%rá máNÁ”Ûdá”AY²AºA®!Ä!”álá Oá¬vÄÃñðF;â!o@ÆíðF<Äavæʇ #Žv8# ¾G5pà€v@Æ hâát8Þ€  Èx£ÞHFÚt´#>ˆÇ X€vƒíp†Xð sl€툇 Xð ml€íˆÇ1°ðtp ßÇ1°ðɈþ£ñF<Úo„ÅøCÄÑÈì#–ð†<¼vx#‌îÜðüøÇ>ô@qÄÃñhÇdÚávx£Þˆ‡7âá q@†âèF7ˆa²k4£ÄèqˆáÉ´#Þˆ‡7Ävx2»ð†c»1qtcâè†8JPŒkãŸF1Lf 3M£¨š8‚ÔÓ5ŠqbP£Ô(Æ5ŠAiü )æÑ‰i„‰ÊS3”QŒk㟆2®Q e\£Ê(5Š¡ŒkãÅP5Š¡ŒiüCaRÆ3°  jCŸ†2”qbøþŸF1®QŒkLãè„2Š¡Œf\#LŸÆd9Lb\ƒÓø”ñ ,Lã¸F1®¡ jC×805Ša²}lƒ@ž ŒˆàŸ†2®QŒkƒŸ†2¨QŒlLÃ"PF1¨Q epøŸF3¬Œb¸Ô(Æ5šqb\£×(†2šQ eƒÅ †2Šq0]#LÊ(5®QŒkƒÅ F1”qb\CÅPF1®ÑŒkãÍÓ¯QŒkãŸF1®¡ŒfC×(58\ eãŸF1®ÑŒk(ƒÃʸF1¨¡ jãŸF1®¡ j(£þÔ¸F1®¡Œk(ãʸF1®QŒk#ŸF1®QŒkãÅ ‡Á¬Œb(ãŸF1”qb\ãÀÔP5”qÉ^#L×(Æ5ŠA_£×PÆ5Šqb4£ÊhF1”Q j(ã¨.Æ5ÂDb\CŸF1&jpX×(5”ÑŒkã¾F˜®QŒk㾘©QŒf(£×(Æ5Šq_ÌÔ(F3”ÑŒkãŸƯfj£ÊhÆ5Šqb\ãÀ×35ŠÑ e4ãŸF1®qàk€™Åh†2šqb\£×8ð5ÀLb4C͸F1®QŒkø`þ¦F1š¡Œf\£×(Æ5| 0S£ÍPF3®QŒk㾘©QŒf(£×(Æ5Šq_ÌÔ(F3”ÑŒkãŸƯfj£ÊhÆ5Šqb\ãÀ×35ŠÑ e4ãŸF1®qàk€™Åh†2šqb\£×8ð5ÀLb4C͸F1®QŒkø`¦F1š¡Œf\£×(Æ5”QŒk¸ט,˜_ jèƒ4ú M>”¡¯p`×P ×P &³ Ä ùúÐú°ñ  À ÊP Ê&×P ×Ð ×P ÊPíí0íÞâ ñà á þñ ñ€ì°ýðqEGÞí "”á ñ Gp¤±qõûpÞ0Úp€Ë ñÀ#=º0Éí ò` Þ@ÉßíªPØ`HOðÎ0‚0ðßÚP0?ð ñ ð éð ð ñð ð â0íí “Q–  ÐñÐñà ÿ˜0Þàâ@ìWü€èÀÿ@dÞÐÑñà íÞ„í@íà »0âà ¶0Çx â` á ã  ÑÞíàâÞ@ Ä`þ Ä  ¶ Ê ¹  ¶PÊP ÊÐ ÊP Ê&œ` f ´À ŽÀ œ€ œà¨fÄ  ÅnÊ@ ÊP Ó°` Ê@ û€Óðï þ@ Êÿ°áp Ä0 þðú°øP `ûðç  Å0 ÿðûÐúðâ°Õ0 û  Å  ùðû€a¢ ß°ÿÐø@ ÊÐ ÊP ú°Þ°Å  ù°ý ×p`ÿðûÐÅp`Å  Óðà ÿ° ÓðF ÿpŰ ×°ÕÐ Êø Óð ð¶ z0ûðâ Õ@ Ê@ûðú@ Êþ0 ÿðù úðâ åp`ù@øP öïÐýÐ ÅP `F Ê@ Ê@ ÊÐ V ÊÐ àÖ ÊP V Êp Å  Å@ Ê@ `V ÊÐ Ä  ÅÐ ÊÐ Ê@ Ê@ Ê@ Ê@ F Å  Ä  Í  Í  Ä0YF f2Êp Å  Ä  Ä  Å  ÄÐ Êp ÊÐ Äp`š© Å  Í  ÅÐ ÅÐ ÊP Ä  ÄÐ ÄÐ ÅÐ Å  Í  ÅfÅ  Ä  Ä  Å  Å  ×  “5YÊÐ Ä  Í  Å@ Ê ™Å  Å  ÄP F ×  Ä  Íp`šI ÊP þÍ@ Ê@ ÊÐ V ÊÐ Ö Å  ×  ×  Äp `V Í  Äp ÅÐ V ×  ×P Ä  ÅÐ »@ Ê@ “U F ÊP ÊP Í@ Å@ š fÄ  Ä  Å  ÅÐ ÄP Ô ™`F Ê@ ÊP ÊP Í@ Å@ š fÄ  Ä  Å  ÅÐ ÄP Ô ™`F Ê@ ÊP ÊP Í@ Å@ š fÄ  Ä  Å  ÅÐ ÄP Ô ™`F Ê@ ÊP ÊP Í@ Å@ š fÄ  Ä  Å  ÅÐ ÄP Ô ™`F Ê@ ÊP ÊP Í@ Å@ š fÄ  Ä  Å  ÅÐ ÄPþ Ô ™`F Ê@ ÊP ÊP Í@ Å@ š fÄ  Ä  Å  ÅÐ ÄP Ô ™`F Ê@ ÊP ÊP Í@ Å@ š fÄ  Ä  Å  ÅÐ ÄP Ô ™`F Ê@ ÊP ÊP Í@ Å@ š fÄ  Ä  Å  ÅÐ ÊP ÊP Ê@ Ö Ê@ £P ùÐ1ë1³¶` “E ÊP ÊP ÄÐ ÊðÄôÐô€#ùÐù ˜Ð ÊÐ F ÊP Ê@ Vâà ñà ñà ñДÑÑ“ÑGp¤±ÿ@ÿ°ÿpâïÐñà íà ñÐÞÞ0ípþ ¸û·ñà ñð éÞÐñà âòñ‘íà *â “á ñà íñà ñà ò ï0ÞÞÎ0ñà ñà ññ <âà ñ‘éÞÞÞÞâà ñ ñà ñà !€ Åðm “±é ÞÞíâzà½ÇЊê¢ V V <Þ “á ñà ñá ñà ñÞñ»Ð ÇX â0Ý á  ÙàX¶à á ñÐÞíà !òÙ° ×  &£ &£ Ô  %p`¶@ Ê@ ¶  ÅÐ þ¥@ ¨ÀÂ,œ Ž€ Ž€ Žf ͹@ Åp`»0 ÿ@¶P ï0à ÿ`R`ðöP@¤` Óðv "0 ¤` Äðð€° Â` ¼ðv Àü ‰Ð° ïHP› ¶0 ÿ P6À»@ Ê` ÊàÀÆä5Ò@ ¶0 ú`R`p`¹° Óð à ÿ ½ÐŸ  Â` ¶  øÓà&ð¯Ð¤€ Åp`ÅÐ þ lÌ»ð #›à 0 ÿ`R`ÀÀÆŒðæ€° Â` ¼ðþv ÊÐ Ù¸ ¹° Ä  Ä` Ù¨ Ä  ÙH ¹  Ä  Ù¨ Ä f Å@ Ê`ÎÊ@ »p`Ä  İ ÄP ¹P – ¶F »@ »@ »@ ʰ »ÊáH ¹  Ä  Äp`¶@ »  Ä Ä° Å  Äp`Ä  İ Ê@ »nÙ¨ ½ Ê` Ê@ »  Ä  ¹@ Ê@ Ê@ Ê@ Ê@ Ê@ Å@ 2­ İ Ê@ ¶@ `F ÊÐ Ä  Äp`Ä » Ä  Ä` ÙnÄðÐÄ  Ä  Ù¨ İ Ù¸ Ê@ ¹@ ¹@ » ÙfÄP ¹þ  »@ – Ä ÊP Ê` Ê@ »@ »  »  æ¬ Äp`¶p`Å  æL Ê Ù¨ Ä  »p`Å  ˜­ ¹Ê@ ʰ V Ê€ÙÊ Ù¨ Ä  »p`Å  ˜­ ¹Ê@ ʰ V Ê€ÙÊ Ù¨ Ä  »p`Å  ˜­ ¹Ê@ ʰ V Ê€ÙÊ Ù¨ Ä  »p`Å  ˜­ ¹Ê@ ʰ V Ê€ÙÊ Ù¨ Ä  »p`Å  ˜­ ¹Ê@ ʰ V Ê€ÙÊ Ù¨ Ä  »p`Å  ˜­ ¹Ê@ ʰ V Ê€ÙÊ Ù¨ Ä  »p`þÅ  ˜­ ¹Ê@ ʰ V Ê€ÙÊ Ù¨ Ä  »@ Ê@ Ê@ ÊŽ¶Ð ×P §À#màm€m€1+˜ð â  Ä  ¶p`Ô° ¯ ám1+Ù€ ¶ Ê@ Ê@ Ê Äf% á ñà ñíà ñà ñÞ0‚ëçGÐñ ”á á ñà ñÐñÐßàèíð íð ñà ñà á ò@Þí ñÐéñÐñÐÞí á ñÐñÐ!Ññ òíà *â íÞ âòé0ííà Ñþ!òñÐ*’Q–  Ðñà ñà ÿ˜ññòÀ#áñà áíà í<â Ñ”á “ÑÑ!ñà éÐ Ê ¥ŽÅ` ÊPÊÄ` Åñâàíñ!Ù ¶ŽO »  %` ²P ¶ ¶ ²P ½ h\ˆp3gpW ¶ðñ¶ Ó»` áh ½°ñÐûk`½ `»  û ` ´`/À úÐD° ¾`/  ûÐ` ¼03À ÿÀF` ¼à° ¯À ÿ0¶°=à¶þ@ ó0»ðHp ¹À {P ¶ ¶Ð ú0¶  ÿÐ` ¼`/À ÿÀF` »޶` ½°À ÿ¼ð À¶@ ëðÅ Ó°ûP ` ¹° ¥ðû€Å` ¼à° ¯° ¶ ˜P ½`Ð ÿÀF° ¼ ` ¯° ÿÐ` ´03Ð ÿpFðжðж@ ¶ ¶ ¶P šŸ ¶ ¶° ¶° ¹` ¹ ù¹ ù¯ù¹ ù¶ ¶ðñùŸ ù¶då²EÌ–­\¹l岕ËV.[ sÌek×®ƒ¶rÙÊeK⮄¶rÙÊe+—­„þ”˜k—­–¹Šå²•ÐV®ƒ¹l岕ËV®ƒ»¶´•ÐV1[3îʵK–¬‹Äæ²Uì`˃¹l岕ë`.[¹líJ˜q—­„¶vI̘Ж¬\sÙ’h+—­–sÙJX,aÆ]¶vå²µËV.[-3î²µ+—­]¶rÙj™q—­]¹lí²•ËVËŒ»líÊek—­\¶ZfÜekW.[»lå²Õ2ã.[»rÙÚe+—­–wÙÚ•ËÖ.[¹lµÌ¸ËÖ®\¶vÙÊe«eÆ]¶vå²µËV.[-3î²µ+—­]¶rÙj™q—­]¹lí²•ËVËŒ»líÊek—­\li)£]lÙ%[v±%þ[ZÊh[vÉÅ–]lÉÅ––2ÚÅ–]r±e[r±%![r±%[rÙÅ–b²Éæ tÄi£›qħœk° æ‘SºÉƉ²GVƱ±›6°p£kšÙå‘W¼ÉÆ–\lÉÅ–]r9¨„x¼‰çË/ÅiçËv¾çËvÚùæyÖôfÍvâù¦/ۉǛx¼iGqÚÓ›x¼3yÄùÒy¼ù²yÄiÇ›x¼4oÚ‰GœvâÇ›/½ùÒ›vâñ&oÒlçKoÀLóËvâñ&x¾qf€xÄiÌpډǛx¼‰Ç›vâçKoL'Íx¼içKoLýÒ›<)æ6âIçþË}ÒQDœx¼‰§o&çKqçKy¾'žv¼içËv¼'oâñ¦xLmç/ÛñfRoâIçKoä‰Ç›xÚñFyâñ¦oâiÇ›xÚ4Íx¼‰Ç›x¼‰§„ƒŠÉè[^é”Qq•TAÅGPq$#[v‘Å–\hÞÅ–^öyÀ‚ €^þ  “WxÙ‡€Nláezé€N^áåhÙçš}òɇzù€NréÅŸly…—àeqòÑ'~ x…[ú9§[^±¥[zég[xÙ'Nl¡åxù€Nl‘¼É{Ù‡Tþ €—è$^ö1þ@r[úIF:$%’DØdžKxégYlÙe¯÷ÙÇŸzñ‡€N^éÅŸX±¥—}ÄÉGŸ}ø1€—èÄ–]l‘e—Wv±e[v±¥Éw±eVv‘å•]lÙ%ÒÛßÅ–]ŠiŸôb^±e[v!½˜Wv)Fò]Øb¶Ø…-ŠAº]û`E.б‹\Øb¯ØÅül± [ƒt» ].vAº\Ìo´Å.ÚwÚ"¶ÈÅ.Ú· [¼¢¶ØE eѾWc¶Ø…-vQŒùåÂŰE1l±‹\Øb¶Ø…,$WŒ‹Èb¶¸+H·‹öíBrÅØE1æ· [ïþÜEv‘BÒå‚¶(†-vF[ä‚¶(†-vÇ\°ÂŰÅ.à˜ VØ¢¶ØsÁ [û€c.Xa‹bØbpÌ+lQ [ì޹`…-Ša‹]À1¬°E1l± 8æ‚¶(†-vÇ\°ÂŰÅ.à˜ VØ¢¶ØsÁ [û€c.Xa‹bØbpÌ+lQ [ì¢}»°E1l± [äb¶x…lQŒnˆ£ ×G7¨QŒ]´A§x…8Ò!¹W¼¢âØE1º‘ ‰£ X(Æ.rA KÈBã°Å.l± É墯(A<¼oÄÃ_òF<ÚávÄÃT“âþè—Ò$Ž/yC`G<¼ñ¥vÄ£âˆGš¾$y|©ÞˆG;&Õo´Ã`G<Ħv|É“j˜ÄqÈÃñðF<Úáx´Ã_òÆ—Òá/µÃ`òGÛ1©v¼#iòF<Äv€©ÞhÇ—J€ eü¡ éø’7þ‘LÄ£_G<¼ÑŽxˆLâ‡8¼qÄCiŠG;ÕŽxxãKòðF<Ú!qx#∇8Âo€I툇7¾ÔŽt€ÉñhÇ ¼&o€IñðF<¼ÑŽx´#íˆG;ä!ŽÈâ¶xE.âùŠbp‚Ž€ ·3\AºÒÝCþ.ŽËŠWœÂ¯ÈEY§Ä]»¦,«¸¬ríkWìÔ«S¯ŠÑË'땲kâ¨e»¦,ë©\ûÚ½õêÔ«S£^az"ávñÚÅk/8ÂÞ‹‹ç-^;oíÚy»ìp;oí¼Ï[ú(ƒÉ)˜œ2 &§xRP ñx8ÞÄãM;¯yÓŽvíÄÓaí¼&N<—Å#8ñx£7ñ´8íÄ#΀ÞÄãvíÄÓŽ7ñxO;ñxsY<ÞÄ#΀޴£7„‰<âÄ#8ÞÄ#7ñx£Þh‡7âáËx#ÞxM;¼oÄÃñðF;¼1 Âx£Þ¸L;.H˜tÆ%ÀD1þІ׈#íða.þvÄÃñðÆkÚáxx£„ñF<Ú!íx#ôF<Úá ´Ã¯ñF<¼ñq¦â L;ÓŽx´ÃôF<¼Ñ´ÃñaÚ¡vÄC%8Å#qŠGœ¢§hã)0qŠ6b¢ 8EqŠGœâ§xÄ)Q=aâØÓ)0ñˆS<â˜xÄ)JñˆS`ÂÀÄ)Pñ`☰Ä)qŠ=¢§hã)Úˆ‰Q<‘§ÀÄ)0ñˆ¥<âœÀÄ)qŠ>–â§xÄ)±”GœØÓ)qŠGœ¢§@Å>äÁôñ§ð"1%LdO§ØÓ#Nñþˆ‚´ñÝ|Ä)qŠn>â£ÀÄ)ÑÍnö8Å# òˆS<âmÄÄ)qŠGœâ§hã)qŠG”˜xÄ)úxŠ6ž¢§x&NñˆS<âðÄ#NñˆS´ñ(HOñˆS<âm<Å#NÑÆRôñmž¢¥hã)ÚX L<â¥xÄ)qŠGœ¢§xÄ)qŠ6ä§(EKÑÆS<âmÄDAqŠ6ž¢§hcAÚxŠGœ¢§xÄ)qŠGœ¢§xÄžNñˆS´ñ¥8EKñLœâyÄ)ÚXŠGœâ˜(È#NñˆS´ñm,&N‰þG`âm<Å#NñˆS<âm<Å# òˆ‚<âmˆÃ.äB1ìB.ˆÃ?þüƒ7œ&”Â#ìÉ#`Â#¼B<(g6ØÂ+ƒ,Ø‚8ìÃ?\Ã+<&<&”Â#”Â#`B)èC>ôÃ>äC1´‘"`BaÂ#XBÂ5äƒræC>ÐC?ü=&´&ô‘"`Â#(B•€78\ˆC3¼&<&ô‘"BaÂ#`Â#”@<¼C<´Ãk´ƒ‰a´a´C"ôˆÐŸG=úóèÏ¡G„>úóèÏ£?úóèÏ£?þ<úsèÏ¡?zô§åÀGýy4ðÑŸC=úsèÏ¡Gí9ôçÑÀC=úsèÏ¡?‡=xèÏ¡?‡ý9ôçÑŸGý9ôçÑþŸGøèÏ¡G0ý9ôhà£ú£èÏ£?þøhà¡?‡þúóhà¡?þúóhà¡?‡þúsèÑŸGý9Ôrà£?‡þzôçÑÀCýy4ðѺý9ôçÐEèþyth ¢?>úshà¡?þúsèÑŸG |ôç‘Cþx„B:ä‘?yäGzd Cþxd GþxäG:äCzd GzäC:äCþ8äG:äGzäCþPäCþ8äGúã?è‘ùã‘?è‘?ùãè?ùã?ZúãGþxäþGþxd GþxäGzäGþ8äGzd Cè‘?ùã?è‘yd GþxäCþxd G:ä‘ùã‘?ùã‘èGzäGþ8äGzd Cè‘?ùã?è‘yd GþxäCþxd G:ä‘ùã‘?ùã‘èGzäGþ8äGzd Cè‘?ùã?è‘yd GþxäCþxd G:ä‘ùã‘?ùã‘èGzäGþ8äGzd Cè‘?ùã?ùã–þxäCþ8äGzäGþ8þd GzäEi‰æ?y„ºþ ëCþ8äCþxäGþ ùG $ä‘?ù£¥?ùã?0y$„x¼‰Ç›v¼‰Ç›x¼‰Ç›xÚ‰mqâñF´½‰Ç´ãimoÐnívâñFîx¼iív¼‰§oÚiÇ›x¼i'qâñFœx¼A[œ¾åGžx¼‰Ç›xډǛxĉǴʼn§oÐ'žv¼iÇ´Åé;o,GÛ›xÚñív¼‰GœxÚ‰§´ÛA[yäítÐ.áeþh#oâimq¼‰Ç›x¼imqäöæðxÚAÛ›x¼I'žÃãñ¦xÄ‘[œÃÑþö¦ooÐ><qâimí‡8¼vÈÃñðF<¼¶vÄÃñðF<ä!Žxx#Þ8\;Ðæxx#â(ÁqˆGÐå8„"þÐ’CüáøÃ!þpEüA‡xÄ!¡EüáPÄñº<âøÃ!þðˆCüá8ĉ?Ðå-9Äqˆ?b ‡ø]þðºüáÀÄñ‡G¢%xÄñ‡Cüh‰"þpˆG äy„"þpþá‡øÃ!ñ‡GüáŠøÃ#þкâ8Ä#èòLüá—HKèòºüá’„PÄñˆ?´DþxÄñ‡Gâ Ë¡ˆ?âŠ8Äèò‡C<âŠø&þ€‰?\RPÄ!ñ‡G`âøÃ!¡ˆCüá‡PÄñ‡Gâx„"òˆ?(â˜øÃ!rÉ?`âøÃ!þðˆ?<âxÄqˆ?`âty]ñLü8„"þðˆC`âøÃ!ñºøðøCKñˆ?âtQ]þpˆ?ü]þðˆCü.PÄñþ.xÄ!þ@—?(âøƒÿ@—?<â Ëñ‡GüÁ‡ Ëqˆ?ÐåŠøÃ#þàÃ?Ðå8ÄèòEüáðáèò‡Gâtùƒ"þðˆ?øðtùÃ#ñºüAxÄ|øºüá‡þø]þ ˆ?<â>ü]þðˆCü.PÄñEÐ凸CKþ ˆ=â‡xÄ¡ˆ?ÄÄ!, Lа÷!,a L(а&ÑoL(ÂÞ˜8&|¨L(˜P„½ÑoL( ·„½ÑoK`B˜8&a L(ÂÞŠÀ„"®LŠÀ„"^‚ýá?"Ä#þ@ˆ?âz!ñBÜüG(ÐñBâ„h Þˆ‡7ÒŽx£‘‡7â!Ž´c âˆ7ÒŽxxCÞˆ7âáxc âˆ7Ú‘Žvxc IÇDÞÑŽxˆ#ñF<Ú1qÄÃñhG<¼ÑŽxˆÃ á á ñÐñà íâà á á ñÐñà þíâà á á ñÐñà íâà á á ñÐñà íâà á á ñÐñà íâà á á ñÐñà íâà á á ñÐñà íâà á á ñÐñà íâà á á ñÐñà íâà á á ñÐñà íâà á á ñÐñà íâà á á á í Þâà !Ññà ñà !á ñà ñ !ñ ñðíòà ñà ñ ÞÐñà Ññà ñÐÞPá í0þÞÐÞÐÞÐá ÑHíPmð„ð%0â@ÞÐñÐñà ñ ñà Þ íò ñ"ñà ñà Ñá ñPñà í0â0ÞÐá ñà !ñÐñà ñ âà ñà íÞ0âÐñÐñ ÞâPá í0âÐñ !âíà ñ ñà ÑŒÒ!éí0âí ÞP˜P ÐñÐÞí€ ñ&ù ùÐHùòð¼ôEÉKñDù¼”ñ•¼”ñ• ñ¼DòñþÐHùòñÀ•ÁK!ððmsvy—xi—û ûà í0ÞÞ0!òá á ÑÞíðéí@íðÞÐÑïVí ñÐâÞ0ÞÞÞÐñ  á Ñ !á ñÐ Ñâí0íÞÞá ñ òà ññPïÐñà ñà á ñà á íà ÑñÐá á ñÐÞ òéÞ0íÞ ŒÒÞÐÞ0âÐñà ñ ñ ñà á ñÐÞÞÐá ñ ‘þ ÑÞÞéÐá ñÐ Ñâí0ÞÞí í é0í0ââ Þ!ñà ñà ñâ@íà Ñâ@í0â@íà Ñ!ÑÞ@íðâ@íà Ñ!ÑÞ@íðâ@íà Ñ!ÑÞ@íðâ@íà Ñ!ÑÞ@íðâ@íà Ñ!ÑÞ@íðâ@íà Ñ!ÑÞ@í0íà ÑÞÐá ò0í0ÞÞíÞÐÞ Þíéñþí@í ñÐ!á ñà !í@íà ÑÞ0íà á ÑÞ ÞÐsù% ñÐï@ÞÞÞí0íà ñà âÞ Ñâ0Þ Þíà ÑâÞâ íâÞ Þ â0í@Þ ñÐ!òÐÞ0á ò âÞ@Þ@í@ïÐñÐá ñ ñà ñà ñà ÑÞÐÞ0á ñPÞÞ ñ ñà ñÐQŠ  Ðí0íà ŠÐHùÀKùQ™òò¼””þ”ôÀ•ùðò¼ùÐHù•ùÐHùÀKù@òEñ6¼”¼”ñ–ùPx@Ðy™¸Š»¸°" ÿíÞ@Þðíâñà Ñá ñà !éÞPÞâò ÞâÐ!ñÐÑñÐñÐá íà ñà ñà ñ íà í@ÞÐñ"ñà í0ÞÐñà íÞí@ÞÐÑá ‘ñÐòà ñà ñà ñÐñà ñà á ñà ñà í0í0í1Þí@ÞÞÞÞ0þâ0í0í0íÞ0Þ0ÞÐ!ñà ñà á ñà ñ ñà ñPñà ñà ñíÞ âà ñà íÞÞâÐÞPñ íðÞâ@Þí@ÞÐQá íà íÞÐÞ0ÞÐá íà ñà ñà íà á í@ÞÐÞÞÞÐÞ0ÞÐá íà ñà ñà íà á í@ÞÐÞÞÞÐÞ0ÞÐá íà ñà ñà íà á í@ÞÐÞÞÞÐÞ0ÞÐá íà ñà ñà íàþ á í@ÞÐÞÞÞÐÞ0ÞÐá íà ñà ñà íà á í@ÞÐÞÞÞÐÞ0ÞÐá íà ñà ñà íà á í@ÞÐÞÞÐá á í âPñÐÑñíÞ@Þ0âÐéÞÞ@âÞÞ í ÞïÐñà ñà ñà ÑÞ@Þ@ÞÞÞÞÐá m@ð"0âÞÞí âÀ(ÞÞâ0í@í0ÞÐÑÞÐñ á í@ÞPñþÐÞÞÞíâP!á ñ ñÐñÐÞ ÞÞÞÐÞÞÞñà ñà ñà í0Þíí0Þò ñà !!á ÑñíÞP˜° Ðâíí` ñ–ñ YTuÀ¶ÍKù•ùòòEIù ‚›”ñ–òE)¸¼”ñpÜ$¸”òò”òñò ¸‘%ðsÙŒ»Þì½Þû ÿÐÞ0Þ0éÐâ0ííà ñà íÞÞÞ0þâ á ò í@íÞ0íðÞ ,ï ñà íà í0Þ Þ íðÞ0í ñÐï0í0â@íÞíà !ñPÞÐÞPñ ñÐÞí@í0Þ íà ñà ñÐñÐÑÞÞÞï ñÐñà ÑÞÞÞíÞÞÞíà ñÐÞÞPÞPá Qá á ñà 3ÑñÐñÐïÞ íà í ÑÞÐÑá ñà !òâ@ïÐâÞ0â ñà Ñþá !ñà âÞ0Þâ Þ@ÞÐ Ññà ñ òà á í íÞâ Þ@ÞÐ Ññà ñ òà á í íÞâ Þ@ÞÐ Ññà ñ òà á í íÞâ Þ@ÞÐ Ññà ñ òà á í íÞâ Þ@ÞÐ Ññà ñ òà á í íÞâ Þ@ÞÐ Ññà ñ òà á í í0ÞíÞÞ0íà íà á âÞ"âéPñÐÞ0Þþ0âÞíâÞííÞíà ñÐñPâ0íÞÞâ ÞíÞíÞðÞÞ0í òЄð„P Ñ!ñÞÐâÞ0íÞ ííðá ñÐÞ0âíà ñÐÞ@Þá ñà ñ ñà í0íðíííí0ÞÐ(Þ0ÞÞ0í0íÞ0ÞíÞ0ÞPÞ Þ ñà ñà !ÑñÐÑÞÐÞÞâ@%ðÅðm0!®7LþùäåË'½,òòÉ«SïF½: óÉË'¡¼|òèå“—OB’òäå3)/ß¹Wùä!”—O^>ySæ£g2_J„&ÊË'/ŸäsØÂ$ñh†2ä±òæc!ò ‡<è!sCù ‡<è‘zȃùH =ò!…è£òXˆ<ò±yÐ#ôG<ðñ ·É#ä•=Bðˆ?<¢ ´k†%4¼awØÃqˆEôè£OUgÁÄ &àÀ=ùУ=ùäcÎ.ùÐs6=Åx#6>»èãO.ùÐ3µ>øì‚O1ÞäC<¹´“=øì’>¶È“=æ#?²äCÏ>ûäCÏÔôäƒ-bçsö>ôóÍ+ï”`C %üqÒ>×X²Jv2ü£Î¬Û~;îíƒI<íx73µãM<ÞÌÔŽ7ñx3S;ÞÄãÍL–ä>=Jûä²O;ÞÜ$N<Þˆ#O<íp… ðB>é@€.í8ÖL K:K8iP€ €.âa 5À Ò€þ(H;P,`á1‡7ÚávÄ£ñðF<ã™´C3ñ†<âÑŽ™´ÃñXMÄoÈ#ËñF<ÚÅ̤ÞhG:ÒÑoÄÃñG<¼1“vx#ÞÐ M¼o´ÃñðÆbÄ¡“åxã&íxG:ÂqqÄ£PŒG;âÑŽx´Cò˜‰7âáxx£Þ ‰8âáåÄÃòðM¼vÄÃ3YL<ÚvÄÃñðÆLÚ!Ž™x#Þh‡7nÒšx£ñð†<â!š,f&Þˆ‡7âÑoÜÄñh‡8fâ šˆ#Þ ‰7âÑqÌÄ4G<¼AoÄ£âþ˜‰7h"Žxxƒ&ÞˆG;Ä1oÐDñðM¼vˆc&Þ ‰8âá šx#íÇL¼AqÄÃ4ñF<Ú!Ž™xƒ&∇7hâx´C3ñMÄoÐÄñh‡8fâ šˆ#Þ ‰7âÑqÌÄ4G<¼AoÄ£☉7h"Žxxƒ&ÞˆG;Ä1oÄÃ3iG<¼oÄ£Þˆ‡7Úáxx#âˆÇb¼vx#‹yÃäá qÌDòˆ‡8fÒŽ›x#í‡<ÄoÄÃ7ñF<Äv̤Å F;¼o@±Þˆ‡8fÒŽ™´#Þˆ‡7äo´¡t¥kþG<¼±˜x´C3i‡8â!Žxx#íðF<¼q“vœq9ï I;ⱘt´ÃñðF<Úá (¶Ã4i‡7ÄvÄÃñhÇL3“vx#ÞX ½o@±Þˆ‡7fÒo,Ç7YŒ7âáxˆ#ÞhM–3oÄCñh‡7âᙴˉG:fE(ãmhG<¼oú‘…~èƒv¨ꑆ|Ð-SÃG.è±}ä¶È=ôQ Yœ­× ‡>Ä‘|Ø"çØ…8èá[äcjÕ°=òQ lL­¶[5°‘zà£ú ÝÌQŒ³M-ô¨†þ2äeˆàÊøC"g’fXB%'Ù>ÀŽØcÿpÇö1ÙÈóA•Q2¤ÄñG<ÚoÄCñhG<¼qÄ£ñðF<ÄvÌĘÈ2žó,‹}ÐÄí˜I;hâv€,Àâ!épo°h‡  o4 ]h‡3@XÄ£H5Ž–exèÂbÆq€ìÓ‡N¼AoÄCñðF<ÄÅÌÄñðF<Äo´#âðF;nÒŽxˆ#â ‰7â!Žxxc&툇<ÄoФñðF;fÒŽx´ÃéXŒ7þâáx´c&òG<ÞAo´ÃñG<ÄÅx#Þ¸‰7â!Ž™ˆÃñðF<Äo´#â I;âá š´CâˆÇ;C“w´#íЉ7f"šxc1ñG<Äq“ÅФòð†<ÄvÄÃñÇb¼!q´c&툇7Úáxˆ#ÞˆG;f"Žx´#ñðF<ÞAoÌÄPôF<ÞAoÌÄPôF<ÞAoÌÄPôF<ÞAoÌÄPôF<ÞAoÌÄPôF<ÞAoÌÄPôF<ÞAoÌÄPôF<ÞAoÌÄPôF<ÞAoÌÄPôF<ÞAoÌÄPôF<ÞþAoÌÄPôF<ÚAoÄÃñhG<ÄÑŽ›ˆ#Þ‡8äá š´#☉8f"Ž7ðã g¤‰7Óo´#íЉ<¼1oÄÃ3‘‡8âáÅ4ƒňG;hâxx#:ñÆb¼ÅvÄà ôÈG)J ŽvÄCú7MxÃLˆÃLȃ8xCä|õCôÃ>ÐC0!¦=À×ÔàC.ÐÃÔäƒ>„C141xÃ.äƒ>ÐC5ìB1\C>àC1Ѓ>àÃ.xC>„C1(1tÃ.ÐC>ÐC3ä‚2ŒC.ÐC>àC6ƒ-Ã4èC>LÍ>àƒ,ƒ-¼B1LÃ9ØÂ>ÐC>TC œÂ.B”Däüƒ2XBž}„; À?ìÃ?ìÃ?¸Ãüƒ;À5‚Ä>üƒ;@9îÃ?¸C¤Ä#,†8ÄC;ˆC<´ƒ@䣀8ÄC;ˆþRÄC:XB9&¤IìC.ìC;xÃLxÃbÄC;¤ÃL´C#xƒ+èB:èÂ88@<¤€.Œ€.¤#´Ã9èB;pW€.x€.¤C<¤ƒ@@<Ră7ă7Є8ÈMÌ„8ă7ÌD;ÄC;Є8\e;xC<¤C;Ì„8ÈCÄC1xC;xCЃ>DŽØÐM>ÐM>èC>ôÝìƒ>ìƒ>ô|õÃ>èƒØèC>DN>ìC>ìÃÔäƒ>ìÃÔì"âƒ-ôƒ>äƒ>äƒ>ìƒ>ìƒ>ä݈ÍÔDÎ?ìC>ìC?äC 4ƒ%XÀìÃGð$ÀüÀ>”Ä>HÀD@¸Ãüƒ: À>HD€ÀÂ?ð$ÀüÀ>üƒ: €XìÃGìƒ@X,ü? A ÀDÎ<þ4@"üƒ?d@HD€ÀBIìƒ%´ƒ8´ƒ7ˆC/ôþƒ,ìMxÃLˆƒ7´ÃLxC;À0BÃs¶ÃL´ÃU¶CLM>LM?LM>üÝüÃÔäÃÔìƒ>ä"êƒØèÃ>LÍ>èÃ>œ÷y÷ÃÔäC?Ð?ÈC>àC1LÃ>ôƒ>ôC>À×?äƒ>äƒ>ô|åƒ>ôÃÔìC>”@)ôJ4ƒ%üà ÁGôÀ Ü>à”Ä>¸CDŽ; @?¸Ãìƒ; À>üÃ>üC¼À=àÁ>¸tÁ>”Ä>¸ÃìÃ?ìÃ?ôÀ Ü>àD.(Àþ=ÔAìƒ; À>œÄ>`RÑ8Q:ŒC:xÃ8 ECyC8ˆƒ7ˆƒ7XBô¶y›ïC.ìƒ8ÌD;\¥7´ÃL´  Àè‚7dxÀ0€€7¤,Œ€.xC€`A èB<ÔA|C<è‚7ˆC<@À`Á@|ÃL´ƒ7ˆƒC(*ö§M»xÞâ¥{ôoß¿~úôõÓ—ofÌÿòåû÷Oß?Ïÿòíû§/æ˜ÿíóÜïß>Ïÿôýó¬oŸ¾ùþéˇX.[×öíïæúúaηo·¾ùôý ñh¡6£Ánfé3ûì 7œ‚}áÕ ­nÀ>uþ©+0zŸ½äþÙþQ'€{ö ïu m{ g4p çu Pþ¡|üCûøGhôñ}ü#ÿÈÇ?òñ}èã˜ÉÇhò±EîCùøÇ>òþ™äãùÐG>F£ðìãúȇ>F“”À»øC<´bxbèÀ>Ð ÌÒÏ>þ¡ŽücîÀ?ÔQ€~¨c£Ù:@K @àꀂöñu `4û@” ìãê@òñu àF–‡7ÐÙ oˆcÝ8”€nx£ãè†8º1oX"Gýô§‚ö‘‹}4¤ ñ†8ÒŽ†¤ƒ*ñQ;âávxÃ'íH‡7âv¤£ሇ7âx $>ù†ŸÞ!Žx´#~jGCÒoÄ£ ñF<Ú!Ÿx#Þð BÞoÄÃñh‡7âáþxxÃ'Þ¸T;âáxx£!Þˆ‡7âxxCñð†OÚvx£ñhG<Þáx Ä'âˆG;â!y´ãRíðFC¼v ÊíðI:Òo4ÄòðF<ÚáoÈ£!7äÑoÈCòˆG;¼oÄÃñh‡OÄ=oÄCñðFCÚÑv4Dñð†OÚᆈ£!íðI;¼ÑqÄÃ~‡<¼=?µãRíðF<¼¨v\ªÞˆ‡7ÕŽKµÃñð¢Úq©vx#Þ@T;.ÕoÄÈjÇ¥ÚáxxQí¸T;¼o ª—j‡7âá DµãRíðF<¼¨þv\ªÞˆ‡7Õèµ#âðS;¼oø©>i‡7âoÄÃñhG<¼Ñ5¸ãu%6ñ<ܱ†vˆ#ވlj€øÉâG;|ÒŽxxƒ~jÇ9€tÄãÅh‡7â!yØb²È…-F#Žxx£ñhG<¼qü!ò8EäÑvÄCñðFCÚáo´Ãiˆ8âÑŽx´Ã'Þhˆ7âáxx#âG;¼v4¤ñðF;âá†x#Þˆ‡7âqÄCˆj‡7âáx´#í8]<Ä!q4ÄíðU¼x´#áð†8>ÝoÄÃñðF<¼!Žxþ´Ãñ@ˆ7âÑqœÎñh‡7’ކ”àÊøC|ât<âúXd>ö¡„æåøfF“„&ÿÐÇhò¡Ñ„<úøG>À“äãùøG>þ‘Ñä<¡QÐ>þ‘ð`æùOhþ™|ü#àÑG>þ±<¢hƒ®a‰Ãÿ°ر©cûø‡:ðw àîxìvì<ûpGöá!w <ö;ö¡ l` Æ?Ü1íÃâèÆÓÅñtqx£€’º!ŽnxCÞxº8ºa‰ŽÝŸ²øG;¼AŸx£ñðUâá „Äþà ‘‡8⑎v4¤ñ‡8|â yˆÃ iGC¨Òo´Ã iGCÒÑo„£2j‡ŸÚoÄà YX:âÑŽ†x#â ŠOÚÑoø¤ÞhGC¼oÄÃñhG<ÚÑoÄÃñxG;âÑŽx¤£!Þh‡7Úq4ÄñðFC¼q $òðF<Ú„ÄÃñðB‚xx£ñðFCÚÑo´ÃñðF;âvøÄñð†ŸÐv4Äí87â¡B¼!¼!¼áÚ!¼!¼ÁOÚ!Ú!Ä!¼!¼ÁO¼!¼¡!ÚÁOÄÁâÁN§âÁþÅÒ¡Ò!âAâÁÚ!¼!¼!¼!Ä!¼¡!Ä!¼¡âÁâÁâÁâAâÁBâÁÚ!¼!¼!¼!Ä!¼¡!Ä!¼¡âÁâÁâÁâAâÁBâÁÚ!¼!¼!¼!Ä!¼¡!Ä!¼¡âÁâÁâÁâAâÁBâÁÚ!¼!¼!¼!Ä!¼¡!Ä!¼¡âÁâÁâÁâAâÁBâÁÚ!¼!¼!¼!Ä!¼¡!Ä!¼¡âÁâÁâÁâAâÁBâÁÚ!¼!¼!¼!¼!þÄ!Þ¡!¼!ÄAÄÁ'¼¡¼¡âÁâAB¢BÚ¡!ÂAîÜÜèÜ×ÀO¼¡”¤âÁâ¡|BÚÁâAÚ!ˆ!ΡÂ!|"â!”¡¢â¡âAªg4ü¤ÒQÚ`|J¡âÁÚQÚÁâÁÚ!äAB¼Á'ÄÁâÁâÁ¢â¡äÁüD¢âÁâÁ¢¢|¢B¼¡¼!Ú!¼¡¼¡¼ÁO¼¡âA¼¡¼!¼!¼ÁOBÄ¡!Ä¡!"ÚÁOÂÞ!"ÄþQÚÁ'Ä¡!Ú¡!¼Á'¼!¼¡¼¡âÁÂÒ¡!¼¡0¡þ  ¼ÁOadn¤<$þ!FCþ!F#ô!þAþÁ3þAþAÀCþAòáB<ô!0cþAþ3þA‘FCò<ò<ôáòáòa4òa4J ŠáÚÀF”ÁðÁx@‘zÀÞáàöa4I`4ÜaúAàìAØá©Œàþ8áÔadþÁ€þA‘zÀÞáàöáê ú¡àìAØÁF,A²A²A²!ºÁ²¡”þIJAº!Ä!ºá,ìdÔFö!ö!Ä!Ú!ÚÁâA|!¼¡!ÚÁ¢âAâ!ÚÁ¢¼áR¼!¼!Ä!ÚÁÅâÁ¢üDâ!¼!¼Aü¤¥¼¡!¼!Ä!ÚÁÚÁâÁ|¢¼AäAâ¡âÁâ¡âÁÄ!ÚÁü¤Ò¡¼!¼AÄQÚ¡!Ú!¼Aâ¡ü伡!¼!B¢¢ÞÁâ¡|ÂâÁ⡼¡!ÄABÅ¢âÁâÁüDF¼Á'¼!¼!¼¡!Ú!þ¼átÂâ¡âÁâ¡âAâ¡Þ¡¢âÁâÁÂâÁ⡼!¼Á'Ú!¼!¼¡âÁâAÂâÁâÁü„*âÁÂâ!â¡¥¢Ââ!â¡¥¢Ââ!â¡¥¢Ââ!â¡¥¢Ââ!â¡¥¢Ââ!â¡¥¢Ââ!â¡¥¢Ââ!â¡¥¢Ââ!â¡¥¢Ââ!â¡¥¢Ââ!â¡â¡ÅÚ!ÚÁ'ÂüÄþ.¥â¡¼¡âAâ!Ä!¼AÖè±êà êà êà Êa¼ÁOÚÚÁâÁ!.¥Ä!Š¡ˆ¡ˆ¡r¡!Ú!ÚÁ⡼!¡!ra4¼!¼!Ä!¼!¼¡Ä¡ Ê¡Â⡼!Ú!Ú!ÄátÚ!z/¥¼!¼!ÚÁ'¼Á'¼!¼Á'ÚÁâÁâAâÁ⡼Á'ÄA¢âAäAäÁâÁ|¢üÄâÁâ¡âÁâ¡ÄQ¢·Ä!Ä¡!Þ¡ÄÁ'¼!Úá"z½!Ú!¢·!¼A|¢¼þ¡âÁâAäÁ'¼Á'¼¡¢Aþ  â¡âÁÂáFc7þ!0#öa4öa4ô!0c4Êa4òáòáô!<òáôaþAþAþAþ!ôáòAA0#ÀCþAþ!F#F#þaþ!0ãô!4þAþaþ!ôáB£þ  l¤,A~`þ¡ø  ` ÄàöA àÔ¡FC `¡ø  ` þA`lD `¡ø  ` ö €òanàþA `AAÄáCùC¯áþ²>ô¨áº!®áCÅ¡,aF±9æóÏ>úü³Ï?ûü£ŸúªO ûü£Ï>‚šŸûü³ŸúºÏ?úü£Ÿûø™O ùø¹Ï?ûø¹Ï?ú䳟ùìóÏ>%<¢Ìmlêg3žºÏ¦ûìCìþ?ûlºÏ¦û4K-±ûT‹í¦–d“ 5×P.·ÔdsM6×p›2à¢{M6–d o¼Êò7ï´s7ñxÓN<íÄãM;Þ´s7í¸ÔN<ÞàO;ñx“N;Þ´C’7yÓIí$8$‰7ñxO;yƒ7íÄ#Î;íÄ#ÎAâx£P<ÞÄÓÎAíÄãM<í$BÞ¼ÓN<Þ´ã IÞ(7íÄ#ŽKÞ´O;òˆ7$‰ƒ7y7ñxã’7íÄÓŽ7ñˆO;Þ$Ž7ñx7ñx£P<í$N:ñxÓÎAâÄãM<íÄãM;é´8y7ñ´s<âÄãþ BÞôNyíx7ñxs8µƒ7ñx#8ñ´7ñxÓŽ7ñxÓŽ7y7ñxsP;ñx7í¸$N<íäM;)ä’8ñ´s7í¤KâÄÓÎAÞ´sB.‰O;yÓÎA ¹$N<íäM;)ä’8ñ´s7í¤KâÄÓŽƒx£QˆKÄvÄí8ˆB\"Žx´ã ÞhÇAâqÄ£ñF;¢’´#Þ@H;"Žxx#íxG;â!Žxx£ñ‡7ÚáoÄÃñhÇAÚo¤#ñ(ÆÖoÄCâ@ˆ8ÚAo´ã Þˆ‡7Úáxˆþƒ$íˆG;HÒŽpÈ¢í8ˆ7Ò„x#Þˆ‡7ro´#âh‡7â!Ž6ÈC¥(7ÚqvÄ£‡7âáxxC!Þh‡7âáxx£ñðF;ÒŽx´#â@ˆ7â!Žxx#í(<Äqo ¤QH<‚vDÞ8H;"Žx´!Þˆ‡8âát¼£ñðÆ;âÑoÄÃñÇA¼qÄñ‡<¼vDåñF<¼qqÄñ‡8ä!’x#Þ(&Šñ‡6Ä£Þˆ‡8ñeùIûøÇ>µ}øiÿ؇Ÿöá§}ücYÚÇ?öá§}jþÿX–>öñ}kY‚ÚÇ?–å§}øiÚ‡ –å§}øiÚÇ?öQLãm Ö>ša l jÍÚ‡NªÓeuSû°„2²QŒl€Kàjj1¨¡ŒlPƒ[àR¸®a‰¡jµZûÈÅ?âÑo¤Qˆ7â!yÄ£Þ8ˆ7âÑŽx(ÄG<Úá q ¤ñF<¼q…¤Þˆ‡7âávx#í@ˆBÒŽxxCñhG<¼Ño¸DiIÞvˆ#ÞI¼o ¤Þp‰7Ò ¥#G<v¤Þ8ˆBÞA’vÄ£i‡8⃴ƒ$þÞˆ‡7\â yxã ∇8âჴã í I;ÄA’vˆCÀ‰G;âáx‡$ 9Ƚ¡oÄÃâ‡7äqv ÄñðF;¼v¸¤ñhBÚqÈ£ÞˆG;âáxx#â8H;"Žxx#íˆG;â჈#ÞG<ÄoÄ£ñhG<¼qqÄÃ∇8âáx´#툇7"ŽxxCñG<¼vÄ£ñðÆAÄoˆ#∇7âÑŽx´#Þ8ˆ8âá qÄCñðF<ÚvÄÃG<¼!Žxˆ#ÞˆG;âÑŽxxã ∇7ÄqÄÃñþhG<ÚoDñð†8â!Žxx#íˆG;â჈#ÞG<ÄoÄ£ñhG<¼qqÄÃ∇8âáx´Còh‡7âv ¤ñHG;Äq DñðF<ÚqvÄ£ñx‡7Äo´Ã%â‡8Ò!yÄCñðF<ÄoÄÃñÆA¼á’vÄÃñh‡7âáƒ(ä Þˆ‡7âx´ÃíðF<ÚqÄÃIÚqüAòxD âñoÄÃñð†8ävÄ£iB¼!vÄñF<Úá „(¤<Þˆ‡7Úávx£ñF<¼oÄÃñPþÈ;Äo´Ãâ8H;âáx´CípI;¼Qžtˆã íð…Úvx#∇7ÒŽxx!Þˆ‡7Úá „($í8ˆ7\Òo$)Á#”Aˆ6ÄCòðF<±?-kÿ؇Ÿöá§}Tk›Zµö!¨}jYÿXV öñ}ljÿØG öá§}üc‚Ú‡ ö!¨}”àÊøCš¥ Kluö´¯=µ0®l£©ÔÈF1À• jdCà*ï©Ñ Kؾö²ØG8Òo´#Þˆ‡8Hâ „x#Þˆ‡7ÚvDñF<ÄoÄ£ñF<ÄoÄCÞˆGþ;ä!Žxx£ñ‡7ÚÞÐñ $!í@ÞÞÐò ñà qÞÐÞPÞÐÞÞÞíñ á íÞpÞâà ñà ñà ñà á $!ÞÐñà á ñ éâÐÞÐñ  á Ññà á Àá í ÞÞÐñà .ÑñÐñÐñÐñ ñà á í€ÞÞСñ Þ€Þ€# âÐñ åÑ.á íÞÞí@íÞÐñà íâÞÐB!ÞâÞíÞÞþÞÞ@!íÞÞÞÞ@!íÞÞÞÞ@!íÞÞÞÞ@!íÞÞÞÞ@!íÞÞÞÞ@!íÞÞÞÞ@!íÞÞÞÞ@!íÞÞÞÞ@!íÞÞÞÞ@!íÞ€âàÞ ñà $á Ñ.á á ÞÐÑñÐñà ñ íâPé@òà á ÑÑÞðíÞÞpípÞÐñà ÑÑñà ñ âpâíò $þá íà íím@òP % W‰ Š€ – ˜à•Š€ ‡€ Š€ Š€ –p•Š€ – ˜ ^i ‡€ ‡à•‡€ ‡à•˜ ˜ y‰ Š€ Š€ –` Š€ Š€ –p˜–yi Š€ ‡à•– ˜ ˜p˜p˜ ˜ ˜p^©˜` Šp˜ –p˜ ˜p˜p˜–˜ ˜@˜– ˜p•˜ ˜ ^©^©^©^y^y•^©˜p˜ ˜–ŠPа ÐÑñ` ›ÂÝéß žá)žã žûP˜P ÐÝ© –@žï Ÿñ Ÿþ–P ×p àR ÔP ÙP ÙÐ Å.Å@ ×P ÔP ÔP Ùp – Ÿ úû ûà ñ ò !òpÞpÞí€ípÞÞÞ@ííàÞÐÑñà ”Þ€Þ@ííà ñ ñà ñÐñà $ÑÑïà ¡Þíà .ÑñÐñÐâàÞíà ñà òíÞÞ ípÞÞ òpÞÞÞ@é€âpâpÞíà ñÐÞâí@!íÞÞÞ ñÐï ñ ñÐ!ò ñàþ á á !ÑÞpâ !ñà á ñà ñà íà ñÐá ñà ñ Ñá íà í á á !ñà ñà íà íà á ñà ÑÑÑ.á ñà ñÐÞípíàÞÞíà ñÐÑ.á ñà ñÐÞípíàÞÞíà ñÐÑ.á ñà ñÐÞípíàÞÞíà ñÐÑ.á ñà ñÐÞípíàÞÞíà ñÐÑ.á ñà ñÐÞípíàÞÞíþà ñÐÑÞ€ÞÐÞpâÞÞÞp !ñÐñà å!$¡ÞÞââpâÞÐÞÐñ ñà ÑÑÞ ñà ‘í òpÞíà á ñà ñÐÞ á â á íàÞÞm ñð% òíÞC4Þà ñà â ºéà á ñà íÞã0ñà ñ ºíÞ0DãÐápº;â ºí ºñ0Déà ñ ñ C4éÞé0ªÞ Þª›íñà éà éá þñà ñ ºéééà íà 1DÞÞéà í0DÞãà Cä íÞÞâÞCä éÞÐCíà ñP˜P Ðñà íÞ ÊÂ-웲! ÊðmÐÍ` ô Ã;ÌÃ=ìÃ? ÄA,ÄC,Äòž€ „ù–à –à ˜à –à•„é „é Wl ˜ „ùÂï) ûí€ípíÞ ÞÐñà Þ ÞíÞÐñà ñà íÞÐñà ñÐñà ñ ÑéÐÞÐÞÐñà ñÐñÐÑþÞâÐåá ñÐ!íà íÞÐépáâpí€ÞÞÐñà íâpíà ñà ”(í€íÞÐåÑÑÑÞÐá Ñò ípâò .á íà ñà íâÐÑ!éÞââí€ípípÞ€ï ".Ñ!ò !íà òà $á ñà ñà .á ñà á á á òà !â âpípÞ ÞÐñà íà ñà íà í@ípÞ ÞÞÐÞÐ$Ñá á ñþà íà í@ípÞ ÞÞÐÞÐ$Ñá á ñà íà í@ípÞ ÞÞÐÞÐ$Ñá á ñà íà í@ípÞ ÞÞÐÞÐ$Ñá á ñà íà í@ípÞ ÞÞÐÞÐ$Ñá ñà ñ ñÐñà ò ñà ñ â€ÞÞðá ñà á íà ïÐá ñà ñ ñÐåÑñÐÑñ ñà á ñà í€ípÞ€ âÞÞ@âpâà ííÞÞÞÞÞpþÞÞÞíâÐù ¥P!ñÐñÐñà 4zÞéí€âíÞPéâÞ4ÚñÐÑ!ÞépÞÞÐ!âípÞp Þí€ÞÐò .á ñà ípò íí€é€ÞPípâ€ÞíÞÞpÞ âpÞpÞP˜P Ðñ !–à'uhægŽæi®ækÎæmŽæñP–P ÐÝ9xwŽçy®ç{Îç}îç¾,~²‚rçÿ°,~²ÿ°,ÿ°ÿ°~²ÿ°]Lþžû ûÐÞÞÞíà ñÐñ á !.!ÑñÐñ !Ññà ñÐññÐ$ÑñÐñà âÞpípÞ á á ñà .Ññ ñÞí !ñà Ññ !á á ñ ÞÞÞpâÞâ€íð á ñ ñà ñÐÞÐâ âÞÞÞ@íà åá íà á á ÑÞâíà åÑñÐâÞíà ‘ÑÞÀá íà íà $ñÞÞ ñà .þá â Ññà òÞÞpÞ íp íàÞ@ !ñà ñ !!òÐ$á ñà ñÐÞpâpí@ÞÞíà !Ñ$á ñà ñÐÞpâpí@ÞÞíà !Ñ$á ñà ñÐÞpâpí@ÞÞíà !Ñ$á ñà ñÐÞpâpí@ÞÞíà !Ñ$á ñà ñÐÞpâpí@ÞÞíà Ñ$!åá Ñ$‘Þíâ  â í ñà ñ $!þñ á ñ€#Þíà ÑÞípíí ñà ñ ñÞ≋ç-ÞÁxí¶ó†¡¸xí¼Åóæ0^»xíÚÅó†°BqmäÅ{Tâ`;qñÚy‹ç-^:oñ4¦óÏ[¼vââµófa;oí¼µó).ž¸xíÒy‹—Nœ¸xâ≋'N^Æó6Ð[¼vñä‰ûHÐ[Foï>Æó–®Aoñ¼ÅóO\ñ´O;ñ´O;ñ´O;ñ´O;ñ´O;ñ´O;ñ´O;ñ´O;ñ´O;ñ´O;ñ´O;ñ´O;ñ´O;ñ´O;ñ´O;ñ´O;ñ´O;ñ´O;ñ´O;ñ´þO;ñ´7y8%XRÌmü³Ì3Ó\³Í7㜳Î;óܳÏ?ÿ¼O.ûx3P;µãM<í ÔŽ7ñx7âÄ“N;ñx#AíÄ#N<ÞÄãM<$NFÞ´ãM<ÞäM<íxO;ñˆ7íx#N<â äM;ÞÄ“N;‰O:íÄóQ<Þ”$Î@íxÓŽ7âÄ#ÎGñˆ3P;‰7íxÓÎ@í äM;}ä AŒyO:é|äM;ÞÄãM<ÞÄãM<ÞÄÓŽ7âÄãÍ@Þ äM<íÄãM<ÞÄã<µ8ñx8ñx“Ñ;ÞdäM<ÞÄÓŽ7í ÔÎ@íxO;âÄþÓAïx“Q;Þ $N<í ô‘7y7ñ´#í ˆ7â!Žx´Ci‡72"Žxˆ#Þˆ‡7>vÄÃñðF<Úáxx#Þ H;â yÄCòˆ7âá ‚´c ÞG<Ä!x#Þ H;â yÄCòˆ7âá ‚´c ÞG<Ä!x#Þ H;â yÄCòˆ7âá ‚´c ÞG<Ä!x#Þ H;â yÄCòˆ7âá ‚´c ÞG<Ä!x#Þ H;â yÄCòˆ7âáxx£&íðFF¼A$oÄÃñH‡72ÒŽ’x#â‡8äáþxx#âˆ8ˆÔŽx´ÃiG<Úv¼ƒ yAÚ1ˆ#Þˆ‡7âገc Þˆ8âŽx´ÃñðF<Úáxxƒ 툇7âáxƒ íðF<Äñ‡rÈã%G<¼o´ÃíðF<¼qÄÃiG<Úo ÄíðFMãxx#Þˆ‡7JÒo´c Þˆ‡7âáx´#â H;âÑoÄÃñh‡7ÒŽx´ÃâG;ÄAo ÄòhG<Äo´#∇7ÚvÄÃG<Äoˆ#Þ H;âvÄñð†82ÒŽx£ñ‡<âvþ ¤PÆÚ¤#ŠˆY;âáxx#Þˆ‡7âáxx#Þˆ‡7âáxx#Þˆ‡7âáxx#Þˆ‡7âáxx#Þˆ‡7âáxx#Þˆ‡7âáxx#Þˆ‡7âáxx#Þˆ‡7âáxx#Þˆ‡7âáxx#Þˆ‡7âÑŽ´##%À„2þР!7¹Ê].s›Ë3Yüc ÞøH<ÄAoÄCñhG<ÚAqÄ£ñF;â!ŽxÈCñðF<ÞÑŽxx£ñF;"qÄ£ñh‡7Úo Ä‘‡8ˆäŒˆ£%‡7â!ŽvÄ£ñðF<Úo´þ##òðÆ@ÄAo0FÞ‡8âxˆ#Þˆ7ÚQo|d Þ ˆ8ä!yx#í¨‰8â!q ÄñF<¼v DÞˆG;âáxˆ##íȈ7Úát ÄñhG<¼oÄC∇8âáxˆ##Þˆ‡7âátÄ£ñðF;J"ŽvÄÃñG<>’qx#Þˆ‡7âÑŽx´c ÞhÇ@¼ÑŽÈCñhG<Ú1qxƒ íˆ8âÑŽx´#툇7âáv”Äí H;âáxx£%ñF;ÒŽxx#ÞhGI¼Ñ‚´#Þˆ‡7ÚQo´ƒ 툇7âáv”Äþí H;âáxx£%ñF;ÒŽxx#ÞhGI¼Ñ‚´#Þˆ‡7ÚQo´ƒ 툇7âáv”Äí ˆ7âx£ñF<¼1vx£ÞhGIÄvÄÃñG;âáxxƒHí¨‰7âáxx£ñ‡72"Žxˆ£∇7âá¼î툇7ÞÑŽx#ÞˆG;"Žx´c ÞˆÇGâxc âˆG;ÒoÄÃòðÆ@¼o´ƒ íˆGÀTŠÄ£ñð†<Ä!qÄ£ñhAÚáxx##Þ ˆ7âáx#âˆ7âáx´#Þˆ‡7ÚqÄ£þéH;âÑŽx´#툇7ÚqÄCÇ@¼Ñ"µ#ÞH;âÑŽÈÃñÆ@¼Q¦vdÄñðF<¼oÄ£ñðFMÚo´#Þ(I;¼vÄÃ%À„2þІÄÃñPÄ?öáx´#íˆG;âÑŽx´#íˆG;âÑŽx´#íˆG;âÑŽx´#íˆG;âÑŽx´#íˆG;âÑŽx´C<´C<´C<´C<´C<´C<´C<´C<´C<´C<´C<´C<´C<´C<´C<´C<´C<´C<´CÈÂ>ØBþö`.ø`.ØB.ø -ä‚,ØB.ØB.È‚,äBÚB.HaÊ‚-äBJ¡-ÈÂ+ÈB.ØÂ.ô`.ì‚-ä‚-H¡J!ÚB.ô ,ØB.ìB6á.H¡æBJaJa.Èæ‚-ä‚-ÈB.ØB.ô`.ø`.ô ÊBæ‚Ja¾B.ØÂÚÂ.ØBÚ‚,ØB.ô`.ô`.ô`.ØB.ô ,Ø‚,䂿‚-ä‚ʂʂ-äÂ.Haæ‚-¼‚-ä‚-äBæ‚-ä‚-ì¡J¡-ä‚-H¡,Ø‚,äB6á+䂿Â.H¡-ä‚,Ø‚,Ø‚ÚÂB¡ú`.a.øþà+ØÂ+H¡B¡,¼‚-ä‚-ä‚-È‚-Pa.Ø‚,Ø‚,¼‚-ä‚-ä‚-È‚-Pa.Ø‚,Ø‚,¼‚-ä‚-ä‚-È‚-Pa.Ø‚,Ø‚,¼‚-ä‚-ä‚-È‚-Pa.Ø‚,Ø‚,¼‚-ä‚-ä‚-È‚-Pa.Ø‚,Ø‚,¼‚-ä‚-ä‚-È‚-Pa.Ø‚,Ø‚,¼‚-ä‚-ä‚-È‚-Pa.Ø‚,Ø‚,¼‚-ä‚-ä‚-È‚-Pa.Ø‚,Ø‚,¼‚-ä‚-ä‚-È‚-Pa.Ø‚,؂ʂ-äBæBÊ‚-ä‚-䂿Bî‚Ê‚-ì¡,äBæ‚-äB6aÊ;æ‚-ä‚-ä‚þæ‚-È‚îa+¼‚,؂ʂ-ìa.ÈÂ.ô`.ØÂ.ô`.ØÂ.a.ô`.ô`.@a.ìÂÊ‚ÚB.á+ØB.´<ÄÃ#”À;‰8ÄC;xC;xÃ@´CÐÌ>ÐÌ>üÃ>üÃ>üÃ>ÔÌ>ìƒÌìÃ?ìCÌìCÌìCÌìÃÌìCÌìÃ?˜©Ì˜iÍìCÌìÃ?ìƒÌ˜)ÎìC̘é̘é?ìƒÍìÃ?ìCÌìCÍìƒÌ˜éÌìƒÌìÃÌìÃ?˜é>ÈŒ™þÃ>üÃ>ÄÌ>ÄÌ>ÄÌ>ÌÌ>üÃ>ÌÌ>üÃ>ÈÌ>ÈÌ>üÃ>ÌÌ>ÔÌ>ÄÌ>ÌŒ™ÊŒ™þÃ>ÐŒ™ÆŒ™þÃ>ÈÌ>üƒ™þƒ™þÃ>üƒ™ÆŒ™ÒŒ™ÞÌ>ÔŒ™êÌ>ÄÌ>üÃ>üÃ>üþæîÃ?ìÃ?ìCÌìÃ?ìÃ?ìÃ?ë?ìÃ?ìCÌìÃ?ìÃ?ìÃ?ë?ìÃ?ìCÌìÃ?ìÃ?ìÃ?ë?ìÃ?ìCÌìÃ?ìÃ?ìÃ?ë?ìÃ?ìCÌìÃ?ìÃ?ìÃ?ë?ìÃ?ìCÌìÃ?ìÃ?ìÃ?ë?ìÃ?ìCÌìÃ?ìÃ?ìÃ?ë?ìÃ?ìCÌìÃ?ìÃ?ìÃ?ë?ìÃ?ìÃ?ìÃ?ìCÌìCÌìÃ?ìÃ?ìƒÌìCÍìƒÌlêÌìÃ?ìC̘iÌìƒÍìƒÌìƒÌìÃ?ìCÍìCÍìCÍìÃ?ìÃ?ìÃ?ìƒÏìÍìÍìÃ?˜é?˜)ÎìCäƒ<”B ÄC:ă7þ|D<´Aȃ8ă7ă8ăäÂ>Äc „8ˆC<©8D;ÄC;ă8ă8Ä‘D;ă8 ÄG „7|DÊàÀ>|ˆHãû€ò–¹Üe/ÌaþÇ>r±x´CñF<ÄA¹vP®Þ`ˆ8^—Žx´ÃíˆG;*ÒŽx´ÃiG<Òá †¤Þ‡<"Žƒ¤#ñF<Äo´ãuíø“þ7â!yÄ£™óEÚqă!ò†<Ú!Žxˆ#íHG;¼Ñod®IG;¼qq@´Þ8H;ÒŠ0Òí8ˆ7ÚávP¤ñh‡7ÄAqă!iÇAÒQ‘tTÄíˆG:ÄoÄ£âøCÒQ‘vd®Þh‡7ÄqoÄ£∇7"ʵÃñðF<¼Ñoˆ#ÞˆCâÑŽt´ÒÞ œ7âÑŽx´#퀴7(çx´#íHG; í Êy#íˆG;ÒÑH{ƒrÞˆG;âÑŽt´ÒÞ œ7âÑŽx´#퀴7(çx´#íHG; í Êy#íˆG;þÒÑH{ƒrÞˆG;âÑŽt´ÒÞ œ7âá †Ä£IGEÚéx¤#í HM*ÒŽx´#∇7Ú‘9†ˆã Þˆ‡72ç‹¶#í ˆ7âÑŠ´ã âˆG:Ú!y´Cò8H;âáx´ÃñðEÚávxCñHG;¼!xx£"í ˆ8ä჈CñhG<ÚyœBò8H;â!Šx#íðF<vPÄñðF<¼qÄÃiG<¼!vÄÃñðF<ÄqvxCñhÇAÄvÄ£Þ8ˆ7äqÈ£ñð†<ÒqÄÃâÁâ¡â¡âÁ(‚!âþÁÚÁ(BÚÁÚA*BâÁÚÁä!ÚÁÚÁÂÚÁÂäÁä"Úá ¼AâÁÚÁÚÁÂB(¢¡þ  ¢Ò!Á7¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼"¼!BâÁâÁÞ!Bà”áÚ@Ìž `öA8öA W‘[Ñ}Hö¡"ÚáOþ¼!»Ú!Ä¡¼¡(§âÁâÁâÁÚ!Ú"¼!¼¡¼!âÁ(ÂâÁâAÄ!¼¡(¢&‚!(Çn1¼!¼!âÁâ¡*ÂâÁÂÚ!¼¡¢âá"¼!Ú!s¼¡âA*ÂâÁâÁjâ ¼AÄ!"j"¼¡¼!âA(BÚá ¼¡âÁBÚ!¼"Â"Ä""¼¡âÁ"ÄÁÒ!¼¡&ÂâÁÂ2§âÁÚ!Ä!ÄÁâÁâA¼!¼!¼!´"säAâ¡*¢þâÁâÁþÄ*¢âÁÚ!¼!¼á Ä!¼!¼¡âÁâÁâÁâÁBâÁâÁÚ!¼!¼!¼!¼á Ä!¼!¼¡âÁâÁâÁâÁBâÁâÁÚ!¼!¼!¼!¼á Ä!¼!¼¡âÁâÁâÁâÁBâÁâÁÚ!¼!¼!¼!¼á Ä!¼!¼¡âÁâÁâÁâÁBâÁâÁÚ!¼!¼!¼!¼á Ä!¼!¼¡âÁâÁâ¡âÁÂâÁÒ¡¼!â!â¡&BÚ!¼¡âþÁÚ!Ä¡(¢Ò¡¼!¼áO"Ú!ÚÁâÁÚ!¼!Ú!¼¡¼!¼!¼¡âÁj‚"Ä¡¼!â¡â¡äAþÄÚ"¼á ¼á Ú!sÄ"¼á ¼¡âA¼!(‚!ÂâAÚ òáJ âÁ(¢âÁBâÁâA¼!âÁB¼"Ú!ÚÁÚ!Ä¡â¡âÁâ¡â¡â!*Bâ Ä¡‚!*¢â¡Â Êâ¡(ÂâAÚAÄ!¼!¼AÄAÄ!ÚáÚ!äA*ÂþÄ(ÂÚ¡"¼!þ¼!¼¡ÂBÄ!â Ú!¼!¼¡0¡þ  ¼AâÁâA|£þÄä¡"¼A*Âä¡"¼A*Âä¡"¼A*Âä¡"¼A*Âä¡"¼A*ÂärÚÁ*Â*Âä!ÄAJÀŠáÚÀ7V`–`vþ`Ôa!.Øa""ÀîÁj  àö¡`?dCVdG–dKÖdvraÚÁÂâÁ"Ä!BþÄÚÁÚÁÂ(ÇÄ!¼á Ú!ÄAâÁâÁâ¡â¡âÁ*B¢&ÞÁÚ!þ¼áãÁâÁ¢ÞAâÁBä!Ú"¼¡¼á Ú!¼r¼!¼!´â ¼!¼!¼!ÚÁ(Çâ¡â¡(B⡼¡þ¤ÞÁâ¡Þ¡"¼á ¼¡Â(ÂâA(¢ÂâABþÄâ¡B*Âäá Ú"ÚÁÂâ!¢¼!¼!¼!¼á Ú!ÄAâ¡âÁä!Ú!ÚáOÚ!ÚÁÚÁ(BâÁâÁâÁ(¢¼!¼"Ú!ÚA(¢â¡âA*Âä!¼"Ú!Ú!Ä¡"¼AâÁ(¢âþ¡âA*Âä!¼"Ú!Ú!Ä¡"¼AâÁ(¢â¡âA*Âä!¼"Ú!Ú!Ä¡"¼AâÁ(¢â¡âA*Âä!¼"Ú!Ú!Ä¡"¼AâÁ(¢â¡âA*Âä!¼"ÚA^GäAâÁâÁâAâÁ(¢Â¢¼!Ä!ÄA¼!¼!¼!¼!ÚÁâÁ¢¢â¡âÁ(¢*¢âAâAâ!¼¡"ÚÁâÁâ¡â¡ÒÁâÁÂÚá ¼á ÚÁâÁÂâ!â¡&⡼rÄ!þ¼!jÂâÁäAÚ ä¡JÀâÁÚÁÄá âuÞá ‚"ÂÄA*¢&â¡Ä!ÚÁÄ!¼!ÚA(âÚá ¼!Â⡼Aâ¡¼á ¼!¼!¼!¼á ¼!¼¡¼!ÄAþÄþ¤â!ÚÁ(ÂâÁâÁâÁ(¢¼á Ä!¼!¼!Ú!Ú!Ä!Ú!Ú!Úá Ä!¼!Äá Òá J”áÚ "¼þaâÁÚÁÚá ÂÚá ÂÚá ÂÚá ÂÚá ÂÚá ÂÚá ÂÚá ÂÚáþ ÂÚá ÂÚá ÂÒ!¼!Äá ¼!¼á ¼"Ú!äAJ”áÚàdCvÀþÁ  Jq >àÔaJqZàîÁLîÚ±²#dea(Bâ¡â¡2§âÁâÁäAäAþÄâÁâ¡âA¼!ÚÁ*¢(ÂÚ!Ä¡âÁÚÁ(ÂÚ!Ä¡¢äAÚ!Ä!¼A¼á ¼rÚ!Ú!ÄÁâÁ(¢¼!Úá ¼¡¼!¼AÄáO‚"Ò!¼"¼¡¼!âÁâÁÚ!¼!äA(ÂÚÁÚþÁâ!âÁÚ!âÁâ¡ÂäA¼¡âÁâÁþÄÚ!¼!Ú"äA¼¡âÁB¼"¼!¼!Úá ÄÁÚÁÂÚ"Ä!¼á ¼!¼!Úá ¼!Ú¡"Ú!Ú!ÄÁÚ!¼¡B¼!äAâÁâ¡â¡âÁâ¡Â(¢â¡Ò!ÄÁ("âA¼!Úá Ú¡"¼á ¼!ÄÁâ¡¢*ÂÂâA¼!Úá Ú¡"¼á ¼!ÄÁâ¡¢*ÂÂâA¼!Úá Ú¡"¼á ¼!ÄÁâ¡¢*ÂþÂâA¼!Úá Ú¡"¼á ¼!ÄÁâ¡¢*ÂÂâA¼!Úá Ú¡"¼á Ò¡"¼¡¼!¼¡<*¼¡¼¡âÁ¢2ÇâÁâ¡¢ÂâÁâA¼!¼á ÚÁÚ!¼¡âAþDÂÚ!Ä!Ú!¼!B¼á ¼á ¼¡¢¢äA¢âAâAj‚"ÚÁÚrÄ!sÚ@äáJ s¼¡âÁÚ!¼"¼!ÚÁ"ÚÁâA‚!¼!¼!»¢2çÂâA¼¡âÁâAâÁBþ¼á ¼¡â¡äA"âÁÚá äA*ÂâÁ*Ââ ¼¡¢&äÁ(¢â¡¼¡(G¼á Ú!Äá Ú!¼!´‚!(¢"ÂJÀ”áÚ ¼á ÒAþa*Òâ !Òâ !Òâ !Òâ !Òâ !Òâ Ú¡"¼!¼AÚÁâÁâÁâABJ@ŠáÚ@²vÀAúA`þaСöÁÀ7ìÈaú!àùÏýÓ`÷!ö!B⡼¡¼¡¼!¼!¼þáu¼¡¼ âÅkÏ›@íÄÉóÏ[¼ví¼lwð DoÛ lç-^»xâ* l'Ð[;oí¼Å¯7yñÚÅkç-ž8yÞây«Øî Äpñ ¾óÖÎÛAoñ¼Å'¯b;íâµÑ›HoÅÅKÏ[ƒ€ÖpÇ-÷Üt×þm÷ÝXËòÏ;$ŽHÞÄÓŽ@ÞÄã Dñx#8yO;ñxÓŽ7í$7‰#P;ñx7ñx7íˆ$N;âäM<íÈ#N;ÞÄãM<âxÓŽHíÄã@íÄÓÎAí$8ñx7ÅãM<âäM;ñ´#<âxÓN<íTäM;Þ¤ÓN<ÞÄãM<ÞÄ#ÎAÞÄãÍAÞTÔN<íÄÓN<Þä D‰#8‰ãM;Þ8ˆ7ÚvD‰‡8D"ŽvT¤iG<¼qo¤ñðF;âáx@$í¨ˆ7âvÄÃ툇7âávÄ£ñð†H¼ÑoÄÃñ€ˆHþÄáx´#Þ‡8âávÈCñhG<Ú!qÄ£ñ‡7âáxÈCñhG<Ú!qÄ£ñ‡7âáxÈCñhG<Ú!qÄ£ñ‡7âáxÈCñhG<Ú!qÄ£ñ‡7âáxÈCñhG<Ú!qÄ£ñ‡7âáxÈCñhG<Ú!qÄ£ñ‡7âáxÈCñhG<Ú!qÄ£ñ‡7âáxÈCñhG<Ú!qÄ£ñ‡7âáxÈCñhG<Ú!qÄ£ñG<äáxxC$ñðF<¼yˆC â8H;âáƒx#ÞHG<¼ÑŽŠ´£"툇7þâxˆC Þ‰7Dâ x#ïˆG;âá x£ñð†@¼ÑoTÄíHG<¼qÄÃñG<Ú!qÄÃñG;âáxx#Þˆ7âáxx£"âˆ8âÑŽx´CÞhGä‘S” âˆG;âxxãñh‡<ÄÍxx£ñðF;âáxˆ£ñxG;"Žx´#Þh‡7âáxxã ÞˆG;âñŽv"ñ‡7âÑŽƒx#∇7â!x£Þˆ7âá ‘ÈÃñF;¼oÄCÞˆ‡7ÚqÄÃiG<ÚyxC òðF<ÒÑx#Þ€ÈAÜþo´C íˆ7âÑŽxx£˜(ÆÚ qÄÃñPÄ?övÄÇ@¼!qć@¼!qć@¼!qć@¼!qć@¼!qć@Ä!’vxã ‰G;ÄQq”ÅøCð·}üè‡;`5u àîÀ?öaãû†Ìá{øÃpÛG.þ!Žxx#Þˆ7âá ´#Þˆ7ÒŽŠx#Þ8ˆ8äoÄÃi‡7âá&oÄ£ñð†<¼!xx£Þh‡7â xC$íI;ÄoÄ"ñðF<Úá þqÄÃñh‡7ÚQoDiG<Úñx#íðFEÚ!Žx´ÃG<¼vÄ£ñhG<ÜvÄÃñðF<¼o´CñG<ÚáxxC âˆG:¼!o´C âG;¼qˆxC â8H;âáx´ã íðF;ÄoˆC Þˆ‡7âávx#Þˆ7âÑŽx´ÃñðF<¼!o¤ñFE¼!x#íð†@Ä!oÈ£ñhÇ;¼o4U$í8ˆ7âÑŽx´#ÞG<ÚoTÄñhG<ÚoÈ#툇7*âx´#툇7ävÄÃñF<ÚvþÄÃòˆG;âáŠx#íˆG;âá yÄ£ñðFE¼vÄ£ñð†<âÑŽxx£"ÞˆG;âÑŽxxCñhG<¼QoÄ£ñhG<¼!x´#Þ¨ˆ7âÑŽx´#Þˆ‡8°ÙoÄ£i6½vx#Þˆ‡7âÑŽxˆã íð†›¼ÑoÄ£Þˆ‡7°ÙŽxx#Þ€H<¼!ˆÄ£iG<¼qˆÄñh‡@Ä!oÄÃG<ÄvÄòˆ‡8â჈Câˆ7âá yx£"íˆG;¼v`ÓMñèíÊ!R”à ïHG;âÑŽx¤Ãâ8ˆ7ÄoÄþÃñÇAÚQ‘vÄCñ‡<òަz#Þˆ‡7âáxˆÃMâ8H;Äo´#Þ8ˆ8äqqÈ£ÞÞ íÞÞ íà "á !Ññà ñÐÞÞ íà ÑñÐâ ípÞÞ ñÐÞ áà ñà Ñâp%€ ÊðmPÞ€ ÓñÐÑñÑñÑñÑñÑñÑñÑñÑñÑñÑñÑñÐá ñà íâíÞñ ‘ï %ðÊðmþbXƒ°êPV£°ê0û@0-ð÷°&„˜‰š¸‰Y# ÿ òà Ññà á ñà ñÑÞÐñà ñà á á ñÐñà ípââpíPÞ ò ñÑá ñà ÞÐ!ñÐñà ííÞ òà ñÐÞPí ÞÞÐá á íí ÞÞò á ÞâÞíípí ÞPíò á ñà ñà ò ØÔñà ñ ÑÑÞÞÞÞÞþPíòà íÞ í Þ íâíÞ í ÞâÞ Þíòà íÞÐTíÞÐéÞÞÐñà íà ñà ñÐñà Þ âà ñà ñÐÑñà íÞ âà ñà ñÐÑñà íÞ âà ñà ñÐÑñà íÞ âà ñà ñÐÑñà íÞ âà ñà ñÐÑñà íÞ âà ñà ñÐÑñà íÞ âà ñà ñÐÑñà íÞ âà ñà ñÐÑþñà íÞ âà ñà "á á !ñà ÞÐÞÞÞPíPòà ñà ñ ââpÞPÞÐÞÞâÐòà ñÐñÐñà ïÐñà á íñà íà ÞpÞPíÐTâÞpíí Þ í íéâpÞÐñà ñà ñà Qm òð%à íà éââà á&Ñòà á ñà íÞÞípíÞñà ñà òà MÕï qí í Þpíà !âpíþÞíÞâ Þá ípÞPâíÞÐá ñ Þ íâÞí€Mí íÞâÞÞžP Ðíà ‘Šðûà âÞ!ñà ñâÞ!ñà ñâÞ!ñà ñâÞ!ñà ñâÞ!ñà ñâÞá á òÞ âPí Þáà ñ %` Åðm ‰ûðèû ðaãÐî0³öP P?°œ²"Ûaû ûà þï qííà !ÞPíà á Ñ! €È0ípÞà&ÞÞ ÞPïà ñà ñà á á á "á à ÑñÐñÐñà ññà ñà Î0ÞÐñÐñ ñà ñà âÐá  ÎPÞà á òà  Þ âÞâ á ñÐâéà ñÐÞÞR€ á "á "ÑñÐÞÐÞÎ0â ñà ñÐïà "Ññà ñà ñà ñÐñÐñ ò á ñ ÑÞà  â þíà âÞÞpí Þ íPÞÞÞâ â€MípÞÞÞ íðñÑñÞPÞQíéà á ñÑñÞPÞQíéà á ñÑñÞPÞQíéà á ñÑñÞPÞQíéà á ñØÔÞÐá ñà ñÐ!!òÐá ñà ñÐÞÐÞíÞ Þ Þ ÞÞPÞ Þ Ññà âpÞ â Øä ñÐÞ ÞÞþíà íà ñà Ññà ñà ñà ñà Ññà ñà ñÐÞÞí ííà !á ñà òâÞÞm ¤PÑØä&âé"á á ñà ñà ñà íà ñà á ñÐñ ñà Ñéà ñÞíà ñÞÞ ñà âÞíÞ Þí íí M%ñà ñà ñ ñà â ÞÐÞpâpÞ í nâ !òÐÑÞÐÞÐâí Ø”Q˜  ÐÑéŠþ@0Ññà ñ ñÐñà ñ ñÐñà ñ ñÐñà ñ ñÐñà ñ ñÐñà ñ ñÐñà ñ ñÐñà ñ ñÐñà ñ ñÐñà ñ ñÐñà ñ Ñá ÑñÐÞÐÞÐñà ØT˜  Ðxƒ7ûp5û€5a³}]؆}؈M7²ðá ñà ñÐÞâÞÞ #°Žà á ñà á íÞÐÞÞ`° â {ÞÞ ââé ÞÞòà ñÐñà í íà þá ñÀ "à íà Î0á ñ ÞÞÞÞâÐòà ñà  Þ ò "á í  ÎÑñÐÎ0ñà ñà Må ïâ Þæ@ËÐñÐá ñà !ÞÞÞÀ " Þà  ÞÞé ÞÞâÐØ$ÞpíÞÐÑá í æÐÞÐÑÑá íÜ á íÞñà ÑñÐá ñà íâÞÐØä á ñ í ÞÐñ á ñà !í ÞÐñ þá ñà !í ÞÐñ á ñà !í ÞÐñ á ñà !í ÞÐñ á ñà !í ÞÐñ á ñà !í ÞÐñ á ñà !í ÞÐñ á ñà !í ÞÐÞpÞÐÞÐñÐññÐñà á í íÞPÞíPÞÐñà ÑñÐñÐñà "á íà qé íà íà á ñà íÞPÞÐÑÑñà íà ÑñÐñÐñÐÞÞíí í âþà ñ Þ QíÞíâÐò¥PíâÞ âï ÞÐÞÐá !âpí íÐTéÞâí í ííí ípÞÞÐñà í âÐá á !ÞPàñà&á á í ââ âÐÞò ò Øä n"Þ–P ÐÞ ñà ñ ÓâPí ÑâPí ÑâPí ÑâPí ÑâPí Ñâ ÞéÐñà&Þ â ñÐñà&íà þñ % ÅðmØV³V6x³ÒŸýÚ¿ýY³¹°Þí Þâ ííŸ0`p á 0ÐÑñà MÕñÎ0íÑÎ[<‚ ¦3èMÁtÃlçMœ¼vÓ¥s6  ³Þâµ3Ø® 8yã9à-ž·xí z#(Nž7oñœ ðÖN\h‡3qÈȇ3g  ñhÁ ¾aŽ  Þ¸Á °aðÀÎ.¢ ÌBç@E<ÚAt8cÞ H ^ðhl€ßp†ˆðtˆ#툇3@“x8#,ÀF8¨Ptx£/À†9pÀÈÄÃñpFˆq´Àñp†ˆÐqÄ£/øÆ36Àƒx8cíðF X€sÜ€i °qNœÃðF;¼dñðF<ÄoÄCñþðF<ÄQvÄ£â H; âvx£éðF< v¤ñh‡7âÑoÄ£ÞˆG;âÑ‚´#íðF<Úáx´ÃñhG<ÚAvÄ£ÞˆG;¼vx#íˆG;ÒŽx´Ãñh‡7âÑoÄ£ñhAÚvx#íðF<Úáx´#í H;âÑoÄ£ÞˆG;¼vÄ£iG<Úáx´Ãñh‡7âÑŽx´ƒ íˆG;¼vx#íðF<ÚvÄÃiAÚao´Ãò dÒŽ‚´#âˆG;¼‚xƒ í(H;LÒqÄÃñð†A ã qÈÃñðþFA¼oÄ2ÞˆG;âÑoˆCñhGAÚá “´#Þ¸”7âá ‚´#éh‡7Lâ qÄ£ÞG<¼!yÄÃñðFLPL¨êCÀEÀ„ª>LPL¨êCÀEÀ„ª>LPL¨êCÀEÀ„ª>LPLPL8LÀEÀK8LPLPÃVL¨jæìCÀEÀ„G(LPþ†?hƒõ:ÐíÑ&íÒ6íÓFíÔVíÕfíÖví×6íó’…}åxð†vˆ‡è‚xð†xð†tàÐ…xUP€xp†(gop†ˆ‡op†ˆm€e‡pø…Hn€vˆ‡vH†øg€xh‡tàXqh‡xHqˆ‡v g€vð†xp†ˆ‡vˆg€tàXoho(qh‡xpX†vˆUPoà†ˆoH‡d(€xp†ðg€xÐXoˆ‡_€vàX†vð†xH‡vp†ˆoH‡xðy‡8Pq ˆvðgohnþ] UP€op†0 qðgoˆ‡op†hoˆg€tàX†vð†xH‡v yøg€eð†tPðg‚hn€e U0€op†Hn€ehoh‡xhn ]ð†‚p† oho0 oˆoˆoh‡Ki‡xð†xH‡vð‚h‡xð†x‡‚ð†xð†vˆoqˆoˆo oˆoˆoh‡xðy‡xð†xð‚ð†xð†xð†vˆoqˆoˆo oˆoˆoh‡xðy‡xð†xð‚ð†xð†xð†vˆoqˆoˆþo oˆoˆoh‡xðy‡xð†xð‚ð†xð†xð†vˆoqˆoˆo oˆoˆoh‡xðy‡xð†xð‚ð†xð‚‡vˆo qx‡~noH‡xð†vx‡~–q oˆoègo oho(qðƒð‚o oˆ‡vˆq(ˆvˆohoˆ‡vˆqˆoˆohoˆoh‡‚èçxð†‚‡Kñ†xð†~&oˆoˆoh‡xð•'oˆ‡vð†vð†vð†vˆqx‚hƒð†xh‡xèçwèçx‡~öy‡vøyˆ‡R(xðþ†xh‡xhƒð‚ð†xð“qˆo(qˆ‡wh‡x‡xh‡xoh‡‚Pùvˆ‡v qˆoˆ‡vˆo ˆvˆ‡vˆ‡v o(ohPö†vˆoˆ‡v0qˆyð†v(oˆo¸qH‡wh‡xð†‚o ˆvð†vð†xð†xð†vˆo(y‡xð†xèçxh‚H‚o%0ûÓ¦·xñÒ)úçpÄ}ÿ"BüGqß?ŠxàÁÛ6Œ¾ÿQt7àâ¿‹ÿ.Rü×oß?ˆÿ":Üçpß¿~:ûíûG1„¥bÚ8,êpÒ¤J—2mêô)Ô¨R§R­j•þé ‡ûrí‹—.·ví¼Åk§Ð[¼Oè\  Ƹ/¾iÛÀã›3é¼Ås6 ž³ PØ‚Å7s´;× ‘·s8 Äs6 Âv-ŒLóV“·vÞÚÅ‹`Y»xδóÖΙ€xíZ¹Ö®'q ½ÅsàÅ7s|Ä;×`Sºs8 ´s6 ž³ñ¼µ0"ïÜ ñÚÝ`-^5NÞœ POÛ¥qñD)ðOœ¼xÎ(l×âÅ7mxÄs6À[<Þ˜7,£3ÄÓN<ÎO;7°€M<Õpâ7æ9# ßh³ñ83€7 µÓ Øh³ñ83€B7°ðþM;Õp‚a ,|“N)âp#À2æqƒÅ7Þ(ä<æy7íxO;ï˜'Ž<ÞÄ#΀byO; µ3`<íÄ#V<ÞÄÓŽBí€ÙNÿ°áL2‰^èÀnÈÎÆ?ûüûØóÇ?à@  Í?ølFç=þÌ:DÿìãÐ>CôÏ>]ôÏ>ïSÂ#ÊüÑÆè0>ùå›>úé«¿>ûí»ÿ>üñŸ¿Bç²üãM<â èM;ñx7ÒŠ`¸„7¢Qƒ à߈‡3 o8cípÆÄá g ÞˆF 9 é Å,‚2 ΀8¼o˜ @ž0 oÄC @#œ1qÄ£Î@;¼a$$@xB<¼ÑŽx´ÃÄ o¤ã¤¸€DP†´Ãð†3Žx¬ƒ"Aàx˜ žÐg Þh7F@€hàñhþG<Ä⌴CÜHAðƒo|ȇ7â!–x´#RáŒÄCÞpƼs a€ÀÌ#Žx8c‚˜€~ào8Cñh†¸‘àÞh‡3o˜ ž mÔ@ xB¤ 0"¿6âáv(ÄñðF<¼1 q¤£âh˜¼o¼Ã<ïhG<¼ÑŽxx#d툇8Ú¡vÄÃ툇7üq´C!툇7Úoø3âh‡BÚo´#Þðg<ÄÑ…´#ÞhG<¼áÏxˆ£ iG<¼ÑŽxxßñG;ÒŽxx£ñð†þ?ã!Žv(¤ñðF;âá ÆCñ‡7Úo˜GÞh‡yÄáxxÃ<âPˆ7ŽvÄCÞˆ‡8âát¼ãXò‡BÄoˆ%âh‡7âá …´LÞˆ‡8Þ!–y£ ñ†<¼¡oÄ£ñxG;â!oÄ£ñ‹BÚo´Ã툇7âá …´ÃñG<¼oÄÇ7â ±x£eÞh™y¼oÄ£ òG)JvÄCG;â!…ˆC!íðF<¼¡yˆÃñ‡y¼Ñ…´C!ÞPˆ8Þ1 oÄÃæyG<Úw´#âHG<¼vÄ£ ñ˜þ¼!o(ÄñhG<ÚaoËñ‡BÚažv Èí“<ÄÑŽxˆLí07Ì#o´ÃbyG;"ŽtÄ£ñhG<¼QLãmð†8âáx("|6Dh0 cHÃÒ0†4‚l i#4øDÀAŠ€ùÈÇ9¨à€ì Ç>D¡€{ܸË^îÜ>J€‰bü¡ 6^ šÓ¬æ5³¹Ín~3œã,ç8Ï!ûÈÅ?Ìãv˜ÇæiG<ÂvÄC ñ†BÚo(ÄæK<Úao´C!bQˆ*Ðo(Dñ‡7ÔŽxx#ÞˆG;ÒávxC!ÞˆG;þ"ó+RH:¼¡q(äñHG;âñ[…´#íÀ7Ú1 oÄÃñG<Ú!…xC!âˆG;¼ao˜§ I‡7Äâx´C!íPˆ8ä¡v˜Ç iG<ÚñoÄ£ñ‡<âá–yC!âˆG;0o˜Çˆ‡8Ä1 oˆCñð†yÄ!x¼Ãh‡BÞt|·ñG;ô•µÃ`j‡7âá‰#Þˆ‡7âx¤ÃíðF<Ä¡q HñhÇ;ÒoˆC!â8âÑŽw(¤Þ‡BÄ1 qÄ£ïPH;¼!…ˆc@âˆG;Þ¡vxC Ç€Äþv¼C!íð†8"މ#íx‡BÚá q(DG<Úñ…´ÃâPˆ8$Žx´ã`òF<¼v˜§Þ‡<â!yx#툇Xâ!Žxˆ#â08âÑŽxˆ#íG<Ú¡oÄ£ñG<¼¦vxC i‡7Úo(DñðF;¼ažv ¨ÞPˆ7ÚŽxxCæy‡X¼!–w˜Gj‡7âx´#툇7â!o´C!âPˆ8âxx#ÞPˆ7ÄoÄÃñðF;ÄC;(„8´A>ÄÃ#”€8(D;¼C:xƒB‹7(„Xˆƒü!(‚Î>”€"(ôAøôƒü¬"+¶¢+¾",žRtŽ,üƒ7ă7(„7ă7(„7´C<ˆCü8À>¨Ãü8À>üƒ?PÁ ìÃ?ì>l€ðÀ>«ºîC (B1üAŒÎ>üÜÕë Ä€?¬@ øšÅ€?Ø+À¬À®ù8Ä>äÂ?(„XÄC;ÄC;˜‡7 H;xƒB´ƒ8ÄC;ÄC;(„X˜‡8 ˆ7ÄC;ÄC;ÄÃ1\ € P’BxC<´ƒ7˜‡7ˆ…7ÄC;(„7 H;˜‡7ăX¼C;˜G;xÀ|E;xC<´C<¤C<´ƒBˆÃ€xC<ˆE:xCô‚¤R Ä=¬@ù¬@ Ðà ĢMß4ü$EçÈÂ?xC;ă8ă8ă8xCüÃ>ü8þ@?¨Ãè8À>ô>Pt.@t@>hýîC `B1üAŒÎ>üÚþ ÄÀ? E@‚9¤Ùø¬À ¬@ ôƒRœÀ Ä@?¾æo>çw¾ç¯ùœ€CìC.üC<ˆC<¤¾ê·C<´Cê{ƒVp‚D”c4¸E1>ƒ„¢_'ØÇªõ„®.–±uìc!ÛÕk­€TûÈÅ>¼xx#ÞÐl<ÚqÄÃñð†fÛյßÝÑg?ëxìH³Þˆ‡7Úáx´ÃñhÇ;¼ÑoþÄÃ;Òl;âÑoh¶°m‡7Úáxxã³Þ€­fÛ¡ÙiÖŸ]7âáyC³Þ€m;¼o|Öšm‡f½vx#íð†f½¡YqÈÃñG<¼ñÙÂiÖšõF<¼oÄC×m‡7Úáxx#ÞЬ7®qh¶ñX7âáx¬vuÞÈðê>ÛŽx¼ÃñhÇgÅ!oÄÃñðF<¼vhvuÞÐìŽÞ¡ÙvhÖñh‡8âá Íz#â‡7âá Øz#íG<Ävx#∇7Úáxˆ#ÃñðF<Äo´ÃñG™½qÄÃíðF<ÄQfoÄþCñðF;¼q”ÙñG<¼ÑoÄCeöF<Äo´ÃñG™½qÄÃíðF<ÄQfØz#툇7âá Øz#툇7®ÛohÖñðÆgÅvxC³âˆÇ޼Å£ñð†f½¡YoÈ£Þˆ‡8âÑÍz#íЬ8â±#oÄ£ÞˆG;âÑqÄ£šm‡fÛñYoÄÃñ‡<4ÛoÄcGñh‡fÛ‘aoÄCšlÛvÄCñðÆgÛ‘ŽvˆC³íˆ‡7>ÛoÄCòˆG:¼¡YoˆC³mG¥Ò:°u @è €H£¸(9JUìcóPÝG 0¡Œ?´Uú¨Ö°•ükõKûø¯ð‘ƒÄ€+8Á b è +ˆ>ªõ¬€:ÐÇ Nð¬àþ:ÀÇ b ¬ ZÿàCV |ýïŸÿý÷ÿÿ·êJEö!v¶¼!ͼ!¼!ÄÁÚáÚA³¼!¼áÚ!¼!¼!¼!¼aGâÁâ¡>«4«¼¶¼A³Ä¡â¡âA4ËVÇÚ!äAâ¡âÁâÁâÁâÁÚÁâA¼!Ä¡âÁ4«¼aG4+4K4Ë4ËâÁ4«>Ë⡼!¼¡®KâaG4«`KÄA³Ò¶ÚA³¼!Ú!Úá³Ú!¼!¼!ÃÚA³¼!¼!¼!¼á³¼!¼¡âA>ËV'þÄ!ÄA³¼!¼!¼aGâÁÚÁâÁÒ!¼!¼¡2¬â¡âÁÚ!¼¡`Ëv$¼áÚ!¼A³Ä¶¼!Úá³Ú!¼aG¼AÔ4K¼áº¼¡âÁ4Ë4K¼áº¼¡âÁ4Ë4K¼áº¼¡âÁ4Ë4K¼áº¼¡âÁ4Ë4K¼áº¼¡âÁ4Ë4K¼áº¼¡âÁ4Ë4K¼áº¼¡âÁ4ËâÁâÁâÁâ¡âÁ4ËâÁ4KÚA³¼!¼¶¼!Ú!¼aGDM4ËÚ!¼!ÚA³¼!¼¡â¡®KþâÁ4Kv$Þ¡4«4ËÚ!Ä!¼!¼!ÄÁÒaGâÁäÁ`ËâAâáv$Ä¡¼!¼!¼aG¼!ÃÚ!¼aGâA`«âÁÚAÄ!ÚÁ`ËâA>«âAâ¡`KÚ@äáB@³¼A³¼aGâA>«â¡4KÞauâ¡âÁâÁÚ!ÚA³¼¡âÁÚáºÚÁ`«âA⡼!¼!Ú!¼!¼AÔÄá³¼¡>«âau4Ë>kG¼!â¡4«`K4ËÚ!¼!¼¡4Ë`KâAâÁ4«äA`þ«â¡¼¡ÊÌâÁJÀŠáÚÀÄ!¼!¡÷P% b`@ ´@ÔT˜ax…Töáxåx…WL%Bô©ö!,¡þ  L…Wú«8àV€N`±ªeb`ú…&V þaN`b V úabÀN öáú%þát`ÞaÞaòabÀN`N`€îA¦€b8àV€N`8àV€N`8àV€N`8àV€N`8àV€N`8àV€N`8àV€N`8àV€N`8àV€N`8àú…ºêþ¬eN€Tö!ö!vÄâÁâAäaG¼¶ÚA³Ä!Äá³¼AvÄâÁâ¡>KâÁâ¡Ä!¼!Úá¼á³¼¡4«>Ëâ¡4Ë4K>Ë>K4«>Ë>Ëä¶Ú!ÚÁ`ë¼!ÒáºÚA³Ú!¼!ÚÁÚÁâ¡4«âAâAÚÁ`KâÁâÁVK³¼!Ä!¼aG¼á³Ä!VÇâÁâ¡âÁâÁâÁ⡼¶¼AÚ!¼!¼!ÚA³ÄAâ¡>KâAâAä!¼!¼!ÚA³Ä¶Ú¶ÚA³¼!þ¼!¼!Ä!ÚA³Äá³¼¡¼¡4K4+v$v$ÚáÒ¡>ËVçºvÄâÁÚÁVK³¼!¼á³Ú!¼¶ÚA³¼!¼á³Ú!¼¶ÚA³¼!¼á³Ú!¼¶ÚA³¼!¼á³Ú!¼¶ÚA³¼!¼á³Ú!¼¶ÚA³¼!¼á³Ú!¼¶ÚA³¼!¼á³Ú!¼A³¼áº¼á³ÚÁâ¡â¡¼A³v$¼!¼¡Òá³Äá³ÚÁÚÁâÁÚÁ4«4K4ËâÁ®«Ä!ÚÁÚÁâ¡â¡>Kâ!Ä!¼!¼¡ÌÚáºÄþ!¼áº¼¶Ú!Ä!¼!ÄAÚ!¼A³ÄA4ËâÁ⡼!Ä!Úá⡼!Äá³Ú!ÚA³¼¡¼A³Úá³¼!¼á³¼!ÚA³ÄáâAN¡¼!ÚÁ>ë4«¼Aâ¡ÞÁ4K⡼á³Ú!Ä!ÚÁ4K>Ëâ¡Ä¡ÄA¼!¼aG¼¶Ú!ÚA4«âÁâAâÁÚÁ>Ë>ËâÁâÁÄ!ÚÁÚ!¼!¼!ÚA³ÒAâÁ⡼!¼Aâ¡4Ëâ¡4«4ËâÁ`«âÁâaG⡼!þ¼!¼AäA³Òau¼A³ÒA³B”áÚ¶¼*ªÊáôWþ˜àJù•UjJà”áÚUúáZúåVàV@ùúåt`V Zt`V ôáúEôabàV úNàr Zt Vàþ!¬¥_b@VàV ZV€ÄVàúåúåúåúåúåúåúåúåúåúåúåúåúåúåúåúåúåúåVàVàú[¸êV`HEþá4K¼á³Úá³Ú!¼aG®«¼¡â¡âA®ËÚ!äA2ÌþÚ!⡼A³vÄvÄÚA³Ä!¼A³Ú!Ú!¼!vä³¼au>ËÚá³¼¡¼aG4Ëâ¡pâAÄ!¼!¼¡¼!¼!â¡4KäA4K¼!Ä!ü!¼¡â¡â¡äAV'¼á³ÚA³Ä!V'¼!ÄA³Úá³Úá³Ú!¼á³¼¡4«>«4Kâ¡4ËâÁvDͼ¶Ú!Ú!¼!¼¡âÁ¢"Ú!¼!Ú!Ú¶ÄÁ4«âÁäAâáv$¢B³ÄÁÞauâAâÁâÁâ¡âAÚÁÚÁâA4þ«>«ÞaGâÁâ¡â¡âÁâ¡â¡¼¡¼¡âÁâ¡â¡âÁâ¡â¡¼¡¼¡âÁâ¡â¡âÁâ¡â¡¼¡¼¡âÁâ¡â¡âÁâ¡â¡¼¡¼¡âÁâ¡â¡âÁâ¡â¡¼¡¼¡âÁâ¡â¡âÁâ¡â¡¼¡¼¡âÁâ¡â¡âÁâ¡âÁÚA³ÚÁÚá³¼¡>kG>ËÚ!ÚA³äAâÁvD³¼!ÄA³äÁ>«¼aG4kG>ËâÁâÁ4Ë`kGÞ¡âÁ4Ë4Ëâ¡4ËþÚÁV+¼¡äA`ËÚ!¼A³¼!¼Á?«â¡âÁâÁ4K4KÄ¡âÁ4«â¡¼!Ä¡âÁÚá³ÚÁv$¼!ÚA³ÚÁâaGâÁÚ¡ ä!J¡®«¼!¼!Äá³Ä!âaG4K4ËâA>K`ËâÁâÁ2¬4K4ËÚÁÚá³ÚÁ>«äÁ>kuâ¡âÁâÁ®KäAÚ!¼A³ÄÁÚA³ÚA³ÄA¼!Ú!Ä!¼A³Ä¡âA¼¡äÁâÁÚÁâA4kGâÁ4Ë®KÒ¡âA4ËÒAþ³¼¡,¡þ  ÚÁ4+–—…WL¤¡þa„¾éIeJŠáÚÀTxåúÅZVàVà«ZVàtàú…&VàØªåôabàV@ôáV@BaNÀöáVÀ¬!V€ä`tÀVÀZÆàVÀ øáÿ ?òùoN`”o«°eN`Herá¼aG>ËâÁÚÁâÁrÁXßrAlárÁd!l¿õY?Z?lAp?l¡XÁlŸX?váX_Z?Xÿlál!lap?p_lÁöeÁdþ!ZlArÁl?d!l!l!v!lÁömAdÁÎ?lÁöqßdÁlŸõb—-[²^åÊ5p`.Y¶d9´upà+[¹v%|•0¡,[æÊò ­]sÙÊeëUFY¶:”õÊÖ+[¹låx°˜­W¶Ú’eKVƒsÙ:˜KÖ+[e½:XLÖÀW¹l岕 d.[¹@&|up`.[»dÙ’•+c.[¹æ²µK–-Y¹2沕k`.[»dÙ’•+c.[¹æ²µK–-Y¹2沕k`.[»dÙ’•+c.[¹æ²µK–-Y¹2沕k`.[»dÙ’•kàA[²þl½Êµ+a.¯æÚ5P–-Y¹låÚ5PV.¹2æÚåÕÖA[¹lå˜kà¾víÄÅkç-ž·xñÚ‘oï·xâäÅã.Ž|¼vä½ÅkGÞ[¼vÞây“çM<ÞpçM<Þ´ãM<ÞÄãM<ÞÈ׎7òµ8äyO;Þç yíÈçM<âÈ#N<Þ'N<Þˆ#O;ñ´ãM<âˆó‡8ò%(¢Ìm¼ªÏ '¬°Â +»‚°Â~ ,±+œ Ã>ÿì³8N Ä;ÓxÇ?+Ä Ï 1ü³Â 43Í4ˆø³‚°šä³8œ¬ƒ>®ƒ/ûä#Î+œàlÀLpÁ| '¬pBÀ'¬ ¬°Ÿ°Â ¬¾òyâx7ñ´#Ÿ7¯¸JíªûüC-µ®îÃê>ÿìÓê>ÿP»*µ°îSë>¯îÓê>«î³*µ®î³ê>¬îóÏ>¯îóµÿ¤¼Ï?ÔþººÏ?ÔººÏªû¸ºÏ?)ÿCm«ûغÏ?ÔâJm«ûü³Ï«û¬Jí?û´ºÏ?û°Jm«ûü³Ï?û°Jí«Ôþ³Ïª)ÿ³ÏªûÀº«ûü³O­û¸ºÏ?Ô¶ºÏ?û¸ºÏ?Ô¶ºÏ?û¸ºÏ?Ô¶ºÏ?û¸ºÏ?Ô¶ºÏ?û¸ºÏ?Ô¶ºÏ?û¸ºÏ?Ô¶ºÏ?û¸ºÏ?Ô®Jí?ûÀº¬û°ºÏ?ÔººÏ«û´ºO¬Ôþ³Ï?û¬ºÏ?²ü#Ž|â×Î5¶¼b‹,¯8„T.ѽ2P.²Ø"‹-Ù?R»Ø’ [äb¹°E.r[ä¹ÉAl‘ [ì"¶E.¼’ Y Åþ±E.lAxp'âèRò!R”@â7âÑŽx´#Þˆ‡7¸qÄ£ñðyÄáwp'Þ‡8Úáxx£]òF<Ú!o´ÃñðyÚvGÞˆ‡7¸#q´ƒ<í 7âáx´#Þˆ‡7âáxx#âÀS;âáxx£ñðy¼qÄÃíˆG;Èãxx#ÞhÇ;ÚqÈCxò†¢ÄoÄÃ܉G;âá`¢hÃŒâáx(W¬ŒÕ>þ±VÊr–®ÚG QŒ?´¡UÔêÇ ”E¬LY+8Á „µ‚ëÄÖ „E¬ëþ+8Á "v‚œ`'XÁ œub`ÂZÁ ˆ%¬`sìl§;ß)¬‹X[Á ±œ`'`Õ+ö!yÄ£ñhG<ÚñŽvG«Ú«ö!+jÅ*e¯ÚG«¨Õª}¼j­‚š«öáª}¸ŠZÿ Öª¨Å*¨±j¬ÜÇ?ö±ª}üc­Ú‡«öñ}Øj®¢Ö?¨Õª}üƒZÿ Ö?Ræ*jÑr¬ÚǪ¨µª}ÄŠZ¯¢«ö«}¸j«Ú+Sö}ü#eÿØG«öñ}¸ŠZÿØG«öñ}¸ŠZÿØG«öñ}¸ŠZÿØG«öñ}¸ŠZÿØG«öñ}¸ŠZÿþØG«öñ}¸ŠZÿØG«öáª}¬ j«JÙª¨µ*j­j­JÙ?öÁª}°ŠZ«ÚÇ?¨Åª}¬j¯¢–,öoȧâh†,ÚÜà w¸Ä-®q‹Üä*÷¸ñhÇ;äÓoÄ£ òˆÇ#J@žvx#∇7âáx´#âÀ“7âÑ<‰CQí 7âá ò´CñðF;äãxx#Üy‡7¸Ó%qÄÃí 7âÑot©â 7âÑŽxxCäiG<Úáxˆƒ<Þ‡8ÈÃù´#âˆG;¼ÑŽxx#툇8âÑqÈC>íðF;¼vx£éðF;äÓòˆ#âþO ¡Œ?´¡KÞÀ-i¹PëÉT¾Õ>Jðeü¡ ¯êÇ Vp‚kí Ø Vp‚DlÂ"–°V ¬kÊ"–°V€Í(kÂZ°Vp‚k'8˜¡èœ€XÊ Ø V€Í€`'XÁ>V•‹ÈG툇7âŽv¤#¶¨²©OêT«zÕ¬nµ«_ ëXËzÖU–Å?¼!qx£ñhF.ÚO`bØžð݇]lKX¢ØÅ¶Ä°•m‰a–86&” hc˜`ö°- K`–`ö°- ecÂÃ.6´-amLxbØ–À„'ȃ q„£ÞhþyÂÑyÈ£%h‡7Õòˆ#òG;¼oÈÇ܉G;âáxx#ÞàN<¼vă;ñ‡7âÑŽxx£K툇8ÚAqÄÃñh‡<¼vÄCäG<¼oȇ;xâŽ7âá <µ£KÞhG<¼ÑoȧòiyÄAžvÈÇïhG<ä!<‰Câh‡7â!Žx´C>Þˆ‡7J€‰bü¡ íðyÒ¡ˆVê}ï|ïû«öQLãmhµþq‚‹X' ±œ`'Ø ˆ%,b€X' Ö œ%,b@`'pÖ ˆub`'XÁ Vp‚Àsö´ç þ„µ‚KYXÁ ˆÅDlÂ"«d±oȧñðyÄAYøýƒ¨¾õ­ßékûÜï¾÷¿þð‹üä/¿ù¹¿Yü£K툇-ÚK°ŠZ­‚šýW•²UQëûhµþ‘2ÿ°ÿ2«²ÿ°ÿ`«²ÿ@-ÿ°«bûà*û°*ûðÔ‚ Þð˜ Þ3òå Pñà ñÐÞÜá äÑä!òà òÐÞÐ%3BÞ ÞâííÞíà äÑâ@ÞÞí òÜíÞííï@í Þ ÞþÞíà íà íà â@íÞÞÐÞíÞ íâ ÞÞÞÞé í ñà äÑñà òÑÞí (ñÐñÐÞ@é@%ðÊðm@íñ çÇŠ~·%ðÊðmð*ú°'@,²'°³ÂB,'à,³ÂB,²²²ÊB,²Ø´ʲ²²ÊB,'hÝè+pÄ",+p#,+p+ ,+À+pÄ",¬’ ÿÜá ñÐäÑä²Ð*Í)É*û0¸¢0­È éþ ‘)‘ù²°íà ñà ñà ¹Ð˜°ô ’#I’%i’'I’ò€’+É’-é’ô–Ð žà ñà ]Òù ¥Pí@âÞâ@ÞÞЊâ ñà í íÐ%ò ñà ñà ñÐäá í@ÞÐòá äá ä!Þ@ò ñà ñà £âà ]"Þ@â‰Þ‰ÞâÞÞÐ%òà ñÐñà ñà ñà ñà äÑäá ñà ñÐñà ò!ñà ñà ñà ñ Þ@Þäá %€ Åðmà âÞŠ@‘¹% Åðþmà*Ô²ÂÂÄr+pÎr+ð+p+ðÂ0²ʲ'@,'@,'à,ÂB,'@,'@,ÂB,'@,'@,ÂB,ʲ³‡žé¹Np+pÄr+1Är+pÄrÄ¢,Är«²¹°ñÐñà ñà ñ ñà ñ ¹À*ûÐ ï&¡Ê¶*ûðû0ù ¡ù Ô‚ ¢0ÿ°³I¢%j¢'Š¢)ª¢«²²°òÑñà ¶Ð–°G§£ò@Gò@;*¤ô ¤òE*ô ô ôP¤ô ô ô€¤ô pô€¤:J;Jò@ñ` ²`þ í@íÞm@PâÐ%â ñÐñÐòá ñà í@Þ Þ`$ÞÜ'í ò!xâ äÑä!òÑÞÐ%í@íà òíà ñà äÑòá ñà ñÐÞÞÞÀÞ (ÞÞÀÞ@í Šâ ñÀâÞíí äá ñà òá òÐñà òí ÞÐäQŠ  Ð]â ˜°¢¬¸%€ Êðmð*ýpÄ¢,+p+ ,Îr+pÎ1Ä¢,+p+ ,+ ,+ ,Ä",+ ,+ ,Är+ ,+ ,Ä",+p+pþÃÃÃÃ#,@,0ʲ'°'°C,²û°*²ðÞí âíí ²Ð*Ê€ I-ùÐ*û0ûàŽpû É ƒàwG[+ê0ÿ ð*ê0H+µSKµUkµW‹µY«µ[˵¬$ ÿÞâ@ÅЖðòEš—ñY*ù€¤ñP¤ùùùP¤ùùù€¤ù pù ·ò;š:š˜ ˜Ðñà ñà ñm p¥Päá ]â ñà íÞÐñà äá í ÞÜAÞÀñà ñà þòÑÞ@Üá íà ñÐñ ÞÐñà íâÞÐÞâÞ@í í@ÞÞÞí€'òà ò äÑñà x"â@ÞÐ]â ñà äñòÑä!òá íÞ@Þ â@í@ÞÀñÐñà %€ ÅðmÐÞ@é TëìZ«µû–P а2ú°ú ý@-ýЬ²ÿ ýð"lÂ/Üú`ÂúÐú°&¬«¢ÿúðÂÿ Âú°" Ã0¼úûû°¡š2M¬¡)Åù2Sœ2SŒý@-*Âý°þú°ý°ú°0¬ýÐ*û ûà ]"ñ`$ïà ¹Ð*Í` ÿ!À*yüò°*ûðû0ºM¼÷0ûÐ*àû`µà‘( ±²øðûàÐ*Ôâ`Á¡,Ê£LÊ¥lʧŒÊ}·²ðòÁÞ  û@—ñ ä!]"pùòñ ä!pùòñ pùòðŠ"pùò (—ñ ï@ò@—ñ ùòðä!pï@ò@é€ ²€ Þâ ä!@PïÞíà ñÐñ xÂñ ñþà ííâ âÞíÞÞ òà ñÐïâ í ™HÒäá ñÐÞÐÞÞÐñÐñÐòñÞÀÞÐ%Fâ ñà ñà ñà äÑòÑïà ííÞíà ñà ñà äÁä!òÜÞííðíà ò!ñ òQ  ÐäÑéŠ µûàðë0 lp+ê0ÿ ʬ²%ðÊðmà*ûà*ýðûðûÐ*)óûðû°*ûðøûðÔÂ*û°*Ôâ*û°*Ôâ*û°*ÔòûÀ*/ +û+þû+û+ûp+)ã*ÔòûðûÀ*ûðÔòÔÒ*²ðäá í@ïÐñ é²Ð*Å` ÿÇ!ð×ýùà*q=‹€gOq°¬²è ûPµû€@-çÀ@-±²ÿ ð*êP à.àNà޵²°ÞÐÞÐñ¶Ð–ðñ ïíààñ ïààíðñÐ.ïíààíáíÀá.ïíÐâþÞ.âààâðñÐÞ.âÀáïààò – –ÀáÞÞÐW %íí0ãíþÞÞâáò Þðííà 3ÞñÐ-.íÐâÞÐî ñà ñà íÞÞÐÞààÞò ñÐò éðÜÞà .î íà ïÐî ñÐî ñà ñà íñÐñ žî ñÐî ñ ÞáÞÐñÐñà ñà íî Ü‘áÞÞP˜P Ð3ÞŠp´lí0 a ^ làÙîl°«°øðûàÀJÛ@" S»%€ Åðmà*ÔÒ*ûÐ*ûà*ûÐ*û+ûÐ*û+ûþÐ*Ôò*ûðûÀ*û°*ûÀ*û+û+û+û+ûð*û+ûà*ûÀ*û€+û û î ñâáíà ¹À*ûp –@-×Çûðô°*û°*qïpS¼q°­°ÿ`)€ì°•ðý°*Áàû`)€ì°­ðÔðê0¬âðê0ý °*öP…0«‚Hðûðê0j`°nø‡ø‰¯ø}·²ðâ ⣖  ûÐâïáí ÎÞþ-Þïíà þÞþââ -þÞÞÞÜï0ãÞïààï0ãíáâ ñ` ²€ íà Þñ  òð%éÐÞÞÐÞíðñà ñ òÀÞÀáââ ÞÞÞÐâíààÞÞààÞÞÀáÞíây“ç-ž¸xñÚ%Œç-¡7†âÆÏÃt ½M¯·‰ÞÚÅkÏ›töýÛ÷O]}W­þöó× K>zÕøÈåÛw_ EÊþ´éËw߾‰/¾ºÏêáÃW!_…|òUÈŒ5Ë•õ/¡·xÞzc(«j3KS÷…`½oª<«hòÍÎ÷.ß»Ùï"UÝŽÀa{ØöáÃñáŸ=ìþíSæŸ=lûðá8Qu8ûþá£2㟻û¦Ö+°ÏÝ€}ê ìû×âÅ>|& ìû×ãÅ=~7€ìs' ËáÍp@ 4ð@TpAÔ,—ò¦tXiÃ’ò¦oâñævò&žw^òæ%oâñ&žd À›v¼q&€x¼‰Ç›vЧ„¼iÇ›väGqä§x¼‰Ç›þx¼‰Ç›vjÇ›vÒiÇ›xÒIçvâñ&!oÚIHLr±$!oâ§xÚ GžRJ'qâñFqâñ¦x¼I(!qò¦?Ûù³x¼‘Gœ„ÄiÇy¼‰§xäñ&žv¼‰Ç›„ÚùóOoډǛvj'¡vj'qjçÏpâñ&oò¦?ÅIÈ›x¼‘GœxÄù4¡v'oò&oâñfØO½‰Ç›xĉǛv†•GœvÒIÈ›,)æ6Úñ&¡t!ð°+¾r÷]c¤9£*pØGúQgAà‡}þ™§Dþñ'ƒ0Ðàž ›Êž(à‡}¦²'þ…@}Ô@,øá°)æ6Tye–[v9À}dÙçÓv¼IÈqâñ&—ûGK¦bmèÃè± |PñÀ‘|ñ`š|PñÀªöGÈ Ç€öQ!Œì€œ¬÷Ç€~¨Ú €ØùÇþ9Ìþqg€}Ôà{ çŸ~‚à{ çŸ}ÀQàu¸çeÊ+·ürÌ3×|sÎ_Þ'—}ÚùSœxrùC‘}ÒiGœxÒi'o¼‰§pÂGœxn'v¼‰Çؤ›t’  tڧؽǛ—ÄI(vj'qâi'v¼‰Ç›xšþIœxĉ'x¼I'öxÄ 'oÚñ&!LXÁ¤xÚ‰Gœ„Ú'žG”àЊ‡8>å„´ãOíðF<Úá—´ãSíˆÇ;>ÕŽxˆ#!íHH;âÑoÄ£ÞˆG;¼‘q$Dñð†8âáxx#âø“7Äo´#ÞˆG;âÑŽ?‰£ÞHH;âá y|ªñðF<¼q «Þˆ‡7ä‘oÄÃíðFÒŽx´ãO∇7^âOy£ &”ñ‡6$¤鈇"þqG<æQ{ü‡nñǯüQ·˜÷ŽìÃ؇:`„}ØÃ@8 .ÀŽ:t þh€ þJñ<î£/¸‡=L„ìÃØØ>pp‚¸C]؇?Zàƒ}”àÊøCøøK`S˜Ã$fÕ1€¨c{TÇŠLu à™Óf.þáxx#∇7þÔŽxÈûh†%ö1´} íòÀãaÐðLÃ¦ñLÃûÀ#:ð}" èöñ`P`•¨À?öAŠ<ÀÀ>òˆTàÀ?Ô1<º£ÿPÇþ¡ŽìCØÇÕ1€} # © ðw àû fO}úS U¨C%jQzT¤&õ޲ØG<¼ñ’x´ƒm°Ä?Äþá -‰#Œ];ât$ÄáðF:¼‘ ÄAßè†3qh @€ ¾‘UTÀéP¼Ð éˆ8‘Žv¤#ÞxIÀA€~¸cûP‡È±Ãwì4`rôãë8Âiüà Ç>ú ü£là0À?Ô!€{ôcÌpÀ>J€‰bü¡ Å,&8°6 sP _î؇;Çøcz0HƒóÁ?ãŽÄYÒ{ÜG.þáay#íG<¼‘‹<^Ãû` dX³zäqdx‡|áwLÃÓx‡|á<‚Cû°‡f‘ C‡ÁÇt‘þDìØE>þŽèèÇÁ€}¸cû¸#8 ðu `êÀ>ìAvÜ‘؇=À<îãê(€0í}o|ç[ßûæw¿ýýo€\à'xÁ¹\ì#âˆÇKâ‘‹?(âéˆ]:¼!ŽpˆCKâˆ]:Ä»tx£Þ‡7œA€plÀãH†Æá¼`æÀº |# hÀ2Æ‘FxCKÞh‡8Â!Žq¤CÞÇ8Òátx#ÞHG8Äoˆ#ÞH‡8´”oˆÃ²ÀD<¼—ÄCm(=Q‚„´#!Þˆ‡7ÄoÄ£íˆG;âá yþx#íðÆŸÚoÄà iG<Ú‘oÄ£ÞˆG;âÑŽ„¼#!ÞˆG;¼‘oÄ£Þˆ‡7âÑqÄcï{‡7þ´÷xˆ#Þˆ‡7äv$ÄñhG<¼tˆ#!éØûŸÚávxZíð†8âáx´Ãíð†8ØŽxì] iǧÄqü)˜PÆÚð)o`âßûpŒoaŠ?šâBÈ#:°u àîÑ€8 t€$ø‡}È#xÀØt€}¸#p€ØRH°€€~p‡8Œ@‡Ø‡xeøƒ6(¸}@Ø‚Ût€Ã8&p€Ãþø¥}øu(€=R‡È£}@8 sÀØ£}P‡À#u(ƒ³7Yø‡„ð†v€–vˆYÈ£f°„8 <:Œ=²‚wð€ið€wð˜†wð€ið€íS?ýS@ TATB-TC=TDMÔ>݇\؇v‡xˆÔxÈ…?P„}‡pðq膦ë†nq‡nhºn‡pð†qð†nðg€Ø¹pg š"¨qèX P…Ph:o`ÆØ‡¦kžqè†q‡p`Fq‡nÐÕqÐÕq‡nˆþKKTqˆ‡vH‡6ˆy(…‡xðI‡vð†xð†xh‡wToˆToˆoˆ‡vˆqˆoˆoˆ‡vX×½ó†xHqˆ‡½[×Hõ†xð†xð†uõ†vð†Hy‡xhoˆÔt‡xð†xð†x‡xh†oˆoˆqTo‡xð†xð†Hõ†xh‡xð†xHqˆÔvð†Hõ†xð†”•TqÔwð†xh‡xðyh‡xð†HM‡H-GP†?hƒHm‡tˆEÔ(ÌI˜S˜S˜Ã<<Òt€}P‡èu"Ø|0 ¸#&è€~ø¸w þƒiØxÀ ؇h؇u0 Ø{vØ|`‚èu €Ø|0 ؇Àeøƒ6@Ô}8 {À†}Àø€°`‡Øƒ°lØ|ÀÈ£}؇À*˜p‡؇è‡z(€}p‡Øu(€}ø‡x}À(€}À£}؇à*p{À†}À8p‡€ u#È`‚PÔ=’…}‡xðy‡Hm‡Hm‡x<Ú‡k8ŒÈš؇؇<Ú+x Î` æ…~ØTYØIõ†xðVhKøqðOíqðqoðTqðToè†Ø‡nðjHè†l80Ȇh €ehoèjP PFˆè¸qøânE‡/ÖUqèoèqèqðTqðToè†l‡nˆKOð†½‹Ôvˆ‡6ˆ‡|x„ˆoˆTohoˆToˆTqhoˆoˆÔvˆoˆTqXWoˆTqˆohoh‡HõI‡½ ‡xð†½‹‡vˆ‡þvˆ‡vð†xðy‡xh‡um‡Hõ†vˆToˆ‡vToˆohoØ»Hm‡uõ†H•qXWoˆoˆ‡v`XoÔvXWohohohoˆToˆoH‡H‡vˆ‡vˆoˆoH‡Hõ†À„bøƒ6ÐÕxð†xP„A²S˜„Â<éIˆ<Øw(€P‡„ @€؇À ‡~ø‡{8‚ @v8 {¨(€؇; (ƒèuA˜øÃK(†?hDÝp€ø‡}P0ø{r(p0€}À£}‡¶y`þ‡p‡ø‡Ãp‡øw€}P‡ø{ r¸£`€<Úp€@€€cÈp0€~p‡¸£}P`‡;B‡؇%Þ‡\ø‡”m‡H‡xð†\T+ÈmÝÞíÜÞ<ò&¨`Êš_Ú‡<Ú‡?Ý=Ú{;Œ(~nèŽnéžnê~î}È…}ð†Í…?P„ÈqÈqȆlèòîqÈ]%oöîò¾g€n o&(Ȇn¸À†l¨†=‡lˆ† €eè† HFȆc‚oȆc‚kȆc‚kèqòî†l‡lò‡lðTòî†løâxÀ[þ°„x‡xð†xÐÕ6ˆy8‡vXWoˆÔ½“To‡vðqˆÔvˆÔvxoˆÔvHYqÔvð†H‡Hm‡x‡xð†xhqˆ‡vˆ‡v`Xoˆoˆ‡vx‡vˆÔvˆÔvˆ‡wð†Hm‡umoˆqˆoØ»xh‡umoXWoˆoˆ‡vð†vˆoˆoˆ‡vð†xð†£oˆoˆÔvˆTqˆ‡vyToh‡H-EP†?hƒuõLÔ$ˆTOuUGu<Úf<:Œ;‚ >Ú‡~ø‡}ø‡¬¹#ÈÈ#Èø‡}ø‡Ãp‡¸£Ãø‡}(GP†?hƒDEø‡þ} … ¨€}ø‡` €¨„ ø‡} …x ˆ€Ð#t€ÃÀ*à€P‡À#w(€P‡øu€}P؇èu€}È#toˆ‡|8 RH°€(€P‡À#w€8 u(€&–…ð†xð†xð†xoh‡xh‡x…Ý>já¾£}‡ÐiXâ}¦}¦}à£}¸£}¨n z¡z¢—nYø‡xð†xð†xðVhKøöfïkÐÕkȆn`oq`oqȆkh†d€lè†k¨†€l¸†j¨ˆj †kÈ È†qè †køþ…ˆû_€o¸†_jj¸ò‡©Ï†kȆn¸qÈo¸†l¸†lèo°YÀ„vˆ‡vX×6‡|x„‡xð†xð†vˆToˆqð†v8Zoh‡xð†uõ†xð†vð†xðIõ†vˆTqhy‡x‡um‡Hõ†xð†vˆoØ;oˆ‡vˆTq‡vH‡x‡vð†xð†Hõ†x‡½ó†x†m‡xð†xð†vð†vˆÔvH‡vˆÔvˆTqqh‡xð†H€ç-^wö•WàŸºûÔ Øg»}ÿ˜ @ NÀÓ’öÌÊ÷Ü€~î˜t7 ä>u†BF¹/׿vñÚÅó&`;qñ¼å*¹ò¾Èûþ틬z5ëÖ®_ÃŽ-{6íÚ¶oãž½OÖ¾xÞâµ#˜ë¦}ÙÄ]w-5jÙ²]»–M5qÑ©]Ë}ûóíÔ®}£–ÚµçÙ¢g»–­Û5jרmoNmûµçÑ©‰£¶ýùµlÔ®Q“Í5ÙˆsM6ñX’ &ÞÄãM;ñ´þ#NñÈsJ yCP;í48ñxÓŽ7ñlH7ñxO:ÞÄÓNCíÄãM<ÞäM‡ µóŽ7ñˆO;ñ´87äÍÞ4ä<ñ´O;z#O<Þ´ãM<íxO;zO;âÄãM<âÄã ‘6ÔAÞÄÓN<íÔŽ7íx#O<í4´a<ÞÄã8 •ðˆ2´AP;éÄ£Hd‹þ³OIè ‚4ÿìè¥&õSÏ(íS‚"ÊüÑÆ¥+¡À>öÀÎ>þ0Q@Iû(!C÷ücìüƒìs:ìÓ>T8°Ï? lò?7°;üãÎÿìÓB%Ý0Jèþ°OIûØ#;ÿàÃDûØ;%©3€Iê “¼ó¢$Ë>ñxO;ñ´O;µ,ô<ï>#œ°Â 3ܰÃC±ÄS\±Å_,Ë?íÔN<Þ°ÒÆ#ÿ\#_6Ô˜wÍsÊÈGyæ 3Ù4g^s×ÈwÍs×ÅÈFË®!ed#’Ž,F6šSŒæƒÊȆ|®‘ qXB˜Øã!y´!òxD 6ÔŽV¶#j¥7ⱡVÆ£Þˆ‡7€ÙJqÄ£ÞÀã†Zé yà±ñG+ÛÇw´Ãñ‡<¼!vàÑxlG<Úáx´#âG;âá yÄ£ÞG<¼oÓ˜òF<¼vx툇7äqàQ­l‡7ð(J²’ì£ÿØÇ?tjT”ì#%û(‰Q÷Q’}”d%Ñé?öñ}¬¯©(Ñé?öÁÒ”ÈâÀlG<ÚvÄ£ñÅWÛêÖ·Â5®r+]ëj×Èâx”‡7âá\´Áÿ(Fs²Ñœk4çÍhÙs”Aè4C>ÍhFs²Q ùd£ÔÈF1Œvæ4ƒÍO6ŠÉb-ÅhÎ5šcžb4'Å F<0ñ KˆcCÞˆ‡<ÄцxÈ£%G<ÄávxÖñðF<¼GqlÈñðÛvx£þÞˆ‡7Œéxˆ£ñð7äx´ÞxG;âáxˆÃ˜íˆ‡7Úvx£ñÅÇvÓ­l‡<¼Çvx£Þˆ‡7âáxˆíÀ£8ðè `¶#ÞÀc;âá Þ‡–µ¼.÷x`þÇ>Ƽ1£¹ËûÈÅ>âáxlHñh‡7Äoä"ÍzÞ3Ÿûìç?:Ђ4¡ mèC#:ÑŠ^´Iö!‹}Ä£þñðmñEì£ÙPF1®ÑŒbP£Ô(5ŠAb\ƒÅ F3¨Q j£9Å †2®QŒl#:Ÿ5ŠAbPc²ÅhÆ5šAbP£Ô¸F1¨1Ùf#:Ô(5ŠAèƒÍ(FtŠ¡ŒkP£Í™l:,‘ KSñhƒ<âñˆ´RòˆÇ†ÞvÄ£Þˆ‡8ðØŽxx#∇8äÇvÄÃñðF;ðØÞ‡ ÷ñö’ÈâÞˆ‡8Þ‘ÏvÄC‡Ÿ<å+oùËc>óšßüáeñoÄ£xô†,Úà‰P£Ô¸F1¨qbP£Ô(Æ5Šñìk4ƒÅ F1®AbP£Ôh5Šñìg_£×(†2ŽObP£Ô˜ì5¨Q jã“-Æ5ŠqbLöÅhN1šqfP£Ô(F3ŠqxXB˜ˆ‡7âávÈCm‡”€"ô¡íÃ?ì"¢íC.üC+yC ˆ@ (b „À":â#Bb$Jâ$Rb%Zâ%bb&jâ&rb'zâ'‚b(Šâ(’b):â>"šíƒ,üþƒ7ÄC:xåB´ƒ%ÄC;¤C<´C:S;àQ;ĆCœe\ š,üƒ7àQ øB^ÒB^Ò‚/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ђ/Ð-øÂrú-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-øÂrú-ø-ø-ø-ø-ø-ø-ø-øÂrú-ø-ø-øþ-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-øÂrúÂrú-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-øÂrú-ø-ø-ø-ø-ø-ø-ø-øÂrú-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-øÂrú-ø-ø-ø-øþ-ø-ø-ø-ø-ø-ø-øÂrú-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ø-ä%-”€\vY.üC<´C+y1üAX‚7àQ;xC<”Cð_)”€7¤C;“7ă8ă7lH:´’7ă7ÄC;ă8´C+½C<´Ãþ¶0yC;xÆà‘7ă8´’yµƒ7ă7“7ă7”€%ôA;x¥ƒ" Zêªî?ìCXB1üA¬îìÒníöÙ>äÂ?xƒ8”€#,ç-,gð ïðoñïñ"oò*ïò2oó:ïóBoôJïôRoõZïõboö¯#”À>ôØ÷‚oøŠïø’oùîC.ìƒ8ÄC:´¥ƒ7XÂ?\ƒ,Ø‚,د-È+È‚þ-Øï+¼‚,ØB.È‚-ÈB.Ø‚,°‚,ì‚,Ø‚ý¾‚ý¾‚ýÚ¯-äÂ.د-H0+د-H0+°‚,¼‚,Ø‚ËÂ++ÈB.ä‚ýæ‚-دÛ¯ ËB1üƒ%ÄC;xyµ<ÄÃ#”@<´ƒ7´ƒ7´ƒ8ă8ÈC;´’8ă7S;ÄC;ă8ă7ÄC:xÙ’7´ƒ7ă7´ƒ7“8´R;ÄC;ă7àQ;S;ă8´’8à‘7ă7´’7à‘7ÄC;¼C;ă7ÄC;xyC<ˆƒ<à‘7´C<´C”À#(ô2Kó4Ss5[ó5 ³,üƒ<”@*hB*€s*hÂ-¤‚&„³&„³&„³&„³&„³&„³&„³&„³&„³&„s>kB8kB8kB>t@ ´@kB8kB8kB8kB8kB8kB@kB8kB8kB8kB@kB8kB8kB8kB8kB8kB8kB8kB8kB8k‚@kB8kB8kÂ@ËôLƒ³&„³&„³&„³&„³&„³&´&„³&„³&„³&´&„³&„³&þ„³&„³&„³&„³&„³&„³&„³&´&„³&„³&„³&„³&„³&ä³&„³&„³&„3/”‚-È5/ B8kB8kB8kB8Ó*”‚\Û/ ‚Lk8k8—6+v0ËÂ?ă7ÄC;ă7´’ÁbÂÇböÇ*&¬"`‚ÁbBfc‚%(&d¶%`fc‚"`‚%`‚"X‚À*&ø+&`¶"`B¿b‚%ÄC;àцà‘8´A<äÃ#”@<ˆƒ<ˆƒ1mHà<ÀÃ6 ³: À?¨Ã,¶4ïC `B1üAy“;ù“CyøîC.ìƒ8„€&`y–kù–sy—{ù—wy*€ù˜“¹–§B™£yš«ùš£y*°ù›§Â›ËùœÓ9—§BkB*€y*”Â+ØÂ+œÂ+ØÂ+ 89*”‚-¼‚-¼Â*Èu)¤Â—§B–‡@”7ù>ÈÂ>ă7ă7ă7ÄþC:xC;xC<„C;xC;xCµƒ7àQ;xCs?lC @ˆ€`ó>”€"(ô¥£~ê«>2ËÂ>ÈCh"Èþì#‚& –[C(„ð˜Ⱦ& ‚&Ⱦ& ‚& ‚& ‚& ‚& ‚& ‚& ‚& ‚& ‚&Ð~ök"h"h"hBö‹ÿø“ÿìk‚ìk"h"h"h"h"hþ"h"h"h"hík"h"„&DšiB¤ ‘&Dš5D¤ ‘&DšiB¤ ‘&DšiB¤©¡&DšiB¤ ‘&DšiB¤ ‘&DšÖl¨ ‘&Dši²ùhP‡šjB¤ ‘&DšiB¤ ‘&DšiB¤©¦&DšiB¤ ‘&DšiB¤©¦&DšiB¤ ‘&DšiB¤ ‘&DšiB¤ ‘&DšiB¤ ‘&DšiB¤É¦¦†šiB¤ ‘&DšiB¤ ‘&Dši²© ‘&Dši*õÊÖ©W˜0ye+W)GšjB¤ ‘&DšP²eëÕ#O˜N½zU þ•MM?Cü³~{víÛ¹w÷®]Ö¿vòÄÅ3ïͼyoæå‰Kß.ž·xÞÒ{‹ç-ž¸ôíâµ3ïͼvâiGqâi'oâ'½xäÇ›ÍK'oÒó&žvâñƼvÌÇöñô»}JP¤˜?ÚÙd•]–ÙfuvŸ\ö‰§„@¬½ÛP¬±¦>ÌøÖ '´ÛrÍ=7IöA—ÝvÝÅVŽwݽåUMþ‘_t'Ù'ß~ýÅWŽ˜àvå(Ø]DPqîK9âG9¥[AÄ\DP±Å9E,ybL9å8GΕãÚöy–ee÷‘eŸvÌkÇŠQ”â§(‹}Ä#rТø Å1‚¡Ø-Bñ­"„ Nô8†-ŽAcØâä0S¼ãUå@…üQ-Ža‹cö8-Ža‹cØâ¶8†-ŽAcØâ¶XI-Ža‹cØâ¶8†JŽá.H€01€1hq [ÃÇ`I9Œa‹cØâ´È‡wŒA|Ã*09Œa‹cö89Œa‹cÞ1†-ŽAcØâ´8†-Ža‹cØâ¶89Œa‹cpåǰÅ1lq [þÃÇàÊ1lq [ÃÇàÊ1lq [ÃǰÅ1lq [ÃǰÅ1Tr ãÔâ¶8†-Ža‹cØâä0†-Ža‹cƒ#^‘‹SXbÞˆ‡<ÄÑW<â»°"´8-ŽÁ¶xÅ)Q q¤#ÞÇ+qŠ]ì Õb¨XT£þCÿG<¼ÑŽt´#íˆG;â!Žxx#ÞhG<ÄÑo´#ñ‡7ÚÁ#o˜§ñðF;âá óx£Þh‡7$$oÄÃí07äô´ƒGíð†y¼ÑoÄÃñGƒ¼vð¨æG w ´#Þˆ‡7âáxx#ÞhPþ;Ì#Žôx#∇7Òq´CæiG<¼Ño˜§æG<Úo4Èñð†<Ä!o¤§ jGz¼Ñó´#ÞHO;âá µÃ<Þ08ÌÓŽµÃñðF;âávxƒFñðF<¼Ño´#VJG;°äx´#툇7Ú!!oÄÃ%ÀD1þÐqˆ#Þˆ‡"Œº)ÜâÆ€ð-Œq c@x ÖÙÇ?À€}¸cÿpŒ°x˜@ ¯Â…îQ‡ìƒ A)ÞaWµà÷€‡ €°Øû€>°w  Ö¹öQLãm8ꔩ¼Du  Ê TÇþ²¼Ä}äbñ(ÁͰÆ5ja ¡…5h¡ >˜!\EÈ `P„1ˆÁÌb0óµ`æIìÃ!€ ‘@ |Þͬ…5Ša |ƒ™Å°F>ˆÁÌbX#Æ †5Šcô01ŒA kÔ‚™µ`f-˜Y kƒþ!-Œá ,سö¬…5ŠaZ0³̬F‹á0³X°g10Z ŒÃgýhÑcÐÂÅ0>ˆÁÌbX#Ä`f1¬‘cÃÅÀ‡1ˆa ZƒÆ …5jÁÌZ0³ö¬…5ŠaZ0³̬…=kabX£̬3kÁÌZ0³Ìþ¬3kÁÌZ0³̬…5ŠabX£´°g-˜Y fÖžµ°F1ða bX£Ö¨…@ÇȆ>ö‘~ä£ùP†"^‘ TÈaZC JÑ V<âôÈG>ôÑ}ˆCаE.P!-¬Q kÔÂK°žíiWûÙ÷!‹´#âG<ÒÑoÄ£éñ†<°ÔŽy#Þh‡y¼vHÈXjG:¼A£yCòh‡7âá óX)Þˆ‡7âá qÈà jG<Úao´ÃæG<¼A#oÄ£ÞHOòG”À<íHO;âá yx#Þˆ‡8âá y˜Ç<GzÚþvH¨∇7$äxÐhMñ ‘7Ú!y#Þˆ‡8âá q¤§Þ7ÚáxxÃ<íðF<¬vx#툇7ÌÓŽ‰Ã<Ú¡A¬DâAâÁJ¼!=ÚAâAÌCâÁâÁÌ#Ì£Aþ  Ä0aíÎN &ŒI°°`Ô¡öA€ö¡‚Á®ƒ 4ÀØáöaŽà¤áìAÈÁ:‚A¬ãUþaÐÁþA€öá˜Aö¡Aþ  ÒBÐ:Àö CR€RaíÜaÖ®¶! D@ þaDàìþöÁ`ʯCöAD@ µ` Ä@Ͷ…BÁ Æà Ì Q Q ñ>Af ¦@>àXàþAø@ fí^ÅÑö!¬áÅ`Þaò¡Q Œ!öÁ2q ñòaþaQ háU¬A fmLáÞ¡ø` òá¼áø`Q ¤aÊAöA Ä`Q þaÖöáÞ!´@ ¦!öaø@ ÞaÄaBA üáÅ€öA¬A ´@ þÁª±øÇ@ ÞAÄ¡Baðágí´@ öaªÑQ fáþU¬áÅ q Q Q Q Q Q 2Q Q Q Q 2Q Q Q Q Q Q Q Q Q R2Å %ÅÅÅ Å*µ@ ”ANAòáV`N`NÀ,mÁ”a!¡Šá”Aôáèä!V lÁÀÒ2Q ±1;daDÒÃâÁÒƒF¼¡¼!¼!Ä¡ÌÃâ!ÌÃÚÁ<ÄÁâÁh$=¼!¼!¼¡̃FâÁâ¡$ÄÌÃâAÚÁ<Ú!ÚG¼!ÄÁÚGÚ!¼AÄþÁ<¼Á<¼!Ä¡ âAJ¡Ú!Ä!¼!Ä¡°¤â¡âÁÌÃh¤A¼!Ä!ÄÁâÁÚAÌ£ÌÃÚÁÚ!ÞFâÁÚ!âÁhÄxDäÁ$D¼!¼Á<¼¡¼!¼!=Ú!hÄ<Þ¡âA¼!=Ä¡ÌÃÚ!¼FâÁÞ¡âÁÚ!Ä!Ä!=¼áÒ£¼¡°Äâ¡âÁÒÁ<¼¡0¡þ  ÚÁÌ#A1ÿ!JÐnÁ&Ì öáöáÀAöAàÔ!®àöáÔ€@®cþpÀþ`þþ¡ÀA¬ƒR þ´úAÀ:ö`J@ŠáÚ íBpÀöáIµÚ@öíöáÜ¡Ôn𡺠ôáø`ÜaÐÎàR×nraâ¡ €W{ 1La†¬®E‹| ´@Y{Õ þ!>@ zU ö† &„ ¤À¤ @ ¤¡.À¤xuØ€À( Œ¡F 6šõÂa l€´@àá@H Ä`ì „AÄÀ (à@ ¤¡À¤á@þ öAxÕ üAÄàì@ ÀÄà 6A @ üA  ’À ¤¡BÀ¤„À üÁPÆÀ| ÄÀg“ `À  À„¡¼Àì@ ÀHW¡BÀ6˜ ´myU ÖÖm}U Þömµ@nëÖn×V xU  @  @ îÖnµÀWµ P!ŠaÄ!N€qÍ’qO@0ᦠ@ x®aVaÄAVàÌãV ÄÁ^aPámK`žÔuCpdaÚÁÌÃÚÁ<Ú!¼!Ò¡ÄAÌ£â¡ÌÃÌ£âþÁÒ£¼Aâ¡Ì£ÒÁÚ!Ú!Ú!ÄAâAâÁâÁÌ£¼¡Ì£DâÁâÁÒÃâÁÚ¡AÄ!¼!¼!¼A¤ÌÃÌ£âAþ äáJà°ÄâÁâÁ⡼!Ú!Ú¡A¼¡¼¡AÚÁ<Ú!ÄAhDâ¡âAä!Ú!Ä!¼!=¼¡A¼¡¼¡¼GÚáh$¼A¼Á<ÄA¼AâÁ⡼AâÁâ!Ä!=ÚÁÚÁà:TÁþÁR Ø!;òa ^åUþÁj  àöÁ:ì¡ aöáø `~`²àúá´Y ,*¡®C@À:ø `~`^7;dáÄ¡„ „ „ „@Ä@ÍÌÀþ œ@œ`èŒ8€8€W1 „ 0º £¡ þ¡x „À „ ö¡ €(@þÁ8@ÄÀ> öÁ(@ÄÀ>@è Š€Š`„`LÀ„À æ¡0£¡`Z@f Š`„`L€x@ æá’à€Š ø’  €à@ö!8@¼à þaŠ ’à ö¡8 0ú¬… ø’à@Š þA„àLÀŠÀ ì’à€„À ð0 „ üa0ºf¡„ î¡* þ¡8þ@¼À>@þÁÀ ¼`*¬¡¬… 0 „ „ „  £¡¬¡@ £¡ º… À À „ 0 Ò À À À À À À À À „ „ À 0ºª 0 À À „ 0 À 0 „  ¬y@ÄÁlaÂÂaÂAº!V€Æ0 „€ÆlA¼!ÂaN`V€”!0ºA0 „  ¬KÀu§<eáÄ!¼¡äAÚÁÒÃÄâAÚ!¼¡âÁÒ!Ú!þ¼!¼Á<Ú!Ä!¼!ÄAÄÁÚ!ÄABÄ¡A¼!äA¼!âÁâÁÚ!=Ú!¼¡¼!¼!Ú!¼ABÚ!Ú¡A¼á¬Ä<Þ!Ú!Ú€ä¡J ¼¡¼áÚ!¼!¼!ÚÁ<Ä!¼¡ÞF¼¡¼!=¼!¼!ÄÁ<Ä!=ÄÁ<¼¡A¼K¼Á<ÚÁÚAÄ!=¼!¼F¼¡Ò¡â¡²ÏÌCâAÄ!ÒÁÁîÁÎöÁp€úaZàöLöÁ€þÁ˜`þÁàöL ö!,¡þ  Ò¬Ö`þÁ°aàN æAÈÁ:T þÁ°aà>`¬cþÁ€öá:^¥^ààÁ€`þ¡^`ìÁ`þ¡^àð€à:^…@Já¬cÜ¡öáöÁ€¬CÂÀÀ:zþàîp¨ü:ö!ö!J „ „ „ r@BA4Á!Ê%´(ª;À:ª; þ!f€x „ þ!0: þ¡’` „ þÁ’` x ’ô3 Dޝ}âàI²OÜ;qïüB1G’}hP¤˜dB’ü3äŠIü HâO€$ÿ$Ù ‡$þ$ù7 ‡$ÿ$ù Å0ÓÞå{÷¯@’(&ù7 ɾ9„$ùg É?9„$Ñ7€b!Iü  ˜Ã‹½ bø˜‘d_ŠIúH²OÜ;qïðظ‘GŠ9SÌ¡˜bþŽ#~,¹²åË Éqù±åÇ–sɱ1‡kâŠí—í„8qÙ¨)+u‚Ø£bá¼ ÉÁCÈë]¹Â½~½â„²\»Š=ÚõšðcŠ9JìûG½ºõëØ³kßÎÝú>Yÿâ‰ÏÛøvÞÚy‹×.ž8ò⽉ï-ž·xíÄ·‹'Nùväy3^;éx7äyO:ãy8ðÅÓŽ8âyO;ÞÄÓN;âÄÓŽ7íÄ“Ž8ñ´ãM;éx#ŽxmÈÏ#%Œ—N<ÞŒ×N<ÞÀ—ΆãµãxÞÈÓN<툷a;äy7ây7íxÓŽ7ñ´ã8òˆ#xÞˆç<ñˆ#O<âþÄãM<íx7zO;ñla;Þˆ7ÆÓÎxíˆ×Ž8ñ´#ž7ñx#^:âÄÓŽxíˆ7âµ3^;ÞŒ×yâÄ#Îx%(¢Ìmç &ÝuÃ$¨¢jŠ)©NCuú À>î ð;2?ì³.CÝ /ØsÄ €;ÔÙSü°u‚XPBe ð:òÀ?øZÂ#ÊüÑFwT@©è°Ï?¾þ³:ü³ aìcäüãë?û cÀuàÀÎuö@uÁ(°=ãk0ücOäü³8 \·Ï:G\@Òü£ÎÔùªûÌC;þê °=C8 ”ª³u²üóN t ¡„b†NÀCp@Ap 9Ð4 BÓ@CìÔ¡5 %ñO%¡9ì“A4xaO9ì“A4xaO4ÌàPسBÿ4PÀà tûd4 í“A4xOIü 9$ñIè#@Iü#@ÿ4ð˜ÿÄ?ä@CÿD?ä@Cû°1ÀøC@þ @à Iü#@ùl ^Ø@ÿðXÿ õcIè3€Ðä˜ äÄ? <–>$ñOƒ0@}-4 Ñð BÓþ ‡ç@CÐ4È ‚FƒР4 r@ƒ Ñ h4 ‚Fƒ Ñ h4 ‚F!ík ÌÖ„ð9 Aÿhä€B£Aÿ¦e°"Ê8Á.š¡Œ]äb+Ø&l!kÐ 4˜Á4äÑ [(ãÊ(Æ N°‚ì‚Ê8…-äqhí1B ÁcJ°³2šÑŒ²øG;âávx£âi‡7Ú¡vÄ£ñðF<¼AžvŒÇòyÒ!o´#Þˆ‡7âÑŽxx#â7Ú!o´>Þˆ‡7ÆãvÄÃâñF„64qÄ£äGä!R” ÞHG<¼!þo´#ÞˆG;¼ÑŽxxC<∇7ÈÓñxã툇76o´Ãí‡7âávÄ£ò‡<Ä¡xI<íO;ÄÓŽñx#òðy¼ÑŽxˆcCñðF<¼qÀGÞhG<¼qx£âñF;â!ŽñlH<Þˆ‡7â!Žx´C<Þ8’7ÄãvÄCñðÆ†Æãxx£˜(ÆÚÐoˆ'Š8ãu’ƒ–ºô¥-µ3@}ücÿð•¯þá+êèô::ÝÇ?öa}ü#¨ûøÇ>þ¡ŽPÇWÿØG 0QŒ?´¡; ¸ã«€ƒûø)R²€:Á À?*Qþ}üƒ)(k P}üC Ç>¬ƒìƒ:àÀ>ÔAêìØ:`ÆZÙÙÇ?àüC¨Î>Àá€}TâûpÇö8ÖP)wö‘‹ˆ£ ÔZ´æ„¢9á10h(@ ¬ ±íc´œ!B1’ hMþ `AŠÐ@¢0 `AŠÐ@¢0 ƃ„ÁX1>‘A ¤A6±"Ð cÐ,>1HCÐA? 5üC:ð‡V ƒ €ÒøÄc¤ñÐà7È nÑèàÈÖöÑ€þÐàý þÑ­éà 4H‘HCÐA?ƒèÀÈ÷цaÿhÀV |‚I†( °c¢4‚hÌ ¾9ˆo|s@ƒˆ9+ÐZVƒh-4Șs°­å`9XÖr°­å`ZËÁ ´–ƒh-+ÐZV µ¬@k9XA|Cƒ ­à1+ÐZV µÐ bÎ r@ƒ¬„9ˆox!e¼¢ÍXÁ.ˆA eC+P&”!ZÐ Zã…<”±Šb4C'XA1vQEe(ÃÊ-r f­•`ªÍv¶÷!‹}xþc<∇7ƃ‰r›ûÜ–À„%0a‰v·í.·%ÊínL´»Ü–ÀD»Ëm Lx˜h7&,‰vcB–À„%0¡K`˜h7&Ú‰v—Ûç>·%¼1qˆ§Þˆ‡8Ú x<"ò‡xÚŸvŒ§ñð†8âÑŽxx£ÞØ7Ä“Žxx#∇7ºqÄCði‡7ÄãxÉòF;Äoˆ#Þ7ÄÓo´c<Þˆ‡8âáxxCí7â!yˆÇäG<Ú!oˆ§ވǑâÑŽxxCâñyÞoÀ§ñG<¼±¡x¤C<%x„2þÐñ´#þñP„¶K•èLøÀ?öÑ_YgÛÙwöAw à:û("”ñ‡6tÿÀÎЀ}ØC—ð8°àãäÈ$öa\ÂWàÀ>®Ó€0\Ç Ç?ö üÃ`Ç?öÁŒüÃ`Ç>¨ã«í0CùpÇöQzlHÄ?Ô1€Øì°Õ±›‡²°ñP+@+@+@+@+pNP4SM5PSE¸4°4Ðx?à ¾¢ Yðÿ U¤ÿ +@¨ùð P+@¨ûÐ P10 ù°Ó€PE—ðþû Àø5tðù ¯Ð9—ûð P1ð°9þ1à1ð°4à ôð|à@>p Ó€ |Рý0+ 5]pÓ0 Ð@›þ°1а4€ ô½pý +:ðÐ4° ù°[ 51°¸ +:ÐFð ú° P9°Žðù ÐUD"¸4 ‚4ŒUDƸ4Œ+@ÉHÌÒÈZSE4`Œ4PE4 4Œ4Œ4°4PEˆݰ »  '°Ž'°'°'` þ0ï€4°4°ˆáp ÎÖ +P ÊÐ ×°Í ˜0ï€HH'PÝ1‘Y‘Ý‘ ÿñà ñ Þíà ˜@ýP’ÔÑÔ±ÕTÿà+סSÿà+Ô±Ô±×±ÿ°Ô±ÿà+ÿà+ÿ°ÿà+ÿ°Ô±ÿ°Ôá+Ô±ÔQ’%Iûà â°!é ©‘mÀJ¥PYé ñà ñà íà ñà ñà Y¹–líà ñà mé ñà íà íЖÞÐñ é )k)ò Y)Þ ‘ííâ ‘ÞÞЖñp$í•í ‘þÞ ‘ò íÞ ‘Þ ‘ÞâÐñ ííÞÞÞà ñÐé íà ñ Y)âÐé ‘ÞP˜P Ðâ ñà ñ Ô±Õ Ò@û ݱÝ¡pûPŠP ÐÝ@‘ûðà û`ÀÿàL0¾òJ pû0ÀÿàL0Õ±Ô ÷@ ûÐ/°ø°@°ÿÐD°ÿpà+=`ïððÀ ×ág€ û`8@ý`Àû@ûP`ûðî0¾ÒFðÿœ°ܹþû û%PE'PE'°'°4pBÀEMSð+pÑxUt+°Ž0 ð@Ut@'°P°'°0PEð+p3P0@+ÀŽ+p+»SPE3P0PEUt,+àPEUÔ 1°p4àPà°xP` U°ÀPEPPE'°'àPE'À Àì p+þ p¦pUÔþ°;@+p"x"x¸Ž+°Ž¸Ž+p+ÀŽU´Ž+°Ž¸Ž+p+ÀŽU´ŽU´ŽU´ŽU´ŽU´ŽU´ŽU´ŽUÄŽÁxU´ŽU´ŽUtU´Ž+°ŽxxÁx+pUt+pZðù ¬@ Ù°³×p Êp Ù€ ÅðÓë¸' ï°²À × × ×@ ={ § ÿÀ PÀ'°ë¸'PûP¤dK¶û ÿÐñà Ùi û ù ùÀJùÀJù ô ôз}+}ËJùÀJ~+}ËJù }ËJù }+~Kùзò¹òзþò@òзòзòз¬D¬$4˜¬Ô·ñ€ ÊÐÞÞÞâðå@Pñà ñÐñà YÙñà ñà ííà íà ñà ñà íà mÙïà Ùk¹!ÞÐÞÐÙkÙÞíà lÙÞííà ñà â•íí ‘íïÐÞâíð"ñðÞ ñÐñà ké ñÐé )òíâíà Yé Yé ñà Yé ò ‘Þ°–ÞÐY  Ðké ˜P¶Òé+0 Ã:eûP  ÐÝщ°þÿ P!Pðûà0' S‚`%e0ûpû@ $@€›ðöP0?°Ôa5 %PðýÀH°c`û`G0 0(Àÿ°R Ô1@¾¢ðýÀH°c0ÃØ! ÿð%°Ž+°Ž+ÀŽž|+°Ž+p+p+ðɨ¼Ÿ¼ë¸'°'PEëhŒ'PE'Ð'Œ'À'°ëÈ'Àì¸' ‚'PE'PEëXEëXEëÈ'À1P'@Æ °ì¸ìÈëhŒŸ¼žlŒ'°'°'Àëþ¸ž¼ë¸^€ðU¤ý ëXE'PEë¸ëXEë¸ì¸ž¼'°ëXE'PEž\E'°'ÀëXE'PEž\E'°'ÀëXEëXEëXEëXEëXEëXEëXEëȨ¼ëXEëXEë¸ëXE'PEž¼'°'°ë¸ë¸'PEë¸'PEšðòp ¯p Ë)ã0Ùp §@ƒcpUtU¤ ÿ¯p â0ÞÐ Ë™ p òràÉ+pU´Ž%@Ér=‘¹°ñÐñÐñ Þ–ðòùÀJù0º£›¬D¬”¬Dƒ¬”}+ù@þò†-ùÀJôÀJùpÙ¬”†¬”ò¬”¬”£›òòÉJù ùà –` kÙòà ñÐô ¥PÞ ‘â•íà k)âà kÙñà ò ñà ñà â í•ÞÐñà ñà mé ñ ÞÐÞâ ‘âÞÐÞÐY¹!ñ lé ñ ÞÐñà ñà é ‘íâÐé•ÞÐñ ÞíÞÐÞÐ)ÞÐlé ï ‘í•í•íòà é ¹!ÞÞÐÞÐñÐñà %` ÅðmÐÞ ‘é s½ûPþ¾²ã3¼%€ Åðm0×ûðÌ0ÿà+N~ý°ÿ°ÿàä¾r¾ò¾ò¾¢û@¾òVþVþû°NNûð¾Büp°@ûðûðûð¾äÔ±¹ðâP+pUtxxUt+°Ž"xÁx"xUt+àÉU„Ê'°ë¸ž¼ì¸ë¸'°'°'°ì¸'°'PE츟¼ë¸ëXEëXE븘^E1Àù°½ÀPEž¼ì¸ë¸'PEëÈì¸'PE˜¾'°'°ìXE'Ð'Àù€R ÿ +þ°Ž+ðÉ+ÀŽUt¸Žx+pU´Ž+°Ž¸Ž+p+ÀŽU´Ž+°Ž¸Ž+p+ÀŽU´ŽU´ŽU´ŽU´ŽU´ŽU´ŽU´ŽUÄŽ+px+€éUtU´Ž+°Žx+àÉ+°Ž+p+€Ê(Ó°ôP ¬@ Ô@ ʰ §ð ò°©Ÿ¼B@ ÿ ¯p ÅpóÍð ˜ð ù°šx+°ŽUt%°z¾õûP û ñÐÞ é –°ò¬ò¬”ò£›ò¬¤‘¬£¬ù ùÀJñpÙñ0ºù ôñ0ºùòþñ ñ ù¬¬”ñ ñ ñ`Øñ ñ@ñ` ¶ÐÞí m ñð% òâ â Þíà YÙÞÐÞ@™Þ â•áà í ‘ÞÞÞÐÞÐÞ ‘Þ ”Ù–íà ñp$é ñÐÞÞ ñ Ùé ñÐ)òà ñÐYÙñà l)lÙÞÐÞ•á-ž¸xÞÚ‰‹—Î[&XîÛwrŸË}:þÛsßÊþ},EqX¹O%У1sí‹WâÄÖ+¸®àöÄŠ+Ä®{b…Ø[WœXwÅV¹uOÄ=Q÷„ÜqO¬8±‚«Ü+ÂÖ=Q÷DÜq·®à÷D]¹\= ÀÁ‰'êž{"îÖ'âr•{bÅVÊqO¬8±â„Ü­+®àºb@[WÐð`는OÄMËuÅÖÉO¬÷DÜqÓ®÷DÜq·ÆÝwkÜ­q·ÆÝwkÜ+¶®p¾uʼn[WœX±u×ÎWl]A¬NXá„‚b ÄÙ…˜bŠ!Fœ“RÉa«º¶‚bš}þÇ–sÉEœ“R"¬Nˆ‹þ«^b±E_üÇ–âiÇ¡vä'Kþ‘Gžxz”Gy.ò" åq¨Çx€ŒGž‹â92Êwz|RžwztHž‹ä¹(J‡¢<2ž½±$qâñ¦5j£ÇSJpÈ›xÄyÒ‡¼iÇ!yÄqÈ›x¼içÉxÚy§‡Ú‰ÇAŸô¦‹¼‰Ç›x¼‰Ç›vâñ&oò&qÞQsÑ'½i'qâñ&oÚ‘Gœx¼‰Ç›v¼‰§‡¼‰Ç›‹¼i'žvžô¦t.òFqGqâñ&x¼i'žv.ò&ožô&oJ°¤˜?ÚðFœx¼‰G‘“âC7]u×e·Ý´JP¤˜?Ú€þ‘EtÐ@•öAiŸzÿEi—öøŸ}þ!‚Yö)¸áö)fqJX«¸¶Šë„ºNˆë„¸¶Z]¹Nˆë„Š+¹¶ZaÝN‹«NXa«â[A¬ºNXa«’“k«Nˆk«¸Z!­¸NXa«NX«¶Z!¹NXᄸŠë„ºNˆK¬¸ªë„ÄZa«¸Za«¸ÄZa«¸NXa«ÄZ!­¸NXa«ÄZ!¾¸Z«’[«ÄZa«NX+¹NXá„’[á„¶Za«¶Šë„¸N넸NXa+¹¶ByþÙ'Ùûùç@rˆ+¬¸¶By€þê1Ÿö™äÚj…­ä:¡„}V‚>zé§§~¥}N’eŸx¼‰GÍ‹,Ùç"q€ŒGyzGÐwD}GT‡Þ¹èQÅq¿þwGAÅ‘çIKry’8âáx´Añ(E"y8ÄñÆEÚá‹x#Þpˆ7Ô”oˆ#∇7âá ‡¨ÉñðF<¼áqÄÃiG<¼oÄCñF<¼±¨vx£Þˆ‡7âáx´ÃñǓڱ¨vÄCòðF<¼áoÄCMÞpˆ7âáxxÃ!âˆG;¼ñ¤vxCO‡CÄvx£ÞˆG;âÑŽxxÃ!épH0¡Œ?´áþIÞÀÄIZ3HBÒ‡Dd"y‚`BhCõ$y üc“Äd&59É}ü(›¥Jdñx„àqáJ\¶²®¬`++8Á N— òrÙÊ Â²‚°œ .'ˆË V°•œ@.\©K/O—¬€++8A\¶"—¬àrQæ N—¬`+uáÊ ¶²®¬àr9A\N —|`[YÁ Vp‚¸l%.\¡Ì Vp‚œ .\YAXV°Êœ .\YÁ Vp¹„¥.'XÁVVp‚¸œ`'XÁVVp‚¸œ .'XWV°•¸le'ˆË âr‚pe[‰ËVVÀ•peþ\‰ËVVÀ•ôr'Ë Vp‚¸œ`\YÁ ⲕ¸le'ˆË âr¹œ`'XWV–œ`\©‹41w죴@„N°‚­Ôe+uÑ‚&¦ñŽ}”ƒˆ€Â VÀ•l%.a)A( Ê}ÈâÞˆ‡7â!Žxx£˜øG<ÄyˆCPjŠG;Þ5ÉCyG;âÑŽx´ãñF<¼¡&‡¨É!âpˆš.ÒŽ‹ˆÃ!âÇ;Úq8¤ñ†Cä!ŽxˆãORS<Úa Y¨éíˆG;âñŽ6ôè%hÇEÔäv8ÄñG<Úo<ÉñhÇ“Úq‘v\DþiG<Ú!*o¸¯iG<¼ÑoÄCi‡<¼oÊ툇8âáxxCM‚jG<¼ÑŽEy#íˆG;."q8¤ñðÆ“¼‘Ž‹´Ã}jЇ7âát8Ä%°D1þІvxÃ!éPÄI”¹c÷xý B?zâQ‚œ@.[‰ËVär‚œ`'XÁWÀ•¸œ`'ˆË (–le'ˆË VÀ¹„e'XÁ âÒ˸œ`[‰ËVâr‚¬`+u9Á N°‚­¬àqée\N—È¥—+ØÊ ¸—Äå+8þÁ ¶²‚°Ä¥—+àÊ ¶²‚¬àrÙÊ N°‚°¬ —q9Á N°‚°È%,+8A\N°‚Äå+8A\N°‚­¬`++8Á N°‚Äår9Á ¶²‚­¬à+8Á N—­Äe+qÙJ\¶—­Äe+qÙJ]N°®¬à+8Á N°‚Ôe+qÙJ\N°‚­¬`Ç+8Á N —PæráÊ N°‚È…+u K\¸²‚^® —qÙJ\¶R—”`›„yÌO²YüãIípH:,±xˆCñPÓ;Úá qÄ£∇7Ä‘ x£Þˆ‡8â!Žxˆ#Þ‡<Úqq¨éjrˆþšÄvˆ#Þà†âá Aµ#ÞˆG;ÄÑoÄCMïx’7ÄoÄ£ÞˆG;0!‹v„Cñh‡7â!Ž?”#§Á;¼qÄÃjò†C¼!‡xÃ!íð†CÚ!ŽxˆÃ!íð†šÄo´#jj‡7Äo´ÃíðF;âáx´Ãñh‡7Ú!Žxx#íðÆEÚáoÄCMñF<Úá ‡ˆãIÞˆ‡8âá 5y#â¸H;¼ÑoÄ£ñh‡8â!ŽxxCMñ€½7âÑoÄÃñF<Ú!Žxx£Þˆoˆoˆ‡vy¸oh‡(GP†?h‡h‡tˆEø‡}þP¤ \؇Ø Á”‹­(GP†?h™K‰}PÁtÁ„Aè‘…}h‡襸؊¸ØŠ88¸8BÚŠ¸àŠ8؊襋¸8 ¹àŠº88ØŠ88¸88¸ØŠ¸ØŠ¸ØŠ‹88؊؊¸ØŠØŠP¦¸ØŠ8¸8¹ØŠ¸àŠ8¸8ºØŠ8¹8¹8¸8¸ø®X­X‹­X®X­X®¨ ®¨‹X®X®XX­Xˆ‹‹­XX­X®Xˆ‹‹­XX­ˆ‹þ­ˆ‹­ˆ‹­ˆ‹­ˆ‹­ˆ‹­ˆ‹­XXˆ‹X­ˆ‹­X°XXˆ‹­X(¤X­XXX^Z­Xˆ‹X^ZX°¨‹­‹¨‹­X­ˆ‹­ˆ‹­ˆ‹^*DÈ•…ð5ñ†vˆohK؇vpohoH‡v¸qH‡tpˆd€o‡vpoh‡¼ˆvð†vðoˆo‡x‡vxÉx‡xoˆqgoPoøHoˆoˆo‡x‡xð†vð†xxIo¸Øó5KØqpˆvx’6‡x(…pˆvxqˆ5‰þ‡vˆo¸qˆ5qˆv¸qqpˆvqð†vˆqpˆvX”vˆopˆvˆy‡'‡hoh‡xð‡‡vH‡vop5ñ†‹qpoqh‡'i‡xP“tx‡vxyð‡h‡xð‡ð†‹h‡xð‡‡ð†xh‡xh‡xð†À„bøƒ6À­xð†xP„“0²RRX­ˆ‹ ‚xÎíäN‹‹(L(†?hƒ„4ÏóDOó܇\؇x(ºàШЏ8ø€¸8è±¸Ø ¹88¸8ºØŠºØŠ8ºà ¹‹88¸8þ8ØŠ8ØŠ¸ØŠ¸8¹8º88ø€¸8¸ØŠ¸ØŠ8֨Џ8ØŠàŠ¸ØŠ88ØŠ‹¸888àŠØŠØŠº8¸ø€àŠ8º8¸8¹ ¹‹8¹88¸8¹8ØŠàŠ¸88¸ØŠ¸8ØŠàŠ¸88¸ØŠ¸ØŠ¸ØŠ¸ØŠ¸ØŠ¸ØŠ¸ØŠ¸88ØŠ8¸ØŠ8¹8¹8ØŠ¸8è±ØŠ¸888º8؊؊8Ê8Ø ¹‹¸àŠ‹¸8¸ØŠþàŠ¸Ø Ê8HÏÜYØq¸oˆqˆK؇©l‡tˆ‡©ô†th‡p˜Êd op†Pƒ€€KPƒ€€Kðg) o‡tˆ†H€øoðg5° ˆˆ€€o‡vð†tð5ñ†xð†x‡x‡th‡xkõ†xðqˆ‡v°„\ˆ‡vxoˆ‡pð†xh‡x„Poho¸qˆoˆoˆ‡vð†'ioˆqˆoo‡‹y¸qˆoˆoˆo‡ð†xho¸oˆopopqp5qqˆoˆoh‡ð†xPþ“xð†xP‡ð5ñ†vð†vˆoˆoˆop5yo‡xP‡ð†vð†xð‡€=‡h‡hoˆqpˆvp5‰oˆo‡‹(EP†?hƒ'ñLø‡}8$C…}8  …臊؇ֈXÀ‡ÑµÝÛ• ®(EP†?hƒbÞà^ê‘…}ð†à P^ å€^ €ÞåµÞëUÞPÞÀ^ €îµ^èÞÀÞ€èÞ€XÞPÞP^ €ë ðÅÞåýµ^X^è^þ`ì ì €ëþåßå å ð ë €å à_àßë ì €ë €ë ì ý €å €å €î €å å €ååßX`ýíက î^èèaåíaë…Þå€X^þ½^°ÞPÞàŠÞÌ…qˆo¸ˆvÀ„øÈtÀ-qhã|ɇd€op0‚n°0o  ðg#ð†ph(xÉ`lx† àqp0oèg(܇tðqhã—LoHoH‡qHo‡—Œãtð†tohK°Ø‹‡vˆy‡þ6è‘R('‘qPy‡xh‡'ñ†xð†x‡‹ð†xð†xð†xh‡h‡‹P“xh‡‹h‡xh‡‹h‡xð‡h‡xð†xð‡ð†xh‡h‡x‡xð†'ñ‡ð†vˆox‡xh‡x€½xð†xhAi‡xð†xð‡ð†xð†‹ð†xoˆy‡xð†xð†th‡x‡vð†xð†vpˆv¸qð†wh‡xhy‡xoˆo(L(†?hƒvð‡HEø‡~èÎ`7ptêdÀQpƒ}è‚“ ‚ØŠˆ~X„ˆ~0²È_q؃ˆ^àÎàþ¹8P„bøƒ6H‰µfë¶v뷆븖빦뺶ë»^ë}È…}ˆ‡ €½Àn‡ìÂ6ìÃFìÄVìÅfìÆvìdžìÈ–ìɦìʶìËÆìÌÖìÀ€¸8ؼíÑ>‰}È…}ˆ‡ÔNmoˆ‡t°„}‡ØŽípˆmqˆítmoHøg€oè†d€og(op†X†qøUP€qà†Ð…pðUP€np†ø†lèg€nít‡q‡qHÙŽíp‡qð†Ø‡Øq‡pð†qo°„WHmo‡xh‡Ônyˆ‡G(qˆ‡wHÕVpoþˆoHmoˆ‡vHmoPpoˆoHív‡xPqˆoˆohoˆoHívðÕö†xPÕn‡ÔnqˆoˆoPmoˆoHm5Qðxð†xð†xh‡wh‡xhqˆohoPW“xh‡yˆqèqÕÕn‡x‡xhqˆoPðvðqèñtHíxeøƒ6HívH‡xP„عÐ_Ê87„yàó>çs ‚“x|ˆ‹Ð}¨  Û=vX(„ˆ}ÀÝÐ~‹xeøƒ6 íPõQ'õR—kY؇v¹ÄŽ‡Í†õX—õY§õþZ·õ[Çõ\Gl‹0õ_gkY؇xð†vˆoˆohKø‡nè†Øîog‡pÀ­nðjH¸g€løggwÈg€ØÎg€kpèo †d€kp†ð†nÈg€qèqgogÜzIÙö†pxIqxÉpðÙŽKÈ…x‡xˆ5‰qhƒ9ˆ‡v‡xð†xð†vð†xð†xðŒoŒ5ÁxohŒyoÀxox›‡v°ùvÀxo°yoh‡xx5‰oh‡xð†xyð†xhŒ÷ŸoˆqˆoøþHŒoŒ‡xP“xoðyqð†xðØ‹qh‡phoÀúxð†vˆo€=Œ÷†xŒoŒ÷†xð†vÀxq°ùvˆoHŒ÷†À„bøƒ6ðqˆoˆE8‰°€µ€^Z­¸w }Ò¯ÒÿZ "@…88؇ˆ}XЇ0x‡xà„¸8v€ƒ­NÐ}ˆ‹‹wèqx‡-X …wȇ^€ˆz€„kè†wè‡wx‡-8À„bøƒ6€ëóGÿôWÿõgÿöwÿ÷oë}È…}ˆ‡ˆ qˆqˆqˆqˆxÞÄÅO\;íµÛ~;î¹ã®Îÿ¨3€îÁ o»,ûÄ‚ž4 8òˆ#8ŽÊ#Ž<âÈ#Ž<âÈ#Ž<âÈ#Ž<âÈ#Ž<âÈ#Ž<âÈ#Ž<âÈ#Ž<âÈ#Ž<âÈ#Ž<âÈ#Ž<âÈ#Ž<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡þ<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<þÄ!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÈCò‡<Ä!qÄCíÀ r@ƒ ¯©N,þѨvx£ŽÂÄ?²‘ qdCÙèF7®¡ÕnhUÔHFšá dƒÎ@6®áŒPÃ`5ž±P#`A3¢±4ÃÐj6¢[\C«ÇÂ5²qŒ!\#ÇÂ5¨Žlˆ#ͺ†8º‘feÃÝð†%^ÑŽx´ÃQñÇäSˆ ®‡7ÚþÑ(o8JÞh‡7ÕŽFy#툇7Úvx£ép­8ÚÑ(q4ªñh‡£ÄqÛxˆ#Þˆ‡7ÚoÄÃíˆG;äá G™,ÞxG£ÄѨv8Ê툇7âÑ×z£Þp”7ÚvÄ£ñhG<¼Ñ(“µC∇7âáxx£òF<¼oÄÃdñðF<ÚѨvÄ£ñðF 0QŒ?´¡ÞhT:ѧͭ`møV°¹œ mS€†;Ìà'˜aÈS(¦P„)„í:øÇ b Äà0XÁ t€œ`(>`6¤âû(‡V „í+ØÜ t þÄ 9[ þq‚°Å Š(ÆÚ@;?`гöaèEÓ) @PŠ}0šÑûØ>þ°w  Òžþ4£÷‘‹}Ä£9È U¯Úd¬~5¬c-ëYÓºÖ¶¾5®s­ë]óº×¾þ5°ƒ-ìa»ØÄG<@ƒРû5´£M»}äbí‡<âÑo´#–ø‡VÅ‘k\CÙ¹¯!­^#À†3k8CÙ¸†3p g @ € ¨AnD#€ ¾q g @«ä–Àˆl$ÔÈÆ/€lüÔø5›ndã"ÏÆ5º‘þKÈÂñðF;¼±êv´AñxD ÞÑoÄ£«n‡7âáU·#â‡7âÑoÈÚ¬G<¼o¬Úd«öF<¼o´ÃñG<¼o´#í`µ8^-ŽxˆãÕÞˆG;¼±êvˆCñðF<Úá V·cÕ∇7ÚáxˆCñðƪÅ{ƒÕÞˆ‡ÉÄñjoÈ£«Ǫ½!vÄ£∇7Xívˆ#â`u ¡Œ?´aÕíHG<ñ|ˆía;Ö–¶¬m'H4‚ïiŸøÆ(~Ö¶ìc1ðÇ bðµ­@ÿ8AØt blnkËÁ-ూþÐcm+8|ñŽõûc1ÐÇ Ö}¬à+ˆA 0¡Œ?´aÑ€§í:À>HÛ }ÂÐA>ä(À€ÒÎ>üƒ: À>< .š,üƒ8”À©åă7ă7¬š8´ƒ7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7Äþƒ7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7þă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7ă7¼Z;@Ð@”À~¦§ÉÂ?¬Z;ă8ăÉXB?ˆÃ5\6d5d5dC7d55\54Ã5dÃ5PÃ5dÃ5P¹ƒ3 ¹ \º]ÃkzÃ5(C3\C6Ûk¦5\5,g6Ü5PÃ5¼&5\Ãþk¾&5ˆÃ5Pƒ8¼æ5ă%C<´ƒ<ˆC<´C<ˆCÈC>”B ¼š8ă7Àš7ÀZ;¬Z;ă7´ƒ7ă7ă7˜L<´CäÀ ¬þ€àÃÚ¬€4„Â>8Á lNØèÀ?¬@ ôà œÀ œÀ=˜Á œ€èà ÄÀ?ˆM üà œÀ Ä@ XB1üA,üx8À>üƒ=¤@ °Ã>TÂôCŸƒìƒ=¤@ °Ã>Ê„Á>üÃ¥íÃ?ØC $@üÀ>üƒ: € Lƒ LC?¨Ã¨AXÀìÃ?¨Ãüƒ; @Ÿà$ÀüÀ>üƒ: €XìhzÚ>äÂ>ˆC t`°š7¬š8ÈC;ìÆf¬Æn,Çv¬Ç~,Ȇ¬ÈŽ,É–lÇzC¬@ èà Ā>Xà Ѐ4p œ$Àà „>¬@ 8‚¬ Ü>¬À èC„Í èƒ¬À ˜Â?¬@ èà lN>䀨„À#(ôÁ¢@Ÿ£í8À¥Ù6ì>àÀüƒ=;üÃ>¨@üƒ=`Ã>àœÀŸìƒ;9Ê>´À ܃=˜üƒ;@ÜÃ(@äÃTÀ>¸ƒtÁ>øC øÀ>¸Ãìƒ: À?ìC¼À=ðà Á>¸þƒtÁ¥Él¥ÉÂ>ÄC œš@œ2œ2PC6(C6Ö¦¸Š7Ãkƒ3€ÀƒŠí5̸ \3\C6(ƒÑ^C1PC1¨x6PÃ5\ÀÀÚÜB1Ä@*¼Ã>äC/8Á ¬À&,àœ@¼Ã4LøÃ ÄÀ?„Í ¬À&,àœ@ XB1üA,ø ,Ú>€ƒ\Çï8À?ìƒ „Á?؃CÇï8À>þøI?€CÜ ØÃ>ôC0(À?¨\8À=ì:À?¨ƒÜC?ì38€?¸Ãüƒ: À?ØÃ?ì8(À?¨ƒÜÄ/Ú>äÂ>ˆC ä@ă7ă7ÄC;xCtøgRRˆ@ãöù' þ©¤‚ö!%…,ˆ øöQ'röyotØÇ=pøÇÜsg÷Ô)`wØgŸÐþàuØÇöA' ¨¶‚ÜàŸ}ÞëÚë¯Á[lYö‰§„ô„ xÚ‰ÇñÚyÒ›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼oÄÃñðF<¼oÄÃñðF<¼þoÄÃñðF<¼oÄÃñðF<¼oÄÃñðF<¼oÄÃñðF<¼oÄÃñðF<¼oÄÃñðF<¼oÄÃñðF<¼oÄÃñðF<¼oÄÃñðF<¼oÄÃñðF<¼oÄÃñðF<¼oÄÃñðF<¼oÄÃñðF<¼oÄÃñðF<¼oÄÃñðF<¼oÄÃñðF<¼oÄÃñðF<¼oÄÃñðF<¼oÄÃñðF<¼oÄÃñðF<¼oÄÃñðF<¼oÄÃñðF<¼oÄÃñðF<¼oþÄÃñðF<¼oÄÃñðF<¼oÄ£âñFŸÄ€¤§b3ç9љίÉâäñÆ;Úq´Ãÿ(5ŠAbPãÔ(5ŠAbPãÅ`P1 Ô j£@͸FšAbP£Ô(5ŠAb4ƒÙ(FŠ‘!j(ƒÅÈP3¨ÑŒkP£Ô(Æ5ŠQŒk£Ô(Æ5ŠAb\£Ù(FÚa‰\'Þh‡xÄÑyÈ£%hG<¼!qˆÇñG¦Ú!žvÄ£OòÆ“¼ÑŽ'µãíÈÔYÅvÄÃgmÇ“¼ÑŽxˆ#S∇<Ävx£ñðyâá ñ´þ#Þ<Äá ñx#âðF<¼v<ÉâG;¼oÄ£âi‡7âñŽvÄÃñðF;Ä!oÈÃñhG<ÞAoÄÃO"7ÚvÄÃ%°D1þÐoˆ#Þˆ‡"ܳ‚h­àÍÊ× 8€®äëÑúÀs£µ‚¬à4€<š­fEkÏ¥Á Vp‚D«Y'XÁ Vp‚i¡kÑZA´šu‚DkÑZÁ B`‰bü¡ _óþ؇=0‹|ü0> ‹ $böÀ,òñp àk C×öaãû†þáŽ¸ÇøÇ>Ô!€¸þäpO0 w àîÀ>ìv¼gÿPGe)OÙkûÈÅ>ÄQ‚8AðÆ“¼qÄÃâiG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£þñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñþhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñðF<¼‘©wx£ñ ÚJ°*oŸûÝ÷Ú>d±vÄ#íðÆ“,±b\£×(F3ŠQ kƒÅ Æ5ŠqÒkƒÅPP1N*C®®!CŠáNꊚኮ¡¨¡¨¡®ŠŠ2䚊á¨!C”Á@®¡®®¡®!C”á,áÄáIÈãâ¡ ÊA¡Ä!ÚáIÚ!ÚA<¼!¼!¼¡ÚÁÄC ÏJâÁÚAâAâÁÚÁÄÃ2EþžD ½!ÚÁÚA<ÄáI¼!¼á¬žÄžÄâÁâ¡Ä£2¥Ä£Ä£âÁ⡼A<ÚÁâAäÁä¡âÁ”0Ú!ÚÁ⡞d©Ä£âÁâAģģ¼!Ú!Ä!ÄáIB”áÚ S¼þ!N YN`Nà¦åšåš%ZVàV»¢eN`N`N þ¡œ`N Y¢¥YN`ZN`N`N`N Y¢eN`N`ÐeZN YN Y¢eN YN Y¢¥0Aþ  ¦  ûÐöÁ€öÁ˜ Üc”@ àþþÁ€þ˜`öá=öáDa!ô`àZàöÁLúA `þA`þA àÔ^`àÁ|àÔaþAÀ=ZÀîaàúÁÀûŒrÊdáò¡ÐÄÃÚáIÚ!ÚÁ”ð*±2+µr+¹²+½ò+Á2,År,ɲ,Íò,Ñ2-Õr-Ù²-Ý’+ÙÐÚÁÚA<¼A„À „ ޲/ý²kdáÄÁâAâ¡âAâÁØ0¼!ÚáIÒ!äAÚ!Ú!¼¡&óI&s2ã!ž$ž¤âA¼!â!ÚAÄ!Òþ!Ò!S¼!â!â¡âa2ÛáI>3>3Ò!Ò!,a¨!Ò!¼!Ä!Äáä!J¡ÄCÚÁâAâAâÁâÁâ¡äAžÄ”0¼¡¼A<ÚáIÚ!Ú!S¼!ÚÁ”P<¼!ÄA<ÚáI¼!S¼A¼A<¼¡¼¡¼!¼A<ÚÁ2E¼!ÄÁÚÁâA ½A Å£â¡Ä£âAΪâÁÄC¼¡äAÄ£âÁ”0¼!ÄÁâ¡ÄÔ0Ä!¼á¬¼!¼¡,¡þ  ÚÁÄ#0Á=¢eN YN`N`¢eþ¢¥YN`¢eN`¢eÐeN YÐeN`¢¥YN YN`N`N`N`N`¢¥YÐeN`ZÐe¢e¢¥YN`¢e¢¥YN ,¡þ  ¦ ¶Ïhþ`þA@B  À=ö úÁ=ÁD Ê` ŒR€n!ì¡`~`úAÀ=ÜaþaÔaþA€&@~`þA  Üa܃àÆ Ô¡þò[÷!þAJmÀâ!]½A ½!]Å!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!þÄ!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Äþ!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!¼A þ½!¼!ÄAâÁÒµmJ`¾µŒ¹odáÒu½!Ú!ÚÁ0ÁèèØ0!é,!-,èî¸éîÁ0Á9-, ,!Á0¡1A î,îXšÁÄa׸Ú ]¡Þ!ÄA¼•YYÒU ½!]ÛÁÖØâA ½!ÚÁâÁÚÁÒµÖXâ¡âÁäá*ßÁÒÕâÁX¹ÒUä!]Û!ÚÁÖ¸¼—רÄ•ßÁâÁâÁâAÖ¸âÁâA ã¡ÄAþâAÖØÄaÛÁpYâÁâAâÁÖØâ¡¼!]Ó!]Kà”áÚ ]Ûa2áè¡YN`¢eN`N`¢¥YN`N`N`N`N`N YN`N`¢eZN`N Y¢e¢eN`N`N`N`N`òe¢eÐeZ¢eN Y¢eN YN YÐ%Aþ  ̸k˜¡þÁhöáöÁ=öÁ=ö¡þaþÁ­õÚÀöá=öá=öáöáŒÆ=ŒÆkŒÆÀ=ÜúöáöáŒÆ=öÁ=öÁ=úáö!­RöAJÀ  À `½•Ûþaß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß—ß!]Û!]½AÛÁÒ  =J€³]|ÁdáâAÚ!¼!”0¾AdAlÁz¼zœdÁrArArÁd!d!rAþ~\lár¡Ç_Al!^Av¡Ç{ÜzÜd!d!lA^AvA ürádÁrÁ^ArálÊ{<À\~¼šaÛÁÚÁâÁâ¡ ä!J¡â¡XÙâÁâÁâ¡ÒÕâAÖXÒÕÚ!Ú!Ä!]Å!ÚAÄ!¼!¼á”0¼!Ú!”0¼!]½¡â¡âÁâÁÚ!¼a½á*ÓÕâÁÒÕÚ!¼¡â¡Ö¸âÁ¼!äÁâ¡â¡â¡âÁâÁâÁ®’•åA”0äÁâÁÖØÖX¼!]åAþpÙÒÕÒ!]½¡0¡þ  R+Ä!0aþáVàV`¢eâO`â£eN`N`N`N`N`N`N`N`>`ÐeN`>à&þ&þVàVàVàVàVà&þVà&þVàV _VàV Z&þV ZV Z&~N ,¡þ  \ܘ ¢lþÁhŒr¨Ìh¾fÞC /÷áÅrraÄ¡ÒCÀÚ!ÚÁÚÁÄ!”0¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼þ!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!¼!Â[ÿ¤ûÏ>ýõóOºþé³Ï>úü£Ï?ûüÓO?ûô§Ï>ïÓÏþ>?ÜÏ?¼î?êþ“nýîS&Êüц"÷·8h ÍÈ* ¸ÈûèÎû¸Oûô·ÏÊ:«,Ë>ò”ŸÈ#N;ñÈ#N{ï´O:òx#7d:3€7íÉã<Þ´'7òxÓž<ÞÈãM{òx#7íÉã<Þ´'7òxÓž<ÞÈãM{òx#7íÉã<Þ´'7òxÓž<ÞÈãM{òx#7íÉã<Þ´'7òxÓž<ÞÈãM{òx#7íÉã<Þ´'7òx3x#7íÉã<Þ´'7òxÓž<ÞÈãM{òx3Ä#7òxÓž<ÞÈãM{òx#þ7íÉã<Þ´'7òxÓž<ÞÈãM{òx#7íÉã<Þ´'7òxÓž<ÞÈãM{òx#o´GÞ‡7Ú#oÈÃ푇7äáöÈÃòðF{äá yx£=òð†<¼ÑyxCÞh<¼!o´GÞ‡7Ú#oÈÃ푇7äáöÈÃòðF{äá yx£=òð†<¼ÑyxCÞh<¼!o´GÞ‡7Ú#oÈÃ푇7äáöÈÃòðF{äá yx£=òð†<¼ÑyxCÞˆG;Ú#Žp´#ñð†<Ä!qÉZ v†ÈD HÿðF;ÚóŽvP«dþòF{¼Ñ2ÉCÔj8âÑqªdz™¼A­vÄÃíHG;•ŽxxCPí`•…Úãöˆ#í Ó£âá 2ÉCm‡úÓ¯ÿôëûøÇ>þ³ì£?ýúÇ>ú³þìÃ?û%Šñ‡6(@ûøÇ>Ö W‘íãûˆ«]¹\ìC%@_ àxxƒLíHG;¼vÄ# @4p g Þ`•7Xå VyƒUÞ`•7Xå VyƒUÞ`•7Xå VyƒUÞh7Do°Ê¬ò«¼Á*oPË “7âÁ ´Ç¬ò«¼!(g  ‚:†å VyƒUÞ`•7XåxpCíñ«¼Á*o°Ê¬ò«¼Á*oŠ"h‡ ¼Á*o°Ê¬ò«¼Á*o°Ê¬ò«¼Á*o°Ê¬òþ«¼Á*o°Ê¬ò«¼Á*o°Ê‚jG<¼ÑŽöˆ#Þ V;ÈD¿¢ w-1ö!‹Ä£ÞˆG;¼a!o´#íð™ÚA&oÄÃdòF<Òáx¤£í‡<¼oÄ£ÞˆG:Ú!ŽxxƒL툇7âáx´£=âˆG;¼tˆ#íˆG;¼oÄÃñðF<¼!Žxx£=Ї8ÚÓŽtXHíñF<¼ÑqüAòxD Èäxx£Þ°7Úã j‰CÞˆ‡7ÚáöXÈñhG<¼o´GñhG<Þáxx£=âG<¼ÑqÄ£é “…nÝžvˆC∇7þâÑ2y£=∇8ÈävÄCñðF<ÚA&o©Þ”7ÚA&oÄ÷öF{¼Á*oÈ£“ÞG<¼qÄCd*Á#”ñ‡6x#Þˆ‡8 ~¨_ÚÇ?öÑŸ~­lÿ؇ö1 }ôgÚ‡öÑŸ}üg%x„2þІïÃÄï¸ÇE&‹È£™(!@¦[·#âh8D1:`#™€3àxx#Þˆ‡7âáxx#Þˆ‡7âáxx#Þˆ‡7âáxx#Þˆ‡7âáxx#Þˆ‡7âáxx#Þˆ‡7âáxx#Þˆ‡7âáxx#Þˆ‡7âþáxx#Þˆ‡7âáxx#Î@{¼oÄÃñðF<¼oÄÃéðF<¼oÄÃñðF<¼oÄÃñpÆÚoÄ#Î@<¼oÄÃñðF<¼oÄÃíñF;¼áŒ´#Þh3oÄÃñðF<¼oÄÃñðF<¼oÄÃñðF<¼oÄÃñH‡3oÄÃñðF<¼oÄÃñðF<¼oÄÃñðF<¼ÞpÞÞÞÞÞÞÞÞÐÎ0íÞÞÞÞÞÞÞÞÞÞÞþÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÐñà ò íÀ*Þ`!í!Þà!Pôð%@ 艟Š" ÿà d"ñÐíÑñ ñà íà ñà ñà ñÐñà ÞÐÞ·F&íÞÐÞÀ*íà ñ ÞÞÞÞ@&âÞþÐÞÐñ ññÐñÔÒéâÐñÐÞââÞЂâ ñÐô ¥PÞÐíÑí!â@&íÐÞÞÐIdâ íÐÞí ÞÞ (ÞÐíí@&ÞÐíÞÐñà ñà ñ íâà ä íÞ@&í@&íÞ@-ÞÞÞÞÞÐÞíÞíâÐíâ í@&ÞÞÞíÐíÀ*ÞÞP˜P Ðíá òŠŠÿ°ké–o —²%€ Åðm—y©—{ùûÀ—þ©—û û %ðÊðà ñÐïpkíá ñ àçÐáñà @  0 òÜP P?ñà ÜP 0?ð í!€ íaH ßÐÞ íÁ )Ë Î0j Ëà òÐíaH ßÜp—æ°D é`H° ßÎ j`à  !`° íÜ 0 ° òà ÐñÐíñPž°à ÜP 0?ð í¡ 5 ðßÎ0Þå ƒ@þÓ© à  !`?0Þ æ€ 2ð íÑíñPž°à ÜP 0?ð ÓÙÞ`5ðâà  €Þ`HðØÐÜ 0(° íðPž°æ€ €2ð íÁ Cð Óé ò ¤Þ Jê ò ¤Þ Jê ò ¤Þ Jê ò ¤Þ Jê ò ¤Þ Jê ò ¤Þ Jê ò ¤Þ Jê ò ¤Þ Jê òí ¤ñðÞíÐíà í ¤éôPûð½ê«¿ ¬Á*¬Âº²°Þ ¤âÞ°ªíÑñÐñþÐJ*íÑíá ñÐâÞíÐÞÐíà íà ñÐñÐÍÚñ2ÞÐâ ¤Þííà ñÐÞííÐÒ¬ñ ñà ñà ñÐñÐòPñà ñ ñà ía!Þ ñà ñà ñ`!ñà ñà ñ ñà íá íá ñÐÓé ñà íÐéÐÞÞí"í!íá Ó)ÓÙÞÞÞÐâÐÞÞ ñà òñÐÞ`!ïÐñÐñà òÐÞ ÞòñÐñÐÞ0í Óé ñà ñÐíá þñà ñà ñà ñà íqkÞÞÐéÐ% Êðm ¤Þ€ ÃJ¹•;¬.`¹™k¹ûPŠ  К+º£Kº¥kº§[º²°òPP „í!éÐñ ñà íá   ò ò íà  ×pLÀé&ðß àñ &ðß  Àñ 0 ñœà íÐ,€ á€< ¤ÞÚà ñ`8ðñà `ÞkPñ`!Þà!7ÀØp8 Þ¢`ËÀÎ0ñà ñ 7ÀØ`8Àñà `Þ΀FÞ°`þ!Úà ñ  8pßà ÞÞÎ0ñÐé&ðß  Àñà -Àß  Àñà ÐíÞà ÐÞ°   íà *ÎDð áÐ>Þp,€ æ€<ÞÞÎ0ñÐé&ðß  Àâ ííÐ/ð åð ñà `ñ`!-Àß`8ÀñÐÚà ßP 8Àíà à ñà ñÐ,€ á€<íð ð ñÐía!ÞÐía!ÞÐía!ÞÐía!ÞÐía!ÞÐía!ÞÐía!ÞÐía!ÞÐía!ÞþÐía!ÞÐía!ÞÐía!ÞÐía!ÞÐía!ÞÐía!ÞÐía!ÞÐíÑñ ÞÐÞÞÐñà íÞÐÒâ  ñP %ðmÐÐ ­Ð ÍРйðí!ÞÐòà ñà íà ·æ íââÐÞÐÓé ·ï ¤ÞÞÐñ`!«*ñ ííÞâÐñÐñà ÞÐí!ÞÐíÐÞÐñ ñà ñ ñà éðñÐJšÓ)m`L¥PJÚñà ñ ÓÙJÚñà ñÐñÐñà íá íÑþñà ñà íÐí âà áâíÞÐéðÍÚíá íÐí0í Þ ¤ÞÐ+éâ âáÐñ í¢¤ÞpkÞÞ0ÞÐñ âÞíÞÐñà ñë ïÐñ ñà ñà éÐÞP–P ÐÞÞé ÝÙmÐkP kP ûp7€á}8 ÝçíÐûPŠP Ðè ßñ-ßóMßõ-ßû û %€ »ðà í!JÚñ ¿@ß°ªÎËÞà  ëºé  0ëº ñ þ ÐÚ@tp âñ    ñ ¿ ÞÞÞéÐ`ò ÐÎßíà `!í!æ ºâð à íÁ PËÎ0ñà ñ`  ò ¿ ñà ð íÎßíà ÐñßÞð ÐÎ0ñÐÓé  í±  âª í ° â ª`ïà à ñà íá à ñà âÐ<Ü@Ëà ð éà ¿ ñ    ò ¿ ñÐÓé  í±  ⪠íÐéܺ`!ñà ÎþßÐñ    Þ ¿ ÞéÐÞ ÐÎ0Þí    ñ ¿ éÐíà ñà!Òb!íá!Òb!íá!Òb!íá!Òb!íá!Òb!íá!Òb!íá!Òb!íá!Òb!í‘ÞÞ Óé ò ¤ÞÞâ ÓÙÐPû`ß5Ýû ûà B=íâP°Þíâíñà íà íÑíÑâÞÞÞ ¤ÞÞ ¤ÞÞÞéà íà íà íÑÞ ñÐÞÞÐþâÐí0í0ÞÞÞÐéà ñ ñÐå@PâÞ0Þ0íùÞÞí0Þ íÑíÑÞ0íÐÞÏóñ ñà íà íà ï JúÞÞíà íÐâÞíà ñÐÍÚñ ÓÙâÞÞÐâííÞÞÐÞ Ôâ ¤íà ñà ñà Óé â «ê íÐ%ðÊðmé0ŠPß ÝýPÿÐ/ûð 7PÂRê »ñÏàA„ .dˆp_‰GÊþ´iXÑâEŒ5n䨱£¬}ñJ<"Fþ@¼xâä‰kç-ž¸xòœÐÕÎ[»xßœ ç­³ñœˆ'.]2íœ @/€xéHH áR»d,lµAž·¦ñ@ˆP6@;gP~s6@\»vñÚ% ÀÕ„xí¼9 @#ž7gÚÅk—L€]Þœ hêL@»xßœ —Ôˆ²´s6 ž¸xÞÚ9¯Ý8gš&ÐÎY€vñÚ%ÎÙ€xíPzs6¥”8cÞˆG:¸!€ex#ªP@:âáx¤CÐEXœ€vÄ£ÜÀ2¼ÑŽpx£Ú À%¼d ΀7P¢ ,Ã(iJ¼qÈ#â@‰7Pþ"”x%â@‰7P"”x%â@‰7P"”x%â@‰7P"”x%â@‰7P"”x%â@‰7P"”x%â@‰7P"”x%â@‰7P"”ÀEñh‡7Äoˆ%Þ@I;¼ÑŽxÀÅa!JQ‚}4D–³¤e-²Yü£ÞhG<¼v DòðF;¼—xx#íhŠ7âÑŽ°x£Þˆ‡7äÑ”vx#,pA‰¬ÒÑ”ˆ#∇7PoÄÃñhG<¼vx£Þˆ‡7ÚáxˆCñhÇ;Pâ ”¤£)íðF<à"ŽxˆCm@É#Jvx#âˆG;â‘þŽvx£aJÄ!vx#Þˆ‡8Ö'Žõy#Þh‡8P"yÄCñG;¼Bo€%âˆG;ÂoÄ£Þ@I;âáxx#éðFSÒo´Ãñh‡7ÚáxˆCñh‡8PÒŽ°xC툇8äáx´Ãëk‡8âÑq DVÞˆ‡7âá q4¥ŠPÆÚàxÈCÞÀ„-€€–k˜‡=æ1nHáRpAe¥€D@À’ðu @ ÀÀ>ì„  †EÈ>Jðeü¡ ¬¥mmm{[Üæö¶²ØG1þ:`£‘€3¸8cñðF ^ð ml€툇 ^ð ml€ñˆ*¾á Q( íh °ájp¢ÞhG<Ò±,#çÀÁâጠäÎ@XÄ!°é¨'P„|à ø†6°Œxˆ#7`6ÚQ NÄÈÇ;ÚáŒÄCñp†ÄÁ ,#çÀÁÚጴÃíˆÇ7´€eÄ£ñ0Á ¾ ð ÞhÁ ¾¡ ð Î@<¼ÑŽt´CÀF;P"Ž:x ßø†3À‚o˜cÿ؃Í>ðàpB>ó@ŽS*„ñ=ØììóO /ìc 0Ù ÷ÀcÿìÓ ÷øÓËSûüû<Åd /Üþ @ü³O /ÜãO/NÙƒÍ>ðàpÂ>î °Ï?û¸3À?û´ðÂ=ð˜Ä>îÐÅ>ÿÔñÁ–Oí“Ë>ñ” È.àMAíÔŽ7µwí$Ž<ñx“8ñ´7ñxwéxO:ÞÔN<ÞÄÃ7 y3—7‰7 µCP:ÞÄÓN<ÞÄ3W<ÞäM<íx7íxÓŽ7â$$AíxO;âÄãM<ÞäMBíx7µãM<ÞÔN<íˆSÐ\ÞÄãM<Þ´CP;ñx7ñxC8òÄãM<ÞäÍ\yO;ÞÄãM<ÞÔN<ÞÄÓŽ7µO;â$Ž<ÞÄãþ AÞÔŽ7ñ´#N<íäM<íÔNAÞÔNAÞÄÓAíx7ñ´Ï\Þä Aéx7¥ÓŽ7ñ´O:íxO;ñ¤ÓŽ7ñ´O:íxO;ñ¤ÓŽ7ñ´O:íxO;ñ¤ÓŽ7ñ´O:íxO;ñ¤ÓŽ7ñ´O:íxO;ñ¤ÓŽ7ñ´O:íxO;ñ¤ÓŽ7ñ´O:íx7íÄÓN<ÞÄ“Ž8½#AíxO;yS_: O<”°Ï¯ûóOÕ>²ì#∇7âá qÄÃÞ ˆ8Úá„´ƒ ∇7Òoäâ¨AıqÄs‰‡7 "q€þ§âhG<Ä!qDiG<Òá•´ÃñG<0‘oÌEòhC9èñˆ$D+G<¼!‚´Ãí(ˆ7äÑŽx´£ í‡<Ä!‚ˆ£ íˆG;â!Žx´ÃiÇ;¼!yˆ#Þ ˆ7âáxx£Þˆ‡7Ì#yˆƒ éG<¼oÄÃiGB¼!z£Þh‡7 "‚´#∇78v´ÃiG<Úá qÄC)Á#”ñ‡6Ä#éhG<Ñ¿§@Fý`BtäKh$c ýxÊ>æ‘ @·ø‡:°§Ø @ú·(BhÃ-©‚ŽìãþLúÇ>Ða€ìCa؇=@Ž0éû@‡öaƒIÁÀ?ì!r8% ø‡=@ާì*è@Tì!r8% ø‡=@ާìãLúÇ>Àa€¨£OQÇöaÃ)ÁPÀ?Ô!€{ücè(@ÿd±q”àÄ âávx£ñðFBÄáxˆ#âðFA¼oÄÃG; â P¶ƒ é(ˆ7âÑŽx´ãñF;âá ð´#!íðF<ÄÑŽtDyG;âáxx#Þˆ‡7Òð´Ã ŒG:â!Žx´#!í ˆ7âávx#âˆG;â‚´#þ툇7@YvDiG<ÚoÄÃñhG<ÚAvÄ”ñhG<¼oÈC ôFB¼v¤ÞˆG;âÑ‚´#ÞeAÚQoÄñðF<¼Av¤ñðF;âñ¬z#Þˆ‡7ä!oÄCÞˆ‡7"Žxxƒ íˆ(ã!Ž‚´ƒ Þˆ‡<¼AoÄñðFA¼oÄñðFA¼oÄñðFA¼oÄñðFA¼oÄñðFA¼oÄñðFA¼oÄñðFA¼vÄCíHˆ7âá ‚x#â H;âáx´ÃñðF;¼‘ŽvÄþPJ)JÐÍ+ó/û H; "q`"íðF<ÚPz#Þˆ‡7âáxx#âˆG;¼Ao´Ã²ôF;âávÄ£éðF<¼Ao´#∇7âávx# L‡7Úáx´#âhGB¼vx#Þ(ˆ7Ú‘Žxˆ#!–hG<Úž6äC¥(7ÞvÈCíð†yÚQo´ƒ  Œ‡8âáxˆ#!ÞHˆ7â!oDâ ˆ7Úáú´#í‡7 Ò‚x”ÞeA@IvÄ£ñhG<Úqx£ÞhGA¼oÄÃiAä!Žxxƒ ò‡7VâvÄÃXþ‡7â!‚´Ã툇8âxx£˜(ÆÚÐqÄÃñP–]´ìƒ *¯êÀ;¨œIOaÒ> ²¨ì£äû("Šñ‡6”üLú8°"Xúœ ü£ØÇ?H‘‚¥G`ûPœ²t àèÀ>œü`RTöñp`PAöápàè“ BŠ,ýè‡:ðw àèÀ>þÑpàê€SöáŽìcûÈÅ>âQ‚G(ã(ˆ8âxx£G<Ä!x´c%Þ(Å!‚xƒ âˆG;¼vx#Þˆ‡þ7âáx¤ÃíXI;¼Ño´Ãñh‡7âá ‚´£ Þ(H;dÙo¤ñF<Úávxƒ  Œ‡8âá q$ÄíðF<Úá Ozƒ Þˆ(ÓÑoă8ă7´ƒ7ă7D;xC]/RÅ>äÂ>ÄC;¼ƒ7$„%ˆC\Å>ôÏ>”À#(ôAf¢ìƒ=À%0 8 À>ü>9d$ìƒ=À%0 8 À?؃°Ãþ?ì3À?ØÃ?ôC0(À?ØU 0ÉSØÃ?ôC0(À?ØÃSìƒ=À%0 8 À?¸Ã8Å>¨Ãüƒ=9üÃ>ƒìƒ; ÀS¨Cô,üÃ;”&!@ă8¤C<€’7Ä&ÄC:ÄC:ă7ÈR;xC:þŒC:Œƒ,ÉR<È(ql;xC:´C:ŒC<´C:ŒÇ‚R:ă9rl:ˆC8ÈR;xÇÆƒ8´ƒ7„C:€RÌÊÒ8¤Ã8´Ã8ă7´C:´ƒ7ÈR;XB<ȃ7ȃ8ÄC;ȃ8´<ÄÃ)”AxCü8À>ØC°Ã?ø “üƒÈÀÜÃ>ÌðÃ?ø À>üC Á>üà À?ìC ¼À=àÓ´À ܃?ôÂSìÃ?€äƒ>€ð?ìC ¼À=àÓ´À ܃?ôÂ?ØC°Ã?ø À?؃°ƒS¨CüÃ>´À ì>lìƒ; ÀS¨ÃðÏ>äÂ?ˆC `Â.üăò¶CB´A€’7€‡7ÄC;xCäÂ>D;ˆAˆC”À#(ôAf¢ìÃ?‚”@”AüÃ>äþ8 À М X@ „@ €SØC ˆ@ ”Á8…=Ô@ ÀìƒSØÀAT C@„Á?ØC $ÀüÀ>8…=  @8… X@ „@ €SH ,¸Ã8…=Ô ÀÜÃ?¨C8Å>¨Ãô,üC<”À#!@<ˆC;ă8´ƒ7´ƒ7€’7(Ń7ă7„8ȃ7ÄC;ă<ˆƒ<ˆAxCA´CúQŽnˆ£âGÉÂ!“Š##G8F*Ž‘zé%ë†7LK´¤ÞhG:Ú!þy´¡ù8EÞÑqÄÃíð†S¼Ño´ô-GKÚá з#Þˆ‡Vâ!Žx´Ã¡÷Fèãá yx£%Þ‡7Zâ qÄ£ñh‡7Bï–´£%툇S¼vÄCñðFKÚA{o´#Þ };âáo€¾ o‡7âáxhôíðFKÒoÄ£ GKÄo8%éhI ¡Œ?´¡%Ú!âAvÎÿaJà”áÚ Ocíþa"Ð/cCþAJŠ %Ú!ÄôœÂšÁ,VÐ0Á0A\\ÐÁsÐ1a1aþ0AuPt,l01a1Áa1amtVVrPa1a a 1Á1aƒÐtÐ,lÁÁƒp ]0mP0Áêp 1Á0Á1Á0!»ø01A=a1a 1!1!1!1!1!1!1!1!1!1!1!1!1a Á0Á1Á0Á\ñBÏâAâÁâÁ€$J¡2Peaâ¡äAÚÁÚÁ,!º¡dFŠ!º!ºá®a¤®¡J&®ÁL*²!l!ÊñºÁîþ¾¡d¡²Áú!lá®Ä!Äa¤®¡ÄÁÄ¡®ÁFêF*ºA²¡JƲ¡Ä¡Ä¡ÆÁ,ÁÚ!äAZBÄ¡ è!J¡@ÏBOB¯¼¡¼áÚ!œô¼¡âÁZBâAhÏâÁZÂ)¼öâ¡@ÏBOâAâÁâÁ@ÏÚ!¼!¼!Ä¡%Ä¡%Ú!ÚÁœBÚ!¼¡%Ú¡%¼A+ÄáÚô¼!¯¼¡%¼!¼!ÄÁ)¼!Ä!Ú!âÁâÁÚ!¼¡hOġҡ%¼¡0¡þ  J&¼!þA+ó÷¡0¡þ  ,Ó3?4ucraâ!0aþ€¼A@¯¼A@O<áÖî4öá4öáöa5öá4ÖîÖîöáöáö5ö!5ÖníþaZcZcXcþa^cþaPcþaídcþaþaRƒ9÷áöá4öA5öáöá4ö!5öá4Ö5Îó4öáöáöa5ÖîÖîÖ®5ö5Öîöáö5Öîöá4öA5öá4˜óö!5Ö5Öî4öáÖîÎsþaVcNcPcþaPcþaPcþaPcþaPcþaþPcþaPcþaPcþaPcþaPcþaPcþaPcþaPcþaNcþaNcþaíPcþaRã TcH€@Ä`5ö¡0¡þ  ê]ã7žã;Þã'fraÄ¡,AþÚÁ@¯¼ôÚ¡<áãgžækÞæoçs^çwžçucèá¼!Ò!¼¡%Äô@âáJ`z~ã÷!ö¡Ä!Ú!ÚÁâÁÒA‘²áÖní²²aìoMÄA®áÖ²á¦á4Öîà®!ôaÊá¨aþáßaú¡¨aþþ!¨aþ!¨aö!”!¨A²”!”!¨A²áÖ®!¨A®!®!ÄÁâ!ÂÁâÁ@¯ ÊA¡@¯âáBÏâAâ¡â¡¼!Ä!Äô¼ôÚôÚAäÁä¡Ä!¼!œ"ôÚÁâÁâAâÁÚÁâ¡â¡¼¡¼!ôÄ¡%ÚÁZÂZÂ)BÏ)hÏâÁÄ!¼!œ"Ä!¼ ây‹ç-^;qñ¼Åó&¯]¼wíÄÅ‹ç-ž·vÅMœØÎ[¼vñ¼ÉkÏÛÄtK(Rö§ÍÆxÞ0ý›I³¦Í›ÿÀy‘.@þÃt²o¥V”jîC' :ûöÁÃá *:ùôå‹J³Ÿ¿]òÑ«Æçæ¾”ýió­Û·pãÊK·®]·²öÅ+ñ¨!â&zK·Ñ[ÿ À=ÿDµÏ?•T@4%(RÌm<¦é¦œvÚØ>¹ì#N ˜ìòñ´3‘7ñxO;ñ´ÓŒ%žÖjë­¸æªë®¼öz×>ÿÈóÏFíx#ÎDéL$€<ñ7E+í´ÔV+í>¹ì3Q;ñx7ñX’5×P“Íu×äVþL6Ô“M1º“ 5ÿ8úOT¹]CM3¹5“[3Ö5snÅdS 5ÊPSL6ÅdsÍ5¹CM1ÙsM6Ô4ã'ñ´ãM<éL$Ž;|±Ãì;|þaû”ܱ Mû€@>à°Ï?üPAÁ?û€CÀ>3íSÓ>þ4 C)ïÐÄOäôÓ !`¢Ìm¤.þø6©3ùèK» pOúðÇÿ,ûÈ&Ä"€7íÄãM<ÞØˆ7ÚÑ KÈï€L ÈÀ:ðŒ m’}xƒj/IÇD¼A€Ò”¢d ,þáxˆc"ÞˆG:0fP£Ô(5ŠAbd£º¹F1¨‘b\#7ÅxX6Šaf4ƒŸ5Š‘bè¦Í F1š‘›bP£Ô(5Š‘›k(ãÓÉF1¨QŒÜdƒ× Æ5²Q j\#–ˆ‡8ä!þq¤c"âhCiQ‚‰ˆ#âˆÕâávL¤G:6âxˆãAÞˆG;âáx´c"íˆG;âá yˆ£ñðF<¼±‘vÄ£/iÇDÚ1oL¤ñðF;¼A5o´Ã툇7&ÒŽ‰x#ÞxÕ¼ñoÄÃñðF<¼±‘vÄ£ñÆFı‘vÄ£ñðF;^"ŽvLÄñG<Ä1oÄ£ñhG<¼QLãm¨c<¼EüãžøÌ§>÷ùàü¼gTv`ˆ‚Ô;€ÇZq|îØ8,@ìøÇ>ÐA €Å>ðùuá4´× þìc(%Šñ‡6ô¦8ÍéMÁ¡ ÒÐ)>£‚?5§óANÁÑÓ @BÅG¤ñ}õªXÍêU÷‘‹}Ä£P!ol¤Þ؈7®a ­ºõ­p«\çJ׺Úõ®xÍ«^÷Ê×£îãôøG<Ä1‘vx#ÞhÇD x<¢ûè+_÷‘‹´#í˜H;ÄEÄ£×PÆÃ®‘e\£Ô(F6®A‡5£3¢2®AbP£Ôh†2²Ñ j4££-5Š‘k4ãÔP†2FKkP㟆nŠA eP£k5”«ŒkƒF¼†2¨ÑŒv`þâA툇8þ Ž|œ"/i‡8âáxˆ#íG<¼±‘vxãAÞˆ‡7&ÒŽ—ˆc"íðF<¼±qÈ#鈇7Úáxxc"íðF<Äoˆ#íˆG;¼±qÈCìiG<Úá qÄ£/ÇDÚáv¼¤ñhG<Úvˆ#âØˆ7^âx\î%Þ Z<ÄoÄ£¡Z<¼oˆc#%x„2þІ—xuÀ=pÔ}܃vhžÝ?îЊ;Ø:q¸¢a¸'8 ŽxxC÷Àç>H 8àû€†öQ‰”àÊøCòút *æÀö‘Õ}¼UþÀé>Ð!€¨ÀØGN÷¡ŽàõÕG•Å>ÄQ‚GìâðÆD¼qÄÃñðF<ša XûØÈN¶²—Íìf;ûÙ$•Ç>Ú1o¼¤ñðJSŠ@Û®²ø‡8¼o´c"áÀ„8ŒhÄb4£ÍÈÍ5Šqb4£FÌM1ØmÄbP£×(†2š¡ #Rãì¾5šAb±Ô0b1šQŒf£×(»©Q j4ãF,FnšAbP£ì¦F1®ÑK´ÃT‹‡8âáx´!ñ(E âá ª=h#ÞˆG;¼qÄ£ñðF;âÑŽxx#Þˆ‡8Úá ªmDþñhÇD¼1‘vÄC/iÇD¼1‘v°GíØˆ7Øãw´#âhÇDäávÄÃ혈8Ú±oÄÃT‹‡8.÷’vx£ñF<¼1qÄCíðF;¼wüÜíxG;âÑyˆ#òðF<¼QKãmh‡7&’EÔÿVÓ`‡ÚÛÞiÈý(q‡mìãžè @?À€¨ü`Ç?À!€}ücWe†öñ}lHD 0QŒ?´¯ûø8Ш0ƒê(€,€}Ø£ (Àöñu àžø@Bðƒ}ÜÓH@Pÿ  $ðûðþÌ@ûðø€ 0?`÷€Hðûðê0j`°ü€ 0?°ÿ  !p @ûðö€0EpOø€ 0?°÷$€8uOû û%€ Åðà Òñé  –ð„b8†dX†fx†h˜†j¸†l؆nø†p‡r8‡t(‡QAûà íÞÞâ° ñð%°u˜ˆ$µ¹ð/ÑÞ°žì!ñíí°ÞáÐññ ò°âð Þéà íà…áÞâ ?·é0Þþíí ñà ÑÑñà ò0^é ˜à á á ñÐñ%0íà ñà ñÐÞÞ0íð Þ0ÞÀí°âÞÐÞ°Þ0íâ0íÞíà íÞíðÞíà ñ ñà íÞÞâ ñà í0íðíâ0âðÞÞÞ°íâíà ñà TâÞíTâ /A5Þ@5ïà íà A5Þ ì‘˜  ÐÑéЇ:a†ûŸp•Ãp•Z™Ïp”p÷¤þàû€°ø”b°èû p¹øÔõpذð€ðQQ`ûPŠ  ÐOx˜ˆyOû°ÿÀTàî]ÿÐ/pö`@ðî0÷Ô/püp@pO-ð÷཰î0Q±ø´àûðü@ðûÐ/püp@ðê0±Ù/püp@°î ]ÿÐ/püp@°î]kðÿ°-ð÷཰ÿÐ/püp@ðö¾ðþÐ ˆ) û % ÊðíÞp9íÑ –˜ ºþ  Ú ú ¡:¡Z¡z¡š¡j¡òðò íÞíÞÞ@¥Q %°¡.JR²ðñà ñà !ñ –°£;Š žÀ£˜` ˜0¤–0¤Cj ˜À£Cê Š€ –€ –€ <:¥Cê ˜à –€ SªFŠ Sj Cú¥Cú¥Fº£˜` žÑÞ0ÞÐÑñ ¥Pñà á ñÐñ Þíâà ñà Tã á á ñà ñ Þеè á ñÐñà ñ Þ0â0í0âñÐ/ÑÑÑññ âà ñ íþ°í0âÐÞÐòà /ÑÞí â0Þ0âÀíâðí0ÞÞ@5á ìá ñ Ññà é0ÞP–P ÐÞ ñà ñ  ºJPiPu`u`ôªûp”pQñà ý°ø pà@а÷´ÿ0G0€(Àø4ûPŠP Ðºà € ³àp÷d@ûÐÁ ÿàÐö@äðû °ö ä@Rî08µà €  ìÐö@äðû °î0þ÷d@ÿ°à ÿ p÷d@ÿ°à ÿ °ÿ°èPû`@$e@ÿ°à ÿ`p ï›O¸¹°ñP˜P âðâíPGñ  –𢠺¢;º¤[º¦{º¨›˜û@ûÀâ0é0 ñð%°©+¡û ûíÞ°íââÞÞíà…ÞÐ^^è…ññÐÞÐéà ññÞÐñ !ñ@5éà ñÞÐÞÐÞ0ÓñÐââÐé ññà íÞ0íÓþíâ0éà ÑQGñÐå Pñà Ññà ÑñðÑÑñÐÑÞÞðâíà ñà ñà ííà ñà ñеè ñà Ñâíà ñÐïà ñÐÞíà ñíÀÞÐÞÞP‹íà TÞ°í0í0Tã ñà ñà ÑÞíââÞ0éà ñÐìá ñà á í0!€ ÊðmðÞ€ ¤»ÿ É’¬úPwp÷´Ì0QñQqOQñû@R±ù±¹ÿpÊûpOøp°°%þðÊðmpO¶|˸œËºŒà ñQ¡pOû€°÷ðê0û€`ÒlðèûpËê0ºŒâà û€0Íÿ ðû€€Îðî0÷´èè ÿà›îPÿ€°¶¼èè QA )p º|O²°âPŠ  „ñà ñà í0â°Í` }Ò(Ò*½Ò,ÝÒ.ýÒ0Ó2=Ó4]Ó6}Ó8Ó¹,ÿà ñà Tíá P¥P:½Ô·, ÿà ñÐñà íà /!ÞþéÞÐ/á íñ íÞÞðsÞ°ííðâ0íð íà ñà ѵíí0íà ñà TÞðÞ°ÞÞ@5!mP¥Pí°âà á ñà áÐá ñ ÞÞÐìá !Þ0íÞíâ°TÞ0íà ñà ñÐñÐÞâÞ°â°âÞ0ïTíà í°ííÞ@5ÞÞ°âÐá ñ ñà ñà ïÐá ñÐñÐñà ?'Þ0á0ÞÐñà íÞí0íþíÞP–P Ðíà ‘ŠÀÔ¹ÿ°¸¼¶¬ùûðøÀpËQqOûpO±éÒû ðûP˜P Ð9 ¶¬Ðÿ°ö@äðû Ðê0û`À÷´ÿ°ö@ä°ÿ°ÿà Ëà Qñ¸Pì`À¶¼ÿàðû`À¶¼ÿ Ðÿ°öì`Ëûðî ÷Ôê0û`@ûpOû`À¸¼ÿ°þ0 0Ñû û%€ »ðÞ0Þ°éà ñp – á¦~ꨞꪾê¬þÞꮾôðÞ ñ ñÐñà í0 ñð%°®Óû ÿà !òà á "ñà ñà ÑÑñ òà ñà íÞ0ÞÐâÞÞÐÞ0—ã ñà ñà ñÐñÐñà ñÐïà ñà íà ñà Tã ñ ñ òÐQGòà ñà ííà íí0íðmñð% íðá ñÐñÞÞ /á ñà ñÐñp9ñà ñÐÑâ°íà ñÐÞÞÐâ í0ââ /á ñà á /á ñÐþÞ ñà â âÞâíà !òà ñà ñ ò ñà ÑñÐñíà !ñÐâÞÞÐÞÞ0íà ñÐá á á í ñ Q  ÐÑéŠ0ì¹¼ÿ°¶ ˰K½0 ÿ°%ðÊðmÓèû`Ëûà°¶Ü/pð`@ðî0÷ÔFpÿœpO-ð÷àÖ°óì€Ëû°÷´-àûÐFûœ°ê0ûpO-`÷°ðÀ ÿà°¶ÜFpûœðþ¡®À?‚ê lñbŸ¿^[¹÷/§öPíÛ'JÁ>‚;ÊÚ'®Ä#b„´‹Ï[ö±oÄCñG<¼o +¥('(‹}´c;Þˆ‡7âáv¸g;ÞàN;¶ãvÄÃþÛñÆväávx#â8ÜÓŽx´#鈇7ÚvÄ£ÞhÇvÚoÄÃíG<ıvlÇÜñF;â!o¤#ÞpÉv¼á’xˆ£ Y)E âÑo´#Þˆ‡8¼ÁolÇ툇7Úáxˆ#ñhxÄoÈÃÛñ†<¼±o€Gñ‡{Úáxx#ÞhG<Ú±yx#íh7äáx¼£ñhG<ÚvlGñh‡<¼vÄÃÛñx¼áyˆ#Þhw¼áotf;í‡8À#o´c;툇7â!q´#ÛñF 0QŒ?´¡ÞØN:¡Bz6p!þ°D1þÐîƒWûø3@£Üdÿ؇®öA£}Ôh´Ú‡­öA£ÜÙh7ÚG®ö‘‹}Ä£˜ØÅoÄCÛiG<ıeX¢ž/…iLe:SšÖ¦ûø=öáx´£=éØŽäG”`6ÅÕ>r±o€§ÛñF<¼tx£ÞˆG:¼qpGòˆ‡7¶ÓŽx´ƒ;ÞG<¼á’íx#Þh‡7âá îxc;Þˆ‡7¶#Žxx#ÞàŽ7âáxx£=âàŽ7âáíxCÛñÆvÚñolGÜiC>âñˆˆ#âG<¼vlGíØN;¼±oÄCòhþÇv6vxÃ=íO;¶ãxx<íðF<¼o€§ÜG<¼o´ÃñhwÚ‘qÄÃ;âhO;âÑî´ÃÜi‡7¶ãîˆ#ÞØŽ8¶#Žxˆ#íwÚá ðx#íðF<¼o´c;%x„2þІí´#ñPR¼þ±YíãFû Ñ>d*‹}ˆ£Š !ÐîxãñhG<ÄáfX‚7ÆqŽu¼c÷ØÇ?r…óí#ûˆG ¡Œ?À%ÛI‡7Ú#?¢ÝèGGzÒ•¾t¦7ÝéO‡zÔ¥>uªWÝêWÇzÖ“N£}xc;∇K¼ÑŽí@ñxD öAsPí#ÿˆ‡7äžvÄÃñðF<¼tx#íð†8äáxxCñhG<Ú±oÄÃñðF<¼v¼£ÜñF<Ú±oÈ£àñ†8âá —ˆ#éG<¼Á—ÄÃñh‡7¸Óqp§ñðF;¼Ñol'ÞàŽ8ä!Ž?”C(Á;¸ÓŽ…{£=Þˆ‡7âáx´ÃíO;ÀþÓðˆÃ=íðF<ÚoÈ£=Þˆ‡7ÚoÈ£=ÞØŽ7âÑŽt´#.yG<Ä!qÈ£íñ†xh‡íp oh‡íx‡xp oˆohohoˆ‡vxoˆoØqˆo‡xðqˆoØŽvð†xh‡x‡xî(EP†?hððL`»˜Ú‡Peøƒ6@ª}¨Á”…x‡x„] ‡xð†vàoh‡…ƒÂ(”Â)¤Â*´Â+ÄÂ,ÔÂ-äÂ.ôÂ/Ã0C÷èŒtàoØoˆqˆ‡vˆo €¬(…øÁ‘…h‡íð†xð†vˆoˆ‡vˆoˆoàþqpyð†vˆqˆoàŽvˆ‡vØqH‡xð†xð†íoh‡xh‡xð†xð†vˆyð†í‡xh‡íð†xð†vð†vˆ‡vˆ‡vØoˆoØohoˆohooˆy‡xhz‡R(xð†vð†xð†vð†vð†vˆ‡vˆohoˆoˆ‡vp—ð†vð†vˆoh‡x‡xð†öð†xððoH‡vàoˆoˆoˆ‡vØŽvØop‰xð†íð†x‡vˆqð†x‡vhqð†vð†xð†xð†vH‡í‡xp oˆoàoØy‡xð†xH‡xðþ†xh‡…kî‡xð†öð†xð†À„bøƒ6hoØŽtP„:¬§}(E(†?h¤„ʘڇ\øq(LP†?ðð†vØohoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoþˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆþoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆ‡Î‡íh‡xð†öîyˆ‡G(}ˆÊ؇\؇tð†xð†x‡…ó†xðyØoˆoˆ‡vØŽvvH—‡xð†íh‡xh‡xp‰í‡xhoˆoq‡íhq‡v‡öyˆoˆoˆoØo‡vq‡xð†xð†í‡vð†vˆo6‡xx„ˆq‡vpþoððyˆqˆoˆohoðò†xhoh‡xh‡xð†vð†vàqˆoØohohqˆoØŽvð†xhðî‡íð†xhoàqovðîx‡vˆ‡vˆoooàŽvˆoˆoØoˆ‡v‡xððð†xhoØŽtØŽxeøƒ6ØŽvH‡xP¤Ú‡m „mؕͭ‘}(GP†?hÎ%ÝÒ5ÝÓEÝ]‘…ˆ‡À„b ð†xðqqˆoÃÝåÝÞõÝßÞàÞáí]qˆqˆ‡v‡xhîð—ˆoˆo €¬þ(…HÝìYø‡öˆ‡vˆohoH‡vØŽvˆ‡Îˆoˆ—ˆop oˆoh‡x‡íh‡xh‡xoˆop ðïõ†vhohohîð†xh‡xh‡íh‡íoˆoàoˆoØŽvØy‡vØ—‡6ȇx8…Ø—ˆoˆop ðð†vØŽvàovˆoàohohoØoàoh—àoˆoh‡íhoˆoàŽvàqàoH‡vˆyðh‡xh‡íhïõ†xð†íð†xð†xoàŽvð†xð†íððhoˆoˆ‡vØoþvØoàoØoH‡íð†À„bøƒ6Øxð†xPíÕ•} „V „}uJ&ˆ}(L(†?hO6åSFåÔ݇\Øq(LØ…? ovˆ‡vð†v‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡tþ‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡tþ‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡t‡vîh‡íx‡vð†vð†í‡íH‡íyˆ‡G(}HeÔ݇\؇xð†xhoˆoˆqKÀK°L°L r ·"r"·LðLr"ÇK rOðLð(ÇKÀ#·(r,rLðKÀKÀK rKÀK rKÀ*çrLrO°L°„vðîhþoˆ‡vˆqhyˆ‡Rx‡xð†xh‡íh‡xhoh‡x‡xð†xhoàŽvˆ‡v‡íp‰whoØoˆoˆoˆ‡vð†xh‡wðïmoØo‡xho‡xðîðî‡xh‡xh‡xho‡xhoˆqˆ‡vˆoˆ‡vˆ‡vˆoØoî‡xð†íh‡xhoˆoˆop‰xh‡xh‡xð†íhoˆoˆoh‡xðîðîð†vØŽxeøƒ6oÀ„ÒÓ½J „m¨p€~À‡=øp€Š†À‡ ƒŽ¸¸PHþH…؇xeøƒ6xñ—‡ù˜¿Yø‡x(G B€íh‡xð†vðÞ ú¡'ú¢7ú£Gú¤Wú¥gú¦wú§‡ú¨—ú©§z¨‡xp oˆqvØŽtØo €¬(…ùÒ•…H‡xh‡íhî°„xhop ox¢tØŽvH‡vð†íH‡xhoH‡íx¢vð†tˆoh‡xð†xx¢vð†tØ—¸ûí¸ûth‡xH‡x‡vð†tˆ‡tˆoˆoH‡xð†vð—ˆ—H‡íð—ðLˆoˆoØoàŽ6ÈŠG(xqàoˆqð† ÷îð†x‡wþØŽvð—H‡xð†xð†vØŽvˆ‡vàoàqh‡xð†vð†tˆoØ—ˆ‡vˆqØŽvˆoˆoˆoh‡íð†xð†xð†íoˆxñÚÅóÏ›@qÞ l'0Ãv½µ‹'N púýà NÀ¾~ç¨8ÀŠn¹}•ÜÛ7—@í肵„¢bÚ$íë÷/àÀ‚.l¸ï¾\ûÄ•x´ëoñ¼ ôÖÎ[;oñÒy‹çþ-ž·xÞây‹ç-ž·xÞây‹ç-ž·xÞây‹ç-ž·xÞây‹ç-ž·xÞây‹ç-ž·xÞây‹ç-ž·xÞây‹ç-ž·xÞây‹ç-ž·xÞây‹ç-ž·xÞây‹ç-ž·xÞây‹ç-ž·xÞây‹ç-ž7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñxþ7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñx7ñ´O;ñˆ#CÞÄãM<Þ´7í$€<ñ‡I,ñ>¹ìãM<ÞÄ#N<íxƒ‰7 ‰#@íxO;âäM<Þ0$N<ÞÄãQ<í$CâÄÓŽ@íxþ#N<âÄÓŽ7¥“ŽGÞÄ“Cñ´8 µ#NÓâÄ#Ž@Þ$Ž@íÄc‰7òx#7ñxOåäsJïä@ÞÈO;Þ´ãM<ÞäM<ÞÄãM<í´ã@âäM<íÔŽ7ñÞŽ7y7M3ÔN<ÞÄ#N<ÞˆÓ´8µÓ´7µO;ñ´O;ñxà µã<ñ´ãM<Þˆ7ñx7âÄãå‚ÇÓŽ8òÄ#N<í4íMÓí$x<âÄãM<âÄ#C!`¢ÌmÔN:ñ(2ñ?ü€_XyðB/È/?Vw´rÇPè°:üƒ°²f(ù¨þìÁ€Dìc(ùØ@ú!À}¨c%À„2þÐôq°ƒü ‰"‹Ä£P!vÄ‘‡8âáxÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼þ!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!oÈÃòð†<¼!þoÈÃòð†<¼!oÈÃòð†<¼!oÈÃñðF<ÚáwÄ£ G<¼!oÄ£ñF<Úo@ò(E B¨Z¡ÈâñhG<Ú!qÄÃñ‡àâxˆ#Þˆ‡<ÄÑŽxˆ#íG;âÑŽx´#∇8ÄÑŽxx£âˆ8¼ÑËÅC‡@Ä!vÄñG<¼!q¤ƒ!Þ\Ó¼a¹tÎMkG<¼!6È#¥(@¼o´£iòG<¼!vÄ£ iCÚÁqÄCpñð†@¼ÑŽxˆC 툇7âxx#ÞˆG;âцÈÃíˆG;âþvÄÃñð†@¼!¸w´#ÞˆG;âñ¸xx#âˆG;ä!Žx´C íàn;ÒoÄ‹‡8"q´#Þˆ‡7âvx£ñðF<ÄÁ]x#Þ(%Šñ‡6xCñðF<!˜¤(è‹¿°ƒAïà ;øÂî@‰;¬(ûø8°w àà @?þá*Ì`ÿØ>6  eÿpGȱ ìÃ(%Šñ‡6ì¹Ö¶¾5®s­ë] e¹Ø‡8J€‰]üíHC¼Ñ´v¬¹ÙÎ~6´£-íiS»ÚÖ¾6¶³­íms»ÛÞþöµÛ!txCñðF<ÚÁvþˆ#ÞˆG;ÄÁÈ#(Á>x­oÀì#ÿxœ7šf‰x´CíðF<¼ÁoX.íˆG;âávˆ#‚³œ8äá¦y#íðF:¼ÇyC Þˆ‡8¼áxx#ÞˆG:¼q´Ãi‡7â¡rx£*÷F<¢Kx#Þ`H;Ä!6È#(7"Žxx#ÞhZ;¼Ç¥ÃñG;¼!ŽxxC íG<¼oDòˆ7ÒoˆCÞ‡7âáxÎi‡@¼o0ÄñhG<ÚáxˆC Þˆ7âáxˆ#Þ°\;"Žx<ÎñðF<çvˆþCÞ`H;"8ˆ£i‚kš7â!yÎñðF<¼!t$˜PÆÚÐ4o`b× ú²{ìÀξ!v°Ž;´âXùÇ>À€}¨cú@G(€AÑG ¢ì`ÇPÔ1€ă8ÄC;ă<ˆCˆC;0„7ă7XB<ˆþCšHÚ>ÜA+ÜAPì8À>¸Ãü8À>ô>PÅ>àBPìQ¨Ã>…:@ XB1üAäß>äƒ> ƒäƒ>äC9ìCîÃ?¸C(!WæÚ>äÂ>ˆC <‚2üˆƒ<´C<Ž@ˆC<ˆC.ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃþ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìþÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìCRÃ>0„74M:„ÈC<äÂ>ˆC¤¬.ëÚA¼îPÂlCP ƒìƒ: €> `Å?€`…=4$üÄAQ4@Å>¸ƒ”&(ôÁèŽî>€ôÃ>üƒ=Ô@ÀìÃ?¨ÃÂ@€4Â@€1üÃ>Ø$ÀPØC $À ;ìƒ@X,Œ®0ð?ÈÂ>ÈC <Â.‚„8xÃ!ʃ8ă,üà ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬þÀ ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À þ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À Ì5]×µ,üƒ@xCÄC;ă7´ƒ@xƒ%¨Ü8„ƒ8„Ã8xC:„Ã8xC8„ƒ7þÄzC8ŒC:ŒC:ŒƒÊC:üœÄŽƒ7„ƒ7„Ã8ˆC:Hl:ŒC7ˆC:xC8Œƒ7¤ƒÊ¥C;xÃÑŒƒ7HìÑxC8ˆÃ8xC:ŒC8´v:ˆC8Œƒ7ŒC;`B;0„7´Ã;ă8´A>ÈC)”@<´C¤Á'|Â0¤yš“Â'¤Á6Ü%ÜÁ>8À>¸Ãü8À>ô¨tA>¬tÁ>¬AüÃ>´À ܃?ôPØ6ì<àÀ ìƒ; À>pº±»_ìC.ìƒ8”&ì!CˆC<<Ž@ˆC.üà ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À þ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬Àþ ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬À ¬@œXqbʼn'VœXqbʼn'VœXqbʼn'VœXqbʼn'VœXqbʼn'VœXqbʼn'VœXqbEM›7WÈÚ×.^Ïží¼µë)@^¼G%öýSº”iS§O¡F•Êt_®}â|¶K×ÓþS¼pÞÀ¦6Ý8°ã¼SkÎÖ®\ÅvySÎÛ¸tjÃyÖ›¸táÄ©«vœ7qãÄKçp8oãÀŽ6]:µâ¼«ì¸pÞÒaò¯]ÏtÞâ‰kSNÞ£âz¶‹×Χ7Ÿâ|öôÖÓ[Û‰‹ç­§8Ÿââyûþ.ž8yÞäå'/^»žßãiǧv¼ùΛvĉÇq|jǧt¼‰Ç›v¼‰Ç›x¼ǧQæ6r󓩦€ÄöQÂŽ:êH£;X¬C‰|î ä¥þôA‡€~Ô@t@@f\ g©:ØÇ)PH `nÙG˜Qæ6NìòŸ}Ð`Ÿ}쀥‚QàwØçtØçt øÇÈYjŸÆügp øG¼,ÔÐC•eyJx„˜?ð¦'yĉGœvâñ&YþYá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„þNXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXáþ„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„NXá„ûñÏÿ[öi'oâáxˆ#툇7 y”¢ˆràÿ!‹øÄíè‰7,‘°¨EáP‹8Ä1o„cÞè†8±‹~ìCÕØE8Âáq„Cá‡7ÆÂŒƒ/áa¼±CµˆcâXƵˆƒ0ÞG8#µˆc‡ÞG<,o´#ÞÈÍä‘R” 'ÞhG<Äáxx#ÞøŽ<ÄoÄÃ=ñFnÄÑ“vÄCíðF;|âxx#Þˆ‡7ÚÑoøþ$ïhG<¼o´£'Þˆ‡7zÒŽx|'Þh‡OÚÑoø¤¹ñÆwâÑŽx|G9ñðF<¼áo|Çñ‡7âáxxÃ'âðI;zòx´#Þð‰7r#qÄCÞˆ‡7J€‰bü¡ íðFOÒ¡ˆ¦l“›Ýôæ?ö¡qŽsœMPÂ>îÎ|(…øÇ>˜2¦ìãcÚÇRì¹”1)eÿ“Röñ`¢hÃ7ÚMp`ÿ@öñ~€CÿPÇ”¢ŽŒÉø:0&¦"ˆÀ Ðu ¡-uéKaÚÒ}äbâ(Á#”ñx£•íˆÇwdñœ`þ'XÁ Vp‚´! Y8AMN°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬àþ+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N°‚¬à+8Á N€œœ`²Ø‡7âÑŽxx£'âð‰äG”`1uõ«›²\ìÃíþè‰7ÚvX"ãè†8ºá vcâ‡7Äqt£Ú°Å?Æás¼¢Ì.F.v¡Œqˆ#»¨F1l‘jäÂßa8Š‘‹b(ƒÙÕ°E8ÀR]ˆ£Å(F.”1q„£ÞÇ8Ä1†£ Ç8ÄÑtX"âè‰7âÑo´£ =yD Þq´²'âèI;|ÒŸ´Ã=ùN;¼qÈ#âh‡7âá y´#7ÞèI;¼ÑqÄ£Þð‰8|âxx#∇8âážx#Þˆ‡7zâxxCñðF;|"Žx´ÃñG<¼oÄÃñhG<¾ãxˆƒãÞþ‡7rÓoô¤ïh‡7âáxxÃ'íðF<Ò¡œtô¤PÆÚГv¤#Š€5¬÷±”}(%ûÈG>öñ}àƒ `Ê>¿Í}üc%x„2þІÐsPŠ=@Žì# ø‡;°¸cJQÇþac)û°‡.1&p àîÀê¡ý„Êbò(&ŠAˆôÄñðF<¼oÄC¯ØÇ Vp‚œ`'XÁ+J`Žœâ~+8Á N°‚¬à+8Á N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`þN`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`þN`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`ôGVà^ázB|¢âÁâÁ@J¡¤/*»Iþ!Ú!¼AÄ!ÚÒAÆÙº!IJ,™ ,²Áþ!²va¡|Aú¡®þ!²Á°áàÁ”áàà!Šò¡Ša˜mü!º¦ŠAáÂÁ,»†˜M¡ÂAº„0¡'¼¡zBz¢ ä!J¡|ÂÚ!¼!¼!Ú¡'¼¡âÁâA¼!¼Á'¼!ÄA9¼AÄ!7Ä!¼!¼!Ú!ÄAÄ!ÒÁ'ÚÁ'¼¡”C9¼A¼!Ú!¾#Ú¡'Ú¡'¼á;â¡r#â¡äÁzâ;¾3¼¡âÁrÃÚÁâAâÁÚÁ|¢rÃÚÁ'Ä!Ú!¼!zÂJŠáÚÀÄ!¼!þ›DtDI´D—b˜@¤A)öÁDaT)öa)ö¡¡þ  bÔDÇäÀAöáö¡^`ða€àÜaöáÜaöáÔaƤ^àü¡þÁ€þÁ˜`þÁ€vôLÑ4MÏtraÄ¡0a!¼!¼!¼AÚ!7ŠAN`N`N`îçJàP_aN`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`N`bÀV ôaN`N &b@VàVàþVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVþàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVà4í&N &dazâ;¼Az"zBä!¡öAMÍ×|÷!ö!¼A9ÚÁÒAºÁÄ!ÊÒÄ¡®¡²ÙÂá”!rÁÞáÂ!î¼x²ÁúáÂÁüáÂÁüláþÎa´ð!ŠÄ!lðÁî®!x¼AºA²á®¡®¡®¡ØR,ãÚ¡'¾#ÚAÄ¡ ä!¡¼A9Ú!¼!¼Á'¼!7Ú!¼!¼Á'Úá¼á;ÛÁ¾³â¡rCâÁ¾ÃâÁ|ÂâÁâÁâÁòÓÄ!ÚAâá;ÞÁzB⡼!¼¡Ä!¾#ÚÁÄ!¼áäÞÁÚ¡'Ú!¼!¼!7Úá;½!Ä!¼!¼!Ä!¼!7¼¡'¼¡z¢Aþ  rÃ0á|q¹DÇ$—MtJ”áÚ€—›þ`”ÂjàÆD@)ÔaþaÔ¡”€ ”B, B  @)¤@ˆyÙy)daä!0¡þ”ã;âÁâÁdáVàVàVàJ`®á ²à ^aB &N`N`N`á``N`N`N`N`N`b€jâVàVàb ô!ü¡œ &N`N`N`î'N ð¡&N`î'ðáVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVþàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàþVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVà'ógîGþ!¼A9Ò¡'¼¨J Áœ)dἡ'ÚÁÚ!ÄÁÒ!º-½áŒØؒټ¡زdAòAŠáØR”ÁXü¡ŠáÄ!laÄ^Á²!þAØ2úÁšà¡”᪔a8þ-¯!¼Ù¼¡®¡®Áº!À",!¼!Äá;|¢ ä!¡þâ¡âÁÚÁâ¡|ÂâÁzÂÚ!7Ú¡'¼!ÄÁ'¼!¼á;zÂÚÁâÁ¾#ÄÁÚ!ÚA¼!7¼Á'¼!Ú!¼!¼!ÚÁâÁâÁÚ¡'Þ!7ÄÁ'Ú!¼¡'ÚÁ'N®zBÄ!N.zÂâAÚ!7¼áâA¾#¼!Ä!ÚÁ'Ò¡'äÁ⡼!¼¡'Ú!Ú!¼¡0¡þ  ÚÁz"!ÌÏwx^D÷!,¡þ  ØyþaJtþaþa”bþaþa¶Éž°~)Æäç¹þL÷!ö!JŠáÀâÁâþAâÁâÁâ¡^áVàVàVàJàV ©²àV N`N`N`îç¤Á> &îgN`N &b@VàVàlBþaN€LÁVàVàVàjâ~j"ôáVàl"þáVà~VàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàVàbʼn'VœXqbʼn'VœXqbʼn'VœXqbÅþ‰'VœXqbʼn'VœXqbʼn'VœXqbʼn'VœXqbʼn'VœXqbʼn'VœXqbʼn'VœXqbʼn'VœXqbʼn'VœXqbʼn'VœXqbʼn'VœXqbʼn'VœXqbʼn'VœXqbʼn'VœXqbʼn'VœXqbʼn'VœXqbʼn'VœXqbʼn'VœXqbʼn'VœXqbʼn'VœXqbʼn'z¯ø ø‰ß'dí‹ç-^¼vÞâyk§\€¼xJìû‡=»öíÜ»{ÿ^û¾\ÿÚy'/ž·xâ<µ—-~·øôÅÅwíš·lþ²þ‰‹¿‹9ÔØ²Ï>ýø5¶üCM8²üß+ÿdcË>ô½òO7ÙìrO1Øø“,ö³O>ÿdÓM|Ýt“ÍŠ+fs8ñuã &ñx£\<ïÄÓŽ8Ä#O)%´ãMŽÞÄãM;ʵO;9zÓŽ7ñˆO;9¶ÓŽ7ñx£\;ÞäO;ʉ&–ʵãM;ʵãM;`æØŽ8òxO;ñˆ#O;ñxÓŽ79zO;ïÄãM<í¼ãM<âÄÓŽ8oŠO;ñx£œ7òÄÓŽ7ñx£œ79¾7ʉ7ÊaÙN<í(×N<íx#N<âäXÂ#Êüцrí¤"ßý l°¿î#l±ÀîþSÂ#Êüц±Î~·Ovû»Ovû<‹m¶Ú>+Ë>ñ„€‰2O;ñ´#8`¶“K>'¬p '¬pB ¯üO¯”p ½°Bo^à£>¿õæOÓL£Œ+¼óÏ4âlñï 1ìœû¬ƒ<+œ°B ú¬ƒ>+Ä Ï ½Ñ’8|г TLsÍ6ߌsÎ:ïÌsÏ>ÿ tÐBMtÑ?ÿöAÅü»Â¿²ü“£7`¶7È#O)%lË5¶²ì¦79Zâ }fS#N6ÔˆC_8Ù4cË?ÔdCM1ØtSÌ5Ù\“M1Ô4SŒ>ÔdóÊ?ÔdcK?Ôƒ8Ô3?Ùþ\ó 6¶ÜN6Å`“Í5ÙsM|â˜}ÙôQ#N<–´“£7éÄ#N;mÄ#Ï#%ˆ£œ7í('8íxÓN<âx7òˆO;ñx7íxӘʉO;ñxƒj;ñxÓN<ï´7ñˆ#8Þ´<âÄãM;ÞÄãM<âHŸ£7`¶ãMŽâ`©œ8ʵ£qÄÃíð–ÞÑŽxx#Þh‡r¼yx#íPN;âát´C9íˆG;âÑoÄC툇8ÚávÄC`òF<¼QLãm‡8âáx(âW<ì¡Ä (ÆÚDî#‰ÙÙGvöÁÄ(JqŠSÜþG.ö!ŽX¢@ö”Óo´Cñ(Æ?N°‚¬à+èÍ+ÚP‚6¼8ÿúÍ ÈŠìc ¿‰Á?B±‚„+ˆÁ?zœèà¿¡Á$Šq‚üc'XA ü±‚üc:ðÇoŒaœ@úXÁ €s‚œ€¿9Á NÀßœ`'àÀoN°‚pà7'XÁ 8ð›¬àøÍ Vpüæ+8~s‚œ€¿9Á NÀßœ`'àÀoN°‚pà7'XÁ 8ð›¬àøÍ Vpüæ+8~s‚œ€¿9Á NÀßœ`'àÀoN°‚pà7'XÁþ 8ð›¬àøÍ Vpüæ+8~s‚œ€¿9Á NÀßœ`'àÀoN°‚pà7'XÁ 8ð›¬àøÍ Vpüæ+8~s‚œ€¿9Á NÀßœ`'àÀoN°‚pà7'XÁ 8ð›¬àøÍ Vpüæ+8~s‚œ€¿9Á NÀßœ`'àÀoN°‚g°+èÍoN ‹}´ÃñðF<¼qäHòˆÇ#J°íhv³œí¬g?›}äbñÀ’rÚ‘ŽxX"â¸F|ò“ j\#Ô¨m6jYüƒÙ¸F3vqŽø£¶PÆ9þ¨±‹P#¯ø5²QŒ}P£Í…,xq|Ô¶¶˜Æ?ÄQ[jã¹PF;Â{kÐGÔˆOm³QÛtXÂíð†r¼qÄ£ åÈÇ#J =oH¯Êi‡ôÚväHñh‡7âáv(G9j‡8âÑåx£íðýâá å´#GÞ“7âávx#ÞPŽ7Úá 刣ÞÈ‘7Ú¡{LâG<ÚqH¯Þˆ‡7”ÓŽx„Ãñð†rÚ‘oˆ#íð†rÄ¡œväHòÈ‘7”“å”àÊøCÀä L€vÍln³›ß¬}”@ÊøCàŒç<ëyÏ|î³feþ±x”Ê Dâ!¿£`ò+ô±‚üæ%¨ô)Î…+¼¢Ò!XÁ ~s‚øÃ +H<~ƒü†1ðÇ b ßTl:؇­÷¡¬ ô8Áob Ä@+ˆ>Vp‚}À`4ÐÁ?N°‚§7ÁéMpzœÞ§7ÁéMpzœÞ§7ÁéMpzœÞ§7ÁéMpzœÞ§7ÁéMpzœÞ§7ÁéMpzœÞ§7ÁéMpzœÞ§7ÁéMpzœÞ§7ÁéMpzœÞ§7ÁéMpzœÞ§7ÁéÍ`?°‚¬ gÀé,þ!Žy#툇7âáþ `­%ð³Ï=+‹ˆƒÃñðF;âá OˆƒÙPÆ5›Úfãµ½F|¨1d#¼ïøG7”ÑŽ}`çÔ˜Æ?¨‘iüƒ͸Æ?è“}üãÔ¸Fm§±|PãÔ¸F<þ±œƒ>µ½F6”QÛkP#>ÔˆO<0ñayˆ£ ô &DÀao´ÃñðF;¼ÑŽxˆ£ñhG<¼ÑŽxx#ÞhG<¼¡œv('ñàp;âÑoÄCñG;âá åˆC9Þˆ‡7”ÓŽxx#∇7Ú¡oÄ£ñð†<Ä!o(G9âpŽÚoÈCíG;â!qpLâhG<ÄáþtÄÃÒó‡•ÓŽ‰#GíPN;rä ñà í ¶×ñà é ÞP–P Ðíà Ê‘Šðsˆ›µ% Åðm!(‚#èsû û % »ðâéÐÞÞ#Ű+Ð+p+Ðmð mð mпñ/+ ðp+ ÿ' þ°½ÿ°1ðƒÕ:°¿A“+þp¿þ°1ð+ý°1°+p+ÿpÀQ1¿Q1¿Q1¿Q1¿Q1¿Q1¿Q1¿Q1¿Q1¿Q1¿Q1¿Q1¿Q1¿Q1¿Q1¿Q1¿Q1¿Q1¿þQ1¿Q1¿Q1¿Q1¿Q1¿Q1¿Q1¿Q1¿Q1¿Q1¿Q1¿Q1¿Q1¿Q1¿Q1¿Q1¿Q1¿Q1¿Q1¿Q1¿Q1¿Q1¿Q1¿Q1¿A3Àq„'ðÀq²ðñÐñ â é  ñð%°$ègû ÿ Þ ííà ñ^ÙP[Å ÔP Ù^á• ¹ð ýX ¶À ¯^á• Ô Å Å µ•^Ôp Åp Ô µ• Å ÔûH éU[Ù  Ù  Ù@ ÅÔ Å Êp ÔP é•–à ñà âí ñÐXs % ò ò“Úè þÚè ñà Úè ñÐñ Úh{Þââíà ÚØCé ñÐCÞÞí Þ0”í–ÚÈaÚè ñ ñà íà ñà `)ñÐï ÞÞÐmÙñà ñà ñà ñ ñÐïÐÞÐâ“öÞÞííâÞ¶—“ÞÐÚ˜  ÐÚØéŠœÕƒ`›·i›³¹fûP  к)œÃIœx& ÿ%ðÄ@ÐÚØÚØñà íà ¶ð'ð'°'°¯€mpYð¯p+pÀqì ùàþžÿ +ÿp+p1 +ô@3¿¡û:°+ú:ð+ú°1°4pÿ@¿¡ú°ÿ½½½½½½½½½½½½½½½½½½½½½½½½½½½½½½½½½½½½½½½½½½4ó8ó# ÿà ñà íÚè €5¥PÅég²°íà Úè íâ` ñP Ô ÅP[×P[×P âþP ÙP Í@ ×°ÿpk¶†û¨ µ• Ô µU µU Ôp Å@ Å@ Ùp ÔÐ µU µU ÙP Í@ ÅP[Ù  ÙP ñq Å Ê × Å ×P ÍЖí ÞÞâÐò¥PCé ñà ñà ÚØñÐÚè mé íâí0”âÞâïÀa9)ÞÐÞÐC)ÞÐÚè ñà ñ ÞÀaÞÞÞÐñ ñà ñÐÚ(âí íà í ÞÀañà ñà Úè ñà íâí òà C)ñ `é ñà ÚØþñà íâ íÞðíÞÀañÐñà %` Åðmà âÞŠÐgkfkƒ¡º¢0_ gûP˜P Ðh ·q+·s Zû û%ð»ðÐÞ ñÀaC™²ð½±'°'°%ð %`%p %p+P1I°9 ¹90 ø°1à'ð:à+@ÿ¿q+p+ÿ°'@“€+p÷'°·Ð+ ÿ°1ð'°Ò +pÆ ÀQ1¿ñ+пñ+пñ+пñ+пñ+пñ+пñ+пñþ+пñ+пñ+пñ+пñ+пñ+пñ+пñ+пñ+пñ+пñ+пñ+пñ+пñ+пñ+пñ+пñ+пñ+пñ+пñ+пñ+пñ+пñ+пñ+пñ+пñ+пñ+пñ+пñ+пñ+пñ+пñ+пñ+пñ+пq@XpÀÁƒõ/Àq²ðí âíÞÐÚ(òPû@·q»¹°ñþÐÚ(9‰ ñ@ Å Å Å@ Å ×@ ×P ßP[ÍÀ‘ÔP ÔÐ µU Ù^×P ÔP Ù^×°ÊÊP µU «Ôp ÔP áu Å@ Åp µu ÅP[Ê Ô Ô – ñÐñÐ9) Pïíí“íà ñà âííà íà ñà `)ñà í0”í¶'ñà 9)ò ñà ñà ò íЖñà ñÐÞÐCé í òí“íà 9Éañà ò“í ñà Cé `é ñà íí é 9é 9Ù9)þ9)ñ 9˜  ÐCé ˜ðÈšµƒ°î ÕÉ ƒ°ê0Ûñê0XÍÕÿ ðê0]½%ðÊðmÐÕkÍÖmíÖo ×q-×sM×l- û %ðÊ@0”âÞÞñ ýð'°'°%°¯P6P¯°%ÐÀa Õ°³[ÿ°½úЛå°+p+p:`kÿ°âà¿ï°0| +ú°1 +p4` ƒôð/+ð¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñþ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ+p¿Ñ¿Q3¿Ñ+P3ÀQ1²°ííÞÞíÞ@XS %P׉®èÿ ÿâþà Úè íà –Êp Ôp Ê@ éE]Ôu Ô  Å@ Å@ Å@ Å@ ×@ Ê@ Êp ÊÐ ÔP Í^×P ×@ Å@ ÅP[Åp Űנ ×@ Å@]Ê@]ÔP ×  ÔP Ô^µu ÅÐ ûØ ×P ʘ ííÞÀam€5¥Pé ÞÐñà ñ 9)ÞÀañ â Þ Þðí0”æ ÞÐ9Ùñà íЖÞíÞÀañ ñà í ÞÐ9é íà íà íÞæ ñà Cé æ ñ Úè íâÐñÀaÞâ0”þÞÞæ ñÐñà ò ÞÞ–Þ Þðæ Úè –“ÞÞP–P Ðíà Ú˜аèp½ÿ°ƒ©àŽù ¸ ƒ°رî0Û±øðo½î0û€ÐÕûPŠP Ðaø‰¯ø‹¿øû û%€ »ðíà 9é Úè â° ÿp+p+Ð%ÐWWp+P¿Ñ+ð/¿qÀqÁq+ÐÀÑ+p+p+ð/¿qÀqÀq+p+p¿q+P1¿qÀq¿q+пq+пq+пq+Ðþ¿q+пq+пq+пq+пq+пq+пq+п'Vœ8±bʼn žXAÐà‰ žXAÐà‰ žXAÐà‰ žXAÐà‰ žXAÐà‰ žXAÐà‰ žXAÐà‰ žXAÐà‰ žXAÐà‰ žXAÐà‰ žXAÐà‰ žXAÐà‰ žXAÐà‰ žXAÐà‰ h‘ @:€ØG8ãŽâøÁ>þ¡ŽüCD.rìãö¨ PˆüCø‡: ˆ\äØG,QŒ?´!³¤e-mù¦}äbñ(Á#”ñx#Þˆ‡7âávÄ£é(Æ?Vp‚œ`1Aür‚þ Ž + È N0˜œ`'ðË Vp‚œ`'XAüBƒœÀ 'XAVp‚ÁdYÁ ürƒœ`1È V@ƒœ`1È V@ƒœ`1È V@ƒœ`1È V@ƒœ`1È V@ƒœ`1È V@ƒœ`1È V@ƒœ`1È V@ƒœ`1È V@ƒœ`1È V@ƒœ`1È V@ƒœ`1È V@ƒœ`1È V@ƒœ`1È V@ƒœ`1È V@ƒœ`1È V@ƒœ`1È V@ƒœ`1È V@ƒþœ`1È V@ƒœ`1È V@ƒœ`1_ÀIœ`ñ V@pž@ûU; —ŽP @ñxD öqKZî#û U;âáPy#˜°&0¡KDÑÅDt1]K`˜À.v‹ K`¢»–Àv‹ÝïbBÑÅÄx1Ñ]L(Âßµ&,ñ]K`ÂØÅ„%âÑqÄ£¡òF<¼6„ª%ˆ‡7âÑŽx¤ƒAÞˆ‡7â!yăAÐôÄv„Ê¥j‡7âá Ry£Þ •7äqÈ#Tâ€^;Håx´#Þ •7âáP‰£TÞˆ‡8 ç RµþÊ¥jG:¼o0È툇7âáPyƒTÞ€^;¼qÈà òF©¼ÑŽP•@ÊøCJå L×3ûˆƒìœwØ ›Ù‡:`„}ØÃ@؇;°w  zZÃ4Ó‚ì&À>Ü1€¸#]ÐÓ>°h‹î‡}Ї~8h}8hÏÎ}؇|¸ì~؇\؇vðèRyˆ‡G(}8fÚþ~“}È…}ð†xð†xøo qˆo•vxRñèi‡xh‡Pñ†vqoˆoˆo(oˆo•v‡xð†v‰oˆo(o‡voˆ‡v€oˆo•v°¢vxoho€oˆ‡6•G(q€žvˆq(o‡xð†xð†xð†vˆoX²xð†xð†xðRiRaP‡xðqˆ‡vð†Rñ†Pioˆqoˆoooˆohoh‡Py •vð†v •v •t•vðqˆoˆ‡v •w•vˆo•vð†Pñooqˆþo •vð†xh‡xðyh‡xð†PI‡P)EP†?hƒRñL¨m8É2ˆT=‡T2à u"Ø|0(Øu(€~P‡Ø u€؇è͸øu€~P‡Ø u€}(LP†?h;/uS?uT‡Y؇x(G B€xhèi‡PñYØ‡ÍØ‡ØÏ8hÍðlÎ8hÍØÐØ‡ÍØÍ؇ØÍ8èØ‡ÍØ‡؇8èðlÍØÍ8èØÍØ‡ÍØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØþ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØ‡ÎØÍðì~ØÍ؇a–…‡xh‡xð‰oˆo €Í)…HuT—… oqo•v•v‡xH‡xð†Pñ†xð†vˆoh‡xð†Pñ+j‡Pñ†xð†xð†xð†vˆyðy‡xð†x‡voohRoh‡P‡xð†vð†v •vH‰oˆoˆqhy‡x`x`x‡6ØœR(Pñ†xð†x‡voþ`Ri‡xHy‡vohoˆo`xhyð†Pi‡x‡xð†x ‰‡v€žvð†vð†xhRi‡Pi‡Ri‡Pñyð†RñRñ†xð†xqh‡xð‰qˆoh‡%ó†vð†phoˆoˆ‡vˆqˆ€o`¼v zkGPÜÀvñ¼Åó–n ·˜ŠýiÓÎÛÀtŠþ )r$É’&Aî³ò.U*Gˆ½‹iåß¾šêšàǾêôS7à_Mwþí³WCDˆ2ö¹ðOÝ€5Õ ØÂR±?mN‚ +v,Ù²fÏ¢=»/×¾x%íú ·xéÚþy‹ç­ÝÀb ÷ ,x0áÁûþí ¼/pÍÂû ÿÛ¹&È}‚÷Aάy3çΞ?ƒ-z4éÒ¦Gï¼ð¾û×ܧyß¿} ÷åÚ7ðÝ@qÓ  /Þ£ûN#ç¼/×>oÅÉ‹ç-ž·xí¼µk7Ð[»xízØ.ž¸Ùãy‹ç-ž·xâⵋçm }qñÚÑoGŸ~;o½ÅÓ}íxCŸ8òÄÓŽ7ñ´#N<ÙÅãM<Þì7P;ïxO;âˆóÇ@”ðN<ÞÈã<y3P;yO;ÞÄÓN<âÄÓN<âÈãÍ@âÄ#Î@íxO;ñ´³Ÿ8ñ´#N<íxÓŽ7‰þ#O;ñx“];Þ´#N<ÞÄã8ñ´³Ÿ7ñx7ñxO;ñxC_;½ÓN<íÄ#}ÞÄãÍ@âÈSa;ñ´³_:ÞXéM<ÞÄãÍ@ÞÐg¥8òÐçM;•ðˆ2´1P;éÄ£HržY“¨ïL“‚íRl5ýSÓ?5¶Ï?ûü³O`5 ¶Ï?û”ðˆ2´ñ©°Ã[lg²üóN (CHyC_;òˆã8²ì#X-†|Ñm!À¶±ÆîóÏ>íóÏ>íóÏ>íóÏ>íóÏ>íóÏ>íóÏ>íóÏ>íóÏ>íóÏ>íóÏ>íóÏ>íóÏ>íóÏ>þíóÏ>íóÏ>íóÏ>íóÏ>íóÏ>íóÏ>íóÏ>íóÏ>íóÏ>íóÏ>íóÏ>íóÏ>íóÏ>íóÏ>íóÏ>íóÏ>íóÏ>íóÏ>íóÏ>íóÏ>íóÏ>íóÏ>íóÏ>íóÏ>íóÏ>Õ$Ø>¥íRMɲO;Þ´ãM;¥37È#O)%ŒK¬,ÿTèM…ñd8òˆãM<Þ´CŸ8µ8ñ´CŸ7ñ´38í äMvµ7íxc¥7ñxÓ}ÞÄãMvñ´CŸ7ôy37eO;û‰7íxO:ñ´C_•—RB:þíÐ×N<Þ äMvÞÄÓN<òˆC_;Ÿ·C_vy7Vz#òG<ÞQ¡vìÇñxG;>׎xÈÃ툇7âá yx£BïØ7ÞÑŽxx#ñð}²ãxx#Þ O;âávx#Þˆ‡7ÚqÄC∇8âáxxc ÞˆG;¼qÄCñF<ÚvÄÃ%ÀD1þÐÅÃñPDæ³+€ñ`#÷˜}f ÙÇ`ö˜}@¦&„ÙG 0QŒ?´¡‹zÜ#5³\üC%ÀÄ.þ €´ÃñÇ~ÚQ Á‚ ’ˆ…!*ù…Zô1“šÜ$';éÉOnfþ¹ØÇ~¼ÑŽxx£€<âñˆì”ÙG.öávxƒ>íðF;¼vˆãsi‡7Ú+y#íˆG;¼±oÐ';ôñF<Úá µ#ÞG<¼Q!qÄÃñðF<¼ìx#ÞHvÄoˆ#ÞˆG;âá y ÄñðF<ÄqÄ£ åÇ#J Žxx#íðF<Ú1q ¤ñðÆ@Úáx´Ãíh‡7âáxx#ÞG<¼1vÄCñhG<¼±olôéG<¼ÑoÄ£ñÇF½oÄ£ñhG<Ä!Ìz#íðF;¼1tˆƒ>Þˆ‡7âáx´£BÞþˆ‡7ıŸvÄ£ñF<Ä!Ìx´c íH;è³Ñxx#Þ}Jðeü¡ ûñ&ú›}ü㯱Í> ³ìC3û("”ñ‡6È2²’ÍŒ,þ(‚„@;¼±ŸÄ¶ØH€ñC ƒ±ˆE%¿ŒÉÂ6¶²-m‡%‹¤#ñðÆ@¼vÄè\)Jð™ã"·3²ø}ÚoTHñh‡7Ò1oÄÃñ‡8¼ñŽýˆÃôñF;¼oÄÃ툇7âáˆc Þˆ‡7Þv Äñh‡7ÒÑŽý´CÞf;â!Žˆc?ÞˆG;âxÈCû‘þ‡8Úyœ¢ôñ}Äá úx#Þˆ7âxÈCIG<ÚvÄCâˆG;â!úˆ£ñhG<¼‘Žxƒ>ÞØO;â!q ć7èãxx#Þˆ‡7Ú1oìÇíˆ7â!ŽÈÃñðF;âáîGÞˆ‡76ºÑxx£BâØh<¼áfolÔñðF;ÞÑŽx´C∇<¼o”ÀÅøCÚá¤CÉô?öAéKof%PD1þÐLƒ:Ô¢5©³\ìC%x„2þ €xx#Þp³7ÒŽb€d†ø‚!€ñÄ‚ •4Ä> {(Fþ©›íìgC;ÚÒž6µ«˜}äbâÈFãÑq $G<Q‚}XûÒûÅ>¼vx#Þˆ‡7âá y´c âˆG;âÑŽxx#ÜñðF;¼îvxc âÇ@¼1vÄÃòبÀ½tx#ÞH;ÂÝoÄÃñÇ@Úávx#Þˆ‡8no ÄñðÆ@¼no´Ãánƒ<âQŠ„Ûߨ7âÑŽx´ÃñðÆ@¼1v ¤∇8\î´CòˆÇFß1o„ÛáöF<¼q ¤Ùè@ÚáxCÞˆG;⤣Þ·8\¾Ñp‹c ∇7þâáx´#Þˆ8â!{£Þ·7"Žˆc íÈF½!—§c !À„2þІ´#ñPDº[Ï™}”àÊøC\oûÛ“ZûG Q B á~G;âÜÊbÿðǸð`€±à‚!¾Pt &æÀöûïƒ?üâÿøeñxc£ñG<¼o r¥(ù7#‹ÄÃo‡<¼vă7„›8xC<´CäÂ>ˆC `Â.üxC;xC<þˆC¸‰CØC $@üÀ>€„=Ô€@@! À?¨Ã¨`À>ØC $@ ;ìƒ: € Lƒ LC?PãJ²dKºäK–Ú>äÂ>xÃ@ˆƒÀ¥Ã@€<ÄÃ#”À>Àdgìƒ,üC”À#(ô‚J脆,ìC<”&!@¸µC<´ƒ7œ,€=ì@A-üÃ>Šv aì8À>üþ?P¸tAMüC ¼À=؃ Á?ìC Á>ðƒ À>¸ƒtAMüƒ=`Ã>àœÀ?¸tÁ=¬tA>¬Aìdi™šé™¢išªéš²i›ºé›ÂiœÊ霞©,üÃ@´C<Ìç@xTN)” j™ÊÂ?´C<´ƒÀyCäÂ>ˆC <Â.üxÃ@xƒ8ȃ7ă7´ƒ7äÂ>üÃ>B|A-üC-||BþÓî8@ À@À,¸ÜHØÃ>ôC0(À?ØH0Ãüƒ:À=€„`ƒüƒ:@M€ÜÃ> CìÙÚîíânîêîîònïú.ØîC.ìƒ8ă7ˆCü®îîƒ,ìC:lT<´ƒ7ÄC; „›yC<´Ã@xC;ÄÃFyC<ˆƒÀyC”&(ô*Ãr,˲ÓÊÂ>ÄC <‚2 „8xg<ÈHì0|Ô0pÁôA37³` xC<äCM¨ÃüCMþ ìH€ƒüƒ:À?ìÃ?¨Ãüƒ; À?ìÃ?ì)¤ÀX@ @?¸ÃôÃ?¸Ã€„:À,t@ ô@4,ËÂ?ȃ8 D;ă8ÄC;ă7@å”B ´×ÊÂ?ă8ă7„ÛFŃ8„›7´CÖ>ˆÂ ô>„€%ôÁEÛ÷}Kí>äÂ>ÄC `Â.üxC¸¥C;xC¨À>8@M€D?¨C€Ä>ØCMƒìþƒ=;€3À?¨Ã†=À,äÃ? Ãüƒ; À>üƒ; @M¨Ãàw’+ù’39ïîƒ,ìC¸½C; „8„›ÈC<ÈÂ>„›7ă7ÄC;ˆC<´ƒ7 „8 ÄFŃ8ÄC;ˆÃ@xÃ/„8ȃ7ă7Ü;ă8ă7Ì'žÄ;xƒ<¸\;xC<´C<´ƒ7ćă7ă7 „7ÄC;xCèC>$ƒ( @ïC <‚2üAxyÌ ´,ìƒ8”À#!@<´C´ì>˜Àôƒ; Hìƒ=;ì>0Aôƒ:H¨Ã€„: À>ˆrßûýþß~à >îÊÂ>´C´ƒ7 D; „8ü²7´C¸µC¸µÃ@´ƒ7ă7´ƒ7ă7\;ă7ÄúÜ;´C<ˆCÏ^±¡„^É'ÛîÙ'޶Ü@3|öØÇöykwØG®}JPD™?Ú(á„^˜aYö§L”!$š¼‰Gœv¼‰G–¹öɧšPä&Th¢­}ÚÚÇ­~þÙÇ­Ûâ²ífèçŸ}ܺíŸ}þ±Í­}ÚÚ‡á¢>餕^šé\þ¡Hœ™Ò¡Èä‘§”˜NX–Ú¡Hœx¼‰ÇyÄ!É’Ú‰§q(’(x$zÔŠÄñ¦’‰ǛxÒ¡HœxÄi'ofò&o(ò¦xÄiGqfò&o$’(oâñ¦’¼‰Ç’Äi‡"yÄiãêRJxþ‡$oH’(žvâñ†¤Ú½¡È›x¼I§x.Çм‰Ç›vâñ†¤v(ò¦oÚñ†$oâi'žvâñ†¤vâñ&oj§’Ú¡HoäñFqâñ†"oÚñ†"oâ'o(ò†"oj'©xÚ‰Çñ‡7â!ŽvÄ£ñðF;â!ŽÚ‰ƒ$ñF;âÑŽxx£˜(ÆÚà qÄÃñPÄÖþQ‚(ã Y¸Â+òQvåcqh‹;Ðw .îÀ\öQEãm ቸ´}äbñ&vA´ÃñðF<ÚAoÄC†iBšÀ›&4¡Mȇ\öa˜}¸ÅØØ<þL„~`Æ6 “ãéXG;ÞyÔÌ>r±Šx£ÞhG<¼ÑŠ@ñxD ö¡ÇríCûðFíÚQ;oPÄíð†8âÑŠx#∇7ÄËy#Þ ˆDHÒo´ƒ$툇8ÄvP¤ñðF<¼AoÈCÇþâÑoPÄòˆÇå(ÒŠx#ÞˆG;âÑo´ƒ$Þ ˆ8þ@‘G”Àí ˆ7âáxˆ#‰‡7âáx´ÃíˆG;¼vP¤ÞG<ÄA‘vP¤ñE¼vx£vâ‡7âáxx#Þˆ‡7âÑoÄ£ïˆG;âáxxƒ"∇7âþ!Žxxƒ˜ñFí$o¤ñEÚá ‰¼ãrÞEÚAqPÄâ ˆ8Hâxxƒ"íðF<ÚqÄC$)"”ñ‡6ÔΘpä>Jðpd¬ì*Á 󆶨c‚xÀ~°¨cnqGþ¡ŽüCØÇ?ìQ@ ؇[ö1$b%x„2þÐG>²•Å>âQE㈇<¼Aqx£ñ†-æ²|ôá‹©ýbö1—}`fó¸@ ƒ{ìƒ3ûpË>"Û[ßþ¸Áµ£,þávÔÎñhG<¼A€«•¢ÂÝL.þAo\.Þˆ‡7(Òþ’ÈÃñðEÈK^q´ƒ"Þ ˆ7.oÄC∇7Òq·ñðF<Ú!oÄÃí o;Èëxx#Þ ˆDâÑŽxˆ#âh‡7ÚoÄÃiEä!oÄÃñF;Ú |<¢ò‡7Úv÷íˆG;âÑŽxxƒ"!¯8âáòÆÃñG;¼ÑŽxxƒ"Þ ˆ8âáxx£¼íøq;Êë ‰x#í‡7(ÒŽx´#툇7âát¤#ÞhǽqÄ£ñF;âávÄC"iG<ÂÑŽÇC–‡7(ÒŽxx#Þ ¯8âá{#Þ(&Šñ‡þ6´ÃI‡"i›ì¢ ðÀÃ+J@Ö|Ä¡-õ €öaîÀ?öñw`îÀ?Ü1€}ü£/؇=L0€·Ø ¸G 0QŒ?´aaÑ–ö´©-—}äbâ(&Šñ‡´#í ¯8Ê+‹¹Ü†¬÷¸Í>àc›ì£Úñ–÷¼é]o{ß{aûÈÅ?(âxx#íy x<¢ûÀ÷gö‘‹x#âˆG;¼AÞvx#íðF<ÚoÈCñðF<Äv´#â o;¼AqÄ£ñðEÚñgoÄÃñðF<Úñã3·ÃñðF<¼!oÈÃñhÇ;¼oþüXåm‡7Äo·ñ89EÄцxÈ£% ïÉÛáv¤CñG<ÚAoÄCñðÆÛAoP¤ñ‡<âÑŽx´ƒ"''¯7äáxx#'÷F<¼vx#Þ ˆ8(âx´#íðEÄ“—WäõF;¼Ño·ñðEÄAÞv¼£Þˆ‡8("Žxx#íðFyÛávÄ£ñðF<ÄQÞvx£¼ÞˆG;¼A‘tP¤PÆÚ@‘v¤#Џ÷>^ñ‡´¡ìzÇøóA†ìC`Ç>þÁ üCp‹; ðu`êÀ?ìArØ&`â‚ @ þAþ  Žpadaâ¡AþÚ!ÄÁÈ«¼¡ÂAèbÝnÃKÐOSP1Cö¡¼A¼!äAâÁâÁàjJ¡VÐ0daÈKÄ"¼¼Ú"Ú!Ú¼¼!Ú"Ú!Ú"¼¡È«âáâ¡â¡âAâÁÚÁâÁâ¡(BÄ¡âÁNÎÚ"äÁþŒ"Ä¡â¡(ÂÞ¡ÊËâAâA¼!¼¡âìN.Ä¡ ®æJ âÁÚ!Ä¡¼Ú!Ú!¼¡~¬¼¡¼!Ä!¼"¼áÇÄ!ÄÁÒ¡þâÁìðÈ«(BâÁ~¬(BâAâáÚ!È.¼¼¼!¼áÏÚÁâÁâÁÈËâAÒ"Ú!¼!äÁâ¡(¢¼¡¼¼¼!Ú¼Ú!¼¡¼¼¼¼"¼!(ÂJŠáÚ€–âÁâAê-]Jà²à ²àJ@l`üÞ þaÔ!ÜàÜaþaþÁ  ÔaþA`ÔÚbÔaäB ¡þ  |&OpraÄ¡0¡þ@¼Aâ¡âáäâAäAr¡&—’)›Ò)Ÿ²3ö!ö¼Ú¡¼Ò"þ@âáJ`žrraÚÁÄAÈËÚÁâÁ⡼!ÚÁÊËNÎâ¡Þ!Ä!¼!Ä!ÒÁâÁÄ¡¼ÄAÚ!ÚAâÁ(BÈKä!¼áä(âäÒ¡¼!¼"NÎ("âÁâÁÚÁ)ÂÄ!Ä!ÚÁä!Ú@äáD€"ļ¼A⡼!¼!Ä!¼¡¼!ÚáÇÚ!ÚÁâÁ⡼¡~L(Â⡼!¼!ÒÁÚÁâÁÊ«¼¡¼¡Ä!¼¡¼NÎâAâÁâÁÈËä!¼!¼!¼"ÄAþ(ÂâÁâÁ(Ââ¡Þ!¼"Ú!ÞÁÄA(ÂâÁâÁ⡼áäÞ!¼!¼¡âÁÈËÈËÚ"Jà”áÚ ¼¼èÍ6þaÚàÚàö ƯÆ Ú€ڂ`ÜAö¡-СöA`ÜaþÁ€þa˜aö.üa– Aþ   ’M«Mö!J@” Ú"¼¡~LÚÔOÿPµÞdáâÁÚ!¼ì( 6K¡ØTö¼NÎÚAÄ!Ú!¼¼Ä"¼¡¼"Ä!¼¡Ò¡äÁþâ¡âÁÊK¼¡¼¼N®¼NN¼áä(ÂäAÚ!¼!Ä¡âA¼"Ä!Ä!ÚÁâÁâÁâ¡âÁ(ÂâÁâ¡Èëȫޡ ä!N¡ÊëäÈKâ¡ìÐÚ!¼!¼!Ä!ļ¼!äAÚÁÊëäâÁ(¢âÁÊ«(ÂÚ"äAäAâ¡(ÂâÁR3ÚÁÚ"¼!¼!¼!Ú"NŽ"Ú¼äAâÁÈ.Ú!ÄÁÚ¼¼¡â¡ÈË(âäÎL¼Aġ⡼¡(âäâ¡âÁJÀŠáÚ ¼þ"ÒAîíÚàÀÊ ^¡!ÇÏ ÚB€öL@ ö¡`ön öAàÜ¡öáZ€öáz`Ú° þ¡:`JŠáÚ@P·3ö!öAJvá ¼¼¼áä¼!ÚA —tK×tO÷ö!ö"¼"NÎÚ"@âáJ`žrraâì~L(ÂâÁ(¢âAä¡ÄAÊëäÈ«âAâÁâ¡Èëä¼!ÚáÚÁâAâ¡ÈËÊK~Ì(¢4–"ÚA(Â(ÂâÁÈËâÁÚÁ(Bþ þä¡JÀâÁâ¡â¡¼"Ä!ÚÁâÁÚ"Ä"¼!¼¡¼Ú"¼¡¼¼!¼!NŽ"¼!Ú"Ò¡¼!Ä!¼!Ä!¼áϼ"¼AÄáäÞÁ¼!¼!Ú"NîÇÚ!¼!Ä!¼!NÎâ¡ÈK⡼!¼AÈ«¼¼NÎ(Ââ¡Ä"Ú¡¼N.Ä!¼!Ä!ļB”áÚ€"Ú!âAìmJàJÀJ D lß ÚÂ@"@~àÚB. D` àÜaþAàöÁj@B  À6ÀAî €þö¡Aþ  P–ßBö!Jàˆ€"¼!¼áÇÄÁbY˜‡™˜OPþ!¼"¼!Ä!Ú!¼j³J€Meá¼áÚ!¼¡¼áä(¢äÁ(ÂþŒìâ–âÁÚÁ~¬âÁÚÁÚ"¼¡Ò"Ú!Ú!¼!¼!¼!¼¼¼¡¼¡(ÂâÁâÁNÎâÁâÁâAâÁÚ!N޼Ú!¼!ÚAÄ!Ä!Ú¡ jóB ¼"ÄÁÊë(B¼"¼"¼¡ÈëäâÁâÁÚ"¼¡âA¼"Ä!¼¡âÁâþÁÒ!ļڼÚ"¼¡(ÂâÁÚ"äANŽ"Ú"Ä!¼áäâÁâÁÚ!¼!Ú¼¼!Ä!¼!¼¼äAâ¡â¡(ÂÈ«¼!Ä"Ú"Ä"h)¼!¼!Ä!5½!¼¡,¡þ  ¼AâÁâAêmJ`^!]D`2¡ÔÀ fÛ öáöÁ-ö.nÃ-l.lãö.lãöáö¡,¡þ  ŠÙt÷!öAJà”á€"¼!ÚÁÚÁÚ"rÁ¹Ç›¼Ë[aö!ö!ÚáÇļ@âáJ`žrráÚAþþì¼!Ú!Ú"¼¡¼!¼!ÚAâáþÌÚÁâÁÄ¡¼Ä¼Ä!¼!Ä!ÚÁâÁä"¼!¼!¼¼Ä!¼!Ú!¼"ÄA¼!ÚáÇÄ!ÈÎâA(¢þ,â¡ jóD€NŽ"NÎÚ!¼áäâáäâÁÊËâáäÞ!Ú"ÚÁ(Â(¢¼¼ÄAâ¡(Bä!¼a½!¼¼¼¡~,Ú¼ÈÎÚ!Ú"Ä"Ú!Ä¡¼ÞÁþ¬âÁâÁÊËâÁÄA¼!¼Aä¼¼!¼"ÚáÇÚ!ÄANÎâÁþâÁ("("0Aþ  ÊË0¡Þö¡þaÎà ²`þAF4lC.ö!.ö¡-ö¡Aþ  Ìûqeaâ¡0a¼¡âAļNNdÙ¿ÜÃ].dáâA¼!¼áäâÁâÁ 6K¡ØTþ"¼!¼áä¼!(BâA¼¡(B¼!Þ¼Â!âÁâÁÊ«âA¼!¼¼¼!äAÊKÈëäìÐ4¶ÊKâÁ~LÈ«âÁâA¼¡¼¡â–Ä¡ ä!¡âANîÈ«Ò!Ú!¼!Ä¡(ÂâÁâþÁÈÎÚ!¼¼¼!¼!Ä"¼"Ú!ġȫâ¡âA(¢âÁâÁ(ÂÒ!¼!Ä!¼!Ä!Ä!äA¼¡â¡âÁâAÈËÚÁÒ!¼!¼ìâ¡â¡(ÂâÁØ×âÁâ¡âáN.¼!¼¡ÊK(¢âÁâÁÒ"¼¡,¡þ  ÚÁ("¡Þlã-ö¡-ö.öaÚöA.ö¡0¡þ  ĽM÷!ö!BÀ”á NŽ"¼!N.¼!˜üÿ˜÷!ö"Ú"Ä"Ò"@âáJ`žrráþ(ÂäAÈ«¼áϼ âÅk—Î[;o½ÅkÏ[Þ´³“7ñˆ#7y#7pµ#8µ#8ÞÄÓN<¢O;ñ´³S;`µ7ñx7픎<âÈãM<Þ´“N<Þ´ãM<òx7íÄ#N<ï´7í€ÕN:íÄ#NñäóH íÀ…Q<òx7í¼ÓN<íăQGâtÔN<Þ´7ñx7íÄ#NGÞ´O;‰Ï;ñ´#7ñxƒQ<ÞÄÓŽ@ÞtäM<âþxÓÎNíÄ#N<ÞtäM;¨µ#P;òˆ#8ñ´#8µ#8yÓQ;ñ´7íÄ#Ž@íÄãMGÞ¼–7ñ´O;ñxS&Åüц8âÄãM<Š%XRÌmÈ«ï¾üöëO.ûˆS&»üA@GïxÓN<í¼“N;²ükñÅg¬ñÆwìñÇ ‡ò>¹ìã8ñ´óŽ7ñxÓŽ@ÈÏ#%ì#rÇûäò8ñx7;µ7íxO;ÞÄãM<Þ´ãM<íx#ЃÞt„‘7âÄÓŽ8ñx7ñ´ãM<ÞÄãM<íx8;µ#7þµW<âtä XÞt$NGÞäM<íă‘@mÄ#Ï#"ÄóN8ñx8µ7òÄŽ8ñ´ã8ñx8ò`äÍNÞÄÓN<íä@Þ´#Fñ`FÞÄã@í$Ž@ÞÄã@ÞÄÓN<ítäM;ñ`äM<íÄãM<í$N<íxƒÑ;;µ7µãM<âtÔN<ÞÄãM<Þt$NGÞÄã@Þ”Ž7ñxÓŽ7ñx7âtT‚"ÊøCvâ LÜì€ÛG 0¡Œ?´Œ Ó%‹}Ä£È!Ðo´#òG<ÄÑŽxˆÃL¡ WȺð…ý’Å?:"ŽtþÄ£ñhG<¼A§”¢0Ô—,þ!yxC Þˆ‡7â K`–À„',á Kx–À&, Kh–ø¢=á -z–À„%Äè L@ž€¢- K`ÂZ„"&, K`BŽZ´&,ñEKhŠ_ˆ7âáxxã툇8Ú|œ¢ñHG<¼vÄCÞˆG;⑎ˆ#òG<ÚŒtÄñð†@oÄò‡7ÞÑŽxx£ïÀˆ@Ú!o´#툇7Ú!qÄÃ툇7âá ŒÄ£ñÇ;vp3âÀÈ7ã!Žxx£ÞhG<¼vÄþCñhG<ÚoÄ£ñhG<Ú!o|Óñh‡@¼ŒÄß”‡8â!oÄÃ%ÀD1þІvxC éPÄ»6ÊÑŽzô£ ÝG QŒ?´¤(M©JWÊÒ–ªt¹Ø‡8JðeüA ‡@Ú!q$. ªP‡JÔ¢õ¨HMªR—êÑ}äbí‡@Ú!Žxˆƒ›G<Q‚}05¨ûÈÅ>¼!v¤ñð†%â‘ &éhjâá ¤ÃñHG<ÚÔÄÃñHG<ÒÑŽx¤#}M‡7Úv¤ÃÜôF<Ú‘o`5âhG:¼Ño´Cñhjâ‘o´þ5ñ@8âÑWo`‚›íˆ7Ú!y´¡ò(E Ä1N´£Þ‡@Þá yŒÓñhÇ;¼ÑŽxx#íðF<ÚñoÄ£½Ç7½oÄ£ÞhG<ÄqDòèm;¸ùopÓíðF<¼ÑopSñðF;¼!Žx´#âG<ÚvÄÃÜôF<¼oÄÃñð†8âáxx#Þà¦8¸ÙŽx´Ãi‡7⑎q¦C %x„2þд#ñPÄWgœÒ}„àÊøChÌãUûˆG 0± BÀïˆG;¼ñ[´#²øª”§Lå*[ùÊX¶²,öÑ[x#þÞ €SJQ‚,£Tÿˆ‡7â!Žvx#í°D<¼!opSñG<¼p´#ò—8~›Žxˆƒ›âÇoÓÑŽxˆcœÞàf;âáxx#â‡8ÚvtY âhG<¼ÁÍvÄÃíˆ7ÚqÄ#–ðF<Ä‘ŽxÈCiC>äñˆÄ£ñðF;¼Ñˆƒ›ÞHG<~oÄÃG:ä!ŽvÄCâˆ8¸)oÄÃßôF;¼!vDòǧ½ÑŽxx#Þøm;¼ÁMoÄCâˆG;ä!Žx´Ãi‡<ÄÑeoÄÃñð7½vp³ßl7ÛoüV Þþˆ‡8¼!ßrSéhG<¼‘x£˜(ÆÚà qÄÃñP„™g¾X¢hÃÌwÎóî#ûˆG0¡Œ? Þ‡<âÑqÄ£âðF.zNõª[ýêXßù>r±o´ÃñðÆoã‘@ñxD ö‘usí#ÿˆG;â!yxC ˜ˆ‡7"Žxx#â‡8äÁMopSâˆ8ä!ŽxxCG<Ä!ßz#∇7âáxx£Ë∇8âáߊ#âà¦8âxˆ#âˆ8"ŽqZâ›éˆ8äѧœ¢â§7¾é üVñ†<~ûMqÄ£iþ‡@ÒÁÍvÄÃíÇ7ÅÑqÄÃÜlG<¼Ño´ÃÜlG<¼qÄCòˆ‡7¼!tôVòðF<ÚñMo´ÃñÐñÐñ òÐÞÐñÐâÞâÞí ñà ñÐ!ñà íí ¿%ñà ñà Üä á í % ÊðmðMÞ€ SÖƒƒ:˜ƒY¶%€ ÊðmÐsDX„Ï! û%` Å@ðMÞ ÞÀM²ðQVx…X˜…Z¸…\Ø…^ø…`†b8†a( ÿ òà ò íá à¥PdX‡²ðÞðMò Þ` éþíà ñà ½å ñà ñà éðMÞÀMÞÞíâÞÐàÞÀMÞÞ ÞÞÐÞÐñÐñà ñà íÞÞÐÞ âññà á ñð[á í Þ` íà ñ.ñÐò m ñP %ÞÞÞïÐñà á Üô[ñð[ñà ñà Ü$Þâà áÞнå ñà íÀMí Þâà !âÞÞí0NéðMâ ÞÐÞð[ÜÔñà íÞ âïÐñ ß$âП6NÞÞ0NÞð[þ!ñ òà Üä ÑñÐñà %€ ÅðmÐÞ é uˆ.í2ùÐ.F) ƒ”µ!` Åðm ”R9•TéQû û %€ »ðíà ñà Ññà ñ U¹–lÙ–nù–p—A¹²°ÞÐ[ÞÐ!òPû —µ¹ðÞ ÞðM–à òó×ÞÞÞÞó—™ñÞíñà â ÞÞðMéà ¿•ñ0ñà ñà ñà ñ ÞéÞíñà ñíéà ñÐéà ñ0í0ñà Ü„þ ñÐßôñ  Pñà ñà ñÐñà Ñá ñà ñÐÞíðñ òà ñÐѽå íà ñà á ñ ñà ñ ñÐãä ßä ñà âòæ ñ ñ€ñà íâ ñð[Þíðá ÜÔé ñ[Þð[ñ ñÐÞÞÐÞÞÞÐÑñà ñà ñà ñ ñà ½ÕÞ íà ââÀM%ðÊðm íñ k¹ƒ°ùð¥_š ¢0ï¢@†ûP˜  Ђù¦pÊQ²°ñP@ „Þþ0NÞÞÞ` q:¨„Z¨†z¨pš ÿÞÞÞÐñÐñà à¥PˆŠ.²ðá ñà íÞ€ ñ }Õñà }5í0íí íãXéà ñó×}5Àšñ á€í€í0ííà íããÐÞé0é0¨1éÐÞ}õ[Þð[¨¬ñ` ñ ííà ñà éÐNQ %Ðß$á ñ ÞÐñÐñÐÜ$ã$oñÐÜä ñà ò ñà ÑãÔñà íÞ í ÞÐeââíþé íðMíâ ÞáÞ ÞÐÜä ïÀMíðíí íÀMÞ Þ âà ñ í òà ß$âð[ñà Üä ñ ßä ñà %€ Åðm.ñà ñ T¹ÿ°ƒ©àŽù ¸ ƒ°èÒ.î0ë2"…ûP–P Л:¸l¹¹°âP  @ÞÞÞâ Ü$ „›¹š»¹œ»©û ÿÞ ÞââÀM ñð%°™»¹°ÞÐe–áà À:¨á á áà á°»Àâà éà ãà é0þÞ€»;é0Þ0éà âÞ°»é0á0éà ¨!á 陨‘™á0é0éÀšÄ;ó—˜Ðñà ã$m ñð%ðâÀMâ íÀMí ñÐïà í ¨á ñÐâÞ ñà á òðMíà ñ oÞ¿%ÞÞíðÞÞ¿¿õMââÞÞÐÞíà ñÐá ñÐñÐÜä ñÐñÞÐÞ ñ oïà ñà í’âÞðMÞíÀMÞÞÐeÞ é %ðÊðmðMÞ€ U¹ÿ_þº_Ú.÷pq°.êPû .êPY¸!ðÊðmйŒ †²°ñP° „ñÐòà ñ°Éñà ñ²ÐÈ¢<ʤ\Ê\( ÿМ¼ÊÞÞ@NQ %°¹²ð›œ¿å ¨a ó7â»›™™óÀ:Äãà á@¼Þã`»°»Þ`¹à ãÞ0àâ á°»ÞÞ°»é0á@¼Þ Ä;âÞÞÞ¬í` ñЛì éÐñ mà¥P›ÜÞЛì íÀÉâ°Éâò ÞÞ°ÉÞ°Êòà ñð[›ì ¿µÉ›,þí ¿ÞàÑñ éàÑÞÐñà íÞðñЛ,Þí`Òâï o›,ñ ÞÞÞð[&¿âñЛì ñà ñà ›ì &í éÞÞÞÞàÑíà ñà òÞ›ì %` ÅðmÐÞ°Éé U¹ÿù@ ©ð×l ûçb5 Pàö (Àû  ÿ`)€ì°æ2 ÿà%` Åðmð¦¬ÝÚê²¹°âP˜° ¿åÑÞ°ÉÞ â ®ÜÂ=ÜÄ]Ün¹¹ðþíòæ ›œ›,òPû`Üϱ²ðÞ¿eÒ–â0ó'h»+À:Äàâ á0Þ°»á™Þ ÅÐâ0â ¹°â0⬙9â0Þ°»á ó'áâ°»á.»ë ãà ãà »+Þ€ íà íàÑí°Émñð%à í í í òÐÞ°Éé°Éâ í°Éíà ›ÜñÐâÞàÑíà íà ›Üï°ÉâÞ°Éíà íàÑÞàÑÞ°ÉÞéà ñÐÞ`ÒÞÐÞЛÜââÔhÞÞí ñÐþ-ñà ñà ñÐñà ›ì ñà í ÝñЛÜÞ°ÉÞ°É¿åÑÞЛ˜  ЛÜ銅Y¸q¦`ú_Šæ²-ðû€&0íbذø€'ðî0Fùö€ û€8pæÒ.¸ ì%ðÊðmÀéʾìÌÞìÎŽ…²°ñP–@ „ñ ÞÞ¿åѲðìâ>îä^îæ~îèžîê¾îV( ÿð[ñ ›ì é°ÉÞ@NQ %ÀîÍ. û ââÞÐÞ` í0Ý0ÝÐðá ãÐààÒ á hó× ãÐ ÞÐðþ‚æ ÀÚðÚ` ûÝà Ú` ýÅÐ ¹@ ÍÐ á á á ã ÞÐ ãÐðó7â0âà ãÐ à2Ý ã ã áÐ ã– ñÐñà ñ ñ m âp %ÞÞÞÞ âÔáí°ÉíÞâíà íð&í ñà ñ âÞâÐÞÔÞàÑÞéíÞ°ÉÞ`ÒÞàÑÞÞ âíÞÔÞÐÞ°ÉÞ€íÞí`ÒâÐñ ííÔí¿åÑò¶ÉÞâà íÞ°É¿íðíþÞð[ñÐñà %` Åðmà âÞŠÀïý@ù@  Ž€ˆh`.ö@äðý ðFÙ.à`ýàðí¿à`ýp.ýÀ`%€ QìO› D˜PáB† >„QâĉûríWâÑ®?âÅk¯]ò¦'oâñæ£v>j§3o‚ò†¶xÄi'žvüýHoÚ‰Gq¼i'žv:ó¦'oÒ‰GÚ¼i'oÒé)ozЧxÚñ¦¼i§3oä§³vây§xĉþÇ›x¼ ª§ Ú‰Gœ¼é)(oâñ¦KŠù£v¼ù(E‚:j©¡Þç2Þ¡…–TRq¤ëwÈ0h{`§ f øÇ.ÙGpèÇ ²G€YòùòÇ„%(A‘bþhcjÃG'q‚@žx)aŸØUßG–}zò&ozŠÇ’x¼âªoíÆ›¯®éÆ›fÅqô¯¼¹&›n²ñêGmé§›l¼ÉÆ–±eŸr}Åoºñ¦›k²Ç+qþÇ5²q G‰Ã×pÔ5ºá ¯ˆãÙðF7≈#Þˆ‡8ä6”#(8>Òq|ÄñðFPÚñoÄCñhÇGÚoÄ£7ôÆ Ûáxx#ÞŠ8âÑoÄÃA¹¡7âáxx£3âˆG;‚¢Ãt¤Ã‡<⑎xÜÐñhmÄvÄCñð†8âÑŽ ¼ã#íx‡7:ÓŽxxã†Þh‡8:ã yÜð:ôÆ i#Žxxã†ñHÇGJðeü¡ iG:⡈á$dèP&5I†ƒì£]ØÇ?n0€}ØCìø‡?˜P€}Ø#ìøÇ>ì!vìLþÀ>öá,ìãLèÀ>êP‚G(ãm¨d2•¹L¨Ébñ(Á#ˆAÄÃi‡<ÄŠCÌg8Å9Nr–ÓœŒ“Å?¼qÄ£AñF<¼A?•¢çLœ,öÑŽxÈÃòG<ĉpdãŽê†£Äqlt#âðJ³õ•kt#^q”8®Ñl4£÷ÈF7¨Q]ô#²ØG6ºQ]ü£Y×ðŠ£®!Ñ´4«ÙðF7®‘kt#ÝG6º‘Kxƒ6òG<Ú@y”¢AG"Žxx#(ÞŠþ7âáx´Ã‘‡7Ú‘ŽxxC‡iG<Ú‘Žxx£A‡7ÚávÄCâøˆ<Äqx£ÞHG;¼ÑŽtÄ£ñðF<Äáx´ƒ6ÞŠã!Žxˆã#âðF<Äá ÈCíHÇG¼QLãmàJ<¼ETÒ û°Â;¶æD "“V8È>ÖQ„  (ˆ  ‚”a‘B‹Â"Að}€÷À…ȱ}”ÅøCŒ»_þö· ûÈÅ>ÄQ‚G(ãh‡7â!ŽÎ´#ÞÈ…%’Ž@ñxD þö‘aÃíCûðFgÚq`BÝpÔ5šÕ G‰ƒm–8¨‘nYÔhV7²Q eˆ#ÍÈÅ4üÑŒ\`#ÔÈÅ4ô!Žlˆ£×Ȇ8€œ qPcÌŽêF6ºdqd#–ðF<¼¥ òˆÇ#Jà´CñðF;¼ñoÈ#(Þh‡7ävxCAi‡7â!y´#(íðFPÚá ´Ã툇7ÚÑ™v|ÄñhGPÚqÄ£Þˆ‡7âÑoˆ#Þˆ‡8âáv|Dòˆ‡7>ÒotÆòèL;â!Žx¤£Þð×;ªè qÈÃñðFât|ÄðS)J0rƒÈâñðF<¼q|ÄñpÔ5²A qPÃQ×p5ÄA qPC×h5Ä‘ q(CÔò5¨AbäÂʸ<²a xÃʸ<¶žkdãÔÈÆ5®!ŽkPÃQ×Ç5²A qPC¢×pÔÖ³q ox"(ÞhG<¼q´Aô(E âñŽÎÈCñðF;:ãþ ´ƒ6Þˆ‡8âÑŽx´#Þˆ‡7>âxx#(툇8>ÒyˆÃñðF<ÄávÄÃñðF;¼yˆCÞøˆ8â!q¥òGg¼ño|ä†ñðF<ÚoÄôÇG¼ÑŽx´Ãá <¼oÄCñÆ ½ÑŽx´ÃñF<¼Ño´#íˆo(L(†?hƒvð†HE8ˆtÀ„@Ü+ À# À ¤À}ˆÀ܇ ,ˆ}ØÀ}K(†?hDÁTÁdÁtÁlÁ}È…}‡À„]øˆ‡vð†yð†xð†x4Â#DÂ$TÂ%dÂþ&tÂ'„Â(tÁ}È…}ðyˆ‡v oh‡yˆ‡G(}Â%ÜY؇xðyh‡xh‡xhLˆeÈj°Cj(†k¸C;Tj¸j(j;;,;̆;”;;̹{úúy †fx…}x‡}ø|pjpjȆ=ôD;Tqhj¸jP†l †kP†l¸jp”v°oŠvˆqˆqhyˆ‡G(pð†xh‡wh‡Îhohoøoˆ‡vð†hoˆ‡vøqˆ‡vx‡xð†xð†ðyð†xð†Îð†xh‡h‡Îyˆ‡vˆqohoyøˆòþ—v‡h‡xh‡hoˆoˆЇvˆ‡vˆ‡vˆohohq‡Îð† hqøoè q‡xh‡yˆoøoyè qˆqŠxeøƒ6øˆvH‡xP„2<ˆ}û€£/)܇܇xeøƒ6°É¢4Ê£|@Y؇x(GÈBoøˆvèŒvˆo°¤ÔÊ­äÊ®ôʯË”…ˆ‡vøo¸¡xh‡xðð“R(°TAYø‡vˆ‡vˆoh‡xKŎkØÃl †l¸CG);̆k †l(;̆b¸C[YÈ…b[(†\È[ø;þÌeÈe°CeȆbøÄÔ̆;ÌeÈ;̆bȆb †vÀ„xh‡xð†wèŒ6ð“R(ð†vH‡xð†vˆo  oˆoˆyoŠwh‡hoˆ‡vèŒv oøoˆoøqh‡xh‡xð†Îð†Îq oh‡xŠox‡ ð†xð†xð†vè ox‡vˆoˆoˆoøyy‡x¸!oˆoøoè oˆoH‡v oСð†xh‡Îð†xð†Îð†xð†À„bøƒ6ðqˆoˆE8Ê}˃؇À„bøƒ6¸Ñ҂؇\Øq(GP†þ?oˆ‡vð†xð†xh‡ È… µÒ+ÅÒ,ÕR'܇\؇xð† ‡x‡ yˆ‡G(}pÀ6uÓ7…Ó8uÓ}…}H‡vð†ð†°„x°ÃbÈeÈj(j(†k †bȆbȆkP†l°ÃbÈj»l eÈ;,;܇ ¯Øƒ°… †k †kðÄk¸Ãb°Ãb‡b¸Ãb¸j(†l(†l(†l eÈe¸j¸†t°„vð†ð†xqøƒx„x‡‡ h‡xð†xðÚð† hoh‡thoˆ‡vøˆthoˆo‡xð†hoˆ‡vˆ‡úþoˆoˆò†xð†xhoè oˆqèŒwð†xH‡vð†h‡xh‡ð†xð† ‡h‡xh‡xð‚yð†xhoˆoˆoðoˆ‡vøqˆoøˆvˆoˆ‡vð†xh‡xh‡xð†H‡(EP†?hƒÎðLÓ¢5Ú£EÚ¤=ˆ}(EP†?h¥•Ú©¥ÚªµÚ«u@Y؇x(LØB€xð†h‡oh‡p¬eÛ¶uÛ·…Û¸•Û¹¥Ûºm[Yøoˆo¸¡ ð†xðð“R(»ÅZYøq oˆ‡vˆO‡l(qP†l(jÈj¸†bþ †k †l(†fÈe°Ãk †bhj(O¼†l(†=,†lP†b †l(†fhj(†;̆bȆb°Ãk°Ãk(jȆb †l(jÈe¸j¸†bðÄl(†xÀqˆ‡v oøˆ6ð“R(Šoˆoˆ‡vˆ‡vˆ‡vð†th‡¨¢Î‡ð†xð†pqˆ‡vèŒê oˆqð†vˆ‡v qèŒvøˆŠoè oˆohÚhoˆoh‡xð†xh‡xh‡tøoˆqh‡xh‡xð†vð†vˆoh‡nk‡ð†th‡xð†xx oˆqðÚ¸¡xð†xð†þtøo(L(†?hƒvð†HE(ˆ)¦â*¶â+Æâ,Öâ-æâ.þ‡}(E(†?h/6ã3Fã4Vã5fc.Þ‡\Øq(KØ…? €vð†xho qoÈ…6äA&äB6äCFäDVäEfäBÞ‡\ø‡‡xð†Їtø‡xx„؇F&ä}…¸¡h‡xð†x°q¸jÀÝk(†kP†;le;jhj(†lÀÝk°Ãk(jP†bPj(†k Ü•»bȆkh†b¸;,j(†k(¹+†k †b †bPj¸eP†k †khjP;Tj¸†bÈþ†kÀ]e †kHKˆqˆoh‡Hqhƒr ‡G(qˆ‡vˆooˆoˆoyˆ‡vð†hohoyh‡h‡yŠvð†x¸!oˆoøq‡hqˆoøˆvˆoˆqˆoˆ‡vx‡ ðqoøˆ*ò†vð†h‡x‡Îðqˆ‡pøˆvøˆw‡yèŒvð†xð†ò†x‡xð†‡h‡t¸!qˆoøˆv ohoÐ!q‡ ð†vøˆxeøƒ6øˆvH‡xPPì5Þ‡xeøƒ6ìÅflÆ–…}ˆ‡xb „  oþ  YhìÍæìÎöìÏíÐÎbY؇v y‡vH‡ðð“R(ÑîbYøq¸!oˆoøOˆÜ¥eh†kÀÝf¸†b †f †f †kÀ]e(†kh†bÀÝk(;ÄÝkh†b¸†bÀ]jP†fP†kÀÝb¸†f¸†fPܽj(†k(†knjÀÝbh†k(†áîk üÆÝxÀ„vˆqøoˆq‡6ȇx8…ˆqˆ‡vŠvèŒvˆqˆ‡vð†xq qð†x‡v oho qøoˆoŠwh‡h‡ð†xð†xh‡xð†xð†vH‡xð†v þpˆqqˆoˆqøoˆoh‡x‡xhoh‡xðÚ¸!oˆoˆyð†‡xh‡xh‡Îð†x‡‡xh‡ð†Šoøy‡x‡ð†xh‡xh‡xð†À„bøƒ6àŠxð†xPÙæì}(L(†?hE—tI߇\Øq(GP†?ohoøoøoˆoÈ…IGõTWõUguDÞ‡\Øoˆoè oh‡yˆ‡G(}hõØYØqøˆvˆ‡vð†xHKð†h‡t‡x‡vˆqøˆt‡xh‡ ¨¢x‡xH‡h‡x¨¢vˆ‡tˆ‡vHþoŠ*yH‡xH‡¨¢* ŠvŠt oè q‡x¨"qˆq‡xð†xðKh‡¸¡x‡ hyˆ‡R(xh‡xhoˆqˆoˆ‡ò†yð†Îh‡Î‡xhoˆqoˆoˆ‡vè oˆoˆqˆoˆoh‡Î‡Îyð†xyˆoˆo ˜vøˆwˆo‡h‡xð† ð†ð†xð†x¸¡xð†xð†h‡ ‡xhoˆoøˆvˆ‡vyh‡xxoˆqè o茊oˆo‡ (GP†?hƒÎðLøõEÞ‡xeøƒ6XüÉþ_dYØy(LØB€Îh‡ðyð†xÊ7ýÓGýÔlYø‡xh‡xð†vð†vˆ‡vˆo ?)…˜ü\؇ð†v oh‡x°L°„äÇLH~LHþä÷EX~KÀ„äÇ„çÇKÀ„ç_~KÀ„çÿäÇKÀ„ðO~LPL0KÀKP„åÇ„ð÷„ä_þç‡ò†vˆ‡v qh?ˆG%¼Åóï ÂvñÄl‡0^»xÞÚµ‹ç-Þ»‡½Ï[»ƒí¶‹×.^»xÞâµ;è­ÆƒÞäyCè"ÎxÞⵋGÑ[»ƒÞây‹—î ·xÞâ‰k÷Ð[<þoíz;èí ·vñÄ!ô¦Ñ[” Ž<ÞÄãM;ÞÄ#Bíþˆ7ñx7Q7òxƒS;ÞÔÎAíÄ#N<8yƒ“8ñˆs7ñxƒP;ÞàäÍCíxÓN<âÄÓŽ8ñ¼EÞˆs8ñ´O;ñ´#Ž81äM<ÞÄÓÎAÞäÍAÅ#BÞ äM<ÞÔBÞ ä8¥sP˜(óGµ“N<Šv)¦ÿø±©™zú)¨¡òµO ˜(óG¢ªº*«­ºú*¬ɲO<%xÀÏ6ð!ª:ü£Î°¶ºO–óG®Û~;î¹ç¾O.ûˆSÂ#Êü!€þ8ñPäÍAâ ”‹îÍ;ÿ<ôÑK?=õÕ?¿O.ûÄãM<íÄãÍAé$€<ñÖ¿ºO.ûˆO;ÞÄãM<íÄ#N<ÞÄ#ÎAÞ äM<¼oÄÃñ‡<âáƒx#ÞˆG;ÒŽƒP$ÞˆG;âá y¤ÞˆG;¼v ÄñF;⃰IÞˆ‡7âá qÈC<ŠE¼Šx#ÞˆGäG”àéG<¼vx£ÞˆG;¼ÑއxC#íðF<Äo´ÃÇA¼ñqÄÃy‡7"Žxˆ#ÞˆG;ÒoÄñðF;¼ÑoÄÃñð†8âþ‡´ã ÝG<(âxxã âG;ÒŽ‡´ÃñðÆAÄoÄÃyÇAÄvx£ñhG<Äo´#âˆG;¼oÄí8H0¡Œ?´á!ÞÀÄ«ØÀ7@b“ð‚tÀ70Ó là 8°¿àcûpÇž @1ú²ü5 `|ÙG 0QŒ?´A£>°ëö‘‹}ˆ£˜ØÅÁÅ£Þ@ˆ8Ú! s¸Ãþ0ˆCìª}äbÞh‡8äo´ã G<Q‚}ˆ80ûÈÅ>Úo´Ãâxˆ7âÑo´#áhGL¼A‘x´ã!ÞˆG;¼qoÄñF<¼qo ÄÇA¼oă"¡ˆ7âxPÄñF<Äqv¸Iñh‡7âÁ¦6È#(8â!Žxxã Þˆ‡7Ú჈ã!Þ‡7âáxˆ#Þˆ‡7â!Žxxƒ"Þ@ˆ8â yÄ#íðF<ÚáxxþC#Þˆ‡7âÑoĤâˆG;¼vˆCñˆG;~íx´#Þh‡7âáx´Ãñǯ£-í_{#ÞˆG;~ÝŽxˆ#íÀN;~ÝŽxx#ñF;ÄoP¤Þh‡8â!Žh—àÊøC~ÝŽtÄC°º‚1.ðã }AGêÛu àê€ 0€ìãê€,€}Ø#  Øñu @ À@%*À—}Ãè@?êû|€/ø("”ñ‡6ø¥ç>ÿ9Ѓ.ô¡½èF?:Ò“îsYì#%°1€xPÝT÷F;¨.[(½ë^ÿ:ØÃ.ö±“½þìf?;ÚÓntYüƒêT÷F<ÚvÄÃèV)J ö³ËâñðF<¼!q¸=ñðF<¼AuŠPÝ鈇7âáx´#Þˆ‡7ÒoP]T÷Õ½Auo´ÃíÞh‡ÛSOõvÄ£ToG<¼ÑoÄCn÷F<¼qPÝñh‡ÛÅáxx£Þ H<¼ávyÄ£ Ý*E âÑŽx´ƒêÞ‡7ä!ŽxxƒêíðF;TïvoÄ£ñh‡ø½Aª{£n÷†Û½Aõvă"Þˆ‡7âáx´ƒê툇7ă7ˆŸ<ˆCü8À>ðE}¹ÃôC=€ì<˜ìƒ;@ì_Ø6ì<àÀìƒ;@Ô—=$9üÃ>¨@€ƒìC_CðE”&ôÁÞ%¢".¢ÑíC.ìƒ8”À#(Ã@;P7ˆ_<ä#v¢'~"(†¢(Ž¢ÚíC.üƒ7´ƒ7ă7ă7ˆƒÛ €<ÄÃ#”À>¢ÑíC.ìCæcA_ ƒüÃ>ô…:À>¨°Ã>ü3(À?¨ÜC_Ô×?ì:À?¨CÜC}ýCÁ>̰:À>ô3À=؃”À#(ô.'r,ìC<”À#ì!@”B ˆC<ˆC<´CTÂè8À>ðÅ>Ãìƒ:@XB1üAÌ'½zâ>äÂ>ˆC `‚2üă8ă8¨ž8´ƒ,Ô+Â&¬Â.ì|îC.ìƒ7ă7¨^:PÈC<¨Ãüƒ;;ð3(À?¸CìÃ?ìƒ=À%Ô8 À?¸CìÃ?ÔW>lþ,d@"ü:À>ôE|À?؃”&(ôArž0 ÷…,ìC<”&!@êyCü8@>èJïƒ: À?¨Á>Àƒ Á?¨ÃðÅ>ÌðÃ?ø @?¨ÃøÅ>ÔÀ>ü8À>ô<Á_ô@XB1üAD±VïÝ>äÂ>ˆC `Â.ü´ƒþ7P7P7¸].lµ[¿5\Ç5(îC.ìC;¤TzÕyC;PÈC<üƒ: À?Ô×>‚”@”Áüƒ: À>øÅ< ôƒ> €@€ _ì?”&(ô\Gº×ÉÂ>ÄC <1BPTR7P7ă,H:©—º©ŸúÏÉÂ>ă8¤^;ÄC;ă7@·”B lµ,þüƒ7ă7ă7ÄC;¤C<´ƒÛAe<´Cü?,ðÅ>ø…?üÃ>ðÅ>„€%ôߟ>ê§¾ê¯~ÒíC.ìƒ8”À#(C€7ÄC;xÕµƒ7ă8xC.°¾ð?ñ¿ñ?ò'¿ò/ÿÑíC.ìC<´ƒ7ă7ˆC<ˆƒÛ €<ÄÃ#”À>0?êïC.üC;ă7ÄC;P7ˆC<`‚û¿¿%Ä?&XÂûc‚%Ô¿%Ôü[Býc‚%Ô?@(Âd “%K˜ zÂä “%Lþ ZÂdéaDLž>4ˆÉÒCO˜,eÄä-^¼v'½•,ÙF^¼G%ÞÅóO\útYÿâ•x¤ì€xíJž+«zyóçѧW¿ž}{÷ïáþS—õ/ž¸xí€z‹ç€J ˆbü¡ þü4¨A÷‘‹}ˆ£˜(ÆPqÈC,ñh‡,šQn”£õ×>r±qÄ£@ñF;J"yÄã%؇Gÿ±\ìC%ñF<¼o`B,Þˆ‡7TÒŽxˆ(j9‰8äá’ˆ(Þˆ‡7â!Žvx£$â(‰7âáxx#éˆÇI¼o”Äñh‡7J’ x#Þ(I;¼¡’t´#Þˆ‡70ÑoÄÃñð†8ä6È#A<¼¡qÈ£bñ†JÚQ’vx£$ÞPI;âá’œ¤$â¨h<¼oÄC*ñF<ÚQoÄÃñh‡J¼!Ž’x#Þ8‰8âávˆ#ÞþˆÇIâáxx#éGIÄQ’v¥ñh‡8â!Žxx£j‘G;¼!–v¨ä%iGIN¢’wxCñG<Äq¨$˜PÆÚP’v¤#Š€iÀöQ‚G(ãm¸ï&‹}Ä£ŠP! ™y£ñ‡-a O˜Âð“Å?âávÄÃñhG<ÚoÀ?¥(Áeñ’´#íˆG;âa‰tÄÃíðF<¼o¤Ã*SñF:ÚQo´#ÞhG<¼Á¡tÄ£ñðF<Äo¤£ÞHG<¼ÑŽt´#âðF<¼oÄÃ*툇7âátx#Þh‡7âáxx#ÞhþG:¼‘ŽxˆÃñðF<+oÄÃ*ñF;¼‘ŽvÄC*G;¼ÑŽlÇÃñðF ,QŒ?´Á∇7⡈ çk%ÀD1þІ}œ[ûÈÅ>ÄQKìâðF<¦"yÄÃ%ÉÁ1žq|¹ØGI¼oÄÃâP‰äG”`0ÝGþ.þá qÄã$â(‰%¼qÄ#íG:Âq’pxCñ`Ð8¼Ño´#áðF;4ŽpˆcÞ`7⑎vph G8¼‘Žxx£éhƒÚo´cíÈP;ăCñHÇ8¼‘Žvd(–ˆÇI¼qü¡$¥JÚñqÄÃñhG<Ä!•ˆ£$Þˆ‡7Äâ qÄC@ñF<¼ÑŽx´C%'J;JÒŽx´Ã%G<¼Qq¥ÞˆG;¼oÄ£%iÇ;Ä"Žxˆ#鈇7âáxˆC,íPI;¼oÄã$Þh‡7Jâ yx£ÞJ;JÒoE*ñF<þ¼o”$% &”ñ‡6Řà×ýñ›}”àÊøCò/pùEö!Jàˆ ¼!ÄA%¼!¼!d105p9°=ð¹Eþ!¼¡$äAâA¼!¼ü£J¿Eö!äÁ€Â0!Æ!ÆÁÂAÒÁÂ!¼AÆA-¼!Â!¼!¼!ÆÁ*¬"CÄ!ÒÁÂa¬"Ä! ÓaÆ!Èð ÓÁÒaÄa¼a¼aÒaÄ!Âa¼aÂAÆÁÒ ½áë¼¼¡Jâ$¼¡$ÚÀ?¡âÁâAÚAþÄA,Ú!¼A%Ú!¼¡$Ò!¼A,¼¡¼¡$Ú¡$¼á$âÁN"¼!¼!¼!Ä!Ä!¼!Û¼¡¼¡$¼¡$¼!Ä¡âÁÚ!âÁÚ!ÚA%¼!Ä¡¢¼¡¼áN"¼¡$¼!¼¡¢Ú¡¢¼!¼á$¼¡$¼áÚ¡$NÂäÁâÁâÁÒ¡$¼¡,¡þ  ÚÁJ"Ar5ö¡¡þ  2!²Xö!öAJà”á T€BÚA²#=ò#A2$rraJ¢Ä"JBä!¡öA$[cráÚ!¼!¼¡JþÂÄá ½!ÆÁ*Ä!¼á ÉÐ*Âa¼a¼ Í!¤r”Á*ÈÐÎÐÆA¼!C2Äá Å ÃÁÒaÂ)ÇA¼!ÒA¼á ÃÁÒa¬"âÁâÁâATB-Ú äáD@¼A€ÂÚÁâAJÂâÁT¢¼!¼!¼¡$¼(¼!ÚÁ€¢Tââ¡â¡â¡ÄÂâÁâÁÚÁÚ!ÄA¼¡$¼A,¼!Ä!¼¡$¼!ÚáÚ(NÂÚÁT"âá$âÁ€ÂâÁÚÁ¦ÂâÁâ¡â¡âAJÂJ"ÚÁþâAÖÍÚ¡$Jà”áÚ $Ú!âAd÷¡0Aþ  îó?7PöAJv ¼!¼¡$¼¡âAÄÁ´B-ôB1ô#eáÚ!Ä!Ú!¼!JÂÀ?J¡,Tö!Ú!ÚAÄA,!¬‚ ½AÎPÆÁ*ÔÒ*Æ!ÆA-ÂÁvƒÌAºÁÈP¾n¼ ÕB¼aJ­B-ÂÁÂA¼aÄ!¼!ÄÁ*ÎÐÄ ½AÂÁÆAÎPâ¼!Ú!Ú!ÄAÄ¡ â!¡J¢âÁâÁT¢âÁÚ!Ú¡$¼!þÄAÄ(¼!¼!¼¡$Ú¡$ÚÁÚÁÚ!¬"¼!¼¡âA¼á$ÄÂäA>«TÂâÁ*ÊâÁâ!Ú!¼!¼¡ÄÂÒ!¼áâ¡JÂÚ!äÁTâ$J¢JBâAT¢JÂäAâ¡â¡âÁâÁâÁâ¡â¡âÁJŠáÚ@-âÁâAôÅôÕò¯_ÿaBÀŠáÚÀ_ ö`ö[ö!öAJÀvá Ú!ÚÁâAâ¡J"öcA6dEvdI¶dEvra¼A%¼¡$¼¡JBä!¡öÁd¹þeraÄ!ÄA,,!ºA-¡ÂAÆ¡Ä!º¡ÆAºAºaÄÁºaš6dáÆÁ*ªÂAº¡laš¡Äáx!º¡l¡Æ¡”¡l¡”!ˆ¡i©pšvºAÆ¡ÆAÂa¼¡Ä¡Ä!Ä¡iãÁJÂâÁ€¢ Ê!¡¼!¼!Ú!ÚÁâ¡Ú¡$H÷¼¡¢ÚÁ€ÂäÁâAâÁÄAÄAÄA,Ú!ÄA%Ä!¼t½A,¼t½!¼!¼¡¼!ÚA%¼!Ò¡TÂä!¼!Ú¡$¼!¼!ÚA,þ¼!¼A%¼A%¼!ÚAâÁâÁÚA%H÷ÚÁ*ÊÄ¡$Ú!Ú!¼!¼AT¢Aþ  €Â0_öÁàÖaØ6(øÔa^#ƒ5xƒ9˜5ö¡Aþ  :¸„Mø„Q8…Ux…Yx…ea⡼tÂâÁâAZø‡8ˆ…xˆ‰¸ˆøˆ‘8‰•˜…eáâ¡âÁJ¢â¡âÁÀ?J¡–؈eáT¢âAÚÁ0!Ä!š¶¼a›vJÃAÂA-šVšÖ´Áþ¡²¡²aø¡ŠòÁŠa¡dþÄ!ŠAÄáØÁvÁ¾!àÁÂÁ§´ÂAܸiÅa½¡i½!0¡¼!Ú!H7Ä¡ è!J¡â¡J¢âAâÁH7¼tÓ¡$ÚÁH·TÂÚ¡¢Ú¡¢ÚÁâ!âAJ¢*Jâ¡âÁâÁäAâA¼!ÚAÄ¡$H7¼!¼¡$¼¡TÂJ¢âÁâÁâÁâÁâAÒ!äÁâÁâÁâÁâÁJBâÁâ¡ât½!ġҡ$¼!¼!¼¡J¢¼!¼¡$äAâA¼!¼¡0¡þ  ÚÁJ"þá‡Ùà¦!aÂ@ ¼@ØÀ €Ú Ø`VcH€@Ä`ðáþaD ‹_cJŠáÚ@ªµz«¹ú5ö!öAJà”áÀâÁâ¡JÂäA¼!ºz®éº®íú®ñ:¯SxráÚÁ⡼AâATBä!¡öA¯Kxra¼t½!ÄAÒÁÒ!ºá¼!ºAšöš6®¡²¡²¡Äa³áÂÁþA²¡¶w¡²AîºAxº¡Ø¡l¡Ø!^áªAöÄ!vÔ¢ik[®¡iÅ¡®ÁÄÁþ³¡¼!¼¡0!ÚAâtU¢ ä!¡Ä!¼!ÚA%Ä!¼¡$Ä!¼tUBâÁÚ!Ä!ÚÁâÁâAJÂ⡼AäÁäÁâᘽ!ÚÁâ¡TÂÄ¢TBTÂâA€ÂTÂâÁ⡼!¼A,Ú!¼AÄ!ÒA%ÚA%Ú!HW,¼AÄBTÂä¡T‚tã¡âÁ**J¢Aþ  J¢Ò!¡…÷!&Á¤AŒÁÆ|ÌAø€þ¡ü¡º è¡ø€5öA `5ô|Ïù¼ÏýüÏù|J@”áÚþÐ=Ñ}ѽÑýÑ!Òeaä¡a!äAâÁâÁÚ(d!ÒI½ÔMýÔQ=ÕU}ÕY½Õ]ýÕa]ö¡$äA€ÂâÁ@ä¡JÖ[]ö!Ú¡¢,!®Áº!ÄÁ²A¼¡i³¡i³ÁÖ¸¶§´²áö!Äá´!ö¡laÊA²Aúášaªaì¡àAö!láÄ!ªáþ¡¶Å!š6º!Ä!¼¡j;¼A®A¼!º!âÁÚ¡$¼¡âÁâAÚ€×K¡â¡âÁâÁ*ª€BâÁÚ!¼(¼þ¡$Ú!Ú¡$¼!Ú!ÛÞ¡JÂTB¼¡¼¡$¼!Þ¡âÁH7Ú!¼A%ÚÁÚ¡$¼!¼A¼(Ú¡$¼!¼¡â¡TB-âÁH7¼á˜ãAH7¼¡TÂÚÁJ¢¼¡âtãÁÞ¡âÁTÂÒ¡âÁÒ¡$¼¡0¡þ  ¼AâÁâAH}7® Ì1?óAÎàöáÐîávcþAà$@"À`áð `~`\}J@ŠáÚØ}ÿ÷ŸÑ÷!öAJvá@%ÚA%Ò¡ÒÁr!ø©¿ú­ÿú±?ûþµÖ÷!ötUÂJ"JBä!¡öaû}raÄ!ÚÁâÁÚA,!²¡Ä!ák["ÛµkÝ®e»–M\¶… ³iÛõZ·k¹zíË&ë5jÍlý[È«Ø;|¯ªMó×,W?qײ½ú·ðZ·l׺]cØM\¶n »-ÇP&oñâ‰+Ú®hyñ•W´]·óVÔ[»¢%)ûÓæ³7Lÿš;=ú?3·ª3V=û­)Í÷ùk £Ô;çîìs7`Ÿú=^Üãwˆôùô£ï+ñHÙŸ6õûûÿ`€H`óɲO<%XB !xÓN<â,æMQâÄ#‹nÈa‡~bˆ"ŽHb‰Êò8‹-7éå òÈSJ &†(Ë?ñxST;EÅcI:Ù\ÃÐ5 Q#N7ÝdÓÍBâdC8 Q#ÎB²ì“ 5ÍØÂ>ÔƒM8Ù3?Ôd³K.÷„SL1ïÀ“Í+ÿ0dË? us8ÝdÓM6âdsM6þÔˆÓÐFâd#N<–üX”7íÄ#NùÈSJ Eyóc;òxO;ñ´O;â¼³¢7íüèM;?¶ó£7ñxS”7ñ´7E‰ST;ñ´O;ñxÓN<ÞÄãÍï´ó£7ñxÏbñxS”7íÄãM;ñˆÃ¨8ÞüèM<âÄÓN:ñxÓN<Þ%8Œz“£EyÃh;ñˆÃ¨<âüØŽ7ñxóc;ñ´7%`RÌm´ãMQé(ò\Ã?\„vÙ“]Ï­sÄ€ M?î ð;8gäü³8 <ÌrËïS&ÅüцË6ߌsÎ:ïÌsÏ>?¼O.ûˆSÂ#Êü€»ñxócþ;²ü uÔROMuÕV_uÖZoÝó>¹ì#N<‹ýèM;E O<”°×Uï#Ë>ñxÏbÞ´&ñd³5 Q“ 5ÙP#5 m” 5-¤L6ÍcK.¹(ãÍ?álÔL.¶(s>ÔdSL/ûPSŒ-ûÀCÍ+ýdCM6¯ìÃÐF×dsÍFÙP³5×4DÍ5Ôd#&Þ´ãÍí¼OòÄóH íÄãM<+%N<íxST:ñˆS”8ñxè7‹½ãMQâȳX<íˆST;éåM<ÞÄãM<íÕN<ÞÄ#N<ÞÄ#Žxx£(íˆG;â!Ž¢,&âø‘8äo´ÃòˆÇþbŠ"yü¨EñÆÚQo´ÃEñF<¼ÑoÅñðÆb¼!vx#ÞøQ;¼Q”tÄÃñð†8â!Ž•àÊøCŠÒŽtÄCPÛ‡$v STÇ·BsöñxàÀÿPÇþ¡Ž4gè€Îhdm%x„2þзÉqŽt´™,öl¹Ø‡8J€ eüAEñFQVä¢äB³¬m­k_ ÛØÊv¶´­­mo‹Ù}äbÞÇÄqüHòˆÇ#J°ÜÆv²ØGQ¼oüÈñ(Æ5”‘ j\ƒÉÆFŠ‘bˆ£}+F6ú–‹W¨÷»xE1rÑ·dƒÅÈ5²Abdƒ×(Æ@”±‘P£Ù F1®Ñ·b\ƒÅÈFߊѷbd£Ù F<0á¢xãGâˆGÊ!G”@EGQÄQ”vx#ÞˆG;ÄQ”vÄ£Þ`T;ÚQ”vÄÃJ‹‡7âÑþwµCEiG<¼!¢xãGíðF<¼ÑF‰#Þˆ‡8äÑŽ¢ˆ#Þh‡8âáx´Ãâ(Š7âÑFy#íðÆÚvxCiÞˆ‡8âÑo0Êí(J;¼qü¨Ei‡7Šâ¢¤£(%x„2þÐFy«ôÃbP×IL“0Å$ìz縃ÓØ>pà€¸cû˜Øáœáÿ',ë\PÆÚë` {ØÄ.¶±ìcËbò(Á#rñx£EñF<ÄQoÄCÉî¶·¿ îp‹{Üä.·¹ÏndËâñ‡7nü#oÄØQ)JnþrËâÞh‡<¼oÄÞÇ5¨‘ ed£Ù(F6б‘n(ãñ¥F6®Q j4ãÏéÇ?öÑj£oÙ F3¨QŒ\c#Ù¨øF¢ j\ƒÅØÈ562bPc!ÉÆ5ŠñbPÖ(J;~$Žxˆã3*E Þá.yˆÃEñF<ä!Ž¢¼£ñG<¼oÜøÆâˆG;âávx#Þˆ‡7âqãxxãÆÞø‘7~ÔŽxx#ÞHG:ŠÒŽ¢x£Þ(J;uãxÈCîòÆnÇÃñðF<ä!Ž¢xã7.Š7ÚávÄÃñhG<ÚQ”vx#Þ(Š7â!Žþy£ÞhGQÄQoÄÃé(Š7J`‰bü¡ íðFQÒ¡oÇ@Ó“0Å$êÊüIÄàûø‡=Ž0 @Òø‡: )$°ø?°@` æÞG,QŒ?´!ßô¯¿ýq½\ìC%xD1þ@c÷#íPâвp ¨€ È€ è€nû ûÐñ ñà 7éP ñð%°(lû ÿà.Þí` ñP Q Ù@ Ù@ ×°Å }S Ñ Ôp Ñ .G ÊP Ù°Å@ Å q Ñ ÔP Q ÙP Ñ ÊPq×°Å@ Å@ Åp ÔþP ÔP ÔP Ùp Åp Ñ–à âÞÀ(íÐòPâÞÞð#íPíð#ÞpcÞð#Þ ñ ñ òà îâ ?Òñ E!EÑÞPÞÞÞð#âÞíà E!òà ñ0vÞÐâÞð#íà íPíí ñà ñÐÞÞíð#ÞPÞ JÓ?â âÞPí7Öcâ âÞPíÀ(ÞÐE˜  ÐEÑéŠàmIíèŽïØŽÍ¡•¦ΡûÐêáûPnûP  Ð$Hii²°òPþ˜  „íâÞâpcò ¶pnÉ‘é‘ ’!)’#Ù²°Œ"âÐéPÞ@3R %@’É& ÿà íà íð#âà ñ°Å0Êp ÅÐ q ÊÐ Ô  ×@ Åp ÅÐ Ô  ÔÐ UÙ ×P q Å@ Êp Åp Êp Å@ ÅP•×@ ×P Í0ÊÐ q Å@ Å@ Å  }s }3Ê Å0}Ó ÔИPííà íâÐ3r %ÞÞÞÐñ Þâà ñà E!JÓò Œâ ñà ?â ñ íÞPíâþ7&ÞíPíò E!ñà ŒòíÐcÞÞð#Þâðî"Œ"ÞÞíð#íà ñà ñà íÞÐñ ÞPÞÞâÞÞÐÞÀ(íPÞÐñà ñÐñÐñà %` Åðmà âÞŠð‘êñû0“–¶%€ Åðmð Сɶ¹°âP˜°  ííÞâíP¹¡/ £1*£3J£Â¶¹°ÞÞÀ(ÞÐE!òPûP£³²ðâ âéð#–ÐÅp VÙ Ê@ Å  VY ÔþÐ Åp Íp ÍP ÔРʀ¦ÊÐ ×P ÔÐ ×P q Vy Íp Ê@ VI ×`¥ÅP•×P ×Ð Q ÔP ÍP ÍP Vy VI U© Åp é` 7æ â ñà EÑù §P=Öcíð#ÞÐÞÞ ?â ñà ñà ñà ñÐñÐñ Eá ñÐïPâíð#ÞpcéÐcÞÞé ñà ñà íà EÑñà ñà ñÐEá ñà ñà EÑÞà.íá7ÞÞPÞâð#íà ñÐ?Òñà ?â ñ0vÞð#ÞÞÞ þ?˜  Ќ⠘À‘ûðûlûpnûPŠ  ÐGê±* û%ðÄ@ ñ Jã ñ  ³1+³3K³# ÿíÞÐÞÐñÐñà 0#¥P4› ÿð#ÞÞÐÞИéÐééíPéð#éP~—?"ŒâwñÐÞñÐéÐâá¶ñ ñà íà éé âíàwññÐEÑJ“ññÐéíE‘–Pâð#ÞPâÐò¥Pñà ñà 7æ íÞÐEá ñà ñà ò ñÐþEÑñà ñà îâ ñà ŒÒE!ñpcE!ÞÞPâÞÞÐÞà.ÞPÞíÀ(Þð#íð#ÞPÞ Þð#â7Þâà ñà ñ íÀ(ÞÀ(ÞâPíÞâð#Þð#âð#ÞÞPò ñ ÞÞP–P Ðíà E‘Š`nû0³ûPŠP Ð5ËÁã¶¹°âP° „ííÞÞÐñ Þ LÃ5lÃ7,nû ûÐŒ"ñ ?"òPû ³û û=ÖÞà – ÅRŒ ˜ ÅUŒ –þPÅS\ÅSìÅ–PÅRŒ ^\Å_l ž` ž` Ul žPÅRŒ RŒ –€Åu¬SŒ R\ÅRŒ –€ ÞÀ(í7Vm ñð%í ªÞÐñÐñÐJscïÀ(7æ EÑñà ñÐïÐÞÐEá ñà ?ÒñÐŒÒ?â ñÐÞÐcÞÐÞPÞ7öÞPâÀ(íà ?"ñÐñТê ñÐ?â îâ âPícÞííà Eá òíà.éP%ðÊðmPíñ ææÎæ¶%ðÊðmðÎ÷ŒÏùŒl²°ñP˜P þïÐñà ñÐî" úÌÐ íÐ Ñ-Ñ- ûÞÞÀ(ÞÞ@3R %0ÑÆ& ÿÞÞÞÞPÞÐñà 7–íà ñàwíà ~âÐéÐÞð#ÞâéE‘céíÀ(âññÐéÞñ ñí í Þ~7~âÐÞlåwñà ~WÞÐñà ñà 7âÐ3R %à íÞÐÞÐÞÞPÞ0vñà ñà íà 7–ñà ñà Œâ ?â íEÑñ ñÐñà íâÐñàþ íà 7ÞÐñà EÑñà íà ñà ?â íPâà Eá íÞÞð#ÞpcE!ñ íPÞðíÞPâà ñà ñà ñà 7ö#ÞÞÐñ íÞÞð#ííâíÞEá %€ ÅðmÀVñà ñ #màûP˜P Ðîàžkû û!€ ÅðÐâ íÞÐÞéà ¹Ñ'Žâ)®â+Îâ½¹°ñà ñÐñà E‘E!òPûÐ⸶¹°ñà ñÐñà ñà JÓâPÞPéíþÞPâPÞíÞíPÞ7&ñà ñà ñà íà ?â ñà EÑE‘ñà ñÐJÓñí òPéð#âð#âíPííð#ï òÐå Pñðñ òPÞ7âíà ñÐŒ"ñà ñÐñà íà Eá îâ ñÐÞ ªâ 4ÞÀ(ÞâÀ(Þ ñà ?ÒÞ EÑŒâ òà íÀ(Þà.ÞPéÞíà òíð#Þ ñÐñÐÞíÐcíÞÞé Œâ Eá íP% ÊðmÀ(Þ€ þAÑûP  ÐðA. û%€ ¶@PíÞ âPâ²ðïñò!n²ðŒâ ñà éPÞ@3R % òÍ! ÿÐE!íÀ(ÞÐÞÞð#íPâPâà îÒñà ñÐE1vñà ñ E!âíð#cWò ÞÐéâÐñÐñà íà íPâà Œâ ííð#Þpcñ ñà ñ ÞÞÐÞPïÐ3R %à Œâ ?Ò?"âPíÞpc¢ÞÐñà íà íà E!Eá íà ñà 7VÞÐÞÐþÞPÞpcñÐñà ñà íPÞíÞPíáÐñà 7Vò íà ñà ñà íà 7íà ñà ñ âícWíâà ?2vÞÞÞð#ííPíà ñà EÑñÐñà %€ ÅðmÐÞPé 1ÿ$XÐàÁûJ(*ö§ Bˆ%N¤XÑâEŒ!î˵O\‰GÊ ð¯]<”)㵓¥ÑåK˜1eΤYÓæMœ9sî˵¯7qòRzk‡R€¼xJìÓYs_®éTz‹ç-¥·xí¼µkç­]r±q”ÅøCPâ yˆÃIâh‡,hzT¤&U©KejSúÔìþ#ûðF<¼‘¦t DòˆÇ#J°¨fd¹ØGš¼qÄ£)ñJÚá ”´%Þ@‰8âÑŽx´ÃI∇7âÑŽxxƒ+ñkG<¸‚oÄ£Þˆ‡7œÔo´#Òñ†<â!Žxˆ#Þˆ‡7ÆoÄ£ÞˆWÂ!Žx´ÃN Gâ!S” Þˆ‡8âáxx#\yG;¼v8IñðF<¼!'µ#∇7RÒŽx´ÃíðF;Râxx#툇8ä!Žxx£âX<ÚñŽvÄ£(iGJÄo´Cñð†“Úá¤vx#%툇7¸âxˆC(ñJ¼!”ˆ#þÞˆG;¼ÑŽt´%íW¼®¤Äí@I ¡Œ?´%íHG<ñ6°Á ˜Ä$¼à°Á 3v‚ „a 7˜Á?À Òø8°~l#€Ä“죊PÆÚe,gYË[މ,öX„€7Ú‘’vx£ñ‡8lÁe8ÇYÎs¦sí|g<ÃDÿˆG;âÁ•xx#(ñ°TŠä&²ø‡7ÚáxˆÃIâðF<¼vÄC)G<¼á¤vÄÃÒ‰‡7âáxx#í‡8ÚqÄC툇7P"'y#Þˆ‡<Äáv ªþñhG<ÚvxC:ÞxG;R"Žxx#âH‰8PâxˆCmGh0 iHÃÒ0FÖ³n i‚ÿØÇ>Ð1rì£ ¸Ç>À!€}ôãTpÀ>ÀA€}à£]þȇ>žÁ‡}P]ðTßG QŒ?´að‹g|ãÿxÈG^ò“Ÿú>r±q”àÊøPâx´#âˆG;P’ ʧ^õ«g}ë]ÿzØÇ^ö³§½ä÷‘‹´#\ñJ¼Ñ”@ñxD öQ{×ï#ÿ@”7ÒÔq¤Ä(iG<Úávx#Þˆ‡8âÁ•4y#í@‰7ÒÔŽx´Ã(i‡7PÒŽxx#%∇7âá ”´ãâˆG;¼qˆ‡vˆ‡t‡xð'yˆ‡vx”ð†”qøq‡G(qˆ‡vð'i”ð†xð”hop’vHo@ oˆoà oˆþo@ oˆoˆoH oH‰vp®ˆ‡vð†xhoˆ‡vˆ‡vˆoHqH éð†xð”hoH‰vˆ‡v@ ®xoˆoˆopoˆ‡vp’vð†xð†x‡xð†vð'i‡4i”h‡wˆqH qˆqH‰xeøƒ6poÀÕ»c8DDLDc¸‚؇4à{`€D؇@(»}`øt€}@¸‡~ø‡²s½}(GP†?häkEW|ÅÅ“…ˆ‡À„b „ˆoˆoH oˆoˆY€Eb,FcÝWS±?m bͪu+×®^¿‚å¹/×¾x%)û`a»xÞâAô¶0WغvïâÍ«w/ß¾~ÿþº/×¾…Þây‹çMœDòâ=*±/°Þ}¹öÅóv2Doñ¼m–(n¡¸…Þâµó¶ÐÛÂvâ¶‹×Nb;oñÄɃè­ÝÂv Ûy‹çma»“âây‹çma»xíⵓè-D‰íÄÅkÏ[EuyÓ>8õOQ7í£å>a²™Ó>%(¢Ìm´Y§wâ™§ž{òÙ¥,ÿ¼SÂ#»@<ÞÄÓÎBâ,äM<²ô©¤“RZ©¥—b𩦛rª¥,ÿÄãÍBòˆ<ÞÄã òÈSJ Z*Ë?Þ,äM<Þ¼ÓÎBÞÄÓN<ÞÄãM;ñ´7 A´8 y7íHäM<Þ´þ7í,ÔN<ï´#‘7ñˆãM; µO;Þ@O; y7‰8Þ´7 y8ÞÄãDâ´#Q;ïÄN°JºO ŠóGŒS^¹å7í“Ë?─‰2þ7âÄãM<í,$N;²\Þºë¯Ã»ì³s¹O.û,ÔÎfé,$€<ñ´³¹O.ÿ´³7 yÓÎB툳7òˆO;yO;Þ´3£7ñxO;ñˆ#‘7ñ´ãM<íx7ñ´#‘7ñˆO;ñˆ7ñxsR;Þ´c3Þˆ‡7fÔoˆC ñF<ÄoÄ#&mG<Q‚…ˆCi‡D¼vH¤ÞH;N’ˆÄCòXD"Žxxc!ñ†8â ‰x#íˆG;¼vxcFñhÇB¼!Žxˆ#ñF;¼vxC iÇBÚáx¤#ñhG<Úq,ÄòþðF<¼vÄÃñðF<¼Ñoˆc!â‡7âÑoÄà ÇID$yHÄíXH ¡Œ?´a!íHG<A<×í£PÆÚðÈKbRÿˆG ,Q B@"íXˆ8 "qØ“ª\%+[éÊLÉâ툇8ÒÑŽxx# ñXUм'²øG<¼Ñ‰ÈCÞˆ‡8âávHÄñðF;ıq,ÄíðF<¼oÄÛñF<¼oHDòðÆBÄÑŽx´C"ÞØL;âÑŽxx#â‡8Úá…´c3ÞXˆ7â!Ž…´#ÞˆG;N"q´U¥(7ÒŽxx£ñðþF<¼±q´ÃñÇB¼qÄÃíG<Äq’vx#âðF<äá…x£ ‘‡8Ú±o´c!âð†DÄvÄà ñF;â!Žxˆc3툇<ÄoÄÃíXˆ7âxxã$íH;6ÓŽx´C"òÇIÚ±v,¤ñ€ˆ7â!Žxˆc!ÞˆG;âÑŽxx£˜(ÆÚà qÄÃñPDŸëØÇþc%ÀD1þÐÈb6³šÝlžö‘‹}ˆ£˜ØÅ°vxc!âˆG;’ ÎÂ6¶²-mkkÛÛâ–MûÈÅ>¼!o,ÄíXˆäG”`¹ÝÓ>r±…´ÃñH‡þ½±vH" i‡D¼±™vx£ÞXˆ7ä±oÄ#i‡D¼v¼ÃñðF<¼oˆ#íðÆŒ¼ÑqÄÃñðF;âáдà G<ÂvH¤ å Ç#Jw´ÃñÇBÚv,Dòˆ7âщˆC i‡7âáÍ´c!íðÆBÚñ‰´ÃñG<Ú±vx£ñF<¼!Äxx£ÞG<Ú±vx#íðF<Ú±o,D iG<¼oÄ£íðF<Úávx£ÞˆG;ÄoH¤ñðF<Úáxˆ#Þˆ‡˜Û±1ÇÃñð†8$RE(ãm8‰7þ0±ÜGsi%x„2þÐHc:Ó}’Å>âQ‚GƒðF<Ä1KÄñ…¦[íêWÃ:Ö²¶“,þvÄà iG<Úo€U¥(Á¬¹$‹ÄÃñGLÚoô9ÞˆG;â!1{#∇7ÚoÄ#ÜÞˆ‡7â!yˆ#Ü툇˜ÃívÄÃbއ7ÚoÄ#á–‡7âÑŽxÈÃᎇ7Ú‘Žw´#òÇÀ½!q´#Þˆ‡7Úo ¼ñxG¸ÅoÄ£ ùG)JàxˆcàñðF<¼Ñçp{#Þ·8Úáp‹ÙáöF<¼o Üí¸7úþìxˆCåâh‡Ê½Ño ¼ñðF<¼ÑoÄ£—‡7âáxˆ#í¸8âáp·#ÜÞx;âñŽv„Ûñ‡8þ•‹ÙñðF¸Å1ðvÄÃñG<¼Ño´ãíˆG;ä!ŽxÈÃñðF 0QŒ?´¡Þw:QlÛ(ÆÚðùÓ/w¹Ø‡8JðeüÞx;ÞávÄCÞÈê{ïûßøûÈÅ?Úáx´Ã∇8.yÄã%؇ï÷‘‹}ÄÃ*W¹8ÂÝŽxxcûñhG<ÄnoÄ£ñh‡ø½oÄ£Þ·8Â-ŽxxCåÞˆG;¼±þývă7ÄC; \:´ƒ7 œ7¨œ8ÈC”&(ô&Šâ(’b)šâ)þ¢b&ÊÂ>ÄC <Â.„[;xƒ˜mŸ,¤b.êâ.òb/úâ/c0 ã0ö¢,ìC¸Éƒ8¨œ7ă7«”B c/ÊÂ?„›7¤CŸyÃ;´C<´ƒ7ă7ÄC;ă7ă7¼ÃÀyC;ă7ă7´CäÂ>¨œ˜ÅC:ă7ˆƒ<„[;ÄþÃ;ă7ÄC:xÃÀ‰ƒ<ÄC;ă8„[;lŸ7 œ7´ƒ7ă7ˆŸ8„[;„›7ÈC<´ƒ7 \;ˆ_<´C<´C”&ôïo0îC.ìC<”À#(À8ă7ˆC¤ë>äÂ?ă7ă8ÈþC<ˆC¸µƒ7„›7ÄC:ÄC;d‘7„›7ă7ă7ă7´C¸µC<ˆƒÊµC¸yC<´Ãö‰Cø<ÀÃ: ü¢: @&ªÃüƒ: &îC (‚2üAtï3—¢,üÃ;”À#ì!@<´C¸µC¸yC;ă8Ø4“s9›ó9ß„,ìC¸µC”B ˆÃÀ‰Ãö‰ƒþ˜ÅCB¾C;ă7ă7´ƒ7ô™7ă7 œ7ˆYìƒ; ÀMÁÀÈ;Ü8À>àÃìƒ; &îC (B1üAÜþê|Ï÷>äÂ?ˆC `Â.B´C¸‰C4ø?ìC.샘yC<´ƒ7ˆƒüÔB>Tpv£ƒìÃ?ìÃ?¨CìÃ%îC <‚2üA øÄg§,üC<”&À8xC;ÄC;„›7ă7ă,P|Ê«üʳ|Ëc¢,üC<ȃ7ˆÙÀyC¨œ8lŸ7´ÃþÀ‰C<ˆƒ˜yC;¤ƒ˜…›8ô™ÊµãzCoâiGª¼‘Çy ‹§ÈÚñ&oäKGœãñ&oډǛxÚ‰§oâi'o ó¦ªJxD™?Ú ªtâQ¤§.½üÇŒ[Ä4Æ1ͼeŠöÁg xPÈž|ùÇŸ^þÙ§…öÁÇ„öÙÉŸ:(øgpØÇöQG#ö±Ç 2ÂEvÒè`ŸþQæ6¾üÔPE•ÔRM=õTYþ‰§„G”ù#­äñ&oÚ‰GqlA•×^}ýØ`…–Øb=YYöLqÚI‡*oGžRJ@¶XYþ‰Ç›xäk'o´ò¦o¨j'o 2o¨j'žwâ‡*y¼‘GœxÚñÆGoâñ†*yĉǛxĉGÈäGoâñ2qâñ&y¼‰Ç›xäñ2oâiÇÇv¨jƒž|0A>ãñ&oTŽÇ›vâñF«vâiG+oâñfFoÚñ¦xäñ†*qâñ&oâ‡*q k'yÄiÇ›wä“Gœx¼i'oTö&o´gÆvþ´j'oâñæ[oÚѪªÄ¡ªoÚñ&oâñ†ªv¨j2qÚ‰G>oÚ‰§x¼)“bþhCqâñ&E|-âL31³ˆöù'£€E!{¸äŒö±‡rþ釙xF€YþÙúqg€}Ô€œ}þ Æ…˜Ð vö)A‘bþhÛ襟~Ô}rÙGœ0)漉§xÚ‰GœxÚ¡*êÕ_ŸýöÝ~d÷Éeoâñ†*ª¼i‡*ä‰ç%ØGüFµ\ì#툇|ò×Àxx#íðF<¼v4Ð툇7âÑŽt¤£ñh‡7HoÄÃíðU¼þ!o´£ÞÈ_;ÞáæÏTiG<¼Ñ@oP¥ÞhG½A•w´Ãñh‡8äцxÈã%G<¼o´ÃíÈ_;¼‘?oÄÃTiG<¼AqÄCñHG;âÑŽxx#ÞOþÄvÄ£ ôFÛA•v¤C>ù‡<â!Žx´£Þˆ‡|¼o´ƒ*Þˆ‡7ØoÄÃñh‡7â!Ÿx´#í Ê;¼qÄ£ñG<ÚqÈ£ùk‡7Äoˆ#Þˆ‡7â!ŽxÈ'∇8òWE(ãmh 70Ñ«}8!s·0…˜Lq !ðˆƒöñŒ" ÐÀ-þ¡þìãû@Çö1}|b›ØÇ@Ѐ}¨cÿp‡‚Žü##è@þ±ñU¼oÄCéHIZR“6TÿˆG;âávx£ñhG<¼Aj•¢'í‰,þo¼£ñðF<¼ÑoÄÃTi‡ÅávÄÃòG;¨"ªˆ#∇7âá ùx£òðFÛAyˆ£Þh 7ÚÑ@oÄÃñðF;âáxx#âÈŸ7ÚAùÄCâh‡7Úá ªx£TiG<ä!Ž6È#¥(Aþ¼‘¿vÄÃñG<ÚþoÈÃTñÆ;Úù4PñðF<ÚvPEñðF<ä!Žv¤#ÞOþ¼o´#ÞhG<Ä!o´#í Š7âávÄÃTUÒAo´£Þˆ‡7â!oÄÃTñF;âávÄÃñG;¼A•vÄÃù{GÅoÄC ”‡7âáüÉÇÞˆ‡7J€‰bü¡ íðUÒ¡ˆ^탦ð„)l ì„ €„>L}ücÿ؇?¡€}؃ìøÇ>˜1…ÂÆØ 8°w àõ;  Ä&X¤±`¢hƒN™¼¾}Èbâ(%vñþÈÇ ô†<Äá\4Ìaó˜uº\ì£ G<Ä‘?È#(Á>À¼\ì#éU¼‘?oÄÃñh‡7âáx´#Þh`;¼vˆÃÞGþÄA•vx#ÞˆG;¼Ñ@oÄÃùóF;¼AoÈ£TñFþ¼!ùxƒ*Þˆ‡8âá ªˆCTi‡7¨âx´ÃTGäQL”àí Š7â!Š£íÈ_;¼!Žxx#Þh 7â!oˆ#íˆG:¨"yxƒ*íxG:ÚvÄCTUÄÑÀv„ƒ*í J;âѪÈGñðFþ¼oÄÃñðF½AqPþETñF½vÄÃñðF;¼ÑoÜ0ÞˆG;ØqÄÃòñUÒA•Bú‘†ôã΀4þaTdD øÇ>ZÐ…}ü£øÇ>ì`€YèìÿÐ:°u  êöa Lè@>á€{”àÊøCÞ×w¿÷*ûˆG A B â Š7äÓ@Yüò‘—üä)_ùQÉbñðF<¼Ñ@oÄÇâA¼!¼áò§òÇâÁJÈÚÁÚ*ä#Ú!¼*Þ!ÚA¼ÁäÃâÁ¨ÂâA>âÁäèBäA¨ÂÒ*¼¡0¡þ  ¼AâÁâA|%xnLa$Œ '!bp¡þØa ö¡`æ!4àþaÖ¡D Ê úa@îáÀöÁ àÔaaàöápÁØaþ¡x ¡þ  NßgraÄ¡Aþ@H>Ò¡ÒÁr!‡‘‹Ñ‘'ö!ö!¼!Ú!¼*Ò*@âáJ`ŠqráâÁÄ!Ò¡òǨÂâ¡ò§Þ¡¼!Ú*¼!äƒ*¼¡¼A¨ÂâÁÄÁ¼!¼!Ä!Ú!¼AâAòç[Ú!ÚÁâÁâ¡Ä!¼!Ä!¼!þ2¼¡¼*ä#Þ!Ä¡ âAJ¡Ä¡Ú!¼*ÚáâÁ¨BJÈÈäÁJÈâ¡ÄAJÈâAâ!¼¡¨ÂèòǨ"Ä!¼Aò'¼!äÃÚÁH>¼!¼*¼!¼¡¼!¼!äãÚÁâAÚ!¼!Ú!Ú!ÚÁâ¡Þ!Ú!¼*Ú!ÚÁ¨¨òÇÚ*J@”áÚ ¼|% b4CS4As'2B!TGuþ!#5÷áöáöáöa öáö@!2b T‡'P30Aþ  Ñ8‰Eþö!JvÀÚÁâÁäƒ*Ä!dá8·“;»Ó;‡Eþ¡¼!¼!¨Â`ôJ¡ŽQöA¨¢¨ÂâÁ¨¢¨B¼!¼¡âA¨ÂâAâÁâÁÞ¡âÁäAò§òG¼¡¼¡¨¢H¼¡òÇâ¡âÁÚ!ÄA>¨¢âÁ¨Ââá[âÁâÁÚáÚ!Ú¡¼¡âÁÚÁä#Ú òáJ ¼¡¼áâ¡òG⡨¢âAâA¾…*¼¡¨âA¨Â¨B¨ÂâÁÚÁÚᆼ¡âA>âÁÒ!þ¼*ä£Ú!¼!¼!Ä¡¼!¼*äÁ¨ÂäÁò§âÁâA¡Ú!ÄÁÚ!Ä!¼¡Ò!Ä¡¨ÂÚ!Ä*ÚÁÞ¡âÁÞ¡âÁä#Ú!¼¡0¡þ  ÚÁ¨"Azö¡Tö¡'ö'2B!ð > LeJÀŠáÚà;§UTö!öAJÀ”á@äÁâAâÁò§dZÓU]ו;÷!ö¡¼Aä!¼¡¨Bä!¡ö¡÷!þ*ÚÁ¨Â䡼!¼!Ú!Ä!¼!¼ÁäÃÈâÁÚþ!Ú!Ä!¼!äÃÚ!¼!Ú!Ú!¼*Ä!¼!Ú*Ú*Ú!ä£Ä!ÚÁ⡼!¼!ÄÁäCþ äáB@òÇâÁÚÁâ¡Ä!¼!Ú*Úá¼!¼!¼!Ä*Úá⡨B>⡨¼!ÚÁòG>ÞÁ¨ÂâÁâAâAâÁâA>âÁJÈâ¡â¡âÁä#ÚÁ¼!Ä*ÄAâA>¼!Ä!¼¡ÄA¨BâÁ¨¢¼!Ä!¼Aä!Ä!ÚÁ¨BâAò§Aþ  ¨¢Ò!!zþö[ö¤!#JeJà”áÚ€]«w daâ¡¡HÄ!ä#ÄÁ¬}ÓW}ßçþ¡¼!Ú!Ú!¼F¯JàeaÚ!Ä!¼¡¨âÁÚ!Ä*¼!¼¡¼!¼¡âA¨Â¨Â⡨ÂÚ!¼*Ú!¼!ä#Ú!¼!¼!¼*Ú!¼*ÄÁâA¼!ÄÁâAÚÁÚ!Ä*Ä!¼!Ú!¼!"'Ò¡ âA¡âÁÒ!äÁJ¨¨ÂâAâÁâ¡âÁâÁâ¡â¡â¡¼¡þâÁâÁä#¼¡âÁâÁâA¨BâÁâÁ¾…*Äᆼ!¼!ġ⡼!¼!¼*Ä!Ä!ÄÁâÁâÁâÁ⡨âA¨¢âAâÁÚ!Ú¡„¼¡¼A>ȼ¡Ú!¼!¼¡0¡þ  "'¼!ÁXöáò÷¡0¡þ  Ö—Z÷!öAJváÀâA>ò§¼*ršÏÓùWda⡼!¼!¼AòGä!¡ö¡÷!öÁòGâÁÄ!ÚÁÚ*Ú*ÚÁ¨¢nÈòGâÁ¨þÂâÁ⡨ÂâÁ⡼A¨¢â¡âA>Ä!¼¡â¡¼AnH¨¼!ÚÁ¼AJHâ¡ F¯J Ä!Ò!ÚÁâÁâA>¼¡âÁòÇò§â¡âA>¼!Ò!Ú*Úá¨Ââ¡â¡¨¢òǨBâ!òG>¼!¼¡„Ä!ÄA¼!Ú!ÚÁòç[È䡼!¼!Ú!Þ¡â¡È¾Åâ¡Ä!Ú!¼!Ú!Ä!Ú!äƒ*Ä¡¼!äè"¨¢Aþ  È0Yöaz2‚Wö¡Aþ  þÔ¹;eaä!0âÁÚ!¼¡¼*¼!dA¸¯»³[!ráÚ!äAâA¼!¼F¯Jàeá@.Ä¡¼¡¼!Ä!¼¡âÁòÇÚ!"ÇÚÁÚ!¼A>⡨ÂH¼¡äÁâ¡H¼A>òÇäAÚ*Ú!¼¡âÁÈâÁâAÄÁâA¼¡âÁÚ*ÚÁÚÁâ¡äAÚ@òáB€*Ä!Ú*¼!¼*äAÚ*¼!¼!ÄÁâÁÚ*¼!¼¡ÒáÚ!Ä!âÁ¨¢âA¼!ÄÁþ¨âA⡼!Ä!äÁâÁâÁâÁn¨Èä#Ä¡âÁ¨B>¼¡¼!¼!¼!¼!ÄÁâÁ>(¼AÄ¡¨Â¨Ââ¡â¡âÁäƒ*Ú!ÄA>âAÄ*Ä*¼!¨ÂJÀŠáÚ ¼*ÒAºs~eJ@ŠáÚ@»qraâ¡AþâAȨBÚA–ÝÛ¿Ýz÷!öÁâÁ(¨Bä!¡ö¡÷!öÁÚÁâÁâÁ¨Bä*Ú!Ú*Ú!¼!¼*Ú*ä¡„Ä!ÚÁò§¼þ!Ä*ÚA¨¢¼!Ä!¼!Ú!Ä!¼!Ú*Þ!äãÚ!Ú!¼!Ú*Ä¡ä#ÚA¨Bþ òáB@âÁâÁÈäƒ*ÚÁâÁâAâ¡HòÇäA¨BÚ*Ú!ÚÁÄ!Ú*ÚÁâÁÄ*Ú*Ú!Ú¡¼AÚ!¼!¼!ÒÁäÃÚÁò§Ä¡¼!ä#ÄA¨@®È¨Â¨ÂÄ!Ä!Úá¼!Ú!¼!¼!Ú!¼¡¨"0Aþ  ¨¢Ò!A»÷¡Aþ  ÀeaÄ¡þaA¨¢âÁò§äAl÷—Ÿù¹Sþ!Ú!ä#¼!¨Â`ôJ¡ŽQþAÄA¼!ä#ÚáÚ!¼A>âAÚ!Ú*¼!¼¡âÁäÃäƒ*Ä*¼ ≋ç-žÁxíz3èÍ ò¥·,ûÔŽ7ñ¸ÔŽ8ñˆC’7¹äAíÔŽAâÈc7yO;yO;ÞÄãM<ÞÄãAÞLæM<ÞÄ#N<éˆcP:$µ7ñxc7âÄã’8¥ÓŽ8y7µO=RB;Þˆ8ñ´ãÍþZÞÄãM<âÄãM<.Åã’8òäM<í„ã8‰7ñ´c7ñx7ñ´O;Þ´cP;ñ¤#ÎAÞÄÓŽ7.y7“ÔŽAÞ´8òÄ#Ž<ÆÓÎdÞˆ#7òˆO:íˆ7ñx7yÓŽ7ñxcP;ÞȳV;ñ´7‰8…€‰2´A’7˜("í´ÔVkíµØf«í¶Üv‹I (óG–kɲ8%(R !ÄÓÎAíÄãM<ÞÄ# ºüöëï¿,0s²ì8$µO;ñxC€<ò”RÂÀÉÉòO<Þ”Î;“yÓŽ7y8yÓN<Þ¸ÔþN<íÄãM<íÄãAâ´sP;µ7$µc7.ÅãÍZíÔŽ7ñ¤ÓŽ7íÄÓŽ<ÞÄãÍAïäM:òˆ7íÈãAÞÄ#N—RB¥ñxÓŽ7ñxO;ñ´O;ñxãR:ïÔN<Þ$ÎZòˆKñxO:ñx7ñxcKñ¸<âÄãAâÈ#N<òxc7íxÓN<Þ´ãM;ñ´Sé;*Ç#N<ÞäÒdíÔN<íÄãAÞT*N<íÄãM<Þ¨7µs7ñxS‚%ÅüÑF;Þ”N;hg¯ýöÜwï=÷Þ´#N ŠóG»¥¯þúì·ïþûðÇ/ÿü¶íþ“Ë>ñ”€É. N<Þˆ‡8 â yˆÃ¹ ŸÈÀ:ðŒ 'HÁ Vp¹ØG<ÚáxxCñÇA x<¢û°`÷!‹}ÄÃñHG;âávx#ÞðF<Ä!v¬ÅñÇAÚ!Žx´ÃñhG<ÞvÄíðF<¼q¤Þp‰7Úav¼Ã *{‡7âá ƒx#툇8âá’ƒx#íH‡7âу´ã â0ˆKâáxˆ£ òˆÇ#J Žxx£ÞhÚ\⃈#∇7\òŽx´Ãò0H;¼ÑŽƒˆ#ÞˆG;ÄA’vÄÃñpÉ;¼—¤þÞ8H; ÒƒˆCñhÇAÄvx£Þˆ‡7Ú‘•‰ƒ$Þh‡8âxx#∇7Ú!Žx´Ã .‰G;¼oÄÃ$iG<¼qqDeíð†AÒa䌛}Èb‡<â‘C’´ÃiÇZ¼ÑŽx´ã Þˆ‡7H"’¼Ã∇7ÚávÄÃñð†K Òƒˆ#.ñÆAÚvxà .ñÆAÄtx#Þ0H;âÑŽƒ¼ÃñF<\qüÁ (7âჴà í˜þŒ7âáxˆ#ápÉ;âÑŽƒx#Þˆ‡7âáx´ãÞˆ‡7âáv¤ïðF<Útxƒ$ÞhG:¼oˆÃ 툇7âá ƒx#ÞÈ^;Ä1o¤â ‰KÒo$∇7âу¸$â‡7ÄvÄCò8ˆ8äÑŽƒx£)"”ñ‡6¤Þh‡7Úá e`â˜8&‰C`â˜8&‰C`â˜8&‰C`â˜8&‰C`â˜8&‰C`â˜8&‰C`â˜8&‰C`â˜8&‰C`â˜8&‰C`â˜8þ& E`–&0Q‚G(ãm ´è×*‹}Ä£˜PÆpoÄÃí0ˆ8â!‹ÑÛþö¸Ï½èe±—ÄñðF: â @¬%À½,þÑŽƒˆã Þˆ‡7 â’x´#ÞhG<¼vÄCïh‡AÚvx#ñF;¼ÑŽJµ#í‡8\v$ñG<\âvÄCò ï@Þ`Þ`í`ÞÐñ ÞÞ`ÞÞÞÐñà íÐS %ÞÞÐá ïÐñà ñà ñà kñ!ñà ñà ñà Ñ$á ñ ÞííÞþ 2!ñ ñÐñà íí0Þpí`Þ@ÞÞàñà íò ñà ñà k!âÞâÞÞ`ÞЕ"íà ñ $!Þ@ÞðÑñà .íÞP˜P Ðíà ñ ò ò Ù -ûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûð˜p˜@ Þéà ŽâPþ˜P к7´¹°ñ–P Þ@â@í ôXy¹@û û ñÐ$á í` ñð%°¶·²°ÞÞ`íà ñà ñà ñ ñà âpÞíÞpÞâíâÞÐñ ò`íà ñà ñà â.qÞ ñ 2â ñ ÑÑÞÐÞ`í`.!ñà ñ Ñ‘ñГdPòð%@ÞpâÐñÐñÐáÞàÞ@íÞ ñ€NÞÞ`éíÞÞ`âéÐñ þò`Þ`í ñà ñàÞÞ.á ÑÞÐñà !á $Ññà ñà íà Ññà á ñà á í ñà ñà kÑñÐñÐñà ñà ‘Þíð!ñ Q  ÐÑ$A ŠðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðŠ` ŠÐ á ñ ñþP  Ð y¤í# ÿ %ðÊð`ÞÐá íâ` Hº¥\Ú¥º' ÿÞÐñà ñÐñÐñà 1¥P¸' ÿ Þíâ=òà ñà á ñÐñà ñÐ!Ñò Ññà á ñÐ!.á ípââ`ííñ ñà í@ÞâÞpíp..ñà íÞàÞpmòP %ÞÞÞñ âà ñà íÞâ@9ÞíÞðíâ`Þ`áÞÞí`þíâ`í`íà !ñÐñ “!á ñ ÑÑñà ñà ñà ñà ípí@Þ@Þ@íÞpÞ Þ`ÞÞÐñà ñà ñÐòà ñÐÞ`Þáàá ñà %€ ÅðmÐâÞíÐ Šà¥ûðû°ÿ0´Š€ Í@% Åðmà¥^º¹°ñP˜P  ÞâÞÐá ‘ P[¶f{¶mµ¹°á ñà ñà âp ñð%°¶·²ðñÐñà áÞÞÐÞíÞíà Ññàþ !ñà ñÐñàñà@&Þ`íïÐÞâ@íðí`íà ñà âÞí`éÐÞ`ííÞÞ ñÐÞ ñà â@âpâ íÞm ñð%0áÐká $á ípâ Þ@.í`íà ñ ò`í ñà ÑÞíà â íà “á .á ñà ñàÞí`ÞÞí`ípÞ ñà íà ñÐÞÞÞÐÞ`ÞÞíà ááñÐá ñÐñà ñÐñÐká ò ñþÐÞ`é`% Êðm ñÐñà Ê€ C»ùðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðûðù°¸±ÿÐûЊp ÞâP˜  Ðh‹¤²°âPŠ  „kÑñà ñà ñ «Ü˾üË $ ÿÞ`ò ñ ÞÞ@S %€{²ðéÞ`Þpípíí°ÞÞ`í þÞ`íâÞP)ÞÞ0ÞÐÞÐéðí€6*â`íâà ÝÓñà ¡2ñÐñà ñm1¥Pñà ñà íðñàñà ñà á ñà ò ÞÐ$áÞñ ñ Þâ@ÞpíÞÐÞ`í@âÞÞÐÞÐ$á !!ñà ñÐ!íà *sÞpÞ`Þ°ÞÐá $!íÞ 2ñ ñà !íÞÞÞâà ípí`Þá %€ Åðm°Å` ú`ûðùðùðùðùðþùðùðùðùðùðùðùðùðùðùðùðùðùðùðùðùðùðùðùðùðùðùðùðùðùðùðùðùðùðùðù`úúÿ ûðùðú ˜  ñP–P ÐÀ\û û%€ »ðàÞâ`!í ã}ßøß¶±¹°Ñòmé` ñð%°¶·²°â í`ÞÞíðÞÞ ñà íà íí*ÓñÐÞ î ñàÞÞíéà ñà ñþÐñ ò`éÐÞàÞíà ñàâ`.!òÝÞÞíà ÑÞí á ñ ñ ñÐâ ! òð% !ñà ñÐï ßí`íàâèè ñÐ!àÞ`Þí î ñÐïíàíâ ñÐÞÐÑáÞÐ.ñà òí á òíÞ`âÞ`ÞÞÐá ñ ñÐï ßíèíííàÞâàÞÐQ  ÐÞÐÞÐñ` úðù ÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¶‘¶±ÿûðúðùðýЖ  %ðÊðmÐf6ó²°âP@ „í`ííà íò ¶póLßôNÿôPOA²ðíâíÞá 1¥PQ¹ðñÐñà í ÞÞÐéàí ßíâàïàñ ñ ÞÐÞ`.òà !ñ ñÐþñðî é âíèÞâíà ñ ñà í ßíí`íà î íÐéâ`ÞÐñÐù ¥Pî íÞÐÞàÞÐñà !Þ âÞàòí á íÞÞÐñà î ò-íà .á .!ßíâ âÐÞÐñà ñ ÞÐÞÐñà ñàÞÞÐñà ñà ñà ÑO ·v l¯@oíŠK×Î[»vñ¼ÅóOÅvñ¼ ô¯]¼vÞ(ÆkÏ[ LÅþ´1è­¦|ÿþå³ùO_N}9õåÔ—S_N}9þõåÔ—S_N}9õåÔ—S_N}9õåÔ—Sß?}ùþíÓ÷OŸÍ|ÿôýË·Oí>L!,ûÓ&ç\ºuíÞÅ›Wï^¾}ýþls_®}ñJ<ÚõG€·xí¼ ¯À\v-_ÆœYófÎ=ZôhÒ¥MŸFz_®}Þ zè­@òâ=*±/õî¹ûrýk'îàAoíRôOœAqñÄÅk7<ž·xߥ‹×n¸¸xé¼µó&PœAqñ¼µóv°@qò zkçM\¼vÞ≓ç-ž·xí ¾ó&o¢(qâ § yây¤oÚñ&žvâG:Ú‰‡£áĉǛxډǃÚþ1HyâiÇ›v¼‰Ç›x¼9¨ƒÞñ†"o Gžx¼‘NÚ‰§xÚ‰Gy j'žv¼‰Ç›v¼È›x¼iÇ›x¼iGœxĉǛxĉ§oÄN¼‘§ĉǛx¼9ȃĉGƒJPD™?Úð&oâñæ‘ôÉçz|@QþÑ'}þÑ'}þÑ'}þÑ'}þÑ'}þÑ'}þÑ'}þÑ'}þÑ'}þÑ'}þÑ'}þÑ'}þÑ'}þÑ'}þÑ'}þÑgŸôùG}þqöŸ|þÑÇ&gÿÙ§L”ù£ Þ¾7\peÙGœ0Q†âñF vþò&oâ‘E\{ïÅ7_}÷å·_Ódù'žvâñF vâi'oGžRJð74YöG v¼‰Ç›vâG oÞiG vòæ vÞi'oâñF oâ'x҉Ǜv¼1È›xä'žvâ‘GŠäñæ oÞi'o ò&oä'y¼¨ƒÚ‰Ç›x¼iÇ›tâñ&oÞiç qÚh¸”äGqÄ9Èм‰Ç›x¼‰Gœvâñ¦áÞ‰§x¼‰Ç›x¼iG Фk'oâi'q¼iÇ›tâiÇ v òF oÚ‰§ƒ¼‰Ç›x¼1¨x¼¡(qâiç oâñF y¼‘GþƒÚ±P o(ŠÇ›v§éÚñ¦oâñ†"ƒ¼‰Ç›0)æ6†Säg-âžwî¹Ç}þɧ›ò)Ǧ|ʱ)Ÿrlʧ›ò)Ǧ|ʱ)Ÿrlʧ›ò)‡MòQ›ä£6ÉG9l’rØ$åØÇ?ô‘}äãåøG>ôñ|äÃYÿÐG>þ‘X¢hCÄT¸BÑì#ûˆG,±‹? Þˆ‡8oÈCÞÈ …8D"шGÜÌ>rñvx#íð†8â!Ž @ñxD öĺì#ÿˆ‡7âxˆc‡ÞˆG:Ävˆ#Þˆ‡7âoˆ#íðFþ<¼oDòˆ‡7âá¶ÃIÇãá E¾#íðF<¼!vx#ÞPd&ãáx´ÃíðÆÛqÈ#“툇7Úá ˆãyD 2é q´#âˆ7âÑEzC ÞˆG;¼txc‡ÞG;ÒoÄ£Þˆ‡7âáxˆC ∇7äqÈ#Þˆ‡7âá qÄ£iǽoÄÃñhG<ÚoÄÃñð†@ıCqÄÃñh‡"½‘Ioă#Þˆ‡7âÑoˆCñÇ)"oÄÃñðF<ÚqÈC ∇7(t¤PÆÚàxx£áxD>þþ¡|ìÃÒ`Ç;Øáƒ|¼ƒÒx‡4ÞñgÙÄY6q–MœegÙÄY6q–MœegÙÄY6q–MœegÙÄYùøG>þ¡gý£úø‡³ò±½”àÊøCr2WºÖÕ®wÅk^õºW¾öÕ¯lNd±x”àÄ Ú±Ãvx£Š”E`%;YÊVÖ²—Ålf5»YÎvÖ³}•Å>"q(ÒñðVŠ|–³²ø‡7âA‘¶#ÞȤ8âá MÆ£½H;2é¶#∇7Úá x#ÞHG<Ä!oÄ#šôF<¼oÄíˆ8éwdÒñðF;âþá¶#íhCÃJQ‚xx£ñh‡@Äyˆ£iG<¼Ax#Þˆ7vèvDñðÆÅoÄ£ŠlG<ÚÑÛvÄ£ñ‡7(âxx#ÞˆG;âá ´#âhG<Úv¤ñxG;ÒŽxx£ñðF<¼oÄÃñðF<¼qÄCÞˆG;Ùx#∇7ÚvÄ£ÇÛ±Cyˆ£éˆ7J€‰bü¡ ‡<Äñˆ|lO>0†4Œ! äã´Zô‘}ìCùÐÇ>ô‘}ìCùÐÇ>ô‘}ìCùÐÇ>ô‘u @îÀ>ô‘þ}ìCùÐÇ>ô‘}ìCùÐÇ>ô‘;;뀳úñ@úÈÇ?ôÑÁX¢hƒk•½lf÷u¹Ø‡8JðeüAíðEv˜Žv¤Ã¹hv¸Å=nr—ÛÜçþì>r±ŠìÐI‡@ x<¢û@w_÷‘‹´Cñ ˆ7Ä!Žx#“íðÆÛ!Žx´ÃñðF<¼ÑoÄCñðF<Úo´ÃñðF<Ú±Ãvx#ÞH;vØŽxˆÃñðF<¼oÄ£ñðÆÛ±CoÄÃñH‡7Úávx#ÞH;âx´ÃâˆGÊAG”@ íÇÛ!þqÄÃâØ¡8âÑŽzC Þˆ‡7ÒŽvÄ£ñðF<¼¡HqÄÃíðF<¼o°½ÞG<ÄvÄ£‡<ÚoÄ£âH;¼!EŠ#íðF<Úáx´Ãñhǽ‘IoÈC‘âG;ÒŽxx#Þh‡8âÑŽxxC‘lG;Òáx°ÝñðF<¼¡Ho´C %P„2ÑoÄCâˆÇ#ô‘íùÀ×7†ô±–µäCùÐG>ô±RŒ`@/ô‘}äCùÐG>ô‘wˆ@ù ‡;uüAùЇ|Ї|Ї|Ї|Ї|Ї|Ї|Ї|p–|Øžþ|› €|Ð؇ €íÉ}؇xeøƒ6à«DÁTÁdÁtAYØy(LØBqqð†vð‡xÂ!$Â"4Â#DÂ$TÂ%dÂ&¬+Yøqð»vˆoHðh˜R('ر{Ç·ñ”PÊ.à@ñx7ñ´#P.šx"Š)ª¸"‹-ºø"Œ1Êøâ>¹ìãM<Þt7í$€<ñ3¸O.û´ãM;Š#P;ñt%8ñx7*y7;ÆÓN<âÈãM‡ÞÄã—Þä<µ7yÓa;Þä@íÄÓN<ÞÔN<ÞÄã@âÈÓŽ@íxO;Þ´ãM<ítØŽ7íÄ#ÎâÈóH ïÄ£’8ñ¤£’@íÄÓN<íäM<ÞÄ£R<íÄÓþŽ7µÓ¡7µã¥7òx7ñx8;z<ñ´ãM<*y7ítÕ¡7ñx7y8ñxÓŽ7µã%¹ÞÄ#Ž@íxÓa;µ8ñxÓ¡7âÄãM‡ÞÈ#7ñ´#P;ÞäM<ÞˆÓa –(CHñ´O;ñÎ @O>æ ‘<±=ùУ=òäÖôÈ“<@€<»é³[ (óGÿ¨½6Ûm»ý6ÜqË=7ÝuÛ}7Þy˲8%<þB !ÄãM<ÞÈãM<ÞÄãM<²äý8ä‘K>9å•[~9æ™k¾yæ²üO;ñxÓŽ7íÄÓN<Þ <¥”Àùæ²üÓ¡7íÄ#8ñx#<ÞìèM<íä@íxóN;^¶7;¶ãM<ÞÔN<*y7µO;Þ´Óa;yÓN<âxÓ¡8íÈãM<ítx•@íìèM<Þ´ãM‡ÞÄÓF>ò”B<¼qD툇7â!Žxˆ£ñðF;âÑŽxx#âðF;â!x£ñ†@¼o¼£^j‡—ÚoìÈ;G<Ú±£«ÄÃñh‡@ÚÑ!oÈCñF<¼Ñþo´ÃéP‰7Úáµ#âˆ7â!ˆcGÞPÉŽÚoÄ£ñð†@ÄÑŽxˆ#Þh‡<Äyx#Þ%vñ‡6ˆ#íH‡75Öù cóA;ö‘}°.»aXµ|@-òØM>è!zäj¬ƒš< &|È#¬ƒZ>äAÔ”ÀÅøC`§Ë]òòqûÈÅ>ÄQ‚GìâˆG;¼ä yˆÃ¹è%4£)ÍiR³šÖœæ>r±vìHñG‡ x<¢û¸æÝö‘‹}´Ãi‡@ÚÑ¡vÄÃñð†@Ú!ŽþµÃâG:ÄoÄÃñG‡Úá •ÄÃòh‡7âá q¤ñh‡7âáy#Þˆ‡7Èo´cG툇7âá qÄ£ïð†8âáv¤òF<Ä!oÄ£ òˆÇ)J°#qÈCG‡ÄÑ!•xIòˆ7â ´C íˆ7Úáxx#∇7âávˆC Þˆ‡7âxx£CâˆG;âá qÄCiG<¼qox©ñhG<Ä!ˆ#íð’7âÑrµC íˆÇ;ÈõŽtˆC íˆG;âÑŽµ£CâÇŽÒ!<¢hC<¼Ñ<‘ô‡b["äþ£òhj™zÈC ¬C ëv#Ô ²¸òÈ=òÁº|°.ˆÌ‡<è!zÈ5¬£ëvƒHz 2ò ëòQ\zäƒu%x„2þÐt²·½w“Å?âQLƒðF;âá •xIîý/€,àXûˆ‡7âáy#Þ ëJQ¿Mÿ‡@¼oÄCñ‡7âÑŽx´#툇8âÑo´ÃKòðF<ÚvÄ£Þˆ‡8"ŽvD^òF;â!Žx´#Þˆ‡7âáx´C Þh‡7ÚoÄ£ñðF;¼oÄ£ò†@äáx¨Ä툇7ÈŽ6°îþ!ˆ‡7âÑŽµ#íx‡@ÚoÄCÞˆ‡7:ÔŽxxC Þˆ7TâxxcGíˆG;:ÔŽy£ñhG<¼ÑŽx´#íx‡@ÚvxÉñðF<ÚqÄ£ñðF<¼ÑŽxˆ£CÞè8âávÄÃñðF<¼Ño´ÃïhG<¼o¤£Þh‡7ÚáttÈñðF<¼o´ÃñðF‡To¤C Þ(A)Šñ‡6ÄCñðF<0!|°î*ßhÇ7â‘yä£ñG>äy䣸).=’yäøñGrñµ#íØQ;Ävx#íxG‡Ä!vx#íèJ¼!y´ÃKíè7âÑoÄCòð’7äÑ!qÄÃñ‡<:ÔqDòhG<Ú!vxÃKí‡@Ä!oÄÃñHG;ºò‡xÈ£%ˆ‡7âÑoÄÃâˆG;Òáx´ã;jG<¼•x#íˆJâ!´C Þh‡7â¡o´Ãñh‡7"Žx´£CíþG<ÄoÄ£ïð†@¼¡’µ#íè7âÑxC *‰G;:Ôx£Cíè8ÈC:´ƒ7ÄC;D;tˆ8ÈC°N>ÐC>°N<ÈC< R<°Ž@—qŃ<„<ăú`<°N<W<ø @W<ÈC<äC²N<W<äƒ<”À#(ôÓ}aæÈÂ>ÄC <‚2tˆ<ˆC´ƒ7þă8xƒJxC:ˆ”8ÄC;xC‡xƒ@ˆC„<ă8äC<°N<W<°N9ÐC<ˆC>ˆC XB1üA¢_êÒ>äÂ>ˆC `Â.üAxƒJtˆ7tH;ÈÂ_F¦dN&eRÓ>äÂ>´ƒ7ˆƒâ>äÂ>ÄC;‹7ă7´ƒ7ă7ìˆ7ă7ă7D;tˆ8ȃ@´ÃŽxC<´ƒ@´ƒ7´ƒ7ÄC;xƒ8„8ȃ8ă7ă7ă7ˆC<´ƒ7¨þ„@xƒ@xCëäƒ8W<ȃ@ÈC<ÈÃ;ÄCƃ<”&(ôAeÆjäÈÂ>ÄC <1ȃ8ă7ìH;ă8Ø‚¬«±+²¾Í+üÃŽxC<´C<´CÄC;xCÄC `B1´ƒ7ă„þ<ˆƒ7ă8xC;tˆ7´C<ˆƒ@¼ƒ@ȃ7ìˆ7´ƒ@´C<´ƒ—xC;xC‡xC;xC;ă7´CäÂ>ˆC `Â.üAă7D;ˆC‡ˆC;ÈŠÿ8¹ÜìC.ìƒ7ă7xI:„ÈC<ÄC <1´CFËÂ?ÄC;ÄC…ƃ7¤ƒ@x°N)”À_ÊÂ?ă7´C<ˆƒ@ȃ7ȃ8tˆ7ă7tˆ7¤CzuëÓ÷åú×.Ho½µ(@^¼G%ö]§¾/׿Ÿ?Ez‹×.ž8Þz‹×î¸x" jg qâ'žvjÇ›vz'qä!¨¼¨q4JGœxÚ¨Þñ&oâÉ‘òf vj'žvâi'ž6ä‰ç‘ĉ§oâi'oâñ&oÚñf oâñ&oò&oâñ&qGžx¼‰§¼ùÉ›xÚ‰§ojÇ›¼‰Ç›¼‰G$qâG#qç'qþ'qÞkg v¼iÇ›x¼ùIœxÚH$‚DòFœx¼‰§¼Ñ¨xÚñ&oâñF‚J°D™?ÚÐHEâ'qäñf ‘â'oÚñ¦xÞÈ›v҉ǛwÚ‰çxÚñÆ‚¼év~z§‚¼é¼i'oâñ¦ÄñF£vò&oâñ&oÚ¨xÄ)áeþhC½yé­w9Yö‰§Lv!€Ä‰§xD26YìMXá…nØá‡–eŸxÄѨxÚ‰Çä‘§” ¾M–¼iÇ›v¼iÇ›x¼y§‚Ä!È‘j‡ q§x¼i'o4ò¦þx¼ig vâñ† ‘¼‰Goò† oÚg oâñ&qâñ¦x¼H‚Äñ&oò&oâǑ⧎K)!žv4òf y¼!È›vâñ&žvjg vjç§vây§x¼‰Ç›¼i'o⩉ q¼!¨xÚÈ›ÞÑHoÚ¨¼‰Ç›vjç'‘¼Iœx¼‰Gyĉ§xډǛxÚHœx¼©É›xÄ!¨xÞi'oä'vâ'q’Gœxäñ&oBÀ¤˜?Úð&oRä§v¼'oÞó&og tâñ&o"Žxx#âˆG:Úáxx#þÞˆG;¼!’´#Þh‡7Ú1oÄ£ñÆOÚáxx#Þˆ‡7䑎x´c ÞˆG;¼1(¢hÃtp˜Cî°5ûÈÅ>âK(ã‡<â qDí¡E)N‘ŠU´ây¸\ì#íðF<¼!Žxˆƒ G<Q‚}`Q9ûÈÅ?Þãx´CñðÆ@Dâˆ#Þˆ‡7âÑŽx´ÃyÇ@ÚoÄC$ñÆ@¼q $ÞˆG;Ä!v DñðF<¼oÄCòhÇ@ÚoÄ£i‡7â!qÈ#íˆG;¼vÄ£G<Ä16tì%þˆÇ;Òá ‚ˆ$íðÆOÚ!Žxx#Þˆ‡H¼qÄÃíð†H¼q´#íˆG;¼¡‘vˆ#íðF<Ú1vx£âˆG;¼1vx#Þˆ‡74Òoˆƒ ÞG<¼v¼ÃñG<ÄAqÈ£ñð†<4âxx#Þˆ‡7ÒŽˆc ÞÐH;¼o¼§ñhÇ@Úñ“t ¤PÆÚt ¤ŠxG;âá÷Ä£ñðF<¼Aoˆd Þˆ‡7âÑŽxx£ñÆPÛoÄ#I<¼ÑŽxÈCñhG<¼1vÄÃñI<Äá´#í H;âávÄÃþÇ@ÄQ‚G(ãmÎa›XÅÎFÿG 0Q B` ÞhÇ@D2qØb±õìgAZÑŽ–´¥E,þqÄ£ñF<¼A€Ž•¢¦eŽ,þáxx#Þh‡F¼1o´ƒ íˆG;âÑŽxxC$ñF;¼‘Žt¼#íˆÇ;Do ÄñhG<Úáxc "!H:â ˆ£ÞÐHM¼q D‡FÄq¼GmȇpPCKö!Jv@âÁBšn ÄÁ ãR15S5uS9µS=õSA5TSCþ!¼¡âÁâ¡â¡âÁ cJ¡DõReáâÁÞÃÂÚ!Ú ¼ ÚA¼a ¼ Ä ÄAÄ!šÎâÁÚ!âÁÚ!¼!Ú!š.ÚAÄáä¼a ¼¡Þ¡éÂâÁ¢âÁÚ šn ¼áÚ!”/Ä¡ :þ¦J€ Ä!Ä!¼¡¼!¼!Ä¡¢ÂBÄÁÚ!Úá'¼!Ú ¼a ¼!Äá'Ú!Ú!ÄÁÒ¡¼¡"ÂÞ¡é¼!¼!Ú!¼!¼¡¼!¼a ¼¡BÚ!¼¡¼¡â¡âÁâ¡éâá4ÂâÁâ¡âÁâ¡BâÁâ¡âÁâ¡âA¼ášî”/ÄA#¼!¼¡0¡þ  âÁÂÂÁTÁ¾a œaÔ ,–¡é¼!š.j@ à¼!œaÚÁâá   " `ÁÀþœaâÁ@ BÀ4`Â@à¾!Ú œaB @Ä!Ú!ÄÁ@ BÀ4`Ä¡,¡þ  jõz±÷z÷!öAJÀvá` Ú!ÞAâ!"²·}Ý÷}á7~åw~]craÂâÁâÁÄ @âáJ`è76ö!öa šÎÚÁ"BâAâÁÚ!¼!¼A¢¢éâQ¢B¢âÁâÁ⡼á'¼!¼¡¼a ÚÁâAâ¡é¼a Ú!¼!¼A4Ââ¡é¼a Ò¡¼!ÚáþBþ@äáJà¼!ÄAÚ Ú!Ú!Ä!¼¡é¼a Ú!¼A¢é¼!¼!¼!¼!¼¡¼!¼á'¼!ÚÁÄ!ÄA#Úa ¼!Ä!¼a ÒA¢â¡Â~¢¼a ÚÁÂâAäAâA¢â¡Þ!¼¡¼A#Ú!¼!¼AâAäa ÚA¢¢¢éÒAâA4Â"¢Aþ  Ú!¼!¼âÁâ2ÀÆáa œŒÀÒa *@BâÁXà¢ax œa œa¼¡¼þÁ@œa¼ÁÀ¼!Ö€âÁZà°Áp€âAš.œaâAÀä!Ra Ä!äÁÀŒe * J”áÚà5\ú¥a:¦ez¦iº¦mÚ¦ea⡼¡âÁ4ÂXâAn:©•z©™º©ú©¡:ª¥zª©ºªeáâÁBÄ!äÁâÁ cJ¡ªZªeaâÁâA4BâÁ¢â¡¢â¡ÂâÁâAâÁÒ!¼¡¼¡â¡â¡âAâ¡âÁâÁâ¡¢ÂÚ!¼A¼ ¼¡4ÂþÚ ¼á=âÁâÁBÂÂÚ!¼¡â¡ òAJ¡Ò š.¼!Ä!Äá'Ä!Ú!ÄAâ¡âÁâAâ¡äÁBÄá'Ú!¼!¼!¼á'¼¡âAÚ!¼!¼ šn Ú!ÄÁšÎÚa ¼!¼A#¼a ¼!¼µBÚÁBÄ!¼!¼¡âÁޣ颼¡é¼¡Ò!Ä!Ä >2¼!ÂJÀŠáÚ@#Òáâ¡âÁ@â¡*` œ!¾!¼Á  éb`â¡TA¾Á éâ  œaþ œaâÁà⡜ÁÚA`¼A’A¼A#œaâA€¦!Äa Úa œ!¾AâÁ àJ@ŠáÚà©=Ð}ÐazraÄ¡Aþ@âÁâ¡âÁBÚA=Ó5}Ó9½Ó=ýÓA=Ôÿara¢~"Bä!¡öAÔmzra4Ââ!Ââ¡ÞÁâÁâÁÄ!ÚÁâ¡â¡4Â4ÂâÁâÁâ¡Äa ¼A¼!ÚÁâ¡ÞÁÚa ÚA#¼a Ä!šn Ä!¼¡âÁâÁÚ!šþ.¼AÚÁâ¡é¼!Ä Ä Ú!Ú@âáJ@âAùÞ!Ú Ú!¼á'¼A#Úá'Úa Ú ¼!¼!ÚÁ~¢Â~B4¢¼!”ÏÄA#ÄAâ¡éâÁâÁÚÁ¢¼!ÚÁÚÁâAä!ÚA#¼a Úá'¼!šÎâÁÄAÄ Äá'ÚÁâAùÂÚa B”áÚÀâÁâÁ0!Ä!Ò€â¡~!–¡œa¢œaÄ¡éŒÅà" œaÚ!¾Á  œa¼¡âÁ œaÚÁþ ¼¡œ!ÚÁÀT? ` ÚÁ¾Á éHa@.A¼!¼!œaâœaâ!Aþ  d}ù™¿©eaä¡a¼ ¼!¼¡Bl¡ùÁ?üÅüÉ¿ü•Zþ¡âAÒ¡âÁÒa ¼:¦JÀü_Cþ!¼!¼a B\─þÉ.àM<Þ8ÔNC¹Øˆd’J.Éd“N> e”RNIe”ûä²7 yÃ7í0$€<ñUJ¹O.ûÄÓN<íxO; eåCÞÄÓŽ7íxÓŽ8 µÃP; ‰8µ#N<Þ0äM<í0”Ž7ñxO; µãM;Þ8äM<âÀ”CÞÄãMCÞˆ#CÞ´7 y#O;ñˆÓ†<å`RB:Y5$NCÞÀä<íx“U<í0ä8òˆÃP;ñ´Ã8 yO;ñxO;â0ÔŽ7 y8 yÓ8 µóŽ7ñxO;ñ´ãM<ÞÄ#N<ÞÄ#N<Þ0ä CÞÄãM<ÞÄÓNCñxþ7 µ8ò0´ 8ñ´#CÞÄãM<â0äMCÞ4$NCâÄ#NC%<¢Ìm0ÔN<â(7ª `Ë5ר²†ñ8€8Þ´ãÌ ¥“U<&¼ð6ðÐÎ9 lÏ98 6,#Ï7ÎÐŽ3´ãÌñx3¤#O ,`“N5œÄÓŽ7ñ|ãŒÞpƒÊ7㈢@<Þ4äÌâÄã3ˆS‚%ÊüÑÆ‹Ž?yä’ONyå–·(Ë>ñ”€ 1„ 7 y7ñxãM<²\Îz뮿{ì²ÏN{í¶ßn¹,ÿÄÓN<Þ0ÔN<íÄã N•Rî³Ëò8Y5ÔN:ïþ´Ó7ñxcp<òˆOVÞÄãM<â´ãMVíìM<ÞdßCâ´#NöíÄãM<â4äM;ÞÜN<Þ´ã¬ÄÃñhG<ÌÇvÄÃòG;ÒŽx´#âˆGä‘S„€!âð†<ÄvÄà ñF<¼Ñƒµ#Þˆ‡7²×oÄÃæcH;âáx´Ã`Þˆ‡8â ƒy£ñh‡7b>o´Ã iCÄá †´#íhH;âÑŽxd…!íhH;"oÄCñ‡7âáxˆ£!íð†ÁÄÁoÄÃkG<²Òo0ÄYiˆ7âá`¢hC:Úá †X"Þh þqpƒŒpÆäÁg À I‡8âÁ`?ø†7ÚAŠ X e(C¤ €ÀÂø†3g  !ÎCÌ„OG<Ä!x8CíàÆ€ \Âñh‡7âጴƒ!Î@ ¹}äâñG<Òáxˆ#íðF<¼vÄ£ÞÈÊ;ÚvÄ£ñhG<Ú‘½v¼ÃíðF<Úvx£ÞÈŠ7 æþxx#Þˆ‡7 æ ƒy#ÞÈŠ7 &ކˆ#YyG<²â†ˆ#Þˆ‡7â!ކ´!â8E Ä!†´#ÞˆG;¼o0¤Þh‡7âáx´ƒ!툇7âÑŽx´£!ïðF<ÄÁoÄÃñHGöâxx£!Y‰‡7âáxdÅ`Þˆ‡7b¾vˆ#ÞˆG;¼oÄ£ÞˆG;¼‘qÄÃòhH; ÖŽx´ãÞ‡<Úo0¤ÙóF;¼oÄ£ïðFCÚqÄÃY‰G:RE(ƒmˆ‡8â E´#ÞøCÚvd¯Ù C¼ÑyÄ#ñhÇ7ÚáþxˆÃ jC¾ñtÄC ñF<¼Ño´ƒ!ÞhCÒÑŽxxƒ!ò‡7âx .툇7²'Žv4ä%x„2þÐŒÊxÆ.’Å>âQ‚GƒHG<¼‘ŽÔ2D¶ ±‘Œä$+ ²ØCä!ƒy#Þ €SJQ‚%«Hû`ˆ7²'yxƒ!툇8"Žxˆ£ñðF<¼‘ZodÅñh‡ÁÞÑŽxÈC G<ÚávÌñhC¼‘•x´#ÞhGCÚÑoÄ£ñðFV"Žx„ãíhˆ7"qdOmpJ)JÐo0Ä—eˆ8ä!Žx´ƒ!∇8âáxþx£ñGV¼Áv0¤ñhCÄÑo´ÃíðF;âxx#âhG<Úw´#Þh‡7ÒŽx¼£ñG;â!Žx´#Þ`H;âцx#{íˆG;âávÄÃñðFVâ!ƒ‰ÃñxG;âáxx#ÞhH;âáv¤#Þh‡8 &q´# ñF 0±‹?´!{˜hH;¼!Žxd%Þˆ‡7âáxx#툇<ÒŽx´ÃñH‡ÁÚÑvˆÆ`í`ˆ7âÑŽxˆCñðF;ÒoÄ£é`H:ÚÑo0$ ñFC¼oÌ G 0QŒ?´AËl?ç>r±q”þ»øƒÄÁqÄCñHGCrÑöÀ ~ð„7ò>r±¬4Ä IC x<¢ûhû>r±†dÅñHGCÚáx´£ÕíˆG;â!Žxˆƒ!â`ˆ7âávx£éh‡7"yÌñðFCÄv0¤Þˆ‡7âx´ÃñhG<¼!†ˆ#Þ`H;⑎vx#íˆG;âá†x#ÞhHòG”àÞˆ‡7’oÄÃñðF; &ކ´#{â`ˆ8â ñà ñ ñÐéà ­&ñà á ò òYá í  !ò ñ ñíÐïíÐÞíþà âÐÞÞÞÞíÀíÞÀâÀíYÁíÞÀÞ  ÑÞíÀâ  !òà Yá ã íÀ%ðÅðmà íà éà Š é`0ïÐñà ñà ñÐñà ñà YÞ ñà ‘íñà íÞÐã éÞÐñà —å ñÐñà á YÞ`>ñÐñÐÞÀíÀÞÐñÐñà íà ííà QŠ  Ð…‹¯# û%€ Ä@pYí¨²‹Á(ŒÃHŒ”# ÿ ©Þ á àþ¥P‚' ÿÞÐ !ñà ñ  !ñà íà áïÐñ —%âÐñÐ# a>ñÞÞíæÞÐñà Ñ ÑÞÀâÀâÐjñà ñ íâÀâà YííÞïâÐ Q % Ññ  Ññà á í`0ÞâÞÐ ‘ á ÑñÐ ! á ñà ñà ÙÓã ÙÓÓñà íÞÐÞæã íÀâÀíà íí ÞíÞÐñà ñÐ Ñ á ñà æéÀÞÐþ á #ÞÐÞÐò  á íà ííÞP˜P Ðâ  !–  Ñé ÓÙ#ñà ã ! ! !ñÐ ! ÑñÐÞÐÞííÞÞÀâÞâíà ñà á ñÐéà ‘ÙÓâ â âP–P ÐÅè.²¹°âP° ÞÐÞÞíÀâвðõiŸ÷Évû û ñ á íÀ ñð%°m·¹°ñ ñà íí`0ííâ  ‘âÀíðâÞþñ ñ ñà ñÐñZ©Þí ñ`> ! á ñÐÞÐâ íà á ñÐñÐÞÞÀÞâ  á òÐÞÀíÀéÞÀmPôð% ˜p˜ ˜€¦Š€ Š€¦Š€ Š€ ‡€ Š€ Š€¦Š€¦‡€¦Š€ Šà§hª˜à§˜ ˜ ˜ ˜ hz˜p˜ ˜p˜ ˜p~РЀ ~ª˜ – hŠ ~ЦЀ¦Š€ Š ªŠ€¦Š€ Š€¦Š` ˜ hª˜p˜ ˜à§–€¦Š€ œj ˜ ˜ ˜p˜p˜` þ˜à§–৘ hª–€ Š€ Š€ ‡` ŠP  Ð Ñ a á Ññà íÞÐÞЗ%íÞÐ !íÞÞÞÞò ñà íÐã ñà ñà ™=í ÞÐ á íÞÞÞpY%ðÊðm€Ÿ÷) û%ðÄ@ âÞÞ ° !¶²=ë³?ÛO²° Ññà íÞ@NQ % x²ð Ñ á íÞ °âð ¡°íÐÞÐÞíÐjÞÞâðñ íâÐã ñ þñà ¡° !# á !ïÀíÐíÐíÞíÀÞÀÞÞÞÀïm ñP %Ðé¨ã ãÞ° ãÐÞ¨Óéà íà é â í¨ñ Þ0é íà ñÞíñÞ0éà éÐéà éÞÐÞÀââà íà ë í ã0é⨓íà éâÞé íà ãíà éà ãÞñ ¨Óñ ¾éà éâÞÞíà ñà ñ° íà ë íÞ0éÐ þÒñà áé%€ Åðmà â «ÞÐñà ñà âÐí`0 ë ñÞ`0âÞ`0Þ  Ññà á òíðÞÐ ÑñÐ ÑÞÐÞÞíà íà ñÐÞíÐÞíÀÞÞÞ ûÞÀïP–P Ð@KŒû û%P »ð=âéйPN É‘,É“LÉ•lÉ*²¹°Þ  !ñ  !òPûpÉ’³¹°ñÐÞÐÞ`0éà ñà ñ ñ íà ñà ñÐñÐâÞíà þíÀíâ ÙóâÞÐâ  á ñ °ÞÐíà ÙÓ á ñ ñà _ë ñ  Ññà ÑÞíÞÀéâ m ñð% Ù#òíÐjâ Ù# Ñ­ÖñÐñà ¡°ñà ­Öñ  !ò °›=ÞÐÞÀáÀâ  ! !òâ  k0ÞÀâ âÀí`0íÞ_Ûñ ­&ñÐâ`0íà ñPŠ  „Ðñ ÞÐñ` ÑñÐñ ÞÞÞÐÞðíÀÞÐÞÐ Ñ á ËÞÐþÓ á ññ °ÞÐñ ñà !Þíò  !ñà ñà ñà !ñà —%íÀÞâP  Щ,Ú£-9²°âP@ „ Þðµƒ:ñ ¤MÛµmÛ·Û¹- ÿòà ÛÞÞ@NQ %Û," ÿâÞÞÀíà íòà ë òà ! á ñ  íà ñà ÓÞÐÞÀÞâÀÞâÀÞÐÞðíÞñÐñà !Ùã ñà ñà íÐâÐ ! !âÐNQ %íþíâÀâ¢ÑâÐñÐ á ñà Ûâà íÀÞâÞííñ ñà éÞÞâÀíÀíâà ñà ë íà ñà ñ ñà á é¢ÑÞÀÞ=ÞÐ+ñà íÞò  ÑÞÐñà ñà ñÐ ¡°ñ  á íà é ° !ñ ÞÐñ ñà %€ »ðmÐ á í ÞÞ ñÐñà ñÐ ‘âÐÞíâ ë ÑÞÐÞÐéà ñÞÞé  Ñ á ñà þ Ññà ­ÖñÐñÐÞ`0 ë Ù“ñà Q˜P ÐÉí피¹°âP° „ñ ñà ñà !í ßNïõnï÷~ïû ûÐñ ñà éÀ ñð%°õ¾¹° ÑñÐÞÐÞÐÞÞÞÞ`0ïÐñÐ ÑñÐñ °Þâ ÞÐÞíÞÞÞ=ÞíÀí`0íà Ñ Ñ Ñïà íà ñÐã !ññÐñÐ ÑòP˜À©–à§–€ Š` e律৖ –€¦‡€þ ‡Pöhzeo ˜ hz˜ ˜ to ˜à§–€ œŠ ‡à§˜ –€ Š€¦Š€ ~j ˜ ˜` Š€ Š` Šà÷Š€ Š€ Š€ ‡€ ~РЀ ‡à§˜p~Š ~ZöŠ€ Š` ~РЀ Š` Š` ˜à§˜ hª˜ ˜ ˜ –€¦‡€ Š@÷hªe¯%ðÅðmÐñà ñà ˜pYíÀíÞÐíà íÞÐÞÐÞÞÀÞÞíÀíÐò  Ñéð ë íâÅóÏ[ÄQLãð†8¨ÔŽx´ƒJâh‡,dzT¤&U©K]ê>r±v4JñG™ x<¢û`ª©ö‘‹}ˆ£Lâ(“8âÑoÄ£ñhG<Ä!x´ÃñðF<Òá¥y£ñhGÄQ‚G(ãèY<ÄqÄ#eÊ…èm{Üç^÷»ç}ï}ÿ{àßTûÈÅ>âáx´#Þ R:¨$yÄã%؇ðs¿\ì#íˆGÏâáFy#∇7âÑoPIñðF<¾ãž5JTGþ<¼A¥vÄÃíðF;¼!*i‡2i‡2éoh”v oˆqˆoø•¥ñ†2y‡xð†x‡xð†xð†2i‡wˆ‡vˆqø*y„‡xð†2ñ†xh‡xhLh‡2i‡xèoˆoXohoèoxo‡xð†Fñ†xð†xð†xð†xð†2ñ†_ñ†xð†xð‰y‡vˆ‡vˆ‡vˆ‡vˆoˆ‡vð†vð†xhoˆ‡ž‰‡vˆ‡vˆoˆ‡v*‡Fyukoxo ’v‡xð†vð†xh‡2ñ*‡x(EP†?hƒx*ñLxqh”vˆ‡v(“v oˆþohohooqx—ž¡’v ’vhoh‡xð†2ñ†xð†v(q(qè™xh*‡xh‡xð†xð†xð†xh‡xð†x‡Peøƒ6°>k¼Fl<4Y؇x(LØB€vø•vˆòˆYÈFu\GvlGw|Gxôn•…}‡À„]øƒ oøòˆY@nìÎníÞîÍ…h‡2‘qˆyð†xð‹þR(ã–…ˆoˆoˆoˆ‡v qh‡xð†xð†xð†xð*ñ†vð†xh*ñ†vð†vH‡x‡tˆoˆqo o oh‡xh*i*‡t(oˆ‡ž¡’ž‰‡vˆ‡vð†xð†vˆohoh‡2‡x‡x‡xð†vˆ‡vˆq(qh*iƒ|ˆ‡S(g€tˆoo(oP*ñ†vð†xð†Fñ†xð†x‡xð†2‡th‡x‡vˆo oˆoh‡xð*ñ†xð†vˆ‡v ’vð†xð*i‡thq(“v qè™xð†vð†v(“v oøþq ’vˆ‡žñ†x‡_i*ioˆq qˆoˆ‡vˆqè™xð†xð*ñ†wˆ‡vøqˆ‡vˆo(L(†?hƒvHoˆ‡vÀ„t(“vø±v ’vho˜v o o oh*yHo ’vð†xh*ñ*ñyð†xð†Fyoˆqˆoh‡xð†xð**ñyh*ñ†x‡xð†x‡°„bøƒ6àn…÷¼}È…}‡x„bøƒð†xð†xð†f§qhYXxy‘ù؇\Øoˆoø•t ‡xx„؇RÞ‡\؇xh‡F‡Fþi‡2ñyh‡xð†Fñ†xð†v(qq ’tø•v ’v(oˆ‡vð†xh‡w ’vð†vˆ‡vˆqˆo‡xhvoyh*ñ†Fñ†vð†yò†2iövˆqˆq‡6‡x(…p†ð†_i‡xhLð†xyðyˆ»‡vˆ‡vˆ‡vˆohq q ’v o‡xð†xhoho‡xð*i‡xho‡xð†vð†Fivoh”wˆq‡xð»÷*ñ†xð†xð*ñ†xðq o‡vð†xð†xhoˆ‡vˆ‡vèÕxx‡2iöxHoˆ‡vð†þxho(o ’Peøƒ6hqP„xð†vˆqˆoˆohoˆ€ðÖ®]¹ìÓŽ7‰7µ3‘7ñ´3Q;Þ´7ñ O;ñ´3Q;ÞÄãM;ñxc`;y7‰7y7âÄÓN<âL48µ3Q;ñ´ãM<ÞÄãM<ÞÈ3Q;ÞÄÓÎDÞ´Ï;‰ó‡8ùñˆÃR;ñ´7ôUJ ðEûÇDÚvLÄñG<¼o´#ÞÐH;&"o¼c ñðÆDä!މ´c"Þ˜þˆ74âvL¤G;âáxx£ò‡F¼1‘vx#âˆG;â!o¼c ñ‡7Âãv°Ä阈7Òo´£ ùˆG)Jà °àá BâáxxÃñh‡<¼1oLÄ툇74âxx#âH<ÚqÄCÞhG<ä¡‘vÄC,iKÚ!oD§,‘‡8âáxx£ÞèJ<¼Ñމx#Þˆ‡7â1oÄCñhÇDä!o´#âЈ7Úávx£ñðF;âѴÙˆ8âá –ˆÃñðF<¼QLãmˆG:¼p`"íˆG;â!Žvh¤Þˆ‡þ7Ú!yx#Þ˜ˆ74ÒŽ‰´ÃÑG<¼¡‘vDÇñðF<Úáx´ÃñG<¼q„GiG<Úá±Å£7Ú!Ž`¢h«*jÑJí#ûˆG ¡Œ?ÀñðÆDâxˆÃ¹¸(K[êÒ—Â4¦2ÝG.övx#ÞG<Ä¡È#(Á>dª”}äbñhÇ;¼oL¤áñF<¼oÄÃiG<Ä1oÄ£ñ†8âÑŽxxc"Þh‡7&âxˆ#Þˆ‡8ä¡qÈC#혈7Ä!‰´Ci‡8âá ÄñðÆD¼oLDñðÆDþ¼¡‘6È#(3°Œx„#ˆ‡7äá K $혈8¢ãxx#ÞˆÎ;Úáx£ÞˆŽ7âÑoÄCñFW¼ÑoÄc i‡7â!މx#íÐH;4"ŽxˆC#Þ˜H;âÑŽx´#íˆG;&"ŽxxC#â˜È@¼qÈc"âÐÈ@ÄoLDñðF;Xâx´ƒ%é˜H ¡Œ?´Ái‡"¡ÉCñðF<Ä!o°DÞˆ‡7Ú1‘vx#Þˆ‡8âávÄ£ÑñF<Äáxx#ÞˆG;âш#íˆG;Xâ®hÄ툇8&âxx#Þh‡7Úþ!Žx DâˆG ¡Œ?´Á¨ZÞ²Pdñw”» âáx´#∎,¸ìæ7Ã9Îrv‹,þqÄ£,ñF<¼A€¾”¢sŠ,öÑoL¤ñðF<ÄÑoÄÃñð†FÚvÄÃí˜H;â1xx£+ñ‡7âÑŽx „%ÞˆG;âÑ´#í˜È@âávÄCiÇ;4âvDÇñðÆDäá‰x#Þˆ‡7¢Óމˆ#mèK)JàŒÄÃñpÆÚ1‘t`b ñ‡74âvx£ñhKÚáxx#ñ‡8¢ã‰´#í˜H;4â yˆ#âЈ7â!þo´ÃÑñF<¼ÑŽxxc ñðK¼oLÄ]‰‡8ÞÑŽxˆ#툇7âá –¼#<Þ˜ˆ7âáxˆ#ÞˆG;4"qx£ñðF<¼1xx£ñF 0QŒ?´a ÞG<0áv°¤ñhKÚáhDñð†8äÑŽxxCñF<¼oÄÃ,iKÄvx#Þ˜ˆ8âÑo´ÃíЈ8âÑŽwÄCò`‰7âá yˆCâ‡8âÑŽwh¤˜(ÆÚДËc>óšß<ç;¿”}äââ(%”ñ‡Ä£ñxG<ڤùð<íkoûÛã>÷ºß=ï{ïûþÛï#û˜ˆ8&≤c"G<Q‚}üÞöûÈÅ>&2‰´C#íˆG;&ÒoÄ£âЈ7Ú!Žx´ãH<ÚoÄÃâˆG;¼wtÅi‡7â1wă8°D;¤ƒ7°D;ˆC;xÃDxƒêã>fž,ìÃ@L„7ă7¤ÃDxôE)”?6…,üC;ˆC<ˆC;xC;ăþ7$J”B 8ôÃ;´ƒ3@< 8(B< D<ˆÃ@ă7°„8ÄC:ÄÃ@L„7L„7ă7ÄC:°„8ÄC;ă7DG;xC;ă7Dc<´CäÂ>ˆC `Â.ü´ƒF´Ct´ƒ,h芲h‹ºè‹ÂhŒÊèŒÒhÚ¨îC.ìƒ8ÄC;°„7´ÃD€<ÄÃ#”À>ܨŒîC.ìCtˆÃDˆC<ˆCÈC`‚2‚ D:ă8xC;xC;ă8ØÂÚnà îànán’ÊÂ?ă7´CäÂ>L„7ă7ă7ˆƒF€<ÄÃ#”À>èòPìC.ìC<¤C;xC<´Ã;xƒ8ă7ă7ă7ÄC;xC<ˆÃD´ƒ7ÄC;ˆC;xƒFxƒ8h„7ă7L„7ă7ă8ă7°D;xƒ8ă7ă7ă7ÈC<´ƒ7LD;ˆC<´ƒþ7ÄC;LÄ@ÄC;°„7h„8ÈÃD´ƒ7ÈC<´ƒ7ÄC;xC<ˆƒ<´<ÄÃ#”€8ÄC:L„8ă7´ÃD(‚FxC<´ÃD´ƒFˆCäÂ>LD;DG:L„ÈC<r±o¤ñ†8âá´CíðF<¼¡o´#íˆ8âá x#ñ†@¼!x´#ípˆ7ÚáxxC íˆG;âávx#ªñF< 2vÄCñðF<Ú‘Žvx£Þˆ7âá yÄ£ñðÆ@¼o´#mG<Q´ÃíðF<Ä!XÂñðF<¼oÄñPMNÄ!x´#íˆ7â!ˆCñ†C v˜ÄñG<¼o Ä∇7âá xC Þˆ7Òoˆ#ñ†8â´#âˆG;¼!vÄ£ñÇ@¨$ÆxxþC íð†@Ä!t$˜P!Úào(B âˆ8âáw´Ã!ÞˆG;âáx´C ∇8Äo¼£ñ‡7Úq´ÃíˆG;â!Žv˜¤iG<ä!o ¤ÞÈI;âÑo8D툇7â!Žw´#ÞˆG;ä!Žx”àÊøCŠB%;ßÏyÖóžùÜg?ÿÐösPd±y”à» â!o„#Þh‡@" ±^Ó™Öô¦9ÝiO£Tûˆ<ÄAéxx#Þ À_JQ‚O¯TÿˆG;ÒoPÚñhG<¼AiyxC∇8âv˜Z Þˆ‡7â!Žxx£þ”G<ÄÑoÄÃÈŽ‡7 v˜Z¦G;âávÄ£ñhG<¼ÑyˆÃÔíˆG;âÑ´ƒÒÞ‡7"Ž6ü¥%ˆ‡7LÝŽx´#ÞPD<¼oÄÃò‡@ qx£Þˆ‡7(ívÄCñðF<ÚloÄi‡7ÞÑŽxx#Þh‡7âáx´#í0u;(ÝŽx´C Þˆ8âáxxC Þˆ<¼qÄCÞˆ‡8ÒoDâ ´7 bjoÄCñG<¼oÄñðF;¼Aiq¤I‡@¼QKìâmðF<¼!LxC í t:âávxC þí¥ÅoÄ£¦N‡8LÝJ‹#íð¥½oÄíG<Ú!vÄÃñF<¼oÄ£Þˆ7âá d·#é‡@Úaêw”ÀÅøCˆ²AùÉWþò™¯ ì#ûG 0¡Œ?€Òí t:Ú‘oäâÕáÿøÉ_~ó#u¹ØGA(í ¤C G<Q‚}œß(ûÅ>â!xƒÒÚ!¼!¼!¼AÛâ¡âAâ¡âÁâ¡0ÚÁ¢(­ÂâÁâÁ¢¼!¼¡¼A Úá¼ÒÞA ¼!¼ÒÄÒ¼!¼AâAâ¡þ¼¡ ¼¡ÄÒ "ÄáÄA¡ÞÁâÁ⡼!ÚA ,! â ÂÔ¼!TC ¼ÁÔÄ!¼¡¼ÙÚÁ"âÁâ¡(Í(ÍÄ!¼!¼AB5Ä!¼!ÚÁ(­â¡¢â¡âAäÒ¼AÚÁÄA¼!Ú! ¢¼!¼¡â¡ÍäÒ¼A¢¼Ò â¼!¼¡"0¡þ  â!ÂÒÄ¡¼¡âÁäAâ¡ Â "Ú!ìŒÒ B ÄÁÚÙÞ¡ âÁäALÍ "ÄÁâ¡ âÁâþÁBâ¡ äÁâÁÚÁÚÁ B Úá  "Jà”áÚ€(ö!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!Ä!þÄ¡‚Bö!JŠ B¼¡¼A Ä!dÿJÓ4O5Ss©dáÄJâÁÒA ¼þ¢J@5ƒ"þ¡â¡ ¢¼!¼Ò¼!¼!¼á "ÄÒÄÁâÁÚ!¼¡ÞA5âAâÁÞ¡âÁâAâÁâ¡äÁ(Mâ¡(ÍâAÂÚÁÒ!¼!ÚA ¼A Ú!¼!ÚÁÔ¼½!Ä!Ä!Ú ä¡JÀ,A0Áá0á0A>ô0áDTDADAD>AD-á0áþ0A0Á,ADT0A0A0Á,,A,A0áPÔÁ,áC1A0A0A0áDT0A0A,A0aI1ÁADADADÁ,A0A0Á>ÔÁ>TJŠáÚ ÒÁ¼ÁL­MÍâÁâAâ¡Ä!ÚÁâ¡ÞÁä!Ä!¼¡¼!TÃÔÚ!¼A ÄÙÄÙ ‚ÒÄ¢¼!Ò¡ÄAâAâAJŠáÚ€(öÁ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Á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Á0Á0Á0Á0Á0Á0Á0Á0Á0Á€braÄ¡0aþ ¼Ù¼ÒÚArÓoÿp÷üö!öAâ¡ (ÍþÚA @âáJ`rsra¼!ÚÁ "ÚA ÚÁÔ¼AÒAâÁâ¡ ¼ALÍ(ÍâAL-âÁ°â¡¼¡(­¼A ¼A ÚÁÔÚ!ÚAâÁâ! Ââ¡ÄA ¼A ¼!¼¡¼¡¼ÁÔÄAÒ!Ú@âáJ ÂTÛTãÁâ!Ú!¼Ò¼!Ú!ÂA¼!Æa®ÃÒa¼!ÆÁ ÂÚÁ®Ãâ!¼!¼!¼!®#@µÆÁÒ¡ÒÁÒTÛ!â¡â!¼!ô×âÁâá:âÁÚÁÒTA5¼!þÚTãÁÒ!®ÃÚÁâÁâ!ÆÁÚ!¼!¼!b8¼!¼!®TÓTÛÁÒÁÄ!ÚÇâ!âÁ⡼!Jà”áÚÀ(ÍÒ¼!x,¼!¼¡âÁÚÁâÁâ¡PâÁÚ!L­äAâÁâAâÁâÁÚ!¼!ÚÒ¼¡â¡ÂâÁÚ!ÄÁÞ¡â¡âÁâÁâÁâÁâAâÁâA¢äAâ¡Aþ  Šè!è!è!è!è!è!èþaþaþaþaþaþaþaþþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþaþŠè!è!è!è!è!è!èÁ‚Bö!Jàˆ  "ÚA "ÄÁW¬Çš¬Ë:Óda¢âÁ "Ú!¼þ¢Jàoeáâ¡âAÄ¡âAâÁ ÂÚaYþ¢â¡âÁÂL­¼¡ âÁÂâÁ  "äA¼!¼ÒÚA Â!¼¡¼!Ä¡¢LMÍâ¡ â¡äA(ÍâÁÚA Ä!Ú@òáJ@(ÐâAÂÚÁâAÄÁ(­[ ÄÁÔÚá°Å!ÛÙÚ!¼!¼AÛÚ!Ú!¼¡»(-ÂâA´M(Ͱâ¡Â[¼ÒÒ!¼ÁÔ¼¡,¡þ  â!¼A Á°´Íä!Ä!¼¡¼!¼¡(MäÁ â "½A ÄAÚ!¼!ÚAþ ¼!¼A ¼A ÄAâ¡Ä!ÄA Ú!Ú!Ú!ÚÙÚÁâ¡(­0¡þ  ŠÂâAâAâAâAâAâá/,á/Â\ÌÇœÌËÜÌÏÍÓ\ÍלÍÉœ,,!ä!ä!ä!ä!ä!þ€braÄ¡Aþ Ä!¼AâÁ⡼A rÁ¬+ÝÒ/ÓIjra¼A(MâA(Mä!¡ö!7÷!öAâ¡âALM(ÍâÁâÁÚÁÚÁÚÁâÁâÁâ¡ âAâÁ ‚ÒÚ!ÚA ¼A ÚA ÚÁ(­âþÁâÁÄ!¼!ÚÒ¼A ÚÁâÁÚÁ(­¼!Ú!Ú!Ä!ÚÒ¼A ¼AMÚ ä¡J@ ¼Aâ!ÄÁÔÄA–Õx,¼¡ÒÁâÁÄ!ÒAä!¼!x,¼!¼! ÂÚA Ä!ÒAâ!xLâAâ!ÄA Ú!¼!¼AâÁÄ!ÚA¢¼!¼A ÚÁÚ!ÚÁâ¡â!ÄA(ÍâÁâ¡âAâÁâ¡ ¼! ÂâÁâÁÚ!¼!ÒÁâ!¼!Ú!Ú!Ú!¼!¼!ÚÁÚÒJ”þÚÀ(Í,!¼!¼¡âÁ¨ÄâÁ(­Í­ âAâÁÚ!¼¡¼ÒÚA ÄÁâÁÚ!¼!Ú!¼¡¢­â¡¼A5âA¼!¼¡âÁ(ÍâÁâAJà”áÚ€(öÁ¬[ ,Aú«ßú¯û³_ûµ šÁ¤_0!(dáâ¡0¡!(M¼!¼A ¼!d!Óëßþï_¬eáâA¼¡ ( ¼ÅóF@ž¼R%þ)\Ȱ¡Ã‡#Jt(ë_¼xâÚÅk×ÎÛÅvñ¼Åó¯ÝÅ“ÛÅkwR\»xÞ.Š‹ç-ž8oñ¼µþ;).ž·‹ÞÚÅw±ÝÅvÛÅó†R\¼vòÄ]ôOÜEqÞⵋç-ž7ŽÛ]ôÖÎ[;yâÚ|T"^»‹í.¦‹çí¤·vÞÚyk÷Ž£AyÞ.Š‹×îb»“Þâµ»ØNž·xÞ≓'Î[;”ñÄį·xí8Çk‡R\¹ì#N ˜ìBHÞ,èÍEâ´#ËDl¶éæ›pÆ)çœtÖiçxæ©çž|6´O.û´8ñxÃQ<é\$€<ñ}Fº,ûx`;ïÄÑ8¶#N<ÞÄãM<ÞÄÑ8ñx#Ž<âÈO;µ7òØŽ7íÄÓN<Þ,È‘8ñpäM;â\äM<ÞØÎEíÄÓÎEÞÈO;ñ´O;‰7ñx³ 8òÄÓF9ùþ^&q´#-ó RŠ ñŠÉÅ?\ævÄÃ.óF<¼ñ5oÄ£-ÇèZæxxãþ.kG<¼oÄC∇8\ævx#âhÙ;Z&qÄÃíˆG;âáxx#∇7âávÄÃñhG<ÄñŽvÄCñhG<ÚvÄÃñð†½âÑy´!ò(E ¾ÖŽxx£-óF<¼oÄÃ-ó†Áâ!Ž–µcÞ°—7 –Žv¸Ì-k‡<ÄoÄ£ñðÆËÚ{µLñhGËÚqÄÃ-óF;âáx´#éh‡7âá {Å£ñðF<¼‘ŽtØËeÞˆG:ä!o¸¬ñG<Äá²vÄÃñðF<ÒvÄÃñG<¼Ñ2qÄÃ-kG<¼QL(ãmþG<ÄÑ2L¤£eíðF;âa/oÄÃñÀ™7â!Ž5z£e∇8Zf0oÄCñh‡7Äá2o´ÃñðÆËÒoÄCñð†Ë¼Ñ2oÈC_kG<ÄoÄÃñðF<¼á2x¢hƒCöa oØÕ® @îšoxâ®í¸k;îÚŽ»¶ã®í¸k;îÚŽ»¶ã®í¸k;îÚŽ»¶ã®í¸k;îÚŽ»¶ã®í¸k;îÚŽ»¶ã®í¸k;îÚŽ»¶ã®í¸k;îÚo¤#˜¸†%îêtà·w‡7,¡}Èbâ(&Šñ‡Ø«eÞˆ‡7âÑŽ–åâŠØÍ®v·ËÝîz÷»àÕþî>r±oÄÃ/óF;Z&yÄã%ØGx…¸\ìÃ툇8Zæx´#ÞG:Äo´¬∇7Zæv´ÌñðF<¼!tx£ÞˆG;âÑŽxx£e툇½¼á²v´ÌñðF;^&Žxˆ£eÞ‡7âÑŽx´ãeíˆG;ZÖoÄ£ñx‡8â!Ž–y£eíxG;Ä!6È#(Á;ìv¸Ì-óF<ÚvÄC/³WËÚ!Žx´£eÞˆ‡7â!—‰£eíðF<¼oÄÃ^.kG<¼oÄÃñh‡7Äo¸LñðF<Úá2{ÅC-óF<¼vÄ£-k‡þ7ÄÑ2o¸Ì^Þˆ‡7âÑŽx´£eíðF<ÄñµvxãkíG<ìo¸¬ÞˆG;âáxˆÃe%xD1þІx´#íð†"âávÄC∇8ZÖŽ–‰#âhY;âÑŽxx#Þ°×½a¯5ºÌòG<¼Ñ2o´#âhÇ×Úo´¬_óF;¼Ñ2yˆCÞh™<¼w´#%À„2þÐÐabDâ˜èg:¼¡qohÜ÷†Æ½¡qohÜ÷†Æ½¡qohÜ÷†Æ½¡qohÜ÷†Æ½¡qohÜ÷†Æ½¡qohÜ÷†Æ½¡qoôsÞ€¸7þ,Ñ L\<€ÖÇÑÏqXb!¹øGû³:ûûð-ã ñà öò2âà2ò ñÐ-ã íÐ2íà íà .#þñÐòà ñÐ-ã -ã .c/Þñ öâ2ÞÞÐ2í0:ÞÐ2âà ï`/Þðöâà íà íÐ2Þà2íð2ÞÐ2ím@òp !ââð5ÞÞÐÞÞ`/£ã ñà /ã íÞ âïíà íÞòà -ã íÞÐ2Þà2íöÞÐ2ò íÞâà2âà íÐ2ÞÐ2ÞÐÞÞÐñ íÐ2Þð5öâ2ÞÐñà öòà £ã _Ó_ã ñà ñà íà ò ñ í-ã !` Åðmð2í ñÐÞþà2ÞÞíà ñÐïÐ2ö"òÐ2ï`0.óéâ -Ó-Óñà -ã .ÓÞÞÐ2ÞÞÞÐ2ÞíÐ2âà2íà öâ .ã ñÐñ òâ ñÐâ %€ Åðmp”û` â@ þz þ â@ Ù Ô` ÿJ ÿJ ÿJ ÿJ ÿJ ÿJ ÿJ ÿJ ÿJ ÿJ ÿJ ÿJ ÿJ ÿJ ÿJ ÿJ ÿJ ÿJ ÿJ ÿJ ÿJ ÿJ ÿJ ÿJ ÿJ ÿJ þ*×à¯×` Þ` âp Ù@ Ù× Ô × ×` ±¹°âPа þñà ò ñà ñíÞ '»Ë¼Ü˾üËÀÌY¹¹°ñà ñÐñà -“-#òP8SÍÖ|ÍØœÍÚ¼Íöâ -ã ñ ñÐÞâ ñà _óÞÐ2Þâ -ã ñà .ÓñÐñà â öâÞíâà2âÞð2Þöâ ñÐÞÐ2öâ2âà2í .#òÞà2Þíà íà -ã öâ ñÐò¥P.c/ÞÐ-#òÐ2íà2íà ñà ñà ñÐñà ñà íÐ2Þð5Þà2ÞÞÐ2öÒ2ÞíÐþ2íÐ2íà ñÐÞÞíÐ2Þð2íð2ÞÐ2Þð2íâà2ÞÐ2âÞÐÞíà íÐ2â .ã /Óïà .c0Þ ñà ñà -Óñà ò`nÞÐ-S˜  Ð-ã ñ ˜Ð.ã íð2âÞáÐâð2víâà íà _ñ Þâà -Ó-ÓÞð5íà2ÞÐ2íÐ2â`/ñÐÞÐ-Ó-Óñà k$.#âPŠ  ÐHi Ô@ ÙðÝ×p ß]ÞÔ × Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ôþ Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô ÅPÞã ––@ Ù  Ùp æýÝ× –°²°ñP˜@ „íÐ2ò ñà -#ñ Â\çv~çxžçzþ”²ð/ã ñà éÐ2Þ@Q % ³èŒÞèŽþèéŽî2ÞÐ.Ó-Ó-ÓñÐñà ñà éÐ2ÞíÐ2þÞÐ2íÐ2Þâà öÒ2íâÐñÐ-#-ÓïÐ2íÞÞÐ2íâíà2ÞâÐñÐ-ã ñ -ã .ã ñà ñà -#ò ñà ííÐ2âÐñ!ÞÐ-#âà .ÓÞÞÐÞÐ2ííÐ2âÐ2ííÞÐ2ÞÞñà ñà /ã öÞÐ2âÐÞÞâíð2ÞÞÐ-ã ñà ñà ííÐ2íà2Þâà2ÞÐ_#âÐ2â âà .ã íà -ã íà íñÐñà íâòà ñÐþ-ã /ã ñà ñà ñà ííÞ–P ÐÞíé ÞíÐ2íà ñÐ.ã ò òà ñà /ã â ñ òáà ñà ñУã ñà öÞÞÞ ñà -ÓÞÞÐ.óíÐ2ÞâÞÞíà íà ñà ñ`/ÞíÐ2%€ ÅðmÐ7k ÔP ÔP ÔÐ ÔÐ ÔP ÔP Ù` Åp ÍP ×P ÔP ×P ÔP ×P ÔP ×P ÔP ×P ÔP ×P ÔP ×P ÔP ×P ÔP ×P ÔP ×P ÔP ×P ÔþP ×P ÔP q­µb׊Q+v­µb׊Q+v­µb׊Q+v­µb׊Q+v­µb׊Q+v­µb׊Q+v­ØµkÔŠe+F­5Kâ,ËVŒµbC‹e+F횥ÿöåÚ'®Ä#e´óOkv¼£[i‡Vþ"äxx#Þh‡V¼¡oåx´ÃÈi‡7⡉#íØŠ7âÑ­x#òF<ı•vÄ#ñh‡VÄ¡•vˆ#ÞhrÚo´#ሇ7´REãm( &, Kx˜°&,á K”³œ˜0'&̉ sbœ˜0'&Ìþ‰ sbœ˜0'&̉ sbœ˜0'&̉ sbœ˜0'&̉ sbœ˜0'&̉ sbœ˜0g91 E˜SåÄ„9‰rb¢œž('&,Ñ”}äbâ(&vñÄÃñðF<¼!oh%‡jP…:T¢Õ¨w‘Å>âÑoÄÃñð†8¶"yÄã%xGµºU®vu«íˆG;Óäx#íðF<¼!ŽxxãS‡<Ú!Žxx#ŠG;¼œw´ÃíðF<¼o<ÈñðF<Ä!ä´C+éh‡7´Ò­x£Þh‡7âÑ­ˆC+â@N;¼oˆ#âhC9èñþˆÈ9ÞG<¼ÑŽxˆC+Þˆ‡7Úávx#éh‡7ÚÑqÄ#í‡<ÚoÈ#íðF<¼¡oÄÃ[}G;¶’oÄÃñðrÒ!Žx´ãÃmG<ä¡•vÄ£[ñF<¼qÄÃâЊ8´âxx½Þˆ‡7âÑo´CòðzÛ±•vÄCòh‡7âÑŽx´C+ÞˆG;¼oÄÃZI‡VJ€ eü¡ ÞØJ8,áx´C+ÞˆG;¶ÒŽx´C+Þ®7Úáxx#ÞØJ;¼qÄã툇7ÚáájEÞˆ‡7´"Žvx#Þˆ‡8¶2\­xC+âxG;¶"Žþx´C+Þˆ‡7ÚohEñð†VÄQL(ãm˜Zžõœ [È"²°ÅÔ^!‹\È"¬˜šÕ¦fµ©YmjV›šÕ¦fµ©YmjV›šÕ¦fµ©YmjV›šÕ¦fµ©YmjV›šÕ¦fµ©YmjV›šÕ¦fµ©YmjV›šÕdÁ VÈb¶˜š-„- a³¢²°…Õd!ìWèYÅE.lQ‚GƒH‡Väáx´C+Þˆ‡,È2nr—ÛÜçFwºÕ½nv·ÛÝï†w¼å=oz×ÛÞñÎÅ?Ú±yˆ#òðF<¼!Ê"Å…°¾p†7Üá‡xÄn5a¿bᯰ…,„ aþçBV“…Õ. aïÂj¶È…,r! [¼¢áS³E.nµ\;¶E.l‘ [äbázÎÅ.ra Y¼bj¹°E.la5a[ÍV[ø.r±p«í" \)Jo´ÃZ‘‡7ä!Ž­´9òG<¼qÈCZñF<Ävl¥ñrÚvÄ£ÞhG<¼1\oÄÃ鈇7Úá­ÈÃñðF;âÑŽ­ˆ£ñzãá ÇCñðF<ÚvÄCÞЊ7ÚoÄ£[ñF<Úñ yˆ#∇7âáŠ#ñðF;ÓŽx´#ÞH‡V¼QKãmðF<¼oXþÂñð†VÚo Wñh‡7¶"yˆCÈñF<¼!y Gj‡7¶ÒŽx ÷AâG<¼ÑqÄÃZñäð†áÚ oÐ oЊvˆ‡v@Žvˆ‡wˆ‡°„bøƒ6؇ ÄÀ؇¦¸@²ÀÀ}ø ü ü ü ü ü ü ü ü ü ü ü ü ü ü ü ü ü ü ü ü ü ü ü ü‡Ü±¸ÀqÛ‡è‡}ø‡~‹}ø)܇؇x„]øh‡th‡xhqØ qhYP·9¤Ã:´Ã;ÄÃ<ÔÃ=äÃ>ôÃ?Ä@Dþ·}È…}ð†xð†I­yˆ‡R(}Ä?¼ÀrÛ‡±¸À¦Ø‡؇°Ø‡°¸À¸ÀØrÛ‡¦Ø±Ø‡°Ø‡؇¦Ø‡Ø±øÀ¦Ø‡؇À@±Ø‡¦¸À¸@s»À؇h­x„ˆqoxázqˆoˆoðªvˆohoˆoЊvð†x@/oØŠvˆqÐ o‡xð†xyh‡xð†ñqˆoxqˆ‡vð†x‡xh‡wøoЊvˆoxv‡xð­h‡xð†xð†xð†Oñyð†vð†xð†xð­h‡x‡xðk‡­ð†vЊþxe „6ˆ‡vØ E@oˆo@ŽvÐ o.äð†áúohoÐ oˆoˆoÐ oh‡x‡vx‡áò†áÚŠvxoh‡xhoˆoˆ‡vx‡vˆoˆoh­ð†vx‡áò†áŠoˆq(GP†?h“Œoˆoh­®xð†xð†xh­ð†­‡vÐ qh­‡vÐ qh­‡vÐ qh­‡vÐ qh­‡vÐ qh­‡vÐ qh­‡vÐ qh­‡vÐ qh­‡vÐ qh­‡vÐ qh­‡vÐ qh­‡vÐ qh­P0oh‡x@¯þxè"qh­yè¢xð†vqxô*LP†?€vˆ‡áÒŠvð†vq°…¦ Ïú´ÏûÄÏüÔÏýäÏþôÏÿÐÐ%Ð5ÐEÐUÐÅOYø‡xh‡x®xð†tÐ oÊy„ˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆoˆo®x­P°xð†vˆoЊ.j­@¯xð†x‡xð†x‡xðä®xP°x¸Îxh­P0­ð†v@q@¯x‡xþ‡áÒ qð†x.­®xð†xð­‡x®x®xè¢vð†xôŠoˆqhÊ)…xoˆo@/­ð†xð­ð†vˆoh‡w.oˆoÐ oqˆ‡vØ qˆoh‡­ð†xðäh­‡ñ†xð†xð†xh‡ñ†xð†v˜!qˆoˆoh‡xð­ð†xh­ð†vð†x‡xð†xh‡xoˆ‡vˆoˆohoˆoøooˆ‡ázáŠqˆo®xh‡xð†À„]øƒ6.oÐ Lð†vð†­hoˆoä‡xð†xh­hoˆoˆ‡vþðäð†xð†xh‡xð†‡xäð†xðqˆoho؊ኇvˆ‡vÐ oxáŠqˆqÐ qˆoØ q(L(†?hqˆ‡áò†xh‡­‡xhoˆ‡vˆ‡vˆ‡tð†­ð†x‡xð†x‡xð†x‡xð†x‡xð†x‡xð†x‡xð†x‡xð†x‡xð†x‡xð†x‡xð†x‡xð†x‡xð†x‡xð†x‡xð†x‡xð†x‡xð†x‡xð†x‡xð†x‡xð†x‡xð†x‡xð†x‡xð†x‡xð†x­ð†x.­ð†x.þoÐ yˆ‡áúqØ oЊpˆ‡vyK(†?o‡xð†xy@Ž\`Ð÷…ßø•ßù¥ßúµßûÅßú܇\ø‡vH‡áò­ð†vÐ  œG(xh‡xh‡xh‡xh‡xh‡xh‡xh‡xh‡xh‡xh‡xh‡xh‡xh‡xh‡xh‡xh‡xh‡xh‡xh‡xh‡xh‡xh‡xh‡xh‡xh‡xh‡­ð†­ð†x.oÐ oЊvØ oˆôò†­h‡xh‡xh­Hoˆ‡á‡xP0­‡xhoˆ‹oЊtð†xð†­hoˆ‡vÐ qˆ‡v@Žvð†x.oˆ‡vˆþ‡áÒŠáJ‡áòäh­.oØ qø­x„À„CÀE°LP„R„J6§RLPK¨dEÀ„J¶LP„ŒÂEÀEÀ„r„CÀE°LPL8L8LèdKÀEÀE0'E°„RL8L8KÀEبCÀEÀEÀ„J¶E°LP„:KÀEÀE°L¨dKÀKبC(§RsÂEÀEÀEÀEÀE°LP„RL8L8LP„Ú(EبCÀ„C°E(K(†?hƒ­hoP„­h‡wØŠvЊvð†áÚ oh‡xð­ð†ñ†x‡þi­ð†vð†v@oˆoˆ‡v˜!oˆqh‡xoˆoÐ oˆoˆoh‡­h‡x‡xqÐ oЊxeøƒ6ˆ‡vˆqÐ ô­­®xð†­¯ë°ë±&ëOñ†x‡xð†xð†xäð†áŠqЊv@qÐ qÐ qЊÀ[ @Žvˆ‡áòoˆgSìÅfìÆvìdžìÈ–ìɦìʶìËÆìÌÖìÍæìÎölÊ.Y؇xäh‡xh‡xð‡|(…“íÙ¦íÚ¶íÛF¯xð­­ð†x­ð­‡xð†xh­‡xþ­‡ÙN‡x‡xð†x­‡x‡vH­è¢x‡x‡x袭äð†x­@¯x‡xð†x‡x‡x‡x­h‡x‡vH‡x‡x‡x‡xh­ð†vˆoˆqÐ ôjyˆ‡R(oh‡x8ìxð†t‡v‡xh‡Ã‡t ñxð†xH‡x‡xhoˆohohoHoHoH‡vðq.o‡tˆoˆoˆ‡vð­ð†t8ìvð†tˆo÷†th‡tˆoˆoHoˆ‡Ãno‡vˆ‡th÷†qH‡xð†tð†tho­h‡t‡qHþ‡xðO‡áò.oHoHoho ñv‡v8loH‡xð†.ªótho‡x‡xH‡xL(†?hoˆq‡vPoˆ‡vHohoЊvyˆqˆoØ oˆoЊvð†vH‡vˆoЊvð†vðqˆ‡vxqhoˆo‡vØ oˆoˆoˆoˆqØŠvˆqÐ oˆ‡vÐ o.qЊvxoˆq(L(†?hqØ o‡xy.­ðqˆoˆqˆoˆqˆ‡vðqˆ‡vðqˆ‡vðqˆ‡vðqˆ‡vðqˆ‡vðqˆ‡vðqþˆ‡vðqˆ‡vðqˆ‡vðqˆ‡vðqˆ‡vðqˆ‡vðqˆ‡vðqˆ‡vðqˆ‡vðqˆ‡vðqˆ‡vðqˆ‡vðqˆ‡vðqˆ‡vðqˆ‡vðqˆ‡vðqˆ‡vð†.Ò qäyˆohoˆqˆoˆoˆ‡vð†x‡vˆ‡v‡x.­y(GP†?€xð†xho‡­‡vÃÈ—üɧüÊ·üËÇüÌ×üÍçüÎ÷üÏýÐýÑ'}Ðÿ‡}ˆ‡vð†xðqˆqØ ЊG(x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡þx‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x­h­­yØŠvЊvˆ‡v‡xð†‡x‡x‡xoòâÅ'/^»xâ䉓ç DqñÄÉ#è­AqíÚÅkGЛ¸xâ¶ƒè ¢8yñ¼‰#(Nž¸xâäAŒç­]:lÏ[¼þvÛ½çP\Foñ¼9ôÖΛCoÛÅ+Oœ¼vñÄe,ñHÙŸ6å‰ó†)^;‡ÞÚ‰s(.^»xí≓ç-jFoíⵋ'Ï›Ãv½µsè-£·xÞâykœQž7‡ÞÊ÷®]¼vÛÅóö±·xÞÚÅóO\ EÊþ´‘çMž8oíäyí-ž¸vÞâyûè-£·ŒÞ2zËè-£·ŒÞ2zËè-£·ŒÞ2zËè-£·ŒÞ2zËè-£·ŒÞ2zËèÍa»Œíâñ&qډLJÚñ&o+È›x¼‰Ç›x¼‰Ç›xÄñ¦oò&žvâ§„Gˆù#€¨äñ¦xÄi'oF‹QþÆi¬ÑÆqÌQÇyìÑÇ RÈ!ylGq¼iÇ¡wډLJäÇ›tòFyä)¥oډǛx¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›x¼‰Ç›vâñFq¼‰Ç›x¼ù¨x¼‰Ç›‚¼‰Ç›¼‰Ç›x¼‰Ç›x¼‰Ç›Æ¼)h4o ЧoÚ‰Gqâ‘É›‚jGoä§oó&#oâñÆ¡vâiGFqÚy§xÄÉHoj'qÚÀ²”Äñ&#o’)FoÚÉHœx¼iÌ›x¼‰§ŒÚñ¦Œ¼i'™'žv¼qþ¨ xä'q'oâñ&žvâi'oò&*oÚ‰G½iÇ›x¼y'žv*(q2jÇ¡‚âñÆ!o2ò¦x¼iÇ›x¼‰G‡ÚÉÈ›x¼)“bþhÛŒÚQ¤oÚ‰GyÚG‡¼'*oâñ&žv¼qHœxÄɨoâiç‡ Чoò&žvâi'žv¼‰Ç›xdЧ x¼)(#oĉǛxÚq¨xÞ)(oâÇ¡vÁ“bþhã#q>*È›xÚ‰§ŒÚ‰Ç›x¼qÈ›xډǛxډǛxډǛxډǛxډǛxډǛxډǛxډǛxډǛxÚþ‰Ç›xډǛxډǛxډǛxډǛxډǛxډǛxډǛxډǛxډǛxډǛxÚñ¦oâñ&oäɨoÒŽxx#íðF;¼!‡´##툇7>"y´Ã!툇8ä!Žâvx##Þˆ‡7ÚoÄCñ‡7âQxx#툇7âÑŽxx#툇7âÑŽxx#툇7âÑŽxx#툇7âÑŽxx#툇7âÑŽxx#툇7âÑŽxx#툇7âÑŽxx#툇7âÑŽxx#툇7âÑŽxx#툇7âÑŽxxã#íÈH;âávdÄiGc¼ÑŽxx#âȈ7>"Žvx#íÈH 0A BÀ!âð†Cä!þŽvx£ñðF<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<ÚvÄ£ñhG<Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!þÚ!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Úþ!¼A&âAÄÁ¢¼!Ä¡ âAâÁâÁ@òáD âÁd¢ÍñÑ1Ï1¼Á!¼Á!ÄÁÚÁâÁ2ÂâAÚ!Ä!Ä¡âA¼Á!¼!¼¡ FÃBâÁ¼!#¼a4¼!¼!Ú!¼¡âA&BâA¼¡¼¡ÂâAÄÁÚ!¼¡Ò!Úa4Ú!¼AÄÁ!¼¡2ÂâÁâÁÚÁ!ÚÁ!Ä¡ òAJ¡âÁâÁÚ!¼!Ä!¼A¼!¼Á!¼á#¼!Ä!¼!¼A¼!#¼!¼!¼!¼!¼!#¼¡þ¢Ââ¡FÃÚÁ ÂÚÁ¢âÁâ¡B¼!¼!*¼!#¼!Ú!ÚA¼!*¼Á!ÚÁ!Ä!¼¡ÂÁ!¼Á!¼!¼!âÁâÁâ¡âÁâÁÚÁ>BÚÁ!ÚÁÒÁ!¼¡0¡þ  ⡼!ÒÁ¢ ¼!¼á#Ú!¼A¢âÁÄ!#¼!ÚÁÃäAä!#¼Á!Ä!¼Á!Ú!¼!Ä!ÒA⡼!Ú!ÞA2BÂâÁä!*Ú!Ä!ÚÁBäAä¡0¡þ  â¡ãAäÁÚÁ!Ú!Äá#ÚÁ!Ú!þÚÁ!¼!#¼!#¼!#¼!#¼!#¼!#¼!#¼!#¼!#¼!#¼!#¼!#¼!#¼!#¼!#¼!#¼!#¼!#¼!#¼!#¼!¼!Ä!¼!ÚÁÂâÁâÁâÁâÁâÁ⡼!Äá#d"dÂ!ÄA¼!¼!ÚAJà”áÀä!ÚÁ¢¢â¡âÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâþÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁþâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁâÁ2Bâ¡Bä!¼Á!¼a4ÒÁ! ÄáJ@äAâAâAâAâAâAâAâAâAâAâAâAâAâAâAâAâAâAâAâA¢Â¢Âä!þ "ÚÁ!¼!#Ä!Ú!ÚÁ!Ú!#¼!¼!¼!¼!ÚÁâ¡2¢¼!ÚÁÚÁ!Ú!ÚABâ¡Þ¡¼¡âAä!#Ä!#Ú¡1ÄA¼AâÁâÁâÁâ¡¢¢âAâÁÚ!¼A2ÂâABä¡ Ê¡â¡jÄÂâÁÂF£¼Á!Ú!*¼A¼!¼á#ÞÁÚ!¼!¼¡¼!ÚÁdÄâ¡Ú!ÚA£¼¡ÒÁ!ÚÁ¢Ä!09#ÚÁ2ÂâÁã¢Ââ¡â¡âÁâÁâþAäÁâÁ2â¼Aä!¼¡¢Aþ  ¼Á!0Y¼“ãA¼!ÚÁÚÁâ¡ÂâAÚÁ!ÚÁÚÁ!ÄÁ!¼¡¼!*0ÙÚ¡1¼!ÄÁ!Ú!Ú!#Ä!Ú!¼Á!¼“ÂâÁâ¡âÁÚ!¼!#äAâÁ2BÄ¡Aþ  ¼“ãA>“½!#¼!¼“ÛÁÚ!ÄÁÚÁ!¼¡ÂÚÁ!¼¡ÂÚÁ!¼¡ÂÚÁ!¼¡ÂÚÁ!¼¡ÂÚÁ!¼¡ÂÚÁ!¼¡ÂÚÁ!¼¡ÂÚÁ!¼¡ÂÚÁ!þ¼¡ÂÚa4¼!#¼!¼Á!äÁâ¡â¡£âÁXºÒáÚ!¼¡BÄ!ÞÁ!JàŠ Ú!#¼¡¼!Ä!¼!¼!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!þÚ!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Úþ!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!ÚÁ!¼Á!Ú!¼“ãAâ“3ÂÚÁ0Ù!¼´·J€HpÄâÁÚ!09ÚÁ!Ú!Ä¡âA0Ù!¼!äÁâÁ0ÙâÁÚÁâ¡â¡âÁ¢BÚ!Â!¼¡2BÂâA2Â2BâAäAÚ!#ÚÁ!¼¡¼!¼¡âÁÚ¡1äÁâÁâÁâÁâÁâÁBÄÁ!ÚÁ!þ¼!¼!#0Ù!Ú€ä¡J@XÚâÁâÁâÁ09#Ú!ÚÁ!ÚÁ!¼¡Ò¡Ò!#ÚÁÚ!¼“3B¼Á!¼!¼!¢â¡2¢¢âÁ0ÙâÁÚÁ!Ä“3ÂÚ!¼¡¢âÁÚÁ!¼¡2BÚ!ÚÁ¢âAâ¡â¡âÁ0ÙÒ!Ú!#Ä!ÚÁ!Ú!ÄÁF£â“½!#09Ú!¼¡0¡þ  ¼!ÄÁ!0¡âáÒ!ÚÁ!ÄA¼!¼¡1ÚáâAâ¡ÂâABž·xí¼Å/ž¸xÞÚyk—°]¼vþïÄÅkç­]„ïzK(.^»íâµKØ.ž·xíÚmôÏÛÆ˜ŠýiO\Âvñ¼Å—ÐÛFoòâµ{OÜÆxí¼%lç-a;o ÛyKØÎ[ÂvÞ¶ó–°·„í¼%lç-a;o ÛyKØÎ[ÂvÞ¶ó–°·„í¼%lç-a;o ÛyKØÎ[þÑö¥÷céûXú>–Þ}ücLßÇ?öñ»ïãûøÇ>þ±ìãûXú>–¾O´#ÞˆG;6ÒŽxx#ÞHˆ8þG” !∇7"ãˆ#¼‰G;âxˆ#ÞXŠ7âá´#ÞhG<ÚqÄÃâHH;ÒŽ„x#âˆG:¼oÄÃíðFBÚ±”vˆ#þÞà8âÑo´c)íXŠ7âáx´ÃG<Ú±ÞâÞÞ¼‘íà ñÀñ ñÀâ íââÞÞÀñ Š  Ð á ñà Šò ©íéÞâÐÞÐÞ°íïÀÞÀñÐñà íâÐ !ñà ñà íÞÐÑ á ñà ïÐñ íòà ñ á á !%ðÊðmÞÞÀÞà$Þ°Þâà ¼òà ñÀ !íâÐ !íâÐ !íâÐ !þíâÐ !íâÐ !íâÐ !íâÐ !íâÐ !íâÐñÐò ¼±âí¼‘jÞò ÑñÐñà ñ éíâÞÐÞâ°ââ%ðÄ@ íÞÐÞÞïÐñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñàþ ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñþà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñà ñÐñà ñà Á ‘Þòà íÞÞ ÞíÞÞ U %@ò@ò@ò@ò@ò@ò@ò@ò@ò@ò@ò@ò@ò@ò@ò@ò@ò@%ô`¨ù ù@Qô ôž  þLJ©ÞðLj ÿ@†JJQ ªò@òEÕ©ù`¨ù ù ù@Qù ô  JQù@Qô@Qô@Qù@ù@•ô ô ùô ôô ô  JQù@Qô˜  !ñà éé ÞÞÐm@Q§Pâ@©ñà íà á ¼‘âÐñ ¼Á¤â¼í ÞÞÐñà ñÐñ ë½á ½Á¤ÞÞí@©ÞÐïÀLšñðëÊÞÐÞÐÞÐLÚ á ¼ÞÞÞ¼Á¤íÞâÞÞÐþë*ëê íòà ò í á %` ÅðmÐñà òŠ LÊÞÞÐÞíà ñà ñÐâ °â ÞÞÞâ@©Þ  !Lê ”ê ñ ñà !ñÐÞâÞíé ”ê ëÚ á á ññP–P Ðñà !òÐÞíà ñÐÞâ  ÑLÚâÞâÞâÞâÞâÞâÞâÞâÞâÞâÞâÞâÞâÞâÞþâÞâÞâÞâÞââ@©ïà L*ñ ñÞÐÞÞíÀ¤Þâíà ñà ò¼á ñÐñ òÐ á !òÐÞ%ð»ðÞ@©ÞÀ¤á  Ññà òà òÞ Þ  á òà òÞ Þ  á òà òÞ Þ  á òà òÞ Þ  á òà òÞ Þ  á òà òÞ Þ  á òà òÞ Þ  á òà òÞ Þ  á òà òÞ Þ  á þòà òÞ Þ  á òà òÞ Þ  á òà òÞ Þ  á òà òÞ Þ  á òà òÞ Þ  á òà òÞ Þ  á òà òÞ Þ  á òà òÞ Þ  á òà òÞ Þ  á òà òÞ Þ  á òà òÞ Þ  á òà òÞ Þ  á òà òÞ Þ  á òà òÞ Þ  á òà òÞ Þ  á òà òÞ Þ  á òà òÞ Þ  áþ òà òÞ Þ  á òà òÞ Þ éíÀ¤Þí ñà ñà ñà ! âé ñð%òòòòòòòòòòòòòòòòò€¬•†JQÈ*ù@QÞà ¶ÀÞÞÐñÞÐÞ–°ù ù`¨ùÀØô ù`¨ù@QùÀØò€¬ñðÚ•òEù@Qù@QÈ*ùðÚù`¨ù`¨ñ ù`¨ù ù`¨ù`¨ù ù– ÞíÞííâ þ¥P á ñÐLê !ñà LÚLÚÞ@©íà ñÐñÐL*òÐâÀ¤íà ñà ¼ñíââÞÞÀ¤âÞíéÀÞÞéÐÞÐÞÐÞ ”*ñÐLê ñ ëÚñÐñÐñÐâÞÞ°®íÞâÞÞíà ½âÞ °ÞÐ Q  ÐñÐ !˜ÞÞÐ Ñ !âíâÞÐÞДÚñÐLÚñà íòà Lê íÞ°®ííâ@©í¼Á¤ÞþÞÞÞÞÞÐ Ñ á ñ %ðÊðmÐ Ñ”ÚÞò ñà ííâÐÞâ âÞÀÕ¹®ë»Îë½îëLê ñà éÞДڔê ñà ñ ÞÞïДÚñ  Ëñà ñà íò ñð%ðÊ@Ðñà ñà Lê ííà ñДê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëêþ ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ëê ”Úñà ñà íí@©Þ °íÞÐéíí á @Q¥Pñ ñ ñ ñ ñ ñ ñ ñ ñ ñ ñ ñ ñ ñ ñ ñ ñ  ‘òòòòòòñ` ¹  á ñÀñ âí€ ÿù†ù@Qù@Qñ ù ñòù ù@Q !ù ù@Qù ñþ@ñ`¨ñ@Qñòòù ô ùEñ ù`¨ñ@Qùò†ù ùñäÅ‹çéU¼v Ûç-ž7‚ñÚÈ“÷¨„·vñ¼µ‹ç­]ĈÞÚy‹ç-ž·ˆÞÚy#è­]ˆóÍ7ÝÜðA7ÉÐ  ø"N<Þ„ãM:ÞÄãM8Þ¤ãM;Þˆ“Î8ñxS£6¶7 Õ%»¤óNEéÄãM; ¥%þÿÄãM<6Æ#N;éŒ7 UäM;Þ¤N>x“N8ãœãM4)$ ˈãÌj„`ˤ“Ž65À Þ´£  Ã7Þ83@:ÞÄãÍ8ñÜØŽ7⤓P:ñx7ñxc‰, ÅãM<âÄ#Ž7ñxÃiôÈSJ ñxSQ<âp7ñˆÃ©7ñ´7±z“8ÞÄãM<Þp*N¬ñx“7ñxÓN8íÄ#Ž7íÄÓα׶“P; µs¬7ñx7œzÓŽ7 µ8ñˆãM<ÞÄ#N<ÞÄãM;ñxÃi;Þ´Ãi; yÓN<âÈ#N<ÞTÔN<â$$N<ÞÄãM<ÞTOþ;ñxS&Åüц7ñ´O;Š$ÔN<âÄãM;ñxO;ñ´7ñ´ãM<âÄÓ§ÞÄãM<í$äMB‰#OBï$ìM<ys­7âÄ#N<éˆ7ñ¤SQBÞÄã<±¶“7ñxOEœ–€I1´Ñ§ÞÄ#N<ÞÄãM<âpêMBÞ$ÔN<âÈãM<íx7í\›¸â‹3Þ¸ãâÄãM;ÞpÚNBí$äM<íxs­7ñx#N<íx“7ñxÓŽ8ǶóNBíxOEâÄãMEïÄ#N (óG yé8ñx7ñx“8ñx#O; UO; UO; UO; UO; UþO; UO; UO; UO; UO; UO; UO; UO; U$íHHEâÑŽ„T$íHHEâÑŽ„T$íHHEâÑŽ„T$íHHEâÑŽ„T$íHHEâÑŽ„T$íHHEâÑŽ„T$íHHEâÑŽ„T$íHHEâÑŽ„T$íHHEâÑŽ„T$íHHEâÑŽ„T$íHHEâÑŽ„T$íHHEâÑŽ„T$íHHEâÑŽ„T$íHHEâÑŽ„T$íHHEâÑŽ„T$íHHEâÑŽ„T$íHHEâÑŽ„T$íHHEâÑŽ„T$íHHEâÑŽ„T$íHHEþâÑŽ„T$í8V;¼o´#éðF<Ú!NyCñð†8ÒŽx´Ã∇7Ävˆ#ñF;"€¢ ÐE8Òá q¨¢ßHFpàetÃéðF:¼‘o¤ÃéðF:¼Q§pxcuZ';k”ŽÕÉâ°D.Ò!Ž„x#∇7â!ŽxXâéÇ:½‘ŽqxCâCÇátˆ#ã‡3  o0ÔéðF4|ñ mà€Þp†Œ0qPâG X€qp¢F7`Á4Ì\ÃH‡7Ò¡Pvz£Nâ`hÒátx£N–°…7"y´#!툇7âþáx´AñxD â!ŽxxCíðF<¼oÈ£ÞhG<Ú!Ž„x#ÞHH;¼!x´#툇7âá„x£ÞHHEâÑN½#œòF<¼Ño´ÃñðF<¼Šx#íðF<Úáx´Ã iG<Ú„ÅCòðF<«vpªñhGB¼oÄÃâG<¼oÄËG<Úq¬vÄ£ñhGBÄqpªŠPÆÚq´#˜h‡78Õyˆ£ G;âÑŽxx#Vï¨H<ÚvÄã툇7"Žw$¤"Þˆ‡8â!Ž„´#!툇8âávÄÊ ñF<¼þq´#ÞˆG;âÑŽ„x#∇78åxˆ# -Á#”ñ‡6ˆ£Þh§ÚvÄÊíHˆ7"Žcµ#!Þ‡8¼o´ÃñðF;¼o´ÃñðF;¼o´ÃñðF;¼o´ÃñðF;¼o´ÃñðF;¼o´ÃñðF;¼o´ÃñðF;¼Qo´Ã‰k‡7ÚoÄà ñFBÚávx£ i§ÄŠÈÜj‡7ÞQqÄ#œJG<Ä+oÄ£ò(&ŠAÄà ñF;âÑŽx´#íˆU;âÑŽxx#â¨H<¼qT$Þˆ‡8*þoÄC‰‡7â!ŽŠÄÃñGEâáxˆ£"ñðF<ÄQ‘xx#â¨H<¼qT$Þˆ‡8*oÄC‰‡7â!ŽŠÄÃñGEâáxˆ£"ñðF<ÄQ‘xx#â¨H<¼qT$Þˆ‡8*oÄC‰‡7â!ŽŠÄÃñGEâáxˆ£"ñðF<ÄQ‘xx#â¨H<¼qT$Þˆ‡8*oÄC‰‡7â!ŽŠÄÃñGEâáxˆ£"ñðF<ÄQ‘xx#â¨H<¼qT$Þˆ‡8*oÄC‰‡7â!ŽŠÄÃñGEâáxˆ£"ñðF<ÄQ‘xþx#â¨H<¼qT$Þˆ‡8*oÄC‰‡7â!ŽŠÄÃñGEâáxˆ£"ñðF<ÄQ‘xx#â¨H<¼qT$Þˆ‡8*oÄC‰‡7â!ŽŠÄÃñðF<¼‘vÈCÞHH;8åv$¤œòF;â!Žcµ#!Þˆ‡8âÑŽxxCzD € o04¿À5’¡ mh8æ?Žp4Ôã‡8Âao„C…C‰C8ŒCŒƒ8ŒC8Ì_:Øßü…C:xÃ/À7Œƒ7„ÃüuC8\C2À78C|C8Œƒ3À8pCþ,Ã8œCDƒ,Ã5\C2(À78Ã0”8ÌŸ7„Ã8„C‰C8dà8Ä&äB<´§ˆCBˆC;ȃ7ă8´<äÃ#”ÀµÈƒ7\KE$„7´C<´Còä3]<òä#O<ùLÏtñ¤c‰-í¤ãMEâ •Ž@ÈÏ#%\S 5×PS 5ÅdSŒ2ÔCM1×sM1ÅPS 5ÅPSÌ5Ô\SL6ÅPƒ#5×CM1×CM1ÔD¥2ñX"‹7ñˆO:Þ´ãM;ÞÄ#&ÿ\CÍ5ÅPsM1ÙDY 5ÅPS 5ÅPÓL1Ô4sM1ÙPS 5×PS 58FY 5Å\S 5ÅPS 5ÅPsM3Q6e3ÅPS 5ÅPS þ5ÅPS 5ÍC ŽÙPS 5Å\SL6Ô4£L:–¼ÒŽ@âÄã@U$N=R‚8ñxÓŽ8ò´ãM<ÞÄãM<ÞÄã8ñx8ñ¼ŽA¥SQ<íx#N<âÄã@Þ´ãM;ÞÄãM;Þ´ãM<ÞÄã@âÄãM<ÞÄã@âÈÓN<Þˆ7âÈã<Þ|ÛŽ8µã@íx#ηñx7ñx7íx7ÇãMEÞˆO;½ãM<éÄãM<íTäÍ·Þ´#P (óÇâÄãM:ñ(7ñ´7½$P;ñxóN;ñxÓŽ7ñx7ñˆ7ñ´7µ#7íÄ#þN;Þ´O;µS2ÆíxN:òˆ7ñx8ñx#7y7ñˆÓNEâÄS‚"ÅüÑF;ßz#7ñxcÐ;íÄãA%·7íx7ñx“ηÞ$8É#Ž@òˆ#<â$8É#Ž@òˆ#<â$8É#Ž7ñxO;ñˆ#7ñ´7ÅóR<ÞÄÓŽ7ñx<ÞÄÓŽ7íÄc@ÞÄ#Ž7ÅÓŽ@âÄÓN<ÞTäM;ñxóN;iG<Úyˆ#í¨H a BÀñhÇ;¾ÕŽx¼£"ˆ8ÒñŽŠx#行7ÒñŽŠx#行7ÒñŽŠx#ïþ¨ˆ7ÒñŽŠx#行7ÒñŽŠx#行7ÒñŽŠx#行7ÒñŽŠx#行7ÒñŽŠx#行7ÒñŽŠx#行7ÒñŽŠx#行7ÒñŽŠx#行7ÒñŽŠx#行7ÒñŽŠx#ïhG<¼‘ŽvÈ¢ –ø‡"¹E*rŽüÇ>"¹Hî#’ûˆä>"¹Hî#’ûˆä>"¹Hî#’ÿØG8,! KDéxGE¼oXâÓ©ÈtäQ‘]Vd—ÙeEvY‘]Vd—Ù¥2—)éÄc:ßÚ¥@äñ-yÄc:âÀ„,â!Žxxà ñxI;â È#¥(þA1¨QŒfãÅ F1®Af\£Ô Æ5šqlƒÅ F1®Ñ jƒŸF1¨qb4ãÅ F3&z‰ƒÅ †7,a‹¹U¤ñxÄ?šQŒf\£Í †2šQŒkãÅÈF1šAb4ƒʘèD©QŒfƒŸÆ5&Jb\£Ôh5ŠAf\£Í F1&Z jƒÅÈF1²QŒk4ƒŸF1¨qb\C§Ù(F3¢T e£ñ°D.ÄQ2o$ÞhG<Ú0R”`nòðF<¼vTDÞˆG;bwDÞG<¼o”¬ñÆÒ1oÄ£ñðFþEäáoµ#íˆG;<*o´ãßò†@ÚqÄCÞh‡7Úáx´CÞˆ‡7ä!Žx´C Þ0H<¼!o´C ïhG<¼ñ-oDï0H<¼Ño´#툇7J€‰b¢ ‰‡7â‰t´CñF<Ävxà ÞH;¼‘^oÈ£ñðFzÛ!x#âˆG;ÒË`oÄÃñ0ˆ7âáxx#Þˆ‡7 "q0Ø ŽG;Ò´#Þˆ7B\L(ãmG<¼!o¤G<Ä!q¤Þ0È;ÚáxˆCÞ‡7ävx#½íˆ‡7Òëôz#½ÞH¯7þÒëôz#½ÞH¯7Òë y¤·ñxƒ½v¤÷âGzÛ!oÄÃi‡8ä!Žxˆ#Þq<ÄvxƒÁÞˆ‡7âÑŽxˆC ñF<ÄqÄ£ñhG<Úáxˆ£PÆÐŽx¤ÃñhÇ;Ä!ox#∇7Ú‘^W3ØÕ v5ƒ]Í`W3ØÕ v5ƒ]Í`W3ØÕ v5ƒ]Í`W3ØÕ v5ƒ]Í`W3ØÕ v5ƒ]Í`W3ØÕ v5ƒ]Í`W3ØéG¶#(.ž8oñÄ lÏ[»‚âÊóOÜ@oòÄy‹çMb+ª˜‹ò¬(O>ò¬(<ôÈ“(O5d Ë>Éð<Â0ðŽòГ=ù¸HO>.ʳ¢<ùÈCŽ+ÊCO>úˆc‰,˜ä]–ü“8Ù¸ÙM7nº §œrŠsM6Ÿ @‡2ÙèÃ1,ã&PãÌÝ\C3¸i ÔdÃI7ÔÜÀ6ÔT³G3Î àf7rŠ“M7ÙˆSg6âdÓ8Ýxã%¶ÄÓŽ7íx7‰O;ñxCŽ”ÐN<âÄ#N<ÞäM<Þ $N<òˆÓN:µãM<â´CP;yÓÎ@ÞÄÓŽ7ñˆ38yÓŽ7ÉãM<Þ $þNAé äM<ÞÔN<í$7yÓN<Þ´#7‰37ñxÓN<ÞÄãM;ÞäDñx7íÄãM;ÞHäM;ÞÄãM<òx37íÄãM<ÞÔÎ@Þ´8ñ´ãM<âÔN<í NÓ¼ZB<íÄÓN<íÄ#N<íäM;Þ $N;v äM<òˆ37ñx7íxÓŽ7µO;ySP;ñxS7íxÓN<Þ´8ñ¼ÓNAÞ¼ÓÎ@Þ¼O;‰7ñxO;òx38vyÓÎ@òx37v‰ãM<Þ´7ñ´3DI7é äMžóGíxÓN<í`"N<íÄþãM<ÞHäÍ@âÈãM<éÄãÍ@µãM;µãM;y7íxó‘7ñ´8òxS8òx#7ñ´ãM<ÞÄÓAÞÄãM<Þˆ#O<íxO;ïHäM;ÄAPƒÊhC;âáxˆ#Þ H;Ò­DiAÚáˆ#Þ ˆ7Òo ¤ÞH;¼1vxc íðÆ@$Žx´#‰‡7âáv ¤ñF<¼oÄCñðF<Úáx´Ã∇7´&q¤ÞG<ÚvÄ£ñhÇGÚqÄ£ñAÚáxx#íð†8âávÄC%ÀÄ.þ€vÄþyqž7ÄoÄCñðF;¼!Žx£ÞÇ@¼Ñoˆc Þh‡7Ä1o´Ãâˆ7Úá q Äíð†8âvxCñF;¼!Žx£ÞÇ@¼Ñoˆc Þh‡7Ä1o´Ãâˆ7Úá q Äíð†8âvxCñF;¼!Žx£ÞÇ@¼Ñoˆc Þh‡7Ä1o´Ãâˆ7Úá q Äíð†8âvx£Þ ˆ7ÒŽxx£ñð†<â‘‹?(bòP‘<òÑ$zÈ#ò(‡Šä‘y¨(ò ‡äŠ `( …<è‘ 䣦þÇh€ôAy”CEòÈG“è!|ÈCEù=äá¢rècE8¢G<,! LHÄñðF<Úvx#–ØG6Ä‘n\£%âÈF7®aÖlˆCNݸF6®Š @¸Ä5Ôð€„  ¸†3Ðk\ÃpS4R@€¼ ×xF <á΀8®!9eãng³!ŽkÈ©ñ°„,Úñ‘vxc â ˆpô¤ñÈ;ÄAvˆCíˆ8äáàH>ÈC>þ¨ˆ<ä=”ƒ<ÐC9äC9È=”=”C<àH<ÈC<È= „<ÄCMÑC>ÈAÐÃ>”=ÈÊÈC>ÐC9äŽä=”ƒ<ÐC9äC9È=”=ä=äC94I>ÈC;X‚,X‚8„7ă7ă<ˆƒ%üCV65V6˜á5PÃ5ˆÃ5¸É545¸É5PÃ5Pa–^ƒœPÃ5dC…–›\C7¸ 54C3\C6PC6Pƒ8pÖ5PfC¹É5¸‰7X‚-ˆCœB ˆƒ7´ƒ78O<¤Ã@xC<ˆÃ@ˆƒ7´Ã@ˆC; „7ăþ7´C<´C<´C<´ƒ7ă7ăDhDxƒ]xCЃ<¬È£„<äŽÄŽ´&È‚%´C¸‰þʉº 5dƒ^CÉ 5¸ 5dƒRƒ›PC65¸É5¸É5d5d5d5dCRƒ›PÃ5dƒ*a b6\ƒœ\C6\ƒ8PCÈÃ@4IA4É@àÈ@ÈÃ@”B D;|„7ă7ÄC;xC;ă7ă8xC; D;Ä3{C<ˆÃ@ˆC<ˆC;ă<ˆC<´Cjdc|壯5¨Á¾l\#°ì£†ùÆW> ^ƒ× †ù,X>jŒpµå£F6®AkŒÏ|ã;`6¨Á>j„×BöÜÀ½6¸¡ {ÐK ÚoÄÃñðF<¼aoÄÃíˆG;âxx£ñðK¼ÑoØ$Þ`‰8Ú›„EñhG<¼Ñ–xƒ%6ñF<¼vÄÃ&ñF<¼oÄч8âÑŽìd í`‰7âáxx#툇7âÑŽxxc Þh‡7vo´#Þˆ‡8âáxˆƒ%Þh¥ÒÁq¤£ñðF:â`¢þhC<Ä1t(¢ÞÀi;âÑoÄÃ&±‰7"yˆc éðF<Úáx´ÃñhÇ@Úá›x£ñðF~ôÏ[¶ã(Îdò&žvfò&oÚGœÚñ棶L¥yâyGyÄ‘'yâ'qäy'qL|GyâyGyÞáèxÄ‘'qäùèxÄ‘GyĉçxÞ‰çxÞ‘'žwÄ‘'qä‰çqäy‡£wây‡#qä‰ç™ÞáHy8:[qäyGyÄ‘ç£wÄ‘GyâyGŽÞGžxÞáèþyÄ‘'žw8zGœxÄ‘‡£w8zGyÄ‘'žwäGžw>21Ÿrè‘'yÊÉGyÄ‘çrÈãíðF;`#Ž´#툇78’ŽvÄÃ$ïð†78â yx#∇7âÑo|¤ïðF<Úáx#Þˆ‡7¢â “¼ÃñG¼opÄñh‡7ÚqÄÃñÇG¼oÄðñF<¼opÄñh‡7âáxx#Þàˆ88ÒŽxã#툇7âávÄ£ÇL¼Á‘tp¤ŠPÆÚqÄÃíPD<¼Áyx#í˜I;¼!›vpÄ$Þh‡7â!Žx˜d&Þþˆ‡7âáv¤#âhG<¼ñŽvp¤iG<¼ÑŽˆ#Þˆ‡8>"µ´#òG<¼ÑoÄÃòðÆLä!ŽˆCâàˆ8ä!Žˆ#∇<Ä!qÄCñ‡<Äyˆ6ò‡<Äyˆƒ#∇<ÎqÌDòGÄyˆ#*âøˆ8ÚqÌD‡<ÄñqÌDòG;8"ŽˆCâ‡88"qÄCñG<ÄÑŽÈC3‘‡8¼!qpäG<ÄqÈCG<ä!yˆCâ("¡ Ä£ñðF<¼“ÈÃjiG<ÄqDEþG¼qÄÃ$Þˆ‡8âaoÄCñ0‰7â!Žx˜ÄñGÒŽˆ£ñðF;8Òo´#òðF<ÚoÄÃñðF<Äñyxƒ#툇8ÔbŽ´C-Þh‡7âáw´ã#òG<ÄÑŽ´ƒ#âhG<¼1qpÄñF;fâ™x£ñð†Z¼yˆc&òðFþ<¼vpÄ툇7ÚoÄÃíàH;âáx´#&ñÆLÚvÄÃñÆG¼qpDñF<¼1oÄCÞhGÄñ‘v¤#Þàˆ78âxx#Þˆ‡<¼oÄCñðF<¼S"%ˆ‡8â!q¼£‘‡8Ô"q|DiGÄ1qpDñ‡<Ä!qÈCòG<ÄqÈCGä!Žˆ#òGÄqÄCâàˆ88"Žxˆ#*âàˆ<Ä!qÌä툇8â!qpDòG<ÄÁqxƒ#â‡88"Žˆã#ïhG<ÄÁqÄCâàˆ8þä!yˆƒ#∇8â!ŽxÈãlÞøˆ<ÄÁyp$1‰7Úávx#ò‡7âáxx#&áˆ7â!Žv|¤3‘‡78"Žxx#Þh‡ZÚá´#Þˆ‡7âá yˆ£éˆG;8âxxƒ#íàˆ8fÒŽ¨x#혉7âá “p¤ñðGÚÁqÈÃñhG<Úv|Ä툇7Úo´ÃñðF<¼vÄCÞøˆlâátpÄ%ÀD1þІxˆCâˆ&Úop¤i‡7âÑŽxˆ#íG<¼!؈#ÞˆG;¼oÄÃòˆ‡8>âx#툇I¼þqÄ£QiÇ;¼“x£ÞˆG;¼Á‘v<ËñðGÚqÈCòG<Ä!xˆ#âøˆ8ž%yDEñG<Äñ,qÈc&âG<ÄqÌDò˜‰8â!Žxƒ#âàH;ÄqpDi‡8f♈#âG<Ú!µˆãYâàˆ8>ÒoˆC-â‡8â!yÌDòˆ‡8äñ¬ŒA@;¼ñ‘vˆ#íˆG;¼vx#íðF<Úvˆoˆoˆ‡vyˆ‡v˜ qˆ qˆ qˆ qˆ qˆ qˆ qˆ qˆ qˆ qˆ qˆ qˆ qˆ qˆ qˆ qˆþ qˆ qàqàoˆoøqo‡ð†xð†xð†xh‡xއxðqqˆ‡vˆ‡vˆoˆ‡vˆ‡vˆ oàˆvðqàˆvˆ“‡x0 oˆqˆoˆoˆoøˆvˆ‡t‡xð“øqˆo‡x‡™ð†xð†h‡xð†ð†vðŽð†xðŽyˆo0 oˆ‡vàohoh‡ð†xðµð†ðŽh‡‡xxoyð†xð“ð†xð†xh‡ð†gñ†vˆ oàoŽhŽhoˆqˆ‡vˆ‡vàoàˆvˆoˆo˜‰vH‡vþˆoŽHŽ€@9y˜ qˆ‡vyàˆwˆqˆoyàq‡xh‡³áqˆ‡vxއgéGq˜ q‡xyˆqqˆ q‡yyàˆ³‰qqµðއ~Œq‡xyàqP q˜ qˆqàqøq‡x‡¨Žyyh‡‡xhqàq‡xðŽð†xhq‡™h‡¨yh‡xhqàqøohqˆoˆ“ˆ“øoqˆoˆoˆoøˆvH‡vàoˆ q“ð†™ho‡xhŽðDò†þvð†™xoˆoˆ‡vˆqˆoˆ‡vàˆvðqˆoøˆv‡xhoˆoˆoàoP‹vøˆvˆo‡x0 oˆ“øohŽ(GP†?hƒvøoP„xð†xð†x‡vðŽð†™‡xhŽh‡xð†xð†xhy‡~lŽð†vàˆvð†xð†xð†x‡ oˆoˆqhއxqˆoøoh‡xð†xð†xð†xð†xh‡xð†x‡vP y‡¨‡hqˆqˆqàyoˆqˆy‡¨‡vˆoˆqàqð†qøˆvàqàqhþ‡xh‡™ð†xqˆ‡wàqøyއx‡xoˆoqˆqˆyŽŽh‡x‡™‡x‡xŽ0 Žh‡x‡0‰~‡x‡¨h‡xðÙàˆw((€9€ð†™‡vàˆvàoàˆvˆoˆooàqàoh‡x𓈇vˆo0‰xh‡x𓈇vˆo0‰xh‡x𓈇vˆo0‰xh‡x𓈇vˆo0‰xh‡x𓈇vˆo0‰xh‡x𓈇vˆo0‰xh‡x𓈇vˆo0‰xh‡x𓈇vˆo0‰xh‡xþ𓈇vˆo0‰qh‡xðŽðµð†voˆ‡vˆox‡v˜‰vˆ qð†xðŽxð†vˆoˆoˆqøoˆoøoˆq˜ yðyðŽð†x‡ðŽoh‡~ô†vˆ‡vˆoˆoˆ‡vˆ‡vˆoøohyð†xð†hއxð†vˆo˜ oˆoˆ‡vˆoˆo0 oˆoˆoøqð†vàoˆqˆohoh‡™hyŽhŽoˆoˆ‡vˆo0 oˆoàoH‡vˆoˆoh‡ð†xð†h‡ð†xð†vøqh‡þh‡thohŽh‡x Žð†-€‚ˆqh‡™‡xx“µ‡vàqày‡ð†¨‡x‡ð†xh‡x‡x‡tày‡x‡vˆ qøqˆqˆqào0 yyoxo0‰x‡vˆoˆy‡x“ˆoˆqP yއxð†vˆy‡x‡™‡vqˆqˆ q˜ qh‡™ohŽð†™‡³‰‡vðŽŽð†xð†xoh‡xð†h‡x‡xð†™ð†¨ð†vˆoh‡xðØð†xð†xð†xð†vˆqð†vàoˆþoà“øoH‡¨‡xð†xh‡x‡¨ð†vð†xoàqˆ qð†xŽhŽð†™‡xh‡xðŽðŽhoˆoˆqˆoh‡xð†xh‡xhŽx‡vˆo0‰xh‡xð†P„bøƒ6ˆ‡vàˆvP„h‡xyðŽð†vð†xqˆ‡vð†xh‡xð†™ð“ð†xð†xð†xðއxH‡vøˆvˆ oˆqàˆvˆoàˆvàˆv˜ oˆoˆqàˆvˆ‡vøˆvøˆvøoøq˜‰vð†xoàˆvøˆvˆ‡vàˆvˆoøˆwð†vðŽØh‡xþ0 ŽhoˆqP oàˆvðŽŽh‡xð†hoèHqŽh‡xhŽh‡ð†x‡vð†xð†xð†¨xއxð“x‡ð†x8›v‡xð†xð“øˆvˆ‡wð†xhqàˆvx‡pðŽ(È1€th‡xð†xðqˆqˆoˆoàoˆ‡vð†xyàˆvøˆvàoøˆwhoøˆwhoøˆwhoøˆwhoøˆwhoøˆwhoøˆwhoøˆwhoøˆwhoøˆwhoøˆwhoøˆwhoøˆwhoøˆwhoøˆwhoøˆwhoøˆþwhoøˆw𓘉vàˆvˆoˆoˆŠv˜ “ð†vð†HoˆŠvðqˆ‡vðŽðØh‡xh‡xð†xh‡xyˆoho˜‰v˜‰vŽh‡Žx‡vˆohoh‡x‡xhŽðyð†xð†xðŽðއ™ð†xð†xð†¨ð†xhoˆoˆ‡vˆ oq˜‰vˆ‡vHoŽh‡ŽŒoˆ“ˆ‡vˆ‡vH‡¨h‡xHŽh‡xh‡x0‰ð†™hoàˆvˆo ohoˆ‡vàˆvð†™ð†xhqøo0 oˆqˆoøˆÐ!ÈàoˆþoàDŠqhoˆ“à“ˆŠvˆqqˆoˆŠvðŽð†xð†™“˜ oˆo˜‰vàˆvP qP q‡xð†xh‡wð†x‡™Žh‡x‡xh‡xh‡xðqˆo€ qˆ‡vøÙx–vð†hoh‡™ð†xh‡ðŽð†xðØ0‰xh‡wˆ‡vˆŠvˆoˆoˆoøoˆoøˆvð†vàqøˆvˆoˆ‡vð†vµðy‡‡xh‡xh‡xð†x‡xð†xðŽðŽhoøˆvˆ‡vx“ð†xð†™H‡xh‡hoˆo‡¨hoàoþˆoøqàˆvàˆvðŽðy€vˆoˆoˆ‡t‡‡x‡(GP†?hoˆoˆqÀ„xð†vP‹vày‡xð†‡hŽð†xð†™h‡xð†xh‡xðŽh‡x‡xð†xoˆoˆo˜ oˆ‡vˆ‡vˆqð†w0 oøo˜ oh‡xohoˆohox‡vˆoàoh‡xh‡tx‡vàˆvˆoøoˆox‡vˆo0‰™h‡xð†¨ðŽð†vð†vðŽð†xoˆqˆ‡vˆohohohŽðŽð†vˆ‡vð†vào0‰ð†þxð†xð†xh‡™hoˆoh‡xð†xð†xð†xh‡¨ð†xð†vð†xð†xð†vø“H‡vˆoP‹voˆ‡w0 oh‡xð†vàqàˆvð†™ð†Xðˆqh‡xh‡™h‡xhŽh‡xh‡¨H‡xoˆoh‡xðŽhoˆqàˆvð†xŽhoˆqàˆvð†xŽhoˆqàˆvð†xŽhoˆqàˆvð†xŽhoˆqàˆvð†xŽhoˆqàˆvð€ˆ'.^¼vÞâ‰#ØÎ[z j\ã£ëü¨;©áÎfƒ×øè5¨OwÖÓ¦ëÌÆ5êùÑxfã£ë¤†M?Ïn¬“ë¤Æ:³±Njä”6¥Æ:©Oj\£ž×ÈÆ5¨aSjÄ“î¤Æ5>Oj¬¤Ô¸ÆG¯‘Vwfƒ× F6ÖYÏuR£ž× F<ÓºÎæÔ¦Ù Æ:©ql¸ó£ñÌ5âIfÄs4È ¶™ƒnV6þÝìf FŽxxCòˆG8Úávx£âGAÚoÄ£]ñF<Äv¤ñh‡7Ä!oÄÃñF<Ú!‘Ä£ñðF<Úo0(/yGWÄ!o¤ñG<¼!qtEòH;ÒŽ“xã$â8‰7âávx#Þx‰7ÄqqœÄò(ˆ7â‘o´ã$Þh‡7âávx#ÞˆG;l2o´£+Þ‡8âÑ›ŒÄ'G<¼!Žx´ÃíðÆIÚá qÄÃíð†8âx¼D ÞG<ÚñŽ‘xCñhG<¼!x´#Þˆ‡7âáxˆ#ÞH;¼vÄ£6þñF< )Ž‚ˆ£Þ(H; Òoؤ'i‡@¼ÑxC íˆG;âá y´#ÞH:R‚G(ãm8‰7vÄ£ñF<¼ÑoÄÃñðF:âáxx#âˆ8Nâxx£ Þˆ‡8ÚQvÄÃí(ÈHlâvx#í`7â!oÄ£i‡7âÑŽ‚xc$6‘‡8âÑŽxˆã$âˆ8â1’xx#∇7 ÒŽxxCÞˆG;N"´#ÞhGWÄQ—ÄñhG<Úv¤ñ†@¼!vx#ÞhG<¼!od$y‰7âᑤC 툇7Úáxx#âþ‡8N"x£iG<Äá‚x£ÞˆG: "›xC ÞhƒJ°M!`63ȶ)„mA1WF1b^ ™ãÅh†2ŠófÈ<æÍº2š1ôf ½CoÆÐ›1ôf ½CoÆÐ›1ôf ½CoÆÐ›1ôf½2/†2Šób(£Cy1ˆób1o†Ì‹¡Œb(£Ê(Ћób(£Ê(†Ì‹!ób(£Ê(FÌ‹1ôb(£2/1dÞ e#æ×(†Ì‹Ñ e#æÅy1b^Œ¡CÅPF1”Q ™CÅz1d^Œf(£@/†Ì‹óbÄœÍPFþ1b^  #æÅPûò‹!óbȼÊ(F3”QŒ¡CæÅPF1b^ e\£2/1”QŒ˜ƒ1'†2ŠAŒ˜7CÅ91d>”ç@÷¯l Ú!vDäAlb$¼!ÄÁBâÁÚÁâÁNB¼!¼a$$ÚA Ú!¼!ÄÁâÁBÚ!Ú!¼!¼!¼!Ä!Ä!âÁâÁFâ$¼!ÚAÄ!ÚA Ú!¼¡¼¡ ¼!ÄÁâAÚÁÚÁ¢¼A ¼!¼¡äÁäABÄ!Ä!äÁâÁÂâÁÚ!Ú!¼¡âþÁ¢âÁâÁ ¢B¼¡ ¼¡¼!¼!ÄA ¼!¼!¼á$Ú!¼¡¼¡BÂDNÂâÁBÄ¡ äÁÚA Þ¡âÁÚ!Ú!Ä¡âAâ¡¢â¡âAÚ¡ ÚÁ&ÚÁÂâÁâÁâÁâÁB ÂâAÄ!¼¡¼!¼!¼A ¼!¼¡¼!¼!¼!Ä!¼AÄ!¼!Ú!Ä!ÄA Ú!¼!¼!ÂJŠáÚÀâ¡BÚÁâÁÚÁâ¡âAäA ÚA Ä!Ú!¼Aâ¡Âþâ¡âÁâÁÄâ¡NÂâ¡Ä!¼!¼A ÄA¼!¼¡âÒÁâ¡ BâÁâ¡âÁâÁÚÁâAâÁ ¢âÁâa$¼¡º¢Þ¡+¼¡Äá$ÚAb$âá%ÚA ¼a$¼!¼A ¼a$Ä!¼á$ÞA⡼a,½A ¼A ÚÁNBN¢¼AâÁâAâ¡â¡ââÁâANBäÁ&ÚÁº"¼ANÂÚ!ÄAâ!Äa$ÂÚÁ¢ Ââ¡Ä!¼!ÄAJ@„ nS7s@7s@r`lalAþlAl9mAŠÁvlAvalAlA:wÁ”Á®Ó”Á®Ó”Á®Ó”Á®Ó”Á®Ó”Á®Ó”Á®Ó”Á®Ó”Á®Ó”Á®Ó”Á®Ó”Á®Ó”Á®Ó”Á®ÓvAlAlal!æ’SlAla’slA¤Ó”ÁvÁ¤Ó¤ÓvÁ”Á”ÁbήӔÁ”Á”9•Á”alA:mAlA’SlA¤39•Á¤9wÁ®Ó”Áv¡lAvÁ”alAlAlAlASlAlalþASS’Ó”NwÁ”Á”Á”aè9•9•!9•9¥Ó”Á”Á”ÁvÁ”Á”Á®slAlaS:mAlalAlalAlAv9wÁvP‘SlAlAlalAlAlAlAlAlaslAvÁ¤Ó”9¥9¥srà6·I7«U7K@â¡Þ!ÚÁNÂâÁ^"ÚÁ&Ú¡+¼¡¼AâAä!ÚÁÂâÁâÁâÁF⺢¼A FBâÁâ¡ Bä!¼!Ú!Ä!ÚÁâ¡âÁþNBâÁÄá$Ò!Ú¢¼A ¼A ¼AF¢+¼!¼A ¼Aâa$Äá$^ÂNÂâAâÁ¢¼A ÄA¼A ¢âÁâ¡âÁâÁâ¡Þ!ÄAâÁ ÂâÁ⡼!Ú¡ ¼!Ú!Ú!Úá$Ú!ÚA ÚÁ⡼A ÚAÄFÂlÂâAâÁâAâ¡âÁ¢â¡âÁâÁâa$ÂÚA ¼Á&Ú!¼!¼A ¼AÄAÚ!¼AÚ!ÚANâ%ÄA ÂÚA J@”áÚ ¼a$¼Ä!ÚAÄA Ä¡þ ¼a, ¢ÂÚ!¼!¼!Ú¡ ¼¡¼áÚ!¼!¼a$¼¡¼A Ä!ÚA¼!¼¡+FÂÒ¡ ÄÁF¢ ¼!Ú¡+äAâÁâÁâÁÚ!¼A Ú¡ ¼¡¼!¼!Ä!âÁâÁâÁ ¢âÁBÄÁF"Äá%âÁâ¡Â¢BâAÂÚÁÒ!ÞA F"ÄA Ú!F¢ ¼¡ÂâÁº¢âAÚ!Ä!¼!¢âÁâÁ¢âÁÚ!¼A ¼!ÄÁâÁ b$$ BâÁNÂâÁâÁâÁþ¢â¡BB@7 Zà6‹à6‡à0á0á0áNáFáù0áù0áù0áù0áù0áù0áù0áù0áù0áù0áù0áù0áù0áù0áù0áùù0á0á0Á0áNáNNaaO,1á0á0á0áaOaaOá0áùNá,á0á<Á0á0áùùþù0áù<Á0Á<Náù0Oáùá0á0á0á9¥áaaOá0áNaNaNNáù0á0á0á0áÖùNÁ0Á<JáÁJáá0áùùùùa‡ÀZ…À rÀZ äAâAâÁ¢Þa$â¡âa$âÁÚA ¼!¼¡âÁâÁâÁº¢âAÂâÁâÁâ¡þBÒ¡¼¡âÁâAâÚÁ&Ú!Ä¡DÄA ¼!ÚA ¼!Ú!Ú¡ ¼¡¼!¼¡âÁÂâÁâÁ b$¢¢¼!¼¡âAâÁÚA ¼¡N¢ÂÚ¡ ÚÁâAâAÂâÁ ¢âÁÚA ¼Á&¼!¼!ÚA Äá$¼¡Ò¡ ¼!Ú!¼¡ ¼A Ú!¼a$BâAâAâÁâÁâÁâÁâAB BâÁÚÁÚÁÚÁNÂÚÁâÁ⡺BÚ¡ Ä!ÄÁ&Ä¡â¡â¡âA¢âÁâþAl¢ ¢NÂÚÁFÂÚ!Ä!¼¡¼!Ä!ÄA ¼!Ú!Ú!¼¡0¡þ  N",!Ä¡+FB Ä!Ä!¼¡Ä!¼!Äá$¼!ÚÁlÂNBNb$â¡â¡ Ââ!ÚÁâA ÂNBâÁÚA ¼!ÚÁâÁâa$ ÂN¢â¡¼AâÁNÂäÁ¢âÁN¢¼!¼!¼!Ú¡ ÚáÚ!Ä!¼!ÚA â%¼Á&Úá$ ÉâANÂÄ!Ä!¼!¼!Ä¡ ¼A¼A ÞÁâ¡Þ!ÄÁ&Ä!F"þ¼!¼!Ä¡ Ú!¼A ÚA Ú!Ú!^ÂÄ!¼¡¼¡âÁâANÂâÁâ¡âÁ Ââá%ÞA äAJ€ç{Þç{>DàçK@x>†é“^é—žé›Þ韾éE ç{>¦Þ꯾çC`êCë±^x>DàêCÀêC ë{^¦^ΞíÛ¾çC@¦>DÀêE çE`êC B@º>J@Ø>x^Î>J ¬>z>¦>J ¬^x^x^ܾDÀêEóCóK x>D â¡â¡âÁâ¡Â!Ä!ÚÁâABâ¡þâÁâAÂNÂâÁâÁÄ¡ ÚA¼¡+Úá$¼¡Ä!ÚÁâÁâ¡ ÂÚ!¼¡¼A ÚA ¼!¼A ¼!Úá⡼!ÄA ÂâÁÂâ¡âÁÚÁÄ!¼!Ä ây‹ÏÁv㉋ç-¡·xÞây#(.ž·víâµKÈ‘ 7Œ ½ôÏ[ãµóÖÎ[Boí¼%ôÖÎ[Boí¼%ôÖÎ[Boí¼%ôÖÎ[Boí¼%ôÖÎÛÀvñ¼µØn ·xâÒ%—Ð[þôO\¼vÞâ=Œ'N^¼vâ>|xÐÛÁvÞˆz'O\oÄ£Þˆ‡7&è õÍ ôF<ä!¶#DSŸ8Ôçxˆ#íðþF<¼¢ÅÃñ°„ú¼‰xxc‚ñ šÛñŽv(°ïh‡ÛñŽv(°ïh‡ÛñŽvLÐíP_;Ô׎1ÆC툇7ØŽxxãíPŸ7âávx£êkG<Ú¡¾vÄ£ñð†Û‘õy£Þˆ‡7Øz#Þ˜`;âÑyx#êkG<¼ÑoÄ£êk‡ú¼1Ë@¶#òG<Ú¡>o´Ãñð†½oŒÑñG<¼oÄÃéP 8&ØŽxxC}Þˆ‡7â!Žvx#Þh‡7Òq´#âˆG;¼Ñõµ#ÞP`;Ôç õyCò0‰o¨Oñ Zþ<¼oLP ô†ú¼ÑoÄ£ñðÆÛqx£êG<¼v¨ÏRóF;â!5ÊÃcôF;¼o(°ñðF;âáx´C}Þˆ‡7â!Žx´C}íP`;âá1¶C}ÞˆG;ÔçxˆC}툇7Úo¨Ï툇7Òq¼£ñð†<Ä¡>o¨Oéh‡7Ú¡>oÄ£êG<¼v¨Oé‡8âáv(Ð툇7Ôç õy˜ôF<¼Ño¼£ñh‡Û¡@yˆCâPŸ<¼A4yˆ£ ôF;âáxx#í¤7ÚoÄC‡úä!Žx´#Þˆ‡8þ&(Žxx#☠8Ôçxx#âPŸ8Ô'q¨¯Þ šÛáxx£ G<¼ÑoLÐôF<Äáv¼#íˆÑ&èvÄC鈇7Ô׎xx£ l‡<Ä!ŽvÄ£ñ‡ú¼oÄÃñ‡7Ú¡@qx#∇7ÒÑŽxx#íPŸ8ÆØŽ z£ïhG<Úo-툇7B`‰bü¡ âˆG;Ô‡ oÒñG<¼¡>oLÐê‡<ÒÌvx#íðF<¼1Ëv¨¯êk‡úÄ¡¾văhÞ š7Ô×qÄ£ÞP`;ÒÑoÄÃñG<¼oÄ£Þˆ‡8âþáxx#íðF<Úávx#ÞP_;¼qăhñð†úÚ1Fqăhñð†Û¡¾vxƒh∇7&èxˆCÞG;¼oÄ£ ô†Å¡>q(hêóF<Ú1Ao¨ÏñðÆßÑõµ#íðF;ÆØq(°Þ š7âÑoÄÃêkG<ÚÈv¤£Þ˜`;Ô×õy#Þˆ‡7â!õy£ê󆥿 qÄà lG<Ú¡>qÈ£ñhG<Ú¡>o´CÞˆG:0áx´ÃíðF<Úño-íðF<¼t´ÃñðF<ÒÑoÄÃñHG;¼oÄ#íðF<¼¡þ@o¨ÏÞˆ‡7Úávˆ£ôF<ˆöŽx¤£ÞPŸ7ä!yÄÃñh‡7âá ¢yCêóF;¼vˆ#íðF<Úño¨¯ñh‡7ˆ&ŽxM}íðF;¼Ño´CôF<¼v¼£ñh‡7ˆæxx£Þˆ‡7âáxxC∇7â!yxCñð†úÚoÄÃñh‡ÛoL°ÞP 7¤ÖŽxxC}Þ‡7ØŽxˆCñðF<ÄHoÄ£ l‡7âá õ-Þˆ‡7èxx£ÞˆG;ÄoÄ£l‡úÒo´Ã ô†úˆ6KoÄÃDó†<ÔG´þ Š#ÞP 8䢉#ÞˆG:Úvð†xð† òyˆoˆ‡vðõñòõijqˆo‡xoˆoˆ¢y‡x šwPŸv‡xh‡1joˆqPŸvP oP vPŸv¤vð† ‡xð†xðqˆoˆ‡vPqˆo˜ vˆqˆoP oˆ‡vPŸvP©ñ†xohoˆoh‡xh‡ ò©ñ†xh‡xð†xhj‡xx‡x‡xh‡wˆ‡vðõ‡ j‡xð†xhoˆoˆq#oˆ‡vP¢QŸwPq‡xð†xðyˆo š j‡xþy˜ oP oPqˆoˆ¢‰oˆqˆ¢‰‡vP oˆoPoˆ‡v‡xð† ‡xð†xð†xhoˆoP vPŸvˆoˆ‡vðõñ†vHq˜ oˆoˆq¤vP vðj‡ ‡ òò†vð†v‡xð†xðò†xh‡wPqˆqP Àeøƒ6ˆ‡t oPõñ©ñ†@òõñ†x‡xð† ò†xð¢ñ†xðõiõi‡xð†xð†vð†vð†xð†xoˆqh‡ ¢Q qˆ¢Q qˆohoh‡x‡xðõ‘qˆoq˜ þvˆ‡vˆ‡vPŸv˜ vˆ¢#qˆ‡vˆox‡vˆo õy‡vˆ‡vˆ‡vð†tˆoˆqPqqPohõi‡@jõ¢Q¢ $ox‡vˆo‡xð¢ñ†xð†x yðõñ†xð†th‡xð†v˜ oˆoˆoPŸvˆoP qPqˆoPoˆoˆoˆoh‡x‡vˆqPqho oh‡xð†xð† z‡xhyoh‡x šx‡x‡xqˆoˆoˆoh‡xh‡x šxoˆoh‡xLˆ‡vHEˆoˆyõ‡tqhþ‡x‡xh‡xð†x‡xh‡xð†x‡xh‡xð†x‡xh‡xð†x‡xh‡xð†xðõõiyõ‘qð†xð†vˆoˆqH‡tqPŸv˜ oˆoPŸv¤vP oPoˆoˆoˆqˆoh‡tPo š@‡vˆo#y‡xð†xðõi‡xð†vH¢QŸvPoP oˆoˆ‡vˆohõi‡@ò†xð†x‡ ò†xð†vð† ò†vˆqˆ‡vˆoqˆqˆ‡vPŸv˜ oh"š ò†vð†xðõ‡vð†x‡xhõñ†x‡vˆ‡vþˆ©‰‡v#yò†xð†xoˆq˜ o õñ†x‡xð†xð†vð†vˆ‡vqPŸvˆoˆqð†vˆ‡vˆ‡vPoh‡xh‡x‡ ò†xh‡x‡xh‡xh‡xðò†xðòò†xhoˆoho£vPŸvP¢‰oˆqhoh‡xðõñ†1ò†xð†xðoˆoh‡xð¢ñ†x‡xh‡xð†Yjõ‡xh‡xh‡xoPyð†xð†xðò†x‡vð†xõi‡xqˆoPooPŸvˆqPŸ‹‡w šxð†þxð†vˆy‡vˆoPoP ohoˆoˆoˆyðò†xð†xðõ‡xð†wh‡xð†xðõ‘oˆoPŸvP vˆ‡vˆohoˆqP v𢉇vˆoˆ‡v˜ vˆqh‡ j‡xð†vˆohyð†x šxðõñõñ†1j‡xðõiõñ†xoˆqhõõñyõ!jj‡xð†xð¢Q qˆoh‡xš ò†vðy‡xðyy‡xð†xðõñõñ†x¢Q oˆoK(†?hƒxÂoˆqˆqõñþ†xðõ!šxðyPoˆoyð† òyð†x‡xðqPo‡ j‡xh‡1ò†xð†vP oˆ‡vP vð†xhy¤v¤vˆo šw‡x‡xð†xð†xð†xhoˆ‡vð†xho‡xh‡ joˆqˆoˆ‡t‡xh‡whõñ†xh‡Yò†x‡xhqˆoˆoho‡1zoˆ‡vxoˆoˆoˆ‡tˆo˜ qPo‡vˆqP¢‰oPqPqˆoˆoˆoˆoˆ‡vðqPoˆq‡xh"šxh‡xh‡xðõi‡1þj‡xyj‡ "oˆoˆ‡vPqˆ¢y`ò†xh‡x‡xhoˆq¦tP„x EˆoP v˜ q˜,_þeo¢Q vP oP vˆq‡1jõñ†xhoˆ‡vP oˆqˆoPŸvð†xhoPoPoo#qˆoh‡x‡xð†xð†xð†vPoˆoˆoˆo˜ ooˆ‡vPqˆ¢y‡thoPŸvð† jqP oˆqˆ¢ñ†xhj‡xh‡xðõiò†vð†@‡@jqˆo‡xð†xh‡x‡xð†x‡xhoˆ‡þvP oˆ‡vð†xyhõ‡xð†1jo‡x qˆoˆoˆ‡vPoPoˆoj‡xðj‡wðj‡xh‡xyˆ‡võy½xyPoˆoˆoP oˆoPohõñ†xhò†xð†xð†xhòjoh‡xhõi‡xy šw šwšwð†x‡Yò†xð†xh‡xðõñ†xhoPŸvˆ‡vˆ‡vHo#oPŸv#oˆoˆoˆ‡vPqˆ‡vˆ‡vˆ‡whoˆqPoˆ‡vP vˆ‡vðõi‡xyPŸ×k"zþõñqP o‡xh‡t oˆ‡vPo#oPoˆoˆq‡vP o$o‡vˆ‡vð†xhõioˆ‡vˆoˆ‡vP vð†xð†xð†xð†xðjõioP vð†xð†xh‡xxohoˆ‡vxõio oˆq£vjõiõñ†xhoˆqPoˆqˆoˆo‡xð†Yò†xho qˆoˆ‡vð†xh‡x‡xð†vð† òqˆqˆoˆoˆq‡_އvPqPoqˆ‡vðõIõ)LP†?hƒvˆ‡vHoP„1þj‡xðyð†xð†x‡xh‡x `johj‡xhjõñ†xð†x¢QŸvð†vˆoPoˆoPqð†vðo˜ oˆoh‡xð†xð©I‡xoˆ‡v#oˆ‡vˆ‡vˆ‡vP qPqP qð†vð†x‡1òõñ†vˆq õ‘qˆoˆo˜ qˆ‡vˆoqˆyð†vð†xð†tPoPooP oPŸv˜ vPqh‡xh‡x‡xhõi‡xðõñyð†1’qˆyð†v˜ oˆošxð†vˆqP oˆohqˆo$þoˆqˆoˆohõiõz=oh‡xh‡xð†Yj‡ "šxð†xð†xð†x°„kKhõñ†xoˆohò†vð†xð†xð†vð†xð†xð†vð†xð†xð†vð†xð†xð†vð†vˆ‡×ó†xoˆoˆoh‡1ò†vð†vˆqˆoˆ‡vPoˆoh‡ j‡xhoP qPŸvPŸv˜ vð_ö†xðõñ†v£vˆ©#qð‡x‡x‡xh‡x‡xh‡xð†1ò†xhõõñ†vˆoˆqh‡xðõñ†vˆo#oho šxhþ‡xð†xð†v˜%oP vˆ‡v˜ oh‡xðõ‘q˜ qP vPoˆoˆqP€hO\¼‚Þâ½kÏ[í ñà ñÐñÐuÒÒò ñÐuâ ñà á uâ á í -âÞÐñ íñÐuâ ñà é â -íÐÞ)âÞÐ á ñà ñà ñà þñà ñà ñ  !ÞÞò ñ í†âé  á á ê í)Þ -Þ)âÞÐâÐÞò  !ñÐã ñÐâ ñÐ !ñ ñÐuÒÚ"éÞÐuâ íñà %ÞÞÞÞÐñà ñà ñà Ócã ñà ïP'ÞÞâíÞPñà %Q'ÞÐâp(éÐñ ñà á íÞP'íÐ8ÞÐÞÞÞp( Ññà ñà uâ ñ VÓñà è ñÐñÐ ÑÞÞÐÒþâ ñà %âà ïíÞp(ñà ñÐur(âp(â íà á íÐíà ñà ñà ñ ÞÐñà á Ú’ñà Ñ á ñ uâ í%Ñ8%Q'ÞÐÞÐÞíÐâíP'íÐÞ -âà ñ ñðu"íÞÐâíÐÞÐíâðíÞÐÚâ á ñ ò  á cã ‡òà %í âÐ8íÞâÐÞíP'ÞÐíð )íò ííÞÐÞ âà ñà !ñÐÞÐñÐâ %þÑÞÞÞ â -ÞÐÞÐñà ñà uâ íÐÞÞÞÐ á ñÐu"ñp(ÞâP'âí -íâÞÐé`5ÞÞí Þ%ñíÞ -ÞÐñ íÞÐÞÐ ÑÞÐÞP'âÐÞÞïÐñÐñðuÒ !é)ííÐâÐñ ÞPÒÞP'â)âp(ñÐò ñ ÞÞP–° ÐÒŠÐíà Òñðñà òà %á ñà ñÐéÐâíðÞ ñà ñà ñÐâÞÐþÞÞí ñà !¯]»wñÚÅCo ·xíÄ%lç­]BŠñÄÅóO\ń޶K(.ž·xâ¶Ï[ÆóÏ[;oñ¼ÉóÆÐ[Æó¯]CyâÚy‹çícâ †x#Þ`H;´ÕŽx´ãñðF<¼oÄÃñðF<>ÒoÄ£ iCÄo´ƒ!í`H;¼ˆ#íðF;ÒŽx´#â`ˆ7âáxxC[Þˆ‡8âá†x#ÞˆG;¼vˆ#yG<Úo4Ä G<ÒÁohëÞˆ‡8â!yx#íhˆ8â m‰ƒ!aˆ8¼o´ÃñøH<ÚtÄC iG<ÚávÄ£ñhG<Äo´ÃñhG<Ú±-olËñG<¼v¼ÃñþG<¼qÄÃÛòC¼!Žxx#íðF;¼Ño0$íH‡7âávxƒ!íðFC>²­vÄÃñðC¼oÄ£∇7Úoȃ!âhH;¼qhËñhG<¼ÑvxC'Þ·¼vÄÃñøH<Úá †x#Þˆ‡7Úávxƒ!Þ`H;ÄvP®ÞøH<ÒÁ`BhC¼o("âh‡7(Ç-oÄÃíˆG;âáxx£!툇7â!Žxx#é`ˆ<¼Áo´#∇7âцˆÃñG;âáx´CÞˆG;âáx´C[âhG<Äá mµÃí`ˆþ8¼oÄC iG<Þцx£ ñF;â!Žx¤ƒ!ÞÐV;Òmµƒ!ñF<ÄÑŽx´#âðCÚá†xC[∇8âñ‘xx#Þˆ‡7âá ÄÃ8>âvÄÃñðF<¼ohËñðF<Ävx£Þh‡7tÂo4ä# ñCÄ¡­h«ñhG<¼ÑŽmé$íˆG;âáx´#í‡8tql«ñðF<ÄÁ4DÞˆ‡7ÚoÄ£ ñ†"âÑŽt`"ÞhǶÄÑŽx´#ÞhG<ÄÑŽx´CâhG:âцx#íhˆ7â!†xƒ!Þˆ‡7þâávÄÃñ‡7âávx£ñhGCÄávx£ iGCÚvp«ñðF<¼ÑŽxÈC툇7´åvxƒ!í`ˆ8"qÄ㉇7´%†´ÃíðÆG¼Ño¤#âˆG;âñ†x£ñhCÄÑŽxxC' ñ†<Äv0DÚòF<¼oÄÑ)·Äo´ƒ!ÞhG<¼±­vģܒ‡8ÂÕŽ†ˆ#ÞhG<¼o´ƒ!‘‡8âÑŽxxƒ!ÞhG<¼Ñ†x#âhCÚÁv0ĉÇGâ!qx£ ñF<¼Ñ†ˆ£ñðF<Úvh«”óF;âþÑŽx´#âhG<¼¡oÄ£ ‘‡7¶ÕŽxˆÃñðCÄÑoèDÞ`ˆ7ÚoÄC2õF<Äáw´#iH;âvpK'ñhG<¼ÁwhKéHǶ¼¡-q0ÄñðF<öÄvÈCÚG<¼Ñ†´ƒ!ÞˆG;âáwè¤!íhÈGâáÄ£ ñF<ÄqÄ£ñG<ÄÁ­vÄÃ툇7â †x£áòF;"qlËíðF<¼Áq0¤ñhG<ä!ކx#âhH;Òo0ÄñðF<ÄÑŽxx£ ñF<ÚÁohKñðCÚ4ÄÜòF;âþx´ƒ!íðC>Âyˆ£Þ`H;âñŽx´#Þˆ‡8ÚÁvhËòGC>vÄCñðF;ÒÑo´ÃñðF;â!q´# ñF ,QŒ?´¡ñðF<Ú o0ÄñðF;¼oÄÃñðF<¼Á-q0Ä ùˆ7¶ÕŽx„#íˆG;â†xCñhǶxC<´C<¼C<´ƒ80„7ˆCñà î!Ñá ââ Uá ñà á já òÞPÞ ñà ñ ñÐÑ$¡ñà ñÐU!òà ñà â0â0âÞ0íí0 1Þ`íà Ññà ñà ñï`â`íà Ñâ Þí0í0Þ òà ñ òþí ñ òà ñà í ñБÞÐÞ0ÞPí`ÞíPí0ÞÐ$ÑñÐÞÐÞ ÑÑïà ñÐââ@ 1âÞ !!!ñà ÞÐÞââííÞí0â0âÞ  aÞíà Uá á ñÐñï á âíà ñ ñà ñÐ!$á ñÐñíà ñà ñà á í á ñà á á ñÐ$á jÑ(ç á já í0%€ Êðm ñ€>†íâþÞ0âÐñ ñÐÞðÑÑñà ñÐU‘á ñà ñà ñ $!ñà í0 aâÞ0âí`Þ`í0âÞ` âà á ñ ÞÞí`íà ïÐñà ñ ÞÐñà íâíà íò  ÞÞÞÐñà ñ ñÐ(7ÞÐñ!Þ0ÞÑÞÞÞОí`Þ`íâà ñà ñà íà Ññà íâÞÐñ Þ0íÞÞ0í âÞþáâíÞ@òà ñÐ$á íà í âíÞÞÞÞíÞÐ$á ñà Ññà éà ˜Ðñà Š`ÞÞ0â0Þ âÐñ ñÐUññ íÞÞÐÞÐîá ñà ñà ñ á Þ`Þ0Þâ0íí0Þíâà ¡Þâ`í0í0ÞÞ0Þ0í0í`ÞÐÑá í0ââÐá íà á íÞñ Þ€râ0âÐñá ñÐñÐñ â0âþâ0Þ0í0í0Þ0 â@ AÞÐÞÐá í jÑñà íà ñà ñà ñ ÞÐÞð á í á UÑ!á ñ ò ñà ÞÐñà ñà ñà ñà ñà á !Þ0ÞÐñà ñà á ñà U‘ÞÐÞÐòà ñà ñà ñà é aÞ0ÞÞ0éPâÞ0ÞÞÐïÐñÐÑñà ñà í`í0íp3ÞÐñ ñà íÞ@Þ`Þíí0âÐñà í`ÞâÞÞþ@Þñ î!ÑÑ‘ñà jÑá íà á á íÞÞâðííÞÐá $!Þñ Þâñà !ÞÐÞâ !Þ0í0í0íïí ïÐñà $!já á íà ñà ñ ÞÞò ñà ñà 1ÞÐñà ñà í`Þ í@í@Þ`ÞÐéâíÞí`ÞâÞí0 íÞÐÞÐñÐñà ñà ÞÞÐÞÞÞÞÞþÞÞÞÐñÐñà %` Åðm0ò í€ Þí 1â í0íà ñà ñÞ@âñ¼Åkç-^;oíây‹×.ÞÃví¼µ‹×îa¼wÞÄÅó¯Ý;oãE|øÎÛÅvÞâµóÖxÞÄÅó&ïa»xíDÆÏ[¼vñÒµó/ÝÅvÅÉéMd;o;ÅíŒ×Î[õÅÃñðF;¼Àvx£ÞH‡7Äáx¤cé°^;¼ÑŽx¤£鈇7Lét´ÃñP_;Ò!Žvx#Þˆ‡7âáx´#ÖóF:âátx#ÞhG:¬'Žvx#Þh‡7¾vÄC}ሇ7Úáq¤ÃéˆG:âátÄÃé‡7¬—Žvx#ñðF:@o„ÏãHG;ÂoŒ#|L‡7Ú1Žt¨¯éðF:Ôo0|Þh‡úB˜o´ÃãHG;⡾v¤Ãâkþ‡7ÚoÄÃéhG:Ú1Žv€ÔÜ㈇7ÒáxxCñPß8ÒÑŽxx£mÇ8Ò1Žtx#ñhG<ÒqŒ#ÞH‡7Ò!Žv¤#ÞHG<¼±Do¤£éhGø¼!¾x¤Ããh‡úÚŽvx#Þ‡7Ú!Žvx#ÞHG<Ò`Bhƒ)㑎vè¼ÖóF;ÄqÈCò0¥8t޷ÔÞ0¥7tvLÝz툇7âá «‹Ã”ÞÐy;¼aõv˜²ñG<¼aJqè¼ÖóF;ÄqX¯ñð†õÚ!Žxx#í°ºõÄ!x´CK4e;¼aÊvX¯:÷†þ)ÓvLÝòÐy:¼¡óvÄ£éhG:LÙSz#Þˆ‡8äaÊvXÏñh‡8â‘S.1∇7L)Ž©·ÃÖk‡7â!ŽxˆCçâ‡)ÓvÄCñðF<¼t´CÖ{‡Î½aJoÄ£¦l‡õ¼qÈC¦l‡)½p¾Ö‡<âÑo˜RS‡)Û¡óvL}‰íyH‡xh‡xð†xX"qˆ‡ŠŠ‡vˆoˆ‡%y˜ºvˆ‡v˜:o0¥v°o°žvˆ‡vˆoˆ‡t<ëi‡xð†©këñ†©ko°ºv¤ƒ7ă7 „8 D;ă7ü„8 „7ȃ8 „8ă7 „8ă7 „7@Ä@´ƒ"´C „7ă7´C<´C´ƒ7ÄC; „7ˆƒN´@¼óþ`Áxíâµ#Ø.ž¸xíâµóÏ[ œAˆàâÁÀÚá,Z€°áp€¼Á€Ú!¼!¼!Ú!¼AâAÚ!¼!ÚÁ ¢¢ Âä¡Â Ââ¡¢ÄA¼AâAâ¡â¡âÁâ¡)Ò¡¼!¼!¼AâÁâÁÄ!Ú!¼A¼¡ ¼!¼¡ ¼!¼!¼$¼!¼ ÚA¢¼!Ô²¼!Ú!¼!¼¡ÂâÁÚ!¼þA¢ ÂÄ$Ôò¼¡)¼!Ú!Ä!Œ¤ ¼$¼ ¼¡ Ú ÞÁÂ⡼¡ ÚÁâÁ¢f«¼!¼¡Bœ¼x½ôÏAoíÚy#è Doò$z#ØÎ[¶“è-ž·xÞây‹'.ž¸xí¶óF°8yãµó&N^»¢L½ÅkÏ›"q´Ã%ñF;$Ò‚´ƒ òG<¼vÈÃñhG<¼AoH¤ÞhA¼Ño4ÄïH;â!ŽvÄ£ñ†DÚvÈÃñÅ>ÚvÄÃñðF<ÚAoÄÃñðF<¼AoÄÃG<¼Ñ‚ˆC"∇7âá†Dâ‡8¼qÈCñ‡7q4$ÞhH<ÄÑŽxx#Þh‡<Ä!oHÄò‡DÚoÄÃñðþF:âщ4D"íˆG;âÑŽx´£(Þˆ‡7J€‰bü¡ Þh‡8âÑEx#í(Š"Ä!‘vxƒ íˆ7ÄvÄÃíðF<Úáx4ÄñðF<Úá qÈ£ñðF;â ‰X" !ˆ7$’ xȇ3 ‚8Cñ†3ƒoÄ#âhG<ªxÃðF<<ŠD`½x‡3à©x8cí ˆ3`üFípƾvxƒ Þˆ‡7ÚvxCñFQ¼AvÄñG<¼vx#ÞAÚñoÄ£âh‡7ävx#íAÚq¤Þˆ‡þ7ÒŽxx#íðF<Ú!oÄòˆ‡8âÑoÄò ˆ8âÑŽx´C"íðF;ÄAvxƒ ÞˆG;Ävxƒ íðAÞÑxˆã# !ˆ8"Žxˆ#Þˆ7Úá ‚ˆ#ÞˆG;>âxx#íW:ÚñoÄòðF<Äv¤ñð†<¼!oÄ£iˆDÚá qÄCñð†8Š"Žx´#éG<¼o´#í‡<¼o¤ã‡<"ŽxxC"â ˆ8âávÄCñF<¼oÄ£!Þˆ‡7ÒŽxxCñF<¼oÄÃñðAÚ!Žxx#툇7þâÑŽxˆƒ íˆÇ;¼oÄ£ÞhAÚ†HÄòðF<<%Ž´£(鈇7âáxˆC"툇7âÑo¤ï HC¼o´ƒ íðF;>ÒŽxˆ#â H;$âxx#Þˆ‡I¼qÄ£i‡7ÄñoÄÃñðF;¼vx#Þøˆ7ÒŽxx#Þˆ‡7äqȃ âˆG;âxxC"âˆG;¼!‘vx£ñF<¼qÄÃâG;¼!x´#툇7Ä!†Äà ñFCâ!yÄñðÆG¼!qH¤ÞG<Âá ‚´ƒ)í HCÞoÄñh‡7âþáxx# ñF<Úávˆ#Þˆ7Úá ‰ˆCòˆÇîã!y´Ãíð†DÚvÄ£i‡DÚñŽv$ñAÚá ‚x#Þˆ‡7âá yÄi‡DJR”wÄCñðF<Úáx´ÃiG<¼vÄ£ñðF<¼AÞ A â â Þà ñÐïÞ á ñà ñà ñÐñв°ÞÞííÞ òÐñà ò@ Þ  ñíà ñÐÞ Þ âÞí0.!ñÞ@â Þíâðíà ÑÞ ÑþñÐá ñà ñà ñÐÞÐââíà ñÐÞÞ@é@%ðÊðmðé€ !ñà íà ˜@ÿÐÞÐá ñ Þâ0.Þ@Þ í@â »GÞÐá í ñ ñà ÑÞÐÉßà ÐÎËà ñ  â`°0 !âà ãð ð Î0ñà ñ  p ˜ ÎíÞà  ÞÐÜ@ËÀ€ñíà í í@ò íðí ÞÐâ@ÞÐñà ñÐ!âðÞâÞíþ@â í Þ Þííâí@Þí@â@âà íà ÑÑ!ñà í@ÞÐñà íâà íPíâ@í@â@â@Þ@ Hâ@ÞÐÞð&ïÐEá ñà C(ÞÐÞ@í@âÞÐÞÐÞÐñÐÞÐÑL!ñà ñÐÑñà !ÞÐñ ñà ñ ãâ ñà íÞÐá ñÐñÐñ EÑéÞÞÞÐñíð 1„Ñá ñà ñ ñà ñà ñ Ñ!ÞþíÀÞp™á ñ ÞñÐ!ñÐñÐñ ñà íðÞ ÞÐ!íà ñà ííP á ñà !!íà ñ á ò ñà ñ âà ñà ïPíà íð íÞÞâÀâà íÞðÞÐá Ññ Þ âà ñà ñÐñ í0. A ÞíÞÐá Ññà á ííí`"íâÐñ Ññà EÑQññà ñà á í@ÞÐ&â íÞÞÞÐñà Þþ ñíÞÞâíðÞ@íà ÑÞðšÑñ íÞÐñPÞÐñ ñà ñà í !í íííí@ÞÞÐÞâÐñà ñÀ€L!!á ñ á ñà ñà ÑñÐñ ñà ñ !âà á ñ ÑÞÐñÐñÐ!Þâ` ÿí@ââÐÑá í%ÞÞ â`"ò !ñà á AÞÐïíà Ñá íPíÞ íÞâðÞÐñþ í@ííí`"í âÞÞá %€ Êðmà íà ñŠà ñБÞðû@Þ@í@í ÞÐÞÞ@Þ@ÞÞÞðí í@íà јà ! !É ßà Î@Fà Ú`>ÐñÀð q ßà Y€ ßð 8àñ  ° íÜËç€Î0Þ@ÚË ñà -`×à ÕÀ Þà ÐÞÞíà ÑñÐÞéà í íà ñ á íà ÑÞÀÞÞÐá þñÐÞÐÑÞ@ÞÞ á íÞ ñÐá ò íà ñà á EÑÞPí ÞÐÞÐâ Þ ñÐñÐïðÞðÞíðéÐâíà íðé@ííà ñà á !òÞÞÐñÐ&â ñ òÞÞíà ñà íà ñÐñà ñÐÞíà ñÐÑñÐEá ñà ñÐÞÞðâí@íÞ á ñà ñÐñà ñà ñà !ñà)â@ïà ñÐïà ñà ñà ñà íà %áþ !òðí%á íííà ñà ñÐÞÞÐÞÞÐÞ@í í ñà Ñï Eá ñà ÑñÐá Ñ!ñÐÞíà â@â  AÞÐÑñÐÑñà ÑñÞÐïà ‘&ñâíà ñà íðíííà á ñà ÑÞâíÀíÞâÞÞÞ%ñÞâ@í á á ñÐïÞÞââíà ííà íà !ò íà á íà ñþÐÞ`íá ñà ñÐñá ñÐÞÞÐÑñÐñà ñ !ÑñÐÞÐÞíðâ á ñà ÑÞ òÐÞí@ á %á ñà á ñ !!ñà âíâ@íðí ñà ñà ñÐÞ !ñÐÞÞÐñÐLá ñÐá íà ñà á á ñÐñÐÑñÐÑÞÐÞ ÑÑñà ‘!ñÐÞí ò@íà âÞ ñ ò¹°ñà L‘íà íà !þñÐÞ ññÐñà ÑÞÐÞÞ ÞíÞ âÞ@âÞ éà âÞâÞÐÞâ@ÞÞ LÑñ ±{ñÐÞÞÞÞÞÞÞÞÀÞÐC ßm@ò é€ ñ`Þ@ÞÐñà á âà ñà ÑÑÑòà ñÐñà íÞÞ@âà ñ á â ñÐÑñà íà Éíà ÐÎ0jð Þ¢PËPòp3À 600(° ! €Œþjð!ePñà @íR í`HOÐÎ0á !ñà íà ñà á Ññà ñ á ñà ò á í@ÞÞÞ@í âÞÞò ÞâÞÐò á ñà ò !ÞÐéíÞâí@â@ÞÐñà á íà ñ íí âðïÐñ%ÞÐÞÐá ñ !ÞÞÐò !ñÐñ ñ íà íâÞðíà !ñÐò ÞPÞÞÞþðÞ ÞÞ@í í Þ â âÐñðíâÞÐñÐñà ñÐEÑÞ âà ñ í@íííÞÞÀíÞ íà !éÞ ÞÞ íâíí@ ÞÐñ íò ñà ñà ñ á Ñá ò ñà ò á íPí@íà í@ÞÐÞÞííâà íÞÞÐÞÐñà ñÐÑLÑñ ñà á éÐñà ñà žòÑá á á ñà ñðíþâà éÐ!âí@ÞÐñà íâà á ñÐñÐÑ!ñà éíà ñà EÑòà ñðíâá íðÞ@í@âà)òà L!á ñ â@ÞÐñÐéÞ âðâ ñ íà í ÞÞÐÞñà Ññíây‹ç-ÞÁƒÞÚµ;è-ž·xòÄÅó¶Ð[»ƒ ½Åk¯]ÚvˆÄslG<Äávˆ¤éxG<Äšƒx£&ÞXH<¼!qDñðF<Äq d!ñh‡7âáxx#툇7âá µã íðF<ä!Žxx#¨‰‡7"oÄÃYÈAÚqyˆ#òðF<¼Q‚kPCm˜c<ávx#éhG<Úñ}ˆ#ÞˆG;ÒŽƒx#íð†8â!Žx¤C‡<â yÄ£"iG<ÚqE¤þÃ5IF40‹y#¨ñF<¼ÑŽt´ÃYˆ8âÑ„´ÃiG<¼Q“…xã.ÞˆG:Ú‘oÄCñðF<‚ v d!Þˆ‡8äÑ‘´#íˆG;¼!’v¤ÞG<¼oÄ£âI;¼o´!ï8H;âÑoÄÃñF<¼oÔÄiGMÚqoˆ#ÞˆG;â!Žxx£ñBÚoÄÃíðF<¼!o´ÃñÆAÄvx£Þˆ‡8âáƒX„‡ƒh‡xð†x‡xð†xð†ƒð„ð†xhoˆo8oˆoˆoˆoˆ‡v8ˆv8ˆvð†xþð†vð†ƒð‘Xo8ˆvð„‡0yh‡ƒ‡xh‡ƒð†xð†xð†ƒð†xh‡wð†ƒyˆ‡…ð†zi‡xh‡ƒ‡vð†xh‡xðyh‡šx‡xh„ð†šXoXˆwð‘ð†xð†vð†šh‡xð†ƒ‡ƒh‡xð†vð†vˆoh‡xho8o@oˆq¨ qˆ‡vðqˆ‡vˆ‡vˆoˆo‡šð†v@o8q@ˆvˆ‡vˆo@ˆvð†ƒhoˆ‡vð†ƒh‡xhq‡xXo@ˆv‡xð†vð†ƒh‡xðy8oˆohoˆ‡vxo¸ o8ˆv8ˆþv¸ o‡vˆoˆ‡…8o8oh‡xy8ˆv¨qˆ‡v‡x‡xyˆoˆoˆo‡xXoˆ‡vð†ƒyˆ‡…‡xh„hoy„ho‡ƒh‡xð†x‡ƒ‡xð†vð„xoyð†»h‘h‡xXoˆoˆ‡vˆ‡vˆoˆo„‡xh‡wð†ƒð†xð†xXˆxhoˆq@ˆv8q8o ohoˆ‡v‡xð†xð†ƒho„„ð†xhoˆ‡vˆ‡vˆ‡vð†xð†xhohohoˆoˆoho8ˆ…ˆq8ˆvþ qˆ‡…ˆo‡ƒhoh‡ƒh‡w8ˆ…xoˆ‡v oˆqˆ‡v@oˆo‰v8ˆ…ˆ‡v‰\Øoˆ‡vð†xH‡ƒ‡xhq‰vð†vð†x‡xð†x‡xXˆƒhoˆo@q¨‰v@ˆv oˆqˆo8ˆvˆo‡v‡ƒðyˆoˆohoXoXˆƒH„h‡xx‡vð†ƒ‡xhoh‡xh‡xð†xðqˆoˆqˆ‡t¨‰t8ˆ(†bP†6XˆxoÀ„ð†xoh„ð†xð†vˆoh‡xð†ƒ‘H‡ƒh„ð†v@qhoˆoþˆoh‡xð†xð†…Àq8ˆvð†tˆoˆqˆ‡t@qˆqˆ‡vˆ‡v@oh„ð†xð†xð‘‡vqð†xhoh‡ƒh‡xð†xð†ƒð†šoˆ‡w@xð†vð†vˆqð†vð†vˆy„ð†xð†x‡…ˆqˆoˆoˆqð†v¨‰vˆo@oh‡x‡xh‡xðy‡xµƒð†…8ˆv8o8yð†xh‡xð†xð†ƒð†vˆoˆoh‡xð„h‡ƒ‘Xq8oh‡xð†xð„‡ƒð†xðy‡ƒh‡ƒh‡xH‡xqˆ‡v@ˆþvx‡…ˆoh‡xho¨‰vˆ‡v8oˆ‡vˆo8qˆ‡v8oˆoˆoˆ‡v8qð†x‡x‡ƒh‘h‡xð†vˆo@ˆ… o8ohohoh„h‡xh‡xx‡…ð†xh‡xð†xXˆƒð†èò†th‡tˆoˆqh‡xð†v q8ˆ…ˆoXoˆoh‡xð†v@oˆoˆqˆ‡vˆ‡v8oˆoo oˆ‡vˆqh‡ƒh‡xð†tˆ‡vq8oqð„ð†xð†xð„h‡xð†xh‡xh‡ƒoh‡x‘h‡xð†…ðyoˆqˆþ‡…@oˆoXˆxð†vð†ƒho8ˆv@oXˆƒXˆx‡xð†txñ†xh‡xXˆ»ð†v@oˆoˆoˆoˆqð†xohohoh‡ƒ‡v8ˆvˆoh‡ƒy„ð†…ˆoˆoˆox„h„q8oˆo oˆq‰v@oˆqˆoˆoh‡x‡šh‡x‡ƒhoˆo8y‡voqˆ‡vˆo¸ oˆoh‡ƒðÔˆoˆq@oXˆxðyð†xh‡xh„‡v8oˆoˆo@ ‘H‡vð†xð„ð†ƒð†t¨ qþˆ‡tˆoˆoˆq8ˆwXy‡xð†ƒ‡ƒox‡v8ˆvˆoˆyy‡xð†xh„h‡tˆq@oh‡xð„ð†x‡vˆ‡vx‡vˆy‡xð†vH‡vð†xð†ƒh‡xð†vð†v¨ oXˆxh‡ƒð†vð†vˆqh‡xð†…ð†vYø‡ƒ‡xð†xX„h‡wh‡ƒy„h‡ƒqˆqð†v8oˆoXˆxð†xð†xð†xð†xð†…ð†xh‡xhy‡ƒð†xh‘Xˆƒðyð‡xðoXˆxð†x‡ƒh‡w@ˆvˆqh‡z‡þth‡xð†t8o(eP†Whq@ˆvÀo¸ o°‘„ð†xX„ð†v‡xðqˆo8qˆo oˆ‡v8oˆo8ˆvHKˆoyˆoˆ‡tˆ‡tˆoˆo¨ oˆoh„ð†xh‡xh‡xð†xð†xð†v¨‰v8qˆoˆoˆ‡vˆo8oˆoˆ‡…ˆ‡iqˆ‡v o„‘ð†ƒð„‡xð„ð†šh‡ƒð†xh‡ƒho@o8q‰v@o8ˆvð†x‘Xˆxh‡xð„h‡ƒ‡ƒð†ƒð†xð†ƒ‡xh‡ƒh‡wðq8þˆv8q‰vð†ƒXˆxh‘ðqˆoˆoˆo‰wð†xh‡t‡xð†ƒð†ƒð†xXo‡xh‡wð†xh‡xð†xh„‡xð†»‘h„ð†xhohoXˆšð†xð†xhoˆoh‡xho¸‹vð†v‡xh‡wHq8ˆv@ˆvˆ‡vð„ð†vð†xð†vð†vð†vð†x‡x‘‘ð„˜#oˆq8ˆv8o8ˆvð†vˆo‘x‡tð†ƒh‘ð†xh‡xð†xð†x‡xð†xh‡ƒð†zio o‡ƒð†xð†xð†xðq8ˆvˆqþ8ˆvˆoˆ‡…ˆq¨‰vˆ‡vˆ‡vxoh‡xhñ†xh‡xð†xhoˆoˆqˆoˆ‡v‡»ð†vð†xð†xð†xð†xð†xhoˆoˆo8qˆ‡tð†xh‡šhyˆ‡…8ˆvð†xð†x‡xH„ho‰wˆ‡vˆ‡vˆ‡vð†vðqˆ‡vð†ƒX‘ho¨‰vð†x‡xð†»h‡xy@oˆoˆo‡ƒyyˆ‡vq@ˆvˆoˆoˆo8o‰vð‘h‘x„h‡xðqˆoyˆ‡vqˆ‡who‡ƒh‡xð†þxyho8qˆoˆ‡tˆ‡v¨—9Bˆv@o‡ƒ‡xð„ð†»h‡xhoˆ‡vˆ‡vˆ‡…ð†x‡ƒð†v¨‰…Hqˆ‡vˆ‡vˆqˆ‡vˆ‡v8ˆt‘‡xhoho8ˆvx‡v𑇃‡ƒ‡ƒyð†\Ø‘ð†xhohoˆ‡tho¨ o8o@o¨ q8o‡vˆoˆq oˆÔ8oˆoˆohoˆqˆo‰vð†xð†vð†ƒh‡xy8ˆw‰v‡xð†vðq oˆ‡vð†xð†…@o8oh‡ƒ([Hû68ohþ‡tP„xð†xð†ƒhK€}ð†v8oˆo@qh‡xh‡ƒqˆyð†xh‡šð†v@ˆvˆo oh‡xP„v@ˆv@ˆvˆoˆoˆ‡vx‡vˆoˆ‡v8oˆoˆoh‡x‡v@ˆv8oˆoh‡ƒð†xoˆ‡v¸‹voˆoXˆtˆy‡xXˆxð†xð†xh‡xh„ð†xð†xð†v8oh‡0ñ†v8qhoˆoˆoˆqˆoˆo8ˆv8ohoXˆx‡ƒð†šð†xð€hÏ[´C<¤CôÖŽ`BÚ`ÂdéQöì–¬?Âô“'ëÚYǤÓ#ë0=ÂôÈú#K˜,Y·„é¦G–0e7o);L,±“±îL²³.;LÁäó¬Ë“G$ÌK1/;ó±Î’G0±D;O±n@K±ÎL1ïK0±$; ±îLRTļG$ÄäLÁäL²³“G0ÉÎ’ìÌ{ĺG$|“ì0ÑκG¬{“ì¬{í0É“ì0±OñäK0yK0±K0!“G0ÑÎLRü“G¬ód@L²³ÄºG,ÁÄ ³Ãþä -Á„'SQ((* (F%vA( 1B-m:4,578,?‚ CŸ@DFGC:NB.5Cm&&$F›e:;"L­;Q]'Q¦FO`2Wp5R¢DS}PTYUSQ[SKZW:XQe^XEQ`ZA^©K[žMgiƒW/«C5]bfn_M6k§j^_bb`j`YcdW\ctkfC>f¿Dg´jgNTkyFsz]kŒ®NNjlislUayCZmšvpFnpmTpµ¡\Zxofrpvnsu‚lfkr…‡l\rtqzx] dhZ|Ë`ƒ«Âi0„€^„~kq€š~|z€‚D¡gˆgKŒË¶iiv{·o‡|‡xv€¬~qƒ…l„Àh…Ç……ƒÊjh„„]’ƪ‚P¥ƒg¦}´yxŠ‹‹l•½{’¬·‡G†Ž­‘ŽŸŒ‚k¥Š–†‡”ž¢Žy ’rÌ|{•—•„—Èl¢Öm³|™›˜ÓV¦ž…‘ ¾{¼fŸ¡ž§¡Ž–£²™£ª‘¡Îº›ÞžœŸ¿Ü‰ˆÃœg¤ž³§¢—Ç”‘²£³Ÿ•£¥¢¤Ý‚­Ö§¤©Ä¦Pב±¡¤Ú¢9¥ª­Ï¥]‘°Í„¢ìs¬®«œ¯Ô©²¥®Ý¸¤ËÕ¢‡µí¶°¥Ÿ·Á°²¯©²Ã©°ÑÞ œ¾³Ã®Ÿ¯´½º¶›Í°´¶³¸±Ä¼¶¢¸µº­»»·¹¶˜Ê°¹»¸žÍ­¥Ï½¯Á¾µÀ½Á×¾‚ŸÆñᲩ»ÁÿÁ¾±ÄÝÍÀ©¹Ä˳ÆÓ¬ÉÛáÁyȽԼÄÚÁÄÔëÃgÖÄ›ÄÆÃÆÄÎËÇ¿ÉÇËÇÉÆÅÊÍÑÈ»ÊÌɹټªÙüÏÑΰÛîÒÐÔØÑÃÑÓÐÜѽÆÔéÉ×áâ×­ÛØ»ÕÕâÝÖÈÖØÔßÙÄÕÚÝÚÜÙÝßÜàâÉâà×àâßíäÃúä êãÒàãñååÛÉðùåçäçéæøê»åëøëíêùôÐ÷ô×ññúñóðìôúåøüúõãô÷ó÷ùöýùêõûþýüóþÿü!þCreated with The GIMP,êþà@ƒÆÁƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠÌã¶>¶nëC0ëC C C`ëD Cì:0:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:þë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>:ë³>H`‘ v z`‘ v z`‘ v zþ`‘ v z`‘ v z`‘ v z`‘ v z`‘ v z`‘ v v v :`hàn@n°ÿáÍÀnÜDè_çÞ=|x޹s×™÷®â;qŽW‘ܹwäÞU|Gwâ’«óœ8w2Ź“)ÎLqîdŠs'Sœ;™âÜÉçN¦8w2Ź“)ÎLqîdŠs'Sœ;™âÜÉçN¦8w2Ź“)ÎLqîdŠs'Sœ;™âÜÉçN¦8w2Ź“)ÎLqîdŠs'Sœ;™âÜÉçN¦8w2Ź“)ÎLqîdŠþs'Sœ;™âÜÉçN¦8w2Ź“)ÎLqîdŠs'Sœ;™âÜÉçN¦8w2Ź“)ÎLqîdŠs'Sœ;™âÜÉçN¦8w2Ź;÷Nܹ‡`ÐèÁnÐèÁnÐèÁnÐÈ 4 È 4 BÈ!ìhFž~ìéÇ åéÇž~$´§{úÁÃ~ú‘°4ÞçkÞ±†œwÎy‡œw*zHœsÌYçkÞçrÞ9‡œw·œwÄ9gqªèqÞ©èkÞ9çsÞ±æsÞ9çkÞ9çsÞ±æsÞ9çkÞ9çsÞ±æsÞ9çkÞ9þçsÞ±æsÞ9çkÞ9çsÞ±æsÞ9çkÞ9çsÞ±æsÞ9çkÞ9çsÞ±æsÞ9çkÞ9çsÞ±æsÞ9çkÞ9çsÞ±æsÞ9çkÞ9çsÞ±æsÞ9çkÞ9çsÞ±æsÞ9çkÞ9çsÞ±æsÞ9çkÞ9çsÞ±æsÞ9çkÞ9çsÞ±æsÞ9çkÞ9çsÞ±æsÞ9çkÞ9çsÞ±æsÞ9çkÞ9çsÞ±æsÞ9çkÞ9çsÞ±æsÞ9çkÞ9çsÞ±æsÞ9çkÞ9çsÞ±æsÞ9çkÞþ9çsÞ±æsÞ9çkÞ9çsÞ±æsÞ9çkÞ9çsÞ±æsÞ9çkÞ9çsÞ±æsÞ9çkÞ9çsÞ±æsÞ9çkÞ9çsÞ±æsÞ9çkÞ9çsÞ±æsÞ9çkÞ9çrÞ§™\rifkÞ9çsȱ¦™Í›9Gœ‡Îç;0ìGž~0ìGž~0ìGž~0ìGž~0ìGž~0ìGž~0ìGž~0ìGByäé§Ã!ÜèåwÞ9LjܩÈwÎq'&ˆÜ©èŠÞébkÀ±ÆoŠùÄWÚ§}pÚ·Æpð·þÇi8¬ñ k˜ƒïh8þ¬kŒ±8ÚkŒà°Æ8ðkŒà°Æ8ðkŒ£}çÇ;ÚrXCàÀ8¬1üÃãÀ8¬1üÃãÀ8¬1üÃãÀ8¬1üÃãÀ8¬1üÃãÀ8¬1üÃãÀ8¬1üÃãÀ8¬1üÃãÀ8¬1üÃãÀ8¬1üÃãÀ8¬1üÃãÀ8¬1üÃãÀ8¬1üÃãÀ8¬1üÃãÀ8¬1üÃãÀ8¬1üÃãÀ8¬1üÃãÀ8¬1üÃãÀ8¬þ1üÃãÀ8¬1üÃãÀ8¬1üÃãÀ8¬1üÃãÀ8¬1üÃã°8Ú× \l¹h8ÚŽfÈ‚¤Ø)rÑ>pXCâ@ƒ;⎘<Ä1yˆ;bòwÄä!îˆÉCÜ“‡¸#&îxÇ9Üw¼Ãçp‡ìÐŒs<Ä{î8Ç;Üñï½Ã9©;∀ß(†5ŠaC°ÁüGûê†R|ßà_û®‘TüÉcÖÐS­qö5BϰÆ7’*öÕÃÖøFR¿Á¿zh¡ßhß7¬Á 1dáÖðF®¿o$õIýFR¿‘þÔo$õIýFR¿‘Ôo$õIýFR¿‘Ôo$õIýFR¿‘Ôo$õIýFR¿‘Ôo$õIýFR¿‘Ôo$õIýFR¿‘Ôo$õIýFR¿‘Ôo$õIýFR¿‘Ôo$õIýFR¿‘Ôo$õIýFR¿‘Ôo$õL½F3ZÑŒç‰cͰÆ5¬ÑŒfÀâöG3pÑŒ¤ÊÁçx‡;Þ±ŽwœãîxÇ:ÞqŽw¸ãëxÇ9ÞáŽw¬ãçx‡;Þ±ŽwœãîxÇ:ÞqŽw¸ã!ñxG„×áŽs¼ã¤ïpÇì‹wœãëpG„Í QœÃ{ïX‡÷Þ±Ž“Fxïp‡:ÀÀÝþfX£Ëp…)Laˆ@4ƒÜeF3˜±,£ ëHØ¡fX㈆3Ü¡ˆfôâ8FA l@CÐG#܉gxC`8‡®±Œo(‚Íx‡QˆCÎx,ÈÁ‹m"ÊhF<\p -¬ÃË€Å:ìk@£]°4T‹w¤ ʈF3¢ g8#ÍØt§£ÑŒMw:ÍØt§£ÑŒMw:ÍØt§£ÑŒMw:ÍØt§£ÑŒMw:ÍØt§£ÑŒMw:ÍØt§£ÑŒMw:ÍØt§£ÑŒMw:ÍØt§£ÑŒMw:ÍØt§£ÑŒMw:ÍØt§£ÑŒMþw:ÍØt§£ÑŒMw:ÍØt§£ÑŒMw:ÍØt§£ÑŒMw:ÍØt§£ÑŒMw:ÍØt§£ÑŒMw:ÍØt§£ÑŒMw:ÍØt§£ÑŒMw:ÍØt§£ÑŒMw:ÍØt§£ÑŒMw:ÍØt§£ÑŒMw:ÍØt§£ÑŒMw:ÍØt§£ÑŒM;£ÌPF3œÑ eÈ `è‚#ZafD£¸‡,Ú ZXƒÍ`F3˜†Ÿ#Âo_ÇÛ#¼¹¿cu_GÝ×Q÷uDøï8GÝ×áw¼cïÐz!÷n4`›xÆâqŽºŸãî8:0„,¸ã݈‚2rá‹\¸þÂ}`ƒ!ØÀ†\4þȅ/rñ4ˆÁë€À2Þ ‡qlA x Q ulA °† –†uˆAr ,° _ô¢ ¹xƒÎ1¢´XG p±Ž@£æ€+¶†]´`s¹J¡…u¸`QxG À°# ñqƒu€€÷ë…÷Ûœ^@À\è…ì…ì…ì…ì…ì…ì…ì…ì…ì…ì…ì…ì…ì…ì…ì…ì…ì…ì…ì…ì…ì…ì…ì…ì…ì…ì…ì…ì…ì…ì…ì…ì…ì…ì…ì…ì…ìþ…ì…ì…ì…ì…ì…÷ó…fÈ…^°lhXp°G€…qP†\ ‡\8q°7pYˆ†gð…^ð…f°ƒwX‡s‡sˆ0wxw8‡s‡wp‡sˆ0wxw8‡s‡wp‡sˆ0wxw8‡·;‡wp‡uˆ°sx‡sxÂs‡s°ƒ\ˆ°sx‡nøs@"Øw‚!0wx‡up‡;‡nøÃ‚( …\ …\€…D`ƒ-À-hƒVØZØXX …\X€…Tˆ…rˆTPtˆTP$hƒ(ÈqhXoXÐ_xƒ`È‚\€….È…TþPuˆ)…\…uðkðH…!Ð4@À„[ˆ×Ë…up`@o‚eèqh..8†(°†XðZÈZ€I˜Ì…˜„É\ IZÈ…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…›Ì…˜„Y …\…f epûXxZÈ…wÈkÈ;°XÈ…q°†Í‘X@ƒþ·;‡wX‡w8‡wp‡[wxwˆ°up‡wp‡[wxwˆ°up‡wp‡[‡sˆ°sp‡w8‡wX‡;‡[U‚Hè…sxwxnh€°"¨p€0ˆ€·s‡uˆ0nh"ƒØn‚V XW „DØhƒH€…{‚…V …V¸€R`†hXƒP9P„hXˆ-hh…fˆƒ,ÐYp00_!ÈR€h…Vˆƒh€R€\pX؈„8ˆ‚6舅X …V¸…(è …8èh€UP1 Xp0þføRhR€…,=QRÈRX8QRèÒ%….=QRèÒ%….=QRèÒ%….=QRèÒ%….=QRèÒ%….=QRèÒ%….=QRèÒ%….=QRèÒ%….=QRèÒ%….=QRèÒ%….=QRèÒ%….=QRèÒ%….=QRèÒ%….=QRèÒ%….=QRèÒ%….=QRèÒ%….=QRèÒ%….=QRèÒ%….=QRèÒ%….=QRèÒ%….=QRèÒ%….=QRÈÒÍRRh…f‡ÍÙGØXÀkhR k`†\hk …VZ¸'Xh;þx‡ux;wxwX‡sˆ0w8‡u8‡s‡sX‡sˆ0w8‡u8‡s‡sX‡sˆ0wx‡sˆ°sˆ0wx‡uˆ°sxw8‡wp°ƒ\x‡sp‡wà†!t ‚8 k8U|‡sxt ‚sx.V XØ„H J`ÚF wÚXØK°X°¨Ý„H€…M°wR….ˆKتµXˆK€¨…G „H …M°Xp§H ZX°XØ„HÀÚH …MˆX°wŠ„M°Zhf€ZXˆXp§H€…MˆKˆXˆ„Mˆ„M°XˆR€ÚH€¬XÀÚH€þ¬XÀÚH€¬XÀÚH€¬XÀÚH€¬XÀÚH€¬XÀÚH€¬XÀÚH€¬XÀÚH€¬XÀÚH€¬XÀÚH€¬XÀÚH€¬XÀÚH€¬XÀÚH€¬XÀÚH€¬XÀÚH€¬XÀÚH€¬XÀÚH€¬XÀÚH€¬XÀÚH€¬XÀÚH€¬XÀÚH€¬X€ÚH ¨w"‡whp°gh{€wÊ{pjkÈ…w°†M€G°„Hpwx‡sx‡sx‡sx»Š»Š»Š»Šþ»Šp‡wX‡·[‡w8wx‡sx‡up‡·s‡è‚^;u°w0X…wÀ)hƒwPÅux‡s($ 5P7øƒ!p„HØ„H [ª„@v„Hp„Bv„@äBŽG@ä'ØGˆGˆC.ä@¦Gˆ„Mp„@vKdJ.äHpDŽGdCdGˆG°phƒ@6äH „BŽGØCŽGˆC&åB&åB&åB&åB&åB&åB&åB&åB&åB&åB&åB&åB&åB&åB&åB&åB&åB&åB&åB&åB&åB&åB&åB&åB&åB&åB&åB&åB&åBþ&åB&åB&åB&åB&åB&åB&åB&åB&åB&åB&åB&åB&åB&åB&åBFdG eGˆJØp°q ‡w‡VˆJ(ä\°‡w°rkdGˆ„B¶ƒsx‡uxwˆ0wX‡·#¼ux;Â[‡·#¼ux;w8‡wX¹s‡w8‡w8‡;¹s‡sˆ0wøXÈ‹0R $ ‚Šx‡s»s;K@‚ Â{‡!ЃHЃ?€ë?ˆ=Ѓ?ˆ= eºÖƒ?d=ˆ½Ž;ˆ„?ˆ„? åH k;ˆ„?d=øƒH°¸>ìHøƒH€k=øƒH€kD¦ëHøƒHÐkþ=ˆ;øD¦ë@ÖƒÃÖƒHøD¦k¸dº†ë@¦k¸dº†ë@¦k¸dº†ë@¦k¸dº†ë@¦k¸dº†ë@¦k¸dº†ë@¦k¸dº†ë@¦k¸dº†ë@¦k¸dº†ë@¦k¸dº†ë@¦k¸dº†ë@¦k¸dº†ë@¦k¸dº†ë@¦k¸dº†ë@¦k¸dº†ë@¦k¸dº†ë@¦k¸dº†ë@¦k¸dº†ë@¦k¸dº†ë@¦k¸dº†ë@¦k¸dº†ë@¦k¸dº†ë@֏ބ?иŽ=øƒ@ÖXà®\ˆ¸d=ˆ„?È…fpR€þëHøƒ@Ö;xwx»u ¼w8‡#¼w8‡#¼w8‡#¼w8¹s‡·[wˆ°uˆ°sx»u8‡·[‡wp‡!Ø„^x‡uPÅwPÅwp‡wp‡ux;wX‡s¨;Â;ÍHÍE·ƒH°=`t=ÍHM=XôH°=`ôMÍH`t=M=àôQN׃M„EwƒHuFw;ЃMwƒHЃM׃M׃M׃M׃M׃M׃M׃M׃M׃M׃M׃M׃M׃M׃M׃M׃M׃M׃M׃M׃M׃M׃M׃M׃M׃M׃M׃M׃M׃M׃M׃Mþ׃M׃M׃M׃M׃M׃M׃M׃M׃M׃M׃M׃V_ôHpƒHM7ˆ; ëV½^t=M7ˆ4x‡sx‡sxÂ;‡wX‡sˆ°sx‡u8‡;‡wX‡sˆ°sˆ°ux‡sx‡sx‡sxw8‡s‡sx‡xp‡sxwˆ°sx‡sxwÐMÈ…wPÅ©w‡xx‡sp‡w8‡w8‡·;‡w˜úÓ;øƒ\h†ÍQ†\ð…÷{=_è…fÈ_È_è…^P†fð…\è…fè…\P†\hû×ë_¨ûfð…ºo†^h†^h†À½\è…fÈ_Èeh†fx½^¸|eÈ…þ×Ë…Ëï_È…×ë…f¨{eh†×ë_È…fè…fðeè_È…^È_è…fÈ…^È_è…fÈ…^È_è…fÈ…^È_è…fÈ…^È_è…fÈ…^È_è…fÈ…^È_è…fÈ…^È_è…fÈ…^È_è…fÈ…^È_è…fÈ…^È_è…fÈ…^È_è…fÈ…^È_ˆ^ÍrõÊå«W³\½rùêÕ,W¯\¾z5ËÕ+—¯^ÍrõÊå«W³\½rùêÕ,W¯\¾z5ËÕ+—¯^ÍrõÊå«W³\½rùêÕ,W¯\¾z5ËÕ+—¯^ÍrõÊå«W³\½rùêÕ,W¯\¾z5ËþÕ+—¯^ÍrõÊå«W³\½rùêÕ,W¯\¾z5ËÕ+—¯^ÍrõÊå«W³\½rùêÕ,W¯\¾z5ËÕ+—¯^ÍrõÊå«W³\½rùêÕ,W¯\¾z5ËÕ+—¯^ÍrõÊå«W³\½rùêÕ,W¯\¾z5ëÕ¬W³^¹|åòÕ«W3_¹r5ó¥¬ÙqeÍrùªž«Y³\¾šõ †ÆšwïÖ½;'þü»sèß[Nü9wç×?'þœ;ñçΟs'~;â3D$¾8ÓË3ÏôÒL‚Ê(ÓÌ3Ê`‡2½4ó v >£L.CØÑË?ýüóO?ÿô3â?ý¨ˆb?ÿô3b?(ÊØÏ?*ÚøO?þ(ö##Š6Ú(c?ÿô3¢Š(öóO?#ªˆ¢Š#öóO?ÿ¨øO?2ªøO?(öÃc?<öÃc?<öÃc?<öÃc?<öÃc?<öÃc?<öÃc?<öÃc?<öÃc?<öÃc?<öÃc?<öÃc?<öÃc?<öÃc?<öÃc?<öÃc?<öÃc?<öÃc?<öÃc?<öÃc?<öÃc?<öÃc?<¢ØÏ?ýÈ:b?(öƒ¢Š(öSO=ñ܃†hXc 6Öˆs¬5Ô0{,5ÏZC´ÒbSí³Ø`‹ 5ÇŠóC$²¼ãÎ9ï¸sÎ9ï ëºèž×.¼î¼sÎv(s«¬ýܪâˆýàËc?(öóOþ?ÿôƒo?2ªˆ¢ŠÿÊØŠýðØÏ?ýüÛýðØýðØýðØýðØýðØýðØýðØýðØýðØýðØýðØýðØýðØýðØýðØýðØýðØýðØýðØýðØýðØýüÓÏ?ýðØÏˆýðØŠýðØO=ýÔsO<Ûaï¸Ó®;î¼sŽ;ï$þÎ9ø;ç¸óNâï$~NâèºóÎ98éç¸óŽ;ç$þN»î A ,ï¸#ž;빃éë—¸väâ0ðÁ ?<ñÅ<òÉ+¿<óÍ;ÿþ<ôÑߊý8ìc<÷ÄsOàh žøy¤¿CzâïïÎ;ç'þNââ%þÎùï¸óéï$Žž;Dl‹;òˆãÎyÎáñœïîxùÄsw¼cvð…ô"(Á R°‚¼ 3¨ÁáõcÀŠG=âqÀ¡Áhx‡;ÞAºw¸c¤{Ç:H·Žw$nç‹Ç9Þ‘¸un¤{Ç9âqò‰çî;~` R¼£Íx‡8Þ±wœC<ëHÜ9ÄãŽwœã<çx‡;Þ!Ø¡ÿòÅ(|1 ùbÇ‹>Š×|€aQÀò|1Š úbü# )ÈAâ«õØG=âqzÄþ£ñ¨G<g‡u¸ãîX‡xÜñŽu 'qç9‡xܱŽÄ½ãâIÜ;'w¬ã<çx‡;ÖáŽw¬C<ë;~` X¼ÃÍÐÝ:гŽwœcâYÇyÖ!w Á ¾@0€vôã`¸5zá,  70^?ÐŽâõC  ‡ðQ<7`áÑè…Ý€…D£„¼'>ó©Oiøy6V=âqz.øˆìà†ó¸ãçx‡;Î#Žó¬ÃâY‡;Öãñ¬ã‰{Ç:Üñw¼ãçqÇyÎñŽsˆçïp6! wØÃâ9ÇywŽwtÃâq‡xÎñŽs¼ãþâ‡ìÐ  zÀÇ ЀDáÒÄA?þ†À£ ÀÁ?ÐD! `Àþ14 ø~1"u0 vP €ƒà0†4±€v”A¸An0üpƒ `€_H`¸:`üÀ/F0`ÿ@ÐPÀ`06Ð2 Úˆ‚ M€áê`pÐ @ ú<.r“ë¼~ä!™`ñTT~Ôc Ü= Z4 nçx‡;Ö!wœã<î8Ç;ÜqŽó¸ãçxÇ:ÞáŽs¼Ãïp‡x÷w¬ãþçX‡xÜqŽw¸C<çXÇy~°‰VœÃ¹x‡;Þ±Žw`¿0F6t!‰wœãç8Ï:ÐèÀ(À ¤ÐTã 7à ¤pƒôã`¸=Þ°ôíH‚ÀpxàÆ?ú€jø@ #Ãö±1l hªá0Háý@;P'Ü 7˜ú€jüZ€¤pƒ~€ábØ@>ÐTÃ]øG?¤p~ ¨F?P'Ü@ 7àÚ0àQÀ@?¤pƒ~€ábP €x€ À;5ªS­êU³ºÕ®~5¬c-k‡õ#¶þ°Es¥ÑS«¨ýh=îqzÜ#õœˆàñœÃ,Ãð€‡/ÄÃâ9‡;ÞqŽs¸ãîxÇ9γŽs¼ãëxÇ9ÜñŽs¸C<îxÇ9Þ±Žwœãëx‡;ÞqŽwœc‘€…;úÑ‹wœC<âC Q M¤CÙÏ:ÞqŽw¸ãâ8‰fŒ¨À‚ð‘5Hà`¸0pŒô 7xƒè€` Cn0ü#PPÄ?Ѐáý „,Ñ B(€èÚჲޠhG  ˜sÀ?ÐŽ è0°Œ.Ü€ àþCú€vø #Š‚æ| ÿH$…((€èGl R€áÿ–Ñ…¤B–‚="ôÕžÿ<èC/úÑ“¾ô¦?=êo¥¢æ6×͕ƿúQ~üCE¾G<ê¸zÄãƒE3ÐpŽódj$Ôpw4BC0ÜñŽH#ÛèÆÎñáp‡xÎ!žsˆççqzÜqŽuœç¤€Å9ìÑ ñœãîF;ð¡bCï@ A$¼ƒ; 8üÀ&4ÈôƒtàÃ7 A ÄB.Ä‚:€A ŒH.Œ‚<¸Á&DÁ?üA/þäB,äCüƒ9¸üôÃ+øÂ?¨H*€Á3ôƒ(HÁ6üôÃ+Ç(üCàC6H Ü€?h%DA?€>üC* Áä‚:€A ôB,ôƒ(HÁ6üôÃ+øÂ?ôƒœC?H>üƒ9  ôƒœ€Ã?¨C 8ôÂ(üƒ:€A ôB,üƒ(t ôƒ"H0ü‹"."#6¢#>"$F¢$N"%V¢%:b?°^LAsMÁ°Ã¿°ÜC=ă°ÅC=Ä>Ä-4ƒ¼Ã:ˆÇ*à4èß*¼ƒ;< ¸Ã;¼'„C tà Ä@7 Á;¸ƒ œC2A*ÄÀþ üÂdÁ üB*Ä@ üÂ9¼Ã9¬Ã9¸Ã;¸Ã;œÃ;¸ÃX‚,¼ƒ=ôÂ9¼CâÈÃ*܃þù<$ƒxX4À;œƒxˆƒxˆÃD‚/ôÈôÃ?øÈ?ôÃ?¨È?¨È?øŠøH? H?üC?ŒÈ>üC?üC?üC?ŒˆüƒŠÈH?ðˆ?8€6üC?üC? ˆ ˆüƒŠÈˆŠŒHÜÀ¿ôCÜ@?Œˆ D¢H?üƒŠüC?\"R&¥R.%S6¥SNb&øäTNA-胬ôC=ìC?üƒŠÔÃ=‹°Å°T<ôÂ3 x$(Ã&0C4ð;œƒ9ØþB8ÄÀô7 Át¼ƒ;ÈÀ0€0ìôƒ?¤C6¼ƒ;¼Ã&T¦k¾8ü)4$ö%öƒ#ª¾øÃˆôƒŒôÃ"öƒŒ¨ˆŒôÿôÃ?ô$öŠôÈôÃSF§tN'uVgtæTúÁHƒ?ŒH.PB.¤%¤%”§5ôC=ìC=ô°™e<ƒŠtÂ;¸3ˆ+;¼€œC7 :„ÀœÃ;øÀ;|C pÁ(ƒ5ÔÀ00‚hÁ(0˜C.¨Ã3˜C3þ$Î;œÃ;œDB+¸C=øÂ:ˆ‡;ÈC'¨H>ÀÃ?¼‚x¸Ž®CeŠƒx€ÃDB.Pg?8b? ¥ŠàK?Xg?X'“6©“>)”ªHøAHÃ?ôÈäBX—Z@€€ô°ôC<ÜC=¸gà¬Ã:ôÂ3ØŽâ¨t‚t‚(Ä;¼.DœÃ;ƒ ÈC9XÂ9ˆÂ&¼Ã9‚x(;ÄA<ÃÄAœƒ9€¸C9XB9lB8XÂ;¸Ã:Tæ,¸ƒ=(ƒxœƒx¼Â5 C9Ã-ˆÂ;œŽŠÇ9¼æ8 )(”öª¯þ*°«°k?ÔB9¨È?¨Èþ?ˆôC3ÔC.¬Ã2ÔC3@=ÜC=ÄC=¸§6ă6Î:¨B3ØÁ9ÄÃ9¸Ã;¸Ã;¸Ã9¼Ã¶½¦kºÃ9¬Ã9Tæ:œƒ;¼Ã9¸Ã;ìÀkºCežÃ;¸Ã;œƒ;¼Ã9¼ƒ; %È‚;؃/¼Ã:¼ƒ;ˆ‡;¼ƒ<¼Ã¶U¦;œƒx¬Ã9¼Ã9ˆÇlB. +ʦ¬Ê®,˶l?ðˆ(ATnåZåf®æZ®hƒšNCàôÂ3ØÁ;àh<œÃ;œƒ;¼Ã9¬CežÃ;¸Ã;¬ƒÝVf<Øm<¼ŽVæ9¼Ã9ˆÇ9¼ƒ;Tæ9¸Ã;œÃ;œÃD,œƒ8(Ã9Ä޾ŽŠ‡;¼Ã:¸ƒxœƒx¸Ã;ˆƒxœÃ;ü@$4¼BÈ=t¾´¯ûòH>XB#HA?Ȉ?XÃ?$Aû&Áûþ3üC>DBÿŽH#HA?ü3ôÃøƒ"´Aþ?ŒHüÃ5t8ôÃ7t7øCÈA?H€°C/øCÂ?Ü‚(Ø>Œˆ?ÄA ìC¸A?üƒ A9ü€Ã?|ƒlŠ|ƒlƒ?¨Â?DB¸>|ƒl?(BÜ‚(Ø>øCÈA?$ÁˆÜÄÂ?ÄA üƒ?ÄA üCŒ:Ã?ˆ‚?ÄA üÃ-ü?äˆÈÂ?PÂ>¸‚?ÄA üÃ-ü?äBüÃ5  üC?Ѓà=tA>”Â?(BôÈHàÃ5t8ôÈ\Cxƒ?ÄA üÃ-ˆ‚àC .ìÃ5 %ðC/ü.ðƒ"´Á?(Bô¿þ5\ǵ\Ïõ\÷Ã"ÔÁ!œÂ!ìõ!L_×AœAXaa[AœšjCàôB3ØÁ9¬Ã;¸Ã;œƒxœCežCežƒ;ˆÇ:œƒxœÃ;àè;œƒ;¼Ã9¬ƒ;ˆÇ:¼ƒ;¼ƒ;¬Ã;¸ƒkžƒ;¼Ã9¼ƒ;A$´Â;Ä©x¬ƒxœÃ;œÃ;¸Cen[e®Ã9¼Ã9ˆDB.ÈH?ø@¼@'HÁ C2ô?ÜC2°ÁlC=øƒ ôƒüC?äƒ Kl0ôÁ C2ôÁ ƒ=ÌC$Á?¼6¼A5üÃx@?¼À>¨@?èÀˆøƒ ôƒìÃèÀ/8A?ìƒ ôƒ̃ üCh7°?ÜC2°ŒÈ¨À?HÀˆÌC$Á<´€ØÃ C2ôŠ$A?øƒ øƒ Œˆ?¨À?ÔÃh+ôA¬7°AôCüƒ üƒÌCüÃ̃ üà C2ôÁˆÔº­ß:®çº®ï:¯÷º¯ÿ:°;þ®÷Ã"ðµ<¼Cð5`×A„A„AäÀ5|C¶LCAiCà°),<ˆ‡;ˆ‡;¼Ã:ˆÇ9ˆ‡;¼Ã:ˆÇ9¼޾Ã:Äé9¼Ã:œƒx¸Ã;œÃ;¸Ã9ˆ޾ƒ;¼Ã:œƒx¸Ã:TæÀ)Äé;œƒ;Tæ9ˆÇ:¼Ã9¬Ce®Ã;¸Ce®ƒxü)(ƒ­÷ƒØC?ÐC$ØA3¤BPAÈè@>@€ Á?ôÃ?ƒ”BôÀC8A?ÌCŒHàPÁ?ä¸ÐCüƒôÃÀC$A?ÌCŒH2´À(¼À $>ÀC$A?ÌC$A>Á?ø€ŠÐCPÁÁ?ø€ŠäŒHà眛ιéœwÜyçœwÜ¡éšÜ~Ƕݡé¶ßésÞéK,¡ Âß‘‡&yþ —çy '"’f’6è–‡úiF¾ ꇠ~¾ìÇ hÿé§¡~ ê§ ~þéG¢~$jãž~:7¨Ÿ…úù§‚ú!¨‰ c›Þ™oÞyˆúY$ŒCÂx§™rH!ˆ ÎB‰3”8Ek\¬ ãI”ˆgšx´ÙsudQÆŽwÜyÇšÜ!&wÞqçšÜñw¼c4qÇM`òwÐäïpÇ;ÎñwÐäïpÇ;ö÷RÀÂïPÆ;ŠÂb½C„Åz‡<ÞQBy¼ã›ðÅóÒ‚ðÅ ý@Z?Ò£õ£wýXH?"Ò.õÃy|9H?`˜D%&­‹°Â!Â`­åà‹Xþ/Q&­m±‡8„ⱎx¼OÚˆ‡6zÑ 4¼cïØŸ;Þ“wì&çpÇ;ö÷Ž7¾‘&ç€ MÎq“sÀ„&o|‡;†` X¼ÃΨG±ž¡BIN’‘hÆÒLn’“üR?<JQ&„/‹°Bê`+XD•VØ"*ëàÅ0xñ“PÂ:бŽb¬Ãï[‡,ža‡sÄÃçXÇþÎñ˜¬cç ‰;Ö“s¼Ãë€É:öwŽw¬&ç É:ÎñŽxìïë€ MÜñƒMÀ&ÊG=졊z\b ¬¨‡ë!z„°Å:G=äñƒM(C!5èAšP….”¡ uhþAûñP‰N”¢µèE1šÑ‚ôcV¨ƒ‚ÐÊVž¡g€å$hIK%ÃÞ(FKµ±Žxô¢v8‡;h²¿xÐdïpÇ;ÜwœcïpMÖᚸãî É:h“w¬ã79LÞ±š¸ãëx‡;~° XÀäö(V"±2€Bö¨8ÄwÈÃu•‡=ØyØc‘ÈEAXÁ–°…5ìa›XÅ.–±uìc!YÉN–²•µ¬bûñJXA VP‚” +Ôá u8Ã!Îp'ÕžBµJðF1ZêuÄã}°xÜñwœã0qÛ;ÜqŽ›œã&ç  LþÞáŽwÀä&îxÇ9Þ᎛¸ãï€É9nrš¸ãîÂ&`“gÔÕª¨(R‘ ò~Ãæ‡8¬±vXCö‡9ÎR(ã²ýõï`˜À6°aûa3l/JBh!a Kx-õe<´^<Ãï8G< wšœcî ‰;hrŽu¸ãçxÇ:ÜñŽs¬ÃïpMÖ±¿w¬Ã4YLh²ŽsÐä?Ø,Üñgò¸ÄXA^lˆCò ‡9Æ1ò6Cõ,rq`1™Ìe6ó™Ñ àz¬Ã∭5ZjØÎÙ—u^‡7Þmˆ Ï@MÎþñŽs¼cç É9hâŽwœãî8ÇMÎñw¼Ãç ‰;αŽwœã0yLÞqŽ›ÀäïpÇ;ÎA"lçxG4ê¡{´d (Èû}ÔÃï`9È!{øà‡6á‹4/›ÙÍvö³¡Y¾üƒ/ýøG?êQí}ÔƒÛÝ®‡Øâ±±i#ÚˆG/ž†w¸ƒ&ëpMÎwˆƒ&4YMÖášœcî É:ÜñwÔûî É:ÜA“uÀ„&ë8G½×ál¢4‰Æ>ö¡^Ôƒ ÈF=ì±wØcõ8Möqkøãöp"ÑŒhÏœæ5·ùÍý[þíjÿCçû臷¹nÇ£à÷:â!‹fØaï8Ç;ÜñŽsÐäõ~Ç9ÞáŽs¼Ãî°º;ÎñwÐäï8Ç;ÖñŽsÐä4qÇ9êíšœã]‚%`qŽwDcýÀxµ÷ñŒãõ|?ê1ølÂ8wüã!yÇ÷ãõèG=øR}p›/@G=Œ¾mèIñXG/šá†zŸ£Þë¨÷9ÖA“sÐä4Ç;ÜQïsXýë°ú9hâ6šœcî¨÷:Üñw耭 ‰5öñzücðÿØG?þQ}ü£ýøÇ>þQ}ücýøÇ" `¯ŸýíwÿûáþùÏŸþõ·ÿýñŸýïŸÿý÷ÿÿ0ÿÄáÎبì¨lÅÁ¨lÎZªŒÞGÖA¼a`áìàÄ¡ÞÎáÜáÎ&ÜaÞÁÎáâÁêÜaÎáÎáÖáÎáºnÎ&Ö¡ÞÎ&Î&ÎáÜáÞÁ†À`áÎÁöáöáú¡þ¡0Ž ö öáê öáö¡þá6¡È« Íð Ñ0 Õp Ù° Ýð á0åpé°íðñ0õpÙ°ì¡ì¡È«ʰìAô¡ô¡ô¡ì¡ûÁö¡ìÛìAêÁZþáРÞÖ&ΡÞÖ¡ëÞáÞaÎáÄ&Î÷ΡÞΡëhâÜáÎáâáÎ&ÎáÖáêÍ~€`&¢aþ¡ú ê úaþ¡0®b¢þㆠZ¡ëÀ1ÅqɱÍñÑ1ÕqÙ±Ýñá1åqé±íñÍ‘&ÜáÜ÷üÑêÎáÜáÂñêíÞÁhÂΡšÁÞáÞÁÎáÖáÎáÎáÎá×&ÎáÖáÞÁÖáh¢ëÖ&ΡÞÎ&Ö¡ÞÜ&ÎáÜá6Îá¬a°úáø°úáø‚ þú¡ `&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Öþ&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&Ö&ÖáÜáÎáÜ&ÎáΡÞÜ&ÎÁhâê-ëíÞ¡ëÞ¡ëÞá`ẠrAš!”!š!”!”!š!$%šAr¡z¡”¡r¡˜¡r¡>š¡ž-š!š!”-šÁzáSr¡”a6¡hú¡ úáú°þ¡¢þKHÁhÂüñSAõrzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAþh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡dzAh¡þdzAdà·ràW){~a¡dA){A){zz¡Z¡d¡hAZ¡ìÁÞAš Î&Î&Þá0˜&ÎáºîÎÁÞÁÞÁmÎáL˜&ÎÁÞáÞáhÂÞáÞÁhâhÂmÞÁm†À`áÞÁì¡ëÞÁÞÁß¡ëÞAßaHÞáÞÁmÞÁmÞÁmÞÁmÞÁmÞÁmÞáÜ&háú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú úþ ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú þú tŽ/‚/ ‚/¢(õö¡þ¡þ¡Úþ¡ä&dáìÀhßßÁÞ¡ëÞÁÞ7Ø0Øh¢ë6ß¡ëÞÁ0ØÞÁhÂt€`&°ÁºîÜ&ÊñºŽ&À‘&t``&ÖáÜ&âƒ×áÜ&âƒ×áÎáÜú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú úþ ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú ú!© ¢ ¢ ¢¢þ¡Ú¢þ¡ ¢ì¡ÜázáÐþàÞaßÁÞi¢ëÞÁÎáÜáÆñÀñÞß¡ëÎ&ÂñÜ6ÎÁ¬¡6ø6øÖ1ø6xÞ6Îá¡ÞAÎáÄáÖ×áÞAnýÞþ!ræ¡ ë¢Àî+ ò!ô|ÜɽÜÍýÜÑ=ÝÕ}ÝÙ½ÝÝýÝá=Þɽä°ö¡ÞádáìàÖA×ÁÞáâáÞaÎÁÞÁhâÞ¡ëÖßáÞáhbºîΡëÞáÜáÖ&ÎÁâ&ÜA6¡ÞÁ¨ÁÞáÞahbhbhBhbþhbÞáÞáÜA6¡hB<àdÀp¡ TÁÞ |! ÄÁÞ@ÎÁzaÞÁháæ! nZ ÄÁTá"Áú!²àø¡ì@þáÐò!nAìü!b!ê=ðð ¿ð ÿð?ñ kìÁÞ!ž Þ¡ëÖÁÞÁÞáÞÁÎÁÞÁ0xhbhÂhbÎ&ÖáÎáÜaÎáâáÜaÞ×&LøÜa,ÜᨡhâhâÞáÜáÖÏáÎÁ0Øhb,Üád Ô@ÞκA’aþ€ ¸`P ÔaÜ&háæA ¨`0à\àæ`ŒÁºà†! ‚ž}/þ©Ø'a^–$Ûбy3,Y–+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰2¥Ê•ûé³÷î­ghܽ»yóÜÍu8Ϲ{·ÎÝ»sîÞ{ççMw8Ïáý¸µIB¯Ë?*ù¤üó1¯K’~óºPé7¯‹ÅÙ´kÛ¾;·îþݼ{ûþ <¸ðáÄ‹?λŸ½›°žÙq÷îÜ»uïÜá<÷n»›îÎÝ<÷nÝ»sïÜ­;÷ÎÝ:œînº;÷Îݺ›î¿[÷îÜ;©C,Ár÷Ž5ö¼³ÎMî¼³Nçà´Î;Šá´ÎMCX‹;ïÈà0œã tCD8D C0*DQ :nœóÎ9²ô3OIÌFð£‚:FøÐÅ ¿$AOÿ$Ñv40Iô3OÀ ñDÈMIe•V^‰e–ZnIe=õœó-Í Ó9ïœóÎ:çÜäÎMâàtÎMî¼ãÎ;çàtŽ;ïœ#Õ;ç¬sÓ97£”;8óŽ;:ÒŠþTÖØsÓ:çÜtÎ:ç¼#87£Ô9ïœsÓ¤´âÎ;CîœãŽUç¸s“;ï(v“;´ü“ ÿôÃë?¼þÃk?ñJ¯ÿû¯þÜÃJ\> m´ÒNKmµ¾õ³=7ÁòŒëœóŽ;8¹óÎ9“;ç¼³ÎM“;çÜtÎM뜃Ó97³ÎMëœóÎ9ëœóŽ;ï¸óƒ%°HõL=ç¸sÓ9ï¸sÓ98¹óÎ97­óÎ9ï(6„%°Xu“;J¹óŽ;Ž;8­óŽ;´äƒ>¸Ë[?þ¸ÑF?Öþ tÐBM´EûØãÎ;²<ãÆMç¼³Î;ç¸sS<ïˆóþŽ;7¹óÎ9ï¸óÎ9ffiS<ïˆ#ÏMçà´Î;î¼sÉ7­óŽ;CË;î`cÏ;î¬s“Tëà$ÎMë¼sÎ;ç¼ãN?"Ë;ç(%•;ç¼ãÎ:“Tç¼ãÎ;îô²O?ûœŽzꪟ^Ïê«ÿãzì²ÏN{í¶ßŽ{îºïÎ{ï¾ÿ|ð¯º=ö¸sN/͸±NçÜtÎMçà´Î9Ó9V‰óÎ97¹sÎ;ë¼sÎ;Rƒ“87óÎ9ï¸óŽ;Cl‹;ï`cÏ;î¼sÎMçXµwàÄ7YÇMÎ1KÀâ&ç¸É9¤r“s¼Ã7Y‡;ÞáŽw¬ã79‡ñêaþ¼Šp„ÆÓ Oh} p…,l¡ _ÃÊp†4¬¡ oˆÃêp‡ÀÍàý :° ¤ðëðçðîpïpï°7qïçpîpïpïpï°çðçðçpî°8áçðîðçðîp7þ±7±ïàç î°7qïpï ëpçðçðR±7qïpï ëpçðçðR±7qïpï ëpçðçðR±7qïpï ëpçðçðR±7qïpï ëpçðçðR±7qïpï ëpçðçðR±7qïpï ëpçðçðR±7qïpï ëpçðçðR±7qïpï ëpçðçðR±7qïpï ëpçðçðR±7qïpï ëpçðçðR±7qïpï þëpçðçðR±7qïpï ëpçðçðR±7qïpï ëpçðçðR±7qïpï ëpçðçðR±7qïpï ëpçðçðR±7qïpï ëpçðçðR±7qïpï ëpçðçðR±7áï°8qïp½ð vðçðç°8±8qï°çpîpï°çðç€çðëðçðîpçðë î°8áï°81– îðÔpý` »ÀÏÓ° wÀ+>@]àRðC` °à8qþ7áïà8±çpçàV±V±ïpRñçðçpë€çpçàïpJ±ïpëpJ±7qî ëpçàJ±7qî ëpçàJ±7qî ëpçàJ±7qî ëpçàJ±7qî ëpçàJ±7qî ëpçàJ±7qî ëpçàJ±7qî ëpçàJ±7qî ëpçàJ±7qî ëpçàJ±7qî ëpçàJ±7qî ëpçàJ±7qî ëpçàJ±7þqî ëpçàJ±7qî ëpçàJ±7qî ëpçàJ±7qî ëpçàJ±7qî ëpç 7qïp7qëðîð°ð h€îðçðçðçðëðîpç@2î°ï òðç€ç€ëàïpïpïpïp7qîðçð砤РRa ¸a ü ¡° _@>@YàýÀ ?@ ­pëp7qëpïpïpïàï°J±ïpï ëðçðçpîpï°Jqï°ïàçpçpŠñRaþâpîpï ï 7áçðRñâpîpï ï 7áçðRñâpîpï ï 7áçðRñâpîpï ï 7áçðRñâpîpï ï 7áçðRñâpîpï ï 7áçðRñâpîpï ï 7áçðRñâpîpï ï 7áçðRñâpîpï ï 7áçðRñâpîpï ï 7áçðRñâpîpï ï 7áçðRñâpîpï ï 7áçðRñâpþîpï ï 7áçðRñâpîpï ï 7áçðRñâpîpï ï 7áçðRñâpîpï ï 7áçðRñâpîpï ï 7áçðRñâpîpï ï 7áçðRqï°çpç îp²Ð r€ç€î€îðî°8!7qïà8qïàëp7!7áçðë€îðëp7që€C` °àï@ ·Ñð%^âKðýàó>/ð– îpçV±ïpîpïpïpîþ€ç 8áïpîpçðçðëpç€ëpë€ëðçðçP98q7±ïp8q7±ïp8q7±ïp8q7±ïp8q7±ïp8q7±ïp8q7±ïp8q7±ïp8q7ëÞ{Wð\ÁuïÎ|w®àºwçž+¸îÝ9†ç ®{wŽá¹‚ëÞcx®àºwçž+¸îÝ9†ç ®{wŽá¹‚ëÞcx®àºwçž+¸îÝ9†ç ®{wŽá¹‚ëÞcx®àºwçž+¸îÝ9†ç ®{wŽá¹‚ëÞcx®àºwçž+¸îÝ9†þç ®{wŽá¹‚ëÞcx®àºwçž+¸îÝ9†ç ®{wŽá¹‚ëÞcx®àºwçž+¸î»wî ž[÷‚ëÜÉj†æÝ¹‚ë ž{·ÎÝ»sÏ1\Wp;†ÏtWp»‚çÞ+x.¹;wïνs÷ƒ”,ìÖþ'O¾ßºGéÕÿÛ·¢ßø~ÿ†l"õî\ÁsîÖ½;÷î\AìÞY‡¡uÎydžÎyg†ÎydžÎ9çwÎyÇs r眂ÜyÇäÎ)hwÎyÇwÜ)hwÎyÇwÜ)hwÎyÇwÜ)hwÎyÇwÜ)hwÎyÇwÜ)hwÎyÇwÜþ)hwÎyÇwÜ)hwÎyÇwÜ)hwÎyÇwÜ)hwÎyÇwÜ)hwÎyÇwÜ)hwÎyÇwÜ)hwÎyÇwÜ)hwÎyÇwÜ)hwÎyÇwÜ)hwÎyÇwÜ)hwÎyÇwÜ)hwÎyÇwÜ)hwÎyÇwÜ)hwÎyÇwÜ)hwÎyÇwÜ)hwÎyÇwÜ)hwÎyÇwÜ)hwÎyÇwÜ)hwÎyÇwÜ)hwÎyÇwÜ)hwÎyÇwÜ)hwÎyÇwÜ)hwÎyÇwÜ)hwÎyÇwÜ)hwÎyÇwÜ)hwþÎyÇwÜ)hwÎyÇwÜ)hwÎyÇwÜ)hwÎyÇwÜ)hwÎydžÎIîuÞ9§ wd‰ÆuÞ9§ q:‡¡sÞYç†ÎyÇsÞYçsÞqçu’sçœwÜ)h‚ÜY眂ÜY‡¡,Åw¨)oï~ú!oònfïH¥ uÞÁŽ!wÞ9çwÞ9çsÞ9'9q ZÇwÎygwÎygwÜIn†Îahs ZçsÖ)èw:çsÞ9džÎyçœwÎq‡¡sÞ9çsÜaèœwÎyçw:çsÞ9džÎyçœwÎq‡¡sÞ9çsÜaèœþwÎyçw:çsÞ9džÎyçœwÎq‡¡sÞ9çs¸ƒ!çxÇ9Þqw0äï8Ç;ÎᆜãçxÇ9ÜÁs¼ãï8‡;rŽwœãçpCÎñŽs¼ãî`È9ÞqŽwœÃ 9Ç;ÎñŽs¸ƒ!çxÇ9Þqw0äï8Ç;ÎᆜãçxÇ9ÜÁs¼ãï8‡;rŽwœãçpCÎñŽs¼ãî`È9ÞqŽwœÃ 9Ç;ÎñŽs¸ƒ!çxÇ9Þqw0äï8Ç;ÎᆜãçxÇ9ÜÁs¼ãï8‡;rŽwœãçpCÎñŽs¼ãî`È9ÞqŽwœÃþ 9Ç;ÎñŽs¸ƒ!çxÇ9Þ±Žwœãçx‡;rw¼ÖpCÎÁu¸ãçx‡;’s†œÃï8GrÎáŽwœãçx‡; rŽu¸ãçx‡; rŽw¸ãçxÇ9†@ŠV`Ç{cç?êÑô<ý(Ï"ÑŠs¼Cöàg=üiÚßöðg=ìQÐzØÃŸöCÜÁs0D9Ç;ÎñŽu¼ãï8Ç;ÎñŽs0d YÇ9ÞáŽw¬ƒ!ë8Ç;ÜñŽu0dçx‡;Þ±†¬ãïpÇ;ÖÁuœãîxÇ:²Žs¼ÃïXCÖqŽw¸ãë`È:Îñw¼c þYÇ9ÞáŽw¬ƒ!ë8Ç;ÜñŽu0dçx‡;Þ±†¬ãïpÇ;ÖÁuœãîxÇ:²Žs¼ÃïXCÖqŽw¸ãë`È:Îñw¼c YÇ9ÞáŽw¬ƒ!ë8Ç;ÜñŽu0dçx‡;Þ±†¬ãïpÇ;ÖÁuœãîxÇ:²Žs¼ÃïXCÖqŽw¸ãë`È:Îñw¼c YÇ9ÞáŽw¬ƒ!ë8Ç;ÜñŽu0dçx‡;Þ±†¬ãïpÇ;ÖÁuœãîxÇ:²Žs¼ÃïXCÖqŽw¸ãë`È:Îñw¼c YÇ9ÞáŽw¬ƒ!ë8Ç;ÜñŽu0dçxþ‡;Þ±Žä¬ãç`ˆ;Þ±Žw¸ãçxÇ:ÞᎂÈânXÇ9ÞáŽwœãî8GAÖQw¬ƒ!ëx‡;"Žw¬£ çXGAÜñŽuœ£ î8GrÖÁs¬ƒ!C°,Üñj´SËÿè[;` X¼ÃöÀŽ„ÜqwäîxvÜñ ¹£ nvÇ;ra g4#ÍPF3rñŒfZÍxF3”èf(ÑÊhF.”¡Œfä¢Îh†5Þa g4#Íp¢›áŒfä¢Îð´3š‘‹f8ÃÓÎhF.šáŒf¤ÎhF.šá O;£¹h†3<íŒfä¢Îð´3š‘‹f8ÃÓÎhFþ.šQD;£¹h†3<íŒfä¢Îð´3š‘‹f8ÃÓÎhF.šá O;£¹x‡;<íŒfä¢Îð´3š‘‹f8#ÐQF3rÑ gxÚÍÈE3œáig4#Íp†§ÑŒ\4ÞvF3rÑ gxÚÍÈE3 ‚hg4#Íp†§ÑŒ\4ÞvF3rÑ gxÚÍÈE3œáig4#Íp†§ÑŒ\X#9ë(È9Þᆬ£ çx‡;²Ž‚œãî`È: rŽw¸ƒ!ë(È9Þᆬ£ çx‡;²Ž‚œ£ ç`È:ÞqŽw¸chçxÇ9Þ±w´¢n`È: rŽ‚œÃï8Ç;þÎñŽs¼ã Y‡; âŽwœãîxÇ9 ⎂œãîxÇ9ÖñŽs¼ãqÇ;Îñwü€²ÀŽ5¶üzv°x‡;ìQ`ô¡˜Æ0†± :»ƒ!î8Ç;Ü|ŽwÐâÖÀ8° `€ƒØÀ5°A ìcûÔÀ5°A ꃃúØ5°Ag4ãÔ5¨¿}ꃃÔß>õÁA êoŸúà 6¨‘‹^°êj ¾í£>p êÛ>êj ¾í£>p êÛ>êj …fØ>êj ¾í£>p êÛ>êj ¾í£>p êÛ¾ñËeÀ†í£>p êÛþ>êj >j€…f >p êÛ>êj ¾í£>p êÛ>êj ¾í£>p êÛ>êj …fØ>êj ¾í£>p êÛ>êj ¾í£>p êÛ>êj ¾í£>pPqx‡sxì8‡ä8‡wÀŽsHŽsxì8‡ä8‡wÀŽsHŽsxì8‡ä8‡wÀŽsHŽsxw8‡‚†8‡w8‡wp‡‚‡wX‡sx‡s`wxXx;x‡sxw8‡‚X‡‚8†p‡ux‡s(ˆsx‡s`ˆs`ˆs(q(ˆušw8‡wp‡u`wX†øK€wxj€½sà…Tþ ‡½á‡\¸…ñøM€…sp‡z(¨&˜Ç]Ø…a ³wp³wP„wÀŽ‚pG_è_XtXTð…Ì_È_È…ô…\ˆÈ\ð…^Èeð…^ð…\ˆHG_è_ÈRˆ„^ˆÈ^ð…\ˆÈˆì_È–TÈ^ð…\PÈVP…Ô]ˆI…ì_Èžì_Èžì_Èžì…$g`É^ð…\àÉ^ð…\àÉ^ð…\àÉ^ð…\àI…leˆIfH†\À…˜ì_È_è_ gð…1Hƒ4€NÀHÈ_è_Èžì_Èžì_Èžì_Èžì…$þgPÈ[@…[ð…\àÉ^ð…\àÉ^ð…\àÉ^ð…\àÉ^ð…\àÉ^PÈf(ˆsp‡‚X‡w‡‚8w(ˆuxq(ˆsp‡‚X‡w‡‚8w(ˆuxq(ˆsp‡‚X‡w‡‚8w(ˆuxq(ˆsšu(ˆup‡‚X‡s(w(wX‡w8ìxYh4(ˆs`ˆsx‡sx‡uxqxw`ˆu(ˆs(q(ˆsXh<‡w8‡wX‡wyx‡sp‡w8‡w8wx‡sx‡sRhì°†½Ù›-Ø…PxH(Cp…ð}p‡$!ØXxw°w8TÀ‡vh|h|@þ0‚wØÀŽ‚ †s(ˆu(G †^ð…^¨„tHdH…[p_è…Ìpƒ^¸R_è–\ˆÈ^pk`I;Ð\ð4pR_¸Ò^È…˜dS=ˆÉ^ gè_ÐbPH6Í…8p9_`Ó\ˆI6Í…˜Ä…Hè…ˆÈ\ e¸RKh9°Kð…^ˆ‚^`I6Í…˜dS\ˆZx…dÓ\ð…+%…f`Ó\è…K(hè…[@ƒ8p"€…[pR#èRh_°``0ex' _`Ó\ðZx…dÓ\ˆI6Í…˜dÓ\À=ð…\ eþ€J€tHJpJè…8P!€…T\@‚WP\ð…Up…ì…8P9ˆI=è…[肘dÓ\PÈ^È…^8†8‡wph<‡wph<‡wph<‡wph<‡wph<‡wp‡¡9‡u8‡‚p‡sx‡sx‡sxwHŽs(ˆs`wxXx;X‡‚X‡sx‡s€Fw(ˆsx )ˆu(w`ˆu8‡wX‡sx‡s`ˆs(ˆs(ˆsX†p‡u`ˆ!°Xp‡w † -R˜²%ÛAè ‡,H)x!ØXÀŽzp‡sX…m¸[a}@sØ!P‡.RØn€þ0ˆwxK°†Tð…^xdXd TPZ_P„8h€8Ђ!ð! ‚^0‚Wø_èG°_È_È…*„\è‚^@È…8pA¸-Y)°_‚!ÈÐXЂ!„\ eðI b„\Ð…ä4\P„\QÐ#¸-AÈEp9ˆƒÀ‚ˆƒ!ˆ…^€…fÈ5†R؆RP5 …ˆ:P1\‚!è…8Ð"È_‚!è…8Ðh,ˆ_P_„\h…fÈ…` V\(„Kèþ…U è:ˆUpYð…^ …fÈ$˜€@èÀ8è…èZÀ-ø9x…6è-ˆ\‚!À$‚^ˆ-‚^ˆ.-È‚^P„[ƒƒ8h9ðXð…Hx¨ã:f_YàƒˆZÀ;ˆƒWP_ø-P\È…7ˆ_x6p-_`è„6À$ ‚^ˆ1‚X0…l†w8‡u(ˆs(ˆux‡sX‡‚8‡‚X‡w8‡u(ˆs(ˆux‡sX‡‚8‡‚X‡w8‡u(ˆs(ˆux‡sX‡‚8‡‚X‡w8‡wp‡‚8†p†8wx‡sþX‡‚8‡‚8‡ux‡sxYh7(ˆs(wX‡w8wHq(w(ˆuHŽux‡s`w(wx‡uxwìx‡s(ˆsx‡sxwøRì°†ò(~øS¨Ç]…]ð‚ñðzè‚$è‡yøM€ì°‡sp‡Np‡mІm|`„` è"ø- #Øp ‚wØìp„kСÖ>(jD@…ÐÈ XX È…„90‚XxÈ…Èeplè…_x†*Àƒ8ˆ_ …Up_h…\€€WÀ€\‚@ 8‚@à#^x hXðþXp_@d@TÐ…|Ð…^XHäðRÀ¸ÈX@€…WÀY_ …\€€Upe9à#ÈRPKP_(…mP…^PƒRˆ€À€^x@ (@˜(Ø@à#@xð…ð …¸ÈXðR`Y€ƒ)øî)¨„JèTPÐThÀ‚\ eð-8P&H5x†pÒNЀ\\Ð\ЀX È!ƒ90‚>ˆ `è…xðXð…^ …@£„dho„-ˆ„pþƒè…WPX9 P_QÈFP:€‚è…Wp!ƒ90‚F0‚XP†\P†X‡‚8‡w8†X‡‚8‡w8†X‡‚8‡w8†X‡‚8‡w8†X‡‚8‡w8†X‡‚8‡w8‡uxìX†X‡s(ˆsx‡u`w8‡wX‡s(w(w€…g@ƒs(ˆs(ˆs`ˆu8‡äX‡w8‡wp‡sx‡sx‡s(w8‡wp‡u`ˆs(ˆu(ˆs(wX‡w8‡‚X†øK€wxjˆhòè›Ab'ö/˜‡.ðmH"ØXÀŽ~ÀŽNÀ‡mþ0†}Ї~àx‡6@"‚aH"Øp ‚wØwxK°M€b€‡Kp†+]è„ "XXÈ…àw4!ð€WP\¨^ðGÀL`*¨‚@h4è_@ÀpX…ˆ…UP8"°PÈ8,ðRP†^ð…UXM x Mx@ðe_ø`€XˆÈQx€…ÀÐxè…ð…WP_ …gèK„R؆RAÈ…h_Xð…ˆTPˆTˆP"ƒè…Wp^Whþ~ï…86 Kp_pX|XƒB`TPh*0‚UZ …^ gð…886Pƒ1K5Y …UP\_x*PƒXÈ…ˆ…UPp†WPð… …x…Ðxð…XPÈVP\ „dز­†]H„ðFˆð…UPxX@PÈ_ #`@…_xX@…^x!€eè€hvλwçÞ­s÷îÁwçÞ­s÷îÁwçÞ­s÷îÁwçÞ­s÷îÁwçÞ­s÷îÁwçÞ­{'Sæ¹wçþÞ“ynÝ;wïÎÍ|çNæ9™çܽ£õÌλu2ÏÉ<·ÎÌsëÞ¹›yÎÌu2Ï=÷îÜ»sïÎ{wîݺwçÜÍ<çîݹwç†jEÐÚ¿¾~ÿ>Z"XðŒ¾>ü啪ŽM­Úsw>|úðáëH‘;qê6]C£V'u°ä)"般K’Ò]êåË×*½èyá"Æ+¯\ÐRäÁ…7*<¬RákD®^ŽÀ9ÃTŘ.h|õZEB$ V©ÈÇ Š<¸óDE'0²øjõlv¯X±4¥ÓëÕ1Fà Üâ XÄ¡‚«àB ´€ð¸@€Åþ¹¬¢‚/­(“K/½ÒF ½Ì‡«¸àËDÈ*|ˆ"¸ÐÆÍà#ôò‚ 1Ü¢Y4ÓŠ3¹ì‘d’ ‚È*.„Ћ/¬b€ FäÒŠ2¾€a‡(j°¦!¨@‚.ø2‚/t ˯¨@ €Èʬ¢Â¾ŒÐ˽¼ B ¯¨à˾D€E/¤(“K„²K(ôáK.D G*¼ Â«¨ H 0¨Ð‹/|à‚±„ Â¡B'.ÄáÁŒàË**Ä¡‚½ø¢ŒLçÌôÎ93Sì93Sì93Sì93Sì93S,AçÈäÎ:3#þ“;ŽLëœóŽ;ëÌ´Î;îœÓK3hÈtÎ;ëœ#“;ïœ#“;︳Î9ï¸óÎ9ï¸sŽLë¼sÎ;çÌ´N±2#“;ëœ#“;ëÌ4„%°¸ó5~‘ìW?'£|ò*1ôóO?ÿô3„%°¸sŽ=îœóD'¢ð¬ˆ(€ÈäÎ92¹sÎ;hãN<9‚M,¹ rI,½øRõ‡Æ¢Œ2¾\íK/¾äâ -±ôâˇUûâˆ8ú"ø…/¹øÒ -´ôB‹/ÍÐ FTˇ±øru.¤<Ó‹/¹øÒË*’0ÒËݽÜÝ‹,´|˜K.U¸Š ½ø‹/´ô’ 3ÊøÒ‹/¶þâŒæ¹ôRu/¾¼~µ/Í|¨L½ ­u/U7ƒ‹2¾ô‚6-WûBŠ2¹”J ”±"¨ÐC.*Su/¾äÒŠ2¾|èË3c°F/¾äâK/UkÞK,± K/±ôâËÕÊ|èK/h£}u.ÍøB­PF.úà/lÁ }P†/Tà@ôBWë…/h¶\4ý Å‡BÐ þU­Uë…/zá Zø¢¾ÈE/š1q¼ã29ÇLÖñŽsÈä3YÇ;Î!“sÌdï8‡LÎ1“u¼ã29ÇLÖñŽsD&ë È;ÎñŽu¼ã2!È;Î᎙¸ãçxÇ9"Y4 î˜Ø9þеwÈÄ3Y‡LÎ1“sÌdï8Ç;ÎñŽs¼ãëx‡;f♜ãîxÇ9ÞáŽB±FÉ*iÉ~ô¥~Ñ)`áŽw؃ çxZÜñw¼ÃïpÇ;Bw¸C&î8A,_Ð"½¨Z/|Ñ _äÂÊ@[.|‘‹ù¢USF.|Ñ ´5£Ž FÕ®¦Œ«ù¢Uë…/rQ5\ÀÀWó-|ñ:_ä­P†/zá‹^ȹ¸ZÕ>ä‹ù"UëÚpá_ô"ªÚ‡Ð¦9R(ƒ½È…/rÁ?Í¡íCqÈ…/®– þ]͹ðŇÐÖ X0ãuš«Z/nþ1„^ íCüƒE3|‘‹^øânUÓœ/zá‹¡­¹è…/zQµ\ø¢hëEÕzá‹åâj Ô)œá \äB½`F3ª– þõBk¾Ðœ/rÑ‹\ø‚½ðE.>‡\ð¯¹ðE/ªÖ‹ª}Ƚ@Û;Ö1wÈdï8Ç;ÎñwÈdï8Ç;ÎñwÈdï8Ç;ÎñwÈdï8Ç;ÎñwÈdï8Ç;ÎQ¬s¼ãï8G±ÖñŽs¼Ãç(Ö9ÞqŽuÌ$ïpÇ9zñ ;¼ãïpÇ:drŽwœãhyÇ9drŽw¸ã3ÇLÎñw¬c&똉;Î!“s¼Ãë˜É9Ö1þ“Xîx5,iÞóþƒ›€Aîñw¼ã2q%}ãq‚¼ã;ÞáJGˆãC¾ø/zá‹\(ãCšë…/rQµ\ôÂWóE/|q5_䢎ÀF/@Xµ^ø¢¹ðE/|Ñ‹ªå¯óE.z¶^ø¢¹ E3rQµñ¯¹¨Z/rá‹^T­¾ÈŇ|ñ¡ª)m¹ðE/rÑŒªõÎðŇrá‹\(m¹P†/zá‹\(ýð…æ|‘ _|(hËE/|‘ _äâjU#…3|‘ ´M¾øPÕ&è R<£j½@[/ªÖ _ô¢jB›2rQµ^ø¢¾ÈŇ|ñ!þ_ômÊðE.&ˆ¶\½ðE.”Ñ Z|ÈšóE/|‘‹^ ­hëEÕzá Íõ¬Z/|ñ!_|¨j½ÈE/rá‹f¸C&çXÇ;Î᎙œC&ëxÇ9fr™¬ãç˜É9d²Žwœc&çÉ:ÞqŽ™œãçxÇ9ÖñwÌäë8G±Ö!“s¬C&çx‡;ÞqŽwœãçxÇ9zÑ 4¼cçÉ9Þ±™¸£Xâ˜Ø:Ü1“uÈäîxÇ9ÞáŽwœ£Xë ZÞq™¸ãçxÇ9†@ŠVÄè9Ét° XÄî8G±\ùWžãîX‡LÜqúºCöXº=äѦþëÃú°‡>ô!~T½öG?ô±t}Ø£L·‡>öa~0½ö¨Ç>ê¡z,½KïÇÒõ1v{èÃU_z?ª~÷±×cìýXz?–Þ}ÔCL×ÇÒõQ~È£K×ÇßíѦ÷CLï‡>ì¡¥ëƒéU·G?ÆÞyôÃúXz?ìQu},]ý¸{=*¯yôcéú¸{=–Þ¥¿¾w¯‡=ô±ô~,]öèÇÒõ±t}Œ½õ°‡>ì¡{ôCý°‡>ê±ôª/]Lׇ=êÁtyôƒéú¨G?ìÑ{È£öÐÇßû¡Ê룕¯ÿõÁ{ð_Öƒ=Ôƒ= ÿþÙC=ØÃÖƒ=Ôƒ=0 =Ôƒ=ðŸ= >ÔÃÒ =èƒ= =ÈÿùƒÚCÚC=4ƒL´Â3ØÁLœÃÄœƒL¬C±¬Ã;œÃ;¸Ã:¼Ã9¼ƒ;œƒLœƒLœÃLˆÃ;œÃ; ÅL¬ÃL¸Ã:ÌÄX,¸Ã;PÍ13œ×É Á&ÀA܃L¬Ã9¼Ã9Ä:¸Ã;¬Ã;¸ÃÄÈ„;¬ƒ+Ã;œƒ;È„;œAœÃ;¸Ò; …;ÌZ¸Ã9¸ÃLœƒ;œƒ;¼ƒ; A ÅL¸Ã;„LœÃ;œÃ;¸ÒL Ý; …;¼Ã9¸Ã;œÃ;¸ƒL¸Ã;¸Ò;œƒ;¼Ò¼ƒ+É}Ãþ;¸Ã9¸Ã9¸Ã;œÃL ;ÈÒÒ¸Ã;Ä9¸Ã9¸Ò;œÃLœƒL¸Ò¸Ã;œÃ;¸Ã; ;È„;ÈZÄLœƒ;¼ƒ;¼Ã9Ä;¸Z¼Ã9Ä;¸Ã9ÈAœƒ+½Ã9¸Ò;¸ƒL¸Ã;¸Ã;Ò¼AÈÄ9¼Ã9Ä;¸Ã;Z¸ƒLÄ;Ä9¸Ã;œƒ;È„;¼Ã9¸Ã;œÃ;œÒ¹Ã; +½ƒ;Ì„;œƒ;¼ƒ;¼Ò¸Ã;„L …;¼Ã9¸Ã9¸Ã; …;¼Ã9¸Ã9¸Ã; …;¼Ã9¸Ã9¸Ã; …;¼Ã9¸Ã9¸Ã; Å;Ð×;¸Ò;œƒ;ÌÄ9¸Ã9¸þƒL¸ÒœÃ;p$Zä‚LÀÂ3 Á;Ä;œÃ:¼Ã9¼Ã:¼Ã9¼Ã9ÈÄ9ÌÄ9Ë9ÈÄ9ÈÄ:ÈÄ9¬ÃL¬ÃLœÃ;œÃ;œÃ;œƒ;¼Ã9¼ƒ;ü)ÈAXzå‚+ü‚!B.4ƒ8üÃ+äC$$A_ü€%ÀA؃L¸ÃL¸ÒL„LˆÃ;¬Ã9ÌÄ:Ä;¸ƒLœƒLÄAÈ}É} AœC±œÃ;¸Ã;ÄAÈÄ9¼Ã9¼ƒ+Ã;¸Ã;¸Ã:¸Ã; Ý:Ä9Ì„;ÈAÌ„;¼A¬ƒ;ÌÄ9LŒ;œÃ;Ä:Ð×;¸Ã;¸ƒL¸Ã;¸ÒLœÃ;¸ƒLÄAÌ„;¬Ã;þ¸Ã;¸C<Ä9ÈÄ9ÌÄ9ÈÄ9Ë9‹;Ì„;œÃ;¸Ã9‹;¬Ã;¸ƒLœÃ;¸Ã;Ð×;¸ƒL¬Ã;œÃ;Ä;Ð×;œÃ;œÃ;¸Ã;œƒL¸Ã;¬Ã;œÃ;¸Ã:¸ÃL¸Ã9¼Ã9È„;¼}½ƒ;¬ÃLœÃ;¸Ò9ÈA¼Ò½Ã9È„;¼}É„;ÌÄ:ÈÄ9ÈÄ9¼ƒ;¼}Í„;œÃ;¸Ã9ÌA¼ƒ;¼AÈA¼ƒ;¼AÈA¼ƒ;¼AÈA¼ƒ;¼A¼ƒ;¼}Ã;œÃLÄ9È„;¼A¼ƒ;È„;¼GºƒL(Ã;œƒ,4ƒ¸Ã:ÌÄ9ÌÄ9¼Ã9¼Ã:œƒþL¬Ã9ÈZ¼Ã:ÈÄ:¸ƒL¸Ã9È„;Ì„;¼Ã:Ë:Ì„;¬ÃLü€%À‚;¼5 ×LóVÃ4p‚7ôƒðC.$A*Èl,¸Ã9ÔÃ;œƒL¬ƒL¸Ã; …;¼Ã:œÃÄœÃĬƒ;ÌZ¼Ã9¸Ã:¼Ã9¬Ã;Ä;D±¬Ã;œÃLœÃ:ÈÄ9¸Ã9ÌÄ:È„;¼ƒ;¼ƒ;ÈÄ9Ì„;¼Ã9ÐW±¬Ã9¼ƒ;¬ƒ+½Ã:¼Ã9¬ƒ;È„;¼Ã9¼ƒ;¼Ã9¸ƒLœƒL¬ƒ;‹;ÌÄ9¬Ã;œC<œƒ;¬AÈÄ:œAœÃLÄ:ÈÄ9¼Ã:œÃ;œƒLœÃLœƒL¬ƒL¬þƒ;ÈÄ:ÈÄ:¸Ã;¸Ã;¸ƒLœÃLœÃ:¼ƒ;ÌÄ9ÈÄ:¸ƒLœƒ;ÈÄ:¸Ã;¸ƒL¸Ã;¸Ã:¸Ã;Ä;¬ƒL¬ƒL¬Ã;œÃ;¸ÃL¬ÃLD±¬ƒLœÃ;Ä;¬ƒ;¼A¼Ã:¼Ã9„L¸C<ÈA¬Ã;œƒ;ÈÄ9¬Ã;Ð×:¼Ã9¬Ã;¸ƒLœÃ;¬ƒL¬Ã9¼ƒ+­}ÉÄ9ÈÄ9hê;hª;¼Cð¾Cð¾A¼Ã9ÄL¸Ã; AÈÄ9Ð×;œƒ;¼}½Ã9Ä;¸R.¼ƒ;ÈB3 <¼Ã9Ì„8Ì„;¼ƒ;ÈÄ9¸ƒLœÃLœÃ;œƒ;È„8ÌÄ:¸Ã;œÃ:¸Ã;þœÃ;œÃ;œƒ;¼Ã9ÈÄ9¼Ã9¼Ã9 )´AXz™Â4ìÂïÂôÃ?ø=HAT+ü€%À‚;¼ƒ<¼ƒ;œÃ;”ÃA)¬ÃL„ƒì€L¸ÃœÃ‚ì€L¸ƒL¬ÃÄD±¬ƒ;¼A¬Ã;œC±¸Ã9ÌÄ:Ë9ÌÄ9¼Ã9¼ƒ;¬Ã;œÃ;¬Ã9¼Ã9¼Ã:¼ƒ;¬ƒL¸Ã9¼ƒ;‹;ă;ÈÄ9È„;È„;œÃ:ÌÄ:¼ƒ;¬ƒLœƒLÄ:œƒL¬ÃL¸ƒLœÃ;¸Ã;ÄĸƒL¬Ã;Ä;œÆÃ9È„;¬ƒLœÃ;¸Ã9È„;¼AœÃ;œƒ;¬ƒ;¼Ãþ:œƒL¬Ã9È„;È„8¼Ã:‹;¬ƒLœC±œƒL¬Ã9È„;°á9¼Ã9È„;¬Ã9¼Ã9¼Ã9È„;¬ƒL¸Ã:œƒL¸Ã9ÈÄ:¼ƒ;¼ƒ;¼ƒ;Ì„;¼Ã:¼ƒ;œƒLœÃ:È„;°¡L¸Ã9Ì„;LÌ9Ì„;œÃ;¸Ã;¬ƒ;¼ƒ;¼ƒ;¼ƒ;¼Ã9ÈÄ9È„;¼A¼ƒ;ÈA¼A¼ƒ;ÈA¼A¼ƒ;ÈA¼A¼ƒ;ÈÄ9°á9°¡;œÃL¸Ã;œƒL¸ƒL¸Ã9°¡+=Ã;œC/<ƒœÃ;¬ÃÄœÃ:ÌÄ9ÌÄ:ÈÄ:œÃ;¸ƒL¸C±œÃ;œÃLœƒL¸Ã:Ì„;¬Ã;œþƒL¬ÃL %À‚;¼5 —)„Â.„Â.„Âô…ÐCø@?Àl,ÈD=ÈÄ:¼79ŒÀ7¨Â;l‚9X¼ƒ(d ¼tB$ìÀ;àB¨‚;àÂ9¬ÃLœƒLœC±œÃ:¸ÃLœƒL¬ƒL¬ƒ;ÌÄ9¸ƒL¬ƒ;ÌÄ:¼ƒ;Ì„;È„;¼ƒ+ÍÄ9¼Ã:¼Ã9ÈÄ:¸Ã9È„8ÈÃ;œƒ;¼Ã9¸Ã;¸Ã;œÃ;¸ƒLœƒL¼Ã:œÃ;¸ƒr£Å;œÃ;¸Ã;œÃ;¸Ã;Ä;¬Ã;œƒ;ÈÄ9¼Ã9(·;(÷:Ä;œƒLœÃ:¸Ã;œÃ;¬Ã9ÈÄ9¸Ã;¬ƒ;È„;þ(÷;¸ƒr»ƒr»Ã;œƒL¸ƒLˆƒL¸ƒr¯Ã;œC»ƒLœƒ;¼Ã9¬ƒLœƒL¸Ã;œƒ;(·;¼Ã:¼Ã9Ä;œCŸƒr¯ƒ;(÷9¼Ã9¼Ã9¬ƒ;(÷9¼Ã:¼A¼Ã9¼Ã9¼Ã9¬Ã;ˆÃ;¸ƒL¬Ã;ˆƒrŸƒL¸Ã;¬CŸC¿ƒ;ô·;ô÷9ô÷9È„8Hù9È„8Hù9È„8Hù9È„8ÈÃ;œƒLˆƒr‹ƒL¬CŸƒ”¯ƒLˆCŸƒLˆƒL¬ƒ;äÂ;œƒ,<ƒœƒ;¼Ã9¼Ã:È„;¼Ã9ÈÄ:¼Ã9¸Ã;œƒrŸÃ:ÈÄ9¬ƒr¯ƒLœƒrŸÃ;¸Ã;œƒþL¸ƒrŸƒ;¼Ã9¼ƒ;ü)ÈAXƒyŒ'ÈÃÝÕC÷þ×üÛC=èøãCÿ„= 4xa½ý Ô'P_C‰ ê;¨¡>„úê+¨o >Šõé3¨Ïž5}îÞõz÷NÖ34/Ï­s÷îÜ;w/ß¹{wîå:žëܽ\Çs»wîxòt箩»—çÞ¹{wîݹ!¤Z=µölX±ýý¬,K°Ü½“÷òœ;t †xp÷ tCv¼‚†º!èˆìx'I–wTι;çîÝ9ÉçÞs÷ÎÝ;ÉOϹ{wÎÝ»§çܽ<çîåSÕïÜs÷Nµ»—OϹ;÷ÎäwO_>•û»w±Ýs÷îœês<Ϲ{éî»wîι{þ÷ôÝSɪßI~§úÜ;w/Ÿ¾s'ùÝÓwîxNv÷òœ»wîÞs÷N²»w’ŸJ~úî©sT;ç©wžzG²ØÞyêw&‹íwÞ!N2wÞqç§ÎQ휧ޑì©ÉÞqçwÞqG²§ÞQm2w^zê§ÞqçwÎqçsˆsçwÞqçÉžšì©sb›ÌwÜyç©ÉÜyÇwžšÌwÜyç©ÉÜyÇwˆ{GµwÜ9ÇwΉM2wÎQíÕÎQíwÞÁÆž§šy käàÉsx:çq^Z‡'wÞ9‡§sÞ9çsÞQíqxç%wÞç%wÖáéœuxÂXÜy‡š²þLý§°úéçŸ~Êê‰M`qçz^ÇžäyǦÞ9ç§Þqç¥!x:ç%wâyêx^rçuÜijwÞyê§ÞqçwÖqçØÖ!îØâ9ç©xÜyÇwÜáIµwÎyꥧâ9ç©uˆ{gwÞQíÕÞ‰mwÞ9çwÖyj§^zjw^zjwÞ!Nµ—ÜycžT{ç©uÜyç©—žziw^RmwÞyê¥ub{Çwb[Gµ¦ÜYcwÖyЧsb{g§ÞQí¥uÜáÉwb{Iµw܉‡§ØÖ!îwÞy*Œß‰-žwžŠç¥uÜyÇužŠç%Œy˜'þŒyRmÕâ9ãxžzç©uÜy'wÞqçâÞq'žsT{Ç{žjæœwZiwÎáéœu|=çs^:çuÎáÉžÎyÉžÖñµ©sÞ9ç%wÞ9çw~ E–§¬äÞ}ÿÝ÷ ¨à €¯à‡MZqçy^:ÇwžZçwÖQí%âÞqç¥s^RíÕΉíwÖyç©wžZ'¶uT{ç©uT{Çwb[ç)É^’lØÎYG5ëxÉ:Üñާ¼ãïxÊKÎÕ¼ãñxÊKܱŽw¸cªy‡;Öñާ¼ã)ï8Ç;â›uÄæO‰GÏÜñŽs¼cî8Ç;ÜqŽxþÄfªyÆÖ¡šw<%î8ÇKž²Žs¼ÃïPÍ9Þñ”u¨æîXÇ9ÞØÄÃ爇jÞáŽwöÑUöc•ýXe?VÙUöc•ýXþe?VÙUöc•ýXe?VÙUöc•ýXe?VÙUöc•ýXe?VÙUöc•ý‡5šqŽ´¬ãÍ0‘8ÇIÎršóœèL§:ËùŽs¼cçxÇ:çIOjŒóïpÇ;¨Qwœ#ï8G/š†¤Å|YÇ9ÞqŽ´¸ƒ/îxÇ:Þq¾¬ãçxÇ9Ò"Žwœãçx‡8†å—wœ#-îxÇ9ÞᢱÆ?fJÓšÚô¦5Â&ZñwÈ#-~y‡;ÖQ½s¼Ãë¨Þ9ÞáŽuTïïpÇ:ªwŽw¸cÕ;Ç;ܱŽêãîXGõÎñw¬£zçx‡;ÖQ½s¼Ãë¨Þþ9ÞáŽuTïïpÇ:ªwŽw¸cÕ;Ç;ܱŽêãîXGõÎñw¬£zçx‡;ÖQ½s¼Ãë¨Þ9ÞáŽuTïï8Ç;ÖÁjØ¡òH­jWËÚÖºöµ°­lSkyâï8Ç;ÜÑŒ}ÈéµGjí‘Z{¤Ö©µGjí‘Z{¤Ö©µGjí‘Z{¤Ö©µGjí‘Z{¤Ö©µGjí‘Z{¤Ö©µGjí‘ZgX£zâ‡=RkÔÚ#µöH­=RkÔÚ#µöH­=RkÔÚ#µö‡=Xû k`òHK/ÞáY<ÃIË9ÞqŽw äëxÇ9Ò²¾œƒ/çxÇ9þÞáŽw¬£zëàË9Öq¾¬ƒ/îX_†` X¸ãÔÀ©…ÜÁ°pÇ;ê‘q¼ãîxÇ9ÞqŽ´¬c ï8Ç;Α–u äçxÇ9Ò²Ž¼ãï8GZÖ1wœãçHË:òŽs¼ãiYÇ@ÞqŽwœ#-ëÈ;ÎñŽs¤eyÇ9ÞqŽ´¬c ï8Ç;Α–u äçxÇ9Ò²Ž¼ãï8GZÖ1wœãçHË:òŽs¼ãiYÇ@ÞqŽwœ#-ëÈ;ÎñŽs¤eyÇ9ÞqŽ´¬c ï8Ç;Α–u äçxÇ9Ò²Ž´œ#-âx‡8ÜÐy¼#µïHí;RþûŽÔ¾#µïHí;RûŽÔ¾#µïHí;RûŽÔ¾#µïHí;RûŽÔ¾#µïHí;RûŽÔ¾ƒµïÇ;HÑŒ´øÅýxGjß‘Úw¤ö©}Gjß‘Úw¤ö©}Gjß‘Úw¤ö©}Gjß‘Úw¤ö©}Gjß‘Úw¤ö©}GjßÑÚgXãçHË9ÄñŽÔ¾#µïHí;RûŽÔ¾#µïHí;RûŽÔ¾#µïHí;äñŽÖ:Cy‡8êáŽwäÂï€Å3ìðŽs¼c|9GZÜÁq¸ãçHË9Þ±Ž´œãçx‡;Þq¾¸cXîHË9ÞqŽwœãçpÇ;ÎñŽsü€²ˆ5†Ìþù›ê`­ˆ<Ò"Ž´œ#-ë–;Α–u ËçHË:†åŽs¤eÃrÇ9Ò²Ža¹ãiYǰÜqŽ´¬cXî8GZÖ1,wœ#-ë–;Α–u ËçHË:†åŽs¤eÃrÇ9Ò²Ža¹ãiYǰÜqŽ´¬cXî8GZÖ1,wœ#-ë–;Α–u Ëçë0,çðîÀî@ v`Ñ DÛP=8|ñò –ðŠàÃâ;@ 8îP=¤ð çÀÏ`ïZïòð©©õñ ïZñZïòð©òðÀªð©©õñ ïZþñZïòð©©õñ ïZñZïòðÎð ïçðç@ ïòð©©õñ ï ªÅ–ò ªZñZïòðòðªÅÏð iqÔ`i¡ ïp­Ð rÀçðëçðî°|qi±|áçðî°iqëçðçðâî°ò|áëÀ?` °àï@ ×yðP ÿ0–Ð çðõâðîðçài!ï0ïpîâðñçài!ï0ïpîâðñçài!ï0ïpîþâðñçài!ï0ïpîâðñçài!ï0ïpîâðñçài!ï0ïpîâðñçài!ï0ïpîâðñçài!ï0ïpîâðñçài!ï0ïpîâðñçài!|qï°iáØ`öðç ç F qP ·0ÁÐ ®€ ª ¿ðR` æYàçð;° Q@â ¸0Á h;p° @Ç Š ~!Y@ç Yð¸ Áàïàçðâð¤þÐ ïpîpÏ`ç°2ð0ÐîÀ™ç0çàç°œ9çàç°ç D0ÌÐ DàëÀ™î *@¦›qO›ç0çàç°°éçàçà Öpi1Öàçà©î 60çà~Á œùÝ@ïàÝ0îÀ™qîpñàë€çà Öî@ õ0¹­Ð hðâçÀëðçðçÀ~ñçðçëài1ïpxïpïpîðççðçðî0¤Ð a œ¾`Sý€ ˜0 …À ?° ­ðî þiqî°iq|qï°iq|qï°iq|qï°iq|qï°iq|qï°iq|qï°iq|qï°iq|qï°iq|qï°iq|qï°iq|qï°iq|qï°iq|qï°iq|qï°iq|qï°iq|qï°iq|qï°iq|qï°iq|áë0,ââàõ@ç ?£  ``6P? Ñ€à` \0 ¨Àâð„pC€É``Ð p5Àð 0ÞPþÂÀj`†Pð£ ãàààâðâàï ïp¤  ëðîàÌP~!†Y°R /@FÐ P`C0£ðD` ©.` ~!â@;Ð Cp *ð¿àIâp/p„ €¦ÀR° B@F Fðpëç  Øðëç œi0T𠊀1 ;p¢€1Ð @FÐ D *à¿D~Açðç°œé Ïî€ öð°Ïðî Î`iáïpïpïpi±i±iái±ïp|þ!iáëëpïpïpïàëÀî°ïpi±|1– îðÔpS4Õ]à ¾PSý€70¼™PÄ ª îðõâçðëîðîðçðëîðîðçðëîðîðçðëîðîðçðëîðîðçðëîðîðçðëîðîðçðëîðîðçðëîðîðçðëîðîðçðëîðîðçðëîðîðçðëîðîðçðëîðîðçðëîðþîðçðëîðîðçðëîðîðçðëîðîðçðëçàïpïp|qØ`ö@ä àÀ F°â'@5`-0HÐä 05 Q âðá@C@1 '@5Ð Hp;ðÁàŠPPã YDðCPâ@ÝÐQâpâpâpâà¤à îç  öà2ð P 5 á@â âD€00/ ÛPDYÇ2 PPÝ05 Iâ0ß © /@/ ÛPç þÐ DÐ :Ð D@ç ç ç ï  ÔpïpïpÖpâàG0 @ŠÐ Ð C ;  Ð D 5Ð D°RC*ç@â ç@)ýãà Öî` öàçÐ çð°Ð hP=ëðîðçàiqïpï°ïà|qî0,îðçà|±iqîðçîÀçàïpïp?@ ²ð°Ö »4ýÐ4Õø S0×Sp …0›Ð kçð~Áîpïpïp|áçðçðçÀîpïpïp|áçðçþðçÀîpïpïp|áçðçðçÀîpïpïp|áçðçðçÀîpïpïp|áçðçðçÀîpïpïp|áçðçðçÀîpïpïp|áçðçðçÀîpïpïp|áçðçðçÀîpïpïp|áçðçðçÀîpiáë0,çØ`òà DPä0/ F` Bfpß0B© DP ãì˜  /ð1Ð C 5à DðPDð£0D C þâ C`æ@à@âàä` ï@ ʰ|¡ ò à2€ ¨`5ÔàØðذHP`Á€ Fð£Í à2 ÖPÝ0O0 ØÐ ä0¾` Œ`äð*Á€ FؾРCÐ CÐ Cð ½`½`¹0àð ØðëÀÔ ä ã áà Ý0äPá`Ø Ý€àðÝ0O0 ãÐ Ñ  ¸0··ÇÖ0Ê` çðî` ö½´ð vðëðçðçðçîpïp|qi±çðîÀçðþç0,ççî°ïpïpëpiáëÀ?` °àï@ jýýQ`Sý°k°¿…0‘ îpõâðç°|±ïàïpëÀëðîðç°|±ïàïpëÀëðîðç°|±ïàïpëÀëðîðç°|±ïàïpëÀëðîðç°|±ïàïpëÀëðîðç°|±ïàïpëÀëðîðç°|±ïàïpëÀëðîðç°|±ïàïpëÀëðîðç°|±ïàïpëÀëþðîðç°|±ûçðëçðÔ`ò0 n â  > ®àââðúÖ°úã àÖ à0†à ã0à à°ú«ã ØPÆüà0«âüÖâðú n ç@ Êð~ñÏ âŠ D Žâ C â@ ¥ –`B Ï€ Z@Ç` àà ¡èZ$jZ†À®“)ÔÀ Áô-J”g¸l네 4=Ñþ\³”MO6;áìX׌Ú;–çÞYœ5.Û¨Åƒæš pz°Å‰‚†Yœª˜EÂ&†H.QCd þ5@âÀ‰§ÌÚ»sï¬Ùs÷®×;w½š¡qÇò;µçÔ®{wN­8µïÖ½WwÝ»sïÖ©÷Î]]w,Ͻs÷îÜ;wCHµrçÎÚ?Ê•-çêgùŸ¼&;O*ôƒ”,–öν#ÇÒÝ»s,שu÷îËujݽ;ÇrZwïα\§ÖÝ»s,שu÷îËujݽ;ÇrZwïα\§ÖÝ»s,שu÷îËujݽ;ÇrZwïα\§ÖÝ»s,שu÷îËujݽ;‡¥uÔrçsXZG-wÞ9‡¥uÔrçsXZG-wÞ9çÈΩKµ¬±Ck¬l°ÁÊp¬Çlþd:1&lÀ±F¦˜°ÁÊkÀ±k°‘Ép°G˜°‘Ép°±Q&lÀ1&qHQæuÞqGy°¡æÄ˜°çÄ©Çq¨Ák°ÑaþGLl¬¡æD™¬ÁƬÄq㩱FΩ'&l¬¡k¨qÀ±FlÎY‡%wÀ±kÀÁ†šÅ91&ktÇp¬Ák°›˜¬p¬Á†l¨‡l¬‰ékXrÇ{"kæsZyÆwÖ9çsÖ9çuÞ9çwÞY§.wÞ9çwXZçsÞ9G-wÎQ+²wÄaÉuÔ:gµ†°wÞ¡F3þ}+ë§Ÿú©§ž}úù§Ÿztˆ–ÈêyÇqê:'²wΩëœÈÞ9§®s"{眺Ήìsê:'²wΩëœÈÞ9§®s"{眺Ήìsê:'²wΩëœÈÞ9§®s"{眺Ήìsê:'²wΩëœÈÞ9§®s"{眺Ήìsê:'²wΩëœÈÞ9§®s"céœuÜQkw¬±Cl¨¡æD¼±±FLk°Á[Lj°±æk°¡j°Áûp¬ùÆlÀÁÆj°¡fÄk\ÐA=ð>Ñj°¡fDÓ­‰ÉšÅi¥™wÜa©y¬¹Æl¨Áok®±j°¡æDk°Á›þk¢)>yjNÇÆl”?Ñš­¡FÎâ±)¼±ÁûÄf°qçsÜ9k®±jN¤jž¡j¬Áolžj°±†lð–6ðF k\cDÌp†5ÎkØÃçÈK`ñ 4ÔÅ‚,9Ç;ÎñŽs¨åïXÇ9XⵜãçX‡ZÖqA–œãç`‰;ÞqŽwœã¤Ed¬±/j¦–Â&dñw؃%â8Ç;ÖÁwœƒ%âxÇ:XâŽs°DïXKÜq–ˆãë`‰;ÎÁq¼c,qÇ9X"Žw¬ƒ%î8KÄñŽu°Äç`‰8Þ±–¸ã,Ç;ÖÁþwœƒ%âxÇ:XâŽs°DïXKÜq–ˆãë`‰;ÎÁq¼c,qÇ9X"Žw¬ƒ%î8KÄñŽu°Äç`‰8Þ±–¸ã,Ç;ÖÁwœƒ%âxÇ:XâŽs°DïXKÎñŽs°Ä,9Ç;"ƒ ;¸c€xÃ3¬AkXx³Æ5ø qâ ̰5ž·h\Óx³5¬AgPÃ×°Æ5L‡·k0ÔˆF4¨ kœÃÊpÇ:ÎñŽqXcâVÆŽqŒC­(8* ŽŠÊ£äF1 ŽŠ’ƒ㈠VD*‘’cà8DZQpTT¥8αŽþw¸ãÖ‡8À!RpC䘩8ÆaRp£¢1©¨8ÆAqŒCãGEÅQQqôB5ìÁ’gDFÍpƒ;ÖÁwœãçxÇ:Þq–¬ƒ%âP‹;Þq–ˆãë8KÜñŽs¼ãçxÇ9Þ±ŽwœãîX‡ZܱµüÀ°pÇ;¨ÁÃ~ô°2ý¨ ,‹w¸£,Ç;ÎñŽs\Ðï8‡Z`a4¸ h°ƒnk4¸á¶¹½­Ðà†Ûæö¶v@ƒn›ÛÛÚ n¸mnok4¸á¶¹½­Ðà†Ûæö¶v@ƒn›ÛÛÚ n¸mnok4¸á¶¹½­Ðà†Ûþæö¶v@ƒn›ÛÛÚ n¸mnok4¸á¶¹½­Ðà†Ûæö¶v@ƒn›ÛÛÚ n¸­Ú`‡Ûºá¶v@ƒÜ`4  hÈ­r+b;ˆØ hpƒÐ`4ØÁÅv@ƒÐ`ÛÁÅ"¶ÃŒ7ØÁ vpƒÜ`!çÖnÈ­ìà4€ÁÊn°ìà0¸¡­ )`æV„9Ì­s+ 3›¹ms+àüå/·¹p&ñÜŠ0·"Ì­°KÜñwœã²€E›[AŠVà¹Í°hs+ÂÜŠ0·‚­ E+ÂÜŠ0·‚шL<Üa {¸ãÍx‡;hÑ 7œþãçxÇ:ÞqŽwœãîxÇ9ÜaÁu¸C-ç°à9Ôrµ¬ãçPË9ÜñŽs¼ãîxÇ9ÞáŽ!¢‘±†gµm¢ïp‡=XBŽw¸ƒ%ë8Ç;ÖÁ’s¼c,EŒñ z×›ÞÆ°·½‘ïzƒßô6Æ¿a CàÆ¸1n CàÆ¸1n CàÆ¸1ìm {Cà¿0†1>nŒzãÆ ·1ìm zã߯ø…1~ò×œßÆøEÈóm z¢î`É9X⺃%ç° ;Xè–DÆïpz]ÜQw¼ãïpÇÝaA§»cjqz]œÎÂwDæþî° ;Xâ–¸ãî`‰;X–¸ãî°†=Üñ_¼ã½x†ÜQ—u°ÄëP‹;ÖÁ’s¼ãï8Ç;Ö¡w¬ƒ%âxÇ:XrŽw¸ãîXÇ9XrŽu¨ÅëPË, w¼ƒÛö¬?¸ñDï8G=X"–œC-çxÇ9XâŽwœãFà„'Lá æ{žà„'LÑ|O˜Âœð„)¨o Op¦ ¾)<Á O˜‚ú¦ð'SðNðS >SðNðS >SðNðS >SðNðS þ>SðNðS >SðNðS >SðNðS`>NàO0Oà„æ3O0ô4…A0NðNðäS0ôN`>NðôN`>N0O€ASàOàOàO BS€AOàO0Oà„A BSàSPXˆ…R0OàO€AS(XX0B"ô„A0‚Èx‡®³ upµˆŒwX‡º8wx‡®‹ µ8‡w8Ft‡ºpµ8‡xèºup–8‡w8wxw`‰s`ÄwÄwp‡w8wxwP‹ÈXwxw° sDF|‡sx‡È°{ˆŒ\x‡s…f@–þX‡sP‹sp‡w8–8‡w8‡wX‡º8–‡ rµX‡s` wP‹Èx‡s`‰sx‡sx‡søR…ȰÏòÏêb(‚Mh––8‡uP‹sxwx‡u8‡w8–p‡¸ƒ„„A(†O¸‚‡LÈAHȉ¤HS È‰„‹œÈAÐÈ„„޼ƒA HN˜ÈAÉAÉAÉAÉAÉAÉAÉAÉAÉ;„›¼ÈAÉAèÈAèÈA¸ÈA ÈAÐÉA¸ÈA HW …0‹X(…>˜ÈAP…V K°„^胉„;ˆwx‡Èp‡u8‡wX‡w8‡wˆŒux‡ÈP‹þsx‡u`‰uxwX±d‰u¨‹sxw8µX–X‡w8–8‡uK–8‡ºp‡wp‡s`‰ux‡È8–X–p‡sx‡u¨‹s` wP‹uP qx‡s` wX–KwX‡ÈX‡wKk°‡ÈxwxXx;8‡w8‡w8,–p‡ux‡sx‡sP w8‡u8‡wpµp‡Ãb‰s`‰sxwx‡sxwX‡s` wX‡w8–XµøK€wxjè¡~ƒ(ЀOð‡B †!°X8‡w¨‡w8rx‡sx‡ux‡s¸ up‡wÀ/PP/ø„bø„+00¥Ð;07þ„_˜ åÐ¥Ð/(õÐ_è/ˆEÑUÑeÑuÑ]Ð/€ÑMÑ>X8{e€…RXÐ^€…g{RÈ…; P–pµ8µ8‡wp‡w8‡wX‡w8–8‡w8‡ºˆŒwX‡w8–8‡uP‹ux‡sX‡sx‡spµX :–XµX–p‡w8–ˆŒxx‡s¨‹uxwx‡sx‡u`‰u8‡wX‡Èx‡s¨‹u¸ uxw`‰sx±Œw°{x‡sh–…f@–pµX‡ÈP‹ux‡s¸ sX–8µX–‡ :w`‰sxwP‹sp‡wþ8‡wp‡! …Vˆ kð¬.è‡(°ŒzÈ„)Ö)¨„J@Rh––ˆÓÁÓ¡Ó±j°†g @×+øSð„+¸ƒ-Øt•WtÝ 0ð46X„-¸K„-;À4t]-@×1 …@Ø/P)À ƒ@`m H„1°„@ØN°5`ƒyEÙ”UÙ•eÙ–uÙ—…Ù˜•Ù™¥Yt-Y8‡¨€xYh†-‚-he  Y(…yílסÓk kk k‡Á†¡†¡Ó¡kÀÓÁÓÁ†9‘þ¡Ó¡†1qj0jxZq¥†¡ÓÁk ÓÁ†¡q°jÀj¸[l¸[llj0j°†g°–ð…wpXx;xw`‰sxwP‹sxw` q` w8–p‡sx‡ux‡sx‡s¨ qx‡u8µXµ8‡u8–p‡uP‹!°Xp‡w ÏŠ‚\ð…è—è:àéå=(„€X8‡w¨‡wp{ßð_ñíyè€@_ø„‡¼ 0÷-@_ôõ„ 0ð„˜,ð„˜,ð„ 6ƒ@¸ƒÈ6Ø(Ðôõ„ 6àþ„@_èƒAhO8€O8hO8€È‚ùE_@a6ž_paô5. a a a á6â â!îaqÈ…s¸ƒ˜ØZ°†>(Axl WxWh†Vî€ðÕ|°‡zß0¶y_}ã0Ö‡ðÕ‡0®‡3vã7c}€ã9vc}_}Ð{Ð{wx‡\p‡wè…f@wXµ8‡w8–XwP‹G~‡upH~wx‡sXJ>‡w8‡w8H>‡wp‡w8‡w8‡ Yˆ kè¡~è_èÍØƒYžeP(„!Ø„Vxw–þËwp‡wp‡w8w8±<w˜€ `æ ø„+0@€ifffæf®1à/ðÈ€,ø!X!((h˜`f0à€ xXx„!à€ð0.ðÈ€.X!ðà)à€†nhfæ€ pè†ffÈ€‰æfæ€ Àhfæ€ Àhfæ€ Àhfæ€ Àhfæ€ Àhfæ€ ˜hfÆh`f¨æ›žif怛žé™¾é›žèŸÎ€™jqðkØ‚hx†-€pð‚ ¸rhk&0eho˜è Ësx‡sx‡Ãkwëw8¬þwXÍw8wx±|‡È8wx‡ÕŒ µp–p‡sp‡wK±>wx‡Ãr‡w8±|ºv–8,º~º>¬w@ìÈx‡sˆŒÃr‡w k–p‡Ãr‡ÃZ‡ÈPw8‡Vx;xwX‡w8µ8‡wp‡sX‡w8‡wX‡w8‡wp‡w8‡wp‡sx‡uP wP wXµp‡uP wXµ8‡uP‹°Xp‡w Ïê‡}Pà…ìþ]K€wx‡zx‡sˆ‡sËup‡wp‡xËwp‡s˜€  ïà€‡œf ïý¦oží)Ð €Ѐ €X€ €"X Xþ€ÈX€ ¸9ˆ!x(‚xÈ‚ (#À (,p ¸€,‚¸ àï§ñ·ñÇñ×ñÇñ ï°ñ˜ñàq€c°gØ‚;Ø‚;w  0wkpk(…fÀNàï 8w`‰È äx` w`‰Èx‡x8wˆ‡Èp‡x8‡È`‰up‡w€ów88çówàswx‡x`‰È`‰Èx‡?w‡xp‡w8‡Èˆ‡wp‡w8‡ÈX‡?g w`‰ÈX>‡È`‰?‡sp‡up–pµˆŒwè–h…f@ƒwpµX–X‡sxwP‹sþP‹s`‰u8‡wX‡sx‡sP qx‡Ãz‡s`‰sx‡sx‡Ãz‡s` wx‡sxwRh…ȰØ«Œ~ø‡~Ð …Vp‡w‡wp‡s`‰Èx8?‡ÈX8Ÿžµ÷Àñ¸ñ¨€ ož¥o{§ï x€ý¶÷€€¿÷¿÷¿÷¿÷¿÷¿÷¿÷¿wçYúæYú~€€ý~€ àÙ àÙ x€ ¸÷ x€ ¸÷¨€{ßožÝï{§ož¥ož­{¯€˜¯€‡h°†qYp‡;ØoSxZqx†^X¸÷ xw8–€óxxwx‡sx‡Èx‡þup‡sx‡sxw88?‡wX‡sxwxwX‡ÈX–p‡uxDw‡ux‡È8‡ÈX‡Èˆw8‡xˆŒuˆŒÃr‡ux‡sx‡sˆŒu` wxwXw8–ˆŒux‡ÈxwX‡sx‡xp‡sˆ‡ÈX8?‡wˆŒxˆŒu€óuxwhwx‡^x;p‡sx‡sx‡Ãzw`‰sX‡sx‡sx‡u8µpµp‡wX‡s äux‡sxwX‡G^µp‡uP‹!°Xp‡w †}Aÿôÿ‡!°„^8‡w¨–p‡w0‡! ‚RpH†ós˜ú~€ ˆ*¨ð Ë *°¬ð Ë *°¬ð Ë *°¬ð ˤ+4¬€°BÁ +<¨P°"Š VD80d„CV| µÂƒ €Ä{'Ž\=NV0eo¸wë€<ø Â„uïÞ{çnݹwçÞ¹{çn»wî»{çnð¹uïÜ ~wλwî:Ÿs×ù\¼wîÖu~çn°»ÁçÎ žíîèÁîÞ¹ëìîèwç@·^çî»Î ;Ï~wtëÁîÞÍv÷ÎÝ;wƒÏ¹ëõfh:¯s7ø\gw­Ï >·ÎÝàsþîÞ¹|nÝàsîZŸ{wnð9ïœóÎ9î¼sÎ;çü@Š, Yó„J8!…ê° , ÙóÎ9ƒqƒÄ9#¼#Š¥¼‡ÆœÇU€PTÔ@hõ@ Ò@T€VTð@EUTP „Ð@ Uð@!Uð@,Uð@,Uð@,Uð@,Uð@,Uð@,Uð@IURTôÀ@ ô@ „PE! ÔÐ@õ@E…P!UðÀ@x1ˆ%<ð& w DTÐÐNkî¼³Î;çtÚ;ë¼ãÎ;ë¸Ó™;︳Î` 3Ø9ë 6Û`ç´þæÎ9︳Î`î æNtî¬3˜;︳Ž;ç¬3˜;ë æÎ;îœ3˜;ƒóÎ:ïœóŽ;ƒ¹óŽ;¹sÎ;ç¬óhƒæÎ;îœ3˜;Ê Ë3v¼sÎ;î¼sÎ;òˆ3Ø9ï¬sÎ`ç æÎ;ç¼ãNgç æÎ9ƒ¹³Î;ç ¶Î;ç¼ãÎ:¹³Ng?X‹;ïPS!Ì&3s2þ° ,îœS;ï,#N7 Ã;à°ó:œã £LPÁ<0PAoVTTPÐ@ ÔPTÐPT€Ð@ ôÀ@UÐÐ@TPPhõ@¼ù@¼ù@¼ù@¼ù@þ¼ù@¼ù@XÍÒ@Tð€VUPPUð@ ÔÐYUTP,U€Ð@!UôÀY ô@hÅRUô@EM` 6Ö 6Ö`#¼ðØ òØ ðÄ#o8Â/¼8ÈS#<5Ó[ƒ÷á?=ñÂcƒ<6á«O5⨯>6ï /Ž5ò¸óN.ƒÉÒ ï¬ãNgÖwtfï8GkÖñŽs f­YÇ;ÎÑ™s¸£3çpÇ;Î1˜s¼ãïpÇHÑ ÐXCB&<¡„’Ñ} CÿÂ&ZáŽwØÃï8‡>¸„sŒà0BÜ! !bY˜À „%"Aþ?x¢ˆ "á‰O$‰ð*Rñ:ÐÁt`E"Xñ_$ÂÓ¨Æ/áC°"ʨ"ü@?ÐÒH„è€: â‰ðATü"~ "耊_$Ât@Pñ‹Døˆ *~‘?Ðt@Å/á: ‚¸¨"è€:øA "ü€OÔÖøE"|‘ºü‰ *¦‘º\#~Æ'ª‘: B‰`E*þ€?Â@+"¡›D°"~ *þ ˜€=Ò©Îu²³î|'<á©x¦SìÔ‡=ú¡zòSøX§>äÑuêCþöÀ;ÅaÁôâçèÅ3ìðw æïpÇ;Ö1˜s æïpÇ`ÖñŽs¼ãëxÇ9ÞáŽs¼ãïpÇ`ÖqŽÁ¸cçŒ;ÖñŽs fƒyÇ, w¼ƒ(<˜y½c^ƒqÇ;Ü1Ð ÆïpÇ`@3w¼ÃƒÍ`Üñw 4ƒqÇ;Ü1Ð ÆïpÇ`@3wüt^ïpÇ;ZýÓy½£ÕïpÇ`ÜñŽVÿÔƒÍ;ÜñŽVÏk0çxë¼ãŽw¸c0âÌ9ãŽÁ¸ãçxÇ:@³wœã YÇ`ÜñV"d` ‰Ç;ÜñŽÉ®ãôþø9âšwÄãóŒ;Ö1¯xLvóz‡þ;Îмãñ˜ì:ÜqŽÄNöñ˜ì:Þ1⟺cïpÇ9Þšw¬4ïM<sŽwLv0ØÇ;Îá‹ÁÀâvx+hÞqŽŸºãƒYÇO×qŽwœãçxÇ:ÞqŽw¸ãîŒ;ÖñÖuœc0îXÇ9ãŽuüô–€…;ÞA ;#uÚxü6€ñƒMÀ4õpÇ;Äñwüô“}‡;~:üàçxÇlÞqŽÁ¸c0³™×;ÖqŽw€æçpÇ:@3ÐÄãâ̼ÞqŽuÌk yÇ9ÞqŽwœcï˜ì;@s¸#çpÇ:æsL6óZÇdã1¯uL6óZÇdþã1¯uL6óZÇdãññwÄãóŠÇ9>¼ЬãîXÇ;¸C<¼Ãd½Ã9Äh¬ÃdÅÃOÃd½Ã:¸Ã;ÄÃ`œÃdÅÃ;œÃ:¼Ã9Äü¼ƒ;ÄCb­Ã;œÃ: †;üÔ¼¼ƒ;üÔ9üÔ9 Æ9¸Ã;ALÀ;œh¼Ã:ÌË;¸Ã;¸Ã:€Æ:€Æ:€F<¼Ã9¬h¼Ãl€Æ9ÌK<¸Ã;ÄÃ;¸Ã;ÌÆ¼¬h¼Ã9ă;¼Ã9ÌK<ÌÆ`œÃ;¸Ã`¬Ã‡ÅÃ9¼Ãl€Æ:LÖ:€Æ:¼h¬Ã¼ Æ9¸C<ŒØ9€Æ`œC<œƒ;ă;¼ƒ8ÔÃ`ôÂ;¸,<¼Ãþ:¼Ã9¸ÃOÃ:üÔ: Æ9¼ƒ; †;üÔ9üÔ9 Æ9 Æ9¼Ã9¼Ã9¸Ã[¹Ã`œÃ;¸Ã;œÃ;¸ÃB+€†50 õƒ(hƒ1ƒ6Ãl,€†=€Æ9¼ƒ;¬Ã9¼Ãˆ­Ã`ˆC”À¼Ã:¼Õ: Æ:œÃO­ƒb¹Ã: †;¼hü”;œÃ`¬Ã;¸Ã:¼•;¼Õ:¼ƒ;¼ƒ;üÔ9¬h¬Ã`¸Ã9¼Ãl¼ƒ;¼hÌÆ;¬ƒ;¼ÃlÌË;€Æ;ÌÆ¼¼h¼ÃlÌË;€Æ;ÌÆ¼¼h¼ÃlÌË;€Æ;ÌÆ:€F<¸Ã;¬Ã;œÃ;œC<ÌË9¼ƒ;Äh¼•;¼•;œþÃ;€Æ:üÔ9üT<ÌË;ˆÃ;¬Ã;¸Ã:¼ƒ;¼ƒ; Æ9¬Ã`¬Ã`¸Ã9 †; ÆlÄÃ9 Æ9¬Ã`œÃ;¸Ã`ȃ8 Æ:œÃ;LÖ;¸Ã: Æ9¼Ã: Æ:¼h A t€;¼ƒ;üÔ:¼Ã¼¼ƒ;¼Ã9 Æ9 †;ÌFb¹Ã;ă; †; Æl¼Ã9¸Ã:$–;$Ö9€Æ;ÌË9 Æ: hœÃ;¸Ã;¬Ã;œÃ;œÃ;¸Ã`€Æ`ÌË;¸Ã`¸Ã;¸Ã`€Æ: Æl¼Ã:¸Ã`¸Ã;¸C<œÃ`œÃ`œƒ;œ5Øh(Ã;¸ƒ,4ƒ¼Ã9üÔ:œÃ`¸Ã;œÃ;¸Ã9¼Õ: Æ:þœÃO‰Ã`¬Ã9ü”;¬Ã[­Ã;œÃ;¸Ã:üÔ9¬ÃO %À‚;¼5# ‰Â/ü‚6ÄÃ* Á&ÀhÔhˆCb­ƒ;¼Ã:¸Ã`œÃ`t€ ;¼Ã9 Æ9¼Ã9üÔ9¸ÃOƒ; Æ:¼Õ9LÖ:¼•; †;¼Ã9¼ƒ; Æ:¸Ã;¸Ã;œÃ;¬Ã;œƒ;¼•;¼Ã9 †; †;¼Ã¼ÄÃ;¸ƒ}­ƒ; Æ:¼Õ:¸Ã`¬Ã[­ƒ; Æ:¼Õ:¸Ã`¬Ã[­ƒ; Æ:¼Õl †;ü”;œÃ;€Æ;¸Ã;œh¼Ã9 Æ9¼Ã9¸Ã`¸Ã`¬Ã`œÃ;¸Ã`ÌÆ9 Æ9ü”;$Ö9¼Ãþ9¼ƒ;¼Ã9¼•;¼Ã9 Æ9 Æ9 Æ9¸Ã9¼Ã9¼Ã:¸Ã;œƒ;ü”; Æ9¼C<¸Ã`œÃ`¸Ã;œÃ;œÃ‡ý@ LÀO­Ã9 h¬Ã`¸Ã`¸Ã`¸Ã[ƒ; Æ:¸Ã9 Æ9¼Ã:¼ƒ; hüÔ9¬Ã;œh¼Ã9¬Ã;€F<œÃ;¬Ã;¸Ã;¸Ã;œƒ;¬Ã`œƒ;¼•; h¬Ã¼ Æ:¸Ã`œƒ;¼Ã:LÖ`œÃ`¸Ã[­hœÃ`œÃ;¸Ã;¸Ã`¸5؃;¼C.€†,4üÔ9üÔ9üÔl Æ9¬Ã;œÃ;œÃOÃO­ƒ; Æ9 Æ9¼Ã9¼ÃlüÔl¼Ã9 †;¼þÃ9¼Ã9ü)ÈhXƒ€žÐ-Ã+­9üÀ&´h؃;¼ƒ8¼ƒ;ˆ,È-ô‚,ÐB/È,ô‚,ˆB” Æ:œÃ;¸Ã`œÃ;¬Ã`œÃ;¬Ã`œÃ;¸Ã9¬ÃO­Ã;ÌË;¸Ã9¼ƒ;œÃ;œÃ`¬ƒ;œÃ;¸Ã9¼Ã9üÔ9 †;¼Ã9 †;¬Ã`œC<¼h¬ƒ; Æ9¸Ã;¸Ã9¼Ã:¸Ã9 †;œÃ;¸Ã;¸Ã9 †;œÃ;¸Ã;¸Ã9 †;œÃ;¸Ã;¸Ã9 †;œÃ;¸Ã;¸Ã9 †;œÃ;¸Ã;€ÆOÃ;¸Ã: †;¼Ã:¼ƒ;¬ÃO­Ã`ȃ8¼C< Æ9¬Ã`þœÃ`œÃO­Ã9üÔ:$Ö9ü”8¼Ã9¬Ã`¸Ã9ü”8¼Ã9¬ÃO­Ã;€Æ;¬ÃO¹ÃO¹Ã9¼Õ9¼ƒ;¬Ã;¸Ã;œÃ:œÃ;¸Ã;¬Ã9¼ƒ; †;¬ÃO t@,À‚,È-È,ô-Ð,ôB,ÀB/Ä,ô,ô,ô,ôB,À‚,œ0-À,ô‚,´B/ÀB/ÀB/„0,ô ÃB/Ä,ô ËB/„p/È ËB/È,ô ÷,ôB/´B/ÀB/ÀB/ÀB/œp/Ð,ô‚,œ0{±,œ0,x±,À‚÷‚,Ї°ËB/ÀB/ÀB/ÀB/ˆhXÃ= Æ3€þ,<ƒÌÆ`¸Ã:üÔ:üÔ9 Æ9¼Ã9üÔ9¼Ã:œÃOÃ;¬Ã;œÃ`¬Ã[­Ã9üÔ:ü”;¬ÃOý€%À‚;¼5 m„ôÃ?ô/óò? %ÀhÔƒ;¼ƒ8€Æ8X„ôƒ ñò?t€ Á;¸Ã[­Ã`€Æ;¸Ã;œÃO­ƒ;¼Ã9¼Ã9¸Ã`¸Ã;¸Ã`¬ÃO­ƒ;¼Ã9¼ƒ; Æ9 †;¼Ã:¼ƒ;¼Ã9¬ÃO­Ã9¸Ã`¸Ã9¼Ã9 †; h¼ƒ;¼Ã:€Æ`œƒ; Æ9¼ƒ;¬Ã;œƒ; Æ9¼ƒ;¬Ã;œƒ; Æ9¼ƒ;¬Ã;œƒ; Æ9¼ƒ;¬Ã;œƒ; Æ9¼h þÆ: Æ9¸Ã;œÃ;€ÆOÃ;œƒ;¼Ãl Æ9¼ƒ8ÈÃ9¼Ã9¼Ã:œƒ;¼Ã9¬ÃOÃOÍÆ:¼ƒ;¼Ã:¸CbÃ;¸Ã;œƒ;ü”;¼Ã9¼Ã9¼ƒ;¼h¼Ã9ü”8¼•8üÔ:¼Ã9 Æ9¼Õ9¼ƒ; Æ9¬ƒ} tÀ?ôƒ õ.CH?üC?HH?ØY?œP?üC?üC?@H?@H?üC?@H?˜P? P?@H?@H?üC?HH?HÈ>ôC„샄ô„ìC? P?ìƒ;¼ƒ5ÔÃ;œC/ F/4ƒ¼Ã: Æ9¼Ã9¼Ã9¼Ã9¼Ã:¼Ã9 †;¼Ã9¬CbÍÆ`œÃOƒ;þ¼Ã9 Æ9 Æ9¼Ã9¼Ã9¼Ã9¸Ã;œÃ;¸ÃB+€†5,6„ôà ý)´h؃;¼9 Æ8`Ã?ô„ðò?ô„ìƒt¼ƒ;¬Ã;œÃ;œÃ`¸Ã9¬Ã9¼ƒ;¼Ã9¼Ã¼¼Ã: Æ9 Æ:¼Ã9¼Ã9¼Ã9¼ƒ;¬Ã`¸Ã:œÃ`¬Ã9 Æ9¼Ã9¼Õ9¼ƒ;¼ƒ;¬ÃO­Ã`¸Ã:œÃ`¬Ã;œÃ`¸Ã`œC< Æ:¸ƒ}­ƒ;Ø×:¸ƒ}­ƒ;$Ö:œÃ;¸Ã;¬Ãl Æ9 Æ9¬Ã`€Æ9¼ƒ;üÔ9 F<(–;$Ö9 h¬Ã`¸Ã9ü”;¼Ã9¼ƒ;œÃO¹Ã: Æþ: †;¬Ã`œÃ:üÔ: †;œÃ`¬Cb­Ã`œÃ`œÃ`¬Ã`¸Ã9¼Ã: †;œÃ`¸Ã9¼Ã9¬Ã9 t€œP?@H/×z/ÿC­£P?@H?üC?ü/ÿ/ÿC?üC?@H?DH?ü/£P?@H?ü/ÿƒ­ó2„ô„ôƒ ñ²„ô„ôò?ôƒ„ð2„Øú?ôÃ?ìÃ;¸6ÈÃ`4ÃlÈÂ3 Á;¸Ã9¼ƒ;¬Ã;œCb­Ã`œÃ[Ã;¸Ã:Ø—8üÔ:¼Ã9 Æ:¼Õ:ü”;¬ÃO %À‚;¼5˜Æoü?¨ÃÌÌÌ? %À‚;¼C=¸Ã;ˆÃ;¸ƒ8`Çÿ/þ% Á;œÃOÃ;œƒb­Ã`œÃ;ÌË`¸Ã:¼Ã9ü”; Æ:¸Ã`œÃ[ÃOƒ; Æ:¼Ã9¼ƒ;¬Ã9¼ƒ;œÃ;œƒ;¼ƒ;¼Ã9üÔ9¼Õ9¸Ã;œÃ:¸Ã;œƒ; †8 Æ9¬Ã;œÃ`ˆÃ`œÃ:¼Ã9 †8 Æ9¬Ã;œÃ`ˆÃ`¸Ã[­Ã[Ã`¬Ã;¸Ã`œÃO­Ã9¼Ã9ÄÃ;ˆÃ`œƒ;üÔ:¼Ã9¼Ã9¸Ã`¬Ã¼¼Ã9¸Ã`œÃ:¸Ã`¬Ã9 Æ:¼Ã9¸Ã`œÃ`œÃ`œÃ;¸Ã;œÃ;¸Ã;œÃ;¬Ã;œƒ;¼Ã9¼Ã:¼Ã9üÔ:¼ƒ;¼Ã9¸Ã;œÃ;¸Ã;þœÃ`œC< †; h¼¼Ã¼üË÷ú›P?üC?¬?üo|?Ä?ý׿Æ÷„ôC=€6ÔÃ9¸@PÄŽÞYçs:'!qZçœÞ9¤sÖyGœ†ÎYçsZçwÞ9çuZÇwÎyg†ÖqçsÞY§¡uZÇ„Î(¡s@r§!wZ§!wÞ9džÎqçsÞYçsrçs:Ç„Î(!wÞ9g„ÎqçsÞY'¡xÞçwÞYçsÞ9gwÎi蜆ÎIèœwÜydžÖI蜆ÜIèœwÜIèœw~‰(®Øâ‹1ÎXã9渟„¨±ÇwzyÇ^šAãuÞ9'¡uÜy眄ÎYçsZ'¡u:gwÞ9gs:džÎqçsr§þ¡sÜyçœwÜ‚”V²¦ã›þLjHô¨§ž!6‘ÅwäIHœ„Àc`A"¡sÚAl¼qG 9ÎÙá\¢På\†8&)¶IH”(TyGt^ˆBv"qGv"Ùá[¤€á:±d‡wné"˜wpyg†ÎyÇwÜ9'¡ÎÖIÈ„ÎyÇwÎyçœwÜ9çwÞ9çsÞqçœwÜyçœwÎyÇwÎyg sZ眆Ö9'¡sÞYǾw:çuZçœwÜ9§¡s:çurg†ÖiwÎÑs$ä qÇ;ÄñŽs$ä 9Ç;ÜÑu$D 9Çþ;ÖqŽw¬£!çxÇ9ÞáŽs$dçHÈ:rŽw¬#!H¨Ç¶CΆ5ĉ=ÞqqØ#!Íx‡;Zñ ;¼ÃëxÇ9ÞáŽs¼c qGBÎñwœãî8GCÎ’uœ#!çXÇ9âŽu¼ãï8Ç:Αw¬£!C°,ÜñjÜ„Žu´#ûñH !˨Ç=ˆ` X¸ãõHˆ8jÜÑŽ?°Ä²Žw¤ÂDF 6ìà8‡ ÌásXcïpGBÀÁŽ$¤0Ǻхsì CØÁ9<À tãá ÂÌáq¨À€pGBαŽwœ$ëÉ:þÜ‘s$dIÈ9òŽu$ÄïpÇ:ÜÑu$ÄëpGCÖ‘w¬ã Y‡;²w4äïpGBαŽw¸£!çhÈ9ÞqŽwœ#!çHÈ9Ö‘s¬#!çHÈ9rŽwœãçxÇ:@²w$d Y‡xÖñŽs¸ãçXÇ;ÎáͬC3çxÇ9Þ±Ž†œ#!ëhÈ9Ü‘s$ä ù<ˆÀH¡•¨E5êQ‘šT¥Ö±õxÇ9¬awœ#îx,ž†w¸£!çHˆ;Þqކœcï8GBΑu¸#!ç8KBÎñw$äïpHÜ‘s¼Ãï8Ç;ÎñRÈb ÖXê?þþð‡6´ÁÁˆ‡HÑ w¼C GBÄ!¢öã› Â;ÎñŽs¼c ¬ÈB¤ Kì ÂA„„ìÀ 9 ¤À€w¸£DpǺA„wì DØA8ˆp cèÂÊ0D!!î8‡fÖñŽs¼ÃëxÇ9ÞáŽs¼cï8Ç;ÎrŽw¬ã 9Ç;Öqކœãçx‡;ÎÑs¼ãïpÇ9⎄¸ãï8Ç;ÎñŽs¼c 9HܱŽs$dçxÇ9@rŽwÄã qÇ9rŽw¸ã 9Ç:⎆¸ãï8Ç;ÜñŽs¼Ãï8GBÎÑs¼ÃïXGCÜ‘þw¬#!çx‡;ÎñŽs$Ä ‘‡8Þ±Žwœãîx‡8rŽw¬ã 9Ç;† $–Ìe6ó™Ë¼„XC QÆ;Ü!‹fØÁ 9Ç;Ö‘s¼cï8‡xÖᎄ d qÇ:@²Ž†œãâHˆ;ÖÑs¬£!?°,Üñj,µý@² ŠuÄc–€…;ÞQ„ˆ#!à QûñƒM !!çx‡;Aâ*B)và!D! çJ‡!lãîpàŽwt£Q0Â;\€”C ;p‡ºÀ€n¡DØÁ9„Ð#¼Ã ë8Ç;ÎñŽs¸£!çpGCÎáŽþw $!ç‰;âŽw¸#!çpGCÖqw¼ãîhÈ:ÎáŽwœÃ GCܱœãçHÈ:ÞqŽwœ£!çhˆ;Öñq4ä 9GCΡ™u¸ãîxÇ9Þ±Žwˆ$ë8GCΑuœ#!çxÇ:ÞqŽw¸ãçxÇ9ÞqŽwœãçxÇ:Ü‘u¼ãëxÇ9Þqñœ$ëHˆ;rŽw¬#!HÇÐw¹ÏýÌõHˆ8ê1\$DÍ@CCÖáŽwœ#!çhÈ:ÜñŽs¬Ã ±Ï;ÜñŽs¼ãïpÇ;Αs¼ãâyÇ9ÞqŽ„¸ãçx‡;†@ŠV ćýƒ<< -þ¼â? E+Üñy$D ‡5ö|áÿCˆÄñŽx¼ÃD@s¸ãîxÇ94sw¼Ãï°;âáyÍ $îhÈ@ÞáŽw¸#!ñHˆ;ÖqŽw¸ãïXÇ;Ü‘w¬#!îxÇ:ÎáÜáÖáÎáÜábÞáÞÁ@bÞáÞÁ@bâ@âÞábÞáÞáÞÁÂÖ!!Üá4cÎáÜabbÞáÞÁÞÁΡ!Ü!!ÜÁ>Þa ÞaÞÁÎáÜáΡ!ÜáÜáÎáÖA3Ρ!ÜáÎáÜ!!Üa4ÃÖþáÞÁÎáÎáÜáÞÁÖ¡!Ü!!†@`øìðñ0õpù°ýðÝá¨ÁâÞázáìàÎáÜáÞaΡ!Îáì£!Üa@âÖ$ÎaÞáÞábbÞáÞÁÖ¡!Üab,Üá¨a©:­þ¡Ónâ`Îáê!!Ä!!äÁ”q—±ìAÀ¢àÎáì$Ü¡!Ü¡!Îaâ΢!ÜÁ>Ü!!Ä!!ÎÁââáÎá$"!"!ÎáÎáÜA3Î!!ÎaÎ!!Î!!Î!!ÎáΡ!Ö!!þÎ$ÎÁÞáÖ$ÎÁÞáÖ!!Ρ!ÖáΡ!ÖáÜ¡!Ü!!Öá$ÖáÎA<ÎáÎáÎáÎáΡ!ÎáÜ!!ÖáÎA3Öa ÞábÎâÖáÎ!!Ö!!ÜáÎáÖ¡!Îa@âÞáâÎáÖáÎA<ÖáΡ!ÎáÎáÎáÎᆠ~€år.é².íò.ñ2/õr/ùR.õÁÞÁ¨¡ÜáráΡš ÞaÎA3ÎáÖáÜ!!Îá,ÞáâÞáÞáÞÁ4cÜáì$ÎáÎáÎÁÞáÞá~€daþ ¬¡Ìúá&:m6¡ÞÁä!!È!!΢8‹3!~`†àÜáÜá"!bbÎáÜáÎáÜ!ÜáÂbÄcÎáÜábÜábÜá@bÎáΡ!ÎáÖáÎáÜáÂÞáÖáΡ!Ö!!ÜáÎáÜaâÞáÞaÂÎáÎáÖ¡!ÜáÞaÎ!!Î!!Î!!ÜáÎáÖ!!ÎáÎ!!ÎaÞáÞáÞáâÞábÂÖ¡!ÖáÞÁÖÁÎáΡ!Ö$Î!!ÎáÎáÎ"!Î!!ÎáÜáÞþáâÞáÂÞAÞáÖ¡!Ρ!ÎáÜáÞaÎ!!ÜáÖáÎáÜáÖ$Ü äaŒ³P õP5QuQµQõPßá,Þì!!”ÁÞ¡žÁâÞÁÖ¡!ÜáÜa@âBÂÞa4cÞáÞÁ>bÞáÞÁÖ¡!Üaâ,Üá¨AîˆÀ`ÁÞ¡BÞá""âÜáÎá†`†àÞáâa ÖáÜaÂâÜ¡!ÎÁâââÞáÞaÜ¡!ÎÁÞáÞÁbÞÁbÞAþä!!ÎaÞáâbâÂBÞÁbâÜáÎáÖ!!ÜáÎ!!Ü!!Ö!!Î!!Ü$ÎÁÞáÖáÎa âÞáÞaÜáÎáΡ!ÜáÜabÞáÜáÎáÎáÎáΡ!Ü¡!ÎáÎaÎáÎáÎ!!ÎaâÞáÞaÜáÎaÞábÞá@bÞáÄãBÞÁÂÞáâÜA3ÎáÎáÎáÖÁÞ äaÞÁâa âa âa âa âa âa âa âa âa âa âa âa âa âa âaþ âa âa âa âa âa âa âa âa âa âa âa âa âa âa âa âa âa âa âa âa âa âa âa âá"Þá¬ÁÜáz!!Z¡Ð` Â>ÞáÞáâÞáÞáÞaÜáÜáÎ!!Ö¡!Î!!ÎÁÞaÞábÎ$ÖáÎáÜ¡!ÖáÜáÎ!!ÄáÜáÎaÞáÖ!!ÎaÜ!!ÎÁóΡ!Ö!!Î!!Ö!!ÎaâÂÞábâÜ!!ÎaÞÁÞábÞÁÞáÞábÞÁÞáÜA3ÎaÞáÖ!!ÖÁÞáÞaÞáÜáÎáÎáÎáÖáÂÞáÞaÞAÂÞäašÁš!œ¡rÁš!œ¡rÁš!œ¡rÁš!œ¡rÁš!œ¡rÁš!œþ¡rÁš!œ¡rÁš!œ¡rÁš!œ¡rÁš!œ¡rÁš!œ¡rÁÞáââž¡rÁš!œ¡rÁš!œ¡rÁš!œ¡rÁš!œ¡rÁš!œ¡rÁš!œ¡rÁž¡ÎÁÞáÞÁìáÎ!BšÁÞaÞáâÞáÞaââÂ>@bÜáÎ!!Ρ!ÖáÎáΡ!ÎÁâÜáÎáÎáHAÂÈ ¼ÁÌ’áHAÂÎáÄáÎáÖ!!ÜáÞáÞáâ" þÎáÖáÞÁÖ!!Ρ!äAâÞÁÂâb Ö¡!Ä!!ÜáÎaÞáÞáÞÁÎ!!âÖáÎ!!ÎáÜaâÂââÖáÎ!!ÄáÖ!!Ö¡!Î!!Ρ!ÖáÎáÜ!!Ü!!Î!!Ρ!Ö!!ÜáÂÂÎ!!Ü¡!ÖáÎ!!Î!!ÖáÎáÜáÖáÎáì#!ÜáÞÁÞaâÞáÞáÂ>ÂÎ!!ÎáÎáÎáÎáÖ!!ÎáÎáÖ!!ÎáÖáÎA3ÜáÞÁΡ!Ü!!Ρ!Ρ!Ρ!Ρ!Ü!þ!Ρ! @úAö¡ôaúAö¡ôaúAö¡ôaúAö¡ôaúAö¡ôaúAö¡ôaúAö¡ôaúAö¡ôaúAö¡ôaúAö¡ôaúAö¡ôaú¡ÄáÖáÎá¬AôaúAb_?}ûúéÛ×Oß¾~úöõÓ·¯Ÿ¾}ýôíë§o_?}ûúéÛ×Oß¾~öú5·î;köܽSöάghÞ{÷NÎïνs·îÎu;×½;÷îÎuïÎá<÷îÏuçpº[w§»u;X‚åîµdËš=kv•6mƶþûa –;wõpŠÃyîÝ9žëܽ;·îÝKCÞ¹ÛyîݹwëÞãyç9œëÞùîÝ9wïÎí\çŽ'Nw8Ý­{wç¹çpž;÷îÜÎsîÞ[çîݹwîvžÃéîÝ9w8Åí\÷îÜ;w;Ͻ;çîݹwëÎá\wŽçºwçpŠÛ¹ÎÝ»sïÎí\çîÝ9žçD»Ã¹Žç9wïν[‡óNqòp®Û¹ÎN븳Ó9ïœóÎ:8óÎ98³Ó:î¼sÎNçàtÎ:î¼sÎ:Nç¬óŽ;Î;çàtÎ;î¼³N?ÔC„<6ÞˆcŽ:îÈc>þhc3ÖȳÓ9Öþ‰d’7:ƒÍ;sYcN¹¸óN/Ï !Ú:ïœ#Ú98ãÎ;ç¼ãÎNî¼sŽ;;‰ƒ“;Î;îðäNç¼ãÎ;ç¼ãΤ´2—5h jV?ÿã7Ƭ̤´òŽ;öà$Î9︃Ó:ïœóŽ;çàäÎ;H‚Ä;î¬sÎ;îà4×:;­óŽ;ï¬óÎ9ÎNçàtÎ;뜃“;ç¼ãÎ9ïœóÎ:çàäNç¼ãÎ;ë¼sOëàtÎ;ëìtOî¬sOçàtÎNîœóŽ;;¹³Î9︳Î;çìäÎ;ç¼ãÎ;ç¼sNëˆvÎ;ç¼³Oç¼sÎ:8³Î98ÍuÎ;ëþ¼sÎ;îœóÎ:8ÃÓ9¢½sÎ;ç¼sÎ;ç¼sÎ;Î9ï¸ÃÓ9ï¸óÎ:Ó9&Ó:ç¼ãÎNî|üÎ98¹sOë¼sÎ;뜃Ó98!ñÎïÈ#Ï;X¿ƒõ;X¿ƒõ;X¿ƒõ;X¿ƒõ;X¿ƒõ;X¿ƒõ;X¿ƒõ;X¿ƒõ;X¿ƒõ;X¿ƒõ;X¿#3Øœ³Î9︃ Öï`ýÖï`ýÖï`ýÖï`ýÖï`ýÖï`ýÖïÈóŽ<Í`³Ž;çˆsÏ\ϸsN+ÍØáÎ:çàäÎ98­óÎ98ƒÓ9ëì´Î9Ó:<­sNî¼ãÎ:ïœóŽ;ëìtÎ:þ; a ,î¼CYæŸOV?ýt¢1¿lÌ›ÀòŽ;õà$Î;î¬óÎ9;ƒ“sìd–Â\prŽu¸ãsyÇ9ÞqŽœÃ8™ NÄ!wœ'îÀÉ9vrœ¬ãîÀÉ9ÜñŽs¬ãçxÇ9ÞáŽw¬ãçpÇ;ÎñŽuàä;9Ç;Îñwàäëx‡;Þ±œœc;9Ç;αŽw¸c'îØÉ:ÞqwàäsÁÉ:æ‚qìd89Ç;ÎñŽuàÄ89OÎñw¼cîØÉ9prŽwœ'ëxÇ9p²Žwœc8YOΓu¸C4ëxÇkprŽw¸c'ëÀ‰;pržþ¬ãâÀÉ9ÞqŽwœÃ8Y‡;prŽuÌe'îÀÉ9ÜñŽs¼ õø"ˆÐqàd.ï˜Ë;æò޹¼c.ï˜Ë;ÜÑ $ !è ‚;Þ1—w¸cZÈÂ1ä1—wÌå¸8Ç;æò޹¼c.ï˜Ë;æò޹8;9‡;¬áŽw¸Ř‹%ÎáŽwÌåqpÇ;æ"à¤DxÇ\Þ1—wÌåsyÇ\æâ l¸ãç †=ÜqŽ^à¤Í@ÃNα“uœc'ëØÉ\ÞqŽwœc'ëxÇ9ÜñŽs¼c;9N^³“×¼ã8qÇ;ÎñŽsü€²˜‹5ЇT³ˆB¿ÐF<^ñƒHþâî°NÄñ޹¼ãïXÇNÖ“s¼ã¤@‚;Þqœ¸'î8Ç:pâŽuœ'ë8Ç;ÜqŽœcï8Ç;ܱž¬ãçx‡;ÞqŽw¬C4ëÀ‰;ÞqŽwœ'çØ‰;αœœãëàÉ9pâŽsàä¢YÇ;Üw¼Ãë8Ç;ÜñŽs¼ã;YOÎñއ®C4î8Ç;ܱ“×¼ÃçàÉ9Þ±žœãëÀÉ9ÞáŽu¼ãï8NÎñŽsàä8qÇ;ÄñŽu¼ãï˜Ë;ÎñŽs¼ã;9Ç:prŽwœã¯y‡;Ö“s¼ãïpNܱެƒ'çàÉC×qœœþ'ëØÉÞ1¸FèÄJ‹!£¦H…*Rñ E ÁçC^sˆã€ÇÎ!†6¼æ;†9ŽA‰sd£ ‚1 …m0ƒÁ0GºÐ )lÅL>‡2°áŽuàäâ@q6lpB¨DP…9Ð@œCˆE7^ …`tcïƒÄÁ )´ÉîÇ;PÜ qÌåÖ°‡;Þ¡ w¼CϰÃ;ÎñŽu¼ãï8NÎñw¬ã8qÇ9xrŽwœ'çØÉ\Ö“sìdçØÉ:vâŽuìä–€…;ÞA¤Êú´¦µ9~` X¼ãõÀ‰8Þ᎜ãþçxÇ9ÞqŽw¬ãCØÄv²w¼ã8qÇ;Îñwàä;9NÎA´s¼ãïXÇ\prŽw¸ãçxÇ9Þ±Ž¹àäïXÇ;ÜÁ“s¬ÃïpÇ;Γs¼ãï8Ç;Öñwàd89Ç:ÜñŽsìdîÀÉ9v²œœ'ëpÇ;ÎñŽuàäîx‡;prŽu¼ã;9Ç;ÖÁ“s¼c;YNÎñŽsàäï8Ç;Ö᢭ãîxÇ9pr޹|ì¢Y‡;ÞqŽuˆæëÍ9ÞqŽw¬'çØ‰;ÞqŽwœãçxÇ:prŽw¬c.ïpNαŽwœÃï8N "Èà þ(E ‚a˜ãêˆP„h`ÖàÂ(ÁqœCH€B ºA.Œ‚lÇ9á"ˆƒ Ã8Â(0qÔàæð8>Ð $CÀ€‚8Î!ŽwˆãâxG3¨áŽœÃâx‡8΂m¼@غwì`ØÇºpx CàÂ(PÁ!ŒÂâ8‡8^#Žwcý̰Æ\Þaz¸ã½xÇ9`ñ 4àÄ;9Ç;Îñë08që€ç°;áïp8qëðPïpï°8q8qïpïpïpîðçðî0¤Ð sa ²†>ê£>ÿ >ÿ@þ¤Ð 8a8!ïpëpïàëð1çð: Hðçðs±;áç°ç€îpïçðë€î°ïpïp;qï°ç€ë€î°ç0ë çðëp8áïà;!;±;q8qïàç€îpïpïpï௱çðî°8qïàç°îp<áç€ç€ç°;q8±ïàïpïpïàç°8á8q;áïðï°ïpïàïp8±ãëpïàï°ïpïàçÀç°ç€î€ëpïàd¡>ÿÐd¡>dÑd¡>›É‚œ©>›É‚ýðýð,8±ýÀ™êCêә곙,øý@ê³™ý@,øýð,¸™ÕÝœ)ö°îðCðC0ÉÑ@ Ï@ Ñ@ Ö@ Ö€ Ï ØÀ Ô Ô Ö0É>É<ÉÖ áÑáÑ áÖ áØð Ž Ï0ÉÖ0ÉþÑáÖ  Øpëðe‰ “ “l  Ô@À“ Ô Ô` ØÀ Ö0ÉÖ Ì` Ñ0ÉÑ0ÉÑ Ôð Ö@ Ï` Œ‹ öðî  eI Ï€dÑÿЛ©þ>œÙÿОٛÙÿÐÿÐÿÐÿ >ÿЛÙdÑÇþýЙý°™ê³™ý0±ýðÆäP8qîðH Hà û¾ïÏà ÊðʰïÍÀïÎÐ ÊÐ Ì  ÎðÊÐÆÍÀ ÊÐ Ì  Îðû® ÍÀ Êà ¿ïÊÐ Êà Êà ÊÀ Êà Êà ï ¹pî€çðà  ÎðÌРʰïÏ Ê°ïÊà ÿ ü® Îð ÊÐ ÊÐ ÎÐ ÌРΠ Îð´pî°î@ õàïÐ ïà½ð hðëà8±ïpïpïp8qïpï°<±çàïþpï°<áçðç€îÀî€çðîðçðçð¤ ei ol Ó° •¿ wðð d‘ô C° ­€ò€ç°ïà8áç°îð81¤@ïp;!P ûàê»oFð0˜àêPàêºïê»ïêPPPº_àêPP»ÿÀýß¿ûðð û®®ûððð ûðð®®ûððÀýðTø€Ü;wÖþ-Ô”,™.u %N¤XÑâE‹ý0näØÑcEröÖ½{çîÝyC¨Yþ£†ÚKlÖ¨Y³† ›5lÖ¨Ù¤FÓ6k6©YÃFÛ3qÔÄQ÷5kبa£iÓ6j6±QÃf MjÖ°Y;÷ÎÝ:’$ÁùÄf ›OkØ|RÃFÓæK¼Ö¨iÅf ›5lÖlRÃFíÜ;wïÜa³çÎ]³sïd5³óÎÝ»sïÎ¥]÷îÉsiÏ­{wî»wçÒž#yî»wëÞ{wî8’îÖ¥=·.íK°Ü½£¶ÑT¨]¡v…úÒo^—}ÿ’Г2$,wïê‘—v;’çÖ¹K{ÎÝRCH®#)îA… >¨ÐãÍ,¨‚(| *ˆÂs³f¡}€ÑfcÖIæz„@Cœ|z¹E;ðñ'ŽNº¸ÅŸFìæŸkÐpd!Tù'’[QEUèéb# 7üðŠÈ±gw{‡y8çs®ôòœwÜ9çwÞqçJÏyþ‡R/uç/ßñòÇÞq‡$/ÏyÇsÞqçwÎ! ÍwÖ!‰tà{‡ÒsÞñówÞ¡ô’ÜyÇsHrçw°±Ç1eÄy§•gìxgsÞqgwÎ!éœwÎI˱sÞY'­sHr眴Î!éœwÖyçœwÖyçœw¸ciqÇ:Ò2KÀÂï ÆF¼ñ>ÂèÇBú±~ôã‘€…;ÎQ’ˆƒ$îxÇ9Þ±wäï8I†`‰!¼ãï8‡;ÆQH  ÙLŽT4‚ª0Å*pAxâŨ€)*0S¦0DQd œ¸@1*ð ™"œþ¸€+*ð€ < ¡Ðƒ(ô =€f¡Ð*ð „B ™@*ðš= ¨À*ð€ pHîx6þÑCÚø…6€ñz``*˜G’° t°á ÃHF’@ìãþPA?$ ‘9 AI¨Æ ¶!„ydq»äe/Ça’8æD¨Ò"’¸ãîÐÒ9ÞqŽwøéJë ”–Α–s¸#-çpIÎA’s8Ê$9Ç;ÜA’s¤åï8Ç;ÎáŽwÏ1$9‡;HrŽ+9æJ~"É9®´Žs¸ƒ$î°†=ÜñŽf¼Ã­h®äŽ´ˆƒ$îxÇ9ÖᎴœãçxþÇ:ÞqŽ´œ#-ç É9ÒrŽ´œÃï8Ç;ÎáŽwœãçø)dák\$ƒÿ¨‡Dú‘!B$±Ç;ÜŸPÃ'Ô€‹H„w¸#-âx@¤  D @†!¦QiT¸À qATàX‚5hFƒAxâàÄ´‘;T`¸€1t;T@ x…PÐL«Z­€@(´Ø < ¨ÀbµJ¡T@ x@PT@ xÍ(tÇXc!ûX…6¶¡m£óÈB?œ@.$¡óèö1)$a]øò!…ø`!ý†ðá8¡I Gþ6r]ìfW»é9ìñŽu8æHxǬq^ô¦÷¼Ï°†8Ôû^l¼W¾ÖGzÅ^qÌ7½â˜¯8ô«_qüWÀéµIz£!’ø‚$½x†ܱŽs¼ãëHË;Öq’¸ƒ$çxÇ9ÒrŽ´¬ƒ$ë8Ç;ÖAw¬ãïpÇ:ÎA’s¬#-îXGZ~` X¸ãÔØn?&Ò‰ü`°pL=Þá{$YÉKf²=†`‰!dîx9€˜öØÂ.B±‹PÐà¸À Z°~\¤9§}í-r{¸cç ä1w¼Ãç Ô9Þá4cäŽ9‡—Þá˜w$ÿŽ‘¾;¤/ýw8M¤K¾—Þáé{éîù;ü”|wœÃÒ÷Rò“ǼMŽy‡cÎáŽwœ£Â½ ,žþ†w’8‡´pŒu ‰s ‰sx‡s ‰u¨0wH‹sx‡s ‰s ‰s ‰u8’p‡ux‡s ‰uH‹!°Xp‡w Û“ˆ°Xp‡w¨‡sxÇXÇxwx/‰‡sp‡wp‡€…!x‡spŒw¨ ™¨€Åª€¨€ ¸ƒ x€ x𱬠x€ x€ X,šY¬ л ˆ x yÓzÊ«€  ™ ™¨¨€ ¨€  ¨½wxlÈ …=‹è킆.؆‰è‰è‡¬Ä${H‹sx‡!"pŒw ”wð’x à‰/þy/©0Lj‡´p‡wˆ‡òs‡xp‡wˆÇX/I ÇXǨ0wˆ‡s'/I wˆwH‹xð’´ up‡wˆ/ywx‡upŒw8‡up‡wh†sxZh;H‹ux‡s ‰s ‰sx‡u ‰u ‰sp‡w8‡wX’‡´X‡w8’8‡ux‡sp’8‡wp‡´8wx‡sx‡søRǰ†ëz‡Tàr°~È… R…wp{x/yw8‡w8‡x8‡w@’8‡w‚M@’ðr¨­ª­ª€0-­ª¨€¨­¢™¨€¨€¨€0-­¢­¢¼¨€þ¨€¨¨¨€¨½«¨­ª¨ ¨¨€¨ ™¨€hÃsp kXˆ~È®~¸ˆ~°ˆ~°D¿üKr°wX‡´@y‚sx‡xpŒupŒx8‡wp‡spŒxpŒuð’spŒsxÇXLj/9wˆ‡wpŒsð’xp‡wp‡spŒspŒw8‡xp‡wX?YLj‡wpŒsˆÇX/YLjLj/9?9ÇXLjÇX/yÇ8ÇX‡wð’u8’p‡wp_x‡sè…g@ƒw8’X‡w8’8‡ ;‡wp‡s ‰sH wX‡´8‡wp‡wXþ‡s w wX‡´8‡u8’p‡uH‹°Xp‡w Œè‡-ø…]H(Cp…x(`ƒ}8*øK€Ǩwx‡spŒwxqp‡ s‡wX‡w8"°„!p‡wXLJ…Ї}øQ‰è‡øQ‰è‡È è‰pµ}è‡è‰½؇…øÑ}Ї~؇~H2.Õ.ýR}À}àR}(S3M2|H2}H2}À‡$Ó{Ї$Ó|Ð.í‡/Õ‡~(Ó~øÑ ’À†A¨½Cµ (Ô Ð» (TFmTG}THTØ{p‡w8’ y‚w8‡wp‡wpŒs¨0wþx4q‡wð’wp‡wp‡uxwxÇ8wH w8‡w8wxwx‡u8wx‡s w ‰sp‡w@wxwxw Ç8‡w8’8Çx/yÇ8Ç8wxwH‹up’p‡wpŒsxwxÒI wx‡sp‡ ;’8‡wÈ’…f@yx‡sp‡´8wx‡sX‡´8’X’X‡w8‡´8‡ux‡s¨°s¨°sx‡s¹sxwx‡sxwRhǰ†p…]Ø…i˜†]èƒ~ÈX‡~˜‡,ˆ€! …Vp {x‡uxwx‡l58QˆWÀ…,°uˆ„wÐþM@‚s wx‡s=‰¨‡…½è‡臅è‡è‹è‡È Šè‡…È …è‡è‡pµ½ ú‡~ø‡~Xˆ~ˆ~øÑ“W£¹í‡pµ…½…È È …8ǰ†Ax€ ЇH]èÊ{€6¬€hÃÈ\Ïý\Ð ]Ñݨ&°‡sX’p$"x‡sxÇH‹sX‡w8‡ sŒsx‡sˆ‡s wxǨ°ux‡sxw ‰up‡´p‡´X’p‡uxÇ ÇX’pŒ´X’p‡w8‡wp‡uð’s(¿ux‡sH wX’p’p’pŒuxw8‡wˆþ‡sxwX‡wð’uH‹u e8‡w …g’p’8‡wX‡´8‡wX‡ ;’8’@“ s‡wp‡uH q wX‡´p‡uH‹sX‡´K€wxjÀˆ~à„” …”ý‚ º-ˆy'K€wx‡z ‰óz‡#8‡vðr€nyK‚wp’@‹èŠè¿ì‹è‡íê‰è‡è‡ëꇜ뇋èq l¸-°ƒ~@Iè€ ‚ x€ X,)ˆ T«Ë‚ `TE^dFndG~€ x€ Ø}p’8‡w yqx/q †ùþ‡ó¢£k‡ôÂô¢†ôÂô†÷²‰÷¢lH/q°›@/qx/l°q8/j°lø/l8/q°j@/l@/›@/lwx‡g Yh4x‡sx‡sx‡u ‰sH‹sx‡sx‡up‡w8w¹up‡w8‡ux‡sx‡sH‹upŒw8‡w@“w8’p‡w8‡w8‡ Yp kØO°…þ‚ào؇ ‡.x …Vxw°wxq‡w0"€_Øw("p("x‡ "xw8’‡¿”ˆ~Ø®~ض~À®~¨ˆ~È®~¸ˆ~ ˆsp k„ pþ&ˆ6h†{¨¸€>x€ xÓ*A Ê{Óº€>x€6k².k³>k´~€ x&°‡sx‡u $‡øR»–‡~øR|H2yè{лìÀÖÁ.l|øR}H2}(ì/ÕÆ~lÆÖÈlp¸ÇÈ…sxXˆ;x‡uH w8‡u ‰sx‡sH w8‡ [‡w8‡wp‡s wxwx‡u8’p‡w8‡u¨°uH wX‡´øK€wxjØOXæfî øP„.8~èsÐX€…sp{ ‰sxV€qØw8!xƒØ„! ‰upþ‡w ‡š¾oü®Ä~‡wpj„ p€,@ƒHˆ„z¨‡¸m¸C¸€Ax€A¸€Ax„ €„;Э2…0„A¸SS¸€Axd/q_¬ x€ x€-°‡wp‡´‚z 4q Ç8’@“sp’p‡sx‡s°ñs°q"w‡wÐñ"w ’p‡sp‡wp‡s9wx"G' "G“"GÇ8Çx?‡´p‡s(òsx"G"w G“w°†zp‡wh†wpXh4 ‰sH wx‡s¨°ux‡s ‰sX‡w8‡´8‡´8‡´p’8’pŒw8’8‡w8‡w8wþx‡sxwRhǰŒ[W[ˆ Zˆzø‡!Ø„Vxw’‡sØ$Èu"8‡wp‡q0‡xwx‡!€$ w q¨=fovggösp l„˜(0Aƒ`¸‡¸C¨€Gx€A¨O¸€A„ø„ xš™w¨€G¨€G¨O¸€A@k|Ïw}?먀¨&°‡wp‡u $‡x‡x òwpŒwˆ‡wp‡sxwxwxÇX‡$'‰x°ñwp‡u òw°ñw°ñsxÇX’p’p‡uHrwx‡x(òwˆÇx¯0"‡x°ñux‡"' ™'rþ’pl°Çð…wpYx;p‡ux‡sxw8’X‡w8‡w8‡‘;‡wp‡u8‡wp‡w‡´8‡wp‡u ‰s wX‡w8‡wp‡uH wX‡´K€wxjxv"°Xp‡w¨‡sxq(¿w8w"P…wp‡søK‚w8‡´ ‡gï|Ïÿ|Šèqxw †A ,h1X‡u¸‡¸€b¨N¨NxN¸€Ax„0… Ø… ( €„A¸O¨€G¨€Gx€A8qæo~F­€¨Ø{x‡sx‡sx$¨"8‡w8Ç8Ç ‰s òupŒx8‡w°ñx8þ?_wx_ÇXÇXÇ ‰sp€x'ð\× <çîÝ9çÞ¹óyÎÝ»sϽ;÷îÜR² Zû§v-Û¶nÙêØË = \çs¯»w?6ýxwΧ¸·†#N¬x1ãÆ‹ÏÄ6è(:¤Dåǃ/ƒL<rÇK @*и³åÁ’ @xRH €TÈ­{7ïÞ¾.\÷ƒ *<`"ïþ;î~¼òÎ ÈuïÜ 4¸Nà:w{Ý{—ä»uîº;'¥»wß%\gpÝ;ƒçžKxNà¹wëÜ tŽ@çôNBçtÎ;îœóŽ;ïôN<ï°';ïœóÎ9ï¬ãÎ;î¼ãŽ@½ã6ö¸óŽ2îœÓË3v¸³Î9­#<â¼³Î9¹³×9óŽ;ïœ#8{½³Î^ëœ#;ë¼sŽ@ëøôƒ%°¸ó5kqÙ¥—]öÓÏ›Àb=‰óÎ9ï¸óHï¸óŽ;ïœãÎ;CX2„@ëœó9_¨ ƒZ¨¡‡Ú8ï¸CÍ 8P 8Û¹] Û»þ=ÐinèÖiTð@¢šªª«²Úª«¯ÂºjTðÀöœóÎ9!!­ƒ$K×9>%ôÎ:ï¸ã“;ëtŽAŽAï$$Aï$ôÎ:ï$@ç yÎ:ïœãÓ:î¼³Î;î¼ãŽOî¼ÃÒ9ïÏ9ï¸#;H tŽ;¹#PBØØãÎ;͸ó)Ï áÓ9ð9óÎ9ë¼sÎ;ë¸#Ð:îø´Î;âtÎ;ç¸ãÓ9îøtŽ;ïœóŽ;CÒŠAÖxé%3ÌôÌå›ÀbP=‰#5âœ#Î9âœ#ŽÔçHý)HäŽ@âݵ×_ƒ¶Øc“Íå9þa3È< Û¹=ªtZÁ¹±šÛ­ã“;>¹sŽ@½sÎ;îtÎ:{­sŽ@î¬sŽ@î¬Ã'C°,Üñjx-®0†! ½sü#ýø†7^"l©‡@Äñw`#L"ìÇ?´–!Xbï8Ç;Üþñr”-†2œ! ÉÖqDÚ{ÈÃ;ø0ˆB â†x‡#"1‰J\"›èÄ':qGÄ‚XŠz¼Ãqä1/‰Kýè™ÕÒôÃK#TK?Ô¦.õÃKaêY?ÂÖ.…©KýXK˜‚ö0‰ã·<,ñp€£ ±F=ÜñŽ\DÍpƒ;Þq$ãîxÇ9ÞqŽwœC çxÇ:|"޽¬ã>qÇ;ÎñŽs¸c/îÈ9ÞáŽwœãçø)dakøñƒ˜1‰É oücÁPA?|Ðl¢îx‡<"X#˜jù)ðwøDÚ'9ËiþÎs¢³œâpÇ9¨±–}ì£ûè‡ZÂôâ“KûPK?ÔÒôžÿðA jЃ"4¡ ](CªìC-ð\K?Ä!w¸ã‚<΂4¤"Õæ9Þ1R¢– Å&6!jØÃ ÊxÇ9zñ ;œãëˆ;Öá“s¬IâðÉ9örŽwœãîxÇ9ÞáŽs¬c/ëxÇ9ÞáŽuøäëðÉ, w¼ƒAëÇ?L±‹]Lã¬wè‡Z0Œ~ø  C°,ÜñŽzDîx6ÆùK A â9FjØÃ"¶œçx‡;¬Ñµh"ÉÐE8ÖÒ?ŠÐKýøG?Ô"ÂþÄ‚6hýèR˜ÖrŽzøäï@B=Ú×Â6¤âxÇ3¢á 7xÀ¹°„@¨QƒäâçE3ìðŽs¼ãï8Ç;Î!s¼ãïXÇ^ÖáŽwœc/ëxÇ9|rŽw¸ãçxH|’wœC îxÇ9ÞáŽ!¢±†ûaŠ]„"»ÅÔ )àà>èÇH! ƒØC âx‡;¬1¹Cxrâ)ˆ€$qÄ6Ã&§8Þákü£ÿHÆ6´ŽK¨ƒKIà’?¬Á¥~ü£~L†&µ„‰KýP 9äñŽuødïB„‹lä##9ÉJ^2“›ÜäsˆãïP†<ÞqGþXƒ´x‡;°a(C ²xÞ៸c>q‡OܱŽwœãçðÉ:ÞqŽw¸Ã'ëØË:ö²Žsød>qÇ:|2KÀÂï †ûñˆGä7¿KèG>TðBüÂ]Â&`áŽsÔC âˆ<ìaêSŸº¦)† s¸ãä¨1­kÝq¼ÃØøG˜€± chcÉèÇ? ôãbÆ-  Ä¡ ýPË-îÁ q( à@Ã=’Pë÷ãõ8Ç;ÎáŽw AC@5»ÛíîwÃ;Þòž7½ë ïz˜ºîÇ3”áŒ;£çx6êa\Ï@ƒ;ÞqŽuþäçxÇ:ÞqŽwœÃ>9Ç;ÎñŽsøäï8Ç;ÎñŽsäï8‡@Î!s¼ãï8Ç;ÎáŽwœãçø)dakø±ëx4Ñ¡–~¬¥ÿøA$ZáŽwØC çx‡;ÞÁ–Ä:ØÖ±qÄ6ìb'ç9 bµCÛøÅ6€ñÄàø‡<þá‚yd¡ÿèG2Ø ~¨@óˆ7pÀ 6PaìŠç9ìá¸ãD®nùËc>óšß<ç;ïy–äïpÇ9"s¼Ãذ‡@z!YXC>qÇ;Îá“s¬c/ë8‡@Ö±qdqÇ:Þq¬ãþçÈ:ö²Ÿ¸c>ù%`áŽwPÃýàÒ>ÔÒµôãýøÇ,‹wœ£‡AÞ±¬C ëx‡;ÞáŽw aHÈ9B‘` :õƒ86¬Å*hƒ6Ã6Ã?Ѓüƒüƒ ÌCüC*ddA?¨Å ¨=dÁèC?èÃ>ôƒ>ìC?èÃ>ôƒ>ìC?èÃ>ôƒ>ìC?èÃ>ôƒ>ìC?èÃ>xê®îê>èÃ>èƒ3xƒ@¸ƒ5܃A<Ã;¸ƒ,<¼Ã9¼Ã9¢A¬ƒOœÃ:œƒ@¸Ã9øÄ9¼Ã9¼H¼Ã:¼Ã9¼ƒ;¬Ã9„;¬Ã;œÃ;œÃ:œƒ@¸Ã:øÄX,¸Ã;Pƒ6/¤9ÓX,D=„8Ä;œÃ:â9¸Ã;œÃ;ˆÃlÂøÄ9¼9xþiDz`?ˆƒ@`C˜tI?|T˜x쓎C=Ä;œÃ; Á; ;¼Ã:œÃ;ˆƒ3®Ã9¼ƒ88ã:œÃ;ˆƒ3®Ã9¼ƒ88ã:œÃ;ˆƒ3®Ã9¼ƒ88ã:œÃ;ˆƒ3®Ã9¼ƒ88ã9ˆ!mØŠíØ’mÙ’­3XCBXC=¸Ã9äÂ;¸ƒ,4Ä9¼Ã9¬ƒO¸Ã;œƒ@¸ƒ@€„@œƒO¬Ã;¸ƒ@œC žƒ@œÃ;¸C ºƒ@œÃ;¸Ã;œÃ;¸ÃB+„5ÓìB(<$”‚!¸Â?¸>p6¨Å‚,¼ƒ;ȃ@ˆÃ9â9¼Ã:Ä9¬ƒO , ;œƒOˆCÊþ/žƒAXÃñ2o:õ9ØÃ:"Ô„;ø„;œÃ;œÃ;œƒO¸Ã9¼Ã9¼Ã9ø„;œÃ;œÃ;œƒO¸Ã9¼Ã9¼Ã9ø„;œÃ;œÃ;œƒO¸Ã9¼Ã9¼Ã9ø„;œÃ;œÃ;œƒO¸Ã9¬Ã9¼Ã9PƒOÒ;Ò;Ò;Ò;Ò;Ò;Ò;Ò;„­@˜­2XÃ;5؃@(Ã;¸C.<ƒ¼Ã:¸ƒ@œÃ;œÃ;œÃ:â:8ã:œƒ@¸ƒ@œÃ;¸Ã:¼Ã9Ä:øÄ9¼ƒ8„;¬ƒOœÃ:øÄX,¸Ã;PC0•B1Ó ôÃ?dà @Á?4‚ü€%À‚;¼Cþ=â:¼Ã9Ä9¼Ã9"HüÀ& @¬ƒ;¼9<é kc?ˆƒ@`!+òö9ØÃ;€Ä:¼Ã¼Ã¼Ã9¸ƒO¬ƒO„O¬ƒO„O¬ƒO„O¬ƒO„O¬ƒO„O¬ƒO„O¬ƒOD ºƒ@¸Ã;XÃ;.ƒAXÂ9¸Ã;Ä;Ä;¼ƒAtD7Á;°„@Ä;\Ý;(ƒ5Ä;`C=D.¸Ã9ôB3 Oˆƒ<â9¼Ã9¼Ã9¸Ã;œÃ;¬Ã;¸ƒ@œƒ@ˆƒOœƒO€Ä;œCDžÃ;œƒ@¸Ã;œÃ;œÃ‚,„5M?üƒ)œÕ.„Â.xZäC þÃ?¤Â )´Â;¸ƒ=œÃ;ˆÃ;œƒ@œÃ;¸ƒO€„Oü@$ Á9¼ƒ;„8,òMà9„5àtO9ØC ºÈ¼ƒ;¼ƒ8øÄ:œÃ;¸Ã;ˆƒO¬Ã9¼ƒ;¼ƒ8øÄ:œÃ;¸Ã;ˆƒO¬Ã9¼ƒ;¼ƒ8øÄ:œÃ;¸Ã;ˆƒO¬Ã9¼ƒ;¼ƒ8øÄ:œÃ;Ä:„A¬ƒOHÍ;œC6ÄÀ9‚ਂ9 AÂ9ˆBŒ:´€C7 Á; Aœ3Dœƒ;ˆHˆ6H<ƒ5$6؃A<ƒ@´Â3Ø;8£8øÄ:øÄ9øÄ9Ä9¼Ã:øÄ:œƒ@¬Ã9þ„;¼Ã:œƒ@¬Ã;œÃ;¸Ã:ø„;¬ƒOü€%À‚;¼5M˜ B¤åרEă àƒ;ìÃX,D=„8¸Ã;œƒ@¬Ã;œÃ;¬ƒ@œƒ@ü€% Á;¸Ã;¸Ã;ƒO x9õƒ86 x‚k“8Ôƒ@œƒ;¼ÃÈüƒ;øÄ9¸ƒOœƒOœƒ;øÄ9øÄ9¸ƒOœƒOœƒ;øÄ9øÄ9¸ƒOœƒOœƒ;øÄ9øÄ9¸C žÃ;œƒ@œÃ;œÃ;œ6ˆƒhƒÀ6¼€8`Ã8€@7`€;ìÀ9Pƒ9|@7`8|@7 Œ*°Ä‚7ˆƒh¯ƒ8œƒ8œ9(ƒ5¼ƒþAXƒ=¸Ã9ä‚;¼,<Ä:¼Ã9øÄ9¸Ã;œƒOˆƒOœÃ;¬ƒ;¼Ã9â9¸ƒOœÃ;¸ƒ@€D žÃ;œÃ;œƒ;¼Ã9¼ƒ; )´‚AXC0=Â:©ÏÀ?äC0üƒ:Ã5 ÁB+„=H¬Ã;œÃ;œC ®C ) Á;œƒOˆfû^žƒAXñ3»6öÃ9ØÃ9"ÈÄ:œƒ@œÃ;¬ƒ@¬Ã9Ä9¼Ã:Ä:œƒ@œÃ;¬ƒ@¬Ã9Ä9¼Ã:Ä:œƒ@œÃ;¬ƒ@¬Ã9Ä9¼Ã:Ä:œƒ@œÃ;¬Ã9¼ƒ;¬ƒO¸Ã:„;X9H 9þÄ8À@0@7 8Ô8ÀÀ0@7è8Ô@7 ÁHAX3hCåŒÃ9ˆ9ˆÃ8<6¬ƒAXƒ=„2„,4ƒœÃ;œƒ@¬Ã9Ä9¬ƒ@¬ƒOœC ºÃ:øÄ9ø„8¼Ã:„;¬ƒO¬Ã;œÃ;¸Ã:ø„;¬ƒO %À‚;¼5>‰Ð?ôC— %ÀÂ;œC=¼Ã9ˆƒ<¸ƒ@¸Ã;œÃ:Ä;œÃ;¬Ã;ü€% @œƒ@C³Kþöƒ86L~æ 8ÔÃ;œÃ:ļüƒ;Ä9Ä98ã9Ä98ã9Ä98ã9Ä98ã9Ä98ã9Ä9þ8ã9Ä9Ä9¸Ã;œƒ@œÃ;œƒ@XÃ8Œ8ŒÃ7$À(PøtÈÃ\ƒ htC A tÈ‚ A)Ĩ8P88888Œ"96¼ƒ;¼ƒ5؃@ô‚@D¯^vÞ{wî]„îÞs—ðܺwçÖsç.¡¸„ëv<÷îÜ»s Ϲ{w.á¹wçÞûAJÖEkÿhÖ´y³f½šýhþ Õ*¡¼„äÎ%\w.áÅsÝ !…d]Gq8©VµzkV­[¹R=wÑZW±cÉ–5Û„îÞ¹C"È»sïÖ¹KèîÜ»sïÖ¹KèîÜ»sïÖ¹KèîÜþ»sïÖ¹KèîÜ»sïÖ¹KèîÜ»sïÖ¹KèîÜ»sïÖ¹Sx.á¹uïνs§Ð6pàÄY³-n65l»±Y‡šmkàÄí¶Æ[Ö°³†ÍÚlqØžY{ç{›½;'«šwñº{'.á9…ç:v<×þœÂsïν;×qݹ„îÖ½;—p…~°wÞ¡æ¦ü§šúéçŸ,ÅwêI蜄ÎI蜎ÎYçœwÜ‚”Þ9G!r\‘Å]|Æe¬©qÂfÆuÜ‘ÇÉ©çwÞ9ç!ä"¡‹Þ9g„Üyç¢wÎY'!wÞ¹èsÖIÈw.zçþœurç‹Þ9g„Üyç¢wÎY'!wÞ¹èsÖQè"…ÖyçœwÎyÇ6jÀÁ†j¬¡f7kÀÙlÄ¡FœÝ¨Ù œÝÀ±†k°ÇšÝÀ¡Æj°¡FkÞqçkìqçœ\ê¥4ÜyGœöG¡uÜy看:g„ÜyçœwÖQÈwÖyçw:Ç…ÎqçsÞqgRZ¹ˆ–B½ý\p­¡F8j† ¥•wܱ'!oÎIhŽÎIÈ„Üù!"ÞY眄Äéà€Îñœ‹¬á„¦‰{Þ9G!$ä!"¡srçu:G!wÞY'¡srçu:G!wÞYþ'¡srçu:G!wÞY'¡sÚ§£sÞ9çu‡k¢)Ôp£ù6j¢7Û¢ù6j®±&k°aÆjœyæwÞ¡ÆwÞQÆs`yÆwZ'!qÞYG¡sÞqçœöÎIÈsÞ9G¡sÞY眄ÎQhsrgsrg…†°wl½ówÜQÈ!,ÅsêIHœw.zçœwÖIHœwÜIÈHB¡sÞ!gáÜuϱqÂf÷à…_ðAqêIhwÞâ!ÞqçuÞ9çsÞ9'¡uÞ9çsÞ9'¡uÞ9çsÞ9'¡uÞ9çsÞ9'¡uÞ9çsÞþ9'¡uÞ9çsÞ9'!ëxÇ9Ú#Ž„¸ãîHÈ9Î!g8Cd†2œÑ f8£T†3”ñ@gDðl†2š¡ g4CÏP†3"ø úB︈5ì‘^¼Ã´h.玄œcï8GBαŽwˆ#!ëPÈ:ÞqŽu¸ãçHÈ9ÜñŽs¼ÃqGBÎñw¼ãï8ÇH!‹s¼ã"çÈÙØÆ^4Cƒl†2~@ŠV$D Ç;Üq…œ£=çH"wœC!âXÑ"ÙHG>’‘lä9.b I^“™Ô¤$Ïa„\ÄHΑs(ÄëPÈ9âŽu(äþ qÇ:r…¸c 9‡Bܱ…œC!îX‡BÎñw$d YÇ;ÎñŽs¬C!î‡p°!jØÖÀ†5¨ jØÂá 6¨ kì†ذÆn¨ ۜ㠴Æ=.ÒŒwœ£ϰCBÎñŽuœ#!çhÏ9⎎œãçx‡;âŽs$ä YÇ9²ŽwœãîX‡Bα…üÀ½8Ç;ÖÑ k@rý¨É>öñD ©‡;Þ!Žw¸ãëxÇ9ÞqŽ„œ#!âxÇH1„„¬Ãï Ç&™ÚT§J²âH6žZU«^•&ä¨Ç;Îñw¼còÂ;ÎáŽwœcþyÇ9ÞqŽwœcyÇ9ÞqŽwœcyÇ9ÞqŽwœcyÇ9ÞqŽwœcyÇ9ÞqŽwœcyÇ9ÞqŽ„¬ãçxÇ9ÞáŽw¸ãyÇ9ÞáŽs(ä"ïp‡BÜa«‹$” Lˆ;Û„\äîxÇEâájØã"½HH+ž†wœãîHÈ9Þ±Žwœ#!ëxÇ9rŽutäï8G{Öñw$äï8‡BøŽs$Äï8Ç;Ü1„MÀ"!ÑxÇ?öñ}ücÿØÇ?öñ}ücÿxÐ?ÔþÑšÔãûøG?öA¢±GþBÄñŽutÄçxÇ9Þ±Žs$d¤øÁ;Ρqˆõ >ÇE¬‘z×WUö8Ç;Îq$¼c¶:Ç;Ρs$äï8‡BΑs¼ã 9GBÎñŽs(ä 9Ç;Ρs$d 9Ç;Öñw$ÄçHÈ9Ö¡w¬C! |Ç:ÜñŽ‹œãîXÇ;Îñw(äGGÖñŽs¼cÚã"Ö!!@ ìáÎÁBœÁÞáÞábâÚãbÞáÞÁÎA!ÜáÖ!!ÎáÜa:b:bÂÖA!†€`áÎÁì¡ ¡ áâ!îA×Xªt­Xþªö¡þa6.¢BâÞá0‡~À† !Î!!Èáõ¾p“úAÀÐ 1‰êáÜáÜá@†àÎaÞAbÞáBbÞáBbÞáBbÞáBbÞáBââbbÞÁÞáÞá:bbÞÁbbÞÁâÞáÞaÞáÞabÞÁÂÞáâÞáÜáÎáÖá"¬ÁÞÁr!!`¡ÐàÖÁÞÞáBbbÜA!ÎÁÞáÖÁÞáÞáÞaþÞáÞáâÞáÞáÜáÎ!!ÎáÎáÜá6¡"öÁð`ð@öîö¡ö!À êaꥠáС âà"¡.ÂâÜáº!¶¡†`Î!!„@!†€`:B 'sR'w’'{ò.ÂzR(‡’(‹RAÈÁÞá†@ˆàrÜa.ÇÖárÜa.ÇÖárÜaÚÃÞa:âÞáÞáÞáÞáÖA!ÎáÎ!!ÎáÜáÞáâÞá"ÞáÞaÂâÞáÞáÞÁÖáÞbâ:â"°ÁÜáþ”áÞžÁbÂbÚÃÎáÜáÖáÞÁÎ!!Î!!ÎA!ÜáÜaÞáÞÁÖA!ÜaÞább,ÎÁšÁìön0Aäaê! àŽÀDaò" ÊA ná,Þáê!!ÄáÜ¡V Ð R!>@"  ¶A~€àÎA!ÈÁ(”@ tEúA„AÔAB#TB'´&úAê!!ÖÁÞäaÞáâÖá"ÞáÞaâ.âÎáÖ!!Îá"ÞáÞaâ.âÎáÖ!!Îá"ÞþáÞAÞÁÞÁÞáÞaÂbÂÞáÞaââbÎ!!ÎÁbâÞáÞáÖA!Ö!!ÎÁbÞáÜA!ÖáÎáÎá.ÂêáÜ¡Þáz¡ÐÀâÞaÞáÞáÞaÞáâÞÁbÞáâbÞáÞáÜA!ÎÁÞáÂâÜáÎáÎAH¡ÞÁ¢ÁðAÜ0 ´AšÓÚAà’ Ð! vÀÊ¡ v`6ÂÎáÈ!!¸ Ž `Ȳ Þ¡ `"ÞaþÎ!!Ä¡&Þ^ãU^ç•^ëÕ^ï_óµ^Ïá"¬A_ÿ`V`V^ÏÁ”@ˆ !ÎA!Üá‚ÂÎA!(!Üá‚ÂÎA!(!ÜáÖÁVÎA!ÎaâÞÁÎáÜáâÞáÞaÎ!!Î!!Ü¡#Î!!Üáb:BÂÎA!Ä¡=ÎáÎ!!ÖA!Öá"¬ÁÞÁzáÜ¡žÁÜáâÞáââÞÁâblå:ÂÖáÂÖáÎáÎaÎ!!Üab,ÜáœAäa a ÎÁô¡9ëáªAþX j Ð! ’ÀÊA ’€6.¢ÞÁÄ!!º ÔA@ FÔ`ÄTà6aâÞÖwx ¶Ä!!°!xy“7^É¡ÞáÞÁÞaÞabÞá.âÎabÞÁÞáÖA!ÖáÜáÎabÞÁÞáÖA!Ö¡=ÎáÎaÜáÎaÞáÞáÞaÜA!ÜáÎabââáÄáÜáÎab.âÎÁÞáÞÁâÂâÞáÖ!!ÖáÜáÎáÜá.êáÎ!ž âÖþ!!ÜáÖA!Ä!!Ö!!Ä!!.âÎáÖáÄ!!ÎA!Ü!!ÎáÜ¡#Ü!!ÎáÜáÎáÜáH¡ÞÁžÁðªª! Ò@š3\ TàRA ž€Þ@ Êav@6¡.ÂB¢,ÁDÁÌ!ÚÀ˜ ÚátÀÎA!ÄAy;Ù“}÷.Â>™”K_ÉAÞÁÞÁÞ êÎáÎáÜ¡#ÜáÎáÜáÂÞáÞÁÎA!ÜáÎáÜáÂÞáÞáÞÁÎáÖA!ÎA!.Ââ"ÎáÖA!ÜáÎá.âþâÂÎA!Îá.âb:âbÞábÜA!ÎáÜáÜaÂÞá"°ABÞád¡ìàââlÅÚÃÎA!Î!!ÜaâbÚCÂÖA!Îaâ,.ÂäÁªªÀðá·ØÁäÁäáä¡7qí¡~ záÜ¡B‚¨â:âÞá6abÜáÈÁ”¿¬k¢Ä!!°!¬Ïš”äê!!ÖáÜáÞaÞÁBââbââbââbâÂâÞáþÞáâÖÁBÞÁâÞáââÜ!!ÖA!Ü!ÞAâÞÁÞaÞáÞáÞAâbÞáBâ´9!Îa.âÄ¡."BžÁÞaÜ!!ÎaÜáÎabÎáÎáÖáÎ!!ÎaâÜáÎ!!Ä!!ÎáÄ¡=ÎáÎ!!ÜáÎáÎaH¡ÞÁœá"(q‚¨ëAêáˆZÁ‰z6¡ÞÁä!!ÄÁÞA›ßÁÂ:b" ÎáÜ!!Ä­KÜ“Ïá"¬ÁÄWyÉÁÎáÎáÜ äÞÁÖþ!!äAÞabÞáBbÞáBbÞáÞâÞaÎáÜáÜ!!ÖáÂÞálåÞÁÖáÎáÖáâBâbÞÁâbbÎáÜáÎáÎÁVÎ!!ÜáÜáÂÞÁÎìáÜáÞáz¡ÐàÎáÎ!!ÜáÂÎá.B!ÎáÖáÂÞáâÞaâÖ¡#ÖáÎáÜaÂÖA!†À`!!œ¨ñÁüäá÷"qßAÁ‡ `!!ê!!ÄáÜ!ÎÁÖáÎ!!ÖáþÎáÜá,aÞÁÞÁÞXÞ}·Ä!!°!Þï=`ûêáÜA!†@†àÎáÎA!ÜáÎÁâbÜA!ÎA!ÖÁleÂbBä!!Ρ#Ä!!Ö!!ÎáÜA!ÜA!Ö!!ÎÁlåÜ!!ÎaÞáÞá0gâÞáÞabÞá:bÜ!!âÁ¨¡ÜáráÜž :bÜ!!ÎA!Î!!ÄÁVÎA!ÎaÂÞáÚãÞÁ:âÞáÞáÜáÎáÜáH¡Îá”á"lE0G"qâH¡ÞÁì!!¨Áþ6¨A¬„èA8°aH ÞáBðÝóõõ.Â>Ÿôí•ìáÜa êá¬$ߨAöe¿P$_8 ÷­vŸ„ƒv_ò©Aò©Aø©Á6ÄAøÅ„ƒ¬Alƒ„ƒ„ƒvŸ„vŸ„£PœÁB.BžÁÎáÎáÎáÖA!ÖÁVÎáÎA!ÖáÂâ:âÞa Ö½;÷ÎݺwÝ­CøîG$XïÎ={çÎÃwî.¾s‡ÐŠX‚åî\½wîì©\ɲ¥¾–† <‡Ü¿›8sêÜɳ§ÏŸ@ƒ º³Ÿ8þ„؈*]Ê´©ÓýÈÕ{wîݹw?êýhi¯ׯ`Ã~ÕVß×zbÓrÕ§6¬>µòöB(«™wëÞ¹{wîݹwçÞ{·áºwîÞ­{wá9„çÖ½;÷NÂsïν;Çðœ»wçž{wîݹ!¤`!ôU±µ;†îÞµFØú]Åw‡jåî<„­Ï¹{çîݹÖïܽs7„’uÅýœN½ºõëØ³ç÷ÉÏ~úӞ稈5þIЂô ý9äñw ÄH¨Þá0ÄçxÇ9Þq„¬ÃçxÇ9ÞáŽu ¤"q‡FÜs¬ã爇;þÞqŽw¬ãî8BÎÁw Ä9‡E²w ÄïpÇ9âœc9BâáŽs ä9BÎw¼Ãï8Ç;*²†¬£"¾xÇ9zñ 4¼ãïXÇ9rŽw¬ƒ!븈;ÖÁw¼ÃïpBÎñŽs¸ãë¸È:ÞqŽw¸c 9Ç:B„MÀÂçÈÅ;^ œ£ç@ÇÞᎈƒCØÁ;ÂA„¼£RØA7~`‰^œÃõx‡;ÞqŽw¬ÃYGEÞᄜã? Ųw¼ƒ®t§K]}öCÁFu·ËÝîò³稇;Þqw¼ãò‚;Þþ±Žs dîx‡;âñŽs¼Ã qBÎñŽs0¤"YBÎñŽu¸Ã¢ç@ˆ;ÞqŽwœãë8Bαw dçx‡;Þ±w dçxGErŽw¸#©È;αŽwœ!çx‡;ÖñŽs¸!yÇ9âñqÈã9Ç;ÖñŽsTä zGEÞ‘‹w¸£Ï@ƒFÎÁs¼ãïpÇ;ÎñŽs¼ãï8Ç;Îq‘s d©È;Îñ1„Aï8BÜñŽs¼Ã:Ø,ÜñgdƒCXvðŽn!O#Ô „m°" ;8G9†°ta°x‡;ìñŽs¼Ã9B*rþŽwœãë@È`„¸!âð®¬g-ësTĴ宣K{¼c A‚<ˆpŽw¸ãçx‡;ÎñwœãîxÇ:R‘u¼Ã9Ç;α½Ãëx‡;ÞáŽuœãî8BÜñŽuœãîÐÈ9rŽwœãëxÇ9Þá]ÄçxÇ:Üñw0èî8CÖw ¤"ïpG<Îñwœ!ç¸È:↜cqÇ;ÎñŽg¸ã½h†rŽw¬!çxÇ9rŽw¬ƒ!îxÇ:"Žw¬ãçx‡;ÎñŽŠ¬ã"ë8CÖÁw¬ƒ!DØ,ÞáŽf¤âïp‡ :áþv¨âïpG²àŽo á–`FÀa‰N|c›€…;ÞQw¼cï8BÖQ‘‹œ!çø%†ðŽs¼Ãï Ç®Ïx|öCÁFã'Où~£î@ˆ8ä1y áçpBÎÁs dîxƒÞᆜ!ë¸È9ÜñŽs¼ã 9G<Þ!„¸!çXÇ9Þqw dyÇ:âŽwœ!ë8BÖw0ÄYBÖᆜcï8‡;ÞÁ „œ#ï8CÎáŽs¼ãï8Ç;Îq‘Ь!çhÆ;ÎÑ‹f áñðçÀë€ç°îðçðçðçðçðçÀþîÀçpçðç€ç€çðçðçðçàïpïp:° °àïð qñÁÁñ$âñ›Ð aáqïàçðç°çðîpïàC@ ?ðçÀâ@yZÈxçPÖ°…`˜kä`çpHPD€î°që€çðîpï° !ï°ïp ±ç€ç° áçðîpqïàç`QîpïP áç€ë çðîp!ï°ïpïàçðÁ áëðç€îÀç€î°Q ± áç€þîà çð­ð hðçÀçðîpáá±áï°ïp !q±ïp±± áëÀD° °àçÐ î€îðçàïpïPáñpîÀîðîðC` °àçPïpïpëðç0Tï° ò–0qAþ´‘Ù‘ù‘;Ñâ€Ø’&y’( ’ý@öðç€îðò0çðçðçðîÀëpqáïpîÀçðî€çà± áëp±î€ëàï°ç€âðî€çðî€çàþqquqîÀëà±îðç°îðç°îðçðëðçðçðç€çðç°îðçàïÐ Ñ ÏÐÊ ¹Ð ¹Ð ¾Ð ˜© ˜Ù ˜© ˜Ù ¹  ¹Ð ˜Ù ¬™ Í Í Ê  ¹Ð ¹Ð ¸Ð ˜9›˜™ ÍÀ ˜Ù Ê › îð¾Àç€çÀî°­qïïPç€îð¤ îðòðçpîÀîðâ€î€C@ H°!)Ÿò9Ÿ;qa ô™Ÿúi’â`!ò@ ±qïpïàïpïpþï°î€ç° Që€qï°ïpáç0T ò­¡±áï ïçðëàï° Á ïpëÀîðçð­qá áq áë€î°±qï°ïà½À ²Ð nàáïpïàqq qA"ïpïpáïàïpïpqîÀ ‚ B› îð¹pçðëð‭ñîpïpî€ëP?° °€õ€ëà±ï qáC@ HðçÀä°Ÿ¬ÚªûÔâ€Øàª´Z«9!õ þCPCðçpë€çàáïPïpïàïp®ñçpîÀçà±î€ëp qQïpïÐïpqáQïpë çðëÀçðî€ëpïpëàïpïpîðç°ñçðçðçà! ááÍ€²Ð ]0›³ù ½ ±Í ± ²"²¹Ð Û Î0›Í²Ï ±Í  :° °PÎ ï°Cåëð#ïîpïp1›Ð aç€ òî€çðëp Q? Dðëp!¶Úµ®za ^þ;¶úyö€ë€Hð?€çðçðîp qëpïà뀱áïpë€ëpïpïpï°ïpïà òç€ëÀç°±Që€ëÀçðîpïp±q áëpïàqïPáï°CåçÀî€çÀî€îpá ïp½ð hà$rïpîÀ îpïàçðñçðîðñîðçðçðîð$âÑçð®qñA› îðÍðçðçðç€ëàïàïàëàïpî€þîð 2– Qïp q±ïàqëpïà?° CÀçðä@¶*Ÿý  +Ã')õðçðçðHPCp±ïp±qqáá q ±á q Qïpïpï°qîðçðçàïÀ ïpîðëÀëðçðñçàëðâ ëÀç€ç€çðçðëðâ€îðç°!òðç°îðç°qï ! Ï`åáïàñ€çPq±îðîðî­Á­ñþ­®ñî › á ïàï°qïÐáïpïà ± ñ¤ a Ñ °Ð ° ´€ç`Q: HàçÀâ Ãèì‘çPÖÎîÜOýpöðç€î€ï@ïpïàqïpq qëðçðçðëpÁ ï âÀçðçðëðîðëðîpïàïàqáëÀçÀëÀîðçðî° qá áçðçðç°çðî°qïà áq±ùîðë€ÏðâРрëðñëþPñPïÀ ±ïàëàïàïàëðîðçð­ñëpïàï°îpïpñpïPëðçðî@› îð¹àïàïpï°îðîðç°î€ëðçðçðçðî@› Q瀴à ÑÐzPõÀç Cïð›0±îðäàµÄŸý  ŽÜò9õ€ç€D C€ç€ëðîðçï uïpq±îÀç€ëÀ q ±î€ëàqïà áï°âÀëPïp !þïàá ±ïà qïp qëðçpçðëà qëðçðç°îðç€ç  Ï`ïàáïàçðçðî€ë€çpîðîðçðqëpëàqïà ±î – ñ qqïp ááëÀëÀ:° ­PöàA ÍÐ:àû`ëpï pÇðC Hpïà!Ì}è'ya ˆÞèIöpï°ò@ï°ïpïàïpq á òë€îðëÀîÀëðçpþëpïàçðñçðq qï° qïpqïPç€ëpç° qïÐëpïà±ç€ç€çðëÀçà ‚çðî€çÀçðî  ! Ïàï°çðç€î€ëàç€ç€î°qïpï°ïpï°îðñçðîpïpqï°áç€ñ› îp¹Àëðç€î°ïpîð âïÀ îðç€C` °Pöðëà´ð.ÐÑ ö€çð/à¥`?` CðîðîðäàèZþßOý  [öøÔý õðîðçðC Cà qïàëðî€ëà q qî€ òçðçÀçðÁë€ç€ëpñëÀçðçðîÀç° qñçàïpï°ïpïpï°ïpîðîpëàqqëðçðç`QëÀëðîðç€ëP¹ðî Ï€ áï°î€çÀ òçðëà áïà ± q ±î€î€ç°ïpîðîð› îð½ðçðçðîÀáîÝ»uþß3xîݺ?HÁrçNÞ»ˆ½ì¸hÖ`Ÿ½uÝ;'¡ÜRHÞ3(îßJ–-]¾„SæLš5mÞ„y.¢5œ=}þæ9{ïÎDRïÇ»sïÖxnà¹wîÞ­;÷ÎÝ»uÏ­3¸Îà»uïܽ;7ðÜ;wïÖ½;÷ÎÝÀsïέ;÷îÜ»uçžènݹwîÞ­xnlDƒçƺ[÷îÜ»sïν[7ö»uÅ <÷îÜ»sïÎ \g0â;eïÜÉzfçÝ:ƒîÖ{çîݺ ºqà¹uϽ;÷ÎݺsÏ Œxî»sÝuGd,wïr <7pÝ;qÏþ¹{wÎà¹uϽ;÷ŽÈ&XîÞÕ;çî\¯~ûöõ³ÇžwÎqG!~Pá,b s"ç' '¤°Bšúg lZâ°C?1DG$±DÉ©g qÞqç‡z†ÈÎèœuÞ9g¬sÞ9çsÞqçsÞqçs:çs :gwÎyǃÎqg uÞqg wÞqg sÖyçœwÜËwÎygw@2HƒÎyçœwÎ1ȃÜyçœwÎyçw4{g±ÎyçwÞ9çsÞ9Ç\"j¥7ÎyçœwÎ1èœwÜyçœwÖyçœxÞçwÞ9çwÞ9çu:Ç sâyþGœwÜkwÎyçœu:G‡MZH™u:çw:g sZÐwÎH‡M`‰ÈžwÜHž~´GžuÜyçwÎyÇ!HAb±Ä11^y祷^ωÈ{÷å·ß}ɱg,wx‡ˆsÞ9çuÞ9g,wÞ9çurÇ sÖèœwÖ9çsZçœÜyÇwÎygÎ1ÈsÞYÇ srÇ wÖyçœwÎ1Èu ZÇ s¤]çœÎyçœwÖËsg wÎygwÜèœwÖËg‚å;ÞYÇ sÞYg srÇ s :g wÎëœw":g srçuÞþ9çsÞqg wÎhK`qçe Z眱ÖèwÞ9çsZg sÞbX"²g s:çˆÞqçˆ:ç!Hùás "Ç_ÝwçÃ~ěއ'¾Þ~ú§žwÎYg $äâwÞqÇ uÜ1èœwÎèœuÞ9çwÆrg wÖ9Ç s Zg s ZçsÜèœwÎhwÎyçœÎ1È:ÞqŽ¸Ã çÈ9ÖñŽs¬ãâÈ9rŽuäï8Ç;Öauä9Ç@Î±Ž¸ãçxÇ:ÜqŽ\ ¤Ípƒ;ÞqŽw¸ãçÈ9ÖqŽw¸c îÈ:²Žþw¸ãëxÇ9rެc,çx‡; ⎬c,ëp‡HÑŠˆøâçx‡;Þ±ŽwœãîXÇ@ÎñŽu äï8Ç;Ö1X©‡8w¬c î8Ç@ÜñƒHáë8Ç@ÄQŸ{wnÝçwâÞwð»»ïß#”ÅÆ¹RZÛ!ÅůÙŒœkqÎøƒîν÷Œš;ë¼ãÎ;Ô¸#Î9⼓Ÿ;2œƒŠçˆÑ†8‘œ“*· !Œ:bdÁ€ÛäŽ8ù£Œ5ï¸óÎ9õÒŒî¼ãÎ;î¼ãÎ@î¼ãÎ;åÎ; äÎ;½ãÎ;î¼ãÎ;e7Ð9ï¸óÎEï¸CÄ&°@ÔÌ;ç¼sÎgç¼sÎ;ç¼³ÎXî¼sÎ;ç¼óÃ&°œãÎ;ç¸óÎ9þëœãÎ@î¼³Î;î¼sŽ;ïü`É39­9ú(¤‘J:)¥•Zz)¦“ö#Î@Ødú)¨¡Š:j¤ãÔóŽ;ï¸óÎï Ñ;ç¼³Î@ç¸3Ð9î ´Î@ç¼³NvçXsŽ8çˆs9âœ#³ âÔ@N7CÔ@7FÔ@Ž À!Î9âœ#Î9âœÃì9ä4ƒÍXî¼cÍ9ïœÃì;̾#Î92DB \Œ‚ G s„0€ãA7¼SÃ9âœ#Î;â¼#ÎA✣Œ5¹óÎ9ï´òŒç@4DïœóÎE½³Ž;“2Ìî¼Ñ;½sDïœãÎ@ç¸óDïœãŽþ›ÀQ/ï¸óÎ:ïœóÎ:c¹Ó—8ï¬3Ö:ï¸CÄ&°¼sÎ;ëd·ÎXç¼sÎ@ A ëô%©qË=wÜç@d Ýyë½÷£ýcÏ:¹óõüðÎ9}­3Ð9Î;ç tÎXç¼³Î@½ƒ8ïˆCèçˆóÎ9䌓M.¬ F £0¢F £0¢F â”0ïˆsŽ8ïˆú9 “ÃŒ5ç¬3;Ø0+Î9ÌžÃ,9âÈ` rÔ@D›dcƒÝ@FÝ 1Î✳<9âœÃ,9ã8óÌ;ëô%K3r¼ãÎ;â ´Î@ë@´Î;Îñw¬ã‰DÎñŽx¸ãþëpÇ9ÖáŽw¸ãëˆ;Î1w¬c îX‡;Î1wa°€H.ÜñwŒåï8Ç@ÎñŽu¸c îxÇAúB„MÀ¢/çxÇ9ÜñŽs¼ãïpÇ;ÜñŽs¬Ãï)~ðŽsŒ…Ÿº"³¨Å-öCÁÆÃ(Æ1n±ä°Ç;ÎñŽu¼ãõÂ@αˆ¼ãîXÇgÎ1s¬Ãï8Ç;Î1w¼àÇ8À1pŒÃãÇ8À‘ŠR€ãr¨Á²€¼! ãP„8¾k rà@$8À1ŽTŠÃØpÇ;ÎáŽwX‘à@¤5È‘Êq€CÌú€(T@„R€cPþ †ˆ`„nA\ 5ÆApŒˆL¥8œas¼ãïXÇ;dÑ 4¼ÃcqÇ;Îñˆ Äï8ÇXòw ä qG_Îñw¼ãïXÇ;Αwœc îÈ:ÞáXîx‡2rŽuœãçÈ:Ærœc,çx‡8Þ¡ƒMÀâïpÇ:>ãŽuŒeŸqÇ"A„w¬ãGkrªÓò´§>ý)Pƒ*Ô¡þô±Q“ªÔ¥2µ©<%‡<Æ$¼ãçDÎ1w¼Ãë8Ç@Î1w ÄïXÇ9ÞpX#•©"­‘ÊqXcyà¨A*űq¸U#èþƒ[ÇaTŠcÖp«2°qŽu ÄØH¥5Üj pXÖÀf±Á,kDc:P0 ŽÌ‚ÃâH¥5Àa k€CÖ‡2°áޱœã²p†ÞáŽuœãçÈ9Þ‘uœc îXG_ÖqŽw@äîÈ9Þ±Žœ£/ëxDÖáŽwœc,îx‡;~° X@$qÇ@αŽwœãçèË9ÖñŽs|æDØ,âŽwœãëxÇ9ÜñŽs¼ãï8Ç;ÎñŽs¼ã¤ÂXÎñr8µÂ¾°Sû!Ž`Ãþ0ˆwzŽz¼ãï8Ç;P!¼ãŸY‡;Þqޱœ#ïÇþ@Î1w äëx6V»Zp¬öBv+6Äñ qPâ Ff©ñ¸`28V ŽÕ‚ÍÀ†;rŽwÙà°Æ7¬k˜ƒÖÀ†5¨A l€ƒÖø6VK k`˜¥F™S¹Zp`VÖxÇ9ÖáŽÀ¢hè‹;ÖqެÃc9DÞqw¼Ã9Ç:ÞqŽw¬c çÈ9ÖqŽwœãîxÇ9ÆâŽw¬ãçˆ;~° X¸ã½Ë9âŽw¸c9G_Ö1u äï‚%`1sŒå9Ç:âŽu|ÆHˆÜqޱˆ#Äæ>w…Ïk »Ýîª8þäñ$¼ƒ9Ç@Îñwœc î8Ç@Î1w¼cçÈ9úbÌbcµØ°†80KÕÊr–36¨‘Y!SÃßÀÆ5V{ k`vµÎ°†;Ö1Ì^ƒÖÀÆ3¨ j<ãâ65¢ñ 9_ÃrŽ†Í©ñ f¬öÔˆ†5¨ñ k äc¡Å3ì‘s¼Ã9Ç@ ²Ž¸ãïXÇ9ÞáŽsôÅïpÇ9rޱ¸c ˆ;ÖñŽs¼ã9Ç;ÜA„MÀÂïÈÅ;Î1u¸c çxÇ9Þ±ŽwˆãîÈ9ÞqŽw¬ã?Ø, òŽs¬Ãï8Ç;ÜñŽs¼Ãï8Ç;Öþ1–bY‡;ÞAŽwÓ¾ö­é‡8‚ ÛóþÝç¨Ç;Î±Ž ACÈ:ÆrŽœc ë8ÇgÜ1s¼cï8Ç;ÜA ÐäG*)ŽT–â8ɬq¤ràXž8ÆAq€nà@¤/À᎜Ãàx†2(C30ƒ34ƒ28C30ƒ28C30ƒ24ƒ28ƒ3à3(34ƒ3(ƒ3 3<Ã3à3(ƒ3(C3(-ˆÃXœÃ;œC/4 Ä:¼Ã9 Ä:¸Ã;œÃXœÃgœC<¼Ã9¸Ã@¬ƒ; Ä: Ä9¸Ã@œƒ;¼Ã:¼Ã9¸ÃXœÃ;œÃ: Ä9èÀ&À‚þ;¼ƒ2¬Ã;œÃ;¸Ã;œÃ;¸ÃX¸ÃX¸Ã9¼Ã9|ÆlB+¬ÃX¸C_œÃXœÃXœÃ;œÃ; , Á@¸Ã@ˆCïâ¹DXƒ!.⇉ƒ< Ä9 ÄÈÜÃ;¸Ã:œÃ;¸Ã;¬ƒ; „;¼Ã9¼Ã:œÃ;¸Ã:Œ…;¼ƒ;¼D´)B+Äb+Äb,¶‚-’,´)´B,¶B+0’B+Ä"0Æb+äb,FÃ;œÃ:ô6Xƒœ‰ƒ5d5¬–œYCfY5ˆ6È™5`Ã3ˆƒ5`ÖÅa5¬fQÃ9 Ä9¼Ã:¼Ã9ôÂ3ØÁ@¸ÃX¸Ã;œÃ@œÃ;¬Ã;œÃ;œþÃXœÃ;ÄÃA¼DœÃ;¸Ã9¼C<œÃ;¬Ã;œÃ;¸Ã@Ä;¬ƒ;ŒÅ9 l,@„2ŒÅ9ŒÅ9¼Ã:¼Ã9 Ä9ŒÅ:¼Ã9¼Ã9¸Ã; %ÐÂ;œÃ@œÃ;ˆÃXœÃ: „8ôÅ:œÃX¼Ã9¼ƒ;¼90¢TVX?ˆÃ@`ÃTf%SC=¼ƒ;¼Ã9¼ÃÈüÃ9¸ÃX¬ÃXœƒ; Ä:¸ÃXœÃ;œÃ@œÃ;¬ƒ;ôD¼ƒ;ô…;ôÅ9¸Ã;¸Ã@@Ä;@Ä@¸Ã;@Ä@@D}½ƒ;œÃ;œÃg¸Ã9¸Ã@¸Ãg¸Ã;¸Ã@¸Ã9¼ƒ;ôDŒD¼D D „;þ Ä:¸ÃXÀÂ3 Á;œÃ;œÃ:¼Ã9 Ä9¸Ã;¸ÃXÄÃ;ˆÃ;¸Ã;œÃXœÃXœÃ@œÃ@@Ä@œÃ;œÃ@¬ƒ; Ä9ŒÅ:¸ƒlB+@„2¼ƒ8ŒÅ:ŒÅ9 Ä:ŒÅ9¼ƒ;¬ÃX¸Ã;ü)ÀÂ9 Ä:ŒÅ:Œ…;¬Ã@œÃ;œÃ;¸Ã; )üÀ;œÃXˆƒV.(QDXƒF(P‘ƒ=¼Ã9ŒÈ¼ƒ; Ä9¼ƒ;œÃ;¬ÃX@Ä@œÃ;œÃ@ˆÃX¸Ã@œÃX¤L_¤Ì;ÀÌ@¬ÃE¼D¼DœÃ;¸Ã@\Ä9 „; „8 ÄE¼ƒ;œÃ@\Ä;¸Ã9¼ƒ;¼D þ̼Ã9ŒÅE¼ÃE¼ÃEœÃ@¸Ã;ˆÃ;œC+4ƒ¬ƒ; „; Ä9 Ä9¼Ã9¼Ã9¼Ã9Ô×:œÃ@¬Ã9¼C<œÃ;¸Ã9¼ƒ;¬Ã@¸Ã:ô…;œÃ;¬Ã;œÃ@¸ÃX,¸Ã;äÂX¬Ã9¼Ã9ŒÅ9¸Ã;œÃ;¬Ã;œƒ;¼Ã9ŒÅ9Á&ÀÂ9¼Ã9ŒÅ9¼Ã9 „;ŒÅ: Ä9¸Ã9ü€% Á@œÃ@ƒ„ëNõƒ8 6+³²F?ˆC= Ä:¸Ã; < Á@ˆÃ@œÃ@œÃ@ˆÃ;¸Ã;œÃ;¬Ãg¬Ã;œÃ;œÃ@¬ÃXœÃ: Ä:¼ƒ;¼Ã:\Ä@¬ƒ;¼Ã9¼ÃE¬þƒ; Ä9¸C< Ä:¼Ã9ÄÃXœÃ@¬ÃXœÃ@@ÄXœD¼Ã9ôÅ9ŒÅ9\Ä@¸Ã;œÃ:@Ä@œDôÅ:¼Ã9@ÄX¸ƒ,4ƒ Ä9¸Ã;œC< Ä:ŒÅ:¼ƒ; Ä9¬Ã;œÃXœÃXœÃX¬Ã;œÃ@œÃ;¸Ã@ÄX¸ÃXœÃ;¸ƒ,œÃ;<Ã;œÃ;@Ä9 Ä: Ä9Œ…; „;¬Ã@¬Ã@è€%ÀÂ@¸Ã;œÃ@¬Ã;œÃ@ˆÃ@¸Ã9 „;¼Ã¬C_ˆC³6ë9@„5.³žƒ= D¼ÃÈÔ×9¼ƒ;Œ…;œÃX¸Ã9¬Ã9 „; Ä:¼Ã9¼Ã9¬C_þœÃ;œC_¸Ã:Œ…;Œ…; D¼Ã:ŒÅA¼Ã9 Ä9 Ä:¼Ã9¼ƒ;¼Ã: Ä9 D¬Ã@¸Ã9¬Ã;¸Ã:œÃ;¸Ã:œÃ;¬Ã;¸Ã9¼Ã:œÃ@¸Ã;¬Ã9 „;œÃ:¼Ã9¼ƒ;ŒÅ9Œ…;ÀÂ3ØÁ;¬Ã;œÃ@ÄXœÃ;¸Ã;¸Ã9 „; „;¬Ã@¸Ã9ŒÅ9ô…;¬Ã@œÃ;¬ÃXœÃ;¸Ã:œÃ;¸Ã;¸lB/D. Ä9ŒÅ:œÃ;œÃ@¬Ã;œÃ;œD¼ÃAŒÅl,œÃ;¬Ã@œƒ;ŒÅ9Ô×:¸Ã;¸Ã¼Ã9Œ9(n±öƒ8 6 q±ŽC=¼Ãþ9@Ä; < Á;œÃ:¼Ã9ÄÃ;œÃ;œÃ:ŒÅ:¼Ã9¼ƒ; ÄA¼Ã9ôÅA¼Ã9¼Ã9 Ä9¼Ã9¬Ã9¸Ã@œÃ;œÃ;œÃ:¸Ã;œÃ:¸Ã;œÃX¸Ã@¸Ã@œÃ;œƒ;ŒÅ9¼Ã9ŒÅ: Ä:¸Ã;œƒ; ÄE Ä9Œ…;¼Ã9 „; Ä9Ô×:¼ƒ;ŒÅ9¼Ã9¬Ã@œÃ:¸Ã;´Â3 A_¬ÃXœÃ@¬Ã9 Ä:¼Ã9 „8¼ƒ; Ä9¼Ã:¼ƒ8 Ä9 Ä9¸C_œÃX¬Ã@œÃ@œÃ:¼ƒ;èÀ&ÀÂ@ôB_œÃ;¸Ã;¬Ã;œÃ;œÃ;¸ÃXœÃ@ȃ8 ÄX,¸Ã;¸þÃ9¼D¼ƒ8ôÅ:¼Ã9¼Ã9¼Dü@$Á;¬Ã9 „88±„žDXƒDGè9ÈÃ;¸Ã;¸Ã; <Á@¸Ã@œÃ:|Æ9¼Ã9ŒÅ9¼Ã:ôÅ9¬Ã9 „;¼Ã:¼ƒ;¼Ã:¸Ã@¸Ã@œÃ@¬Ã9 „;œÃXœÃ;¸Ã;¬Ã@œÃ;¬Ã9¼Ã:ŒÅ:œÃ;¸Ã;¸Ã;œÃ;¸Ã9 Ä9¼Ã:¼ƒ;œÃ@¸Ã: „;œÃ;œÃ;¬Ã@¸Ã: Ä9¼Ã9¼Ã9ô…8¼Ã:œÃ@¸ÃX@Ä9ôB3Ø;œÃ@¸Ã@¬Ã;œÃ;¸Ã;œÃ;¸Ã:|Æ9¬ÃX¸C_ÄÃ9 Ä9¼Ã:œÃ;¸Ã;þœÃ;¸Ã9 Ä9 „;¼ƒ; Á&À‚;¼C3œÃ;¬Ã@œƒ;ôÅ9 Ä: „;¼Ã9ô…;üÀ&XB™%·QƒaƒaÃlÂŒÅ9¼9\ô‚öƒ8 6`wVöC?œC= Ä:¸Ã; < 5PÃja–r[5$76$76$7666$7666”5”6¬66¼·5PÃjQ6X6¬–85$·8X66(85X5¬6¼76Xƒ8Dƒ,4 Ä:œÃ;œƒ;ŒÅ9ŒÅ9¸Ã@ˆÃ;¸Ã;¸Ã;œÃ;œÃ@œÃ:œÃ@œÃ@¸ÃX¬Ã@œÃ@¬Ã@œƒþ; Ä9è€%´DøÂ@¸Ã9¼DœÃ;¬Ã@œÃ;Ä;¬ÃX¬Ã9¼ƒ;üÀ&ø‚=´¹›Ûƒ>¼¹œÛƒ<øC=è, ;œÃXˆƒwkå9@„5üyVŠƒ=œÃ@@ÈØC=Ì9¤·¹>̹>èC¤Cº>¼¹>´y=胛ëÃ¥‡ºœ×ƒ›×ƒ=胨§úœ×ƒ>´¹>Ìy=´y=ôÂ3ØÁ@@Ä@¸Ã:œÃ@¬Ã9 Ä9|†;œÃX¬Ã9 „;¼Ã9¼Ã:¼Ã9 Ä9¼ƒ;¬Ã@œÃ@œÃ@¬Ã9 ÄX,¸Ã;äB_¬Ã;¸Ã;œÃX¬ÃXœÃ;œÃ;¸C_ A$À‚;¼̼þDœCʼƒ;¼Ã9¸Ã;üÀ& Á@¬ƒ;¼9ºTöƒ8 6(¼T’C=¼Ã9@Ä; <Á;@Ä;\Ä9¤Ì;ÀLÊœƒ;¼ÃE¼ƒ;¼Cʼƒ;œÃ;¸Ã9@Ä9¼DœÃ;@Ä9ˆ¼;œÃ;¸Ã@\Ä9¸Ã@èü@@Ä;¤ÌA¸Ã@\Ä;|Ç;¸Ã9\Ä9¼ƒ;¼ÃE¼ƒ;¼ƒ; DœÃ;¸ÃA¼ƒ;œD´Â3 Á;œƒ;¼Ã9ôÅ9ŒÅ9 Ä9¬ÃX¸Ã;œÃ:ŒÅ9¼ƒ; „;Œ…8 Ä9¸Ã;œÃ;¬Ã9 Ä:ŒÅ9¸Ã‚,@„3ˆÃ;œÃ;¸Ã9ôÅ9¼ƒ;¼Ã9¼ƒ;þ¬ÃX¬Ã9 Ä‚,@Ä:ÀÌ:¸Ã@ˆü;¸Ã;ü@$ Á9¼ƒ; „8@<#žDXï/"9ØÃ@¸Ã;¸ÈÈü:¼̬ƒÈ¯ƒ;¼Ã9¼ƒÎÃÌ@¸C<@Ä;\Ä;\Ä@\Ä9¼ƒ;ăο̬Ãõ»Ã9¼DÄÃ;ÀL<¸ÃX@Ä;¸Ã;¸Ã;¬DœC<¬?@¼sçîÝ»ïÜëÕÌNÁuß¹[WÐݹwëÎA÷nÄïÖA<÷îÜ»u žCùîÜ»ë ºb ÖÀf×¹+xn]Ásç ®øîÜ»sϹ#b Ö@§ëܽønÝÀuãAüaiÈ;wïܽ#þ÷lY³gѦU»–m[·oá¢í'® ¶¸wñæÕ»m?rõν[çîÝzD<÷Îi¼sîÞ |·î»wß­sºÎi¼sïÖ \÷Óéºwîâ{w.^ÁuîÞ­swÎé:§îÖ½;çnÝíuNß¹+xÎݹÛº{ïœÓuß |÷Óé»sîÖ \70Þ¹a=C3ðݹ‚ç ®Cy¢»wç ž{wîݹwëÞ¹{ç®à¹uç :gs :g ˆÜÑXò¥ wÞ9§ sÞY%wÞ9g¥u Ò”VÜYi wÎyÇ”Üù© !HAâs '®i¬ÑÆÓ:g kpìþÑÇ{$Çž‚ÜyÇ$Þ¢ u rês rg¥Þqçw rçs :¢ º­ s ú© § :¢u rg¥•ZçÖhwÜY¥sÞ9'žwœzg uBi•Üyg s :§ sZyÆŽwÎ)HˆÎyÇwÜY§ s :gwÎȈÜY§ Ÿ rçsPZ眂Ü9g‚ÜùaXÊås Z§ s :gsÞqçsÖyçw ÂXÜ9çuœzgwÎ)èœwÎhw~°dˆ‚Î)ˆ Ùm×ݳú§ lÞ­×^û!ÇžwÎyÇwgˆwÎyçwÞþYçw ZçœwÖ9§ uÎ)ÈwÎY¢u :§ s*hwÞ9çwÞY¢s rçw ZÇ”ÎyçœuzçœuÜ)ȈÜ)ȈÜyçwâ)Ès rç rgwÎ)èœwÜyg ˆÜ)h‚Îi¥4 Z¢sÖyçœwÎ)èœwÖyg ˆÖ)èœwÖèsÞYçs ZçsÜ蜂ÎyçœwÜÂXÜy§ˆÎyç§‚Î)ÈwÖèˆÄ)èR`q§ Þ9¥s Z§ sÞhRX%qÐÊ]÷ÝyïÝ÷ß>÷s²Føã‘O^ùåÿGžwÖ)È!þä!¢ uÞqçwÞ9çsÜ)h wÎq§ uÎ蜂ÜyGœwâ9§ xÎÈuÞ9§ wÎyçœu rŽuœ£ y‡8Þ±w@Ä瀈;Îñw¬ãïpÇ9Þ1s¼ãqÇ9 ⎂œãë(ˆ;ÎQä9Ç: âŽu¼ã9D`ñ ;¸ãîxÇ9 âŽw¸£ ç€È9PrŽwœc9Ç;α’uœ£ ;Öw¼cùÁ&`áŽw4ãïXÇ;ÜQs¼cï8Ç@Þqˆœc%DØ,ÎñŽs¸ãîX‡;ÞqŽu¼ã(YÇ9ÜñŽ!âï8DÈþaIN’’•´ä%1™IMn2“ýGA°ÁIQŽ’”¥4%%ÏQ‚œÃï@Â;†pŽ‚¸ãç(È:ÞᎂœÃqGAÎQs¸£ ?qGAÎQŸä)ˆ;Þ±w äqGA~2ˆ¸£ çpGAÖ1‚œÃYGAÎñŽuäëpÇ;ÎQs¬ãçxÇ9Þs¼ãîxÇ9âñŽsÄÃï8Ç@ÞáŽw¬ãîxÇ9âñŽ^4 ïpGAÖñŽsdç(È9ÖQs¼CqÇ9ÞqˆœãçX‡;PrŽ‚œãçpGAÎñŽs¸ãçxÇ9~° X ÄqÇ;ܱþˆ¸"çxÇ:ÞqŽw¬ãÇ;t` X¸ãñ@É9VrŽwœãî(ˆ;~ "¼cç(ˆ8NW¹Î5®çˆ5èšW½îu’â°Ç9ÖQw ¡HxÇ9 ²wÄïpÇ9ÞáŽudç(È: âŽu@ÄYDÖQs¼ãÈ: âŽuÄ뀈;ÎQw¬ãqÇ9Þ1uœ%ç(È:Þᎂœ"çxÇ:ÎQw¼ã9GAÖqŽ‚œ£ ?YGAÎñŽs¼ãï8GA~" g´áç(È9 rŽw¸#ç€È9Þ±Ž7­£ çXÉ9ÞáŽuœ£ ë€È9Þ±þˆœc!Â&`áŽwäâç(ˆ;ÞqŽwœ£ ç(ˆ; ⎂œ"?Ø,~òq¼Ã9Ç;΂¬c ï8Ç;~@Š!@äï _qœãSöCÁ†ŽdM’C9Ç;~ðŽ!äî(ˆ8 ²Ž‚œãç€È9ÜñŽsäYÇ;Î1wœc ï8GAÜñŽu¼ãï8Ç;ÎᎂœãîxÇ9P²Žs@äë(È9PrŽuä'î€È9 ²w¬äqÇ;ÖñwÄ9‡;ÞqŽ•¸cqGAÖñw¤Î@CAÖ‘u¼ã'9‡; ⎂œcï8‡;ÞqŽwþ¬ãçxÇ9 rwäîxÇ9 rˆ äçx‡;t° X¸ã½(È9ÞqŽu@d(9Ç:ÎQs¼cÂ&`±wœãëpGA~òwœ"î@B$àŽs@DBö÷¿ÍrŽXà29ìqŽw¬£ H¨ÖQw@Äç(È9Þᎂ¸ãqÇ: âŽwœãî(ˆ;ÎQwœ£ ë8GAÎñw¼ÃqÇ9 rŽ‚¬ãçx‡;ÞáŽs@äïpÇ;ÜqŽ‚¸c(Ç;ÖqŽ‚ ¤ î8GAÖñŽs¼ãïXÇ9Þሬ"îx‡8 ²Žwœ£ çx‡;~"‹gØþ¡ çxÇ9Þሸc(qÇ9 rŽ‚œ"çxÇ:VâŽuäïXÇ;Îñw¬ãqÇ: B„MÀÂïhÆ9Þ±Žw¸ãçxÇ9ÞqŽw¬ãî(È9Öñw¼ãïp6 wdçxÇ:òŽs@ä9D~@Š!dîx9 }÷CÁ†ô±Ÿ×~ˆÃïHA~ $¼ãïXDÖñŽsdçxÇ9Þ±§äë(È9¬‘qäßâÈ?6øøoÅÿÄ!ÿ¨ÿ¨aóOø"Öa Þ¡¬òÄ!ÿ¨óø¬8ø¨þÁšáÎ"Ü¡ `¡ÐàÜ"ÎáÎÁÞÁ B bÞÁÞá âÖ¡ ÎáÎáÖ¡ ÎáΡ Ü"ÎÁ âÞÁÞáÞát``a |"b â â âPÂÖ¡ ÜA6~âÜ"Î"ÖáÞÁ bÞáÞa`  B²oåêÂ1KéìáÜa ‚ä âÞáÞÁ â b  ÂÎ"ÖáÜAä!eQíÁbÑf1sÑäÁb±íAðaÁÎáÜáΡöíaíaþí!íAìAk1íAQj1aáÖáÞa B¢¡ Ρ ÎáÖ%Ρ äA â bÎ"ÎáÜ"Ρ ÜáÖá bΡ Üa âÖ"ˆ``ÁÞ!ÞáÞáÜáÎáÖáÄ%ÞaÜáÎÁÞá ‚6¡ÎáΡ Ρ ÎaPbÞá â~À†àÎáÜáÈA‰r“úA Šr)/©Ä¡ÎÁÞáÞaÞaÞá bΡ ÖáΡ ÎáÎáΡ ÖáÎÁ âÄAeñbñà.ßa!BÞ!þŸÁÞáÞÁÎAìátñfñbñr± rñd± äáäádñ,"ÜáÎÁzÁР ÖáÜáÎáÖÁÞáÖ"ÜáÎáÜ¡ ÎÁ âÞaÞáÞá  âÜ%ÎáΡ ÜáÎáÜA6âÞÁ â@² ÄáÎá~¢ Î"Îa6 bÎáÜá âÞáÞá bÎáÜaHáÞá B˜²?)éÂüs@ËâìáÎ"@ˆàÖáÎáÜáÎáÜ¡ Üa b â â'ÞÁ¨"âþA@Râárñäáâá:åábñ:ß!ßA¬áÜ"ž¡ B "Þ!ßAâA BÞA "ã"ÔAä%ä¡ bñZáÎáΡ Îž âÞá Â@òÞáÖ"Ö"Ö"Ρ ÖáΡ Î"ÖáÎáÜa ÂÖ"ˆ``ÁÎ! ÂÞáÖá®s®s â†``áÜ¡ Î!ÞáÜ"Ö¡ ÎÁ â'~À†  Ρ È@´Ä¡ °V”êÁÞá bäaÜ"Î"ÎáÎa ÞáÞÁÞáþ â âÜÁœâ"Þá'Îá~b~"TÀ¡ˆ€b`ÜáÖáÞabÞÁÞáÖa ”Á BÞᔡ´õÜáÞá'âá@€Œ`ÎÁÖá'âÁÎaŽ£†àÜáâáÜa´Õ,¡ ÖáΡ háÐ"ÎáÖáÎáÎaÜ¡ ÖáÜáÎáÎáÎáÎáÎáÜáÎ%Ö¡ ÎáÎ"ÎÁÞáÞáÜáÎáÎA6ÜáœAÞa@rÞáPâÞaÞáÞá'ÞÁ~À,áÎ"Î%ÎáÜáþ â bH Ö%ÄÁVýó—)ûì¡ Ö¡ @àÞa bÞá b Ö¡ Î"Ö"Ö¡ ÎA~BÞá'Èa~ÂÄA[Ï4` $€@ÀÄA´ÕÄA[ÝAÎA\מ"Üá”ÁÖáÞAÎÁÄá'ÈA†Î!¤Ja¤`0!T ÎAˆÀºÁ´•ÞÁuÏáH¡ Üa Â`ÁäàÎáÜáÎ%Üá ÂÞá ÂÖ¡ Ü"Ö%ÎáÎaPbΡ Îa ÂÖ"ˆ``ÁÞ¡ÞÁÞþáÞá"ÖáΡ Î"Ρ ÎÁ~€`¡ ÎaÜáÎa bÜ"ÎáÖábH Þá ‚Èb‰™¸‰ø‰¡8Š¥xŠ©¸Š­ø‰ûA ®¸‹½ø‹Á8ŒŸ˜êáÎáÎá†@†àÎáÎáÎ"ÖÁ)ÞáÞaÞA âÞá â¬AÎávÅÆAÞA´UÎAºáÎAd€ÀÞAÞávâvÕ÷n÷œÁ âBìávßAÎAÞAÎd`Èá˜A ’ÀvàºjÄ!@ " †@ÎÁþÏA~BÜÁÞÁ âÞ¡š bÞáÞáÖ%Ä¡ ÜáÖ¡ ÎáΡ ÖáÎáÎáÄ¡ ÜáÞáÞAPb Þá âÞáÞÁt`Za |áÜaPâÞáÞáÞÁÎáÎáÖ¡ Ö¡ Üa6Ρ Ü"ÜáÞa Îa ÂÞa ~ ˆàÖá Bĸ¦mú¦kúÂpº§}ú§˜äáÜaÞÁ@ˆàÜaPâÞÁ â  âÖ¡ ÜáÖ¡ ÄaÈ!¬ÅzÄ ™ÄÁÀÁ–á4 ˆ`Œ€þÄA¬ÃzðÚÅ!¬ÅA¨aP¢äÆAÈAÈAÈaÀ¡lÀ"A„ˆ À!†@ FÁÀAÄAºÈAìšn—ÎÞÁÎa Âd!ìÀÞÁÞÁ BPâ â' bÞáÞáÞáÞa®sPbΡ ÜaÞá b b,Üára ÞáÞá bÞáÞáÞa â â †`záÞáÞáPâ âÞá â â6a âÞlúÀ<Á«¸Ä¡ °AÁ!<¼ΡÜ%†@†` ÞþáÞa âÞá âÖÁ  âÞáÞÁÎÁÀaÆi¼ÆÁaf\ÀÁ˜! º ²AÄ¡TÆ­alÜÆÅÁ¨¡ ÎáÜÁä!É­ÆÅA†@nA Üàþ®á°A ²DáÚà"¡Æ­Æ­AÎÁÜáÜáÎÁÞš Þá bÞá bÞÁÞaÞÁ âÜ"ÎáÜ%ÎaÞáPâÜ¡ ÎáÜ"ÎÁÞáÞát€`a ”áΡ ÖáÎáÜáÜ"Ü¡ Üá bÎáÜA, b BPÂþÞaΡ Ä¡ tÀÎ"ÄA©½ÚÁøÂ¬}Û¹]ŠÉÁÞáÖáÜ äáÞá ÂÎáÜáÖ"ÜáÎáÜáÞa ÂÞÁÞ¬¬aÆó°Ì!ÿÞİaÆóoÆù¯Æó°á¨áÖ¡ ÜAÞÁÀÁÀÁhܰ¬Ä¬A¬!áÁÁ°°aÆ­ø¬Æ­ZáÜáÞ!Üáháä  ÎáÎ"ÎáÜá â â ÂÖá b â' â âÞá ÂÖ"ÎaΡþ Üa ‚6" âPâ b âÞáÖ¡ ÎÁ âÞá6ÞáÜáÎ"ÖáΡ Ü$×á~`†  ÖÁÞº}ôI¿Ä¡ °ôUÛûìáÜáÎᆠ†ÀÞáÖ"ÖáÜáÎ%ÎáÜáÎáÎáÖáÜáò/ᡯ¬¬™±¬!á©Á°Á¾¯!ÿ˜Á¬ÁÞá ¢äÿ®ÿž°á¨Á°ž¬ú‚š@lØZ»FКB…׬³ô.â9wïÜÉj†&⺈ïν[wþ.â:wïέ{wçܽ;qÝ;wïι‹¸.â¹wç8F<÷ÎÝ»sïÜéØËÝ;fë8ž{·îݹwîÖ½sÇñÇsÝé€e)â¹wëÎEt÷nݹwçÞ­;ÑÝ»‘œ{ç.¢¸|ûúý 8°àÁ„ >Œ8ð9wî¬%~ 9²äÉÉÕswŽ#’wD8ž{wîݹwç"Š{·.⺈î8ž‹èŽÚ¸qäf“GÜ8qäÀÍGNœµßâÄýž n9qàš#'n9q¹À[Çœµq䯉k>[¸qâš÷ÜlqãÄŸ-޹qä~‹#gÍ—»sïÜ­{ç,þÑØÁÑ9ëøôÎ9`D;ëptGë¼sÎ;çDäÎ:¹³Gç¬Ã›À˜2ïœóÎ:ïœÃÑ9îDtÎ:îD´GëDôÃ&°päNDçDäŽOîDtG?X2Ä;î¼ãÎ;äPFe•VRÖ8ase—^~ 9öp´Î;HÈ3Ä;âÈÃÑ9ï¸óÎ:óÎ9î¼sNDë¼ãÎ;ç¼ãÎ;²B()­Ò )­ÒJ¡¤´)¡:JJ+…Â)¡­Ú )ϼãÎ;çDä5„¶K+„¶ )­ÀÒ )­Ú ¡­Ò ¥¤´¢+)­š‹8òDäÎ;ç¼K3h¼sÎþ;ç¼s‚ç¼sÎ;ç¼sÎ:ïœóÎ9︑8ò¼sÎ;îptÎ;ç¼sÎ;ç¼sÎ9;ïœóÎ9:l c½päNDëœQ¼¹óÎ9ïœóÎ9ïœÑ–´²Î9ïœóÎ:ïœóÎ9‰Ñ9­Ñ¤ ñÎ9‰fË.SycÖ¼Ls͆õCŽ=ïœóŽ;ï !>‰óN<çDäNDîDäÎ:ïœóÎ9ND cî¼ãÎ;îøÄGŒ!èÎ;î¼/GîDäGç¬óÎ9ï¸óŽ;ïhÍÑ9ï¸sŽ;ºÓ ‚î¼ãÎ;îpäNDîDtÎ;çDäŽ,ÏØ‘;ïœþÑ:ïœóÎ:­Ã‘;ï¸ÃÑ9³GëœóŽ;>­ãÓ:¹³GDl c¹¼sNDçptGëøäNDëDtŽ;?X"‹Oçp´‚ë¼sŽ;ïœóΖ Ñ9‘csøâ÷Õ8a3~ú5÷#N=ãÎ;CÈ3DDçDtNDç¸óÎ9­ówpäqGDθˆ0æçx‡ÖèŽwœãç@c|r2æîàÈ9ÜñFDkï`Ì; ‘sDÄaLD4¨5ެÃqÇ;`ñ 4¸ãîˆÈ:ÎÁw¼ã8"rŽwœc9GDÜñŽs¼ÃYÇ;âåŽwœþ#"çxÇ9Þqw¼ãïp‡, w¼CëxÇ9"âŽs¼cï8Ç;ÜqŽw¬#"çx‡;ÎÁ¸ïXÇ98rŽw¸ãëxÇ9Þᎈœ#"î)°Ÿˆ#|œìä?ÎÁküe”¤,¥)O‰ÊTªr•¬äË9ìqŽˆ0 ò Â;Öá“updï8Ç;â‘s¼cqÇ9"²Žwœ#"âxÇ:8²Žˆ¬#"îXc´Žs¼caÌ9Þ±Žˆ0æŒy‡;ÎñŽuøÄï`Ì;ÎñŽ®#"ëx‡;ÖñŽsDäïXGDÖqŽw¬ãîx‡;Þ¡µsDäï8Ç;ÖñÆ€þ vpÇ:ÞqŽw¸ãë8Ç;Αspä:Ç;Ö‘sDä9Ç;ÎÁw¬ãçx‡;ÖÁw¬ƒ#?Ø,£ ެƒ#îàÈ9"rŽwœãëpGDÖáŽw °pGDÎ±ŽˆœãçàÈ9ÞqŽu¼ã)~ðŽsp„­l«[ß ×¸öCÁF\ïŠ×¼ÞUõxÇ9óŽ!Èc8ÞqŽwœãîh8"âŽwœ#"ëxÇ98²Žˆœãçx‡;"rŽwœAëˆÈ:8rŽwœãñpÇ;‘u¼ã:Ç;ÎñŽuDdYÇ;Îñ­½ã[GDÎñŽs¸#"þîˆÈ9Ö‘uDd9GDÎñŽs¸ã–°†ÜÁ‘s0&"îXGÖÁ‘s¬ã爈;ÞqŽˆ¬#"çXÇ;ÜñŽsDÄ9‡;ÞqŽˆœãçxÇ9~°‰V¸ã¹xÇ9ÞqŽwœãîxÇ:"rŽwœƒ#Œ9Ç;óŽ.<£ï8GÖñŽs¼CâxÇ:ÎÁ‘uDÄ?ˆÞ±ŽsDD§ì± ä yÈ~9c¬Aä$+yÉLîq?Ρu¼CkHÎÁw¼cYÇ;ÎÑ s¬ƒ#çàÈ9Þqެƒ#çˆÈ:"rŽwœãñzcÎñŽspäqÇ9"âŽu¸ãëþ8GDÎÁ‘x½Ãçx‡;"²Žw¸ã9GDÎñŽs¼#^ïpGDÜ‘xEÄqÇ;ÜqŽw¬ãçˆÈ:ÞáŽwXâh8Ç:ÎñwDäï`Ì;Îñwœƒ#îxÇ:ÎñŽs¬ãçx‡;Îw¼ãëxÇ9"²ŽsDÄëxÇ9"²Ž Á°pÇ;rwDd9Ç;ÎñŽu¸ãçX‡;8rŽˆ¸# °€…;Þ±Æpä :‡;"rŽwü€CàÈ9ÞA޾H|⯸Å/ŽñŒk|ã¿x?Ält|ä$/¹ÉO^qrØÃqÇ;† !¼ã9‡;ÞqŽwœƒ#ëxþÇ9ÖñƼãGDÖáŽwÄËï8Ç;ÖñŽs¸#"çXGDΑspdï8Ç;ÎñŽs¬#"ëpGΑs¬ãçðÉ9"rŽˆ¸ãîxÇ:ÞqŽw¬ÃYGÖñŽs¬ãçˆÈ:ÞqŽwœÃqÇ;ÜÁ‘sDDkÈ…|rެÃYÇ9"²ŽwœÃ'îðÉ9"²w4H>9‡;8rw¼ãïpÇH w¼CïXÇ;Îñwœãçàˆ;8âŽw¬ãï‡8"‚K""Œ‰×;ÖÁw¬ãG $¸ãÊÏþôŸÿŒ±†úßÿøSœöxÇþ:"â$ȃïXGÎççðçîðîpï°ç€ îpqááçÀçðñpqïà±>qï 5ççàëçðëpï°çðçŒÁçðçðîðçðîÀëÀçàç°ïpïpëpáëðîðv° hpïpï°ïpïpïpïàïpïpq/ï°ïpïpqëàëpáëpáëÀD° °À¹àq±ïp!ïàïàq±ï  ïp>á!þ>qîÀëð?@ Cëàï@ò‹±ˆrý  ²ˆ‹¹˜qýÐâPîðçC Càïp±qëðçðççîç°ïpîç°qëpïp±Œçç°qïp!qïp±qïpïpï° rëðçàïpëÀëpqïpŒâ ïpëîÀîÀçÀïà!`±îÐ çàçðçðëðçðëî€ âîðçðçà>áqïàïpïp:þ° ­ÀÊðâðëðçðîëÐ çðëÀîð.€vÐv@–m€½ ¹Ð ½à iÙ Í–¹à ¹ð°€á!ºÈ—})qçÀÖà—ƒ©‹ç`çðëðî€õ€¾—ié q© ¹Ð ‘Ù ‘™–¾ ͙ʗ¾Ð ¹Ð i© š™–Í  iÙ iÙ iÙ qÙ ¹Ð i© qÙ ¹Ð qé ¾–¾–Íà ¹Ð q© ½–¾Ð qÙ ¹Ð ¹à iÙ qé iÙ ‘é i v m@–v€áyïpqï°çëðçðëÀîÀþîçðëp>áçàî°ïpïàëÀç°1– îðÊÐ çðñòçðëðâ ïà!áY] ¢`Ð?°'j Ï ذ?` Cðçðîðä@˜7 ‹ý  8ê£ðGöðîðçð?ðC Ö Ï€ ñ •ր â` ذÔ Ö€ ñ ! Ñ UºÔ Ï@ U lZ¥Ø°Ø€§ÔP¥Ø€§ ñ vÐQ ¢]"jïpïpï°îçàqïpïpïpþëàïpqqëîðëÀçÀñòçîðçðî𤠌‘ qëpï°áá>qqïp¹àH€D0D€. ²)ý ­ ­Ðo² °0¤ðïp!?Š®èwŒa éê®&'öðçî€õ€­ ­ °Ð ØÚ Þ )Ø ² ­Ðo² ­ ­Ðo­ ý& ­ Ø )­ ²€­­ ë­° ­ÐoÞJ°­Ðo² ­@°Þ ²€­B°°)ýv±° ýÖ Ø* Òo² ²Ð ýæ­‹?þà¬?0?€R ÂëÀëpïà±q±ççî°çÀâî°çÀëÀî°A› îðÍp>áïpï°ï qï°ïp±ïpï dév€vàh`h`nàh@–”‹v@¹?` Cçäð®£Ëqý  ¤«º'õÀçð? Càh@–h`n`áih`”K¹hàh@¹h`hàh@¹v€vàh`h¼h`hàh¼v€v¼h`n€v@¹h`Àëh@¹h@–æ‹vàþh¼h`æëh`”kh`n€”‹Àkh`”‹v€v@¹h`æ‹d‰vàv€vÀëðççðçðîç°ïpïpq>±ïpïà/>áqïpïpïpîðçðç › Œá áçðçÀîÀâÀî°áÁçàî îçîðçàïàïpî0¤€ëàâ°ºk\qçÀÖÀÆqÜç ç°1ò€ïàq!qá>Áîàîî`Èáìïpááìþ/>áüçðîÐÈîîàÉïàïpá†|!ëàÉçðçðççðîpqáïà±>qïàáë`Èçðî°>±áëÀD° °àï >±çðçÀçÀëÀïpïpï 5qïàï°îðîðŒëðîZ3¤€ïpArÇý  ÇâPîðçàï0õ@±îðîðçðëë 5ñ@ïôîðîîðŒ±îðîðçð@ïÀþÁ>±ŒñŒñZóŒñçë 5¡Añàï 5ïpïàï°îðîçðëÀë`Èâ`ÈëÀëàïpï°ïpïpïpëðçðççðçðëçðçðçðçàïpqïpïà:° °ÀʰïpïàëÀëÀçðŒq±ïÀëðç°qï°áñàçëëîð‘@ï°çâÀÐl|Œa ŽºýpúàëÀHðCpïàïàçÀîðî°Z³Œ±Œ±îðëàçþŒñëðî°qîZ³´ïÀïàëp±Z³Z³Œ±ïpñ@ñðZ³îðëðçëÀëÀïççàçðñpïZóZsqïpïàï ï°qïpïpïpïàçÀçðç°á±ïpïàáëÀî°áëðçëÀD° °àï  qqïpïpï°ïpïàïpëÀç`ÈçðŒñçàçàqqîÀîð›0qï@Ê­ºý  Š®ºä`qþï€ò0ïpïàñðâðçðçðZóîîî`Èçàï°îðçðçðçðîpZŒ±îçðŒáŒñîðZóŒñççÀëàçðçàëÀïàqïÀïàqÁï°çàïpôîðëàëàž¼±±çç°îðŒñçÀâàçðëðñòççðçîÀçàïpïp?` °À¾°çî°ïp>áïà>áî°qqë+¿±ççîðâþ: HàçÀâé¤{+o G?ºâ`î°1ò@ïàïàçÀñî°ï°òáqáçðëðçðîp±q±ïàçð+ÿîpë+ïëpïàëîáï°ò±ï°òï°òáqïàëpï°òï°òëpïàçðëàïà>±òëð+¿ïpï/ïpïàç°qïpïpïpqïàïpqqï°çÀîðëÀçÀëðçëðçðç°çî°ñ› þîðÊç°ò±ï qï°ïp+î°ïàq+ïÞøîœÀs þØ4Dà:wïÈý£XÑâEŒ5näØÑãGû‰ˆ-äI”)U®ÌHΞ»wçܽC"oˆÀuÏxNà9wëÞ{·Nà¹uݹxNà9wϽ[çNáºwKÝ)<·Î]ÁsϹ;÷uïܽ[§õÖwëÞ-x®à9wÝ<·î»‚çܽ;·TàRîÞ¹¸îݹwî޸âžs'p;çºx®à¹wç Š{ç®à9w Ý <÷ÎÝ»sïÜýØëÜ;þeëžxîÝ9îÖ<'ÐÝÎwKß¹;·® »sÝ­¸Nà:뉄äÜ;wűdßÞ=ûsK­½§_ß>FqöÎ t÷nˆ¼!Îyg©u :G sZêsÞq眂Îyg©u:G wÎQh©sÞYjwÜyÇ ZêÎh©‚Üyçœw´zçœu rçwÎ)ÈuZG ¥ÎQÈu :çurgsÞ9G uÞ9çw :gwÎyçÎQèuÞ9çwÎh‚ÖhsÞ9çuÎ)h©uÎÈwÄÈu :g‚ˆØ¤—sÞñås:çu:çsþ:çËuÜyçœwÜ蜂ÖYêsÜ9çsÞÙésÜùÁ’!ÞqçwÞ!ç>Zke©qÂÆV^{ýHœ~Þ9gwÞBž!Þ9g©wÎygwΉç­ÞqgsZÇÎqG sÞYçsâyçœwÎYJ u–zçœwÖ)h­ZG sÖqçsÖqçwÖÑêuÞ9çq:'žwÎYg©wÎqçsÞYÇwÎqçÞ9ÇxÞqçsÜ)ÈuÞq§ sÞ9çË‚ÄhÄ‘§ s:G sÞ9çsÜÈwÜ蜂Üè˜ÏyçÜyçœwÎÑaXRF uþ rçœwÎyÇwÖ9G q:çwÎÈÞYçsÞqçsrG sr§ !HAâs ÇWķ蜥¬Qüq_É‘çwÞqç$ä!B wÎ)ÈÎhs:çwÎygÎ)ÈÎyg…Îyg©sÞq§ sÞYJ s:§ s :§ s`èÎÈwÎèœ/×yçÜ)èœwÎ)è–zçœwÄhÜÙéu¾<§ wÖ9çwÖ蜂ÎQhÜY§ s¼ãïXÇ;ÎñŽu¼ãïpÇ: âŽu„Ž€ÅNrñw¼ã_ZÇ9ÞáŽ/­C ç(þÈ: ⎂œãîxÇ9âñŽsd‡@~`‰!ä!ä|H«~ˆC Øøaë#Žz¼C+ï@‚<†pŽw¸ãçX‡;ÞqŽ‚¸C çXŠ@Î!wÄëÈ9Þqw¼Ã9Ç:r…¬ÃYÇ9rŽu¼ãY‡;²wäî(È:–"uäîxÇ9â¬ãï‡@ÜQu¸ãçX‡;ÞqŽw¬£ ë8‡;`朣 çxÇ9Þ±Žw¸ãçx‡;âŽwœãëx‡8äñŽs¼c'ï8Ç;ÎñŽs¼cqGAΡs¼ãï8‡;ÞqŽw¸ã–€…þ@žñŽdï8Ç;Ü!s¼cç(È9Þ±Žwœ£ çx‡;ÖqŽwœC!çXGAΡw HX‡BÄQ„&¡çXŠ5úPˆª„öx‡VÞ1yáë(È9 s¼ãYÇ;ÎñŽuÄçx‡;ÞqŽw¸cï8‡@ÎQs¼Ã9Ç;Üq¸ãçøÒ9Þ±,e 9Ç;α”säY‡@Ä!s|éïpÇ;ÎñŽs(ä9Ç;Îñw¼ãëÈ:ÎñŽs¬C ë8Ç;ÎQs¼ãë(ˆ;ÖqŽwœ£ îPÈ:âå¹ãçxÇ9ÖqŽw¸cï8Ç;þܱނ¸cùÁ&`áŽsä¢ ë8GAΡsäqGAÎ!u¼ÃqÇ:Þ!¸ãçx‡;Þq¸ãC ÅÞqŽ‚PƒËensû\èFWºÓ¥nu­{ÝçŠCÁv½û]ð†W¼Ð¥F=ÎñŽs¸ãCÇÜñŽsäï8‡@ܱŽwˆCqÇ;Î!u¼ãY‡BÖ!qdï8Ç;Ö±”wœÃY‡;ÞqŽx¼ã‡@ÎñŽs¼cÑÊ;Öq¬fëxÇ9²œãëx‡;ÞqŽu¸C çX‡;ÞáŽuœC îxÇ9Ü!¥ÄYÇ;Äþ!¸ãçÈ9âŽw¬ãçÈ:ÞqŽwœãëx‡8"…¬ãKç(È9ÜñŽsäï8Ç;ÎñƒMÀÂïxÆ;ÎñŽ¥¼cï8Ç;ÖqŽwÈCYÇ9"Žw¬ã9‡@Îñ%­¬C ëˆ8âŽD‚ïXÇ9Þá{¤ZÕ«fu«]ýjXÇZÖ³¦u­]½},E¶æu¯}ýk`¿ZïXÇ;Üñ$È çXÇ;ÎñŽuDâø’;ÖqŽw¸c9‡@Î!s¼ãï8‡BÎñŽs(d)ë(È9ÞáŽsäïpGAÎñwÄçx‡;”çŽs¬C çx‡;rþœ£ îxÇ9âŽs(ä0;GAÎ!D_:‡@ܱŽwœC ë8‡@Î!s¼ãïpGAÜ¡yˆãçxÇ9ÞqŽwœãîXÇ9âŽu¼ãYGA†° X¸ã¹È9rŽ‚œC ç(ˆ;âŽ/Ãï8‡@Öá¬C+ï8‡;¾tŽwü€CPÈ9Þ¡¸Ç]îs§{Ýí~w¼ç]ïsÈ9–ò޽^ðƒ'|áåþ­d)ïB=àŽ‚œã;)È9rŽ‚œÃï8‡BÖñŽsd9Ç: âŽwœcçˆ;"œC çp‡@Ö!w¼ãï8Ç: ²þ¬ãîxÇ9Üñw¼ãïX‡;ÞqŽu¼ãîxÇ:Þq¬ãçÈ9Öáœc)ï8Ç:Þq¬£ ëpGAÎQu¼ãî(È9Ü!s¸C ëx‡;rŽu(ˆsX‡/Y‡/Y‡wp‡‚8w(ˆsp‡w8‡wp‡Ø„Vpyè…‚8‡wp‡u88X‡sx‡sx‡u(wX‡‚X‡w8‡wp‡ˆsx‡sˆsXXp$ˆ$p‡u8XXXXXXXXXXXXXXXXXXXXXþXXXXXXXXXXXXXXXX‡w8X‡¥XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX…p‡wp‡uxwx$x‡!x‡u8‡wp‡u(qx‡x8p‡sˆsˆux‡sxwˆsw8‡‚8‡wX‡sPˆsx‡sø’u8‡wˆ‡w8X‡‚8‡þw8‡w؉w8‡wX‡‚p‡s(w8‡/9‡w8‡wpp‡/q‡s(ˆuPˆu(w8p88p‡u88‡wX8‡w888‡w8p‡ux‡sw؉w8‡w8‡wp‡u8p‡u8p‡u(ˆ!°Xp‡wh†sx‡ux‡sPˆuPžsx‡sx‡sp‡w8‡wp‡‚8‡‚8…8‡wp‡wØ …øR@wPÉœLʬL˼LÌÌLÍwØLÏüLÐ MÌt8‡up‡w88wx$‡(ˆs€™sˆs(ˆup‡w8w(ˆsx‡sxþ‡ux‡sˆs(ˆsˆsp‡‚X‡w8‡wX‡wp8‡‚8‡‚py(w­x‡sxwˆsXwˆsp‡w8‡xxwˆux‡sˆuxq(ˆsXwx‡sx‡¥x‡sx‡sˆupX‡wpX8‡wp‡/9‡‚X8‡ux‡s(ˆux‡sp‡‚Xw(ˆuxwˆsPwˆsxwx‡sx‡søR…¥ðp8‡w88‡w8‡wX‡sˆu(ˆsX‡‚X‡sˆu8‡wpX‡‚8p‡wXXwX‡sx‡x‡x‡x‡x‡þx‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡sx‡u8‡w8p‡sx‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡x‡xw8p‡‚8‡ux‡¥@y‚w88X‡‚8‡wX‡w8‡wp‡þuˆsx‡sx‡uˆ¥ˆuˆu8X…8‡wp‡‚8‡w88‡wX‡wp‡w8‡w8‡/9‡wX‡sx‡¥8‡‚X‡sw(ˆx888‡w88‡wpp‡‚XŠu(ˆsˆux‡sx‡sx‡sxwX‡s(ˆsPˆuq(ˆsxw8‡‚X8‡w88‡w8‡w88‡w88X‡w8‡wp‡u(ˆsX‡‚‚M€wx‡\x‡sø’u8X‡wp8wx‡sx‡¥x‡sxw(wˆsX‡w8‡w8‡wX‡w88‡wØ Ø$pp‡uxþwx‡u(ˆxwx‡u(ˆxwx‡u(ˆxwx‡u(ˆxwx‡u(ˆxwx‡u(ˆxwx‡u(ˆxwx‡u(ˆxwx‡u(ˆxwx‡u(ˆxwx‡u(ˆxwx‡u(wx‡swX‡w8‡wX‡‚ˆp‡wX‡‚ˆp‡w°Kˆ„H°¶¶¶¶¶¶¶¶¶¶¶¶¶„fxwx‡u(ˆxwx‡u(ˆxwx‡u(ˆxwx‡u(ˆxwx‡u(ˆuˆsˆsXp‡wp‡wyXwþx‡x‡sˆuPˆsˆsx‡uˆsx‡sx‡sx‡sp‡w8‡‚8wx‡sx‡uˆsx‡sXp‡wXwx‡sˆsXX‡w8‡wXp…p‡w8‡u(ˆsqx‡sˆsp‡w8‡ux‡sx‡sX‡w8‡‚X‡w‡wXŠw8‡‚y€™sp‡‚Ø wx‡sX‡w8‡/9‡ux‡sˆsXŠ‚X˜Yw(ˆuˆs(ˆs(ˆx‡swx‡sxwøKhwx‡^(ˆux‡sxwx‡sxwˆswX‡‚؉‚X‡sˆswx‡sø’u8‡w8‡‚øM‚þw8‡wXŠ/‡w8‡uøqx‡sX‡/‡w8‡uøqx‡sX‡/‡w8‡uøqx‡sX‡/‡w8‡uøqx‡sX‡/‡w8‡uøqx‡sX‡/‡w8‡uPˆsx‡u88‡wp‡søqx‡sX‡/‡w8‡uk°gˆ†h ²¦²¦²¦²¦²¦²¦²¦²¦²¦²¦²¦²¦²Žp°†‚8‡w°j°ĶlHljHlkÀ†Ä¦ÇÆ†Ä¦ÇÆ†ÄÆÇFìwXŠwXwx$"8X‡‚X‡‚XŠu8‡wp‡sPˆsxw(ˆxˆs(þˆsˆs(ˆsx‡u8p‡s(ˆsw8‡‚8‡w8‡‚p‡sxwX‡sx‡u8p‡sx‡u€™sX…p‡wpp‡‚8‡wp‡‚p‡sˆu(ˆsX‡w8‡wX‡‚8‡‚ˆ‡‚p‡wp‡sx‡u8pX‡/9‡wp‡sx‡ux‡sx‡sˆsxw8‡wX‡w8‡wp‡u8‡‚X‡‚p‡u(ˆ°Xp‡wÈ8‡‚8‡‚8‡w8X‡¥x‡sx‡uˆsx‡sˆsx‡ux‡sxwx‡ux‡s€™up‡wRXwx‡sX‡sp‡‚8‡w8‡w8w(ˆsx‡sþx‡sp‡‚8‡w8‡w8w(ˆsx‡sx‡sp‡‚8‡w8‡w8w(ˆsx‡sx‡sp‡‚8‡w8‡w8w(ˆsx‡sx‡sp‡‚8‡w8‡w8w(ˆsx‡sx‡sp‡‚8‡w8‡w8p‡‚X‡w88‡u8w(ˆsx‡sx‡sp‡‚8‡w8‡wÀ;ø‡~ ˆ~ ˆ~ ˆ~ ˆ~ ˆ~ ˆ~ ˆ~ ˆ~ ˆ~ ˆ~ ˆ~ ˆ~ ˆ~ø‡~€…^x‡swÀywy°r?wy°t'w{X÷q·‡u·yH5gwxww y‚w88‡wp‡w8‡w8‡¥ˆsp‡þw8‡u(ˆu8‡wX‡sx‡sˆu(ˆup‡w8‡up‡wp8‡‚8‡uˆsX8‡‚p‡w8‡u(ˆspp8‡‚88‡wp‡wpX‡w8‡w8‡uˆsˆsxwx‡sp‡w8p‡‚8‡w8‡wp‡w8‡u8‡w88‡‚888wx‡sxqˆu88‡‚8‡w8‡wXwwPˆsˆsx‡sx‡sx‡sp‡w8‡w8‡! XXŠg8‡wp‡u8‡wp‡u8‡wp‡ux‡sxwx‡sPˆuPˆu(wxwx‡sx‡sx‡sxwXþ‡w8‡w8øM@‚sˆsPž¥(ˆu(ˆ¥(ˆu(ˆ¥(ˆu(ˆ¥(ˆu(ˆ¥(ˆu(ˆ¥(ˆu(ˆ¥(ˆu(ˆ¥(ˆu(ˆ¥(ˆu(ˆ¥(ˆu(wx‡uˆuˆsx‡sxwx‡x8åYŠ‚X‡‚X p€Àfçß¿~ûþõÛ÷¯ß¾ýöýë·ï_¿}ÿúíû×oß¿~ûþõÛ÷¯ß¾ýöýë·ï_?y¤œ[÷î;kònâÌ©s'Ïž7ßÉ{'O™µsïÜ{ç‰<"3ÏÍ|wn]Twïν[ÕÝ»sïÜÍtçnÝ»sïν;÷Î]Tw3ÏE]wn¦»s3ݽ[÷îÜ»uþçfž{·.ê¹wîÖE=÷Î]Ôwëfº[×øÜ»sÝ{·î\Ôu3Ï­k¼îÜ»s3×E;SÜÌuçfž›¹næ¹uß¹{wîݹwëÞ¹‹êîÜÌsëÞ›¹®ñº¨îÖE² –»sÍÞsÕÝÌsϽs÷îÜ:±ïÎÍ<÷î\ãu3ÝÍ\wÎ]ÔsQ‡XòîÜÌsbg®#Ö;笕8ï¸óÎ9ëD%Î;î¼sÎ:Q‰óŽ;NTâ¼ãÎ;笕8ï¸óÎ9ëD%Î;î¼sÎ:Q‰óŽ;NTâ¼ãÎ;笕8ï¸óÎ9ëD%Î;b½sŽ;ïœóÎ:3óÎ93#ÖþLëˆõÎ9ëD%Î;î¼sÎ:ï`cG?ûô³Ï>ý¨Ùšý¨Ùšý¨ÙÏ>üä¢f?jö£f?jö£f?jþc)ÍÌtÎ;îˆóÎMïÜôÎMòÄ#Ï;7½3i<ò¼sÓ;“ÆóŽ"“NOcÏXÕ:3 !Ïç¸óÎ9ë¼ãÎ;çÜæÎ;çÌtÎLçÌtŽ;¹3Ó:ç¼sÎ:î¼sÎLë¼ãÎLçDuÎLîDuÎLçÌtÎ;çÌ´Î9î¼sÎ;ë¼sÎ;ç¬óŽ;3ãÎLç¬3“;NcîDuŽ;ïœóŽ;ïœóÎ9îÌtÎ;ë¸óÎ93¹s›;Q­óÎ9îDåÎLç¼sÎmïœ3þÓ9ë¼sÎLç¼sNTçœóÎ9ïœãÎ;çÌtÎ;ç¼ãŽ›´âÎ;¾DµÎ9︳ÎLç¼³Î;ç4&Ö9ë¼sÎ;çÌ´Î;ç¼ãÎ:ïœÓØ9ïœóÎ:ïœóΤñŽ;Q­óÎ9ïœÓ˜;çDuNTîœÕ9Q¹sNTçDåÎ9Q•;çDuNTîœÕ9Q¹sNTçDåÎ9Q•;çDuNTXçÌtNcë¼ãÎ;îœ3Ó:ïœóÎ9¹sNTî4vŽ8v¨¹Ï?õìóO=ûüSÏ>ÿÔ£f=þ42„ ÓÅ?õìóO=ûüSÏ>ÿÔ³Ï?õ¨ùO=òÀâŒ;ëÌä5ë°þ¼Ëñ°Ìò*aH<ñ»sÎ:,Ç¿;ïìàçXGüÎwœãʇ8f⎙ ¡DxÇ9¢"–u¼ãïXÇ9frŽ™¬ãçxÇ:Îñw¼ƒeïXÇ;Îñ±ÌÄïXGTÎñw¬#*çXÇ;ÎñŽs¬ã3YGcܱލ¸ãçhÌ:¢âŽw¸ãQ9ÇLÎñŽuœc&î8Ç;ÎñŽs¼c39GTܱޯ¬#*î8ÇLÄ1“uÌDQ9Ç;Ü•s¼C,ë˜É:frŽ™ˆc&ç˜É9f²ŽÆ¬ãQYGTܱŽwœc&ëˆÊ, ±äb&çˆÊ9fâŽwœ#*ëx‡8¢âŽþÛ¬ãQ9‡;¢²Žs4f9ÇH1w¼cïpGTÎñŽs¬ãç˜É9Ö1“u¼ã39Ç:f²Žwœc&çXÇLÖñŽsÌäë˜É:ÞqŽ™œc3YÇ;Î1“s¬c&ëxÇ9frŽuÌdï8ÇLÎ±Ž™¬ãç˜É9Ö1“u¼ã39Ç:sŽu¼ãï8‡;frŽuÌä9Ç;αŽwœc&çXÇLÖñŽs¼ãÖ°C?öQì£þØG=ü±zø£wöÈúÑ # oDïêá}ÔÃû¨‡?öQ{¨I¤P†;frw`£€ç Ç;â÷ ÄOHˆA7 †þ¸CCpE*TàaÔ`çxGüÈÁ2qœCÖ˜É9ÞqŽwü@C˜É:ÜñŽs¸#*ç˜É9ÖñŽs4ÆqÇLΕs¸ãç˜É9ÞqŽwœc&çxÇ9Þ±ŽÛ¸c&çpÇ;ÎñŽu¼ãï8GTÜñŽs¬ãQGcÖñŽsÌd3qÇLΕu¼Ãï8Ç;ÎñŽu¼ãï8Ç;ÎñŽs¸ãçxÇ9>vŽÛˆc&çxÇ9Ö1“u¸ãï8GcÖјu¼ãQ9Ç;Î1wDåîxÇ9f⎨œÃï8Ç;ÎñRÈB,Ï8GTÎñw¼c3qÇ;ÎñŽsÌÄïpÇ9Þ±ŽwœþãçxÇ:ÎñwœãçxÇ9ÞqŽwœãî8Ç:Î1“l 39Ç;ÎñŽu¼Ã39ÇLÎq›sÌä·9ÇLÎq›sÌä·9ÇLÎq›sÌä·9ÇLÎq›sÌä·9ÇLÎq›sÌä3qÇLΕuD…eQYÇLÎñŽu¼Ã39ÇLΕs¼ã¡†öa?:Ðö¨?êáz ƒö‡ÐÁ€@Ø£‚žt åA eœãë 8ÄñqœCäÇ9ÄqŽn¨€ç‡"ºÀ€n5ÈÆ ÎAŽH! FØ9ÈÁÀwˆãâx‡8È¡ lœãëˆ äA„s¼Ãþ瘉;ÖqŽ™œc&îˆÊ:Îñw¬ãçxÇ:Î1“uœc&ë˜É9ÞáŽw¬c&çxÇ9ãŽwˆ#*ç˜É9¢rŽw¸c&âxÇ9¢âŽwœã6çx‡;ÖñŽs¼ÃçxÇ9f²ŽwœãîXÇLΕs4fQ9Ç;Ö•s¼cçx‡;ÎñŽu4f9Ç;ÎñwÌDï8Ç;αŽwœc&ë˜É9Þ᎙ˆc&ë8ÇLܱŽwœãçXÇ9fâŽuDå–€…;ÎÑŒwˆc&ë8Ç;ÎñŽs¼c3qGcÎ1“sDE,îøØ:³Žwœãî˜É9Þ1K áçxÇ9ÞqŽ™œcþQqÇ:ÞqŽwœÃ3qÇ:ÞqŽwœÃ3qÇ:ÞqŽwœÃ3qÇ:ÞqŽwœÃ3qÇ:ÞqŽwœÃ3qÇ:ÞqŽwœÃ3qÇ:ÞqŽwœÃ3qÇ:ÞqŽwœÃ3qÇ:ÞqŽwœÃ3qÇ:ÞqŽwœc39‡;ÞqŽÆ¬Ã39ÇLÎ1“s¬#*îXÇ;Î1“s¼ã3q‡5ì°{ÔCö¨‡<ìQy؃<Ôƒ<ÔßɃlC6ˆ:è@ ˆƒ<üY=ȃ=Ôƒ<ØC=üY=ØC=؃<À‚2¼ƒ;¼ƒXXƒ8Œƒ8ô9ˆÃ8ˆC¯A@00%Ø6H@6Á8Ô€9x€8<ÃþŒÂ7C ŒC¯‰Ã8Œ9ˆÃ8Ã84ƒ5¼ƒ;¼Ã9ÌÄÈüÃ94†;DÅ:¼Ã9ÌÄ9¼Ã9ÌËD…;ÌÄ9¸ÃLœÃLœCTœƒ;DÅ:¸Ã;œÃ:ˆEc¬ÃLœC<¼ƒ8|ÌL¬Ã;œÃ:ÈÝ;œÃ:¼Ã9¼Ã:œCcœÃL¸Ã;¬ÃmœÃ;œÃ;¬Ã;œÃLœÃ:¼Ã9¼Ã9DÅ9¼Ã9¼Ã:¼ƒ;ÜÆ9¼Ã9¼Ã:¸ÃLˆCT¸Ã®Ã;¸CTœƒ;DÅ:¸Ãm¸ÃLœƒX4†;ÌÄ9¼ƒ;¼Ã9¼ƒ; )ÀÂLøBc¸ÃL¸CT¸Ã9¼Ã:Ì„8ÜÆ:œÃ;œÃLˆÃ;¬þÃ;œÃ;¸Ã9¼Ã9¼ƒ;Ì„X¬CTè) ÁL¬ÃL¸Ã9Ì„;¼Ã9¼ƒX¼ƒ;ÌÄ:œÃ;ˆÅ;¸ÃL¬Ã9¼ƒX¼ƒ;ÌÄ:œÃ;ˆÅ;¸ÃL¬Ã9¼ƒX¼ƒ;ÌÄ:œÃ;ˆÅ;¸ÃL¬Ã9¼ƒX¼ƒ;ÌÄ:œÃ;ˆÅ;¸ÃL¬Ã9¼ƒX¼ƒ;ÌÄ:œÃ;ˆÅmœÃLœÃL¬Ã;œÃ;ˆÅ9¼Ã:œÃ;¸Ã9Ì„;¼Ã9¼ƒXÌÄ:¼ƒ;¼Ã:œÃL`ƒ؃<ȃ=¥=¥=ȃ=e[ÖÃ7ˆA¬;À;DB=´¥=¥=´e_’å&<Ã;¸Ã:¼ƒ;`8 æ8Xƒ5€ƒ8 ¦8þ0ƒHÁ3ĸÁ5ü8ü6ˆÂ¨‚5ˆÀ‚" ¦5 &8XbZ88ƒ5¼Ã9¼Ã:ÌÔ4†8DÅ9¼ƒ;¬ÃL¬CTœCT¬Ã9ÌÄ9Ì„;¬ÃLœÃ:Ì„84Æ9¼ƒ;D…;œÃ;¬Ã;œÃ;¸Ã9ÌÄ94†8¼Ã:œÃL¸ÃL¸ÃLœÃLœCT¸Ã;œÃ:œÃL¬CT¸Ã9¬Ã;œÃ;¸CT¸Ã;¬CT¸Ã;¸Ã;¬Ã;œÃ;¸CT¸ÃLˆÃ;¬Ã9¼Ã9D…;œCcœÃ;œÃ;¬Ã9¼Ã9D…X¬Ã9¼Ã9ÌÄ9¼ƒ;œÃ;¬Ã;œÃ;¸Ã:D…;¼ƒ8Ì„;¬CTœÃþ:DÅl,¸Ã;äÂLˆCT¬Ã;œCcœÃm¬Ã;ˆÃm¸ÃL¸CTœCT¬Ã9¼Ã9¸Ã;œÃ;œÃL % Á9ÜÆ:¼Ã9DÅ:¸ÃL¬Ã;¸CTœÃL¬Ã;¸CTœÃL¬Ã;¸CTœÃL¬Ã;¸CTœÃL¬Ã;¸CTœÃL¬Ã;¸CTœÃL¬Ã;¸CTœÃL¬Ã;¸CTœÃL¬Ã;¸CTœÃ;œÃ:¼Ã9ÌÄ9ÌÄ:¸CTœÃ®Ã;œCc¬ƒ;ÌÄ9D…;ÌÄ9¼ƒ5èÁ>ø%Y¾ƒ<¼C_Ö;åLÈÃ;ÈÃLôê²¶å;B3œCcXbZÃi"¦8`ƒ5`5Pƒ5€6Pƒ8`þ6€6€ƒ8€608,æiZƒµZ8(ƒ5¸Ã;œÃ;œÃ;ü€< Á9܆8ÌÄ9¸Ã;œƒ;¼Ã9ÌÄ:¼Ã9¸ÃLœÃ:DÅ9Ì„;|Ì:Ì˼Ã9¬ƒ;Ì„;DÅ9ÌÄ:DÅ9D…;ÌÄ9¸Ã;œÃm¬ÃLœÃ:ˆEcœƒ;¼Ã9¼Ã9¼Ã9DÅ9¼Ã9¬ƒ;¼ƒ;¼Ã9ÌÄ9ÌÄ9DÅ:¼Ã9ÌÄ9|Œ;¬Ã;ˆCTœÃ:DÅ:¼Ã9DÅ:¼Ã9¸Ã;¸ÃL¸Ã;œÃ;¬ƒ;ÌÄ9DÅ9¸Ã;œÃžÃ;œÃL¸Ã;œÃ;œƒlB+ˆÅ3D…;œÃ;°ÌL¬Ã9¼ƒ;¬ÃLœÃ;þœÃL¸ÃLˆCcœÃ;¬CTœÃ;¸Ãm¸Ã;¬ÃLè) Á;œÃ:¼Ã9¼Ã9DÅ9¼ƒ;¼Ã9¼Ã9¼Ã9¼Ã:ÌÄ9¼Ã9¼Ã9¼Ã:ÌÄ9¼Ã9¼Ã9¼Ã:ÌÄ9¼Ã9¼Ã9¼Ã:ÌÄ9¼Ã9¼Ã9¼Ã:ÌÄ9¼Ã9¼Ã9¼Ã:ÌÄ9¼Ã9¼Ã9¼Ã:ÌÄ9¼Ã9¼Ã9¼Ã:ÌÄ9¼Ã9Ì„8¼Ã:¸ÃL¸CT¬Ã;œÃ;ˆÅ;ˆCTœÃ;œÃ;œÃ;¸ÃL¬Ã;œÃ;¸Ã;œÃL¬Ã9¼ƒ;¬CTXƒÔÃLÈÃLÈÃ;øeTå;ÈÃ;eTåLÈÃLÈÃ;´å;åL‚2¼˼ƒþ;`Ãbb5`ÃbZ5Œ«5Pør+·ZÃ5X6<·bÃ+c[6Pƒ3XÃ9¼ƒ;DȼÃ:œÃžCT¬CTœCTœÃL¸Ã;œÃLœÃLœÃ;¬Ã;œÃ;œÃ;¬Cc¸CcˆÃ;¬Ã;œÃ;¸Ã9¼Ã:¼Ã9Ì„;¬CT¬ÃLœÃ;œÃ;¸Ã9Ì„;Ì„X¬ÃL¸Ã:D…;ȃ8¼Ã:4Æ9¼ƒ;¬Ã;œÃLˆCTœÃ;°ÌL¬Ã;œÃL¸Ã9܆;œÃL¸Ã;œÃ;¸CTœÃ;œÃ;œCTœÃ;¬CT¸Ã;œÃL¬Ã9ÌÄ9¼Ã:¼Ã9¼Ã:¼Ã9¼ƒ;¬CT¸Ã:DþÅX,¸Ã9äBc¬CT¬ƒ;Ì˼Ã9¼Ã:DÅ9ÜÆ:Ì˼Ã9¼Ã:¼Ã9ÌÄ9¬CTœÃ;œÃ; ) Á;œCTœÃ;œÃ:ÌÄ9DÅ9DÅ9DÅ:¸CTœCT¬ƒ;DÅ9DÅ:¸CTœCT¬ƒ;DÅ9DÅ:¸CTœCT¬ƒ;DÅ9DÅ:¸CTœCT¬ƒ;¼ƒ;ÜÆ9Ì„8¼ƒXÌÄ9|Ì9¬CT¬ƒ;¼ËDÅ9DÅ9¸ÃLœƒ;¼Ã9Ì„5(9üáLjÅ;ÈXluX¿ƒXˆ-4CT¬Ã;Dƒ²õi!9ˆƒ‚ƒ88Œƒ8ŒC¯8ŒÃi’ƒ‚[ƒ[ƒƒ8Ђ8þ¼Ã9¼Ã:ÌÄÈøÃLœÃ:ÌÄ:¸ÃLœÃ;œÃ;œCcœÃ;¬Cc¬Ã9ÌÄ:¸Ã;œCTœÃ;¸ÃLœÃ:¸ÃLˆÃžÃLœCT¬Ã;œÃ;œÃ;œÃ;œÃ;¬ÃLœÃLœCcœƒ;¼Ã9¼ƒ;¼Ã9܆;¼Ã9¼Ã9ÌÄ9¸CT¬Cc¬Ã;¸ÃL¬ƒ;DÅ:DÅ:¸Ãm¬CT¬ƒ;¼Ã9ÌÄ:Ì„;¼Ã9DÅ9¼Ã9ÌÄ9¼Ã:œƒ;ÌÄ9ÌÄ9DÅ94Æ9¼Ã9¼Ã9¸Ã;œÃ;¸Ã,¸Ã;(Ã;ˆÃLˆÅ9¼Ã9¼Ã9Ì„;D…;¼ƒ8DÅ:¼Ã9¼Ã9¬ÃL¸CT¸ÃLœÃþLœÃ;œÃ;œCTü@$ Á;ȃ8¼Ã:4Æ9¼ƒ;¬Ã9ÌÄ:œÃ;œÃ;œÃ;ˆÅ:œÃ;œÃ;œÃ;ˆÅ:œÃ;œÃ;œÃ;ˆÅ:œÃ;œÃ;œÃ;ˆÅ:œÃ;œÃ;œÃ;ˆÅ:œÃ;œÃ;œÃ;ˆÅ:œÃ;œÃ;œÃ;ˆÅ:œÃ;œÃ;œÃ;¸Ã94†;œÃ;¬Cc¸Ã:Ì„<ˆÃL¬Ã9Ì„;¼Ã9¼ƒ;œCT¬Ã9¼ƒ;¬Ã9¼ƒ;¼Ã9Ì„;¬ÃL¸Ã94ƒ5)´%Ä:)PÂ&Ô:)´‚%äz¬[,ô:)´%B+PB®[,X-0Ð;œÃ;ˆÅ;´B®·Bµ×z+Ä:,´þ)´)´B®·)T{+Ôz+Ôz+Ô:,‚5œCTœÃL A= Á;œÃL¸Ã9¼Ã9¼Ã:4Æ:¼Ã9¼Ã:4†8¼Ã9¼ƒ;¼Ã9¼Ã9Ì„;¼Ã:¼Ã9¼ËÌÄ94Æ9ÌÄ9¼Ã:ÌÄ9DÅ9¼Ã9¼ƒ;¬ÃžÃ;¸Ã:Ì„8¼Ã9ÌÄ9ÌÄ9D…8¼Ã9ÌÄ9¼Ã:üá9¼ƒ;ÌÄ9¼Ã9ÌÄ9¼Ã9ÌÄ9¼Ã9¼Ã9¼˼Ã:œÃLœÃ;œÃ;¸Ã9¬Ã;œÃ;¸Ã9¬CcˆCcˆÃÇœÃ;¬CT¬Ã9¼ƒ;¬Ã;œÃ;¸Ã:D…;¬CTüÀ&À‚XäBTœCT¸CT¬ÃLˆÃ;þˆET¬ƒ;D…X¼Ã9ÌÄ:¼Ã9ÌÄ:¼Ã94Æ:¼Ã9ÌĸÃmˆCcœÃLœÃm¬Ã;œÃ;¸Cc¬Ã;œÃ;¸Cc¬Ã;œÃ;¸Cc¬Ã;œÃ;¸Cc¬Ã;œÃ;¸Cc¬Ã;œÃ;¸Cc¬Ã;œÃ;¸Cc¬Ã;œÃLœÃ:¼Ã9¼Ã:ÌÄ9¼Ã:¸ÃLœCcœCTœÃL¬ƒ;ÌÄ9¼ƒ;DÅ9DÅ:DÅ9¸ÃLœƒ;œÃ;4Ãý;ƒ3Üþßÿ3C3„3eΔ9s¦¬YB…Í 6söL!3eΚ1ÃöîÝ:w1v|w®£»Žç6btçÑã9wÝut×ñœ»ŽçÖ¹{wîÝyCþ0®ëxîݹwçÞs×ñÜ»s(×øã9Œç:®Ãxã9ëܽ;÷îÜ»uïν[çîÝ9wïν[÷î\Çu(Qž[÷îœÇuïܽ;÷îÜ»uïÎa\‡QFwïέ{çîݹwëÜa\÷ÎÝ;wÏy<÷Î]Çsïܽ;÷n]Çu×óxîݹwî:žëxÎÝ»sϽ;÷îÜM­Ü½s¶îÆuïÎa<÷îÝwçÞ¹;·îÜ;wçÖ½;÷îÆsïÜa\÷îÆuïν‹HÇsÝ­;‡qFwëÞ{ç®#wÖyçœwÜéÈuÞ9çw:rgwÎyÇŽÜYçsÞþq§#wÖyçœwÜéÈuÞ9çw:rgwÎyÇwÜéèÎéÈwÎéhsÞ‘GœwÖyçœwÜ9çu:Z眎ÎyÇuÎÁÈs0r£6zÇŽÜ9çœÞq#wÞqçwÀ\óœÞÑRËwÜñèœwÜ9£s¤ÃèŒÜyg£w6:çs::§#wÎyÇwÜyGKŒÜ9§£s:B"ÎyçœwÎyÇŒÖñhsÞ9gŽÎ‘îŒÄéèŒÖAiwÎyçŒÜé蜎Ü9£s::çuÞ9çwÀìHœwÖ9¥uÎÁÈu0r§£sÖyçœwÎñh”ÎéÈwþÎyÇs0rgŽÖ9£Ö9§£s::çsÞqgwÎyg£wÖ9çw0:£sÞqgs0rgwÎÁhކ°¤—sÜQ¦™\zQ&—frÉ¥™\”¹™‘Gn&eša¦™\šQF™\šÉ¥™‘›ÉE™‘•É¥™\hÎ¥™\|ùa“!Þ£s0r£sÜÁèw::çs0:§£sÞ9£s::çs0:§£sÞ9£s::çs0:§£sÞ9£s::çs0:§£s0ZçqäyçœuÎqçsÖqçwÞ9gw0:‡®s0:çsÞ9£sÖÁèw:Z£sÖÁèwÞqçþ-ß9#8ß9Çu0:G:wÞÙèsà„£sèZçsÖy眎Îyg#ŒÖq£uÞ9çuÞ9gŽÎñèœw´Ähw0:Çw†gˆ\”É¥™\šÉ…f•›a¦™\hV¹™‘•É¥¹ðÅ3rÑ ެ¹ ™ÊF¦Œ\4#ÊY/š12gŒ¬¾hF.šÑ‹fŒL¹PF.š‘ epdl†2š12eŒLÍÍFÖ‹fŒŒf¹hF.”1²fäB*SF.š1²f䢹h†/ž1²fà¢#SF3rÑ 2£¹hF.ž¡²f䢹 Y.š‘ e4#ÊhF.š1²fŒ¬þ¹h3š‘‹føB¹hF.h6²f(㛀ÅFÞá g4ƒf¾p†2|¡Œg8C¾0ˆ3hVI_øBØèˆ;ÞqŒ¸ãîðÈ9Þqw¼ÃB$€w¼cçÀÈ90&Œœcçx‡;ÖñŽs`dçx‡;ÖñŽs`dçx‡;ÖñŽs`dçx‡;ÖñŽs`dçx‡;ÖñŽs`dçx‡;ÖñŽs`dçx‡;ÖñŽs¼CâxÇ:ÞqŽw¸#çðÈ90rŒœ#î8Ç;ÖÑ‘s¼cïpFÜá‘stäïpFΑstä9GGΑá­Ã#çÀˆ–KüÌ5q‰­=w[æÏg±Y‹öÛYjd±©GÍZ´ÄØÎF#‹M­¸gجa³†,¶³ØÎF£v–šZqÏÄ5ûŒí,5kØÎ>æ›Zlg;pÈþ–C† çÜý<ñÜÀuç"ž{wnà¹uî~ž{çn่çÞ¹‹¸nไ¹³Î@ ½sÎ@ë¼sÎ;ç¬3;sNDç¼ãÎ;ç¬Ñ9I8Ð9¹³Î@î¼ãÎ@îDtŽ;ïœóN<ï¸Ñ:‰Ñ:î ´NBî¼#á:3Ð9Ð;çüÑ:ãÎ@ç¸óÎ9ï¬óÎ9ï¬sÎ@çD´Ž;`<Ë@Ê$tñ¼ãÎ@ç ´Î;ç¼sÎ;ç¼sÎ;çDÔË;ç¼sç$ôÎ9îœ3„ñèŽ/&˜P£&”ÐA/­´Ë¥²\ª©,š^*Ë¥­t ‹,—¶"ª,—¶"þª,—¶"ª,—¶"*,•jÚ ,­ÀÒÊ¥­hZi+°È" ,­h*K+°´K+š û륕j*‹¦²\ÚŠ,š¶Òi¥š¶"K+¶¢i+°ÈK+šÊri¥¶¢i+²ÀÒŠ¦­\Ú ,²hÚJ§­h*K¥²´"Ë¥ÂvÚŠ,­À"‹¦ÂÎÚJ§²À’K%˜ðh æòÎ9ï¸sÎ@ç¼³Ž’ç¼³Î93PBë ´Î@îœ3;ë 䎄ï¸óÎ9¹#á;î¼sÎ;ç¼³Î;ç¼sÎ;î äÎ@;ç¼ãÎ9?­sÎ;î¼³NDç¼ãÎOë¼sÎ;îœóNBç tNDçDtÎ;îDþ$Ž;ç¼sÎ;缓Ð;çDäNDî¬óÓ9‰3Ð9¹óÎ9ï¸sNDçDäÎ;Ð@ë¼sÎ; ‰ ,î¼ÓË@îØ4Ð:£ä@çütŽ;ï4 £¼ãÎ@ ½³Î@î¬óÎ9ï¸#a.vØFòÉ£a‡УýôvL=v¸‘¼õhØáFòÖ£a‡É[†n$o=v¸‘¼õn aÇôh¸†v@Æôh؆v@ƒì0=4ØÁ hpƒ¦‡; Áh€^ò¦‡†é¡zv@ÃôÐ`‡éÙ ÓCƒÐ`‡é¡ÁÐCƒмé¡zɳž¦‡†ä¡ÁÐCôþÐà;L/yÓCÃôì€; Áh€ì`=4Ø v@ÃôÐ`ø¹ÁÖCÃô˜ç; Á ²pÇ@Î1u äÇ@Üñw äëxÇ9âŽwœ#!YÇ@2sÄc çpÇ@Öᎈ¬ÃYÇ;Ü‘s¼ãëxÇ9ÞqŽw¸ãçx‡;²Žœc È9ÞáŽwœãëxÇ9Þ±Žwœã'ëˆÈ9Þ±Žs dï8Ç;ÎñŽu¼ãï8Ç@Ä!%c îxÇ9Ö1sðèçˆ;”äŽwœcîÈ:rŽw¸ãçX‡;²Žs ä?9Ç;Ü!…^´"!ÍàäþqŽw¸ã9Ç:"Žw¬ãçxÇ:ÞÁ£^¼ãqÇ9âŽs ÄïHÈ@2wüä9‡;^÷wœƒG9Ç;$”ˆœãJHDÎñ %$"çx‡„‘s¸CBîx‡;"rŽžãu;rw Ä?9‡;â%ãçpGâ%¹#"<ÞáŽwœã' ùÉ98*¡ˆ¸ã'îˆÈ98zw¼Ãâ¨;¦zwDÄqÇëÜñw Äçp‡’ÜñwüäïXÇ;ÎñwœãîˆÈ9ÞqŽwœ#"îøÉ9âŽwœc çx‡;$4 ½cï8ÇOÎñþw¼ãïpÇ@ÎñŽu¸c îxÇ:"rެãçÈ9"âŽs¼c9GÏ1s¼ãï8Ç;Ö¡¤s¼ãï8GDÎñw¬#"âxÇ9Þ±Žs äï8GDαŽwðèYÇ9Þ±Žs¼cçˆ;Þqެc 눈;ÞqŽw¸ãçÈ9ÖqŽw¸ã%zqw4ƒGò¨Ç;Î1u¼Ãï8ÇëÎñŽsð(qÇ;ÜñŽu¼ãïXÇ9ÜñŽu¸ãçP”;ÞqŽŸˆc y‡ŽÝñŽ!¿ÃÑñ;Ü1¿ÃÑñ;Ü1¿ÃIÈ;xôŽu$ä ˆ¢âŽþw¬ÃïpG<ÞÁ£¬#!ïPÔ;ÖñwÄc HB"¢ã 9!ïHÈ;Öñw DÇïpÇ@Î1 d:-#D*2'Z]!4S2‹5x454;=:g/ CŸ!E™€+)'Kv8HYŽ)€4ZD7*J !TŒ$L¸6Qn|?fG0sE5T¥EYUFJNšñŒglçÛyÆvž±g\ãÖøÇ5ž±glçÛyÆvž±glçÛyÆvž±glçÛyÆvž¡ðãÿà‡>®ñŒízl,€ÄàÇ&.à€ ü#Æ\ 0€3À’ÿ0€% Q KXüÐ-rË`ü#ÄøG‚ñ ‚¸ÐGh‘‹8\ ÷@C0øÑTÔ E,`YŠÅãþX.þ1T,&ó‡pÑ⼈E,Œ‹ÅÜ"èÄiNuºSžöÔ§?jP…:T¢Õ¨GEjR•ºT¦6Õ©O…jT¥:UªVÕªWÅjV±ÓÅܘ ELÑ‹RãpØå|ÙË-”‚1]L,hSZÄ‚± E.pñþƒ@C+æñ "Ú(F=L ƒVäâ@C+æÑÄ4´ˆ)*bJ‹X䂸àGP‘‹Vä´ÐF1"±˜hÐ"û@0ú!€`üC‘F>†qZ(ƒ¨†>ЊwˆB‹‰F,Ó` ƒ¤<ì1\üèˆÅ3æá @ü*Hñ^Т±XLL ZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSþZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZþÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄþ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥ELiSZÄ”1¥…˜¢…˜ZŒXXŒ˜¢…X …X …XøZhZh… ¤ÀVøXø„DØ¥µÚK @Z¨À,…V(…`ø‡°e¸y‡tð T†¨PT e¸y¨kø‡h…ň…R€%T ÀR†˜ ~¸‡Rh…\(…yø@1þ†€`è‡ø„ÐyàuÐzØŒhƒXŒO¨‡ð‡c€ Ì…R@‡zà‡¨‡X\ø‡Ù¨exˆbø‡@…R€„y¨…V  ¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…þ¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤…¤ ¤…V  ¤…(…Q ÀRhþZ…Rh…R€…Oø„1ð%8°Th…Rh…R …Rh…R …Q … ¤…V(…Tð‡@…VÀØ€R@Tð„€€RˆÎVÀØ€QðÎ ôÎ ,Zh…R@…F€€€ (…R ˆ€„NT膀%0ØK(…U¸€@€@ƒRhR@ V(…VˆÎU¸X' P„R €(E°Th@…V@…U`€ @…V(…V(Z(… …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQhþ…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQþh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀþQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜þÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … …V(Z˜ÀQh…R … Z…Rh…R˜@ZðÎVøï|ÏRh…R€ïçQÐM…RXçqöÎQЄV(ï,HþxOMˆNx`‡°„QhHˆÎx.…Q€„Q@…Q@…÷l…Qh…xöÎRKçRhH@…Q(KM…è,… D…Q(…QhH@M…R€„Q…€Q(…VðÎuÖ„÷…R…R@…Q@ ,…Qçè„„Q@…R€„Q€„V€„Q@… „TxÏQ¨§R€„è|ÏxÖ„VxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhþHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhþHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RþhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…þRhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxÏQ(…V€„÷…RhHxOï,…Q(…QˆR¥F ,õ¡”¦„F*5JRB Z𩔦R–4A*¥ UB øé¡¤Q¥ i*•°”¦RšJA¥ Ò(H¥4ÔT Ò¨‰PAB¥ RAHFYÒTÊ’¦R–FA*e)a©QŸþ˜þhɤR Ki²¤©¤Q!*5R)M5*5ª”¥RJG ”¤©”¦Q’4•²4J¤RšJYJXJS)K£4•ÒTÊÒ(M¥4•²4JS)M¥,ÒTJS)K£4•ÒTÊÒ(M¥4•²4JS)M¥,ÒTJS)K£4•ÒTÊÒ(M¥4•²4JS)M¥,ÒTJS)K£4•ÒTÊÒ(M¥4•²4JS)M¥,ÒTJS)K£4•ÒTÊÒ(M¥4•²4JS)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)þ–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢Iþ)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢þI)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I)–Œ¢I)š”bÉ(š”¢I),1 M”B¥°Ä(4Q M”£ÐD)4Q KŒB¥ÐD),1 M”B¥°Ä(4Q M”£ÐD)4Q KŒB¥ÐD),1 M”B¥°Ä(4Q M”£ÐD)4Q KŒB¥ÐD),1 M”B¥°Ä(4Q M”£ÐD)4Q KŒB¥ÐD),1 M”B¥°Ä(4Q M”£ÐD)4Q KŒB¥ÐD),1 M”B¥°Ä(4Q M”£ÐD)4Q KŒþB¥ÐD),1 M”B¥°Ä(4Q M”£ÐD)4Q KŒB¥ÐD),1 M”B¥°Ä(4!MX"!’ÐD)&¢‰H¢_ùJ),‰R|E’°D)¾‰_ZB¥„&¾" K@¢–0&*º€ A–(…$,Q I|E¥D)$ÁÌRXB¥0¦$,! f~–€ÄWàùËR@B°„$J‰RH¢–(…$J¡ 9à+„%$ñIX–„%JaÌRXBÌ”D)Œi HHÂ’ÐÄ(¾ c~E¥€„%J! HüR¥$¾" KH_‘„%$‰¯HÂþ’€ÄW$a I@â+’°„$ ñIXBøŠ$,! H|E–$¾" KH_‘„%$‰¯HÂ’€ÄW$a I@â+’°„$ ñIXBøŠ$,! H|E–$¾" KH_‘„%$‰¯HÂ’€ÄW$a I@â+’°„$ ñIXBøŠ$,! H|E–$¾" KH_‘„%$‰¯HÂ’€ÄW$a I@â+’°„$ ñIXBøŠ$,! H|E–$¾" KH_‘„%$‰¯HÂ’€ÄW$a I@â+’°„$ ñIXBøŠ$,! H|Eþ–$¾" KH_‘„%$‰¯HÂ’€ÄW$a I@â+’°„$ ñIXBøŠ$,! H|E–$¾" KH_‘„%$‰¯HÂ’€ÄW$a I@â+’°„$ ñIXBøŠ$,! H|E–$¾" KH_‘„%$‰¯HÂ’€ÄW$a I@â+’°„$ ñIXBøŠ$,! H|E–$¾" KH_‘„%$‰¯HÂ’€ÄW$a I@â+’°„$ ñIXBøŠ$,! H|E–$¾" KH_‘„%$‰¯HÂ’€ÄW$a I@â+’þ°„$ ñIXBøŠ$,! H|E–$¾" KH_‘„%$‰¯HÂ’€ÄW$a I@â+’°„$ ñIXBøŠ$,! H|E–$¾" KH_‘„%$‰¯HÂ’€ÄW$a I@â+’°„$ ñIXBøŠ$,! H|E–$¾" KH_‘„%$‰¯HÂ’€ÄW$a I@â+’°„$ ñIXBøŠ$,! H|E–$¾" KH_‘„%$‰¯HÂ’€ÄW$a I@â+’°„$ ñIXBøŠ$,! H|E–$¾" KH_‘þ„%$‰¯HÂ’€ÄW$a I@â+’°„$ ñIXBøŠ$,! H|E–$¾" KH_‘„%$‰¯HÂ’€ÄW$a I@â+’°„$ ñIXBøŠ$,! H|E–$¾" KH_‘„%$‰¯HÂ’€ÄW$a I@â+’°„$ ñIXB°D)Œi H0S¿,…,¡¥,–X„R,¡KŒ¿ý–„%Ú K,b–PÊ/%a‰ú[‹¿% ‚%,‚%´ß"@‚% ‚%ȶßW´ß"XÂøY XÂ"XÂ"@Â"X È_ýYZÂø-$þXÂ"0 %,ÂøYBB‚%ŒŸ%,‚%@Â"@‚%ŒŸ%,ÂWÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸþ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%ÈŸ%@Â"ŒŸ%´à"@‚@ @‚%,$ ‚R, @ ‚R ‚%@‚%4àW,Bû Âø ‚ü-$ B.$X‚R ÂøYBý}Eû}þ$XBû ‚%@ (Å XBÂøYBýß"@ÂW,‚% ‚%@Â"X @ ŒŸ%ÔŸ%Œß |$ $X$ ‚%@‚%@ X ȟ%´ß BûY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY þXÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂþøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøYþ XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY XÂøY X$ $, X‚üY X @‚%|$ Â!èÁ @‚ Â!èÁ" ‚ ‚@Â!èÁ!èÁ èÁ ‚ Â!èÁ!èÁ èÁ @‚ ‚@ èÁúê$è$èÁ èÁúêÁ ‚@‚ $èÁ èÁ!èÁ! Â!èÁúÂ!èÁ ‚þ¬¯@Â! $èÁ @Â!謯 ‚@‚ ‚@Â!\ð  ‚Â@Â!üÁ!è$è$ ‚ Â!è$‚ ‚@Â!èÁ @‚@‚@Â!è$è$‚ ‚ ‚ Â!ü¬/$èÁ"ü Â!è$ü Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Âþ! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! þÂ!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!þèÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁþ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ èþ$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!èÁ è$‚ ‚ Â! Â!è$èR _ð!è$‚@Â|€ ‚@ è$èÁ @‚¬ï"¬¯,‚¬/$è$¬¯,‚¬ï!@‚¬/$èÁúB‚@‚Ð0$è$¬¯а@ÂëA|€ó€<¿ô?¿|€8¿L¿ö€|€|€|€L¿h¿L¿l¿H¿l¿û€¼¿ó{ÀxÀû{ÀxÀû{ÀxÀû{@|ðð`Á‚>x0¸Ðà zøàbAä‘Czì‡òàáåAþˆ<¬ÇåAæòØáwXÊ£ˆ9üþ¡<~(zÈ£ˆ9¤G=êQDz,ñ‡òàá‰(.‘ˆòàá‰(.‘ˆòàá‰(.‘ˆòàá‰(.‘ˆòàá‰(.‘ˆòàá‰(.‘ˆòàá‰(.‘ˆòàá‰(.‘ˆòàá‰(.‘ˆòàá‰(.‘ˆòàá‰(.‘ˆòàá‰(.‘ˆòàá‰(.‘ˆòàá‰(.‘ˆòàá‰(.‘ˆòàá‰(.‘ˆòàá‰(.‘ˆòàá‰(.‘ˆòàá‰(.‘ˆòàá‰(.‘ˆòàá‰(.‘ˆòàáþ‰(.‘ˆòàá‰(.‘ˆòàá‰(.‘ˆòàá‰(.‘ˆòàá‰(.‘ˆòàá‰(.‘ˆòàá‰(.‘ˆòàá‰(.‘‡ò ÇÍñê„bp¡H(Š„bp¡H(Š„bp¡H(Š„bp¡H(†ºP &üÀ xD~앯}õ+?þñ½þƒÿàë?øú¾v¯ÿø+?þÑ×ôõòT %pJæX¢9ä¨Jæ‡9äay˜c‰æ äÑ@ÉÃò0‡<Ì!AÉÃ94‡<Ì!sÈcPò”<þ%@ɃPò ”<%@ÉPò0GÍ!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ìþ!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!þsÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!þsÈÃò0‡<Ì!sÈÃò0‡<ÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌážhážáÌAEÌ!‡ÌAÌAÌA%€!ØPžPäPäPäÁäÁäáþa¯þá±øáöê$ñöê$ñöþê$ñöê$ñöê$ñöê$ñöê$‘¯þÁ¯‹¯þáá þ¡x±}‘sèÛA„QxQÚAzQzQÚA~Q~QÌáÌAÅRä!ÌAÂAå¥Â!TÌá%ÌáååÌ!%Ì!Ìá>EÚ!Ì!ÚÁ¡ÎÁÚaPr(ÌÁRäP,PÎÁÂaQÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPþÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaþPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎþÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎaPÎÁÎÁÂaPÎávábaYi!hÌáÂPÎÁÂaP®aháh!nvA¼ÁÎ!ÌAx1ÌáÌáÌáÌÁå¡rHyQÚ!‡ìµä¡rh_å¡rh_å¡rh_å¡rh_å¡rh_å¡äa_ÛA(öôà øbyÑäÁc{QÂA<6äAdy1‡>À¼ÁÅÌáeÍÁ¬°á@á>žP¼ÁþÀÌÌ̼Á®áeÍÁÌÁeÂÁÀÁÀÁ^¼¼ÌáåÅÌÁÌÁÌÌáÌÅÀPÀÁÂÁÀÁÀáeÍÁÌÁÀaP¼Á^Ö¼Á¼ÅÌáeÍÁÌÁÀaP¼Á^Ö¼Á¼ÅÌáeÍÁÌÁÀaP¼Á^Ö¼Á¼ÅÌáeÍÁÌÁÀaP¼Á^Ö¼Á¼ÅÌáeÍÁÌÁÀaP¼Á^Ö¼Á¼ÅÌáeÍÁÌÁÀaP¼Á^Ö¼Á¼ÅÌáþeÍÁÌÁÀaP¼Á^Ö¼Á¼ÅÌáeÍÁÌÁÀaP¼Á^Ö¼Á¼ÅÌáeÍÁÌÁÀaP¼Á^Ö¼Á¼ÅÌáeÍÁÌÁÀaP¼Á^Ö¼Á¼ÅÌáeÍÁÌÁÀaP¼Á^Ö¼Á¼ÅÌáeÍÁÌÁÀaP¼Á^Ö¼Á¼ÅÌáeÍÁÌÁÀaP¼Á^Ö¼Á¼ÅÌáeÍÁÌÁÀaP¼Á^Ö¼Á¼ÅÌáeÍÁÌÁÀaP¼Á^Ö¼Á¼ÅÌáeÍÁÌÁÀaP¼þÁ^Ö¼Á¼ÅÌáeÍÁÌÁÀaP¼Á^Ö¼Á¼ÅÌáeÍÁÌÁÀaP¼Á^Ö¼Á¼ÅÌáeÍÁÌÁÀaP¼Á^Ö¼Á¼ÅÌáeÍÁÌÁÀaP¼Á^Ö¼Á¼ÅÌáeÍÁÌÁÀaP¼Á^Ö¼Á¼ÅÌáeÍÁÌÁÀaP¼Á^Ö¼Á¼ÅÌáeÍÁÌÁÀaP¼Á^Ö¼Á¼ÅÌáeÍÁÌÁÀaP¼Á^Ö¼Á¼ÅÌáeÍÁÌÁÀaP¼Á^Ö¼Á¼þÅÌáeÍÁÌÁÀaP¼Á^Ö¼Á¼ÅÌáeÍÁÌÁÀaP¼Á^Ö¼Á¼ÅÌáeÍÁÌÁÀÁÔ —u ¡ZaYiáÌáe½Á¼Á¼Ô i¡FF°iáÌÁÌáeÌáä¡Ã!‡ÌAì5rÈäÁ^Ã!‡ÌAì5rÈäÁ^Ã!‡ÌAì5rÈäÁ^Ã!‡ÌAì5äAe)öGÈàÌAÌAÌAÌAÌAÌAÂAÌAÌAÌ!äÁäÁäPä!äÁäÁäÁäÁäÁä!þäÁäÁäÁäÁäÁäÁÚAÌÁ®!¿¯!ôû¶¬!ˆáNNøà€¡¿¼¿½áœÁ½!Â)<¿½¡¿½!*<¿ÉÁú;ú;6üÄaö¢!6<Òaã!6<Òaã!6<ÒA¿£þ!´¡®!ÒA¿µá<Òaã!6<Òaã!6<Òaã!6<Òaã!6<Òaã!6<Òaã!6<Òaã!6<Òaã!6<Òaã!6<Òaã!6<Òaã!6<Òaã!6<Òþaã!6<Òaã!6<Òaã!6<Òaã!6<Òaã!6<Òaã!6<Òaã!6<Òaã!6<Òaã!6<Òaã!6<Òaã!6<Ò!Ÿáذ ¡Za Zábá(übb¡Û[¡Fa¡váža÷áäÁäÁä¡Ì!‡ÌAÌAÌAÌAÚÁrÈäÁäÁäÁä¡Ì!‡ÌAÌAÌAÌAÚÁrÈäÁäÁäÁä¡Ì!‡ÌAÌAÌAÌAÚÁrÈäÁäÁäÁþä¡Ì!‡ÌAÌAÌAÌ!‡EÌAÌAÌAÌAÌAÌAÌAÌAÌ¡>àþ@È€ÌÌÌÌ–HÌAÌÌ¡äÁèÁèÁêa‰Úa‰ÌÒ>‡ÚAÌÌrÈèÁèÁ–èÌážÁ®á®á®Á°ÁÒpø >øà€ážÁòû®á®á®á¼!¬!°«¸á¢!¿£!¿Ÿ!¿ŸÁžá¬á¬á¬A¿£A¿­žáž!žá¢Áö!¿£Áº!ü¼!¿Ÿá¬áž!¢áþž!øa `~á¢áòû®!ô;®!žþÁž!¿Éá¢á"Ú³kמ]‹FðZ´kÑž|v-ZÂh׬ý»ø¯·„Ñ®E{æ-Ú³n´ù íZ´gÞ¬ý-a´kÑž|v-ZÂh×¢=#øìZ´„Ñ®E{FðÙµh £]‹öŒà³kÑF»íÁg×¢%Œv-Ú3‚Ï®EKíZ´gŸ]‹–0ÚµhÏ>»-a´kÑž|v-ZÂh×¢=#øìZ´„Ñ®E{FðÙµh £]‹öŒà³kÑF»íÁg×¢%Œv-Ú3‚Ï®EKíZ´gŸ]‹–0ÚµþhÏ>»-a´kÑž|v-ZÂh×¢=#øìZ´„Ñ®E{FðÙµh £]‹öŒà³kÑF»íÁg×¢%Œv-Ú3‚Ï®EKíZ´gŸ]‹–P4×Dó AÏ\MBÑ\Í3=sM4 EsM4ÏôÌ5Ñ$Í5Ñ”a¸h¸Kþÿ0À.r ~,Àü0œ5þñ kðãÖøÇÜ…ì#ý€»èqt¨hí¢µ‹M`4iÒ ¹‹M`ŠwÑ ¹‹M`’i…ÜE‹&0É´Bî¢E˜dZ!wÑ¢ L2­»hÑ&™VÈ]´h“L+ä.Z4I¦r-šÀ$Ó ¹‹M`’i…ÜE‹&0É´Bî¢E˜dZ!wÑ¢ L2­»hÑ&™VÈ]´h“L+ä.Z4I¦r-š€‘Œ–v¡…&`$£%¤]h¡ Éh iZhF2ZBÚ…š€‘Œ–v¡…&`$£%¤]h¡ Éh iZhF2ZBÚ…š€‘Œ–v¡…&`$£%¤]h¡ Éh iZhF2ZBþÚ…š€‘Œ–v¡…&`$£%¤]h¡ Éh iZhF2ZBÚ…š€‘Œ–v¡…&`$£%¤]h¡ Éh iZhF2ZBÚ…š€‘Œ–v¡…&`$£%¤]h¡ Éh iZhF2ZBÚ…š€‘Œ–v¡…&`$£%¤]h¡ Éh iZhF2ZB¢‰Åh¹Åsh:2ÀÇœh”¡… e4¹¥sh¢etÌQfp¼1Ç›mÄ ãZvFZä1g`v¡e—€ÙŃv‘gßvä §pÚ‘'œvö•§yÂi'œvä §ƒÛ‘'œvÂiGžpÚ1¸yþÂi'œvä §ƒÛ‘'œvÂiGžpÚ1¸yÂi'œvä §ƒÛ‘'œv‘'œyÚ‘ÇœpÚ‘'œ}Ã1¸yÚ‘§yÚ‘'y‘'œþøC2ø‘'œ}Í‘ÇzäA€vÚ‘'œj§ä G€qÚ1XsÚÙ×yÚ §y œpöMûx€Žh‘üÉ+'–SøØ‚-¶hâóÏá¨\ò[F~ °¤T€É…˜`ˆ~*(…\ô €˜ %\ô ˜~pàxæh‰… %bú€˜@ÞŠÃ#îA#–X$Æþræ ,É} æŸLÏ~(%˜z¦à'Zð£Û@.paVBý;€ ÉÅâ’#?` K|âF? 9\ü#ÁøG‚áЂ `.þbü£È3ÀˆñÄÂt;”\,x8ºXü°r±¢äbQDZĉ±@b, $Ɖ±@b, $Ɖ±@b, $Ɖ±@b, $Ɖ±@b, $Ɖ±@b, $Ɖ±@b, $Ɖ±@b, $Ɖ±@b, $Ɖ±@b, $ôxF.¶ñ 2šqTÌc¨\4rAŒ´ÈÅ? Z£hÅZ@b؇(T …`È~ø† POøþ‡hZ8?TÀ…€Vœ|ø‡@Zø„yè‡z88(…Vȇu0EÀ…8@Z¾X\è­ÞÒ$8Z†p€zx†€`؇ø„T†`‡zHTÈ…O˜~؇op‚`è‡8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …Xþ8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?þZ8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8?Zh…X …X8?Z8¿V ÷lZh…k¨sh…gˆ\222ÈM0‡}xZhZho¨she°%1xe°%1¸†]Ðs¨‡k8?Z>Z(ZðyH›`jyH›y‡l’‡v‡´™‡pXÑv‡´™þ‡pXÑv‡´™‡pXÑv‡´™‡pXÑv‡´™‡pXÑvȦp¦v¦v‡´™‡p‡v‡” ‡v‡v‡v‡v¦Ð=82à‡vX¦p8‡eB†°¥g°†jq¨d ØS €v‡v&sz0y ‡phd€m؆gØqX†y¨‡jø€V(…Q…VZh…R …R(Xø„WØ‚ÏÙ8ÕV…VØTZh…MuÏM…FK …R…Qí„ …R K (Kø„€%0`K(…QÐH€p(…N€Rh…Qþh8ƒN€R@R@€ Rè„ ½@T(…V(KèhT°„UÀ€°Tð„ØÔV …R H „@…Q(R(€°TX€xhT(… X€VЄ6€3 …Q …R¨ÕQh„ @ƒMƒØÓ€Rè„@…N€R…U¸ €€R@R@(€ Rð„8¿Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏþR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏRþ¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿RpÏR¾Q8¿R8¿Qh…R¾QˆÏQh`؇zØ…V؆g؆h؆ghÔm€„gøyØ…Q¾Qx†zØZho¸†kˆsð†k؆kZèy ÷ÕVˆ…Rø€vs‡` y‡v¦pH©` y‡v¦pH©` y‡v¦pH©` y‡v¦pH©` y‡v¦pH©` y‡v¦pH)yhy‡vs¦p‡ps¦pX&sþss¦p‡phyy‡„?82à‡p‡p&s‡`By‡v¨‡jyø††m‡phs ‡ &d€p‡v¦oihyh…Rh…Q…R`ÙQE…QHK…R¨ÕRЄRØÔQ}éVUK@M…Rh…QÐM.M°„R@…`ø‡h…Mµ„V(…VT…QÝTM…—…RhMM…R@–…V(K€é…Rh…Mm~i÷³„R@…R@…RЄR…RЄZ-M°„RM(…Q@ ’>þT€„—ÞÔQH€„Q€„QЄQ(…Z-KØTKØT÷…R°÷C…QЄQ(fYTM@…Q°„V ÚTR(HxéQxéQxiHh…Q…—…—†„VÕQxéQxiHh…Q…—…—†„VÕQxéQxiHh…Q…—…—†„VÕQxéQxiHh…Q…—…—†„VÕQxéQxiHh…Q…—…—†„VÕQxéQxiHh…Q…—…—†„VÕQxéQxiHh…Q…—…—†„VÕQxéQxiHh…Q…—…—†„VÕQxéQxiHh…Q…—…—†þ„VÕQxéQxiHh…Q…—…—†„VÕQxéQxiHh…Q…—…—†„VÕQxéQxiHh…Q…—…—†„VÕQxéQxiHh…Q…—…—†„VÕQxéQxiHh…Q…—…—†„VÕQxéQxiHh…Q…—…—†„VÕQxéQxiHh…Q…—…—†„VÕQxéQxiHh…Q…—…—†„VÕQxéQxiHh…Q…—…—†„VÕQxéQxiHh…Q…—…—†„VÕQxéQxiHh…Q…—…—†„VÕQxéQxiHh…Q…—…—†„VþÕQxéQxiHh…Q…—…—†„VÕQxéQxéQ(…QÕQxéQ…RØÔtøy …Xðs‡spo(…V¨~x†QxéQhoøzhZð†p8s0p¸†Rh…z؇g€„QÝÔV(M…Røx¦´‘‡v¦v‡`2y‡`j‡`j‡p&s‡p¦v¦v‡`2y‡`j‡`j‡p&s‡p¦v¦v‡`2y‡`j‡`j‡p&s‡p0‡lj‡`jyh‡` ‡`:‡`j‡yX¦v‡vs¦v¦ S= ƒ‡pȦ´A‡p‡þv¨†h‡j€p‡ mt€y‡ ‡v‡p‡pdg1Ä‘‡ðy@‡øHЄR€M°IЄRÀ .M…RЄRKЄ—Ö„RЄQÕiß/MH°„RÐi Ò„Qµ„Q…KÐKM°P臰„Q…–MÕM…I(ßHЄRÀ ÒKxéQ€„RЄR°„R€„RÐI(H0MM°„RØTK€€$©”¦RšJY²TJS)M5I*Uj”&K¥ zˆ ’ÃR£Jµß¾}øøuÓI"$K¥ Az(1a)Kšþ,•ÒT &¤„š,A’rÌR£,=,õÐaÈR–ZêpT)HKIÕ4ª$‡¥²Ž*Éa©¬£JArX*ë¨R–Ê:ª$‡¥²Ž*Éa©¬£JArX*ë¨R–Ê:ª$‡¥²Ž*Éa©¬£JArX*ë¨R–Ê:ª$‡¥²Ž*Éa©¬£JArX*ë¨R–Ê:ª$‡¥²Ž*Éa©¬£JArX*ë¨R–Ê:ª$‡¥²Ž*Éa©¬£JArX*ë¨R–Ê:ª$‡¥²Ž*Éa©¬£JArX*ë¨R–’Õ(¥@âP)YR $•’Õ(¥@âP)YR þ$•’Õ(¥@âP)YR $•’Õ(¥@âP)YR $•’Õ(¥@âP)YR $•’Õ(¥@âP)YR $•’Õ(¥@âP)YR $•’•&¥Œ‰C¥HU $£@‹9üÈ -ʘsÍ6À”r =ÿ˜#‘C£@R -òðCÏ-´<óÌ5ÑìRJ,õðcN+¨8T $’HRŠ%š|ÐN;òÈcN8ò„#O;”†#O;ò´Ž<áÈÓ¥áÈÓŽ<í„#O8ò´Ci8ò´#O;áÈŽ<íPŽ<íÈÓN8ò„#O;”†#O;ò´Ž<áÈÓ¥áPJi;á´Ž<æ´N;ò˜#þO8”š#O;áH*©<æ„Sm8’ÊÎó~@Æ?òHŽ<áT‹L’ÊN5„SM”ªƒƒ< C=áÈN;áP¥áT‹LÀ?œÓ xÅ¥H¢‰%$$ L Ib $’X"‰%”¨$–Hb £¥XRJB’@’$š$S):3j $–@RŠ%¥@b‰0jI)–”b £ YRŠ$€&H”$ŒÂd‰$–H‰$–HbI)’XR $¥€ ‰$X Ø’X"‰%’À¤‰%’”b‰D–0 I)HbI)–”b $`KRŠ$¥@R $8àÀ¥w`‰&–@þ¢IB¥$Ä($šHRŠ%HRŠ$`—’&–”b $¥$¤‰%€- Ø¥€­ Ø’€] Øš€- Ø¥€­ Ø’€] Øš€- Ø¥€­ Ø’€] Øš€- Ø¥€­ Ø’€] Øš€- Ø¥€­ Ø’€­`ÓØ$¶R€M`“ØJ6M€M`+Ø46I€­`ÓØ$¶R€M`“ØJ6M€M`+Ø46I€­`ÓØ$¶R€M`“ØJ6M€M`+Ø46I€­`ÓØ$¶R€M`“ØJ6M€M`+Ø46I€­`ÓØ$¶R€M`“ØþJ6M€M`+Ø46I€­`ÓØ$¶R€M`“ØJ6M€M`+Ø46I€­`ÓØ$¶R€M`“ØJ6M€M`+Ø46I€­`ÓØ$¶R€M`“ØJ6M€M`+Ø46I€­`ÓØ$¶R€M`“ØJ6M€M`+…%Ja I”l’(EBJa I@¢`£=þÑsìÀØ…2¶ñ~€c’[)‰\˜ƒûÇ.v¡Î[˜ãÿ0Ç( ‘IX¢–„%$òv„Ãô¨–9Ì!vÈ£ò‡9èÑyTTíG;äþsУò¨¨<Ú!vÈ#æ G;äQQy´CíG8ÌAvÈ£¢òh‡<Ú!p˜ƒíGEåÑy´#òTµÚ!sÐÃÕ’‡¤ä!)J…C혥$U-sTë¥x†ÄðpÈÃòh¥ÂÑJ…CáØ*¥$E)IÕÃ|•G8Ú!IQ*”JW;ÂÑy„#í8<>°Kð„' É,g-1Kp–X$ÁK„l‹°Df-“E@b’€„$`b H,‹í",ZHXb‹€‰%`b ÎZ"³‹°$a‰EpÖ¿…‰%J‘ÙE@B¸0±$þ áBb¡„%‰E”‚'¥È¬% a ž,‚'–àÉ"x²Kðd™]$,±ˆÌZâ·‹˜.OA`˜,âÀX„‚¡àE(x ^„‚¡àE(x ^„‚¡àE(x ^„‚¡àE(x ^„‚¡àE(x ^„‚¡àE(x ^„‚¡àE(x ^„‚¡àE(x ^„‚¡àE(x ^„‚¡àE(x ^„‚‰EÀd<±Ä"`²˜Xb™¥Å3öñ~ÔcõèÇ?êq ˜X‚'ƒ°$,‰V\C ÿÀG=êÑ~àã¿]$,‰EHÂ| ¥èþy„Cí¨–9(EpÈ#òhGµÌA)z„CáG;ªeJÑ#ò‡<ÚQ-sPŠáG8äÑŽj™ƒRô‡¤(Õy˜Cáh‡<ÚQ-I…£ò0G;àÑy„CíG;Â!sÈ#ò0‡<Â!p|ÀÏøþ±Õp´C’êØÆH*æG8$eJ™CáG8ªÕsÈ#”jG8:¶1 ”j‡<ÚaŽ@‹°L,ÁK –X$,1ž b°$“A@bL2ÎbL,‰AÀd°Ä a H &‹°L,“Eþdv–€Ä"2+\HX`ƒ„% a žX‚'–$,±˜X $,1H ƒ°Ä ±K@b‹€Ä qKÀd0±L“A@b0у%±K,–€Ä",“E@b°Ä ,‰A$$³–€„%ñÛ„ "³–€Ä  K@b–L,‰A,–€Ä",1˜XƒX$,‰EXb0±$±HX‹°Ä `b H b°$a‰AÀÄÄ" a H,ƒ€‰% 1ˆE@ÂX„%K@b‹€„% ±K LX$ Â"@‚%þ@Â"X À„%@ ,$X$,‚% LX$ Â"@‚%@Â"X À„%@ ,$X$,‚% LX$ Â"@‚%@Â"X À„%@ ,$X$,‚% LX$ Â"@‚%@Â"X À„%@ ,$X$,‚% LX$ Â"@‚%@Â"X À„%@ ,$X$,‚% LX$ Â"@‚%@Â"X À„%@ ,$X$,‚% LX$ Â"@‚%@Â"X À„%@ ,$X$,‚% LX$ Â"@‚%@Â"X À„%@ ,$X$,‚% þLX$ Â"@‚%@Â"X À„%@ ,$X$,‚% LX$ Â"@‚%@Â"X À„%@ ,$X$,‚% LX$ Â"@‚%@Â"X À„%@ ,$X$,‚% LX$ Â"@‚%@Â"X À„%@ ,$X$,‚% LX$ Â"@‚%@Â"X À„%@ ,$X$,‚% LX$ Â"@‚%@Â"X À„%@ ,$X$,‚% LX$ Â"@‚%@Â"X À„%@ ,$X$,‚% LX$ Â"@‚%@Â"X À„%@ ,þ$X$,‚% LX$ Â"@‚%@Â"X À„%@ ,$X$,‚% LX$ Â"@‚%@Â"X À„%@ ,$X$,‚% LX$ Â"@‚%@ X$,Bf Â"@BBÀ„%ÀÄ"@Â"@-xƒ<ÔÃ?àƒ9\Ã(@‚%ÀÄ dÖ!XOÐÂ3ÈÃ>ü>˜Ã3´‚$ð„%,‚%@‚%@ ðÄÈC;„¥´ƒ<´ƒ<´ƒ<„¥HJµ´ƒ<´ƒ<„¥HJµ´ƒ<´ƒ<„¥HJµ´ƒ<´ƒ<„¥HJµ´ƒ<´ƒ<„¥HJµ´ƒ<˜ƒ<„ƒ<˜¥´¥„¥þ´C8ÈC;ðU;˜¥´ƒ9ÐÃ`mU;PÊ@‚2èüC8´ƒ<„ƒ<0V;ÈǶ¥Ðƒ9PŠ9ȃ9lU8ÈC;ÈC8lU8H ¥ˆè‡ÊÃè$è$ ‚ ‚$ ‚ è$ Â"èÁ ‚@‚@ è$è$è$ ‚üÁ!@ ‚üÁ è$èÁ!èÁ! ‚@‚@˜B‚$è$è$€© èÁ ‚@‚€é"èÁ! Â!€© ‚‚‚‚‚ è@‚ü$ ‚ è$èÁ$èÁ!@‚þ€©$ ‚@‚$è$ ‚€© è$èÁ ü$èÁ è$€© Lè$èÁ!èÁ! ‚ è$è$ ‚$è$èÁ!è˜ê$èÁ!@˜‚© B¦$°«˜‚˜$ ‚@‚À„ èÁ!@ è$èLèÁ! ‚$ ‚@‚À„ èÁ!@ è$èLèÁ! ‚$ ‚@‚À„ èÁ!@ è$èLèÁ! ‚$ ‚@‚À„ èÁ!@ è$èLèÁ! ‚$ ‚@þ‚À„ èÁ!@ è$èLèÁ! ‚$ ‚@‚À„ èÁ!@ è$èLèÁ! ‚$ ‚@‚À„ èÁ!@ è$èLèÁ! ‚$ ‚@‚À„ èÁ!@ è$èLèÁ! ‚$ ‚@‚À„ èÁ!@ è$èLèÁ! ‚$ ‚@‚À„ èÁ!@ è$èLèÁ! ‚$ ‚@‚À„ èÁ!@ è$èLèÁ! ‚$ ‚@‚À„ èÁ!@ è$èLèÁ!þ ‚$ ‚@‚À„ èÁ!@ è$èLèÁ! ‚$ ‚@‚À„ èÁ!@ è$èLèÁ! ‚$ ‚@‚À„ èÁ!@ è$èLèÁ! ‚$ ‚@‚À„ èÁ!@ è$èLèÁ! ‚$ ‚@‚À„ èÁ!@ è$èLèÁ! ‚$ ‚@‚À„ èÁ!@ è$èLèÁ! ‚$ ‚@‚À„ èÁ!@ è$èLèÁ! ‚$ ‚@‚À„ èÁ!@Âþ è$èLèÁ! ‚$ ‚@‚À„ èÁ!@ è$èLèÁ! ‚$ ‚@‚À„ èÁ!@‚ Â!€é!è$èÁ  è%èÁ èLèÁ èÁ!€)$è$,Â$ Â!@ $ Â!èÁ ˜êÁ èÁ!è$è$ $ Â!@‚p Â!€©@‚‚ @ è$|@8TK8ÈC8´ƒ<˜ƒ<Ѓ9„C;ÈC8´C8´ƒ<˜ƒ<Ѓ9„C;ÈC8´C8´ƒ<˜ƒ<Ѓ9„C;ÈC8´C8´ƒ<˜ƒ<Ѓ9„C;ÈC8´C8´þƒ<˜ƒ<Ѓ9„C;ÈC8´C8P =˜ƒ<´¥„C;ÈC8PJ8PJ8ÈC8´C8´C8PJ8ȃ9ȃ¤ÈC8´C8ÈC8´C8ÈC8ÈC8|$<ƒÁ?ÈC;ÈC;˜ƒ<¤K8¤K8ÈC;„ƒ<´„†Cµ´ƒ<„ƒèÑógžAz éäôžCN9…¤çÏHN!é9öS=ƒé9ä4ì¡Aô úsèÏ!=‡ é9ôGí!=œR Éé!=œÒ3HÏ!§‡ô°Õ3HÛ?ƒôr IÏ!¶Né9äôžAz©u IÏ §‡é¤gžCz9…¤çSHj R{hžCô Òóç$§œrþ:Èé¡°zéä”­žC®é¤ç$=é94HÏ §ƒœÒIÏ¡Aj9=¤=D­Aœ:DHô8dµqê= ÑãAÔÄ©Cô€DCQk§Ñ=D­Aœ:DHô8dµqê= ÑãAÔÄ©Cô€DCQk§Ñ=D­Aœ:DHô8dµqê= ÑãAÔÄ©Cô€DCQk§Ñ=D­Aœ:DHô8dµqê= ÑãAÔÄ©Cô€DCQk§Ñ=D­Aœ:DHô8dµqê= ÑãAþÔÄ©Cô€DCQk§Ñ=D­Aœ:DHô8dµqê= ÑãAÔÄ©Cô€DCQk§Ñ=D­Aœ:DHô8dµqê= ÑãAÔÄ©Cô€DCQk§Ñ=D­Aœ:DHô8dµqê= ÑãAÔÄ©Cô€DCQk§Ñ=D­Aœ:DHô8dµqê= ÑãAÔÄ©Cô€DCQk§Ñ=D­Aœ:DHô8dµqê= ÑãAÔÄ©Cô€DCQk§Ñ=D­Aœ:DþHô8dµÑ=Ñ=ù=Ñã×ô8ä=у-=qê=Ä©Aô8d?ôø=Ñã=äCœDAôÄ©Cœ‚D°Ä©Cœ:DH>xÈœvä1GsÂiGžv §y̑ǜpÚ‘§ÂiGsä1'œväig pÚ‘ÇyÌ §yÚ(œvä1GsÂiGžv g pX’'y‘'œ‡2g!í‡<Â!p<$òG;äŽv„Ã'òÇñ =i‡<ÌA´ÃòhÇ<ÚŽ„c )l‡<Ú1Ÿ„#…í‡<ÌAþÊ£á‡9äaŽ âz ƒÈPD1A ETâ‹(&Q KÅðD1<‹dCÅE1Q YÅE%ŠÁŒdC•(2ˆA‰b`ãŸ(†"Š¡ˆb`¢˜(2ˆaŽbÈ¢Ø(6Šb`£Ø(6Šb`£Ø(6Šb`£Ø(6Šb`£Ø(6Šb`£Ø(6Šb`£Ø(6Šb`£Ø(6Šb`£Ø(6Šb`£Ø(6Šb`£Ø(6Šb(¢È :Ö‰b cÅ0NsbñNù@8nŽÊþ#æG;Žw†ÃòhÇ@ÂñÎp˜CíH8ÞsÈ£ Ç;Ãay´CáHa;‘Âvȃ%áG8äŽÎ#i‡<Â!p´#…á ‡<‘BsÈÃ)ô@)”Q2ü£áhÇ<äÑŽ´#íG8ÚŽv„ÃíHa8y„Cæ`‰<ÂÑŽ†Cáx§9äy˜CíHᡇ?áüPë?øñµ¾®jý?þñ¸þ®ÿxk]ÿW~üïpýÇ[ùZX~üã­ÿPë?ûÖðãüøG\ÿ×4V­…åÇ?û~üã­ÿˆk]ùñ̾õþüøG\ «V¾¾õqý?þá×Äõ­ëiÿqZ~ü÷ÿðí?|ûßþ÷ÿðí?|ûßþ÷ÿðí?|ûßþ÷ÿðí?|ûßþ÷ÿðí?|ûßþ÷ÿðí?|ûßþ÷ÿðí?|ûßþ÷ÿðí?|ûßþ÷ÿðí?|ûßþ÷ÿðí?|ûßþ³ÿàÇ?Ôú~üã´u ì?| ׺vX­ÿxk]ùñÌâð ƒqˆÈ#íG;ŽÒ#íG8ŽÒ#íG8ŽÒ#íG8ŽÒ#íG8ŽÒ#òhG ÑÂp°DþæH;äy„£áh‡<Â!sÜ%áhÇ@Â1pÜ0òÇ ñ =’´%MhIZ–„%4¡ IXBБ–„%4a IÓ‚¶„$0m IXB–t§?ð‡Cè …UõªYÝjW¿Ö±–õ¬i]k[ß×¹æG®yÝk_ÿØÁö°‰]lcÙÉVö²™ÝìdóÅó€>æA§â„–D¡%QhIXB„–¡%QhIXB„–¡%QhIXB„–¡%QhIXB„–¡%QhIXB„–¡%QhItšÐ‚¶„&,!iA[B–¡#m IXBÒ–þˆ´&$ñK(Cdh‡<|rŽvœ£áKÒy„CíÇ@Ú1ŸÈÃ'íÇ9X"vÈ#çAˆOäŽ8ådpöÒ™Þt¦óÃéQ—úÔ©^u«_ëY×úÖߊâyÀóÀ<È=| ®üà+?úÑðãü¨+?êʶÿƒÿàG]ùQW~´ýüø?êʺò£íÿàÇ?øQW~Ô•mÿ?þÁºò£ÿà_ùÁj~Ô•ÿàÇ?øñµþƒÿà_ÕÊW~üC­ÿàÇ?øñ~|ÏÐÂ!p´CáG;y˜£áh‡<Â1pÈ£áþˆ9ÂÑŽ†È£ò0G;Â!v„£ò8G;Â!pÈ£áG8Ú!p äƒøÃ!Ȱuûßÿù×ÿþùßÿÿ°°Þ ÅàP ðaðA áôàÌABÚAÌa ÂABÌ%äÁ"ä¡!äÁXBÌa ÂABÌ%äÁ"ä¡!äÁXBÌa ÂA‚‚Ì¡ÌAÂä å%ä!ä!èÂAÌAÌ!çÂAÂA|Âä¡ä!ä¡<ÀžáÄ@ÚÌ¡ÂÚÁä!n¨¢ä!¢Ìá¡ÌþÌa ÌBÂAÚa ÌÂa Ìa ÌáÔ‚ Ð/3Q7‘;Ñ0®P ððÁñaæ œâ>à†ÂAÚAÂá¢ä¡ä!jQÚAÚAÂÛAÚAÂÛAÚA‚Ìa èa Ú‚%ä¡ä!rn Úa èÁXb ÚAÂ%"ä¡ä!Úáþ€ XBÌ!…ÌR(ä!ä¡Â!…ÂAÚ!…Xb ÌR(ž±Â!…Ú!ä%â áô€ >‘#;Ò#?$CR$G2ëøÅP þðð!çàaðAþ@áÂAÚAÂÁÂä!ä!Ú!ÌAÌa ÌAÂA¡ÂÁäÁÂä!ä!Ú!ÌAÌa ÌAÂA¡ÂÁäÁÂä!ä!¢Ì!…Âa ÂAÚAXÂäÁÂäÁä!ä¡ÂAÚAÌAÂAÚa ÌAÂa Â!…ÌA>”AÈ@Ì¡"Úa ÚAÂAÂAÂ!…¡ä!ä!ä!ÚAÂ!…ÂAÂa ¡äÁ'¡"äÁR(äÁ>À) HÒ9Ÿ:£Sþ:§“:ûO­ðá­ðPlP RàaÈ@A>@ÚáÚAÚ¡Ûa ÚAÚ¡Ûa ÚAÚ¡Ûa ÚAÚ¡Ûa ÚAÚá†Âa Â%"ä!ä!äÁä¡jÑÂä!ä¡èÁÂÂAèÁ¢èÁÚ!…> €AÄ "R(ä¡ÞÉä!n¨ä!äÁ"ä!R¨R(b ÌAÚá†Âa ÚÁðááô€ ªSK·”K»ÔK¿”Kß Ôê$áàààZÈ@ A> ¡ä¡ÂÁäþ%ÂAÂa ÌAÂÁä%ÂAÂa ÌAÂÁä%ÂAÂa ÌAÂÁä%ÂAÂa ÌAÂÁä!ä!ä!ä!n(n¨nÈä!XÂR¨R(n(èAÚ!…ÂAÚAÌAÂ%>`”AÈ` ÂAþ,a ÌAÂ%"¢ÂAÌ¡Rˆ%ä¡"ÚAÂ%èn(ÚAÂAÂA¡ä¡äáþ@ ÀÔ_ÿ`V`vêà øá$ ÅàÅàaððÁÉàôà>À"nÈÚAÚa ÚAÚ!…þ̡䡢ä¡RÈÚAÚa ÚAÚ!…̡䡢䡢ä¡ä¡n(ä!ä!ä!XBÂAÚ¡ÃAÂá†ÂAÂAÚa ÂAÂa Ì¡ä¡ä%>ÀžAÈ ä¡äáÚaÂAÚAÌAÂa Ú!ÌÚ!…Ú!ä!è"ä!è¡R(ä¡RÈä¡äÁ> , –s;×s?t=®ððNò$ ÅæN’ þ@áä¡ä¡ä¡ÂAÌAÚ!XbÂAÚ!äÁä¡Â%æ!ä¡þÂAÌAÚ!XbÂAÚ!äÁä¡Â%æ!Â'ÂA|"ä!èa ÂAÌAÂAÂAÚAÚ!ä!Ú!ä¡ä!ä!Ú!…ÚAÂá†X"…Ú!ÌAÚá áþ€ R(ø¡AÂáXâ†ÌAÂAÌAÂAÌA¡ä!RÈXBèÁÂAÂa |"…B>àœ‚ r þ!ˆ¡Ö‚–-ˆ¡AÙøA.`€‚–.ˆ¡áƒB—‹»Ø‹ûï­ðáðA­ððððð!áà¡%á áôþàäÁÂ%ž1Úá"Ú!å!ڡá"ÚAÌAÂÁ'Rˆ%RˆÌ!…¡äÁä!nÈÚÂa ¡ÂAÂAÚ!Ú!äÁä!äÁäÌ¡>`€AÈ RˆÚaä!ä!ä!äÁ‚%R¨ž±ä¡ÂÁRhÚá†Ú!äÁä!ä!èa Ìáô`ô€ X-ˆ×X ‹` <àÊ<àÊaÕøAž¡!ÙÔJž¡AÙø¡ô <àÊ!Ù<àÊ¡®øÁ> ø=àÊ¡®øÁ> þøá‹Gš¤KúüÁšî­ððPÅàÅààÅààæ ô`ÁèAÌAÂAÂA¡Âa X"X"ä!Ú!‚%Â%ÂA¡Âa X"X"ä!Ú!‚%ÂAÌá†ÌAÌAr.ä¡R¨x±¡Y"…ÌÚÁèá†ÚAÚá†ÌA>”AÈ@¡äáÂÁÚAÚÂá†ÂAÌ¡Â!çä!ä!ä!ÚAÌ!…Â!ÎAÚA¡Þ‰ÂAÚAÚA>àôàÈ€Õ,àŠ›V-ˆ¡áþøáøá  V-ˆ¡”-ˆËaÙ ¡ÔêÔÊ×øÁÕ ø¡®øáøÙøáØøº¡êŠþL¿ó»sùAAü¡ÙÞ à àÅàaPlP ðP ð!ÉœâÞ©ä¡èÁä!äÁÞ©èÁä!äÁÞ©èÁä!äÁÞ©èÁä!äÁRˆÌ!Þ©ä!äÁä!ä!ä!ä!ä!Ú!Ú!…Ú!ä!Ú!äÁä!‚Ìa Â%ÂÁ'äÁ'âJáô€ äÁä¡þ¡Á'þ"Ú!j‘%æ!ä!ä¡¢R¨RÈä¡äÁä¡ÂAÂa ÚAÂAÚa> ,ô€ X-ˆYá­êÊ– À` á` aª€êŠþ úa. €Xàê*ˆ¡áÖ! ®‚Ø0 6€ú¡®6á , þ!ˆý`¨¡Vm.`Àø¡®âàà€ ê*ˆý`¨¡Ö9€`Êüa à !ˆ¡á‚þaê*ˆýààÆá`€ÞáÖy  ø!þê*.`ò¡®‚Ø0 6€úAÕ‚˜"`6àê*ˆýààþ!.`ò¡®‚˜"`6àø*.`ò¡®‚Ø"`Öy  ø!ê*.`ò¡®Šá   ô[íמ$eá ®€dÁ’í­ðA­ðPPlððððððàœâôàæ!ä!çn¨ä%ÂÁ'n¨ä%ÂÁ'n¨ä%ÂÁ'n¨ä¡ä%Â'Â%ÂAÌ¢ä¡ä¡ä!RÈä!ä¡ä!Þ©äÁþ'¢äÁn¨æ!ä%ÂA>`”¡È èÁÂáäÁäÁÚAÂá†Â¡¡äÁ¡nÂAÌ¡ä!ä!Úa Â!…Âa Âa  䅓®Ý9‡ô"ó¯¡C~Xðàá«`ÈÁ€rü<–c&¡6 Ú¿f%ÈÁ0@Ä?~”ãÇ@€† À„üy,ÁC¾ÈÁÀ•ÿøòX‚ †|ü €üøp€þ1ñH„ 4Ðþy@ åøPŽ;ÒFCF¾f%db þⓈ0 õÏc9~€È@‡´ À¬ÿ<. ã@‡ü¢(!# r`Ðß? ȸÐá?@y€FèrÈ &¡þy,ÇЀd^ ñ_LÈàXÁ¶ýûøóëßÏ¿¿ÿÿ(à€hà&¨à‚ 6¨_Z²\¡ !W\Aˆ:þ4˜?ølÈO:üÀƒÏˆøÀ3â<øÀƒÏ<øÌƒÏ<óà#‡èqÈòÈÎ<íôØN8íÈcŽ<æäèc;á´#9ò˜“ã‘á´#9ò˜“ã‘á´#9ò˜Žò´“£<팙ã‘íÈcþΘáäØŽ<áÈÓNŽáôN;ò˜N;ò„cf8í„cNó´“c8@òŒd´“c;ü´cI;ò´#O;áÈÓŽ™áÐ3f8ò„#ˆ?xäØŽ<íÈcΘᴓc89¶Ž<æÐcæ6 òÇ!d4äkCa7+ý4€ý¬ãQ9üxM?A³Ï¯ yÍ?þð³O=à @À?ýxT?ëxÔG“ø3 üÃOÔà+?ÿx„Å?Í µü4@ ÿôÓÏ?ü40€ý°ÀåüãÑ$þ €iy?üxÍ? €?ÕxTÎ>•ÃÏ: ðO?™‘Ö?þä³O=à þ@?ÿ 4ûüÃGÐðÓÀfôÔóG“ø3 PËG¬üãΔӘñOZ `F?ì0@9üxÄÊ?î @9ü4"á¨ãÑ;ýxdF=ýìã4ûüÃGÐðÓ@ˆ„£¼ÃO( <ÔVnùå˜g®ùæœwîùç ‡.ú褗nú騧®úꬷ~9?ÿÈr3´ËR!!êô³º‡âÃ>ðˆÏ<ð<øÌ>ÇÏCÆzèñA89š#99š£Âö5ÐP ?„~ŽíÈÓN;ð´cNŽæäØŽ<çÃÓŽ99šcfŽç‡#O8í„#O8òþhG8Î×sÈ£áåy´#Gá0‡<Ú‘#sÐÃLæÈQ8ÚŽ™ƒcj‡9Ú1¦XâÃùäaŽ˜cá‡9Ú‘£pÈ#á°‚¬à+ì¡ÚÔà<à!òGŽèaŽp´#Gáh‡<Îw¿pÈ#æØÆ¶ø2X.`EC6äV4$€F?0hð#€Æ?Òò« ü(Æ 0€`i  Ñu  Áq ÿèGÀŠðÃW4ø±Tn`Å?øá+°‚þ@XÁüÐ üøþGPŽD…ÿðÇ ~ÐèÇ:<ò~Ðh?Šqôø?0hüƒÿÊñ°‚þ@XÁüP9@ƒýð+ø@ÃWa?ü€°â?úáVü@<hðÃ#ÐHË?0hüƒÿÊñ (4ø± ðåfJÓšÚô¦8Í©NwÊÓžúô§@ ªP‡JÔ¢õ¨HMjOÓ"‹+¨â©´#D…! 5-øø>øàƒÂ#BÃWÆ?,ðƒ@9þáhücY/0‰¬#(Ç?< _5Xà‡;Ò"þ@ƒ㈠µø  9À@>þ @þÁ üGT”ãüÊñ/€9`@ù¡Á `L`@ùÓ”ƒ Á€¤ð ÑPL üPÿ@9PÐÿÀåÀãë@9€ÿÀåà+€€Àÿ@9Àüð€ EùÀåÀþ ÑPL üPÿp2Qðü`N IÀÆ–†j¸†l؆nø†p‡r8‡tØki! W  ζ‡Î¦ „P!W þ°kiÑ#â!ÂÃa5"ó0"ð0"ð0øøPVó@ô ¥ð9Òcímðóð𨘊m áÐကဤ áÀ  íòp @È 0 í@Èác‚ €CÇð ô`òÐò9bóÐ9Ò9÷f9cÒòÐòÐô`9í#áð z@þæ0&ÿ ’ æ á æ ç#œŠ©8ùj jà â`&á`òíôÐá íòò`ò9ò  Ï dð_åQ1¬ðþ°@VP~Ððå ü Püð+} üP à0ÿÀÕpðtP~ Q~ÐÀãðüð›pÿP~åÀãP~¾Âÿqp €iù 0å ü0å×å ÿÐå ÿà80`å üP 0@0ÿÐåWýÅþð~¢UÐå ÿÀqpð@S~ÐÀãP~ëà PÿÐå ‘qp@@üð~€°ïðüðqpàS~å°i! PýP~ÐÐqp@ÿÀ(Ð üðk: Z z š  º  Ú ú º^ü W°‡WàlWÀ‡„ˆ„°¹–øà+ø°!a$$2#óø0ð€ð€ó@ô ¥ðá áÐ÷Óï€óÐ ù€ ¹mþ9ÒÕÒp9Bò€ 0 í#Pဠp ဠáÐá Èí á0 ò 8Àâ Õ KàÀá áð (0áÐá#á#á á`òÐá íp?ç“#` Ï d í áÀí°u•#á¢ðù€ ÉùÐù ãp¾ ç#ý9ýi&æ á#ô`cò  ÊPdð_üð+iñiÑüð+iá+iÑiñ+üð+üðiÑòiÑüðiá+üðiñiÑâ+üðüðþü0kÒiÑûÐâ+üðüÐüà+iá+úðüðëiñiÑüðiñiÑüðiÑüðÒÒüðiÑûÐâ+üðü@-üПÐÀ Áÿ Á¾Â¿ÂÿÀý iñüà+ü@-ÒiñÒâ+iñ+üÐiñ¡V{µX›µZ»µ\Ûµ^ûµÿÀ²ppW@fKfk¶„ðk+ ·ÆøðøðøÀø‹ˆü#øøð@"ð@"e…ð@ô@–ðòÐ9ò€CæÀï°rÀGþšóÐ9í€ PŠð 9Òò0ÐáP  ô° `PòP p?Èá è€ âp$ èð? Ë0>æÐ5#'@áð PcÒ9ÒfÒ9òòòç#áð’ð z@í9Âò` á@@áÐá#çÀ{¤üÐþ0÷à â`òÐòÐ’åííp?í#áÐòð  Ï d0küà+üÐüð+üð_üð_ü` üÐüÀ üðükü@-üÐ ÀdÀ@ü@-üð+ükü@küðþü°kÐpküÐüð+å ³ÆÔÂëŸÆ`»Å\ÜÅ^üÅ`Æbì+ü Wð„p„pÎvðÆk+ üpkòømÂC"ðÀÂü@"ð0øóø0„«æ@¥ðí9c]ði¡r@ r° r ]òÐ9r 8à°ÂÐòP ò ô€ ¾ Ò€ í9‚ €0ð æ ð ô ðáP ç3 ßÒÐòÀ 0á á íí ç9Òòòô`þò9òð  æ#áðá°ô`ò`ô`9ÒòÐïøÀù€ùÐþ Ù #áÐáÐ-9&ô`á@@áÐò9Ïð–ð z@¼Æ¾Æ¿’Ê]Ë¿ÂÿÐëp€ùÐki¡üP¿V~åPkü kü kü0ÆR=ÕT]ÕV}Õ[˲poLpoì „`¶n iak¼3"ÿÀéy<"ü€ð0"ð0"ó€ð0"„»×|Mõ@–ðæ áÐ9r>çÐ ii] ç#æ íþ Çð 9¢f€ €9² pçp4° p?ÈÛ  «Àf ËÛðô° ò`È ò€ í Èò@á#æ@æí0&áPWô`9°À d`&ÿ ‹PWá áÐ]0üüi‘þ ãàlPWíá áp?í#í ç#íð  Ï d€ÕU ‘T¾æ! ^á~ážáÞ ü WðWðÆ®à `¶„ rk‚ üÐi!<üðÖð@"ó€ð€|½ãð@ô ¥ðþcÒá í#Iðü°¼“á`í0&í`ò0 9rÀ pí Õò Õ0„á á#Èá æ  ÝÒòp>òP 9 ßÒòÀ Ðòp>÷òòò@@áPW ÊðdÐá áðá á@@òòÐò€]ðÙæú0úÀ] áÐáÐáÐ9Òòí á æ á á@@íð ` ÊPd°áSTÍÊÒžíÚ¾íÜÞía̲p#>âk+ ê¿RuPþìÞîîÞEÐ(Ð(Ðb iñÖúŽó€<þïð k Ðò9bípæïÀù ¼ƒI#í Î@Á Çð í êPð„ 0&C@ á çƒ í#PôÐ$ âÀ p Õ* ß;p>' çð °òÐÝâÐÝá@ÎÀá áÐò`9íòP À d í#ÿ ’`òp>òÐcbqð¼Óþ0úðü è`&æ çs?á í í0&á áð  Ïþ dƘŸùš¿ùœßùžÿù ú¢okü W0âfK²àüðüð+üðPbðî^P € Ðû¾ÿ$Âûø°×óðïÔ@¸Ô°×z`ôP ò9bô æpïÀýÙvçò (à %ð æ çð áÐò° í êÀ í0&È®];sœHS‡Ã‚MæU ð&‚âÄÉë†âäÉ@œ¼aÄÉ@ÜÇvÃ}”×îã‡EÊô‘N^¸á,É›×N^¸æäµ“óŽßÒ~þÖ­ó÷þß¿$0Ã}lN^¸áÚÉk7¯¼pòÂÉk'/×KÊôùWî\ºuíÞÅ›Wï^¾}ýþXð`Â… FœXñbÆ?†Yòdʇu]Á|EV¿¥vùiZôhÒ£ÅðÇ_j֭὆[vl2øèYú0¦¼vòèÝ\8pyævË£÷Ñœ†“N^¸0ÛÉ«wÜ\;˜Õ—N\;yôäÑ3îc¸v0Ã} '/\;yá>†“'yÂù’gô Cžv>ú§EÎ1ç#s>jç£8äèbšuÆq'žFâHBŽ$ä0ç£Ú‘§y’Çyþ2ç£pèi&`>€ä=ȸ«G2H!‡$²H#D2I%—d²I'Ÿ„2J)§¤²J+¯Ä2K-…”å BÔùq©ÐŠH‡XÄ€ŸCÄ0ŸWàÀ†bzh xøiŸÔ`›§ÏØæyíÙ¨yŒJùÀyÂi'sä1ç£åiç#s> ¦vä(œãÌ¡'yÚ çÄÌù¨yÚùèÄä ç#xú¨pÚ‘§ÂÉz> GžpÐû(œÂù(zÌù¨Ú‘§>°ä™?Ä'yÂùçK>jg·pÚAyÚ &zv3ÇyÚ §y̑ǜvä1ç£þ> §yÚ‘'œpä çK”©ƒŒ¸f¸a‡†8b‰'¦¸b‹/Æ8c7æ¸c?9d‘G&¹d“OF9e•Wf¹eýGø¡–êXja~Rã~ðY*5xŠh€œÖZƒŸ×ðmž×¨šÙàƒy,ù@žp`¢Ç˜Ì‘'yÌiGzÌ)œsäiGsäiGžpÐ3ç£pN”'yÂHžpÚ‘§]y¡ǜpä1g p`§> §yÚ‘§yÚù(yÂi'y‘g y‚)œvä g y‘'œæ2äiç#~ÚY$y‘'œv>jç8säiGþžpÚ1‡žÝÌÙÍœNl¦vÌÉœvÌù’gô ãcï¿?|ñÇ'¿|óÏG?}õ×g¿}÷߇?~ôýá§b~Ѝ€Ÿ…—â¿|øOMŠ€~¤ø€MŸðѧ×Ìcj²¡<È€s”âiLÚÑ.˜´ã#áøˆ9äÑŽ˜£æ ÇGÂ!p|$»iÇGÌ“pÈÃòÇGÚA¬vì&òLÂÑŽ„CæÇ‰ÂqœpУòhG8ä1p|Ä1‡<Â!v|äP†È0y„ãç°„<Â!pÈãDóh‡<ÂÑsÈÃòÇqÚ˜´#0 Ç<Žþy˜CáhÇn>`‰gè äƒd$%9IJVÒ’—Äd&5¹INvÒ“Ÿå$ùa1b4  ãG\ú·Ê¥àc_h9XÔÀ¯™GltjèR ô¨‡%> p $íØM8Ú!p´ã#íG8²›„c7áG;Â!p ¤ G;>Bs|$‘G8䘄£áh‡<ÚAsÈ#òh‡<Â!v|ÄùH8äŽvÈ£òÇGÂA¬˜ã#íG8>‰gè æ€ ?䱘´CáÇ@ÂÁÐv„£áøH8䎄Cæ G;Âay„ã#íØ7Ã!þHâz C(…:T¢Õ¨GEjR•ºT¦6u|éx¤:UªVÕªWŪUŸ‹>Íã5óÐ%5vù2ÐC¥ð€<Ì“pÈ#0 ‡<Ì!pÈ£0 ‡<Â!|¤áh‡<Úñ‘p|ÄòÇGÌ!ìÆòh‡<Ú!p´#01‡<"vÈ£ò‡<Ú!pì& ÇGy„ã#áG8ÚŽv„£0i‡9`òKÒy„ã#ô0ÇG“vÈ#‘G8`y´#ò‡<ò‘p §ôÇqy˜CáG8>‰gè òh‡<̱K =í‡<Ú!pì&ôG8ä1pÈ#ò0‡<Â1sÈ£áG;äaŽ´ã#áØÍ ñ =þAcì€}Ù!€¸¬!ÈÇÅØ!±Cãc‡È·† c‡îË€X*;à0v aìÀ?Ø!€°CK]Càð×Üç–/?þñ„ÌÁï†w¼åmŒMãïÞ„1.ñîK¼{—0Æ%ŒAàç =ÁÒŽÈ#íøH;äazt\æG8䓤á0‡ÉÃ!p˜C‘G8äÑŽy´#-—Ç@æ“›ƒíÇGÚñ‘vÈ£òhG8>Ž„CáG;äÑŽpÈ#òˆ<ÚÑñv|Äþ’ÆÄ0yÐÃíG8Úy„CæG8äÑŽ´#íøH8äy˜Cíhy;>ÒŽ„Ãäáh‡<Âñ‘pȰÄ3ô@†…u¾óã@èPj¸Cüð|êU¿zÖ·Þõ«ç‡>ôÀàü[=?ìá…¹C¯O½;üÖóÈ ?ô¡~tÞùχ¾óûἃÿà‡=<~¸Cüˆ~øÅßy~ØÃãGøÝ!€ÎóÃHÿóÝ!€ø×ßþéw‡žïtžî~Ð=àw~¨?~°¸¿Œ‹~ðx~Ð=pÀ ÄÀ ÔÀ äþÀôÀA* 8‚3†4…Ü„°9¸ ƒA¤‚ Øx‡…{ jx 28Køyh‡yhy0‡v‡p‡“ ‡v yy“  ky0‡vøsh‡h‡p‡ph‡p‡phyy‡vh¹p‡psy‡ˆŽ£‡pøss‡pøshy0yyy‡„gø2‡ºph¹p0y‡ŽˆŽ3zøˆv˜‘‡vyh‡pøˆph‡pøsøˆvøˆpsø€Ex= ñã‡q~øthþ`Ádì¼¥ˆ w~?~pø~øvûã‡`Ð@~pà‡XŠä‡pà‡Îãw~ˆ veäw~A~øv€Îãw €ûã‡`PÆ ä‡`è<~øvçcXЏ`°?~pà‡ƒŒ ~øw€à4É“DÉ”TÉ•Ì@~臠GHGp„d Éd Éœt„dÐÉž´ s.°ƒ9à* .0J.0Ê¥¤‚'b€‡yÀÁ]Òx‡Røsè¸v‡psøˆv‡v‡p‡p0¹p‡p‡pþo’‡v‡v‡‡p‡phyhsè¸y‡Ž ‡‡Ž zh‡‡‡vyyhyh‡0zyhs‡pyˆ–k‡ps0¹v‡vøˆ€eÐ2‡v‡ph‡p‡pè¸ph“kyy‡v‡ph‡hy“3‡0‡hz0yh‡Ž y‡v踰e¨2¿u€¥ø‡fv~ø}À ȇ¸¸H(wˆ‹Mˆ€ˆ }À ȇçÛ„@ø`x¸ȇ¸Ð0‚|ˆþ }À@øv€~ˆ à„ ˆ ~hè< phpØ„ € x‡¸Ð0‚|p>w€à‡{À ȇ¸Ð ¸¸H(wø ph`ø~¸‚|øv€7ð€ Ø€wp>~¸~ø‡ p€|X phpØ„ € x‡¸Ð0‚|x>}À È~°°…ð 0 phø}À ȇ`x Èw€7ð€ Ø€wˆ‹{@€x‡þpp> phà‡{À ȇà‡{À à‡pp¾;˜€¸à‡f€~¸‚|øv€…qp¾f˜€¸0àà‡{À ȇ`Xw €pˆ‹{p°:€Îãw€`àw€¥…°…Ð0‚|p> phà‡{À ȇçÓ à‡{À ȇ`x¸€ x‡p€ppˆ‹{px?€`Xw €`x È~Ð0‚|`ÉþµeÛ¶uÛ”ä‡èɹ¥[Ì;ÈG°;à.0Ê'à‚'0Ê0Ê0J. .b˜JjØ%2z°„y‡v‡p¨ÜÊ yyhyhyy‡v‡v‡v‡pyyy‡v‡v ‡p‡p˜‡Êˆp¨Üps‡ph‡Ê ‡v¨\sˆÊ z0y‡Êõ¦ÍÝ\s˜‡v‡sˆp땇(“‡pøHx= s°Þp‡p‡v¨Üp¨Ü¨Üp yy0yh‡y‡Ím‡ph‡Ê ‡Ê ñ yhyh‡ÍsøþHx= ƒñà‡ð$Xw€à‡ P|ð‡øà}Іˆ‡à~¸‡~ð‡SXŠ P|ð‡ø…YŠ{0aà8~`‡ð~ð‡¨‚~à‡ P|ð‡ø¸8È †pàv~ø}0€rø~0*à‡…aXŠ`‡Ðxð$à€}à‡ P|ð‡ø…á‡pø~8ȇxЀà‡8È€…à}Іˆ‡à€pàv€à‡P|ˆ ø~`‡À~è/à€~è<~8ȇxЀþàv€¥è}0€rø~0*à‡P|ˆ ø~`ˆ ~pˆ‹¥ø‡{€|ø¨€rØ `~8ȇxЀàv€¸àw €pXŠP|Ðçcàv€`øQXjðþ~Èhp>w€¥ø~8ȇxЀè<~ø‡P|ðXø~8ȇxЀàv,à‡~ðèw€¥`XŠð|ð~`ø‡¥pàv+ȇà‡ P|ð‡ø¤íÚ¶íÛÆíÜÖíð㇠4†th`°ƒ¹µG˜ƒ½Uî¾í[£Œ¦$…hˆ†]è¦ä‚€ؘ]¢†Ø Øz‡Rð€v‡vh‡ÊEïp‡v‡pô®Üp y@ïv0‡Ê5yyhyh‡Ê yhësØÜvs°^ô–sþ‡vs‡v_yh‡p0yh‡y@ïp‡v‡v‡p0yy0ë ôy@ïÊ5y0‡ÍýKx=yy‡v°^s‡p‡v‡v‡ph‡Ê ë ‡vô–‡v‡v‡p¨Üp‡ph‡ph‡p¨\sssh‡p¨Ü°eÐ2¿up°[`è}€rà‡‡à‡¸àŸu8€Ї¨|ø~ø}€rà‡‡p>}€JÀ‡à‡px‡à‡fX~Ð(~ø‡qX~¸(‡¥ø~`øw€à|þ‚*ø‡{€rè,zö‡Œ¼pôÌÉ '/œ¼vòÚÝ 'Ïœ¼v7ÃÝ wÖœ¼pòÂÉk'Õ=›íÂI½ÙNž¹žé!óï6nÜüþ Î>~üØè·…äüã· …ƒèn׺0ÀB¯~ë(§ð ÷íZXèÕÏ]~ÿø­Ðo€îþø­À/·;ÿÜ ¸ÍoØüÂxî€;Ç;ô³Ý=€›pîðÏ:ðó?ãÀÏ:ð“?› àÀ;àÆŽÿ¬?ÿð3Nÿ°#?ÿðãŽüÜÆÏ?ëÀÏ?üŒÀ?î›pîp?ìÀÏ?ü°#@?ëÐݸñÓÏ:t÷?·± ¹#Àmý¬@wüÃŽÂýÃŽüüÃ;· Pà€ü¸#xîð?ÿ¬?·À?ëÀÏ?üŒ?î€Û‚Ã,À ü³üüÃÏ8ü㎷ñãàñÃÃwüþÐÌ ÍLðÏ:ðó?ãð;ÜÆ;ðãŽÿ°À?±#xìð;üÃN `ÁÏmëÐݸ 玸­?ÿð3N¹ñ³üÜÆÏ?ëÀÏ?üŒÀ?ìÀÏ?ý°#@?îp›;ô÷ñÃŽÿ°#À?¹C@?ì Ü?ëÐÝà¹ü2Ì1Ë<3Í5Û|3Î9ë¼3Ï=û³p#pqÐA¦àÃO=ÏDaGŽ”áˆBepÕU[m5Êðƒ:=”ÁE@ <óÀ3ô¡#ðƒ¸Ÿ;p?áüã*ȇ>4`~¸CøŽ>ðŽÛ¸Cüø?Ø!áAóøG<>?áAóø:>ñ~x¡ü¸ò¡¼ã ‚æñt|âîÀ?øñvà~î?î€wüÃC?Ü!üñãx‡pþqäCø?þqäCø?Ü!nbÀþ?þqäCø?üÑ€IüÃ- @þøq@8P+øñ¨ úÐÀøáLâþøÁÜæVà‡?Z €ü±Cü`‡þáð£ 0„p‚ ƒyü#Ÿ¸Ÿpô€wüƒÿ8 ò¡ üÂ9 òábðã'PA>ô¡#ðƒ¸ ?Ø!€¸CÂa‡þÁ¨€þøñLâþhþáÜF8AÐÁ<þOÜÆLà‡]ƒ/üá¿øÆ?>òóÇ|Á°à/2Q|¤#y€>/`1‚( ûÞÿ¾Ѓ<`Ÿ—ˆF=þÎŽ'”?#gãjÀƒð€ÃJJñK,B–X„%HÂ"H‚%,„I˜$X„IÂ"X X H‚%,‚%,‚%,‚%,„-‚$t %,‚% ‚%,‚$XÂ"XÂ"HÂ"H„M˜% ‚% ‚%,‚%,‚% ‚%,‚%,‚%L˜%,‚%,‚$@Ø X‚„YÂ"XÂ"XÂ"XÂ"t „-BŠI˜$,‚$,ÂHÂ3èäM;ÈC8ȃ9„Ã3X‚$„ƒí„C;„C;„C;„Ã9´ƒ<˜CÞŽ9´ƒ9„ƒ<„ƒ<„Ã9œƒ<œƒ<„ƒ<„ƒ<„ÃáœC;ü¡<„ƒüÃ>ø$@<€ÜÆ=à€€ ð;?¸ƒÜÏ>ØCÀ?ä?,Á +°ƒÜ;À?ôƒ?à@Àh?à;Àm܃ A>ÜÆ=àÀÀÜÆ<Àx@À?øÃ °;Àm܃ A>ü;Àmð;?äÏ=¸Àä?°ƒ(’?, +°ƒÜ;@?ðþƒ>à@ÀhAþìƒ?à€À4Á?øÂ”Ãm´ øÃ @°Â>ø8@<@ü;?Ü;Àmð;Àm¼Á|€dü;@þðà €°Â?܃ A>ÜÆ=¸ÀäÃ?°ƒ(Ò>ØCÀ?ÜÆ=¸ÀäÃ?ðC1\€x€"ñÃLÀm€äÃm܃ A>ü?ÃtfÀ?¸ƒü?Ü xÀdà?¸ƒüƒ;À?°ƒ‡=0ìƒ?à@Àh?à?, +üÃ=¸Àäƒ"Ýþ €Ám܃ A>ü;Àý¸ƒü;Àm¸ƒÜÆ=¸<€À?ôC1\@gÒð;?ÜF?ø$@<€ðÃ?ŒCäCòu¨‡~(ˆ†¨ˆÞ?Œ#\`íC4DA¼hH@0Öa@0‚Àh\C=È:ô@ØAØŒ1È_ÚPCü‘ÁJX‚ÈC8„ƒí„ƒ<„C;DéáÈC8´ƒ<˜ƒ<œÃá„C;ÈC8´ƒ<œƒíÎ9´ƒ<„ƒí„ÃáÈC”¶C8´ƒ<„C;üáᄃ<˜C;„Ãá„C;„C;„ƒ<N8ȃ9´C8´C8Nþ8œC;ÈCššC”ÚNÞ˜Ã9´C8üááÈC;ÈC;ÈÃ,Â3èNÞ´CÞ\Ã"„ƒ<´ƒ9äM;ÈC;(ÎáäíÈC;äM;,N8ÈC8ÈC8ÈC;ÈÃáȃ9ÈC;ÈC;˜=|$<ƒAZñƒ"-?üÂÜF?üƒ¶òÃm„ë?ðÃ?hëmðþ„ëý¸ƒðþðÃ?,ÈmôÃ?ðÃ?ðÃýðÃýÇ?,ˆ?(4ðƒ" ÇmÇmðÃ?Ç?,ˆ"…ë‚Ü?ü?üƒ¶âÏ‚ü?ü?܆pà?üƒpü?ü?¬?üƒpüÂä?üƒpü?(?üƒ¶Þ?Üþpü?܆¶þ?ÜO?ðÃ?ðÃmðÃ?ðÃý,ÈýÇ?ðZ-È?,ˆ" ‡"ñCZ-ˆ"ñƒ?(4ðZ…ëYõÂÜ?¤?üƒ¶Þ†pÜO¸æpÜÆ‚Ü?Ü?üÂp?üƒpüƒ¶þ?ü?ä?üƒ¶Þ?üƒpü?ü?àÏ‚ÜpüC¸6Ç?hkþÇ?,ÈýðC?ü?Œ(é–®éž.êòÃpÁA”#0=¤Ã> CÀhH@ШaÀÌ”A”A<ƒ<˜C=ôÀ‹„Œ1ÀÃ< iü‰ÁJ”ÂäM;˜ƒêÈÃáäM;˜=´ƒ<´ƒ9þЃ9 N8ÈC;„ÃYÈÃYäM8 N8ÈC8(N;„CÞ˜=˜Ãà´CÞœ=´ƒ<˜=˜ƒ<„ƒ<´ƒ<˜=äÍáä9´C8˜ƒ<˜= N;„ƒ<„CÞ´ÃàN8ÈC8ÈC8ȃ”Â.ü´ƒ<„ƒ<˜ƒÄ•p´5c7¶cƒ(?ŒD8˜ƒ<Ô/\Œ@0B0B0BäÁäÁ|Á\‚#ÀhÜB:ÔÃ9ô€ èÀ‚ÚÌôRƒÚè9ÐC)|@8´C8˜ƒ;›C;ÈC;uÞ´C8Ž<´C8ÈÃáTw8ÈC;¸s;„ƒ<Ž<þ´CÞ´ƒ9ôt;ÈC;ÈÃá„Ãᄃ<˜ƒ<N8ÈC;ÈC;ÈC;ÈC8ÈC8ÈC;ÈC;ÈÃáÈC8äM;äM;ÈC;äM;õHÂ3èä9„C;<ƒ%07†ç <ä =ôôØŒFÁD8dB”DŒ1@oü̓¬„%|=˜ƒ<ÐC8ÈC8È=˜ƒ<˜C8´C8´C8ȃ9ÈC8äMuçM8Ž<˜7›Cþ8Ž<˜ƒ<Ž9ÈC8´ƒ<˜CÞŽ<„Ãáȃ9„ƒ<˜CO·ƒ<˜ƒ<´C8ÈC8ȃ9äM;äM8´ƒ<„ƒ<˜C;ÈÃáÈC8ȃ9T·<˜C8ÈC8ÈC8ÈC8|À"<ƒ?/=póöÈÃ<Ѓ<̃<¬Ä<È=ÈÃöÐÃ<È=Ì?Ï7ÏCÞÌCÞ̃<¬„<¬„<ÐÃ@Â3èÈ8?ì8½×»½ß;¾ç»¾ïûð ÇP#”#ØADAôÀÕP 7,<7`Ã/¼50¼)””ABDAPpŠ:ÂÀ‚üõÂfQ9¤ äM)|€;‡ƒ<„?›=äþM8ÈC;ÈC8ÈC;˜ƒ<„CÞ˜ƒ<´ƒ<N8ÐCÞ´C8äM8äM8ÐC8äM;„ƒ<´C8ä9ôt8N8´ƒ9ðs8ÐC;ÈC;ÈC;„CÞ„CÞ˜CÞN8äM;ä9¸s;ÈC;ÈC;äÍ@Â3ü„C;ÈC8´Ã"ÈÃ<È=ÈÃ<¸3=ÈÃ<ô4=À7ÓCÞ¬„<ÐCÞÌ7Óƒ<Ð7ÓCÞàCÞÐ<|€%<ƒ¿Ÿ>ê§¾ê¯>ë·¾ë§ÕpÁA(D$<ÕPAPDDÁG|„ppB$D$D8B ¨ŒÀ'Àƒ6¤ .¨ 9¤ .9¤6þÀЃhGžpÚ‘'œvä ‡7yÚ‘'†Ú™‡¡pè1g!Šè GžpäiGžv‘ÇyÚ‘'Šäi'œväiGžpä §pä Gsä ‡!sä Gä=ÈhGžpèigzêÉ—|êq¢ž¼d/¼À‡žz詇ž|y§|èÁ‡žzxÂGžê¡§zêÁ§|ò¥Ÿ yF2’LYå•YnÙå—aŽYæ™i®Ùæ›qÎYçyîÙçŸZ衉Ί~F Â‘<ìà‚þ .¨à‚ .¨àâ‰Ç¾àÂ.ð´c;òpÄŽ<ìÔìÎF8k´±Æb¬!ÆÑJ{TjàƒyJù yÚYÈñæ ‡¡pä Gžv gZyÌ‘§†Â‘'œÇч¢pÄkg¡v gÚpä GžväiGžpÚ g¡pä §iá(yÂY¨yÚ ‡!sä Çœ…ÚYèHžùƒ yÚ‘‡"Iòžž|œˆÞ {†°Ç‹èñÉ—|ò¥§zꡟè驟zð‰¾trá ŸzèùÀeô Éýùïßÿÿ@€4à˜@. tà!A N‚´ þG@…9Øá Txž@…'Pá ùcìÀ…°`èA ¼1‡<,A|Ðõ G=œJ' a/`%>xR|ÔƒèÈÅ-s¡pÐõÀG=ðAzÐõÀ>ê`àƒùÂÇþ ñ =á‚Õ´æ5±™Mmn“›Ýôæ7ÁNqRðhGòÀÃP Tx äô;p0y L4ÃGäÁs8›#’áShf‡ †ÛÜF ·iÃä8âCÅ@y”Âí0‡<±pÐc!á0=äÑŽp´ÃòhG8䎅P$â ‡xÂAy„CíXH;z„ƒ!æXH8äÑŽ…„£ i‡<Ú1p,$ò0‡9ÒŽ§.$òG;Â!sÈ#òh‡<Â!žp´CíG;äÑŽ…x ÊÐÚ!sÈ#‹ÀG=ð½}8aõØÇì1w€¡ÇÄG=Žþ©`DïÀ¨=ð½zà£ôÀGôô± zHö–PFÈ0NÑŽ–´¥5íiQ›ZÕ®–µÿÃǨð…'<á OøÂ¾ð„/ìv·yðíoËß2‚¸¦p„)La ä¹Èu„)ò0‚Lƒ‡Äp[0J£‡>” <±ÄÌ!žvȃ" i‡<ÌÁs´CíXH;±p´CíXH8Ć„Cæ C(ÂvÈ#íG8äA‘pPÄ ‡x(²z˜£ô=ÌÁv<.òÇB±ÞÈ#Ä3ô@sУòhÇ"$=&D•5Žq¾Ô |Ðú=¢±þ `<ƒ'ù:0€a žì¢ø@0ÈñHnQþ|ȹð‡<ò mä‹ÚÈW;ê¡`à#ÀÇ>>` eè `¶øÅ1žqoœãïÊ>ÌaŒœä%/ùLžr•¯\å‡à¡ÛD³]xPc»dà‰%>Ðy´CÙòhÇBÂ!vÈ# i‡<(Âp,¤ ‡<ÌÑŽ…´#O8Òz˜ƒ!á˜V8Úy<5ò‡<ÚÁs„£áG8äy´cZô0‡<("vÈÃíG;èay„Cáø$€ñ2„CáXˆ$ê±|ì#_ûpÂ>ê@xa^D¾öú|©»0=0ÂAèÅû Ç-è±ÃþªèÆ<ê@âz ƒ5|áŸøÅ7þñ‘Ÿ|å/ŸùÍç ?ö!r Tu›6¬¡ 듃äà!6Ào lÖÀ†6ˆá6m Tݾ5‚¡ lhÃä°9à‘ýïÿdÀ‡@ÂAÂa!Â!ÌAÚAÌ!äÌ!èÁÄÚAÌA¡"ä¡¢qÚa!ÚAÌ¡ä!"äÁäÂáqÚAÂAÌ!¦…"¦¥"ä¡ä!ÚA<ÂAþÂ"ä!ä!ä!<žAÈÀä¡ä¡A²ð¡öA•œ€•@ †öòêA€!_ø!_žáð¡ôøar!$+€¡v!ø>žAÈ`+˜²)ò)¡2*¥r*©²*­ò*±2+µr+¹²+½ò+Á2,År,ɲ,Íò,Ñ2-Õr-ѲœÜò-áò-Uøø¡æTææaàaàá/çÁ©Á©È€ä¡>@Â(BÂAÂ!Â'"ä!ä¡ÌAÚAÌA<ÌAÂ!Ú!Ì!ÚA¡¢þä¡Ä£ÂAÂAÂAÚ!Ú!Ú!ä"ÂAÂAÌAÂa!ÚÁÂä!Ú!ä!èÁä!ä¡ä¡â$áô€ ä!xþaøaêaúÁ B¯¼À†ÀÀàðáBoðÁrö!_öáò!_¢áêŽAðáÒ!ôr¡öÈ¡>À”AÈ+A4DEtDI´DMôDQ4EUtEY´E]ôEa4FetFi´Fm+ß+öáàþøøAùá˜øa. ðað!ÿðþæææÿ¨á÷O è,þáÚa!ÌAÚAÚ!ÂAÚAÚ!xCÂAÂAÂa!ÌáqÂ"è!¢‚¡Â""äÁäÁÚ!Ú!"ä¡‚"ä!Ä#Úa!Ú!ÚA(b!¡禅7ä!>`žAÈ`!xcø¡øaøaöÁ úð¡ÆXiêaêVëAh¡öáòì0Àöö!hA´aüaêaô´á áô€ n4\Åu\ɵ\Íõ\Ñ5]Õu]Ùµ]Ë•².æðáøáð.‘t.áÁ°æÁ°àá˜æàæþæ!ÿæÁ©!ÿ¨aÿÈÌ¡> ¢ä"¡ÂAÚAÂ!ÚaÚAÚ!(BÚ!Ú!ä!äÁä¡ä¡ÂA̡䡦%¢¦Åè!ă"ÌAÚAÂAÂa!ÌAx#(bÌAÂa!ÂAÂAÂAÂAÂAÂAÂÁäÁâ áô€ ä!äá© ¡þaø¡ø¡œ€ö+Ž+êáʉVñaŽöáhuþaþ¡ö¡h•—VæøáJAê€ ÜõsA7tEwtI·tM÷tQ—]ùáÊi+ø¡þáþhŽ©œŽ‰Žéh ‹Ž æÁ°ààôo´ôxÉ€êÁ>`!ÂAÂAÌaZÂa!¡ÂAÌ!ÚAÂ7‚ÌÂ!(BÌAÂa!¡ä!ÚAÂAÚ!ä!Ú!ÚaZ("(BÚAÚAÚA<Â""¢¢ä¡ä¡ä¡ä¡ä!ä¡ä¡ÌAÂAÂááô€ ¦Eð¡þaê¡ú¡riêáð¡þ¡Žæêaêáöêáö¡ø¡Žæhµøöáhêað¡øá,áô€ R7‹µþx‹¹¸‹½ø‹Á8Œ¡’²â-ÿ¡œþþøŽŽÆ°øa_‘tð!ÿð!ÿðð0wÿ¨AÿÄ`!JáÂAÚA<ÂAÂa!Ú!¢¢Âä!ÚáqÂÁä¡‚""äÁ¢ÌÚ!ÌAÚ!ä!ä¡¢ÂAÂAÂA¡Âa!ÌAÂAÂa!ÂAÂ"ÂAÂÁä7¢"èa!Úa!>žáÄ@¡ä! áøaøáøVß+ð+ê+êáø+ê°øþêáêáhþ¡þþ¡þþa°b<”AÈ@Œú¡!:¢%z¢)ú¡æäõŽøø°â-ñáhèàá˜àá˜àþþþþþÒ©ÁÉ K-áÂä!ä!ä!ä!Ú!Ú!ÄÃ(B<ÂAÂA¡¢ä!(BÌAÂ!¡ÂÂa¦%ä!ä!äÁä¡ä¡ä¡¦…ÌÂAÂa!Ú¡çÌAÌ!äÁä!"ä!ä!>`žAÈ`!Úa!aøáð¡Žæê+êáÒ+ðáðáêêð!+ðA+êþ+ð+ð!+êáŽæðáh>žAÈ ¢}û·;¸…{¸‰Û*ù+øA+ðáø+øáŽÜøá˜øø¡¤áààá˜òï˜òoàaöoöøôOàAJÁ¢ä¡'ä!ÌÌ¡Â!ÌAÂAÂAÂAÚ!ÚÁÂä¡ä¡'ä¡¢¡¡Ä£ä!èAÌAÌAÚ!Ú!Ú!ÇäÁä!("ä"§ä"ä¡ä¡âJaþ€ Ú!(Âáêa+øáð+ø+ðáðáðþa+Òáð+êáøáðþ!°¢ðáަþ²â,Aê€ naÎé¼ÎíüÎñ<Ïõ|Ïù¼ÏýüÏ=Ð}Ð ½Ð ýÐ=Ñ}ѽÑýÑ!=Ò%}Ò)½Ò-ÝÐM€8v¡ÓiahhaxxvÉLÏô€a€alÌsAraì0vÁ}Ý·!žá–‚¬á€!þ n)È@èÁ>@Â7ä!ä!ä!ä¡§Âa!ÚÂA<ÚAÂa¢äÌA¡ä!Ú!ä!ä!(âqÂAÂAþÌ¡¢Äæ%ä!(B<Úa!ÌAÂa("¢Âa7PÂá áô@ ÚAÚa! áøáêþ¡øáð+ö¶þ²‚°þþ¡°bþþþ¶¢þøÁ áô€ ä5ê¥~ꩾê­þê±>ëµ~ë¹¾ë½þëÁ>ìÅ~ìɾìÍþìÑ>íÕ~íÙ¾íÝþíË +ùáøa+Êéøáø+øA+Žæø!+ø+øá¢þøáŽæàòø èAJáäÁä¡ÂAÚAÚAÚ!ÂAÂAÌÂA(bþ!Ú!("ä¡Â"ÂaZÂ!ÚA<Ú!ä!Ú!"Âä!䡿!"ä!¢"ä!ÚÁäÁèa!ÚÁ"ä¡äÁä"ÂÁäÁâ,Aô€ Âä! þáhþ´¢œêáöáÒ+ðá?~ÿ þÃWß¾üöýÃgð_ºø ò+øÁ’2=bÚyü2¤È‘$Kš<‰2¥Ê•,[º| 3¦Ì™4kÚ¼‰3§Î<{úü 4èLy'åÍ 2ÜÇpòÚÉk'¯<ò‘”Nžzô,yÖØvòÌÉ3®]8yáäþµ+/œ½úõìÛ»?¾üùô㇓NÉpòÂÉKŽ<áÈ\å‘<'…ÖH`µ#ôàSÊó˜C<ᘚ9ôHN;’µ#O8ò˜C<áÈŽdáÐV;`µ#O;ò´#O8p…—Gò´#O8ò´V8¡yþ–9`µ#O;áÈŽGóœcN;áÈãQ8áÈÓŽ9ôÈÓ\í€å%ÏèA†<íÀuÈ?øüÃsüø6oüø†oõøÆs~òs?ÿ äç@¾}°ˆ2z!9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9òþ˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9þò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#9ò˜#sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sþÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈþÃò0‡<Ì!sÈÃò0‡<Ì!sÈ#ò0‡<Ì!sÈÃò0XÌ!sÈÃò0‡<Ì!sÈÃòhXÌ!s´Cá‡9äaŽpÈÃò‡<Ì!s„Cá‡9äa¸˜Cæ‡9äaŽp|D ô‡%>а´, ‡dÂÑy„C G;Ây„ƒæK8$y˜£áh‡<ÌѸ´CáG;äy˜#òX̸´#í‡<Ìáy´CæX–pä6’1X<"pÈ#òÇñ =¡áðˆ<ñ~üƒÿà‡oâ›üƒþ¾ˆƒÿÁðüøÇ@|Ãàƒ9þ?˜Ã@âzƒ8è!sÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃþô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃôþ0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAæ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@þæ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@þæ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@’aô`ô`ô`ô!æ@æ@æ@æ@æ@paòò`ô``ò`õ í[’aôáÐò`ô`ô`õíò@` !!í í`òÐò`ô`ôòÐáà’òò`Ñò`ô ááÐá á í á[íô æ áæ@pá`pÑ`á`òòò`òpòÐáþ í í »ðbæÐÀüðüà'¾ÁÿÀ—éüpüàüàüàüà'üpö–  z@ò`)›³I›µi›·‰›¹©›»É›½é›¿ œÁ)œÃIœÅiœÇ‰œÉ©œËÉœÍéœÏ òð³éò`í@›æíôò`òòò`paòÐô`í ô`a`Aô ¥ð‹` ‹` ‹` –°–°– ‹` ’°: ‹0 ƒ` ‹0 ‹`¡– –°–°–0* ‹` ‹0 ‹` ‹` ’`¡– þ‹` :º– ºº–0–°’ º–°–°–°–`¡–°–࣋` ’0–0* 6j£ Ï dpÑ‹À™¾ÁaJ¦~Âeêqüàð z@òÐòòòòòòòòòòòòòòòòòòòòòòòòòð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûðþ Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûþð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð þÛð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûðþ Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ûð Ñð Ñ Ïð Ûð Ûð Ûð Ñð Dý ×° F½ ϰ ϰ F½ Ñ`ÔÑð Ñð Û`ÔÛð Ñð D Ûð ×@ÔÏ Ï@Ôϰ Ï Ï€ÖÛ`ÔÛð DþÍpæ õ ¥ðZÒá`í %áÐç ípáÐç@ÙòÐç qá á ”-q`qáàáÐçÐæ ípò`ò %í`Ñæàá qáàá çðáÐáÐ‹Ýæ íí %òÐá á ípæp¡ò𥠠z@òíí°ÇÞé­ÞëÍÞííüÞüð’ð @á í²Ѱ’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°þ’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°þ’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’þ°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’°’‹$-’´HÒ"I‹$-’´HÒ"I‹$-’´HÒ"I‹$-’´HÒ"I‹$-’´HÒ"I‹$-þ’´HÒ"I‹$-’´HÒ"I‹$-’´HÒ"I‹$-’´HÒ"I‹$-’´HÒ"I‹$-’´HÒ"I‹$-’´HÒ"I‹$-’´HÒ"I‹$-’´HÒ"I‹$-’´HÒ"I‹$-’´HÒ"I‹$-’´HÒ"I‹$-’´HÒ"I‹$-’´HÒ"I™-I²d)ó"I‹2K²$©³¤E£IZ4ZÒ"K™-I²ä:³%I–$YmɶkK’,I²dÛ’¤á䉣׎ =z–>È“Žº9êòÂÉ ×Žz»ìáÚQ7×®õpòÚQ'/œ¼pæ²›£n.{8yíä…Ë.Ï|8yÌËÎs²3Gžpäiçþê‘§þä §þÚ¡®yÚ‘ÇêÂi'y‘'œ,F2"\äŸÌsñEc”qÆ©ƒÑœ yF2Ú‘gžpä Gžpä Gžpä Gžpä Gžpä Gžpä Gžpä Gžpä Gžpä Gžpä Gžpä Gžp²»Fã”sN:ë´óN<óÔsO>ûôóO@tPB 5ôPDUtQFuôQH#•P~þáP~þá§N~þáç~þá‡:ùa‘Ÿ9ëù§þȘGžR>ˆPžvú3GžvÌ.y‘§s²k'œì‘Çzäi'sú3/yÌëÏyÌ“§þy‘'œìÌ‘Çz¨k'yÌ¡®sä1ÏœìÚ GóÌ1/y¡';sè §? Q¦2ä Gžp±„EVXay4/»yæ1ä §y‘§yÚ‘§yÚ‘§yÚ‘§yÚ‘§yÚ‘§yÚ‘§yÚ‘§yÚ‘§yÚ‘§yÚ‘§yÚ‘'œh$ù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøùþ‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿøù‡Ÿðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüþø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüøþ?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüøþ?þÁðãüø?þÁŒêüøÇ¨âÄŒêüøÇ¨XÄ8ñã£â‹øÁ"~üƒÿÕ?øñ~üƒÿ‹øQ'~üƒÿàÇ?FÅ"~üƒÿ¨?äaŽpÈCb =,ñp˜'ò‡<ÂažYµ#íG8¨cy„Ã<ÔiG8Ú‘vD¨á‡9²Óy„Ã<áG8äaŽpÈ#ò‡<Â!óD(ò0GvÌ!vÈ#í Ž9"Ôê„£ ‡<ÂñKaNa^ana~aŽaža®a¾aÎaÞaîaþáæ‡zø‡pÈŽy ƒ+…hy‡vs‡p Žv@ÁpÈs‡vyhs‡p0yêhsÈŽv Žvyyh‡p‡p sÈŽv Žp‡vÈŽp‡v‡p‡phyh‡ìhs ‡v‡vs ‡ìh‡ps‡p Žv‡v Ž€eþÐ2zyK`‘v‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡vès Žpè„gÐ1pêX†8di@¡d y¨†‡|@‡v@‡o€_‡v†èp‡ps‡pˆI`~‡àw€p‡x~ȇfX€~ø‡~‚ 8€rè‡u€8€wøw€p‡È‡è‡u8€Ї(‡Qiøw€p‡È‡à‡u ~Їxib¤Njþ¥^j¦nj§~j¨Žj©žjª®ê®‡‡pqh1è0Køsz0y¨s‡vsyy‡v‡p‡vÈŽv‡v˜êhy ‡p‡ph‡ìy0yêyêhêhyhy‡v‡p‡p0yyyhyhz0‡phyê sy0z0z0êyhy0‡iyó‡pøH= ƒvÈŽvX„à‡p‡v‡v‡v‡v‡v‡v‡v‡v‡v‡v‡v‡v‡v‡v‡v‡v‡p‡v‡þhþyy‡v0‡X„gø2s‡vdsh‡d@€p‡M¸ˆp‡j€v‡j€v‡jy¨† §yhyz0yhyh‡gá‡u~`øwá‡u€Qù‡uà‡‡à‡ð$è€pøv~`v€`‡`~`øw€`à‡àw€~``~`°j9Ÿs:¯s;¿s<Ïs=ßs¥æ‡zøyyh‡v ƒ+… yXôvXtyz‡v‡p yy ôpBþyh‡p‡vptG‡vyyhyRyh‡ps‡vy0R7yGyyhGyyhR'õvXtsh‡ppôph‡p0G7G÷KP=ƒv‡p ôE`‘E'ts?wtOwu7wGo‡Eo‡p‡p‡v‡vpô€eÐ2XôvyXXôjByP¨„ydq¨†hy¨†Xôj€v膆vGyhRoy0‡h„8èv€`x‡à‡fX€è"jè‡u€Qù‡qþ~`àwáv€Їx‡à‡f€`àw€8aà}€wø~hXaµ_{¶o{·{¸{¹Ÿ{º¯{»¿{¼Ï{½ß{¾ï{¿ÿ{Àázø‡v s‡vƒ³„ tyhyyyh‡e‡Eo‡Ey0y‡vXtsh‡p‡p‡pXöe‡vpts‡v‡pXöph‡eo‡e7‡v‡vpôp ôE‡v‡p˜s§spôp szy0yy‡€„gø2‡E7zX„à‡p0y0y0y0y0y0y0þy0y0y0y0y0y0y0y0€®]8yá䵓N^8sòÚµ 'ÏÜHÏôigŽ^;yÈ„“nçºÝ‹òª ×®š€v᪠'® qáÐÁ¡®[ŽpíÂÉ 'OÞ6IÿžŽ À€~îøÈ§Ä~ü¼tÈhA¾q¼ÆC²€Ÿ;ÿØ xÊ€§'¬ðûׂÀ?wþ±ðô;ÿøð‘σCŽ,y2åÊ–/cάy3çΞ?ƒ-z4éÒ¦O£N­z5ëÖ®_?æW_;yíäÉ#CO^©æäµ '/½vòµ '/þœ¼váÌáŽ=\;yæè…“N^»píµ =œ¼vÑÛÉ '¯]¸vòÌÉkN^8yáä…“w;xíÂIN;¸µ#O;áÈcNtáH× níàö$ÊèAníÈŽ%OE7Oƒó48Oƒó48ƒíÈŽ<íDGO8ò˜Ý’󇸵ƒÛ2àF: O;oPðY N5È#N5@TMòУ ð@æÐ3 âàÖnáD#ÉSü¬?îÀ;¼@ðó/”ó?-Ô° @ ÔðÃŽü°#?O¹#À?ü܃‚d!?ìÀ;þ<Å;ò’Ÿ<å+oùËc>óšß<ç;ïùσ>ô¢=éKoúÓ£>õª_=ë[ïú×Ã>ö²=?äyˆ£b ‡<,ñy´MáhG8Úy„CþíG;äé„£ò‡<›pÈÃò0Ç<Ú›pH'íG8p‘pÈÃáh‡<Â!s„Cæ€H8æpÈ#¸1G;Â!sÈC8DG8´ƒ<´ƒt´Ct@„<˜ƒ<˜ƒ<´ƒ<„ƒ<„ƒ<„Ã,Â3脃<´ƒ9ÈÃ"ü?„C;D‡9ÈÅȃ9ÈÅȃ9ÈÅȃ9DG;„C;„ƒt@D8ÈC8ÈC;„Å„ƒ<˜ÃXÂ3èÈC8ÈC;„Ct´C8ÈC8ÈC8ÐC8ÐC8Ѓƒ„ƒ<@Dt´C8@D8ÈC8˜ƒ<˜ƒ<´ƒ<˜=˜CtüƒæÈáÒaÚáþâáþCòaúáb â b!â!"b"*â"2b#:â#Bb$Jâ$Rb%2âSÈC8àF;=ÀC)|€t˜=˜=„ƒ<„ƒ<„ƒ<„ƒ<„ƒ<„n˜n´ƒ<´C84D„n„ƒ<„n˜n´C8˜n„=àF8HG;ȃ9àF;„C;„Ct´C8ȃ9ÐC;DG8ÈC8àF8ÈC;„C;„ƒ<´C8PL8H‡9àF;ÈC;àÆ@Â.üÈ=˜ƒ<„ƒ%<…<´ƒ<„n„ƒ<˜Ct„ƒ<˜Ct„ƒ<˜ƒt„ƒƒ´C8ÌCt„ƒ<„Ct˜ƒt|$(ƒA;ÈþC8àF8´Ct„ƒ¿„ƒ<^t˜C;ÈC8ȃ9Ѓ9àF;ÈC=˜ƒ<„Cƒ„C;ÈC8^P åPeQåQ"eR*åR2eS:åSBeTJåTReUZåUbeVjåVreWzåW‚eXŠ%áÉC;à†8´ƒÐC=X„Ã+у9ÈC;à=„ƒ<´n´ƒ<˜C;HG8@„<˜ƒ<„C;ÈC;HG8´ƒt´Ct´n„ƒƒ„Cƒ„ƒƒ@Dt´n„n˜Ct„n´ƒ<˜n„ƒ<´ƒ<„áÉC8|@)ƒA;DG;,Â?ðƒ<„ƒ<´n´ƒ<´C8àF;ÈC;„n´ƒ<´C8þ´C8ÈC8˜ƒ<„ƒ<„Ct4˜t„ƒ<´ƒ<´Ã<„ƒ<˜Ã@Â3èàF8DG;„Ct@D8ÈC8à†9ÈC8ÈC;„ƒ<„n„ƒ<´CtPŒ<´Ct„ƒ<@n´C8DÇX"h‚*è‚2hƒ:èƒBh„Jè„Rh…>h8˜ƒ<˜n´àF)|@8ÈC8ÈD„ƒ<„Ct˜ƒ<@„<´ƒ<„ƒ<´Ã<„ƒ<„ƒ<„C;DG8HDÌCƒEG8ÈC;„ƒ<„C;„ƒ9ÈC;ÈC8´C8´C8DG;„ƒ<´ƒ<„Å„ÅÌC8ÈC;„n@n„n„ƒ<´Ct´ƒ<„ƒ9àF;˜ƒ<˜Cþt|À"(Ã<„Å,ÂS„n´ƒ<„C;ȃ9àF8´ƒ<˜n„C;ȃ98H;ÈC8ÈC;„ƒt„C;àF8ÈC8@„<´Ã<|€%(ƒA8´Ct„Ct„ƒ<˜n´ƒ<@„<˜n˜ƒ<„n´n˜C8ÈC8@„<„ƒ<„Ct„ƒ<˜C8´Ct„ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜þƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<þ˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒþ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜þƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜CtЃ9àH‹%|€<„ƒ<„Ct´ƒ

á„^˜á†~âˆ%ž˜âŠ-¾ãŒ5ö—žpŠ 2œ"Ûƒz,ù œvš4þGžvæ ² E–ÇœpÚ1§yD²yÌ‘§ Í 'Hsš4'œv‚4ÇÝpŠ8y‘'œvä)Ržv‚ GžpŠ ²yÚ ²zÌ 'Èvä Gžpä Gžp<ä=ȇž ÛYä~äiGžpä §yÂi'œv‘'œvÂ)ržvä1ÖÝvÂlGžvÌi2s‚4Gs>ä™?ÈÇÝvÂiÇy Ҝ Íi2œ"Í‘ÇyÂi'y‘'y‘Çz 2œ&Ã1Gžpä Gžpä Gžpä Gžpä Gžpä Gžpä Gžpä Gžpä Gžpä Gžpä Gžpäþ Gžpä Gžpä GáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CþáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CþáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáþG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8ÂŽvì‰ ôG)> pÈ#ôhG8äy´#í0‡<ÌÑ$sÐCE G;ÂÑs„)M2GЦp4)íþG;¤v„£áG8äŽv)aj‡<Œ%sÈÃòh‡<Â$sÉòhG8D$‘©òh‡<Ú¤@Bu CÂQ¤EüãáG;äÑŽ µÃ_á=ÂÑy„£ò(’ HÚ!Ú!ä!ä!ä!‚¤äaÂAÂAÌš¤Â!HÚAÚAÂAÂÁèÁäÁè!Ì!HÚ!HÂAÂA¡IÂAÚ!HÚÁÂ$èaOÂAÂ!HÂAÂAÌ¡ÂAÚAÂAÚaÚAÚÁ‚Äè!HÌAÌ¡I>ÀžáÈ HÚAÂÁ ®IÚ!HÌ!HÂAÚAÚAÂA¡IÂA¡ÂAÂAÚ!HÌ¡æ¡ö‚$èÁè!šäáþ€ ú%þäÁèÁÂÄö$š¤ä!äÁ‚Ä‚„ÌA¡ö$ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡äþ¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡þä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡þä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡äþ¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡HÂ$‚¤Ì¡ÄA JÆ> „ÌaO¡H¡ä¡Â$ä!š$ŠDÂ`¡ä!ä!ä!ä!ä!ä!ä!ÚAèÁ¡š$ä!ä!è!ä¡Hš¤š$ä¡‚ÄäÁ¤‚$ÚÌAÂAÂÁþ$ô€ ÂÁ‚¤áø!ä¡Â!HÚ!LÂaOÌ¡ÂAÚ¡IÂ!HÌaOÌAÚÁä!Ü%äÁ>žAÈ ä!ä!ä!ö%ä!‚¤Hä!ä¡ÂAÚ!LÚ!HÚ!ö$ä!ä¡ä¡ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!þä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä ÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼þpòÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼pò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8òþ„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8þò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò´Ž<áÈ#O;áX¬1ôÈSÊá´N;íXLr8[LòÊí„#O;ò„#O8›cq;áXŽ<íÈÓŽ<í„“òÐò´£q;ò˜#O;‡#O8ò´#O;·#ÉáÈcŽ<áXŽ<áXÜŽ<í„#O8òLt; É3zañÊ‹üóÏ"–X²ˆ%ƒX2ˆ%ƒX"É –,bÉ"‹X" â–,b‰$‹ä=ˆ%‹X‚xÞ‹X" â‹X²ˆ%‹äý$ÏèA†<íÈÓŽ<íÈÓŽ<á,O8ô„cq8ò˜cNþÊáÈŽ<áÌCr8‡ÓŽ<áÈÓŽÅæ„#O8ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡þ<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<þÚ!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Úþ!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!vÈ£òh‡<Ú!þvÈ£òh‡<Ú!pX,òG;,y„Câ=èa‰ÐÃ3‡<Â!sX,í‡<ÌA2y˜ƒhí°X;äŽvh,ò‡<ÂÑy„Ãbí‡<Â!pÈ#$“G8äa‹…ƒdòh‡<Ú¡±p´Cá‡9Â!sÈ£)k‡ÆÚ’Y,í˜G;äŽv„CáG8äŽ@â ÉÂay,Ânvã‡ÈEþ~üCäÿàG?@þ‘ÿC ñˆy2ŠÀð£ÿà‡Ýøñ‘»CÿàÇ?øa7~|ÏÐÌ!sÈ£áG8,F2µƒhí‡ÅÚ!þpÈceò‡<Â!shÌò=äazXŒep»ÜçN÷ºÛýîxÏ»Þ÷Î÷¾ûýàOøÂþðˆO¼âÏøÆ;þñg¼Å‘2sh,ôÐv]ŠXÌòhGÊÚ¡±vÈÃòh‡˜óiÎg;Ÿí¬†“N^8Ÿíè™ ×N^;Ÿá|š ×Îg;Ÿáä…³ÚN^¸vá|†“Nž9yá‚Z•gN^8yáÚÉ '/œ¼pô̵ó®Ý¼vò̵£N^8yíä…kç³¼vò•N^¸€é!N^;sòýÃ[÷nÞüŽôœZ/jÁäî7.?vú ÀïŸ?$ =ÓCÆœ¼vóÚÉ '/\»píÂþÉkN^;yáä…“¿]¸øç¬ÊkÎj8yáäY/œøÂ¡'¾øÂ¡'zâ ‡žpè‰/z¡'¾pè ‡žøÂ¡'zâ ‡žpè‰/z¡'¾pè ‡žøÂ¡'zâ ‡žpè‰/z¡'¾pè ‡žøÂ¡'zâ ‡žpè‰/z¡'¾pè ‡žøÂ¡'zâ ‡žpè‰/z¡'¾pè ‡žøÂ¡'zâ ‡žpè‰/z¡'¾pè ‡žøÂ¡'zâ ‡žpè‰/z¡'¾pè ‡žøÂ¡'zâ ‡žpè‰/z¡'¾pè ‡žøÂ¡'zâ ‡žpè‰/z¡þ'¾pè ‡žøÂ¡'zâ ‡žpè‰/z¡'¾pè ‡žøÂ¡'zâ ‡žpè‰/z¡'¾pè ‡žøÂ¡'zâ ‡žpè‰/z¡'¾pè ‡žøÂ¡'zâ ‡žpè‰/z¡'¾pè ‡žøÂ¡'zâ ‡žpè‰/z¡'¾pè ‡žøÂ¡'zâ ‡žpè‰/z¡'¾pè ‡žøÂ¡'zâ ‡žpè‰/z¡'¾pè ‡žøÂ¡'zâ ‡žpè‰/z¡'¾pè ‡žøÂ¡'zâ ‡žpè‰/z¡'¾pè ‡žøÂ¡'zâ ‡žpè‰/z¡'¾pèþ ‡žøÂ¡'zâ ‡žpè‰/z¡'¾pè ‡žøÂ¡'zâ ‡žpè‰/z¡'¾pè ‡žøÂ¡'zâ ‡žpè‰/z¡'¾pè ‡žøÂ¡'zâ ‡žpè‰/z¡'¾pè ‡žøÂ¡'zâ ‡žpè‰/z¡'¾pè ‡žøÂ¡'zâ ‡žpè‰/z¡'¾pè ‡žøÂ¡'zâ =ÂAø„ƒá G|ÂApÐ#>á G8èŸpÐ#ôˆO8èzÄ'ô=âz„ƒñ =ÂAø„ƒá G|ÂApÐ#>á G8èŸpÐ#ôˆO8èþzÄ'ô=âz„ƒñ =ÂAø„ƒá G|ÂApÐ#>á G8èy„ƒñ ‡<Â!¸ÌÃ@ñ!C|Jñµ#ò‡Uàaz„ƒá G;ä1vÄÇòhG8âcµ#òG;äÑŽø˜Ã@æ G8âz˜CíˆO;Âay„Ã@íˆO;äÑy„ãV‰O;ÌŽ7¾±ò0‡<Â!p(ò0G|ÚŸ@Bzƒ<èay„üf4ùq„àT³šGÀ ?þ±ðÃøÇ:€ `°Ä3ô@y˜#íG;èz˜ƒæˆ9äyþ´Cí0P8 dy˜cµ¤G8äay„£ñiG|Â!pÔ2µ G-ÃQËpÔ2µ G-ÃQËpÔ2µ G-ÃQËpÔ2µ G-ÃQËpÔ2µ G-ÃQËpÔ2µ G-ÃQËpÔ2µ G-ÃQËpÔ2µ G-ÃQËpÔ2µ G-ÃQËpÔ2µ G-ÃQËpÔ2µ G-ÃQËpÔ2µ G-ÃQËpÔ2µ G-ÃQËpÔ2µ G-ÃQËpÔ2µ G-ÃQËpÔ2µ G-ÃQËpÔ2µ G-ÃQËpÔ2µ G-ÃQËpÔ2µ G-ÃQËpÔ2µ G-ÃQËpÔþ2µ G-ÃQËpÔ2µ G-ÃQËpÔ2µ G-ÃQËpÔ2µ G-ÃQËpÔ2µ G-ÃQËpÔ2µ G-ÃQËpÔ2µ G-ÃQËpÔ2µ G-ÃQËpÔ2µ G-ÃQËpÔ2µ G-ÃQËpÔ’áG;äy„Cóh‡<Â!pÈ#ò‡èAK| ó0P;âcŽZÊ£ò‡<ÂñFsÄ'ó°Š<ŸvÈ£ò0‡<ÚŸpÔ²ol‡<ÂQâpÈ#ò‡<ÂñÆp´Cæh‡<Âa vÈ#ò‡UÂQËvÄ'í0P;äy„ã¥PÆÈеcþÑ„³nø!„j†¢¡¨& rÓq ì@?Æ~ôÃHø$ž¡2(òhG‰ßyX%í‡<ÂÑsÈÃôG8Â!pXEíG;æÑy´#òG|Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#þò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#òþ‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#òyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyþyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyþyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy‡øhy± s´ø z€‡Rø€v5yh‡pˆ«yy0i‡p«ˆvˆp‡v‡ps‡v˜«‡pˆp‡p‡p‡¸sˆv‡vyyhyzhyy y0i‡ps‡pxþ£ph‡p° s‡p0p°Šp‡vˆX„gÐ2‡pˆ‹Eˆ³8ã°PàÏ^àÏÿäÏà‡ÜXøw€X‡à~ð‡qøHx†?«0s‡p‡p‡p‡p0psˆLyh ‡ø0y0‡p0‡ø‡øhy‡vx#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7þ¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡þpx#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡px#z‡7¢‡p¨¥vˆp‡pˆp°Šøh‡p‡vy«z¨Iø€72‡ø‡vˆv‡vQ3vs‡p‡p0sh‡72yyy‡vˆz‡ø0s0þvy‡øh‡ø0‡vˆshzyy‡ø ‡phsˆvx£v‡vx#s‡v0p‡v0v‡pø€E= 1yX„û„3~ø‡Ð æOÈ~‡àv€~à‡~ˆ$øIx= ƒv0‡vyhyhyhyy‡ yyy°Šp‡vˆv´s‡psx£p‡p0v«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆvþ«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆvþ«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆþv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv«ˆv‡vy‡vs ‡vx£p° y0‡øhyyh2z(‡p0pˆp‡¸˜‡øÈ^y°Šyz‡ø‡v0ph‡p0vx£v‡ø°Šøhy° yhyy0‡7² y0‡7j‡ø° y0zy°Šp‡pþˆs‡p0v0y‡v‡v‡p‡v0ù€RP= ƒp‡p‡p°†3~XC àP0„P0„ø~Àu€pà‡q§@€ øHP†? s0¸°ŠZj‡p‡p‡p‡v‡p‡ph‡ø0yy0‡ph‡pˆp´p‡p‡p‡phy0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ þy0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0þyˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆ y0yˆv噓'°hGsäi§Ùpä §YzÌiGžpÚiVsÚ‘'œvì•'dí5Gžpšmgyþµ7yÚi6zÌ‘Yy‘'yÂiGžpú•§yÚ‘'œfÃiGsìmGžpÚ §yè1Gžpšm'œŽÃ‘'œ yF2 ÇyùÇ裑NZ饙n:i~>€=ȰwžvþiÇyíÙp:n6œ~‘•'yÚ1G¯Û G¶áîZI®Ûî»ñÎ[ï½ùîÛï¿\ðÁ /ÜðÃO\ñÅoÜñÇ!\òÉ÷n§ÙpäiÇ^dí Gžpè‘§y•'y±»2ð1§”Âi¶pšmGžvú ÇÞvÌ‘Ç{‘ Ç^säi'yÚ‘'y §ÙpäiGžpþä §csä Gžväi§Ùpšm'y‘'y‘§púE6s:§Ùväi'œfÃAÖœfÛiöHžñ1ô+–pÚ˜@¤ñã–P†È p„Yÿ0G³Ì!sÈÃò0‡<ÂÑŽp´#æ0‡<ÚŽv„C&l–9äy˜PæG8äay˜Cæ‡9äaŽpÈÃȲ„<Âa %.‘‰Mtâ¡E)NQ‰ò‡<ÂAE-n‘‹Z G;äŽ.Ž‘Œe¤b8ä1A3®‘k G;äŽ6Ž1ò˜àñ˜Ç6†CÔãYFy„CáG8äy„CáG8äþy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„Cáh‡<ÂÑŽfµCá‡9%pÈ£òh‡<Ìy˜£ö G;äy„Yò =êa‰4+Í ‡<ÌÑy„£áhG³ÚŽŽ…£æhV8Õ¯vô+Íj‡9äþy´Ã^áG8äÑŽ~™CæG8šŽf…CíG;:Žv„Cæ°W8Ú{…£öBV¿Ú!pÈ#XÄ3þ@†pØ«‹Pà_›4~| ÏÐ셬ȣò0=ÌA°™ƒ3=ÌAfµÃ^æ¨GÇÌAsÐÃô0=ÌQy˜ƒæG;,!IœYçhÇ9άs´·È:G;p‹¬s´·È:G;p‹¬s´·È:G;p‹¬s´·È:G;p‹¬s´·È:G;ÎÑŽph"ôÄ9uŽvàYçhn‘uŽvàYçhn‘uŽvàYçhn‘uŽþvàYçhn‘uŽvàYçhn‘udÉÃá‡$p‹¬s´·È:G;p‹¬s´·È:G;p‹¬s´·È:G;p‹¬s´·È:G;p‹¬s´·È:G;p‹¬s´·È:G;p‹¬s´ãÈ’‡%š%‰s´ãíÀ-²ÎÑÜ"ëíÀ-²ÎÑÜ"ëíÀ-²ÎÑÜ"ëíÀ-²ÎÑÜ"ëíÀ-²ÎÑÜ"ëíÀ-²ÎÑÜ"ëíÀ-²Î,yX"òn‘uŽvàYçhn‘uŽvàYçhn‘uŽvàYçhÇ9%K4KçhÇ9Ú[d£¸EÖ9Ú[dþ£¸EÖ9Ú[d£¸EÖ9Ú[d£¸EÖ9Ú[d£¸EÖ9Ú[d£¸EÖ9Ú[d£¸EÖ9Ú[d£ç@–<,Ñ,Iœ£çhn‘uŽvàYçhn‘uŽvàYçhn‘uŽvàYçhn‘uŽvàYçhn‘uŽvàYçhn‘uŽvàYçhn‘uŽvàYçhn‘uŽvàYçhÇ9ÚM´CáG;äÑy„CíG;äy´CíG8äÑy´CáG;äÑy„CíG;äy´CíG8äÑy´CáG;äÑy„þCíG;äy´CíG8äÑy´CáG;äÑy„CíG;äy´CíG8äÑy´CáG;äÑy„CíG;äy´CíG8äÑy´CáG;äÑy„£YáhV;ÂaŽf…Cæè—9äÑŽ°Í# G³ÚyA\¥ð@³ÂѬv4«ö2‡<Âaz káèW8ìey„£áG8Ú{…ÃôhV8äÑŽp4+ô‡<¡Â!lÚ¡YÂÁ^ÌAÌA¡¡nä!ìÅÚ!äÁä!äÁä!Ú!%䡚å aôþ€ š%eæa0epiðøÁáô@ ÂAÌAÚäÁÚ¡YþAPtÀT@òa&¡ °cÂAÂÁ^ÂAÌ¡ Ð^Ú¡cÂA$¡vánanaváhaÔ@ vÁ wáÔÐ wáÔÐ wáÔÐ wáÔÐ wáÔÐ wáÔÐ wáÔÐ wáÔÐ wávv!İvÁ wáÔÐ wáÔÐ wáÔÐ wáÔÐ wáÔÐ wáÔÐ wáÔÐ wáÔÐ wáÔÐ wáÔÐ wÁ saİÔÐ wáÔÐ wáþÔÐ wáÔÐ wáÔÐ wáÔÐ wáÔÐ wáÔÐ wáÔÐ wáÔÐ wáÔÐ wáÔÐ wáÔÐ wávn!nA ÛananA ÍpnA ÍpnA ÍpnA ÍpnA ÍpnA ÍpnA ÍpnA ÍpnA ÍpnA ÍpnA ÍpnA ÍpnA ÍpÌ0vA ÛA ÍpnA ÍpnA ÍpnA ÍpnA ÍpnA ÍpnaháráİváváÔÐ wáÔÐ wáÔÐ wáÔÐ wáÔÐ wáÔÐ wáþÔÐ wáÔÐ wáÔÐ wáÔÐ wáÔÐ wáÔÐ wáÔÐ wáÔÐ wáÔÐ wávn!nA ÛananA ÍpnA ÍpnA ÍpnA ÍpnA ÍpnA ÍpnA ÍpnA ÍpnA ÍpnA ÍpnA ÍpnA ÍpnA ÍpnA ÍpnA ÍpnA ÍpnaharÁú%:&:&:&:&:&:&:&:&:&:&:&:&:&:&:&:&:&:&:&:&ú%š%š…¡ú%þEÂA¡ä!ä!ì%Ú!Ú¡YÂÁ^Ä@\,á䡚%ä!äÁä!:fºFÂAÂÁ^EÚÁ^ÚÌAÂAÌ¡YÅ^Ì¡YÚ¡_èÁäYÂA¡ä!Ú¡YÅ^ÚÌAÂAÂA¡Y¡YÂ!lÚAÚ¡cÚÁ^ÚAÂáJô€ ÂAÚÁäajðQ¦â êRe>@žáÈ èÁÌAøÁ^ÂA° Ì`  *alÁòáÞ!&¡ÂYä¡ä!Â&ä¡ÂAÂAÂAÂAE¡ÂAþÚA Íh!€¡Zia€A þA €rª•€!h¡Zirª•€!h¡Zirª•€!h¡Zirª•€!h¡ZirrárA ÅЀr¡Z€!h¡Zirª•€!h¡Zirª•€!h¡Zirª•€!h¡Zirª•€!h¡Zirrv!ÄЀ€!hA€!h¡Zirª•€!h¡Zirª•€!h¡Zirª•€!h¡Zirþª•€!h¡Zirª•€!h¡Zirra€ar!ÄЀ!$–€!h¡Zirª•€!h¡Zirª•€!h¡Zirª•€!h¡Zirª•€!h¡Zirª•€!h¡Zirª•€!€!harA Íhrª•€!h¡Zirª•€!h¡Zirª•€!h!vv!rÅЀ!|À ¬À Ø€ÓÀ Ò Ó €rAbirª•€!h¡Zirþª•€!h¡Zirª•€!h¡Zirª•€!h¡Zirª•€!h¡Zirª•€!h!vv!rÅЀ!$–€!h¡Zirª•€!h¡Zirª•€!h¡Zirª•€!h¡Zirª•€!h¡Zirª•€!h¡Zirª•€!h¡Zirª•€!h¡ZirraranÁ¡ÂAÂA¡ÂAÂA¡ÂAÂA¡ÂAÂA¡ÂAþÂA¡ÂAÂA¡ÂAÂA¡ÂAÂA¡ÂAÂA¡ÂAÂA¡ÂAÂA¡ÂAÂA¡ÂAÂA¡ÂAÂA¡ÂAÂA¡ÂAÂA¡ÂAÂA¡ÂAÂA¡ÂAÂA¡ÂAÂA¡ÂAÂA¡YÚ¡YÚAÚAÌAÂAÚ¡YÌ¡YÚ¡YÚAÚ¡YÎ!úYä!ä!ä Ä¥<Àä!ä¡ä¡ä¡ä¡æ!ä!ÚÁ䡚%ä!ä!äÁ䡿!¥_¡Yº&þä!š%ä¡ÂAÂÁ^Ì¡Y¡YÂAÌAÂA%ä¡ú%è!ä!š¥š%ä!ä¡ÂÁäÁä!ä!䡿áÚÁìåAô€ äÌAÂÁ,•ë p;¾àQÙAþàhøá Aô€ ú¥þ!Eè! ‘ÐŒ@|@|àTOÕäYäÁÚ¡YÂAÂAÚAÂÁ^ªAì%ÚA¡_ÂA‰äáÔÐ oA ÕÀüá Õ@ ÍpnA wáváüváüváüváüváüváüvþá\ !”HnA í{nA ÉÀ œàÔÐ wáüváüváüváüváüváüváüváváha€a”HÔðhAô[nAÀoanAÀoanAÀoanAÀoanAÀoanAÀoanAÀoanAÀoanAÀoanAÀoanAÀoanáÃoÔP‰äA í{nAÀoanAÀoanAÀoanAÀoanAÀoanAÀoanAÀoanAÀoanAÀoanAÀoanAÀoanAÀoananþvvA‰äA oAÀoana”¡¡nAÀoanAÀoanAÀoanáÃoÔP‰äaž   m¡„´´aö`nA í{nAÀoanAÀoanAÀoanAÀoanAÀoanAÀoanAÀoanAÀoanAÀoanAÀoanAÀoanáÃoÔP‰äA Í0ŠAŠAváváüváüváüváüváüváüváüváüváüváüváüváüváüváüþváváv!vrAèÁäAè!èÁúžÂÌ¡ïé!èÁúžÂÌ¡ïé!èÁúžÂÌ¡ïé!èÁúžÂÌ¡ïé!èÁúžÂÌ¡ïé!èÁúžÂÌ¡ïé!èÁúžÂÌ¡ïé!èÁúžÂÌ¡ïé!èÁúžÂÌ¡ïé!èÁúžÂÌ¡ïé!ä¡äÁÚ!ä!ú¾ýÃa¥ýÍAÂAÂA¡ýå!ä!ÚA¢¼vòÚ‰¡GÏÒyíäÉk'/ܼvòµsˆQž¹ví0¶Ëþ®CsíÂaäØNž9zᆓÎa;y(¶s.c»yÃq —1c8yáÚÉk'¯]ÐvòÚÉ gN=sòÂÉ ÷¡Ô3=dÚal·èŸØ±dËšƒ6T¨>U¤Ø@ W ?±ãðÓ§‡;cù}€ôL™vòÂÉkÇÏá¼pòÚ¼{üX\¾wó çk#¯ZÛ¡+@^8Œáä…“§NO8‡æ0†“×N^;I’Âå–+70`j²ÙsçÎ^65¹s+žò\ÀŠã0`9°åÀ–ËÝI@.`¹€å¶+<íp¹€-–‹Öu€-¶Ør`Ë-¶Ør`Ëå  0þ»Ð&On»ä‚‡>úàÌrÀ,Ìr€0˳0˳0˳0Åu"0¹“Û-»ÝB[;À,ÌrÀ,ÌrÀ,ÌrÀ,ÌrÀ,ÌrÀ׉À,ÌrÀäÞ-ÀìB›<¹³0´ìÈ,<³0˳0¹“Û-»ÝB[;´ÐbE›nº™FXìaÅ.¹³0˳0Åu"0˳0˳0˳0˳0¹“Û-»ÝB[;À'J>ûðÃO1¹³0˳0Åu"0P0¹u"@.À,ÌrÀ,ÌrÀäÖ‰¹³0˳0¹³ þ0·Ð²‹$q”Gq”Gq”Gq”Gq”Gq”Gq”Gq”Gq”Gq”Gq$O;ædÔŽ<ápFáÈN;á`ÔŽ<íÈcŽ<ÉÓŽCá˜#O;á8D=ø”ò<í„cŽCí„ãP;ò„#O8ò„#O;ò´Ž<æÈN;á8ŽCæÐŽ<(q„Q;…#O;áÈÃÑ<áÈNFá N8™ãP8ò´Ž<áÈŽ<íÈcŽ<í„#O8…ÃÑ<ædÔFí8ôÁ"»ü!†<á ´ÈX~ÿ øX6BMá†NÍ)ˆÅÏ:ðó?ÿ¸#?bñóþÁ"ÏüA†<áÈN;ü´Gò ‘O>û¤Îzêü¤ÞF;ÈPÁ/áÈs‡´ãP8í`Î9æÈŽ<ô˜#O8™Ã‘$–È^ô»Ð¢Æ8Ù¬ƒý:Ù¨% (r‹ôÒ¯2€"¹I‹ù·˜Kxž°Ë-Ñß² 0¹Hb‰<»Üb¾ð ‚ø-vq‹[ìb0€LÀ|·0ß-Ìw‹F¯¸…ùnžÜÜ"’°D8¢G <Üãj¸…ùna¾8\`°‰gèA ípˆ9äÁy´ÃiÃ;ò E,E%ø:$´¸C 8¢B íè  € HƒÕ€<ª!€7x€F;äayHBæXÎ.Ö¤„ldC ^hF6”Œ]P¹ )^°`äf7¹Ø 0:!€]Ü"7»‰0r³›\#7»É0r± O ÀþÈ0v‘‹[ì‚S6rv“‹Ý˜£Öh-rñ`ä"¨ PŠ5åf7¹Fnvs `äf7¹Fnv“ `ÇFnvSéåbÊòÈð {ØjPC.v“ `ä¹èBˆ€ RÈ!ž@.v“ `äf7¹Fnv“ `äf7¹Fnv“ `äf7¹Fn€± O`¹é„€‘ `ä&»Æ",ÑŽÜìB˜¸…"@! T À(v³ J ¹ … Œ\ìæÀÈÍnrŒÜì&ÀÈÍnrŒÜì&ÀÈ 0vá ì"7ÀÈ0r³›\#7»)þŽôr1ey#?ðŽŽ3ÔàÝÄ,ñŒ\c”À-(Tä‚.X0vA ıh*n± `,ÂòÈM#^¹~@ˆ% ØŒ]Pb­@E,ZA‹Üì&ÀÈÍnrŒâ#ÀÈÍnnŒÜì&ÀÈÍnrŒÜì&ÀÈÍnrŒÜì&ÀÈÍnrŒÜì&7žÀ.r‘À]c–hÇ.à°aë~÷ÂÞhq J · Å ›ÝäÅFn:!€Ý乨…' `ä¹èBˆ@ Rà€ŠÈÍnrŒâx"ÀÈÍnrŒÜì&ÀÈÍþnrŒÜì&ÀÈÅ-v‘ á‘ – æ á í æ á í æ á í æ á í æ á í æ á í æ á í æ á í æ á í æ á í æ á í æ á í æ á í æ á í æ á í æ á í æ á í æ á í æ á í æ á í æ í†ÕóP5òæ á áíaòô€óíAQ þòÐò`òaôÐÑáàá íííí`(1áæà‹òÐaòÐáàí íà!á@ÑáÐá€íÑòÐáÐá á€áàáá`aòôÐòÐñ‹  z@á á á` ûåþ*GÐ Ù Ô@Ô0G€_ü0Àî ÿÀ ü ð’  z@òÐñíàáp mð­ƒ’©Óm@Ë0ß@âP ° @æð  ßðÐÕáP  í€l0òþÐòÐS&á¡æ JÐ J@ JÐ Jp À@  ¹p ¹  ¤à€%€ ·ààÐ €°»@ .€P¨Ký4¹à 0 » À° S&»@ á‘@á‘ }@Ààáñ ” À@  á± 0`‘p ž8@ ° «€ðYÀ «à% ·à€ ·°0»± ´ š`á¡Ù“ Ø£»p ‚ · = àn ¹Ð @ ·° €`‘p »°00á±þÐO3p ž8@À¹«p` ¹à žq`ŠÀp SÖ»@ :P ·° pÐÁÀÿ » †· ”¹p ±À Ð €°·° (€P¹° ž8@À¹¤à%€ »à °° 0àgà p Ê@ .P¹° ·°0»± ´ š`·Ð *@* §sº0 @ »p À@  ”¹p ±À  À@ À€Àp SÖ´ lp,@ü@, MÀþpÀŠP » ”ű ¹à ° Ê€° · m°ž ·à €°·° (€P¹° žK@`Šp žKPpK€» «à% ·à ° »@¥g Àp SfÀ@ M`î`î`î`î`î`M°&¹@ P”»à p áÑ @ ž »à p »° 0`>ÀÐ>á° ž8@À¹p Tzž»p «€ % »à ° »þp K4° ¹ » í@æô`Aæô`Aæô`Aæô`Aæô`Aæô`Aæô`Aæô`Aæô`Aæô`AAæ í á á áÐaAáàáÐô`†Õí€á â ô –ðòAæ í€æí æ áÐòÐò@æàô`aòpAÑòÐòòaòÐò`ò`íí íàáàæ`ô`òþò!ô`òô`ò`òò`í æ ôí€C#áð z@á€í°þhÁþ(½@ ÉÁyü ü0Àì ýÀðbÑ  ÏðdòíÐü`í ò`] ùð ¸P ,V|P |:]Èòp“f€ °Ã6¼ÃÃpâP ÐÕ âÐò€  á`ò0eæ ´PlÀ ÅF » J@ »àJ »@  ¹ /°¹° -@– / ¹à @p ʰ -°Â@ /@þ¹°  ¨@ p ,` ±ð »š ò° »‘ » ¹Ñ5Ðô ¹ðÀ ´° À@ P«` ¹@ /дР·° À, «P° ¹$€ ·* ž ű  ¹ pp À° ¹ š À ´ Z¦ew‚àþ »± `‘° À=á± – ¤ð «Š ¤¹°  ¹@ p : ±*«` ¹@ /йРPž,` ´ð »p ¹ – »…PŠ Aþ h=• ¹@ @±ðÐ Àʰ¹@  Àà  ¹  áÑ$€ ·ð* : ÊÐ  » ž ´° -@– /@¨°  ¹ pp À° ¹0eò¨ÝØWWpa±p »@ ”¹ ±ð p »@  ÑC ” S&· ]ÐMð³Ý|°:à>`”·° ¹p ¹Ð ¹° «‘#àž ÀÐ ·°¹@  ¹Ð  ¹ þ@Ð Hp@€ H» @¨p / ¹Ð  ¹p HÏÐ  Ñs ¹0eò@ »pÙ“=ÙàÙàÙpÊ@ ¹@  »@ /лР»Ð  ž ¹Ð  @¨°  ¹°¹° ‘ ¹m ¹à  ¹p  ·à  » »@ °¹@  ¹Ð  ¹ «Š ¤À´p Àp –Ð;í;,áÐá çáÐá çáÐá çáÐá çáÐá çáÐá çáÐá çáÐá çáÐþá çáÐá çáÐá çáÐá çáÐá çáÐá çáÐá çáÐá çáÐá çáÐá çáÐá æ@;òÐòÐr¾Ãí çí;ÜrÞ;ííòí í á°Ãí°Ãd€æP  á€ìæ á çæ€ìæ æ€ìá çæ æ°Ãá æ°Ãíòæ°Ãí írȾÃá`òò ¿Ãá@á áÐò`òìí æàñá í`ò`rþ– z@;6¼úEó5Ÿ_BÐ ¡0¡Ð ¡þ0¡Ð 4_ãýàÀîbÁëðð z@ôòÐòðò`Ãçp ]ðû:ûÀ:ûÀ:çÐò° `à Ëá ›pTê Õ âP  ô`Õ í°Ãí` – » jàj jàj° À° kB j° À@ € ´°  ¹€ ”p·à  »à € ¹±  · p·° @Èá € ¹á  =‡»@} ± }@}ð  ´ ¹=·@  á‘»@ ”@´à € ¹± þ ¹p À°  ¹° p¹Ð @»° @¨° ¹·ví²$ÉÜÀ]´ÔdkvçÖ-<ú$êÃs X#¨rÝÊl—'¹DФE‰À­Uˆ ¹kÕ"¨Dó4 R¬XœŒI‹[ž ¼Õ ª\Ê(˜k—%IæD)t‹š}Âþñƒ³+W!´vQ€Àì4 ¹ A¤\ÊÚ¸Õi@¤[±8-ȵ @¤\¨(Èå ª]·< ¸5ÐS€\«DÊÕªÑ]«AµKä­–,µÛ•+X B©UŠÑ-Ь@Qp‹€f(ºŒþ8³+×.I’ÚåR&g‹|h€€Bã#UªJ©|hF ‚ œñ•HJDžÐqk€HžÜò•ÈU"åRÖæÀ.O@e OØÅPÉ…’PÉ…rY€HrA…’rñTnÉÅnñD`vf—\vINž„È&!Žâ!ްñÆ#v¡Ì" ’]< ` `:`OØÅ“rY€Hr¹¥‘vyh J@å–”id€\: ’[Zád[: €–< `—Uˆ$eÚ8`O@e OØe•ˆ@eZº%IÚ‘'y Gžpþ•'y‘4y‘4y‘4y‘4y‘4y‘4y‘4y‘4y‘4y‘4y‘4y‘4y‘4y‘4y‘4y‘4y‘4y‘´yÚi'œFÍ Gžpä §p¼ §IÃñ6yÌ‘'zÌ¡ÇyÚ¡Çœpä §Ñpä §1è©Ç’Ú‘§päiGžpäiGRy¡XžvÂñVžp¼¥¸ŠÃ¹¸QsÚ¡8œFÑ'yÚi´I½•ÇÛ‹Û¡Çœ‹ÃiGžpÚ§y™GÒp¼ Gžpä GzÌ‘'yÂù’gþ £FÍ¡g‘þºöúk°Ãæ'…Pz åìPzA»—¼ægœòqG€~ØàøiæƒEžÑƒ yÚ1Gžvþi'yä9' iúÁ¥a@%Ÿ}øÙçò$ÐYsÚi€y uPdy@žj§ÄI¼äi§y’“‡ZÔð§5ñÇ5hèÞo†’FÑDtÈÅ“ ÀÈÅ“DòD€‘<{ì Èe—8.À4vñD€\òD€\€Éå–ää©úÈ¥ôAN *>pÀ\ì─Hv‡ $À@.¸Å.(M”bšà‰%$![ÐBpøàÀ‡OXÁh0D% +ì‚°*D“‹N` ¹èDv‘‹6@ l€@.ò±|ì#ùhGäŒÐÃá8‡<–yt#Ò¸Ý  Žj@Õ€9ä!Žj íG8’ÓŽ]C ã°‡=ÜawdC H.nA ˆä]À/V€Hˆ„»¸…'0N!«@$F2`äâ¤èÂrÑ ì"»è„vq‹]äBš0‡HPÑH¡}Èr!†RèáÀ ·H(€\c@ƒH(!€[t"»Æ.V1þ€Hìâ@.V1€HŒd ž-2RtáÉ…$4„Üb$» …ð w¸c‡jÈÅ. ƒ\c·ÈE'‹U ¹ %° Zc¤èÂxÒŠ. @$r±‹6 «r JàÀ@rÑ äb žÀ.€1äȃÖ@¸…öŒ~ìc ¹ÐÁ-vq `P¹P†Hná‰ì»X"‘‹]4â¹èD"‘‹]´á¹X"!ZìâB:€[ìâž@.V€HŒd #!E€\$§¹ÆÀp{Üç>C7rq þJ ”@.€A‹FÀ r±‹‘ $9íxˆøÀOðA¹P°`ï£A» rA‹äÂÉ.s‹O´ãä-¹øt L¹Ü’ 00ݲK.0³K.0Ã0%³‹$–ÈÃTRìÌN8q 0äòH¹Üm»äbè.«(rË*tË.·äþB LÀÀDË.·ärK.»S.·“‹%š„ƒ)À€I.€±‹’¨A »H Lh ˜€&À€IIvq Ÿ”ÄI¹ØE.`’‹N ·€I.€± eäb¹ØE.| ¦ä0Æ.€QIX¢†Lr ˜ãÀÈH’b(ÔÝ"» Å.rÑ ä¢:>¹H “\ì‚ÀÈÅ.r“\|%´ØÅ-`B‹]&¹¸Å.r! MÈc.ÉÅ3ž’;æÂI·ˆÅ ˜Ü&Ê€É-r±‹áÜ¢$–„<|ò`Àä¹Ð†T h#·ØÅp¾Œ[ì¢$ÀØE.`B‹þ]”ä¹p0rq 'åâ0ÉÅ-v‘ Cݹ€ mhá“\ì"»ÈÅWr ˜äb¹Ø0v!‘vÜb¼ /@ `Ð>F.€1 àr±‹’|ÅŠ¹ðI.`R’]ä&¹€ -v‘‹]|%Ln`ÀÃùŠ“rq‹]Ü0)É.rA Ÿã+´°DB>Žv|*íøT8Úñ©p´ãSáhǧÂÑŽO…£Ÿ G;>Žv|*íøT8Úñ©p´ãSáhǧÂÑŽO…£Ÿ G;>Žv|*íøT8Ú±p¤ ‡<ÌqpÈ£ôÇAÂ!sþ„£i‡<ÌqvÈÃòGBŽ„È# äAKx ò@XáŽvÈ£òh‡<Ú!pÄá8H;äay„c!áh‡<Â!vÈ£¢2ÇA²p|Ê¢ ÇBÚ!vÈÃIÈAÚqs´CáG;bŽƒ˜#ò‡<Úñ©pÈ#0ô@†p,¤‹s›+5~ü£ÿè?ÂÆ@âz ÃBÌ!„ãSèï9Î1^t´ãç-ïAÂ!p´#iG8䎃´Cá0ÇA6ƒ„ƒòh‡<Ì¡ I´Ã'ÀØÅ-`Œ[Ðæ»I.nAŸÐþbw, L’² `äb¹ø Hn Zì·ÈÅ.J²‹;ã0¹0v!sä‚)¹xF.vA‹]&ÀHÊWv‘ `ä‚)¹ØEI€± äbˆP‚¤À$»†Or±‹\зÈ0v‘‹[Ðb–„þ ?ˆë?ðÃ,Â3脃<„ƒ<´Ã?´ÃB„C;„ƒ<„ƒ<˜ƒ<„ƒ<„ƒ<„ƒ<$D_µC8ÈC;„C;ÈC8D;ÈCBD;„ƒ<´ƒ<„C;„ÃAHD;Ã.ä0äÂWìmÃWÀ0ìÂåS”LC.ìÂ-ÜÑ.ä0ì0Ü0äÂ-øÄ-äÂ.äÂ.€Ä.ÐÆ.|Å.äÂ.ƒD˜Ã3ø0ä0äLäLäÂù0ì0|LäÂ.ä0ä‚OÃ-øD.ÀDIÀD.00ÜB.ìB.ø0äÂ-ƒOÜ‚DÈL|E.ÜSäÂ-ä‚O€DR0E.À0ÀÄpþøD.À0ì0ìHìB.ÀD.C.øD.|Å.Ã-äÂ-”Ä.€Ä.ÜL”0ìÂWC.H„<ìHø0Ü‚“äÂ-0Å-ø0ä0äÂåÂ-$Å.äÂ.ÜÂ.ÜQ.C.ìBI|HäÂ.Ã-”LÃ-ì0ìBIì0ìB.€Ä.äÂ.C.ÜB.ÜÂ.|…%H‚9äLÃ.äS€Ä.Ã.ÜSäHäLCIÜ0 Î.|LЂDÈLC.ÜÂ.LC.ÐŒ!Ñ-ä0ìB.ÀÄ-ìHìBILÃ-€mÜÂ.ÜQ.À0ÜB.ÜHÜHä•Äþ-C.0ERÃ.Ã-äÂ-€Ä-äLÜB.ÀD.ÜB.Ü‚D´C.SÜHìÂ-€D.ÜÂ.ä‚“ÜLLÀX.À0ø0äÂ.”„OÜÂ.Ã.C.ì0ÜB.LäÂ.äÂ-ÜQ.ÜÂ.äÂ-øÄ-$f.À0ìB.ìHÜÂ.Ã-äÂ.äÂ.äÂ.äLЂ%„C;D8Ѓ<„ÃA„=ÈC8D8Ѓ<„ÃA„=ÈC8D8Ѓ<„ÃA„=ÈC8D8Ѓ<„ÃA„=ÈC8D8Ѓ<„ÃA„=ÈC8D8Ѓ<„ÃA„=ÈC8D8Ѓ<„ÃA„=ÈC8þD8Ѓ<„ÃA„=ÈC8D8Ѓ<„ÃA„=ÈC8D8Ðç$D8,D;„ÃB˜=˜ƒ<„ƒ<„ƒ<„ƒ<´ƒ<´C8´ƒ¨„C;„ç´Ã§„ƒ<˜=Ѓ<”ÂÈCBÈC8N8ȃ9D;„ƒ<´C8´C8ˆJ;ÈC;„C;D;D8ȃ9D;ÈC;ˆJ;=Ѓ<$D8´ƒ<´ƒ<´ÃA´ÃB„C;D;˜ƒ<˜ƒ<„ƒ9ÈC;,D8ÈCB„ƒ9ÈC8D8D;D8$D8ÈC;Ä,‚2üÈ=˜ƒ<„ƒ%”ë]ãuòÃ@Â3üÈC;ÈC8È?$„<þ˜=˜ƒ<´ÃB´ƒ<´=„ƒ<„ƒ<„ƒ<„ƒ<„CB„ÃB˜ÃA´ÃA„CBȃ9´Ã§˜C8Ѓ9ÈC8ȃD´Ã-äÂ.ÜÂ.”00Å-äÂ-ä0ÜB.|LC.€L”Ä-ì0ìBuÃ.Ü0ÜB.ÜÂ.ä0$Å.Ã.äÂWS$0ì0Ü‚&H‚<Ü0ä00E.ÀHìBu”0ÜB.ÜÂ.”0ì0ø0”Ä-äÂíBIÀHìB.C.Ã-äÂ.Ã.$Å-ìB.ÜBIC.H‚&˜0$Å.äŒíB.ì0ì0|…OCRìB.Ã-Ã.Ã.þLCIìBIÜ0ÜB.ÜÂ.Ã.ä0øHäLÜ0øD.øÄWÐLÜBI|Å.H‚%„Ã.|E.C.ÜÂ.äŒíÂ-”HìB.ì0ÜÂ.ÜÂ.TÇ.ä‚OÃ.ä0ìBuøD.ÀDI|Å.äÂ-øD.LäÂ-LÃ.-|0ìB.ÜÂ.äÂ.І$h‚<ìB.Ã-ä-CIÃ.ÜLÃ.CRìÂWìB.ìÂ-ÀD.ÜL”0$0ì‚%H‚<ÀÄ-ìBIÜHÜ‚OTÇpÜÂ.Ü0ìH”ÄW0H SÜÂ.TÇ.ä0ÜB.ìB. Ñ.TLäÂ-ìþŒùÄ-Ã.äÂ.äÂWäÂ.€D.ìBIìB.ì0HD;ìÂ-”0ÀÄWÃ.|Å.Ü0ìHäHÜLÜH LÃ-äLÜ‚2äL€D.ìB.Ü0ÜÂ.Ã.äÂ.ÜÂ.äÂ.äÂ.äBuìBIÀD.ì0äíB.Ã-äÂ.äÂWä0ÜB.ì0ìB.ì0ìHì‚$D8´ÃA„ÃA´ÃA„ÃA´ÃA„ÃA´ÃA„ÃA´ÃA„ÃA´ÃA„ÃA´ÃA„ÃA´ÃA„ÃA´ÃA„ÃA´ÃA„ÃA´ÃA„ÃA´ÃA„ÃA´ÃA„ÃA´ÃA„ÃA´ÃA„ÃA´ÃA„ÃA´ÃAþ„ÃA´ÃA„ÃA´ÃA„ÃB˜ÃB„ƒ<˜ÃA„ç´ƒ¨´ƒ<„ÃB„C;„ƒ<„=˜ƒ<´ƒ<„C;ÈC8´Ã9ˆJ8´ƒµ%|€<˜ƒ<´ÃA„ˆŠ9| =˜ÃA„C;˜Ã<´ƒ<˜=˜C;„C;ÈC8ÈC;D8ÈC8$„@ö‡L;y Û-ú÷bD‰)V´(‘߇EÀô1·0œ<~áÚ-4Ù.œ¼víÌ™”N^;yí¶“N^¸…áþÌÉ ·0œÉvá\º4'¯?~ÿ”òƒØTé?~ù=lQéC¥ÿøýã÷ßC~ÿ”Jä÷ß?¥ÿ Fä÷°©D~ÿøýSúß?¥•Bä÷¯)D~ù=Tú_D~ÿøýã‘ß?~ùMä'‘ß?~ÿøýƒÊ/"¿‡üþñûÇïŸRˆüòûÇï!¿ü6…Øô¡ÒM'*…ÈïŸÒ‡M#ò“¨4"¿üþ)ý÷ù_Óü~VúO)D¥ÿ >T Qé?~•þã÷ß?~•>äGQéC~ù=ä÷ß?¥•Z´.Q©‡øù‡‰”zˆ‰ ‚H©¬Sê¥âç~þá矕þúG©ˆ ú‡ŸøùG©øˆŸ‡øù‡Ÿ”ú‡Ÿˆ ú‡Ÿšú‡‰ zˆˆ”ú‡Ÿ úG)ˆøù‡Ÿ”‚¨©øù‡Ÿ zH©øy¨©”zˆŸøùG©‡øù‡Ÿøù‡ŸøyˆŸ”ú‡Ÿøù§©øù§©øù§©øù§©øù§©øù§©øù§©øù§©øù§©øù§©øù§©øù§©øù§©øù§©øù§©øù§©øù§©øù§©øùçÁøùG©>ûǺü‡ŸšúG© ²$œvL"ƒyJù`žpä g¡väi'yÚ g¡pþä Ç“Â1©yÂ)JžpL §yÌ¡GžvæYÈyÂY©päY)yÌq©yÌ¡g%yÌ¡Gžvæ1Gžv¡g¡p2§ž…‘§yÚ GsjGžpäiÇ“>°D=È'€™çœuÞyg~>(E™?ÄX¨…þY(œv‘'“ÌY`“ÂxyÚ¡'œ…ÚY¨…‘§pä1GžvÂiGžpVZ(œvä`yÂ[ž•ä g¡pànGžpö–'€å `yÚ‘§yÂÙ›ñÆW Gžv Gžp—'¸å8ÇW’'œ• Gžpà–'ÏUXÏÑ'þ¸å nyÂ[žpV_]žpvÿx¸å Gžp–'€å §yÂiGžväQ]žvä žqyÂÁ`yÂa\žpÚ‘'œ½å nyÂY]žpà–'œväÙ[žpÚ ‡qy—'œvä Çsò‡<<'pÈ£ò‡<&€É£qò€[8<·p´Cá`œ<ÂÁ8y„`ò‡<Â!vÈ`áXI8'p¬DáØ›<&pLáh‡<¡:yìn!áG;äyÀm!á`œ<Â!p´CæGã€-$[H8¶pl!áØB°…„` À€-$þ[H8¶pl!áØB°…„` À€-$òhÇBà&ÆÉcoòh‡ùÉ@â C8äy´ãá0I8èy„c!áG8äy´c!æG;±y¬díG;±v˜ƒáþ ‡KÚ±p´c!æã±Æ…Cí‡I“,&iG8ÒŽpÈ`áXÀÂ!€…CŒ ‡<Ú!vÈ£áG;L·pÈ#ò`œI“´#ò‡IVy´Cí‡<Â!ß…Cª“G8è!•„Ã%+ ÇBŽ…/òX8䎅¬$òX;Â!É^³™½l8ä°pÈ#ôÇJÂ!€…c!íXˆfÃ!v„Cš•-ÀÂ!•„Ã$áÇdÃ!Ù†Ã$í‡<ÚŽ…´Ã$+ ‡KV“È6&iG8\y,E™m;Â!p,D¶áþÇlÃ!vÈ#òh‡<¶{ÙpÈ£ X8ä1Ùp,$&™l8rÙp˜¤áG;äÑy´#òhGQy´#& ‡I&pÈ£á0I;±v˜¤½˜ ‡` eè òh‡<Â!~,$.iÇBÂ!vÈ£ò˜¬<±vÈ#ò‡<Ú!sÈc%.YI8äŽvÈ# ÇBÂ!sÈÃò0‡IÌ!s„Cæ(J8äay˜c!á‡9äaŽ…„Cæ0‰9by˜Ã$æ‡9by˜Cá‡9þäay˜CáG8äŽv,`á‡9äa“„Cæ‡<Ì!p´#ò0‡<Ì!sÈà iG8Úá’v„CæXH;äay´c!æ‡9äay˜Cæ‡9äaŽ…˜Cæ‡9äay˜CíXH8äay„c%á‡9Lby˜c!á‡9äay˜Cæ‡9äay˜c!æ‡9äÑŽ…„CæG8äay˜c!æ‡9äay˜Cæ‡9äay˜Cæ‡9äay˜Cæ‡9by˜Ã%á‡9Òy˜c!áh‡<Â!sÈÃäÁäÁÂä!äÁäþÁäÁäÁäÁäÁäÁäÁäÁäÁä!äÁL"ä!äÁäÁÂäÁäÁäÁäÁ"äÁÂ"&äÁä!V"äÁ"äÁäÁäÁäÁäÁ"äÁä!ä!LÂäÁ"V"äÁäÁÂAÌAÌAÌÁ$Âa%äÁäÁäÁäÁLÂäÁäÁäÁäÁL"L"äÁäÁäÁäÁäÁäÁäÁäÁä!ä!äÁäÁÂäÁÚa!Âa!Ú!äÁäÁLÂäÁäÁ"äÁþ`äÁä!ÚA¡ÂAÌAÌa!ÌÁ$Âa!ÂAÌAÌÁÂ"äÁ"&äÁäÁäÁäÁäÁäÁäÁäÁäÁÂ\"ÂäÁäÁÚa!Ú!äÁäÁL¢"ä!äÁäÁäÁÚa!ÂAÌ¡"äÁÚa!ÂAÌ¡"äÁÚa!ÂAÌ¡"äÁÚa!ÂAÌ¡"äÁÚa!ÂAÌ¡"äÁÚa!ÂAÌ¡"äÁÚa!ÂAÌ¡"äÁÚa!ÂAÌ¡"äÁÚa!ÂAÌ¡þL"ä!äÁäÁÂäÁäÁÂAÌAÌAœ1äÁÂÂäÁäÁäÁäÁä!äÁäÁâ,a!ÚAÄA ä$áÌa%L"ä!Ú!Ú!b%ÂA¡b%ä¡ä!Úa!ÂÁ$¡äÌÁ$Âa!ÚÁ$ÌÌAÚAÌ¡¡ä!ä!ä!¢èÁäaÚAÌ¡"L¢à%\¢L"ÚAÌa%ÂAÂAÂá áô€ ¢AÞr¦â>“á ô‰àØA ‚>žAÈÀ"äþáÚAÚAÂAÚ!\"䡜QVBÌ¡Ìa!ÂäÁ\Âä¡ÂAÚÁè!äÁb%ä!ÂèÁèÁ$¡äÁêÁ%Ú!ä¡ä!à%à%"L"\"ÚÁ%Ú¡(ÌÌÌ¢äÁèÁä!ÌAÌÌÁ%Úa!Ì¡äÁèa!ÌÌAÌÌL"ÌÌAV"ÌÌä!ÌÁ$ÌAÂAÌÌÌÌÌÌä!äÁèÁèÁèÁè¡äa%äÁèa!ÚÁèÁèA¡"MþÌÌÌÌÌL¢\Âä¡äÁèa!ÌAÌä¡äÁèÁèÁèÁèÁèÁèÁèÁèÁèÁèÁèÁèÁèAÚAÌä`äÁèAÂÁŠÂàÅèÁèAÚÁ$ÚÁ$ÌÌÌÌÌÌÌ\ÂèA¡LÂèÁ$ÚAÌÌÌÌL""ÍäÁèÁèa!ÚÁèÁèÁ$ÂAÌÌÌŠ"L¢äÁÚ!"ÍèÁäÁêAÌÌL¢¢Ìa!ÌÌÌä¡þÌAÌÌÌL"b%ÌAÌÁ$ÌÂèÁèÁèÁ%ÚAÂÁ%ÚAÌÌÁ$Ú!ÌÌÁ%¡äÁè¡(Úa!ÂÁäÁ\ÂÂè!\""ÚAÚa!ÂAÌ¡¢\¢\ÂäÁèÁäÁèÁèÁèa!ÌÌÌL¢äÁä!¢¢äÁèÁä!ÌÌÁ%Â`ÂAÚAÌAÌÌÌAÚAÂAÌAÚAÂAÌAÚAÂAÌAÚAÂAÌAÚAÂAÌAÚAÂAÌAÚAÂþAÌAÚAÂAÌAÚAÂAÌAÚAÂAÌAÚAÂAÌAÚAÂAÌAÚAÂAÌAÚAÂAÌAÚAÂAÌAÚAÂAÌAÚAÂAÌAÂÁè!äÁèÁ$ÚAÌÌ¡äÁèÁèÁê¡”L"ä¡ÂAÌÌÌ\ÂèÁèAÌa!ÚaÂAÚa!È ”JáäÁä¡"èÁ%ÂAÌÁ%ÌAÂÁä!ÌÁ$Ú!ä!Úa!ÌAÚa!VBÌAÚAÚ!Š"äÁè¡"ä¡ä!äÁb%þÌÁ$Âa!ÚAÚÁä!ä¡¡ä!ä!ä¡ÂAÂAÌa!Ìa!ÚAÚa!<ÀžáÈ`!Âa%!>!‚Ä@›C!ú  ¤À´YœÅ"ÆøAô€ÜAø"<žAÈ`!ÚAÚVBÂa!Ìa!ÂAÂAÂÁ%ÌAÚÌAVb!ÌAÂA¡ä!"à%äÁä¡"Íä¡èÁÚÂAÌa%"ä¡ÂV"Úa!Ìa%¡"ä!Vb!ÂAÚÌAÌ¡äÁäÁÚVÛAÌV]Â&k!ÚÁ$Âáþ©ÍAÚ¡(Â^ÚAè!Úa!Úá©‹"ÊÚÂa%b%à¥èÁäÁV"ä!Ú¡¬Í¡äÁäÁL¢L¢"ÍÚ¡¬^Ì¡"Æ$ÚÁ$¡Âa!ÂA¡Â^Ì!ÚAÌA±MÂÚÁ%ÚÌ!ÚÁ$Ì¡äÁÚVÛ!Úa!¡¡Â^V¢(V"ÚVÍa%¡b²èÁÂV"V¢(Ú¡(ÌAÂ`ÂÚ^Âá©ÍAÚA¡ä¡\"L""-VBÌ¡ÂÚAÌ¡\"Ú^ÌAÚÌ¡þÂV"äÁV¢(ÂÁ$Ú¡(ÌAÂa!ÂÌ!ä!Úa!è!¡ÂAÌ!Ú!F;"ÍÚAÌ¡L"ÚAÂAÌ¡¬ÍAÚÌa%Â`µä¡L¢ä¡L¢ä¡L¢ä¡L¢ä¡L¢ä¡L¢ä¡L¢ä¡L¢ä¡L¢ä¡L¢ä¡L¢ä¡L¢ä¡L¢ä¡L¢ä¡L¢ä¡L¢ä¡ÛÚAÌ¡L¢àe%äÁä!äÌVÍ¡ž:Úaä!ä!ÚA èA,á¢ä!Úa!ÂAþÂÁ%Ìa%¢\‚ÂA¡(ÂÁ$Ì!äÁä¡ÂÂÁ$VBÂÁ%Ìa%äaä¡ä¡"Úa!Ú!ÚAÚAÌa¢Â¢ä¡Âä!\¢"FÂá ô€ Ìa!Ìáš‚`À¨ßûÝß©A `à”b@)‚"øá$áô€ ÂAVBø!ÚAVb!ÚAÂ"äa%ä¡L¢ÌA¡L"äÁ"b%ÂAÚa!ÚAÚAÂAÂAÂAÚA&Ò¡"ÌAÚÁ%ÌAÚÁ%Ìþ^ÂAÂAÂAÚAÚa!ÂAÚa!ÂAÚ!ä!ä!ä¡`Âa!ÂAÂÁ%V"Ú!äa%ÂAÚAFÂAÚAÚÁ$ÂAÚAÂa!ÂAÂa!Úa!ÂAV"ä!ä!ä!ä!ä!Š¢ÂAÂAÂAÚÁ$Ú!äa%ÂAÂAÚ!ä¡ä¡\"L"ä!ä!ä!ä¡"ä¡ä¡ÂA¡ÂAÚ!ä`¡L"ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ÚÁ$Úa!V"ä!¢Ìþ""L ÂÉ '/\;y¶“N^8yáä…“N^8yáäµCN^»pòÚ%l.a¸„áä…“N^8„æäµ“gŽÂpòÂÉ '¯]»pòÂÉóÙNž9yáä…“N^»„òÌÉ '¯9¨XÍÉ '¨OyáäµKhN^»pPÃÉ '¯¼pòÚÉ '/œ¼vò|"4'h8„áä…“N^8yáä…Ch.a»„áú 'Ï\Âp ‰&lµÖpíÂÉ '/œ¼pòÚ…ƒÚ+BsòÂ! ‡µÔpòÂÉ '¯¼pòÂÉ '/œ¼pòÂÉk‡0ÂpíšCŽ^;y>Ã! þ—¨ÉŽ<áÈŽ<í$ÔNBíÈŽ<áÈÓBáÈÓN8ò„#O8íÈŽ<‹ÈÓBíA<¥x0O8í ÔN8ò„#O8ò„U8ò˜ƒP8ò´#O8ô„#O8ò„#O8ò„COBí˜#O8ôÈãS8æÈBD%äS8òø4O8™#O;ò˜#O;áÈÓN8>…ƒP;áÈþŽ<á´ƒU8ò´3O8ò˜#9 } É3P;ò„cÉ?Äkì±Èâ³E/½PÓ 5Ôôm/ÔlÁO±ëÀ;ðãŽoD€@òŒd dŽ<æüƒP8ò˜#O8ò´#OP™ŽOá¸N;Xµ“9…ãS8ò„#O8ò„#O;ò„#O8ò˜#O8ò„#O8>!Bô„#O8ò„ƒP;ò„#O8ùN;ò„#O; …#O8óø$O8óø$O8Pµƒ9ò„#9í =áÈÓN8í„#9ô˜ƒ9P…O;ò„#O8ò„#O8ò„#O8ò´ƒP8ò´ƒP8íÈŽ<áÈþcŽk®…ãS8®…ãBæÈŽ<æÐŽ<á Ž<áÈŽ<á´ƒP8íàŽ<á´#O8ó´#=á$Ž<íÌãBáÌãÞ¬³ÞBáÈN;ò„#9ò´ƒP8 …“P;…ÓNBíÐcN;ò„ÓN8­»Ž<á´#O8…ãBæ N;ù„U;ò´ƒP;P…“=áÈŽ<æÐŽ<á´#9¬‡#O8ò„ƒ•9ò˜Ž<áhG8䨄cD‘G8䟄#!æG8æá“„„CíG8䎄„Cá‡9‘sÈÃòðIëÚv $ò0G;ÂÑŽ„„+áG8þäŽv„CæG8äy„Cá‡9Â!pÈ#P¡G8äÑ„„C> G;äy„!ညOäŽvÈ#ò0G;äÑŽ„Ð#ò‡<‘và-òG;Òyø$!íG;䨄CáhG8äay´£æ@H8Úy„C>‘‡9ây˜!>‘‡9ây˜!>‘‡9ây˜!>‘‡9ây˜!>‘‡9ây˜!>‘‡9ây˜!>‘‡9ây˜!>‘‡9ây˜!>‘‡9ÒŽ„´#!æ@H8ÚŸÈ#íG8Ò„˜£á‡9Âþ!pÈ# ‡<ÂÑy„!íG;Òy´Ãò0‡<ÄÑ1Ѓ–ø@;äÑy„£uáG8 y´Cí€ =‘vÈÃ'óhBÚ!vÈ£® Ç<|"p´ÃíG8äaŽv $òTÌv Äò‡<Ì!vÈ£ô0G8|"pÈ#>ÁJ8äŽ@âz C8Ìv,YhM+?Ž@ f¹•níňŌü`‡þÁŽø ñÁñ =Áò0=äñpÈÃôh‡<Âay˜CáG8b„„Cí˜Ç9ÚQ „£‡<ÚþŽv„£@È €fÀÕVÚ•pÐ# BÚ!vÈ£ò‡<Â!s $ò‡<Ìv$Ä'á@H8èÑŽp$„( ‡<Â!v„!í€J;‘v@ÅôHH;äá“p „( i‡<Ú!p$$òhBÚ!p´!áHˆ9è!pÈ#ò‡<Â!pÈ#òh‡9èy„Cá€J8ÚѺp ¤òh‡<ÂAyø$!áG8ä„´*> BÚ„„Cí‡<Âv„Cí‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ£á@H8è!þpÈÃô@H8Ú!v„!> ‡9äÑy˜Cá‡O bz„Ã'áG8äy„CáG8Ò¨„!æG8„´#òhÇ<Â!pÈ£á0‡<Âay„Cá‡OÂÑAH8èÁºpУò‡<ÚvÈ#òhG8äáy´Cá@H;äÑy˜!á G8Òyþ„C>IH; sÈ#>qM8äá“pÈ#òBÚv„Cá0‡<ÂÑŽpÈÃ'áG8äá¼µCá ‡<Ú!sÐ!íG;æ‘sÈ£ 1‡<Ú‘sÈ£ 1‡<Ú‘sÈ£ 1‡<Ú‘sÈ£ 1‡<Ú‘sÈ£ 1‡<Ú‘sÈ£ 1‡<Ú‘sÈ£ 1‡<Ú‘sÈ£ 1‡<Ú‘sÈ#òhG8äÑ„„!í‡<Ús$$òhG8ðÖ¨„!í€J8äÑŽpÈ#> ‡<Âa‰pÈÃõhèR| æ@H8äy„CáG8ä„„þ£i‡9äay„CáHQÂ!p´#í‡<Â!p˜!í˜G8Ú!v„Ã1=äÑy„ƒD‘áÐáá á€7æ >æ áæ DaÑñ‹ð z@A‹V"h,üpqu‚ÌrÅÂã0üàðî0ïÀÿÐ  ÊPd>ñ Ñ®  ` ô`í áò`í b Õ a Q `ê0Òß òP  ííí áÐáàá áÐòòxã®>ò` ÑþòÐ í€æíá€íDíá æò Ñòòí€áÐò`í á@òÐÑ íòô`òÑ ÑòÐòÐòÐòÐòò@æ€í€áÐá@æí á áà òòÐò`áÐá í í€á@áÐ ò`ÑòÐò@òÑòÐòÐòÐòÐòÐòÐòÐòÐòÐòí€áí á@æÐí ææáÐòòþ Aæ€í í í í í€áÐò>áá á€ááÐòò Ñò@á@áæ á á á á áÐò`á á í í€á€í€æàÑòí€áÐPaòòíí æí í áí€á á á€áÐòí@æ íí áÐ ÑòÐòÐòÐ aòò`òò Ñòò`áÐòòí1òÐáÑò@æ€á á á þá æPÑ í á á@òí áÐAá >!á á á áí í€áÐòXÑ ííí áàáÐá á€áí>aíòàóàòàóàòàóàòàóàòàóàòàóàòàóàòàóàòàóàòàóàòàóàòàóàòàóàòàóàòàóàòàóàòÐòaaò aòòò@æ á í€áÐá á€í á á€áÐþò>í€æ á ‹€ô í ô –ðí áÐ ÑòôPí€íí á á æ€í€ô`òÐXñ„í >ô aòÐòÐò`òíá á@æ€áÐòí€í æàí€>‘í á áðð z@>æ ‹0‚ìÊ0€‚¡àV¡ ü@,ü°Àì ÿà@,ü° Ï dÐá >ñíò  í€Híàæ í íP Q þ Õ í æ€Õ æ@aPòòíæ€í á íò>1íòíò`ôàá`òÐòð„òææ á€á æ@òàò`òàPÑòòæ€í æ>!ææ á`òæ í aôíòòòòòò Ñ òòÐá€æ@ aÑò`òòòÐòòaôí á á€æ æ@á`í€á á`òÐòÐò`þ òÐá á á á á á á á ááí òPaPòÐòaòòAá á á á á€ææ áÐáÐÑòÐòòÐPÑÑòÐ Ñáá@í í í æ€í á á€á íòÐáÐ > òaòÐá€í íææ€í á á á€á>!æí€æ@ò^Ñá á á áí í þí á áàæ á í áá íòDí`òÐòÐXÑÑá á >ææ áÐ Ñò`ÑXòàá á€æ€á á í`ò òòЮaôàòí>áá í æ á í æ á í æ á í æ á í æ á í æ á í æ á í æ á í æ á í æ á í æ á í æ á í æþ á í æ á í æ á í æ á í í ÑáÐ ÑòPÑòPÑò> áò` aòDPÑò°>aôÐd€¥àaòòÐXÑá€>á íí ô€í DáÐòÐáí`ò`òÐòòòæ í`PòÑPÑò` òÐð í íòòò`æ áàá í€ Ïðbá` ì:‚ü ¡pÜÇÝ È}Ü0`,þãýÀðìïðüÐ ` Ê dæÐü€í áÐá á ÈíÐá0 Õ á æP  Õ òP €ßàðt æàà° Õ òê€ , ò€Ýâ€áÐÑáá€í€æðÞòÐPAæÐòÐò`Ñò`X®ÑPò` í áÐÑ Aá æ€áÐáÐòÐôóÐx#æ€áá á æ í í í í í í áÐá á þá á á€áááôaPPí á í áàô`á á áô Ûá í æí í€í í í í í í í í€áÐ PòÐï ï-ááïíá0 ÑòÐòÐòÐòñÞí í@æ ïï-áÐòòÐòÐòò`á æí áí ¡íí æ€áÐòí á í áÐò òa òP!ÛÚ.áþ€7²ÝòÐòÐòí€ííá æðÞòðÞò`ÑòÐôÁïá0 ò[ŽáÐòðÞôaò@æ áÐòaòòÚ.æ á áðÞááÐò@æ@æ á€á€á æÐòÐá íáÐ aÑò Ñ®ÑòÐòòÐaòÑá á€ï-íæíò` þòïá€á€ô`áÐò`Ñòí á€áÐNÞ@yæ¶ ׎`;†òÚÑ3'ÏÜÀp å…³D¡zô,} 80œ¼pòÂÉ 7!Cyáš ®ÝÀpòÌÉ3'Ï\»pò Ò\ÈvòÚÉk²ÁpòÂÉk70\;yáä…#ØN^¸æä…“n`8yí䵓G/œ¼vÛÉ ÷aѳ?dÂl·èß^¾}ýþå·"Ô`Â…C¥à÷ß¿qø¹ÐÏ]ùôøþé™2áäÉ3'_¸Ï¥?·“‡ @8yèthW-@éjäU ¯š€pòN÷ „€vÕÈ›WM€¼jäµkAbº?ÂÑ6@\8yæä…3G/\épòÚ…+mNÃpò~^Y:œévòÚÉ '¯]8yáäµ §pä1‡†Âù,œÏÂahžpäiGžväiç3sè1G†äi'y‘§päi'ÓV’'ÓÌ‘g%2­ÓJ ç³päiGž•‘'y‘§yÚù¬yÂù,y™Ѵpäigžsäiç³vL §´ŽÚ™‘¡y‘çE1W §ÏÚ §y‘'œvþäiGžpJ3GžpÚ G†äi'œÏÚ §päa(y‘'œÏ Gž1? Gžvà1GžvJ3Ç´pä1‡yÚ1ÇyÂ1­Ò‘'œ•ä GžvÌ‘ÇyÂiò3sè©5œÏ‘'y‘§ÒÂi§´vÂiÇ´v>kgžpä GžpV §4Kk'œÒÂi'œÏÂ)-œÏÚù¬yæ Gžväi'yÚ‘§päahyÚ §ÏÚ Gžpä ç³pä §päiç³v‘§yÚ1GžvflGžvLkç3sj5ç³vÂùÌyÚ)­yÚùŒ!yÚ‘ÇyÚ)mžÏ‘'yÚ‘§þÏ‘'sä Gžpä ÇyÌ1-œvJk'œÏ‘ÇÅpäi'yÚùÌz‘‡¡pä1ç³v‘ǜÏÚ Gs>k'yÌù¬pä1ç³v‘ǜÏÚ Gs>k'yÌù¬pä1ç³v‘ǜÏÚ Gs>k'yÌù¬pä1ç³v‘ǜÏÚ Gs>k'yÌi2œÒ’'†flgžpÚù,y*-yÂ)-œÒÂi'yÌ‘'yÚ1­yÌ‘'yÚY$œÒÚ!££Rcè³pä ç³v‘§yÚ™±y’'yÂùL;ÂÑŽpþ˜C/’G;Ì!p˜¦æG8>Óy„ƒáhG8äy´#òh‡<Ú!p˜†!¥i‡<Â!v˜£4€Ä.ô@†Ï„ƒ!‹èKu¸ÃÂ0†Y_ø±Žðƒà;ð†@°Ä3ô y„£ŸùÇgÂ!pä"·È…<2àÒhG5 pÐÃG5Žj@ßÀ/äÑN Õ@8ÚQ ˆ£hÇ7ð † c¥iG8>³‹\ìÂ’»ðb.vq‹\ì‹´ØÅ-¼¸‹\Ü"“´È-n±‹[ì"·€e.n±‹[ì‹»ÈÅ.rŒ]äþb¹ØE&-™ Kæb¹ Å-váÅ[dÒ‹—Ì$,w‘‹]xq·ÈÅ.` ËLÞÂ’¹¸E.v‘IZ䂹 E.h‘É[ä⹸E.`™‹]äâ»p¦/™‹]ä‚Ṳ̂%o±‹\ì"ŸÎÜ…o± Xæb¹¸E.n‘‹]ló» …o± /Þ‚»ð"-rA‹\Ð"´È-rA‹\c™Æ.€‘‹]äb¹¸…w‘‹[dr¹ØE&wA‹]dr¹ØE&w‘‹]Üb· …%sA‹\Ð"´È-¼¸‹\\2´È,wA‹[xq¹ØE.n KæÂ’ÍÅ%sA `Übþ¹°d&- ×\Ü®–¼Å.r±‹\ì"Ÿ»È,w‘‹]ä–ù¼-v‘‹]äÓ’ù¤E.náÅ]äs^´¤w‘‹[8ó´ØE.h‘ `ì"´¸0v‘ ZЖ´Ø-¼ŒKZ–»¸Å.r±‹|·ÈÅ.rA‹LÞ‹· Å6wA‹[äbμE., Œ]Ðb¹°d&oáÅ[xñ^¼Å%ó Ë\ì"»È-rA /î"»ðâ.r±‹\ô6·ðâ.2yI/î"“´Æ.¼¸ gî"–¼0.éE`\Ò‹À¸¤qI/ã’^Æ%½ŒKz—ô"0.éE`\Ò‹þÀ¸¤qI/ã’^Æ%½ŒKz—<è.n‘‹[Ћ»àë-v‘IKÒ"·ðâ.r±‹LÀ€+0øAs|æ–G8ä!Žvˆ¡#–øÀgÚy˜£4æh‡iÌ!pÈÃó`ˆ<Âñ™p”&óh‡<ÂÁp0Dæh‡<Â!pÈæ ÇP `è áG;Ì!EäÐØÇî‹V°lf7{Ù|éG3ð~ô…üø?<‰gü ¥ ‡<þy„Cíþ¸?ö"d ò:Žjà3í¨ÂQ´£G5 zÈcG5ÐŽpT#ò¨†ÌQ P€ €èŽíåÚ9äÇ?øÁ—kï…ÿà‡±¯Í½¬ü+çÇ^øñ~ì…ÿàÇ?øÁ—kï…ÿà‡±ù‘Õó…ÿàÇ?ø±—kïæ9äÇ?øñ~ ;‡üø?þÁ\›/ü8öµs¸r¾¬|/ü°:?ø²òðãüø?ös~ðåÚ{á‡Õ‘;ðc/üà ?öÂðƒ/üÈ!?rÈðƒ/üØ ?ú½óãüø?ø²òðc/üøþ?þÁðƒ/ü8öµû½ð£/×F6?}m½óã+ç˵sȾð#‡×>6?ͽ\{/üø?úÂcóc/üø?ôþkÿƒÿ¸ö?ø±~ ›ÿàGù±~üæÿàÇ?øÑ~üãÚÿà_®Í~ì…{áÇ^`Žl~üƒÆæ‡à‡½à¾€¹à‡½à¾¸6¾à‡â‡½à‡¾à‡X¹¸¶¾¸¶¾¸¶¾¸¶¾¸¶¾¸¶¾¸¶¾¸¶¾¸¶¾¸¶¾¸¶¾¸¶¾¸¶¾¸¶¾¸¶¾¸¶c»¶à‡é3¶kÛ ~Ø ~È!~àÁº…øŒv‡v°„p(v |þ‡Rð€yyhy`Ó†(p ‡•øŒvø s‡v‡v0‡pø s y0ÓCyhÓyyh‡p0‡Ïz‡p‡v‡v‡Òyyh‡p0 †y‡vy9ly`ˆÒh‡Ïø€EP= y s‡p°„"Ô;~H|à‡tø|à‡tø|X¹ð$à~°ºeÐ2yy~0v¸…‡pd€phy‡nF‘dy¨‡jyø††Ï†‡jyh‡jq¨‡nihz0þp‡ph‡p`†‡P ÈvsHy`y0‡‚tÈÏ0‡ÒhypHyy0‡tHy0‡vs`y0y‡vly0‡‚”‡p@Év( ‡”sxI‡”‡Payy@Iyy0‡”sshyhyhy0‡”‡PJ¨dy•v‡‚”‡ps`ˆÏ`y•v‡P‘‡vs¨É—4‡—ü ssÐHy0‡‚”s(Hy0‡”‡´dy‡v‡p(Hy‡‚”¾lyÄly0”‡p¨,Hyy0¾”ss`ypHyhy0þ‡vsÆ Hy0y0‡vs(Hy‡€”s‡p‡vshyHy‡‚”‡‚”‡Pay”††‡p‡PyIyyy0‡€, ‡”sÆ”‡p‡€”‡p††‡p‡¨ y0†‡p‡pÐHy0‡”sø sHsàKy0‡v‡p@Iy(Hy0‡‚”s(Hy0‡‚”s(Hy0‡‚”s(Hy0‡‚”s(Hy0‡‚”s(Hy0‡‚”s(Hy0‡‚”s(Hy0‡‚”‡P‘‡Piy‡—”¨”s`y0‡‚”†ssþssxIy0y‡v‡ph‡[ø†‡p8‡Eø sqy Kø€v(pÈp‡p‡yÈÒ0‡v‡ps‡v‡p`Óh‡Ïh‡Ïyy†y0‡v`”94vøŒpø s s(p‡vø s‡p‡psøŒv˜Ãp‡pss`ˆp‡p‡pø€Rx= ƒv(vXU46~06~à ~è ~X‡°j86~ø~øHx= ƒp ‡Òà‡p‡p•]àyhy@‡s@$Xyh˜„v@‡ y¨†‡j€þÏ8th ‡j€Ï¨h‡j€Ï8Øq@8ø g`‚p(€4 †‡Ï`yy‡ÒxÉp( søŒp‡€ yhyyxÉpøŒv(p‡vøŒ— ‡Ò`ˆp( ‡4‡ÒyÈp( ¾ ‡Òh‡p‡— yh‡ÒÈp‡v(p‡v‡Ò(Hy舭•zøŒv0p†øŒv( ‡,v0p( ¾ yhs ‡p‡p‡‚”‡p‡v(‚ ‡Ò`ˆp( †‡ÒPM†‡Ïh‡Ò`ˆpøŒ€”‡p‡´ ‡ÏHËp‡p(‚ yh‡Ï þyÈpøŒvøŒ´ yhÓypÈpøŒpøŒpÕ Óh‡Ò`ˆp(vyh‡Ïh‡p(p‡vyyÈp‡€4vøŒv‡´ 9DÉp‡v‡vø †‡v‡p‡‚4€ yÐÈpøŒ€ ‡ÏyÈp0­¥Óyh‡Ò(Èp(€ ‡Ï‡Ò0z‡š ‡Òh‡ÏÐHyy`ˆp‡p†yy`ˆp‡p†yy`ˆp‡p†yy`ˆp‡p†yy`ˆp‡p†yy`ˆp‡p†yþy`ˆp‡p†yy`ˆp‡p†IýŒ—ü z0p( †‡p‡p‡v‡v‡v( ‡ ‡Ïh‡ÏysØ~0‡v(EÓ ƒŽ(…‡phy0y0zz`s‡v˜‡shy0‡Ïh94yyyh‡ys‡p‡p ‡p ‡Òh9lyy‡Ïh‡p†‡vÃphyhs‡p(p ‡p‡v‡v†yyhyh‡Ò0‡Ïhyh‡Ïø€EØ…?y‡€\`56~0çkÓ;~øIx†? ƒÏþy‡‡vèyØ…h‡Ï@€€¨„v8Q¸ ð€,q¨‡jy‡n@ð€,q¨‡p¨†h‡j€vuÀ€Ðφ‡ph‡psh‡vøŒps(PùŒvøŒvy0y0y0y0‡Ïy‡Ò0y09 y0y0y0y0‡Ïyy‡Ïhyy0y0y0y0‡Ïh‡psøŒpsss‡P) ssøŒpssssss0 s( ssssøŒvþ‡pssøŒ›–s ‡PùŒpss¸é×–‡v‡v‡p¸iy‡Ïy0‡p¸iyyy0‡›–‡p‡pøŒpøŒpssssssø s(v‡ps‡PùŒ×y0y0‡Ïh‡psøŒvy0‡Ïy0yy0y0y0y0y0y0‡Ïy‡vy0‡Ò0yyy0y0y0y0y0‡Ïy0y0y0y0y0yh‡Ïh‡pssø sxmy0y0yhy0yy0y0yþ0y0y0‡Ïhy‡v0‡Ï0y0y0‡ÏÓy0y0y0y0y0y0y0yh‡Ïy‡vy0‡Ïy0‡Ïhy•χÒ0‡Òy0‡Ïy0‡›þŒp¸éÏy0yyy0‡Ï‡vø ssssøŒ×–‡p‡¨ü ss¸iyy0y0yy0y0y0‡Ïy0‡Ï0‡Ï0y0‡Ï‡v‡×–‡phy‡ÏxípssøŒpssø søŒphyhy0y0y0y0y0yy‡þv‡pss‡P‘‡ps(vs(vs(vs(vs(vs(vs(vs(vs(vs(vs(vs(vs(vs(vs(vs0pø shy0y0y0y0‡×–‡phy‡Ïh‡p‡P‘‡vøŒ×¾iyy0y0y0yh‡phyÓØ… ss‡EøŒpqƒŽ°z0‡9l‡Ò`9ly0‡vshÓhysh‡Ïh‡9 ‡v‡v‡phy0yzþyh‡pøŒpsyyyy¸éÏh/6y0‡Ï0z‡Òy‡v(pxmy‡(`ø2( s‡E0çã?6~°:~ðI= ƒp‡vøŒ zsØ~‡Òyh‡ph‡Ï‡vs 9 ‡vy‡v`”p0z‡v‡Òh‡p‡v‡phÓ0‡Ïˆvò䙣gNž9yáÚÉ3GO^¸vÍÉ3'/œ9zæä™£gŽÞÀ!͵ '2\»pÍÑ3GÏ=‘òÚÉ G¯]8sÍÉ3GϽáÌÑ3G/d8yæèÉ4×.œLyá䙣gŽþž9zæè™£'/\»vÛ™“gŽž9z!ÙNd8sòÂE•Nž9zæä…mN^8yá䙓×Nž¹æêÉ3'/œ¼pÍÑ3'¯¼vò™£×n`8yæè™£gŽž9zæè‰ 'ÏÜ@sôÌÑΜ@Ú!ÚÁR¨R(ä¡äÁèAŽÚ!P(P¨¡ÂÁä!ä¡Pˆy)P¨R¨ÌAÌAÂþ…Ú!˜'ä!ä¡PÈP((ä(&ÊR¨ä¡ÌAŽÚ!…Ú…> ”AÈ@ŽÂÁ¬¢€ -ÕR- (8öÀär.åò|€þÁþAR V€D R@V`B@°âáô€ ÌAÂAÂáP(èÁháPȘç,A@34EÓDÓDó4Es,455á4-!4ÁP34-Aa,¡6kÓPÓ$!7-5-7CÓ$ÁBÓŒ34-ÁPÓ@ÓBs,4-A,!4-Aá4-¡9›ÓB37CÓBÓ$þaxÓÄ5-45ŸÓPÓšÓ@ÓBÓjÓBsDÓjÓ@s$a,á4-A4-AÁ$ÁDÓDÓDÓNÓ$Á$a,á4-4-á=AÓPTžS4-Á8-Ar5-Až4-AA<4-aECÓšÓBÓ$ÁBÓÞÓjÓ@Ó$Á„57-¡9-¡6-A4-á4-A45-¡6-á4-!4-5á4Á@³>Có9QÓjsDsNsNsNsNsNsNsNsNsNsNsNsNsDÓþPsNÓDÓ$a$aPÓ$Á$Á4!4-4-4A,aEù¡Â!…váP(ä!,¡ÂAġĀèÁ> äˆyP(ä!ä!ä(ä!äÁP(ä¡äÁtªä!ä!æ€Pˆyä!ÚA§Â¡äÌAè!äyä¨PÈP(˜'ä!ä!ÚAŽÂAÌAÌ!…ÂAÌAÂAÂAÂá$ô€ Â!…Úa¬B+‚¬¸"B  Ü!dí!dCöpA| þ!R l€R`þAVÀÌ`ð<@žáþÈ…Ú…ø!ähþ!ä($˜ö˜Vc!ˆ¬‚¬‚ ö˜‚˜öøá˜‚øájÿ –þÄÖ*˜vmÙ–i­‚ ˆi¡–¬bmÿam­bm­‚4–i¯– hm!ˆiÿ¬‚iÿi5–Ä–þþ4– ˆiÿ¬‚i­‚þamÿ¬‚ – ˆþþamÿi­‚þ4–¬bmÿ¬‚4–i¯vmÿ®–Ò–i5vm¡–4–¬‚¬‚þ¬‚¬‚ ˆ ˆi!ˆ¬‚¬‚4vm­‚þþi­‚ þˆ¬‚þ4–¬‚iÿamÿþ¬‚ –þ –i­‚iÿ ¨m¯–þ¬‚þÄ–þi¯–þ¬‚þi5–4–m­‚¬‚¬bm!ˆ hmÿi!ˆ¬‚Ä–þ ˆ4–¬‚þamÿþþamÿþþ¬‚þam­‚þþm­‚ ˆi­‚þi­‚4–iÿþi­‚iÿiÿ¬‚iÿþþ¬‚¬‚þ4– ¶úájùáøjùAcùÁ*˜öøÁ*˜öøÁ*˜öøÁ*˜öøÁ*þ˜öøÁ*˜öøÁ*˜öøÁ*˜öøÁ*˜öøÁ*˜öøÁ*˜öøÁ*˜öøÁ*˜öøáø‚øáøAcùáø‚ÖÖ*øáøÁ*øá˜öøájùáøAcù‚øá˜öøáøáøáøáêä!ä!äáþ!R¨,!äÁè¡Èä¡> ä!ÚÁä!P¨R(Ú!P¨ä!èAÚAÚÁR¨ä¡ÂAÂAÂAÚAhÌ¡ÌAÌ…ÂAÂA¡PÈä¡ä¡æAÚÁä!ä¡ÂÁä¡ä¡P¨þä(èAÂAÂ…ÂAŽÂ¡äÁä!è¡ä¡Pè Aô€ P(˜g¬Â€B B €B@B 8àÜ!ì!’m­5–€°bøAVàR`þR ¨á áô€ ÂAÂAÂáP¨PhøA˜'Ú!$Al×öøájùáøáÖVc™6m¡–iÿ¬‚iÓ– ˆi=[cùÁ*øAlùájùÁ³ùáøáø‚ø‚øÁ*øj™‚øáø‚øAc™‚øáøáø‚ø‚ø‚˜Ö*øáø!µùájùáøáøáø‚øþájùjùáøájùÁ*ø‚ø‚øá˜jùáøáøAcù‚˜öøÁ*˜öj™VcùáøáøAlùj™VcùÁ*øáøÁ*øáøÁ*øÁ³ùáøÁ*øAcùÁ*øáøáøáøÁ*˜6mùAcùÁ*ø!µÿi­‚þam¡–®–4–þi­‚ ˆ¬‚¬‚ –i¯– ˆi¡– ˆ®– ˆ –R{mÿ4vmÿ –dÜ*øj™vÌ5–®–iÿ¬‚i5–Ò–Ä– –þ4–4– –¬bmÿþi¯–Ò– –þ – – – – – – – – – – – –¬‚Ä–4–i!ˆ4–i5–þþi¯–i­‚i¡–Ò¶þ¡PˆÌ!ø…˜çAÚAæAÈ…,át*äÁ¡ä(ÚAÚ…ÂyP¨ä!ä!P(ä¡PÈ¡ä!Úa¢ÂÂAÂ…ÂAÚa˜Çä¡ä(äÈÂAÂAÌ¡¡R(è!ä!Ú…ÂAÂ…Ú!…ÔHÂáJáô€ ÂAÚÁäa¬"+D+à@°BB@°¢e þÖAŽ@„à„à|þçE DÀþ!V D`þaZÖ>@žAÈ…Ú…þ¡¡ÂAná˜G˜g$ÍɾìÍþìÑ>íÕ~íÙ¾íÝþíá>îå~îé¾îíþîñ>ïõ~ïù¾ïýžìù¡ø¡Â!…váÚÁäÁäaÚ!Ú!äA èAJáæ!ä!Ú…Ú…ÌAÚ!P¨ÂAÂ!…ÚaÂAÂAÚAÂ…ÚÁäÈR¨ÂAÂAÚ!‘˜GÂAÚÁRèÚ!Ú…ÚAÚaä¨äÁèÁäy&ŠyR¨ÂAÚþ!ä¡ÌAÌ!…>`”áÄ@èÁä!,Á* (( D D+D ²B"›@!ï¨ m´ÒNKmµÖ^‹m¶ÚnË-Qõü±»üŽ<á´Î"ò„#9âˆAO=–|N;$µ#O8ò´Cl8¾†#O;¾šÓN8íÈÎ<$µ#O8¾¶C9¾¶#O8ò„C¬¯íÈÓŽ<áÈN;ò„#O8íÔN8$…#O8$…#O8íøj–<áÔIᘎ<íÈcN8ò„#O8ò„ãA)ÏèA†¯æÈ³L!þˆ°!ˆ‚ µ·!¤°Ð ¡ŒM6Ù+¤B{ ­ðO +ô# ÿ˜1?Äx 0z!9¾òÓN8ò´cÎ.üHFÒ6’ØÄxãŽ?yä’ONyå–_ŽyæšoÎyçžzè¢Nz馟ŽzêªËÄO=ÿ„CR8òÜò±íXb–¯dÐCO)˜#O8ò„#O;æÈN;áÈÓN8$µ#O8ò´Cl8ò´ŽYó$Y;ò´#O;ædŽ<í„#O;ó´cIáÐ#O8ò„C<íÌŽ<æ´#O8ò˜%vÈÃòè^8äÑŽp˜Cí ‰9èÑy´ƒXíG;HòE(Cþd‡<Â!pX&"A{B ‚ˆ )XH{B ‚¤`!+¨¡ o˜‚ˆ`!) úÑž¤@!HAR‚@B¨ƒ9äy„ãí=Ì!]ü£{ሆ$VÆ0ŠqŒd,£ψÆ4ªqllãëñ’„ƒæÈÅ?Â!sÈ#‹0G;|EzÈÃG;äÑ_Ñ#“G8äaŽpÄò‡<‘1s´#ò0‡<ÌÑy˜#$ ‡<Â!pÈ£$i‡9äa’´ƒ$áð•YÂÑbµƒ$æh‡<Ìá«v„Cæ =Â!yH&íG;Â!y„ãþx†Èz¤‹€‰"‚ˆ "XH{"‚ˆ )¨H8àNw¶g!)E `è æ ‰9豈ðC AD„ V)B ‚p HAbµ„@!ADPÚŠ`!)¨H{BàHò¾Òòòò`ò ò`$Ѿ$$ôò¾$þfòÐ$ñ‹ð z@$!‹ÐsþÐsüðüÀ` Êðb@æ@áÀò@á@æ ü æÐò`Ñ H‰•h‰—ˆ‰™¨‰›È‰˜‰õð$ô`¹Àæ æ á` $Ñô b@õ` ÐHáàcí íà+í á á@á æÐ$Aá@á á í íí$ÑòÐòò¾òòÐáÐòòоbò`íà+á æÐáÐÄíà+á á á@á íà+í áðð z@fæ ‹þÀsüÀ8üzÈ1¡‡ÿÀ2Á Ïðd1üÐIJ ü æà+Û žè’/ “1)“3I“5i“;Çõðí@,»ðÄÒ‹æà+d ôP  áÐá@á á á á`òòÐá á á@í@á`òÐ$òò$aôÐá fAá áÐáà+íà+í í áÐæ@,áÐ$ÑÄÒá`$aòÄÒòÐ$ÑòòÐæà+ Ïðb@,á` 5a‘üðzø§i‘ÿÀš§ùz(É8` ¹ þdíòÿ áÐá ·Àí@áÐá ’p“Ï Ñ)ÓIÕiSü á ·ðá í` ¾ò@¼c ô`$ÑòÐò0Cá áàcáÐòò`ò`áоÒòÐ$Aæ á æíÐHáÐòòòòô`$fAæÐá`á áàcòÐòá)á á@æ á áð‹ð @áà+í°3ÁRÇ Ï d@í@üà+æ`»Àíà+íð ’“Yª¥[Ê¥]ê¥_ ¦˜ÈþõÀá@Pº ÿ æ áЋ`òò ô ¥ð¾òòíá á1á fòÐò`$Ñæ á@ò`òò`ò`ò)*á á í@í á í æ@$Ѿb>ÖòÐòíòòÐá@æ æ@í fá+í@ » d@á`‹àüà1ñ–  z@á á áðò¾² üÐòò`Ñ aê®ï ¯ñ*¯óJ¯1‰ÿ íà+»ðá@æ í` í í í@ô –þðá á í í@,í fí@fAá1æ@æà©ò$í áà+á í áÐòòÐ$a¾$f!fò¨ó`òô`ô$a$Ñô`òÐáÐò`fòòP À dòÐæ ‹ÐtwwýÐmë¶-ðð @í í@ü í á ·Àá í@Û ˆ¸‰«¸‹Ë¸ë¸ ¹‘+¹“ë¸õðíòÐæ° ÿà+áЖæ í bPòP @,á á íòþæà+á f$ífA,á@á á á@íò`$íòоb$æà+’!á@æ á í íà+á á1í$a$Ñð æ@æ@í í@°Ê d ô`ò–ÀsÀ\^ðþÇ0ìP KÀÕÐ Ï dÐòòÿÐòÐô`¹ð$aá ’P+ÌÂ-ìÂ/ Ã1,Ã3LÃ5lÃ7ŒÃ9¬Ã;ÌÃ=ìÃ? ÄA,ÄCLÄElÄGŒÄI¬ÄKÌÄMìÄO¬Ãü`IJ ÿf!á°$ò þd ô` Ðá á í æ1í á á æ@íà+íf!á@á í á f‘1í@,f$Äò`ò`í íà+í0í æ`$Ñ$ÑòÄò`á`ÄÒ$’!áð¥ð z@íà+í°<à8zèã°ë€ ¾-P ÅàÅÜ Ï bÐòÐ$Áá í@»ðá í íðšß Îá,ÎãLÎålÎçŒÎé¬ÎëÌÎíìÎï Ïñ,ÏóLÏõlÏ÷ŒÏù¬ÏûÌÏýìÏù òòòp ÿþ æà+‹ÐòÐ$!õ ¥ðæà+æ@á á f¾bô á íòží f!íà+í æ fí`òòæ@í@á íòÐÄbó¨$aí æ@á`òíòòÔáÐá í0á æ æà+°»ðb á ‹Ð8qýð×þ÷ ×÷`8Ð8Ð(KÐ Ïðdf!áðòòòp ü áÐò`òÒíÙŸ Ú¡-Ú£MÚ¥mÚ§Ú©­Ú«ÍÚ­íÚ¯ Ûþ±-Û³MÛµmÛ·Û¹­Û»ÍÛ½=Ûòôô`¹ðá í á` í æ â@$a @á í@íà+í æ@íà+á áà+æÐóÐòò`á áÐá í á@ô`¾Ò$Ñò`f‘1fòò`í@í`$Ñ$a$ÑÄBá íóÐ$a¾f‘1á áð¥ @¾bò°rÝ8Ð8ýàìà7îúÐìP (`ÅÐ Ï d æà+ÿ á@Pº ÿ æ@í ¾måWŽåY®þå[Îå]îå_æa.æcNæ¦ÝH»ðí`$Ñ–Ä"õ ¥ðòòòÐáÐá`¾òòоòòÐò`žòÐòí@íòÐòÐæà+æ áÐá òÐòô@á@íòÐá@í`òò`òÐ$Ñê+á@æ ’a$Ñ$ñ‹  z@á á á` .Î8Ð8wP ¿\ ^ÀíÝÞí Ïðd`òòÿÐIJ ÿ@á æò`ò`ò`ò`ò`ò`ò`ò`òþ`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`þò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`òæä™“gNž9yæä™“gNž9yæä™“gNž9yæä™“gNž9yæä™“gNž9yæä™“gNž9yæä™“gNž9yæä™“gNž9yæä™“gNž9yæä™“gNž9yæä™“gNž9yæä™“gNž9yæä™“gNž9yæä™“gNž9yæäþ™“gNž9yæä™“gNž9yæä™“gNž9yæä™“gNž9yæä™“gNž9yæä™“gNž9yæä™“gNž9yæä™“gNž9yæä™“gNž9yæä™“gNž9yæä™“gNž9yæä™“gNž9yæä™“gNž9yæä™“gNž9yæä™“gNž9yæä™“gNž9yæä™“gNž9yæä™“gNž9yÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇþyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌ‘ÇyÌiGžpÚi'ynùGyÂi'œEè GqȇK>h‡^yÂ!øàpäiGžpä §zÛ¡×zÑ'þzÑ'œväiGžvè ‡`yÌ ‡ÞpÜ•§’Í g‚Û‘'yÂi‡Þpèm‡^žå Ç]yÂi‡çpÜíÙ]žÛ‘'yÂù`ô #žÛY䬳Özk®ÿkºÖÚ‹lÖñÅ‹uÒV;m_>ä=È ·zùqWžpä¹…zÛ¡×yÌ¡ÇzÌ¡ÇzÌ¡ÇzÌ¡ÇzÌ¡ÇzÌ¡ÇzÌ¡ÇzÌ¡ÇzÌ¡ÇzÌ¡ÇzÌ¡ÇzÌ¡ÇzÌ¡ÇzÌ¡ÇzÌ¡ÇzÌ¡ÇzÌ¡ÇzÌ¡ÇzÌ¡ÇzÌ¡ÇzÌ¡ÇzÌ¡ÇzÌ¡ÇzÌ¡ÇzÌ¡þÇzÌ¡ÇzÌ¡ÇzÌ¡ÇzÌ¡ÇzÌ¡ÇzÌ¡ÇzÌ¡Çz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9þèaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èþaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaþz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9èaz˜ƒæ ‡9xÖy˜Ã»àGÏ䱈pÐËõ=äQŠÌ#ô ‡<Â!v„ÃÏòh½Â!sÈ#ô ‡<Â!pЫôj‡9äÑŽy„CáhG8Ú1év„Ãò‡<ÚA¯v„#òhG8zz…Cí‡<ÂÑŽþp´ƒ^æèY;xÖŽp´#òг<Âá®pÈ£ôú€%¢¡2Ð+îZ„ØÌ½5üçþ?¼lxÞÙðE6|odxáPFÈ@¯pÈ#ÿh‡<ÂAsäâíG;&ýpˆG\â§xÅ-~qŒg\ãçxÇ=þq‡\ä#'yÉM~r”§\å+gyË]®rz„CáèÙ.þy˜£á°½Ú!qò°„èå.žµƒ^íG;ÂÑŽp´CáG;äÑz™ÃÏá‡9äzµÃ“v—<ÂÑŽpÈÃ~6G;zž…Cá W;äz…ƒ懻Ú!pþÈ#æhG8䎞µCô‡<ÚÁ³vÈ#€Ä3þ@†vÐËôX»Ù xžCȆæuÌ»^àÇ ñ =!òh½øŽží‚ôr—<Ú!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡pþ‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡þp‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡pþ‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡pþ‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p —v‡phyy¸…ži‡Ess 1¨z(…‡p0yy0yz1z0z0þž1yh‡pàw ziyhyh‡pà™vyy0yhžiž yz yhz yhži‡pà™p˜4s‡v‡p y0zyyyhžiyyhsà™€„gÐ20w‘‡p°Ï;7ð<~è‡!ð‚Ó;=dð~à‡°„gÐ2 —v‡pøzi‡p‡[øyy0‡p‡px9§}Z¨Z©Zªµ¸kÈ…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]Èþ…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]È…]؆ª=_ôM_õ¥¸ppž z0‡\øz1‡v8Kè™v y Køsè™v‡p‡v˜4¿“‡v —p‡pè™phy0y0yyÐ3yhyhz1‡ph‡phz yziy0yþ‡v‡phy‡ž ‡và™p‡phy0yhˆkyy‡vyz1yy‡€„gÐ2s —vX„”Ýb±á‡à$$/‚!ð‚!@¬á‡„gÐ2hsà™pyг]ø‡‡ yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyþyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyþyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy‡hØ2ønðoñoò.oó>oôNoõ^oönoòyyyyyyyyyyyyyyyyyyyyyyyyyyyyyþyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyþyyyyyyyyyyyyyyziyyh‡žÙ…hži‡Ew¡2Às(… —ps —v‡pw y0yh‡p‡p —p ‡ph‡p s˜´pèw™‡p ž1yži‡pà™vð³p‡ph‡phy0y‡v‡vs yhy‡vyyyhzižiypžizù€Ex†?zñ»Eàb®ß~КšÅ~ذe¨20yy‡‡žÙ~‡phyyyhþyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyhyh€×N^;yí䵓×N^;yí䵓×N^;yí䵓×N^;yí䵓×N^;yí䵓×N^;yíäµþ“×N^;yí䵓×N^;yí䵓×N^;yí䵓×N^;yí䵓×N^;yí䵓×N^;yí䵓×N^;yí䵓×N^;yí䵓×N^;yí䵓×N^;yí䵓×N^;yí䵓×N^;yí䵓×N^;yí䵓×N^;yí䵓×N^;yí䵓×N^;yí䵓×N^;yí䵓×N^;yí䵓×N^;yí䵓×N^;yí䵓×N^;yí䵓×.Ú.2ò4YÒdI“%M–4YÒdI“%M–4YÒdI“%M–4YÒdI“%M–4Y¢‰%šX¢‰%šX¢‰%šX¢‰%šXþ¢‰%šX¢‰%šX¢‰%šX¢‰%šX¢‰%šX¢‰%šX¢‰%šX¢‰%šX¢‰%šX¢‰%šX¢‰%šX¢‰%šX¢‰%šX¢‰%šX¢‰%šX¢‰%šX¢‰%šX¢‰%šX¢‰%šX¢‰%šX¢‰%šX¢‰%šX"‰%òÈ#I;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;òþ´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´#O;ò´ÓŽ<áÈNÛí„#Ï.ü´#9áœcI;áÌ#8bÐS%È›l†#O8lšÃf;lš#O;l¶³8›á,Î<íh.O8ò˜N;þò´#O;l¶Ãf8š‡#9á´Ž<á°I9ô˜z8š‡#O8ô˜³x;lšŽ<æÈŽ<æÈcNÛáÈŽ<á|°0Ž<á˜#Ï"ÿ_¾ù磟¾úëŸÏÏ<£l¶Ãæ?á´#O8òì›íÈ£òh‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pþÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈþ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#läa‰ðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãüø?þÁðãþüø?þÁðãüø?þÁðãüø?þÁðãü°„<øa‰pÈ£áG8äy„Cá° là#8Á ^0ƒìàC8Â>p8äy„CáG8äy„CáÇ„Klâ38š3‡<Ú!s˜cüÇâÚa‰¶…ƒMd`S)>À¦p´MíGÛäÑy´cæX\8æy„ƒMáG8äÑŽp´#ò›Â±¸¶…Ãòh[8Øy„£òh›ÌAv°©šk[8äy„Cá›Â!v„£|nÇâÌÁ¦vÈ£lú@)”¡2h.þ–`¥+mióñã–PÆÈy„Cáø›ÂAsÐâò‡<ÂÑ6y„CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíþG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´CíG;äÑy´ƒ<´ƒþ<´ƒ<´ƒ<´ƒ<´ƒ<´›„C,è%üC=P`Zàb`jàr`zà‚`Š ¶ƒ%Dƒ$ÈC8°I;ÈC;ÈC;ÈC;HùôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôþÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôÃ?ôùhB;ÈC;ÈC;ÈC;ÈC;ÈC;ÈC;ȃ%üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?üC?$´C8´›„ƒæìÂ?ÈC;°‰9,B8´›´ЃÐ>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ðþ>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Кƒ&<Ãâ„Ãâ˜Ã.üC;„C;°‰$ÈC;„ƒ<˜ƒÔ=”ÂÈC;ÈÃ<„Cè„=˜ƒ<„C;„ƒ<´ƒ<˜ƒ<´ƒ9ÈC8ÈC8ÈC8´ƒ9ÈC8°I;ÈC;„CÛȃ9°I8ÈC8„ƒ<´ƒ9ðY8ÈCÛȃ9,N;ÈC;˜CÛ°IÛ˜ƒ<´ƒ<˜=´›´ŸiN8ȃ9ÈCÛȃ9ȃ9,Î@‚2è°I8´Í"TfÍN&?|€%ÃÁÜÈC8ðÃjÊÃ.üC8ÈC8´C8ÈC8´C8ȃ9ȃ9þȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃþ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9Èþƒ9ȃ9°I8´-%ð=Àr,Ëò,Ór-Ûò-ãr.ëò.ór/û2=È>ÐC;XÂ-XB;°‰9ȃ9ȃ9ȃ9HÂ?Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=þÔ=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ôƒ9HÂ.ȃ9ȃ9ȃ9ȃ9ȃ9ȃ$ü=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=Ô=P >ȃ$ìB;„C;ÈC;„C;ÈÃ.ðƒ<Ѓ9ÈC8,‚9,N;,[Âȃ9„Ã℃<„ƒæ´ƒæ˜C;ÈC8°I;ÈC;ÈC;,N8°I8ÈC8,Žþ9,N8hN8°I;ÈC8°I;ÈC8ȃ9°I8´ƒ<Ì ›˜ƒ<„Ã℃æ˜C;„CÛ„ƒ<„ƒ<„ƒ<„ƒ<„›´Ã<´C脃<„ÔÂ3脃<´ƒ9ÈÃ"ØìŒS?|$<ƒˆA;˜ÃâðC8´M8˜Ã.üC;ȃ9ÐC;ðÙ<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„þÎ<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<„Î<€l;ÈC;ÈÃ.$ð›À=° <ЛÀ=° <ЛÀ=° <ЛÀ=° <ЛÀ=° <ЛÀ=° <ЛÀ=° <ЛÀ=° <ЛÀ=° <ЛÀ=° <ЛÀ=° <ЛÀ=° <ЛÀ=° <ЛÀ=° <ЛÀ=° <ЛÀ=° <ЛÀ=° <À2›˜ƒ` eè òDzq3Ï~´1ã‡þJ¡Œ?ˆ¡ò‡<ÂÁ…CG»øG8äŽy´CæG8䎌…#cáÈX82ŽŒ…#cáÈX82ŽŒ…#cáÈX82ŽŒ…#cáÈX82ŽŒ…#cáÈX82ŽŒ…#cáÈX82ŽŒ…#cáÈX82ŽŒ…#cáÈX82ŽŒ…#cáÈX82ŽŒ…#cáÈX82ŽŒ…#cáÈX82ŽŒ…#cáÈX82ŽŒ…#cáÈX82ŽŒ…#cáÈX82f޵CGíÐ=Â!ZèÁüÐ=ÌAdÈ(-tDsèˆæÐ=Ì¡#z˜CGô0‡ŽèaÑÃ:¢‡9þtDsèˆæÐQ;1ÕÇ9êq˜CGô0‡ŽèaŽUCò ‡9tDsèˆæÐ=Ì¡#z˜CGô0‡ŽèaÑÃ:¢‡9tDsèˆæÐ=Ì¡#z˜C[ô0‡ŽÂa‰[HBáG82Kð£òÇ<Ú!pÌ£òÇ<Ú!pÌ£òÇ<Ú!pÌ£òÇ<Ú!pÌ£òÇ<Ú!pÌ£òÇ<Ú!pÌ£òÇ<Ú!pÌ£òÇ<ÚQ „£G8æÑy„cíG8æÑy„cíG8æÑy„cíG8æÑy„cíG8æþÑy„cíG8æÑy„cíG8æÑy„cíG8æÑy„cíG8æ±,y,KáÄ-Ú¡£pèˆFáG8,Áy„cíG8æÑy„cíG8æÑy„cíG8æÑy„cí¨†Ú!pÌ£òÇ<ÚQ Ì£òÇ<ÚQ ´Cá˜G;äŽy´Cá˜G;äŽy´Cá˜G;äŽy´Cá˜G;ä…Cí°Ä.tDpÈ#:ÚÅ?äy˜#‹G8äŽv!P–ø€ŽÚ¡­vÈ£Ú¢QÂÑŽ…£òh‡<Ú!pȃæÈX8äþµCGáh‡<Â!p´Cá ‡9ä™CáÐQ8´eéÈíÐѲäA£pÈ£ò‡<Â!Ñvô¨ò‡Jñ =¡GÌA!´ Ðÿ¡¡þ>žAÈ ä¡t„ÂAhÄvÂAÚÁt¤ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!þä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!þä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!´¥ÂAÌAÚ!ä¡äÁäáÈ@ø!´@Î!¡t$ÚAGhDGhDGhDGhDGhDGhDGhDGhDGhäAÄ¡ä¡*€tÄ``hDGhDGÚ!Ú¡ t„Ft„Ft„Ft„Ft„Ft„Ft„Ft„Ft„Ftþ„Ft„Ft„Ft¤ÂÁt$zÄrÁä¡ä!ä!ä!ä¡$ÂAGÂAa€,,@ÂAG¡G¡G¡G¡G¡G¡G¡G¡G¡G¡G!`¾Ä¡€FÌAGÚÁt¤ÌAGÚ¡.`À @ÚÁt¤ÌAGÚÁt¤Ì¡<Àä!ä¡ÌAGÚÁt¤ÌAGÚÁt¤ÌAGÚÁt¤ÌAÌAÌAÂAGÚAr!t$äFä!ä¡$t$z$Nä!tä t$z$z$äAÄ`hÄþt¤ÌAª!ÌAGÚÁä¡ t$z$z$z$z$z$z$z$ä¡ÌA$áÂAGÂÂAÌaøAÌ¡GAÚAGÌA êAJÁä¡ä¡ÂAÚ!ä!Ú!ä¡ÌAÂAGÌA¡t$ä!ä!ä!z$Ú!´¥ÂAhDGÂAÂA[´¥´¥ÂAÂA¡GÌAÂAGÚ!äFæ!t¤º5ä¡t$ä!䡿áÚÁzäAô€ ÂAÂAÂÁÐa=+f!þ>ÀváÈ@GÚAÂáºuþþAGÚAÂaºUè!´…ÂA[è!´…ÂA[è!´…ÂA[è!´…ÂA[è!´…ÂA[è!´…ÂA[è!´…ÂA[è!´…ÂA[è!´…ÂA[è!´…ÂA[è!´…ÂA[è!´…ÂA[è!´…ÂA[è!´…ÂA[è!´…ÂA[è!´…ÂA[è!´…ÂA[è!´…ÂA[è!´…ÂA[è!´…ÂA[è!´…ÂA[è!´…ÂA[è!´…ÂA[è!´…ÂA[è!´…ÂA[è!´…ÂA[è!´…ÂþA[è!º5Ú!ÚAGÚAGÌAÂAÚAÚáÈ@þAÂA|ÅàÎÁ†Ρ` ( ÂáP Ä!8aÚ!LàÂA‚ Âá "Äp €ÄA|Û!Úá Äa À j äA¡P Ä!ªA–€2 €F6á*!â €` ªA–À(€Ä¡ÂaP `¤A|Õ@T@|Ñ@X@Ä·Ä7ÚA|ÛAGÄWÂáÌAhAÂAÚAGè!t¤$áhÄä!þ¡¢ ÚÁä!ÎÁäA|ÍAÄ×äA|ÍAÄ×äA|ÍAÄ×äA|ÍAÄ×äA|Í ÀÂAΡªAÌAGÄWGÄWGÄ ¶HA ÂAGÄWGÄWGÄW¡@ÌAÂAGÄWGÄWGÄWGÄWGÄWGÄWhDÂAÂAÄ×4ä!ÚAÂAÌ¡t¤$áÚÁäA|ÍA8á¡ÂAîΡÌAÄ×äA|Í¡ÀA|Ï¡GÄWÄ·@ÄWÚ!ªAhÄäA|ÍAÄ×äA|ÍAÄ×þäA|ÍAÄ×äA|Í¡äÁhD€Ah¤[wá´%,!hDÚ tÄ>@Ì!t$t¤´ÅP¶ä¡ä!ä¡ä¡z$ä!z$ä!Ú¡GÌÁä!´¥ÂAÂA¡ä!Ú!äÁt„ÂAGÂAGÚAæ¡zD«ÛAGÂFÂFtdYÂAÚAÂÁäÌAÂAÂá áô€ Ât¤áaa.f³»> €AÈ Ì¡Gþ!Ú!äÁváÂAÚAÚA|å!ä!z¤ÂFt¤ÂFt¤ÂFtþ¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤þÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤ÂFt¤¡º5ä¡¡z$äFäaÈ@þFt¤!ΠΡ@ÄÎáH@Ž¡và¦!Ä¡ ~A4¾!*AÐáäáZ€´^€Ú!äáhÄv@!†aÎa@N€Äá*`Äa@Ä–AÎá àÌ¡@ÎA@Á–A|à|[ ÂA¾AÎá^€ÚáN€Ä`á|[€´^€þÚ!ä¡ä!ä¡ÄwYΡä¡äAnAÂÁä!t¤ÂÁèAø!Ú!h Ú!†¡` ( Ρ\À¡8ahÄ€F‚Úá "`€¡Ô X@ÎaYÂ@|Ï¡ªA¡ÀÂApÀ€ÄÁÂFÎa@À¡GÌá& Ì!8Ìá "``ÂÁÀ€Ìáp €Ä¡ªAÞ  Þ  hÄÂFÌ!Ì!ä!ÚáäFÌAvAÌäÁèAÚþ!ÌA$Ú!–E«ÑAÁÂA4ÀΡP` ¤áª!–€2`@«§ Jà¡à "@X@¡ Úáp €ÄFÞ  À×®]¸‚íÂ! ‡°]¸váÚ™“t a8yáä™ÛÅ/\Ayí$É3'¯$zðJ}(Ù®d8yíµ W²Ý¼pá Âkg®dÉyæä…+Ù®d¸’á䙓ΧÏvá Ê '/\ÉpNK”×.œ¼pòÚ…k®]8§í•4GÏœ¼pò ÂC'ÏœÓv>Û•ô`éÙ2%Ã\ô¯°áÈÿ@1þâ}?°øÀBËñfÍ ÄÏÃ"ezȘ“N^¸ôÌÉk'o?yæä…kW²¼pòµ“gNByæä!”gNByæä!”gNByæä!”gNByæä!”gNByæä!”gNByæä!”gNByæä!”gNByæä!”gNByæÈƒ<æÈƒ<æÈƒ<æÈƒ<æÈƒ<æÈƒ<æÈƒ<æÈƒ<æÈƒ<æÈƒ<æÈƒ<æÈƒ<æÈƒ<æÈƒ<æÈƒ<æÈƒ<æÈƒ<æÈƒ<æÈƒ<æÈƒ<æÈƒ<æÈƒ<æÈƒ<æÈƒ<æÈƒ<æþȃ<æÈƒ<æÈƒ<æÈƒ<æÈƒ<æÈƒ<æÈƒ<æÈƒ<æÈƒ<æÈƒ<æÈƒ<æÈƒ<攎<áÈNI攎SáÈcN.zXÂÏ9¨šs2Œ1v€4â,€4ç„Ó ¿àÄɨV€2Å7Hó hlsŽ9á|À/✃Ìá ªwL g cÀ9w@ÐM¿àÄÉáT€8焳Œoð‹9çLÛ˜cN8Õ Nœ,€*8ç€c2„Ó ¿„sN8ç|À/ ÌáœÎ9ᜃS;焃j8瘎<’ì¢IIíÈN;þ>µcÉ?¨žcN8È8× ÑÁ9Ë Ã9è„£ Û£A çtÀ6ç(ÐÀ/çh€H7#7ŸœÎ $„ƒÎ ;è[32„ƒª9ËÎ2 z Û ó 5›s: ° 0úšóÍ¿œƒÎ 5t€0á óI;ËÎ9æœs â ó æTà°qç 1A8æ´ƒª9ªæÔ,$»d%O8>µcÉ?¨šsŽ9í Ä¨.€4áL#L8ǼÀ9Ë  C8àTÀ9àt#L8ǼÀA8Ë@B8ßhPC8ËÐN8'  :/ÐpN7T":Ÿ€S³þ95›S³9¨ G;ÂÑsÈC¹h‡<Ì!vÈ£òØÅ?äÑE´Cá‡8Ä@zXâí(I8ÚQsÐÃò‡<ÂÑyÐÃ)I8ä“vÈ£% G;䎒´£$ô‡<ÂÑy„Cáð‰9Úá”p”$ò‡<¬˜£$ô0‡<ÂÑŽ’˜£$íÈJ8äaÛ…CæG8äy„ã†È`Ž’˜ƒ‹0Œ÷ÈG=àè£aøÑ¨@$8¤ H€~„aàÇJñ =¡$í(É?|ÒsìâòhGI│øÄò‡OÌ!pøÄò‡OÌ!þpøÄò‡OÌ!pøÄò‡OÌ!pøÄò‡OÌ!pøÄò‡OÌ!pøÄò‡OÌ!pøÄò‡OÌ!pøÄò‡OÌ!pøÄò‡OÌ!pøÄò‡OÌ!pøÄò‡OÌ!pøÄò‡OÌ!pøÄò‡OÌ!pøÄò‡OÌ!pøÄò‡OÌ!pøÄò‡OÌ!pøÄò‡OÌ!pøÄò‡OÌ!pøÄò‡OÌ!pøÄò‡OÌ!pøÄò‡OÌ!pøÄò‡OÌ!pøÄò‡OÌ!pøÄò‡OÌ!þpøÄò‡OÌ!pøÄò‡OÌ!p”¤ò‡<Â!‚”¤ò‡<ÂQ’pÐC± ƒ$þQ³s€8ЈchÇ9±ŒÔ 8‡9‚ðƒ;Ð`àôµ‰ À•Ç2@ÞR@ò¨,8!i4@á8"Lðƒe fÈ€8–!T…cPPeŽslâ°@%±Œ *Õª6q¸WáXFÀQ3p,¾uÀÐQ3s ãæ¨leÍÑIÜBñI;äIüãæ@Ç9ÀŒVàÒÇ2 Tu¿8G88qsþ€£ˆ@Æ‚€…o@ß¶!}}#¿‡9†±€s˜Uá@@ä,CáX†Àñ üàÆÎatœæ8† " üÂà8A ÌÑüâ@Ã3Âs,Cæ@Ç9¾€_l#ÃXÀ6–i˜x:!€s€ãæ8”+kŽsè UòÄ-ÂÑŽpÈ£òh‡<Â!vHâæ@‡9ÐQÙe@æÐqpœ#æÆÀ±ŒˆãâX†ÎpœC_È @8–ià„ Ç2pŽoàà0Ç0Ži ÚÜ9ÌsœþÃè0Ç9Ìs  ••‡$hᔂ„C·à‡<ÚŽ’X"ò=äA†’@âóGIÚa»vø¤> GIÂá“‚„#+í‡<â”pÈ£ò‡<Úá“pø¤%i‡<ÚásÈ£áG;JÒŽ¬„£%i‡9äŽv„Ã)íG8äŽvÈÃò=Ú!v”ä’xÆÈP’vÈ#–¤Ô÷€Â@êüà>bƒ+p=W{ Æ,â C8äy„ãáG8J²‹„£ò0‡9äaŽpÈ#‘G8Ú!v”$íG;JŽvÈ£% G;äÑŽ’„£þòhGIÂÑy´£$áh‡<ÚQ’p´Cí(I8Ú!v”$íG;JŽvÈ£% G;äÑŽ’„£òhGIÂÑy´£$áh‡<ÚQ’p´Cí(I8Ú!v”$íG;JŽvÈ£% G;äÑŽ’„£òhGIÂÑy´£$áh‡<ÚQ’p´Cí(I8Ú!v”$í íPáÐòÐ%í íPáÐòÐ%í íPáÐòÐ%í íPáÐòÐ%í íPáÐòÐ%í íPáÐòÐ%í íPáÐòÐ%í íPþáÐòÐ%í íPáÐòÐ%í íPáÐòÐ%í íPáÐòÐ%í íPáÐòÐ%í íPáÐòÐ%í íPáÐòÐ%í íPá íàí á æÐôòí ç »@’ðæeáÈÞÞ€ Ë àpàÐ ð àpœpæp œ'€ÓpAP†*èÐÝ0Ò° àpáá€*àpà n°Ûð ^P €Ý¿çÀ `Ë àpà° þà €¨âèÐËÒpèÀ ÓŠ  Û€ Ý¿ççÐ  Ûçáæ€*áP3à wç`à`àЖ – æòòò`á ÿ`çàÈápÑ€pËæà° çÈàpA@w°œÀœæà ›p`•p˽å@¨bçà ÈÏ Ê Ëà° ˾åçæpè wáp /à œ°ààpÞ° 0P ç° pþá˽å@á° `à° à â° fápæ `怒 >í æÐ%’ðççà¨àÞÀˆ° à° à^á° à`Ë ç›pî•Ëà€*Èç° ˾Eá° 0P ç`çç`çç`çç w¨b瀖° íí%Aæ ÿ æ 8±>Qd@òP ÐòÐò`á0 !áÐá á á áá æ ííò`òþò`òí á`;æòòÐá æÐá áÐòí áPá á æÐáÐòô`ò¶#áÐá á áPíà !áðð z@á`%Ñ‹0uŠú` HYÇ1à„P©–ݳ À dÐòÐ%ñá@í æ° ÿ`¶Ó%aòò`òÐáPæ í%aòÐáPæ í%aòÐáPæ í%aòÐáPæ í%aòÐáPæ í%aòÐáPæ íþ%aòÐáPæ í%aòÐáPæ í%aòÐáPæ í%aòÐáPæ í%aòÐáPæ í%aòÐáPæ í%aòÐáPæ í%aòÐáPæ í%aòÐáPæ í%aòÐáPæ í%aòÐáPæ í%aòÐáPæ í%aòÐáPæ í%aòÐáPæ í%aòÐáPæ í%aòÐáPæ í%aòÐáPæ þí%aòÐáPæ í%aòÐáPæ í%aòÐáPæ í%aòÐáPæ í%òÐá á`%ô§ò`ò° d ÿçeà€ ° Þ0 H°áP €½à $° ÇP;à èp PÛà PˆÝ Û`l°Pv$ àp p`èeæe&@"pæÀ  Òà @Ûp @â° æË æP `àÐ Š° æÀ Ë0$ Ó 5Ý¿Þð° àp$° èPþ Û'@Òà ÇæÎPæ 9eÎàpPí ·` %ÑòÐY! ÿeçဠà à° ÃÛ° çÝ¿æÀ `àÀ pˆ0 4° Ûpá€lpÞÐ ð á瀽zÈà° 8± ° Ë Þ0 ð Ûpàä» àpà`ÛÀ ° áp €pçeç€]°à° áà Ó¿Pvá° Û° `Û°  wPfPfà`ä eç ’p áàáPí%! ÿþ€½æáç`w°œpÛÓ0Š`ÈÈ Û° eá° Ó0Š à€ ËÒà ÛÀ Ë Þ0 ð Ûeç@¾èÀeççççÐÍz‡ÛçЖ@ >Q»ÀNa–ò`ò`bPòP `ò%Ñá æ á æ@í á í íí¶côà¼íPííòôàíPíàíPí æPáPí á@æ@òÐ>ÑòPópá á æ@NÑá íòÐþæ æà°Ï dPÑ‹°¨S…S—u_—Ú\ça0 að’ð @Ÿ-áðò0òÐò° ÿPáP%ñÙô`NaòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐþ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòÐ>aòPòÐ%Ñ%Q%íŸí@æ z ÿ wÞÛ€ ­"P Û° ° à€Ý€ ,p à`È0ÞAÒÇpDf•° á0 8PðGÛ wÞâppàþß0 wÝ€ ,`ÈË æÛ° à Ûà €Óp€P Û° ð ,° à° oà@Yà° Óà*Ûð 8PðGÞ0  Þ0 ° Þ0 ° Øë ò ´ í í æ áÐò–ðPæ Þp ÈÛp Ê€ ° Ëàà àà @Ûà @D? ¿ è €æ0 Š ×À ÛÐ$`ÈÇPFô×€ ° æÛ° ° Ë àà -@†| pà Øë Õ@¹° Çð@ôþàà@Ûà Ó Ûà lpÞ0 ð Þe-@†| pp Ë Þ° Ë Þ° Ë Dï 9p àà 9@ôÎÛ€½ÞÐ’p òÐò%>–ðØKôè`àpßP@Dß ð Dÿ° Ë P¶ Ë ÞÐ ð ×p / Û° @Û0 °ϰ e-@†| pà Ó qí›àÀ9Ëq œ³×À9ËáÍ:‰æÀy“'i—¼pò虓NÞ­íÚÉC¹H^;”íÈ ´ôA^;”òÚÕĉ²]Íp9å…k®f»píä…“®¼þpíäÑ3G/œ¼vòµ“Nž¹vá䙓g;”áäµËi.\»píä™ ×N½p8ÃÉ 'Ïœ¼v(ÃÉ£gN^8yá>@z¦‡ŒÉpæä-úYòdÊ•ÿøÀ2e0=&P˜žéÓÎ\ÍíÂÉ 'ï¿v(ÍÉ gNž9œáp†Ë.g¸œár†Ë.g¸œár†Ë.g¸œár†Ë.g¸œár†Ë.g¸œár†Ë.g¸œár†Ë.g¸œár†Ë.g¸œár†Ë)œœÂÉ)œœÂÉ)œœÂÉ)œœÂÉ)œœÂÉ)œœÂÉ)œœÂÉ)œœÂÉ)œœÂÉ)œœÂÉ©þpÌ‘'”Ú1GžppjÇœšÚAé2$ùG"‰¶ñ‰¶Ç›m¼1ÇG‰ :oÀñf òÆt¼ÇÇk$ gƒÀ‘‰À‘kÄÙÆ›m¶ñ&t®ñÆ sÀñf›k$2Çœk”ÜæšmÀñf›k¼1gÀYÓÇ<Í‘h‰ÖTÒœk¶'%·¹F¢m¼ÙÆ›m¼ÙF"s$’G’[, Ç”ÚA©yÚ‘äpÌ‘hd,¨d›e0Çs®9…`Áp$Ò`‚5ƒ škœ¹,¨äšm¦Á8·A€k$2ÇÌYFo¶™‡xþàoÀñfÍcPp€JˆÄ‰œ †m®qæ‚° ‰–(`D®™‡x@s–Àœm– œm– @¢aØæšaØÆ›aØÆs¼1ÇKni'yÚA)yÚ‘§IþñÆ s¶¹Æ›5· €_Ö¼f <ð ‹¶YFoÀ1g¶¹f ¨f€m– Ž`Aœm–Às¦Áa€8âg.°Ö‚J¢ñf¶¹f¶ñfÖ¼fÍ9G’\ä §šwá§pä1i‘v©‰Œyä)ÅyÂi'sä Gžpäi'œv‘'œv‘'y‘'œväþ1‡žpä ÇzäiGžpä1§¦ppjGžvP Gžv|’'œv‘§pP Gžv‘'œv°¯©šÂA©œÂA©œÚAéHžùC œÂ±D2ÿÿ ÿ€þ`E26!Šd¬!¢ì†Y|@ÏøPy„ƒò G8èaŽ\üÃ$íG;ry„%áhG8äŽv„£áG8ÚŽv„CáhG8Úy„£áhG8äŽv„£áG8ÚŽv„CáhG8Úy„£áhG8äŽv„£áG8ÚŽv„CáhG8Úy„£áhG8äŽv„£þáG8ÚŽv„CáhG8Úy„£áhG8äŽv„£áG8ÚŽv„CáhG8Úy„£áhG8äŽv„£áG8ÚŽv„CáhG8Úy„£áhG8äŽv„£áG8ÚŽv„CáhG8Úy„£áhG8äŽv„£áG8ÚŽv„CáhG8Úy„£áhG8äŽv„£áG8ÚŽv„CáhG8Úy„£áhG8äŽv„£áG8ÚŽv„CáhG8Úy„£áhG8äŽv„£áG8ÚŽv„CáhG8Úy„£þáhG8äŽv„£áG8ÚŽv„CáhG8Úy„£áhG8äŽv„£áG8ÚŽv„CáhG8Úy„£áhG8äÑŽpÈ#ò0‡<èy„c8 ‡<Â!sÐÃòG;Î!ZèÁÿP’9žaoDI×È5Ì¡$ÊzcÞØ†7®q %mùFe){mxãàð†A$r sTÛÈf%r sHdæð‘9®±e`¹†9¶±Ùk˜C´¹†7¶!‘k׿ífÍaIÜB5 ‡Iäa“Hâϸ†9žqmxãÞ¸ÆÒžq o<ãþ¹†A¼±Yo<ãÄ]8–¶ksš×Üæ7ÇyÎu¾sž÷Üç?zÐ…Þ”„CíÀ^8Ú”„#'í¨‰9Úq 2XâÞ¸†7®á£ÍzãÞ¸†þD®á âz㔽†®AÙkx㔕È5$B\Ê÷>º†7®¡¤kPö!®7®!»?cج7ˆ+‘Í*鹆7®AÙk(éÞ°»®á£kxC–¸…$Úy˜Cá@‰9ä!‰xãÙ¬7®¡$pPö¹eÁ±Yo\Û•q} `€ܬ7ìnwÊ.ÿ!®7®wo\Ã×`$²YolÖGÄUq½±YoØÝ×È5¼q o\Ã×ðÆ5¼q o\C"×ðÆ5ä!‰\„£&æ‡p@ sIø»óâò†kðâò†kð†kðâR’€Íþ¢¬Í’ˆkð†k绸#.o¸o¸o .o¸o¸oØ,‰Ø,‰xyZ8!yhyy¸…@‰v‡p°„p‡p@ 2hµRøxhyh‡p@‰v‡p‡p“yy”h‡p0‰p‡p‡v‡v‡B‰p ”zÀ‰p‡vs@‰v‡p‡p¨‰v¨ s‡ph”hs‡v‡vs ‡p@‰éB‰v””0zhyhœhyh”øHØ= ”“X†SÅUD8pÅW„Eø‡0ƒ€eø1hy‡v~@‰þvy¸~s‡p‡pÀ‰jyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyþyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy‡v‡ph”8!y“ȉvþ@‰p‡ps‡phyh‡[ Ià‡gðâò†g0o¸s¸oØ,o¸¹oØox†kˆsð†g¸o¸†mð†g¸oÁÍ’ˆgð‘Íò†gð†g0‡k0‡gð†gØ,o°;oX>sx†Í2o¸ox†kð†kð‘gØ,o¸‰¸sx†kð†h0‡g¸o؆g¸sð†ÍÚ†Íò»K‡kð†kâò†å I¸IÀžv@ Kø‡"…ÔH•ÔI¥ÔJÔhH€PKåÔN½oM yhŸhyhKøOeÕVuUç“KØy0yyhz0‡\øþ“‡v‡E ‡p“ƒV³„hy”hy0‡p‡p‡ps‡v‡p‡vsÀ‰p‡vÀ xhy‡v“¨‰p@‰vð‰pÀžphy‡v‡v s‡v@‰v‡pÀ z0” ‡ph‡š”hy8¡phyh‡p8!y‡(`Ð2yhs‡E`Å‘]E~0Ù“5Ù0YÉà‡€„gÐ2œø‡p@‰éÚ~¨‰p yyyh‡y‡v‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡vþ‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡vþ‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p‡v‡v‡p@‰p@‰vss@ s@‰pyy”hyhœ”¸2„ÁhˆâJ‡Íz†"õsˆ†Íò†åóK}oØ,Ù¬hØ,‰¨Toجh .op¾þ°À€€Íò†kH‡h°;oجh€ÔgˆÔtX>y°„\°„p‡ph‡phs‡phIø‡Íòæoçpçq&gq~oxo(çu&çt¸†mˆ†mˆvçg¸†gðz¦çv„[0yhyys“„Ðg}ކ…vè‡Þ¬gð†ÍÚ†sZ¨‰p‡v@‰]à‡vy0 K0 ”h2 y(…0yyh‡p ‡œ0zs@‰v‡v@‰ph”hy”8“y0y0yyyy0y”h‡p‡p‡vy‡v@‰p@þ‰p0œyh‡yh‡p‡vœhy0y”8¡p0yh””0y0‡šø€EP= y s‡p°’uìUä†ã‡°„]ø2@‰é’~‡v¨‰]ø‡pÀ‰p‡p@ s¨‰p‡pȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpȉpþȉpȉpȉpÀ‰p@‰pȉphys@‰p‡v@‰p8!yyyyÈ2„xoކkˆsx†kxNކkx†kx†h¸NÞ¬gˆ†kˆpކÍz†kxqŽpކkÀñhçhجgجg¸†g¸†gðægðæh°o~†kxNÞ,Nçh¸çh¸†hðægðægøæhx†kx†kx†kÀñgøfs„[yhz0‡šyhIø‡hx†kx†kxN~†h¸ûІg¸†gàäg¸ûІgˆ†gجg¸†gÀñg¸†g¸†hx†kx†hx†hx†þkxo~tx†h¸†g¸†gˆ†g¸ûІg¸†gàdûº†g¸†gàägˆûzN~†hx†h¸†g¸†hx†Íz†hx†kˆ†kx†h°¯kx†Íztx†kx߬g¸†g¸†g¸ûІgˆ†g¸†gˆ†gàäg¸†vЄ]‡p‡p‡v¨ sIø‡gجgˆ†gàäkˆ†gˆ†kàäg¸†hx†hx†hx†hx†h¸†g¸†hx†kx†h°¯h¸†hx†hxN~†kx†Íz†kˆ†gˆûІg¸†g¸†g¸ûІgˆ†kx†hx†kx†h¸†gˆ†g@‡gجgKØþy”hyy¸~@‰ph‡pX„‡v”°„À s‡v‡Âss‡p“yys@ sð z‡šhyhyh‡pÀ‰p@‰p‡v‡p@‰v@ “‡v‡v0‡š‡š‡v” ‡p‡vss¨ s‡p‡vÀ‰p‡pø€Rx= ƒv¨‰vX„ÇF~äç‡(`Ð2h”0yàyyhsØ~yœh‡p@‰p@‰v‡p‡ph‡p‡p‡ph‡p‡p‡ph‡p‡p‡ph‡p‡pyáÚ…“N^¸vþáä…“®]8yáä…kN^8yáÚ…“N^¸váä…“®]8yáä…kN^8yáÚ…“N^¸váä…“®]8yáä…kN^8yáÚ…“N^¸váä…“®]8yáä…kN^8yáÚ…“N^¸váä…“®]8yáä…kN^8yáÚ…“N^¸váä…“®]8yáä…kN^8yáÚ…“N^¸váä…“®]8yáä…kN^8yáÚ…“N^¸váä…“®]8yáä…kN^8yáÚ…“N^¸váä…“®]8yáä…kN^8yáÚ…“N^¸váä…“®]8yáäþ…kN^8yáÚ…“N^¸váä…“®]8ò„#O8í„#O8ò„ÓN8ò„#O8í„#O8ò„ÓN8ò„#O8òÈÓŽ‡íxއ%šèa8í”8O8'š#O.dHòÏ5×Í3×Í35FóL›?6YãŽÏDs<’Ü"I;%¶ÓŽ<í˜#$ÿDóL4Ï\óÌ5Ñ\óŒŸ×<Í5þ;>³ã5~6Í3;>sM4ÏDóÌŽÏDsM4×DóL4MîèäŽÏDSã3;^Í3Ñ\Í5Ñ<Í3Ñ\ã§ŸÏ Í3Ñ<³ã3è>Í3~^óL4ÏìØäŽ×M“Ñ<ÓŽ$¹ÈŽ<í„#9æì‡íÈÓŽ%á˜C<íA<¥|Ž<ᔎþ9ò´Ž<á´N;áÈÓN‰í˜ãa;&šcb;á´N‰£¶3O8ò˜CO8ò„ãa8¶#O8òŒ <ž‡#O8šއáÈŽ<æÐŽ<íÈÓŽ<áœhN‰íÈŽ<æxØŽ‡,²ËbÈŽç‹ü³=÷Ý{ÿ=øá‹ï=?,¢Œd˜Óއáüމ»üCO8ò„#O8%†ãa8ò˜#=ÂAsxˆá ‡9@px(í(‘9èz˜ÃDæG8LŽvÈ#& ‡<Âa¢pÈ#í‡9Ú!v<¶ ‡<Âá¡QÉ#ò0‡‡Ú!v˜¨òhljÂ!pÈ# Ç<äÑ…£òG‰Ú!pÈ#(0þ@†™C‹Ø’“¬ä%3¹ÉN^2?>PŠgè òG‰þÑŽpÈ#ò¸?Jz„£DæðP;äÑŽÊD£2ѨL4þ*ÊD£2ѨL4*ÊD£2ѨL4*ÊD£2ѨL4*ÊD£2ѨL4*ÊD£2ѨL4*ÊD£2ѨL4*ÊD£2ѨL4*ÊD£2ѨL4*ÊD£2ѨL4*ÊD£2ѨL4*ÊD£2ѨL4*ÊD£2ѨäÑs”¨æh‡<Úy˜ƒò‡<ÂApУæ0Q8Ìá¡pÈ£òhÇ-ÈÐI8÷2‡‰ÚQ¢vÈ£m‡<Úa"sÈÃôP­9ž«ð™£ —G:èq"s ãáæ0‘%h Kx¨æG;Â!ÏÉC&—Ä"$ þH,bå+_„$V~ò“kbæ&·„Ís®óœCbæ‹ÐùÊs®‰¡çÜ’°ÄÌ!arHhÂæØ¹É!arH,B€úÌ!! K˜|’°-¢!sÈ#òG;Â!vx¨ò„&$‰¡]X$$árHhB$°nrH,B¼É!!xMHB'_„É!±Ihb终†9ä…C·øG;äÑI¢æðP;È€s”âòh‡‰ÚÙpÈ£òh‡<Â!pxÈ ‡ ’ñÃ,Â3ü´ƒ<´ƒ<„?È=„=˜C.üè˜H;„C;ÈC;ȃ9„ƒ<„ƒ<„ƒ<„èÈC8ÈC8ŒŠ<„C;ȃ9|¡!¡!&¡.!6¡>!F¡N!VázÀf¡z€~€|€táx€¡”!j¡|€|€t¡d¡h¡¡ ¡¤azz€¡|€ü¡z@zzÒ-ì-ÜþÂ.D¢$î-D"-ÜÂ-ÐÂ.ÐÂ.Ð&ÒÂ-0¢(Þ‚(ÒÂ-ÐÂ.ˆâ-ÐÂ-ˆ"&2â.0â.ÐÂ.”â-0â-ìB)ÒB$2â.0"&#-Ü‚(î#î-ìB)î#ÞB)b"-D"-D"-ì#Þ-`"-H"#J¢(î&FÉ„ƒ‰˜ƒ<„ƒ<„C4`â.ÜÂ.ÐÂ-Ђ$ÒÂ$ÒB$ÒÂ.ÐB0Þ#ÞB)F"-ìÂ.Þ-`b)îB)Þ‚(Þ‚(îÂ-ˆâ.0b$ÒÂ-ÐÂ.ÐÂ>ÒÂ5˜ƒ<´ƒ‡„ƒ<„=˜C.üƒ9ȃ9ȃ9X‚‡˜Ã¨ˆ=Ôƒ%|@8ŒJ8´C8þÈC8ÈC8ÈC8ÈC;ÈC8ÈC8x=„ƒ<„C‰´ƒ‡„ƒ<´C‰´ƒXä™?ÄȈ¡vËùx,˜%nþù’gô Cz‘'œÌ j—ÂiGžpæÉ¨yÂÑÈœŒÚ‘'yÂÉ(œv‘ǜŒ<°p€†86àqŠD@a P‚  þ0 ´à Á ¦Á4ÄÓ@@C¤€†HÃ/hˆ¦…4D hˆ‚L ÷`‡†˜`˜NÐ(4ÄÒ`ˆ=¤Á‚i° !ph‡†À¡!phˆ4\0 LÃÓ`¦Ái `.˜C0 4D aACÐ{0ÄÒ0@C ñ‚†`hˆ4ì! 4„Ó À4 0 LƒÓ`ˆ=¤ÁLà 1ACìÁ4Dhˆ4bi0ÄÒ`ˆ ~R´€D)J1ŠRXB­€( !@C¤a€Ÿˆ-`i XŽ‹¤@Cþ,OáG;4Bsd¤YžFÌÑ0$#æ‡9ÂÑy„##æG;äaŽŒ„ƒ!¡‡9Âa.y˜##æ0W8äy„##ô0‡<Ú‘‘p´##ô0GFÌÁŒÐ#òhGFÌ!z„Cí ‡94y„##æG8äŽvdÄòhGFÚy0$#áÐ=ÂÑŽŒ´CáG8ä±a  Å  ?€ÌA#ÂA¡¡þÂ!#ÚAÂ!#Ú!#ÂA#Ì!#ÚAÂ!4¢ä!ä!ä!Ú!ÚAÂ!#èÁBÚAÂ!#Ì!"#¡ä¡ä!ÚA¡äÁ¡¡ÂABÌ¡ÂA¡ÂAÂAÚAÂAÂ!#Â!äÁäÁÂA¡äÁÂ!äÁ‚"BÂ!#Ì!ä!2"äÁä!ä!2ÂÚ!ä!ÚAn¥äÁ4‚!‚‚Â!#Ú!(¡ä!ÚAÂAÌAÂAÌ!#Ì!Ú!4ÂÂAÌ0ä!2‚"Ú!ä¡ä!Âþay4Âä!Ú!#Ì!#Ú!äáø¡äÁäÁ,!BÄ øÊ>@èÁä!äÁ2"äÁ2ÂH3æ¡äÁ2Â2¢ä!ä!ÚA#¡ä¡4"4¢ä!ä!2"4‚!2¢2¢¡2Âä¡ä!Ú!Ú!ÚABÌA"#ÂAÚÂAÂ!#ä!>@€AÈ 4¢Áÿº°¾BÄø!® d4®à b !âÁ áô@ ÚAÚ!#þ0váä¡ä!‚âÂ!(Ú!(ÌÚAÚ!#ÂAþÚ> ¼ôK¿ô^zá0!a¶` šà´LáN D!: Ž€8€H`ø´ÀK«øaˆáK«€DŒ¾4æøÁ¾´D â´ øaà´ ¨øÀ´æAĬÁK«æÈA  øÁà!ªà¼´ pAĈÁK«€Bæ´ N…uX‰µXõX‘5Y•uY™µYUYµàYáÔ¤µX« ZáT ¾T šµžA4áð!D Ìõ\sÁ¶ L ážÁž¡ð!êð¡R rAž X? þ#Â43¢ÂA#ÂA"ä!Ã4¢ÂAÚÁ2"ä!èA#ÂAÂAÚA#ÂÁ2¢ÂA#ÌAÂAÌAÌ!#ÌA#Ú!(ÌÚA¡4"4"ä¡ä!4¢ÂAÌÁ2¢2¢2"è!#Ì!#ÚAÚ!#ÌAÂAÚ0Â4ç!ä!äÁè¡äÁ4¢‚"ÌAÚ!Ú!2¢ÂAÂAÚ!äÁè!(Ì V#ÂAÂ0ÂAÂ!ä!2‚!¡4"ä!ä¡ä¡ÌAÂAÚ!(Ú!2‚!ä!iwÂAÌÚþAä¡Â!#Ä€ä¡<À`Ã!(ÚA#¡¡ä¡ÌA#ÂA–'#Ú!#Ú!2Âä¡¡ÂA¡ÂÁ2¢ä!‚"äÁä!ÌAÂA#¡7#–gÚ!#Ú!‚¢4ÂäayÌ!#Ú!#>”AÈ #Â!Ḁ ø€ø € XÄbÀ a‚)8â!f!>À”AÈ ä!ä!þ!"äáTøha åTva e†g8†g˜ eráváŒà‡ ~ÀKO!BB!9 aÒ€€€ø‰¡Øv  øAþ8ÀK… ~€DÁ ÀÖa €¸á€6ᇩ<à¨aŒàþ¡€> Œ€¸á`6ˆ… ¤àŠ©.à¨a~ØÒ¡à> ~x €zÁŒàü!@~à ¨.à¨a àþa Jàª`v Ši¹– l9—uy—y¹—}ù—9˜…ù‰¡`˜ù˜‘9™Ÿø®Pä!Ì5¨9DÀ$¶áž8¼aZÁ2‚š3"D@ÌÁvA>¡–wà eráførára åvá€áþbxn!narahx eráúf8 !å %†g8 sar! s! w!n!h!v!<:v %†g8†i!b8hÁ£wA…s!†saranahRn!b8b˜~:†oa†cv†c8bRvV8 !eraráb8v!n! URZ…sA…sávRvá:n!v!va†w†w!n!na€arn!v!v†oRva…sÁ£ÿA#bäÁ2BÈ€äÁ>@¡ä!ä!2"ä!ä!äþ!‚"2"ä!2"æ!¡ä!2"ÒW#Ú!ä¡2"ä!ƒÂ!#ÂAèÁä!Ú!ä!ä!ä!ä!iå!ÂAèÁ¡ÂA¡2‚!4¢ä!ä!> žAÈ ä¡ÌA€ñ;¿õ{¿ ø¿ElF \Fÿ! f! < žáÈ ä¡2âä¡ä!i]”¿ù!ÀEl¿ùá\ôv`ÄI|Ä… § èÂ.Œ `& Äe\Æ¥à€H\~€`àüv€@v@ î„à4v@ ìþv€pà‡w`~€@vàî„`Ä…@ üÁh€ÄÀ4~  î~ @`h`Ä;`Ä€vàôa~À@vàþ!v€@v@ î~€  vàüfüÒ1=Ó5}Ó9½Ó=ýÓA=ÔE}ÔI½ÔMýÒ…`Ä…€ÄàÔ?]fÜÎáT’6ÚáÌ!ÂÁDà$ÂáJÌb!i“6B B`”a,!Â!2ýð›ð›þþ˜þþð›þAÄþò›˜ð›þð›þ˜ð›ð[þĘð›þÁE ˜ð›þþAÄô›œð›þAÄþAÄþô›ø›þAĘöÛEñ›ö›XĘþÁEùáø€ùáøáDŒ€ùáøáT¿UþDìø!¿ùáDìø¿ù!ÀùáøáDìø€ù¿ù!¿ù€U¿EŒ€ÃAÚ!äÁÂ!#ÌÄ ä¡> #ÚA#Ú!#ÚAÚAÚAÚ!ä!‚¢ä¡2¢Ì!#Ì!#Â!#ÂAÂ!ÂAÂAÂABÂA¡ä!èA¡ÂA#Ú!äÁ2¢4"äþ!ä¡#2"£2¢ÂÁä!ä!ä!ä¡2âAþ@ äÌAÂÁüøõþŸ€Áàù¡?úÁ ! >`”AÈÀBÂáÂ!(Ú!#ÚAÌ!–G½äÁäÁ–gyäÁäÁÚAÌá`h€`€B !§0„©P¡= ÷¤aÆ;`ÐØƒÆ4„Àø§0„üø7€Æøüà€ÆŽþüàg€†ÿÁ¬^º-;lð3>zvpÜaƒ_…üàg€ÆÿüàgÇ;h˜þ†/é??ü  ãÇ??ø ±ãÇ¿?ú €!ÄÆ?;"ÒøÁÆ4`ìˆÈ12 4vÀØcŒ4vD܃Æ4~ÐØcGDÉ;"ÒØqGDÉ;`ìˆc ;`쀱#"aì€AÆŽˆ4~p„± ;"ÒøÁÆ4`ìˆHãG;`Ѐ±#"Ç‘a숸#â;`숸Æ;`쀱 ;à¶ ;À° ;À°CD;À° ;À°n0ìCd0ì€Ûí ;X¸CD?а ;À@ ;À° ;À° ;À° ;À° ;ÀðÃþ0ìÃ0ìGBü@Ã0±ƒí€Û0ìÃ0ìÃ0а ;ÀÀ 4ì 0ìÃîÃq´Ã6æ(³‹9Þ¤p7ÞD³ *!(É.ò„CdÛ˜³Ë.æøé§!(C 0Ï@²‹<æìÃ0ìÃ}ÐŽ<æÈÓŽ<æÈcN;íÈcŽ9®Êãj­ò„#«òÄjN­íÈޝò˜#9®ÊcN;ò˜ãª<æø m´ò˜#O´®ÊcN;ò„S«<æD+9ÑÊ#¯ò˜m8ò„#O´ò˜ÓŽ<æÔJ¯Öú*9µÊso;ò˜ã«<æ@+9ÐÊN;ò˜#þµò„#O;ò˜­<áø*O¿®ÊcŽ<á´#9µ’ -¹ò„Cn8‹ÛŽ<í!=–|Î<íÈN­á´#9á´C.=ákN;á´#9á´c²ÉíÛŽ<íkŽ<íÈÓŽ<íÈcN;ô˜Cn;ä†Ót8ò˜cò9ó´#O8í4-O8í„#9ò¸*O­ó´#O8ò˜#=æÈŽ<íÛŽ<á| 0ÑŽÉí,òOå–_Žyæÿ€æ˜ó†(Ɉ²‰(¢$c:Ý„1ˇ<£ò˜cò?á´#O8&‡·«äÒ#O;ò„c²¯áÈÓÜàÆ|D‰œ2†BÌ0Ct0þAö4Ï=n)¼ãE ÌÛà¸ù# üT RÄ üT‘úÑq0üÓPÀ lðÀ€¸áGR@)Ä#0à‡¸Ç1@øGlàDÄþ øQÀ@ ñ€ ü€ˆØÀà÷hÀ€Ý£A÷~D4Ý£A÷hðCÀ€Ý£ ht0  hÐ=À€0 A÷hÀ€@¤ADhÄ4ªQ" €È‘ˆp¤y4Xci`GÜÐ74È# h0¸‰ ó8¼X=ã×xF€ñŒgã´þ0JA y„ƒyÚ Ç3bqgDÃ"AR° eD£» 9€øv+p“G;àyÔ*òð¹èA.W…Ãd® ‡<Úa²pÔ2&»´ÂA®pÈ#Zá W;Èåªp˜ÌWá0™3Û“ÕÊôh¹Â!_…ƒ\á0Y;LFy|3&k‡<Â!k…Ãd® ‡ÉjÕ´Z…£iíG´Â!W…Ãdµ ‡É¢yD+òh¹ÚA®ZÉ#ò¨U8ÚA®p˜lá0‡ÉÄPy”âí0G8Èe“µƒ\æG8È媦µƒ\±’G8ÚW…£æG;ÂazÈÃòhþG8äÑy˜ƒä ‡<ÂA®v„Cáhš«äÑŽp´CæG8är™ƒäj‡9äy„Cí0¹ÚQËvÈÃUæ0Ù,¡ =Aá¨Õ",‡ØÄ*±X¬bù@ ’ƒdÁ„!Ä3þ@sÈ#òÇ?Èy´#VòG;äy˜ÃUä ‡<ÚA®v„Cæ‡9ÈÕy„£áÇ"’¤)€A„pŠDŒz3È@ö ½¤ 0Ø. ¶ ƒí¦)€Aü±ÀÀ ѰÁ?ü#)€†("B _ Ð…`@ Q ZØnþîqØB3€ Ò ˆ×ÿn¶ QD„¾8@ &QŒˆV øQ¤ ÿ@ øÑ¤Àÿ@  !ŠˆPðÁ? Øàïva`dñFd»0H2 RƒDd»I ¶ #à 0Ø. Œ ƒíF$0H Œ ƒíF$I Œñ É)ˆˆxa@爈tŽÈva ^I†Áva°]¤)€A "²]l)€A `‚ˆ¤Û…A `¤ ")€A `¤Û…A "²]¤)€A "’lÛ…þa ^¤)€A `¤)€xa9")€A `@gˆ)€A `¤)€A `lÛ…‘a ^)€a€‹z<£‘LA$•ðg¤à’P=pƒí€õxF+¢I¤àÊA ")‰gÐ0H RƒD$0G8ÈŽvÈ#퇫ÈsËò0¹Ì!s¸JíG8äarµ#ò0‡ÉÂ!p+í‡<ÂA®pÈÃò0‡<Ì!sÈÃò0‡<ÌÑ´pÈÃò0‡<ÌA®p´Cá‡9ÈÕŽpÈÃò0¹Âþ!sÈÃòˆ•<Ì!s+ò0‡<Ì!WÉÃò‡<Ì!s+ä G;Ì!v+ò0‡<Ì!sÈÃò0¹Â!X‘Ëò0‡<Ì!s«á‡9ÈÕŽpÈ#Vä ‡<Ì!s«æh‡<Â!sÈÃò0‡ÉÌA®pÈÃò0¹Úy˜Cæ‡9äy˜Cæ‡9ÈÕy„Cá‡9ä+r™CæG­äáªpXÂdâÈe Ð4í æóÐ&Óäò`òá0í@.ô áÐ4æ@æPK&cí0&ÓòòÐòò`ôþäò¾RKá á`2á æ@æ@á á@.íí ®®"á æ á áà¥ð z@&cò°Ž¥…[¨…üÀ_†aÈÿað’ð z@äÒäÂí í`ô`2á@.á æ á@.á íæ@æ æ@òæÐ4æ@FFv§G00Ù“=" t¶]! ^!!: ü€ÖÀ )°þ !° €û 0!°ŠÀûP 0)  ü€ä€ ! ó€æP `d6ðüþ`ü` "°ŠÀû 0Û…óÀò@  XpÚ  {ð“@ø06à + ü°°P°ÿœhýF&ž˜!!@g"`d!°]" Û%F )Ft&!°]""`dœ(^"@g"â%t&! ^"@g"Û%âid"°]"P‘!°]!!!`d!P‘" “â%!°”tI&FÛ%!ð”I&!! " ^"•t&! ^" ^"•"…ÐæÐ Êð "¦"" óPþ) ) …°æÐ Ï Ï ‘I) » áÐ{d"°]!ðõ`äÒá æ@æ áÐ&Óµdô`òòò`ô á`ô`ô á@.á@í@.æ@á@í@.á æ@æ@æ@æ@æ@&æ@.æ@æ@pcäbô á`ô`µò`ô`ô æ@p&Óæ í`2æ@pÓäbô`íäbô`ô`ô`ô7á@äÒò`ô`ô`2á`ô`ô á`ô`ô æÐòMæ@í`þò`ò`ô`2í`ô`2áÐ4á`ô`ò`ô`ô@.æ@æ@&æ@.í á æ@äÒò`ô æ ®bäÒ‹à*æ€ò ô ¥àòò`MòÐóí æ@í`2(í`2á7íäÒáÐá`2íòÐáÐäÒäò`òÐæ áà*áÐ4á íp¨ò`í`ô`òÐó`2á7í@.°Ê dòò–À…³J«ÿp·j–ãÿðð @äòüà*äâ*MÓpí@.æÐíþ ôòä ¦$!viJB0§3=À‰¦$¦$! ¦”!!°]!°0°°`J"@ 0Ð!°]ð`J* À!À‰€@"œ¸œ@ Û% "°p°À‰À$0"@ )°À‰"°0µ! ¦$¦$! ! ¦$¦$¦$! ! ! ¦$¦$!À‰! v)!¦$þ! ! ¦$v™¦$¦$! ! ¦$¦$v)! ¦$¦$¦Ä‰! ¦$¦$¦Ä‰! ¦$¦$¦Ä‰¦$! ¦$! !À‰! ¦$¦$¦$v)! !œ˜")œhJSkJ"`—"®"`—"®"`—""`—""""`J)œ""`—)""""""`Jœ""`J""œhJœ""`J""®! ! ¦$! ! ¦$! ! ¦$! ! v)þ¦$¦$! ¦òP´Ð Þp 3ì'ϰ æ0 ÏðÁ°! !F€õ° ¥0Ã3ì'3¼ ¥° ü F`J""®`2áPKí@æí æ æà+pÓMÓpÓòí í áÐ4í áЙj2æ íp¨æà*á@.á`2í7æà*áЙj®í@.æÐ4æà*&c®í áPKá©æà*áÐòÐäbíÐ4æ í7íp¨í@.æ í`ÇæÐò`òà*áÐäbòÐv 7æ í ôò`íPKæÐäÒòþò`òíp–`2í d@ô` ÐòÐäíÐ4á7¾b2í á á 8í`2íMÓòMcäíòòí áÐ&Cæ á@æ@.µB.áÐò®"áà*®"á@.áÐá á áðð z@á@äÒ‹P«1-ӉŰÀ dòÐäÂíòà*áà*á`òà*á@.æ í`2á ®æ í á@á í`"""ÐÀœÈ"`—3!! ! ! ! !À‰þ!À‰¦”! ! vɉ¦$!0µ…=µ)) ) ¦$!0µ!À‰¦$!À‰! ¦4µ ,)SœhJ"ÐÀ!À‰v)v)vɉÛ†m—) v)! ! ! ! ! ! ! ! ! ¦$! ! ! ! ! ! ¦$!À‰¦$! ! ¦$!À‰!PØ!! ! ! ¦Ä‰! !0µ¦$! ! ! !À‰¦$! ! ! !À‰¦$! ! ! !À‰¦Ä‰! ! ! ! v)! ! þ! ! ¦Ä‰¦$!  ,! ¦Ä‰v)¦Ä‰¦4µ¦Ä‰¦4µ¦4µ! !0µ! ! ! ! ¦$¦$! !À‰! ! ! ! ! ¦$!À‰¦$! !À‰v)¦$! !À‰! ! ! !Pئ$!À‰! ! ! ¦$! ! ¦$! !À‰! ! ! ! !0µ¦„ ÿ€­@ ¼bçp×P £Pø""`J)€ ÿP´@ œnçp £P û€iÀ‰! ¦4µ!ðá@.á µòÐ&òþÐäæ@.á á ¾&òMÓæ@.á á æ@.æ á á á á á í í@.í®òÐMäò&µdòòòòà*McòÐäÒá`äbòpcäòòäòòòòÐMcòÐáÐ&òÐòÐ&ò&òòí`òÐòÐäÒá`-äÒ&Óò`òÐòÐ&òà*á áÐá á í í@.í í`2®í&™–&Cþø ¥ð®2á`2á á@.Øá ®bòòÐá íÐ4íòò`ôòòÐóÐæ á7æ@á í@.í`2íµä*æ æÐ4á@.í0í`òà*á á á@.áÐòÐMÓòÐäâ–ð @䮲3 ý1Í Ê b@.í áÀäí@.í`2®7í á ®2µÔ&Óäò""")`—)`J)`—)`J)!D„BDˆ"Bˆ!aE„HBB"BˆxØÑcGE„þBÄC!Dxñ0£ˆ"Šx(⡈"Bˆ‘ñ¡„/fD("„ˆ"Š!¡ˆ"Bd !"„ˆ"f ‘1„ˆ"Š!âaÆŽCˆ!"DÆ">†BD!D„ȈPD3†BÂŒ3†BÂŒ3†BÂŒ3"BD!D„xBD!D„"#ÂŒ3†ÈBD3†Èˆ0ãÃŒ3>ÌøPÄÜCd !¢£ˆ"Bˆ!"„ˆ;Š˜û2DÆ"Bˆ@("„ˆ">fD."DÆ"Bˆ‘ñ£„Cˆ!⡈væzh¡þå™kÜ¥”Xêá'B!„ŒBØ!˜äÙ…”gŒ†–Rh©‡ŸT`ðH„Ž>§väaQsä ‡EyÚ‘'œyÚ‘gGy‘§͑ǜÑ'yÚ‘'œv‘ÇyXä±yÚáñJ,Ñ'yÂi'zÌÙ1y‘'œvvl‡Çpä GžpÚ Gžp°”‡ÅyÚ‘'yÂÙ‘ÅvÂáQžväigÇpä ‡Çvx gÇvå1y‘'œÛÙÑœyX”'y‘'y‘§y‘'z‘§Ñ'чsä1'œy §y‘ǜÛ‘'y‘'yÂá±Ûþ‘'yÂa1œvä1'yÂiGRy‘'œv‘'œvä ‡ÅEx4G1ä¡Ç’Ì §Û1Gžpä gGzÌ‘'yÌ¡ÇyÂá±yÂiGžvä GžvxlGžpÌiGÒpÚ GÒvä GžpÚ ‡ÇpXœ§yÌá±pä gÇvÂi‡Gsä¡'y‘'yè1'Ãi'@å çH€Ñƒ sv4‡žEþ±új¬³Özk®»ÎšŸJQæ2Ú1‡G~v4GžpÌÙ±sä GžpÚ ÇœÃÙñœpvl'@ѧpä1ç„DA„DHA„R!„B!B!þB!„ŒB!!„—B!<!„—bÏ(…—B!!Bx)B=„<!„Dá%„2 A„2zè¥2z(£‡DA„d!„—B!„ŒB!!B!„Œ!z)Bx ¡Ø!„@ADÙ…@!AD $#!BDð„@!ÈBDð„@!ÈBDð„@!ÈBDð D!AD°£v„\æ”9è1¨pÈ#òÇŽÂ1(sÈ#òhÇ Ì!pÈ#< ‡<Â!pÈ#òh‡<ÌApÈ#;2G;ÂÁ£p´Ãôh‡<ÚŽþµCáØQ8Àe™cPæ‡9xôI<ãdØQ;äKxM½ëe/ÖøñE¬V}Ôãü€Ç` D!G>0(…ƒEòÇŽÂѱþHáG8vÔyª;2G8ÚŽv„£< Ç Ú!pì¨òh‡<Ú!vì(€’G8äÉ#’2ÇŽÚ±£vì(òG;$Õy„£òh‡<ÂÑIµCá€G;vÔŽµCRáG;vy˜cGæG;äÑŽ…ší‹äÑŽp̃EòhÇŽÌÑŽp´cGáh‡<ÂÁ£p´CíàQ8Ú™Ã,’‹Ày´cGí=Â!pì(òÇ<Ú!vì(òh‡<Ú!pÈ#ò‡<Â!pÈ#< Ç Âa‰vð¨b =,ñy´ƒGáÔŽXŽA…ƒþE;j‡<Ú±£p s‘™ yhyhy‡ ‡Aiyh‡1‡Ai‡  y ayhyÙ‘vØz0y‡A y‡€„gÐ2sØ‘vX„ö B!Ì~øHx=q‡vØ‘y0yhs ‘d€p8‡h@‡pà‘pØ‘ps”p‡psøèˆØA@@Œ@ŒðˆŒ@ˆŽˆ„ø¢„„ˆ„x ‡þ‡Ø ŒŒxxˆŒxˆ@ˆ——@Œøx舌ŒŒx@xÐ1ð@Œ@xŒ@xŒ@øxˆŒ@è@xÙyˆŒ@ˆ—@xèx@øˆŒxŒxˆŒxð@ˆŒ@舌x@@þð@ŒèxŒŒð@HHH(Àm€~€\(„@@xˆK(Àb€~€\(„ŒxˆyhsàsØ‘vyhsy0yi‡p‡v˜ss‡vs‡pØs‡p‘‡p‡vyyy‡1y0‡ ‡1‡ y‡vzØs‡p0yyh yyh‡1‡i y‡v0‡iyy0yþyh‡p‡p”p”và‘p‡pØ‘p‡vy‡v0zØ‘pØ‘v0yss‡pØ‘p‡p‡pss‡p”ps  yh‡ph‡p‡phyy‡v0yh ‡ zhshs‡v‡v‡p0h’‡p‡v‡p‡v‡ph‡phyh‡Eh‡ph‡!z€‡Rðs‡phy0yh‡p‡v0zy`‘1yys€¦v˜‡p0yÐ=zs‡vØ‘vØ‘p‡p‡psà‘v‡p‡v‡Ai‡Ai‡þp‡v0y‡vÝks‡p‡pà‘p‡p`‘iyhy0‡i‡ù€Ex= ƒ”EBc B~øIØ…? ƒ y‡—v˜‡vd€v‡p†Ø‘o@€ yh‡8ˆØtÀø€ȈŽ„„äȈ„È„ȈŽÈˆ¹H„ŽŽ„‡x‰„„„„x „È„x‰Ȉ‡‡þ‡„Ž„‡„ŽÈ„Ȉx‰„„x „x „¹È„¹È„¹È„ȈȈއ‡„È„„Ȉ‡„È„x „È„Ȉ‡x‰‡x‰Ž„„È„„È„Ȉ‡Ž„Ȉ„ˆ„ȈŽŽäŒŒþèˆH„„„x „„9„HH@Ȉ„ø€Ayy0Ii‡A y0yá‘p`yyIi ‡v‡v‡vØ‘v‡v‡v‡p”ph‡iy‡v ‡p s‡v‡v”vØ‘‡p‡v‡p‡pàÝ yyh‡A yyhyhyh‡i‡ yyyyyyyhy‡v‡pØ‘và1yáz‡v‡v”pà‘v”v‡v‡pØ‘v”þp‡v”pØ‘v sà‘p‡phi‡i ‡vshy ‡p‡p‡p`1‡ ¡s9KØ‘vqz¨Køyz0p1‡i‡yP:zI y‡vØsh‡i‡A¡‡p‡phy‡v‡v‡v‡v‡ph‡p‡p‡pØ‘v‡p0‡v‡p‡pàs‡p s€¦vØ‘vz‡1‡pshyhyhyy‡€„gÐ2`‘p0yX„cmiõâ‡(`Ð2hyh‡á‡ph‡p‡p0y‡A†þy@$èùahuxh‡nahtøs ‡ mø€„H—@Œ@@@èŒxï @ðŒÈ‡ȈȈ„„È„Ȉ‡„„‡ÈˆȈȈ‡‡ÈˆŽÈȈ1ˈȈŽ‡Èˆ„È„Ȉþ„È„Ȉ„ȄȄ‡x‰È„Ȉ‡ÈˆȈxˆŒŒ@ˆŒxˆŒ@ˆŒxˆŒx 6„ȈȈ‡ȈŽ„H„x‰ȈÈäȈȈ„Ȉ„„„ˆŽÈˆȈȈ‡ÈˆÈ„Hèèxøs‡p0yh‡y”pPºph‡p€&s‡p”v‡p ‡v‡p‡þp‡v‡1yh‡p0yP:Ù‘p‡v˜‡i‡p‡vxÒp‡ph‡a‘p‡v˜á‘v‡p‡p‡ökyhyh‡yCyh yyy`‘p‡p ‡ yyhyz€¦p @s‡p‡vàs‡v‡Ai‡p0y`‘yyyyyh‡ph‡p0zhyy‡i‡p‘‡vØ‘p‡p0yhs‡pà‘pà‘v‡p ‡vs‡pà‘v€&sØ‘v„p0!y ‡Røi‡ph‡p‡p yþ”p@Ù‘p‡vy‡ ‡v yhyhyh‡pØ@ y`h yh‡pØsØ‘v‡p‡v”v‡vyy0y‡AiI1yh‡p‡p‡vØ‘€„gø1”p°—B~¸ƒ;hÇoÇ¿~ð€EP†? @‘‡pøiyØZØ…\dÔ€y”p0d8€pP‡@mØzø†ø…yøŽ„„‡Ȉ„„x‰x‰þ„x‰„‡x €!"„ˆEaP„A!D„! ƒ" J4("…ˆ"BH !"„Ä"Bˆ0("„ˆ"BH4( ˆ"BHBDˆœsŠ0("„ˆ" Š!"P!D !"„ƒCˆ0("ªˆ"BH4("ªˆ"BH4("ªˆ"BH4("ªƒ"Bˆ!"„ˆ¨"Bˆ!"„ˆ" J4˜3ªA!DÌiP„A‰s”h0§Áœ!š‚–hP„A!€†BD!D0Bb!$FaPD!$†BDþ‰!r -"„ƒ"Bˆ! Ä9CH4("„ƒ"BH4(‚1Pƒ" Š0("„ˆ"Bˆ0( ˆ¨9S„H‘3DÎ"¢~K.»HË-·xË.´äB 0¹³K.·Xá.¹ì’Ë-Þ²Ë.´ä²K.»är‹‡¹ì" ‡Ò’ -¹Ð"à.˜‹‡ xà-î’Ë.Þ’Ë-»äBË-»ÐR!0¹ì’‹‡æ² -Þâá.â(à.¹C‹•Z¹Ë-Àä²Ë-Y ¸K…»HË»ä²K.»x‹€»¸‹Žz˜ -¹Ü²K.»äbe.Àì’‹‡·¸K.» ™Ë-ÒrKþ.»äâá»ä²K…»ÜRá-»Ü’‹‡¹ìrK.·xK…ü´#<áÈc‰<ô„#8bÐC%ÈŽ¬Ã¶#O;í„ÓŽ¬áÈcN;ò„#O;ÃÊެá´N;æ {¬<æPŽ<æÈαò„#O8Çʵò´Ž<íÈ<ÇÊŽ<æ„#k8ò´#O;²†ÓŽ<æ„ÓŽ<á´CO8²¶#k;ò„óÁ"ÏüAF8ö³È?ƒ²È#“\òÇü´ñ?üü³²/wðó?”Œb´cΰü„#O;²îò1?ò @8ò€ƒDç´³ 8A턳 XP‰<Õ@Dþ]¶ÙfÀ0€ØgÓ]·ÝtÀb@0@€ÙÜMvexÙ Ù8>@eP6À@ vb“d@0@b“Àb@ v À¥—@bˆ]:ˆ=ô0 vÐÀ0€Ø@Àb}bÀ@Ð@@l¥Ù=± À@6±@l¥ÛJ'¶Ò‰­tÛJ€ þ e À0€Ò @lÛ0æ P:è•-ÀP¶ z[”@€€y([é€[ @ldcÞ€ˆ-€ØÈ€ˆ-³ b €Ø0€ € 8[²`0¢òð#düø?HÆðƒdüø?@Æðãcüø?þÁðãüøØÊLÆ‘ñcd+ãÇÇø2~üƒ& Ù0ùñ~ˆŒÿXÙÈø1²aþƒÿàÈø±ÌðþdÃü?þÁñãcüÙ0AÆñ#dü?þÁñãü ?BÆðãcÃü?@¶2ñãüøÇÊþ±²ðcd·àG8Ú!sÈcíG8dEzÈ£G8ÚŽc…CÇ’‡9äÑjµCíG8äy´CÇ’‡9è!«p´#òhG8äÑŽpÈ£Ãj‡¬Ì!pÈ£²jG8dy´#ò0=Â1¬cµ#ÔjµÂ!p´Cæ V;¨y€ÕÃú$v¡2È*ÇZ„Èúê׿6dwhæÊ(á‹;üƒX„2ê@Y…Cáø‡¬ÌÑŽpìâþá2 Žp´cÇ7 q´•8Âq6@Ý€4ÌñH`Ý-ow+p+»•Go‹kÜãWá8–<ëÜçB7º½•G8Ú!pKíÇnåÑy´#íG;äÁ[y„c·òÇsåÑy W¼•oå±[y€Uá8V8Ú!vȬòXeÕy€Uá8V8Ú!vȬò8–<Âq,yðVáè­<ž+pÈ#¼••t%pðVVáè­<ÂQ\y„£Ä`•G8äŽâʪ²’1råq,y´CíG8Ú!pì6½•G;ä!cy´C<þ†®<Âq,H$Ø­<Ì!s´CÅ•G8dÞÊÃô0‡9v+pÈÃò0‡qåaÞÊ#Ç’›ÙÜy˜£ò`³<Ú!6ƒUáDZäay˜£ò0G;Ì\yôy·ò0oåŽ˃Íò0DZäaŽÞÊøò8–<Âq¬añVl–‡9v+pôVæ‡9v+>Ëc·ò0oåq,y„Cæh‡<Ø|\y„CV}f3-þAsK‹G;dÕ1ôÊx—9äŽvÈŠl–G8äŽvÈÃáG;äy„CæV8ÞeY™CáG8ÚŽc½«òþǰÚ!c½Ká8µÂÑy´CáhG8äÑz˜£ò8–<Â!p´#í•9äay„Cáø@)€¡2„Cí0‡<ØŸ]dü¸?@ >ðáÅ@†/ÚÀXâz C;äÑYñ#ÔÚÅ?Ž%d  ç@`Žn@òhÇ  n("òÅÄAè@HRé†CVáXÃ!)Ë8²B<ãß[Y…CVá8V8äy„£á8–¬ÂQÜpÈ ¬áU;Ì!v„CÇ ‡<ÂÑŽp´Ãò0‡à?˜d=˜dðÃ,‚2ü´ƒ<„ƒ<„Ã?ÈJ8ÈC8ÜÂ?´ƒ<´2ˆM€Ø=ÈÃ<€x@@8Üà X@%ÐC8¨€¤@W€9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ÈJ8ÈJ;„ƒ<˜ƒ<„ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ¬„ƒ<„ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒþ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ9ÈC8ÈJ8ÈJ8ÐC8ÈC; ˱ÈC8Ѓ9ȃ9ȃ9ȃ9 ‹9ȃ9 ‹9ÈŠ9ÈC8ȃ9ÈC;Ì¢<˜ƒ<„§<˜ƒ<„ƒ<˜ƒ<˜C8ÈŠ9ÈC;„ƒ<˜ƒ<˜ƒ<„ƒ<˜ƒ¬„ƒ¬„=˜C;ÈŠ9ÈJ8ÈC;Ѓ9P‹9ÈJ8ÈJ8Ѓ9´ƒ¬˜ƒ<˜ƒ¬„C;„ƒ¬˜ƒ¬˜ƒ¬„ƒ<„§<˜C8ȃ9ȃ9ÈŠ9ȃ9ÈJx¶ƒ¬„ƒ<˜ƒ<˜=˜Ã°´ƒ<˜ƒ<„§<˜ƒ<˜ƒ<˜ƒ<˜Ã°˜þƒ<„g8 ‹9ȃ9ȃ9ÈJ;„ƒ<˜ƒ<˜ƒ<„ƒ<„ƒ<˜ƒ<„C;ȃ9ÈŠ9´ƒ¬˜ƒ<˜ƒ<˜µ„ƒ<˜ƒ<˜ƒ<˜ƒ¬˜C8ÈŠ9ÈŠ9ȃ9ÈC8ÈCxʃ9ȃ9ȃ9ȃ9ȃ9ȃ9ÈCxÊŠ9ÈC8ÐC8ÈJ8ÈJ8ȃ9ÈJ8ȃ9ȃ9„=˜ƒ¬˜ƒ<˜ƒ<˜ƒ<„§<˜ƒ<˜ƒ<˜ƒ<˜ƒ<„ƒ<„ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜Ã°˜C8@W¦ÀÈŠ9 K8´ƒ9ÈC8ȃ9ÈC;ÈC8ȃ9ÈJ8ȃ9þȃ9ÈŠ9´ƒ¬˜ƒ<˜ƒ¬ðV8ȃ9ȃ9ȃ9ÈJ8ȃ9ȃ9ÈJ;„ñ K8ÈC8ȃ9„ƒ<„§<„ƒ<„ƒ<˜ƒ¬˜ƒ<˜ƒ¬´ƒ<„û„ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<„ƒ<´ƒ<„ƒ<˜ƒ¬„ƒ<˜ƒ<˜Ã°´ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<„ƒ<˜ƒ<´ƒ<˜C8ȃ9ÈJ;„ƒ<˜ƒ<„§<˜ƒ<˜ƒ<˜ƒ<„§<˜ƒ¬„C8ȃ9 ‹9ȃ9‹<´C8´C8ȃ9 K;ȃ9ȃ9È X…ƒ<˜XɃ9ȃ9ȃ9ÈJ8ȃ9ÈCxÊC;È X…C;ÈC8ȃ9ȃ9ȃþ9ȃ9„ƒ<˜ÃnÉC;ÈÃ.üµ„Ã"È =ˆC;ˆA¯XÂÈJ;ÈC; K8ÈC8´ƒ<„µ˜C;¼‹9 ˱ÈC; K8´ƒ<„ƒ<„XÉC8È=˜=„ƒ<„ƒ<´Ã°´ƒ<ÐC8ȃ9ÈJ8ÐC8 ‹9Ѓ9ÈJ8´ƒ<ÐC8ÈC8K8ÈC8ÈC8ÌC;ÈC8´ƒ<„C;ȃ9ÈJ8ÈC8ÈC8ÈC8|@)<ƒA; K;,BHâ°_ñCà.¤ÂcÒñCðÃ@Â3舃<´ƒ¬ðC8ÈC;ȃ9ì?„ð€•¬˜C8 ˱ÈJ8 ‹8„C;ÈC8ÈC;˜ÃþlÈŠ9Ѓ9Ѓ9Ѓ9Ѓ9Ѓ9Ðð´C8˜=˜=ÈŠ9Ѓ9Ѓ9Ѓ9Ѓ9Ѓ9Ѓ9Ѓ9Ѓ9Ѓ9Ѓ9Ѓ9Ѓ9Ѓ9Ѓ9Ѓ9Ѓ9Ѓ9Ðð„ƒ<„ƒ<˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜C=ÈC;ÈC;ÈʱP‹9ÈC8ÈC;˜µ´ƒ<˜=˜=ÈC8´ƒ<˜=ÈC8ÈJ;P‹9Ѓ<˜ƒ<„ƒ<„ƒ<„ñþȃ9Ôƒ<˜=P‹9Ôû˜=˜ƒ<˜=ÈŠ9Ðð´Ã»„û´ƒ9 K;„û´Ã»„ƒ¬´ƒ¬´ƒ<˜=‹<´ƒ9Ðð˜=ȃ9Ѓ<˜Ã°´µ´µ‹<˜ƒ<˜= K8´ƒ9ÈŠ9Ôƒ<˜=˜=˜=˜=ÈC8´ƒ<˜C=È=ÈC8´ƒ<˜=˜=ÈC8˜=˜=PK8Ѓ9Ѓ¬˜=ÈJ;ÈJ;„ƒ<˜=˜=ÈXɃ9ȃ9Ѓ9Ðû´ƒ¬´Ã»˜C=ȃ9Ѓ9Ѓ9Ѓ9Ѓ9Ѓ9Ѓ9Ôƒ¬´Ã»´ƒ¬´ƒ¬˜= ‹9ȃ9Ôµ´ƒ<˜þ=˜=˜C= ‹9Ѓ9Ѓ9е˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=ÈC8´Ã° tå K8˜=˜=ÈŠ9Ѓ<˜ƒ¬´ƒ<´ƒ¬„Ã,†Ã»„ƒ9ȃ9ȃ9Ѓ9ȃ9Ðû˜µ„ƒ9Ѓ9ÈC8´C8ÈC;ÈC8ÐöÃ,†ƒ9PK;„ƒ¬˜=˜=˜=˜=ÈJ8ÈC8ȃ9Ð𘵋9ÈŠ9Ѓ9Ѓ9Ѓ9Ѓ¬˜=h8˜=˜ƒ<˜C=ȃ9Ѓ9Ѓ9Ѓ9ÔÃ,šƒ<˜C;„ƒ<˜=˜ƒ<„ƒ¬˜þ=˜=Èñ˜Ã»„ƒ9ȃ9Ѓ9ȃ9ÈC;„ƒ<„CÄ…ƒ<˜C=ÈŠ9ÈC8˜ƒ<˜=‹<„ƒ<˜=˜=˜C= ‹9Èñ„ƒ<´ƒ9ì?´C8 Ë"„ð´Ð<@ÂÌC8ÈC;„Cĵƒ<„ƒ<„C;ÈJ;„ƒ<„ƒ¬K8ÈC;ÌC8ÈC8ÈŠ9ÈJ8ȃ9ȃ9ÈJ;D\;˜ƒ<„ƒ<˜ƒ<´ƒ<˜=´µ´C8¼K8 K;ÈC8ȃ9ÈJ;ÈC8Ѓ<˜ƒ¬˜Ã°„ƒ¬´ƒ<„=´ƒ<´ƒ¬|À"ìˆ<„X-B |È´>ä>ä>äƒIâCðÃþXÂ3èÈñÈC8üûìÂ? K8K8´ƒ9ÈJ8ÈC;ÈC;„C;ÈC;„µ´µ| À@ @;è»´C8´ÃÍó|Ïû¼¬´C8´ÃÏ}ÑýÒC8ÈñÈC8ð–<´µ˜ƒ<„ƒ<„ƒ<˜Ã»´=˜C;ÈJ;ÈC8‹<„ö=„ƒ¬˜C;ÈC;ÈʱÈC8È=„ƒ<´C8 Ï·C8´ƒ<„ƒ<„ƒ<´ƒ¬„C;„C;ÈJ;ÈC8 K8´C8´ƒ<„ƒ<„ƒ<´ƒ¬„C;ÈC8¼‹9 ˱„ÃÍ›ƒ¬„ƒ<˜ƒ¬„C;ÈC8´Cĵƒ<´Ã°˜C;ÈC;Ü|;Ѓþ9´ƒ<´ƒ¬´=˜C;PK;¼‹9ÈC;PK;È =˜C8ȃ9„C;Ìb8ÈC8h;„C;ÈŠ9„ƒ<˜ƒ<˜C; K;ü<=„ƒ¬˜C8ì–<„C;ÈC8Èʱ„ðÐC8ÈC8´ƒ<˜C;P =„ƒ<„9y Êkw°`B… ÊkGÏ\;yáÀ€‘âC¸ƒ ÛlGÐ\;yáÚ 4w0œ¼pòÂÉ3'¯]Ãæ†#hN^»†æ†“N^8y憓gN^;yô 's`8…Ã4×Nž¹æÚA•®]¸vòÂÉk§°ÝBzáä™;®Azæ¶+ØNž¹æä™“×Îë@sþõH/ÃòÚ)¤N^¸vÍÉ;(o׿áÚ…³4ÐÜA1ôê•ò00ÜÀváä…“N^;yíè™kn`8yíµØÎÜÀpõKØ.œ¼pòÂÉ 'ÏÁv ÛÉ '/œðé‚$yF2ä1‡ ~Âi'yÌÙåŸpڑǜ̡‡ sä1‡ vjÇy‘'œvä™Çœ,‚!€pä Gžpä Gžpä Gžp̡ǂ‘'œvÂþ‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'yÂÈy Gžpä Gžpä Gžpä Gžpä Gžpä Gžpä Gžpä Gžpä Gžpä Gžpä Gžpä Gžpä Gžpä Gžpä Gžpä Gžp Gs2GsÌ‘§sä Gžpè(yÚ‘§y‘'yÚ!(œ‚Ú™§päi'œvÂ9ÈœÚh û GžpjÇzä1Gžpä9(œv‘'œÌ(yÂ1Gžpà5Gžpä Gžpä ^s GžpÌ‘'yÌ(œvþÂ9HžƒÂ‘§y‘'yÚ Gžv:Hžpä9h vä1Gžpä9(sä1Gžpà•ç y‘'y‘'yÚ7œƒÂY:yÂ7yÚ‘§y‘'yÚ Gžvjg säi'y‘§yÚ‘'y’'yÂ7œvjGžv GžpäiGžpä Gžpä Gžpä g pà5GžpÌȜ‘§sè Gžƒ–Þpä gévä Gžpä ÇyÌ‘§pä Gžpä Gžpä Gžpä Gžpä Gžpä Gžpä Gžpäigiyòs:(œvÌ‘'yÚ §þpjGsäigépà Gžvà GáG8äqŸ¥…^í€W8äy„^ G;Â!vÈ£òhÇÒÂ!v ¤ò0Ç@Â!p$ò‡<Â!pÈ#ò‡<ä%p,­òhÇÒÂ!pÈ#òG;Â!v,­ò¼Â!yÉ#ò‡<¾˜Cí¼Ú!pÈ#ò0‡<äy´c íG;ày„C ÇAÂ!v,ÍòÇ@Úy„c á8ˆ9äay´CáG8¬sÐc 퇪<=¼Â±4z„£òh=Â!ƒÀ+óG;þäÑy„CáG8äÑŽpÈ#æ€W;DÚy˜£áhG8æqðµCæH;àŽv,-òh¼Ú±´v $i‡<Ú¯v $ðjÇÒÚ¯ƒ „ÊšÇÒÌÑy´CáH8äŽpÌCíÇ<"pÀ«òG;àÕx$óh‡<¾vÈ#ò‡<Â1s $‘G;äy„CáG8äy´CáH8"s,Íð G;äay´cíG8äÑy„Cá ‡9Ú!s„c¡G8äy„è‘G8¬ØŽÄŠ÷‘G8äŽ^áhG8æþ!v„¯æG;¢zÔvÈ#ò‡<Â!p`ùÀ@Âqxµc æ€W;äaŽ´CáG8Ú1v ¤ò‡<ÂApÐ#òÇ<Ú!pÈ#íG8Úy„CáG8äÑy„£á‡9–vy˜#òG;rp,­òh=ÌaÅvÀ«1G;äaŽv $íG;äaŽpÌã ák¼ÂÑy„CáG;äy„c á˜G;äŽð…£ò‡<¯pÈ£ò‡<Â!vÈ£ò‡<̱4sÈ#ò‡<Â!pÐ#í˜Ç@èaŽ„CáG8–þŽv $ Ç@Ì!vÈ£ò¼Â!pÈ#í€W8äaz˜#ÿ‡<ÂqE $óè!K| íG8äÑŽðÑ#ò0Ç<Ú±4s„ciô‡<ÌÑx…£á˜G;äaŽÜGáh‡<Â!vÀ+ð GøÂ!p,­ák‡<Ì!p´^á0¼ÚŽ˜#ðj‡<èay„Cáø$€¡2„^íX„‚¨^õªóƒIÀ.pŠT€¢|˜GøñH^ÂA¡Âa ÚAÚAÚÁµä!à¥ä!ä¡äÁ"ä!à¥ÂaiÌAÚaÚAÚAÚAæ!¢Âa ÂAÂAÂAÚ^Âá Âa ÂAÌaiÌAÂaiÚ!à%èAÚA"–¦â,!ô€ "b¬ŽFk´@ºàA¡àaþàa’€<À”áÈ ä!ä!þ!ä!èÁrèÁ‚Âa Úa Ì!Úa Ì!ä!µ>`,ä¡ä¡ä¡ä¡ä!"ä¡ä¡¡ä!ÚaÚa ÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÂa è!ÚAÂá ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡þä!^Ú^BÂAÂá ä!B^Úaî#ä!ÚÁŠÂAèÁä!"ä¡¢Âa"¢Âä!BÂAÚa ÂAÂAÚAb ÂÌ¡äÁÂaiÂAÚaiÌAÚA¡äÌ¡äÁ¡äÁ¬è à…Â^ÂA¡"î^¡ä¡èÁà%æá ÂAèÁä!îCÂAÂAÚAÂá ÂAÂá ä!Ú^Ú!Úa Úa ¡ä!ÚA¡¡âæá ¡ÂAÌá ä¡ä!ÚþA”^Âá ¡äá ÂA¡à%ÚAÂAÂAÂAÚAÚAÚAÚA¡ä!ÚAÚ!|ÚÁŠÂAÂAÌ^¡à%ÚAÂAÂá ä!""à%¢ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä!ä!äÁÚa Âá @v>ÀÂAÌa ÚAÚa ÚAÂ^Ìa b Âa ÚAÂ!|ÂAÂA¡"Úa Ú!ä!ÚAÚa Âá Ú!à%ä¡ä!àe„k0|Âa ÂAÂAÂAÚAþÂ^Âa ¡¡ÂAÌa Â^Â^Âa ÚA¡¢ä!j°Â–¦ä!ä¡äá ¬¨à%"ä!æá ä!Ú!µæá ä!–&äÁ–&ÚAÂAÚ!|ÚAÂAF¸ÂAÂA\«ä!ä!ä¡ä!äÁ¡ÂÁŠÂAnáÂAÂAÂÁä!Úa Ä äÁ> BÚ^Ú!ÚAÌaiÂA¡"ä¡ä¡"è!"BÂaä¡äÁÚáÂÂA¡ä!äÁ¢‚Âa BþÂa Ìa ÂAÚa Â!|FXÌAÚ!¢ä!æ^ÂAÂAÂAÂá áþ€ Úa ÌÁFšêø! à¡R¡  r’€>žAÈ` Úa þ¡–fþa Âa F8–¦Âç ä¡àÅä¡Ìáv`„Ú!ä!ä!ॖ&–ÆÚ!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!à¥ä¡¬(ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!äþ!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!àÅä!ä!ÌAÂA"àÅä!ä!äAYâ ÂÁ¢äÁä!ä!ä¡äÁ–&¢ÌAb ÂÁèAÂÁäÁèa ÌAÂa ÌAÂAÚAÚAÂÁä!–Æà¥ÂAÂAÂA¡ÂÁŠÌAÚAÌaiÚAÚA¡ÂAÂAÂa„å¡¡ä¡â äÁä¡Ì!|ÚÁŠÂa Ìa ÂaiÌAÌa ÚAÚ^Ìa ÚAÌAÂa ÌAþÂÁèá ÂÁä!¢äÁÂèAÚ!ÂÚÁŠæ!ä!äÁ–&ÚaiÌAÚÁè!èAÚÁ¢à¥ä!ä!ä!àÅÂä¡¡ÂAÂ^ÂAÂaiÂa ¡"ä!ä¡"èa ÚAÂa BÂ^ÂAÚ!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!à¥ä¡â äa„@púè¡ä¡ä¡ÂAÂAÚa ÂaiÂAÚ!"ä¡"ä!ä¡ä¡ä¡à¥¢Âa Âä!þÌAÚa Ìa ÂAÂAÂai¡ÌAÚa\KÂAÂAÂAÂa Âa ÌÚAÚ^Â^ÂaiÌÚaiÂAÂAb ÂAÚa ÌAÂÁàå ÚAÚ!ÌaiÚÁ"ä¡ä!ä¡ÂAÂAÂAÚ!Ú!䡢䡔eiÂ^Ú!ä!ä!ä!¢äá ¡äÁ"ä¡ÂAÂAÚ!ä¡ÌAÌa ÚAÚa Úa ÚAÚAÂÁŠÂAÂA¡äAYvá¢,¡ä¡ÂAÈ€ä¡>Àäá Âþ¡Â^ÂAÚ!¬(¢ä!ä!–¦àÅ¢Âa æÁèÁÚa Úa ÚaiÂAÚ!¢ÂAÌa Ú^Ú^Âa ÂAÂAÂÁäá –Æ6^ÚÁµ¢ä¡ä¡â áô€ Ìá ä!,¡³A’À¢ßÁ¢áa’€>À€áÈ ä!ä!þÁ"äáþAÂA6^ÌA¡äÁä µ“'/œ"pä#ò‡<>‚´CsáG84y´Cí H;äa½}$íG;æŽv„Ú3‡<ÌAph.Qáh‡<Ú¡9sÐ#š ‡<Â!pÈ#íG;äay´ƒ G;äy˜CáhG8ä Ê£æG8‚˜ƒ íÐ[;8#DÉ#ò‡ÞÂ!p´CsáG;ŽvÈ£zk‡ÞÌ!v˜C(Ÿ>½gDãÛxFôžqè=ãϸÆ3¶ñŒŠFïÎÛFE£÷Œk<ãϸÆ6¢qmD£¢Æ3¶ñŒèþm£¢ÛˆÆ3®ñŒh 4ϸÆ6P½ž>cψÞ5¢QÑžFãÛxÆ6žmTôÑ«h4PúŒm<#Û¨h4*ê¼mDï×xÆ6žgl#ψÆ6žg\#ψÆ3¢ñŒhl#Û¨è5¢qglãÑxF4*gD£¢ÛˆÆ6*mDã×@iôž½mTôÑxF4¶½gDƒªÛ@i4ž½gD¥FÆ3¶ñŒhl#Û¨¨Q©ZÑèñ#íG8äq‹p† íX„<Â!p˜C õ G)>`My´CíG;ÂÑy„CíG;Ò½…Cá‡9Ò½µþCáÐ[;Ì!„ƒ œ!H;äñÍ…Cáh‡9èÑy„ƒíÐ[;ä1™Cí‡94g‚˜Coí‡æÌ!sèí‹xÆÄ@-Bv 1ìøAâ›ØÄ€Ä3þ@s|Dáà‡<¡·]üCæ H8¢!‰EøØ’²…¼ˆ /ÂC–Äv „@æ‡9Â!p$JáG8ôŽvÈ#1‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<ÌAp|DíÀàGÂ!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃþò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<Ì!sÈÃò0‡<ÌAvÈãFšk‡<Â!pÈ£òh‡<Ú!pÈ#i‡<Ìy´ƒ áhG8ÚAvÈ£ô0‡<Â!vÈ£ò‡<ÚAs¤áG8ä‚„ƒ íh.A>y„ƒ¡‡9ÂÑy˜ƒ áG8ÚaÍv$‘G8Ú!pè-íG8>ŽÈ£ ‡ÞÂApÐÃòhG8>"pè­á‡9äa½™CíG8äa‚„ãFáh‡<Ú!v„CáG8䎄CíG8ÚŽ$þ¡‡9ô½µCáhA‚˜Cæ H8Ú!pX3ò=¡·pÐÃô0‡ÞÚ!p|$ò0AÚ¡·pè­òh‡<Â!pÈÃòhAÂAv$íG84w#y˜£òh‡<Â!pÈ£òh‡<Âñ‚˜Cæ‡9äay˜Cæ‡9äay˜Cæ H8äy„£òAèay´åÛÁ$a IXbÈ–²%,‘ä!o¿ûàò"†¬ IXBÈ–?ø¡þ!["ÉÛ·Dû%a‰ [¢û–²%’¼ýö["É–d–°–0d–°ód‹0d–~–0þ‹` Af ág If Bf Bf C¶ (dšðô`¹Àò@æ á í í@í@?c  æ€?ò`AæÐÑò`á æÐòòКí áÐò`í@Aá 7íí æ áÐòòÐzÓzóòí áÐò`ÖÔòzÓòðæ@á áÐô`òò°Àðdòæ ‹ b”X‰¬Ãÿ@b­Ã Ï d æ 7ü á á ·ÀòÐz ’À«Ã¬Ã¬Ã«þëÃÿÀÿ@b} 9í@æ æ@í íš#AóðŒóðŒóðŒóðŒÑz3æ òðš3Ï8Ï8Ï8Ï8Ï8Ï8Ï8Ï8ÏòòÐóíòÐá í 7á í`ÑòòКcòКÓá`òðÏòÐòÐæ á á í í 7á@á í íòò`šòÐáðóÐaÑšcòòðá á 7í 7í áÐñÑzóóòÚHæ@þòñá@í í íí í0í 9á æ æ@òðó`òô@í 9áðŒæ á 7í 9á á 7BAæðŒí@í !á á í æ 7í 9á íÑá íæ@íðŒá@íòÐá æ@á@á æ æ@aÑaò`zÓá 7óðŒóðŒóðŒí í á@í á í í íB°Bð$Ö:üð:üðüð$æ:$Æ:$;$öüÀ:ü°:ü°:üÀ:$öüðüÀþ:üÐ:'Fb¬Ã«Ã«Ã«Ó¬SbÿÀ«Ã®sb±Ã­ÃÿPb«Ã¬CbÿÀ«ÃÿÀ°ÃÿÀ¬ÃÿÀ«ÃÿÀ¬Ã®ÃÿÀ­Ãÿ@b­Ã­Ã¬Sb¬Ã«CbÿÀ®Cb«CbÿÀÿÀÿÀÿPb¬Cb«CbõÀϸ ÿ@í á á 9b@òP 0ò`òÐæ 9á 7íòÐÏòÐòðáÐò`aÑá æ áÐáÐòzÓzcÑòÐáðóaazííòòþðá í0í á@á í@P Ê d 9á` –¸¬"Ưà Àðu`òòÿÐAæ ÿ æ áÐÏ` «Ã«Cb¬Ã«Ã«Ã¬ÃÿÀ ; Ðá@7¢9áÐzs#áÐððáÐá á áÐá á áÐá á áÐòòóÐò`ò@ví@æ@íí áÐáÐá á áÐá á áÐá á áÐá á áÐá á áÐá á áÐá á áÐá þá áÐòí á í@á 9á 7!á@æ 7æÐòòí 7áÐò@vÏhòAí 7áÐò`áÐzÓòòò@æ@í í@áÐñòzò`òí@á@æÐòÐòÐá æ@vó í@æÐá æ áÐòò`áÐzÓá á á í@á á æ 7áÐò`š7"á á á áКò`áÐáÐòšÓá æí á 7á0í þá07Bíí áÐòòí á á@á á á á á áðAd7í á á á@¡7æ@íí áÐòòÐò`òí 7AáðŒ7Báp#zòííòòíòòíóðò`á 9á í íí áÐ}°:üðüÐ:%&;$Æ:üà:üðüð$¶:üÀ:üðüÀ:üðüP‰ü ;üÀ:üÐ:%öüÐ:ü°:üðü ;$¶:ü°:üð$;ü°:$Ö:üþà:üð$ö:ü@‰ü°:$ö:üÐ:ü°:üÐ:ü°:üÐ:üÀ:üà:üÀ:ü°:$ö:üP‰õðáðá ·ðá æ@– á âd@–ðí 7æ æ0Aá æ áðòÐáÐzò`ô`Ñò@æÐšÓAæí 9á æÐá 7!æ ízcòAvzÏØazò`í@í@íòòò À dzÓ‹À¬@m‰üð’ z@ÑÁíz³ ü í 7Ñ AÍ:üðþBP> á æ í0d×ò`òòÐá@‰¢7á@á@ôô@á@á@íòôÐáÐòÐzñá æ á@á@ôô@á@á@ôô@á@á@ôô@á@á@ôôÐá áÐqá@á á æ@í@íÏØòÐáÐzaí ñŒíðŒóæ á@æ 7æ áðÑòÑòðæ á@á šzòÐÑñzcòÐþòô@íæ 9æ@í æ@á@í á í á í á á 9í òÐá á æ æ ÑÑá á 9æ@òÐá á á á æ@á@ñòÐæÐæ áðò`ÑÚØòÐòÐòòÐz3á 9æòÐzòðá á@Ñò`zÓòÐòÐÏØá`òæ@òò7Aæ í0á á á á@á@ôôÐòÐáþ á@òÐá í á`òòÐá æ  ;pÕÆ~ìÈžìʾìÌÞìÈÎõð!æ ·ðá !‹ á 7bPòP Úòí í 7æ á@æ á aòÐòÐá ízcòòòzóá æ á 9á 7æ 7íòò`zóá 9íæ á`ôÐòÐòÐñ  z@±Înìüð  z@á á áðÑá ·ðáÐòí ’pìüð%PõþÐòÐaí ô`Ñò!æÐòÏÏÏhzÓz!í íò`òÐòòòÏÏÏÏÏÏÏÏhíòšÓòzÓá á 7íòò`šòšcá æÐáÐá æ á d×_ÙzÓô`òò`ò`á æ á@á á æ d'í@áÐòðòòò`òAæÐ_)áÐzcí 9á@æÐzÓþ!O`8yáä…›×N ¼p é…[(0œ¼píÂÍk'°]8yáäÉ£îc¸ÕD)¯]ÊvÃÉ3×®d¸”òÌÉ W²]8yáÚ…“®¼pí>¶“g®ÝÇvMõû®ʦíäµ›×N½pòšÊ3÷±¼píä™ '/\Õpë™+N^8yí䙓®êÇpíjÊ '/\Êp(Ã}l'¯¼vôÌÉ ‡²¼v(Ã(‘ùÃ?Î=ZôhÒ¥MŸFZõjÖ­]¿]_;yíè™Ëõpò$…û(®yô,}n^;yáäÑ GÏœ†Ke¸yí>¶û®]¸pòÚÍkZ²ÝÇváÚ}lGžväi'œyÚù(y‘ǜ”Ú‘'œªä çƒRžÑƒŒpäiÇy-ÄÏøù `þ £yÚùˆŸ¦ä1Çœ]þ1§$s¶‘äµøù’gþ ©pPjGž¦Ìù(œÚ1ç#s> Gžpä Gžpä Gžpä GžpPj'yÌ‘'œÌ‘ÇyÚI©y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'yÂùKžpèi'yÌ‘'œ¦J §sþèiGžpÚ Çz¡§yÚ GžpäiGž¦Â UžpäiGžvR GžpÚ Gžp>jª¤väiç£pèI©bÍ‘'œ’š2ç£väi§$sä §¤vÂi'œÂùÈy©©pÚ1GžvÂù¨pª ç£pèiGžvÌi'œÚ §©’Â1ç£pJj‡>yÌ¡§yÌ ç£v>ªªy‘§©pä Gsä Gžpäi'œ”Ì‘'œš GžvR ç£vä1‡žp>jç£vÂ1§¤v‘§y> §yÚ‘'y‘§x‘§sš’§yÚ™§äp> ‡ž’Ì‘ÇzÚ‘'z>j§¤þvä™§)yÌ‘Çy‘§y‘'yÂiGžvä Gžpä Gžpä ç#s> Gžpäi§¤pÚù¨©pª*izè)å~t„=vÙg§½vÛo÷ŒŸzø Gžv>ÚåŸ’Ì G’vÌ)‰ |Ì)åyÚ¡ï£pj Gžpä Gžpä ç£pä ‡y‘§Ú™'sJ ç£p> §¤vÂ))œ¦Ì‘'”Ì‘§pä ‡<Â!p4å#áGUæy´Ãíøˆ9è’pÈ£)á‡9äaŽ’|`ÊøƒäAsÈ#–pkÚp‡;´…m`á?øñE(Cd¨Š<Âñp dþÿGÉ¢!‰ræ†ÐŽ„CáhG8æ’v|¤%i‡<šòz„%ôGJÂÑŽp´ã#í G8>Òy„CáG8Úy„Cí¨ =Âz„%ôJè”Ð#(¡G8PBp¤$íG;Â!p´#%ô‡<Ú!pÈ#(1G¨ÌÑyÐ#1G8JÒy„£áG8JbަÈ#òhG8äÑŽ’´ã#á‡9Úy˜cU) <š"s„Cáh‡<ÂÑŽ’„CáG8PŽvÈÃíJÂ!p”„æ‡<Âñ‘vÈ#ò‡<Â!sÐÃ)þ GIÌQ’v|Äòh=Ì!¦|¤)òG;JÒŽ´#%iÇGÌQ’pT%óh‡<ÌÑy„£ GIÚ!p|Äò‡<Â!pÈ#‰ÑGÂÑ”p´CáG8äaŽ”„£òÇGèy„£$áÇ9>ÒyÄHáG8š"¦ÐÃí‡9ÂaŽªÈà ‡<Ú!p ¤òh‡<Ú!p´Cá‡9Â!v¤¤% ‡<Ú!p|$òhÇG莚´Cí0‡<Ú!pÈ#¡‡9Úy´ƒæ‡9Â!p`uø@E;ZÒ–Ö´§EmjASÈ#òþ‡Ò”„CáG8ÚŽ’´#íøH;>y´CáøH;‘’p|$%iÇGÚ!pÈ£1‡<ÂñsÈ#íøH;>Žv|$íG8äÑŽ¿„Cáø$€ñ2´£$íX„jGÓÎðƒÿð0'îÀ@âzC;ÌQ’„ã#áÇ-øay4ÅÛk<ÃHâu@8>Ž’´#í‡<ÚŽv˜CáhJ;æ!p4å#íGS>ÒŽp´#%áGSäÑs ¤ò0þ=ÂAp˜CáG;ÂÑ”´#MùH;ÂÑ”´#MùH;ÂÑ”´#MùH;ÂÑ”´#í¨I8>ÒŽp4%i‡9>ÒŽ´#i‡<Âñ‘pÈ£ ÇGÚQ’v„CQ.I;ä”À#ò0ÇG¢y´#íHI;äÑŽpÈ£áhG8äå´Cæ(I8Ry„Cáh‡<Ì’¦„ã#áG8䎔„CæøH8èy„ƒ%iG8äÑy„CíGSÂ!¦È£æ@‰9äsÈ#% GSÂÑ”D95i‡<Ú!v˜£&æ(I8šò‘¦”$ôGIþÚQs|Ä(iGIÂ!vÈÃi‡<Ú!pÐ#òÇGb$v„ƒ)1‡<Úay´Cæ@I;äÑ”´CíG8äÑŽpÈ#òhJ8>Ž”„£áG8šŽv˜ƒò0ÇGš"pÈ#MùH;ÂÑŽp4%%1ÇGÚ!pÈ£ò0=ÂaŽ”´ã#> ñ~èØñ‡|ä%?yÊWÞòáG=ø!pÐ#F»ø‡<¢,K´%døH)> v„ã#íøH8>Ò”’´ÃiG8äÑŽpÈ£%i‡<ÌAyDYæG8䎴CáG8äÑy˜£áG;äþÑŽ„Cí0‡<ÂsÈ£òh‡<Úy´CM ‡9äŽ4å#áG;Ì!pÈ£)æøˆvøˆ°eÐ2‡pˆ²E¸¼Òð1p'ð0+_¸ƒ°eø2øˆp‡pø‡z0‡\øyˆ2yˆIˆ¼€eЃøˆvøˆph ”0z0yhyhyy0yˆ2y0yˆ2y0‡yy‡0‡¦˜”y0‡b‘s‡(“s‡(“s‡(“s‡(“s‡(“s‡(“s‡(“søˆp‡p‡ph‡’0‡0y‡v(‰þphy‡’y‡yy‡vøˆp‡ph‡’‡(“‡psøˆph‡ph‡”‡vsøs‡v‡ph‡pˆ²v‡v@‰s˜‡(“søˆp‡p‡v‡¦@‰p@‰¦‡yh‡’h‡’hy‡vø‹vH‰(“s‡p‡vøs˜‡vøˆp‡vsøˆp˜‡v‡vz0‡‡vøsøshssøˆp‡ph‡ph y0‡v(‰p‡p‡p‡v‡p‡( y0‡p¨‰psy‡yh‡”yy0‡v‡pøsøˆvyyhþ‡’h‡š0yhyˆ²”0yhyhŠ0y0y‡vy0‡p‡vøs‡v‡ph‡’‡y”h‡¿h‡’0yhz0yˆ2y0”0y‡¦øˆpøˆv˜yh”hŠpøˆ¦‡ y(…hÀ¿ÌÀÌÁ$ÌѨ‡h”Ø~shŠpX„vyy ƒÕ±„0‡‡v‡ph‡’0‡v‡psøˆv( s‡phy‡v(‰p‡vs( z0‡y‡’yhz0y‡vs‡vøˆps‡v‡¦‡p‡ph”þ0‡v@‰vøˆp‡p‡p@‰p‡p(‰v‡p‡pð€Rx= ƒ’0yX„ÕÀOÏà‡\øuøZø~؇eð_ðH= ƒv‡vøˆ”Ø~s‡p‡g„üì ~øHx†?€p0yhyhy‡v‡”0y0‡’h y0y‡jy0y‡hyyyh‡pøˆp‡ph‡ph‡’hyy‡yh‡¨”0y‡’0y‡jy¨‡’0y¨øˆ%0X‡j€pøˆv‡p‡pøˆv‡vø‹þv‡vøˆp‡p‡p(‰¦(‰vøˆvyh‡h‡yy0yh‡p(‰vH‰( ‡vH‰v(‰p( s‡v0y0y‡¦øs‡vH‰v‡v0z0yy‡h‡ph‡p‡v‡v‡v‡( yh‡y‡¦‡vyh‡p‡p‡¦˜‡p(‰p‡phyhs‡ˆ‘’h‡yh‡¿‡¿0yh‡zøˆv0‡ˆyyzhyhyyhy0‡”h‡p‡p‡v@‰v‡v0‡p‡ph‡”yh‡p‡¦0zhyþyh‡p‡v‡v0yh‡p(‰ps‡p‡ph yyh‡y‡vøˆvH‰vøˆv0yh‡0‡’yhyh‡y0yyh‡ph‡p‡ph‡p‡ph‡p‡vH s‡pøˆp¨ s‡v‡p‡¦‡v‡v‡(“‡ps(‰øˆRø~àÐÆuÜÇ…ÜÈ•ÜÉ¥\Çå‡zø‡¦‡v0‡]à‡h‡°„¦‡p1 y(…‡h‡ps‡phy0‡”yyh”‡‡vøˆùˆv‡p(‰p‡vøˆvøˆp‡v@‰p yþ0y‡’hs yh‡h‡‡v‡ˆ‘hŠpøˆv‡v‡¦”yyyh‡ø€EP= ƒp‡p‡p°„Ê- Zø€¦|à|¨|À‡°eø2hyy‡øˆvy¸…hy0y0‡h„ÇýKP=€’0yˆz0y Z@ €‚vyhyhyhy¨†hyh‡yh‡Pé(‰v‡phyyh‡y‡¦‡jyy‡v‡vøˆphyhyø=‡j€‡v‡p¨†0‡oþj‡oЃp¨øˆp‡vH s‡v‡p‡ph y0z0y‡’‡y0‡v‡ps‡p( s‡p0‡”0‡y0‡p‡phŠp‡vøˆph‡p‡p‡ph‡pøˆpz0”‡0‡pøˆp‡p‡p‡ph‡¿hyh y s‡p‡pH søˆp‡phy‡š‡hyy‡v‡v(‰v sh‡¿yy8‡’0‡ph‡ph‡p‡p‡v‡ph‡ph‡’0‡¦øˆph‡‡’h”0‡v‡pøxhyhy”hyþ‡v‡pøˆ¦(‰pøˆphyh‡yhŠb1‡‡’0z0yhŠh‡p@ zz0yh‡‡’y0yyy0y s‡pˆ²’yyy‡v(‰v‡v@‰v(‰v søsh‡p‡phyh‡hy‡v‡v‡v‡p‡v‡phŠyy0yhyhyhy‡ y°„0àÎöìÏíÐíѨ‡hy‡Ø…y0‡v‡Eh” ƒÕ±„øˆvø‹v ‡p‡p‡p‡vøs‡v‡pøˆpøˆp@‰p‡pþ‡v‡pøs‡p‡phyhy‡v‡pø‹p@‰p‡ps‡p s‡vzøˆp@‰p‡phy0‡’‡vøˆv‡vøˆv‡pøHx= ƒp ‡h‡Eíø~x†-ˆ@ZÀ‡€`þHx=q‡vøˆh y0y¸~H‰gÇ净„gÐh‡p(tP t -¨s‡p0yh‡p‡j€p‡pøˆp‡vy‡v‡vy¨y0‡’h‡0y‡’0‡’¨†‡ps‡v‡0yhŠy¨þhy0‡h‡jy¨hyy‡j€v‡p‡vy‡vøxyy0y‡šh‡h”0”hy‡¿hŠp0z(‰vøˆvøs ‡‘‡ps ‡p‡v(‰vøˆp(‰v˜‡p‡v@‰p‡v‡p‡pøˆp‡v‡vyh‡psH‰vs‡p‡v‡vøˆvs yh‡phŠpøˆp‡vøˆvøˆ¦‡¦0‡’y‡v‡’hy‡ zH‰v‡v‡p@‰p@‰yh‡pøˆpøˆp‡( yhy0‡ˆ2s‡vþyyyh‡0‡‡(“‡pøˆ¦øˆv‡vyyy‡v‡¦‡vøˆp‡pH‰v‡¦øˆp‡p@‰v‡y‡‡yhyh‡’h‡š˜‡ph‡p(‰v‡v(‰¦0yh‡p‡ps‡p‡v(‰0zy0yh‡p‡v¸{y‡’‡’0y‡h‡’hxhŠp0‡’z‡Rø~˜ðÍçüÎ÷ü ç‡zà‡p‡¦0‡]ø‡v(‰v°ú‡p1 y(…yyh‡ph‡phŠy‡p ‡hy‡vøsøˆvøˆ¦þ‡p‡pøˆv‡v0‡h‡»oy0y0‡0‡h‡p‡vyhyy‡hyh‡Áÿˆyyy‡v‡v‡vsyòÚµ 'Ïœ¼pòÂÉ#hN <–žý!#0ÁEÿ6rìèñ#Èÿø}ø‡ÎI'øø}ÀǾžé!# ¼püÂÉkGÏ\.~íµ“.š$ŽJ—2UÊσ%eu@ '`;yí–N^=sòä¡Ãá@ qòª ×NŽXˆ£'.ŠTÈs ÀVáä…#ø E¤m'/\5o""Î\5cå9#þ®Z€pÕŒí†BÀ?Ì9x™yÕÈk§‡ƒ,Äì–CÜæàáä…k'Ï\8yæÂÉ ×nl¸vá6· ×.œ¼pcÍm×.Ayæäµ Þ.øØvòµ“®¼vòÂ…ÛL0œó‰-~ÔãáhG8äaŽ]ðc,íË"ÐCzÈ£G8Ì!v„c3íAÆÒŽÍ´Cí‡<Ú!vÈ£òhG8äÑy˜CáK;žvÈ# ‡<ÂaŽÍ„c,áG;Ì1–v §òhÇX2ŽÍ˜c3‘G8ä‘Áv˜CDíË$ñŒ?a,íG8,¡Ïxòƒzøhx°øøÀ"”Q2˜CáG8þ!þpÈ#ò¸Å?ä‚„#’À'?>` eüòG;6ÓŽÍ´CÝA`aÈãøE8ä1Œ´£Ç7ð zÈc hG7ð‹Í˜c‡9‚Cy´ƒæ@äÑŽ±„£†<Ì1Œ´£G8äá „£hG5 oàòhG3ÐŽj@稆ÚQ Ôãø…<è1ŒDí‡96y´c3áh‡<ÂÑy˜Côi‡<Â1–vŒ… áQ8ÆÒŽp´#‘G8Ú1–pÈÛi‡<èŽÍ„£áhÇXÚ±s´Cá ˆ<Â!þpÈ#íG;ÆÒy´CáK8äy„£áhÇXÚ!sÈÃò0‡ýäay´Cá‹9äApÈÃèi‡<Â!v„£áN8äÑz„CíG;Â1y´#8áÈ`8äy„Cô‹9Â!s´CíG;èaz˜#ò‡<ÂÑŽp´CíG8äŽvŒ¥c ‡<ÂAy˜ƒ ò8ÇfÚ1sŒ%ò‡<Â!úŒ%ò0‡ˆÂÑy„£ò‡<Â!sŒ%c ÇXÚ1–p´#íK;Â1vÈ#òG;äy„CáhG8äaŽÍ´#8íG;äŽÍþ´CÙ }äޱ´CáG;ÆŽvÈÃc zÂÑŽÍDíG8äAy„Cá@¾,ñ±R¼â¿8Æ3®qwÖƒô0‡<Ú!]ü#òG;Âa‰v„£áh‡òe‰Œ…áK8Ú! Ê#òG;Â!plÆò0‡<Ì!sŒÅci‡<²™p$òÇXÌ!vŒ¥áhÇXÚ!vÇí‡<Â!s„Ã~ò‡<Ì!ûÉ#òG;äÑy„cí‡9‚y„CáG8>‰gè á0ÇXÚ±ˆ+å–§…œÐZXþø`ë ñ =þa,íË?äz4püK;äÑŽgHŸüø$€¡ÈÃòAæqŽpÈ#æK;¦ñ´c ô)@yTCò¨F¢OÐc‡<Â1–j@íG;Â!v„cp sÈ£c©FÚ1–e ÕÀfTÈC5@8TƒÈC5€<„C;,ƒ„C5€<„C5@8TCÈ2€ö=@8´C8ŒE;„ÃX„ƒ<´C8lF;G;ŒAÈC8ȃ9ÈC;˜ÃX„ÃX„AÈC;„ƒ9Ѓ9ÐA„ƒ<´C8´Ãf´C8ÈC;ÈC;ÈC8ÈC8Èþƒ9Ѓ<„C;„ƒ9ȃ9ŒE;lF8ÈC;l†9Ѓ<„ƒ<AÈC8ŒE8ÐC8l†9ÈC8˜ƒˆÈ<´ƒ9ÐCp´z´ƒ<´ƒ<„C;„Ãf´ƒ9Ѓ9ÐC8ÈC8ŒE8ÈC;ÈC;Œ…9Ѓ<„ƒ<´C8ÈC8ȃ9ÈC;̃<´ƒ<´ƒ<„ÃX˜C; G8ÈC8˜z´ƒ<´ƒ<˜=˜ƒ<´C8ÈC;ŒE8ÈC;„ÃX´ÃX˜Cp„ƒ<˜C;„ƒ<„C;ÈC;ŒE;ÈC;ÈC;lF8ÈC8ŒE8´ƒ<„C;ȃ9Œ…9ŒE8Ðz„ÃX˜C8ÈC;„Cp˜AŒE8´ƒ<´ÃX´ƒ<þ˜=„ƒ<˜=„=D8ÈC8´C8ȃ9Ѓ9lF;ÌC8ÈA„ƒ<´Cp„ƒ<´C8ÈC;ÈC8ä¡<„ƒ<„ƒ<´ƒ<˜ƒ<„ƒ<˜ƒ<„ƒ<„ƒ<´ƒ<´C8ÈC;ŒEЃ<”Âðå %Q¥Qe=ñC=üÃf„ƒ<ÜÂ?´Ãf´ƒ%´CpA¾”‚ÈC;ÈC8lF8˜ƒ<´ƒ9ŒE;ȃ9ÐC;ÈC8ˆÈ°Õ<Ì<|€%(ÃA8ÈC8ÈC8üC;Ç.üƒ<„C;ȃ9Dƒ$ä“XB4Ô ‡9äa;ÈC8 ´C7€4„Ãf´C5€ñÃXÂ3è´C8ÈC8ŒE8ÈC8ÈC8TƒC;à @€8ÔC è€6ˆÃ4À=TƒŒE €6ÈC4|B8Èà €6´C)ÈC7€4ÈC8ŒE8ÈC7€4È:¼€ŒE8ŒE5€€:h@ ÈC;0À$œ:´´C5@8TƒŒÅ ø@8ÈC €ñÃXÂ3ü‡9ŒE;„ƒ<´Cp„ƒ<˜=ÄXЃ<ˆ=Ç<È@„“×®¼pòÊ ‡0œ9yáäLˆ°]Âvæè…“×nb»„íæµ“a8‚áä”×.\8yíäµCHa¸„óÚÉk'®Âváäµ 7±]8‚óÎÉ ×.\ÂvòÂM$¡9zòÊk—0þ\;yáÌÉ#N^¸‰í&¦5'/œ¼piᆣ'Ïœ¼p ÂCN^»pæä…“gN^8yáä…“N^8„íÒ¶3×îÄpòÂÉk—Öœ°ä™?È0‡ yÂù¡v‘ç–Â!Hs¢‘¤žqÉ-×ÜsÇýeô pÚA(œvj¸7€{ ’Çœ„’'þ‚"ˆ yÚ‘‡s2Gžv2'yÌ‘§yÚ‘'œvä¡ÇyÚ Gžp Gžpä §p Gžv2§p&2XžpÚ‘'œvè1!ƒjGžpà §yÌAÈyè1‡sä!(yÂAèœyڑDŽڑ'y‘'y‘'zÌi¡v Gžpä Gs‘'yÂ!Hžv Gžp’'œy Gžpà GsÚ‘'œvè1§„Ú‘§¸è g¢päiGžpÚ™(y‘'yÂiGžpäiGžpä Gžpäig¢pä1¡v2Gžvj'œväiÇyÂ!h¢vè1'þ„Zj¡pä §yÂi'‚‘'y‘§„Ì‘§„‘§%‚‘Çyè g¢pÚIˆžpä1g¢pÚ §yÂ!vÈ#ò0G;Òb„´Cí@=Ì!p´Cá H8䎴˜CáG8äÑy„!áHH8BpÈ#òÇDÂÑ„„£òAäaŽp´#ò‡<Âs´#-æG;Ž„˜#!æHˆ9äay„Cá=äa‰ ‹‹]ôâÁF1Ž‘Œe4ãјF5v‘æ˜È.ø!v $‹G;ä!Žvˆò°ÄäApÈ#ó0X;äÑŽpþ$‘G8äŽv ¤òBÂ!sÈ£ô0GBÂ!pÈ#íG8ÒÒŽp´CáG8äŽvÈÃæG;y˜£áHˆ9y„CíG;äaŽpÈ#¡‡9y„!áG8䎔z C8äÑsÈc¿‚Ò²ˆäe!‰€0ô@y˜#!ÿ ˆ°eè ò ‡9äKP‰ÞLâ‘øáI(ãu0‡<Â!pü#Ù?Ú„@”á o8=<` eÔò‡<Ú!pÈ£ò8¤<Â!p´#-áG;äÑy„!íG8Òy„Cáh‡<¡ÞvL$ G;ÂÑŽp´!áG;Ž„´#!áG8ÚŽv „ òh‡<Ú‘–p´#1BÚ!v$¤ iBÚ!pÈ# þAÂÑy˜c"íHH8Ò„˜Cæ ˆ<ÂvÈÃò H8ÚaÓpÌÃ`áG;èaŽv„£1BÂÑy„ƒ BÂ!pÈ# G;ÌÑy„Cæh=Â!vÈ#AH8Ú!p !íP/BÂÑŽ‰˜ã÷ A‚Ð# BÌŽvL$òh‡<‚pÈ#òhG8Ú!vÈ#òhÉ<äÑ„˜!ôBÚ!v„£ò ÈDÂ!pÈ#ôB¡æ!Ú!-ÂAÂ!! Âa"¡&‚ "ä!äÁÚAÌ Ò"Ú!Âá÷Ì!þÌ!ÚAÌ!ä!ä!ÚAÂA¡ÂAÌ!Â!!Ì!-Ì äÁÒb"ä!èÁ¡&""ä!ÚAÂAÂAÂAÂ!~Ä>Àá¼ð Á0 Åp ɰ Íð Ñ0 Õp ËPÌ!èÁrá¢äÁäÌ ÄàG,áä¡ä!ÚAÌ!Úa‚ äÁ&"ä¡ä¡¡ä!Ú!! !¡‚ ÌÁäÁä!äÁÂAÌ¡ä ä!‚ äÁ¡&¢äÁ¡ä!ÚAè!ÚA Ì!ÚAÂAþ¡áä!> žAÈ ¢¡Þ¸qIøáJô€ ¢â¡ä!äáøAÚ!ä ÍAÌá,áôä¡ä!äÁ`ÌAÌAÂAÂÌAÂAÂ!ÚAÂAÂAÂA¡ä!ä!¢äÁ"ä!ä!Ú!ä!Ú!!ÂA½BÂAÚ! &Ú!ÒÂä¡ÂAÂAÂÁä!Ú!&""ä¡ÂAÚ!ä ÂAÚ!ä¡Â!!ÌAÚ!ÚAÌ!Ú!ä!¢ÂAÚ!ä¡Â!-Ì!ÚþA!Ì!!ÂAÂAÂ!!ÂAÚ!Ì!Ìä¡ÒÂ&bÎ!ä ä¡ä!äÁ&ÂèAÂÚ!Ú!!"ÒÂä¡ä!ä¡ÂAÂA¡Â!ÌA¡ÂAÚAÚ!Ú!ä!ä!Âä!&¢‚ äÁÚ!!Ú!Úa"ÂÁä!"ä!éAÚ!é!èAÚ!Ú!¢ä¡ä¡ÂAÂ!!"å!¢ä¡¢¢¡ÌAÂAÂ!ÂA"äÁ"ä!ÚA"ä!ÌAÂAÚ!!ÂAþÌ!!ÌAÂAÂ!"ä!ä¡ÂAÚ!Ô«&¢äÁlª&¢Â!!ÂABÌAÚ!!Ú!"ÌÚ!-ÂABBÚ!ÂAÚAÚAÚ!àGJáÌAذLÍôLÑ4MÕtMÏ4!Â!!vÚ!ä ,!¢ÈàGJáæ!äÁ"ä¡ZBÌAÂ!Ú!&"ÂÂä!äÁäÁä!"ä lª¢‚ Ì!Ú!ä¡Â!-ÌAÚaÂA¢äÁè¡¢ä äÁ`¢‚ ÂÁäÁþâaþ@ ä! fº±Z„>`”AÈ ä!ä!þ!ÂÌ!þ¡ÂäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁèÁäáAþÚAÂ!Ú!èÁä!Ò"ä!ä¡ÂAÂAÚ!!Â!ÚÂA¡Â!!¡ä¡ä!èÁä¡èÁÚ!Ú!!ÂAÂA¡ä¡ä¡¢ä¡lªä!"ÚAÚa"ÚÌAÂA¡¢&¢Â""¢"ÚAÂa"ÂAè!èÁÂþ!-Â!Ú!æ¡¢ÂAÂAÂaÚAÚAÂAÚAÂAÚ!Â!Ú!!Ì¡¡Â!ÚAZ¢¢ä!ÒÂä!¢ÂÚ!ä!Ú!äÁä¡ä!Ú!ÚAÂAÚ!ÚA¡øÂäÁèÁä!ä!ä!Ò"Ú!ä!äÁä¡ä Â"ä!Úa"¡Ò"Ò‚ äÌ!ÂA ¢ä!ä!&"ä!äÁäÁä!äÁÂA¡Ò¢¢Â‚Ì¡ä¡"äÁä¡&"ä!þÚ!-Âa"Ú!¡ÒÂä¡"Ú!bBÂAÌa"ÂAÂáÂAÌAÂAÂA¡ä¡ÂÂAÂ!!Ú!!ÌAÂ!ÚABÂAÌ!ä!&"ÚAÂAÂ!èA,áä¡äÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁþäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁäÁ ä¡ÂAnáÌA¡Âaä!äAÚA ~Ä< !èþÁB¡¢ä¡Â"Ú!ä¡Ò¢ä¡‚Â!ÂAÂAÌ!ä!ä!"!Âa"Ú!Ú!!Ú!‚Z¢ä!"æ!!BÂAÂAÌAÌAÌ!äÁä!äÁä¡ÌAÂAÂáJþ€ Âäa¬u¹ÿ>žAÈ ä¡âÚa"vÂAÂAÌÌÌÌÌÌÌÌÌÌlê ô ÚAÚ!ä!b""&¢Âè¡ä¡Â!Ú!ÌÁ¦Âa"¦ÚAþÌä¡¡ä¡ä¡"ä!ÌA ÂÁä!ä!ä!ä¡ä!Âä Â!Úa"Âä¡ÂA¡ÂAÌA¡ä¡""ä!ä!"ä!Ú!ÚAÂ!-"Ú!ÂAÌÚ!Ú!¢ä¡ä ÂAÂ!-Ú!!¡bÂÁ`¡Âè!äÁ&"ä!Ì!ÂA!ÚAÂAÂAÂ!ÌÚA½Â!ÂAÌ!ÚAÂAÚ!Ú!ä!"ä!„7!ÂAÂAÂ!!ÚAÂAÚÁäÁä!þ¢ä!¢æ!¢ä¡Âa"ÂABÂ!ÚAÚ!!ÂAÌ!ÂÂAÚa"Ú!!Úa"ÚAÌAÂAÂAÚ!ÚÁ¢ä ‚ æ!äÁè!!Ú!¢äÁäÁ`ÂAÂAÂA"äÁä¡ÂAÂ!!ÂAÂAÌÚÁä!ä¡&¢¡ä¡äÁ䡿!-Úa"ÂAÚ¢ä!ä!‚ "ä¡ÂÁä!lÊä!¢"èAJÁÌ!ÌÌÌÌÌÌÌÌÌÌÌþÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÂ=sôÌÑ3GÏ=sôÌÑ3GÏ=sôÌÑ3GÏþ=sôÌÑ3GÏ=sôÌÑ3GÏ=sôÌÑ3GÏ=sôÌÑ3GÏ=sôÌÑ3GÏ\=yòÚ…#jÎÜ®DÍÑk·ˆ¨¹zíÈà£WꃼpDå™ëÚ.l8yá 'ϽvòÂÉ ×.œ¼°óÂm×Už9z]ÃÉ3'/\»pDÃ…%N^»pò '¯]^ya‰† '/ì¼°“»¶“×Nž9zòÚumGôÃ"ezÈ„“N^8KÿjÛ¾;·îݼqóû`IY2aÛÉ Ç¯x8y·þÑ ×9ºtyæä…“ÞKÑêK´¼âíä…“gN^;yáÚÉ —7ÑvòÌm'/œ¼pþDõ '9ò„Sœ<áÈÓQátŽ<á´#O8]ÑN^ô„#O;ò„#O8aMfNWá„NWíÈcŽ<ítÕŽ<áð£ üø$žñ2´Cí(?" íâ퀙ŒlÛŽpÈ#0k‡<Â!pÈã–x†ŽŠ™cƒò0GAÚQФò0=äÑŽŠ…CæG8äaŽå†cƒá(H8ä!y„cƒáxˆ9䎂„ƒ GAÂ!vÈ£ò‡<Ú!v¤òh‡<ÚQp<¤áhÌæ!v<$iG82pÈ£òhÇrÍ!vÌ#òhG8ä!yDó‡<Ú!v„Cí‡9y˜ƒæG;Âaz˜ƒí‡<Ú!pÈþ# ‡<Ú!pÐCæxˆ@ bzÈ#òÇråy„Cæ(ˆ@äÑŽ‡˜CæxH8 by´#ò‡<ÚQv„CáxH8äay´#H8*y„CíG;`Žv„£ í¨X; Ž‚„CæG8äy´#0 =ÌQv˜fæh‡<ÌQvÄiÌÚ!pÄòhG8²AsÈ£áG8äÑŽ‡¤ áxH8èáåp˜£ íG;äz„£ æ(ˆ@äÑŽyÈ£á‡9äsÈ#ò‡<Ú!v„C óG;–y„£báG;Ì!sÈ#þíÇCÂ!pÈÈò0ÇC@y”âôÈaÅ-~qŒg\ãçxÇ=þq‡<äô‡$rq[ÉCüyË]þòŽ3Já-Îy´#òh‡ºÀ@âþz C;äy„ãá¨Ø.øÑy„C á‡9äay˜Cæ‡9äÑŽ‚„£á‡9Ú!vÐðD.êy„Cáh‡<Ú!pÈ#)H8"s´Cá‡9y‡v‡pxˆv¨˜v‡‚h‡p(ˆph‡ph‡‚yy0‡v‡v‡ph‡phy zy‡v‡v¨˜v‡p‡p‡p‡p‡phy‡vs‡v‡p(Їv‡p‘‘‡p‡p‡p(ˆpxs(ˆphy0yy0y‡v s‡‚‡‚‡v0yˆphþyhy‡‚‡‡hy‡ 2/“‡p¨˜v(sh˜9‡yhy‡‡z‡‚h‡p‡phyyh‡‡h‡py0y‡Š y0‡‚h‡‚yhys‡vxˆp‡v‡ph‡p˜‡vxˆp‡p‡v‡v‡yhy‡v‡v s‡p˜‡v‡v‡p(ˆp‡v‡v ‡p(s‡p‡pˆŠ ‡‚ˆp˜ y‡‡y‡v‡vsxˆv(s‡p‡pˆ‚0z‡‚0‡py0y‡‚h‡‡‡vyþy‡vzy0Š€z0‡p˜‡v‡p‡p(ˆvxzyh‡‚0y0z0‡ph‡‚‡vyy‡‡h‡p‡p‡p(ˆv€™p‡p(sŠz0yy‡ y°„À‡š‡úÊyøÊ𱤇y(Ëy(Ëy(Ëy(Ëy(Ëy(Ëy(Ëy(Ëy(Ëy(Ëy(Ëy(Ëy(Ëy(Ëy(Ëy(Ëy(Ëy(Ëy(ËzK¸y0y0y0y0y0‡p„ ‡y(Ëy(Ëy(Ëy(Ëy(Ëy(Ëy(Ëy(Ëy(Ëy(Ëy(Ëy(ËyËyø(y ‡zþIØ…‡0‡‚‡vØ~(s(ˆE(ˆp1 y°„s(ˆv€™px(ˆp˜‡vxˆps ‡p‡v(ˆph‡p‡p(ˆph‡‡‡vX®p‡ps‡phy‡‡‡‡hyhz0y ˆp ˆ‡0‡‚y0yyh‡‡‡vŠ y‡`Ð2‡‡h‡E`=­,~è|ÀPHPH…Bà|è~øHx=ƒv‡v(ˆ‡‚hsØ~‡‚h‡‚˜˜™‡‡0y‡‡h‡‡0‡‡øKx=y‡‚yy‡‡˜‡pxˆþyyhyhyh‡yyhyh‡‡y ˆpyyhyh‡ps yy˜ˆp¨˜v0yh‡yxs‡v‡vyh‡‚hyh‡‡h‡‚y0‡Š yh‡p0s‡p‡pØ v‡p‡vyy‡‚‡‚h‡‡hyh‡ jy‡‚0z0yhy ˆp‡p(ˆph‡p‡pxˆv‡v¨˜ph‡ph‡ph‡p(ˆvyh‡pxˆv‡v‡v‡v‡v‡p‡vxˆv‡‚‡‚h‡‚0y‡v0zs¨˜p‡v(ˆv0þy‡ 2‡‡0y‡vxˆp0˜i‡ph‡phyhyhy‡‚hsh/ks¨s(ˆv¨˜p‡vxˆp ‡‚h‡p‡v‡vsxs‡ph‡p(ˆv‡p‡p‡v(ˆp0‡‚ˆp‡p¨xyh‡‚0˜i˜ yhyh‡p‡p‡ps ‡p‡vxˆv‡vxy(ˆv‡Š yˆp¨s¸Ãv‡‡y‡‚h‡p(ˆvxˆp‡v‡‚hyh‡Š1y‡Ši‡‚z‡R𱔇y‡¯”‡y‡¯”‡y‡¯þ”‡y‡¯”‡y‡¯”‡y‡¯”‡y‡¯”‡y‡¯”‡y‡¯”‡y‡¯”‡y‡¯”‡y‡¯”‡y‡¯”‡y‡¯”‡y‡¯”‡y‡¯”‡y‡¯”‡y‡¯”‡y‡¯”‡y‡¯”‡y‡¯”‡yz˜zIÈ…Š™‡ ’~ø(y˜yøJy˜yøJy˜yøJy˜yøJy˜yøJy˜yøJy˜yøJy˜yøJy˜yøJy˜yøJy˜yøJy˜yøJy˜y yø¨Š‘Zh‡p(ˆvs‡[ø‡ŠiKyhyh2 y( ‡‚ÈÐþp(ˆph‡p‡v‡‚h‡p‡pØ v‡yh‡‡hy‡‚0y‡Š y‡v‡v‡pð2s‡p‡ps¨sxs‡pØ vxˆv0yh‡ps ‡‚ssxˆ€eÐ2(ˆpˆE8QX&”.˜Z®eZƇ.à‡X„gø2‡pøyh‡p(ˆ]øyh‡yhy‡vyyxˆv(ˆpÈÐv‡vsøHP†?€v(ˆp‡v¨‘i‡‚™v(s˜‡v‡ph‡‡yy‡‚0y0z0yh‡‚0‡v€™pþ‡v€‡v‡yh‡‡h‡ps(ˆp ˆ‚h‡Š y‡v‡py‡‡‡v‡vxˆªs‡v(ˆp‡p(sh‡ jyh‡Š1‡v‡v‡p‡ph‡p‡pX.ssh˜iz0yh‡‚h‡pxˆphyh‡‚ s¨˜p(ˆp(ˆv‡p€™pz0‡v‡phy‡‡ˆ‚xˆ jy‡v‡‚ ˆphy0‡‚‡‚‡v‡ph‡‚hz0y‡vxˆp‡ph‡Šiy0‡v‡p‡pˆ‚‡v‡vyyhyþy‡‡‡v‡p‡p‡p‡phy‡Š y0y‡vs(Їvxˆps(ˆv(sˆ‡y0yhyh‡ph‡ph‡‚hyh‡‚yy0‡ph‡‚‡‚h‡‡hz‡ ¢ˆp‡phyy0‡‚y ˆ‡h‡p‡p(sxˆpˆ‚‡vy‡v‡vxˆp€™pxˆp‡ph‡‡0z0‡‡‡p‡ph‡‡yyy‡ y°„0‡; r!r"/r#?r$Oòs°„[h‡p‡ph‡p‡p(ˆp°„Hr-ßr.ß þp„]0‡‚yhz0Zà‡v‡vsXyy‡vƒ²„(ˆpˆŠi‡‡‡‚h‡pz‡‚‡v‡yˆpsh‡p˜yh‡Šiyh‡ph‡p‡p(z0‡v(ˆp‡p‡py‡‡y0‡‚hy‡v‡p˜‡vxˆvyy‡v‡p¸Ãphy¨s‡p‡pø€Rx= ƒp‡v0yX„X¾öÕH|À\…T…Bàƒyè~ø€Ex= y0‡‡ø‡v0‡]ø‡ps‡‡yzhy‡vy‡‡h‡yþss(sø€R†?€v(ˆv‡vyh‡‡‡Šis ‡v0‡v‡‚hyhyh‡p€™v‡ph‡‚yh‡p(ˆvy0‡‚0zh‡ph‡phs ‡v‡v˜yhU•‡p0yh‡p(s(ˆvsxsX®p0yy ˆ‚0yhyy0‡v(ˆvyh‡psh‡ph‡‡0‡‚h‡‡hy0yh‡p‡p‡p‡p‡v(ˆp‡p‡p¨s‡p(ˆp‡p(ˆp‡v‡‡yhy‡‚yh‡p‡p‡p‡p(ˆpþ¨s(ˆph‡p0y‡‚ ˆpˆph‡p0‡Š y ˆåj‡‚0zsxˆp‡vxˆvy‡‚0yy0‡å2y‡‚0z0zz‡‡zˆps(ˆp ‡‚h‡‚hyy‡‚h‡Ši€'°];sò†“'¯¼vòÚ…ShNa»p š“×váä…“®¼på…k'¯]8yáÚ…“×îb»pòÂÉ#(¯ÊÓŽ<í(ÔŽBá(ÔŽ<)Ô=þæ(dAá(Ž<áÈcN8¤P;ò„C9í„cŽ<á´C!æÇ<8Òs´C G;äÑyÐ#ò ÈEÂ!vÈ£ 1‡BÚ!p´#óàH8ÂÑ»…ÃG‘G8K|@°a\$íÇEÂÑŽp\$íÇEÂÑŽp\$íÇEÂÑŽp\$í‡2Ç.þ!pÈ£ ‡<Úq‘pÈ£áh‡<Âq’vÈÃò0Ç,ñ =   iÇEÚ!p˜C!á ‡9Úy˜Cá‡9ÚsÐÃò0Gy˜ƒ1‡<Úqsȃ !H8äÑŽ‹´Cðh‡BªpÈ£ò‡<ÂAŽdæPH8èq‘v(¤ 1ÇEÌ!p\„ 1‡<ÂÁ‘pÈ£á ÈE¡v\¤„íGÚq‘vÈ£ó¸H;äÑŽp(¤áG8äá£p(„ !H8Ú¡v„ã"áG8ä…´C!í¸þH8äá£p($ iGæŽv„CíG;䎘ƒMíPAÂay´#1=b…„CáG;äÑsȃ 1=Ìq’pȃ áG88ÒsÈ#òhG8Ì!v„ã$áG;.ÒŽ‹´CæG;Âa·vÈ£òh‡<Â!pȃ ò‡<Ú!pÈ# i‡<Ì!‚˜CæG8Ì!vÈ#òhG8Ì!pÈÃi‡BÌAppÄõAÂ!v„£æPˆ9ì&v\¤%”G8ÌA‚˜ã"áPH;äÑy$ ‡9äÑŽpp¤iG åÑŽ‹„CáGþ8䎋˜Cæ¸Hè!R|G8Є”Pá:J(pÈÃ%”G8äaŽÊ#ò0G åy˜£„ò‡<ÌQBy„Cæ2° p€#çh‡8ª!€p($ò0G åy˜£èP¶qRhAæ‡9J(pÈÃáh‡9äÑŽj ò‡<ÌQBy„Cæ(¡<Â!s”Pá‡9J(pÈÃáh‡9äÁPy„C!’ÈE8y„Cá‡9è! ~„Cá‡9ÂaN@æ(á s”Pá‡9J¨s”0ò‡<ÌQBy„£0‡þäŽj á‡9J(pÈÃ%”G8äaŽÊ#ò0G8Úay˜C!á0A¡Käâ" ‡@z¦‡L8z Û-ú÷ztéÓ©W‡Î:?~ÿøAççAÒ3=dÚ™cîÃvòÚÝâÇМ¼pdÍÑkNž9yíÌÉkNžv Gžpä1çƒR”ù#€ph §¡vä¹Ì°þpä §p §pj'œ†. GžvÂi¨pÌ¡'y‘§yÚ‘§p Çy‘ç²päi‡¬Ëä1‡¬vä ‡sÚ g¯Ë2GžpJŠ¡pè GžvÂi§¡p k(œ†Ú‘§pj‡¡vÂ1‡²æÙ+yÚÙ+œv‘§†Ú‘'yÚa(y‘§†Ú ‡¡vÌùRžv GžvÈj‡!säi'†ÌÙ«sèi¨ph Gžp2‡žpÚ‘'yÂi‡¡ËÂ!+zÚ §†Âi(sä §¡p GžËæi§¡vÈ2g¯päi'yÚ GžpÚa¨†Â¡Ç†Ú1Gþžv Gžpä §¡v‘ÇzäiGžvä™ÇyÌa¨FÃi'y¡Mžpäi'œ†Â‘ç²pÚ §†Â‘§p. ÇzÈ2ç²pjGžvÂiGsjÇzj'©vÂiÈyÂiÇœ†.“ç2†Â!ë²päiGžvä1‡žvjGžvä g/sèiGžväi‡¡è¡§”`p¢A‚p– ¤m–  $p Àp‚ á8á€Ì g“ ° o–€  €€sÌ1'p —g€ fÂYFp– o( àsÎ'oÌ9œc^X p†Y /&þœM.HÀ‚JÂYFpÌgú¦ÀÀYFpÄYF€m¶YF€sÌ9'p×ÈÌ9ÇpΑG’[Âi‡¡v‘§pÒäŸsÀ1çsÎ'œs4ðÎ8œM.pÀgÀIj(É&.€¿ Ë€FÀ „cÇ2°;< àØÄ`J˜ãáÇà4bŽs˜C#ç‡9Â1¸s˜C·¸L8ڎ˘cÿhYÑËAæ(Åä‘”v„ƒ!á¸L8y´CíÇeÂÁË„CíÇ^ÂA–pÈã2ò0‡<Â!sÈ#æG;þ±—v„CíhH;äÑy„ƒ!æhˆ9äÑŽpÈ# ¹L8äay„ƒ,íG8äÑy„ƒ iC<`‰gü Çe1O~”¡ %?>` eÔ æÇeäñpÈÃáhÇ-þ޽„ƒQ GCÌ!pÈ£ ù€%€¡Ècí`H8Úy„CæG8.#pì%òYÚÑpÌ£† ‡aÚÁvÈÃí`=ÌA–p\†!íGRæÑ†ÐÃò0G;äÑŽ½„£áG8æÑy„ƒ,íGC.ó¥p%í‡<Â!p´C— ÇeÒy˜#ò0GCÂþ!¤\&íG8by„£òGCÌÑŽpÈ#òh‡<æÑy„ƒ,íG8ÚÁp´ƒ!íG;Âц„£òG;æq™pÈ#íG;äц\Fáh‡<ÂÑŽ†„£ò0‡<Ú!sÈ#òhÇ^Ú!vÐÃá˜G;Žy´£!æ`H8äy\†!õ0‡aÂÁs„CíG8ÚŽv„ƒ,áG8by´Cô‡<.y„£di‡<Ú1Ë„CáG;y´Ã0áhG8Ú!vÈ#í˜ÇeÂ!pÈ£ò ‡9äy\FáG8ÒŽ†˜£!ô0G8ÚÑþs&òGCÌ!pÈ#í‡9ÈŽv4$íØK;ÂÁv4¤á˜G;äŽËÈ# G;äa†„CáØK8ÚŽvÈà iG8ÚA–p\¦òG¦f  á(É0°e æG7ð s„ƒ( ' pDLãA€8¼!ŽsDƒ Ç1ð‹mˆ£$ç(Û6€plãᨆ¶± x£øÅ6ÄQ”Í% Ç6†€kxà @Dámˆ×`öQ œÞèÆ~aŽm”ÄÕ8̱ €ÃË@ÙÎQ6G›£læ‡<4‘ þ†„£† ‡$þáè’˜ãá¸Ã8qq€cPÄ6Ä „c(É6–!pL#Š0Ç6!€m,cÒG88±€m,CÞèÆ~a¼’x#àÇ4Øpo€ãž‡9ÀamƒÃòÐ-äaÃì‚íG8ÚaK„Cæh‡<È€zXâ Ñ÷eb†´C—‘‡9ôÍp´CßæÇeÂ!pÐÃáG8Ò}·£àò G8ô}›ƒ!íG8.#s„#ãáh‡<ÚÁp0ÄæÈ¸<Â!pÈÃáG8äц„CáG8> `è æ`ˆ9è±Qþ>êQçÇ ñ =¡òÀð?Ú¡osìâáG8äÑy`8G;ÂÁpÈ#ún‡<Ú1p˜ã’x†ÐŽp´£àíÐw;ô݆\& i‡<Úy„CáG8äÑsÈ#íGRäÑs0$òhG8Úa}‡CíÐw8by„£æÐw;’ry´CæÇeÂ!p0ÄôCÂÑy´Cá‡9è!s´ÃòhG8äy„£ò‡<ÂQðvÈ£ Á°<Ì!pÈ£3—G8ä}›£àí`H;y´# 1=Â!pÈ#.#¢Âá2þæ¡ÌAßÌAÂÁèÁèA¡"¢Â!Ú!ÂAÂAÂAÌ¡àÚ!ÚaÂaæÌ¢ÌA¡ÂÃ.ƒ!ÚÁÂ!Ú!) ®ä¡ä¡äaÂAÂ!¡ÂAßÚ!ôÍÂAÌ"ä!"ä!ä¡Âä¡ä¡Ì!ÚAßÂAÂÁä¡äÁ2Îä¡ä¡ä¡¡¡¡àÂAÚAÚAÂ!ÂAÂ!ÂAßÚÁä!ô-ä!ÌAÂ!.# . .¢ÂAÚAÌ!ãÂ!Ú!¡ôí2Âþ!0,ä¡ä!䡿!ÚÁè¡¡äÁä!ä¡ô-ä¡¢ä!ä!Ú!äÁèAÂA.#Ìä!ä!ÂäÁô-èAJÁ¶á” `–!JÍ4€®á*€ÀÁ¦! @¼A ¼¡ô`¼ ¼áH ¶áàÀѶͼa–AÌa`®áH ¶áà $ÌͪPaŽá ༼``¼¡!¶ `º!„Á¶ÁN€¤Á޶aÀ¶aÀÌaþ $œ!ÐÌrÀÌÁr`6rÂAn!"ä¡ÂAÚAÌAþ¡$Ì¡l¼Ì hÀÌ¡à¼!^ Ìa $¶aÀœ!~Á¢á`–!H@¦jÀ–AŒçH`¼áà¦AŒ‡ Íœ!¼œ!®œ!¶Á¼ÁÐa#ÃAr!ÂAÂAÂAnÂAÌÚAÂ!ÂÁÈ€ä¡<@Ú!äá2ÂAßÂAÂA.ƒ!æ!Ú!"ä¡ô­ÔOÚ!ÌAÂA.#Ú!ä¡ä!þä¡ä!Ú!"ä!ô­ô-Ú!Ú!.#¢2.ÚÁ"f.ä¡ÂAÚAÚ!>@žáÈ€!ÚAÂÁ¢ŽFkT:øÁ,Aþ€ ÚAÌÁÚ.Cßváô-ä!ÚAßÌa î2ä¡"äÁ’¢â,Aêô-ä!äÁ.#ÚAÂAÌAÂAÌ!¡ô-ä¡ä!ôÂ!ÌaæÂAÂ!ã¡ä!.CÂ>Û!ôÌAÂAßÂAÌAÂaæÚAßÂAÂAÚ!ÌÌAÚ!ÚAÌ!ÚþÂ!¡¡äÁä!ÚAÌAèÁä!ä!ÚA¡ä! ®ô­ÂAÌA¡ä!èSßÚ!Ì!ÂAßÌAßÚ!è3èÁä!"ÚAÂAÌAÂAÚAÚAÚ!ÂAÂA¡¡¢ÂA¡äá2äÁè!èÁèÁà¡äÁ¡à¡ô-Ú!äÁÂAÂAÂ!ãÂAßÚ!äÁäá2f.¢ä!ÚAßÂa.ƒ!ÌAÌAÚAÌ¡ä!ä¡äÂAÌAÂAÂAÚ!Ì¡äÁÔ/Ú!Âþá2Â!.CßÂÁ"æ!ãÚ¡àè!ä!äÁ"ÚAÚAÚ!ä!ä¡¡àÚA¡Â!ãÌAÂÌ¡ÂAÌAßÚÁäÁÂÚ!Ì¡àÚ¡àèÁÂÂAÂAæ¡ä!‚ÂÌ¡àÂ!Ú¡àÂAÂA¡àÂAÂ!¦Æ< , ¶aŒÇº@X༞A&à¼! ®a.À*Á¶áp`àŽÀÌÍ®Àx¼a–!¶a¶ap`àŽ`#ѬPÀ@þ,àÐìœ`à®á.àz- ®a–`¶ap àŽ`–A¼a–AŒgÀ¶a@®a@¢a`ÀÁJB$á"ä!Ú!Ì!$áÌò·$¼!‚~Á®aÞÀ<ಠ¶a¼Á–A®aâÀ<€²@¶aà @Xà¶aÀÄap`àŽÀœá, ¼a†Á¤á†¶á†¶ÁÀÁ¶¡$ÂA$.CÂÂÌ!þAß.c¢‚ ¦Æ>@Ì¡þæAßÚAÂAÚAÂ.#Ú¡àÂ!Ì!Ú!ÚAÂA¡ä!Ú!è!ä!Ú¡àÚAÚ!Ì¡ .ä¡¢Âá2ä!ô­äÁÚAß¡ä!ä¡¡àÚ!¡ .Ú!0LÂá áô€ ÂÁ¢ÁFšFùá áô@ ÂäÁäÚ!Ú!äáþ!¢"Ú!Ú!ä!䡿¡ÌAÂAýÂÁ>žA "ä¡ Î"ä¡ ®"Ú!ÚAßjP.ƒ!Ú!ä! .ä!Ú! þÎä!ä¡Âá2ÂAÂá2ä!äá2ô-ôÍè!Ú!.#ä¡ä!ÚAÚAß¡ô­äaÎÁ¢ÂAÚAÚ! ®ä¡äÁ¢ ®¢2®¡€TÂ!ÚAÚ!ÂA.#ä!.#ä!äÁf.ä!"ÚÁè!ä!"ä¡ô­ä¡2®ä¡ômÌAÌAÂAÂAÚAÌ.#"äÁäá2¨Õ î2ôí2 .èAßÂäáÂAßÚ!ä¡2Håá2Â!ÂAÚ¡àÂ!Ú!ä!Ú!ãþÂAÌ!Ú!ÚAÂ"ä!ä!ô-ä!ä!ä!ä¡Âf.ÌAÚ! ®äÃæ!)ä!ä!2®ä¡ôí2ÂÁè¡ä¡ÌÂAÂá2Âè!ä!Ú!Ô/èá2ÂÁèAßÂ!Ú!"ä!")ÚaæÚAÂAÌ!ÂAÚ!ãÂ!Ú!Ì!.#ãÂAÌ!Ú!`jJá¶á€ÇžaÍÌá®a¼¶ÐìøŒÇx®aÀÁЯÁÐÇ®Á®ÁÌá }#Ÿa®á¼á}¼á€½á¼áþ¶a#У¡á¼aÌá =x#ÍØ¶Ð瀟Áxžá¼ažá¼¡Ñ½á¼áÌÁn¡ôÍä!äÃ,¡ØÌЯÁýŒÇ´a®a®aºý®Áضá6ò¼a¼á€½ážá¼áÝx¼ÁПÁ®Áx¢á ý н¡ÛåAv¡Ôoþ¡ÂAÌA,!"äA èAJÁèAÚ!)äÁf®ÌAß¡Â!Ú!èAßÌ!Ú!ÚAÌ!ÚAßÌA¡ÂAÂAÂAßÚ!ôþ­ÌAÂÁèAÚAßÂAÌAßÂAÂAÌ!Â!Ú!ä!ä!ô-Ú!ô­ÂÁäÁôíáô€ ÃA û^”øá,áô€ 2ŽäÌÌ!øAÚAÌAÂA.#¢ä¡ÂAÌAÚ!¡Âôí,Aþä!Ú!Ì!ä!â2Â.#äÁä!äá2ÂA¡¡äÁä!ÚA¡""ÚAý¡äÂAèÁ ®ä¡ä¡äÁäÁÚ!ô-â2‚ÌA߀TÌa0,èÁþä!.#2Îä!. äÉ 7¯]»póÒ3N^8ƒòÌ…“g.\»pò ÜN`¸vòÌÉ ·Ñœ¼p嵓×NžÁpíµ“×N 98q†h.\»på…“gN^¸vòÌÉ ®Îp9Í l'¯ªÁªòÂÉ3N^8yáä…3HÏ\;yíÌ 'Ïœ¹pòµÃ®j8¬íµ«®¼pòÂam'Ïœ¼píäÍ3N^8y«¶“g0\ÕpXå…3N^;y±Ò3'/œ¼pXÃÉk'/\;y᪆kNž¹Ìò Ê gPž¹pXÛÉ W5œ¼píä…“N^8yæªl—¹þ=sòÂa¥Žž¹ªá †kWÕ`æpòÂa5'/\ÕpUÍa g0\;yæÚÉk'/\;yá´#O8íÈŽ<íÈcVá$O8eÖŽ<áÈNôÐcÉÏxãÍ5†â5^â5×xˆbˆ×ˆˆâ‹(Š£‡(Šâ56Šx7×xƒ¢7ׄx‡×܇×xã5æ¼èÍ’¢8@T9@ €7ׄxMˆKzs9òHBËtUµS•9á´#É?¢(â’¢"Œ‚ãá5Þ h΋@•‚àá5^ãá59^ã Œ¾è Œ^ãá5æ„#I.ò„#O8…#Ï-ÿþ˜ƒU8‹ÈÓN8ò´C†<øXòÁtUµ#O8ò„ÓN8í`Nfá´SU;ò´SU8ò˜#O8™…#O8íÈCO8Xµ#O;ò„#O8UµN;¸ÉŽ<áÈŽ<íÈŽ<áÐVÑcŽ<æÈŽ<íÈŽ<áÐcŽ<íÈNUõ˜#O8ò„ó$ÏèA†Aá˜#Ï"ÿTlñÅg¬ñÆcÌ’<óáÈÓN8òðÓNf»ücNf혃U8ò„n8X…SU8ò„cΣÇíÈÓVíÈŽ<…ƒ•9ô„ƒU;æTÕNfíÈÓŽ<æTeVí„SU8ò„#O8ò´#9ò´#O;þX…3]8ò„cNUæ`Ž<áÈŽ<í˜#O8UNfí˜#9ôTÕn…“™9ò„ƒ•[ô´ÃT¸UÕNfáÈŽ<UÕN8U…ƒU;á˜COUí„3];æÈã=æÐcŽ<æÈNUí„cP8ò´#O;áЃ•9ò„#O8ò„SU8¸µVUe[ò„cŽ<…+O;ò´ƒU;U…ƒ[8ÒÓNUí„SU8U¹%O;U…S•9U…#O8òG¸ bŽª„ƒíG8äsÈÃU V ŽÌ„CáG;Â!pd&UiGUÚsT¥á‡9莪´#í‡<•pþd¦áÀŠA䎪´CíG8è‘sÈÃòhG8äa¬„CáÀM;ªbzÈ#òh‡9ªÒŽp`¥áÈŒ9ªÒŽpT¥ᨊ9èsÈà ™1VÚ!vÈ£X GUÚ¬„Cá0H8äÑŽª€ò(Å–ÄÈF:ò‘Œ¤$'‰¢@”tä6®± m#“”‡$ráy„CáÀŠ9ä!‰€ò•‘ÜÆ‹žá X‚R’È…<ÂQ•vÈÃ-»ø‡<•E˜ƒí¨ŠªRŠ˜C1GUÂAsÐCíG;äay„£*æG8äy„£*íG;äŽv„þ£òhGU R•pÈÃò0GUÂ!pÈÃôG8äy´#òh‡<Ú•vÈ#¸ ‡9äÑñU%ôÀŠ9ªÒy„ƒUiGU>‰güA ™ ‡%:ÆÒ‹Õ¡q¨CK9Æ@âz ƒ<ÂQ•püCáG8ä± ~T…)ó¨J;äay´£*áG8äy„Cá‡A2óK(£0G8äŽvÈÃíG8ÚŒ]äâ­¹ØÅ.Þº ¸Úõ®rÍ…\ßz‹\È®»ÈÅ.຋·Þ⹸E.v‘ `äb¹«dẋ\Hö­»ÈÅ.n×]Üb‡½Å.ÞÚ»Ò‚þ·ØE.n!Y`ìâ°´ë-$ûÖ]À´ÈÅ.Þº‹·î"»È-Þz‹\ìâ­»€+0äúÖ[c¹ Å[w‘ Éî"»ÈÅ.r!×·î‚ÀØÅ[o!×\ìâ­»†uåz×Ãæbv¥…]åš ¹Òâ®påÇtäŽ[Àuv½…\k×]¼u½·€ë.r!×\Üb¹ØE.v×Ãæâ´ØÅ[wq‹]äb´«]wqW¹Âu¹ØÅ[wq‹]6’½~áz‹\¬÷oÝ0v‘‹]äâ¹ØÅ-r± ZÜbo½\å W`äb3†ë.ð»‹\ìâ°ø•k.va×[äB®þ3–ëas±‹ÃC®o½\åJ‹»î"·È-àJ ¸îâ¹Æ.øÑŽpÈ£òhVÚ!p€ò°Ä–äg\ã¶Œ4мñ =c’Þx†#Ÿ±¤m82×xF$£AjR_ƒÔŒ|†$£qphbUi‡<Ú!v`¥àÇ5¼ñŒk<#“ϸÆ3`ô EÑÑ@Q4$ý Gzã×ðÆ3Pk´C´hGU‘™]ð£ò‡<Âa yL'dÈ%> sÈÃUiGfÌÑŽª´CáÈL;äÑy´£*áh‡<Ì!z˜£*áÇ9æay„CíÈL;Ây„7æþ‡<ÂÑŽpÈ£U ‡<ÂÑŽªL'‘G8ÚŽvT%òh‡<Úy´£*áG8äŽ,â C8°ÒŽEtìè«C<–žŒ/ ÝbìÀ?Ø!~|`ÏÐä¬ðCá ‡9äq ~„+á‡92ŽvÈÃò=ªz´Ãò0ˆ<ÚaŽXâznäazÈÃòØÅÅøa1~ üøä+ÆŠñÃbüø?,ÆŠAþüø?,Æ@þôãÇ?N_1~üò;=äÿÁŠ^cü¨˜ìÿy‹A¾bü¨?2ÆŠñƒcü¸?.ùŠñãü¸þ?þ!ûðãüøä+ÆŠñ£b¯?*Æ@þüø?0ùðƒcü¨ä9¶ ~$òÇ.*Æ‹ñã§w1ü`1üP1g1üð÷ü°1÷üðü`1w1üp1ü€1g1üp1÷÷üðÇ1üP1§÷üP1ü€1üP1ü`1ü`1üp1ü€1üÐ1üÀ1—1÷üp1üP1ü 1üðW1÷W1ü`1—1üðüÀ1W1üp ü€á á í`Xô ¥ðÖp ¤ö Ñ€"Ï ×ð ¤ö Ï@j×@j×@‡Ñð ×@‡Ñþð ×ð Ñð × ×ð Ñ@‡Ñp Ñð ×ð Ñð èð / Ïp Ïp t t Ïð"Ñð ×ð ×ð / Ï€"Ñp Ïp Ï ×@‡× /ò × Ï€"tÈHÏ€"Ñ𠤆"Ï€"Ï Ïp Ï Ïp Ï€"Ñp í » aòÐá í`ô  ÿð Ñð"Ñð ×ð Ñð Ñð ¤ö Ñð 0 ×ð ×ð ×ð ×ð ×ð Ñp Ïp Ï Ïp tx Ï€"Ñð ×@‡×@‡Ï tx Ïp Ñð ×ð (ò ×ð × Ï#Ïð"Ѱ ò ´`òþí í`»ÀUòЋ0U!ô ¥ðò`õÐá íòò`òXÑá`æ aòò`UÑXÑòô áÐáPæ áÐá íòííƒ'á áP퀳ƒá æ@òÐá á áPá íòÐòÐUñ° z@U±O§1ü œ ¡ÐU 6À™¤)3ÀÃú üàÀ Ï dÐXÿÐUAæ ÿPíPí íòô`í€æ þÓ!æ  Êð íí¸Ñ´À!Pžæyžè™žê¹žê™ìùžì™ðYž)ê™å™æ)óyž"Пð)è)ºž"Ÿ"0Ÿ)P ï¹ ü 总À#{yGyÃszÙy1§w1w1ü€t÷W1ü¢üðüP1üp1—1üðg1ü1üP1üP1—1üðü€1üðüP1üp1ü`1¢ü1g1ü`1üðü`1üP1üP1·ðá á íPæ á áô –ðÑð Ñ€"Ñð Ñð ¤ö Ñþp ¤ö ×@‡×ð ¤v Ñð ¤v Ñð Ñp Ñð Ñð Ñp Ñp Ñð × Ï@jt Ï Ïp Ñð Ñð × ×@jÏ Ï Ïp Ñð Ñð Ñð Ñð × tXjÏ ×ð ¤ö ¤F‡Ñð × tHj ÉÑð Ñð Ñð ×@‡¤ö ¥ö Ñp Ñð Ñ@‡¤f’° á€áPíPí ü€Ï  Ï × ×@j× × Ï Ï tx Ñð × Ï Ï@jÏ Ï (ò ¤ö Ñ@‡× ÏPj¥v û ×Pjt Ï Ïp Ñð Ñð þÑÀ Ñð Ñ@‡æ »PíPáP»ðáÐUq–Ðò`í d!–ðUÑXaôƒò`¸aUÑ™í á æÐòò@æPí í€íPí !á€!á áPí á æíí æ á á€í æ€í !QÓ!áð¥ z@á í`ò°!Š1ü†@ žû¹ K ZÿÀãü`1W1ì üð‹ð z@áÐáPü0U± ÿUòUôPæ aò¸aþòôÐæð– í€á áÐáP»ð"0¾ä[¾æ曾껾!`¾!°¾ðk¾!¿ä[žãåãäô[¾åù¿ÿæ ¿! !¿!ð¿! ¾! À!@¾!p üPí æ ÓÁüÁ Â"<Â$\Â&|ÂÌ(¼Â,ÜÂ+Ì.\Âüðüp ÿôÐæ á€íP@òP  æ—H\æíÄò`ô€æàÄIÜHlHl™aTÜÅ^ìÅæ@ò` ¹ á í á íQàÄæ æðÅTþ|v—æÐÅæ€ò ƒ' ·ð á`òò`æ° ÿ !á` æb@òP  í0á0xáÐáЙòXÑó`áÐò`UôáPí`òÐóòÐá íòòÐá æ í í á æPí€æ€á@Uæ€aò`òò`á`ò`Xñ‹  z@ò@æ á` 1üø°½Ð ÔÐ žÛ žÛ Ô°üP1ëg1ì ÿàð Ïðbáðòòòp ü á`þòò`UXÑ™Ñá áÐô`Uaòðð zæ á0xáлÀ*ú>ðë)è) šž"Пã[ž"pž"Pž"°Ôå)VÕY-Z]ž" ž"П"pž·ðá áP»PÏlÝÖnýÖp×r=×»ð™ÑUòò@ò`  š ’pØ ’°ØpØÙ’ÙpØš0Ù‘ “½€Ù‘½ž- ‹ Ù–Ú¦}Ú˜ ’àØ’àØ‘­ ‡M ×Pá íPæ í á á€Ù‹- šàØ ‹ þÙ‹ ‹€ÚÎ=ÙŽ- š°Ø“½’ ’  –àÙ» XѸ± ÿò°òòí@ô –ðíí á áÐòUAæ á á á á LQæ!í á æ€æPáÐUaUaUaXUÑUaá í€æPá0íPá€áÐXò`XAæPæPõ`òòP Ï dÐXÑ‹PÏüpÔÏPN PÞ G`1ãüP1Çðì0>ð‹ð @á`UÁòòà»ð™ÑòþÐáPí á áÐá í í æ— ÏðÐòòòUÑò° ÿpÀ! ! À!ð*ð"ææ¼¾! Àå9¾!P¾!0¾!Pêå°>ë´n¾!Pëäê[žñkžå·ðá@æ íp |wÐÊÞÊÎsíÒ>íÔ^í1Ì·ðá í`òòÐòÐUô ¥ð·p §E »@ rE ’Õî§%W´p ´°î·Ðî·@ »pZëÞî»@ï´° ´°îí.Wô~ ô~ ´° §µ í~ §µ ´° ´ ïru þOï·@ïúò"O ·ÐîëN »@ ’E ’Õî»p ´p »ð íPá`òÐU1áÏ@ ë~ZrE rE ÖE rÕî»@ »pZ·Ðñí¾ !Z·ÐñëÞî’E · W§u ´p ´° ´° ´ W¹° ëN úž Ï€æ áÐá æ° ÿ í í –Ð™!õ ¥ð™UUUÑòиXUíæ á á á@íUaUæ@òÐUÑUÑUò`òÐUÑæ áÐáPíPí`òÐòòò`þôÐá íPíXÑòÐòôPíP°»ðb á0‹PÏüpS^þù|ÃãÿÀãðîïð  z@ò`òÿ€±ë_;‚íä…“'¯]8yáäµK(/œ¼påµ 7 ¼”é±¼vòÚÉ3'Ö¿-]¾|)"„˜¢lŠz)âŸ!DÀSL¢E_Š0 S„ˆ–"^Šh)"éTS­^Å:UDV£"Š.ºTÌ]ÿä%xëßÚµüÚðûÇß¿|¾î°Å›Wï^¾}ýþXð`Â… FÌö?yáζ;[P^þ¸ôäYú®ÝYÎòÚ%Øùl;yæä™ ǹÝÙvœÍ‰†M°s;Îí`߯-ïçp¢9·Ý.ÜÙpòÂÉ 'Ïœ9yæ8›;ÛN4ÁvÃÉkÇ9ÜYzá†ãlî\gs¢é™;K]AßòÚµïNž¹vòÚùn'¯g‚gÛu&¨³vä!HžåÎjGžpÎj'œväi‡säiGž]þ GžpÚ gyÂ!H2æ¡Ç’ä1'œvÎ ç¬pÎ ‡:yÂ!ˆ³v8 Ç·v:3Gžpæ!Hs8 Gžpä1'yÌ §³Â™‡ zÌ­pä §yÚ™Gžväi‡³v8kGžp8 Gþs‘§³Â‘'yÂù `þ ƒ3säY$1~`è%PAC4!øù‡Ÿqàg-~þaG€Ø €Ÿ F2Ì‘'œ³þ!Hžpä¹åŸvÌ‘'y‘ÇzÚ‘§sä ç¬vä Gžp’§pÎ2çH€Ñ#€päi'y‘'yÌ¡g—Ä¢V¬– A„ª-F.~þE„µøéLJ}B 6„üaD¡Zyç«%z©uI„Da©–Dhé^C¸`ƒ8„çmiÞ–v©Únù'y‘ǜ]ôºC®~øù‡d|¹ƒ¼Ø@/vè+/vø‡Z¦þ¹f½ØÀfwæ¹gŸú~nùGêÂiÇyÌá,zä)åsä¡®päi'yª&(sD3‡:s¸–‡k³Í©z9y¨“çêä9G‚‘‡ yÎiGžs2GsÂ9Ëlêä9§jyÌ Gžpä ‡žvD#Hs¨ §pä1ÛzÚ1Gžv‘'yÚíœpÎ2‡º³ GžvÎ GÁÛ1§yÎiGžsf7‡sè1Gžvä9‡ëåä©:yÌi'yÚ‘§yÎ1‡:yÌáÌœvÌ9‹º³Â-ynù§ÎÚ±¤sè1‡2è‘§8kç¬vÎj'œ³ ‡³päþ ‡<ÌÑδã,ó‡<ÚÑ´#òhgÂ!vÈ#ôðM;äÑsÈ£óG8äy˜ƒí8K;ÂÑŽp˜CÔ ‡<Â!p˜ã,áG8äzȃ:áG;äÑŽ³|`ÊÐÂ!pÈ#–?„ *R±U¤" زüƒlq‡þá¼ã–P†È sœ%üh‡<ÂAsä‚ð!gÚ!vÈÃí G8äQ5y´ã,°„2þy„ã,íG;:s‹¼d/KD´D Ÿ\G(‘á _ˆ¡VøÇ>|ð„ +àG B°‡¬àK±þJ ~€ ¹¤ã"X5–2„`)+°†Z"‚,%KáÊKDMjV&"°fK–R”¥LE,D¹Å?äÎì"/üh>@ >ðÅð'Ú€w@/úЃÎÜ!~èCüZÏÜ!€€Ô E¨Înñp´Cæ8 =Ì!pÈ# ‡<,ñypMáhÇYÌQµÎ¤3áhÇYÌ!pTíò=ÌA³Pçg¡Ž9äa‚ȃ ç8K;Ì!s´£3á˜];Îq‚ÈÃí¡Ž<ª&vœÅíèŒ9äa‚ˆ† ¢ G;ÂÑsp¦òh‡<ÌŽvÈ#ò ˆþ<Ú!pÈÃá‡9¨ssœÅò˜hÚ!sÈ£jœ!H8äay´ƒ3í8‡<Úa޳´ã,æG8Dy˜ƒ ò‡<ÂÑŽpÈ#ô0G.þay„CáXDgÚ!zÐÃh‡<Â!p´CáhgÂ!sœ¥áG8ä޳„CáG8ÂÑy„ã,í‡<Â!vœÅáG8ÎbŽvp&g ‡<ÌÑŽ³„ƒ:ò‡<Ú!‚Èc9i‡<Ìq–vÈ£g!ˆ<Â!sÈ£g¡Ž<ÂñHCdgÚ±ˆ ñcXÄ0SÀµŒüØÇ>ðÑwàì€þ<‰gè ¢áG;:³ ~´#ò‡<ÂAsÈ#òhG8äŽÎ´CðXŽ<Ì!v˜ãx† pÈ£já ˆ9vñ±„`AD„@!AR8hÁo†ó›ÿá~üCÿAKlð´D+øGî´$‰˜A ŒÀ¬ ! WDЄ@6¨‡B ‚–ˆ "h‰X–’Q‹:KiI©U½ê¬ÚÕ¯†õRB ‚ÄZÔ!A–Ò„`)!XJK`íU‡àÿ8K8ÚaŽ]ä…mÀ?ðÁ|Tüh^Ø!€¼ðƒ;c‡¼þP›±CäFwºÕ½3~Ü‚æ ÇY™vœ%ôG)>Žv„ÃiG8ÎÒŽpÈ#òhG8äê„CæG8äÑy˜C‘‡9Ú‚„Ãòh‡<¨#ª-G GgÂ!‚ÈÃá AÂÁsÈCpæG;ÂÑŽpÈ£òàš9äÑŽpÈ£áG8äA³´#ò‡<ÌA³„ƒ á‡9äÑŽpÈ#g1=Îby„CáG8ÎBy´#æG8ÎbŽzÈÃg¡N8äÑŽpȃ áAÂ!v„Cí‡<Úyp-òAäazȃ áG;ä±þzÈ£á0GgÂ!v„ã,í8‹9:s–vtfÿh‡<ÚqK„ƒ g!=àQŠ´CíG;Ìq–pÈ£ò0=äsУ3‘G8äÑδCá‡9èy„CáX};8ÓŽpœ%g ÇY"sÈ£ ‡<ÌÑ™vÈ#æ8 uÂayP‡3 ‡³hyh‡p0y0ÎøKˆ= ƒ³‚X¶ À ´@ \CÈ0,Z¶X€0v~pxƒ€„gø2‡v‡v~ Žp‡[à‡³hyh‡³0y‡³0yh‡³‡vy‡þÕ ‡³ø€RP†:€v8 ssàŒv‡]ø—ø‡–—H&p{p‡7s{p‡}PaàX~Hð‡X}0xÀbX|Hj0…ø‡h ±˜‡€r˜X\À‡À†HèC t€‡€r˜‚P¨|€…HØC t( h  & ¦b¬––¤XŠ¢¸…‡pàŒ]¨@~h|À…T`ÇJ(>À‡6 @w€Mˆþ€Ð|øv€`x¸€ x‡µ¸  øv€`x¸€ x‡µ¸€ð @~°°…ð 0v€7(€ †7(€°…p¸Àš´É›ÄÉœÔÉäÉžôɵØ~‡v‡p yyy‡¨-Køz0Îy‡³hy0yhyhy ‡p‡v‡pàŒv‡vàŒpshz0‡³0‡³yy0syy0z8‹¼<‹ps‡vs‡³0yy0ÎÎÈËÊ”s sz0‡³hyþÈKy0‡³0‡³‡³h‡³‚‡³Î ˆp8 s ‡p8 s‡p‡pàŒpèŒv‡p‡vê8 z‡ÎhÎy0‡v8 sà s‡ps8 s‡p8‹pèŒÊ4‡Î0·v8‹v‡Î΂àŒp‡v‡p yyy‡ª y¸…0y0‡v‡E‡yhy1 ‡z°„‡phy0‡³y‡ÎhÎy‡vsh‡³0y‡³h‡Õ“z0y‡v8‹p‡p‡p8 ‚‚à sè ‚‡v‡Î‡³0‡vz0‡þyhy0Îhy0‡p‡ps‡vs‡³¨s‡p‡pøHx†? ƒv8 s ‡EøI ”‚€Ó8•S8ý~¸@o£@~øHx= ƒ³hs~‡³ÈË]à‚sX=‚8 s‡vàŒv‡v8‹p8‹vsøHx=€pè ‚yy¸…XŠ–€µh #¥uÈ{Èw(†uX ~ø‡Hà‡Xøch j0ð‡sh‰| -˜h‰ð‡–HX!°nHà‡WþX°l˜èSHà‡WXŠ––––—––––Pµ¸…8‹vy¸… ä‡.¨|ÈkË|€‡. @và}Ѐ*àv~`‡À~è/à€~à‡P|Ðþ~`àv,à‡~ðð¶ð|ð~` oó…x/è~`‡À‚~ð‚À~¸ƒ øv€65ÞãEÞäU^ ä‡[àyy0yyhyh‡³z‡RøÎyyyh‡p8 ss‡v‡v‡vàŒª Î0z0z8 sèŒvs¨-z8 s yh‡pX½v‡v0‡vX½v‡v‚yyz‡6zPÑp0Î0z0z‡v8‹ps‡ps8‹pà ê0zh‡Îh yhyyy0‡³hþyssèŒv‡vy y0‡³h·Î0‡³h·³yΨ-yyhy ˆps‡p8‹p‡vyyhyhyyyhy‡³0‡³zh‡³0yhyÈË]ø‡³h‡³X„v‡v8 28‹Rðy0zPÑph‡p yh‡p‡vsàŒv8‹vss‡p‡p‡vX½phyhyzy ˆps‡phyy‡v0‡Õ ‡vy‡ÎhyhsèŒp‡v8‹vX½p yhyz8‹v8‹€„gÐþ20‚‡p°„äå‡tÀ~H‡À~H‡Ào«@~¨I~øIx= ƒps‡vøyhÎØ…s8‹p˜‡v‡p˜‚8‹phy® ‡³yyøKÈ…?yh‡p˜‚8‹v sÈ…h‰¥€à‡0h‰à€‚lX!8‚¨–ê©>‚H°~ø‡X~˜[´[ìƒt؇HøL€~À†#Hø‡‹ð‡XH¥°~Hø‡°Hø‡h þh h h h h h h h h 0Š]àyy sÈ ì|ÀPHP(„ç‡. @w€wà‡h†øw€p‡È‡à‡u ~Ї(okøw€p‡È‡è‡u8€Їx‡µh°@~ 8€þrøv€|à‡q€|ø‡u8~pPÞ(—ò)§r ¼…¥y‡¨-Kø€v‡pX½pàŒvàŒp‡phy0‚‡v‡p8‹v‡Î Ž³hy‡Îhy··v‡v8 z0‡v‡ph‡p¨y0‡³ ‡p‡v‡và ê‡v‡vz‡Õky0‚àŒvèŒv‡v‡phÎhyyêê8‹p‡v‡vè ê‡z0y‡v‡vz0y‚X=s‚8‹pX=s‡Îhyhyh‡p‡v‡v8 s‡Õky þˆ³h‡Õ yy·³h‡³h‡³0y‡yh‡ÎØ…y0y‡Ehyhy1¨-KøÎ‡v‚z0‡³0‡pPѳ‚‡Ž‡³ê‡p8‹pX½psàŒv8‹v ‡p s‡v‡p‡pX½vyꂇp‡p€‡v8‹ph‡ph‡p‡v8‹p8‹p‡p‡pøHx= y0‡³h‡E0^~°@~` ~ @~ÐI~øHx†? ƒÎh‡h‡p‡p‡[à‡Îh‡ph‡³y·³0y yh‡ps ‡v0‡þ„gЃh‡³s‡p0ÎØ…—€µh H!ȆÙj°ýÛ¿}!–XHøX~p‰ø‡X øcp ±€^ˆ‡X¨\¨6xðXh Xp‰øx€r yø‡¥h h h h h h h ˆ!DBDE!P„@E!P„@E!PDE„!P„@EB„@E„!PDE!PDE„aô¨ˆ»þÉ 'ïé®þR§v™gu¾«øºLýÇ.€T~ëüs'à;üþñs'à;Rù±ðÏ€ìðû×€}ìHåÇN@W~RÙ€Á;ÿø± •€ìtíìù3èТG“.mú4ê©üný{Ú.œ¼pæä™{*/=y¥<Øn×.ÜÓpò™“îi;yælÛ'/œ¼vòÂÉ 'Ï·9yáÌ= '/œïpòÂÉk'/œ¼pÌå…3·Þ=yæäµ›÷Ô·¼vòÂÉ 'Ïw;á´cŽoò´#O8O…ã[8¶µ€í„#9ò˜c[8ò„#O8ò„óT;æÐcŽ<í„óT8ò„#O;áþ´Ž<æ<=ë™Ãœ9ò„ÓN8í„CÏSæÈŽ<áÈN;áÐ#O;áÈŽ<í˜#9ô„#O8æÈ=ò´Ž<†cŽ<í„#O;áÈÎSíØæ[8òŽ<æÈÓŽmí˜#O8ò„#Ï-ÿ¬·H8ò„óôÐSÊó„c[;æ¬÷”oá´Ž<á´Ã\8¶µÎSí„#9ò˜ó”oò„#O;á¬N;æÈŽ<íØÖŽ9̵Ž<Ê=O™#oó´óT;ò„3i;ò„ó”oò´#O;O}°È3ˆñ€‹¤Ö?ߊÆÏ<£áøN;ü˜ó=æärK.õîBË.þ¹ÜBË.¹ì’Ë-¹ìRo.ÀÐ’Ë-¹ì²0Á@¢LÈŽmíØŽ<·üÂQü3€!ˆ …‚@Bd“ ÔPÓ‹ËÔôâ2 "„`” ÿˆ°Â?)¬ÀÏ "¤`ƒ?"„5§ì#„& d?)¬ð!ˆ?Gˆ‚ û¤°Â?G­°Q)„ÀÏ "„ B)¬ð!ˆB !ˆ‚!ˆ !ˆB"„ B)„ B"„ B)„B"$B"„B"„ B)„ B"„B"„ B)„ B"„B"$B)„ B"„B"„ B"$Bþ)„`T"„ B"„ B)„ B !ˆ‚!ˆ‚!ˆà4ø»ðÓÎSáÈs‹gĨ . ¤J!|ÀÓEWîðÎ?ü4³?ìÀ;0vàúÀ;þÁfàì?Ü!©ðƒø‡>ðŽð£àGWøá ÁÔø‡;À¸Ca‡þራ†6¼!sØ™[ð£áxJ;äQsÈ#òGäAK|€·¸Å.h±°[ì" ËÅ.rq‹\,Œ`¹¸E.¶‹\ã»ÈÅ.¶‹\,,·ØE.vQ/1Ö뻸Å.rq‹\Ü" {b½Ä˜þ‹]äâ´xâ.hq Zäb¹Ø…wA‹]ä‚õºÅ.rq‹]ÔkÆ.rA‹]äb¹ã ¶ Zˆq¹F.– `,,»Æ.r±°\ì‚»ÈÅ-vñÄ[äâ¹ØÅŘ‹]c¹ØÅ-v‘‹]ÜBŒ¹ØE.vq‹]äb·X-vq 1æba·ØÅ-vŒ]Ü¢^ÀX0h±‹\,ì»ÈÅ-h1Ì]ÜBŒ´Æ.r±‹[LŒ¹#-rñp´#¾Y„<ÚñqˆAQ–ð@;žy˜CáhG8ÚŽvÈ£Ì ÇSÂÑŽp´CáhG8žâ›IÉ#ò0G;äŽþ§´CáG;lÓy„£ò‡mÂ!p´Ã6á‡9Úñ”p´ã)æG;äŽvÈ#ò‡<Âá›pÈ#òG„$p|`ÀøÂ!p˜C‹Ð¡ùñH"ˆ "A B`”ˆ@ )A B ‚¤ )B ‚ˆ "R„@!HAD„ !HAD‚„ !AR„@!HAŒ„ !HAD„ !HAŒ‚p AR„@!AD „ @D‚„)F Á.øÑŽpÈ´»ðL¬«XIè ;àƒ|èUà‡;ðv`*îÀ?øq,ðã- À?Ü!€°CRá;Ð~œ@üð {0á1^è@>D±€|°þCüø;ð~°Cÿ`‡L£ë]óº×¾þµiøq ~È#òh‡<ÂAyȣ̀¢JñÇðC*™ ?¦Â<¦+üøÇc¦ÂÏð£+üð ?¦Âð£+ü˜Êc¤BíðãüÊczÍ©ðc*üø ?¦BíÇL…RáGhÓ~t…ÿàÇ?¨ý~Heàüø?þÁP[*üøÌc¤ÂðC*é ?þñ˜<¦+üè ?þÁ©ðãùÇcþñ©ðã™ ?þÁ<¦3Ì–G;Ì!‰v„ãèdPT)>à›£Sýèá0‡<ÚfûFæ GÕÃ!sÈ#þòðM8ÚŽªË#ò0³Ã!v„Ã7Ì6³}3y„ƒÙáG8äÑf·#ÌÕÃ!sP=Ìn‡<ÚqôvÈ£á0‡<Ìqô”Bz ÕÃa `“þ3üø€$žñ2P½ÿh‡<ÚyøFá<‘Vy˜#­¾Oë,ñŒ? æh‡<ÌŽªï‚H@D „@&AD‚¬ Þÿþ÷W „À(6à‡Vð¬àfÀ?ˆ‘‚üà3HlÁ¤b!†ˆ@L>ðÄ€̃6C"ôC ¬À?ˆ@E(à?L¬@%àþ?ÀÃ'¤À øƒ„€Q„@ „€„€„„€Q„€D p@ˆ@ˆ@ˆ@ˆ@ˆ@ˆ€@ˆ@ˆ@ˆ@ˆ€@¤„€D p@ˆ@ˆ@ˆ@ˆ@ˆ@ˆ@ˆ€@ˆ@ˆ@ˆ@ˆ@ˆ@ˆ@ˆ@ˆ€@ˆ€@Eˆ@ˆ@ˆ@ˆ@ˆ@¤„@ p@ ˆ€@ˆ@ˆ@ˆ€Ó˜L ÐÂ?˜Õí‚g$<¤&TB!ð<ÀÃ<$AW¸ƒ¼AàÃ?°ƒð;?ü?°ƒHÅ= €|@?°ƒð;ÀT¸ƒHÅ=¸þ<€@?üÃ8@>øÂ”ƒT´ ¸ƒH;?ü;?¸ƒ”8†£8ŽchÜ?´ƒ<„ƒ<„³…ƒ<„ƒ<„C(Š%|³ý€ÈC8ȃoÈh–<˜ƒoȃ9Dˆ<„CZÉC8à£<„CZÉh¥=€–ï1[8Ȁȃ9ø†<„ÃïÉC8Dˆ³á£<˜ÃIú†<˜ÃïɃo0›9ȃ9ø†<´$€Èƒoȃ9üž<è¤ïɃN2›9ˆ<è¤<ø†9ø†<˜ƒïÉC8ÈC80›%˜ƒ<ˆ(Š%|€<„ƒ<„ƒoÈC8ÈC8ø†<ÐC8]8´þÕµC8ÈC8´ƒ<´Õ…CÕ…ƒ<„ƒoÈC;ÈC8´ƒ<̳µƒ<„³…ÃôƒTðƒgôƒT<ÆT<†mþ*°þ«®ñÃ-ðÕù†<´ƒ<´³=ÈC)x€<˜ƒ<àc80€=P]8ÈC8ȃo„ÃÑH8ï…ÃÑH8]ZQ]„ÈC8ÈC„„ÃÑ…³ù^80ÛI2›NÊÃI†ƒ<„ƒ<H8È€„Õd8ÈC;ï…ƒ<œd8]ZÉC8ȃP¶C8È€„ƒ<´C8ÈC„ÈC80›oÈC8ÈCZ…ƒ<ø†<„ƒ9г…ÃÑEH8ÈC8È€,³…ƒ<´àƒ9”ÂÈC8г…ƒ<„³µÃ<„ƒ<„ƒ<„ƒ<˜ƒ<„ƒ<„³…=0›9ÈC8ÈC8ÈC8ÈC8ÈC;ÈCþ;ȃ9Ȁȃ9ÈC;„ƒ<´Ã<´C80[;„ƒ9ÈC8ÈC;];„ƒ9ÈC;°<„ƒ9ȃo„³…ƒ<„C;0›90›9ÈC8Ѓ<´Ãѵ³}$(ƒ³…ƒo,‚°ò?|€$<È=˜ƒ<„C;üC8ÈC;0›90[8ȃ90[8ȃ9ȃ90[;„ƒ<˜³™ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ,‚2ÔA0›oȃoÈC8Ѓ9ÐÂ?˜™@¤€„€¤@p@ p@p@€ „„€„„@ „B<¤À"Š€@…@¤€¨Q,¢„€,¢„€„R˜þŒQ„„„€„@ „Q„€„€„€Ä‚Š@ˆ€É¤@ˆ€@¤@p€„€„€˜ ˆ@ˆ@ˆ€Éˆ@ˆ€É¤@ˆ@ˆ@ˆ€@p€„€„€D „€„€„@ p€„€„€„€ˆ@ˆ@¤@¤@ˆ@ˆ@ˆ€Éˆ@ˆ€@¤„„€„„€8„À-üC8ÈC8Ѓ9äBgðC4rÜ@Ü€#'hðƒ®ñÃhðCW܃6üC<€ÀðÃ?ðƒT \êž2*§2hÜÂ?„ƒ<„ÃïÉC8€¢X˜ƒ<´ƒ<˜ƒ<þ˜ƒ<˜ƒ<˜³™ƒ<˜ƒo0›o„ƒ<„ÃÑ…ƒ<˜³…ƒ<˜ƒ<˜³µC8ȃ9ȃ9ȃ90[8ȃ9ȃ9P9ȃ9ȃ9´ƒ<„ƒ<˜ƒ<€Õ™ƒ<˜ÃÑ…³…ƒ<˜ƒ<˜ƒ<˜ÃÑ™ƒ<€–<˜ƒ<˜ƒ<„ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<ü£<˜ƒ<˜ƒ<˜ƒ<˜Õ™ƒ<˜³™ƒ<˜ƒ<´C8´C8ȃ9ȃ9ÈhɃ90[;ÈC8ÈhɃ9ȃ9ÈC8ȃ9ȃ9ÈhɃ90[8ȃ9ȃ9Èh1›9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ90›9ȃ90›9ÈC8ȃþ9Èhh9ȃ9ȃ90h];ÈC80[;„ƒ<˜ƒ<˜Õ™ƒ<„ƒ$´C8Ѓ8´ƒÐC=X´ƒ<´ƒ<„CÕ™C;0=„Ãѵƒ<„ƒ<ø³…C;ÈC8ÈC;];ÈC;„ÃôCz7»³§2?ÜÂ?„³ùF8˜ƒ<˜ÃÑ=àC)|@;˜³™=˜=T9ȃ9ÈC8ˆ<„=ÈC;0›9ÐÃÑ…Õ…ƒ9Ѓ9ȃ9ÐCÕ…Õ…C;„ƒ<˜=˜=]8ȃ9Ôƒ<˜ƒ<„ƒ9P]8´ƒ<´³™ƒ<˜=]8´ƒ<˜C=ȃ9Ѓ9ÐÕ™=˜=˜=˜=˜C=È=˜ƒ<˜=˜=];„³™=ÈC;ȃ9ÐÃÑ™=˜ƒ<˜=˜C=P]8˜³…=9г™=˜=˜C=°]þ8ȃ9Ѓ9Ô³µƒ<˜=˜=˜=˜=˜=˜=ÈC8ȃ9Ѓ<´ÃÑ™=˜=0[8´³™ƒ<„ƒ<˜=˜=ÈC;0›9Ѓo„ƒ<´C8˜=˜ÕùÕ…ƒ$0›9ÔC;³•‚ÈC;„³µC8´C8]8P]8˜³µƒ9ÈC8T€„ƒ<´C8˜=´C8„ƒ<„³µÃ<„³…ÛµC80›90›9°];ÌC;0[8ÐÃѵƒ<„ƒ<„Õµƒ9ÈC;ÌCñSo„ƒ<´ƒ<´³}À"(È<Ѓ9ÈC8X³ƒ?|@@R¦‡L8yåýCØ.\»pþòÌ…k®ÝAsòÚ!”×Nž¹vš›×Nž¹‹”é ¯]¸vòÂÉ ×®¼]ÿDˆ!"Dˆœ!Dô !"„¡)zŠ‘"„ˆ"zŠ‘¢gN!DÍÙSDÏœB…Z+"„°!D„ªˆžVC´BDO!r†Ñ“CŠÚ†!TD=E„à"‡)8BDBE„!TD!R„HBD!R¤‘"DÎ"Bˆ!"Dê!DBD!D„BDB9„BD!Rˆ!¢§ˆž"Bˆ»ëŸ<šáäÝú7ž€ä=0‡„Ú‘'yÚ1g—DA„DJ„¬ A„RA„žRA„DèI„Dè)µDèI„DHA(BÈ©'«zJA(R!z²*„,B¡'À!B¡'8!…l !¡8A„¬þâ „B!„BH!„D!…r ƒzʉƒRÁªDA„DA„Dà z!zƒžDA¡DÁªDA„DA„DƒR!B!B¡'8A„B!„B°*„[þ¡IsÌÙåßõÙoß}òøy_þùé¯ßþûñÏŸ<~nù§yÌAy´!í8HRŠ´!áG;4yÐ$ò0BÚŽƒ˜ƒ&á8ˆ9äÑy´!ᇓ4by´C#áG8äyÐD懓ÚŽƒ´ã NÒH8äá$y8 !4‘G8䎃ÐDþáG8äy„ã á8H;äy´!á‡9äÑŽp´!á8H8äá$y„ãBòh‡<Ì!šÈ£òG;Â!pÈ#m4‡<Â!p$ ‡<Â!pÈ#òHÚŽvÄIáG8䎃´Cá0‡<Â!pÈ#íG;äsÈ#òBÂsh$D8Òsˆ¡ô(ÅÌ!p $ò‡9èqpÐã íBÂqp€„&á BÌv„CæG;ÂpÈ#òÇAÂ!pÈ# ‡<¡‘pÈ#ò‡<ÌApÈ£áG;ÂÑFy„Cþ퀇<ÌAy„Ãò0B>` eè ò‡“¡¿Ô!MÆæÇŒ‡°D4ô@y´CáhÇ?äÑŽƒ„Cæh‡<ÚqvÈ#ò‡<Â!p „&iBÂÑtÀã–PÆ pÈ#ò0BÚ!]ü£'"UB ‚p "z’„@!ADôD!ADЄ@!Prô$'BÉI¬Ò„@!PDЄ@!ADôD!Arô$'=IARÀžˆ "HAR%5!HDô$!þARÀ¤&9éIjB °¤€!AD„ 5=AD‚œ„À6!A¬…!HA8„@!AjÎ"‚žˆ ÈIR„@=AD ”]ð£Ù…Fœ`/˜Á v°½nÁs „&ò‡<Â!p  S–ø@8æAy„CáG8Ú!y ¤ ‡<ÌqpÐÃiÇAÚ!pÈ#ò‡<Â1vÈ#òÇAœy„Cí@H8äa„„cí@H8hy˜ƒ&òÇAÂ1vÈ#í‡9ÚŽy´CáG;äÑŽy´Cáhþ#My„CáG8äy´Cí@H8äyÐDí€G;äy„CáG8Ú„ÐDáG8Ò„„£ò‡<Âq!šÈ#ó ‰@š„ã 49ˆ9Òz„ã áG;.Ôy„c4A=Â!pÈ#òhG8ÚŽƒ„Cáh‡<Â!KÈ#íG;È zXâòh‡<Â!pÈ£¡ÉAhŽƒ„Cí8H;y„£ò0‡<œdy´#ò0Bhrv´1òh‡<Âqv $ò‡FÚ’p Ä ‡<ÂÑŽpÈ#òMÒyÔÃò‡þ<ÂáRôð{”ÀxÆÈ`Žƒ˜CÿhG8@sÈ#æ8H;ä„„CáG;æy´#4ш9> `èò0=Ú!š„CáÇ-ØçòøÃãa|þúA~‡÷â‡üøñ~ø‹äᇽüAØËøóǽüA?üË÷c¼?ÆÃøùãþ°—?æÇ]ð#íG8äq‹œ…øÅ7þñ‘Ÿ|å/ŸùÍwþó¡}éO_(·øG;äy´#òh‡<ÚqÐC¥ø@;þÂvÈ#ò0‡<ÚŽpÈ£á€5MÌ!p˜ã íG8¢Âá ÂAÂAÌAÚA#ÌAÂA#œDÚÁä!Úá Ú$ÚAÚá h"¢ÌA#ÂAÚÁ"ä!ä!äÁIÂ$ÚAÂ!ÂAÂAÂAÂÚÁä‡Ú!ÚAÚAÌ¡ÂÁä!ä¡"ä&Âá Ú!ä!è!ä!ä!äÁIä¡ÂAÚ!ä!ä!ä!ä!ä¡ÌÂAÌAÂá pHÚ!ä!"ä!ä¡¢Âá Ú!4"ä¡þ4¢"è!ÌA$Ä ä¡> ¢ä¡ÌAhÂäÁIä!"ä!pHÂáBhBÚáBÂÁä¡ÂÁä¡ÂAÂ!Ú!Ú!ä¡Âá ÂÌAÂAÌAh""ä!*èá ÌAÂAÂá ¢âAô€ ÂAÂAÂÁîçlÀ¨¡ýñ©aRàøÁ ðÁ¸A Æ>ØA>žAÈ@#Ú"h".$‚ ~á Úá Âá ¡ä!Âä!hB>žá ÂÂAÌAÚþÌ!ä>Æ>Ú‡ƃȃÈ#>ȃÈ#>ƃþþþþê…ð%>ȃȃê…Æ>ì>î‡òÑ}øa-߇þê‡ê…þá ÂÌ!þA.üò/30s0 ³0 ó031s1³1s"nä!ÂÂIä!€äÁ>à ¡Â$hâ Âá ÂAÂ&ä!Ú!¢"ä¡"Úá ¡@‚&ä!ä¡‚&ÂaÚAÌ¡"èÁÎaÚA¡ÂAÌAÌ!ÚAÌá Úá ÂAÚAÚ!þä!äÁ"ä!ä¡ä¡ä!œä ÂA¡4¢ÂAÚÂ$èÁ¡äÁÚAÂA¡@â êÁ¢ä!ä!Úá hâA¢ä!ˆPÂá ÚAÚAÚAÂAèÁ¢4"æ‡4"Ú!ä¡ä!ä!hBÚ!"Ú!Ì¡¡ÂÁIä&Â&äaä!äAÄ ä,áÌ¡¡äÁ"¢ÌAÌ¡¢¢ä}Úá Ú!ä!äÁä!ä!Ú!æ&¢‚Âá ÚAÚ!äÁÚ!äÁþ¢¢‚&¢ä¡¢ÂAÂA¡ä&4¢""ä!ä!>žAÈ èá Úaê>Æ£ zzzÁ{za ƃØò!þ>þ€" >žAÈ Ú!䡸á Ìá Âá Â!ÐÁ0àÎÁ¢ÂAÚá ÂAÂAÂAÌAÂA>@€A€&@Âbþ!>Ö_ø<öaããàãâãàÃ^àc<àƒ<ø¡^øáøáøáâ£^øáâƒ<àã^öø<àc<øa< 6>Æ#>Èþ#>þAaÇ£fÿáaï¥fÿþ¡fVaýåhÿþ>êåhùáøáàƒÈÃàÜA>@žAÄ!¡þ!ÂÚá Âá ÂAî8áÄA¡` ( Ì¡P €@ªAÌAàá !êÂ&ä!ä¡"äáÜ2Õyé>Ü’ì%>Ø™ùÁ}ø_hœ$äáþA.R  6|áó :¡z¡º¡s¢'náÚAÂ&ä¡ÌAÂAÂ!èA,áÌAÂá ÂAÌAÚÁä!Úá Úá ÂAÚþAÂá p:§éÁä!hÂÌ!ä!ä¡pÚpºp:œä ¡"ÚAÌ!§Ã¡"ÚAÚÁä!"ä¡èÁä&"äÁp:ä!"pÚä&"rÚÚá ÚAÂ!§Ã!§Ûá ¡ä!rºrºp:Úá ÚAÂá ÚAÚAÚAÂA§ÍAÌ!ÚAÚá ÚA¡ÂAÂAÂA§éÁ§Ûá ÚAÚAÂAÌ¡ÂAÌA€ZhB§ÃA¡ÂAÂ!§åÁ"ÚAÂap:Ú þÂ> h"h"äÁä¡bÚá §ͧÛá h"§Ã&ä!hâ Âá Ú!ä¡ä&äÁäÁÚá Ú!Ú!hBÂAÂAÌAºÃAº1<§ÍAÚÂAÚAÂiBÂá ô€ Ìá Ìa-… ¨“m|“€þþ¡nà`¨áØAþÁàáþ€ Âá ÌAþ!pš&ä&pZ  ä!ªa|€&äáH@Ô@ªAä¡Ìá,áô¢ä!ä!ÚA€zæ9Ð}Ð ½Ð Ýþ_vÂá €zþ,D ö œÀ DáD@m9½Ó=ýÓAÝør"nÂá ÚA¢":¥> ä!2<¢ÂÁä¡ä¡Ìá ÂAÂAÚ!h"rÚ¢SÚAÚÁä!pš&ÌAÂá Ìá ¡äÁä!ä!pºÂá ÌAÚá Âá ÂAÚá Â!§ÍAÂá ÚAÚ!rºÂAÂA̢§ÃAÌAÌAÂAÂAÂAÂá ÂAÚ!䡿¡pºÂ‡ÂAÂá Ú!äÁä&"ä¡ÂþA§ÛAÂAÌrš&æ!¤»¤;ä!rš&ÌAh"ä!¤»¤Û2<èá ÚAÚAÚaÂhB̧!rZ êAJá̧Û!§ÍAÂ&Âá ÂAÂÚ!ÚÁä!ÌAÚ!ä!ÂpÚä!ä¡Âá ÂÁä¡ÌÃÃÁè§Ãá ÚAÚAhb§Û!Ú!Úá ÂA¡ÂAºÛAº$ÌA̧?@žáÈà ÚAÂÁÖRz!69z!69zê…þ¡âá  ÜAþà Aþô€ ¤ûp:Ú!nr!äaàä!8 ä¡@䡾!¤AÌa ª!pú’²?Ú…“׎ž9y îú1¢Ä‰+Z¼ˆ1£Æ;zü2¤ÈŽ»þÉk×p×?,E„A냺¹øí÷̗¯6"R¬ð×2¨P–+ü‰Xáoè C›:‘b…¿§T«Z½Š5«Ö­\­¾ ±ëÃpòÂ1 '/œ¼pèѳô!W®]råÞÊuk×®\ÀôÞÊu+×®\·våÚ%w—Ü]·néÝ•«ñ­\»€íʵ«.°\»rí’» ­]rwåz,—V®]rwÉþ½•k—Ü]usí’{+×®\»rÝʵ+×®Ú¹¶«î.â»ríʵ+×®\·vÉÝ%·qí]riåÚ•kWÝÇriÉÝ%wW®]uåÚ•Koã]roÑÚUûV®[¹ë͵K.·ìB 0Äí’‹^ÄÉuË.¹ì"×-¹H¶Ë- ærË.·äÂCíÈŽ$ …ÓŽ8dÈC%ÐcŽ<á´#O8í´#O8 ™ÃP;ò´ÓPCíÈC9òÐCíÈŽ<áÈNí4ÔCá´Ž<á´ÓP8ò„ÃP83¶#9æ´ÃP8ò˜C9òÌŽ<á4ÔN83†óe8í„ÓŽ<æÈS9ò„#O8þ@òŒd„cCí,"Q£Ž:ÊO ¡ôJ¥¡ôbi/)H$Q3äÃŽÿ°#À<£á´Ž<íüN;ò˜#O.µ#œÎ0HÓN5Ì(O5ˆ#O;ÕÐN5„#9@ÌÈNá´#O8òÜÂi¸âŽKn¹æž‹nºê®Ën»î¾ oDüÜòO;áÈŽ<·üóK!ÐòA ÐÂ>øð“>m„  ÿ|qÄ)ˆÂ)¬ð_¥  ÿˆqÈ"¿$B +ü3rÊ*¯ÌrË.¿ sÌ2ÕR·ðÓãŒò´#O; @<¥|.?ÿðó?ñÃôþ?üüÃÏ?LÿÃDü@ÄtÖeý?ÿðó?œòó?ñÃ)?æò?äò?ÿð?ÿð#nÖåòÃ)?ÿðÃ)?ñ3.?áòQÖœòS.?ÿdÍ4Dü„ËÏ?üüù?üüÃt¹üˆËô?ü@ÄÏ?YÿùüüsË?áÈŽ<íXNdà#O)ÌÓŽ<æ4ÔCí4Ž<3ÎN8ò„#O; µÃЗíÈÓNC3†#9 ÍNí4ÔN8 Í(9ò˜Óc;áÈÓNæôØN8ò´ÃP; …Ó£9ô0ÔNCí0ôE`‰gè!í`H8䆄ƒæÈ…¸®ˆÅ,jq‹\좿Æ0ŠqŒdôâ-øa†ÐùøGKBð<à t¤>>Àƒá£ "HÁ ö‚ª|%"XÁ>B ‚ˆ )XÁ>B ‚på%+ØGº‚ÉLjr“œÔ Änñv„£áÞŒäŽÐC–øÀ—äasÈÃ3’‡9¾$/Éæì¥<¤'^~Iá¦1¿$pS½”G8þÚ!XJOæÇ—äay˜ã˜æø’<ÌqÌcÊ#–æG,…)pÈ#–½”G8z)s´ÃÆ”G,åÑyÓ3’G8ä!=y„CÒ“‡9L)p´Ã_ ‡<¾$sÈà ™‘Æ ‚PÃ+ø‡ð!)˜éƒVà™ÉxÆ4®±k”Ü‚ò0=þsÈà =äQ È£á@¡<Â!vÈÔáhH8y|)ò‡PçZ>ð žy’ðk…ÌÀ‡büámjO¤VðG„þñ+…^È&‘BÁ†RøÁŸü²…—þñküZaŸVøG*þB!Bà ©Dƒ¤!RJ„8HA*Bà ©Dƒ¤!¤@*"R „€)ŠBÀHE!à@ ¤"‚p RA8©ˆ HTD¤@*"R „€)ŠBÀHE!à@ ¤"‚p RA8©ˆ "A B ‚„@R‘_B° ~„Cí‡<Âay˜cG ‡ eÔ!Ej‡<ÂÁ‘pÈãåmo}û[àþõüpQ;Â!ZðC!A >Z”à Å JìbW*)Bà—ˆ e‘ŠBP©ˆ@*RIÁzE°Þˆ¾!HAR¤@RIR„@!AD„@þv!Ad„@v!Ad„@v!Ad„@v!Ad„@v!Ad„@v!Ad„@v!Ad„@v!Ad„@v!Ad„@v!Ad„@vRIB ©ˆ ~‘Š໋È£.j‡<êay„Cá@,ñvÈ£. G;\Dp¸¨Fj‡<Ú!v)íØQ8äy„£òàÈŽÚ…£. G;\Ôy„ÃHæhÇŽÂÁy„FípQ88"z„Cæàˆ<ÂÑŽpÈ£. G8Ú!p´CþáØQ;Šy„CáG;äÑy´CíG8vÔy„CáG88#qDá‡9äy´ÃEáàH8äy„£ò‡<Â!vìÈíG;äaŽvì(qQ8Úa7s´Cá˜G;äay„CípQ;à!vì(íG;äŽ"­ºò‡‹Âá¢]üÃEáàˆ$äyˆ£b ‡<,ñz„Cáh=Â)É£ò‡<Ì!pÈ#ò‡‹Â!pÈ#ò0‡<ÂÑy„CáG8\y„ÃEqQ;vÑÃíG;äay„FòG;ìFs„£HáþØQ88"p¸FòÇJŒ?aGæÇ"~òxÈë„(Å3ô@†v„cGüG8äyÜ‚òh‡<Ìá"sÈ£áG;äz´cG1ÇŽÚ±#s|ÀÏøÚy˜ÃEíp¼vyä'_ùËg~óÿ|è+Ÿ·øGäayìâ!T>8¡ NH>©¤ )B ©ˆ`½"B ‚õŠ`½"HAR‚ð‹©õõò‹õ©HõHõHõHõHõHõþHõHõHõHõHõHõHõHõHõHõHõHõHõHõHõ’ð‹©Hð‹¸~‡p‡v‡p i z‡Rðs‡pps(’vyh‡p‡p‡vyy‡vyhi‡y‡0‘p‡p0z1‡1y‡"áˆph‡ 1y1y0y1yh‡"i‡pØ‘pŽØ‘psØ‘pŽyhþyh‡iyyy‡ yy#1 yàˆpsp‘vØ‘p‡p0’p zhyhyy0z0y0‡" ‡"1‡"áˆp‡p‡vsp‘v0‡vØ‘v0yyh‡pŽ(’vØ‘p1yh‡pŽŽ0‡]à‡p‡p‡pyi2¨‘Røyh i‡p‡p‡p‡v˜‡p0‡"i# iH‘‡p‡p‡p ‡pp‘p‡pŽއvyyh s(s‡p(’p‡p‡pp‘p yþh‡p‡v‡ph‡1i‡p0y0‡ù€EP= ƒp‡p‡p°„è{>~ø€EP=  y‡Øz0‡\ø‡pØ‘vØs‡p‡vpsàˆpØ‘vy0y‡v‡€„]Ѓ0’p‡pØ‘]øLéœNê¬Në¼NÈÛ~shÙ…X¯² ¿¿ Ù Ù ð ©õð © ¿ Ù Ù Ù Ù þÙ Ù Ù Ù Ù Ù Ù Ù Ù Ù Ù Ù Ù Ù Ù Ù ÙY¯  Š[ø‡p‡p‡vp‘p‡p‡p€±„Ø‘ppއvp‘pp‘v‡pp‘v‡vØ‘p‡ph‡ph yy‡yhiHi‡pp‘v‡ph‡ph‡pp‘vsHi‡ i‡ ‡v‡vØ‘pØ‘p‡psØ‘v‡ppþsp‘p‡p€‘p‡p‡v‡vp‘phzyh ŽØ‘v‡psØ‘vŽy sp‘ph‡phyàˆ"1‡v‡p‡v“p‡pp‘ph‡p‡v‡psp‘v‡p‡v ‡pháˆppzy‡v‡psy‡v‡p‡pŽspsØs‡Ù…(’v°„vpqh1¨Køy0y0  y1‡" y ‡v(s‡p‡ph‡p‡p€Ž(sØs‡" Žpz‡v0‡vØ‘v‡vyþhyyhs‡vØ‘p‡vp‘p‡p‡ph©s‡p‡pøH= ƒpØ‘vXìŒ<~øH=q ‡p yày‡Ù…yy‡\È…]èÝ\Ø…[¸…Þ†]ØÝ[È…]È…]È…]Ø]`øKP†?€vއv‡v‡p‡[]ð _ñßñå‡]àásØ…Š©ð‹ð‹õùJõJ¿ ˜/˜¯ð‹©€/þX/X/X/X/X/X/X/X/X/X/X/X/X/X/X/X/X/X/X/X/Ù ¿à€H©[ø yh‡p‡v‡vp‘ |(…È…Þ½…ÝÍ…]Øä]È…[È…ÞÍ…]ØäMÞ…\Ø…\Ø…àÍ…]È…]È…] ZØä]ØÝ[0å]ØäÞÍ…]È…] …[ …\èÝ]0å[0å\ØeÎ…]†]¸þ…\¸…\Ø…\¸…\Ø…\Ø…[è]SÞSîÝ\Ø…MÞ…\Ø…fÞ…ÝÝ…[È…[È…]hæ\Ø…\èÝMÞ`È…]ÈcÎ…]ØäàÍ…[Ø…[0å]0å]Øä]È…]¸…\Ø…\Ø…[†\Ø…\Ø…MîÝMÞ…[ …\ …\Ø…M6fcÎ…Þå M°IKxi˜–˜–y€sØ…àˆp‡vX„v0i2Às(…Ø‘vp‘p(’váˆp‡p yhxp‘p‡pp‘v‡vØ‘vpŽyy0yh‡p‡vŽ0z‡v‡p(’yà# yþhy0zh‡iiy‡vp‘p0yyh‡1 zp‘vp‘°„hÐ2p‘pàˆE€¾:¨ƒ8¨æã‡°eÐ2(’pø‡p‡vyØ…‡v‡v‡]ø~èíà‡èm~° ~¨ ~ø~  ~øH=€1y0¡sÈðÍníÞnî]Zøyy0yØ…ð ©©¨"Ù‘ ¨¢ð ©©Hà€²* þHHàÙ HHàÙ HHàÙ HHàÙ HHàÙ HHàÙ HHàÙ HHàÙ HHàÙ HHàÙY/(‹ð ©õº~h ‡vp‘‡p±„àšà‡šà‡šà‡à‡èíàœà‡à‡à‡šà‡àšà›à‡šèí›à›à›à‡›àœàšà‡àþ‡à‡à›à‡à‡ààœà‡šà‡žà‡èmœà‡î›èín›à›à‡šàšà‡šèmšà‡à‡šèm›à›à›à‡îà‡]øyyz¨9‡so0‡m¸†hˆKxØ‘]øx‘‡ph‡Ehz0Žz¨Kø€v‡v‡phyhy‡"1‡v0’pàyyy‡y€yy0y‡iyh‡" ‡vs0’p‡v‡^k‡phyŽ1‡" ‡vŽy ‡i1‡ph‡  yyþ‡€„gø2h1zX„竃x(üdø‚å〄gÐ2yhù‡vpxÙ~h‡p0¹…šà‡à‡›à›àœà‡°„gЃ‡0áÙ…îž}Ú¯}Ûç‰]à‡"1‡]ø‡©õ©ð‹õõò‹ùùõò‹©ø©©©HH©X/à€²ŠX/à€€H"Eˆ‚"8¤‘"DŠ) †Á!Eˆ!R„HQ‡!R„H"DR„Hþ"EˆEpH"Eˆ!R@Á!Eˆ!R„HQ‡!R„H"DR„H"EˆE`å"EˆEQ+Ö·ø…“§¶]8sòÌ©•@m©ÿîâ½Ëï.¿¼üòòã—w0^~xãå÷/0¿»ü懗ñ]~wù f ù¿ü óûÇï.¿Í›æ——1áÀƒùáågzsàŒgóûÇoð?~ƒùáåÇ;/¿[ü䵓'©=µæ@çíZ´h’Ú…“×ÎÜ®qÛɳ.n;2jK}PNm»váä…“.n8yáä…“gN^»¸jÛ™#O;ó´'O;ò„ÓN8þò´N;áÄŽZá´ŽZí˜ãŸZá¨e=í„#O{áhè_{ò„£–9¶ŽZíÉÓŽ<í¨õ$ÏèA†9íÉŽ%Ã9?bJ(}T!… D2)Æ]þT`^-ÐðÏ8Ðð$ÏüA†<í„#O8üÈN\»ðã_8·ÉOyñó$ÊÔ€Zá´Ž<á´#O8òÜò¦ ƒZ¨¡‡"š¨¢‹2Ú(¢·ü#O8íɳ ?‚2d`y1$?yñÃ?Žús—?þ8šªª«²êÏ›þ wË?ò´#O8jÕcŽ<áÈNôÈcɬ[ì?ü›,^ü(;?ÉÞò<æ„cIþ=õÄÎ9à˜s7×D#I;ò„£Ö.ÿ´£–9á,"O;ó´#ôÈc‰ò„—9qÑŽ<áÈŽ<íÐN\í¨Ž<áÈÓŽ<á˜#O{ò˜ã_8íÈC9ò´#O8j…W8í¨ÕN8í¨ŽZí¨eŽZí¨ÕN8í„ÓN8ò„ÓŽ<æ´£V;j…ÓŽZæÈN{G·'O8@òŒdÈcŽZí,²(?0BÖ[sM0ðs2”Ó( äÃÏ8ö$ÏèAF;ò´£?ò„#O8òÜÂ<í„#9»8ÊÏ<£áÄ=æ¨eŽ9»4[¹å—cž¹ üÜòO\í˜þÌ?üðX^üüÃÏ?Œñscyñó?ÿ0v?ÿv?¼ñsW`ÿðó?w1$?š#Ÿü¢üàÅØ?üÜò9jµ#O8ô¨ÕŽZÐ#O)(¾øã“ÿ?·ð—%ë["‰ûïKÉûjµgÎ.ü„—9’ŽT샘Á]¬ìÃ?|$(Ã9ÈC8ÈC8üC8Ù.üƒ<„ƒ<„ƒ<ÜÂâaêáâá.x€%DC@;¨…9ÈC;¨E;„ƒ<Ü‚ö9â#Bb$Ê-üC8´ƒ<„C;ÜÂ`ðÃð(€B!ð>ƒ/4Âþ ?¸ƒðÃpðƒ=x@ðñƒ;€$Úâ-Ê.üƒ<´ƒ<˜ƒZÔƒ9ÈC8ÈC8@YÂðá22c3:ã3Bc4Jã4Rc5Zã5b#4þƒ9œƒà? &?ä?àC ;ðƒ;€ð±ƒ`æn^&?Ü?˜ƒZ´ƒ<„=¨E;¨EP)|b:çsBgtJçtRguZçubgvjçvJç]HŽà.¤(€B!ð>´Á`܃ €ÐðÃ?Ü þ$€”À;üƒ84üÃ= @@ ¼C^ðƒ=(€-üƒ?h€°ƒ¼A<5¼A<€-ðƒ;À¡2k³*Ê.üƒ<˜C8ÈC;¨E8ÈC8ÈC8=ȃ%|ÀœŠë¸’k¹šë¹¢kºªëº²k»º+»ª=ȃ9´‡<´ƒ<´ƒ<˜ƒZ˜C;ÈC8ÈC8Ù.ðC\´Ã9XB8´C8ȃ8ˆ=Ôƒ%|@8ÈC;ÈC8ÈC8ȃ9„C;ÄE8ȃ9„C;¨…9´ƒZ„C;„C;ȃ9´ƒZ´ƒZ„ƒZ´ƒ<„C{Ѓ9ÈC8ÄE8´C8¨E;Y8´ƒZ´G\„C;ÈC8´Cþ8Y8´ƒ<´ƒZ„C;„C{„ƒ<„ƒZ´ƒZŒc\Ѓ9ÈC8ÈC8|$ÃA;ÄE;,B£HÁ ÈíÜÒ­ÜÞEaÞ?ü?ô?üC`|$ƒZ´ƒZüC8Ù.üC{ÈC8Èû¶ƒä|€%<ƒ€Z´‡<´ƒ<„ƒ<„ƒ<Ü‚³’néšîðñÃ-üC8´ƒ<´ƒ9ìB^ðÃ?tÁ<Ì=Ø.jÎ>t^Æ ¨@>è@`èƒ6üC<¼ü;@aêƒ6üC<¼ð^†/,À;xAð; ôƒ,ðÃLÀ?°ƒ¨Jûºïû¯¡ðÃ-ðƒZˆþU8ÈC;ÈC;¨EЃ<”‚ȃ¹pð#p+ð3p3p8ÈC;¨E{„ƒX©E8ÄE;ȃ9ÈC8¨E8ÈÃ-üƒX™ƒ<,B;ȃ9¨¨E)|@;˜ƒZ„C‘…C;¨E;ÄE;„ƒZ´C8Y8¨E;„C;˜ƒZ´C8ÈC8¨E{Y;¨…9ÐC;„ƒ<´C8ÈC8¨E8ÈC;˜ƒ<„ƒZ˜ƒZ˜=„ƒ<´C8¨E8ÈC8´ƒµƒ<´ƒ<„ƒ<´C8Ä…9´C8Y;¨ÅX‚2èÈC8ˆÕ"8 ?¤>ðC:ü>ðC:ü>&¡ðÃXÂ3ü„C{ÈC8üƒZþ´C8ÈÃ-üC;ÈC8ÈC8ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ÄÅ@‚2üœÃ<´ƒ<„ƒ<„ƒZЃ9äBüJó4Ss5[süîÂ?¨E8¨Å. F?tA=àB%¤B*€B!>tA^èÔC`4ƒàaŽÃüƒ;À`æ8oðÃXÀ”Ã?°Ãä?ŒäÃ?¬üƒ;À5KôDSô?ÜÂ?´ƒ<˜ƒ<´ƒZˆ•<„C%|€9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃþ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9Èþƒ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ȃ9ÈC8ÈC8´ƒ<˜ƒZ˜ƒ<„C;ÈC8ȃ9ÈC;Y8Ѓ9äÂ?ȃ9È=„Ã"™8ˆ=ȃ%|€9ÈC{¨E8¨E;Ѓ9„ƒ<˜ƒZ„C\„C\„ƒ<„ƒZ„ƒ<Ѓ9ÈC{¨E;Ä…9´G8ÈC8ÈC8Ä…9ÈC8È=„ƒZ„ƒZ˜ƒ<„ƒ<„ƒZ´ƒµC\„ƒ<´ƒ<´ƒ<Œ£Z„ƒ<´ƒ…C;È=˜ƒ<„ƒ<„ƒ<„ƒ<„ƒ”Â3èÄ…9ÈÃ", ?ð?à?$ ?|$ƒ<˜C\üC{ȃäì?„C\˜=þ˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜ƒ<´ƒ9|@)ä‚@;˜C;ÈC;¨E8ÄÅ.Tô°{±{¡ðÃ-üC8ÈC{˜Ã.ä?üC ¦íZ;jvA^°Ü?¬ƒü?l 88€üƒ;^ðÃ& €P€@^ðÃ]°À@`°ƒü?°ƒü?¸ƒü;o |Â+üÂ3|Ã;üÃC|ÄK|ÃóÃ-ðƒZ´ƒ<´C8˜ƒ<˜C\@•˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜þ=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜=˜þ=˜=˜=˜=˜=˜=˜=˜=˜=„È3'/ÃpíÌmlÇ0œ¼vòÂÉk'/œ¼v Ã5ôNž9yáÚ1œ'¯¼vòÂm ǰCÃÉkN^8yíÂ]4'Ï\Csáä…“®]8†æäµkØN^;yí~X¤L™pòÂÉ gé_`Áƒ æWqâÄ$)ûSÇœ¼pòÂñ wq×?†í6vöÜ™ž9y$=û3 a¸vòÚÉkNÞ-ųi×¶}wnÝ»y÷öý;ñ.~wN2®þT©@⯠?Áú¼ øŒÃ=üÄE‘ÄM<E=j§¡vä1§†Âñˆ!zÌa(†Ú Gž[þ §pä Çsä Ç#1D²äƒ‹þ€ä=ȇ†ÚY$ÁRãçHžÑƒ †ÚaèŸpÚ‘'ynùÇ£pä Gžpä Gžpä Gžpä Gžpä GžpäY‘!s>€=‡!sä Gžvä1Çœ]L—ÜrÍ=Ýtäç–Âi'yÌÙ¥°.à™žyæG_x’ŒŸ¬àÇŸàçÞùÇŸ!àçžÞù‡Ÿ{xç† 0{˜ð΋òe|Ø 0vø‡wø‡f›™æšm¾çœuÞ™0~ná'zäiGžpèa¨†©”‘'y‘'y‘'y‘'y‘'y‘'yþ‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'y‘'ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#òh‡9äþy´# ñC<†´ƒ!íCÀµ‹˜ƒí`È"Â!vÈ£d ‡šÑ”æ4Ey ~ÐÃòh‡à, 0K ñ7<àÈ‚øÑq ¾8@9Ó¸Ca‡ÃðàæF9ÚÑgîâòhCÂÁpÈ#òGDb‰ ¦1•éLiZS›¢¨ 1‡<Â!p4$ò0G8äaކ„CáhCÚÑ]üƒ!æ8‡<$Ñq´C òÀ‡%>à‘ylÄíG;ÂÑy„Ã#ô0G8ÚÁz˜c#áG8ÚÁv„£òhG8Žy´CáG8Žv0$íG8y˜ƒá`H8ÚŽvÈ#òG;ÂÑþy„ƒ!áhH;äy„ã"íhˆ9äAsÈ#òÇ  =Á 1=áQœñã’x†ÈÀv0äí¸È.þyx$ò‡<Â!pÈ#ò‡<Â!pÈ#òhG8äÑŽpÈ£ðø€%ž¡È#ò0CÂÑy„C·ðí~ùÛ_ÿú—·øGCÂ![†I€Ç<࡯yÀóH?þáÀx‡…ña¼# óƒ0ü(L?ÃÁðã¿)V1Gùq ~È# ñˆ<Ú!v0$ôG)>y„CáG8äy„CáG8äy„CáG8äyþ„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„þCáG8äÑŽpt&òh‡<ÌQy´C ‡<Ú!sÈ#ò‡<Â![ð£!æhÇ"Ú†´ƒ )Å<y„Cá`H8ÌAs4Ä# ÇEÚ†„ƒ!áG;†˜£!á‡<ÂAp0Ä 1=äaŽÎ´Ã3í‡9èц„ƒ!á0‡<ÚŽ‹´C ÇgÚÁHâ CÚ!pXbňá‡,¡Œ?!‘G8ø±¢pÈcÿ‡GÒy´CíG;äÑy´CíG;䆴ƒ!áðÈ ±‹?  aH;z˜#‰þð‰¿â[ü#þò=Ì‘ Âð# ÑO ¢é;“ŠáG`0\|ï_”·øG8äŽKyDá>èa‰È£òh‡<Ú!vÈ£òh‡<Ú!vÈ£ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡þä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡$Á$Á$Á$Á$Á$Á$Á$Á$Á$Á$Á$Á$Á$Á$Á$Á$Á$Á$Á$Á$Á$Á$Á$Á$Á$Á$Á$Á$Á$Á$Á$Á,AŽÑ$Á$ÁÑ%A-AäÁ¢ä¡‚Ì!þ!äÁä¡$ÁBÚA DÂ>À"è!tÃAÂaE""ä!Â#"ä!ÚAÌA rAÈ@ÌA÷ø!\vÌAÂAÚ!ä!ä!ä!ä!ä!ä!t/ä¡Ì!ÌAÌá,áÈ Ú!Ú!äÁ#èq†’/ûÒ/ý’náÚw0>ì¼£>Œƒ¢‰þR2'“šøáþ!ÚAÚ!ÌAÌA÷@Ì¡> ÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAþÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂA,áøáøáøáøáøáøáøáøáøáøáøáøáøáøáøáøáøáøáøáøáøáøáøáøáøáøáþøáøáøáøáøa0úáøáøáø!0¼£0øAÚAÚ!ÌAÂA÷váÚA÷ÂAÚÁ¢È€ä¡>Àè±ÂÁ""èÁä¡¡äÁ#ä!è!äÁ#ÂÍ!ÚÁä!Âä¡ÂAÂA¡ÂÁè!ä!èÑÂAVDÌ¢äÁ#è1ä!äÁ#è±ä¡RÌÚAÚAÚ!>`žAÈ€!Vd(“<@žáÈÀä!ä!þAÚA÷váèÁä!¢ä¡ä¡ä¡ä¡ä¡"Úþ!ÌA÷èÁäá AôÒV$äá(Óe_fwæøaEÂAn¡0¼#fw–g_öþ!€!ÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAþÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚA,áè¡è¡è¡è¡è¡è¡è¡è¡è¡è¡è¡è¡è¡è¡è¡è¡è¡è¡è¡è¡è¡è¡è¡è¡è¡è¡è¡è¡è¡è¡è¡èêêêêÁ…_Ø…E‚^X,aÌÁ!ÃAnÚAÚ!äAÌÌÁ#Ä€äÁ>@ÚAÂÁ!Ã!Ú!èÁ¢äÁä¡¢æá"ÚAèÁä!Ú!ÌAþÚAÚÌÛ!¡t/äè1V<"ä!ä!ä¡äÁ¡ÂAÌAÌ!Ú!ÚAÂÃaEä!>žAÈÀ#ÂÁäaž©â ê@”øá$áô€ ¢âÚ!ä¡ÌaøA÷ÂAÎïR¡¢Â!¡èñ áô Ú!ä!äÁä¡ä\v¡g»Ù›)“nžáÄ€ÃÁñ²!»ⲓá "³›>žáÈ€!ÂAÂáÌwáÂÍAÌAÌAÌAÌAÌ!ÂAÌ!Â!ÂAÂþ> ”¡€!ÂA÷Úw!³›Û¹Ÿº£[º§›º«Ûº¯»³³oÌwA»Ã[¼Ç›¼ËۼϺwáèÁäaEä!ä!ä!€äÁ>@ÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAþÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÌAÚAøA†éa&æÁÒçÁÒçÁÒçÁÒçÁÒçÁÒçÁÒçÁÒçaÒëAdXê^˜êääA†ë!$aä!ä!èqþ!ÂAÂaB¡ª@ l æs^ øáü¡Ì@0Z€úA0øá ô€ ÂAÚ!þAÂAÚÁváÂAÂA÷æÁ!çA÷ÚAÚ=BÂAÚÁ>ÀžA€ÃA¡ä!äáÐïó^ï÷žïµ›nÚ!ä!äáúñ_ñß¼ùáøA÷<"ä¡ä¡"èAJáÚA÷æÁ!çÁ!çÁ!çÁ!çÁ!çÁ!çÁ!çÁ!çÁ!çÁ!çÁ!çÁ!çÁ!çÁ!çÁ!þçÁ!çÁ!çÁ!çÁ!çÁ!çÁ!çÁ!çÁ!çÁ!ÍA$èAæA$äaäA†åaäA†åaäA†åaäA†åaäA†åaäA†åaäA†åaäA†åaäA†åaèAè äÑ›GOž¼yç¤'=yóäÑ“gé–Á‹òÂÉ»Å/œ¼v-…“g®^;2øÌ•ú`°9zíäµ '¯ÁpòÌÑ3N^;Œí0†3Nž¹‹í †“gŽ^8yí¢¶3N^¸vÙ“×c8ƒæ ¶“g£¼vòÚ™ '/œ¼váÌÉkg0œ@sÈ£  G;ÂavÈ£¡ ‡A•p$í0H8¢ƒ„Cí0H8äy˜Cá=̳„CæhG8Ú!pÈ#òhFÌÑy˜#* ‡<Ì!sDEæh‡<Â!v\¤òÇJñ =¡iÇ"â&„^P#™ þFæøq~ Ðè?þ¡ €Ä3ô qÈ£ù‡<Â!v˜cüG;äÑy„CáG;@5pÈ£iÇ<Ú!¨˜ã–x†ÐŽp\Äòh‡<ÌaŽ]€ôÌhNsšùq ~DEdÞ…šçLç:Ž·àGTÂapÐà í0Hè!Rx@áG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáþG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8äy„CáG8 "‰„CæG;ÌÑN@ç‡9î°sÈ#ò0Ç<åy˜£à˜§<ÌŽv˜CæG8ª!€pÈÃáhG8ª!€pÈ#ò‡<ÌŽv˜ã"á ³<Ú!vÈÃò‡<Ì!s„£1‡<Ú!IÜ¢áG8 Bæ]üà íG;y„Cæ >äQŠ\¤áG8ÚŽv\$òhÇþ<Â!v„£áhG8 Ò³„ã"Q‘‡9 ƒ´Ãòh‡<Â!sÐà ḈTÂñ©v`$òˆJ8.Ž‹„ãSæG8 y´CáG;Ìq‘,bƒ<Â!•EÄM½2CÑ‹P 3½ Áaø‘ tüø?þQ à–ØÅÈ`pÈ#ÿ‡<Âa]ü#Q!ípá á`í óÔòí á`Rq` ¹PÐòÐá`퀻`g"8‚$¨6·ðျP‚,Ø‚-x üÐòòà–ðá€ôAáþ€ôAá€ôAá€ôAá€ôAá€ôAá€ôAá€ôAá€ôAá€ôAá€ôAá€ôfÑò–ðò0Oí`ó €æõ 5Ð߀ % áP °Õ áÐÝ€ € á° ð€,0OË í`ê€ ,pæoð4 á`á`áÐáÐáÐçÐò0OáÐá`í »`òÐòб üÐá – í@þâÐb ô` òÑòÑæÐòÐò@æpá æÐáÐáÐí`ô`í`í`æ ípípQ!í æ á áÐá æ áÐÑ!áÐòÐò`òÐáÐá0“ÑaòòP Àðdpæ ‹7ü¡Ð ¡•¡Ð ZÙ )púÐXàPˆáP À dÐòÐñæ° ÿ`ó ódí á æpípá0“æÐòæð’ð zá`á íí þá ·à‚œÙ™jÆ·ðá`á ·à™¨™šÅ·Àá á Q!í í`à¥ðòÐáÑáÑáÑáÑáÑáÑáÑáÑáÑáÑáÑáÑáÑáÑáÑáÑáÑáÑáÑáÑáÑáÑáÑáÐápí`í ÿpí`RqçpæP  ç0 ÂÇðÕ:pà° páþ0 Â`ÓðpÕ$ß5Õ ç-@Û /@âð  Þ€Ÿ­í`ípဢçápí@fš° ò`òÐá í`»Àaí°í æPò@ô ¥ðá@ápá íòòÐò`òÐápá`í”æ áÐò`òÑá á`á`ò áÐ*á`3ô0“í`á æ á á æ íòÐ3òÐá á áÐá Qqí`°Ê dòò–7+ •芮þ!`üàðýà@ üp ð1°Êðd òÿóp»ðó$æ`í æÐôòÐáÐòòò`añ  òaô`¹ š.û²³ ÿ`á@æ 0›³: 7·ðô1Dí áa  æ R!æ R!æ R!æ R!æ R!æ R!æ R!æ R!æ R!æ R!æ R!æ R!æ R!æ R!æ R!æ R!æ R!æ R!æ þR!æ R!æ R!æ R!æ R!æ0“á æQ! ü ¦à ¦ç° è »à`È@ç° (º  ¦àæ€ ËÒ0Oœ°ç° pß¿à€ €Ó0h° d†¢àæpàpà ¦d†¢è`çÐò` »pæ0“»ðáÐá ç` òÐ!b@ò` ”á`æpápí`í á`áá á”òòò@æÀÁæÐí0“ápQíí á í á ápíþpæòòÐ3iQòò À dÑ‹7+®ZiY¹†á ðüP^üp(€ð¥ z í`ñííòp ÿ`í Q3ÙaôòÐaòÐá`í`P ¹ `òl»°³žüÉÜÁ·ðá0“»Ê¨œÊ…Á·ÀòÐá íæ æp@òP @aòaòaòaòaòaòaòaòaòaòþaòaòaòaòaòaòaòaòaòaòaòaòaòòòÐaò ÿçå{æpà >€ pæ›ppÓËç0OË å» pÓ á° P¾ç€ Ë à° @TíP¾›p`•@fçjJfç`(Z¾ápå ò` ¹òòp ÿ`ô`á` áÐá`d@óP òÑá`í`á á þá í0R!æ`í Q1óÔ3ôí Qaá á æ`Q!á á í æ@æ0“ó”á`òÑòaòaÑòÐñ– z@Q±pã6°ÞýÝàí݆Á†Á‡Ñ†ñ‹  u@òÿpô`¹ðç Q!æ`áÐá á@í0“í æ  ÏðpííQòp ª¼áŸ| ü`íòp ^â9{ ÿÐaòPæ á áa  áþÐòÐí í`áÐòÐí í`áÐòÐí í`áÐòÐí í`áÐòÐí í`áÐòÐí í`áÐòÐí í`áÐòÐí í`áÐòÐí í`áÐòÐí í`áÐòÐí í`áÐòÐÑòòòÐ’ðàà@fæá`wœpâÓа Û€ ° Õ áá° ÓŠ€ìÈÛ° æ° œ°þÛ° à Ý0¿° áÖá ç lpåkà@fimiMfåká° ò · á á@á@æ ÿ`á‹pQ!a  á áÐòí á í`æpòÐ3í æáÐí áÐôóÐòÐôaÕSKøHP†: yh£~˜“p‡[ø‡p‡ps‡p‡p‡p`phy0y0y‡Ñh‡ãø€EP†?€ph‡pp ]¨µY¥ÕZ¥µ]øþyh‡ÑØ[õÕ_V‘º…h‡Ñ‡v‡p‡p‡p€ µ„p8Žp8Žp8Žp8Žp8Žp8Žp8Žp8Žp8Žp8Žp8Žp8Žp8Žp8Žp8Žp8Žp8Žp8Žp8Žp8Žp v0Šphy‡vy0‡ph‡ph‡Ñh£0Hà‡gˆ†gˆ†gˆ†gˆ†gˆ†kˆ†gˆ†kˆ†g¨¢Ý|†kx†3|†Ý¼†h¸†h¸†hx†hx†kˆ†gˆ†g¸†g8Ã*:Ã*z†hÎh¸†hx†kˆ錆kˆ錆gˆ†gØÍgˆ†ó”IØ…„Ú~‡v0ŠpXyh‡Ñþ zKøyhyÖ0Šp‡phy0‡vj y`ph‡ãyy0yhz‡„jy s0ŠvÒ0‡pp‡pshyÖz£y0‡ã0‡vÐŽp‡ps‡p‡pø€Rx= ƒp‡v0nÃÝk y0‡€„gÐ20yh£à‡p0 œÙ…‡ãyh‡ãh‡ãyyÖ‡v0‡(`Ѓ0Šp‡p‡p0Šp‡[Ööuß÷•~¸…h‡p‡p‡[€ßýåßöå‡[ày‡Ñyhyh£€þ -‡p‡p‡ph‡p‡p‡ph‡p‡p‡ph‡p‡p‡ph‡p‡p‡ph‡p‡p‡ph‡p‡p‡ph‡p‡p‡ph‡p‡p‡ph‡p‡p‡ph‡p‡p‡ph‡p‡p‡ph‡p‡p‡ph‡p‡p‡ph‡p‡p‡ph‡p‡p‡ph‡p‡p‡ph‡p‡p‡ph‡p‡p‡ph‡p‡p‡ph‡p‡p‡ps‡ps0 s ‡Ñ0z0yyh‡ph‡Ñm3£H‡jK£0jk£h‡Ñhyh‡„2‡ãhþ‡kkI …hh‡p‡ph‡psØ…Ò°„p‡psƒz‡Røs yyh£‡Ñy‡9 ‡v£hyh£yyyh‡ãhÒh‡p`p8Žp0Šp‡pv‡v‡v‡v0Šps0Šv‡p8Žph‡p0 s‡v‡p` yh‡ãh£ø€EP†?y s0Šph‡ph‡ph‡ph‡ph‡ph‡ph‡ph‡ph‡ph‡ph‡ph‡ph‡ph‡ph‡ph‡ph‡ph‡ph‡ph‡ph‡ph‡ph‡p‡p s‡°„gø2‡pþhy‡‡v]ø‡ÑÒ˜“p8‡y`ph‡Ñhyhyhy s‡Xe¨£hÒz0‡\ ’ÄVìÅfìÆvìdžìÈ–ìÉ^ì[às0 z0‡\ ìÎöìÏíÐíц[ø‡p‡v‡p0Š9‘‡p€ µ„£ ‡p s0 zz0£ ‡p s0 zz0£ ‡p s0 zz0£ ‡p s0 zz0£ ‡p s0 zz0£ ‡p s0 zz0£ ‡p s0 zz0£ ‡p s0 zz0£ ‡þp s0 zz0£ ‡p s0 zz0£ ‡p‡v‡ph›ph›vz0‡ph£I€„wqI€„wqHM€‡H„‡„‡ò__„ —„EqHXñEXqHò]¸†p0Šp s]àyh‡ph‡pXyhz‡v ƒ µ„‡pî s‡p0Šphyhyh£ s0Šp‡phyyhy£hyyy0y‡v£` y‡vyy` yhy‡vvss` £ syhyhþyy‡Ñ‡v ‡p‡p‡v‡phy‡vyy‡€`ø2h‡Ü…öi ‡ÑhyøK= y0‡Ñø‡vyy¸~‡v‡p‡vss £‡Ñ‡vyhxs søKx=€pÖyÒØÒfø†wø‡‡øÆæ‡[øy‡ÑØ…ˆ×øçøŽ§l~¸…hs0ŠvssØÐRøs‡v Ö Ö Ö Ö Ö Ö Ö Ö Ö Ö Ö Ö Ö Ö Ö Ö Ö Ö Ö Öþ0 s ph‡p‡p‡p0 Öy0yh‡Ñ0y0‡gØZû¹ß…¹Ÿû]Ø…[¸…]˜{¼§¼ß…[À{ZØ»¿»¿¹Ç{¹¿…]˜{½Ÿû] …]Ð{Zع߹ßZü¹×û\È…h‡p8ŽpsØ…0z0zKy0‡z1 y(…‡ps v Ös‡pp‡vsÐŽvyyhyyh‡Ñy0‡ãhyhsÖv˜‡p0‡ã0y` £hs‡vÒ‡ã0zhy˜‡v0Òhyh£ˆ–”þé!#/\»pòÂÉ '/ܳA–Ydi¥A–Ydi¥A–Ydi¥A–Ydi¥A–Ydi‘%I‹vZ‚ä’2=bäÉ '/Ü?sDé™Ëõh;yáˆR•gŽh8yá虓Ž*½páæµ“÷A’²?äµ£Žh»pòný«k÷.Þ¼z÷òíë÷/àÀ‚.lø°à[ÿÚÉkNÞ-Ä’'S®lù2æÌ·þ ׎h=sòÂÉ €=Käµk'/œ¼p­å…“®µ¼pòµ–N^¸ÖòÂÉ ×Z^8yáZË '/\kyáä…k-/œ¼p­å…“®µ¼pòµ–þN^¸ÖòÂÉ ×Z^8yáZË '/\kyáä…k-/œ<á´&O8ò„Óš<áÈNkò„#O8­µFT8ò„C=áTUíÈNkò´CO8U™ØŽ‰ò´#9íTÕNUíÈÓNŠíTÕNUæPeU­¥(O8ò´ó£„TµFTkT…#O;ò´#Ï.üPÕN8‹E8âš%´CÔ9D…ÓN8íÈÎ9óPEO8ò´#O8&†#O8í„ÓQí¤hŽ<á´SU8ò„Óš<æÈÓŽ<æ„#O8æPN;á´C•9­QUáÈQá´NUáTN;áH(O8”òŒdPŽ<áÈþÎ5’Xò?ÿðó?ÿðó?ÿðó?ÿðó?ÿðó?ÿðó?ÿðó?ÿðó?ÿðó?ýôøá~PŠ2ÑŽ<íõ<áPµ ?áPQá´QáÈÓŽ‰áÕQí„#9@Ì´N;DI(9æìÒÅ[|1Æk¼1Ç{üqÆüÜÂOkòD¼ È)«¼2Ë-»ürÅüÜÂQæ=DµCT¨•òA;æÕŽ<æÈŽ<íÈcŽ<áÈÓŽ<æÈŽ<íÈcŽ<áÈÓŽ<æÈŽ<íÈcŽ<áÈÓŽ<æÈŽ<íÈcŽ<áÈÓŽ<æÈŽ<íÈcŽ<áÈþÓŽ<æÈŽ<íÈcŽ<áÈÓŽ<æÈŽ<íÈcŽ<áÈÓŽ<æÈŽ<íÈcŽ<áÈÓŽ<æÈŽ<íÈcŽ<áÈÓŽ<æÈŽ<íÈcŽ<­ÍŽ<áÐÓN8TµN;ò„#a;DµŽ9T!ÿ<ôò´CÔóá´NkæÈŽ<æÈ#¡<çH(Ï9­É#¡<íÈÓŽ9òHhŽ<æ´#òòœ½„ò„#Ï9ò´N;Â!pÈCBæØ?$D”E„£*b Çøûr‹È#øk‡<ÂÔXâòG;äŽvÈ#χ<ÂñìpÈ#χ<„ó…ƒ<„ó…ƒ<„ó…ƒ<„ó…ƒ<„ó…ƒ<„ó…ƒ<„ó…ƒ<„ó…ƒ<„ó…ƒ<„ó…ƒ<„ó…ƒ<„ó…ƒ<„ó…ƒ<„ó…ƒ<„ó…ƒ<„óµƒÀ…ƒ<„Q„C;<[;X…9„C;<[8Ѓ9ÅÉC;ÈÃQ˜ƒ<„C;ÈC8E;…9„C;„C;<›9È=…9Èj„ƒ<´ƒ<˜ƒ<´†9´Ð…C;ÈC;Ѓ9…9„C;\;…9„C;þÈC;\;ÈC8ÈC8´Q„QìÂ?<[k,‚À‰ †%|€9E;\8´ƒ<˜<ÐC8ÈC8´Q´ƒ<„ƒ<´ƒ<„C;E8<[;ÈC;ÈCk„ƒ<˜ƒ<„Q˜À…Ck„C;ÈC;Q„ƒ<„C;ȃXÈC;\8´ƒ<„C;„C;<[;È=˜C;ÈC8…9„ƒ<´ƒ<´ƒ<„ƒ<„ƒh0üÈC8ÈC;ÈC4H?ìC]ðÃ?ðÃ?ðÃ?ðÃ?ðÃ?ðÃ?ðÃ?ðÃ?ðÃ?ðÃ?ðÃ?ðÃ?ðÃ?ðÃ?ðÃ?ðÃ?ðÃ>ðÃ>Ô>ü?ü>„Ë”Â3èȃþ9<?´†<´ƒ9ìÂ?H4†ƒ<´ƒ<˜Ã³…Q´ƒ9…9Ѓ<˜ƒ<˜ÃXÂ3ü\k„ƒÀíBøm%Wve‘ñÃ-üC8Ü.x¥Yž%Z.?ÜÂ?ȃ9ÈCk„ƒ9ȃ9<[Ѓ<”‚Ð4ÊC8]8]8]8]8]8]8]8]8]8]8]8]8]8]8]8]8]8]8ÈC;̃X´Ã³µ†<˜ƒ<„ƒ<´F8ÈC;„ó™=E8ÈC;\8Ðó™==<[;ȃ9Ѓ<´F8ÈC8Ðó™ƒ<´C8ȃ9ÈC;˜ƒ<˜ƒ<´ƒ<´þƒ<„ƒ<´ƒ<´ƒ<˜ƒ<„ƒ<´ƒÀµ4†ƒ<„ò…9ȃ9ÈC8´C8ÈC8ÈC;ȃ9ÈC;ÈCk˜Ã.üC8´C8˜ƒü?ì?ì?ì?ì?ì?ì?ì?ì?þì?ì?ì?ì?ì?ì?ì?ì?ü>ü?ü?àÃ?ìÃ?ÔC]ìÃ?ðÃ,‚2Ô˜ƒ<„ƒ<„Ã?´ƒ<„Qì?ÈC8´F8ÈC8ÈC8ÈC;<[;ÈC8ÈC;ȃ9ÈC8<[8ÐC8ÈÃ,‚2èÈC8ÈC8ȃ9E;„ƒ<Ü‚]„«¸Ž+¹–«¹ž+º¦«º®+»¶«»¾+¼Æë»Þ?E;„ƒ<Ü‚¼î+¿ö«¿þ+À¬ÀÞ?E8ȃ9ÈC=˜ƒ<„ƒ<„C †%|€<„ƒ<„C;„ƒ<„ƒ<´ƒ<„ƒ<„ƒ<´ƒ<„ƒ<„ƒ<´ƒ<„ƒ<„ƒ<´ƒþ<„ƒ<„ƒ<´ƒ<„ƒ<„ƒ<´ƒ<„ƒ<„ƒ<´ƒ<„ƒ<„ƒ<´ƒ<„ƒ<„ƒ<´ƒ<„ƒ<„ƒ<´ƒ<„ƒ<„ƒ<´ƒ<„ƒ<„ƒ<´ƒ<„ƒ<„ƒ<´ƒ<„ƒ<„ƒ<´ƒ<„ƒ<„ƒ<´ƒ<„ƒ<„ƒ<´ƒ<„ƒ<„ƒ<´ƒ<„ƒ<„ƒ<´ƒ<„ƒ<„Q„C;È=˜ƒ<„C;ȃ9\8Ì4¶Q´ƒ<´ƒ<„C;ÈC8ÈC;Èò]8ÈC8<[k<[8ÈC;ÈC;E8´C_EkÈC8E;ȃ9]8´C8´C8´ƒ<„C;„C;ÈC8:Àƒ„]8<[;=X8<Û.ðþ=˜Q„Ã"E;ȃ8ˆ=ȃ%|€9…9ÈC8´ƒ<„ƒ„ÈC8´Q„ƒ9´=„Q´Ð…ƒ<„óX;ÈCkE8´ƒ<˜C8Ѓ9ÈC8´ƒ<„C;ÈC8Hˆ<„C;ÈC8ÈC;<[k<›9´ƒ<„CíÊC8EkÈCkE;E8ÈC;E;ÈC8|€%<ƒAk<›%ðÃ?ðÃ?ðÃ?ðÃ?ðÃ?ðÃ?ðÃ?ðÃ?ðÃ?ðÃ?ðÃ?ðÃ?ðÃ?ðÃ?ðÃ?ðÃ?ðÃ?Ôƒ]àC]àÃ?ðÃ?àC]àÃ?ðÃ@Â3èE;?„ƒ<´ƒ<˜Ã.ðƒ<˜Q´Ã³µƒ<þ„ƒ<„ƒ9E;ÈC;<[8]8˜Ã@Â3èÈC8Ðóµ†<Ø.¬'2(‡²(2?ÜÂ?´†<Ø.Œ2+·²+¿ò+óÃ-ðQ˜C=ÈC;<[;E F)x=„ƒ<˜=´ƒ<´ƒ9\;˜ƒÀµƒ9\;˜ƒÀµƒ9\;˜ƒÀµƒ9\;˜ƒÀµƒ9\;˜ƒÀµƒ9\;˜ƒÀµƒ9\;˜ƒÀµƒ9\;˜ƒÀµƒ9\;˜ƒÀµC8ÈC;ÈC;ÈC;ȃ9Ek„ó…C;„C;„C;˜<´C8˜Ã³…ƒ<„ƒ9Èò„C;„C;„ƒ<„ƒ<„ƒ<´ÃÉC8Eþ;ÈC8ÈC8<[;„ƒ<„C;„ƒ<´C8ȃ9E;„ƒ9Ek„ƒ<„ƒ<˜=˜=˜еƒ<´Q˜ƒ<´C8E8E;„ƒ<˜ƒ<„C;„Q Fk„ƒ<ÜÂ?Ý"´†9Ѓ<”ÂÈC;\8…„E;„ÐIH8ÈC8ÈC8ÈC8ÈC8ÈC8<[;˜ƒ<„Q˜C톃<˜Ã³…ƒ9]8ÈCk„ƒ9ȃ„ȃ9Ѓ<„ƒ<„Ck„ƒ<„Q„ƒ< 9ÈC8ÈC8E;ÈCk˜Ã³}$<Ã<˜C8ȃ9B=ðC=üC=Ôr#·üC=üC=üC=üC=üC=üþC=üC=üC=üC=üC=üC=ü>ü>ÔC]ÔÃ?àÃ?ðC=ü>üC=ðÃXÂ3ü„ƒ<„ƒ<„Ã?<[;ÈÃ.üó…C;ÈC8´ƒ<„ƒ<´ƒ<ÐC8ȃ9„Ck\8ÈC8<ÛX‚2Ô´ƒ<´F8´C8Ü.|²‰Ÿ8Ч¸Š÷ë-ðC8Ü.¬¸ŒÏ8׸'ßÂ?„ƒ<ÐC8´†<„ƒ<„ƒ<„C †%|еƒ<˜ƒ<„ƒ<„ƒ<˜ƒ<„ƒ<„ƒ<˜ƒ<„ƒ<„ƒ<˜ƒ<„ƒ<„ƒ<˜ƒ<„ƒ<„ƒ<˜ƒ<„ƒ<„ƒ<˜ƒ<„ƒ<„ƒ<˜ƒ<„ƒ<„ƒ<˜ƒ<„ƒ<þ„ƒ<˜ƒ<„ƒ<„ƒ<˜ƒ<„ƒ<„ƒ<˜ƒ<„ƒ<„ƒ<˜ƒ<„ƒ<„ƒ<˜ƒ<„ƒ<„ƒ<˜ƒ<„ƒ<„ƒ<˜ƒ<„ƒ<„ƒ<˜ƒ<„ƒ<„ƒ<˜ƒ<„ƒ<„ƒ<˜ƒ<´Q˜C89E8œC ‡ЅóÑC8´†<˜C ‡QÐC8E8ÈC8ÈC;E8ȃ9ÈC;<[8E;ÈC8´Ã³µC8´Q„Cí†C;„ƒ<˜ƒ<˜ƒ„…9E8ÈCk\;Ѓ9E8´ƒ<˜ƒ<Ѓ9äÂ?´ƒ<„ƒ<„ƒ$˜Q´† †%|€<˜C8´ƒ<„ƒ<„Ã<´ƒ<˜ƒ<„ó…ƒ<´C8ȃþ9E8ÐC8=„ó…ƒÀµQ´†<„CkÈC8<[8´Æ³…C;„C;ÈC8ȃ9<›9´ƒÀµƒ<´=˜Q´Q´ƒ<´C8Ìó…ƒ<´ƒ<´C8ÈC8ȃ9ÈC8ÈC8|À"ƒˆA;ÐóIB]¤Ã?ÔC ̃ÝçC Ô>üC:ü>ü>üC:ü>ü>üC:ü>ü>üC:ÔE=ÔE:üC=ÔE:ü?üC=Ô>|$ƒQ´QüC8´F8ÈÃ-ðCkȃ9…9];ÈC;…9ÈC8´F8ÈC8ÈC;ÈC;˜ÃXÂ3è´†9ÐQ„Q„ƒ<Ü‚Gþ¿ôO?õ‡+?ÜÂ?„C;ÈC8ÈÃ-T?ø‡¿ø{2?ÜÂ?„ƒÀ…ƒ<´ƒ<´Qj”‚ÌC;„C;˜ƒÀ…Ð…Ð…Ð…@È(0Ü@á Ê —0\Âp Ã% —0\Âp Ã% —0\Âp Ã4gn`»pò l'¥¼páä…“N^;yíäµ ×®¥¼vòÌÉ3GO^8yáäµkŽe;yíä)•׎¥9yáäµkÙ.Ëpò̵ 'O)Ëp=•* ×Nž9záZš“×.\ËpòÚÉkN^¸´,Ãõl×r¿pò±””–%zòJy Ç²]Os,ÛÉ '¯Ð–„ƒ%æh‡9èŽv„Ã7áèI;äÑy„Ã- KÚ!v°$òhÇ<Â!p°¤= GKÒ¥È#ô‡<ÂAy˜Cáè‰9XzÈ£-iKÂA–˜ƒJ1GOÚ!v°ä–P†ÈÐs@‚¦«?j`‹^PÃ5¨Çâø±|ð£û¨?êÁzÔ „züõÀ?L‡{X`E­†è¡=|ÏøÌ¡y„ƒò0ÇKäq‹ô¤È€&ÑŽp áhG8ZbŽvˆ£G;Â1vÈãPÆ y„Cæ`þI;Â![à°…5ìa±D ~¤%ò¸b!YÉÞïÿG;zRsÈ#òGöd È#, GOÂ!p´$òGKÂ!p´$òGKÂ!p´$òGKÂ!p´$òGKÂ!p´$òGKÂ!p´$òGKÂ!p´$òGKÂ!p´$òGKÂ!p´$òKÂ!pÐÃí‡<Â!s(Eí‡9äaŽp´CæG;äÑy˜ƒ%áh=ÌÁ’pÈ#ò‡<Ú!p´ƒ%æh‡<ÂÑŽp´#òG;äŽv„£- ‡<ÚÑ“pÈÃáÇþKæ!v°D)áh‡<ÂÑ“pÈ£,¡‡9ÚŽvÈÃòG;Xb–Ðþ ‡<ÂÑŽ–ìâáG8Ú!EÈ#í‡8Ä zXÂíG8XbŽžÐÃò‡<¡–„£ò0G;ly´CæGZäÑŽp´Cí`IZä¡y(Eíè‰9Úᯖ¤¥%íG8ä¥È#ò0‡<Ú!p°¤ò0KÂÑŽp¤Eáø$ž¡2´#, Ç"öñ}Ôƒ50ö±÷a:~Ô£¨E­?êñQ ø@Ç |Ôã¦ûG=þQv€ø¨‡;P|ðãx†þÈ s´„-1‡9vÁpÈ#,AFذqÈ£`É7P0áòpàVÈ8ø€%€¡´#ò=ä¡yÜ{R2ùÉQžr•¯œå-wùËas™GiüK™ïœç=÷ùÏt”óãühG8Úy„ƒ,iK°§R|@á`I8ä–„ƒòKÂAy„ƒ%á ‡<ÂÁ’pÐCá`I8è!p°$ôG8XzÈ#, =ä–„ƒòKÂAy„ƒ%á ‡<ÂÁ’pÐCá`I8è!p°$ôG8XzÈ#, =äþ–„ƒòKÂA¥È£¾i‡<ÚÁsÈC)ò0G=äaŽž„ÚnI;|Ó–´£%í‡9èÁ’vÈ£,1=X–´CáG8XÒ…Ãòh‡9ZÒy´#í`I8äÑŽp_íKÂÑ’v„CáG;X"ä!äáþ!èA)äÁÚ¡'È`OJáæAÚ¡%Ú!Ú¡'Â%ÌAÚ¡'ÌAÂAÚ!X¢ä!èAÌAÌAÚA”Âä!ÌAÚ!ÌAÂAÚ!ÌAÂAÚAÌAÂAÂAÂAÚ!ä!-ÂA¡%ÌäáþÞè¡ä¡ä¡ä!äÁX¢æ¡XÂäÁZâ áô€ Z¢äáêøÁ£øaðÁ£ŽmLøÁtö¡*  ð¡Šê8 ÜAêáÒÁ À(À ¡`ªA>@žáêÀä!ä!þÁ7váä!ä!äaÀ4 Úà%N€Äá*`¡€%ÌAZ€>”áÀZB)¡'vAè¬ñ±1µqçváä¡Zb¶qɱÍ1ènáäÌ¡'ÂAÂAÂ!öÄ> %Ú¡'Ú%Â%Ú%Â%Úþ%Â%Ú%Â%Ú%Â%Ú%Â%Ú%Â%Ú%Â%Ú%Â%Ú%Â%Ú%Â%Ú%Â%Ú%Â%Ú%Â%Ú%Â%Ú%Â%Ú%Â%Ú%ÌA¡ä!ä!ÚÚAÂ%ÂAÌ¡ä¡X¢ä!ÚAèÁä!Ú!Ú!ä!Ú!ÚAÂA)¡ä!”"äÁZ"äÁÚAÂ%ÚAÂ%ÂAÂAÂAÚA̡䡡l¤ä!ÚAÌ%¡ä!X"Ú!ä!ä!”BÌ%ÚAÂAÂ%ÂAþæ¡ä!X‚Ì!þAÒÂA¡¡Ä`O,ÁXÂÂAÂ%”"z¢ä!ä!Ú!ÚAÚ%ÂAÚ!ä!üÅÂAÌ¡%èÁ|#X‚ÂAÂÁ7ÂAÂAÚ%ÂaZ"X"ÚÁFÌ¡ä!ä¡|#X"z"ä!>@žAÄ ¡%$Á£öLgêaø¡T Tj@êêêÁö¡ð¡šê¡ öªê¡LÇ`ªA>€AÈ€%Ú%ø!äA)Ìaþ¡%ÂÂÁþ@!äá@ÚA8áè¡ Xâà>žA@Ò¢ä!X"äáÎ1OõtOù´Iøáþ¡ÂAÂAn¡O5Q5èøáø¡%ÂAÂAÚAÚ%€ä¡<@ÂA¡Â!Nå¡ÂA”BÚ!äA)ä¡ÂA”BÚ!äA)ä¡ÂA”BÚ!äA)ä¡ÂA”BÚ!äA)ä¡ÂA”BÚ!äA)ä¡ÂA”BÚ!äA)ä¡ÂA”BÚ!äA)ä¡ÂA”BÚ!äA)ä¡ÂA”¢'ÂAÂ%”þ"ä!l¤æ!ä!|£äÁè%¡%Ì¡%Ú%ÂAÌ%ÚAÒ¢'ÌÂAÚ!äA)ä¡Z¢ä!X"ÌÚAÚ!ä!ÚÁZ¢X¢z"z¢ä!Z"XB)X"è!XB)Ì¡%¡%váÚÁX¢,!Z¢È€ð¡>ÀèAÚAÂAÚaä!ä!ä¡X¢|£Â%ÚÁèÁè¡Â%æ!Ú¡'Ú!l$X¢ä¡Z"”"z¢ä!Zâ%X¢Â%Ú!ÚA¡%ÚAÂÁä!Ú!Ú%ÌAÚAþÌ%Ú%>váÈ X"ÚêaêŠ êLg*gLçêaLg@ðÁtöa Ü!ðêÁ Ü!LgªAêà,Aô€ ÂAÂAÂáä¡Zbþ!Ú¡%–Ú!Z–ä@Ú!Ú¡@ÚAªA(à,áê ÂAÌ¡ä¡X"èÁr¡I<øƒA8„Ex„I¸„Mø„Q8…Ux…Y¸…]øøÁX‚Ì!\ø†q8‡ux‡y¸‡}øþ!”BÚ%ÒBÂ!èA,áÂAÚ¡þ'Ì!”¢%ÂA)Z"”¢%ÂA)Z"”¢%ÂA)Z"”¢%ÂA)Z"”¢%ÂA)Z"”¢%ÂA)Z"”¢%ÂA)Z"”¢%ÂA)Z"”¢%ÂA)ÂA¡'ÂAÌ¡'¡ÂAÂA)ä¡X¢¡¡'¡%¡%ÂAÌAÂ%èÁ¡äÁÚA¡¡'¡%ÚA¡ä!ÚAÂÁ7ÚAî¡%ÂAÂAÂAÌAÂA)Z"äÁz"䡿¡ä!Ú¡%”¢%ÚAÂAÚ!äáøÁä!Ú!AÚAġĀ%,áä¡Xþ¢XÂä¡è!XÂÂAÌAÂAÂAÌA¡ü¥ÂAèÁÚAÌ¡'¡ÂAÂAÚAÌ!ä!ÚÁ7ÚA¡ä!ä¡Ρ%”¢%¡%ÂAÚ!äÁ4-X¢ä¡ä¡ä!ä!> €AÈ ÂAÚÁ$êaLçØŽöÁ£< ê꡸º€ªÁLªê¡`ð¡ØAê¡à áô€ ÚAÚ%ø¡ÂAÂAnáÌA”B–äÁªa!äá@ÚA8aÚ¡ äáþº!¤á,áþÚAÌAÚ!Ú¡'vÁ‡mû¶q;·u{·ùáþA¡%va·‰»¸û¸›náäA)ÂAÂÁäÁZ"ö¤>@ÌAÂAÚ%ÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌÁ7Ò¢'Ú!XÂþè!èÁä!ÌAÂÁè%ÂAÂ%ÂAÚAÂAÂAÂAÚ¡%Ú%Ì¡%Ú¡%ÂAÂ%ÂAÂÁXÂ|£¡äA)ÂzB)ä!ä¡ä!ä¡XÂä!Ú¡%”"ÚAÒ"Ú¡%ÂAÚ!îMÚ!ä¡XâÞvá|cÌAÌÚ X¢<@ÂA)¡XâX¢Â|£ä¡z"ä¡ÂAÂAÚ%ÂÁ7ÂA¡%ÂAÚAÂz"ä!Ú!Ì¡%ÚAÚ¡%Â!-æ!X"ä¡ä¡X"è¡X"ä!äþ!äÁÚÁä¡ÂAÂAÚ%>`”AÈ zBêêè¡òaâß¡ê¡èöáâ9¾ð¡* :þ8€ìêö€Ü!ðáâ«Aê¡à$Aê€ ÒBÂäÂÌ!þ%¡ä€%Âa Â4@Äa@`è¡@ÌAè¡HÀ AôÌ¡%ÌAÒ"äán;îå~îé¾îsøþ¡ä¡ÂAnÁî?ððmûøAÌ%ÚAêÁä!ä!èÁ> Z"Ú¡'ä!8?þ8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?ä!ä!”B¡X¢8ùY"ÚÂA¡ä!ä¡ä¡z”"Ú¡%”"ÚAÂ%Ú%Ú¡'Ú¡%¡ÂAÌAÂaZ"Nç¡ä¡äaä¡X¢B^;yí虓Nž9yòÚÉ3×N=sáÚ…chŽÃp †ë¸ë_8yáÚµ“$¯<“bèѳô¡]Gy&ÍÉ ×Ža;yáÚ…k'/œ¼píä…“gR^8yáä…cN^8yáè…c®]ÇpòÚÉ '/þœ¼pé…“N^8yáÚ™£gN^8†áÚ14N^¸vòLÊ '/œ¼p3å…cØŽa;yá>”z¦GL»pò™“T/3¾z5¨Í{÷®F>j悔£ö_½Õõè‰ €º7~á“Ç R=}-Ћ@ÜêjöUðÒ3=dÌÉ Ç_;† wñ G]^5ÔÕ1À°› XˆGo‰¬Ì©ÃñÁÒ3=äµ›G=Csævýû`€H`ˆ`‚ .È`ƒ>a„ òs ?&ÉÃß.nÈa‡~bˆ!òs ?ò˜ÔŽ<áÐÃP; @<¥|0O8 ™#IádþNvò„ãc8>†ãc8>†ãc8>†ãc8>†ãc8>†ãc8>†ãc8>†ãc8í„#O8ò´#9ò„ÃP8ò´Ž<áÈŽ<æÈÓN8ò´Žò˜C<áÈŽ<í„C9Ô…#Šò˜ÃP8ò´ŽIá´#O;æÈŽž µN8ò hN;æ„#O;ò„#O8&ÍcŠò´#O;ò´39 ™#O8ôP×N8ôdŽ<á0ÔŽ<혳Ë?íÈcŽ<áXuíA<¥|O;áÈcuæÈŽ<íPgCíd׎<ædŽ<æ0=áÐÃP; ™#O8 µ#O;z¶#O;ò„#O;ò´þ#9ô0ÔCí0ÔN8ôdg’9ššCáȃ¢9Ô}°È.ÑŽ<í0 kôÔS5.SSC=*ÌL3k«íóÏ& @ ¶°¶Ix…ùȳD°âŽõTCÀ–<ó‡ô˜ÃP8ÿÈN;áȳË? …ÓN8(†#Iò´#Šô´Ã9ò„#O;òÌ#Ï(óí„#O8ò„#O;ÔíaâŠ/ÎxãŽ?¹·üNv»DŽyæšoÎyçÿÜòO8&ÉÓCáÈŽ<á €=–xÐŽ<í0u&ÉŽ<í„ÓŽ<áÈÓN8íÈŽ<í„ÓŽ<áÈÓN8íÈŽ<íþ„ÓŽ<áÈÓN8íÈŽ<í„ÓŽ<áÈÓN8íÈŽ<í„ÓŽ<áÈÓN8íÈŽ<í„ÓŽ<áÈÓN8íÈy´#íG8äÑŽp´CáG;ÂÑy„CíG;äMù(òCÚ!vÈ£òh‡žÂÑŽp´ƒ:í N;ÒŽp´ƒ:áG8äŽy0Ä$òhGvèaŽp0$ò‡<Âa’pÈ#Ô ‡I|sȃá`ˆ9¨cŽpÌÃ$ò‡IäŽvÔÃòh‡<ÂA…£òh‡<Â!p´ƒ!»ø‡9²³y„Câh‡èAK| æ`ˆ9äŽvȃáG8Úþ!pP'íG8Úy´ƒ!áhGvL’p´CáðQ8äŽvÈ#òG;äaŽpÈ£ 1‡<ÌApÈÃáG;䆴CáG8¨y„CáG8¨c†˜CæG8䎔z C8bIàÃf5°…9mQ›Õ6à ñ±}ÔƒêÜkøAzУû` >Vƒ,â ƒøAs˜cÿhGvLÂp´#ò‡bòÐÔíþò`òÐòòòÐòÐ aô æ áÀæ áÐá€"á`á í@í á@í íÀ` À d áÀá ò@ò0€4HòP€$ô ô ´9òHÔHò@›ò@›ò@ A ñ–  z@á á áÀá` ± ÿ` í@á á (¢'æÀáÀí æòà–ð  aò&!íòp u * 2u üÀíòp Ê  ê r ü`ò Qæ á á€d `  þÑò` aÔÑ>Ò>Ò>Ò>Ò>Ò>Ò>Ò>Ò>Ò>Ò>Ò>Ò>Ò>Ò>ÒòÐò`Ôí á á` Ñ ò ò Ñ("ôò`òò`í æÐò íí@áÐáÐ  aòò aí í áÀí íÀæ ô òô`òòô`íÀá íí á í á0í æ &Áá ·ðá æ á°ò@æÀd@ò`  á á þá áÀá áÀá áÐô`>í í@ô`òí á á@á æòíá á@æÀæó í í á á á Aæ í æÀæ á áÐá í (Òò Ï b` a–ÀôÀôÀóÀô ´I›ÔHò€Ô³ô ôÀ(´)æðð @í íÀÿÀá æ° ÿ 'í í á á á áà#íæ@í`°À ÐÔaò`ò P»ð q+·rÈ·ðþ&! µ sË·} oüp ü` ÑòôÀíÀH¥ðòÐ qšò`òòò`òòò`òòò`òòò`òòò`òòò`òòò`òòò`òòò`òòò`òòò`òòò`òòò`òòò`òòò`ò`ÔÑáÀí í æ@á á í íòÐòÐá íòòíò`òÐæí íÀóÐæþ@òÙaò>Ò ÑÙÑòÐ aòÐá íòò`òÐ Ñô@&!á`ò`á á í` Ñ>ÒáÐò P»ðæ@íÀ‹Ðò`ð@€T  í í í íÀí áÀí íÀ&òò`òÐá á&!á@á á íÀíÀá áÀíá@òÐá`òÐ ÑòÐòò&òíòÔaôà#í æ@á`òÐæ æ@ »ðdÀáÐò°òp³þ8K›ÙH AðÀô€$ôô@€„ Ï dÐòòü á í »Àíòí&!á@æ á á íííÀôí@` Êð`áá»à·mÑFu üÙ± íÑMS»ð òÐ òòH–ðá áÀáÐáÐá á í@á í@á í@á í@á í@á í@á í@á í@á í@á í@á í@á í@á í@á í@þá í@áà#æÐÙò Aæ á@áÀíí æ áÀí í Aá á á0&í@í@á ôòòòòò`í("æÐÔ í æÐá á á á á@áÐò`Ùa ò@æ á€"á á æà#»ðò`ò’ á€"bH–àí áÐò`í á æÐÔaí á æ ôÔÑ  ("í@í@á0í á á íí á á íáþ á æÐòÐòÐô`ò@á@æ@æÀáÐ íí æà#í ô`òòP À d Ñæ` æ@ š2 ôó@ð@ð@ô@ô@ð@ÔÙñð z í íÀü@á ·Àò>ÒšÒÙa Ñ Ñæ æðð zòÐá á áÀá ·ð“Né•né—Žé™®é›ÎéîéŸê¡.ê£NêŸÎ·ðáÐòòp ¥ë±.ë³Nëµnë¶Î·Àá á íòÐòÐþ ô ¥ðá@ E aô@æ á@æ á@æ á@æ á@æ á@æ á@æ á@æ á@æ á@æ á@æ á@æ á@æ á@æ á@æ á@á á@á€"òÐòòÐòÐÔÑá áÐá`ó@á æ æ á íí ô Ôòæ áÐòÙòÐòÐòÐò`ô æ áÀá áÐá á æ áÀá æ@í í í á á áÀþá íò€"óÐòÐÙ¡P òÐ í á ·Àò` –@í dH¥ðð æÀæÀíÀí a ÑòÐÙæ@íò`ò`ò`á ííòÐòÔÑ aÙÑòÙÑòÐò`ò ±òÐzÒ aòò`ô` ÑòÐò`óÐÔÑ ñ‹ u@  ±€dËõ`ð ô`ò@æ )ô`òÔAæÀôæä $hîâgÈ„k×N^¸áä…£g.×®[»r庵‘Öþ- sÝÚx+×®]sÝÚ¸kã‡RÊê gN^8‚òÂÑ3—ëßO A…%ZÔèQ¤I•.eÚÔéS¨Q™îú70=s¹¤nåÚÕëW°aÅÞúG°áÀ†íä… @ž¥(QªÜ¥òÖ®\»rÜ•kW.»ríÊrW®]¹@îʵ+È]¹vå¹+×®\ wåÚ• ä®\»rÜ•kW.»ríÊrW®]¹@îʵ+È]¹vå¹+×®\ wåÚ¥rW®[¹n庵Ke.»ríR¹+-¹äîʵ+×®ç»rÝÚ• %­]iíÊ…2×.`¹vå)Wå­(U¢Ìµ+×.`þvÉe—\vÉ¥\vÉ¥\BÊå¹nA)—]rf—h¡%¤[r¹%¹€É%Z6Ú%—[v&—Ú‘§!y §päG ·,ù ‚Ú(y‘ÇyÂi‡s‘'y‘'œvj'œvr"È‚̱2œÂ‘Çœp §pä GsÚ Gsä1§z‘ÇyÌ Gžpä '-y¨+Ù§yÌ Gžpä Gžpä Gžp>°ä=ÈhGžpZÄœzjhžp’ÇÿsèÈœzjGžy2§žÌ‘§sêu sè1Gsê1çHžÑƒ yÌõŸþp蕟Ÿ~â'Z~ª­ö~~âçŸj£å'ÚŸøùÀ’gþ`×vÚ g×]Àu÷]xã•w^zëµ÷^|óÕw_~ûí—Ÿ[þig×]ü5ø`„Vxa†æç–Ú GžtÃ1GsD À­R>àç~¢å'ÚjÿáçkÿáçkÿáçkÿáçkÿáçkÿáçkÿáçkÿáçkÿáçkÿáçkÿáçkÿáçkÿáçkÿáçkÿáçŸjâ'Z~þáç~þáÇ]kÿá'Z~¢åç~þáç'~þá\~þá'Z~à­ö~~âçkÿá'Z~~ª6Újÿáç~þáçþ~þáç~~âçŸjÿ±ö~þáç~þáç~~âÇ]kÿáç~À­6Z~þá\~Â1Gžvä‘d v"ƒxJù y‘§päiGžvvµ¾yµsè‘'yÒ5GžpäI7œÂ‘§Ú±>ÝpDmÇúv¬—§ûÃ(y‘'y´cáG8’®pÐÃzíG;äÑŽ|`ÊÐäÑŽ˜Ã Ç<ÒÕŽ„£¢jÇ@èay´c á‡9ÂÑŽp´ƒáhÇ@èaŽ˜Cá ‡9êaë}@ÏøÌ!pÈ#ÿGºÂ!ÊÃô0‡9Ú1tÉþÃí‡9äñAy˜£òø`ºäáHìBG;äy˜c í‡yÜb‹dd#ùHH:òÿ0Ç@Ì1z˜CáG8àK|àƒò0GºäŽtÉ#e”G8Ê(p”Qá(£<ÂQFy„£ŒòGåŽ2Ê#e”G8Ê(p”Qá(£<ÂQFy„£ŒòÇŽ2¦KíGºäay„#]òÈæåay”Së”G×ùAy”Qæh‡<Þ™My˜#›ò0G9å±Ny˜Cò0‡<Ú!sÜSæH—<ʸ«p„ÃþíG;ä!1¸E G8äÑQ™Cæ(c8Ú!pÈÃíH8Ú!ªpÈ#¢ ‡<Ú!s ¤òG;Ìy„CáH;Dy˜CáHW8äŽy´Cá‡9䎄£ ‡<Ú!ªÊ£òH—<Ì!vÈ#¢ò(§<ÂñHŽ„CTe ‡<>Q¥+òhG8äÑŽp ¤–‡<Ú12¸¥ G;ä1sXoá`¬9äÑŽ„£áU8äÑy´Cæþ ‡<ÒÅØpÈ#éšÇ9kz„ƒòˆ¨<Ú!ªp ÄÖkG8äÑsÈ#]áG8vÕŽ˜#ò‡9äaQ}ÀÏЃÌÑy¤ki‡<Úay„ƒ±áhG8Ú±«p¤Ké ‡<ÂÑyÐ#óHW8äy„Ã~óø$”Q2´CáG8þay´Cá‡9bŽpÈ£æH;ŽtÉÃò0Ç@ÚaŽ˜Cæ ‡9> eüa G;ÂÑŽpìjÕ¥xÅ-~ñ]üCíÕ..þq‡’·ø‡<Ìy´c áG8äޏŇ9DQ™c íþ‡<Ì1v„CæH;Â!s ¤á‡9ÒŽpÈÃiG8äaŽ´#ò0Ç@Úy˜c í‡<Ì1v„CæH;Â!s ¤á‡9ÒŽpÈÃiG8äaŽ„CÁH;Â!sÈ#¸ò0‡<Ì1šc á‡9äay˜CTæ‡9äay˜Cæ‡9äay˜Cæ‡9äaŽtÉ#ò0‡<Ì!sÈ#ò®<Â!sˆÊ1‡<Ì!sÈÃò0‡<Ì!pÈ#ò0‡<Ì1v„CæGpåy˜Cæ‡9ÒŽp Äò0Ç@Ì!pÈ#ò0‡þ<Ì1sÈà ‡<‚;s°žv8‡E‡v‡p2p Kø€t y0yy‡tˆph‡p‡pˆt‘‡pØ•vˆphy0‡vˆpsh‡ph‡p‡ph‡ ‡àjyy‡vyhQi‡]1‡v‡hQ yy0yQ1‡hyyy0‡v°žz0yy‡€„gø2‡t yX„p0y0zˆp‡p‡ph‡pØ•v˜‡p•à’‡v‡p•v‡t yhyhyh‡p‡p‡psøHx= ƒp‡v~hþQ1zØ•v0z0y0yhy0y0‡] s ‡t±Ÿ€`Ðy0zˆpˆp‡[9cêz¹…hyh‡p‡[@j©žêh¹…y0‡pˆz0yy‡p Køyy ‡ph‡ps‡p‡v‡p‡p‡v‡p‡p‡v‡p‡p‡v‡p‡p‡v‡p‡p‡v‡p‡p‡v‡p‡p‡v‡p‡p‡v‡p‡p‡v‡p‡p‡v‡p‡p‡v‡p‡p‡v‡p‡p‡ps°s‡p‡phyhzyh‡‡yz0‡yy‡vyg,sˆv‡p‡þvØ•v ‡pˆp‡pØ•ta¬v•v‡p‡p‡p‡p‡phyhzyhyy‡t Q yy‡vˆphxHQ yy‡hQ ‡v‡p‡vØ•v°y0‡v q y Køs‡p°žt ëiyyh‡p‡pØsˆvz‡0‡h‡\ ‡y0y‡tˆtˆtÙ•v‡v‡phy‡v‡p‡pHy‡v°žp•p‡v‡vˆ’‡pøH= s‡t‘IHsh‡p‚ø…v˜‡v‡vþ‡vs‡p•p0‡‡z`¬nð€y‡v¨h‡o€q‡€`Ð2ˆv~yHQiQ ‡vQ yH—0zy‡t™‡t‘‡vsøH†?€vyz‡t‘‡àÚªw£æ‡[à‡t‘‡àÚq_÷Ôå‡[à‡p yhyzˆvˆ y(…‡ps ‡p‡v‡v•p ‡v•p ‡v•p ‡v•p ‡v•p ‡v•p ‡v•p ‡v•p ‡v•p ‡v•p ‡v•p ‡v•p ‡v•p ‡]þI—p‡p‡vØ•p‡v‡v‡pˆv°Ÿvˆv‡v°Ÿp‡p‡p‡p‡p‡p‡p‡p‡p‡p ‡0‡hyh‡p‡p‡v‡vyyø p‡v˜‡p‡p‡p‡v‡ˆv‡v‡pØ•p‡v°žvs ‡v‡hyz‡p• yyhyzy0yQi‡0yh‡phshK‡0‡zz‡RøQ y‡t1zyh‡p‡vˆvˆp‡p‡p•p0Qi‡h‡yyyy‡þv‡h‡]iy0y‡v0yyH—p‡pH—p0Q ‡h€Žž`„ã í‡9äÑŽphdáhÇAÂÑŽpÈ#æ G84by„CáÐH;ÌÁ¤˜CáG8äazÈ)á@J8by„Cæ ‡<Â!v°ÅòhÇAÚþsh$òhÇAÂqvÈÃò‡<Â!vÈ£ù$”¡2„£òh‡<A¢ @@æF¤!Žj@ôG5д‡<è1 ˆ£8ˆ8ª!€vTƒhD5@8TƒÈC5|€$ÃÔ9ÈC8ÈC8üÃo …<„ƒ< …<„ƒ<„ƒÈiD8ÈRÈC;hD8 ÅHÂ.ü°…9ȉ„ƒ<ÜÂcØà â`êàò`úàa áöà-ðÃA´C8ÈÃ-a:áBaJáá-üC8 …<˜ƒ<Ôƒ9ÈC8ÈC8>ȃ%|€<„ƒ<„ƒ<„C;þˆ\;üF;üF;üF;üF;üF;üF;üF;üF;üF;üF;üF;D8D;hD;ȃ9„RÈC8ȃ9ȃ9 …< =„ƒ<´ƒ< …<´ÃA˜[„ƒ<„ÃA„ƒ<„R„ƒ<˜ƒ<˜ƒ<˜ƒ<˜ƒ<˜C;„žÈC8´ƒF´ƒ<ÐC8 [´ƒF„ÃA˜ÃA„ƒ<„C;„ƒ<˜ƒ< …<´ƒ9ÌC;ÈC8°…9ÈC8ÐC8D;hD8ÈC8´ÃA˜ƒ9ÈC8$ =˜ƒ<„ƒ<„ƒ<„ÃA„ƒ<´ƒ<„ƒ<„ÃA˜ÃA„ƒ<„ƒ<´[œÃ"ÈC8ÈC8´ƒÐC=XÂÈC8ÈC8ÈþR°…9ÈR„C;Ѓ9 ÅAЃ9°‰=„ÃA„ƒF„ƒ<„C;üF;ÈC;ÈC;ȃ9üF;D;°E8„9RÈC8ÈC8üF8´ÃA˜ƒ<„ÃA„ƒF´ƒ<´ÃAˆ<„Ã@0èÈC;„ƒ9ȃ%„ƒ< € @´C5€8D5@8ÈC8Ä7 À/ȃ84ÃÈC7@82@8Tƒ„C;„C5€XÂȃ9hD8̃F´ƒ<˜ƒ<´ƒ<´ƒ<˜ƒ<´ƒ<´ƒ<˜ƒ<´ƒ<´ƒ<˜ƒ<´ƒ<´ƒ<˜ƒ<´ƒ<´ƒ<˜þƒ<´ƒ<´ƒ<˜ƒ<´ƒ<´ƒ<˜ƒ<´ƒ<´ƒ<˜ƒ<´ƒ<´ƒ<˜ƒ<´ƒ<´ƒ<˜ƒ<´ƒ<´ƒ<˜ÃA´ƒ<´ƒ<´ÃA˜C;„ƒ<Ѓ9R„C;°E;ÈC8ÈC8„9hD8ÈC8D8´[´ƒ<´Ã<´ƒ<„C;„ƒ<„ƒ<„C;„Ã<´ʃ9„9„‰hD;°RÈC;ÈC8 Åo …š´ÃA´=˜C;ÈC;˜R„ƒ<„ƒF´ÃA„C;D8ÈRÈC8È=˜[„[ …<„ƒ<„C;„ƒ<˜C8ȃ9„C;ÈC8H8Ѓ9„C;„C;XB8ÈC8 è†%|@8þ´ƒ<˜ƒF´ƒ<˜ƒ<„ƒ<˜ƒ<˜ƒ<´ƒ<˜ƒ< E8 …<´ƒF´ƒ<„ƒ<˜ƒ<´=˜C8´ÃA„=„ƒ<´>å”U^™å–]Þ…Ÿ¾Ú‘§sä GžpÒ’ä1GžpÌ‘'…&R(yÌy(yÌy(yÌy(yÌy(yÌy(yÌy(yÌy(yÌy(yÌy(yÌQh"…Ú Gžpä Gžv g"…‘ǜpÚ‘g"…è1§pä G¡pÚ‘Çy‘'yÚ‘g"sè1Gžpä G¡väiÇyÚ Gžv‘'œ‡Âi'œ‡Â™(œ‡Ú¡Ç…ÚQ(œv‘'yè1GzÌ‘g"yÂiGsš(œ‰ä G¡‰ §yÌQ¨p& GžpÚ‘'œ‰Â‘'yÚ‘þ'yÌQ(œyÚ‘§‡Úy(yÌ™èœEäiG!⃔,ávÐ#ò˜ÈCè…´#òG;ÂÑy´Cáh‡<&y„C>昈<ÌÑ—p´#iG8Ú!v„£ò‡<Â!pÈ#ò0G8äa…˜CæG8ÚñpÈ#í‡9ÂÑy„£j‡<ÂÑ…xDáø$žñ2´Cæ ‡<$Ñù´# i‡BÚ¡vÈ£òhG8äy´£/æPˆ9äa޾´Ã}™H8äaŽHâz C;äÑ…ð£ iG8ÒŽpÐCí˜O;ÒŽÉ#ò‡BÌ!þpÈ£ðø€%ž¡ôÅò˜ˆ<ÌaŽ]¸ —¹Ôå.yÙËì‚áPH-wáKc™Éä%?nÁ‰„C!á ‡BÚ¡ÐC¥ø@_Ú!pÈÃòG_&އL$™H82‘p`‰EX‹°Ä a‰EXb–Xb-±ËZbˆ„%! K,±ƒ°Ä (;IXÖ²’°j-±ÄZV–X„$,±IÜV–À­$a‰E챃°Ä",! K,ⶈEí",±K –•j-±K,B‹øÀ"”¡2´ã!áX„<ÂÑŽpÈ#}1G8æ1‘p´CæG;äay„c"áG;äŽv<$òG;y„Ã#ù$žñ2´CáG8øÑy„þC!íG8Òy´CáG8äŽvÈÃò ‡<Â!sÈËPÆy´ã!áèË.NÖcÿÈAò?¶‹È£Ù‘™Üd'?ÊD¾?Úñp($ò‡<Â|ÐÃhG8Ú!s´C>á8Ç<ÚñvÌ£iÇ<ÚñvÌ£iÇ<ÚñvÌ£iÇ<ÚñvÌ£iÇ<ÚñvÌc"ò0‡BÂÑy„Cá˜H8y„Cí‡<Ì¡pLDíO8ÚŽvÈ£ò‡<Â!‰ÈÃí˜O8äù„Cæ‡9ŽvÌç@òhG8Òy´Cþ!æG8äÑz˜Cá‡9Úa…˜#òG_Â!y´£/á‡9ÂÑy„CæG;äq yô%íG;ä޵ã!áG8äÑŽ‡˜C!áxH;äaއ´Ã–0‡<Â!qˆõЄÚŽv˜#‘Ç9&Žv„ãçh‡<Ú!pL$í‡9ÂÑŽpœc"òÇ9äy„C!íÇ9äAZ¶#çh‡<Ìqy¨ò˜H8<"pÈ# ‡<tŽv„Ã#á‡GÎ1y˜#í‡GÂ!p($ò0‡<ÂÑy|ÏЃÄ…´Ãí0=Â!pÈ#þíPH;Ì!Ç›C!áO8…„C!íPH-åy˜ã’†Ä y´C!ü‡<Â!s($òhG8äy´CáPH;äÑy´#} ‡<Â!p<äÆy„CáG8yÜ"ÊÙ×þö¹ÿd~Üâí‡<Â![týéWÿú'Æ[ð#ò‡<&"vÈ£ =ÌQŠÈÃú"ä!¢¤ÂAÚá@Ú!䡤ÂAÚá@Ú!䡤ÂAÚá@Ú!䡤ÂAÚá@Ú!䡤ÂAÚ!ä¡ú¢ú¢þú¢¢¢äÁä!ÌAÂAÂA>Âá!ÂÚAà¡äÁä!ä!Ú!ä!ä!ä!ÚA!Ú¡/ÂA!ÌAÂAÂAÚA!ÌA!ÂAÂÁä¡ÂÁñÚAÚA>Úá!ÚA¡ÂA!ÂAÚ!ä¡ÂAÂúÂèA!ÂA!Úá@Ú!Âú"ä!ä!ä!Ú!ä¡ä¡"¢"ä!ä!ä¡ä!ÌÚA¢‚ ¢>@ÚA!jI!&BÚ¡/ÂÁ¢–èAÌA!ÚA!ÂAÂá!ÚA!ÂAÚ!"äÃþÂâÌA!¡ÂA!ÂAÌA!¢ä¡Ìá!¤ä!äÁèAÚAÂAÚá!Ú!¢¢ÂA>ÀváÈ@!¡Âa/"¢¡¡"&BèÁÚA¡¡ÂA&B!ÂAÚAÂa"äc>”AÈ@&BÂáä#ÚAÂA!ÚÁñ¡äÁÂA!ÀžA@Ú¡/ÂÌ!zŒ-ÛÒ-ß.ãR./æøÁ‚Ì!æ’/ûÒ/ÿ0ÙòþÂA!zd"ä!êÁþ>à!ÂAÂAÂA!ÂÁñÂA>ÂA>ÂA>ÂA>ÂA>ÂA>ÂA>ÂA>ÂAÚa&BÂA!ÂAÌA¡ÂAÂAÂÁ#¡ä!O!ÂAÚAÂAÂA!¡ÂÂAÌ¡/ÚA8ÛÌ¡¡ä!䡯ä!&B!&B>ÌA¡Âa"ÂA¡ä!Ú!ÚA¡¢èÁäa"„S¡¢ÂA!ÚÁñÂá!ÂAÂAÂÂAÚÌá!ÂAÂÁä¡Âa&‚ÂAÚA!&B!&bÚAÌ!ä ¤Ä>@Ìá!è!þäÁÂAÌAÌAÌA!¡/Âá!Ì¡¢"ÌAÚá!ÌA!ÌAÂAÂAÌAÂAÌá!ÌA!&â!¡b"äa"äÁÚA!Ì¡Ìá!Ìá!ÚAÌ¡Âä!äÁÂÚÁäÁä!<žAÈ@>,!&"b"ä¡ÌAÚAÌä!ÚAÚÁä¡´ä¡ÂA!ÚA¡/Ú!ä!äÁ> žAÈ@Ìá!ø!ä!ÂèAÂAÌA¡ÂAÚA!Âä¡ÂAÂÁäÁ#ä¡âäÁ$áô&B!&þ"úbÓ\Ï]Ó5.ùáþAÂá!vA]ç•^ëÕ^†nä¡ÂAÚ!ÌAÌá!@!JÁæ!ä!èA!&BÂA&""ä!"ä!"ä!"ä!"ä!"ä!"ä!"ä!¢äÁÚ!ä!¢ä¡äÁè¡ä!¢äÁ"&bÚ!ÚA!ÚAÂá!Ú!b"ú¢ä!äa"ÂA&"äÁú¢ä!Ú!ä!ä¡Âä!ÌA¡äa"¯ä¡äÁä£"ÚÁúÂþä¡"&"ä!Âä¡ÂA!Ú!äÁ#ÂAÚAÂAÂA¯"¢ÂèAÌAÚá!Âa"æÁ#ÂA,!èAÚÁÄ ä¡<@–K,a$µ$Á·A,KÁPËÁ,ë¶ÁÁ±·A·,a¹$ÁÁ,ËA– ±Á²,ak$a$Á²,a$ÁÁ,KÁ,KA,KA,ë¶á,áþ€ ÚA¡ÂaÂ"äÁÚá!Ìá!ÂÌ¡"ÚA¡ä!þä!&BÌA&BÂA!¡ÂA!Úá!>`”áÈÀä!ä!þAÚAÚá!Úá!ÚA!ÚaÚAÂAÚÁñÚ!äÁäÁÂÁèÁ>À”¡@ÌAÂAÌA!Ú!äá6†ûØÿY™)æþ¡ä¡ÂAn¡’#Y’'™’3æþ¡Âä¡ÌAÂAÂ!èA,áÚ¡/Âa"ä¡äÁÚA!ÚAÌAÚAÚAÌAÚAÚAÌAÚAÚAÌAÚAÚAÌAÚAÚAÌAÚAÚAÌAÚAÚAÌþAÚA&¢–„3ÚAÌA!Ú¡/Ú!àá!ÚA!¡"ÚAÂA!ÂAÌA!ÂAÌ¡ä¡ÂAÂA¡b"¢"Úá!ÂAÂá!ÚAÂAÂa"¢ÌAÂaÚA¡ä!ä!ä!"ä!ä!ÚAÂA>¡"ä!ú"ä¡""Úá!ÌAÌA!Ì¡ä¡ú"ä!&"ÚAÂAÂAÌ¡ä¡ä!ÂÂAÂA!Ìa""AÚA!Ú ä,á&â!¡ä¡âÚA¡ÂAÂÁ#ÂAÂAþ€AÈÀä¡b¢ú"ä!äÁ#úb"¢ä¡ÂAÚA!Ìá!ÌAÂAÚA!ÌÂA&"äÁ>€AÈ@!ÚA!þÁä¡ÂAÂAÚ!&"<"ÚAÚAÂa"ÂA&B@â áô ä¡úb"ä¡–v¡’KÜÄOÅSüaøáøa"ä¡þ–vAÅgœÆkÜÆ1†nÂAÚA!Úá!ÚA!€ä¡> ÂAÂA!ÌAÚA!ÌAÂAÂAÚAÂAÂAÚAÂAÂAÚAÂAÂAÚAÂAÂAÚAÂAÂAÚAÂAÂAÚAÂAÂAÚAÂAÚA!ÌAÂAÂAÚAÌá!&"Ú!ÚÁèAÂAÂÁä!"ä!ä¡ÂAÚáÂå!Ïä!ä¡ÂAÌAÂA!ÂAÂá!Ú!ä¡¢Âä!ä!¢¡¢ä!ä¡ä!"è!äÁþ¢¡ÂA!¡ä¡ä¡¡¢Ìá!ÂA!ÌA¡äÁèAÂAÌAz$ä¡ÂèAÂá!ÚAÌAÌA!Ì¡Âä¡äa"äÁä!Ú!bÚ!B èAJáÚaDÚ!ÌAÂA!ÂA8Û!ä¡ä!ÌAÚÁä!Ú!"ÚAÂÁèÁä!ÌA¡ä!ä!ä!ä¡Âä!ÚA!ÂA!&BÌAÂá!ÂAÂAÚÁ¯䣢¡Â#<@”áÄ@!Ì¡ÂÁÚ!äÁÎa&BþÂA!&B¡ÂAÌ¡ä!&â!`‰hÔ!ò0ÇNÂÑŽ„ƒæÈ…&HÁ Zð‚Ì 7ÈÁzðƒ ¡GHBîâ; =Ì‘‹ºð…0Œ¡ gHÃÞ‚ò€I8äWµCá=äa‰È#í‡9Ú1–pÈÃòh‡<Â!sÈ£ò‡<Ì!vÈ#ò0‡<Ú!pÈÃòh‡<Â!sÈ£þò‡<Ì!vÈ#ò0‡<Ú±“pÈÃáh‡<\µ“vð¤;iG8Ú!pð¤; G8vby„CæØI8äŽvŒ%< LäÑy˜CáhOÚ!˜È#òG;äŽvÐÃá‡9äaŽpì¤ò‡<±sÈ£òG;äў̣siOÚ±“pÀ$òÇNÚ±s´CíØ‰9äyÐÃ< LäŽv„c,íLÂ!pì$ò‡<±“pð$; OÌ!s„Cáh‡<“pX‚'áhvb È£áG8æ˜ì¤ò€‰<Â!sÈ£cþ1‡<Â!pŒ¥áhG8äaŽpÀd'áG8äyÀD0 ‡<Â!pð$íG;vÒyø'í‡9`²“pÈ#ò‡<Ì!pð$ò0G8äÑz˜£€Ä3ô@†vÈ£òh‡$Ú!pÈ#æ ‡<±“pÈ#< ‡9äÑy„ƒ'æ‡9ÆÒŽp˜c'æG8äŽv„c'æG8äñH`‰güò€ÉNÚŽ±ì¢†Ð®t§KÝêòãÿÇXvQÝîz÷»àþ/?nÁy´c'01‡<ÌÁ“ÐC¥ðÀNÚ!˜„£á™~÷Ëßþî¤á‡9ê±W™CáG;Â!v„&ò0ÇNÚ±“v„£< OÚ!v`)òh‡<Â!vì¤áG8xby„C® ÇNÂAy´ƒ¿0™G8x“˜c,æG8`by„Cá‡9䘄c.á G8äay˜c'í€G8Ú!vÈ#< ÇXæÑŽ´Cí˜G8äy´Cí‡<Ú!vÈ£áG;±“pì$ò‡<Ú1—vì¤òh‡%Â11Ôƒ¥ø@;äÑy„CáhGþ8äay´#ò‡<Ì1y„CáK8è!pÈ&¥–‡9xÒž´C>”G8èy„c.íLÂ!sÈÃòL±WÉ#òÇ\ÚŽ„ƒòhOÌ!Xâz ƒ<ÂÑy˜cò=ÌÁ“pì$ò‡<ÂÑŽ±˜£òp•<Ú!pÈ#±ÞI8xÒyÐÃô0Ç$ñŒ?Á0‘G8þ±“p´#íG4$! KH¹$þAsÈ£< =±“pð¤€Ä.ô˜È#ò0ÇNÚyܺ@ºÐ‡NtèÞ‚;iG8äq‹¢;ýéP:Ñþoñy˜£æØ =Ì!pÈ# >,ñvÌ£ò0Ç\“p´CáG;ÂÑy„CíG;äy´#íG8äÑŽp´CáG;ÂÑy„CíG;äy´#íàI8äŽvð¤òOÌ!vÀc'í‡9Â!sÈ&áØI8\%s„Cáh‡<Â!pÈ£ò‡<Â!sÈ£si‡<Â!sì$íØI8äŽv„£òG;±s„£;ña;vÒy„£òhÇXÂApÈ£òÇNÌ!v„£áhOÚ1s´c'áÀí á á ’óþÐò Ií áÐò0Áí æÐ¥Ö;Ñôò;òòò`í`‹ íí d ô` `ò`;sòÐcííòòí<òÐò`òòíÀíò`òí á á æÐsÑá á æ°æ0á0á á í0áÐáÀáÐ$á@á°íííÀá ísñ z@ò`þ<ñá æ@<± ‹`Aü`'øð;aòæ@;Ñ;òæ ` Ï Ðá á@òò`æ° RŽâ8Žä˜Aüp ÿòà»PŽîøŽð8tüp ü æ@á íÀí°°¥àò`á á á í°í áÐò;í á°áÐò;í á°áÐò;í á°áÐò<sò<ò;aòòÐá@ca;al7¯¼vá ¶ G‡ò '¯Ýȇáäµ '/\AsÛÉkWМ¼vóÚ…“×.\»pÃÉk÷°]ÇŽá †kN^;sò™£'/ÜÈvÛÉ)/\Á‹žé!#Ïœ¼væ,µ“n^GsôÂl'/œ¼pòÌ…ëh‡#;š“N^8yá¶›÷’²:d¨Ê ÷/\»‚áÚÉ{&‰¿ <|þ÷¯Þ?yáÚ ÷ðØ6“§î$`z˜{hNÕpòn…\øpâÅGž\ùræÍ?‡½9-~TÃÉ»%]þûvîݽþÖ¿‚áÚ¬gN^8yáУgéÕ‚áä…k®`;yá¶“'œ‡Ú‘'œ‡Ú‘'œ‡Ú‘'œ‡Ú‘'œ‡ÚyÈyÂ)È¢ j§ päi'œ‘ä §yÚ™§yÌ)¨‚‘'yÂ)(y‘§yÚ‘ž‡F’§‚™§‚Ú¡'¢F*(œp IžväiGžp ¢'œ‚Ú1‡žpä Gžp6”§ŽÌ‘ÇœpÚ‘§zÌi'œ‘ä § pÚ §y‘'yÌ)ˆžp 2§pÚ‘§‚F §‚Ú)ÈzÌ‘§sÚy¨‡Â‘'yÚ)ˆsä Gsäi§þ£pÚ1gzÌ)¨2à³äy‘'yÂiçyÚ)h¤‚Ú‘'œ‡Â‘'œ‚Â)ÈyÌ §p 2ç¡p Gsä1§ zÌ1§‚Ú!ó¡pÚ §yÂi'œvÂi'œ‚Â)· pè1GsÂi'yÂiGžv çƒEžÑƒ yÚ)¨K‘§'åiç¡vÂy(yÚy(œv ¢ª pä)œvÂÙ°yÚ‘'sä1çKžÑƒ sä § äi'œŽ¶‘äŸÏ<àgh~êá§ v‘‡ª‚Ú‘ç˜ §š,yFäigž‡Â)Ü]Œ#»l³ÏF;mµ×f»m·ß†»¸]ø þ§ pw‰;o½÷æ»o¿ÿ6›Ÿ[ø)Èœ‚¡§ v €yJñ@s ç¡päi'yÂi'y‘'œv‘'yÂi'y‘'œv‘'yÂi'y‘'œv‘'yÚy¨‡F Gžpäi'œ‚ÌyÈœ‚Ì‘g$s:2Gžvä ç¡v Gžpä Gž‘Âi'sä Gžp jÇy‘§‡Ú g$sä ç¡päi'y‘G8ÒŽ‚„ÃôèH;äÑŽ‡´#ò0‡<ÚŽ Q¥#í‡<ÌÑst¤òhÇ<Â!‘t¤æG8Ìñp$õ UÂÑ‘p˜Cá(H;þˆªtdòhGAæ!†zÈ£G8èÑy˜ƒæG8ä1’pÈc$òI8äÑy´£ ídžÚŽ‚´£ áG8ä¢Ìã!í‡<Â!pÈ#í‡<ÂQsÐCáxˆ9èaz´# ‡<Â!p´CíÇCÌQ‡´£ áÇH òH<ãbh‡<ÂÑŽs,BíxH8Ú!pÈà G; Òy„£ # ‡<Ì‘Ä ÇHäŽvÈ#ò0GG> eüA ô0GAÂñp<ÄIíx†$øñ~üƒŸùG=ø!pt$í‡9 Ža Ýø$žþñ´#ò‡<Â!v`‰gü 9ýG8äÑŽ‚´CÏ Åf€³™ð£üG8äÑŽpÈ£ò¨†„ÑŽc¼ò0Ç =à!áG;äy„C·N¨E=jR—ÚÔ§FuªU½jV·ÚÕ¯†5pøq‹´#ò‡ss s s y6‰‡‡‘0‡°`Їvyy‡‚y¸…*7þã75þ~¸…‡‚y¸ä—þé ~¸…› yhyh‡‚ø(…°©ph›j‡yp’‚0z‡v(s yh‡‚0z‡v(s yhyˆpòµ '/œlN^8yáä…{ØN^»…íÂÉ3Gog;yíä…ÛN^8y Ã=l'/ÜNyá䙓N^¸vòÂÉk7¯ÝÃpáäµ ·3ÜþÂpòÚÉk®]8yáä…{ØÎœ¼vòÚ™“g)œ9yæê‰©'¯”‡p;Û™[Øng;yæ† 2œ¼p ÃG/°¼v ÃÉng8yíäµ gŽô‡áälna8záÚ…[ØN^;s;Û…k®]¸‡æ~(µëæ,Ž9‹,dN;ò„’<á,’<ô„C9í˜#9ò„#O8ò´³P8ò˜ó9ò´#O;ò„#O;µ#Ï‹<óဴÐ?á´N;á´^xáÈN;ò„ÓŽ<æ”Ø‹<óGô˜#O8;…C9¹ü³%—]zù%˜aŠ9&™ešy&šiª¹&›mþ¢¹Ë? …C9¹¸y'žyê¹'Ÿ}ú¹Ë? …#O8 •'O8ÐC%„ÓŽ<áÈÓŽ<á€dN;µ³P8ó€´P8ó€´P8ó€´P8ò´³=á<ÔÎB …#O8ò˜ÓÎCí,dŽ<áÖÎBá´3Hò„#O8ò´³P8ò„#O8íÈ’<æ,ÔÎBæ„ÓN8ò„óP;ò„#O8ò„ÓÎBæèQŠÈ# 1‡<Ú!s<¤áhÇBÌ!vÈ#òhtÌ!pÈ#ò‡<Â!pÈ£á1‡<Âñpì$òh‡9ÒŽpÈ#æ ÇN@y”' i‡<@2pÈ#ò‡(åÑŽ…|ÊЃÂñs,BáG8ä …CáØIy@"pÐÃò‡<Â!,$; =Ì!s„CXÄ3þ@sÈ#òhÇ?ÒŽpÈ£óh‡<Âñv,$þ iÇBÚŽv<$ò0t> `èáh‡<Â!s,¤áÇ-0(ÙÉR¶²hº?ÒŽpÈã–ý,hC{Á[üCíØI=Ì!pÈ#X”%>Žy´c!áG8Úy„Cí0G;äÑŽ…´c!áXH;Ž…´CáL8äy„$;1G;Ž„Cô0G8@²s,Äò(ÏBÚy„£ò‡<ÚŽòÈ#òh‡9Ú!vȃáhÌ!pÈ#ò0G8äaŽ…„c!á‰<ÚñpÈÃòtÚ±pÈà ‡<Â!p´#í‡(åÑyÐÃþ ‡<±s„CáG8æ!v<$ò‡<ÂÑy´C Ž9äŽv<„áHcŽv„£ G;äއ´#íL8äIÈ$ô‡äAK|  ÇBÌÑŽ…„$ô0G8Òy´c!í‡9äŽv©;i‡<Â!p€d!íG8䎅„CáL8„CæG8äaއ„£ò0G8Úp”GáG8äy„ã¥xFÈ’p,dò=ÂApÈ#ò‡<±pÐ#ò(9äÑŽy„ã!íxH;äÑŽy„CáG8Úv˜ã’þx†È@y´CíàG8Ž…„£ ‡<ÚŽ…´#òHy„Cá ‡<Ú!v„Cæø€$ž¡˜#0 ‘‡9̱ Ñr¼ã¿?nñÈ#ã»ø8ÊS®ò/ñãühG8Úy„ƒ iÇB@y”âíG;y˜ƒæ G;sÈ£æG8ÒsÈ# i‡9Ž…„ã!ò=ä’pÈ# iG8äy„c!áðº9äÑŽ…„ã!áh‡<Âaz„CæXH;by˜c!í0=ÚŽ…´CæG;äy„CæxH8¼þvÈ#^ŸþG8ÚŽvh^áhG8äy€ä!íXH8èÑ͇CáhG8Úy„CáG8äÑŽ…´C )½<Â!v„c!á G8äay´cH8@¢ùp<¤òhG8äy„Cæ ‡9䎅´CáG8ÌAs,¤áXH;äÑK„CíXЃ<”´ÃB´C8,D;„ÃC´ÃB”G8˜ƒ<„ƒ9,D8,D;ÌC8ÈC8ÈC8ÈH„ƒ<„ƒ9,D8ȃ9ÈC8ȃ9,D8ÈHÈC8ÐC;„ƒ<„ÃB„ƒ<„C;ÈC;„ÃB˜=x];ÈC8ÈC8,D8ÐÃC„ƒ<„ƒ<þ„ÃC´C8ÈC8ÈC;ÈC;,Ä,‚2è„C;,D8XB; _;ÈC8,D;x];<„9˜ÃB€D8”G8ÈC8€ÄC´ƒ<´ƒ<„ƒ<„ƒ<Ѓ9ÈÃ@‚2Ô€„<„ƒ<üƒ<€„<´ÃB´ƒ<„ƒ<´ÃB„C;,D;,„9ÈC8ÐC8D8ÈC8ÈC;ÈC8,„9À+yÎ9'yð’çsäiGžpä1GžsÂi‡ pä G¼Ú‘çyÚ‘çœp ÇœvÂ1§pä1§yÂi'œvä1–À}Û9þ'œvÎ Gžs‘'yÚ §pä §pÚ ÇœvÂi'œvÂÙ7œvð’'œv‘§pä Gž$Qæ1Ú!Èœp©³pÚ‘'œ'é Gžvê ‡ pè1çIzÂy2yÌiçÉvä ‡ pä1‡ ,Qæ2ä1§NsÚ©3yÌ‘§'Í‘§pê §Cé1§‚”ÇK”Ñ€vž$0œ:wñÏï¿\ðÁÿÙåyÚyrÂoÜñÇ¿åŸp”§‚‘'y €y,ù€À'Ã!ˆs2Gsä GžìÌ‘'y`—'œ'ÍiçIz‘Ç‚ÌiGžpä Gsöþ•'y‘Çy‘ǜvÌiGå!Psäi‡smGžpÚ‘'»v5Gžp$ÈyÂ! sä ‡ sÚ9´pä1GžpÚQ'sìK’‡9äAs„@ò0‡<ÌA y´Cæ ˆ9$p´#ò0äayÐÃòhAÂ!sÐÃò ‡9Ú!s„ƒ@òÈN;äaÉ£O G;žÑÃò0G;by˜£ô0‡<ÂA=)òäay˜ƒæ H8è‚„£b ˆ%>ð¤v<©1AÂA ‚´ãIíG8%pÄáÈ#AÚ!p$òþ‡<ÎQ'sHáxR;Ò‚´Cᨓ9äÑz˜ƒ í8”9äŽ:µãIzR8>P `è áhÇ“Žv„ãIáG8êÔy´cá H8Ž:…ƒ í H;æŽ'…Qæø$ž¡2$òÇ“Â!pÔÉòhG8bz„Cá¨Â!vÈÃò‡<Ì!s|ÏÐCøÕy„ƒ áÇ- P” ãáÇ-þÑŽpÈ#ò¸Åw Q‰N”¢µèE1šQn”£õèG»Ã[üÃò‡<Úy´Cí Hè!R|€@áxR;žŽ'µ£NôhGþèÑyì‹ áG8þHpÈ#ôz´ãPæ ‡<òi‚„Cí H8dy´#1=y„ãIí‡9äŽ:™Cá H;äÑsÐCáG8äsÐQíG;äÑy˜C ‡<Úñ¤vd‡ í‡9äs„@ò0‡<Â!sÐãIí‡<ÚQ§p$ˆ2Ç“Ì!v<©ò0‡<Âayˆ á AÌAvÈÃòh‡<Ú!sÐãIá‡9äŽv$ô0‡<¨p<‰@iRŠ(ò0‡<‘GsÈ#ò0G;Âa‚ì+òh‡9þäÑŽpÄòǾÂ!v˜ƒ íÇ¡Ì!vÄò‡<ÌA sÈ#í‡<ÚAs´Ãi‡9êy˜Cá¨S;Ì!v„CáG8Ì!p<É‹PÆÈ@pDO ‡<Âñ¤v„£á^Ú!p´ãIáG;y„ƒ áG8ÚŽ'…£O G;äÑy| »øƒäÑz„ƒ ’G8Ž:…ƒ í =Â!v„£áG8äy´ãPô0Ç,¡Œ: ò0G;äÑ‚„ƒæÈH1iMošÓöôGoÁs„æÈŧQjU¯šÕŸÞÅ?èþay„£Ù—<€…Xâu ‡<Ìy„ƒ íG8äŽvȃ@òG;äÑy„£ò‡<Â!vÈ#òÂ!p¨Ná‡9ÂÑ‚˜£áG8žŽ}µƒ ¢‡9ÚAz˜ƒ áxR;äÑy´CáG8Ú‚ÐÃòG;ÂQ§pÈÃíxR8èy´ƒ  ǾÂñ¤pÈÃ1GÂ!p<©á8=ÂA y´Cí¨S8Ú!sÈ£òÂAv$òØAÚ!z„c_ò0AÌQ§pÈ#ò˜7AÂñ¤vÈ#í žÔŽ:…£ˆ ‡<Â!þp$û’‡8Ú!zÈÃ0G;äÑy´CáhG8ÚÉ£ò=Ìñ¤pèIæÈc;èaŽ'HzR;ä‚„Cá H;òHsÄáhÇ“ÂÑŽ'…CáG8äy´CáxäÑy´£NíG8>P `è áG8äI„ƒ í H;Âaz¤‡2‡<ÂÑy„Cá H;äA y´£Nç‡<Ì!p´ƒ áG8ÌñH<ãdAÚy„ƒ í  Ú!ä¡ ÚÁèÁ衞$ä¡ÂAÂAÌäá,áôÂAþÌAÚ!Ú¡Nv¡ÕP0UpWnáä!žd6­mðq0uð£øáø¡NÚ!ÌAÌáI€ä¡<Ú!ä!èáIÚ!ä!ä¡"äÁž$ä!äÁ"䡞¤ä!"bÞÂAÌ‚@ž¤ä!ä¡äÁäÁä!æ Â@ê$ä!ÌAÚ!ò(ä¡¥ä!"¢¡NÚÁä¡Ì ÌAÌÂAÂáIÚ!ä@ ÂAÚADÂA ÚAÚÁäaÞÚ!ž$ž$¢ä¡ÂþÁä¡ä!ÌAÚ!Ú!ä¡äÁä@ä¡ê$¢ä¡ä¡ÌA ÂAÂÁž¤ÂAÚ!ö%Ú!ê$ä!ä¡ä!ž¤ÂäÁäÁê¡È€ä¡>ÀäÁä¡Åä!ò(ž$ä!¢ÂAÂAöEÚ!ä@ÂAÂ@ÂAÚA ÚAÂAÌAÚ!Ú!ä!ž¤Âä!ž¤ ÚáPÚÁ"|1ä¡ä¡ÂAÚ!â!ô@ ž¤äa"DÌáIÂAÌ¡äÁÚáPÚAþÚAÂAÌAÌA¡ä/ò¨ä!êä,!ô€ ä¡äÁä¡äaÞÂáIÂAÌA ¡Å„  ÚAÚ Ìá$aþêÄäa_ÂAnaes6i³6mÓ¢náÚAÚ!äán38…s8‰Ó£nD êÁä!ä!€ ,áäÁ%ÚAè!¢ä!ž$ä!ä¡ê¤‚@Â@‚@"ÚAÌQÂAÌ¡¡ä¡ä¡‚ÌÌ Ì¡ä!ÚAÚA¡¡ê¤ž$ä!ä!ÚAþÂa_ä!ÚA ÚáIÌAÂ@’ªNÚ Â¡NÌ Â¡Â¡ä¡è!ä¡Â@"ÚAÌáIÂAÂáI ¡äÁäÂQèÁä!ždÚAÂA¡ä!ä¡¡äÁäÁž„@ä¡äÂA ÂáIÌAèÁä¡ÂAÂAÚAÂAÚ Â¡ä!EÚA Â>àIÂ@ä!ä!äÌ ÂA  Ú!è!""ä!äÁä!"äÁä¡ä@ÂÚAÚAÌáPÚÌAÂþAÚA¡¥ä!"äÁDÂáI¡èÁÂAÌ ÂAÂáIÌ Âá áþ€ ÂAÚ!äa ̡NÂAÚ Ú ÂAÂAÂÁ䡢Ş$;ä¡¡ÂÁ¢ÂAÂA>žAÈÀžÄäÁä@ä!ò(Âä¡ÂáP ÂAÌAÚ!Â> €A ¡N ²c¸#h…vh‰¶höh‘6i•vi™¶iöi¡6j¥¶iùáø@ä!;vaj¹¶k½ökÁ6lÅVlùáøÁ¢ä!è þÚ €ä¡>€ $Âä¡ä¡ÂA  ÂáI$ö%Ì ÚÁä¡ÌADÌ ÌAÚ!QÂÁä¡¡òÈÂä¡ÂáPÂA$ä!ä¡ä¡…@ÂAÌ Ú!ÌAÂáP¡ÂAÂA¡ÂAÌAÂAöE¡ ÚáIÚ¡NÂAÚAÚÁèAÚ!¢ ÚAÚ!ÚAÚ ÌáP Ú!Ú¡NÂA¡Ì Ú ÚAÚ!Ú!ä@ ÚA ÂAÌAÚáPÂþÚáIÂÁä¡ä¡ÂAÚAÂA¡NÈ€ä¡>€@äÁä¡ä¡ä¡ž$ä!ä!¢ÂÁè DÂá ÌäÁäÁä¡ $ä¡ä!Ú!Ì¡NÚÁž$ä¡ÂAÚ!ä!¢Â‚@þÈèAÚAÂAÂáP>À”AÈ€ ÌAÂÁ¢ä!ÚAÂáIÂAÌAÂAÂAÚáIÌ¡Â@ÂA äPèÁ䡞„Ìá áô€ ä!ÚáPÌAÚAÚ!ä!Ú!©Â¡¡ Úþ!â,Aê ž$ä!䡞d¤6š¥yš©¹š­ùš±ùhoá¡Nv!›Á9œÅyœÉ¹œÿaþ ÂAÚ ÂAÂAÂ!Â> Â@ä¡"„ Ú ÂA„ Ú!äÁž„@"ž$ž„@ê„@ä!ä!ä¡äÂáIÂAÂAÂaÚáPÌ Â@ÂA„  ÌAÌ@ÂAÂáPäIÚAÚ!ÚAÌ è!ä!¥ä!äÁ䡞$äÁÂAÂA¡ä¡ÂÚ ÚAÌáPÂáI¡ê$þä!‚@ä!ÚAÚ!äÌ¡ÂáI¡N¡ä!ä!$Ú/æáI¡NÂAÚ¡NÚ¡NÌA¡¡ÂÚ!êÄäÁž$ä!ÂäAÄ`!,áÚáI¡ÂAÂAÂAÂáP¡ê$DÚAöEÂAÂA˜ ÂÚAÚAÌáIÌ!%ÚáIÂAÂA ÂáPÂA ¡äÁÚ!Ú!ÚAÚ ÚAÌ Â Ú!ä!<žAÈ ž¤!ÌáPÚ!¢ä¡ž¤ÌAQÂAöö%ÚþQÂAÂáI>@žAÈ€ ÂA¡ÂAÚÁä¡ä!ä¡¡ÂAÂA¡êÄè¡ÂAÚ!Ú!Ú!Ú!ÚÁ>Àžá ÚAÂÚAÂAÂAnÁœ­üʱ<ËÉ™ná ÂAnšÉ¼ÌÍüÌÑ<ÍÕ\hùáø!ä!ä¡ÂAÚAÚ €ä¡<€äÁä¡ÂáIÌAÚÁž¤ä@ Ìž¤ä¡ÌA ÂAÂAÂAÂÁä!Ú!ä@ÂAÂA ÚAÂAÂAÚAÂÚ!ä!Úþ!¥ä¡ä¡Â Ú ÚAÌ ÚAÂa_ÂAÚ!ä@ÂÁèAÚ Â¡NÚ!ä!„ ÚAÂAÚ!"èAÚAÚ ÂÁä!¢ÂA ¡ ÂAÂAÌAÂAÂAÚAÂA$‚@ä!ê$êÄä!äÁ¢ÂèÁè ð‚ ¡¡ä!ä¡ÂAÂÁä!Ú Ú¡NäIÚAÚ!ê$ê„@ê„ èJÁæ!ê¤ä¡êd_ž¤ä¡ÂAÌAÂAÚÁä!"ä!ä!$þ$ž„@ÂA¤NÚAÚ!"ž$ž$"ä!ä!ä¡ä!‚@žÄèAÂÁä!ä¡ä¡¢Â Ú >@žáÈ€ DáI¡¡"äÁ¡ä!äÁb_Â@¡Â|ñI¡ä!ä!ä¡"àá Aê€ ä!ä¡êÄÂÚQÂA ÂAÂáPÂáIèÁ‚ÌA>`”A€Ì¡ä¡ä!‚Ì!Ö|þé¿þíÿþ¡vþ ÂÌ!âŸÀ <ˆ0¡Â… :|1¢Ä‰þÞú'/c»v7¶“.=z–>Èk'/\FÍÉ ×.œ¼påµË(/\»pqÊÛH/Îv>3†“gÎ'=sá䵓×g;yí2¶ÃÙN^¸váä™ ×Nž9yíä™ 'ÏÎpípšËØ.c»¢á<Ê '/ÎvòÚÉ 'Ïœíjªª®Êj«®¾ú)?·üÓN8òlŽ9ò˜ƒS#•â9þ…#O;æÈNQò´#9ò„#O8ò„#9ô˜#O8ò„#GmdNFáÈNFæÐ#ÏFáàäQ;ó„Ž<á˜#O8ò´3O8ò„ƒS8ôÈcNæÕŽ<íÈcŽ<á˜CÏFæÈŽ<ádÔN8µcNFáÐŽ<áÈŽ<áÈÓŽ<íd´Q8ò„ÓNíødŽ<…#O;á(›‘GáÈÓŽ<íd´Q8òxäS;ádŽ<æÐ#ÏF8…#O8™#O8ò„ÓŽ<á´ŽOáàŽ<íÈÓN8òl”Q8ò˜“‘9µ“Q8ò„ST88ÍÓNí!=¥xÐN8ò˜C9ò˜“Q;…ƒSþ8ôÈÓŽ<áŽ<íøŽ<æÈcŽ<áÈŽ<ÉŽ<áÕŽ<íÈNí˜C<í„#O8ò„#O;ædÔN8í„#O;ᘃS8ò„“Q;8…CO;…“Q;ò´“Ñ–(S>…³ˆ<áÈŽ<ádÎFò´“Q8ò„“‘9í„ÓN…S=ádNQáÈã<Xò =!òGFÚy„Cá‡9èaŽŒ´KæhNÚAs„£òh‡<Ú!pÈÃ#óø€%”Q„CæG86"v„C·x• oˆÃêp‡ÿ¸?2ÒŽpÈã<,¢ˆÄÞâæÈˆ92RþsÈ#òGFb‰d¤òhGFÌ!pÈ#ò‡<Ì!z˜CíG;|BsÈ#òG;äay„CæÈH8äŸÈ#8 G;äÑy˜Ã‚¤‡9äÑs´CáÈH8Úá“ylDáh‡<ÚŽvÈ”‡92y´CíN“vd„áG;äÑœ„c#á‡9äÑyl$ò0G8æ±y„CæÈˆ9äÑy„c#ò‡<ÌásÈÃò‡O̱y„CáÀI8äÑŽŒ„£ò‡<Â!v”21‡OÂ!pd$íȈ9‘‘vÀ£òNÂÑþœ˜Cá G82Žà^íG8ä!Žvˆò°ÄJ‰“p´CáÈH8ŽvÈ#íGFÌÑŽpÈ#‚ ‡<62vÈ£ô‡<6y„£ò0G;2Žvà$i=‘sÈc#ò ‡9䎌Ð#ò‡<‘‘pÈ#íÀ‰9äay´CáG8äŽXâz C8äÑŽŒHBá G;䱜ÌÃòhNÚœ˜CáÇFäy„£áÈH;pÒŽp´Ãôh‡<̱s|`ÏÐÚ!pÈÃôh‡<Ú!vàÄ#áÇFäay„CɈ9äayþ˜##í0‡<Ú!s|ÀÏÐ|bylD‹ÜE¯‹Ýìj—Rü¸Å?6"Eîb»ä-¯yuÈ[üCíG;äzd¤ ÀHJñpÈ#ò‡OÚ!v€ÔòhW8JiŽŒ´'íðI;ÂÑŽpd$> ‡9p" IXÂΰ%:,‰ KbÃ^„$Hœá KbÃÞp†Il IÀX–„%$a IX"ÖÈ0ŒI,‰ KÂ’øñ†%¡ IX" ÍH8p2v„Cí‡<“vÈ#òNæqy„CáG;pŽŒ˜##á GFÂÑŽpÈ#iG8äÑŽpÈþ#òh‡<Úy˜CíÈH;±s49¥lGFÌ!pÈ£8 GFÌQvò(…äÑ.sÈ#i‡<Ú‘‘pÈ#í‡<Ìá“v„'á ‡<Â!pd¤æÈˆ9ÂaŽŒ´CíG;2ŽŒ´#ò0‡<‘‘pÈc#òhGFÚ!sÈ£8i‡<Ú!và¤áG;2y´'íG8äÑy´##€„2ô@ylDáXD;äÑy„c#ò€W;äŽvÈ#8i‡ Ã!s´Cá‡9Â!pȃæG;䎌´C°Ä3þ@sd¤ò؈<ÌŽÈ#þí‡9äy˜Ã'áØHÃÑyÌ£ò0‡<> eü!áG;pŸìâ¼T¯ºÕ=u ~„Ã'»¸º×¿öÜâò0G8äÑŽŒ„CáG80K|@íG;2ŽÈ# G;±yÌc#> ‡GpŽvÈ#íG8äA†£òhG86’‘XâüèÇ?øÁðãü?‚ð£ ü(èzJñc üø?þÁðc ý?þÁIñc š‡<Â!p´#íGFàÕyHbÃ’°D†a, KH‚ĒЄ$4a Ilx–„%2l‰ Ùþ¶ˆ-!‰ KšÐD†7, KHÂ^¿%$Ab’` >òí€í âÐb ô`  æÐ88aò`áÐòÐô`8òò`ò°8òò°‚òòí ááàí áÐa!áÐòÐòòí æòí áàí á á°á æa!áð¥ð z@a á`aò‚dòò`‚4áÐáíí áí`Ñæð þz@Ñá í0aòò`ô Hí áæ áá á€aa` Àðòòòòp a‡ŒÉH^üp ÿí á · ŒÕhFÄ·Àáá í í@òP 0>ò`òЂò`òí>aò8ÑòòòÐáæ íí0á`ò ÿPø@õ€‘õ€Yô€‘ø0ôP!I9õ€ô€‘#‘ôÀ‘ô€#QôPôPôPøÀ‘õ€ô€$Yþø@õ€‰!Yô°“ò` ÑÐ8aôÐ>š ü üðý üðüðý  Wü@ ÷ü0) ÇÁ–ÿÀÁÿzÿÀÁÁÑÿÐÙüðýðü üð’Ðáí ‹$áæ@í@ô ¥ðòÐòÐáЂ´¥ôàæ áàí í0áá íòÐòÐÑòÐòà8Ñá æ áá`aôRí á áÐæ HíÐd怰»ðb æá°Ñòþ@æí@á í@æí áÐá HáÐM–á ‹” Êðbò`aí‚Dæí á0òÐ8Aæá áá æ æí  Ê  í@áàá@æ ×È£=jC»ðô`¹à£GФ r ÿÐò`òÐáò0–àaòÐá áô`í á°á€í€ð2í í á á á0òÐ>a‚dá æÐÑ’ðõ ø‘!É‘#!øPø@ø ©þI’:‰Iõ@ø0ø@ø@ø@øPôP#ô ø ’Jø@ò€$9’Jø‘ôPá ÀÐò8aíí ’Àô€õ@Iõ€Iõ@ø0;9õ0õ@I’I‰Iõ€ôPøÀ‘#QøPø‘ôPô€‘ø€‘ôPôPô‘á` ÑÐò`Aá d0–ðá°ó°ò@æÐáá æòííá áÐòòò!æÐa‚dò`òòþòí !æÐá æPJí Hí áÐò`í@á€á°òí áíò`òòP ¹ðdí‹æ íá æ@á Hí í >/òò`òíòíòòÐ>aP ÏðdЂò°aÑá áÐá€í€íò8±æ æðð z‘>± I*¼Ãk)üp ÿÐ>± Ä˼Í+üp üí íæ æ€0¥ðæàá@Ñòþ`8Ñòæ æ áàá æí€íòÐá ááÐá€í€’ðõ !YôP$‰ôP8Q81õõ`«ò@’ø ø ô€òPò@òPò’))õø )õ@Iõô !‰ôPí ¹ò‚Ôæ ’À#±“#Qø@õ@’Š‘ô°“õ€ôʼn#Á‘!™‘ø0õ0‰õ`«õ@ø@ø’‰ô€IÙšp á Hí ò`bPòP `òÐá áàþá Hí æ@òÐá á@‚ô æ€!íí>ÑòÐòÐò`òà8ô í á áíí’í æPJ!í`aí`ôÐ8Ññ’ð z@á æí ò@áÐò¥íò`íóÐò`/Aá€í@æ áô8í í °Ê dÐòí á á°>í@á€á áÐò¥‚4` ÊP æ á æíòp ÎKÓÃK üàþá ·PÓ=}¤·ðá æQæ á á#a íí >ò`8Ñ8áÑí áÐ8í æ æò`ò ÿ ôàô ô8Aò’ò@A1ð#ô  !)$™ôô ô Hô ôô ô #ò@æ0á ´àáÐá æ í ÿ@õ0õ`«òP#‘#Q#1!)õ`«ó0ò0õ@’õ@õ’ò’õ`«ò@õ’)õ ô€!þ)õ #Qô€‘í ÀáÐá á0í€í@ô –ðô`íá áPJá Há áÐ8Ñòí`ò`í Há áÐò`á€í æ áÐ8òò8ò`á æá áÐá æÐò`òÐí€í"á áà’ z@á@8±ííá á í€í æ@í`¥dòÐ8òÐ>Ñá€í`ò` À b òÐ8‚4á áí íþô`òÐá í áÐá áÐæðð zòÐ>±ò`æ° >­ê׸ üq껰곎Œüp üô í á@Ñô ¥àí`ô í`1íôÐò°áÐá á æ í88òÑ8Š’ð8>AaôÀîæ@>A>AaøÀî‚ðô$)š° á áPJæ ’Àò@ó ô0#!ô #!#‘ó #!ó@ò@ó ô0¶šóó@81þ!™#‘ó@’8Aò@8Aò@ò’óàá ·Ð8Ñaá áb@òP ` ‹°’` ‹°aƒ` \/ –0–0–°’` ‹` ƒ` ‹` \Ïõ–°–°–@÷¶–0–°0¶’°aƒðc–0\/ –°¶–°–0–°–°’@b‹ –°–°0Æõ–0–°–°–0‹°a\/ ‹ ‹ð z@òÐòÐá` í áÐòòòí á æÐÑíí€æÐòòòí áþ á æ á áà` Ñ d€á áá ðÒòÐaí€áÐòáäÉ '¯Ý@yá~°ôì€pí$†k¡¼]ÿ4näØÑãG!EŽ$YÒäI”)U®dyr×?yíîjYÓæMœ9uîä¹ëŸ¼và '/œ¼päѳôa8„í†k‡Ð\¸vÛÉ '/ÜÀpò 4gî¢ÐyÐÃô0Ç@$2pHDíG;bŽv„£i‡<Ì!s„£òh×Ú!p8HáG8äy´c í‡$þ!p´Cá€G;äAs Äò0‡<Ì1µpÈ£S : €È#íH8Ì15sÈÃò0‡<ÌsTCáhÇ@Ì!sLÍí0‡<Ì!s´Ãò0‡<Ì15‰„Cj‡$vy„£ª ‡$þÑxLM"瘚9äay„CæhÇ@ÂŒ`þØ€0.Öy˜C ‡<Â!pÈ£á‡9äaŽÌc á‡9ÂÑ  ÄòÇÔÂ1sÈÃè€Ç@Ì!s´C‘-:gŽvÌ£ò‡<Ä!†”âí‡<Ìá ÐÃ8l‡<ÌÑy„CáÀ‘<Âá ©…Cæ‡9äa™Cí‡9äy˜CæhÇÔÚ!s„Cá‡9Òy„c áhÇ@ÂÑy˜Ck‡9Ú!p´Cí‡9y˜#òÇÔÂÑŽ@z Ã@Ú1K„Cí˜Z;Â!‰È£áˆDÂÁµvÈ£áG;¦fy´CáþG;‰tÎòø$žñ2 ¤áH;äaŽ©…CæG8Ú1vÈ#òG;ÂÑsÈ#íG;Â!…Cá0Ç,ñŒ?@H;ÂÁµ]|D¹Ëensû\èFWºÓ¥nu­{]èòãÿG8¦¶ ì†W¼ã%oyÍ{^ëòãÿH;äÑŽp˜Cæ˜ZîSŠHdj1‡<Ì1µvÌÃòhÇ<ÂÁµpÈ£áàZ;Âay´#òÈ@Ì!pÈ£\3‡<ÂazÈCühG8äÑŽs´Ã@ò0<Â!pÈÃ@æG8äa pÈãw€' UCKðþX ŽpTCKðXÐŽpT#á¸ÃÚypçhG8äy„c í‡<Â!·#òÇ@ÚKì¢S ‡<Â!p Dü8ŽÍay˜Ã@ò‡<Ú!pÈ£’G8€p˜ã/€€8äÑŽy„ÃòhG8äÑy˜#ò0‡<$"s˜Ã@ò0Ç@ÐQ „£á‡9 $É#i‡äy´#æG;$q‹pÈ#íH;Â1v „ )Ÿfy´#1‡<ÚsÈC"\k‡<Ì!vÌ£ò0‡<Ì!p $ôàZ;Ì1sÈ#S ‡þ<Â1µpH$i‡<Â!vÈ£iG8äaŽ©™c íàZ;¦Ös ¤iÇ@Ú1p Äòø€$ž¡2 ÄíÇ"äÑy„Cáàš9$2pp-íG;äaŽ˜#ˆ9Ú1vÈ#ô0‡<ÂÑy˜£ò€Ç ¡ =!ò0‡<Úy´c áh‡<Ú!pÐÃí‡<Â!pt® ÇÔÌ!sÈ£ùÀ"v¡HDá‡9ÒŽpÈãæe|ãÿxÈG^¹·øG;äÑŽpÈã’ç|ç=ÿyÐßâáˆ<Ì!z˜CáG8@yXâæh‡<þÂÑxt.íG;äÑŽpL-ò‡<Â1µppáH8$"®µCáHçÂa‰H$çG8Ú!pH$í‡<Â1ç‡CíG8ä¡ CˆG8–œ-¨Á9ªth8‡jyø†ø…s0‡¨vy‡v‡v8s‡vy‰‡ph‡ph‡1y„]yyhy‡Kø‰‰0‡ç ‡v8‘‡p0‡v‡phdqhq8s@H`q‡;˜€ssàtÀ‡p¨Xþ ÈpVyhy‡v‡sh9‰‰yh‡p0MØyz0‡ph‡h‡p‡p2 y°„‡v‡vs‰z0‡hy0y0‡ps˜špsh vˆp‡pz0‡v ‡pˆpàšv‡ps˜sh‡y0‡ph‡Î ‡hy0‡pˆphyy0y0‡pˆph‡hy®i‡€„gÐ2‡©i‡E0‡yy® ‡v‡ph‡phy0z0‡2yh‡h‡p0®i‡hy0yhsþøK= ƒp ‡© yy0y0Õi® yyh‡pˆp‡pàs‡p0‡°„gÐh‡p‡p yyø³]Ø  J¡J¢,J£yyy‡ y°„‡p‡ph‡ ‡pàsˆpàšpˆh‡©iyhyh‡Î1‡©i‡h‡ph‡phyh‡©iIà‡1‡s0Ö psHMs@Ms8‡ €p؆ai8‡e€dpX†8pdpX†h‡s†/˜€1Ô4‡s‡s0‡¡5‡st0‡is°„]‡ˆps‰„8s`Ms`Mp0Ö4p@@€øp˜†ø…pðd8€sðsp†ø…o€_8‡p†8‡eþi8‡pX0ÔD‡?;s@Ms@Mp0t0‡‡vI¸y‡ø³‡©i2¸Kø€p‡p˜šv‡‡v‡vˆpyyy0‡p‡v‡v˜šp‡v‡vyhyyyy0yh‡© ® y®iyh‡©¡‡pàšv‡v‡phÕ ‡v‡vˆphyz0yy0‡© ‡vø€Ex†? ƒps‡E0yh‡p‡v‡v‡p‡v® ‡ç ‡và‰‡v0‡hyh‡ps sˆph‡pssøþHx= ‰‰˜yhyh‡ph‡p‡ps‡pèœph ©1yhyhsøKx†?yx¾v‡pˆp‡[€WFndG~dHŽdI–d~¸…‡y¸…IîdOþdPeQæ‡[à‡©‘ˆp‡v‡vˆ y(…‡p ‰® ‡Î1yˆ0yx¾p‡vys‡ph‡p˜švs‰s ‡ç ysIø‡ss‘p8‡?;s8sp0p0‡1ptPHË€‡ei‡pà„‡ei0‡mþà„‡ep0phD¨€3@MsÔ4‡ ‡s0Ô4‡spp8‡v„]h‡p0‡h‡©1y„‡Ô4‡s0Ôü3p8‡p8‡? p@†xe°pX ¥¦qà‡;˜pXXjx€pX†p‡jp0p‡¡‡sø3Ô Ô4‡p8y°„[‡pàšp‡p‡p1¨y(…hyh‡phs ‡p˜šp‡p˜‰‡vàs‰‡v˜s‡v‡p˜šv‡p ‡v‡v‡v‡y‡hyh‡þpss‡p‡v‡ph‡phs‰ˆpx¾phy0yh‡yhy0;–‡ps‡€eÐ2z0y8Kssˆvz0‡yyhy0z0yy‡çˆvy‡j‡©iyhyøHx†?y0‡p‡?k‡phy0Õ¡sˆphyyh‡phyyy‡© y‡øHP=€pshyh‡z0‡\dßqïqÿq¢Ü…ˆp sÈ Or%_r&oò[à‰y0‡x>y‡¸þKø€v‡vsˆp‡pˆph‡phyhy0‰sàsàšv˜šphsès˜sh‡h‡©‘„0‡¯ýZt0p@sssss(tt0‡¯åÈ…gØt/XpX m8† ¨sX o8 ¨mX0‡¯õ q0p0t0tø3o@s@søZst0‡¯ý³¯•Is˜špyyKø‡s‡?3‡¯=ssøÚs0p0‡B‡m@؆sH‡F €m8††mØp8pð†h(€HÐ,ð†n€_þ؆psð†e€¯Ý†e€¯5‡sss‡søZs8ws(tsZhyy‡ ‡pˆp y Kø‰°ãp‡v‡p‡phy‡v‡ph‡® ‰‡p‡v‰®1‡p‡p˜šv‡v‡v‡vPv‡v‡p‡v s s‡ç“‡psèœv‡v‡hyyyyh‡ÎùH= ƒv˜švXs yh‡y‡© yhyhsàšv‡vs‡v‰‡v‡p‡ç ‡ç y dxø€E†? ƒþh‡Î ‡yyhÕ yh‡©iyyz‡vˆv‡vxøKØ…?€vs‡v‡vàš]hrìÏ~íß~¥ä‡[ø‡pàš]à~ò/ó_r~¸~0z0z‡p0y0‡© z‡Rø€p‡vˆp€G¯];yÍÉ3gPž9yáäµ '¯ÁpòÚ™“n¡¼pòÚ…3H°ÁpòÌÉ ×Μ¦à^šÛæ ܶ—ÞÀy{©œ¹m/Íy;!Bܶm⦠@´LÀ›X\Û¶LÀXl3·,ÀKoΤxém¸mà¼ÛæmÛKsÞÀmÓþéÍ›9pæÚIÚe0Ç…í$ý3‡îš·—sÍ¡»n®9tÞ^š· €m/½i¨á­‰m׎Á1‡]Ä]óv‚„´kÇà„[&àå¶i~í4Λ9tsÁ™ó¦Óœ7pÞÌ“'éÁp ÊkÎ zòJ}€N^8yáä…3Øna8yæ†3HP^¸vá¶3N^8yíä…“®o8yáä…cŽ<æÐ#O8í„ÓN8ò´Ž9…ÓW;ò˜#O8ò´cAá´GáÈÓN8 µ#O8æÈN;áô%ÊèA†9áÈcN8–ÈÓŽ<æÈŽ<íÈŽ<áDÐBáÈN;þò˜#=æD<æDÐBíÈcŽAæÈcN;ò|PŠ2zÑŽ<ídŽ<áŽ<ídN8…#O8Ž<æ´Ã‘9ò„#9ò˜Ž<@òŒ˜³9òÔN8òÜò¥—b𩦛rÚ©§Ÿ‚ª¨£’Zª©§¢:ê-üÔN8òÜ’ª¬³ÒZ«­·âšë.üpÔŽ<õ˜#O8ò„=òXòAæÈÎBíÈcŽ<ápÔN8…c9ò„ÓŽ<áô%O;ò„ÓGáÌÓŽ<æÈŽ<íD9òHò7è˜ã 8û‚ã;s™ãÍ5è˜38Þ˜s7Û̵ï\à\³ŒÞlƒŽþ9Þl³ŒÛ\ƒŽ9Þ\³Í\àxsM‘ cξހ㠿ûzÎ5è˜Î\æì;—7íH²‹<áN;áÈA’ðsÍ6àxcŽ7àxsÍ6àxcŽ7×lã9:_ƒ Ûè܈ÒLƒÃ³„ ¢ó\×lã;:›#¸9Þ€cŽ$¹´cP;ò„éBâˆA=–|ÐŽ<íÈŽ<áÈŽ<æ´N; …#O8 ™#O;ô˜#O;áÈcN8íÐcŽ<áÈÓ=áÈN;ò„ÓŽ<í„+O8áš³P;òAó´ÃAá´ÓW8íþÎBáÈcÎBíÐcŽ<yPÊ3zAO;µ³H8í4ߎ<í„#O;ó„à á ÇBÚaH™Ã ‘2‡<Â!s,¤ 1‡<ÌñICd‡9äÑy´CíàH88bz„Cí‡9 z˜CáG;äy´ƒ#í0Ç,ñ =@í˜ÇBÂas˜c˜Z"›èÄ'B1ŠRœ"«hÅ+b1‹ZÔ"?nñ‚ȉ»Ø"ËhÆ3¢1jT#?nÁ‚„à ᠇AÚaÐC¥ð@_"Õy´CíG8äÑy„à íèK8äÑŽpÈ#í‡<Âav„ƒ òhG8þÂŽ´ÃÿØÆ5®!¸S^c.Û¸†à®ám€ã”Þ@â3–!olãÞÇ3–!ol㲜  °Ró”Û¸†ÎJ9s\Ãá°D.äÑŽ„à æ‡$þákxãÞ¸Æ)K©³kxãÞ0GQJiŽkxãÞxFQÀákxcsÙ×5¼Ž¢xc¥¼Æ6žaŽkÌåEÑÙ5N9Po˜ãæ¸Æ\J9yH"áG;ÂasÈ#!=àQŠÈ#áj‡<ÌAsÈ£i‡<ÚŽvÈ£1=ÂAy˜ƒ ‡<ÚѼv„Cá0H8bpÈ#ò= þy„Ãi‡9äy„Cæ ‡9äÑŽpÈ#ò0ÇBÂ!vô¥æXˆ9äÑŽ,â C;äy„Ãò H8Žv„£ò0‡AÌap´Ã áhG8äy˜Cæ0H8æ±pÈ£ò0G8ÚŽy´ƒ#€„2ô@yÐ#òG¤äy„CáhGóÒŽ¾´#í0AÂÁ‘@Bu@;Â!pÈ#òhÇBv¡Åëb7»ÚÝ.w»ëÝ'Þ‚áàÈ.¾kÞó¢7½ê]ï?nÁv,$ ‡<Â!p@s–ø@8Úy„£ò0‡<ÂAy„à æhÇBÌ!þp´CáàH8èay´Ã áXˆ9"p´#íG8äÑŽp´Cá€?w Á]Cg×ÐY)Oy o 4ÇÛX†®!¸m,#טË5d‰Tb˜¥ôÆ5dy Á Ôׇ$n!s„Cáh‡AÚaIüãÞ¸†7®á_c.õÆ5¼‘ã¹\c.æÜ5æRJ`€RêìÞ(¥7®á 4_ÃõÆ5t†èkÌåÞ‡$h!p,¤ò0‡<ÂÑŽp´C ò ‡$>`y´CáG8Ú!vpÄíG;äay„c AšŽ˜#íG8Úþy˜Cí0H8äAy„Cí G8äÑy„ƒ#íG8äay´CáèK8 Ž„£òG;äy„£ !=ÌÑŽ,z C8ÒŽE˜Ã æèm8 ƒ´# i‡<±vÌ£òA2Ž´#áG8ÚaŽ”âzƒ8èу˜CáG8è±p´# ‡AÚy´#ò‡<ÌAy´#òh‡<Â!pÈÀÄ3ô€…„CíG8äyÜ‚½Zß:×»®^~Üâáh‡<Â![h7íj_;ÛÛîö·cŠ·àG8äyDíG; Íþ•âi‡AÂÁs¤á0H;Âavp„ áW8 y´Ã æàˆ9 ÒŽ…„à šøÇ@½q k”ÒõÆ@ç‚fo\Cg×xÆ\®ñŒk<Ã¥|†7ž±gxãÞx†7žaŽh\Ã.å\žaŽgx#ÇÞxô3Àq yH"i‡<Ì!p˜Cá‡$ø±üó£?ýê_ÿ3¼æg  òÐÄ.äy„£·ò ƒæJñvÈC8ÈC;D8D;„G˜=,D; =ÈA„ƒ<„ƒ<´C8ÈC8ÈC8˜=D;,D;,D8D;È<„ƒ<´ƒ<´ƒ<´ƒ<´ƒA„ƒ<þ´ƒ9D;ÈC;pD8ÈC8D8pD;„C_„ƒ<„ƒA„C;„ƒ<„<˜ƒ<|$DƒˆA„AX‚<´ƒ<Ѓ9„C;„C;„ƒ<„ƒ<´ÃB„ÃB„ƒ<˜ÃB˜ƒ<„ƒ<œƒ<Ѓ9ÈC8´C8´C8ÈC8ôÖ,‚2èD8ÌC;ôAÈC8pD;ÈC;„ƒA´G´ƒA„ƒ<´Ã<ÈC;ÐC8ÈC;ÈÃXÂ3ü„ƒ<´ÃB„ƒAЃ9äÜÁb,Êâ,Ò"íÂ?D8Ѓ9äB-úâ/c0¦Ý-ü=„ƒAøAÈC8€æX´C8´ƒ<„ƒA„ƒ<´ƒ<„C;p„þ9ÈC;„C;ÈC8´C8ȃ9ÈC;ÈC8´ƒ<„ƒ<„A˜C8pD8D;„ƒ<„ƒ<„ƒA´ƒ$üÃ5xÃ3”R4¤ƒ7ÃT^Ã3DÃ3Lå3DÃþ3”Ò3DÃ3\Ã3”Ò3\Ã3DÃ3\Ã3xÃ5Lå5Lå5<ÃTþê5DÃ3 Ã3DÃ3\Ã3”R;HB.´Có̃<´ƒA>˜C)|€9ôE;„ƒ<„ƒ<„ƒA„ƒ<„ƒA„C;ÈC8˜ƒA´ƒA´ƒ<„ƒ<„9ÈC;„ÃB„ƒ<´ƒA„ƒ<´ƒ9ÐC;D;D;ôE8ÈC;„ƒ<„ƒA´ƒA´ƒ<´ÃB´C8ÈC8´C8ȃ9ÐC;„ƒA´ƒA´C8D;„ƒ<´ƒ9DJ8ÈÃ@‚2è´ƒ<„ƒ<„ƒ%ÈA„K;ȃ9„ƒ<´ƒ<´ƒA˜C8ÈC8̃…ƒ< ‘A„ƒ<„AÈþC8,„9„ËX‚2üpD;ÈC;„9ÈC8ÈC8ÈC849ÈC;ÈC8D8´ƒ<„ƒA´ƒ<„C;„ƒA|€%(C€A˜ƒ<„AÈC;„ƒ<Ü‚êîîònÑ?DJ8ÈÃ-ônñ¯ñÞÂ?´ÃB˜ƒ<Ôƒ9ÈC8ÈC8>Ѓ%|ÀB„C;pD;ÈC8ÈC8ÈC;„C;„C;„ƒ<˜ƒA„A„ƒA„ƒA˜ƒ<˜=˜C;ȃ9,D8øQ¸´ƒC4C4C4X´ÃB´ƒ<´ƒ<„C;ÈC8´ƒ°D=ÈÏyÌ‘ÇyÂiGžpä GsÚ‘'yÌi'œv‘ÇyÚ‘Äp@ §y@¬Çy>€D™? ÇyÂA/zÌÉ…¡>ýüÐ@”ÐB =ôÏ[ø1¢ð„£&òh‡<Ú!p„'ò‡<žvÈ£áixÚŽð˜<áG8äy´AíGxÚay˜<çš<Ìžv­ài‡9äŽðþ˜<í0xÌžp ' ’‡9è"s §òQxÎÉÃòzÌžv€§ò0=BÕŽp´Ã#’‡9äÑyœDò0ˆÌ"s„'òQ8À"sÈD5‘ˆäqŽpÈcDò8G;äqs€§‘#’G#åÑ‘…ƒá9‡9Ðyˆ¡ò(…äÑŽð˜#<áG;¶¢p„*íO8èžv€§áO8ÂsÐ#ôh‡<Ú!vÈ£áiG8ÀÓsÈ#à ‡9äð´<íG8Âcy„CáhG8Úy´CáˆÂ!pÈ£àù€%”ñ2„þCá‡9ÑŽpÈ£óh‚èay€<íG;ô„#<íGxÚŽð´ƒæG;äñE<ãdG;äy„cDáhxÂÑz„£á˜G;„Öy˜#ò0‡<Ì vÈㆎvÈ#ò0xÚyÜ yÕë^ùÚW¿þ°ì` [XÃv¯·øG;äÑŽpÈ㈕ìd)[YË^³‡½Å?äaŽv˜<ô0‡<Â!p€ò°ÄÌŽy€ÈTòG;äaŽvÐÃáh‡<ÚAp€§ò‡<¢pÈÃòxÂÑð˜£òhzÌ!pÈ#þáixÌsÈ£æ‘9@$vÈ#—òG¨ÐcŽvÈ# =Ì"sÈ#ò8xÚs„'ç9Buy˜cDò0‡<ÚÉ#á ˆäy˜<¡’‡9Â"ô´Ãòx@Ds€§ò0xÂ"y´#íO8Ú=æhÇ9ÀÓs€Ç¹l‡<‘KsŒ(òG;äÑy˜#<áG8äAqAõ°Ää1¢p€'íG8äŽv„£áG8Úz˜CæO8Úžp´CáhGxžv gDò‡<ÂÑy„£à Ç<ÀÓy„#<þíG;äaŽv„CíˆäðÐÃj‡<Ú!s€§ò‘<ÂñHCdh‡<ÂAyX¢áG;Ì¢pÈ#èiG8Úay´#í‚ÂÑy„£áO8äsУáh‡9Ðy|ÀÐÚy„ƒò0GxÚ‘µ#òhG8䎅§ ‡<Âx|@ÏÐÌ É£&»ÈìÂÞp‡?³ü¸?@$šìâ×øÆ9îp~Ü‚ò0=Â!v„§à =äQŠУ5‘G;Àcð˜#<æˆäÑŽp˜<í‡9ÐÓy„#<áþ@O¨ÀÓy„CáhG8äaŽv„Dò0xÚað„Jçhd8äay´ÃòQ8dyŒHdæ‡9@ŽDà1G;äay˜<æ ‡<Úð´C51‡<Â!pÈ#ò0‡<Â!vÈ£òU8Ày´#í‡<ÂÕDáG;äÑŽpÈ#òhG8äy€<áO8Ú!ÕDíGxÌÑŽpˆ,òQ8ÀyŒHá0xÂAy´Ãà1GxÂAp„‡ à)…Ì!sУá@O;Ôy´Ã ˆÂ!sÈ#à xÂ!vÈ#ä!þ@<ÂAÚÁä!ä¡äÁÀãÂAÚ<ÌA@$Ì<ÌÂÁä!äÁ£Â#ä!ÚÁä¡ÂAÚAÌAÂÁÂã,áþ€ Ì<Ú!$Áä¡äÌ<Ú<¡Â=ÂA¡ä!À£èÁäD„&<ÂAÂÌá$Aô@ ¤èÁÂAÌ<Ú!ä!ä¡ä!À#äaÚA¡À#Ú!@DÂ<ÂA>À”¡<¡¡Â=vA .3Q7‘;Ñ?CQG‘KÑOIñþþ!ÐcRcQg‘kÑoñþ¡Â#ÚAÂAÂAÂ!LÅ>=ÚAÂ<Ú!<Ú!`žáÈ<Ú<@DÂAÂA@<èÁ¡À#Ú<ÂAÂAÂ!<¡¡ä,AþÐ#Ú<ÂÌ!4TtG—tK×tMqþ<ÂÌ!NvcWvgwoáÂAÚA ÂAÌ=ÌAÚ<Ì<èÁD†ÂAÂAÂAèÁÐÃä¡ÀƒÌ å!@DÂ<ÂAÂ!<ÚA@DhèÁ£ä!ÚÂ!þ<ÚA¡äÁÂAÂAÂA¡äÌ¡ä¡ä!ä!ä!FDÚ<ÂAÂAÂAÂAdä!Ú!Ú!ä!F<è!äDÂ<èÁF<Ú<ÚA¡ÀDÂAÂDä!À£ä¡ÀáäÁä!$ÚAèÁÀ£ÌAÚ=Ú<ÚAÚAÂA@<¡äÁ@D¡ä!Ú=ÂAÂ<¡ÂÂ!<ÄA LÅ<@dÌAÌ!@DÌ=Ú!„áÀ#Ú!@$ÚAÂ<Âa@DÂAÂÌAÚAÚþ<ÚAÌ<ÌAÂ=ÂaÚAÚ!„Á#ä!ÚAÂAÂÁÚÌAÚAÚ<¡ä!ä!>€AÈÀä!ÀÃÚAÚAÌ=ÂAÂAÂAÚaÂ!<Ú!Ú!ä!ä!À£æ!@DÂA¡ÂAÂ<ÌAÂAÌá ô@ Ä<@dÂ!<ÚÁä¡Â!<ÌAÚAÚAÚAÂ!<ÂAÚ=ÂA¡ÂÁ>€A Â!<Ú!ÐchW¦gš¦išnáÂ=v¡¦{Ú§Cùáþ¡Ì<Ú!ÌAÌ!<þ€ä¡>=Ú!Ð#ÚA@$ä!@$<ÂÂ!<Â!<ÚAÚ!УÂA¡Â<ÌAÚAÚAÚ!ä!äÁ£ÂAÂ<ÚA@$DÂ<Ú!èAÚAÚ=Â=Ú=ÂAÌAÌAÌAÂAÚAÚAÚAÂA@$ä¡äÁè<ÂAÌAÌAÂ<ÚAÚA@=Ú!ä!ä!Ì=@Äè¡ä¡Ì<ÂAÚ!ä!ÌäÁÀ£ä!À£Â<Â=Â!<ÂAÂAÌAÂA@<ÚAÚ!ÚAÚÁþÂ#äÁÀÃä!Ú!ä¡äDäÁè<Ú!ƒ L¥>`¡ÂÁÄÀDÂAÚ!Ú!F$<Â=Ì!<Ú<Â!<ÂAÚ!ä¡BxÌAÚÁÀ£À£ä!ä!À£ÌAÚ!Ú!Ú!ä!ä!ä¡À#ä¡B8ÌAÂ<ÂAÚ<>@žáÈ€Ì<ÂaÚ!ä¡À#Ú!¤Â!<¡äÌAÂAÂ<Ú!ÚAÚAÚAÂÌAÚ<¡Ðã$Aô€ ä!æaDÀ#äÁÐDÀDäAñÚþ<Ú<¡ä!ä!è!èÁÀã,!ê Â#äÁÀ£ÂAn¨{Ý×}oÀ£ÂAnØ“]Ù•ýþ<¡À£ÌAÂAÂ!LÅ> ä!Ú<Ú!ä!äDÂAÂAÌAè!ÀáDä!Ú!ÚAÌ<ÂAÂ<Â!<ÂAèÁä!ä!ä!ä!À£ÂD¡è!ä¡äÁÂAÌ<Ú!ä!ä¡äDÀ£ä¡äÁä!ä!À#ä!@$ÚAdÚAÚ!<ÂDÂcDä!Ð#ÚAÂAþÚAÌ!ä!ÚA¡ÂAÌAÚAÚ!<¡Â!<@$<@DÚa–å!£Â!<ÂAÂA¡Â#ä!ä¡ä¡À#ä!äÁÂ<@=Â!<Ú<ÚÌ<Ì¡äÁ££¡ÈèÁ> èÁÂ#Ð#äÁÀ#¤&ÂAÂAÚAÂ!<ÂAÌ¡ÂA¡Ì<ÚAÂAÂAÂa@$ÚAÂAÂa£äDÂÃ$è!ÀÃä!À#TÂA¡À£À#À#ä!>žAÈ<ÚAÚÁÚ!ä!þÀÃèAÚ!Ú!Âã8äÁB Ú…“'¯];sòÚ\hn!ÁpíÂÉûPê™2òÚ…3'Ï ÃpÃÉ3h0=yôäµ '/ÜÂpòÂ9\hg´ '/=yå™3·ëŸÑ£H“*]Ê´©Ó§P£JJµªÕ«X¥ò»õÏ ¼¡»²ŠK¶¬Ù³hÑò»Å 9‚áèlG0=y¥>„£'/œ¼vòÂÑkgŽ`8yíäµ#ØŽ ÁpòÂÉ '¯AsôÌ9'/½pŽÃ çX^;yáä…“Nž9yáÚ™#hŽ`;yíJË gŽ^8yáä4'/œ¼pòÂÉkç¸]8þyáä™#hNÉyáä…“®]8ÇáHšs®]¸ÒÃ4Ž^évŽÃÑ“gN^;yáÚÉ3G/œ¼pò´Ž<á˜#O8æÈÓN8ò´Ž<áN;á˜CO8º…C<í„£›<áÈN;ò´#O;µŽ9ò„#O8¥…#O8ò˜ó!A…cŽ<áÈÓAæA9¥|PZ;ò„#O8µ#O;…#O8ò˜CÏ•µ#O8ò„#O;ò„#9ô”f<íÈÓŽ<áÐÓN8µN;á´Ž<áÐÓN8áÈÓN8æÈcN;áŽ<á”ÖNií„#9ò˜CO8ô˜C<í„CP;µCÐþ’<ó‡ò„c9‹”ÖŽcáÈC9ò´Žná´N;ò„#9…#9ò„#O8ò„SZ8ò„c=æÐc΋(Sí”N;ò„#O8™#O;ð´#9ò´C9µ#O;ò„SZ8ò„CP;ò|É.zÐŽc…SÚ.X,ðÀlðÁ7u ?á”¶KÂG,ñÄWüÏ-ÿ´ãX8…#O8ò„=òXòAáÈŽ<íèÖŽ<ó´#9í„#O8íÈÓŽ<íÈAæ„SZ8ò„sc8µ#O;ò„ÓÎPÔŽ<á$O8ò´óa8íŽ<íÈÓAæÈŽ<æ@þŽ<æ„CP8ò´SZ;áÐcN;Ž…Ó=æÈÓN8í„SZ8޵#Ÿó´#O8픎<á|ØAæÈÓŽ<õ˜#=áèÖŽ<á´sc89AáÈŽAáÈÓŽ<íÈcŽ<æ´C9òÔcŽ<áÈÓN8í„#O;¥…ÓN8í„ÓN8í8Ž<áÔŽøÔcÉæ´#O8ò´#O8ò´#O8ó$O;ò´CIáÈNiæ´SZ8ò„c `ü iA,Á'y˜Cá H8cz˜CþÑM;Jy˜£i‡<Â!pÈ#íG8>dŽXâz C;äsÐÃ¥i‡cÂ!v˜ƒ AHy„ƒ íAÚ!pÈÃò0Ç,¡ =@zíG8yÜÂbxÌ£÷H1~Üâáh‡<Â![ðñˆL¤"›Â[ð#òh‡< "vÈ£ =äQ ”&òG;Â!pÈ# ‡<ÌAv$ò‡9b‚´Cá H;bpÈ#iG8äapÈÃò‡<Â!pÈ#í‡<ÂÑŽp´#í‡c "p8†$1‡cÚ!v˜CíøþIÂÑŽp|(1‡<Â!p˜ƒ1‡<ÂAsÐãCáhG8Ú!pÈ#òh‡cÌ‚´#qL;ÂapÈÃòAÌ!pÐÃ1áG8Ús”& ‡<Â!sÈ#ò‡<ÂAp|(æ€Z;ÓŽÒ´Ãò‡Aäazè¦òhGiÌá2¤G8äs¤ò˜‡AÌay„C ‡AÌAv¤á( IäÑ‚DWjG8äÑy´ƒ æG8äyDáG8èApÈ#ò‡cÚaÇ„Ã1áG;Â!pÈ#ò‡<Â!pÄŽ1‡þc> eè ò‡<ø´‚´Cá‡AbÇ„£ò‡<Â!p´CáG8Jy˜£¡G8Ò‚´Cá˜A>°eÔ æh‡nÂÑŽp´CáhAÌ!ƒ„ƒ áh‡<Ì!v8Æò‡<ÌÑy´Cá˜Ç ñŒ: ò0G;äÑ‚„ƒæÈÅ"ÌàWlÿ H8èaŽ\8øÂÎðUnñy„Ž$‘G8@|XâòG;ÒÇ„Cí ˆ9JÓy„ãCæ0AÂAp´CáhAÂ!pÈà GiÂ!vÈ£òh‡cÚq£pÈ#íG;þèaŽp´ÃíG8y˜# ‡AÂ!pÈ#ò0GiÚ!p覎i‡cÂQšp8&í‡<¡›vÐ#ò‡<ÂÑŽÒ„ƒ ‘G8>Ôy´ƒ ípL;äŽvÈ#º ‡<ÂApÈ#¥¡G8JÓ‚´#òG;y„Cá0ˆ<Âay„CáÐM;Jy„CáG8Ú!pÈ#óh‡<ÂAzÈÃLJÌŽv8¦æG8Ú¡sÈÃòAÚŽv„cíG8Ú!pÈÃáh‡<ÌA®¶CáG;äy„Cæ‡9èy´CáG;äþ‚„£ ‡<ÂAp8Æô‡<Â!vÐ#j‡<Ì!pÈ#(0ô@y´Ã1‹0AÚay„à óG;b‚„Cá H8tÓŽpè&iG8䃄Cí‡<ÌñKÔJ½ÔLüp ÿ¥òÐòÐ1òP¥ð¿á á@aáàíŽÑá í íàá@í Ap¡¾á á *ŽÑá í *¬ô@á@!ÈaŽAáàí á ÒÆá á íÑáà$!á a\’­¾áàêŽGá á $Ñbò õþ ¥ðŽaÑæð!áÐáàá`òòæð!òòòí@á á`ÑŽÑaŽÑò`òÐòÐæ@íò`á`òÐòÐŽÑòaòí æ æ í`Ññð z@ò`ò–`ô`ò`òÐò`æàí á í í í á ô`ŽŽíPæ áÐòð–  z@Žòíò`òàâò`ò`ò`Ñòaò`ò`ò`ò`þò`òÐòð–  zô`í í á@ô`¹ ’„^è†~舞芾èŒÞèŽ~·Àæ@ô`¹ð蘞难éœÞ雾 ÿ@á á@$!áô –ðíò`ò`ò`ò`Žaá æ@á æ@á æ@æòòÐí æ áÐæ æ æàæ æ æ æPæ æ æ æ æ@á æ@æò`ò`ò`ò`òò`!æ æ@á æ@á æ æ æ æ æ æ æ þæ æ æ æ æ@á æ æ@á ..á æ æàæ æ æ æ æ æPæàæ@íòàâŽáâò`ò`ò`òàâò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`ò`¥aò`òíí â@ò@–ðáÐíàá á íàípºÑÑòŽÑòôô`áкí á@á æÀ'óàá`ŽŽþaAá áÐòò`í ô`ÑòÐ!áð‹ð z@á`Ñ’@í á@í æð!Ò#á á á á íPá á í@á`!Oà@xJÓ#¦];yí䙣gNž9z†“gŽžÅpæ.”gŽž9zæè™£gŽ^;yíÌ}€ôLyòÚ™«)/\Î]ÿ|þTèP¢EEšTéR¦M>…ª”ß­òÂåÜUëV®]½~ –ß-~íä…£×.œ9yær '¯Ôs5ÍÑ3G/çÂvæè™£—³]NyíçlgN^;yþ曣gŽ^Îpí䙣gŽ^Îvájš£gŽž9z‡Û6'Ï=sôÌÑ;,¯]lsôrš“gŽž9zæè™£gŽž9zæè™£gŽž9z‡ÃÅG/§9z9õ“gŽž9zæè™£—³]¸œár†3GÏ=yæä…£—Ó=sôÌÕ“g®¼pòÌÑ3‡sè1‡sè1‡sè1‡sè9,yÌ¡Çz Gsè1‡y GsèÉ©œÂ©ÉyÌ¡GŒzä)åsr2GžpÚ‘'y‘'œvÂ1‡y‘'yÚ‘§sj §¦pä ÇÂÚ‰­päi'yÌÉ©sè!¬pÚþ!,y‘'yÂÉ©yÚ‘ÇœšÂ©©pÚ g!yÚ‘§pä ''srú’gô CzÂiGžEÚ ‡°p §pj2'yÌiGžväiGžvj2'œvä '§…ä §&sÂi'œ…‘ǃE”у y̑ǜØjj'œv3GžvjZHsÚù5'sæ©éK”©€pä1Gžp’§pä¹*qÇ%·\sÏE7Ý¢nù§yÚ Gž[Ô¥·^{ïÅ7ßnùGžv«Çy‘'œð‘Ç’è1§ÂÌ‘'yÌ!l¡pä1'œv‘ǜpÚ §yÂi§¦pr §p3Gžvþè1§ÂÌY¨¦…b3g¡pä1'œvÂi¶¦p §pÚ‘Çœ…©i¡p‚†š0s §šÌY(œväiç0säi‡sÚiÖœ…jâKžpúµyÚ‘ÇœØÚÉ©¨ƒ6g¡pډ͜…Âi'¶päi‡°v‘Çy©)œœè‡ yè±äyÚ Gz©©_é1ÇyÚ‘'y©)œväYHžv Gs‘'œšÂ©©Ã‘ǜšÂÉ©y Gžpä '§väY(yÂ!¬yæiç0sä1GsäiGžpä1Gžpä çƒEžÑƒŒväiÇy,i'yÂiGžpÚ §&þsè ÇÂÌ‘‡9ä±s&5iG8äÑŽpÈ£±1=äaŽhâz CNÚ!¾´# ‘‡9äy´Cí¨ÉBÌA˜pÈ#ò‡<Â!pÈ£á‡9>`‰gè„1‡<"Ðí‚(GDb•¸D&6щO„b¥8Å)òãüXˆ eÔ í_౜˜ƒ0áG8Žœ„c ùU;äÑŽš´C€„2þ€pÈ£9 av!Fò–×¼çEoz‰r‹„ƒ0»Po|å;_úÖ÷ÿ=ÌA˜pÈ#òGèAK|` ‘G8Žœ„£&á‡9äaŽvÈ#ò0G;䎅„Cá¨I;äÑŽpþÈ#íG8rŽvÈÃáXˆ<Â!pÈ#òhGM‘“pÈ#ò‡<ÌÑy´#'áG8rÒŽš„£ò‡<Â!vÈ#íG;äaŽvÈ£òÇÝy„Cá¨I;äy„£&í=Ì!pÈ#í‡9±ÄCáG8äÑ„CæG8莜Ð#òÇ<äÑŽœ„£±i‡˜ky„CáˆM8äy„#6áG;jbŽÃ˜#„iÇaÄAyÐÃG8䱚´£&íG;ä±pÈ#í‡<ÌÑy„Cá Œ9ÂQ“vÈ#í‡9j²œ„þCæ ‡9äay´Cí8Œ9äÑŽš„Cá¨I;rÒŽœ´ƒæG8Ú!päÄáhG8Ú!p´#ò‡<Â!pÈ#€Ä3ô@†vÆçhV8äÑy´#í0GMæy˜ƒíGMÂ!pÔ$òhaÌAš˜CáhG8äaŽXâz CMÚy,$òh‡<Ú!pÔ¤51=±y´#òhG8äy„Cí‡<Ì!sÈð0þ€pÈ#ò‡<ÂQ“pÈãõÅ{Þõ¾w&òãÿGMÂ![ðÝð‡Gü|ùq ~ä$ò‡<Ú!vÔ$þôG)< vf!áG84“vÈ£á0‡<ÌApÈÃ5 ‡<ÂQsÐã0íG8jby´£&á¨I;äy´£&á0‡<Ú„CíGMÌQ“vÈ£ò˜G;äÁ—šð¥&áG8äy„CáG8äy„£&íG8äy˜£&áG8äaŽÃ´£&æ ‡œ˜‡p‡p¨‰v‡p¨ s‡p‡p‡p‡v Œp‡v‡v‡vyh‡p¨ s‡vyyXˆp‡p‡p‡p‡p‡p‡p¨‰v‡p‡p‡p‡p¨‰v‡p‡p‡pþ‡p¨‰p‡pȉp‡…¨‰vys‡p‡ps 1°Røyhyh‡p‡vyà‹p‡v8Œvs¨‰p‡p‡pȉvyÂè v‡fiy˜‡p‡p‡vyhy‡šhyy0y‡v0yyh‡_ yz Œvs ‡p‡p‡v‡v¨‰°eÐ1Xˆph‡pXs‡p‡p‡pȉv‡ph‡œ‡p¨‰v8Œp‡v‡…‡phy‡…¨‰ph–€eÐ2y0yhy0yyy‡š‡v‡vþ¨ z0¾‡p¨‰v‡v‡v¨‰vȉp˜‡€eЇv ‡p Œp sȅēȉ¤È.Ú…¨‰p sÈ…ŠôÈÉ¡¸…‡…‡v¨ ¾‡p€š°„yy‡v‡Ø‡v‡vyyy‡v‡vy0‡vš…‡v¨‰v Œph‡p Œv‡phy‡š‡Ã‡š ‡ph‡šyyh‡šh‡šh‡p‡p‡p8‡š0y0yxXyyhyhyhyhyhyhyh‡š‡Ø‡…8Œph‡pÄœh‡phy‡þšÂhyhzÂ0yyyXy0‡…‡p8Œp¨‰p‡ph‡šhyhyhyhyhyh‡šÇl‡šÇl‡šhz0z0yyè œh‡šhyh‡œh20Kð€…s¨ s‡ps¨‰phy‡…yh‡šh‡œy‡vȉv¨‰vy‡yhy0‡šyy‡v‡vy ‡p Œv‡p‡vǬ‰p¨ syy0‡phyyhyh‡p˜ å y°„gø2h„šhyzyy‡šhþ‡p Œp‡p‡p s‡…¨ sÈ ¾‡…yyy0‡°„gÐ2z‡p0z¨‰vs ‡…ss‡pÈ sȉp‡vyyyXˆp¨‰v0‡€„gÐXˆšXˆp Œ]ð‰H•ÔI¥ÔJµÔKÅÔLÕÔMåÔNõÔOÕPÕNå‡[ø‡p Œ]ÕUeÕVuÕW…ÕXU~¸…‡…yssȉ°Røs ‡pȉp‡vyhy0z0zzy‡Ãh‡šh‡šyyh‡p‡vyy0y‡v‡œþyyh‡š0‡šXyy‡vyyh‡šXyhyhyy0y‡šhyzsh‡œhyhs‡p‡v‡p‡p‡p‡p‡p‡p‡p¨‰p‡vy‡…˜‡vyÂ0y0y0y‡v0zh‡šXyyyh‡p‡v¨‰…ˆv‡v‡š0‡šy‡v¨‰p s‡p‡p‡p‡p‡p‡p‡p¨‰p‡vyyh‡p¨‰p‡vyyh‡pXˆØhyXˆyHFyhyhs‡…‡œ |‡þRøy‡š‡Ãh‡š0‡š0‡šyh‡yy‡Ãh‡ps‡p¨‰p‡v0‡œyzz0zȉs‡v‡vy0zhs ‡p‡v‡vy‡šXÇ4z‡v‡pȉd”‡p‡…ssȉ€eÐ2hyy‡E‡v‡v¨ zyh‡š‡œ‡v¨‰v‡p‡v‡…‡phy‡šh‡p˜‡…‡pȉp‡vȉ€„gø2¨‰v¨‰…sÈ s8Œv¨‰pz0‡phyh‡šhyh‡š0‡šXˆšøKP†:þy0yy0‡šh‡p‡[Õ&vâ'†â(–â¸~¨‰vy¸…)æâ.öâ/–â[ày0‡šhy¨s‡p‡p€³„ Œphy‡œ0 ͉p‡psy0‡vyyh‡šh‡šhyhy‡v ‡p¨ s‡œ‡v‡v ‡p s8Œps‡p‡p‡p‡v‡p‡ps¨‰vȉp‡ph‡š sȉp‡v‡v‡v‡v‡v‡v‡phy‡šh‡š0‡…‡v‡p‡pˆpȉp‡v‡v‡v ‡p¨ sþ‡pXy0y‡v‡…‡vs8Œv‡p¨‰ph‡š‡v¨‰v‡v‡v‡v‡v‡v‡v‡phy‡šhy‡š‡v‡p¨‰v‡p¨‰v‡p‡p‡pXyv¨‰p‡p¨‰v¨‰v˜‡v1z°„‡š‡šà‹p€‡v¨‰vz0‡v¨‰p¨‰v‡v‡phy0yhyhyXÂ0y m‡psÐPsȉp Œv¨‰pshyy‡vȉp‡p‡v‡œh‡š0‡š¨s‡p‡pøH=q‡v¨ I‡þp‡v‡šyyss¨‰vȉv¨ s¨‰p‡v¨ s‡p‡pȉv0yy0‡`Ð2‡šà‹y‡…¨‰vy‡…˜‡p‡p Œ…˜‡p‡p‡phyà‹Ð‘søHx=yhÂXy]ãôVïõfïKå‡[ø‡…‡ÐÙ…ö¶ïûÆï(æ‡[àyà yz¨‰v¨‰°Rø€p‡v Œp‡p‡v‡…yyyhyh=–‡v‡ps‡@”‡vyhÂh‡p yXˆyhyyhÂh‡ph‡pþ‡pȉv‡vpÌv¾0yy‡šÂÂÄ@<Œp‡v‡œ0yh‡šzyh‡y‡œXy0‡œyhyXˆœ0yyh‡œ0‡œh‡š‡vyh‡šXˆšXy0yˆòBo‡Ãyh‡š‡Ãyh‡šyh‡p‡p‡p yh‡yˆv‡vy¾‡š z‡Rø€v¨‰vyhs ‡v0yy‡œh‡p¨‰…yy0‡œ0yh‡p0y‡šÂXˆp‡p‡p0z0zh‡p‡p‡ph‡œ‡šyþyh‡yy0zȉp¨‰…yhyhs y8yh‡phyyz¨‰v¨‰°eÐ2¨ sXˆEy‡œyyXyhÇ ‡…y0‡pȉv‡p‡pz‡œh‡ps ŒyøHP†?ƒš‡vsh‡pà‹p¨‰v¨‰p Œ…‡p‡p¨‰v‡v¨‰ps8Œ°„gø¾‡vÂØ…üû°ûP½~ÂØ…±WûµgûH½…‡…‡v¨‰p‡p‡p€³„¨ s‡pXyh‡œ‡œhyhy‡vþs‡phy‡vy‡v‡p‡v‡ps‡yXˆšy‡v‡v¨‰v¨‰phy‡š0y‡…pÌpè y‡vyy0y0y0zÂyh‡p‡p¨‰ph‡psssssy‡…‡v¨‰ps‡p‡ph‡v‡dœ‡v‡v‡v‡p¨ sy0‡pyòè™hN^8íä…k'/=sòä™k®];yáä™›ØNž9yæä™“gNž9yæä™ '/Fyáä…k7Q^8ŒòÂÉ ×n¢¹›7Ùk®¼váþä™»ÙN^;yí&¶Cž¥æÂÉ3'¯Pzáäµ›Nž9yáä…›Ønb»yínš“WÏœ¼væ&†“Nž9yíäµz³¼vÃÉk7±¼v͵»ÙN^¸vòÚÍÚN¨9yán¶N^8yá<”z¦‡L8yí&JšN^8yá赓gNž9yíäµ ‡Qž¹‰áèÉÃ8/ÜÄpôä…›Ø.œápòÂÉ3÷¡°?dÂM '´ÝôXòA;ò˜cX;ò„ÓÎMíŽ<æÈŽ<á´N;ò„ƒQ8ó´#O8íÜÔŽ<íÈcŽ<áÈŽ<áLÔŽ<æ´N;ò„ÓŽ pÈ£òhÇDÂ!pÈ# F0EyÐÃò}äŽv„£ò‡<ÂÑŽpÈ#òG;ÂApܤòh‡<ÂÑy´Ã0íG8nŽ›„Cæ¸I;äApÈ#Áˆ<Ú!vL¤¡<ÂñHCdJ;,ú´#æG;æ!3y„CáG;ÂÑŽpÈÃòG;Â1™É#íG;&މ„ƒBi‡9äaŽ”z ÃDÚqsУòhG8äÑŽ‰˜Ã1ÇDÌ!pL¤á‡9äÑŽ›´#þò‡<ÌñK<ãF&ÒŽpe»;*R“ªÔ ñãÿh‡Pv±Ô©Rµª¬ãÇ-ø!”v„Ãò0ÇM0‘R|`í˜È<è#”pÈÃò‡<Â1‘pܤBi‡<Ì1‘vÈl"áG8äy„CíG;ny˜C(æ¸I8sУæG8&zÈ#ò‡<ÂAvÈ£ò‡<Â!s%òh‡<Úa˜pÐ#ô‡<‘pÈ£æ G8X8‘v„ÃôhG8äsÈÃò‡9äy„Cí0ÇDÌA‰„Cá0L8è1ŒÈ#71=ÚŽ›„Cáþ ÇDÂApÐc"áG8Úމ´c"í‡<ÂÑŽpL¤i‡9äy„CíG;&b¡´c"ô™H8Ú1‘v„c"d ` eè‘G8äaމ´#ò¸Åê¢-íiS»Ú¢?èyÜÂÚÞþ6¸Ãm¢[ð#òÇDêay„Cá>èa ´C2“G8äaŽv„£áG;äÑy„c"í˜H8Ú!p´#óJ8„y˜ƒáG;äy˜#í˜H;äy„c"íG8&ÒŽ‰„£†i‡<02‘p´Cí¸ }nÒ¡„£áG8Ú!sÈ#òÇ¢Âëv„£áG8äL…ƒ…ðh‡<Ú!vL$7 Gþ;äÑŽ‰„£áhÇDÂy´ƒæÇMÚ!pÈÃB ‡P02‘pÜ$ò0‡<Â1‘pÜ$ò0‡<±¨p`Dáh‡<Â!pÈÃíG;àsÐÃáhÇMÄ!zÔÃh‡PÚ1‘vÈ#1L;äQRØCá O8 ŽvÈÃ7i‡<Â!pÈ#òG¬Í!pLÄáhÇDÂÑy„C혈9&Žv„Cá`¡9äÑy´Cõ0‡<Â!p|@ÀÐäŽv˜C‹‡9äy´Ãôh‡<ÐG8ÈC8LD8ȃ9ȃ9ÈC8L„9È}LD;LD;„ƒ9þÈFÜF„ƒ<˜Ã”Â3è˜=ȃ9ÈC;ȃ9ÜD8˜=´ƒ<„ƒ<„ƒ<„F„ƒ<´ƒ<„ƒ<`„<´ ̓9|$ƒ@;„ƒ<„=ÈFÈCI킸M!Va¸í?„ÃD”Ô.X¡~!Ú?Ü?˜ÃD´ƒ<„=LD;LÄÈ=”´C¬MD8ÜD;„ƒ<„ÃM„ƒ<˜=ȃÌÈC8LD;„¦˜ƒ<´<´ÃD˜ƒ<Ї<„ƒ<`<„ƒ<´C8”T;ȃ9ÐC;„ƒ9ÈC;ÌC8ÈC8L„9ÈF„ƒ<˜ƒ<´C8`„9ÈC;„ƒ9Ѓ9ÐÃD˜ÃD´ƒþ<„ƒ<„ƒ<„ƒ<„ÃD´C8´C8´C8ÈC8ÈC8L„9ÐC8ÐC8ÈC8LD;„C;LD8ÈC8ÈC8´ƒ<`„9ȃ9ÈC;˜ÃD„ƒ<´ÃM´C8L„9Ѓ<´C8L„9ȃ9ÜF„ÃM„ÃD´C8LD8ÈC8ÈC;˜C;ÜD8LD;ÈC;ÈC8ÜD8LD;ÈC;ÈC;„F„ÃD˜ƒ<„ƒP„ƒP„ƒ9ȃ9,J8LD)|À<„ÃD´C8´ƒ9L„9ÈC8´C8ÈC8˜ƒP´C8ÈC;ÈC;ÜÄ0v„cíH8äŽv„CáG;äÑy€D G;Ž„CæH;äŽvÈ# GšÌ!pÈ#íÄ?ê¡1y࣑>(1zàC"ø¨‡DêzàƒõÅ$B1zÈô(ÃèQ|Ô Ã=F²Ñ£ø¨>&‘zàƒõ G;$± yœÃ?æG;æáKð£=ðASJdf©GÄNISJfôÀG=ðqJŠáƒa‘>èQ‰0 0£G=ä!‰]´#òG;äaŽvÈ£á‡8þÚ!‰Xâí‡<Â!v„còhG8Ú1s„£þ¡‡9bŽv˜£áØ 9Â!p ¤óI8üÓy€DáðO;èaŽj íðO;üÓŽpÈà iÇ@Ì1vÈ£òhÇ@Ì‘¦vÈ£ ‡<Â!p| ÀÐÒÔŽEÈ£þiG8ÌAD™Cí‡<Ì1pÐCíG;Â!pÈ$iG8äÑŽpÈ£ò‡<Úás|`ÏÐÚ1sÈ#í0‡<Â!pÈ£áhG8Ú!v„CæHü’pÈ£iG8õECðO8äÑy„CáÇ-ˆþ’[Ýî–·½õíoOÂ[ü# ‡Q@B¡"ÚAÚ!MÂAÌ¡ÂÁ?è!èÁäÂAÚAÂAÂAÂa @BÚÁ?Ìa ÚA¡äÁä!ä!@"ÚÁ?Ú!MÚA¡¡ü#䡢䡢èÁä¡ä$§ä!>žAÈ€á¢Á"¢ÂAÂAÂAÚAÚþAÚ!@"ä¡ÌAÂAÌ!MÚÁ?Âa Âa Ú!ä!ä!äÁ>@žáÈ ÌAÂAÂ!M@"ä!üçÚAÌÁ?Ì!MÌA¡ÂÁ¢ÌA>`žAÀ@"ü#ücÎ.µq¹±ÍŽnáÂ!MvÁêÌñÑ1ÕqÙ‘ùáøa ÚAÚ!ÌAÌÁ?` Jáä!ä!Ú!Âü#ä¡‚CÂ!MÚaƒÚa Ì!MÚ!ä!èa ÂAÂAÂa ÚA$6¨$Mr æQæá$ÓdúeJräÁèa æQþæ¡Bna ÚÁ?ÌÁ?ÌA$bücÒdücücX2Mæá^æÁ?æ!Mæ!MæÁ?æ¡$ça æÁ?æÁ?æ$$!Úa @BÌ¡ü£ä¡È@è¡<@ÂAÂa ÚAÎ?ÚÚ!ä!ä!ü£ä!Ò¤¢ä¡Åäå$ä$Ìa Ìa ÚAÂa Ì"äÁäÁä¡Ìa Ìä¡Âa ÚAÂAÚaÂAÂÁÒ$ä$ÂÁäÁüã$áþ@ ¢ÂA$a ÚAÚ!î¥ä!ä!äÌa Ú!þMÚa ¡¡¢"ä!Úa ÚQ>vAÈ MÚAÂA¡Ìa ÂA¡ä¡äÁü£ä!"Ò„ÌAèÁÂAèÁ>À”á` ÌAÂ$ä¡ÂAn¡Q4EUtEY´Eÿáøa Ú!äá\ôFq4Gu´EoáÂAÌ!¢ÌAÂAÂ!$Â<` Ì!MÚÁ?ÂAÚÁ?Úa ¡¡ä!ä!ä!Ú!|J¡ÂAÌAÚAÚAÚa è!"@ÂþaÚAÂa@BÂa|J@BÂAÚAÂþaÚa ÂAÂAÚa ÂAxѧü£ä!æAÚAÂa@b.UxQ@b æA@BÌ¢$aÂAÌ!Ò$ÚAÂÁø¡ä¡"ä$äÁ§ä¡¢ä$æ$ä¡ä¡ä!æa ÂÁ§ä!æ¡ä!äÁ§ä!"ä$ä$䡪!ä!æ¡ä!æ$ä!ÚAÚAÂAæåAhAÂAÌÁ?Âa ÂAÄ¡Ä@",áÂÂa Ìá^Â$"Ò$ä!ä!ä!äÁÚ!ä!ÚAÂ$"à¡äÁþÂAÌ¡äÁ%Ò¤ä$ÂAÚAÚ!MÚa Ú!MÂAÂAÚ!ÚAÚÁ?ÂAÂa Ìa êÁä!ä!>žáÈ$äÁäÁ¡ÂÁè!ä!ä!ä¡ÂAÚAÂa @ÂAÂAÚ!ÂèAÂ$ÂQÂAÌA@"äÁ> ž¡È |j Â"%Ìa ÚaÂAÂA@BÂA¡ú¥äÁ>€A üÃä$äávaG…wx‰·x•Žná@BnŒ÷y¡7zY”nÂä¡ä!èaþ Úa @"JáÌä!ä!䡿!ä¡äÁä!ä!ÚAÌä¡ä!ä¡¥Âè¡ü$ÂAÚ!¢ÂÁ?ÂAþ!ü£Ìa ÚÁäÁä¡à¡ä!ä!Âä!ä¡Â@BÂA6á@J‚ â  Âä¡ÌAÌAÌAÌAÌAÂÁä!"ÌAÚAÌAÚÁä!8äÁv¡$ÂQÚAø!""ÌAÌAÌAÚáä!âÂÁ6á , Î!¢äþ¡ÌÁ?Î?Âa ÌAÌAÌA|ª@ÚÁüÃä¡‚áüãÌAÚAÌA$áä¡ä¡Âa ÂÁ?Ì¡Ú $¢>Àè¡ÂAÂa ¡ÂAÌAÂÁ?Ú!ÚÁä!ü#è¡ü£"Âü£Ìá^æA@"äÁè!Ú!ä¡ÂAÚa ÌAÚ!Ú!@"äá@"ü£¢ä¡ä$ä!è$ä¡ä!èa Úa >@”AÈ ä¡ä!aƒÚa Ìa Ìa ÂAÌ$ä¡ä!¢ü#Ò¤ä!ä!þü£äÁüãAô€ ä¡äÁ¡"ÚÁ?ÂAÚa @"ÚÂa ÚAÚAÚa ¡ä!ÚAÌAÚA>À”áÀÂ!MÂ!MvAzÕz­ÙšênÂ!Mv¡­éº®íÚ$váä¡""ä!ä!@",á"ä!ä¡ÂÁ?Ì!ä¡ä¡%ä¡§¡ÂAÂÁ?|*Úa Úa ¡ü£ÂA,áä!8äÁä!ÎA@BÂÁÚÁÚAÌAÂa ÂÁ§ÂÁ@"Ú!DAÐ ¢a àÚ Ðaþ @NÂAÌå!äÁäÁÒäÌa .ÂÚa @Bv$Ò¤¡Â$$áäáÚAÌa Ú!"Ìa ÂANÚA ´H¡ÚA‚$®ä!Ú!Ìa .ÚAÂA|*äá¡ "8ÌAÂÁÚ!"8Ìa Âáä!$áÂAÂÁ?ÚAÂ$èAÚA $Â> _ÂQÚAÚAÂ!MÚa Úa |*äÁä!¢ä¡¡ÂÚA¡ÂÁ§¢‚Ìa Ìa Ì$ä¡Å¥þ"äÁÂAÌAÌ!äÁÚAÚAÌ!ä¡"ä!ä!>€AÈ Ìa ÚaÂa ÂAÂAÚ!¥¢äÁä$"äÁä!¢¡ÂAÂAÚa ¡ÌÁ?ÂAÌá,áô€ Úaü£Âa Ú!ÚAÂa @b¢ä¡ÂAÂA@"ü#Ò$ä¡àá áôä¡ÂAÂAÂa ÂAná®~àŸ—ná¡ä!äáþá!GùáøAÂa @BÚAÚa €ä¡> ü£üãÒÄä¡þ¡ÂAÚAÂAÂ$Ìa ÌÚAÂAÂÁäÁèÁä!ä!Âä!ÚÁè¡äÁø$Ì!8äáÂÁÂ$ΡÌ$ÂAÌ!ÚáÌAÚ!ÌAÂA¡jÀ§Äá8@ @ġ̡ÂAÂÁÂÁÂA¡ÂA‚ÃÎ!äá¡"8ÚáÌáÎÁäAr¡¡ÂAÌ¢ÌA$|*Úá‚CÌá|êÚ!@ÂÂáÀÚáÌÐAº@J@Ì¡à <€,@ÄA¾ÁþTÀÂpÀ€Ä!ªAÌ!@BÂ$Ì¡Î!@BÌ!@BΡäÁv¡ä!ä!Ò$½vdðÉ+õ!\»váä…“×.œ¼váäµ3'O^8yá䙓·p¡9yí2š Î=yíLº”·0œ¼váÚ™l—±¼øñäË›¿õ/œ¼p!ÛË €=KÚÉ ×N^¸væä…kç’9µ3<íÈÓNFæ¼dN;MÉCO8ò´ãR;&-$$ÿ˜cNHáœÒ9æœÓN8ç˜Î9ç´£âB*žÓÎ9áœN5üŽŠèpB€9È€ÃÒˆóâ‹íN;áœNH樎Šá„³Ð”ç´cN;áXB‹KídŽ<æddÉ?*š£¢9í¨ØÎ”nšób;çTÀ/á¨È¡9ÓþÎ1/p°M5è`8lLpN8' 9¥´sN $lƒÎ 4„³Œí¨hÎ9í˜N;æ„Sd;瘣b8ç„#É.ædÔNFáœ3I ‰!=–|‘9ò„ãR;&™#O8í¼Ž<f´<á´Î<íÈcNF …ÓN8ò„#O8ò˜#9ò´cR8ò„ÓŽ<áÈÓN=æÈÓŽ<íÈÎ< ÉÓ=æÈN;ò„ÓŽ<áÈcNFí„ÓNFæ´#9ò´“QHò„ã$ÏèA=ò„CO;‹„#O;ò„#O8…#O8ò˜“Q8ò´ã’9ò„ã’9/…ÓŽ9&µ3O8ò˜#O8ò˜ó$ÏèþAFFáÈcŽ<á´ãR;áÈÓNFÊÓNFæ4ÕŽ<í„cR;áÈÓŽ9Xò̸´P8.ír\ÜrÏMwÝvßwÞzïÍwß~ÿ-7?·üÓŽK»ŽxâŠ/ÎxãŽûÍÏ-ÿdÔŽ<í„cŽ<昀|¥|NFí4N;ᘎ<í„cŽ<æ˜ÔÎ<ç„cR;ádŽ<ádÔŽ9ò„Ó^8íä)$ÿ¨N‘àiN‘‚sŽ9EiÎ9á €4E€7ÈP€òi΋à¼΋à€3}‘à˜£b;à¼ØŽ$¹„R8.µN;’üÓ>sœí{8Îd@íÇ9ÌŽþa Ë€8ÎadàÓÀ/Б§iàà2Žeàæ@Ç9À¡"p¨¨* 9Î!Mì"$áhGFÚ1%“´ƒ ôG)<à’…„CæG8^ÒŽpÈ# =äÑŽp˜Cáp ‡è‘‘…˜$ò‡<Âñ’pÈ#òGFÂ!pÈ#ôÈÈ<Âa’pÈc!.1‡IÚ!pÈ£á0I;\2pÈ£á0‡<Ìa’@â ƒI²“„CíÈH;^²y„CáhG8^Žvd$í‡<Âa’vÈcJíxÐ,ñ =á%íG;䎅˜¤ò0=2bŽ…þ˜$íiGFÂ!p˜ÄòøÀ"”¡„£ò‡<Ì‘‘v„C·˜›9ωÎtªsìl§;ß ÏxÊSn´àGHÂ![ÌsŸüì§?ÿ Ѐ¦óÿÇBäayÔÃò‡<ÂùXâ G;äy„Cá0I;äy˜£/ ‡<Âa’vÈ#& =Â!p´##íG;äaަ˜Cÿ88Îsœæ˜Ò9ÌŽª(àGžÎaŽs¬oø…9ÎŽv‚Û@:QpèæP‘9ÂaŽ)MÏçÇ9ÌqsœÃ/Ç9ÌŽpœæ‡&h‘sdþ$ò‡IÚ!‰˜ã:8Ι£Hy:G8À± üÂ/Zß&.à€Ð `ËÀúÀ± €cG8ÖwŽeÀ¨-±Œ¨(àxQ8TŽCEæÇ‹Ì!‰\´CæÈH8Úa’pÈCíƒ|,ñy„#$i‡<Â!pÈ#òGFÚ!…d„æ=Ì‘‘)½$ò0‡<Âñ v„£á G8\“´##SÊH;Î!vÌ£òÇB2y„CípI8äy„£áXˆ<Ú‘‘z˜CáG8> `è áG;ÌAE„##í0‡<Â!v„Cþí‡9LÒ“,$òGFÚ1“„ƒòhG8Ìñ’p´#ò‡<ÌñHÃëãÐúÌqZp˜c}ç˜8às¬O'è@81€pÔ¢þ:8ÇúÌnpäÉëãÐúÌsœÖà08̱>s€ÃíÄ-Ì!vd$ò‡<ÂayHâá68òŽ<…Ûán€ÎaŽÓNcŠÐÆ6!€m,Cà˜Ò2ŽiàáîF~± o¬/ËÀú8s¬CëËÓi͵ù0=äÑŽŒ˜Ã$á ‡<ÚA|˜£0‰9äÑs¸$ôh‡<Â!v„CíÇB”‘…„Ã%íG8äy„Cá0=^ÒŽp˜$$ápÉ92by´#&iG82z„ÃòG;2z´Ã% 1GFÂAŒ´##þ€D4ô †Œ˜Cá°„<ÂÑŽŒ´CíÈH;L²pÈ#íGF莌„#$á0I8LÒŽp,$&i‡<Ú!Hâƒ9äApÈ£òÇBè—„£/iGFÂÑŽp´CæÈH;\y„°„2þ0íí.± ˜¦€ È€ h»ðòÐ&± hˆµ ÿ@æ !!á á áò€–ðæáÐaòòÐòòò`í áá áí áÐòí á°.±óÐò`ó°áÐáЖÀÞÀ…þàà ëã æà ës è`Þ°>×€æÀ…æ°>\¸>\è × €Ûp K@¿ ÈÛ€Π:°>rÞ`rè æ\hàà àà àà æà àÀ…èÀ!ëã í  ¹æ°&ÑÑ–ðæ°>æpZÞp è€Ñ€æpZÞpZ× €Ê ¤Ý¿€Þð° Ëàà Û° à ×p$° èpà° -@ÛÇÛ° à ëã æà è`\¸>rhàà è`Þæ » í æ ááÐô`âÐb@õ`  þáÐò&±Ñ.aaòòòíò`íá á æàí í`á á áíóÐò`òípí áá á`íàíáÐaòòò`òò Ïðdôí°ò`òæ íòÐá !!í`á í í` !á á í í0ò`Ñá í0á æð‹ @í`ææ íííá áÐá áàí`ô á`òòþòÐòÐæðð zá æ@òp hœÇ‰œêÄ·ðíòòp ÉIÕIüp ü` òÐòÐò@¥ðíæà&ÑòôÐ.±òô`ò°.a&aòÐá ææa.aò ÿà ëÃ…æ ˆæà Ûp rÛp Þ\¸>ÞÞ`\¸ Þp qp€%P Û° ÈÛp ÞP  à`Þ`Ѝ£àà àà àà æ ‡æà à° ×p r¸ í ¹àíòÐò–Ð:Ê…þàÀ¢à° ×à àÀ…æà Ûà Ûp qp PÞ°à`Ë \hËఠǀ *Û0 8ðG° Ë à ˆÛp XªˆÛp Þ`Þ ’ í&Ñá°žòÐd ¥àò`ÑáÐæ á íí¡*í0á á@ÑòòÐòòÐáíòÐòÐòò`ôÐá`ô`’æ`á á á á íò°áæ í í á æ@íò°òÐòÐñþ–  z@ ! ¡jò1í æ æ á`æ òÀ!í íæÐá í@æÐ&aí`P Ê d á°.±òÑòò&Ñòò.Ñ.±ñ–ð u.íá@æ Öɵ]k·Àæô`¹àµg‹¶•v ü°á æ!!á0òa °&í òÐò°òòí í`á0í áÐ !áàí`áá áí ÿà Hê Hê Hj× ‡Hþj× ‡Hê Hê ×`× ˆá°>,º Hz Ûà ×À…×Þ€¤Þp Þp Šx \È»Þp Þp æp Þp Þp Xjá ·íò`aá æ’ð×`Hj:z rx æà ×À…×°>àp ÛÀ…à° Þð Ûà × »\ˆ¤Û ˆ×`Þ€¤,ê æÞp Þð Þ° \x Šx "‡×`Šx á`–p &.Ñá æd–ð.a&Ñòò@æ ííòí`í` í áí°žáæá`æòÐþ¶ºA¡jëÙaò0&&aó`«ÑLí áàð z@á æ á` áí&òÐá`ëòôæ@á@&Ñáªí æ áÐ&ò` À dííò`òòòÐáàá íá á áÐæ íÑá í`í`` Ï Ðá`í.± ÍÑ,͘Æ·ðò&± ÓÌÍÝìÍýÄ·Àæ@æ@òæ æ`@òP á áªá á`òòþæ á`áÐ.Ñòòíò&Ñòòò`ô ÿÀ…×À…×À…¼‹¤\HÒ×À…×À…'-‡'} Þ@ÒÞ€¤Þp rx Þp Þ@ÒÞ€¤rx ÞÀ»Þp Þp Þ€¤Þ@ÒÞ ’° ÑÑëÙ’À×à .} rèÒ\È»Šx ŠˆÕa¤\x ÛàÒrˆ¤Þ€¤Þp Þ Ö$í ò ¹í a d ¥ðó&òÐ&aôá æ@òÐá ææíòÐá áí`á áàíþ í!!! íòí òÐáí S’á á í0%ò°áÐáá`ò`&ñ–  u@&Ñò°òÐáªáÐ&òÑòÐëÙò`á`á á æÑòÐò`á í ` Ê b áàíªæá áæí`᪠aæ@æ  »ð`á æíòp ߬â+Îâçt ÿÐòÐá ·Ðâ7Žã+¾ üàí õ`òò€ô` ÐôÑáÐþáÐg,íàípÑòò°á0òÐ.Aæ  aòÐëi’ðoýÖÞð Þð pnçwŽço– á æ á°òí æ ÿ狾èÑŒéò ´ áÐ.aáÐáb –àí á°aáÐò.&Ñ.±ÑòÐá á áàáÐòÐò`aæóÐ.Aæ á@æÐò`ò.ÑòÐÑíàí æ õ`òò Ï dÐá`òЋ`þôòíaô°òòò`òÐá°óp.±á á æí æ æàæ æð @òòòÐóòò¡ºaò&ÑáÐá í`òëiP ÀðÐá á@ò°òpì»ãUoõ È·À !Ǿ Wöa¯hüp ü°áá@Ñ1ò`¥ðí íaôáá á á`òÐá í æ°á í íS"á áí í á íò&! ÿþ€¤Ï€¤Ïp Ïà $ý Hú Þp Ï€$ý Þ€¤ÏðÖÏà oý Þð ÞHú ÞÏp Ïà Ïà $ý ×ð ÞÀ»Ïà ¼+š° íà ±ž’ð'ý ÞpÒéð ~ ÏÀ»Ïà Ïà Ïà $ ÑpçÏp Ïà Ïà Ïp Ñ€¤Ïà Hš$ Ñ¢™Ó´KÞÁpòÚdÈ =|¥>0l®Ãváµ '/œ¼vÍel®]8yíÌÉ '/ÜÁvæèµ“×î`»pí†3×a;síµ çó`8yí†;Žž¼váÚ™“×.\;yíš“×.œ¼væèÉkǰþÝÁ–”ý!ÓМ%†íŒ†›'¯Ïvòè™ 'Ï\»píšóÙÎh»p>?Xz¦‡L8yíäµ ×Ž^8zá¶ '/\;xí|¶“Χ9yá†k'¯¼‹”éÐŽaÆp wýãÝÛ÷oàÁ…'^ÜøqäÉ•/gÞÜyò[ÿÂ5ÜõÜúuìÙµoçÞý¿v à '/œ¼pðá³ôÁ\»ƒí¶ w0œ¼vòÚ1<.ãAs Gžp Gžpä §y‘§yÚ9¨y2 Ç’¢¹æ™k:Œg®y¦Ãg®ñ景yæšg®‰g®‰¦Ãgž¹æ™kž‰æ™k¢yæšgþ¢¹æ™kj|&E¢yæš$S¼æ™kž‰æ™h®‰g®‰ætžèy$ÉEžpÚ gžvä §pÚ Ç’ž¹æ™h®yæšg¢©Q k¢yæš;|&#¯‰æ™kž¹ætžq2Åg:Œ&Åg®‰æšg¢éð™kj|ôšhžAç™h®yæšgzæšhžñæy$Ù%œvÂ9ÈœŒæÉ(œvÄã K>GžpÊHžpä1‡$†Ú‘'œväÉHzÌ‘'œƒÂ‘§y2bÈœŒä ‡¡pÚ‘‡žpä §p¢ÇzÌ9(œvä Gžp"é v2'þ2Gžp ‡!sÊHžþpä Gžp>€=ȧpäiÇ’pÂ1Gžpä §ƒÚ Gžv‘'œŒæ ç vø ‡¡ŒÂ‘§pÚ Gžp2’§pä Gs>€=ÈhGžpj‡¿vÂ9(œƒ2 ç päi'y‘'y¡ç vÂ9¨sä1çHžÑ#’2’'œƒÂ‘çÞòÖ{o¾ûöûoÀ|p 7üpÄW¼p~nù'œƒÂ‘ç–Å+·ürÌ3×|óÍù¹…Ÿpä GžŒäiGžvà R>'yÌ‘'œvÌ¡'#†2’§pÚ9ÈyÂ1‡yÂ9(œƒÚ XžŒä GžpÌ‘'£päiGþžv$áG g¢y&šg¢y&šg¢yF g¢yF g¢yæš•‰æ™$z&šk’¼æž‰æ™htèyF4žg\ãÑxF4ž nD£CѸÆ3®a$Ô(IÏh‡$rÁs´#`íÄ?žkDãÑè@žgäѸF¢qhtèyF4žgD£FÑxF4ž!E£FyF4žk<#ψF‡žgDãIªQ‡ž!gäѸÆ3® yXbiG8’‘pŒ )ÅÂApȃ$ò0=Ì!Œ„CíÇAÚay„ƒ?í8H;Ì!sÈ#òþhCÂ!pÈ# i‡<ÂÁp$ü ‡<ÌqvÈ£á0‡<Ì!p˜Cí`H;ÂÑŽpÈ#ò‡<ÂqpÈ#ôG8äÑŽpÈ£òhÇA<` eè á8HFÁvÈ# G;ÒŽƒ´ã æ`H;y„ƒæG8þ„C‘‡9äÑy´C„2ô@y„ã áG8ä†dä á‡9Žƒ˜ƒ!á G8ä‘þ„ã í˜Ç,¡Œ: ò0G;äÑŽƒ„ƒæÈ…å\úR˜ÆT¦3¥éàvñƒ„ƒæÈEM}úS U¨.½Å?莃Ä-#òþÇäAK| òh‡<ÂAsȃ$ò‡<Ì!p0$Ë ‡<ÂÑŽƒ˜£áG8䎌ȣ ¡G8ÚqpÈ#í$–÷WÀÄåO:øCsðÇ€mÇ_ÅÑsÄüi`%A‹gÈ#ç=Ì!pÈ#‘‡$b†˜ƒ°Ë3`Û±Úƒ´cµæX­9V›IÜâá‡9Žv$ò‡<Ä!zÈÃà9äaŽ€™ã á`H8ŽvÈÃóhÇòÂ!pÈ# iÇAÚy´ã áh‡<ÚaŽƒ„Cá`HFÚ!sÖíG8Bp,¯òhÇþAÂqsľòÇJñ =!òG;ä±ydä 9ˆ92y˜Cá8È9Â!s¤ i‡<ÂÁpÈ#i‡<àц´cáÇJñ =ˆAí‡<ÌApÈ#í‡<ÚŽƒ´ã íG;Âqvð§òhG8ÚŽƒdÄò0Ç ñ = ò0‡<ÚŽvðgC¥sí|ç™òãÿvg@ZЃÖ?nÁy´#òhG8Ì!s0d)ÅÚaþ´Cð0ÇAÂÁpÈ#ò‡<Â!Œð§á‡9èy´CæG8äÑŽpÈ£ò0CþÚ!s0’ 6$ˆ½b'Éfv³!! HD;ÚĆ„&$mbk¢Ù’X„$ ±mp'É^D¸“½‹h„ƒ!áG;äÑŽƒ˜Ca6$4aîfC"Ù‹$ÌíE@Ü$ˆ ‰EÌ–v´ñ½mKX‚ÑàO;bŽƒ„ƒí8è!R| òCÚ!p0¤ ‡<Ú!v„£áhÇAÚ!v˜Cí‡<ÂqvÈ#±o8Úaz„Cá`H;ÌAv,/ò‡<ÚÁpÈ#òhG8äÑŽƒ„Cá`HFÂ!pÈ£æG;äц„Ãò0C>þ°ˆgü òh=ÌI„þá‡9ÚaŽƒ˜CíG;䆴ã á°o8ÒŽp´Cá8H8äy„CáhG8äAsx`ÏøÚ±ZsÈ#íG8äaŽv0$ò‡<ÂÑy„ƒ?á˜CÚ!XâÌ!û†C·X\õ­}ìg_ûÛçþ-øqv„C·à~ùÍ~ô§_ýÿ¸Å?ÚÁsÈ£æG8ÚŽÐC–ø€9Žƒ‡ƒ‡v8ˆpz‡€±/y‡vs,z0‡ƒ0yh†h‡ps8ˆŒ0‡h ÜܼÜ\þÁÜZ¸ZØZؤAÜ…[¸Á[ØZ¸ZØZØZ¸¼…ÌÁ[ …ÜZØZ AÜ…[XÁ\Á[ …hàs‡ŒsÈyh‡p‡gØÜTB¤…[Á] …] …] …]Á[XÁ[ÁÜZÈAZÈAZØZؤA¤ÁìÃ] …Ü…[XÁ[hÃ[ …Œ†ƒy‡v‡p‡Œ‡v‡ph1 z°„ ‡p‡p˜‡v‡p‡ph‡p°/y‡Œz0yhyû’‡p8ˆp8ˆp‡v`ss s8z0yþy‡ƒhyy‡v‡p‡v‡pÈyhyyhþ‡v‡v‡p‡ps ‡p‡v8ˆp‡p‡pÈy¨s‡p‡pøH= ƒpàIs8s ‡ƒhþ˜s8s‡p0y†˜yys †Èyhyhyz`ˆp yøI= ƒp‡p‡Œyyh†Èy‡ƒyhyhy‡ƒyy‡ƒh‡ph‡p‡v0‡X`Ѓh‡pàp8s0‡]Ø·|K¸ŒK¹œKº¬K»¼K¼ÌK½ÜK¾ìËþ¼á‡[ø‡Œ‡µÜ¿ýúöãÓâW´]8y·î €Xþ Þò<æ´cAô˜#O8ò„=ôXòAáÈcŽ<áÈ3JæÌS”Jæ„#O8ò„#O8í„ÓŽ<æ„ÓŽ<ádÎ<*…ÓŽJEŽ<á´”‘á´CÐ…K†#9ò´#9ò´C9ô˜C9F%9…#=æÌNQòÐN;µ#O8EÉÎLô„£R;ò„CP;ò„£R8ò˜Î<íÌÔÎLíÔAô˜CP8µ#O8ò„c$Aá¨ÔN8ò´CP8ò„C9AÑcN;ò˜C9íÔN8íN;ò˜CP;*ÑŽ<á¨DO83™c)Aâ´#F)´ó<áÈcAæÈþcAí„£=áD9E…#O8ò˜£R8óN;ÍÓŽ<æÈÓŽ<áÈST8ò„#9ò„#O8A…#O8íÔN8íÈAí¨AíŽ<í„£R;á´3S8íÈS9ò„#O8”òŒddŽ<í,¢R8íÈS”°áÙŽ°*…T8ò˜#OQædÎæl³ …#O8EÍÓŽJæÈŽ<áÈŽ<æÈcAí„#9ò„#O8…CP;*Áó%ÏèÀLæÈS”<íŸÜsÓ]·Ýwã·Þ{Ÿ· ?áÑ.|^¸á‡#žøÝüÜÂ<æÐŽ<í¨ÔAÐ#O)þŽJEÉEP;ÉSÔLíÈ=–šCO;µ#—JíÌŽ<í„CP8*™#O8E…ST8µCPQò%9ôŽ<í˜ci;ò„#O;áÈN;3µCPQá¨dŽ<íŽ<í„CP;µAíÈST8*…#O;áÈŽ<áÈ=ò%òÇ~Â!p˜Cá0‡<¡’pÈ£(æ˜I;ÂQ”p´#)J8y„c&íPIQ¡sÌÄò‡9èÑŽp¤* ‡<Š"vÈ£òGPöCyÈ¥áG8Ì¡2hcæð=ÚAvÌ$ ‡<Š"pEæ H;äþy„Cá H8Òyœ£昉9èÑy´Cá AÚ!vÈ#òG;Ò‚„Cæ ‡JÂ!sÈ# ‡<Šy´ÃôG8äÑy´CáG;äaz„ƒiA>°eè E‘G;Âa‰p¨$óØO8äŽv„C%íG8Šy„CáhG8ÚŽv„Cæ H;Â!p¨¤òh‡<Š"lãÏ ƒ<Â!v$òG;TÒŽ ´C%í‡9äÑ•´CE!H8äy„CX„2þ€pÈ£* ÇLv¡¸ƒ"4¡ ]¨{vñy´C%»`(E+jþÑ‹Úíÿh‡JÂÑy„CáG8@|XâE!H8Š¢’¢Ìd?ò‡<ÌA¢„£áh‡<Ú!ý„C%í‡\‚… á H8Òy´C%á(J8Ú!p´C%E GPÂ!pÈ#íG8by´ƒ áhG8äaŽp… û!H;äy„c&æG;ÒŽp´CæPI8ÚAs„á0’9䂘£3i‡<èy„Cá ˆ9y„Cæ H8Ty˜ƒ E¡‡9äy„CæhG8Ú!s$í H8Úa$s$ò‡<Â!sÈÃáØO;äŽþv„Cáh‡<ÌÑŽp´Cô0‡<Ú!z˜Cí Ã5ÌñŒEáG8Ú!pÈ£(ò(Š<ÚAsÈ£ GPÚ!v¤á‡9ÌApÈ#íG;äy´CE G;äayÐ# ‡<Ì!pÈ£ò‡<Š”¢ÄíŠ9äy„CáG8Œy„Cáø$ž¡1ˆ£(òh‡$Â1“p˜ƒ á AÂ!pÈ#1=Ú!pÈÃô ˆ9èAv„ƒ áPI8äsÈ£ð‡<>pgƒ 1‡<Â1“p´#æG8äy˜Cí‡<Ú¡’pþì'ò0‡<Â!vÈ£òh‡9> `üáG8äy„ƒ áÇ-0jêS£Ú¢ü¸Å?Úy„C·H5­kmk¾ñãüG8Ty´Cí HRŠ´#*i‡<ÚsÈ£òhG8äÑŽy„CísåazÈ#æ‡9äÑ‚„Cí‡JÂ!pÈ£(á H8ÒŽpÈ#æG;Â!s¨$ G;Â!vÈ£áG8Ú!vÈ£i‡<Ú¡sÈ#*i‡JÚy´ÃòGQ¡’pÈ#íPI8äazÈ#ò‡<Â!sÈ#) AÚŽv„þc&í ˆ9äyEíPI;äÑ‚´ƒ á GPÚ‚„CáÇ~TŽ ´ÃiA¡’v„ƒ E!H;äÑy´C%æ AÂaŽ „ƒ 혇JŠb¤vÈdxÆ6žñx´CíGQäÑsÈ#æG8äÑy´Có0‡<Â!v„Cí‡9äsУò ‡JÂApÈ#ò‡<Â!v̤)Š<Ú1s¤ÀòhG8äy%1‡<Úy„C%í‡9èAp%ò‡<Ú!vä–P†È`æ.BíÇ9fÒ‚„£ô‡<ÚAvÈ£þòhÇL¡’p¨DQ¨D8…9´=˜ÃhS.AQÈC;ÈC8D8I;¨D;¨„9„ƒ<„ƒ<´ƒ<˜ƒJ´ƒ<´Ã<0—<|€%<ƒ€<´=„ÃL„=˜C.ÜÚ â`¶Ç-ðƒ9=˜C.èà!ÞÂ?„ƒ<´ƒ<„A´ƒ<„ƒ<„Ã\ˆ%|€9ÈC8´ƒ<˜9¨„9„ƒJ˜C;¨D8ȃ9ȃ9¨D;…9ȃ9ÈC8¨D;ÌD8ȃ9ÈCQÈCQÌ=„C;=˜ƒ<„A„=˜ƒ<„CQÈ=„A„ƒ<„CQȃ9„CQ„A´A„CQ¨„9ÈC8…þ9D;D;ÈCQÈC;ÈC;D8¨D;I8ȃ9„ƒ<˜AЃ9„CQÈC8´ƒJ´ƒ<˜C8ÈC8ì‡<˜ƒ<„ƒ<„C;D8E8´ƒJ´ÃL˜ƒ<˜C8ÌD8ÈC8ȃ9D8´ƒ<„ƒ<„ƒ<„A´C8…<„C;ȃ90—°„ƒ<„C;D8E8ȃ9…<„C;„C;„ƒ<„ƒ<-hÓÈC8ȃ9„CQȃ9Ѓ9…9„ƒ<„C;¨D8D8=˜ƒJ˜C;ȃ9„C;D8ÈC;¨D;ÈC8ÈC8´C8ȃ9´C8…<˜C;„ƒ<´ƒ‘˜ƒ<„ƒ<„ƒ<˜ƒ<„þƒJ˜ƒ<„A„ƒ<˜ƒJ´ƒ<Ѓ9D;Ä~ÈC8x$<ƒ=˜ƒ<˜ƒ€D™:ljÂiG¢pè1'—üüÐ@”ÐB =ÑD]”ÑF}ÒEwùG¢þpè1'—H5Ý”ÓN=ýÔPoù‡žp&2§pä Gžp ‡K>hGžpä ‡ ‰Ì G¢pä1G"s‘'œ‰’§pæiGžpäig¢p$ ljڑǜ‰Ì‘'yÂiGsf“§y‘'y‘'‚‘ǜp&j‡s‘§y‘(‰Ú‘'œvf §pä1GžzÌ‘(‚‘'y‘¨pæ‘(œv&2'œv$ ‡žpä!(y‘'‰Â‘(yÌ‘¨pä GžpÚ‘'øÚ‘¨yÂig¶v$ §yÌ9©yè1G"säig¢vÂi‡žpäig"sNj'y¡Çþœp$ Gžp$ Gžpä GžpæiGžpÚ‘'y‘G1ô€D$ Gsäi'œv$ G¢vä1Gžpf §y‘'œvä §y‘§yÚ‘§yÚ‘§‰Ú™(œ‰æiGsäiç¤pä §y‘§‰ÂiGžpÚ‘(‰Â‘§yÚ‘'yÂiç$sÚ9 >yÂñeþ C¢väiÇ’vä1g¢vœ’'y G¢pä!h"øÂ‘'‰Â¡§‰Â‘Çzä Gžpfû@ü%ñIX¥°„%$a HX’€Ä!a H,Ð’(…$~ƒÁß@¿)Å" ñK<þãA$ÒŽpœd¡’á iXCÞ·øG8N²‹þˆA¢ùq‹È£áhÇDÚ!vH$ôG)>‰RXB(Å!a‰J–„%$¡ KHb‹€Ä!!‰–°Äo, K@B„-! KH¥X $JÁÇEXâ7’°„$,Q KH¥Ä5AHXBšø%$a HH–ø% a‰òQ|”Ä% KH–„$ a HH Ô#$,¡‰R,Â(…$,ñK@¢–$J1KKH‚–„%~c HXB´$, KÌÒþX $ I@¢Ñ´$(‰J°$ø›YB¢|„!! KHšÐ„$,! H`P–%ñAKü¦³„D),@=â'i‡9è!vH¤á0ÇIÂÑŽp´C"æH;$Òy˜C"áAÂay´cæG8Ì!pL>áH;Ì!pÈ£òh‡<Úމ„c"áH8$‰„CáG8NÒyD"á H8Ì!sLä¥x†Èy˜£áXD8$ÒŽpL„æH;&By´CáG8Ú1‘pH¤ò ˆ<Âq’pÐ# G;Â1y|@ þzƒÈ 1XT z È †„Ãá0G8œs„Ã)N‡9„Ûpœ#æŽpÈñH(C ˆ<Â!sH¤áÇ-Õ\ç>ºÑ•ît©[]èÞ‚iG8äq ë~¼áïxÉ+Ý[ü£ò ‡9Úø´Cá¬,áp€Ã)áØF8ÌsìÖáˆí€c§„ÃçÇ6vká˜#æ‡9v;%àpJ8¼qaá NÎ…ÍŽØ '¶á0G8Ì!s„û%ñ…Ãá”pÄ6æ‡9Àá” ‡Ã)à‡9§Çá‡SÂŽpÌØ)Âþ1G8œ²[s„Ãáð6œ§„ÃáG8‡ÃápŠpœp€#¶áˆm8b‡Ê9 CÅ@2!€&CÉðpÈ#' ‡<Â!sȃáhG8äAsH$ G;䎓´C"æ8‰9Ú!vœ¤òpJ8Ú!vL¤ò0G;äaŽvœ$ò‡<Â!‘pH¤i‡<Ú!vH$í‡9ÂÑy„£òh‡Dêay„CáøÀ"ž¡2œ¤’0A䎙„CáG8äÑy„£ò=Ì!pH¤áG8äaމÀg"í8I;Â!Z dÐþßÅ@=š bÈÁ6(^ñŠ_ãßƯágXüÞðÆ6>`‰gèí‡<ÂAyDNÙEyi^s›ßç‡âÇ-þAy8e9úЉ^ôçòãüÇLÌ!sL$°*ŶqmlÃ׸ú6D¾õklãW¿Æ60~uŒoýêGû5¶q olÃhçø6®±õklýÛˆÆÕ¯±õklãÛ¸ÆÕ¯±kxc×@ûÖ1¾klý‹¿:Ç1¾ Êoƒãh÷ÆÖ¯±õklÝW¿ÆÖ¯ám`|ñרú5¶qmp|ë×ðÆ6¼!ùklãÛ¸ÆÕ¯±kHþÛ <þƯ~m`|רÆ5®~ ‘£ýÞØÆ5®Žñ«_cñ׸:Æ·ñm`üæÈ N1üY dßÅ@†„CáG8$ÒŽÙH$i‡<Â!pÈÃ$"Ú!"&bÚ!ä>$"ä¡ÂA"èAÚÁä!äÁ&"$"ä!Úa"ÚAÚA"Ú!ä!Þ+ä!&"èA"ÂAÌAÌA"Â$¢$â áþ€ ¡ÂAÌa$ÂÚA¡ÂAÂAÚAÂA"ÂAèÁÚa"ÂAÚAÌAÚa"¡ÂaBÂ>¡¡äþÁ>€ œ€ ˜€ ˜@ ˜€ ˜À È€ Ä€ ˜ žÁQÑ?”¡À&‚ Âá$vº2Q7‘;Ñ?1PnÂá$vOSQWѹnáä!Ú!ä¡èÁä!ä!V,áƒQ‡‘‹Ñ“Q—‘›‘!˜€ ˜@ ˜@ È€ Ä€ Ä€ ˜@ ˜@ >`"ÚAÚ!ÚA¡ä!ä!&"äÁÚAÚá$Úá$ÌAÂA¡&ÂäÁÚ!$Â$¢äÁ)ä!ä¡&"$¢ä!ä¡ä!äÁþäÁ¡$¢$ÂäÁä¡ä!ä!ä¡ä¡f"ÚA"ÂAÂAÂáô€ fbÚa6ÚAÚÁ$¢ÂAÌá$ÂA"ÚAÚA"ÌAÂá$Ú!ä!$Â$ÂèÁèAœâ˜€ œ€,€ œ€,™À ÈÒ r€€rA.å2ž!r¡.å2äòòòrA.?Àžá@ÞKÂA"ÂAn'“2+Ó2©‹ná¡ä!äá.S4G“4I“ná&"f¢$"èAJá€!ê2€!örA.ó2/å2ä2t3þä2ä2ž!€!öÒ7!€árr¡.óò€!/÷2/!ä2/Á7!€!/u3€!tS7óò€!€!žÁ7sáä2ža/s¡.s=óR.óR.sA.ó².s¡.sA.}S7sòòö2€!/÷2€!ê2ä2€!€!€Á7å2/ë2ê2€!ž!€!/!ê2/å2/!êÒ7å2ž!ä2œ`-ÉÒ ‚4H?Àä¡ÌAÚAÌa"ÂAÂAÂAÚAÂäá½Â¡ÌAÂa&ÂAÚ!î¯ÂA"ÂAÚAèþá$¡ÂAÚ!&¢ä!î/ä¡Âa&ÌA"ÚAÚAÂÁä ÂA""ä¡ä¡$âJAþ€ ÂA¡ÂÁä!ä!ä!ä!æa"Úá$Ú!ä!$"ä!â$ÂA¡$¢$¢îO"èÁ>€ r@ ‚4Ä€Hs 4AJa–$AJÁJ¡4A4A,¡0Ja ¡4¡,¡<”A äÁÚAÚA"ÂÌ!(“^ëÕ^ïuQvá$"èÁr_V`v2oáä!&"ä!ä!ä!€äÁ>Àþ A44AJJA FJ,AJA,¡Jª,AJA4¡$¡4,A ¤ÕJA  AJ¡YK,A¤U fIZ5¡$A¤Õ¤µ$¡4JA4a4¡F4ÁJ4a–4Á¤uJÁJÁJ¤Õ fI $¡4A4¡$A ,A J4A¤U,¡j A,A A $¡4Á¤fi4¡4a ÁÊ$¡4¡ A,A  AJ¡YKA$¡,¡,¡4¤U,AZAHþJa ÁJÁ ¡$¡,A4AZª AJdKJA$¡,¡,ár€, Ä`-€ ŠÀ ˜À >@"ÚA"Âa"ÂAÂa&ÂAÚAÚAÌ¡$‚Ìa"¡Âá$ÌAÚ!Ú!ä!N"$ÂB"&‚ÌA"¡ä!$"ä!$¢$Â$"Úá$ ä¡$bN"N>ä!>€AÈÀè¡ä¡,!$"è¡ä¡ÂAÂÁä¡ÂAÌÚABÚAÌAÂAÂA"ÂäÁäÁä!ÌAÂ>Âþ¡ÂAÚA"Ìá>À< ŽãxŽïxŽëX÷˜û˜-Aô`ÂÌAÚ!Úá$v`Ù‘Yºøáþ¡Nb “3Y“…nä!ä!ä¡ä¡ä¡$"èAJÁ_–cY–g™–kÙ–o—sY—w™—qÙêØ>ÀêxŽýØä¡æ¡ä!&¢$‚ ÂA"ÂAÂAÂAÌAÂA"Ú!$Âè!ä!fB"ÂÂAÂA"b"ÂAÚA"ÂAÚA"ÂAÌA"ÚA"ÂAÂAÌAÚA"ÂAÌAÂAÚa"æ!ä!äA8þä!ä!ä¡ÂÁäÁ&â$áþ€ $‚ Âaä!$¢ä!$¢äÂA"ÚAÞ«äÁN"$¢$"ä¡&‚ÂAÚa&ÂAÌA"èÁäÒÌAÒð!äÌAÌAÌÌA¡ÂAÌÁäÁÚAÌAÌA"ÌA"Ì!ä!àá áêNÂä>ÂAna“›°™ø>ÂAn¡°Û±ëõþ¡ä¡&"àCÂ!èA,áèÁèÁäÌèÁäÁäÁ¬åÁæá$̺ÌèÁ¬ÃÌAÌ¡þäÁäÁäÁèÁäÁä!ÚAÌä¡äÁä!äÁä¡ÂAÌZ¡ÂAÌA¡ä!Ú!ä!èÁÚÌÌZÌAÌÌZÌZÌAÂAÌ!ÚAÚ!&"ääÁàAÌAÌAÌAÌAÌAÌAÌ!$Âä!äÁä!äÁäÁääÁàAÌAÌAÚAÌÌÌAÌAÌAÌAÌAÌAÌAÌAàAÌAÌAÌ$¬Û!Ú!äÁä¡äÁä¡ÂAÌZÌAÂAÌZÂþA"ÚA"ÌZÂAÌA"ÌAÚAÌ!&Âä!ä¡àAè!èÁäÁ¬åÁä$¬'"Ú!ÚAÚ!äÁä!äÁ$¢&¢&¢ä¡ÌYè!$"Ú!ä!ÚA"è!$"ÚAÂAÂA"ÌAÂA"ÌAÂa"ÂAÌ!ÚÁœÍAÂa"ÂA¡äA8@=&"$¢ÌAÂAÂá áô€ ÂÁ&bä!ä¡ÂA"ÂA"ÚAÂAÚ!äÁ䡿!$¢æ!ä¡ÂAÚ!$Âä!ä¡ä¡ÌAÂAÂá$ÌAþÌÌA"ÌÌ&‚ä¡$¢äÁèA"ÌÂ&Â@½&ÂèAÌá,áôÂAÚa"ÂA"Ìz›ç{þwÂA"Ìz|Þè~ºøáø ¡ÂAÌAÌa"€ä¡<€Ì¡Ìa"ÌAÌÚA"Ì¡äÁä!f¢ÌVèÁè¡äÁ$¢&Âèá$Ìá$Â&Âè¡$Â`å$ÂÚAÂá$ÚAÌäÁäÁêAÚa"Ì@]ÂA"àCÚ!ÚAÌ¡ÌäÁèÁê¡&"èÁèÁèAÚÁþèA"Âa"ÌÌÌAÌäÁä¡ä¡Âá$ÌÚAÌa"ÌÌ¡Úa"ÌÌf¢ÂVN"ä¡ä!ä¡$Âèa"ÌÂ&>æ!ä$"ä¡N$¢Â ä ”×Î=sÊ£—°]8…íÂ)l×N^;…Ù“NÅpòÌÉk®]¸váä…HQžËp.å…sIÑe;yáäQŒÙ.\L—íäµsiN^8yáÚ…ûÉÔÜÏpáÚÉ;³ËpòÂÑsÙÎåIÏþ‘GÏœ¼p’Ú¹4çÒœËpòÚÉkÇÔ\Ìp™šsÙN^;yÛþ¹ '¯¼vòÂ1¥gÎe»˜æä™3'ÏܼŸá~¶“gN½pòÌÉkNž¹p?ÛÉû`IÙ.Í…“N^»˜»þéÞÍ»·ïßÀƒ N¼¸ñãÈ“+_Îüø®òÚÅÜÕ¼ºõëØ³kßÎý?y昺 '/\zô,}ˆIÏÜOzáæ¹¤N=sòÂïÒ\ÌpíÈOLæÈNLáÈÓŽ<æ¸dNLæ„ó“9ò„ÓŽK渎<áÈcŽxô„#O;ò˜ó“9ò´E.µ#9ò˜ÓNLíð×Î<íÈc?™Ã=æð8O;ò˜#O;ò˜“91™=á´Ã<…#9òþ&O8?…ã’9á¸ÔŽ<æˆgN;òLöS81™3EáÈNLáÈÎOô˜ÓN8ò˜ã’9ò˜ÓŽ<á´ã’9ò„ãR8ò˜#9í„#O8ýŽ<æÄNLô˜#O;.…#9ò„ÓŽKí„ãR8íÈŽ<æ´#O;óPŽ<æ¸Eá´#9LµóS8…ÓN8í¸ÔN8íüdŽ<áÈŽ<á´óS8ò„#O8@Œd¸ÔŽ<í,BÑOí„#O8ò„cŽ<í„ÓN8.ÓNLí„ÓN81QŽ<áÈÓÎ<á¸ÔŽ<áÈŽ<íÈcŽ<æ0N;áÈÓÎOí„CÑ<ò´#O8ò´#Ï ‰gè á ˆ<Âa y˜#í‡<ÌÁz„ã'í‡9Ú!p˜£1 G;“v¸ÄípI8äy´ƒGò‡<ÌñŠÈ£áh‡þKÂÑŽpÈ#ò‡<ÂÑy„CáhGLÂA‘y´ƒ)°„2êy´Cæh‡<Âáz˜#[‹¦4§IÍjíü0‡KèaŽ\Xó›à §8•v‹PDáˆI;äy„#è±ÄÚá’pÈ#óh‡<Âá’pPÄòG;ä—„CáˆI8Ú!¨´Ã%á ˆ<Âñ6þ´#òG`äÑ—„£ápI;äŽÀÄ$íp‰9æÑy´ƒæpI;ÂÑy´CáˆI8\ŽvĤô0G;䎘´C‘G8䎟´ƒáG8ÚŽvȃæEäŽv0¥. ‡<þ“pÈ#óh‡KÌÑy´Ã%íG;\y´CæG`ÂÑy˜£?i‡<ÂA‘y´Cá˜Eä—„#&íˆI8Ú!v0…"ò0‡KÚ“pÄ$툉9äAy„Cáh‡KÚ“pÄ$òEäŽv„C<íE~y„ƒæG;ÂJy„CípI8äa—„CáG8ã’p¸$ò‡<ÂÑyÐ#.i‡KÂ!p¸¤1¡ˆK(âsÈ#íG;\y„ãx†Ès¸¤–h‡x(y´CáG8äÑsÐCáøI8~ŽÀ„£. ÇOÚþ!p´#íG;ÂÑŽpÈ#. ‡<Â!v„ÃôG;“vĤòhG8ä—„Cáp EÌÑŽp´Cá0Ç ñ = .1GL“]ŒóÊXÎr–ùq‹È#1Ù…–ÇLæ2g·à‡9\y„CáG;\zÈ£G;äÑyP$. ÇOÚ!s¸¤L GL“pÄÄ. Ì<Â!pÈ#ò‡KÂApÈ£óG;~˜y´Ãò0‡<ÂásĤæG;b—´#ò‡<“v„#&á‡9\bŽ˜„Cí‡<Ìá’p¸$í‡<ÚÁþs0¥óh‡<Â!pÈ#æG8äz´#íG8äÑŽpÈ£óEÂ!v„CápI;ÂÁ”vÈÃ.1‡<Â!v˜#&æG8Ú!v„#&‘G8äy˜#&æG;Â!sÈ£æG;\y´#. ‡<Âá’p0íG8bB‘p´Ã%áG;ä—˜Ã%æ G8䊄Cá‡9äy„Cá SÂ!p¸¤áhG8\y„ã'æpI8èzÈ£ó‡K("pÄÄòh‡<(by„CáG8äa—´ÃòhG8Ì!ŠÈ£ò H8äþsÈÃ1ù€$žñ2ȃáh‡9Ñy„ƒ"á‡9\Òy´CíG8bÒ—P$òh‡<Â!z˜Cæ ‡9äay„Cáh‡<ÂQ\—„CáG8~2—´CæG;äay˜ã'á G8\y˜Ã%ô0G;\òK(£G8Ú!ÀÈ£áÇ-xCÿúÛÿþøÏ¿þ÷Ïÿþûÿÿ€8€x ÿÐòÐá ·@€ø€8X»ð.ÑòÐòÐ.Ñòà–ð.!æàæàáÐáí æòòòÐò1aþòòò0æ ôòÐòò@1ÑááÐá0í æÐ?Ñò1íàá á á á æ íííáÐ?Ñ1òÐ.Ñ.ÑòÐ?í á áá áÐáÐòòÐòÐò@áóíàí áÐç0íàáàí ááÐòò`.Aâ!í@æ@òíí í í í íL?í á áí íàáàá@á.óÐò@æí á þíàí áðáðíí áðáàíàí íò@æ !í á áí.ÑáÐòÐ.Ñ.ò1üÑáàíðæÐò`ò`.ÑòPæ á áðð z@í í í` áðí aò`òÐ.òæ á æ@í`.Å.aôÐá á á á áÀí á` Ôáðíàæ@ò?Ñæð–ð z1aòòÐò`æ° ˜˜Š¹˜ŒÙ˜ŽÉ·Àþ!†¹ Žy™˜™™š©™üp üòòò@æ@òP àæ æðíðá á á@òÐ1ÑòòÐáàí íí í è!íÀí óÐá æ@òíí`1òÐáá áàæàí íÀíò`ô á íáÐá í0ç í á æ á á æ áá í 1í1AòÐòLá á á æðííàá íòÐáÀá@oÓá á íþá íàæàæ@òòòòæ@á áÐ.Ñá íàíá á`òÐáàí.Ñò@æ á íÁá á æàá áàí1áÐá`1ÑáàáÐæ í`òÐò?aò`.òòòÐá í`ô á`ô`òÐá@áàí áðòí`ôò`.Ñáàá!á@.Ñ.ñð @í æ æ°.íòò`óÐ.aáÐòÐ.Ñ?aþòíàáÐòòíðí á í í íòòò`á?Aòíííàí áÐò1òòò`òð–ð òí@æ áð»°™.û²0³þw ÿ?± 2›³:»³š¹ ÿ í í á æ á áèa ò@æàíí á áÐôòÐòÐòÐòí áÀá á@òíàá á@áÐá á@òÐòò@æí.ò`.a.íþ íàá á æí á áÐò.Ñ..aá áíò`ò`áí í í á í á í0í áÐ1Ñá æòòíòò`.òÐòÐ1í ô`áÐ.aò1íí óð6.òòòô`˜á á í í í@æíàáÐòòí æ í æàá á æ íàí@æ@òíàíáÀáàáÐô`ò.òÐþòÐòíðíàôò..LÑLÑò`íàá áíÀí í1.!íàá á áð z í íà‹Ð1Ñò`õÐò1aòÐòáÐLÑáàá á@ò`òò`òíæàí óòÐòòÐâ1áÐòæ í á í.òòÐ1ôæð‹ zâí á ·À³Æ|ÌÈì€üp ÿ.òp É<ÍÔ\ÍõÇ·Àæ æ íà€þ¥ðááàíòLaòÐá áàí òòÐò`ò..aô@1ô á æàæÀ#í ááà?Ñ1òÐ.òòÐáàíô í íòÐòÐLoæàí á í`òíàá á`ô`õÀá áàáíò`òôàá áæ í`ò`ò?ÑòôàèÑá áÀ1áàá áá í æ áÐò@1Ñ?þÑ?aòòÐ1Ñ1Ñá íòÐáÐá íò..ÑáÐòüÑ.òòò`òíòÐáðáàíàæ íòÐóíòò`òòòíòÐá á íæ@ááæ á íòÐòÐ.ñ’ð z@òí á æ á æ ôòò?óÐò`.!æàáðí á í áÀá áÐòòÐ.aò.ÑáÐò@.Aòþòòò11òíàí0òÐòðð òí?ô`¹`ÍV~åǼ ÿàá@æ Xæbþ²»ðLòòò€–ð1òíÀí!áàíæò`ò.a.Ñ.òíàæÐòí áÀí áÐòò`íò!á í01òí0.Ñ.Ñò?aòíàí íðæ..Ñò0í æí á ô`òÐ..Ñ?ò!þáÀæàá0í æ íàæ áíàáàæ í áÐòÐ.á íòò`˜íàá áòÐòÐòLÑò`ó@òò`áÐá æ á í í@†òòí1a.a?aôò.Ñá ô`íàáÐá á æííÀíáÐ?aáÐ?æàô`òÐÅ×.òLíoCæ áÐ.ò Ïðdàáà–ôÐ?Ñ1òÐáþ íæ@òÐ.AáÀíæí !íàí á íðáÐæ@òÐæàòòÐ1?Ñ.Ñò`òÐæ á@ðð z1ò@?± cÞüο˜üp ÿ?± ÏýØÿ€üp üÐáÐá á í íà€¥àòÐ?òò1Ñó á æ áÐâÑ!O ¼vál×Nž¹ƒÍÉ ×.\ÃvòÂÑØNž9yáä%”.œXä=È'!’1þ‡¦vä1Gžpäigžp’'’ÌYNžpäig¹vÂ!Ézä ǘÌIˆ¤pè!)yÂi'’ÂÉzäi'œvÂ!)yÚ‘'’Ú‘'šÂ‘'säiGž,yFHJˆ<Ì!vÈÃX»T¸@6Ðü¸Å?"cíÂÄ`5¨A~Ü‚áHH8äsÈÃ0 €kJñy„£x$ =Ì“p$$æG;`2pÈ#ôhLÂ!v,'ô‡9äay„&íG8Ì!„È#òhG8²ÒŽpÈ£áh‡<Ì!p´#òhG8äÑ’„CáG;äÑŽþpÈ£0iG8äy$$$1Ç\æ‘pÐ&áhG8Ì!pÈÃòLÚ!sÀ$Y ‡9`’$ä…òIÌñÉy„Cí I;Hb’„Cá I;`y´#í I8ä’´Cæ‡9äÑš„£á‡9hÒŽpÈ#!á‡9ä’´c9í‡<ÂA’„È£áG;äј˜C G;Â!pÈ#!á I;Â!p´#òhIy˜Cá€I;–y´#ò‡<Â!sЃ$á G;äÑš„Ãò0MÚA’vÈ£ò‡<ÌA’vÀÄ$i‡<ÂA’þ´ƒ$€Ä3ô@†vÈÃò‡$äy„£òhLÂaŽvÄáG8HÒŽpÈ#íG;H2—p´ƒ$æG8H˜„ƒ&æG;HŽv,'òGB䑬„ƒ$æhLÌÑ’„Cá ‡9hbŽ@b€<Âј´ƒ&»p`b»XÆ6öüMvÑXÊVÖ²—UÓ.þAsÈ£ò¨‡9äy„#®±ÄÂA’p$$íG;hÒy„ƒ$怉9ä!’vÀ¤òG;ÂA’¹„CáhIÚ“vÈ#í‡9HBpÈÃíG;HŽv„Cæ‡<Ú“vÐþ#0iLÚ!pÀ$ !IBäy˜CíG8ÚA’„ÄáhLÚ!p¯ò0I‘’„CáG8äy´CôG;Ì!vÈà ‘G8Ú!vÈ#íÈJ8`yˆ&æhG8æB’vÀ$í‡<ÌÑy„Cá=Ì!pÈ£ò‡<ÌÑš˜CáG;`Ò’„Cá I;hBsÀÄí I8ÚAsÈ£$ G;ä’„£ò0G8"pd¥ò‡<Ìs,Çí‡<Ì!vÈ£$Iˆ<Â!p$„$á=±œpÀÄáG;äŽvd%þíGB‘y„ƒ$ô0G8˜„Cí I8äy„ãx†È`y´Cá„<ÂAy„CíIHÒsÐCÙáG;äz˜ƒæG8äÑŽy$Ê–G8ÀM’pÈ#æ IÚe‡Cá·<Ì!vÀ#ò‡²Û’´#í I;Â!v€»á ‰9>`‰gèò0‡<Â!v„£ò‡yek‡pHy‡v‡qK’˜ y‡(`ø2‡vyhK yhy˜‡ph’0zhy‡vyh‡p‡vyh‡ph‡ph’hyh‡p‡p‡pHy0z‡vyh‡phs‡pHyhys þ‡p‡p‡vs‡„’0y’‡x s0e y0yhxøHx†?’h‡pp»]8Å•QÊâ‡[ø‡v·]˜ÑåÑâ‡[ø‡p ‡p‡„‡v‡v ‰ y( s‡p‡vyhek’hyh‡p ‰v0‡vsHˆph>s yHˆp ’h‡p7s ‰v‡p y p z’hs ‰p‡¹‡æ yh’0’hs ‡„‡vs ‡p‡vyeks‡p ‰p‡vye3’0z0’H’0yþyHe ’yy’eKˆyyyhsP¶vys‡p‡vs·ph‡p0’‡vs‡p‡p·v·v ‰v’‡vP¶ps·p ‰psP¶v·v0’hyheky0e›‹pp»„z‡„·v‡„yyhek’0yeKˆp‡p‡p‡p‡ph’y0y’hyhyh’h’y˜‹ph‡p‡p‡p0z‡„P¶p‡vy˜‹p0y0eó€EP= e3‡pXek‡þphy˜ e e ‡v s‡vP6z0yðÐvP6zyhp ’hy s‡p syh‡x›p3’hy ‡p‡„‡„‡p‡vp yhyyhy0‡v‡°„\ЇvP¶v‡„y¸MtÝ×}]Zà‡¹y¸ØÅÝÜõ¸]øpÓÀv‡p×°„z0ye3‡phy0‡v‡v‡v‡pH’hz0‡v ‰ph‡p‡pP¶p˜‡v ‰v‡pP¶ph’y0’pk·3’hy˜ e ‡v‡vy’˜þ yH’hy0‡pˆ7s‡v ‰ps‡v ‰v s ‡p ‰vp»ps˜ z0’‡„‡v ‰p‡p·p ‰vy‡v‡p‡pP¶ph‡q yhp ye£‡phpkyhyhyy‡v‡p‡phy’Hz0‡pHp y’hp ‡„‡p ‰v ‰pssHˆpP¶vy€‡vP¶phyh‡p˜‡v ‰p˜‡v‡p‡p‡v‡v ‰p‡pHˆp‡v‡vP¶p‡p zyyhyhz0‡ph’ sþ‡vy‡ç‡v‡p‡ph’ sp»ps‡p ‰p ‰ps ‰z0yy‡€„gÐ2p[„phs ys‡v‡vyh‡pP¶p·p‡p ‰vP¶p‡p ‰v‡ph‡p ‰p‡vpkeks ‰p‡phy yhyHs‡v‡vss‡v‡p‡ç‡q3y0‡€eÐ0y‡v0zHyðÐ]ÐÝš¶iÆÚ~’ðÐ]¸éŸj@á‡[ø ssP¶pRðp yz7s sþs s‡phsP¶„P¶p ‡pP¶v0yyyyy0ekyhek‡ph•‡vy’Hs‡„€‡p‡p%‰v‡vs‡v˜‡p0yy0z‡¹p3yyz ‰pHˆp0z ‰vs‡p‡p‡„‡v s‡v ‰ps‡p0‡xk‡p ‰v’hyhpk‡p s‡phyhyhy0y’h’hyhpk‡p0y0y0’hy0’’yy0yhek‡y ’zh‡pþ‡v‡„ ‰v˜‡v‡v0yhyhp›yy’˜‹p‡p ‰p0zhs’hyyyssh¾p0yh‡y’zyh‡q› ’0yhe3zh’ðPeke3yek‡phyh‡pP¶v‡p ‰p s‡v‡p ’h’øIx= yxIP¶p7sP6z0yhy0yh‡ph‡p‡v‡pshek’ye ‡v‡p ‰ç‡php yhy0e yy0y‡vsh’h‡y‡v‡pþHy0’‡v‡vP¶°„gøƒ ‡pP¶„·]ø¸`öaד]øyheÛbgöfwv1¹…0yy0y¨s‡p‡p×°„‡pP¶v‡v ‰ph·£s s‡v‡pHy‡v·ph’yheke ‡v‡„‡phshp ’y‡yP¶pshze£‡pssP6sh’hyhyHˆyh’h‡pHyheky’0e pkyy‡„sy s˜ · yy’‡v ‰psþyyy0y’h’‡vsp ‡v‡p‡p‡ph‡p0·k‡pP¶ph’pk‡yH’eKˆq3y˜‡v‡p0‡v·p˜‡„yyyhyyy0y’hek’Hy‡æk‡p‡pHˆpP¶v‡v‡„P¶p ‰pHˆpsh‡q yhyx’hyy‡v ‰v ‰ps ‰pP¶psP¶vˆ·v ‰p‡p‡pøHx= ƒvy0yX„p s‡„ ‰p‡vP¶p‡v0z ‰vP¶p ‰pHþˆyˆpí䵓'/œÁ„áäµkh.a8yášKØÎ`;yæè% g°Ý¼píÂ%48¯dÉpòÌ}€ìƒíÂÉ3'/œ¼pònýëéó'РB‡-jô(Ò¤J—2mêôiR~·þµ '/œ¼[P·ríêõ+ذaùÝúNž9zòÚ%lg0=z¥>È '/œ9yíµKØ0\»píJ¶“.á¼væä…“Π¹’íÂÉkØ¥¼yí š“×Ð`¸’íÂ5”gŽʆòÚ¡ WÒœ¼vá䵓.œ¼vÛÍ3'/œ¼váäµ+N^¸„í0‡£'¯]ÉpòÚ…3Ø.œ¼pòÚÉ gÐþ\ÂvÍÑ G¯d8yæä…3ŽžÁpòÂl'¯¼vòÌÑ+N^8 ÉNI ÔP8ò´cŽ<á´cP;áÈcŽ<á´ŽA …ÓNBáÈN;áÈÓŽ9…S’9…CO; µŽAí„#O;áÈNB–ÉÓN8 ÉŽAæÐŽ< Éc’ò˜ÓfæÈÓP8…#O8ò˜#9ò4Ž<íÔÎ<áÈNIíÈŽ<íÈŽ< …#O8ò„#O8–…#O;ò´cЖ(Sæ$Ž$ò4d’ò„#O8ò„#=æÎ< …ÓŽAíÐcN8 …ÓŽ<áÈÓŽ<á4$O8ó$Ž<áþÐŽ<á4$OCæ´Ž<æ$Ž<áÔN8%…ÓN8í„ÓN8í„#O8ò„ÓNBX¢ŒÈNIáD9¹õ-¸áŠ;.¹åš{.ºéªûÓ-ü˜c=æä².½õÚ{/¾ùê Ô.ÿ”Ô<áÈŽ<á€<–|ÐŽ<íÈCO8òÐcŽ<áÈcJá4dP8ÝÖNIáŽAá´ŽAá4$O8ò„#Ïm™“P;ò„ÓŽ‰gè!ò‡<‘p$d?¹#ó¨Ç=ò±~ü# )ÈA²†4$?nñy„#!»8$$#)ÉIR²’–´$?nñ†„Cí‡<Ú!vdôG)<0sÈ£ò‡AÚ!vÈ£ò‡<Âav„à í(I;‘v¤!ò0=ÂasÈ#ò‡<Ú‘sÈ£!á0GB,y˜CæG8äÑŽp˜ƒ i‡<Ìap¤ iÇ<Âap¤áþh‡AÚ‘v$x“G;ÂÑy„ƒòh‡AÂ!v ¤òh‡<Â!pÈ#ò‡<ÂÑŽpÈ#íG;äÑŽ„´#ò‡AÂÑpÈ£á0H;䎄´#í(I;Â!v„CáHH;äy„à áHH;äazÄòhG8Ú!s˜CáhfÌ!p $í‡<Ì!vÌ£ò0‡<Ì!pÈ£æG;Ì!pÈ#ò‡AÚ!s$i‡AÚƒ˜Cá0‡<Â!p”Äô0‡AÂay„#!á0H8ÚŽv”¤!óG;ÂÑŽv$1=Úav$$ò0þ‡<Â!s$¤ó0fÚ!v„Ãò0GB<` eè íÇhÛa ƒ´Cí˜G;äy˜£òh‡<Â!p”¤% Çhåa”„CáHˆ9n#z˜£ò0‡<Â!p´CáG8Òy„Cáh‡<Â!s$1G;䃄à áhGIÂQ’”Bu@;äÑy„c´òhG8äq‹“¸Ä&>1ŠS¬â³¸Å.~1Œc,ãÓ¸Æ2þG;äÑŽpÈÃÆ>þ1ƒ,ä!¹È#æG;bƒ$Wá@\,ñ’´Ã á­<Â!pÐ# ‡Aڎц£ò0‡þ<Úy˜£áhÞèaŽ’Œö G; BpÈ#ò0G;Py„£$áG82Zƒ„CáhG8Fkp„ªò­AÂÑŽpÈ#íG;Âу„CáHH;äÑy´Cá0ÈhÃÑŽpÈÃò0G8䎄´Cí0=‘vÈÃáhG8 Òƒ„£$á0Èh僄£ò ‡9ÚyÐÃ1GIÂ!s„CíÇh y˜Ã í(‰9èa̘£áhG8äz„à áh‡<‘vÄíG;äÑy´Cí0ˆ9 y„£$áG; ÒŽ„˜£ iÞþÂ!p´#ÿl‡A‘p”$ò‡<ÌŽvÐÃò˜G;äy„#!æG8äy„ãŸá‡9Ú!vÈ#ò‡<̃ÔÃò‡<ÂñHò“¯|ãÿƒ£•U—/ýéS¿úÖ¿>ö³þÏð#òh‡AÂay˜#!ˆK)>p›Ñ†#!í˜ÇhÒƒ„Cí0ˆ9èAUz´ÃôhGI„Ãh…ƒ<„C;$D;„Ãh™=P=ÈC;ÈC;ÈC8ЃA˜ƒ<„ƒ<„CI´ƒ<Œ–<´ƒ<„C;„ƒ<˜ƒ<„ƒ<´ƒ<˜=˜ƒ<´ƒA´J´Ã<„ƒ<˜=´ƒAŒ–A„C;ÈC8ÈC8ÈC8ÈC8ÈC8˜ƒA´C8˜Ã?•DrµC8ÈC8$D8ȃ9 D8ÈC8$D;„C;D8ÈUD;„ƒA„CI„CB„ƒA´C8`†9ȃ9ÈC8D8Äh…C;„CI´ƒ<„C;„CþI˜=´CB´CB„ƒA„ƒ<´C8´ƒA„ƒ<ŒV8ÈC8˜C¶C8´ƒ<„ƒ9ÈC8ÈC8´C8D;„ƒ<´C8ÈC8ÈC;„f„ƒ<„ƒ<„C;D;„ƒA„CI´C8D8ÈC8 Äh™CI„CB´ƒ<´ƒ<„CI„ƒ<ŒV8ÈC;D;˜ƒA´ƒ<´ƒA´ƒ<„=D;ÄXÂ3üÈC;D8X‚<„CB˜ƒA´ƒ<„ƒ<˜ƒA´C8Œ–<´ƒ<„ƒA´ƒ<„ƒ<˜C8”D8ȃ9=˜C;„9ÈC8ÌÃh…ƒ<˜ƒ<„ƒA´ƒ<ÐC8ÈC;D;ÈC8D8L¡<„ƒA„þC;D;D8ÈC8ÈC8ÈC;ÈC;ÈC;ÈÃ@‚2èD8$D8”Ä.%S6¥S>%TF¥TN%UV¥U^%Vf¥VnåhÉC8”W†¥XŽ%Y–¥YžeX&„9Œ–<Ôƒ9ÈC8ÈC8@\X D;„C;˜C;ȃ9ÈC8ȃ9„C;„9ŒÞ$W8ÈC8Ѓ9È=„=˜C8ÌC;$„9 D8ÈC8ÈC;D8´CB„ƒ<„ƒ<„ƒ<˜C8ȃ9„ƒ<´J´ƒA˜J„C;„ƒ<„ÃhÉÃm´CI˜C8ȃ9´ƒ<„ƒA´CB´ƒ<´CBÐC8ȃ9D;ÈC8ÈC8ÈC8þD;ÈC8Œ–<˜ƒ<„ƒ<„ƒ<„ƒ<´ƒ<„C;ÈÃh%D;„C;$D8´CIŒVB„ƒA„C;D8ÈC8$„9ÈC8ÈC8üÓhD8´CI„ƒ<„ƒ<˜C;”D8´CB´ƒ<„ƒ<˜C8ÈC8D8„9ÈÃh™ƒ<˜ƒ<˜CBÐC8´C8´C8ÈC8ÈC8 =„=˜CI„CB˜CB´ƒA´ƒ<„ƒ<„CI´=˜C;„ƒAŒ–<„C;„ƒ<˜ƒ<„C; „9´C8ȃ9ÈC;„C;$D8ȃ9´CI„C;„C;ÌCI´ƒ<˜ƒA„ÃRD8D8ÈC8ÈC8|€$<ÃA;„ƒA´Ãþ"ÈC;„CB„ƒ9 D8$„9ÈÃhÉC8ÈC;„ƒ<„=ÈC;ÈC8D;ÈC;„CB„J˜f´C8ÈC8”D8´ƒ9D;”Ä<´ƒA„CB´C8ÈC;„ƒ<„=D8ÈC8ÈC;˜ƒ<˜ÃX‚2èA„ƒ<„ƒ<„ƒ<„ƒA„ƒ< ¥µ^+¶f«¶Zk8ÈC8D8ÈöŽ+¹–«¹nk8ÈC8”D8ЃA´ƒA=ÈC)|@8´C8ÈC;ȃ9Ѓ<´ƒ<´J´C8„9ÈC;ÈC;„ƒ<„ƒ<ŒJ´J´C8´C8ÄhÉC;„ƒ<´ƒ<„ƒ<„CI„CI„=`F;˜ƒ<„þƒ<„Ãh…CI„ƒ<„CB´ƒA´C8”D8”D;ȃ9D;„ƒ9ÈC8ÈCr…C;ÈC; „9D8ÈC8ÈC8´ƒ9„9ȃ9 D;$D;D8ȃ9ÈC8ȃ9Ѓ<„ƒ<„CB„ƒ<´ƒ9ÈC8ÈC;ÈC;„ƒA„ƒA´ƒ<´C8”D8ÐC8ÈC8ÈC8ÈC8ȃ9ÈC8$D8ÈC8D8 D8ÈC8D8ÈC8ÈC8”D;ÈC;Äh%D;`F8ÈC;$„9ÐC8ÈC;ÈC8ÈC8´f„ƒ<„ƒ<„ƒ<„ƒA„ƒ<˜ƒ<„ƒ<„ƒ<´ƒ<„ƒ<„ƒ<Œ–<˜=„ƒ<´ƒ9„9ÐC;þ D8ÈC8D¡9ÈC8´ƒ<„ƒA„C;„J´ÃmÈC8ÈC8ÈC;„9ÈC;ÌC8Œ–<Œ–<´ƒ<´ƒA|$(ƒAŒ–9X‚<˜ƒ<„ÃhÉ=„ƒ<„ƒ<„ƒ<„ÃhÉÃhÉC;ÈC8”D;ȃ9„ƒ<´ƒ<˜C;$D8´ƒ<„CrD8ÈC8´C8$D;D8ÈC8”D8ÈC8ÈÃmȃ9„C;$D8È=˜C;$ÄhD;„9Ä<|$@žA ÌÌAÚ!ä/ÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAþÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂAÂÁWÚAÂÁ.ÂAð"ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!þä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä/ÌÁ.Âa/Ì¡ä¡ö¢ì"èAJÁàa/ÂAÚ!ä¡ÂÁ.ÌAÂa/æ!ä¡ä¡äþÁä!ÌA(ä!ä!ä!äÁì¢ÂÁ.æ!ÌA¡ì"ä/ö¢ä¡ä!öÂäÁäÁä!ö"è!ìÂä!È.Ú!èÁ.ÂÁ.Ú!ÚÁè!ä/ä/æAÌa/¡ÂÁ.ÚAÂAÂA¡ä¡Â!äÁì"ä!ä!Ú!ì¢ÂÁ.ÚÁWÂa/ÌÂÂð"Úa/Â!XÂÁö¢ÂAð"ä!è/l¥ö"Ö/ÌÁ.Âä¡ÂAÂAÚAÈ.ÌAÚaÂAÂì¢ì"ä!ä¡ä¡þä!ä¡ÂÁ.ðÂ|ÅÔ§ä!äÁèÁVÚaÂa/ÂAÚÁ.Ú!Úa/ÚAÂAðÂèa/ÚAÌAð"ä!ä!ä!ä!ä!ì/l/lÅl¥ÌAÂ/æ!öbÚAÚAÚÁ.>@¢AÈ äÁÚ!,Á.ÚÁ.ÌÌ¡ö"ÚÁVÂa/ÚAÚ!ÚAÌAÚAÂÁ.Â/äÁä!äÁ¡l%ä!è!ì"ä¡ä!ä!äÁÂAÌ!ìÂä!ö‚ÌAÂAÌ!ÚÁ.ðÂÔç,Aþ|Åä!ÚÁþ.ÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚþAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚAÚA¡ÂAÚÁ.ÂA¡ì¢ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡þä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä¡ä!ö¢ÌÁ.ÚAè!ðBÂAÂAÂ!*È>@¡ÂÁ.ÚÁ.ÌAÂÁWJ¹ä¡ä!@¦äÁä¡|¥ä/ö"ÚÁ.ÚÌ!ÚAþÚAÌ¡ÂAÌ¡ä¡ä¡@&ì"Úa}¡ä!ì¢ä¡ì"@Æä!äÁðb/ÂÁVÂÁVè!ì"ö¢ì¢ä!|%ðBÂAÌA¡ä!ä!ð"XÌAèÁÂAÂÁ.¡ÂAÌa/ÂAÌÁ.ÌÁWÌA¡ÂAÌ!ä!ì"Ú!B^8yòÂÉ3G°¼vòÌ$hNž9yæÂ=4׎^8‚á†k'/œ¼v$å…“îa¸‡ÃÉkG0\»pÃÉ3×N^;yáäµ ×.ÁpòÂ4Nž9yíä™ '/œ¼p,õ '¯AþsÛÉkG/œ¼pò 'Ïœ¼pòÂÉ3×.\;‚íä…{Ž 9‚$ÃÉ G’¤¼p =ûC¦ÝÃv‹ÂÉ Ç’`8–áä…“N^8yáXÎ#N^»‡í摌,/\»p‘Û=4G0=sôäµ{Øîa8yáX¶cN^;‚áä…“N^8s Ó3 œ¼p,ÍÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ '/œ¼pòÂÉ 'O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8òþ„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„óP8ò„Ã’9ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#Ï3¹ŒKn¹æž‹nºê®Ën»é>CR8ò„#O8ò„#O8ò„#O8ò„#O8þò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„#O8ò„óP8ò„c=í„#O8Ž<íÈÓAÐ#O)\M’<á\-O8ò„#O;µŽ<áÈŽ<í„#O;ᘃv;áÈX8æÈŽ<á\MÒ pDæ H8®Öy„Cá¸Z;®‚´ãjíG8äa‚„£Ž AÚy„£áhÇ<Ðy„ƒ$ò G8Žv„£ò‡<Ì6z„Cí=ÂAp\-¡G8äÑŽ«…Cá H8H"s¨Ïô0G;b‚„Cæh‡9®‚„CáhAs5sÈ#òþAÚ!v\­ò‡<Â!p´Cá‡9×y„ƒ áG8äy„Cá I8®Fy„ƒ$òG;¶sÌãjíG8äŽv$íHä<Ò‚´CíG;y„£ò0AHBv\­ô0ÇÕÂAsÈ#íG8䎫µCíG8y´Cá¸Iæ!vÈ£áG;ÂÑ‚„CáG8Ú¶p´Cæ€Iäy„£ò0G8Ú!¶Cá I8ÚAs´CíG;äaŽv˜ƒ æh‡9BsÈ#òÇ ñ =ˆAWk‡%ÂApÐCáþIÔG’«Í#ò0=Úy´ãjí I®Žv„ƒ áG;ä‚„CæG8äay„Cá H;ÂÑ‚´#òhAÚQ@y´ãjíG8äÑŽpÈ#æø$ž¡È£áG8äÑŽy„CBï½ïüà øÄ/¾ñüä+ùLJ<¡¾pÈÃò`>òÃq]’Є$4! MHB’Є$4! MHB’Є$4! MHB’Є$4! MHB’Є$4! š š š š š š š š š š š š š š š š š þš š š š š š š á` Åg 5hƒ7ˆƒ9¨ƒ;ȃ=èƒ?( 6( ’$aòòôÐá`ò`Wô ¥ðÑá íòò@Ñòæ $ò`ÑóòÐÑòÐá@íæ@íp5$íÑÑòÐòhÓêòÐòÐòÑWÓÑòÐòòÐá€6$Aæ@á á áà8íp5á æ@WÑá á@á í`òíòÐòÐòÐá þá áÐáp5í í@í í íòòÐá í@á áà8æ@$1á í@æ€6á áÐòÐá@æ@í@á >‰dòò`æ@æ á íòò`W3á á æ á $AíWÓhô@á`òÐaíòíòííæ@òhÓÑá á æp5æ á ízòÐæ á@æ@í@æ æ@æ€6íò`ôòÐWÓñ‹ð @òÐòp‹þ $Aá@$!á á á æ ‰ä8æp5áÐò`$Žaí@áà8íp5á@á@$Aí0$ò$!æÐáÐòahó–ð u0íà8á@á æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ þæ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ í@áÐá áp5í æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ ± þò üÀ¬Íê¬Ï ­Ñ*­ÓJ­Õj­Ðj òð–`ò`ò`ò`ò`ò`í` ÿ ®ëÊ®íê®ï ¯ñ*¯ó*¯ýðü°®Ì* ò`òÐêSæ á áô –ðá æ ô`Wó@áà8æp5íp5áÐá@$!íp5æÑò`Ñòí á ô`$!æòÐWí á áÐòò$!á á æòòò`á í@æ í á á0$!áÐWòíí æòhþòòÐò`hòWCæ á0Aá íp5áÐáÐò`òí æÑòhí€6á@Ñò`á@áòòò@á í æ >æ á í á@WCá >í@íà8áÐáÐòÐòÐhcí áÐò`ò$!$Aôòí@í@æà8íà8í€6á í á æò`òhí@æ@í á á æ æ@í í á >$í á á áð þz@æ€6–`òÑá`òòÐòÐWÓWsíWWhcòWÓá æà8íòÐáÐAòò@óaíp5ð á@$hÓòÐWÓòÐæð‹ð zá á á@í€6óà8óà8óà8óà8óà8óà8óà8óà8óà8óà8óà8óà8óà8óà8óà8óà8óà8óà8óà8óà8óà8óà8óà8óà8óà8óà8óà8óà8óà8óà8óà8óà8óà8óà8óà8óp5æ áp5íp5á`W3Ž3þŽ3Ž3Ž3Ž3ês d` ô*ÍÓLÍÕLÍá` Ñ` W3Ž3ò üPdãLÎålÎçŒÎé¬Îë¬Îõ@õPEÏõ`šð òÐá á@á@Ñô ¥ðæ@hCòÐIá@$!$æ áà8á æ á áÐÑá`hcaWÓò`òô $íòpôô á€6á€6í@í í í@í`òÐaÑòÐæ í@íÔêhÓòÐÑá€6íí€61á@íþ`òhchcWÓòÐòhòÐÑá í0í@í æ $!á@á@í á íòíWÓòò`ÑWÓá íòÐáá í€6BdòòAòÐhcò@á í í@íòÐAá $!áÐá á $!í`ŽÓŽêòÐæ@òÐòÐòÐhÓæ í`òòò!á íòWòÐòÐñ–  @òÐá á°ôòþí@ô`W$!æp5í á á á á áp5í í ííà8á@áp5æ $í í@æí áp5áÐá@aWòòòòí æ P »ð í á á í á áÐá á áÐá á áÐá á áÐá á áÐá á áÐá á áÐá á áÐá á áÐá á áÐá á áÐá á áÐá á áÐá á áÐá á þáÐá á áÐá á áÐá á áÐá á áÐá á áÐá á áÐá á áÐá á áÐá á áÐá á áÐá á áÐá á áÐá á áÐá á áÐá á áÐá á áÐá á áÐá á áÐá á áÐá á áÐá á á@WÓ$!áÐAáÐá á áÐá á áÐá á áÐá á áÐá á áþÐò·@’ÀÖL÷uo÷ñÊò » á áÐá á áÐá ÿ€õ€õ€õ€õ€õ€õ€õ€õ€õ€õ€õ€õ€õ€õ€õ€õ€õ€õ€õ€õ€õ€õ€õ€õ€õ€õ€õ€õ€õ€õ€õ€õ€õ€õ€õ€õ€õ€óLø€ðŒò »Ðòò@ò`  $òá8íò`ò`êííä…“Žž¹vòÊk×N^;y å…kg®¼pþ ¶ShNãÇp ÃÉ '/œ¼p š“gNž¹vÍ5”Nž¹…íä…“gN^;yáä…kn^;yíÂÉ '/œ¼pòÌ…“Nž9yáä…“gŽž¹váÊ3gNa¸vÛÉ §°a8…áÚÉ3N^¸vòÚÉkN^8yáÚÉ §°¹† Í-4'¯ÆpòÂi GÏœÂpíä…Óh.\»pòÌ}4§ÐœÂpòÂÉ ×N^Y…íä…SØNa8yæ¶ '¯¼pòÌÉk(Ïœ¼p ͵“®ÝBsíÌÑ3'¯¼vò̵SN^¸vòÌí–Na¸váä…“×na8yáÚÉ3·[ž9…æ4þÒ §Ðœ¼vä G£vä G¡Ýä çHžÑCŒvä G!KÚY¨ÂQÈyÚ‘Çy‘Çy‘'œ…ÚY(y‘'säi'œ…‘§¡päiÇz‘§…ÚQ(yÂY¨…Ìi'yÌ¡GžÝäi(yÚ‘§yÚ‘'yÌYÈœ,yFÌÑÈy‘'œ…¡'z ‡žpèQ(z¡G¡pè ‡…¡'z ‡žpèQ(z¡G¡pè ‡…¡'z ‡žpèQ(z¡G¡pè ‡…¡'z ‡žpèQ(z¡G¡pè ‡…¡'z ‡žpèQþ(z¡G¡pè ‡…¡'z ‡žpèQ(z¡G¡pè ‡…¡'z ‡žpèQ(z¡G¡pè ‡…¡'z ‡žpèQ(z¡G¡pè ‡…¡'z ‡žpèQ(z¡§yÂi'yÂQÈy‘Çzšg¡pè ‡…¡'z ‡žpèQ(z¡G¡pè ‡žvÂYhyÚÉ… Møqúi¨£–zjª«¶új¬¡þçŸ~ä±äI¡G¡pè ‡…ÌÑäzä¡Gzä¡Gzä¡Gzä¡Gzä¡Gzä¡Gzä¡Gzä¡Gzä¡Gzäþ¡Gzä¡Gzä¡Gzä¡Gzä¡Gzä¡Gzä¡Gzä¡Gzä¡Gzä¡çvzÂy$É%…Ú GžvÚ‘§yÚQ(zä)ÅyÌ¡'…ÌQ(y‘§yÚù¨pä g!säiç#…Ú™§øâÑ's2‡s4 Gžpä g¡p4 GžvÈ£è ‡<Ì!p Oí‡<Âñ‘vÈ£æh‡9zÈà i‡<ÌAy„£xò=.$ô@Ÿ9>Ò…´#í‡<Â!âÍ#òhG åÑsÈÃô=y„Cí‡9äsÈ£xæþG;Ì!pÈ#òh‡<ŠŽ´C!íXH8Ú¡Àp´#i‡BÚ!pÈà ÇBÚsÈ£i‡<Â!v|dáG;䎅„C!áG8äaz,Äò(ž<̱p|Äò‡<ÚŽ…´Cí0‡<¡v,d iÇ<äQ<…/ i‡BÚ±pÈ#ò0‡BÚsÈà ñ@)”¡2È£ Ç"äQÚ…´CíGñ>ŽvÈ#òG;DŽvÈ#íø¨9ÂÑy˜Cái;Â>yÌ£òG;Âþ1y´#ò0Ç[Ã!p|4òh‡HÛ1·Ò# i‡<Ì¡vÈ#ò‡<Â!s„CáPH8äy„Cáøh;ÂÑŽpÈÃá‡9>Js´CíPH8äayÐ#òG;;y´Cáh‡<Â!À*¤% ‡BÂApˆ4òh‡<ÂÑy´C!áh‡BÂÑŽpôXá`ŸBÚ!pÈÃáhG8ÚŽv„£áh‡<Â!s($íG8äaŽv„£m‡<ÂÑ…ÔÃò‡<ÂñHŽoìSˆ9äÑ…´CæG;Â!þpÈ£xáPH8è¡pÈ# ÇGÃ!p¨;æ ‡<Úy´# i‡<Ú!sÐCáG;>Úy´#ò‡9äaŽXâz@;äa‘¶# ‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!þpÈ#ò‡<Â!pÈ#ò‡<Â!p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡vø¨p‡vs‡vyh‡p‡pPˆv‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡p‡pè±âQˆ[ I¸<ÌC=ÜC>ü~Øy°„[„p‡p‡p‡v0yy~P7IœDJ¬DK¼DuÓ„[þ(…`Ÿp0y0‡ …(˜‡ph‡p0yyh‡p‡p ‡’2z…h…yz‡v©p ‘*žp©v‡v‡v‡p …hysPˆv‡j‡p©vs‡p‡vy…y0z©v‡pø¨v‡p‡p(žy‡â …y‡v0‡v0yh‡p‡vyh…hy…‡â ……h‡p)s‡p ‡p‡ps‡p‡v0‡â1‘j‡p0zh…yyhyh…h…y…(y‡vy‡þ⑇vsPˆâ1…hyhyz‡v‡âù¨p ‡vPˆp‡vø¨v©v‡âQˆv0y‡·jy0zPˆph‡ yh‡ y‡v‡vyh‡’by‡2y(žps‡vø¨p‡p‡ph‡pø¨â™‡p0…h…0zè±p‡v‡vPˆâ‘‡ps s‡p‡â‘sPˆp …h…øIx= ƒâQˆp°yh…‡v‡ph…‡vy‡v0ý’‡phy‡j…hy(žjy(y ‡p‡p‡p‡v‡pþ©p(žph‡ph‡ …h…y0‡p©pPs¬yhy0‘jyøKP†?‘ y…(… ‡p)z‘¢‡p)z‘¢‡p)z‘¢‡p)z‘¢‡p)z‘¢‡p)z‘¢‡p)z‘¢‡p)z‘¢‡p)z‘¢‡p)z‘¢‡p)z‘¢‡p)z‘¢‡p)z‘¢‡p)z‘¢‡p)z‘¢‡p)z‘¢‡p)z‡’ yyh…0y ‡pPˆvPˆv‡vsh… ‡p)z‘¢‡pþ)z‡’j‡ph‡ph‡phy‡v0‡[ IØšzø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡z`ø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zà‡}Ø~0IØIx+s‡p‡p~hy‡yhy‡yhy‡yhy‡yhy‡yhy‡yhy‡yhy‡yhy‡yhy‡yhy‡yhy‡yhy‡yhy‡þy(žyh‡j€p˜‡v‡p˜‡v‡p˜‡vs‡p˜yh‡yh…hIÈy0‡ph‡ps‡z0yy‡|°„h‘j‘ yhyy‡’ y‡v‡v‡vPˆph‡phyyh‡psø¨ph…‡j…‡v‡vz‡vø¨ph‡ ‘¢s‡vzy‡v©p‡phy…h‡px+sh‘*yhz0‘2y…y8‡y‡vPˆpPsPˆpPˆpø¨p‡vè±v‡vPs‡vPˆp‡ph‘2þyyyh‡p`y0‡ph‡j‡ph‡pø(z…0‡vPz‡yø¨v‡â‘‡vø¨â‘s‡phy(yy‡v‡p`y‡v‡phy‡yPˆvPˆp`Ÿp©sz0‡p‡pPˆv‡pPˆp s(©p‡p‡p(yh…yh‡yx+s‡phyhz‘ y0‡p©ph‘ yyy…`y‡v‡vè±ph‘ …yy„gÐ1`…Xs‡pPˆvsø(s ‡p ‡bŸ y‡vs‡âþ yh‡y8‡p0y0y‡·jy…h‡pPsx«pPˆpsø¨vPý’‡âù¨v0‡v‡v0y(žy0‡€`Ðyyyyhs‡pø¨v‡âQˆv‡âQˆv‡âQˆv‡âQˆv‡âQˆv‡âQˆv‡âQˆv‡âQˆv‡âQˆv‡âQˆv‡âQˆv‡âQˆv‡âQˆv‡âQˆv‡âQˆv‡âQˆv‡âQˆv‡âQˆv‡âQˆv‡âQˆv‡âQˆv‡âQˆv‡âQˆv‡âQˆv‡âQˆv‡âQˆv‡âQˆþv‡âQˆv‡âQˆv‡âQˆv‡âQˆv‡âQˆv‡âQˆv‡vPˆv‡v‡p(©p‡vyh‡psPˆv‡j‡p(…h‡p(…h‡p(…h‡ph‡pè1s …0` IØšzø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zØ(€(aà‡zpø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zø‡zpšzø‡v„\„v‡v‡“~hyhsPþˆv0…hsPˆv0…hsPˆvØ„ €°L‡v0…hsPˆv0…hsPˆv0…hsPˆv0…‡v¨hsPˆv0…hs(©p‡v‡vyIÈ‘2‡z‡vø¨vPˆPˆRø€v…h‡p‡pPˆv‡v‡v‡p‡p‡v‡vs‡vy…0zø(sPˆv‡v˜‡pPˆpPˆp‡p‡pø¨p0yhy0y‡ yy‡v‡âQs‡v(©v…h…hyh‡pPˆp‡vy…‡vyhsþ‡âQˆv‘ …yh‡ph‡pPˆv(©vPˆp‡pö yyyh‡p0yh…0yhy…y‡·j…hy0‡’ y0zø¨p(yh‡jyhyh‡Àjs …˜‡p‡phs‡v‡vPö™‡vPsø¨v˜‡pPˆpsPˆv‡â ‡j‡y‡p‡pø¨p©vyy0‡’ y…zh…h‡yyy…,yh‡pPˆvPöQˆp‡p‡p …h‡pPsö‘‡p‡pø¨vyhxy0þyh‡yyh‡ph…0yyhy(yhyh…øHØ…? ƒvs8yXz…‘ ‘ …y0yy‡3…hsx+s‡p‡p‡phy……y s‡p‡phy‡v‡v‡v‡âQs˜‡v‡psh‘*…y‡v °„h¨‡px+s‡v‡phy0y`y0y`y0y`y0y`y0y`y0y`y0y`y0y`y0y`y0y`y0y`y0y`y0y`y0þy`y0y`y0y`y0y`y0y`y0y`y0y`y0y`€gN^»‚òÌÉ+ØNž9y 噓§Pž9y 噓§Pž9y 噓§Pž9y 噓§Pž9y 噓§Pž9yòÂÉ3N^8yáÚÉ ×N^8›òÌÉkgÓœÍpí䙓§Pž9y 噓§Pž9£áä…“® Íp6oéÄß?|ÿðýÃ÷ß?|ÿðýÃ÷ß?|ÿðýÃ÷ß?|ÿðýÃ÷?~¾ ™‡îÍiøØ À÷ß?|ÿðýÃ÷ß?|ÿðýÃ÷ß?|ÿðýÃ÷ß?|ÿðýþÃ÷ïß¾}üÌYº¥ÉœÑváÊ3'‰_¸p6›Ûln³¹Íæ6›‹€f:RÂÙln³¹Íæ6›Ûln³¹Ípæä…«&Àfs›ÍålΜ¼pæä…#O8òhBK;ò´#=á$O8ò„#O8ÈC%ŽMáÈÓŽ<æ„#O8ò´cT8ò„c”QíÈŽQí„Ó=æ„SP8íØŽ<á´#O;ò´#O;á´£¢MíÈŽ<áÐŽMô˜#BíÈΔí„cT8ò„#9íØTMæÐŽ‘6™c“9ò„#9ò´ŽŠíÐcŽ<ô˜cS8ò„ÓN8ò„#O8íÈÓŽQæØÔŽ<þáØdŽQæ$9ò´cS8*†ÓŽ<áÈcN;áÈÓŽ<á´cS8ò´cS8í˜cS8óŽ<æ„SЙÍÙŽQíÈN;ò„#9æ(dS;áÈcN;6…cT;áœN;á$O;ò„ÓŽ9F…ÓŽMíÕŽ<áÈÓŽ<áÈN;6™#O8æ´CO8F…cT;F…#O8ó($O8ò„c¤96µc”9ò˜ÓŽŠá´cS8©hN;FÑcN86µ#O8W*$O8”Œd„c“9òXRMá´N;ò„#O86™ÓŽ<æÕŽM…#O;áÈS9ôÈcŽMá¨=íØÔŽ<íØŽMáØÔŽþ<áÈc=ò˜#O;áØÔŽ9ò´#OAá¨8Ï9áÈSÐ<íÈÓŽMí˜ó%Ïè€M…#O;ò´cTAF™#O8F™#O8F™#O8F™#O8F™#O8F™#O8F™#O8F™#O8F™#O8F™#O8F™#O8F™#O8F™#O8F™#O8F™#O8F™#O8F™#O8F™#O8F™#O8F™#O8F™#O8F™#O8F™#O8F™#O8F™#O8F™#O8F™#O8F™#O8F™#O8F™#O8F™#O8F™Cá0Š9ä›´Cí°‰9èa”vÈÃôG8äÑ£„Ã&á°IAŒbþy„Ã(æG8Œby„Ã&á°I8èy˜Cá°I8äÑŽ[AÿÀÇ?ðñ|üÿÀÇ?ðñ|üÿÀÇ?ðñ|üÿÀÇ?ðñ|üÿ¨G=ðQ*ô¦7'A=Ø|ìcHÅ?ðñ|üÿÀÇ?ðñ|üÿÀÇ?ðñ|üÿÀÇ?ðÁÅzàãõ؇<$‘ IÈ#òh‡MÌ!vØDÿh‡9ÂQs„£ æGAÌŽ‚˜#í8Ç9ày„Ãò ‡<¦‚`ÒhG5ðPÀ¿‡9¾á‚@ò8Ç7p`°@ᨆÂQþs„£ æ‡9äÑ›„£ áG8äqyHâá0‡<Úa”pÈ£òh‡M@y”Âò‡<Âa“vÈ#ô0J8äÑŽpؤò‡<ÂÑŽpÈ£6 ‡<Âq&DES ‡MÌAv„£á‡9lz¥ 61‡< bsÈÃ6 ‡<Â!vÈ#6 ‡<Ì!p´Ã(í‡9äy„ƒíPQ;lbz„Cí‡<Úa“vØ$òh‡QÂ!vÈÃòhG8 "‚˜Ã&1J8Œy„Ã(áG8l£˜ƒáG;lŽv%61= b“pؤF1‡BÂÑŽpþ¥6iG8Ìa”p©æG8l›´CEá°‰9äŽv„£* ‡<ÌasУá°‰9äÑx($íG8ÎTy´ãL‘‡9äy„CáG;äÑŽaÉ#*jG8 "pÈ£áG8Œby„Cí‡9Œby$íGAÂQ›(Ä&æGAÂay˜Ã(X„2ô@…cæG8ÚAsؤ*j‡‘ÂQy„CæG;Œb›„Ã(á°I8ŒRy„£ò0G8Úa“vÈ£ò0ÇEåay„Cæ°‰9Â!sØ$òG;ŒbŽp´Cá(ˆ<Ì!XþBu€<Â!sÈ#S ‡BäŽvÈ£6 G;äÑ›„£òh‡MÂÑy´Ã&áh‡<Úa“p´Cí°I8Ú!vØ$íG;lŽvÈ£6 G;äÑ›„£òh‡MÂÑy´Ã&áh‡<Úa“p´Cí°I8Ú!vØ$íG;lŽvÈ£6 G;äÑ›„£òh‡MÂÑy´Ã&áh‡<Úa“p´Cí°I8Ú!vØ$íG;lŽvÈ£6 G;äÑ›„£òh‡MÂÑy´Ã&áh‡<Úa“p´Cí°I8Ú!vØ$íG;lŽvÈ£6 ‡<ÂÑ…£þò0‡QÚ!pÈ#ò‡< b…È#íG;lŽvÈ£6 G;äÑ›´Ã&íP=Ì!p´CáhG,ô ‰2æ2Ÿ9Íiþz¸¿Ø?zÓ ì£؇( |Ô<éIÿ>þ±|ìòÄ-$Ñy„C!61G8Úa‰˜£¬4G;XiŽv°Òí`¥9ÚÁÊpT¿G;ÎaŽs˜£ÂÇ4^Às,#:0G8¼0sˆã$:JaŽpœ€Û@Ç hpŽe€•æh+ÍQV‚¾æ=+ÃaIäBô‡<Â!pؤò‡<›XâþáPQ8äy´Cáh‡<Úa“vÈÃíG;TdŽp´CíG8äŽv„Ã&á‡9ÂÑy„Cá˜G;äay´Ã&í¸h;ly„cJòh‡<Ìy„Cí°I;äÑŽ3µƒ<´ƒQ´ƒ<„ƒŠ„=„ƒ<´ƒ<„C;„CAÈC;¨ˆ9ÈC8´ƒ< ‹<„ƒM´ƒ<„C‹ÉC;ÈC8I8ÌC;ÈC8ØD8´C8´ƒ<´ƒ<„CAÈC8ØD8ØD8=˜C;ÈC8ØD8´C8ÈC8ØD;ȃ9„ƒM„ƒ<˜C;ÈC;Ѓ9ȃ9¨È9ÈC;„ƒ<˜ƒ<ÐC8ÈC8ØD8´ƒM˜ƒþ<´ƒ<„Q˜C;„ƒ<„ƒ<„<„=˜=˜ƒ<„C;´˜9ÈC;…9´ƒ<˜C;ØD;Ѓ9„ƒ<„C;ȃ9´ƒ<˜ƒ<„ƒ<´ƒ<„C;ÈC;ÐC8ÈC;ÈC8Ø„9´ƒMЃ9ØD8´ƒ<˜ƒM˜C;ÈC8È=„ƒ<„‘˜ƒM´C8¨ˆ9Ѓ9ȃ9Ø„BÈC;ȃ9„ƒM„ƒ<˜ƒ<Ôƒ9ÈC8ÈC8|@)<ƒA8ÈC8ØÄ"œI8ÈC;„ƒ<„ƒ<„C;„ƒ<´ƒM´C8ȃ9ЃMÌÃ9‰9ÈC8ÈCAÈC8ÈCA˜ƒM˜ƒŠ´C8ÈC8ÈC8ÈC;ÈC;„CA„Ù´þC8ÐÙ„ƒ<(D8E8ȃ9ȃ9Ѓ<˜ÃXÂ3èœI;̃9ÈC;˜ƒ<„ƒ<˜ƒ<´C8Ø„9ÈC;„ƒM˜ƒ<´C8Ø„9ÈC;„ƒM˜ƒ<´C8Ø„9ÈC;„ƒM˜ƒ<´C8Ø„9ÈC;„ƒM˜ƒ<´C8Ø„9ÈC;„ƒM˜ƒ<´C8Ø„9ÈC;„ƒM˜ƒ<´C8Ø„9ÈC;„ƒM˜ƒ<´C8Ø„9ÈC;„ƒM˜ƒ<´C8Ø„9ÈC;„ƒM˜ƒ<´C8Ø„9ÈC;„ƒM˜ƒ<´C8Ø„9ÈC;„ƒM˜ƒ<´C8Ø„9ÈC;„ƒM˜ƒ<´C8Ø„9ÈC;„ƒM˜ƒ<´C8Ø„9ÈC;þ„ƒM˜ƒ<´C8Ø„9ÈC;„ƒM˜ƒ<´C8Ø„9ÈC;„ƒM˜ƒ<´C8ØD;ØD8ÈCAØD8ÈCA„ƒ9ØD;ÈC8ÐC;ÈC;„C;„ƒ9ÈC8ȃ9ÈC;„ƒM˜ƒ<´C8Ø„9ÈC;„ƒ<´C8(D8ÈCAœI8ÈÃ-$üÃ>ÔÃ?pÑ?pÑ?pÑ?pÑ?pÑ?pÑ?pÑ?pÑ?pÑ?p>ÔÃ8À;Ô?pÑ0 =°ƒ¼Á¼C=ðýýýýýýýýÃ!áƒÌ™ƒ&ì‚%Ø„9ÈC;„ƒŠ´ƒ$ü8œƒ9€ž9€ž9€ž9€ž9œC8 Hþ8€8„8œƒ9€2@8,Cx8€Ã2€9tü° Ã9|üB8˜Ã0,@8,ƒ˜Ã9€Ã9˜éðœƒ9 ƒ£²’ÔÃ?¤Ã?¤Ã?¤Ã?¤Ã?¤Ã?¤Ã?¤Ã?¤Ã?¤Ã?¤Ã?¤Ã?¤Ã?¤Ã?¤>p=¸üÂ>Ô>ÔC3>TÃ0ÄÜ?¤Ã?¤Ã?¤Ã?¤Ã?¤Ã?¤þÃ?¤Ã?¤Ã?¤Ã?¤Ã?¤Ã?¤Ã?pÑ?Ô?Ô?ȃ$ä‚$„ƒQ˜ƒ<„C;ØD8HÂ?8€8€8€8°’9€Ã2À/€8œƒ7lÂ8€$€€Ã2€8œC8,ƒxÃ2À6x8„ƒ9,P88,ƒP*8˜C8€Ã9Ð)8„ƒ9œƒ9œƒ9°’Ô>Ô?Ô?Ô?Ô>ì>ì>Ô?Ô?Ô?Ô>ì>ì>ôÆ?Ô>à=T@ ìÑà p@=TCTB=¨}=àÃ>àÃ>àC=ðC=ðC=ðC=àÃ>àÃ>àÃ>àC=ðC=ðáCÌáƒ9hÂ-HB8ˆm8´ƒMHÂ?˜   KY‡ƒ74€þœCYƒÃ4 €"ˆ8 ƒlÃ2†Ã2€7LÃü‚ìOüB8Ðis,ƒ€Ã°Ð©9Щ9€Ã9˜CY›8„8˜8lƒ‰gè áø%~cy„c“á¨M;Âay´#ò‡<Âñ›p¤òh‡9b‚„ƒ áG;äy´ÃòhAÌ!vÌCíøM;äzÈ£1ÇoÂ!pÔ&ò8AÚ!pÔá‡,ñ =à æþ ˆ9~ÓŽylÒ”aëXÉZV³ž­iUëZÙZVs¤òh‡9äqpüfµ ‡ÚÖIÜB¿iGmÚ!vH⢇è¼₃¸à9ˆ»kÄá €*q%PÀÈB¶± xcÛX†¶ái ` 7Ì1 8 8Â6–âzàð8¼ao˜Ãà ®9¶q o€£’¸E;ŒsÚ´ƒ ¨þR)<`y„ ©M;ÌAÚ´£6á ˆ9ÂÑŽp´#ò‡<Âñ›pÈ£á H8è!pÄò‡<Ú!sУÆ1‡<ÂAv„CíG;Â!v„CáG;æŽß´ƒ í0N;Âqy´£6á H;ÒŽpÄò‡<ÚasÈ#ò‡<Ú1pÈ£µi‡<Â!v„Cá¨9èAƒÈ#íG8䎃Ô&òؤ9‚„Cí‡<Úñ›pÈà ÇAjcy´#¿ ‡<ÌQ›p¤IfmBƒÈã áhG8ŽÚ„£6 ‡<Ú1p˜CáøMþ;äÑ‚´£6í‡<ÚAsÈÃô‡9äÑ‚´cí0‡<ÂAß„Cí0‡<Â!sÐÿ =jc‚„CáhvÌ!pÈ£ ÇoÂQ›v„CáGXäsУòh‡9è!vÈ#ôhG8Ì!sÔæ–ØÅÄ@p´#‹‡<"pÈ£ò0AÂÑŽÚ„ã7íG;Â!pÔÆí H8jÓ‚„£6á=ÌAs´£6áhG8äŽv„CæhGmBpÈ#iAÚy„£òG;jŽv„£ô0Ç,¡Œ:à7íG;äŽv„£•ò‡<þÂ!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ò‡<Â!pÈ#ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!ä!äþ!ä!ä!ä!ä!ä!ÚAÂAÌ¡"äÁä!ä!,Ú!ä!ä¡äÁäÁä¡"ZIÂAÂAÂA¡ä!Ú ÚA¡6ÚÂÁ8Ú Ú hA,áØFðAðÔ†êÔFðAðÔ†êêÒ¡èAðÔ†äê ð¡ð¡ðamäêêÔFðAðÔ†êêÔÒ¡JÔFª¤JêÁ$!,AÂA¡ä!äÁBþÁ®áDGEGEGEçˆ ¼¼aþ®Áž!™žažA¯ÁˆkžAtÒñ’ÉÂ+¼ÀÁ®Ážá¾àñÌ!½AÍÁ®Á®Á¶Á$ÌAÂá ÂAÌ¡ÂAÂAÂ!ªÄ>€ÌAÌAÂAÌ¡äÁj#ä!BÚAÚ èÁèÁä¡ä¡ä!ä!Ú ÌA¡"Âä¡ä!jCÌA¡¡j#äÁ˜+ ¢¡"¢äÁä!Ú!Ú!ÚAÚAÂá ä!ä!äÁä!"äÌ ÌAÂAÂ!+Ãá j#ä!ä¡þä!""˜2ÂèÁÚ)Í!B¡äÁäá ¢ä¡¢ä!Ú!¢ä!Ú Ì!+ÃA¡6ÚAÂAÂA’‰ èÁÚ!æ¡ä!BÌ!+å¡ä!ä!ä!‚ Ì+Û!Ú!BÂAÌáæ¡"Ú!+Û ÌAÂÁÚ)Û Â¡èÁ¢°²ä!j#Ú BÚÌAÂAÂá ä¡Â‚ ¡˜2jƒÌ Ú BÌAÂAÌ¡˜²ÌAÂAÂáJþ€ ÂAÌþäAÂÁj£˜2äÁ˜2ä!ä¡ ÂÚ!Ú BÂAÂAÚ Ú!¢j£b¢6ÚAÌÂä¡¡ÌA ÂÂAÚ!‚)ÛAÚ!Úá9Íá,áô¡ÂÁä!Ú¡6ÚÁ䡿á ä¡ä!ä¡ä¡ä!ä¡ä¡ä!ä¡ä¡ä!ä¡ä¡ä!ä¡ä¡ä!ä¡ä¡ä!ä¡ä¡ä!ä¡ä¡ä!ä¡ä¡ä!ä¡ä¡ä!ä¡ä¡ä!ä¡ä¡ä!ä¡þä¡ä!ä¡ä¡ä!ä¡ä¡ä!ä¡ä¡ä!ä¡ä¡ä!ä¡ä¡ä!ä¡ä¡ä!ä¡ä¡ä!ä¡ä¡ä!ä¡ä¡ä!ä¡ä¡ä!ä¡ä¡ä!ä¡ä¡ä!ä¡ä¡ä!ä¡ä¡ä!ä¡ä¡ä!ä¡ä¡ä!ä¡ä¡ä!ä¡ä¡ä!˜²â äÁè Â)ÛAÚAÚaÌ"˜r¡ä¡ä¡ä!"¢ÂÁ"ä!Ì¡6"ÚÁäá ¡äáÈÀþ¡JäþäÂå¡JääÂåBmðäêæ¢J°’¢Jää¡JääÂåä¡Jäêê!êÁwW$á,AÚAÌ Ú ÌA$DGEGEGEG½½!½á¼A½áˆ EÁÆ—¸¤ñ¾àÑ®AtàÑ®Á®A$aÚ)Í¡6ÚAÚ €ð¡> 6Ú!+Û!"¢æ!äÁä!²2Ì Âä¡Â)BÚ¡6Ì ÂAÂ)Í"°²ä!Ú!Úþ!ä!ä¡â ä!b¢6Ìä!Ì¡6Ì)Û¡6 Âá9ÛAÂAÂA ÌAÚ!"ä!j#â äá ¡6ÌÂä!ä¡j£Â¢ä¡¡ÌAÚ!䡿¡"äá äÁä¡jÃä!Ú!ÚAÂ"ä¡j£jã j£Ì¡6Ì ÚAÂA¡ÂA¡6ÂäÁä!˜2äÁè ÌAÂAÚ Ú!,j#Âä!ä!¢j£¡ÂA¡°2ä¡•ÂAÂAÂA þ6Éäá ä¡ä¡¢•¡6¡6ÂA¡ä!ä!j£ÌAÂÁ°ÒèAÚ!"è Ú >`”AÈ€)Ûaâ Âá ÂA¡6¡¡j#â °2äÁä¡ä¡ä!ä!Ú ÂAÌ!ÚAÌ¡¡"䡲2ž³žÓä!ä!ÚAÌ ÂAÂá  >”á€)ÛAÚA¡jÃäÁä!°2°2°2°2°2°2°2°2°2°2°2°2°2°2°2°2°2°2°2°2þ°2°2°2°2°2°2°2°2°2°2°2˜2Ú!ä!äÁžSÚ Ì!ä!ä¡j#ä!ä!,j#ä!˜2"‚¡˜²ä!‚ÌAÂAÌAâÈø ª¤6è |Qª¤6è v—°rä¡Jj£Jäääawåawå¡JjƒB»åj£Jð!‚‚äAnA¡6Ú!ä!¢,á®!ÒA£!¤1Òa|#\Â'œÂ+ÜÂ'ÜÌAra“¡6¡•ä!€äÁ> ÂAÌþá ÂA¡"Ú Ú!ÚÂAÌAÚAÂA¡j£"jã äÁBÂAÚ ÚÂA"â ÂAÚAÂa“Ì+Û Ì!ÂÚ’i“ä!‚ÌAè!BÂAÂa“¡6Ú Â¡¡ÂAÌ ÚAÚAÚ Ú Â¡˜2ÚAÚAÌA¡"‚ Â)Ãá ä!ä!äÌaÚAÌ¡6 ÚÁÚA¡Âjc“j£èÁ¢ä¡ä!ä!ÚA¡ä!äÁæá ¡6ÂaÚ þÂAÂA¡6Ú Ú¡6ÚAÚ Ì¡ÂAÚ Â Ú ÚAÌ¡6ÚAÂABÂAÚAÚ!6IÌÌAÚ Â¡ÂA Âaj£j£"æ¡6¡ä!ÚAÌ¡äÁÚAÚAÚAÂAÂAÂA Ú)ᘒÌaÚ¡6ÚAÌ Â ÂAÂAÂá áô€ Ú!B,!Ì Ì Ú¡6ÚAÌ""äÁä!Ú!ä!ä¡ä¡æ!j#èA ڡ6Â)Û ÌÁä!ä!ä!ä!þä!Ú!ä!ä¡ÂA¡ ÚAÚAÌ¡6ÚA ÚAÂ>À€á ¢ÂAÂAì^ÂAÚ¡6ÂA¡ÂAÂA¡ÂAÂA¡ÂAÂA¡ÂAÂA¡ÂAÂA¡ÂAÂA¡ÂAÂA¡ÂAÂA¡ÂAÂA¡ÂAÂA¡ÂAÂA¡ÂAÂA¡ÂAÂA¡Â ä…“®]8yáä…kN^8yáÚ…“N^¸váä…“®]8yáä…kN^8yáÚ…“N^¸váä…“þ®]8yáä…kN^8yáÚ…“N^¸váä…“®]8yáä…kN^8yáÚ…“N^¸váä…“®]8yáä…“ÇV^;yáä…“×.\»pò™3×–m8yáÚ…k®m¸vòÚÉ '/ÛvlÛÉk'Ïœ¼pòÚµ ÇÖ\ß¶æØÞ"£‰ßç¶ðÚÂ;-^[x¬cËf ¯-¼ÓðÚ“M½¶ó䙓tKR¸váØ¶“NžfIÿ®E»F=õkÑ®§‹v½»÷ïߟ]Ö=xïé¢]{ví™7ïÏÎS—')—9¶áäµckNž¹¶°UÊò´Ã–9ô„ÃV8mµŽ9ô´ÓW;þò„#O;mµŽ9ò„#O8ò„#O;á°ÕN8ò„#O8òh&O;ò´#O;ó„ÃV;æ´eN[áÈŽ<æÈ[æôÕV;æ°Ž<íi[á°e[áÈŽ<áÙV;òhÖN8ò„#Ï^}…#O8lµcŽ‘á´eŽ<áÈŽ<á°eŽ<íÈÓŽ<á°¥Y8li&O8ò˜C<áÈcŽ<íÈÓN8ò´cŽ<á´N_áÈŽ<áô[íÈÓŽ<í„ÃV8ò„#O;æ´Ž<íôŽ<í„ÓŽ9ò„ÓŽ9ò´Ž–á°ÕŽ<í„ÓŽ9lµ#O8ò„#O;òÌ[æÈc=æÈÓN8F†Ã–þ9ô´#O;áÈÓN8í„cŽ<áÈ£Y8ò´Žfò˜Ã–9m…ÃV8ò„#O8mµÓV;áÈÓN8ò„ÃV8ò´#O;ò´N8í„#O8l…#fò´#O;l}`‰2uÁV;ò„³ˆ–áÈN;á´¥Y8lµÓ=æÐN[á´Ó[á´ÃV8l…Ó[í°ŽÏò„Ã=áÈÓ=áh)O8ò„ÃV8ô˜ÃV8>·Ž<áÈÓN[æ„#9ò|‰2zÀV8lµÓW;lµ#O8òÐ=æ°EO8ô˜Ã=áÐc[ô„C9lÑ=æ°EO8ô˜Ã=áÐc[ô„C9lÑ=æ°EþO8ô˜Ã=áÐc[ô„C9lÑ=æ°EO8ô˜Ã=áÐc[ô„C9lÑ=æ°EO8ô˜Ã=áÐc[ô„C9lÑ=æ°EO8ô˜Ã=áÐc[ô„C9lÑ=æ°EO8ô˜Ã=á ‡9ØBpÐÃl¡G8èa¶Ð#ô0[èz˜ƒ-ô‡<Â!pÈÃ} G_ÚA¶„£ò[ÚÑ—v´¥li‡<Ì!z„Cí‡9Úy„ÃHí‡9ØÒ޶„Cáð™<Â!`Aü ‡9äyÐÃm¡‡9äAs°…æh =ÌÑz˜Ãjó=þÌÁz˜£-ó=Ì!z˜Cõ0[èa޶ÐÃõ0=ÌaµvÈF²Ä.4Ñ—pôÅáÄ?¨óŒgP§’Ô©d4¢ñŒh<ã:ϸÆ3®QÉk<#ϸF4žgDãѸÆ3®ñŒk<ãψÆ3®ñŒhTòÑ Î&Ÿgt'ϸÆ3®g ãÑxužgDãáÄ.ØÒy„Ãgí ‡9äy„cô‡%>y„ÃHáG;ä¶Ð#òh‡<ÂÑy„ƒ-íG8ÚÑ–v´%l1‡<|¦¥pÈÃáG8äŸÉ#ò0‡<Â!pÈ#ò‡<ÂþÑ–vô%òG;ÂÁsÈ#íG8|&pøŒ-í`K;ØÒy´CíG8äy„ÃgáG8äa¶´CíhK8äy„ƒ-á`K8Úy„Cà”G;¬&ŸÉÃm ‡<ÌÁ–p´Cíè‹9úbŽpÈ£ó°Z8äy´Cí`K8ä¶„Cáð[|FsXÍò‡<ÂÁs´%}1‡<ÚŽv„£áG;ÂÑy˜£-áh‡<Â!v´%í`K;úBs´Ågò‡<ÂÑŸ±¥ò ‡9úy´Cí=Ìaµp´ƒ-íG;äѶ„ÃgòG[ÂÁþ–v°%l1G8|Æz˜Cí`K8ØNpÊ#€Ä3ô@†p˜£-‹hG8ÚsУm G;Â!sУáG;Â!pô¥á`‹9äÑŽpÈÃò‡<|&sÈ#òG[ÌÁ–vÈ£mi[|y„£/á0R8ØÒŽp´%ô‡<ÂÑŽpУ/æø$ž¡‡„Cá‡9Úy„£æh‡<Âa$ŸõÅg}ñY_|ÖŸõÅg}ñY_|ÖŸõÅg}ñY_|ÖŸõÅg}ñY_|ÖŸõÅg}ñY_|ÖŸõÅg}ñY_|ÖŸõÅg}ñY_|ÖŸõÅg}ñY[ÂAþvÈ£ò[Â!pÈÃg}i‡<Â!sÈ#ò‡<Â!pìEæ`K;ØÒsô¥òG;ÂÑŽpÈ£li‡9ä¶´£-í‡9Ú± 2H‚ò0=ÌÁsÐÃm1=Ì!sÐÃô0G_Âaz˜CáG8äÑy„ÃôG;à!sÈ#íG[ÌAs°Åò0=ÌAshÉò0‡<Ú!sÈÃò0‡<Ì!pÈù°D8äy„Cáè‹$þñŒM>c“×xÆ&£ñŒh<•¬d4ž±òkãѨd4®QÉh\c“ψ†<$q‹p˜£/íèK;ØzÈ£h‡<Â!pÈ£òh‡<Â!vÈ£ò0‡9ÚÒy´#ò[ÂÁŸ…ƒ->k‹9äÑŽpÈ#l1=ÚÒy˜ÃjáhK;úŸ…C>“G8ÚsÐÃHæG8äay„Ãgá‡9äy„Ãòh[ÂAv°¥òhG[À¶øLá [ÚÁ–vh©æ‡9äá³pÈ#òG;Â!vÌœáÐ’9äÑŽyL¬/áhK;äÑŽpÈ#ò‡<Â!v´%æ íÐíÀþíÐá >#íæ áÐíÐíÐíÐíFbôÀíÀæÐ>Ãæ@í`òmÑá íòlá3á ímòòÐóplôÀáÀá >#á íòílaòæ æ í}òmòmÑá@lÑæ`$áÀíæ æÐ` Ï d ôò–`$>#á ô`}alaòòòò`òmÑZbmÑòÐòòòò`á áÐáÐòò`òþlíÐá áÀáÀííÐíÐí í0lñ–  uFÒòòÐ}ÑòÐòò>#á áà3òò>#á áà3òò>#á áà3òò>#á áà3òò>#á áà3òò>#á áà3òò>#á áà3òò>#á áà3òò>#á áà3òò>#á áà3òò>#á áà3òò>#á áà3òò>#á áà3òòþ>#á áà3òò>#á áà3òòí áÐlÑòòlÑòòí áÐá æÐmÑòòÐòÐôÀíÀá áÐlíò`mAæÐóÐòlòò`>>#í@ z ’Ðæ õ`ò`ò`ZRæ æÐò`mQæ@á á æÐáÐZBæ@VmQæ æ á æÐæ æÐô`ôò ·ð ’ áÀôòí áÐ’`5í %á@deò`üiþmaüY *–° ÏÐá æòòò@ò` `}í æm}ò>ÃíÀá í æÐáà3òíÀæ í %á æÀ>#á`$áà3òòlaòí íÀáÐá áÐlÑZbòÐòÐFbáÐlaòí æ á æ æ áÐá íÀá æò`á á áÐ}mÑò}a>c$áÐáÐáÐíòòí æí á á áÀí áÐmaþòí á æíæÀæà3mÑòíí á æÐá æÐá æ íímí áÀí áÐ^laòÐòÐá á á ôlò`òmÑlÑòÐæÐô`æ àÄí@æ úÚáÐá@VæÀáÐáÐíí í íò`òÐòlíòlòò`òPæ á áð‹ð z@í á í°í0á æ á áÐáÐmÑFôÐá æ àmÑáþ >lÑmÑVFâ3lòíÐíÀá æ@lòÐáÐá á`òò` Ï ò>3íÀíòæ íòÐò`òòÐò`òòÐò`òòÐò`òòÐò`òòÐò`òòÐò`òòÐò`òòÐò`òòÐò`òòÐò`òòÐò`òòÐò`òòÐò`òòÐò`òòÐò`òòÐò`òòÐò`òòÐò`þòòÐò`òòÐò`òòÐò`òòÐò`òòÐò`òòÐò`òòÐò`òòÐò`òòÐò`òòÐò`òòÐò`òòÐò`mòÐáÐíFb}ô`ò>Ãí á í í`òòÐlZÒòmÑæÐòÐ}ÑFÒáÀÏ@í’°Ç–ÐÇš` ’` šÐÇ„ÜÇ’` ’` {¬ {, š š` š` ’  }, – „ÜÈ’PÈžLÈ’` ’` šàÉ{lþ šÀɬ {L Ñð’À>ÓíÀæ œ¼ª¼Ëª ‹ÐÈ̬ ªÌ{ÌšÀËl {¼œ,ÌÁ, ÀË’Ìœ Ñ íí á@mÑòÐlô ¥ð>la}líÐá æ á æ í í á >lam}íò}á3æ á áÐá í æ áÐíÐæ æ í í >#íÀá íFòÐóNmá3òÐò`}ÑVòdÕòÐò`òÐáÀá áÐáþ áÀííímòlÑáÀá@Úá á æ@íòÐò`lÑlaôÀáÐá á %á`$íÐá@maôòÐlòòÐóÐæ í0áÐáÀæ@llÑá æ@lòòòÐá`ô íÐí0íòÐFíÐáÀá áÀáÐmò`ô >cô`òNFÒò}Ñòà3òÐò`õ íÐíÀ` ÊPd íÀá` áÐô`}á3òà3á æàÔþáÐmòò`lÑá æ áÐ^áÐòí á á á áÀí>#æ á á@æ á æí í >laô`}Ñmñ–ð òÐòÐæÀá æ íÐæÐô`}AæÐô`}AæÐô`}AæÐô`}AæÐô`}AæÐô`}AæÐô`}AæÐô`}AæÐô`}AæÐô`}AæÐô`}AæÐô`}AæÐô`}AæÐô`}AæÐô`}Aæ`$í þáÀæÀáÐáÐáÐlòí`$àòlaáÀáÀæ áÀáÐá0í á í áÀí æòàíò`òí í` ÿ° · »p æ¾ ¹° ·° æN æ~ »° ¹p ¹° · ø~ »`î¹p » æ¾ ï · ´€ïï~ ± æN ïï¹ð Ÿ æž ´`î¹ïæN Ñð–Àá æ áÐò`òòÐÏ@ ·@ »@ ·@ 4 ´p »ðî4Oóñ¾óñþó»@ ñ¾ó»p 4ï·°ó»@ó·þ@ó·°ó»`î4ô»@ »@ æ¾ó·@ ñN æN Ñ áÐí í íà$áô@–ðò`}í á áÐô`ííÀô`}aá áÐæÀí á á íòmòíóÐá`$á %áà3òmÑòòòí áÐòlaóÐlíòòÐá æNòò`áÐíóÐòóà3òlÑòòlíÀáÐíÀ>CáÀá á áÀúª%áÀí á í þ>Ãáà3áÐò`á N^8yÛD(¯ÂpòÌ%”N^;yᆓN^¸‚áÚ…k'/\»‚íÚ…K®¼pÛ…k‡0\A“òÂÉ3)ÏdA“¶“×N^¸‚ôÂÉ3N^¸váÚ…+h®]¸vòÂÑ3N^¸‚íäµ+®`8yᆓg¢9s&õ '¯Âp&íÊ3'^8“òÂÉ '/ÜHÏô1'/œ¼v‹äµ ‡Ðd8yíÂÉ3G/=yæäµ '/\Ápí|š4G¯BsòÂ4‡°ÂvòÚÉkν‚óÚùl—М˜GžpÚ±"“ §pèA¨pjÇœ‚Ú‘§sè ‡žvÂñ©pL*¨pÚ)(“‘§‚Ì)(yì’§yÚ)¨‚Ú‘§p §„¡§ˆÌ‘§„Ú GžväiÇœpäi'y‘'yÌ)(yÂA(œ‚‘'sä G“äi'yÚA¨„‘'yÚ‘'yÚ)ˆ-yþL § s|jGžvä GžpÌ‘§pÚ GžvÂA¨yÚ‘§p jGžpäi'y‘'yÚ‘§ˆÚ)(yL’'yÂA¨‚Ú § “ÂAèyÚ GžvÌ‘'yÚ G“‘§pÚ §pä ¡väiGsèQÖ¤|åi'säi'œ‚L’§„Â)Èzäi'“2‡ž‚Â1GžpÚ)¨säi'ŸÂ‘§yÚ)èKžÑƒ yÚ)H8!pÈ#ò‡<Ì!väËôGAÂAs„Cá0I8äay´Cá(=Ì!v$òG;äy˜#í‡9Žpþ$ò‡IÂÑy„"4,ˆ9ÚŽvÈ# iB>` eü1G;Ì‘p´# BÂ!p $òBÂ!p $òBÂ!p $òBÂ!p $òBÂ!p $òBÂ!p $òBÂ!p $òBÂ!p $òBÂ!p $òBÂ!p $òBÂ!p $òBÂ!p $òBÂ!p $òBÂ!p $òBÂ!p $òBÚQpÈÃáhG8ÚQpÈ# G;äÑy„#!怈]äÑŽpÈþÃáhG8ì"p´Cô0G8䎄˜Cí‡IÂ1„˜Ã$ò‡<Ø©vÈ#í‡KÚMœØî\;yÛÉk®9Ýòε“g®¼píµk®ÝDyíäM<'/¡¹p ÃÉ ×.\‰íÂk®<ÉsN;á`4Q;ò„#Ï9 ž#9í„“P8ç´#O;ò˜ã`B͵sN;áÈÎ9í4׎<á´3QBá´Î9ò´#OBá´#O8ç´#O8 ÉÎ9í„Ó`;áÈN;á´N;ò„#Ï9í„#Ï9 …ÓN8í„sN;áœÓN8í4×N8ò„ÓŽþ<á´3Q;ç´N;ÍÉN;ò˜ÓN8í„ÓŽ<á4ØN8ò˜Î9í„ã`;á´N;%‘9ò„“P8…ÓN8ç´cN;á´N;áœÓÎ9…cŽ<íL$ÏD …Ó`;áœÓŽ<íÈ3Q;á´N;áÈŽ< …ÓŽ<ç˜#O8çÈN;á´#O8ò„ƒ‘<á´N;ò˜#O8ç$$O8ò„#O8ò´N;EÔN8ò„ÓŽ<á$$O8ò„ÓŽ9áÈN;á´Q;ò„ƒ‘<@òŒd˜#ÏJò„Q8s™#O8íÌŽ<á NDáÈNf'%dÎIæÈÓNÈáDN;…ƒ”9ò´sþR8ò„#9ò˜C<áÈŽ<í˜Q8æœd=ò˜ó$Àè@8ò„#O;ò´Q8ò„cRáÌÎ\áÌÎ\áÌÎ\áÌÎ\áÌÎ\áÌÎ\áÌÎ\áÌÎ\áÌÎ\áÌÎ\áÌÎ\áÌÎ\áÌÎ\áÌÎ\áÌÎ\æ´Ž<áÈcŽ<áÈNDí„#O;áÈÎIáÐs’9'…#O8ò`Q;'µ39áÈŽ<íÌÓN8ò„#O8'µ3Ï9ídÖŽ<áÐcŽ<í„ÓRæ ÕŽ< É“PDáÈÓŽ<í„Q;ò$$9…#9…Q;µŽ9ò„#9ò„þ#O8äzÈ£'™R"vÈ£1‡<y„#!æˆH8äÑŽpÈC7óÇIÌ!ÝD$!' ‡<"Œ„Ãô0‡<Â!pÈ#òhG80Ž“´ã$‰H8䎈˜#"æ GDÂ!pÈÃôG;ÌAvd&òh<y˜CáG8äy´Ã' @DJᤴCæ@J8"Òy˜Cá0ÇIÂ!s„,"íˆH;ÂsÈ#1GDÂ!sУiGDÂAˆ´#'iG8䎓˜#"íˆH8"bŽv˜£H1RÌAsÈ£1="Žˆ´ã$á@þJ8Ì!p´Cæ8‰9"²G†ƒH RÌAvÈ#!òhG2s´Cí@J;äÑŽ“„#"áG;N¤´Cíèc8äÑy˜ƒ1G;Â!vÈ#Iˆ<Ú”vÈ£òGDÚ±’vD$HiGDÂq’pD$í0Ç\Ú!sÐ#òGBäay˜ƒለ9äÑy„#"í‡9䤴#ò0ÇIÌ‘pÈ#òG;äÑŽ“„ã$íG8ä±’ˆ„CíˆH;äÑy˜CáG8ä‘pÈ£°Ä3ô@†ˆÐã$áX„$a‰E,B’X„$a ²ZÂ’X„þ$È*WKÕ’+Ya ¹Zb– «$È:K,ÂáhÇ\by´#íˆHBäŽvÈ£òhÇI‚”vÌÅí˜Ë,ñŒ:@툈9Ú!p´CíˆHBŽv %í@J8Ú”p´)áhRÂѤ„£H G;Žv %í@J8Ú”p´)áhRÂѤ„£H G;Žv %í@J8Ú”p´)áhRÂѤ„£H G;Žv %í@J8Ú”p´)áhRÂÑŽˆÐÃs ‡<Ú!vÈÃ1‡<‘pD¤óH=Ì!pÈ£òh‡<þÌ!pÈÃíG;ÂÑŽˆ´Cí0Ç\Ú!pÈc" ‡<Â!pDÄíY8Ú”p´#ò‡<ÌŽ„È#ò‡<‘vÈÃáh‡<Ú‘vœ$í8‰9Ú!s ¥òhGD莈„£ò˜H;Â!p`Dæ‡9ÂqsD¤H G;äAsÈ#ò0‡<‘p´ã$æ‡9Ú!pè&"áHˆ<ÌÑÇvD$íG8NbŽ“´#ò‡<ÂÑy˜CáG8"ÒŽ¹´#dæˆHBäy„Cለ9‘vÈ£òh‡<ÚsÈ#òÇäAK|@툈9"þŽvÈÃò0‡<Ìz„£æ8I8䎄„£òh‡<ÂÑŽˆ„#ôRÂÑŽ“$$íG8Ú!s´ÃáhÇIÌ‘ˆ„Cæˆ=ÌÑyÐ#ò0‡<Ìsœ#ò0‡<ÂÑŽÌ„ã$í8I8äaŽvÈ#1G;NŽˆ´CáhGDÂq’„ÈÃí‡<ÌÑŽˆ˜£áh‡<Â!pD¤ò‡<Ì!s$$ò‡<Ìay˜#!ò‡<ÂÑy´CæGBÂÑy˜#!'1GDÌ!pœ$íG8äaŽpDÄí0‡<Ìs %H1ÇIÂÑy„#!ò0G8hñþ„DÄ¡‡9Úq’p´Ã ÇIÌqz˜#"á‡9äaŽ™#d戈9"ÒŽpœ¤ò‡<Ì!sÌ%òG;Bs„CáG8äŽv˜Cá@Š9Ús„Cá‡9äApÈ£'1‡<ÂÑŽ,âz FÂK´#í0G;Ì!sÈ#혈<4H8´ƒ9ÈC;DDBÈC;œƒ<˜R´ƒ9„ƒ9ÈCB„ƒ<´ƒ<˜=´C8´ƒ<,BB„CB˜CD´ƒ9ÐC;„ƒ<´ƒ9œ„n„ƒ<„ƒ<˜ƒ<„ƒ<„ƒ9ÈC8´ƒ<´ƒ<˜ƒ<„C;„ƒ<˜ÃXÂ3è˜ÃþI˜CD˜ƒ<´ƒ<`D8´C8œD8´C8œD8´C8œD8´C8œD8´C8œD8´C8œD8´C8œD8´C8œD8´C8œD8´C8œD8´C8œD8´C8œD8´C8œD8´C8œD8´C8œD8´C8œD8´C8œD8´C8œD8´C8œD8´C8œD8´C8œD8´C8œD8´C8œD8´C8œD8´C8œD8´C8œD8´C8œD8´C8œD8´C8œD8´C8œD8$DD`DD´ƒ9ÈCBDD8œD;DD8ÈC;ÈC8ÈC; Å<„ƒ<´Ã<´ÃI˜=˜=DDB„ÃI˜ƒ<„ƒ<´þCD„=D„9ÈC8ÐCD˜C;œD8ÈC8´C8œD8ÈC8D„9ÐC; …9ÈC;œD;ÈC8ȃ9œ„9ÈC;„ƒ<˜ƒ<´ÃI´C8œD;œD8ÈC;„ƒ<´C8DDBDD8„Œ9ÈC8 E;„CD„ƒ<´C8´C8D„9ÈC;ôQ;ȃ9ÈC8´R„ƒ<˜ƒ<„ƒ<„R„ƒ<$DD$D8ÈC8ÈC8DD8ÈC8ÈC;ÈCB„ƒ9ÐC;œ„9dF„C;„ƒ<„ƒ<„ƒ<„ƒ<´C8DD;„ƒ<´C8ÈC8œDBD„9ÈC8ÈC8ÈCB„ƒ9ÈC8œD;DDЃ<”‚˜ƒ<´ƒ<´CDþ˜R´ƒ<$D8ÈC; E;DD8Ѓ9œD8ÈC8ȃ9œD;ȃ9DDB„R´C8˜CD˜CD´C8ȃ9D„9ÈC8´CD˜ƒ<„R$DD„CD´ÃI´ÃI„ƒ<˜ƒ<$ÄI$D8ÈC8ÈC;ÈC8ÈC8ÈC;„CD„ƒ<$„<´CD„CD´ƒ<´C8 EBÈC;ÈCB„C;œD8ÈFdF8ÈC;„ƒ9 E; E;ÈC; …9ÈC8ÈC;DD;˜R˜=˜R„ƒ<„ƒ<´CD´ƒ<„ƒ<„CD´ƒ<´CD´CD˜=´R$D8œD8ÈC;ÈCB„CD´ƒ<˜ƒ<„ÃIÐ?$R´CþD„ƒ<„ÃI˜CD$ÄI´C8œD8ÈC;ÈC;œD8ÈCB˜=´ƒ<„ƒ<$Ä\`„<„ƒ<„ÃI„ƒ<´CD$D8d†nô‘9ÐCÈ$Ä\´ƒ<´CD´ƒ<„C;˜=D„9ÈÃ@Â3è´ÃI´Ã"´C8D=˜ÃI´R´Cf˜C8´C8´ƒ<„ƒ<´ƒ<´C8ÈC8 E;„ÃI„C;ÈCBDD;ȃ$˜R$Ä\„CD„ƒ<„C;ȃ9DD8ÌE;ÌE8œD;Ѓ9œÄ,‚2üDD8´Ã\˜C8ÌC; E8ÈC8œD8ÈC8œD8ÈC8œD8ÈC8œD8ÈC8œD8ÈC8œD8ÈþC8œD8ÈC8œD8ÈC8œD8ÈC8œD8ÈC8œD8ÈC8œD8ÈC8œD8ÈC8œD8ÈC8œD8ÈC8œD8ÈC8œD8ÈC8œD8ÈC8œD8ÈC8œD8ÈC8œD8ÈC8œD8ÈC8œD8ÈC8œD8ÈC8œD8ÈC8œD8ÈC8œD8ÈC8œD8ÈC8œD8ÈC8Ѓ9´ƒ<„CBÈC8ȃ9D„9´ƒ<„CD$„<„C;ÈC;„ƒ<´Ã<$D8ÈC8œ„9$„<„R„ƒ<´ƒ<˜ƒ<„C;˜ƒ<„CD˜C8´ƒ<$Ä\„C;DD8ÈC8ÈC;Ѓ9ÈC8ÈC8ÐC8ÈC8œD;ÈC8þ E;ÈC8ȃ9DD;ÈC8D=„CD´ƒ<´ƒ<„ƒ<„CD´C8ȃ9`„<´CD´ÃI„CBÈC8DD;DD8ÈC;Ѓ9DD8 E8´CD˜Cf´ƒ<„C;ÈC8ÈC8ȃ9´CD´=˜C;„ƒ<„Ã\´ƒ<$„<„ƒ<$„<„ƒ<˜CD´ƒ<„CD„ÃI„ƒ<„C;œDBÈC8DDB„ƒ<„ƒ<˜C; E;ÈC;ÈC;ÈC;DD8´ÃI˜R„C;ȃ9„C;Ѓ9ÈC;ÈC8ȃ9DD;DD8ÈC8ÈC8 €<àƒ%|@D˜C8ÈC8DD8`„<„C;DDBÈC8ÈC8´C8´ÃI˜ƒþ<„ƒ<´R„ƒ<˜C;ÈCBœD;ȃ9ȃ9È=˜CD„C;d=„=˜ƒ<˜ƒ<„CD„ƒ<„ƒnDD8$D8´ƒ<„ƒ<„ƒ<´ƒ<„ƒ<˜ƒ<„C;ÈC;ÈC;ÈC8ÈC;ÈC;DD8DD;DDBȃ9„C;ÈC;„C;ȃ9ÈC8´C8ȃ9ÈC8ÈC8ȃ9Ѓ9ÈC8´CD´ƒ<˜ƒ<„ƒ<„CBdF8´C8´ƒ<˜C;„ƒnÈCB E8ÈC8DD8´Cf„ƒ<˜ƒ<´ÃI„ƒ<˜CD´ÃI˜ƒ<˜C;DD8DD;ÈC8´C8ȃ9DD8ÈC8ÈC8ÈC8ȃ9DD8ÌE;DÄ.ðþƒ<˜C;„ƒ<„ƒ<„C;ÈC8DD8DD8´ƒ<˜C;„CBÈC;ÈC8DDBÈC8´C8D„9DD;ÈC8DD8ÈC8ÈC8ÈC8$„<´=„CD„C;D„n´ƒ<„ƒ<„CB„ƒ<˜C8$„<„ƒ<„CBœ„9„C;„C;„CBÈC8´ƒ<„CBȃ9´C8ÈC8œD;œD;|À"<ƒˆ8„ƒ<˜ƒ<,‚<´ƒ9œD8´Ã"´ƒ9ÈC;ˆ<´C8ÈC8ÐÃI˜ÃI´C8DD8ȃ9DDBȃ9ÈC8DD8ȃ9´ƒ9„ƒ<„ƒ$ÈC8´C8˜ƒ<„ƒ<„C;DD;DD8ȃ9DD;œD8þÈC8ÈC;ÈC;„ƒ<„ƒ<„CB˜ÃI$<|@¤¶„ÃI„C;„ÃI´ƒ9$D8DD8Ѓ<„CD„=ÈC8DD8Ѓ<„CD„=ÈC8DD8Ѓ<„CD„=ÈC8DD8Ѓ<„CD„=ÈC8DD8Ѓ<„CD„=ÈC8DD8Ѓ<„CD„=ÈC8DD8Ѓ<„CD„=ÈC8DD8Ѓ<„CD„=ÈC8DD8Ѓ<„CD„=ÈC8DD8Ѓ<„CD„=ÈC8DD8Ѓ<„CD„=ÈC8DD8Ѓ<„CD„=ÈC8DD8Ѓ<„CD„=ÈC8DD8Ѓ<„CD„=ÈCþ8DD8Ѓ<„CD„=œD8œD8 E;ȃ9DD;„ƒ<´C8ȃ9ÈC;DÄ9´C8DD8DD8´ƒ<´ƒ9DD8ÈC;D„9$DÈ$ÄI´ƒØ™ƒ<`DD´C8ÈC;ÈC;ÌE8ÌE8ÈC8˜CD$Ä<„ƒ<„ÃI´ƒ<˜CD„ƒ<´ƒ<„ƒ<´C8ÈC8ÈC8ÈC8ȃ9ÐC;œD;„ƒ9ÈC8ÈC8ÈC8œD8ÈC;„ƒØµƒ<„ƒ9œD;ÈC8ÈC8œDBDD8ÈC8´C8˜ÃI´ƒ<„ƒ<„ƒ<˜ƒ<´ƒ9ôQ;„ƒ<`D8´ƒ<´ƒ<˜CD„ƒ<´ƒ<˜CD´ÃI´CD´ƒ<˜CD$þ„9D„nÈC; E8ÈC8ÈC;„ƒ<$D8ÈC8œD8ÈC8DD;„CD˜ƒ#Í…9ÈC8ÈC;ÈC;DD¤v|€9ÐÃI„CD`D8DD8ÈCB„ƒ<„ÃI˜ƒ<´Cf$D8´ƒ<´CD„ƒ<„C;„ƒ<´C8ÈC; E;œD8ÈCB„ƒ#µCD´ÃI´ƒ9ÈC8ÌE8ÈC8ÐCD´ƒ<˜=´CD„ƒ<„ÃI„ƒ<$D8DD;„ƒ<´C8˜ƒ<„=DD;˜=ÈC;ÌE8œD;ÌE;DD;„ƒ9DD8ÐC;DD;„ƒ<„ƒ<´C8ȃ9Ѓ<´ƒ<˜=˜ƒ<´C8èF8ÈC;ÈC8ÐC;þœD;„ƒ<„ƒ<„ƒ<´CD$D8DD8ÐC;ȃ9ÈC8´R„CD„ƒ<´C8œD;ÈC;DD;œD;ȃ9ÐÃI„CB„ƒ<`„<Ü?œD8ÐC; E;DD8D„9D„9Ѓ9ÈC8˜CD´C8ÈC;„ƒ<˜=$„<´C8ȃ9ÐC;„ƒ<„ƒ<„ƒ<„ƒ<˜ƒ<„ƒ9DD;„ƒ<˜ƒ<„ƒ<„ƒ<$DD„R´@È(¯¼vòÌÉ '!Ãvæ¶h®!Ãváä…“N^»vý!#°¼p‹ÚÉ“®]KKøÉk§R¥9zá䵓×Ne»pòÌÉkIS^8yæÚÉk§2œ¼vDþÃÉ“Žž9¢áè™ 'Ï\¸v*陓g.œ¼pò©4N½pDÛ© 'Ï\;y@}@e»pôÌ© §’ž9šíT†SÙNe8•íT†SÙNe8•íT†SÙNe8•íT†SÙNe8•íT†SÙNe8•íT†SÙNe8•íT†SÙNe8•íT†SÙNe8•íT†SÙNe8•íT†SÙNe8•íT†SÙNe8•íT†SÙNe8•íT†SÙNe8•íT†SÙNe8•íT†SÙNe¸–4ÃQ)œvä1§yZR©¢Z’ÇsT §yÂQ©yÌ‘§%šÂiGžvä §y‘'œvä1§yÚþQ‰•Ì‘Çy¡ɜvä §pˆ §%¢äi'yÂiGžpT §yÚQ©yÚ‘§yÚQ© Û‘§y‘'•è Gžvä G¥v¡‰ i Gžvä Gžvä Gsä Gžpè1G¥v™Gžv€ §yZ §¥pÚ ‡&sä1‡s§yZ’§y‘§yÌi'yÌ Gsh ‡¦pä1Gsä §yÂiIžpä G¥pä1GžväiGžpè ‡&säiG¥–T GžpÚ Gžpæ¡©•ZjGžpÅÛäiGžpÚQ)yÌ¡)y‘Ǣ¡ɜpÚ Gžpþä1Gz̑ǜ–äi‡sä ‡¦–ä Gs‘Çy‘§•ÂiIžpä §yÂiGžpÚ G¥vTj'y¡©¥phjIžpäiG¥pÚ‘'yÌ‘'œvT G¥zÌ‘§•Ì‘§yÌ §y¡)œ–ä §yÂiGshjIžvä Gsè Gžv€ HzÌQÉ¢ÌiGžvä GžpTj‡žpT2'yÌiGžpÚ‘§yÚ‘§zÌi'y‘'œväi‡¦pÚ‘'yÂiIžpÚ!ªpÚ¡Ç•‘'œv¹åyÂQ©yÂi'yÌ §6Ù §•Ú²%yÌÁ]xþ•Zb³y‘ǜpÚQ©pä1§•ÂiGsˆj'œvä Gžph GžpÚ‘ÇyÂi'y‘'•Ú¡'yÂiçHžÑƒŒvÌ¡i‘pˆÒ’süãáh‡`žáÈ ä!TbÂ&DÂÁÚ!h¢ØÄä!äÁT"ä¡h"ä!ˆ¢ä!èþ&DZBÂAÚ!ÌAÌ¡%ä!ä¡€$T¢€$ÌA%ÚHÂAÂAÂTâÒ@ Òä!èA%Ú!T¢äÁä!ÚAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂþAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÂAÌAÂAÌAÂAÚ!䡈"ä¡¡T¢ˆ"Z"T¢%T¢T"½ä!ä!Ì&ÂAÂA%ÂÚAÂAÂ&Ú!èAZ"ä¡ÂAÂAÂ&ÌHÚAÂAÂA%Ú!ä!ÌAÚAÚAÚAÂAÚÁä!Ú!TÂä¡TÂè(ÂAÚaÂ&ÚAÌA¡%hÂh¢ä¡ÂAþÌA¡%æ!䡈"T¢ä¡ä!ä¡ÂA%ÂAÚA%ÚAÚ&ÚAÌÂAÂAÌAÂAÚAÂAÂÁT"ä!T¢¡äÁä¡ÂA%Ú!Z"T¢ˆ"衈"h"ä!ÚA%ÂAÚAÂA%¡ˆ¢ä¡ÌÚAÂAZ"ä!ä¡ÂA%ÂAÂT¢T A ´àä!ä!ä¡Tˆ¢ÂAÂä¡ÌAÂAÚ!ÚAÂA¡Â(ÂAÚÁèAÚ!ä!äÁä!Z"T¢ÌAÂÁä!þÚ!ä!T¢h"ä!ä¡h"ä![ÂAÚHÂAÂA%ÌAÂA¡%ä¡T¢ÂAÚ!ä¡ÂAÂ(Â&ÂAÚ!h"ؤTÂ€ÄØÄˆÂä!äÁä!Ú!ÚwÌAÂA%ÚÁä¡ÂA%ÌAÂHÚAÚ!T"äÁä!hÂh¢ÂAÂ&ÂAÚA%ZB%ÚA%ÂAÚA²EÚAÚAÚAÂAÌaø!ÌAZ"Z"ÚÁä¡€¤%ÂA%ÚA%ÌA%¡%ÂAÂAÂA¡¡ÂAÂA%Ú&Ú!Tþ¢%Â&¡¡ÂAZ"ä¡ÌwÚ!ˆ"ä¡ÌAÚ!T"ÌAÂA%Ú(ÌHÌT"ä!äÁ Aô€ ä!ä¡äaT"h¢aøA%Ú!ÚAÂA¡%䡈¢h"ä!ˆ"ä!ä¡T"ZBè!ä!AÚ&ÚAÚAÚA¡%ÂA¡T"ÚAÂA¡äÂAÌ¡%ÂAÂA%è!ä¡äÁ>À   T"äÁä¡ÂAÚAÂÌ(ÂHÂHÂHÂHÂHÂHÂHÂHÂHþÂHÂHÂHÂHÂHÂHÂHÂHÂHÂHÂHÂHÂHÂHÂHÂHÂHÂHÂHÚ(ÌA%Ì¡ä!€¤äÁZB¡ä¡h"ÚAÂA²%æ¡ä¡€$Ú&ZB%Ì¡ä!ä!ä!T¢ä¡T"T¢ä!T"T"ä!Ú!ä!ä!ä¡%T¢hÂäÁÚ!$‰ÂÂ&¡¡TÂT¢ÂAÌA%ÚA%Ì¡ä¡h"ZB%ÚAÂA%¡ä![T"T"ÚAÌA%ÂA%ÂÁT¢ä!ÚAÌAÂAþÌAxÚHÚ&ÂÂAZBèÁhÂä!ZB%ÌA%ÂA¡¡TÂä!Ú!ä!ä!ä!èÁä!h"ä¡%èÁÚ!Ú!ZB%ÂAÚA%ÌA%ÂAÌ&Ú(ÂA¡ÂÒÀŒàˆ"²E%¡äÁä¡ä¡h¢€¤Ø$ä!ä!€„ÂAÚAÂA%ÌA¡T¢€„ÂA%ÂAÂAÂAÚA%Ì¡ä!ä¡%äÁhâæ¡ä!è!h‚ÌAÚA%ÌAÌAÂMÌAÚA%¡h"ÚAÂ&¡äþ!Ú!Ú!äÁÂA%¡ä¡%ä¡ä!ä!T¢%ä¡è!h¢h¢%ä!ä!äÁä¡ä!ˆÂh‚ÌAÂAÂAÂAÂ&ÂAÚAÚAZB%ÚAÂA%ÚAÚAÂA%ÚAÂAÌ!äÁä!ä¡ÂaÚAÌAÌAÌ!€dþ&Ì&ÌÌA¡ä!ÚAÂ&Â!½T¢ˆ"è!ä¡T‚ÌAÚA%ÂA¡ÂA%ÂAÌA%ÚAÂMÌM¡¡ÂAÌAÚ!ÚA%ÚA%ÚMÚA%ÂA¡Â(¡þT¢ä!ä!ä!>žAÈ@ZÂäaÚ&ÂA%Ú€Â&ÂAÂ&æ!ä¡¡%æ!ÚAÂä¡ÂA%ÚAÂAÚ!TÂä¡ä!TÂÂA%Z"ä!ˆ¢ ªAÚ!T"ä!h¢ä¡ˆ¢T¢%ä¡ä¡Tâh€¬ÂwÂHZ"ˆ"€$€$€$€$€$€$€$€$€$€$€$€$€$€$€$€$€$€$€$€$€$€$€$€$€$€$€$ä¡%¡¡T¢ˆ"ä!þÚ!Ì&Ú!äÁäÁä!ÚAÌA%ÂÁäÁè¡ÌAZ"ä¡ÂAÌAÂAÚÁ䡨$è!ä¡ÂÁh"ä¡T¢T"T"èA%Ú&ÚÁä!ä¡ä¡ÌAÚAÌAÂAÂAÚa¡ÂAÂAÂä¡ä¡ˆ¢ÂA%ÎA%Â&Ú!ÌA%ÂA¡ÂAÌAÂAÚA%ZB%Ò+T¢ÂAÌA%ÚA%Â(ÂÁTÂT¢€$ä!ä!ä¡¡¡%ÌAZ‚&ÚAÌAÚA¢]»pò  g°¼vòÌþÑ“'P^;ƒÛQ”×N^»pæèµ“gîbÁvá š3'/œ¼vÃÉ gN^8yáäµ£À Ì4'¯Ý¼pòÌQ '/œ¼pòÚ…k®9yáä…“×N^8ƒíµ 'ðb»‹í™+N^¸‚í ¶3ØÎœ¼pÛÉk'¯9zòµ+.œÁváÚ4'¯¼vòÚÉ '/œ9yí ¶ ×®`8yá䙣'/œ¼p" ¶+ØÎ`8yíæ…k'/œ¼pòÌÉ '¯]Ápç…Ønž¼vÛ™+N^8ƒáÚQ '/œ¼vòÂÉkWМ¼váäµ '¯]8yáäµ g®`»pæJlþW°¹ÒíÂÉ 'ÏÜ®íÂÉ.R8…#O8í\;ó„cŽ<á´#R;áœ<íNAáÐ\8…#O8ò„#@áÈN;ò˜C{áÈÓN8í˜#O8í„SP;áÔŽAáÈN;ò˜#O8ò„#Ò–ìò‡áÈcŽ<áXÒŽ<á´SP8íÈcŽ<áÈEµS9…#=æ´SP8…c@µcP;…³ˆ<í„#9ò´#O8ÈÎ7zÈS…CQ;á´#9íÔrÁX…<ÝXÐŽ<æ„Ï)ˆ`ò´Ž<á´N;…#O8í$<áÈÓN8íÈþŽ<í„ÓŽ<áÈÓN8íÈŽ<í„ÓŽ<áÈÓN8íÈŽ<í„ÓŽ<áÈÓN8íÈŽ<í„ÓŽ<áÈÓN8íÈŽ<í„ÓŽ<áÈÓN8íÈŽ<í„ÓŽ<áÈÓN8íÈŽ<í„ÓŽ<áÈÓN8íÈŽ<í„ÓŽ<áÈÓN8íÈŽ<í„ÓŽ<áÈÓN8íÈŽ<í„ÓŽ<áÈÓN8íÈŽ<í„ÓŽ<áÈÓN8íÈŽ<í„ÓŽ<áÈÓN8íÈŽ<í„ÓŽ<áÈÓN8íÈNAæÈC9ò´#O8ò„#O8íÈÓŽAô„#O8"…ãEíÌ·<áŽ<áÈŽ@…cP;á´#O8ò„þÓŽ<á´SP;òN;ò„S=æÈÓŽ9óˆÔ=áÈX;…CO8ò´SP8íÈN;ò˜#O8…ÓNAáÈcŽAíÈÓNiáŽ<æÈcN8ò˜SP8í\pò$O;òÐEæÈN;ò„#O;ò´S9ÑcŽAÉN;ò´#O8ò„ÓNAÉŽ9ò´#O8íÈcŽAáÈcŽp´CáG8"pÈ#ò0‡<ÌQvÈ£òH8äy„C$í‡@äŽv”¦i‡<Â!pÀ0HÁ yÐã$í H8äy´ƒáG8ÚAsÐÃi‡<Â!v$þò0EÌ!p´# ‡@äaƒ„CáG8€ŽvÈ#iGAÂ!p´Cæ(H8èaŽpP$¡‡9Âу˜CæhGiÌ!pȃæG8䊴Cí(H;Â!pÈ#)ˆ9Â!pÈ#)H; Òƒ„£òGAÌÑŽ‚˜#ípÂavÈ£òh‡<ÂQp´#náŽ<ÚasÄ1‡<èy˜Cô‡<ÂÑy„£áh‡<Â!y„£áG8äAsÈ£òh‡ ‡9ˆh’ø0æ "8s„£ 9IÌA’À„#0á‡9Â"š#àG-ÃáC"‚Ãáða8|HÄÀ„ÃáL8Ìs„Ã‡à ‰9HâÀ¤–$1G8¶˜èP«[?y˜£áG;"Òz˜£á=Ì!¡È£òG;䶤ò‡AÂ!s$ò0‡<ÂþÑŽpÈÃí‡<Â!pp¥ᘇ<Ú‘pÈÃi‡CÂapH% ‡<#vÈ#ò0‡A¡„C(i‡A臄£òÛÂá¡ÈÃ!I;äApÐÃáG;èy% G;äy„Cô0‡<ÂAsÈ#ò‡<Â!p$ípH8äÑs´Ã ípH;䃴à íG;äy˜CáG8bƒ„£ò‡<Â!p%ò¸Å?äy„C*ápH8©„Cá0H; bŽv8Ä G;äaypÅ!ô‡AÂ!pEæG8äaþŽp¤áh‡<Âáv8¤ò‡<Ì!p´Ã áh‡CÂ!z˜ƒæG;ä¡HÅ ‡<ÂñRCdG;#KDáWþÁy˜CB ‡<Ú!v¤ápH8„"pÐ#ò‡9èay„£`í‡9äy,"í0‡AÌ!¡ câ¨FäQè@èÐ@ Î!$d@lXÀ<ªA„`„c/€@;ºi„£ÝÀ`ƒ;Ç®á±SpìäàÞðÆ6®qmxcרF·½±kt{ÞØÆ5Äím\CÜÞØÆ5Äím\CÜÞØÆ5Äíþm\CÜÞØÆ5Äím\CÜÞØÆ5Äím\CÜÞØÆ5Äím\CÜÞØÆ5Äím\CÜÞØÆ5Äím\CÜÞØÆ5Äím\CÜÞØÆ5Äím\CÜÞØÆ5Äím\CÜÞØÆ5Äím\CÜÞØÆ5¶qíktûÝF:Ò·q jS{×ðÆ6¼Ñígˆ[ëÛ¸ö6®±khýÛ¸Æ6ÌÑíkhýÛ¸†9¶q­kÝרÆ5º} otûݾ†¸½ÑíktéæˆÆµã¾koãâ¾ö6®!îktÛHïö5Ä}mP{ëרÆ5º}m\ãðÛ¸Æè·qím\Cë×èö5¶~mþ\{×èvÓ›Þíkhýݾ¶Ö¯á q{cÞØÆµ·~m\Cë×è¶7®!no\CÜÞ¸¶¸›Þíkˆûݾ†¸¯½uolãÏÈA `¤)€A `¤5ü@DÚay„CB™G; Žˆh‡ppspˆp‡p‡vyyh‡p‡p0s ‡v0s‡vpˆvpˆv‡vpˆy0yh‡pŠp‡pŠp‡vyhyhƒyh‡p0ˆppˆp ‡h©‡v‡vyhƒ0yŠp yh‡p0sp¡‡v‡v0s¡0‡ ”¡þˆ®‡v0ƒh‡p‡ph‡p0sˆˆp0ˆvŠp‡v‡p‡ppˆppˆv0z0ˆv0yyh‡p‡vy¡sÂp ‡ps‡v0ˆv‡z‡vs‡[àyhƒh‡ph‡p‡p‡vsh‡psyƒzy‡0zh‡p0ˆv0ˆvps‡p‡p0¡‡v0ˆv˜‡v ®0s‡p‡p‡vyh‡pÂppˆvƒ©0‡0sh‡ph‡p¡‡v‡v0È$ƒ y‡E0ˆp‡p0ˆþphƒ ‡ps0sy‡vpˆvyhyh‡/”‡v‡ps‡vƒ s‡p°„/lz@‡jq¨xƒ‡s(ƒhøˆ€øz‡%`yxƒ8¶c›˜ 86°Êx±K²,K³—MèŒR°MPM€ì–„R°„RM°G/K(KÐHoKÀnHÐKHKÐH(%±ìÖ„Q€M°Ih HÈ•.v!Ø‚‚ !øz0ƒh‡ypˆv0s‡v‡p0ˆphy‡ˆ‡v‡p‡pŠp ƒhzz0©h‡p0ˆv‡vyƒ‡þv‡p0ˆp0yh‡p y‡vpˆv0ˆv‡p0ˆph‡ph©0ˆphy s‡p0ˆv0ˆp‡v¸øv‡p z0y¡‡vp¡z‡ˆ0y‡ˆ¡¸x‡0ƒ‡vyyƒhyhƒzƒƒz0‡vs‡v0ˆv¡pˆv‡p‡p‡p0ˆvðysy©ƒ©yyhz‡yy¸…‡pˆˆv0ˆv‡p0ˆppˆv0s s‡v‡y0‡v‡yˆˆph©hy0Ÿoy‡þy‡ˆhƒhƒ0‡v0ˆvs‡hƒhƒyy0‡ s0ˆph‡p0z0yy‡ð†k°2yyKs=‡à‡p‡vs‡vpˆvyŠp¸øppˆp yhyyh‡yyh‡E€hN^;sò°ðËœ9yáäÉk®Dyá*¶3GO^»vòµ '¯ÄpòÚÍkÇðË–,=¸ôðÁƒËš6oâÌ©s'Ïž> *t(Ñ¢F"Mªt)Ó¦K=|ððÁƒN𠆓×.\8yíÂAlgbGyæ*¶ W1þœ¼vòÌAl×.œ<¹å…kN^;yæÚ™£gŽ^8yá šƒhî®9zòÌA4'/œÜpòÚ…“'÷n»píµ W1Ävòä¶ ±9yáPÏ ×®â¼ŠíÌÉ“N^;sòÚU w·]8yí䙃Ø.\»pòµ3G¯ÝÝvÛ…3'¯]¸»í ¶»kîn»pòÂÉ3'/œð‡CèAáØÒ"’*µcá€Q8äy„ÃNáG;ÌAsÐCáG8Úy´#iG8䑪p ¤‹ˆ<ÌQ§p ÄôhÇ@Ú!vÈ£ò0=äÑy´#0jG8äz´ÃòˆP8Ú!vÀ(òG„Ì!s $UæG8䎴CáG;äÑy„CíG;äy´CíG8äÑy´CáG;äÑy„CíG;äy´CíG8þäÑy´CáG;äÑy„CíG;äy´CíG8äÑy´CáG;äÑy„CíG;äy´CíG8äÑy´CáG;äÑy„CíG;äy´CíG8äÑy´CáG;äÑy„CíG;äy´CíG;ä¡p ¤ ‡<ÂÑŽ×À(Bá0‡<ÚŽ„c á ‡<"$sÈ#í‡<Ú!sÐC혇9äÑy˜£áH;䳚Cá‡9è±¥vÈ£á0k8äÑ…Fí€Q8Òy´Cá ‡<Ì1p ¤ Ç–Âþ£pÀ¨æØRªÂÑŽpÈ£0jŒÚŽ:µ#òG;ä¡p $æG8äaŽ-…Cí€Q8"4p ¤0j‡<Ú!pl©iG8Ž„ƒ[jŒÂaŽ:…£ =Ú1 Ä1Ç@ÌAsØ)©H;ä!Í#0jG8by´#òhG8ÚaŽ-µ#ò‡<Â!pÐCæG;¶yD(òˆ9êyD(òG„ÒŽp´Ã’‡9äÑŽpÈ£òh‡<Ì!pÈ£óhG8äy„c áG;ÌAsÐFáG„æ!yÌ#ò‡Ú1þp´CÂAÂFÌAÚ!`ÄêOÌAÂAÂAÂAk ÌAÂAReKÂAÂAÚAÚÁä!ä¡ä!ä!ÚA¡¡ÌAÌa ÌAÚFÂa ÌAÂAÚÁ`ÄÚ!Ìa èEÌAÂFÂA"$"UÂFÌAÂÁè¡`dÌaKÂa ÂAÚa Ìa REÚ!ä¡ÌAÚA"DÂAÌAR%ÚAÚÁv"ä¡ÂFÚ!Ú!ä!ä!ä¡ÂOÌAÚ!"$`¤ÂaKÌF"d ÚAÚFÌAþÂaKÂFÌAÂAÚa Âa ÂÚ!äÁè¡ÂèAÂÁä!ä¡ÂÁä!ä¡ÂaKÂAÂA"DÚAÚa >Àô$Á ¤Á¤Æ-Á!Á A$!¥,,¡,,¤$Á A¤¤¦¼Q¼Qj¼±!ÁÖQj ½Qj Aj$Á¼ÑJÁ¼Ñ¼qÛKÁ-¡¼Qj4Ú,A Á$Aj Á$Á Á Á$Á Á Á$Á Á Á$Á Á Á$Á Á Á$Á Áþ Á$Á Á Á$Á Á Á$Á Á Á$Á Á Á$Á Á Á$Á Á Á$Á Á Á$Á Á Á$Á Á Á$Á Á Á$Á Á Á$Á Á Á$Á Á Á$Á Á Á$Á Á Á$Á Á Á$Á Á Aj¼Ñ$Aj¼Ñ$Á$Ö!Á4%¡ Aj$¡!ÁJ,,A AjÖÑ Á4$,,¤ÆÁ$Á$!ÁÁÎѼѼ!þÁ Á$Á$8R,á½Q¤F¤F8Rj Á$,$ÀQ,Á-J,,8,ÁÁ,$½Ñ Aj A,ÂÑ%Á Aj A,Á%Aj Á  ÔÎѼQ¤F Á A,,Á¥´ Aj$Á¥Æ-ÀQ Á4a!Aj Á Á ¡¼Ñ Á ½Q,áKA¤J¤¦¤,,,¡$Á$Á ÁÖÑ Á¼Ñ$Á Á$%À$Aj A ÁþÎQj$$Aj A,$Á !½ÑÎQJ,¤,¡,a!A¼Qj Tj A,A¤Æ-Á¥F¼Q,¡ !!A¤f¥À¤Æ-¡ !#%Aj Á¼ÑÎQ¼ÑJÁ a¥¤æ-¡ AÀ$Á A Á$Á AJAj !AJ!×Qj Á¼Ñ$ÁJ$Aj¼1!A,$Á ÁÎQ,¤FJA Aj¼ÏQ A,À,,A,A,,¡ %¡¼Ñ$Aj$Áþ¼Ñ$$Á$Á$Á ¡,,Á-¡$¡ AJ$¡!aÀ¤Æ-,á-a!AÂ8ÚÖÑ4$Aj ¡%ÁÖ±4A,A,Á¥,A a%Á$áÁ>@ ô€ à€ ô€ ô@ È@ È@ Ä€ ô ÌáÂÁ^#Ì!è…vÍÁÌ!Ì!ÀwÃÁÂ^Â^ÂvÃ^`×^ƒ^^ƒ^ÂÁ^£vÍ!h÷5è%j÷5ÌÌá5Ìá5¢·vÃa^ÃÀ!ÎvÃ!zÃ^¡vÃvÃÁÂvÃþÁÂvÃÁÂvÃÁÂvÃÁÂvÃÁÂvÃÁÂvÃÁÂvÃÁÂvÃÁÂvÃÁÂvÃÁÂvÃÁÂvÃÁÂvÃÁÂvÃÁÂvÃÁÂvÃÁÂvÃÁÂvÃÁÂvÃÁÂvÃÁÂvÃÁÂ^^£v_£vÃ!zÃ!zÃÂvÃ|ÃÁ^ÃÂ^Â!zÃ^ÂÁÂÁÂÁÂ^^ƒvÃ|Ãva×^Ã^ƒvÏÁ¡váv½va÷5À—é%è%Ì!Ì!¢÷5Ì!À!Ì!Ì!ÀwÌá5h7Ì!þj÷5Ì!è%è%j÷5è%è%è%ÎvÃÁÂvÙ`×^£vÃÁÂ^ÂÁ^ƒ^Â|·Âv_ƒ^^ávávÃ^ÂÁÂÁÙÂÁÂv·áèvÁ!èvéè%Ì!Ì!x7h7j7Ìá5h7À7h7h7Ì!Ìvi7h7è%è%j÷5Ì!Î!ÌÂÁÂ^ÂwÁ^ÂÁ^ƒ^^ãÂ^À!z_Ã^ƒv_ávÃÃvÃ^^ÃÀ!h7 ÙÂÁ^Ã`×^ƒw_£vÃ^`×þÀ!j7è%Ì!h÷5x×Âv_ÎÃÁ^ƒ^ÀaÂv_£vÃ^Î^ÂÁ^ãè%h^ƒ^^ƒva×Â^ÂvÃÁÂ!zÃÁÀ!h7Àá5À÷5è%À7Àá5ÌvÁ!À!Ìá5À7j7èå5Ì!Ìvi7¢7À7h×Ì!j7h7 9À!z_ƒ^Â^Â!za—^ÂáÈÀ·É@ È@ |ÀÈ@|[ rÀžÁ¶Á¹½á¼a®º¯!Ìá¼Á¹ÍaÌa®Á®Á¹Ç{®Á¹©›¼½ºÉ»º¯a®Á¹©þ{ª›¼û¶áœû¶áœû¼Áœ›º›º·áêÛ¹©{¨»¾¯a¼á¶áœÂ+ÜÂ/Ã3\Ã7œÃ;ÜÃ+œº·Á®a®ÀÇûÈû¶áÆ›º·Á¶¡½¯a¨{¼¯a¼a¨{¼¯Á¯ÁÈ›ºÇû¶ºû0¼ºÇû¶á¶º£a¢Á®¡Â©{¨{®afü¶á*ü*ü¶á¶áÆûœ»º)œºÛ®Á¨Û¶À«›Â©{¼ÍáüÆÛêûÆ›ºû¼a®¼¯Á¹½á¶º·Áœ›º-¼ºûÈûþœû¼áü4œº·á¼a®a®Á¹¯a¼Ía¨{®Á®¼¯Á¹¯a¼¯aª›Â¯Á¯a¼¯Á¯a®a®¡¾Ía¼½á¼¡ºÍaÌÁ¹½a¼¯¼¯a¢Á¨{®Á©›¼¯Á¹«{¼©Û¹¯a¼gܹ¯Á¹¯¼½œºÀÇÛ꛺½ºÛ®a¼©{¼¯a¼¯a®a¼Ía¼«Û¶áªÛ¹¯Á¹¯Á¹¯aÌÁ(ü¶º·áœûü¶ºÇÛ¨Û¹«›¼½a¼¯¡¾¯a®Á«Û¹½a®Á¹¯a®Á¹¯a¼¯a®¼¯a®a¨»þ¾¯Á¹gܹ«»¾¯¼©»¾¯a®a¼|¼£ÁÈû¶Á¶áœ›º·á¼a®¡¾¯ÁÆ›º·áêûœÛœ›º=@ ˜€ ˜à·™@ ˜À È€ Ä€ œ €áŸð ßðñ_ñŸñßñò#_ò'Ÿò+ßò/ó3_ó7Ÿó;ðÁóC_ôGŸôKŸôÁôS_õVöc?öAö Ÿ>€ rß rß rŸ œÀ÷™ žrŽ?€árrr!Ž?€!€!Žÿøsárûsáø¡?°ûsûsrAü?°?ÒþúÅ?€!Òÿr ÿøs!ýsrûs €å– ˜Á\&Ì¥X®†¹æj˜«a®†¹æj˜«a®†¹æj˜«a®†¹æj˜«a®†¹æj˜«a®†¹6Ì¥0W.…>s š0—Á\Àr%ôiЧAŸ sôÙ0—Á\s%ô ,¨Á\ sé– X.`>å–+a.`>æ2˜ ˜Ï„¹€å–Ë`.`¹€å2˜ X®±¹t*ë3a.`¹æ2˜Ëà3Ÿ só©Ð'°\ sË¥0—Î\sË,—Á\ só ÌgÂ\À|Ì¥ð™O`¹žù– X.¹þæ2èÓ`.>ù– ˜O`¹æJ˜Ë`®g¹ æJ˜kl.`¹€åRø,°\cs|–+a.`¹€ù4˜ X.`¹“‹A¹0¹4”‹N¹ä“N¹“KC>=“‹A¹T. =“‹B>5ÔXÀä’P.å’P. ù¤S.ÏøôŒOÀäbO ùŒO ùÌ3¹“Ë3¹” 0¹(”KB¹$”‹A¹èäÓX¹$” 0¹$”‹B>)ä0>“KB¹$” 0>%”KB¹<ãÓ3A)”ËX>%”‹B¹óL.$6” 0>ã0>“‹N¹ìòL.åL. eP. ÕP.Àä ’P.å¢S.;libjibx-java-1.1.6a/docs/images/eclipse-build3-small.gif0000644000175000017500000051632110350117116022703 0ustar moellermoellerGIF89aê€çÿ !> $RO('*1DE*<6-588#7|A=2/@n8CFJB0 CžECHa:9HIF+*{46WH-*K¡CKd:Tf?QxnGFNU[]TBYTO9V§0vAY£B[—3kkAJü1n~]adYbjTcyg_[ac^3pª¯EEmgCCh³qh:kgQTZêLu{kli|gXayCrmUZjª~iafrtnpmxrH¬WTwsSyocjpˆšg=¡^\osv¹]'dv‰stqqt~zy_ dheyœ]zº[|Ì€|iƒ~e}|wz€‚¶gftšË_]m†{‰uoúÃm4X´„€ƒeŠ¢ˆx‘~pWŒÇ„…‚ƒ„‚hS§m¯xxzе}}÷€‡ºŠŒ‹—ŽcuÄÈvuƒ¬‰œ´‰S‘Ž—…š’v£€š¢•—•“Œø™›˜ÓYxºf~´{v¶‡¤Ù††«Ÿ„¾“‘Ÿ¡žƒ©Ã˜§—Ýœ—£°™ ½¡°ÌœM’¢Î¤ž³’©¯²Ÿ•—¤Ê§¤©±¡¤®ê¬¨š”©ß¥ª¬Œ±Ó†´äˆÀ¡Õ›˜½«…ª®°¬®«È­hœ³Ìª´£Ì¨‹°²¯œ¸Æ¢·¼¸²¤¬³Àį »µ™¸±Ã°­ôµ·´·µºª·×ʲº»¸¥Ïþ°¿½Á¾¶¡Ð°»ÀÃᲩл«ÉÀ¥×Àƒ¡ÈòÀ¿²Æ×ÔÁšºÅÌÉ¿ÅáÁyéÁdªÒ¼¾ÃÖÄÆÃÅÄÎϿֿËÅÎÆ¿ÉÇËÇÉÆÅÊÍÓǻӿòÑÇÍÊÌɹټ«Øü±ÙëÏÑοÚË×ѽØÐÂÒÐÔÑÔÐÇÕêÌÕߨÐÛÅÚáà×­ÈÞÎÖ×ÔÔÖãÞ×ÉÞÛ½ÕÚÝçØÅºæöÚÜÙÝßÜäáÄÚáããáËÞßëàâßæãØúäžàåèÙíÛåçäâæôõèºÐñùçéææêøêëïëíêüñ¼îðíä÷üññúñóðùõÑìôú÷õÝõ÷ôýùêøúöõûþýüòþÿü!þCreated with The GIMP,ê€þ!ü0ÓÆL›ƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠ™¼“îNª\ɲ¥Ë—0cÊœI³¦Í›8sêÜɳ§ÏŸ@ƒ J´(O3ذKJí˜/_Ð’JJµªÕ«X³jÝʵ«×¯`ÊK¶¬Ù³hÓª]˶m×o_ aƒ†µ_‰òe•¸°ÐâÁ37•*pЏBsçºxíœÛ˘3kÞ̹³çÏ Á~-4\ÔD$Ȱׯƒ1£öE:pÇ A†í:pÇ`¿†æëË †²3ç+ ¶RÜÐÓíš0nàŽ ƒ‡#ïþ¹¥êÝŒn> _Ͼ½û÷ðãËŸO¿¾ýûøóëßÏ¿¿ÿÿ(`|Èx1Ì* òK"†$¢Æj¼Œ0Á¼vK®¸±†%â|Á ®¸±†%ÁŒ0Áôâ -Ü`# ,&1ˆäœÊ Ñ‹ FÀƒÃ–C 1®  9&CÍè@Ã+Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0þÂ#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#Lþ0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â#L0Â8A‹+« "Š!‚¢Æý¨¬âÊþ®¬rËÓð„²°ŠE˜ƒÓð„ª°?b@¡ ®ð…fL|¡«ðEÈq‚/”‚'@…!hAŽ/˜!«X*ò E¬#®àEÈa„òï†8Ì¡wÈÃúð‡þ@ ¢‡HÄ"ñˆHL¢—ÈÄ&:ñ‰;L¡J T”†(ÃÊðE”¢U$*H! /CЀB)°Á…@@CÐÈ)ªˆ W BÁ€†9H f`C^ Æ VÁŒPüÜð+XÁ R¸‚Ðà†;:@ŽJ|Ȇ hŒMT‘U$EIQERT‘U$EIQERT‘U$EIQERT‘U$EIQERT‘U$EIQERT‘U$EIQERT‘U$EIQERT‘U$EIQERT‘U$EIQERT‘U$EIQERT‘U$EIQERT‘Uþ$EIQERT‘U$EIQERT‘U$EIQERT‘U$EIQERT‘U$EIQERT‘U$EIQERT‘U$EIQERT‘U$EIQERT‘U$EIQERT‘U$EIQERT‘U$EIQERT‘U$EIQERT‘U$EIQERT‘U$EIQERT‘U$EIQERT‘U$EIQERT‘U$EIQERT‘U$EIQERT‘U$EIQERT‘U$EIQERT‘U$EIQERT‘U$EIQERT‘U$EIQERT‘¨(þ‚%AŠJ”b¢0„±‰MTâ·–(Å&xÁKø@:Ø„'P` Kø@3¨„%Ja‰ß–‚ ð€*Q¬a –X¸`„J¸AU°„R`KTÂ30aÁÈB%¶°†JXb¥PÄ&*a‰E”B›¨„%Q El¢–XD)±‰JXb¥PÄ&*a‰E”B›¨„%Q El¢–XD)±‰JXb¥PÄ&*a‰E”B›¨„%Q El¢–XD)±‰JXb¥PÄ&*a‰E”B›¨„%Q El¢–XD)±‰JXb¥PÄ&*a‰E”B›¨„þ%Q El¢–XD)±‰JXb¥PÄ&*a‰E”B›¨„%Q El¢–XD)±‰JXb¥PÄ&*a‰E”B›¨„%Q El¢–XD)±‰JXb¥PÄ&*a‰E”B›¨„%Q El¢–XD)±‰JXb¥PÄ&*a‰E”B›¨„%Q El¢–XD)±‰JXb¥PÄ&*a‰E”B›¨„%Q El¢–XD)±‰JXb¥PÄ&*a‰E”B›¨„%Q El¢–XD)±‰JXb¥PÄ&*a‰E”B›¨„%Q El¢–XD)±‰JXb¥PÄ&þ*a‰E”B›¨„%Q El¢–XD)±‰JXb¥PÄ&*a‰E”B›¨„%Q El¢–XD)±‰JXb¥PÄ&*a‰E”B›¨„%Q El¢–XD)±‰JXb¥PÄ&*a‰E”B›¨„%Q El¢–XD)±‰JXb¥PÄ&*a‰E”B›¨„%Q El¢–XD)±‰J”¢›Âoa E,¢‹°„"Fo‰EXB–PD"P‰ÑWB}°Äèa‰JŒÞ£·Ä#*a‰Ñ[bö–} AüG(âŠxD%Fo‰Ù?Š(¾"*1zKŒþÍý#šþ;ûG4wöhîìÑÜÙ?¢¹³DsgÿˆæÎþÍý#š;ûG4wöhîìÑÜÙ?¢¹³÷Í5{Ð\³÷Í5{Ð\³÷Í5{Ð\³÷Í5{Ð\³÷Í5{Ð\³÷Í5{Ð\³÷Í5{Ð\³÷Í5{Ð\³÷Í5{Ð\³÷Í5{Ð\³÷Í5{Ð\³÷Í5{Ð\³÷Í5{Ð\³÷Í5{Ð\³÷Í5{Ð\³÷Í5{Ð\³÷Í5{Ð\³÷Í5{Ð\³÷Í5{Ð\³÷Í5{Ð\³÷Í5{Ð\³÷Í5{Ð\³÷Í5{þÐ\³÷Í5{Ð\³÷Í5{Ð\³÷Í5{Ð\³÷Í5{Ð\£g £'}ЊÐpŠŠÐŠÐŠðŠÐŠð}𧘋£wŠ–0z§¨§¨§¨¹xŠ–PŒ£'§¨} }ð} } }0z}ðŠPŒ– }` 0z} –ð£×Š` 0z} –ð£×Š` 0z} –ð£×Š` 0z} –ð£×Š` 0z} –ð£×Š` 0z} –ð£×Š` 0z} –ð£×Š` 0z} –ð£×Š` 0z} þ–ð£×Š` 0z} –ð£×Š` 0z} –ð£×Š` 0z} –ð£×Š` 0z} –ð£×Š` 0z} –ð£×Š` 0z} –ð£×Š` 0z} –ð£×Š` 0z} –ð£×Š` 0z} –ð£×Š` 0z} –ð£×Š` 0z} –ð£×Š` 0z} –ð£×Š` 0z} –ð£×Š` 0z} –ð£×Š` 0z} –ð£×Š` 0z} –ð£×Š` 0z}þ –ð£×Š` 0z} –ð£×Š` 0z} –ð£×Š` 0z} –ð£×Š` 0z} –ð£×Š` 0z} –ð£×Š` 0z} –ð£×Š` 0z} –ð£×Š` 0z} –ð£wŠŠ‹) t@rp£Š Š@}p£r t t £GŠpŠrð>J_ 3 30B¥B0B0B0B¥\:B 3 \*]¥)Ð¥B0&0B0)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥þB¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥Bþ¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B¥)¥B0E t Š@7Jr tp£t Š@7Jr tp£t Š@7Jr tp£t Š@7Jr tà£r 5J£7r`f fÐŒÛfÐfÐfrÀ¸š«¹m ¹«PèèPè€åà€îÀ åpèPåàPàP§‹å€ðPèP§ § àŒQ§[èPâpºå€å §[èPâþpºå€å §[èPâpºå€å §[èPâpºå€å §[èPâpºå€å §[èPâpºå€å §[èPâpºå€å §[èPâpºå€å §[èPâpºå€å §[èPâpºå€å §[èPâpºå€å §[èPâpºå€å §[èPâpºå€å §[èPâpºå€å §[èPâpºå€å §[èPâpºå€å §[èPâpºå€å §[èPâpºå€å §[èPþâpºå€å §[èPâpºå€å §[èPâpºå€å §[èPâpºå€å §[èPâpºå€å §[èPâpºå€å §[èPâpºå€å §[èPâpºå€å §[èPâpºå€å §[èPâpºå€å §[èPâpºå€å §[èPà€îm ¹r`m ¹r`m ¹r`m ¹r`m ¹r`m ¹r`m ¹r`m ¹±¹škr úõ0ö ð`õPö ö`õÐ#]úþö0öÐöÐðÐî€å€ î€ î€ î€ îàà> åÀ ð€ îð€ îÔ>à€àPàPØåå@ îàÓð² åà »àPð² åà »àPð² åà »àPð² åà »àPð² åà »àPð² åà »àPð² åà »àPð² åà »àPð² åà »àPð² åà »àPð² åà »àPð² åà »àþPð² åà »àPð² åà »àPð² åà »àPð² åà »àPð² åà »àPð² åà »àPð² åà »àPð² åà »àPð² åà »àPð² åà »àPð² åà »àPð² åà »àPð² åà »àPð² åà »àPð² åà »àPð² åÜ U4 в å€Ð þU èå€à€å #]ð`ó0Òõö0#]ð`ó0Òõö0#]ð`ó0Òõö0#]ð`ó0Òý#­õ õ0Òö r° Œî ŒÁè èŒ¡ê°ëèpî€åÀ^Ѐ vñ †¢@ º¡Ú@ Ú º‘Õ®Ï@ Ú R ØPíîÐÝ® ðÕ® ØÐíÚ€ Ý® ØÐíÚ€ Ý® ØÐíî€ àPíå€ Ý® ØÐíÚ€ Ý® ØÐíÚ€ Ý® ØÐíÚ€ Ý® ØÐíÚ€ Ý® ØÐíÚ€ Ý® ØÐþíÚ€ Ý® ØÐíÚ€ Ý® ØÐíÚ€ Ý® ØÐíÚ€ Ý® ØÐíÚ€ Ý® ØÐíÚ€ Ý® ØÐíÚ€ Ý® ØÐíÚ€ Ý® ØÐíÚ€ Ý® ØÐíÚ€ Ý® ØÐíÚ€ Ý® ØÐíÚ€ Ý® ØÐíÚ€ Ý® ØÐíÚ€ Ý® ØÐíÚ€ Ý® ØÐíÚ€ Ý® ØÐíÚ€ Ý® ØÐíÚ€ Õ.«P ¿e ¨p Ø I ¥P ›` ›° Ø Ú m°ë§»ëîpº¨º¨º¨º¨º¨ºî€î §«¨¯è 3 Á°ëè åÂîèà²ëè ìèþ î »ð îPðº Çp Ôð y¡¢ º ÐðYð ÏPíÚ R ÑÐíЀ Ô–€ [ÿR ¾€3À ØPíM ¼cÐàõÁM¡@l ¡ „çeP4Ï ={òE ´,Ð:dè¡C†:dè¡C†:dè¡C†:dè¡C†:dè¡C†:dè¡C†:dè¡C†:dè¡C†:dè¡C†:dè¡C†:dè¡C†:dèÛ3‡ÁPA‹g[©` ± Åʼx«P {¦[49êÔ¹ÃlYfwš9kþ欙³fΚ9[v‡³et–ѹC7CŽ+têÜ¡CgÙœ¥Fê8«C§Î:uîÔ•s]9sY‚ &ì—(ê† &,2aÁ‚­31- KP„Mx„GPK¨À«„G¼J0?E°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØþE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØEþ°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J°EØE°„J0?KP„R°„Mth°ÉU°‡RPK@…~hÀ†h@xàïSKw(t€wPwPt€wPwPt€wPwPt€wPwPt€wPwPt€wPw(x(w(w(xp‡rpt(u(w° ÈW@‡rpuKps(…F@Up‚5p‡á‚w° s(!Xsp9E°õ{„>xEèõ3Mêëþ계ÓT„"¸@ê³ê{E°Ö°ÓìƒÓ\„>ÈÍådÎætÎç„Îè”Îé¤Îê´ÎëÄÎìÔNEèƒ>P?n°tøw˜TP¿E@…y(là{€†>P?KP3@xP‡r@w@xP‡r@w@xP‡r@w@xP‡r@w@xP‡r@w@xP‡r@w@x(w€‡r@x(x(xÀ wPxptKw€̰„"(!@w@Ì€wP‡á‚wPK(!q@u˜E ƒîìE ƒ>P9PÒ(íþE :P:ƒî¬Ò(¥Eƒ>P„>P:PR:Ò>P„*¥%­Ò3U:ˆRE ƒî¤ƒ>Eƒ<ˆRêSÓ>P„>¨Ò> ƒ>P:8ÓCEÔDUÔEeÔFuÔG…ÔH•ÔI¥ÔJµÔK]Tê‹RE°„ŠAEˆRõ[…`Kè5U:èƒ6(‡Ew(wPw@w(wPw@w(wPw@w(wPw@w(wPw@w(w€‡rÀŒrP‡rp‡á*xp‡rpËÐEpt(w@x@ËptPxP‡r@‡-w(x@Ë€w@‡:þP’E:ðW9P¢ƒ•:EÀ!E@X::@Ø­Ò¥9P„UR¥¥9 UU¢„¥EXEEÀ!E˜X:ðW::ðW::ðW::ðW::ðW::ðW::ðW::ðW::ðW::ðW::ðW::ðW::ðW::ðW::ðW::ðW::ðW::ðW::ðW::ðW::ðW::ðW::ðW::ðW::ðW::ðW::ðW::ðW::ðWþ::ðW::ðW::ðW::ðW::ðW::ðW::ðW::ðW::ðW::ðW::ðW::ðW::ðW::ðW::@XE@X::ƒ*•:˜Ø*õWEE@Øu‡r_w(‡ú-‡ú-‡ú-ù-ÌP‡áRtpupu€Ì€‡r€u@w@‡"Ø„Upx.w@u(Ñr@Ì@u€‡r€u(wPtPtpt˜9èƒU†U …UX…`¦…U†UZ¨ZX…`p…UZXŒZ†U …UèþŒ †Š¡aW†Uè…UZXŒAaXZXa áŠ¡áU aXW …UW …U†Ua Z†U …U WZPµ¡…U@baXŒY…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^…A^$^aXZX…:FâU†UÀW¨ãUW †U …U …Up_09þ0x@‡rÀŒrÀ Ì(wÀ Ì(wÀ Ì(wÀ Ì(wÀ Ì(w€ù-xp‡á‚‡rP‡rÀŒrpuK@…^èïè…a i’†^ ïZ†^†aèé…aðŽWø‡žî‡žî‡~èé¡îé~à‡ê~ êžæ‡Hê þ‡~à~ø‡ ^ê袞ê«j~ ê~Xê~ê§j¢î‡žî®Vë˜êà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêþà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžêà‡žžj~ ê~ø‡ ®p®æ‡¡î‡«NêzÀ|09Èf°ÉWñgñwqfˆghˆh`†h€†hXq!°T€Ü@w€tptÀŒrò$‡þÜPwHr!ƒ`臵þ‡~ø‡~ø‡ ^ê~è餿ê¤îé~ê~ê þ‡¤þ‡~ø‡~ø‡~èé &ê~èé~ òè‡臡î®&ëHê ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ëxê臥~ê臞î‡Hj¢î‡žNêzx‡rUw(˰Œr`wu®w®wþ®wW‡rPwPw€lUw(x° x(x(u(Qu˜E(…árup‡rptptÀ upt(Qu(ÌÀ wP‡r@‡Wè‡:Gù”Wù•gùµꥆù˜—ù™§ùš·ù›Çùœ×ùçùž÷ùŸú ú¥î‡zø‡z¨‡wÀs79hËp‡ww‡wÇŒwÇŒwÇ {wË(w(‡UÌ(up‡rp‡rp‡wG‡"°Tpxøx° wPw@w(tpu@ËpËÀ Ë@w€ƒ^úÄWüÅgüÆwüLJüÈ—üÉÿù ®‡~@úwÀsÇ!þ3pup‡ww{w{w{w{wÜ€vÇ x@w@x° wxwtpuE(t°‡`(w@‡r€‡rpx@wPxpxrw`wtP̘9X…™§…N …NXjZèžwzØù}ð‚NpzèyZèÊÿZèö‡ÿø—ÿù§ŸOêz¨|x|(w|x39rСƒ‡ž;‚ðÐÁSG:xêÂCOAxèà¹CO»rðºSW®œ:uåÜ¡S‡AwêÐé°„ ݼ^ðÔ¹+çÎ]9w)O–SçN¼rêà¹S¯´€7;dñO?PÈàíàM?,Ä PÈàípB2x‘A?PÈÐ2|q€´ƒkôƒ'ÕU[}5ÖõƒG*©àÇ5‰ÉÕO=ýÔƒO=ïÔóY=ïÐóNB˜Ñ\9JtF$htO9¨–ƒj9Í•ó<ð £ÎOð :ꮎ;긣ÎOè”ãNJ3XRŠ;ú¬O9è¸SNXD²Ì%çä <è4W:å4M•ôRU?P!=ha YȰE·T… p°ÿpþYd!Ã=üƒô@;;@ÑÏ? PI/šGôÐNYx!Ã?´ƒ€Èð…oÐíü,…-dàY&‡ÐíØAúñ( ÚñháZ€Âöz €t°„dð,dàY&Ðôcy@Ör¨ÃòPNx¸ï<$#/ý¨Ç?êñ~JPø¨=ÞQϼ£ÁAà*øA ‘ˆ„ÊDœ ‰ð:¸Aƒd`Û:àÑ!x ':àQw”ã'D‡;ÐtÀÃꀇ;Ð!Kþú ÅOÊñ“XЃí G.r¡w¡E¨ÄOàáx¨E°Ä*ªÒ(H¯Ú0à :±ŠN˜Ã èÇ?Vщy˜ÁNøG1ÌðW ¢ûÈÂ?Ìñ…5ô ôPÅ*ªÒV@ýhªñ/ô#®pE'þázt# *È?ÌP‰,ô ôø‡*²ð‡U˜ã ~(E'úÑ(T£Y ‡'‚Ñ8an¨Å? @˜ã ƒàLà…ZüÃnX7hщtà ‚pE'øá (‚rÈÂ'úñ–•²´¥.})Lc*Ó™Ò´¦6½)NoÚ<Ø! a¸CðàÓt¬´þÿT?…z¼£øxG=Þw¸BfpG9ÔŽPÐÃôÀG,RbƒJ p„98° ÀEøI Üa #Àâ)¸…  ‚Z€â)¨E9ÐáŽr¸£êpG9Ü‘T¢î°G/Ðáxü$•¤‡?äa‹ŸX hN9ÐQw@CŠèEUþÑÕ²¶©­J?þÑ×®¶*«}mUV‹Ûݶ¶*ü`í?Vû}œ!F?v«Üª´·ý¨JdÐ×Ö#µýp‚ ^Û~¬¶*ýø?þÑÚÔ®v¹æ=/zÓ«Þõ²·½î}/|ã+ßùî¶x°ƒ€ß0´bþýØmW+¨~ õxG=ÞA*’‚røIJöŒG{p:Ìá(Â'€$¬10dBåpG „€ZØ M0‚ Ða #Ø@Ö0BsÊáŽr¸ê@‡;СKBö …;ÊAt¨bµô؇4¢­èE3ºÑŽnt?ð€_;„¡þà?pQ Pàbžö44þ¡Aᣉô âg¤ñWà ê€A2AaôƒžþpäáX¸ðpAšsx`C•pÅ¢û‘Ú~º.ôjÅÜÜ®öýs?݃S¼â¿8Æ3®ñBãÁxH†?ªÂ\@&—@ l@PýÀÌQýi¬ãëX)z!x”ÃêpÂ&ܰ K¸åPEÖÀ uÀâî‡%Ôá E Ãp:òP7d6ÈÃÄaŽ-¬ã°D7,1ŽG¨î€þ‡;Ð1Kö`…;ÊÑUƒæˆE& F N V ^ f n v B ?( Að ò@ð "" "A6¬ 2¼Ã:”‚0˜:¸ƒ:¸Ã ªÃO¤:¸ƒ: <”Cs¨ÃO”<DJ ƒ: <¨Cs”ƒ;”ƒ: ƒ:ÄO”ƒ;”ƒ;¤Ä XB) 6ôÂO¤A¤ÄO”< C9 þ<”ƒ;”ƒ;”:ÀC9Àƒ(B/( *dÁ'8 ?@úC „‚"0 ú4üC ã?ø4üÃ,`00`>(BäC¸#?& ôCÃæC(`>(ÂàøC „‚":ÁæA?"`>dæƒ"ÁAE~$H†¤HŽ$I–¤I`?ðA¼K¾Â$´$KNÂ+L‚&LLÂ$ˆ¤A|IÝ*ƒü:¸:Àƒ: <¤:¨ÃO ƒ;”<¸C9AÀC9üA¸:¸C9 ƒ:„:Àƒ; ƒ; ÃO”<”<”:¸:% B9üþD9¤ÄO¨:¨<¸C94G9¸:¸:`9¸Ã XB0ô‚‚ôƒ/¨B#ø‚6|A5üÃ3dÁ-¨ÂtÂ?äÁ ôƒúƒ¬A? ?äÁ ðÃ3d7ì"ÈA-¨Â°‚+øƒT‚+¨Â?ìÃ*¨B#øÂ3xÁ-¨Ât‚*üÃ3d7ì"ÈA- *D@'(¬A?øƒ¬A?<€ÐÃ?ä/t/tÃ4¬BäC *4B0¬Â?°Â> ‚ÔÂ>CÜÂ> ‚ÔÂÞÃB?¨‚'È=<€ÐÃ?ä˜Á4ìÃ*ü+ìÃ*Á?<ƒ¨€*L+¬Âþüƒ6|A5à3˜ øÃ*ü+ìC¬*ì"ÈA-üÃ3˜Á#à3dÁ-`>à€LÃ>¬Â?°Â>¬ÂüÃ3˜ ôÃI>)”F©”Néöè–f©–êAtiDAðDAˆÁ;HIÃ;HÃ;¸‚0´:¸<œ<…:¸<”< _9 <œÄO”ƒ:¸ƒ:üòý„:4G9 ƒ;¨ƒ;¨ÃO”ƒ;”Cs¤Ä X)ÄO <¤:”<”:ü:üD9¸:üD9¸:ü„T‚+$àЃö€4üà ðà ôÃ<øC ÜCôÔ‚-Âöƒþ-¨ÂA-Àƒ?œ?˜À= @?øÀ=TA>d,ƒ-dÁôC>TAHC?ÌÃ?¤À=TÁ??œ?˜À= @?øÀ?ôÃ=˜Á?ô€4Ø‚ðC?Ø‚A?à>Ád¤C4Á=Tö€4äCüÜ ôƒ =üC Ü ôƒ`?€4`À?ô€4XƒA?à=d€>¤À=TÁ?0A>dAøÃ ðƒÜCäCô?œ?Ì€úà ôƒÜCüÜ üÃÜ ôƒøÃ 胠=üC à=d€>¤À=TÁ?0A>dAðà ôƒ0 ÜÎþ-ÝÖ­ÝÞ-Þæ­Þî­ÝòA–êƒ9h©—‚©˜Ši4|ƒ˜"¬àg¬)ƒ ÃI¨ƒ;”ÃOÎI¸C9¤Ds”ƒ:¸C9¸C94ò¹ò¡ƒ:”<üò¹C9Àƒ:Àƒ:ÀC9Àƒ; ƒ(*¸A¨C9¤ÄO”Cs”ƒ;”ƒ;ÀC9¸C9 ÃO”ƒ;”ƒ;%¬ö,C?üÃüC>8€|?Ì€<@>dÁ?A˜1 '@ÁTÁjÁjåCüCÜCôÃÜäC4>ÜC4Á?ÜC4Á?øƒ˜ÜCôCäCüCÜCüÃüC?äCþüCüÃ=d'@ÁTÁàjÁ@A Ü4Á=dÁjÁ?äCðÃÜCüà?ø€0À=dÁ?A?üC?À<€44A?ÜC4öÃ=@A?ô@>T?ô@>TAäèC܃äC4A>8€˜Á?ôC>A?ô@>T?Á=@Á?Á=dÁ?Ø@>TÁ?ô€úƒ˜Á¬Ö=@A?ô@>T?ô@>TAäƒôCä-&g²&o2'w²'ó LAô4° P P P+·2˜ƒ;P P€P‘2|†2¼Ã:”‚0´ÁO¤„;¤ÄIü:üþ:ÀC9ü„2ÿÄ’©ƒ; ƒ; <”ƒ;¨ƒ;…:Àƒ; <”ƒ;”ƒ;”ƒ;”ƒ;¤Ä X)(s9Ð;ÓB0 Ã*Äs0¬B0Äs0¬B0C<Ã*Ã*Ì@%ôBæC dô€rA¬?¤€"0€?¨@'Tö€â€0À=@A?ô@?ü?Ì€0þÀ=@A?ô€j‚ðÃ6AüC>dT=üC>8ÀHÁ?à€LÀ=d üÃÐAäCÜCôÀ?pA¨öÈAüÈÜCôCÜôCüdA ?Ì€0€æƒlüÈÁÜCô@?p$@?œA? r'·r/7s7·s?7tG·tO7uW·uÿˆNÚƒ6¤ð€¤œxWN¦AˆN~ãÞ*Cô-C0ôÂ*C/ôB0ÐÂ}¯;¯B0Äs0Äs0¬B0¬B0¬B/¬;C/¸B0ôB0 Ã*ÐB0¬-ôÂ*þôÂ*Ã*ôÂ*C/" B9¸8¬‚;:ü„9Ì:¸:¸C< ƒ;„;Ä:¸:üDXÂ* ÷j!w?`k1÷j`?àj`?üC?üCk%w?$w=ØB"üC?üC?`?üC? w?üà þC?üC? w? w?`?ükýC? ?`?$w?à þC? ÷jýÃjýC?`? ÷j`?`?àjàj`?üÃj%7kýC?(w? wk!÷j!w?ðƒ>˜€²r¯–®Ö?°Ö?ôr÷Ãu·º«¿:¬Çº¬3w?ðA–ÂC9LÁ¸r+Aèú7Àþ¤AˆªIÃ;HÃ;¬C) ƒÀC9 <Dá <¸<¨ƒ2£ÃO ÃO ƒ; ƒ; Ã2/™; < <¤:,óO ƒ2£<”CXB)ü*ÄC<üD<¸C<Àƒ;ă;ÄÃOè{<(³Áë»(B/,w?@÷jEw?ôCr÷Ã?ôÃ?¬Vt³Ö¬—|s÷ë÷Ãt÷r¯Ö?¨‚LÃ?ôƒr÷ƒÉß<Îç¼Î—<¤¤4à L0bˆL‚®³5L–"ãJÃ:¸1È; ÃI¸ƒ:E9 C9¨ƒ;¤„;¨:¤:¤„;¨ƒ;¨þ:¨Ã2£ƒ:”ƒ:”ƒ:ÀCJ”<”<¨ƒ;”< :%”Aô<è»;$¼;ă;è»2¼;ÀÃ2%C?(w?´z?¼z?`?4w?ìë·¾ë¿újñALALL LNî>NêALADA–Š2¬ƒ4¬ƒ4¬ƒ4¼Ã:”‚0´2§„; Ã2«Cá ƒ: ƒ;¨:¸ƒ: ò¡ƒ;¨<”CJ¸ƒ:„; C9¨:¸C9¸C9 C9 ƒ: C9 ÃOÌ€"l‚;¨@ ‹7¼ð&T¸0¼xB¹ú7‘bE‹1fÔ¸þ‘cGA†9’dI“'Q¦T¹Ò#Ÿ4/yðˆÂ#JÍ(/qêÑ3E§N$ÔÈI#'-¹uÒP3ã:uèÔ¹kꮼråÔ¡s§;uèÜ©kêNºrîйs‡N-:µèÔÁs‡N-‚@BS$‚Ð4$‚ØtÓ(HcS1|¡†rz{ÇUW„iÃuÔ‚§œãÜxÊG-xÔ‚§wÔ§wÐþQKµsrÜÇrÔ)žrà)wйÊu„°wÔÆ¿yJѧ64ÑsPnâÁÆh´±§{‚AGŸ"¦ÒXà .%xСšl¨É&j²!Gbr¨!‡šl&žXšlÈ‘¦7W¥ébÌ€Çt®ZÌrÐ)Çrà)GtÊQrÜAžrÜAÇuÐqGt®BÇrà)uàqGtÊqGtÔ‚Gt„P¤uÐ!¦ÿÖpE?MôÄF}°ÇtÀ‰g{…§KhÁÈî»ñÎ[ï½ùîÛï¿\ðÁ /ÜðÃOü¢~þ釢~ ï§}þêé§žËëqUóz4wui\•æRˆiwàQç*wàq§wÔ)×ãà¹ÊuÔBÇxÜ)gö«Êqç*uÔR縫ÔRg†MHAÇhô©§ŸOæ¹ó™³õ1çl{š‚GpÀñ{ÐBaO_ýõÙoßý÷á?þ~þ‰úÁŠôCE°„+ôU©N•ªUµêU±šU­n•«]õêWÁV±Ž•¬e5ëY¯ zØcö€‡>ôt¶zØCõÐ<à9{ôÃý°äæÑxØ£õhLTQ! 9 ÃåpG9ÐaIw”Cî(‡;ÊHx¸£î(‡;Êw Ã’å°d9Ôq@^å°d9ÜQwï«ðëWá Ó‚õŸ0~ß?øO¨ï‰ÿýþå›!÷õ·¿ýûñÈY$rÿèÇýeOìÔˆAÔÔ¡)ÔÁÔÔÔàÔ¡)ÜÙšBÐÁ Ô”ÍÔž£Ü!ÙÐA¡ 桚 ÐÁÊA࡞L,ÜAáÜ¡XŽÙ,©Páòòಠ,Bœ` ì!dïòAro ¹0÷ A jÁÄp ɰ Íð Ñ0 Õp Ù° Ýð á0Ë>áа>ájá ×  ýð1)¢æ¡ÐˆÁ ÜA ÔÜÜÔ¡ÜÔÁÔÔþàÔIÜAÐÐÙÜКBÐÁšÂš¢)If`Há9 ÁÜÙÊÔÁÊaÙÊÐÁf@JZ€Ê¡ÜÁ²àÌÁ ²€²€ÜÁ Ö@Ì¡ÊÁÔþá²@òaÌ`öáþAv ¬á TaAjáža ``\A¡L²0Á"?Á$+>!,òúa!i²&QìÜ„AÔÁÔÔÁÔÁþÔÁÔÁÔ¡ÍÐÁ®ÜAÊžÃÊAÊÜAÊAÊAÜAÜAI,IàAÐA,ÐA ÁšLÜ¡ ¬ÜàA,¡ÐÁZÖ ÐÁÌÁÂ!l!bA ¸àBA Æ¡à¡ÐÁþ  î!üÁþ „ v R š NàRÀLÀ,ઠ¤ÁÔ–Á² l2ûáú  Р8Çà~¡ n`9Ë 8³8 ALá9Ñ œSjAj:¹ó9 ¡;Á3<Ås<ɳ<Íó<»³\PˆÁþVAœSVa‚APa\¡Æ 8Çúá7t@kôÁЄ¡ ࡞”ÍžÔÔÁÔÊá9Üá*à¡ ÔÊA²Ô’ ’­Üá9f@JÁÔ!ìàà¡)ÐÁÊÐÊÐÐЩÜA,aÜ¡Z<ÊA €ÂAÂ! ¶Al ² СÔÔúá   ò ú¡úv€¬a Žàªàš  àz ²  þ!ªàô᪀@ÿA U ÊàŒ¡ ÊàBþ R5U JáPàÐÀÊ |¡ Uà 0@İ  L!” L¡ ÐÀ  ÄpSyµW}õW5X…uX‰µW„á!Ë`n ”` †¡àꈡAS5€Q¹•[ûÁÐAJÌ ðÊ®ÜÜðJЩÜÙÜÐÁСÜA©ÜÔÁÊA²ÐÊAé9àÁС,šæ¡Ü¡, à¡Ü¡à¡Ü¡Ü¡Ü¡Ü¡©„ÀHÁà¡Ð!ÀRÀ `Œ`„`„@LÀ >aþÌÀÔÁPáØ! zà"` ¤`NÀ~`² >áî¡ þ¡ ú ä ò! Žàîá Šá¶ úQ¹°ø\ no  F¡ –óD n nùöÁÊÀP¡>!² Bà\` ¾ \@D` L! @ àB  "B ø6noÀn tU×nÀn toÀîVuoÀîövq÷\àV7noÀn`uoÀn woÀn wùö\àT×hn` ÆàVAÐÀЀ n n *âö\@Ø6} Tþìá9PAä@ÊÜÊÊÜá*àÁÊAàÁnÎС$ ÐÊÊКBà¡àÔЯܡÜá9„@J¢Á,©Ü¡Üá*é*©©àܡܡ¡à¡Š „ ÐAÜA ,)Ü¡©Ô¡)PálA ìg"úa"úa""§" g"úa" ÇìÁA}·°á>  ÀR-u9E ÌxtÍøB LaJÁª`œàB ޽àÐÀ¤  >à >`„   >À¤ÀÌþxtC ŽãØ’5“Í889Ž-ù“?ù>Y“Cà“-ù“5ù“Myt?ytÍX„!Ɔa J!†>aJâ84@Œ•y!!ÇÐAJÚà9ÜAÊAÜ¡é9ÊÁÊÁÊ€IÐá9ÊÁÊÁàÁÔ¡Ü¡,©Ü¡iõàAÐÁÐA6Ô¢aÜ¡,©,©,©©©ÐÊŠÀHÁàÜÜÔÊa¾ÐÁà¡ÐÁ’Ðòa ú!÷ì§öüÁ Ö –÷äàp§á §þ à §/  @ A . Ê §!À .  ¤ ¼ à¡¤¡Ôà¡ ” > à €¨q.¨áš­/ˆr.äz¯å.®å.ä.¨å.®Z®!€¨³a„á¨WJA”à” hAn`n Vˆºjò´Q» ÏFÜ„¡ ÔA²Êa¾ÐAÜA$«Ôà¡ÜAà¡ÐÁÔÁÊÁÊIÜ,IÊÊÁÔ¡,¡ÐA ÐtààÁšþšÐÁ’ÊÜA,aà¡é9Ü,I à¡à¡ÜAàá9ÜúÁúAxhÁù¡úAülþAþÁ-œêáøAúáÂ=üÃA<ÄA¼䀱ú `àú ààú€.@Æ!`..€.`à§ àd€.@Æ!à à à à€ú €­!à à€ú à€úàú §!àLœ±/®/¨/r..¨/...¨/p..¨/Ø..þ¨/.¨Ñ hÒ‰†.>€„êÉС »úÄY½Õ]ýÕa=Ö]]êÁÐAJÌÊСà¡àà¡à$«©ðJСܡܡ š Ü¡,©ÜAÐÁàÁÐA,ÔÁ¢ÁÔÁ’š¢Ü¡ÐÊÊÁÊÁÊ®BÜAà¡Ðá9àAGáܡԡÜÜ¡ÔÁÔìÁæú*¾âõÁê¡âá¡ôô6þä7^æ¡âçå]þåa>æeåõA à `þÚœ±qzç}®/..¨/àª~ž±/`é}þû à àÚü€ú€ú à€úàúœ~ìÉþç/¨/Ààa˜! ánà€Z Þ!z¡PÁ§úf>ðð ¿ðÎÆæAÜ„Aà¡ÐÁà¡à¡Ü¡à¡Ü¡ÐÁÐÐÁÐá*, ¯ÐA©à¡)àÜÜ࡚ÐÁ’ÊÁžc,šì¡Ü¡š¬©, àÁÊÁ’f JÔ¡©Ü¡Üá9®ÂžÃÊÁ’ÐþæKIGÑ¡©)ÔÁàÁ’Ð?þÑAÜÔÁä?ÿõÿùÿÝ „„°`à‚^¸0ðÂÀ /@xx0£F <$x!ã…/¼aÁÀ .¸`ã ,¸0pÁ ¼aÁÀ ^€°`à….@¸aÁÀ ^x ,€p‚’ï©/@pÁk]½lh.¼¡;t|ûúý 8°àÁ„ >Ü×;uîÔ¡SWŠ˜™rŠÝ•sWÎ]9wåÊUF箜;t•Ñ•s×Y1ºrŠË¹ë쮜âr•£+¯<þwè„TBåN4{ŠË¹+箜»rŠË).箜;tðÊ¡sO‡%RðÔ¡S‡Î:wåÔÕF§ž;têÜ•C§Î:wêÜ©«Î:ÅèÜ•sO9µ èŽ:ð¨ƒ<êÈ`ƒ>È :𔃎-pÐ]0Ð=4Ð=Á,ÁC\0Ð\ÑC-p tÁ@ \0Ð\@Ð\pÐ,0Ð]Á\Á\@Ð,pÐ]0Ð\@Ð tA ´ÀA tÁAhtÁA´€F@°A @ÈgŸ~þ hŸèÀS:긣Ž;¨#þ:î”C :Š¡ãN9••3 :ê(†Ž;ð”ãN9•ÁSŽ;å¸O9î”SY9î”ãŽ:êÌ` )²F:ð £:ð ã_ðð:î”ãN9ð¸O9BX‚J9Š©ã:–ƒ<êÀSŽ;åÀ£˜:èÀã:åÀÓ—:•É*«;å¸SŽ;‚ÉŠN9ê¸S<ˆíË/_Ž;n,°Œp /ÌpÃ? qÄOLqÅ3|AêôËqÇs¬Ž;ê £<êðå 1f(†Ž;è¸Ã<îðåN9Š•S_î £X9î”ãN9è(VŽ;å(†Žb)VŽ;è¸:踃Ž‹”"þk4ö(Æ—;布Neå(VŽ;åTÖ™;å¡*ð”O9îð:ðÀÓ™;布Ž;å¸SŽ;êt¦<娣<è¨ã:w»ƒŽ;ð¨Oƒw—ã»å¨ã`çž^™:ð¨ãŽ:ðÈݘcN7ðPú9àÌÎú7æ€cÎ7æ|3»9Ø€cÎ7æ`ëîtf6æ|cNg³cÎ7¬cc8å€ÓYgà°þM9³›ƒÍì³›ó9³—cŽøÙwN9àtöÍ7à|#ŽøñƒcÎ7à¬oÎ7³›ó ÖÅO|æà†;fWs|cv¬û†9ÖgŽoˆæ‡9Ägp”ÃîèŒ9Êþs€Ãî(‡:ÊaŽì£3æ˜Á ÐÉp†4¬! áQu(¦êp‡:Ê a´î@‡;ÐáŽr¸Š)<Êx Ãè(‡bÊátÀµá <Ðr Ã|q<ør(¦Š)‡;Ô1ƒJ‚/Ð(Ç*VŒUcÁXE0îŒ;cÁ¸c0V ac›¨D9ÜQw”C1ë«L9*£tÀÃêPŒ:ÊáYuF倇::ãŽrÀ£î(»^™=w¨ê¨Ì+o‰Ë\êr—·,‡;ÊátÀÃ_øîy˜C1耇bÊÁw Ãè(<Ü¡Žþr Ãå@‡;î¦x Ãê(<Üu Ã¯DG9øât¨C1êPŒ:ÊÁu(FèpÇ+Ñ¡t¨Ãê@‡;ÔáŽWºCV}A‡;ÐáŽrȪ6èP‡bØ…wÈ êà‹bØ…ŨÃê@‡;ÔQ¾¨î`:Ü!+w¨ê@‡bÔw¨îP‡;СŽr C耇;Ôát¸CVŠQ:Šp¸ƒ—T­ªU¯ŠÕ¬–C1êP :dåWà î(‡bÊ¡˜r¸£•A‡bÊr(Š)‡bÊrT¦•)GmÊ¡˜r Ãèp:Üw £– …;Ôþü£ÿèÇ?úñ~üŸ¨E" \¸ãžÈÇ#B…5a¨€‡;ࡘrî€G9С˜r £ê@‡bÔ1 x”Ãêp<:£t|å€:ÔQÃè~Nðè :Ü!‡À;àáŽr¸£î(‡;dåŽr¸£è(‡bÐáu¸£3îè :ÓvÁC1å•;Ê¡Y¹î(‡;ÊáŽr¸CŠ)‡bÔᬢƒ]µQ‡;Ðá¾äR1åÈe9SwÈÊð(‡;ÊñJw”ò‚G9ØåŽr¨Ãå`WeÊ¡ŽÊ”CîP‡;dÕŨòrG9#«"„þ Òm²“ŸÜ9tÀÃèP‡;dr mPL9SŽÊ”î(‡;ÊQ™r¸£î@‡bÊrÀ£î(‡bÊÅ”ÃèPL9*Sw”Ãåp‡¬„P TÈŠ’m´£ÿQeHZÒ‘ÈÆ?vàUô ¶(‚"JQw”Š)‡bÊx”åP :*s7uÀCè€:àQw”C1åpG9j£Ž†ö²BG9ÔÑx{ÙÌn¶³ ¾¸£ŠQ:ÜÀÃåPL9$«rHVîPG9Ü!«Ú c@AGedåŽrÀC|):îÆw”Ã|G9àÅÈÊþêà‹¬Ð¡tÀŠA.Ñ¡w C1|y%_àáv¹CVŠ)‡;С˜ì¡î`—;ÔáudŠQGmСw”Ãå¨L9Üx¨£ðp‡:СtÀÃê@‡;Ðt¸CèÐÁ4àŽgK}êT¯ºÕ«r¨£ð(<ÔÁ—r¸£Â0:Üw èp:àáŽrT¦î(<Ðáx”ÃåpG9ƒw”Ãå¨ :Sw”£2èp:ÜwÀÃè˜"P!«h<ºÑýø‡)fzeÌ ýøÇò‘…d!E°)ࡾÀƒ/ðpG9ÜQu ÃþåpG9ÜÑw”qG9àu¸ð@‡;àát¸ê <ÐáuT¦OvrgÜQx¨C1êp<Ú‚˜£Š)<ú¾Ü/ð@‡;Ðt¨ƒ/ð@‡;àðPî€ð€ð€ð îÀð€ð€ðPè êà¡îÀðPîPè îÀð€ð€ŠÁîáðPîèðJî +î +ŠÑð îPðÀð€ð€ðÀð ð€ð€ŠQèè èàå|èèàèp7è|èÁêÀîþåàåÀêîPîÀê€EÝLJ}8CîÐîPî Šå€ Â èàèàåàèPîPðP|ååàå èè åàèèèàèà|áè|áå å åà²"–P ŠA ›çh‰0 ‘0 Œ0 J Y;pU°ÿ` 3` ¥PîPŠQŠQRŠð êàêP•¡å èàåàààáåàåPåPèPåàåàåàåàåàåàåàåàåàåàåàåàåàþåàåàåàåàåàåàåàåPåàåàð€îPî`7@è|Qåàå +áêÐî å +ŠQî€ÙãåàÙãåPê=îPŠQRRŠ‘=좡áá ¥è€K•QŠ¡å åàÙ£îPîPîPî î +å åPêàêàåàê=îPêÐîPî åàåPå êPðàêàêàåàå ê E åàåàåàåàåàåàåàåàåàåàåàåàåþàåàåàåàåàåàåàåàåàåàåàåàåàåàåàåàåàåàåàåàåàåàåàåàåàåàåàåàåàåàåPåPê€îPêPîà ÂÐåàåPåP啊QðPîPîPî€îPŠQîPîPŠQŠQŠî€î€î€î€î€B` ¥€î Â(YýàŽÀŽÀްýÐ;pU°YàB` ¨€ŠQŠQŠQðPðàèàåàèPåPè åàþðÐQŠQµQèà|áå å å å å å å å å å å å å åPåPèPî€ê f   îPðPŠQî +è +•¡ŠŠQ•QðP¢î •åàåàåàêPå •QR²Rå ð êPêàèàwS·äåPå î ŠÁ.î î +ð0 êàåðJðPê ê@ êàå åàê ²¢êàêPŠQŠQ•Q•E å å å å þå å å å å å å å å å å å å å å å å å å å å å å åPå ð€î€µ²R¨ rPŠQŠQQåàåàåPèPèàè åPè åàè åàå å å åàêPŠ@ î Р£ÿÐÔУëÿà)ÐÿÐüð3` ¥àè å å€ðPðPŠ•èàèà|èàåàåPå0 |||áååPè||þ||||||||||||è|1 |n åPåPåPåàåàå@ åàåP倕QŠQðP•!+åå€ðPð€È$+åÀðà|Qêàèî è èp7êPè îÀ.åêàèpµwSèp7å@ ²RîåPåÀîPµ¡å åîP•Qî€RŠQîèàååàðàê€ðàåîÀðàåèàYàè||||þ|||||||||||||||||||||||}èàåàèàèPð€åàèॠm€î€ð€åèàåPå ð€ååàåàå èPŠQîPQîP•î€î€î€îî€:` ¤å }K¤DúýÐh p F¤B` ›à||îPîPî€îP•Q•ŠQî€ðPîÐîî€î€îPŠQŠQð€þå åàå å å å å å å å å å å å å åàå WëååàåPå€m å€ðÀwÓð€ð€å|¡ð€ð€îÐêàèèèW }Låå åàW[|ŠQèàå}èàåp7êîpµð îèà²âåàåà²rµ åWÛðÀÈèPðÀð ŠðÐÈÄîPè}èà u7èp7èPîÀêèPè å€ðPðPŠþÁåàåàE )€îPŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQQŠQî ð +î€ ÂÐðPŠŠQðP|î€åPå€ð€ŠQî|èàèà|áè|áå å åàåà²R•P åÄз›×ÖŽÖ)` ¥ å åàåPå |¡åàåàåPå èPåàèàåàå þå åPåå å å å ó0öàæöàæöàæöàæöàæöàæöàæöàæöàæö0öàæö€ å åèàåà²"¨0åå åàW[åàå W«åàåàè@ åàåàå åàåàdíåàåàåàê êàW[å å WëêpµîPî îPî@Öð€w£ðÀ åPêPåàd}µŠqµîPŠQîP•AÖŠ¡ŠQ•QîPŠQîÀíåàåPåàêàèPå å åPå BBPþŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQŠQ•QîPŠQðàåàå èP® f åàåàåàåîPQèPåàèàåàå å åPå èàèàèàèàèàðàè0–€ êàÑã…ßhý –@ ŠQî Á Á° Á° Á «ðøÂ° Á / Á°  Ðàذ Á Á° Á / «ðø«þ ° / Á «  « ° ¿ ~è ð è  «  ÂÐ Á¨îåàåPˆPƒ`êàèPè î Û îPàåàåàêµQµA Š•Q¤àêî–讜ÀrËT'°œ;xæP¹+ç®\9wåà•C¯\Awå–sWN`9ê –‰N`9åªXž»rË,Ò§ÀrË,箜ÏrË D箜wE‚­ &lU°`«‚ […uU0a«°¹+'°œÀrË ,'°œÀrË ,'°œÀrþË ,'°œÀrË ,'°œÀrË ,'°œÀrÑÁ+‡N`9wè@–C%¬ÀrÑ ,'°œ»rÑ•sW^9x˹+¯œÀrè–sWN`9åÜ•sWÎ:uB6UBíßsèÑ¥O>ÃR©r{A«¥Æ ZË–U‹ Z4lТ™g 4bÜ\aÅ-¶X±¢™†Í<6h¢‰Æ¼h ‰h˜h¢ÁƼhàxÐxÐxÐxÐxÐxÐxÐxÐu\éf¢Áf ‰Æ<3J™@ r *ÇDˆ@gÉBs¾þX£s¾Xc!žD ²¨Æ“,>1Ç,ÌÉ‚ŽJÊqc pÈ¢8²àwÈ¢U„ðwÐa% WÌ Ä5Êqc tÌùb m*A§O"8¤8Ö(Çœ^ÊAÇràA§wÊqxШŸÊq§x*ÇrÐÇr*§ rBG r*ÇtÜ)ÇrÜ)G rÜAwÊÇrÐxÊqwÐrÜwÐq§x„€h¢ÁÆÁ…OPB \à4Â!tÀ Bp8A 5ŒÃ)‡;àx ÃåpG¾à‘/JåÈ<Ð!r ù‚G¾àx”Ãù‚G¾àw è€:à‘/x Ãå@<Êt¸î(‡;ÐrÀ£:ÜQw”C E€G\¡7WèÍzs…Þ\±¹`¸£)‡@Ê!r¤)‡@Ê!r¤)‡@Ê!r¤)‡@Ê!r¤þ)‡@Ê!r¤)‡;ÐQr¤AÇEãRCî(:Rx”è€G9àáŽr¸£î@<Ð!r¸ù‚:ÜQ”Ãð@9rw”£ å(H9Ü¡ŽT¢å€1 óÎçèc ³ˆ# Aˆâ;à:ŽÐÌ@›(‡;ÊAŒ^„¢ôh=èÑŽ7¼a ®hƒh¡8Wø@o®@…+hÑl¸‚½ Ä9Α‹P¨B&ˆ-0ŠŠ ´£¥…âBqW¬bàpG9RxÈAÁp‡%h €˜¢)‡@Ê!r¤M(‡@Êw¸‚®þF.rŠ™ÒÂ¥ˆ@9Rw”îðÁ2ÐáÀcF°¾ð‰ ÃÛH€ÐátØ@æP!¨ãâ°†l…,TÂù²„QuØÀãÈ;ZPwlÃY€‚;@q€jØ  ^øDÐáŽp!0‡Üa(d¡ùrG9 rw”C åH9|r\Äå(H9Rw”ÃåpG9 R”C åpG9ÜQ\¤ åpÇE‚w”Ã8ÜQw”£ è€Gâ!ZÐa¡€‚+háŠUÐBq´pÅ*\A a¸¢)‡@Ê!r¤)þ‡@Ê!r¤)‡@Ê!r¤)‡@Ê!r¤)‡@Ê!r¤)GAÊáŽr¤ðpG9¢x¨ê@…0ÌPr¤ð(‡;Êrî(‡;Ê!t¸£î(‡@ÊQrÀ£î0‡@Ðáx”å@‡;àQt¸î@G, u¸#ð„ç'”ñgeÌ¢ýèÇî‘…&@!EØ*Êáu ƒ¡h3¦±Œ[Ðc-àÀ*: Vè@®hƒ*¶ „8¬Â}ÀF(PA Oè‚ º8C(T€Š "38„à†">0*<1ƒ'„Â3ˆÃþ*À!r¸£è`ĸatX£îhDP° d&ð`a‚Ô‚Y†œ` uô‚® D.ÎAˆLÈ‚®àÂh‚”ÃåpG9žá!üÀèØ†Šq'|Â'xÂ6²°‡'¸\€B3R`†lCð€Å |`„bœ ŸpC®¡Båà‚ª‘‚"üÀð(‡„ðm˜à(€Å œð Oœà ðH`B9ÈB)¶atÀ£qG9ÜQ”C åpG9¸.rî(‡;Ê!r¤;ÊáŽr¤)GAÊ!r¤)GAþÊQr¤g/:ÜQwÀcñ* K´E0-ܰ!¸Â)x*h x”C åH9 Rw”£ åpG9 Rw”£ åpG9 Rw”£ åpG9 Rw”£ åpG9 Rw”C å:àQt¤î@‡@Ê¡w ¨†Rw £ åH9ÜQÀ£!‡9àáŽr¤î@‡;Ðr€‡r€‡rp‡rp‡r(ˆrp‡rˆ‹pä‚R¨ä€>{§D˜…H˜DƒçØ|¨‚èvE(w€uVÈq¨†Z˜†Zà‡7hxƒ0þV …7 ‚`èZ°„` „K „K؃=6H … @… …Xˆƒ7‚„R XpÈxq`„.E€wØ!(PÈ‚Ø#€‡m¨‚&xpuð€,àuèZ†PÐ]YØYp…ÈT˜w(®ƒwˆtttPw(xpxˆrt˜q@xP‡rP¸ˆj 5PwPt(tpBx@wˆw€u@uˆ‡‚¨!‚"@Žr€€@x@wPwÀ!w@wþ(x@w(@x@‡‚((w(w(t(ˆrpt€w(w(((w@‡‚(w(w@((‡‚(x@w(xtˆ|tpxÈ—rpt€‡r€‡rpux("èZ… @8"è€C؃è€@(WXb(xÈx@x@xÈx@xÈx@x@xÈx@xÈx@x@xÈx@xÈx@x@xÈx@xÈx@x@xÈx@xÈx@‡rp‡r€w@w@x(w@w€ä(‡R9@w@x(þw((@x(tˆrtptàºrptp‡rà:t€w@w@w@w€w@‡r€w€w@‡°R€‡rˆ† |Ž~pFøÍßT‚çØ|È‚[(K(…rptèVøti ´yxƒÈ„Ø€è€L8UèZp…G€†K`‡K‡KXW …P0K˜€LP€h …Pp…È!K˜…@… pˆep.`„@X:hw°!І( Ø!€.àM¨‚&øp€s¨Jxw†^ R…P8ƒ\`þ‡\ „@TˆxÀ!w(t((ää@w€‡rt¸wPPtà:upsÈ‚5(u@‡‚€u8»|q‡rPw(w@u€‡r(xÈw@x(w(wPw€tp‡r@w(w¸w@xÈ(xÈxÈx@x@x(xÈx(w(t€t€‡|‡|‡rp‚t€tp‡|‡|‚‡rpt€‡rÈw@w(wÈw@w(w€t(ˆrp‡rˆ"€!8†P8è„P8 …P0O˜ pT(w(wþ(w(w(w((w(w(w((w(w(w((w(w(w((w(w((x(((@(wPtpW†6€‡rtpt€tpt(ˆrptˆrˆr€‚‡rp‡rˆr@w(w((w(w(w(¸w@ލ„R(x †Ý|GX«µÚxŽØaPOX!°RPtp‡ap…?è~à{àzxƒW`!€€X0T€W …>ˆW B8BXþZp…P0T€"H8PPP0ZÈP5ØàO0U€UÀwPqP†.¨'È3pu0K@‡<09‡RP‡rØ‚?0tpƒ,ð…`p‚jð‚*˜xè…^(œ^è„K8‡K O`€R˜®C@‡rptP‡|)x@w((@wPt@äˆr€wP(u@wPwP‡rP_wP®Sup‡r@@uˆrp‡rtPß‹€w((®+(w((w((w(w((w(®+w(w(((þ‡‚(w(w((((‡‚(‡³+xp‡r(ˆrˆrp‡rp‡rt€tp‡"˜!8L0<à€  U87HèWpt(‡‚(‡‚((‡‚(®+(‡‚(®+(‡‚(®+(‡‚(®+((‡‚(w(w@(w(x(xPwPR†6((w@‡rp‡r€‡rp‡r€‡rt(xp‡rp‡rˆrˆrtttptptptptptpxptpt(K@up‡h˜Zè 4kîU8Bþƒ!°Tp‡r@‡a &hKhKhKxT …3^WX…3vT T@W …>ÀWJ Zp½AZ@½q…U †3¦…UXZ8ã^X½YZ@ZXpÈqP‡vƒ58ju É—‹P‡q(¸…aä:u(tèbpZ@Zp…P „P8c/ … p‡rp‡rpuxP®+upx(w€tPw@Èx(x@x(tP_w€w@x(wPt€‡rP_u€t€‡‹¸ttpõux(@wPxpä(x@x@þw€tˆrp‡rˆrp‡r(ˆrˆr(ˆrp‡rtp‡rˆr(ˆrˆr@((‡‚(((‡‚(w(w(w(w(w((w(w(‡‚(w@(€‡"˜!p…ÂAZXZpZ Z˜ç xp‡rà:p(ˆr(ˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆràºrp‡r@xptp‡rp‡r€‡rp‡rp‡r€‡rÈT9(w@‡³+w(‡‚@‡rpx(t€‡rˆrtpx@w@w(þw(w(‡‚(‡‚(((wP!¨„J@h æ©í‡çè‡ç˜E(…‚èZ8cTp…™çÂA½¹ç`˜gZp…Gˆ†{F…3FW …3¦W(aðœÍq…U tp‡xPtptpxp‡rP‡|¹upx@äx@‡‚@utbèT8cZ@Z Z@Z€‚Rˆ(w€ä@dnp‡rllàpÀP/qupøPdžounpõounøqq‡o@qpøpÀpàP/PÇpàppÀ†ounÀpþà†oàWÿPÇnlànluqçpÀpÀPÇPÇl@lulqlllulunÀPÇPÇnululxql@lnuq‡†y@T†`X…{.…`pt(@‡r‚xZ˜gW@ZpTp…Íq½qw@xÀ!xpr@x@xÈx@xÈx@x@xÈx@xÈx@x@xÈx@xÈx@x@xÈxÀ!x@xÀ!x@xp‡rptptpx@@w€u(‡‚(a0x@w(þw‡‚(x@‡r€‡rˆr(t(ˆrp‡r@w(w(@x(xx(xptptptptpxpt˜M x(‡hrx"4x"´"°„M@up‡^@T8ãÂayá÷œGÀ†UpT –§WÐW …3¦T WXZXW …3¦WÐW@…rPtàºrPwPwPw€u@uxxkw@wPwPx@w@Žrè…aЀpEËA‚¨¼ Š»rðʹsŠûéëg±^E{?‚¬g±ž¿Šõ,ÚKYï#¶Šõ*ö³h¯žÅzþþ@Ö©³_=}õüéûWO_½õôÕÓWO_?}õôÕûXO_½õôÕÓWÏb=}õôÕÓWï_=}õôÕÓWï_¿zþôÕûg¯^Åzíq³o)UdÏ<ýèO?ðÌ3=óôÓ¡=üÀ£=óè“’>óôc>üÀ£öèÓ¡>ñ ãŽ:ð”Q9å¹£:å ãwè”:î¨ã:ê”O9î”Sž;èi>öècO?r 2A9î ãN9ð”:ö”OyîÄãÎ<ñÄ¢ð(<ñÀ3<ñÌÏ<΢ó4ÚhŒñÀ4ðÄ3O<ð¸Ï<ðÄÏ<ðÌS<óÄc<ð4 OŒðÄOŒóÀ£hŒñÀ3O<¿Â£è¯ðÄóë<ñÀãì<ðÄ´ó¸3O<ÎÆO<óÀ3þO<ðÄOŒñÄ6ó¸ƒL<î(‚ 6Ѹâ}ð”;EÄ#„=óèÏ<6ê“REðècO?óØ3=óØ3=úÀó«=1Ú3=óØ3OJÎÚ3=óØ3OJÎÚ3=óØ3OJÎÚó«=×:kÏ<öÀcÏ<£<)õÂ])ИáN9î SNDèDT:î”ã<åÀSNDå¸SŽ;å¸SNDèD„Ž;å ã:åÀS<î S<åÀS<îÀã:3l‚Š:îDc!…Áã·„:l‚ :åØC}­©C<åp9wô©ƒŽ;åD„NDå ‘:èDDŸ:è¨CŸ:訃NDî þ£}êÐç<è¸Ã]9î ã:­•ãŽ:qçŽ:î”ã:ܹ;å¨Qk긣8}’«ã:f 2;åDTŽ;å¸Ã>îÀ³:<•QyîÈ<ñÀã<îÄ㎬Á³zyîÀQyîÀÃØ€GDàáx¬Îñ€Çêåx4Âðˆ‡¬ÜÑx$ÐðÈ <2wÀcuðpG<à±:x¬«ƒÇêàáxd0"ðpTAôþ;%l:¨ƒ=¸}ШC#LDÀ!˜ƒ¬A94Bˆ‚; ƒ*Á'¨:ŒC"A9ˆ‚ ”ƒ*d+¸+Á'˜ƒlA'Œƒ9Ђ:ÀCk°—:À:”ƒ:¸C9¸:”<¸C9¸C9ˆ£:¸ƒ:´:¸ƒ:¸<”{©{•ƒ;”{¡Àƒ%”*0F0ôB0”{•ƒ;Àƒ;A<A9¨Cí&{•}¸C9 Ã{•ƒ; <”ƒ;”Ã{•{•ƒ;”C•{•ƒ;”Ã{•{•{•Ã{•C•{•ƒ;”{•{•ƒ;”ƒ;”}¸:°W9¸<°W9¸C9 ƒ;´†;ô‚: )ƒ”ƒ;”þ{•< {¡C9¸:¸< {•Ã{Áƒ;À7Àƒ;”ƒ;”Ã{•{•{•{•{•{•Ã{©ƒ`w@CRNˆ#0B$0#8ÂDÈÜCô€¤À XB)¸:؃:ă9d`Â6Á6;p'P‚Ø@-p‡;|ƒ9x{™4@ÃTƒ;¨ƒ ˜€ƒ ¸6¸ƒ„C C ¸3@Ã8<<”ƒ:¸w¸C9°—: ƒ; ƒ;ÀC9¸ƒ: <¸C9°:ÀC•<”ƒ:”<”{¡ƒ;”=34D4Ð340C4@ÃùG4ä¹ÁrC4þ@C4lžC6à93´aúÐ¡Š† :…Áʹs‡Î:xEà)箜;u˹+CtË9DÏ]9wå–sè®ÜKp/Ë9,÷ÛKwåÜ•{ N§»rîʽ,ç°ÜËrðйC§]9wåÜ•C箜:wêÜÑB玔09å^*t¯œ;xåà¡sWλrðâ–ƒ‡.n9wàâ–sW.n¹¸îʹ+ç®Ü`wåÜ©S'¤R%ÇÐ A°|sfÍ—gX*¥Î=uî •† ´hذEcV[4ÖØ¢E+]Û44fÑ E›-4l¦£A‹Yéh¥™A‹–»43èÓ¡GÃþF5´h̸—f ÛtlYPE(O±:xàú©‹Öï_ü~óO¥k¶+]+{ñùÇï׿¿~þÉã(ü§Ÿæë§¿~þ™¿~ìçŸ~þé§¿ÿé§¿ùøëçŸ~쯟ç;p¾þæ‘¿~Xü§Ÿæ‹O{Ô)…hXÇb‚§wÊqGˆx„€šÚ aIhjkÊ(¥œt &˜U‚&˜UàùR!xÐxú’x‚xB…àys0tÜAÇ…âBÇxÜ)žràQÇxzqGT„i£wÊŒ›¸Êq§wÊqwʬwЉ«xÊùxþÜAÇxÜAÇtʧxÜAÇtÜAÇxÜA§KH§œh ¹€Øb‰µŒXˆÅ$c/Â’RÔAÇwÊÀùþ釿ÿY0¾ùìçŸ~þY°ûù§ŸÝ}—¿~XœïŸ~ìçŸ~XT• Ü)'.tÜ)púšøúù‡Ÿú‘$<î$]âsc~žÉ‚›}Y›,ÞQEøaåž*þÉc~쯟ú鯟ü§Ÿúù§Ÿæ°ŸÐ}9¾~þéçå~ø›ïŸ~âëçŸû[0¾~ú›ïŸùþY0¾~âë‡hqôq•h )tÊÆrÜA'®þrŠp§ˆæû§þú!šï¾ùÃÆ^¾Dçh°AÅrÜ)'®rÜ)§œ¸Ê‰«œ¸Ê¬œ¸Ê‰«wÐq§wÊq§œ¸ÊA'®râ*ÇrÜA§whQT„1wÐq§wà)žrstàA§xÊq§wÐq¸Êqrw w§ÅÊq§wÊq§wÊqÇ1!*)EtˆId3ˆEdDn(ÄB.»A‰ ˜¡RÐqçKîø†*âÓUħüé‡*âÓ¿¨šÏ|þÑôãDëGãÓ ö£oýèPrÀî(<⎔#ýàO?â#‰]þÜ’HÇ)ú‡ZÀÃ'à‡ îk ÀjèÁ2l‘ˆä# p¨…-Ñ7+^‹WìÇ?æ“Eþô#>ý Z?¼Ø·~|Ãî E4°Á n€Ã«PL9àá!ÄCeìÑúñ þq‚ÿ<‚1w”܈)ÜQޏ”ÃåPL9Sw”ÃåˆK9âRw”#.åL9àQŽÁ”î@‡;Ôu Ãê@G0СWCæ ÇðÊáx”î(8ÜQw”î@G\ÊáŽr¸£î€G9àát¸î@‡;Ðát¸î@‡;Ðát¸î@Ç 6AЏþ£ À<çi,âì868á‡B\Àø@!,3K Bî°:ÔÁ#ħå Z¬Øô£Œü™O|úŸ~üc>ÿ$æó~üc‚ÿè€ÙøôƒhýøÇ|âÓøô㊠Åâ‚w”c0âø‡;°Ÿ~üƒñ‘D:N!‰d4£ÿ8B?þ‘*è£÷ÈB>ªp*4¡ìxBò…#¬¡ ÂÈèZÙÚV·¶Uöp*¢Áȹ#è€G9àQt¸£ñBúñ~ü£¥ñdûño £óp‡"ÀRÄ¥ƒ)‡;À—r¸£q)Ç`Ê—r(¦þî@<Êw”#.èˆK9ÜQx@nxèè…:Ê a˜!.å@‡;Êr¸î@<Sޏ”Ãå@<âRŽÁ”ÃåˆK9ÜQw”#.åˆK9SŽÁ¨CŠ(…c¸¡,€úÀ€e.F°ãò`G-jq8â…pD"LQ„Jê°‡:àŽ&@!ÒèÁ= #üÃYH@?2ÚaÄñ¡C)"Pw”Ãê@‡;à úÐÇ?ê¡ø¨ãéàG3vŸnœ` ÿÀAžp*Ü# ùÈB iôàYèFÌÀ‹~XËYÖò–¹Üe/Ãþèp4XŽr¸Ãb„"xÎÿ‡:„K €Æ*tÀð@<ÐtÀC!_â<Ð…ÀC!ð@<ÊáŽr Ãèp:àQw ÃèpG9àát¸£耇:hw”BrpG9àQx”#.åˆK9ÜŽÁ”#.倇;Êát¸ƒèp<ÊrÀ£ð(<ÊrÀÃèp:ÜŽrÀÃèp:t` R £Ð(Ä ° \À2–A„-ʈBÜ;p ሠ@@Š@…cìQu|£ý‡š,ôãù¨B?vg‹_ã}þ›OP1¸ #.è(<ÄñyÌ'>ýàO?ð±‹S4ãóùG?ø3Ÿøôãó9ÂÿñÇŒÿèAײ8ìQT ÉèpG0Ür¸£q<„ t¾õê<âáÖDq ’‚¤``IÁ@R0°¤` )H F“è lÐîØ`’‚w@´@‡;\! 3 ¦ð(:Sw£è€G9àQw”ÃèŒ9ÜQޏ”#.åpG9âRw”ÃåpG9Sw”Ãê(‚%J` €À °\_PÃ,ˆ?‹XÆ(„#B°„"l‚ð@þ‡=ÜQwô@¶DîQ…4á'ø‡¬^~󿌫ˆ<Êát FØøG?âÓ¢Íçeý°¢*ÎßÿgüìÁH5ÀÊÁ\ÊÁÐÁÐÁŠ ŠàÿâCÔaæAʸ!P¡‚¡æaìç!HÐìáíaVpVpìaâáIÐà!âaâáãááaâʡܡHAÌ .Êa0Êʆ§ÜÜÊa0Ê!.ÐÊÊÊÜÜÊÊÊÊÜÊÊÜ„ÀHÁà þ. Þ..À2–—À à À @ "± „@HAàaâBT¡TaVáTážA¡SñâúPaà¡Ü¡Ü¡Ü¸ÁüúAw‘¤ÀÁР5ÀÜ!ÜÜÜÜ¡àAR‘Ü!ˆ!VV6hAâvv0àaáÁáaáaáÁãæ!ãêqÊa0hÜ Á ÜÊÁÐ!.ÐÁàÜ¡£Ü¡ÜA!Ü¡â¢Ü¡Ü¡Ü¡â¢£â¢£ÜÁ1þf JÊ Á2ˆ%Þfòf”Àâí `,Ü¡ìàþ¡â£âc>øc>zÑ)±LJaÊ!.ÐÁàÜ¡l’+»Ò+¿,ÃR,Ç’,ËÒ,ÏÒ+“ Ü°¸ÀÁ\ܡܡ܄ Š û¡ÐÁô¡ø¡ü¡ ‚Áââ†Ç2.S1àÁÐÁÔaàÁ1à¡ÜJAäÜâ¢Ü¡ÀÁà¡àâ¢âÊ!.b0Сà¡à¡àÁÐÁÐÁÐÁÐÁÐÁÐÁþСà¡àÁС,ܘ¡. Þ.. Þ.À2.€+/„ HÁÐÁʸáúá)÷ÓËúáè &ÊÁСã.@Æ€A´XD J@ Œ…B)*C3TC7”C;ÔC?D?Ô2Æ`ÐXƒ Ç‚A1ÊÁÊ¡àARÐâ!.Ð!ÜaÐaàÁÁfÀÊ ç §@L¡ÐÁ1£ÜrÔ¡Ü ÐA”Ô¡ÔÁ,Áà¡àâ„Á âÜ£â¢ÂÐÁÊþ!.Ð!.ʆ§â¢Ü¡â¢â¢â¢£Ü¡ÜÁ1„ÀPÜj¡áÞ:ÕS?Tïm,¡âbÜ¡À?WÕËú"ÀÐA1.` h!r5ÀÁ2DàÔ¡v ,ãâí¸òn-—•Y›ÕYÑ’X’@ܘÀÐÁ\A!ÜCâ¡*°Ð!ìÁÊ!.Ô¡zÁˆÁÐÁÊL jœ à¶AÌ¡|œAžNÀŒN >¶ < LAIÑAIËaСÔ¡zÁ1JAä þÜ¡âÜââÂÊÜâÜ\ÜÊÜÊÊÊÊÜÜÜÊÜÜÜ„@PÁ1°a>øáúáøøc>þa‚âlÿ¡âC,¡ÔÁì!.ÀUçËæCHaâ¢Ü¡â¢¸Æ T€ôá @ÒA$a’A  .À2>า.àY7—s;-/À2’ Ð ¸ÊÁ‚ÁÐÁÐÁÐÁŠ„ ÁAæÁ±rÀÊ¡æ´Á < ` ˜À`¾þ¾ÁL! `„€` ¬A`  Žà `àÌ!„€Ð°ÊÁÕa\zÔ‚Á àÁÐÁÊÁeË!.ÊÁeÁ¡ÜàÁeÉÁÊÁeËÁÊÁeË!.ÊÁÀÁÊ!.Ê!.ÊÁeËÁÔa6Р?ú¡?ú¡?úhúÁ áf@6áKàAÐAü‡s¸?ä"ÀÐÁÐÊÁà.`  aÀúÁ à$¡î$!J¡0A na áî­,ã.` à.` à.` þà.` à.` à.` à.` à.` à.` à.` à.` à.` à.` à.` à.` à.` à.` à.` à.`lr æAP ¾ÜÁÜ¡ââBâ¡t˜ÜÁ¸À5°à!âh(Á˜€¢|àæy„@8 , „ภöÀ¸€°A`€°(á´Á´Á´þ°6¡àAÜÜAJÌÀÊÁÊ!.ÊÁÊÁÐÀÁeÝÀ!.Ê!.àÁÐÁÐÁÐÁÐÁÐÁÐÁÐÁà¡à¡àÁСà¡ÐÁàÁÐA 'þ¡â£„ˆ¦lÁ4 €Š`H¡Ü¡ÌÁÀA‡ûÚÿ&ÀÐÁÊÁ G¸áÆ€L`ô.@’Aî@Ò¡ À,£  á,ã,ã,ã,ã,ã,ã,ã,ã,ã,ã,ã,ã,ã,ã,ã,ã,ãþ,ã,ã,ã,ã,ã,ã,ã,ã,ã,ã,ã,ã,ã,ã,ã,ã,ã,ã,ã,ã,ãâí ìP! ¾¡Ü!à¡Ü¡Ü¡Ü¡àAp¸þàÁ 5 ¸Ðà6¡Œ¢a „àH¡ª5œA¸A À žA¸¶  „€¶@>At ²À ˆÁúÀúàÀÊÊzÜ¡ˆ¡ à¡à¡Üàâ¢àÊÊÁeÂÊÁÐÁÊÁeË!.Ê!.Ê!.Ê!.ÊþÁÊa§ËÁÊÁc6€( œàerAÎÀ€€ ÜAôàAüÚÒËP!ÊÁeÑÜÀÆ€¡‚Aø. Ò¡v!NA Àn` ÆÀ   À À  ¢¢¢°*ÁÊ!.h!Ä„Á þâ¢àÜ¡Ü\¶à¡à¡Ü¡âà¡Ü¡àà¡à¡à¡àÁÐÁÐÁСàÁÐÁÐÁÐÁÐÁàÁÐAÐÁ¢oæ# þÁ âc>þÎÁØ Ø€ f@HÁ1ô¡Ü.Ýí1n‚&ÀÊ!.ÊÁã ` ÊA&Hâ-$ðWÀ2n@ Ð–à””\ Êà ` à ` à ` à ` à ` à ` à ` à ` à ` à ` à ` à ` à `þ à ` à ` à ` à ` à ` à ` à ` à ` à ` à ` à ` à ` à ` à ` .@X¡ „ !Œ‰§ÎU4lÜÀ¡sÌ:wèÜ•sWž CŠI²¤Ipî‚!ÖËÕ*T›ÔõBÇ 4fÌlF‹f33h8¡á„Æ,3d6¡‹-³hÌ¢1C†sg4fÐÀmrOº^îÔ¡‚fž;wåκ+ç®ÜÙrîʹC¯œ;pîà•S{¶œÚråÜ•ã뮜»rîÊ-箜;uêflªtþÈ˘ÿA¡µ s?B¹BŸ ]ÄR)wêì—¹µë×°cËžM»¶l:¥"”ƒ‡®œ;xîÔ}»áBÁ .(Wž°à…‚Ê›¼PpÁƒ .¸`ðBÁ ^(¸à‚Á \0x¡à‚ /\pÁà…‚ .¼PpÁƒ´À]PÐtAA \`Ð-pA´À]Á,ÁŒa:¨ƒ 8Ø€ãŽ+布Ž;åÀãŽñÛ8‚Ô8è;è˜ó 6¨¨ƒ 6Ü`ó 7Ü|ó 6ß`ã$7N~ƒ 7Ubó8Ø8)7ß`S%6߈ó 7ØpSþ%4¨¨S:îТ:¥Ó†;圎Zè £ÖYè”óg9g¡S:î ã:î ã<åÀS:î S<åÀã:î ã:î ã:Bl‚ :êD[´dÖOºÄªK.ÝaI)èÀ3<倓ã¯À+ì°7öÓO¨Dðg9îôÉMAtAstAA@pAÊA°œAt 4wAA tHw 4wAA tHw 4wAA tHw 4wAA tHw 4w,Ð @D?ê  6Ü”ƒŽ;ÁÀSŽZå¸S bîŒ;Êáu¸üàG?@’Ç>‹ýÈc?ú˜Ç~èCüÐG?úØ~€„‹ýà‡±úIc„ýà$ùa¬>V² !d?øI~«Ÿ !ûÁHòÃX}ü$HÙ~@’Æêþ#óXIqèèˆ6¸Qt”#ð@ÇÝQwBX£kúxôî°„° TŒPî@dСx”Ë„<Êát¨c™ðP‡;à¡t¸CèpG9Ôx Ãê!<Êw ÃèP‡;záŽr fa9–épP´î@<ÜŽ£#,ÇËáŽr¸î(Ç˱ÌrŒ°uG9ÜQw@F–(d A¾(¢îP‡=ÊáqHó¨H VJtŒ 8úTX¤@†±þq IxUÿ€$Húñce¦­éÇeŒõš~üÃX­éÇþeŒõš~üÃX­éÇeŒõš~üÃX­éÇeŒõš~üÃX­éÇeŒuceö@G/ÜyÀcúp…;Êát¸îB<ŠTÌp£Á°GŸÀh ¢ð€Œ:Ô ™rŒ°ð `à![t¨£)‡:Fˆw¨ÃèPG9ÔÑ't@¦Oî(‡;à¡w¨£èpG)„!w”c„àp:àáp,àX&`ÜQx”î@‡;Ðáx¸î€G9àQx¸î@‡;ÐQt¸î@‡;àátÁ¤€G9¢A¾"X¢å@‡=Fˆ pxøÃ ±ˆGLâ›øÄ(N±Šþ¹ÑTL`„åpGsÕŽ¨äHv¡Žkì"§°Ç?Žð~d&÷¨Hî‘…~¸¦¯i [Ó(g†‹­é‡•1ÃÅÖôcË—áb”û‘™~\¦âÐ: bȆ;ÊáŽr,³ð‚Š÷,ârô)ópG9À n ¢è€ `Ô1Bȸ£a9ÔQt,³O#„Œ;ÔtPTË,‡;Ôt¸£î@‡;àÑ ÈBfp<Ђðp9ʱLr”c™ðpG9ÜŽ–ÃåpG9ÜQŽ–ÃàpG9bZŽ–Ãåpdf`‰R”ij¸…þ` RÀÃö@G9úav»ûÝðŽ·¼çMïzÛûÞøÎ·>äPŠ  î@ÇÕqüÑÀL?@"‰dàá’HÇ.úÑP ¢ªøÇ>\¡Š|dÁnhDÄ}™~<Êý8ùkú¡r×ô£å­éGfÀaw`#ð:°1 W î@‡;Ðá!Ä£ùNº¼çán#Áè1zÑ w¨êp‡:Üu Ãèp<Ü¡t¸CèpG9ࡎ–ê@‡:ÜQw”ÃêpdÊw”Ãåa9FˆŽrÐê(E0ä€w”ðXf9–YŠÂåpG9àQþx€î@‡;Ðáx¸î@‡;àQx”î@‡;Ðát¸î@‡;Ð!K BîˆÌ1Ã]ìC–Ø„;à1x¸£Oоô§ŽFPúæ¨D# ßˆë{ÿûà¿ø¡ïx´¡(‡;ÊáŽr¨£îÇ?Ð Ìð$’hÅ@ ‰tœ¢=P šGÐùP=UË` YÐÃ8fà`è ñàà@ Ø0 ÁPîPîP#Tð ð0~,}#„€Ñ'îèàêàè î€åêQèî ð°Låå ðPþèðîèå îPð0BåàèàðPËÔ êà® f@Qààå0Bå°Låàåàåå°Lå°Là0Båàåàå0Bå°Låàå0Bå°Lå°Lê0•P  Væ´ÐàÊ ¶ì0Š€ îPöPîÐOà6P1µŠ0àñ` P&@Qæ 00Bñ¬Ø‹¾ø‹ÀŒ½¨ðPm€ àè°Lê0Bâðî —Ñú’À^µ ÍÐ ÿpô OpÿpYÐ÷GÐìPØŽîøŽ'×Ü`ê€ óþîPЀ ®àèàèàèàBBP˜«ˆð°LË„î îèàêPîPî#ðPêPðàå0Bå0Bê€å0BèPîPðÐ'îPè#TðPîPð€ÁÐ'¤ ràà0Bð€#„ðPð€î€ðPË„åæ@î€îååî€î€î€àî€î€î€î€åî€î€3° ¤å QÖY€ ´T0†Ù € 3°¥0BöèÐ3`0Pæà€ 6>` 6 áþ`æà€ 6Ð'Ö åÐá èã 6à8 àMP²µ›¼Ù›¾ù›ÀœÀéåàð`¥0#„ð€î€îð ÿ ÌGÿÐüÐÿ §ÿp §ÐÿÐUÒ OàOÐù°ð[ð8ŸôYŸâ`ð ñàåØ0 Á0Bå0BåàEB๠Àé€ðPèPî€êàðà€±Låàêà€áêàå0Bðîèàáêàð€áêP#¤#T}âåàèàåàèР f NþààååàååàèP#Tî€Ë#TîPîP#TîP«X#T#T#TîPî BP ¥Pð@ Vý—Ñô a¨a € •@ ê€óPî`šÀ™ ÚðM`6 Û 0Û`ÚðM`0ñ° P'° Y>° YÝåÐ#„êt«¸š«ºº«¼Ú«¾Ê«î€å ¨î€å0Bè0BâðöÀE ÑÿÐÿ€»p ×Ð ÑÿÀE™a, Ñ™1®äZ®æz®èš®êº®ìZ®à`å ñ0þBØ Á@ }âèPðàBEèð«Ë«Ëèàêê€#Tî€îåå#î èPîêPî ð èà€1Bå°LêPðP«Xîî½® fàååàåå@Qå0BèîPî€åàå0BèàèàèPðPðàèPððPðPðPðàèPðPðàè0›€ êàÑp®N™ÑuÀuзWEP ¥àð`îP-RÀBpÓ` B`åBàÕ` FpÓ Bþ`#d B`'P° F`å`å`î  ê [²;»´[»¶{»¸‹»êàð`¨0ËTîPèààЗÑõýðý`®ýðõ€®Ô[½Ö{½Ø›½Ú[®ýÀ ú Ø Nè€ ÜÐ ÁSåàEEà¹û¾·ëèî î [î ååàèàèàðPîP}RêîåêàèPðàåêàå}¢#TðPîPî€îºå´ èà  îPËTîPîPî€îPîååЋåàþå0Båàå°Lå0Bå@Qåà!Ð`®ý° ãªCÐÅCp“B` ›àå0#ÔîãP ÁtP ÚP Ú}P Á`tP  î`E €`r`•Ðîà _ÐîÐåà ZÉ–|Éî€ê ¥îPîPÅ ÔÛèÚۻʬÜÊ®ÌÊå`ê ñàåØ0 ®PèàèàèàBBàêà˜¼ èê0BêPð0Bê#Tð€#Tîð #¤ðP#îËð0Båå0Bð€þðàåè0Bå€å0Bð èP½àê@ Â`#Ô'#„ð0BÔàè#Tî€îPðPð€æ@î€àåî€î€îî€î€î€î€î€î€îî€E` ¤å çÚ—Ñýp@}ú¥@ îóîPè ê¤ð}êàÐè å€ðàê Nè0B}"ê ·ŠîPî  ÙÖnŒåàå èШ0ð€ðPèàèàà0‚=Ø„=öP؈؊½ØŒÝØŽýØÙ’ýØØ`ê€ ñþàä€ Ð€ Á0Bå0BåàEàBðÖ Yî€ðàðPêîPèPîPîPîPËT#Tîáð€îP#Tî€ðP#îêPîÐ'Ë€¡#„« è€ Â`#TðP#„î #TîPî€îPËTî#TËTîîP#å0Båàåàåàåà€á!•P åĽýpýð@-–P î êTÐàaâà$èð €Qà€)þ ߨà$åÜâåàaßàaÜèÀ$@äþB>äD^äF~äDÜPÜmP àåàðPË„ð€Ü èÀ ‷Z§p Í@°f~æhžæj¾ælþ«óÀ ðàÐ#ØÐ ÄÐ'î€åî ñPH>èEŽ åp$ßÀ å0 Á@ ÁÀ «€ –°LèàðPðàèPî#„î ðàåàåîîîPîP1#TËTîPð0Bá½0B® r€åàååàåê€#„ðP#„îP#TîP#„î€î€îæ@îååååþî€îî€î€3° ¨ î ¯üB` ¥ î`è àP½ýpý@}ý€@½ïßÊýШ0#Tî€îPîöP¨ Ø Ìàí§ ýp §`oóæ ð¶¤àò4_ó6ó8Ÿóöö€ ðàÐîÔ€ P7Bå0BèàBEñ—ÑÿЗQð@ ðÐ'àÀ Ø€ î€î€åå0Bð€åàè0B€#„å€åàðP#}2B€ËTèàèàåàèàð î° êP¨ mSå°Låàåþàååàååå0Bèàå0Bå°Lå#TËTËTîPîP#Tî Bðˆ ¯Ü3 ›àê`î ÜðýýðýYPÿÐÿ€PÔãzþ — ˜Ñè èzå åzPÿ}P P#T#„îóØ€ú Ø’^µ ÉÐ “=G‘eÞ@sÐD˜PáB† >„Qâ<{öæ}³ç[î…#´¡ Ä8Â?ú±FXøàGhƒ„q„|8@fÈþÑ#ô#ƒò!þ„~ôàþ@Dªð;F¶¤Š Å‚‚Ž ”#(å˜8¢ñ~Ø#§HÇ5vaS¨6°G<8`Ž˜Cñè@8²Øãð°À8„Ø#UèA-4¡{Ì£"ö˜Ç1çqÌysÇœÇ1çqÌysÇœÇ1çqÌysÇœÇ1çqÌysÇœÇ1çqÌysÇœÇ1çqÌys‡=æ1lÀÃЈ<ÜѺaã)è(GP„!4Ò¡Œ,:zw ãLBE4úP}ôCå?ôÑòCýø¨>ú¡~„4¥í?úÁ}¬±¤úèGHû¡þ~€½PGPhR£ O)‡;Êñw”Ãè(GPÐát<î(‡;àQx”ÃåpG9Üw”ƒ©A)‡;Ê”r¸£î@‹*Q ´@ãwNè‡^ÒI„Á¯a  f` RÅèPG9úñy4°xªÐxGø"Ö°…,€¢ _ÈBø‘‚N´PhÇ äÀ€{T¡°²ðŒ˜p€=þ±(0áÏÈxÑ„p! jø‡²À 8@\È‚þ±:$àU˜F?ÊH9¬"åJ9àQŽ €cÜ€GIõñ}Æc§„$¾1{þdóFnP˜Aû¨„=<b8Ïnè„'ìaŽRØkØç<ì}Úû´<öixìÓðا=à±O{ÀcŸö€Ç>í}Úû´<öixìÓðا=à±O{ÀcŸö€Ç>í}Úû´<öixìÓðا=à±O{ÀcŸö€G„+anèCÑ€‡;ÊÁ¤a¸Âè(GPÊáŽ"Ä£Û…3LÀ¡ŽaÌå7˜áŠhÐñô>ã1@Ð6t<æyzñ€Ç< =@ãñا;* x EèPG) aw”ð :Êt0þî(<Êx”åpG9àQx¸£A)‡;Ðát”î@G9àQx¸î@‡;ÐátÁ¤€G9¢á»~8a´xI?ÎPr×€€0Â"J{¨ÃàhÉÿÑ–¬‘wklÉÿÑÞõãýhI?ü[$b-é‡KÖ¸ð5¶¤.YcKþ’~ü£ÿè‡CٖЀG9àQw”#(ܰGùÝõè“ Á h0Ãă=Üw #î4:âx<Åñ€G<ˆäŽx¸€F Ÿw #A‰GPÐxT¢è@K/ÐáRà OAG9žRw”Ãä0GPÊáŽr¥î@GPʬ¸®w}9žRw”Ãõåp‡:„P‰R”Äø]VÑ—ôãu@Ô@˜J …r€‡ypxÞ釗èÊk‰~Ø0ƒ5à‡É[£èþßY#—è t(E@…(‡§@x@x(‡y˜‡c:&x¨ˆy€‡Š ’Š€‡ŠpA{€{˜{€{€<¦y°x˜x˜‡Š€{˜x˜x°x˜x°x˜x°x˜x°x˜x°x˜x°x˜x°x˜x°x˜x°x˜x°x˜x°x˜x°x˜x°x˜x°x˜x°x˜x°x˜x°x˜x°x˜x°x˜x°x˜x°x˜x°x˜x°x˜x˜‡z€‡y¨x°h hˆw(p€†`p¬(xÀ x‚xþ(Aqp‡y Cl{psØ(˜¬Pw ´p‡J‚"˜^@ u@‡qDup´(Vpu@w@‡qtt u …^p¬wPT€3€‡rp‡r€p€w(x(‡ €tp½rŠrptŠrŠr€‡r€ppt0rptptptptpt(tpxpt˜M@up‡hð~Ø~øMàIMx…W…,°„R(w€‡rp‡oè‡`ʦtʧ„ʨ”Ê~`Ê~Ê«dÊ~ÀÊ臭ôJ©ì‡PR˜x(w(w(w(p¨þ}€Ë¸ä¸ä‡¸ä‡ˆË~ˆË¸¬~ЇZ£½ÜË5ŠËz𸬀Ëz𸬀Ëz𸬀Ëz𸬀Ëz𸬀Ëz𸬀Ëz𸬀Ëz𸬀Ëz𸬀Ëz𸬀Ëz𸬀Ëz𸬀ˀËzLp°w€†x€whdw€‡rŠrp‡"€!ˆÊò4ÏódJpp‡zpux uènƒy¨…gàspƒ*(€‚jŠmnð„"èspƒ'0‡-èƒJ(7Xƒo`'¨†@… €‡rp‡rp‡r ’oøu@…¡ZfhÊ]ˆ¯S(‡óì‡0•Ó™…Ú¨}Tp˜u€†x€‡ràh†`@‡ (w(w(x©}JnPþ{à&ÁnZ€:ˆln #€(pK€l‡oà[‚oH!`€m˜n°o°†€*p‚G€ÖÉnø†oÀpÀn@‡JtPx w(T€3ptpÓrp‡r€‡r€‡rŠ¡Šrpt(‡§(t€‡r€‡r tptx pp‡rxŠrxŠ¡p´‚J(…r€b€Y!¨„R x(wà´ßñJ:@… t€¬(w‡@hS9å¦Ü…t¸†]P‡S˜‡èô”SòàFOq°uÀ†xpxlWp¬€t€þw‚x(.w€&·¥…hƒxà†7˜P8".‚jÀ†o؆ˆØ‚ˆ#ÀPà0O0!.˜f‚Xƒmp‚m€‚m€‚o(‡M w@‡rèxp‡R9 t(t txŠr€‡rpÓrx tp‡rxŠr€‡r€w(w@w@‡rpx(xptptpt(xptpt˜M@up‡h`T[€d[臘K tp} p àNŽÙ~ø‡~PR˜w(7 Šoøwˆ†¦ì~SIh<¸IH‡SøUh„`X…þ`…}@9¨O&æbF{€hˆwjÀ†a† (w(w(‡"€!`tp}p&W`9ˆ‡Ö‰n€†hhnˆ†hà†hè˜xfp[nˆfØ)€†hÀ†Ö‰hÀnˆhˆnˆ·EKè… @Z@u(b07-w(x(‡§@w@w(w@w(w@w@w(‡§(tŠr tp‡rŠ¡p‡rpÓrx u‚¹B h`T[Sk…E(wP{@w‡b†jG•Tˆtp‡rp‡rp‡rptøu€§ì¦”„V¸þ„t8…èiȇ*ø&¸èˆê»ß~x(h˜‡ (hW(‡ (w€w‚x(òílpp …ÉÞ„J°Kˆ9€‡vælhˆf`nàìhàl`†ÑŽfp†"Èdp[fˆhàl&†h€†v††oØ„`Ptp‡^pq(…`hwx(x@‡r t(w(x(x@x(xp‡rptptŠr s ‡ (w(xpt(xptptptptptpt(K x(‡h0Ïÿ¶iàsè[(K u€‡y pøï‡þð—ð §p—ÓPT˜€ (w@x@wø†~p‡hpJ~`JIH‡øJ†]¸†~8‚ȇ*ø‡#¸‡,ø‡#¨ðçñ÷ñ‡ÊrÐw€†xp‡rhax(‡ (‡ (x pp€Zˆu€pà†h(nhw@b@ÐFf@d hHsd f@f h f f hb f@f@f@hHshb€f@q¨„`@up‡^ŠR3xŠrx tpx(‡ (w(w(w ‡ (w(x@w@w€‡ (xŠrp‡rŠrŠrþp‡rŠrx u‚J(…r€bØñ~ˆ…i^È[˜J(x({@w*Çöl×v§”T˜¬€tp‡r nøt ~P÷zÓP‡]H~¸†]è‡è¦Ä9`€{€‚~è~Øö€øoÊ~{Ph w(hW(xÀ w@w‚x(‚wJn(‡a€t(‡oÀ†h@l@…^†”ï…^†^†`Zàó”ï…aè…aè…aè…a`è…`Hù^†^†^†•†^ †aXùa@l † €‡^Pw@atpt tppp‡r€‡þrŠrxŠrpÓrp‡rptptp‡r p€‡rpxptptptptptptptpt˜M@up‡hØñ~P…i†É…"°R {€‡r÷üÏÿ9ýE(… ŠrxŠrppø}S§ì¦´‡]8…fè‡è¦œ_9ý‡~ýßþ{plˆxÀ†ràd†rxŠrŠ"€!ýr€‡a°K(˜l@uà†^Ø„JØ„M¨„òŸ+R(ÿòŸ+RXÿò¯„M¨„RXÿJ …M˜«M¨Rxÿõw…auðÊÁ£¥+amÜ•sWÎþ:wÝ¡s‡nb¹‰èÜ¡›XÎ]9wèà¡“ˆÎ]9wå$–“XNb9‰å$ªR©’:uÐþñìéó§ÏLÒxÕš¦Jˆ¥MîÐÍ+çŽШR§R­jõ*Ö¬ÿä šPNb9wåà¹CGµZ´Zײmëö-\žý¸ÙS-ž;xܰõ"¯œ;tîй¯HÜ«ØÊõŠçN€>ÑP¡+O"àÁ ?`¡~À‚Üa+ØcF5ª=¬`£Âcð C=ì1wÁóhðqÔ­rµ«^ý*XÃ*Ö±’µ¬ó°< aw@#¡6† ‰”C"åpGàQ“ò5¤å€‡:Ü¡t¨Ãê(‡:àQuàF"ê@<Üt¸Cî€:à‘wàF‡;pSwàèP<ÐQw|ênÜ ‰¸Bm@‡DÐáx”C"åþ8$Rx¸7î@<ÊpL¤ð(‡DÊ!‘r¸£ðH9rV‰”Ã9B%JQxÃãX…8úa YÌ@¥pG9æQw”ÃP‡9*ŽF„"‡0‡Öw´@¶0B#ÔaŽJ4bB0Çò sô–¾0†3¬á sxÃðpG9Ì€Š¸£AG9àátÌÑøG=ÐÂ{@ #(´`T+!Ž0F ¬` +ƒs CÉA{#V ƒ1b`S`ï ÃX³¬å-s¹Ë[¶6ìTCÁ Å*há tÀÃè(<Ü!„xÁ¾þ3†Ëu”#'±¥;ʉÀÃê@‡;Êx¸Cð@‡;ÊáŽr¸Cèp:ÔQu”iœ;Ðx”Ãê˜<Êáx¸Cq…mH 3¸î-<ÜQŽ×¡£¯+‡;Ðáx¸£î(‡;àsÃèp:$R‰ Ãè(<Êw Ãè˜Á&P¡wDlý@Ç ²Psl£–(…Dô!sd~؆àƒq\à%Ô w´@ø Ü1#Ø`Yà'(!„q<¢¯¿8Æ'RuHÄ ¨˜€DÊ1‘r¸ƒðG4zÒ~Ø£~Àþ̱ЅyØÃ ðx¬02Á ä <¬0x¼ƒ ó°B<ÈA+ÌçVˆ5æzÌ£qõ˜Gãê1ÆÕc«Ç<Wy4®óh\=æÑ¸zÌ£qõ˜Gãê1ÆÕc«Ç<Wy4®óh\=æÑ¸zÌ£qõ˜Gãê1ÆÕc«Ç<Wy4®óh\=æÑ¸zÌFµ7æQb¸åøF4¢ w”c"åpGâ!„ŒóµîP:àu #'ð@‡:Êu”Ãèp‡:$Ru¸£î@‡:Ü¡wÀC‡DÔxàF)‡:$bx”Cè(:þÜQt¸£îP)„!‡rÀ#gèp:܉”C"ð<€ƒD”ƒ;”ƒ; < ƒ;”ƒ;ÀÃD”ƒ; ƒ; ƒ;”ƒD”ÃD”ƒ;”ƒD¨ƒÜDN@Øô;üÀ ôA=Ôà ()”<ÌCã€Ø@„ƒ ƒ „ƒ¸ ˆƒ5<¨C  ƒ-< ¨Ã6 lƒÀ@9lƒ ƒ;À:À:À:À:À:À:À:À:À:À:À:À:À:À:À:À:À:À:À:À:À:À:À:À:À:À:À:À:À:À:À:À:Àþ:À:Àƒ:Àƒ:¸ƒ”B¸C9Àƒ; C9Àƒ;”ƒ=p4øD?¨C;pq ¬@-؃ÔÃ;ÁÌ<¬ƒ ¼C Ôƒ=èÌ‚1ðÜ,Ô9XA=4̃̓̓̓̓̓̓̓̓̓̓̓̓̓̓̓̓̓̓̓̓̓̓̓̓=̃=ÀÃ<À6Ø: C<”:€4 ƒ+”<¸:¸:¸ƒÄC < < < < < < < < < < < < < < < þ< ƒ;Àƒ;¨C9ä„; <”ƒD¨ƒ;Àƒ; ƒ;äD9¸ƒ:ÀCΔƒD C9¸:¨C9À:¸ƒ:ÀC9¨ƒ;ÀCNLD9ÀC9¸C9”ÃD”C㸃:ƒ: Ã*ƒHD9ÀC9¸C9Àƒ9< <¸:€ƒ; ƒ;Àƒ;”ÃD C9HD9HD9¸C9¸:H:¸:H:¸:¸:¸:¸:¸:%<”C4ÐJ¬ôÃ?X‚(‚0ÀC=%”B9 Ã<¨:x6€ pC ˜A˜ƒ(œ@ |:¸C  " lƒÀB0lƒ¸C9þ¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9À:ÀC BÀƒ;”ÃD”ƒ;€ƒ=€ƒ:ð?ôƒ>ðÃ<À?,ƒ`Á ÀÜ<Œ‚>ÔÃ(ÔÃ4ŒÂ;ÄC‘ ƒ>ÌÁ(ŒB=ÌHÃ(ÀÃ/Ì>Àƒ=<؃QÁƒ=<؃QÁƒ=<؃QÁƒ=<؃QÁƒ=<؃QÁƒ=<؃QÁƒ=<؃þQÁƒ=<؃QÁƒ=<؃QÁƒ=<؃QÁƒ=<؃QÁƒ=<؃QÕÃ<Ø<Ø<`ƒ>¸2̃ôA4ƒ;¼¥D”ƒ;<;¼¥;”ƒ;”ƒ;”ƒ;”ƒ;”ƒ;”ƒ;”ƒ;”ƒ;”ƒ;”ƒ;”ƒ;”ƒ;”ƒ;”ƒ;¼%:H„:Àƒ:¸C9¨ƒ; ƒD¼åD4Ž;¼%:”ƒ;”<ØÆD|F9¸:¸C9H„:”ƒ;À:¸:ÀC9¸C9H<”ƒD¼e9ØF/¨C9 ‚0´; ƒ;ÀC9H:¸ƒ9¸8¸C9Àƒ;”ƒ;”:ÀC9À8LD9ÀC9Hþ:HD9¸C9¸C9¸:¸C9HD9HD9äŒ:A%”B9À1Èf¬Ð"¬Á ¬/¼C(*H„=L<¸:”ƒ; < C9¨ƒ;Ø<¸:¨C9¨:H„m¸CNØÌC=þØC=ÁCÁÃ<ØÃ<؃>dQ=èÃ?èƒ=̃=•=•=•=•=•=•=•=•=•=•=•=•=•=•=•=•=•=•=•=•=•=•=•=l•=̃=̃=pÃ<¸4ă;(€%°1 <¸:”<¸C¸ƒäL9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸C9¸ç³>c‹D407d*L€;”CÎØ8xÑ<Ø<ØÃ<؃Qe< <€U<<Ø<̃=PŽ=•=XÎ<Àƒ=ÀÃ<Àƒ=ÀÃ<Àƒ=ÀÃ<Àƒ=ÀÃ<Àƒ=ÀþÃ<Àƒ=ÀÃ<Àƒ=ÀÃ<Àƒ=ÀÃ<Àƒ=ÀÃ<Àƒ=ÀÃ<Àƒ=ÀÃ<Àƒ=ÀÃ<Àƒ=ÀÃ<Àƒ=ÀÃ<Àƒ=ÀÃ<Àƒ=ÀÃ<Àƒ=ÀÃ<Àƒ=ÀÃ<Àƒ=ÀÃ<Àƒ=ÀÃ<Àƒ=ÀÃ<Àƒ=ÀÃ<Àƒ=ÀÃ<Àƒ=pU=6ÌC9C<¸ƒ8|C4 C0¸C9LD9¸C¸ƒè3fß33Ì3:¨4ƒ0Ã*Ã*<”ƒ; ƒ;¨ƒD”ƒ;”ƒ;”<”ƒD”Ôƒ>dÑ<ØÃ<ØÃ<ØÃ<ØC?̃>Ôƒ>D¿ôO?<èC=èC ÚƒôþÃ>ÀC=èC=ØÃôK=H=H=H=H=H=H=H=H=H=H=H=H=H=H?@ÔÓ7°Þ@}õ Ö3XÏ`=ƒõ Ö38q`={áñ‹ç.˜°`ÁˆõM;pîÜ•s'^”îÔ¹SçN;uîÔ¹SçN;uîÔ¹SçN;uîÔ%Uú’ºaðÔ•ûö *”åÜ¡ƒç®œ;t(Ë¡ƒ‡e¹r(˹Cç®ÜK”èà•C‡e9”ðÜ–s‡Î:w½æ¢fÆyu$T§wÀAg˜y* AÅtÜ*ÇrÜ)”Êq—à)¥rÜAÇ­rÜ)ÇrÜ‘%tܧwà)'¼^ÔáT£ (AJÐQ””Ãå€G9àŽ—”%è€þ:ÜQw”%ðpG9àQx€%à@I9PR””ÃåpGR„P‰J$䲡-ph‹ÛA¥@ :Ž”Ãî‡l`nØâî(‡ N€Š ¸£-ǃ†áxX¢<Üw C)îHŠ;Ðát¸#)îH <ÊtÄÃêø(<Ôt€4)ðx:àñ uÀãAê€ÇƒÔ©R<¤xŠ””¤å@G9@Z””%åpG9Ü‘!T¢å€1r“nu㦶/ö± [¡¤p‡:ìáþ³ Dè0G#ŠPqh# }¨D#ÌQ‰r¸¡•0‡²p‹F$ÅæP+Šx¸Ã¥(G#Üá‰,Ün8„:Üá‰,¬ÈÂÜá†C¸ÁpB5<‘WÀ£æØ„;´ñ:T¢ê0G)ÜŽF ÃYXC9¡w Ãn8D#ÔaŽM4Â^¨7ÔáŽFl¡@‡;àQÒ¢}€ÌB p€£àp8ÊtÌfñ;ßËñ w€Ã,à(8ÐÁ ¾ƒÃ,‹ç{9æn–¹›eîf™»Yæn–¹›eîf™»Yæn–¹›eîf™»Yæn–¹›eîf™»Yæn–¹þ›eîf™»Yæ^pßà6¦26Z€ƒP7ÀÑ w$¥()‡;Ðát„´ñB9ÜQw”ÃåpG9ÜQw”ÃåpG9ÜQw”ÃåpG9>Š””èpG9ÄQŽ` ƒÁ …+PÁà¡ôš ðç!ÕÁÊᣂÁÔ¡„AÐá£ÊÁÊÁÐ%ÊÁÊ%ÊÜP¢P¢ÐÜP°á£ÌÜÜÜÜÜÜÜÜf`PAÜ!Öm q£b!¤ÈÁfÀHA` %ÄÁ’Â,à¡Ð¾þD)ÐAÐÔààÔá£`))ÌÐAÜAÐÁà¡` ÔÁ’¢Ê!)àPBСÜAà¡> ÐÁÔ¡’ÔÜ¡ÊÁÐÔÜ¡$¤ÔáAÜáAÚ &ÀÊÄÊÁh¾AfĦâÆ&±°°Æ°°‚ÆÆÆ¾ÀÀÀÀÀ!Á!Á!Á!Á!Á!Á!Á!Á!Á!Á!Á!Á!Á!Á!Á!Á!Á!Á!Á!Á!¹þÀáÄïÄVÁ°À¡> >ªÜ¡Ü¡Ü¡ÜŠÀ„–ЖàXXXX` àÁЖÊÁÊ%Àìa(ûAúÁ¡zAHj¤àâ¡)A âÁÐ!>Š%á%HÁ’zÔ„Á à¡ÜP¢P¢à¡à¡P¢Ü¡ÜP¢> ÜÀÁàÁÐÁà%ÊÁÊ%Ê%ʤÊÁÔAd()  -3¤¤AbA¡à¡ìÁàÜ!)à!)ÐAÊÁ’”ÂÐ%ÐÁþÊAÊAÜAÄïPÊÁÔÐAÌÂÌ í£ÊÁ’¢ÜAÜPà¡ÜÔÊAàAÜ!)>Jà%Ê’¢ÐAà¤àAP’BPaÐá£ÊÁàP!alhA±´@¡ al ¡@4¡¡A!4B%tB)´B'tÄÁÊÄ,h°¡Æ‚ÜÁ,àáAÜÜààÜAà¡Ü¡ÜÁïÜÁïÜÁïÜÁïÜÁïÜÁ,ÜÁ,ÜÁï@ Üâ@jÜaìáfÀ”˜àAÔ¡`þ@tÀ¤Ð!)D¾¤ ÄС’ÂïÊÁÐaЖÔÜAJAäÀÐÊÁÐÜÜ¡à¡à¡>ªà¡àÁÐÁÊ%ÀÁà¡ÜÜܡܡà¡àÁÐÁÐÁСÐÁàÁС,à¡¢Á2×í72Ax¡¤!tÀHÁÔÔ¸Ì")ÜAÜ!)àAÜ’Â’ÂÔÁÐÁÔÁÔ!¤àPBСÜAPÔÁ’Â$$)Ü–ÊÁ’ÜAÐAÊÁÐÁÔ%Ô¡Ü¡Dà¡þÔ¡ÜAÜ¡Ôá£Ô¡С’¢Ð!)ÜAÜÌ &ÀÊ%СÜP‚Ô&Jaˆ!„„!„!„!„!„A‚a‚‚AA‚agƒA‚A‚A‚agƒag‡A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚A‚ag‡¡H%à¡PÊþÔ& !ˆ!`É,P¢P¢Ü¡P¢Ü¡à¡P¢>J>J>J>J>*)@ª>JBÜáÜÁÊÜ¡à‚ˆaÊÁÐN jœ À¬aÀ¡Š¶AžN@ŠL jœ< ÜÁïÀ¡ÐaüzÔ‚Á > ÊÁÀÁÐá£ÊÐÁÐ%ÊÁСà¡ÜP¢P¢Ü¡ÜÊá£ÌÂÊ!¤ÌÂ’B*¡ÊˆW—ФÁ¤a`A,ÔÁôAÊÊÔÜþA)¤ÜÜáA’ÔáAÜ¡ÜÐ!)ÊÁÔÁÐ%’âAÊÁÔà¤ÔÁСÔ’ÜAÐAPÜAÐADàPÊàÁÔÔÁÐÁÐ!)PBBPBÜAÐ%ä&Ü¡BŠz†¡z†z†¡†|ù—}yˆAˆÁˆaza|¹ˆaˆ¡|Ùh™†a‚¡ˆ¡~y~y~y~y~y~y~y~y~y~y~y~y~y~y~y~y~y~y~y~y~¹šþ{‚a‚¡‚a‚¡ª™–!º¸Á,>ªàÁÐÁÊ%ÊÜ¡âAÊ%Ô¡PBÊ%Ô¡PBÊá£Ê%Ê%Ð%Ôà¡>JÔ¡ÊÁñ\zaÐÁÜÀ àŒæN¾a„! `Œ l ¬Á` ŽÀ`ÌÁ ÊÀ¡ÀÀ¡6%à‚ÁС„Á Ü¡@ ÊÁÊÁÊ%ÀÜÊ%Ê!¤Ê%ÐÊ%Сà%ÐÁà¡à¡ÐÁСàÁàÁÐa6ÔÁ¢ÁˆÓíþ7 –ÌÊ!)ÐÔÁÔÁ`I)>JÜ!)ÜA>ªÜ!)>ªÔÜÔÁà!)Ð!)>*)ÐÜ¡à¡ÐÁ Jaàà¡Ü¡Ô¡’”ÊÁÊàÔNýÊ!)ÜAÐСÔÔÊ’ÂD¾DÐÁïÐÁ,ÔÌBÐÁ,ÔÌBÐÁ,ÔÌBÐÁ,ÔÌBÐÁ,ÔÌBÐÁ,ÔþÌBÐÁ,ÔÌBÐÁ,ÔÌBÐÁ,ÔÌBÐÁ,ÔÌBÐAС$ÐÁÐÁàPBÜAÜ¡ÔÁà¡>ªÜ¡P¢Pà¡ÜÁÜЖ––$ÄЖܡܡܡÜâÁôhAz! Œ€ >‚¸¾bAœ¢ÁbA¸a fÀ>†ªÁˆ!ŒhPAPÊa’ÂÐP„AÊÊÁÀ%ÊÊÊá£À%ÐÁÊÁÊþÜ¡ÜÊÁÊÁÐÁÊ%СP¢>ª@ªÊÁ’Bd() µÕ­r£f`H%à%ÀAàAÜܡԡܡÔ%ÔÊAÜ!)(¾ÔÁÐÊ%ÊÁàÁÔ¡àÜAv¾BJܡܡÜaç“ÊÁÐÔ¡àAàAÊÜÁДÜAÊ(ÞÐÁàAÔÁÊP¢ÐÁÊ%ä& Ü¡Ü`ÉÐAÜAÐAîÝP¢ÜADê£ÐAîÕÁÊ%ÔÁÔá£,%äþ£ÐaòÕá£Ôá£Ôáþ£Ôá£Ôá£Ôá£Ôá£Ôá£Ôá£Ôá£Ôá£Ôá£Ôá£Ôá£Ôá£Ôá£Ôá£Ôá£Ôá£ÔÁÐ!¤ÊÁòÑ¡ä¾à¡àÔÜ¡àáAÜÜÐÁÊÁ„ fÀÊÁÊ%vÞvÞ(þ£Ê%Êá£v¤ÊÜ¡B=lÜ a;ˆÊݰxØ<1R [!ŸXͨ† œ³>àÜx1ãL¶gY˜ù¶EÈ'V:€9BÌg}œ=Ân0P^P 0Y9àð`êàY9€-àðàðàèàðàèàðàèàðàèàðàèàðàèàðàèàðàèàðàèàðàèàðàèàðàèàðàèàðàèàðàèàðPî vm—…ðPèàèPî€î€—UîîPîPîPîPVîPðPV7WîP½W—U—U—UîPaåèPîÀ ðÐ ó°þ € ¨àƒî€î&ð&î ð ãðàê€î èàâˆå€—8ê&’ãêà‘½ îP Ä 7‡îPîPð€ååpYåàåàå€îPîPîP—…îPîPèpYåÐ{åàåpYåpYê •P åÄ@zý ³”¨‡ýÀYðýÐ÷3` ¨Pî`—…åpYê&îPðPŒáååèpYê&î èè€aåå —&åàå&îPîPîPððà們åþpYèð èî&‘åÀ—êàèàð —Uð€ðpYåpYèàååî «å îPðPð}ð30 ð  pP ˆ`L`n Õpm)P?° BPî€0 k>àOpYã >ÅpB 6> O 8 ŸÀPP >PO>à €å€å€î€å€î€å€î€å€î€å€î€å€î€å€î€å€î€å€î€å€î€å€î€å€î€å€î€å€î€å€þî€åèpYê€ðàè îPðPèà‘qsåpYåpYåî€Vîå€&ñ îPVîP7WîP—U—UîåpYè—U—UðààP½ð` € Ѐ ½§î€—U—¥èPèàÚ¦aâêꦗ¥ð€½ç©èîîÐ è ¨@ fPî€å€aå€aèàèpYå ©†ðP—…î€VðPðPèàèàèàèàèàèàè0›€ êàÑp0ýðýP³À‘Àþ³ ýpPÀýÐ÷PB ¨pmðpYÜàè—UðPêîååàåèpYåpYåpYåàðP†Æ—…—UŒQ—Uèî îPê€aêàåà‘¡7Wîî€ååàèPî€îîPîPð€îPðàåàå&m€ psîPèà‘‘&Œáaâ‘qm¦î€ñ€âÀèå€î&åpYð€ðpYð&êàð€ñ 9å€ð€îPî —UVVVVVþVVVVVVVVVîPî€î€îPèàðPêP—…VîP—UðP—UîPîP—Uî€î€îPîPî`åaèâèaaèàèèàåàåpYåpYèàà½ðPà€ Ì€ „Š—um—Uð —¥mðP—¥èPêP„ªðàå@¨ðPêpYêPîPêPꀽ è€ Ð å€aèàðPîPîP—…îPîPèpYà€—Uî€î†7Wþ—UîP—U—U¦B`b× *æŽÀ‘ÀŒàKðì Y60›P —¥èàJÄ JÄ Ñ Ø ÐÀ ÐÀ Ñ ,Ñ D_üÅÌð*` 9ÆØCÑ ,Ø Ì DØ@ÆÑ ,ØÆØ ¯",ÑÀ J J„ Ñ Ñ ,Ì DÌ DÑ ,Y€ €ð€åà׆î€åàèpY‘7‡ê&êàèpmîPêpYñpYåàê€î€׿Úæå€êPêð³êPîPðàêP7WVVVVVVVVþVVVVVV¦—…—¥î†åpYååèàèàåaâèàèaîP—…ðàB3€ Á ,Ñ DÏ ,È Ñ ,Ì Ø J dLÆàPÄêàØÀ Ü@ êè îpmð åîP„ŠðPð m7wmèêPðàåÀèPîê€ð îPðàðà½€î€ Äðèàèàå€å—Uð`äàèàèpYè—…—å—Uððî€î€åî€îþ€î€åî€î€E` ¤å 8üä0 ŽÙÝÿÐýà•-›€ ðPóàå`ó`ó`¥ ú0ðPÚ¥=ó`ó`óPÚóPÚó°Úöõ0öÐÚ­]Úó`½ ¥ ú`ópÛö0öÐÚ« ú`ð ó°Úó`ðPþóÜ« ú`ð°Ú­ÝÝ¥Ýr€ €aèpYꀗ¥—¥vmèð³ê€î€ê€îpmè mî€êàêà׆„zYêà×&Úæêàåpm—…î€î€î€î€î€î€î€þî€î€î€î€î€î€î€î€î€î€î€î€î€î€î€î€î€î€î€î€î€î€î€î€—UîP—U—èpsèååàèàèpYå€aåpYåpYåpYåàå€î ð õPÚ­ÜúÐÚ«ÝÚý0¥ÝópÛóPÚó°Úõ`å Á Á0 ½@ ½Pî€ê€îPŒQèpYðPð åàåpYèpmðPè‘êîåàðPðVëå ½ è€ Ä îPðpsarYè€aèàþðîèPîîP—ðP†?ëåàåð³‘qYê •P åÄ b•ÝÑÿÐ*6ŠP åàóî î î ¦èà mðàêàêà׿êpYÚvsêÐvmî àîêPð m—…êpYê€aêpYêàÚ†îpmè ð îpmð mîêpYê€aêàêàåàÚf¥0åàèàè€aê&×&Úêå×îpmðàê€ðàê&è î î åî0öðpmè î —…ê€åþèàèPð€î€î€î€î€î€î€î€î€î€î€î€î€î€î€î€î€î€î€î€î€î€î€î€î€î€î€î€î€î€î€î€î€ðP—&î†î€îP—U—U—U†ååpYåàèàèð³E0EpYêpY×&å€a׆aåà×Vî@¨î —¥m7‡å€ð åîpm—…êåÊ©#ˆ®¼rîÜ©s‡ž»rðÊÁsWN¡:…ðà)t§®œºr Ñ¡ƒçž;½–þ"f»rîʹ+§]9…åÜ äȱœÆrîÊÁs‡Î]9wæÈ¹C^9xåà•Cç]9xîйC7c*uî¢ý#[Öì¿~dû=[Ä*tîæ lQDEuðÊ©Sˆš:xåº#¨]áÂãŠq–bÆá¹+‡XÝÈq:ž”S箜:tîÔ¡+ŒÎ2bw–ËÁ+GP`árÑ©sWŽ »rêÐÁ+GœU–s‡Î]9u Ý¡SO:åÜ•s @xê¢S®ž;têÐT¨®nasÇœŠmB¢³áN‡oÊÁ —ž wیبeKŠ»r6ÐqùDI Næâm¯§XRlhÃ7ܸ '”2A9ð”#P9ª#:0=èŽ:ÁƒŽ;ꨃ‡ê¸£Ž;娃Ž@ê<¨QA©S‡9•#P9¡ã:î ã<åÀ:î ã:îÀS<åÀS<åÀS<åÀS<åÀS<åÀS<åÀS<åÀS<åÀS<åÀS<åÀS<àÀã:•ãN9•ã<蔣:𔃎@𔃎;åO9:‘ã<àÀSŽ;å ã:ðþð ãN9î”O9ð ãN9¡:î O9©ãŽ:î ã:=(P9ê %E1C4¨”ƒN0Ñ@Ó¬³ÎƒÍ³Ó:Ë 4Ø0C-4Ï8Ë 6È4Œ;î ó -î CŠ0r”3n9ã–S<èŒëN9ð”ãN9î”3n9ð”ãN9ã¢S¯;å¸SN½à¸SŽ;å¸SŽ;å¸SθêQI)åÀC dƒ²È!¡)êÀcϸà b‚® Ó:¶ R:-¬áJ:ðŒ‹<è¨ã:î”3.<布<åpX;訃‡èÀƒŽ;訃θÂãŽ:𠣎;©ƒ<åÀƒŽ;踃<åÀS<å S<åÀã:î ã:åÀS<åÀS<åÀS<åÀS<åÀS<åÀS<åÀS<åÀS<åÀ£ð(<Üw Ãðp:ÜxŒ«ð@G9àQw”å@‡;Ê1®r¸£ã*ǸÊrÀÃåpG9ÜþQw”c\å0X½Êá!¸£åp:ÜQw”£^åW9ÜQw”£^åW9ê…w”c\ê8ÜÑ x¸Øà7P`ôóˆã13žg,#ÑèFxœ1óˆááFxØ#ó€Ç& Ö ¡BfpG9à–Ãå ‡;Êa°rÀî@‡;à1®rÀÃäpG9àát¸à€‡;Ðát¸î@‡;Ðát¸3Ø*ÔáŽhŒ,—ºì‡6Šr Ãî€7Üo¸Á-˜A #0Á6؆`aA'€Â'làtÀcFhDLPþwlCî°©c\èW9Ü¡wpåP‡;Ú€ŠÔ«*  hD4؃:”øÀ:¸ƒ:4<¸C94B9¨ƒ;”ƒ: ƒ9X‚;ØÃ¸”Ã6è€;Xƒ C9ÀC<ÀÀ¸ œ¹ƒ9@:Œ‹:0:¸C9À:ŒK9Àƒ; <”:Àƒ;À@9ÀÃ6d<”<”<”<”:¸:¸:þ”8Ð:C< ƒ6¸ ä hš¦Yƒ€"dlƒ” pƒ5 P  ƒ9x@L8”Ãÿ¢C9¸Ã&¸:ŒK/¸:¸‚0´Á¸”<”C½”ø”øÀC94h9Œ :¸C9ŒK9ŒK9¸C9¸C9¸:¸:¸C9ŒK9L9Ô‹:A‰q4Ôj‹Â,0Â,DÂ,(Á?ô,@ÁüÃðà (*”<ØC9À8ŒËƒ C9¨ƒþÁ˜£:¸<”ƒ;”ƒ;<ˆ;”ƒ;¨ƒ; <”ƒ; ƒ; ƒ;”øÀø C9Àƒ:¸‡ÔK9 <”ƒÁ¨C9ÀC9À:”ƒ:”ƒ;<ˆ; ƒ;”<¨ƒ;p:¸ï¸À:À:Ô‹:¸C9pˆ;p<¸C9´A)DÀ¸ÀC94(*¼˜?Ô:”ƒ;lƒè€ ŒC C lƒ˜Àƒ;„ƒô:lƒÀ€:„ƒxlƒ¸ƒ ”Ã6Á3lA ¸C9lC¸Ã3lA ˆÃ6<´@88€0À6A9ä(B9¸Ã6A<À@7ä€;´@8:¸C9äþ<Â68€0À6 TA p•¹Cˈ‡rÅœ¬Açæ''ÜÁÓVª\#tž²Ü*ç;wž²úèãæ›MÜ)Çuz)žR 1¹Êq§åÊq§¹Ê‘«¹Ðq§wàAÇrÜAÇtÊÇtä*G.tÜAÇtÜAÇtÜAÇtfØu܉æŸ$•T²Ÿ~’l²ž%ûI²I!,A…¡yà)çxÊqþtàAtÜa¨t~+Çtä‚rà)ÇtäBç·rÐq¹Êq§tÜA‡!xБ wBÇxÊù ràA§xÊqžrÔaÈrÜA§†ÔG®r~+tàAGxÊ)ÇWÕAGT&pwÊqçÕrÐAwržWÕ©Dˆ"„ÂtÜAÇrà!H®_Ýyžr´“ wÔ‘KtÜAGtÊA§œ_åB‡ tqâ‡rÐÇ‚äBÇuÐQÇtÜGtÔA§täRu”+wÊAÇtàQw~Eç7tÜ!u~ûžrà)ÇräúÕWåŠþtäRçârÐQ§ÐràquÜ)ç7tÜž"Ü1¢œßÊwÊ‘«¹ÊqwÐq¹Ê‘«xÊAÇrЧwÀQœJH9{“M,)gx¢/l á†™h ‰n¢á&l ‰&l¢Æ!fplÆÀ¡án aœMܧwz)ÇR„iÃtä*ÇxÊÇrÜAG®räBç7tä*Çr~+G®rÜAÇtÜ)Çrä*G¹r~SGˆJ*!š%O²Ÿç¥ŸA‘RÊQžrܧuÐ)ÇrÜ)Çu^UÇtÜ)ç·rÜ)G®ràAG.tÜþA§¹Ê§wàQr)‡;zåŽ_¹£Wîx<Ôñ+¹”Ãê(‡:àQw ãUîP:äò*w”ãW )‡;ÔÑ«r¸£îP<w´¡€G9ÜQw¨ÃèK9àñ*w”CîPG9Üu¸åø :^Åu¸£ðp:Êá‚ÀCî@<Êw¨êp‡:Ü¡¹¨ÚAAÔñ*t¸£ê :~£wÄê(:Ô‚¸è ÈÅࡹÀî H9àáuüæWê AÜQx”îPG9ÜQw CrÐAWÉEÛ2!<ÊuÀ£þðp:ä‚x¸£ñ˜;ʹ”Ãè€G9䂹 Ãèp:ÜŽß 倇;Ðw”Cî‡:zat”Ј†+ÜÑ w0pÌ`F4˜ bDCÌ F<£h0pÑ€3 fNÐ`4¢ÏhŒ•€‡:ÐQb¸£®FÊáŽr¸£î(‡\Êáx€èø 8Üx¸r)ÇoÐáx¸î<ܹ Ãèp:ÜŽrÀÃèp:Š` RÀ£ÑÞ’ú±TçÁ¤P‡;ôw€C.êpAä‚í”ÿr<Ð!t¸£þî(‡;Ê!x C.åp:ÊáŽWý¦Ú)<ÔáuÀÃåøM9~SwÀ£îP‡;¹”Ãêp<Ô!—W¡C.êPŽ:àáŽrÈ¥ê@GJ1w”c[)Aà¡wÀ£îP‡\Ô!x”rA‡:ÊáŽr¸£ðP‡;.VŽ_¹£î(‡;Ðát¨ê€G9Ð!u ÃèP‡;ÐAíÀîP‡;Êt¨ÃèP:”Cw”CÚ)‡;R¹¨Ãê(‡:ÜAtÈ… èp<ÊuÀãU‘ <råp:Ôñ›_Ãꀇ:äRw”Cåþ€G9ÐQx”C.å€Gà!x¸ãWr)‡;.æŽ_É¥î(‡;Êr ÃåK9ÜQŽß Ü@G/æáŽr€Ñ@<ØcŸopßÀ8¸ñ n|37°aŸo`ƒØàÆ7¸!扃=b~7¢Šr¸ê …;Ê aÈÁð@<Ðát¸ð(‡\Êq1wÀC.à(‡;ÊtÀî(‡;ÀáŽrÈ¥î€8äRw”C9¯’‹:„P‰R”Äp꬟'E”Âê°G9àt¸£¿)‡\Ôát”Ãð@‡\Ê!—r¸£ÊA‡;ÀáŽr¸îPþ‡\ÊrÀÃèøM9ÜQ¹”ÃêpG9Ôát”C.èpG9àáŽr¸CèøM9Ð!t¸ãUî(‡;Ô!—_)î(<ÔxÄm@ÅÊÁ_ÁC倇rÊát”èPG9Üu Cè :Ü¡Žr0î(‡:¶å‚ÀCèp‡:ÜAx”ã7ê@‡:Ðát¨ÃèÀp9ÜŽWÁ£èpG9ÔQx¸î@‡:Ü¡Ž_¹Cå@<âŽrÀãWîPÇÅàátÀÃèp‡:Êt¸ê@‡\Ê¡w ÃèpÇ«ÐQuüªîP‡;ÐQw Ãê@‡þ:ä‚x”ã7ꀇ;ÔáŽr(§î(‡\„0"”ÃåK9”S¹”ÃåøM9䂎ߔÃåK9Üw¼Ê½˜G%Š0!@ê4Ò¶ RTb•hþô§OŠJ4Ÿ› EÚHAýM¢ͯÄÙ6ŠrÈEð:ÜQ a˜¡î(‡;Ê!—rÈ¥Û*‡9ÈñtÀ£Ü¡àÁÐÁà¡àÁÊÁ^ÜÜÜÜÊÜÜf`PAÜ!œ*IÊá4–ªþ¡,¡Ôæ¡àÜ.ÐÁÐÜܡܡÜÜþ¡àÜÜ¡ÐA.à¡ä¢àÁÐA.ÊÁÊÜààäÜÐÔ”Üà¡ÐÁÔÜ¡~å7ÐÁÐÜ~£~àáWÜÔ¡ÜáUÜÔÌ "ÀÊÁzÊÔÐAàÁÔ¡ÜáWàáUÜAÜ ÜAäâUÜAä2 ÃÜ¡ä¢Ô¡ÜÊÊÁÔA.0ÌÔÐÁà¡ä¢ääÔ¡ÜAÜAà¡ÜAàá7ÊÁÊA.ÊÁ0ì7Ê ÊÜAÜAÊÁÔÁþÊÁÔÁÔÁÐAàÁÐA;ÂÐ Ü!ÊA.ÔàÔ¡Ô~Å^~£Ü¡à¡Üä¢à¡~à¡Ü¡´£à¡ààÁÊA.ÊÁà¡à¡Üà¡~à¡æ"ú PÁÔA.ÐA´äB~~¥~ãWÜÜÊáb~EÐÁÐäâWÜÊÊAÊzÜ„Á ”ÜÜ¡ÜÀÁÊÁÊ!ä¢ä¢Ü¡~Ü¡äÜ~£~£Ü¡~£~C„@yœJÆ`þ" Aþ!è ¤!IfÀ6ÊÁÜ¡ÀÊá7ÊÁÊÁÊA.ÐA9Êá7ÊA.ÐäÊÊÁÊÁÐÁÊÔä¢Ü¡Ü¡Üà¡Ü¡Ü¡Ü¡ÐÁ~ÅÊÁÊAÜ¡àáUàá7ÊÊA.ÊÁÊáWàܡܡä¢~CàA.Ðá7ä&@Êá7ÐA.Ê^ÅÊá7ÔA.ÊAà¡Ü ÐAÜàA.ÊÊäBÊÜAÐÔäÔÁÔÁ^ÅÔ¢ÜAàAÊ^ÊA9ÐþA.ÔA.ÔÁ¢à¡à¡Ü¡àÜ¡àáWàÁÐAÊÁÔÔA.Ô¡àÜAÊA.ÔÁÐÁà ÊA.ÊÜ ÜÔ¡WÜ¡äBÊA.ÔÁÊÁÊÔÜÜÜÜ¡àÜ¡ÜAÜÁÐÁÊÁÊÐÁÀÁÐA.ÐÁÐÁÐÁÐÁÊÁ~¥à¡àÊA.ÊA.¸‚!Ü¡úà ÐÃÜAÜÔä¢B.Êá7Ôá70 jÜAÜAÐA~£à¡àA.Ô¡ÜA\Aä þܡܡܡäÊÐA.ÊÁÊÁÊÐA;ÀÜÜÜ¡à¡àÁÊÀÊÊÜÜÜÜŠÀHÊ!Hð”d•a ¡IºÁ´ ¡ „ÀHÁÐÁܰA.Êá7ÐA.ÊÁÊÁÊáWÜáWäÜ¡ÜáU~àÁÊÁÊÊÁÊÁÊá7ÊA.ÊA.ÐAÜAàA.ÊA.ÊA;à¡ä¢Ü¡ÐA.ÊÁÊÁà¡ä¢Üä¢Ü¡ä¢ÐÁÊá7ÊÜÌ&@.ÊA;ÊA.ÐAÜÔÁþB.ÊÁà¡ÐA.àáUÂÊ^åWÐA~EÊÁÊÁСà¡à¡àÁà¡äÜÜ¡àAÊÁÔ¡äàáUÜ¡àÔÁà¡àÁÊAÊA.^ÅÊÁÊA.ÊAÜáUÜA~ãUÔÁÊÔÁÜÜÜÊAܡܡà¡ÜÜ¡ÜÊÁÐA9àÜ¡ä¢Ü~£Ü¡äÜÜä¢ÜÐÁŠÀfÐá7Ê!СàÜ¡~£ÜÜ´£~£àáWÜÐAàÁаþP¡tÕáWÜÊÔÔáUÔÁàáWÔÁÔ0Œ ÜAÐ ÜÔ¡Ü¡à¡ÔzÊ„Á ÜÜáW”ãWà¡Ü~ÜáWàA.À¡Ü¡ä¢Ü¡Ðá7ÊÁÊA.^ÅÊÁÊA.ÔA*¡Êˆa"aB ’dþ„`*Ô!àÁÔ¡ÀÀÀÀ=ÐÀÁ>À°°°°°¸Ø°ÀÀÀÀÀÀÀÀÀÀÀþÀÀÀÀÀ¸°˜¹¡°˜¹ÀÀ¾˜±˜±Á>Àʸ˜¹¡ì€YÀÁ V!àÂÔ´£à¡‚ ÊÔÊÜ¡СäÐÜ¡´£ÜAäÜä¢Ô¡à¡WÜAСà¡àAÊÜAä¢ÐÁÊÜÜ¡ÜAССàá7ÐÜAÜàÁÊÁÔÂÔààAàÜÜAÊÐÁСà¡äBÜÜÜ¡ÔÊÁàÊÁÔÁþСÜ^ä¢àÊÁÊÁÔä¢Ü¡~£Ü¡Ü¡ä¢æA°Ø°°°Ø˜Ù°Á¨°°°˜±¸°˜çÁz†¡hPa~äBÊÁÔÜAä~EÜ¡ÔÁ¢à ÜAJ— ÐÁ0ÌÊÊA.ÔÁÊÐA‚A.JÌÀÊA.Êá7ÊÁÀA.ÊA.à¡à¡ÜÐÁÀÁÐÁàÁà¡à¡”ÜÜÜÊÜÜÜÜf`PAÜ!œþªz¼Ç• Ip€R€ÜáŠ@JAÜÜ¡PžÜÂàA;àA.ÂàÁB.â7 E;àÁžœ!ÜÜ¡PÜ~ƒ!Ü!Üää‚!ä‚!Ü!ÜÜ´ãÉÝ´ƒ!~Ú&ÀzÜÜáWÜÊÁ^ÐÊÁÔÁÊA´£Ü¡ÔÁÔÊÁÔA.ÔÁÔá7ÊA.àÁÊÁàÁàA.Ô¡Ü¡ÜAÊAàÔä¢WÜä~CÊAÐAÜ¡àÁÊÁÊA;^EÜáUܡܡÜ~CþÊÁÔÁ^ÅÊA.ÐÁСÐá7ÊÁÊA.àÁÊÁà~£àà¡äàä¢Ðá7ÊÁÊää¢à¡âÁÜ!Ü~ä‚!ÜÌåÜÜä‚!¶EäBÜЋÕÁB.¢ÔÁÊÊA.ÐAÜ âUÜÊ~ÔÁÔÐÁÔäÊÊÁÊÁàhÜ„AÜ¡ÐÁÐÁÊÁàA.ÊA.Сܡܡܡ”ä¢äÜÜ¡äܡܡä¢~£~C„@yþHЖò!ÿøan¡ºž! „`HA.ìÁL¨WÜáUÜ¡àá7ÊA.àÁÊA.ÐÁÊÁàÁÊÁàÁz…!ÜÜ¡ÜAôËÊÁzÅÊÜÜ¡ÜáUÜ¡ÐÊÁÐÁÊA.ÔáUܡܡà¡ààá7^E.ÊA.ÐA.Ô¡Ü¡à!Ì &ÀÔÁÐÁÊÁÐÁÊÁÊ ܹS§®œAuð Dç®:xåÜ©ƒW^9îÐ D¯:èÜ•SçN]9uåÐat§;uðʹƒg#<å0t§ž;tîÔ•ƒ‡N <þtHÝ©s‡ž;uîÊÁ+' :x+–ƒW^¹¬èÂ+'°ù“@é“´0”® B` ¥Pê0ðPð èPð€ðPð€åàè åå€îPî€î€þQèèàèPðàèàè€ðPðàèàðPðàåàèàH!åàèàèàååàðàèàåèî€î€ðPî€î€+Qî èàm€ Pî€+Qî€î€ðPî€îåàðPèî`aQî€î€QåàáèàèàèPî€îPîPèàèàåàå€åî€å Háå 2$Hèàèåå èåîå åàèàèàþåàðPî€îPåàèàå€Qå å å ååàðàE3€ðPîPîPîPîPð€ð€î€î€îPîPQîPèÁ!èàå åàåå å CîPîPîPîPð åàH¡å êàå€ðPðàêàÁ€îP Á å å°ååàðàè Háæ åî€î€îPðPèàèàèàèàèàèàèàèàèàþè0›€ ê Á 5¬ýðB` ¨è0ðPðPîPQQQîå€èå è€2”ðPèàèàHáåàå€QîPî€ðPðPî€Qðàåèàèàåå€QååàðPîPîPî€r€ åå€ðàèàåàåH!åàáå á!ðPQQQîPîå æP èàå å€åàð€î€å€ˆPðàåaîþ€îPîå€å å°å åàåàååàåàå åàààå èàèàè å å èàåàð€Qð€ð€QQè ä`îðPðPQî€ðPî€ðPîPî€åàåàåàåå°åàå°å°å`"¡ê€èáè ðàåå îPð`ð€½ îP ÂÐðPð€îåàå ååàè à þå€YQQîPQQQ¡B°eè€ÿPýPýPýPýPýPýPýPÂ4ÌÿP3` ¥Pê`å å€å è€å èPîPî€å èàåàèPî€å€å°è°å èàèàå€åàèåàèàå åàåàåàåî€ðPîPîPîPîPQîåê€å`¥å èàåàåà 0?àåàåå€ðàåÛîPðàèPîPþð€î€îPðàåàM€æ î€îPåàè ¡0àå åàå€èàè åèàåèèàåàèå åå€åèàå°åååàå åîPðàåàååàåàåàå€åàåàåàå€î€î€î€î€QèHQðàBBàåQè èàå å åååè€å€î€ð€ðPðPî îå åàååð`îþPQîPîPî ðPîP+å å€QîPðPð ê`ðPêཀ†Â`å èàåàåàå°èå åîî€îåQîPðPðPðàèàèàèàèàèPðàèàèP–@ Ñ ý0¬¢R!B` ¨àê`QQèå€å€å åå åàå å å€åàå èPQîPQQQîPî€+Qî€QQîP+Qî€þîPQð€Qî îm€ àå€èèP-àæð 6¢€Bå€E𙇠è 'µ€¼€Eðæ€Bð 6àÛ`×  `)À 0>  'à¼`Y 8 à8 F° ÛQQîPQîPîPîPQQîPîå€èàèàðPðPîPQðPî€îPî€Qî€ðPîPQðàå å åååååàåå þEàFàå€ååàå åàå å€å åàåàðPðPîPî€ååàèPð€îèPðPèàèàå°å€ð€ðPîîPî€QQî€QðPî€îPîPðPQ¡ðР r€îPQðPî@Q+QîPî€ðPQîPîPQQa¡BP ¨@È ú <¯ÿ ÿ ÿ ÿ ÿ ó’!ú0–P î€ö€î€î CðPð€îþPð€èPðPîPðPè€è€åàèàèàèàèàèàåàèàèàèàèPðPî€îPîPðPðPî€îPðàèàå å èå€î€ðPî€î€QîPîPèàèPrP €îPîPîPê€-ϰL`0 ÛîÐãàfÀÛ îPî`PÐF  ãàfÀãî0Fî° B`Õ` FÐâ° B 6 Ö 6 ãèÐãàYÀã`ž»rþîÊÁCçÎ]9xèÜ•Sˆ:…èà¡CW:wèÊ)Äè;tåº+¯¼r ѹ+'°œ»rîÐ)D§Ârèà•;é»rîʹ+w²Jñ€,\à ¬˜"P¡wØÃèPH9€VŒ¸îh<Ê¡r(¤î@G9€V •C!åPH9R… Ãåp:R •ÃåpG9ªVw”å¨Z9àQ…”C!åPH9RwÀ£î(‡;ÊátÀ£ )GÕÐa†ULh)‡:ÜQu îh”:Òˆ"  倇;Êát¸ã/G£ÐwÀ£ðZ9àQt”îh:Ô¡c¢ÃåpFÔ¡t¸ðP<Üw€ÃåpG9R •þÃåPH9ÜQ…”C!åp:Rw Ãèp:ÜŽª¹£èpG9ÐáŽr¸î(<RwÀî(‡BÊát¸£@+‡;Êw Ãèp:€Vw”C!åPH9ÜQxÁåZ9ÜQ…”håpG9R…”Ãèp:Rw ÃèpG9ÐátÀî@<ÊrÀ£ð(‡BÊ¡rÀð@‡BÐáŽr¸ )ÐÊr(åp:ÜQw”î(‡;¥w”¢…:ÜA a˜håP:ÜQ…4Êå€8Ür­î(‡;Ðt¸£þî(‡BÊáŽr(¤î(‡;ÊáŽr¸£î(‡BÔ1E”î@†=æA{ÄÃXF-à¡ÐÃì0‚ ôÑ*Ø@ᨂ „`‰R¸ó@‡;0t¸ðP:Rx”åP:Êw”Ãð(‡BÊát¸î@‡;Ðát(¤ð(<Üw £ð(‡;ÊrÀ )‡;Ðát(åp:Êw”ÃåPH9àŽrÀ£ð@‡;Êw åpG9Rw Ãè(‡B䀊¸£UƒGÕŒ©u¸êPˆ:ÜQtÀîP‡BÔ´r(DþåpG9ÔQx¨î(<€¦x CðP:ÔácÂC 1fÕÊáu”ê(‡Bà…”èpG9‚x C!è€FÜx”åpG9àw ÃèPH9ÜQt¸ )<ÜQ”C!å@‡BÐáŽrÀ£î(<дr¸î(‡BÊ¡r(#@+‡;ÐáŽr¸ð(B<„àt¸£ )<ÜQx èpG9àQx”Ãèp<Ê¡r­ A<ÜQ…”î(‡;ÊáŽrÀ£ )<0¢r¸£ )<Rw èpG9à¡r¸£îþ€G9Ru”èp<€r¸CÄ@‡:P! 9”ÃåP:€V aÄð(… p€w€w(w(w@w@w€‡r€‡r€w@w@w@w@w@w@w@w@‡"°T€u@{°,ˆ,@u°}°}h‚Z˜[Їp¨ЇpÈK(…r€‡yPˆrp‡rp‡rp‡FQˆr€‡rPˆr€ttp‡rp‡¿PˆrPtptptpŒšr@‡æ*x@w€‡rptp‡r€‡rPtp‡r€tpx(w@w€‡rPˆrpxþ(x(w@…w(x@…(xp‡rtpt0T˜x@w(w(w(x(cBu@x(t0&cRˆrPx(‡Z4&w€tp‡r€u€u(w¨ÅrPˆZtu(ušrP‡r@cBu@u€‡rpx(u(…@w(w@w(w(…(w(w(w(…(…(w€‡rp‡rPˆrPˆrp‡rPˆr€‡r€‡r€‡rPˆrPˆrptŒp‡rPŒ€‡rp‡rÀx(…€‡rPˆrp‡r€‡rp‡r€‡rPˆrPx@w(x(w0þs€t€tPŒp‡rp‡r@ )w(w@…(w(w(…(w(w(…(…( ) )w@w(w@…(wÀ…(tptp‡rptPˆr@xPtp‡r@w€whw@‡rpŒ(wPw(‡^@x@at€t€pp‡r€t€‡rp‡rPˆrPˆršFqtšrp‡rPˆrPˆrp‡rh.w( ) Q‡°„M(u†yˆ‡HP,X?À‚Z˜‡yÐ(ÀD¨.¨8p‚k0(E w(‡y(…(w€‡ršrpþtšr€w(w@‡rp‡r€‡rPˆr€tpt(w(…( A‡rPˆrp‡rpt(x(w(…(wÀ…@‡rp‡rPˆFšr@‡r€t€‡rp‡r¨šrp‡r€…(w(w@w@w@w@w@wTˆw(…@w€t`l€hÀhˆf€†hRhˆ††enRhˆhˆf`hÀf€f€l€†hØÑhØÑh€!…l€†hØQl€lˆ†Åhˆf@n€fàhˆ†µÓ;ÅÓ<ÕSfÀÓx@‡`†`†U†`€wþ( A…@…(w@‡rp‡ršršrh®r€‡r@‡r€p€w@ )…@x@x(t(w(…‚x˜x(w(w@‡rPˆr¨t(xpt€w(w(x(x@x@‡r€w(…@…( A‡r€‡rp‡r€tp‡ršrPˆršr€…( )tPˆrptp‡rt(x¨u@…Pwwèu(‡R3(w Aw(w(x( A‡ršr€w@w(w(w€‡r€‡r€‡r€‡r€w@s w@‡r€w@‡r€þw@w@!¨T€txˆ‡.À‚. x° Zx˜‡y€‡y€‡yˆ‡£µ‡y(K@…€‡ª)w(t€w@w(w@w(w(‡ªA )…(‡æ*…(w(…@ ‡r¨šrPˆr¨šr¨tp‡ršr@‡ª)…(…(w(w@…h…€tp‡rPˆrp‡rp‡r€t0T˜wÀwhwPnø‡ÓEÝÓí‡~ø‡~H]Ô]Ýè‡èÔí‡Ôí‡è‡Óí‡Óí‡XÝè‡è‡Óí‡è‡×ý‡~PÞ~PÞç…ÞèE]p˜tx@‡røþn@†`Pˆr@w(tp‡rptPx( ¡…(…(w@w(‡Õ„w@‡r€‡r@…(…‡Õ,w(!€‡"p‡rPˆrPˆrpšrp‡rp‡rp‡r€‡r€‡rp‡rpx(tPt(x@x(Œpx(x(x(w(…(w@x@x(w@…(tPˆrPˆrptPˆr€‡rptšr€‡rp‡rPˆrPth”Fé…@aƒªAw(…@ !‡rpx(x…(w(x@x(…(w( ¹bxPˆrPˆršFQu˜Kþ(…rPbPzPd˜x8ÚGž˜‡x dx dÐE(w€}8,w@xp‡r€‡rPtptt(tPp€w( Ap€‡r€‡r€‡r€w(w@w@‡r@w@w@‡rPtpt€ptpt(w@…@‡r€w(w(w(w@x(x(x@…@‡rpp‡rp‡rPtptp‡rp‡rp9(…Pˆrpxp‡rppP…è‡`…çU…è‡Óí‡×íÔíåí‡Ô]]è]]åí‡×]]éMÝÕ}Ý~iÔå{Pdˆw@þlˆhpŒPˆ`A aÔUÔU†`†`†`X…`†`Xa†U†U†U†U†U°é`Xa†U…@‡rp‡r€t€w(‚xtPˆrpx(w€Œ€w(x(xp‡r€w@ )…( Ax(w(w(xp‡rp‡rPt¨Œ€‡rPˆršr@…(w@x@‡rpx(w(w(w€‡rp‡rPˆr@xpt(…@ Z@‡rpa0whršrp‡rp‡ršrptpxp‡r€‡rPˆrptptptptpþtpxPˆrPtptpt(xptptK@…rp‡aptP ¡äùŽw dw€‡xpúŽx(K(…F±‡ª)w(w(w(tPˆrpŒx…Àx‡ªAw€‡r€‡r€tp‡rPtPˆrt€‡r€‡rpx(w sPx(wÀw€‡rptpx(…(w@w@w(t¨šr€ttp‡rPˆr€…Àˆ6@…šrPxPn8‚è‡(åí‡&ø‡Õý‡~é~(é6WÞ~8Ý~8ÝÕ¥s:ÿ‡~HÝ~ø‡~@ÝÕý‡:þ?Ý~ø‡~8Ýr°x†xpèlˆ†`ptpW@x8,tpx@w(‡Kwt(tpu@w@w@w@w@wø x0&tpx@‡UPt€‡rp‡rPˆ"p‡"€t€‡rpŒppPt( …@‡rp‡rPˆrPˆrp‡rp‡rp‡ršr¨šrp‡rp‡rptPˆr€‡rp‡rpŒPˆr@w€‡rPtp‡rpt€‡rptp‡r@w@‡ªA…À…(whxèw(T3€ )x@xp‡r€‡rp‡rPˆrp‡r@ A…(…(þ )…(w@‡r€‡rp‡rPˆršru˜K(xP‡^p‡xpún®xPˆxPˆxXM!PRPˆyp‡rpth®r€w(…@ A‡rPt(…(x@w@whw(w(…@…(‡ªA‡r@w(…(w( t(‡æ*…(w@w@x@w(…( )w@w(…(w@w@w@‡r€‡r@ iT˜€rptpŒ(t‡&È‚†¸#øÈ‚è7×ýÝçýÞ^t€‡r@wP€>@Wp‡r€‡aP‡+v‡rpþ‡r Q‡ªAw€…( A…h )thw(w(ww@w( Aw0x‚rp‡r€‡r¨šrp‡r€‡rtîà¡+çî :wèà¡CçÝAwåà¹+w°œ;tîÐED¯œ»rËE,w°Ñ•kþX8x áƒW®a9xî°í,‡Îº†åÜ‘kXÎ]¹†P–s‡^9wåv¢sWÎ]9xîÊíDç]ÃrîÊÁ+·¼r ËÁs‡žº^èÔ•"Öfg¹èÜ¡kˆ®!¢ Æràq§œ†ÔiHwÔY*wÔCG†ÔA§xàqGtÜAÇuÐq§xÔqx‚§xÊqg!wþàqGˆxfh¨Þj¨wÐqwÊÙ ªr*wÊA§¡rÜ ž†Êih!wÊq§œÌ!g'xÀt4î(‡;ÊáŽr4 )‡;ât4¤ð(GCâx¸£ YH/Ü¡ŽRà êp<¥tØÉåp‡àát¤ ±“;Ôáu¸î@‡:Сt¨vr‡:Üu Cî°“;Ð!„E”Âåè…;Ôu¸Cð(‡;Êr¸ÃNå€:¨¸E(E)2w”Ãå@‡;ÊátÀ£î(‡;âx ƒwåp<RŸ” )‡;þ²“r4å@G9àáŽr¸£;)<ÊÑr¸î@G9àx”Ãå@‡;àx¸£;ÌáŽr¸î@GCÀáŽrÀ£î@G9àQŽ”Ãðh*&àŽr¸£ )‡;ÀQ9mn“›ÝÔf9ôáhÄà P7ˆ x”C )<ÊÑu¸C;Ôáx CðP‡; ¢Ž†¨Ãê€G9àx”CåhH9v‚ކ”Ãåp‡æaw ÃåpG9ÜQކ”åð 6vRw”Ã'åhH9RŽ”ðp:‚ŸÃðhH9Ðát¸£ð‡;Êþtì¤ YˆOÐáŽr  )GCÊrÈ´@‡;P! 9 £êpïÔÑt¸è€G9Ðáu,Äê@‡:СtÀð@‡:ࡎ†¨Ã)è€:Üw C q‡ŠP R¸Á(<Ôt¸£ð(<ÊŸ”Ãv*<RŽXb ±G9vRކ c'å€G9Rw@ÅèpG9ÜQŽ”Ãèp:ÜQŽ”c!ð(:Rކ”åhH9Rx”ÃåØI9àQw”c'P)GCÊt4ðp:xWt¸å€G9àáŽr4¤ð(<Üþu˜@<‚ŽrÀÃèðæƒ!áÊÃê†;àQŽoD#®(‡:àQwÀ£ð@‡;Êw¨£ê€G Ëáx”Ãêh:à¡w”åpG9RŽ”£!è(<À±“r¸>€Ç R§”;<ÊÁ;tÀ£ð(GCÀrÀÃåh:Ür4¤î(‡;ÊáŽr4¤ )‡;ÊÑr4¤î(<ÊÑsÃè€:v‚Žr¸£î(<ÜQw”è(‡; r ê(ås>é³>íó>ñ3?ÝAvBÔÃÔÁÔÁÊÜ¡|¢àA¢Ü¡àÜÜA Â Â ÊÔ¡àÁ'ÊþÁÊ¡!С¢|¢ÜÁÌÁÊÁÊa'ÊÊÁÊ¡!Ða'ÊÁÊ¡!Ê¡!ÊÁ)Ê¡!ÊÐÁÊÁÌÊÁÊÊÁÊÁÊÁÐÁÐÁÊÊ¡!ÐÁà¢Üà¡¢à¡Üa!v¢Ü¡à¡ÜAv¢ìzAЄAàa'ÐÁàa!Ê ÐÁÊÜÊwÐÐÁС!ÊÁÊÁÊÁÊwÐÁСÐAàÔ¡!ìD¡ÂÜa!Ü¡à¡à¡à¡v*¢à¡!ÔàA¡bþœ|v¢ÜÜ¡à¡!Ê¡!Ê¡!ÊÊÜ¡v¢àa!Ü¢vÊÁÊ¡!ÊÁСܡܡࡢ¢Ü¡¢b!ÊÁÊܸÊÜÀÜÜ¡¢àÁÐÁÐÁÔ¡ä"ÀÊÜB¸ªe]öea6fevfgVÜAСàAÜAÊa'Сà¡ÜÊС!ÐÁÔ¡ÜÜ¡ÜA Êa'Ôà¡!ÊÊÁÊ¡! ÂÊ¡!ÊÊÊ¡!Ê¡!„ f|¢Üþ|ÜÜà¡à¡!ÊÁÐÁÐÁÊÁÀÊÜ¡¢vÊa'ÊÁ)ÊÁÊÁ'ÐÁÊÁÐÁÊÁÐÊÁÊÜ¡¢à¡¢à¢ÔÜa!Ü¡àAÜàÁPÚÐÁÊÁÐÊÊa'  ÜAÐÁà*Ü*¢àAàAà¡Ð b'Ô¡! ÊÜŠÀP¡!V¡!ÐÁÊÊÁÊBÐ*Ü¢ÜA,¡bÜ¡ÐÁÀÁÊÁСÜ¡¢v¢СàþÜ¡à¡|¢Ü¡Ü¡à¡Ü¡à¡Ü¡¢ÐÁà¡à¡à¡à¡à¡¢à¡v¢vÀa'ÊÁÊ¡! Ü¡¢ÐÁÊ¡!àAàÁ Paà¡СÜÜ!…à8ŽåxŽé¸ŽíøŽñ¢ÜÔÊAÐAÐa'ÊÐÁ¼Üa!ܡܡœ¢ÔÁÐA¢Üܡԡ!à¡ÜÊ¡!Êa'ÊÁÊÁÐÁÐÁ'„ŠÊÁÐÐÁÊÁÊÊÊÁÊÁÐÁÈ¡ÜþÜÜÜàÁÐÁÐÁС!ÐÁСÜa!v¢ÜÜÊa'°a'ÐÁÊ¡!ÐÁÊÊ¡!СÜ¡v¢Üܡܡv¢Ü¡à¡ÜÊJAÚÀÊ¡!Ê¡!ÊAÜ¡v¢*v¢ÔÁ)ÊÊÁÊÁÊ¡!ÊÁÔÁÊ¡!Ê|¢ÜÁNf HAÜ¡ÊÁÊ¡!ÊÁÊÁÊ¡!С!Ê¡!ÔÊvb,aÐwС!à¡!ÊÜ¡àÁÊa'ÊÊÁÊÊ¡!ÊÁÊÐÁÐÊ¡!Ê¡!ÊþܢܢvܡࡢܡܡàÜÜÊÁÊÁÐÁ b'Ê¡!ÐÁà¡¢ÜÜ¢à¡Сà¡ä " vÜÜwh»¶mû¶q;·u{·y»·}·ÔÁ ÂÐÁÐÁÔ¡àÁÊÁÔÁ'ÊÁàÜ*xg!v¢à¡àÜ¡à¡à¡!ÐÁÊÜ¡àa!àÜÜ¡àÜÜ¡ÜÜ¡âAÜa!ܡܡà¡à¡Ü¡|¢v*Üܡܡܡà¡Üþ¡ÜœÊÐÊÊÁà¡x§Üv¢¢v¢àÁСÜ¡à¡àÁС¢xÇÊÁСÐÁPAÚ Ü¡¢ÜvBàÁÊa'Ê¡!ÊÜ¡ÔÊÜœÜ|¢àAÐÁÐa*¡ÔÁ‚Üvv¢Üa!ܡܡܡ܄ÀP¡ÜÁà*ÜàÁÀ¡ÜÐÁÐÁÊa'С!Âà¡¢v¢¢ÜÊܢܡvÊa'þÊ¡!ÊÐÐa'ÐÁà¡àÁÊ¡!Ê¢¢Ü¢œ¢ÜÚ& !Ê¡!ÊÌkÞé½ÞíýÞñ=ßõ}ßùß*Ô¡!ÐÁÔÁÔÔ¡ÜAÊÁÊ¡!ÊÁС! ÂÊÐÁà¡Ü¡v¢Ü*à¡à*ÐÁÊ¡!ÊÁÊ¡!à¡¢¢v¢Ü¡Ü¡|¢à¡Ü¡À¡!Ê¡!ÊÁÊa'ÊÁ'Ê¡!Êà¡Ü¡ÂÊÁà¡Ü¡vÜÜ¡àÁÊÁÐÁÐÊ¡!Êþà¡Ü¡Üà¡Ü¡Ü¡Üv¢¢ÜAС!zAЄAb'ÐÁàa!Ü ÐÁÊÜÜàa!à¡С!ÊÁ ÂÊÁÔÃÐÁÐÁÂÊ¡!ÊÁÔA,¢à¡à¡à¡Ü¡v¢vàÜa*ab¢àÁ'à¢Ü¡¢¢ÂÈÁà¡ÜÜ¡ÜàÜ|¢Ü|¢Ü¡Â@t˹+箜»r ºC¯œ@tåࡃ^9xàà¹CWþN`9wèÜ¡s‡®œ@têÚ¸Š€Î:wåÜ•SçNÎ<{úü 4¨Ð¡D‹îtWÎ:xîà©s§Î:wåйC箺rèà¹+¯œÀrð–X]9åÜ¡ƒ'°¼rîÊ9XN`9xåй+ç°Êh9ð”O9îÀS<ê8„áê€åÀîÐî°î åî è è åàåÀåà:ÑIê€:E ¤ î@ îPððCåðCèåàèðCåàåðCåàåðCB` ›àè èà:êà:áåà:áê€?¤è è ð ðPè îPî€<Aå èè è è î åà:á;áêå è ð ¼ÁþèÐîPêèÀè èàêfP àååàåpˆµj«·Š«]TîP?T?Tî åàðP]Tî€îP]Tî€?T?Tð€î€?TîPU…î€îPðàåàåàåðCåèðCåÐEåàåàåðCEEàðP<î è ðPêà)¤è ðàåå îP:;å°è îÀîå€ð€ðà;áêàåÀî`èàê€î îè ðPè èà Â`î€:ðþP?¤èÀè èè èPî î èðC<áðP>áê€?¤–P îPÁàèàèðCåàåðCåàèðCå¼ÑE¼1Š€ ðàèàåèàè ðàè ð€ð ð î€ð€î€êååêàJêî€åî ðàðàèàJååàðàåàèàðà:î€î ð î€îP®êåàðàêèàJêàJêðCð ðÀðBîÀî îPr€ PîPîP?TîPîPþîPîPîPîPîPîPîPîPîPîPîPîPîPîPîPîPîPîPîPîPîPîPîPîPîPîPîPîPîPîPîPîPîPîPîPîPîPîPîPîPîP]T?T?„î€îP?¤îPèàèðCèàèåàèðCåàèðCåÐEèàåðCåèPîPðP?TîP?T]„î€îPè?„ðàèÐEåàBB€ê€îèêàð€î€ð èêðþCêî€ðPèåðCèî èàåàðPîåêàJèîèPðàå å è èP®„ÆëååàJî¼è°èàê€î ¼Áð èàåê@ Ä èàè:î èàêBêî€ê€ê€êÀî î€ê€ê€êèîî€åè )¤èàê€B` ¤À«ðCåèåðCèåàå€TîP]TŠ@ å ðP:ñCå€?TîÀåàè åàêðCåþ åàåà á ¡ðPðàå€å€9 åàèÀî î å ðàå î€ðàåèàèà9íå îÀîÓåà ð€ååðCåÐEêðCêàèàJfP PUåðCåðCåðCåðCåðCåðCåðCåðCåðCåðCåðCåðCåðCåðCåðCåðCåðCåðCåðCåðCåðCåðCåðCåðCåðCåðCåðCåðCåÐEåàåðCåðCåàèàèðCèàèÐEåèðCåàèåàåàèàåðCåàåàåàþèÐEåàèðCåàååàèÐEåàåðCåÐEÜàà áèèî îP?å åàèPî  áåÀå îPêàåàè ð èåàêPðPîÀîPèPî å ]¤îêà ¡9ðPðÀèP:QêÀð°î î ?Äî è î ¨ m å åðCèàêêðCêÀîêî€?¤î ]¤î 9å€êàå ¼ÑEêàêðCê0–P ?Ô åàåàåàþðPîP?TðàèPîPð€ðPî3` ¤ÐEåÐEåêàåêàêêÐIêàêÐI:ñCê]TîPî î ]¤åàêÐEêàåðC ê€?Tè  ñCêðCêàêàð U¥?¤îPî å°îðèà !¨0ðà)¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼èèÜ -ïò/ó1ÿòØ 2ïòØ /åðCèþ?TðÀðàåðCèà¼ñCèàèðCèðCèðC¼èæ@]TTðàè?TîPð åà áêÐEåÐIêàè U¥]¤îP?¤åÐEå åîPêðCêàåàêÐIêàå áèPUêàåàåàêàêPUêPî è è ¤?Tð€¥@ m ¤èàêÀî ]¤åàå î å:ê€êÐEêàêà:ÑI;åàð è –@ : èðCåàåèðCèðCåÐIåàþåðCåBP ¥àèàêàèàåàåàåàåàåàðåÜ Dç]9xåà¹CWÎ]¹rðʹS§ž»r5ºS¯œ:xðйƒWžºrËmÔX^9uîà•ƒWÎ:xåÜ©s‡®ÜÀrC–sWμrîà¹+7žTÐ ,7°ÜÀrË ,7°ÜÀrË ,7°ÜÀrË ,7°ÜÀrË ,7°ÜÀrË ,7°ÜÀrîʹ+ç©>r/fÜØqc7tÚÈqC§Mc7Š­rWn ºrî‚¶*˜°U¤ƒ [5zU0aÁ„­½Šôª`ÂF¯ &lÕèþU£Ñi,ç»"Æ ÚshѰ=ö‡møU‚[Ð7¨p‚j¨uHub€‡PtP‡R 9p-º®ªˆr€‡Š@w€wPw@‡€xPwP‡rˆ½Šp‡r€wP‡rpupu(u€u€u@!°R@uXw€‡r-q‡rptˆrˆrˆrp‡rˆrK(w(w(‡@w€w(‡(x(w(w(w(w(uˆp‡rp‡r€‡r€w(x(x(w(tþt(upˆp‡rpxp‡rp‡r€tp‡r€t(x(w(‡(‡(w€w(‡(w@x@‡r€‡¨w(w(w(wÐ’(w€3(… ˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆr˜žrptˆ9ø›³‡¿±‡œ³}° {`!èÀ‡zЇz°œ«}¨}¨›ƒRx@‡rPtˆ†vä†rhG,‡mÈ-A‡h‡0ÀhàNþ 5°n¨n(nÐp‡`€x(‡@w(xtÀˆàp(p(p€p(qð€jðnhq°#€q°#€xHXøqàˆ‡r@p(tønèh€ˆP‡h(tà†rÀRtÀt‡pP.àMP.¨.àø؆ (q(‡v,thGtn@†h€:wPw b0ƒPt¨tPx(‡Š(‡Špt(‡Š@w¨ˆ(¨s‡Øs¨+x(‡€:wPxˆP„Mˆ^@‡r€‡rˆrtptˆr€-þt€tˆP„Mè*t(w(x˜t(w(w(es‡r˜tp‡rp‡rˆrp‡rpˆ˜žrP¶Šp‡r@w@‡éA‡(‡é)‡(‡@·*w(‡(‡€·*‡éAw(w@‡(9@…ÐxÐxÐx@x@x@xÐxÐx@x@x@xÐxÐx@x@x@xÐxÐx@x@x@xÐxÐx@x@x@xÐxÐxÐ’rˆr€7¨‡y°Ð ]Ñ ]¥á‚Z°JPƒ@"Ýy¨‡Ñ ]}€{˜K †rˆŠ€pàþ†rÀpÀppàmÈ€oàmH!H€m‚o€g8pà€(x(lln‡æhGW`w(w(‡‚x(wˆlÀRlÈÒvÄgH€è5hNØ5hOØ5€p€ƒ¨p(lÀRl‡æhGaˆ†€ºhàlhGnnÀtÀ†ohl-€#pKˆHmP'g‚o°llhÇænhpf@x@u@u@bwPtPw@w@uÐ’Ð’®BwP-Qtp‡.íRu@xÐ’P-‡-Fwþ@w€u@‡"(…M€‡r†Ðw(x(w(w(‡(w(w(‡(tˆ"°T(t0«rp‡r˜tè*t(tptptpt˜žr€‡(w@‡éQ‡(w(x(wèRw€w@uˆrp‡rp‡rp‡rˆr@‡(x(t-ˆrpxp‡r˜žrx@up‡rpx(w@‡®*w@x@3@… ˆrˆrp‡rp‡rpˆp‡rˆrˆrp‡rp‡rp‡rˆrˆrp‡rp‡rp‡rˆrˆrp‡rp‡rp‡rˆrˆrp‡rp‡þrp‡rˆrˆrpx(tn }˜驉mH"0thy…°‘i{PxØ„`p‡rpuphhŽæžþ†æà‚‚Að/H€Xl€oH"P8!àipàiphŽoèh˜žrˆ"€‡"€hhpà†æ€†æànÀPàhø†8€8¨n€7¨‚oÈl‡ àižlàpÀ†oø†^ˆxP‡.lžÀnnð‚Oø†lÀ"0‚XlØ!¨†æàžnÀnh(‡Špu€R †6PwPþxˆ½€‡rpup‡rptp‡Šx¨³rx€ˆŠ€‡rPwP‡rP‡åv‡ruK(…rpW@‡rˆrp‡r€‡éAx@‡éAx(‡éAxE(xpt(tptpxÐw@‡Ðx(xptptptp-qtpt(xp‡r€‡r€wÐx(x(w@‡éA‡r@‡éAw@‡éA‡@‡Ðx(xp‡r€‡rpt€-qt€‡rp‡r€w@‡rpx@x@w@x(w(w@w@‡é‘Tˆw(‡(‡®*³*‡(‡þ(‡(‡(‡(‡(‡(‡(‡(‡(‡(‡(‡(‡(‡(‡(‡(‡é)xpu@f}Ȥ7itxˆxÈ$xÐ$Î$xˆ‡yˆxФ7 ¥PÚWxt€tàihà†çÀhlnˆÀæÇnnlhàhàihÀ†çÀaˆ†.utp!p!(Çlž‡çà†ohà†oˆàéoÀ„æ`knplnhb€†r€‡Pl€làl€žæhˆnˆl€lˆ†ç˜0!àöæàlˆlxlàhàihÀ†^ˆ†€þu@‡r@b0t(w(¨s‡Š(xp‡r€w@w¨tPˆPxPKu(‡éxp‡ŠˆØCu@u€u@!°T€wx(w@xpˆ@w(w(w(w(‡(w(w(w˜K w(‡@w(w(w(‡@w(‡(w(‡(‡(‡(‡€‡r@‡@‡r@‡(x(w€w(w(‡®B‡rˆr€t(wÐw@‡(‡(w(‡(w(w(w(w@x@‡r@‡é)w(w(‡(w@x(w(w(w@3@þ… ˆr˜pˆrpˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrp‡rp‡rptpu€:¨‡xXnxp‡7qxp‡xxwx“x˜xp‡x€€p'^‚wøÛßîðPœÂ‚x¸):¢w”ê@G9<¤x *‡@Ôu”ð(‡:СŽr¨¯A‡;С¹#,èp:Ôá!w”Ãåp‡:Ü¡Tà î(<Üw”ÃåpG9ÜÍ £ ËjÊ¡™rŒåH9ÜQ”ÃþåpG9ÜQw„e– …@háŽr¤ð09ÜQw èpG9àá!Í”î‚%6Žrî(‡;Ð!r¤î(‡;Ê1šrî(‡;Ê!p¸£î(‡fÊ!rh¦)‡@ÐQx”C èH9R”C å@‡;Ê¡™r¤î(‡;Ê¡™r¤)‡fСt”C èЌ̠x¸9 < < < < < Á:ÀC9À:À:D9Àƒ‡À:Àƒ‡¸<”<”<”<¸:"‚:¸Ã*::ŒF9¸C9hF9¸:¸C9D9¸Ã ”Â&D9hF9:D9¸<¸:¸:¸:¸:¸C9<”ƒ@”<¬F9D9 ƒ@x<”:¸:¸C9ŒF9¸C9D9¸:¸C9¸:¸::ÀC9D9Àƒ;”ƒ@”ƒ;”ƒ; <”ƒ@”<”ƒ; ƒ;”ƒ;”ƒ@xˆ; ƒ;”:´)p€@˜ƒ;þ”ƒ;”ƒ;”ƒ;”ƒ;”ƒf”ƒ;”ƒ;€ƒ;”ƒ;”ƒ;”ƒ;¼†@”ƒ;”ƒ;”ƒ;”ƒ;¼†@”ƒ;”ƒ;”ƒ;”ƒ;¼†@”ƒ;”ƒ@”ƒ;”ƒ;”:¸<”ƒ;”ƒ:ŒFX¸:¸CX¸:¨ƒ;¨:¸::„:¨ƒ; ƒ: Ãj¨ƒ@ ƒ:¸:Œ:„…;¨>©Ãh ƒ+ºƒ+ „:¸ƒ:ÀC9¸:¨ƒ;¨ƒ;„::¸:„…; < ƒ;”ƒ;”ƒ; ƒ@”C`‚ ƒ; ƒ:¸< ÃÕCX Ãùƒ+¢CX ƒ:ÀC9¨< <”:¨ƒf”ƒ:ÀC9Àþ:ÀC9¸C9¸ƒ: ƒ@ Ãh„:Àƒ:¸:”ƒ@ ƒ;¨ƒ;xˆ; ƒ;¨ƒ;¨:„…@ ƒ@¨ƒ;„E9¨ƒ@”ƒ;¨ƒ;”*ƒ¨ƒf”ƒ;ÀC9¸C9¸C9¸:hÆk ƒ@”ƒ@”ƒ;”<”ƒ;”ƒ; C9D9ÄkÄk¸C9¸C9¸C9¸CXÌÀ&”<¸C/¸C9¸:hF9¸:¸C99D9¸:À:”<¸ƒX* ƒ; ƒ;x<”<”ƒ; < C9ÀC9ÀC9À8Àƒ; <”:¸:¸:¸C9ÀC9 ƒ; < C9Àƒ@ ƒ@”<¸:hþ:€<”ƒ@ ƒ;”<”ƒ; ƒA”<”ƒ; ƒ;”<à“; <”ƒ@ ƒ; ƒ;”< < ƒ; <”ƒ@”<¸:¸C9D9Àƒ;˜A`€@ ƒ@”ƒf”ƒf”ƒf”Ãj”ƒ@”Ãh”ƒf”ƒ@”Ãh”ƒf”ƒ@”Ãh”ƒf”ƒ@”ƒf”::¸<¸âù:<œ;<œ;¨ƒ; ƒ@”<¨<¨ƒ;¨ƒ; CІ…; ƒ:¸ƒ:¸:D9À:¬:¨:ÀC9À:¸CXÀ:¨:„< Ãk¸<¨<¨:Àƒ:D9Àƒ;¨ƒ;<œ;”ƒ;”<¸:D9þÀƒ;ü€;¨ƒ;Àƒ:”ƒ;<œ;„…@¨:„:„…;”<¸:¼†;”CX ƒ;„E9Àƒ;¨C9¸C9¸ÃkÀƒ:Àƒ@”<¸ƒ:¸:¸C9Àƒ;”< ƒ;¨<¨ƒ;<œ@„<„…@À:„…@<œ@¨<”<”<¨:¸C)ƒD9¸C9¸C9 ƒ;”<”<”ƒ;”<ñˆ><¢Ç=ñˆéóÄz<¡«z<È@SŽ;èÀƒN0ýØ:<¦Çz<¢ÃÏ<ð„OèðÄz<ðˆ=óÄ:<óÄCJ9ð¨;ê CŠ0r”ã:îÀSŽ;å #T96¡ÃZ9î”ã:î #T96)‡MÐát¸å€G9àát¸î@‡;àátÁ›°É*lRާ•Ã&åJ9ÐáŽr¥6™%PQ›”Ãå°I9lR›”C(åpG9þ"çŽr¸£¬)‡;ÊáŽrؤ6)‡;ÊáŽr¸£6)‡;Êa“r¥6)ÇÓÊáŽr¸CB)‡MÊáŽrؤ6)‡:„R¢Ã&å°I9„R›”C(èp:lR¡”耇;ÊáŽr¸åp:lRx”Ãèp<Êátؤð8:ÔrØåp:ÜÖ”Ãð@‡MÊa“r¸î@‡;²w”ãiêp‡æÊ¡wÀÇElR›¨Ã&šC‡;Êáx ÃåpG9àQ¡À£î(‡;ÊóØB)<,âtØ6A‡;Ðr<­6)‡PÐþ!”r¸£î8:˜¡ºy¨Nuóø§êB'ЂªM¨ê† ›”ÃèèE?Üy$ÿœ‡êæQÐyÀãŸóøç< :Õ¹cåpÇyÐát BmpG9àQw”åpG9Üw Ã&åpG9ltؤð(‡MÊ!”rؤO+‡;Àa“rؤî°Î Q w¨ƒî@‡;ÈápØåpG9ÜŽrÀÃ耇;Ê!”rA¥pG9„Rw Ãèp:Ü›”Ãå°I9lRw”ƒ5åpG9„‚x¸î@‡;Ê!”r¥î(‡MÊat¸£6)<ÊáþŽr¸î(kÊat”C(èàa9„Rw”ÃèpG9Üw £6)‡MÐw”ÃåpG9ÜQw”ÃåpG9ÜQw”C(åJ9Ða“rؤî(‡PÐQw”ƒ5åp:ÜQ¡ Ãåp:Êa“r¸å° :lRt¸B):Üaw Ã&è8:àáŽr C(åp:àáŽrÀ£îx‘;Êát¸£6)kÎc“rÀ¬±ˆPÐáŽrØ6)‡;Êa“r¸£ð(<Êát¸å°I9lb› Cs6QG4àwÀÃñ@‡;à!x¸ð@‡æÐþÈÁÃèà¡MÐtôèpG9àŽ`ØèxP àPÚàð 64€  `O 8 F° BåЗ}‰~餠ðàåêॠr€îå`è`å`åàå å`åàåîPBQBî€î€åî€î€î€î€î€î€î€B` ¥`«àèè`åàå åàè åàåàåå`–@ þ6QîPîPBQîP¬QîPîP6QîPîPBQîP6QîPBQ6Q6QBQ6Q6Q6Q6Q6QîP6QjVîP6QîPîPîPîP6Q6QðPîP6QîPîP6QîPî€î€îP6Q6aå`èàå€6Qèàå€ååàèP66î€åàååàèàè`å`å€ðàå`åàåî€î€ð`îP¬QîPèåàå€î€ð€ð€îP‘ƒþð€BðP6QðPîPîåàå`èP6QðP6Qð`î€66å€ðPîPOS6Qî€BQîP6Ñ—ê€Ñð ૹڗºŠ å€ àPÛ`àð - @Ø «å «Ø «ÐZàÐ ÐЗêàê ðØPºŠ à€ åÐÕå _ÀFà° BÜÀ ÛàPÀÛ àð 嫨åÜ€›Pêåè ¤ måàååàåàèàðP6Q6Qèå`èàåàå`åþ`åÀåàå å`å åàê0а èཀå`!åàèàðPð€å å 3` ¥PîP6îàî€îPîP6Q¬QOSîPBaî€î€å`å`å`åàå`å`è`å`è`åàðàåàåàåàåàèP6QðPîPOS6Q6Qè èàè`å èå`åàå å`ààå`å`åàå è`åÀCåîPîP6Q6îPB6QðP6Qî€îPþî€îPî€î€å`åî`î€îPðàåàè`èàåàåàèåàèàåàå åå`å`åÀå`ð€å`å€ðàåàèàå`èàå`ààå èàðPî€åîPîP6a6ð€6¡ð ÐØØ€ àPÃ5¬«Ü€Ãà  ÀÖ0pðÜ€Ãà€ ¹Š à€ à€ÃØÀ Á î 9èÄ0¹ŠÃºÊ àD€ Š· Bâ FÀ‡ ÑÀÜ Î ØØØ«5œ«›`þå å èà Â`îPî€6ðàå€6ð`îå åàèèèèåå€î€î€î€î€î€åå€îî€E° ¨Pî 6Q6a6QîPîPîPð€îðPîPî`ˆP ð€ð€î€î€î€î€îèèåðPÙáèèaèàè å`å`åàèàèèèàáèàèåàèàèèàð`ðàèèàå€îPð`ðþ`ðàåàå`ååèàè`Ù6Qî€ð€îå`åè`åàåè`åàèPîP6ðP6QðPîPð`åàåàèå!èèàèåàå å`èPî€î€ðP¬¬Q6QîèPð€ðPîPè`åàèaå€6îPîå åàèåîPîPî€ðPð€î€îPî€î€ðPðPèèèàåàáå`åå î Ü€ þñŠ ñ¯Ð€ Ѐ ñú Ü NP·à } yp ÐÀ ØÀ 5Ì ØÀ ØÝÜ€ Ü@ ÌЗêЗ½ØÝÐàÄ߀ y À N`}ß   [ðßà B°Ï ÐÀ ØÀ Ø ñZÃè° ð 6aåà ÂÐî€6Q6îPî€6Qî€6Qaåàåàåàå`å`å åàå`åÀ}éÖ¡а ð஀îPîP6aðPðPBQî€ðPðPî3P ¤P6QîP6QîPî€åàåàåþBQð èàåàå`å`å`èèî€åàåàåàå`å`å`åàåàð€î€6îP6QîP6ðPð€6Q6QîPðPðPè`è`èàåÀåàèàèàåàèPðàå`å`åàèå`åàèå`èåàå`èå`èàåàèå`å å`åàåàå`å åàå`å`å`å`åàè`åàå åàåàåàåàåÀèP6QîP6þðàèPî€îP6a6QîP6QBQîPBQ6Q6QîPOSîPîP6QBðPêè Ø 5 Nü ÐàÄ5Ì Ñ ØÀ Ø Ø 5 Ø0#Ø Ø V ½ 6¡6Ñ ð N<#ØÀ ÑÀ Ø Ñ€ÃÑ ÑÀ lŒÃÜÀÆl\ÃЀ ÐàÄЀ ›PîÖáè@ Ð`èàåàèàåàå å`åàå æ@6Q¬Qî€î€î€î€åî€î€î€î€åîî€:P ›€î° þîå`å`å èàå å`èåEP ¨P6QBQBQBQ6QîP6QîPîPBQîP¬Q6Q6QîPîЗáN »rË ,'°œ»r˹+箜»rÝ•XÎ]¹åÜ•Xn`9xå–sWÎ]9wå–sWÎ:wèÜ•XN :tðÊ ,ç»rðÊ D箼rè¢X»rðÊ¡ˆÎ]9xåÐ ,'°:xå–ˆÎ:wèàñXN`9åà¡sWÎ:wèàñ„Wn`¹<Ñ ä9°:wåÜ•ƒç®œÀrè–s‡þN`9wèà¡+¯œ;tîÊÁs‡^9wå–sWN`9wè–XÎ]¹rË©S‡-4hш?ƒÆ,Z4lТ‹Æl9±hÄ¢A‹m9¶hذEƒøxf̆ES¯œ:x½âÆ-šwdÄ¢A‹m94fјEƒ†h¢h˜Y.l¢Á&šñ ‰n6§xÐQÇuHFШxÊwʱˆ'wਜÀ¨Ê¨œÊq§ʱˆ7w€ÂRê¥wÐÇrB§xÊ‹Êq§ÊÂ’R*žrÈqwȨʨʨœþʨxОrà)G r*g rÜ)g r*G tÊr*Ç"tʨt*G rÜ)G r*ÇtÜ)Çxʧ‹ÊʨœÊ¨wʨœÊwÊq§‹Êq§t*g rÜAÇr*žrÜ)žr*wÊqwÊqwÐq§Ð)tܧwШxÜ)Êq§xÐq§xÜ)Ç¢rÜAg r*g râI rÜAžrÜ)žr*ʨwÊq§xʧwÐqwʱˆ'Ðà`°ù¦æš¹þp¸¦ær šoÀù›¿Áæl¾ñîh§±AxÊr¼«™ï¾p¼Ãh¸ù†›o¸á¦f°Á©mn ù§¿ÁTÊÁÛtÊgaÌpwÀÐtÜ!ÇtÜ)G râ tàAžrà)žràqràqwÐqwÐ)wÐq!A¥u‚AG žÜ)g rÜ)ÇžÊqÊHKJAžr,¨tàá žràAtÜá žràá tà)ÇxÜAÇrÜ)G r*ÇxÜAtàG ràáÉx s<ÐáŽrþÀ£†q²’++ã#~¸  +“++²‚+ù±² .¨ ‰_0«s -ÁàG ~Á¬BK~´ƒ_0´¬B ~ÂÔL€´ð ´¬BK€´¬Ì*´Ð‚_0ø#L0ø Š_0ùs "ôIJßm”ãN9 •:ð”ãN9¡SÎBå¤T<åÀã:î S<布Ž;脎;踃Ž;踃Ž;ð¸ƒÎ Š Ö*î CP9îP¤Øa•:îÀSAèÀ㎠_@‘¸PdQ4ЃL»åbSî3õê[ï3èbþ³/4ØCp»Ï”ËÌÀÏÐü ºÏìûL¹Èìû ÁÄ@ 4Ñ K ºÑ@CL¹ÑÔ 1ÐDSn4ÐDƒM¹ÏLM 6õFS.6S£‹ 4Ø” 1õ 4Ä@CL»Ñ@CL4åƒ 4Ø”‹ 2r€;xPd!‡;ð”O9•ã<åÀƒŽ;à,<å¸SNJå¸SÎZå¸SŽ;è¸SNJåTŽ;帖–”;½¸SŽ;è¸O9R9•ãN9ÁSA«þ˜ óÌa*¤”R *Õ—‚J)¨”R})Õ£BÊôÕOïý&Õ—‚ )Ó{OŠ÷¨R )Þ“2}õ›xOJ)¤”‚Ê&Þ—R=)PAŠê‘Â{¤ØDõHAŠé•bí+…÷JQ½R ¢Õ+*X T”¥ EõJQ½M´¤(*J±‰êMÕ#E)JؾR”pÕS`)Ú7=(…÷HQ½RxoÞ›^õJA ¢¢›@)¦‡ Rx¯Õ+)˜è½Rx¯›`b)ÚW R ‚Õ#E)¼W T”¢z¤@)¦W½RȰÕ#*H TTbz¤()JAŠê•‚Õ+þ*JAŠé)°•Ø„+JAŠRl œžK¡GV¯ ¬Þ&P¡ÀRTBÕS *HQ R”‚¨˜*ôˆ –‚¥ *X TLÕ+)J¡ÀR¬" E8ft „"å(:RRw”ÃåHI9ÜrÀè€:Üw Ãè(:ÜŽ…”Ãèp:ÜŽrÀÃèp:Üw C–Ø„;ʱ ‚”ÃåpG9Rw”åpG9‚Žr¸£îP‡;Pц6LÊ r0ÃFã#3´Á mˆOÌІøl4>mC|Ì ‡ø´Á r0ÃFÍІø´!¦rˆ©þä`†šAfhƒäÐ3ÈÁ rˆéFã³Ñ6˜¡ @•P§*3´!>m0CÌ ‡ø´Á mˆOÌ 3´Á mÈ‚²ŸšAfhƒÚ`9ħ rˆOä`†6˜AfhƒÚ`†6˜¡ ñ‘C|Ú`9l4¦rª69ÄGfhƒÚ9ÄTfhƒä°Q3LÕ m0CâCŸøÈaªmˆOâ3U3´Á m0Cb*‡˜ÒÇ mªäŸ6˜aª1•PÛ`†ÆTfhC|ä`†6˜¡ ñiƒÚ 3ÈÁ r0ƒÚ@3Èa£ñiƒâÓ3Ðg£r0ÃFþåÐ9˜A@•CÌ 3Hª rˆ¦j9˜AfCä`9˜¡ ñ‘ƒäÓÆTfÃFå`9UfCäŸ6È¡ r0CÌ@3ÈÁ rh}Ü…x“ åp:BŽrÀÛ)AžéŽr,¤ )<Êw”ƒ åHI9ÜQŽ…”Ãê˜"HwôÂèp:Rw èp:‚w ƒ åXˆ:Üxî€<¼ hx cÐî4: htІ‡;àá@£Cðp‡¢ÝñèA£cÐè´;àQx”ãÑîP4:àáŽM+Ú€F«áþáE»Ðèx´;háZ¸î4:íŽG»cЉµ;àáV»^ ½¹itÚŠ&<Ð1h‚Àƒ 耇;àáŽA£cÐè4:Xx¸;àáŽM—;6í@»#Öþ†:Mx¸cÐè4:Ü¡èr¸£ðð¦;íE££ð@Ç ÝtÀÃðp‡¢Ë1ho¢è4:àx¸CÑè4:wÀ#ƒŽÇ£Ëw¨êP´;àQt Úð( ÝAò¥»Ït8ÜQ‚ è H9R‚”c-倇;ÐQx˜ƒî@G9ÜþpÀƒ èp:Üw Ãð(:Üw £• AVAr¸Ã›ð@‡;ÊáŽr¸Ã›î@AÊoºðx&:ÊáŽg–ƒ œwçáQu¸CœW‡;ÔQwp¾î@G9àñLwÀ£ðà¼;àÑúÖ»ã™y&:Êr¸c÷ðx&AÊát¸£êà|XÔQt<Ó»¿þ3Ñwp^倇:‚¡Ž`”å H9ÜŽÝ£ƒóèpöÝw ûð(GôŸétÀã™a¹¾;”ƒ; CëZ9硃; <¸C9 ƒ; ç¹ç¹C9¸C9¸Ãõ:¸:¸þ:”<\A C9ÀÃõ¡Ã3¡ç©ç…Åî…Å3¹ƒ:<“; C9 Ã3©ƒ;¨C9¸:´< ƒ:”AÀçÁC빃:ì:”ƒ;”ƒ;€<”ƒ:<“;pÞB”ƒ;pA<:´ž;pž;´A”ƒ;p<ìž;”:¨C9¸C9¨Ã3¹C9çÁC9ÀÃ3ÁÃZ¸ƒ:ÀC9ÀAÀC9Àƒ;”ƒ;`ƒ;ÀC9D9¬:¸8¸8,D9<D9,A C9¸C9¸C9¸C9¸C9D9¸C9¸CXÌ€% :¸C/€<¸:¸C9D9,D9,D9¸C9ÀC9:¨C9,þ:¸<DX,„:,D9¸Cô-Dô¹ƒ:x"A¨C9¨ƒ;¨C9¸C9„A”ƒ6.„:D9hc9¸,‡ tÜAž…Ü)ÇrÜAÇtÜY¨wÐ9 žrà)g!xÊq'ºrÐqràqrN¢ šBÇrà)uÊq§tÜ¡ žrÜ)ÇxСÉxÐqr*‡ ràAÇxÜrà)þxÊAžrÐq§‚Êq§xÐ!È#w*GrÔ‰®wÊqwÐ!HwÊqxrrÜYˆ rÜ˧xÊq§wÊ!¨wÐ9 rÜ)Çr*Çr*ç$tÜAÇrà)žrÜ)žràq§xʧxʧxÜAÇtÜAÇtÜAGKPáuc!ð@AÊA…¸‚ÇBܱw”')‡;Ê¡‚”ƒ 4G9ÜQŽ•ÃåpMRw ÃèpG9Üw Cî(‡;ÐQw”Ãå°S9>„wÀÃåpG9ÜQw ãCåp:NRþw”ãCèpG9NR‚”ÃåpG9ÔáŽrÀ£')AÊ…ÀCèè…:‚áŽr¸î(AÊw”ÃèpG9NR‚”å@‡;ÊášêpMÜQw,Ä4!H9ÜQ‚”ƒ è8I9à‚”Ãåp:Üx”Ãèp:ÜQŽ“”ã$åpG9R‚”ƒ èp:Üw ƒ å H9‚wÀ£)AàQw Ãå H9NRu¸ƒ&êpG9RŽ¡£ðP‡;&âŽr¸î(‡;Êw¨ƒ ð ‰:àQw”ãCåpG9Ür¤î€G9Ü<þw¨£)‡;hò¡rÀ£î ‰;Êñ¡rØÉ4Q<ÊáŽr¸£î(<Ê¡w”Ãå H9NRw Ãè(‡;à¡‚@Èèp:‚w ƒ åpG9àQŽ“”ƒ å€G9‚w”ƒ åøP9àQŽ“”à H9ÜQŽ“”Ãå H9ÜQŽ“¨cŠ(<Üá w”ƒ å H9ÜQw”ã$è8 :ÜQ‚”ê@LJÊArœ„&')‡;ÊÁÑrœ¤î(ÇIÊArpô$å H9Rw”ƒ ‚G9NR‚”Ãå H9ÜQw”ƒ åpG9ÜQ‚”ÃNê :RŽ“þ”Ãå H9Rw”Ãè:\‚”ƒ åàh9àáŽr¸£)ÇIÊa§rpÖè°S9N¢Ž“”ƒ åpG9ÜQw”ƒ åp<ÊáŽrœ¤)AÊq’r¸£)AÊáŽr¸£)AÊáŽr¤A‡;ÊáŽr¤)ÇIÊArœ¤î(AÔñ¡rœ¤î@gËa'u¸ƒ&èpG9ÜQŽ“”ƒ êpG9àQŽ“”ƒ åp:ÜA““ÀCQgËáŽr¸£*AÊáŽr¤î€G9àáu¸£î(ÇIÐáŽrÀÃè8I9àát”ã$å H9ÜQΖþƒ èpG9àQw Ãå8 :Üw Ãè H9àQtÀÃèp:ÜQ‚”î(‡;Êáx¸î@‡;Ðát¸î@G9àát¸î@G,± t¸c)ÇIÐñ¡r¸åpG9ÜQŽ“”Ãå€G9Üw å@‡;ÐáŽrè(<Ê…¸c!')<ÜQ‚ £î@‡;ÐáŽr Ãå€G9ÜQx¸îXˆ;Ðt¸B‡;ÊAt¸ðXˆ;Ðát¸)‡;ÐArÀc!î@<ÜŽrð(‡;ÊtÀc!ð(AÊqtôÂþ«p:ÜwÀ£î(:ÜQ‚”å€G9Ðát¸î@‡;ÐQ‚ Ã G9àQ‚”Ãèp<Ðátåp:ÜwÀ£)<Êw”Ãè H9Ðát¸î@AÊw  q<Ðt¸ð(:Üw ƒ èpG9ÜQw Ãè :Üw”Ãè ÈBÜw ã$ !:Üw Ãèp:ÜQt¸å@GtÐáŽr Ãð(ÇIÐát¸倇:à‚À£ð(‡;ÐáŽr èp:N‚w”ƒ èp:ÜQx”Ãþèp:àwÀð ÈBN‚‚ £ð ‰;ÐÁ¢£Ð Ð ÐÁÊÁÊ ÊÁà¡ÜÜ>d!à¡àÁÐÁÐÁÊܡܡÜà¡ÜÜÜÀÊÁÐÊÁÊÁÊÁÊÁÐÁÐá$Сà¡¢N¢¢¢N¢Ü¡NB„@JÁÔ¡¢àa!ÜÜ¢N¢Üà ÊÁÐÁÐÁÊÜÜàÁÐÁÊÊÊ Ð <ÊÁà¡à¡àÁÊ ÐÜ¡à¡ÐþÐÁÐÁÐ Ð ÊÁÊÁÐÁÐÁÐÐÁÊÊ Ê ÐÁÐÁ":ÊÁÐÊ ÐÁÊÜÜÜ¡à¡à¡Ü¡¢à¡¢àAÐ!Ü¡¢ÜÊàÁÊÐÁÊÊÊܢ܂ ÊÁÊÊÊ ÐÁСÜÜa!ÜÐÁÊÁСàÁÊÜÜN¢Ü¢Üa!àÁÐÁÊ ÐÁÊÁÊÊáCÊ ÊÊÐÐ Ê ÐÁÐÁÐÜ¡þÐ ÊÊÊàà¡à¡à¡à¡à¡¢Ü&ÜÊÊá$ÐÁhÊÁÊÁ¢Ü¡àÜN¢Nà¡àÁÂÐÁÐÊÐÁÐ ÊÁÊÁÊa!Â#Üa!¢ÔÐ hÜÊ ÊÁÊÐÐÁСÜà¡Ü¡Üà¡¢à¡Ðá$ÊÁÊá$Ð ÊܡܡÀÁNÊáCÊÊÊÁÐÁСÜ¡à¡àÁÊÀÜÜÜÊÜÜÜþÜÜt`P VÐ ÊÁÊСà¡Ü¡àa!Üà&ÐáCÊÁÊ Ê ÊÁÐá$Êá$ÊÁÊÁÊ Ê Ð¡à¡Ü¡ÐÁÐÁÊÁÊÊ ÊÁÊÁÊÁÊÁÊÁÊÁÐÁÐÁÊÁÊÁÊÁÐá$Ê Ð Ê Ê ÊÁÐÁÊ ÊÁÊá$ÊÁÊ ÊÊÁÊ Ê ÐÐhBÐÔaÜÊáCÐ ÊN¢Ü¡Ü¡ÜÜܡܡ¢Ð hÂÊÁÂNÊ ÊÁÊ þÐáCÂhÂÊÁÐÁÐÊÁÐÁÐÁÊ ÊÁÊá$ÊÁÊáCÊÁÊÜÜܢܡܡÜÜÜ¡¢Ü¢Ü¡Ü&ܡܡ¢Ü¡Ü¡Ü¡Ü¡ÐÁà¡ì¤à¡¢àܡԡÔÊÁÊá$Ô¡Ü¡ÜÜ¡¢Ðá$Êá$ÊÁÊÁÊÁÊÁÊÁÊ Ð£Êá$Êá$Ê Ê ÐAܡܡN¢Ü¡Ü¡N¢ÜܡࡢNÊÊÁÐÁþÐ Ê ÐÁÊá$ÊÁÊ¢ÐáCÊ Ê à¡¢ÜÊ hÂÊÁNh‚ Ê Ê ÔA,¡ÐÁzÁÀá$Ê ÊÁÊ Ðá$С>ÜÊáCÊ Ê ÊÁÊá$Êá$Ê Ê ÊÁÊ³Ê ÊáCÊá$ÊáCÊ Êá$ÊÊáCÊÁÊÁÊÁÊÁÊá$Ê Ê Ê ÊÁÊá$Ê ÐÁÊ ÊáCÊ ÊÁÊÁÊÁÐa"zÁhÁÊÁÊ ÊÁÊá$С>¤N¢¢¢N¢ìܡܡܡÜþ¡Ü¡N¢¢Ü¡¢ìܡܡN¢¢Ü¡N¢Ü¡N¢Ü¡8ª¢Ü¡Ü¡N¢Ü¡¢¢Ü¡Ü¡8«¢Ü¡8«àÁÊ ÊÁÊÁÊ Êá$ÊÁÐÁÊÁÊÁÔÁÊá$ÊÁÐ Êá$Ê ÐÁÊÁÊ Ð¡¢ì¤N¢¢Ü¡Ü¡Ü¡Ü¡¢Ü¡àÁРʣСÜÜ>ܢܡ¢N¢¢Ü¡¢à Ð Ð Ê à¡à¡à¡à¡Ü¡þà¡àÜÜÜ¡à¡N¢àÁÐÁà¡à¡ÐÁСàÁÐÁÐÁÐÁÐÁÐA,aà¡V ÊÁÐÁNÊÀÁÊÁÊ Ê ÊÊÁà¡ÂÐÁÐÁÊ ÐÊÜÁ#Üa!¢ÜÊÁÊÁСÜÜÜ¡à¡Ü¢ÐÁà¡ÂÜÊá$ÐÁÊ ÐÁÐÐÊÊÜÜ¡¢àà¡ÂÐÁÊÁàNÂ#àa!¢ìDàaÜaÜÜ¢à¡þÜ¡ÜÊÜÊÊÜ¢ÐÁàa!Ü¢ÜÐÁРСÜÜÜÜ¡ÊÜ¡ÜÊ ÈÁà¡ÐÁÐ ÊÜàa!Üàà¡ÂÐÁÐÁÐ Ð ÊÁÊÊÊÁÐÁÐÁÊÁÐ ÐÊÜNb!ÜÜÊÜÊÁÐÁÐÁÐÐÊÁÐÁÐáCÐÁÐÁàÁÐÁàÜÜ¡àa!ÜNÜ¡ÜܡРÐþÁÐÐÁÐÐ ÐÊ Ð ÐÁÐ ÊÊa!ÜÊÁÐÁÊÁÊÁÊÁÊÊÁàÁÐ ÊÁÐÐÁà¡à¡РСÜÐ ÐÁÐÁÐÁÐ ÐÊ ÀÁÊÁÊÊ¢à¡Ð ÊÁÊÁÊá$ÊáCÊÁÊ Ê ÊÁÔa,ÊÁzÁÜÀÁÈÁÐ ÊáCÊÐÁÊ Ð¡à ÐÁÐÁÐÊÜ¡àÁÐá$РЂ ÐÁà¡àÁÊ ‚ ÐÁþÜÊ¢NÊÊ‚ ÐÁÊÁÊÁÊÜÜàa!Ü¡à¢à ÐÁÐÁÐÁÊÊÊ Ê Ðá$ÊÔa!ʡܡܡÐÁÂÊÐÁÊÊÊÊÊáCÐÁÊÁÊ ÐÁÐ ÊÊÜa!ÜÐÁÊÁÐÁÐÁÊÊÜÜ¡¢NÜa!àÁÐÁÊ Ð¡Ü¡ÜN¢Ü¡Ü¡ÜÜa!à¢ÊÊРСÜ¡àÁþÐÁ<‚ ÂÐÁÐÁà¡Ð ÊÁÊÁÐ ÊÁÐ ÐÁÐÁÊÁÊÊÁÊ‚&ÐÊ ÐÊÊ Ê Êà¡àÁÂÐÁÐÜa!ÜܡܡܡÜa!Ü¡àà¡ÐÊ ÊÐáCÐÁС¢Ü¡ààÜb!ܡܡàܡܡÐÁÐáCÊá$ÊÀÁÊܡܡܡ¢¢¢ÜÜÜÊ à¡à¡ÜÊÜÀÜÀÜÜÜþÜÊÜ„@P V hÂà¡N¢ÜÂÐÊÁÐ Êá$h‚ ¢œ»rîà•s‡°œ»rîÊ!,箜»rîйC‡°:wèÜ•CˆÎ]9„åÜ•CX®ÂrîйC‡Ð]9wåÜ¡sW.¦;tË!,‡°œ;tîʹ+‡°œ»r˹+‡]9wå–sW:tðʹS‡Ð-u«Â–s‡.,º°åÜ• ‹®º°å–ƒç®ÂrîÊ¡ƒWÎ]9wå–sW!:„åÜ¡ƒWÎ]9wåÜÁ+‡.¬»rè4—sW.l9wå–CX;tîйC¶œ»rîþÊÁ+‡a9wåÜ¡Cˆ.lJÍå–sWÎ]9„åÜ•ƒç»rîÊ!,¯ÂrðÐiF‡°:Íîʹ+‡°¼r˹ƒWa9wå–sWÎ]9wåÜ• ‹NXå„UŽ;å¸SBå¸SBå ãN9P9èhVBå TBåÀS<布NXå T:î ƒ:åÀSŽfð”£Y9î”O9‘8î”ãN9¡ãN9î”ã:î”ãN9î”V9•ãN9•£Y9î¨3Ã&¥ ã-š•V9¡ãN9î ãN9a¡S<î”V9a•ãN9•ƒP9a•ƒP9š•ãN9î”þV9a•ãN9•V9a•ƒP9•ã:åhVBå¸SŽ;å¸SBå TNXå„UBå T<å TŽfå TBå¸SŽ:踣:å£N/P9•ƒ:å TBå„UŽ;å„UBå TBð”ƒP9a•ãN9a•ƒP9a•£Y9î ÖVè”Bà„UBåhVŽ;å Tya•ãN9a¡V9î”V9P9î”V9P9•V9•O9•£Y9•ãN9î”ã:P9š•ãN9î ƒP9a•ãN9ð”ƒP9¡ƒP9a•V9•ãN9P9îþ”V9•O9ð”ƒP9•ƒ:¡S:•ã:î ãN9•£Y9P9a•ã:布Ž;æãN9à „8ð”;è TBàÀS<î ƒP9¡C:î ã:îÀS:îÀS<î ã:î ã:åÀã:BXB <î¬â8ð”ƒ9¡ãN9•V9î”;å ã:𸃎;è„U:𔃎;òºƒ<å¸SŽ;è„U<布Ž;è¸S<布Bå ã<å ;[ÁS:•ãx”Ãåp:Üx î@‡;Ðát¸£!‡9àQŽ­À£þè€G9Ж­ ¤ð@<¶r ¤C‡:‚ŽU¸å@:R„ Ãð(:Üw Ãèp:ÜQw Ãè€:Üw”!倇;¶ât „A‡;Ðát ¤î@G9àáŽr¸šG9ÜwÀA‡;Э¸ð@<Êt¸å€8àw !åpG9àQt å@GXàQw î@‡;ÐáŽr¸ð(‡;àát¸î@‡;àQw Ãèp‡¼àQw Ãð(BÊrÀ£ð(:Üx”Ãèp:‚w”þè€G9àQ„ ÃåpG9àQt î(<Üx Ãè€:‚x”Ã倇;ÊrÀ£A‡;¶âx”Ãè@<ÊáŽr ¤ABÐát¸£A<Ðát¸î€G9Ür äG9àát¸ƒæp:Vw”å€G9ÜQx”î(yÊr¸£‡;Êr„¥îP‡:f`‰M”ÃÁ(<Êr„¥î(‡fÊátÀ£)<ÜŽr¸î@‡;¶Rx¸£ðp:‚Žr¸ð@<Êát”倇;ÊáŽrÀþA‡;¶w £ðpG9àQް”Ãèp:Üx !èpG9ÜQw”î@‡;Ðr å€BÊw”î@‡;Ðt”åpG9Rx”#,è(:àW¸£è(<ÐáŽr åp:ÜŽrÀÃèpG9Rx¸ð@‡;ÊáŽr¸î@‡;Êát¸î(<ÜQ„”åpG9àar î@‡;ÐáŽr¸£î(‡;Êr £ð@<ÜŽr¸£î@‡;Êt¸£î(‡;ÊáŽr¸î@<¶¢™r £ðpÇVÊát¸£î@þ‡;ÐátÀåpÇVÊrÀ£ð(:ÂR„ #,å€G9ÜŽrÀÃåpG9àQw”)‡;àw”Ã[q:ÜQw”#,[q:Üx”î@<Êt¸å@H9RtÀ£î@<ÐátÀ£aA<Êt¸)‡;Êáx èp:ÊᎭ¸£ÙŠ;ÊáŽrÀ£ðH‰;ÊáŽr åpG9Ðp ¤î(BÐy•Ãèp:ÜQx”åpG9àát¸ð<ÊpÀÃð(<Êw Ãèp:Êw ÃèBþ%P±•` ¤î(‡;Êr¸ð@G9àw”å@H9ÜQ„”Ãå <ÊáŽr¸£)yÊáŽr¸î€G9‚w !åp:R„”#,åpG9ÜQw Ãè@H9ÜQw”î(‡fÐr¸£A‡;Ê–r ¤)‡;ÊáŽr¸£î€G9ÜQ„”!è€ÇVÂRw”êè…:‚rÀÃåp<ÊáŽr„¥A‡;Д ¤ð(BÊrÀî(BÊáŽrÀ£)‡;Ðt ¤)GXÐáx”#,å@‡fÊáŽrh¦î(BþÊx”î@‡;à‘’r ¤î(:ܰ”!èpG9àQw”Ãå@H94S„”Ãå@H9ÜQt¸î(‡;ÊrÀ£aÙ BÊát ¤è@H9ÂR„”Ãè@H9ÜQè€å€å)åàååå€å€å€åàå€åàåàåàèàåàåàåàèå€åàååàðPè€è€å€åàðPðPî€îPîè€èå€åàèàå€ðPQšQðPQîîPQaå€åàþå€å åê0–P î ®€åàð€ð€îPî€îPaî€QaQîPäQQîPîPaQîPQîPQQîPQîPîPîPšQQî€îPSîaQaQîPð€îPîPîPQaaQšQQîPîPðPè êà èPîPQî€aQîPîPšQîPaQQðàå€å åè€åàå€åàèààèàåà[þåQîPQîaQaQîîPîPQšQîPðàåàåàå€å€ååå€åàååå€åQQQšQîPQaQQî€îPQQîîPîPQaQaQîPQQQQQîPðàè€åàååîPèàèàåàåî€å€åå€å€å€å€åî€îPîPîðàðPîåààåî€î€þîPQðàåà)î€åæ@îî€åî€î€î€î€î€î€î€B` ›î ðPîPîPî€îPaQaî€îèPðPðàå€[áèàèèàèîPîPð€åàðPî€î€åàèðPðPð€î°ðàè ðPîPî€î°ðå@î€î@aQî€ðPð€ðPèå€îPî°Q[[ååàåàåàå€è î ðPî€þQîPèàèàðPðPðàèPðå°ðPè€å€èàèà€QðPðàèàåè€èPð€åå€ååàèàèðP2ºî[åèàðPðPðPîå èàè€ðPðPîPèî@î€îPîè€èàèàèàèàèàå€î€î€ð€ðPî€åå€åå€î€î€î€ðPî€î€Aî€î€aîPîPðPðîþ€îPðPð°î°ðPî€ðPî€îPîåèàä€è€èå€åàðPî€î€Qî€ð€î€î€î€å€å åå€å€åå€aQîPðPðPî€aQaQš‘QîPîPîPa¡3` ¥®PðPaQa aQèîPîPðPèPî€î€î€ðPðPî€î€å€èPî€ð€ðPî€î€î€aQ[èàòâðPþðPî€îPîPîðPèàèèààåàååå€QîPðPîPðàåî€î€åQQðàå€èàèáTê@ åà îPðàèàèPðPîPî[¡åî€îPî€î€åàð€åàååàåè€ååæ@îPaQQîðàòâèàåàå€îPîPðàåàå€å€äàè[QîPîPèàèPð€åàè€å þèèàå€ðPðPðPðPðPäîPîPðàååîPQðPîPî€ðP±îPQQî°î€î°î€î £î€ðPðàå åèàå[á[åà[å€åàåàåàå€ð€ðàèPî€ðPîPî€ðPîPî€î€QîPað€äðPað€îðàèàåååàåååàèàè€å€èàèPðPðPðPðPðþàèàèàè –€  QîPðàå £ðPð€îPèå å€å€è€åàå å€åàå€èàèàåàððPQè€å€å€å€å€åååàå倚QîPššQaQQîPîPîPîåàà€å€[è€)áåå îÐ î° î€îPî€QîPšî€QîPîPQðPaQîPèåàè€åàååaQèåàþè€)áåàå 0ååàèàððPaQîPaååàå€ååàè€åàåàåàå€å€åàåàåàåàåà€îPQîP±îPQè€å€ååååàè€å€å€åàåààPQîPî€îPQaQQQQå€åèå€)å€èàèàåå€åàåàèàè€èàààèîPèàåàåàåàå€îPîPèþå åå€åàè€åàèàðPîPSQQîPa¡E ¥€êà [èåàèàåàèàåèàè€å€åàå€åàåå€à å€åàåàå€à€å 0îPQîPQQšQð€ååàå€åàðPà £å€[QQîPQašQšQQîPîPî€ðPð°Á ½àå èPšQîPQQîPQîPî€å€åàå [åþàå€åàèàåàåàåîPð°îå å倨åàå€åàååàå èPîPäQšQîPð€QQQQƒäQQîPQîPî€QîPaQQî€îPQîèàè€å€åîPîPäQîPQaQîPîPQQî€î€îPaQð€î€î`äàè€åàð`ä€åàå€å å å€èààî€îPaQðàè€è 0æ@þî€î€îPQðPaaäàèàå€åå€î€ååî€î€î€î€î€:` ¨€î îPîPî€îPQQîPî€î€ðPðàða±îå€ð@î°šèÜ ,Ï]9xåà•sGm :wåÜÁ+¯rtp‡rp‡rptp‡rp‡rPê*w(x@w(x(÷*w(w@w@w@w(w(xP tptp‡rp‡r€w(êBw(w@‡r€•px(x(w@sp‡rè.tx¥A‡rptp‡rpt ®r€w(w€‡r ®rpt(w(x .tptptw€‡r ®r ®rptp‡r .þtp•è.u(xè.WP‡^pr .•(ê*x(‡î*x(xP‰rp‡rp‡r€‡r€êx(ê*t ®r .x(‡îB‡r .tpt€w@êw(w(êB‡r ®rè®rp‡rpt`w(x@w@w(ê*x(ê"t€‡r .pp¯r@x ®rp¯rpp€• ®r ®rpx(x(t€t€‡r€‡r@w(êBw(x(xp‡rp‡r€‡r .tp‡rp‡r€tp‡rpt€pp/F¡.t€w@wP w@w@x(•pt0þw(w@êR‰rpx(êx`”rpt€êx(‡î‡î*xP x(ê*w@‡ît€w(w(x(x`”î*x(xp‡r€w@w(p .•p/t€t ®rpt(w@w@‡rp‡r .tè.s ‡î*êBw@êB‡r@w@w@w@‡r€w@‡r€w@‡"°T@w†U†U†U†U†U†U`…UX…`X…`X…`(Ð`(ÐU†U†U†U†U†U†U†U†U†U†U†U†U† † †U†U†`þX…`X…`X…`X…`XV†U…ÑU†U`…U†U†U†U†  † †U†U†U†U† †U`…U€ÑU†U†U† †U†U† †U†U† a …Uè< tÀ†`(Ð`X…`(Ð`X…`pÐ`X…`X…`X…`X…`X…`X…`pPuÐ`X…`X…`(Ð`X…`(Ð`X…`(Ð`X…`XV(Ð`X…`X…`(Ð`X…`(Ð`(Ð`X…`X]…`X…`(Ð`X…`(Ð`X…`(Pe…`(PuÐ`X…`pÐ`pÐ`X]V(Ðþ`(Ð`X…`X…`X…`XVX…`X…`(Ð`(Ð`X…`X…`(Ð`X…`X…`(Ð`X…`X…`X…`X…`X…`X…`pÐU†U† †U`…U†U†U†U†U†U†UaX…`X…`(Ð`X…`X…`(P]-Ð`(Ð`X…`pP-Ð`X…`X…`pÐ`(Ð`(Ð`X…`X…`X…`X…`X…`X…`(Ð`(Ð`(Ð`(Ð`X…`(Ð`X…`pÐ`X…`pÐ`X…`X…`X]…`(Ð`pPuÐ`(Ð`X…`X…`X…`X…`X…`X…`X…`(P¥…U†^þK(wPtWèWèWWèWèaè…ap…ap…^ …`èZ€QZàw@w@w@w@w@w@w@w@w(w@w@w@êBêBw@wP w@w@w@w@w€‡rptè.•ptpxptptptpt .tè.t .tptptptpt ®rpxp•ptptpt .tptpt .tptpt .t(‡îBw@‡rpt .upt .tptè.tptptptptptptè.•è.tptpt .tþpt .upt .tp‡rpx .tpH¤.tpt .t .tptp•ptpt .tpt .tpt .•€t .t€‡îBw@‡îB‡îBwP w€êBêBw@w@w@‡îBw@êBêBw@w@êBw@w@êBw@w@w@u@w@w@÷Bw@ê*w€w@w@w@wPw@w@w@uptpt .uptpt .•p• ®r .tptè.• .tptptè.t .t .tptptptptptpþt .t .t .t .tptPw@w@‡î*w@‡îBw@w@w€Dt .tè.•è.t ®rptptptptptptpt .Ht•E >¢…îBw@w@êRwPw@wP•P•‡x(‡hÀtà#•^i–F‡•Fup>r–Viw¨iu(wà#êâ#wPérPwÀiuè.>rœv‡•Fw`iwXiw¨it¨iwà#wà#xPtPw€‡rpu@u .¢.k¢¦.up>Bup‡šF>r•Fu(wPêR‡îRwà#w(þkwPwÀiwXiwà#Fá#t°Ìšv>¢.œv>rupœFœv‡šv>B³Æiwà#wPwXitp‡rÀitølwPtXiw¨iwPtà#wPiwPitÀiwà#w`iw(ktPiêÂiwPêwà#êRtPiwPiwXiêRwà#êBuè.>ru@–vœ¦.•vu .u˜M x@‡`PtP3˜‡îRwP‡r€upu0±xpupu êúìîZiêªità#t0kwP‰•F‡•vt¨iw jtPtà#w¨iwPitPitPt`i•PêþRità#tPt€FAw(w(wà#w jêRw`itpup•v•p>B>¢.¢v‡švupu€Dxà£rp‡r€>B‡š.xPt¨ità#t¨iw@>rtpxp•v•vu(xà#t .>Bw0kw@‡²F‡•Fup‡•vu@u@•†>r•vupu@wà#wPwÀiwà#wPtP•PtPiwà#tPtPtP•pu .>*xp>R >‚‡š.xPtpu(xè.tPt`iêRt jtPtPw‡š¦.>*þwPtXi•à#tXiw@•F•v>Bu@u@w@u@u@•F–F‡PRptè…x@upx@x(•†‡rPxà#•Px@‡^€tpxpt Atpx(x(xp¥)w AtPu@xPw€‡r€w@u€‡r€t .x@x@wPw€‡rpt€wPt .x(>‚w@w€wPšr€t€wPxPt€tp¥Aw€u€‡r@¥Qw€u AwP•ptP‡r@êRt€u@u€‡r€tPxpx@þx@xptPx(¥Qx@w€‡rpxPw€‡rPwPx@uPtp¥)x(¥qtpxP•P‡î*uP x@‡r€tp„tPšr@w€tpuPu€‡r .xP ¥Qw@xPw@‡rpxpx(w@x@up‡rPšrptp‡rpx@x@xpxptpxPwPx(w€w(xpupxPtpx(u€t€€@çΥСs…κrîÊÁXŽ¢ºr˹+ä^ÂsWn`9xê,–sWžEuèÜA.§®œºå(–s‡^9ŠèÜ•£ˆŽþb9wå(–£XÎ:wèÜ•sWNc9wåÜ•ƒG;tË ¬L±Ü@tѹCÏ]9tËQ,箜Êq§wÊËrÜAÇr4*t*žr(*Çr*ÇrÄ*G£rà© žr*ÇxÊqwÊ¡¨wÐqžr*g tÜ)žrÜ)G#tÊq§xÊAÇrÄ*ÇrÜAg tÊq§wà)‡¢r*G#tÊ¡¨ŠÊ§œÊÇr*‡"xÜg rà)Çr(*ÇrܧwʨœÊѨwÊw*sžr(*ÇtÜAÇxÊwʨwÊgþ ràAg t*g rÜAÇt*žrBÇt*g rBÁrÜAÇt*ÇrÜ)ÇpÊq§Ð)g ràAÇràq§ŠÐq§wШŠÐ)wà)žràQŠÐ¨œÐqwÐq!Ú°d˜aP faf•`^%a‚X˜`¦…†I8Z‚&a†é%a‚&az Fàa‚8a‚¦a‚&†W FàU„ Fà`V &aV †á`V&aV&aVáYà`^%ƒa8˜U„Y%aV †áUxf•`^%aV F˜U‚þ†gaV&aV&ƒY%†^E˜U„YEà`f•`V&˜U‚Y…gW †á`V&a‚YE˜U„ F˜U‚Y%˜^‚Y%Wx•`„Y%Wa8aV F˜U‚f•`„áYïU„Y%yf•`„ f•`ôF˜`Fà`„Y%aV8˜U‚faxx•`„ faxf•`„ f•`„YEàU‚éE˜U‚Y…gaV F˜U‚&[E0ŒUlÂÆ*‚±Š`#ÂXE0„Á3a¬"ÂXE0„ŒU#ÂXÏVÁ°UC<[E0„Á3acÁþF0„± C«†0x&°UCÁÆ*‚!ŒUC`«†0V!Œ`ŒgÂXE0 ½ #†0V!ŒUC`«ÏŒUl<F0„ a¬BÁX…0‚!Œ^ƒÁ E0zÁ3aCÁF0¶Š`#†0‚AŒdÁ Y0CÖ!`ƒ™Ì$4¾¡IOrØÈd(¿OzŸü4¸ñSrCÐ8e(¿‘ÉP¾ò“Ðà4Ä n@Ðð$4 Á hpâ€F&¡Á lhòšüF&C©Ih|#“Øø7 !h`㙄7°ñ Mb#“Ðàþ4ÄÁ h„2”ßÀÆ7°ñ p—ßð$4°!brš„†&±ñLBãš„7¾Á x†òÜ€Æ72ùPM~ƒÐø†'¡¡Ix~ß8%62 q@ƒØà4¸OBƒÐ7 ñ n@C“Ð13 oàò”Ðø64 l|ã“耆&¡Á h`㙄F&C h|Ü€Æ7>ùS~ã”ßÀÆ7 ñ n@ã•Ðà8 ‘Ih|ãÐà4¾ñIld¸ÄÆ7^ n@ãÜ€7 Á xzpÅF&±ñW†R“Ðà4¸o|Ü€†'³Tl|ã•ØpBþ„(! EB0„ aƒz †0‚¡·`\1z †0‚qÅ`\1 È!Œ`ø"†/ _# †/ô #¾1„A aC`Áð1ˆ b0ŒÁ1 aÃÁF0|!Œ`øBÁð…0ˆqEaCÄÐ1 †CĆ/üÛ`ò #¾X0L ‘7ÄX0ˆqÅ`ƒ 11 aàÂá b,¾ðo0 _èÁðE0ˆ! b# 1„A CÁÐ1„A^aƒ"F0®H Cʆ/þ„ _CÄÐ1®HŒ+CÄq0® aÿÄ1L C`Ä1„AŒCÄF0 ÿCoÄ1FŒ`CoÁð…Àˆ¡·`øBÁð…0‚!°`øBoÄ1„A aC`Á1„A ½ #Ë †0‚!Œ`0 ð<`‚ ˜`Bö°‰Mì"ÙÉVö²‹°le!ÙEB„P!AEvˆ]„"8ÛÙE ¶†ímpŸ[ÙEvœ]!ÁÙE@w²‹ ì"$»È.¼ùì",»B(‚²½ì"¡ý‚·…P„a{[Ev’9]aë@ØEPx’]eAØEB^eAØE(vˆ]a¡ßE@vímeë`Ø:BÀ;libjibx-java-1.1.6a/docs/images/eclipse-build3.gif0000644000175000017500000235066010350117116021601 0ustar moellermoellerGIF89aÔçÿ   $ - " @- > ('n%&$(8#uÿ*]K&Z#>."345'6K;=:g.@“N=/ Cž*)z1=FR!P|&G£h!R‰*J 6OkbF09Gœ#M¹ICˆr>7fGD}C‹=wK2U­`R@I:W¥)_®!i³Ga€e`M-m¦_ba9[óFb¯3hË9rˆ{^E9pœy>þ®P_a¡Ui™œ]&^BŸXZUo²zpH™h#Šdf]{o2|èkrƒrrp³VUmo”?šd7ŒÉL‡¶N‚̾j/g~ºjŠºhg€w¹K˜›T’«j‚ÒŒ‡ÂqA•…Rž„?r{„†ƒÑeep‰¿©~`³††„¨rª‹uú³†6´zy®„U¿}O¡„~€:•wÌxvµ”$‘Ÿ“–“ÄM¥òr¯Yg®…× –˜•nµx…§›šŽÉy³”¤™¬•¢±…«´ ¢ŸÝ‰‰•£Ã§¢¡nµÞi¼Ì†¯Æ¥§£Ï¢QªœÚÊ¢c¤©«˜¨ÔÓ—’»œÆ¶­yÉ¢ƒÑ¡u‹°ç–´»«­ªÉ¤™~ÁËȰ]ͱK²«½¶°›±±±£³ÒnÌޙȈ³µ² Ðb¬¸ÃÀ±Æ¸º·í¾žÄÚ½»¿¡Í²›Åó³¾Ù½¿¼»ÀµÃÿÁ¾À¾Ó淘̻Êݸ²Ù¶Ê£ÏØØÈqÅÂDzÉÚäÀÄÂáÓÌ‘¯Ö¾ÆÆÖÇÉÆÓÉ©º×¨Ú΃êÍ`åÎi¨ØßÌÊΩÕù—ãôÒÅ÷ÎÐÌÕÓ¹àÔšÕÎÚºÛâÒÔÑ°ßøùÒ}àÍàáתÉÙáÑ×ÙÑÕäÖØÕÝÚÁàÛ¸ÚÜÙÚßâÕâãàâÈåÛâóäàÞâÞàÝáà×åÝôÃï÷öæãåâíäÑóë¨åçäõé±Úëúãç÷èêçãîöëíêîðíýó¾ùóÏîóúç÷ûúôÝõ÷óýûàöûþùû÷øýñþÿü!þCreated with The GIMP,Ôþ[Thѡdž*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cŠ¬Ð‚¹›8sêÜɳ§ÏŸ@ƒ J´¨Ñ£H“*]Ê´©Ó§P£JJµªÕ«X³jÝʵ«×¯`©¶€ Nß¼yñÒª]˶­Û·pãÊK·®Ý»xóêÝË·¯ß¿€ L¸°áÈ+^̸±ãÇ#K¼a^Zr“3kÞ̹³çÏ C‹Mº´éÓ¨Sî Î\Ø×°cËžM»¶íÛ¸sëÞÍ»·ïßU;x»¹mšñãÓ¢Y»u+UªD j)CN½ºõëØ³kßν»÷ïàÃþ‹O¾¼ùóèÓ«_Ͼ½û÷ðãËŸO¿¾ýûøóëÿ¾m[gÎL#Î4âL#Î4â(5·ÀRI"•$’(ÑL#Î4âL#Î4âL#Î4âL#Î4âL#Î4âL#Î4âL#Î4âL#Î4âL#Î4âL#Î4âL#Î4âL#Î4âL#Î4âL#Î4âL#Î4âL#Î4âL#Î4âL#Î4âDóÏ4âð38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38þÓˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ3þ8Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38Óˆ38ÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCþÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓþÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓþÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCÓÇ4Ä1 qLCΘÆÈ¡ gLCΘ†2¦¡Œ[ˆƒÂHE"@!B¬a ‰P†3¦áŒi8cΘ†3¦áŒi8cÎÐÆ?¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cÎÐF?þÑô#Θ†3¦áŒi8Ã8Øø‡¢Ñ 8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘF6îÑècÎÐF?þÑÐcr†6þ1 gLãÿXþ€¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3þ¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦þáŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cΘ†3¦áŒi8cÎ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 Î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 Î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 Î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 Î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 Î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 Î0 Î0 Î0 Î0 Î0 Î0 Î0 Î0 Î0 Î0 Î0 Î0 Î0 Î0 Î0 Î0 Î0 Î0 Î0 Î0 Î0 af Ê Êà Êà ¹p Ñ Â ‚@‚°‰p^   ¶y›¸™›ÑÀ›¾ù›ÀœÊà ÑÀ€€PÑð›Ñð  Ï ÂY¿ù¶þ@LpÚð  ° ¼  ÑÀ  ßÀ˜0l`ò9ŸôYŸöyŸø™Ÿú¹ŸüÙŸþùŸ : Z z š  º  Ú úŸÎp›ð›Êà Ì! ÂP °   „ „ 0 Êà Êà Êà Êà Êà Êà Ê0 Úð0 Êpÿðúà Êðù0 Ê0 ÚàÊ0 ÊÀ9ªΠ Π Π Π Π Π Î`›Úð0 ²À ¼p›íÀ9ºÎ ÿ ÊÀÊ  ÿ ôÀë`›Ãð ü£ëà ¶99JÊà Êà Ê0 ÚÀþ ³0 Š@Âð ÊÐ t@ Õ`ÚððýÀ¼`›Î  Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Πþ Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Îþ  Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π þΠ Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Πþ Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π Π ΛÃÐÊþ0 Ê0 Ö= ¶™ µ0 £ Üý݉0 …0 ´  Ã@ ÃÀ ÃÀ ÃÀ ÃÀ à ² ÿ³  Ä ð Æ€ ¼À.€ ´ðãP²À Ä ð Æ€ Ã@ ÃÀ ÃÀ ÃÀ ÃÀ Ã Ê ÿ@²`›¼`ÝðiÀÐ% ÿ Âð ÿI°Ëà ²  ÿàPÊðë ð ˜0 Ê0 Êà¥üp Øà ¼  ¼ ÿ³0 Ê0 ¿à ÿ þÐ×Í ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ þÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀþ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃþÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ ÃÀ 1Œ×0^Ãx ã5Œ×0^Ãx ã5Œ×0^Ãx ã5Œ×0^Ãx ã5Œ×0^Ãx ã5Œ×0^Ãx ã5Œ×0^Ãx ã5Œ×0^Ãx ã5Œ×0^Ãx ã5Œ×0^Ãx ã5Œ×0^Ãx ã5Œ×0^Ãx ã5Œ×0^Ãx ã5Œ×0^Ãx ã5Œ×0^Ãx ã5Œ×0^Ãx ã5Œ×0^Ãx ã5Œ×0^Ãx ã5Œ×0^Ãx ã5Œ×0^Ãx þã5Œ×0^Ãx ã5Œ×0^Ãx ã5Œ×0^Ãx ã5Œ×0^Ãx ã5Œ×0^Ãx ã5Œ×0^Ãx ã5Œ×0^Ãx ã5Œ×0^Ãx ã5Œ×0^Ãx ã5Œ×0^Ãx ã5Œ×0^Ãx ã5Œ×0^Ãx ãe^†áe^†áe^†áe^†áe^†áe^†áe^†áe^†áe^†áe^†áe^†áe^†áe^†áe^†áe^†áe^†áe^†áe^†áe^†áe^†áe^†áe^†áe^†áe^†áe^†áe^†áe^†áe^†áe^†áþe^†áe^†áe^†áe^†áe^†áe^†áe^†áe^†QfK-Uf˜Z¡…^:í4–TRI„DÖ@5U*Ví´^@…T^„ù‡Yd ¥VjÙ§ZÚ™Ã^þ)âY† ¥ZjÙ§‚Vx‰•–V”éTaþ‰‡}ôY§^øã€B†¡% aþ@˜~æŸJ˜¥{P…Ÿ$ ¡%–;xùG†PÆhi¥Óad)D~ÖqFaþ!@–Vh‘E~èåy"9ÀVx‰6d‘G&¹d“OF9e•Wf¹e—_†9f™g¦¹f›oÆ9gwæ¹gŸþ:h¡Mn…–Vhá¥ÓXx逗Vžæ…—§[É”QF)•Q)$P%P£&»l^nýåŸdÁ†žèáÇŸhѦ´ñ‡CPÁ†~èáÇŸh)ûÃq![–_ø‰`ƒ &ˆ`ˆZø!ÀYh‰Z˜¦„ùGMd†Ÿd¦—~èq¦•Zþ'z¶=€^n:8xÅžB`ù'€[y‘å—~€åŸ ðÁE–X̆>zé§§¾zë¯Ç>{í·ç¾{ï¿?|ñÇ'¿|óÏG?}õ×g¿}÷߇?~ù¡‡•—V¢n%Y:P%–Vb™Z,T1*B¤*U«ZÕþ¦ö4U4Ð |Z-þATüã`@ú!Y´â"xÇ1 ‹Vüã`@ú!Y¨¢ ldø…V¨¢µø$¡¢‚ÿÈ*ž¦ YÔ¢¨Å?P‹4 ²€Å>Ð Y¤aF°xÑ<À‹ @+Tñ4Uˆbj©øÇjñˆ¢ª>Æ!Xü#‡@.Z!‹V<Ðd 9HBÒ‡Dd"¹HF6Ò‘„d$%9IJVÒ’—Äd&5¹INvÒ“Ÿe(ØŠX¨¢±xZD‹V8ðiªhŨR…@®AOkà(§Ö@YÔâ@?þÀYÀã…*Þá ~È­¸E?ÀYÀ£h…)ž¦ŠVÈ"±P…,T!‹Zðƒ¨h…,L!ŠVh’PE+†aŠZüCµèÇjñHh‚ø@ÆP¡ŒV¨Bö8@+À T´BÓ˜š(Z! sÐB²xG=‹ @²P<ú!ƒ üâ…"À SèÒ¥/…iLe:SšÖÔ¦7ÅiNuºSžöÔ§?jP…:T¢Õ¨GEjR•ºT¦6Õ©O¥©*žfŠ©©¢¢h…)D!ŠV˜Â[Ũ±aUŠ…)T±U¯¶µ­¢h…)`ÁˆæhG<Èáþlÿ¸F4¡ Q€Ãíˆ9ü!S´Â«­PÅVÛÚ SÀâü0?ì! S´Bïà‡>Ö†ZüC¨ø‡jñ!|ƒëÈ Z1~ðƒ‘8€)d |Ðãσ)T! Q´Âóø‡>âÀâü€.=œ1ÿ€)Tátà­ßoxÅ;^ò–×¼çEozÕ»^ö¶×½ï…o|å;_úÖ×¾÷Åo~õ»_þö׿ÿp€ìVQxµmmEˆK\S,˜¸¦E*Š5 ð’p°(Z‘aQ´B¦…)~áHBB€Àãž €Vl–@A\þIë6Ñ Ql‚¸­X°)DáUK€* ŠVlB ÀT K @–@-ô!!0`„(B¡ÀlÅ&B±À*Èp(@À€€†…%À$0Ä&La H‚¸tX€ $Ñ 7Úцt¤%=iJWÚÒ—Æt¦5½iNwÚÓŸu¨E=jR—ÚÔ§FuªU½jV·ÚÕnq[! SˆÂ¢ðj$­ˆob¢Ø‡7ÁáM8øì€)D±‰+Â×›…"|m âšb öµ(6áàMpX¾Å&D!‰oBÄ•„(!ŠMþHB¢Å?aIlB¢0Å&$A\IˆBŽÞ„$ˆ» SðPÏ…)$A\ElÂÄU…¯_=qŠWÜâÇxÆ5¾qŽwÜãyÈ[½ ânBŠÈp! ŠB¢P„(x( EˆB¢P„(! EˆB¢P„(! EˆB¢P„(x8 ~Ì „(x( E,X¾æ¡»‰«QHb¢P„(! º[î#?†?âcàcàcücC<ÄÃ<,ä<ÄCÒDF¤DFä<@ä<ÄÃBJä%TF¥TN%UÚä<$d;ÄCü#Wv¥W~%X†¥X†e„et€Ðð[þ?ü[þ?ü?ü?üþ?ü[²å?ðÃ?ì%?ü`&?ü?üÃ?ðÃ?ðb"&["&? f$$9$¤:acÁÈþ¡îø!”AZ!’œ!²*’¦A¦A: È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!Èa0¿¡¾!Ú¢ÊÈÁ È¡Ö¢ÁðÀ øáâáÖâÖ¢âá¨ìÚʾ¡Ê¾Á þ¾¡¾!¾!¾!¾!¾!¾!Ú!Ú!ÚÁ Úæ¡¶s†!>oáxAj@!¬a!@aâSœ!­#Iþ!dj@þáþA†!îáÒâ!’¢áäîa¢a;çáÒæA†!þáøAôÄpAøAœAæáÒæÁ"éþAþa”Á”a”þø!’îþ!†A¢á¾A²‡a;µápÀ®@´á`”.m†A¢!"IþA†áò!’†!>µá€†AøA¢á"i¢á”AþøA¢á ’îÁôAú!"i.-œA¢áÈáôa¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶þÓ¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Ó¶Óâ«•aAè! Ì ÌÀ ¤`ãiA”Áâs¶S†áèÁ èaX> è!’†a;‡!­7`3çþu~çy¾ç}þç×ââ¡ÈaÖ¢â⡾!Ú!ÚáÚÁ ¾!6ÉÁ þÁ Ú"Úá¨ìÚà aÚ!ÚáâáÚ!ÚáÚaÈ!ÚAç¿!¾!¾!¾¡¾a- ¡°Z†A°š†á@FF!ò#a A°:ó•†AhA†A„á`dì!„áâ ÀäÁVÀ¨ÁhAþ!’`XÁbAä!V`^ÁfAþ!’\Àà`þháòá à0!xáÒ   P@þ2_üAàÐÁVÀ¤ÁhAþ!’`€°ºþð!fAâ_Y÷ò­€0É—,eÿ.ÐÂÇOÂ,pÇ*ð¦lØ0YÂþ˜Å ž»½þP¦LØ?ÂþöOÀ°{ÝVHöOÀ0yù^ x…I–°q’Lp0LÙ0^Ô ã5LÙ0^Ô ã5LÙ0^Ô ã5LÙ0^Ô ã5LÙ0^Ô ã5LÙ0^Ô ã5LÙ0^Ô ã5LÙ0^Ô ã5LÙ0^Ô ã5LÙ0^Ô ã5LÙ0^Ô ã5LÙ0^Ô ã5LÙ0^Ô ã5LÙ0^Ô ã5LÙ0þ^Ô ã5LÙ0^Ô ã5LÙ0^Ô ã5LÙ0^Ô ã5LÙ0^Ô ã5LÙ0^Ô ã5LÙ0^Ô ã5LÙ0^Ô ã5LÙ0^Ô ã5Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œþ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2þŒ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ãð2Œ2Ã(3Œ2Óð"J9ñ˜!…a˜†a³ -Ó(3Œ2Ã(ãÌ4´ˆBN<ñ„a†âf˜7Š´²2Ã(3 J¡ÔA<ßÄóM<ßÄóM<ßÄóM<ßÄóM<ßÄóM<ßÄóM<ßÄóM<ßÄóM<ßÄóM<ßÄóM<ßÄóM<ßÄóM<ßÄóM<ßÄóM<ßÄóM<ßÄóM<ßÄóM<ßÄóM<ßÄóM<ßÄóM<ßÄóM<ß´£xýß´O;ñ´£ø7ñ|yãñøF<¾ÑEøfàÇ7âÑŽv¨ƒóøF;Œ!€ f0xø4 þrÌãóˆG;È1ú)®߈Ç7âñx|#ÆÐ`q ¸’ã …È Z(㩠ı†$*‘ Lü!-ZáD^üÂø9þÁ}4áÂøGtÀ ^ðC˜Å/ìaüc%P,ì^ðC%E-ê‚Zü#ChE-ü!YÄBú€,ø! Bö@/þ!„BÐ"a /dA aøcaä‡ .0‹ZØÂàGtÆVÐbÂøG´á#Ôâ@Å?dpYÔÂ(¸>Š €¡ŒàGP@‹Vø0ŒÂø9øÁ áÂøGh! þaüCÂø‡„Ñð‚2(*jñðâ2()„aƒ ÐAiÁ ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠþ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ¶â‡­øa+~ØŠ*cäE+Èñ 3|£ß(8œa^(¢äØF+hÑŠVlƒ²ˆ9Èá r˜! a0C64âˆV”c­ E+hÑ Z´b¼è@<¾oÄãñøF<¾oÄþãñøF<¾oÄãñøF<¾oÄãñøF<¾oÄãñøF<¾oÄãñøF<¾oÄãñøF<¾oÄãñøF<¾oÄãñøF<¾oÄãñøF<¾v(®߈Ç7ê÷x|ƒõkG<¾Q¿v¨p~Àƒ"Ìðx|£*ŒG;ŒoxãÞøÆ7â´úõûF<¾o(®ñhG<Ú¡8c@ÖåȆ<¾r(h/hÑŠ0Ò"Ä©€Å(@1 Pˆ;…H(‘ˆ0†‘­c+hÑ ^Èb¿àG&P€ µøG4!‹Züþ†ˆ…0úqaüCšE-üq€ZüCô¸Ç=ôqaô³P…0þ1€XÈBÿ@-þAzèãù8@+œ ~Ìc­àE+hÑŠZüc±Æ?`YãÆ? ‰VТ¼h…0þ€YÈ#¬ø‡„ñràšù8€(àñˆEØ£ì Á?`¶‚>ü?"0 dš¨Å?Ð ZÔâF? Œ ÿ €!x!Œ üØ=îÁ| ÿ€&Z‹ó⇼ø!/~È‹ò⇼ø!/~È‹ò⇼ø!/~È‹ò⇼ø!/~È‹òâ‡þ¼ø!/~È‹ò⇼ø!/~È‹ò⇼ø!/~È‹ò⇼ø!/~È‹ò⇼ø!/~È‹ò⇼ø!/~È‹ò⇼ø!/~È‹ò⇼ø!/~È‹ò⇼ø!/~È ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä þ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?Ä ?b­pbÊ@ åà aà Û0 ÎÀ ²`à ´`äðC´pbÊ@ ä° Þ0 Ùð8ÊÐ ¼  ŠÐ ñ@´Ð ´Ð ´À ´Ð ´°íÐjÝèߎá(ŽãHŽñÐñð Šó ñð ñð õ3ßÐßP?íßß°Šàx`ÿäíð íð äÆ ß ßÐ0àþ ð íB€ àßß0ßíð ñð ñð íÆ ßP?íð á°àeЫ¨ «b© „ DIÄDCy<bªb±  ! µÀ › ² µðb¼ð€ ² û µð @•¿°p ýÐÀÀP ÿ ­` µàb P ÿÐð ­°öÀ«¨ µàÐ ¼À€ ²ð û µð !¦ ²Ð ¿ð ·À]ÀP ýЀ ˜ µP¤ð!p@À !¦ ­þ ±P ü€’° £ð ý­ ¿ðP ÿ0µðP ÿ°ªÐ ¿ðÀ ÿЮ P ý<© ¼`”ëÉžíéžï Ÿñ)ŸóIŸõiŸ÷‰Ÿù©ŸûÉŸýéŸÿ  * J úŸ±Ð æÊ  Ó0 f€Ê0 ´À fÀ ŠÀ óEˆB¢P„(!Šò‘GŠ…"D¡Q„O’EøD¡Q(BŠEùD! QHB¢Ÿ$D¡ˆMˆBŽ (þ!GäG¢è&$¡ˆü(BŠ@Q>òˆB¢Ÿ(—I("?ŠØ„(|* EˆB›pD~$± Q(B>þUDù‘IˆbåÛ„(6¡ˆM(baŠEø ( E@Œô¸=º!ŠMˆÂ€¢„"ò# Q(B¢P„($áElB’Å&$‘I(B¢Ÿ(!Šð‰‚«¢P„(Â'Šð‰B¢Ÿ(Â' Eˆ"|¢Ÿ(!Šð‰"|¢P„(Â'Šð‰B¢Ÿ(Â' Eˆ"|¢Ÿ(!Šð‰"|¢P„(Â'Šð‰B¢Ÿ(Â' Eˆ"|¢Ÿ(!Šð‰"|¢P„(Â'Šð‰B¢Ÿ(Â' Eˆ"|¢Ÿ(!Šð‰"|¢P„(Â'Šð‰B¢Ÿ(Â' Eˆ"|¢Ÿ(!Šð‰"|¢Pþ„(Â'Šð‰B¢Ÿ(Â' Eˆ"|¢Ÿ(!Šð‰"|¢P„(Â'Šð‰B¢Ÿ(Â' Eˆ"|¢Ÿ(!Šð‰"|¢P„(Â'Šð‰B¢Ÿ(Â' Eˆ"|¢Ÿ(!Šð‰"|¢P„(Â'Šð‰B¢Ÿ(Â' Eˆ"|¢Ÿ(!Šð‰"|¢P„(Â'Šð‰B¢Ÿ(Â' Eˆ"|¢Ÿ(!Šð‰"|¢P„(Â'Šð‰B¢Ÿ(Â' Eˆ"|¢Ÿ(!Šð‰"|¢P„(Â'Šð‰B¢Ÿ(Â' Eˆ"|¢Ÿ(!Šð‰"|¢P„(Â'Šð‰B¢Ÿ(Â' Eˆ"|¢Ÿþ(!Šð‰"|¢P„(Â'Šð‰B¢Ÿ(Â' Eˆ"|¢Ÿ(!Šð‰"|¢P„(Â'Šð‰B¢Ÿ(Â' Eˆ"|¢Ÿ(!Šð‰"|¢P„(Â'Šð‰B¢Ÿ(Â' Eˆ"|¢Ÿ(!Šð‰"|¢P„(Â'Šð‰B¢Ÿ(Â' Eˆ"|¢Ÿ(‘Ÿð‰"|ù‰Ç?âÁ‹V(cÛp-DÑ zðƒ­P„(! Eä'ü G+L¡Œ”)ƒŠh=þAŽMˆ"|¢Ÿ(‘Ÿ ´ƒiÇ7׎o$®ßH\;¾‘¸v|#qíøFâÚñĵã‰kÇ7׎o$®ßH\;þ¾1v äñhÇ@¾oÄãñøF<¾ÑŽx|#@È7ò´c ßè@HÐ3ðãñøAÚ1càóˆ‡: !€v@c ‡áñÚ7Ú1y´ƒó G<Úa  ÔÑL`Oè€"6¡I ’P„$* EHB’Ÿ$Q>EˆBåS„$! EH"|¢ð©$a@EQ(QŸòƒIPE„ð‘EE„M(QPIIP„òQIØ€’E(Ÿðy+EEQI(IP„·’QPIIþŸò(IPI¨òQ„òGPQQP`&dø®*Ÿð‘Ep„ð‘E…ð)E(®RIRRG„M(EE„MP„òQIPIØE(EE„MP„òQIPIØE(EE„MP„òQIPIØE(EE„MP„òQIPIØE(EE„MP„òQIPIØE(EE„MP„òQIPIØE(EE„MP„òQIPIØE(EE„MP„òQIPIØE(EE„MP„òQIþPIØE(EE„MP„òQIPIØE(EE„MP„òQIPIØE(EE„MP„òQIPIØE(EE„MP„òQIPIØE(EE„MP„òQIPIØE(EE„MP„òQIPIØE(EE„MP„òQIPIØE(EE„MP„òQIPIØE(EE„MP„òQIPIØE(EE„MP„òQIPIØE(EE„MP„òQIPIØE(EE„MP„òQIPþIØE(EE„MP„òQIPIØE(EE„MP„òQIPIØE(EE„MP„òQIPIØE(EE„MP„òQIPIØE(EE„MP„òQIPIØE(EE„MP„òQIPIØE(EE„MP„òQIPIØE(EE„MP„òQIPIØE(EE„MP„òQIPIØE(EE„MP„òQIPIØE(EE„MP„òQIPIØE(EE„MP„òQIPIØþE(EE„MP„òQIŸòQò(Yˆ‡èoà^¸^ ‡ørØIPIPI(Yˆ‡Їm Zà…V†iˆÒoE(E(E„ð…  ‡xø ‰rˆ‡ošx ‡xø ‰rˆ‡ošx ‡xø ‰rˆ‡ošx ‡xø ‰rˆ‡ošx ‡xø ‰rˆ‡ošx ‡xø ‰rˆ‡ošx ‡x ‚h‡xø†vˆ‡vˆ‡o˜‡vˆ‡vˆrˆv ‡xø†ø†vø†xø†x ‡xh‡èEP<0ƒˆ‡oˆ¢‰‡oHœorþˆ‡o/juh‡xP‡xø†x ‡pu°vˆ ù†vˆ/ЇorèIøB®’„ð‘Ÿ*EŸ’„ð‘UIPIXX®’„ð)EE®’E€’®’„ð‘„…-E„ð‘•„ð‘ˆýÂòQIð)Ið)Ið)Ið)Ið©ò IŸCPIà*IIPIhYEEE€’¤ GˆZª­Z«½Z¬ÍZ­ÝZ®íZ¯ýZ° [±[²-[³=[´MÛ¨•€’„ð…iЇè}€˜(½gpŸ’„ð‘„ð…ià‡àzÐzà‡þ e@ZIP„ˆ‡orh‡xø† ‡vˆ‡orh‡xø† ‡vˆ‡orh‡xø† ‡vˆ‡orh‡xø† ‡vˆ‡orh‡xø† ‡vˆ‡orh‡xø† ‡vˆ‡vˆ‡oh‡oˆ‡oˆoHrø‚ø†vˆ‡y ‡xÛuh‡xø†PgÀ3ø‡xh‡oˆ‡v ‡h‡è¨ßP‡Ä!‡xP‡ðm‚ø†xø†xø†xø†€h‚ØE(Ex+E„ð‘„ð E€’E(Ÿ@8Ÿ*EE(Ÿð9E0 @Eþ„@8<IPI(I¨ò IPIP„@„ð‘„ð‘„@IIIIIð)I8IŸò(<RRIIà*IIP IEÀ€*„ð „ð‘ŸÂƒð9E0 EEŸ’EE8II(IPIP¨ò IPIðWIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIþPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPþIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIPIIIP„ò9„ð „òQIðþ©V˜†x ‡ ‡rPQ(IŸòQIð©V˜rЇ rPSp„ò ŸòQ„ò9„ð‘„ ˜‡vr˜‡xh‡ ‡yˆ‡vr˜‡xh‡ ‡yˆ‡vr˜‡xh‡ ‡yˆ‡vr˜‡xh‡ ‡yˆ‡vr˜‡xh‡ ‡yˆ‡vr˜‡xh‡ ‡xÛšxø†xP‡v ‘‡h‡Äiyø†xø†xø†vˆr ˆPeÀ3ø‡v rˆ‡vø†vP ‰‡vP‡vø†vˆ‡oh‚h‡xh‡oˆ‡oˆ‡oˆ‡oˆrˆ‡vˆ‡oˆ‡vˆ‡oh‡xP‡vþˆoh‡xøyˆ‡8ncøc@Bc˜AdLc˜ALc$4†Á6†@†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†þA7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†A7†ÁCÊc˜AXæ6†ÁC†4†„?úøÁ´Ã7ÄÃ7ÄC;|ø|C<´Ã7ŒË7ÄC;|ø|C<´Ã7ŒË7ÄC;|ø|C<´Ã7ŒË7ÄC;|ø|C<´Ã7ŒË7ÄC;|ø|C<´Ã7ŒË7lÌ7´C<´Ã7ÄÃ7Ã¸Ã¸ÃÆ|ø|C<|C<´Ã7´Ã7Œ 9Ì9ÄÃ7´CŠQ”â©XE|ìÿ¸GÁîÒ‘¤ƒÇ=àñŽ{ÀãðGü€Et€iG<ÈñvŒ„ßhÇHÈñvŒ„ßhÇHÈñvŒ„ßhÇHÈñvŒ„ßhG<Ú“Äãó G;¾rÄ£ñhG<æA|£ñhG<Ú‘´ ¤™9âñ œä'‰G;âÑ´£ŽàÌÀ—´Cß8I<Ú1răù†@¾oäùF<ÚA¾Èã߈Ç7ÒŽ‘|#íø†@æÑE(þÂfX é Rð1ü˜ÁtüèÀÐÁÄð#`† 0ƒH @Ì€Ž tüR6€~üƒÿD?¬¨˜lüø?þ‰~”¦1•éLiZÓÃøÃ—Ñéa v~܃¤ƒéàA:xÇ;¾h<(hG<ÈÁ—v|ƒ/íø_Úñ ¾´ã|iÇ7øÒŽoð¥ßàK;Èù‡óhG<äAޓģ|‡:ÈoÄãñøF<Ú!o”èþùF<È!rÄãñøF<¾“t@ÃÀCâñx|ãä8D “ À:À‡ahX €¬ø @CRÌþø‡?„ÀäA`Æ?hÈŒ¤C0 ¡¼c@@  tðãÙXàGÀ äAp€ða–Aà+CÃ2D *†ah àÿHƒààÃ04,C iæ€tÀÃÐÀ³±À€†¹DàðÃ0¾Ð@@0ôĉWüâßxÇ?ò‘—|yûáŠ*\ÞþÀ°ÁîQ°{ðãÄ÷€<¾Òþ‹ï <Ì <(¢äˆÇ7âÑŽx|#%ŠÇ7âQ¢x|#%ŠÇ7âQ¢x|#%ŠÇ7âQ¢x|#'ùþF<¾!rŒ„óˆG;¾Á—oäñh‡Ú1’vÄã!G;ÈQ oÄã$ßhÇ7âñx´ãäˆÇ7âAŽxt@”ÌàÚ!¾áÈÁÈ!¾!¾AÚ!æá‚Ú!ÚA ÚAÚÁâábÈa$È¡F¢¾¡DÚ!¾A ¾!æ:@ü@Ì@1ø†(`þ‰þ! `z` ˜áhˆ¤@ ¤ ƒ ˜¡ŽÌÀ 0 >àøA€þhÈ0 @ 0@*àøa@H@ 0ø† @* 1øþaä¤ðæ@  0> ` @ 0@*à¤@ ¤€˜á²  €†˜á ˜á؆ FH`ðá8@ 1 >à¤@ ¤ þ!€øa zà FÀ¤ CàÌ þ €jæ@  0>À0À 0*À0æ@À fnÀ0 €j ‚@ 2á˜æ@À fn ` ´°Z€&Ï#?$CR$G’$Kò0üÁþª þàòþ§(Ì`îþáþáøî¾HGîHgôîaôäAÂÀá: Ú!¾!Ú!ÈAÚ!Ú!ÈAÚ!Ú!ÈAÚ!Ú!ÈAÚ!Ú!ÈAÚ!Ú!ÈAÚ!Ú!¾¡¢â¡’æFâââAÚ!N"¾á$¾¡âáÚ!¾!NbÈA ¾¡âáÚ!¾!ÈA æá‚¢ø¢$AðÀ Èa$þ!A ÚA Èá$â¡Fââáâ¡È!ìÀì ¾a$¾a$¾¡¾A È!È!¾!þÚáâáB:üÌ@1øAhH€ø¡À ú!hˆø!€þ€üƒ†˜áüþAvA À0˜áÒAÀ0äpø`þ° øÁþ¬àA 1ø¡ úüáø¡À øhúAA€þ€üá˜á@¬ ÒA€þA€þ! þ¡hÈ øáúÁøáôa øá ˜A &€ø¡À øhúAAþ1øáäø¡hú†¬€ú@¬€؆ÐAäø¡hˆþ¡`ÀhøÀ F€ô¡`˜á@¸ø! PLÒWXƒUX‡õ#ùÁ0Š¡ ŠAYKáòþÀüAÂ8‡sBïÄàáàtàáàáÞtàáÌÀü@6`$¾!ÚA ÈÚ5P p æõ€â¡‚JD È¡D‚NB È!Ú⡾!¾aãáâáâ¡âAÔâ¡ä¢â‚æ¡âAþÔ!Úa$Ú/Èaâá¢ø‚âáâáâ¡aðÀ âáâáþá$áÚ!¾a$Èáâ†@ xà ®`zAìÀüÁÔ ¾!¾!¾!¾aÈ!Ú¡@æFââa6àŸ:À C€þÁ`þA€ ƒ†˜á˜˜ƒ ˜|A  `hˆø!hèøA€þ!@øáhˆ £`þA™áƆƒ†HÁ0 æ@H¡þ†H˜áÒàøA€øá ˜áäþ ƒ†˜hˆø!@þä ƒ|A 7àøA€C€þ€úáhˆøA€þ!h(1øA™áü€øA™á0@H¡þ€øA™áü†˜áèIè‰þA€ƒ†˜á0˜áèIè‰þ!@àŒ†k؆o‡sX‡w˜‡{؇ˆ¬\áJÁˆ•µ.‚Á¬`îáîs¨õàá‹ÞtàáFïàáÞáàAðàm; ¾¡â¡DÈràÞø––aÞárþ ¾!¾a$È!¾a$È!¾a$Èá¢âââ¡Dâ¡â¡FâF¢¾A Ú!È!¾A Ú!Nâ¢D¾!È!¾¡FâââáÚ!Úa$Ú!¾aAðÀ âAâÔÁâ¡ââ¡øb–y–¨áÔÀ¦yšíàæA ¾Á?¾!ÚA¾á$¢‚âA:@¢Ì`1äø1ꆘá˜á˜a1hˆþa dÁòø!€øá ƒ†˜áƆ £ úÁ0øáþhˆþa£ ú1@¬àØAÑáhˆþa #€øáhˆþ¡`ø!hˆþ!€øá@þ¡hˆ ƒ@‚@,!À0˜á0hˆþ¡À þäþ†˜áÆA@1@Òú†˜á0@¬àØø`ø!@˜Á¾ ZALþ†˜á0˜á0hˆþ¡à b¡TÁÐÁ0üaBú ·s[·w›·{Û·¸ƒ[¸‡›¸‹Û¸¹u»þ`þÁª ø€JJ¡þà./ü·¥•î¡`NìøøN HçHîH€îA6`â¡È!Ú!Ú!Úµ]—–`^s rà¾aÈ¡l@(@ ¾ah Èá$ Ê!¾ âÚáŒa<€t¡È!ÚA ¾¢â¡D¾!Ú!Èáâ¡à!¾!ÚA ¾!Ú!Úáâ¡ââáÚáø¢AüÀ ÔA ¾áâá¾!ÚA È¡â¾á xà x j_¡¤Á Ô Ôþ@ ¾!Nb$¾á$¾!ÚáÔA È!¾!¾¡B:@”ÁÌ`1(`þ‰øaàð`˜ ˜áT@ 2!1 ˜@‚`f€† c€Ì`@ C€þ!@øá怆T`4ø†˜áÒ†chˆ¤@ðáæ  0>€þA€þ!hèø€þ ˜áæ`   ™áF@8À @ `hˆc 6a þT@ 2 ˜áæ  þ0>€þA€þ!@CÀ¤`à ††˜á0æ  0>€þAÀ¤`à cà´°"À0˜ £@¤ þ€þaà´°"àø¢À ˜ €’›íÛÞíßîã^îçžîë¹ýÁª þ ¬ÛïKÁº/Ïü· †þîî¡`NŒBïîîAHîîaôîîÁ âa$¡âáâ!È¡Ôæ ÐáÐÁÞðÁŽß ÔÁôÛÁà °ÁB¡ âÁ LŸþAÈÁ`¡âÁ€¾!È!ŒA¾¡Ìa€âáÚ!ÈÁôÛáÚ!È!ÈÁôÉÁôMŸNÂôÛ!¾!¾¡âLŸâáâ ÚÅï[¼oñÂc†A~ñ$}#ïÁä½Ûˆï:yü𩩦ÆÓ@rñÔµHn^;‚íÈÅk¯ÝÀväæ)ë ˆ3ÿ‚ ý ¨€£¤øù" À˜ý+Êì¦E±ð ³¾4pP&€~ü®i @¡LÑ E™ý À?´—4 @ß¿¢Ìþ`è?´—4ÀA_Ð4Ðþ_¿¢Ìþ࿢̂eöÏŸeÆïšÊð_QfB}ià LÑü0E(Š…_QfAÓhP@>~ýŠ2û7®èP~ÿ¤jÿøe64tàë÷€€Ap Æ/è% PˆÂ¯_QfAñƒIEaÁOQÌu‰ @AýðBGqðŠ>ÿd¨á†vèᇠ†(âˆ$–hâ‰(¦¨âŠ,¶èâ‹0Æ(ãŒ4ÂÈO†ÅTñÇ|ìøðácDþáO?%¢…V†üüÃ8üÜ#¥”ðH Ï”ðH Ï=ðÜó?÷ÈóÎ=fÌs"ÄÓþŽ<í3:äÌC>tZòx’:ñ¨ à\O9 ,Î@#ä€1¸¡@6ñ@À<À7ꃌàijŽ  6ñ@3@L Ã7ñ´ÃÍ   8í|CŽ íJ<ß´óM<ß Ô"ÊàaF<ßÄóÍ?ß2P;ñ´Ï7íÄ£N$èàÉžþø3Î>ÕÄÓN<ßpÔ¹|9ä Ôλñ|O;ñ(Ó#Êàa†‡üüÃO†Jò“!Zò“!?ÿð3"?¢•!?ÿ ¥!?ÿ •!?òã!?*©!?ÿ(É!Zò3"?ùüƒV:€†hý£dˆüdþÈO‡üp¨$‡hiÈÏ?üpÈ0óZ *™a?ÿ @ÌdȆJjÈÏ?hyÈÏ?hm¨¤†üdˆÖ?üèÓOŠh§­öÚl·íöÛpÇ-÷Üt×m÷Ýj÷ãJ¥TñG|üQT±ãDVá ‰üÜó?÷ü#%?÷ð3åå—Ë#å;R¾s<÷ÀsÏ;÷ÀâÄ#Iñ£Ž ätðƒ?x’1Ð7혳€ xhÏ7픓Eñ|ŒÉ¨ßdÀÃ7Æðî7ñc íÄSN ÄÎ%`cN 8´ÍCÄcÎ9|ÓÎ%€ÃM9 4Ï7ñ|Ï7ñþøF;¾ÑŽoÄãßP‡ âñ8Bx0C<Ô1ÄãïúF<¾1oÄC‘@žèÄ|t«ûˆÄ7ÒŽ¢EñhG<æoăñøF<ÚrÄCp„2ð` ñˆHLâùñ~$QIJŒb†øqD~dˆÿàÇùñ~Hñ‹Jäùq ˜Á Àø€ñ#Šha£3€0cŽGäÀ #òCCüÐ?¤È#òCCüH"?ðÈÈF:ò‘Œ¤$'IÉJZò’˜Ì¤&7ÉÉIò#C®¨Â)ª°£*ì¨ {Håªð‡`øƒh¹?þq€ñsS:þÇ=àqxÜR‚Ç=àqxH ÷€Ç=Ì %Ql` ïúÆEà€´à¡ C(è`‰1ã"ÄØAÀVÄãЀ4â‘… ÄCÆÀ7|1€d@#íˆG;b @P+èè¢ߨ…À H#íØ…ÈÁ $ƒñøÄâÑŽx|cíˆG;Õ‚|ã]߈G;ÒE(fPÇ@¾ñoH‚ íÈ7âñvNüÀ?èÔì£ûˆD<¾o¼Ë…íˆ9Úo dä9¾1et@Êðƒ¤HÖ$òCŠüˆ¢’ÊÊÖ¶jˆJD‹þ[8 …QØ\÷zD´´•EaÆ^ù¡¡¢0ƒ¯{åbËØÆ:ö±¬d'KÙÊZö²˜Í¬fÛêbTa;ÚÃöpŠSìH|G?4Ä(*é÷ø?îñ%݃Rº?àÁ{ð#·ðЂ[Þƒ ñØõ5¢Ðþ‹v8c hÇ@ÌA à@íˆ0u”# € Œ€o$9ˆG J€ s8ƒà€†Jnd ñPÇPnd߈Ç5zðy\£àhG7zð ‚´cä È7âñ(Bx09òvâùÆ@Ú¡ŽxŒá¶ì‡?Ò± !ßääpßííð ñ@ó@íÐñ   Ê€f0f¸Øø ‚"8‚$X‚&x‚›Å®PW—8ÅÐ-ýpDü/0vR cN/ ð „Aü %ü0w¹÷ðœf\þïïç°ð`óp¢°Ñäß0ä°èÀý€Jòh±ßí áP@¬àE2Éð íÆ àß íð ñð ñ` ð ñ@óà € á  €pñ  :íð ݰP:í»€àл àл àHß0ê0pÊ€fßßðß ñ ñÐñ@Aè0ùé°ÿÀý@íí0ä0ßÐß0íäpßßÐñ@ÃÐŽÀ ~`(xþø˜ú¸üØþøeÅ¥8P þÀÿ $Ft/°BØ ‘¹B(÷À¹Å“ÆðpÇõMxïpðð¦óaó í°@í°4Y“6I“Añ ñÐß@óàÐñ ñ ñ 1ßpeñ0ääßÐÑÐ0ß0ß°@ííð ñ ñ ñ@ßñð ê0ßЊ  x`ñ ñípíßä0c@cð Öèö tÀtÀtPípíð ñÐñ ñ ‚þ¢  Ê€fÀ¨™šª¹š¬Ùš®ùš°›dÅ®PþÀRÄAèÑÀ­¼p„„¹¿pÖA˜[ü`i÷÷ðÇõ¦óð°ïpï`\çðf0÷ ßßßpò€@ñ íð ä@ä((íð ñ ßñßíð A‚Bñ íÐ0ññð Ññð ñ äß@ß0ßß°@í@ßÐÑŽ  x`ê0ßðñ ñ ¡1ñ@ñ ñí@ê@þòñð ñð ñ ñð ñð ñÑßÐß àÊ€f`DdZ¦fz¦hš¦jº¦lÚ¦nú¦p§r:§tZ§vz§xš§zº§|Ú§~ú§€¨‚:¨„Ú§ÁþÀÂfÊ·°rÀF¤ü ÿÀR¢$¦ã ¹Å¹e\R÷÷`:ïpïç°çðçððða0’Ðí0ßßíð ñð ê0ß íß Ñßäßóð ñ@íð êß@ßÐä0äÐñÐñð AñÐä0íí0í0ßþ ð íí0ßßß0íßßßÐñÐñÐñð í0äð íß°Ž  x`äÐñð ü ‡ð 8íä²ñð AÑä (ßßßßÐÑñÐñÐäßA Ê€fP¨LÛ´Nû´PµR;µT[µV{µX›µZë¦Nð÷ÀbKÿ`KJr “÷÷`:òð÷`\ïï`:ïpïïï`ó0¢°Ññ óí0êð íäß@ó (ä0‘²óþð ñÐÑÑä0ßß (íð ñð ñð ñÐß (äí ß (äí0í (äíð ñ Añ@ÑŠÀ ~`Ññðê Añð 8ó@Añ Ñêê0ípó@íð Fº@äßä ´àf°µüÛ¿þû¿À<À\À¬§ýp üðhñüð¶t#%NÐâÀð %ðpðpï`\ïïЄçðçðÆuï÷ ’ÐäßÐñð í0ßßЂÒßÐñ@þò@((êßÐßßÐóð ñÐßÐßÐÑñÐñð ñ ñð Añ 8ßßÐñð ñð íß@ßßЂò ñð àÊ€fð ñ íÀêpíí0ä (ê0ä0íð ä0êßíð ñð AñÐßíð ñÐñЂҊ  x`\˶|˸œËº¼Ë¼ÜËy*J Â<ÌÄ\ÌÆ|ÌÈlÌJp ðpMh:Ü ïpa:f@÷ ÐAóíð ñÐñ ñð ííF:ß0þíííð ñ WÖß@ñÐñЂò ñòð ñð ñ ñð ñð í0äê0ä@íípßípßÐßñ ÑŠ  x`Aíðí äð íí0íð àå0ßБ²ñ Ññ í@äß0ßßÐñð íäÐ’  x`¾üÕ`Öb=Öd]Öf¦æ J o@ nýÖp×”ðnýoý”ð”ð”ð”ðo@ o@ o@ o°Ö" ÷`:÷ðððððçðçðçðçþ`:ï`! ÐñÐñ Ññð ñð ñ ñð íäßß@ßÐêß@ß0ßßÐßä@ääð ñð ñð ñð ñð ‚ÒÑó@ñð í@íßó@ñð íäßÐñð íßß0ó@í ñ pÊ€f@ñ@ñp‡àñ@ñ@ñð Ñß0ê0ßíð Añ ñÐßÐñ ‚ò Ññ ñ ±Š  x`g}¦q   ¨ì0yʨì0ÿÀðì0þ¾ÌЦì0ÿÀP¦ì0€Ð0ÿÀ§ì0mʨì0mÊðì0eÊPµj¾ælÞænަü "À¶€ v~ç¸À xn ¸@ ¸@ ¸` ¸@ ¸À ¶À ¸` œ°è”À ”À nÍ p­Â|ÆõÆõ¦Ãqïpf0ñ $²ñð ñð ñð ñÐñÐÑ ¤Añð ñð ñð ñÐÑñ@óð ó0ípíí@í0ßß`¤ßí0ßÐßßß0í0ßä (ä (ßpþßÐÑŠÀ ~` ô Ññð ñð ñð Aíßí°@ípíß$Ññ@ñð ñ ÑŠ@ ~`kÚ¶ 0 sÊõ°jÎù èÀû€|Êõ°’x0§üP !î0lÊõ°oÊù€üàÀî0üÀæüPÀ iÊõ°eÊî0ü°¦üxÀî0eêÀù èÀû€ÿà§î0mšxð§üàÀkÊù€üàP¦î0o^ø†øˆÿ§ý J ׎/׈ðørý”þØ\Ø\oÀ"  ïðÌïpïpÆõððf0÷ 0ß@íßÐñð íääð ñ@íð ñð ñ@ñð ô ß (òÐñ@íð Ññ@ñð ñ@ßóð AAñð íß@ípßÐñð ‚ò í0ßßßßÐßÐñÐñð ÑÁ/zé§§¾zëyÁ9[ {ŽèÞ¨‘7êÈN .”˜B‰)”˜B‰ë”¸N„[Ò{‡¼wÈ{çœwÎyçsày‡æ1QtàñøF~¾o0¤ßhÇ7BŽx|£ñhCÈÑŽü¨#ßhCæAŽvÄãýaÈ7Ú‘r¨#߈Ç7ò£Žv0¤ýùF<¾Áo0„ñ˜Ç7òvÄãí`H;âñ †´ƒ!߈Ç7âñþ|#ßè€#”‡0€… YI<¾oÄ£ê`H;¾˜Ÿv…ߘCȃ´#?äˆ9æAzä§ŠPÌ€þw<á;pðC(À‡?b€~ðÃØàÇ:b~°c•ü?d€|ø#8è ?ì ~¬#!à ?þ1ࣷø?F€~ä#9à‡;p…ðà à;PIw àü ø‘€îÀNÜQ~°#WÐ ?ì ~¬#!à;ðJ²£ÿàÇPÀ|d üpG®ð~¸¡üØ ?Ø1€ðãî€àá&T ’öÀ?Öƒðƒ¨äN*iàã h:ô!R¸£ýpÇþáŽ줒ìÀtâŽüƒÿpGøáŽþ\áüpCøÁ~ØüXG BÀwà ÿà‡*À¤Œ ÿHÀ"*éŽ\áüpCøÁŽTr'üø;€~äÃ9à‡;ð~üÃà‡;ðw  ’2@>òáðƒ¨¤; Ðv àü ðáà€;©¤ P€|x`üpÇþÁ¸£ü`G®PIv€îÀþÁ7T ’2@?òáô„öÀ?ÖƒðC'üø;€~äÃ9à‡;ð~üÃà‡;ðv  ’2@>òáðƼçEozÕ»^ö¶×½ï…/|ùñþpá9ÿ =œQîUǿٙ¦À…)pa ¡pÆ0h¡„)Lá:JÁ-Þ Wøçèß;àqŽþQ8 óˆ‡$:ÐŽx|#߈G;âÑŽocñˆÇ7`Ü˃ñhŒãñ ·ÆßÐ19æoÄãñø†Ž¿oè8íˆG;Úñx´ãñhÇ7Úñ '·ÆRŽG;`Ü“CÇ߈G;¾v|#߀ñ7âÑŽx´#߀±:`ÜE ÃfˆÇ7âñv|C:nG<ÚcrÄãêˆÇ7Úo´Cñø†“Ûo´#íˆÇ7âñx£ñøF<æA'þCñè€"há3ôÄÖã>øÁwüøÇ>€~üc ÐI%u2ŽüÃØÉ>€~üc °u%u2ŽTr'ö:tRI{:9†þÁàãüHÇþáŽè„àÇ>€ŽJ"cÿ`GvâŽüÃÀ?tRIŒãÿpGvâŽðÃ@‡NŽ¡€°øø?Òq€ž¸£:á;ðŽJ¦ã:©¤NÆq€°£;áÇNø‘R¤£EXD>€w €ì(À?Ø1~ðÄÀ?þÁŽðC'î(À?Ø|üƒé8€­+©“qàþì>þÁtÀÖì:þQ„è„ÀÇ?ø‘ŽüƒØ ?vâ £’ÇPÀ?Ø1~èÄø; Àv àû:þÑd àî€NØ1~¸cÿØÐÁŒC=Ù‡Ðñ~cÿ`Çø¡wàî>tâŽüƒÀÇ?ø‘Žüc@G%‘1~ô¤’:Çzâ £’ÇPÀ?Ø1~èÄø; Àw àû:þÑc ÀÖ÷Çþõ¿þ÷ßÿÿÀÀ$À4ÀDÀÜ xN ‡ s8ç¨Dð/.¨ì˜%àþ‚)à‚)à‚›‚iøX‡¸Ž)¸¸x¸xx‡ ƒ‡w€‡w8‡ ;xx3¸q„бv€1rh'û†v€±o²o€±oˆ‡oˆ‡oˆ‡vø†vˆ‡o€±oбvˆ‡oˆrˆ‡oˆ‡o˜‡oˆ‡oˆuˆr2'‹‡op²oˆ‡oˆrh‡o‡vˆrøuˆ‡o€±oˆ‡o€1rp²vˆ‡oh“²xø†xøu€±oØEP<0ƒxø†yÐ1rˆ‡oˆ‡oˆuø#r˜7ü†x2yø†xøkrpC“)Ó1)û#‡xèEP<0ƒýcþ@~Ð ~øv€H˜€hœÐ [x€`‡؉tiœ°5[x€€¨¤t|àà‡t€Jâ‡q€p‡Ð ~`‡øw€èv€`Ð ~H‡øv(àw(€`‡à [x€~`‡ø~øv~H°Çq€p‡Ð ~`‡à‰~`‡Ð ~pØ v°€€`€àv(žØ ~( x 8†8† Ðv€`‡øv€à‡`‡ø~øw€¨$w(~p‡Ð þ~`‡Pʰ€€`€øwàvžà‡È‚ à‡@†@‡p‡Ð ~`‡àv(€¹üwà‡t€p‡ø‡Jr‡øv€p‡øv€Júv(€p‡ø~`‡èv€HGPJv{d‡øw€¨$w(€`‡ø~øv(€p‡Ð ~`‡øvà‡t€¹´€€`€PJwà‡t€p‡ø‡Jr‡øv€~`‡øv{d‡°Ì5ÐEÐUÐeÐuЅЕР¥Ð µPþ:pJà‡g8ƒ3@„3@„3¨ƒ3¨ƒ3¨ƒ3Á3ÁAeà‡{ ‡«.¨.[Á=‡w °sèxx3 ‡{… ˆ‡oˆ‡oбvˆ‡vøk‡o€±v€±oˆ‡vˆ‡o˜‡v€1r€1)‹‡oˆ‡o¨Åxø7$‡xøû†xø†v€±oˆ‡o€±oˆ‡vp²op²oˆ‡o€±oˆ‡vøk‡oˆrбvø†xhr˜û†v€±„aðƒ0hû)‹‡vˆ‡vˆ‡v€1)‹‡yˆ)û†xø†vбoP‡yø#‡xø†xø)[‰xh‡xø†xþø†v€±oˆ‡y ‡^À3Hа¥t‡Ð ~°À~Ø ~؇h„J‡øw~ø~°À~Ø ~à‰|€F¨¤t¥´‡@ž°@8øv~Ð v(€`‡¨$v€È@@†àw~Љt(€p‡Љ~؇h„J‡øw~Ð w€°@8øv~Ð v(¥t‡à`‡Ø v~ȇh„J‡øw~PJ~ø‡c¨ …p8€"‚p‡àv€p‡àžp‡Ð ~¨þàH‡øv~Ð v(žè‡}€F¨¤q€`‡à`‡PJX¨”,øv€`‡øw~˜Kvtø~8à‡z~Љt(~`‡àv€ÈÀ@†èv~øw€p‡à{|à¨$žÈ‡@@†ø‡z~Љt(€p‡àp‡øv~Ð v(€È@@†à‰~؇h„J‡PJvtø~8à‡z~Љt(~`‡øw(€ȇ@@†à‡ uà†à–à ¦þà ¶`Ë €"Ð`% ‡{ˆ‡iÐà– áFav}Ps¸… { {xèŸsxxxx8xx‡0ˆ‡yP„ø†xh‡x²oˆ‡o€±o'#‡v k‡xh‡xøûuˆrh'û†xø)Ó±o2'k‡xø†xø†y ‡oh‡xhk#‡vøu€±oh‡Zl‡Z$'û†x #û†xh‡xh‡xø†Peð3P‡o€1)“2rˆ‡l8I8I„C8Q>I8I eI åCpI8I8IpI8Q>G8IQþå@Röå PeÀ30P~ø~ˆ„`ƒ{ ‡Kpv(à‡!‡~X‡TÐ{tø˜ø‡}tø~èyè‡uH…à‡°@‡ð$ž¨$@|ð‡[à‡À‡uðøv€¨$v€~p‡ø~p‡Ð @~ð~ø‡X„ȇ(€`‡ø~ø{tø˜ø‡}tà‡p‡à‡À‡uðøv€¨$v(¥Ü‡@`‡Ð ~p‡ø{tø@‚ø{t°L{ €þ¨¤ Røw~p‡øw€à‡`‡Љ~ø‡X„ȇ(~`‡ø‡Jb‡Ø ~ø{tø@‚øw€¨$v(¥¬†À†o u˜àv(àv€°‡@‡¹d‡à|ÈÈX€Eø‡|ˆàw€p‡è‡+Їˆøw`‡øw~øyè‡uH…àЉ(€~ø‡X„ȇ(€`‡ø~øv(€`‡ø‡Jb‡Љ@~ð€à‡°@‡ð$(¥d‡àþ|ÈÈX€Eø‡|ˆàv€`‡è‡Љ ~ø‡z~¸à‡ñ—ñ§q :È\È\Àz¸‡xp†7àqH€#?ò8òH€X%xƒ!ÇJpz uP)縅w °wèÑw8j8‡w °sx3˜‡{…å@åC„C„Cp„C„@„@åV–R–„CpI8GpI8I8II eGå@„CpQ„C„@„@eR6tQ>II8_nåCpI8I8II8IIIQ>Iþ8GRöåCp„C„C„@p„CØE<0'#‡v€1g åoP‡o ‡vX‰rP‡mçöoP‡v€±mÿuhuø†m/‡xh‡x rh‡rØvrhuˆrØöxèGà?0¥ô÷à[v~Ð }ð!`p-à‡¸è€ (ƒЉ$  …~ð!` €#¨$à‡¸è€ (ƒà¥Ì!@€8‚à{À‡p‡à`‡àv~øv(€à{Xp@(ð ØØ‚èv~ø~ø‡þK€€Ø€2H`R`‡ø~°!@€Ð|øw~Ð v~؉~ø‡$  v~Ð v~ø‡K€€ Ø€2€à‡$  ¥ä ¨€J*À~`‡øv€`‡à‡èv~ø~ø_Ѐ -(€p‡à`‡à‡à}¸è€ Ø‚àv~Ð v~Ø zØ ~° w~Ð v€à‡$  žp‡À„àð ØØ‚øv~`‡Ð {ˆ:lÀÝ~ÿÜ øÇnÀþ?}þ„0@á?~ÿ6ò³·bC‡-6úÒ°Ä–ÿØ à·ÑÝ€îðÛÈ®ÀF{+8T`ãF~ú.Aè°aË ÝÀa€~}iØ@bKîüc7à?{+6tØRà_¿qð)mëö-ܸrçÒ­k÷.Þ¼z÷òíë÷/`»"ê *Œˆ½ÄÊÎ0f,¡„È’'K¡ä ¢3SÎLqvO:%gꜩSGÄ-xðîÁ{wîÝ;ÕªßÁƒýž™xñDm(§.9ußÔµS×î[ÿd´?ÿðÓ$?@ñ?Mòó?M£?ÿd´‘”Mò³‘”ÿ𳑔ÿd´?ÿðÓ$?@ñã$?]éäFülÄåFüüÓ\nÄ“üpúOFMòóOFñ³?@ñÃ)?eô?œòþÓdFÿðÓ¤”NJ¹?ÿðÃiFIùOF«nÄåFülÄÏ?üü“ÑFý“ÑFü4ÉÏ?RþÃÏFüü“ÑFWnÄO?@ñ?ÿð³QF£?@ñ³QFÿdÄiFIùOFNJù?ÿH TFÒJ<1Å[|1Æk¼1Ç{ü1È!‹Œ±\ r"gP"NbÎLÑØ4@Í"¼ñF03O<í(qFˆ˜&Â-÷Èö<ç¼Ï;ç¨vŽlð„¡›"ÄC‹äÄCÎ<ñ|_;ñ|£9ó°HN<íèöní´CN<í3nêÄGN;,~£Û7ñ|£9ó°:ñ|CÎàíþÄÓ9ñ}O;º}389ñ|£›ÛƒÏ7ñt /x˜Áb;ñ(sH;º‘ÓŽníÄ39,~ß<íÌCN<ßÄGN<íÄÓÎàñ¸Ï7ñ´£9ótàˆ2x˜a1?Nò32PüŢRn$å?üdÌO“û`óÏ:á$?@ñÓ1?ÿð31?#Å´üHÌÏÄüHË´üpÌ“ø!1~HŒ!ˈ“2"2 ðCZü?$Æ~ìÿX‡€À)~,(üpRF𔑒°„&í =â1 8Bx0ÈøÑ¤Œü## ËˆÅø‘1~pŠáG?ê¡@øèÇFø!±Œ°b©§Äø‘±ŒàScé ?€ÂñCcþüØ?þQ `:ÀG?€ÂeäbüØ?ú©Ñr´£ýèŤôp¡0g@ÄÄ{¨B0“€nF‰7P‚7»éD@ D4f ±Ç=È1…3¦"¨EÔÞ!›wœï8Ç9Þs¼Ã óˆ‡$:@Ìo´#íÐ 9Xôx´ãñøF<¾¡rÌ£߈O;¾v|C7ß ‡nÜrÌ#xnûF;ÈvÄãñø9âá¶x´#íÐM;¾rÄCÁûÆ<ÈŸvcäˆÇ7t£Žàu@ÊðƒâÑŽxÌãÎÄ1ƒ7ØNƒ“G|äyÄcóþÐÍ=: ZøÁ =.§¸´~ ·¹Î}.t9Å¥d$ºÖ½.v³«ÝñCu8CaÎ0…aˆÃJ8ƒÎ0Æà´½í¥G3…78Ãr˜‚aA Ül`sØœ6ç0Ã=Ä!‰|£ßhÇ7Úñx´CñøF|¾ÑŽø#>툇Û÷ø|#>íˆÇ<¾¡Žv°¨ßPG<ÔÑŽx#>íˆG;׎x|£êˆÇ7âAŽø|#ßhÇ7Ü6¸oăº™9âCŽx|#߈Ç7: ^à! íˆG;âÑŽCèFóˆòÐ<â#r̃Eòþœ<7xÌ#óˆÇ<: eàÁ Ûý(?­èE3:cüh4¤#-éI£P\(LÎP‡)(A "`ÌB=…\ˆÃâÀ…5p!\ˆâÀ…8(q.œ¡g˜B§§p†:¦"¸…l‚ Õs¼CïÐÆ9Þ¡3Ìã¢è9æAŽyè¦äˆ9âñx|C7߈G;tã6rÄ‘ßhÇ7tÓŽoèæñø9âÑŽx#ßhÇ7ÚAŽyÄãñ G|Úñ răñhG<Úñx|C7äÐM;tó ÝcñiÇ7âñx|ƒEnÓÍ7tÓŽx¨#íÐÍ1 <˜!ßpÛþ7$yÌ#÷ ‡oå1øÈ#xòðm<æyè†ä`ÑÖ¦B4ä¦6ä&o¤j¨†ÐÃ<(BèÆ7ÄC;|C<´Ã7ÄÃ7ÄC;èF;Cð´ƒn´C<|C<¸n´C<|C<|C<|C<´Ã7þC<¸Í7ÄC;ÄÃ7ÄÃ7Äh¸Í7ćÛ|C<|C<´Ã7ÄC;ÄC;ÄC;ăÛ|ƒÛ|C<|ƒn|C||C<|C;|C<´C<|CD>ðƒ> A= ;dÒÃ=ÌC>ð=ø–3Ã=ô.=ÜŽÞ=ÜÃ:ÐBïv€"Ђ˜Ç\/öf¯ön/÷v¯÷~/ø†¯øþŽ/ù–¯ùž/ú¦¯ú®oùÞƒ(Á(ÁÍ8ÁÍ(Á8{åïÍPÂÔ%¼"Ô. . .à"øïˆ'ÜÂ-DÃ-ä¦2DÞ9ÀÃ;ÀÃ9¼Ã9ÀÃ;„A<܃#t‹´Ã7ÄC;ÄÇDŽf¾Æôîþ=ÐÃ:ÈÂ=$Æ:ÄÂ<(-ð‚2ÐÃ<$†3Ð/dCbÐBb¬/ÀC(‚2à°/+·²+¿2,Dz,Ï2-ײ-ß2.‹oFЃ8ˆ€¼8A§98¼((Á(N9þº"¼% ÂPN‰!D/ð¦6ˆD>$Æ=ÐÃ<ÐÃ=èCbÜCbàC>ÈBb̃9ðB>ă>Ѓ3=è.dƒ>Ð9ðÃ:ðÂ=˜/È=t€"(˜A.·µ[¿5\ǵ\Ï5]×µ]·ò=ă8¼€¼@Ìþ5`¶`6aÇ,'Ã-(C4hÃ9h<¼Ã9¼Ã9¨lÀÃ;„A<̃$t9è9|C;|C<|C<|C;|C||C;|C<|C<|C<|ƒn¸M<´C|´ƒn|C<|ƒn´Ãà|ƒn|C<|C<|C;ÄÃ7¸M<|ƒn´C<´C<´Ã<|ƒn|C||ƒ<´CD?è=Ä%dÁðÃ=Ѓ>àè:È‚2(C,ÈÂ7ÜŽæ/Ѓ>È>Ѓ>$F>ð‚9ðB<ÐÃ=t€"(˜Á]·¸‹¿8ŒÇ¸ŒÏ8×øF܃8ˆƒ5DŸö8ŸÖB-ø8,Ã/ÀB-üB-ü‚’ÃÂ/À‚“ÿ,ü‚0ÀŸþù/ø8Ÿä;¨Æ;ÀƒmœÃ9¼ƒj˜oB°9ÌCð|C;|C||C<|C<´C<|C<¸<|C;|"µC|¸ <|C;|C;èFþ;èF;°È7ÄÇ7ÄÃ7ÄC;È9ăÛÄC;|C<Ã<è†:´Ã7Ä9èF;|C;|C<|C<Ã<´C<´C<´C<´C<´ƒn|C;èFH‚2à´C<|C<ƒ"Ѓ>Ð?ÐÃ=ÐCàèÔ°ƒЃ>ÐÃ=è=ðÃ:ЂnÐÃ=ðƒ98C„Ë‚,ðÃ:´BbÜ?ÜÃ:´-hÃ=ð=t€"Ђ˜ç»¾ï;¿÷»¿ÿ;÷?è?Ü?ÜÃ<܃<àå<àå=ÈÃ<¼å<ÀC<ÈC<ÜC<ÀÃ=ÌC<Àƒ<ÀÃ=¨†<Àƒ<¨Æ=`-Êÿæ;ÀÃ;œÃ;œ<Àþ†j¼Cø–$t@<|‹|C<|C<|Ãà|ÃàC;ÄÃ7Ä9¨C|ƒ<´C<|C;|C$Æ?Ѓ>Ð+½â«à+=è=ÜÃ?Ü?äƒ,è=èCbÐÂ7Ѓ>¬/ðƒ>Ð޾e>ðÂ:(Ã7Ü?l€"(˜À?ñ¿ñ?ò'¿Ädóóÿ?èóßóß?¼%?Ü?þà%?8ü[ÂÃ=ÈÃ[Â^¦üoÊÃ;¤sÂèƒÿè€"þ”3HšÕ´æ5±™Mmn“›Ýô&Îøñ׆ÿ¸GUóš{ðã²¹?hðÁãð¸ <î±›{À㻹<î‘©NãçxÇ9ÞqŽwìÆ óˆÇ&6Ðr|£ ùF;ÒŽx|cäˆ9òx|#!ó Ç7Ôy#!ßhÇ7âñ Û}£ñ Ç7òx|#äˆÇ7$òx|£òh 9âñxØ$߈G;ò„´C"ähGBÈvÄãPÄ0ü`†o(„’¨Ê?èñ~üƒÿ ‡Éîñ{üƒô LUsÐã÷ =^ó{üㄹÇ?èþÁ{æüè€"”3|“²•µìe1›YÍn–³?ã‡Édc²{ðãüø?þQ•{üãü¸?îÁÚðƒ6µµ-<îñŽ{Àãð¸<ÞqwÜï¸qÞAœwÀãðx<Þs¼ãf˜Ç=Ñx´ãñhGBÈo´#äˆÇ7lb»x´#íèÉ7ò …|#߈G;¾,…|cñ°É7âÑŽx|C!äˆÇ7Ò…|£߈Ç7ÒŽx´C"ßhG<¾v|£ßhGBl’r(¤’PÌoÄCŠø=Cðã÷ Ì=øñ~üƒÿàÇ?èAþzæ&£aèA˜{œìÿà‡Éîa²(‚~0C,°œe-o™Ë]öò—Áf1™Ìe6ó™Ñœf5¯™Ímvó›ág9Ï™Îu¶óñœg=ïYÍ´È2-xA Z´¢· Å-ZÁ‹Vࢼ E+xA ^š¼°4-,iZdZÊà…,”! e C¼ /”! KËB² /dAhYðB­@…,f1 YÌ" Ó‘D¾‘o´#!óøÆ<È!‘vÄãñøF<¾a“oăñ G<¾ÑŽx´ƒ ùFB¾!‘v$íˆÇ7âñx´#ä Ö7$ÒŽoÄã߈Ç<Èþo$Ä&ñø†M¾o$¤ !‡BÚr«ñøF<¾ÑE(fhG<¾‘Eüƒ6ÿàÇ?îA˜{üƒ„Ñ?sÂЃ&»Ç?èñ~˜Œ„¡Ç?èAzðㄹÇ?îÁ(Bx0Cžžt¥/éMwúÓ¡u©OêU·úÕ±žu­oë]÷ú×Áv±ìe7ûÙ¿þª°Ì&ã‡Ê^c2~ Œ&ãʪB~˜Œ'ãaN~œÌ ó¸‡(:@…|£%íˆÇ7âÑŽoÄãñø†DÚ¡v$ää˜G;ÒŽ„|#߈G;¾u´ãñhG<Ú¡vþÈ£ÞíøFB¾oÄ£ñhGBÈ!‘v|#íG;È‘oÌ£߈Ç7òx´ã !G<È‘u$dŽÌvÄ£äP?NvÂÜÃd÷ø?þqÂðãüømS}üƒ÷àÇ=þáþáøáîádèáø0:@”€á$p)°-ð105p9°=ðA0EpI°MðQ0UpY°]ða0ePÕ!NâÔ!l"È¡Ô!(PN&PÚ!¾¡âl"¾!XâáÚ!¾!X¢ââÚAð@âþA:@!¾!!¾!¾¡âá‚z¢¾!Èáâá‚%!Ú!¾AâáÚA!¾!!ÔaÈ!!¾AlâÚábÈ!¾¡ââáÚA!ÚáÚA!Úá$¢‚â¡âál"!È!!ÚA"Ô!!¾aAðÀ ÚáÈaÔáãL†ããLæV†£*RæƒL†îádî:@†ÁÌ`µq¹±½ñÁ1ÅqɱÍñËQ^â!Xâ¡ââáâá‚âáâAÉ!2ð¢¾!!ÚáÂ&¾!!Ú!!l"þÔ!¾A!¾!!¾¡Ì`:@aâá⡾!¾!!Èal"!lââᢢ¢âÁ&È!!Ú!È!¾!!¾!l¢%¾¡%¾¡'¾!!Ú!È!¾!ÈaâáÚá‚Úál∥¾¡¢È!¾¡¾!¾¡¢aðÀ $‚¡*L¦*þáPæLFãƒþáT†Ræ5ãþþ:@”Ì È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!þÈ!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!Èþ!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!þÈ!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!þÈ!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!È!Èþ!ÈA"È!È!È!èâ¡¢â‚âââ¡âââââââ$‚âââÚ!¾!ä%È!¾!È!!¾!!Ì`îÁ:àˆ¥â!Xâáââl"Ú!¾!Èá$âz¢âáÚ!¾¡ê-!¾!êM!¾!X¾!Ú!È!!Ú!Ú!!¾aÈ!lbÈaÈA!¾!¾¡¾!È!!¾Al§âá:@”ÂÀ&Ô!!0øáƒ£*þþL¦*þ¡*L¦*þîîáþøáªâîádøáøÁdø¡AðÀ âææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææþæææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææþææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææþæææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææþæææææææææææææææææææææææææææææææâá‚æ¡¢‚âáÈ!!l"Èa‚‚æb¹yäæÅ;xð[¼o’›‡ÜAróâµCØ.^»ƒêâ}3ž¨íÚ}‹÷-Þ·xßâ‘‹÷-Þ7„í¾!üï[¼oóâµû¯]¼oñ¾ÅûÖŽÜAr ~‹÷í ¹xß’›×ŽÜÁ’äâµûÖ”\Ó’ßâ}›w°ÝÁoñÔþ}k÷-Þ·xßâ‘CØA-?fⵋ§Žœ"~üþæg˜Ÿa~†ÿn ™_c~ ó3̯1aÈü o84 O˜vMK›>:µêÕ¬[»~ ;¶ìÙ´kÛ¾;·îݼ{ûþ <¸ðáÄk¯d¼oíÔ•V\»ƒäâµ›G®Ýir%¿µ‹×.^»oí¾,ùíà·ƒíâ‘û¦®]¼oñ¾©‹G.ž™xóm$É!’"É!èˆ$Ž"É!’"I ’"‰#’"É!"É!‡Hrˆ$ŽHrˆ#‡Hˆ$Hâ¡#’8£#‡8â¡$:rˆ$‡è¡$Ž"I "I ’þ`Œ‡"É!:rˆ#‡xˆ$ŽxˆeŠ(ƒ‡ß´s:ŠT?dž‰fšjòÓ"ÃøaF<ßÄóM<ßÄóM<ßÄóM<ßÄóM<ßÄóM<ßÄóM<ßÄóM<ßÄóM<ßÄóM<ßÄóM<ßÄóM<ßÄóM<ßÄ£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êþd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6þÊd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£L6Êd£Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œlþ(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(#ÊȆ2²¡Œl(ÃÊp†3²¡ edCÎȆ3”áŒaþUÎP†3²‘Tgd#©ÎÈFR³¡Œl$5ÎȆQ•aTg(#­Êp†2Œª £*ÃÊ0ê4œ‘T£þƒ!‡æqQt€ñPG;ÔØr(–ßPÇ7⡎o¨£êhÇ7⡎o¨£êøbÛ¡Žvıê(‡:âñx¨#êh‡:âAŽv öíPG;¾o´ã ߈‡:¾Øv|£߈Ç7âñ u”ƒêhÇ7¾r¨ãí8Ès¿¡Žoăñ@l9¾ØvÄãñøF<: eàÁ ñ(É7Úq5Éw¾ô… ?: eàÁ ßhŠÿ à ¸!ßpÆ!qGÂþ‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qGÂþ‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡þpÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qG‡pÄ!qŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpþŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽpŽp1" 1BŠ0r’àâ’à’à’#’#’#‡@Ї ‡ 1" 1" 0" Ž 0" 0" Ž 0" 1" ÿ0ä ñ0ap¢°ñð %þß`äpääpäà_äÐñ@ßí€ßíßä߀í0ää€%ñ ñð ñ0äÐþÕñÐþEñ@ñÐñð Mñ ñð í AäÐñÐñð àÊ€f@ q†Q)©’+É’-é’/©’äЊÀ x`ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð á ŽP_kÉ–mé–o —q)—sI—ui—w‰—y©—{É—}é— ˜)˜pþIÿÀ†A•ÁdÂÁÁjÂÿÀÿÀÿÀdÂgÂdBÿpäpfpŠÐó@ñð ñ@ñð ñ€XäßpäÐßí@íð ñ@óÐ%Añ@ñÐñð Mñ íÐíð äÐßpäß@ñð ñÐêÐßßPAA ¡ßÐä0í MÑÑŽ0 x`ñÐñ@íp†“ÿ  Š ÀfÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐþñÐñÐñÐñÐñÐñÐñð ÎàÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀþÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿþÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀþÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀþÿÀÿ@ÿÀÁ†ÁAü`üðüð„a„a„ÑßlüðüÐüÐü`üðü`ü`üðüðüü@üÐê÷0¢ÐM1ßßpóð ÑÑñð 1äí%ñ ípä߀ßpßÐßóp)ù ñð ñ í€íà_ßÐñ@ñð ñÐñð ÑñÐßßpí í€äßÐñÐñ@ßß°Š  x`äЇðü@ñ@ñ@ñ@ñ@ñ@ñ@ñ@ñ@ñ@ñ@ñþ@ñ@ñ@ñ@ñ@ñ@ñ@ñ@ñ@ñ@ñ@ñ@ñð ñ@ Ê€fð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ¡ ŽÐÑ-ÝÓMÝÕmÝ×ÝÙ­ÝÛÍÝÝíÝß]Ý ÞãMÞåmÞçÞé­ÞëÍÞííÞï ßñ-ßóMßõmß÷ßù­ßê Þýíßÿ à.àÞü@üð a! ßêÐÑßp)©ß@ÑßPñ ñ@óþß@ópíð ä0íÐípß@ñÐñÐñÐñÐßpßßpßêð A Ñäpßßß@óð óÐêÐñÐßíÐßß0ñÐÑŽ  x`ñð ñð\’`ó@ó@ó@ó@ó@ó@ó@ó@ó@ó@ó@ó@ó@ó@ó@ó@ó@ó@ó@ó@ó@ó@ñð Ñ’0 x`ñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐþñÐñÐñ ÎàŽíÙ®íÛžíüнî°î½ ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ½ ½ ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ½ ½ ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ãþ ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ãîÀí›ÏùïùÙNÿíßf ÷ €äЈÕß’QÑñð ñð QQ Ññð ñð ñ@êÐñ0äß ’ñ ñð ñ ñÐþõ í€%`%äð Aíð ñð ñÐñÐñÐñð àÊ€fßpípÿÀÆÿý/`ßñÈuP¤ ™v .dØÐáCˆßâ}‹W1›£5²ðÝ!EŽÔÈnI’ìüþc7åK˜1eΤYÓæÌ‚`ý‚ëWOX¿€þú è/ ¿€þú è/ ¿€þú è/ ¿€þú è/ ¿€þú èÙ_@ýôÐ_@ýôÐ_@ýôÐ_@ýôÐ_@ýôÐ_@ýôÐ_@ýôÐ_@ýuè/ ¿€þú è/ ¿€þú è/ ¿€þú è/ ¿€þú è/ ¿€þú è/ ¿€þú è/ ¿€þú è/ ¿€þú è/ ¿€þú Ö/X¿m¸Yßþ}üùõïç’½Ú!'uâ1ƒž{DÙ žþo*Їœx¾‰ç›xȉ‡œŠú&r*úfžx¾i‡œŠú¦¢vÈ©è[l‘œxÚùÆÅv¾‰§râù¦oâi§¢oâù&ž„¾‰ç›Š¾‰‡œxÈ™'ž„¾q°xÚ!'žv¾!ÇÁQ3Ú©(¡C2Šç›x¾‰ç›x¾‰ç›x¾‰ç›x¾‰ç›x¾‰ç›x¾‰ç›x¾‰ç›x¾‰ç›x¾‰ç›x¾‰ç›xÚ‰ç›xÚ‰§E”Áà râ!'r€ râ!â!'râ!'râ!'râ!'râ!'râ!'râ!'râ!'râi'žoÚùfG2âgøÉþ~Ü€Ÿ˜øpà€šòÁƒ&wà'<øÉï]xã…—ŸF±w’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&±÷•Q&±w”Iìd”IF™ÄÞWF™däIFždäIFžÄÞIì}eäQ&å•Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&±÷•Q&y{'e’Q&±÷•Q&y’‘'þy’‘'±w{_áy’Q^e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’Q&e’QLb“Å$F1‰QLb“Å$F1‰QÀ”Åaa¯IŒb£˜„½^1ŠIð¬D…,P žMÂ^“Å$F1‰‘u@^3¤a mxCyу-"‡â1EtàiGE¾o¸(ßhG<ÈvÄ#!ùF‹¾!vT¤ߨHB*ÒŽoÄãíþøF;¾vT„ñhÇ7âñ ÍãúF;âñy|#ßhGEÚQ‘oÄ£ó ‡ƒÈá o$ÄAߨÈ<¾otàÊÀƒÔñx#‡ø?ôIP†R”£å7âÑŽŠ#äè€#”3€ÒHÀ"¾1hà“òp<$ÉÃAòp<$‘”ÊpDFø1ðƒqÇdÂq@šùh‚¤É™ðãî€4mrNt¦Së| ?60‰IŒž“Å€o‡h„rˆc€x€†P‡x†¨h€vè†vø†vø†xø†xø†v¨ˆMGЈq}`‡øvtà‡8ÈÈ€ jè‡t€BÀw€`‡à‡Œ`‡ø‡||ø‡~‡àv~`‡Ðv(€È@‡Œ@†ÀaŒö»XŽÆŽ^-è‚JÈ…_(iA€”^4 ¶#øh—~é%À0à‡p-8pŽ^†{à‡hè‚%¸‡ ‡s¨—ÖŽþ~€ƒw¸~‡.X0à‡W€‡yX0 ~¸Hà-àèe¸~ˆ-X‚{ør€‡JX‚L€‡{à‡h€iº®k»¾k¼Îk—Ö‚¼Ö‚Ö‚Ö‚ÖŽf[ºÆ‚ƽ^lÆnlÇ^l-øh-X‚DP†aØe ``ølIÈ^-X-X‚DP†aØ^ ‡{{ z¸‡¸^peàAЂÆŽÖ‚%è¿+nã>näNnå^n¾»~¨ˆvø†v0q¸I耊h‡x ‡xø†xø†xø†vˆrpoˆ‡vˆ‡oh‡Šø†Šø†vP‡v€þ‡PJ³O"‡Šh‡o‡$‡xh™r¨ˆoˆ‡oˆrˆ‡oˆ‡oˆ‡v˜‡oˆ‡ü$rø†xø†vpo¥o¥oˆ‡oØEP<0ƒx ‡ŠP‡Cø~ørˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆrˆ‡oh‡oˆrˆ‡o ‡ŠhrhÙGP<0ƒv ‡ŠPc€x¨Ô,( ‡niøs˜h€vˆh€J…¨Ô(lˆs „Џ)‡o ‡xH³xPGÈ~Hàw€`‡8|ȇþÈ~ø‡,¸~xÀ‡q~ø‡|høv(€`‡ø=c‡Ȉ°}ð‡ ~`‡øv(€Ð3v€Œà‡|ð€Hnhviÿ~è»®xʃIPDPüÏ<ÐëX|¸„<Ђøhj 0€E°…%}€€€i(ø‡øèX0€EH‡~ˆ€€ \€`}€% \؀ȄKX0Ї€À~p‚(€¸€Ç.y“?ùøèøèøèàèø“Ÿyš¯y¼þ˜…i Q ‡xøìHH0þmPYP†QøŽþTPe0r¨Šˆ‡lYp†Q€éX‚è€i/{³?{´OûZ£~ør˜‡x 3 ‡{… ˆ‡v¨ˆvˆ‡oˆ‡vˆrpv¨ˆvˆ‡oˆrpv%uø†vø†xø†x ‡xH³o¨ˆ4#‡yP‡o ‡Šh‡xø†xH³OjPú†yh‡xh‡xh‡xhy Âxh‡O"‡xø†Šø†xø†xø†v ‡Šø†4û†ŠP‡ŠèGP<0ƒv¨uˆ‡CÈP’‘‘‘‘‘‘Pªˆy ‡Šh‡x ‡y ‡oh‡xèEþ?ƒŠ ‡xPh€o¨TnX¨ˆ4€€è°áÉ€xÐÄm@»xÐÄ‹·NŽÄû¶K¶ˆíÚÅûæÌÑ¿’ãðc7àŸ»˜"ÐÁïŸ/èþñ“"p öÏÝ€îð+É®@I{+(tØRàŸ»ÿÜ àW’]üì­@P’fÏ¢M«v-Û¶nßÂÛáݺ8èæªÔ¥‹‘¾.þº¨ ¸.áÂu—zÇ\ºøD(øÄ^…þ® äuKÜXd] ÿT û/Ã…@þ øÁÏÃ…`êUâO@]~BŒ,Yâ"3ñâÆ#/Œ#þ9Ý%u—Ô]RwIÝ%̯cÏ®};Ý%tqüÀñC9^­¾‘K¡Î›·oß”±P&©U9^Kê û¦J•:rä¾± d3Ì0ލò /„ѵ]¼¡„RX¡…b˜¡†mÑóODñ´ôˆ#IñóM<ä|ø¡{ò|ôM<ß|øM;ßÄóM<îµÏ7ñ´<~#OñÌCÎ7ñ|O;ñóM;ßÄCN<ßÄóMDíÄóM<ß|DN‹ä´Ï7µQ;~39µ39}£NDßlàˆ2x„N;ñ|Ï!ÿðÏ7ñ|ÓÎ7ñ|ÓÎ7ñ|ÓÎ7ñ|ÓÎ7ñ|ÓÎ7ñþ|ÓÎ7ñ|ÓÎ7í|Ï7ñ|Ó"9=’9( fDDN<ê¨Ób;ñ|Q;¶O;ßDN<ßÄÓÎ7£N<í|ÓNDà|ØŽ<äD”#%ñƒÌÿðÃOIáö®Yáþn¸f©ûO?%ñc?ÿ„Ë?hñó?ÿðS?ÿ£?\°ÁgñÓÁ ߀Ã7üpC%’Iydrqh\¼ ÿpÃ7ü°ð7ü€Ã8”à‹Ø“ÿdó<ðÐsÿ°ð7àpÃ7ÐõO ÿ€Å;ðÄs?á7ä?Üðþ ?ÊÀ£ <ôÄ?þüpÃWô‚6kÜðà ?Üðà ?ÜðÃÂ?Üðà ?Üðà ?Üðà ?Üðà ?Üðà ?Üðà ?Üðà ?Üðà ?Üðà ?ÜðÃÂ?Üðà ?Ü@× t1¼0?Üðà u1üÃ?,üà ?,üÃ?Üðà ?0üÃ?Üðà ?Üðà ?Üðà ?Üðà ?Üðà ?Üðà ?Üðà ?Üðà ?Üðà ?Üðà ?Üðà ?Üðà ?Üðà ?Üðà ?Üà7øÁ ~pƒÜà7øÁ ~pƒÜà7øÁ ~pƒÜà7øÁ ~кÜà ÛF9 ôm°€ÛØÆ4†þ ð´ðÏÂè2 r(£åXa6¶ ƒB…*Ú‘ü`a8XØn° A1ŠRœ"«(!~Ѓíø9"bzÜC˜G<Ú|£ßøP;È‘v)íˆÇ7"BŽ|£E߈Ç7>u¸§߈H;ZÔŽx´£EíˆG;âñx|#äˆH;z„«o´è#äˆÇ7ÈoôèñhG<Úñ¡o´#"PÄ0ü`†yãñø†$Jòx|ãCßøÐ7>ô}ãCßøÐ7zÔŽx´#"߈G;âñx|#"ô ‡<: ˆaøÁ ßhÇ<ÈÑŽ@âg<¾ñþ‘v¨#äøF<æAŽvÄ£!GD¾‘o|èúF;Èñ¡o Ã%ñ*Ð~PˆmáZøq~¬eØøG><+b4£nÙ@ëFT¢]èË_>àÁæ]éJip üã4àG `Ó€ÿÀ zêÓžÒÿ @Oi@0@ ø‡hÐô”ÿh n„€üh€M 0€Ðภn@` ùø@ ~êÖ·Â5®rëOipÜ t½ n‚Ð`¯7 [ip6±Š],c»WmC­˜†2B e`–­0,Á‹þyhã§Úˆ‡2b1 g(Ã!HÁB0 Z C¼˜6ÜJƒžÒ jÙ-o{ëÛß7¸Â.q‹kÜãî–üh9ÌIt ñhG<ÈÑ£o|èñ ÇG¾ÑŽo´ãGjLJ¾ÑŽoÄCó G<¾Ñ¢yã‰Ç7âAŽo|$ßhG<¾ÇoăßhÇ7ÚAŽv|èíø†ô‘‘#íˆ9"ò|#߈H;"BŽyD„ñPÇ7âAŽyÄÃ=íˆÇGäAŽv|è#="G<Èñ¡Hbx0C;âñ‘x¢$߈Ç7âÑŽx|#íˆÇ7âÑŽx|#íˆÇ7âÑŽx|#íˆÇ7âñx´#"äˆH;âñx´ãC߈Ç7â(bx0C<¾¡Žx|#þÊíˆÈ7>DŽv|£ñhÇ7ÚÑ¢oÄã-jÇ<¾Ñ¢vÄãñ LJÚá GüC]-G´ºÎÂõÃ?þÿèÀR`‚F› Ñ&`ABÚÀ ”`Ü[  <üC?D(€ ˜@"Ä?ƒ"| ,Â=ÐC¤À4Ú˜@ ´À?À˜@ \Á6hƒ6B?@ üƒ8š À‚>ÌCø¤€ ‚<ðƒ8(°À"ÜÃ?t ô>Ü9ÁìÛ6Ú › ¤ÀÄ› |À½}€ 0a§}À¬}À¬}À¬}À¬}À¬}À¬}À¬}À¬}À¬}À½ ‚>ƒ((ƒ3˜À°þ†@°€,ˆ9ȃ 4Ú„@"è9ˆ‚28ƒ3˜€(ƒ3°À4ÐÂ&”9§™@ 0` l€üqb'zâ'ª=üƒ<´Ã‡˜Á<܃"tÀð|@˜À˜@0à„@Èí-ãr.ëò.ór/Çí?8«ÌC<ˆBÄÃ7´CD|C<|C<|C<|C„ø`âC&>„HÂć&>„H⃉!B|0"Eˆ)B˜ø"EˆM|ñ!Eˆ!L|ñáCL|à˜"ć&>„ÀÂÄ8¦ñ!„‰!p†0ñÁÄŽ)B|aâCœ!L|0ñcŠB˜øgL|ñ!DŠL„HÂć&>˜ÀÉ1ÄþmüømSö˜Ö0rÿøÁºç‡ˆ—ã÷o­X¼ZÑÊÖߨB¤ñaá!LthwwnÝ»y÷öýxpáÉ7~yïxË¿-7#ñ¾Åk÷­]rê#§>râù¦úâ!gžxÚù&žoÚù¦ræ¹­¾v”Œ‡œQþ3êk'žÛ¾‰ç›å¾Y®å¾‰ç›-É™'žo–ûfËoâù&ræ‰ç¶oÚY.¹B =ÑD Žœy:áB0!„LáÄ4ý€#>!…>Á„8úÀ„pâÈ„ ჅLÈ,3B0!„L 5Ž>'Ž2K!>0V31>'B0#œLÁ„>0!„LøÀ„Ráƒ>!…>áƒLÁÄ>Á„L@ì>!…>0áBH!BH!BÀ)„Láƒ>0á>Á„BøÀ„BøÀ„BøÀ„B0áƒ>þá>áƒLàè>àèƒp2!BøÀ„>0!„LáŽRá>0!„L!Bø€£BøÀ„LáBHÁ„>à(…>0áBøÀ„R0!„8J!„LøÀ„>0!„LáŽ>Á„8ú „Lø „>Á„ú@Ó&¹ç}蹇ž~ø'B5„Bø€£&¹‡ŸèÑGŸþGLø€#>ÁœXaƒx=ùä•_¹oÚY®xÈ1ƒž{逜úÈ©¯oÈ©ïrâ!'žo–û&žvâùFIræùfžv¾‰§-—þ#g¹oâiç›x¾©¯ä˜G<ÚñxÜæËi‡’¾v,§ñøF<¾o,çóˆG;âñx|#ä˜9âñÛ#ä¨O$1 <˜AIß„íæAŽ-}£>ߨÏ7–ÓŽå|£ß°ß7æAŽyc9ähG<¾ÑŽx|£ßG<æÑEÐÂahÇ7âñ yÔ§ËùÆr¾ÑŽx|cßXÎ7âñú|c9ßXN;¾oÄãJúF<ȱœoăñ G<Èrăñ G<Èrăñ G<Èrăñ G<Èrăñ G<Èrăñ G<Èrăþñ G<Èrăñ G<Èrăñ G<Èrăñ G<Èrăñ G<Èrăñ G<Èrăñ G<Èrăñ G<Èrăñ G<Èrăñ G<Èrăñ G<Èrăñ G<Èrăñ G<Èrăñ G<Èrăñ G<Èrăñ G<Èrtà&ø€ p„€!ÈLX| &ÁB‚|ÀÁB>°,$ÁLð|`!!ÕR€“„@V&àÈR‚˜'þ >À‘È*`ÁL‚„'&øÀBB€| &ø@>| )XÈBð˜à!ø€ B‚¤À´ú@R`Z…à)A Lð¤ &ø@>`‚„à&ø@ò„à&ø€ B‚˜à!HAR‚„ÀÁLð|`!)0Áò¤À8 A B‚| I p| )ÁLð¤ 0A>À‘„ !ø€ >‚„à&Á8ò¤ 0ÁB‚|À!øG>‚„à&ø@R‚„à!þ0ÁBð| ÁLð¤ 0Áò|  2ä ù –0 aÀCòø… ~`‚àÄ > +¤` “øÅ=øXâˆYNL€pÄX9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆþ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽy£ߨæ1It`9ßPÒ7êÓŽol©ËùÆrÈQŸoد>äˆÇ7–óÛ,§ñøÆ–¾rØõùÆm–óå£߈G;ì׎x´#ähG<Ú±¥ṽJúF<¾±E(fhÇ7–£ŽCüƒËùF;¾ÑŽx|#߈Ç7âñx|#íøÆþrÈ1oÄãí ‡ýÚQŸv,§JúF<ÈÑE(ÃfˆÇ7⡎o|#íøÆrÚñå´£>íXÎ7â›x´c9íøÆrÚ±¥ol©ñøF<È1r̃ó Ç<È1r̃ó Ç<È1r̃ó Ç<È1r̃ó Ç<È1r̃ó Ç<È1r̃ó Ç<È1r̃æææææææææææææææææææææææææææææææææææþææææææææææææææææææææææææaK:`!> âBÀBàL€#> pÂ> >ÀBàL BÀ> >Àp"pb!>À>À>À8"pÂ8b!BàBà8â">€#âL'B L€#> L€#L'LàÂêBàâL X >À> R > >À>ÀBàL > LàBàBàÂ*> >@V>À8âBàBàþBàLàâBàB > >ÀBÀR R LàBàLàBàBàBàB B B BÀ> > R LàL >ÀR > >À>€#>À>`!BàL >À> RàBàLàB BàLàBà8"> >À> R >À> >€#RàBàLàB BàLàBà8"> >À>`!>ÀB B B B B BàL BÀ> R R LàB@V2ƒ#pÂR€X XÀBÀ> X âþL'L p‚#XàR >€#LàL€VÂÊ> BÀB`–ƒææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææþæææææææææææææææææææææææææAI¾a9ÈÁ æá¡ä¡¾!¾¡â¡âá6â–ãnC–£–7âáâ¡ÔA¾¡¾¡â¡âá”äâ–ãâáâá”äâáâáâá6¾¡>¾¡âá6êã⡾!¾!¾â¡¾¡>äáâ7È¡>Úá–C–£AüÀ –£Ô!Ávâᔤâ¡ê£”„âᔤæþâ¡âánc9^OÚ!¾!¾¡¾a9ÚA:@†Ì@ì‡âá6êãÚ!¾¡âáÚ!ÔAÚ!¾!¾!È!¾!È!¾¡âáâáâáâá⡎e[Öe_fcVfg–fkÖfo¶>ÈAÚ!È¡pÂRÀ>ÀBà8‚RàTÓ> BàLàLàBÀ>À>`!> L'LàLà'B`!>À> > LàL'LàBàR > >À>@VBàRàLàBà8"¬> pÂ>À>1>€#dåBàþR L RÀ>À> R >ÀB B BàLàB B BàBÀ> >ÀB B B BÀ> R R€#R >À> > > >À>ÀB B B B LàBàBàBÀR > > >À>€#> >ÀB BÀ> R L'B BàR R€#LàL >ÀBàR`!>À>€#LàL >ÀBàR`!>À>€#LàL >ÀBàR`!> 8âL R LàB BàBàBàBàBþàL > >ÀBàBàBàBàLàBÀ>@Vpb!> > L€#Xà8Âp"L ">@V>1X X >À> ¬> p"L pÂ:€ÚgûØÿY龡–ãÚa æDaê£â¡âáä¡â¡–ãâ¡âÚánãn#Ú!¾!ÈaK¾AI¾¡¾!Úa9Ú¡>¾a9¾!¾!¾!¾!Ú!Èa9Úá–ãÚ!¾¡¶¤â¡êƒ–£¾a9¾!Èa9Ú!¾a9¾A–ã6@xÌàþÈ!¾!áøa9¾!¾!¾!Úáâá6¾aK¾!¾!nc9ÈAI¾AI^/ÚAI¾a9È¡ðÀ Ôá⡾AIÚáâ¡âêã–£âA¾a9ÚaKÚAI¾¡>¾a¾a¾!n#¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!þ¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!Ôá6ä!:À> >ÀpÂ>ÀBà8âB 3L >À>ÀB > R L€#L >`!R 'âL LàLàLà"âL L >À>ÀBÀ8'L L LàL@³>À> ¬>À> >€#> > R Rþ > >À>ÀB BàBàL >À> R R Là8"BàLàLàBàBàBàBàLàBÀ> >À>ÀBàB BÀ>À>ÀBàLàBàBàBàLàâBàBàLà"B BàL R LàBàLàBàB LàBàL > > >ÀBàLàLà8âLàLàBàL >À>À>€#>À>À> >ÀBàLàLà8âL > R >À> R >À> R þLàâBÀ>`!> R R LàLàL >À> B`!> L L > > L > âB'8Â> >À4%>€#>ÀpÂ>À>`!> >ÀB B –ãâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáþâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáÚ!ÈÁ~Ì`âA6€â¡¾!¾a9^/¾a9Ú ⵋGn¹xñÈÅû†°!Âoñ¾ÅûÖî[;‡ñ¾Å#ïÂv¶‹Gn^¼oäæµk‡°N’ ƒ‡¿}3Ò7íüöM<ßÄÓ9òìÔÎ<ä´Ï7ñ³9#}3Ò7ðØôÍoßÄÓN<ßÄÓN<ßÄÓN<ßÄÓN<ßÄÓN<ßÄÓN<ßÄÓN<ßÄÓN<ßÄÓN<ßÄÓN<ßÄÓN<ßÄÓN<ßÄÓN<ßÄÓN<ßÄÓN<ßÄÓN<ßÄÓN<ßÄÓN<ßÄÓN<ßÄÓN<¾vÄãñhG<¾vÄãþñhG<¾vÄãñhG<¾vÄãñhG<¾vÄãñhG<¾vÄãñhG<¾vÄãñhG<¾vÄãñhG<¾vŒ„ñ˜9Èñ §Ä#F#™9âñvŒ„ø§ÄãíˆÇ7âñx|£äI;FBŽoŒÄ)¿iG<¾ÑŽx|#ßP‡MÈoăíøMœ2’vC#iG<¾Ñuüæ6iG<¾H›c$ßhÇH¾!vÄã#iG<¾oؤ;qÊ$ãñ‘´ãñøÆHÈoăíˆG;lÒŽ‘c$äˆG;¾oØä6þiG<¾oÄãñøÆNÚ1’vÌã6iÇ<ȱ“y£ñøÆHÚvüÆ)߈‘M¾ÑŽx|Ã&ßI;¾Ñ›|£ñø†M¾1’v|#ߘ9âAŽ‘|Ã)ñøF;vòvŒäñøÆH¾oüæñøF<¾£oÄãñøF;âñxc$ó G<œ2§Œ$*òpJ<¾a“oÄã#!G<¾Ñy´#äˆÇ7âñx|£ñ G<œv|#äˆÇ7Ú!#`±#ùF<ÚoÄ£ñøF<ÚoÄ£ñøF<ÚoÄ£ñøF<ÚoÄ£ñøF<ÚoÄ£ñøþF<ÚoÄ£ñøF<ÚoÄ£ñøF<ÚoÄ£ñøF<ÚoÄ£ñøF<ÚoÄ£ñøF<ÚoÄ£ñøF<ÚoÄ£ñøF<ÚoÄ£ñøF<ÚoÄ£ñøF<ÚoÄ£ñøF<ÚoÄ£ñøF<ÚoÄ£ñøF<ÚoÄ£ñøF<ÚoÄ£ñøF<ÚoÄ£ñøF<ÚoÄ£ñøF<ÚoÄ£#iG<Èv|c$ò° 9â1oÄ£ñøF<¾o¨Ã ó¸‡$:ðvÄãí°É<¾±r|£ß°É7âAŽx|£©lGþ<¾§Œ¤ñøF;È1’vŒ¤ñøÆo¾1’oÄ£6iG<œr8e'ä°É7äÑŽx´c$ähÇHÚ1rÄãñø†SâÑŽx|£ŠPÌÐŽoŒD‡¨žëÖ‚½ñyo¯0Üøñq€ì@?Æ~ôcMØ€$x3|#߉SâAŽx´ãñøF<ÚvØäñhÇ7vòxcñøF<Ú§Ä£6ùF<Ú!o8å#ù†M¾a“oØä6ù†M¾a“oØä6ù†M¾a“oØä6ù†M¾a“oØä6ù†M¾a“oØä6ù†M¾a“oØä6ù†Mþ¾a“oØä6ù†M¾a“oØä6ù†M¾a“oØä6ùF<¾ñ›yÌc$ß G<Èoü¦6逰rÄ£ñ ÇHÚoؤ߈Ç7vò rÄãNùF<Úa“vÄãóÉ7vÒ›|#ßhÇ7Úñx´ãñhG<Èoc'íˆÇ7âñ‘|#íÉ7âÑŽo´ãäˆÇ7FÒŽ‘|c$ê G;âÑŽoc$íIŒÚñx|ƒñø†S¾oÄãñøF<ÚoÄ£#iG<Úa“v|Ã)òøF;FÒŽ´#íøÆHÚñxc'߈G;âá”oÄ£߈‡SFþÒŽoÄ£ñpŠ<¾a“vÄ£߈Ç7ȧ|#N 9âñx|c$ßÉ7ÚoÄ£#i‡<¾1’oŒäíˆÇ7âÑŽß´íÉ7Úñ ›8%íˆG;Fò‘8å#iG<ÚrăóPG<Ú1’oìä;iÇ78<|ÃN|9ŒÄ7´ÃH´C<´Ã7ÄC;ØDÍ ‘ÃN´Ã79ă`ÑlÀH|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒþM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|ƒM|C<|C<´ÃH|ƒM|C<|ƒSÈÃ7ŒD;ÃH´Ão˜A<܃"t@<Àƒ9ÄÃ7ÄÃ7ØD;|Ão|C<|C<Ã<Œ9ÄÃ7´Ã7ÄÃ7ÄÃ7ØD;C<|C<´ÃN|C<´Ã7´9ŒÄ78Å7ŒÄ7ŒÄ7C<|C<´Ã7C<|C %“üt ˆ2x„ÑCäDŽ#ê¨ÓN<å´£N<_~ÙAg®©N<ê0¤N<ê´Ï—ß´:ñ¨óM<êÄ£AälÒN<ލÏ7í¨Ï7í¨Ï7í¨Ï7í¨Ï7í¨Ï7í¨Ï7í¨Ï7í¨Ï7í¨Ï7í¨Ï7í¨Ï7í¨Ï7í¨Ï7í¨Ï7í¨Ï7í¨CP;ÿþ9ó39ó39ó39ó39ó39ó39ó39ó39ó39ó39ó39ó39ó39ó39óCCäÌÃP;’ÄãH;êt&9_~Ã:ß´ó%A8¢ ÀäAßÌÏ7ñ´ó A‘ À8æÐá4ÀôM<@‘c!9‘ó 4´óM<@}CAРŽußÄó 9ñO;0}PñCP;‘Ï7ÐðÍ<µCN<ßÄóM<ßÍñCÐ7 ùÏ7äÄÓÎ7íÄÓN<ßÄó PíT<äDLíPßcÝ7ñ@#þ@;ߤÎ7}39}3AíÄCAí0ÔÎ7ñ|ÓÎ7ñ´9ñ|Ï7µca<íÄó AíôM|äÄCN<äÄc89ñ|O;Ö‘39Ö}c9óÄÓÎ7íXØN<äÌÓN<ßÌ9ó0ôM<ßÄGÎ<}O; }Ï7ñ´óM<ßÄó †´#í`9âñx´ãùF<¾v¤!=`ò † ÷PD¢Žx|)ßh‡:âñv¨#ßh‡:âñv¨#ßh‡:âñv¨#ßhÇ—$AŽx´ãä˜G;¾AŽy´ãä˜G;¾AŽy´ãä˜G;¾AŽy´þãä˜G;¾AŽy´ãä˜G;¾AŽy´ãä˜G;¾AŽy´ãä˜G;¾AŽy´ãä˜G;¾AŽy´ãä˜G;¾AŽy´ãä˜G;¾AŽy´ãä˜G;¾AŽy´ãä˜G;¾AŽy´ãä˜G;¾AŽy´ãä˜G;¾AŽy´ãä˜G;¾AŽy´ãä˜G;¾AŽy|ƒ!íøF<¾r0„0iÇ7¬ÓŽoÀ¤ß È7âA3Ðc’èÀ7Úñx´Ã:@I;BŽx|Ã:í`H;¾Á Ä£ iG<ÚÁv|#ßÊ7âñ ‚|ƒ!íˆ9ò †|#í`9âÑŽoåþíøA¾”oÄãä 9æao´ƒ PÄ0ð˜|CQj©K_º$~t@´ðƒâñv¤ñpDêð À 4Ðñ @èÐÐ þß@íÐ ñð ñ ð Ð0  pãþÑäàáñ@­þ íð ñð ñÐþ ñ kä@ß²ö ­.kßíßÀòð ñ ñÐñ ßíÀßßßÐßääàáßß²êàñð ñð ­Îßíð ñ kßßäíð ñð ñ ñð íð ÞßßàîßßßßÀäÀä0Þß@ß@ñð íä@íð ñÐôpŠÐ¼ \E ± –0±ÀU´ \E ±ÀU´þ \E ±ÀU´ \E ± ´àíð ñ@óð ñ@óð ñ@óð ñ@óð ñ@óð ñ@óð ñ@óð ñ@óð ñ@óð ñ@óð ñ@óð ñ@óð ñ@óð ñ@óð ñ@óð ñ@óð ñ@óð ñ@óð ñ@óð ñ@óð ñ@óð ñ@óð ñ@óð ñ@óð ñ@óð ñ@óð ñ@óð ñ@óð ñ@óð ñ@óð Þäíð ñ@ó@óä@ßíð ­þ ñð ñuíð ñ@ Aóä€þñ0Š@äí@ßíð í@ñð í@ñð ñ ñð ñßâÅkïÛ@„ä¶Øn ¹yñÚMü6ð¹xßâ}‹×a¼oñÚ}‹G.Þ·íâ}‹÷íc¼oñÈÅû†ð[¼oñ&~ø-Þ·‰ñÔ ìàh3¿Iú×ÔéS¨Pù™È´ÌªUj˨m]‰FS~éðsÊ®¿¦ü:HR†'ÌÀoíâ}‹')ž¬VdðíÅç¯>|úðù##ËR±bñ €,Z²xÅ¢%+¯PRdñâK­X²8ÓjåÈQú&r¾‘Ä‘xh‘%^ì°Ç;8£EZb.^h¡£Ehñ€‰ú&žoú¦xȉç›xÀiÀ „ÈQšâù¦hˆ§›¤içu¾Q§›’™(žo àš®h¢xÀFuâ!‡›cˆšâ!'nHæuv n&žoÚù¦hˆÇÂx¾þ1‡Œâ™(p €œº ™>9 žvâùFn¦oÔ‰§xÌÉ Xi§¤‰çu¾i§’™(p®à›x¾1¦€v @vâé&iÚùf¢âù&žoú¦oâù&ÛoÚ‰ç›x¾‰G„¾i'žoâ!g oÚù&r²è›oÔ‰g¢ð#'žo&Šç›æùFß¾Éö›xÈi'Ûvâiç›x¾‰ç›xÚˆœx¾‰‡œxÔA¨Ú¨xÚ™‡œx¾‰ç›xȉ§x¾‰ç›‰¾Éö›¾A¨„Úù&rômç£oÚHvÔi'€{⑤ÅBÙ€–éþB‘B–ádN–ádN–ádNZx‘„œxÚA¨„ÚA¨„ÚA¨„ÚA¨„ÚA¨„ÚA¨„ÚA¨„ÚA¨„ÚA¨„ÚA¨„ÚA¨„ÚA¨„ÚA¨„ÚA¨„ÚA¨„Ú‰ç›xÈax vjg rjç›v¾‰§x¾™H߉jÇŒxîQ¤ƒxÔ‰ç›vôý¡vâi'râù&žvú&žoâi'žoÚAè›x¾‰‡œoú¦xȉç›vâ™ç›xÚˆœx¾™(žo|äñhÇ7âñx|#íˆÇ7âÑŽx´!íˆÇ7Òy d"ñhÇ<ÈÑu äPþ„2ð`†v|c ê8ÄS\øÂòƒ W± 5h¸ *ô£)ýøÁŽüƒÀ ƒ 8b~0Ã7òx|#ŽˆG,ZAiø€*ñE6$b/dP…%ÐCÌBn €dA‹XL‡² ÅtdA‹XȂӡ…bV# I8"´à…,hÁ Z´‚s8F5²Ð„cT£ «±f¡ŠPÌ@¼-8# ZLÇ-dA ÎÄ‚œ‘-8# ZpF´à…,,1ÎÐb:ÃáG<ÚoÄãñøF<ÚoÄC B+âÑ´ãÆÀ7Ò  `Fþ; 1€4Làßà@2 àñ0‡0€#  @ r¤!€À Ú1vHÂñ …,Ô ;¸ÃµC+xA ÎðB1¼€Ã: eàAíøF;âÑŽx´!ä@È7æñH € Ø0G(\  ˆG;FPpÄÄPG;F€l¨ã倯Úá‹\aíøÆ@Â!i ¤F<Ì1Ä@H;FP‚vpØÈJŽx˜ƒñ‡¤rt£ߘG$ðv|#í膤 ÜÈÚñ „´#%ÀF<ÌAˆoÄ øþŽxÄ ؈‡91 긅:̱€E´Ã1(@<º!i|#߈A °g¢߸FÀ1v|äóˆÇ7âñ#[äøF<ÚrÌ#ä˜ÃÚ!~µãùF<ÚñÌ#[ßH;Ú1oÄüßhÇ7âñx´ãÙ"G<Úñx#íˆÇ7âÑŽx|ƒñøBÈ1˜÷ñøF<Úñ óʃùÆ<BŽ|cñ Ç<âaÞo ¤߈9âñ rÄãí Ç<bÞo´#æýF;¾1rÄãñ G<Ì€yÜC-,1€ÕL‡œ‘-8þ# ZpF´àŒ,hÁYЂ3² /bA GăñøF<ÈoăñøF<ÈoăñøF<ÈoăñøF<ÈoăñøF<ÈoăñøF<ÈoăñøF<ÈoăñøF<ÈoăñøF<ÈoăñøF<ÈoăñøF<ÈoăñøF<ÈoăñøF<ÈoăñøF<ÈoăñøF<ÈoăÙjÇ7âaÞv|üòøF<¾o|¤ä9âñ ó~£߈9âñx´#aˆÇ=Ñr „ñø†yåñþ´ãñøF<¾‘­o „óh9ÒŽo´#íˆG;nyã#ä@H;ÈoÄ£ÙúF<¾1vcí@H;âñx|#æýF;¾o ¤äˆ¿âAŽx´ƒùF;ÒE(ÃfH;ÔCÀPë04ÂU®òŠe¼Â*GxJ:Àw €ì ø‘t@ÊÀƒò´#’ˆ‡*LAtðEðþØ‹>ÚAZX"dø-xÑ>`5¡ÐÀMÈÂ…% „ D€†˜ÎjL£ZÄB ¼ˆ-bÑ QÌáMÅŽÑ„XИ*ø}ð ć>ðÑ&И…,PZXB´¾0‹XXb²°Äda Ð"–€Sh! Gl"±à…ªáŽÞ°jp /xÑBK`ª Å   b@²Æ0 b‰ÐB–€,x1 b@N‘-d1‹YÈÂc8€,,!€X8Å EÿoÄ#wðÐ  €=Äà ­0Ã,Âpy¼ÇøF;º!iÄÃ3@; 1€v\¦#(A9¸áœ%%À†:ÌAppCÒˆ9ºQˆþo€# @Ë7!‰xЂ± / " ZÀF 7TƒÔÀ Y,`P-ü €çœeäˆÇ7âñx´#äˆ9ÐBŽx|ã,ßhG<¾oÄãíˆÇ<È1rÄ£ñøÆYæA޳ã,ß@ËY¾oÄãí g<ÈÑŽx£üŒÇ7΢ŽvгgùF<¾AÏy#ßhÇ7âñ ´´ã,߈Ç<ÈÑŽx´ãíøF;âA޳´ãêˆ9âñ µ#ä@Ë7ÔoÄãíøF;æAuÄãñøF<¾ÑŽoœ¥hiÇ7ÚrœåòxÎ7âñy|#íˆG;ÐÒŽxþÌãíøF;¾ÁÏo´ãíøF<Úvœ¥ñhÇY¾ÑŽo´ã= 9¾ÑŽo´ã,߈Ç7Ðòv|#ߘ9Îòv|ã,ßhG<ÚoÐóóøÆY¾oœ¥{Ç7âAŽo´ã,ß g;âA޳|£߈Ç7Îòx|#߈9âñç|£ê8 9âñx|#äˆÇ7âÑŽ³|ã9߈9âAŽç|£g =î!‰@–€,x! K @Ä€!h¡ O@–@+h1 K €¡…*Æ`^Ђ²D;ÎBŽx|-ß@Ë7Ðò ´|-ß@Ë7Ðò ´|þ-ß@Ë7Ðò ´|-ß@Ë7Ðò ´|-ß@Ë7Ðò ´|-ß@Ë7Ðò ´|-ß@Ë7Ðò z~ã,í g;Îòvăí ç7ÚoÌãhiG<¾ñœ³´ã,íøF<¾qr´ã,f ‡8$Ñx|#߈Ç7èÙŽ³ã9ñ G<ÈvœåíøÆYÈoœ¥}N<¾oăñhG<ÚvÄcä G;Ðòx|ƒžßhÇ7äṽgiG<¾AÏvăñ =ÉÑz΃gù†:Îò8Bx0Ã7ÈoÄãÝ6÷øÑ‚ñ!;|-ø?øñqàþî(À?Ø1L0`:Ø€"”3|ã,íˆ9âárÈ"L‡>ôvÃúÀ‡>„  K ­ˆ-ba ЂÐD,B1ƒÈÂ…% àYXb²pŠ,$áˆx´‚¼PC5Æ‘w¤£jhE,bÑÂXX¡E+2€‚Xx@’E( K "–@,Z¨´Ed <È¢d8€,,QYÐB–@ÉiÁx´ã,íÈPl´Â xˆB ‹o´ãg1¾v¤ØÀÐh íˆ9¸±8  ˆ9Â! þG8K€Rt@ñ ´8âä E,x‹VÄÂ)² /ÔŽj¸aN‘ ÐE( G<¾1ÐvÄãñhG<ÚÁÏvœ…ôlG<ȱ×oÄãí@Ë7Îòx|#߈G;âÑz¶ãñø9âA´´ãíøF<Úv|#í G<¾v|ƒží8 9èIŽy ÅEß8K;Ðò rÌÃYZ|Z´ZCàƒ>àƒ>´Ђ%€,ÐB,,£%À,È‚@ÀLÀ€,XÂÈ‚%-ð‚,XÂЂ,ðB+8Â!ÄC,ðÂ26ÁÌA5ƒÌ„,ÐB+ÐBÉYÈÂ2€&„B €8Àð‚% À0È‚% @,ÐB,ÐB(Ô€,„‚PÈ‚%@+@„% €-ýC<Ã7-ÈB2ó-ð‚,ÐB+ÄB+ð‚,ÄÂãóB2CDñC;œÅ7ðÓ=tÀYDD:ÈCœ…‹|C;x;ÄC;œÅ7\ƒ À¨8œÅ7ÄÃ7¸ˆ:ÄÃ7ÄÃ7ÄÃ7´C<´ÃYZ8‚$¨/ÄDð‚,ð-ðÂ2΂¸DD,Zyu4 €x ¶‹÷­Ý·xß¶ûïÛÂví¶[øa¼v Û}‹÷ma»oñ¾Åûï[uuîa@uþu>5þ!$a߂ʶÁW§Áœa¾!¾¡¾!È!$¾¡"âá$¡bR$hAbAx!Cda 2d d!dCxZ‚hh!$¡â¡âáäa#¾.¾.¾.¾.¾.¾.¾.¾.¾.¾.¾.¾.¾.¾.¾.¾.¾.¾.¾.¾.¾.¾.¾.¾.¾¡âá6"È!¾!ÈaNÚ!È!Ú!Úa!¾Aà¢BâââáââáÌ‚âáÚáâ æA:€!Ú!Ú!þ°£¾¡ââÌ‚¾(¾!¾!¾a¾a!¾a!Ú!¾a#BâÚa!æâââáâáæb#âáâáÚ!¾a!æâ₾Á,¾AÚa!¾a#â¡âá:à”ÌàÈ!¾!A:_v;ÀxÂæa!Ú·VM^øáø·Úìø^DíôåÚ ^ô^ôE^ø^VM^ôåôåô^ôåø!^øáD ^øáø^ôå¶DíDíø^Dí¶È!¾!¾!È!¾!¾¡âáÌ‚âa#¢âþ¢¾aBâ6b!Èa!Èa¢Èa!¾a!Ú!ÚâAÚ!|^øA^ø^øáøáVMÔ:@”àâáxòâ!þæ „‡éaèBèBèa臘ŽX‰!„Ž˜ dß”˜æ–ØŠ!„x˜®x‰éáˆãÁøÁŠéáŠé‹Ï˜‡éBèaèBè玘 „”x߬˜–xß „И”˜”˜Θx˜–˜xx߬øŽ˜ „âaö‡u‰éBî!¬˜æâ8øAÈ¡$æ!Ê¡þ¼¦a¦aÁ,Ú!Úᢾa# æAH àE_äE_þ¡ÍþA_â…þþàE_þþA_þAÔàE…·™›»Ù›¿œÃYœÇùÚìôE^ºùø^¸^øáøáø^øáôåøáÚÌÈaÚa!Ì`îA6 ¾â¡¾(¾a!¾aâáÚဂâá•ââ¢äáÚ!$¾(Ú!Ú!Ú!$¾ââá¢âá6"ÚA¾!ÈÚ!6ââáâÚá‚â¢aðÀ Bâþ$v³Zù¡aðÀ ¢âþÁgÏ­á"¾a#Ô!Ð:Ú!à"¾a#âá6"¾Aâ!­ÑZâá6"¾¡âá6"¾á¯Û!à"¾.âá6"¾!¾á¬Õ¡±7"Ôa#¾a!È!Ú!ÚÁ,¾!¾¡¾a#‚âáâáBâââ¡âáÔa!Ú!¾a!Ú!$È!Úa!¾¡âáB‚âáâââÚ¡qÔa#âáâáÚAâ¡âá¬ã¡AüâáâáâáâáâáÚáâáæd^æ!(}þrvrþ›!æÀ{BáæáÀÜÁÂbxrzrþ{Lk|€b€rbáÈ!¾Aèa‚Ô!Èa¶a”!$¡¾¡¾¡¾AÚ!$È!6Bæá¡à"|V:û¯Õa#Ô!¾¡âa#â¡âABɳ\Ë·œË»ÜËÛ!Ò:Òz!Îz!¾!Ôa!àb!Úa!ÈÁgã!­ã¡â¡ÔAâa#Ô¡Â`!$¡B‚b#âᢂ¢¾¡âáâ¡âa#ââáÚ!¾¡€bNÔaÈ¡¾¡¾!¾¡þ¾!¾!¾A6"¾!ÚÁ´¾!6BÚ!ÈAb¾!¾A‚â¡ââaÈa!Ú!¾!¾¡AðÀ ÚáBA«»}·ø¡AüÀ ¾!Úa!øÁË¿!ÚAÐZÚAàâââ‚Ë¿!¾a!¾a!Úá"­Õ.¾!Úᢾ!¾a.âAÉÕ!6"¾a!Ú!6â6ââ¡LëâáââáâáÚ!Ú!Ú!ÚÚâââá6b!¾¡È!¾!Èa!¾!¾Á,ÈaBÂg¿!Úþ!Ô¡Ôᬿ!:Àx€!¾!Ú!¾!¾a‚þÈaâA‚ææ!Èaâææ!äa!ä!ÈaâABBBÈaâB‚ææ!äa!äa!äa!äa!äæ!äæ!äa!äa!äa!äa!ÈaâAÈaâÁøa!äa!ä!äa!äa!à!äa!äa!äa!äa!äa!äa!äæ!ÈaÈaâæ!äa!äa!äa!äæ!ä!Èaâæ!äa!ÈaBBâæ!äþa!äæ âŃ'0ž<òÊ‹Gn^%ð æ ä 0ÞPÀ0ê 0à° 1ê Päð À0å #€Øð å 0åMPQ^ê@êð å ß0ULNê@êPê@êPT®åð å ä0Uß ß å ååå0Uå0Uåð Lþ êð êÀäßPêð êÀäê@SUê@êð êPêPê Gå ä å GLþ T^êPQÎäêÀäêPêPêPêð SUÉåå0Uå@ ÿñàô@ñÐßþrDÂ6 ÎàFü ñð ñ0^ñ ñ  ¢ÐäÐß íßß ÚÑòPßßÐñ°HñÐѱH@õR?õT_õVÿ ñð íß`ÄßPßPí íß ßí ßТMAòñð ñð íð ñ@í ßpíó0›°ñð ñÐñÐ߉[ßß@ñ ñ@ñ ñð ÑñÐñÐñð ñ íó@ñ íð íð í ñð ÑßÐñð ñð ííñ þó@ñ êÐßÐßäÐñ í Úßß°Š  x`ß@ñð ñp$’þê/"üpËð mÍÖF0"ãüàðì (ÀùàÑA‘2€Ï@#²± c àÀÀ7Ê l#ÀÀ6º€dÃäø9¼AŽzƒÍ'‡7ÊAŽæ—ƒÍ÷Ftbì”Ø'G÷ú Güãä0²ár|Cð1ŒmlƒÞ(G6¶á sÀáÛxÐo(oø`o ‡o†`] ‡lðð`€èø`€mèÐoÈO8€o†ð†oð`o ‡XŠñórˆ%rð†o(ì+rˆ%r¨èˆ¥r o o(rð†r o(rÁ"‡æþ+‡X*rˆ%rð†r ‡mðr(rðrˆ¥rˆ¥èˆ¥r ‡æ#o(‡*r(ì+rh¾èðrˆ%rˆ%rˆ…ˆ‡®pIÄCp„B,DEpI8Gˆ‡o ‡xø†x h‡oˆ‡oPˆ ‡{… ˜rPˆoˆ‡vˆ‡vˆ‡oˆ‡oˆ‡oˆ‡oȲoèŠoˆ‡oh‡,û†xh‡xh…h‡x ‡®ø†xh‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡þoˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oPrPrˆ‡oh‡oè … …h‡xø†xø†,#‘xø†xh‡xø.û…h…h‡xh‡xhrÈ2rˆ‡vˆ‡vˆ‡o˜uˆ‡ou ‡yP3˜x… ˆyø†xh‡xh‡o‰oà2rh‡oˆ‡o˜r˜‡oà2r …hø†xh‡xh‡oˆ‡vˆ‡vˆ‡oˆ‡vˆ‡vˆrˆ‡vøø†yørˆ‡o …h‡oh… …h‡xèŠoh‡oȲvºxH–v‰oh…èEP?0þ…huˆ‡CŽÕdÍÖtÍàÈ„WÈ„Lx…Ú|…ÚÌà‡Õ‡èv€`@‡à‡cèE<…ø†xø†ø†xh‡xh‡xø†GP€]8ph‡v`x€ €€ …xX!@€Ppˆh€4˜€ h… ‡xè@€àih‡oÏo膸Pˆàu(‡oˆs€†Ps‡oh‡p†x€†Hƒ ˜Ðr¸†¸ø†x¸†‡v‰oˆ‡oˆ‡oh‡oˆ‡o uˆ‡oˆ‡oˆ‡oˆ‡oˆ‡vˆ‡oþhr‰v˜rˆ‡vPˆvø†x ‡xh‡xø†,û†x ‡vˆ‡và²vˆ‡vPˆðä²oˆrˆ‡ohu€ø…ø†xøyȲoˆ‡o˜‡oPˆoPˆvø†x˜‡oPrø†,ëI<€,k‡oˆ‡oˆ‡oPˆv ZŽm˜c€mø†l@‚€m †Ð…mp†€m†؆l† ‡l†˜rˆ†m†;Øo؆æÛ†æ«¿mˆ¥úó†mˆ¥mð†ú3‡e5‡ú#‡mð†mð†m ‡úk¾úë¾m ‡mp~˜†l0Ès &€FØpÀþo B˜†n(„l˜2P€úȆmP„iXV`€i(ix† Èmx†Ð…ú†؆lÀbÀ€Ø`o؆l†ˆ¥ú3ìÛ†X"‡m ‡mð†e¥úó†úó†m0rð†m0‡mð†eõ†eEÚeí¾m¨m0r¨?oØrð†mˆ¥m0r¨¿XÚ†èð†m ‡mðr؆Xª¿XÚoØoØo¨?o؆XJZoØrð†mˆ¥ú‹¥eõ†m0rð†mˆ…ø†vˆGep†l`Ümˆu(uˆG‰v‰vˆ‡oPˆvPˆo…þ„Pˆð‰oˆ‡oˆ‡vˆ‡vˆ‡vPˆoˆrȲo˜rø†vø…ø†vˆrø†x ‡vPrˆ‡oPˆvˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡vˆ‡oȲy h‡xøø†xø†xø…ø†x ‡Mk‡xø†xø†xø†xø†x ‡vø†xø†xø…h‡xø ‡x …hþ8‡vƒy Iè€oP‡xÏvPˆvˆ‡oPˆoˆ‡oÈL…ø†vø†vˆ‡yø†xø†vˆ‡o røh‡x h‡x  …ø†vºðŒ‡y ‡o‰oh‡x ‡,k‡oh‡oˆ‡oˆ‡oˆ‡oÏoh‡x ‡xø†ðŒ‡vˆ‡oè€Cà<0ƒo ‡xø†x8„×de×ä‡xÝ”åÚ|XM~Hàw€`‡à|ÈèE?0…P…ø…¸âxP‡ÈsH€EOh€oˆh€xh‡oh‡@l0‡Àv€rˆuhà†^ˆþs˜  PsÀs¸r€H†xP‡x ‡y¸†ø†vÀsˆPnèu0‡¨€x¸u 7¨€x0‡;0‡;‡xØuø†Ìlh‡xø†xh‡xh‡xh‡xø†x ‡yˆ‡vø.#‡ð‰vˆ‡oPˆvø.»âoˆ‡oˆ‡vørˆ‡oˆrˆ‡oˆ‡oÈÌvø†xø†xh…h… ‘xø.k…h‡o ‡yˆuˆ‡v‰vˆyø†xØEP<€oˆ‡oPˆvˆ‡oˆ‡oˆ‡vø†xø†xˆá ‡l˜o ‡gXð†mHØþ€ x‚È`€mÈ`rÈ`€m˜†g¨8‚i¨úó†mˆ¥ú#‡e%‡ú#‡ú#‡mðrȆe͆eõ†m ‡e¥e%‡mð†¤]VoÈGø‡m c F(‡m‡g¨@8‚l  @ €F˜†lx €@q†ØÆ†È`€4`Pl˜†mH‚@F†؆l †€PƆ؆è†Ør؆lXVoØoXVoØoØoØr¨?r¨?r؆Xʆi¨¿l¨?o ‡e%‡ú#‡ú#‡mˆ¥mˆ¥mˆ%¤þ͆iØo@ZrXÖl˜éžé&‡m ¤%‡mð†m ‡m ‡m ‡ú#‡m ‡m ‡m ‡e%‡ú#¤%‡e͆i¨?rˆ…ˆ‡oˆGpe¨?rð†m(oˆŽoˆGˆ‡+þ†v …ø†x ‡xh…€y˜E rhrˆ‡oØ´+n‡oh‡xø†xh‡oh.#‡y ø†yȲð‰oˆN—õY§õZ·õ[Çõ\Çu…ø†xø†v‰oˆ‡vø†xø†xø†xhÏxhø†xø†v …ø†xøhh‡xh‡xø†x …ø…‡vˆ‡+þ†vP‡v„þrPˆvˆ3PEè€x ‡x ‡xø†xh‡oˆ‡ðŒ‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡oà²ðŒ‡vˆrPˆoȲvø†ð”‡+þrPˆð”‡vˆ‡oˆrˆ‡oPˆoˆ‡ð$‡xh…ÏoPˆvˆ‡ðü†xhh‡xø†xh‡x h‡,#‡x èE<ƒ,ûIhå¨_͘åªoÖàv€p‡À„èEP<0ƒoP…ø~h‡oˆrh‡r€Hp(‚ h‡x†ˆp€†ˆrˆn€dÏ]Pr€Àuˆ‡oÏoh‡xPu þc0€xø†vø†xP‡o¸üyØu‰v€ˆn]øuØørh‡ËWc0€x‡xøh0€oÀý,kuPˆoˆ‡oˆ‡oˆ‡oàôx ‡vPˆvˆrh‡xø.#‡xø†vø†vø†xh‡xøyh‡xø…ø…h‡oh‡o‡vˆrˆ‡oPrˆ‡yø.k…ˆoñ¾µ+ø-Þ¼oñ~‹GîÛÂyß~‹÷­]¼oñÈ-ü¶ð[¼oíâ‘û¶p^E´üˆ÷má·…2ã‘[8œ¬ÿ¦ñܶmš3rÙ¶eËÆó(Ïl>§eÛ6œ2žä¦*›–mþÚ¶£S§mãésšOžÛNÛÆÓç4rÛ¦m›FާÏiÛ”‘ó9ͧ²©ÓÈùœæÓÑ?gÙ”m›–mÚ·mÓ¶)›ºmZ6žE³Mó¦Ì§3rÞÈm›Vt9eä¦)6`¹mG³MÛVTÙ4r“Éyó–mZ¶iÛœmS¶§Ïi>§ùTFé¶iÛ¦mã¹ç6ž>§‘ó¹í(¹mÓ|Nó9mÏm<·ñ´nœ2rÛ¦m;JnÛ4rÛ¦‘Û6m¹mÓ|NsFŽç6Ós9Gm3OÓl3Í6Ól3Í6dñDŽOÓ˜ç2äLË?ßÌCŽ#ÎLã OÛxóÍ7ê´³$ß4Ó7íȤþN;ñ|À<÷(ÒLíÄóM<ßôM<äÄCÎBíÄ39 }Ï73Å£N<ßÄÓN<ßÄóM;ñ|39ñ9ñ9ñ9ñ9ñ9ñ9ñ9ñ9ñ9ñ9ñ9ñ9ñ9ñ9ñ9ñ9ñ9ñ9ñ9ñ9ñóM;ñ´39ß´92µ³P;ñ|9ñ|ÓŽ:ñ|:3µ3“:µóMAñ3Ó7íÄÓÎ7åÈSP<äÌCN<ß9ñÆ<÷€Ò92-ôLäÄÓŽ¼ñ´O;ñ´þO;ñ|Ï7ÅCÎBß´³Ð7íÈÔ9ñ´Ð<ßÄCÎ7 }“o<ßÄÓŽ¼ä´O;2}ÓN<ä,ôM;ñ|ÓŽ¼äÈôM<ä´óM<íÈôM<ßt ˆ3~˜ÑÎ7 ©sˆNI+½4ÓÿðD >´05ÕU'Í2üÃ?:qýuŽ(ƒ‡ñ|ÓÎBüÈÛÎ7YT`Î7»L<Ð O;Ð 0Lð÷|ÍíÄÓŽLäÄs  <À@ñ3O<êÄCN<íÄ É|CNAê@3@;Àø,t @À@ñ@#9ñ¨2©Ï7ñÏ7 }O;ñ´³9ñþ´CÎBí|Ï7ÓÎ72‘3ÏBíÄóÍBß,ÔÎBßÄÓŽ¼äÈ[P¾ßÄóM<í|³Ð7ó,DÎ<ê,ÔÎ7 µ#“:íÄÓÎB¾±opŒíˆG;86•yt@ÊÀCâÑŽoÄãñhÇ7âñ…|C&´ÐÉ4¶1 ëHhæÙÆQ¶ŸðÄÎØ9NÈgðÄ'<ÙO|2NÃ'<ÙO¶QBëeÓð‰„¶1 Ÿ(‚Ó°Î4¶Á“mLcdñÉQ¶1 ó”pÓØÆ4|¢ ` à(>™Æ6Žâ“i8CBÛ˜Æ6¦±i˜‡'ÛàÉ6¦qBŸLcÓØÆ4|2 ŸLÃ'ÓØþY¬C–mðdÓðÉ4|2 Ÿ e<ÙO¶1 ë”pÛ8Ê6xâžl)Û@Ê6¦± žlcÛ˜Æ6¦±iìqGÙY|2 eÐâ2q„3”¡ Ÿcå8f9¾¡GăñhÇ7äõvă2@<案£ ùÆBÚ±yÈäñø†LÚoÄ£ ñøF<ȱvÄ£ñhÇBÚoÄã2‘‡Lä!yÈD2‘‡Lä!yÈD2‘‡Lä!yÈD2‘‡Lä!yÈD2‘‡Lä!yÈD“–LÚ!o,DZßh98¶oÄ£ñhÇ7Úñx´ãñøFþ<¤µr,¤ñø†L "“oăóXH;âÑI¨#߈G;̰Qt ßhÇ7ò ™´#íøF<¾rÄ£߈Ç7âñx|#äˆÇ7äEŽx|c!ßhÇ72•x|#íˆG;dò ™´ãñøF<ÚAŽx|£ßXÈ7ÈoÈäñhÇBÈ!“o´ã )È7âñ ™|#ß(H<Ô±(‚x0ÃBÚ¡Žx¢i¾õ-=ôÁ{|kâøÇ×þá$Tà·üè€"há3´#íˆÇ7þñv|#ß0Ç€€ Xˆ4p@cñøF<º!iÄ£å(4þ©´ã áFñxCíX9òõx,À )H<€!€ytCÒˆÇ7âñr¬#PG;Œ!u@c2ÆÔ¡âx#íW;dòvÄ£ùúÆBÚ±o´ãñø†LãñvÄãñøÆBÚñx|£ñøF;âñxc!ß(H<ÈÑŽx|#߈Ç7BŽx|£ ùF;âÑŽx|#äˆG;¾oă ùF<¾ÑŽ…|c!߈‡´òvÄãñøF<Èy£’†Ðy}#óøÆBÚv|#±Ð‰„B-êQóÄ…¢üØ.^;ˆß¾ÉkG4^;ˆäÚÅû†’f»xß>~kG¶ÝÇvóÈÅûï[¼v¿Åû†ò[¼vD¿ÅûÖîÄoñ¾Åû†²Ý·ä ¶‹G.9ˆß ¶ƒHî#¹xßâ}kq¹’xù@”Äyäⵃ8œ¬üøýsæˆxñâ›6 ä÷ß¿A|‚™ã×.ŸA±ž»@~Ý òÜß?~ùä÷¸@~ÿøÈo p‚þüÿGžŸ@~ùˆ‚øù‡ƒø8ù⇠~äg ಎÁ 1ü‡ìøˆŸ‚øˆŸbù'žoÚÙD™i”™fr¼ñ¦œvÈh“oâù&žoæù&”âù&žvâù&zÄ‘¤ƒ¾™‡” j'žohj'žoÚùè›vâù¦xæ!‡¨oˆB)žvâù&žvâù&žvâù&žvâù&žvâù&žvâù&žvâù&žvâù&žvâù&žvâù&žvâù&žvâù&žvâù&žvâù&žvâù&žvâù&žvâù&žvâù&žvâù&žv>ú¦xÈ!ê›vÔ!ªx¾‰‡œþæù&r¾‰çˆ¾ùèˆÈ‰‡œoÚ‰‡œvâi¢y¾è›x¾Q'žoÚ‰§x¾‰‡œvÔ‘¤ˆP ãzD進ˆú¦ˆ¾‰‡œxP"ê›xÈè›xÈù¦š¾‰ç›v>"¢vâù¥Úùè›x¾A‰¦v ú&žo úFžvâù&žoäA)žoâù&žohjGžvˆú&žo:P„<Ìø†œx¾‰çBHZ饙nÚé§¡^zE”ÁÃŒx¾i"~ȉ‡œxÔ!§È™"u ú&”Ôi'žv¾%rÚù†,ræi‡œx¾AIu¾‰‡œx¾ˆœxÚ!ç›xÚ!ªþoÚ!'žvâi'žoÈ!'žoâi¢o>j'žoÚù&žv¾iç›x¾!‡¦vÀúè›xÚù"ræùè›x¾‰§oâiçˆÈ‰ç”¾‰§o(“§š¾!'žoâi"yÚù&žoÚù¦ˆ¾™¢ohj'râi'žoâù&ʾ! %xÔù&”È™¢o扇œxÚ‘ 8BxÀ7âˆ|ã#äˆÇ7>B‹ðÃ’àÇ?øAàЃ„+úÂòã®Ä?øQ~ „Øq!pÂðC ìÀ?Ø1„á‡@ø±CìðCˆEÜ!?ðÈáAøÑþD‡áÇ#à‘á‡ù!~üƒNAøa~`‡R,?þìð#ü€ˆ:¡ gL#ÓØ9¼ñrüMŽhG<¾1ˆ´#íG<ÔAŽ`÷Åâñ ¢´ãä€J¾vÐäùD¾ñ‘oÄ£ùF<¾oģ߸È7>ò|ã#ßøÈ7>ò|ã#ßøÈ7>ò|ã#ßøÈ7>ò|ã#ßøÈ7>ò|#íøDÈñ‘v|£߀H;ÈÑŽoÄ%߀ˆ:Úñx´#í€H;âш´ãíˆG;ð‘oÄ£òøF<Ú‘þv@äAÉ7âш#‡PG<Úv˜"Šè@<äñx|#ß@É7>ò ˆ|#í G<¾ÑŽoÄãñP¾ÈoÄãñøDÚñvÄ£ñhÇ7>ÒŽoăñøD¾1x´ãñøJ¾‘oÄ£!G;âñ ˆdŽ&ߘÇ7âñv#ähÇ7âñ ˆ¨"pÄ0ðš|Cù@ >‚¤à)ø@ >‚¤à)ø@ >‚¤à)ø@ >‚¤à)ø@ >‚¤à)ø@ >‚¤à)0A$1 <„áñhG<¾ñdޱˆ-€+ Yþ´‚±-„Û Z´"²®peA YкЮ,hÑ ZÈ¢Àõ®,h àÆÂ»±E,dáÛXW´€./h1 àÊ‚Õ.t[]Zð‚².t½K èÒB¸´.-|+\ZÈ‚²àpyA áz·¼ …,xA‹VW½±…weA 誢² …,h! Z@—Ð¥…,Ô[]áÒBÀ./h Yøº¾n,x! ZÈ»´- Ë‹(‚~@<(oă2‰G;¾XÄŽØ!=œ`ð¡þÆ ªÀ‡`ø£|Fá¼C~äãüpÇ\È8ïþ;ü?øhAšÐ…64ŸùèXü#ßh‡#œ1 eLcäØ9Ê¡Žv|£’°r;Ôr´#sVþF<¾€yÄC-d, àÊ"­à-dÑ YÄB¸´E,d\Ó¢­.-dA YÐB¼€n,h!ÜXÐB¸± …pcA áÆ‚Â-„ Zðã툇$$AtÝÄA·# òv@äí€È7Ú‘o´"ßhD¾Ñˆ|£ñh‡•!ÒŽoă9æAŽvÈ£ùÂQr´#íˆ9¾ÑŽx̃߈Ç7ÚñvÄãíøF;âÑŽoX™þ߈9âñ ˆ|#ä€9âAŽx¨ãñ G<¾3Ìã’èÀ7 òx|#í€H;âñ ˆ´Ãáó G<¾aåo´ãñøÂçñ „#ó Ç7âñ +·ãoG<¾ÑŽx´#ä˜Ç7Žˆ äVnG<¾ðo´áí˜9 2rÄ£ñø†: ò(Â~0C;¾uâüPÚéQŸzÕ£þüàA?Vz„ Š†ÌÐrX™߀È<âÁ ò8ÿàÇ@øñ~ü8á‡A€càü8Î?€#~üƒÿ "vøñ~„áÇ@€C~üƒþÿÎ@ø!~ „á‡@ȃàüƒŽAø Èãøáøáøa ø øáø;øA €c‡øa €ã€c øáøáøA øá€ãøÁ ø¡ð@È!È"Ú!PâÚAÚ!2‡‚”Á\ˆè øa\Á\\¡\\¡\øáÐâÌ @ ­ð ±0 µp ·bá¬ÌœÁ¦a¦a¶Á¾Ô¡âA¾2Ú!Èa ‚ B Bâa¡øÁ €ãøA øa øA øáøá€£ ø øáø;øa þøa øa øa øa øa øábáâáoè!ÔáÔ!F²a¦a á ¢¾"Úá ¢¾"Úá ¢¾"Úá %¾!¾¡¾"Ú"¾!¾¡N¾¡ ‚Úáâ%¾"¾îÎÊÚÁÊÈ!Ú"Ôáã¡ ‚æÛAÔ¡â¡âÁ âa$¡âᬬâá⡾!Úáâáâáâᮾæ"¾!P"¾ÁÊÚá âîâá ââáÚ ‚⡾ÁÊÚáÚá⡾¡È"È¡¾þîÚ"¾!¾!Ú"ÚàñÚ":@”Ì"ÚAâáâRàRàRàRàRàRàRàRàRàRàRàRàRàRàR ôøáRàRàRàRàRàRàBÀ6@”Ì"¾!¾áâ¡Ô¡â!8‚þ\ˆ ‚þ⌊ˆ°ƒ<‚ ‚8šˆ<‚<þ‚ ‚‚ ‚°ƒ8‚‚øŒ8þ:À†ÁÀÊÚ!ÈᬬŽÂa‡è øþ¡ ‚ÁøÀöàöÀøÀÀ¡ ¢öA`ŒàøÁV @øáء Ҁ`þ :`t€þàØaøáòA`t¸0EUtEY´E›¨ø!¾¡Aœ”aÈÁÈÁÔ!Èá!P"È¡â¡ââ¡Ô"¾!æá$¡‚Š‚ ‚‚þþ‚þþ‚‚þ8‚‚‚‚‚‚"ø!È¡æÁÊÈ¡b„(M$ÁÊÈÁÊÈÁÊÈÁÊþÈÁÊÈÁÊÈ"¾!È!¾ᾡâáâá â(#澡¬ìâ%â¡âáÚ!¾!¾!¾¡âᬌÚâáÚ!¾¡¾¡âá %¾¡¾!¾¡¾á ââá€ÄA:€ âÚ!¾"È!æâ¡æáâ¡ âÚÁá¾ÁÊÚ!¾!¾!¾"P"¾¡âá ââ%â¡à‘ â bÈ!Ú!æ ¢Α¾!Ú!¾!Ú"Èá¬ìâáÚáP"Ú!¾¡AðÀ ¾âáâáþþb/h•|!0Á’æX Pà„ÖBàL $AðÀ B âÚ!ÚáÚ!\4 ù¡Ðø! ùA ø;øA øal…ˆšˆàŒ:@”Á àPâæ!Úá⡾¡¾!¾!b œÁ\ˆè øÁüÁªN sÁ¡ *×øáøáFð¡n¡øaP€ò!r€ØA®€Ü@®€Ü ø€"r€ÜaþàøAPü!pn¡7z¥wz…ˆøÁÊa §A¶!¼¼¡Ô"$áÈþáP"Ú"¾¡ Bâa¡øAˆø! ù! ù!ø!È!$æ!Ú"ÈÁ¶Ò¦aá¬ì¬ì¬ì¬ì¬ìŽæÁʾ!¾áQÂÊ2áÚá ‚æ!¾¡â2ä®âá ââ2¬ì ¢îâáâ%¬¬¬¬$áâ¡  èáD¡ÈÁÊÚ!ÚᎠ¢âA¾!È!¾!Úáâáâáâæ"¾a¾!PÂá¾"Úâá⡾¡¾¡¾Áá¾áÈÁÊÚáâá ¢¾¡îâ¡þâᬬ¾"¾áÈ!ÈÁÊ:@†Ìá¾AâRàP9PùR`•S`•SàB "A €#>à€ãxàV9P¹úáZ P9i:@†ÁÂàÔ"¾âá ¢báØa ‚ÎØa¨7œÅyœù¡Að@®â ‚æ bÈABa‡è ø¡ ‚Áø`öàöÀøÀ‚¡ ÂúA øÁâàØAð¡Ò!ðAÒÁøÁàØ¡øÁàöÐþa`œq:þ§uºÐZáÈáÚÁ”Á¦ É!F¾¾!¾Á¬ìâáÚ!¾%¾!Ú!¾!âá$¡vzÐbáâa¾Áèa ¢ÈÁÈÁ¶aÆÐâáâáâáâáâáâáâáâáâáâá⡾¡¾"P"¾!¾"ÚáâáÚ!È!¾ÁÊP"¾á¿"¾¡âáÔ!Ú!¾¡¾!Ú"¾!¾AÚ!¾¡ŽâáâᬬââáP"¾¡¾áâ2ÔÈ!¡ ¢¾AÚÁÊÚáÚ"Ú!ÀáÚþáÛÁÊPá¾!È¡¾¡¾¡ ¢âaÈ!ÚÁÊæ âÚáÚ!ÀBÚ!Úᬬ⡾!æ¾"¾Áʾ!¾A® â⡬ìâá:@”Ì ¾"Ôáþ’ÆL i\<"¾"Ú ‚æáâáî ‚âA¾¡â¡þâ¡ ¢¾!Ú!Ú"Úáâæ¡¡È!Ô!ÌàîA6Àã!‚¾!¾Áʾ!Úá¬L¾!ÚáÚáâáâÁã¿ÁãÛáâá ‚æáÈ!¾!¾ÁÊÈ!Úá¬ìàQ¾!Èa¾Aí¿"¾ÁÊÚá⡾æ"Ô,âáâá ââá<>Ô":@xÁÌ"ÚAâáâL àõaö?ÀBÀ>  ê¡ìa÷ëÁêáP€èþ!L Z€RÀRàZ > >À6@†Ì"ÚAâþáÚ"È!háØa°ƒàŒ`ÜÝÿý‚:@”Á`È"¾!¾"¾!¢]¼vßâÅú‡ðŸ3G "¤—?W|úù Ƨ Ÿ`þúñ –Ðt í @‡ð˜‚î t7¡»ÿØ @‡ð˜~ìüs7€Ÿ=øø9<Š4©Ò¥L›:} 5ªÔ©T«ZE‹_¼xß6)S–MÙ4rÞÈ•+GNÝ7I[ÛnýÖî[`‚¡î肌ЅËjÖG0‚ýRЂ¤ ÿø@ þÁ˜P„2ð`†v|#—ùG<¾vƒÿ`Ðd(àîÀ?Ø!|üƒé0À?òtüƒÈÀ¦®‹Ýìjw»Üí®w¿ ^Mñ£¢àv|c+íØÊe¾ÑŽoÄãñˆÅ?øek¿ü¸”D‚1ˆ*Ø  ƒ?Âô!ÆBˆDþ!‘ðãüH?âŽüãXÿB$òcýC"á-±‰OŒâ«xÅÚåG,þñ­8Â4ÎÆ4¶Ao|£¥ñh‡#âñ ·|£-—ùþF;¶"€xÌCà‹Ÿœ)~Äâ[Q‡$èÑuœÅÙØ8áˆv|ƒóh‡$$áGœ9Íi–Dš%ÁfGœyÎiž³ï|æCØ™Íxž³#$Áæ9Ǚ͛°sšíìˆ3;ÂÎmù†[Èv¢¥ñhG<Â{(b[¹ÌV¾Ë|£-߈Ç7¶ÒŽoÄ£ñ¸L<Úr´ãíˆG;¾±•vl…ñøF<¾ÑŽol%räØÊ7âñvlåäˆG;âÑŽo\F߈Ç7âÑy|#íØÊ7¶ÒŽo(h+íˆÇ7âAŽy´ƒóhG<äÑrămé€$”3l¥êˆÇþ!þÁ| !R@$û…À~ÁLðƒjHÜÔ¨¸Å+¾ #)-à ZÐÐà, ZÐE(Ãfh 9ÚñvÄã[¡?Ü!€„¤cÿ`ÇþáŽ$Äø;Àð#Ȕӟõ¨K}êT¯ºÕ¯Žu¨ó£ŠP†ÐŽ­´ãíˆÇ7âAŽyc+ó ‡,®Î„HdîtO?"ªK!ü@;@u~d}ð„/¼áøÄ>üØÊ7$1¯€“ÛÀe9È¡ŽvH¢[ùF<¾oÄãñ G<Úo ÷Dû¨Çâ߸Œ#þèqy|#ß(‡7ȱi8CŽhK;‰ „îÿÈ?æ~‰$¤éBúñ~8¤ÿàÇ?øñô¹'„ÿ û?øñ~ D" áBø‘~H"äˆG;¾Ñ޶|Cñ ‡:âñ f°¢Ðñ ñ@ñð ñð ñ@ñÐñð ñð ñð ñ@[qñ@ñ@íÐíä°ß  mÑnAnÑñÐ[ñ mñ ñð ñ0äð [ÑñÐß [Añð ñð íÐäpßðUnñ ñ@mñ ñð  Ê€fð ä߇€Dòö“!ð)ðþö#$öc4 q4° q(‡rx! †-ð)Ðÿ-À,@$P°Š  xêð ñ@ñÀ[qäÀ þà€q Àî0ýàî0ÿ`€ÿÀã0±§Š«ÈŠ­˜uü°Ž  x ßíä°„ßд`xüðátüàtüüüÐì0OÇ®Ñ(ÓèŠü üð [áÎNäà Û€+å ¸’ð [ñ ó°ß0mAm!ñ0ŠÐü@ŠÇ±ðäß ó[+æ1Û0 Î —A’ÀóPFþyFf4f9eT‘÷÷÷0÷÷i‘ó`Fó‘‘ f4ô0ôpó@Ióð ›à mÑß@ó ’Ðñð [aó¢°ñÐ_Dóä°„[ñ äíàíð ñp[ñ [AñÐòð ñð íð nÑßßßÐ[¡[Ññð nñ ñð mq_Dñð [A[ñ ñpßÐßßÐnqñ [ÑŽ0 x`nñ ’€)ð& $!ðN"$&&ð!`,ÀÕ@¯àš¯ù Ëð 4)ð&þ-À,Ðÿ-ð¹À&@ àÀfðEüÐßдðì<Àùà9ðì0ÿÀÀÁ #pÿà20÷¨žëÉžPÇ ´à°ä°íßßííð ñ WÇRlj7wí©  Ê  J ÿ°êàÎà Ê0 Ù@¸Då펗—Ñßpñð ñð ÷ РƒG ÿÐŽ@ù -UÙ@ÛNÊàmáÿpô0÷p+9÷`F÷0÷0÷°’ó@÷÷@ñpyñpe4f„þ¤HJó@óp9¦+ɦf4÷0ñpópgŽÐ íð ñ@[¡ípm±a’Ð ò —ÑíßßßßíÐäÐßßÐäÐñð [Ñ[ñ ñ0ß ¨ßp[ÑñÐó@í@ñð ñ@mñ ñ@ñÐ[ñ ñ@—ñ —±í—±íß ¨ñð [ñ ñð ñ@í [ñ  Ê€fÐß°êpa)&ð& †!```!`-Г ™ð ™ð ùš -ÀDòöü-à)Ðþþ`ðÀµÐŠ  ~`íð ñð ñÀñð ñð ñ ÿÀ€ @:Àÿàðì0 Á€ö°Ð[0°§³;˳={xüЊ  x ß—!ßßßêÐñ€+´à³UkµW‹µY«µV˱ðß@ñàÎNÛ0 Û€KßP‘Žpßíð ñð [A[¡[!ñ0ŠÐü°µ‰Ç±Àßêàô[¡¸² ÛNÎ ßÐñàÿ0ô°%YFñP‘ñpñ0ñ0ôòP‘ñ0ñ0ôópñ0ñþò@)¨ó@ò@ñP’mQ’ô0ôP‘ò`‘ôeó)÷ß° ²í ¨í‡ð ñ ßf0ð í°íð ñð mñ óÐñÐñð ä—Ñíßßä°—Añð [ñ [ñ ñð ñ@ñð ñ@ñpmÑñÐñpßЬßÐñ@ó@mAñÐääí ß°ßpß°—äíÐßÐ[ÑŠ  ~`[ÑꇀDb!`& $) $&@$B¢šö*ÅSÜ,`?-ðÀþ!À)`?,@$ Àf°íßðííê ÿÀÿ@w !ÁG! Á+ȃLȘ ¼à°äð ÍíЬ´PÈ•lÉ—ŒÉ™|)±À[Ñ’  Π Óð¸¸tíß mñ ñ0ß°í°ê°ßñp’К|u´ðñð ñ0gŽ q¦Šf’à[ñ ŽÀ[1m!‚:[1mñ ñ`‘ñ`‘ñ0mñm1m1m1ñ [[![!‚*òóó°%¹óŽÐ êÐñÐñþ€+ä ñ [Ña0ô äð ñ@ñð [ñ í—ÑL‘#ñÐñЂú mÑñð mñ ñð ¼äpßäð íäÐßÐñð ó@ÍzñÐÍú mÑñÐmñ ñ@í°íßÐñÐñð p¼€fð ä߇€Œ•!ð&à$ö#$)&@$,ª,,,`B&™°N‚Ø@$ ¼€fð ‚Ê—ñ ñ@´ðü)üÐüp)üÀË¡-Ú„ÇàÊ€ ¨ßpßíð þíð ñð ñ ÿ€Ø¹­Û»ÍÛ½íÛ¿ ÜÁ-ÜÃMÜÅmÜÇÜÉ­ÜËÍܽ ÿÐäŽà Ó  Û€+Ù@gQñ ’ð [ñ [ÒßÐñð í°ó À£uü ÿßÁÿÀ Á áß°ŽÀÍJóòÐò@ó°ä0‚Jó@Óná.Lóò ¨ä0m!4-‚ú ›Ð äíð mч@í [aóp¢°óЬíð [Ññð ñð [Ñß ¨íð ñð ñÐßßßßÐä@Óßpßpþ4M[Ò[ñ mqßßíð ñð ñð íð [¡ßß@ñð ÍÚßßääРÀa ¨ß a?Db!ð)`Œ&&À¼ýˆm!-Àâ`BÀ@$,` Àf°ßßÀñ@mA ü@È»Îë½Nx ´àÐßÐLó@[1ä ÿþþ±üâÅkçÈ™³mʦm#ç¹xíÈ9Š×®ÝÀoíâ‘ø-^»xßÄ»'©Ã?”)U®dÙÒåK˜1YÆú×.ž:~óæÅ£§3žÎyçIøÍ¿xää dJN^;¦ñÚE%7¹xä,nmï[<‹ñÚÁk\;¦áYŒGŽ)¹ä¢þ~H.*¹ääq÷m ¹xíâ9¢ïÛÀvÕIšG.¸vaJê0ð›Å¨ßâ‘‹×.^»o¿µc:ï[¼vÛ1m7ð[»xí¾ÅûÖ.Þ·vò˜’ûï[¼oQ¿Å#×.Þ·ßâ‘Øn ¹xíâ}cú-^;¦ó¾Åûï[¼oÛE÷-Þ·Šœù1ÓîÛ@u‡øýûâÃ&B|‘ßÄýûL!„ü€…¼/„ûL!…ü4áB0áBøÀ„Q3¾‰Gø¨oâ¡E&[tñEc”qFk´1%~:…<ˆœv¾iç›v¢ú†)YþpIþ&›dÒ'£ á)«´òJ,³ÔrK.»ôòK0ÃsÌ/S!~¾!gIšf8½ñ¦rÊi'G,úf r˜j'žvÈaJ€xæQ¤~nT”F~bùGræáG§x€²tžxÈq¤ág oâ±€Œoâiçrú†œkHøæ¦È‰§T\ xЇœÈ‰ç®Ú!g ojç›,º†„rÈ蛨¾aêrâiGžÈ‰§xÔ‰ÇZâù&žv¾i‡œxi'*3tR„„ojç›v¾ˆœyډ盾aê›vȨrâiGžoâù&žoÚ¨ræùfþ o˜úÆ¢Ú‰ç›x¶ú&rú&žv¢Úꛨ䉧oz(žoÈû&žvâù&râ±è›Ô¨ExÁÃŒÚQ'žCþágIÌ/>ðoÀX…–ü€…Lø ¿ûBøÀ„RÁ„4áƒL¡E”ÁÃŒ¨¾á'žo♇œV|p 7üp˜øé@eü žoæ!‡©vâù&žvâiç›xZá'…RÆ™aœÆ™aœÆ™aœ&Sø „`ø¨Â†* &…R!…Rø …Rø …Rø …Rø …Rø …Rø …Rø …Rø …Røþ …Rø …Rø …Rø …Rø …Rø …Rø …Rø …¤à)ø@ >‚¤à)ø@ >‚¤à)ø@ >‚¤à)ø@ >‚¤à)ø@ >‚¤à)ø@ >‚¤à)ø@ >‚¤à)ø@ >‚¤à)ø@ >‚¤à)ø@ >‚¤à)ø@ >‚¤à)ø@ >‚¤à)ø@ >‚¤à)ø@ >‚¤à)ø@ >‚¤à)ø@ >‚¤à)ø@ >‚¤à)ø@ >‚¤à)ø@ >‚¤à)ø@ þ>‚¤à)ø@ >‚¤à)ø@ >‚¤à)ø@ >‚¤à)ø@ >‚¤à)ø@ î“‚ ˆÿH;¡ gL#pòF9Ê¡rÄã’ˆ9âñx̃ñøF;âAŽx|#ß@<î!‰ Nž+‰Å?˜Âxcäˆ 9âAŽl‚ñ ‡#þñ u¨Ã B6ÌŠ.¨ƒíH;¾oCêhG<¾ÑŽx#Ù0²ñ‡DåñøF<¾Ñއ#äøF<¾oC™Õ7€1rÄcVñèé7âñr0%¦±È¬âñ GÈ¢ñøFTÔþqˆx|#àhGæqEt íˆ9˜ÒŽ´#߈‡EâÑŽx|ƒ)ßhÇ@ÚñxÌãñhG<ÚoçùÆ@È!văíˆÇ7äAžx´ƒ)߈ǬäÁ”v|£߈Ç7 ;‹|£QiGTÈ1o¨c ßè€#”3|ƒñøF<’˜àþЖô|`@Кô|À?0ÁtÜ'&ø@R‚8Bx0Ã7Úñð#ß` -Vr^ô¦W½ëeo{Ýû^øÆW¾ó¥o}ÝË 8Bx@T¾v|#߈‡:Ú1v´âJ3ñþ`GØüA~B`‚ bÁ?Ìá > "&X’ Ètb§XÅ+fq‹],% è>!ˆÅ?,BŽM(ÃÎP†7È‘ 9©ãñP‡$˜ò´#䈊:"€xÌCà‡}­|e•ð#üPG<ÔÁxcíøF;â!rÐc ßpSñr|CÀ8âÑuXä먠p|ƒxÀH1«´ãÆÀ¬ÈÑ  @Æ7 1€4LàêàÆ à€2 ¡ë p|ƒ(4)¾‘† 7PÇ7ÈQŽoX$íHè7,òvÄòÈ7âñþvÄ£’P9æ13ÄcŠØ@<¾1oÄ£߈G;È1v#߈Ç7âÑŽo „ñøSÔ1ră±È7˜ÒŽo äùS˜2«x´ãñ G<¾1o0eVñ Ç<˜ÒŽoÄãíˆÇ7Úñ r0åñøF;ÈoX$í`Ê7Ú1(bx0ƒ¿¿! ”ðãüH ?lΔÜ%6ÿ?úÑ”ðãüH ?þÁ”Øü7ÿ?þaó(‚~Ã<È1oü£ñ°HÐ}¤@)P ”¥@)P ”¥@)P ”¥@)P ”¥@)P ”¥@)P ”¥@)P ”¥@)P ”¥@)P ”¥@)P ”¥@)P ”IIIIIIIIIIIIIIIû0ȉ…ˆrˆG˜e ‡i ‡mxˆo(uˆrþp„o`Šo¦àŠø†ˆ‡{„0;"T¯Xø‡x ‡vø‡oh‡x ‡x ‡oP‡xørøuØ„oˆ‡o„H¨r0‡PB†Y)uÀnˆP`€Y!‡„ú†˜2ø†„âMø†g˜(`€!ðs(‡(p0€rð†(l0‡Àu†øu(‡nVø†irH(rP‡o°¦rP‡oPkR‡rhG …oh‡xh‡˜•C` ph‡0ˆ‡{… ‡h‡xø†ø¦ ¦hkÆohrØ ¦h‡oh‡h‡oˆrrˆ‡þo`Šoˆ‡oP¦h‡h‡xh‡xø†vˆo`Švˆ‹ø¦h‡ø†y ‡h‡xø†xø†fl‡xø†xø‹ˆ‡vˆ‡oèEP<0ƒvø†P‡CP‰›c/~@ ~H ›C ~@ ›û~@ ~@ ~H ~P ~èEP?0ƒfäu°ˆo Z(BœÌIÜIžä‡PeÀˆ‡o ‡xø†h‡oˆ‡o k…0gp„Ø€ H ¬äzà‡ð`àð‡`àƒ*„`èàƒ`Èh~0%10<00É11h~üüþüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüø¸Hˆ~` Gر›†mð†røkGh‡ou˜•x ‡x°ˆoh‡€x˜Eè~àI"ä‡Xà‡x ‡xø‡¢úu ‡oH¨„úGþø†yhGøk’b¨`oà†Ð…YÙð`TLÒr c€oð†‡ˆ‡‡0ø`pȆrxÐsð†]€ràÐoø†]P€r ‡rð†g6Èr(rPR%}kú†xpZˆvø;u ‡h3Iè€x°ˆø†h‡o`Šoˆ‡vø†xø†xø‹ø†f$‡xh‡o°ˆx ‡xør˜¦hû†ø†yh‡xø†xh‡oˆ‡vø¦ ‡xh‡ø†xh‡oˆ‡vˆrø†xh‡ohÆxh‡oð·vø†vø†xø†xh‡ ‡þx ¦èIP?0ƒhuˆ‡C@ ~P uåum×”à‡”àwW~@ ~èI<0ƒoh‡oˆ‡oø‡x ¦ …y=X„MX…]X†mX‡}XˆX‰X„å‡^ð`ŠvˆvhÆvpQZàlp„ÀÊ ø•ýzøø€ø€Ap>ppp>p…A0ûhø€ü0ø00ûHè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ùÿø`’Xø‡vˆ‡opg˜eȆmØo oˆrhrØrˆo`Švˆ‡vˆrˆ‡vˆ‡o€xþ¸IèŠaN‰Xø‡h‡PRr°¦Yñr(Gˆ‹p„ð†o(‡Y‡ix†Po˜€ (4ø`o(rø9)oØc€m o¸ @€`€ð`€l(r(‡‘†ð`€ x€ xð`sxo¸ @ H9)o(rð†¥²¦‡(‡op„Vh‡oˆvø†xøI`Šoh<‡y… ‡vˆ‡oh‡xh‡x ‡xh‡xh‡ ‡xø†xø†xh‡h‡xø†øy` rhF‹ø†x ‡„Šrˆ‡oh‡xh‡x ‡xø†þø¦ø†°ˆx ‡ ‡ #‡xø†xø†xh‡x ‡ø†vˆr`Švrˆ‡v`Šoˆ‡oèEà<0ƒo ‡xø†x8„ža~ØEP<0ƒP‡à¦hr …ƒ¾hŒÎhÞhŽFX~èGP<€xhrˆ‡oˆ‡oˆ‡oˆ‹ˆrZøøPG@ •ÅÊàzø‡øø€*àW؃ØWà†*0Hè+~¨ø€ø‡h°mx‡h0‚û0e¸‡x踸01ûH¸01ûHþ¸01ûH¸01ûH¸01ûH¸01ûH¸01ûH¸01ûH¸01ûH¸01ûH¸01ûH¸01ûH¸01ûH¸01ûH¸010 Xà‡oˆ‡vpg˜†iPo¨à‡(‡oGˆ‡v` ‹ø†xh‡ ¦€x˜Eè~èhO ~þˆ~ø†xh‡r9Ù—GhrˆGø‡'o ‡lð˜†n](o‡iø`·&9ùr0Èoxh„lðc€o† 9y†Ð…rðO€mèH9‡lø`(€mð†o“m0‡18€rð†‡ðr¨ñ'‡rˆG…xø†xh‡xh‡xPI(r˜‡xP3¸‡y„ ¦ØŠ ‡xhyø†flrˆ‡oˆ‡oˆ‡o`Šo°ˆxhyø†xhrˆorhÆv û†ø†xø†xø†x ‡xø†x°ˆh‡xh‡xøþû†yø†xø†fü†ø†x ¦h‡xh‡ouˆ p„aÀƒ0ð·o„OØ~x”èI?0ƒoh‡ø~h‡oh‡ …wx‚/xƒ—á PZðø†h‡xh‡xø†xh‡x ‡vˆvh…øgp”è•ý~øzø‡üø°±¬s8™‡*KøHø‡\H †\Hè‡h~È…ø=X‡ü †\` †~ðüªÏ¹z­­­­­­­­­­­­­­­­þ­­­­­­­­­­0Èȉ…ˆvep†mðe O¨xøGˆrˆrøy` r°ˆxø†xø†ˆ‡{„8ø¦…ˆ‡oh‡¨`á¯`rØr¨`rprIørð†m†(@…lx†P€mȆPYØZ „mxè…áˆiPc€mðb]Øg˜˜`€m“m؆gð€Ø€È6B6o´m{@×6sÏ eséÀ¶i×zd›v­Ç¶i×zLÛfŽ9G´ÚÅ‹Gî[;uê¥þŒ÷-žzâDuˆ÷-Þ·xäÚ÷í[Ìvñ¾Å‹7ï[¼vIã}S¯¼vñÈ©‹×.)¹vOç}‹÷­]!˜þÀÏ &¤„>`˜¡†rØ¡‡‚¢ˆ#’X¢‰'¢˜¢Š*¦ð xgÂ)|B,ÿ|CN<Ž8£Ì4Ûlãß”óMR’ÄÓÎSß´óMRä$¥NRÄ3"ðsœ–[þÃO,ÿÄCN<ül3 ÛL“æ4@N“Í&í|ÓŽ#ÿlCN6ÏÔÀ@p  9ʘS@p„3Û$Œ9Ù#@6Þl“ä=1@6À °7ÛdC 8PÆÞ|óL ÁÓl“0BŒ @A"Ùl³ ÙL³‹Ùd³‹ÄN³M<Ž´ÒÎ7óÄCÎ<äÄ#I9ß`‚¤àÞñN,ø‘ulBÎÈÆ4¦Ao”£ähÇ7ÚáˆoEoyŠ:’òÄã’èÀÜZèÂXüã)ÿ¨ kXCI$E’ø ‘ixƒXʘÆ6¦±ikä !9¦AŽilcÎ ‡2€D,:ƒÙ˜9”A McÙð„ˆ¥ rþxcÙ¨`6¦¤i«‚Äš±*H,fcÙR6â!‰ac„ß8ÄSHbrÌCxK;¾ñu<¥OùF;âAŽx#íˆIÚ‘”văñ GR¾Ñޤ|#íHÊ7Úá–oÄãñhGRÈvP< ™À;(†LàC&ðÎЇ!xçÅà ¼óâaÈÞù@ñ0dï| x2w>P< ™À;(†LàC&ðÎЇ!xçÅà ¼óâaÈÞù@ñ0dï| x2w>P< ™Àþ;(†LàC&ðÎЇ!xçÅà ¼óâeÈ;0wL𤠱øG;ÈG8CÓÈÆ4H² ª(ŽˆG;¾o´ãíøF<¾o´#)ˆÇ<Ñ~X4Ä"þ?bÁo…Óp‹Å¡ gLƒÅt†$ÔAŽxH‚@Ú†:€ ’ +¸ ncÛÈÆ4¶aC MHÜÆ4¶1mLƒ¨˜Æ30pƒil£†@šÆ6*¸ãn£‚Û á6h¸ )ñ8-âñ¤|#)í„:Úñ3Üã¢Ø@<ÚñvcñJ<Èv#þßxJ;äÑŽ§|ã)äÊ7ÜÒŽ¤|#)߈‡:ÚrÄãÀü†[¾ÑŽoÄCßHJ;äñx|#íøFR¾v|#íøF<¾uã)òøF<¾o<…ñ ÇS: ˆaàÁ nù†$Øémsàøö8Ý`zØ#Ý/ˆA^°‚$!PÄ0ü`†¤|#ßøG;âñyCä8Á nðƒ#<á _8Ãnp~t@ÊÀƒ’ÒŽ¤´#ßá7â‹| p†#¼=~„à „+þÑ~Àæ®DŒ×‚ä¢xÔÀÅZð´à ZЄ€¹þ0A ^Ñ`¨x †Š—¡`¨x †Š—¡`¨x †Š—¡`¨x †Š—¡`¨x †Š—¡`¨x †Š—¡`¨x †Š—¡`¨x †Š—¡`¨x †Š—¡`¨x †Š—¡`¨x †Š—¡`¨x †Š—¡`¨x †Š—¡`¨x †Š—¡`ÈxH 0”‚,0±àGR¾ágLC4ô9Êá’xcßH 9Þò§´#ß@<î!‰8<ýê§Å?â”´‚­hE,hA‹Vð‚ó…#’¢GüC‘ÑPþ68ƒ8à"`V1D Ì‚J :C<8-|CR|C<´C<|Ã!¨C;¨C<ƒ$…$t@<ÃS|CRÌ9ÄC;¼Å7´Ã7Ä9´C<|ÑCR|C<|C;ÄÃ7$E;ÄÃ7¸Å7ÄC;|C<|C;ÄÃ7$Å7ÄÃ7˜°K×ćB„°û!EбøÅ3ìÈÙ4e䦑ÛVÎ[9uíÚIŠ×.9Ãñ¾‘‹×.Þ·v†Ä›§¨¿«Y·vývlÙ³i·æ‹Ÿar’èÍ3¬îÛ7oä¦w&)¹ÍŽ69rþþúóMŽ9Rº"èŠ)ÂþüsIÐ%9—ô|Ó&G’ §ÿNK™áo” “‹ç(Þ·xäæ™¡wO‘6Û¬u¾‰§þ‰‡²xÚÙ¬xÚù¦þ‰ç›5Tç›x¾™'žo6kg3u¾ig3râiǰoÚù&žv⡬oâù&žoâ¡ì›xșǰvȉGu¾‰ç›x¾‰ç›ɉ‡œÍ:D<Ì0¬uâ9¤¶Ùèò$š¨†Ì2É4fŽÕ:D<Ì0ì›x¾ùçÃæ!G0õÜ“Ï>ýüÐ@Ôµ$ÆâùFÃx(‹‡uÚù&Zþ1áƒ>Háƒ>Háþƒè2!BH!„úú …è Á„LøÀ.ºBH®B`.>0áƒR°Ë„ú Á„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LþÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„LÁ„B0!>èË„¾ìÊÕ„ccá§xÈqÄg¦q†œiÈñ¦œàÈiÇ‘xȉgr¾Ùì›x¾‰§x¾ ž{$逶î½ÿ|ØbùçᇞxÚ‰Gr¼Ùþi†q¤þiÇ™XZ¡¥•XZù€­ -bÑ Z´‚àiÑŠXÄ¢´h-þ‹VÄ¢±hE,dA‹VÄb€ ü_,þ7ÀVÄ¢´ -Z Ò¢´þhE,hñ¿X ΈÇ7ÚarăñPÇ!¾a˜yà ó˜‡$:ð uÄãñøÆ€Úol†ßhG<¾A™}£úF<¾AÊ|c@ߨŒ:âAŽx|£›ùeâñ yPf@äG;âAŽÍ´Ã0äP;âñ ôc3íˆÇ7âñx´#ßÐ7âñ (Bx0Ã7ÈoÄã®å(IYJ~üƒHhÐV¾r5üè€"”3F†ùG<¾±Z”˜Áæ0‰YLc™ÉTæ2‘É(‚x@<Úñv|#ß G<Ú1 rÄCÿA ŽUξ˜ t þÁBð|À!ø€]>‚„À}!V_ˆ»|ÀA B+ÐÅA®j†æÊ¥‹ $úTÔ5AEMPQTÔ5AEMPQTÔ5AEMPQTÔ5AEMPQTÔ5AEMPQTÔ5AEMPQ¤ W!H]L+b… W!ˆ?¾aIô®8Û˜9ÈQu´#ßpD<Ú±rl¦ñh96#€xÌCà3éZ×ð#ÿø†a$AyÄCì`§¡ g8âí0 9ôFŃñhÇc5DŽy†RÇf¾oăñøFþ<ÚñXu††!e¿±r̃ñøÆfÔAŽx¨c@”ÙL; ãˆxPÆ0f˜Ç=Ñx´#ߘÇ7⡎oÄãñhÇ76CŽ}£ßÐ7âÑŽx|Ã0äˆ9æÑŽx|Ã0ähÇ7âÑŽÍ#ß0 9âÑÃ|ƒñøF<Úu|c3fü†aÚv|ƒ†iÇ7âñx|CCí ‡aÚoF†é€#†3 è’°ë0ùQ⯆«)ñ?6àˆaø! ßP‡a¾ñoÄ£߈G,FÜcÿÈAr07 ˆaøíˆÇ<Èvl†߈Ç7ÚrÄ‚Ã,ñ?þLÜåÿÃÄýf?VÃðãüø‡‰ÿQâðã^.ñ?äÌÔùuþGÿQçÔùuþGÿQçÔùuþGÿQçÔùuþGÿQçÔùuþGÿQçÔùuþGÿQçÔùuþG—ÿa☸5&þ-þvÄÃÊpF6¦± olÃä(G;¾IăßÐ7âAŽx#߈Ç7{H¢CÖ¶khñÃ|Cè3 ~Óp†$âaÆy|C”1L‘ŠÔŽÍ#ß 7eèÝÃP†ñ w‘âAŽrÄC”%‡:ÚAïvă”1L; þCu´Cñø†:(;r¨CCßPG<¾r´ãíˆGp$r´#ä0Ã=Ä!Š#í9âÑŽx̃ñøÆ€¾ÑŽõñhÇ7âñ ã†iÇfÚo¦"G;¾y#ß0L;âñ }ƒ2†ùF<¾ÑŽxÃ0߈Ç7 3o´Ã0í˜Ç7 óx|c3íøF<¾o¨Ã0ßè€"”3´ã†QÇ!ZSyË_ó•çGæ+Ï(‚~0C<¾ÑÃü£†á*-8ßz׿ö±—ýìi_{Ûß÷–ï€"”|CCí Ç<K‹ðãüø?þÁþðãü` ?2ÏÖ”x5%fM‰ÿaâðƒ5ü` ?\ÏËóãòü¸·Mcâ¡âAÐG‰¾A¸þ ~¦Á†Á(ëâáâáæ(#Ú¡QÈ!È!¾Á0¾!¾!(ƒ²ÚÁ0ÚaÈa3Èáâ⡾a3澡 ãâ6£âÁŒ £ ãÚ!¾!ÈAâáâáâââaâá$a@ÈÁ C:àæâa¾a¾²â ãÚáâá6ƒâáä⾡â¡Ô26ãÚáÚÁ0¾Á0¾!¾!ÈÁ0Èa3Ú!ÚÁ0Ú!¾!¾a3Ú!¾¡âäâ6ƒâ¡âáâ¡æâa¾!¾¡ÁþüÀ Úá CÁwk”:@”Ì âA ƒ¾!ÚÁ0haÙ‘™HùaAð@¾a3¾!¾Á0¾a¾!¾!Èh””Aê¬ÄèáFÁôFKì\aj”àGÙaþàFÙa Y˜‡™˜Û”b(#î!È!Ô¡¼!¶aœ¡¾!ÚáÈaÈ!ÚÁ0Èa3 æA:€ŠHù!þâA$æÁ0È!Ì«¶”Á$áâáâ¡6ãæá4äÈ!ÌèÈ!Èa ƒ26£ââáþÚáâáÚáâá(c3¾¡¤ ƒ2¾a@(#¾Á0ÚáÈ!È!Úá⡾a3¾a@Ú!¾!Úá±ÔA‚c3Â@‰D¡È4¤¾2¾!¾!ÚÁ0¾a3¾!¾!Èa@¾2„âââáâᤠã ãæa3¾Á0ÚáâáÈ!(C(Ã0(¾Á0ÚÁ0Ì(Ú!ÌÈ0ÈÁ0¾4D £ðÀ £Ô!NtAüÀ ÚA ãþ!¾!¾!H¶g›¶kÛ¶o·s[·w›·{Û·¸ƒ[¸‡{¶iþ:@xÁ ¾!¾!¾Á0Úa3Úa3h¡FÁt”h´Ä‚ü¡‚aª€‚¡ð‚VÀz”òøÁàFÝaB›¿ûÛ¿ÿÀ<þ!Èá$áèáæ¡‚£È!²adAÈá±Ì¨âáâá îA:€¸GœÄk›ø!¾¡Aèa⡚Ҷ!UÁâ¡ ƒÚáÚa@Úá(Ã0(ã±Ì(¾¡¾!Ú!¾aÈ!¾a3Ú!Ú!¾!¾aÈ¡âáâ2¾¡ ãÚ!¾¡â¡ £4¤þ ã ãâá ãÚ!È¡ ƒ2¾!¾¡¾¡¾á £¾!Ì îA:`¾!¾!¾a3ÚÁ0¾Á0È!¾Á0¾a@ÚÁ0¾!¾!(#¾²æá ãâáâáÚÁ0ÚÁ0¾!¾a3ÈACÈáÔ2âáÌÈ0¾2¾AÚ!¾ÁŒâ(£QÚ!¾A ã:À”ÌàÈ!¾!!À}”:Àx ¾¡ ãâáæ«TYÞçÞëÝÞïßó]ß÷ßûÝßë½ðâá6£¾âáâÁŒ¾!b¡F‡Át”j”þÁüÁøÀÚÁø üÁ¡VÃÀGKl5Ü¡j”þÁ ÜkÞæoçœb £á”h3È¡Èa”ahÁ⡾Á0¾!Úâ C Câa¡þÝë¿ÞÄþ ã6AÎ~qW·Ôá4äâáÈaÈÁ0(ƒâá ƒ2¾â¡¾a3¾!Ú¡Q¾!È!Úáâ¡åâæëÈ!¾6ãÚ6ã ãâ¡6£ £¾ £åÔæáæ! âa$¡â¡âáâáÚáÈþa3Úá6£ ãâá⡾a@Ú!äáâ2âáââá £ £â¡ââáâá £â¡¾a3¾!Úáæa3Èa3(CÚ!Èa3¾Á0È!È â ”÷-Þ·xí¾Åû&ð[; ÃcF Ào’þiÜȱ£Ç Czì h3íⵋ÷í_;‹ñÚÉœI³¦Í›8sêÜɳ§ÏŸ@ƒ J´fGÃüh'ðLßÚ œGNGgŽBÒãȯJ0|\í9±ÇÁªðÓÈ®¦tðûÇnÀFwþ±ðÝ~ÿì­@@Бˆ+^̸±þãÇ#KžLùc,~íâµsôï½xêB{óFnÛ´X›¾YüÖNÞSu¿ˆwOR™¸sëÞÍ»·ïßÀ}ÇûÖ.^èvßâ‘S\<™ßÚÁüxíž~‹G.Þ7ßÚÁ$'ð›@™ñ¾ÉŒ÷ &9‹ßÚ}‹÷­ÝÓoí¾µû&æ¼oí|cQ;ß´#P;}£N<äÄó Lß´Ï7ñÏ7Žùx0Àžä–kî¹è¦«îºäò ?ß$ÿÌ3O<ä¨SŽ7Ûl33²8òM<í¤Î7í|ÓÎ7ñ|ÓŽ@Ä#Ž(ăÛÅg¬ñÆwì1ÇêX¤N;µ#9ñÓ7ñ|#P;þ©ÓŽ@ßÄÓÎS2 ôM<í<õM<äÄó@äXôL}Ó7óÏ7ñ|ó”@äÄÓÎ7ñ´S;ß3O<í|CN<ßXôM<íÄÓN<í|#P;ñ|:ñ|#É7í¨óMü€CpVP‹V€ÿ`}° }ð Ê€fÐê ßðß í ÆÐ ñ"VÖXß €Só` Pä° M ä bß ßÀ0í€Sß pòþ8ôXöxø˜•EñÐÑŠ  ~äí`ß`óð 8E á Žô°Ü |Ðþ |Pƒ ¼ÂÁ°ìèðüp Àõ ü éPüÀðîPÿ€ÿÐã0w÷“@”B9” ü íàÿ@÷ êPäÐ/Óà ´àñð 9õ ñð ñÐñð ñð pâ @ú˜–j)ä íßíßß í`ß ƒßä`ä€Sí ß ƒßßß`ß ƒß óð ñÐñÐñ íð 2˜Sþóð ñ ñð A1߀Sä íäð ñ@ñ ƒñ@ñð ñð íä äßíßßßíàäßÐñ`÷ ’Ðñð ñð Ññð ñð íßÐñÐÑÑñ ñ@2(ßäßß í 2íð í0߀Sä b"í2hßÐñð ñð ñð ñ ñð ñÐó@ñÐß`ß`íð 2ø íó@í ñ  ÎàfÐß êpÿäÃ(€%€%°£(@ÿЫÐþüÐŽ  xñð í ÿíð a à4Ðê|ßÜ0 ß 0  ß ß×PßÜ0 ñ ð ñ ƒñ`  êð Æ0í Ðß×Pí Ð0ñð á°à€0ß×Ðàßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßþßßßßßßßßßßßßßßßßßßßßßßßßßßí`ò@ñЇÀ x ííð ÑñÐñð ñ ñ ¡ Žü@Á-ü0® Ü‚øÀ-®0ü°ì<€ùà9  °ÿ1PüÀðìPýð#`úà10BÙ¶nû¶p·ü ü íŽÀó@ñ ƒå@Þ@Ê0 ²àñ íSä ê @÷ Ðòð ñð þñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñÐñÐßßßí`ßäß äíß0íííð ñð ñ@AÑñð óß ä íð Ñää߀Säßßß íð ñÐñÐÑñÐñ ñð ñ ñð óSíð ñ ó@!ƒñ ä€Síßíàñ ñ`þôp¢°ó ßí ß ß 2ø ñ@ñÐä`í äßí`ß0ßíð ñ@ñð ä08%ƒß2hßßíð ñЕÕñ 9Õ8Eß íð ñÐñ@AñÐñ í  Ê€f í ñpãÓòP6PÊU`UÊDÖÝЊ@ ~`ííßÀí íð ÐÜ`ß ` ÝÐ í`3ðñ 0ê0MPñ ð ñÐÐPÑ ½Ðæ0Ð0ñ ƒ2h þí`M€í  ß ÐÐ0ê ð í0(æí° ß°– ÝÐýÐñ 2(&ñ0äЊ0 ~ íäíßßí ß0ä ÿÐÒÿà Ž@2=Ó4íÒ.̓ÀÁ`þ`®ÀƒÀÿÀ-í€ 0:À-í °$°ðî0ÿÀÐÒö°Ð[06Öb=Öd]Öf}ÖhÖj½ÖlÝÖnýÖp×i ÿ@ñ@Žðô0ñ åà ÙÐ/Ó@ ’ð íð ó@ßßíí ñ þó @ê–œÝÙ8õ íäí ó@ñð í íßß`äÐAßß ßíí ß ñ ñ ñ0ääßÐ8Õñð ñð 8ÕñÐñð í`ääð ñ@ßÐñð óð ñ ñÐñÐñ íð Ö(ƒñð •õ íí0äð ’Ð8eñ0ŠÐñÐAßÐñ ñ í í€SßÐß ƒÑÎ8õ Ñ8%ƒßßÐAñð ñ@óð AAßÐßßÐñð ñ 2øþ ñð íð !ƒA9õ 2ø ííßЇ  x`ß@ñð ñpr . cÍ-ÿÀ6ð|ðfþ|`ÝЫРÊàfð ä`üð ñÐñÐÆê ‹PX ð ñ ßß` ð Ð àÐñ Ð0ñ ×Pßêð í@Æ`ß  ƒòð ñ` €h  ò Ðñð ×Pí Ð ñÀ ê» íí`ßßßßßßßßßßßßßßßþßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß bß0ñЊ  x ß`ßíßßÐ8E 6 D»õD;ÖÜ ƒP6Pƒ ü ÖÜÒÒDûÜÖDû\Ïr=÷t_÷v÷xŸ÷z/Öü ÿ`ŽÀôòä äà Ûx­à9Õþñð ñð ñ í ó  ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß bíð 8Eñ ƒ8õ ñ@ó2ˆSß íßß`b"ä ß b2(ß`ñ-Þ·xßâ‘‹×.ÞÂo >Œ×Îa;‡äâµûÖÎá·xßÚ}‹÷-Þ·xíäµû¶°Ý·v ¿Åk·°¤rßâ}‹†Þ=Qâ}‹÷m^¶û6ò5¹œß&~Ëù-¹xä¾y%¯ÝÇoí>¶‹×îðÄoñ¾mP¤ ™oäâ}‹wèöìÚ·sïîý{v~ÿøuP¤ ™vñÔþMüïÛGY´dÉ¢eŸV,û±ZÅ¢Õ*–,±ÜG-­ÈBK,­´r-²´‹,öÑG_,²Ä"K,²Ð" -²ÐÒJ,±( -¼ÐG‹,´Èr_+±ÈË„±ÈBË„´´B‹,´´B‹,´´B‹,´´B‹,´´B‹,´´B‹,´´B‹,´´B‹,´´B‹,´´B‹,´´B‹,´´B‹,´´B‹,´´B‹,´´B‹,´´B‹,´´B‹,´´B‹,´´B‹,´´B‹,´´B‹,´´B‹,´´B‹,´´B‹,´´B‹,´´B‹,´´B‹,´´BË„ôÑB_ˆ±Ü7!/H LôZ<ä|ÔÎ7þ‘C-üÐCÏ<ôÌCÏ<ôÌCÏ<ôÌCÏ<ôÌCÏ<ôÌCÏ<ôÌCÏ<ôÌCÏ<ôÌó-=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3þ=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐ3=óÐsO,ÿO;ŽüCÏ·ñ¨SŽ7Þl33²8òMNÚqr|$ô¸‡(6 ^Т´-ZA YТ´-ZA YТ´-ZA YТ´-ZA YТ´-ZA YТ´-ZA YТ´-ZA YТ´(þ}h! ñãñ ‡#$áGH¢ŠŽÄQEGã#ßðÊ7Úñ|#߈ÇHâñx|c"ä˜Ç7&BŽ#ßøÈ7Úñœ´#ä˜G<Úñx´##ùÆD¾v|£ß@N<È1‘vÄ£߈Ç7&BŽy|c9iG<¾ñrÄCähÇ7ve†yˆCG;¾oŒ$í G<¾oÄãñøFN¾ñ‘v#ߘÇDÈ‘“vÄ£ÈùÆkÚñ¼†óhÇ7Úñ‰|#߈Ç7&òœc"#ùÈ7âÑŽ‰Èãñ G<Ú1‘oÄãñøÆDÔ1‘8bx0CNþ¾! ð´ Õ?: eàÁ íPÇD¾ñoLäí ?²ÃìðƒÿàÇ?ø~üƒØávø‘~d‡ÿàvø~h‡ÿàÇ?øñ~|§£ÙáÇ?ø~`‡ÿàGvøñ~l‡ÙáGvø‘~d‡ÙáGvø‘~d‡ÙáGvø‘~d‡ÙáGvø‘~d‡ÙáGvø‘~d‡ÙáGvø‘~d‡ÙáGvø‘~x§£ý?´ÓG ÃøÆHâAŽœ|c"íø-þ1{ÐCÎPhZe8c´ô¸=îA{ˆ#ƒ¨‚ ªÀ‡aÐãô¸=îþA{Ðãô¸=îA{Ðãô¸=îA{Ðãô¸=îA{Ðãô¸=îA{Ðãô¸=îA{Ðãô¸=îA{Ðãô¸=îA{Ðãô¸=îA{Ðãô¸=îA{Ðãô¸=îA{Ðãô¸=îA{Ðãô¸=îA{Ðãô¸=îA{Ðãô¸=îA{Ðãô¸=îA{Ðãô¸=îA{Ðãô¸=îA{Ðãô¸=îA{Ðãô¸=îA{Ðãô¸=îA{Ðãô¸=îA{Ðãô¸=îA{Ðãô¸=îAþ{Ðãô¸=îA{Ðãô¸=îA{Ðãô¸=îA{Ðãô¸=îA{Ðãô¸=îA{Ðãô¸=îA{Ðãô¸=îA{Ðãô¸=îA{Ðãô¸=îA{Ðãô¸=îñ+z´‚ñ G;$Á_ŃñØ9²1iÐÂùF4¿oŒ$߈Ç7y(¢ÚáGvø‘~d‡ÙáGvø‘~d‡ÙáGvø‘~d‡ÙáGvø‘~p‡Øé(-þvÄÃßjG<ÈQŽoäÓp†2$vÄãiÇ7âñœ´c"íˆÇ7âAŽþv@2íˆÇ7>ÒŽx|#ßÈÉ7âñŒd"ßhG<Èñ‘oÄ£ñ˜9&òx|#߈G;âÑŽo´#äˆG;â1’œ|#ßhGN¾ÑŽx|ãó Ç<â13Üc¢èÀGÚ‘ăóøF<Ú1oÌãñhÇ7âñx|£iÇD¾1‘o´ãòI<¾r´ãñøFô·Ã 8BxC<¾Ñމüc$!-þÁïþ¿üÞ1lvøñ~d‡Øáw:ú~üðæ¿?þó¯ÿýóÿ†Å??l€"(ƒÀDÈÃk|C;ÄÃ7ÄC;|C<|C<ÄÂ?Ìï(ÃmBu #ü÷Ìð  ¸B;ðC<¸ =Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ìþ=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=Ì=ÌðþÑC,ðCtÔ?tT?¸ d)™–©™žé°Aà)=@Ã̛ƩœÎ)Ö©Þ)žæ©žî)ž¶?´C<¨ƒ#ð=ÌC;ă:”ƒ7lþ9lÃ4´‚$LÄ7ÄîÈÃkL„:LÄ7@<̃"t€†ª¨rG,üÃ7ÄC;8=Ü9ÄC;”ƒ9C6lÃ48ƒ38B<ŒDNC<|C<|C<´C<|ÃH|C;|C<|Ã<|Ã<ÃD´ÃG´ÃD|C<|C.?t€#(ÀDLÄ7´Ã7ÄÃ7lî7l.-üÃ=üŠ38ŒÒÃ?ää0ð?øC0 BðA0ôƒ?ðA0ÜÃ<ðiœBÃÐÃ5lÀ=”é:„ï&¯ò./ó6¯óò©8èÃ= [,ðC;ÄC;8?ÐÃ<0€ðC(À‡?b€~°ckä‡=°ÁuÄ üpÇþÁ¸£üpÇøÁެ-ü`ÇÖø~ØüXG BÀvà üø?d€~äÃø?d€|ø#9à;àG³¬ÑèÅ?ôÑ }ðC(À‡?b€~þ¸cÿà‡ P€ÄüøÇP€~Ü‚ìÀÿÁ þˆþÁ ùðÀþÁ}pP*øÁD}2‘P„2ðuÄ£ßhÇ7Úñx|#íøF<¾XðcQ†#îÆÌã™Ç=ª ðÁ{8Á\Á£ âø= | dHÆ=æñ ÐÈ= Q€{@Cò¸G< Qz¬ƒÉ˜Ç=1€x@c÷ˆ;Ž{Ðà4Ž{Ü à™8þ!ŽÐCÿÇ?t"ŽˆãôÇ?Äñˆãâø=ÄñqüþC'âø‡8þAqüCÿЉ8þ!ŽÐCÿÇ?t"ŽˆãôÇ?Äñˆãâø=ÄñqüC'âø‡8þAqüCÿЉ8þ!ŽÐCÿÇ?t"ŽˆãôÇ?Äñˆãâø=ÄñqüC'âø‡8þAqüCÿЉ8þ!ŽÐCÿÇ?t"ŽˆãôÇ?Äñˆãâø=ÄñqüC'âø‡8þAqüCÿØ™8þžÜc ±àÇ Áz¤,ê(‡7¼A°ÅÂñ G<ÚñxŒ˜Ä#VLj0{(¢üØç‹aÜ7~Ä‚߈‡:$AyÄCþ‰€6gHâíp-Ìd<$™ÉMvr’ñðd)KSn2¤Œ3àÁÊMƃ”ñðäx´cÄíˆ9æÑG”Xf˜Ç=±yƒÄßq;âÑrÄã#n‰ÉAxP%߈Ç7Hüy˜#þF;¾AŽx´Cß19âñ rŒ˜ñøÆˆ¿1x|#Tñ7âAŽx´ƒñøF<¾1âõñ Š<¨2âvă$n‰Ûñ£#î€"†3”ø’ˆñ?ðìôa}èÆ?: ˆaøÁ íˆG;âñÄãñ˜9dñ~!$`ƒ<øq–}þÿà2À}üøÇ8ðw à,k4Ë8ðv à,î(À?ØQ€°£gáÇYÜQ´¬Ñ,ã8À?Ü!|˜e@Ç‘1~ìèàÇ?Æ¡€¸£wËG!³ìèàÇ?Æ¡€°cÿØÐÁŒCÿ°Ða~üÃ8Ë>€~üc èÇ>€³ £fé?þ‘:€ :öÛͲGð J<æAŽy£Ääñ<È!‹èÄŽÈÛ=þ1{Ìc®ðG0ªà s¸‚ÁðG01{@c‰G:0}ô€Æ2w €ÐþÀ<âÁh €Ð=îh @Ð À< Ðc÷€Æèá $é€8zòÌã==þ¡“yü£'â Ç?t2ôDôø‡NæñžˆƒÿÐÉ<þÑqÐã:™Ç?z"züC'óøGOÄþA'æázBèátbþ¡'ÄþA'æázBèátbþ¡'ÄþA'æázBèátbþ¡'ÄþA'æázBèátbþ¡'ÄþA'æázBâþÄáÄgZáâÚAøa âAÔá¼ÀÆbAFìHìþÚ!¾a…Fì`Ä$¡à. c,þ!Ú!$a FLÊ¡0l¦Á”ÁâAdÁ âÁÑ6aAaQ%Á$a qaQA$a%¡1q%¡%! q%Á6a%Á$¡%a0±%a±¡Ñ qÄ$âáJŒ$!¾¡FÌ RF:€Ä¾¡Fì¨"æFìâáÚaľ¡âÚa¾aľ¡Fìâ¡F¬æHìÔaÄÚ¡ÄFl¾!¾¡Fìâá¨"¾!ڡľ!Ú!¾¡H¬þââ*âáHìâáâáâáH¬â¡âá:@”Ì ¾aÄÔážÍ/ú®À ®À \2øú`ú€:@xÁÌàÈÄþ!¾Äháø jþaþ€Ì‚àÒA&à*'ÀþÁà,l à úÁàÖÈ àØ¡ø ànØaÐÂ@€  ØaþþÀ,ø!àÒA°ràØaðÆ@€8àú!`1àÜaþ!`1€Òð΂à,ÒAÓþþàøáÒaЂþv H ¤-8ù¡ð@Úá౾ľÄhátÂánøáæáîaèa‚ü¡‚ª€‚¡ü‚A` æ¡@àÜaîÄ! € at€º!Àa ¡èÁà€æ aâ@î!>AþîÄáîa îîA'øáèáâèát‚îîa îîA'øáèáâèát‚îîa îîA'øáèáâèát‚þîîa îîA'øáèáâèát‚îîa îîA'øáèáâèát‚îîa îîA'øáèáâèát‚îîa îîA'øáèáâèát‚îîa îîA'øáèáâèát‚èAtâèáèAz‚ø!È!èaââ¡0l¦ÁZÁFìâáF¬F¬ÚáÚaÄ`îA:€‚s\cŒbáÚÚAR†Ä¾¡¼!ÈaœÁ!hÁ âÁøáøáÖèühþ`Ï‚þa`ýÈ,øÁ,üèÖè,ÖèÖè–þÌb`ÑbÐbþÁþÌbþþa%!øAâáÚáFLÄÊ!ÂàâA6 ¾!È!Ú!È!¾ÄÚ!ÚaÄÚÉaÄÚáF¬Ô!¾âáàñF¬¾!¾¡â¡¾[K [IŒâáâ¡È!¾¡Äȡľ!ÚáââFìÚaľ!Ú!Ô!¾!¾âH¬$AüÀ F¬Ô!!-,÷rÑþ0×,øPJ tI×,ú`úà6@†þÌ æáâáþ¡Fìâ!Îbè@ zÁ,òðÁ,aøÁøÁ,øáØaÌ" Öh€êAøÁ,Ò¡þàÜaøÁrÝaÌ¢ö!aÆaþÁ €Ì"Ì€ì!Ðá,øáÜa.·ÖèÈàþÁøÁ,Öˆ€ìAðÐÂÐÂÀ,øÁøÁ,øáò!Ðáúaà,žA"€Ø@Ö¨sux‡y8-ø¡aü@F¬âá°uľ[㡾!báèáèAþ¡sïáæR&Áú¡¶\aîa ô` îF¾a2àæ! îab`îÁ€æ aèáF€îab`â!` ô@ AJ Ö!–@âBþAæAÄ¡'ææáÄaôAzbèaþAæAÄ¡'ææáÄaôAzbèaþAæAÄ¡'ææáÄaôAzbèaþAæAÄ¡'ææáÄaôAzbèaþAæAÄ¡'ææáÄaôAzbèaþAþæAÄ¡'ææáÄaôAzbèaþAæAÄ¡'ææáÄaôAzbèaþAæAÄ¡'ææáÄaôAzâx†îA'îZÚ!ÔÁøAèaâAÈÁ”b¦$áÚa¾aľ¡âáââ¡âá`âA:àÀ:¬Åz¬Éº¬Íú¬Ñ:­É:øâAáèaľA”‚g$¡hÁ tbfzgîæa°{ R&±;eæ¡'æ!±çagæagÔÁœÁJ¬¾!$áââáÌ€ÄA:þÉ!æFìâ¾[ãÚáÚáH¬HìÚ¡ÄÚaľ¡âáFŒF¬FìF [ãáÚ!È!¾¡àqÄÚ!Úá°uľ!¾aÄÈaÄæáä[羡FŒâÚế!¾¡ðÀ ¾âáâáÔ­¬à¬×ˆl Á¼ l  ª  ¼:@”Ì âAFŒÔáâA)hÀšþÌA4€ôáFÀ ôáb`ø¡d`ä¡Ö!øÁ€þÁþÁ`Âxáò! €ØaþÁþÈzøáìAÐáü  ØaþÀZP€üÁ`d`ä¡Ö!úaÂÚìÖè€úA†@úaR¡Üaøád`ä¡Ö!ÖHPüáþaþþA†@úaRAøAxàü!`4 ¢@þ¼Ömݬù¡Að@¾!¾Ä¾ÄÚáFL)hæèAÙ¡ÙS†þa¬æáRfø ÌáÚÁø`âáèáèÁàæáæ¡V @âáÄÁ"`6` þ aîÙ¡a˜½V`6à €Ù“€€ÜaèáèÁ€ÜaÒ @â¢ýãéáîA˜]þ!¢ýîA˜]þ!¢ýîA˜]þ!¢ýîA˜]þ!¢ýîA˜]þ!¢ýîA˜]þ!¢ýîA˜]þ!¢ýîA˜]þ!¢ýîA˜]þ!¢ýîA˜]þ!¢ýîA˜]þ!¢ýîA˜]þ!¢ýîA˜]þ!¢ýîA˜]þ!¢ýîA˜]þ!¢ýîÄáèá ]þäéþ!ø¡â¡á˜=È!¾Á¶”abÁÈaÄÚaÄÈÉÄ`îA:€nýø‘?ùù!þaľÁè!äaÄÔÁ0l¦!†ÁÈAðàøaHäûæaüÑäï!ýÓÿØ ýÒŸ!$áÚáFìâÁ¾¡Ä ½{¢6Äk÷-^¼v ã}‹÷m^«útP¤ ™vê~ûGî"­sÿñ;ËO®¹öVPè°eÀ¿~þ„0@áH?vÐ^‚ÐaÖüþùÒ°Ä–ÿÜ øÇ/ ¤Ô&!À€Ô¿K6lØ2à»üÐæ[À ÿøíÂ@…#g“€@*­=pxõ¯Ÿ?! P8ÂÝ€úü a €Â‘ýò APÀýü“¢?B0 GðóO>+lÐÁœÕ ?ÿðW‡~âYüt /~O; µóM<íÄóBí4DË?ôÜC3síÈã?üü3Ï<þ÷Ìs=ð3H6T1H0÷ÜC=óÐ3=óDI?ôÜå=ôèå“÷`IÏ<ô܃%?dÞ3=÷è#æ<ôÜ3=óD MôâÌó=ÿDÏ?âУ8óüCÏ?QÆó8ôè#Î<ÿÐóO”ñü#=úˆ3Ï?ôüe<ÿˆC>âÌó=ÿDÏ?âУ8óüCÏ?QÆó8ôè#Î<ÿÐóO”ñü#=úˆ3Ï?ôüe<ÿˆC>âÌó=ÿDÏ?âУ8óüCÏ?QÆó8ôè#Î<ÿÐóO”ñü#=úˆ3Ï?ôüe<ÿˆC>âÌó=ÿDÏþ?âУ8óüCÏ?QÆó8ôè#Î<ÿÐóO”ñü#=úˆ3=ÿyO”úˆƒå=XÆÂO<ß´#É?÷Ì£:êx³MÐÓ´²‰BßÄóBßÄóM;íÄóM<ß N<’tbÖZou,ÿ|ÓN<’Ð3Bä”ó7Ù³2ÎHO,f8òèñ2‰Cô¸‡8ôAIú Ç=Ä¡züƒLâÐ=î!}Ðãd‡>èqqèƒÿ “8ôA{ˆCôø™Ä¡zÜCú Ç?È$}ÐãâÐ=þA&qèƒ÷‡>èñ2‰Cô¸‡8ôAIú þÇ=Ä¡züƒLâÐ=î!}Ðãd‡>èqqèƒÿ “8ôA{ˆCôøG”þ!Ž(‰ƒ•ô¸‡8þqzÜ#üˆ9â!‰~Ðc !G<ÈámLc²Ä7âÑŽx|C!ßP9¢…€÷Å& ÚЊö‡üˆÅ?ÈuHBŽh­k_ëÚxЇøG<æ!…È£!òPˆ<â1xÌC!óЉ<"…È#óPÈ<ä¡xÌ#ºóˆntå¡y($oÖ‡<æ¡yXWóˆÇ<¬«y(dñP‡#bá…#êˆG;Ñ…ƒxˆÇ<±y´#í@oþ;¾vÈC!íˆG;âñx|#äPÈ7Úñx|ƒÑuZ<Úñx|#߈Ç7âÑŽo(„ó@o<ÚaÝoX÷ä@o;¢ûv(¤ߘG<¾oÄ£߈î7¢Ûë~£ é€"”3(¤êˆÇ!8ˆå,§ÿ€–Ó"†0‹YÌYà ûÐG ÃfhG<ÚoüãñøÆ<È!‹/Ÿ…zþ?úü~`™€.ô—÷¬Ã@à ?8È/óÃÐiáZ¦x~è™YžË?°HéP‹:ËPÄ0ür(„ñ G<¾Ñ…C!ó ‡,þ¥{Ðãô¸=þîA{Ðãô¸–æAyÐãIAº=ž¥{ÐcdºÇ<èq(̓L÷Xå=è1(݃÷Ò=u2Ý#J÷ Ç<¢Ð#HôЇ8þqz܃úÇ=èq,ÝP÷ Ç=°t@݃÷ÀÒ=uzÜK÷Ô=èq,ÝP÷ Ç=°t@݃÷ÀÒ=uzÜK÷Ô=èq,ÝP÷ Ç=°t@݃÷ÀÒ=uzÜK÷Ô=èq,ÝP÷ Ç=°t@݃÷ÀÒ=u(Ý#JÿÀÒ?ÄqzÜKA¢Çñð òÐñ@ßäßÐñð ñ ñ@íð ñð ×@ ñ ÖÕßßßÐñ >ÑÕßí Ž@ Ž€^>sÖ¥f@ä  ß ßíþßÐñ@ÑÕóð ñÐ ñ ñ Níí`]äí`]ß íß]ßß`]ßßÐ.æ4ñð ñð ñ@ Añð ÑÕßÐ ñ ñ íßà4 ñ 1äóð ñð  Ê€fÐß êp ûüPÑ+½Ó[ÿÐYЛ  x`íê ÿà4ñ°_´à¼ç›eü€¾ë˾”Æà¼€]ßí íNó Añ@ ÿ@ó@ó@ó@ó@ó@ó@OB÷@÷@&ó@÷@âðXrd¢ôpQ2Xrþó@âp€"÷ÀŒâ@÷%ó@â ÷%÷0Q$ô0Q2ô ú0«4dòâðX"Qòó@ÿ ÿ€%â%ÿ0ôðâðX"Qòó@ÿ ÿ€%â%ÿ0ôðâðX"Qòó@ÿ ÿ€%â%ÿ0ôðâðX"Qòó@ÿ ÿ€%â%ÿ0ôðâðX"Qòó@ÿ ÿ€%â%ÿ0ôðâðX"Qòó@ÿ ÿ€%â%ÿ0ôðâðX"Qòó@ÿ ÿ€%â%ÿ0ôðâðX"ÿ@ÿpQþrX"ú%âðâðó€%±Àä ŽÀô0ñà4ß@Þ  ä  ²àèÕß@ñð ñÐßÐß0÷ о%ʱðßíÀää0 ä€^ŽÐ´€‡ÀêÓæAð æ ] >ñ@êäÐÐ ßßßßà Þ` ûµ_ Añ@ê£åÐßßíð Nó ñð ñð ñð Ð0ßÐêó äð ñð ñð ñð ä]êCñð í >ñà± ßÐñÐñ@ñpNó a÷¢Ð Ñßþß]ä íð íß íð ÑßßNó ä0 ñ ê@Ñõ ñ óð ñÐ ñ óßÐßßNó ñð ÑÕÖõ ñð ä0ä]ß ä]äí í€^ê  ¼àf í ñpýüe Ê€fÐê ßÀí`]´ÀÜèËÛíÝ̽Š0 ~ ñð ííð ñ Ñå4 Á üpxSdhüÀAseü€ü eüeü güpühS”üðüüðüpüðüüðüpüðüüðüpüðþüüðüpüðüüðüpüðüüðüpüðüüðüpüðüüðüpüðüüðüpüðüüðüpüðüüðüpüðüüðüpüðüüðüpüðüüðüpüðü`xüðüpüð­ð ñ ’ð÷@ó@ñPÞ@Û°X±àñð íð ñ@ Ññ0ä0äßñ0ŠÐßÝ”´ðñð ñð 1äÐß]ßÐßÐ’@±`Žðíà3À€Øð äÐßÐêþ`B@ àP ð¤ >åÐêc ð åð Ü  í pêÐ P°_Ü  0*êÀ@í¤i0?ð ñð Nó å@êà4ßÐßÐêÐŽ Ž0äð ñÐñð ’]Nñ0ŠÐßÐèõ á4ÑEñð ñð ñà4Ñõ Ñ AÑÕñð ó@ñ@í ßß í]íßÐ ñ ó@ñÐñð ñ@ÖÕßß í í€^ßÐÖõ N£ä ñ@êÐñð ê ßÐþŽÀ x`ß@ñð ñp ÛgüpÊ€aßÐ ÁßÐñð ñ ~/ù“Où•¯‡üЊ  x á4 ñ ñð íð ñÐ>´püðüðüðüðü jüjü@iü`ù»Ïû½ïûi1E‡G üÐñÐŽðô@ó@ñP-½ Óà ² ñ@óÐÑÕßz÷ ðû„ȱðñð ñÀäð í@ñ ß@ñ@ñð êàí@ xpÿ@ßêÌ-PQHY9„Þb”ÀfnsÀ|+§NÝ7‹å¾ ðÍ"7T߸ͨ þ˜€!弑Q"›9¾}‹Q"›¹8¼@®\¹nX}3—*›ºŸê¾©ûùMÝ7ußÔ}#ç(–£xñÚ‘Ë/зv䲚™wOQrñÚ}‹÷-Þ·xäâ}‹G®kÖvñä}k×.Þ·xí¾ÝíûínVrYÛÅk÷-^»oñÚ}‹G.Þ·ÃYÉÍ‹×î[;róÚe%O]»¬ßâ}ËÚNÞ·¬äâ}ëú­ë·¬ßÚeí hž0w¿IúWÜøqäÉ•/g^œ¿ü:(¢åÇL»xíâ}û—õÛp…=8=p>ð‡`¨~(v€4˜€ p‡0w(€`‡Hƒ ˜†3\MÖlM×|MØdMZà‡x ‡vp~š¬P‡r oØoP†X„x ‡¬ø†xø†xè‹x ‡xø†xø†ˆ‡yP„ˆMìü‡Xà‡¬ø† q†i qq„x 3p„F!1«Û«Ó$ÙþѤiØ€øÏ˜†m˜†m˜MbMšb@…l  ¸Mb‘m`rpOÙ«Û Åm°ºxp„V„vÈ rˆ‡vPIˆrP‡v 3˜‡{P„H•vˆ‡oÈŠv‡¾ø†x ‡oÈŠvH•y ‡oÈ rˆ‡oˆ‡oˆrˆ‡vÈŠoH•vˆrø†®h‡xø†xè‹xø†¬ø†xø†®ø†v ‡Tù†xø†xh‡¬ ‡¬ ‡xøuh‡xø†xø†x˜‡oˆ‡vÈŠoh‡xø†¾ˆ‡vˆ‡oè€Cà<0ƒo ‡xø†x8„ìü~x|À‡ÚâOp~ø~èþEà?0ƒ®è‹h‡T¡…XUVmUW}UXUYUZ­U[½U\ÍU]ÝU^íUVå‡8^Àƒh‡xh‡xh‡oˆrˆ‡¾ø†xh‡oˆ‡X`U~ÈGˆU~ ‡Uå‡àð¨p8s5‡*WXU~`‡¸~øwVu‡àw€+ø~pƒ à_ XX‚-Xƒ=X„íU~ˆ~ˆr˜Ià©éŠrørÐ$e Iˆ‡vÈŠvˆ‡v ‡xø†yÈ uÈ ˆ‡{… HX—U~ˆ~è ~ …V ^hZà…VhZhZGˆ^0Gà‡ MþZ¥u¥MZg †PYpOg˜ghZ­µ:gˆG Iør˜‡x ‡xPIP‡xh‡x 3ˆ‡yP„ ‡xø†xø†xø†¾ˆ‡oh‡Ti‡oˆ‡oè‹oHr˜‡¬ø†xh‡¬ ‡xh‡xè‹oˆ‡vHuørÈŠv ‡xh‡xè‹xø†xø†vÀ¾oˆ‡oˆ‡vèŠoÀ¾® ‡¬ø†xø†® ‡xh‡x ‡® ‡x ‡®èE<ƒTùIxYWí‡ ƒ~ÈT~ðOpƒà‡ „aÀ3ø†xø†x ~huh‡oˆ‡X@^ó=_ôM_õå‡P„aðh‡xþ ‡x ‡T!‡¬h‡x˜r…VGUzhU~¨‚`ð>„=8=p>ð‡`¨~XUw|XUv(Vu‡øv|ø~H‡P_>aNanÕXà‡v˜rp~ Yùr(oØr`‘Xp„oh‡xø†¾ˆ‡y ‡x¸‘¬ø†ˆ‡yP„XჅø†xø†:š#I #I¨£oP<„`g°:g˜g°:gEg°:g‡iP†ip u†mP†ip†a¤™iÈgØq«Ûe˜g˜g˜gHZghZe‡iØeˆGhGÀ¾vP‡Cˆ‡oèŠþ0Qè€xø†xh‡¬˜rˆrÈŠoh‡o˜rˆ‡vÈ rˆ‡oh‡xh‡xh‡T!‡¾ˆ‡oˆ‡oh‡¬ø†xø†vˆ6Irˆ‡vˆ‡oˆrh‡¬˜rø†xø†xø†xø†®ø†xø†xh‡xø†xø†v芾芉‡oèŠoè‹®ø†xø†Pgð3h‡oÈ u8ôå‡U%ƒH‚N~ðcˆ2ø‡PeÀ3P‡x ‡yˆ~ˆ‡vˆ6¡(îhþhƒå‡PeÀøìû†¬è rˆ‡vÈ Zø~XUep„XåzhU~àƒ`ð‡`àW0WàWèþW~XUv€à‡`‡XU~p‡àw€Uåvîj¯þêæ‡Xà‡®p~ z˜‡xPrð†m gPZp„xø†x ‡xø†Té‹oh‡¬€x¸QذÞU~ˆ…P‡¬´î o(rÐ$qGˆ‡X0Gøg˜e e˜e˜ep†i¨e˜šQ†i¨™iP†iPgPgPgPq†iPgP†ipe˜š™†š™gPgPg`e˜g˜e¨gP†i ™iP†i e€nep†ipePš‰GhGh‡oh‡oˆrˆ‡Cˆ‡oþh‡¬0ƒyˆPè€xhrˆ‡oÈŠvˆ‡¾p]rpÝÝû†vø×m‡¬ø†¬h‡T™‡¬ø†® ‡¬ ‡yÈ uh‡¬h‡xh‡®h‡oÈŠo˜‡vˆ‡oˆ‡oÈŠoh‡oˆ‡¾ø†x ‡xh‡¬ø†® ‡xø†¾ˆuÈŠP^À3ÈŠvP‡x8„ôå‡ ƒ{xŽ{¸‡ç¸~ ~èIP<0rè rø‡oHZ(l0óæ‡^ðÈŠoh‡xø†xø†x ‡¬ø†xø†xˆ…VuGUz`Õç>è>¨>áâƒ``Uw(~ø~pà‡UM‡øþvVe‡sOÿtP·ÕXø‡oˆ‡op~ ‡yÈ rPÆÙ†l˜†VØ„opÝoh‡oˆrˆ‡vˆ‡o€x˜Eè€P§ÕXø‡¬øG ‡yˆ‡v ‡x0s ‡m`epuˆ3p„pe€nepe ™ï®™ï¦epepe€nwÿîiP†šQ†iPgPèþnwwepepepe˜e ep†ïv†ï¦epe¨e€nehG IpÝo„vÈ ph‡0GØ€x ‡®ø†x ‡vˆrˆ‡oˆ‡oè‹xø†vø†!yh‡Té‹oh‡oˆrˆ‡oˆþ‡vˆrø†vø†¾ˆ‡oˆ‡oˆ‡vˆ‡vH•oˆ‡¾ˆrø†vˆ‡oˆrˆ‡oh‡xh‡xø†Tù†y ‡v‡®h‡xh‡xø†vˆ‡vø†®˜rhuÈŠoèGP<0ƒo ‡xø†x8&~€…Q…‚N„{ ~èEP<0ƒx苬ø‡oh‡xø†xˆ…b}ÑX~èGà<€oÈŠvèŠvH•oˆ6¡…VUGˆU~ V­­Ap}ÈÔèW~`Uv€Uå‡X€Eø‡|ˆàv(€Uåw€ÑÏ~íÿh~ˆ…ø†¬p~ ‡yÈ u ‡oðrþ`Yp„¬h‡oˆ‡op]rè ˆ‡{… Ø~Vå‡Xà€P/ž£{ã‘#÷m[BgÓœ9jGËL;IÉÍ;ܼxäæ$§ñ ¹xäâ‘›Gn$ËäÚ‘›×ræHróh’;¨N#¹M´œIú֮ݷê$}ûvÐ̼{¢: ü6ðÛ@rñÚÅk7°Ý@róÈÅk7ðÛÐoñÈilw°]¼oó4=ø-Þ·xßâ}kï[¼v¿$ÜÁvßX&×î[¼oñÈÅkï[¼o¿µØAÑ0ƒøýã7šÝ~¤}i° [ð;ð3;H× ƒB¡„RØ -ÿ ô$üÜCO<ߨ£N9ÙL33±HÒÎ7ñÌóÍ@ßÄóÍPñ|Ï7Ä3"TØ#r±üÓN<äH2Ï<©c9ÛL³Í4ÊHBŽ2x|#Wb™å•›(¢ˆ–ZnâÈ&Žlò¥#]*b¦#’h‰f—ŽH¢æ—’d¹‰"jÆâ ?ŽÄÓÎ@ß„xÈAí|ƒ9ñˆ²A<í ÔN<ò4T;ñ|Ïþ7#‘óM<ó3P;ñ´Ï7’~ÓN<ßÄÓN<ßÄóM;ñ|ÓŽFíÄóÍ@íÄóM<ß´O;}ÓÎHßÄóÍ@íÄóM<ßôÍ@íhDN;}ÓÎ7íÄÓN<ßt ˆ2x˜ÑÎ7©srç¢;?cÈË(ï&’ˆ ÷ŒñOŠ(ƒ‡ñ|sÐ?íhDKº\°Á#œ°Â 3\?(¢ ´9ñ|3Ð7‘O;ñ|O,¥eÃÉ'£ŒšÉÁ R… U ’Li'“ÆÏ?&fòiü4ܳÏ?´ÐCÌO,ÿ´3#ÿ¤79ñ$ä 9Ó8ÓŠ#ñ|3P;µ39©3þñÜ#ÊD£]?±ðóM<í8BÏ<ñ¨“T9 M“·3ŽÄ£N<Žü£ /­Þ -­ÐÒ -±ÈBK+´ÐÒJ,…·BK,´ÄBK,·KáÓB9ä²ÐÒJ,±:ä”ÇB9ä§ å´ÄBK+±´ áË¢Ì?Ž|CŽFäÄsˆ:ä DŽIÒ<ß õM;ßÄóM<íÈóM<íÄóM<í|s9µ9ñ´óÍ@ä DÎ@íÄÓN<íÄCÎAßÄóM<ä ÔÎ7µc ß G<Ú1oÄ£ßÈ7æñx´ãñøÆ@Ô1oăñhÇ74ò #ä8H$¡ ?˜þa íPG<‘¶ÒŒAð>àñxÈCcàG¡ <˜¡iÇ7øÑu´ãñˆÅ ›èÄ'Bqaüè€$xáC#êH;4òyCãÇhPv²~ôãüø?ÃÒð#Šrœ#ëèDZð£!r?èa¤x|£åðÆ4¶1 ZH¢ùF<¾!¡´c êÈ7y(¢vìY,þvÄCô¸G<€˜˜†3œáˆ¨ƒ’P“$®$‰,IâK’p„$! GHBN¦œ$¡&I¨I’ÀÒAÚñ¡ ÄäˆÇ7Ú3I89òx´ƒþ!G;2r´c íø†<Ú1rÄCí` 9¾oäñøF<Úv ¤ùF<ÈvÄcßhG<¾o d(ùÆHòv´äñøF<ÚohäñøFÁ <˜áäˆÇ7âqˆãÀ4¦¤áÇhÆ X¼kñJ9ÆÀ(Bx8ÚAŽyăñhG<B ™B5ªR*U«jÕ«b5«QåGÁ <àñøÆA¾AŽx|c(¡Å?N¦U~D•Z+]ëj×»â5¯z= ?hÁƒ8‚ô˜Ç@ÚQrxƒΘF,$ñ|cñHH<¾ÑŽx|£þ@<î!Š ì5´¥áG,þÑrÄCFH*€mlcÎp„:È1´C#ä˜Ç@È¡r „#!G<ÈoÄ£ñhMBŽ|C#CiÉ74BŽ|c&äH;âÑŽ„HùF<†2rÄãñpÄAÚAô¢=éMÃ(Bx@;¾Ñêvc íˆGBhQúÛã>÷ºß=ï{ïûßóžÿ Çþ<âá~¤' Q‡7¼±i(ƒŽˆ9æ1v|£ßH;ÈqÄã¢ØðËoZðC䈇$Ò3o¨Þ Ç4ÈáŒaHBß G<Ú1v|ÃPC<¨9ÌC<|C߈Ç7ȧvȃíˆ9ÈCŽx|#ß O;Ès£oÄ#SßhÇ7Úñ ò|ƒ<íø9âÑŽoÄ£߈Ç7Èóv§Š¤oH‚[!éH¯µI(f°Ï7Úñò|#ßx×LiZS›Þ§9ÕéNyÚSŸþ¨=Ç<ÈÑE à 9ÚAžo´ãñøF<ÚaZü#†ÎpĶèñÂâ ûÂþ‚0„/€ì µˆ!=Îaµ¾õ­ç°\éz X@óxë9,0ºÒCm¸«<æñWñ‰UìbÛXÇ>²‘•,\[ñò´CüÇÆÈÑŽ‡}cA¤…#ÈAžvØçñøÆâñx|#ñ˜‡":TÛÞÖ]qj9€t£x´#íˆÇ7âñx|#íˆG;æñx̃ä!GœÚrØçFñøF<ÈvÄãöùF<¾rÄcä 9€ô û´#ßhG<¾oÄ£öù†}Úr|#߈Ç7ìCŽoÄãó Gœ¾Ažy|#ê Ï7$ñvÄãí0C<îþ!‰´ƒ<ßhG<¾1oÄ©@"G<ÚArÄãí Ï<ÈvÄ£öiy¾r´ƒ<ßÐU;¾v|Cº"Ï<¾AžoÜèí°9È3r©ñhG<ÈarÄ£äiyÚvÄãPÄ0ü`†v|ƒ<ê8Ié\çkñ£ŠÌðvØçí°9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽk €×9âAŽx#Ð9âAŽx#äˆ9âAŽx#äˆ9âAþŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx|Ã>P„2ð€oçFñ Ç<¾1vÄãñøFþ¾!ÈAÉ죾!Úánäæ!N¾¡ã¡¾¡¾!ÚÁ>Ú!¾<ÔáâáȃÌ ÄA6 Ú<¾Hnä⡾¡¾H¾AWnÄ>nD¾áFâáìƒâ¡âáâá⡾<¾Á>ÚáÚáâáâáÈ£ȃȃâáÚ!Úáìãâáâáâ¡ìƒæ<¾!ÚáÚâì£$AðÀ È£Ô!Á΂ÑZúÁ ŠÑñø¡Að ÈãÚáø¡Ô¡€äd@’æææææ®æþææææææâÁ@€XaÈaÈaÈaÈAÖÁ â`ÈaÈ!È`ÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈaÈþaÈaÈaÈaÈaÈaÈaÈaÈaÈ!È!¾!È¡$üÈãÚ!NÚ!¾<ædáæèA´…þîA†d†à ¼ ¼à †d†àæîá,€îîAèáÄîAèáîá,€îîAèáÄîAèáÎÁ~óèáÄîá,àèáÄáÄáèáÎÁîa~óèáÄîAèáÄîAèáÄîAèáÄîAèáÄîAèáÄîAèáÄîAèáþÄîAèáÄîAèáÄîAèáÄîAèáÄîAèáÄîAèáÄîAèáÄîAèáÄîAèáÄîAèáÄîAèáÄîAèáÄîAèáÄîAèáÄîAèáÄîAèáÄîAèáÄîAèáÄîAèáÄîAèáÄîAèáÄîAèáÄîAèáÄîAèáÄîAèáÄîAøAèáèáæîbáâáÚÁþþá6æÊ¡ÈaÈa¦$¡âáÚ!¾¡È£ÈCÈã€ÚÚ!È!¾!¾¡âáÚ<€<$¡žØ«¿: Û!¾<¾áF¾¡¾aȃâáÚáâæáFÈ£âáìã澡¾¡¾!Ú!È!¾<ÚþáâAâäææ!¾!ÈÁ>È!ÚÁ>¾!¾Á>¾!ÚAWÚ!È!¾!Ú<Ú!¾!¾!N¾HÈÁ>È!ÚÁn„Èà æá¡àáâ¡È£âäâáâ¡â¡âáFÈ£âáâäÈãF¾!Ú<Ú!Úá⡾!ÚáâáF¾Èãâá€D¾!Ú!¾!¾áFÈ!¾!¾!ÚငâáÈãâáâ¡â¡ì£¾áFâAÈ£aðÀ €ä$¡?ÄC\ÄG\üÁ ¨ Ä<Á :À”ÌHÈáþ¾¡ìãÈá`âá aâáÚá  @àH¡¸a tâáȃŒÀ!èaà a¾!¾á  aÚ ¾V@(   ¾áz¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!þ¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!ÚáÕAÈ£aü@ì£â¡ȃÈC⡾!báèáèAaÄéáèáða@f‚À ‚À ¾ ¤A†€ææá,ÀàAÚÀèáˆÀàáˆÀâá,à¬Á àè|@§ïá,à~óˆÀâîJþ|è|€ÎÁèAøá`¡§ã^îçžîëÞîïïó^ï÷žïûÞïÿžþAèá~sZþáìÃèH¾¡ÈaÈaœÁ¡¾!ÈHÚ<¾!Ú!¾!îA$¡ÈãâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáÚ!¾<¾!ÚHÚ!ÚaÈ!Nȃ¾¡â ÚÅ‹÷­ÝÀoíâ‘ûïÛÀ‡ÛÅkï[ÆPí ä ÝÉê° @^c à£à° ×0ß0»Pí ÐÐ0ß ñ »0ñÐñ ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñþð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñð ñÐAAñð òÐñЊ0 x ÑAí6ß0ä ÿ@÷@Êà´1²${ü0÷0ñ@lð#ˆ <S‚K@÷ç`?2ç`ó@DàØ0ç óp0ç`>pÖ@>ð#÷ð#ç`?ró@m@ú@þð#Dàïç óp@÷ @ Sñâ0ÿ ó â0ó@óðâ0ú ó8ô0ÿ ó â0ó@óðâ0ú ó8ô0ÿ ó â0ó@óðâ0ú ó8ô0ÿ ó â0ó@óðâ0ú ó8ô0ÿ ó â0ó@óðâ0ú ó8ô0ÿ ó â0ó@óðâ0ú ó8ô0ÿ ó â0ó@óðâ0ú ó8ô0ÿ ó â0ó@óðâ0øâðâ@ÿ ?rü0þ÷@­ðñÐßà?2:bÞ° ä° Ó  Ží0ß í0ßñ 0ñ ð3ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÐñð í0äßßð3'ñ íí>:ßí6í0ßÐñð ñð ñð íää0ßßßà5í06ñð ?#íð3íí0ä0ß0ä0ß0ííí0íþð ñ@í06äó@ñð íð í0íß0ßpóð ñ@ñ`¡@'ßÐßßäí0ßð5ß íí0äð í0ßßß0äÐ^Ó^C?ó ^ÓñÐñð íßpñð ñð íäà5íó@ñð íßí0äð3>ú3ßÐßà5ßßЊà ~`í𠡇@²*½Ò,ÝÒ,ÝÐ f°aÐ  £÷àÊ€fpñÐñÀßÐÑž0³ Ù0 M ß` °ê°1Píþ ñ #€ÞÀ €ñÐßÐñ`  ê`M à` °ß`1Pí Ð 1CÐæÐßp RñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐþñÐñÐñÐñÐñÐñð ñð Ñßßê #óЊ  x ß@ñð ÑßÐßíà5´Àóð#Êàúhó@ÿ0De¬À6Å (0%VÀ(ð#âp0ôpç`ôpðàMå÷pç`mÀT>HTç`÷0DD`Dð#âàMå÷p@÷@m`D@3Nÿpâð#âðñ0ÿpâð#âðñ0ÿpâð#âðñ0ÿpâð#âðñ0ÿpâð#âðñ0ÿpâð#âðñ0ÿpâþð#âðñ0ÿpâð#âðñ0ÿpâð#âðñ0ÿpâð#âðñ0ÿpâð#âðñ0ÿpâð#âðñ0ÿpâð#âðñ0ÿpâð#âðñ0ÿpâð#âðñ`âðâ ?ò÷@ÿ@ó@âð÷0´ðä0í ô0ñ Eã ŽÐß0êßà5íð í00’°ñð ñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐñÐþñÐñÐñÐñÐñÐñÐñ ^Ó?ó ñð ä0äíð ?£?ó 'ñ íð äßäà5ß0ñð `ÓñÐÑêð ñð ñð íð ñÐßßßßäßíð ñÐñÐÑÑñ ñ@ñÐß0'íà5ßß0íð óÐaó ñÐß'íp?£#fpó 0ä0ä0ííí@ñð Ññð ?ã£ñð bÓñÐAñð 'ÑñÐßà5í0íð í@ñÐ?ó Ñò@?Cþ1/^»oíÈÅkOa¼oñ¾Åk¯ÝÄ…ß¾Å#7ï[¼o Õ)ì ˆ3 Û©‹wèßJ–-]¾„³¥(?Ìðºï}Ä™çzþ±/žÄ¡Gqæù‡žì‹çqèÑGœyþ¡çûâùGzôgžèùǾxþ‡}Ä™çzþ±/žÄ¡Gqæù‡žì‹çqèÑGœyþ¡çûâùGzôgžèùǾxþ‡}Ä™çzþ±/žÄ¡Gqæù‡žì‹çqèÑGœyþ¡çûâùGzôgžèùǾxþ‡}Ä™çzþ±/žÄ¡Gqæù‡žì‹çqèÑGœyþ¡çûâùGzþ¡çžüþôgžüìÓGœyf¥……È‘Ä>…Øm¦qFIÈQè›x¾‰§x¾‰‡œxÚ‰ç›Ä¹G’¾Q(2o¿7\qÇ%7Üx¾Q¨oâ!g"Ðæ!G¡vRG¡oâù†4…ÚMvúF¡oâù¦o&Šç›xÈQ¨x¾™‡œxÚ‰gžoúf¡o"'žoâù¦x¾‰çy"[¨…¾‰‡œo&ú&žoæù&žv¾Q(²oÚ‰ç›x¾Qˆ…ÈiGv‰ç›…ÌgI:Pè…¼‡œxÚQˆœx¾‰§oj'žoÚQè›x¾‰‡œxÈ‘§xÚ™‡œxÈùF¡oÚ‰ç›þvâù´vâù&žo²H¡o&Rè›…¾‘g¢oâùf¡oÚ‰‡yÚ‰ç}úF…¾éÀeð0ãrâù&žC^b½u×Yï öV¨ˆ‚ŠVbïàž:pD<ˆç›yâG¡oúœvâQ´ojçrHS§u¾QHx¾™´ÈÔùf)…À™(žoú&žvȉ‡œx¾‰‡œyâ™…ȉ‡œxȉ‡œxȉ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#þäˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆÇ7&òx¨Ã"ñøF<Ôv,d›Pð rÄ£ñøF<¾¡rÄ£ñ 9hñYuÒ“ù™Ç=æqâØ'(@APTÞƒ÷˜Ç=èAûÌÓô¹=Îay܃ó°Ï=:©ü܃Ň}æaŸ{Øg÷ÈÏ=ì3Y‰ã‡>èqqèƒÿ˜•8ôA{ˆCôøÇ¬Ä¡zÜCú Ç?f%}ÐãâþÐ=þ1+qèƒ÷‡>èñY‰Cô¸‡8ôAÌJú Ç=Ä¡zücVâÐ=î!}Ð㳇>èqqèƒÿ˜•8ôA{ˆCôøÇ¬Ä¡zÜCú Ç?f%}ÐãâÐ=þ1+qèƒ÷‡>èñY‰Cô¸‡8ôAÌJú Ç=Ä¡z܃ó Ç=èqüˆã¼=îA{´â߈‡:$a…|#Xä˜Æ6¦á GÄ£ iG<¾o(„ =î!Š#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆþ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9ÒŽo(¤ñ G<¾o,d"äˆÇ7Úñ r(äóhÇ7&"oÄ#2ßhG<Úñx´#! 9âñx|C!í ‡¾¾±v(¤ñøF<Úšvă ùÆ<Ô‘Éx´ãùF<¾±¹oÌC!í Ç<¾È(¤ñhG<Ú¡/r(DêhG<È13ÐGPÈ7âÑrÄ£ߘ‡B¾¡vÄ£ ùF<Ú±o´#ßÐ×7âÑy|c!íXH;òx|#ßh9òx´4íP9âÑŽx|4ß Mþ;ò …|£ñ G<"óx|c!ßh‡B: ˆaàÁ  ù†$^7hB³ä7ÿ0C+ÌÐ <ÀÃÑð<: ˆaøÁ ߈G;âñÄãñ ‡¾È¡răñ ÇBÚñ u´ƒ4íˆÇ7â…xk!QH;âA…´c!óøÆBÚÈ,¤ ‘ÇBä±y,D ‘ÇBä±y,D ‘ÇBä±y,D ‘ÇBä±y,D ‘ÇBä±y,D ‘ÇBä±y,D ‘ÇBä±y,D ‘ÇBä±y,D i‡B¾±v($“ùF<: ^øñ˜Ç7âÑŽx´cs ¡Å?þìsz܃÷ Ç=èqz܃÷˜Õ<è1z܃ò˜‡<ÚpÄãù™=æAâÌêù¹Çvèq Ðc÷ Ç=>9OÎcV÷˜G~æA{|òôЇ8îA{äç¼={tòô¸G~îÑÉ{Ðãù¹G'ïA{äç¼={tòô¸G~îÑÉ{Ðãù¹G'ïA{äç¼={tòô¸G~îÑÉ{Ðãù¹G'ïA{äç¼={tòô¸G~îáI}ˆÃ>☇}þA{ˆƒ÷ø$-ø±GÈc ù¼±mLÃÊÄ7ÚþrăßM;âñx|Cô‡$: /y,D ‘ÇBä±y,D ‘ÇBä±y,D ‘‡…‡…‡……˜…øy oPˆo‡…ø†y …˜… …ø†… Ðø…hr‡‰ˆ‡oˆ‡oˆ‡y ÐøÐø†‰ø†xø†xø†xøuˆrPrh‡oh‡x …ø†vÐrPrˆ‡oPˆoh…ø†vPˆo oˆrˆ‡oˆrø†xø†xø†xø†xø…h‡o8„x ‡v˜r0zIè€x˜yXrˆ‡vˆ‡oˆ‡vø†xø†xø†v … ‡oˆ‡þo˜rh…h‡oh‡oXrP‡x€‡…ø†xø†vˆ‡oØœ‰Pˆ‰ø†x ‡Èˆ‡oˆ‡vˆ‡oh‡oPˆvø†vø†x ‡oˆ‡oˆ‡oˆ‡y ‡vˆ‡oˆrPˆvˆ‡Èˆ‡vˆ‡oèEP<0ƒvø…P‡C(´i$´V03ˆ‚(YG{xèEà<0…h…àÐP‡xPrPˆoØœvø… ‡xø†vø†xø†xh‡xhrˆ‡vø†‰ ‡x ‡xP‡LЇoˆrh‡xh‡oˆ‡oh‡oPˆoˆuh‡oˆ‡‰ø†xø†xø†xø†vP‡oˆ‡oh‡oˆ‡oh‡oˆþ‡oh‡oˆ‡oh‡oˆ‡oh‡oˆ‡oh‡oˆ‡oh‡oˆ‡oh‡oˆ‡oh‡oˆ‡oh‡oˆ‡oh‡oˆ‡oh‡oˆ‡oh‡oˆ‡oh‡oˆ‡oh‡oˆ‡oh‡oˆ‡oh‡oˆ‡oh‡oˆ‡oh‡oˆ‡oh‡oˆ‡oh‡oˆ‡oh‡oˆ‡oh‡oˆ‡oh‡oˆ‡oh‡oˆ‡oh‡oˆ‡oh‡oˆ‡oh‡oˆ‡oh‡oˆ‡oh‡oˆ‡oh‡o˜ˆoXˆÈP‡o˜…h‡x ‡yèGà<€oˆ‡oˆ‡oˆ‡oh‡oˆ‡oh‡oˆ‡oˆ‡Xø‡{˜z˜z˜z˜z˜z˜z˜‡O¢‡y¸Oþºz¸‡Y‡˜z¸z¸‡Nš‡YÙz˜ûû}è¤{ ‡{Èqàû˜z¸‡ü¸‡y qЇ{°q¸‡Oº‡Nºq˜•{è¤{‡Y¹‡Nºq˜•{è¤{‡Y¹‡Nºq˜•{è¤{‡Y¹‡Nºq˜•{è¤{‡Y¹‡Nºq˜•{è¤{‡Y¹‡Nºq˜•{è¤{‡Y¹‡Nºq˜•{è¤{‡Y¹‡Nº‡Yùûøz y°°qøq ‡{°Zø‡oh‡oØz˜yP‡xP‡rȤi؆ipGˆ‡o vø†x …P‡xP‡ ‡{… ˆ‡þoˆ‡ohuø†xø†vø†xø†vø†xø†vø†xø†vø†xø†vø†xø†vø†xø†vø†xø†vø†xø†vø†xø†vø†xø†vø†xø†vø†xø†vø†‰€uh‡xP‹ˆ‡oPˆvø†xP‹ oˆroPˆoPˆvø†xø†xø†x ‡yˆrˆ‡oˆ‡vˆ‡oXˆvø…h‡oh‡oPˆvXˆo˜‡vˆrPˆvÐyh‡…h‡oPˆoXyXˆvXˆoh‡x ‡xø†xø†xh‡oЗo˜‡…h‡xø†xø†xø†x ‡yh‡C 3 ‡{… ˆ‡vP‡ohr˜þ…ø†xhr˜‡vˆ‡vˆr˜‡‰ØœvøÐ ‡vø…˜ˆoh‡oˆ‡oPˆoPˆ‰ø†xø†v ‡xP‡oˆ‡vˆ‡vPˆv€…øÒ ‡‰Xˆo˜Ò ‡Í™rˆrˆrˆrXˆeð3PˆvP‡x8jÔ[Öá‡à…ȇ…€‡wx´„að3h‡oh‡xø†ˆ‡oˆrˆ‡VˆZh…X Yˆ…Ï•…ЕZZ Y Y …X Yh…X]Y YàZàZÓ¥Y …V YˆY Y Y …Ï¥…V Y Ñ¥…V …Ø¥…V Yþ …V Y …V Y …V Y …V Y …V Y …V Y …V Y …V Y …V Y …V Y …V Y …V Y …V Y …V Y …V Y …V Y …V Y …V Y …V Y …V Y …V Y …V Y …V Y …V Y …V Y …V Y …V Y …V Y …V Y …V Y …V …Và…Ð…VˆYhÓ…Ø•^ØG?Òh‡y ‡xø†y ‡… ^àz ‡{ ‡{ ‡{ ‡{ ‡{ ‡{€ã{ ‡þ{€ã@žz¸8ž‡{˜z˜‡@†ã{€ãy€cqä{€c}z¸z¸F†ã úàdz˜8þ8æq€ãyäy ‡ ‡{˜zø8Öqäzøqezøq˜‡‡^þq˜‡‡^þq˜‡‡^þq˜‡‡^þq˜‡‡^þq˜‡‡^þq˜‡‡^þq˜‡‡^þq˜‡‡^þq˜‡‡^þq˜‡‡^þq˜‡‡^þq˜‡‡^þq˜‡‡@þqøqd}zÐqøq ‡{ ‡èåVà‡…pz˜þ…P‡r êÛ†ipg„oPˆoh‡xh…h…P‡xP‡x€x˜Eè€Ø¥…V Y …V Y …V Y …V Y …V Y …V Y …V Y …V Y …V Y …V Y …V Y …V Y …V Y …V YøÜÏmÝ•Zø\Yø‡…pIpIp„Æ–G8IìÆVˆoˆr˜‡oXˆvˆ‡oPˆoXˆvPˆ‰Pˆoh‡x˜rXrø†vPˆvo˜ˆo‡‰øuh‡xø†x ‡y ‡oˆ‡oh‡oˆ‡oh‡x ‡oˆ‡o˜rЗoPˆvþˆ‡oˆ‡ooh‡‹‡‰p„oˆ‡oˆr0…Ph‡x ‡…˜ˆo rh‡…ð–xø†xø†xø…ø†xøÐø†xh‡x˜roPˆoˆrˆ‡vXrXrˆrˆ‡oh‡xø†vPˆoˆ‡oXrˆ‡ovø†vXˆoˆ‡oh‡oíþ†xø†P^À3ørˆ‡oˆ‡C`‰×ñçñ×ñø‡VÀh„`:`&èEP<0ƒx ‡…à‡xø†yø†x…•ðø g ~` ~àq~ø~ø~ø~ø~ø~ø~ø~`‰ßX ~Ðq~Øq~øþ~ø~` ~` ~` ~` ~` ~` ~` ~` ~` ~` ~` ~` ~` ~` ~` ~` ~` ~` ~` ~` ~` ~` ~` ~` ~` ~` ~` ~` ~` ~` ~èq~X ~ø~Øq~èEP<€oˆ‡oˆ‡‰Ð—oPu … ‡y ‡y ‡y ‡y ‡y ‡y ‡{˜z˜z¸Nžú ‡yàä{€ãy‡‡ä{ ‡y€ã{`äyå{ Ž@¾F¾z¸z zÐ8¾qøz} ‡y ‡{8¾zø8žFþqø‡@8þ‡y ‡þ‡dq€ã˜zøqø‡@8þ‡y ‡‡dq€ã˜zøqø‡@8þ‡y ‡‡dq€ã˜zøqø‡@8þ‡y ‡‡dq€ã˜zøqø‡@8þ‡y ‡‡dq€ã˜zøqø‡@8þ‡y ‡‡dq€ã˜zøqø‡@8þ‡y ‡‡dq€ã˜zø‡{8¾8¾z¸‡^¦q¸z¸‡P¦~ø†x I ‡x ‡x ‡v(‡Lš†m˜gp„vXˆo ‡x˜ˆoh‡xø†xø†x€y¸QØ–þà‡à‡à–à–à–à–à–à–à–à–à–à–à–à–à–à‡ð –à‡øˆ~ˆuˆG˜‡x˜…(‡rˆoÛ¦Tæ¨]¼vñÆk׎ÃoñÚ}kG.Þ·xí¾-$¯ÝÂoí~‹G.Þ·xß.üÖ.¹xßâ}›Ç’e;r Û1lï[¼o ¿Åk÷-Þ·xßâ}[H.Þ·xßâ}‹÷Í!¹x޾Íû¶Ð̼{Š6›¯Ý·xíâ9ü¯ÝÂoñ¾Å#¯¼vßⵋ÷má·yßâ}[H.ž:†í¾-l·Ü¼xäâ}cØîÛMr Û}‹÷þ-Þ·xäⵋ÷-Þ7‡ ¿ÅûïÛ¼…ê¾µûÖî[¼oã©[¸ÁÑ0ßX~¾Á‡,¤ŽPÐŽ…ƒñ ÇB¾u|ƒ!|#ã(Ç9Ò±Žv¼#ó¨Ç=ò±zäGrâÑŽxHÂŽ„!%aHG(B›„$ÚÁvăñøÆBÚñ † ÷Åæ±)’’>ß`ÈÈA‹cê=æ!…|Cä Ç4Èá e8b!߈G;þÒŽx|#í`H;¾o0äí`H;BŽv|ƒñpH<Úo´ƒóˆ9âoÄãñøÆB¾oÄãñ Ï7ÈÁy´c!ßpÈ7Ú±‡|#äˆ9nÒră iÇ7âqˆoÄ£ 1Ã<â!Š ÄƒñøF;r¹…´ã&ßhÇ7Xòv#߈G;¾oÄãñP9âÑ–|#íˆÇ7âñ ‡|#߈G;ÒŽx|#óùF<¾oÄãñøF;2ŸoƒsíP‡:ò…|ƒsßhÇB: eàÁ i‡:âq?ö±ŠÂÐŽo,äüXˆ:âAþŽXüƒ ùÆBÚoăñ G<Èrăñ G<Èr@c䀯òxˆ9âAŽx#äˆ9âAŽx#äˆG; 1€x#äXÈ7âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9âAŽx#äˆ9æ‘äˆ9âAŽx#äˆ9âAŽx#äˆ9âAþh  ߈9âAh àñ G<Èr,äñ 4(‚~9¾±v0¤ñhCnÉrăñ :âáuÄC !G<¤Žxc!ÿQG<Ô±rÄÃ!ñ ÇBÈrăñ˜: uģꈀÔvăñpˆ:âAŽ…#ø)G<TŽx ¨ñ@P9â rÄA刂ʕ#*G<TŽx ¨ñ@P9â rÄAåˆ~ÔuÄÃ!ꈇCÔuÄCñPG<Ôv¨#êˆ~Ôo´« !G<Ôr,« ùF;¾±yþ|#߈9âÑŽx|#ñ˜‡":oăñ G<Èrăñ G<Èrăñ G<Èrăñ G<Èrăñ G<Èrăñ G<Èrăñ G<Èr,äñ G<Èrăñ GæÇ?ÀÏõðãüø?ÌÇòñãàÿ?þÁðc=à_O?úáÀïøá$!¾!Ú%¾!Ô!a¾AâÌ€æÁ:@(Ô!¤ãX¢âáþÚ!ÚáÚ!ÈA(¾¡¾%¾A(Ú!Ú!¾¡ââaÈ澡Xââá ìä¡Xb¾aæÈÁ)¾#è„âX¢XâÚA(È¡âá¤#¾!¾A:â¡âá:@†ÁÌ ¾%Ôá‚léð|øáðÒ<Á øáø¡AüÀ X¢Xâ¤#̆þ²†"À¢@ÈaŒ¾¡âa®a¾¡¾Á  aÀ@¸°¡â ÂA¤Aä&ÀàâáÈ!¾! a(KâÁÈ@þÔ!Ú% A„ ¸’¡Èá@ aÚá`®Ô¡ÖºA¤%¾¡â@:X¢âá a¾%¸’¡Èá â¡¾¡ AâA:®aÚ!¾Á à AÈ% aX‚â¡ aÈ!º’¡Èá@ aâáâáæ% a¾!Ú ¾! AÚ ¾A:Ì `Úæ! A¤¡Að@fîâáœB:ÈAÔ!¾Á)@:ä¡ÔAl.-ãæA-Éaœ‚ææA-kþX‚ææÈa„‚æÁ.YBâæ¡æä!ÈajNâæ¡æä!ÈajNâæ¡æä!ÈajNâæ¡æä!ÈajNâæ¡æä!ÈajNâæ¡æä!ÈajNâæ¡æä!Èa`Φn”¦!¦A£¶²Á%¤#@(Èaâ¡$áâáâ¡„ââá¤C¾¡æ¤ãœâÚ%€îA6 ÚáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáþâáâáâáâáâáâáXâ⡾!¾!ÚáâáX‚âXââháÚ!ÚAèaâ¡âÁü¡9A¾!¾Áþá;îá;èáèaÂã›ÒåÔåææáæáÂcÐÅ›èᮉæáèaÐ弉¼‰æ!<îæææáÂã;îæ!]¾ã6AâáX‚âáâáXâX ¾C6 ¾!¾X¢¾„¢ÈaâáXB:âæ¡„âââA:X¢`N:¾A(¾%¾%ÈA(Èá¤#ÚáþÚáÚáâ¡âᤃ%¾A(¾!¤Cä&È!¾æ¾!Ú%È!ÈA(:@”Ì€%ÚAâáþa^éµ^íõ^ñ5_ÿ¡þ úaùÁ<Á æuAðÀ ¾A:âáø¡œ‚þ!ÌâaBa"€âÁ âÁš@â¡`âÁb À  aXb† Ô!€â!JâÁ! AœBâ aÈ¡ À!   a¾!ÀàÚaPÖ!p@ÂA¤%¾¡âḡ¾!È@Xþ"J¾ÁÂa¤!¾!ÈA:ºA¤!¾AFä2 ¤ƒ%ÀàÚ!Ìa¡Ì!   aX¢ a¾¡âáÚ Ú!FÀÁ2Ôà„¢âÂA¤!Ú€%À €aâ¡ áâ!€%æÀ:@xÁàâᤃ%Ú!¾¡âá„Ââá⡾A@ÌF¾¡AnÚáÚáÚáÚáÚAnÚáÚáÚáÚ!¾¡¾¡¾¡¾¡äæÚ%¾¡¾¡œâþÚáÚAnÚáÚáÚáÚáÚAnÚáâáÚ%¾¡¾¡¾!¾%ä¦XâÚáÚáÚáÚáÚáÚAnâáXâÚáÚáÚAnâáXâÚáÚáÚAnâáXâÚáÚáÚAnâáXâÚáÚáÚAnâáXâÚáÚáÚAnâáXâÚáÚáÚAnâáXâÚáÚáÚAnâáXâÚáÚáÚAnâáXâÚáÚáÚAnâáXâÚáÚáÚAnâáXâÚáÚáÚAnâáXâÚáÚáÚAnâáXâÚáþÚáÚAnâáXBnÚAn¦A£Èa¦!¦!¶¡9§!áÚÚá@âáæ¾¡A(¾¡âá`Ž„âX¢¾!¾A(¤C(Ú!¾XB: X¢â¡â¡â¡â¡â¡â¡â¡â¡â¡â¡â¡â¡â¡â¡â¡â¡â¡â¡â¡â¡â¡â¡âáÚ!¾%Ú!¾%Ú!¾Á)¾¡„‚ø¡âä%¾AÌÁ¶a¦Á†ÁâáâÁþáè!ȚîáÊš¬½©¬¿ƒæþáâáæçá¬éÁ›Òšæá¾ãèÁ›Èúèá¬éa¬çá¾£¬çî¬ç¡¬ãAh¡X¢„âA:X‚ÌæA: „bÈ¡Xb¾!¾A(¾%¾¡`îâá„‚ä¡âáâáÚáâáââ¡âáX¢X¢Xâ„B:â`®âáâA:âáâ¡âáX‚¾Á)æáâA:¾¡¾!¾%È!ÚA(¾!¾aAðÀ ¾âáâáôuÀ ü^ùa^ÉàaÁ|Á" þ¡AðÀ þâ„‚¾¡âáâ!þ!Ô!È!¾CB¡ŒA€XáÔ"`6`  aâ â@ÇŸ`Xb„€ÀŽ  a¾!Ú!Ú!Ú`º(`ÔA:Èa AÈaâ ¾¡V@ @ÊA¾! â—âáX¢@@€Fáâ!„€ÀŽ@Ú! HÁ)Ú! H¡ºa t¾¡X¢ aâáâá0A&`¶ âàâá Aœâ aÚáÚ¡V@þÀá A⡾!Ú!Ôá’ ~I âá a⠺◡Ú%Ú :ÀxàX¢¾!Èæ¾!¾¡$AÊáÔ âAÈAA¾¡äæÚaáÛáÚAnÚaá¿¡¾¡¾¾²Úâ¿¡<^nÚáÔáÚAnÚaáÛáÔáÚAÊA<¾B^¾¡(¾¾¾ä&ÈA(¾¾ÔÔâÛaáÛAÈA(¾¾ÔÔâÛaáÛAÈA(¾¾ÔÔâÛaáÛAÈþA(¾¾ÔÔâÛaáÛAÈA(¾¾ÔÔâÛaáÛAÈA(¾¾ÔÔâÛaáÛAÈA(¾¾ÔÔAnÔáÚáâaªÉa¶Á¶¼aÈaªÉÁ¶Á>Ôä&¾Aá„ââáâáâáXBnâáÚæáæáÚáÈ!¾¡¾„BâaÈÂÄüÉ¿üÍÿüÅæ¾!È%¾!Ú%¾!ÚAÚ%¾!ÈøAâ¡B½yñâµû¦Žœ·mÛ¦)s¯]åp)9ÌA—’ÃÞ•7ÊáRr˜ƒÞ ‡9Èá r˜ƒæ9ÊáRr˜ƒÞ ‡9Èar”Ã¥ä09¼AsÃä(‡KÉarxƒæ ‡9ÈQ—’Ãäð9ÌAs£.%‡9Èá r˜ƒæ G9\JsÃä09þÌAŽr¸”æ ‡7Èar˜ƒåp)9ÌAoÃä09ÊáRr˜ƒÞ ‡9Èar”Ã¥ä09¼AsÃä(‡KÉarxƒæ ‡9ÈQ—’Ãäð9ÌAs£.%‡9Èá r˜ƒæ G9¼AŽP¹´ÞpUÉámЇª.%‡7ÊáoЇÞ(Êá r˜ÃŽ GWÚ¡ŽoX’ñhÇ7ºòx|Ã’ß`¦: "€xÌCh‡<º"®È£+òèŠ<º"®È£+òèŠ<º"®Èƒ™íˆ9âÑŽo´ãäˆG;ºÒŽo„]ùF<ÈA ~ăñà‡q¦þsœéüƒÿà‡#Úrl‚–”9æxP4ò(ˆ<º"Š’c‘EåQrÌ#ò˜t<äQr̃™ò(ˆ<˜)KÊ£ ä˜GWäAŽx8"ä˜G<ÚoÄñ G<Èq3ÄcŠè9,)v|ƒñhGA¾vÄãùF<¾oƒ™ä°d;âñx´£ ߈GVÈQoÄ£ÉÊ7âÑrÄ#+ýF<¾Qo¤–ü9æaÉvăùF<ÈQoÌ#íèÊ7ÚQ(B~0CAÚ¡ŽxÂ$/yrøA†êÐÕGuÈð 8‚~C;ÔQþoüãêhÇ7â‹£߈9âAŽvÄãñ GV¾Qv$+äˆÇ7ÚñvÄ£Q9&•xd…¢ßhG<¾Qvtåñ GA¾ÑŽ‚|#ßè 9 šv¤iG•ÚQr´ãíø†:Úñ®´#ä(9âñ¬|£+ßÈJ<ÈQ%Šfåò(HVºòx£+y/9Ú¼ÏãùFAÔv¤óøF<Úo´#ß°ä<Èñv$+ß(H;¾AŽx´ãñø†<ÚQyt@¼ðÈÑŽx´£ äˆÇ7²ò uÄãñpCÈámx£TÞ`ˆ7²áþo(Ãäð†2ÌAŽmLƒÞ ‡7”aä° ä° Þ  æ@Û@Þà ÙÀÛ@Û@Ó@Û@Û@Û@Û0 äà äà Ê`ä° äÀäà è Û@Ó@ AÓ@è ä° äà Ê`äà Ê`ä0 ä0 äð€Û@Þ  æ@Û@Þ AÞ  æ@Û@Þ AÞ  æ@Û@Þ AÞ  æ@Û@Þ AÞ  æ@Û@Þ AÞ  æ@Û@Þ AÞ  æ@Û@Þ AÞ  æ@Û@Þ AÞ  æ@Ûþ@Þ AÞ  æ@Û@Þ AÞ  æ@Û@Þ AÞ  æ@Û@Þ AÞ  æ@Û@Þ AEHÛð Žà å@©Â€Þ@ HÓèÓ¸ ÞP*ß° äà Ù@ŽßßÐÑêÐÌÔñð ñÐñwññð êPßñp’ÐßÐßßÐßßÐßßÐßßÐßßÐßßÐßßÐßßÐßßÐßßÐßß@QäÐóð YíPó@ó@ñð ñÐñ@ ÿPíÀþÁôÀŽÐŽðä “ÖÑðÐßÐñ@AòÀ]!YYäÐñ@õ ññ@ßäÀLß YQßPß YQäñ@]Aí`IŽ ñÐñ@íPäp–¤a°¢Ðñ@ñ ]1ßÐñð õ ñÐñÐñ0ßß`IßÐß`IäßÐäPßíßäÀLêäð ñð íäíPßßäð íÀLßßÐ]ñ íÐYaIßñÐñð p¼€fð ä߇`rëIrü0þò u4 w$÷0ÿÐŽÀ ~`ñð ]ññÐñ@´ðÑ–Ôñð –ô ñÐñPY1iíð íÐíð ñ ßÀßíð ñð ñð íäPíð ñð íPíYÑßíßßP߬ñ ñÐßÀñÐß@QäPßß@‘–Ôñð –D–Dí@ñð Y!í ßòð í@óÐäí@ñÐßБwYíPßíð ñð ññÐñÐñ ñÐñð YÑíð ñÐñð ñÐAÑþñ ñÐä0ༀ@ñÐßPíPä0äPíް ÓÀä0 ÛE¸ Žà Ù0 Óà ÙЫÛЫ½ê Ù0¬ á Ù0¬½Z„˺ Ó° Ó° ˺ Ëê Ù°¬½ÊäЫÛЫÛЫÛ0 Û0 Ø«ÛÐ«Þ ½ê Ù0 Û0 Û0 ä0 1¬Þ Ëú€Ãê Ù°¬8¬Þ Ëú€Ãê Ù°¬8¬Þ Ëú€Ãê Ù°¬8¬Þ Ëú€Ãê Ù°¬8¬Þ Ëú€Ãê Ù°¬8¬Þ Ëú€Ãê Ù°¬8¬Þ Ëú€ÓP„Ó@Î0 Ž@ØR%þßPúQ%úñ ŽÐ«Û0 ÛÓ° ½º Ó Žß0äßäßßÐßííßí ßYñ ñ íPó PßÐßÐßÐßÐßÐßÐßÐßÐßÐßÐßßßÐßÐííÐßßí0iß±ÀßíÀ3ÑL1’ð í@ŽÀñ ñ`  @KYñ í@]q  ñ äß ·{»Ññð ñÐßÐñÐßäÀLY!ßÐ×Àäð A±bAþ]ÑñÐñ@ñ íð ñà²ÐßPYQ‡ÐßÐaó’ÐñÐ]ñ ñÐñ@ÑßÐßÐíß@ñÐñð óð ñð íÐßßPííð ]ÑñÐñð ñð ñßßíPíäPí@ÌÔ]Ñßêð ñð óßÐäßÐäßÐßÐääРÀa`Iß ìiÆÌ1òò€ððð ò0üЊ0 x`ßßßðß`I´Àíð Yñ ñð ñÐ]ñ íßä0äþß ñð Yñ ]Añð ÑÑñ@ñÐÑñð –”ÑñßßÐñð ñð ÌÔÑñð YQßó@YäßßßÐííPíð ñ@íð íäÐñ Yíð YÑíPäíÐßÀLßÐÑ–4äßä íä ñð íßPíPäÐêßÐñð ]ñ ñêßPßíßÑßßPßPäÐ’0 ~Ìô íí`IßÐñ ÙJÓ½ê5=¬Û0 Û0¬þÛ€ÓÓ° 4½ 5½ Ó° ½º Ó° ÙÊËÊÙº 5½ ú ?ÓÛ`ÕÓ° Y½ Y½ Y½ Y½ Y½ Y½ Y½ Y½ Y½ Y½ Y½ Y­Û0 Žð*ôQU’Uò ¬¡ 1 Û­ÛÐ«Û íÐíÀLßÐßßßPßPß`IííßópŠÐäÐäÐäÐäÐäÐäÐäÐäÐäÐäÐä`IßÐßßßßÐßíPäÐßßÐñð ó@²ðñð íÀñ@ñ@ó@ó@Ìä]áÿ@ñð áþW æ ]ð äð ñð ñ ñ  åÐä Þ ÆÙ°bñð í@ßÐñð ñð ôQßÐßÐßÐß@êúAÐ ñ äÐßÐYñ ñ@ê@ßßäð íŽ ]ñ Y¡ß ÑêÐapâ ð YäßÐíä0äßÐßí`IíÐí0äßÐóð ñÐßÐ1äßßß`IíPßPäЖÔñ@ñð íð êñ ¦ö ñÐß`jñ YÑßßЊà ~`íþ𠡇pÆ•þü`c ° ŸxDcÀ Ê€fPêPÿð ñ ñ üäPß0ßßÐß`Iß@QßPíßßßßíð ñ]ñ ñÐÑßÐßíð ñÐß@Ññ ñð óÐßÐßíð ñЖô ñ Añð ]ñ ñÐñÐñð ñññ@–ô ÑßPí ßPYñ ñÐßÐñ ñð íPßßÐßßÐßñÐñÐñ ]Ñ–ô ñÐßÐñ@óð ñ ñÐþßPí¬ßPßÀLßííPßíÐ ¼€ð íð íääßßPߎ0 Î@öÓà Ãê ½ê Ž0¬Î­Î0 dß«ÎЫdŸ­ÎЫdß«Î0¬Î0¬Î0 ÎЫÎ0 d¿¬d? d¯øÎ°¬d? Î0 d¯ ½ê Ó@öÃê ½ê Ó øÓ@ö½Jö4Mö½Jö4Mö½Jö4Mö½Jö4Mö½Jö4Mö½Jö4Mö½Jö4Mö½Jö4Mö½Jö4Mö½Jö4Mö½Jö4Mö½Jö4Mö½Jö4MöÓà ½ºøÓ  ›ÐäÐäêPêÐþäްø½ê Óà ½JöŽÐßYñ ñð ]ñ Ññ@óÐßPêñ¾µûÖŽ\îÉÆy:¹N’CÛÈÆ4²áÉi8ƒ÷™9ÎÓÉlxBÛÈÆAÎãžmdcç¹O6¦q÷ÜÇ=ÎÈÆ4²1lL#îÙF<!‹ṽñhÇ7âñC°Ë ÷‡$:oÄ3 ûÆhÚÁ®o´ÃPäˆÇ7â1oÄãíøF<¾ÑƃßˆÇØäa(rŒæ£ùF;âñvŒ¦ñ ÈÚo´ãñ ÇhæA=‘cähG<¾ÑŽx´#߈Ç7Ô1šot@ÎðƒÚñѨã»Z*S›êÔ§Bõ©üè€"”á3¨ãñþ G<þÑCÑ‚íø¢ÈoÄãñÀÌh¾u|£†úF<¾ÑŽo´ƒñø†žÚx|ƒñhÇ7âñx|ƒ]ß`×7FÓŽx´ãí ‡¡ÈoÄ£ñøF<¾¡§oÄãíM;¾ÑŽoÄãí fôÔy´c4߈G;¾²vÄ£ñ G<Úa¨vèéñøÆí§-@Ôêß2’ÇVÀÀì0˜ÐŠ0 ~ß /Þ·íâ}H‹–,Y­bÅ¢%‹-Y´bÑ’E‹!/Z²hÉ¢%‹—BY±Ê¢%‹CZ²x1¤uò¤Â“¼hµbK&CZ i1¤u’ÖN^´vžlÅ‹ÖQ¦2iÅ’Å‹–,Z²bÑâE‹!-Y´ÊRØJV,†±ZÅ’ë$­“­dÅ¢%‹W,… Ê¢%‹-Y´dÑ’EKV,Y ÊjKf«“´dµŠ%«þ-Y´nÅÃ’xù@Nà·vã‘ûo¹yäæ‘‹¯]»xßâµ›G^»xäâ}‹GÎô·xß~kÜìxíâ}›m:^;éߤÇûï[¼vó¾ÅûÖ.Þ·xä¶8ï›@rñÚ™V'ð[¼o³ÂkœÀv¦¿ÅkGÙÚù&rLûÆ´oâùæºoÚùF:r¾‰ç›vúF:r¾‰ç›vúF:r¾‰ç›vúF:r¾‰ç›vúF:r¾‰ç›vúF:r¾‰ç›vúF:r¾‰ç›vúF:r¾‰ç›vúF:r¾‰ç›vú&rL#'r¾‰ç›vâ!§x¾¹nþžoâ!'žof‹ç›x¾‰ç›x¾i'žoÚ‘î›xÈ™-žv¾‰ç›v¤kçºo®‹ç›x¾‘n¶xÚ‰§x¾™í›x¾1­xÚ‰ç›î¡G‘dá…–“h‘)…Z‘I!†b¡…!Zdyˆ–“haH¡XZ¡E¦XZQHZb‘å¡Xh‰å$^d1Œ–XhiE–ÚQ§Gä¡gžxÚ)Ço¶Ùfgœ‘Dx¾‰‡¾‰ç›xÚQ'žoÔ‰ç›xÈ™çéșʹv¾¹ŽœxÈù¦oÚ¨xÈaT yÈ™çæ!'žÙL#G vâù&žvú¦oÚ¹î›Ùú&râi'žoÔùþæë̘gI:î›vâùFžÙ¾‰çȉ§o¾èÓ¾iç›v¤k'žÙ¾ˆœx¾1í›x¾‰ç¾‰ç›v¤û&žoâù&âxȈuà¨Óf‹ç›xŒ§uâ!'žo®û&žo:PÄ?ÌhçÔ9äÉ'§¼rËù¢Zà¼sÏ-ÿ‡~*}E”ñÃŒx¾1Ÿvâ™Êù¡œŸD·œŸøù‡ÉEÿ‡ŸÉù]r~@ç§x~,çGr~$ç§xé)çgzëù™\ôø‘œÉE—œÉù‘œŸøù‡ŸÉù±œÉùù‡ÉEÿ‡Ÿâùù‡ŸD]r~Šþç‡äøA9~HNt”ãÇ?D·G(h‡@È1v|c¦Á`<ÔŽo„¦!‡@ÚašÙ|#íˆG;2(oÄ£¦QÇ7Úñx´ãñhG<¾o´C íˆG;âÑÓcñhG<ÚñxÌF ³‰G;âñx|C ߈G;Lóx¨ƒ¦ùF<¾vÄãäˆÇ€âñyÄãiÇ70øx|#߈9æñx|Ã4íH;äÑŽoÄã¦i‡@Ú!v|#ß0M;Òy´ãñø†iÚ!vÈ£߈Ç7LÓ´CíøF<¾ašv¤òhÇ7âñ Ó´C íþG;¾o˜¦i‡<Úñx|Ã4íH;äÑÓ|£l‡@È1Ó|Ã4ßH;0H|c$‡i¾ÑŽo¬PäˆG;âAŽx´ãñ G<¾oäñPÇ7Lóx|#äˆG;Èv|ƒ¦!Ç<ÔoÄãäˆ9LzÜCø?&ÇÊñãü°?$ÇÊñorüÿ,Ljî¢ûÿDg9~üCt”ãG<ÚñMH§Žp„$€:TIÂíˆG;0ØŽx´C í9æ‘Á™¦߈G;âñv|£ßX!9âñx|C íøF<¾ÑŽo¬ð¦!Gþ<¾oÄ£ñ ‡@ÚAŽx|Ã4äˆÇ7Úñ Óc…lÇ!¾o#a˜Ç=ÑoÄãiG<Ôñ ÎF 䘇@¾oÄãñ Ç<òx|#ê˜M<ÚñÃ~#߈Ç72HŽx|C ߈G;âñx´ãí G<È1 ~c6òøÆlÈ!v#äˆG;âñ Ó|#íø†@Ô!(‚x0ƒ@Ú¡Žxbrï…o|áK}ðã2å‡8þÁ¿÷ò¾ü˜\$1 <˜¡ñøF<¾Áx|Ã4ŒG;âAu (Š9ÔolPŠ9fr (ßPÇþãArlp@ê˜M<È1Ï&äP<¾ÑŽx°x@ñøF<È¡Žx|c@ñ G<ÈÑu¸x@ñøF<¾rÄãñ G;âAu8YNnG<\r (äˆ96răÅñ ‡:fÇc6ñ ‡:6oÄãñø†“BŽÙÄã.Ž˜o H P-ü€x|#ƒíˆG;¾oÄãñhG<ÈašvÄ£êh‡@¾1 oă™M<¾oÄãñø†@È¡Žv|ƒßÈ7âÑŽx´cähÇ7foÄãí0Í7fvÈc@ßP<¾vÄ£äÈlâþñx|C íˆÇ7âÑŽx|#ƒähG<Ú!oÄãíH;¾ÑÓÌãlG<¾ÑŽx´#KÈ<¾o´#íˆÇÒ2oÄãíˆG;â±4ÌãñøF;âÑŽx,M óøF<¾ÑŽx´#KÈ<¾o´#íˆÇÒ2oÄãíˆG;â±4ÌãñøF;âÑŽx,M óøF<¾ÑŽx´#KÈ7âñxÌæ!ÇlòÙÄãñø†@¾ÑŽx|#íˆÇ7Ú!oÌF ߈Ç7Lóx|#KSG¿±ÂvÄc6ñø†@Úñv˜æñø†@Ú!y|c6!Ça¿þo@ ¢èÀ€âAŽÙăÅŒÇ7âAŽvă.ŽÇ7â¡è ƃñ`q‹‡oˆ‡vø†xøÓø† j‡oÀ ‰‡oˆ‡Ùø† šx h‡oˆ‡oˆ‡oˆuø†xøÓøø†xøÓh‡xhr0Ùø†x˜oˆ‡oˆ‡vø†v8rˆ‡oˆ0˜‡{P„ ˆo0o ‡xh‡oÀ oˆ‡vˆÙˆ‡o˜‡vrñÚÅ‹G.Þ·xßâ‘+Ø.^»xßâ}‹×®à·xß ¶+Øî[¼vß ÆkWð[¼v*Û}‹÷-Þ·xäH¶û¶R^¼oó¾‘#ù\¼oñÈÅ#G²ƒ$e~Ìl§.Þ¡þR§R­jõ*Ö¬Uùu4 ™vñÚÅûö/¹xßÚðÜ3!X‘üÖî[»o$ãµ#® ¹xêâµûÖî[@Ã|C<¨ƒ1@;@ÃÄC;Ä4 8@ÀC<¨4 À7„ƒ$CAì‚´CµC8@#|C<Ã|C;|C<¨C;|C©ÃX:CAƒ¨C7€4Ä7´C•TH…©¯È„À(0•ªaˆ”/@€P üÈþQl@ÊÀƒâA£ð#߈G;âaŒÌ*`9â¡LD`ØBâ´Ã Ð@< 1ƒ| G<¸±8  øF<¾oÄ# èëð ƒ´ãñhG^Èq @$H0`ppÀâÑŽ4@ ¯[þ@< !£@c ù†A¾] ñøF<È1oÄãñhG<¾a”v|£߈‡]Úr¤ßPˆAòäÅ£ß ‡Q¼ÔŽoÄÃ.yiÇ7ÚaoÄãF!G<Úa”oÄ£߈G;¾a”vä!G<ÈoäEäè€#”ÄãñhÇ7 ò î|Ã(ÊØ„§øA~äåñøF<Ì‘€/`áèÂ<È…ÄãópN9 1€o´#íø†A !rÌ#/í G<ÚoÄãñP‡AÚñxcFù†QÈh ߈Ç7âñxcyùF;âñx|#êhþ‡AÚárÄãñhÇ7âñv|£߈G;âAŽx|#íˆÇ7âñx|#äˆÇ7âÑŽx|#߈Ç7âAŽx|#íˆÇ7âñx|#äˆÇ7âÑŽx|#߈Ç7âAŽx|#íˆÇ7âñx|#äˆÇ7âÑŽx|#߈Ç7âAŽx|#íˆÇ7âñx|#äˆÇ7œÓŽo(äíˆÇ7 ò ƒ(äñ Ç<âAƒ(Ä9ß0H;Œò ƒ´ãFi‡sÚñ rÄãíø†B¾arÌÃ(í0Ê7ÚvÄ£ßh‡:¾oÄãñø9âñx´Ã qN;âÑŽx´ãäˆþ9Œ€{ÌC0J;â¡x|ƒ;äˆÇ7œó …Èãí8R;ÈoÄãñh‡Q¾o(ää0È7âAŽx´#/íø†B¾ÑŽoäñ Ç<ÈoÄãùÆ<âÑx¨Ã ß0È7âñx(äñøÆ<òÒŽxà íˆÇ7æv|à íˆÇ7âAzăóˆ‡B¾rD!ñøF<È1v¥i‡Q¾rÌ# 1È7âAŽyÃ(߈Ç7œ£oÄ£ù†QÈC|#í0ˆèqQl€ñøF;¾r¤ñhÇ7âñ ç´#y ‰G; "väñøF<þ¾u8§F‘Ç7òòx|#í0H;¾¡î#íø†sÈ!ÚáâáÚ¸£œC ¢üÀ ¢Ô!A©>…L –¡;–Dp þüa®€èá RøÜa:@”ÁÌ€âáâáþá B!â¡âÁKââáÚÁ ¼D ââA!¾Á ÀÁ(¾!æâá ‚ÚaÀ(Ú!¾A> ¾!¾¡¼$Ú!ÈA!¾Á(È!¾âAâÁ.ŒBâÚáÈ!ÀÁ ÈÁ(¾!/¾¡œ£ä㜃ä¡þœƒâA!âáâ âÚáâá ââŒâ bÈÁ È!Èá"ÈaÈáÚ!Ú!¾A! ‚âጂâá ââáâáÚ!y¾!¾!È¡üÈÁ9¾Á ÚáÚ!¾!¾!¾ÁáSèᾡâ¡â¡â !°œƒV@¼ &à@HÁ ¾¡@àH¡¸`8@Ú &à¾V@(  €Ú!„@À!@’â! "@ à¾Á ¾aÈ¡ŒââþA!¾!¾!¾¡ò¢ ⸃¸ãæáâ¡äãæáâ¡äãæáâ¡äãæáâ¡äãæáâ¡äãæáâ¡äãæá⡸£¾¡È!æâaÈá ¢â¡¾!y¾!ÈáÚáâá ââáâá ⌼¾¡¾¡¸cÈÁ ¾Á.ä¡âáâáâáâ¡âŒ"È!Ú!Ú!Úá5å¡âáÚ!¾¡¾!¾!¾¡â^óÔ¡ îA6 ¾¡ÈAÚ!ÚÁ ¾Á ¾á5¿¡¾!¾Á È!þæÚáÚáâáâá^óâáâáâáâ¡ ‚âa¾¡ŒâÚ!¾!¾Á(ÈÁ(â5¢ ¢ âÚAÚ!¾!¾Á ¾Aôâ ¢Ô!¾!Úá5¿!ÚÁ(Úá5ÉÁ Ú!ÚáÚ!Úá5É¡¾!ÈáÔ¡âá^³ââáÚ!Úá5¿A¿Á ¾!È!¾!¾¡â¡¾Á ¾AâáâáâÁ B:€Cç⌢ ââáìâÚá âÚáÚ!¾!¼$Ú!Èa¾a¾Á È¡¾Á.âáÚáþÔÁ ¾!¾!ÚÁ Ú!¾!æ"¾!¾A¿!¾!ÚÁ È!ÚaÈ!¾!¾¡¾!ÈAÚ!¾A â:ÀxÌàÈ!¾!?…¨À;œu¨ þØðáb0Ùaú ðÀ B âÚá⡾!¾C â ‚(Ú!¾!Ú!¾Á ¾¡Ô!ÚA»¡â2à¾!ÚÁ ¾!Ú⡾!Úá ¢T!â B!´âAÚâŒâ8ôÚ! BÔ!È!ââþ¡¾¡¾¡¾¡¾!¾!¾!ÚÁ È¡¾!¾¡ ‚âáâæ!¾Á(Ô!¾C¿Á Ô¡ ââè!È!¾AÂ(ÚA¾!ÚÁ ¾¡Œâ âæ¡ ¢¾A!ÔáÚá â^³Að⌢¾A^¿aâAÁSøþ!¾!Ú ¢ÖaT ”âáâaP¸!r  A† Ì ¼ä5¡aâá "záÌa*` †€Ì!F ¾Á<@ˆ"PÌ!p  a ¢Â!XþÌ!¾C¿Á ¾ ¢âá ââá⡾Á Úáâáâáâ¡âáâá”âáâáâá”âáâáâá”âáâáâá”âáâáâá”âáâáâá”âáâáâá”âáâáâá^ó ¢^óâá âìâÚáâá8´â¡ ¢âáâ¡ ââáâ¡ÈAÛ!Úáâá ¢Œ‚âA¾Á Ú!¾aÚ!äáâáâ¡ ‚⡾Á ÚáÚAÈ¡ ¢âæáâ¡âþ^óŒ‚â!âDaèæ!¼$Ô¡âá ââá^󿡾Á ¾A¿!Ú!ÚáÚá5Û!Ú!Ú!¾A^ÛÁ ÈÁ Ú!¾!ÈaâáââÁ.¾!¾!ÚáÚâáâ⡾á5¿!ÚáÚáâáâáÚáâ¡ ¢È!Ú!Ú!¾¡¾¡âáâA!¾!âÚ!Ú!ÚáÈaâáâA!¾Á ÈaÚÁ(ÈÁ ¾!¾!ÚA¾Á È!È!¾!¾!È!¾!¾!¾Á Èa ¢ B!âá B$þAÚ!¾!Ì`â:àâáâA!Œ¢¾!È!Ú!ÚÁ(ÚÁ(¾¡^³â¡ŒâÚAÛAÉ!¾á5Õáâ¡â¡âáÚ â^óâáâ¡âáÚÁ ¾a¾!¾Á(Èá5¿a ¢Œâ âÚÁ :@†Âà5¿A”õSŒ Z—á–á:ð"Å@PA"ÅàØ¡:@”ÁÌ ÚÁ ¾ â ¢ B!âÚ!¾CBâ¡âá ¢âáâáâáÔ!º!@T ‚¾¡æô ¢âþâáBÚá5¿¡âáâ"¾!ÈÁ(¾âaÈ¡¾!ÈÁ Ú!È!¾!ÈáÔá5ÛÁ ÚA^¢âáâáâaÈ!¾!ì‚C¿Á ¾!È¡âáâá â ‚â¡âጢô âÚ!¾!¼DâáÚ!ÈaÈá^³â¡âáâæÚ!æâA! ‚â:@xÁ  ¢¾!È!¾!¾¡¾¡ŒâœÁ>…þáâ¡^óâj €X!¸A’!Èá A¤¡âÀ(Ú!þ¾A a¾Á ¾AÚAâÁ  °aÈ@âAvaæ! â¡vAÚà ‚€ °!¾!¾!¾¡âá8ô^óâ¡ ‚âA! ¢âáŒââáâáâá⡌ââáâáâá⡌ââáâáâá⡌ââáâáâá⡌ââáâáâá⡌ââáâáâá⡌ââáâáâá⡌ââáâá⠢⾡âáâ¡âA!â¡^s¾Á ¾Á ¾A!â¾þ!È¡ ‚¾¡â¡â¡ ‚âáÚ!Èá ââáâ¾A!^³¾!Ú!Ú!¾Aâ¡ ‚â¡â¡ŒâŒ‚ â┌Â.âáÚÁ ¾!èá$¡ â^“â¡ ¢Œ¢âáÚÁ È!¾Á(¾!¾Á(Ú!ÈÁ ¾!¾!È¡âáâáâA!âáÔ¡¾!¾Á ¾!ÈÁ ÚÁ Ú!Ú! æáâá^³ŒbÈÁ ¾!ÈÁ(æâ¡âáŒBÚ!¾á5¿!¾aÈÁ Ú!Ú!È!¾¡Œââáþ^ó ‚Œ¢ ¢^óÚÁ(¼D^Û!¾Á(Úa¾Á(ÚÁ(Ú!Èáââ¡â¡Ô!¡"žÀxaæÅÛ´!^»xßÚ9ü\¼vÉÅ#ï[ühÁ+üÉþö¿Âøá\ð~¸ƒÔÐÇ8¡Bx`ßß üíNA üß°ñ A±ßßÐßíä íð ñð ñ ñð ñð µÑßß@ó ä ßßß@ñð ñð í íàíð ñþð íð ñ@óßê°òÐAóÐñð ñ ÑñÐTò ñÐßä ò ñ ñ ñÐÑßÐñð ñð ÑTRß0ñ@ó ß0íßíí@ñÐßÐñð óÐä ßß ííð ‹ñ ±íð ²ñ óð ñÐòäЊÀ xíäßßß ß@%ÊàøÄôðíð ‹ñ a )a Ð0ê€ í0È0ñÀ  ßÐåð ñÐß ×0ñ @íÐ0þê  ä (±í  ß °ñ Üð í` Ð0íð ñ Ð0ä ëÐß` ð Ð äêÀ ñ »0ñÐ  ±í ð ñ íð æ@ ßí Ð0í€À0ñ ߟpñ °ñ ñ êæ@ ÝÒ€ßí  Ý Ò€ ÑÝ ÉÐßÐñ ð ñ@áÒí ÜÒ ñ° PÐ ßÜÉð ñð Ð ä ‹!þá Òð êP æA ¬á ÒÐêPßÜÉ íð ñp ð ñ ÆPñ àÀ0ñÀ  ñ Ð0ñ€Ð0ñ@ñ"íð ò ñð ñð !ñp¢°óÐñ@ñ ñÐß äíð ñ yH%ßíð í@ñð ä‹ñ ñð í@Añ°ß íàíð ñ ó í@ ü ñ3— Ó0sÚ¡Ž@ñÐ’ðä° ßð 50$À Þð ÏPpÛà IÀ · ß Æþ Ù0si°O0ß àÞ Äàe0ä° ÜPpÛà IÀÄ ÏB@Û° Ù° Û°  Ž ñð ñð ²qêàí`ñpŠÐä0Ÿßíð ííäàä ßíð ñð ñ@Tò Ѳ±ßß°Ñyø ñð ñ@ñ ñð ñð ñÐßß‹ßßííð ±ßíð Añ@Ñ’  x`ÑꇀÜÚ­ÞÊ­-Ð~âêO-püP €þ÷¡spüЊ  x²Aÿð ²A üÐñ°ñð ñ ñ ñ@ñ Ñòàßäííßí0ß  !í íóð ò íð ñð ñÐñвñ ó@ßäð íð ñ TBñÐñ ñ°yØ¡ñð ‹¡ñð ñð Añ íä‹!ßß°²Ñóð ñ íßßßß°Ññ°ÑñÐñð ‹ò ó@íPí0äßÐßäð µñ TÒßвáÑþŽ0 ~ ñÐñð óð ±ñ ñð êÐÎàßzôÀµÑßÐÆßÐêÐÆ í  0ñ 10ñÐ2PØ@æ@í ßÐÀ0ß  à á Òà1PØ æ@í ßÐÐ0‹À0íÐ  ñ`30ñ @Aí íð Ý Òë0ÐÐ0ó@í#PßÀ  ê0#PØ æ@í íÝPñð ‘ êß°Ð0í ×0í@#€àÀ €ßþÀ  äð ¡íÐ …°‘ ñ@1PØ æ@í ä%€ ê`„Ðñ0(€ æ à %€ ä`„ #0ñ`10(±ß  í0(ë8Ð0ñÐßää1PØ@æ@ê€Hpæ ê %€ ä`„@ñ0%€ æp ß °í`1PàÀ  ñÐ0ß #€à`€ñ ð íÐ ñ òÐñ@ñÐñ@ñð ñ ñð ó Ð²ÑAÑþAñð í ßßÐêßßÐñð í ²!ä ß0ä‹!êÑñ@ñð ñ@ñð í‹ñ í@ ÿÐñð ÿСÛ0 : êAŽÐæ@3— 3ç 3÷ Ûà ä€CÙÀ¡Óà 3gNá Ó0 äСÓÀÑÓÀÑ8´ Þ° ž 3ç8” ê 3‡C3§ ä°Óä° Ó° Ù° Ó° Ù0sä€Cä ´Ð²ñ ñð ‡äàÐa0ó ßßßß ó@ß ßÐó@íí ß ßßß þßÐñ ‹!íð°ß°ñ@ñ ñð óð ²Ñóð ²Añ°òÐñÐñÐAßàßä ß ß°ñ ñð  Ê€fð ä߇ºÎÍ­ü-à-PÝÖ}Ý÷!Ú½Ýý€üЇ0 ~`ß ÿð íß±Àß@ñÐñð ñð ñð ñð ñÐñ ±ûLñ@²ÑñС äí  Aóбñ ûܲAñ ñð íð ñÐNáßßßÐßßßÐä ä íàßþ ä íð ûÜò@íð ñÐñÐß ßíß0íäßßß@ñð ñ@ñвñ íð ‹!íð ñð í@û,‹ñ ‹äíð ñð ²ñ ñÐñ ñ°¢À x í°Ïíð ñÐßÐñð Añ  Ž@”^é–ÎßÐßíàÆß ê` Ð0Ñ p¤O0ñð á  pß Ð ñ ð  €I Ð ñB@àGÐ0ÑÐ0íð ñ íp¤O0ñp þ°Ï퀤ð iGúÐÐ0ÑñÀ + P á pêÐI@@ Ý ÏB@óíð Ð0ßÐê ßÐ +  à I @ ê@Ñ ð,Ðñ@á €pß  á pßÐܰ Gà êÄÞ ñBÀàGPßÀ p¤O0äíß ð ñð ݰP:ð ñ Ðñ@ó ë  pñ  ø 1€ßBÀàG ܰ þ(€˜Gº I@@ Ð ñð ݰ0:ñ ß×0í ä òàíð ¡!óp¢Ðßßíð ±ß°Ï‹ßàßí ßàßÐßÐßí@ñÐmNñ ñ ßí ß ß  â±Àêäð;ýþð? Ê@Ê ä ’À;=sÙ° Ù@1mZ¶lÛ $wp9gÉ)ÜFâ6rÓ&C•íYä¦mó–í ¹iÛ²m#hЛAÓ zÛ–í`6Û¼ÅsÔ*Þ·xßâýŒ'©ÐxfþæÝµaÞ·xßⵋ÷-Þ·ví~VýFôg;yäˆ~kï[¼vñÚ}‹G.^»xäâ}‹×Nºª?Éýl§õg»oñªþl÷ (¹Ÿß¾ÅkG.^»ŸU¿Åû¯ÝÏo?ÉÅûV5žºŸ Ãc†è7IÿLŸFZµizúøÝã;¶¸²W›æg:vEÊð˜‰÷­Ý·vÿ~~›GN¿Ÿíⵋ§nÞ7­ßâ}‹÷ è·xßô~k÷­] P„aÀ3h‡)"‡ø2¢~ˆrˆ‡vø†xø2j‡oh‡o¨ uˆ‡vˆ‡oø‰oh‡)"‡oh‡oh‡x ‡x¨ŠŸøT#‡v˜rˆ‡oˆrˆ‡oˆ‡oh‡xø†xø÷ù†ªø‰v˜¢o`¶vø‰vˆ‡vø r £oø rø‰oh‡xh‡x ‡oˆ‡oø‰vø©ý†Ÿ˜rh‡xh‡xh‡)š‡o˜rø‰oˆ‡oh‡xø†xø†vø2j‡xø†)ú†Ÿ ‡oP‡xhþ‡xø†vˆ‡v˜¢ªˆr¨Šo¨)j‡xh‡xh‡)ú†xø†Ÿ¨Šoh‡x˜‡^Àø‰oh2ú†vˆ‡o@µy ‡y ‡y ‡y ‡y ‡y ‡xø†x¨Šoˆ‡oˆ‡oˆrø rˆrø‰oˆrˆ‡o¨Šxø†xh‡oˆ‡o˜rˆ‡oø‰oˆ‡o˜¢ªˆ‡oø‰oh‡xø†vˆ‡vø‰vˆ‡oh‡xø†vˆ‡oø‰oˆ‡o@µo˜¢vø‰vˆrø†ª £vˆ‡oˆ‡o¨Šxø†vø†x Zkrˆ‡oˆ‡o¨Šo #÷ù u µoh‡xø†Ÿ ‡v˜¢o˜¢oˆ‡oh‡xþ¨ Tk‡Ÿ 22ŒŸø†Ÿh‡xøTk‡Ÿø†vø†xh‡Ÿ ‡xøTû†)ª rP‡xh‡xh‡x ‡Ÿø†y ‡Ÿh‡Ÿø†xh‡)j‡xP‡)"‡Ÿ 2ú†vˆ‡oˆ‡o £yø†x¨ yh‡Ÿø†ª˜rh‡xø†ª˜¢oø rø‰vˆ‡vø‰oh‡x 2j‡x ‡Ÿ¨Šo¨ ºý‰o¨Šyø†xh‡xø†xø†˜z„ˆ‡v˜¢oh‡xø†x ‡)ú†ªˆ‡v˜‡o˜rø‰v˜rˆ‡vø†xø†xø†xø†vˆ‡o £oˆ‡o £vø†xh‡Ÿø†vˆ‡y ‡xø†xø†þv˜‡oˆ‡vˆZø‡vˆ‡opz˜‡)R‡r(o0gI˜"Gø‡iP†iP†iP†iP†Î™gP†iPgh e˜e˜epP†iP†ÎQgh ep†iP†Î™e˜g˜ÎQ†iP†iP†ip†–P†iPg˜e˜eèeh]eèœiP†iP†ièœiPGàZk‡xuh‡oˆpƒy¸Iè€vˆ‡oˆ‡oˆ‡o £oh‡xø†xh‡oˆr £vˆ‡oø rø rh‡xø†xø†xø†xh‡xø†Ÿh‡oh‡oˆ‡oh‡o`¶oˆrˆ‡v˜"rø†x ‡ŸPþ2ú†ªø†x ©%‡oø‰oˆ‡oˆ‡o £oˆ‡oèEp?0ƒvø†ŸP‡C¢g‡öh—viç‡PeÀƒ02ú‡oh‡xhr ~ £vˆ‡oˆ‡oˆr˜‡)"‡xø†xø†xh‡oˆrˆ‡oh2"2ªŠ)ú†vøfk‡xh‡xø†x ‡Ÿh‡Ÿhy ‡xh‡oˆ‡vø†)j‡oh‡oh‡oˆrˆ‡oˆ‡oˆ‡oh‡)ú†Ÿhr˜2ªŠo˜‡xh‡x ‡xh‡xø†xø†xø†xø†ªø‰ª˜¢ª ‡ŸøTk‡xø†Ÿh‡xh‡x ‡yh‡oh‡o £oø‰vþø†y˜"rø rˆ‡vø†vø†x ‡)"‡yˆrˆrˆ‡oˆrˆrˆrˆ‡o £oˆr˜"rˆrèGP<€o˜¢oˆ‡oø‰oˆ‡oˆ‡oˆ‡oZTk‡xh‡xh‡xh‡x ‡yˆ‡v¸»vø rø‰v ‡yhTû†Ÿh‡Ÿh‡oˆ‡ªˆ‡o˜¢oø‰ªø†ªø†x ‡yø‰oˆ‡vø‰vø‰ªø2úrˆ‡oˆ‡v˜"rˆ‡vø†xh‡Ÿø†Ÿ 2ú†yˆ‡vø†ªP‡v˜¢o˜‡xh‡Ÿh‡o¨ yø†xø†xh‡oˆ‡oˆ‡o £v˜¢oˆ‡vˆ‡o µvrñ¾þÅS÷­]»oíâÅû¯Ãxêâ}‹‡0Þ·xäâ}‹÷-bÄo ãµûÖî[óCHÂ0à|CÃ7ðÃ"'žvâù&žv¾‰§y¾‰§x¾‰§râù&žvú&žoâi‡œþx¾‰ç£oâù†œx¾‰§o>úÆÐxÚ‰GžoÚ!'žvâi‡œ‰Ú ©xÚù&žoâù&žoâiGžo晨x¾!'žoâi'žoâùæ¦vâùF v¾‰ç£oâ!§GxÁC€oâ!g¢vjg¢vâiç›xȉç›"'žo"gžoâi'$u¾!'žv¾ùè›x>ú&râQç›x¾ ‰œxÚùf¢vâù(ræ¹é›x¾‰§x¾‰ç£oâ!'žväi‡Ú‘ç›x¾‰ç›x¾‰ç›¬È‰§xÈù&žoâù†œx¾‰§‰Úù&râiç›Èhž‰¾‰ç›‰Úù&r&úfþ¢v¾è›xÚ‰‡œx¾™¨oæig¢vâ!g¢v¸è›vjç›x¾!g¢oâù†œx¾™è›Ú‘§xȉç›vâiÇPyȉ§¾™è›‰È é›x¾‰§‰Ú!'žo>¨oâ!'žv¾‰ç›x¾‰çnÉèrBú&žoúè›x¾iç›x´ãñøF<Ú’väñ G<¾1‰|cñ ÇD{(¢ñ Ç<Úv#í G<ÚoÄ£ßhÇ7âÑŽ‰|D ߘG<ÈÁ­oÄãñhGHÚoÄãñøF<¾q“oÄ£ÉÊGBÒy|C íˆ9æÑrÄþ£ßI;âÑrÄãQG<Èoªß0Ô7ÒŽoÄã7ùÈ7âÑã&®H;BÒŽoêñhÇ7Úñx£äH;¾!vLä#iÇ7ÈoLäñpÄ7æAŽxà ô¸‡(6 oÄ£ÜúÈ7Èv|#íG;ÒŽx|#È7âñ‘‰´C íˆG;âñx|D䘈kâÑŽo#ßÈ7È!văóˆÇGÈ!v|ã&ßøH<>vp«7Q‡@:àˆaàÁ !ù†$¬tO|æSŸúäG1 <˜A íˆÇ7þ!oăùH<ÈoÄãþñøF;¾r|£߈9âñx|#ßH;Bò‘x´#߈Ç7âñä!™Ç7’•o´#߈G;âÑŽ‰|#߈Ç7Ú!vÄã‰Ç7ò|#íˆÇ7&ò ´#߈G;BŽx|$߈G; ÕŽ‰´ã&ä¸É7âñx|£ñø†:BBŽoLäñ G<¾ÑŽoÄã!ùF<Ú!o¤ñh¢ëòvÄã!‡@¾!oăñh‡<: ˆaøñhG<Ú¡Žx£ßhG<¾‘Cµ#߸I;nòx|£Ü"G<ÚrLäñ˜Ç7òC þ߈9>’odåñhG<¾vÄãñ G<Úvã&ßPG<¾oLä#ò˜H;ÈáØx|#ßhG<È1‘oäêh‡@ÚñvÄãi‡@¾rÄ£ù†@¾Ñމ´C äˆÇ<¾!oăñhG<¾oLäñøF;âñ|£ßhÇ7&òx#$íøF;&BrÄ£ñø†@¾ר#íˆÇ7âÑŽx#ßhÇ7Úñ |£ñøF<¾1rÄãùÆD¾oÄãñøF;âñx#ߘ9Úo„¤iG<¾’v|#ßh·¾Ñ´#íþøF<ÈvLäiG<¾o¨£ñ Ç7Ú1‘vÄã#ßh‡@ÚoÄã˜GBŽx|ã#ñøF<ÈoÄãñhÇD¾1‘o„„7iÇD¾vÄãò˜È7âAŽx|#߈Ç7BŽx#ßhG<¾ÑŽx´ãñ ‡:Úo¨C ßè€"”3´ãQÇ!öyzÔ§žP„2ð`†oc"ühG<Ú!v|#äH;&ÒŽxcߘ‡c¿1oÄ£ùFV¾oÄãñø†@È1‘v|#ßH;¾ä!G<Èop«߈Ç7B´C íøFþ<ÚoLäñø†@¾vˆ‡vˆ‡o r‰oh‡oˆ‡oˆ‡vø†¬ˆoˆ‡oˆoh‡oˆvˆ‡vˆoˆvø†vø†yˆoˆoˆ‡vˆr˜‡vˆ‡oˆ‡oˆvˆ‡ohP‡vø†xÈ ø†xø†vø†xø†›øhø ‡yˆrˆrèEP<€vøø†‰ ‡‰hrˆ‡¬ø†x ø†xø†xø†xh‡oˆ‡oˆo˜øˆoh‡o‰v¸‰vˆvˆoˆ‡op¬oh‡orˆ‡vˆ‡v˜ˆo˜r˜ør˜‡xø†vø†và–oˆ‡ˆþ×øˆx ‡xh‡oˆ‡oˆ‡vøhøøø†ø†xh‡P‡x ‡xø†xh‡‰ø†vø†xh‡‰ø†xørˆ‡oˆ‡vˆvø†›‡vø†xø†vˆo˜r˜ˆv˜r˜‡xø†vˆ‡vˆoˆ‡ˆrˆ‡oˆ‡o˜ˆoˆ‡vˆv˜ˆo hrp¬oˆoˆ‡o¸‰vˆø†xh‡› hCù†xø†xø†v ‡xø†huør˜‡oˆoˆ‡oh‡xh‡orˆ‡vøC‘‡oˆoˆ‡vˆvr¸‰oˆ‡vø†xhh‡o PPþø†xøø†xh‡xø†‰ø†xø†xø†xøCi‡oˆ‡vˆ‡o˜‡v¸‰˜ˆvˆ‡oˆ‡o ‡øh‡xø†xøˆoˆoˆ˜ˆv˜uø†xø†xø†xøø ‡x ‡xø†xø†vøh‡xh‡xh‡oˆ‡oˆ‡o˜‡oˆo˜‡xø†‰h‡‰P‡vø†xh‡x ‡yrˆrˆ‡vø†xhh‡oˆ‡vˆ‡o˜‡‰ø†xh‡›ø†xø†xøˆorˆ‡vˆuø†xh‡‰h‡xhø†xøh‡oˆ‡CP‡¬ <ˆ‡yP„ˆr˜ˆvˆvˆoˆø†þxø†xP‡‰ørˆ‡oˆr rˆ‡o˜ˆvˆ‡vˆ‡o ‡xø†vˆo˜uø†ø†xøøˆxø†xhp›ˆ‡o˜ˆv ‡møø†‰øø†vˆPeð3ˆvP‡x8„ÔËQ­~èE<0ƒx˜‡oˆ‡oørø†¬¸‰oh‡xø†vèÐxø†xø†&º rh‡oˆ‡v€h‡m‡xh‡ohh‡xø†x ‡xø†x ‡xøh‡‰h‡xh‡xø†xø†vˆrˆ‡vˆvˆ‡vˆrø†vˆoˆ‡vˆoh‡xø†xø†‰ ‡oˆ‡oˆoþ‡vˆoˆ‡o˜ˆoˆ‡oˆ‡y ‡x ‡vø†yøø†y ø†xø†vˆ‡or‰vˆ‡oˆ‡oh‡%‡v‰oˆ‡oˆoˆr˜rˆrh‡oˆ‡o˜rˆ‡oˆ‡vP‡vø†vˆ‡oˆrø†vÒx˜‡PZð˜ˆoˆ‡˜ˆoˆrˆ‡vøyˆvˆ‡ˆ‡v˜‡oˆ‡oˆoˆ‡oh‡xørh‡h‡xø†x ‡xø†vø†x ‡vø†xø†v˜‡oˆ‡oˆ‡oh‡oh‡oˆ‡o˜ˆo˜r‡ø†vˆo˜ˆoh‡‰ ‡ø†xø†xø†xøˆ‰ ‡vþˆ‡oˆvˆ‡vˆvˆrˆ‡oˆvˆ‡ˆoˆ‡orˆ‡oh‡oˆ‡vˆ‡vˆ‡o‡vˆ‡o¸‰oˆ‡oˆ‡vˆv˜ˆoˆrˆoˆ×èÐoh‡‰ø†xø†vˆ‡o˜r˜rø†vˆ‡oˆ‡vˆr0×orh‡oøˆx ‡ ‡xø†vø†ø†vø†‰ø†ø†xø†x ‡o‡v˜ˆvˆ‡oøø†x ‡xø†xø†ÒoˆoP‡x ‡ý†yøø†‰ø ‡xø†xø†xp øˆxø†xø†x ‡vˆohø ‡xø†vˆ‡o uˆo€y¸þEè ‡vˆ‡oˆ‡oˆ‡vˆoh‡xø†xø†xhh‡oh‡oˆrˆ‡oˆ‡vˆ‡ˆ‡oˆ‡oh" ‡v¸‰oˆ‡oˆoˆ‡vˆ‡oˆrˆoˆ‡o˜ˆvø†¬ˆr˜ˆv˜‡oˆv¸‰vˆ‡yø†‰ø†x ‡oh‡x smøø†x ‡oh‡oÒv‡›  ‡oˆrr˜ˆoˆ‡oˆvˆ‡oøh h‡‰ ‡vˆoh‡xø†x ‡x ‡vø†yøøø†Ch‡x ‡xh3˜‡{„ ‡xh‡o‡vˆ‡oh‡xø†xh‡oˆrˆ‡o˜þˆoh‡‰h‡ø†v¸‰vø†‰v˜røø†xˆ‰xø†vˆ‡v˜‡oˆoh‡xh‡xh‡xø†‰ø†xø†v‰o‰oˆ‡oh‡x ‡xø†xøˆ‰øh‡xh‡xø†8^À3ørˆ‡oˆ‡CØQqÎQ~èEP<0ƒvˆuˆˆrˆ‡vø†xø†vø†x  ‡xø†xø†xøh ‡xh‡oˆ‡oˆ‡o˜ˆvˆuø†x ‡xø†xø†xørˆ‡vˆoˆ‡v0Wh¢oøˆoˆ‡oˆ‡vˆorˆ‡o ‡xhy˜ˆoˆoˆ‡oh‡x ‡y˜rþˆ‡o˜‡x ‡yh‡o×h‡xø†yˆ‡o‰or˜‡h‡›ø†xhø†xhø†xø†xh‡›h‡oh‡oˆ‡v˜ˆoˆ‡oˆr˜‡vø†x ‡xø†xø†x ‡y0×v ‡xh‡x ‡yˆ‡vrˆ‡oh‡oh‡oˆrˆrèIP<€oh‡xh‡x ‡xøh‡xhr˜‡xø†xh‡o ‡xø†xh‡‰ø†›ør˜‡xø†xø†x ø†xh‡‰h‡x ‡yh‡ý†y‰o˜‡vøø†xh‡xP‡o ‡yˆ‡vø†xø†xh‡x ‡yh‡oˆ‡vø†xø†þx ‡yø†yˆvø†yˆoˆ‡v‰oˆ‡vø†xø†xh‡o˜ˆ¬ø†x ‡xh‡xh‡xh‡oˆ‡v˜ˆvˆ‡o‰oh‡xh‡oˆ‡oˆoˆ‡v h‡oh‡oèÐv˜ˆoh‡oˆ‡o˜ˆoˆoˆrˆoˆuÒv øˆoˆ‡oˆ‡oh‡xh‡› ‡ø†%‡ ‡ˆvøø†› ‡oˆ‡oˆ‡o˜ˆoˆv˜ˆvrˆ‡oˆ‡oˆ‡oˆvøø†x ‡yˆ‡o¸‰ˆ‡o˜ˆ˜ˆo˜‡v˜ˆoˆ‡vˆvˆ‡vˆo˜ˆoh‡xøˆ‰ h‡xh‡oˆ‡ohþ€x˜EØ ‡ø†xø†vˆr˜‡‰hrˆ‡o ‡yèÐoˆ‡oˆ‡vø†xh‡‰€‡vø ‡xø†xøˆxø†yh‡oˆ‡o˜r˜)ý ‡x h¢xh‡o ‡xø†øøøh‡‰høˆoˆ‡oˆ‡oˆ‡oˆvÒoh‡oh‡oh‡oˆoˆ‡oh‡oéxøˆo˜ˆvø†xø†x ‡xø†x ‡xø†xÈŠoˆ‡oˆr˜rˆvÒvˆo˜Iø†xhrˆ‡0ˆ‡{…˜u ‡‰‡èÐvør˜rˆ¬ø†xhh‡oh‡oøˆxþ ‡xøhyø ø†y‰oˆ‡vˆ‡vøørˆr˜uˆo˜‡xø†vøø†xøøø†xh‡xh‡x€uøh‡o ‡x ‡‰èE<ƒøI8¿ÿ{À|Á|Â/üÀ—„„aÀ3huˆoø‡›hsm‡xh‡xøø†vˆ‡vˆ‡vˆv˜‡oˆoˆrøh‡‰h‡xh‡‰ ‡xø†xø†xø†xø†ˆ‡oˆ‡oh¢›hh‡xø)mrˆ‡oˆ‡vˆvˆ‡v¸‰ohø†˜rˆ‡o‰vˆoˆohøø†þxø†x ‡oˆ‡oˆ‡oˆvˆ‡o˜ˆoh‡‰ø†xø†xø†xø†ø€ˆ÷-Þ·yßâ!L¨°Âoñ¾ÅûÖ®Br ¿µS8\ÂoåuPÄË€yäâ‘k¯]¼vßÚ%ü–\/Cô:@†Ì æáâáþ!¾!¾!¾!6¾¡¾Abãââhãæáâábãâáb£âáh£âáÔ!¾aN¾¡6È!¾¡6æjƒÚ¡6È!¾!6þ¾!ÈáÚ¡6BbÈ¡6¾!6BââáÚáÚ!6¾¡hãâbƒh#$bãââaÈ¡âáÚ!¾áWâáÚ¡6Bââáb£jãb£¾6B"6Èa¾!6È!~%¾!È!Ú6Ú!6¾¡b£bãâáâáhƒ¾6Ú6:@hÁ 6Ú!Ú!6¾!$bƒâ¾!6ŒÀ!æz¡Ìa>@ A†€ÌáF ÀÁ<@æd °Ábâ âáâbCd °Áb Ú!"ᤠ.@æaþJÌ!r ¾aPàÌ!â ¾A ¡¾€6 aâáF Àá2 â`¾Ü Ú!6ÈAÈaJà¸!r  A† Ì!FÀÁ2`Ú!F ÀÁb¾`ââahƒâábãâaÈ!Ú!6¾¡bƒbãâáââ¡âáBâÔ!¾!È!¾!Ú!¾¡¾¡âá~åhƒbãb£âáâ¡âáÚ!6Ú!6¾!È!¾!È!6¾6ÚáâáâáhƒâáâáâþábãÚáhãâáB¢6Ú6BâÚ!È¡jcÈ!6¾!¾!¾aÈáh£bãÚáäaNä¡âábãÚábƒâájãâáâ¡b£b#æá¡âáÚ!È!6ÈáÚáâ¡âaÈ6¾!¾aÈ!6¾!¾¡¾!¾!$â!ä¡âbƒB"Ú!¾!È!¾¡bãjc¾!¾!6¾!È¡bƒj£âáhãÚ!¾!¾6B¢6¾¡âáb£âábãb£bãâáÚ6¾!¾áYÚ!6¾6ÚáþÚ!¾¡6ÚaN¾!È¡¾!¾Ô!6B"6Ú!¾!¾!¾!È!6¾!¾6B"BâââA$¡6ÔÄá$¡¾a¾!6¾!Ú!¾¡âáÔ¡â¡âáB"Ú!æáb£âaÈ!Ú!¾!È¡b£ä¡6¾!Ú!6¾!ÚaÈaÈ¡âáä¡â¡hãbãâáÚáâábãbƒÚaÈáY¾ Ú}ko¹xñ¾µûÖ.^»xß:(R†Ç ¹yäæÅ“Äï¿üþñûÇï¿üþñûÇï¿üþñûÇï¿üþñþûÇï½@ï½”Ðüþñë H3íâ©CÈ/^»xíâµû†a»oñÚÅk‡°]×®ßÎ~‹×á·vßâ};û-Þ·xߺ~;¯'p@cßhBÈp@û|ò ` à߈4°Ï8 Ð8¾ÑŽx€PG<¾q|þ ‡<Ú ´ÃèŠ1h  +ÐB(cà䈇1h ߈4 Žx˜ˆ4°Ï @ Ð@<æñx|£ñøF;¾á˜v äñøF<¾Ñ•zɃ2¥úF<æAŽoăñøF<ÈÑ•oÄãñøBÚvÌãiÇ7Úvă”qL;ÒŽ®|ƒ2ñøF;âñx#߈Ç7(ƒvl‡2iG<¾ÑŽx´£+”‰Ç7ò „|!äˆÇ7Úñx|#߈Ç7âAŽx|#í@È7BytåùFWÚ1r ¤߈Ç7âñv ¤ÑþR<¾Ñ„´#߈Ç7ò DøF;¾r|Ã1äøF;¾oÄ£ßhG<¾A™x|£ñøFWÚñí|CŽùF<Úv|£ñhGW¾Ñ•o¨C”‰G;Ò„|#äˆG;âAy´#äˆÇ7âÑ„Ìã!G<¾oP!äèÊ7âñv ¤ñhÇ72o ¤]iG<ÚrÄ£ñøBÈÊÌã!B¾vÄãñø¬ºò®#ßøp<¾o´#äøF;âñ®£+”QG;âñC D툇æEtà”‰Ç7âñ „|!ßhGþ<Èñ u´ãùF<¾yP&ßhÇ7Úñv|#߈Ç7ºòxPF”‰Ç7Úñx|£ñ¨WW¾Ñ•vt…ñøeâAŽo´£+ñøF;ÔÑ•o äùF<¾oÄãÐþF<¾ÑG(føF<ÚGåÿ Gä!|à#ô¸Ç?îñ{üãÿ¸Ç?îñ{üãÿ¸Ç?îñ{åÿ¸Ç?èqЃ÷ø=€Â(BxC<¾Ñ„ð!äˆÇ7âÑŽxƒó€69ÒŽx|#äˆÇ7âÑ„|#íøFW¾v „ñ G<¾v@»+íèÊ7þâñy#ß@e¾v|£êhÇ7ò ră!B¾oă2]iG<¾oÄãOGÈ7âñ¼ƒ2ñ Ç<âAŽx|ƒñhÇ7BŽy#߈Ç7âñx´ãùF<¾ot…2߈Ç7 M™x|!íˆÇ7âñx´£+õ‚69ÒŽ®|!í@e ý h£߈9: e˜AíøF;¾AŽy´!ä@È7âAŽxcÆÀ7âŽ4âí0ƾ #퇒uìBêè¤Ñu|#߀†ÈvÄ£ñÐÝÒäõæþA¬ Ý ÒÐÖ  ñð q @ñ ÆPí ßÐÐ0ñÐ  ñ@Ÿpí ð  ð ñÐßÜÉäð  À0ñð ñÀ € à» êÐ  ñ ß ßp Ðñð óðtßßíð ñ ó€ßßÐß@ñð ñð ñÐñð O×ñð ñ@ßßДAñð ä€íð ]Aä€äß@ð€íð íð ÑòÐäwß0ñ@ñ@ßÐßÐê@ñð ñÐ߀”ñ þíð ñ@ñð ñ AñÐ]ñ ómßíß߀ßÐõ‚ßÐß”ß@óÐñð ñ@ñð ñð 1]ÑßðtßЀŠÐä0퀰òtíí@óí€ä€ä€ßß@óÐßÐä€êð ñð Ññð ”äíð íð ñÐ߀ä0í@ñÐòð ñð Ñ]ñ Aííßíð AOGñð ÐÖñÐñ@ñ@ß@óð ñÐñÐßíð ñ+ßmßíð ñ@äíþíð ñÐÑñð ñð ñ@ñÐß@ÑßÐÐFÑñ ó€ßß߀ß+ñ@¡‡ð ñ@ñ@f0÷ 0íð ñÐñÐÑAÐÖñÐßðt/—wä0ímí€ß@ñ ñð ñ@óð ñ ]ñ ñ ñð ñð íð ñÐÑòÐßßÐAñð ÑÑÑñÐñð óÐñð ¡ÑŠ  ~`ñð ñð ä ôpÿ@÷Àï€ï@ <ðï° ï@ ïðÿ@ÿ@ÿ@ÿ@ÿ@ÿþ@ÿ@ÿ ÷@ÿ@ÿpü@ÿp@q÷ðôpàÃàfÐñÐñð ÿ€ñÐñð (”ñ 1ßäТñ í߀ä€äð AßÐ6ßß ñÐñð ñ@ßÐEÚñ í€ßó@-ÚEŠ퀢ßÐñð íä€íí€ßÐßÐñð óð ñ ñð ñÐA(ÚñÐ6ú _ú¥ßíßßßäß”ßäÐñ ñÐ(Jñð -ú -ú ñð 퀢êÐñð íþßÐñð Q/ñ0ä0ä  Ê€ó@AñÐÑñÐ-j ñÐ  ñ`3 í €ß#PàÀ 0ñ@1PØ æ@ñ °BñÐñ%€ ñà „€Hpê ñ0%€ æà „€#PØ`©ð ê°‹ÐæÐá Ò€ÀPí#€àÀ €í íÐ0A(:%æ8 Ð0íí#0ñ`10ñ@1PØPæ@ñ ííp =ßÐóðþ AñÐí^‹í€ßТóð ñð ñÐñàµñð ñ@…íð ñ@ñÐÑñ@ñð ñð ñ@-Úñàµñð ñ@-ú 䀢ßßÐ-Úñð ñ@1äТßТä`£äí€í€ßäð íßÐñ ^‹ò`£ßÐñÐßТí€í@ñð ñ@ñ@Ñ_Úñð ^íäßÐßÐ-ú 0÷ €^^ßÐñ ^‹¢ßàµí߀^;·ñð ñ ñÐßßÐòТ䀢ó@(:äþ€õóð ñÐßàµñð AñÐñ@Ññ ñ@ñð êÛ¢êää€ßäТßàµñ ñ íäíð ñð ñ0ä`£äàµ(Jßäð EJ-Jñàµß€¢ß íßí퀢í€ííäÐñð ñ@’€ó@ññ0ŠÐñ@A^ß߀¢í€äÐ(Úß@(ú ñð ñð (Úñð ñ@ñð 1߀ßP¤ß€¢ä€íí퀢^ß@ñð ñÐñð ñ ¾ñÐñÐêàµþßß íä€íßß ñ àÊ€f퀢Šðô÷Ë@ Ô° 9p(ÍÒ|ôÀôÀôÀôÀôÀôÀÿ @Aÿ@@Aÿ@ÿ ÿàpé0 Êàfð 䀢ü^‹߀^Kóð ñÐñÐñÐñÐßÐ(ú ñàµEú ó€¢ßÐßßí€ê@EJñ í í@ñÐñ@(ú Ñß߀¢òð íð ñð ä߀ä`£ííð äíТä0Ññ ñð ñð áµßþ߀íð í€ßíð ^û ñð ñð íð ÑäТß0-ÚñÐßä0äíß@ñð ñàµß€íð ñ íð Ññ@ñð í䀢íТíð AEÚŠ  x -Jñð äß@ñÐßíð ñ` ð äi°[0ñ ð ¡ݰàe0ñ@á €p‘ ¤äßá  pàà  (á  €píܰ (`ñ€ PÛ[Pêð I @ Ðþ0ñð ݰP:í ÐäÐ0߀ßÐßÀ +€ àÐ0êÐêܰ°O0B@àGÐ0ä^» (êµ(Úß@ñð ñÐ߀¢íßТßß^í^û íð ñð ñð -Úñ ß퀢ß0Ñòð ñÐò@ñ ñÐñ ñÐ(ú ñ ñ íð ^‹ä0ñð (ú í€ßßÐñàµßßíßíð 6J(Ú߀¢ßÐêP/ñð (굡ßàµßÐþä0A6Jñð ñàµßíТß@_ú ñð í€÷ í ß䀢ßÐ(ú ñð ñ@ñÐòÐßí@ñð ñÐßÐßÐßÐ-ÚEZ/ñð ñ ñÐñ íð¥ßí€äß^í@¡¾ß€í`£íð ñð ñÐòð í¿ß€¢ä€¢ß€ä`£ß0퀢ßÐ߀äßP¨êû (ú ^‹ä€ßÐ-ú ñÐñ äßíð ñÐßíТíípßТf0÷ 06ú ñÐñð ñðþ ñð (ú ñð -êµñð óÐñð ñð ä€êíßí€߀¢íð (Ú߀íð ñð ñÐäß^+퀢í@Ñäíð ñð Ñä0ß0ñ@íêKó€¢ßÐÑŠ  x`ßßä ô ÷@üÀËðúËÀúÐý ú€¡ÿ@ÿpÿpô` @ ½p¶ÿpÿ ÿ@ö°úðú @ùp Àfóð ñð ÿð íßÐñÐß`£^äÐñð (ú ñð áµñð ñþð ñð ñÐ/Þ7ó¾ l—Pà·xßÚÅk'\;ñ¾Ul÷­Àoñæ}‹×îÛ·ŠñÚ•¬ø-Þ·vßâ}8ï[»xß üÖ.Þ·vÛÅû&¯Àv¿Å›Gî[»ŠóÈ lï[Å„¿µ˜ð[»x価Œ×ì·xä’˜°â·xä¶›G®ÀoñÈ}k÷­Øoí’ëàH™ßÚÅkXí ®¢:äÈ Ü¥ =rÕ}n÷­À„çYþV±ºrêÚU$×N åvêVœ'°Ý¼xêÊÅS'°À„ßÚÅö[»ŠßÚ ü&p¹xßÚ©‹÷-þ^»xíâ}SÏ\ÚyHŽ<Èèñ{Hî’ÓG°p{Ìã2Á=ÜAzüƒî0=@@€Ð=Ü1€(‚x0C;Ô!oüãùF<ÈÑŽy|£$äPGEÚv$!™9þøx|cäh‡@¾rT„i‡@Ú!vT„ñHH<Ú!văiG<Èv¨C íGB¾oäíÈ7âAŽxãíˆÇ72rÄãñø†7É‘’cähG<¾ÑŽx|#ó G<¾rTäñøF<È!oþ¤ÞlG<ÈñŠ|#ó G;¾vÄãñøF<Ú!r|CñøF<È‘”¤üF<¾1odäHHEàÑE ø†@¾ÑŽx|#íˆÇ<ÈvÄãñø†@¾ÑŽy£!GEÈ1r´ã@ÀT€vÄãIH<¾ÑŽoÄãíÈ7ÚQ‘„”#íø†:*’rT„ñ Ç7JBŽx|C #‰Ç<ÈQ’o”„ñ GEÚñx£"߈Ç7Ú!oÄã ùL;*ÒŽ?’#äðf;âñŠ|ãäGB¾oăßÈ7*ÒŽx¬ñø†7Ûo´þCñh‡@Èñ uÄãå¨È7â1r´C óø†@ÚrÄãí¨ˆ‰¾¡Žv|#ßHH<¾!oÄã ù†vˆrø†vˆ‡oHˆoHø†xø†xø†x ‡vø†xø†x ‡o¨ˆv¨ˆoP‡xHˆxøø†xø†?"h‡oh‡Šø†xø†Š ‡xøh‡xh‡xø†vˆvˆ‡oh‡x ‡oh‡oˆrˆ‡oh‡xø†xø†Šø†xøEè€o(‰vˆorˆ‡oh‡xø†xø†x ‡xøyh‡xø†xh‡xh‡xh‡xh‡xh‡oh‡o˜©oˆ‡o‡vˆ‡oˆþ‡oˆ‡y ú†xø†vˆ‡vˆ‡orˆoh‡’ø†’ø†x ‡vˆ‡vˆrø†v˜Ëˆoˆ‡vˆvð¦vˆ‡vˆrø£oˆ‡oˆrˆvˆ‡oˆ‡oˆ‡vøh‡oˆrh‡xhh‡xP‡?"h‡?ú‰‡oˆr¨rˆ‡oˆ‡oˆrh‡x ‡vˆ‡oˆ‡oˆ‡Cˆ‡oˆph‡0˜‡{P„ø#rˆ‡oh‡Šh‡y huh‡x˜‡oˆ‡oˆ‡v(‰vˆ‰‡v(‰vˆ‡y ‡’ø†xø†vø†vˆ‡o( r(‰vˆ‡oð&u˜‡oˆ‡oh‡oˆ‡oh‡oþh‡xø  uˆ‡o‡vˆ‡v˜rˆ‡yø†xø†8eÀ3( rpzø?ãzÐ~ ~˜‡à ‡@‡ ‡pHz¸z¸‡c(zp‡¸Éq‡Ðh} }p‡ h€eÀƒ0ˆ‡ohø‡vЩoˆ‡oˆvøù†v ‡xø†’h‡oh‡oˆ‡v(‰oЩvø†xø†„ˆ‡„ø†„¨ˆ„ ‡xHˆoˆvør(‰v ‡x ‡x ‡’Hh‡oˆ‡vø£v˜©v¨ˆvø†xø†x ‡x ‡xøˆoð¦vø†’øø†þxø†xHˆoˆ‡oˆ‡o(‰vøø ‡yh‡xø†xø†yø†xøoj‡?R‘‡oh‡oˆv(‰o¨rˆ‡oHrèEP<€vøø†xh‡xøj‡o( ˈ‡vˆ‡oˆ‡o(‰vø†?ú†xh‡oˆ‡vø†?"‡’ø†xø†xh‡x °Œxø†xhP‡v( rˆ‡o(‰o¨r¨ˆvøø†xø†?ú†xh‡xø†x0‘xhøh‡Šhrˆ‡oHrˆ‡oh‡oˆv¨ˆvø†x0ø†Š‰xø†xPrˆv(‰vˆoˆ‡oˆur¨ˆohþ‡oh‡oˆ‡o¨ˆoˆ‡o(‰o¨ur¨ˆvøh‡oˆ‡oˆ‡oˆˈ‡o ‡x ‡yˆr˜‡v¨ˆoˆ‡oˆo˜‡x ‡yø£oø£vø†vˆuˆ‡oˆ‡v¨ˆo˜‡xh‡xHˆoˆ‡oh‡oˆv ‡xh‡xh‡o(‰oˆ‡vøø†Šø†xø†xø†xø†xh‡Šh‡oˆ‡oˆ‡oñ&r˜h‡x ø†xø†ŠP€y¸Qèrˆ‡vø†xøø†?úúh‡xørˆrˆ‡vø ‡yø†xh‡oˆ‡oˆoˆoˆvˆ‡v¨ˆoHˆoˆuþ( rˆ‡vˆvøø ‡xøø†vø†vˆ‡o˜rˆ‡v‡™ú†xø†xø†„‡oˆoˆ‡vø†xøh‡xh‡oˆ‡v(‰oˆ‡o¨ˆv¨ˆo ‡yø†yˆ‡v ‡xø†xø†xP‡vø†xøø†Šø†vø†x ‡xh‡o(‰oˆvˆ‡vˆ‡oø#yHˆxh‡xu ‡y3ˆ‡{P„ˆ‡o¨ˆvˆrˆ‡oˆr‰‡vøø†yˆrˆ‡oˆ‡„ø†xhxˆ‡oˆ‡oˆ‡oˆrˆ‡v¨ˆoˆv¨r¨ˆoh‡oˆ‡vø†xørrø†xP‡oˆþv¨r˜‡o˜r˜r˜‡xh‡oˆv( uh‡o ‡?RèEP?0ƒoˆ‡oE} }œ{˜~ ~@þõ3~ð³x@}œx@†˜h ?»† w~hzp‡èG ?0ƒvˆ‡vˆ‡oørh‡oh‡oˆ‡oˆ‡oˆ‡orˆ‡y ‡x ‡x˜r˜rˆ‡„ø†x ‡’h‡xø†„ˆ‡vˆ‡oˆ‡„ø†Šh ‡o( rˆ‡oˆrˆyrˆv¨ùh‡xP‡xø†xø‰‡o¨ˆ„øø†xø†vø†vø†„ˆ‡ohþ‡oˆ‡yøoЇoˆ‡oˆ‡oˆ‡oh‡ohø†vøy¨ˆvø†vˆv(‰„ˆ‡yø†xø†xh‡o‡’hh‡Šø†?j‡xø†vˆoˆrˆ‡oˆ‡oˆrh‡xøu˜rˆoh‡xø†xøøoš‡Peð¨ˆo¨ˆoˆ‡vˆ‡oh‡oˆ‡o(‰vø†x˜‡yø†xh‡xhø†xøøuh‡xø†?"ø†„¨ˆoˆ‡oˆ‡orø†xø†ŠHyHrHˆxø†Šøø†v¨ˆvˆoˆ‡o¨ˆv˜‡oˆ‡oˆ‡oˆ‡oˆ‡oˆ‡vˆy0‘x ‡xþø†xhu0‘oäv˜rˆ‡vø†vP‡vø˜xø†xh‡x ‡x˜‡o(‰vø†vˆ‡oh‡x0‘xø†xø†xHˆx ‡xø†xø†?j‡Š ‡xh‡xø†v( ˈ‡oh‡xø†vøø†vˆvð¦väx ‡vˆ‡o(‰vˆvˆ‘‡xhh‡oˆ‡oˆvˆr(‰ohø†xh ‡xh‡’  ‡„¨ˆoˆ‡oø£oˆ‡oˆ‡o˜‡oø£oˆ‡oh‡Šh‡xhø†vˆrh‡oh‡o(‰vø†Šø†v(‰oPøE耒h‡xø†vˆ‡„ø†xøþø†xø†vøuˆvø†xh‡’hh‡’ø†x˜‡oˆvˆuˆvø†xø†xø†xø†’ø†xøuh‡’ø†vˆv¨ˆo¨ˆoh‡’h‡’ ‡vø†xø†vø†x ‡Šh uˆoˆ‡oˆvˆoˆ‡o¨ˆvˆ‡oˆ‡oˆ‡vˆoh‡xø†x ‡’Hø†xh‡xø†Šø ‡xø†vøo"ø†xø†xø†vøyˆ‡vˆoˆ‡‘ˆ‡„ˆrø†C¨ph‡0Qèrˆ‡vø†x h‡’ø†vˆrøHh‡xh‡xh‡x  ‡x ‡xh‡xhþ‡xh‡xø‰‡vˆrˆ‡o(‰oð¦vð¦v¨Ëø†vxëvˆrˆoh‡x ‡oP‡x ‡Šh‡xøuˆoè€Cà<0P‡vˆG¸?Ó‡ààÊ¡} u}ð3~ F»†`?ã‡O(}€†àÉq‡˜h€{Ðzp‡ h€Peð3ør¨~r˜‡o˜‡v¨ˆvˆv(‰vð¦v(‰oˆ‡o ‡Šh‡oˆ‡oˆ‡o ø†„ ‡x ‡yˆ‡vø†xh‡xh‡xø†xhuø†Šø†xø†xHyø†xø†xh‡o¨ˆoˆrˆrˆoþˆ‡oˆ‡vˆ‡oˆväo¨ˆo¨ˆvˆy ø†yh‡xø†y¨ˆvø†’‰x ‡y ‡xø†x ‡xø†xhrˆ‡v¨ˆvu‰xø†xø†„‡ohHuHˆŠør˜‡vˆ‡vˆ‡vˆrˆvø£oˆv¨ˆvø†xø†xø†xørˆrèGà<€oˆvøh‡xø†x ‡yø†xø†xø†v ‡yh‡xh‡xø†xø†xøh‡xø†Šh‡oˆ‡„ø†x ‡y(‰v‡‘ˆ‡v¨ˆ„(‰vˆ‰rhh‡oˆ‡„ˆvøø†xø†xøh‡xø†þxør(‰o˜‡’ø†xø†v ‡xhyøh0‘xh‡xø†xø†xø†·n‡xø†x0rˆvˆ‡o(‰„ ‡xhøørˆ‡v(‰oˆrˆxãµø-Þ·xäâ}k7pà·vß¶{(ðÛÀoñÈÅû6°];ßÚ}k÷M ¹í¾Å#ï[¼oÕ}#ï¹yßâ}‹GN ÈoÉÅk\¼oÉÅû¯]¼vá©ûö°Ý·vß¶{ò›ÀvñÈÅû$¹xí¶“÷ð[¼vß~³ø-Þ7ßÚ  ñ¾Å#7d»xíâµØÎâ7ß~kG.Þþ7rñÚ}øM`»oä~#7¯]¼vÛ}k'ܼxäâ}k÷Mà·xíȵøM ¹xßâ}#ï[¼o-~‹×îÛÀvß~‹G.^»xíâ}‹÷œÀvñÚ‘‹×Nà·xß~‹òÛ@r¿ ¹ü[¼vß,¶[þ-Þ7}3@ßóÐ!ê3)ÒA<äÌó@íÀÓÎ7í|cbí|Ò7ñ|CÎ@íÄÓN<íÄóM<íó9ñ|Ï7ñ´Hß ôM<ß´ó@í|’:í|Ï7ñÌ3O<íÈóM<ßÄóM< =DÎr}Ï7}ÓŽ@(¢ f|ÓŽ@ßBÏ=ôþÜïà#:<Ѓ=yê¹§> ð°§ ÜszîR=ì @Ï<ô@3@<ìÐ"ÃàaF<ó|Ï7ü´c9ñ|ƒØ7ñ|ÓÎ7ñÏ7ò€ôM;ñ|Ï7ñ´3Ð7ñO;ÉÓN–}Ï7‘#Ð7ñ|O;ñ´9µÏ<ä|ÓŽEß´#9òÄÓN<íÄCN<߀ôM<ßô@íÄóM<ß<ÔN<í<ôM;ñ#Ð7ß ÔÎ@íÄÓN<êÄó@ß´Ï7ˆ}3Ð7ñ´#Ð7êôM<ä€9í|ÓŽ@íÄó Hñ´#Ð7íÄCÎ7ñ|39ñ|9µ3Ð<þ(2ŒÄ’@í|Ï7ËÍóÍ@íÄóM<íÄÓN<íôÍCêÄCŽ@íÔN< }Ï7ä V =ÌÞÜÃ%€@ °Â=Ü=`‚lÀ”Á܃>$ )@ÃÜ4@(/à´ƒ:Ä7ðC<´C<|C<|C;ÄC;ÄC;Ä9ÄÃ7ÄÃ7Ä9þ,Ç7ÄÃ7´ƒEƒ<ÄC;ÄC;ÄÃ7 Ä7ÌÃ7<Ä<Ã7Ä9´ÃC´C<´C<|ƒ<´Ã@|C;Ã<|C<´C<¨C;ÄC;|ƒÒ‚,ÐB+ÐÂ@Æ‚,ìã@Ê-È/ì£,T¤,Tä@Ò‚,ì£,ÐÂ@Æ‚,ÄÂ@ÆB,È-È-´Â@¶Â@ÒÂGÆ‚,ÐÂG¶-È-´B, $/È-|ä@Ò‚,Ä‚,Ђ,T$-ÈÂ>Ê-8åGÆ‚,ìc,ÈB, $-È-p%- $-´‚Urå@Ò/ìã@¶B+Ђ,´ÂGÒ‚SÒB,T¤,Xå>Ê-Ф,Ђ,Ð?ÄÃ7ă$4¦#H‚#H‚#Bc:‚eJ‚@ƒ@ÃC´Ã@€Ä7ÄC; þbÄC;|C;ÄC;Ä7ÄÃ7ÄÃ7Ä7<Ä7´C<|ÃC´ƒ@|HÄÃ7K; Ä<|C<|C;ÄÃ7„<€„@ÌÃ79´ƒ@´ÃC|C<|C;ÄC;¨C<ÃC|C<|C„ $tÀ7¨C<|ƒ@|ƒ@|C;,G;D;à>ë<èÉ=èÉ=Ì=èÃ=ìÉ=CÞÃþ’ÐÃ=ä ¹êÉ=t€#(„A<|C;?´ƒ@´ƒ@|C<|C<|C<´C<|C<´C<´9ÄC;|ƒ@|ƒ@|C<|C; Ä7C<€D<¨C<|Ã@´Ã7ÄÃ7dÉ7ÄÃ7ÄÃ7ÄÃ7Ä7ÄÃ7,G;ÄÃ7ÄC;|9ÌC<ôK;|C<´Ã7Ä7 „<|C<Ã@€Ä7Ä9ÌC<|C<|ƒ@™@´C<|C<|ƒ@´C<´Ã79ÄC;D9ÌC;b<„:9ÌÃ7̃@|C<|C<|C<|9ÄÃ7ÄHÄÃ7ÄC;|C<Ã<Ä7ÄÃ7ÄÃ7<Ä7 9Ä7Ä7þD;9ÄÃ7ÄÃ(‚2àÄ7<„<ÄÃ7Ä99Ä-üîòÃ?ðîöî?ð?ü?ô.?ô.?ø.ðâ.?ø.?ü?ø.?à.?à.?ô.ðö.?üðþ?à.?ü?à.?ø.ù–/?ü?”/îòƒïòùòÃ?ðÃ?ðÃ?ðîòÃ?ï?ðƒúòÃ?/?ü?à.?ü?/?/«/?üðú.?/?ø.ðú.ðþðâ.ðâ.?ü?Ä?ÄÃ7´ƒ#,‰@(×7Ã6L98ƒ3HÂ7XÄ7´Ã7ÄC;|C<Ã@C<|HC<|Ã@€Ä7Ä7ÌC;þÄÃ7D;|C;XÄ7ă:|C<|Ã@´ƒ@|C<€Ä7ÄÃ7´9ÄÃ7ÄC;ÄÃ7ÌC<|C<|C<¨Ã7C<€D<ƒ@C<|C<´Ã7´Ã7ÄÃ7D;ÄC;<Ä7„:DÄÃ=(B Ä7 D;Ä7€Ä7ÄÃ7ă:|C<|C<|HÄC;ÄC;ÄC;|H|C;ÄHÄC;|C<|C<|Cäää´Ã’ÐÃ<ÄÃ=èÉ<ÜþCžÌCžÌCžÌÃ=èÉ’Ì=ÜÞ,Éžt€$ ƒ˜A;ÄC;ÄÃ7ðC<|C€ƒ<€>´>”6=ÄÃ’ÜÃ<ÄCi—6=Ì=Ä=Ì=, =ÌC<,IžÌ@ЛGÞ¼{ñòcæ¹xùÅk¯ÝCrñÈÅS÷í[¼oÛµûÖî[Èo†DR9rñÚÅk÷ð[;”¿=ü6ïæ·xß~Cùm^»‡ä测÷-^Èxßâ}‹÷íf»þ›ßP~»ï[Èvßâ}k¯ÝÃßÚ}‹÷më7”ßPÊû\úp~Õ±ó‹ÅO¹v’èÍ‹G.žºrä¶m›6Í™£o7Û}‹G.ž$û÷ñãw”_’#ÿù¹ÏI¹Ï?Iü“ÄI‘ÄI‘Ä?Gø»Ïû&t$?GìsDÿ¾‰ç›x¾‰§”æ™'žPú¦‡˜GþQ: 'žoÚ!gžx¾A©‡BB©­¾i'u8jç›x¾A©oâQ¥oÚù&žv¾‰§x¾‰§‡È™§x¾‰ç›xÚ‰'¤o"'žv¾‰§‡¾™§xÚÙ*žoæùæ¡oâiç¡à¹é›x¾ñªoâ!'ž¾‰ç›xÚù¦xÚùæ!râù&žv¾‰ç›xÚù&žoÚ!ç¦oÚù&žoâùFÏ›Úù%ræig+râù&žjç›v¾içIÔù&râ1ƒž{DÙ ‡¼zˆ”¾‰ç›‡Ú‰§oú&$râ I”Úùfž‡¾‰‡œxÚù¦‡¾‰ç›x¾iç¡oæiþ'žvâi'žoâi'žoúfžvâ!gžxÚQ§‡Úù&žv¾‰§oPúæ¦v¾‰ç››¾iç¡3Èù&žoÔ‘$ÅÂ'Åxæ‰gæxfŽgæŸç‰gžxfŽ'Åx~ŽGžy♥y6Pd<̈gžoâù毾‘§”ÚAé›xÚùfÖxÚ‰ç›vâ!ç›xÈig«vÔ‰ç›vú&žoâù&žú¦x¾‰§‡È‰§oÚ‰GÑxÚ‰ç›xBЇœx¾‰ç›‡Úù&rÚùF‡Úù¦‡¾i'žoâi'râùæ¡oBÒ³‡¾ é›xډ盇8Òó›xȉ§‡æþù¥oj'žvâ!'žvâi'žoâùæ¡vâùæ¡vjg«vâ!'rÚù&žoÚ9û›x¾¹é›v♇œ¡Å¾‘'žvâñ‡|%í@I,þÁއ8ì!Av ‚´à1˜A nƒôàAÂáÄâi‡#îAyÄ£å Ç6ȱg(ÃñøF<¾Ñއ„DêPG9â¡r¨£>,‡Õu´‰ñ Ç7B¢ŽrÄCñPG<ÔuÄ£>ÜŠ:⡎x¨£ꈇ:P‚D5ú0>ŒÇ<È$–#í G;¾¡Ž‡8â!íˆÇ7âñv|£êþG;âñÄ£ñø†îAIt`ä¸É7ò y´#߈9BòvÄãñhG<æAŽo™ù!þ¡ ¾AVlæ DÕ B¾!¾!ÚáBBÚ!È¡ ¾!þ¾¡ È!ÚáÈ!Ú!Ô!BâÚáâ¡ââ¡È¡ Ú!Ú!È¡ È¡ Ú!!Ú!Ú¡ ¾!ÚA¾!¾¡ ÚáâÁž6ââ!$â!$âáæ!È!Ú¡ ¾¡âá⡾!!¾¡ Ú¡ àîA6`#¾!$ ¢¾!È!Úáâ¡âáââAÈ¡ Úá6¢¾!¾ÈÈ!È¡¾!Ú!!¾!Ú¡ ¾!!È!Úáâ¡6â ââ¡âáâ!$â ‚â¡ âÚ¡ Úá ¢¾¡â!$6âÚáâáæ!¾¡âþæá⡾¡ ¾aB"È!¾ â Øn Áƒäâ}ø-¹xäÚµ“÷­Ý@rñÚ‘Ø.9äâ}‹×Îà¡xäâ‘‹gFÜ=QÈÅ#O]$ä8È7Ô¡Žv|ã ê€Ì7âñƒ|£ê8È7òx#ßhÇAÚq—vÜå‰Ç7ÒŽx|#ßhÇ7âAŽvÄãid¾ñx|ã íK; CŽƒÈdä8È7o´CùF;âѹ|£߈Ç7âAŽv|#߈Ç7Ú€{ÌC8È7ÚoÄã™Ç7Úqo´#߈Ç7æAŽx|ƒiG<Èo@æñ G<Úo´C.í89ÔoÄãó G<¾o´ã.í8È7âñx|C.íˆÇ7Ú™väñøF;äBŽƒ´#߈Ç7Üóvþ|£ñø†LîBu¤ñ Ç7Úñ Çcß8H;îòvÄã!ñ ÇAÈ¡ŽvÄãñøF;âAŽvÜ¥ùÆAÚvÄã‘Ë7âñx|£ñø9$ÑŽx´#ä0Ã<Ä£ä8H;äÒŽx´#ó G<¾!—õ߈Ç7Úñx|£ß8È7òx|#í¸K;òx´ã ߈Ç7âAŽx|ã íË7âñvÄãíø†\ÚoÄ£ñhÇ7Úqo´#ß8È7ÚrÄc߈Ç7âñuäp„2ð†vÈ¥‡ˆÇ7âñx<„ñøÆAÚñxþ#äˆÇC¾ÑŽoÄãñøF<¾oÄ£߈Ç7Úqv|C.íøF;¾rt@¼ðƒ¾A¹ðãñøF;¾v|#íˆG;äÒră‘ßË7âÑŽoÄãñhG<¾oÄ£ryÈ7âÑŽx´ãíˆÇ7âñv|ã!yÕ<ÚqvÈåñø9âÑŽƒ|ã ß89èvÄãiÇAÈoÄãñhG<ÚoÄãñøF<ÚvÈåy9âѹ|#߈Ç7ÈqoÄãwiG<Úñƒ|#äË7Úq—‡ÄƒiG<¾!—‡@¦ßÜA¾o<äþñød¾!—oÄ£ñh9âAŽ8‚x@;äòx´ãñøF;¾vÈ¥­·Ç}îu¿{Þ÷>¬iÇA¾qWÅãQG<Ú™oăiG<ÚrÄãñøF<¾ÁÈo„ñøF<Úñx|#íˆ9æñ»<„ñøF<¾q—vÄãñxÈ7âÑŽoÄãwyrˆ‡v8ˆv yˆ‡vˆ‡oˆ‡vø¹ørˆ‡o ‡y8ˆoˆr˜‡ƒh¹ ‡x€y¸EØ€v8ˆvˆ‡oˆ‡vˆ‡vˆrˆ‡o8ˆvˆ‡vpv Èxˆo8r˜Èø†xørˆ‡o˜“vˆþ‡v8ˆoˆ‡oˆ‡vø†vˆ‡oˆ‡oˆ™‡o8ˆoxˆoˆ‡vø†ƒø†y8ˆv ‡yxr€Œoˆ‡oˆ‡vø†»ø†x ‡xhy 1¹h‡ox•yàŒoˆ‡vø†xh‡oˆ‡o8ˆv€‡‡€ r€Œo‹oˆ‡oˆ‡o8™‡o8rˆ‡oh‡ƒø†xh‡ƒø¹8uh‡oˆrÀƒx˜EØ€ƒ yø†xhyø†‡ˆ‡vˆ‡ohÈh¹h¹ø†ƒh‡opoˆr¸ rˆ‡oˆ‡o‹vˆ™ø†vø†xø†x ‡»ø†xPr8ˆvˆ‡o8ràŒo˜“vˆ‡vˆ‡vˆ‡oþh‡ƒèE?0ƒ‡ø†xøIh‡xh‡xø†x ‡xh¹ ÷ ¹h‡9!‡xø†y ‡oh‡»ø†x˜r‹P„aÀ3ˆ‡yø†xø†ˆ‡o˜rˆ‡o ™P‡vø†ƒxˆx ‡ƒøu r€Œvˆ‡v8rh‡xø†» ‡o‹vˆ‡v¸ rø¹xˆxø†xø†vøÈ ‡o‹o¸‹oˆrh‡ƒø†xø†x˜rˆ‡v8rø¹h‡xh‡ƒ ‡x ‡oh¹ø¹ø†‡ø†vˆ‡vˆ‡v8ˆ‡ˆ‡v8ˆoh‡x ‡»ø†xh‡xø†xø†ƒø†xø†vˆr‹oˆ‡þo rˆrh‡xø†vˆr8ˆoh‡xø†xø†xø†xø†y ‡ƒ ‡xh‡ƒø†‡¸‹o8ˆ‡¸‹P„aðˆ‡oˆ‡oˆ‡vˆ‡yø¹ø†xø†xø†x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x þ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡x ‡xø†vø†xø†x u8r‹y uˆ™ø†vør¸‹oˆ‡o€Œvˆ‡vˆ‡o¹ø÷h‡9ù†vø†x ¹h‡ƒø†vø†xh‡ƒ ¹ ‡xh‡xh‡oˆ‡oˆrˆ‡‡ˆ‡oh‡x ±x ‡‡ˆ‡o8ˆvP‡vþàŒo€Œoˆrø†v 8Qè€vP‡x ‡v8røÎø†xø†‡P‡xø†vˆ‡o‹oh‡xø†x Èø†vø†xø†xh‡ƒh‡xh‡xø†xø†‡ø†vˆrˆ‡oˆ‡o8r8ˆv¸‹vˆ‡o‹o¸‹o‹vˆ‡‡ø¹ ‡ƒø†xø†xø†xø†xh¹ø†xø†» u8ˆoˆrˆ‡y˜¹ø†‡P¹ ‡xh‡x˜‡o r0xh‡xø†vø†ƒø†xø†xø¹ø†yø†xh‡xø†x ‡xøuhy‹y ‡oh‡ƒh‡xø†ƒh‡r„»h3ˆ‡{… ‡þx ‡vø†ƒ ±ƒh‡xø†ƒ˜rø†xø¹ø†vø†vˆ‡o8ˆ‡‹oxˆoh‡oˆ‡vˆ‡vø†‡ˆ‡v¸‹vø†xøyœoˆ‡oh‡xø¹ø†xø†xh‡ƒh‡oˆ‡oxˆƒø†vø†vˆ‡oˆrxˆx ‡oˆ‡vˆ‡oèEà<0ƒvˆ‡v8Iø¹ z8ˆoh‡o¸‹vø†‡8yørˆ‡oˆ‡oˆ‡oˆ‡vpoˆ‡oh‡xø¹ø†x ‡PeÀ3h‡xP‡ƒøÈø†xP™ˆ‡vˆ‡‡€r8ˆv8ˆvˆ‡o‹vø†vø†xø†xø¹‡vø†xø¹hþ‡ohrˆ‡‡ø†xh‡ƒh‡xxr8ˆvˆr˜¹h‡o˜‡x ¹h‡ohÈh‡oˆ‡vˆ‡o¸‹o‹vø†xh‡oˆ‡ohÈø†xø†xø†xhÈxˆo ‡xhrˆ‡oˆ‡o€ŒvøÈh‡xh‡xxˆxø†»xˆo‹vø†9ù†ƒø†ƒ ‡xø†yø†xh¹h¹ ‡xø†x ‡xø†xø†vˆ‡vø†xh‡oˆ‡oˆrèEP<€x ‡yhrˆ‡v8ˆo8ˆvˆ‡oˆrˆr˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜rþ˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜r˜þr˜‡»ø†xh‡ƒh‡o‹o‹oˆràŒvø†ƒh‡xø†xø†vø†xhyø†ƒ ±ƒø†xø†xø†vørˆ‡oh‡oˆ‡oˆ‡v r ‡vø†x ‡xø†x ‡yø†xø†ƒhyø†ƒ ‡x ‡yø¹hxh‡o8ˆo‹v ¹ø†xhr8ˆvø†xh‡oˆ‡oˆ‡vøÎh‡ox8IØ€yø†ƒh¹h‡oˆ‡oˆ‡vˆ‡vˆr8ˆvˆr8ˆvø¹h‡»ø†vø†»h‡xh‡ƒxˆoˆrˆu8r˜‡ƒ‡o˜‡ƒxˆƒø†xh‡oˆ‡oˆ‡o8ˆo8ˆvøþ†v8ˆoˆ‡o ‡x ‡ƒxyh¹ø†y¸‹vˆ‡oˆ‡v€ŒohÈø¹h‡oxˆ» ‡v rˆ‡vˆ‡vø†v‹vø¹h‡ƒø¹h‡o˜“vˆ‡v8rˆ‡oh‡o rˆ‡o ‡ƒh‡o8u„oˆ‡o83ˆr…€Œo‹o ‡ƒø†‡8ˆvˆ‡oh‡o r8ˆoˆ‡v ‡xø¹ ‡y¸‹o‹vrˆ‡oˆ‡o8ˆv8‹‡oˆ‡oˆ‡v8ˆo˜‡»ø†»hrˆ‡o ‡yø†ƒ ‡xh‡x ‡yˆ‡vˆ‡v8r¸ r‹„að3ˆ‡ohu ‡Cˆ‡vþø†x˜‡oˆ‡o€Œoˆrˆ‡vˆƒŒvˆ‡vˆ‡oˆ‡oh‡xø†ƒh‡xø†ƒh‡ƒxˆxhyèIP<0ƒvP‡ƒø†ˆ‡oh¹ø†x ‡x ‡oh‡x ¹h‡x ‡oˆ‡W‰‡vø†x ¹h‡xh‡xh;ˆyø†xø†v8ˆy ‡ƒ ‡ƒø†‡8ˆo‹oˆr‹oh‡o€Œvø†vˆ‡y ‡oˆ‡oˆ‡o r‹oˆ‡oˆ‡‡˜rˆ‡o8ˆvˆ‡‡ø†ƒh‡xø¹ø†vˆ‡oh‡oˆr˜“vˆ‡oˆ‡oh‡o8ˆoh‡oh‡oˆ‡oˆ‡oˆrh‡ƒø†vø†þv‹o‹vø†vø†xø†xø†ƒø†ƒøÎh‡xø†x ‡oxˆxhÈø†xxˆƒø†ƒh‡ƒ‡P^ðh‡»ø†vˆ‡o8ˆoˆ¼àþá'þâ7þãGþäWþågþoˆ‡o rˆ‡o8ˆvˆ‡o8ˆo¸‹vˆ‡o‰ƒh‡o‹v˜r8r8ˆo¸‹vˆ‡v˜‡o˜r8ˆv‹vˆ‡oh‡xø†ƒh‡ƒh‡xˆvñlï[»oüÖ®]0‚ýÛ‚´#ßhÇ7ò®à† !Ç@ÈÑŽx|#äPG<¾1r´#ä Ç@Èo´#ßH;òx|#ß È7BŽxÃ#ìÈ<È1o „ßhÇ7âñv|£iA¾1vă ùÆB¾1o´ƒ äÇCæAŽv%ŽèÀ7ÚñvÄãó Ç@¾o äòˆG;BŽo,äiG<¾1v ä ùF<¾õñxÈ7Úo,¤ó A¾‡¤™Ç7âÑŽoăùþF<o„ñøF;BŽoăñøÆCâñ †|#ßH;âAŽvÄãñ Ç@Úñxã!ñhÇ@Ú1o´#]aH;âAŽoÄã ùF;âñxc í9ÒŽ…<$߈Ç7RI¨£i‡æqQt`!ê˜9<2r íÈ7âñ x ¤ñhÇ@¾¡Žx´#íˆ9âñ‡ ¤ñ G<Èo0„ßhÇ7Úñv|ã!ñ G<Èr4HÎ`»xäâ}3øí¡ÁvÛÅûï›Áyä’‹Gî[ñð êð êÐëñPå ßÐßPíð íð êAA¡íß í í ñð êð êð ñð êßA¡ñþêäð ñð ‰þ ñð ½þ êí íßíàƒåàƒñ äð ê0íäA†Þß äßßäPêð êð å ß@ßßä`èííð ½N Ãàð ½þ ñ@íð ½ÞßäíßßÐëßнþ íÐëßнþ íÐëßнþ íÐëßнþ íÐëßнþ íÐëßнþ íÐëßнþ íÐëßнþ íÐëßнþ íÐëßнþ íÐëßнþ íÐëßнþ íÐëßнþ íÐëßнþþ íÐëßнþ íÐëßнþ íÐëßнþ íÐëßнþ íÐëßнþ íÐëßнþ íÐëßнþ íÐëßнþ íÐëßнþ ½n½NííñÐáÿ áßëäíßÐßÐÑNñ0äÐëäÐ߀ßíäþííñâ}k'ð[¼oí¾©k÷-Þ·vñ¾ ¤ø­EŒíÚÅ#ï[„$!‰CHÜ’„#±G(fhG<¾ÑŽoHƒ/ùF<ÈÑŽo´ã}it¾1rüçñøÆKÚAŽx´#äxÉ7âñ—£ñè€#†3|£ñøF<Úñră߈9â!vÄãBùF;¾!~£/ù†PÈÑŽ¾|C}iG<¾áÁoÄ£߀Î7þÓ¡|#íˆÇ7âñx|#äøF;¾þr´#$ÇKÚÑ—oÄ£/!Ç7„òv|ÃòèË<ÈrÄãñ ÇKÎ(”oÈ£ñøtÚñ’oŃ/!G;¾r¼äñøF<¾răÿ™Ç7âAŽxã/ùF<¾ñ’v¼„6ßxÉ7„òx´£/߈Ç7âÑŽx|C/™GA ? äPG<ÈÑŽx#߈Ç7âñ¾´#ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß íþßðä­`ŽðM“„J4ÿ4úÀÿ°„ü K¸^ßà± ô ñ@/ñ g$ üÐó@òÐòðòðòÐò òðòÐòð%ò fB1æBAòÐò òÐòóð ’ ñð /ÑêàAß ó ß üô@ñ@ó@ñ@ñ0ääää0ä0ä ä0äó@ñ@ñ@ñ@ó@ó@ñ@ó@ñ0ä0ä 0ä0äääó@ñ@ñ@ñ@ñ@ó@ñ@ñ@ñ@äþä ñ ’@ äÐ/1ß0äßÐŽÀñ0äó@/!X6äðó@òðòðòó@ñ0äfó@_2ä _"/!ñ0äfêà²äð íðíðß f÷ äÐßêí ñ ß-ò íð å ßßÐßÐêäÐêð êßPêàAßäPêð ñð êß åPêñ íð íð íß äð êÑßÐßßßðß ß -ßÐêÑß íPêäÐñð êþßðêàÊ€fð ñ@ó ’ð ñÐñÐÐñ ñð ô ñÐßÐ}áAßÐßßßí´!ßß0íð ñ@ó@ Ê€fä ßð%íäÐ/ñ í ßßíäíßßßðíð ñàAßðíí@óð ñÐß ííð ñÐßÐêíß ß0ÐÑ/qFñ@ñ@ñÐßðíßÐ/ÑßÐBAñ -߀eg$äß äðßßí ßÐñð ñð þäß@ÐÑ/Ññð ó@}ÑßÐßíä0BÑ/ÑñÐß@ñÐñ°ñÐñ@ôäßíòÐñÐ"ñ@ ¼€ðíä€eßßÐä ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ßÐäðßðä´`’ðúðôðôðôðôðôðôðôðôðôðôðôðôðôðôðþôðôðôðôðôðôÀôðôðôðüð÷ ÿ@ÿ@ÿ@ÿ@ÿ@ÿ@ÿ@üðôðôðôðôðôðôðôÀúðñ ± ííðßðäêàüÐñ@ó ô ñÐñ@ñð BA/áAäíð /Ñäðßðòêðßäðò@ñÐòð ñÐä0/ÑÐ0}ñ B!äíäðí ä ê ²ßíí@óð ñð ñð ñ! 0íàüð _B}Aó@óðä0ñþ@/AóE Éä0ä0/Aôä0ä0ñ ä@}Ñä0XFó ò@ÐÑñÐŽ@ /ñ }Ññ@ñàüðí@ñÐòÐßí í òð ñ@}ñ /ñ ñÐB!BAñ@ñÐðÐ}AñàAòð óðí@ñÐäðßðíÐäðí@}á­ ßä íð ä0aô  ßßäß@/Ñ`ÖBÑßÐä gôê äðßÐêÐÿÑ}Ñäðä0ä0ä0ñÐþñ@}AñÐñ ñð ñ@ÿñ ñð ñЊ0 ~}ñ ‡ä@ßàAßßóð ñÐ/ÑBñ êßä€eäßfòÐ’  x`íðíð ñð ñ@/AßäDó@ñð ñ0ßß ßíßÐßßßðäðíäðßàA}ñ Bñ ñ@ßðßðíêßðí ßðßàAñð íäÐñÐÐñ ñð í í íßó@BÑñð íð ñð ô íäðßß /ñ íþíí@ñ0äÐXö ñð gô ÿñ /ABÑ}ñ /Aßääóð í íßí0äpFñÐñð íß-Òä Êàð ñ@íô ô íðí0ä ßíßíßíßíßíßíßíßíßíßíßíßíßíßíßíßíßíßíßíßíßíßíßíßíþßíßíßíßíßíßíß ßÐ/Ñ/ x ëEÿ@ÿ@ÿ@ÿ@ÿ@ÿ@ÿ@ÿ@ÿ@ÿ@ÿ@ÿ@ÿ@ÿ@ÿ@ëE¶@*Ð ÿ@ã@÷ðú0 ÿ@ÿ@ÿ@ÿ@ÿ@ÿ@ÿ@ëEÿ@ÿ@ÿ@ÿ@ëEëEü ßà­àíäßðíäÐŽðäÐñ@ßßäÐ/ñ ñÐñ@ñð ñð ñð —0ñ@ñð Bñ äS þßó0Å/ñ ñ0äßÐÐ0ñð ñð /Ñ"/ñ ñð ííð ñ0äð íŽ@ ííßÐííí ñ0ŠÐíŽð/Añð ñ@/Añ@Ðñ BÑñ@íß`€8ÐäääðßÐ}ñ ÐP/ÑßäÐBAñ@ñ@ñ@BAñ@íßääÐß’ ñð ñð êÐß í üð /ñ íäðääðSÜñÐ"/a ÌάßäßßíßÐäþäð íßßäð×°ß äðäßäð /Ñó@ß ßßà´ðíííð í í`ó¢Ðñð ííó@êßÐñð êßÐäßß íð /ÑßpFD/AíðäðäSÜñð ñð ñð íäÐBÑñð í@ííäíÐí@íðäð ñ@Bñ ñ@ßÐäíßЊÀ ~`íð íð‡;A/Ññð /Ññð ñ@ñð BÑ}ñ ñð ñð ñð ñþÐñð íð /ÑßÐßíòäЊ  xàÐä0/ÑñÐBÑñÐñÐBÑñð }ñ Bñ ÐÑBÑ/ñ ñ@ÐAñð ñð /ñ ñð ñð óíðßääðíð äßðß äÐòðíð íð ñð Ðñ ñð ñÐßíÐß@}ñ ñ@/A/A}Ññð ñ@ñÐß ¡.ÞÀo¿Åk×.^»ñäµû¯Ý·xíâ}kø-^»oí¾ üÖPdCróÚ}‹÷-^»†äâµkø-^»‘ßⵓG®Ã!exˆþ”÷-¹äâ}kØîÛÀvñ¾Åkï[¼vñ¾Åkï[¼vñ¾Åkï[¼vñ¾Åkï[¼vñ¾Åkï[¼vñ¾Åkï[¼vñ¾Åkï[¼vñ¾Åkï[¼vñ¾Åkï[¼vñ¾Åkï[¼vñ¾Åkï[¼vñ¾Åkï[¼vñ¾Åkï[¼vñ¾Åkï[¼vñ¾ÅkïÛÀvòÚÅk÷-Þ·väb™‘Äß½÷þÝûwïß½÷þÝûwïß½÷þÝûwïß½÷þÝûwï½HØà[Ç€´{ÆÜ㎨¹GŸ{þ¹çŸ{þ¹çŸ{þ¹çŸ{èáçžîùçžîùG¾þî¡çzøù‡œMb‘䛆"g râq„Ÿ„ú&žvÈÁ1žoâù&žoâQ'rÚ‰d6²1‡Ôi'r¾ùf r"J(ã!G†¾‰ç›x¾ˆœo Êx¾‰GxÈQ§oâù†œoâ!GÚù&GZIè›xú&žv¾‰ç›xÔ `ž{DÙ€œyáç›x¾‰ç›x¾‰Goâù&žoÔù&+ÛQç›x*ç<9œo⦀$6ˆ@lâf€$6˜@p¾f€oܨà›x¾ñDoâù&žoâù&žoÚù&žoú&žoâù&râ!'Gdiˆœ¾‰çþ›xÔqä(ãù&žv¾I(uÔùf râig ( À›ož™Arú&žoâ!Êx¾iÊxÚ¨oâi'žoâ!çu )Êvâù&žv¾‰‡œ l盾iç›x¾ÈY¾‰'¡oú&žoÈ™'Œyâ‘dƒyJè›xÚ©‘¾‰‡œyÚ‰ç›x¾‰ç›¾‰§È‰‡œ¾ig vjg vú&žoâù&rú&žoâùF¤„Ú‰§xú†œx¾‰ç›†Ô!gž‘jg r扇œ†:d<̨xȑ䑾é›x¾‰§x¾‰ç›x¾i'žoâù&žvâiþgžojgr"G$("§G†ñÃŒyÈè›vâù&žoÚ‰gïxÈù¦ojGvjç›vú&žoâ!'žoÚ‰ç›vDú¦oDjg væùfñoÚi¨yÈig y¾‰Ç7Úo$$íøF;¾ÑŽoă™Ç7òx|c ß9òx£"ùÆHÒŽx|#߈ŽDøv#߈Ç7òx´#ßG;â¥xc äˆÇ7âÑŽx|#ß9òvÄ#!ñhÇ7Ú1oˆ0߈Ç7vÄãñøÆ@ÈoÄ£ä9ÒEÐÂhÇ7Úñ þ+¶c ßhH;¾o4ä ùFC¾Ño4ä ùFC¾Ño4ä ùFC¾Ño4ä ùFC¾Ño4ä ùFC¾Ño4ä ùFC¾Ño4ä ùFC¾Ño4äiÇ7Ôo ¤ ‰…ñzüãÿ¸Ç?îñ{üãÿ¸Ç?îñ{üãÿ¸Ç?îñ{üãÿ¸Ç?îñr6 ü Ç=è!ƒðc˜G züãÿ¸Ç?îñ{üãÿ¸Ç?îANzüãÿ¸Ç?îñ{üƒ÷ Ç?î¡Ð#Žh…#âoăG;6*‰Jê G;¾ÑŽxþ´#߈Ç7Ô¡Žv@©í ÇxPŽrăæø7@Àp@êÆÒ°p@íøF8V€ @ßXG 0€£À@B¾¡r|£êˆÇ7âñx$äñ°Ò7âAGФñ ÇFÛ±ÑvÄãíÀFEÑyCÿhÇ7fÚŽo¨£êhÇ7Úñ™Î4!ñø†:Ú¥r|c9(G¡ŽoC‡9<ƒoCCø†9bƒxcñG’ñ rŒ PjÇ7Úñv|#߈Ç7fJŽv|£߈Ç7*G´Bíi;âÑŽx|£ŽøG;âñx@þ)äø9ÚAŽv|£P"Ç7ÈÑuàP9v!p”ÃB TŽx¸¡ñø†:<¡€r˜C@€ Àñ h ¸ð€âñ€ÒLã¥văñ€R<¾ÑŽoÌô’ˆE<äÑŽ~#߸k<Ìpyˆ¢ñøF<ÈRr´ãñ G;âñv|£w%G;@ªŽx$$ߨÛ<Èr´#íˆÇ7âñ uÄãñ Ç7æAŽoôñøÆ<¾vlôñøF<Èo´#äØè<¾oÄãñøFŽ¿¡Žv|CíPHÛÒot@ÊÀƒ¾oÄCþŽøF<oÄãmÇFÉq×olô9Þ[<Úñ„€ô ýF<¾Ñæ(B~0C<rl´ý9âÑŽo̤ßhÇ76JŽx|ƒóˆG;¾o´¹ ýF;¾rÌãñøF<Úñ½m´ßhÇ7îúx$$äh3HÉol”óØè76ú¶c£ßØè7âÑŽolôýHÛñvÄãñhÇ7Úñx|¤ß˜GŽ¿oÜ•óøÆ<Ú±ÑvÄã%G;rÜ~¤íˆG;¾±Ñol”ñ G<¾ÒolôñøFB¾±ÑvăñøF<¾oÄ£þmG<ȱÑv|#äˆ9: ^àAwýF<¾ÑŽoÄ£òøF<¾ÑŽocä˜G;¾AŽy´ãä˜G;¾AŽy´ãä˜G;¾AŽy´ãä˜G;¾AŽy´ãä˜G;¾AŽy´ãä˜G;¾AŽy´ãä˜G;¾AŽy´ãä˜G;¾AŽy´ãä˜G;¾AŽy´ãä˜G;¾AŽy´ãä˜G;¾AŽy´ãä˜G;¾AŽy´ãä˜G;¾AŽy´ãä˜G;¾AŽy´ãä˜G;¾AŽy´ãä˜G<ÚoÄ£êøÆFyaEüƒÿÀÀ$@t`}¸~¸‡c(þ€{˜ @‡{ }(@¼‡ ¤‡ ‡¸z¸z¸}PGhGø†»ú†xhyøup„˜©oPrP()‡oP‡rPrø†r˜)r(u€H()rh‡rxTPs˜ P`€!‡rh‚ PrÐsHsð(l0‡Ào†(u ‡Ê*‡rP‡rP‡9$u(‡ÊR‡rPrØYøJrˆ‡„¸+Ø(Iè€xhGøu˜Ãr˜)(!u(u(‡o(‡o˜Duø†r¨¬rÐp h‡o†oPdP€r†oþ ‡]8r† uP‡k€d˜Cuøu(u(uøu(‡oP‡rP‡rP‡r˜©9$up„Vˆuh‡oˆ‡„Ø(rˆGø‡rP‡o˜©r¨¬oPrP‡oàCu (1€sh ‡rÀsˆ ‡n€dÀ‘X‚rˆÐsˆð`€!ð†r†ør(‡o˜))‡™*‡oP‡r˜©oP‡oPrøuˆGh…x ‡oبvˆ‡„ˆ‡vø†x0ƒxQØ€yø†xHˆo©vˆrh³vP‡v©oØ(u "‡x ‡krبvبoˆ‡þvȱ„ø†xh‡újrˆ‡vˆ‡oh³v©vȱo˜‡xø†vø†v¸+rب„ø†xø†vø†ÚI<ƒxh:„v‡vˆ‡v˜‡oˆ‡oˆrˆ‡vبohú†ú†„ø†vˆrh‡j‡xø†xø†xø†xø†xø†R‡x ‡x ‡„aÀƒ0Húyh‡xh"‡xh‡xh‡x˜rˆ‡„ˆ‡vبvˆr¸«oh‡oˆ‡oˆ‡oh‡oÈ·ú†x˜rˆrˆ‡o¸«vø†vø†"‡xh‡xHˆoˆ‡oˆ‡oh‡»j‡j‡xh‡ú†xøuˆ‡ohþ‡"‡x˜rبoˆ‡oh‡j‡o©v©y ‡xø†ú†vبo©oˆ‡oˆ‡vˆ‡o¸«½ù†xø†xø†x˜rˆ‡oبoˆ‡o©oh‡oh‡x ‡j‡ñü†xø†xø†vˆ‡vØ(rبoبy ‡xh‡»j‡xøú†x ‡»’‡Peðø†vø†x˜‡o˜rˆ(Ïx˜r)r)r)r)r)r)r)r)r)r)r)r)r)r)r)r)r)r)r)r)r)r)r)r)r)r)r)r)r)r)rˆ‡vØ(rþبv ‡X0Gøzø‡ÿû‡ÿû‡ÿû‡ÿû‡ÿû‡ÿû‡ÿû‡ÿû‡ÿû‡ÿã}0‡{ø¿y@ˆcü‡ÿû‡ÿûzøqøü‡ÿû‡ÿû‡üzÐ} ‡vpZp„ú†xø†xh‡oP‡r„˜Är0r(Ø9$‡9$‡‚õci˜Cu˜Duø†m˜c0€o؆†ð†n]ð†“%n]ð†i0†(`€r ‡9Ä‘rÀ™Cs ‡„%‡rˆGˆ…xø†vøú†x ‡vø†vø†¸q„ø†vp„˜Cr˜CrP‡þ„õÚr ‡‚%s@‚ 0rØHu˜Csø`€“õc€o†0rØ…ð†9¨rHXr(røZ¯%‡rPrØZøú†x ‡o)Iø‡r ‡ÄýZr˜Cs c@€P€^(n]ø†m0†0r(‡k€dxÐoØc8€oÀ†9†˜Ds ÎMXs ‡r0rPGˆ…»ú†vˆrˆ‡oØ(u0ƒ{ Eè€j‡»ú†vˆ‡v˜‡oˆ‡oˆ‡oˆrبoˆ‡oˆ‡vø†ju©v‡½i‡j‡oØ›Jˆxøþ†xøú†xø†vØ(u©oˆ‡vبoh‡oˆ‡oˆ‡oh‡oh‡xø†„©oبy ‡oh‡oˆ‡y ‡oh‡j‡»ú†P„að3huø†xh‡CP(!‡»j‡xhrˆ‡vبoˆ‡vˆ‡v©vبvبoˆrبv©v©vø†x ‡xø†ÚE?0ƒvø†vØ(u ‡oب„Ø(yørÈ1rˆrˆ‡„ø†juhj‡xh‡»ú†xHˆoˆ‡oبo¸«vˆ‡oˆ‡oˆr˜r˜‡vø†xh‡xhrبoˆ‡vبoˆ‡oˆ‡vø†xÀ‘xø†k‡xþ ‡xP‡xh‡ñl‡o ‡yø†xø†xø†vø†»j‡oبvø†xø†vøj‡xø†xHˆoˆrˆ‡vˆr˜ú†xh‡x ‡oˆ‡vˆ‡oÏxHy€’xø†vø†ú†y©„øj‡xø†xh’rh‡oˆ‡oˆ‡oh‡Kˆoˆrè€CP<r˜rÏoHˆoبoˆ‡v(çŒÖèæèŽöèéú†xø†xøJˆ¢<8~¸‡ÿ»‡ÿ»‡ÿ»‡ÿ»‡ÿ»‡ÿ»‡ÿ»‡ÿ»‡ÿ»¼zpH} ‡{à‡O(~0 †¸z¸‡¸qøþqøz‡ø¿¸zøqøz¸‡ÿ»‡ÿ»‡‡ø¿{ ùˆGˆGhjj‡oˆGøo oøo ‡r o ‡“D)ñ`]ðr(r8ÙKЀ€o†Øo(hoðr(‡“˜€ x€ (€o†˜C»%‡“-oÀ‘o8Yrð™C(qZˆr˜‡oˆ‡vÈ1r˜‡xz¸QèrˆGør(rð†rðr(o oÈYsÀ‘“ÍYrðr0‡@ø`]8YO8€o†m O8þ€o†ðiFÈ€/(rð†Iô†r ‡rðr(oÈYoøo ‡r o(‡vpZh‡oȱ„ø†vp„ð†rÀ(!o o˜D»-o(rðr0P†a…¸‚i˜€˜€p€m OPrpƒ ð`€×~€ (€o8Ùo†ð†røo ‡9üoÈY»Mï9üo€Gh…oˆ‡oh³oˆrˆ3 ‡{… ˆ‡vø†vøú†xh‡xø†yø†xø†xHˆxh‡xhr˜‡xørˆ‡oˆrˆuø†xhy ‡oØ(rˆ‡vP‡oˆ‡„þˆ‡vˆ‡o©vبvø†xøú†xP‡v©vˆ‡v¸«oØ(rˆ‡oبvø†û†»ú†x ‡xø†xh‡êIP<0ƒx ‡xø†vp„ûuˆrˆrˆ‡oh‡xø†xø†xø†„ø†x ‡oˆrø†vˆ‡vبoh‡xø†„ˆ‡oˆrˆ‡vبy ‡yèEP<0ú†v©vøyHˆo©vø†xø†vÏoˆrˆ‡oh‡oh‡x ‡xø†xø†vú†j‡ú†xøj‡xh‡|ûy©vØ(rˆ‡oˆ‡vØ(r¸«vˆ‡vˆ‡oh‡x ‡j‡xP‡þ„ø†vø†xø†xø†k‡xh‡»ú†v¸«oÈ·oˆrø†j‡j‡x ‡»ú†x ‡xh‡6k‡xh‡oˆ‡oHˆoˆ‡oˆr©v¸«vبoˆ‡oبy ‡xø†xh‡xø†xø†vø†»j‡»ú†xø†xø†v¸«P^ðƒ©oˆ‡oØuh³oˆ‡oðßoØ›oØ›oØ›oØ›oØ›oØ›oØ›oØ›oØ›oØ›oØ›oØ›oØ›oØ›oØ›oØ›oØ›oØ›oØ›oØ›oØ›oØ›oØ›oØ›oØ›oØ›oØ›oØ›oh‡xøj‡xø†vø†vˆ‡oP‡V0Gøôþÿˆ{ôÎk€ež¾2BÌ`ž¯GÒÓwÞ=~ôîÝ£woà½â(’¤wÞ½’ô¾9j%)Þ·vßâ}‹G.^¼o’þ‘óFÎ[9oBËy#WÎ9¡J•.RÎÛ7oÛ¸hôm›±߀ ð–°Þˆеœ·mÝH#ç–\9`„’+WΛ]oå”–#çœRrÞâ9â…ç·xßÚ}kwø€xóuÀ)‰ŸPsäÌ‘ófŽœ9ræÌy#ç͹ræ¼&7ÍÓ€YÔ k¢0%²ËÃ0%²=Ëã°BË!¡`\9so½‘ó¶Í9snÍy3GÎþ¹¥ÞÚ9âE.^»xßp’ÃÙÎ?oäÄ“óFÎÛ[·ÞÈ Ý–ÍÙL3M$HÓMÒ|ãÍ[Û˜“@'|±M7èòM9ä”ã 0SÎ7À à 9Þ”³9J½%žPåx#´Ìó Ní|ÓÎ78µ39f3"|Ï<äÄóM<ßÄóM<í†S;QÆCN<äàÔΓYÆóÍaíFNß´Ï7‡}£N<äÄó NíÄÓÎ7íÌCN<ä|ÓÎ7ñ|ÓN<ßÄó NíÌóM<ß´ƒÓ7íÄÓÎaíÄÓÎaíÄ£N;ñ|Ó"ÊàF;‡}sNí|£åaíÖΓßÌO;8þ‘O;ß´ƒÓ7‡}“e;ßàDÎ<H fÈó NäÄó 9óÄCÎaê|ƒÓ7ñÏ7í|ÓÎ7ñ´C*98µ“å7ßàÔÎ7ñ|ƒÓ7ñ|Ï7ñD)Ï7í|ÓÎ7‡…¥:Z~ÓNßÄÓ9ñ´ó NíÄe;ßÄCΓßÌÓN<íàôM<äÄCN<ßÄó Nß´ó NßÄóM<ßÄÓN–ßÄóM<íàÔÎ7ñ´O;ñ´Ï7ñ´óM;ßÄó NßÄCNßÄó NßÄÓÎ7í|Ó9ñ|O;ñ|e<íÄóÍaí<n<äÄóM<ßÄóM<ßàôM<äÄCNŽ(ƒ‡ßàô NþäÄãV<ß´óÍ“äÄÓŽ<íÄÓŽ<íÄÓŽ<íÄÓŽ<íÄÓŽ<íÄÓŽ<íÄÓŽ<íÄÓŽ<íÄÓŽ<íÄÓŽ<íÄÓŽ<íÄÓŽ<íÄÓŽ<íÄÓŽ<íÄÓŽ<íÄÓŽ<íÄÓŽ<íÄÓŽ<íÄÓŽ<íÄÓŽ<íÄÓŽ<íÄÓŽ<íÄÓŽ<íÄÓŽ<íÄÓŽ<íÄÓŽ<íÄÓŽ<íÄÓŽ<íÄÓŽ<íÄÓNQ’ó$98µ-ðpˆÜc ÷È=rÜc ÷È=rÜc ¼`$À†o¬# ÐE<Œ!|Ðã ÐÂ-8ÌÂó ?èqÜ#…ô¸G ãáˆXHâ0þíˆÇ7âñ œ¨ÃÿðÆ6¼± oÃÛØ†7¶As<ÑäðÆ6ȱ rDbl…3èàb@ÓpÆ  ` ÀÛÈ0 ””`æ „7¶ÌbÏ „2€1r˜ã‰Þx¢7¶¡”mxcÞØ†P¶ámòhÇ7pÒŽÃ#ß8ŒæqQl êpÄ?¼‘ odC(äØF6¼‘lxcÞȆP²áYnÃÛÁ²!rpƒŒÆÒÀ¨ ߯ÒÀ¨`߯”r¤`Ùxâ6–BŽmdÃÛȆ7²á rlC)äðÆ7âáZàäñþøN¢DŽx8âOô9¶ámxcä0Ç4–² reÙ0†²±Yf Óˆ f±aÜÁÓ ‡ TPldc#(6œ1 Blx"9ž]<Ñny¢R¶ámeBqË6ȱx8"ñhÇ7È1œ|#Q‰8"ŠãIí8Ì7âÑŽoÄãñh9âñ'}'íøF<¾ÑŽo#ßÀÉ7âÑŽoh‰8ùÆ“¾q˜oăñh©pÒŽx'íˆÂÚñ¤oæäˆÇ7¢ô rÄãQúF<Èq˜ 8bx0Ãa¾G´ã‡ùF;¾ÑŽoÈ£ñ þG<¾r|£ßhÇaÈ‘¥y#ßÀI;¾“oDé8iG<æAŽ(bxÃaÚq˜y|'á:L”o´#߈Ç7âñ œ´#äˆR¸%œ´#ßhNæñx|#ßPG–Â…“y£ñøF;¾ÑŽx|£òˆR<Ú“oæñøF;âAŽÃ#ßÀIbÛñx´ã0íˆÇ7pòy#Q:L;pBŽx|'߈G;pBŽoăñøF<¾¥x|#߈Ç<ÈvÄ#J8™9Úq˜oà¤ZjNÈy#ß8L;¾!„}ã0íÀÉ<¾¡¥oÄãñhÇþ<: ˆaà8iNÚñ¤o<éí8 9pò ràääÀÉ7È“o'ß N¾Aœ|ƒ8ù9pò ràääÀÉ7È“o'ß N¾Aœ|ƒ8ù9pò ràääÀÉ7È“o'ß N¾Aœ|ƒ8ù9pò ràääÀÉ7È“o'ßhG<¾ræ‡ùF;Ô 38âô¸Ç@þ!züCôø‡8èñqÐãâ Ç=èñq äô¸Ç@ôA|èC—Ð@VÐãÆ9èk$ày8Ä!~‡ÿC¹GÄr‡ÇñpD;þ¾ÑŽ,µCñpÄ?¶ámœÛ ǧ‘mxœÞxâ4”q €$`Ã4Ò là È0° oL˜å3V€ `ÓpF aÀÀ4²ñDrlƒÛ Ç6ȱ rlÃÛ ‡Ë½G´'äG;âñ œ´#߈Ç7 ŽxH¢ñ ‡#þ± olƒàÊ6–² oá~ዃ3¾â¾88ƃ#ÐN|9ÄÃ7´Ãa|C<|C<=܃(lÀ<ă#ðÃ6ð'9ð§2ƒ3ˆÃ4DÃ4ˆƒ3ˆƒ3ˆÃ4DÃ6DÃ6L9LÃ6ðç6(nÀlƒ2ðç6L98ƒ2þƒ2dÃ6ÌRà+Ã6ˆƒ3(Ã)Ã6DÃMƒ2Ã4lnC<8-´ƒ:?ð§88ƒ88ÃâÇ¿á×§ü׿88Cá·ƒ#ÈB<|C<´@|‹G.^AƒfæÝSÔ!Þ·yí Æ#Wܼvãµ+ø-Þ·xí¾ÅkWð[¼vÛ}+ø-Þ·ˆßâµ#W\¼vß ’›÷-Þ7Œñ¾”×c;ƒíâ‘›‡±]¼oÛ‘›gð[»‚ Ãc¦à·yäµ3ø-¹vó¾ü¦.¹‚íâ}ûV\¼oíâ}3ø-¹xßâ}3Ø® 9ƒñòc¦Ý7ƒä0¶‹÷Í`»‚íâ}k¯]þEbÁâá"ââ!6 ‚¦SZa¡YÚ6A§Á¤7A¥ [§AAÚùA¦Á6A§åYœáâAþ.Ô¡ ¾Aæ  B:À ¾!Èáââ¡ â âÚ¡ ÚÁ ¾¡âḣ ¾¡¾aÈ!¾¡ È!æâáÚáÚ¡ Ú¡ ¾¡ ÚAâáâáÚ!¾¡ ¾!Èáâáâáâ¡ ¢ ââ ââáâá ¢â¡æÚA â:@”Ì`‚Ú¡ $á â>… ¢â¡âââ¡â¡âAÚáÚ¡ ¾¡¾æ!ÈÁ ¾¡ ä"Ú!:@xÌàâ!6¾!¾!Ô¡â¡âáæ!¾!Úá"þââ¡â¡¾!"¾¡ ¾!¾!Ú!Ú!ÈaÚ!¾â¡"¢â¡¾!¾Á È!ÚA¾!ÚáÈ¡ b#È¡ ¾!ÚaTÚá âââáâáâ¡ââá âæ#¾Á Úá0BÈaâáÈÁ Ú!"Úá ¢ ¢"â ââáÚá⡾!¾Á ÚÁ Ôâáâá âæ¡ Ú!bã0ââá ¢¾!¾!ÈÁ Ú!È!Ú¡ Ú:@xÁ €âáâáâ¡âá ‚ "6âáâ¡âáâ¡âáþâ¡âáâ¡âáâ¡âáâ¡âáâ¡âáâ¡âáâ¡âáâ¡âáâ¡âáâ¡âáâ¡âáâ¡âáâ¡âáâ¡âáâ¡âáâ¡âáâ¡âáâ¡âáâ¡âáâ¡âáâ¡âáâ¡âáâ¡âáâ¡âáâ¡â¡ ¢ âÈ!¾Á ¸#ÚA¾¡ ¾Á Ô¡†bAb!d!haî[aîiAhAh¡h¡hAh!dáícAæ>háíU¡b¡hðcAZÞ~îcaîeði!þæ^h!dÁîcÁî[Þ^Ÿœá¡ ‚âáâáâ¡ ââÁZ¡Þ~÷ia÷w?ZZvîwî[aîca÷i¡Þ¾b¡æøc¡b¡bø[áí¹¿ha÷çžûí~î[!ha÷y¡h¡h¡œâá"‚âáÚáâ¡ BâáBQrñÚ©stÈ‘BE :|Ñ‘¢MJj¨¨¢F‡Š5T´ic,eßⵋ÷-^¼oñÚ‘ûœ²X4[Ù¤«U,›­hµŠE+h« ­b Ú*ÏXAmƲy4j+Z­hµŠÕ*¨MþZ6iµŠÕ §MZ­bm+h,gñ¾ÍSùM¥Üví¾Å 3/ž¤ rÛ©l§’œÜxßÚÅ#7î·xßT¶SI.Þ·vƒå¶SÙ®rö íð þò@ñð ñð êßÀXäí ñð ñð ñ@íäð ñÐ*ñ ÷ß@ñÐ*ñ ê ßÐ*Ñß íß ßÀXäßa÷ßÐßíð ŒEñÐñð ñð ñð tñ ÷ÔêÀXíßí÷í íaí t¡tä ñÐF*¡ñ íäÀXßÀXäÐêÐAÖêÐñ@ó@ñ@>¦ñ@ñ@ñÐñ@O¦íßêäÀXßÐß ñ lí íßí ßâp’Ðä ñPþñ ñð í0Y±uOñÐêßÕä aßÀXí0Yíßäð]ä ñð í@ßEñð ñ@íäíä í ñð “ß ñ[í í ßÐäÐó@íä ßääßäð ñÐŒõ í êí aä íßÀXí êß “äÐñ@Fñ í aäð íßÐñ@*¡>ÖßÀXíß0äÐ>Ö*ñ í`ô ’Ðñ@ß ó lê ßÐß tAŒõ ñð ö íð *þqOñ@ßßÀXäð íät1äð ñ@ñ@ßßä ä ßßíßÐñð ñð *Aö *1ßä íßßaßßЊ  ~`*ñ ó ‡@ñð ñð ñ@ñÐñð ó@ö ñð ñ@AÖñð ÖFóí@ó äÐ’À x`FñÐñà†ßaí ß@ñ@óí ßßÐßíð ñÐß ß@äÐä0ö ñð ñð äÀXß íÀX÷ô Œõ äÀXääaíàcþä0äßÐßßßÐßÀXíð *Ñ*ñ äß aíÀXßaííð íð íßíð t!ßêÐAö ÖAö íð äíð ñð ñÐŒEä íäßßßßÀXíí ß0ß ííð *Ññp¼€ð ñð AÖ*Aó íßíßíßíßíßíßíßíßíßíßíßíßíßíßíßíþßíßíßíßíßíßíßíßíßíßíßßtä0ñð ñð ñÐ*ÑñÐß aßßðdäÀXää äß@ñð ñÐäÐñ@ñ íßä í íð íaíß@ñ@ŒÕ*ñ ñÐñÐä ßÀXä ää ßÐêÐßßßí ßßíð íð ñÐñ@ät¡ß@ñ0Yíß êíð ñ@*ñ tÁXíð ñþ ßßà†ßÀXíí0Yßíê@ßtAñÐßÐßêð í ßÀXßaíð ÖFß äí @÷ ÀXäêä atñ ñÐäíít¡ß@ó êÐ*Ñêíàcêä0ŒEñð ŒE¦ö Œ¥*ñ Öß aíäÀXßíííaíêð ŒÕßêÐßß@ñ@ä íð ñ@ñ ñð ñð *Aö ñð ŒEñÐßÐß0ñ@*Aó÷ô ñÐþßêÐñÐßíàcßÐßßß ßßaf@÷ aíÀXtÁXêð ŒÕßíßß@ŒÕß@ñÐßíÀXíð íàcòð OÖÖÖñð ö ŒÕß íð *ñ ñÐñ@ópOßßßß ê  Àfð íí’í aðíaßÐ*Ññð íßÐßÐñð ííßÐß ÷ô í ßàc Àfð ñð *Aêääß *ñ êíí íð Œ5þä ä äßÐ*Aö ííßÀXó@ñð *ñ ÷ô ñ@Œõ íÀXtÁXßÐßpOßÐßЬ8ßaßÀXßäð >ö íð ñ@ñð Fñ@ßó@*Ñ*A*A*ñ ñÐñð ñð t‘aßÐñð íð í ß aä í tßä ßaóð ŒÕñð íð ñð ÷”aßß íäð ó°=`Ôß ßß@ñ@ß tñ Œõ ñÐñð ñÐñð ñÐñð ñÐñð ñÐñð ñÐñþð ñÐñð ñÐñð ñÐñð ñÐñð ñÐñð ñÐñð ñÐñð ñÐñð ñÐñð ñÐñð ñÐñð ñÐñð ñÐñð ñÐñð ñÐñð ñÐñð ñÐñð ñÐñð ñÐñ@òÐŒÕ*Ñ*Ññð íäßÐßßaíð ñð íííð Öñ0ä ídßäÐŒõ ñ@ßÐ*AßÐñ@íÀXäÐñð íßÐ*Añ@ñ@*Ñ6ä ß0ä0ä aí@*ñ ñÐö ñð þñ@*Aí *1ß@ñÐñð ñ@ñ@ñ@ñð í äð ñð ŒEñÐñ@ñ@*ÑßpOŒÕñð íäÀXäàcßó@Œõ í ßßÀXßßß ñð Öñ í íFÝäð ñð ö êßäß ßÐêÐêÐFßpOßÐñ í tñ ñð ö t1ä ßÐñÐêÐßÐêÐñð Œõ í ííß *Ññð ñð ñÐŒõ *AßßÐñð í ß íä þíäííßÀXt¡ííßaßÐñð ñð ñð óð *ñ íídí íäÐ*Ñ*ñ ñ@ŒEßßpOŒõ ñÐñ@Fña0ñ ÐñÐßßÐñ@íßÐŒõ ñ@>ÖòÐñð Fí íß ó@í ßÐß ßÐñð íð *ÑêßäßÐßí ßß ß aätßÀXtädß *ñ  ¼€ftAípäß÷ô ñÐßß ßþí äaäÀXß aê@ñ@ó ííð í0Yí@ Ê€fð ñð ñ@ñЦ¦í@ñ@ß@óßÐ>ÖÖòÐñÐßÀXß@*Ñß atäíä0÷ÄXíð ñ@ß aäaät!ßÐßßÀXßíßÀXí ííð ñð ŒÕŒõ ñð *ñ óíÀXßßÀXí íßßí äßÐß íaßÀXíí@ótñ¾µkÏ`»oñ¾Åk÷Í`<‚íÆk\<‚þßâ}‹×.Þ·xí¾Í{بFâµûï›Ar#¶‹÷íá·‡ß~{øíá·‡ß~{øíá·‡ß~{øíá·‡ß~{øíá·‡ß~{øíá·‡ß~{øíá·xßÈÅS÷í[»oñȵ#ï[¼oñÈM4øÍ`;ußÈÍûf°¹xäæ©‹G.9¾í¾µûï[;ƒäæüf°ÝÃoñüö Áo¿l÷m"¹xß~‹÷­Áväæ$7/ÁoñÈÍ‹÷-^;rñ¾µ3Ø.¹y|¿Åk\¼o¿Í›Hîa;róⵋ÷-Þ·‡ßâ‘{øÍ ¹xäâ}‹×î[Gâù&žoÔŠç›v¾iç›xÚù&žvîSë>uÈÑî›x¾‰ç›x¾‰þ‡œvȉ§oȉçíÈéÀeð0ƒœxÔú&>¸¾Ñî›xÚÑ®o´kç¾o´û&¾µ¾ÑîíÔŠo­xàúF»oâYë›û¾‰'®oâSë›øÚù&>ÛÚQç´oâi'¾v´›'¸¾‰ï›øÖú&>¸âù&žµ¾‰¯x¾‰O-uÖ"gíÖúF»»¾¹ožxÚ‰¯ud‹ï²oâiG»R0á-R0!>0X`!z çãÈù†œoÄ%GÜoÈ)—œrÉ)—œrÉ)—œrÉ)—œrÉ)—œrÉ)—œrÉ)—œrÉ)—œrÉ)—œrÉ)—œrÉ)×ÛrÅ5îoÉùÆbr¾þ!ç‹Ë͘œo2—œoÈù†œoÈ×[qÉùÆ8qÉù†œrÈù†œo¼ý†œo¼ýƸo2—œo,þÆ8q“X\‹¿!çãÄ%G\r¾±ør¾!Gbã¾1îã¾!çã¾±X\r˜&çr¾™œoŒûƸoŒû†œoà¶øo¿ñ¶\r¾!盌¿1îr¾1îo³éR`ÁL`!…̯ÍÜ„ æÑN­o´û&Ù¾ÑNR¼ÔëíÚ‰ç›x¾‰§í¾‰g­o´û&¾oâi'¾oâÃëíÖ"ç¾µ¾‰O­x¾‰'®oâ“ííÔú&¾oâ»,¾Ôáºï2uÚùF;rþæÑ.®øÔ"'3æ¹G” 执íÚ¹/žoâiç›vÈ™§ñhG<ÚŸohG-÷iG<ÈoÄ£òøF<Èo´ãñ G<ÚñxÚ!Ç<âñxC;íøF|Úñx|#j‰G;´óø´#òhG|¾qŸohçíÐN$¡ ?˜A;߈Ç7ñ í̃ñh‡væAŽû|C-ÚùF<Èoà¯ñiÇ}æAŽx|ßÐN1 ?„!íˆ9´ÓŽoăñ ‡v¾ŸoăÚùF;â!.í|£ÚùF<Èrhçñ!G<¾¡ră߈9âAíC;þäˆ9´#®ø#äˆ9´ÓŽoăÚùF<È¡oăñ G<ÈÑŽx#äˆ9âAŽx#äˆ9âAŽø|£ßP‹v¾răñù†v¾răÚiÇ7âAŽx'ßhG<È¡oÄÃ8ÚiÇ7âAŽx#äÐÎ7âAŽxC;߈9âAŽxC;ßh‡v¾ÑŽx|#äˆ9âAŽx#äˆ9Ú¡Žx#äˆ9âAŽxC;jùFRpƒ¤À¥™£Á RpƒÐ s=ÈÆ4²1lü¨Óê4€:  N¨Óê4€:  N¨Óê4€:  N¨Óþê4€:  N¨Óê4€:  N¨Óê4€: ·nÃ@uk6¦‘il#nF6¦±ŸncÙ˜PÝš ½n#zF6¶±  þtÙØF6¦ñØlL¨Ó°ìOõ Ôiu@Uì6€ª×llã±ÓØìc§‘idí?݆eõšiü´±?u+Põ ÔiüT¯@ÆO·‘mLc@ÆOõºiüÔ­›ÆO§‘ ½þtÛpëOõ T·U¯«ª[³¡Œ¤à4HÁ Rp¤€)¸ 2wƒÄ£߈9´CŽx|#äˆ9âAŽx#äˆ9âAŽx#äˆþ9âAŽx#äˆ9âAŽx#ä¸qâÑí¨%>äˆ9´óø|C;j‰Ç7´óx#äˆ9âAŽø#äˆ9âñx#äÐN;¾ãh‡ñ G<È¡v|#äˆ9âAŽx#äÐÎ7âAŽø|C;íøF<Èrăñ Ç7âñx#äˆ9âAŽx#äˆ9âAŽv¨C;߈9âAŽx#ä˜9´ÓŽx¨åñ G<ÈÑuÄãñ G;âa†xÌCˆÇ7ÔòvÄãjùF<Ú?r|C-ñøF<¾¡oăñøF;âAŽû´ãñ™Çþ7ð÷ í´C;ßhÇ7âñ í´ã>äøF|ÔrÄC-òPK<Èñvh§ßhÇ7ÔoÄãÚùF<¾¡vÄ£ñøÆ¡ <˜Añh‡vµÄ£ñhÇ7âÓŽoh‡ñøF;âÓŽx|#íøÆZ¾rÄãñPG;âÓŽx´ãÚiG<ÈÑEðÂfh9æocäa;¾¡v܇ñ!G|Ôo„°ßhG|¾¡rÐ#ä¡ZBrÄã!ü9æAŽyħ÷ùF<È1r̃Ú!Ç<È1ícä˜9æŸoh‡ó G<¾¡rÌ#>ßhG<þÚ¡oÜçä˜9âAzćó¸Ï7âó r̃øSK<¾Brăóá7´Cí|#>ä˜9æ¡r̃óhG<Èr̃óˆÏ7ÈŸ¸Ô¥4þðOƒ(ùÉWþò™ß|ç?úÑ—þô©_}ë_ûÙ×þö¹ß}ïŸù=HñÉ|t€ó Ç<ðGŽycä˜9æŸo´#ä˜9æAŽycÈaÈaÈaÈaîƒæA-¾¡âƒâáÈ!È¡¾!„ÚáÚ!ÚáÈ!¾!ÚA;¾!ÈaÈaâãÚÚ!¾á>¾ææþA;Ú!ÈaâãÈaÈ!ÈaÈaÈað‡æ!¾¡â¡¾æâææè!Ú!È!ÈaÈaÈaÈaÈaÈaÈaÈa¾¡ââææææ!Úâ¡ÈaÈ!ÈaÈaÚ!È´ƒÂàæA6`È!>Ú!ÈA;Ú!¾!¾A-îãâ¡âA-âæ¡´ãâ¡âáâ¡´ãâ¡â¡¾!¾A;¾!È!¾!>¾a¾!Œ#Ú!>Ôâð§âÁ8âƒâáðç⣾!Ú!ÚáþÈ!È!>:À”Ì Ôa-áÔ"È!È!Ú!¾¡êâáÚáâãâaÈ!ȾA;¾¡â¾A;Ú!ÈA;:@†Ì€´£ð‡ÔâââáâÔâ´ãÚ!>¾!È!ÚA;ÈA-¾¡âaÈ¡¾A;¾¡â¡âƒÔâÔ!È!ÈA-¾¡´ã´ãââ¡ðçÚáâáÚáÚ!„æÚá>È¡êÈ!¾!¾!„¾!>È!¾aÈáâáÚA;È!ÚæáâcÈáÚáÚ!>ÚÈ!È!Ú!Ú!þàâð‡Ôââáâá´C-´ƒîC-î£ò‘â¡´£âáâaˆï\ê€ï\ªxdAxA`Ó6o7sS7w“7{Ó7³7e8aSd“dd7e37eÁ6e6ed7eÁ6e6eAd6e6e!7eAd6eÓ6e6e”A6yA6aSxAxA6yAd6e¡7eÁ6eÁ6eÁ6•A6e“dAd7e”A`SxAxA6yA6oSpSnSxa@eá6e7ed6e6e”A`SxAxAdÓ6eþdAdÁ6ed6e6edd6{ànàÈï€ïn è!>ÔâÔ¡ò1È!ÔaÈ¡¬´ê¾!È!>È!æÚææ´ƒÔâÚ!æڡ꾡BˆâáæââA-îƒâ¡ªŽÚA;È!ÚÁKãÔââCæÚÁKçáâ5ç<•â¡ò±´c¾¡¾!Ì îA:@;Ú!¾á>¾!¾!Ú!¾AÚA;¾A;ÈAâ´C-âáâãâáâá´ãÔB;ÚA;Ú!>¾A;¾¡êþ¾A-¾A;ÈA;¾!¾¡¾!>¾¾!¾!ÈA;¾!ÈA;Ú!Èá>¾!¾aAð ÚââÁ⡾!Ú!>¾!¾!¾¡¾¡¾A;Èa¾¡´ã´ƒæ!¾!¾A;¾!„Öââ¡â:@”Ì ¾!>¾ÁKÛá>¾A;È!Ôáâáâ¡È!Úá>È!Ú!>¾á>Ö"„È!Úá>È!>Ô"Ú!Ú!>¾!¾!>Ú!>È!¾!¾!¾á>¾!Ú!Ú!¾!¾!Ú¾!ÚáÚA;¾!Ú!É!Ú!Ú!>¾!þÔ"¾!¾È!¾!ÚA;¾Ú!¾â¡È!Ú!¾!Öâ>¾!>¾!Úâ¡â¡âáâ¡ÈA;¾!ÚáÖ"¾!Ú!ÚA;Úð§ŒàŠ·xÀx“·$ADÁa6Á$Á6Á$Á6Á$Á6Á$Á6Á$Á6Á$Á6Á$Á6Á$Á6Á$Á6Á$Á6Á$Á6Á$Á6Á$Á6Á$Á6Á$Á6Á$Á6Á$Á6Á$Á6Á$Á6Á$Á6Á$Á6ÁD!$6AAB"zþá AAaDADÁÂ6AÁ$Á6Á$Aá DÁ6A$AB¢W6A6AaDA!zEÁ$A¢Š7A6A6ÁDA6Á6AÁ6ABBADA$aDÁDADAB¢W!z9zCBAA!zEŠADAaDÁá 6Á$AAA$AA6AÁDA$ŠEÁ6Á6ADAaAA,Y"$Da’7AABBADá D!$DADÁ$ADáþEADÁDAADÁD!$D!$DÁDAAX¢’žá¹È!¾!Úæ!È!Úáâáâáâ¡â¡â¡âãâáâáâáâáâáâáâáâ¡â¡â£â£¾!¾áQÉ!Ú!ÈA;Úáâá´ƒâáâáâ¡ð§â¡â¡¾¡¾A;Ú!>¾!¾¡¾!>Ú!Ú!>¾!Ú!¾!¾!Úá>¾!¾!Ú!È!>¾!Ú!¾!¾á>Ú!Ú!¾!¾!¾!¾!¾!¾!¾!¾A;Ú!Ú!¾!¾!þ¾!¾A;Ú!äáÖ"¾!ÚáÔ"Èa´Ã âáDaâ´ãÚá´£BèÚáâ¡âƒæ.äA-¾á>¾!È!>Úá⡾¡È!¾A;ÚA;¾!¾!¾!„¾!>¾!¾!ÈaÈ!Ú!¾!Úá´ãæA;Ú¾îã´C´£üÀ îã$!È¡äa-¾!>¾¾¾¡´£´£âá´£âáâáÚáä¡ââãæa$aðÀ Ú!¾!¾!¾¡¾!¾!¾a-âáâáÚá>Ú¡ê¾!¾þ!¾A;¾!¾¡îãÚäA-¾!¾¡îãâáâãââáâáâáâáâ¡´ãââáòñäA-´ãä!Ú!>¾A-¾A-⃴ãÚ!¾A-¾!¾A;¾A;Ú!¾!¾!¾!¾¡â¡æáâáÚ!ÚÈ!¾!¾¡ÄEÔB;Ú!>È¡âáä¡âáâáÚA;ÚA;Ú!>¾AâA-ä!>¾A;È¡ä¡âáâáâáÔâ´ãâáÚA;:€×y}:`z½×7€×7 ×7 ×7 ×7 ×7 ×7 ×7 ×7 ×þ7 ×7 ×7 ×7 ×7 ×7 ×7 ×7 ×7 ×7 ×7 ×7 ×7 ×7 ×7€×7€×7@Ø;`î½6€×7 6àÞ7àÞ7€×7€×7 6`:`„}z]áy}z]á…}î}z}x}:`x}:`:`x}z}:`:`ô}:`:`:`:`x}z}x]áõ}x}„}x}z}:`z}x}î}:`:`:`„}x]á7€×7 6àÞ7 6 6 6 6€×7€×7 6 6€×7 ž×¾×7 6€×7€×7 þ6àÞ7@ß¿´£âáð§BèâáÚ!ÈáÔÂSã¡´ãäA-¾!ÈáÚá´ãâA-¾¡âáÚáâá´ãâ¡´ã´ãâáBèÔâÔââáâáâaÈA;¾!¾!¾!¾¾!¾!¾!¾!¾!¾!>¾!¾!¾¡â£â¡â¡âáâáâáâãâáâ¾!¾¡òÛA;¾!¾!¾Ú!¾ Úµû/¼vñ¾$7\Á‚ßâ™)(©CÁoí~‹G.Þ·vß¾=|ø-¹xÛÅ#§îa»oíFÆûþ\Ar2¿Å#÷­ÝÃv¿©k÷­]¼vñ¾É,Ø.^»xí¶+ø-¹oñ¾ ,˜²]¼oê ~ë H™3ßⵋ§.PAuäâ‘›¯ÝÃoñ¾üï[¼oÛ}‹×îÛÃvß~›WP¹‡ßFvP¤ ™‚ßæüï[Ávä ~+Øî[»oäâµûïÛÃvñ¾ÅûVܼxßâ}k7ò[Áo¿ÅûVðÛ¼oñ¾Åk÷°]¼vñ¾=üV°ÝÃvñ¾Åûï[Außâ}kOÝ7ß–Æû6²úvñ¾H®`»xßF~‹×nä7rñ|ÓÎ7íÄÓÎRê|CN<íÏ7K}SÐ7þµóM<ßÄÓÎ7í|:ߤÎ7í|@ñÏ7#µS9ó´SÐ7µ#9ñ¨£92‘9äÈ9óDÎ<‘3OAäÌS9óDÎ<‘3OAäÌS9óDÎ<‘3OAäÌS9óDÎ<‘3OAäÌS9óDÎ<‘3OAäÌS9óDÎ=äÌCÎ=äÌ39óó9ñ9OAðŒDN<ä<9ó3O<äÌCÎ<#Íó<äÌS9ŠDÎ<ñ£è<ñ3OAð39Š’3OAðÄ3O<ó,5ÏCðÄCÎ=#99ñsÏHòDÎ<äÌCÎ<äÜCÎþ¬ñÀCN<ðÈzäÌóÐ<ñÀÏ<ñÀ3O<äÌCŽ¢ñÌó9ó3O<ó¤èCóñszäÄCÎ=äÌCÎ<‘3ÏHä(JÎ<äÜS9óÄCÎ<Í9ó3O<ä¤ÎCä<d<ÔÎ7í|9ñ´óM<ßÔNAßÌóP;ßÄóM<ßÄóM<ßÄóM<í|S:ßôÍ<}SP;ñ´SP;}Ï7}O;ßÄóÍHêÄóM<ߨO;ñ´Ï7}O;ñ|óP;ßÄóM;ñ´O;ñ|³Ô7µÏ7µóM<äÄ#9ê}S:ê}Ï7ñ|Ï7ñ|þÏ7ñ´óM;ñ´3Ò7ñ|O;µSP9ê@µóM<êDNŠŠ²AAäÄóMAí¨÷M;ß´óM<íbrÄã#òøÆGâñ´ãiÇ7È‘¥´ãñøF<Úo„ñK<¾ÑŽoÄãñ Ç@È1o ä#ñhÇ7 ÒŽoÄ£ñø†AÚoÄãäˆÇG¾1o°çíøÆ@¾av$ä!G<¾ÑŽo ¤ñøÆ@¾aoäù†A¾aoäù†A¾aoäù†A¾aoäù†A¾vÄ£iGþ<ÚÑ‘oÌc äˆÇ7ÒŽo¤ùÆ@ÒŽoÄ£i‡A¾v|#íˆÇ7âñ´c äˆG; ò„#߈Ç7æáv|#í G<¾r„íˆG;ò´c ùF<¾at„ñø†A¾v ¤ùFBÚr̃óˆÇ7Úñyä!G<¾vÈãùF<È1x´#߈Ç7òƒ|£ñhG<¾1oÄãñ G<¾ÑŽo„ñøF<>òx¨ãíˆÇG¾o „ñøÆ@Úñx´c íPÇ7âñx´Ã ߈::òv|cñø9þæÑƒ#ß09ÒŽx#íH;È‘oÄ£iÇ7 ÒŽx|à äˆG;ࡎoÄãxé9ÒŽoăiG<Úo ,¢IÈ7âÑŽxc߈G;ÔAŽŽc í GBÈ1o äñøF<Úv äñèÝ@ÚvÈ,ñøF<¾o°GßÈ7æ1oÄãñh‡<òvÄã#ä9æ1vDß0È7âñ ‡|c ߈G;Ô13Ì#¢ØÀ<òx|Ã!äˆÇ7âÑŽo äñøÆ@>’v|Ã ßøˆ<ÚoÄ£iG<>2oÌ#!íøÆ< þÒŽoÄ£ñhG<Úv|#íˆG;âñv|ã#ß Ç<BŽx|£ßH;âAŽx|ƒó0È7Ú1(‚~ƒ:âñxÃñhG<¾oÄ£ñøÆ@¾Ñƒ´#߈Ç7òxà äˆÇ7Ú1oÄ£iGB>rÄ£ŽP†Ì0vt„ñøF;äÑŽ´c ߈Ç7âÑŽxCñøF<Èaoäñ Ç7BŽv äñø†AÚáÑÄãiG<Ú1oÄ£iG<Úo|äG;âAƒ#íˆÇ7BŽvă!Ç@È1rÄãíÈ7âñþ uÄ£ñøÆ@¾‘r ¤ßhÇ7âñv äi‡AÚ1o8äó G<ÚÑ‘„1È7âAŽ£ùF<Èñx´Ã äÈGòvÄãñøÆ<È1v ¤ßhG<¾õíH;æAŽ|#ßH;âÑŽo´#íøF;âÑŽo´#íøF;ÄC;|C;ÄC;|C;ÄC;|C;ÄC;|C;ÄC;|C;ÄC;|C;ÄC;|C;ÄC;|C;ÄC;|C;ÄC;|C;ÄC;|C;ÄC;|C;ÄÃ7ÄÃ7|Ä7Ä9|C;ÄÃ7´Ã7´ƒA|C<Ì9 Ä7 Ä7´Ã7ÄÃþ7$Ä7ÄÃ7´Ã7´Ã7ÄÃ7´CB|C<|C<|C<|CG´CB|C;ÄC; 9ÄÃ7´Ã@|ÃGÄ7ÄC;ÄÃ7ÄÃ7Ä9Ä<Ã<|Ã@|ƒA|C;ÄÃ7ÄC;Ä9ÄÃ7´Ã@|C<|C<|ƒh|Ã@|CB|C<|C<|ÃG|C;ÄÃ7Ä7ÄÃ78D;$D;ÄÃ7´Ã@´Ã7´ƒC|Ã@|ƒC|C<´C<´Ã@|ÃGÄÃ7ÄÃçq.Í#Jó Ç=ît.ÝãNNâ’“,E{@éašG;A Þ´C$툈#þ¥yÜJó€R<îA{„i\ºGF¹tþ(ís÷€Ò<ö9(ÅãPºG˜æqz`éQšG<î¦y܃óÐ9Á răíˆÈ7"ÒŽoÄíÃ<î!‰#߀G;"òx|#"íˆÇF"BŽoÄã"!G<æñˆ|#ߨH<È!‘ãíø†<6òx´#íˆÈ7"2r´ãñ G;ävD¤ñ G<¾±‘x|£iG<È1r´C‰Ç7Úo0l#ñø†:"ò(Bx09âÑŽx´CíøF<6oÄãíø†HÚoăñøF<¾vÄãóhG<Úoœ¤߈H;È‘oþðfŠ†Ì‘oÄãíøF<¾qrDäñøF<È1rÄãñP;ÈÁy#{êøÆFâñoÄ£iG<¾‘cêøF<¾Ñu|ã$߈G;¾±‘o#߈‡:6BŽx|#߈9âAŽx|#߈H;¾ÑŽolD$òøFDÚvăioÚo´ã #G<Úñˆ´ƒñøF;ÈAŽx|C$íøÆd"ÒrÄãñøF<¾vÈ#êøF<¾oˆ¤߈È7âñ rÄãùF;¾v|#߈G;¾oˆd#߈Ç7²÷ ‘|C$íG;Nòx´þãä8I;âÑŽx´#íˆG;âÑŽx´#íˆG;âÑŽx´#íˆG;âÑŽx´#íˆG;âÑŽx´#íˆG;âÑŽx´#íˆG;âÑŽx´#íˆG;¾Á›v|ã$߈ÈF¾1xL†ñøF<¾rd/äˆ9âÑŽoÄc#òøÆIÈvÄãi‡H¾ÑŽoÄãñøF;¾ÑŽˆ´ãñhÇ7È!’oD¤"iÇ7DÒŽx´#"í8I;DòxlääˆÇ7摽vˆ¤ñØÈ7"B‘¨£߈G;âÑŽˆ|#íˆ9æ‘oˆäñ G<¾oläñøF<¾‘v#þ߈Ç7"ÒŽˆC$߈Ç7Dò“|ƒñøF;¾vƒ7äˆH;âñx´CßhGD¾oˆäñh‡H&CŽˆ|#íÉ7âAŽìmäñ GD¾oDÄüp’<œD,Ñ#"ôˆÇ<â1zÈ#N¢Ç<"Bx`iô˜‡<æAyă÷NЇ“è1x8I󠇓 ä$yУøó¸G<æ'Å£øô˜Ç76A‹x|£ß G<¾v|£êp?æAx8 Jó G<æzðž¼–è¡úœ$œ$"æ!œ„"Kè!œ$ŠâKè!°J"‚°þ„âÁIââÁhá$Ú!¾!Ú7Ì îA: "ÚD¢âá⡾!ÚáD¢âáâ¡â¡"b#â¡"¢ä¡âAÃæÈa"b#¾!"¾!ÚA$ÚA$¾¡¾a#äáDB¾!"¾!Úáxc#¾!"Ú!¾!¾¡¾!6â"âÚ!"6@†Á ¾¡â!"Ú!È¡æÚ!¾A$¾a¾¡ä!Ú!Ú!¾ANâââáÚA$Ú!È¡¾¡æ¡$AðÀ ¾¡"bÈ!Ú!Úá6""ÚA$Ú7¾¡þNâÚAÃDâ"¢âáÚA$Èá$ÈáâÚ!¾!È!"Ú!æáâ¡"âÚáD‚"‚NâÚ!ÈA$6BN¢NâD¢ä¡âAÃ"¢ââDââáâáÚáâáDââáÚáD‚âáÚ!æáVæââa2ÚA$Ú!Ú!Ú!"¾!¾!æáâ¡"âÚ!"¾¡â¡"¢"‚Dâ"¢N¢âáâáDâ"âÚ!¾¡¾A$6""ÚAÃ"âÚ!¾!"ÈA$¾¡¾!¾!¾!¾!¾!¾!¾!¾!þ¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾!¾¡ââa#¾¡¾!"ÚáNâââ¡ââ²çÚ!¾!¾¡xƒ""ÍDâ6"¾!Ú!"¾!¾!¾A$¾!Úá$¾AD‚âaÈa#"âÚ!¾¡Dâ@2¾a#¾¡¾!¾!¾!ä¡x£âáâáâáÚáâáÚáÚ!È!"¾!"6âæ"‚ââáâáâáDâÚ!¾!¾!ÚaÈ!Ú!Úþ!"¾!¾!"Ú!"Ú!¾!Úáàa#âáâáæáDâ⡾!È!"ÚA$¾A$¾¡¾!"ÚáD¢È!"Ú!¾á$ÚáDâÚáäá$Ú!"ÈáâáNâÚáâáâáNbÈ¡æá"¢œ$ä!"œ$"æ!"æ!æA$æA"ÂI"bä!"ä!æ!ä!"°D"ÂIâA"ÂIâaDbâA°$œDNKâÁIâA"BâaâÁhá¦"b#"bâaä!æ!æ!æ!ä!"ä!"ä!"æ!ä!"æA"Bþ"KâaâÁIDb"b"ÂIâaä!"ä!"x/æAâa"ÂI"B"bäÁI辡âáâ¡âáÚ!È!À¡ÂÀI$¡¾A$ÚáâD‚"‚âáÚ7Èá6âÚ!¾¡âáÈ!¾A$¾¡"âNââ"âÚ!¾a#¾!È!¾!æ"‚Ô!¾!¾A$¾!¾A$¾¡¾AÚA$¾!Úa¾aÈ!¾á$Ú!Ú!¾¡üÀ "â"â¾"‚âáâáâ¡"¢"âæÈ!Úá"âÚáþÚa¾!¾N‚â:@”Ì€âAD‚âæâáââá⡾!ÚáDââáÚ7¾!"¾a#¾!È!¾!"È!¾¡V¦"ââ"¢âáNââáæD‚æ!"¾!È!¾!ÚáÈ!¾!Ú!¾!¾!"4L$¾!Úá$ÚA6"¾7Úá"âDâxƒâ¡DBÔ!4,ÚA$È!Úáâ¡àa2ä¾á$¾!Ú!¾A$¾á$Ú!Úâá⡾!"¾!Úáâáâ¡"âæáÚ!"ÚþA$ÚA$¾!¾!Úá6B$¾!"¾!Úá$ÚA$Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Ú!Èá$àA$¾!Èa¾!¾ßâ¡ä⡾¡¾!"Ú!Ú!"¾!¾¡Dâæ!"¾¡DBâáâá"¢â¡â¡¾A$È!¾!¾!"¾!Úa¾A$¾!"¾!¾!"È!ÈA$Èa"¢â¡âáâáDââa#âáæ¡D¢Nââ¡þ"ââ¡ä¡F¾a"¢âáâáN¢D¢DâÈ7ÚáÈ!¾"¢ÈaÚ!È!"ÚA$Úá"¢"B"b2¾!"ÚáNââ¡âáâáDBÈA$¾!¾!"ÚáxãÚá6âÚa¾!"ÈaÚ!¾!¾!&ã$Úá"Âø7ä!"äaeä7äaeÈaÈaDBÈaD‚æá$ä!"ÈaâAxƒæ!äA$ä¡N‚æá$Èa"â$â¡â¡¾!Úáâa2DBÐ8Èaâæ!äá$äA$ÈaâAþÈaF®Z$ÈaâA"BÈaDBNBÐXh!¾!¾A$ÈaÌ`îA: Úá"¢âa#²çÚáâáæ!ÈA$Ú!"Úá$Èá$¾¡ââá"ââ¡xƒN¢â²çæ!¾á$¾!Úá$Èáâ¡âáâ¡xãÚáÚâD¢$aðÀ âá"â$aeÚ!¾¡âáÚ!¾!¾!¾!¾á$È!¾!æâ¡âá6"¾!ÚA$¾AN¢$aðÀ DâÚ!{ÚA$Ú!"¾!"Ú!¾!¾!Ú!¾þ!¾!"¾¡xcÈ!¾¡â¡âa#⡾¡¾AÚ!¾!Ú!"¾!¾!Ú!¾!"Ú!"4L6"&#"¾â¡âAâá†Ú!Ú!¾á$ÔA$È¡¾!4,Úá$¾!¾á$Ú!"¾¡âáÚáDâÚ!4LÚD¢âáÚ!È!"¾¡Ô!ÈáDâ"‚Dââáâáâ¡âáâ¾!"Ú!"È!"Úá$¾!"ÈáÚ!"æ¾!È¡¾!È!¾¡â¡"‚ÚAÚ!¾A$¾!"ÈáÚ!¾¡âáââþâââââââââââââââââââââââââDâÚáÔ!¾!"Ú!"æáâáâá6âÚáÚ!¾!"¾7¾¡ââáâ¡"ââáâa#âaÈ!4,¾A$¾!ÈáÚA$&#"æá"¢"‚6"¾!¾!¾!¾!"¾a¾!"ÚA$¾a#"âââ"BâáÚáâáâÚ!Ú!¾¡¾¡âáâáâ$㡾!"Èa#¾¡¾Aþ"ââ"¢"ââáâáÚáÚ!¾¡"¢¾!¾!{Ú!"Ú!Ú!"¾¡âáâ⡾a#¾!Úáä¡"¢ââáâá"ââ¡æáâáÚ"ââáâáâáÚ!"¾!4,æ"‚âÚ!ÚáâáâáN¢Dââ6"¾¡Dâ$Ú!È!Ú!¾!"¾!"¾A6""Ò,Ú!¾!Ú!È7æÚá$È7Èa#â¡Dââ¡âÚA$Ú!È¡"‚âäá$‚\¼ÛÅsDë[¼o¿þ ü\;Iüäµkœ¼vñÈÉkÁ‘í’‹×.¹‘å $'ïb¼‹Û $'o ¹‘ß I.^»xß.Æ#O^»xäÚÅûï›#YßF~ø­¹êðˆ‹'ªÃ·ßâ}“×.Þ·xßÚ}kïÛÀyßFüÖ.Þ·vñ¾ÅS¯Ý·xßæ‘kGð[»ä¾ÅûÖŽà·vßÚüÖî[•Ãäð9¼þQŽ:‘ƒOíp-¾ÑŽoă)È7 âˆÔéNÞ¸“7Èá rx£ä¨Ó¶Ú€!|ƒOäèF‘mc߯ÈárCÛxtá rdƒÝ€4²állãÀ9¼Ao°äð9êToCOÞˆ‡#drÄ£È7 òvÄà óˆ‡":ÐŽoÄ£ñø9â1oÄãñh9âAŽ‚´ƒ²ùF<¾o´#íÇ7âÑŽx´#íˆÇ7âñx£ íð@¾oÄ£߈G;¾o 8߈Ç7ÚoÄãñPG<Úv|£iG<¾þoÄãñhG<È1oÄãQGA6 ‰aàÁ iGCrÄãiÇ7TLŽx ä‰9âñ‚|CÅñøÆ@ÈQvÄ£ßhG<¾oP¶ŠÌ@Ê~cÍß(È7ÚAÙv øí(ˆs ÒŽoP¶ñhG<¾rÄãYsAæñ‚#íð7Ú1`r´£ÓñøF<¾ÑŽx|#߈9¾ÑŽoÄã”%GA¾ÑŽx|#ßhÇ7â±xÌãíˆÇ7âñvÄãñhG<Úo¨£”ýF<¾ÑŽx´CÅ߈G; òx#ä(H;â1rÄãñøFAÚþo dßXõ<ÈṽñhÇ<È1r|#ä(È7äÑŽ‚´#߈Ç7 ÒŽx|£ßG;âAŽvÄ£ñ G<ÚQod !G<¾AÙo#óøFAÈAYrP–”%eÉAYrP–”%eÉAYrP–”ýF;âÑŽx|#ß ,9ÚQod ñø†<âÑŽx´#ßhG<ÈñxãnG<¾¡âv„߈Ç7 òx´ãòhG<ÈoÄãù9 òx|£ í(È7âñ·CÅä(H;¾o$PêpN<¾oäòHA¾1“#íˆÇ7âñyþãiG<¾AÙv ˜ßhG<Èrăí(È<¾däˆÇ7âq§x´£ äˆG;âAŽo´£ ß(È<¾Qr|ƒ²íˆÇ7âÑŽx|cÀßhÇ7âñvÄãùF;(û‚´ƒ²ßˆÇ7âAŽoˆoˆrˆ‡y ‡oh‡‚h‡‚h‡y ‡xø†x˜rˆ‡vˆ‡v(ˆ;ù†Nû†x ‡o ¬vˆ‡v„¨“mð†m؆;ñ†$>ÙrØo؆;©“œs ‡:YÁlˆ`e&(]pc€lÈKH€!ðrð†m˜sXArXAoXA®ÚrØoXÁmþð†m ‡m0rð†r Gà…›rø†xø†‚øIørC0ô0ô†¬g0‡;ñ†lˆ„`ex:pb]Øg˜˜`€$`€ÈsP„iȆ(lð†a „m†Co˜s ‡­ÚoÀCoÃr G …‚pŽo°oˆrˆ3‡y„è4yh‡‚ø†‚ Êú†x ‡x ‡oh‡oˆ‡oˆ‡v˜rh‡o(ˆUŠrh‡xh‡xh‡xøyˆoh‡x ‡x˜‡oˆ‡o ,rP±oˆyø†‚h‡xh‡‚ ‡x ‡vˆ‡y ‡oˆrhþÊú†xø†Nûu(ˆoèEP<0ƒoˆrˆu„o(ˆvør˜‡xh‡oh‡o ¬v(r(ˆvˆ‡ˆ‡ø†xøÊ"‡ypŽo ¬oˆ‡v(ˆoˆrèEP<0ƒxˆxø†xø†xø†‚ˆ‚ø† ‡xh‡o ¬ohrˆ‡vø†xh‡xø†xhrˆ‡vø†xhÊ"‡‚ø†vø†v(ˆo(ˆv(ˆv ¬o(r(ˆvøÊú†xø†xh‡ohÊ"‡‚h‡xh‡û†‚ø†‚hÊú†xh‡x ‡yˆ‡(ˆv(ˆoˆ‡v(ˆoˆ‡vˆ‡°oˆ‡vˆ‡o(ˆoˆ‡oþˆo(ˆvˆ‡ohÊj‡xh‡o û†ypŽk‡‚huø†‚h‡o0yXµ‚hÊ"‡vø†xø†xh‡xø†xˆx ‡yˆrh‡‚pÊú†‚ø†x ‡xø†‚h‡xø†xøÊú†xˆxˆoˆ‡ø†xˆoˆ‡ø†xˆoˆ‡ø†xˆoˆ‡ø†xˆoˆ‡ø†xˆo ¬v(ˆoˆ‡oˆ‡o(ˆˆ‡vør ,uø†xø†û†yˆ‡v(ˆvø†xø†xh‡o ¬vø†xø†xh‡oh‡‚h‡xˆxhÊú†û†xø†û†xh‡xh‡oˆ‡o(ˆoˆ‡oˆ‡oþˆrˆ‡opŽ‚ø†‚h‡xhÊ"‡xhy Êj‡o(ˆo ‡xø†x ‡xø†vø†û†5yø†‚P‡oˆ‡oˆ‡o€Î‚ø†ˆ‡vˆ‡ø†û†y ¬o°o˜‡‚ø†‚ø†ˆ‡v ¬vø†xÊj‡xø†xP‡û†x ‡‚hÊj‡oh‡xø†x ‡xø†vˆ‡vˆ‡o˜‡‚ ‡yø†yhÊ"‡xørˆ‡oˆ‡v ¬o°o Êò˜v(ˆoh‡oh‡k‡oˆ‡vø†xPIø‡mð†mð†œ†mð†ܪ$<ÜrØoȆi˜r؆:Ɇm¸ à€þF e0Ȇ;ñ…Ðl oÈ0Ü*oÀCr¨WrØoÃl˜†m ‡mˆGˆ…oˆ‡°v(up„¨“m ‡mð†m 0$‡$oȆ}%‡iXÂKЀ `ƒlHØ€ x‚È`€T`€mȆgXXÁgX8‚l ‡m¨“l˜†m ‡z%‡m ‡mð†;ÙoˆG…oˆr(ˆoˆ‡oP1r0ƒ{¸QØ€xø†vø†xø†xø†v(ˆv ¬o(ˆvˆ‡vè4rP±oˆ‡vr ¬Uú†‚ ‡v(ˆoˆ‡v°oˆ‡o(ˆvøþ†vø†‚ˆxh‡oˆ‡oˆ‡o0rˆ‡v(ˆvˆrˆ‡o°oˆ‡vø†xøÊú†v(ˆ„aðƒ00r8„xh‡x Êú†x˜r(ˆoˆrˆ‚ø†vˆrˆ‡o ¬oˆç(rˆrˆ‡oˆ‡o(rˆ‡o(yèI<0ƒx ‡xhÊú†‚ø†x ‡xø†Nû†xø†5û†xy ,r(røy ¬o ¬ø†‚ø†ø†xø†vøû†û†xh‡xhÊú†v(ˆvˆrø†v(ˆv(ˆo(ˆvø†xø†xø†5û†x ‡vø†vˆ‡o(ˆvˆ‡o ¬oˆrþøuˆ‡oˆ‡oˆ‡v(ˆoˆ‡vP±oˆ‡o(ˆoh‡ohÊš‡oh‡o ¬ˆrø†xø†x ‡xø†x ‡‚ø†‚ø†x”xh‡oh‡oˆ‡o(ˆoˆrøu°v ¬vˆ‡ohÊú†x˜røyh‡x ‡oˆ‡oˆ‡oh‡‚˜r(ˆo ¬v(ˆo(u‡vˆr ,r ,r ,r ,r ,r ,r ,r ,r ,r ,r ¬oˆrø†v ¬v(ˆoˆrh‡‚˜røuˆ‡yø†‚ø†xø†xh‡xh‡‚ ‡xøû†v(ˆo(r˜rh‡xX¥x ‡o(‡‚‡P±þohÊ"Êj‡xˆNk‡xh‡x ‡ˆ‡oˆrø†xø†vˆ‡y¸ÊúÊúÊj‡Uû†xø†‚ø†xø†vˆrø†‚øÊj‡xh‡xø†vˆ‡oh‡oh‡o‡ˆ‡vˆ‡oˆ‡oˆr(ˆo°vˆ‡o(ˆoˆ‡oˆ‡vˆ‡v(ˆvˆ‡vˆ‡oˆ‡oh‡y ‡xø†vˆ‡oh‡oˆ‡vˆ‡vˆ‡oˆ‡o°oˆrh‡oˆr(ˆv ¬o(ˆo ¬vP±vˆ‡oP±yø†xø†xø†û† ¬oP‡vˆrˆ‡o(ˆy ‡xø†v0r(ˆop~؆i؆i؆iXÁi؆}]þíi؆i؆}%‡}݆iCÖž†%œo o؆%̆Ü×l؆l؆}CÖÞe ‡i ‡m˜†m˜rXÁi؆i؆i ‡Ü×lhG…xø爇vø†xøuhIø‡}݆i؆i؆iÃi؆ÕÃiȆip†ßΆoȆm¸í}͆ô†%Ü×m˜†l¨×%œ†%œg ‡}݆iXÁi ‡}%0œ†m˜rØWg ‡l Gˆ…k‡yø†xh‡†ˆrˆ3ðEè€oX³y ‡oˆrø†xø†‚ø†xø†xø†xø†xø†xh‡xˆoˆrˆ‡v ‡‚ø†xþø†v€Êú†‚h‡xø†‚ ‡oP‡v(ˆv(ˆvP±oˆrh‡‚h‡xh‡xh‡xø†x˜‡oˆ‡o‡5û†v(ˆo(ˆvˆ爇vˆ‡oèEP?0ƒohr˜‡x8„v°oˆ‡oP±o ¬o ¬v‡vˆ‡o ¬v ‡x ‡xhk‡xhk‡x ‡PeÀ3ˆ‡v‡oh‡‚h‡oP±vø†xø†vø†‚h‡‚h‡oh‡o(ˆoˆrˆ‡@Y3uø†(ˆoˆr(ˆvø†kÊj‡oh‡o(ˆoˆ‡o(ˆvˆ‡oˆ‡oˆ‡o(ˆvør°ohr ,rˆ‡vˆ‡vˆ‡þvˆ‡vø†vø†xh‡x ‡û†xh‡oˆ‡oˆ‡vø†5ûÊúrˆ‡vˆ‡vˆy”xø†x ‡yÊ"‡xø†xhÊú†xørˆ‡v(ˆvˆ‡oˆ‡v°oˆ‡o(ˆo˜‡‚ø†x ‡yø†xø†‚hÊ"‡vø†x ‡xø†v ‡‚ ‡xøÊúÊ"èüÊj‡xøçø†‚ Ê"‡vˆ‡v‡oˆ‡ˆyøÊjyø†xˆx‡o ¬v‡oˆ‡ˆyøÊjyø†xpŽxø†yˆrˆ‡oˆrˆ‡v°vX³oˆ‡vø†xh‡xh‡xørP±vø†vø†v(þˆo(ˆvP±o ‡x ‡xø†y ,rˆ‡oˆ‡oˆ‡oˆ‡v(rh‡‚h‡oˆrˆrˆ‡vø†xø†xø†ø†xhkû†û†‚økrˆ‡vø†xh‡oˆ‡oˆ‡o˜‡v(ˆvX³oˆrø†x ‡x ‡N#‡yˆ‡oˆ‡oˆ‡oˆ‡vˆ€ 7/Þ·xßâ©û¯]¼vßâ}›×.Þ7rñ¾Åûï[¼vñâµûÜGró¾Åû¯]¼oñ¾Åk÷±Èvå}‹÷íc»vñ¾Åûï[ÏoñÚ}‹÷-^»oñÚ}Œ×.Þ·xß>’ûØîÛÇžñÚÅk÷íc»ßÚ}‹úíþ££Û¦m›¶mÛ´mÓæâÝ6mÛ´mÓþþÝ8ï¶¿Ûþn¬xÚ¶iyÞ6mÛbÀÛ¦m[Œ7›:G´¢Êûö±ÝGrñ$ñÛ6mÛ´mÓ¶Þ6-ïß¹‹·MÛ6mÛ4¼Ó¶ýÝ6mÛ´¹ŠçN똜3ÀÛþnû»Mñ¶ÅÛþn‹çHÖ·vßÈ}l÷‘\ÔxfæÝÕ!Þ·xßÚÅûV>j»oñÚÅkõÛ¼oñ¾ÅÓN<ßÌÓNTßÄóÍGí|ÓÎGäÄCÎGí”×Î7ñ´óMOßÄóM<íÄCÎGßÄÓS;ê´óM<ß|ÔÎGßôôM<ß|ôÍGßÄCN<äÄCN<äDµ"ÃàaþFyß8BÎ7íÄóMyß´óM;ñ´Ï7}Ó9ñóQ;ßÄCÎ<äÄóM<ߘhb<ß´óM<ßÄCN<H2 f´óMTß´Õ7ñ|Õ7óóÑ7íÄóM<óóQ;µÕ7ñ|Ï7å‘Ï7ñ´OOQ}ó<íÄóM<äDõM;ñ´O;ßÄóM<íÌóÍGß|4Ï7íÄÓNTí|ÓÎGäÄCNOñÕ7å}Ï7åµSÞ7ñ|ÓNyí|4Ï7ñ|ÓÎ7êÄ3Ï7å‘ÓN<ß|ÔN<=ÅóM;ñ´9í|ÔN<=ÅóM<ß”×N<í¨3_yßôO;QµO;óS^;ñ´þ9µóÑ7íÄóM;êôôM<ßÄóM<íÌCNT=Å£Î7µ9Q‘Ï7ê|ôM<äDEN<ߨóÑ7ñ9ñ|£ÎGßÄCNTäÄCN;·Ï7ñ|ÓÎ7ñÓÎ7í|DN<óÕ7=Å3Ï7í|ÓNyóÏ7ñ´9ßÄóM;ÑCNTí|DN;}O;ñ|ÓN<ß|ôM<äÌGÎGíÄÓÎGä´#OOß´óM<ä|ôM<ßÄcâGß´O;ßÄCÎ7ó}óÑ7QµÏ7ñÏ7í|#p;å}ÓÎ7ñ|óÑ7ñÌóM<í|DNTßDõÍGßôT^;ñ´óQ;ñ´O;þµÏ7ñ|U;åµÏ7ñ´S9í|O¨òôôÍGí|ôM;ñ´3Ï7ñ´39}£<ßøHOâñv|d߈G;¢ò¨|£'ñ GT¾rÄãó G<¾o|„Šà‡8£gˆÃâ0! [èÂ*Æâø‹8`hBgˆ†ñpD,⪴ã툊:ñ*C6\"³ e¸ÐÎh¢ ã! Z”§êˆÇ7ÚvÄãñÃGÑoÄ£!GT¾ÑŽx|£QGOâñ¨ÌƒñøF<ÚvÄãñ GyÈyãíˆG;âñxãíø9âñþ´ã#߈Ç7ÊÓŽ#äˆ9Êóx|£<óøÆG¾ñ‘v,*߈Ç7: eàÁ ßhÇ7>"‰´ã#íøÆGÈ1xôäñhÇ7âAŽy¨#&Še;>Òy#ä(O;âAŽ£ŠPÌð‘o´ã#߈G;âñx|£óiÇGÚoDåñhÇ7>¢Ž|#߈Ç7âñ }#íøF<ÚñuãåùFTÚAŽxcä˜G;âÑŽx´ã#íˆG;>Òx´ã=‰9âñò#*ßøÈ7Úñòôäñ G<¾ÑŽ|ã#ßhÇ7zòx´#í(OO¢òþã#툇<¾v|#*äˆGO>"oÄãñ Ç|Úñx#í 9âñx|#߈Ç7¢òx|£'íøFTzòx´ãñøF<Úñx#*íˆ9âÑ“¨|c߈G;âÑŽoÄ£'ßø9zò|c>íøF<¾ñ‘o̧߈Ç7>òù´ãñøÆG¾1Ÿv|ã#߈9>ÒŽ¨´£<ßøH;¢òã#íˆ 9âñx|ã#íˆG;âñyÄ£ùF<¾1x|#íøFy¾1r|¤'ñhÇG¾o|¤'äˆG;¾ñră!Ç<Úv”§ñè 9¢Ò“x|#þ*ßhÇ7>ò¨´ãäøH;æó rÄC¯íøF;¾QžoÄ£QùÆGÈQžž|¤iGTÈv|#äˆG;äñ răñ G<¾AŽ´#߈Ç7Èv|#äøÈ7âÑŽoÄ£QiÇGÚAލ|#ßhG<ÈžD¥ñhÇG¾o|äñèÉ7>òžÄ£äˆÇ7È1oÄ£ñ G<¾v|ã#߈e;âÑŽ¨8¢Óp†8”ñelC؆!e˜C&TÆ6Ä!Åi(cÎø‹3þâ :ã/RœF¥•!Ee(Æ€‡2þ¢ )NCΘ†2¦!Åidƒþ’ˆET¾AŽy#ßh9âá~LÃÓPÆ6¦áŒ¿(cÊø‹3þâ :Cʘ†3Ä¡Œ¿(C1ÊØ •¡g´PÎPÆ_œq(câp •ÑGÈâñh9âñx#íøF<¾3Ìã¢è9âñvÄ£߈J;>òx¨Cí ÇG¾o”çñøF<¾o|¤êhG<ÔÑŽòô$íˆÊ7È1|#íøFy¾ÑŽoăñø†ÀÚñ´#ähÇ7zv|¤ß G<¾oÄãñøÆGÔñ‘(bx0Cy¾qˆx|#߈9âñ¨|£±þŒ9âAŽx#ßèI<¾ÑŽx|£ß(Ï7Úñ y”§ñè€"†‡0|ã#íˆÇ7âñx´£<߈Ç7âñx|#ähG<¾o|„aë7ÚQžy#ßhÇ7zòx|ã#߈Ç7æóž|äòØû7Úr|#äøF;âñž|¤ûF;¢Ò“´#*߈Ç7ÚrÄ£ñhÇ<Èñv|äó ÇGÈž¨£ñøF;âAŽv¨C<|ÃG´ÃG|C<|CTÃG|C;D9„Š:ÌÃ7DÅ7ÄÃ7ÄÃ7|D;ÄC;DE;ÄC;ÄC;ÌÃ7DÅ7ÄC;Ä9ÈCT|Cþ;Ä9|9ÄC;”G;ÄÃ7ÄÃ7Ì9|C;”Ç7´C~þC;|ÄHÂ0àAÄÃ7ôÄ7BOÄ9´ÃG´ƒ<|Ä<|C<|C<´CT|C;|DOÄÃ7´C<|CÆÃ7”Ç7”G;|C<|C<ÀCOD9ÄÃ7þÄCOÄC;ÄC;ÄC;Ä’†õD<Ì9ôÄG|Ã||C;ÄÃ7ÄÃ7ÄÃ7ÄÃ7|9|C;àc;ÄC;ÌÇ7|Ä΃9̃8|9ìÝ<ÃÞ™Ã<ˆþC<Ì9”zyÃGÌ9DûGÌ9Ä9ă:ÄC;H-(Ã<|C<|CÆk÷­]¼oÛ}‹×î[¼oñÚ}‹×î›x¾yì›xȉç›xþÚù&r6ú&žo‚Їœx¾è›Úùæ1y6ú(žoâùF vâig£Ç¾™°o&ü&¨oâ!'žv&ü&žv6RÇ‘}üQ’QÄGEÒÈ$IòGE6qD!¥œRJEQä)ùQZ”‰§oÚ™°xȨRE6qD‘MQD’¤ÒIÙÄE6q$IG’ ê›xÚè›Ç6j'žoâùF oâiG y¾‰ç›¾‰ç›v&l'žv¾i'ßÈ7ävÄãúF<Ú!oÄãíØH;6òvăíÈ7.·‘oLèñøF;âñx|#íÈ7â1rÌãñhG<¾ÑuÄã2ûF<¾vÄã"Çcâñ |#íÈ<ÈÑ|£!‡@Èñv¤ßhG<¾!oÄþ‰Ç<¾ÑŽoä#ùÆFÚ!oăñø†@Ú!rÄãiG<Ú”v„ùF<¾±‘o´ãíˆÇ<¾o´#ÛÈ7ÚñvläAùF;âAŽc#߈Ç76òx|#߈G;¾o…߈Ç7Úñx|#߈Ç7Ú¡ŒXÄ¢Áüe0[A‹VÄ"˜´ &-hÌX“™ÑlE4iÑ fÊ¢Ì$æ6ÙŠX“Û$f,ZA‹V0Sœ­ 1cÑ eÄCùF<¾oåñPF0i±MZ´‚±`f,ZA qF3˜±f,ZA‹`Æ¢´ˆE+¢Ù j2³´hþE,˜Ù ZÈ‚­ˆE0iÌX´â—âdf,ZA‹_ÆÂñ Ç7Ú±‘oăñøF;ò 3ÄcŠè@<¾õi‡@¾oÄãùF<¾yãAyÌFÚ”o¤ñ˜Ç7ÂF´#(߈9¾ÑŽx´C äÇFÚoÄ£ñøF<¾Au„ßhG<Úñx|c#ßÈ<Èy|#ßè€"”3|#߈9$ñ <†ñh‡@¾1r¥iÇ7òx|#QÇGâÑ#ßh‡@ÔAŽ#äè€#”3|#ä9æÑŽoÄ£ùFþ<¾1¡o´ƒóˆÇ7âÑŽoÄ£߈Ç7Ú±‘oÄã1ßhG<Úñ |#íØH;ÔA´C íØH;âñ˜ ‘C òøH<¾oăñhÇ7ó ™‘#äH;âñ ´#(òøÆFÈ1oÄ£ñhG<¾o#äˆÇ7ò ´ãûF<¾v#ßh9òx|ã1߈Ç7òx|#ùF<ÚoÄãùF<¾ÑrÄãíˆG;.÷Çä#ñøF<¾oÄãíˆG;âñy|£ߨÈ7#v|ƒóˆG;¾oÄãñhG<¾±‘o„ñøFPþ¾v„ñøFP¾v„ñh‡@óx´C íˆG;ÒŽx|#íˆÇ7ò‘x´C íøF<*ö|#߈:¾vÄãñøÆcâñx|£ñø†@¾Q±v|C äØÈcâñv|£ߨØ7Ú¡¨£ßÈ7æv…ñø†ÌÚolDñøF<¾oäóhG<äñ˜oÄã!‡@Ú±rÄãA‘G;ÈoläóH;¾±‘oÄãqv<Ú±‘oEñˆÇ7âñx|Cä)Ç7âÑŽo´#å߈9âAŽx´ãí G<¾¡òx|#íø†Ï¿þáóÇȃíø†ÏÉ¡òv|Cääy;¾!òÇÈ£߈Ç7Rþx´#íy;Rþ”·ÃçíˆÇ7æ!òv¨#åäð¹ÈÛáóÇÌ=í˜;9ærÌ#äÀ{<Ôv¨cð*L<ÚAŽy$žóˆ‡:Úñx|#߈Ç7âñv|CäêH¼ÈÕAŽx¨#ñä˜G<Ú!ru¨¼>o‡È+FŽ”·#í Ç"Úæ¡â¡â¡R®T®ÈaÚ!ÚáDîæND®aüÀ â¡RîDîâââáÚ!åÚ!¾¡âáÚAä¾!æáâáâRî*&ÚaÈ¡ÈAä¾á1R®AðÀ â¡âáÚÁçÈ!Ú!Ú!¾¡¾!¾AåÈAäÈAäÈ!¾aÈáÚAä¾!ÈaÈáRîÚAä#¾¡Tîâá⾡¾¡âãâáRîÔAäÚa¾!åÚÁç¾!¾!åþä¡DîâáDîâáÚá#Dî|îâáâáâ¡T®Dîâá1RŽDîâ¡æî1â¡â¡âa¾Aä¾AåÈ!ÚAâ¡âáâ¡âáæáRîæââáâáâá#Ú!¾AäæáDn¾!ÚAä¾!¾¡¾aî¾aÈ¡âáTîD®âáDŽRîÚAäÚ!ÚAä¾!È!¾¡bâ¡Dîââá*&¾¡âáâDŽÚá*&¾!¾!Ú!ÚAäÈ!åÚ!¾!åÈ!È!¾!¾!åÚADîâ¡þæáDŽÚ!ÚAäÚA価ä¡ââ¡TîâÚaÈaÈAäÈAä#†/åÚ!Ú!È!¾!Ú!ÚAäÈáâáÚ!¾AäÚáâ¡R®âá1Dî#DŽâáDîRîâá#Ú!¾!>Bâa¾!¾!¾!Ú!¾Aä¾!¾A御bâáÚ!¾!å¾ADîÚ!Ú!ÚAä¾!¾AåÈ!ÈAðîT®DîÚáÚAåÚ!¾!¾!¾!¾¡â¾!æâá#DîDîâáâ¡ä!å¾Aä¾!Èá|þ®¾¡D®âÚáâáâáâá1ââáâáâRîÔ¡âAÚAâáÔAâáâÚCGô1848´¾á1¾A*fðFFãÔ!F4`”CÛ#È!ÚFãá8´â¡ÔAäæáFïâG9´âAÚ!åÈAÚFãáÚ!Ú!ÈCã¡âACÚÚáÚCÛ!ÈAäÈAÚ!È!Ú!¾!¾aDÛá84Ú!ÈFãRî|®DŽ|îâáRŽÌ æA: ¾¡¾AÚAäÚ!¾!þÈ!È¡â¾!ÈAäCäÈïÚïÈ!¾!¾!æâ¡Dîâáââá1R®â¡æ¾AåÈ!Ú!¾!¾!¾!È!¾¡â¡RŽRîÚ!¾AÚ!¾ADî6@”Ì€â¡Ô¡á|®RîâRîDîDŽæŽTî1¾T®RŽâá1È¡AðÀ #åäáÚAäÚ!äáDŽæ¡D®¾AäCä¾ï¾AäÈaR®¾!å¾!ÚRîÈ!¾!Ú!ÚïÈAäÚ!ãD®¾!Ú!þå¾!¾!¾¡DîæáâáãÚ!Ú!Úáâ¡|îâáDîD®TŽDîââ¡â¡â¡¾!È!ÚAäÚ!¾!¾!¾¡È!Ô¡¾â¡â¡R®¾AäÚAä¾D®âáT®äÁçÚ!Ú!¾AäÚáÈAäÈ!ÚAä#Ú!¾AäÚ!ÈaâáÚáÚáRŽD®â¡¾!¾!ÚAäÚAäãââáâáâáÚaîÚA¾!¾¡æ®äáDîT®âæ!È!¾!åÚ!¾â¡D®¾þ!¾!¾!¾ÁçÚAäÚáDŽDîÈAäÚAåÈ!¾!¾AäÈ!¾Aå¾!¾¡RŽæaîƒâáâa⡾!¾D®âáâáâáR®D®â¡¾æá⡾!ÚáââáRîR®¾!¾!¾!ÚAäÈ!ÚAä¾aDîT®â¡â¡âáD®D®¾AäÈ!È!å¾!¾!Ú!†/åœíÚ!¾a¾!¾AåÔá#âáâáDîâáÚâ¡âæ!ÚáÚáâáâ¡Rîæ!¾aDîTŽþD®¾!¾!¾Aä>¢âáDîæAä¾!¾!ÈaÈ!¾!¾!ÈaÚ!¾aÚ!ÚAÚAäÚ!åãDnøâ¡T®Ô!ÔaîÚâ¡ÔD®âT®È!ÔáâáÚA¾!ÚÁçÈaDNâAâA|®DŽ|®DNR®¾Aä¾á1Dî1¾!¾!¾!¾!¾!åÚAåÈ!ÚORî1RŽââá1â¡RŽDŽR®DŽD®ÈAä¾AäÈ!Ú!å¾Aå*FRî⡾!ÚáâáD®äáâáâ¡þâT. æáDaæAäÔCÔ!Ú!åÈÁçœíÈ!åÚáâáââáãâáRîæáRŽâ¡ð®¾¡¾â¡ä¡ââáD®âáâ¡â¡æîÈ!¾AäÚáæ®¾A価D®$aðÀ DŽâá$Aä¾!¾!Èáâáâ¡âáâáDîD®âáâáâáRîâáâDî1¾¡âá#¾AD®að ä¡âá#Ô!ãâá|î1âáRî#¾AäÚ!¾AäÚÁç¾Aå¾!¾þ!¾AäÚáÚAäÚAäÈ¡bDîÚáÚa¾A*&åÈ!åÈáâáâ¡âáæ¾¡Rî|îÚ!ÈAäÈ!¾!¾Áç¾A価âáâ¡Dîâ¡âáâáÚ!È!ÚAäÈ!¾!¾!Ú!Ú!åÚaÈ!åÈAâáâáDîâ¾Aå¾!¾Aä¾á1¾¡¾¡¾¡¾á1|Žâa¾¡âáÚ!¾¡âáâáâáâDîðîDîäá1|ŽÚáÚ!¾!ÈÁçÚ!ÚaÈ!¾!¾á1È!æáæâáâáþƒRîDîâáâ¡D®Tîäá1âa¾¡Ô!È!ÚAäæáâÁÙ#¾!å¾aî¾á1¾á1â¡â¡ðîÚáâáâ¡âáRîÚ!¾¡¾aîÚ!È!åæáâT®Dîâ¡âáÃç¾AäÚAåÚAäÔ!åÚÁçÚAäÚ!Ú!¾!¾¡â¡ââáâáÚ!¾¡âÚ!åÈ!¾AäÚAå¾!¾AåÈAäæáâáà¡âD®Dn¾Aä¾á1R®âáâá1â¡RîTîâaÈ!Ú!御Rîâ¡âþD®RîÚaî¾AåÚAäÚ!åÈa¾!ÚÁçÚïÚ!>Bä¾á1âáÚ!ÈaîãâáCâá1¾¡¾ADŽÚAä¾!ÈAäÚ!¾!È!ÚAäÚ!ÚAäÚ!¾aDÛAä¾AäÔ!ÈáF´¾¡bâáÚ!¾AÚCÛAâáDîÔaÈ¡âáR®â¡âáTN⾡¾¡DŽâáÚáãF4¾¡¾á1Ô¡Ô!å¾!È!È!¾!åÚAäÚ!Èá1âáRîÚÁçÚAâáâáÔ!¾¡bâáâáT®Dþ®âáâáÔa¾!åÚ!Ô¡¾!Ì æ uˆ÷­]¼yä¾Å‹÷­]»oñæ}kï›C‡ ¶û¶°]Ævã} ™ÑáÂoíâ}‹÷Íá7’ñÈ©[8ï[¼oíâ}Ëø­]¼oñ¾9\Ø.Þ·xä~k÷-Þ·Œíⵋ÷­ƒ"ex̴˨îP»xíB¶ËØ.^»xí¶ûFná·yíâ}‹×.Þ7’¶[èpá·xä:ôlæÛ·Œßâ‘›÷m¡ávßⵓ×î[¼o É-l÷ÜÂoñÚ©ûv1Þ·xß¶ËØî[Èoñ¾-$¯Ý·vñÈÍ ù\¼o~›¯]¼vñþäÁü¶ð¹xß’›³]Û©«x¾™'r晨x¾!'þžoâùf"uȉç›x¾™¨œÚùf¹vȉ‡¡xÚ‰§râù¦xÚ‰ç›y&ú&žoâa蛉¾Áé›x¾©ërpú&râi'žoâ!gž‰Úùf"rúf¢v&ú'râù&žvpj§vêjç›v¾‰ç›x¾‰‡œv&ú&žoâù&žoâ!gžv&úfœ¾™è›xÚ‰ç›x¾Á©oЧoâù'râiGžoâùf¢vâQ‡œoâig¢v¾‰ç›‰ЧoÚù¦rc(žvâùf¢v¾!‡œx¾‰ç›xú&râiç›vâù&r&ú&žv¾©ë›xÚÁi²oâù&žo–#þg¢vâ!gžx¾!gžoâaÈ7ÈQ—o4†ñøC¾Q—v'߈Ç7&ò‰'߈‡:¾ÁoÄ£ߘH;¾“oàäñhG]ÚoÄãñhGc¾AŽº´#ßÀI;âñx|£1ß G<Úѧx´#ßhÇ7&óvÄ£ñh9&ÒrLäñøNÚ1‘v|£ߘÌ7âñyăñ`H<ÚÑrÌ#íP‡:¾r̃iÇDÚ1‘v|£1íˆG;¾oÄ£!GcÚ1‘và$zñ`È7âñ‰|#íˆG;¾1‘oÄ£ËiÇD¾rà„óˆG;¾Ñ˜oÌ#þíø9âAމ´c"íˆG;âñx|'íˆÇ7æÑމ´#íøF<Ú†LäuùÆDÈ1‘oÄãñhG]ÚrÄãñ Ç<Úñx#߈G;–ÃoÔ…8ùF<¾oÄ£ßÀÉ7æÑŽx´ã8ù9æñx¨£8ùF]Úñx£.íèÓ7&òx0äí G<vÄ£ñhG<ò‰|#íøF<¾oàÄ øâEâÑŽ‰´#߈G;âÑŽx|#íˆ9âÑŽo´ãùÆDÈ“oÄã!G<¾Aމ´#í¨ 9æoă!ßXN;¾u|#þíˆÇ7âÑrÄ£ñhÇDÚAŽy#ߘÈ7¾1‘oÄã8iÇD¾oÄãäÀI1 <˜aä˜È7AŽo´#óøÆD¾“vÄãË™Ç7êò‰|#߈9ÚrLäñøF<¾ÑŽx|£ñ GTÑ Q˜íÀÉ7Ú¡Žxã8ù†:âñx´c"í˜H;&Âx|#߈Ç7&vÄãñøF;¾ÑŽo´#ß`H<Úјo´#ä¨Ë7âñvLäñhG<ÚñvÄãñ G<¾oÄã8iG<Èr´#óøÆD¾“vÄãóøÆDÈr4¦þùCâ1oÄã8‰^;êòvàäùF;âñ‰´#ó G<¾o´ãíˆÇ7âA†|#äÀI;âñ‰ÌƒñøÆ<¾“vÔ…ßhÇD¾oL„8ùF<¾v|#äˆÇd&ÒŽx|ƒ!ù†:âÑŽ‰|ƒ!8‘CâAŽº|ƒ!ñ ÇDæAŽx´ãíøF<Èñ yÄ£ñ`H<*vàäñ G<Ú1rL¤uiG]Ú1‘oÄCíˆÇ7âAŽxc"óøÆD¾oLdßG<Ú1‘và¤ò¨K;¾ÑŽoă!߈G;æAމ#߈Ç7Ú1‘oÄã8QþÇDä1‘vÄãuiNÈvăñøF<¾vÄã8ùF<Èñå#߈Ç7Úy|#ßhG<¾1‘oăiÇDÚñ †à„߈Ç7âñx|£ñøNÚ1‘yã ÁI;&òvÔåñ G<¾yc"ä˜H;–CŽxãñøF<Ú1‘oăiNÚrÄãñøF;&òv|#ß`ÈDÚoÄãùF<¾oÄãêˆÇ7ÚyÄãñ G<¾1‘oÄãñøN¾oÄãíøF<¾Áx|#íˆÇ72‘oL¤ßhG<¾v,çñ Çþ7âAŽoÄ£ñhÇD¾ÑŽº£ß`NÈÁx|£ùF;¾Ñ˜vÔ¥ñøF;âÑŽx|#ó qÂx|£ñøNÚoàäíˆG;âñº´ãí˜9âAމ|£uùF;âñx|#߈Ç7âAŽx´c"ßhÇ7&ó †Ô¥ñøF<ÈÑr|£ñ G<ÈÑœ0$ߘˆo¨‹oh‡0…VP…ø†xø†x ‡v˜rˆrø†xøœø†Æ ‡‰h‡xh‡xø†yø"ú†vˆrˆ‡oh‡‰P‡‰øœø†xø†xøœh‡ºh‡Æh‡x ‡xø†åøœ`ˆxþh‡xh‡xø†vˆ‡o˜ˆy ‡x˜‡oˆ‡oèEP<0ƒÆp„‰ ‡‰h‡o˜½Š‡oˆrˆ‡oˆ‡vøœh‡o˜ˆvøœø†ºh‡‰h‡xø†‰ø†‰h‡‰ØSI0ƒ‰ø†‰ ‡ºh‡oÀ‰oˆ‡v ‡xø†xø†ø†‡oˆ‡o˜‡vÀ rˆr˜ˆo˜‡Æø†x ‡xø†xø†xh‡o˜r¨‹oh r¨‹o˜r˜ˆvÀ‰o˜‡vˆ‡oˆ‡o ‡Æhy˜Œxø†xø†xøœh‡‰hyø†xh‡oh‡oˆ‡vø†v˜ˆvˆ‡vˆ‡o˜‡>i‡oÀ‰oˆ‡vˆ‡vø†þvø†v˜y`ˆo ‡Æh‡ºø†xh‡x ‡‰ø†yˆ‡oˆ‡v˜ˆÉˆ‡v¨‹vø†x`ˆo¨‹vøœh‡‰h‡o¨‹v ‡yhœ ‡xø†x ‡‰ ‡xø†vÀ‰vø†vˆrˆrˆ‡oˆrˆ‡o˜ˆvø†‰ ‡xh‡‰ø†‰hr˜‡‰hœø†vø†xh‡oˆ† ‡xø†Æ‡oÀ‰oˆ†ørˆ‡oˆ‡oˆ‡è™rˆ½Š‡oˆr˜‡x`ˆxh‡‰h‡x`yhuø†xø†v ‡‰ø†xP½Š‡v ‡y ‡yh‡xh‡xø"ú†‰ø†‰h‡‰h‡o˜rˆ½"‡‰hþ‡o ‡x ‡xø†v˜r¨‹vˆ‡v ‡‰h‡o˜ˆo˜ˆvø†xøœh‡xh‡x ‡yh‡xø†‰h‡xh‡‰h‡x˜Œohr˜r˜ˆvø†yˆ‡vˆ‡oˆ‡o˜rÀ‰oˆrˆ‡ohŒoˆ‡oˆ‡o¨‹oˆ‡vˆ‡oÀ‰ohŒvˆ‡vø†Éør¨‹vˆ†‡oh rˆ‡oˆ‡vø†xh‡xh‡x ‡Æh‡x ‡xø†x ‡‰h‡xø†‰ø†yø†xh‡‰ø†‰øœ ‡y˜ˆv¨‹vˆ‡oˆ‡vÀ‰vÀ‰o˜‡‰h‡‰ œh‡o˜ˆoˆ‡v¨‹vˆ‡oÀ‰o˜ˆvhŒvˆ‡oˆ‡oþÀ‰oh‡oh rˆu˜rˆ‡o˜ˆvøœh‡oh‡o˜Œoˆ‡oˆ‡o˜ˆo ‡‰ø†ºø†xø†x`ˆoˆ‡o ‡xh‡‰ø†xø†vø†xø†x`ˆoˆrˆ‡v˜†ø†xh‡‰`ˆxh‡º ‡yˆ‡oÀ‰vˆ‡vÀ‰o˜œ ‡xh‡x ‡yˆr¨‹oh‡oˆ‡v˜r˜‡xh‡o`ˆ‰ ‡º ‡xø†x œøœh‡o¨ 3Q…˜ˆo˜‡xh‡oXŽo`ˆxø†xø†xø†x˜ y ‡º`ˆoˆ‡oˆ†˜ˆvˆ‡vˆrˆ‡o˜ˆoˆ‡oh‡‰ø†yh‡xø†xørˆþuø†P‡oˆ‡o`yø†‰`ˆoˆ‡oÀ uø†x ‡x ‡xh‡o˜ˆv˜ˆvh u˜ˆpeð3ø†vøuøIˆ‡vˆ‡oh‡‰øœh‡‰˜‡oˆ‡v˜ˆoˆ‡o˜ˆoˆr˜ˆvÀ‰oˆ‡oh‡xø†ºøœ ‡v˜‡PE3ˆ‡ohŒohœ˜ œ˜‡oˆ‡v˜r˜rh røyh‡ºh‡‰ø†xø†xø†Æh‡‰ ‡xhœø†xø†xh‡xø†xø†‰ø†xø†xhœø†xøœhœhœø†vø†x uˆrˆ‡v˜‡oˆ‡v˜ˆoh‡xø†vø""‡‰øþ†x ‡oˆ‡v˜ˆoh‡oh‡xh‡x ‡xø†xø†xø†ˆ‡y ‡‰Ð«‰ œø†Éh‡xø†xøœhyˆ‡v˜ˆoˆ‡oˆ‡oˆrh‡xø†vˆ‡oˆ‡o˜ˆoÀ †˜r˜ˆoˆrø†v˜ˆoˆ‡oˆrˆ‡vˆ‡o‡vнxh‡x ‡x ‡òm‡‰h‡‰hœ˜Œxh‡ºø†ˆ‡oˆ‡y ‡‰ ‡xø†Æh‡xø†xø†‰ø†xø†vœ˜rˆ‡o¨‹ohÝû†x ‡x ‡vø†ˆ‡oP‡v˜ˆo¨‹oˆ‡o(ßoˆ‡v˜rø†xø†xø†ºø†‰ø†vˆ‡o˜ˆvþ uÀ‰yø†vhŒo˜r`ˆ‰øÙˆoh‡‰ø†vˆ‡vÀ‰vˆ‡oh‡o`œh‡xh‡‰ø†xø†ø†vˆrˆr¨‹y ‡o˜ˆv˜ˆvhŒvˆ‡oˆ‡vˆ‡oˆ‡oh‡‰ø†xø†xh‡‰ø†xø†xø†xh‡‰ø†ºø†vø†vˆrhyh‡ºø†‰ ‡vˆ‡oP‡‰ø†vø†vˆ‡v˜rˆ†ˆr˜ˆvø†xø†vhŒv˜ˆo¨‹v¨‹vˆ‡v˜ˆo˜ˆo˜†ˆrø†xø†x ‡‰ø†vˆ‡oˆrˆ‡o˜†ø†É˜ˆoˆrˆ‡oh‡xø†vˆ‡oh‡oˆ‡oˆ‡þoh‡oˆ‡oˆr˜ˆoh‡‰ø†xh‡xø†xøœø†vø†xh‡xø†xø†vh r˜ˆoˆr˜ˆvœø†xh‡‰h‡x˜‡oh‡‰h‡xø†xø†xø†v˜ˆv˜†ˆ‡ohŒv "rh‡ohœ ‡oˆrˆ‡o€†øœø†‰ø†x ‡x †À‰o¨ rÀ‰v˜ˆoh‡o˜rˆ‡oˆ‡oÀ‰oˆ‡v‡v¨‹vø†‰h‡xh‡‰ø†vˆ‡vP‡x ‡‰ø†0ƒ…ø†vˆ†À‰o¨‹y ‡xh‡xh‡xø†‰ ‡x uˆ‡oˆ‡oˆr˜ˆoˆ‡o‡vˆ‡oh‡x þ‡x˜‡o˜r˜ˆy ‡oh‡xh‡xh‡xh‡x˜‡oˆ‡y ‡x ‡yø†‰ ‡‰h‡x ‡‰h‡x`rXŽo¨ rø†x uh‡xøu˜ˆoèEP<0ƒºP‡Cøœø†‰ ‡xhrˆ‡o˜ˆvˆ‡o˜ˆo˜‡ohŒoˆ‡oˆ‡oˆ‡o˜r˜ˆoˆ‡o˜ˆvø†vˆrˆrèIØY<(‡vø†vøœø†vø†x`ˆoˆ‡oÀ‰xøœh‡‰ø†xø†'‡vø†vø†xø†‰ø†‡oˆ‡vuø†‰ ‡xø†‰h‡xh‡xøœ`ˆxø†yh‡xø†xø†xh‡xø†xþP‡vø† ‡xh‡oÀ‰o˜‡x ‡xh‡xh‡xh‡xø†‰  W‡oh‡oh‡oÀ‰vˆ‡o˜‡xhrˆ‡oˆr˜‡xø†xøœø†'‡oœø†y˜ˆo˜† ‡‰h‡xh‡o`uø†xø†o‡xh‡x œø†xh‡xø†‰ø†xø†xh‡oÀðvÀ r˜ˆo(prÀ rø†ø†vø†vø†xør˜ˆv˜ˆo`xP‡ohrˆrˆ‡oˆ‡oˆ‡vø†xørˆrˆ‡vø†xøœ œh ‡oˆ‡oh‡oˆ‡oˆ‡o˜ˆoˆ‡vˆrˆ½Böo(ðvˆuh‡þoˆ‡oˆ‡vˆr˜ 'œ ‡o‡oÀðvø†vø†xø†xø†‰ørÀ‰vˆ‡oˆ‡oˆ‡o˜†˜ˆoˆ‡oˆr˜‡‰P‡xh‡x ‡‰h‡o@öo(prˆ‡o˜r(p†ø†  o‡oh‡oˆ‡oˆ‡o˜ˆv˜r˜‡xhyÀ‰vø†xh‡‰˜Œohrˆ‡oˆ‡oˆr(ðv(ðoÀprˆ‡oˆ‡o˜‡‰ø†xø†‰ø†xø†vˆr˜r˜rˆ‡o˜†ˆ‡oÀ‰o˜ˆvø†gˆo(ðv‡vˆ‡v ‡yø†‰ø†xø† ‡xh‡xø†xø†x ‡xø†xørˆ‡vPþ‡vˆ‡vø†xø†x˜Œ‰hœh‡‰ ‡o‡xø†x`ˆx ‡x ‡xø†xhœ ‡yˆr˜r˜r˜‡‰ ‡y˜ˆvˆ‡vÀ‰o@öo˜‡xø†ÿd‡oˆ‡oháÿ†‰Ð«‰hrˆ‡o˜ˆv˜ˆvø†xødÿ†x ‡x`xø†‰`ˆoˆrˆ‡oh‡oˆ‡vø†'‡xø†v˜ˆvÀ‰Éˆ‡oˆ‡oˆ†ˆ‡oÀ rˆ‡oˆxßâ}k÷-^¼ví¾‘‹÷-¹y¶‹÷-Þ·xß’û¯Ý7„ßâ‘‹×îÛÄväâ}Cøm"<3ŠIÚ\þ b}ƒXß Ö7ˆ•òããß Ö7ˆõþŸ‹B ÿ±¾A¬o€üäøÆÇ¿A¬o€œBä ±(Äõoëä ±(DŽ”“ƒBäø±¾òoƒBäøÈ¿AŽo‹Bÿ9¾Áõ”ƒ|Äú9Rþ b}äßy9¾A¬oãÄú9¾A¬o|üäø9(DŽoãä È)DŽoüü?ÿFÈ)ôño‹B\'Ö7>þ r|ƒXßù7>žrb}ƒßøø7ˆõ bmããßù7ˆõ r|ƒXß Ö7@®ùo€üäø9¾òoƒBäø9(D¬oãä(…Ë7K9PÈ}9lÈ}9¤ÜÇ}ÃÇ}þ9|ÃÇ}±PÈ}Ãñ‘Ãú…Ü7…„Ü7Ã7ü\Ê…Ü7Ã7Ã7„Ü7€\6„Ü7…„Ü7Ã7Ë7K9PÈR9|ÃK6|Ü7Ã7|Ü7ß7Ë7Ë7…Ã7Ã7|Ü7Ë7€…|Ü7Ã7Ë7Ãú}\Ê‘Ã7Ã7Ë7|Ü7”9|ÃË7Ë7Ã7Ã7Ë7Ã7Ë7Ã7€Ü7Ã7”CÊ‘Ã7Ë7Ã7 á7ß7„Ü7Ë7€\Ê……‹7PÈÇõ˜àø(š˜„„tÀD|C;,Å7(D<|C;@E;LþÄ7ÄÃ7ÄC;LÄ7´BÌ9ÄÃ7´B|C<|C<|Ã-ÔF­ÔN-ÕV­Õ^-Öf­Ön-×v­Öò‚×þ†­ØŽíÖòÂÑòÙ¦­Ú®-Û¶­Û¾mÕö€(JH(ʪ˜˜˜At@; Ä7LÄ7 „BÄÃ7ÌÃ7LD;ÄÃ7,9|C<(Ä7´Ã7Äë!D;|C; Ä7ÄÃ7´C<|C<|B´C<´BÌ9LÄ7ÄÃ7ÄÃ7ÄÃ7ÄC;ÄÃ7ÄC; 9Ä9ÄÃ7(D<|C; 9LÄ7Ä9 Ä«µC<|ƒ: Ä7t€"ð‚˜9ÌC<Ã7è`ƒ6hsƒðlsƒ67˜sƒ67è`ƒ67hsƒ6ñìÏCÛÜ Í æÜ Í Ý Í :Ø€Ú æÜ ƒ :Ø€Ï :Ø Í æÜ M<;Ø ƒ :Ø Í :Ø`N<;À“Î :؀ΠÚÜ ƒ :؀ΠèÜ ƒ ÚÜ€O<;Ø ƒ :؀Π:Ø ƒ :ØàÐ æÜ`Î :À³Í æÜ ƒ øÜ Í æÜ€Î ÚÜ€Ï ÚÜ ƒ :Ø ƒ :Ø`Î æÜ ƒ ÚÜ Í æÜ Í :À³Í :Ø ƒ æÜ`Î øÜ ƒ ÚÜ Í :À³ƒ :Ø Í :Ø Í :Ø ƒ :Øþ M<é܀ΠÚÜ ƒ :Ø`Î :Ø <çÜ`Î æÜ`Î :Ø ƒ :Ø€Ï :Ø€Ú97˜sƒ67è`ƒ97àsƒ67˜sƒ6˜sƒ67hO:7hsƒ6hs:7 sj7˜sƒ6è`ƒ97˜s>7è`ƒ67hsƒ6 sƒC7˜sƒ97 sƒ6ñœs>7hs>7àsƒ97 sƒ6às>7è`ƒ6Ц t`tÚÀœ6Ц ´imÚÀœðÔ¦ tOmÂS›6Ц ðiØÀœ6À§ ´itÚ6Ц t`sÚ 6p(l äiG<È }#íˆ9Úñ þõ´ãóˆG;âñ -‘çäùF<¾AžoÄãñø†–ÚAžoÌ£ß :ÔÓŽoTèúF<¾Ažo´ãêQÇ7âÑŽoÄãíøF<ÚAõ|£߈G;äÑŽxC=äˆ9ÔÓI(ÃfˆÇ7ÚrHâñø†¾ ©‡äiG<*o´#ähÇ7âñv|#ߨ¾¡žvh‰ñøy¾¡r¨#ó Ç<Èy#ó˜yæAŽx̃ñ G<ÈxS=Æ$Ç<È¡žy#䀇–à¡xˆZš9ŒI-̓ñ¸Ç<È%Â#ó ‡zàAžyþC=ô Ç<È¡žyÃ@ó <ÔõÌC=ó Ï<âaLòÌÃ@ä€Ç<´4r܃ó ‡zæAžyÄcäˆ9âAxgä€Ç<ÈqrÄcô Ç<È1rÄcä Ï<â1r̃ó ‡1ÉAžy¨gä˜9â1ò̃ñ˜9âqr̃óPÏ=Èqr("óˆ‡#àAžygñ˜9æAõ̃äˆ<È3x܃ó Ç<Èy#ä 1ãaLrÀcä0¦zæAž{#𘇖æxÄcä Ï=ÈyÄñ˜G<Œ9r܃ó G<æAõÀþ#ó€G<æ¡c’K„Ç<ÈAx,‘<óˆÇ=È1rÄcäPÏ<ÈqrÄcäˆ9´dLòÐñH-9æAŽycä˜9âõ̃ä Ï<ÈcÆcäX¢<â1xÌC=ó G<Œycä <Ô3r¨gä˜9 ”Zr̃ñ€G<ŒIŽycäˆ<æcˆð˜9È3răñ Ç<Èr“ó ‡zæAxÄØäˆ9Èx̃<ä¸9ÈC-̓ñ˜G<æAxgä˜9æAŽxÈcä€Ç<â1rgäˆ9âAxgþä˜9îAõÀƒ<ó G<æAŽycäˆÇ<È3rèäˆ9â1răñ Ç<´ò̃ó G<àAc’C=ó Ç<ÈqrÄØä˜9âaLr̃ê™9îAŽyCKð˜9æAŽy#ä˜9â1ò̃ê¹9à1rÄcä Ï<È1róˆÇ<ÈaL-ÝC=Æ$yàa y#äˆÇ<È1rÄcäˆ9桞yä™9ày"G<ÈuÄãòˆÇ<ÈAŽṽñ ‡z䡞oÄ£úF<Èv§êùF;¾rçþêiÇÛñv|£ñøF;ÈCŽx´#ähyÈArÄ£äiG<¾a v|C=ß O;–ØŽx|cäˆG;ÈoçRÏ7âñ(‚x0yÚAG´#íøF;ÈÓrÄãíøy¾uTèäù†zÚrÌãêùF;¾Ažo´ãäˆG;âÑŽo¨§ß0Ð7´DŽy‡ñ yÈ1%’#äˆ9âA-‘#䘇zÈrăó yÚAŽxƒ<ä˜9âAòcñ Ç<Èr¨Gä˜G<ÈrÄ#áó yÈ1văñ Ç<âAŽx|cäþ G<Èr̃ñ G<È1x#äˆ9âAŽx#äˆG;Èrăñ G<È!ÈA=È!È!È!ÈaÚA=È!È!ÚÈ!Èa´„âæ!ÈaÚ!È!¾aÈÈaâææâæèèæ!ÈaÈ!È!ÈaÈÈ!È!ÈaÈaâ „ââAâ¡ÈCÈ!¾ÁÈ!È!È!È<Èaâ⌉<È!È!Ô!ÈÈâæA=àââæ!ÈaÈaÈ!È!þÚ „âââȃȃâAȃȃââÈ£âè!Èaâ!áæȃââ „â¡È!È!ÈaÈaââ¡à¡È!È!È<ÈaÈÁ@È<Ú!ÈÁ@È!È!È!È!nÈ!ȸԃæââáæ!ÈA=È!ÈA=È!È!È!È!È<È!ÈaÈ!È!ÈaÈaÈ<È!Úȃâæææâ´„æâæ<ÈaÈaÈ!È!È!Úæ!ÈaþÈaÈAKÈȃæ!ÈaÈ!È!È<È!ÈaÈaÈ<È!È<Ú!Èaââ¡àÔƒâæ!È!Èa „âæ!È!ÈaÈaÈaÈÈââæ<Ú<nÈ!ÈaÔƒèæ!È!È<È!Úȃæ!ÈaÈaÈÈ!È!È<È!ÈaÈaÈaÈ!È<È!Úææ¡ââæèâ¡âæ!È!ÈaÚ!ÈaÈaâȃæ<È´„âÈþƒæÔƒæÔãȃè!Ú!È!È!ÈaÈ!È!È!.ÈA=È!È!È!ÈaÔƒæA=ÈaÔƒâÔƒâæ!ÈA=È!È<Èa D¾¿¡¾!öƒ<¾!Úáâ¡´ä*äÚáâæáæ¡BÈ£¾!áâáâáâ¡ äÈ£Ô#áÈãÔƒæ!È!Ô¡BÈc?âæ¾<¾!È!¾!¾!¾!¾É<È!¾¡BâAÈcAðÀ âáâáâáàÁ@¾!Èa‰¾<È¡ÔãþÈãâ´¤¾aÈ!*dÈA=ÈáÔ£ „*$¾!¾A=Ú „âaÈ!È!È<æÈcÈ!Ú!Èa‰ÈÁ@æÔ#áâaÈ!È!èÈcÈÁ@èÔƒâÈÑ@ÈA=È!æâaÈaÈÁ@Èa‰æÔcÈ<æææȃÈcÈaÈ<æ dÈA ¤ȃ´„´„âȱȃÈAKæžU=æâÈaa dÈ<Ô!ÈÁ@È<È¡BaÈ!aÈAKàÁ@èÔƒ „–ˆþȃâ–ÈÁ@È!Ô!È!æ dÈ<ÈA=È!ÈaÈ¡ææÈ£ „ˆ‹âaÈaÈ!ÈáÔcÈa‰æÔƒ dÈ!ÔA=æââaÈAÈcÈ!ÈA=ææ´dÈA=È!¾!È!ÈA=ææȃÈãâaÈ!È!ÈaÈÁ@æâÚa‰æ dÈ¡ȃÚ<è „ÈÁ@¾!ȸȸæâaÈAKèȃââa¾ÈqÈA=æ dÈA=æÚ<æÔþƒȃ➕䡖ÈAKÚAKÈáÚÁ@ææââaÈ<Ô<æÈqÈaÈ¡$–ÈcÈAbÕƒÈcÈçÚaÈ¡ȃÔƒâ dÈÁ@Ô¡ÔcÈ!ÈaÈ!æáââaÈ<èææ–ˆâ dÈ<ÈaÈ<È!È<È!ÈaÈ!*$æÔcÈÁ@æÔãâáâ⡾<¾¡BâaÈAKÚ!¾<¾!¾¡¾¡¾aaÛ!È!¾!Œ)Ú!¾<È!¾!þ¾<¾!¾¡ ¤âá*„<Ú!¾<È!È<ÚAKÚÁ@æáæáâ¡Èã*äÚÔ!ÚA=æÚAÈã:À”Ì ¾!È¡áÚá´äâáÔ£BââáÈ£BÔ£âáâá´„´¤È£¾¡B¾¡¾A=È<Ú!Úáâ¡ââá–HÈ£¾A=ÚAâ¡È<ÚA¾!¾<*$ÈA=ÚáYÛ<ÈÁ@¾!¾aâ „âáȃâáÈC â¡È£´¤BÚ<àáÈÈ£¾AKÚAKÚæ!þÈAKà¡â¡¾¡BÈ£È!È!Ú ¾Á@È<ä<Ú<¾¡¾!¾!È!¾aâ¡âáâ¡ÈCÚáâáâ¡âáâáÔ£ȃââ¡äáâââ¡ „È£âȃ „$A=<ÚA¾¡B¾!¾!¾aÚáÔ£È<È<¾!Ú<ä¡ äââá8úæ!È!ÈaÚ–èâ¡ä!ÚÁ@àaaÛA¾â¡BÈ£¾<¾<Ú¸Úáâæ!È!ÚáÔ£¾â£É<ÚÈþ£äA=ÚAÔã–ÚAKÚ!¾<ÚáöÈ‘æáž•âÈ£âââ¡äÔ£âáÔãÔãÚáæA=Úáæ!È!Èa äâ´ä⡾!Ú<à!Úá*äÈ£ÔC´¤¾<Ú!ÈA=¾¡BÔC¾<*„Ôƒ´â¡´¤¾!¾!È!Ú!Ôȃâá⡾!ÚáæA=¾!Úáâ´äÈ<Ô¡È!¾!È<¾!ÚáY¿!¾!ÚÁ@Ú!¾!*Ä@Úâ¡äá⡾þ „æ<ÚáÈ<àáÈãâæ<ÚAââáâáâáȃÔã ä D¾!Ú!Ú!¾¡È!Ô!Úa‰Ú<ÈaÚÁ@äa‰È<Èa‰¾È£Ø@ÚÚAÔ£¾<Ú<*$Ú!Ú!¾!ÚÁ@¾A=ÚáÈ£âA¾¡È<¾<Ú!ÈaÈ£¾¡¾£Ûáâ¡Bâ¡â¡â£É£¾!Ú!Ú!Ú<Ú<¾!¾!ÚA=È!¾A=¾â¡Ô£¾!Úá*Dö£B „â¡–ˆâ¡¾!¾Á@¾¡þÈ£ü ÚÁ@aÈ!¾!¾!Ú!Ú!¾¡¾¡Ô£â¡âÚ!¾¡âáâáâáâáâ¡ÈãÚ!¾¡BÈ£äÁ@¾¡BÈãÚA=¾!Ú!¾<¾¡¾¡¾¡ä¡ȃ£ÉAÚ!ä¡B¾<¾<¾¡â¡ÔãâáÚ!¾¡¾A*ää¡ÈãÚáæáÈ£ÈãÚ<Ú!*$Ú<¾!ÚáÚáÔAâáÚ!¾¡BÈãä¡B äâáÔ£¾¡B¾¡âáâáÈCÔãä¡âáÔAÔ£âá´þäÈãâá*dÈ!¾¡â¡¾AâáÚ!¾A=Ú!Úa¾<¾!¾¡ä¡âáÔ!æáâáâá äÚáB^»xã}SWà·xßâ}k„í~k×.Þ¡oí¾IÂHN]Âvó¾%üï[Áv¿Åûã7Œíâ}‹×.^»yä¶‹×.á7uí¾Åk¯Ý7uêâ}Ãø­]9yñ0Æû†1Þ·‚ß䵋÷­à·xã}‹÷M^»„í¶‹×®à·v ÛÁKoÞ·vßÔµû\»oíÈÅkï[»xßÔµ‹÷-^»oñ¾ÅkWð[»oñ¾ÅûF3Þþ7ŒñÚ}‹×ï7yíâ}“G°]¼oíâµ+ø­ºxíâ}‹÷-Þ7ŒóÈ}k—ð[»oålGð›<ŒñÚüï[»‚í䵋÷­Þxß0Æû†ñ[»oí¾üöM^»‚ßâÑl÷M]¼vñÈÅû&Fñ|ÓÎ7í|ÓŽ:}#AäÌóMAß`TÐ7ó|O;}SÐ7í|O; µóM;ñ“9}O;}CÐ7ò´MßÄóÍ<ä´#Ï}ßÄó AäÈÓN<ßÈCFêÄóMBíÄó<ñ´óMBß´CÐ7ñ´#Fß´£AßÄCÎxñ`DÐ7ñ|O;ñÀGP;ßÈO;þµÏ7ñ|#O;ñ|ÓN<ß$ôM<ð©ÓÎ7ñ|Ï7ñÈÓAß´FÉÓN<ß´óM<íÀ'O<í|ÓÎ7ò´Mñ|Ï7}Ï7ñÏ7ñ|O;ÑôM;ñ|Ï7}9äÌCAíDNAß49óƒAßÄCÎ7íÄCÎ7íÄCÎ7ít_<ä|9ñ|“9ß`”Ð7 ‘Ï7ñÏ7‘SFñ|O;‘óM;ßÄó AíÔN<ß´óM;ñ´Ï7(¢Œf|:ñ´sHAßÄóM<߃×7íÄÏ7ñ|CÐ7‘3OBßÌóM<ßô AíÈó Aþß´óMBßôM;}SFã©_<ÉÓAßÐDP;ñ`DÐ7ñ|ÓÎ7ñ´CP;©ó Aê´óÍxí|Ï7}O;ßÄÓŽ<ßÄóM<ߌ÷ AíȃÑ7íôM<ß´£Î7ñ¨Ï7í|SP;}SFê|ÓAê`T|ñ´óM<ßÏ7}CÐ7óăQ<íôMAßÄCNAßÄÓÎ7ñ´Fñ´C:ß´CÐ7 µO;ßÄóMAê`$Ï7íôM<ßÔN<ß$¤|í|Ï7µóM<Ž3Ï7’|CP;ßÜO;ß´CÐ7ó´óM<í|ÓŽ‚´#í H;äñ‚|#þíˆG;¾oÄ£òøF;¾—oÄã ùÆxÔñ Œ|ƒ íG;âÑu„ùF<ÚvÄ£߈G;⡎o´ã4ùF<Ú!o´ãí È7âÑŽoÄ£ßhÇ7Úñ 3µ/íˆÇ7ò‚|#ßHH;âñv$¤ñøFA䡎‚|ƒóøF<Úñx|ƒ êøAÔñx´£ ߈Ç7âÑ‚#íG;ÆÓŽ„|#ß(È7⡎oÄ£ßhG<Ôñx`äíˆÇ7ÒŽo`$ð!È7Úñv|£ íø†™âñ„|£ß H;ây´#߈G; ¢Žvã•þ‰‡:à“Œ„ñhGAÚoäñøFAÚoÄãÏ7Ú1žo´#íøF<Ôñ ŒÈããQ9âÑy`$!È7ÚAøÄ£ä H;âÑŽoÄãñPÇ7ÒŽx|£iÇ7 ¢Œ„ãùF<¾‘oÄ£ß H;âÑŽxÈ£ù9桎o`äùF<¾u|£iG<¾o¤i^˜ò ŒäñhG<¾ÑŽo$ä ùFBÔÑŽoÄ£ä H;âñx|#íˆÇ7 ÒŽx|#ßh9âÑŽ„|#߈Ç7âÑŽ„`Dð!Mâñv$„ñøþ^È‘väñh9âÑŽoÌ£ í È7âñy¤òøF;¾oÄ£iG<¾1‚|#ß È7âÑx¨#߈Ç7ðòx|#íøF<Ú‘răé€"†3Äãñ G;ñWäñøA¾ÑŽx´ƒ í H;ò ŒdäˆÇ7âñ ‚À‡ ߈Ç<Èv¨£߈Ç7âñ ‚|£ù†:àÑŽx|#ßhGB¾o„ߘ9hBŽv¨CíˆÇ7âÑŽ„#ßhG<¾Ñ‚|#ä È7âñx|£ íˆÇ7âñ„´ãêˆÇ7 òx|#ê Hþ;¾vÄcäøAÚv$¤ùF<¾ÑŽx|ƒ ßG;âA‚|#ähG<¾QŽ„c<!H;òvÄãíˆÇ7âñx£ ߈Ç7BŽx|#߈Ç7ä‘x#íˆ9âñv|Cí È<¾Aoăñø†:âÑŽxãóøF<¾räñø^Úv|#ä È! rˆ‚ƒ ßF òv$äiG<¾ÑŽx|#ßhÇ7ÒŽx|#߈Ç7ò ‚|#!íPG;¾ÑŽx´ƒ ߈Ç7òv|ƒ)iGAàÓŽoăñøA¾ÑŽx|#߈Ç7þ ‚‘‚Cí |ÔQvÄãñhAÚ1žoÄãñ G;¾ÑŽx#߈Ç7ò‚|#!ßhÇ7âñ ‚|£ßG<ÚAøäíHH;òx|£ùF;òx|#߈G;âñ y`$íø†:âñx|#ßÀA¾1oäùA¾y£ùF; Ò‚|£ äHÈ7Æóxƒ í G;¾o¤ñøFB¾ră߈G;òx|#xùF<¾ÑuăñøFB¾oÈ£ñøF;BŽx|£ñøAÚväíˆÇ7ây´#ßhÇ7âþñx´#ßhÇ7Úñx`d<ß(È7âñ Œ>ñhG<¾ÑŽx|£ ßH9 BŽo¤xùF<¾vÄãùF<Œ%ŒäñøF<¾oÄ£!G<¾!vÄ>ñh‡: ÒŽ‚ƒ ä0Ó7âAŽvÄ£ñhÇ7âñ ñ@íßßÐÑòÐñð ñð ñð ñ ñð ß@ßßä@íPßíß0ß Ñ Añð Qß@í€äPßß ñÐñ€ßÐñ0äíßP߀ñÐñð AñÐñÐþßÐñð ñð ñÐñÐä ãßPíPíßPä ñÐñÐñð ííí@ßßßßßЊ  x`ñð ÑŽð ñÐßßíð ííQäß@ñð ñð AñÐßííß@ß@äíPíAíð ¡íð ñÐAñÐñ ñ AñÐAñð ííòð í€ß@ä@íí@ßíß@ÑñÐßÐß0í@ß0ñÐñð Æí@äþíð ñð ñð ñ€ß@ß0ä@êð ÑñÐñ@ ñ ñð Ñßñ ñÐß@äPíPß0 ÑñÐ ÑñÐAñð ó@í€ê@íð Ñ Ñß0í4ß@íð 4ñ ñ ó߇Àí ß@Ññ ñð ñð ÑßÐñ ñÐß@ííä0ñ íð Ññð Ñß@ßÐß@íPí ßä0í@ä0Añ@ñð xA ñ ÑñÐñð ñð ñÐäþäÐxñ ñÐßíßä߀ß@ß0ßß@ä0íí@íð ÑßíQêð ñð !߀߀äPä@ííPí@ß@ñÐÑñð xÑßÐÑñ Ññð Añ ñð ñð ñ ñð ¡ßPßßßß0ñð ä0ñ ñð ñ@ñ í@ííPß@ÑAñð íð ñð Ñßíð ñ óðAßÐñÐñ ñÐßñ ñ AAßPíþí߀ííð ñð ñð ñ ÑÑñÐñ ñ ñ@íð ñ ñÐñ òñð ííí@ñ ñÐñð ó@ß@ñð ñð xÑñð ñСßÐñ ñ@ñð ñ@fÒßäßß0ñ€ß@ííä@í@í@ÑÑñð ñð ñ€ñ ñð ñÐñ€ð ßÐñð ÑßÐßßêñ@ñð í@äß@íð äßÐßPê@ß@ßß@ñ þAñ ñpñ@ñð ÑßßPíPíß@óíð ñð ñð ñÐñð íð ñð AAñð ñ ñ€ñ äíð ñÐß@íßíß@ê@ ÀfÐÑä ñð ÑñÐÑñ@ñ@íßÐ ÑñÐñð Aä@߀ñð ñ êPä@í@äßäÐñ@ßä@êä@íßäßÐAñÐñÐAñð Ññ@ß ñ íð ñð ñ ñ íä€þÑñÐñ@ð!1ä@ßßßßÐñ ñð Añ QäíßßÐÑ ñ 4Aíßßßä0ß@ßÐß@ßäß@ßßßÐßÐßpßpñð ñ0ßñ ñð íß0ßßßäääPßßß íäÐAÑñ@ñ€ñ ñð ’@ßp Aß@í0ß@ßó@ßÐAñ íä@ßßPßäPíPäPßäðþ íð äíßPßÐñÐñð ñ êßä@ß߀ÑñÐñ íð ñ0äÐßäð Añ ñÐñð ñÐÑ ñ ñð Ññ@ñð í@ßß@ßß@ñ@ßÐßóð ñð íð ê@äíßß4Qäð ñð íð ñð ñ@ñÐÑßßó@ñð íßÐÑäí@ßÐñÐñð ñð ñÐñ€óð a,ñð ñð ñð óð Ññ í€ßÐäþñ íä€ ñ ßß`&ä@ßä@êß@ßÐñð ÑòPßß@íßíð ñð ñð ñ ñð íßóð ó@ññ ñ@߯ßäßß0äßÐñð ñð í@ß@ó@ñÐñ@ñ íßíQíßßÐñð ñð íßßäíPííð ñð ñð í@ß0ßß߀ÑßÐñð ñ ñ ñ@ñð äíPßääíþäÐñ@Ññ íó@ñð ¯ÔòÐñ@ñÐÑñ@ñ0ß0äßÐäßÐñ Ññ0äßííßÐñð ñ@ñ@xñ ñ@ñ íð ñð ñð íß@AÑñð ñð ñÐÑxÑñð ñ ñ@íð íPäß@íäÐñ ñð ê@ß°Š  x`êð ä0ípñð ñÐßßää@äß@ääPíð í@í@ä@ä@Æßíð äPíPäPí@þßßßPí@íð ñÐñð ñð ñ@ñ ñð ñð ñ ÑñÐñ@óPòää€ðQßä0ß0í@íð ñ@óÐÑ ßPääß@ßßPò@í@Ññð ñÐßß0Ñ ñ ñ íð ñ ñ óÐñ ñ€ AñÐAñÐß@ßíä0í@ßß@ñð ñð ñÐñð ñÐãñ ÑñÐñ ßPßäí𠡇ð qêð íPß@þÑñ Ñßä@í@ä0ßíPñ ñð ñð ñ ñ ó€ßÐêÐßßßäí@íð ñ`,ñ ííí@ßäßÐßß@ãñ fÒñ ãÑäß@ßíí4ñ ñ@ñð ñ ñ ñð ñ AñÐ AãAñð ñ ñ Ññ€ßÐß0xñ Ñßä@ß@ñð ñ ñð Ññ Ñß@ßßÐ߀òð ñÐñÐ1ÑãÑ߀ñÐßPþßßí@ÑòÆêÐñ@ñð ÑßßßÐÑñÐñð ñ€ß@êð Ññ€ß@ñÑñ€äPßß@íPí@ß@ßß`&ä@í@ííPí@íð íð Axñ ¡íí@xñ ñßâµ#¯ÝÁoñÚÅk/^;‡ñÈ9üï›ÃoóÚÅk÷-¹xíâ}‹÷Íá·ˆÛ}sø-Þ·vñÈÅûï[Äoñ¾ET÷-eăí¾9$7¯ÃvßÚ‘‹ØÎá·xß"~KÙî[¼ƒßâ}sHî[¼þvñä}kGîçYróâŒ÷ÜÏvñ¾E$7ïg;yßÚ}KÙ.¹y¿Í#—²]¼vßâ}‹×.å·xí¾Åk÷­Ý·vß"¶ûÖÎ!¹y)ÛÉkçð[ƒ¾‰‡œx¾‰ç›xÚIï›xBS§xÚ1èƒÚ‰§oâ!ç›v¾Á蛢ډ§x¾‰§y¾I¯x¾iç›v¾Áè›Câ‰O’„¾iç›xȉ盄È1¨oâÁ(žvâi'¡oâ!'žoÚIè›x¾i'žoâi'žvâiÇ râù&!r "Ç©x¾‰‡œvú¦x¾™çƒÚ‰çyÚ1蛢¾i'žy¾I¨ƒ¾‰çƒÚIˆœx¾‰ç›xÚ‰‡œ„¾‰ç›x¾‰çrÔIè›x¾Á蛄¾‘£„ÚQ'žoäiÇ oÚþ‰çƒ¾I/¡oâù&žvâÁ(žoÚQ'žoâù&rÚùFy0ЇœoÚùÆ Œâ Mž„¾1è›vâi'Ý„¾‰‡£¾1¨xÚù¦oÚù£xÈ1ê›vÔiç›xÈ1èƒÚ‰§ƒÚ1ꃾ‰ç›xȉ§ƒ¾1¨oÚ1¨x0ú¦oâù&žoÚIHvâù¦(r "§y¾1è›x¾‰ç›xÈù¦¢¾‰gžo "§x¾IèƒÚI¨xÈIè›xȉgr¾i'žyȉ§xÚ‰ç›x¾‰ç›x¾)Šœxæ!ç›x¾i'žoâ!'žoŠ"'r¾)ªoâù&žo jgrþâù¦r ú¦x¾i'žoÚ‰§£¾I£x¾i'r¾1ªƒ¾‰ç›„ÈiÇ vÔi'¡Ð ú¦¨vŠ"'!r jÇ Œâù&r¾i'žo ú&râ™ç›xÈigr¾‰‡œ¢æù¦oâùFQÚay|#íø†A¾Ñƒ|#߈Ç7âñvÄ£ñhÇ7 ÒŽxà äÀH<Ú‘žo´ãN)J;BŽvÄãùF<¾ÑŽx|#=߈Ç7âñvÄãíˆ9âAŽ¢#!ä0È<¾1r´CùÆÁ <„ñPG;¾!‰oäñøF<ÚoÄ£߈Ç7Šò r¤þñhG<Ôñx`äñøFQÚ!ƒ`äñøF;¾oÌ#äHÈ7âÑŽ„#í0È7 BŽoäñhGQÈQ”oÌà ä˜G<¾oÄCß0H;òv|£ñøFQ¾oåQG<Ú‘oÄãñh‡Q¾ƒ|#íøF;âñväñh‡A¾1oÄãíøFz¾oăó0HhâAŽxcñhÇ7âñ ŒÄ£ùFQÚ‘v¤ ‘9òx´#í0Ê70òv|#ßHH;¾oäñ G<È1v…óˆÇ7Úñx|#ßHH; ‚‘o´ãþ#Ç<Ú! ƒ´CåøFBÈvÄãñø†A¾AŽy´ƒñøF<0òv„óHH;¾a”vÄ£ñÇ7âÑŽoåEùFBäñ¢´ã !Ç< ‚r$„ß0È7âñ ƒ#í0ˆS¾Q”oÄ£߈G;âÑŽ„´ƒ ù†AÚ‘oÌÃ íø†A¾1xcñhÇ7 Ÿx|£äHˆ:Èo¤ñh‡A¾Œ|#߈Ç7âÑŽx´#߈G;äÑrÄCñhG<¾a”oÄãóHÈ7œ’u„Æ I9âñx|£߈Ç7âÑŽx´Ã ßhÇ7 òx´ã!þÇ<BŽ¢´ãíHH;âñy´Ã ߈9âAŽx|ƒñøF;¾aoäE!G<¾ao#߈G;ŒÒŽx#ß0H;¾v|£(ß(J;Šòy´#!ßhÇ7Úr¤ ‘G<¾oăñhÇ7â‘o#ñøÆ<ÚQ”oåñøF<¾vÄãùF<Úv$¤ûF<¾arÌ#äˆÇ7ÚAŽy´#íˆG;¾‘®v|à ß0H; ÒräñhG<¾ÑŽoÄ£ß0È7æv|#߈G;¾Qr´ãùF<Èv|#ßHÈ7âñx|#ùFþ<¾Œ$äñøFàarÐà ߈Ç7ÒÕ£´#ùF<Ú‘vÄãñø†S¾avcñøF<ÈrÌ£ñhG<¾răñhG<Úñxc‘‡AäAŽx|#ß09æAŽx`äñø9âñvåi‡AÈ1oÄãñøFQÚaoäEiÇ7Òõô|£é€"†3Äãó G<o´Ã(߈G; Òƒ|CEùF<¾ƒ|#äˆG;â‘o´ãíøF<Èav$¤EiG<¾ar|#ñø<0oå!G;¾‘vÄãíˆG;þŠòx´#ê0È7âAŽoăE!GBÚy|#ßhG<ÚoäñøF<¾1o¤ñøF;âñy£ñøF<¾y£ùF;âñx|£éjÇ7Úñx|#߈G; ò„´#!1H; BŽoÄãíˆG;âñ ŒÄƒ߈Ç7Ô‘Ð¥ ùF;âñ Œ|£ò9 Òƒ´#í( 9ÚoÄ£ùFBÚv¤߈Ç7âA£|#߈Ç7âуãßh‡:‘o$„i‡AÚ‘®oăó Ç7 ‚‘x|à 툇oˆ‡oˆ‡oh‡o0ˆoþHˆo(Šoˆ‡oˆŒø†„ø†xøƒøŒ0ˆoˆrHˆo(Švˆ‡v(Šoh‡xø†v(Šohƒøƒø†xø†vˆ‡oˆr0Œˆ‡vˆrÀƒh‡x ‡„hƒh‡xh‡x ‡xø†„ø†¢ø†vˆ‡yøƒø†xø†xø†vˆ‡vHˆv˜‡o0rø†xø†xh‡oP‡¢ø†¢ø†xøƒø†xh‡xÀƒ ‡xøuh‡¢ø†x ‡xø†vˆ‡vˆuHrø†vˆ‡oHˆohƒ ‡xh‡„ø†xhƒø†vø†„ø†vø†xhƒ ŒH—yø†¢hƒhƒøŒˆ‡v0þrˆ‡vø†vø†x ‡xø†vˆ‡oˆ‡oˆr0ˆvˆ‡oˆr(Švø†xø†„ø†x ‡xø†v0§ˆ‡v˜rˆŒˆ‡vø†xø†vø†xø†xh‡¢ ‡xh‡x ƒø†vˆ‡v0rø†vˆ‡v0ˆoˆ‡oˆ‡v( r0ˆv0ˆoh‡x ‡oh‡x ‡oh‡oh‡o‡„ø†xÀ£˜rˆŒˆrˆrˆ‡oh‡oh‡xø†¢ø†„ ‡xˆƒøƒ ‡v( r0ˆoˆ‡v˜rˆ‡v0r0ˆoh£h‡xh‡x˜rˆ‡o0ˆvHo0ˆyø†„ ‡oˆ‡oˆ‡v˜rh‡xøþƒø†xh£øƒøuh‡x ‡ohƒø†x ‡xÀˆxø†x ‡x˜‡o˜rˆrˆ‡oˆr0r0Švˆ‡oH—oÀ£v uˆ‡oƒ ƒh‡x˜‡oˆ‡vˆ‡oÀƒø§Hˆvˆ‡oˆ‡oˆ‡oˆrˆ‡o0ˆo0ˆoh‡x ‡xø§øŒˆ‡oˆ‡oˆ‡oh‡xh‡xø†Peð3Hˆvˆ‡Cˆrˆ‡oˆ‡o0ˆv ‡xÀˆohƒ ‡xÀˆxhƒhr0 rˆŒˆr˜ƒh‡xh‡x ‡xø†x ‡xø†xÀˆoˆ‡v( r0ˆvˆŒ0ˆoˆ‡vˆ‡vþø†„ø†xP‡vø†x ‡xh‡oˆ‡o0ˆv ƒøƒh‡¢h‡oˆ‡oˆ‡vø†v ‡xh‡¢ør0r0ˆvˆ‡oHˆvør0r( r(ŠoHˆvø†¢h‡„ø†xø†xø†x ‡y0ˆv0ŠoHˆoˆ‡v‡oÀxø†xh‡o0 rˆ‡vø†„ø†y(Šv ‡y0ˆÐˆ‡vø†vø†x ‡„h‡„ø†vø†xø†xøƒÀrˆ‡oˆŒ‡Ð0Šoˆ‡oHˆoˆ§ø†v ‡yh‡xø†yÀˆoˆ‡oˆ‡oˆ‡oˆ‡o ‡xøƒp„x ‡x„o0ˆoHˆvˆ‡vø†x ‡xh‡þoˆ‡vø†ti‡xhyø†xø†x ƒh‡xh‡¢P‡xø†xø†xø†xø†vˆ‡vˆ‡vˆ‡v0ˆrø†xh‡xø†„ ‡xø†¢ø†v0ˆoˆ‡o ‡x ‡xø†vHˆoˆrˆ‡oˆ‡o0ˆo0ˆo0ˆv0ˆo(Šoˆ‡vør0rˆ‡oˆ‡vø†xø†xørˆ‡oˆ‡oˆ‡o˜vø†¢ø†xhƒh‡xhƒÀˆopŠvˆ‡v0ŠvHˆvø†vø†xø†xøƒø†yˆ‡oˆ‡vˆ‡oˆ‡vø†¢ ƒP‡o(Šv0ˆoˆ‡oˆ‡vø†xø†xø†yˆrHˆoHˆvHrˆ‡o0þˆoˆ‡o0r˜‡oˆ‡oˆr˜‡oˆuh‡x ‡xh‡oˆ‡oh‡oHˆvø†xø†xø†xh‡oHrˆ‡vøƒhr˜r˜‡¢ ƒh£hƒhƒh‡oˆ‡vˆ‡vˆ‡vø†vˆ‡vˆ‡vˆrˆ‡o ‡xh‡o ‡„ ‡xøƒh‡„P‡„h‡oˆ‡vrˆ‡vø†¢ørˆ‡oˆ‡vˆ‡v ‡xø†„p r0rˆLƒP‡Ð0ˆv ‡xh‡oˆ‡ohƒh‡x ‡ô ‡y ƒø†vøƒh‡oh‡„˜‡„h‡oHˆoˆ‡o(Švˆ‡vHˆoHˆoˆrˆ‡oh‡ohrˆ‡vþø†¢h‡oˆrˆ‡oˆ‡o0ˆoˆ‡vˆ‡vør˜‡¢ ƒ ƒøƒhrˆ‡oˆ‡oh‡xø†„Àˆ„øƒ ‡y0ˆvø†„h‡å‡vHˆvøŒø†xø†xpŠo0rˆ‡oˆ‡oh‡o˜vø†vø†vø†xh‡o0§Hˆv ƒ ‡xøƒ ‡xh‡oh‡o0Šo˜‡¢hƒÀˆtÁƒ‡oˆ‡o˜‡oˆrˆrHˆ„aÀ3ø†vø†xøG(Šoˆ‡ohƒø†x ‡xh‡xø†xh‡x ‡x ‡vˆrˆ‡vˆ‡oHˆoh‡¢ Œˆrh£Ày(Švˆ‡o‡þ„P‡xø†x ‡x ‡xøŒ0Œ0ˆoh‡¢h‡x˜‡oˆ‡oˆr0ˆo0ˆoÀˆxø†v0ˆoHˆy ‡xø†vˆ‡oˆ‡vHˆvˆ‡vø†¢ø†x ‡x˜‡o0ˆoˆ‡oHˆoh‡„ø†x ƒh‡oˆrÀˆoˆ‡vˆ‡vˆ‡v0ˆoˆrˆ‡oÀˆoˆ‡ohrˆ‡vøuˆ§0rˆ‡oh‡xø†„ ƒh‡oˆ‡vˆ‡vø†x ‡xhuHˆoH—oˆrˆ‡o ‡„h‡xø†xø†x ƒhƒ ‡oP‡„ø†xø†v˜rˆ‡oˆ‡o0rˆr( rhƒ ƒø†t™‡o0þˆo8„vˆ‡o8„xø†vˆ‡oh‡oh‡x ‡xh‡¢ø†„ø†vøy0Œø†¢h‡xh‡oh‡x ‡oh‡oˆrh‡xhƒ˜‡o0ˆoˆ‡oh‡x ‡v ‡¢hƒÀˆxhƒø†xø†xÀrˆ‡v(Šv˜rø†xø†„ø†yøƒøƒhƒø†vˆ‡o0ˆoˆ‡oˆ‡vHŒ( rHvˆ‡vˆ‡v0ˆvˆrh‡oˆ‡oHˆohr0Œø†xø†vˆ‡oh‡x yp uˆ‡oh‡xø†x ‡oˆr0Šyø†xø†v0rHˆo0rˆ‡oh‡oˆ‡yˆƒø†xø†x ‡xþø†xh‡xhƒø†xø†¢h‡xø†xh‡xø†xøŒ˜‡oˆŒˆ‡vˆ‡v(ŠvHrˆ‡vˆ‡y ‡yø†¢ø†x ‡xø†xh‡xøƒø†xøyhƒø†x ‡¢ø†v(Šoh‡xøŒø†xø†x ‡vˆr0rø†vˆr0ˆoˆ‡o0Šy ‡¢Àˆy ‡xhrŒø†xø†vøƒø†xø†vø†vø†vø†„ ‡xø†v(Šv0r0Šoh‡oh‡x ‡xhƒø†v0ˆoh‡xø†xø†vHˆvˆr(Šv0ˆoh‡xh‡xÀˆoh‡ôh‡y ‡xø†v0Œø†xÀˆþoˆrHˆo˜‡o0ˆvø†x ‡oˆ‡oˆ‡oˆ‡oˆ‡oHˆv˜rHˆvHˆoh‡„h‡xP‡xøƒh‡xøŒ0ŠoÀƒh‡xÀƒh‡¢øƒh‡xh‡oˆrˆ‡oˆ‡vˆ‡oHˆoˆr0ˆvø†xø†xø†xøŒˆ‡oˆ‡ohuh‡oH—oˆr0ˆv(Šv(Švˆ‡oh‡xø†x £hƒø†x ‡x ‡vø†x ‡xø†¢hƒ˜rHˆoh‡oh‡„ø†xø†x ‡oŒˆ‡oh‡oh‡xøyÀˆoXÞoˆ‡oèEP<0r˜‡vˆ‡v„oh£ø†ôø†xhþ‡xh‡„ ‡¢ø†xø†„ ‡xø†xhƒ ƒ ‡xø†xø§ˆ‡Ðh‡o ‡„ø†vø†xP‡„h‡¢h‡oˆ‡v‡oHˆoˆ‡vø†xø†ti‡xÀˆ„hƒøƒÀˆo( r0ˆo0ˆvø†xør˜‡oˆ‡oH—o0ˆo˜‡oˆ‡o0ˆoˆ‡o(Šo0ˆvˆr0ˆvˆ‡oˆŒø†¢h‰i‡„Àrˆ‡oHŒ‡vˆ‡o0ˆvˆ‡o ‡y0ˆvˆ‡øHˆoˆ‡oˆ‡vøƒø†xh‡„ø†xh‡¢hƒørˆ‡o( uø†xø†ôh‡xÀˆ¢h‡oHŒˆ‡vHŒø†xh‡xþh‡xh‡„uˆxñÅ#7O`¨xþæ oâù&rú¦oú&„cü&žovîé›xډ盇Ú9¨oâi盃Úù&žoâùæ v¾9ˆzâùæ!râùæ¡oâù¦oâ!'žoâù&žoâiGž§È‰GoÚ9ˆœx¾y¨x¾9蛃¾‰‡œƒÚ9è›xÚ9¨oj'žvú&žo"§§v¾Aø›x¾‰‡œx>è›x¾‰ç›‡Úùæ¡oâiGžvj'ræ9è›xÈ™‡œyzjç›x¾™'râù¦ƒÚ‘'râ!'žoú¦§oÈé雃Úqvþ|£äˆÇ7â°o<¤iÇCÚqväñøÆAÈv|ã ê8H$¡ <˜¡߈G;âq„}a߈Ñ<¾qo´ã!ßx9âÑŽƒ|ã!äøÆC¾o”í!ßhGOž„}#ßxÈ7âñxã!í˜Ç7òv<äñhG<Úoæíˆ9ò‡|#äøFO¾o´#ß8È7âAŽvÄãíÐÓ7âAŽ}£i‡:CŽo´C0íˆG;È¡Á´ãñøF<Úqy|#ßhÇ<¾Ñ“oæñh‡:ÚqvÄãñøÆAÚoä1úF;âñxþ£iÇAæq„ÅãCØ7ÒŽƒÐƒiG<Úñ cäí8H;BŽoÄãíˆÇ<¾o ì ß8D;⡎C̃ßhG<vvæñhQ<Ú1odߘÇ7âñx|#߈9âÑŽx´#߈Ç7‚°oÄãíˆÇ7BŽo´ãùÆCÚrăñhG<Ú!„ä!GŒöräíøF;BÁ|CÆŒÇ7òxãiÇ<¾rÄãñhG<ö„ÅãÆüF<ÈoÄãñøF<Úo´#ß8È7âñx|ã óøF<ÚÑr|Cþ0í8È7òx|ã!í8È7Úñx„$!‰CHâà’8„$!‰CHâ’8„$!‰CHÂÛ’8„$ÁîCH"’8„$! oKâì>„$!‰CHâŽ8„$±mGHÂÛ’8»! o›Ý‡p„$!‰@8âŽð¶$áIþÂ’8„Ù%qIB‡`÷!Ø}IxÛ’pÄÈ%qvB‡`··%IxÛ‡p„$ÌîI‚Ý„·%IB`÷!¶-‰CHâ’8„$ÁîCH"ì>ø!$áímKBíøÆ¶1òCH"’8„$ÁîCP^‡Ä!ámGHÂ’8„$áoKâ#„$Áno;B‡Ä!ØIB‡Ø¶$Áî@HâØíA¼MAŽÝ¼Íì$á¶MA¼ÍAÁ$á$á$aø$á$!$ááÌNá$!$áØí¶ÝþÝAAòAAAAaäAÁAAÝAáAÝûNÁì$á$áØ-$!ÝAAANAAAAÁ(/AAAÝAÝAÝAAA¼MAÝòAÝAANAÁ¼Máá$á$á$ÁÛØí$!$ÁÛ$á$á$áØ-$!$áF.ØíÝÝÁ¼ÍF.ÌNݼMAAþ¼MAAA¼MAAáAÝANAA¼MÝANÝAAÝaäÝAòÝݼMÁ$á$á$á$!Á$áØíÝA¼Íì$á$á$áFî$áØíFî$á$ÁÛ$ÁÛ$!$á$ÁÛ$!$!$á$áØíaäAÝAaäÁÛ$!$ÁÛ$ááàá$áAAN†ÝAA¼Í$!$!$!$áAA¼ÝþAAAá$!$!$áØí$á$áÝAAÁØ-$á$áà$!AÁØ-ÁÛ$á$ÁÛáØíØí$á$á$ÁØíØíàAAÁ$á$ááá:ÀxÁð€ ââA¾Aâ¡âáÚá⡾¡¾AÈ¡¾!ÔÚ¾AâáâáâáÔAâÚ!£¾¡2Š?3JâáÊ¡¾?ç âÚAÚ!2J¾¡Ô¡2*¾!ÔáÔáÚ!£Ú!ø³ÈA¾¡ÔáþÈAâáâáÔáÔ!¾!2JÚáÔáÔáÚáÚáøSÊIâ4Ô!¾!¾A¾?¿AÚAâáâá‚?É!¾A¾¡ÈAâ¡âáâ¡2Jâáø“Ô!Úáâ¡2ªâ!£Ú!£âáâ¡È¡â!£Ú!£âáÔ¡¾AÚ!¾AÚ¡ÔáÔ¡¾A âÔáÊ¡øóÊ¡¾A¾¡ÚáâAââáâáÔ¡¾!$2*¾¡¾AÚA¾A¾!Èá!¾!¾I3ªÊ¡2ªÊ¡¾!¾¡þÔ¡ âÔ¡ "£Ú¡Ô¡âáâáÚAÚÚáDµø³ÔÁ È!¾A¾¡¾A‚ÚA¾ÔáâáÚ¡âÔ!Ô¡ÊAâáâáÚáø³Ôáâø3¾¡¾!¾!¾¡âáÊAÚ!Úáø3ÔáÔ¡ÔÁ Ô¡Ô!¾A"£ÚÁ ¾AââáâáâáÚáø³Ô¡ø“ÔÁ ¾¡Ô!¾A4£DU¾¡ÔáÚáÚáø³ÔáâáâáÈAâÊA2Ê ¾A¾?Û^Ë!Ô!¾þ¡¾¡2J¾!4¾!¾¡âáÔ!Ôá!¾!ÈIãA¾!2*¾ATÕáâ!£âáâ!£Ô¾AÚ¡Ô¡ø“ÔáÔ!Ô¡Ô!ÈA‚k¿¡øóÚ¾A¾AÚâá!2J ‚2Ê ¾¡Ô¡Ôá!2ªâáÚáâ!£4ÚáÔáââAÚ¡ÔÚ¡øSTÛáÊAÚA âÊAÈ!¾¡ÈA¾¡Ô¡È!È!£Ô!¾AâA¾IÛAâáÚáÚáÚ?¿AÈá!¾!¾AÚAâáBþÚâáÔ!¾!È¡¾!¾?ã!£âáDU2J2ªàU¾IË¡¾á!¾¡Ô¡Ô!ÔáÔÁ Ê!¾AäÊIãaAÈA¾AÚAÚATÕáÔáÊ!¾ø³Ô¡Ô¡¾¡È?‚ø3£âáâáÚÚA¾!¾¡ø3£Ú¡Úáâ!£øÓ 2ªâ!£Ô!¾¡ B¾¡2JÚ!¾Á Ôa!¾¡ÔáÔâáâ!£âáâáâÚáÔ¡âáÈ¡Ô!£âáâAÊ!Ô!¾!ÔáÊA¾AÚ!2ªþÔáÚáÔ¡ÊA¾!Ôá!¾!¾AâáÔ!¾A¾!Ô¡âAÚA âÚ¡T¾Aâ?ãáÊ¡¾¡âáâáÊAâAâáÔáÚáÔ¡Ô!:À”Á Ì Ú!Úa!¾vâ¨Â ÈÁ ÚÁ ÈÁ Ú!¾a!¾!Èa ¢Hºv¢â¡âá!ââ¡È*ÚÁ Ú!¾æÁ Úa!¾Á ¾¤ãáâAvââABx‚æ*Úâá!‚?Û¤Õ!È!È'Úa!¾!ÈaÚ!Ú ¢¾a'¾a'Èþ¡Èa¾a'¾¤¿a!¾Á ÈaâAvâ!¾!ÚæÁ  ¾*Èa!Ú!Èa‚ÚHºâAx¢‚â¡v¢v¢¢z'Úa!È!ÚáÚÁ Úáv‚BÈaâá!â¡vBâáâá ¢x‚â¡Hº‚Úá ââæÚ!Úa'Ú¢ ‚¨¢ ‚‚â¡ââáâ!¾!È!ÚÁ Ú!Úa!Úá â⨢È!Ú ¢¾¡ âÚA¶Û!ÈÁ Úa!ÚÁ Ú!¾'‚'b!¾þâ‚â‚æ!Èa¾a!Úa'ÔÁ ¾â¡â¡vâ âdÛ ¾!ªÛ!È!Úa'Ú?Û!Ô!È!ÚA¶ÛÁ ÈaÚæâ¡âvââÈ!È'Ô¡âæa!ÔávââáÈÁ Ú!ÈaÚa!ÚÁ È!ÚˆÜ "Èa'Ú!Ú!¾!"Ú!È'Èa!ÚÁ Èa¾!È!¾a!$¾a'Úa!ÈÁ Ú!Ô!Èa!Èaâæ!Èa Bâáâæ¡ ¢ â!âá ‚âáâA¨¢â¡þ¾â¡vbA¨‚Bâ¡Ô¡âæa!¾!Ú'¾!Úa!ÈÁ ÚÁ Ú'Ú!¾aâ¡âáÚÁ Èa'¾Á ¾¡x‚âá⡾!¾!¾*¾a'Ú!Ú*Ú¢úâa@âáâᨂd›â¡âáâ¡ÈaÚA¶b@ââávâ!ÔÁ ÚáBâ¡ Bv‚⡾*ââ¡AðÀ â¾!¾!ÈaÛ†ï$ê%ÁAAÁAÝá$á¶mø$ê!$ê%!¾!ÈÁ Úa!Ô¡¾þ¡â¾¡xâÔ¡Ôá! ‚ âÔ!ÈA È!¾!¾a!Ô!ÈÁ ¾!¾a!¾!È¡Èá ¢â¾!$ÈáÚÚáâa@Úa!¾!¾!¾!¾AÚ'¾!æa@âaÈáâ¡‚Ú'¾Aâ‚Ô¡â¡âáâáv¢âÔ¡¾!È*È!È¡âáâ¡âáâÚ!Ú!¾'ÈA‚âáâáâ ¾µ‹G®]¼oêÚµ‹÷-žCrñ¾µ#§ð[;rñÈÅû¦.Þ·xäÔÅû\¼oS¶S\þ¼vêRÆ#GN&¹vñÈ©Sø-¹yäâ}‹G.Þ·xäÚÅkï[»oêâ‘S×.Þ·v2¿Étø-Þ·vßÚ9lï[»xäⵋ÷-9uíâ}sHÎá7™óÈÅ#×Îa;‡ä¾Å#Ü·vñÈ9üæð[;‡ßâ}‹÷Í!¹”ê¶‹Gn¹xßÔ)tø-9™äâ}‹Gî[~‹÷-Þ·xäâµû†ð[¼v¿Åûï[¼vßæ!$¯¹xäæ!l÷-^»xäæ!$7a»xòÈÅû†°Byíâ}CØNÞ·xí¾Å#ïBu2 þ~‹÷-Þ·xê$ Âvßâ}‹÷M&h‹äâ‘ûø-Þ7„ß¶‹÷ a»Ðñ¶ûö‘\~›÷Íb;‹ß~‹GnÞ·xßd#üÖa;ß3O;µƒ9µCN<äÄÓN<ßXôÍ<äÄCÐ7µóM;߀ÖÎ7óXÔN<ß ÔŽ<ß ôÍ<}ƒP;ñ´ƒ9ñ´CBä ô 9ñ´#S;µO;ñ|O;}C[;ßÄCN<ßÄóM<í|cÑ7ñ|ÓÎ7äȤBíþcÑ7}O;ß|DÎ<ß|ÔN<ßÌÓN<äÄóM;ñ|O;ßÄóM<íÄóM<ßÐö 9ñO;}O;äÄóM<íÄCŽEß´ƒÐ7ñ|Ï7í¨ÓN<ßÄCN<ßÄCBßÄóM;ßÄóÍ<äÌCÎ<2}Ï7ä|ôM<äÄóM;ßÄóEíÄóM<í¨£Î7ñ´cQ;òÏ7ñ|Ï7Éó hß ÔN<ßÄCBß´ó 9ñ|9}Ï7}cÑ7ñ´Ï72µƒ9D-ÿXô B‘Ï7íƒP;ñ´9µƒP; µÏ7ó9ñ|cÑ7µƒÐ7ñ|ƒP;þ}ƒÐ7ó ÔN<ä̃Ð7ñ´óM<ßÄÓN<íÈFN<ß´óM;ß´óM<ß ÔN<ê|ó BíÄÓ9u ˆ2x˜ñM<ß´Ï!}cÑ7‡ÀBß´ƒP;$O;ñƒÐ7ñ|O;ñÀcÑ7ê DÎ7íÄÓÎGßÄóÍ!ßÄÓÎ<ßÄÓBÆÐ4´i00€à´sMÄcN<@6ñÌ3O<í0 ÀòM8 0 Ò´ÍiLp@ð)ñ˜#¨Î7Ð Æ|9}9íXôM<í¨O;}#O;ñ|Ï7ñ|ƒP;ñÐöM<ß ô BþÅó BÅóM<æAŽo ¤ñøF;âñvÄãíˆÇ7âñx´#íøÈ7âA‹|£߈G;@CŽx|£iG<¾1oÄ£!G<ÚñrX„ ß°9,ò ‹|#äø†L¾©ÅƒäˆÇ7ÚAþ|CùA¾a‘v|„íø†E¾rÄãñ˜Ç7âÑ„|#ßhG<ÈAx|£ñhÇG¾ÑŽoÄãiBÔoX„ßhÇ7âñvÄãíˆ9òv|„ñ È7äÑŽx|ƒ iG<Úa‘v|£ñhÇ7Ôrăí°9â1rÌã!G<‚þrÄ£ñøB¾o´!í°H;âñx|ã#S“m,Ò™´#߈Ç7òx|#ߘ9âñ£ñøF<Èñ „|£Q‡<âÑ„|C&ä@H;¾rXäñøF<¾rÄ£ñøF;âñ „L !AÈ7v|ƒIí@9>ò ‹´#߈Ç7Úñ ‚ăßÉ7Úr„¦ñøBÚoÄ£!BÈo´ã#ß@È7âñ „´#ßÉ7âñx´#íˆG;âñ „|#ßøÈ7âÑŽx|cäˆ9â1oăêhG<¾ÑŽx|!íˆG;,òþvcäˆÇ7âÑŽx´cä@9âÑ‹´!íàBò ‚|C&ßhÇ7âÑ„̃ùF<¾vÄã±9Úv|CiÇG¾ÑŽoX„6ñøB¾v ¤ñø`¿Ñ™|#߈Ç7âñx|#í°È7ÚñvXäò°-øv|#íˆ9Ò‹|#äø†E¾oÐæíˆÇ7Úñv|Ã"íˆ9dÒ‹´ãñøF;âÑ„|£ñøF<‚oÈC&߈Ç7Ò‹|#߈Ç7Úñ ‚ ¤üùF<ÈÑ™#äˆÇ7âñ8Bx0C;BŽxþÂ"í@È7âñ~ „ñøF<¾v#ä°H;âñyăñPÇ7ÚrÄãóˆ9âA›o ä‘Ä7âÑ‹|£ñ0†¾Ä@8Ö‘$.Ðs,@…ÀÆ7|„½øÆ:fðo@CC ‡9 !„|£1@6Ì|9âAŽy´ãiB¾Ñ„´#äˆG;¾o äi‡E¾v|#퀇EÚv|#‰Ç7âÑr „iÇ7Èa‘văù†E¾AŽx´ãíøF;,B‹´ƒñøF<¾Ñ™´þãñø†L¾ñ‘o´ãiÇ7Èu|£ñ M<¾vÈäíøBÚv„Fß`Ò7,òv „óøF;¾v|#ß°È7âÑŽxcíˆÇ7ÒŽx|C6ä°H;Èo´ã2iÇ7âñv!íøF;>Ò„´#ä˜B¾r ¤!BÔÑŽoăñøF;¾oÄãñh9æ‚ ¤!G<¾švX„ñøÆGÚo ¤iÇ7ÈoăùF<¾oXD߈9âñxäñøF<ÈoÌ#íˆÇ7æñy ¤ñhG<švXäþñøB¾ÑŽo äñøF<ÚÚ|äùF<¾!“v ¤ñhÇG¾v|Ã"äˆG;âAŽx´C߈G;âAo äñ È7âñ ‹#ߘG<Úñx|!äˆ9âÑŽoÄ£߈Ç7,òxã#òøF<ÚAŽx|!ä˜G<¾o ¤ùF<Úñx´#߈G;ÄÃ7ÌÃ7ÄÃ7ÄÃ7ÄC;ÄC;|Ä7ÄÃ7 Ä79ÌC<BÃ<ÄC;|C<|9ÄÃ7€F; 9ÄAÄC;Ã< Ä7ÐÆ7Ä9ÄÃ7ÄÃ7ÄÃ7ÄÃ7ÄÃ7ÄA 9̃E|h|C<´þB´B|Ã<|ƒEC<|ÃG|9ÌB|C<Ä7ÄC;|ÄÔÄC;ÈÃ7ÄC;|C<|C<|A|C"'žvâù¦E”ÁÃŒ„Ú!Çu¾i盄Ôù‡ŸxÚù&žv¾iç›xÚ!'žoâùfƒ¾a1râ!Ç vú†œxÈIèƒÚ!‡$cšÚF€ÀY'ƒ BâpÜPœk¢˜%žgfP@nFxº@šoÌ™A€o  xÚéiÔ1h„°‰ÇBÚfr`ú&žv ú&žoÚù&žv¾‰ç›x¾‰§Ú1¨o jç›v¾1¨xÈ1èƒÚ‰§xÈ!©xÚ!gžoâiç›x¾1¨o`"'þ!r2üÆ o ú&žoâé›xÔù¦oÚ!'žo "Ç v¾I¨oÚù&¡vjç’Ú‰§o jÇ râiç’¾‰ç›xÚù&¡v¾‰‡œx¾‰‡œx¾)žoâùÆ v䉇œ„ȉçr jç›x¾‰¦oÚ!'u¾iÇ vâiu¾iÇ oú&žvâi'r执oâù†œx¾1ˆœoâù&žoâ!'žv>jçƒÈ‰&ƒÚ‰§ræ‰ç›¾‰ç›xÚ1èræ‰ç›xÚù†œxÚù&¨oâi'¡oâù&žoâ郾Éðƒ¾‰§oHjGræiç›vâ!'ÃoâþéræùfƒÚù&y¾‰ç›y ú&žoâù†¤vâ!gž„Ú‰§y¾‰‡ƒ¾1è›y¾‰§x ú&¡oâiç#y¾©oâù&žoâùÆ uÈù¨o BŽx#í0ˆ:ÚAƒ|#0É9âñx|#ßH9òx|ƒóhG<Șà íøF<¾aoÄ£ñh‡AÚoÄ£ä0H;>òx|£ñhGBÈrăùF<Úv$„ñøF<¾au´ãñhÇ7>òv|#íÇ7 ÒŽx´ãí09ævÈã ‘‡ü¾av|ä0QLâAŽ„´#þß0È7âAŽx|#ä0H;âÑŽx´ãäˆG;âÑŽoÀ$߈G;¾av|#òkÇ7âñx|à äˆÇ7âAŽy´#!ßhÇ7â“o„!‡AÚoÄ£ñøF†Èo´#!0‰9âÑŽx´Ã ä0H; ÒŽo$„ÿ0ˆ:¾o$¤ßhG†`˜Äƒ!G<¾räñø†AÈrÄãi9âñx´#ä˜I¾ÑrÌ#!íˆG;âÑrÄãñøF<¾ao¤ß09âñ|c ùF<¾“´ã !GB6Еš¡߈9Ô! r|äþù†AÈo|ä ™Ç7âÑŽx|à ßhÇ7âñv|¤ßhG<¾Ñƒ´#!ßÄ7âAŽxÀ$ßh‡1Ðh  Ð@¨£¾0@2È  5`@ V$ )â‘t`[@; 1€x£ñH‚@Šv˜C Žh €$íˆ92DŽx|#ß0ˆüâñvÄã!Ç<ÈoăùF; BŽx|ã#ßhÇ7âAŽ ‘cßH9æAŽ„|à ߈Ç7Úo„ñ€IBÚr̃jj‡A¾rÄ£߈9æAŽx|£ßþG;âñ ƒ´#߈GrÒŽoÄã$iÇ7ÚñvÄ£!G<¾od¨ñhG<ÚoÌãi9ÔÑŽxÈï#0ùÈ7Hò ƒÀ£ùLâ1r|£ñhG<¾ar´ã#ß I;âñ 5ÅãíˆÇ7âñ ƒ´Ã ßß7äÑŽ„|#íøLâÑŽx|#ßhGB¾vd¨ð0ˆ' ÒŽx´#ßøÈ7â“o¤ù†AÈvÄãñøÆŽãñv|#ß092ôxà ßPGBÚoÄ£ñhG<¾ÑŽýÈã#߈Ç7`òÀÄ íø9Úo$äñøþF<¾ÑŽý¨cäh‡AÚoÄãñøF; òv|#äˆG;Èv&äˆ9 ÒŽx|£ñøF<¾ÑƒÌƒñhG<Úù%äñh‡AÚvÄãñ G<¾Ñƒ|à ß09`oÄ£ñøFB¾ÑŽx|#߈Ç7æAŽoÄãí`LäáÉo|¤!GB¾‘o´ã ÙAÚñv$¤ÙOBöv|äíˆÇ7âñ ƒÃ ähÇ<¾ÑrÄãiIÚoă0! 9âAŽx´#í09 ò ƒ|C~ñ˜Ç7ð,¿x´#!߈9âñ }#!߈Gþ; òx|&ñhÇ<ÈÑŽo´#äH9䃴ãñøÆ<ÈaoÄ#ÿø†Aæñ ƒ|à ó G<¾“ýÈ&߇AÚñ‘vÄ&iGB¾aoÄãiG<¾ñ‘oÈï iG<< “|#ß0H;âÑŽx#ß0È7âÑŽx|#!߈Ç7âÑŽxÀ$ßhG<ÈoÀ$߈Ç76@‹V´Â ñhGBoÄ£ñ ‡Añ„|#ß0H;¾“x´#߈G;¾‘oÌ#߈9âу|ã#äˆÇ7Ú!ÔÁÚ!Úâ¡b  ÀÁ `bâA¾AþÔ¡Ú!ÈÁ ä!!È!Ô!,âa?ââ¡Ô!!À!!¾!!ÔÁ À¡¾!ÀÁ `âÚá`â⡾!¾!¾$ÚáÈ!Úáâ ââá2äæá#Úáâ¡âáÚá ‚æ¡âA~¾!Ú!!ÚáHâââá ââ&â¡â&¾!Úæá#¾!¾¡¾!ÚáH‚æáæE¾Á ¾!ÈÁ Ú!!¾!Ú!Ú!¾!¾¡¾Á Èa ¢¾á#¾a¾!Úáâ¡È!È!Èá#Úá>âÈ!ÚáÚ!äçþâá â`â ¢,°¾Á È!Ô¡&¾!Ú!!¾!¾Á ¾!ÚÁ ÚÁ È!Úáâáâáââáâáâ¡âáââ¡ âÚá ¢¾!!Ú!!`"Ú!¾!ÚáÚAÚA¾!Ú`‚ââ¡ ââá ¢â¡âá⢾!!Ô!Ú!¾!¾!¾!¾¡¾ææ¡â¡¾á#¾!¾á#Ú!!¾!ÚAÚÁ ¾!CÚa?â¡â¡âââáââá⡾!¾Á Ú!ÚáÚ!!Úþ$ÚÁ ¾!ÈEÈÏâá`‚æÁ `‚ ‚ â â`"!¾!¾!ÚAöà ÚÁ Úâ&âæÁ È!!ÚÁ Úá#䡾!!ÚáâäòâáâáâáÈ!Ôâ¡à!¾!¾!È!Ô!Úá ââᢾá#¾Á È!¾!È!ÚA¾!!¾¡‚¾¡¾¡ BÚáâ¡ ¢ÈaH¢â¡¾!ÚáÚáâ&âá ‚âáâ¡Èá#È!ÚáHâ>¾!!ÚA¾&¾!Úáâ&¾!Úá2äþâáÚá ââÈ!Ú!¾Á ÚáÈá#ÈÁ `ââAÈ!¾!Ú!Úá#¾!’ƒþáâ¡â¡ ââ¡â¡2„â`ââáââ⡾!¾!Úá ¢¾!¾aÚáâÚá‚¢¾!¾âââáâá>¢¾!¾>â ¢âáâáâá¢âá⡾!È$ÈÁ ÔÁ :€”!Ì È!¾!¡âáâ¡âáAþá#Ú!Ú!È!Ú!¾!¾$¾¡ ââ¡ ‚âáþ ¢¾¡âáæÔ!¡¢âáÔÁ ââaÈ¡¢HâÔ& ‚vl¾¡âáâáâáâáâ¡È¡âáÚ!C¾Á æ ‚>âæá ¢âáv &âá⡾&&¾!¾á#Ú!!¾á#¾AÚÁ ¾¡âáââáâáâáâ>â &â¾á#È!Ú!¾¡¾!Ú!!¾Á Ú!¾!Ú!!ä§âa? âÚ!Ú!¾A`"¾!¾¡â ¢æâ¡¢¾!!¾aÇÈ!Ú!!Ú!¾þ!!¾!È¡2äÚ!È!ÚÁ ÚaÈ!!¾¡>â‚`"¾!ÈÁ `âÚa¾!` ȡ¾!¾¡>ââ¡âáâáHââ¢âá>¢¾!¾!¾¡ ââÚä¡âáâáâ¡ ¢â âÚAââ¡â¡âáÚa¾Á ¾!¾!Ú!ÚÁ ¾¡¢¾¡Ô!Ú!Ú!¾!¾E`"!¾!¾a¾!!¾!Èáâáâa?â¡âáâáÚáÚáÚ!!¾!¾á#¾!æá¢ ‚æáâ¡þÔ&âaÈáÔ!ÈáÚáÚ!ÈáÚ$¾!¾!¾!Ú!¾!¾!¾¡¾¡¾Á ÈÁ ¾¡X¤ ââ¡âáâá⡠⢾&¾!!ÈE¾¡¾¡âáâáÚa?>âÚÁ ¾!¾Á ¾!¾!¾Á ¾!¾!Ú!¾!Ú!CÈ&â¡â¡âáâá¢â¡ â>âÔÁ ¾Á Ú!Ú!ÚáÔ!ÚAâaÈáââaÈÁ ö#È!!¾A ¢âáâá`"ÈÁ Èá#È!Ú!!æáHââ¡ ‚â¡þ¾¡¾¡ âÚáÚ!¾!¾!!ÚÁ Ú!!È!!È!Ú!¾¡¢âÚ!Úá b¾!ÚÁ ¾á#¾¡âÚ$¾Á È!È!¾!¾á#háæ!9¾!¾¡ ‚¾A~¾!¾Á Úá‚⡢⡠ââá âÚAM¾¡â`bÈ!¾!Cæ¢â¡âáâHâH‚¾!!ÚÁ ¾¡âá ‚>âÚ!ÚÁ ÔÁ ¾¡¶A¢Á ‚ÚAÔ!¾á#ÔáøáÚáâáâ¡BÚæ&¾!ÚÁ `þ"Ú!¾¡â¡â¡¾æ!CÈ!$áÚáâá €tÚ!` ÚÁÛáÚáâ¡‚âA ‚ö#ä‡ ‚ ¢¢â¡Xäâáâæ¡¾!CÚá>¢¾ â ¢¾A~¾!ÈÁ ÚæÁ ¾¡Ô¡Èa¾a¾!¾A~¾Á ¾!¾¡ ‚¾Á ÈÁ ¾!!¾$¾Á Úá ¢¾!È!!Úáâáæ¡âáHâÚÁ ¾!ÚáâáÈ!¾!`BÈ!!Èá#` ä'!ÈÁ ä'!È!¾&âáâáþâá⡾!¾¡¾á#¾¡¾ âÚÁ Ú!ÈaÚáÚá‚æÁ ¾¡ÈÁ `âââáÚÁ ¾!!È!Úá#¾H¢â¡¾á#ÚÁ ÚáÚÁ Ú!!ÚÁ `â âæÁ ¾ ‚âáâ¡â¡âá ¢¾!Ú!Èaâa?¢âáâH‚âæÁ ¾H&â¡âáÈ!ÚáÚÁ ¾!¾á#¾!¾!CÚÁ ¾!¾âáâáâᢾ¡âáæ!Èa>‚ÚEÈ!ÚÁ Ú!¾!¾¡ââ`Bþ¾!!ÚÁ Úâ¡vŒæ!È!¾¡¾¡â¡¢âáâáâ¡âæÁ ÚÁ ` ¾!¾!¾!¾!¾Á Ú âæ!È!¾Á ¾!Ú!ÈÁ ÚáÚ!ÚAö£¾$¾!Ú$¾¡¾Á ¾Á Ú!ÚÁ Ú!Ú!¾Á Ú!Ú!ä!ÚÁ ÚáÈ!¾!!ä‡>ââáÈ!Úá âÚá "9 ââA~¾!!`"9v¬HâÚ!Ôá`ââá ‚¢ ââáâ¡È!¾&⡾!¾Á ¾!¾!!Èaþ&âæ!!¾a¾!¾âáâáâáâ&¾!!¾Á ¾¡¾!Úá¢Èa¾!Ú!¾!Ô¡â¡â¡¾Á ¾!¾!È!¾!ÈÁ Úáðìâ!þ!æa¢¾aââ¡âáâ`"È& B¾¡¾!¾HâââáâáÚáÚ!È!¾!!ÈÁ Ú!¾!¾Á ¾!!äâáâá>â⡾!¾!¾¡¾a &È!Úá#`"!¾¡ ââáÚ!¾¡ ¢œ!xÁ Úá ââP¼vñâ}‹þ÷­]»‚ÊkïÛ7†É$ï[»xßâ}+øME…ßâ}‹G.Þ·C Ûüï[¼o¿)l÷­]û†Ú©è›x¾‰ç›xÚ‰ç›xÈiê›vâi‡ZøÙè›xÚ¨râù¦ȉç›xÚ!'žoú¦"râù†œxȉç³v¾‰§¦Ú‰§ošúf£oâiG v¾è›v¾¨ŠÚ‰§ŠÚ‰§þŠÚ©¨Úè›yÚ L>û¦:PD<̈§ŠQ§ŠÚ‰‡œoâù&.?ûFx¾‰‡Ú‰ç›xȉ盦ډ‡œ¾‰§Š¾QçI*ú&žoÚ‰ç›vâùæ³x¾‰§¾©èyÚ‰ç›xÈÙˆ¾‰ç3Úù¦©oâù&žÏâiG oú&žojç›xÚiŠœ¾¨ŠÈ¨¾iç›x¾™ç›Ú‰ç›x¾‰ç›ŠÈiG vú,žvâùLžvú¬¢oú&rj§"rš"'žoú&r*ú&žyÈù,žoäÙ¨oÚ‰ç³oÚù&žoBm§¢vâ™þ‡Ú‰ç›x¾i'žoÚ™ç›x¾Ù蛊Úù¦x¾¨x>èÚÙè›Ïâ!§¢oâ™çæù&žÏj'žv*ú&žoâù¦xÈi'žyÈiç›x¾Ùè›xÈÙè>‹ç›x¾‰§xÚè›x¾‰GyÚ‰çÚ‰ç›v¾iG Ïâùfrj'žo6"‡œxȉ‡œxÈù&žo♇¾‰‡œoÔ‰§Èù&°o*ú¦©o>ûFx¾ù,žoâ!gr¾‰ç›xȉçÚˆœxÈù&žoj‡¾Žœoâigžo û&žoÄãùF<¾vÄ£™Ç7òþx|#íÈ<¾oäiG<¾!oÄãñ G<ÚoTä3ñ ‡@¸ôx£߈Ç7âñvÄãíˆÇ7ÚvÄãíøFEÈQ‘Ïl¤߈9šò¦´#߈G;âÑŽyÜNñhÇF¾ªx|C ähÊgâAŽoTäñ G<Ú!vÄãñ G;â1o¤߈Çg*òx|#߈Ç7 rÄ£ñ Ç7>³‘oÄãó ‡@¾ñ™o¨C ßL;âÑŽoăù†:òvăßÌ7âñ |#äH;âÑ|£ñøF<¾ªx|£ßhÇ7âñxþ|iGE¾r|ã3iG<¾Ñ”v|£ñøF;âÑè´C ßhG<¾!o„ühÇ7âñx¨Cíˆ9âÑ|£)äˆG;òxp)0ßøLEÈoÄãñ ÇF¾r´C ߈Ç7BŽx|£"ߨH;¾ÑŽx|#äàÒ7BÕŽo„êíˆÇ7âñv„ßhÇ7âñŠ|#äˆG;âñ Bx0C;¾ÑŽo´CäˆÇ7âAަ´#Ÿ!GE¾rÌ#í ‡@ÚQ‘oÄãñøF<¾!v|c#íøÆFÔˆo4åñ ‡@ÈoÄ£äˆÇ7š¢ŽoþäiÇ7šÒrÄãñhG<¾v|c#íˆG;¾AŽx´#íH;âÑŽocí ‡@¾ñÈãùF<Èv|£"íø†@È1vl¤òø9ÒŽŠ|#íˆ9âñxœ”ñ G<Ôñv|#í GEÚñx´#Ÿ!G<¾Q‘Ï|C íˆÇgâÑ|£ùFE¾u,%ߨÈgÈ1´C í9âñv|ƒñh‡@¾A|cä96òx´ãñøF<¾AŽyTäñh‡<¾oäñh‡<¾ñC äˆÇ7ò |&í G<¾v|#þä¨H;âñ C ߨH;âñx|£)íÇ7âñx|FíØÈ7âñ ´#ßÈRâAŽÏ|c#߈—šò™x|#ߨH;ÙŽŠ|#íØ9âñyÄã3߈‡:ÒŽo´#íøÆg¾±r„ñøF<Ú±‘v4åñhÇ7Șv|£"߈Ç7âñx|ã3iG<ÚQ‘o´ƒùF<Úo¤ñøF<¾o´ãŸ‰ÇgâÑŽŠ´ãù†@¾v|#ßÈ7æAŽyăùF<¾AŽx´£"í G`ÚoÌ#íhÊ7ȱ‘oÄ£iÇ7âÑy|£þß Ç<Ú!v|£ßˆ:¾Á%|ƒñøLE¾AŽx|#ß9âA|F íøF;¾rläíhÊ7âA´#äˆG;âÑŽo¤äˆÇ7Úñx|cíˆG;âñx|C ßhÇ7BŽŠ#ßhÇ7òyä3ò GE¾Q‘v|£߈G;¾!väùÆ<âñ™oÄãùÆ<¾Ñ”Ï|#ß9òyÄ£ò G`¾Q‘v|£߈Ç7âñx|cùF;¾Q‘v|C Ÿˆ<ÚAŽx|æñøF;¾v|£"íˆÇgâñrЂi‡@¾ÑŽŠ|C ßþˆÇ7âñyäiG<äñx|C ß9âñx|#íˆÇ7*ÒŽoÄãiÇ7âÑŽx|&íˆÇ7âÑ|#íÈ76BŽŠ#íG;âAŽx´#äH;òcíˆ9Úñ£"ÀCÿõ(GxGGIPIxIPIx4ÀGq„4ÀG1Àÿs ”G„GqE„G‘G0Àÿ3@ExÀG™@GE˜@ ||IxTIPIPTtIP |@E˜@IP"œÀGqIp„ TIPT„#4@ ”„G‘„GqIPþIP„TG0@E˜@E BG0@E„G™@EpIpIPGP|GPIx”T|G0@E„G‘Ex@E„G‘EEpEpE0@EEEEExÀGy@EÀÀ tIPGx” |”#|IÀÀ|Iø?IPTIxG„ÿ{@GGx |@E0@EpIø?GPTIpIP„tTIPIpIP"ü?EpIÐFIÐFEmtptIPIp||IP„TTIP„T"|Ixt„ TTG„ÿ“þE BE„ÿ“ ”„Gq„|IPIPTIPIø?IPIpIPIxIPGPIP TTTIPIxTGPGx@GPIÀ@|GPGGxIÐFIP„ tIpIPGEpIxIpIPGPG˜@ ”G„Gy@E˜ÂG‘„ÿ;BG„GÁ@E„Cp”„GqIPTG |G„ÿ“E„ÿ3@EptT„#T|G0@EEGG|”T„|IPGP„TGEG0ÀG‘EEþ0@E˜@G˜BG0@ |ÀGy@EpIPt„G‘„G1@E0@GxIPIP„T„t„GqIpT„TIPG˜@ExÀGq„ü?G„GÁ@EE0ÀMx”#tEE„ÿ“E„ÿ3ÀGqTTIP„ü?IPTG„ÿ“„ÿ3@EptIpIp„TTIxIpT„TT„||IPG˜@GE0@EEGE˜@E„ÿ;BEm|ÀGy@Ex@EEE0@GxIPIPG„C„Àƒ0Àƒ;0ƒþþ3<¸3¸ƒ00<ƒørørXŠÛ¹¥HÓ4]ŠÛYŠo`ÓÛY rørX 6…ÓÛù†Ûñ†¥Srø6ýrXŠÛY rXŠÛùrørø†Ûù6ý9ý†ÛÙ†Ûù@MÓ¥ØÔo ‡o¸oØT6] rXŠÛùrø†4õ†4ý6ýRýrX 6ý6ýrø†ÛY rørXŠ4ý†ÛYŠ4ýrX rø†4ýrX rørørørø†Ûùrørørørø†4ý†rHÓo Õo ‡¥`Ó¥Ôo(@] rø†rørø†Ûùrø†r¸8Ô¥þÓo¸o¸8%‡o¸oHÓoÔo ‡oHÓoÓo(‡¥¸8ýrÈØo ‡Œ%޽o`Ó¥¸¥ ‡oHÓo¸o ‡oHÓo¸m¸¥ ‡¥ØÔo¸o¸8%‡oÓo 8eÓ¥`Ó¥ ‡o ‡o¸o ‡o 8%‡oHÓo ‡¥ ‡o ‡o ‡o¸o¸o¸o ‡o ‡¥¸o ‡oÓoÓ¥ ‡oHÓ¥ ‡Œ%‡o Õo¸o¸¥HÓo ‡o ÕÛYŠ4ý†M] r€SR]ŠÛù†4ÍØr ‡o(‡Ûù†Ûù6]ŠÛSrør€ÓÛù@ý@ý†ÛYŠ4ýrþø†ÛáØÛYŠ4ý†4] rørø†4ý†Ûù6] rørø†ÛùÁ-^rø†rHÓo¸oHÓ¥ ‡¥¸oHÓ¥ ‡o ‡oHÓo`Ó¥ÓlHÓo ‡oÓoHÓo(6…ÓÛYŠÛùrø†4]ŠMýrør€Srør€ÓÛYŠ4ý†Ûùrø†4…Srø†Ûù†ÛSr€ÓÛùãý†Ûùr(‡o`ÓoHÓo¸rHÓ¥¸¥ ‡oØÔo¸o ‡oHÓo`Óo 8Ôo ‡ŒMÓ¥HÓoHÓo ‡o ‡oHÓo(rørø6ý† 0$Fâ0Àƒ$ƒ$FâȆiÈþ*¦âi¸âm¨âl˜-îâmȆm˜†l˜†.¦âiȆ+ΆmȆ+ΆiØeȆm؆+ž†l˜†m¨ãiÐâ+žc*Þ†i âiȆiȆ+Ά+ΆiÐâ+Άipr˜*Þ†iÈg â+ÖâmÈ=Þ†*Þe˜†lÐã+Þ->å*v†l˜*ž†*®c*ÖcT¦âiȆi؆l˜†S¾âl؆S®ãl˜†Y®âi â+Άi˜ãSÞ*¾âSž†Y&‡+Þ†*ÖãlØ*Þ†l؆:¦â:Άi˜ãl˜*žT&‡l˜†m¸âmæl¸âl˜*žãl åiæ+Άi؆iÈþ†:Άi âiȆiȆiØg8er؆Sž†YžTžã9®âiȆi˜åiȆ+®âi؆iØRÞe˜T¾âl˜†l¸âm¸bTž†l ål˜†9Άi@å+Þ*ž†l˜†l˜-ž*Þ*ÞTž†*ž†l؆l؆+Άi˜åi8å:Άm˜*¾âl؆*žwΆiȆ+ΆiÐâiÐâ9Fe=¦âiÐâiÐâipTž†Sv†l¸âYž†l˜-&‡m¨âiȆi¨âipçi˜ã*¾b*Þ†iȆ+Ά:Ά+Fåi؆*ž*Þ*¾â*®ãl¨c*ž†*¾â*ž†l˜†lþ˜†*ž†l˜†l¸âlÐãl°çiȆ+¦â+¦brÐc-ž*Þ†iȆm˜*¾b*¾â*¾â*¾âlØ*ž†l¸âl¸b*ž*®c*ž†*&‡l¨c-ž†l؆*ž†l¸âl˜ã+Ά:¦âiȆi˜åmȆiÐâ+ΆiÐâ+ÖâiȆ+FåiØ*ž†*¾âl˜†m˜†l˜†l¨ã*&‡l˜†l¸âm¨ãl¸âl¨ã9ž†*ž†mÈ=®b¯âiȆ:öðmÈ{öðiȆiðð+¦â+öðm âiøði âiȆ+Þ€033‚0$–3)‚0è^P&or'rþ(r)Ÿr*¯r+¿ò(ç,ßr.ïr/ÿr0s1s2/s)çeà3_s6os7s8÷r^ˆs:¯s;¿s8ç<ßs>ïó6ÿ‡‚(8rB/ôBïYàEçYàYXteE—YPtYXtE§tE—^PYÀtE—LWYàJW†E—E—EW^ tL§tP—E—^^E—E—…E—^^ tYàYPtJ_tJ_teE—^…E've t^ ôE§tE—^PJçYPtYPte…E—^^^e tPçe ôxWYˆw^þ^PYàYàJWtbwbÇtYPteEWJçYPteL—E§t^^PYPtb—L—E—EïøEWYPYÀwYÀtYàYÀwYàJÇtYˆwYPtYPteE—E§te tE§t^^e^ t^ ^PYXtYÀw|WYuYuYˆwYàYàYPtYàYàbçJW^P§t^^…E—E—EWYuYˆwJWteE—^PYàYàJ_tYXtYPtJçYˆwYàJWtYàYPtYÀweàYàYÀtJþçYXteªçYPtYPtb_tYˆwJ_te^^e^E'v^^ öa^PYXtYPtYàJÇwYuJçeE§teE—E—L—^…E—ePtJWJWtYàYàYPtYˆwYàJuYXte tE§ôEWYXt€¥L/^Êd,(K™,e²d|Èë¡,e²”Å‹bAYeñ’…1¡¬„²x=™PFY •=ä%KÙ² Êâõײ†ÉR‰Q–2Ye%|XPVBYBe%T&‹—2Y¼da”ÅKÖHYe Mø0!Åþ‚ ÊJ(‹—,^yQ,(‹—,^² >ÄH±àCŒ²TÊJ( £,^²xÉâ%k¤¬‚Ê”•P/Y ea”ÅKFY!Zt"z4éÑQz8r´i“"I¢$Ir$I‘#IŠD¥Vähõ&I¢IÚ$*µ(G’RKr$JRjG’D9¥H’#I›DIÚ$ 6lQŠ65¥¶£M’D9Ú$Ê‘(G¢$måh“¨æŠ$‰r$J‘(IŠ69"Š"’¤&Š"Žlâˆ$Šl"‰(’ˆ"Ij¢("Š$Šˆ²‰(Šl›(Ь¦È&’ˆ¢È&¢8"‰"’lâˆ"͉"‰(Ž("‰(’("Js’l’š"¢þÀ¶‰$͉âlŽH²‰#¢8"‰(’ˆâˆ(Ь&Š"¢8"É&©m¢ˆ(¢8›#¢4'Š#›8"Š"›ˆÒœ(Í9¢Hj¢("‰(ŽH" l¢(òåj’l" l¢8²‰(Šˆ¢w’ˆâˆ"›À™š(Žp'Š$¢À¹š#ŠH"Š"’8²‰$¢8²è&¢8²‰"›¤&Š#’ˆ’š(ŠH"Š"’8"Š"Žˆâˆ(’("É—Žˆ"‰#ŠHâÈ&¢¤¶Is¼­æÈ&©)²‰#›À¦Èj©I¢ÈjpŠâˆ(’(’š(ŽˆâÈ—¢H"Š"°)²Ij›8"Š"’ˆâˆ(ŽH²‰(Žl"Jj’ˆ’š$ŽH"Š#þ›À¶‰$¢(Òœ"°‰’š(Žˆâˆ(ŠlâÈ&¢8²‰$¢8²‰(Šl¢È&ŽH²‰#›ˆâˆ(Šl"‰(Žˆ’š(ŽH©$Ž(²‰(’8›(ŠH"Š#’¤&Š$¼9²‰#›8"JjŠÀ¦È—ެ&Š#›8²‰$Ž("ÊjŽH"Š$¢H"Š#ŠH"Êj¢("Š#ŠH"Š"{‹âˆ$¢4'Š#’("É—‘:"‰(’ðæˆ(Šl"‰(Žl"Š"Ž("É&Ь¦´¢8"Š#«‰"‰#›ˆ¢ˆ$Šˆ²‰$¢H¢ˆ$¢¤&Š#›8Û&Šl"Š"›H²š$¢4'‰"¢8"‰(Ь&‰#¢¤&‰"›ˆ"Éþ&’("‰#«‰âˆ(Žˆ¢È&’ˆ¢È—Šˆ"‰"Ü9"‰(Žˆ¢ˆ(’8"Š#’ˆ"‰"›¤&Éj’ˆÂ°…#D¡Il6Ž„#6! GlÂ’…#$‘Q(B¢„"DáˆMˆÂ›…#D¡ˆMˆB©…"DáI8b5Ž„#$± Q8BŽØ„(R³ Q(Â’…$R# GHbpEs$¡ˆMHB’Es6¡ˆMˆB©Y(! QÀiŽ„#V# E¤F¢P„(`£Q(B›EsDáQ8BŠØ„(!ŠÕˆÂ¢„(! Q(b5°…"DQ(bÍþEs$áIˆ¢9ŠØ„$6! QHB’…#D‘šÕHB©‘„(‘QH"5ŠØ„(R³ Q8b©…#DÑœMˆB!fŠI‚`$è :@‚bn ˜(f6@Íkv`ØÜ@17PÌ l ˜Àf17pÍ t`ØÜ@ÀyÍ `s×Ü@6Ðpv`Ø@ÀÙpbsÔÜÀ57pÍ sØÜ@6Ð PsÅÜ@6@Î sØ@17pÍ `sØ57PÌ \sÔÜ@17PÌ t`ØÜ@17Ð t`Ø@1ÁYÌ t`×ç57Ð t`Øþ@6PÌ t`Ø@6€Í sÅÜÀ5ÁÙ sÅÜ@6PÌ `sÅÜ67Ð PsÅÜ57pÍ PsÅÜÀ5Á‰Í t`Ø@17PÌ PsÅÜ@6@Mpv`ØÀ57PÌ \sØ@17@Îkn›¸&8;°jn è87Ð |vØ@17Ð Psç57pÍ t`ÅÜ@6ðÙ sØ@6pÍ t`Ø@17@Î sØ57Ð sØ57€Í \sÅÜ@6PÌ sÅÜ@6Ð œØ@6@Í PsØ@þ17Ð t`ÔÜ@6PÌ |¶èÀйl€šàüìйl ˜èÀ:°sØ@6Ð t`g17pÍ t`×Ü@6Ð \sÔÜ@17Ð `sÅÜ@17PÌ \œŸg6Ð PsÅÜ@17@Î PsØ@6Ð s×Ü@6@Í t`ÅÜ97PÌ t`×Ü@17PÌ tœÅÜ@6PÌ PsØÀ57pMpv`ÅÜ57@Í PsØÜ@17pÍ t`Ø97@Í t`ÅÜÀ57@Í t`äÜ57@Í t`Ø@T6Ð \sg6Ð sÅÜÀ57pÍ t`ØÀ57PÌ `sØ@6Ð t`ÔÜ@17PÌ \s×Ü@6Ð t`ÅÜ@6@Mpv ;libjibx-java-1.1.6a/docs/images/eclipse-run1-small.gif0000644000175000017500000056624710350117116022422 0ustar moellermoellerGIF89aêçÿ  "PC'C;!')w0l&4_?5!97.89669?59HB@5=BD\< CžG¯NB.5Fo*J $N±0K°`K.AUc^P<.U±^OUPV[GUy\SLRUfYUS9V§4_š-mq<[³IZ¡d^]\agRfiacW4€@jaZ[dt²E/?k¡Ag²meMnh?Jd·Ö4BoiF6…RomSQj¶slUayCZswAƒhwkXgorSmºYoŸnpmyrIXp±upf|mdgq‡k[šg=^r­jt†stq…ngquy`r»{w]ëCP[zºH˜OJ–[\†v|}{hey¼\{Ë~z{M‡»x€|~{x}p€™‡€g„€wz‚‰{€œq½~oSœx‚ƒ†……ƒÄt6•…hª‚PÕleâeh`•Ë „yp‘¹}Œ¸uŸ…H¬†if¨r‹‘­…žWŒŽ‡’›šŽ}—އœx’‰¼”’u¬bÖw„n¡ÕØ‘€¨¦š‚ÒŒV€¯~ºY¥“ž¡ ™¢±®“‰§Ä›ŸÃ’¢Î•£ÂΟ@’©°¢ÛÌ–~©¥‘„­Ö¶¤‚ˆ¹šâ¦­©›Æ¦‡¬®«Í«b«¯²”µÕµíßœœ²­Á ´ÍŸ±à¨²Ã½°˜¥¶¼¼¯£Ë©›Ë°y¹Ç¯²¼¶³¥ª±Õòµ·´§È‹©¹Ù¡×c¤Õw»½º¦É·¬Êª½¾Â±¾ä¿¶Ä¿±Ð»ªŸÇò®ÆÕÌÁ¡à¿wÓ»²»ÄÌµÅØÔÁ™ÁÀÛÍ¿ÀÍì賹ÃŽÅÛÅÇÄÊÇ¿ÆÈÅîÅnÉÇËâÉŽÉËÈÄÕº¬×ûÁØÃ¼ÕäÃ×ÌØÑµÖÏÈáШÑÓÏæÊËÍÕÞË×êäÓ¼ÅÜáßÔÇÝÒáàÚ°ÚØÏØÚ×ÖÛÝßÝÀßáËâáÄÓáïÞàÝØâãùâàá×çâÑåäÛßåèíåÄúå£åçäôè¼èêæáìôëíê÷ô×úôÐñóðçöýûöàûùìôüþùûøýÿü!þCreated with The GIMP,êþ%xC° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç 3zˆE²¤É“(Sª\ɲ¥Ë—0cÊœI³¦Í›8sêÜɳ§ÏŸ@u¶ä¨¨£Vúô1Ê´©Ó§P£JJµªÕ«X³jÝʵ«×¯`ÊK¶¬Y­FâÀ‰§¸VNœ˜önÝVvóêµ›¬o^E¢€ìÝ+™£Q}ÅŶÕàÇ#KžL¹²å˘3kÞ̹³çÏ C‹­×Õ+cÆ#Ö¨Ï&’Œrú4–,WZµãè´£+ºÇÔ®å &âècÆQ’G­à\q ÎÝI®DÁÅ‚\(þ¨ƒ „³C†«_Ͼ½û÷ðãËŸO¿¾ýûøóëßÏ¿¿ÿÿø^Qx 38ÑGcôa&àÃøÃCPð•€P CPð–XL+ÀP ˆE+ ‚)"œ‚•p00àÇ*±à€ 8ü€Ç(΃ %6éä“PF)å”TViå•Xf©å–\véå—`†)æ˜dN‰°‰ ‚c jš ‚ j–pFxˆ‘Å x¬"@xˆÁlI€A%Ô"øa‚%˜1ÊgˆË@ØÇ(Utñ€š" 0£ VŒbD("˜ lþ°Æ*무Öjë­¸æªë®¼öêë¯À+ì°Äkì±È& «&ˆ@AÐ^°  T´ØB»Aqt!‰ˆâFqtáHØníÅ4òHv8òH[Œr2• bÀ#£pƒ"’QÁc8‚ £àáH'H"@Šd+ñÄWlñÅg¬ñÆwìñÇ ‡,òÈ$—lòÉ(§¬1ÐFಠ}Tk@.WA.cADp@àòDGPË.Wp€¸,À]APÁPÁàrLPÓD@tPÒl·íöÛpÇ-÷Üt×m÷Ýxç­÷þÞ|÷í÷߀.øà„³]ÒDPAÛ¸]AX†Ðº\˘GPAD­ËÙF­¸œæØfmÙF€mDmæ´×nûí¸ç®ûî¼÷îûïÀ/üðÄoüñÈ'¯üò·W´¸\Tà2¶TA.WA`k@¶.WàrTAµWàr¶WA˜W€9´µW€¹Êü÷ïÿÿ  HÀú/À"P—U È\  ¸¬¨æ*9h ¨] -—U ˆ@¶\VT ÐrYj‡-—Aˈ€0gÌsþÀœ0gÌsÀœ0gÌsÀœ0gÌsÀœ0gÌsÀœ0gÌsÀœ0gÌsÀœ0gÌsÀœ0gÌsÀœ0gÌsÀœ0gÌsÀœ0gÌsÀœ0gÌsÀœ0gÌsÀœ0gÌsÀœ0gÌsÀœ0gÌsÀœ0gÌsÀœ0gÌsÀœ0gÌsÀœ0gÌsÀœ0gÌsÀœ0gÌsÀœ0gÌsþÀœ0gÌsÀœ2W@‹`šBÊP,” ¨ ÑŠZÔ¢¸¨F7ÊÑŽzô£ ©HGJÒ’šô¤(M©JWÊÒ– ƒ=øá~¸ƒôÈi>rú{ä”ï°‡=~JÔ|äôö *=ò¡Tz؃BªT›JwÐCªJÕ=ô‘ªzõ«` «XÇJÖ²šõ¬hM«Z×ÊÖ¶ºõ­p«\Ûj|P gx‡=ÞawÐãôÇOßñyȃ„}GN KÂþôò ª<ÞAyÐCô= kX¥Êƒ†¥Ç;èñz¼Ã†¥Ç;èñzȃ†}þ‡>ä¡}äTúÈ©:ô‘Suè#§êÐGNÕ¡œªC9U‡>rª}äTúÈ©:ô‘Suè#§êÐGNÕ¡œªC9U‡>rª}äTúÈ©:ô‘Suè#§êÐGNÕ¡œªC9U‡>rª}äTúÈ©:ô‘Suè#§êÐGNÕ¡œªC9U‡>rª}äTúÈ©:ô‘Suè#§êÐGNÕ¡œªC9U‡>rª}äTúÈ©:ô‘Suè#§êÐGNÕ¡œªC9U‡>rª}äTúÈ©:ô‘Suè#§êÐGNÕ¡œªC9U‡>rª}äTúÈ©:ô‘Suè#§êÐGþNÕ¡œªC9U‡>rª}äTúÈ©:ô‘Suè#§êÐGNÕ¡œªC9U‡>rª}äTúÈ©:ô‘Suè#§êÐGNÕ¡œªC9U‡>rª}äTúÈ©:ô‘Suè#§êÐGNÕ¡œªC9U‡>rª}äTúÈ©:ô‘Suè#§êÐGNÕ¡œªC9U‡>rª}äTúÈ©:ô‘SuØãôà¬aéaX ˆ î‡=ÞaXz$öéª<Þ!¡Òƒ°ò lN +{¼›°ôx‡<Þ!wÈãâN8a ûŽŸ¾ƒ„•Ç;èñz¼Cï‡: ›Sy–ò ,=þäAXzȃ°ôaé!ÂÒC„¥‡<Ky–ò ,=äAXzȃ°ôaé!ÂÒC„¥‡<Ky–ò ,=äAXzȃ°ôaé!ÂÒC„¥‡<Ky–ò ,=äAXzȃ°ôaé!ÂÒC„¥‡<Ky–ò ,=äAXzȃ°ôaé!ÂÒC„¥‡<Ky–ò ,=äAXzȃ°ôaé!ÂÒC„¥‡<Ky–ò ,=äAXzȃ°ôaé!ÂÒC„¥‡<Ky–ò ,=äAXzȃ°ôaé!ÂÒC„¥‡<þKy–ò ,=äAXzȃ°ôaé!ÂÒC„¥‡<Ky–ò ,=äAXzȃ°ô „Eò@Xô „Eò@Xô „Eò@Xô „Eò@Xô „Eò@Xô „Eò@Xô „Eò@Xô „Eò@Xô „Eò@Xô „Eò@Xô „Eò@Xô „Eï@ê ï`X„%ï@"`9e„%ôÐ ï`éðöð†õô ïS†EíÐ ™`ò@Tò@ï ï@†•Xòðoô „Eò@Xôðö ï@ò@ò@þò@òSò° M 9õòSï 9õòSï 9õòSï 9õòSï 9eSï 9õòSï 9õòSï 9õòSï 9õòSï 9õæÐ ôðòSï 9õòSï 9õò`ðòSï 9õòSï 9õòSï 9õòSï 9õòSï 9õò ôðòSï ™@ï 9õòSï 9õòSï 9õòS™ 9õòSï 9õòSï 9õòSï 9õòSï 9õþòSï 9õòSï 9õòSï 9õòSï 9õòSï 9õòSï 9õòSï 9õòSï 9õòSï 9õòSï 9õòSï 9õòSï 9õòSï 9õòSï 9õòSï 9õòSï 9õòSï 9õòSï 9õòSï 9õòSï 9õòSï 9õòSï 9õòSï 9õ?õò@Xô ï`òà&òðò`ØÀM Ðö@Xö`Xïöðòþ Ð^ðòPM Ý`ò@Xòð†e™€KÐ ?õ?%ö`X9EXò`ï`†e‰%MðŠ@Xòð9 †õœõç`òðœõœõœõáÞPK`XïÀYï Ð ïÀYï`XVðœõœõœ•,°FðœõœõœõòPMðœõœõá°Aœõœ• œõœUf`XïÀYï 2, †õœõœõœõ1ðnàòÀÙðœõ†uïÀYïÀYïÀYïÀYå°ï>ÀYïï ïÀYïÀYïÀYïÀYþïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYïÀYï@‰E†e†eòð€Y`é ïKððÐ9 L°J B•ö ïPK ö° (PMp¬ð ï`ï`é =@ é ¨€, 9åP9«ÀKþ »€, ï`XB%ï ï0 U° (ÀÂàf`\ð¢ (Й𑰠(pÁp[° ô „EïP1å°íÀ , šM° (@MÐ\ð¤àgà E°J@Xô „EæÐÎ@òPM ô KÐðÀa° (ÐððYÐï@ò@Xôðåî€7ЫPK åÐÀ€, À€]@  ô „Eòð5ð®Ð9@åÐ7`= ï@ò@Xòðnà K°í7P p>ðEÐ EàJPJþàM0 žðô ï`Xá°ïK (ÀÂpåÀ`Ðï@ò@Xô „Eò@Xô „Eò@Xô „Eò@Xô „Eò@Xô „Eò@Xô „Eò@Xô „Eò@Xô „Eò@Xô „Eò@Xô „Eò@Xô „Eò@Xô „Eò@Xô „Eò@Xô „Eò@Xô „Eò@Xô „Eò@Xô „Eò@Xô „Eò@Xô „Eò@Xô „Eò@Xô „Eò@Xô „Eò@Xô „Eò@Xô „Eþò@Xô „Eò@Xô „Eò@Xôð9e†eéð†•ö `fö ô Ð9P``éðö ï`á°A9à á9PM é`œõözð¤ê€ MöPMpïÐ>ðô[`U`ï é é`2° Ð 9VÐ7 ×p_Ð7 òpY@7à Ø 9ðö`X9õôM@¬ÐâàVPš`, MpêYð g`]pò`pS†•S„¥ Dæðgàòp Yàþåàïpê`åàépœ•Sò@áÀM 7ððàïPðÐ7VÐ7 ïpY@†•Sœ%K ½pïMòPM@†eò`é€ ]àn@pðÐïðàòPíàöPòÐMàD œE†U °Dà7VÐ9PMð7ÀY9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9þeX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9eX9•ö ï „•Bõé`òð`fðnØÐòpMîpïà BB•ï` M ï@½à Míàö†õöö€ äà Jª  vPÛà Jpé ä@½Î`ï T†õ2ßÐd  îà 9@Dà ®Ðd  ã`> d  –`9X†eéðáæ0KÞà M@'àåÐd  –ÐV° ®Ð9 ò€þïp ‰eXö î î0ò€éà æò ðï@ªp ðÐò„eXï`Xá°öð7ðìÐãåÐi  ò@`` ä`>@X†EXöð5ðßD° ®Ð7`åЄÅYöï0p0 à 7PYð9(00`E°`Ðé@Xòð†> áài  éà 90!@X†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EþX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†EX†eéðòðBEXé Tï`ò`Y Beæ° ïЛ° ï Y€éSé öàí°M€îP‰Ð ™ { öðé`òðò  \`êà`ïð u ô ºÀÉ z°à î‰%™@ï€ò aà ›ðß`‰Ð é°xð{ î°y™`ò`„•ö íÐ ïþÀ p gð” íÐ îp”ÐËP‰Ð ËÞ  \€ö ö@X†åu°« ºpx`‹puÐ épxÀÑé]&yöÞ½³'ï]»Nïèe²gïT–`ðšÈÛSÅ™;?xÞíIdï <{ïäQ’G/Ó73‰:ez×®“<{òä¤'7v]Þej×é]¦w§üÔ‘§+Ë­w§HëÑÞ;{6Ûm’×®“¼=g‚e*Ç"Ë-yöʳwPž½ƒòì”gï <{åÙ;(ÏÞAyöʳwPž½ƒòì”gï <{åÙ;(ÏÞAyöʳwPž½ƒòìþ”gï <{åÙ;(ÏÞAyöʳwPž½ƒòì”gï <{åÙ;(ÏÞAyöʳwPž½ƒòì”gï <{åÙ;(ÏÞAyöʳwPž½ƒòì”gï <{åÙ;(ÏÞAyöʳwPž½ƒòì”ÇžƒÞ‰HžtìIG*{ÞIçtÞib“,ìIç{:Y¢‰&䱇z¤zÇžtìyGžM–hb yÞ±I{ÒyGªt"zg‰&–Xâ z´ç yìIǦƒäIçzÜ‘*w<”g@yì9ˆ›’g“%š°‰žwZ´G{Þ±çM–h"ˆMÞ±‰yì‘ÇžwÚiâaÒ‘þ'{lzG{ޱɞ[¤Gz²§“,–hây"zÇyìyÇ&{Ò±ç{äÙd ;žw±ƒžåyÇžƒì‘ÇžtìIÇy4\¢‰MÞ‘ç{Þ±Épì‘Çžwäi‡&‚X¢‰ƒìyÇžwäy'wäyGªwäy'tì±Ö¦M–hGz”§œ&Þ±'{ä±'ˆÒ‘*©Ò‘*©Ò‘*©Ò‘*©Ò‘*©Ò‘*©Ò‘*©Ò‘*©Ò‘*©Ò‘*©Ò‘*©Ò‘*©Ò‘*©Ò‘*©Ò‘*©Ò‘*©Ò‘*©Ò‘*©Ò‘*©Ò‘*©Ò‘*©Òþ‘*©Ò‘*©Ò‘*©Ò‘*©Ò‘*wìI'¢tìIy´'*69#ˆÞù3y’ç yì9ÈyÞ±é›ìy'yìIÇpÒ±'wäy‡žwìñðy"²É›Þ±'ˆÒ‰è {Òy'"yÞ‘‡žˆlJÇžwl²Ç¦ƒZ|ÇžwұǦwäyGžƒä9ÈyÞù³Ez¢'{ޱɞƒìIÇžtì9¨ÅwäyÇÃß‘'{Òù3ˆÒ±G{Ò‘gÀ?é±çyè±çzä±§E{ÜÇžtìIÇžƒlz‡žwì±){Ò‘ÇCyÒ±É&zä¡Ç;ú×?z¼Cy‡=þäqzØ#IGDÞ!ƒØä ô°=B{¼Ãé°G:ìa-{X+ö0¡=LhÚÄö0¡=LhÚÄö0¡=LhÚÄö0¡=LhÚÄö0¡=LhÚÄö0¡=LhÚÄö0¡=LhÚÄö0¡=LhÚÄö0¡=LhÚÄö0¡=LhÚÄö0¡=LhÚÄö0¡=LhÚÄö0¡=L‘tØ#‘ŠµÞ‘ŽwÈÃ>è„Þ‘›¼Ã&öx‡=äñ{ØäI‡=äñyØ#6±Ç€ì‘zØãI‡=ÒAƒÈÃ6IGÿþbtØ#ò8ˆ<"’Žˆ€ƒï ÇAlòyØ#öx‡MÒ!{ °IGDÒatDDö°É;ìqyd€öx‡=ÒawØÄé‡=ÞatØ#ï°8ÜñzÈã6¡‡Mìq›¼CöÇA쑎wDDöð¦Mì‘zȃï°É;lbwxÈà°‡<ìa{Ø„òx‡<쑎ˆ¤ãòˆH:ÞÑ¿wÐCï°‰=Þ!zÈãé°G:ÞaþÙã ö8ˆ=ÞayØãI‡Mì1ÀwØ#öGDÞ!pHR‡TÀ!pHR‡TÀ!pHR‡TÀ!þpHR‡TÀ!pHR‡TÀ!pHR‡TÀ!pHR‡TÀ!pHR‡TÀ!pHR‡TÀ!pHR‡TÀ!pHR‡TÀ!pHR‡TÀ!pHRy‡=À¡ tØ# J‡=Þ!"l" ÅXF1б ehÅP†v‹ ñ.ÅX2Šb £Ë€o1–á ø"£Ì(3œ_dÅ`F1QŒe(£ËpÆ2œ_dhwÅX3б d0cÈ(Æ2Q fcÈ(4ŠŒb £ÎX†vá+ÞeƒÚEF1Q þf¾Å€/2ŠŒb £ÎX2б dcÅpF1œQŒecÌ€†3–¡Œb,Å@†2¡]øCâs1Q dÅ@F1Q dcÎ@F1–Œb £È(Æ2˜¡ f0câEF1Q dcÅpÆ2ŠáŒe0C»ÎX†2ŠŒb(£ÈX2ŠŒb £ðeF1 ¡]dÚU†x‘Q dÅ@F1 Q dÅ@†v_f,C»Î(Æ2˜±Œb,ƒË(Æ2˜±Œb,ƒË(Æ2˜±Œb,ƒË(Æ2˜±Œb,ƒË(Æ2˜±Œb,ƒË(Æ2˜±Œbþ,ƒË(Æ2˜±Œb,ƒË(Æ2˜±Œb,ƒË(Æ2˜±Œb,ƒË(Æ2˜±Œb,ƒË(Æ2˜±Œb,ƒË(Æ2˜±Œb,ƒË(Æ2˜±Œb,ƒË(Æ2˜±Œb,ƒË(Æ2˜±Œb,ƒË(Æ2˜±Œb,ƒË(Æ2˜±Œb,ƒË(Æ2˜±Œb,ƒË(Æ2Æq g\c×pÆ5Æq g\c×pÆ5Æq g\c×pÆ5Æq g\c×pÆ5Æq g\c×pÆ5Æq g\c×pÆ5Æq g\c×p†3®‘ r\Ã׸†3®áŒk8ãθ†3®á lb ²Ç€èñ½þƒï ‡<–·úwÐcõò=ÞAwÈc@ôX½=ÞaåÉc@ôXž‡Bֿë÷ÐAäqzÿZž‡œÿÉÃùý{‡=Þ‘tÐcõôX=Dyè ô8ˆ<<´<{ H«§Çêí!yhú‘Ç;ìñuÈãöz{8zX=zxzX=z°‡wðzxzz‡ƒðyX=z‡ûóÀÁÁ$Á,Á|臈x{8z°‡ƒ {8z°‡ƒ {8z°‡ƒ {8z°‡ƒ {8z°‡ƒ {8z°‡ƒ {8{ {xyþ{x‡ˆx®‰z‚Nh‚|{ðw ‡ƒ ‡w ‡ƒð{xÀ´‡w z°›ˆˆw°‡w°‡tŠw°z°z°‡w°y ‡tˆˆwŠwxȈwˆzˆy‡ˆ { ‡ƒ°z{ ‡wˆˆ7¤{8±z8ˆ”Šz°‡7´zèzxzXžˆxÀw°z°zxz°zx‡<y{ ‡¡{ðwxÀw°±zxz°‡|y { ‡ƒÅ7´zx{xy{x‡|zˆˆw {x‡Œˆw°‡wx@{ ‡wzX{ðwþ ‡wxÀƒ {¡‡wz°z°‡´‡´‡´‡´‡´‡´‡´‡´‡´‡´‡´‡´‡´‡´‡´‡´‡´‡´‡´‡´‡´‡´‡´‡´‡´‡´‡´‡´‡´‡´‡´‡´‡´‡´zˆ°‡w°‡w°‡wˆˆƒˆˆƒˆˆƒˆˆƒˆˆƒˆˆƒˆˆƒˆˆƒˆˆƒˆˆƒˆˆƒˆˆƒˆˆ±‡tŠw°‡ƒ°ç ‚MÈ‚w°‡q{H{{° z{x{H‡w° z‡t‡w‡w‡wH{Hz‡w‡t{H‡þw‡w蟃‡kÈ›Hy°‡‘z°‰t°ky{{xoz{°‰ƒ° z°‰å±  {‡‘‡t°‰w{Hyx›8›X={H{{ ›8y ‡¢‡±‡ƒ9z‡wˆˆzz°‡qxz°‰w‡ˆxy{x›x± {X=›x›°rx{H{‡w{HyH{xy ‡åI{Hzx{x› ‡ƒð{ zzz°‡w±‰w°‰w ‡ƒèŸƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°þ‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰w{È{‡w°‡t ‡w{‡w{‡w{‡w{‡w{‡w{‡w{‡w{‡w{‡w{‡w{‡w{‡wH©H{H‡ƒ°‡wˆˆw°yˆyð{Ø„&‡|X†‘‡w°‰é{‡w‡ƒ°‡å±‡w°‡w°‡w{H{8{x{x‡tˆy°›xy°‡w ‡ˆx{蟈þ8{x{‡wˆˆ|(†wH{X{H{H‡ˆX={ y°Ö“‡w° {{x{8{x‡|@y°yx‡ˆ8yˆy°yx‡:ˆˆ8yxy8{{H{ ‡w° ‘‡t°‡t°‰w‡w°‡wȇb°›x{8›x‡ˆèŸƒ°‡Õ“9{‡wȇb°yxyx{xyx{x›x‡t°y°y°‡t°›x{8›°yx‡þ9y8{{x›8›x›x{° {ˆ8ˆˆ8ˆˆ8ˆˆ8ˆˆ8ˆˆ8ˆˆ8ˆˆ8ˆˆ8ˆˆ8ˆˆ8ˆˆ8ˆþˆ8ˆˆ8ˆˆ8ˆˆ8ˆˆ8ˆˆ8ˆˆ8ˆˆ8ˆˆ8ˆˆ8ˆˆ8ˆˆ8ˆˆ8ˆˆ8ˆˆ8ˆˆ8ˆˆ8ˆˆ8ˆˆ8ˆˆ8ˆˆ8ˆˆ8ˆˆÈ{8{x{x{x›°‡w° {x›°‡w° {x›°‡w° {x›°‡w° {x›°‡w° {x›°‡wH{{°‰t°‡ƒ°‡þy›xyxyyx‡&Ø„%x‡|(z°y°‡w°yˆˆƒ°‡t{H‡ˆH{{H‡w°‡t°‰ˆ{x{° {x{8ˆtxy8{H›xr°y{°{H‡w‡w{x‡txþ‡~@{xy°‡þyH{{ {H{{‡ˆx{H‡w w°›°‡wȇb‡w°‰tˆˆt‡t°‡tx{x{H‡w°‡t‡t°yx{x{ {Hy ‡ƒ°‰w°‡t°‡ƒ°‡w°‡t°‡wèZ8{H{H‡J‡þ‰ˆt°yˆˆþIyH{H{H{‡|@y°‡t°‡t°‡w°‡w°‡w{x‡z{8{H›°‡w°‰w‡w‡wˆˆw°‡tè{H{{xyˆpp{x‡þ‰ˆt°›°‡t°‡t°‡t°‡t°‡t°‡t°‡tþ°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°‡t°y°‡wȇˆH{H‡w°‡t‡ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ°‰ƒ° {xyx›°‡wˆˆt°pp{xy°‡w°‡þwˆˆtx{‡"Ø„&°‡|@›xyH‡w‡t°‰nH{‡t°yH{H{H‡ˆH‡w¸†qH‡q0!{H{H{H‡ˆH{°©‡t‡kȇt°›xl°l°†n°w{H‡ˆÈ‡b°‡t°‡t°›@{‡ˆH{H{°‰wH{ q°…K°y°‡t°‡t°‡t°›H{ÈdH{°yx{H{†mH‡n€pwO‡ðt°‡tè{H{‡ƒ°‡wHyè†w°‡wH{°‰t°‡t°‡|({HO‡P({°{þk±‡t°‡t°‡nØ…]°‡ƒ‡wè‡bx‡t°‡t°yH{H{H{HO{H{xy°‡t°›H{‡t°‡t°‡wH{è{H{Hyx{H{‡wHy{H{H{°{H{HO{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{þH{H{H{H{H{H{H{H{H{H{H{H{H{H{H{H{HO{È{x{HOOOO‡n€ðtñtñtñtñtñtñt€py°p°‡t°‡I{H{ {x{H{H{° kpyxØ„&x‡|p†t° Q…m°†gà„t°‡w°yxO¿{x·{H{H¿¿†t{x{xrÈ{Hkèð‡Tè{ {x‡tx‡|@{H{H{‡q8y¨ƒwþO{w°‡w°‡t°‡t‡)…C0„)‡ƒ€pky‡|pyHppw`„Xà„g°†w {{H‡w‡]@…9ÐNxkxpp{w°y¨: XxNHO{‡wèZ°‡tx{H{‡>èƒ1x…K`· {{‡nˆfÃ\¹³g/¼|Èì½³÷Îà5{×ä½³—î½wöÒÙKgï]ªTÓ½³g2I{é쥳÷î½kãÞÙK—ÎdºwöÞÙg/IpöÒÙ'Ï^:{ïL¾4ùÒäK“/M¾4ùÒäK“/M¾4þùÒäK“/M¾4ùÒäK“/M¾4ùÒäK“/M¾4ùÒäK“/M¾4ùÒäK“/M¾4ùÒäËtöÀÙË÷Τ<“éÀÙ“—œ½töÀÙ õè)cÏ8¥³—œ½töÀEѧͧ(öÞÙ³ Î^:{àL¦çŽ={éRÚg2<{éì³g3e:{éìÉ+Òi‰½|ÅL¾“'¯MFÒR=ûÕí;pöÜ{ùÒ8{×R’»–N^ÊwéL‚{wíw&½c3ù€cMöX“L2ÜÀ3Ì;ÞÉóŽIÎÈc8öÈ3ȃì@KïØŽ=ÀÙŽ=î½cÈæàsȆ¤cÏ;ïØóŽ=þ5Ê“-&Ñc<ö|Ó#¬üòL*òÐŽ=ïØã=š`36¿<ó‹;ôØC=ïØ3ˆ!æÐ“Ê3¿t“Ž=ïÈC<ö¼#O>Řä8öóŒ &äA,tÈC<öÔ(=ò؃M3ÖÄSˆ=é¼cÏ;ù,Ž=ï¤óŽ3ÎcÏ5î€cÒ;î€cO:ö¼ó ?„Ô;à¤óŽ=6Õ˜Ž=àØs 9×äsMö¤cÏ;ö¤c=ò˜”ŽIé˜D;àØóN:ö€cO:ö€cO:ö€cO:ö€cO:ö€cO:ö€cO:ö€cO:ö€cO:ö€cO:ö€cO:ö€cO:ö€cO:ö€cOþ:ö€cO:ö€cO:ö€cO:ö€cO:ö€cO:ö€cO:ö€cO:ö€cO:ö€cO:ö€cO:ö€cO:ö€cO:ö€cO:ö€cO:ö€cO:ö€cO:ö€cO:ö€c’<&åcR:ö¤óŽ=ôØ#OJéÈc=ö0¢E•¤ò 'ÝØC=éØCÏ;a0bG%•0Ž<‹œ@D+Ø#O Ö°M8MØ“N U|J:À¥Sã;òØ#=阔Ž=àØ#Ï;ò¼D'K¼“Ï-Þ½c<¾èsz?ëp"=K,‘Å&Î;ôó9é\c8ãØcÓ;öÔxÍ8é¼3N:דŽ=éØsþ?ô˜”Ž=Ý0˜ )ݼã=鼓O1òÐcO:òÔaÊ%ÑØ’G"òгDKlb<)¥cÃìøƒÏSØ“N–P…M¤Ãà°G>Š!ÆÙíðÆTN#À‘Ç;R2 lÌaÃà„:jä{¤ÃS0Ç4è` Nø"ï¨Âš° É#Ȩ=Lò‹x„Â\ Vð ÙöÇ;N KÄ£Ý0I:äñŽ|(ƒ)‘Ç5œA{€Ãã‡=Þ‘p؃ûÀÇ>ð_˜d UXB'Lò{ÈÃã Ž=¾ñ{\£äG:쑎wØÃ&öxG:Þaà˜þ$Ä‘GJä‘y¤D)‘GJä‘y¤D)‘GJä‘y¤D)‘GJä‘y¤D)‘GJä‘y¤D)‘GJä‘y¤D)‘GJä‘y¤D)‘GJäat¼Ãé°G>j${¤Ãà  í!{¼Ã;®Ð‡.N—ŠaØDöH‡<èñ]è#§óE:ìaR¼Ãs`D;ZPŽ´ÀYx‡Š‘{¼ÃÚàD<~‘ Nèà†°Ç;ì!àÈ#šØE16!‡nØ#&ñN?Š‘{¤Cï°G6äazÈÃׇ=Òᓤ"îG<8!wl °‡Mì!wØãþöH‡=äakØãäÈÔ?Òa¦Úƒ©öx‡=Þa¨Ú#ö°I:ä‘{¤Cé°G:ä‘{¤Cé°G:ä‘{¤Cé°G:ä‘{¤Cé°G:ä‘{¤Cé°G:ä‘{¤Cé°G:ä‘{¤Cé°G:ä‘{¤Cé°G:ä‘{¤Cé°G:ä‘{¤Cé°G:ä‘{¤Cé°G:ä‘{¤Cé°G:ä‘{¤Cé°G:ä‘{¤Cé°G:ä‘{¤C61É;ì‘”¼#öN:ìñy¼ÃïÐ;\¡dTcºp…<ìñŽtØãò !щeè‚ôþx‡8ôðG˜£n`„5špVøÀéAЋ„Á U¸Á6ÂÑ…¨U°Ç;ì!{€#ïHÇ;N°‰%¼#Ê G:Þat袤üˆ‡1ì‘ztÂï‡=Òay؃ä;Æqt\ƒ©öÀ°=À‘¦zçäx‡=Ò!gäÃéx‡=èÁ 1ØA ÛðÞa¨æ£ò€*SA[üã …w6ñyØC&I‡<è …jØB R0D:¼³ “¤ƒ©òÈÇ2¼cpÐ#ñxD,D!ŠXÀÁï°G:ì!w¤CÏÐ6† ï¼Ã$ï°Ç;Ê`zLƒSˆþF:¼³ {ÈÃàpÇ;úQ y؃©öàÄ/š_¬ƒÀ°Ç;쑎wÈãÝXG9 M¤Ã$à°‡wò yØ#ö`ê8Æ‘Ž>’ãï°Såñ“p"rH…&º‘ŽwØcé0I:ÞawØã¸F1äqw˜äéð‡=Þa’t˜î0I:ì!!{€#%ï°G:ì{ÈÃà°‡<ì{ÈÃà°‡<ì{ÈÃà°‡<ì{ÈÃà°‡<ì{ÈÃà°‡<Ø8؃<Ø8؃<Ø8؃<Ø8؃<Ø8؃<Ø8؃<Ø8؃<Ø8؃<Ø8؃<þØ8؃<Ø8؃<Ø8؃<Ø8؃<Ø8؃<Ø8؃<Ø8؃<Ø8؃<Ø8؃<Ø8¤D:Ø8äƒI¤ƒ=¼ƒ=€=ØÃ;ÈÃ;Ø8¸Ã;Ø8¸Ã;PB5$‚>ôC?PÂ;ØSÙÃ;x+è2 !+Ѓ=(Ã8¸B¼Ct€<”¸Ã,SÕ@:tA/¤9Ä€*X‚*X‚|ƒ3°C1˜4˜„<ØClBÈC> ƒ<؃wÐ+üC?ìÃ<üƒ1¤ƒ=¼C:ØC:ØSÉC:¼Ã5¤C6Ã5dC:€C:ØÃ;¤Ä;\9ô‘3dÃ5ƒþ=ȃ=¼Ã5äCJ02Á#x7"ØÃ;¤ƒ=ÐC>8C:؃<˜=ÐÂ;¤@$ pÈÃ;xÇ;Ø80•ITÂÏMA5@•=€ƒw˜Ä;äƒ3¼ƒ<Ѓ=¼C+ C,Hƒ4p/lƒ<ØC:؃<¤ƒ=¤ÃLÂÌÁ$ ‚=ÈC:ØÃ;xÇ;˜CÐLÁ%¼ƒ=@U:ÈpØ=äƒ2ÈC:¤4O6Ã/ƒI¤ƒ=ȃ=ȃ;¬?ðC*èÁ;ØC:È=ÈSåƒ3Ø8ØC:؃<ØC:ˆ9¼ƒ<¼ƒ=¼ƒ=¸8ØSÙ'¤‚I¤ƒ=ÈÃ;¤ƒI€ƒIH=˜þ9\Ã;ØC:¼ƒ=¼ƒ=¼C:ØC:؃<Ø=ØC:˜D:؃wЃ<˜8ØÃ;Øpxpxpxpxpxpxpxpxpxpxpxpxpxpxpxpxpxpxpxpxpxpxpxpxpxpxpxpx=ȃ=¤Ã;¤ƒIøƒ=€ƒ=¤ƒ=‡<¼ƒIÈ=ØÃ;Èp¼ƒ8öC&ØC:˜„<ÐC:ȰBl+|=¼ƒ.p¨ƒ<ìB$ȃ9t=°B'˜%¼ƒ=d;ìA8à B¼C:€A¼ƒ9t‚9tB;t‚=þ¼ƒ<¼Cl¼C>ƒw0=è‚.̃9+°‚<؃<¼ƒ<¼ƒI€ƒ=¼ƒ=Œ989d 4@ƒ=¤TÙÃ;¤C¦@C¦dÃ5¼ƒI¼ƒ3äƒMȃ=¼C'Ã-8C0tB:؃„ÐC>( 1•<Ђ)¨TÙÃ;ȃ=¤ƒ=¸ƒ=¼C:Øp\‚žºƒ=ȃ=¤p؃MØÃ;äC10p¼1Œ$4ª$$ƒMØS¥D:€C:9@•I¤ƒ=€ƒ;¼C:ŒC- B5¤Ã;˜„<˜8ÐTåƒ3¼ƒ<0•<ƒ&Ôª&tƒ<ØC:0•=€ƒ=ȃ9ø> ƒ=¼ƒ=¼ƒw˜Äþ;äC1ÐÃ;؃<¤ƒI¼Ã8¤Ã;ØC:ØC:ØpØSÙSÙƒ<ØC:ØSÙC:؃<ØC:0•<¼ƒ<˜Ä;˜D:ÈÃ;˜D:Ø8ØC:@•=€ƒ= œ=Ø=ØC:ÈSySySySySySySySySySySySySySySySySySySySySySySySySySySySyÇ;ØC:¼ƒI¤CJ˜„<ØC:0•wØ„=¤ƒ=ȃ=¼ƒ=ÈÃ; C&$B& ",ƒ=¤ƒ=¤ƒ<¼p¼p0•=ÈÃ;ÐÃ;xÇ;ȃ;‡:¼þƒ<¤ƒ<¼ƒ=@=@UÈp¼ƒ=HH:¼ƒ„¤ƒ=¤ƒ=Á&4=äƒ3¼ƒwØÃ;È=¼p¤ƒ=¼ƒ=¼ƒ;€ƒ=¤ƒ=ȃI0•„¼=¼ƒ=¤ƒI¤ƒ=ȃ=¼=ØÃ;ØTÙSÙC6äƒIx=È=¼ƒw¤ƒIxSåC1؃<0•<˜Ä;G:ØC:ØC:ØC:ØÃ;؃w؃wÐÃѦƒ=¤ƒ=@•IxG> ƒ<ØÃ;ȃI Ü;¤ƒI€ƒ=¸8¤ƒ<˜D:¼ƒI¤ƒ=¤Ã;¤Ä;ÐÃ;x‡=¤ƒ=ÈC:ÈC:Èp¼ƒ=Ѓ<äC1ØÃ;xÇ;ÐÃÑÚC:¤„wЃ=þÇ;ÐSÙC:˜8¤ƒwä2ȃ=0U:ØC:˜„<˜Ä;˜S¥ƒI¸8ØC:؃M¤„<¤ƒI¤Ã;؃<ØÃ;؃<0•=€C:˜D:ØÃ;ȃI¤ƒI¤ƒ=ȃ=¤CJÈSÙÃ;˜Ä;ȃ=0•<ØSɃ=0•<ØSɃ=0•<ØSɃ=0•<ØSɃ=0•<ØSɃ=0•<ØSɃ=0•<ØSɃ=0•<ØSɃ=0•<ØSɃ=0•<ØSɃ=0•<ØSɃ=0•<ØSɃ=0•<ØSɃ=0•<ØSÉÃ;¤8˜D>¼ƒ=¤ƒ=ÈÃ;˜D:ØÃ;؃þ<¼ƒ=¤Ã;؃<¼ƒ<¨Ã;ÈÃ;ØÃ;Ð8ØTуwЃ<¼p¼ƒ<ÐÃ;ȃ=¤ƒI@=ØC:ØÃ;ØÃ;x=¼p‡<¼ƒ<ØÃ;ÈÃ;ȃ=xÇ;¤ƒ=¼ƒ=¼C,B¼C> Ã;ØC:؃<¼=0•=¼C:¼ƒ=¼CJ¤ƒw¤ƒI¤ƒ=¼=¼ƒ=¼ƒI¤ƒ=Ø„I0=¼pØC:ȃ=ȃ=8C>0•<¼ƒwÐÃ;ȃ=¼C:0•=ÈÃ;è2¼ƒ<˜„MЃ<¼ƒ=¼CJ€ƒ=¤ƒ=¼C:Ø8ØSIÈ;ØC:Ø8¸ƒ=ÈS¥ƒ<¼C>ƒw¼ƒ<‡w¤ƒI¼þƒ=È=Ø=˜„M؃w¤ƒ=¤Ã;ØC:ØC:ØÃ;Ѓ„0•<˜SÙÃ;Ѓ<¤Så2؃wØSÉÃ;ÈÃ;Ø8ȃMØÃ;ÈSÙÃ;؃w˜D:ЃIÈÃ;ä2ȃI0•=¤Ã;ØC:¼ƒ=¤8¸ƒ=¼ƒ=¤ÃѦƒ=0†ÙSÙC:¼ƒ=¤ƒ=¤Ã;ØC:È=˜„MØC:0•=ÈÃ;Ø ÙC:ØÃ5¤D:xG:ØC:؃<˜D:˜D:¤D:¤D:¤D:¤D:¤D:¤D:¤D:¤D:¤D:¤D:¤D:¤D:¤D:¤D:¤D:¤D:¤D:¤D:¤D:¤D:¤D:¤D:¤D:þ¤D:¤D:¤D:Ø8ØC:ØÃ;ØC>ØT¥ƒ=¤ƒI€ƒ;Ø8¸ƒ=ȃ=Ø„=ÈpÈ=¼=È=؃<˜D:0•<¼=0•=¼ƒ<؃<0•<¼ƒIÈÃ;ȃ=¼ƒ=¤ƒI¤Ã;ØSÉÃ;ȃ=¼ƒ„ØC:xÇ;ØÃ;ØC:ØC:ØÃtÂØC6ƒ=¤ƒ=x=¼ƒ=¸8¤D:؃<¤ƒI0•IÈSy‡=ȃ;€ƒ=€ƒI0U:Ø=x‡=¼C:؃w09äC:ØÃ;؃<¼ƒ<ØÃ;¤CJÐP6C:ØC:¼ƒIÈÃ;ØÃ;؃MØ=ØÃ;ØC:Øp¤ƒI¼ƒ<¼ƒþ=¼ƒ=Ç;ØC:؃<ØÃ;ÐC6 ƒwØTy‡=¤ƒw¤ƒ=ÈÃ;ÈÃ;¤ƒI€ƒ=0•I¤ƒ=ÈÃ;ØC:؃<¼ƒ<¤CJ€Ã;؃<¼ƒw0•=ÐC6ƒ=ÈÃ;ȃ=¸8˜„w­w¼ƒ<ØC:؃<¤ƒ=€C:ØÃ;ÈS¥98ƒM¤SÙÃ;ØC:˜=ØC:ØÃ;Ø8ØC:˜8\ð;¤ƒ=¼ƒ=¤ƒ=¤ƒI¤ƒIxS™8˜D:ØÃ;¤ƒ=€ƒ= œI¼C:ØÃ;ØC:ØC:˜†ÙƒM؆نننننننننننننÙþ†Ù†Ù†Ù†Ù†Ù†Ù†Ù†Ù†Ù†Ù†ÙC:ØC:Øp¤ƒ=ÈC>äƒ=€ÃѦƒ=¤ƒ=ÐÃÑ2U:˜„w¼ƒw¼=ÈS¥ƒ=¤ƒ<¼ƒ=ÐÃ;ÐÃ;˜„w¼ƒ„ØÃ;ÈC:ÈC:˜8ØC:ØC:0•=¤ƒI¼ƒ=¼ƒw¼ƒ=¼C:ØÃ;ØC:؃;€ƒ=¼ƒ=¼Ct¼=ÈÊɃ=ȃ=‡<¤ƒI¼ƒ<ØC:ØC:¼8؃<ØC:¼ƒwØ=Ø=˜D:˜D:0•=¼ƒ=0•=¤ƒI¤8ä@ȳ—Nž½wòä½³Nž½tïìÉ{GOž½tï0"L'þï={ïÒÙKg/½wöÒ!”g/=pöäÙKg/=pîìa|‡Ðž<{ßÙ{'Ï^ºwöÞyLg=yöÀyL÷Î8{òÞÙKgOž½tôÜy´—îÇt:当g/Ý;{ô䥳—.Ý»tï<¦³‡ð½tô<"´'Ïž¼tïäÙ£k/½tï쥳‡Ñc:{òèɳ—Îc:pöÀ¹ó˜N›½wöÒ³÷œ½wÁ‰Mgœ;òèÙK眽tÓÙÃh£Xp߉'œXpbÁ‰'œXpbÁ‰'œXpbÁ‰'œXpbÁ‰'œXpbÁ‰'œXpbÁ‰g/þ½töÒ±'{ò˺À±ç0JGžwäñ{ÒyÇŒìÁÈyìIÇyìIG{ÒA(wä±#„ì‘ÇžwìIGž¦ìÇÀwäIÇžtìI!{Ò±ç{ÀqÇžwì‘Çžtì‘g‰Mš ç±Ò±ç„0²G{ÀIÇžtìÇ#wèIÇžt<’G'yÒ‘Þ±'{ä¡Ë£wìIGž¦Ò±'{ÞQ){ä±'{Þ±!{Þ±ä±ÇpÄz‡.±t’'{Þqš’çyìÇž¦0ëtJÇpìy'{Þ±'{Ò±ç{Þ¡{ä±'{Þ±§){Òþ±'{Þ¡Ëžwì¡Ë#„Òñˆ{ÞIÇŒì¡ÇpìyÇžwñä!ÕäÁèáä¡)ÞAšBììáÒÁèAì¡)äÁš#ìAìì0ÂèAÞÁèAÞÁè!ÞÁÞÁšâèáìáìÞAèAšâ>QìáìAÞÁèÁ#äÁÞÁ0ÂRí.ñ<¢)äáìáèAâäA,ÞAÞ¡)ÞAèáèAèÁRÍëäáäáèáš#ÔÔ¡)ÔÞÞ!¡ äÁœÁ@ÞÁ#ÞÁ@èÁ0Âè!hÞÁ#èA,ÞÁ@ÞÁ#ÞÁ#ÞÁ0ÂþèÁèÁÞA,èÁ#èÁèA,ÞÁÞÁÞA,ÞÁÞÈäáä¡)ääÁÞAèAšB%ÞAÒÁÞÁÞA%0Bèá‚0BÞAÞAìáäÁÞ¡)ÞAìA0Â#ä0îì¡äÞAèáèáÂÞAìÞ!è#šâè#ä¡)ÞÁäÁ#0"Õâä¡)Þãèá0îìáäáäÞt!Þ!ÒáèáT"ì!ì#äá0îì!ÞA|!Þ¡)0‚0BÞÞAèÁäA'ìá¢)TâþäáäA'#ì#ìá0#ä#ä#ä#âêèÁt!ÞAì#B'äáâäá##è!tBÞA%0!0!0ãä#èáTâäÞA0BèA0B0B%Þ!ÒAÞAÞAÞA%ÞA%tB%ÒA0!èáè#ì!Þ!ìáè!è#è!ÞA0BèAèÁ#ÂÞÞTâßAèáäáèAš –!A,œhð4OõtOù”hè˜|NÞAÒÁäáäA'#ÒÁâTÂÞAè#þÂäÁÞÁä!ì.ì!èá6a Pu 6áäÁ6a ‚  –`ìáœAÁÂÞÁ0îTÂä!ìÞAìáäÞAÒÁäáÒAÒÁ#Âäáè#ÒÁÞÞ!ÞA%ÞÁÞAèAR #ìáäáìAèÁçâ‚ÞÁÞAÞÁ#ä#äá<¢)0Â0¢)ÒÁèáìAìA'äìä0!0Bèáìáì¡)äáìAÞAìA%ÞAÞÁèáäÁÞÁ#ÞÁâìA<‚äáÂäáþìAÞAèAÞA,ÞAÞÁ#ÞÁ0Bì#äÁâäÁäáì!ÞAìAÞAìAÞAìáäáäáìäÁäáÒÁ0ÂÞAìáäáäÞAìá"ì!ìáäáì!ìAè!ì#ìäÁÞAÞÁÞAìAÞAèáèÁÒÁÞAì!ìAtBìA0ÂÒÁ#Þ!ì!âÒÁätÂ|Ž0‚äÁäá– š ì<"VÁ A4ÁÄ¢œÆ@òÁ#ÞÁ@òÁœF,òÁ#òÁ#òÁœÆþòA,ò!‚¦<"<"ì!Ä¢²À#¸ Äb®AìÞAÞÁÒáèáÄâäA,Ò!ì#ÂÞAìAÞ!Ò!ì!ì!Ä#âšàPø–!Þ¡ Ì `x Þ¡0B%ÞAì!ì#ì!ÞÁÒÁ#Þ!ì!ìáì!äÁ#ÒÁä#<ââìáìAìáÂ0ÂTÂÒÁÞAÞA%ìA%ÞÁÒáäÁ@ÒáÂÒ!ìA%ÒAìãÒ!ì!<!ì!äÁÒáÂHôäÁä#ìAÞAìþ!ì.ì!TÂÒAÒÁÒÁÞÁÒAìãÒÁÒDå!äáì!ì!ÞA%ì!äÁ"H4ì!ìA%ìAì!ÞAì!XÙÒÁÒÁÒÁÒÁÒAì!ìá"Þ!Ä"ì!ì!ìAÞÁÂ0îì!ìáìAì!Þ!ÞÁÒÁ"ì!ì!ìáìA%ìáäÁÒAìáäÁÀÁäáìAèÁÒá<"ÞAÒÁtÂÒáìáäáäÁ#ÒáäÁäÁäìAÞAÞÁä¡ 6a ìáœajþð`ä@ 4ÁœæÆáÀ¡œ¦ì!ìaêajì!>ì!ìAìáì!ì!äÁÒAìáÒÁ#ÀÁ<">>ì!ÞÁ#ÞÁÒÁ#ÀÁìAì!ìá<"ììAì!ÞÁÒÁ#ÀÁÒáãßÁÒÁ#èÂÒÁÒÁÒÁ#ÞÁäáì#ììAÞ>þì!ÞÁ#0Â0ÂÒáãÁÁìAtÂÒá<ÜÁäÁÞÁ#ÀÁäáì!ì!0Â#ÀÁì!ìA'ìáì!ì!ìþ!Þì#<"ì!ÞÁ#ÒÁ#ÒÁ#Òìá<"ìAì!ÞáãÓ᜽àìs÷Nž½tï쥳ÎÞ;{靈÷Î^ºöÀ Lg/Ý;yïäÙKgïÝ»tßÙ{g/½töÒ½˜n`ºé䥓÷Nž½wòо“—Ξ¼%š…–/êª~…ä ‹šO¹töÒ¥»&Î^>{ËÞå³÷î9qùø7.¸¨âÀ‘ËçÎY¾qüè‘—\>qöÈù»F޹qùêaÍ—åß¿-±’+6P^:{骴眽tEߥ³WÔÞ»töTÚ“7Pž=¯òÒÙK÷.=þwàì½³—Î^ºòÒÙk"Yò’wòŠÙcÎÞ;y*í©´GÏÞ;Žé쥳÷Nž;p½Ò“g/Ý@w঳÷nà»töÞ¹—ÎÞ;{éì¥sŽ=é ”Î@àØóŽ<ôÐcO:ïØÎ;éØóŽ=ò¸Ž=ïØ“Ž<©ôŽ=àØã•= ÚóN:ö¤cO:ö¤³`:ö€“Ž=験Ž=ï ”Ž=àp”Î;験Ž=ï¤cÏ‚éØC=רóN:ö¼c;à ôN:¥#Ï‚ïØGéØSÔ‚ïØ£R:ïÈcO:ö¸Ž=ïØ“Ž=òÐcÏ;ö¸Ž=éØóNQòØ“Ž=EÙC<¹Žþ=ïØóŽ=^Ùã8ö¼c=ö¤c;àØóN:Î@ ze=îØóŽ=é $Ï;ö,(=藍’=ï¤cÏ;éØC<ö¤3Ð;ö¼SÔ;ö¼c<cO:ö¤cO:¥cÏ;ö¼“Ž= ôŽ=ï¤cÏ;é $=ò¼³Ä&K¨ä VyÜ"‡šÔãO>âD%Î@ä¤cOTäd“Ï8ùØCÎ8ï¸ã•=±ƒÕ8é¼s=î¼ó?Ùäs ?ä䓎=Q]ãOTýä“E?\dñOùÔU?Q½SŒ<ö€ãŽJcÏ‚ö¤óŽ=ïØ“Ž=éÈ3P:ö€ãŽ=é5P:ö¤c<ö¼cþ=öeO:öxeJòl²DÙKl¢2ô(C=é Ž;¥#=ï€ãÎ@ï ”Î@E¥cÏ;ö¤óŽ<*Ù³ =é¼c8ö¤£’=ïp”Ž= $=ï ”Ž=òp¢=òØ#;ö¼cO:ö¼3P:ö¼cO:ïpd<ÉbQ½38öÈóŽ=òÐ3P:ö€cO:* $=é¼ÃQ:ö¤3P:*Ù“Ž=òØóÎ@験Ž=òØ#Ï@^c<*ٓ΂ò¤c8öÈ£’=òОŽ<öÈÃQ:ï {ÈÃï =ÒapØ#öHÇ;ŠbtÈ#ö ‡=Òñ{¤ƒ#ïH:T"þ{¤Ãô°‡<ì‘pØ#ô°G:ŠbwØ#öx‡=ÒapØ#ö‡=äñyp$ïH:ìw¼CïÇ;ÀáA½Ãà°‡<ìwУ(é°8ìñpÈÃàpÇ;ìñ{¤c à°G:쑎¤ÃïH‡Jì!{TaMH6üÈ[äšÐ†?¢b|ø#ï‡=ø‘ŽwäÃùx?À!{øãî G>Þ‘ŽzÒã Ç@òaqØãù°G>ìA{äCþà8È1|ôÃQ¹ÅòÑ,Üþˆ óñŽe äI=äaz€ƒ#é°Ç;ìñþ{¤ÃààÈ;Òaw¤Ãï°Ç;ìñ{€Ã*‘G:ì{¼c àˆ<@¤y,¨ï(F:’ŽÙ#ï°Ç;ìázØé°G:¢{¼Ãà°Ç;8’{€Èï°‡<ì‘ޤÃé°8ìñ{ÈÃïG:ìáp¨¤(^yG:òy¤c é°G:ì‘{xÅïH‡=Þa¯¤ãòH‡=ÞayØ#ö8ì!Ùãö(Ê;쑎Èc é°Ç;Š’{¸éˆJÒ1yØãö=ÀatØãQ‰=®awÐ.I‡=ÞayØãò°G:âpþ¤Cà°‡J졯 $ö G:Þay¨D©‘‡=ÞÁ‘wxe JÇ@Ò1p¼CöHÇ@äñŽtØC%òHÇ@è‘{¼c òxG:ìñ{¼£(ö‡=Ò!Éãî‡;À1tØ#¡Ç;쑎¸ƒ#éÈ‚Ò!Ùãöx‡=dwØ#y‡=ÒawØ£(öHÇ@Ü{¸‘Ç;Òñ,¢ éx‡3ü‘~R2Ä̇?òá¬2þȇ?òALäƒà¸FT™2€¼ ó¡bäÃýø‡?òá¨ø£QñG>úñô#!~Ç2ì‘{¤þÃéÇ;ôŽtØ#ö‡;ÞatØ£(éH:ì¡{€Ãï°G:R”wØ#‘Ç;ì!{È#´“Ç;ä¡d¼Cò‡=ä¡’€ÃöP‰<è1pØãé°Ç;äayÐCï°8ÜatØ#ò°G:쑎wÈÃéÈ;ì!zØ#öH‡=ÞawØCî°‡Jhç{¤Ã*á8ì!¤ƒ#é°G:8’{¼Ãé°G:ÞatØCéx‡ ä¡{¤ãöðŠ<Ò1t¨Äïàˆ<ÀᎀÃé°G:@´ {€Ãö‡;ì‘{¼Ãéx‡<Ò1tØ#þöH‡<’{¼Ãé°=B¤ãöHGÒat¼Ãé°G:"¤Ãé(Ê;Àay D%´K‡=ÒñŽt Dï°G:쑎€Ãöx‡=T2wE%I‡=Àay¼CöH‡=äawÈÃï ‡=èatØöx‡=ÞatØ#ï°ˆìw¤c ò°‡Jì‘{¤ãEy‡=Š’{ÈÃé°G:’ŽwÈãy=ì‘{\c ò°G:±„8#Æ!þ‡?þáäòþø‡?þâøã€ü ûãò€üGˆýÑ„øþ %CÌôC2þþèÇëýñŽeØöH‡=Þaz€c ï0 JÒay¼Ãï°G:ìQ”Å^±G:ì‘{Ðö¸v:ì!¯ØCöxÇ‚”Ae,Hï‡=ä± w¤c *I‡=äaé`é`òöö‘áàö öàà0àðE‘ö‘öðò !ö Tññò`à!ö‘ööðöï öööñöñé`é`é`ï`*Áà`é0ï *!‘‘ö!ö ï° ö öðþñö!öï`*!öïööö öï`é`é0òö ò`ïàà`^1à`é`ï`ô`é`*‘öàîöá¡é`ò° ï`é`Eñö îööðö@ò`é`*a*!(é0ï éÀé`‚bà0ï`Eaô`*a*!é0é0*áà`*1à`îöñò é0é`ï0ï ï°›Ðò@Îð¿×þЀÔ!֯׿÷zÿHýHýàýþHýàýàýàýàýðzýbýð{ýð{ýðzò€ é`ï`é`ò@é`é`éðé@;é`ï`à0é`^aéÀé`é0é° é`ààö ö ààöòðÈðÅðò`é`ïñöáöï0é`ï`é`é€Oöðô0éð‘ôàö *aà à0éÀïööö‘!éðò@öò`ò@´#ö@E"é`à`òðé`ï`ï0é`é0à`é0ò`éþ`é0éðöð‘öðáöðö*Qöï`é`ï`à` bòÀòàö ö öò`é ööà` 2ààöðö@ñé`ò`ï`^!ööñ´öñé0*aà@öðöî`éðöð!öööï`é`ààöðöðñöðööööï0Eaé`é`*aéðé`é0ä`ïÀï° ö öö !öð‘ñöðöö þöö AÐ K ï ÄÔþÐþ𿇧ý@LýàýHýàý@LýHý@LýHýðzýHýàýàÿðzýàýðýHÿHÿàÿàýð{ÿp ·p é`ïöðöðòðöðöï‘ö ööOï`ï`*aïö° öñöàô`é`ï`· Î ööö é`ï`òï0é0ïööðö‘ñöðé`ï`ï é`*aï ö° ö ööàöï0þé`ò`éðöPï0ï ï`à é`é é é@à`é`@ò`é`ï`îööðé`é`ôööðé`é`é0òð^¡öààðé0é ï`ò`à0é0ïö@Eáà`éðòð‘‘ö ööàà`ï0ô ôE1é0ï`à`ï *‘‘öð‘öö ò` Bé`é`^1 òé`ò0é0ï`òîö é@;ò0é`òààöö"öþöðö ïàà`é`à`ïö!öï`ïàà`é`ïöïP*aé`Jeé`‚bò0é`ï ï‹öÎÿÐõ‹¿ù«¿ûË¿ùÛý ÀýÛùkÎP ÊP ÈP Œ ìÀ\ ÈÁì Œ ÅÀ Å€ ÈP Ì  ì !\ ·° Å  ¯ ÈP ÈP ʰ ËP ËðÀʰÀ·° ¬ /<ÁŒ Ëà Œ ËP ÈÁ\ ¼Ã Œ ˰ÀȰÀÈàÀÈP ȰÀÈP ÈP Ê  Ëà ¼ Å  Å  þ/üÀ´€ Å€ Ì Ë°ÃȰ ÎP ÈÄÅ€ Ëà ì ÈðÂÅp ¼ Œ Ì€ | Ű Å€ Å€ Π ÈðÀ·ÄÊ€ Ë ËàÀÈP È  /\ ·° Å€ ŰÁ/\ ÈP ËàÀÈ0ÁȰ Œ Å€ Å€ Ëà ;Œ /\ ÈP ·ÁȰ ÎÀ Ű Œ Œ Åp Ì ÌP ÈàÀËP ÊP ËàÀÎÀ Ȱ Å  ÈðÂ;¬ ˰ÀΰÁ ¬ Å€ Œ Œ ¼ Åà Œ Å€ ¼ÁMÐ > ö \¿ýÀÏÿ¼¿ýн¿ýÐÿÐÿÐÿÐþÿ`Ðÿ`ÐýÑúÛøÛ’ÑùëÿÐÿÐ’‘ ò€ *Aò ò ò"ôðô"òðô ¿*ï@Eñöðò@ê@ ² ï (*!¿ŠOê ôðô òðò° "ïPï ô öðEOô  "éðô"ò@*Aï ï@*Aò ò ô"ê êPï  òé` ² *qmôðêðô  "ïP "ï° ï° ê° ê° øD "ïP*A Rô"ö@*¡ "*¡ò@ï° *Q*!ôþ"ô ¿*ï@*Q Rôðô ò Eñôðô ô ôðEAïPôðê ôPöðEa¿*ï ôPôP”ûôðòðô ò@Hýò ò òðô *¡ôðöðM° M Ùï (ï`‚¢öPöðö (ï`à`ï`×öö ï`à0*a×Vï`ò`*aE¡ö@âòðö öPïàPà`à`ï`*aï`/Nò@‚’ ùðEAò EAEA×6Ù@Ù@Ùà ÙÀåÎðâþEA$þù ï  ö ò`ï° ò@¹ï@ï` "ô EA¹ï@êðEñEñôðö ô  òò`Eaò@¹N*Aï° ï@ Bö ö ï`ò` béð”k*1ò ôðö@ö  òö° ï° *aòðô`ïé ¢ö *± ò0ô ï° ¿J¹Ea òô  "ôðò@*Aï ô !ôð”ûö ö@ï`ô`é Qï`”kô ”«ò ö *aEñ”ûò° !ïðþèïPö  "ï° ï@*Aò@ê° Bï ï@ ² *!*a*Qö@¹ê° øT Bï@ï@ï° òðnEAï@ï`*A¹ï@ò`òP›°á ù` bø4ødøÄòm*aï` bòm 2 2òmï ö"Qa@ï`ï öðò ßHMù@ø´ sÿÙ° ð ð ·ð ·@ø´@ zOô`Ù@Å é0ò@øTôö ò ò`ò`ï ï@ò° ïö ï@ï`ï ï ôþ ï@ïPïö€OE¡ôPô ï@ï  "(ïPï ïöPï@ RôE± é`/þö *Aòð "é`ïP¿*ï ö ï@ò"é *Aòðô`ò0¿Zï@*òìÑ{÷Ž^AzôÞ%|GÏ^:yòÞE”÷Ž^D{òÞE|—Ξ<{é"¾³'¯à;yå¤gO=Š #¾£÷."½‚éÞE´wR½wÓÙ³GO½‚ôÞɳ'ï{ÒIçyè‘Çžtä)ÈžþÞÑí{NzÇžw"zÇŠÞ±'{ÒyGzÞ±G{ä¡ç{ ²'"{Ò¡¨ zäy'"{ä9a“&ì¡çš|"JÇyÒ‰è{äI‡¨tìIÇžtˆz'ŠÒ‰è{Ò±'yÀI‡(yÒ‘ÇV{ÜÇžtˆJÇžˆþÞ±‡¢täIGžwìy'¢täy'wˆr{Þ‰,{(JG[íIGžtäIçkú±Õy ’'yÒÑ-{IÇ™k²I%»ìÈÉÆgÒ‘'þÒ‘'{ÞéÇzŠy'{ êÏž‚ì‘'{"zGž‚ì¡GžwˆzGžwˆJÇyÞIÇžˆì‘Çžwä)HžwìÑm¾täy‡"{äy'"{Þ±ç{(JÇžtÞ±'{äyGžt":IcíyÇÝì)(¢wìIÇžwìyÇžtìÑítìIÇŠÞ±'ˆÞ‰(¢Ò±‡"{Ò‘'yÒ±'"{ÒéOžw(²ç¢Ò±§ tì‘'þ{ä±§ ˆÞ¡(¢ä1ÖžwÒ±'yÒ‰ÈyÒ±ç$y¼Ã‘‡=䑎ˆØCöH‡="òŽtP„ï°Ç;ìñ{DäöG:ì‘tØ#‘IÇ;ìñ{¼CïH‡=Þ!{È£ é°G:ˆ’{¼C7ö HAì‘w¤Ãï°G:ˆòŽtØCïH‡=Òat%"ïH‡=NBy¼Ãòx‡<Þ±„M4¡ ä°‡<ìñ¢¤ƒ(à J:ÀaˆÅVDI‡=ÒA”tØ#öHÇ;ì!¢€ƒ(é J:Þ1{¼Ãï°G:ˆ{¤ƒ(×°‡<"ŽÈȃ(àpÇ;ÒA{¤þöÇ;ÒatØãòHÇ5ì!¢ÈÃï¸F>ì‘yØCÎØ†3¶áŒm¼CöH‡=‘r#ϸ9²q r\ÃËx‡=Òaw, gÈÂäQ|ãʰÇ;쑎ˆD7ï‡=ÒQ{¼ÃéG:Þa[Ùãòx‡=äñ{ȃ(éxGDÞ{ȃ(Æz‡<ìQ{¼ƒ"é°GAä‘y¤Cé°Ç;ì‘{ÈãöH‡=Òñ{¤ƒ(ò°G:ì!{Èã)HDˆ’ŽwDÄ鈈=ÞatËïGAÀáyØãöx‡<ì‘¢ØÊ µG:ì!¢¤Cïþ°G: b‚Ø£ I‡<ÒawØCDI‡=ÒA{„(àp‡=äawÈ#2é J:ì!{¤#"ï°Ç;ˆ"wDıG:ì‘{¤#"öHGDìñy¤?ö(ˆ=ÒñyØã$öH‡=Ò!‚ØãöH‡=ÞA”wØ#òxGd bpØ#öH‡=ÒÑ{D$öQÒñ{¼#DI‡<ˆ’ŽwÈãòHGDìQ¢¤Céx‡nì!{TaKH‡=œ‘{€Ã'IÇ|ÒAyØ£ öGdÀa“ØDy‡=¶gwØ£ DyG:ìa+{$ò°G:ìñŽk¤£ ¶’þ=ÒapØãó!Ê8®Az¸DyQÀAp¤×(ˆ<ìáŒ|¼ÃïG:¨!  cà(ˆ=䑈wŒƒøxÆ/ŒlŒqÃΰÇ;ìñy¼# ÿÈ‚=Þayä#ô(Æ;ÒA”‚D&öH‡= bt%D)ˆ=äaw¤ƒ(é°8ìñw€Ãï°Eìñy¸±‡<ìQ¢¤Ãy‡<ÒatDFöH‡=ÞawØÃà°Ç;ˆR{¤Ãé J:ì‘{¤Ãé°‡<ìñŽtØãöˆÈ;ì‘{ÈÃàXM:ì!{¸ƒ(ï‡;Àaw¤Ã!Êþ;ÒqšwØãöQÞápe{ò°G:ì!{€Ãé°G:äQ¢€Ãé Š<æcw¤ãé°G:ÒAy¤ÃI‡=Þ‘{¼#öHQÒatØ#DI‡=ÒA”‚Øãé Ê;äaw¸ö°·=Ò™‚ØCöx‡=ÞawÈÃé°G:ì!tØãé JDÒaw¤ÃòˆL:ìñ{¼#ö‡=ÒayØö ‡=äawÈÃòx‡=Þ‘ŽwœFDGdÒ!{¤ƒ(ò°8ìñŽt¼Ã‹ÈB:ìA{ÌG‘IÇ;ìñyØ#ò°G:ˆòŽtØãDI‡=þäawØî°Ç;ì‘{ØûDQ bwØ#‘I‡=ÞakäC×HÇ5ìñ{¤c>òH9ÆqtÈÃ×°Ç;èaw¤ãö‡8Ü!kÈÃì°8èñräãò°GA„Ñ‹zèCúÁHGA챈wÿàD*R¡‰k¤ƒö(†<ÞatØCïXÂ;ì‘{¼#ÙxG1è!tØ#öH8ì‘¢H{w°‡t{H¢H{x‡ÈH{H{{x{ˆ{{H{{x¢ˆ{H{H{H{{{x‡ÈH¢y(¢H‡w°‡t þ z°‡t Štx{H‡‚°‡t°‡w p Štx{H¢H{wx{{x{ {°·t°‡t°y°‡‚ Šw°z pp{{¢àB{wz‡t Šù{w°‡t°‡tx¢x{˜{H{x¢w˜{à“8t°‡t°p{x‡Èw°‡ˆ°‡t°{³p°‡t(p°‡w°‡‚{w Št Št Šù Št°p°‡tˆ{H{H‡w°pp{H{H{x¢H¢Hp°‡t Št Št‡tx{wx{x{zþ°‡tw˜{({H{{‡w Štx{w({z‡t°‡t Šw°‡t°y°y°y°‡&è„&(ˆkȇwH{H{x{ ˆ‚°‡tˆˆt°‡t°‡t Št°yH{H‡Èx‡tx{x‡ÈHz{H¢H{H¢yx{r°‡w8k‡t°‡w°y°‡k y Šw {x‡t yxyrȆtȆw¸z{ ‡kȇt°‡w°z a>黅ȇDH‡ˆðH¸rk°7{@{H¢‡w°‡w°‡t°yx‡|ÈzX†þ‚°‡tˆ z{y°z°‡w Št°p°‡t°‡wHw{x‡t°‡t°‡t°Ý ‡t°‡wH‡w°{³‡t°‡t°y°‡t°‡t y°ypp°yx¢H¢‡t°‡t°‡‚ p°‡w°7¢(¢x{{H{{H{H¢{z°‡w zH{‡wH‡Èx{xyx¢H‡w°yHy˜{ y°w‡tˆŒù°yxy°‡t8 y˜{H{H¢(ˆtxyxy°p°‡t˜{x{H‡È{H{‡t p°y Šw°7{xþ{x{H{x{‡È‡Ó¢¢Hz°‡w°p°‡t Št(ˆt°p y°‡w°w{H¢ {x¢x{xw{x‡t y°y°p°{³‡‚{ ¢H{H{x¢ {x‡t°‡t°‡t°‡ùH{H{x{H¢x{ˆˆt°y°p°‡‚H{x‡ˆH{xyx‡ Ø„,H‡w ‡|xy°‡t°pp‡w Štx¢{x{H{H{H{{{H‡‚¢wx‡t Štˆ{H{w°{# yx‡t°p{¸†kþ ‡kH{x‡tx‡tx{ o½†qp‡k¢H{H{x{¸†qp†l(†q¸†“xgðy°‡t°y †^`Fxƒ^¸…w°‡‚HyHpHïó¾_è†tȇb‡t({H{H{¢x‡|Ȇw({x¢°·w{z°‡t°yxp y°yx¢x¢¢xy°‡t(y°‡w°‡wˆŒt p°‡w°p°‡t°p°ŠH¢ y°{³yH‡ÓH¢Hz{x¢H¢H{H{¢°7y({°7¢H‡w{Hyx{H‡wþ{xp pp{H{H¢H‡w°y8 Šx‡Èxp°‡“°‡‚ˆŒˆ°‡‚°‡w°‡w°‡kˆŒw°‡w°y Št(yø×w°‡t°‡t y°y°‡ˆH¢x¢H{x{x{H¢HŠx‡t°‡tx‡t {H¢H{H¢H‡w‡Èxy˜yH{H{x‡Èwˆ{xpp‡w°‡w°‡ˆ°p°‡ˆx{‡Èw Št(ˆt Š‚H‡ˆ({({H{H{x{x{H{H¢H{H{{x‡t°y ¢H‡w°‡tx{{H{‡&Øþ„ °‡w¸†|°‡tx‡ˆ ‡w°‡tˆŒt°z{z¢{ w¢H¢ˆˆÈ(yx{(yˆŒw {‹ y {¸r°‡w pXw°‡z r¸†w°‡t°y°p°y(ˆq@r@rxzˆŒkÈp°yx‡tèaЇ~XäUH‡w{H{ wèN¸ä_ˆNx‡|P{x¢H{H{˜t‡wȇlxd°w‡‚ Š‚°‡wH{x{˜t‡t°‡t°yH{H{H{{x‡tˆ {³‡wHw{(¢H{{{þ y°‡“°‡‚°p°‡‚°y w{H{Hy°‡t w‡w°mH{H{ˆˆt°‡w°‡w°‡t°‡w°{#ŠwH{x{xyˆ w ‡t˜{{x{¢pp°y y({H{w ‡t°‡tˆ w‡t°‡t°p Šw°pˆŒt°yHyH‡wˆˆt°y8t°‡t Šw°‡t°‡w‡t°‡w°‡w°‡wH{{x{{{H‡w p°‡t°‡tˆ yH{Hyxy°‡t{pz‡t Šw‡w°‡wH{xyHy˜þ{({p‡ÈH{ˆ{˜y(ˆt‡tˆ{ {H{x‡È{¢(¢H‡Ó{x‡t°y°p°‡wHyx‡t°y y°‡wz‡t Št°‡w°‡wH{xyxØ„&°‡wp†| Šw°‡w°‡tx{°7{H‡wˆˆw yH‡w°‡w°z‡t p ˆwH¢w°‡t°‡t°pˆˆw Šw°‡t{H‡w°‡w¸†‚‡ù°·w°‡tx{‡w°‡k°‡w°p°‡t Šˆ°‡‚g@Zˆˆt(ˆkè{Hy°‡‚ …`؆`؆[°‡t þŠEx‡Ó {¸d{x‡|py°‡t°p°‡“°‡t°‡wȇkx‡bxzp{x{H{Hy°‡w°‡tˆ{x{{°7¢{‡t˜{({H‡ÈH‡È¢°7{H‡w‡t({H‡ˆ°pp‡ˆ y°y8 { y°p°‡‚°{# w°‡w Šw°p°yx{w pp‡Èx{¢H{H‡w°‡t{x{H‡w°z°‡t‡ùH{˜t°‡tx¢H{({x{H{H{¸{˜{x{zHy°y°‡‚°‡w ŠtˆŒt°‡wþ°.L¢H‡ww°yx‡tx{x‡tx{w°p°‡wˆ{‡tx¢x‡t˜{H{x{H‡w°‡t°‡w p°‡w°‡‚‡‚H{w{x¢H{‡“ ˆw‡wH¢{H‡‚{{x¢x‡t({x{°7{ {H{H{H{H{w˜{‡wH{¢(ˆÈH‡wˆ{x{ {pp¢H{{{H{¨‚NXy°‡kȇwH{H{H¢({x{pp°yx‡t Štxy(y°‡tz°w¢H‡þù°pˆŒù°‡t°‡‚{˜yx{x{x¢xyH‡Èx{‡ù°‡w°‡w°‡ùH{H{H{ˆ{ˆˆ“H‡È {H¢x‡ˆ°]{x{(ˆD°‡wXTˆ (†t°y˜y°y°‡‚‡w°rxd°‡w°‡t°‡t Šw°‡wH{x{(yx{¢xz{H{x{H¢H¢‡t Š‚°‡t‡w°‡w Šw yx{H€°Gž=yòÞÙKgÏ^:{ïÞ-”·ÐÞ»…í½[ø.=yöÒM´'oâÃwé䥓.¤<{ôäÙK·ðáByïþ>\˜na:yöÀÙ“÷NÞ;{àì½³WòÁtö쥓—Î^:{ïÜ{š.Ý;{àì¥{ú4اŸº÷Tž=zbÓÙ3˜Nì;{éìÑ÷ô]:{ïì½³÷N^ºòì½++ÏÞ@{ïì¹÷ôa:±éì¹÷4¥÷Ž8{éžÊKg/Xpïì¹gÏà»tOéÙgOÞÓtöÞÙ{dÓ’wöœå{úÎÞC{éì{ún`:{Á=M÷4Ý;{òÞÉ{70ÝÓwòèÙ“Î;é”dO:ö¤cO:ïÈcO:Ù“Ž=é¼cÏþC[½cO:ÉóŽ=éùØ“O=ùØÓ3ïØ=ïpøÔ;ö¼“Ï5ï#Ï;OcO:ö€ãÎSé¼#ÏSéØ#=ïØóŽ=éàØ“Ž=験ÎSòØóŽ=Ù#=ôÈcAö¤óÔCöÈcÏ;òس•=ïÈ“ÎSï<å8ö¤cÏCö¼“ÎSï¤cÏ;O½“NòØþóŽAé<%=ï¤c<ôØ“Ž=¦cO:O½cÏ;ääã8ö<”Ž=ò¤óT:öÈ“Ž<ï,C9ÎãŒõ×ãÌ5ïÈ3P:O¥cO:öô9ô c<éÐ#=ò¬˜Î;ö¤cÏVö¼ã8öÈ#ïxJ:ž’{¼ã)ïH‡=è±¢w¤Ã Oy‡=Òat؃ò°ÇVìápØCï°8ì±{¤Ãò°8žByØ#öH‡=Þ‘{¤ÃyŠ<žòy¼ã)×°G:ìñt<åöxˆ<žާ¤ÃéxJ:ì‘yØÃO‘‡=Àaw¤Ãé8 òtØã[y 8þVô{¼#öx‡=ä‘{¤ÃïØŠ=Ò!{ÐÃò°‡;Àaw¤Ãé°Ç;ì!t<%ö‡=Þ‘{”ÄéX‘Ab­Øƒö=ìaÈÃé°Ç;ÒatØãòHÇSÞa­ì!wØ#àp‡=Ò!tØCöH‡=Òaƒ¤ã!ö‡=äat¼ÃòxHJþbtØ#A‡;ž’{<$ö‡;쑎Ã[y‡=bw€ÃòX8ì‘{ €%ˆÂS’¥ öCY `? e?àù¡eöÃ[Ê¥\öCæƒÈ4Ø=tÂ8ƒ3ƒ3ÐC1¼ƒ=¤ƒ<€ƒ=ȃ=<ÄS¤ÃŠ€ƒ;<…<؃6ØÃV¼ÃS¤ƒ=ÈÃ;ØC:<Å;ȃ=¤ƒ=¤Ã;ÈÃS€=¤ÃS¼ƒ=¤Ã;ÈÃ;ØÃ;ØC:¼ƒ=¤ƒ=€ƒ;”„<¼Ã5؃<¤Ã8Œ4dƒ3¼C1¼ƒ=<„=¤8ÞñŠl\ƒãÇ;È‘ yã+ò°Ç;ÒawØ£!òhHaÒatØãöx‡=ÒQyØ£!é°Ç;*"{4¤"òx=ÀatTä±G:ìñŽtTDöÇ;*"{¸…I‡=äa†¸ö‡=è!{¤Ãï°G:ì‘y¤Ã I‡=äQ‘tTD‘‡=Þ‘yÐCI‡=ÒQpØ£ öhH:ì{¤CàH‡<ìÑ{¤Ãé°‡<Òaw¤Ãï°Ç;äñw€#ïþ°=*òy¼ÃéG:ì‘{¼Ãï°‡6 #w¤Ãé¨8ÞapØC…y‡<ÒatØ£!騈6ì‘{Èc'é°Ç;ì‘OÑÃò¨8Þ‘yìÄà°8Òaw¤Ãé°‡<ìQ{¼ƒé°‡<b†¤Ã騈<ì!{€Ãé°GAìQzTäöH‡=Òa˼Ãé°‡;ÀQ‘tØ£ öÇ;ìÑtØcUö‡=ÞQ‘wä+òx‡6Ñ„t¼#Ç!…4XÏzGôãB¸Gž`†pâ`9:PÞá ^ø‡.Π|0 ]ðóò™ß|ã䃷 þÇ5–yÃï@FEÞ!{4Äé¨H:쑎w¤ö‡=ÒatØ#öH‡=Ò!{¤£0Ç{GaÒQ‘tìÄÒÁÒ¡!*"*ìáìAÜÁÒ¡ Þ¡" âì ãìÒ¡«ÞÁÒÁÂÒÁÞÁäÁÞ¡ ÞÁÞÁÒáì! ¢"Ò¡ ÞÁÒÁÒÜì! Âä¡"ä¡"Ò¡"äÁ ÂÀÁì!*"ì¡!ìáì! ƒìAÞAÞ¡0À¡0ÒÁÞÁÀÁ¾ÂÞAìaUìÁ #ì!ÞAìáäÁÀÁ*þâìá #ìáì!ì¡!ìaUÀÁä!ì!ìÁì¡ ÞÁjÈä¡"Òáì!ÞÁÞ¡"ÒÁÂrÅÂÀÁÒÁÒÁä¡"ÞÁÒÁÒÁÀÞAÞÁÞÁÒÁä¡0ÀÁäÁäÁäÁÀÁäÁÀÁ CììAì!äÁVÅÒ¡0ÒÁä¡:a *ÂŽ£xÁÝ1zCîÁ ž æ¡ ü¡ÞྠZàÂÀ„àtÁàÂàžÀùÒ!ý,Þá²ÆaUÞ!²Š!ì!ì! ãÒ¡"Ò¡0èAþììÁÀ¡"À¡!ìáäÁÀ!ìáìáìaUÞ!ÞAÞÁÜì!*ÂÀÁÞ!ìAì!äáì!ì¡!ìaUìáìAè!ä!ì!*Â2ÒÁÜì!*âä!ìá âÜì¡!ì!ìáÒÁÒÁ"ìá*‚¢""ìaUì!ìáì!ì!ìAììììá*"ì!*"Þ!*âÜì!äa'Ü*âÒ¡0äÁÞ¡0 ÂÀ¡"ÞÁVÅäÁÞÁÒáì!*âìáä¡!ÒÁÀÁÞ!þìáì!<…ìá+ìá*BÞÁÞ!Wìì¡!*ìáVEì!ì!ìAÒÁÒÁäÁäÁÒÁÞAÒÁÒÁÒÁÒÁv"*ÂÀÁÂÒÁÒäÁä¡! b'ä!vÂÒÁÒAvÂÀáìÁÀÁÜìaUìáäáš`š è!ŽCÞLG£ 7„àÌà ¨aá”àøaøAøüøÁüð!üáK³ô8òA^!®VåÈÁèäÁÀÁäÁÒÁÒáÀÁäÁÒÁÒAìáìþa'ìAÜÁÞÁÒ¡0äÁÀÁ<åìÜáìa'ì!ìá*B*"äÁÒÁÞÁÞ¡"Ò¡0Ò¡"ÞÁÒ¡"¾¢0ÒÁÞÁä¡"ÞÜ¡"ÞAì! £ ì!ìÜÁÞÁÀÁ*Üáìáì!ÞÜ¡0Þ¡"ÒáììáìaUìáìAèÁ âÒÁÒÁÒ*¢!Ò¡"vÂÒÁÞÁèÁÞA*"Þ¡«ìáÞÁÒ¡"ÒAÞÁ"ÞÁÒ¡"ÒÁÞÁ ÂÒ¡0ÒÁäÁäáì* ¢!*" â+ì!þìá+ä ¢"Ò¡"ä¡"Òá cU #ìaUä¡!ì!ì¡!ì¡!*èÁäá Cì!ì!ì!ä¡!*âä¡!ä¡"¾¢"ÀÁÞÁèÁìáìì*B*"ìAŠ –ÀÞŽc°@nåvzCøáXááN¡¾Á ¨¡ºÁ ¼ÁN!áNà ¶AK#Wrÿ!äáœÒÒÁ2òŠAìAì!ì Cìáä¡!ìAÒÁ"*âì!ìáVÅäÁèÁÀÁÀ! ãì¡!ìì!ìaUìaþUì!ìáìÁÀÁÒÁÞÁÀ!ì!rÅÀá*âx*"ì¡!ÒÁäÁÞÁÀÁÒ¡"ÒÀÁÒ¡"Þ¡"ÞAè¡"ä¡"ÞÁÞ¡ ìa'ìÁÀáÜÂv"ì¡!ìáäárÅÒ¡0Þ¡"äÁÒ¡0Ò¡!ÒÁÞ¡ ÂÒÁÒAÞ¡"Þ!ìá*"ì!¢"Ò¡0Ò¡"À!ìáVÅÀÁÒÁÒáì!ì!*b'Òa'äáäÁÒ¡"Þ!*"ìAì!*BÞ!ìaUì!ì!ìá*Ò¡0ÈÁÀÁÒ¡"À¡"äþÁÀÁÒÁÒÁÞäÁ"äì!*¢!ìá*âxì!ìAì¡!Ò¡"Òa'ÒÁÂÞÁäá+ì!ììáäá| –  ®¡Ãú¡|£ZÀ7ü8úÁz£|£þ¡þð`r‹9KóháÈaVåÈ!ÞråìAì!ì!ä! £!ì!*âäáì!ì!*¢!ÒÁ ‚ä*"*"ì¡ vÂäÁÞÁÞÁÞÁÞÁÒÁèÁÒAì!è¡"äáìÜÜÁÒ¡0VÅÒ¡0Ò¡ ì!vBþÞìávBì!ì!ÞAìèáÒÁÒ¡"ÒÁÀÁìá+ìÁìÜ¡"ÒáìAì!ÞÁÒÁÞ¡ ÞÁÒáÀÁì!ì!ÞÁÒá £!ìÜÁÒáì!ì!*ÜÁÞÁÀÁÂä¡"ÒÁÒÁÀ¡"ÒáœÒÁäÁÞÁÒáì!ìÜ!ÞÁÒáä¡"Ò¡ Ò¡0ÒÁÒìAìaU<å+ì!ÞÁÀÁìä CèÁÞÁäÁÒÁÒìAÞÁÒÁÀÞA ƒ ÂÀÁìáìÜÁSÞÁþÒáÒ¡"VÅÂÒ¡"Þ¡ ÞÁäÁÂä¡"ÒÁä¡6¡ äá²Á©ú¡!ûÁ˜ÛÛùòA^a`®ÞA2’œAÞ!ì!ì!ìAììáVÅäá*"*"*âìÁÀ¡0äá+ì!ì!ìáäárå+ì*ÂÀÁÞ!ìá+*âÒÁÞ!ìáìa'ìáì!ì!¢"ÀÁÒAÒÁråì!*‚äÁÞ!ì¡!ÒÁäÁvBÒ¡"ÞÁÀÁv ¢"ÞÁÂÒÁÒ¡"Ò¡"Ò¡"ÒÁ"*ÂèÁÀþÁ¢0Üä!*‚ìá*"*ì!äììä¡"Üì!ÞÁÀÁäÁÒ¡!ÒÁÀ!ìáì!ìáÜ*â*‚Þ¡"äáìaUÞÁÂÜì*Bì!*âÜì*"*¢ èÁäáìÁÀáäÀÁVÅÒÁÞÁÞ!*"ìAèAì!ì!"Wìáì! #ìÒÁÒ¡0Ò¡0ÞAì!ì!ìAìì!ì!ì!WÒAÞAÞ¡ 6¡ äáÈÁŽ£Ü[â'>©òá^áÈáxÞÁþÈ!ŠAÞ¡"ÀÞ¡"ä<%ìì!ìÜáÀÁÞ¡0ÒìAì¡ ÞAì!ì!ìá+ìAì!v" # #ì!ÀÁìáì¡!ÒÁÒ¡!ìáìá*"Þ¡"ä¡"ÂÀ¡"¾ÂÒ¡ ì¡ ì!ì!ÞÁÂÞÁäÁ¾Bì!ìá*â*âìB*ìA ãìáì!è¡0ÒáÀÁvÂäÁÒAì¡!ìáìA*BÞÁv¢«ì*"ìAì¡ <%èÁäÁÒÁÞÁÞ¡"äÁÞ!ÞÁþÞ!*" ÜÁÞ¡0äÁr¥!ÀÁìÜì!ìì!ì¡!äÁ‚ÜÁäa'ì¡!ì!ìÜ¡"Òáì!Þ¡ ÞA #äáì ÒÙ³—îA{òL—Î8{ï쥳gÐ`:{òèÙ{g/=pöì¥ )Ï^NAÞ¥Ëö¯¥Ë—0cÊœI³¦Í›8sêÔÙ/=ZÙÀ‘»–Î^¶lôn…L'/dºwòä¥sÎ8{ôè¥ ÒWƒòìɳ—Ξ<{îÀÙ{2×töäÙKgÏ C{òÀÙ“ÇÕÞ;yé¸Ê{2½wéìi³çœ½wöÀ…¤'þÏ^:®é콓—θtòìÑKgï]Èwé쥳5]Ètö ¦³—ÎÃwéú¾ I/½köÒÙ{'ï=zàÒ…tGO^Åtòì³—Î^:{òÒ½“÷ÎÞ»¨ïÒÙKgÐ^:{ï䥳Ç0½wöÞÙ{'Ï8{é쥳—Î^ºQÙNHà¤ÃU:öUTï„ä=öd<ép•Ž=ò¤cÏ;é„T‘<¥R:ödõŽ=ï¤cÏ;!½“NHà¤R:öÈc8öÈcO:ö¼#O:ö¤Ó—=íÙ“N_ïÈ“Ž=︎=QÙóŽ=鼓Î;Al²„=ïdsS1Åì$æ˜d–i¦Mù¼óþJ6ãóN:ï8CŽ<ŤcO:QÙ“Ž=ïØóŽ=òd%Ï;ö¼“Ž<ïØcP:ö¤cOTïÈcO:ïØ“•<öR:éØŽ<ïØóWïØ“NH験Ž<ïpÅ)§!¥óŽè?Pàø#þ8>2ð àC þøÇ=Ìð~ ÀAÀGþQ„{˜¡§‹òéBB‹q\ãx‡=²Az8#öH‡=Þñ*{ÈÃé°‡;ÀatdÅàHGHèap¼Ãòx‡<ÞaWqEé°GEÞatØ#ïG:Bòw€ÃéG:ì‘®¤#$é°G:úòypŠ+±G:쑎¼CYy‡<ì‘{$!ᔄQâDŠ-^Ä80ß»W×ÈK'ï]¶lôÙ{'/ÂàäAyxB?;†6Ô¡®Ë=^AŠ’ãô G6Þ± @Ù#×=ìñ{€Ã×{‡=è!{ÈÃïG:ì‘{¤Ãk|Çõœ’ŽþëÉÃà8 8ÜayÐ#ö=äap¸Ãé°‡<èq½w¤Ãï°‡ìñ—ÙÌgFsšÕ¼f6ó8ï¸E6®1ŽŸ¼#ΰÇ2Àat\Oô‡=Þ‘{ÐÃàx‡=õy¼Ãï°Ç;ì{°äzòÀ©=Þ‘yÐ#öH=ì±Fy¬1öxG:®÷{¼þƒ%é°G:®÷ŽtØ#L‡=Þawȃò¸^:쑎ë­Ñé¸^:쑎ë¥Ãï`ÉÓatØãöÇ;ì‘{°äö8ìŽëýÄò°G:ì±F{¤ãz鸞;ÀawØcöxG:ìA{àÔé¸^:ìáyØö ‡=Þap\oé°Ç;®÷{¼ƒ%öHÇ;ÒazØ#LÇÓñ{ÈÃkLÇõÒa@¥Ãî‡=ÒqÀtØ#×K‡=Òq=w€Ãï°Ní‘{¤ãöxÇõÞ!5ÚãöX£=À‘{¼#öÇ;äápØ#ׇ=ä‘{Ðþ×{‡<ìñ{Èã?±G:ìŽwØCkL‡<èap\ïò¸^:ìñ{¸ƒòxG:ìñy¼Ã›¨B:äq~ Ù XÀ<Æ c!ðì8EúqŠ~|cˆ0C/ú±S¸Ãp†.þÑE˜‚ˆÀÃ6tÑfÞ÷Þ÷¿çq?ò!WPôïHÇ;²á {(ƒòxG:Þat¼CöHÇ;äAwØcò¸^:äap¸ãz,±ÇOäa–¼ã€à°‡<ìñyØCï8à;äq½tÈãöH‡w°‡t°‡t‡ëy{ð.{w¸žt°–H{H{y¸p°‡wHþ{x{w°pp{H‡ë‘‡ëI{{Hy°p°‡t°‡t{p§‡ëù‰ëI{H{H{H{{x‡ë‘‡w¸žt¸žŸ{H‡5{‡tx–p –°‡tp y°‡t°‡t°p°‡tx{H‡5ºžw‡w{H‡w‡ëIp¸p°y°y¸žtX#{w¸žw8 w‡ëI{w°‡t¸p8 yx‡w‡ëI{{{H{H{w¸y¸žt¸yp‡ë¡‡ëI{{H{H{p yH‡w°‡tX£J‡ë‘{‡wþ¸žw°‡w°y ‡t°‡t°‡t°‡w¸œ*¬t°y‚Nyxrà½~ˆSh2ë‡~ðб~б~(³~¾x”ÇyD³|H‡[¸†k ‡qH{ ‡lxd°p°‡w°‡5²–x‡ëY£t¸žŸx{z¸žt‡t°‡w¸p°‡t°‡t°yp y°‡w°‡wH‡ëI{x‡t°‡Ÿ¸žt¸w‡’{H{xÒZ£t°œ²‡w{{H{‡zy°z°y°‡w°p°‡t°‡t°@¹y¸žt°y°‡t‡w°‡­ºp°‡wH{x{‡þ롇t°‡t°‡t°‡t¸žtx‡ëI{H{x{p {H‡ëa‰w`‰w{xw‡ëy‡ë‘‡ëI{x‡ëI‡ëy@±z°‡t°z{p w{H{‡ë‘z¸ž5²‡Ÿ°w°‡tx‡Âz{Hy yH{H{HypŠw°p°y°y°‡Ÿ°–8 txyx‡t°‡t‡w°yتw‡t¸žw°œJ‡ëy{H{H{{xyH{H{ø {`‰wH‡ëI{H{H{ø‰rpHyxyx‡ Ø„%`‰l GÞ뇕РÇ|‡[ þ¨qx‡tr¸†w(§°‡t¸žt°‡t¸pp‡ë‘‡t8 t°‡t‡w°‡w°‡w°p°§°‡t°‡t{xyx‡t°‡t¸žt°‡t¸žt°œºp°§{Hyx{Hp°‡t°‡t8 pp‡ëw°‡t°‡t°‡t°‡Ÿx{H‡­’{H{ {{X#{HyH‡w°‡t°‡w°p°‡w°‡w°‡t¸ppz°‡t¸žt°y°yx{H‡5²‡t°‡t{‡5ºp¸žt°‡t‡5²‡5²‡5²‡tx{x§H{w‡wH‡ëI{Hpþ°‡t°‡tX#{Hy°‡w°–Hz°§°‡t¸žt°‡tX#y°‡t¸p°y¸p°‡5²p¸žw‡w{H‡w°‡tx{Hz`‰t` {X#{w‡w8 y¸žw°yX#{`‰z{wx{‡ëy{H‡ëI{H{`‰ëI{H‡ëI‡w8 wH{H{x{H‡ëI{H‡w ‡J{‡"è„&‡wp ý‡~ÐÙžõÙxì‡wx…k ‡k‡txg z@†w°‡t¸žt¸žwHz°‡w°p°y°pH{x{x{{x– yX#þ{x‡ë¡‡t°‡t¸žt°y{X£t¸p8 t°zxy°px{H‡’{x{x‡t°§°‡t8 œ²p°‡w¸žt¸y°y°‡wH{‡t°y°‡t°‡t8 t‡w‡t y¸žt°‡t°‡t°z°‡wH‡ë{`‰t°w‡J‡’‡’‡w°y°‡t°‡t°‡t¸žt°‡t°‡t¸žw°‡t°‡wH{p {‡ëI‡w‡ë‘{H‡ëI{xy°‡wH‡w‡w°œJ‡wH{H‡ëy‡J{xy¸žwHz°yHyp w{x{xþ‡t°‡t8 t°‡w°‡t°y°p°y°z°‡wppH‡wH{{x‡t°‡t°‡t°‡Ÿx–¸žt°‡t°‡wH{ppx{X#yx‡tX#{‡ë‡ë‘w‡ëy{x{{À){{xyH{xyx‡&Ø„&°y ‡Ÿeã6vã2Ëz¸h ‡tx‡t°‡lp†w(–x‡t°p°y°‡t {H§{{x{w°§°‡t°–°‡tx{H{x{H‡w‡t°‡t¸y8 pp‡ëù {z°‡wzp{x{ø {H{wþ°‡tÀ©ëI‡w‡’{‡5²‡Ÿ°‡t°‡t¸ž5²‡t{À)p°‡w°‡w°‡w°‡Ÿx‡ëI‡ëY#{xyH{`‰w¸žwp y°p°p°–ð.{ø y°‡t°‡w¸žtx{H‡ëù {H{H‡ëyyxÞz‡ëI{H–°‡tw¸p°y¸pp‡w°y°‡w¸ž5²‡t°‡Ÿ{x{Hyxy¸žt‡ëI‡w°§°‡t¸p¸pp{H{H{X#{{{X#{xz8 t¸y8 p°‡t8 t°‡tx{{H{H‡w°yp‡þJÒ’{H‡ëIp°§x{w°yx‡ëI‡5ºž5ºžt°y(‚MX‚tx‡k ÇkxãÅfìˇw …|‡q‡t ‡l dx‡t°y¸žt°‡t°‡wH{Ø*yH{pŠw`‰t¸yx‡t¸žt°‡5rp(,œ²ï²z°‡t¸y°zø {X#{x‡t°‡w°‡w‡z{` {H{x‡ëù yH{H{H‡ëy‡ë‡ëyy°‡w°‡5ú‰’‡ëI{`‰t8 tX£t`‰t¸–°w{X#y°‡wH{à­t°‡5*¬w°‡w°‡w°pHþ‡ëI{x‡t¸žt°‡5²‡w‡w°‡5²w‡t°‡w°œ: t°y°‡t§x{`‰t¸žwH‡ë‡ÂJ{H{x{pp‡w°‡t‡w°‡5ú {{ y°zX#{{{`‰t°‡tx‡t°‡t¸žt°‡w°‡tw‡t°y°‡w°pH{x{{‡w°m¸ž5²pH‡ëñ®Ÿ°‡t°‡tz{x{z°‡wH‡ëI‡J‡wH{pp°‡w‡wh‚N¨yxrð4£3ë†ax†9P5@‚6ƒõX—õY§õ5ˇw¸rþ‡]y h°‡bx{{H‡w{‡ëI‡ëI{x‡ëI‡w°yX#yHpp{ø‰ëI‡ëq yxp¸žtx‡Jœ’‡w°‡tx‡ëI{‡w¸pp{H‡w°‡tx{w°‡tX#{H‡w¸p°y°‡t°p°‡tx‡t¸žt°‡t°‡tx‡ëy‡ëù –H{H‡w°œ²‡w8 pp{H{{X#z°‡t°‡tx‡ëI{H‡w°‡w¸p°‡twx{{H‡J{w°‡5²‡w8 t°‡t°‡t°‡txz°‡w°pp‡Z£ëIþy°‡t°‡w°‡tX£ëI‡ëù {‡t°‡t°‡t°pp{x{{x{w(,yx{{Hyx{‡w¸y ‡tx{H‡J‡ëy{Hyx{H‡ë¡{H{H{‡ëI‡w°‡t°z°‡w¸žt(,yÒZ#y°y°yx‡t‡t°‡t¸žŸ°ï: t(¬t°y‚MX–Ȇ43.(³_ˆ‡y˜ƒ98$¸†8?àV8gø3؆ZGÿôWÿ6Ëyx’‡Ÿx‡k ‡w@{p yx‡ëyy°‡5{éìÙsŽ <{ïä´GÏþ8‚éÞÙK÷î¢<‚麗ÎÞ»†öÒ]´w‘`:{é‚#(ï]:‚ïì½#èœ=yöäÙ{—®aº†éÒÙKg/ÁtöÜKG0ÁwöÜ#˜Î^:{òìѳ÷Î=zé¾KGÐ^:{é콳眽tå…}w6=yågÏ8{éܳ—Ξ<{òÞ”wö½tïÒÙ{'ï=pö޵眽wC ¦#øÎž<{aí¥³—ΞMÄx6Úi«½vÚù¼sË5ä\3Î;ödC=ȼcO:K®œŽ;àØ_:ö¼c8öþ¤cÏEò¼#=$8C™Î’¥c8ö\´ä5ö¤³¤<öÈcO:K¾›=Βï¤cO:K^dÏEö€cÏ;éØŸ=Ù#Ï’ò,Ÿ=à,ùŽ;`¾3Ô™àØ“˜ò¼ã8ö¼“Ž=òØ#˜$_dO:K¦cÏ;ö¤#O:K¾“Î’ò\Û;験ÎEö\dÏ;ö¤óN:ì‘{¼CöG:ìñ{¼#ö¸È’èaØØãö¸H:ìñz€IïHÇ’Àñy,),ò°Ç;äŸ%¹öHÇ’Ü{¤ãéXRXÒat¼Ãéˆ=ä–wØCïÇ;ìñw€þLô‡=ÞawÈÃò“<ÞapØ#öxÇ’Ò!zØãöxG:Þaw€ÉôˆM|ìA%½ÃéxG:Þ„M4!ôÈÆ‹ÌPŒÉ¡†lÆ/¾ñ}˜ ¤xB?úQ3$ƒm–¼$&3™yÜ‚žÊ;²‘ yCï8Ü!‹œIKz‡=Òay, î°‡<ìñy؃±“<À!{¼îXR:²$pØãöÇ;†btÄæàpÇEäñ{ÐÃé˜ÀatØc(K’‡=äawØ#ö‡;ìñŽØ¤#>`JGXÞ±¤‹Ø#`Š=豤tØãþï°Ç;²¤wØî°ÇPì‘0¥ÃéxÇ’Òñ{€Ãï‡;–y, ö‡=Ò±¤t¼cIé°8À”{¤Ãé“<쑎%ÃöH‡=Þ!tØî‡=Ò&pÐãéS:ì!zØ#öHÇEb¦tØa¡‡=Þaw öH‡<ì‘{ÄLéx‡=Òñ{ÈcIàpÇ;ÀDw€ÃöxG:ÞatØ#òÊ;쑎°Øãò°8ì!{¤ÃïS:ìq‘tØã±YR:ìq‘tØ`’‡=ªÐ‰%Øãä€Q? ¡nhBÃ@E7IÙöãýþ-pƒ+Üá·¸Æ=.r“û |¤ƒθÆ8Æñ{ˆòÈǙޱ¤‹ÐöH‡=äñ{,,öH‡=Hv{Ìô°‡<Þ±¤wØãöx‡=Ò±¤t, `J‡=ÞawÐLï°G:ìq{€#ö‡=Ò¦tÈ#öH‡=Ò!´tØãéXR:ì‘{¤ÃI‡=Àat, éx‡=âctØãKJ‡=.bwÈ#,ï°G:–ôŽ¡¤ÃïX8Þ!{„åLé‡=䑎°¤Ãï°8Ò±¤tØCö‡=Ò±¤wØ#öH‡<Ü{¼Cö ‡=ÒawÄÆòXþR:–”y„Eé°G:ì‘{È#öH‡=Þ±$w€Ã×°G:ì{\$öH‡=ˆl°¤Ã±Ç;Òap eIï°‡<ì‘y„åöHÇ;ÒawÐã"KJ‡=Þ!wØãKJ‡=âc’Ùãòx‡=Òáp,é`zÇ’Àat؃dö ‡<–ôy¼ã›XBl®Ñ咻ܿ>7ºÓMÜ~¤ƒžÇ5.âŒlÈ£±¹ˆ<ì‘{¤Ca‘Ç;ì‘{¤ãöˆ=Àat¼cIà°ÇEäñŽØ,)öx‡=ÀáŽwØc(öH‡=äaw€Ãï°G:ìq‘tØ#ö¸Èþ’Ò±¤ØÈÃé‡=äñ{¤Ãàp‡=†bwØ#öx‡=Ò±¤tØãöH˜äAy¼ÃòXÒ;–”ŽwØöxÇ’ÒatÈÃ鸈=ÞapØ#`z‡=Àáz,)¡ùEì‘y,éöxǒ䱤¡Ø#öH‡<ìyØöx‡=Þa°Ø#ö¸ˆ=Àá{¼ÃéÇEìŽ%¥ãò°ÇEì{¤Ãò°8Üñy¼Ãï°Ç;–”Ž‹,éöx‡=ÞawØô°Ç;ì!w€I`Ê;ìñ{€ÃKJÇ’Þ!{¼Ãé°G:–”Ž%ÃöH‡=þÒašÛ#±IÇ;ì‘{¼cIC±G:Àáy¤ƒò°G:ØC:ØC:ØC:ÈC:ØC:؃<4A'4<¼C6¨V ^ ¹å=ÜÂ5\9¼C:ȃ'½ƒ3ÈÃ;¤ƒ=¤ƒ=¤Ã’\„=¤ƒ=¤ƒ=¼ƒ=ÄF:,‰<ØC:,I:„E:,É;ÈÃ;ØÃPØC:Ä=¼ƒ=¤Ã’ÄG:؃<,IlØ8€I:ØÃ;ØC:ØC:؃<¤ƒ=ć=ÈÃ’¸8œÉEØÃ;¸8,‰;€ƒ=¤Ã;Ø8ØÃ;ØÃPÄF:ØͽC:ØC:,‰<؃<ØC:ØÃ;ÈÃ’¤Ã’ȃ=ÈC:,I:ØCþ|ÈCX¼ƒ=¤Ã’ȃ=ÄÆ;,É;ȃ=¤Cl¤ƒ=¤Cl¼C:,ÉE¤ƒ=¤Ã’¤ƒ=ÈÃ’¼ƒ<\D:؃<¼C:؃<,É;¤Ã;ØÃ;؃<,I:¼˜€Ã’„E:ØÃ;ÈCX,I:؃<ØÃ;ØÃ;ÈÃ;ȃ= …=¤ƒ=¤ƒ=¼ƒ<„…<¼C:ØC:ØC:¼ƒ<¤ƒ=¤Ã;¤Ã’¤ƒ=„…=¼ƒ<Ø8,‰<¼ƒ=¤Ã’¼ƒ=€ƒ=ȃ=Ѓ=€ƒ=\„=¤ƒ=¤Ã;ØÃ;¤Ã™¤ƒ=¤ƒ=¼Ã’„…=¼ƒ=¼ƒ=ć=€ƒ=ÈÃ;ØÃ;ØÃ;ÈÃ;Á&T<¼9øæ¤Nîdºåþƒ<Ü9\9 …<\C6¤C1Ѓ=¤ƒ=€Ã’€ƒ;ÄÆ;Ø8ØC:¼ƒ=€ƒ;ØC:Ć=¼Ã’¤Ã;ØC:ØC:ØC:¼Ã’€ƒ=ȃ=¼ƒ=¤Ã’€ƒ;,É;Ð\:ÈÃ’È=Ø9,I:,I:ØC:ØÃEØC:,I:ÈÃ;ØCXÈÃE,I:€IlœI:؃<ØÃP€I:ØÃ;Ø8,‰<ØC:ØC:ØÃ;ÐÜ;Ø8ØC:¼ƒ=¤ƒ=¤Ã;ØÃ;¤Ã’¤Ã’¤ƒ=ȃ=¼ƒ<¼C:ØC:¼ƒ=¤ƒ=¤ƒ=€ƒ=\„=¼ƒ=\Ä’\8¸Ã’¼Ã’¤ƒ=¤Cl¤ƒ=¤Ã’¼ƒ=€ƒ;ØÍþ½ƒ<, 8¸ƒ=¤ƒ=¤Ã’€ƒ;È=ØC:\„=¼ƒ=€ƒ=\D:؃<ØC:ØC:Ø8¸ƒ=¤ƒ=¼ƒ=¼ƒ=¼ƒ=¤ƒ=¤Ã;Ș¼ƒ=¼ƒ=¤ƒ=¼Ã™¤Ã;Ø8ÐÃ;Ð=ÈC:¼ƒ<ØÃ;È8¸ƒ=ȃ=¤ƒ=¼ƒ=È=,I:ØC:ØC:¼˜ 8, 8ÐC:¼C:ć=¤ƒ=¼˜¤Ã’¤ƒ=¼ƒ=¤ƒ=¤ƒ=ȃl¼C:dO†©˜ŽipåC:¼Â5Ã5ÃEˆ= ƒ<¤Ã’ÐC:„Å’¼ƒ<؃<,‰<Ø=ØC:, 8ØÃP¼ƒ=ÈC:ØC:ØC:,‰<Ѓþ<ØÍ-I:È=ØC:, ÍÙ8\„<¼Ã’È8ØÃPØÃ;Ø8ØC:,I:\„=¤C|ØC:ØC:,I:\„=¤Ã;¤ƒ=€ƒ=ÈC:,É;Ø8¼ƒ=¼C:Ø=¤ƒ=¤ƒ=¼ƒ=€ƒ=¤ƒ=\„<؃<ØÃ;ØÃE¤˜ÈÃ;Ø8ØÃPØÃEØC:,É;,‰;€ƒ=¼ƒ=Ѓ=¤Ã’¤ƒ=¤ƒ=¸8=€ƒ=ÄG:, 8ØC:,I:È=,Il\Ä’ÈCXØ8ØÃE¤CXØC:¼Ã’ȃ=¼ƒ=„El,I|ØC:ØCX؃<Ø8ØC:ØC:ØC:,É;ØÃ;¤ƒ<€ƒ=¼C:,þÉ;¸8Ø8\„=È=¼Ã’¼ƒ<¼Ã’¤ƒ=¼ƒ=Ѓ=¼ƒ<¤ƒ=¼Cl¼=€C:,É;Ø8,I:Ø8, =ȃ=ÈÙȃ=¤ƒ=¼ƒ=™<ØC:\„=¤ƒ=¼ƒ=¼ƒ<¼ClÂØÃ;dƒºÍ&ô™ —.ðÃ-”›.˜?ÜBqé?Ü‚¹iCW$½Ã-x‘½ƒ3Ã;ÃEÈÃ;ØC|¤ƒ=¤ƒ=¤ƒ= …=\„=¼C:Ѓ<€ 8¸ƒ=¼ƒ=¤Ã’¤8ØCl¤Ã;ØC:€ƒ=ÄÇ’¤ƒ=¤Ã;,‰;ØCl¼C:,‰<, 8¸ƒ=Ș¤˜€ƒ=ȃ=¤Ã;ØC:þØC:€Ã’¤ÃEØÃ;È=؃<¼ƒ=¤Ã’ȃ=¼ƒ<,É;ØC:\„=¤ƒ=ȃ=¼ƒ=¤ƒ=¤ClØC:ØC:€ƒ=™=¤Ã™¤ƒ=¤Ã;Ø8¸ƒ=€ƒ=¼=؃<¤ClØC:Ø8¸Ã’¼ƒ=ÈC:ØC:¼ƒ=ȃ=¤˜€ƒ;„…=ć=¤ƒ<ć=¤ƒ= …=¤ƒ=Ѓ=ÈÃ’¤ÃEØC:ÈC:ØC:ØÃP¼ͽÒ¤Ã;ØÃ;ØC|Ø=,I:¼ƒ=€ƒ=¤ƒ=¤Ã™ÈÃ’¤8€‰<И¤ƒ=¤ƒ<¼ƒ=¤ƒ=¼C:ØÃ;ØC:¼ƒ<ØC:ØC:ØC:,‰<Ѓ=È8¸Ãþ’ÈÃ’¤ƒ=ȃ=¤ÍÉÃP¼ƒ=¤Ã’¤Ã™¤Ã;؃<,I:ØC:,I:؃<A',Á;؃3Ðpõƒ'¨‚'ð6`6<ˆàÃpA üƒdÁpðÀˆp݃>lÁƒ¤>˜A¹=A?ðƒ=tB°€0×àƒ<È-$@?@ˆ?ìôÃtB°€0üÃW>ÐÃ+t 9\Ã;È9d=8Ã’¼ƒ=ÈC:€I:,É;Ø8ØC:,É;ȃ=¼ƒ=¤Ã;„…=€ƒ=ÄǒЃ<\„=ȃ=„…<؃<؃<€ƒ=¼Ã’¤ƒ<¼ƒ=¼C:ØÃEØC:ØÃ;ØþÃ;ÈC:ØC:¼ƒ=€ƒ<؃<,I:€É;,‰<ØC:€‰<ØC:¼ƒ=¼ƒ=¤ƒ=¤Ã;ÈC:,I:ÈC:,I:ØC:؃<¤ƒ= Å’¸8ØC:€‰<œI:ØC:Ø8\˜Èƒ=¼ƒ<ØCl¼ƒ=ÈÃ;Ø8¼Ã’Ѓ=€Í¥˜¤ƒ<¤Ã’¤ƒ<„…=¼ƒ=€ƒ=¤ƒ=ȃ=€˜¤ƒ=\„=ÄÇ;ØC:ØÃ;€É;¸8ØC:ØC:€É;Ø8ØÃP,É;¤Ã;€I:¼ƒ=¼ƒ=ÈÃ’¤ƒ=¤ƒ=¤Ã;¤ƒ= ŒЃ<¼C:؃<¤ƒ=¤ƒ=¼ƒ=¼C:,I:ØÃ;ØC:,‰;€Ã’þ¼ƒ=¤ƒ=¤C%ƒÉ;¤ƒ=¤ÃEÄÆ;؃g/I:, 8¼ƒ;€C:\„=¸8؃;€ƒ=¼ƒ;€ƒ=¼ƒ<¼Ct¤=dCq™-Ђlõ…_&üƒ>dÁ?h@??ôÃðCÔÃ?Àƒüà PBØ.<€)tƒ7<Á À´ÀƒÌƒ<ÈÜœàà?Ô $ØÁ)xÁ?œÀ?ôÃôÃ=˜Áƒ`‚ˆÁ?,À=˜Á"(B?A?ÈVA?È6à?<ÁqåÃ;Ü‚'‘ÃPȃ3dƒ<C:ÄÆ;,I:€Ã’€ƒ;È=,ÉþPØC:¼ƒ=¼Ã’¤ÃEИ¤Ã;ØÃ;¤Ã’€ƒ=¤ÃEĆ=¤ƒ=ȃ=¤Ã;ØÃE؃<,I:ØC:¼ƒ=€ƒ;,É;ØC:,I:, ͽƒ=€ƒ;€ƒ;\„=¤Ã;ØC:Ø8¸ƒ=ÄF:ØÃE,I:, 8Ø8¸Ã;€˜€Ã’¤Ã’¤ƒ=¼ƒ=Ѓ<¼C:,I:ć=\„<Ѓ;,ÉPØC:ØCl¤ƒ=¤ƒ=¤Ã’ȃ;ØC:\DXØÃ;,I:€ƒ=ȃ= Å’€=¼ƒ=¤CX,I:؃<ÐC:ØC:,I:¼˜¤ClØC:¼ƒ=¤ƒ=¼ƒ=Ѓ=¼ƒ=€ƒ=¤Cl؃<,I:ØC:,þI:ØÃ5؃<¤ƒ=€ƒ;ØC:ØÃ;Ø8,ÉE,I:¼ÍÙC:М=€ƒ;¼Ã’¤8؃<Ø8¸ƒ=¤ƒ=Ѓ<¼ƒ=€ƒ=¼Ã’€ƒ=ÄF:¼ƒ<ØÃ;€ 8؃<¼ƒ=ÈÃ’€Ã’€ƒ;Ѓ;Ø=€É;, =¼Ã’¤˜Èƒ=¤ƒ=Á&,=¼9Wüƒ@H?èÃ%LåÛÀ/`ƒ><Á?Ô@4><È5€üÀƒœB>˜A?XA|„Á?Á=„Á?ðÃ|AüÃW>ÐÃ+\9\C:¼ƒ¨ñÇž'úyâŸ'>Ä' úyŸ ü9á3ü£žnÎxâCTЧŸžø3Úi¡èéG|ð|ˆ„èç~Èq%ŒþTá‡wP¨ÇŸž(ÑÑò‘ç–kÈ!'pÜq&›wбçtÞ±zìIG-äÑé{Þ±'„è±§£w4z'pÜÑ(yìI!µìÇžwìIç„ÀÑH£tÔ²'=zì‘Çžw’ÇpÜyÇžwä±G{ÀqÇžtRK#y:ÒH„Ò±G-{Ò‘ÇžwPµ'„ä±ç{Þ±:Ò({ÒyG£tìy¡tìÇìQ˵ґç¢Çžt@²wìyU{ÞÉpܱç{ÒÇÒA(äA(„ÒyÇyìéHžwìIç{Òфޱç{Ò±'þ{ÒyÇpܱ'{ÒA„ÒAwÞ±{ÒKÇžtÞÉžtÔ’GÙtìéH{Ô²çyJÇžw4zÇžt4JÇžtäIÏžwìQ ¡tìÇ{ÞAèzäA(yì b“ ræQo ±ŸòAÃtÓ'$•„¸§˜ö1E—-Ìà¦~1ƒøñàŸkÎæŸELñ?¸Ñå]þÑåÃ}Ì0C‘\øAÄnø¹åŸvêØÄ]>äǃ~>ü‚”}ªp&‹,nYæ aü¹&‘Dø¹…ŸUnÉâ tö¡¥Ÿtá}ТÑ»Å7>ð¹åã´p9:"{dƒô`þ84¢y¤Ãò°Ç;@BpØãé°‡ZÒaw Äà°8BwØ£#I‡=:‚¤!ï°G:t"µ¤Ãà°H"„¼Ãà°Ç;@B„Èãöx‡<ÒwØÃàG:쑵häé°G:Þ‘{¼! ±Ç;äapØ#öHÇ;Ü{¤C#ÑÈ;Ò!w€!A8ì¡„ÈÃjIBÒ¡‘t D- y‡=Þ!z äöx‡=Ô’thäòx‡=èñ{¤!àHÏ;ìáp¤!ï°G:ì‘{¼ÃïHÇ;"{¤Cq8ìñŽt öx‡=þäayØC-é°G:ì‘{¤Ã ш<ì!thD-ö‡=À¡‘tØ#î‡=ÞpÈ#öxG:쑵¤Ã¨JBÈapØ#öx‡<ì‘{¤Ãé@8ì¡“wÈÃàÉ;ä‘{¼CïðÁ&šðzCŸóG>üá•¢ýpT?•Q€¨!êÇ?úñ~ü£%êÇ?ú¡À~ôD=E‰\ñˆô£D) ‘?@4Ô~8ª!òGI?Ô|ȃ×pF:È¡–l\ãÊ G:ìAŽwÈÃï°G:ì‘{¼C'‡;ì¡y¨Å:¡‡;ìñ{¤!à@84þÒ‘wØ#ïHBÒñØãò ‡=@"tØ#ï°Ç;’ŽwØ#òxGfA‚tØãÊ’BÒ!pØ#ï‡=Òaw€$òP‹=ÒayÐÃéPHìÑ„¤yBèay $ö‡=Ò!{¤Cï@È;ì‘„¤ã‡;ä¡{¼CIÇ;’ $IÇ;4"wÈãòxG:ìᄤãöB:ò„¤!àpBÀaµØã ±=ì!{€Ã:‘‡=ÒaµÈ!ï@HìwØC-é°GG’p¸!àp=ìÑ{¤Ãï°HÞaþyÐà ÑH:’{¤!jAˆ<ò„¤Ãï°8’{€äöx‡=tbØ#öH‡=äQ…N,!ï¸Vá ¢¡ÆDý 3ˆ† ç~”¨Žê‡úqgAc5ïx9Æq޼#ÙG1Òay D-é°Ç;ì¡yØ£#IBÒµÈãö‰=Ô¢“tȃîG:âph$ï@È;Òt¼Ãò°8òy¤ÃòHBÞapØ#öH‡=ÔbpØCj‘G:ìy؃ö‡=Ü„¼!ï°8ì‘{d6yG:Þ!tØ#I‡F:bþt¨Åé°8ìñŽt $ò°Ç;ìÑ{ÈÃàHBÞw $öH‡=Ò¡{¤!ïèÈ;ìµØ#òp84ò{ÈÃïЈ<ÞapØãöH‡=ÀatÐ!ò°‡<ì‘{¼CéyHtbw¤Ãà°‡<ÒatØãî‡=Þ!zØC-ö‡=äñ{¤CYé°=ìñ„Ý ±HÒtØ#ö‡=Ü{¤'öèˆ<ÒapØ£#öx‡=äat $IO:ì‘{¼CïÂ&– røãQ÷üçAzÑžô¥7=ˆòñŽW\£RéÇ;²AŽwþ(ãé°G:4w $öP BÒ¡{¤!é°Hìñ¼!à ‡=äñ{Ð!ï°=ì!tØ#ï°G:’{¤Ãé°‡<쑤ãI‡=ÒayØCï°G:ì‘€Äï°G:tÂÞAÔÂèÁ:ÂÀÁì4ì!=ÀA#ÀÁìA-ì!4âì!ÔÂäA#Þ!ìì!ä!ÒáìA¢#ì!ìáÒÁÒÁÒA#ÒA-ÒAYÒA#äA-ìA'ä!ì!ÔÂÒäÁÒAèÁäáB"äáäÁÒAì!”þ!ÒAÒÃÞÁèÁäÁÒ!ÒA#äA-äÁÒÁÒÁÒÁÔÂ:âì!Ô$ÒAYÒáì!ììáÒáìÜ!Þ!ä!Þ!ÔÂÒB-ì!ì!ìáììáäÁÒÁÒ!ÒÁÒA#ÒÁä¡:¡ ìA²áô|ñ1…Qôò^¡RÒÒÁœ!è¡äÁÀÁ:ÂèÁÀÁäÁÒÁÒ!ÒA#ÀÁÒÁäáìÁÀÁ@B'ÞAÞÁÔ"ì!ÔÂÒÁÞÁÒ!ÀáììA-@âìáìáì!þììAì!ìA-Üì!ìáì!ì!ìáìA-ÒÁÒ!Ô"B'ÞAÞAÒA'Ò!t"äA'ìáìAì!ìA-ìÒÁÒ!äáÒáÜ‚ä!ÒÁÀ!@ÂÀÁäÀÁÒ!Þ!À!"ìáÒÁÀAì$ÜB-Üì!"BìAìAÞ!ìÁÀAÒA-ìáìáÒ!ÒÁ:b1"ìAì!ìA-ì!ìáììA-ì!âÒ!ÒÃÒ!ÔÂÒÁäÁÜìa1"ÞÁèAþâìA'ÞAÒÁèì¡#ì!Þ!ÞÁÞÁÒ!ÒÁÞÁÒAèAìAìì!B-ÂÀÁÞAÞ!6a Òᮡ€‘°aÝó=áóóòá^áœ!ÆA-ÈÞ¡äA'4âäA'ÒáìáÜìAÞÁÒÁÞÁè!ì!äÁÞÁÒ!Ô!Òáì4ÜÁèÁäì!ìáìáìáìÜÁäÒÁÞAÆÐÒAÞÁÀÁäÁÀÁ"ÞÁÒ!ÔÂÒáìáì!ìA-ì!ìþAâìA-äÁÒáì!ì!ÞA#ÔÂÒa å!Þ$Ò!äÁÒáì!tÂÒA'ìáÀÁÞ!BÀAYÒ!Þ$ìA'äÁäÁè!ÀÁ"@B-âäAYäÁÀÁì!ìÁèìáB-ÀÁäÁÒÁÒÁÒAÔÂÒ!ÒÁÞÁ:ÂÔÜ!ÒÁÒÜÁäÁÞÁÒÁèAYÀ!ÒÁÒÁ:ÂÒA-ìáì!ä4"ì!ì!ì!@âì!ì!ììAÞ$ÒÁäì!Þ!ì¡#Þ!äÁÒÁþª`šÀÒ>@ï0>Dö!t ò Šü¡@Äö ê¡ôøÁâ3eK/è*åÞ!ìÈÁÔ"Ô$Þ!ä!t"ì!äÔÂÞÁÀÁÞAèB-ì!ìAì!"B¢#ìÞA:ÂÒÁÜì!ìá4âäÀÁÞÁÀ!ìá:ÂÞ$ìä!tâìA-ì!ì¡#B-ì!ìAì!ìÁÀÁ@âäÁÀÁÒÁÔÂÒA#@âÒ!ÒÁÒáÒáÒ!Üâä!þ"ÞÁÔ"ìáÂBì!äÁäÁ:âì¡#ìáäA-ÒÁ@B-@!ÒáìáÒÁÒá"ÞAÒáìA'ììáÒ!ÜìA-ìÁ"ÞÁÀ!Ü"ì¡#ì!ì!”Å"ìá”%ììáì!=:!:ÂŒN#äÁÒÁÞÁäá:âì""ì!ìA-äA'ì!ì$ÔÂÒa ;ÂÞÁÞÁ¡ ìA²áó¸à e^àF€0áþÁ„€hAüð€P@DÁ>$ÞÁŠþÁþ!øð@NÁ®á ¶!zÁÀåá8ŽåxŽé8Žóá^áÈaÆ!Þá²áŠAìá"ÞÁÔ!Òáì!âì!ÞA4"³tBì!ì!ììáì!ÀÁÒÁÀÁìáìáìAB-äÁè!ÒÁ:!ÒÁt!tÂÒ!ÀÁ"ÞAâì!"ìá4"""Þ!ÞA'äáìáìA'"ì!Ô®!Ò!ÒA-”åìA-tâÒáìáÒ!ÀÁìA-ìáÒÁÔBÞ!þ:ÂÞ!ÀA#ÒáBììAì!ì!=ìÜA#ÒÁÒ!ÀÁ@"ìAtB#ÒAYÒÁÞÁÒáBìAÞÁèAì4"ììì!ìA-ì!ì!ì!Þ!äÁÒáì$"ìá‚ì!ì!ì!ì4â4BìììáìÜÁÞÁÒá"tBÞAì"ÀÁÒÁäÁÒÁÒÁš`š@-²AŽÍ Ì Dúá¦` è` >Dî! „ X@ü2ÀúáðA >äÂà¬Zàþž€þü!ð!þ¡îÁ ú¡Žy»·}»Žû!ìœÆ¡#ä²áœ!ì!ì!ìÁäÁ®ÁÞÁÜìá@"¦[Þ!ìAÞAÞÁÞ!ìáì$ì!¦ÛÒÁtÂÒÁÞ!ìA-ÒaºÓA-ÒÁÞÁÞÁÞ!ìAÔBÔÂÒÁÞA'ì¦;ìA-ìÁÀÁÒÁÞ!ìÒÁÒAìÒÁÜÒÁÔ"ì$Ô"äæ{ºßÁÀáìáìAìÁÀÁÀÁÒÁÒaºÁa¾ßaºÓA'ÞaºÓÁäþÁÀÁÒaºÕbºÓÁäÁèÁÀaºÓÁÒ$è!ì!ì!ìAìA'ìÒÁÜìáèA¦[ŒÎÓÞa1§ÛÀaºÓAÒÁÞaºAB'ÒÁÀaºéAì!ìáÒÁÞÁÒÁÔÂÔ"¦;ì!ìA-ììAÀ¡#äA'ܦûìA'ÒÁÒÁ:ÂÒA'ìAìAæ;ìáìÁÀ!ìA-ÒÁäaºÓaºÝìA-ÒÁÞÁÞ¡ 6a äáœAŽÏ€Š!DúÁt Ýu 0þAî¡ „ °øŠúáþö¡úáî! üá îÁ üá þáÀüàÌàžàÌà·1>ã3>Þ!ü!ì!ìáœ!äAäÁÒÁÀÁÒÁÞÁäáìA'äá¦;ì!ìáì!ìáìáäÁÒÁÒÁÒAì!ì!ìáÒA-¦;¦;ìáì!æ[ÞÁÀÁì!ìA-ì$¦;=ìA-ääáìáÒÁÒáèaºÁÁ¦[æ;ìAìáæÛäÁÞÁÒa¾ßAèÁÒÜ!ìátÂÒÁÞaºéÁtÂÞÁÒÁtBìáììAþÞÁÒaºÓÁÒÁèÁÞ¡#ììáìÜáìì!ìáììáìáììAì!ìáìAèÁÞaºÓ!³Òáæ;ÞÁÞÁÞÁÞaº;bºéAìáìáÒÁÞ!äA-ì!t$ì!ì!¦;ìÂÞ;{öÒÙKg/ApöÒÙKGPž=yôìÉ“÷Î=yéäÙK÷Î^:{éGtöÒ½#˜î=zåÙ{g/½töÞù´Gà;{é쥳WdÓyöÈý{ 5j–[ýúAíW¨Pª¬“=û'_!YTr#ŒЧýþ5ÉB¬ˆøÂü{òŒ<øÂü{Âï„©¨„ >Œ8±âÅÉ|GŽÜ²lää-gOÁwöÞÙGð=pöÒÙóiïí³÷NžÏt&ÁL÷.½tÁÙKgO=‚ï콓g/½téì¥#xÑž¼wöÒÙKg/ÁwéL¦{—Î8{àì¥#øNÞ»töÒ|G ¼wòLÚKgO:ö¤cÏ;öøôŽ=ò¼“Ž=験Î;öød=ô¨dÏ;ÔÙ“Ž=ò¤cO:ÑcO:öXøŽ=>¥C<ÊcÏ;ö¼CO:ö€cÏEïØã“=éä“=ïØCAéþN:ö¸A>ÑŽ=ï¸Aï¤C<ö¼cOò¼#Ï;ö¼cO:öÈCP:ö¤cO:ö¼cO:öÈCP:ö¤£R:É“Ž=>”Î;òØóŽ=ïØÎ;éÐ#=éØŽ=éØã8éä“<ïØ“Ž=éØ#O:ö\DÐ;éØã8ö¼cÏ;MtRuÙfX?OM‚+*“´óL7ÿ°ðT?ÿôCëSýôU?QõU?OõSl´ÒNKí´ù¤ãL>ö¤Î5ÎdãÌ;Ì\”Ž<ö¼C<ô¤#Ï;ÚóŽ=é¼c8öX˜Ž=験Ž=锎=ôØ#Ï;ÙŽ=éÐcO:Ž;öþÈcÏ;験Î;ò”AéØóA験Ž=é¼cO:ö¼cO:ö¼sp:,…ôØóN:ö¼cÏEö¤Ž;ö¼cO:¥#‚½cÏ;ö¤óAòø$A>Ù“Ž=éØãÓEïØ“Ž=ïØóŽ=ïØã“=àØ“Ž<ïÈ“Î;ö\d‚éø¤’<öÈcO:ôØ“ŽJö¤cOéŽ;¥cO:ö¼c<½CÐ;¥c¡=ïØCO:òØã“=éØóŽ=Ù“Ž=ïØŽ=ïØ“AéØŽ=òØŽ=*cÏ;ö¼c‚ï€c<ö¤ãAïØ“Î;ÉCÐ;½#…ö¼C=ö¤c<þï\dO:ö€cOö¤cÏ;éôA験Ž=Al²Ä;ö8S-TývJ0ùÿÀ €ù°8Br@ÃÙ G1ìñ{¼#öHÇEÞay؃à°uF{Ðy‡=Àaw€ƒ òxG:’yX(öÇ;ìw€#ö Ç;äá“tØ#ö‡;ÀawØöx‡;ÀatØãé°G:’{¤ÃïHÇ;Òay,ïP =Òñ‚¤Ãé°8B{€ÃïHÇ;’‚¸òp8ìñyØ#ö¸ˆ=Ü‚Èãöx‡=.bŸ¤Ãï È;ì{þ¼Ãò ˆ<ÞAtØCöH‡=Òñ0‚¤ÃòH‡<|bw$öx‡<Ü{ÈÃé È;ì{ø$öHAÞat؃:ò°Ç;ä‘{¤ƒ é°G:ì‘{È#öp8ìñ{\„ é°G:ì{ȃ é ‡<ìñ{XÈî‡=Òq0wØ#öHÇÁÞ‘{¤ƒ éG:ìñ{øÄòx‡=Þ!Ùãé H:쎃¥ƒ é°ÇEìŽw؃:öx‡=ÞáƒMdáôÈÆ Ó—Êt¦4­V>ä‘ ‚€#ä€9²ñdÈãöxAÒAŸÈÃò ÇÁ¨óŽ‹XþHöHAÞAt€ÃöG:’ŽwØ#ï°G:èazØCï°G:–{¼Ãï H:ì!{Èãaàp‡=ÞApÄ'‡=¨“‚¤ãòx‡=ÒapØCöH‡=äawØCö‡=ÒapØCé ˆ<ìA{ÈãöHÇ;Àat؃ö Ž=ÒatØ#{‡=¨ctØã"öH‡=¨cw¤Ãï ‚ìX{\Ãï H:’{¤IÇ;–ŽwØ#ò°G:ö‚PÇé°Ç;‚¼Ãé°‡Oìñ{¤Ãà°‡<ìñ{ÐCöH‡=¨#wØ#þI‡<ÒAt\Ä'òð‰=äaêØãò°Ç;ì‘{\ƒ é°G:ì{¼Cé°GÞäñy,ï°Ç;ì‘{¤ÃI‡=ÒapØî°‡<Üaw$öH‡=‚Љ Øã䨩•¯ŒåšæƒÎȇ=ä1Žk #Ù ‡3ÒatØAä°G:ìA{PÇà ˆ<dpØã"é°G:B{€ƒ àÇ;ì!wØ#öÇ;äayØ#ö AÀaw؃:öG:Þ!wPÇô°8ì‘yØ#öÐF:ìA{Èãaà°Ç;ìñ{¼Ãò°G:ìñ{äíþé°‡;ÀayØ#öð‰<dtØCöp=ÒaŸ¤ã`ï°‡ð®atØÃà8X:ìA{¼ƒ é 8쑎w¤ƒ é8Ø;ìñw€Ã'é°Ç;ìAyØñI:’{¼#ö 8ÒatØA‡=äa¡tØ#yG:ìñw€ƒ ò°‡Oìqw€Ãé H:ìñ{È#ö‡=Àñ{¼ã"öx‡<âp$‡=|Bp¼Ãà ˆ<’{¤Ãé°Ç;Òaw€ƒ:s8ìñ{¤Ãï°Ç;ìa! Ù#öx‡=ÜŽtØãöxG6±„tØþ6†1Œ, ~ð̇=œ‘{¤ãäp†3È‘ŽbÈÃé°G:–‚ø„ ò°G:ì‘{\„yAÞq‘wØÃBò°=äñŽƒùÄ>I‡<|BwØCö Ž=ÞatØCyAÞazäòx‡=ÞAw$òx8Üa!{¤Ãé°G:ì‘{¼Ãà°Ç;.BtDöH‡=ÞAp¸Ã±G:ÞAwØãöHAÀ!é`éð0ï`é@ò`×`ï`ï`éà‘ö ö ‘öööðãî ï`é`!ò`é@éð0þÔA‘ï  “‘>ñò`à`é@ép0épé`éà!öà‘>a>aò@ö ööö@ö@ö ‘"öàCö‘ñî@ïð0Ôq0éàñööp>aï`éðô@épöPÐöðä@“H‰ÿ0 ýðá OÁ·ðüp “È·  •hŠOÁ·pŠ«ÈŠ­èŠ­Øù`×@ï@×  dFÈ`à`é`é à@>aî‘£ï öààöpöðòðò@þà`é`Ôñé`é@ïð0à`ï é@àp0ïïöàéðò‘öðö>ab>‘ööö >qôöðé`ï`ï ööòööáöööðò@î‘öðööðöðööðööðé`é`ï@ö ö@ò@é`éÀƒ“ööðö‘ïpà>aïóöï é@é@ò@ò@Ôaï é`ï“öðé`é@àþáà@ï@îöðöñöàöÀƒöðöö ö é éðöðé`òöö@ö*‘öñép0îööÀƒaï é@ïñòðA° Mòp ýÀŠ“8 É üÐ ÃðøOÁï0‰øé“ˆa0žç‰žéÉŠùPÎ@éãà Ùà ïP ô@é@ò`é`é`ï`!ö >‘öï`éðö@áñöö ô`éð0é@é`ààÔaaïpôpàp0ï`þép0ï`ï ‘a!óéàö öðööà‘öðööðöï`ï ï`bòðöööðööáöò“öî@a!öðöï`é@é`ï`ï áéðò`ò`éð0é`éðööpï ïö@óö >Aé@à`òð‘ï`éðé@é`à`ï`ï`éö öðò`Ôq0é@òòðö@aò`é`à`òðé`éðöö@þöö ö ï@à`ô öï`ò@öðöö@ï`>‘öðö@“ööööðö öðé`é`òЋ°öðä žÿ` ÜÀ ɰ ¾ðûÀgàø`OPD Ý€``OpPJðE` ðü€ß Op(p-pf±=ë³ã™ò@ö`ò× Î@ô  ïD òöðé`é`>aà@´öD›Dëé`*‘ööðö ï`òö öö ]ké`é`ï`òþðò`âà`é@´é`é`ï öDûòðîé`é`ò@´é`ò`òеé@´é`ï`é`ïööðññöD+ööD é`é@´ï`>‘ö D›òðòàé`éеîé`é`ï`ïààеòðòðò`àööàöðöàöàà@´ï`ô ï`é`é`é@´òö ô öðˆeòà] D+D›ö ]›D˃öööðé@´é`>aÔaé`ô þöD›D›öðöðöðöà*aô ï`>aé`ïöðö ïöD›ö à@´ô D+öö öD+ï ïаé Ù žþà ܰ É€¾ðø°ÿðø`OðøÐVÐó`OpfðO°[ðBØ€úðþðÿð÷`?+É“Lù ä@´àä Ùà ïP >aò@´ï`>A´*Aö@öpöö öðööö öðéðé`à`ô é`‘òÀƒöðò`é`ààþï ï ï@D öï`é`é`ò`é`ï`ï`!ö ï`é`éðéðòðÔaÔaé`à@´é@´ààöï`é D+ï ööðö ]›ààï`é@´éàööðö ï`>‘à€·öööðD›à@´ààï@´ò`ï`é`é`à`ò`ï@´ï`éð*ѵé`Ôöàöò€·àà] ò@ö é`éàö>‘]›D+ö öðé`yC´ï`ï öï é`éþ`éðöî`éðöööô D›öðò@´é`ààöðöà`òàò`!é ïD{é`!ï@´é`ò›Ðöðα™À ÔÉ Æð÷þp÷Oð÷`n@ Ø`_€aðOÀ(ÐðßÐLªðÿðþðøÿÞá-ÞãMÞåmÞçÞémÞùð×`ôïp Ê@Ù@È`*áà`é@´ïöpïD+ï ö@é`é`ï ö Dûòе"é`ïpï`é`ò`à`þé`ò@´ï`ñöðé`ò@´îD›öï`é`é`ï`é`é`<صéе>aï D›D›DûD{öé`ï`>‘D›öðòðé@´ô`ò`îï`ò`ï`é`é`î]ké@´àðé`é@´é`"ô`ï`ï ïöðöD+öï`é`é`ò@´òðòé`ï€çé`òðööðDûöaéðòðD D›]›ö@Dû‘öðò`à`ñööðþòðé€ç>A´éеà@´é`ï`"é`ÔA´ï öé`ô@´é€çöD+ïö ïDKöðD+îöðòðM°Y ô@ê=ÞDz É Ü€ºðü°~° üà ºðüp üp ¹À·Ð¹Ðß`*Ð¥ÀÁà  ÿ  þ üp ó9¯ó:Ÿïà ù`éÅ@Ð@Å >aô`ò`ÔA´éðD›>aòðé`ï`é`é`é ï`é`éðòðò`ï`ï`òðD›ö Dþ îpöööD›ñD{>aéð]›öðöî@´é@´Ôaéööðööòðé`é`é ààò`ô@´é`é@´Ôaé`é@´éÀƒòðDëööïеéеé`éàé`î@´à`éðD›*aé`é`ï`é@´à`aé`ï ööïöDûöö@D îðöîðé`éöì¥{÷Ξ<{àÜѳ—Î8yéì³÷Î8wí¥³—Î=zòÞÙKgž<{éì½þ³Nž½tïÀ L÷Žž½töÀ¹³—® ½tÓs'ÏžØDÒñg8" ehCÊPøÀ'ðÁC-jÑ \T£åþhG=úQVöpF>Žq@#×x2Þ{x&öx‡<Þ!p¸C ï(=Ò!{ȃöH‡=Òa§Ø#öH‡<ô#wØ#öx‡=ÞÑÓtØ#ö(ˆ@ö'yØãöxGOÓa‚Ø#ï°GAìñ{¤Ãé°G:ÞawØcôðL:ìñŽý $I‡<’yØî°G:Àá{¼£§à‡=Ò<…žI‡=Þat€ÃöH‡<Þap¸CI‡=Þa‚Ø#žH:äñ{€Ãú)ˆ<ì!{¤C ï°G:Þatä)öHÇ;Ò!yØCé(Mþ:ò{¤Cöx‡=Òñ<åöx‡=è!{¼Ãé°‡~’ÏØî°Ç;À!w؇<ì’t¼Ã¼µ=äñ¤C ïH‡<’{ȃöx‡=Àat¼CöHÇ;@"{¤‡=ÒQyØãö‡=ÀayÐC é‡=‚Љ%ØCäpD|üc ùÇ^¸9ú4ø8Bf²ÚdGÊS¦r•­|å)GÀô‡=Þñ”qÜ‚ÙÇ2ÜAϼÃï°‡gÒ’wØ#IÇ;Òa‚Ðy‡=À!y¼C ï(ÍSìñ{¤Ãé°G:þÞ‘{¼Ãòx‡=Òa‚¤Ãé‡=ÀatØ#öÇ;Ü{¤C ž±‡;À‘¤Ãòx‡=ÀaϼCï°Ç;ìá{¤CàÈSìñy¤Ãé(Í;òÄ3öH‡@äawäö‡=Þ‘ÈÃï°Ç;ì!ÈI‡=Þ‘{ÈÃà°G: btôÔé(Í;ì{Äé( 8쑎ҼC ïØŸ<ìŽtØãö‡=Þ!wØ#öH‡@ÀQšwxæé°G:ÞapØ#öxG:ìñy€äö ‡=Òat$ò°G:ôcy¼Ãò(Í;ìþápDàÈ;ÒawxÆéˆaNaVay yÐz({Чà-y(z‡w°‡w(w°‡wˆÜwˆw{xÏ {x{x{x‡žz{(yÐy(yH‡‚ˆ\zy { ‡wè©wˆw‡‚ ‡bH{H{x¸{x{{Ø{‡t°y(ˆt°yè©t°‡‚‡tˆt({H y y°z{Hw{Hz°‡t°yþˆwH{‡‚‡wH{H{xH{H{H‡t°‡w( w{xx{x yHpp°‡t°‡‚°yx‡tè)z°w{x‡žJ‡žJ‡Òx{xx{{{‡wp°w‡Ò ‡t°pÏH{H{Hyp°‡w°wHz°‡t°‡t°‡§ˆt°‡‚°‡t°‡t°yˆt°‡t‰t( p°‡wh¸wx {‡‚ˆt( y°p‡t°‡‚‡w‚MX‚‚ÈGˆ€ `¨ `¨ ¸(3ðƒ,¸…z‡¸€mp„Fˆ€Jˆþnˆ€î‰€Gˆn¨€1XQp„ p„  p„ X¨ `¨ `¨ `¨ `¨ `¨ X(ð±…‚ÞŠk¹žkº®kÞ’‡w‡~{({Hy°‡w°°‡wÞ²ý°‡w°¹¶‡wH{({xy({H{x{à-{xxz°‡t°x°kyxyxzà-{({H{ rX†w°‡t°‡t{xzH{wx{x‡ty°‡t°‡tà-{{HH{wxy(yx{ {xH‡‚°‡w{H{x {(ˆÒþw(t°‡tx{H{ð {H‡ž{Hxy°‡§ˆw°‡w°‡tz°‡w°‡t‡w°yx{¸H{ y°p ‡w{wH‡w°‡§°pp‡‚°‡t°‡t°y {zè©tx{H{{H{H‡w°y yx{{H{Hyxy({x{H‡w°‡t°p°‡t°‡tðŒtý°‡t‡t {‡t{x({H{Hpˆtx{H°‡w°y°y°‡&è„&°yȆ7¨€ð1ˆ3€¨€ð±þð10h†ò1†ª€¨€…ª†ª€†ª€ð±ð1ˆ3€ð1ˆ3€ð1ˆ3€ð±…ª€¨rh8gvhvio¸w‡w‡‚ ‡t°yˆtx{‡‚H{xψ†³ÏxÏy°ϰ‡tÏH{ðŒwH{ð {{xyx‡t°‡‚°ý°‡wH‡Ò‡Òx{x{ðŒÒð {ÞJg°‡wˆw°p°‡tðŒt°°wH{(ˆt°‡w°‡tˆt y°‡wH{H‰w°ϰ‡w‡‚‡þt°‡tˆt°ϰpˆw°mH{Hy {x{H‡‚Hx{à-{H{xH{xH{{H{pp°‡t°‡wH{x‡tˆww{x{x‡t°‡‚ð H{ðŒÒppy ‡ÒH{x{H{ØýH{x{xÏ(ˆtˆ‚H{(yH{x{pp°‡tˆwH‡Òpp°‡wH{x‡ÒH‡Òxy°pH{{x{H{x‡tˆ‚wx‡t°ppˆt°‡wHH{x‡tx‡ Ø„%(rp„ `¨ `¨ ˆþ¨€0€†ª‡ª€ð±…ª€¨€‡ª€ˆP!B… "DXa„V@Xa…„*t&o#ÇŽk(yWÞǒ&KÒ“Gï={ï쥓÷œ=yöÒµ|·ñÝÆtöÞÙK÷î]ËtCßÙK÷NÞ;{é䥳÷nã»–é6µ—Nž½wßɳ·±eºtïä¥ã˜Žc:yïä½K×ñ½-Ó+–î]ËtöäÙj/ÝÑwöè µ—®¥½t-ËÚKg/<{ïì•GÏ^ºwòZ¦³·±åQ{éÞÙKG^:{￳—Nž½wŒ‡ÚK÷®e:{àì½Kg/ÝP{àÜÙKÇøþc{ïì µ—Î8wÍå½³7´e:yöÞÙK÷ÎÞÑ–ôÒÙšNž=pîÞÙºÑÞFÆéìk™ÎÞ;pŒÁ¹Ã8îÈcÏjö eÏ;ö€ãNsïØ“Ž=eÙó8½Ó\:ö¤ócòØŽ;-½ÓR:ö¼c8ôØC=é¼c¬ÓÞ?þäÓO>ýÜ~{>·çÓ»?ùôžñùøc|ïýäãÏñùø£ñýè“O?úè“O?ØçÓöùôƒ}>ýÏú?þäÓÏ5粿Q ߀PC;˜á=-,Ñé°ß¿=ïØãò°G:62{¼Cöx‡=Òat¼Ãé°ÇP{¼ƒòhI:Z²{¤Ãàp‡=Þ‘{¤ÃeyGKÒþapØc5é°Ç;{¼ÃéJ:ìw4g#öHGKÒñ{ȃöH‡=Ò€NÈÃä(Æ;VÓ’¡Ø#ö‡;ä‘y¼Ãé`Œ<ì!Æ€ÃàpÇjäA–€£%ï°Ç;ì1{€£%é°‡<è‘{€ÃéŠ=ÒñŽ–¤ÃòhI:Vóz´$Œ)‹=Òa²Ø#öH‡=Ê2”–¼c#ŒyÇjì‘{¤ÃéJKÒawØ£,ö 8Î•Ž–”ÅàpÇPZ{È#öGKÒñŽt0&öàÈ;ìQ–wØ#òHÇ;ìñŽte(öxÇjì‘{¤Ãé°‡„Á=„>„Á ëºö9 ÅF¼C:ØÃPØC:ØÃ;´„<¤ƒ=ÈÃ;ȃ=ȃ=”…=ÈÃ;ØC:ÈÃ;ØC:ØC:ØC:´„<¬†=ÈC:؃<ØC:´8ØþÃ;¤CKÈCK¤ƒ=ȃ=€CK¸8؃<Ø8ØÃ;´Ä;ÈC:¸8؃<¼ƒ= …=¤c¤ƒ=¸8¼ƒ=¤ƒ=È=ȃ=¼ƒ=¤ƒ2Æ;ØC:ØC:0Æ;¤Ã;ØC:´8؃< …=¤ƒ=¼CK¤ƒ3 …=€ƒ=¼ƒ=¼C:ØÃ;0FYØC:ØCY08ØÃ;´Ä;¤CK¤ƒ=¼ƒ;€c¤Ã;ÈÃ;؃<¤ƒ=ÈC:¬ÆF¼C:ØC:ȃ=”…=”=ȃ=¸8¤ƒ=¤ƒÓ¦ƒ=¼C:´ÄFØÃFØÃP؃<¼ƒ=¤ƒ=ÈÃPÈÃQØÃ;؃6¼ƒ=€ƒ=¼ÃF¤ƒ<¼C:ØÃ;þ¤ƒ=€CYØC:ØÃP´„<¤ƒ=¤CK¼ƒ=¤ƒ=¤ƒ<¬†<¤ƒ=¤ƒ<ÐC:؃<0F:ØÃPØÃQØÃ;ØC:؃<´D:ØC:ØÃFÈCK¼ƒ;€ƒ=È=ȃ=¤CK¸8ØÃP؃<¤ƒ=¼ƒ=ƒ=¼CYȃ=”EKЃ=”…=ÐÃ;0†<¤ƒ=ÐCK”EKl„=€ƒ=¼ƒ=¸8ØC:¼ƒ=¼ÃlÂÈ=dú†T)pUrƒ1ø?ø€?`?ø@?`À>„?€A=`Cð9tƒœÀ=˜>lÁ=„ÁØ0²^ƒ=¤9\Ã58Ã;Ã58Ã58Ã589\ƒ3|±3dÃþ5Ã58ƒ3\9\ƒ3\9\ƒ3\ƒ3ƒ3|±3ƒ3ƒ3\ƒ3\ƒ3C1ŒC6|ñ_ƒ3\9\ƒ3\9|19\C6\ƒ3ŒC6\ƒ3|±3\9|±3\ƒ3|±3|±3Ã589dƒ8\ƒ3ƒ3\98ÓC1\ƒ3\C68Ã;9\ƒ3\ƒ3|19\ƒ3ƒ3\C6dÃ_ƒ3\ƒ3\ƒ3ØÃ;ŒÃ2؃<ÐCK¼ƒ= …=€ƒ=¤c …=¼ƒ<ØÃ5Ø=ÈÃP08Ø8¸ƒ=Ѓ<¤Ã;ØC:´D:¼CK€ƒ=ÈÃ;ÈÃ;´D:Ø8ØÃ;ØÃ;0F:ÈÃ;0ÆP€þƒ=”EK¤CK¤8ØC:¼ƒ<ØÃF¼C:ØC:´D:´8¸CK¤ƒ=€ƒÓ¦ƒ=€ƒ=ÈCK¤CK¤ƒ‚CK¤Ã;Ø8¸Ã;Ø8´D:Ø8¸ƒ=¤Ã;ÈÃP´„<ØCYØCY´D:ØC:´D:¼ƒ=€ƒ=ȃ=”ÅFØ8ÐÃ;ØC:¼ƒ=¼Ãjȃ=¤ÃFØC:؃<؃<ØC:¼CK¤Ã;ØÃ;ØÃ;´D:¼CK¤ÃP0Æ;ØC:€ƒ<¤CK…=¼ƒ=¤Ã;´„<Ѓ=¼CKÐCK¤ƒ<ØCtÂÈÃ;C÷Ã&pC,p:èÂ?ôÃ5ø"øÃ)$B"üÃ"˜B;ÔA'ÜÂ>þÜÂ)ôÃ5dÃ-ðƒ3ðÃ-èB?e?ø9¼CKøC?äíäCíôC>ôC>ÐÎñôƒ??ôÃñøC>øƒ=ôÃóíO?ôÃóôÃñØC?°wíøƒñ°N>°ÎíäC??™í ÂÀá|ãìAì!ì¡$ìÁÀá‚þþèÁÞÁäÁÒÁÒÁÞÁÞ!ììäáìá|#|ƒäÁ7ÒÁÞ!äì!|CˆÅÜ|ÃÀ!ìáì¡%’ÙÞAììÁ ìáìÁ $ì!|#ì!ì!ìÁ ’ùÒ¡|ãäÁ èì¡$äÁäÁ7 ÂÒÁÞÁ7Üì!ÞAÜäì¡%ìáÒÁäÁ7Ò ìɳ'Ïž¼wîÀÙ³÷®á;{ïì5´'ï¼töèѳ'oá»…öÚgÏ8{òÞÙ“÷.=pöäÉKg/½töÞ¥[˜Îž¼töÒÙ“Iœ½þtéÞÙkhï<{ïì¥)/=zò쥳—Ξ¼wòÒ-LgO¦½wöÜɳ÷N¦ÃtöÞ¹g/½tÓ٣眽t ß´—ÎÞ;{2í³÷d:{Hí¥³÷.½wöÞÉKgï]º…ïܳ'ž<{é@¦³÷.½wòÞÙ´ÄÞ;rþþéÞÍ»·ïßÀûN¼øprïä½Ó(Ï8{éì½³÷ΞL{éÊ{g/=w å¹³—Î^:{éì-Zî=wödÚ“·é;{éìs·ð=‡ö¤#O:ö€cO:ö¼#S:ò¼³P: #O:öÈcO: ¥3X:ö¤óŽLòØóŽ= þÙ“Ž<ö€ãŽ= É“Î; c8öÈ“Ž=é,”Î;ö¼CN1ïÈ´P:ôØ#ÏBà¸cÏ;験Î;ö¤cO: ɳPCɃ”=òØÓÐBéÈŽ; ½cO:ïØóÎBéȳLö¤#=ï¤c8öÈÔLéÈd8î,$FöÐc<験ÎBéh$Ï;ö¼cÏ;ö¤c6ö¼³P: ¥c8ö¤£Hà¸cÏ;ö¤cO:ï,”Ž=ï,”ŽLö¤óŽ=験ÎBà,Ž=ïØ“Ž=ïÈ“Ž=à¸R:ö¼3˜=é,Ô=ïh´Rö¼#OCö¤óŽ=éÈcLö€#=é,”Î`éØŽ;þ ãÎBé –Î;ö¤óŽ=é€c<ö¼³P:öÈSE'M¼“N6½5ìðÃG,ñÄóv=ïØÓ<öГŽ=ïÈÔMK @ÎBî€cÏ;ö¼cLïØCÎé¸ÑÄ;\SŽôÜÐ= ÉÓP: ¥RC験Ž= Ú“Ž=ôØ“Ž=ïÈ“Ž=ïØ“Ž=ïÈcO:ò,ôŽ=é,ôŽ<éØóN:î€cOCö8”Ž=ò¤cO:ö¤R: ¥³P: ¹#=òØŽ=騳ˆé0“Ž=éÈ“Ž=ï¤cO:öÐÓP: ½cÏ;éØã=験Ž=ïÈ“Ž=ïØÓˆéØ#=ôØŽ=éØóŽþ=験ÎB験Ž=éØóŽ=é,¤‘= ÉcO: É“Ž< è<é,Ô=ïØã=éØóŽ;à,ôŽ=H5”Î;öh”Ž= Ù“= ¥cO:ö¤³<àØ“Ž=éx‡=ÒawØÃàXHCäAth$öH‡=ÞatØC#ö¸†=ÞatØ)òÇ;쑎…ÈãöhH:쎅¸ IÇBÞat€Hô°Ç;ìÑ{€)ïÇB"…¤£!éxG:"w,Dö ‡;Àaw€ÃïÇ;‚°‰%ØãÙØÇHÆ2šñŒhL£Ñè {Èà z‡=Þat4„ ¢x‡þ&ă0!»@ ’3Aòx‡DQ"|c9`Å"qƒ,°€éXH:쑎w¤c!HI:’{€Ãï°G:äawØ#ïX8ܱt¼ÃéG:ì‘{¤îx‡=Þ!{¼ƒö‡=Ò1˜t¼c!ï°Ç;쑎wØ)ö‡;ìñyØãòxÇBä±w`2!Ç2b†,$öHÇ;"{¤ÃéІ=ÞatØ# É;ìñ{¼Ãé°G:{ÈÃé ‡LÞat€Ä!ö‡=ÞatØ#ö‡;Þ!{¤Ã ‡=Þat8äö‡=þÞatØ#ö‡;ì‘{ÈÃïXÈ;"{¼ãYö‡=ÞawØ#ï°G:äñ€Ãï°G:"t,öx‡=Àa¤$ï°GC쑎…¤Ãï°8èñ{¼CïXÈ;ì!{¸c!H±G:"…ÈÃé°‡FÒawØ#ï°GCòŽtÈã ‘HÒat,äòxdzwÈãöH‡=ÞazØCôXH:ì!"lb ï°‡3Ò˜Ž] "eäÇ-ÖHÜâw7×°Ç;Òay¤Ãé°G:ì!{ÔÀîGn@Žpt!a°BnxT!ö†|þàBÀ!ðh=b kTÁà°‡;Àp4ÄHy‡=Þ‘yÐÃé°‡<è{¤c!òxHÀawØCöÇBÞñ¬w¤Ãï°Ç;ÒatØ)éx‡=ÜŽw¸ y‡=ÞzØã2y‡<Þ!tÈãéx‡=Ð y¼#ۇ;À’wØãö‡=Òa† &öH‡=Þ±¤ØÃà°G:ì‘{4Ä‘GCìñŽ…¤c!ä°8ì‘{ÐCöp8ìñ{ȃï°G:ì‘{¼Ãî‡=äaw€Dé°G:ìñ{€Ã±8’{¤Ãé°G:bþy€Ãéx‡=è‘{È$ y‡=Þáp¤c!é°‡<Þ‘{€Ãï ‡<ì!z؃à°RÞ!tØCö‡=ÀatØC#ï°Ç;âp¼ÃïÇ;쑎†Ø#öxG:ìy¤c! YÈ;Ò±w€ÃòHÇ;ÒayØãöH‡=ÒatØC&öH‡=ÞapØÃà‡=ÜawØ#öx‡L"†¤CïÇ;šÐ‰%¤ƒÙ@£bÁ‹OT‚Å?XÀ1ðã_8®Îw>Æ~8c!éxÇBÞ±pØ#ô „ÒqRÜ@–°L‘rô åÈ‚C&‡þaÀ1hGäq{”# ò ‡=4"z,ä ‡;ìÑyØ#ïXˆ<ì‘p¸CöH‡<èayØîÐH:ì{4$ y‡=Ò±t؃ÇBÜazØ#öH‡=Àa‡Èc!é°‡<w,$òØÄ;ìñr,ÃAñ;ìw¼Ãàp‡=Òá…¼c!Hy‡=Ò±zÈÃé°G:ì{Èãò°8ÜñŽtØ#àp‡=äA{¤ã2yÇBäñ{¼ÃéxÇBÀᎅ¼Céx‡=Òak,$ï`é`ò`òðò òï`à`é`ò`þé`àà ‘öðöï  ‘öî°ö é`òð ‘aé`ï öï a‚öðö aò`‚éðöð2aï`î°ààï`‚à ƒé öðààòðé°à`ï°é`‚ï`à`ï`ï`à`/eé`é`òð !öðö öîð ‘ò`‚é°é`E° K`ï@gäÄ ¼ ÒÀ Ðû€ïÐø`Pú@fÐ<7ŠkÔ×`ï`îé`é é`‚§°¦ð9°xðî°Yàþ ™@ìÐ ò „à ìÐï° ï ‘° éÐ !é`é`îé`‚ï`î !ï é`ô°é a2AöÐö ò ‘ööðöðö@öààö@öðöÐîö ö öööï`é`ò ööàö éà ¡ƒò ö  ñöð&˜ïàà&èôööðö òðé`ñöð&øòö ñò`é`é`ò&˜ò°éðöð ‘öðöÐööpCéþ` ‘ ! !ööö ï`é`òï`ò`àðò@öàö öðé`éðöÐòðé`é ï`aàö&˜ï€ï ï ö öï öðé  é°îéðö ï`î`ï°ï ‘ööàà`é ô  ñò°é`‚îöö ö2ñé`é°ï`é°ïöðöï`ïÐPé ÙpFýÐ ¼ð ¼Ÿqðýp `Ðø`OÐûðu𤘠gÔÙ ï`‚þò`à°/Õö 7 öP¡ï ï  !"ï YàM° ï°òðöðö:Øò`ï`ô ñö¡ƒé`é` a òò`éàöî`é`à@ö@ ñ2ñ ñ!ö2±é`éÐö aò°ò`Haïp Ë ïööÐé`é`é`(ö:hàà&˜ô öî`éÐ&˜ ‘öööðöööï`à@öï`ïîðöï°é`ààööðò`þà`ï ±é`ò`ïî é ö ö a aé`òðöôàö &˜òÐ ‘ ‘ö  ‘öî`ò`é ô`ò`à`é°ï`é°é`é`òàöð&Øò@ ‘ï@ Ñòðöðöö ‘öö ï`ô`éðöðé°à@öö:ˆï öðò°ï`é ö î°éð ‘ò`A° A°΀FŽð LË´Xðü@þ ÷VÐüàýý  ^;FÎ`òþðòðò@ò`ïö ö@öàé ¡ò`é`ï°ï@7$öòö ïö ñé° aé`é`ò`òðö€öð&èàðHaï é`é`òðé`é`ï`‚ò°ï ô öÐ òé`òöðö@öðö aà`‚ï`ò`ï é`é`‚ò`äà ï  ‘öðé° ±é°ï`éðö ñH!öðò`‚é`ò`H! ±é`ï`é`ï`à`é°ô ö&èþ&øöààö  ! !ö :˜öðö ï`‚é`ï ï ! ‘öÐöööðö  ‘ ñööðöé`é`é`ï`ô`ï é`òðò ‘ööàà`ïöð2ñöö€ïöpCï`ï`é°é`ïöðöàà ïöÐö ö ñòðé@ò`é`é`ï€öð&øé`é`òðô&èôðööàà`ï ïà›Ðï@ä€F£€° Ëðþ°þf üà ×Púp g þðµÂüÎ`òðöï`é°éðòðò`ò°éP¡òðòòööö2aéðöö ï`àà öòðò`éðààï ï`‚éðöö@î`‚é`ï`‚é°é`ï`é`×`éðò`à@2aï &˜ ‘öð ‘ï`é`é°Haà`é`éðò`éöðé`ã° ï é`ï`‚é`é`à` a‚éðöö  Ñö ïï`ï`éþ°ààöðà`ï`à`2aôðö ö2aààé` ‘öðö@ ‘!é`é`Hö ï`à`é`é ï`ï`ààöðààöö  ñ Ñ ‘ïööö ñ ñööô`ï  ‘ö ‘öðö A îð Ñò`ï`‚éðö ‘ò`Haé°ï`à`ô`‚ï°éðò  b‚é  aï`aà`ï°à`ï&(é°ï`é`ò`ô þöö UÐ Kïp kÔ¾ýðý°þлÑÃüµâöÎp äp äp Î@×à ×à ×à ×à äp 6nãÎ`ãäp äp äà ×à äp äà äp Îp Î`ãÙ0Îp Ù ×à 6^ äpãäpãÎà ×à ×à ×@Î@×°å×@Å@[î ×à ×à 6×@Î@6åãà ×à 6î ×°åäà ×à 6î 6î 6N×P ä`ãÙp äp äp Å@×0Îp öðéà ööðòàà`à`ò°é°Úï°é`þà°à`é`ï  ñé°ò@öðòàö ! !ï öÐé`‚ ‘ ! aé°ò`é`ï`2a‚é`é`ò°é`ï`à`ñöàô`é`é`é°é`îöö€ ñ ö ööààðîö ò`ò`àðööðò`à`!ï  ñöðé`‚à`HÑòð ñî&öö !ï`îööðö ï`é°H!ö ö:(ö€ö ööþ é öï`é`é` aòðòðA° KÐäàº1÷t_÷v÷xŸ÷z¿÷|o÷ý ô öù°ý@øù@áùÐþЄOá߈øöýà“Ÿ‘Ÿý€øýýýàý€øn„¯þþÐþý`“ï™ïþÐùÐùà„ßöùý`žý@øýþ@øýýý¶Ÿõ@øý>ùöýý0ùöðãP ôðò`ï°!ï`2ñ&øöðö öò`‚é`à`‚à` !aOž½wþöÒÉ“÷î8wö䥣'Ïž=… íÉ›¡½tí¥“gï=pòÞMLgï½tßM´—Ž=yïì½³Wñ=pî쥓÷ΞP#ØãöPH:ìñ{¼#y‡=’{€Ãé€IEì{¤C.ïHÇDÞ1‘wØ#-ry‡=ÜŽtØãî‡=ÞatØãî‡=Ò1“‰¼#0y‡=À1…¤ãéøFŠ`2¤ÃôHG&âŽb¼UH‡=äAtØé°8ì‘{¤ã ö˜ÉDÈQŒtÀé°‡<ÒatLDé€I:오ãîÇDä1{($-ö‡=bwØïH‡=Àay€#öH‡=Àay¼Ã;À‘{ÈÃé°‡;Àawȃò°G:ì!‰¼Ãéþ°G:쑘¼Cï°G:bwL$öH‡=Üމ Äà°Ç;XãpØ#öpy˜ˆwp°…‡t°‡tx{{ {¨˜x‡t°‡w°y°‡t˜ˆ´€ px‡t@ˆw{x‡´°…H‡‰x{H‡w`t°p°‡t°‡tz‡t°‡t°…‡t°‡wH{H{x{Pˆ‰‡w°‡t˜ˆ™H‡wz{Py¨ˆt°‡w˜ˆw‡wh‚MXyxgp¢P^^à…8¸ ~ið!È !è‡"ð^и?„­kx‡t°‡nHkØaˆ…mþ°y°‡"è…´@à€dˆ0`‚d`wÐ;H‡w€‰t˜y°p{H‡‰‡‰H…H‡‰‡‰{H˜H‹wH{{ ‡‰˜‡Šà“tPˆt°‡w°p‡‰zH¹x{`‚^x‡tp€,ˆ0ƒPˆoè‚w‡&ˆ3(QЃ%{(‚%P‚n`€.H3ð†w{ ‡ex‡´€ …°‡w°‡t‡w°‡´°‡t˜‰tx¹@ˆt°…°y˜ˆw°‡w°‡t°‡t°yp‡‰{z˜ˆwz°„x‡‰H¹Hy°‡t˜y°‡w°‡t°þy°‡t°‡t°‡t°y°‡w°‡´wxy‹t°…€‰tx‡™‡w˜y yH‡w°‡w°z°‡t°‡Š°‡t€‰t˜ˆt°‡tx{H…˜H‡‰x{P{x{H{{H{ {x{…€ pp‡‰x‡t°‡t°‡t°p˜ˆt˜ {H‡‰xy°‡w°‡´°‡t°‡w{x‡‰H‡w˜p°‡t°‡t˜ˆ´x{{‡™{H¹x‡tx‡t°‡t°y(‚MXy°rp¢Qø^ø„Oà…1¸ cà#ø!èlÀ!ø‡~ð è@ÔÎ&"y°þ‡w`†d\HRàc‡wo˜ˆP‡pÈ‚k¨M°x˜H{x‡t°„°‡´°‡txyxy°‡t˜ˆt˜ˆt{H{p˜ˆw˜z{x{H{x‡t°‡t€‰txyH…€‰t°y˜ˆt‡t°‡wHw{‡w¨o°zÈy0‡,x‡H‡ èkX‚x‡r¨B@U(‡¨€‡&°‡‡w°„ ‡b°‡w°yx‡t°w{x{H‡‰x{x{P{H{H…H‡‰‡t°yH{x‡t°‡t°‡t˜yx{þPˆt@ˆw°‡t°yx‡t°‡t°‡t¨ˆw°y°p°‡ŠH{‡w°‡t°p°yxy°p°‡t°‡w˜z˜·H{P{ppH…°‡Š‡tz{x{x{H{x{xy˜ˆt°·˜ˆw°‡w°‡t°‡w€ ·°‡wH{xyPˆtw˜H{H{H{x‡t°‡t°y˜ˆw°p˜y°‡t°‡™H‹‰H{¨{H{pp˜ˆt°‡w°‡t°‡t°p˜ˆt°y°‡w˜pH˜x„Pˆt°‡t˜ˆt°‡wH‡‰x{xyx‡&è„*H‹þlp"I8Κł؇ðK!à !؇&Ø‚ØÎ£=¢kx„@†^X†dH†Xà]°‡w(% ‡U S°;¸^°;°hw°‡k°‡w°…{H‡‰x‡‰H{H‡w˜p°‡wH{@ˆw‡‰‡w°‡t°‡t°‡´°‡w°‡tx‡‰p‹‰w˜ˆtp˜ˆt…°…˜ˆw˜ˆt°‡tX/ ‡NÈr(‡,x‡xyh‡*‡rX‚‡rh‚qx‡`‡x‡l€‡&x‡xyP{ d°‡wH˜x‡‰H‡w˜pp‡w°pp{x{þ{‡‰p˜ˆtH{x‡‰w°…H‡‰x‡‰PÖxy°‡t°y°‡t€‰t°ñy°‡t°‡w°‡t°p°y {H{H‡‰@{H‡‰Pˆt‹t°‡t°‡w‹t°y°‡t°‡w°‡™°‡t°‡t°y°p˜ñµp€ p°‡tx{І‰H{_˜H{‡‰H˜{ {Hy°‡t°y°‡t˜ˆt°‡t{{H‡™x‡tx{H…°‡w‡Š°‡t°‡tP˜H{x{H{x{H{{H{H„°‡t€ ppy°pp{x{þH‡wH{H‡‰H‡‰H{H{‡ Ø„%x{p'IÐäMFÚNÆ8gx{xZH†`H†XàtX†t‡w8…,Py8ƒ<‡@„áR<"ÿ8A?Ü@ Î<á>àB þ!~Èã N|íf®á{|Ãvx4Ñ pØã”ÈBÈaÿÙãâ(F:ìAw€Ã5é°G:ZxtØ#öx‡<ò{¸öH‡=ÒÑÂt¼1ö‡=ÒayØ#ò°G:"…¼Ãé°‡<ì‘{¤Ãï°G:ìñŽtØã òxÇ)²€kTÁéh‡ôЄS¤c!é°‡<Ú±{¤c!ò°8ì‘{ä §XÈ;BŽe¸öHÇBÀayØCI‡þ=ÜŽtØãö‡=ÒatØ# Ç;ì‘{¸æö8ˆ=Òa/ y‡=JüŽtØ#öH‡=ÒÑÂwÈc éXÈAä‘{ȃöx‡=ÒñŽ…¸ ¡‡<Òat؃à°‡ÐC?h€?øÀ?`À?¸"ôÃ?Á=˜ÁPÃ0åWþ<÷Ã5¼ƒ<¤ƒ=ÐÃ;ØÃAþ¸†=ð‡=ÈÃ;ðÇ;ØÃAð‡=¼ƒ=¤ƒ=¤ƒ=€ƒ;ØÃ;È=؃<ØC:€ƒ=È8؃<,8ØC:ØÃ;ȃ=„=¤C Ƀ=¤׃ƒ=„=€ƒ;؃<,D:¼ƒ=¤ÃB¤ƒ=¤ƒ=„=¤ƒ<¼ƒ=¼ƒ=¼C:¼ƒ=¤C ¥ƒ=¸F:ØÃAØÃ;¸†=ˆ…=¤@Ø{'OÞ;yöÞÙ{gïÝ8döÞ½³7Ñ^ºwíɳGÏ^:{à(¦“718wï쥳—ÎÞ»‰ï0¦£7Qž=pîäÙK'ïA{ôäÙçn¢<{é쥣(¢¼‰éì³'Ï^:{馣˜Nž=pöÀÙ{þ7ÑÝÄtöÞÙgà;{éì›øŽà»‰é쥓g/¢=yöÞÙKÎ]D{àÜM|g/]ĉé쥳÷Î^º‰'¦³'/b:{éì½³—ÎÞ;{éPƒ“—n"=y¨#Úg/½tí¥³Î=yÓÙg/Ý;{àìɳ÷Î8ŠéÀMÔfE‚öÒÙ“¤Ó{òne?ž|yóçѧW¿ž½ygää½³GО¼tö"|G ½ˆòÞIÇyìÇžtìy'Š"’'wìIg"z졇‚Ò¡ÇžtìÇžwÒ™({Þ±{Þ±{®±' í!ÈzÞ±çt&Jg"pÞ±þ'‰Ò±'{Þ!Èp(JÇžt"z‡ wì!È‚š|Çžtì!("yìǂұ‡œb&JÇžtìg¢ˆÒyGžˆä±çzì§Ét0Jg¢ˆìIÇpìIçyÒ±çtìIÇB{Ò™({øKG ß±'¢tìyÇžt"’ç{"Bm"zÒ±'{Ò™è{P›(zä±G{ä‰Èžtš”ÇB{À±'‰,´'{Þ±G{À±'"{ä±G{Ò±'ŠÞ±GŠ"²'‰Çžtìy'{Þ±{Ò±'"{Ò™(‰ÞIg¢tìy‡"y&zGžt("Èy&Šh¢wä™è‚Òþ±ç{ä™èyì¡Gžt쑇y܇"yìyÇÂt"²'{Þ‘ç 6Y"yªlÙå—aŽYæ™i¦™{®!("yÞ±ç‰Ò™{Òáo"yìIçy,´ç{Þ±'‰ä™(yìIç‚ÞáÏžwä±G å±5{À±' å™è{Þ±'"þìyÇyÒ±çt&Jg¢wìyg¢t(JG{,DÍžw쑇¢tìÇžtäIG{ä™è{"’‡¢t,LGž‰Ò!§˜tìIÇžtè±'{Ò±GŠÒyÇ‚,´G{Þ!è‰Àq‡¢tè™HžwìIÇžwä±'*Ó±'&þíIÇžwì‘ÇžtìyÇpì‘ÇžtäyÇžt&JÇžwìyÇžwìyÇžtÞ™{²'‚&JçŒÒatØCô°j""wÄé°‡<(‚{¤#"öH‡=Ò!{¤Ãà°Ç;ÒapØãöHEäñ{¤Ãé°‡<&’މ¤Ãé°8ìwØãéx‡=Òñ{¤ƒ ï°GDìyØ#öH‡<Þ!‰¤Ãà°G:ì!{ÈÃé°G:ì‘{¤ÃïHGDÒñ{¼ÃBö@=èñyØCöˆÈDÒay¡M°Aì‘eCÅPF1”Q eCÅPF1”þQ eCÅPF1”Q eCÅPF1”Q eCÅPF1”Q eCÅPF1”Q eCÅPF1”Q eCÅPF1”Q eCÅPF1”Q eCÅPF1”QŒe ÃΰÇ;ìñ5€"ÚX(ì‘zÈÃï°Ç;ì‘{|£‘Ç;ì‘{¤Ãé°G:ì‘{€c"é˜È;ìápØ#"òˆˆ<Þ‘{¼c"J‡=ÞatÈ#öx‡=Þaw€Ã¨±G:ìápL$±G:ìñw€#ö8&Ò${¼Ãïp8ìšwØÃBé°‡<ì!tØ#öøF'ì‘þ{¤Ãé°‡<Ò1‘wȃépEÞaw¤Ãò°8ì{ÈÃòx‡<ÒatØãòˆˆ<Ò!‰¸A=ÒaˆØÃà°‡<0bp`¤Iò°8&{Èc"é˜H:쑎‰€ÃòHÇ;ì{¼Ãà˜H:ì!{D$AÍDÜÔ¤ÃI‡=ÒAyØãq8ì!ÕRq8ìѤtØÃB±‡<ì‘{¤Ãé°G:쑎‰€ÃòH‡=ÒatL¡EÒawL$öx‡="’{¤c"ò°G:ì!{¤Ã¨y‡<ìAy¼ÃàxG:&þ{¼Ãé°G:+wØ#"ò°GDÒaˆ Æî‡=Þ!waMàÏ5œñ˜Ä%6ñ‰Qül(é°<è!zȃò ‡<è!zȃò ‡<è!zȃò ‡<è!zȃò ‡<è!&ɃäHÇ;ì¡5°a l`(èA,áy‡=Àax4!ïÇ;È{¤ÃM²G:,”{€ÃöHÇ;,4‘tL$IÇ;ìzØãòx‡=ÒatÈÃé°Ç;,4‘tØö ‡=Þ1‘tL$öxEÒay¤Ãü±8Ü1zPîx‡=ÞQƒ&þœ@é°G:ìÑ,ÈãöH"bˆ¤£Iã(FDÒñ{¼Ãé°=ì!wØîÇDÞ!‰¤ƒ"é°Ç;ä{¸c"±G:&’މÐCöX­=äay †"é°&’y¤ãöEÒayØ#ö‡=äayP$öH‡=Ò!‰¸Œ"ŸHDä{¤CéÇ;(’ŽwL$à°‡…äazØCI‡=Þ‘y¼Ãé°G:ì{¼Cï°8Ü1‘t¼Ãéx‡=ÒayØ#iÒDÒމ¤ã‡;ìšwØ#ñx:ìñyØ#ôp‡=Þ‘Ž‰¤þãöHÇDÈatØ#öH‡=Ò!wLäò°G:(òމÈÃé°G:±„ˆ8ãÿðÇå1ŸyÍožóï‡?úál8£f¥™…葎w\c"ï°‡6h(¬AïÇ;jð{|ÀEX‚¬Q…] €Áp@¼Á„*(Áòx‡=Þ‘мÃï°GDPctØãîÇDäa!{¤Ãé HDì{¤Ã±Ç;ìñzDÄéxG:ìñŽtØCöH‡=ÞÁÒa"ÒÁÂBìáä!ì!,äìáÒAÒá4à˜ ”šP€„Á²€˜  ”ÀäþÁäaœÁÒa"ÒÁ"BÒÁÀa"èÁÀ!ÞÁÞÁÀÁPc"ÀÁÞAìáìÁÀa"ÞÁÒÁ"Bì"b""(5ìAì!ìAÒÁÜ&Bìáì¡Iì!"ì!ø#ä&¢Iì!ìáÒ¡ãä!"&BÀAÒáäa"äa"Òa"ä!"äÁÜ&‚ä!"ä!"ÒÁÒÁš$ìáì!ìá&‚ÒÁÞAìì!ìá&âì!""ìáì!&"(ÂÀa"Pc"ÞÁÞa"ÞÁÒÁäììáä!ì!þìáìáäÁè&âìÒÁÒÁÀÁÒ"ÞÁÒÁÜ("ì!ÞÁÞa :a ìAŠÁúÁúóúóúóúóúóúóúóú¡óü¡üAŠ!ììAìAìAìAìAìAìAìAìAìAìAìAìAìAììA"ÂäáœÁäÁB´do "b"dàÒàáÎÀΡ z ¬  rÀÌáÎÀäÁÒÁš$ì!&‚ &âì!ìáìAÒÁÀ"Bì!À &B&"ì!ÞÁþÒÁäÁÂÒa"Òì!ì!"Òáì!ÞÁÀÁÞA"šÄÒáìA&„ ÞAº¸ÀΡ r ¬  nàÌáÎÀÒÁÒÁÆì!ì!(ìAèÁäáì&"ì!("ì!&Bì!ì!"ìäÁÀ"ÒáìAÜÁªd"ÀA&ì!""ìAÞÁèAìáìáì!ìÜÁÞÁÒa"äÁèAÒ"ÀÁäa"V 5ì!ììA&Bì!Þ!"b"ÀÁì!"Â,ÄÒAìA(þâì!ì!(âì!ìáììáì!ì!ì¡IäÁÒáì!&&"ì!ì5ÞÁÒÁÞ&"&"ì!ì&&"ìAèAì!ìáì!ìá&5,Dì!(âìA&âPÃÒa"ÞÁè5èa"ÞAì!ì!ì¡6a "úÁ<Á*Á!Õ!ûÁQÿÒáøãR15S5õRßAÞAì!"ìáâ® € h ÁÜd@ŒÒÞÁÊ! È@Òar€ÄÔAÒa"Òa"äÁÒÁÒáþÒa"ÀÁÞÁÒÁä!ìÁBÂÒ"ÒÁÒAÒÁÞÁÒ"ÞAÞ!ì!&:îì!(âìA&"ì!&"(â&BÒ ìAìA@@Pàœ¡š€ T!¶!ÒAP œÁÞÁÞ!Š!"ìáÒ!ììAÞÁ""ì!ì?Üìáìadíáì!&"ìA,ÄÀa"ÒÁÞÁÒ"äáìAìá&BÞ"Þ!&âäáÜì!(âìÁÀÁZÆÞad'ÂÀÁÒÁãÒÁÞÁ"ì!&B&"þÞAìá:."äáìAÒÁÀ!ì!ì!"ÒÁÒÁÒa"ÞA,„ ÞÁÒÁÒa"Ü&"ìáääÁ"b"ÞÁ´ÁÒÁÞÁÞadí!äáÒÁèAÒÁäÁ"‚?Òa"ÒÁÞÁÒÁÒÁÞÁÞ!ìAì!ÞÁ"ì!&âäÁÀáÂÞÁÞÁÒÁÞ!ìáìáš ª Þáü¡*¡*¡ìWúáòúÁúáòúáòúÁúáòúáòúóúáòúáòúáòúÁò¡ü¡ÒáäáäáäáäáäáäþáäáäáäáäáäáäáäáäÁÒÁÒ ìáìÁ&âìá´@á,¤š ÈAt! :Áö` ‚á²Àta ðÀÀÁäÁÒáìá(bd'"Þa"ÀÁÞ!ìáÂÞÁÒÁÒÁÒÁÞ!Þa"FÖÒa"ÒÁÀÁì ì!ìÜÁÒÁÒáìadíAì!äÁF6ìÜá&"äá(¡ Ì€äA¸@Ú¡ÜA¶ ® ¼A²ìáìáÈaäáìá&âÒAì!"äÁÒAþììAÞÁèÁäáìAì!Þa"ÒÁÞ!ì!",$ìáìá&"“í!"ìad'"Þa"Òáì!&ÂB&"äÁÒ"Ò"ÒAìá&"ì ììì&"ì&âìì!Þ!&"âFÖÒÁÞA"¢ãäÁÀÁ("ÞÁÒÜa"Þ!ì!ÞÁÒa"Òa"ä!ì!´Áø#&ÜÁÞa"ÞÁÒ"ÀÁÞa"ÞÁÒÁä!ì!ìÜá&ìAììAìÜáìAì!Þa"Þ!ì!þ"ì!Þa"ÒÁÜÁ"ÂÀÁÞÁÒÁÞÁÒÁÒÁ‚`‚ÀèÁòAA’!4²€4û³‹!à¡ á³Mû´³ náRÛ>»ÒáìáìáìáìáìáìáìáìáìáìáìáìáìáäáäÁÒÁÒÁÞÞ!ìA""ÞAÞÁ"¢ –`¼;.õèÁ"Bèáìáäa"Fv"ÞÁÀÁÞÁäÁÒa"Òäa""ÂÒÁÞ!äÁÞÁÞÁÀa"ÒÁÀÁÞÁÞÁÞa"èÁÒþÁÒáä(ì!ì!&ìá&(BèÁÜäÁÞAÞAìáä!"äáìá&¢Ièa"ÞáRÓ¡ÒÁÒÁÒAÒÁÞ?ì!ìAèAìáì¡IìÁÀÁÒa""ÂÀa"Þ!ìáìáì!ìadí!(âìì!"ìadí!ìáìAÒÁä¡IFÖÞ!ìáèìad'âÒÁFÖ"b"èÁèÁäÁÞAìÒáÒa"Ò"ÒAì&â("&Bì¡Iì!("ìì!&Bì!ä!ì!&âþìì!"Ò¡ãÞÁäÁÀÁÒAèÁÞa"Þ!ì!ìAìA(âÒáìAÞÁäÁ,äì!&"‚Fv"Þa""ÂÜì!ìáìÁÀa"ÒáìAÞÁäÁ,ÄÜ&ÂÀÁÞÁÞÁ6¡ ÞœA³+*ΤóŽ=ïØóŽ=ïØóŽ=ïØóŽ=ïØóŽ=ïØóN:à|eþO:bt<é¼cO:ï¤óŽ<ö¼#=6Ù“Ž=òØóŽ=éØóŽMö¼cÏ;òˆ…Ô;ö¤óŽ=锎=ï€cÏ;6½C8î$•=ï •Ž=ïØ#RòôŽMö¤cO:ö¼cO:ö¤óŽ<ö¼c<öÈC‘=òØ“=îØ#•=6Q$=ï¤óy¼Cö‹=ÒawÈÃïÇ;䂤ãöG1ìw¼ƒ é°‰=ÒapØCï ˆXò{€Ã‡=Þawȃ é°‡<ì‘{€ÃR±Ç;ÒawØãöx‡<ì!‚Èãöx‡=èat¼Ãà°=’{¼þƒ ï°G:b{ÈÃé°8ÜayØãyAÒAtØî°‰=äaw¤CöH‡<Òapöx‡Tìw %ô@J:ì‘{€Ãö=äñ{ÈÃàpÇ;äatØCö‡;ÞAtØãöHÇ;ìwØãöx‡=ÀႤãö‡=Òap¸Ãï 8ÜawØCô°‡<ì!‚¤Ãé°G:äñ¤¤ƒ 6IÇ;’‚¤Cö‹=Þ!‚¤Cö(B'š w0ƒú¨„4*Ñ‹J¼Aù G;N°¼caCô°…h„áðC>r0lAþ űG>–…[¼‚ Yȇ=òa| ¥éx‡;Àaw¸öx‡;Àaw¸öx‡;ÀAyØ#ï A䑎wãöp80{¼Ã&b±‡MÒaD´£é°Ç7:‘‚¤ƒ ïG:ìñŽvlöH‡XìázØäé°G:èapØã‡=䂼Ãà H:Þ!w€#öxG:Þ‘{¼CöH‡=ÀAtØÃ&ï‡Xìa“wØã.ï°‡MÄb±ÈÃò°‡;Àayäö‡Xäñ{P$òx‡=ä1f„ à=Àawȃ é 8Þaw€ãþò ˆ=äAw€Ãïp8ìñ{È#ö‡=äawØ#y‡;ÀatäöxG:ìñy¤ÃbIA(’{H… ïH‡=Þ!‚ˆEï°É;ì!zØãî‡=Ü{¤Ãé°8ìA‚ÈC,öAÒAwØCöHAÒ±[ŠØöH‡=ÞAtØãö È;äApäé È;ì!{¼#±‡;ÀApØ#öAÄ"w¤Ãô°8Þ!‚¼#¡‡=Þ‘yÐÃï°G:Þ!tØÃà°‡;ÀapØÃ&öx‡=ÀawØ#öHÇní{HÅéþ°G:ì‘{¼#öx‡<ÞáƒM,Á=Þ¡…@hÁýxGq’{g·ù°G>ì‘Ýæc·ù H>êQ{Ðc·ù°G>ìQœ|¤ï ˆ`9@é`é`é`àà‘6Aï`öò@ï`é`é öðöô`Raéðöö@ò@öööñö ööï`ò»î`ï öðöî@à`à`ò@é@à›`ï0Ëðò`HBòpö‘öðö‘‘ööööðöööî`é@éðö öðààööô`é@òò`à@é`òðéðé`ï@é@b±[ààöï`é°þ[é`ï`ï`é öò@é`é`baé`é ö‘ööðé`6!ööòðéðéðö`aï`é é`ï`ï@é`é@é`éðòðé öò`ï@é`ï`é`à@ï ï@ààöðööñööñöñòðgà`öö@é ô@ï`à »%ööPÐï@Î@q™öð»õöð'øöðñšiïp‚ùðgï°[ï`ô@Å ööþ!&˜»õé`ïñöà öðò@ô î»%5ðÃÐ=@ ®7PM@½à UöPï`D° ®Ð9 åïpà`ï@ï ñö ö öööðöñöðö ööðö é@é@ò òðòðé`ï@à`é`6aï`ï@é@R!ö òð6±[é`ôàò`à`à`é@›ðò`äà ö òpé`é@é`à`ïööw!ööðò@é`é°[ï@þb‘baòöàöðò`é`ïö ï`é`ò`é@éðgé`éðò`à`îé ñöé@é`é`é@é öàà`baà@é`ï ööàà`baï öðöðöàà`ï`à@ò@6qé`é@îöðé`é`ï öö öàà°[ò@öàà`é ööö ö@ò`ï`ï°[ï`ï`ò`àð6aé`b‘öààðòàà`é ô ïö`ï`þòöðò@òðRaï`ïp›°ï È@ò@ï@öpöðqòðö ö öp!ö öðö ôpöpö@òðöP Óœwabîò`‡gbAé@bq öï`ï ö@Raé@ M°ÛÐf« íÐ îà‰Ð ï ”ðôp ~° YP ›`™`òðààööï ö ööaé@é ï`à`ò`é`éðö öðöî`ï`é`ï`éðö ôþ`éðööîðöðò»•ö öööï@é`ï —Iöòðòðö ãP ò`é@òð!ö‘!»•baï`à`baà`Raéð&˜ï`ï`ï`baï@éðöðöð6ÁYöö»•ö»E‘ï`ààöö@ö öî`Raà`ï`6aé@ö ï`é`é`é@ô`éðò`ààööð!ö ôöî ö ö »öð»•þöï`à@à`ï`ñé`à@ö@ò`é`ò`ò ö ò`é`Rñöö!ö baï°[à`ôàöðaï ñòðò`é@é`R!!ööö°›°ö@·ð6ñôðé°[é`R±[é@é`ò`é`ò`é°[à@é°[òð‘»eaï€$ï ï0Íe¾ ËÀ Р Åà ËPæoŽ Å€ Ű ã‘6qöðò`M°Y°ï`òöðò`ïï öþò öðé`î@ïàà°[é@ï`é`ï é`baé`‘öñöðé`ïñööðöaô‘ö ñöö@öbaé`îö öðé`ï`òð6‘öàà@H2Ìöðö‘»õööààöàà »õö@é`ò@é@é`é`îé`ï`ï ï`é@ïöð‘öðöðé°[é`é`òööðö é ò ò°[ï`ò éðgïþ°[ôö é`ò`ïöàà`ï`ï`baé@ò@öööö é`ò`aàðòöé`ò`é`Raï@!‘ö öö@ò`bab‘ööö é`é`é@ï@ò@é`é@îö ô öðööö`öööðé`ï`à`é@ï`é`àöðöðMÐ Kðô  ï ö ‘6aé@‡Gé`àà‘òðööî`ò@‡gààö þé`ààö6aé`ép™ï@6!ö ï€$wq™6Aœò²Ñ“÷NÞ;{ ßÙg/¼wï쥣GO^ÅŠï쥳÷Nž=zò"Ú{g/¼„éìELXÑ^:{éÒÙgï½w ÓÙK—={é*¦³—.¡½t ÓÙ“g/½töÀÙK÷Ξ<{éäE´—Î^º„åU´÷Î8{íɳ—ÎÞ;{éäÙK÷Î^D{ô쥋hܲwöÒÙ“œ½tïìE<úîè;{×ìÉ|g/½t #Ú{g/=yöäÙKg/½töd&Lgœ=yöÒ%|gO¦¶„éäí¶'Ï^ºþwöäÙKw4]Dy¦³n÷;{éÞÙK÷.aºwöäÙ{wœ»wöÒ½³—Î^:{ïìÉ£g/Ý;yéìEÜýΞP„Ø‚3脇Eh‚'È‚ z(‡&x‡Plh‚H‡Š°‡w{Hp°™HyHzØ {H{Ø #K‡w°p°y°‡Ýˆ{H{x{H‡ˆ‰„x‡„H{H‡w¨v˜kÈ‚wÈxh‚x‡þz‡o¨r‡Ø‚†€‡&x‡t " ‡w°‡tHˆtxpHˆ{x‡q(†tzHˆˆ°‡w°‡w°yHˆˆ°‡t°pHˆw°‡w°y y°p°‡w°y°‡t°‡tHpp‡B±‡t°pp{H‡w{ ‡„x{w¨y°yx{w°‡t°p°‡w°‡tx{{H‡„H{H{‡„x{wH‡ÝHˆt°‡tHyHˆtx{x{‡„wx{H{H‡ˆwHˆt°‡t°z˜t°‡w°‡w°‡w°™°y°‡wÀµtØþt°‡BI‡„{H‡„{H‡w{Øw¨ˆt°‡kHp°‡ˆ°‡w°‡t0²tw ‡„x{{x{w°z°‡Ý°‡tHˆt°y°yHˆt°‡tHˆw°‡w‡tx{{x{H{ðNÈzgˆˆ„‡BÙ {Øt°‡Šx‡Ý¨yˆyx‡Šx{({xyxz°‡w y°‡w°yˆˆ{‘‡ˆ‡Šx‡Ýxz°‡ˆ ‡÷±‡ yyx{¸†wH‡„H{H{p°y°Ø`È‚PÈyÐ3°‚&èyø€HØ`aþˆ{x{H{H‡„‡„(”tHˆw°‡ˆH{‡w {{ y {H{H‡„x‡t°‡wÀµt°w{x‡tHˆvð hrhzÈrÈ‚=hox‡vè{Ð/ ]P‚‡ˆ„„{Ø ‡w°‡w°w ‡tˆyxzf°‡ˆ°‡t°‡t°‡tx{H{x‡tHˆt0²t°yx‡Ýˆ{‡„‡w‡t02yHˆwHˆtHˆŠ°p°y({x‡t°z°‡ˆ‡wHw {H{ {H{H‡„H{‡„H{x‡„ {\õþw°pH‡„x‡tx‡t°pHˆw {H‡„x{(”‡– {H{‡BI{x‡t°w{({ˆ{x™HˆtHˆwH#{‡ŠH{ {xy°‡wH{x{x‡„x{x{ ‡Ý°‡w°‡t°yH‡„ ‡w°‡ˆH‡ŠH{¨{ˆˆt°‡wH{x‡t°‡w°‡w°p°‡÷I{H{x{{H{x{x‡ Ø„&Ø dØw‡Š°‡ I{؈ ‡ yy¨ˆw°‡ˆ°y0²t°‡w°‡tx{x‡Ý°‡t‡Šxy°‡tx{zˆˆÝxy°‡ˆ°þzxy #{‡ÝHˆw ‡Ý°‡ˆÈ†w°‡t°‡tHˆt°‡Ý°‡ˆ°‡B¡yHy(yˆyØ„%‚§‘‡tˆˆ„wØw0²w‡wØ #K{{x{H{xyHˆt02p‡„H{ p°‡tx{{{x‡t‡txy°‡ˆ‡BI‡w‡Š‡txyx‡Ýxux{Hyx{Hyx\K‡w°‡w°y°‡w°y°rè„e(d(d(÷qdøq!/d@†!/d(d(døqdrd(d8rd(e@!G†¿g(dðqd(gþsG†bP†#Wdrd …bPdrZ¸gðqdX†W†bX†b@!_g(d(d8òb@†[(†eøqd(dre(g`†eX†bX†!W†b@†¿…bX¿G†ep†b@!G†eøqd(ZXgðqd(dðqdXG†b(òep†b@†e(dX†b@g¸…bP†ep†!wG†b(òerd0tdøñ"÷MX‚Ý(yx‡Ýx‡ y‡t°‡B‘{x‡Ýx{xyx{H‡„H{‡t‡w˜w°‡t°‡ˆH{({H{x{Øwzxþy°‡w‡t°yxy°‡w‡tØBÙwH{z°g°‡B±p˜t°p°yx‡t°zˆyx{ { ‡w {‡w‡w‡t°zx‡„‡t°z°‡wHˆk°‡tHˆt°‡wH{{ˆ{pp°‡w‡t°p°‡tØ { {x\K‡„xyH{xy°‡wHˆÝH{H{#‹{H{‡w‡wØŠH{؈Hˆw‡t0²w°‡t°‡t°yˆˆq`†w ‡w y ‡w¨ˆB¡‡w¨ˆˆ‡B‘‡Šx‡Š‡ˆu ‡ˆ uP‡Ýxþ‡ŠØwP‡B¡‡w¨z‡wß—‡Šxyx‡ÝHyˆyˆzxuˆVyu ‡w‡w y yHyˆz˜zˆu ‡w ‡ˆð}yˆyxyx{ØŠx‡Ýxz(”Bñýˆ yxy €x÷Žž@yé½£'O@zôÊ£'Oà;yé©3(Р¼wöÞq|gð=Š ”—ΞIyïä9hP ½wߤ'Ð!ÏwôÞÉ£§Nž@yïä½k²(‹@döÒÙ³G1ê;yö8ÚhÐÞ;{é쥓gï]:{ò¢¦‹šÎ^:{òì½³ÇÑ8wöÚ3hï<{þïì¥{g/G{éìɳ—Π½wòÞÙ“gïZT{é¢Ê{Už=yQÓ½“Gc:Žï䥳÷Ξ<{é8ÚKU ¼wé콋 νtQåÙ“gœ=‡öäÙ{Gï½wöÒÙh/]:{éì½³—î]ÔtöÀ¹³—î<{éì¥3ø.½tï콓gOž=yöÚK÷Nž=yïÒÙ“Ž=àØ“Ž=é¼cÏ;ö¤Õ;㼂 2· s 3Á £Œ†·0 2Ê0ƒL1&’M6ä8CŽ3&šHN6×â3Ù8CŽ3ä°˜#‹ä\CŽ3ä@óJ"´(ƒL1*ƒŒ†Å £Ì-Ì@©Œ„*à þ2ʣ̔È(ƒŒ2Ëly ”Ì ³ 2¯(sË”"£L1ȳ¥2ƒŒ2Ë(e1S*à 2Å(ƒÌ-˃Œ†SÞòÊ-B)a1ÌL©L1*ÃŒ2È(ƒL1È(óʔγ%2Å(s 2Ëh¸Œ3È#¡2Å £L1Ê SŒ„·,SŒ„Ê0ƒŒ2*SŒ„ňz 3·0#¡2È(ÃŒ„Å(ƒÌ4!=ÅÈc8ö¤cO:ö¼ÃQ:ö¼“NTò¼“Ž=éØóŽ=é¼#=¹Ž=ïDõŽ=éØóN:ö¤cO:öÐóŽ<éØcÐ;験ŽAïØ“NTïØ#=ï¤Õ;éDõŽ<Ùãþ uQ¥#=ïÈ“Ž<験Ž=òØ#Ï;ò¼c@òØ#Ï;éØ#@ö¼ã8QóN:ö¤Õ;ö¤#=ö€cÏ;ò¤óŽ<ôÈcÏ;ò¤cÏ;ö¤cÏ;éDõŽ<öh#PT洛;à¤cCÙóN:ö¼cGö¤c<ïpdÐ;òÐã8•¥SY:QÉcO:•½“Ž=ï¤#=ä,óŽ=ô¼ã<ïäAïô=é óO?ýüÓºëþôã?«÷óO?®·îOë«ÿÓÏ?´¯îOë«ÿã 2ÙÐc’AïðDÏ;ôÈc’<ÑóŽ<& $öÉcR1Q$=ïÈóŽ<ØË#=&þDE $Ï;ô¼CÏ;QDÏ2ôd@ôȃ"òpÈ;äay˜Äò@†@8ByÄ!öˆ<Þ!wÐCqÈ;äñz„ï ‡@ òy„ïPÇ;èa“4Ï$y=Þ!w4aAÇ;!‡Ø#QI‡=Ò•wD…:öHGeÀáŽwØCöGTÞ•t؃ö‡=ä•tØ#öˆ=Þ•t¼CöH‡=Ò!{€Ãò‡;¢’ŽwD…:Q‡;ì‘{¤ãö GTÀAk¤ãG:®ñp¸ƒäHÇ8Òw¤ãï u®ñê#ï Î8Òáþê¤ãàH9Àár r×xG:ÆAr¤ƒé‡8ÒñŽq\ÃàÇ5ìqwÈ#àÇ5ÞŽt€ÃòH8P™ŽkÈãäH9À‘Žq€Cä@%9®ñŽq¤C’ïHÇ;ÆAŽk€#àH9ÆaOp¤ƒ× 8Ü‘p¸Ãä(Æ;äaŽÐC œ@èñz¼¢²›(Eq×:üc¢ýðÇ?úAÑøãý‡?ú1ѬîÈH‡CBÈãô=¢By8äô‡CäáƒDE‘Ç;äazØC︅ôC>ôÃSòC(¼5ˆÂ#ô)T‚?ôƒ6œ@ˆA>øC=øƒ?ôC>lk>øC=øþÃSÂCøC=lk=lk=œÁ-d-˜A>ôT9ØG64A:`C\C:ȃ=¤ƒ=P‡=ȃ=X“=¤Ã;ô€<Ìa:ØÃ;Ѓ2„œÀ„B:¼ƒ=XCä@:È6,Á;`C\C:؃<ØC:ȃ=¼ƒ=¤ƒ=„=¤ƒ<¼C¼C:ȃ=¼ƒ=¼=Ã;¤ œ€¤C¦C¦ƒ=ÈC:ØC:Ø8„CØG(G¼ƒ=¼ƒ=¤C¾C¾ƒ=¤C‚ƒ;ØC:؃<ØÃ;ØÃ;ØÃ;؃<؃AÌ¡<¼ƒ=¼ƒ=¤ƒ=¼ƒ=¤ƒ=¤ƒ=¤Cr„ôPÃSC œ7ä€1,BˆA>0AxÁ=T6 @TúC'ÐÂ?ÜÂ+@e?äC?C:€ƒ=¤ƒ=È<,=”ÃäÀ;0A(A70´C|€(ä@¬dÁ*Ä@|@(°À;h‚¼ƒ3¼C;d€@¼Ã)A ÀCä€=¤<4=”ƒä€=0Á(A70|C|€(Ä@¬dA(Üþ@°@(°9h‚È2ØC;t€3ØÃ;0A(A:œB´<0@ì t<0@´=¤ƒ3¼ƒ<؃;€ƒ=„=¼uØC:ØÃ;È=da:ØC:ØC:ØÃ;„<Ø8ØC:ØC:¼ƒ=€ƒ=¤ƒ;€ƒ=¤ƒ=¼ƒ=€ƒ=„;€C¾C:¼ƒ=€Ã‚ƒ=¼ƒ=¼ClÂÈÃ;8C:ȃ@ÈÃ;¤C¦ƒ=¤ƒ=¤Ã¦ƒ=¼ƒ=¤ƒ=D:ØC:da:ȃ/ÛÃ;؃Cȃ=PÇ;Ä;da:¼ƒ<ØuÌa:Ø8ȃ=¤8dá;Ø8ȃ=D:¼C‚ƒ=¤ƒ@ØÃ5þ؃/¿C#ÈÃ6da:ØÃ;È@;,BC¨C&,ȃ;ì¤C&,B<@"¼ƒ=¤Ã;ØC:Ä;؃Cda:da:ÈÃ;ØC:l´<؃@da:¼ƒ<ÐC¦ƒ@؃<¼ƒ=¼Ã‚ƒ;¤ƒ=€ƒ;da:„=¼ƒ=€ƒ=8D:ØC:ØC:¼ƒ=¼ƒ<؃@ØC:ØC:ÈÃ;ȃ=¤ƒ=¤Ã;ÈC¾C:Ø8¸ƒ=„=¼ƒ=¼ƒ=€ƒ=¤ƒ=ƒ3¼Ã5ø4Á ¼<4Á ¨64Á ÈC7dÁ;ƒ3äƒ=¼@=Ô:Ô)0ÂSÖ@=<åØC8tÁäÃ94Á"4Á*´CþäC ÀÃÜ-üÃ-Ü‚=ìøS"C:da:¤ƒ5,Àä@ä€90À8<4A:|Ã|AÜ€<´ƒ¼=äÀ;”C¸‚°€:ÈÃ2ØC9ì€<ØÃ;œB8@94AØC:`ÃA4A ´ÃœÀC¤ƒ8øÁTÁ ¼ƒ9ø€<¤Ã ¼C94+ØA¨Ã;ƒAä€@7<À8€¥=,8¤C†C¤ƒ54A¸ Ä;gåšØ#BÍU“éÜuHGrUì©hAOž³wîB8»v ½ å²äxg¯\yÖšä`‡â]6kYèÙæªÉ yîþ:¤#—C^¹*ïT´PG™¼v·äMp×Až3s(Òi(×ÄU×àe‘—Þ¼bïä½{—Î^ºwöÒÙ“GÏžY{àìÕ}gœ½töÌÊ“÷.½w~å¥{g/ˆž3¬©›:è‘ÇžtìyG¶Þì1+{Þ±ç{Þ±{T³ÇpêJÇžtìIÇžt쑇yÒ±'{äyÇžtêzÇò°aìÑ›tÔåöp8ꎺÈÃïHG]èatÈ&öx‡_Þ‘{€Ãé°‡_Þ‘{¼ƒÈ Ç;zó{ȃfñ =üòy¼cа=øáº#öÈG]èQ—BÙƒ²Q¢= •ºô†K´G>–˜%ÒÃÅ0‹<Ìby¼ƒï°=졳ôFé¨K:ä‘¿¼ãþ- Ç;ä¡ zØÃ,y´=ÌBwØã~±‡<Ìb³È#ô0‹<òhy˜Eô°G'Zðz¼ãôÇ;èázÈãòx‡<It˜Eôx‡<Þ {È#ï°8dó{˜Å~y‡=Òat¼CéM:d“Žº¸öxG:äay¼Ãéè<ìÙÈÃ,é°Ç;ÒawØöHÇ;ìñŽ l¢ öG1Ò!³Øö0‹=ÞazÔÅ,u=Þ!³Øã²qGoÒñŽº¤Ãf±=êwÔåöH‡=À!›tØîx‡=ÌbtäQö‡=èay¼ÃàþpÇ;ds ³<oÐà 8<ÂïXÂ&ìñy¼ƒ9¨K#é—wØãöÇ;äñ{¤CïhÒ;ü"›tØ#ï°G:ì!º¤Ã½‘‡=ÀayÔÅ,öÇ;ì‘{¤ãöH‡=TctØ#ï°G:Þawøî°Ç;ê’{È#öHG]Òa³ÔÅ,öH‡=ÒñŽº¤C6f‘M:ì!qƒf±Ç;äñ{Æ/ïÇ;ê2g¼C6…’b]Þ1[)Òö¹µí;ìQŒtØCf±Ç;èÑH{ÐÃf‘‡=Òñ{ÈÃï‡=ÒAyØãòpF:ì!{ÈÃé°þ‡<ìñy¼Cy”GoÞ¡Äwôæu‘G]Þat˜EöH‡<ÞazCöx‡_ÌbyÐCu‘‡=ÒA¿˜Åò°‡<Šñ{È£.~©K:ì‘{¤Ãéx‡=À!›wØ#廓jì{¼C‰àpÇ;äñ{äQô°G:Þ‘ŽºÈãuI‡=ÒÑ›º¤Cö¨B'–àdØãö‡=èá{¼ÃïÇ;ü"tôæöx‡_ÒaFÚãuyG:ìá—º¼#²‘8ìñyØCöH‡lèaw€£.廓<ì‘zÈÃïHG]ÞawØãé°‡3ê’³¤CïHÇþ;äñy¼ƒï°Ç;ü’‰w¤Ãô‡=Òa.ËÃé°Ç;äatØÃ,²y‡=äatØïp8êâ—tÔ¥‘ò°Ç;èapØö=ÀawØãöHG]ÒQ—tØ#uy‡=ü’%¾Ãéð‹=Òay¼Ãà°Ç;ìáp¼#ö‡Óñ{¸öH‡=ÒatØÃ/äpÆ;äa¿¼£ËïÇ;äatØ#ò‡2êRº˜E·ö G]ÞQ—wØãR¬‡ßQ—zȦu©‡{SŒe¤Ã¯–‡=äawtÙòHG]üòy¼#öxõ;aW§Ãï°G:þì‘{¤Ãò°Ç;ä‘{È#f‘Ç;äatÈ#òH‡=Ò!›tȃò°‡_na.¿CöðË;ì‘¿¤ÃïG:ìñêwÜÂïG:º {¤£.y”‡=z#w€Ãò°‡;ÀatÈ&öP_d“{¼Cu‘Ç;ÒQ—w¤Ãï°G:ê"Þ€#öx‡<Þ„M,Á,ÎHG—ßá{¤Ãéx‡=ÒQ—<úÅé¨K:ì‘{Èãò°‡jê{¤ãuQÍ;äQ—t¼Ãé‡=Þ‘pÐãöè<Òñ{¤£.é°Ç;äatÔ%ì!ìÁ,ìÁì¡ËìäþÁüÂÒÁÞÁ/ìAÞìáäáì!ì!äÁÒÁ/ì!ìáä¡.ÒÁTÜÁÒáì!ìÁdC5ÞÁÞÜA6ÒAìÁ/èAzÃÒ¡7ìáìÜÁòìáìáì!ÞÁÀÁÞAÒáäÁÌÂÀÒ¡.Òì!äáèÁìAìAÒÜÁäÁÞìAìì¡‘ìa”Á/ÒÁºììáìáäáäÁÞÁÆÞÁÌB6ÞÁÌ¢.Ì‚ÞAŠè¡.ÌÂÞÁÞÁÞ¡.ÞÁÞÁÌ¢.ÞAŠÞA6ÌÂþÈ¡h!äá^ÍÞ¡ËÞÁÞ!ÌÂÒ¡.òÈ/ì!Š!ÞÁ/ìáÒáì!ì!ì!ì!äáì!äÁäÁÒÁÞAìáì!ìAìáÒAì!ÞÁ/Ì‚!ìáì!ä!ÞAÞÁÞAìáìáì!äÁ,äÁèä¡.ÀÁìÁ/ìA5d#ìèAìì!ÌÂèÁÀÁÒÁäáìAìÁ,Ò¡.ÒÁÒÁÒÁÌÂÒáì!ìììáìAèÁäÁÒÁN šÀ/Š¡.üÂÀÁÒÁÞ¡.ÒÁÒáþäA6ÒÁäÁÀ¡.äÁÒÁÜêâäÒÁÒÁÌÂäáì!êâêâê‚äÁÌ"ê"ì!ìAÌBÜìA5ì!ì!êâ²!ìáÒAÞáÕÒÁüÂÒAÞÁÞAì!ì!ìÁ,ìáäáìAÒÁÀ¡.ä¡.èÁÀ¡.ÞÁÞÁÞÁÒA6ÞÁìáì!êâäáäáì!ì!ìáÒÁ/ììdCêì!ìAzÃÜê"ÞAìä¡.ÀAìáÒÁä¡.ÞÁä!ìêâÒáìáìþ!ê"êBìAÒኊB‹ŠŠ(tŠŠÁh¡ì!êâì!êÂ,êâ쨩.ÞÁÀA6ÞìáìádãììáEÍ¢7ÞAÞ*´B‘B‘¡B¡–¡B•B‘¡¡¡˜¡–¡¡n¡”¡¡œan¡B‘¡œaŠÁŠŠŠ(Ô–*tŠÁ–AŠŠA¡ŠŠŠÁ–¡I‘¡¡œa(ŠŠa(˜ÁŠI—¡œáŠaŠa¡AþœA(t(DWs”a¡¡”á*Ša 6a ì!Á,ìáèAìÜÁÒÁÀ¡.ÒÁTãìÜüìáìáê"ì!êâì!êìAÞÁšÄ,ÒÁÒÁ,ü¢.Þ!ììÁ,dãz£.ÀÁÞ¡.ÒÁÞÞ¡.ÞÁÒ!ìÁ,äÁÞÁÒAìáäÁÒA6ÞÁ/ÞÁÞAÌ¢.äÁTãìáìAèAÒÁÒáìáì!Þ¡.ÞAì!ÌÜAì!ì!ÞÁäáê"ì!ÞÁèÁÒÁÒÁþÒÁäÁTÃÌÂzCê"ì!ì!ä¡7ì!ìAÞÁÞÁÒAìáìÁ,ä¡.ÒÁÞAì!ì!ì!ìèaœ!èÁ,èAèAè¡‘üÂ,äÁÒáìádìAìèÁÒÁäA‰ä¡.ÒáêBè!ÀÁêBì!ìáÀÁÞÁüÂÒA‰ÒÁ,ìáäÁ,ÔIè!ºìzCÞAÞAèAÌBÞÞÌ¢7äÌBÞò¨7ò¨ËÞAèÁ,ü¢‘è¡‘ìÁ,èAÞÌÂ/ÞAÞäÞÌ‚ºþÌ,èAÞAÌBÞºŒ¨ºÌ,äÁ,ä^”ü‚¨äázãÔáèAò¨7äázãzCÞüâäÞAÞÞAŠ`š@Þ¡ì!ÞÁÞ¡.äÁÞÁä¡.ÒÁÒ¡.ÒÁèÁÞÁäÁÒÁÒÁTÃäÁÞ!ìAÞAìAì!ì!”(êâêâÒÁÞ!d#ì!ìA5ìÁ,ü¢.ÜäáÒÁ®AÒáä!ê"^Àì!ììáì!ì!ìáì¡Iì!ê"êBì!äÁÀA6ÒÁÞÁÞÁÜþê"êTÃÜ”ˆììáäáêìÁÀÁÒ¡.Ì"ì!ìáä!ìÁ,ìáäÁÞÀÁÞ!ìAÌÂäáÒ¡.Þ!ìáÒ¡.ÌBÞAÒÁÞ!ì!ì!ìáÒ¡.ü‚䔊ԡ7ˆª7äÁü¢7̺L5zãä¡7Ò¡.Ì‚ìÒÁÒÁÞÁä!ìáêâäáÒÁÒÁÜ¡.ÒÁÞ!êB5ì!d£Ëì¡7ÞŠäÁ,ä¡7üâè!èáèÁ,ìäáìáìáìä!ìäÁÞŠÌBìÁþ/Ì‚ÌBèAÞAì¡7ÞºìäÁÞÁèAèÁäáèAì!èAèAÌBÞÁèáäÞìáèÁ,äá ¨7ò¨7ÞÁèÁ/ HìÌBì±ßAÌŠÞ±ßAäÌ‚ÌÂ/ÞÁ/èáäÞÞÞ¡ 6¡ ìá¡.ÒÁTCÞAì!ä!ììÁ,êÂ,ì!üÂÒ¡.òÈÀ¡.Òáê"üÂÒÁÀÁÒ¡.ÒÁÒÁÒÁÌ¢.ÀÁäÁÒÁÒÁÞÁäÁÞÁTÃèA6Òá®ÁüÂÞÁÞþ¡Aü‚d` N ÞAÞÁÀa‰Tú! ÞÁÌÂèÁÞÁÞÁÒÁÒAì¡7äáì!”èìÞA5êBèÁÒ¡.Ò¡7ì¡7ìáÒÁÒÁÒÁÞA6Ò¡.Ò¡.ÒÁÞ¡7äÁÀA6ÞÁäÁ,ÒÁÞ¡.ÒáÀÁd#ê"ìêìAò(ìÁ,èaÁ,èÁ,èÁäÁüâü¢‘ìAÞÁÒAêâüâìáìÁ,”Hêê"ÀÁä¡.äÁüÂÞÁÀÁÌÂüÂ,ÀÁÌÂÀÁäáºÌ,èáÕèAìáþäÁ,èáèAèAèáìAÌÂtNÌ‚ì¡ËÞAìÁ/ÞÁºÌ,äÁäÁäÁÌÂÒáÒáäáäÁÒÁü"ÞAÌBÞÁäáäÁüâèáüÂÞÁ/ÞÌÂü‚äÁèáèÁ/òŠü‚ä!ÌBÌÂÒAêâºìäìAèAÞAèáüâzÃ,èAÞìáìAòÈÞAèáäáèAŠ –À/ŠA5ìAÞÁÞÁÒÁÌ¢.äA6Òáü"ìAÞAìÞA6zÃÀ¡.T£.Ì¢.äÁÞA5ìþê"ì!ìAzãìdìáìÁ/ÌÂÌ"ìÁ,ìÞÁ’!œA’¶AœAÞAÞÁÜá€A b` ˜ P8 r  ÀàÁäÁò(ì!ìAÞÁòÈÒÁüÂÜÞÁäáä¡.ÌÂÒÁÞÁÒÁÞAòÈäÁÒÁÞÁÀÁÜÌ"ìáÒÁ,ÒÁäáä¡.TÃÒáÒA6ÒÁÒA”H5ìAìê‚ÒÁäÁÒA6ÞÁ/ìáÈÁzãèÁÒAÒÁ/ÞAìáìAê"ì!ìáìÁ,ÜþìAÞ ܳ—®`:yéìɳ—Ξ=yöÞ¥“÷Î8{ïäÑ£'Ïž<{àºs(Ïž<{ïìÉ“÷îCy-ßÙ[ùNÞ»éì½[ùn¥¼tö|¾³÷ÎÞ;yö|¶´÷N^KŸòÞÙ“gOÞ;¨ôÒÙ“gž<{ï体×Òá;‡ïìÉ{gï¼töè½£÷N^:{òÞÙ“go廕ï䥳'¯åFz>[ÊKgOž½wòì½³÷.ÝʘöÞÉ{'¯%½–ôZÒk¹ñm$=ï¤cO:ïÈcÏ;ö€ãŽ=éÈóÎFò´$=騳’=éØ#Ï;ö¼cO:ö¤#Ï;+½“Î;>½³’=éøä<ïÈóÎJéÈ“Ž=éÈóÎJö¼#Ï;ò¼#=ïØ“Ž=+¥³R:+¥ãÓ;ö¤#=òØ#=éøôŽOö´dÏ;ö¤óŽC>Åd<ïØóÎJö¤³Ò;ö¼³’=>ÙóŽ=éØCÏ;ɳ‘<ôس=+µ$Ï;ö¤cOA½#Ï;ò¼c:-¡GO™HG ì!¤CSï°G:ì‘{ÈÃòH‡=x"w $öH‡=Ü{¼c ïG:ì!wœ (GÒqƒs4áò¸=ìá0  éø€:>ðŽœ# ïþØÄàR¤# HÇ;äqŽØ#2HEÞAgØ#ö «=Þ‘ŽÐ5"ï°8ò{€ÃtO쑎Ð#öxG:ìAW{¼#öÇ;ÜޤÃ<±‡<ò{¸ï°G:쑎wØöHÇ@À‘ޤÃà°Ç;Â{€c ïp8Â{¼c ±‡<ÞayØCy‡<ÞáƒEd'ÅH‡=(bt äô°Ç;èá{€ÃöH‡=À¡©wØ#öH‡¦Þ¡©tPÄô°G:ì!¤Ãï°]Óñ{€Ãš²Ç;ì‘w€Ãï8ì!wØ#öxþ‡=Òatȃò°G:º‘ŽTXÆà„=Þadᤠƒ*\a‡¼#½p Òq‚vt`ä¸A/†!y $öH‡=Ò!ˆ¤ÃàpÇ;ì{¼Ãï°8Üñ{¤c ï°Ç;w¼ƒ®öp=äñޤƒ"öx‡<Þ¡©t $ïpˆt°p°y°p°ºzŠ yMI{à kx€,ˆ=#H‡w{p†|H‡w{¸.0?°‡w°‡t‡p‚t°‡tèX °ƒH‡nh‚ ŠÀ†&p `p‡ (‡&Èv@wÀž{þº²‡t°‡tˆtx{à‰H{{‡w°p°‡ˆH‡w°‡tx{xy°‡vv˜€rhy¸sh‚x‡ {‡v¨‚wèX °ƒ0‡& { yH‡]P‚Rðyx{àgذ‡tˆkXžÐ”t°‡tMy{H‡ˆ{H{{x{w°‡w°‡txyxy°‡w°ž°‡tpp{ {‡w°‡t°pp{xyx‡p‡H‡H‡H‡w°y {x{‡ˆ‡w°‡ty°y€¼t‡H‡w°‡tà yˆt°‡þtà {H{‡&è„& d°‡w°pˆtx{à {x{ˆ{xyˆtx‡t°‡w°‡w°‡tà w{H{xyà‰t°yH{H‡pp€,u¤D8ØyA{îŸ{FÐQÚAG°ŸØ¡‘J¤{FpAD`h~ÂáŒ<ö &VöfO:ö¤cO:öÈS8îØcWAàØ#=éØŽ;¥cO:g¥Ž;òØŽ;Ù“NAïØóÎ@ö¤cO:gÉc8öÈóŽ<öØe8öÈ“NAé¼c<¥cÏ;ö¤COAàôŽ=éØŽ=ïÈS<ö4þ±Iôȳ 8¥cO:öØeÏ@Ù3˜=ò¤S<öÐc<öÈcÏ;ö¤cO:¥SP:öÈcO:ö¤c=òØ“Ž<ö¤cO:òh%=ï¤s–=ïØ3PA験Ž=ZÙc—=äÈc9ÎdsÍ5Î@íL6ã8s3ä\ãŒ3ä8s3PCíÌ5äˆ 9\_ãÌ5ä\CŽ3ä\ãÌ5Î\ãÌ5Έ} 9Pƒs ××8s3×d3Ž3×8u6×s3ÙdCŽØä8s3ä8#69Î\Ã59×ãÌ5Ås ××8#¶3P“µ3Pã 9Î\ãÌ5ÅãL6Î@íŒ<ï0“O ”P ~þ€‡ 8_ÂŽ8QB%T I Îoà¼%TPÂŽ82FTPÂqŒâ|£°_A TPÂΗpÁû%T°A ”PÂØW‚ ”€}%`_ œW‚ ” %¨@ ØW‚ ”Ày%p^ *P‚ ”Ày%¨ÀJ°\ (óJP\Ày%¨@ 6‡bØc6öÈ;쑎³¤£ ±8ì!­¼#‘‡VÒawÈÃô°Ç;ÒatØÃ.<HAÒat$öG:ìñŽtØãöÇ;Ò!zØÃà°BÎ"{¼Ãà°Ç;’{¤Ãé°G:ìñŽØ#ïHþ‡=fctØ#ïHÇ;|°‰% „ôH‡=Òaw$)8ÜQpØCö°‹=ÀA„ Äé(È`ìñpØCïˆ=btÈÃàp‡=ÒaÂÈÃïG:"{¤Ãé°Bì‘„ÈÃIÇ5ÒQ|ô#ùè‡7Ãéoö#þȇ?ú¡Noê#œÞì‡=¼éôÃî §:û‘x³ùè‡=îéuú#ýg?òÑoöÃùðÇ=ëqÏ|̳Þœ§?Ü©Îpú£ᬇ:½ÙoªÓþðæ<ûNäCÞ´‡<œaÿýbðL@ÓŒaÄØÀþÿfŒFl` ’D ˆ1 𶢏(ÁJ0†Œa%ÀÂ(Z±Ó­rµ«^ý*XÃ*Ö±þoŽ@F:äatØîx‡=ì’„€Ã‘=Ò!wØ!àp‡<ÞawØ#ö@ˆ<ìñ{¤Ã±Ç`ì{¼Ãv±G: ’Ž‚€Ãö=ì!wØãô8 8ìñy¼Ãé(ˆ<ì{È!Aˆ=ÒatØCöHÇ;ì1{€ã,ò°G6Ñ­ £ ï°8ìñŽtDéЊ=ÒA{¸öx‡=´"tØ!é°‡]쑎‚¸ƒî‡=’{¤!öÐÊ;þäapØCIGAäQtØöH‡=ÒQwØ#yGAÞA{¤Ã„Œ=èaÁÈãé°G:䑎ÁÈÄ‘=Òa„¤Ãƒ¡Bì!tÈ!ö Œ=cÙ Æï°‡<.ü{¼Ã±Ç;ì{¼Ãƒ±Ç;ìy †éBìñy¼ã,ò¸°=bwÈÄ)BÒñz¼Cï(F>fð?xÀ-è‚J0ƒüïÄ(Á J0Š1c’pZ1Šì¹à1J0ŠŒb£Å ˆQnì¹Ó3(A§Kàé=—`ÿ›Áÿ:]‚” Ó%èt fþP‚pµÓ%˜Áÿfð¿”`4A fð¿”`ÿ›ÁÿfP‚” Ó%˜A ö ‡bØãé°‡VÞÁ³‚¸£ é˜=ÞayØÃIGAÒa„œöx‡=À‘{¼Ãé°Ç@ì{ Äï°8ìñŽt!öH‡=Þ!wØãv‘‡=’{¤ÃòH‡<è!³¸é°‡<ìáp$öx‡=äñ{ÈÃé°Ç;ÒñŽ&lb éxG1Þ!‚ÈñG: ‚‚¤ÃZ‘‡=Òñy$ÏÒŽ‚¼C+yÏÀáŽwØãö=ä‘y¼Ãé@HAÒqþ–wØÃ.ö‡=äñŽtØ#q†=ÞÁ3yd0gy‡=bwœe ï(ˆ<ì{¤Ãò°Ç;ì!{¼£ ±Ç;ì!wØCöÇ; "z F‘Ç;ìzð !öx‡=äñ{¤£ ï°Ç;Î’{¼Ãòx‡=äawØ#y‡=Þa„Èãöˆ=2wØ!öHGAry¼Ãé°=œ‘à`ÏWððàé`NÀÁžÑ1 nŒ{nÅ(œ°g,Œb¸ÀB+Ì.Ì@+à à ŒÂ¨- ,à 8Ážá€N ì™Ì€Ì€xÌì™þxšxà€§9Áž9ÁâÀž• #8C:ØÃ`؃<€ƒ<€CA¼ƒ=¼ƒ=¤Ã`ØC:¼ƒ=†=¼C:ØC:؃\„<ðL:ØC:Ø8¸ƒ88x@A$R:ÁÔ1´RÆA+ %1Œ‚ü@+ŒB+8Á`8à1ü.Œ8`Á(à‚\88$8Á(þ8Á(<%Râ€]>e æ%_ò% %8Á 8A >%Øå Ø%ä%<%88ô¥üR–à#ƒ=¼ƒ<؃<؃V„]ØÃ;¸8œE:„<¤ϤCA€ÃY¼ƒ=¤ƒ=¤Ã;ØC:ØC:؃<œÅ@ØEA¼Ã@¤ƒ=¤Ã;ØC:ØB¤CA „=Ø…=¼CA¼ƒ=¤ƒVØC:8Ä;Ð8Ä;ØB=؃<Ѓ=ȃ=€ƒ=¼ƒ=¼C:¼ClB D1ÈCA¤ƒ=¤ƒ=¼ƒ=€ƒ;؃<Ø8¸ƒ=¼=ÈC:¼ƒ=h…=¤ƒ= „þåëS^².+³RæðåØåðåäå å4+RÁ# ƒ=¤ƒ=¤ƒ=¤Ã@¤ϼƒ= D:8¸CA¤ƒ=¤Ã;ØC:؃<Ø8¸ƒ= „=¤ƒ=¤ƒ=¤Ã;€ƒ; „<¼ÃY¤ƒ=¤BØÃ;Ø8؃<œE:€ƒ=¼ƒ=¼CA¤Ã;€ƒ;¼ƒ= „<ØC:ȃV̆V¤ƒ<ØÃ@¼C: „= Ä@h…<ØC:„<Á&,Á@ Ã`Ø8D:œÅ@h…=¤ƒ=¼ƒ=¼ƒ= „=€ƒ=ÈC:ØÃ@ F:؃<؃;€ƒ<€ƒ=¸8„<ØC:ØC:ØB¸ƒ=¤CA¤CAþ€ƒ=¼C:ØC:¼C: ÄYȃ=ÈCA „=ƒ;€ƒ=¼Ã@Ѓ<ØB؃;,‚ŒÃˆ",‚¼C:ì¼Ã", 6T;ìAÃ"ÐC7„Â)dÁ*ØÃ)d È0d3Ѓ.dA(ØÃ;ô€7A¤ ‚Ѓ<؃] „\iE:ÈC: „VÐÃ@¼ƒVȃ= =¼ƒ<¼ƒV¼ƒVÈCµÓÃ;ÐÃ@È•º¯;»ÛÅ@´{»Ëƒ=À{»ûF:Ƚ«»=¤ƒoÈÕlh…€ ‚:ÁöÀ ’A¸Àä!/åÁòìì!/=Óáèa0ÞÁÒÁÒÁÞa0ÒAÀ Ô!ä¡:!Ú¡Þa"AÞáÞAðà誡Š! ¼Úaìá:A€aì!ð`0NÁCÆaìáÒÁòr0Ðs0ÒÁÐÓÞÁÞa0ÀÁÒÁÒáäÁÒÁÞÁÞA #ò2ì!ìáìáì!ì=íAÞa0ÒÁÒ#ÞÁÞÁÀÁìáìÜ!%äÜÁÀÁ#ì!ÞìáäÁþòRÞAR"ƒìAÒa0ÒÁŠ`šÀèÒÁÀÁÞA =ã‚"ìá Þ!#(äáÒAãì!/ß!ãÒÁÒÁòÒÒa0äÁèÁäÁòÒÀÁÞ!ì! ãCìÞ!ì!ì!/É¡{ïìɳ—NÞ;yöÀÙ“'ï½t8í½Kg/Ρéì¥{÷Ξ<{öÒÙÃùΞ<{ïäÙ“÷ÎÞ;¦éÒÙKǧ=pöÀ¹“‡Ô^:yLßÉcjœ½töÒ½cšÎ8wHí¥³÷ÎR{éì¥{go¨¼wöÞÁMÇ48wïìÉ£'i:{ïÒ-³Gg:{ïìÑcšÎ^:{ïì¥c*Ï^:{ïþ쥓÷ÎÞ»töÀ1}G\pLÓÉ{7½tà˜¾KWž=pîì!çŽiW{ï쥳νtôìɳ÷Î8¦éÞsg©½töÒÙ{gœ;{ï঳'O,ñ=иSé0Õ•=òØ“Ž=ïØ#=éØóŽ=àÀ•Ž=ïØC=ïØãŽ<öÈóŽ=ïà”Ž=ô¼#Ï;ö€cO:öÈ—=Á!e<éØóŽ=ïàd=é0Ž=éØóŽ<ö¼“M+W$1Æc\1Æc\Á%1¸´BŒ#\Ž™Ä˜fŽ1ÆCŒaæ\ŽÁåIŒÁec˜if\&qÅCŒqÅxr9—c\þ1Æ Ip9Æc$1ƘI\1†™c\‘—c zÅWŒÁicp9§väóŽ=É<"J«¤Ä²<ö¼“Ž=ïØ“Ž=ïÈcO:öÈóŽ=ò¤c8L¥cO:ò¤cÏ;ò¼ƒS:ö¤cÏ;ö¸Ž=HÙóŽ=H!%OpÁÙ“Ž=ò0ÕS]á×;ö¤cO:ö×;ö€c<éØƒSò¤cO:ö¤cÏ;ö\cÏ·9ÚƒÓ;î€ÃT:öŒãÌ·LáôŽ=ï¤cÏ;ö€c<ö¤cOWö¼“SïØ“SïÈc<ö ÕUpé0•Ž=éØ\ôÈóN:ö¤#O:ö¸ÃÔ;ö¸#=H1Ž=ïþØC=ï¤ÃT:ö¼#Sé¼c;ô %=ïØŽ=éØœ=ïØ“Ž=ò¼#Ï;AtRE:òÜ;ötÅT:ö¤c8îØ“Ž<ö¤cO:LuÅT:HáôŽ=ïÈóŽ=ฃ”=é¼cÏ;ö¤×;ö •Ž=HÙƒÓ;ö¤cO:L¥cO:ö¤côOÔ£ÃH‡=ÞÁŽÁH©=N‘…UtƒôX„;²yÐCö`AÒÑŽ=dáíØÃ‚QŽ,dºþÈÂ-Ú±‡0¼Ãg¨F'ܱ<Èã‹09˜"ÃH±=ìñ{'íè@:’Ñ €aí脲 €3xCíèÂ;äÑ ØA98Å‘{€áöpñy¼C2HÇ;ìñr8#L‘‡=ÞatÈ#8öè \ÞatØãòN:˜ŽtØ#öH‡=ÞatÈ#8öx‡=bz¼#öÇ;ìñœ0)ö‡=ÒÁ”wØCöŽ=ÒÁ”wÈãöSÞÑ{ÈÃàH‡=äÁ”tØãöG:ì{ȃ)]±Ç;쑎wØãAØÄè!e‡)à`þJ:쑤ØCïGpìy %pIÇ;ì‘{¤Ãé°G:Þ‘{¼ƒ)ï` 8˜ò{Çà°Nàò¦Èãö‡=äayÐc(LI8ÜÁ”wdCLy‡=Þ!wȃŠy‡<Þ!wÈ)ò Ç;ƒœØ#ô=äaz å[öHÇ;ì‘{¤c£H±Ç;äñ-z¼C1ôSèaqÑ'ôÀÉ;äawØCï°G:ì!wà„ò ‡<è!wÈÃï RƒózÈÃé°NÞÁ”àÈÃò ‡<èz,#ï ‡1¾ŠŽ6|Õé‡=˜ 02xÇþ8äñw´À-hÇ;\!œ´#nx<2`”#é`A9šytàäH9\á…Ø£Y8‚*,a‡ôÂbHNºbyØCö=äatØã8±‡ ö°M`YïMpêMéMÀàÀé`é`ô ö é`ï`8ñ-ò0ÖÐïpåÐ9ð9 é0ÝPã  Ð 9Y€éäðî€, é`ï à`ï`äà òÀà`îLþ!öðö@öðòÀéÀï`H!éÀï ïÀïÁ‘öööðòÀé`Áaòöö é éÀïÀà`8AàÀé`îöpH‘öàà`é ÁaÁaéðö€öpáà`ï ïÐòðÅ@Šaé`à`òöL!ï`é`]aé`òðp!ï`éÀéö öðöHaïö ö8‘ö î`8é`Caï€ô€ï`H!ööp ö€ööþLñò€5ðºé  Y åÀY íÐ ï€öp fPL‘Ö0v ßx é ï`éÀßbHaé öö€é`òðö€öðö ßbßòöðöö€ï`é0öï`òðöðö€H!öðö€Ÿö€öö€ï öðò`òðöðöðò›`ïà ù ôÀ _U ÜÐýp öðî@Øàéðö ìpg ïà  zDé`@ä ÓÀ` åÀD åÐ9ðLЫ f@þM@M0 M° (pÁò` Yô`òðL‘öHÁé`à`ò`íàAÐðïðÐ9 d°ÞðíÐé  ^@Æ 7 é DÀG@ ípéÀ2 öö0Å€Áaô`ò`éÀé öò€öî`éÀHaéÀéðLô`éÀéÀéðéÀéð-öðöà`ò`ïî`é`CaôðöïÀô`à`éö€ôÀø‰ò`éðöL!]ÁòÀé`M° Kðôþ  ï`é`é`ò`ôLñöÐL‘Lñöööï`é`îöp‘öðé`ï`îLé`ïö ï`CAà`é`ï ï`8ñööðL!ï`ï@ï€ï`é`é`òðL!é 2 'P!PY@D(àðé`d D àðöö ï`é`ò`éÀòðöö€é`8‘öööðééÀò`8ñò`é`îLñ-L‘L‘ööþL1éé`8‘öðöööàà`é`òC ðòÀ ù€×ð ›À §ð ¯p ò`M°›`é ïpò .ï`速ðHÑ Y€öðö ï ï@ï .ï`øjé`ï`ï`ïààð8ñöààðòòòòðé€8‘òHAòò`HAò€òðé`ï`ï`Áöîðöö éÀ ï ï Haé`ïò€8Á8aïÀîL‘L‘ö€âòöï`þàp‘öðóšL!ö€pñöö€ò@îLò8‘öïöðöL!ö ö@à0¯]ïöï`ïà›ï Å ßbéðò`Haàé€é`à`ò€LöðóšööðLî`ïéðö€L‘LŸö ôÀé`é`éðööÐöÐöî`×€ööðöööïPï Ð ÀfP>ð1PM 9Ð>2`ï Ð â(ðL‘öþðöööööðööðöð-L‘öðöLÑöÐé`éÀàÀà`ÁöïÀ]ñöðöðöà`éÀ]aïLñöö öðööö öò` 0Åôðò`ß"H¡éðòð™` ö éðL!Hï`òïÐ`òÀ@ò`ï ööðô HAò`8aòðö8‘ï LáöðLñÁaéðò`é`ò`8Aòðöðöðô`ï ï ïþH1L‘öðöðôðô ßB «`ßBË öðò`ïï`ïé€é`é€ïLï`é`à`òð-öôàö@L‘àÀé`]î`é`é L‘ïßbòð-ö@ò`éð-òðöp‘öÁÑò8# à öðò`é`é`AÐ K ï€ ïÀîLñé`éîïpöL‘ô ö ïïöðöð]é`ï`ï`ï`é`ï`àöö ï öþöààÀï`ò`àï`Áaïà Löàà`é`8a2°, òMÐÝÀ` ïÀg éÀY°ï`šàé` - Ypîöðé`ïLñé`ïö@ò`îL!öL‘LéÀà0¯ï Á!ô ö ööL‘HÁé`ïLAò`àpáôàà`é`òö H!ï`à`ï`H1ïà ùðö€pñò`ï ï ï`8aßÂï ïÀï€ï€é éðéþ ï@ò`ï€ï öö€L!ï0Haï`òðL!Haé`é€ö€ï`Haòòð8ñöðòðö0ï`ï`H!öðòðé H!ï ï`òL!öÐö öÎðöööðLáàöðp!öLñ-ööðò`ò`é`ò`éÀï ï`òÀéðé0¯öðö€ööðp!L‘ö LñééÀîööööð}/ï ïHAîLñé`ï`ïþ›°öðÅ éé p‘ï`ôàL‘à`ò`ò@ò`é`é L‘öðöîéðL‘ò`é`éÀé`òéÀïô ö@ööÐp‘ààøiòp òï öLö öUšøð±‰žÚ“Ž=ïØ“Î;験Ž=òØŽ=òØóŽ=òØóŽ=Et²„<ô(“Ž=ïØóN:ö¤c=ö¸NGï¤cO:¦Ó‘;àp˜Ž=>¾ã8ïÈó“;àt$=ôØ“U:´ý”Ž=験NGòØCO:öÐó=à¤óŽ=feO1öÈcO:?Éó“<ïØ#P:YÑóŽ@öÈóN:ö¸Ž=ïØ#=éØóŽ=´Ù“Ž=éØ#OGéd%O:öÈC=ïÈó8ö¸kOVö¼ÓÑ;òØC;ö¤ÓQVét$=þéph<ö¼“Ž=>¾ÓÑ;ö€cÏ;ö¤Ó‘<àØC›=ôØóŽ=éØóN:eeχéØ#Ï;Èä#=ïü”Ž=ïØ“Ž@ö¼“Ž=òXz¦=éØóŽ=à¤óŽ=vôŽ@ït”Ž=ò¤cO:ÉcÏ;éÈ“U:öÈ£#Y±‡<Þap¤ÃòèÈ;ÒazÈÃé°‡<ì!{Èãéx‡=äñŽtØ#öx‡=Àñ“tØãé°G::’{¤CYIÇOÀay|Èï ‡3ÒatØC ´ˆ=ÒawØ#ÑÆ;ÒÑ‘wÈ#?ÇOÒÁ¡tØ#yG:BBŸ¼CöÈŠ<ÒÑ‘¬þ¤Ãï°Ç;ì!tØ#‘‡=ÜŽw¸öxG:ì‘{¤ÃàèH:ì{¤ã'ò°‡ìA{ø¨#òx‡<Þ„N,AïXÆ;äñŽŽ¼£#Y±=ì!Ÿ€Ãïð‘=äaw|èàp‡=Þ‘:wØãöHÇ;ì!tÈÃé‡=äayt$ïHÇ;äap¸Ãé‡=Þatt$ôèmì!{¼ãïGGÒatÈÃGï°G:ì‘{ȃï°GHÒÑ‘t؃ò°‡<쑎¬Øî°‡@²btØ#ïø 8Üat¼CöÈJ:ì!{È£#é°G:ì‘{€þÃöH‡=Þ!wÈÃé°Ç;ìzÄé‡=ÒawØãöxGGÒÑ‘wУ#à°G:Àá{Èã'éˆ=Òatüî°G:ìñ{¤C ö(F>äñ¤CY±8ì‘yt$+?‘Ç;ä‘{¤Ãï°G:èÑKÉÃïÈ;Òapt„6éÈJGÞayØãöð‘=ÒattDI‡=ÞÑ‘tØ#ò°G:ìá#t$öH‡=ÞÑ‘wtDôðÑ;ì‘{€ÃòHGGÒattD àpLJäa¬tdË =Òñ“tdÅé°Ç;ìñ{¼£#ï‡;Þaw€ÃþJÇ;ìñŽt€CïÇ;ìwt$Y‘Ç;ÒapØCöx‡=Ò!{ÈÃé°8ÜapØãöp×;:âŽÔÃïèˆ<쑎ŽÈÃòx‡ÀawtäéèH:Þ‘{¤Ãò¨Â&šð{8Ãé°G:쑎w„„6é°G::òŽŽ¼ÃéHGÜA{€ÃYIm쑎¬ØCIGGÒaw€Ãéèˆ<:"޼£#ôH‡=Òaw¤Ãï°G::"{ÈãöpFGÀ‘{¤ƒCé°GVì‘{„äöÈŠ=Þa¬Ø#öxGGÒÑ‘wØC öp8ì‘{€Cþö ‡=ÀÑ‘w¤ã'é°G:ì‘{¤Ãï°‡<ì{dÅï°Ç;ÒatØãCîÇ;:BtØCé°G:ìáptäò°G:ìáyt„öH:ì‘ŽŽ€£#Y±G:äawØ#$ï°‡@ÞáŒ|ÈÃòHG5ÊP y؃ö‡=®‘<ÈÃé D76aol"y‡Úq‹w¤ÃK BÄ tØCé°G;h!{¼#?IGGÞ‘{¤ÃéøI:~’y¤Ãé°Ç;|dydÅà°‡<ìqŠ*(ÂU°Ç;Úá24áöHÇ;Òñy¸áöÈA;natt$+§þ†=ü@wl¢ MÈB(ì‘yÃq8ìá#y¼ƒCà°Ç;äñytÄ‘‡=>dw¤£#ïèˆ<:òŽt؃öGV:òyt„é°‡@Þat䡇=>”ŽÔÉ#+öx‡;À‘ŽŸÈãI‡=Þ!tØã?¡G:ìñy¤£#àèÈ;ìñy¼ã›¨‚ŠA¼Ãéx‡=ÒatØ#+öð‘=äw¼Ãà°Ç;Òa¬|(uö‡;:’Žwȃ6à°Ç;ìA{¤ÃàÇ;쑎wØCöHÇ;ì‘{¼Cöx‡=ÞÑ‘tØÃGöx‡=®!zü8Øþ8ÈÃO¤Ã; B(‚=¤ƒ<¼ƒ<ØC:Ø8tD:Ø8¸Ã;tD:ØC:¼C:¼CG,‚=ìÂ&ØÃ"èA;Ü‚=Ü=ÈCGø8ØÃ;Ø8¸ƒ=€CG¤ƒ=¤ƒ=|ˆ=¤ƒ<ØC:t8؃@¼ƒ=Ѓ;ØC:¼ƒ=¤Ã;ØC:Ø8üD:Ø8¸ƒ=ÈÃ;ØC:Ømȃ=¤ƒ=¤ƒ=Ä;tD:ØC:„=€ƒ=¤ƒ=€Ã&ȃ=ȃ3äƒ<¤ƒ=øˆ h(hÃ1¤ƒ<ØÃlƒ3ÈCGÔ@9=`C,Â"˜9d%<€)¤CVÈÀ8¤ÃàA:\CØÁ)<@$ÈCG¤8tþD:tD:Ø8¸Ã;€ƒ=¤ƒ=€ƒ<Ø8Ømü8üD:|ˆ<¼C;t98C9°¬B;t‚l˜:ØC;tA:ØC7L€ÐC”˜B:€ØÃ;¸CX‚ØÃ;¤6ø€¥ØÃ50C:H_:ØC:€ƒ;|ÈO¤ƒ=€ƒ=d…<¼ƒ=d…=d…=¤ƒ=¤ƒ=øHG¤Ã;؃<üD:ØC:ØC:Ð8¸ƒ=¼ƒ=¼ƒ=¤ƒ=¤ƒ¥ØC:¼8Ø8؃<ØÃ;ØÃ;Ѓ;؃ȃ=€CG¼ƒ=¤ƒ=ȃ=¤ƒ=¤Ã;ØC:ØC:ØÃ;¤Ã‡Èƒ=¤ƒ=¤ƒ=ȃlÂØ=þ08ØÃ;ØC:tÄ;ØC:ØC:tmØÃ‡¼CGЃ@ØÃ;ü„Ø8¤ƒ¼ƒ=ŒCȃ ¤Ô(¼ƒ<”C ¼ƒ ¸ƒ=€ƒ ”C ÈC84AØÃ94AtC¼C:ØC:È@:䀘Á-ˆ @94Ö²y¼#&öHÇ;ì—t¼Ãéx‡=äñ޵¼ÃôGKà"wÈÃ1‹=8cµ¼CöÇ;ìzÈÃ1aà;bòŽ–¤Ã>ö€‹=äap¸Ãòx‡‰]ø ¤ÈÁ;ºÑ„täÀ'8ƒÊ‘…wØ#2xÇ)Pp‚dœ'FÚ"(Âg€Çàa†t¼Ãà°‡<ÞatØ#…±G:6’Žc#éx‡<Þ10{œöx,å‘{HÄé(Œ=Ò!wÈc#±,7{¼Cö‡;Þ1ŽW”Å@†3”±ŒbÜ¢ÔÈ(52Š¡ d̺È(2LŒbТÔË(†3Äkd,ÃÔËp3–aêQ/CË052JM‹R/ÃÔÈ€õ¨‹ŒYûz³F†e`†e(d(d(d(5g`f0µQ«‚NXyxz(†QþÃÀQS†[@†`ÈÀ gÀÀlx‡Â ‡w(Œw‰¨£‰‡w y ‡¡“‡w‰€%z‡¡“yzz˜zàAg{H{‡H{ˆx{‰Ø‰È{x‡Â°z{x‡Â°‡w°‡t°z{xyx‡tØy°‡w°‡t°‡wH‡pp°y°p؈‰°w{‡t°p°‡t°‡t°‡wHŽHŽH‡€%{{ {€¥w°‡t°‰(Œt°‡t°‰°‡w{{¨£(Œw ‡Â؈t°‡t°‡w@†|؉PPp^t‰è„þ%È‚& ‡w°‰H‡‰‡w€%y°‰X’‡wH{x‡ yz˜ˆt‰°z‡tx‡ÂØz{‡t°‡w؈t°‡w{І‡t°y°‡w؈w°‡w°‡k°‡wày°‰H‡(Œw°yH‡H{H{{‡‰HXJ{Hy {‡qPu ‡w ‡wzz¨#z“{‡wP,‰€%y ‡w‡w( ‰¨#‰( {yˆÂxz{ 7Å¢‡w ‡w ‰P‡ÂxzPy€%‰€%œzxz(Œw ‡w ‡‰ ‡w(Œ|{xþ‡ è„%°‡w@†w yP‰( z¨#{xy Å’z‡l{H{( { ‡‰°X’{H‰°y {( zxX¢7X²z°XzXzyxX²‡wÈAz°z°‡k°‡t°‡w°‡tx{H‡x‡t¨#{(Œt°yx¿”z°‡t¨£w y°‰¨£9‰w°p°‡wØp°‡w؈t{ ‡tàˆw°X²‡Â {{ˆ{H‡w°‡t‡wx{‡H‰°y°‡t°yxy°‡t°‡tØpp‡H{x‡:J{z˜yHŽþxyxgȇ:¢‡wÐPðPP°‡tx‡t y°‡w { y°‡:’{H‡ˆÂ°yx{z‡wzz°y y€¥w‡w°‡:z‡t{Hy°‡w°‡t{{H‡w°‡w°y°‡:J‡w؈t°‡wàpp{HyØyx{H{H{{xp°y°‡t€¥Â°y°‰°‡t؉{ ‡exzx{H‡w°z°‰X²z˜z 7{ ‰‡w‡w°‰°z¨#X’y°‡Â {zxXzyH{¨£w‡w ‡w ‡þwÈAyxzxz‰ {ˆäy€¥w ‰(Œw°‡w°z°‡w y ·Â°y¨‚MhyHg ‰¨{ ‰¨#‰‡¡+ŒÓ¤g ‡ÂyxyHލ£w‡w ‡:’yz¨#{€%à|{xy ‡w(Œwΰ‡NxZ¸…WxZÀØbÀØW(ZèXŒ-Œ¥…W …W …-†Ž¥Œ½…W Œ-†-†WÈ…\x…bÀXZ …W Œ-Œ½…W(†Ž½ZÙŽ-ž}Zx…b …WàÙWÈž½ZÙbx…bxZè„bÀXž}Z¸Zxþž½…Ž¥…¥…ŽåYZÀØ[YZØ„|xyyxrzH‡ yyxyx‡t(Œw°y°‡w°‡t( zx‡:²X’‡w°yˆt( ‰( {x{x{ˆ{{H{ {pp°‡w°‡w°‡wH{{‡8 {H{{ ‰{H{xw{x{€%{py؈w°‡t°‡t°‡t°‡w{x{x‡:²‡wg ‡w°yx{‰zxyx‡:²zXÎw{ ‡Â°‡Â˜yx‡Âxy ‡w8 { y ‡wH{þ‡t( ‰ ‡w y°y ‡w‰°‡w ‰{ðËw°‡tx‡Âz¨£w°‡ˆ•ˆz‡w‡wðEÈ‚wd€%yàzy°yØyÈÁÂyy@{x{‡w°‡t°yHyH‰°‡t°‡Â{‡w°‡ÂˆÂHyàÁ ‰ yx{xy 7y{y°‰°‰{‡wH‡x{˜z°‰°‡w°‡w°yxz°‡w{xy°y°‡‰{:z( {( {H‡z‡wH{{H‡w°‡w؈w°‰8 {þzH‡w°y°zx‡:²‡wØyxz‰°‡w {H‡w°‡w‡w؈Âx{{x‡x{x{¨#{xyˆ‡wp†|x{¨#z(Œw°‡t‰{{xz°‡t(ŒwH‡Âx{x{H{˜yH‰(Œw؈‰°yy°‡“°‡t°‡txŽz°‡txy°X’{H‡w{H‡Â {H‡w°‡w؈t°‡tx{‰°‡t°‡w؈t°‰{xyx‡tx{x{{x{H{H‡w°‡t°‡tx‡d¨#{H‡w°‡:²‡w°þ‰(ŒtxÅ’{z¨£w( ‰°y°‡w y°‡t{x{( ‰ {H‰¸† y°yxyxy°‡w°‡:z‡HyˆÂx{{X’y°Ų‰( {HyH¿´yX‚Nhz‡bx‡Â¨{¨#{xyH‡wðK‰€¥w ‡Â(Ų‡t°‡wH{‡w؈t°yˆt؈t°‡Âx‡{x{{{{¨#{( {(ŒwŽxy°‡t؈tàˆÂ°‰( {{x{{x‡t؈w‡w°‰‰°yx{8 {x‡Âþ°‰H‡(Œw‡t‰H{ˆt°‡wH{ ·x{{¨£‰{‡‰°‰‡t°‡w‡w‡wH‡zˆxyH{HyH‡x‡H{{x{ˆt°‡wŽy°dȇ¸g€r€r¸g g¸†1¿ñ»rprp†1gsgsr ó1'2w†kp†9w2w†k ‡kp†12w†k g¸r¸g g¸g ‡1'‡kp†k gsg¸ñs†k ‡kp2wrp†1w†kp2w†kp†k ‡kp†kȆl óþb ‡1/r¸p¸†tx‡qp†Âxyx{‡t°‡w¨£t°‡Âx{{H{P¬‰{P¬“°‡ÂHŽH{xyxy°yxŽˆÂxyx{x{x‡t°Ų‡t‡w°‡t°‰°yH{‡t°yH‡x‡ÂxyxyH{x‡Â°‡t°‡‰‡w‡w‚M‰P†‰Øˆw°‡t°‡t°‡Â 7{¨#{Hzd( {°†,x{˜{h?Èw{è{H‡w°‡t°‡t°‡“°xh‚ÂHyHyH‡Lh?ÈyyH‡8…%P„o …°þ‡t(Œwø†bx{H‡xyx{H{H‡:²‡w‡t°‡w‡wØy°‡t{{{H{HŽH{Hy°‡w°‡w؉‡H‡H{( {8‰Â°‡t°pp{˜ˆxyx‡H‡Â°‡t°‡Âx{{xyHyx{‡wH{H‡{8 {H{x‡H‡w°‡t°yx{H{`){‡w{(†|x{è‡|Ð~{èíï‡ïχ~ÈÐ~í÷‡~(ÿïï‡òÏ}Ðþzȇ~ȇ~ȇ~ȇïχ~ȇ~ȇ~`ÿ|ˆ~ùìG°ÁþýÖË× ¿ˆùúE$ØÏ_¾zþúë—¯_¾~"óõóG°ßÀ~ëõ#Øo ½~ùì½Wì½tö쥳÷Î^:yòì¥{÷Î^:{òŒ 5úΞ<{éŒîL·3Q{é䥳—ÎÞ;{é콓÷Î^:yéŒ m+Ô^ºwòÞ µ—ÎÞ;{éìµµ—ngºwöÒɳ÷Nž=pîÞíL÷Î^:{ïìɳ'Ï^:{ò‚lÊ"^±òüìLgOž=pöÞɳ'ÏžP£éì½£Gï–=£ðNT¹Õn“=Dí:å°w*‹ŠíÙÓi‘¢EЬU‘—n§½töd˜ë”cžt§¶¢ÕáÝ­S"þ¹Ëb†Ü)DY$J·OºL‹B¥Ã.ï=é`—Ž=験Ž<餃=ò`gÏ;騣 =ïìôŽ=î€cO:ØÉ“Î;ö¤óŽ=験Ž=ïìôN:öØf8öÈ“Ž=éì¤àNïe”=m½#=éØóŽ<éØ#=òØÎ;ö¸ÎNéØóN:ö¤cO:ö¼³“;àØóvéì”Î;ÌäcÏ;òØcÔ;ò¼c<é°ùŽ {¼#€G챈&X¡ 7x<š „á ¸vþ䱓tØãöp‡=ÒatØCöÇNÒa£ÈãAïp8ìNþÙCövÒAyìÄà0J:ì!¼Ã6òx‡<ì¡ w¤C;1Š=Òaw¤c'é°Ç;ìñì€ÓàØ‰<Òñ{¤Ã(öxG:ì‘ì¤Ãò ‡=䱓w¤;ô°Ç;ì!z8#à´Ç;¢q‰KL#öx‡<Ò!tØ#òH‡=ä¡ wØœé˜8Óat€Sé§=ÞatÈ#òHÇNÒay¤£°FQvÒay¤ÃòÀÎ;ì!{È#öx‡=ÒawØœé‡=ÀatØCöHÇNäþawÈCA;I‡=ÒatØC;I8ßÎtÈ#ö‡QäAŽeì$öHÇNÞ‘p¾Ãé°=äawìÄà°G:ìñì¼ÃòÀN:ì‘ì¼Cö‡=äAy¤c'ïØ 8Óaw€s'òx=ÀatìœöHÇNÒapØ#öÇ;äñ wØÃ6ïàèNäa£ØÃ(éÇ;äñŽ˜a ôx2Þawì$ï°G:ÞapØãöH‡=èμc'é(†<ì!x0 JÇ ê €n4!ò(‚Ž4|ßhAè‘yä Y0J:ÞÎwÈ M¸ABÐþ‹4¨â¯ðÁ@àŽDBf°Bnðw| »@AV‘ƒt6öH‡=ÒawÈãö‡;ì!{¤ÃéØÉ;v’ŽwÈC:¼ƒ!LÈ´!؆<˜Ã&ȃ9˜Â)˜A"´C'ØC&Ø!¼%¤C&¤ÃN¤ƒ=Ѓ=¸8ì„;ÐÃ;ȃ;€C:؃QØÃ;¤ƒ=¤ƒ=(ˆ=¼ƒ=¼C:ìD:ØC:ØC:ì„<ØC:¼Ã5ØC:ìD:`‡;€ÃNÈC:ØÃ;ì„<ØC:ØÃ;¤ÃN¤ƒm¼C:ìÄ;ìÄ;ØC:Ø8ØC:ìÄ;ØÃ;ØC:ØC:Ø8ÙÃ88ƒ‚ØC:þ؆=€ƒ=¤ƒ<¤ÃN¤ƒ=¤ƒ=¤ÃN…=¤ƒ=¤ƒ=¼ƒ<ØC:ì=ØÃ;Ü£=¤ƒ=¤ÃN¼ƒ=¼ƒ<¤ƒ<¤ƒ=¤ƒ=Å8<ˆ<¼ƒ=¤ƒ=¼ÃNÈÃ;¤ƒ=¼ƒ<¤ƒ=¤ÃN¼ƒ<ìD:ØÃô40ƒãƒ3Ã2,Ãë;þ2Œ~18C1 C18Ã-ƒ3ƒ38þ2ƒ3Ôþ-,Cí;¾3¼þ2Ô>3,ƒ3Ãì;Ãþë~18C10Ã284,Ãë;4,Cí/C1,C18ƒã;C18C1,ƒã;ƒã;C18C18Ã28Ãë;Ã2Œ¾3,@svËY1gΊ\V¬Ø2g !:+ÆlY±eÎ2[æŒáA†Î .+¶Œá2g.[VlY1fËœAtVÌY±ƒËœ-sÖ)Ÿ={ïìM»t©š. 2t1‡"5T64235=ˆ;=;c6&s2 CŸ4FYT?.1MEG¯-PD‚.&H$P|+N”#M°%U.M£wC.L²KE6Ur„?Ë)sIdL8[NJ6S¤7Q¯1W´.c˜†O=[¦#g¯.ny"h¼A[´#E¤H,4=a¹q\Rw\EFb­7dÎQe‚Ibµ8qšC|Cb[¡If°eh^-w»:t«^CRmœÄF8d)Pj·Ÿ^$Ql²vnOjfž¥ksJmr†\rºmk´^s´é?P”mMH“UcwÀPƒ¸P}Û@ˆÌdy»Ä`A¯uK™iSšQg~º±s,{u·m‰zt€™u~­p¼G”Ár´h‡´g‹¤¹u?uƒ»z€À††ƒ€ˆÌz «}]p‰¿Ÿ…U­‡*¥‡CŒ…’•ˆjÁ„ âfl¡ƒ‚Â…7’†¾¹““Ä”–°~²Š•°°ƒ¾f²•u±€_²ØŽÉÉš>Ø‘IÇ’t憵o‘¢Ä¡£ ¥Ÿ®€Ë(…©è‚Ï&Ôšh¥§¤²§‹Œ¯É˜¨Ôæ¡%k¿Õ¸®uÒ¤eʤ…±ç…¶êͧwÈ­gÅ¡ÄдS¤³Ó×£©tÎ߸µ¹í¾¬ËŒ›ÇÜËð³¿Ù¾À¼­Í²ŸÈôÝÆa¹ÆÍÄÂÆ¯ÞmҺѲÉÛÑÅ¢ÜÊråÀžÖÞçË^ü¶›ÈÉÆ¾×¨ãÆ¢ÛЄÌÊί×àÚÑéÉ’õËwÎÐÍàÓš­ÜùØÑÃÏÑáäËáÑ×ÙáØªÉÛâÝÙÂÍßÒÙÚ×áܸöß}õà†ÕããäáÅÞàݺî÷Üáäôå”ããÚçäÑòåÃóê¨õè±åçäßéöÐðüèêçÿóˆëîêïñîüòÈüö»öóçúô×îôúæøýõ÷ôôûþùûøýûïýÿü!þCreated with The GIMP,Ôþþ5A° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲeÈD›Il×Ì]3wÍÜ5s×Ì]3wÍÜ5s×Ì]3wÍÜ5s×Ì]3wÍÜ5s×Ì]3wÍÜ5s×Ì]3wÍÜ5s×Ì]3wÍÜ5s×Ì]3wÍÜ5s×Ì]3wÍÜ5s×Ì]3wÍÜ5s×Ì]3wÍÜ5s×Ì]3wÍÜ5s×Ì]3wÍÜ5s×Ì]3wÍÜ5s×Ì]3wÍÜ5s×Ì]3wÍÜ5s×Ì]3wÍÜ5s×Ì]3wÍÜ5s×Ì]3wÍÜ5s×Ì]3wÍÜ5s×Ì]3wÍÜ5s×Ì]3wþÍÜ5s×Ì]3wÍÜ5s×Ì]3wÍÜ5s×Ì]3wÍÜ5s×Ì]3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.þ3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Óþ.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í2Ó.3í¢ì"üðÄoüñÈ'¯üòÌ7ïüóÐG/ýôÔWoýõØg¯ýöÜwïý÷à‡/þøä—oþù觯þúß‹0Ë,§¼Êû§¼Êû§¼Êû§¼Êû§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}þ§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§þxß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xþß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xß)ÞwŠ÷â}§xßþ)ÞwŠ÷â}§xß)ÞwŠ÷â}§xßû>pŠYœâ³øó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þþ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þþ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳøó,þ<‹?Ïâϳðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðgþ³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðg³ðgù—° Ù—p à ±ÐsP‘}𙑹‘Ù‘ù‘ ’"9’$Y’&y’(™’*¹’,Ù’.ù’0þ“29“4Y“6y“8™“:¹“<Ù“>™’"ðƒðD9D9 Ù ÃÐ~P‘ccÐD9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9¡ð ü@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒþ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”þƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@þ”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ƒ@”ÐK”"0Ô[½ÕþÛð”Ãp s0càQ@RpÖ[¾å{¡À}`¾ìÛ¾îk¾} ÿðü0¿÷à¾~Àp¶0ïû¿æÛ¡ðüðù€ w óËÿðØp ƒp¡ðÔÛ®ÀÃÀ¼ÁÜÁüÁ Â"<Â$\Â&|Â(œÂ*¼Â,ÜÂ.üÂ0Ã2<Ã4\Ã6lÂ}ÐÖ+wwðÃlðÃl ‘Ùà ÃÐsJLL¼qðÃqÀwwÀ?Ìww€üPqplwÀ?Ì?Ì?Ì?Ì?Ì?Ì?Ì?Ì?Ì?Ìq€ÿPþÀ?lpq~ðzÐw?Ì?lpqÀwlpqÀwlpqÀwpÈq ´P`]Àhð`§àjð¾Ðˆ@@pqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀþwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwþlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwþlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpþqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqþÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀwlpqÀ¦lÊ" d@l°ÿl€l ‘±+Û®S.=²“Ћ1dØ aÃFLDŠdØ AóO€4ïòý;ç‡M¨{1þcµ|ü°5¢“"™ˆÿ ““ —œ¾òñ㇠šÐø#ƒ†Ÿ¯wï°Qtõ賈h¬åë‡ š˜hþ-pAæN hþ ÐYÚ1.hþpEO‰ bØ ‰ˆ&"šˆh"¢‰ˆ&"šˆh"¢‰ˆ&"šˆh"¢‰ˆ&"šˆh"¢‰ˆ&"šˆh"¢þ‰ˆ&"šˆh"¢‰ˆ&"šˆh"¢‰ˆ&"šˆh"¢‰ˆ&"šˆh"¢‰ˆ&"šˆh"¢‰ˆ&"šˆh"¢‰ˆ&"šˆh"¢‰ˆ&"šˆh"¢‰ˆ&"šˆh"¢‰ˆ&"šˆh"¢‰ˆ&"šˆh"¢‰ˆ&"šˆh"¢‰ˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆþˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐþˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆˆÐˆ ™Èƒ 1Ä Ï?÷\ŒXZi%”KN¹äÕU×ãÐAâu.ÔàG.‚°£t©&.ô±@ .t©Æ)Ш£\©&)@‚ )^Wãd×% h´ø'5ü @ ~øá]4áB ~’@À"Úk@0À•W¤x]V¹¤ 5üC Sƒ?þ( †t‚#8Àd7A VЂÄ`5¸AvЃaE8B–Є'Da U¸B¶Ð…/„a e8CŠPRÂt)hA ±ˆDæ0†(DGì(@)A‡KÀáp¸.A jøGtx H ø € ‘ hA+ €€phÁ ø €ž¸Ja AСÔðxÐñ‚øAì@pú'ü#NàÇ:À5à£Nø‡– .¸ üÈ€ †zt`ŽK Â'Þñg4jøG€°ª¡P?ô1 a Axbžþ„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cžþ„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cž„9á‰A˜cæ„%àp 8\‚9ãþ/!§8Å%ÑŠÕ­Nƒ q…Œ~iÀÆ;òñj¨GÔpìkÀFSÞá(üˆ™ð 4  €@ð¸` 3&B?€„ üÀ!‘À! ÀàÇ3$üãù8Ç;âq!· pE=X€„`Æ;Pƒ?€~XÀ´Â„t¢ÝèGGzÒ•¾t¦7ÝéO‡zÔ¥>uªWÝêWÇzÖµ¾u£Ç`ç"ˆÁXƒÄÀì;C,bQÄ#v€K¤@Xƒ° ,0{Þc°˜ ÿ(úñ°ÀýÀbà iüˆþñ€ÄÀÿ€Þõ¾Ä@ÙLàGb°ƒ4þÛÒ b ôàèÁ?Ѓ¼‚=°Æ*Ѓ>˜} õ8 t1ŠÄ z` ò΄NŒ@ðE=À~€; ‚/ö0¡ Ø àA‹° ï;`ÙwÀÍ›},h vÀ‚øï€ñß â¿Ä,ˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`þøÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`øÛˆ¿`ÍÛˆˆþ``äc0Èä+?˜„Xð  €X¢HÈ‹ÄH`‚(€Àƒt lh„€äc‚¨†H¾ÀƒtÀl¸„~€Œ¼È`‚ø~臇ä{=‡} [à€ø‡˜&ð‡'x~† €ÀzÈlP‚0;Sx~8‡OàK(bx‡à‡``œü~x‡OØ(&à‡K0Z˾ôË¿ÌÀÌÁ$ÌÂ4ÌÃDÌÄTÌÅdÌÆtÌÇ„ÌÈ”ÌɤÌÊ´ÌËÄÌÌÔÌÍäÌÎôÌÏÍÐL(((þ(Õ,X‚Fˆ…F €»`Ö,XMXMÀ͘€Õô0€ð€`M€`Mð8ð€`MøÍÕd`€ÏЀ(¸€ˆ€h`€èð€`à€Ïè(hð4 `Ëà€ðT€(+€`Öô€(±ô€ˆ€ì,Ñ`eeeeeeeeeeeeeeeeeeeeeeeþeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeÕdÖdÕdÖd`ÈN(±,±K  ````ÕË`ËèWþ`‡XM(±\M(Ñßd`0W(ÀMXMè€ÕËìdßœ€``KÖdÕdÖlXÖdÕdÖlØ`KÖd`Õd````ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË`þ`ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``þÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖþË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÖË``ÕËË`Üd`Õd``ÜKÖdÕdƒÅM(XMXMÀM&à‡sè€ßd`ßËÕdÕË`ìdhØË0×Õd``ÖËËøÈN±\MXM(þøMXM±,sÅMÀMs-ÈN((((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(þ((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(þ((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,((þ(±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±,(((±ˆ,J°(Á¢ %X”`Q‚E‰„%X”`Q‚E‰„%X”`Q‚E‰„%X”`Q‚E‰„%X”`Q‚E‰„%X”`Q‚E‰„%X”`Q‚E‰„%X”`Q‚E‰„%X”`Q‚E‰„%X”`Q‚E‰„%X”`þQ‚E‰„%X”`Q‚E‰„%X”`Q‚E‰„%X”`Q‚E %X”`Q¢‹ ÿ²(Á¢‹¿,J$üûE %–èÀ¢DÂ,þr.‘°‹¿,þ²ø›°‹èÅ_%X”xðoÂ,8³è`»Cç‚ÿí°‹,J°(Áâ/‹¿,<HXâu œ–`Q‚E %X”`Á™E焜_—èP‚E‡„Y”`Á™E J°øÛE ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB þ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tPþ uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀþB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB ,tP uÀB Xаà/`A Xаà/`A Xаà/`A Xаà/`A Xаà/`A Xаà/`A Xаà/`A Xаà/`A Xаà/`A Xаà/`A Xаà/`A Xаà/`A Xаà/`A Xаà/`A Xаà/`A Xаà/`A Xаà/`A Xаþà/`A Xаà/`A Xаà/`A Xаà/`A Xаà/`Á_XЇ`AgXPt€%`A XÐü…aÁ_"‚¿°à/xMJÀ‚Ø&!aAXPt !Hg^Sp&!%`AXœ° %¨&qJðš° ¯)mþ‚° ,( Jΰà/ ùKXP‚„Ä“%`A XЄt ,è@Bþòš¿t  ) þ’° ,(AB:À‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°àþ/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/þ,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,þ( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,(þ JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,( JÀ‚°à/,(ABJÀ‚¿°  é JÀ‚° ,( :À‚° ,è@ XPt€é pư@”Àkp ü üEüE$Ä_°@ °À_°@ t@ °@°@p°@°À_°@ °@þ$DØF °@p°@ $D$Ä_°À_°@ t@ °@t p ” t ÄS °À_¼F tÀ_$D ØF°@ °g°@ °@ °À_t tÀ_°@ $Ä_$D°g°@ °@” p t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ”þ ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ”þ ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” þü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” üþ t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” ü t ” ” üEBt ü t ” ” ” ” ü ” ”@Bp ” ü ” üEBüÅkˆ@ °g°@ °@ °À_T ü p ” ” ”@Bü…mü ”@Bt ” ü t p t ” ü ü tÀk” ” ” ”Àk”þÀk”@tF5• ”@°g°@ $Ä_°q°@ t@B” ” ”ÀküEBt ü tg$D°À_°@ °À_$D °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@gþ°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@þ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °þ@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@ °@ °@g°@” ” ” ” ” ü ” ü ” ” p ” t@B” ” ” ” ” t†üÅk” ” t@BGB” ” t ü ü ” ”@üEB” Ä ”ÀküÅkp ”@°@ ¼Fg°@ °@ °@ °@üEp†Ñv@g°@ °À_$Ä_°À_°@” t€m”@BpF°@ °gþ$Dg$D $D °À_°@ °À_°@ °g°@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@þ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °þ@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@ °@ °@$D°@”`Q‚E,:°(Á¢‹;°(Á¢‹;°(Áþ¢‹;°(Á¢‹;°(Á¢‹;°(Á¢‹;°(Á¢‹;°(Á¢‹;°(Á¢‹;°(Á¢‹;°(Á¢‹;°(Á¢‹;°(Á¢‹;°(Á¢‹;°(Á¢‹;°(Á¢‹;°(Á¢‹;°(Á¢‹;°(Á¢‹;°(Á¢‹;°(Á¢‹;°(Á¢‹;°(Á¢‹;°(Á¢‹;°(Á¢‹;°(Á¢‹;dQ‚E%À³Ï¢‹,J°èp°C àY”`žxX”`ÑEþ ð:`¡À¯ƒƒ:`!ÁX(…X(ðX(…X(á ðX(A»ƒJ`¡:…Ô®„ƒJ`!AJ`¡ƒX(…Xoă,¡ðF쀅¯J`¡ƒ*…;`<íÀc¡„oDðXðX(…X者Xèà ðX(ðê€ðXï Xðê€ðXï Xðê€ðXï Xðê€ðXï Xðê€ðXï Xðê€ðXï Xðê€ðXï Xðþê€ðXï Xðê€ðXï Xðê€ðXï Xðê€ðXï Xðê€ðXï Xðê€ðXï Xðê€ðXï Xðê€ðXï Xðê€ðXï Xðê€ðXï Xðê€ðXï Xðê€ðXï Xðê€ðXï Xðê€ðXï Xðê€ðXï Xðê€ðXï Xðê€ðXï Xðþê€ðXï Xðê€ðXï Xðê€ðXï Xðê€ðXï Xðê€ðXï Xðê€ðXï Xðê€ðXï Xðê€ðXï Xðê€ðXï XðÒ€‡à9HX€ç `xXžƒt€àaxÒ€‡à9HX€ç `xXžƒt€àaxÒ€‡à9HX€ç `xXžƒt€àaxÒ€‡à9HX€ç `þxXžƒt€àaxÒ€‡à9HX€ç `xX é `xXЀ‡%`AÒƒt€àaAX”€àaA X ”à MjR€6 €À’Ðd)K©É@“@'K¹IK†’–š@€Z†R€&;@»ì¤J©Il’™€€M`“`¦6Mà˜š€&ÐLMZr“ؤ%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€þ%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%þ7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJXr“¥€%7YJX’™Ø$*™MZ`f4YJ •°ä&°I€‡øÇ•±|e~d™Ë]öò—Áf1™Ëü s–ùqf5¯™Ímvó›ág9Ï™Îu¶óñœg=ï™Ï}öóŸþhAšÐ…6´š? üÃv´;âñhIOšÒ•¶ô¥1iMošÓöô§AjQšÔ¥6õ©QjU¯šÕ­võ«akYÏšÖµ¶õ­q}jhÿ8G<ÎsÄÃçˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÔsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎþsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎþsÄãñ8G<ÎsÄãñ8G<Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Îþ!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!þÎ!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!þÎ!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Üáb QàâáâáâáÜ!Îþ!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!âáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáxõâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáþâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáþâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâþáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáþâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáþâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâáâAÝD`v àxuÌÏaÌÍüÌÑ<ÍÕ|ÍÙ¼ÍÝüÍá<Îå|Îé¼ÎíüÎñ<Ïõ|Ïù¼ÏýüÏ=Ð}Ð ½Ð ýÐ=Ñ}ѽÑ÷ü¼þ|à$-ríÒ1=Ó5}Ó9½Ó=ýÓA=ÔE}ÔI½ÔMýÔE-ÎAvvþAÝÎWe½ÖmýÖq=×u}×y½×}ý×=Ø…}؉½ØýØ‘=Ù•}Ù™½ÙýÙ¡=Ú¥}Ú©½Ú­ýÚ±=Ûµ}Û¹ÙÝWEvàÆüÚ¼ ª! ½ ª!½ÞÏü¬ `ì]Ï«!ú}Ы!½ à½Ϋ!>ª!~â)¾â-þâ1>ãýÜáDÀ €àÆüÎÜŽ©“Ôáâ¡ Ï!å ÜÁÌ«!âAþþ ¶è¼6È Íþè‘>œá˜ÀˆÁÒüÈ á’~@ é“Þ ÆÜ@ëÕá´>¶Ê~Í›a @€ Ҿͫ!â>œá˜ÀˆÁŒ^þ@ë·ÊÞŽ)L€Ü¡îÙœ(`Ì`ÎW1!Ôá¾@ñÞàÆÜàÔ¼@óMÿôQ?õUõY¿õ]ÿõa?öeöWß> äþ!ÊaÌË!Ê!œÆ¡¾¡Ô-¶aâ¡â¡â¡â¡â¡â¡â¡â¡â¡â¡â¡âÁþ`Êᾡâ¡xÕ¶aÆüª¡Ê!Ê!Ê!Ê!Ê!Ê!¢\¼rñâ][°G›:R~ –‹W.^¹xåâ•‹W.^¹xåâ•+ø-^¹xåâ•‹W.^¹xåâ•‹W.^¹xåâ•‹W.^¹xåâ90®Ü5 ÊÅ+¯\Ásñ¶ 8W°\¼rñÊÅ+¯\¼rÏU+P.^¹xåâ•‹W.^¹xå ~+¯\¼rñÊÅ+¯\¼rñªX€'Þ¹hÊÅ+¯\¼rñÊÅ+¯\ÁÉçÊÅ+¯\¼rñÊÅ+¯\ÁsÕ ”‹W.^¹xåâ•‹W.^¹xåâ•‹W.^¹þxå ^[°G›:R~ –‹W.^¹xåâ•‹W.^¹xåâ•+ø-^¹xå ºÛ6 `¹xåâ•‹W.^¹xåâ•‹W.^¹xÎŒ+wMƒxå ~+O9ñ”3YAçÄSN<åÄSN<åÄSN<åtN5ÄSN<åÄSN<åÄSN<åÄSN<åÄã ã”s ÄSN<åÄSN<åÄSN<åÄSN<åÄSN<åÄSN<åÄSN<åÄSN<Î0N9ç<€A-­CAçÄSN<åÄSN<åÄSÎdÛ O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”3¸Oþ9ñ8@9•O9¹³Í•O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”þO9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”O9ñ”rÄ£ñ(G<ÊrÄ£ñ(G<ÊrÄ£ñ(G<ÊrÄ£ñ(G<ÊþrÄ£ñ(G<ÊrÄ£ñ(G<ÊrÄ£ñ(G<ÊrÄ£ñ(G<ÊrÄ£ñ(G<ÊrÄ£ñ(G<ÊrÄ£ñ(G<ÊrÄ£ñ(G<ÊrÄ£9G<Î!‚%,øÇ9Î7ž#爇3pŽxœ#Õ€;ª1€7ªC @ äsÄãñ8G<ÎsÄãñp†ÎQsÄãÝ8A@‡œ£ˆ‡  Ôâñ8G<ÎsÄãñc4ÀsÄ#ñxc7rP4áÕÀãQ Ä£°B,prä €ÁÕ¡„þ  rŒÇ9âqŽxœ#çˆÇ9âqŽx8CoŒÇ/ðFu(¡¨Á9Üá8@ÜXÇ @#ç G 0ÄÃHe-ÎÑ€Mxc5`… Xàñ8G<ÎsÄãñ8G<Îg€ G<œ€sÄ'(@<x0‚rĪ1€xœƒ'(@è0€xœcÀ<x8 ©¬Å9Ô¡„  oŒÇ9âqŽxœ#çˆÇ9â!Çh€çˆÇ=ä¨%`5xc<Àq‚ÀЈG5`… XàäÈAƒxTc¬€@<‹xþœ#çˆÇ9âqŽxœ#çˆÇ9âá Èñ¨Æ¬P œƒ9(jðÆj àñè† 0€¼1ÝÈAƒx8 ©¬…ãqŽxœ#çˆÇ9âqŽx8CoŒÇ/pŽj àñ8Ç6pŽj @¨ÀˆñÆxœ#çˆÇ9âqŽxœ#爇;ŠxTƒrBAŠj àÕ€ >P ãñèÆ Ð: ç G @€&¼QxcpŽx¡çˆÇ9âqŽxœ#çˆÇ9âqŽx8#rŒ‡3ðFu(¡¨Á9ÜQœ£°Â$Ð9žþ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#þçˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#þçˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqñpñpñpñpñpQ!Q°Q ÿP qá ðFñàÕ0îP P+ÐÜ 2qñpñpñpñpñpá Gñpñ°-0ê€Õ0çP 0ñpqñpñpñpñp“‘P  ñpA-pÝ€AÕ0qÛ@þçP ðçP$Ðç¶P+ÐÜ 2qñpñpñpñpñpá pñYÀî+ÐÜ 2ñP çàÝ@ ôp 2Ðç$Ðç¶pÕ0ãç$ÐçÐ é° ð“qñpñpñpñpñpñàÕñ€TpÑñpÝ@ ôp 2Ðç ñ0+@ÕPç+Ðçp0çä@ çÐ 2ÐçP 0ñpñ°-À ê Kçççççç0é°5ð Àpþ“±-À ê KçÐ Ä@× ÛOpA0  ÷ð ñP PÚð Y@qñpñpñpñpñpá pñY ÛOpA-pÝ€AÕPñp6Ðç 2ñp+Ðç¶pÕ0îðF“qñpñpñpñpá pñYÀçP çÕ@ñP ðo$Pççççççå+0ç€ %` pÎ ÜP ÕOðFrÐñp+Ðã Pç$ÐçþÐ ñà÷°€ ñ©ççççççPÎç0Î ç+ÐÜ 2îP ÛUpé@A0ççççççççççççççççççççççççççççççççççççççççççççççççççççççççççþçççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççþççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççPîp" FKþÿçPçÎ@¼)P pÕî@€ çΠH½qñà €@¼©@ ñ pÕñP pÕ[½îðFÅ ñ€ ñp² ñP 0Õ@ñP À Ñ  ñpA€ çΠì[ç΀ ÐàäÐpñ` PÕ0ñpîàçPÆpñÐ  åpQ p€ ñp² ñP À ç`ÁèÎçp  Î áçóà P+°ç€ þÛñÐ  î¿0ñpîPîà Õ0çî@ oä °Ä“áQ Jp¹àäÐðFΠáçPÎ`îP À € åPçP À á Èqñà à ` ÕÜPÝPÈP² çP êÈðFΠî@ åpQ Ê“qñà à çP PçP pÕãPÑ@Ñ|ÁPF€êPç€ pÕ0ñP 0ñpÎ`î@ ñ ÝPÈþç 瀩à `x À ©|ñà @¼! ç@ od pÕ0îP À ã¿ ÑlÓ7Ó9­Ó;ÍÓ=íÓ? ÔA-ÔCMÔEmÔGÔqá" K ðåPååPçà ð Ô@ ØP Õ0ñ Pi] P“Q“QQqÎÔð ^Í Õ ñpîP Õ0î° àQñP“Q“Qñà“áñp 2Àñ pá pÕ0oÛ@çP oä ðFñPñ  ÖþÐå0å0åPåPçà ð ßP ç  ÖÐñP àñp¬°àçà pQñ° à pá àÕ0Ô[“QQñpî àÂ+ÀÑoÄ '€ç Œ@ñP pÕqÕÁ €àÛ0ñàÂÑj  PQ“Q“QáÂñpñp 8Àî PÛ ðF¬pà0îP àçÑçåPÕ0ñàÂÕ0ñPQ“QQqÎþÏ  çãP oä pñpÎîP pÎj  pÑçPîpÕ0çååå0åPåPçà ð ßP ñP çÕ@ñP pñàÛ0çå0å0å0çPÎÜðÐp+P !€ñP àÛ0çàñ° àÕ rT pÎçPÎ åF0Œ°¿ ²î0å0åPåPçà ð Ëð Ô  àÑj- Õ0ñP 0Ñ0çåPå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å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å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å0å0å0å0å0å0å0å0å0å0å0å0å0å0å0å0å0å0ßççàçðcR ÿJvqÎoçP pÕ0ç çàåç$80^¼sÎŒ;wйÐâ¹û5 ^µîª ï\¼‚ã Œ'0Þ¯çÀ €V.ž¬ç¶ˆw®œ3ñª8hñ‚ 휻r!•<ç,À¸sñ`à.´sVpPSãæ9 h=ËU0phe)pWm€;¥þ!ã‹ç,€»xÕT¯›Sçâ9ï\ºµ2àqW-@ûôóO@tPB 5ôPDCʯ'–" úY4?g'wâ©f€xªà ZÐ&žk>™ôÔƒœ œrÎùæœqV¨âœrlÀmp¸‰çœxÎAõ ·©w®ÁH€aœk0X"w°$žtd `œj8èwHháœtl9Ȇ´‰çšO†ÔÎé)*α¡nιæwªGp€æw~ wHháœol‰¸9èZç ‚p§šþÜôœhpgœx¶ wÀšxÊùa€ƒÊ1ÂÆqg›Üg…ÎQƒÎ'hâIç‡ÜnÎ9Ȇ¸9çšO<>èœx¶ ˜s®Ásⱡnâ¹æ“xÀ šxÜ‘a€qª ?Z8§[Ü©&€ƒÜ©f«{r&€qæ9gžqªÀx"¡…sºÁ` wª wlh›s®ù$žsHhA›olq‡œ¸9'žsâ9Çcg8Çx2ÂL9'˜§šΉÇjˆç«Ï9h… R8'c€›xª žj8Çjˆ„*Îqdžâ)‡„þƹƒ "€Æq'ƒR ü gÈg8'´€ç¸Æ'âQÌ£hÁ8º Äã÷£`-xA fPƒä`=øA†P„#$a ÝuŽxœ#çˆÇ9D˜@ÿÈO9Îqs8#爇;âQŒ£ˆ:”€4à î*Ç9âQŽx8#@€„r€ãøàŽj àñ°‚P #îG €˜ñ88N€€4ñ8Ç+ðÐñ¨ÆÎsă9@\s¨C @®à®rœ#切3pwœ#þ° 7Ô¡„ W8G5€£xB€¤Înä €Á9âa*ÖâÝ8Єqœ£\9zÄãñPÇpŽx¢"ø#%ÀQ5s€ãhpA4@ Ãâq+ µ8‡:”4à î*G~À‘`&€Æ9â¡%$@ ¸Â9Ü!ˆˆàt@<ª1€x”ã ÝÈAƒsl#çˆÇ9ªw•ãñ(G<œ!€säg8ÇAÎÑ €M‡;ª1wÄCJH@p…xœ£9(À`àŽxXAŸµþV9ÎrÄÃÈAdAn¼b øpŽj îˆG5à®rœã 8Š&` ¤#H5pŽjàî8G5ppœ ÃâqŽnä@h‚6Ê£ P`ç0Æá®rœã çprŽx8爇:”4à çØFâQBhÂ9Lx\ä&W¹Ëensû\èš°Á‘H± HàåˆG9zrŽE dçpGG¢s":'£s":)žs^:'£ƒâ)'žs:§œˆÊy©œxʉèœxΑ蜗ÊÉ蜈Šèœˆ(ö$žÃ:çwâ!>žr":¶s2:'£r2">žÃÎ!è‚Ήç‚Ή§œs2¢˜‚Ê!肈'>žrâ9'žs#ÈxΉÇ‚Ήè‰Î‰§ăÍ9âqŽ‘cdÄ#È9âQŽxœ#"îˆÈ7âqŽx¸£9G<Αsd „!áIXBž…)Tá YØB¾0„ôø=Î12âþ„x!AˆGâ„x!AˆGâ„x!AˆGâ„x!AˆGâ„x!AˆGâ„x!AˆGâ„x!AˆGâ„x!AÖWÇõä!^<Ösˆ€Ï€„ÎAwüãžxÉ9ₜ„å H9ₜ#"å È9r çˆG9ÎAs¤9G<Ê‘‘r/ç È9^rŽ`ô#"çÈZ9âQŽsÄã)Ç9rŽx”ãñpG<ÊA¼xü#žˆ‡;ÎsÄ£9‡DÊ‘rÄ£ñ8GDÊqŽxO"ç€M9R‚œþC"ç ñ"â˜x|ãY;‡DÜœÃçˆÇ9âqŽrÄ£ç H9âQŽxœ£„ç H9âQŽsäñ(ñ$r‚œƒ çˆG9rŽx|ãñ8G<ÎsHäñ(lÊArœ#ß ˆcrŽx”ƒ å Þ?Îá‰s¸ƒ î™câA<‚”C„åˆÇ9âqŽŒ/"åˆG92RŽŒ”#"îøG<<‘sÀf}9GDÊAsd¤qÌ9âq‰”ãñ(G<Êsä)ÇKÊqŽx|ã)AˆGräñ8G<ÎAsÄã!üFD¾‘oDäùFD¾‘oDäþùFD¾‘oDäùFD¾‘oDäùFD¾‘oDäùFD¾‘oDäùFD¾‘oDäùFD¾‘oDäùFD¾‘oDäùFD¾‘oDäùFD¾‘oDäùFD¾‘oDäùFD¾‘oDäùFD¾‘oDäùFD¾‘oDäùFD¾‘oDäùFD¾‘oDäùFD¾‘oDäùFD¾‘oăb9AÎAsDä9GDΑsDä9GDΑsDä9GDΑsDä9GDΑsDä9GDΑsDäþ9GDΑsDä9GDΑsDä9GDÎÂsDä/qA@@Še@9Ç?âá‰xœ£ñ(AˆsH¤ñ(G<ÊÇ„xñ ^<ÎQŽˆ”#Ä#H9RŽxœ£ñ(AÊõ•#މñ2rŽrăx)AΑõI¤)AÊsăÿ8‡DÊAoä9‡DÊ!‘sHäî8GDÎñsxâ9G<ÎAsÄãñ ^<ÎQŽxœƒ çá9âq‚”#åˆG9âqŽrÄã)AÎAsH„xñ8AÊrD¤)GDˆ÷xx"åþˆÇ9"r‚/#åˆG9âQŽx”#åˆG9^r‰”cdçˆG9"rŽˆœ£/9GDÊrä)G<CâEäñ8G<Α‘rÄãùG<<âEäåˆG9âA¼xœC"ç H9âQŽx”#切câq‰|#åÈ9âA<‚œ£!^9âqŽxœ#å È9úOÄã)G<Ê›sÄãñ(ñr‚œÃ1ñ8G<ˆ'‘sä9AΑǤñ(G<Ê‘sD¤)‡DÎs”#"çˆG9r‚”#åˆG9ò ‚œ£9G9âqŽx|ƒ ç þñB<‚ Ä#ñB<‚ Ä#ñB<‚ Ä#ñB<‚ Ä#ñB<‚ Ä#ñB<‚ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ ˆ‡ èáââáâá¢BH × ÛÐ ßã Î!Î!"Î!"ÎÁÎA<á þAâ¡âÎÁ‚x$â¢âáâáâáâxâxââ"¢Î!Î!"Êáâ‚xb}$ââx2¢Î!Ê!#ˆ‡ ΠΡ2¢âáâ¡¢ˆ‡ Êþ!Ê!Î!ˆ'ì(Î!Î!Ö'Î ˆ‡ Î!Î!"ÜáÎÁÎ Ê!Î6Î!ˆ'ˆ‡ Ê!ˆ'Î Î!Î Î!Î!Î!Î ÎA"Î!Ê!#Êá"ââáâb}â¡âáâáÊ ÜáâÁÎ!"ˆ'#ˆ'Êáâáâa}âáþâáÂ1â¡Î!ˆ'Î ˆ‡ Ê!Î!"Î!¾ ˆ'Î!ˆ'Î!"Î!Î!Î!Ê!ì(Ö‡ Î!Î!"Î Ê!ˆ'Î!"ÜáÎÁââá$ââ"¢Î!ˆ‡ ê(ˆ'Î!Î!Î!ˆ‡ Ê6Î ÎA"Î!"Î!ˆ‡ þáäa ÎA"Î!ˆ‡ Î!ÎáÎÁâáâáâ¡Î!Î!ˆ'Îâáâá¢â2ââáÊ!Ê Ê Îá¢$ÂÒ¡  Š *!ìˆ Ê ¾!Ê!#Ê!ˆ'ÎáâÁâá"â"ââá"â¸Á!Ê!!kÎ!Ê!kÊ!Î!Ê ÎÁ"âÊ Î!"Î!Ê Ê!Ê!Î!Ê!Ê!Ê!a}"ââa}"¢â¡âá"âþ!<á"â¢b}Âì Á"¢â¢âáþâáâÊA"Î ˆ§âxPÁ ^Ž!Î Ê!Ê Î!þ!ÐÃ9˜ëæÆÃFñ8‡AÎÑ©shâÌg¶+®Á\07çH9 RŽ„œ#6ª*Áç^ôŽðsrƒØÈ ç0ˆâqŽÄÃ9Ç@läsÄÃ^˜Ã¼Ðˆ]œá pèÅ9¦lsÄãåˆÇ9rŽxœÓ°ÇÚAÄãñ8‡ClôxxÂFáU9r[œ£YÆ2âqŽ„œÃ çˆG9rŽØÈ!‰ðG"lÄ©spª±Ñ@Îþaspª9Ç5Ò±Œœ#ç0È9rNãñ(©÷Íï~ûû߸ÀNð‚üàOø9òzœ£)‡CÎsÄÃF9G<Î äñ8Gð…€õzøàñpñPñPñpñ`#qñP‚ð Í ¬°êøPþ¡WŽpqñpñpñpÑ PP ÌàgêàøP¡W…ç0e3çåpññà QQñP6ñÀ‰4ð‡yð P03¸p½`åççå0ç62å`¨ ö@ì è`ûöç@ ’+¼¶¶ËpÁñpñPQ qñp Qç0nàþqQf#ñpQñP62ååpñ+ñpË0Ëà`ßç`çåçç`ßPpè˜Žê¸ŽìØŽîøŽðHpåpAÿþåpñPç`çç0çç0çç`Cà © Ö…PøPøPŽ0ç0çç0ç0àa@RVj0qÑ 'Pb+ñp¡ ÎP0çà 0ç0Î H‰&@ ñp qqqq qñpÿV ¤° ññà å0¼2å0\Uði€¦€ ÜPŽÀnPç6’ß62å`åpååî@ A çïßpñ° ñpqa#ñPq¡ ñþð ¢ Áßåç`ç¼ðå0ßçç`ªûùÀ¼É›ý  qñ`#qñpñpÿžçð ñpñpñ`#ñp¶ øÀ þ'߀"pñ ñpñpñPñ ñð ñpñ`# Q•œ½ðü <œP QñpñPQñPñ`#ñpñpÿž`ç06ç`¯ðû> éP…€…àççàñPQ÷  Í`ÍÐ V°ø@¢ìà…pqqñPQñP¼Pþ•Ð üùü°$ŠnPñPqñpQñPñpqñpÿpžð ñpQa#ñðÿÐytúgÀ •À •À gP6ñpååçÀ¢qñpñ€ ÓÀŽ* è ¨çåå`#qÿž0å0¢*ª¶° ¶Ë0×`#qñPñpñ`#å ªç0ç0çøàøà‰à‰ànçð ñPñP6¢zñPq£çç0Êö × lÏ@ôËPñPñPqñ ñp¢z£j#ñ`#ñþ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ñ+ß+¢zñpñðq¢zQ£ZÓ:å¸ñP‰{r00Ð Ä@¢ìà…på¸åþÀ¸† ðªºúºð`£z ðÚ ¤Ðç pñ ˜ÀñP °x0ÑÓê pßp 2À¢Z‰k#ŒÛ¼ñpñpå0çPqñpñpñp"@ Ï åîðñà ñPÓZñà° ¡«¦ 0n… ¢zñPçç0ªçßpa#ñ+Ïpñ@ ç66B çË0­å0ç0åpñ Ë` Ú0ó06ò ¶ð ß`#¢ZñpñÀ ÿ`#ñpñpñp¢ú ùð} Pz`ùð þåà¼å0ÿpž0çмîpBÀ P@ÌÀ B@ ¶ *6ç06rñpñpñp¢ZñpñPEpÀ ½Ð¤ü g•p6"ª6åççÀ¸îðçà 62­ç0‡ð €`öpÜàzßPÓPßåç6çå`#qßÀÍ 5jͰëàáPßçåpQççç0•pÌÐÿÐ ¸P ÿ0……ð Qñp£j#ñp¢ZñZÿp¤pñpa#qŒ€èP ¶@yÐþPgPPgPñp¢za#ñPQqñ š@‚`ì è0 ¨ñ0Æ£Zññà 6çå0åå ËÀ Ô@q Êö Êö ÓzñPQqñpn@ƒ8Ó‰pñ`#ñp‰{qñPqñpñ° ÷0­é0ªÁç6çç0ß`#QñpÓz¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢þz¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢z¢zŒk#qñ@ÿ@ç62ç6ßçesQQñpQQñ0Æñ`¡ûª`ºðPáPåpñPç0å0åç0çà†¼Y ü &Îú`å0î 0ç ªç ` åçTàÎŒ ãþÎñPççà 0ÆÆ çê 5pñP ` 5påÝ0MpñPQ¢Z¢ZñP¢Zñà à Ë cüçà 62ªç0é`ð`↮ó°÷ø0 ñPHHYç0ç0ç ªç ªÔ0Ï€.ñð çð ñ@ ñpÏ0çð ñp¢j#¢zÏóð ç  ¢ù ËÏ0Ï0å62ç ÿ0ç0­çàç  ¿í¿© ççåççççðñà ñpqñpå0þú7Ÿ ÌpøpÅB@ ‰‹”€”PñpÓj#qó@ÏôÜ Mʟ•Pa#ú/ççð ñpñpñpÿž0åç0­‡Ð øàØ` xPzPø°…ð‡pñp£Zñp£z!¬P£š ¬À Íp …à62ªß0­ççð op½ÀêP €S gÐ _Ð îPñpñ€”¯ïç ª6ççðñà ¢j#Óêõ0÷õ` tÚE Çr|PpqQ¢:Æqñ@„ l¤)è ™€ 62ªç06þçðçà qñ`#å0çÀ å` ß` Ózé÷Áç0ªçPñ`#q‰@÷¸Ÿûnç0 ïHYç0ç ªç0ªß° çмqÁç0¼@šÔ £zÓú ¢ú ¢ú ¢ú ¢ú ¢ú ¢ú ¢ú ¢ú ¢ú ¢ú ¢ú ¢ú ¢ú ¢ú ¢ú ¢ú ¢ú ¢ú ¢ú Oà7ñ¾üVð[Áo¿üVð[Áo¿üVð[Áo¿üVð[Áo¿üVð[Áo¿üVð[Áo¿üVð[Áo¿üVð[Áo¿üVð[Áo¿üVðþ[Áo¿üVð[Áo¿üVð[¼s–x.Þ?³ñʵ=ï\¼sÏ‹w÷n¼»ñôž+xÎ<}ðTéC¬oÜXÏ ¼Oï¹xwã•31"~úø!¦g(ž^u j|ÒvN`º-â«&š»jâa r.š€»ñÎÅsà\@‡iƒi˜qpÖc‡i898‡rUF=‡x88‡x@y¨G„O0W3ˆ‡»ÈÖx¸‹x8‡x8‡ˆO8‡x¸‹x(¸ wˆ‡sˆ‡eˆ‡o(‡`X†`à…`X†`Õsˆ»ˆsˆ‡sz`„i‡/Ћrˆ‡sˆ‡shÔ»p‡x88F=‡l-ø†xø†xH‡eˆ‡tX†oˆsˆshÔ`Ôsˆ‡o`ÔsøFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýþFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFýFý†F=‡x8‡ozø‡x8‡rˆrX×»ˆ½ˆ»ˆ‡sˆ‡sˆ»ˆ½hTw(0€1ò„ïä0ˆ‡sˆ½ˆ½ˆ‡shÔrèx#HøÎ~è‚x8‡x8‡j`8‡kÀp‡sˆu@€‚sˆ‡sˆ`þÔ- ˆ‡sˆw8g€s`Ô  ‚x°Іr¸†Op‡j€8‡nÀ€ 8‡r ІnÀ€ ˆ‡r؆)8‡x‡)8‡x‡)8‡x8‡x8‡x8‡x8 …`€ù‡sð„x88‡x8‡xp‡x xà‡26c@|pB8‡x8wˆsˆsÈÖrhÔr8X†sðeÐ ‘g¸‹o†»ˆrÕshÔgЋo¸ þœŒe8‡u^ø‡x(‡x(8‡x8‡x8Ox‡À€lðlxØx‡sÕrù‡sð(8F=þQwˆ‡s@$‚88‡Q=(‡xhšx(88ˆJ˜^`†0˜©w`TwÈÖs`Ôrˆ‡r`Ôsø‡sð„»ˆrhÔrˆ‡;˜†vhkÀç|Îç;ø†x(‡x8888FµVhV`+,M°8F=‡x8‡Q-‡sp‡s¨(p¬JéJ8( „rˆrˆwˆshÔs dwø‡xð„u=‡xø†-˜>pVtpÖžF9ˆ‡sˆ‡o8‡x8‡xø8‡x¸ @t°‡¤²3X3`Ôs`Ôrˆ‡rhÔsˆ8R`ÔÉw`Ôþrˆ‡`Àše((‡x(‡x(‡x8‡x8‡F-‡x8¸‹x89‡/`Ôsˆ‡sˆrhÔsÈÖ»hÔr8Fý†l †oX8‡F=‡x˜ F=¸ 8‡x(‡s`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`þÔs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôs`Ôsˆ»hÔsˆ ‡x¸ 8‡xø†s d8‡F=8J.‡x(‡xp‡.€~èHØ3þ~è‚oÔsˆéx(ãC0ã2î‡.ˆ‡sˆ‡s€€†xp‡sˆ#dpˆˆ‡rˆuX`Twˆg€sp‡sˆX nP%h€+8‡jA€h½‡€hmˆ‡s0†à†x0†à†x0†à†lu‡xOXH€x8‡x8‡ˆO8‡x88‡x8þAx0ãðv@|ø‡2F„x8p‡Q-(‡x8‡x(‡x(‡F=‡`ðs†oІsðe(‡o(‡e`Ô»ˆ‡rÕrˆ‡s†e0®v‘`XãZ†``Ôs(‡x(‡sˆ^ø‡»ˆ‡s(8‡x(‡y@„wèè„w  †wF=‡x8‡x8‡x8‡x8‡ˆO8‡x8‡x8F=‡x¸ ¸‹ ð„O8wˆ‡r`Ôsˆˆsˆ‡»ˆ‡»ÈÖsˆ‡s‡q¨„#8ƒá„)‚Jp‡sˆ‡s9‡x(¸‹x8‡x8‡x8ø‡xð¸‹x8‡þx¸ ði˜kðlðlØkØk˜ƒx¸ Fý†l=8‡|Ðbñû¿×„x8‡xø†x8‡x8FmF=‡x8J€‚3¨„78ƒ7€J`T½ˆiÔsˆ‡rˆ‡sˆ‡sˆ‡sp‡sø‡sð„x(‡x¸‹x8‡x8‡xØ9èéÛ‡cƒ»ˆ‡sˆrˆ‡»ÈÖsx‡p°‡¤²y3ˆ‡shÔoˆ»ˆs`Ôsø‡xð„¿‹rˆ‡sˆe(‡eˆ‡rˆrˆshÔsø†x8‡F=‡Qý‚/ˆ‡»˜‡sˆ»(‡xpF-‡x8‡xˆsñâ};ïÜÀxçâx.Þþ¹oËž}‹wnà¹sÏ%xn`Æ„ç:ž‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xþçâ‹w.Þ¹xçâ‹w.Þ9ñœÏ9ñœÏ9ñœÏ9ñœÏ9ñœÏ9ñœÏ9ñœÏ9ñœÏ9ñœÏ9ñœÏ9ñœÏ9Ï9ÑóOGñœÏ9}“Ð75ú˜P9 •Ï9¹£MðüÃÏ!ü8ù?ý(O9 •Sc9•Ï7SxÙÅ]xÙ…—Sœã£;ñdÏ9ãœñœãN9¹3P9ñdÏ9î tNBçŒOFpTÍe”Ð95žÏ9î tŽ;ãÎ@çÄsN<çÄs޶,‰ñ¸3Ð?ç’P9 e"±ƒ:ì¬óJ¬` ÒÅ@ç¸þO9çÄSÎ@ß$tN<eÔQ0ç|óÍ3å<Ì7Ë(L<å tÎ@åœO9ÅãÎ7¼Ps.ºÚïÄ“Íç¼3Ð9ƒô9ñœOFHÇsÍP¼%×|O9FŸcô9ñþœst9•sô?çx’‘Þñ|Ïrȱ…|ȱèGŸÏ9FŸ3P9F»sN;ÿ¸n<â˜áN<çÄóÍ9ñddt9ñ”c´;ÿÄãI9H—;3P9ñÌ@åÄ“Q<çÄsÒçÄSÎÑåÄSÎ9ñœ3Ð9cô9•sN<çÄSŽÑçÄsN<çÄsN<çÄ“Q<ç }Î@Ρ7w äñ(Gåâ‘‘œÃhç0Ú9Œv£Ãhç0Ú9Œv£Ãhç0Ú9Œv£Ãhç0Ú9Œv£Ãhç0Ú9Œv£Ãhç0Ú9Œv£Ãhç0Ú9Œv£Ãhç0Ú9Œv£Ãþhç0Ú9Œv£Ãhç0Ú9Œv£Ãhç0Ú9Œv£Ãhç0Ú9Œv£Ãhç0Ú9Œv£Ãhç0Ú9Œv£Ãhç0Ú9Œv£Ãhç0Ú9Œv£Ãhç0Ú9âñsÄãÉ=þa´síñPÖ@22s”ãñÈH<ÊqŽxœ#çˆÇ7â‘‘x(+ç˜BÊÔ…2uÁK߈G9ÊqŽxóñÈH<2âŽr¤ãYß8‡3Ïñt”#çpÇ9ÜŒ äñpÇ9âqŽxd$î8G<Ês ÍñÈÈ@Üá£c çˆÇ9RíGsG<2b´sÄãþñ8G<Îs­ñ(Ç@ä O,ˆÇ9ÜqŽÄÃ߈Ç9âQŽ£¹#÷È9ŒæŽxœ#ç8ZFrŽxd$È9vŽ|#Ï/–±Œ`ð"Få…Qãq£) iîˆÇ9´± £R5ˆP¿¡¬œãh¼ø‡Ñ2r힀„' ትzkýÃ@ÎsÄãñ8G<Îsü#ž8G<Î1ŒÄ£9G<ÎdÄ9G<Êa´ŒèÍhHF"Owăî˜Ç<ô1}€6î8ÇÑÎ1sÄãåˆÇ9âqŽxœ£çˆÇ9þqOœ£Fþ;G964Œa hÆ€4œ£²1Ú9âqŽxœc ç@Ú9â‘‘£#߈G9âqŽxœÃhÈ9⡬s”ã9ÇÑ2RŽxœ#åˆGFâqŽxœ#çˆÇ9þOí߈G9ŒæŽŒÄãî8Ç<âáŽÊ~ÃhÊÈ96sí9G<Î1s-#ñPV<Îñsx"#ñ(G<”5s äñȈÑÎs­FËÈ@”eíñp‡ÑÎa´sÄ##9‡ÑÊQÙ)íF;G<ÊŒ”#åˆG9ŒvŽ|#çˆÇ9r£Ãhç0Ú9Œv£Ãhç0þÚ9Œv£Ãhç0Ú9Œv£Ãhç0Ú9Œv£Ãhç0Ú9Œv£Ãhç0Ú9Œv£Ãhç0Ú9Œv£Ãhç0Ú9Œv£Ãhç0Ú9Œv£Ãhç0Ú9Œv£Ãhç0Ú9Œv£Ãhç0Ú9Œv£Ãhç0Ú9Œv£Ãhç0Ú9Œv£Ãhç0Ú9Œv£Ãhç0Ú9Œv£Ãhç r<èñzœãFû†Þ22Œí9Ç@Îs $#•-Ç9¾‘g¦Ã™åpG<Îa´sÄãñ8ÒÜsÍçH9Üq£#å0Ú9"O£ÃhçˆÇþ9âqŽx(k ç0Ú9ÜsÈiçˆÇ9ÆQdd î8ÇfÏa´s äñpG<Îq´sÄãñ8G<ÎsˆàË€„ŒvŽÄÃçˆÇ9âqŽ”Cž1ZFâáŽxœ#çˆÇ9ŒvŽœc ç˜r9ÎeÅÃɈÑäy­HˈÑÎ1sm³çˆ‡²¦\Žðâñ(Ç@ÎsÄÃñç9⡬rÄÃåÈ9¨\Žü#žH9Îa´sÄãF;¼ƒ9s ¤Fû†ÑδŒÄÃçˆÇ8æáŽsÈsî8Ç@ÊsÄã•-G<Êa´sÄÃÿ8)þL£•ÃhçH>B|dd çˆG9âqŽ£•ãHËH¾ü¼*âáâáü¼ÎÖÏÁÏÏ!ÎÁÏËAÑÏÁÏË!ªb ª"Î!ÎÁÏ¿AÑ¿!¾a Ê!¾áϫ֫b ÎáÏâ\¼ñÎÅ;G0^¹xßž#x.Þ·sÏÅû6ðܹ„ã‹wŽà¹çâ‹÷à¹çžK8ðÌ„ã}‹w.á9˜ßâƒù-Þ9˜ßâƒù-Þ9˜ßâƒù-Þ9˜ßâ›ïÖçžx.¡Æxçj<7ðÜ@Ïþ Ôï\¼sÏÅÓ˜Pc¼s ÏÅ;7ðÜÀsñÎ <ïÌsÏ%#çˆFRÄ㤰$)b Ì`R’–$Å"=¹HR\’ÂÜ$)‚I K~¢™Ô¬¦5ù‰M’¢’Ÿ $),IŠI’b‘¤p¤'IŠJ~¤ ¤'+I J’Â’¤ðÄ'IŠM:’‹üÄ$?QÉO8’ú¤$)(ù J’b’¤X¤'I O|Â’¤p$),I Ob‘¤(¨G?ºIR€´’¤˜$)FŠÒ”ªt¥%…>A@Še@B 9G<Îex‚çˆFr‚œ… çˆFrŽxh„ 爇Fâ¡‚œþƒ È9â¡‘xh¤ÑH<42sD#ñ8GBÎ äÑH<Îêœc ‰Ç9rŽxœc çˆÇ9âq–xœ#çˆÇ9âqŽxœ#çˆÇ9âqŽx8’Õ‰ÇYâqŽ™œ#çˆÇ9âq–xœ#爇Fâ¡‘œ#Õ‰Ç9âq‚œc çˆÇ9rŽ„h$çˆÇ9âqŽxœ#çˆÇ9â¡‘xœ#gˆ\ÏsÄã ÑÈ@Î1sÄãñ8G<Îsäñ8G<ÎñxÈ5爇F¾AER#!߈‡FâAEÆãñ8 AΑs äñ8G<ÎsÄãþñ8G<ÎsÄã,9G<Îs äñ8K<γ$äñ¨N<Îs ä 9G<Î ä9G<Î1sÄ£:9Ç7âqŽxœ#çÈ9âqŽT'È9¢‘œ#çˆÇYR„hd 爇Fr‚œc g‰Ç9âQ‚hd 爇FrŽœc Õ‰Ç9âq–xœ%爇FâqŽœ#‰Ç9rŽxh$çÈ9â¡‘xœc 爇FâqŽœ#‰Ç9rŽxh$çÈ9âq‚œ#çˆÇ9â¡‘œe îÈYrŽœ… çÀÊ9r‚œ#þ™‰FrŽxhd çˆÇ9rŽxœ#çÀŠFâ¡‘xœ#rÇ9rŽ„œ%!çˆÇ9âqŽxœc çÈ9âqŽœc çˆÇ9r‚œc&¹ŒF¢‘œ#çÈ9âáŽx¸ƒ ç È9rŽxhd çˆFrŽxœ#‰Ç9`r‚|#çÈ9r˜œ#çˆÇ9¢‘xœ#‰‡F¢‘xœ#ç È9Ê1³ äñ8Ç@ªCÄãñ8G<4s$äÑL4sÄ£:ñ8K<4’äñ8G<4BÄãñ(G<ÎAsÄãñ8G<ÎsÄãñþ8G<ÎsÄã"ðÄ3 €xœ#!ç †'rŽ„”ã)Ç9r–xœƒ ç€ÉYâqŽœc gH9ÎArlå3ÑH<4BsÄãñPBÎ1 äñ8L42s D#È9ŠŸsÄãñ„'©q‚œ#爇FâqŽxœ#çˆÇ9rŽxœ#PçHÈ9âq‚”c ç ˆFrŽxœù39ÇLÎ1“sÄãñ8 AÎ1ççççg1çç1çžð q A ž€çççAñp—¡ñpñpñpqþq[q[q ¡ñPñpñp0qñð q—qq3qñpñ  q¡ñ  ¡qq0Q¡ ¡0Qñ qñp3qq3qr%xñp0qñp0qñp0qñp0qñp0qñp0qñpqȧ0q3ñ ñp0ñ ççß0‘çåg1çç‘çç0çç€ç0åç0åççç0çç0çç0þç€ççß0A|ççç0ç@ç0ç@ç@ç0ççggçç0Açççç@çççåç01ç€ç‘çç0ç@ç0çç1ç0çç°ç0g‘ç0çåpqñpñpñpñpñp%˜ @ Ë 0ååÔà ç@ç0ç@ç(ç@çç@•ñp qqqqñpqXq0qqþqoIç@çççççççççç0ççž´ Qñpq%¨ñ ñ QXqñpq¡qñpqñpñpñpñpñpñp qå0çP‚çPqoyñpñp[qq¡qž° q± ¤pñPñp qq¡ñpñpñpñpñp0qñpÅw—qq qå@ç@A11ç0ç@gA1ç0ççç`˜ñ 0q3qþôw QQT© qñpqñPñ 0qqQ Q Q Q Q Q Q0qQñpñpñpXqå0åç0ç@çççç@ç1ç0çpç0çpçç°ç0ç@ç€ç0ç0ßçpç€ççß@‘ç‘çß@ç0ççççà3qqñPñpqXqXqqqñpñp[qXqå0ççPñpqqþñpå0(çç0åç@çç@ççPñp3qå°ç0çç@ç01ç@çççççççççàç ¤ ñpñpñð ¤Aç€çç0ç€|çç@1çç€ç0ç@ççç0Q‚ç@ç€ççççp¢qñp á Ëç@å0çååçççP|åçååç0ç0å@çAååçå@åþßå0çß ñPçß0ßçççßç01ßpñ ñð ñ â Ï0ßð žç@åpå@ççåå@å0å q¡ñPñPçå0çççåp¡ßç@åpQç0ç0åß0ç@Aççß0åç0ßpñpñ 3qqñpñpñpqñP0qQç‘åPqñpñpñp ñ ñð ¡qq¡ñð þççççççççççççççççççç@ç@ß qñ ñpß0ç0ç€çç€ß0ß0ç@ßpXqqñð 0qñð qqqqñð g1ç0gå ñ ¡ñ ñpñp0qñpX¡ñ ñp ñ Xñ qñp qqMç@åå0çåç0åççßp ñ 'ZñPççå0ç@çþåå@çç@çå0åpñpå0!!ñpqñpQ q[qñð g1çå@ç0åçç0ççPç@ç@çPç@å@åå€îž° qA ž@ q qoyqq†Iñ@ç0ç`˜çôç@ççç0ç€ôpñ@0qñpñpñpñpñpñpñp3Açç0‹ô ñPQqñ ñp¡qqåççççþç0ç0å0ßåççç@çç0ççgçç@ç@ç !qñpß0ßç@ç@ççç0ç@çå01çà Ôñ ž0ççå0åAççççç1çð q qqñPqñ ñpqñð ñpq¡0Qq¡ñð ç@çç0çç0çç0ç@ç0ç0çPñPñpñP3qñð qßç0þßç€ç0ç0çç@߀ç0ççð qß0ç€ç€ç€ç€ç€ç€ç0g1çP|çç0Õçç0ßçßçð qñ ñpñð qñ çß@çßç0çßç0çç0çç0å°ç0å@çç0ñ q¡ñð ñp0qñpß0çßçð ñpñð qqñpñð qåççPñpåççPñpå@þåçå@çß0ßçç@ß0ß0ñ åpñPñpåß0ç0åpå@å@ç0çP¡¡ñPQqñpå@çPñpñpqqqñPñ !qñPQñPñ åçç0åç0å0ç€çç@ååççççççççàç ¶ qñà AA]_‚ôô€ôô€ô@ôôô@ôô0ôôôþ0ôôô0ô]?ôôô0ô@ôôôôôôôôôôôžð ñpñpñpñp0qå0ç0‘çççßå@å0AççßååååpñpXQñpqñp¡Xqñpñpñpñpñpñ qñp qñ 1å@ççž@žpXqñçâ‹W0Þ·‚å ,·ÐaÁrñ΋w.Þ¹xç ž{Øñ\G‡åâMŒ÷-ÞÄsÏÅþ›ØqâÂoÏ,ï[ÁsñÎÅ;ïœÁs'Æ›hð[¼sñ¾Å;gðÜÃs 'Æ+WpbÁs ãûv.Þ7ƒßâM\X.Þ¹‚åâ}{x.Þ¹Žçâ+xÎà·sÏüv®à9ƒßÎâAwÄC’ñ Ç;â¡ÉxÐ#ôˆ= ’‚Ð#¡G>âAxÐ#ô(=òQzD’ù8=âA‚H2’ÌÇ9è±zä#šŒ‡$ BxÐ#ôˆ=âAxÐ#ôˆ=âAxä£ ô(="ÉxÐÃÔˆÇ9âñ‚”ãñ8G<ÎQoä)Ç9 R+ƒœÃ!ç(H9 r‡œÃ!߈þÇ9uƒ”c"ñ˜H<¾qŽxœãQçˆÇ9âqŽxœ#çˆJ òxœ#ç(È9âqŽxLäQå8‡'Îsx"ç(È9 RŽ‚œc!çxÈ7RŽxL¤ ç(ÈDâñx|ãñøÆBΉÄã9G<αsÄ£9G<Êsä)Ç9ò ‡œ#ß(ÈDRŽoÄãñ8G<ÎQoÄãñøF ’ƒÐ#ùˆ‡$ ’ƒÐ#É;è|ăñ G<èzăñ G<è|ăy= B‚䃡GA<ñŒ‚œ#ç(È9 þ2‘‚L$çøF<ÎQ”ÄãåXÈ9âqŽ‚œ£ ß(È9ÊásÄãñ8‡AÎs”cA™ÈBÎas,äAI<ÎsÄãñøFAÊ@ƒ@ €Äãñ˜ˆAÿx ñ(G<ÎQOÄçˆÇ9 2‘x|£ ߈ÇD rŽxœ#çˆÇ9âqŽ‚œ£ ç0È9rƒœ£ ç(È9 rŽxœ£ ç0ÈD ‚ƒœ#å0È7 rŽxœ£ ç(È9âñxœ#ç0È7 rŽ‚œ#éÈ9 rŽxœÃ!çøÆD òxœC+‰Ç9â1‘xL$(1È9âqþŽx@ ‡8‡‚8‡8ƒXx8ƒø­8‡x8‡xø†x8‡‚8‡x8‡‚ø†…8‡‚ø†…8‡‚ø†…8‡‚ø†…8‡‚ø†…8‡‚ø†…8‡‚ø†…8‡‚@‰‚8‡xø†‚˜ˆ‚8‡‚8ƒ8‡x8‡x8‡x8‡x8‡x˜ˆxø†x˜ˆx8‡x8‡‚ø†‚8‡x8‡‚8‡‚8‡‚8‡x8‡x8ƒø†x8‡x8‡‚8‡oxˆsˆ‡sˆ‡sˆ‡‰xˆsˆ‡s(ˆ‰pˆ‰(ˆspˆsxˆsˆ‡‰(ˆsˆ‡‰ˆ‡sˆ‡s0ˆsˆ‡oˆ‡sˆ‡r0ˆsˆ‡s(ˆsˆ‡s(ˆs‰sˆ‡s0ˆ‰(ˆsþ(‡x8‡‚(‡x8‡rˆ‡sˆ‡sø†x8‡x(‡‚(‡x8‡x˜ˆrЊsˆ‡sˆ‡‰(ˆr(ˆ‰(ˆsˆ‡‰(ˆsˆ‡sˆ‡sø†‚ø†x8‡‚ø†s(ƒ(‡‚˜ˆ‚8‡‚8‡x8ƒ˜ˆ…ø†…8‡r0ˆs(ƒ8ƒ8ƒ8ƒ8‡ø†‚(˜ˆ‚8‡x˜ƒ8ƒ8‡rXˆsèˆsxˆr(ˆr0ˆopˆsˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sOxH€x8‡x8‡xð„x ‡… ‡0ˆI’ƒL°LàzˆIz‡xФxè¤x ‡x¤x¤|ˆzˆ‡|è¤þx ‡xè$ƒ ‡x ‡xФx¤‚ ‡|ˆzˆIʇ‚Èz(IŠMŠzˆzˆ‡|ˆzˆ‡N¢‡w ‡xȇx¤|¤|¤x ‡x ‡xȇx ‡w ‡xȇx ‡|ˆzȇx ‡xȇ»¤‡w¤‚ ‡|ˆMŠOX†x8‡x8ƒ8ƒ8ƒ8‡…8‡…8ƒ(‡x(‡…(‡x˜‡8‡xøøE)ƒ8‡8‡‚8‡x8‡x8‡‡8‡x(‡‚8‡x8‡x8‡x€ÈNíÌNpˆs(ØÎí€s(ˆsˆ‡sð„‚8Rxˆsˆ‡sˆ‡sXˆs(ˆopˆo(ˆsXþˆsˆ‡o(ˆo8‡‚8‡x8‡x8‡‚8‡G)‡s0ˆoXˆo8‡…ø†sˆ‡‰ˆ‡sˆ‡s0ˆsˆ‡sˆ‡sˆ‡r(ˆ‰ˆ‡sXˆspˆoˆ‡s(ˆsˆ‡s(ˆs0ˆr8‡@ ƒ˜ˆo8‡x8­8‡‚8ƒ8‡8J9‡x8‡…8‡Ž(‡‚8ƒø†xø†Ž8ƒøƒ8‡x8‡‚8‡‚8‡x8‡‚8‡‚8‡x8‡‚8‡‚8‡x8‡‚8‡‚8‡x8‡‚8‡‚8‡x8‡‚8‡‚8‡x8‡‚8ƒ8‡…ø†‚@ ƒ8‡‡8‡Ž8‡x8ƒ8ƒ8ƒ8‡x8‡x8ƒ8‡‚ø†s(ˆo0ˆs(ˆoþ8‡x8ƒ8‡…8‡x@ ‡8‡‚8‡x˜‡8‡8˜‡8‡xø†‚88ƒø†‰ˆ‡sˆ‡s0ˆspˆspˆsˆ‡s(ˆsˆ‡spˆ‰0ˆspˆr8‡‡(‡…(‡s(ˆ‰ˆ‡s0ˆsˆ‡r8‡x(”èˆ)ˆ‰ˆ‡s(ˆ‰ˆ‡sX”(ˆsˆ‡s0ˆoˆ‡sˆ‡s0ˆrˆ‡‰ˆ‡s0ˆs0ˆ‰(ˆs(ˆr0ˆo8‡x@ ƒ8ƒ(‡s(ˆo8‡‚8‡x8‡x@‰x8‡xø†‰ˆ‡s(ƒ(‡x8‡Ž8‡‚@‰x(‡‚8‡rˆ‡sˆ‡o(ˆrˆ‡‰ˆ‡sˆ‡sˆ‡sˆ‡‰(ˆsˆ‡o0ˆþr0ˆrˆ‡r0ˆrˆ‡r0wOXH€rˆ‡sˆ‡sð„| zȳ¥‡00Û}{ø{àƒ´[zˆ‡|ˆ‡¹Í‡´Í³³Í‡x ‡t†xȳͺͺMÛ|ˆ³-ˆ|ˆ‡|0ÛxHÛx ‡|ˆ³Í‡x ‡|0Ûx ‡xȳͳM‡` ‡x ‡xȇ´³‡´Í‡xȇx˜Û|ˆ³‡|(zˆ‡|ˆ‡€ˆ‡´Þ0ÛxȺ%…gXˆo(ˆr0ˆsXˆ‰‰×Їs(‡x8ƒ˜ˆ‚8‡x˜ˆx8‡x8‡x8‡‚˜ˆx8‡x8‡r0ˆsˆ‡rˆ‡s(þˆrˆ‡r(ˆrXˆsˆ‡sø†‚8‡oP”sñÔNˆ‡s(ˆs(ˆs€ ®`€x8‡…ð„‰ˆO(‡x8‡oèˆs(ˆrˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡oˆ‡o0ˆsXˆsxˆsøƒø†‚ø†x˜ˆoˆ‡sXˆs0ˆsXˆ‰(ˆsxˆrˆ‡s0ˆs0ˆo0ˆs(ˆoˆ‡s(ˆs0ˆs0ˆs0ˆr0ˆo0ˆsˆ‡spˆsˆ‡sXˆo(ˆo(ˆsø†x(E9‡x8‡Žø†xø†‚ø†‚8‡‚8ƒ8‡…8‡x8‡r(ˆsˆ‡s(ˆ‰ø†‚ø‡˜ˆx8‡‚8‡x8‡oˆ‡sþ(ˆsˆ‡s(ˆs(ˆsˆ‡s(ˆs(ˆsˆ‡s(ˆs(ˆsˆ‡s(ˆs(ˆsˆ‡s(ˆs(ˆsˆ‡s(ˆsˆ‡spˆsˆ‡s0ˆsˆ‡s0ˆsø†‰(ˆsˆ‡sø­8‡…8‡‚8‡…8‡oˆ‡spˆsˆ‡oxˆs(ˆsXˆ‰xˆsx”søƒø†‚˜ˆ‚8‡‚˜ˆoXˆsˆ‡s0ˆsxˆoˆ‡sXˆsxˆs0ˆs(ˆsˆ‡o(ˆsˆ‡oˆ‡s0ˆsøƒ˜ˆx8‡Ž(‡x˜ˆx8‡x˜ˆr˜ˆx8‡x˜ˆx8‡x8‡Ž8‡‚8‡Ž(‡x8‡x(‡.[ˆsˆ‡s0ˆsxˆ‰xˆs‰s0ˆs0ˆsˆ‡þs0ˆ‰xˆrˆ‡rˆ‡sø†…8ƒ(‡x(‡x8ƒ8‡x8ƒ8‡‚ø†x8‡‡8‡rˆ‡rxˆs(ˆsˆ‡s(‡‚8‡‚˜ˆ‡8‡…8‡o(ˆsˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sRxHƒ8‡xð„x ‡x˜Û0øl@Ø‚- -ø| ‡x˜Û{°…`hígx‡x ‡x ‡x ‡xÈzˆ³z¸‡`ˆ³zˆ‡|0Ûx0Û|0Û|ˆzˆ‡|0Û|HÛx0Û|0Û|¸[híÖÆ³³Í³³-³M‡`HÛx ‡xȳ͇´Í‡xȇ´þºÍ‡ÅM[à‡€x ‡ÈΈ‡|ˆzˆ³³õ„eˆ‡sˆ‡sˆ‡sˆ‡o0ˆopˆo˜J9‡‡8‡8‡x(‡xø†x˜ˆ…øƒø†‚8ƒø†s(ˆ‰(ˆsˆ‡spˆs(ˆs(ˆsˆ‡sø†sˆ‡s(w°`  €‚8‡‚8‡xpHàà(ˆr8‡x8O(ˆsð„‚8ƒ8‡x8ƒø†Ž8‡‡˜ˆx8‡x8‡‚˜ˆ‚8‡x8‡x8‡…8‡x˜ˆx8‡…8ƒø†s0ˆoˆ‡s(ˆs(ˆsXˆrˆ‡rˆ‡s(ˆrpˆsˆ‡sXˆsˆ‡s(ˆrˆ‡sˆ‡sˆ‡sþˆ‡s(ˆsˆ‡s0”XˆsЊsˆ‡sˆ‡sˆ‡s0ˆs(ˆoˆ‡sˆ‡sˆ‡oˆ‡sˆ‡s0ˆsˆ‡o@‰‚˜ˆx8ƒ8‡x˜ƒø†x8‡…8‡‚8‡x˜ƒ˜ˆx˜ˆx8ƒ8‡‚ø†G9‡‚ø†…8‡‚ø†…8‡‚ø†…8‡‚ø†…8‡‚ø†…8‡‚ø†‚ø†x(‡sèˆs(ˆo8‡8‡x(‡‚˜ˆ‚ø†x˜ƒ8‡xø‡8‡xø‡8‡xø†…8‡xø†‰0ˆsˆ‡sˆ‡sXˆsˆ‡oˆ‡sˆ‡‰ˆ‡oˆ‡sˆ‡s(ˆs(ˆs(ˆspˆsˆ‡sXˆs(ˆsˆ‡rˆ‡sˆ‡sˆ‡‰(ˆþo8‡x8‡‚8‡xø†‚8‡‚8‡…8‡‚8‡x˜ƒø†x8‡‚ø†‚8‡x8ƒ8ƒø†‰(ˆsÈi‡8‡‚(‡8‡‚˜ˆ‚ø†x8‡…8ƒø†s(ˆo(ˆs0ˆoP”o8‡x˜ˆ‚8‡x8‡xø†‚8‡x(‡x8‡x˜ˆxø†s0ˆo8ƒ˜ƒ8‡8‡x8ƒ˜ƒ8‡‚8‡x88‡…8ƒ8‡xø”ˆ‡‰(ˆsˆ‡r0ˆsXˆsˆ‡s(ˆs0ˆo8‡x8ƒ8‡8‡Ž(‡G)‡‚OXH€rˆ‡s(ˆOÈzȇ|0Û}zˆzØ{ø{h³Í‡¹U‡` ‡‚xþ†`0Û| ‡| ‡|0Û|˜Ût†´ÍºÍ€ '^÷‚å˜c¼|ãȧ‘^<ù0ø'3@™ÿ䣗^>ù’ZïœÄsñÎÅ;w.Þ9‡ç$*w®œÄxçâ‹÷íœÃoÏÅûVÕá¹±çâ‹§T©C¥•:T¯œÄsñÎÅ;'ñ\¼sËI<çn0aÂÏÅ+'ñ›Žÿ ˆ§4Þ¹xž$z:çp­ÄsñÎÅ;÷-Þ¹xç$ž‹w.Þ9‡çªž{n¬Òxçž‹wÎá9‰ç$*•¨tl¼oñÎÅ;çðþœC¥ßâ‹wÎá¹xçâ“xÎṱߪ®•ø-Þ9‡ç¾Åûï\¼oÄÏÅ;ï\<¥ñÎÅ;OéØsÏU¥”CçÄóM<ßTõMžPÏ9SÕ9ñœãÐ9U#Ñ7ñ”SÕ9ñ¬%Q9çÄsN<ßœSU9ñ”nUJ{NHœsÄãñ(G<Îás|ðù†CÎQ•oŒåñ8‡CÖ¢½sÄãÚ;‡D¾q‡œC"ß8‡CÎ!‘oœÃ!çÈ7ÎásHäçpÈ9$òsTåñ8G<ÎáµÄã9GU¾qŽx|cBç˜Ð9ˆó ‡(%çÈ9r‰œÃ!JqÈ9ªrŽxœ#çˆÇ9âñ ‰œÃ!çˆÇ9ò ‰œcBçÈ7rŽx”#çpÈ9âqŽªœC"ßpÈ9ªr‡(E"J‰Ç7$²þ‰œ#çˆÇ7Î¥8ä9‡DÎ1–r8¤)G<Ês8¤çˆÇ7âqŽxœC"çpÈ9âñµHäYË9¢”ª(%çÈZâqŽxœ£*åˆG9ÎsHäñ8‡CÎá¥Tåñ8‡CÊ!‘rÄã9GUÎQ•sÄ£ñ8‡CÎs8äQJ<”sTåñ8‡D¾A¥ÄãQJ<ÊqŽxœÃ!ßpÈ9âqŽxœ#çˆÇZ$rŽx|C"å¨J9RŽx”#åˆ;@@Še@¢ç(G<ÎOäƒvþÃêòáº|Ð#?‹?ÔÁ‹ŸíãÁ¸G<èqþed#ô¸6è‘oÐãÁ G:‚ñŽ|Äãñ G<®‘|Ðã؈Ç=ž zäãØ Ç=®|¸î¼ G>\§ŽaÄãÏ Ç=–Ÿ]ô¸G0è‘k`ƒ÷x6èq`hãgû¸6èqk`ƒ÷6òqÚ¹Ž~W—ÕíÃÏË9Ær‡”#åˆRâ¡”xœcBçø†DÎs8äñ8‡C”sÄãU9Ç7&ô ‡|ƒ8çˆG9âq‡|Ã!çH9âq‰œ#çˆÇ9$r‡œ#çpÈ9 ¿ )G<Îá‰xœ#žˆÇ9$rŽxþ|#çÈ9ªrŽxœC"çpÈ7âQ‰|#çpH9âñx”#çˆG9rŽoÄãñPJ<Ρ=¥”Ã!kqÈ9ÆòxœC"çÈ7&tޱ|Ã!ߨÊ7ò ‡œC"ç¨Ê9âq‡œÃ!çˆÇ9âQŽxœ#çˆÇ9$ò ‡|£*çˆÇ9òªœãUQJ<ÖâsŒåñ8G<¾Q¥TåùF<¾s8D)ñ8G<ÎñxœÃ!çˆÇ9r‡œ#çpÈ9rŽxœÃ!çpÈ9âq‡œÃ!çˆÇ9r‡œ#çpÈ9âqŽ C"çˆÇ9$rŽxœÃ!çpÈ9âñ â|þ#çø†DÎñxœÃ!çÈ9rŽžÃ!ßpÈ7âñ ‡œc,çˆÇ7>xŽxœÃ!çpˆRÆ¢”xœC"çˆÇ9r‡|c,J©Ê9âqŽx|C"ßË9âqâœC"çË9âqŽª|£*J‰Ç9â¡”x(¥*çÈ9âqޱœÃ!çÐÞ9¬¥çVèÁ‡LØ€™ˆ=òA|ÐcøÀÖžñש#ñ ‡-~Æ}zÜ#߯<è‘zäÃ>üŒ:ÃÏÃÏìƒ:=ÜC0ÄÃÏÜC0ÐGüÌ=ðûÃ8äÃ>|Ã2C>ÄÃ=Ãê܃-äÃ==ÜC0ÄÃϨC0ÐÃ=ÃêÜC0ÄÃÏÜ6ÄÃ=ðÂÏð=p=pGð=€cÀÏ != !=pÄÏpŸ',Ã9ÄÃ78Ä9”C<”ƒC|C<œƒC|ƒDœCU”Ã9LÈ9ÄÃ9HÄ98Ä9ăRTÅ98Ä7œƒDœCþ<|C<(E<(E<œƒCœC<”ƒC(…CœƒCœƒDœC<œƒÛ9D9œƒDœƒC¸™ÄÃ9ÄÃ9ÄÃ9x‚DxB<œC<|ƒCœƒCœC<œƒD|ƒCœƒC|ƒD(…DœC<(…C|ƒCœC<œƒCœC<œƒCœÃXœC<œC<œC<œC<|Ã9ŒÅ9hÏ78Ä98Ä7T…R8Ä7ÄC9(E<œƒC|Ã9ÄÃ9ÄÃ9ÄÃ98Ä9ÄÃ9T…RHÄ7œƒ#*…DœƒC(E<œC<œC<œC<œC<œƒD(E<(…CPq(…DœC<œƒDœC<œC<œq(E<œC<œC<œƒCœƒCœƒDœþÄœƒCœƒC|C<œƒCœƒC|C<œƒCœƒC|C<œƒCœƒC|C<œƒCœƒC|C<œƒCœƒD|C<œC<|ÃXœƒC|Ã9ÄÃ9ÄÃ98Ä98Ä9ÄÃ9ÄÃ9ÄÃ7œC<œƒCœC<œCU|ƒCœ¸œC<|ƒR8Ä9HÄ98Ä98Ä9HÄ9ÄÃ7HÄ98Ä7ÄÃ9ÄÃ9ÄÃ7œC<œƒC|ƒC|ƒDœÃ7œƒDœƒC|Ã9HÄ9H„RÄÃ9ăRHÄ9|Ã9T…R8Ä9ÄÃ98Ä9ÄÃ9ÄÃ7H„RÄÃ7œƒCœC<œƒDœƒD|Ã9ÄÃ9ÄÃ9¸Ý9ÄC98Ä98Ä9HD9ÄC98Ä9þ8„RHD9œƒD|Ã9HÄ7œÃ„|C<œC<|ƒC|ƒC|ƒC|Ã9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9TÅ9ăR8Ä98D9ÄÃ9ÄÃ7ÄÃ9ÄÃ9TE9HÄ9”Ã98ÄZÄÃ7œƒC(E<œq”ÄœƒC(E<(…CœC<œƒCœCUœCUœC<œC<|Ã9TÅ9ÄÃ9HÄ98Ä7œC<œC<”ƒD”ƒD”ƒÛ¹C<€€',$À9T…'ÐC>ÐC>ÐC>ìCÐÃ>ÜØÃ´ÐC>ÐC>ì=äƒ:ðÂ<ÌÃê¤Ã3Ã2`M>ÜC0ÐÃ>üL>¤C0,7Ð÷åC:,Ã2°_þ<ÜC0¬Î=Ã>¤/<Ö,C0äÃÏì=¨C0̃CÐC>ìC<ÜC0`ÃÏÜ/ìÃÏÜC0Ѓ:C<Ü/ÐC>Ð>=Ü/äÃÏÜ/<ÒÃ==äƒëäíÀcôCäÃêäÃêìÃÏìC>¬)ÐC0œ÷Ý/ÐÃ=ð=p÷Ý/ÜC0œÃÏÜC0œ÷ÝC0ÐÃ=C>üŒ:Ã>ÜC0ÐC>ÐC>p2=pß=ð?ðÃêì=ƒ6Ã;ÐÃ=ðÂê¨C0ìÃ==ÜC0ÌC>Ѓ:=Ü/ìC>ÐÃ=ƒ>üÌ>üÌ<=p'ô>€Mü?üƒô>Ð÷ýL>ìC>pþŸ'PƒDœC<œƒCœq(…C|CUœC<(Å„œCU|ƒC|ƒD”C<|C<œqœƒöœC<(…C”ƒD|Ã9HÄ78Ä9ÄÃ98E­E<œÃXœC9T…;,tTKµHD9ÄÃ9x‚Cœ)TÅ9HÄ78„RÄÃ9ÄÃ98Ä9hO<œƒC|Ã9TÅ9ÄÃ9ÄÃ7€Ë98Ä9ÄÃ9TÅ9HÄ7HÄ9ÄÃ7œC<œƒCœC<œƒDœƒCœÃXœC<(…C|C<œC<œƒDœC<œC<(E<œÃX”CUœƒCœƒCœƒDœƒDœC<”CU|ƒöœC<œC<|C<œÃX”CU|C<¬E<|ƒC(E<þ|ƒCœÃXœC<œƒC(Å„œC<œƒC(E<|ƒC|CU|ƒDœƒCœCUœƒCœCUœƒCœCUœƒCœCUœƒCœCUœƒC|C<œƒDœƒCœC<œC<|ƒCœƒC|Ã9ÄÃ9ÄÃ7€Ë9Ç9ÄÃ78„RHÄ9ăRÄÃ7TÅ9ŒÅZ8Ä9ŒÅ98Ä9ÄÃ98Ä98Ä9ŒÅ9ÄÃ98Ä9TÅ9HÄ9HÄ9HÄ9HÄ9ăRLÈ7ÄÃ98Ä9HÄ9H„RHÄ98Ä9ăRÄÃ9‡R|Ã98Ä9ÄÃ7HÄ9HÄ98Ä98Ä78Ä7Ç98Ä7œC<|ƒRÄÃ9ÄÃ9ÄÃ9ăRHÄ9ÄÃ98Äþ9ÄÃ98„RHÄ9HÄ98Ä9ÄÃ9T…RÄÃ9ÄÃ9HÄ7HÄ9ÄÃ9HÄ7ÄÃ98Ä98Ä9€Ë9ŒÅ7ÄÃ9ÄÃ9HÄ9ÄÃ9ÄC9HÄ98Ä98Ä9ÄÃ98Ä9ÄC9(E<œC<(E<|Ä|C<œƒCœƒCP”C(…CœƒCœC<œq(…D(…DœC<œƒCœÃX”ƒC”C<”C<”C<”ƒC Â2@‚ÄÃ9ÄÃ9ă'ÐÃ>ЃA‡?ì=ð=ü€=ð÷ÑÃ>äÃÏÜ/ä÷åÃ=Ã<ä=\C0üÌ5`ÃÏÄ=܃-ÐÃ=6ìÃ==ä=\C0üÌ5`C>ÐþÃ5ÃÏ\7ÐC>ÜÃ7Ð÷åÃ>¨C0¬Î>äÃ>\Ã3ðÃ5<=ÜC0`C>ÐÃ5`=ÜC0ä=\6üÌ3`=ÜC0Ð÷ÑÃ5p=ì=œÃ>ÜC04=4=À?üpP}p=äCDs=ìC>ìC>Â3|CUœƒD|q¬E<œÃ7Ç98Ä7ÄÃ9ăRÄÃZÄÃZ8Ä9ŒÅ9|ÃX|C<œƒC|qœC<|C<œÃXœC<”ƒDœ¸œC<(Å7ÄÃ9ăRÄÃ9ÄÃ9 Fè‡~<”C<|C<(EúQ#~ô£a¨Q?ö‘~rý¨?äÔ9rü€Õ>úQ£|بûÈ ÷qHåcüPG0lÄ|Ô6âÇ>ú«|ð£þû8ä=‚A¦}ôVüèGø!¤|Ø(BêÇ$ûa£|ðV‡´Q>ú!§|بrêÇ><ñŒx|£ çˆÇ9 ’‚|£ çˆÇ9 rŽ‚œÃ çˆG9âñxœC+߈Ç9.rŽxœÃ çˆÇ9 rŽ‚œã"çˆÇ9 r¶œ#çˆG9 RŽsÄ£ñ(G<Êräñ(G<Ês\äñ8G<ÎsÄãñ8‡VøQ£~©ûà‡øAoƒï£6:¤œi£~بû¤œú!'O<ƒ-ç(HsâqŽ‹œ# ‘Ë9 òx”#ç¸È7Ø’xœÃWç(È9Øòsä9G<ÎQæü< ¹È9 RŽsı å8G<Îá‰sÄ㤈G9Î!—sÄãëúFAÎs”#ßIA¾QsÄãlI<ÎsÄã9GAÎq|$9G<ÎQo\ä9G<Îo\äZ9GAÎQs|ŠçˆþH´Òœx|£ åˆÇ9 òx|#å(È9âqŽxœ£ çÐÊ7 òxœ# )È7âqƒ|ãùÆ9 òxœ#ßË9 ’xœ£ ç¸È9 ò ­|#ßÐÊ7âñ ­|#ßÐÊ7âñ ­|#ß(È7Ρ•säñI<¾aoÄãñ8G<ÎQoäå9G<ÎQsÈåâáÖ¥9 â.$.ââáÎ!¾!/Ρ Îá"ÎÁ€ÎÁ Î!Î!Î!¾A+Îá"¾¡ @¢ @â"ÎÁ ÎÁWΡ Î!Ρ ¾á èâ¡Îá"¾Á ¾!@"@"ÎÁ Îþ¡ Î!¾á´â´â â.â ââá.$âá´â ââá â ââá â èÎ!Î!ÎA+Î!/Î!Êá â ââ$â$ âäâ â ¢9âáâá âØâ â´ââá â ââá ââáä¢â¡â¡ ¢ a÷¡û¡Fúaº1ú¡FúaiúaúaîaûavqºqvvÑFiúa6þá^m¤jld÷ö¡ö!a÷!aSö¡òáiTVf)þ¡òö!îu<š#Î-Ê!Îá"Êáâ¡9´$ â.â ââá.ââáÎÁ Ρ Î!Ρ Î!~® @¢ Ρ Ρ ÊÁ€@"/~®9âáâ¡9´â<Á <áØâ âØâ âÎ!Îá"Î!ÎA+Ρ Ρ Î!/ÎÁ ~.þÎá"@¢ Ρ Ê!Î!Î!Î!ÎÁ Êá"Î!Î!¾A+¾!@â"Î!¾Á Î!Î!Î!ÎA+¾!¾!ÎA.ÎÁ @ @¢ ÎÁ Î!Î!¾á"Ê$ ââá.ââáâáØââáâáâáòââáâáΡ Ρ Î!¾¡ ¾¡ Î-Ρ @ Ρ @ Ρ @ Ρ @ Ρ @ Ρ ¾¡ Î!Ρ Îá"Ρ Î-¾¡ Î!@¢ @¢ Î!¾áâá â@¢ ¾Á ¾!Î!Î!Î!Î!Ρ ¾$ $ þââá ââá â $âá â â â´ââáâáâáâá â.â.â.ââá ââá ââáâá ââá ââá ââáâá â $âá´âÎ-Ρ Î-Î!ÊÁ ÎÁ Ρ ¾¡ ¾!ÎA+Ρ ¾A+Î!Î!Ρ Ρ Î!Î!Î!ÎA.Îa]Î!@ @¢ @"ÎÁ Ρ @â"šƒ-Î!Ρ ΡZ ââá ââ$Ø¢Ρ ¾!Î!@"ÎÁ ¾áâáâ¡âáâáâ¡9âáþâáäââ¡â¡ä¢ Â@€–  Ρ KþÓÏ?ýü“Ï?ÿ<ùÏ“ÿôóO>ýü³ä?YöóO>Yþ“O?ÿä³ä?Kþ³d>Pò³ä?ùdIæ’ÿ,ùO>ýü“Ï’ÿäÓ™ùüÓÏ?ýü³ä?ù,ùO>KþÓO>ýü“O?ÿäóä?ù,ÉO–dæÓÏ?ùüÓÏ?ùÄÙ'ËÄsŽBçÄsÎ@ß(ôÍ9 }ÏGñœÏ9}¤Ð9ßÄsN<ç ôBç tN<ç tŽBç(tŽBç ôÍEçÄsN<þç(tŽBç tN<ÅsN<ç”O9ñ”O9ñ”O9ÏGß ä‰B¤|sÎ@ç|Ï7}£Ð9“£Ð93Ð9Ï7sÑ9 Ï7ñ|Ï7ÓÑ9}Ï9ñœÏ9ñœÓÑ7ƒÑ9ñœÏ9 ÏG3ÐGßÄsNGç|Ï9 Ï9ß|4ÐG Ï9ß8vÎ@ÅóÑ9}Ï9ßÄsN<çÄsN<çÄsN<çÄsFo+ôÍ@ß ôÍ@ç tÎ7}ÏG 3ÐG 3ÐG 3ÐG }ÏÛ£ÐG}ÓÑ9ñ|Ï9ñœÏ9ñœ3ÐGñœÏþ9}ÏGñœ£Ð9}ôÍdçÄsÎ@ß`ôM<çÄóBçÄóÍ@ç(tÎ7ñœÏ9}3Ð9ñœÏ7Ï9ñœÏ9O9ñœÏ7 }£Ð9ß tÎE¹È9òxœc ߈Ç9âq…œ#çˆÇ9rŒœc çÈ9òxœC!çˆÇ7âqŽ”c çÈGäò …œ£#çPÈ9rŽÄ|ã"ç(‡BÎ1o äñøH<ÎrÈåñ8Ç@¾1s(ä9G<ÎsÄã 9Ç7âqŽxœc çøF<Îs(äùÆ@Î!—Äãñ8ÇEÎ1™o(äùFþ<¾!—stä9ÇEΑsÄãñ8G<ÎsÄãñ8G<ÎsÄã" Å3 €(Äd"S?þ‘ô#ÿXR>þñ¤|ücIù S?þÑä#”ýÈÇ?ú‘P’©ÿÈÇ?–”ô#”ùøG?þÑ_æÃ—Kʇ/ûñ|©ù Ó’òñ~©ÿXR(óñ~äãýȇ/CÙ2-)”ùøG?þ±¤Pö#”ýe?þ±$2õ#ë„R>þÑ2õ#”ý SœÈä OP#oSÈ9âñ6Œœ#çˆÇ9ò…œ#çÈ9âQŽs(ä ùÆ9âñ¶”ã 9Ç@þÎAœ|Ä1çˆÇÛâq޼-çPÈ9âqOœ#çðÄ@Î1s ä 9G<>oÄãñøˆBÎÑ‘oÄã 9ÇE¾q‘s(ä9G<Ρo|D.ç¸È9.òx”#çÈ9âñ‘|d çÀÈ9âqŒœ#QÈ9RŽx|ã9FΑo ä )Ç@ÎsÄã9G<¾ñ‘œã"ßpÌ70rŒ|#߈Ç7rŽœc çÈ9âqŽœc çˆÇGär…œC!çPÈ9r…œC!çpÌ7âqŽxœC!QÈ9.rŽœ£#ßÈ9âqŽx|$çÈ9þr…|C!QÈ7ò…¼m ߈Ç9âqŽxœ#çˆÇ7âqŽxœc çˆÇ9:òÄã 9G<Αo ä#ñ8G<ÎsÄãùH<¾1s(ä#ùÆ9rŽ|#ç¸È9âqŽxœ#çÈ9rŽxœC!ßÈ9âñ¶s ä9‡B¾s ä9G<¾1s ¤ñ8Ç@ΡÄãñøÆ@ÎsÄãùÆ@Îñs ä9G<Αs(äùÆ@Ê¡"Ÿ#çˆÇGâqŽxœ#çˆÇ7r…|d ç¸È9âqŽœ#çÈ70rŽœ#çÈGòþ|#çÈ9âqŽx|$çÈ9âñ‘|#‰Ç9âqŽœ#çÈ7âñœã"åH9ãw€ÀË€„RŽxxâùX§¶·íË~ü#Ü^g>–î|¬³dʇ/ó±$_æ£áÖö’|™x?éùè™òA¦~¬³dÊÇ’È”~)ý S>´Ý,iùðe>–ô~ü#ëìÇ?øñ†zbç¸È9¾‘˜sÈå9Ç@ÎQŽxœ#ÁÈ9òxœ#3çÈ9rŽxœã)G<ÊrÄ£r9G<ÎsÄã 9G<>"—sÄãñðD<ÎþOÄã9G<Î1`äñ8ÇEÎñ …|#çˆÇ9r…|d çˆÇ9âqŽxœC!QÈ9âqŽ‹œ#çˆÇGâñ Œ|#çˆÇÛâñ‘Ä|d oûF¾stäùH<Ρs(ä9‡BΡoœ#çˆÇ9âq…|c ç˜Ì9âqŽo(ä#ñ8‡BΡoÄã9Ç@ΑsÄã9ÇE¾¡s`ä9ÇEÎ1s\ä9ÇEÎ1s\ä9ÇEÎÑ‘s äñøÆ@Ρs(äñ8G<>’˜s`äñð ñp qqñ6 qññpñp qþñp qrññpqqqñpñpñpq qqqñ qññ ñpñpñpqß çàçÐççÐçoƒçç ç0çç0çç ççpç01ççqççß0ççç€çççßç0çpçß0ç0ç0çpç0qç01¡ç ç å ççç çð qñ qq qñpñ qñð6 qþñpñpñpñpñpñpñpñp"@ Ï Eæ ñ¶NùpÚ¸ÜØÞøá–à8Žá–Ú¶$ÿàqÏ çpß çßpqñ ç€åpqqñpñ ñðñð ñpqQññpñð6ñ qñð 5uåç€çà ñðžÐç çç ç0çpçqçpç ççpç ç çç0çßç ççß0çç çßðQqñð ¡ç0ßþ ß0çç€çç€ßpq‰qñðqqñð çßpñp qñqq qñðñ ñð ç ç0ççç0ß0çßpñ qñpñ qñpñ qñpñ qñpñ ñ ñpñpñpñpqqñð ç0ç0çç߀çß0ç0qß0߀çà¡ñ çßpqç01çßç0ßç ß ¡ç ççß0ç0þççÐç çß0ßç0çß0çççpß0çPç0ç0ñ 1ç0çç0ççç ¡¡ßpç€ç€ççÐßßð qqqq‰qñpñpq ñ ñpñ qqñpqrqññ ñ ç0ç ççß ççpßçç ççßÐß0å åååp @ Ë pá änùpªªºª¬Úª®ª«²êq¤0«¶ÚP¤pþ«ºª«Ÿ°«¤«¤@ »:¬Äêq Q¬ÈJ Ⱥ¬G Ìêq¤0¬¤°¬Áú¬ÖJ¬¤ «¤€¬¤@¬¤p­³J à:®Äú ž@ ä*«Ÿ «¤°¬Ÿ°¬¤«Áú õ ÏJ žð ¤ «ŸP¬Ÿ@ ¶¬žð ºJ žð õ ³ú Ãú Ö¬éêq¤±·¬{±;«¤°«¤±ã*žð qžðª(›²*»²,{ýàKK²NO²mý K2ŽýŽýàKK¢ýpž0çà ~1ç¡çEç0çç¡çpççþ1qçç ççççpç1ßpñpñpñpñðqñpñðñðñpágñ ~6E6çoçç0ç0çqo1ççpç0ç ç0ç0ççççççççççç1Íç0ç0ççEç~Ö1E¦ç0çþç åð ág¡oÓîç ç0ç0çpî0oç€ç01çççáqåçç1Í1ççç0ç0çp¡ç0ç ç0ççoçç0ço¡çÐççoççç0ç01çç0çç0çßpñð ç€~¦1çç0EçççççþEçço3oçççççççççà @ Ë ßçžÐ²ÞüÍàÎâ<ÎäL&žçžpqìü6ì|çç0ç0çpçpçççp1çqç0çççÀÎo3çÏqqñp}qqQdñ|}ññp q qq=aÑç0ß0ÓçE6ç0ç0çpç0ç0Óç`Ñç`Ñç`Ñç`Ñç0ç0Óñpqqññþp qñpñpñ|]ñðqì|ñpñðñpQìüýQQ qñpqqqñpåå0çÀÎçßçß 1çåçç0Eå0çÀÎå ß ååç`ÑçPqqñìü ñ6ßç0osç ççð qñð6ñðñpì|ñpqñðì|ìü ñpñpñðñpñp3}q}ñðqñp ñ qqqq ñßÏoÃÎþçpçÀÎçç0çç0ççÏçpç`Ñ¡çççççççççç ¤ð 1çà dÒl<Þã>þã@äB>äD^äF~äHžäJ¾äG~ñpñàç>~ñÐl¼ð<~ñpñpñÐlççççîpñÐãççîpñàãçîpñpñPäç<~ñàççççç0ççççççdâ qžpç ççÏçpçç`Ñß0çßþççpç`Ñçpç ç0Óççç`Ñç0¡ççp1¡ç ç0ç`ÕßpñpñV=ß0ç0ç0ç0o1ç çÀÎ1ç0ç0ÓççÀÎç0çç`Ñç0çÀÎççÀÎççÀÎççÀÎççÏççç ß0å`Ñçðíßpñü ç0ÓçÀÎç`Ñå1çðíñpì\6Qñpì|q]q ñqß^qñ\qqaóç çpççþçÀÎç`ÕççÀÎçpççpç0çççpç ç`Õç óqñüñpqq3ý ç ß ßpñp3}ñpì|qñpqqqñp qß~ qñpqì|2ÿñpVý6xû ž° qñà dçççççççççççççççççççççççççççççççççq.Þ¹xþçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçâ‹wî\<½ñÎÅ;ï\¼s¼þ‹w.Þ¹xçâ‹w.Þ¹xçâ‹§7Þ¹xçâ‹w.žÞxçâ£Æ‹W0ÕÁ‚©†;v0jzã‹§7Þ¹xçâ‹w.žÞxçâ‹w.Þ¹xçâû÷ÏS¼sñ<‹w.ÞöoÛÏ}Ûþmû·íßâþÛ¾ý\¼så¶Ÿ‹wnû¹ôõã}‹w.Þ¹oÛõ¦ÿ&žsâ)Ǿsâ9'žs¶;ǾxÎùf»oâ9g»sÒ;'žsìÓk»s¾IïûΩï›sâ9§>½ôªO¯o¶;'žsâ9'½o¶û&½s¬O¯xÎù&žsÒ;g;½â9'žsê;'žsâ9g»s¶;ç›xÎIO¯xÎÙN¯íÎù&žsâ9g»s¾‰çœxÎÙîœoâ9'žs¶;ç›xΉçœíΉG/ûÎIïœíΉçœíÎùf»s¶Ó+žsâ9ç›xôÚîœxÎÙîœíVÜîœo¶;'žs¾qð›xΉçœíαï›xÎù&žsÒ;þ'žÓ;g»s¶û&žs¾Iïœí¾‰gE½âÑk»râ9Ǿsâùf»s¾‰çœxΉçœxÎÙî›íôŠç›xÎÙîœxÊÙN¯ôΉçœxVÜî›xÎù&žsâÑ+žoâù&žsâù&žsÒ;g»oì;§¾oÒû¦¾sâùf»s¶ûƾs¶û&½ã9'½âùf»sâ)'žoâÑ«¾sâùÆÁsâ9'žoêûf»sâÑk»sâ9§¾szIÏ9â±¢íœ#ßHÏ9âqŽúœ#=ß8G<¾oÄãõ9G}¾s¤gEñø†ƒÎ‘žsÄãñøÆvôslçñЋ}ôr¶sÄãñ8G<ô²sÄãñ8G<ÎsñçHÏ9êsŽíœ#çØÎ9¶sŽúœc;ß8G<ÎaŸsÄãé9¾±oØçÛù†ƒÎ‘žsÄãõ9ÇvÎQŸslçõ9ÇvÎQŸslçõ9G<αsþlçÛùÆ9¶SŽs¤çÛ9Gz¾aŸolçÛ9ÇvνÄãö)ÇvαslçñøÆ9âñxœ#ç¨Ï9âñx¬h;çˆÇ9âñxœ#=záÑ9ÒsŽx|c;߈Ç9ÎvŽxœ£>å8ÇvÎs¤çñ8‡ƒ¾aŸsÄãñ8ÇvôR½lç<:GzÎa½ÄãñÐËv¾qŽô|#çˆÇ7ÎQŸrœ#=åˆÇ9âñôè%=zÙÎ7âñxè%z©â9Òóxœ#ç¨Ï9ÒsŽí|#ߨ±ÎsÄãõ9‡}ÎQŽrÄC/ÛùÆ9â¡—íœc;çHÏ7âqŽíœþ#=ߨÏ9êsŽo¤G/Û9G<ΑžslçöÑK<νlçñXÑvαs¤çÛ9‡ƒÊrÄ£ñ(G<Ê‘žrÔÇî)– Äãñ8G<<w¤Ñ¾÷Åo~õ»_þö׿ú=G<ÎáŽxœÃAç¨/þ±sðÈXÛ9‡;âqûœ#çpG<αjðâçˆÇ9¾sÄãñ8‡ƒôsÄãþÛ9Ç7¶sŽíœ#çØÎ9ÒsŽôœ#çˆÇ9Òóí|c;çˆÇ7ôíœ#çp^¾QŸsÔçñ8G<Αžs¤çÛ9Gz¾s¤çõùÆvΑžs|#=߈Ç9âqŽxè%çˆÇ9âqŽíœ#çØÎ9âñíœãõùF<¾‘žsÄãñøFzΑžo¤çéùFzαoÄã<ú†}¾QŸslçÛÑËv¾±sÄãñ8GË‘½ÄãñøFzÎs¤ç:ÇvÎsÔçéÑ Î±oÄãÛ9G<αslç<:G<¾‘žsÄ£é9ÇvÎsÄãþõ9G<ÎsÄcEߨÎ9Òóôœ£õ9GzÊrÄãõ9ÇvÎrœíéùÆvαslç߈Ç9¶³¢xœc;çˆG9ÒsŽxœc;zÙÎ9ÒsŽí|#=çˆÇ9¾sÄC/ñ8ÇvΑžslçñ8G<ôsÄãß8ÇÙαsØçñ8ÇvÎQŸsœíõ9GzαsÄãñ8G<ÎaŸsÄãö9G}ÎQc;ç¨Ï9Òó ûèe;çHÏ9¶sŽxœc;ß8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsˆÀÏ€DÒãŽxx":çÅ~öµ¿}îwßûßþøÅ?~ò—ßüç<ÎóÆãÚÇ9âáŽxœƒÿØŽ±Êá slçÛ9‡ì‹wˆ‡óЇóŠ^øƒs †gxj€@||||†|† …ú89‡#:‡úp‡èð„ôð„í8‡ô8‡³9‡íø†ô8ù†í8‡xø†xЋú8‡ô8‡ops¨sHs¨o¨sH½8›sà‘oØŽo8‡x8‡xЋô8‡íø†sØŽs8›oˆ‡s°o8‡x8ù†íø†ô8‡í8‡í8‡xø†x8‡í8‡sØŽsˆ‡oˆ‡sà‘sˆ‡;ÜŽo¨s°s¨sØŽ;þLsØŽoˆ‡sØŽs°sˆ‡sˆ‡oØŽo8‡x8‡xø†íø†sˆ‡s¨oˆ‡sHoˆ‡oˆ‡;Œ‡sˆ‡sˆ‡sˆ‡sHrHrØŽsˆ‡s8¢oˆ‡sˆ‡oØŽo8‡ô -û89‡x8‡x8‡ô(‡sˆ‡rØŽsà‘o¨oØŽo¨;ÜŽs°sØŽsˆ‡sØŽoˆÒÚŽsˆ‡sH;<‡í8)‡x(‡xø†ô8‡*:‡ú8‡xø†ú(‡x8‡ú8‡x8‡ôø†ô8‡í89‡x8‡x8‡x8‡í8‡ô8‡x8‡ú8‡í8‡x8‡x8‡ô8û¸C9‡íø†ô89‡þúø†x8‡í8‡ú8‡x8‡#:‡ô8‡íø†x8‡íø†í8‡í(‡x8‡x8‡íø†í8‡í8‡x8‡í8‡³9‡x8‡íø†xøûø†sHsˆ‡s¨oˆ‡oˆ‡sˆ‡o¨o¨;Œ‡sˆ‡oà‘;ä‘o¸¯rHr¨ …e€ˆ‡sˆ‡;ô„è ÇÇ„ÌÈ”ÌɤÌÊ´ÌËÄÌÌÔÌÍäÌÎÌÌô¸Ãí€Ìí Çx†8û Gû8‡í8‡ô Çx8‡x¸Ãx¸ÃxàHˆ‡„ÀgàÍßNjøOˆ‡;¬¢sˆ‡sˆ‡sˆ‡s¨;Œ‡sˆOˆ‡;ô„sø†í8‡í8‡oØþŽoØŽsH;Œ‡oØŽsˆ‡sø†í8‡x8‡í8û8‡ú8‡x8‡x8‡x¸Ãôø†x8‡xø†r¨sˆ‡sˆ‡s¨o¨sHoˆ‡sØŽsˆ‡oˆ‡sˆ‡s¨sˆ‡sØŽs¨;¬sØŽoˆzŒ‡sHz´;ü†í8‡x8‡x8‡oØŽsØŽsØŽsˆ‡s8¢sØŽsø†x8‡í8‡ú8‡x8‡x8‡ú8‡x8‡íø†x8‡í8‡ô8‡ô8‡x8‡í¸Ãí8‡x¸Ãú8‡x8‡í8‡í8‡x8‡í8‡í8‡í8‡í Çx¸Cû8‡ô8‡í8‡x8‡rˆ‡;Lsˆ‡;Œ‡sˆ‡sþØŽsˆ‡sˆ‡sˆ‡sHÇŒ‡oˆ‡sHsˆ‡søû8‡xxÌôø†ú8‡x8‡í8‡úxÌx(‡x8‡í8‡ú8‡oHsˆ‡sØŽsˆ‡sˆ‡sˆ‡sHoˆ‡sHoHoØŽsø†x8‡x8‡x8‡x8û Çoˆ‡sØŽsø†ô¸Ãx8‡x8‡x8‡x Çoˆ‡sˆ‡sØŽsˆ‡;ÜŽsØŽsˆ‡oˆ‡sHsˆ‡sˆ‡s¨sHo°sHsØŽoØŽoˆ‡s°sˆ‡o¨zŒ‡sØŽsˆ‡sØŽsHoˆ‡;ÜŽsHspsˆ‡sˆ‡sø†x8‡íø†ô8‡x8‡x8‡x8‡þú8¹Ãx8‡íø†x8‡x8‡í8‡oˆ‡sø†x8û8‡x8‡x8‡oHsØŽsØŽrˆ‡sˆ‡;Œ‡;L;LsØŽrpsH;ü†ôø†;Œ‡oˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sRxH€x(‡í8OˆŽÿrÜÇ…ÜÈ•ÜÉå‘r¨wpw¨r†89‡x8‡x(‡í(‡í(‡s8"wˆ‡;ä…?8‡oàÍox†o †gøjx†o †gømpÀo †ð„í8‡x€Ìx8‡í(‡x(‡ô¸Cq‡èð„í8RØŽsˆþ‡oH;Œ‡sH;Lsˆ‡sHsˆ‡s¨s¨sØŽsˆ‡;Ls°oˆ‡sHsˆ‡sˆ‡spsˆ‡oˆ‡sHsˆzŒ‡sØŽoˆ‡sˆ‡s¨;ä‘;Œ‡sH;ÜŽsˆ‡s¨sØŽr¨sˆ‡sˆ‡sHs¨sØŽsØŽoHo¨o8‡xø†;Œ‡sˆ‡sHsˆ‡sHsà‘sØŽsHoˆ‡sØŽsØŽsHsˆ‡oˆ‡sˆ‡s¨sˆ‡sHsˆ‡sHsHsHsHsˆ‡;Œ‡sà‘sØŽsHsHsˆ‡o°sHs¨sˆ‡;Œ‡sHsˆ‡;ä‘sˆ‡;þÜŽsØŽsØŽs8¢sˆ‡sØŽsˆ‡sˆ‡;Œ‡sˆ‡o8‡ú8‡x8ûø†;ÜŽsˆ‡s¨sˆ‡sˆ‡s¨sˆ‡s°sØŽ;LsØŽspo89‡x8‡ô8‡ú8‡ô84:û8‡í8‡x¸Ãô8‡³9û8‡íø†x8‡í8‡ô¸Ãí8‡ôø†í8‡x8‡x G4ú†í8‡x8‡x8‡ôø†íø†ôø9‡í8‡í8‡x8‡ô89‡xø†x¸Ãxø†x8‡í8‡í¸Ãúø†ô8‡í8‡íø†íø†ô8‡í Çí8‡xø†x8‡³9‡ú ÇxxÌí8‡x8‡x Çô8‡í8‡þí8‡x8‡x8ûø†ô(‡x(‡x(‡ô(‡ô(‡xp …e€HsˆOˆÊeê¦vê§ŽÜsˆ‡sØŽsps(‡ô8‡xà…ˆ‡oˆ‡rˆ‡rHsˆ‡sØŽsØŽs°sˆ‡s(‡x8‡úà…?ˆjø†o †o mH„D mÈkmÈkm †¼¦†oøR(‡í8û8‡x(‡x8‡x8‡x8‡ô¸Ãrˆ‡sˆ‡sȇð„ôð„;ÜŽsØŽsØŽsˆ‡søû8‡ú8‡í8‡í8‡ú8‡x8‡x8‡í89‡í8‡ô8ûø†x8‡x8‡x8‡í8‡x8‡x Gû8‡ô8þ‡í8‡í8‡x89‡oHspsØŽsˆ‡sp;tsHsˆ‡sˆ‡sHs¨oØŽsˆzÜŽs°sHsHsø†ôø†x8‡x8‡rˆ‡;ÜŽsˆ‡sØŽsØŽoHoHs¨s8›s¨sà‘sHo°s°s¨sˆ‡oˆ‡sˆ‡sˆ‡sØŽsˆ‡;Ls°søþ:‡ú8‡ô8‡x¸Ãx8‡x8‡ô(‡x8‡x8‡x¸Ã³99‡x(‡x8‡x8‡ú899‡o¨sˆ‡oˆ‡sˆ‡sH;ÜŽsHsˆ‡sˆ‡sØŽ;LsHsˆ‡sˆ‡sø†ú8‡ú(‡íþ8‡íø†x8‡í8‡rˆ‡rØŽs¨sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡;Œ‡sˆ‡;ÜztoHsØŽsˆ‡sˆ‡;LsHsHsˆ‡sø†x8‡x¸Ãí8‡x8‡ú8‡x8‡x8‡x8‡xxÌo8‡ô8‡ú8‡í8‡ôø†x8‡x8‡í8‡ô8‡x8‡#ú†ô8‡x8‡í8‡í8‡x8‡x8‡x¸Ãí89‡íø†x8‡í8‡ú84:‡#:9‡ú8‡r8‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡íp‡sOxH€sØwˆOˆŽx(‡x(‡x(‡x(‡x(‡x(‡x(‡þx(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡x(‡xX†kx†k8þ‡í8‡x(‡x(‡í8‡x(‡í8/^ø‡x Çí(‡ú8‡í8‡í8‡í(‡³)‡í8‡`øƒsÐmøjøjH„H„àüˆoÚ¨ý#¯\¼„ ž+ à!Dˆ Ë%ü÷ÏÓ¹xçH-<·pá¹xßž‹÷íã¹xçÎÅ;ï\¼oñÎ)üo¥Âs W*\y.Þ¹…çâ}[xná·ñÎ}üï\Âo>¿%<·ð[¼sñ¾Å;÷ñ[Âoçž‹w.Þ¹„ßâ}Sx.á7…>ã­üx.ṄçžSø-áÊx+žSúMá¹…çúŒwNá9…+¿Åûï\ÂsñÎÅ;Ïg¼sñÎÅþ;ï\¼o WÆûoe¼s Ï-ü¦4á·„+¿)<—ð[¼sñ¾‹÷Má¹xçâ­¼ýívÂoñ¾Å;wû[¼o Ï%<—ð[¼s ÏÅ+ï\Âo ÏÅûvNá9…ßž‹wNáJ…ç KxNá9 ³P9·­O9ñ”Ï7ç$ôM<çÄsNBßœ£Ð9ñ”“Ð7ÐAwNBç,tNBç|sN<ç(tÎBç(ôÍmßœ£Ð9*´’Bç(tÎmß,tŽBçÄsNBç$tN<ß(uNBåÄóM<ç|Ï9ñøäá9ñœcãJß$tNBçÄsNB+ÅsN<ç,tŽBßœ“Ð9ñ|£Ð7 ­”Ð7þ Ï9·•s[9 •sŽB ² $ÄsŽ;ñœã‰EçÄsN<çÄsN<çÄsN<çÄsN<çÄsN<çÄsN<çÄsN<çÄsN<çÄsN<çÄsN<çÄsN<çÄsN<çÄsN<çÄsN<çÄsN<çÄsN<çÄsN<çÄsN<çÄsN<çÄsN<çÄsN<çÄsN<çÄsN<çÄsN<çÄsN<çÄsN<çÄsN<çÄsN<çÄsN<çÄsN<ç,³L<çÄsN<çÄsN<çÄsN<çÄsN<çÄsN<çÄsN<çÄsN<ç,Ï9ñœÏ9ñœÏ9ñœÏ9ñœÏ9ñœÏJÁÐþ=ñ,sNB>ÅsNB>ų/ÿœ£O唓Ð'³ØòÉ,¶|²Ë'»|Ï9ñ¬ÏJå$ÄËñPóÍ3ß<“ˆ?þ$ò Þyë­ ÞÿrN<åÄóM<ßÄSNBî`ãÿàN<+ÅsN<çäó' ‘òM<ç$tÎ7 }“Ð9 ùÏ9 ÏJñœ³Ð7 “Ð7 ­¤Ð9 £Ð9ñœóÑ7ñœ£Ð9ñœÏ9Ï7ñ|Ï9 óMBç(tÎBçÄsNBß$´RBç$ôM<çÄsN<+}tN<ç|tN<ç,tN<ß,tŽBçÜöMBßÄsN<Î•Üæ 9G<¾‘sÄãþ 9Ç7ΑsÜæ 9GBΕ$ä9ÇmÎs$äñ8G<Αs(å 9Ç7rŽ„œ#çHÈ9âñ …øD!+IÈ9²’xœ#çˆÇ9rŽx|#!+‰Ç9òxœC!çPÈ9âqŽo$äñ8G<αsÄc% 9GBαsÄãñ8GBÎñ„¬$çˆÇ9rŽxœC!çPÈ9âñ•Äãñ8Ç7rŽ„|C!+‰Ç9âñxœ#çˆÇ9rŽ„œ#!>IÈ9âqŽ…¬$!çHÈ9âqŽxœ#߈Ç9âqŽxœãñ(ÇGÎñ‘s(ä 9GB¾s|ä þ9G<¾s(ä 9G<Îoœ#ßHÈJr…œC)çˆÇ9âqŽo¬$çˆÇ7²’xœc!>‰G9>rŽxœ#çHÈ9rŽoÄã߈Ç9>rŽ„¬$߈Ç9r…œC!çøÈ7âqŽx|#!ßXÈ7rŽx|#!+‰Ç9rŽ…œ#!çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çPÈ9âqâ@<ÜqŽxœÃ9G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8þG<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñXF<žsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄã YF<®qŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#!ÏHÈ9Ê·…]ã×8Çmr^ü#ÀçpGRŽs(È ðÄ2 €xœc爇',àñ“¿üæ??úÓ¯þò/ƒôXÆúÍŽeÐ#ˈB®1þyÄãñ8G<”CBœƒBðÂ?œC<”ƒB¬D<œÃ8ìHBB”ƒBœCBðÂÐÃ9àÍ8¸;°C;¸Á¸Á¸“â6èÍ?‚:žƒþBœC<¸À9(D9ÄC9,„ExÂ9ÄÃ9xB<|Ã9@âJÄÃ9,Ä9ÄÃ9,Ä7œC<¬D<œC<œƒBœÃB|C<œC<¬D<œÃB”C<¬$žC<œC<|CBœCBœC<œCBœCBœCB|ƒBœC<œƒBœC<¬D<¬ÄBœC<œƒBœÃBœCBœC<¬D<œC<œC<œÃBœƒBœCBøD<œƒBœƒB|ƒ:žƒBœCB|Ã9|Ä9ÄÃ7ÄÃ9Ôá9$Ä7œÃGœC<¬DžÃBœCB|C<œÃBœC<œC<¬DBœC<¬D<œCBœC<|CBøDB¬D<œ$žC<|C<|ƒBœþƒB¬D<|CBœCB|C<¬D<œC<œCB¬D<œC<¬DB|ÃB|CB|ƒ:žC<œC<|ÃGœC<œC<œCB|CB|Ã9ÄÃ9(Ä9@â9$Ä9$Ä9(Ä9$Ä7œC<œCBœÃBœC<”C<œÃG|ƒB|C<œC<|$~C~CBøD<|CB|C<œC<|Ã9ÄÃ9$Ä7$Ä9$ÄJÄÃ7$Ä9ÄÃ9ÄÃ9|ÄJ¨ã9,Ä9$Ä9ÄÃJ$Ä7ÄÃ9|Ä9$Ä9$Ä7(Ä9ÄÃ9P¦BøDBœÃG¬DBœÃGœC<œƒB¬ÄB|C<œCBœC<|ƒBœƒB|CBœC<|ÃJÄÃ9Pæ9$Ä7þ$Ä7,ÄJ$Ä7œCBœÃB¬D<œC<œÃBœÃBœCBœCBœCBœC<|C<¬DBœƒBœC<œÃB|C–CžCºÂ2@,Ä9x‚Eø„÷~/ø†¯øŽ/ù–¯ùž/ú¦ï2(=¤C.CúžÃ2,Ä9Ôá2ÄoB<ÃBÞ<ƒB,CBøD<øD<Ã?ă÷–ƒB¸Ã8Ø<@<à(?è?à(?HÂ9ÄÃJ”ƒB¸C0üÁ9|Ã9hÃ7œƒ :|ÁJ”CÞhÃ9|ÃJ|Ã9üƒ'(Ä9ÄÃ9,„;$ÄJ™B¬D<œC<œC<œƒExB<œC|Â9(Ä9ÄÃJÄ/üA<|C9àM9|àƒàÍJ¸#|C9àÍ9|C9üƒ'¬D<œCBœC9œC<”ÃBœƒ;ÄC9Ôa9ă;X„'$Äþ9Â9$Ä9$Ä9$Ä7ÄÃ9|Ä7œÃB¬D<œÃB|ƒB|ƒBœÃBœÃBœƒBœƒB|Ã9ÄÃJ$Ä7(Ä9(Ä9$Ä9ÄÃJÄÃ9(Ä9ÄÃ9ÄÃ9ÄÃ7ÄÃ9Ôa9$Ä9$Ä9(Ä9ÄÃ7,Ä9@â9|Ä9,Ä9ÄÃ7Ôá9Ôá7œCBœC<œCB|Ã9@â9ÄÃ9¤ä7ÄÃJÄÃ9ÄÃ7ÄÃ9$Ä9ÄÃ9ÄÃ7œCB|Ã9(Ä9ÄÃ9$Ä7(Ä9$Ä9,Ä9@â9,Ä9$Ä9@â9$Ä9ÄÃ9(ÄJ(Ä9ÄÃ9Ôá9(Ä9$Ä7œCBœ$žCBœÃB¬D<œƒBœC<œC<œÃBœÃG|þC<œC<œC<œC<œC<œCB¬DBœƒB¬„:žC<œC®„Bœ$žC<”C<|ƒBœCB¬D<œC<œC<œƒBœCB|ÃBœƒBœC<œCB|CBœCBœÃBœC<œ$~ƒBœCBœÃ7œÃGœC®DBœC<œC<œC<œC<œC<|ÃBœÃBœC<¬DBœC<¬D<ø„B|CBœƒB¬D<¬D<œÃBœCBœCB¬DBœCBœƒBœÃBœCB|ežC<œC<|ÃJ|Ä9|Ä7$Ä9,Ä9ÄÃ9ÄÃJ,ÄJÔá9ÄÃ9(Ä7ÄÃ9$Ä9ÄÃ9$Ä9ÄÃ9ÄÃ9ÄÃ9$Ä9(Ä9ÄÃJþ$Ä9(Ä9$ÄJ,Ä9ÄÃ7œCBœƒB|ƒB”ƒB”ƒB”ƒB¸Â2@|„'X}¿ð?ñ×á2¤C:ÄC:ÄC:Äò#<Ã9”ážÃ2$Ä7ÜC:,ÄóÃ9Pf9ÄC9ÄC0$„-hÃ7”Ã7œ5ðB<,C<”CBœƒBœƒ;ðÂ?,ÄJ(„Õ¡Ó;ý:=Ê*X áÖâbBÐá ÖâHA!ÊA!Ê¡!X*X"Î!Î!Î!Î!þÎa'ˆ€zX]àV?þc@dA.ÇxRpˆs(‡x(‡oÐs¥j ¥ …x8‡xð„x8‡«(ž8‡8‡ø†x8‡8‡Ž(ˆxø†8‡8‡§8‡x8‡x8«8‡8ž8‡8‡8‡x8‡8‡oˆsˆ‡‚à‰opˆsˆoˆŠoxŠoˆ‚ø†x8‡8‡Ž8‡Ž8‡oˆsˆsèˆsˆ‡sˆ‡‚ø¨ø†x8‡(ˆ8‡ø†§8‡x8‡xø†ˆ‡sˆsèˆsˆ‡sèˆs Šoèˆsø†§‰oˆ‡sˆsˆ‡þspˆsˆ‡sø†sˆ‡oˆsˆ‚ˆ‡s€Šsˆ‡sˆoˆ‡sø¨8‡ø†spˆ‚˜Šoˆsˆ‡‚ˆà‰sà‰sˆsèˆsˆ‡sˆ¼ˆ‡sø†(‡ø†8‡x8‡x8‡x8‡ø‡øžø†ø†x8‡xø†8‡8‡x8‡ø†x8‡x(ˆx8‡x8¨8‡Ž(ˆø†‰ø†Ž8‡§ø†8‡x8‡oà‰sèˆsˆ‡oˆ‡spˆsèˆoˆopˆspˆspˆsø‡8‡x8‡x8‡ø†x8‡x8‡Ž8‡8‡8‡x8‡x8‡8‡x8‡8‡(ˆx8‡x8‡x8þ‡x8‡8‡8‡Ž8‡oˆsˆ‡sˆ‡sˆ‚ø†Ž(ˆx8‡xø†8‡x8‡8‡§8‡x(ˆ8‡x8‡ø†x(¨ø†8‡x8‡8‡8‡x8‡¨8‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡x8 …g€ˆ‡spO€H/ðpkˆp_ð‚ˆët~h‡èt~ø‡{Ȉ8À‚~doqqm‡r8[ˆzpˆr(‡oІo€dmð¥ð„8Oˆ‡sˆ‡sø†sˆ‡‚ø†sˆ‡o8‡Ž8‡oèˆsˆ‡sˆ‡sˆ‡sˆopˆspˆsþˆ‡sà‰8‡xø†x8‡x8‡8‡x8‡xø†ø†sˆ‡sˆ‡oˆ‡‚ˆ‡‚ˆsˆ‡sèˆsèˆsˆs0ósˆ‡oˆ‡sˆ‡sèˆsˆsˆ‡oˆ‚ˆsˆ‡sˆ‡sˆ‡s0óo8‡ø‡ø†xø†sˆsˆ‚ˆoˆ‡spˆspˆsˆ‡oèˆspˆo0óxø†x8‡8‡xø†Ž(ž8‡ø†sˆspˆspˆo(ˆxø†(ˆx(ˆx8‡8‡x(ˆo8‡Ž8‡ø†x8‡8‡8‡8‡x(ˆ8‡8‡ø†ø†Ž8‡x8‡8‡xø†ø‡(ˆx8žø†sˆoˆ‡þsˆ‡ˆsðõxø†x8‡8‡xø†spˆsˆ‡‚pˆsøsˆ‡sˆ‡sˆ‚ˆsˆ‡opˆoˆ‡spˆsˆo¼pˆsˆ‡s0óoˆ‡‚x‡(ˆxø†øž8‡x83/ˆx8‡x8‡ø†sˆ‡sˆ‡s0ósˆ‡spˆo8‡xø†x8‡x8‡x8‡x8‡x8‡8‡x8‡x8‡8‡x8‡8‡8‡8ž(ˆx8‡8‡x8‡ø†spˆoà‰sˆ‡sˆ‡oˆo8‡8‡8‡x8‡8‡x8‡8‡Ž8‡xø†(‡8‡8‡8‡x8ž(ž(ˆx8‡xø†sˆ‡oþúx8‡x8‡8‡xø†sˆ‡oˆ‡sˆ‡sˆ‡sˆ‡o8‡8‡x8‡x8‡xø†sˆo8‡8‡(‡x(‡Ž(‡Žp …e€pˆ‚ðˆ$ _÷ŠCàv€@€@€ŠÛ¨€à÷o Á‚"L¨p!ÆBŒ(q"ÅŠûÅËè‰^’‘oÄã9VÎ!“sdäñøV¾‘‘Èäñ8G<ÎñxœC&ç¨É9jr™œã`9G<Α‘s,çñ8G<Îsdä`ùˆLÎñsÄãñøH<Α‘sdä9‡LÎsdäË9GF¾sÄã9GFÎs|#çÈÈ9âqŽxœ#çˆÇ9âqŽŒ|D&\YÎ92rŽxœ#çˆÇ9ÀrŽoÄã#áŠo¾•sÄã2áŠL¾±œoÈä9G<Α‘sþÄãñ8X>sdäñ8G<Α‘sdä`ùFF¾sÄã9GFÎsÈäñ8G<>"“søæ29‡oÎsÄãùF<Î!“oÈä9G<Îs|#߈Ç9jrŽx|#‘É7drŽš|#çˆÇ72òšœãñ8GFÎQ“sÄãñøFFαœÈä9G<Î!“sÄãñàJ<ÎsÄã#ñ8ÇrΑ‘sdäñ8GF>sÈäñøÆ9âqŽxœ##çˆÇ9|sŽx|$#çˆÇ9âqŽxpÅ7çÈÈ9âqŽoÄã9G<Î!“rÔäñ8G<ÎsÄþãñ8G<ÎsÄãñ8G<Î!R<ˆ‡;d≈d­E+B1ÇPÜ‘é:°v  è?úq,0` [p?þQ ƒ0ž2•«lå+c9ËZÆr<ÎRăç™É|#”¤ˆ'2rO|$çˆÇGâqŽx|ã59G<¾‘‘sdäñøˆLΑ‘oÔäñ8GM¾‘‘sÄãñ8G<Î!“sÄãñ8G<¾sÄãñ8GFÎsÄãñ8G<Î!“o€åñ8GF>’‘Äã9X>sdäñ8‡LÎQ“s`åçÈÈ9âñŒ|#þçˆÇGdrŽŒ|#çÉGâñ‘Œœ#ßÈÈ9dr¬œ##‘É9jrŽxœ£&ç¨É9dr™|C&‰Ç9âñdäñ8GFÎoœ##çˆÇ92rŽŒ|#çÀÊ9âqŽx|$#çˆÇ9jòš|£<çÉ7âq™œ##çÀÊ7ÎodäñàJMΖoÄãùH<ÎsÄãñ8GMÎQ“sÈäñ8G<Î!“sdäñ8‡LÎQ“ÄãçÈÈ9âÁ™|ã`9G<>–sdäñøH<Α‘s`åñøXÎsdä9G<Îá›sdä59G<¾sÄãþ29G<Α‘od„+çÈÈ9âqŽxœC&ç¨É9jòsÈäñ8GFΑ‘sÄãñ8GM¾‘‘sÄãñ8G<ÎoÄã29GF¾qŽšœC&ßøHF>sdä9GFΑ‘sÈäñ8XΑ‘sÄãçˆÇ9Èt™|$çˆÇ9drŽxœ##çˆÇ7ÎsÄãñøFF¾sÄãñ8VÊrÈD9ÈD9dxÂ2@ÄÃ9ÄÃGxŒÄ „ÂNàQ`(¤@A ð; À? ™‰‹ ä?ƒÀAdBðºà Â` Êà Ò` >DFœ)äƒL¸Cþ9”ÃHhƒ6PÃ3Â@@B<œCÄ=œC<þœC9|ƒ6<5|Ã3Â@x‚LxBF|C<œC<|ƒL|C<œCy|D<|CFœC<œƒL|D<œCFœC<œƒLœC<œV|CM|ƒL|CMœCFœC<œCFœCM|CM|DFpE<œC<|DM|CFœXœCF|C<|CFœCMœCFœCF|Ä7ÄÃ9ÈÄ9ÔÄ9ÔÄ9ÄÃ7ÄÃ9ÄÃ9øWÄÃ7dÄ7ÔWdÄ9ÈÄ9øÆ9ÄÃ7ÄÃ9ÄÃ9dWdÄ7ÄÃ9dÄ9ÄÃ9ÄÃ9dÄ9ÄÃ9dÄ9dÄ7ÈÄ9ÄÃ9|C<œC<œC<œÃ7ÄÃ9|CF|Ä7|DFœƒLœV|Dãâ`ââáâ âââ "$âââ"$¾!Î B‚ ¾!"¾!$"âââŠââB!Î!¾áâá>ã"$âáâá`ââââââá>ã â âÎ!¾!¾!Î!Î ¾!Î!ø%Î!Î!¾!Î!Î!þ¾!B‚ Î!Î!Î Î!Î!Î!"Î!B¢$¾!¾!Î!Î!Ρ Î!Î!¾!Ρ ¾áâ!$"$"$ â ââ âââáâá"$¾_âáâââ>ãâáâáâáâáââ!$`ââáâáâΡ ¾ Î!Î&Î!Î!"¾¡ Îáâáââáâáâáâââáâáâáâá¾áââá âââ ââââââ!$"$â ââáâáâá âþâÎ B"Î!¾!Î!¾áââá"ââââáââáââ ââ â`ââ ââáâJ"$ââáÎ Î ¾¡(¾!B‚ ¾!¾!"Ê¡ Ê¡ ÜHa Üáâ!$<kÓ6o7sS7ñ,B‚–særææ)$H¡.<áâáãâá ââáâââá>ãâ"$âá "$ââáþââáâáâ¾!Î Î!Î!¾!Î!B‚ Î!Î ¾ Î!B¢ ΠΡ Î!Î!Ρ Î Î Î!Î!Î!ø%¾ ¾ B‚ Îá"â ââá>/¾ Î!Î Î Î!B‚ Ρ B‚ ¾ ¾ Î B"Î!¾ Î!Î!"¾!$"âââᾡ Îáââáâ!$âá¾!¾!Ρ ¾!Î!Ρ Î!Î!Î Î ¾ B!B"Î!Î!Î!Î!Î!Î!Î!Î!ÎAHá AþâÁ ÂmÂvv“lËÖlÏ– ‚HPžáÎ!gÎ!Ê!ÎêÂÎ 9 @@ü\…Ï `<ÿ°3€ TЄ>[e­õÖ\wíõ×`‡-öØd—­µCîò 5Ï|ó6ßœSN<åÄþs)WyâÐ9žÄsŽCç8ôM<¯ÅsÎCç8tÎß8tN<çÄsN<çÄóM<çttN<ߤÑ9£Ñ9Ï9ãÐ7ñœãÐ7çtôFßœÏ9}ãÐ7ñÏ7ÅsÎCßÏ9Ï7ç8tN<ç¨tN<çÄsN<ç00„«àÿ¸‡ JÀv üø‡ ¸0Оúô§@ ªPÃVŽx¸ƒÔø5´¡oœÃmçˆÇ9âAŠ«xâñ„CÎñsÄã*9ÇCÎoœ#çø†C Ò‘sÄãñ(ÈCÎñs8äù†C΂8ä9ÇC âsÄã9‡JÎsÄã*ùF< sÄã9ÇlΡ’otä9‡CÎñxœcSñ8‡F¾þs8ä9GGÎsÄãùÆCÎás8äñ8‡CÎñs|#çpHAâq‡$çpÈ9:rއœ#çÈÒ9âqŽxœ#߈Ç7:òŽäñ8Ç7âqŽxœÃ!çˆGAfóxœ#ß8G<Îohä9‡CÎsÄãñø†C òs8äyÍ9âqŽ$çxÈ9âñ ‡œ#ßÐÈ9r‡œC#çˆÇ9¾ñsüè9G< âoÄãùF<Ρ’s8äñ8ÇC΂täñ8GGÎrhäñ8‡C¾ñoÄãñ8‡C¾ás<äñ8G<ÎáþoÌæ³ùF< s8äñ8GGÎñ‡œ#çpÈ9âq‡œãñ8‡C΂ÄãßxÈ9¾sÄãñøF<¾¡‘s8ä9ÇCÎÑ‘s<ä9ÇCÎsÄã9‡ž Ò‘s|#çøÆC¾áoÄãñø†C¾ñsÄã9‡J¾Qx|#çpHAâqŽxœ#çˆÇ9âqŽxœ#çˆÇ9D@Šg@BñpÇC<ÑS.$ôÜ\èÇUúôƒà;`Ž«„ƒü¸Ê.pxüƒëHàkø£0ÇU’¡€­ ãÿ`Gàá~„ƒüªÆ7ÎñŽþ{¼k‰)ž‘˜o<ÃmçøF9ÜáŽxâ*žˆGA<ásÄã*9G<Îáotä9ÇCÎoœ#KßPÉ9r޽F#çPÉ9R‡¼&çèÈ9âq‡¤#çÐÈ9rŽx|ãñ8‡CÎsÄã9ÇC¾áo8äùÆ9âqŽxœ#¯yHAâqއ|Ã!ßpÈ7âQxœC#çˆÇ7ÎsÄã9‡J â‚èé9GG¾q‡|Ã!çpÈ9âñs8ä9‡CÎñsÄãñxM<Ρ‘s8äY:G<¾sÄ£ 9G<΂Äã5ñ8G–Îástþä9‡C¾1›s8äñ8ÇlÎñ‚8¤ ù†CÎsÄãùF<Îás8äñøF< sÄãçççàçðçççàçàçßpñpñpñPñpñð ñpñ ñpqñPqqñð ñpñð Qqqñpqqqqñpñpñð ñpñpqñPñpQñpñ ñpqñpñp¨ç0ççàçðçççßpñpñ áßpqqQñ qþqQñpñpñpqñ YrñPqñpñpñð Q³ñ ççðçà¡ååðåååà,ž° îpñPž0PýàçÖ Õ ¾YÀí0ÿЀèXÁ€XÁW¡?ÀÿÀÀWp¬p 0ÿÐpü€ðqôXöx_ãç@ ‰¡ Ïà6çð åpñpç@ Wá çàžð qñ`çç ççùçç çàßàßàççççþð añpaañpñpqq³qqñpqqqqñ qñ qqñð qñpqq*qñ ñpqñpñ`ñ`ñpñp!‘qqqßçð#ù çßçéçàçççðççðçàç çð *!‘ñpqñð qqñ ñð ñð qñð q?rqñð ñpñpañpqñpaaßàççß%éçðçþçðçàçÐçàç 'çðçÐçàçðç ç çàß ßàçççàçßð9çßçéç çàç çàçàçàßç ©çßðß`ñpñð aßðçàçç çàçàçðç çð ñpqqñpaaaqñð qñ !‘ñ`ñpñpqqqñpqñ ñpßéçðççÐççççççççç þ¤ð ñàá =E­°¨Œê Œê <€ý€°ì0ÿÐüÀÉ Wá ` ZÑáü€`ÿÀÉ ÿ€  üðè0ÿÀ`ÿÀÉ ø8¬ÄZ¬çA ‰ñ Lõ Úpnîp¤pžI ççÐçßpñð ñpñpYrñpqñpñpñpñp*qñ`qñ`³q!‘ñð ñpñ ßðçðßççÐçàåàçàéçççàçðçàççþðçÐçççÐçpœñpñ ñpaqqñpqñ qß ççÐßàßðççðçðßàçàéçàßp³qq?"‘ñpqqqñ *ñ qñpñð q*ñ ñpñ`ñpqñpñð ù çùßàççàçßç0ßð#ßðç çàçðççßßpñ ñpñpqñ ñ qqñpñpñpñ aqq*qqþq*ñ ñ çðçççàç çðßàß ççðçðçЩçççàßàçß0éçÐççàçççðçßàßpaqqqñpñpñpñp?rñp*qñpqqqqñ ñ Qñð QYâ @ Ë àçé Z±ÄLœ3°¨¡°¨¡À¨‹ÊYÀí0ÿÀàú€$0W!À«ÀúÐ{€ ü ?W±0 øCðøþððþððí> ø@CÐÄŠ¼ÈŒÜÈŽüÈÉ’<É”\Éÿîp¤ð Ô  Ôð Úà6åpñpñ@ Wá ñéð «¼Êçðʲ|²üÊççßçðÊß°Êççç Ëçççç°ÊçP˯|«ü ¯ü Ð|ÐçßðÊçùÊßçç°Ê¹Ê™Íç¹ÊßðÊçç°Êç°Êç°ÊçPËßßß°Êç°Êßçç°Êç°ÊçPËç ËßÍñpñp«|«lñpñpñp«|«|«þ|«lñ`ñpµ|¯|ñpç¹Êç Ëß°ÊçßðʹÊçð ùÊçùʹÊßç°Êççð ñð «,‘«|«|ñpñpßðÊ9ÓñpñpÙü ¯lñp¯|ñð ¯l²l«|«|ßðÊççç°Êççß ËçðÊç°ÊçðÊçç°ÊççðÊßçßççðÊçPËçççðÊçß Ëççù «|ñ ‘ç°ÊççßðÊçç°Êçð Ðü «ü ñð «|þñ`ñpñpñ`¯ü ñpñp«|²|ñp«|«|µ|ñpñp«|«|ñ`Ðü ç°Êç@Öñð ¯|²|m«|ñpñpß°ÊßðÊçç Ëçð ñpµü ñpñp¯ü ²|ßðÊççÍçççç¹Êççççççççç žð ñà¯ì ’¬3 JÞ ¡°¨¡Ð JžXÑèýÐðì0š ÐúðÇ`ðp?àõ `Öàÿ€9 Ðüpþš "t0ÿÀ  0M G~舞芾èŒÞèŒüʤ@ Ïð Ïð çð çà6ñàñ@ Wá ¯ì ñPççß°Êç°Êç°Êß°Êçççp¯|ñpý ñpñp}ñð ç°Ê߰ʵ~¯|¯ü µ¾ÊßPë«|ñpñpñð µ|ñPë¯ü d]ëñpМìñð 3]ëñpñpñpñpñpñp¯\ë²ü ç°Êç°Êßµçµç°ÊÉß ËßPËçðÊçç Ñç0Óßßpñp¯|«|ñþPë}¯|ßpñp«\ëñp¯\ëøçPËɾÊçç°ÊçµþÊç0ÓççPËç°Êçßp²|«|«|ñpÙ|²|ñp²ü ²|ñp«|ñp«|ñp«|ñp«|«|«ü ç°Êµ¾Êµç͵ç°ÊçççµÍßç°ÊççðÊç°Êç°Êßpñpµ|}²|ñPë¯|¯|ñpñpñPëñp«|Ù|ñp¯|ñp«|«|ñpñð Ù|¯|ñð ²|«|ñPëñð «|þ«|«|ñp²ü µßç°Êç°Êç°ÊßðÊç°Êç°Êç ËßðÊç°ÊçççPËßp¯|ñpñð ñPë²ü çççðÊq.Þ¹x ~‹w®à9ƒÏ<×°`9‰åâ•3è©e¸;ïÜ9OÿLžD™Rå?53\¦˜‘bFŠ3h¢ 7`å?~üvþã·’J~({¢l7ÀdÏŸM>…UêTªU­^mzÎÝ9RÔ¨=ûöìÛ¹o#Ë$eÒS¼sñ<482Þ¹†#ÏÅ;'1Þ¹oÏÅ;Wð[¼sÏI<ïÜ·xß žk8²á¹xçâÓ{þÎà·†ç ž‹w®à7‰çâ4xî[ÁsÏüVð[ÃsÏÅùm¤ÁoñÎÓ9G<ÎqŸ¶HçÒ9ÇtÚ2sÄãñ8G<ÎoHçñ8‡tÎQ¨sÄãÓùF<Î!sÄãÒùF<ÎsÜç÷9G<êS¨sÜçÓ9ÇtÚ2oÄãÒ9G<¾Q¨oÜçñ8Ç7¤ó üœCIm‰Ç9âqŽûœ#çˆÇ9âqŽxœÃg߈Ç9îÓ–xœã>ߘÎ9¤süœ#m™N}âqŽxœ#çˆþÇ9âqŽxœ#çˆÇ9âqxâ@<Ü1OøD&‹ÀÇ:Ö¡ŒEìã&ìÀ?Ø1€N²R'ìÀ?Ø1€VÒ²–¶¼%.sùé‚ÏÐS´Ñ–r|Ãîˆ)\â‰sÄãž8‡’¾Ñ–xœC:çˆÇ9¦sŽxœ#ç¸Ï9¤sŽéœ#çˆÇ7îƒ"üœC:çˆÇ9âñsHçñ8ÇtÎ!sÄ£-Ò9‡tΟsÄ£-ñ8Ç}¾!sÄãñhK<¾1oœ#çÎ9¦sŽx|?m¹Ï7âqüœ#çˆÇ9âñsÄãÒ9‡tÎñxœC:m‰G[îó é|#çˆÇþ7Îs(©-ÓùF<ÎsÄãÒ9G<ÎsÄãñ8‡tÎoHçÒ9‡tÎsÄãñ¨O<Î!sÄãøi‹tÎoœCIçÀÏ9¤sŽéœ?çˆÇ7¤sŽx|ãÒ9‡tÎqŸ¶LçÒù†tÎsHçø9G<Ú"sHçñøF<Ú’;üœC:ßÎ7¤óÅ#ßÎ9ðósÜç÷9ÇtÎoHçÒ9G<Î!sܧ-ñ8G<ÚrŸo,îñ8‡Ï¾!sÄãñøÆ}¾1sÜçñ8Çt¾qé|ãÒùÆ}Î1sÄ£-ÒiK<ÎqŸsÄãñ8G<þÎQ¨sÄãÒ9‡tÎsH§-ÒiËtÎ!sHçÒ9‡tÎñx´%çˆÇ9”téœC:ß8‡t¾qŽxœcqç¸Ï9”tŽx|#çÎ9¤sŽx|ãÒ9G<ÎoÄãñ8‡t¾qŸo(éñø~ΟrªñpH± HÀçˆG[<ÑJ@pÙ¡…˜À.“/AøHü£ÐI3N €\€ ¹dÅ 0Ì¢ø> Ñ“z€@—†>4¢Ý霃Iy†6žÁ”o”ãñh )\â‰xœ#Ÿ¸Ï9âqŸC:çÎ9ðÓéœc:߸Ï9âþqŽxœ?çˆÇ9¦sŽxœC:çÎ9îsé´?çÎ9¤sŽo,îñ¨t¾ŸsÄ£-÷9‡tÎsHçñ8‡’ÎúLçß(Ô9îsŽx´%çÎ9¦séœCIç˜Î9îó %Õ'ç`]<ÎsÜçÓ9G<ÎsHçÒ9G¡ÎqŸoHçÒ9~¾úÜçñ8Ç}Î1oHçÒ9G<¾1sHçñhËt¾ŸoLçñøF<Î1sÄãñ8ÀÏ1sÄ£-ñø†t¾Ñ–x´%߸Ï9âqŽxœ#çˆÇ9âñ éœ#çÎ9âqé|c:çÎ7¤sþŽxœ#çÎ9¦ÓŸc:mñÙ9¤sŽxœ#çÎ7¤sŽéÔ'ßÎ9âqŽûœC:õ‰Ç9¦sŽxœ#çÎ9ðsŽé´å>õqÜ9âqéœc:çÎ9âqŽûœC:çPÒ7¦óû|C:m‰Ç9ðÓ–xœc:ç¸Ï9¾!sHçÒ9ÇtÎqŸoHçñ8G<Îñxœ#çÀÏ7âñ éœc:çˆÇ9¤sé|ã>ç˜Î9âqŽxœ#߈Ç9âÑ–xœãÓ9ÇtÎ1sÄãñ8G<œC<œC<œƒt¸Ã9ˆ)<$@<¸ÃtxB+ñ@(Xƒ^ ZÃ#ðÀK CðÃþK°ä„?,ðƒ?\ƒàÒ* €)Œ=” °°; @¢å î OœƒtBR0…6œÃ¤•C<¸Ã9‚KxÂtxB<”Ã}œƒtœC<œC<|ƒtœC<œÃtœC<´Åt|ƒtœC<œC<œC<œC<œC<œÃ}|Ã9ÄÃ7HÇ7øÌ9HÇ9ÜÇ7LÇ9HÇ7HÇ9HÇ7HÇ9ÄÃ7œC<´Åt|ÃtœC<œC<œƒtœC<œƒtœC<œ~œƒtœÃtœC<œC<|C¡œƒtœƒtœC<|C<œƒtœC<œC<œÃ}œƒt|C¡|C[ÄÃ9ÄÃ9ÄÃ9HÇ9ÄC[ÄÃ9ÄÃ9àþÇ9HÇ9ÄÃ9ÄÃ9ÄÃ7œC<œ~œÃtœC<œƒ’|ƒtœC<œ~|Ã}´E¡|C<œC<´ÅtœC<ÔÇt´…t´E<´E<œÃ}œƒtœƒtœ~ ˆtœC<œC<œƒtœÃ}´E<œC<œƒt|Ã9ÄÃ7ÄÃ9ÄÃ9ÄÃ7œ~œƒtœC<´ÅtœƒtœC<œƒtœÃtœƒ’œƒãœC<œC<´ÅtœC<œC<œC<œƒtœƒt|Ã9HÇ9ÄÃ7œC<œC<œƒtœ~œC<œC<|Ã9HÇ9ÄÃ9LÇ7ÄC}LÇ9LÇ9HÇ9ÄÃ9HG},Î7HÇ7(I[ÄC[HG[LG[Ê7ÄÃ9þHÇ9ÜÇ7HG[LÇ9ÄÃ9ÄÃ9ÄÃ7HÇ7œƒtœC<|Ã9ÄÃ9LÇ9LG[Ê7œƒ’œÃ}œC<œƒtœÃtœƒtœC<œÃtœC<œC<œƒt|ƒtœƒ’|ƒtœÃ7ÄÃ9HÇ9ÄÃ9ÄÃ9(É9ÄÃ9HÇ7HÇ9Ê9ÄÃ9ÄÃ9ÜÇ9HÇ9LÇ7HÇ7HÇ9ÄC9LG9ÄC9ÄC9œÃt€€',$€;œC<´…'ÐRøBb /„L ð; ?´Ch‚ @ðÃ?ÔÃèÂ?øC¤;=ìCLàC 4?¸>œ € ÀÃ?°Ã‚T@ðƒK<ÀþôL°Ãü; À?ð>(A @ðÃ?°ÃhÂT€@?@@8@ÔB-í(ö¨ÒR<´)$Å3<S H<œC<‚KxB<œC`À¸>pÃ?܃ ”?´ƒTÁ?ìƒ Á?°C˜CL°Ãü;€K èÃ=üÀü;ÀðÃ?0Bðþ;?ðÃv°°O)$Å7<äMZ<”C<‚Kx‚t”ƒ'ÜÇ9ÄC[ÄÃ9ÄÃ9HÇ9ÄÃ7ÄÃ9ÄÃ9ÄÃ9ÄÃ7ÄÃ7œƒ’œC<œC<œC<|C<|C<œC<œ~œC<œƒtœƒtœC<|~œÃtœC<´…tœC<|Ã9àÇ9ÄÃ9ÄÃ7œ~|C<œC<œC<´E<œƒt|C<œƒ’|C[ÄÃ9ÄÃ9LÇ9àÇ7ÄÃ9LÇ7ÄÃ9ÄÃ9ÄÃ9ÄC[ÄÃ9ÄÃ9ÄÃ9ÄÃ9HÇ9HÇ9ÄÃ9HÇ9ÄÃ9ÜÇ9ÄÃ9ÄC[ÄÃ9øÌ9ÄÃ7HÇ9ÄÃ9ÜÇ9ÄÃ9ÄÃ9HÇ7LþÇ9ÄÃ7HÇ9HÇ9ÜÇ9ÄÃ7ÄÃ9ÄÃ9ÄÃ9ÄÃ9Ê9HÇ9ÄÃ9HÇ9HÇ7ÄÃ9ÄÃ9àÇ9HG[øÌ9HÇ9ÄÃ9ÄC[|C<œƒtœÃ}´Åtœƒtœƒtœƒt|ƒt|ƒt|C<œC<œƒ’œC<œC<œC<|C<œC¡|ƒt|ÃtœC<|Ã9HÇ7,ªtœƒtœC<œƒtœÃt|Ã9ÜÇ9ÄÃ7ÄÃ7ÜÇ9HÇ7ÄÃ9HÇ9ÄÃ9ÄC[|ƒt|C<œÃtœÃ}|Ã9ÄÃ9ÄC[ÜÇ9ÄÃ9ÄÃ7ÄÃ7Ê9LÇ9(É7p4~|C<œC<|Ã9àÇ9ÄC[HÇ9LÇ9HÇ7LÇ9HÇ7þ´Åt|C<|ƒtœC¡œC<œƒt´ÅtœÃ}œÃ}œƒtœC<´E<|Ã9ÄÃ9HÇ9ÄÃ7LÇ9HÇ9HÇ7ÄÃ9ÄÃ9ÄÃ9ÄÃ9LÇ9HÇ7pô9HÇ9HÇ9ÄÃ9ÄÃ7LÇ9ÄÃ7LÇ9ÄC[LÇ9ÄÃ9ÄÃ9ÄÃ9HÇ7ÜÇ7ÄÃ9ÄÃ9HÇ9àÇ7,ê9L‡1),$€;œC<´…'°?ü$¯u{L CðC; À?°ÀÃ'¼Ä\€˜ÃƒC@@\€5ü>€9ðÃ?$ƒ¸?¸Ä> Ãü;<¸D8(À?ˆè?¼Ä?´üC; ?àCþ˜Ã‹ü;€>¸;?°Ã08‰—¸‰Ÿ8Ч¸Š¯8‹·¸‹¿8Œ¿„tœ)$…6|Ã3tÌ7”Ã9”C<œ)¸„'ÄÃ9ă'HÇ9HÇ9HÇ7ÜÇ9HÇ9HÇ9ÄÃ7LÇ9LÇ9ÄÃ7ÄÃ9àÇ9HÇ9àÇ9ÄÃ9àÇ9HÇ9HÇ9HÇ7ÄÃ9HG[àÇ9ÄÃ9LÇ9(É9LÇ9ÄC[œƒtœƒÏ´ÅtœƒtœƒÏ|Ã}œC<œC<œÃ}œƒ’œƒÏœC<œÃ7ÄÃ9HÇ9Ê9|ƒt|C¡œÃ7ÄÃ7HÇ9ÄÃ9ÄC[LÇ7ÄÃ7ÜÇ7ÄÃ9ÄÃ9ÄÃ7HG[ÄÃ9HÇ9ÄþÃ9HÇ9HÇ9HÇ9,ê9ÜÇ9ÜÇ9ÄC[ÄÃ9LÇ7ÄÃ9ÄÃ9àÇ7HÇ9|C<œƒtœƒÏœC<´E<|C<œÃt|C<œC<|ƒt|ƒtœƒtœC<ô¹Ï|ÃtœÃ}œƒtœÃ7ÄÃ9HG[ÄÃ9HÇ7(É9ÄÃ9ÄÃ9ÄÃ9ÄÃ9|C<œƒtœÃ¢žÃtœÃ7HÇ9ÄÃ9ÄCŸßÇ9(É7LÇ9ÄÃ9ÄÃ7HÇ7HÇ7ÄÃ9Xõ9LÇ9ÄÃ9ÄÃ7ÜG[ÄÃ7œÃ}ôy<œÃtœC<œC<œC<|Ã9ÄÃ9HG[ÜÇ9ÄÃ7LÇ9Ê9LÇ9ÄÃ9HG[LGŸKÇ9LÇ9|C<œÃ7àÇ9þLÇ9ÄÃ9ÄÃ7HÇ9ÄÃ9ÄÃ9HÇ7HÇ9HÇ9HÇ9HÇ7HÇ9ÄÃ9(É9ÄÃ9ÄÃ7ÄÃ9LÇ9ÜÇ9ÄÃ9|C<œC<œÃtœƒtœÃ}|ƒtœC<œÃ7HG[(É9LÇ9LÇ9ÄÃ9ÄCŸKÇ9HÇ9ÜÇ9ÜG[ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ˆ€'<$@<¸ÃtxBŒ38X·/´‚ñº¼D? ƒôC; À?°C¸? C¼;8?ÜÃ0À?°ôƒK C¸+œ€8€ À?°C¸D?°Ãð@° `î_Á‚ìôc7€» V0ðÝþƒìðk7À`GA†9’dI“'Q¦Ty.^þøãø;à~à#AàÇ?V1I胬 ;ðv €ÿ°ÁÆÁ{|âì€AÚ1~à#ð¸æMqšSîô¦çh )`B™hc&3q‡;âAŠ‚x¢%çðÄ9âqŽxœ£%ç0Ê9ZrŽxÔ¤%çˆË9âñ¸œÃ(ç0Ê9Zóx|£%çˆKMZrŽè|#5‰Ç9ZrŽ–|ã-ùF\ÎÑ’sÄãñøF<ξÄåñøÆ9âq£œ£%ß8GKÎså-éKtÎsÄãñ8G<ÎÑ’sÄãñ8Gt¾qŽxœ£%ç0Ê7ZrŽxœ#çhÉ9âñxþœ#.5iÉ7ZrŽèœ#çhÉ9ŒrŽxœ£%çxÑ9âqŽxœ£%çhIM¢sŽxÔ$ç0Ê9âñxœ#çhÉ7âqޏœC|ñ8G<Κĥ&­9‡QÎÑ’så-ùFK¾sÄå-9G<ÎsÄãñøFK¾Ñ’sÄãq9G<¾qŽxœ#߈Ç9Žu£œ£%çˆÇ7ÎsÄåFùÆ9âñxœ£%çˆË9ârŽ–œ£%ç0Ê9ZsŽxœ#çˆÇ9ZòsÄãñøFKÎÑššå-9G<¾s´æñ¨IK¾Ñ’oœ#çhÉ9ZsŽxœ#çhÉ9âq£œþ#߈Ç9ŒrŽxœÃ(ß0Ê9ŽuŽ–Ô¤%çhÍ9^T“xœ£%çˆÇ9ZrŽxœÃ(çˆÎ7ÎsÄã­9‡QÎñ¢s´æñ8G<Îsåñ¨IKΚåñ8GKÎÑ’oœ#ßhÉ7âqŽxœãXåˆG9¢SŽ–”Ã(î'– ¸ãñ¨‰'rʃmŽ]ãE :‚ŽüƒøG;  à üøÇ1 `Ž–É øH‚€@£ øÈÐ~DÁè0€´cš€ÀšÀ‚ðƒ'(ÀL0 v àí@Að¡  qø;`vàþþ°P žîœç=÷¹ÏZrRÀDϘÉ9¾QŽsÄ£&¤ÈÇ? e”RNIe•V^‰e–ZnÉe—^~é¥@çB 5ß<ó6߬yN<çÄCÊ’žtŽ'ñtô AçôÍ@ßtAç tN<çÄþó@ç tNAßtÏ9CÐ9ó@çÄÓQ<ç”vN<ç|#Ð9}Ï9ñ|Ï9ñœ#Ð7Ï7ñœÏ9ñœ#Ð7}3PGñœ#Ð7Ï93Ð9ñt4Ð7óM<çÄsAçôM<ç(ô@çÔÑ@çtN<ç|Ï9ñ|#Ð7v tÎ7}Ï9ñœ#Ð9#Ð9uÏ93PG}#Ð73Ð9Ï7SÐ9óMAçôM<çÄsŽ@çtÎ7¥Ï9#Ð7}Ï76Ï9}#Ð9ñœOG #Ð9#Ð7cÓ7}#Ð9þ}Ï9u]ñtTÐ7}#PG#Ð7Ï7Ï9ñœÏ7}#Ð9#Ð9Ï9Ï9ß tN<çÄsAç tŽ@çô@çÔQAçÄóMDçÄsNAçÄsN<çtAç tN<ç dW<ç(tŽ@çô@ßÄsN<çtNñœSÐ9ñ|Ï9ñ|3Ð9ßÄsN< tAvÅÓÑ7ñ|#Ð9Ï9ñœÏ9uO9ñœÏ9ñœÏ9ñœÏ9ñœÏ9ñœÏ9"ò $ÄãŽxL, ˆÀ*p )Êôg|Ã.kr‡;âAŠ%yBþ çðÄ@Î!sÄãñ8‡@Î!s ¤#ñ8‡@¾QŽäñèÈ@ÎAŽÄã9A¾!Ž(äñèˆ@ΡŽÄãñ8Ç@ÎAŽÄã9AÎ!ŽÄãñ8‡B:säñèH<Î1ŽÄ.ù†BÎs ä9Ç@Îoœ#çˆÇ9rtD ç È9b›œ#߈Ç9 ò œ#ß8‡@ΡsÄãéA:sÄãùÆ@Î1säçÈ7ò œc çÈ9rŽœ£ çÈ7Î1sÄã9GÎ!sÄ£#9G<Î!ޤ#þ9AÎ1säñ8‡@¾s äçˆÇ7bt„ ñÝ@Î!ŽÄã9AÎ1sÄãñ8AÎAoÄãñ8G<Îsäñ8‡@¾oœ#çÈ7âñœC ߈Ç9bœc çÈ9 rŽxœC çˆÇ9âñœ#ßÈ7rŽxœc ç È9ò |ãñ8G<Îs(äñøF<Îs äñ8G<ÎQsÄãñ8G<ÎoäùF<Î1s ä9GAÎoÄãçÈ9rŽxtD çˆÇ9âqŽˆœc çˆG9 RŽx”#åþˆG9bAb€;ÎŽx‚œí¬g? ÚÐ&P ç 5ž¡oÐ$èüÀ$ì@Vâ °üà×àÿÀ€%ýÀ€%ý`àÏOA Ôð Ïð ܸ&åpñpñ@ Kâ á ç@ççç0çç çð qÑÑß0vçç@çñ <ïÜ@„Ï ü†ðÜ·xçž‹w.Þ¹xç~‹÷Mà¹xçâx.¡ÀsÏ <ï\¼sÏx.Þ¹çâÍŒwá9ç¾Å;ïÛÉsñÎÅ;ïÛÉxçÎŒ73Þ9çâ‹w.Þ93žKxnà9çâÍxNà¹çâþxá¹xçâ}ømà7„ç~ƒz.Þ¹xç~‹w.Þ9çNžøMà9ß~xnà9„çâ‹wî[¼sßžxî[¼sßž‹w.ṄßžxNà9„çž‹w.Þ¹xç¾ üï\¼sñÎÅ;wòœÀsÏ%<'ðÜÀsÏ}Cø-Þ7„çâ}‹w.Þ¹xçâ}x.Þ¹xßâ‹73Þ7Îèœx¾h&¾èœxΉçÎè„ÎAèœx¾‰ç›Îè›ÎèœxÎè¨:G sâ™éfJñœoÎèΉçœxÎ蛾èœo:g oú&žþsâ9'žsâ9g s¾Iè¨Îh&¾h&¾èÎ蛙ΉçœxΉçœxΉçœxΉçœxΉçœxÎÁ“g  wòäD QD`”Q;ØigRJÛù‡|0%Ñ~Ѐvè‡4`€&ôù§žtéÇ Ö`'}úA”ŸÀ jùŸÀxþagA*°‚¨ –ðQ"šàçv¤ øyô[pÃw\rË5÷\tÓUwÝp:‡”e¾Ñæ›o´™é›rÜq'RõäœxÎ!%žoÎ9霓Îè¾9G oúF s:'þžo:G sú&žoΉçœxΉç›xΉ盙â9G s:G s:¡oâ9g ™â™i s:g sâùf&¾9éœfè„fJè„ΉçÎAèΉ眓fèœx¾è¨¾9g oâ9'žsJs oâ9'žoâù&žsNúF oú&¡oÎAè›xΉçœxÎèœxΉg¦x¾èÎè›s:'¡sâùF súf súæΉçœÎ‰g¦xÎIñ›Ï蜓ÎèœxΉçœxÎAèœxΉç¾‰çÎèœÎAèœã9G sN:'ž™úþ&Åsâ9g s:g s:'žoâ9'žsâ™I s :ç¤s:G sä IBÒ$od/ß@ÈL¾sÄãñ8Ç@Ιäñ˜IB¾!oäñ8G<¾q„œc 3AÈ7â‘&„œ#çˆÇ9 2“xœ#çHÑ7r|#ç@È7rŽx|#çˆÇ9âñ œc çÈ9âq|C çˆÇ9âqŽ„¤i çˆÇ7²WŽ”c î)– ¸ãñ˜‰'uG$ w¼£?¼€i £Ó°‡4ÐÑ>& àG;ðvÀüÀ¸€(X(rà@?þîñ€Øâ‰bÇþÁ~üÐøÇ=dP~´#i@¥=ðTþÃ0Ї?d0~´#iHd1yLd&S™Ëdf3ùLh:s&ñ 5¬ùŒgÐëå8G¢yk\çZ×»æ54B kÒëÚøÆ9èþwœƒˆòÄ@ê‡p~`H|]à‡@‡øv€à‡`‡H|s@¥Da‡@D1S2-ÓD9‡x8R †gøjÐz9z‰‡rˆR@OO8‡˜‰„88‡x˜‰x8‡x8„88‡xø†sˆsˆsˆoˆ‡sˆsˆoˆo˜ 8‡x8‡x8˜‰oˆo@ˆsˆ‡sˆ‡sˆ‡™ˆsˆ‡s€Šsˆ‡oHˆ™ˆ‡sˆ‡o8‡x8‡x8ø†8‡xø†x8‡“ø†„ø†8‡˜‰x˜ „ø†s@ˆþo8ø†˜‰8‡x88„ø†„ø†x8‡x88‡8‡x8„ø†sˆs@ˆsˆsHˆo8‰sˆoˆ‡sˆ‡sH‘sˆ‡™ˆ‡sˆo8‰sˆsˆ‡sˆsˆ‡sˆ‡s@ˆs8‰o88‡oˆ‡sHˆs€Šoˆo@ˆsˆsˆs@ˆoˆ‡™ˆ‡sˆsˆsˆ‡sˆ‡oˆsˆ‡sˆo@ˆoˆ‡sˆ‡sˆsˆ‡o8‰o@ˆsˆ™@ˆsˆsˆsˆ‡oˆoˆsˆ‡s@ˆsˆsˆ‡oˆ‡sˆ‡sˆ‡sˆ™ˆsˆsˆ‡sHˆoˆ‡s8‰o@ˆ™ˆ‡sˆ‡o@þˆsˆ‡oˆoˆ‡™ˆs¨Ïsˆ‡oˆ™ˆ4‰‡sˆsˆ‡4ˆs@ˆoˆoˆs@ˆ™ˆ‡sˆ‡oˆsH‘oˆ‡o˜‰8‡x8‡x8‡x8‡xø„ø†sˆ4ˆsˆ‡oˆsˆ‡sˆ‡oˆsˆ‡sˆsˆ‡oˆ‡sˆsˆ‡sˆ‡sˆ‡sˆ‡o8‡8‡“8‡x88‡8‡“˜ 88‡(‡“((‡x(Ð …e€p‡sˆ‡™ð\#‚ià_8`F`à#t~h‡øvÐ| !@9à~XЇvØlàuøà|x@|þxøøø‡v €DÁ‡€Dñð}è‡{ø„h0S#>b$ަ k¢mø†g8‡o˜‰rˆ‡s Dñ8Oˆs@ˆ™ˆs8‰sˆ4Aˆs8‰sˆs@ˆsˆsˆ™¨Ï™ˆsˆsˆ‡sˆ‡sÈžsø„8‡xø†x8‡8‡8‡8‡x8‡9‡xø†8‡„8‡x8‡x8‡oˆsˆ‡sø†˜ ¨8‡H“„˜‰x8‡8‡oˆo@ˆsˆ‡™ˆ‡sˆsHˆsˆoHˆsˆ‡sˆ™ˆo€Šoˆ‡sˆ‡™ˆsˆ‡™ˆ™@ˆoˆ‡sˆ‡sˆ‡þo€Š™ˆ‡™ø†sˆ‡sˆsˆ‡sˆsˆoˆoˆ‡sø†ø8ø8‡ø†x88‡x˜‰x8‡x8‡xH8‡xø†“ø8‡úŒ‡sˆsˆ‡sˆoˆ‡498ø†x8‡xø8˜‰xH“x8‡ø„8‡x8‡„ø†Hø8‡x˜‰x88‡x8‡x8‡8‡x8„˜‰xø†„8‡x8‡x8‡“8‡x8‡xø„88ø†8‡x˜‰ø†8‡x88‡x8‡8‡x88„88‡…ˆsˆsˆsHˆsˆ™@ˆsˆoˆþ‡sˆ‡s@ˆs8‰sˆsˆ‡sˆ‡sˆ™8‰sˆs@ˆsˆsø„8‡8ø†9‡ø8‡oˆsˆsHˆoˆsˆ™H‘o8‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡x8ð„g€ˆwOÀµ˜V…V˜nên…à£~@è‡v€`‡Ð €&Ї8€Dù¨‡$€°ø+H¨…Ð  ƒøv €;²‚@€Zø|P‚€èƒ~`Hb ¯p O”™ˆR°¦oxmú†r(‡sˆ‡s Dñ„sþO8‡ø†x8‡ø†sˆsˆ‡o8‡ø„˜ 8‡x8‡xø†ø˜ „8‡x˜ 8ø†xø†sˆ‡s€Šsˆsˆ‡oˆ‡o8‡x8‡xø†„ø†sˆ‡s@ˆo8‡ø¨8ø†sˆ‡™ˆ‡sˆ‡sˆ‡sˆsˆ‡oˆsHˆsˆsˆ‡s@ˆsˆ‡oˆ™Hˆsˆ‡™8‰sˆsˆ‡™ˆ‡sˆoˆsˆ‡o8‡9‡x8‡xø†x8‡x8‡x8‡x8„˜‰xø†sˆ‡sˆ‡™@ˆsÈžsˆ‡oˆ‡s@ˆsˆ‡sˆ‡sˆsˆs@ˆsˆs@ˆsˆ‡sˆ‡sˆ‡sˆ‡þs@ˆ4‰‡sˆ‡sˆ‡sHˆsˆ‡sˆo8‰sˆ‡sˆs@ˆsˆ‡oˆ‡oˆ™@ˆsˆ‡sˆ‡oˆ‡sˆs@ˆsˆ‡s8‰sˆ‡sˆ‡sˆsˆsˆ‡™H‘sˆ™ˆoˆ‡sˆ™ˆ™ˆ‡sˆsˆ‡sÈžsˆsˆs@ˆsˆ‡o@ˆsˆsˆ‡o€ŠŠNˆsHˆsˆ‡™ˆ‡sÈžsˆoˆ‡sˆ‡™ˆ‡sˆ‡sˆ‡s€Šo@ˆsˆ‡sˆ‡sˆsˆ‡oˆo8‡x˜ 88‡x8„88‡xø†sˆoˆ‡sˆsˆoˆoˆ‡o@ˆsˆsˆ‡sHˆo8‡˜‰x8‡x8þ8‡„ø†sˆo@ˆsˆsˆ‡sˆ‡sˆsˆ‡49‰oˆoˆsˆ‡sˆ‡sˆ‡™@ˆsˆ‡oˆsˆ‡sˆ‡sˆrXhwRXHw8‡x˜ OȵHHHÝ×ýb ‡0&T:&~8&TâDA¥d*þà‡@¥ ~èGb8RX†ox†oÐm8‡o(‡sˆ‡sˆR@OˆOˆ‡sˆ™ˆsH‘oˆsˆsH‘™ˆ™ˆ™ˆ‡sH‘sˆs€8/Þ·çž8ðÜÀsÏ‹w.Þ9…ñ Æ;§â¹xçâ³8ðœÈxç,BŒ1Þ9…žþ‹wNá7…~Sx®ä¹oçB´x.Þ¹xçJÆ;ã·çžC:ð[¼sÏ <'òœÂsñÎ}‹Qá9…çâx.Þ·xç~yNá¹ßâ“ï\¼sÏ•üïÜÀs!Æ;÷-Þ9©çž‹w.Þ¹xž‹÷Í"Äßž‹wNá9‹çâ+ ±ä¹oÏ)<7ð\¼s Ï)<'õ\¼s¿ <÷Má7‘ßâ}SxNä¹oÏÅ;ïÜ·s%ÏŃï\¼sßDžx.Þ¹çâ‹w.Þ9‘ßJžûïÜÀsñÎÅ;ï›ÂsßrTÒ9}Ï9ñœÏ7%3Ð9ñœþ3Ð9Ï9ñœD£×9ñœƒÔ7 Ï9ñœ£Ð9ñp4Ð9ßÄóBßHÅÑ@ßÄsN<ÅsN<ß”tŽB!uN<çÄsN<çÄsN<çÄsN<çˆ@Ê3; yò—_‚¦˜c’éå=[tÀO™k²Ùf›ü¸§œsÒY§wâ™§— ‘ò 5Ï|(Dß”ãŽ;ñâ¥'çÄSŽ'cÑ7ñœ3Ð9ß@Ï9ñœÏ9ñ|3Ð7ÅsN<ç(tŽEßXôBßœÏ9ñ@4Ð9A¤Ð9}Ï9ñœ£Ð9Ï9HÏ9"Gñ@4Ð9£Ð9ñœ#Õ7"þ}#Ò7Ï9%3Ð7Ï7 Ï9ñ|£Ð9zÅQ<çÄsŽEç(tN<çÄóM<çÄsN<ßÄsŽEç(tÎ@ß tŽEçXôÍ@YôBç tN<ç(ôBß(ôM<ç ôM<çÄsN<çXtŽHçÄsN<çÄsN<çèuÎ@ßœ3Ð9ñ|D"cÑ7ñœ3Ð9ñœ£GñœÏ7£Ð9ñ|cÑ9ñœ#Ò93Ð9}3Ð93Ð7 }sŽBçÄóMIÅsŽBçÄóM<ç tN<ç tN<çÄQ<çXtŽHçÄsÎ@ß(tŽEç tN<çXtN<ß ôM<ç(tÎ@þß(tÎ@ßœÏ9Ï7çÄsN<ç tN<ç Q<ç(tŽEç ‘EçÄsN<ç tŽEçXtN<‰tÎ@ÅsN<çÄóM<}‘BÅóÍ@çÄsN<ß(tN<ç(tŽBç”tN<ÅsÎ@ßœcDñœ#çÉ9òœ#çˆÇ9r…|#åˆG9RŽx”#åˆG9âxb€;ΈxBOqBÇ.` ’‰0œ! khÃâLñ€)¨Aoð‚<á oøÃ#>ñzÈ9HáÃghãß8Ç7ÊqŽxœ#¤ð’'âqŽxxB!çPDâñ …œ#ç(É9òx|c ‰Ç7âq‹œ#ç(É7…œC!çÈ9âq‹pd çˆDòxœC!çÈ9r…œ#çˆÇ7rެÆã9‡HÎ!’sXäñ8G<Îa‘s(äßÉ9âq…œ#çDâq‘œÃ@œƒþB@D<œÃ@|R|Ã@œÃ@œCþ óÓÆwìñÇ ‡œS<çÄCÊQÏ0¥Í7ç0;þçò'ç åÉP8ÇcÎ ÅÃP< ál\<ß uÎçÄsN<ßœ“ó7ÆÅsNÎñ|Ï98Ÿƒó9ñœÏ9ñ|Ï9C‡ó9ñœCu<çÄÃP< ÅP<çàüM<çÄsNÎ uÎPß0”ó9kÇóÍPç uÎP ÅsÕç uNÎç~NÎ ÅÃP<Æá|NÎÆ­ÍP<çÄsN<çP}N<ç õÍ9C3Ô7 uÎPçÄsN< õÍPßÏ9TŸƒó9C3Ô9ÂÇsN<çÄsN<çÄsN<çÄsÎPß4C9Ÿ3Ô9kŸ3Ô9CÏ9Cƒó9C}sÎPßÄsN<çÄsÎþPß04Ô7ñ`ÎΑ3ãÄãk;ÎΑ³sPíCùF<Î1”oœ#çÈÙ9†òxœ#çÈCâqŽœ#çˆÇ9rös åC9G<γsàìñ8ÇP¾s å9;G<¾1”o åCùÆPÎs å9cH<Îsă!ñ8G<ÎoÄãñ8ÎÎsÄã9;ξ1”sàìñ8G<¾1”sÄãÞ;G<¾sî9ûÎÎAµs åC9Gá¾±¶oœ#çÀÙ9âqœc(çˆÇ9rvŽxœ#çXÛ9†Âxœ#åˆG9ÖVŽ¡”#åŠ;ÜþO,pÇ9âÁOà„&ÀI?¶ ‡„DÓp†ø‘~Ôc@À|Ñv "øPƒ_zó›à §8ÇIÎršœç )¨Á”g<ãçøF9ÎsăñD<ÎáR|#çÊ9¼GµsPíT;ÇÚΆîC9G<γs åC9GÎÎ1”oäŒ!C9ÇPÎsÄã9;‡÷ÎAÐxœc(çÈÙ9¾3† åñ8ξ1”sàìC9G<Î1† å9;Ç7†rŽœ}gçÊ9„wŽxœgçˆÇ9âqŽæ#çˆÇ7†òxœc( ‰C wþœc(çˆÇ9âqŽxœ#ßÀÙ7pvŽxœcm ¡Ú9¾‘³säìñ8‡ðÎs|c(çøF<Îñ œc(çÊ9âñ¡0gçÊ9zœ1¤pç Ú9rvŽ¡œCxßÊ9rö œ#çˆÇ9âñœ#çÊ9¨vœg(çˆÇ9âÁ¡œCxçÊ7âqœcm Ê9†Âxœ#çÀÙ9pö œ#çˆÇ9âqŽxœ#ßÊ9¨vŽxœc(çÞ9†rŽ¡|c(ç Ú9âñµ#gçˆÇ9pvŽxœ#çˆÇ9†rŽoœ#ß8ÇPÎsÄãñ`H<¾1ãþ åñ8ÇPÎñœ#çÊ9âqŽxœ#çˆÇ9¾³s¬íñ8G<α¶sàŒ!…ûF<¾1”oŽ!ñ8G<ÎsÄãñ8G<ÎsÄã" Å3 !€x¸gž8ç/· 9l[àƒ¶°‰PL"S³ž÷Ìç>ûùÏßtÇ9âAŠe<ƒ)Ú`Ê9˜răñÄPÎAŠsă!93N<2”s åT;G<2”s åñ`ÈPÎ1”sàìñ8G<Î1”s å8;G<ÎQ¸sÄã…ûÆPÎoÄãC9Õ2”sÄãC9ÇPÎoœ#ßÊ7†òxœþc(ßÊ9¨vŽœ#çÀÙ9rvŽx|cmƉÇ7pvŽ¡œ#ÆiÞ7ÎoÄãñøÕÎsàìCùF<Î1”să!ñ8Îα¶s åçÀÙ7ÎѼsÄãñ8G<2”oÄãñ8G<¾Áœ#ßÀÙ9âñ¡œ#ç Ú9pvŽxœ#çÊ9†rœ#gß Ú9rvŽx|cmß8G<¾qŽxœgçÈÙ9âñ œ}#çÊ9¨vŽ¡|c(ß8ÎÎsÄãCùF<ÎsÄãñ8GÎÎ1”oœ#çÊ9âqŽxœgçðÞ9 ÷xœ#çÀÙ7âqŽxœ#þg ‰Ç9pvœCxçÊ9âÁxœgçXÛ9rösÄãÂûÆP¾‘³sÄãñ8G<ÎoÄãñ8G<Îs åñ8ÇPÎsÄã8;G<ÎA5†àìC9ÇPÎ1”sàìñ8GÎsPíñøÆP¾s åñ8G<Îs …!C9ÇP¾qŽÂ}c(ß3ç€3ßßßÀCqñp8sñð TSñPå @ Ë àç á €6üP‚üðüÐüðü0‚.ø‚0ƒ2ˆççà Ú@ Úð ß  çð Qñp¤ðžçþž@5ßç°6ß3ççç°6ç0ç3ßP8çççç€3çççç€3ßpñÀñpCñ ñpß ±6ççß0߀3ß0çç0 ç0 1çç@5çç ñ ñpCqñp8sß0 ñ 8sñpñð TsñpñpñpCq8sñð ñpñð 9sñpCqCñ ç0ß0ç ç0ßP8 1ß0ç3ç0 3ßç0çç3çç0çç3ç3߀3ççþç0 1ß0ßß0Ʊ6çç0çç0ß 1ç€3 ñ CqCÁñÀCqCqñÀ8s9cñpCñ Cqñpñp8sñpCñ ñp8sCqñpñpñð 9sñpñÀõ ç0çð 8sCñ Tsßçççç0ç@5çç0ççð Cñ ñp8ó ñpñpCñ CqTs8sñpñpñpßç€3ççç߯1çßÐ< A5çç 1çç3ç@5ßþç3ç0ç <ç€3çß < çççç0ßÐ<ç0ç€3ç0çð Cñ ñÀñpñpñÀ8sñpñp8Ã8Ã8sñð ñpñpñpñpñpñpñpñpñp"à Ï î€3ž ƒüü0ƒôYŸöyŸj†3¤pßð LÁåPçç@ á ñÀžåçç0ßç0ç0 3ççç0ç0ç0ç0ç0ßpñÀñpTsñð 8ó 9cñpTsñpCq8sßÀTÃñÀþCÁTó 9s8Ã8sCÁ…sCñ ñpCq8s9sTÃñp9skó Tsñpñpñ`CqTÃ8s8sCqñpñÀñð CqTs9ó ñpñp9sñpCÁñpCñ Âs8ó CqCÁñpCq9s9sñpñpñpTsñpÅ8ÃñÀ9sCÁCqCqCqTsñpñð çç€3ç3ç0çç0ßp8sCqCqTs9sCñ Cñ 9sCñ ñpñð ñpñpCñ Cqñþð ñÀñpñð ñpCqñpksñpCñ ççP8ç0ç0çç0ççç@5ç߀3ß <ççç€3ççç€3 ççççç@5çç3ç€3ç3߀3çç0ç€3ßP8ßpñð ñp8ó 9sñð CqñpksTsCñ ñð ñpkó ñpñp8sñp8sñpTsCqñp…s8sñpñpñpkSCQñPñP8ã @ Ë àç á õÉø9¹”[¹–ûþçç@ G¡ ßpÏpßPçç¤ðž€3žp8s8s8sñp9s߀3ß0ß0ß0ß0ç 1çP8߀3ç€3ç0ß <ççç0ç€3ç3çç3ç0߀3ßßç0ßÐ<ç0 3çç0ç€3ç0ß0çç3ç0çç€3ç0ç3çß0çßç0ç€3ç <çç€3ç€3ç@Pççß0  çç€3ß0ç€3çP8 1ç0ç€3ççP8ç@5çð 9s9sþñpCñ Cñ 8Ãñð ñÀñpñpCq…sCq-…3ßß0ç0ç <Æß0ß0ç€3ç€3çß0çð ñpTsCqñpñpñp9sñpñpñpTsñpñÀ8sCÁCq9ó ñpñpñp8s9ó ñð CqCqCqñpñpksßç€3ççççççç°6ç3ç <ç@5ç0ç0߀3ßÐ<ßçßpCñ CqñpñÀñpñpCqCqñpñð ñÀ8sñþÀñpTsß3çç0 1ç0 ç0 A5ççç°6çß0ç@5 ñ Cqñpñð 8s9sñpñpñpñpñpñpñpñp"@ Ï î€3žp¹2=Ó4]Óâtñp¤pGÁ ñ å0Kñ@ á CqžÀ9sñpñp8sñð ç@5ç 1ç0çç3ç€3ß0ßÀñpñpCq8sñp8ó Cñ Þó Cq8sCqTs9sñpñpñpCñ çç0çP8çç@5ßpþ8ÃCqCqñð CqñpksñÀñð ñpñÀ8sÅñð çç0ß0ççß0ßçç0çç0çÐ<ç0çç3ç€3ß0ßç0 1çççç  ‘3 3ç0ç0çç@5 1ççð Cqñp9sTsCñ 8s8sCñ Cñ ñð ñÀñÀÍsñpñð ñpTsñp8s8sñpCq9sñpñð 1çç°6ßçç€3ç0çßÐRç°6ç0ç0þß3 3ß ç€3çÐ<ßßp8sñpñp8sTsñp8ó çç0ß@5߀3߀3çç€3ççççççßpñpßç0ç3çç°6çç ç0ç0ç€3Æ‘3ç0çß0ç0ß3ç€3 ç€3çç3ççP8ççß0 á= ‘3çç0 3߀3ßÐ<å0 à Ë àç á 6½ìÌÞì43¤° Ôð ß LQç A á ž€3ßÀkskþsßpksCq9s8ó 8Ã8s9sñpñpñpñð CqñÀñpñpñÀß0ç3ç€3çç0ç0 çç€3ç 1ç߀3 ñ ñð TÃñp8s8ó Cñ CqCqñð Cqßß°6ç0ç€3 1çßÀCñ ñp8s9sñpß3ç ‘3çP8 1çð ñpTsñÀñpñpñÀñ`ksñð ÂsCñ ñð 8ÃCÁñpCqCñ TÃ8s8s8sCñ ñpñp8sþñð Cqñð ñpñ`ñpñpCqCañð ñpñð 8ÃTÃ9sCÁCqCqñpCq8s9s9sñpñpñp9ó Tsñpñp9sCñ Tsß0 ççßç3çç3çð Cñ ñpñð ñpñpñp9sks8sñp…s9sñpßq.Þ¹sñâ3xÎ`¼oñ¾-<·Ðà¹xç ž3x.Þ9ƒçâ“ï\¼s!M†5xna¹xçNÆ;ï\¼sñÎÅ;ï\¼sñÎÅ;ïœRÏ ˆçn¡§uíÞÅ›Wï^¾}ýþXð`Â… Fœñ¹xçHQ£öìÛ7mßÎMŽçžzŠGpá·xçâ}‹w.Áçâ3xÎà9ƒçâ}3ø-Þ¹x ž“x.Þ¹…çBŒwÎä¹… ž‹w.Þ·xßž3xná9‰çBž[H0Þ·çâ}“x.Þ¹xçâ3xÎๅ ž[xÎà¹xß ž»J"‚ "(žs:g¡o :g¡sâù&žs :'žs :'žsâù找‘èœx¾9ç¤o$:Gþ¢sâùF¢sâ9'žoâ9'¤s :'žo®úf!‚â!(¤sNúÆ oâ!h¡oŠçœxÎ1蜅ΠéœÏ‰çœxŠçœ…Î1è›s:'žs úƤs:g¡o :'¤o:g¡s :Ç s úæƒÎ‰çœxŠçœxŠçœxΉçœxÎ 0žs"(¤s:Ç s :G¢sâ9'‚úæœxÎ1è›sú&žoâyÊ sâùF¢sâ9Ç ‚â!È sâ9G¢o :'žs$:g¡sL:'žsâ9'žoú&žoâù&žo ú† ƒÎY蜅Î1èƒÎ1èœÎY胾Yèœx2þèƒÎ‰çœÎ1èƒÎ‰çœ éœÎYèœxÎ1è›s,'žrâ)'žrrR–wΉ‡ O#¹d“OF9e•W^9žsâ!²ožÑæ›s¾)çœxΉ‡”º<)'žs< éœx¾1è“ΉçƒÎ1èƒÎ1èƒÎ‰çœ…Î9éƒÎ1胾1ˆ “Ήç‰ÎYèœxÎ1èœxÎ1è›xÎ1蜫Ή4žs zÊ sâ9盾Ï1蜫Î1ˆ xΉ盅ÎùÆ ‚¾‰‡ “Î1è‰Î‰çœ…ÎY蜫¾YèƒÎ1èƒ2è‰Îù&žsâ9'žsL:'‚âþ9ç›ÎYè›x¾1ˆ ƒÎ1ˆ x¾1èœx¾Y艾‰çœ…úÆ ‚L:ǤsâùÆ ‚L:g¡o úF¢sLúF¢sLúf¡s :'žoúÆ s :ÇB¾sä) 9GHsÄã:‡DαsHä9G<΂,ä 9G<²sä9G<Îsœäñ8‡A¾asäçXÈ9Nrƒœ#çèÛ7ò‚Äã 9Ç7ò ‰œ#‘È9 rŽxœÃ ç0È9âqŽxœc!‰Ç9âqŽx|#ç0È9 rŽD"çˆÇ9 ò”$ß0È9 ò ƒœ#þçˆÇ9âñ ‰œ#ßÐ9âqŽxœ#çø†A¾sÄã9G<ÎsÄãñ8G<ÎsÄãñ8G<Î!O<ˆ‡;≾ÔÒ–·Äe.u¹K^öÒ—¿f0…ÙË…2“ÑÆdÎ1™x”#¤¨‹'Îsx"$ç0È9 òsÄãçˆÇ9âqŽ…œ#ß0È7 ò ‰œ#çÈ9âAxœc!߈Ç9âqŽxœC"çˆÇ7αo˜ä&9‡A²oÄãñøò”xœ#ç0È9NrŽxœC"߈Ç9âñxÄ ç0A òsÄã'9G<Îs„ þ 9GH¾’oÄãñ H<Îaoäñ8G<ÎasÄãñ H<Îas,äñ8‡IÎsDêùFHÎasÄãñ8G<΂ä9GHÎsäñ8GHž²sH„ yŠA¾asä 9GH¾a‚,„ ñ8G<b’oœ#çˆÇ9âqŽxœÃ ‰Ç9 r‰œ#ç0A Bx$çXÈ9$ò ƒœ#ß8GHÎa‚Äãñø†D¾!‘s,äçˆÇ9Br‰œÃ ß0È9rŽ…œÃ ßÉ7 òsä9G<αsÄãñxJ<ÎaoÄ çþ0È9òs,äù†AΠs,„ ñ8G<ÎoHäñøÆBα‚ă ñ8G<Îsˆ ù†AÎasÄã !H<¾±sHäñ8GHÎ!‘sÄã'9G<Îsä ù†A¾oÄãñ8‡DÎsä9G<ÊsÄ£‘rG<@@Še@î8G<â‰]vÙË_s˜Å‡xøíå^îo€îå>‡x8Ù>Ù>Ù>‡x8‡xøíå>‡å>‡å>‡åþíx8‡å>è>‡xøíåþ†x8Ù>‡åþ†xømÙ>èþíx8‡å>‡å>è>‡oísˆ‡sþísˆ‡ß–ío€îsísXîs˜îxømÙ>Ù>Ù>‡ —íoˆ‡ß–ísíߎ‡sˆ‡sñsqÙ>‡ ?‡xøÙ>‡åþíxøíxøÙ>‡x8Ù>‡x8‡x8‡åþí—ísÈðsísísíßþè>Ù>Ù>‡x8ÙþmÙ>‡x8‡éþèþ†å>‡oˆ‡sísísˆ‡sˆ‡sˆ‡sˆ‡sísXîsXîsXîߎ‡sXîs˜îsXîoísXîs˜îsío˜îßþÙ>èþmÙ>‡x8‡x8‡éþ†å>‡éþÙþ†xøíx8‡xømÙ>‡x8‡x8‡åþmþèþmè>‡x8‡x8Ù>Ù>‡x8‡xømèþèþ†éþèþíx8‡å>‡oísísísˆ‡sˆ‡sˆ‡oíߎ‡sˆ‡sXîsˆ‡sˆ‡oíoˆ‡sXîsísøÙþ† ?èþÙþ†åþ†x8Ù>ÿíx8Ù>‡å>‡å>‡å>Ù>‡oXîoís€îsø†x8Ù>Ù>‡x8‡x8‡å>Ù>ÙþÙ>‡x8‡x8‡ÿíoXîoˆ‡sXîsXîsˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sOxH€xp‡åöà€€¾à‡hh€­‡zØþ‡@¸TØ»èt€}@à‡à‡p€|øt~Ø v}臻À ° Yˆ€Ð@€p‚pp€ ¨…À%H€h~øvMH€°MH€Ð¼@à‡»`‡øvM€€h}øvA¨ à|8€‡`‡„ °L »…¸‹v»`‡° ~¨‹p~øM€'¨ |Èh: €`‡¨‹W0_ð‡@à¾h`à½à‡ºà‡º`‡¨¥ü¯‹smR€Œgˆoß´};'0ž»sþ¤þýó/Þ9R'~;wnâÃoñÎųøðÛ¹‡ç0ž‹wc¼s(ã}{xîá·sÏa<‡òÜÃs-><÷ðÜÃs+Ï­Œ÷ 㹇çâ›h1Þ¹¢çâ‹wã·xç&ž‹÷í\¼s-><‡ò[¼oç&ž›xî¡Å¢ÏÅ;÷ð\¼sñÎÅ;‡ñ\¼oç&Zœxnå¹xçP~‹w㹉ã›øíÜÄsñÎÅûöð[<‹ÏM<‡ñÜÄsñÎÅ;'÷ÜÃoÏÅûïÜÃoÏ=<ïÜÃsrÏÅ;'×âÃsÏM<ïÜÃsÏÅ;÷ðÜÊsÏ=üv®è·sñÎ=þÈ0Ä?íð?Œ(ð?ŒPð(:ðãh;ðÓN>ðƒ\üÓNi4Š4ÿÜ#C ü´@ áS€9 ­°†£ìÐh;@ÊHÿà#€5ÿì3 C+ÀÀ?$ ð;ð3ŠÖ4ŠüXú – €>'ÿÃH ñÓ.Ûìh<ñœC 5=óÌ7ç|SÎ9ñœ) yÏ9ñxE9KÏ7R[4õ9ñœ“ó99ŸóÍÔçÄc‘Ôçä|N<çÄsN<çHýM<åüÍÔçÄsÎ7SçlQÎçèÏ9ñœ“óþ9zŸóM<çÄcQÎçÄóMÎßH}NÎçH}N<ßüó99Ÿ#õ9ßl>õ99Ÿ“ó9ñœ“ó9RŸ#õ7zŸÏ9ßÄcQ<çÄsNÎßÄsŽÔßÄóMÎçL}NÎç|“ó99Ÿ#õ9ñœÏ99Ÿ#õ9ßHýÔç|ER“ó99Ÿ“ó9£Ÿ#õ99Ï9zŸóMÎçÄsNÎçÄsN<çÄsŽÔ,’³süíR;Gξ‘³sLíñøF<ÎñÍ}#çˆÇ7âqŽxœCjçˆÇ9rvŽœ}Ã"ßÚ9rf‘œ#gçˆÇ9¤vŽ©#çˆÇ7âa‘xX$‰Ç7ôv©#g߈Çþ9rö©CjçšE¦öxœ#çÈÙ7röxœ#ç]<,sÄã9³HÎÎs|CoçˆÇ9¦ö ©}cj爇ErvŽxœãÉÙ9âq0æìñ8ÇæÎ‘³sÄÃ"ñ°H<Î!µsÄÃ"ñ8G<ÎsLí9;G<ÎsÄãñø†ÔÎ1µsÄÃ"S³ˆÔΑ³oÄã›;G<ÎoHí9ûF<¾!5IíßÈÙ9âa‘xœ#gçÈ™ŒâqŽxœ#çˆÇ9âqŽxœ#çˆÇ9D@Šg@Bñp‡Ô `Šs0‹í@£ð!s0D ø; ~ #úà: ਠCüp;ðvÀ þÁèc§ AÇþÁè£QFÂ?êQx4ªì @£Ø1€¾bÖØ> `ŠsðãüÀ‡Ìñ~ü‚ýhÇasø£Qè?œÊL¸àè?ËW Àý`; ØÉ*ö9#Å2ž!mä‰G9âA †xBjžÈ™EΑ³sÄãñ8‡ÔÎ!µsäì9;GÎÎþsäìRû†ÔÎsüíñ8ÇÔ,sÄãñ8‡ÔÎoœctçÈÙ9¦vŽxXäÉÙ9¦f‘œ#gçˆÇ96wŽxœ#‰Ç9âqŽxœ#ß8Gξq©Y$çˆÇ7Α³säìñ°ˆÔΑ3‹Híñ8Gξ!µoäì£;‡Ô΋Äã9;G<Îñ·sHí9ûÆß,"µoäìñ°ˆÞΑ³sÄãñ8‡ÔΑ³sLíçˆÇ7¤f‘x|#gçÈÙ7âñ ©YäoçˆÇ9¤vŽxœ#gç˜Ú9âñ ©}#gß°H<Α³sÄãñ8G<Α³säìçÈÙ9rvþŽ¿}ãS;GÎ,"µsÄãñ8‡ÔΑ³säìñ°ˆÔ¾qŽœ#gçÚ9ôvŽxœ#ç˜Ú9¤öxœ#߈‡Eâñœ#çÈÙ7¦ösÄãSûF<Α3‹Äã9ûF<΋LíS;‡ÔÎsäÌ"S;‡Ô¾säÌ"9ûÆß¾!µsÐ#gßÚ9âqŽxœ#gß8G<Î1µsÄãñø†Ô¾slî£;‡ÔΑ³oÄãçÐÛ7rvŽxXDjçøÛ9âñœ#ßÚ9rvŽx|#߈Ç9¦vŽœ#çˆÇ9rvŽxœCjç˜Ú9yŽÑ•csåš;@à‰þe@î8G<,â ÊÒü`(Ë}tªçœòG nG¡ü@GÎ1Žb,` AGR{}ì” QÇð~ˆCÿÈDŠ à¾ø;Ð(t n¯@øÁŽ0„ø?ØA€¢#üh?Ú1€´#BGþÑŽüƒ aÅ $à àí@?Âq(à™èÀ?øÑ(v €!ühõŠø‚ aÅ p_üƒh;ðv`xØ):ÀÁÖÃæø: žb¾`Ö?úÁŽÔ¼ú9;‡'´A m<ãÚ8Ç7,RŽxþœƒ ñD9âqO|CoçˆÇ9âqŽœ}CjçøÛ9rv©}#gßÈ™EÄÃ9LÍ9ÄÃ7ÄÃ9HÍ9ÄÃ7HÍ9ÄÃ9LEÄÃ9äÌ9|CΜÃ7XD€.ðÃ? Ãü; @£ôÃ?<@-d€%8J?°ôC°Ã4Ê(€.øC£ðÃ?øƒþ!(À?àƒÀC„Ãü; À:<8 :?8?$CHÀä€Ô?ìÔ(€.øC£ôC; ÀZÖÜ9äŒ'P5|Ã3„@”C9œC<œ)0„'œC<œ)HÍ7œÃßXDΜC<œCd‚€>üÃ:?ü,(?àÀCøƒ ø€>ôÃ=|?°ü?°þ0D; ÀN¡CðCíò; À?°Cø?à ?°4 ><üƒ?üÀüC;ÀN‚€>ìT; @£°Ã0„ 1ì?äÃ?¬1ðÃ?À‚0Ä ¤?øƒ À?°CìÃ:<0= ƒðÃ>ðÃ?ðC;ü?øCðC>4 ; €åRVΜ)8¨6|Ã9<Ã9|C9œC<œC<CxBΤÃ'œC<œƒÞ|ÃÔœCÎ|C<œƒÔœCΜƒÞœCΜƒÔœCΜƒÔœC<œC<œC<œC<œC<œÃ7äÌ7äÌ9ÄþÃ9ÄÃ7èEäÌ9HÍ7äÌ9ÄÃ9ăEÄÃ9ÄÃ7ÄÃ9|C<œC CDxðC£ÔC@€ € XCôC=@ü?Ôà \À,ðÃ?XA @-ü>(A@ô?°Ãü?°ÃüC?°ì:€„ ÀØÃü; €&HÀ4?ü; €£h‚ˆÐÁü;€£ðC=@ìT?°Ã4J; CD¸¼9èC=lŠ_€/ôÃ?àC€€ÐðC; C¬þÃ<?`.€à³ˆè?0D? CðÃ?ðƒ8€>üC„¿¹€>ü?°ÃÈ·bC΂ƒ:¨@XÄ7”ƒ;¸C<CxB<œC'o‘â9'žsòŽç›xΉç‘"çœx¾Éû¹Ï‰çœxÎÉü¼¿‰ç›Ìãù&žsðþFîoΉç¼ÏÁûœxÎa=žsâ9ïsä>'žsâ9ïsâ9GîoΑû›x¾‰çœxÎÉûœÈÏñýœ¼ÏÁ{ÄxÎaýœ¼Ï‘û‘äþFîÏ‘û›xΉç¹¿‰ç¼ÏÉû¹Ï·eî™;GäÎ!·oÈíñ8‡Ü¾þsÈíx;Gås>é³>íó>ñ3?õs?ù³?ýó?4@t>ñ†žá¾áÊ!7¾¡ÊáâáH)<¡âáÏ ,7ð\¼sñÎÅ;ï\¼sñÎÅ;'‚Ô3Hâ¹#èéŸâÅŒ;~ 9²äÉ”+[¾Œ9³æÍœ;{î|n )jÔž}û¦íÛ¹ÓñÜ#¥ØÓÀsžâ}øí\¼sñÚ<ïÛ¹x>¿ üFð[¼sÏÅû6ð[<ŸÏÅ;Wð\¼sã‹wŽã¹xç~‹÷íÁo¿‹ç3Þ·sñÎÅóIðÁo¿ <×Ý@çtÎ@çtN<> ôÍ@çÄãÓ@ç tN€ñ|COSÐ9ñøTÐ9}Ï9ñø4Oñ|CÐ93Ð9CÐ7ñ|CÐ9}CÐ7>tN<þç tÎ@çptÎ@ßœCÐ9ù4Ð7ùÏ9}CÐ9Ï9Ï9}3Ð9CÐ9ñ|Ï9ñ|CO}3Ð9ñœ3Ð7Ï9Ï9ùÏ93Ð7ñœÏ9ñœà7ñœÏ9ñœÏ9ñœƒÐ9Ï9ñœCÐ7ñœÏ9Ï9ñœSÐ9SÐ9ñœ3Ð9ñøÏ93Ð7ñœÏ9SÐ7ñøÏ7Ï9ñœÓÝ7çÄsAßtAçÄsAç tN€çÄsAçÄóÍ@çÄsNAçtAßtÎ@ç tNAç ôM<ç ôMAßÄsNAßtwNþ<ßtN<çÄsÎ@çÄsBçÄóMAçÄãSAßœÏ9COƒÐ9Ó]9¹¤, îœOž4tÐBMt?ë Ò ÑJ/ÍtÓN? uÔROMuÕPt)ÔœöÌ3ßœóM9çÄsN<¤(æI<ç¤ó‰OñœSÐ93Ð7ÝOñœÏ9}3OñœÏ9ùô B>tÎ7ñœÏ93Ð7ùÏ9Ï9Ï9ñø„Ð9CÐ93Ð7ñœÏ9Ï9ñ|sNAß tÎ@ç|ÃÑ9ñœÏ9SÐ9óM<ß ÔVAßÄsAçptþN<ß tN<ç äAçÄsÎ@çtN<çtN<çÄsNAçÄsN<çtÎ@ç tNwßt‚|c ß@ˆO8rŽxœãù†O rŽœ#߈Ç9âá“x|c ßÈ9¾1s äñhË@¾s Ä'9G<Î1sX¨-9G<Îñxœc çˆÇ9âqŽ‚œãñ8AÎQspä9G€ÎspäßÈ9òœc çÈ9âqŽ‚ø„#>È9âq„œ!çˆÇ9rŽxœ#çÈ98rŽx|#çˆÇ9òxœ#>)È9òxœc çÈ9rŽx|!ßþÈ9âñ‚œ#çˆOòœ#çˆÇ9rŽxœ£ ß È9âqŽxø$çøÆ@ÎQsÄãñ8Ç@Îñ ‚ø$çÈ7rŽ‚œ#ß8AÎs|c çÈ9r„œc ß@È9âqŽo äñ8Ç7rŽxœ#çˆÇ9âqŽxœ#çˆÇ9Dà‰g@BñpA!È9ⓜ#çˆÇ7âñsäñ8GÎÁ‘sÄãñ8Ç@Îsä>!È9âá“x|#ç È9rŽù$m‰Ç9rŽxœ#çˆÇ9âqŽ|Ã'9G<¾q‚œc çˆÇ9rŽx|c ç È9r‚œc ç È9âqŽxœc ç@È9ₜ#߈Ç9rŽ|#>ùF<Îa¡xœc ߈Ç9 rŽx|c çÈþ7ÎAs Ä'ùF<|RoÄã9G<Î1sÄã9AÎ1s ä9G<ÎQs ä9Ç@Îs äñðÉ7âqŽ‚œ#çˆÇ9 òsÄãñ8G<Îs äñ8Ç@Î1sÄã9G<ÎAo ä9G<ÎsÄãñøF<ÎAs äùBÎspä9Ç@ÎsÄã9AÎAs ä9AÎQsäñ8A¾Asä9Ç@ÎÁ‘oÄãùAÎAopäúAÊArÄ£q‡;@@Še@î8G<|≪ jþH*þPьƠüÀ$þ(;&°Æ?î5,Æ.+N €˜`]L=@Ðíp‹{ÜMÈ9H¡ jhãßÐÆ9¾á“rÄã¤PŒ'âqwx"@߈Ç7rŽ|!çˆÇ9rŽx|£;ç È7 òxœƒ çÈ9òxœ#çˆÇ9¾sÄãñI<¾spÄ'9Ç@|sÄã9G<ÎQsÄãñ8G<ÎQs ä9Ç@ÎQopä9GAÎs ä:AÎ1sä9Ç@ÎAs|ã9Ç7rŽœãùF<ÎQspä9A¾þ1Ÿ äß È9rŽxø!ç È9òsä9G<¾1sÄãñ8G|2s >ßÈ9rŽœƒ ç È9 rŽxœ£ ç È9rŽ‚|c çÈ9r‚œ£;çˆÇ9rŽoÄãñ8Ç@Îñ‚ø¤ ç È9rŽxœ#>È9âqŽoäñøÆ@ÎÁ‘säñ8G<Îñ‚œ£ ßàÈ9¾s ä9G€ÎoÄãñ8AÎ1ç0çç@çççç@ç>ßç>1>ç0çç0çç0>çç0mQþ>1>ç@ç0çç0çP>Açç>1ççç@çPß>Q>ç>mççççmçççççççç ¤ð ñàá U£lL3U€U°x°Aðë€ ·€ À‹ÀüpYŠQ `ü°  @³ ` ã@¥@KÓŒÑOÃ@n­èŠ­xñp¤@ßð §qåPçç@ Šá ñ Œž ŒßpñpñàñpÂçßpñpÂþø ñpÎxñpÎ(Œ>!Œßç Œ>!Œç ŒçàŒçàŒß>çàó(ŒßàççßpñpÂèñàÂxÞxÂø ç0ß Œç@yÂxÞxñÐñpñpÂèÂxôø ÂxÂxñð ÂxÞø Âèñpñpñð ÎxÂxñpÎxÂxñpñð Þxñð ñpñpÂxñpñð ÂxóxñàÞèÂxéßçàŒç Œ>!ŒçßàñpÂø Îxñð ÎxñpôxñpñpÞxÂø çþç>ñ çßç0ßpÂxñpñpÂø çç Œçàßç Œçð ÎxñpÂèÎxóxñpñpñàñð çðçç Œç Œçßàçß Œ>!ŒçàŒçàŒßçàŒç Œçç ŒçmqñpÂxôxôèÂø ñð ÎxñpÎø Þø >çàß Œç ŒçßpÎxÂxÞø ôxÂxÂxÞxÞxZù ñàÞø ôxÞxôxóø ç Œßàççßàçàç ŒçàççàÔéþŒç>!ŒçàçàŒç •YÎXé à Ë àç>á UÿJ“-Ð0Ð0Ð0ýàp ¨ÐèüÀðèüðý°|Àõ°º‰ñkÐŒÁ°í@ÿÀ `í0‚ðÀø  0MÀÿÀ  P üàP ¯h©—šPÎH ¤¡ ßpÏpßPç礠žçPž ŒçàŒçàßççà>ç Œçð Þø ÂxÞèÂxÂèñð Âxñð ñpñþàÎxÂø ÎèñpÂxÎxÎxÂxóxÎxÎxÎxÎø ÎèÎxñpñð ç Œßß Œç Œççð óxÎø ÞxÂø ñpÂxñpñð Âèñð Âxñà3zÂxñpôxñpÂø ÂxÂèñpñpÎø Þxñð ÎØÂxÎxßàç ŒßßßçàŒ>áŒççàŒß ŒçàŒßàŒçßàŒ>1ßçç Œççç Œç Œç0£ñpÂxßpÂxôxÂxóxÞxñpßþçç ŒçàŒ>!ŒçàŒçð >!ŒçßàçàŒçç Œçðç Œ>!Œß Œç0ç Œç Œß ŒçàŒ>ß Œç Œß •>áŒßç Œß Œm!Œ>!Œç ŒçàŒß Œç Œ>1çç>!Œß0çç Œç Œç ŒçàçàŒççà>!ŒçàŒçð ñpñàñpÞxñàÎø ÎxÞØñð Þø ñpÎèñpñpÞèÂxñð ñpóø ñpóxñpÞxÎxôø Zyñð ñpñpß Œççççþççççç ¤ð ñàÎè UŠDÓùPoPEðEðEð‰€ ‰Ð ‹Ñè üÀÐè üð÷. ýpAÐ@Ã`Á°í`ÿÀüðì iÀŠa0 ÷ðCðìOÀÿÀÀì@‘ˆ©‰¬ÈPsñp¤@¤q>ñ åàjñ@ Šá ÂxžpÂxÞxñpÞxñpÎxÂø ÎxßpñàÎèÎø ôxÞxÂxZyñpÞø ñpñpñpóxÎø ôþø Îø ñpÎxÂxñàÞø ñpÂxñÐÂxÂxÂxÎxóxñàÂø ÂèÂø ççàŒçàŒç ŒçßàŒç Œççß>áß Œç@ççç •çç Œç ŒçççàßàŒçàßàŒ>ç Œç ŒßpÎèôxÎxÂxÂxñpñpñpÂxñàñpÞxù Âø ñpñpñpÂxñpñpÞèÎxñpÎø ñpñpñpÂø ç Œç@>!Œç@çàŒç@ñpÎxñpþÎxÎxñpÎxÂxñð ÂxÎø Âxñàñð ÎxÎxñpÎø ÎxÞèñpñð Âø ÞxñpÂxñpñpéñpóxñpñàÂxÂxÂø ñpÂxñpÎxÂø ÂxÂxñð çmñ ñpñpÎxZyÎxg{ôèÂø ñpñð Þxñpñð ñpÂxôxÂø ñpÎø ÂxÂø Âø ñpÎø ÂxñpyÎø Þèñð Âø ÎxñpÎxÂXç0å0åàŒî¤° îpþñàžP5°@4üP•Àâ-^ EÐ ¨p ÀèüÐðè ðÀ[µ4âúÀŒÑ°í@ÿРŠÑ Š`‘( ðìú ìpüÀ°ÈkÎæCÃñpñ@ Ë@ Ïð Ú  §Qç>A ùðžçŸ@>áŒçßàçàç ŒçàçàŒß@ç Œçàçð ñpñð ÞxñpñàñpñpÂxñpÎxñð ñpóxñpßß Œç ŒçàŒ>áŒççàççþàŒç0>ß ŒßàŒ>çð ñð yñpÂxôèñð ÎxÎxÂxÂxñpÂxÞø ñpñpßçßç@çß Œ>áçð ôxÂø ñpñð ñpÂèñàñpÂxñàÂx3ú çççàç Œçp¶çàççàßç>çàŒß ŒßçàŒççç0çàŒß Œç Œßàç ŒçàŒ>ñ Þø Îø ÂxÂèóxôø ÎxÞxñpñàÂxóxñàóèñð ÂxÂxÂxþñpÞxñð ôxÂxñð ñpñpñpÞxÎø ñpôxñÐñpZù ÎxóxñpñpÎxÎø 3zÂxÎø ÂØßçð ñpÎxñpßççð ÎxÂèÂxñpÂèóxñpñpñpÎxÂxÞxóxÎxñÐÎxñÐÞø ñð ñpñpñð ÂØñpÂxñÐñpÂxÂxÂèÎxñpñpñpñpñpñçâáé$ñÜÅcèéßCˆ%Nüà!ŠùáØ±#¿@·Aì‡þNÀ>vú¡Àïß½, 3`(?‰üØ0'‘Ý€‡üÚøÇn¿ýØ èÇ»¤V0ð݈ìðk7 ãW°aÅŽ%[ÖìY´ž#%–©‡žÆóïÜ·ssã›{Žá9†çôžcx.Þ9½çâ‹÷í\¼s ÏÅ;ïÜÜs Ï1üv.Þ¹xçô2<ÇðÃssÏ1dèãÎaèœxÎaè†Î‰ç›xΉçœxÎaèœxZ[ð†þ¾‰çœåΉçœÑΙëœÑΙëœo:g®s¾‰çœxΙëœxÎa膾a¨5†Îaèœx¾aèœxΙë½ÎaèãÎaèœxÎíœxZ‹çœ¹¾1îœÑZcèœx¾‰çœ¹¾aèœxÎùF¯sâi-žs:‡¡sâ9'žsâ9‡¡s,èñ8CZ£—sÄãñ8ÇhÎÁsÌå 9Ç\Îs0ä 9G<ÎñsÄã 9G<Îs0ä iÍ\ÎÁsÄãñ8G<ÎÖÌåz9CZ3—sÌå i CÎ1šsÌåsùCÎsÄãñ8G<Ρ—ÖÌåñøC¾þÁo,çÆù†^ÎÁs0äñh^Îs0ä ùÆ‚ZoÄãz9G<ÎsÄãñ8G<ÎÁo0ä 9‡^ÎÁsèåßhM<Îñxœc.çˆÇ9âqŽ1ä£9CÎ1šsÌå 9Ç7âq†œc.ç`È9âq†|#çXЇâñ ½œ#ç˜Kkâñ¡¹œ#ç`È9âqŽxœc4çˆÇ9¾1—sÌ¥5 9Ç\Îaœs,ès9G: ìÀCúÁŽ0 J€‡°caþá+ µÈjË]þr˜¿|.¤à=ès¸#gûÆ3¨Á R<þÄñh'ôÒšx|#çˆÇ9âñå´†!߈Ç9Œs޹|c9ßÐË9âqŽÑ´&­1Î9âq޹œ#ç`È9ôrŽxœC/çˆÇ7rŽxœ#ç˜Ë9âqŽÑœC/çÐË9–ó¹œ#çˆÇ9âñ ½œc.ç`È9âqŽx|ƒ!ç`È9ôrŽÑœãñ8Ç‚Î1—Ö0äßÍ7ôò¹œc.çÍ7âqŽxœ#ç`È9âqŽxœc.­aHkr㜃!ßÐË7Ò†|c.ç`È9âñxœãñøÆ\Îo0äñ8C¾sÄãñ8CZÃs0äñ8G<¾sÄãþ>Ç7ôrŽå8†ø†Öˆ‡o˜‹o˜‹o`ˆs`ˆÖXo˜‹s˜‹s0Žsˆ‡sЋo`ˆo`ˆsˆ‡sÖˆ‡sˆ‡o8†8‡o`ˆs˜‹oˆ‡sø†x8½8‡xø†ø†8‡x8‡x8†ø†Ñø†x8‡xø½8†hx8ãø†x8‡¹8½8†8‡x8‡x8†ø†ø†8‡Ñ8‡¹8ãøx8†8‡¹8‡¹8‡x8‡x8‡x8†8†8‡x8†8‡¹8‡xø½8‡x8‡x8‡x8‡¹8†8‡P:†ø†x8‡oˆ‡sˆ‡sø†¹8‡x8‡åhx8‡x8‡þo`ˆs`ˆs˜‹aˆss`ˆsЋsˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sRxH€xp‡¹ð„˜«#xF,xF,xÆgô‡@¸F~ø‡~‡èˆà‡‡àªq Šq ~ø~xh§€§`§h˜~ø~ §hF|ÌG}lÆsˆ‡s …°9†(‡rhoÐjOxO˜ O(‡sЋs`ˆo`ˆÖ`ˆsˆ‡os˜‹o`ˆÖ˜‹Ö`ˆo8‡x8‡x8†h ½ø†xh †8‡Ñø†s`ˆs`ˆsЋֈ‡sˆ‡s`ˆsˆ‡s`ˆs`ˆÖ0Žsˆ‡sЋoøþ†ø†x8†8ãhxh ã8‡x8†8‡¹8½ø†x8†8½ø†8‡Ñø†xø†8‡¹ø†sˆ‡sЋs˜‹s`ˆsˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡Ö˜‹s˜‹o8‡x8‡x8‡xøã8‡x8†8‡¹hÑø†ø†xø†h †ø†xø½8†8‡xø†s˜‹s`ˆsˆ‡sЋs˜‹oˆ‡sˆ‡s0ŽoЋo`ˆÖ˜‹s`ˆo`ˆoˆ‡oˆ‡Ö`ˆs`ˆs`ˆo˜‹s˜‹s`ˆsˆ‡s`ˆsˆ‡s`ˆs`ˆÖˆ‡sˆ‡s˜‹sˆ‡aˆsˆ‡sˆ‡sˆ‡oˆ‡sˆ‡sˆ‡Öþˆ‡ssˆ‡Öˆ‡s˜‹o`ˆs`ˆssˆ‡sЋs`ˆsˆ‡s˜‹s˜‹sЋsˆ‡sXŽs`ˆsЋs˜‹s`ˆs`ˆs0Žs˜‹sˆ‡s`ˆs`ˆsˆ‡sø½8‡Ñhxh †8‡x8½8†ø†xhx8‡¹8‡Ñ8‡¹ø½8‡x8†8‡x8‡Ñø†8‡¹8‡x8‡Ñ8‡¹8‡x8‡xø†s`ˆoˆ‡sˆ‡Öø†¹ø†x8‡å8‡Ñ8‡xø†xøå8†h¹8½8‡x8†ø†s`ˆoˆ‡s`ˆrˆ‡sˆ‡r˜‹rˆ‡rˆ‡rÐ wˆ …e€p‡sˆ‡Öð„}dþUQUxs|ˆ{È‚øTVmUW}UXe˜x8‡x ~ЋÖ8møjàRxOˆ‡rˆ‡O8‡x8†8‡x8‡x8‡x8†ø†ø†8‡Ñh ½h †8‡x8‡¹8‡x8½8‡x8‡x8‡å8½8‡Ñø†x8‡Ñ8‡x8‡Ñ8‡Ñø†x8‡xø†8†8‡x8ã8‡¹8†ø†x8‡x8ã8†ø½hx8½8†8ã8†8‡x8‡¹ø†x8†8‡x8‡xø†8‡¹ø†8†ø†8†8‡¹8‡¹8‡x8†8‡o`ˆoˆ‡s`ˆsˆ‡s`ˆsˆ‡oˆþ‡ÖЋo`ˆo0Žo8‡x8‡x8‡xh ½hx8‡Ñ8†hÑh †8‡x8‡xh¹hx8½8‡x8‡x8†8‡oˆ‡ÖЋsˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡s˜‹oЋsˆ‡Öˆ‡oˆ‡Ö`ˆs`ˆsЋsЋs˜‹s˜‹s˜‹sЋsˆ‡sЋ֘‹sXŽoXŽs`ˆs˜‹sЋsø½8‡xh ½8‡x8‡x8‡¹8‡¹h¹hx8‡x8‡¹8†øx8‡x8‡x8†8‡¹ø†x8‡o˜‹Öˆ‡s`ˆoˆ‡s`ˆsˆ‡s`ˆs˜‹sø†sˆ°x8‡xø†¹h¸:‡o`ˆsþˆ‡sˆ‡sˆ‡sЋoЋs˜‹s`ˆo`ˆo`ˆsˆ‡sø†x8‡¹8†8‡Ñø½h †8½ø†¹8†8‡xø†h ã8‡o`ˆs0ŽsЋr`ˆo0Žs˜‹™‹sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sOxH€xp‡¹ð„XÍt°†#nb'~b(~†8Rà›;†hoІo †` …‡ð†pO`ˆsˆ«Ösˆ‡sˆ‡sˆ‡s`ˆsˆ‡o0Žs`ˆsЋsˆ‡o`ˆoˆ‡s˜‹o`ˆsˆ‡oø¹ø†x8‡x8†ø†ø½8‡xø†x8†ø†s˜‹þsˆ‡ÖЋoˆ‡sˆ‡s˜‹o8‡x8‡xø†h †8‡xø†x8‡xø†sˆ‡aˆosˆ‡o8‡xø†sˆ‡s`ˆsø†s`ˆsЋaˆÖs˜‹sˆ‡Ö˜‹ÖXŽs˜‹sXsˆ‡s`ˆs¥s˜‹o`ˆÖˆ‡sЋoˆ‡s˜‹ss¥o`ˆsЋֈ‡sˆ°s˜‹s˜‹sЋs`ˆs0Žsˆ°sˆ‡s`ˆo8†8‡¹8‡¹8‡¹8‡¹ø†¹ø†¹h †8½8‡¹ø†Ñ8½8‡Ñ8‡¹ø†sˆ‡Öø†x8‡x8†8†8‡¹8†8‡x8†8‡Pú†sXŽo8†8½8þ‡Ñø†ø†s`ˆs¥s`ˆoˆ‡sЋsˆ‡s0Žs`ˆsЋÖ`ˆoЋs`ˆs`ˆsˆ‡o8‡x8‡xhx8‡Ñ8‡x8‡xø†xø†s`ˆs`ˆsˆ‡sˆ‡s`ˆo`ˆs`ˆo˜‹Öˆ‡sˆ‡sˆ‡sˆ‡ss`ˆo8†ø†h ã8‡oЋsˆ‡sˆ‡Öˆ‡Ö˜‹sˆ‡sˆ‡s˜‹s`ˆoˆ‡s`ˆs˜‹Öˆ‡o8‡x8‡x8†8‡x8‡xø¹hÑø½(‡å(†pwRXHw8‡xh OˆbŠé‡ðëÞnîîîfŒ‡sˆRàzЋrømø†g ^ …‡þð„sˆw …o`ˆsˆ‡sˆ‡sˆ‡so˜‹s˜‹sˆ‡s0Žsø†ø†Ñø†x8‡¹håh †8ã8‡x8‡x8‡x8‡x8‡x8‡x8‡xø†h¹8½8½8‡o`ˆsЋoˆ‡ssЋs˜‹s˜‹ssˆ‡s˜‹o`ˆsXsˆ‡s`ˆs`ˆsø½8½8†8‡x8‡xø½8‡o˜‹sø†xho`ˆoˆ‡sˆ‡oˆ‡sˆ‡s`ˆs˜‹soˆ‡sˆ‡Ö˜‹9‡x8†8‡¹8†8†ø†8‡x8†h †8‡xø†åho˜‹oˆ‡sˆ‡oЋs`ˆþsˆ‡sø†8†h †8†ø†x8‡x8‡x8‡x8‡ix8‡Ñ8‡xø†¹8‡xh †h †8†8‡¹8‡o`ˆoˆ‡Ö`ˆoˆ‡sˆ‡o`ˆo`ˆsˆ‡o`ˆo`ˆss˜‹s`ˆs`ˆsˆ‡s`ˆo˜‹s`ˆsˆ‡sø†x8†8†ø†x8‡x8†8†ø†xhx8‡x8‡oˆ‡sˆ‡sˆ‡so`ˆsˆ‡sˆ‡sø†¹8†hx8‡x8‡xø†ø†x8‡xø†¹øãhx8†ø†8†8‡P:†ø†ø†x8‡x8‡¹8‡xø†å8‡x8†hxø†x8½8þ‡¹8‡x8‡¹8†8‡¹hÑ8‡oЋs˜‹sˆ‡sЋs`ˆsø½8‡9†8‡x8‡o˜‹sЋsˆ‡ÖXs˜‹sø†¹hx8‡x8‡x8‡x8‡x8‡x8‡x8‡x8 …g€ˆw˜ OðnÅ_|Æoü¬‰wˆRø›› ‚<‡³¡†` …‡ð„s`O˜‹o˜‹s`ˆÖ`ˆsˆ‡s˜‹ooˆ‡oh¹h †hx8†ø†x8†ø†h †8†8‡¹8†8‡å8‡x8†8½8‡xø†x8‡xhåh¹8‡xhx8‡x8‡x8†8‡Ñø†x8‡x8‡åþ8‡xhx8‡¹8‡xhx8‡x8ãø†s`ˆsXŽsˆ€8w.Áxçâ+ïœÂsÏÅ;WðÁsñ΂œƒ ߈Ç9 òxœ#þçˆÇ9âñsäùF<ÎAsÄã 9G<Ωs(|9AÎsä9AÎsÄã9‡B¾qŽx€/çˆÇ9âq…œƒ çˆÇ9âñx€ ç øò ðÅã9AÎsä9‡RÎoä9G<Îs(|ñ8GAÎAoÄã9‡BÎoœ#çˆÇ9rŽxœã()G<Î’oÄãù†lÊrÄ Å2 wœ#àóÄóêj×»â5¯ze^<ÀG ~Ѓ çøF<Îa$mPƒ¤(‘' â‰xœ#çˆÇ9âqŽxœ£ þçøAÎsÄ|J_AÎñ …œ#ç(ør‚œƒ ç È9ò ‚€/çˆÇ9¾xœƒ çøFAÀG¡s|#ß@É9rŽx|£ ß È7rŽoPèùF<ÎAzœƒ çˆÇ7âq”œƒ ç(ørŽx|%çˆÇ7rŽ‚€ à‹Ç9âqŽxœ#çˆÇ9rŽ‚|#ç(È7âqŽxœ#çPø rŽoÄãñ8G<À÷xœC)ç È9¾QsÄãñ8AÀ§o|ñ8G<¾AsÄã 9AÎsÈæ9GAÀs|ã ùAÎQsÄãþùF<Îsäñ_<ÎQsäß È9 rŽxœ£ à+È7âq‚œ#ß(È7 ò ‚œ#ß@É9rŽxœ#ßPÈ9rŽxœ#ß È9âqŽxœƒ à+È9â¾xœ#ç È9r‚œC)çˆÇ9ò …€/çˆÇ9ò ‚€/ç È7âñ …œ#çPÈ9r‚€Bç È9r…œcT_AÎQs(ä 9A¾Aoä9A¾QsäAÎs|C!çˆÇ9âqŽ‚œ£ ç È9âq‚œ#çˆøâq…œ#àSÈ9âñxœ£ çøþAÎsÄãñ8G<ÎsÄãñ8G<ÎsÄã"ðÄ3 !€x¸£ žØ+Ë[îò—Ãy!Å?¨Gs”{Ô F0HQ"OÄñ8G<¾sä 9‡²¿q‚œ#ç(ørŽxœƒ àSÈ9r‚œƒ ߈Ç9dóxœ%ß(È9âqŽ‚€/ß È7rŽ‚|ã9GAÎsÄ|ñ8A¾qŽ‚œãùAÎsÄãùAÎAsäñ8‡BÎð¡ä9G<ÎAoä_AÀGsäùF<ÀWoÄãñ8G<ÀGsÄãùFþ<ÎAs(äñ8‡lÎsÄã9AÎsÄã²_<¾sÄã9G<Îs(äñøÆ9âq‚œ#çˆøâq‚|ãŸBÎsÄ9Ä9 øÄÃ9 Ä7ÈÆ9ÄÃ9ÄÃ9Ä9ÄÃ9Äø Ä9Ä9ÄÃ9ÄÃ9Ä9ÄÃ9ÄÃ9ÄÃ9ÄÃ9Ä9(øÄÃ7œAœƒRœC<œCA|C<œC<œAœ…œƒB|ƒBœCA€OA|CAœAœC<|C<œCAœAœC<œ…€O<œƒR€O<œA|CA|C<|AœAœƒBœC<œC<|Ã9Ä9Ä9(þÄ9Ä7ÄÃ7€O<|C<œC<|CAœCAœC<|A|ƒBœJœAœƒB|C<œC<œAœC<(Ñ9Ä9 Ä9ÄÃ7(Ä9(Å9Ä9ÄÃ9Ä7Ä9(Ä9PÈ9ÄÃ9Ä9Ä9Ä9Ä9ÄÃ9ÈF9ÄC9 D9Â2@¸Ã9Äøx‚^ñC!8ã3:cÌIã4RcËÅøÂ?ÐAœC<”ø 5ð)üC?xB9€'Ä9Ä9Ä9Ä9ÄÃ9ÄÃ9ÄÃ9øÄÃ9(Ä9øÄ7ÄÃ9D ø Ä7Ä9ÄÃ9Ä7Ä9|Ã9Ä7Ä7ÄÃ9ÄÃ9Ä9þ(Ä7(øÄÃ9ÄÃ9ăÄ9|A|èœCA€O<œC<€O<œƒBœAœC<œCA|JœC<€O<œƒBœA€O<œAœCA€OAœÃ7Ä9|ƒR|AœCAœƒBœC<œƒBœAœƒlœƒB€O<œƒB|A€RœÃ7Ä9PÈ9|JœAœC<|ƒBœC<œƒBœƒB|A|ƒBœCAœƒlœJ€O<€OA|C<œCAœC<œC<œC<œC<œC<œÃ7ÄÃ9ÈÆ9ÈÆ7ÄÃ9ÄÃ7ÄÃ9 Ä9(Å9Ä9ÄÃ7Ä9ÈÆ7Ä7ÄÃ9ÄøÄ9Äø Ä9ÄÃ9Äþ7ÄÃ9ÄÃ9 Ä9ÄÃ9(Ä7(Ä9ÄÃ9ÄÃ7 Ä9ÄÃ7Ä9Ä9Ä9|C<œC<œÃ7Ä9Ä9ÄÃ9Ä9ø Ä9Ä9Ä9Ä9Ä9Ä9Ä9(Ä7Ä7ÄÃ9ÄÃ9(øÄ9 Ä7Ä9„ÅÃ9Ä7ÄÃ9ÄÃ9Ä9|C<œCAœC<€R|CAœC<œC<œAœAœCA€Ï7ÄÃ9ÄÃ9|ƒRœC<œƒBœCA€O<œAœƒBœC<œAœCA€JœC<œC9œC<œC<œC<œC<œC<œC<œƒÂ3@‚ă;„'è?? išƒ!Tc›ºþé›OAÂ?PAœö\5)”ˆ'Ä9xBAœC<|A|C<œƒBœC<œA€AœCA|CA|ƒBœA|C<œC<œA|ƒB|Ã9Ä9Ä9ÄÃ9ÄÃ9Ä9Äøø(Ä9Ä9ÄÃ7ÄÃ9Ä9Ä9ÈÆ9(Ä9ÄÃ9ÄÃ9ÄÃ9Ä9ÄÃ9ÄÃ9(Å9Ä9Ä7œJœC<€O<œAœƒR|A|CA€AœJ€OAœCAœƒBœAœAœƒBœJ|C<œC<œ…|C<|C<€A|Ã9Ä9Ä9Ä9 Ä7œC<œCAœC<|AœC<œC<|øÄ9þÄ9ÄÃ9Ä9Ä7(øÄ9Ä9Ä9ÄÃ9(Ä9øÄÃ7(Ä7Ä9(Å7œC<œA|ƒR|C<œCAœCA|Ã9Ä7œA|Ã9ÄÃ9Ä9Ä7(Ä7ÄÃ9Ä7œC<œCAœƒBœC<œAœA€AœC<œƒRœJœA|AœC<œC<œAœA|C<€B|AœCAœC<œC<œC<œC<|Ã9Ä9Ä9ÄÃ9Ä9Ä9ÄÃ9Ä9(Ä7Ä7ÄÃ9(Ä9Ä%ÆÃ9ÄÃ7Ä7ÄÃ9Ä9Ä9Ä7Ä7œC<€O<œƒBœAœCAœC<œC<œC<€þAœAœJ|øÄÃ9Ä9Ä9Äø(Å7(Ä9Ä7(Å9ÄøÄ7(Ä9(Ä9ÄÃ7Ä9ÄÃ9Ä7ÄÃ9ÄÃ9ÄÃ9(Ä7Ä9ÄÃ9(Ä7ÄÃ9(Ä9Ä7Ä9DJ9ÄC9„;€€',$€;œC<€'è?Bš¦),C! ; @аÃÄ; À?°Ãì; œšðËÅøÂ?ЃB(‘‘P/B‰xBAxB<œCAœC<€AœC<|JœƒlœC<|AœCAœC<œC<œA|C<œC<€AœA€O<œÃ7Ä9ø øÄ9ÄÃ9Ä9|CAœþA|ƒRœC<œƒRœAœC<œƒB|ƒRœC¤œCA|C<œƒl€O<€O<œAœAœC<|ƒl€O<œƒBœC<œC<œC<|AœA|C<œA€O<œC<œC<€O<œAœC<|Ã9ÄÃ7ÄÃ7ÄÃ9ÄÃ9ÄÃ9Ä9Ä9(øÄøÄ9Ä7Ä9Ä9ÄÃ7Ä9(Ä9ÄÃ9|AœJœC<œAœCAœƒB€O<œJœÃ7Ä9|ƒB(Q<œC<œÃ7Ä9Ä9Ä9Ä9Ä9|Ã9 Ä9Ä9ÄÃ9Ä9Ä9ÈÆ9øÄÃ9ÄÃ9ÄÃ7Ä9Ä7ÄÃ9øþÄÃ9Ä9ÄÃ7(Ä9Ä9ÄÃ9|C<œC<|C<œƒBœC<œƒBœC<œCA(QAœC<œC<€O<œÃ7(Å9Ä9Ä9Ä9|ƒB|CAœƒBœA|A€O<œAœÃ7ÄÃ9Ä9(øÄ9Ä9ÄÃ7(Ä7ÄøÄÃ9Ä9(Ä9ÄÃ9Ä7PÈ9(Ä9Ä9Ä7ÄÃ9(Ä9Ä9(Ä9(Ä9ÄÃ9Ä9ÄÃ7Ä9ÄÃ9ÄÃ9ÄÃ9|ƒRœC<œAœƒBœC<œC<€BœC<œCAœC<|C<œAœÃ7Ä9(øøÄ9ÄøÄ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃþ9ÄÃ9ˆ)<$@<¸CAx‚^ñƒ!ðÃ,tB'HB?HÃ1À‚!œ; @Šà$´È‰°ü>@Bw“wy›; €y«÷z³w{»÷{Ãw‹)ü=(žî\0xB‰xÂ9”Ã9xB<œC<œƒl€A|C<œA|C<|C<€O<œC<€O<œC<œJœC<œAœCA|C<œƒRœCAœƒB|èœCAœC<œC<œAœA|C<œC<œC<œC<|C<œAœJœC<€O<œC<|C<œC<œC<œC<|JœC<œC<œA|CAœ…|CAœC<œC<œA|Ã9(þÄ9Ä7ÄÃ7(Å9(øÄ9Ä9ÄÃ7ÄÃ9Ä9ÈÆ9ÄÃ9ÄÃ9Ä9 Ä9Ä9ÄÃ7€RœAœC<œC<œCAœƒBœAœA|ƒBœCAœC<œAœC<€A|A€Ï7œƒBœC<œC<œAœCAœAœJœƒB|A|C<œƒBœC<œƒB(…œC<œC<œCAœC<œC<€A€BœAœC<œAœC<œCA€J|A€AœAœƒBœCAœA|Ã9ÄÃ9ÄÃ9ÄÃ9ÈÆ7(Å9Ä9 Ä9ÄÃ7ÄÃ9Ä9øÄøÄ9|Ã9Ä9 Ä7øÄÃ9þPÈ9Ä7œA|AœƒBœJœC<œAœJœƒBœƒBœAœC<œC<œÃ7œCAœCAœC<œAœCA€l|Ã9DÊ7ÄÃ9ÄÃ9ÄøÄ9 Ä9Ä9Ä7ÄÃ9Ä7Ä9(Ä9Ä9Ä9(Å9øÄ9Ä7€OA|CA|AœCA|ƒB”C<”C<”ƒR¸C<€),$€;œC<€'Ä7{B>þ>>=äÃ?‰´Äw; @ß»w;€ãKþäS~å¿w<€)üõ€O9”ø 5ð)”ˆ'D:|Â7(Ä9Ä9|CAœC<œJœC<œC¤œþAœC<œC¤œƒRœC<œCAœC<œAœC<œC<œCA|C<œÃ7Ä9Ä9Ä9ă)Å9ÄÃ9ÄÃ9Ä7Ä7(Å9ÄÃ9Ä9Ä%žƒBœAœC<œÃ7Ä7Ä7ÄÃ9ÄøÄÃ9Ä9D¼xçž;÷M`Âxçâ}‹w.¡Áo ~KxŽb¼s þ¬g]úñƒ5Ø@“°F“ÐåvÎ8圓Î:í¼Ï:"åzèèœr¾ôj‚!…COÎÈ“xΉç¾蜄Ήçœx¾1(žs2èÎI蛄ΉçœxΉç›s2(žsâùF¡s(ú&žsâ9'žsâ1H¡s:'¡s(:G o:'¡sâ1H sâ9'žoÎè¾IèŠÎ‰çŠÎèœx ŠçœŒÎ蜄Ή県¾5¡sâ1H¡s:G ƒ2úF sâ9'¡s:'ƒ:'¡oÎIèÎIè›x¾‰çœxΉçÎè…ÎÈ xþ Jè¾èœx¾9G o:G sú&¡sâ9'žo:G¡sâ9'žoâ9§/ƒâ9'žsúf²ŒÎ‰çœxΉçœxΉçœxΉ盄¾9G sâù朄 ŠÔxΉç›xÎèÎè ú&žsúF s(:'žoúæÎIèΉǠx¾‰çœx¾¡èœxΉçœxΉǠx¾9G¡sâ9'£sâ9'ƒ:G sâ9‡¢s:G sâ9'žo(:G s2ú&žsâ9'žoÎQ蜾ÎèΉçœxΉç›s22ˆ¢s:'¡s(:'žsúF o2H ƒ2:G¡þsúF sâ9G oâ9'žsâ9g2çˆÇ9òxœƒ"çˆÇ7âQŽs(ä“)‡@Üáb€;΃x"Oyê‡!òA|œ…ù0„‡ØðàÂ?Ú1€´#iÐ?Ñ­üð ðv àí@ôÁFt€C+ð?Ô1‚€ €‡8Ðvà ü`„žÀFP ì@ÙØF7¾ŽuЇAHñzăçÈ7Ρ mPƒ¤à'âqŽxâ 9‡@Î!s(äù†B¾!oäñ8‡@¾sÄã9GBÎsäßÈþ9âñ œ##çÈ9âqœ#ßHÈ9rŽŒ„"ßPˆArŽŒœ#ßèË9ò ƒ$ä 9G< s$ä ùFO@Eƒ(ä9‡@Îs$äñ8G<ÎP%ä9G<ΑƒÄãñ8‡@Αƒä 9G<Îoä=1EÎsÄãñ8GBΡsÄà 9‡@ s(äùF<΃$Ä 1ˆBΑsÄã9G<¾sÄãñ8Ç7rœãñ8G<¾s$ä1ˆ@Î!säñ8GFÎ!ƒä9G<Î!o$ä 9G<þÎsÄãßÈ9âa„œC çHÈ9âqŽ„œ#!‰Ç9âqŠœ£'߈Ç9&sŽžœã9‡@¾sÄà 9GF ƒÄã9‡@¾sÄã 9G<Î!oÄãù†@Î!o$äñ0EΑoÄãñ8‡@ÎñxœC!çHÈ9rŽo$äñ8‡@ÎsÄãñ8‡@ ’P)ä 1H< ¢sÄã 9G<¾s|à 9E "ƒ$äñ0HBÎsÄãñ8G<ÎsÄãñ8G<Î!R<ˆ‡;â‰8Ɖü Ä;v¢N\¸ï0?:þÔ˜ƒCá`À?ØA€°æ; ð|ÀÿàG2ðvà쀊Ùa€àCæàP8¢-\àðà; ~ #úà: Ðv àÁYÖò–¹ü¡„âôHÈ7ÎA¨oP#¤à'rOÄãñøF<ΑsäçÈ9r$!çÈ9âqŠœC!çÈ9(rŽ„œ#!çˆÇ9òžÄã1H<Αsä爇Abx|ã9EÎsäñøF<ÎsÄãñøF<¾o$Ä ùFBÎqésÄ ñ8G<ÎoÄãñøFBΑþs(ä9GBÎoÄã 9G<¾s(ä 9G< B‘o$ä9‡@Îo$!‰Ç92r$‰Ç9(rŽ„œ##çÈ9âaŠœC çPÈ9âq$!çHÈ9zrŽx|ãñ8Ç¥ãqœ#çÈ9ò Šœ#!ßHÈ9âa„œƒ"çÈ9òsPä ù†@ΑsÄà ùÆ9âqŽŒœC çÈ9ò |##çHÈ9rœ#çHÈ9âñ ƒäñ8G<΃|ã ùÆ9rœC ߈Ç9rŽ„|ãù†@ÎAòoÄ 9EÎ!þs$äñ8‡@ "sdäçÈ9âqŽxœ#çèÉ7âq’Ÿ#çPÈ9r’ ä 9‡@ ¢s$äñøF<Î!o(äñ8‡@ ’o¤'çÈ9òž”#åˆG9(âxb€;΃x¢Ë ò!òñŽ|¼#ïPÿ;á!v Cè?Ú1€´cüà;ðv CØaø¡àÚaøáúàØ!8¤ØaB„ úáØa8„àøàØaÂSPå$ ‚þÁOâÊÁ žA¨HCA!Î!ÎA ÎA!Î!!¾A ÎA Î!Î!!¾!!ÎA Î!Î! "þ B ÎA Î!Î!Î!Î!Î!ÎÁÏA Îáââá2â(TâáBò2â2â23! " B ¾!!ÎA Î"¾A ¾!ÎÁ B!Î!# B!Î!ÎA ¾áâá¾áââââáâáâ (ââÁ âTâáââáâââáâáâá âáââáââáìðâáâââÁ ¾A Î!ÎA!Î!! âââ2óâáâáâáâââáâáââáââTâáâþâÁ âââáâââá¾A! "! "Î!Î!Î!Î!Î! "#Î!!Î!ÎA ¾!!Î!Î!Î!ÎÁ‹ãá âââáìðâáâáâáâââ2â âââá¾!ÎA Î!Î!Î"Î!ÎA ¾A ¾A!Î"Î!!¾!@Å‹Ï!!ÎA "¾!Î!#Î!!Î!!ÎA! ‚"¾A!@…" "!Î!! "Î!#¾A ÎA B!Î!Î!!Î!!Î!Î!Î!Î!Î!Î!Î!ÎA<á þAâÁ ÞE0lýÀÀCØa4A  øáØaþ CØa8NàD€ Úaþ€Cú¡€Cðá  è`þÄôá 8Ä‚€àø€CØaþ³[»ñ$!HáüäâÁ Ê¡…‚8ÄÂ<'ðœ@ŠñÎÅ;‡2Þ¹xçþ¾9<çðœÀsÏÅ;çðœÀsÏ9<ïœÃsßR<÷Mà9”çžsøMà·xßžûæðœÃoñÎ9<÷ðœÀ­=Ï <¢ÀsÏÅ;÷Íá¹oç~ëIñ!ÅxçâsH1Þ·xçž‹÷M Eçâ}øMà¹xçž‹G1ÅxçP~søMâ¹xßžxNà9~sx.Þ¹oñÎÅûÖóÜ·xçžsxÎá7ç~{xNâ9çâQŒwN Eçž‹÷-Þ9çž‹wî›ÀsñÎ ü&ð\¼sEE}#Ð9ßô$Ð7Ï9óM<çôC ´Uþ<çÄsN<çÄsN<çÄsN<çÄsޤ<‰ñ¸ã'ÿä¨ãŽ<öèã9òÓÅDÙHúÈO’<âà ?ø`€“TViå•Xf©å–\ÉC¤üCCßœSÎ7ßPCM0¤äè‰@çxrN<çÄsJ}sŽDßÄsŽ@ßœãÐ9ñPäÐ9}Ï9QÏ9}Ï9}Ï9#E#Ð7ãÐ9ñœ#Ð7çÄsN<ß tŽ@[ tŽ@ç8tN<ç8èÐ9ñ|sN<çtŽCç8tN<çtŽ@ç8tŽDçÄsN<9tN<çtŽ@ç<ôM<çô@çÄCÑCçtþŽ@ßtŽ@ßP$Ð9ñPÔÓ9ñ|Ï7ñœEñœÏ9#Ñ9ñœ#Ð9ñ|ãÐ9ñ|Ï9ñœÏ9#Ð9ñœ#Ð7çô@çÄóÍCßtŽCçÄC‘Dß8D‘Dçô JçôM<çÄsN<ç8tŽ@=tN<ç<ô@ßÄsŽ@ç8tŽ@ßœóÐ7}Ï9óÐ7m%Ð9ñœ#Ð9ñ|#Ñ7ñœÏ9Ï9ñ|#Ð9ñœãÐ9QÏ9º tÎCçÄsŽ@ÅsN<ç8tŽC tŽCçÄsŽCçÄsNOçÄC‘@ßœ#Ð9£ëVñœÏ9ñœ#Ð9}Ï9ñœþ#Ð9ãE#Ð9Ï9ñœ#EÏ9#Ñ9ñ|sÎCçÄC‘@ÅóM<çÄó@çH´•@çD‘@ç8TŽDßôTN<å8äž, îœEžté??üð_—úQ H`5Ð?xÄ:ðŒ Šâô Ç9âqŽr|ãÚÐ5xAŠy‚"ñðD<ÎáoÄãñøJÎás8ä9G<¾!Š8ä9G<Î!sä9G<Îs ä9ÇCÎs8ä9‡C("sÄãû†@¾!‘sÄãù†@¾sÄã9G<Î!þo8äñ8‡C¾!säñ8ÇC¾!sÄã¡ÈCÎsäñ8‡@ÎáŠHä9ÇCÎsÄã9‡C¾!säñøF<ÎsÄã9‡@Î!s8äßÈ9¾ásÄã9Ç7rœ#çˆÇ9rއœã!çˆÇ9rŽxœ#çˆÇ9òxœã!çˆÇ9rœC"qÈVÎ!o8ä9G<έÄã9G<ÎsÄãßÈ9âqŽxœ#ß@É9âqœC çˆÇ9rœÃ!‰Ç9âqŽxœã!‰Ç9$rŽx|#çˆÇ9r‡þPä!çœDÎ!s|#çˆÇ9$ò |C ç@ÉVâñž|#çpÈ9$rŽxœ#çˆÇ9B|Ã!çEâq|ã!çEB‘xœÃ!ßÈ7ò‡P$çˆÇ9ò œã!çpÈ9B‘xœÃAçxÈ7rC çˆÇ9âqœC"çÈ9B‘x|C çpÈ9âqŽxœ#ç(Ç9âqŽxœ#çˆÇ9D@Šg@Bñp‡C<1ÁÚÚ€¶Í­nwË[ 9„ÿÈ CÎ&4Q#žÈ‘'rO<ä9G<Î!s<äçpÈ7âqœÃ!ß@É9âqŽÀQþD ç@É9$rŽxœ#çÈ9r‡œ#ß8‡@ÎáŠä9‡C¾A‘xœC [‰Ç9rŽxœ#çÈ9r”PÄAçpÈ9rœ#éÉ9dzPD È9âqŽx|C ßpÈ9r”œC çÈ9r‰PD¦çˆÇ9B‘‡œ#È9ò ‰œ#ßpÈ9âñxœC çxÈ9âq‡œÃ!çpÈ9rœ#çxÈ7$òsüÃ@ÄB<ÄD\ÄF|ÄHœÄJ¼ÄLÜÄNüÄJ\¨A üAqßpÅE Á@ 9â á qqñpñð Açðßpqñpñ ñ ñ ñ sqAñ ñpñpñ ç çðçç çàáççð!ß lìáß ß +ßçàßàßðç çþ l|ñp(qñ ñ ñpñpqqqñð qñð ñpqñ qñ ñ A2õ qqñpAAñpqñð Bß ç çàßÐçßçÐçàç çð ñpñð ñpñð ñ qñpñpqñ ñð qñ çç çà ç çÐç çßç çàçðç ß ç ß çßpñ@ñ ñð ñ ñ ñpñpAñð çßpqqñpþñpñ çç ß ççç ç€ç !ç ßpñpqñpñpñ ñð qqqqñpqñpAq(Añpñ ¡+ßàßàßðßpñ ñpñ@(ñ ñpqñ ççàçßçßÐqç çç åß å +îž° îpñ@žðý ©Ö­¨…`…`…`…`…`¨â=Þä]Þæ}ÞèÞê½ÞìÝÞîýÞðßòíÞ;ìA ÿ@ñpñPñð !¤ ÔÀþ ¤#žçàžð qqqqßçàßðçlççççççð ñ@ß çàç !çç€çàççç çðçð qqñ@ñpñ Aqqñpñpñ ñpñpAñpñpñpñpß çàçðçàßçàçßçPgç ççççðl,ß ç ç çàçß ßç çßà ç çà ççß@ñ qþqñ qqßßàçàçç ßàççàç çß çßà çàç ççà!ßç çßpñð qßñ ñ qqqqß !ñç çð qqqñpñpñpqñpAqqqñpñpqñp(qqqñ ñpqqñpñpqq=qñpñð ñð ñ ñ qñpqñpñpñpñpñð ºò ñpqþAqñpñ@ñpqñÀÆñ@ñpqqqñ ñpñpñpñð ñpñ@ñ qqñpñÀÆñ@ßçð qqñpñpñpñpñpñpñpñpñpñpñp"@ Ï îàž#P|Ä%Püðüðüðü …û¾ÿûÀüÂ?üÄφêA ÿAAÅ¥&Áà 9â á ç€ç çð (qqñ qq=qqqñ çç€çççç ççàçþq.ÞÀxçž‹÷íA†çžƒïÃßB¤ï[¼sÏe<ïÃs¿Ë8â¹ßž‹w.Þ¹xç~øí\¼oç(žcxŽ"D‚çâ#xnà9†ßâA1Äxçâ‹1Þ¹xß(ž‹÷íÜÀo Ï\Ið\¼sÏÅ;ïÜÀsñÎ þá ‚|‚ çß9rŽ”@$‰Ç9þrŽxœ#+‰Ç9âqŽx|#ç È9‘œc ß È9òsä9CÎA‘säˆø†x8‡o`ˆ`ˆsˆs ˆs`ˆsˆˆˆˆo€ˆ8‡x8‡x8‚8‡x8‡8‚€ˆx€ˆx8‡x€ˆoˆ‡•p¶sˆˆˆˆ‡sˆ‡sˆ‡oˆ‡sˆsˆs ˆoˆo ˆsˆ‡sø‚8‡x8‚8‡8‡Œ8‡xø†ð9‡€ˆxø†x8‚€ˆ€ˆx8‡o ˆsˆ‡sȈo ˆs ˆs ˆsˆ‡s ˆsˆ‡oH‰s ˆoŸsˆ ˆs ˆ ˆoˆ‡søþ‚€ˆoˆo`ˆˆ‡sˆ‡søð9‡oˆˆˆs ˆsˆ‡sH‰sˆ‡sˆˆ`ˆs ˆˆˆsˆ‡s ˆsˆsˆsˆ‡sˆsˆ‡s ˆsˆsˆ‡oˆsˆoˆs ˆs`ˆsˆ‡sˆ‡s ˆs ˆs ˆsˆsŸ•ˆ‡sŸsˆÈˆˆ‡sˆ‡sˆ‡sø†x8‚ø†8‡x8‡xø†sˆoˆ`ˆsˆ‡sˆsˆoˆsˆˆˆsˆsˆ‡sø†x€†ø†xø†x8‡x8‚8‡oˆˆˆˆ`ˆoH‰s ˆsˆˆˆ‡sˆˆø‚8‡€ˆ8‚8‡x8þ‡r8‡x8‡x8‡x8‡x8‡x8‡x8 …g€ˆw Op™`(è€`(è€`(è€`(è€`(è€`à“(g”0°…|}ȇ}ÈC(“ø‡2é€2é€2édb2aè(“X§ø‡2é€2é€2é€2é€2é€2éd*è‡2é(`è(`è(`è(`è(`è(`è(`è(`è(`è(`þè(`è(`è(`è(`è(`è(`è(`è(`è(`è(`è(`è(`è(`è(`è(`è(`è(“u*‚ …™x8‡xÈ«rÈ+jRpO8‡x(Oˆ‡r ˆsˆ‡o8‡xø†8‡x8‚€ˆo8ð9‡ð9‡x8‡x8‡x8‡ø†sˆ‡sȈsˆ‡sˆ‡sˆ‡sˆsˆ‡sˆ‡•ˆ‡sˆþsˆ‡sˆˆ‡o8‡Œ8†€ˆ8‡Œø‚€ˆø†8‡x€ :‚ø†x8†ø†sŸsˆsŸs`ˆoˆsˆˆˆ‡sˆ‡oŸs`ˆˆˆˆ‡sˆsˆsˆsˆoˆ‡sˆ‡s ˆˆ‡sˆˆsˆsˆ‡s ˆsˆˆø†s`ˆs`ˆˆ‡sˆ‡oˆsȈs ˆsˆ‡•ø†8‡x8‚ø‚€‚8†8‡x8‚ø†s ˆsˆ‡sˆ‡oˆsˆ‡sˆs ˆoˆo€ˆ8‚8‡x8†ø‚8‡x8‡8‚8‚8‡x8‡8‡xø†8‚8‚€ˆx8þ‚8‡x€ˆø‚8‚8‡oˆ`ˆoˆˆ‡sˆsŸo ˆs ˆoˆoˆ‡s ˆs ˆsˆ‡sˆ‡sˆ‡sˆ‡s ˆsøŠ€‚ø‚8‚8‡8‡x8‡x8‡x8‚8‡xX‰x€ˆo8‡Œø†x8‡x8‡8‡Œ8‡8‡x8‡8†€‚8Šø†x8‚8†8‚8‡8ð9‡8‚8‡8‚8‡xø†8Š8‡x8‡xX‰x8‡x8‡8‡x8†8‡x8‚€‚8Š8‡xø†*‡x(‚pð„e€p‡sˆˆð„Ø((((þ((((((((ø†·Ì‡|õ]_C(˜~H}Ø[X§ð‹{{(؇˜{(à_؇wðƒ{°¸uêqȃu2‡XàXzˆ‡9Hƒwˆ/`Ø‹+((((((((((((((((((((((((((((((((((((((((((((((þ((((((“uê>‰ˆ … ‚(‡x8‡oxm ^ ~øOˆ‡sˆOˆ‡sˆˆˆ‡sˆsˆ‡oˆsˆ‡oˆ‡s`ˆoˆoˆs ˆsˆ‡sˆ‡sø†”8‡8†8‡xø†x8‡Œ8‡x8 :‡8‡x8†8‡8‡x8‡o`ˆs`ˆsˆ‡oˆ‡sø†x€ˆx8Š€ˆ8‚8‡xøˆˆ‡o8Š8‚8‡8†8‡xøˆÈˆsˆ‡oˆs`ˆsˆˆˆ‡sˆsˆˆˆoˆ‡sø†8‡x8‡”8‡oˆ‡sˆsˆsˆ‡s ˆ`ˆo þˆo ˆsˆ‡oˆsˆsȈsˆ‡sø†ø†x8Š8ð9‡8‡Œ€ˆ8‡xø†€ˆx8‡ø†øŠø†8‚8‡x8‡x ¡x8‡8†€ðˆx8‡€ˆx8‡8‡x8‡x8‡8‡o ˆsˆsˆ‡o ˆˆs`ˆo ˆsˆsH‰sˆsˆoˆ`ˆoˆˆH‰oˆoˆsø†8†ø†x8‡x8‡x€‚ø†8‡8Š8‡€ˆx8‡x8‡o`ˆsˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡oˆo ˆsˆ‡op¶oˆ‡sˆ•H‰sˆ‡sˆ‡s`ˆsˆˆˆ‡oþˆ‡s`ˆsˆsˆ‡oˆˆsˆoˆ‡sˆsȈoˆ‡sˆsˆ‡sˆˆsø†x8‡8‚8Š8‚ø‚ø†øð9‡8‡x8†8‚8‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡x8 …g€ˆw Op™`X§X§X§X§X§X§X§X§X§X§`>`u€[Ðwpß|0„`à‡a`°Z`à‡2að˜`ø‡uÒ…l °†~`db!ðp…k(ø‡Xˆ5ð‡XˆPP‡˜þ@¦u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*u*uòRðO …S'…S'…S'…S'…S'…S'…S'…S'…S'…S'…S'…S'…S'…S'…S'…S'…S'…S'…S'…S'…S'…S'…S'…S'…S'…S'…S'…S'…SwO …S'R÷sW÷u÷„u'OP÷S'q_wOp÷{?wOÀwRðRwRðRðuwRðu÷„s?õs÷u÷S'O …qwwO …S'O …S_wO O [wRðþw·OÀwO …S_wO8÷S'OÀwq_wO OX÷S'OX÷‡ˆs`ˆoˆ‡oˆ‡s ˆo ˆ ˆsˆ‡o8Š8‡8Š8‡8‡8‡x8‡xø†Œ8‡x8‚€†8‡x8‡x€ˆ8‡8‡8‚8Šø†x8‡8‡x€ˆo8‚8‡ø†Œ8‚8‡x8‡Œ€ˆxø†sˆˆˆ‡sˆ‡• ˆsè oˆsˆ‡sˆˆo8‡x8ð9ð9‡8‡øŠ€ˆx8‡Œø†x8‡x8†8‡x8‡x8‡xøˆˆ‡s`ˆs`ˆsˆ‡o8Šø†€ˆx8‡x€ˆ€ˆþ8‡8‡8‡x8‡8‡8‡x8‡x8‡x8‚8Š8‡”8‡8‚8‚ø†x8‚8‡x8‡x8‚8‡ø†sˆo8‡8‡x8‚ˆoñÆ;ïÛÀs ~;·pà¹ç~‹wnà¹ç~‹w.Þ¹çž;÷-Þ¹xçžøà¹x%Ï=Œwnๅßž‹wîá¹xç╌w.޹ߖ«9°\Éxçâsú`¹šîâ µ wçâ•ôô¯‹,J”`Á–[lY°eÁ–[lY°eÁ–Û,JØú#â­wùÞ1~GˆíŒ4J°`â¯Ä X”˜ÑþÅ‹~%fì+ÁÂ,˜Ü+Áâ5lWÙøÑ`1ã_Œ3þ±(1£‹û`³èP‚[lY°eÁ–[lY°eÁ–[lY°eÁ–[lY°eÁ–[lY°õôï¿÷üÞó{Ïï=¿÷üÞó{Ïï=?ïñó?ïñó?ïñó?ïñó?ïñó?ïñó?ïñó?ïñó?ïñó?ïñó?ïñó?ï¹øâ{üð£‹üü##?4ê¸#=úø#A 9$‘EùŒ'ñœOIñœÏ9}3Ð9ñ|3Ð9Ï93Ð9ñ|3PI }3Ð9óÐ9ñœ3Ð7 óþÐ9ß8õÍ@ß ô Aç TR<çÄsAçÔtN<ß tN<ç ô AçtAç|³Ð93Ð9NÏ7³Ð7ñ”DÐ953Ð9ñ|CPI •Ï9ñœóÍBçÄsN<%9Ï9ßÄSÒ@çÄóM<ß,tN<ç”q”@°@ ¼F ¼F¼F ¼F ¼F¼F ¼F ¼F¼F ¼F ¼F¼F ¼F ¼F¼F ¼F ¼F–)üƒ;€&Þæ­Þî-ß>Ä9Læ9ÄCQÔ9¸C!ÃS¹EAœC!¹ƒüÃ@¸ÃC¸Cß.Ä9 „;<Ô9,„;Ä9<„;Äþ9”Ã@¸ÃC¸C<¸C<œƒ;ÄÃ9DEC!C-Ä9¸A¸ÃB¸C!Qƒ'ÄCI,Ä9Ä9ÄÃ7ÄÃ9,Ä9Ò9Ä9ÄÃ9 Ä9 Ä7ÄCIÄÃ9Ä9Ò9ÄÃ7ÄÃ9,Ä9|ÃBœÃ7ÄÃ7<Ä9<Ä9RIÄÃ9|AœC<”Ä@œC<œC<œA”Ä@œAœC<|C<œAœÃBœC<œÃ@œÃCœAœC<|Ã@œAœÃ@œÃBœÃB|Ã@œC<œÃ@|ÃB|A”D<œC<œÃCœA”Ä7úôs ÏtWaDî#F˜0âw„åF¼X®g9óÒ#r?w±\¼ˆÄ;wð\¼sñžñäœxÎAè„αè›xÎ9("„"Šçœx¾‰'¢xÎ9è„"BèœxΉ眃ÎA蜃Î9蜃¾‰'¢xΉ'"„"BèœxþÎ9蜋Ήç›sâ9ç s¾9èœxΉ眃¾‰ç‹"B蛄ΉçœxÎ9蜃ÎAè›s:¡oú&žsú&žsŠè s:Ç¢oÎAèœxΉç„Ήçã¾A蜃Î9蛄"ŠçœxÎAèœx¾‰çœ„Î9(¢„Ήç›x"BèœxΉçœxΉç›sâ9Ǹs¤:'žoú¡s:ç ˆâ9'žoâ9¡s:'žs,:'¡sâ9'žoâ9Ç¢s:ç¢sâù朋"ê霄Ή'¢xιèœxÎ9蜄ΉçœxÎ9("„Î9蛈Ή眃¾‘ꛃÎ9ˆ^„¾Aèþ„"BèœxΉç›s¤ú會èç›xÎA蜞ʉ§œxÊAÈHYÜ9Lj<Á«:`¡J`¡ôz¬ƒÇ:`A¯Ç:x¬Jx¬ô²Ì¶Xðë±:ØÌ/Ëë`/ôz¬ƒ½XЋ½XØ‹…,+…6ë`¯ÇJxL¯Ç:x¬ôz¬ƒÇ:`A¯Ç:x¬ôz¬ƒÇ:`A¯Ç:x¬ƒÇôê ô"埋 Ü¢jXƒ¢@òÍ9ïü"w"?‡ósÊÙüÈÏñÜ¢s:Gu„Î)çõ×ÏÙüœƒÊ‰§„α¨œxʉçœrâ)òr:§œxΉ§þœÈϹèœxÊIèœrÊ*ç jH±(¢ƒÎ9(¢ƒÎA蜄αè„Ή'¢xΉç„ιè„Î9è„Îs ä 9G<Îs|!ß8È9âqŽƒ|#ç8È9rŽxÐ !çøÆAÎsÄãùF<"‚sÄãñ8ÇAΑoÄã9Ç7òƒœ#ç@È7âqŽxœã ß@HDòƒœ#ß8È9rŽƒ|#!çøBÎñƒ|#ß8HDâqŽx|!¹È9âqŽƒœã çˆÇ9ò „œã ç8È9„|#rç8È9rŽo $"9G<Îsþä9G<"s|#çˆÇ7.rŽƒœ!ç€Ü7rŽƒ|#çˆÇ9‘ƒœ#ß@È9òƒœ#ç@È9âA¯ƒ|#çøF<ΑsDîß8È9òƒ|#çHÈ9âqŽ„œ!ç€Ü9â‘oäñ ×9r„œ#ç8È7rŽxœ#!çˆÇ9âqŽƒœ#çˆGDâqŽƒD$!ç@È9rŽxœ#çˆÇ9âqŽxœ#çˆÇ9D@Šg@BñpB<—° ,Ø Jð˜Åïœ@„¿ ü&ðÜÉsñÎÈ9´|Žx9Éß8È9€üƒœ#ç8H‘ãQäxù ßHò7€üƒ|CËß8H‘rŽx|ãÊçøF<¾oÄãñ8ÇAŠ|"ä9G’‹¬çx9E>Ï"_ù@>G<Αäs|#çöAÎäsÄãñ8G<¾äoäW>ÇAÎqås|ã ߈Ç9âqŽxœ#É߈Ç9¾q #ç¨öAÎqås¹þÈß8È9r`ù EþÆAÎqsÄã@.ò7âqŽxœ#Éß8È9âqŽxœ#ÉßHò7®\äxœ#çˆÇ7âqŽxœã çè7±rŽoÄãñ8G<¾‘äs¤Èñ8Ç7€|Ž~ŸCÏçˆÇ9âqŽxœ#çˆÇ9âqŽxœ#çˆÇ9Dà‰g@Bñp=‘U·á³˜Ï:ñQ0h'è0€‹hB p+$µø‡&$Ðaÿà‡8 c±AØ1€ðƒ¸H;ðv í£w)þrù"ýÈH?.ÒÒk¤VéUú{ôãmþýÀýèûÑ{àS¥éðûq‘x”ÈÔ E<ÎqoÈç8È9’|Ž+#ç¸ò9âQ䃜#E>È9rŽxœã ßÐó9âqŽ$Ÿ#ÄŽÇ9âq ãI>¿‘äsˆ‡o8‡ƒø ;‡x8=û†x8‡xø-;‡x8 ;‡x8‡x(2 û†~;‡x8‡xø†x8‡x8‡x8‡ƒ8‡ƒø†x8‡x ¶ƒ(²$;‡oH²sˆ‡sˆ‡sˆ‡s¸²"«¶oˆ‡s²oˆ‡s8ˆo¶o8‡$;‡x8‡+; ;‡ƒø†ƒ8‡ƒ8‡o8‡ƒø†ƒ8‡x8‡x8 ;‡ƒ8 +²þƒ8‡xø†s8ˆ";ˆsˆ‡s²sˆ‡sH²s8ˆo ¶$;‡x(²ƒ8‡x8‡ƒø†sˆ‡sˆ‡sH²o8‡x8-;‡ƒø†ƒ8‡$; ;‡$+²x(²x8‡ƒ8‡o²sˆ‡s²sˆ‡s²o²sˆ‡sˆ‡s8ˆ"‹‡sˆ‡oˆ‡oг"²sH²sˆ‡oˆ‡s8ˆsвsH²o²o¨¶sˆ‡o¸2b;ˆs²sˆ‡o²sˆ‡oгrˆ‡rˆ‡rH2 …e€p‡sˆ‡"ó„àó0ø(xÀ‘ƒŒà‡‹è‡~ø~À~à~È‹àŒà‡‹àŽàÇàŒàŒà‡‹àþ‡x¬È … ¶rH²"2w8wˆ¼É»8ˆs¸‹x8‡»ˆ‡s É»8ˆsÐ3¼²sˆ‡";w8w8w6w8wˆ‡»8wˆw8ˆ‘Ô²sˆ‡s¸²sÀ‹ƒ8wè·x8‡‘Ô³»ˆ‡sв"sÉx Ƀ(2 s=s‡x¸‹x8 s‡$;‡x8‡x8‡xÉxp‡xp‡xp‡xp‡ƒÉxp‡ƒp +2¼8ˆsˆw¸2wÐ2—t‡xp‡x(²ƒp ;wˆw8¼8ˆr8ˆr8ˆg  ;=+²x8‡ƒ8‡ƒ8‡o²o8ˆsø†xø†$û-û†ƒø†x8‡xþ8‡x8‡x8‡oˆ‡sˆ‡sH²sø†ƒ8 ;‡x8‡xø†ƒ8‡ƒ8‡o8ˆo8ˆsˆb‹‡sH²sˆ‡sгsø†ƒ(²ƒ8‡x8‡oˆ‡"²sø†ƒ8‡x8 ;‡ƒø†ƒ8‡oˆ‡s8ˆsˆ‡s8ˆsвs²"£Jb‹‡sˆ‡sˆ‡s²s¸²sвsˆ‡oˆ‡oˆ‡sˆ‡s²sˆ‡sˆ‡"‹‡sø†x8 ; ;‡$û†x8‡x(²ƒ8‡$;‡x8‡ƒ8‡x8 #6-; ;‡x(2 û†ƒ8=û ;‡x8‡$û†$;‡$;‡x8`; ; ; +²+;‡ƒ(²ƒ(²þxø†ƒ8‡x8‡+û†ƒ8=+²x8‡ƒ8‡+; +²x8‡x8‡oˆ‡sˆ‡sˆ‡s²sˆ‡s8ˆs8ˆsø†xø=;‡x(²ƒ(²ƒ8 û†x8 +²ƒ ¶x8‡xø†x( ;‡ƒ8‡x8‡o8‡$+²xø†x8‡ƒ8‡x8 ;‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡x8 …g€ˆw2O°Hà‡.¸VlÍÖ. VníV™!…H²±H²rˆ‡sˆ‡r ¶x8‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡x(‡ƒ „b‹‡r8ˆs8þˆsˆ‡sˆ‡r8‡x(‡sˆ‡r8‡rˆ‡oˆ‡r8‡x(‡sˆ‡"‹‡r8‡x(²x8‡x(²x(‡xø†x8‡x8‡x8‡xø†x8‡x8‡x8‡x8‡x8‡x(‡x8‡r8‡oˆ‡±8‡x8‡x(²x(‡xø†xø†x ¶x8‡x(‡sˆ‡s8ˆsˆ‡sˆ‡"‹‡"‹bK²rˆ‡"‹‡rˆ‡s(‡x8‡x ¶ƒ8‡r8‡x(‡sH²sˆ‡"‹‡s8ˆrˆ‡sˆ‡sˆ‡"‹‡"‹‡sˆ‡sˆ‡r8‡x(2 #¶ƒ ¶x(‡x(²x(‡xø†x(‡sˆ‡sˆ‡sˆb;‡ƒ8‡x8‡x(‡sˆ‡sþˆ‡sˆ‡"²rˆ‡";ˆrˆ‡g …xø†x8‡ƒ8‡x8-û†ƒ8‡ƒ ¶ƒ8‡ƒ8‡ƒ8‡oˆ‡s8ˆs8ˆo²sH²sˆ‡sгsˆ‡s8ˆs¨¶sˆ‡s8ˆs8ˆs8ˆ"‹‡s¸²s8ˆsH²o8ˆsˆ‡o8ˆ"²s²sH²s²sвsˆ‡sˆ‡s²s8ˆs¸²sˆ‡sˆ‡sˆ‡s8ˆsˆ‡s8ˆsˆ‡s²s¨¶s²sвo8‡ƒø†ƒø†sˆ‡sˆ‡sˆ‡sˆ‡s8ˆo8ˆsH²sH²sˆ‡oˆ‡s²sˆ‡o8‡x8‡+;‡ƒø†"«¶"K²sˆ‡sˆ‡s8ˆo8ˆs8ˆþs²s8ˆsˆ‡"²sˆ‡s¸²sˆ‡sˆ‡sˆ‡o8ˆsгo8‡xø†sH²";ˆs²";ˆs²s8ˆo²o²sˆ‡sˆ‡s8ˆsˆ‡oˆ‡s¸²s8ˆo¸²sH²oˆ‡sˆ‡o8ª²s¸²";ˆs8ˆsˆ‡s8ˆo8‡xø†x8 ; ;‡ƒø†ƒ8‡ƒ(²ƒ(2 ;‡x8‡x8‡ƒ8 ;‡x8 ;-; ;‡x8‡xø-û†ƒ(=+‡xpð„e€p‡sˆ‡"óoíˆ\gw~gŽ …8ˆ"‹‡s(‡ƒ(²ƒ8‡$;‡x8‡xp‡x8‡x8 ; ; ;þ‡x8‡x8‡x(²x(²ƒ8‡x8 +2-;‡x8‡ƒ8‡ƒ8 ;‡x(²x8‡+;‡ƒ8‡ƒ8‡$;‡ƒ8-;‡x8 ;wH²s¸²sˆ‡sH²s8ˆsˆ‡sˆ‡sˆ‡s¸²s8ˆsH²sˆ‡s8ˆsвs8ˆ"2b‹‡s8ˆsH²s²s8ˆsˆ‡s¸²s8ˆr²sp ;‡ƒ8‡x8‡x8‡ƒ8‡$; ;‡$#¶ƒ(²x8‡+;‡j;‡x8‡j;‡x8‡x8‡ƒ(²ƒ Rˆ‡s²oˆ‡sˆ‡s8ˆsˆ‡s8ˆs8ˆs²";ˆsˆ‡"K²s²sˆb²s¸²"‹‡sø†ƒþ8‡ƒ8 ;‡oˆ‡o8ˆsˆ‡s¸²s8ˆsгo²s8ˆsˆ‡sˆ‡"‹‡s8ˆsгs8ˆsˆ‡o8ˆsˆ‡s8ˆo8ˆoH²sˆ‡";ˆs8ˆsˆ‡sˆ‡sгo8ˆsвsˆ‡sˆ‡sø†x8‡oвs8ˆ";ˆ"²"‹‡sH²sˆ‡s¸²"¶";ˆs²";ˆs8ˆs8ˆsˆ‡o²sH²s8ˆs8ˆoвo²o8ˆsˆ‡s¸²sˆ‡sˆ‡o¸²sˆ‡s²oˆ‡sø†$;‡x8‡x8‡$;‡x8‡x8‡ƒ8‡ƒ(²oгoг";ˆ"²s8ˆs¸²o8ˆs²"‹‡oH²sвþsˆ‡"‹‡sH²s8ˆsˆ‡s8ˆo²sø†ƒø-;‡ƒ8 +²ƒ8‡$û=;‡x(²ƒ8‡R>ˆ"‹‡sø†+;‡ƒø†sˆ‡o²sø†+;‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡ƒp‡sRxH€xp óx~uXõ …²s²r8ˆs8ˆs8w2w8‡ƒp‡xp‡s²sH2w Ês8ˆsвsˆ‡oˆ‡sH²s8ˆs8ˆsˆ‡sˆ‡sH²sˆ‡s²s8w8w8 +²x8‡x8‡x8‡ƒ8‡ƒ8 ;wˆ‡rˆ‡"‹‡s8ˆsˆ‡sˆ‡s¸²sˆþ‡sˆ‡sH²r8ˆs²s¨6w8‡++‡ƒ8=;‡++‡ƒ8‡ƒ8‡ƒ8‡x8‡x8‡$+²"²sp‡ƒp‡$s‡x8‡$+²@²sˆ‡"‹‡s8w8‡$+²$;‡x(‡x8‡x8 ;‡x8‡+;‡ƒXR²"»²o²"«ùƒ(²ƒ8‡x8‡x8‡$;‡ƒø†x8=; û†ƒ8‡ƒ8‡ƒ8-;‡$; ;‡ƒø†x8‡ƒ8‡ƒ8 ;‡$;‡$;‡x8‡o8‡++²++²x8‡x8‡xø†ƒ8-û ;‡ƒ8‡x8‡x8‡x8‡$û†ƒ8‡xø†s²";ˆsˆ‡"‹‡oˆ‡sþ²";ˆsH²sˆ‡sгs8ˆs²oˆ‡sø`;‡+û†x8 û†ƒ(²xø†x8‡ƒ8‡x(²xø†sˆ‡s8ˆoˆ‡o8ˆsˆ‡s²sˆ‡s8ˆo8ˆs8ˆs8ˆsˆ‡oˆ‡s8ˆsˆ‡s²sˆ‡sH²s8ˆo(²x8€ˆw.Þ¹xñÎ4x.Þ·sçâ‹w.Þ7ƒßÎ%üfð\¼sÏ<ï[<‡&<ï\<‡ñÆshðœÁs¿%¬Ã:(Ã"ìÃe°Ãü; À+:Ê‘Â?$D9Ä9Ä9,Ç9lÅ9Ä628„AÈœC5@„ AØ@ hC:ÈÀÄC5À¸Ã90$Å9Ä9Ä9$Å9lÅ9$Ä9(Ç9ÄC9ăCÄÃ9ÄÃ9ÄÃ9lÅ9$Ä9$Ä9ÄÃ9$Å9ÄÃ9þÄÃ9,Ç9ăC$„CÄÃ9$Ä9ÄC9,G9œƒA”ƒA”ƒAœÃrœCR”ƒrœƒAœC<œC<œƒA”C<¬LBœÃ¹œCB”ƒCœË9lÅ9ÄÃ9Ä9$Ä9$…C(‡3À8ÄÃ9$Ä9Dƒ À@ƒAœƒAœC<85‚rœƒA|C<œC<œÃV|ƒAœÃrœC<œƒAœCR|Ã9Ä9ÄÃ9ÄÃ9Ä7ÄÃ9ăCÄÃ9$Ä7„CÄÃ9Ä7ăCÄÃ9Ä9$Ä9ăCÄ9lÅ9„Ç7„CăCÄÃ9$Ä9$Ä7„CăCÄ9$Ä9lÅ9$Ä9Ä9ÄC®(Ç7lÅ9$Åþ9ÄÃÊ$Å9lÅ9(Ç9$Ä9l…C$…CÄÃ9ÄÃ9lÅ7$Ä9$Ä7$Ä9Ä9$Ä9Ä9$Ä9ÄÃ9ÄÃ7œCB8„AœC<œCR|ƒAœC<œC<œC<œCR8ÄV8DRœCR|CBœƒA8D<œC<œƒwœC<œC<8D<8„AœC<8ÄVœCBœC<8D<äJBœÃr8DBœC<œƒAœƒwœC<œC<œCB8DBœƒA|ƒA8„AœC<8D<|ÃrœÃrœC<8D<Ĺx~#HðÛÀsñÎxî`¼sñÎÅ;ïÁ†ñÎ lï\¼oÏ<7ð\D•ñÊ Aj$îÎÅþkèé_N;yöôÓU¨Pj˜0ùyPNtøíÄé_»=©Vµú­ jX»úlX±c«’ú¯a¼r+Ë ,7ð\¼rñÊ4€AwƔۀ›»s¿ÄëÚ@c ÎU ÀÍ»h~[yy`¹å–‹W.^9•å–#ø`¹xåžSùíà·åâ•»\ne¹xç–‹W.â¹xçâ5<øà·ƒßž+ïÁr*Ë].7°\¼rñÊÅ+w°\¹ˆáã•;WNe9Ìå–‹WŽ`¹xåâ5tAþñÎÅKGíš\(g s"ZÆ–†â9'žs:ç sâi(žþs:'žo:‡ oú&žs:g sâù† sVúf s:g sâ9g o:'žsâ9'žs:g sâù† †â9g oâi(žs:ç oâ9'žoâ9'žs0;ç s¾‰çœÎ‰èœˆ:'ž†âù朾‰ç›•¾èœxÎ蜈Ή眾!èœoâ9g sâ9‡ sâ9'ž†â9'ž†â9'žoâih s:'žsâ9g s¾9è‚"èœxÎè›Î‰ç‚¾9è›xΨ¡x¾‰èœˆŠç‚Î9蛾‰ç›x¾!èœxÎ蜾èœÎù&žo:ç²s¾èþ‚Îù³xÎ!è›Îùf sâ9g s":g †":'žs:󜾉èœÎ‰çœÎ‰çœx¾¨¡xЧ!‚Î蜾è›ÎQé‚Î蜈Ήè‚ΉçœxΉçœxΉçœxΉçœxΔg  wòä««xÅš¢>ÚšGxÈ ø¡Š®ê'è~¨B'~üQÇŒrá'è°Å›ì«ø!åŸÎ¨œsâù朸ã‰ûœâŽçœxèÞ&dΉ§wd!Àjp'žsœ žh¨ò 8§š:§šÊ9g sâùæœx¾9'žo*çœx¾þ(îx¾9'žs:'ž¸*g sâ9'ºã9'ž¸:'žsâù&ž¸ã9'žoâ9'žsâ‰;žo:g º *çœxÎ(îxèŽ'îΉè›x⨜s:'º:'žsâ)çœx¾èœxè>‡ å8G<θŃn9G9âqŽxÄm q‹Ç9ò¿x”#nñøÆ@Ês”ƒnñˆ[<Îr äqFžAe`#îˆGdÜñ‹Ä£)ÇA–AŠxœ#ßÈ7ÎAs ä9Ç@ÎsÄãñ8Aθ ä9Ç@ÎAsÄ#nñ8ÇAÎsä*9AþÎsäñøFD¾1ºE$nñ8Ç@Ρ’o ä9Ç@Îs ä‰Û@Îoœ#qÈ7âqŽxÄ-"ç8È9rŽœ#q‹Ç9âqŽƒÄm çˆGÜâqŽxÐ-çÈ9âqŽxœc çPÉ7.sŽxœ#"ç8È9âñs¬ä9G<Î1s¨ä9G<âvsÄãñ8G<Îs¨äùFÜâqŽxÄí9G<¾‘sÄãñ8G<ÎsÄ#nùA⦒sÄãñ8Ç@¾qŽ|#"çHÜrŽÄ-ß8ÇA¾7‚œC%ç8È7VrŽËœã tÝâþ·Ëœc çÈ9"rŽËœ#çˆÇ9rŽxœ#q‹È9rŽxœ#çˆÇ9âqŽxœ#åˆH9âQŽx”#åˆG9âxb€;θy¢l<©ƒ/v4_„A'è?vÂŽð£…Ð~üƒD,ð|œ0<þÁŽâÀt"  üÈ ?ŒÐðJHÀšÀ°ƒ£H@r¡‰4@9ÁG@€&ð#¬± +)þA¸ ä9AÊAsD$ B<ÎwØ îØ áŽxÈBç G A·TcqsG50þs”#çÈ9rŽxÐ-çˆÇ9rŽœ#q;È9rŽo¬ä9G97‚œ#çˆÈ9rŽxÄ-q;HÜrŽx|ƒ ç È9R‚œƒ ç HÜrŽœã çˆÇ9âq‚Ä­+ùAÎqs$nñ8Ç@Î1räñ8GDÎA¸Åãñ8ÇeÎA¸ÅãåˆÇ9œ!€q ¤ñpGÜâáŽ_à9G<ÎQŽxœƒžˆÈ9rŽ|C%çˆÇ7rŽxœ#ç8HÜâqŽˆ|ã2ß8G<ÎsÄ#nñ8Ç@¾¸äùAÎo ä9AÎñþxœƒ çPÉ9¾1sÄã9ÇAâoä9ÇJΑsÄãñøF<α’sDäùF<¾As¬äùÆ@Îqsäñ8G<ÎoÄãù†JÎAs ä‰[<Îo äñ8G<¾‘s|c ç8È9âq‚œ#çXÉ9âñ|#çˆÇ9òƒœã tûF<ΑsÄã9G<¾1sÄãùÆ@ÎAsÄã9G<Îo äñøAÎsÄã9Ç@Îs$n9Ç@Îs $nñˆ[<â6s $nñ8G<¾q™xÄM%ßÈ9òþÄí ߈Ç9rŽx|#߈Ç9rŽxœ#߈Ç7âqŽƒœã9Ç@â‘sÄ£‰[<ÎñsÄãñ8G<ÎsÄãñ8G<Î!R<ˆ‡;≫<þ^ðÅä)_y_xA'è?vÂŽüƒð>ð‘!ðƒH?r‚nüã2(?Ú!€4ðãø(€9r‚5 CüÈ ?’A€œú¸Ç†ðvà ü`„ðFP '+€?ð!@üáÿ?Hñsä9ÇJΑsäñXE$¡k˜aÈ(G5Ђqt¸ 2l ¸!þ®áΡ` Ρ "Îa Îa Î!"Î!Î ÎA%Î!¾!↠ΡÎ!"Î!"¾ Î!"â&Î!"Îa%Êáâ⌮Î!Êa Ê!Î!Îá Îa ÎÁèââáââáâ¡â¡þ‡ Î! Ïá â& ãáââáââ"nVâœAâf Î!¾0ÀÎa Îa Îa žâ!nââáâáâáâââTââáÎa%¾!nâáâáâáââáâáTâ"nâ"nâáâáâáþ"ââ’ðââ"nâáââââáâââââá"nââáâáâÎá Îa Î!Î Î ¾áâ"nââáââáââáâ!nââââ"n""nTââáâáÎa âf ¾!n’ðâáâáââ!n"nââáºðââá"âââ!nââânâ"âââáâáâ.ãâââáŒîââââââââþââáVâââáâáâ!nâáâââ"nââá"â"â"nâââáââáºÐèÜ!@€–ÀÎ!âÆÆo'øáÈÀò2Ó t€v¢àÚàáø!àÚôA'ø!'úàØôA'Œ`þ¡ÀÐøA'Â!øÀø¡ÐAþ¡@ø€þ àðÌþ!€2ÃS<ÿþ!Îá2Ê!Âc Î!Ê!Ê!Ê!Îa Î6 ÀváÜa@þ$`j`âáÔA à â¡ Î!ªaÎ!Ρ 3"¾á Êa ¾a Îá âæ Ê!¾a ¾a Î!Îá Êa Î Î!Ê!Ê!"¾a ¾! Ï¡â¡â¡âáââáâââ¢âá¾!Î!¾ÁèÊ¡ Ëa Ê!Ê!Êa Ê Ê!Îá ¾a ÎრÊA%¾a Âc ¾!Êa%âf œÎ!â&Ê!   Æ!Î Î žÁââ"âân"â¾!Î!"Îáââá"ââáâáŒîþVâ"nââáâáââ!nâáââ"nâ‚nâáâ""nâáâáâáTââ‚nâáâââá"nââáâá¾!Îa Î!¾ Î!Îa ¾ Î ¾ ¾á"âââ!nââáâ‚nânâáâáâáâáââáâ¾!Î!"Î Î ÎA%è&Î!¾!Î!¾ Î!Îa Ρ ¿!â&Î Î!¾a Îa ¾a Îa ¾a Î â&¾a Îá Î ¾!Îá2Îþ Î!¾!Î!â&¾á2âæâ¾a Î!Îa Îá2Î!¾a ¾ Î!â&èæâáââáââââáââá""nâ¾á è&¾a Î!Îá Îa Îá ¾ Î!Ê!Î!Î!Î!Î!Î!Î!Î!Î!Î!ÎA<á AâÁÂvxƒWx 3}¡&Ï€@'ÐAøa'Úaþ 'úàØaøA'Xá$À`ú tB€2¡þ€r‚’ø r* þàþø ø¡àØú!'Ð!„ׂ#‚Iá"<â&è&Î!Îa â&Î!â&ÜáâáâÆ!"£`"nTâÜ!Îa Üá"nâá"n¢â!nâáâ!nââ!nâáâáââânâáânâáâáâáânT"nâ!nââáân¢¾áâáââáâ!nâáââââáâ¡ââ‚nâáÎa Ê!Î!þç Î!Î!â&â&Î!Î!¾áâá‚nâþââáâáâáâ¡âáââáâ!nâáâ¡Î!Ρ¢ÎA%âfÊ!ÜáÊa Ê Êa žâââáââÎ!Îa Îa ¾!Î Îá Îa Î!"â&Î!¾a Îáâáâáâáâ.ãâVâ"n"ââ!nââââáâââá"nâá"n¾áââá"nŒîââáââáâáââáâáâ!nâáâ!nâ"nââáVâŒîVâââþâââ!nâáâ"ââáââ&"¾á Î!âf%Îá"nâáâ!nââáâáâ"nâá"nŒîTâââáââáÎ!Îa âf Î!Î!Î â&âæâââTââÎa ¾a Î!Î!Îa ¾ÁèÎ!Î!Î!Î!Îá ¾á âf Î!Îá ¾áâáVââ!n"ââá"âÎa ¾a Î!âf Î!Îa%¾ Ê!Ê!Ê!Êa "Ha Üáâ!nÊK·î\Rÿ.ž»È·o¼s~Ï],w.ž»sñܹ‹w.žâsÕœ‹w.Þ¹s~ÏñuÏßs~/–ó[îâ¹Ð}ÏÅ;wñ\¼sñÎÅ;ç÷ßsñÎñ=wñßsñÎ…>ïœßsÏ¡F}îb¹‹åâ};¯þœßs~¿ù=×÷\¼s|¿‹w™ï¹åÏõ½úòòËç.žã{®ïe¾çøž»x.ž»xç(Ï9ÅsÎEç\tNñ<ãI<åxN<çøÍ9ñ|Ï9~Ãà9Ãà7ñœÏ9 žÏ9Sà9 ^tÎEçÄsÎEçxÙEß\Ï7sÑ91xÎEß\ôM<çÄóÍEçÄsN<çÄóM<ç0xN‘EžsÑ7Ï9\ÆsÎEç\ôÍ91žÃà9ñœÏ9 žÃà91žsÑ9]Ï9]Ï9ñ||ñœÏ9ñ|sÑ7ç\tNç\tN‘çÄøMç\tN<—ÅsÎEçþÄsNç\tYçÄsN<ßÄß9 žsÑ7çÄsN<—øM<çÄsÙE—•yÑeñœsÑ9žSà9ñ|ã7žã7E~sÑ9ežÏ9\žsÑ9sÑ9ž|ñœsÑ9žsÑe ~sÑ7]Ïeñ\Ï9žÏ7sÑ9ñœ|Ãå9žÏ7ñœsÑ9ñ\vÑ9ñœÏ7ñœÏ9 ~sNŒå{‘; x² $¸sN<—yb]<Œ¤sI:‡’ÂFè tàÑÎÿ´3€&Ð?ÿ°3ÀFýh" Ð1@?ì ÀQ>õÐ?ÿ #4`‚5üh„þ Ð@ü°3€Fì  ;h„OЄ>7nøÍŸôS`9ñ”O9}Sà9åÄSÎEå0xN<—ÅsN<çÄsŽ;ž;*vÎEî\tN9sQ9ñ”sÑ7Æ–sÑ9ñ”O9ñ|Ï9 žSà9~sÑ7Ï7~O9 žSÎEç\ôÍEß\tNç|Sà9~Ï9}sQ9 žÏ9ñ\Ï9~sÑ9 žsÑ9ñœóÊß(S9.RŽx”#å¸È7ôxœã"åˆÇ9.rŽ]æ"çàÒ7.rŽx|ƒAå¸Èe.¢˜‹\æ"çpG<ÜQ sè¹L<žAŠ‹þ|#çˆÑ9 tŽ#—)Ð9âqŽo\ä9G<Îñxœ#çˆÇ9.ò"ƒAß`Ð9âq™]¦@ç¸È9.rŽ‹œãñ8ÇEÎQ sÄãñ8G<Îs0èñ8G<Îs|ã2úF<ÎsÄãçˆÇ9.2«"#çˆÇ9âqŽ‹\æ"çˆ|âqŽoÄã*‹Ç9âqŽxœãñ8GÎoé1:G‘ÎsÄã2:G<ÎsÄãúÆEÎQ s|#çˆÇ7 t™"]¦@߈Ç9âqŽ#ç(Ð9tŽ2}ƒA—‰Ç9ŒuŽxœãñ8Ç7âqŽþã"ç¸È9.rŽxœ#ç¸È7âqŽxœ£HçˆÇe.rŽo\äñ8ÇEÎq‘oéºÌEÎq‘o„²Lç¸È9 tŽxÀç"çˆÇ9.rŽã"ß(Ð9âqŽ‹œƒKç¸Èe¾oÄãñ8G<Îq‘së :GŒ¾sèñ8G<ÎsÄãñ8G<ÎsÄã" Å3 !€x¸£@ž8œGÔ0ƒ²šõ¬)HÁ\øñ~ðãní?6¸Õ#÷H2øA~xÄ­áG]ø!ÖÂv#¤øÇE.øÄ>¹L<ÎøÄã :GÎq‘sÄãñpÇ9âáøÄãþ;.rŽx”#å¸L<ÎøÄ£߈ÇeÊqŽxœ#åˆÇ9âqŽxœã"çˆG9.rŽ#ð‰Ç9.r™xœ#çˆÇ9âŸèñ¸L<ÎQ sèñ8G<.s\>ñ8G<às‘sx·@—ñn9âqŽ‹\Æ»çˆÇ7Îo\äñ˜ÕEÊsÄãñ¸L<ÎËÄã9G<ÎQ ËÄã*|.rŽû^&—)Ð9âqŽx|ãñ8‡wËq™ûžã"î8G<Îq‘rÄ£÷‡;žAŠsÄã9G<Îq‘sÄã:G<Îsè÷=G/rŽûž#þçˆÇ9âñËÄãñøF<Îq‘oœ#çØò9 tŽ Ÿã"çˆÇ9 ôsÄãñ8GÎsè9GÎQ sÄã2:ÇEÎq‘sÜ÷ñ8G<αeïžã"çò9.rŽx|ã"ð‰Ç9âqïž#çˆÇ9.rŽ#ç(Ð7 tŽNŸã"ç¸ï9.r™‹\æ"çˆÇ7.rŽ‹œ#çðî7.ò ï~ã"ç¸ï7ÎáÝo\fË—ùF<.sÄãÞ=G<Îs\ä2:ÇEÎq‘s\äAþF<ÎäsÄã÷=G<¾qŽûžã"çˆÇ9âqŽ‹|#çˆÇeâñxœã"—þéôeâñsÄãñø†w¿qŽxœ#ß8ÇE¾sèÞ=G<Îäsx÷29G<ÎáÝoœ#Èçðî9âqŽ‹|£@ç(Ð7.rŽ‹œã"çˆÇ9âqŽxœ#ç(Ð9 tŽx”ã¾å(P9 äb€;ÎËxâ°p?,? ‡ ð#îxÏ;ÞIÑsè:Ç–ÏÑéx¸£@йÈ9æqŽ‹œ#î8Ç}Ýq‘sÄãñ8G<ÎQ sÄã:G<.ãÝrèñ8G<Îq‘r\äñ8G<¾oÜ÷…?G/o\ä9G<ÎsÄãñ8GÏsx÷ñ8þGÎQ s\äÞ…O<.sx÷ñ8G<Îqø|cËç(Ð9¼{Žxœã"çˆÇeâqŽ‹œã¾çøF§Ïñxœ#ÈçPqÞuñpqáñpñPáçpçåçpßçåî@ ¤çßpßçp_—çp_ççð qñpñpqñpqñð Þuñp÷uñpq÷õ çßÐißççpçP ççPxÞu^X çP çpçP çà]ßpßçð ñpñpñpñpò Þõ qþñ qñprò qAvñpßpßà]ççpß—qçdçß°eçpçP ççpçççð qqrñpñ ñpqß°eßççP ç°eçp_çßà]ßP çpçp—q—qçpßççpçççççpççP çpçp_çpçp—qßP çßpñprqñpñpqrrò ÷u÷uñpò ñpqAvrßßpßpççà]þçð rñqq÷õ rrrñpñpñpñpñpñpñp"à Ï îP ž0R9•TY•Véкp•\Ù•^ù•rA ÿp^xñPrQçåpñPŠqñ ñpóçpçpîåçàá÷uaX ççß°eßpççpçP çp_çåççP çåà]çç˜qñp÷õ aø ò q^ø q÷uAvò ç—qåpªY çååp—qßpþÞuñpñð çÐi—á]çpçpçåçîçP çp—çççpÏ@ qqò ççp_çßp_çà]ççpçp_çpçà]çpßpçpçççpçç——ñ ñpñpñð ÷õ qñpñpò çßpñpñpñpñð ñpñð qßP ßp_ßP ßpñpq÷õ ñpÞuñpñ ñpò qñpò ñ ñpÞõ ñpñpÞuñpqñpñpñþpqñpqñpñpñpqq÷õ çdçà]——Q ßpñprrrñpñ ççßP çP ççççßprñð ççà…—Q çP çpçÐiçßçpßpßdçßpvñpñ qÞurÞuqqqAvñ ñð qñð ççç—q_çç——á]ççç°e—qçççà]çpßpçßP çà]ßpñð ñPRñPþRR¤° îpñpž–4[³UÉ6›³:[³¤ðò ñ ñpñPñpñPñPñPñpqñpñpñî—á]ŠáñpRñpñPñpRñPñ qñð ÷uò q[ñpñð ñpñpñprñð rßpçP çð rñPñpñpQñPñpñ ñpåpßåçç—çpçåçåpççpççd—ççp_ßp_ßpßpßpþå—á]çpçdçpç°eç—QñpQñPq[vqîpåpçP çP ççÔ@ rÞuqñ ñð rñpñpñpñpÞuÞuñpñpqßp_çà]çdçP çpçP ççpçpçpçp_çp—qçà]ßçp—ç—çP ççð ñpñpñpqñpÞuñprßP ç—çpçpççP ßpççP —qçp_ççà]çpœñpñprþqñprßçP ç—q_ç°eçp_—çp_ççpçpçpçßpßççßP çà…çpç—ñ ñpÞõ ñpqqrñpñpvñpñð ñpßpçP çð ñpAvñpñprñ ÷õ …÷ rqrqÞuò Þuqq[ö q÷uñpßçP çÐißP çßpç—ßpçP çççççççççç ¤ð ñàâ þ;Ò"=Ò$]Ò¤ðð—q—qçpç—qçP çdçp_çîñpñpáñpQñpñpñÞuñpñpqñqñð qAvÞuqrñp[vqñð ñpqñð ççP —çp——qçdåpñpò ñpqQñpñpñpñp÷uñpñ qññpñpñpñpR—çà]ðqçP ß—ççP çP ççåpåpñPçpçþîççÐiåP çÏà çpççpçà]—ççpççP çpßßpßpñð rqñ ——ßP ßpñp^x[vñpñpñð ÞuqqñpñprÞu÷uÞuñprÞuñpAö ^xÞuñpqñrrñpñpñð ñpqñpñ çpßpñ ñð ñ ÷õ rñð ñpñð qñpñpñpqqÞuqqñpñp÷õ ñp÷þuñp[vñp÷uñ ñpñpñpqrñprñ Avñpò ÷õ ñ ñpñp÷uÞuqñpqñpñpñpq÷õ rñð ççpßpßpñpqñ ñpÞuqñpÞuñpÞuñð ñ çßP çP —çP çpçdçßçßP çpçççP çP çP çP åp_åP åP îž° îpñpžà ¿ð ßðÿðñ?ñ_ñO ÿP çpþçP ßp—‘˜Šá]îåçpç°e—çççP ççP çpçpçà]ÕPñpÞU çççP åP çßP ßåçd—qçP çpçççP çP —Q çpçp_çP çpçp_—qççà]çà]çççpßdççdççpççà]çp_çð ñpRqq…wñPñpñpñpqÞuñPrqñPåpñpñpQB ¤ßpççpßpçpþçPxßP çpççà]ççð Þu[vqÞõ ñpqßpçpç—çdç—ñ pì…çP ççà]çà]ßpççð ñp/Þ¹sñ~xNàÂo Ï-„(ð\Ĉßž[x.Þ9Šçx.Þ¹…ßâømá9瞣ñ\¼sñ¾ ü&ðÄs ÏÅ;ï\¼sñ¾Å;‘`<‚ñÎÅ;'ðÄsÏÅ;ñ\Äs $ïÛÂsñÎÅ;÷-Þ¹xçâ‹wNà¹xçâ‹w.Þ9çbž[xná¹…ç¾Å#ïÜÂsÏÅ; þE‚ .<ñÜÂoñÎE<ïœÀs Æ;àÂsñÎA<'ð[¼sñ¾ <'ð\<‚çž‹)àÂs ÏÅ;ï\¼sñÎÅ;ï\¼sñΉ õ ’€xîzú^üxòåÍŸGŸ^ýzöíÝ¿‡ŸÔ¿àñÎE<¯\¼såâ+g¡sXÙ@L † ΨœxΩïœà¡àŒ(@›sâa$‚nþˆgâ!¨šâ9¢s¾¡è¾蜅Ήçˆ îˆÊYèˆÊ‰éˆ¾è›s:'žo"h¡sâù澉éœxÎè›xŠçœ…Ω¢o:G o:gþ¡oú&‚â9'žrΉ§œxÎ蜈ÎèœxÊ9g¡sâù&žs*g¡sâ9G€xΉçœxÊ9'žgH9g¡oâ9'žsâ9'¢sâ9G sâ9'žsâù&‚:'¸sb:G s:'žsâ9'žs"H ‚ú&žs:G o:G s:'žoΉ‡ xΉçœxΉçœoΉ‡ x¾‰çœoú月¾Yè›sâ9'¢s"ˆ¢súF ‚(:'žsúf¡oŠç›xΉçœxÎY舾!(žsâ9g!‚â9'žs:G ‚â9‡¢s":'žoú&žs:'žs:G sâ9þ¢o:g!‚:'‚:'&‚"h¡s :'žoè›x¾¡ˆ …Îè›…Î îŠÎ‰çœxÎèΉç›s"úF s(:'¢s:¢s"H s úf¡oÎèÎèœxÎèœxΉçœxÎè›xΉçœxÎèˆÎ¡è›ˆЇ xΉçÎèΉçœxΉçˆ¾9'žsâù&¢r"*"wâ”e Àsâ!È“øŽG>yå—g~y~Hù§œxʉçœrÎ)G sʨœ…Îèœxz;g•ö8‡3€&žr*§œxÎ)G râ9'žoâ9G râþùF<ÊsÄÃ8G<Îñ Ô"÷XArŽj`!ÕÀB¾s„ ñ8G<ÎsÄãñ8G<Îs¤7߀È7âqŽxœ"߈Ç9âqŽo,äñ8G<΂|#çˆÇ9¾sÄãñ8‡@Î!sÄãù†@΂”#߈G9rŽx$çˆÈ7ò |C çH9rŽxœã 9‡@Αsă 9‡@ÎQŽxœãñ8DÊ!s”#"È9R"@<ÎsäÔ E<Î!säñ8‡@¾!o,äßXÈ9rˆœC ߈þÇ9âqŽxœC çø†@"o,ä19DΑsPäñøFLÎsä9‡@¾!s,ä9G<ÎsDäñ8G<säñ8G<¾±sDä9G<Îsă 9G<΂,ä9G<²‚Ää ùF<Î&Š$çXÈ9rŽxœc!çArŽxd!ßÈ9rŽx|C çÈ7âAxœ#8ßÈ9brŽx|#çABx|#ßÈ9 r$È7âq$çXAâqŽxœc!çÈ7bBxœ#çXÈ9¾!sÄãùÆþ9âqœC çÈ9"rŠ|C çÈ9rŽ…œ#‰Ç7 r|c!ßXÈ9rŽ˜œ"çˆÇ7âAxœ#¡èB¾±sDäñ8Ç7âqŽˆœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#ç'ž Äà ñDó”»\æ6×¹å!Å?Îs@ä 9G<΂ä1yÜwœcˆG5`…H  çH7”PÔàñ¨Æñ \€ñ8‡@â·€Tœ£ àCΤ¢ˆ‡  Ô¢`ÅpbÄã9G<αsÄã)Ç9þ r”ƒ ñ8G<Îoäñ8‡@ÎsÄãñ8G<αs@äñ8E¾qŽxœ#"çXÈ9rˆœ#ç È9òxœ#çˆGoâAxô&çˆÇ9Bxœ"¡H9Îsä9‡@¾qŽxœ#ßXA"r”ãñ8ÇBÊrĘÈ9B RÄãõé@Î!sÄã 9GpÎ!s,ä9G<Î!să ñ8‡@ÎsÄã ùFD¾qŽ…|#ßÈ9âqŽxœ#߈È9ò œ#çXÈ9"rˆd!çˆÇ9 rˆœ#çˆÈ7þrŠœ#"ç€È7ÎsÄã9DÎsÄãñ8G<ÎoÄãñ8‡@ÎoÄãñøÆB¾AÑsÄãñ8G<¾‚,äñ8‡@ÎoÄã 9‡@ΑsÄã9G<¾qŽx|#çˆÇ9ò |#çÈ9bò ˆœ#çXÈ9òxD çXÈ9rŽ…œ#"߈È9âñ…œ#çÈ7âqˆœc!çˆÇ9Bˆ$çˆÈ9òx$çÈ9âqŽ…d!߈Ç9âqŽxœc!çXAâqˆœ#çˆÇ9rŽxœc!çˆÇ7ò |#çÈ9rþŽxœƒ"ß8G<΂Äãñ8‡@¾!sÄã9‡@Î!oP¤ )G<ÊAw¸¤X$àŽsă žxnò•¿|æ—‡ÿˆÇ9rŽxœ#çˆÇ9âqˆ”c!åXˆ;¶!d¸#爇,pŽj  ñH ‚@´@éÎQ <áô 8 ˆxX!ˆL(c €xˆ†€†j€s¨†‡s‡j€à†oÈ 8‡˜88ø†x8Š8‡xø†à8‡x ˆ8‡…8‡˜88‡x8ˆ8‡oˆ‡sˆ‚ˆ‚ˆ‡sø†…8‡… ˆx8‡þx8‡oˆ‡s ˆsˆsˆˆs ˆs€ˆsˆˆsø‚‚ˆsˆˆrXˆsˆsˆsˆsˆsˆ‡s€ˆsˆ‡rXˆsˆsXˆsˆ‡sˆ‡s€@€ˆxOˆsˆ‡sˆsˆsX‚ ˆo€ò‰‚ˆ‡sXˆsˆˆsˆ‰sˆoˆ‡sXˆoˆsˆ‡sø†x8‡… ˆxè 8‡…8‡x ˆo ˆsXˆsˆ‡oˆ‡sˆ‡oˆ‡o ˆsXˆs ˆs€ˆsˆsˆ‡sø†x8‡xè 8‡x8‡x8‡ˆ8‡oˆs ˆsˆs€ˆoˆˆs ˆsˆˆsˆ‡sˆ‡sˆ‡sˆ‚ˆ‡Þˆsˆþ‚ø†x88 ˆø†˜8‡x8‡…88‡x8‡xø8‡…888‡x8‡x8‡xøèx88‡x8ø8‡x8‡oXˆsˆ‡sˆˆsŽs€ˆsˆ‡sXˆs‚ˆsXˆÞˆsˆ‡sˆ‡sXˆs“sXˆÞˆˆsø†x8 ˆ…8‡x88‡x8‡x8ø†x 8ˆ8‡ú8‡o8‡˜8‡…ø†x8 ˆx8‡x ˆ…8‡x8‡˜8‡x8‡x8Š8‡x8‡x8‡x8‡…øø†…8ˆ ˆx8‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡xþ8 …g€ˆwXOhžE`ÍEh¾×„MçâRø‡ÐЇsXˆsˆ‡oˆø9‡x0†àwXc€q¨€øˆ‡nd gPw¨†‡sˆ‡h0Š`„8#°u(€sÀ„8‡j€x¨†ˆs¨†‡x8g0€x8‡xø†xø†à8‡xøøˆ8‡x8øˆ8‡à8ˆø(‡à8ˆ88‡x8‡…8‡ˆ8‡x8ø†à8ø ˆx8‡…8Šø†ˆ(‡…88‡ú8 ˆx88‡xø†x8‡ˆ8‡…8‡…8‡xø†sXˆþsˆ‡sˆ‡sXˆsˆsˆ‡sˆwDˆ‡r8‡x8‡xxR€ˆsˆo8‡˜8‡xø†sˆ‡sˆ‡sˆ‡s“oˆsˆ‡s€ˆsˆ‡o8ˆøˆ8‡xèx88‡x8‡x8‡098‡…88‡x88‡…8‡…8 ˆxø‚Xˆsˆ‡oˆ‡oˆ‡sˆsˆ‡sˆsˆˆsˆ‡s€ˆoˆ‡sˆ‡oˆ‡sˆ‡oˆ‡sˆˆoˆ‡sˆ‡sXˆsˆoˆ‡sˆ‡sˆsXˆsˆ‡oˆ‡sˆ‡sˆo8‡…8‡…88ˆø†ˆ8Šú†x8‡x8‡xø†sˆ‚ˆsXˆÞ€ˆs€þˆsˆsˆ‚Xˆsˆ ‚XˆsXˆs€ˆsˆ‡o ˆ8‡xø†xø ˆˆø†…88‡xø†xø†ˆø†…8‡x8‡x8‡xø†s‚ø†s­oXˆsˆo€ˆoXˆo€ˆs€ˆsˆ‰o8‡x8‡xø†x888‡x8‡x8‡x8‡x88‡x8‡…88ˆ8‡xøˆ8‡xøø†x8‡x88‡x8‡xø†ˆ88‡oˆÞXˆsˆ‚ˆsXˆoXˆrˆˆrˆ‡r€ð„e€p‡sˆ‚ðæY„u@\eX„÷`‡ˆÍÇ…\ñ …(‡x8‡x8‡oˆsþøø†x(‡x8‡x8‡xè p‡md8‡ÞsY €q¨†ˆsˆ†ˆ‡h€ àÝ h€s¨†Xˆj€x8 gnxh8‡¨…@‚x¨†8‡j€x8w¨†8wˆ‡j(€sˆ‡s‚ˆ‡sˆÞX‚ˆ‚Xˆsˆ‚ˆ‡o8‡ˆø†sˆ‡sˆ‡oˆo‚ˆsø‚ˆ‡sø ˆx88‡ú8‡x8‡x8‡… 8‡…8 Š8‡x8‡xø†x8‡x8‡…ø†xè øˆ8‡…ø†…8‡…(888‡x ˆ…(‡…8Š ˆ˜(‡þx8‡ˆ8‡@t‡sˆsˆg …oˆ‡sø†x8ˆ8‡xøø†x8ˆ8ˆø8‡oˆ‡sˆ‡Þˆoˆ‚ø888‡x ˆxø†à8‡…8‡…8‡… ˆx8‡xøˆ8‡x ˆx88‡xø†…8‡x8‡x 8‡…ø†x8ˆ ˆx88‡x8‡…ø8Š ˆ…8‡… 8‡x8‡x ˆ…8‡oXˆsˆ‡sˆ‡sˆ‡sˆoˆ‡oˆsˆsXˆs°M ˆx88‡…8‡x8‡oˆsˆsˆˆsX‚XˆoXˆsˆˆoˆ‡sˆsøŠ88‡à8‡x8þ‡x8 ˆ… ˆx8‡x88ˆ 8‡x8‡xø†…8‡x8 ˆx8ˆ8 ˆ… ˆx8‡˜88‡x ‡sˆsˆ‡ÞXˆo‚ˆ‡sXˆsˆsˆ‡sXˆsˆoXˆsˆ‡sX‚ø†x8‡ˆ øŠ8øøˆ8‡o ˆs€ˆsˆ‡sˆ‡sˆsˆ‚ˆ‰oˆsˆo€ˆs‚X‚ˆs ˆsˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sRxH€xp‡…ð„䄾v…P5P&èëÂñh†€¸6ø|€„¨ˆÜÊ^>~þ …8ˆ8‡…8‡x8‡x ˆ˜8‡x8‡xp‡ ×è€x¨€ˆph8wˆw8‡j€sˆj€x(ˆp‡ 8wƒ X€T8‡j€x¨†Xˆj€sˆm ˆ8‡ˆ 8 ˆˆ88‡xø†x ˆx8‡x ˆx8‡x  Š8‡˜(8‡x ˆoˆ‡oˆ‰o88(‡sø†à(‡sˆ‚Xˆsˆ‡sˆ‡sˆòˆsˆ‚ˆ‡sˆsˆ‚ˆ‡sˆoˆsˆ‡sˆsˆ‡sˆsXˆo8‡x8‡x((‚ˆ‡rXˆþsˆ‡rˆ‡sˆ‡sXˆr€w€sˆ‡sXˆrˆ‡g°…r€‚X‚ˆsˆsˆ‡sXˆsˆsXˆsˆs€ˆoˆˆsˆsˆsˆsXˆsˆ‡s°Íoˆ‡sˆ‡oˆsˆsˆoŽoˆsˆ‡s“sXˆsˆÞˆˆoXˆoˆ‚ˆˆo8‡xø†˜øˆø†x8‡ˆ8‡…8‡…8‡ˆ8‡x8‡x8‡x8‡x8‡… ˆ…8‡o‚ˆoˆoˆˆoXˆo8‡x8 ˆx ˆx8‡x8‡x88‡…88ø†ˆ8‡x8ø8‡x8ˆ ˆøø†sXˆs ˆoˆ‰oˆþˆsˆs€ˆsˆ‡sˆ‡oˆoˆ‡s€ˆo8‡… 8‡xø†ˆø†sˆ‡s€ˆsˆˆsˆ‡s€ˆsˆ‡Þˆˆo8ˆ888‡x8ø†x8‡…8‡…8‡x8øˆ ˆx8‡xøˆ8‡x88‡x8‡…8‡x888‡x8Š8‡x8‡…ø†xø‚ˆ‡sˆ‡sˆsˆ‚ˆ‡sˆsŽoˆrˆ‡sˆ‡o¨rˆ‡rˆˆrˆwRXHw8‡x OHkû¹§{kèX€=à¸?vË&üç"…ˆsˆ‡sˆ‡sˆ‡sˆ‡sˆþ ˆ…8‡xè½U€=8‡k0€w؆hqè ‚°Іx¸†Op‡j€x8w؆ˆ‚‚X (w8‡_8€à†t؆8pn8w؆ˆ‚¨†˜üsˆsø†ÉŸüsˆ‡sXˆsˆsˆ‡sÐ~8í?88‡x(‡x8‡x ˆx8ˆ8‡x ˆx8‡xø†x8‡ˆˆsñžxîÛÀç,7ðC†ç"üïÜÀsÏ1üÆðÃo¿Å;7ð\¼sçâ‹X.^¹çž‹÷-Þ¹xçâ‹w.b¹î¨‘:7ðÃs UR<7ð[¼þsñT<ñ\<•Ï1ü6ðÃs ¿©Œw.žÊsßâK¨’¢Êxçâømไçâ‹w.Þ¹ç"ž£8ð[<• Ï%Tù-Þ¹„çž‹w.Þ¹x*žKxî[¼s Ï <ñÃs†Ï üï\¼´UÆSïÜÀsñTÆ;ñ\Äs†ãûñ\¼sñÎÅû6ðÜÀsÏÅ;/-ÃoñÎÅ;ïÜÀs¿Å;7ð\¼s¿Å;ïÜ@•¿ <ïÃsñÎ%<—ðœa* tN<ç ôÍ@ç|“Ð7ñ|ÃÐ7Ï9Ï9 ©”Ð9ñœ3Ð9ñœÏ9 “Ð9 J†þ©Ï73Ð9 Ï9ñ|Ï9 ÃÐ9ñœó EçÄsÎpçÄsÎp }3J©4Ð9ñœÏ9ñœÏ9ñœÏ9ñœÏ9¹sŽž<‰ñ¸“'ÿÈ9'uÚùÖøb ŸÖøÒ§5uÌÉNúôC';üã@TPË?ø(‘ÀMðs'¦™jº)§zú馤ü3P9ÃO9ñœSEî¨4+ €€ ¦ÄSN5"AMœ3:J$ @WœSMñœãN5$TNB˜`‰;ç¤SU3@<çXµTÀ@îT3@9}3P9JÏ7}3Ð9þ•3Ð9ÃÐ7 Ñ7 “Ð7ñœ“Ð9 •sNBç0¤Ò@çÄsN<ß tÎ@* tN<ßœ3Ð9ñ|Ï9CÑ7ñ”sÎ@ç tEiÅsN<çÄ£R<ç tN<ç tŽaçÄSŽJÏ9ñœ“Ð9Ï9 3P9çÄ£R<å<ȉ?Ø€èC?ÜÃ'Pª"/ò¦Â?œC<œC<œC<œC<œCBœC<œÃ@¤E9$Ä9ÄÃ9$„7%„J¸Ã@¨D<œC;ºÃ@¤…;D„J”CDœÃ@œC<œƒ;œƒ;þ Ä9¸Ã@œÃ@œC<œC<¤E<œÃ@|Ã@œCœC<\-CœC<œÃ@|C<”Ã@œC<¨D<œÃ@\í@œCDœCB¨D<œÃ@œCBœC<|ƒaœÃ@œÃ@œC<œÃ7DÄ9ÄÃ9P„JÄÃ9ăJ0„JÄÃ9ăJ Ä9|C<”CB|C<œÃ7PÄ74É7 Ä9$Ä9|C<œÃ@œCB¨DDŒj9ÄÃ9DÄ9$Ä9 Ä9ăJÄC9Ä5Â9$Ä9 „JP„JÄÃ90Ä7 Ä9|C¨CœÃ@œC<¨D<œCBœC<œC<œC?žCB¨D<œC<¤E<œC<|õœCBœC<œƒaœCþB|CBœC<œC<œC<œÃ@œC<œCBœC“¨E|C<œC“¨Ä@œÃ@œC<œCBœÃ@œC<œC<œC<|C<œÃ7ÄÃ9 Ä7 Ä7ÄÃ9ÄÃ7 Ä7$Ä9 Ä9PDZÄCZ Ä9$Ä7$Ä7 Ä90Ä7 Ä9Æ9 Ä9ÄÃ9ÄÃ7$„JDÄ7$„J|Ã9$Ä9ÄÃ90Ä9ÄÃ9DÄ9 Ä7ÄÃ9|CœC<œÃ@œCBœC<œCB|Ã@œÃ@¨Ä7 „JPÄ9 Ä9ăJÄÃ7 „J „JÄÃ9ÄÃ9ÄÃ9ÄÃ9$Ä7D„JÄÃ9 Ä9ÄÃ9$Ä9PÄ9|Ã@œCDœCœC<|Ã@œþC<|CBœÃ@œC<¨Ä@œC|Ã@œÃ@œCDœCD|CBœCD|C<œC<œÃ@œC<¨Ä@¨Ä@œÃ@|Ã@œEœC<œC<œC<œC<œC<œC<œC<œC<œƒxÂ3@‚ă;$„'ÄÒ „‚•·B(ði(´‚•§ÀœÔC@€ € XÃ?°Ãȉ€K-ü>(A@ôA?0²ßù?Â?0Ä9ÄÃ9ÄC9¨DBœCDœC<”CB´ã9ă7Ã@œƒ;$Ä9ÄÃ9ÄÃ9 „;$„;ÄÃ9ÄÃ7DÄ9”ƒJ D9D„71„;ôã9ÄÃ9DÄ9Æ9ÄÃ70Ä9 Ä9 Ä9þ0Ä9 Ä9DÄ9 Ä9DÄ9D„J Ä9 Ä9 Ä9|Ã@|Ã@|CBœC¨„a”C<œC<œCœCBœC<œƒaœCBœC<œC<œC<œÃ@œÃ@|Ã@œC<œÃ@œC<œÃ@œC<œÃ@œCD|Ã@œCDœC<œC<œCD”C<”CB”Ã9ÄÃ9DÄ9$Ä3B<œÃ@¨Ä@œC“¨Ä@¨Ä@œCB|Ã@œC<œÃ@|Ã9P„JÆ9ÄÃ7œCœCœCDœCD¨Ä@|Ã@¤E<œC<œCB|Ã@|ƒJÄÃ9D„J$Ä9$Ä7ÄÃ90Ä9ÄÃ9ÄÃ9 Ä7œC<œC<œC|Ã@|C<œÃþ@œC<œC<|EœõœƒaœCBœÃ@|C<¤CœC<¨D<œÃ@œC<œC<|Ã9ÄÃ9$Ä9$„JÄÃ9ăJ$Ä9$Ä9 „JÄÃ9ÄÃ7ÄÃ7ăJ$Ä9ÄÃ9ăJÄÃ9$Ä9 Ä7œCBœCœCBœC<œC<œÃ@|Ã@|Ã9$Ä7ÄÃ9$Ä9 Ä9ÄÃ9DÄ7DÄ7 Ä9 Ä90„J$Ä7 Ä9|Ã@œCDœC<œÃ@œƒaœC|Ã9ÄÃ9ÄÃ9ÄÃ90Ä70Ä7ÄÃ9ÄÃ9 Ä7œÃ@œC|C<œCBœCDœCBœC<œÃ@œCDœÃ@|@Ä;ïܹxÆûvîà9„þãCx.Þ·sñÎ!<—c¼s¿Å;wðÜÁo¿!,¯ÂrÝ µ wçâôôgOŸ?þS3ƒhŠ)f¤H1CiO~Aòã÷ß?©<ùAÕº•kW¯_Á†ýGêß¹xç:v<‡ðBwåžssñÎ<çÎ]Âsñ žãë.Þ¹xLè®`ÿ tÐBM4ФüO9甃ÐþFçDTÎ9 B ‰Bñœ£Ð9åœÏ9Ï9 ³Ñ9ñ Ï9ñœ£Q9•£Ð9ñœSN<"ž£ˆñˆBíÏ9O9ñœÏ9ñ|sŽBųw<Å#b<å(tN<"ƃP<ß(tN<圣Ð9ñœÏ9ñœBñœO9 Ï9ñ Ï9åœSŽˆ íBñœ£Ð9ñœ£Ð9ñœÏ9ñœ£Ð9ñˆÑ9ñˆO9)TÎ9•#b<çÄsN<åÄsN<å(„P9çÄóFåÄSÎ9 •sN<çÄsŽx|ã9‡BÎgâAHDÎs(äñøFþDÎsDäÄ9GDΡshä ùFDÎsDä 9‡BΡ‘ohäñøÆ9ˆsŽˆ|ãñ8G<oÄã 9‡FΡ‘s(ä9‡F¢–s(ä9GD¾q…œ#çˆÇ9âqŽxœC!çˆÇ9"rŽxœ#çÐÈ9âq|C-ç N<ÎoÄã ùBâñxœ#ßPˆˆr…œC!çˆÈ9"rŽˆœC!߈Bˆs…œC!çPÈ94òxœC#çPBâqŽx|c#çPÈ9ì„hä ù†B¾q|C!çˆÇ9r…œ#"߈È7ΑsDäñ8qþΑo(äñ8GDDDœsDäAH¾¡oÄã9ÇFsÄã9G<Αo(ä 9‡BD¤oÄãñ8GD¾’sDäñ8‡B¾±‘r(¤vtH± HÀçˆBèñŽ|ÄãÿaE9sÜ8Ç@Êqpñ8‡,àŽj€1†ÎáŽaà4ä6rœ#çˆÇ9âQŽs äñøFP¢x($åˆUâqŽx”ƒ å8Ç@ªœ#T‰‡B¢x”ãñ8Ç@…þÄ£çˆÇ9âñ …äñ8G<ÎQ…ÄãñøÆ@ÎA…Äãñ8G<‚B ÄãQH<¨säñPH<Î1c`çˆBª1€sÄãÕÀ8âqŽjàñ@@7€nZàÎÀ9ª€qœ#Ñ À9ºQ€=`cƒêF QŽs8Cç¨ÆqŽxTc9GE¨AŠœƒ ç ˆBâqŽ|c çˆÇ9âqˆœC$ç€È9âqŽxœc çÐÊ7Dò ‚œƒ çˆÇ9´rްäñPAÎsÄã9G<ÎsˆäùF<ÎAsÄãZ9AÎQ‘s þäç€È9âqŽxœ#çÈ9âqŽxœc ç È9´òœƒ ßÈ7 ò|#çÈ7âqŽ(„ È7âqŽœ#çÈ9rŽxœC$ßÉ7b:sÄC!ZùÆ@¾qŽŠ|#çÈ9rŽœc çÐÊ7 rŽx($ç È7´òs äQAÎ1sD!ùFLÏoä9G<"’sÄãñø†HÎ1…Äã9Ç@¾1…ÄãñøF<R‘oäùF<ÎQ‘sä9DÎ1oÄã9G<2oÄã9Ç@Îs äùF<ÎñX‘¸#þ Å2 wœ# ñD|,¬œ´BÃ…/6Ü "(‡øx€+ü*$àGrÂ~ #üP?üŽäãÂ;æq}üc ¿‡ýˆ‡BâqŽx”âK.E>.1 Gè ïPAÎm9Ç@¢€s ÄpG5…8#ñ˜‡1pFt€ åˆÇ9âQŽ(d çˆÇ9âq‚œ#ç€È9rŽ(D+ç È9¢œ£"çÐÊ9rŽœ£"çÈ9rŽxœƒ A‰Ç9âqˆœ#爇Br‚œ#çˆÇ9*rŽŠ(d ç€È9âqŽxœ"þ爇B¶d¸#çpÇ<ª1€¸c8‡;âQÄãÏx5Šanc#ÎÀ8ª1‚TcaÅ pYÄè@½Ѐxl#爇;¶1€s”ã)G<Î1eØâùF<ÎsÄã9AÎsäñ8G<Îñ ‚|#ç È9¾1oä9Ç@¾sÄãùÆ@Îoä߈Ç9âñxœc È9âqŽx%ßÈ9rŽo@ä9‡H‚òxœc AÈ7*rŽo ä9AÎoä9Ç7´rŽxœc ç€È9ò|C!ñþ8Ç@ÎsÄãñ8G<ÎsÄC!ñ8Ç@Αs D!9AÎs ä9G<Î1s@äñ8G<Î…ÄãñPH<Îs|# ‰Ç9¾1säñøF<Îs äùÆ@ÎAsTäñøA¾1ª ä1=Ç@sÄC!9G<Îs D!߈Ç9 rŽœ#çˆÇ9¾”xœƒ çˆÇ7rŽxœ"çˆÇ9âqŽ8‡x8‡xø†xPˆo ˆs…€…ˆ‡s¨ˆs€ˆsˆ‡sˆ…¨ˆoˆ…€ˆoˆ‡s ˆsˆsøˆ8ˆ8‡8‡x8‡x8‡þ8‡Š8‡oˆ…€ˆsˆ‡sˆ‡s ˆsˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sRxH€xp‚ð„ [Žh…P… …ãåà‡-p|ø‡v(døt~è‡{Èøt~h‡:І|P‡ˆ€,üC@ DAüRø‡xˆ‡s8Är(…w8…N(…|X²wˆ‡|ÄR(‡CtwH‡¨‚sˆ‡s8Dph8DYP€qØ€†x8YP€x8‡xx€TÈKø†s8Äx8‡x8]<]ÔÅsÆx8b<Æ`,‡x8‡CTˆC<dŒÆx8d<]<‡x(þb<‡`<iŒ‡s ÆsÐÅrˆ‡sÆr8b,‡o<Æs8Fw(‡¨‚s8Äsˆ‡jwˆw¨†ˆw8‡j]<‡q‡ˆw8‡xp‡jw8‡x؆8‡x8‡xHCP€s ‡€],w¨†ˆM¬†ÐÅrˆ‡s8Ä xO8‡x8]ü]ü†CTˆ`<‡`<] ]ü†s8Äsˆ‡sˆ‡sˆ‡s8Äsˆ‡ ÐÅsˆ…ˆ‡sˆ‡sˆ‡sˆ‡s F…8ÄoÐÅsˆ‡sˆ‡sÆs@Æsˆ‡sÐÅs8Äoˆ‡o8b<‡C<‡`ü†xPˆx8‡x8‡C<‡xþ8‡C<‡Cü]Tˆx8‡x8]Tˆx8‡x8‡`<]üb<‡C<]ü†x8‡x8]<‡x8‡c<‡xPˆCü†x8dü†x8]<‡x8‡x8b<‡C<‡x8‡xø†C<‡`<‡x8‡C<‡x8‡C<‡C<‡C<]ü†s8Äs8Äsˆ…8D…ˆ…ˆ‡sÆsˆ‡oÆsˆ…ˆ‡sF…ˆ‡sˆ‡s8Äoˆ‡s8Äs Æo ÆohÇo8b<d<‡Cü†`<‡`ü†sÐÅoˆ‡sˆ‡o ÆsÆsˆ‡s F…ˆ‡s8ÄsÐÅoˆ‡sˆ‡s8Äo8Æsˆ‡o8‡x8‡`ü†xPþ]ü†s8Äs8Äs8Äoˆ‡s8Äsˆ…ˆ‡s8Æ ˆ‡s8Æsˆ‡s Æsˆ‡oÐÅrˆ‡rˆ‡rˆ‡rˆ‡rˆ‡r8DMOXHw8‡xPOP1S2SèB4Õ04 …PŽc0xH~È„àt€0bøt€~À‡$€‡2MTE]TFmTG}TH-SRè‡`<‡tðI,…wN¸;Ð;x‡R8‡rˆwˆ‡qX…؃s¸†R s (‡kÀ€ ˆ‡j€uÀ€ 8‡C”0€q8D…8Äsˆ‡sø†`,‡x(]<‡r ÆA9þ‡rˆ‡rˆ‡r8Äsø†`ü]<‡r8Är8Ärˆ‡rˆ‡rˆ‡rˆ‡rˆ‡r8Ärˆ‡r8‡xø†C,‡x(‡x8‡x(‡x(]üb<]ü†Cü†C,‡x(‡c<],‡x8‡r8ÄoÐÅs8Äoˆ‡sˆ‡r8Ärˆ‡rˆ‡r8Äoˆ‡s(‡x(‡x(‡x(‡Ct‡tx…Ømø†R pnÐÄj…p‡j€xPˆC‡8wˆ‡sp8‡j€sˆ‡s¨†ˆrø„qˆCP€xphlˆ‡køw؆ˆM$à†xPˆC<‡`¤Rˆ‡sˆ‡sÐÅs8Äs Æsþø†Cü†x8]T]<‡x8]<b<‡x8‡o Æsˆ‡sˆ‡s8ÄsÐÅsˆ‡s8D… F…8Äo Æo8Äsˆ‡sˆ‡oˆ‡sˆ‡sÐÅsø]<‡x8‡C<]<‡C<‡`<‡x8‡`ü†x8‡C<‡C<]Tˆx8‡C<b<‡C<]ü†x8‡Cü†C<‡x8‡xPˆx8‡`<‡x8‡`üb<‡x8d<‡x8‡CTˆ`<]<‡c<‡Cü†C<‡C<]<]<‡o8Äs@Æs Æsˆ‡o Æsˆ‡sÆs Æsˆ‡sˆ‡sˆ‡sˆ…ÆshÇx8‡x8‡x8‡C<‡C<‡x8þ]<‡x8‡x8‡oˆ‡sÐÅoˆ‡s8Äsˆ‡oÆsˆ‡s Æsˆ…ˆ‡sˆ‡oˆ‡sÐÅo8ÄsÐÅsÆsˆ‡s8Äsˆ‡sˆ‡oˆ‡oÆs@Æs8ÄsÐÅsˆ‡sˆ‡sø†C<‡C<‡x8]TˆC<‡x8‡Cü]<‡x8‡x8‡C<‡oTˆhü†Cü†x8‡C<‡x8]<‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡x8 …g€ˆwÐEOˆT2UƒHeU^åHDí~H~PŽ~àEå\6e]Þe^îeF%…ˆ‡r8‡CtOx‡ñI\æ%+…sˆ‡spþ]d… (€¸€N8‡n8nj‚q(‡jA€€h‚sˆ‡sˆ‡m€8‡`,‡c<‡x8‡x8‡x(‡sˆ…ˆ‡rŠCTˆx8‡Cü†C Šx8‡Cü]TˆxPˆxPˆxPˆxPˆx8‡xPˆCTˆC<‡x8‡C<‡CTˆC<‡x8‡C<‡C<‡x8‡x8‡x8‡xPˆx8‡x(‡sˆ‡sˆ‡sˆ…ÐÅsˆ‡ 8Dªˆ‡s8D…ˆªˆ‡sÐÅsˆ…ˆ‡sˆ‡rp‡xp‡x`… €¸Sp+¨…j€C<‡j€`,‡m8€xp‡Ct†‡m€Ct‡jw‡ þè¦ 0…sˆuP‚€¸w¨†8M<+¨…s8ÄsÆg …`TˆC<‡C<‡C<‡C<‡x8]üi<‡`<‡x8dü†v<bü]<‡Cü†C<‡x8‡Cü†C<b Šx8‡C<]<‡xø]<]ü†cü†x8‡x8]<‡x8‡cü†Cü†sˆÆsˆ‡s8Æsˆ‡sÆ ˆ‡sˆ‡sÆs8Äoˆ‡s8Äs8Äs8ÄoÐÅsˆ‡sˆ‡o8‡C<‡x8‡c ŠCü†s8Äo8‡x8‡C Š`ü†CTˆCü†C<b<‡x8büb Šx8‡`ü†s8D… Æsˆ‡þsˆ‡sÐÅsˆ‡sÐÅsÆoˆ‡o8‡Cü†x8‡x8‡x8]<‡C<bü†s F…8Ä 8ÄsÐE…ˆ‡o8‡`ü†xø†C<‡C<]<‡C<‡C<‡c ŠC<‡Cü†`<‡CTˆ`ü†Cü…ˆ‡sÐE…ÐÅo Æs ÆoˆÆs8Äsˆ‡oÐÅsÆsˆ‡s8Äsˆ‡o8‡cü†sˆ…ˆ‡sˆ‡sÐÅoÐÅsˆ‡sÐÅrà`]t …e€p‡sˆ…ð„FuRÿ~(uTOuU_uVou1%…8]<‡tøƒ%ã†Rx‡9=DOˆ‡sˆ…ˆ…@Fwˆ…ˆwØ8þD…p]L‡¨…C,‡x8‡xø†CTˆC<‡x8‡x8bT]<]<‡xPˆC<b<‡x8‡x8]<‡C<‡C<‡C<‡C<‡`<]<‡C<‡`TˆCTˆx8‡xPˆC<‡x8‡x8‡x8‡x8‡C<‡xPˆx8‡c<‡x8‡x8],dTˆC<‡`<‡x8‡x8‡`<‡x8‡xPw8b w8w8‡C<‡x8‡xp‡xP]<wˆ‡sˆwˆwˆ‡sˆ‡sˆ‡sˆ‡q ‡qˆ‡s8Äsp]t‡xÐDwˆ…ˆ‡sˆ‡r8Är8Ärˆ‡rˆj …x8‡x8]<‡C<‡Cþ<‡C<]<‡CTˆCü†x8‡x8]<‡x8‡x8]<‡x Šx8‡x8‡x8‡C<‡x8‡xø†`<‡C<‡x8‡x8]<‡C ŠCTˆx8dü]<‡C<‡x8‡`<‡x8‡oˆ‡sˆ‡sˆ‡s Æs F…8Äsˆ‡sÆsˆ‡s8Äoˆ‡sˆ‡s8Äoˆ‡oÐÅsˆ‡sˆÆoˆ‡sÆsÐÅo8Äsˆ‡sˆ‡ Æs8Äo F…ø†x8b<‡C<‡`ü†`<‡oˆ‡sˆ‡oÆsˆ‡sÐE€øïܹxçâÅ;à¹xçžCïÂsñÎI<‡ðÂoÏIü&q¤ÄoñÎÅ;'þñ\¼o$ã}Cxá¹xçžCx.Þ¹‘ç$žyá9‰çâ‹w.Þ¹—ñÎ!<‡ð\¼sñÎÅ;7òÜÈsñÎI$(ñ[¼sñ’<ïœÄsñÎÅ#ømä9„%~‹wNâ¹xç~“x.Þ7‰çžCxî[¼sÏ<ï\¼oÏÅ;Wnä¹xçâ‹w.Þ¹xçâ‹w.Þ¹xçDxzI@„¸ãî8‡;să !BŠÆãñ BÜA s äñ8G<Îsă ÙþBv‚ äñ ˆD¾!‘r$‰Ç9âqŽxœ#‰Ç9âq‰œ!ß8G<Îsă ñ8‡DÎs äå@È®âAxœ!çˆÇ9$B‰œ!AAâqŽx$‰Ç®$RŽsÄãñ H<ÎrÄãñpBÎsÄÃñhÏ9rŽxœ#爇;RŽsHä9G<Üwœ!çˆÇ9âá‚HÄñ BÎÑžxœ!AÈ9FrŽx<ƒñøAHr„œ#AÈ7ò ’|#çÈ7âñxœc$ß8G<¾o äç@È7r’œC"ç@È9þr‰|!ß8Ivsä9G<Î1’sŒäùF<ÎsHä#9‡DÎñ o äñ8‡ˆB„d$ç@È9âq„œ#ß@È7ÎoHäñø†D"‘oHäñ8B¾q„|ãñ8‡DÎQ s¼äñ8B¾sHäñøÆ9òxœ#çxÉ7âqŽx|#ç Ð9âq’œC"ç É9âqŽx|ƒ :ÇH¾s¼„ 9‡D¾!‘oÄãñøÆ9òsÄã9IÎo äùB΂Hä9ÇHÎ]‘ä9BÎ!‘s äñ8G<Îþñ‚ă /ùBò—|!çˆÇ9$rŽxœc$ß@È9âq„œƒ$çÈ9Hò•C"åˆ;@à‰e@î8G<â‰Çá=ïzß;ßûî÷¿>ð'Å?r‰¸#ç¨;â’œ#çÉ9âq„”ƒ@çxÉ9rwHäåˆG9r„œ#çˆAFB‰œc$ç@È9 DxœC"ç@È9âqŽxœ#çx A$r„œ#ß@È9rŽxœ#çˆArŽxœ#çÈ9rŽx$ç@È9$rŽxœ#çÑ9r‰$çˆÇ9FrŽxì !çpÇ9âþŽx„;œƒ;ÄÃ9¸ÃK„DœC<¸C<œC9 „;œC<BœÃ<œBœƒDœƒ;œƒD”B„;oHÁxÄãñ8G<îñŠu\¡×íÄuë°ŽWÄãñ8ÇóÏá œ?& ÆóÙs´ŸýÛA9ØŽxœãÏ?ûÏñüsÀŸ ØïØïžïØïÚïâáâáâáâážïØïâáž àýâùÎÙïâáØïâáâáâáâážïžïžïžïžïØïBþÎýÎ!ÎýÎ! "Ρša @€ â¡àâážïÔáâÎa@ Î!Îáù¢ýÎÁàâ žÏâáØïâáÊþþ¢ýÎ!¶ž¯žïØïâH!Î!Îáù¢ýÎýÎ!âùâùÎ!Î!¾!ÎáùÎ!ÎáùÎáùÎýÎáùÎ!ÎáùÎþÎ!Îþ¾!"Î!âùÎÏáâáØïžïØïâáâ âáâ âáž ØïâážïØïØo!žïâáâážïâáâážo!Bðâ žïÚïàïâáà âážïžïâáâáÚïàïžïžïâážïžïžïâáâáâáBðâáØïâá¾þ!Ï¡ýÎážï¾áùÎ!Îážï¾þÎ!¾!Î!"ÎáùÎáù¾!¾ýΡýΟïŠòâáàïžïžïâáâá¾ý¾Ï!ÎáùÎ!¾ý¾áâáÚïâáào!ž ž Š’ýÎ!ÎþÎýÎ!Î!ÇëùΡýÎ!Î!âù""Î!Î!¿ýÎý¾!Ï!Î!Î!Î!Î!Î!Î!ÎáùÜáDÀž Üý<á6^ó6ìÀ|aõ|aõê 6ä êa,a64`œ@6ð!  þè úA6øA6Â!òáÐAø Ø4  ôáêat¡üÖ6ÓS=ד=Û3=Iážïâ âá gÈÁpÈ?_!Êá®àž¯Ú¯ÎáùÊáªaÎ!¾!ÎþΡ(¿¡ýÊáùÎ! ‚ýÎÏ¡ý¾!Ïþ¾áù¾!Ï!ÆëBðâ¡âá8ðžïÚïâáÚïØïâ âážïØïà2ÊáxP`´!JÁΡàùÎÁâÁ"ªaž¯€ýÎýÀÁÊýœAÎáùÎ!þÜýÜÁâáدþÊý¾¡ € â¡âáâ¡âáâHýΡýÎ!¾áù¾áxðàïØïâáâáØïØïžïØïžïâáØïâáâ âáØïxðÎ!¾!ÎýÎ!Î!¢ý¾ žïÚïàïžo!ÚïžïŠòàïÚïâ Úïâ žïØ âáâáÎáùÎ!Îþ¾!Îþ"¿!"¾!Îýâù¾!Î!"Îý¾!ÎáùÎýÎ!Î!¾áùÎþÎáùÎ!¾áù¾ÏþýΡýΡý"Î!Î!Î. âùÎ!Îáù¾ýÎáùÎ!¾!¾!Î!Î!¾áù¾!Ρý¾áùÎýÎ!ÎáùΡý""Î!¾ýÎáùÎ!ÎáùÎ!Î!ÎáùÎ!Îáù¾!¾¡ýΡý¾þ¾áâáâáâážïžïžïžïÎ!Î!Î!¾!Î!¾þÎ!Î!Îáù¾!ÎIÙïžïžïžïâáâáâáâáâáâáØïà¯à¯Îý@€–ÀÎ!ÂÜó6¼Àz×w×¼À62`þ‚`6ðA¬áöadc`€îÀ6!d€ÚaþÀø0€ dä€úAwÛ×}ß6I¡ÊþæáðsСССF!ÊáùÊáùœÆ!Îá NÀ !ÎA `îÁ@$ âA”  Îý¾!Î!¾áùâùÎ!ÎáùΡâáâáÚ âáâáâáØïžïâáâáâážïžïâáâáâáÊýÎáùÎÏ!Î!ÎáÚïâáâáâ â žïÚþ â ž Øïâ Î!Îý¾!Î!¾!ÎáÎý¾!ÊáùÎáùª!¸ د@  . â¡à`$À :¸âáÊ!ŠáâáÊ!œ!Ü¡@> . âá`vàùÔA  j@â¡À *À :8ÎáùâùÎá>!ÎáùÎáùÎ!ÎáùÎÏáØïâáØïžïàòžïâá8ðâ ØïØïâá8ðâáâáØïžïâá8 âáØïÚïÚïâáBðâáâþ žïÎ!ÎáØïâáâáÚïâá8ðâáž âá8ðØïàïâáâáâážïÚ ¾!¾ážïØïØïàïàòàïâáâáâáâáÚïÚïâáâ âáâá¾!Î!Î!Î!Î!¾!ÎáùÎáùÎýÎýÎáù¾áùÎ!¾!¾ý"Îýîøù"ÎáùΡýÎ!"Î!¾!Î!Î!Îáù¾þÎáùÎ!ÎýΡýÎáù¾þÎáùÎýÎáùΡýÎáù¢ý¾ýÎáùÎ!ÎáùÎ!þ¾ý¾¡ý‚ýÎ! "¢ýΡý¾áùÎþ¾áùÎáù¾!Îáù"âùþÎáùÎ!ÎýÎýÎ!Î!Î!ΡÎ!Î!Î!ÎAHá AâÁØÏjCÀœ6¸xœ ú6øa  d£ð¡LáøáøÀþ~jã@þ¡Ðú€ØÌA6ÂøA6¶àúÀs\ÇwœÇ{ÜÇeƒþ!ÊýÎ!^UaúaúáJáùîøùœ!Î!Ò!  €áÔA: ÖAr!ÒaΡ€þ žÏZ@ÒA€€ âážïŽŸïžïžïžïâáâáž¯Ú žïâážïØïâáâáØïâáâáâáØ â¡8ðÎ!ÎýÎáùΡýÎÏ!Î!ÎÏýÎýÎýÎ!î8Î!î˜ý"""¢Ôáj° â¡ ¸!²€â¡ ªaÆaªaÆýÎáù¶ážïÜÁàª!ž ÎA( ÈAˆÁÔ!ÎÁl ¸Ad`Ρ  â!ªaæáùÎÏ<þÎýÎþáùÎáùâùÎýÎáù¾áØïØïâáŽã âáØïâáâ žïÚïâá8ðžïâ ØïâáâáàïâáÚïàïžïâáâáàïžïØïà âáÚïØïâáâá8ðžïàòž âáÚïâáâážïØ âá8ðž Øïâáâ ØïÎ!ΡýÎ!Î!ΡýÎýΡýÎ!Îáù"ÎþÎáùÎ!ÎáùΡ(Ï¡ýΡý¾áù¾¡ýÎýÎ!Î!Î! ¢ý¾¡ý"Î!ÎáùÎáùþÎáùΡýÎáùâùÎ!ÎáùÎ!Î!ÏáùÎ!ÎáùΡýÎÏáù¾!¾!‚ý¾áùÎáùÎ!ÎáùÎ!ÎýÎ!Î!âùÎáùÎ!¾!Îáù¾!¾!Ï!¾ âÅ;ï\¼s~;w.Þ9çâøíœÀsÏ%Œ÷-Þ¹„çâ‹w.Þ9ß~ÛÈ2¡;w <-ƒÀݹx =ýÛɳ§ÏŸýœøJ´ÕÐV¾¢ø„âkô³?ÿøcˆÿà#<;…C@?;r€.ýìÔ:ìÃÎÿ´<üð“Œ;ùƒX÷ꬷŽ)ÿœÏ9Ï+Ò¬#M;¥„:=ü”âNB 9#€6ÔœóÎ9¬l  ;¬lÀ¦œSÍîÄãN4T ¾ Ì÷MKçÌwN<çtKåTŽ@ßþôM<ßœÏ9,Ï9,)KÎ!s¤ ùÆ9rŽx|#ßÈ7ò ”#ç`É7âñ œ#çÈ7rŽx”c> 9‡@ÎÁ’sl¤/qÇ5dÀwTc9G5àŽj àÕ€@ª1€xœC ÏHb1ÄgÄÃG5sÄ£ˆ‡;Xq‚\ÀñˆFÄW4àÕÀ9âqŽj !çˆG9âqŽ„<ƒ,9‡@¾!oœC ߘCXrŽxœ#!ßHÈ7P(sä9G<ÎsÄãŒüF<ÎsÄãñ8‡@ÎsäùÆF¾s$äþùF<ÎsÄã,9G<Αo°äóùF<ÎsläaÈ9Xœ#çÈ9âqŽœC ç` Câqé|ƒ! 9GBÎsÄãñ8ÇFΑsÌçñ8G<¾ÁH†äçˆÇ9ZrŽ„œ#!ßÈ9rŽxœ#! ‰Ç9¤Ãxœ#ÊŒÇ9òx|ã 9GBÎsă!ù†@α‘sÄãçHÈ9Âoœ# ‰CrŽoHçñ8ÇF”™sÄã ù†@ÎÑ’säñøF<ÎsÄãñ8K¾!s$äñ`HB¾qŽxœC:çØÈ9rŽ–|#!þ ‰Ç9ò œ#!çHCâqŽxœ#çˆÇ7PXŽ„”ƒ%î)– ¸ãñ`ˆ'\Ç“Ð-t EÝèÆƒžlýà‡4`¬ƒüø,°“¤áþ°Áv"ˆcûÈÇNÐ~´cÿ`G| |`;‘ø± 胱ÈMnÜøAŠ´„¯†t¥A ~t¢v¸=H!r$Ä8G<ÎrÀã8‡3pw¤†PÀ<ª†Ä€Æ9âqŽx”# ‰Ç9âqŽxœãñ8G<Î!s|#çøF<Α†Äãñ8G<Αsäñþ8G<Î!sÄãaHB"oÄãñ`HKÎsÄã 9KΆă!9‡@¾†$äñ8GB”Éœ#çøF<sÄãù†@ÎrÄ£)G<ÎwœC ÆÀ8ª€s¤ˆÇ6àŽj Àã¨ÆÎs$Äà8@BÎá œc8G<α¸C™é0„â@ƒ!ñ8‡;ª1€x¸cÛCrŽ„0$Ô …@Îñ 0D çØÈ9âÁoä ùF<Îo$ä9GB”sÄãùFBs´ä9Ç76ò œC ç`þÉ96Â0$çHÈ96rŽœ#çÎ9âqœ#ßCò |ãñ8G<¾!sHçñ`HBÎs°äñ8‡@ÎÁ’s„!ñ8‡@¾‘sÄãñ8G<ÎsläñøF<α‘sÄãñøÆ|¾!oÄãñ8G<Îe äñ8‡@¾‘†ä9G<ò œƒ%çHÈ7XrŽ„œC çøF<ÎÑ’s$ä9G<α‘să!Ò9G<”sÄã9GBÎñ |C ô8ÇFΑ†Äƒ!ñ8‡@¾!säß`É96¢Ìxœc#çÈ76rŽ„œ#çHÈþ9âñ 0$! iÉ9r–(3!ßhÉ9âqœ#ç` Câq0$!ßHÈ7ZrŽ„œ#ç(Ç9âqŽxœ#çˆÇ9âqŽxœCžx$w$Ät‰þ?fŠê·"t E+ªŸžÃæà #" zlà2ðE?þ€@t@?þ€àþÐG?Ѐ~´cÿÀ  0M ÿp ;ñ. }8sA ÿåçàç¯0 í0 Ò@ ôðôïÀžPççà pñàñ ñ?ñ°’0ñ` 0äþ ÜÀñ`-€ óp Ÿpqñpqñpñ qqñ ,qñð ñpñpq,qqq q qñÀ,Qß çççßÊ4çççÊ´ç çç ç ççç !Ê$ !îP a ãp 8Àñ° pîÕîP 0Õ0ñpà ÜPçCî° p á àÕáÕ0ñŸ0ñ` ç`-À çp ŸpÕçðà Üpqqñð ¤ ç°þç ç ç0ß ç ßß ççÀçLv,ñ ñpñp,qñ ç ±ßpñp ñ óqñpñð ñpqñpñpóñ qñð ¡LqñÀñpñpñpñp ñ qñpŒô ç ç°ß çç0 çÀçççç ççççßÀç çð ççç ç ß ç ÊÄçççÐßßÀñ ñpñ Œ” ßpÒq qñÀqñpþñpñð ñp,ñ ñ ñpñp qñpq‰™ßççÀßpñ ,qñpñ ñ ¡Lñpñp ñ ç  ç ççßççßpñpqñpñ qñpqñ ñp qñpñ ñp qñpñpñp QñpÒQ Q á @ Ë àç á >¡Új0š33)0:¡=:=Á<ÑýÐüÐü°á0: £2:£4Z£6Êü@ ÿpñpñpñþð¯0 Óp Óà ï0 z Wðž çPá pqñ ð@pàp—q¦î`€µpê  àñ çÀçÀçç ç çç ßç ç ç ççÐçå å ççð ñpñ Lq qñp,qqq,q-qß çÀHç°ßÐå°ççç:& îP  î° àÛñP pñpVP ççPàpñpîpÎãP /Q àþä°€` ç0ê  € pîP îã`€© çåÔà ç ç°çç ç Êççç Êç°ç°çð Òqñð ñ ñ ñpÁq qq qñpñÀñð ñp-qÁ ñ ñpñpñ Lñpñp qñð ÒqóqñpÁqqñ ñpñpñ ñ q qñpñpß çç ßç0ß°çççÀ ‘ç çççÐçÐçþßÀßÀçð ç çÀç ççç !  ±çç ß ç°ß°ç ç°ß ç çÀ çßßßççð qñpñpñð ñpÁñp qñÀ-qñpñpñÀ,q-ñ qñ qñ L ñ ñpqñ ñpñpñ Lqqñpñpñð ,qqñpñp,ñ ¡L qñpñpñpåpñpñpñp"@ Ï îžp£4\Ã;Á;ÁÊþz[Ðü`ÃB<ÄDl£¤ðçÀç  DJ¤ŸðïùÅŸPqîç ç çïÀ/Áî0Á á qáåç ßpqñð ç€Bç ßç°ß ß çç ±ßçç ßÐçÐßßçççç ç ç ßçßÐç ççßpñð ,ñ ñpñ ç çÀçåç óp¡Lî çðñPîçÀî îç îpqq qîÀñpñ0þqq,qópãç åç åpñð ¤Ê$çç ß ßÀç 1ß ßߘÊççççÀHççç ßç çççßpñp-ñ ñpq qñpñp qñp ñ ,qñð -Áq qñÀdñpq qñpñÀñ q ñ Á ñ ñð qñpñ -qqßpq qŒtßp,ñ Áñpñpñpñ ñð ÁñpÁñpqñpþñð Á-ñ ñpÁñÀñpñp-Á q q qñpq qñð ,qqñÀq¡Lñ ,qñ qñp q ñ ç°çКñð çççÀç ç ßç°çç çßpñpqñ ñð ñ qqñpqq Áßpñpñpñpñ QñPñPÒQž° îpñÀž@Äžáè0` þá NÄü@ ÿ åååð ÇÐÄ’Å0þ’àñpñðþ qî° !¾  áñpqÁß çç  ‘çç ç ç çç ç çç  ‘ççççç çç ç ç ççç çç ç Êçå çççç ±ç ç çPååÐ !çîPqåç ÊäñÀ/!çàñpî çÊç ç !çççîç îÊC ! ‘Ô@ çð þqq qq q q-Áß çç çççð ñð ñð ñp q,qqß  !ßçßçÀççÀ ñ qqñ ,ñ qqñpÁñ qñpñ Òñ Òqqß ÊçÐçç  !ß ç çç  !çççßç°çß ç ß ß çççççß çß°ççç çç çÀßÀçÀç°ßç  BçÀþç ç  ßß ç ç  !çÐ ±çççç ççÐç°ç  ñ qñÀñ Êç ççßçççÀß çç ßç ççÀç ç çÀç ñ q qÌ- çççççççç Aê$ñÜÅCèéßB† >„QâDŠ ùUĘQãFŽIý‹w.Þ¹xçÎ]DH!I-]¶DÏd<7ð\¼sÏÅ;÷-޹ߞx.Þ¹xçZžÛØpã9çâ‹÷mà¹ç~‹×0Þ¹‡ ã‹w.Þ¹xçž‹w®å¹xßž‹w.Þ¹oñÎÅkïÜ·ß6üþ6ðÜÀsñ¾Å;ï\¼†ñ¾Å;ïÛÆs¿ ü6ð\Ä9ÄÃ9ÄÃ9ÄÃ9hÄ7lÄ9´DC Ä7ÄÃ9 Ä7ÄÃ9 Ä9ÄÃ7ÄÃ9 DCüâ@œC<œC<œC<œÃ@|ÃC|ƒFœÃ7ÄÃ7 Ä9<Ä9<Ä9 DZ Ä7ÄÃ9ÄÃ9<Ä9hÄ9 Ä9ÄÃ7lÄ9 Ä9ÄÃ9 Ä9hÄ7hÄ9ÄÃ9ÄÃ9<Ä9 Ä9 Ä9ÄÃ9ÄÃ9hÄ9 Ä9 Ä9|Ã@œÃCœÃ7lÄ9òÑ›ç£/OØ>úÒ~xb­uúÓ¡u©OêNÇPrŽxœ#¤ø‡@ÊsÄã´ÈÙ qzÐCg§Å>rg@h€ rrÄCJ@@p…sT#爇:”4à å8‡€€ZœCJHà…rœƒŽçˆÇ9rœ£ çÈ9þrœ#çÈ7rŽ‚œ£ çˆÇ7âñ ´V C9È7â1”xœã ç ˆXrˆ%çH9ÎoÄãñøÆ@ÎsÄ£çˆÇ9rŽ‚œƒ åH9r”C å8‡@ÎsÄ@`bœC êPB ®àªaB”  ® ÎÁ jáÔA  À Ê Îa žb(¾áâæb(¾áâáââââââá âââá¾a ¾A Ρ †"¥¾A †b ¾ ÎA Î!¾á Î!¾áââáþââÎ!ÎAs¾áââæââÎ!¾!Î!Î!¾A ¾!ÎA ÎA Ä"ÎA ¾á â ââââáâáâáâââáââáâáâââáââââáââââÎA †b ¾!Ρ ¾A ¾a ÎÁ ¾!Ä"Î!Î!ÎA ¾A †B Î!Î!¾áâa(âáâáâââá ââá4çâáâáB,ââáâb(ââáâââáâ âþââÎA ¾AsÎAs¾A ¾a ¾a †b ¾ Ρ ¾A Î!¾A Î!Î!Î!Ρ Îa Êa ÊA Ê ÜHa Aâáâòaúö!àÞ‚à¬á¬á¬áò!aò!aò!aò!aò!aò!aò!aò!aò!aò!aò!aò!aò!aò!aò!aò!aò!aò!aòAaöaòaúçø!¤òÁ¨¥ø²/SêââHáÊ!Îa èa®á!ÎáÆá6á®!Ü!†B Î!ÜÁ¢ââá ââþâÁÂÎ!Ü Î!Ü †"Î!Îáâáââââââáb(ââá¾a ¾!Ρ Î!Î †B ¾!Î!Î!Îá â¾a ¾!Îa Î!Î!¾ ÎA Î!ÎA Îa Î!ÎA ÎÁ<âÊ¡ Î!†B †‚ ÎA ÎA Ê¡ Îá3ãá3ãa(ÜáââáâáÂâÁ â ÂÎ!Ê!Î!ΡâS Ρ ¾A ÎA Î!¾!Î Îa ¾!†"ÎA Ê!Î Îa †B ¾A Î!¾!ÎA ¾A,âáôââââáââââ â âââáâáâb(¢Äb Î!¾a ÊA †b bG ÎA Î!Î!ÊáâáâÁÄ"ÜA Î!ÎAþ ÎA Üa Î!Š÷âÁÄ"Î!Äâ3ãáâáââH ÎA Î Îa Îa Î!Î Î!¾a ÄB Îa ÎA ¾á â ââââB,â âb(ââáââââââââáâáâB,ââád÷ââÎA Î!Î!ÎÁ Îa †âÎÁ<Ï ÎA Î!Î!Îa Î!Î!Îa ¾A Ρ ÎA ÎA Îa Î!†"Î!ÎA Î Î ÎA Î!ÎA ¾!Î!†B ÎþA Î ÎA@Ï!Ρ Îa †"ΠΡ ¾a Îa Î!¾áâââáââáâáb(ââáâáââa(¢xãáâáââÎ!ÎA Îa Î!¾!Î!¾a ¾!ÎÁ ¾áâáâÎa ¾!Î!†B Î!Î Î!Î!†B Î!Î Î!Î!Î!Îa Î!†b ¾áââÎA ¾ ¾A Îa Ê!¾¡ Êa Êa ÊA @€– †B <áåø¨@,[¨`øòöö!ö!þB*XáÀL`ö!B*B*Bj@ òáÚúAaò!B*B*B*B*B*B*BŠöþá `ò!¢»ö!B*øáæ3Á<ΡâáââáâÜ!Î!ÎÁÂâbG Îáâáâáâáâa(âáâáââáâáâáâáâB,ââ ââáâáâáâÌóþâá ââáâáââáB,âââá¢âáâ¾!ÎA Î!Ρâââáâââáâa(âáâá¢âáâââÂÎa †Âb(â¡âáÜáÜá ÎÁ ââââ¡ââäæ“O?ý`@=äÒcDýHc@>ûä#ô@þP€ÔRÍýH3=í  x€ ½÷$±@-Ð 2½ôäCnÿüÃÏÉÿ@Ï>ôîC½æî“Ï>¤ÿÏ9SÐ9 3Ñ9ñòÏ9SÎ9EÏ9î0tC•Ï9ñœÏ9ñœSÐ9îœ3Ñ9ñœODîÄCRÜçdš™Ò#PÙ?zìÃ\䢽è±zíƒÔP¨_ÿ Øs`éñ(G<Îr0„ÿ˜È9&rއD¤€}È9âQŽxœ#ç(È9âqŽxœÃçˆGDâq¥œƒ!߈Ç9âQ•xœƒ!çˆÇ7 rŽ‚œ#ß`È9òxœƒ!U)È9 rŽxœã!ç(È7&r†|£ ßxÈ9&òxœ#çˆÇ7ΈÄã ùÆC¾ˆ0äñ8ÇCÎ1‘rÄã3)G<ªRrœ#çˆG9âñþxœ#ç`È7rŽ‚œ#çˆG9Έģ*ñ(GAÎÁs(å ©Ê9â‘‚Dä!åˆÇ9âq†œã!Ï ÅDÎÁoäJ9G<¾QsLäñ8GAÎÁsÄãñ8C¾QsäùÆDÎQsÄãç`HDrŽ™|#ß8GA¾qŽxœ#ç`È9âqŽxœ#ç˜É9ò †œKç`È7rŽiž£ ç`È7ÎQsÄãñ8ÇD¾qŽx|#ç(È9&rŽ‚œã!U)HDrŽxœ£ ç(È7”òxœ#ç(È9rŽxœ£ çxÈ9 òxœ£ çˆÇ9rŽ‚þ|£ aÈ9 rއœ£ ߈GDrŽxD$ß(È9rŽxœ#ç(È7Î1‘oÄã9ÇDÎQs<$"ñ8G<Îs0ä9G<ÎsäñˆH<Îs0äñøF<ÎÁs`é9G<¾Qsäñ8CÎsÄ#" ©J<Îñs0$"9G<Îs0äùÆ9âqŽxœ#ç`È9rŽxœ#ç`È9òsäñ8GA¾Qs<äç˜H9âQŽx”#åxˆ;âR,8G9 rOòAÀ j5W>è!ŽÀÃ\ù ‡1@j þ€û G;@v `ôØG5j €ì€;èÁj€ä4è±c0`ôx*=ÈE/zÀ­ØG>è±|˜kæÚGÙ=Aʪ~õ )GAÊrÄã9G9 rŽxD„ÿ8G9âqŽ‚Äí ‰CÎQs”#åˆGÜâ·s”#ç`ˆ;hsŽxœã!î(ˆ;âqŽoÄ£ñ8GAÎ1“sÄãñ8GAÎsÄã9G<Îs$"9ÇCÎß0çð ´q ñ ñp qßPçPçç0ççPçPñUÁçðçßçþPçÀßPçÀçÀçðçPçÀçPñpqq qñ@ñpîîÀçàçàááqîÀçàçÀçPåPçPA ¤çð qñpñpQqqñð ñPßðçPçð qñpñpqññpñð qñpqñ ñpñßPççÀçàWçðçPßÀççQßPßçðççÀçPçPçççPçðçPçðßßççPçþçQçßPçÀçð Xrñp q qñpßPçççÀßPßçðçßPçAç0çÁçÀßçßÀç0ççPUAçPçPççç1UßPçð ´qñ q qñpq´ñ ñð ñð ñ ñpqñqñpññpqJñ q3qñpq QÓtñ qñð ñp q qñpñpñpqñp qåpñpñpþñpñpñpñpñp"@ Ï çà eç.>>ôàü0e'SÛÈæ’É@ôP `.ñÐ0Õ0û@ùP @í0ñP `.ûÀ@ΜÐjµe'nu2 ™äRvù@.žð &ÓIÕiÕççPåÀççPç@ ÿPîå QçPçÀçPççUUQUQå7çàñàQçàq ñ ñ qqñp ñ qqq þñ çÀçßÀçPßp ñ çßPñpñ ñpqñpq ñ q qñð çÀçßPçð çQçPåpñJqñ ¡åPçðåçPçç ÁqSñàñ7ñP áçîP$qñpñpñPQçåÀçË@ qñð 3qq qqqñ q3qñð Jqñpñp q ñ q3qq q qñP3ñ ñ ñpñpñpáaþñpñ ñð qqñ ñpñð qñð qqñpñpq qqñ ñpñpqñpq ñ çPßçPçÀßpñp qqñpq qñð q3qñ ç0ßp qJñ çÀççççÀßp´qñpñð ñ ñpqñð qñð ç0ç0çßpñpqqßðççPßPßÀçÀçÀçÀçPçP1ç€%UÁßPçÀßçßçPþçÀßp3qñð ñ qñpñpñpñpñð ñpñ q qqñpqqñp q q UA à Ë 0ž Vó@ð úTPvù ™þðT Sî`°Û0ù`.Î@óÐ`.óÀ@Õ0ôÀ`.óP @øð Sþ ši. 2*Sà‹¾ô@ Ô0íë¾ï ¿3qñpqñPñpñpqñ@ ÿîp qñpQ qqñp q3Q áñpñîîPåþPçÀççPqñpñpñ ñ ñ qqß0QßçÀQççÀç0çç0çPçPç1ß0ßÀçPçPç¿çç0çPßÀçPççßç0çUñçð ñpåðåPçßåÀçîqñ ñPñàñàq$îÀçåÀçPQÏà ñpñpñpñpñpqqßÀç0çPçPçßßß0çççPþçPçðßðÁççPçççÀçÀçð ñð ñpñpñpqí{qqñpñpñpßçPççðßPççPßPçðçPç0çÀçPçßPçPçßçðçPßPßç0çÀçÀçÀçßPçÀçÀççPçð ñqñ ñpñp ñ qqñp ñ ñpqññpßPçPßÀççÀçPç0çPQçÀçð ñpþñpßççÀççÀççßpQñ ñp ñ ñ qßPßPç0çñççQçççßPçPÁç0ßоçñççç0ßçÀççPçÀçÀçççççççç ¤ð ñPUá j5Aé A0Ö` éíÞû Sù@«€’pé` ûp à ñp?@ó@À ôÕôP Õ0ñôÐô`-þðñp ŸÐù@ÙÐj%'æ"'Sè›ôšé Ï¿5nã7î¾çÀçßÀç¤ð qáqñPñPñpñð 7^ qñPñpñpqñpñp ï{ñPñpñpñpñpñpñpqñpqñð ç0ççÀççPßPçq q qí{qqñpññpññpññp ñ ññ qqñpqñpqñpñpqñp qþqq qq \çP1çàqQî éçàç$åPçQçðçÏ@ q qñpqñp qñpqñð qq qqñpq q ñ 3qñð ñpñp ï{ñpñpñð ñp qqñqñ ñpñpñpî qñð qñpñ ççÀçççÀßpñpñ ñ çPßçç0çðßÀççÁçPçPçç0ßþççPç0ççPç0ßPçPçPçÀççßçðçççÀçßPççPçPçßßðçPñçÀçQçPçßpqqq qqñ ççPçç0çççç0ßçPçPçÁßçPçÀßçðç0ßçðçPççPçPçßPççççñâx.Þ9¿Å;ï\¼oñÎ üv.a¼oñ¾Å;'°œþÀo ËÅ+¯ÜÅxî@ZIJOùèͤÄÚMkAøÁàÙ“f¼™ùXm@ÀD®™ñ^m¨‚xô¬ @P«Ú€}Õð«F€^fzäc&ñ ‰@æ™dó˜I .Î!Êá⡺! €š@â¡   â¡à $Àj¡àª!â¡@>.¢”   Î!Î!Êáªaâá `v Îá ªa àˆ!¾¡r   @$ âáâáâ¡N à¸áâ0âaN  À !ªaΡ ÎaNàÂ=Ρ@j  ªaþâáÔA `jà⢠laâáâáÎa Ρ,â¡â¡â¡Î!ÊáÈãá¢Ââ¡Îa ¬ €Î!ÎA!Î!Êùe Î!B!Î!Î!Îa Î!ÎA!¾A!Îá ¾!ÊÏa ¾á)¾á Îá ¾!ÊÏ!Î!Î!Î!ÎáÈÏ!Î! b ¾a ÎA! ¢,Î!Îa Î!¾a ¾!Îá Îá Îa Î!ª¡Îa Ê!Ρ ÎÁ ´!6)Î!¾áâáâá⢠¢ ¾á Îa Î!Îá Îa Îþ!¾á) B!Ê!Î!Î!Î!Îa Î!Êa ¨âáâ!Êââáb“âáâáââáâÊââââáâáâážââÎ!Î!Î!¾!Î!Îa ¾a Î!Îa Î!Îá ¾áâáââáâÊââÎa Î!Î!Î!¾!Îa Îa Î!Îa Î! b â Îá Î!Îa Ρ, "Î!Îa Î!Î!Îa Îa Îa Îá Îa Îá Î!Î!Îá â ÎáÎ!Î!¾áââáâáþ‚!¾áâââ¡ ž¢ âᢠâáââá⢠žââᢠ⡠¢ ¢ ¢ âáââÎa Îá Îa ¾!Î!Îa Îá)Ρ,Î!ÎA!âÈ¿!¾!¾á)ÎáâáÊâŽüâââÊâŽüâáâáŽüââââáâáâáâÎ! "Îá)Î!Îá b Î â‹w.Þ¹xã;—p!ÂsñÎ!<—°¢Å„å–Kè©e$\èia¼s¨|[*Þ¹jž,”Cá"‰Úºaþ¯Ú„綈WmÀ¹xåª ˆmÀ¹jž ”C!Þ9-¸¥“á9„Õ œ[W€X¼t±ž‹w®šåPX¸¢Å¹k–Ä«6Àݹ‹ëˆÅ»†£C@‡œ#äÈ ƒxœÃ @@-ÎÑ`M8G<ª€x”ƒ0!Ì9âñx`$çˆFrŽˆ`$ß È9rŽxþ`$çˆÇ9rŽœc ßÀH<Îs äUùÆ@¾1sÄãùF<Î1sÄã߈Ç9rŽx`d åÈ9âápä€ ˆ1Žj çG5àŽj ÀÕ€J¬¤"爇;¶q€sÄ#+`A<ÆSr Õ@<Îa…  q80s äÎA¾s ¤9Ç@Îs äåˆG9âqŽxPÃÁH<ÎsDä9G<ÎAs äñ8Ç@Îs|#çˆÈ9"rŽxœ#çÈ7rŽxœc çÐe<¾As ä9GDÎAsÄþã9G<0s#ñ8G<Αs#U9Ç@¾Asäñ8A¾A˜o äñ8G<ΑsÄã9‡8‡x8‚8‡8‡oˆˆs ˆsˆ‡sˆs ˆsˆ‡sˆo ˆsˆ‡sˆ‡s¨ Œ ˆsˆ‡sˆ‡o(Œsˆ‡sø‚8‡8‡ø†ª8‚ø†ª8‚8‡x8‡x8‡Â8‡ˆø‚8‡ø†8‡xø†8‡8‡ø†ªÀˆoˆoˆ‡oˆˆsˆˆsˆˆoˆ‡s sø†sˆsø†8‡8‡8‡8ÂÀˆx8‡xø†8‡8‡8‡x8‡À‚8‡x8‡8þ‡x8‡x8‡xÀˆoˆ‡s ˆs¨ŠoˆoˆˆoŒ ˆoˆŒø†x8]:‚ø†ýø†8‡x8‡oˆo Œˆ‡sˆ‡s ˆsˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sRxH€s ˆs …sˆwˆ‡s Œñˆwˆr8‡x(‡sˆ‡sسsp‡sˆsˆ‡sˆ‡rÀˆxp•ˆwˆsˆsˆ‡s• Œˆˆsˆ‡=ÃwÀˆx8‡xÀˆxŒˆsˆ‡sˆŒˆ‡sˆwˆsˆwˆ‡sˆsˆ‡rˆ‡r8‚8w Œww¨ wÀˆxp‚À‚8‡xþÀˆx8‡x8‡xÀÂ8‡x … ˆsˆsˆ‡sˆsˆ‡sˆrˆ•¨ w w ˆs˜‚8‡xªxŒ(‡xp‡sˆ‡sˆwˆ‡sp‡ªp‡rp‡sˆ‡sˆrˆ‡r8‚8‡xÀˆxø†x8‡ˆ8‡x8‡8‡x8‡8‡xø‚8‡ø†xÀˆª8‡x8‡ýÀˆ8‡x8‡xø†ªø†x8‡xÀˆx8‡x8‡x8‡Àˆ8‡ˆ8‚8‡ª8‡(‡Àw‡p‡8‡ˆ8wÀˆxp‡s˜‡Âp‡(‡s¨Šsˆ‡ñ8‡xØ3Œwˆ‡sسx(w8‡xp‡(‡xþsŒˆr8‡x8‚(‡ˆ8‡8‡x8‡x8‡xxRðO …õtÏ÷„ÏøŒÏO ùŒÏO°ÏüÔÏýÔORpÏOxÏÐ%Ð5ÐEÐUP%…uÐ%… PRÐ PR°P%… ]ORàP%RøP%…5QRXH‚8‡xð„xsˆ‡rˆ‡=;w8‡x8‡r ˆsˆsˆ‡sp‡sˆ‡sˆŒˆ‡r wˆˆsp‡8w ˆsˆˆsˆ‡sˆsw•¨Šsˆ‡sˆsˆ‡sˆw ˆsˆˆsˆw8‡x8‡8‡rˆ‡sp‡p‚8‡Â8þ‡xp‡p‡xÀˆñ8‡xp‡s¨ w8wˆˆsp‡x8‡8‚8‡Àˆrˆˆs …ˆsˆsˆ‡sØs¨ŠrŒp‡x8‡ñˆ‡sˆ‡sˆŒˆ‡=s‡xP w ŒsŒˆ‡ˆŒˆ‡sˆ‡sˆ‡sˆŒˆ‡sˆs(ŒsŒø†Â8‡ø†8‡ˆÀˆˆ8‡ýÀˆxø†xø†+:‡xø†x8‡x8‡ˆ8‡ªÀˆ8‡ø†x8‡8‡xø†8‡x(‡ÀÒ9‡x8‡x(‡p‡x8‚8‡x8‡ñˆ[=w8‚p‡sˆ‡sˆ•ˆ‡sp‡sp‡8‡xÀˆþ(‡x8‡xp‡xÀw8‡xp‡x8‡x8‡ˆ8‡(‡(‡x8‡x8‡r ˆsˆ‡s ˆs R8‡8‡x8‡ˆ8‡8‚@Žx8‚8‡ª8‡8‡x8‡x8‡o¨ŠsˆŒˆŒˆ‡sˆsŒˆä@Žx8‚Àˆx8‡ˆP‰x8‡x8‡x8‡x8‡ª8‡xÀ‚8‚P‰oˆsˆˆsˆŒ•ˆ‡sˆ‡sˆ‡sˆ‡sŒˆ䈇sˆŒˆ‡sˆ‡sˆ䈇sˆŒˆŒˆ‡sˆ‡sˆ‡s •ˆ•ˆ‡sˆŒˆ•ˆ‡sˆŒˆ• ˆsäˆoˆ‡sˆ‡sˆ‡sˆþ•ˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sŒˆŒˆ‡sˆ•ŒˆŒˆ‡sˆsˆ‡sˆ‡sˆ¸%ˆsˆ‡sˆ‡sˆ‡sˆ‡sˆsˆˆs ˆsˆŒˆŒˆŒˆˆsˆ‡sˆä•ø†x8‡xP‰x€ÛsˆŒ ŒŒˆ‡s ˆsˆŒˆ‡ ˆsˆ‡sˆŒˆŒˆŒˆ‡sˆŒ•ˆ‡sˆ‡s ŒsŒˆ•ˆ•ˆ‡sˆŒˆ•ŒŒˆsˆs ˆsˆ‡sˆ >‡€ÛP‰x8‡xÀˆª8‡xÀ‚8‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡x8þð„g€ˆ‡r Oˆ‡sw8‡xÀˆx8‡xp‡Àˆ8‡ˆ8ÒÁ‚8‡xsˆw [‡sˆ‡ñˆ‡sˆˆsˆ‡rp‡s¨Šr wˆ‡s Œ ˆrp‡p‡ª(‡8‡x8‡xxÀˆx8‡x8‡=;‡(‡8ww8‡(‡8‡ñˆ‡sˆrˆs¨ wˆw8‡Â8‡xø†8RøÒ)‡x(‡x(‡sˆˆr8‡x8‚8‡Àˆˆ8‚°ÕsˆˆñP‰Àˆ8‡ñˆ‡ñ ˆs˜wˆwˆ8‡x8‡‡þ†x8‡8‡‡Öèxø†xø†xø†ø†þ8‡‡>‡‡Æ>‡o8‡‡>‡8‡x8‡x8‡ø†ø†xÀˆÀˆx8‡8>‡xø†Ž‡sˆsØèsxèoˆ‡sxèsˆ‡sp‡sˆ•ˆ‡sˆwˆ‡sˆ‡sxhw8‡‡äˆsˆ‡sˆ‡ñˆ‡s0êx8‡y8‡xp‡x8‡p‡sˆ‡sˆŒØèsp‡sxèsÐèsˆ‡sˆ‡sˆ‡sÐèsˆ‡oxëxxRˆ‡rÐh•ˆŒˆ‡sˆ‡sÐèsˆsˆsˆr8‡8‡x8ƈ·>‡>‡x8‡‡>‡È>‡xÀˆ‡>‡x@Ž>‡>‡È>>‡ÆˆxÀˆx8‡x8‡þÀˆ‡>‡‡>‡xø†8‡8>‡x8>‡x8‡ÈŽìs¸ïó6jŒŒ0ês0êsxèsˆ‡sØèsˆ‡sxèsˆsˆ‡sxhŒˆsˆsˆ‡sˆsˆ‡s•Øh•ˆ‡sˆ‡sˆ‡sˆ‡sˆ‡s••Ðèsˆsxh•ˆ‡s0jŒÐèsˆ‡s8ïsŒxèsxèsˆ‡sˆ‡s@ïsÐèsˆìsÐès0êsˆ‡sˆ‡sˆ‡s@ï‡>‡x8£>‡·ÆˆxÀˆÀˆ‡Æˆ·>£Æˆ‡>‡x8‡‡FŽx8‡8‡‡>‡‡>‡#7j …e€ÀˆxÀO8wˆsˆþ‡sØèsˆ‡sˆrÐhwxèrˆ‡rxèsxèrˆ‡sˆ‡rˆwŒˆsˆ‡sxhwˆ‡sˆrˆ‡rŒwˆwˆsˆ‡rˆ‡sˆ‡ñw(‡‡ŽØ³x8‡r8‡rˆ‡sˆ‡sˆwˆwÀˆv‡xÀˆ‡>‡x(‡8wˆ‡sŒˆ‡sx8‡xp‡sˆ‡rw8‡rÐèsˆ‡rˆsˆsˆ‡sˆsˆRø‡sø†x8‡ø†x@އ.‡s(‡‡>‡x8‡xp‡x8‡‡Æˆñˆ‡ñˆäˆsˆ‡={ès0êsˆäˆwˆsx(‡þ†x8‡x8‡xø†‡þ>‡‡V‰x8‡x8‡8‡xÀˆÀˆx8>‡oˆ‡sxèoÀ>‡Æˆx8>‡>‡8‡oˆsˆ‡oŒŒˆsø†x8‡xø†sˆsˆ‡rxèsxèsxësˆ‡sˆ‡=;‡xxÀ>V‰‡>‡ñ0jŒˆ=‹‡sÐèsp‡x8‡8‡(‡8‡x8£>‡8‡x8‡8‡Žsˆ‡rˆj Œˆ‡sˆ‡sˆìsxësˆ‡sˆrÐèsÐèsˆ‡sˆrˆ‡rˆ‡sØèsˆ‡sxès@ó8ô>‡‡>‡x8‡Žxø†x8‡‡Æˆx8‡x8‡‡>‡>‡þ#?‡‡>‡x84?‡È>‡x8‡8‡8‡x8‡‡>‡È>‡‡>‡x8‡8‡‡>‡x8‡À>‡·Æˆx8‡x8‡xÀˆþ†8‡x8>‡Øësˆxžhð ÂçÎ \hð\Âxç.ŒxṈÏ »,ä߈Ç9rO8ô=G<ÎñÙsèòþïî¿ûý£ÿ¸ßò—ß ê9G<¾qás|öº<Ç7ÄÃ9ÄÃ9 Ä9|Ö9|ƒ@œC<œƒ@œÃ7èÒ9 Ä9èÒ9 Ä7èÒ9 Ä9ă'œÃgC<œƒ.Ã7D×9Ö9|ƒ.ƒ£}Ö9èÒ9èÒ9|Ö9¼Ó9xÂ9¼à9|ƒC}Ã@œiÃ@œC<œƒCyÂ9ÄÃ9|Ã@œƒ@þœÃ7 Ä9|ƒ@œÃ7Ä9|Ã@œC<œC<œÃ7,„@œÃ7Ä9ÄÃ7øÕ9èÒ9ÄÃB|ƒ.ƒ@œÃ@œÃ@œÃ@|Ã@œÃ7èÒ9¼Ó9 Ä9ÖB Ä9 Ä9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ˆ€'<$€@œC<œ)œƒ@œÃ@”ƒ.•C<œC<”Ã9ÄÃ9ÄC9ÄÃ9ÄÃ9ÄÃB D9À†@,D<”ƒ@œƒ@œC<œC<”C<œƒ@”C<,„.C<|C<”C<œƒ@œƒ@,„@”C<,D<”Ã9ÄÃ9ÄÃBÄÃ9èÒ9èR9ÄÃBÄÃ9ÄÃ7ÄC9œƒ@,„þ.-Ä@”ƒ@”Ã;Á†.-D<”C<œC<,Ä@À†@”ƒ@”C<œC<œƒ@œ)üC<ÀF<GòGò/p¤-/p$HÚB0€$/ƒJªd0ØÂ2ƒJ/p¤-¨d0ðB0ð‚-ð‚-ðB0ðB0ðÂ2ƒJÚHÚ/ØB0ØHÚÂ2Ø//ØÂ2/ØB0ðB0ðGò‚-//ØÂ2p$/ØÂ2ØGò‚-ƒ-/pd0Ø//p$/ØB0Ø/ØB0ð]òGÚ/ØB0ð‚-p$/ØB0ðGò‚-ðB0ðB0Ø//Ø/p$/ØÂ2/þƒ-,/p¤-p¤-€d0ð‚-CKÆf0´¤-Äf0ðB0ðB0Äf0ðB0,C0Ø/ƒJƒ-ƒ-Clò‚-p$HÚB0ðB0ðGòGÚB0ØB0€¤-ƒ-ƒ-ð‚-Hƒ-,ƒ-ð‚-/ƒ-ð‚-ÄÃ9 Ä3Âg}ƒ.}Ã9ÄÃ7ÄÃ7èÒ7œC<À†@œÃ7Ä7 Ä3Â?ÜòõƒòåCüÜòñƒ…Zh?üC?ÄO?äCüôƒòáòõC>ÄO?äCüäÃ?ôÃ?äÃ?ôÃ?äÃ?ðC?üC?äÃòõC>ÄO?äCüäÃ?ðþäÃ?àòyÂ3 Ä9„÷þ|Ã9ÄÃBÄÃ9ÄÃ9ÄÃ9ÄÃ9 Ä7 Ä9èÒ7ÄÃ9 Ä7ÄÃB Ä9Ä7Ä7œƒ.}ƒ@,Ä@|Ã@œƒ@œC<œC<œƒCƒ'ÄÃ9|Ã9Ä7œÃ@œC<|Ã@œC<|C<|Ã9ÄÃ7œÃ@œC<|ÃBÄÃ9Ä9ÄÃ9ÄÃ7Ä7ÄÃ7ÄÃ7ÄÃ7 Ä7ÄÃ9ÄÃ9ÄÃ9ÄÃ7¼Ó7 Ä7èÒ9|Ã9ÄÃ7èÒ7Ä9„'ÀF<|lÄ9ÄÃBÄ9Ä7ÄÃ9ÄÃ9Ä7ÄÃ9Ä7,D<|Ã@œƒ@œC<œC<,D<,)Ä9Ä9ÄÃBÄ9 Ä9èÒ9 ÄB8Ô9Äþ9Ä9 Ä7ÄÃ9ÄÃ9ÄÃ7œƒ@À†@œÃ;}Ã@œƒ@|Ã9Ä7èÒ9ÄÃ9 Ä9ÄB Ä7œÃ@|Ã9 Ä7Œ.}Ã9ÄC9ÄÃ7ÄC9ÄC9ÄC9ÄC9ÄC9ÄC9ÄC9 „;ă;€),$À;y‚.}C<œC<œC9œƒ@œC<œƒ@œC<œC<œC<œC<œÃ@œƒCÃ@œÃ@œƒ.C<œƒ@œC<œƒ@œC9 Ä9ÄÃ9ÄÃ9Ä9ÄÃ9 ÄBÄÃ9¼Ó9èÒ9Ä9ÄÃ9Ä9”C<œÃ;C<œƒ@”ƒ.ƒ.•C<,„@œƒ@œC9¼Ó9¼Ó9Ä9Ä98ÔB”þƒ_C<Â?¼Sü)_?,_?œî?ôëÆO?œn?ÄíÖ®íþC?Ü®îî.ïÞÏîÞïÚn?¯íÞOüôñ&¯ò./ó6oüôƒó.o?D/ñžÃ@œÃ5|B<œC<œÃ7ÄÃBÄÃ9|C<œƒ@œƒ@œC<|C<œƒ@œÃ@|ƒ@,D<œC<œCðoüäÃýðÃ?äÇO>ôCüÜÏ?Ü?üC>ÜÏ?ôÃ?äÃýüÃÿþÃýÄÏýüC?üC>ÄãÏ <ƒ@,„Cƒ.C<|C<œC<œC<œC<,Ä@|Ã9ÄÃ9Ä7 Ä9ÄBþ Ä9ÄÃ9èÒBÄÃB Ä9ÄÃBÄÃ7¼Ó9ÄÃ9Ä9ÄÃ9ÄÃ9ă'œÃ@œC<œƒ@œÃ7Ä9Ä9ÄÃ9ÄÃ9Ä9Ä9ÄÃ9ÄÃ9 Ä7øÕ9 Ä9ÄÃ9ÄÃ9ÄÃ7Ä9Ä9èÒBÄÃ7ÄÃB lÄÃ9èllÄ9xÂ@œÃ;}ƒ.ƒ@xÏ@œC<œƒ@œÃ;C<|ƒ@|ƒ.ƒ@œƒ@xÂ9ÄB¼Ó9Ä9Ä9Ä9ÄÃ9ÄÃ9 Ä7ÄÃ78Ô9ÄBÄ9 Ä9Ä7èÒ7èlÄÃ9ÄÃ9Ä9èÒ9ÄBÄÃ9ÄÃ9 ÄB ÄBÄ7ÄÃB Ä9øÕ7ÄÃþ9 Ä9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ˆ)<$@<”Ã9ÄÃ9xB<œC<,D<œÃ@,Ä@œƒ.ƒC•ƒ@,Ä@œÃ@œÃ@”ƒ@”C<”C<œƒ@”C<œƒ.C<”ƒ@œC<œÃ…ƒ@”ÃB D9èR9ÄC9D9Ä9ÄÃ9ÄC9 Ä9ÄÃ9ÄÃ9D9œC<”ƒ@”Ã;ƒ@”ƒ@œƒ@”Ã9ÄC9ÄC9ÄÃ9|Ö9 D9 ÄBÄC9ÄC9Ä9Ä)üƒ@”C<”ƒCƒ@¸Ã@(Ç9ărœÃ@¸Ã9ÄÃBă;ărœC<(G<(Ç9 „;þÄÎÄ9ă;lÄÃΜC<ìÌ9„; „; „rœC<œÃ@¸C<¸C<(Ç@(G<(G<(G<¸C<¸Ã@(G<¸Ã@¸C<ìL<¸Ã@¸ƒ@ìL<(‡@(‡.i¹ƒ.¹ƒ@œC<¸C<¸ƒ@¸ƒ@¸Ã9 „r,D<œC<œC<œC<(ÇBÄÃ9ărœC<Ð;ă;ÀF<(G<(‡@ÀF<à·;ÀF<œÃ@œC<(‡@”ƒ;Ä~ÇïL<¸Ã9ă;ÄÃÎÄÃ9ÄÃÎ Ä9ÄÃ9Pƒ'ÄÃ7Ä9Ä9Ä9ÄÃ9ÄB Ä9ÄÃ9¼Ó98Ô9ÄC9Pƒ'ðÃýäÃ?ÜO>üþþäÃ?¬ðýüC?üC>üÃýüC?üÃýüÃýäÃ?ôC>üC?üÃýäÃ?ôC>üÃýðCüðï?ôÃ?ðo>ü?ÜO>ÜO>üÃýüÃýäÃ?ôC>ü?ðï>ôƒ'<Ã@|ƒ@œÃ@|ƒ.ƒ.}C<œÃ@|C<œÃ@œC‚à#(žoâ9'‚@*çœxΩðœxÎIï[øÁèœrΉ Ή‡ xÎñîïιïÎñîœxJïœxÎéΉçÎïïòîœxòîœûÊ9¤sâ9¤sâ9¤s@:Ç;wΉçœôΉ‡ ûΉçœxÎéïÎñîÎéïΉ§ÎI xΩœxÎéœ Ï‰çB ‚ïïΉçœxÎïœxΉ§Îñîœx܉‡  éœxÎéïÎéœxÎIïÎÏΉçœxÎéÊq'jHï›ûéœô¾9'žsâþ9'‚¼;'žoΉ‡OøÙgÔòégŸÚò¹-ŸjÛ§Ÿ|úÙ'ŸÛòégŸ|þé'Ÿ~öé'ÔòégŸ|PËçëk˧ºÛòš| &¨ÉÇ?nc=Ôì5ûè‡'–‚Äãñ8HÎsÄãñ8|¾qŸsÄãÞùF<âsÄãÞùÆ9âqŽx|#߈Ç9Òsïœ#ßÉ9¼ó y"ç A@òsÄãÞ!H<Îs€ä ùA¾Axœ$çˆÇ9âqïœ$çˆA@rŽxœÃ;çøÆ9àsïœÃ;ßÉ9@rïœ#ß8G<ÎOœ#ß8þG<Î’sÄãÞ9HÎs|#çˆÇ9@rïœ#çðÎ9ÒsŽxœ$‰'@ò ïœ$çˆÇ9@r$¹Ï9@Bœ#߈AâqœÃ;É9@rŽxœ#çÉ9Òsø`$çˆÇ9âqŽx$çˆÇ9¼Cx”#ßÀH<Αžoœ#߈Ç9¼ó ï”#åˆG9¼Sø¸¤X$àsÄÃåˆÇ9âqŽxœ#çÉ9âqœ#çˆÇ9âqŽxœ$åÉ9¼’s€äÞ9GHÏÒs„ôåðFB ’sx‡ ñ8GLÏ’sÄã 9Gþ<Î’s|#çˆ)FÊ’rxçåˆ)AÊs€ä1Ç9bzœ$çðÎ9@BoÄ£1=G<ÎOüêñ8‡wÎÒsÄ£ñpG[Ï‚€äñpÇ9¬z޶‚ä!=HÒs¸$;¬zŽž$ç¬UÝw¸ã!%È`Ïw„ô 9G[ÏR‚Äãåi9¼SŽxœ#¦±*AÊ’s„ôî8G<Üwx‡ ñØ,HÎᎶž£ qG<R‚€ä!=G<Î’s€ä qH΂Äà qHÎáŽsÄà )G<ÎsÄà 9GHþÏr€äîx†'âqŽx$‰F@Bž#¤çˆÇ9@BœÃ;×øD?òÑ}äcHP $¨ CPú`½~ä£ûèÇ>l“} f¨±Þ?òÑ}Øf¨Ùjöš|ì5ûèG>P“ëí#û@õúa½~ì5ûÈÇ’÷š|ì£û¨Í>Hñ œ#çé9âqŽxœ#çˆAâqŽxhìÞùF<Îs€„ 1=G<Îás€äÞ9G<Î’oÄôñ8HÎsÄã 9)΂xçV=HÎsă ñ ˆUÏÒoxçñ8G<ÎþÓs„#Þ9G<¾s€ä !H<Îsă ñ8Ç7@BžÃñ8HÎ’s„ô !H<ÎsÄô !H<Î’o€ä 9G<Î’sx瞈Ç9@Bœã²ñ8GL¿Qoœ#ç)AâqŽxœ$çˆé9âqœ$ A¾sxç1=‡wÎsÄãñ8GHÏaÕo€äÞ9‡wÎsÄãñ8G<ÎsÄãñ8G<Îs¸ã"ðÄ3 !€s„Ô 9G<Îá‚xç!=ÇeÏárœÃ;çI9¼SŽx”#çI9âAïœ#åé9@RþŽÁž$å ˆwÊ¡ïxœ#çˆG9Úz”ã!-Ç9Bz”$çˆG9âqŽx”#åˆÇ9{޶$åˆG9@rœƒÿðÎ9bz”#¦çI9ÎoÄ£ñ8‡wÊÒs€d³ 9G<ÊrÄ£!=G<Ê’sx§ñpG<ÜwÄãîðN9âQ”#åÉ9¼“’x”#åˆG9âQï”#¦åˆi9âQ”$åI9âQ”$åˆG9bZŽÁ¦ä )GLË!Ê!¤Ê!R"¤ÎÁ;Ê!ÎÁ;4ÆBŠ âa³âa³6+Ê!Ê!ªRâþ¼£Bªâáâ Úª¼£Bª@b³¼Ãâ¡@â⡼£¼£bŠ ¼ƒaòÁzøA šþúà ¼¼@£ë ö!ö!öáV$áâh`òaÉòaÉòaÉúáú!01£1qú –ì²Ázòá²!°, 5 Z£?–,HáBê¼ãâáâ œ"ÎÁ "Â;"¾Á;¾!¤â!=Cê@â@ââ¡ Î!Î!¾$Î!Î$Î!ÎÁÎ!¤^aö@Ò¡hÀ;Î!Î$ª!â¡$bœAR"ÎÁ€ ¼ã|ÿ@â¼ãâá"^¼oÏ ü&0Þ9çª ˆw.Þ¹oþ Ï%LxÎÓEu žhKGÊÀsÏÅ;w1Ṅçâ}‹wîÜÅjžKxN §sßRÆûæSà¹xçž‹÷-á7ŸçâÅŒ÷Mà¹xç.žøM๋çžKSà¹xçâKy.á¹xçâÅôy.Þ91¿ <—ð›Às ÏÅ;ï\¼sñÎÅ;ï\¼sñÎÅ;'‚Ô3Hžèé\¼s c <—ò\Ðoñb ,wN`¹sñÊÅX.^¹xç–;wñ\¼oc&ü4Þ9åb/w±\¼˜ñÎÅû–ò\¼sËÅøÍç9åâ•;—ðœÀrñÊ ~.a9åÎ ,¯œÀscþÆ#õ/a¹˜ñ¾•ðYÎ9ñ”Ï9åÄsŽ@çøTN<çÄó@åÄsN<åÄSN<åÄSN<åœsÑ9•#P9ñ”Ï9ñ”SŽ@å\TNBç$TŽ@åÄSN<åÄSN<åÄSNBçTÎEå\TŽ@åÄó@åTNBåÄSN<åTNJçøÄb<,&TN<å$TN<å¤tN<åTÎ9 OLñ”“Ð9±(P9ñ”#P9ÅT9ç$TN<å\tN<1¥TN<å$TN<çTN<åÄóM<å$TN<圓R9•sÑ9Ï3ž˜Qñ¬sB˜M< µT3€@ëäPÀþMœSN5ò“Ð9Ôx²O>ûä³OvÀ“O>ôäO¶ù„1Ä>ùìãíkгÏ>ô¬»ÎÐD>ôHS€& Hp4ûä£É Å>ù¬3B4=Õ í=J$Ð@ñ¤ëO?Ù¦›®ÿlÌ1ûx›í>ùЃñ>ž<OÊ*«|ŽÊÎpŽÊÎpN5¤¬Ž Є6ñT3€XÏ:'$P€ Ü”SMV|`Á9ëä0œSͯ,PÀÄÄÃ)Ÿƒ *{rNÊå¤óñ¸O9éijΠà4ñT3À9ÕpNÊçÌãLçÄãN<ÎàNþ5¤Ü PCLÕ `EijΠà7çTS€XÏ:9$0 ñTS+ à1ñ0BA<çă çÄsŽ')Ç 㸳r<ê(‘@MhÏ9ël A&psN5˜Qñ¬“CÀpN5°²“rL¤¨üM<ßÄsNÊçÄsN<߬|N<çÄ“s¤ì*;‡ÊΡ²s$/߈Ç7TvŽ•#çXà7R“ž#çPÙ7αÀs¤¬çX ÊΡ²oÄã*+GòÊr˜pî)– ”#e1ñÄÊÎ1Ãx|ceåˆG9Rv•}#çˆG9Vvþ•#çHÞ9Tö•ÄçPÙ9âQŽ –#çˆG9RvŽxœ£ñ8Çc’²r¬,&*;G<Θ¤ì)‹I<ÎrÄã)‹‰ÊÊqŽx”#߈Ç9RVŽ”}#çˆGLâqŽxœCeçHÙ9HÑx|cîˆÂ9Êr¨ìñ8G<Α²sÄÃ8G<ÎQŽxœCeçHÙ9RvŽxœ#<ÇÊÎQŽ•m1‰Ç9â“xœ#ç(GÊΑ²Æãñ(GP€ë1öqXþä£+€A>Ô‘!䣠Ç=VЂsÜCH¨l>*‹Ýpì¨ì>(»Êæ»û Å3¾¡²o,ðÎ@<Îáw8î¨ÆâᎴ€éÁÎQ <áå8G7ˆqŽkÈ ñ¨FªpŽxœƒ-ÀÆ7lj ÜHÇ:àr$)[Îsx"eçˆG5€Œ˜¨¬Ý Æ9Ô!ƒœ£ˆG5°²s8C1‰Ç9œ!€sTc)³A °‘!Õ@ÎQŽxtƒçè† :j  ç(Ç9Hm¤Ãç¨FjÀ udî G s¬þ€ ñ8G<‚À♤IW t.])ùHÀˆ× Czí$­6€Þ:Sãâ­R ñÈe²¯Ú¤6ZœËwí½|Y“ø÷Ò (¦LÙÓ2ŠϹ;ç À9wñÎ9 0®Z‚6Z`‹wíS¼j(‚þ-^ºÜUï\¼s$ZœK÷i^µÝU @QŽ z2Ï]¼Uö`»VЏÐâ¥û1À]µñª È|Ιwçܹsà\µm´àæîÚ'wª€ sÀšxÒùaw¶ žs"¡mÒ±%žj0Èjp'žtäðÀ€s:'Oâ9'w¶ ˜x®Áxܱ¡nâ¹æ“sÀšxÒùaw¶€ sÜ!¡…sÒ±Åjp'žsª 3OÎ!È o:‡"ƒâ9'3ŠÎ‰çœxΉçœx "è›xΉçœoâ9'‹Î‰Ç x Šçœo(2ˆ s(:þ‡ s¾‰Ç xΉç‚ÎÉìŠÎ‰çœxΉç‚Îù&³o(ú&žs2(žsâ9'žsâ9'žsâ9'žsâ9'žsâ9'žsD åH Ó“râù† rΉç›xÎ!è›xÎ‰Ç ŠÎ‰§œxÎ!È ‚Î!¨œsâ9‡ sâ9'³oÎ!¨‚Î!è›x ŠÇ ‚Ήçœx¾‰Ç xÊ9'žsâ9'ƒ(*ç2Ë9‡ sâ9'žoÎ!óŠÎ!óâx "è‚ ŠçœxΉçœxÎ!È¢x ¢è‚ "¨‚Ê!È Rþ1ˆ sô˜E;Ή'*`¢œsÒÐc;Ü¡èg(§šþÚf‚ªàœj èg8'šÜ‰çg8§šæ;§šâ9'³sâ1ˆ ƒâ9‡Lƒ(2(žsâ1(žs2ˆ¢s:‡¢s:çbƒ:‡ s(2ˆ s2(žs(:'³sâ9‡¢sâ9'³s:‡ r(2ˆ¢s0>cŠÎ‰çœxΡ¨œxΡè›x ¢èŒË)‡ rΉçœxΉç‚Î!¨ŠÎ¡¨œxÊ9‡ sâ)‡¢s²(3ƒ2+'žsâ9'jH9‡ siàƒèÀ +@ –jˆçœnN`€&¤ˆÇ9âQ¤ñ †'’|ä#)d€A«P™x$…þ(À@Љ}#@Þj )ÕÀ<Àqû]ÀHG0€&œcÕRÔ¡„  ^¨ Rd%@R²ÑÅä#”ñÄ3âQ‚œƒ ÎÀ9(⌜£8G<Ô¡„  W8G5@sÄCÁè0€sTcñ8G<ÎÑ0˜G5pŽxœ£ È6‚œ#çðA,Vl¸@'â! €àtÀ8ª1€qTcå ˆ;ÎጸãqFÆQDJH@p…sT#)G<!|€pG5ƒÄ£þ9(À`pŽj€ ç¨Æ(²°à9‡'(Rpè€ rAu(!hÀÎAH~t€;ª1‚œ#ÝÈAƒsTc9G5 p‚œÃçÈÌ9rŽx|#3çˆÇ9`sdæñ0HfÎñQŠœƒ çˆÇ9b‚|ã™9ì¾AƒÄãùF<ÎA¦sPä9G<ÎsÄãñ0AÎsÄ£+G<ÊrÄ£qH± H€ çˆÇ9ö‘xšñ˜‡¢ã¡hzăñ˜¤ó¡è|:‚&t<8ýi<çc„ŽG>âAx|:žXF<ÎAƒäñ8EÎáŽxœc>ñ8‡;rŽr\ÌqÇ<ÎQ2¹ƒ"ç‡;æq‚œ£ñ(G:P Šœ#žˆÇ92ã2ƒ î0ˆ;â1Ÿxœ£9GfÎs¸#îˆÇ9rŽxœƒ"þEr‚¸Ã ó9G9Èt‚¸#3ç ˆA⑎Ô"çˆÇ9âá‰xœ#óG9âáŽxœ#ÁØ9b‘ù¸£9G<æC‘s¸#ç È9âq‚x"ß È92c‚œƒ 爇AâqŽx|#çÀØ9(rŽxœƒ çøEÎAsdæñ8ÆÎAƒä9G<¾ƒdæñ0ÈÅΑ™sÄã9EÎÒsÄãñ8G9ÎsÄãñ8G<ÎsÄã"ðD0 !‚œ#ç Å9âqŽxœƒ çÈÌ90vŽxœƒ åˆÇ9âQŽxœ#ß0A¾A‘sdæ™9G<þÎA‘sPäñøÆÅΑ™sPä™9AÎsäñ8G<ÎrPäñ0AÎAoä™9A¾ƒÄ ñ(G<ÊsÄã;AÊArÄà ñøFfÎAƒPäñ Å?âqŽx˜+˜…+p‡Ìp‡s w¸‚Y¸‚(‡x8g€q¨† ˆj€xp‡j€q¨hqè ƒ ‡nÀ€ 8‡j‚ppn(‡x8‡m˜‚sˆ‡m˜‚sˆ‡m˜‚s ˆs ˆrˆ‡r ˆrˆ‡r ˆrˆ‡r ˆr ˆrˆ‡r “o ˆo ˆrˆ‡s “r ˆo ˆr þˆo¸˜rˆ‡r ˆo ˆr8‚(‡x(‡s ˆoˆ‡o ˆsˆ‡s ˆo ˆrˆƒˆ‡sˆ‡rÈŒs ˆr ˆr8‡x(‡x(‚0ˆxø‚8‚ø†s ˆoÈŒrˆƒˆƒÈŒr ˆr¸‚(‡x(‡s ˆsˆ‡r8‡x(‡sˆ‡r ˆr8‚(‡x(Š(‡s¸˜sˆ‡oˆjð„x8‡xpƒ ˆs ˆsˆ‡ùÈŒr ƒ˜‹ ˆs ˆs ˆeð„xÀ³x€´ÊzÈz˜‡x ‡Ì ‡xÈB‹‡y ‡y B›zˆ‡w ´x ‡|À³|ˆ<ˇx ‡x ‡x ‡x˜zˆzþ˜‡yP4ŠÈzˆ‡w zˆz ˆwˆzˆzˆB#zˆzˆ<Ë‚ ‡x ‡|À3O †x(‡s ˆsˆ‡sˆ‡sp‡sˆ‡sÈŒs ˆrˆ‡<±Š8w ˆr8‡x°ˆÌ8‚8‚8Š`„ˆ‡rÈ O w0‚8‡x8‚8‡x8‚8w0Š0ˆx˜spŠH¹sˆ‡s ˆsˆ‡sˆ‡sˆ‡rÈŒsˆƒ˜x8‡‹1ˆxp‡s ƒ w8‡Ì(Fˆ29Oˆƒ ƒ w029‡Ì8‡x8‡x0‚ÈŠp‡sˆ‡sÈŒs O8‡Ì0ˆ‹929‡x0þ‚ø‚8‡xø†Ìø†Ìø‚8‡xø‚8‚ø†‹ù†s ˆo ˆs ˆo ˆo ˆsÈŒs¸˜s ˆo8‚ø†x8‡Ì8Š8‡Ìø‚(‡xø†xøŠ(TDEwˆ …e€8‡Ìð„x8‡x8‡‹9‡Ìø†xø†‹9‡x8Š8‡x821Š8‡x8‡Ì8‚8‡x82ù‚8‡x8‚8‡ÌøŠø‚(‚(‚8‡Ì829‡ø<‡Ì0‚8‚8‚8‡Ìø29‡xø‚8Šø†x8‚8‡x8‚8Š0ˆx8Š8‚(‡s ˆs …(Š(=è=¸0 þS;S=8…+ˆƒ g€s¨†ˆw؆p‡r؆˜‡jA€¨r ˆnÈ€&w¨†ˆwˆ‡s°‚@€Tˆcƒ0†0cƒˆ‡sˆ‡oˆ‡sˆƒˆƒˆ‡sˆƒˆƒˆƒˆ‡s ˆr ƒˆ‡s ƒ ˆs ˆsˆ‡o ˆrˆ‹ˆ‡sˆ‡oˆ‡sˆ‡r ˆoˆ‡<‰ƒˆƒ ˆsˆ‡sÈŒsˆƒˆ‡s ˆsˆ‡s ˆsˆ‡sˆ‡s “sˆ‡s ˆsˆ‹ˆ‡s ˆsˆƒ ˆsÈŒsˆ‡sÈŒsˆ‡sˆƒ@Årˆ‡sˆ‡s ˆoˆ‡s ‹þˆƒ ˆsˆƒ ˆs ˆsˆ‡s ˆr ‹(‡x8Š8‡x8‚8‡x8j …sˆw ˆsp‡x˜x0ˆù8‡x8‡x0Š8Š˜Š8‡x8‡x OÈzˆz B‹zˆz ˆ|ˆBˇx ‡Ì ‡x ‡x 4‚ ‡x ´xxz “| zˆzxzˆ<‹z ˆy Š 4‚À³| ‡xȇxP´x ‡x Š ‡|ˆzˆ‡| ‚À³w Šˆzð„eXÜsXÜy8Š8‡ù8‡x(‡x8‡ÅíÜ”‹‡sˆƒèÜx0ˆx8‡x8wˆ‡s ƒ€0…x8‡þx(‡x8O(‡x8‚8‚8‡x8wˆ‡sˆ‡ùXÜsˆ‡s ˆsp‡x8‡”‹ƒ ˆspŠ8‡x8‡xp‚8‡Å=‡ùˆ‡spƒˆ‡s ˆs ˆs ˆsˆ‡sˆ‡s ˆs@È…rˆ‡s(‚ðÒ%ˆs˜x8‚0ˆx0ˆx0ˆr ˆsˆ‡sè_‚˜s ‹ ƒð„x0ˆo ˆo ƒø‚ø†xø†Î=‡x°ˆx8‚ø‚8‡x8‚8‡x8‡x0ˆx8‚0ˆx8‡o ˆsXÜsˆ‡oèÜsˆ‡s ˆsˆ‡s ˆs ˆsˆ‡s ˆsˆ‡sˆ‡s ˆoˆ‡s ˆs ˆs þˆoˆ‡<‰‡s ˆsˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡s[H€x(‡x(‡xð„Å5ˆx0‚ø†x0‚0ˆx8‡xø†x8‚0Š8‚0‚0‚8‡xø†x0ˆxø†Å-‡sˆ‡o8‚8Š0ˆx8‡x(ƒ ˆsˆ‡sˆ‡<‰‡o ˆsèÜo8‚8‡x8‡rˆ‡s ˆsˆƒ ˆs ˆoXÜs ƒˆ‡r0ˆx8‚8‡x°ˆx8‚8‡x8‡x0Š8‚8‚(Ò=‚8Rø‡x(‡xp‡s¸‚K¸„Sp…N8Wè„K8…Np…Np…+ ˆsþp‡Å‡”‹‡sˆw0ˆx¨ ŠH¹s wˆw8‡xH¹xpŠ0ˆx8‡x°ˆx°ˆÅ5ˆx8‚8‚8‡x8‚8‚8‡Å5ˆx8Š8‡x0Š8‚8‡x8‡x0ˆx8Š8‚8‚8‡x0ˆx8‡þ=‡Î=‡x8‚ø†Å=‚øŠ0ˆx8‡x8Š(‡x(‡x8‚(‡þ=‡x8‡x8Š(‚°‚8Š(‡s ˆsX\ƒ ‹ˆ‡sˆƒˆ‡s ˆo ˆspàx8Ò=‡x°ˆÅ=Š(‡x(‡x8‚8‚ R ˆs ˆsˆƒ ƒ ˆs wˆ‡s wˆþ‹ ˆr ˆeð„x ‡xÀ3Š ‡x ‡xÀ³Å}‡Î¥‡| zˆzx‚ȂȊ ‡y zÈ‚ ‡xȇx ‡x˜‡x ‡xxzˆ<#ˆ|ˆzˆ‡w zx‡þ}Šxzˆ‡|ˆzx‡x ‡xȇs ˆ| zˆzˆ<‹<ó„g˜xp‡x(‡sp‡xp‡s ˆsXÜsˆƒ wˆ‡<‰wˆ‡s ˆsˆ‡sˆw ˆsX\wˆ‡sXÜsˆ‡sˆ‡sˆ‡sˆ‡sð„s wˆ‡sXÜs w0ˆx8‡xp‡x8Š(‡x8‚p‹ ˆs ˆsˆ‡sX\‹ ˆsp‚8þ‡xp‡Å=‡x˜Š8‡xp‚p‡xp‚8‡x8‡x0Š8‡x8Oˆ‡r0ˆxp‡sˆ‡sˆ‡sèÜs Ýs ]ƒpŠ0w ˆrèÜr O ˆs ˆs ]ƒXÜo`lƒˆƒ ƒ`ìo ˆs ˆs ˆsˆƒˆ‡sˆ‡sˆ‡oˆ‡sˆ‡sˆ‡sèÜo ˆsˆ‡oˆƒ ˆs ˆsˆ‡s ƒ ƒ ˆsˆ‡sXÜsˆƒèßrˆ‡rˆ‡rˆ‡rˆ‡rˆ‡r ˆùOXH€sˆ‡sˆ‡sð„x8‡x8‚8Š8‡x8‚0ˆÎ=Æ&ˆs Ýr ˆsXÜs ˆo ˆs ƒ ˆsþèÜs ˆs ˆsèßsˆ‡s(‡x8‡x0‚ø‚8‚8‡xø†x(‡þ=‚8‡x0‚8‡y7ˆÎ=‚(‡þ=Ò=‡x8‡x(‡x8Š8‡x …~ ƒp‡+¨‚0½SSSŠp‡s¥‡s˜sˆ‡ùˆ‡y‡m€sˆ‡sˆ‡s(Š8wˆ‡s ‹ ƒp‚8‡y?‡y_ûx8Š8‡x8>‚(Š8‚8Ò=‡x8‚8‚8‡Î=Ò=‡Î5ˆx8‡Î=‡x8>‚8‡Å5‚ø‚8‡rèßs ÝsX\ƒ ˆsXÜs ƒpàs ƒèÜrˆ‡þsˆ‡sˆ‡rXÜsˆ‡s`ìs ƒ ˆrèÜsxRˆ‡s ˆsp‡x8‚p‡Î=‡Å-‚˜sèÜs(‚0ˆgð„xxŠx‡þ}z zXÜ|XÜ|`ûÅ͇Î=‡Å¥‡Î}‚xò‡Å¥Š ‡s Ýs`ìw ˆwX\Rx†s˜€8/Þ¹xçâ¹ssçB,7ðÄxçV˜ð\EwñÎ%ŒWnà¹xç žƒè)^Âsîâè.Þ9wÝÅK±Ü@wñÜÅ;—ñ\¼sÝÅ;ç®\Åså:tï\åco>Ñ=ï DO<ôÄCO>Ñ3=Ñ=ñÐ=ïØ Q>ñÌCŠ'ÔÄsNEîœÑ9%TÙ9%äN<çÄãÎ9ñ”sN<ÅsN<åÄsN<îœ3Ð9ñ”co9ñœãI<çÄsÎ@• äP<îœOeñ>Ð9îTTÎ@îÄsŽ;ç tÎ@ AtŽ;¹Ï9•CO9%TQ9ATÎ@çÄsŽ'çÄãÎ9ñ¸3þPáçÄsN<ßÄSN< tŽ;ñT6;ñ8;U6P9ñœÏ7ñœÃqHE¾sdäñ8DÎÊ ä9Ç@¾sÄÃ!ñ8DÎs”åç€È9 rŽœ#çøÌ9âö ‡@Ä!ñøF<·TäùÆ9 ò¸ÙËðÄ2 !€Œx"߈Ç7rŽŠ|c çøFER‘sÄãùÆ@‘sÄãùF<Î1sÄãeùF<Îs@ä9Ç@Êr@ä9Ç7âvŽx|ã3ߨÈ9¾s”å9GFΑ‘rÄ£ñpH<Î1s ä9G<þÎs@ä9GEÎAŠdÄö:G<Ü1Ê@äñpˆ;âqŽ„ÄãqG<Α‡dÄIÈ@ÎáŽxœ#çpÇ9âqŽxœ#çp‡C*rŽxT&‰Ç9âáx8$çÈ9âqŽx|#‚‹G9âqŽœc ç€È9¾sÄãñ8GEÎrÄ£ñ8Ç@Îs Ä!9G<ÎQ‘s@ä9Ç@Α‘sdäñ8GE*s”c 爇C âx”#•‰G9*rŽx8"çÈ7rŽrœ#çøF<Î1sÄã9Ç@Î1s ä9G<2o äñøF<Îþ‘sÄãåˆÇ9*B OÄã9Ç@sÄÃå8GEΑs@Äå€È9âqˆPƒñxDèqŽÏÐãeyÇ@ÞQzœˆïÈ;ò޲œÃ^ïÈ9âAsÐã¡Ç9 rŽxœ#ô8DÞ1zœc ô8=Α‘w@äŸñÄ3âáŽxœÃ9GBRŽxœ#îÈH9âáŽx¸#çpG<Îñ™sÄãñ8Ç@Î1s äåpH<Ê1sÄÃç€H9*’$$ç°×9rwÄÕ‰‡;*rwÄ£2åÈ9âqwÄãîÈ9âáxœ"瀈;âqþŽxœÃç(GEÎQŽxœ£9G<<r@Ä!9G<ÜsÄãqDΑr ä9D*3s@ÄçˆÇ9rŽoÄÃ!ùÆgÎ1s@Ä!ñøDÎsTä9Ç@Î1sÄãñ8Ç@¾‡@ä9G<ÎsÄãñ8G<ÎsÄãñ8DÎñ ˆ8d ß(Ë9â!¸sÄã9G<ÎsÄãñ8G<ÎsÄãñ8G<Îsˆ€Ï€„*rO Ä!ñpH<Î1‡Äã9Ç7Î1sÄÃ!9G<Îs Ä!9G<Îs äqH<þs@¤29Ç@¾s Dpñ8Ç@Î1rÄãñ8Ç@*oœc ‰‡C rŽœ#åˆG9òœc ‰‡CâqŽx8$稈CâᲜc å€H9rŽx”"¤øÇ9âáx¸Ã!ñHÈ9⎔"爇;âqޏc îpH<Îs¸#çˆÇ9âqŽœ#çpG<ÜqwÄ#!qÇ9âqŽxœ"ç€È9 rŽxœ#ç€È9rŽxœc çÈ9âqŽœ#çˆÇ9*rˆ8d çˆGerˆœ#çˆÇ9rŽxœ#爇C*rˆ”#çˆÇ9âñsþÄã9G<Î1sÄãñ8G<Αo@äùÆgÎsÄãùDÎa¯s|c ç€H9ÎrÄ£29Ç@Î1sÄãñpHFÎ1sØKpñ8G<Î1rTä9Ç@Êgb åˆÇ9âáwÄÃ!qHEÎw äñ8G<¾‘rÄãñx)*rˆ¼c ï8GFÞQ–s@äö:DÎQ–s ä9Ï‘‘sØË9@Ä;@Ä9@D6ÐÃ9ÐD¼CYœC<œDœÃ@x‚',C<¸Ã9 Ä9ÄCBÄÃ9ăCTD9ÄCeă;ÄÃ9 Ä9ÄÃ9¸CEœC<¸C<þ$D<œÃ@8DEœC<8Ä@œ)$D<œD”Ã9 „;8Ä@$D<œCFœƒ;ă;8DEœC<”Ã9ØË9TDBÄÃ9”Å9 D9@„C@„;T„Că;dÄ9 „CxB<œÃ@¸C<œC<œC<$Ä@œC<œƒ;ă;8D<œCE8„;@„C”9D<œƒ'œƒ½œC<œC<8D<|Ã9@Ä7Ø‹CÄÃ7ÄÃ9 Ä7TÄ7 Ä7 Ä9ÄÃ9@Ä9ÄÃ9”Å7@Ä9 Ä7@Ä9@Ä9ÄÃ9ăC Ä9TÄ9TÄ9 „C „CÄÃ9dÄ9TÄ7dÄ7@D9@D9ÄC9@„;ˆÀ',$À9”ƒþCă'ÄÃ9|†C Ä9 „CQFœC:ÆÃ9 Ä7ÄÃ9ÄÃ9 Ä9 Ä9 Ä9d„C Ä9ÄÃ9ÄÃ9ØË9 Ä9ÄÃ9ÄÃ9ÄÃ9TÄ9 Ä9ØË9 Ä9 „C „C@Ä7”Å9TÄ9 Ä7ØË9|C9ÄÃ7 Ä9ÄÃ9”Ã@œCE”C<¼)üC<œÃ@8Ä@¸Ã9 Ä9¸ƒàT„;œƒ;ă;ÄÃ9ă;T„; Ä9¸C<œC<œƒ;d„;ÄÃ9ăàă;œC<¸D¸D¸CFœ;Ñ9TÄ9”Å9”C:žÃ@|CY”Ã@œC<œCFœÃ7 Ä7 Ä9TÄ9TD9@Ä9 Ä9@D9@þD9œÃ@œÃ7@„CÄC9ÄC9ÄÃ9ØË9ÄÃ7@„C|D8D<8DEœCEœCEœDœÃ@œƒ½œC<œC<|CEœC<œC9ØË9@„CÄÃ9 D9@Ä9ă;Pƒ'”C<œÃ@œÃ@¸DœC<œCE”Ã@¸C<œÃ@œÃ@œC<”C<8D<œ5xÂ@œC<œC<œC<œDœDœCF¼Ã@œDœCEœC<œƒ½œÃ@¼CEœÃ@œÃ@œCYœÃ@œ;ÒCEœYžC<œCEœCz5ă;ÄÃ9¸ƒCdD9ÄÃ9ÄÃ9@Ä9ă;ÄC9TD`œC9@D9ÄÃ9$DYœC9þ Ä9@Ä9ă'ÄÃ9 Ä9”DœC<¸Ã@¸C<¸C<”Ã@”C<œD¸Ã9@„;ÄÃ9ÄÃ9 DBœC9@Ä9ÄÃ9”C<¸ƒC Ä9”C<œC9 D9 Ä9”D8D<œƒ;œC<œÃ@¸Ã9¸ƒCÄÃ9ÄC9@„'œÃ@œƒ; Ä9ă;ÄÃ9dÄ9ă;”E9@Ä9ÄC9@Ä9 Ä9”DœCEœCƒ'œC<œC<8D<ï\¹þxçž3x.Þ¹‡çâ‹÷-Þ¹rçâ+gðœÁrñÎ=<ïÜIÏ=lx®HeA–‹wÎà¹x=tÎ7Ï9Ï9 ôM<ßHuŽA=tŽAçÄsNYç|Ï9Ò9ñÏ9}Ï9cÐ9Ï9ñœóA$AçtN<ç<$ÐIç€tN<çÄóÍ9c@ñœÏ9ñœÏ9ñœÏ9ñœÏ9îœ#‚'Á@"À9•ã‰AçÄsN<çÄ#P<ÅsÎIçœtN<ç$AçÄsÎCç‡x0Ÿxø „8‡x8‡x8‡x8‡x8‡x8‡x8‡x8—ø†¯ˆ‡s@ˆsˆ‡sˆ‡sHˆ¯@ˆs@ˆsx‰sˆ‡sˆ‡sˆ à@ˆsˆ‡s@ˆs@ˆoøŠxø „8„øÊ8‡x8‡x8‡xø„8‡x8‡„8„8‡xø„8„ø†x8„8—8‡„8„ø†Jþˆsˆ‡sˆ‡sp‰s@ˆsHˆsp‰s@ˆs@ˆo8—ø†x8‡x8‡x8‡„ø†sˆ‡sˆ‡oˆ‡sHˆo Œo@ˆsp‰s@ˆsˆ‡sp‰r8‡„xR8‡„8„8‡M9‡x8—8„øŠx8„8„ø „8‡x8„8„8—8„øŠx8‡xŽ„øŠ„„8‡x8‡x8‡M9‡„8‡„8‡x8‡x8‡„Ž:‡x8‡x8‡x8‡x8‡xøŠx(‡sHˆsˆ‡s´r8‡x8„8„8‡x8‡x8‡x8„8‡xøŠ—8—8„8‡x8—8‡—8„8„8Ê8—8‡„þ8‡x8„8‡x8‡„8‡x8—8—8‡úŠx8„8„8‡¨8‡—8‡x8‡—8á:‡—8‡—8‡x8„8‡x8‡„øŠ„8‡—ø —„8‡—ø„8‡—8‡„8„8‡x8‡„8‡„8‡„ø „8‡x8„ø „øŠ—8‡x8—8‡„8‡x8„8‡x—8„8‡M9‡x8„ø „8‡ü —8‡„8—„8‡„8‡†,‡¨p‡xOXH€„8‡xðÊ8—ø†s@ˆoŽx8‡x8‡„8„8‡x8‡x8‡xøŠ„ø†—ø†xø„8‡xø†¨8‡o@ˆs@ˆþsˆ‡sø†—8‡x8‡„8‡oˆŠo@ˆ¯@ˆoHàˆ‡sp‰o@ˆs@ˆsˆ‡sˆ‡oˆ‡sˆ‡¯ø†x8‡x8„8‡oˆ‡oˆ‡sp‰sHˆ¯ˆŠoˆ‡s@ˆsˆ‡sHàˆRø‡sp‡x(‡„p‡sØ„ø wHˆsˆ‡sˆ‡r@wˆ‡sHwHwx‰sˆ‡s Œspà@ˆrp‰r¸Ÿsp‰sx‰s@ˆsp‰s.àˆxçâ;íµÛ~;î¹ë¾;ï½ûþþ;ðÁ÷þ )Ï9ñœO9 •ƒÓ93}CÐ9•sN<çÌô Aßœ3Ó7 DAO9ñœÏ9 3“Xñœ3“A Ï9}ƒ“AÏ9âq…|C!߈‡Afb‚|c&爇Aâq…|ƒ çÀÉ7rŽx|ƒ ß8A¾axäñ8‡B o(äñ8‡BÎ1ƒÌä 9ÇLÎrÄ£ñ(G<Êr(¤ñ(AÜáb@<ÎsÄÃ9AÎsÄã39ÇLÎsÄ ùF<ÎsÄãñøÆLÎs(D,9ÇLΡs(äþ9AÄsÄãñ0AΡrˆè9‡BΡsÄã 9‡~Î1ƒ|'爇Aâñ™|#çPˆX2tŽxd&çˆ)þØõCx¶ô]?úqKÞõcvý^.y—Ë\Ú.—µëÇ.m×àõcwýh]?âq…âçP"6ÝsÄãñ8G6Ã)NwÄãáŒÇ9”s„3çˆÇ9ÜsŒ3œñ8G8ãqŽlÆÃñ8G=Ýs¸#áŒÇ9²s¸#Åf<Î1N‚œ£žñ8‡8ãqއ†3çPb<ÎAsÄãg<ÎsÄãñ8‡ãqŽxœ#þçPb<ΡÄxœcœñ8G<ÎáŽxœ›ñ8AÎÍxœ›ñ8G<ÎñÐxd3ÔðÄ9Ê¡säñ8G<ÎsÄà 1H<Ρ±(äñK<Î1ƒÄãñ8‡BÎAsdèñ8AÎa¡s|#ç È9¾a¡s(Ä 1A¾sä ùA sÄãùF<¾ƒÄà úùAÎsÄã1H<Îñ ‚$ç ˆAôsŽ™œƒ QÈ9ò™|c&߈Ç7RŽxœ#çøÆ9rŽxœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœCžx$0“sxB!ßþHÑ9RŽ™|ƒ b!È7âqŽx|ƒ çPÈ9âqý|C!!È9fò ‚|C?çˆÇ7fr…œ#bQÈ7,tŽx|#ÁÉ9òx|ã3ùÆLÎoœC?爇Aâq…|'ç È7Îsà¤ñ(AÎAŠäñpÇ9âáŽsdœ9G<ÎsÄ 9G<ÎsÄãî È9”8“rÄCœñPb<ÎwÄÃñ8G<”Hwœ#瘉;¢D…„3;âáŽx¸#JŒ‡ãáŽs›ñPâ9fâ‚(ñr‡B”xŽx¸C!JÔ8ãáŽs$›úQþb<²©wÄC‰"r‡BÜwÌ›ñpÇ9âq‚¸ƒ ;âáŽx¸#î ˆ;â7aóñ8N sÄçˆ6Ïwd&ç Å?ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<΃Äãñ8G<ÎsÄà ñ8G< sÄãñ8G<ÎsÄãñ8G<ÎsÄà ñ8G<ÄsÄãñ8G<ÎsÄà ñ0H<ÎsÄãñ8G<ÎsÄãñ0H<ÎsÄãñ8G< sÄãñ8G<ÄsÄãñ8Gþ<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<΃Äãñ8G< sÄãñ8G<ÎsÄãñ8G<ÎsÄà ñ8G<ÎsÄãñ8G<ÎsÄãñ8G<ÎsÄãñ8G<΃Äãñ0H<΃Äà ñ8G< sÄà ñ8G<ÎsÄãñ8G<ÄsÄà ñ )ò …œC!åˆÇ9pò œœ'çÈÐ9âq…œ#çPÈ9frŽx$ß ˆArŽxœc&çPÈ9àÄ9ÄÃ7œC<|Ã9ăAXÈ9ăAàÄ9ăXÄ9ÄÃ9þ(„AÄÃ9ÄÃ7ÄÃ9èÇ9ÄÃ7œAÄLœÃLœƒ~œC<œƒBœAœÃL|C†„BœAD<œƒBœAœƒ~œA|ƒ›ÄC9è‡;ÄÂ2@‚ÄÃ9|AxÂ7Ä9ÄÃ9|C<”C<„BˆE<œAœNœC<œƒBœC<|A|NœÃLœC<œƒ~œÃ7Ä9Ä9ăAÄÃ7(Ä9ÄÃ9(Ä9ÄÃ7àÄ7„AÄ7ÄÃ9„A(Ä7Ä7Ä9ÄÃ9ÄÃ9Ä9ăAÄÃ9Ä9ÄÃ9Ä9ÄÃ9Ä9ÌÄ9(„XÄ7Ä9ÄÃ9D9ÄÃ9ÄC9ăAÄ9Äþ)üC9(Ä9ăAăXœƒ;ÄÃ9ăAÄ9ÄÃ9ÄÃ9ÄÃ9”C<œC<œC<œC<œA”ƒBœC<”C9„AăAÄC9„AÄÃ9ăXÄÃ9ăAÄÃ9ÄÃ9ÄÃ9”C<D9ăAÄC9ăAăAÄÃ9ÄÃ9ÄÃ9ÄÃ9ăAăAÄÃ9ÄC9ăXăAÄÃ9ÄC9ÄÃ9”C<D<”C<D9ÄÃ9ăA”C<AœC<”C<ˆE9ÄC9ăAÄÃ9ăAÄÃ9„XÄÃ9”C<”C<”C<D<œC<D9ÄÃ9”C<D<D<|C<œC9ÄÃ9”C<œƒ9ÆÃ9ÄÃ9”þC<œC<ˆE<œC<œAD9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9„AÄÃ9ÄC9ÄC9œC9ÄC9ăXÄÃ9ÄÃ9ÄC9ÄÃ9”ƒBœAD<œAœAœƒBœC<œC<Â?ÄÃ9ÄÃ9ÄÃ9XÈ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9(Ä9ÄÃ9ÌÄ9(Ä9ÄÃ9ˆÈ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9(Ä9ÄÃ9ÌÄ9(Ä9(Ä9ÄÃ9ÄÃ9ÄÃ9àÄ9ÄÃ9ÄÃ9(Ä9ÄÃ9(Ä9Ä9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÌÄ9ÄÃ9ÄÃ9àÄ9ÄÃ9ÄÃ9ÄÃ9(Ä9ÄÃ9ÄÃ9(Ä9ÄÃ9ÄÃ9þÄÃ9ÄÃ9ÄÃ9ÄÃ9ÌÄ9dÈ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9¤È9XÈ9(Ä9(Ä9ÄÃ9ÄÃ9ˆÈ9XÈ9ÌÄ9èÇ9ÄÃ9ÄÃ9ÄÃ9(Ä9ÄÃ9(5Â9ÄÃ9”C<|AœC<œƒBœÃ7Ä9Ä9ÄÃ9ÄÃ9|ÃL|C<œƒBœÃLœN”C<œƒB”NˆÅLœƒBœÃ7ÄÃ9(Ä9Ä7Ä9ÌÄ9àÄ9ÄÃ7Ä7Ä9(Ä7ÄÃ7á7XÈ9(Ä9|C<|NœƒBœƒBÄLÄ7ˆÈ7Ä7Ä9ăAÄÃ7(Ä9(Ä9„AÄ9ÄÃ9|AAÄ7à„þAÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ˆ)<$AœC<œ)„BD<œA„~DÆÃ9„AÄ9ÄÃ9ÄÃ7œC<œƒBœC<|ƒA(„AÄ9ÌÄ9XÈ7ÄÃ7ÄÃ9Ä9(„X„AÄÃ9dÈ9ÄÃ9ÄÃ9Ä7(Ä9àÄ9ÄÃ9ÌÄ9Ä9ÄÃ9(Ä9ÌÄ9àD9œƒBœAœƒB”C<œAœA¸C<Â?œC<|CŠœC<œAœC†NœAˆE<œC<œC<„BœƒBˆÅLœƒ~¸C<œƒ~œƒBœƒBAœƒB¸C<¸C<¸C<¸Ã9þÄ9èÇ9ˆˆAÄ9ÌÄ9„AÄÃ9(Ä9à„X(Ä9ăAÄ9ÄÃ9àÄ9(Ä9Ä9ÄÃ9ÄÃ9Ä9ÄÃ9(Ä9ăAÄ9(„AăAÄ9„AÄÃ9Ä9¤È9Ì„;ă;œC<œC<œC<œƒB”C<ˆAD<œƒBœÃLD<DŠœAœÃL”Ã9Ä9Â?XH2–ëLœƒ…¸AœN¸AœC<¸C<¸C¹ºƒ~¸ƒ…¸C†¸CЏƒB¸Ã9 /A¸C†œCЏƒ…¸ùžƒ…¸Ã9¯ˆœA¸ƒB¸Ã9(Ä9(Ä9Xˆ;Ä9ă;ă;Xˆ;(Ä9ÌÄ9È/A”C<þP)œƒBœƒB|A|AœC<œC<œAœƒ~œC<œƒB|ƒB|Ã9(Ä9ÄÃ7Ä9Ä7œC<œC<œNœA|A|ƒBœAœÃLœÃLAœC<œÃLˆ……œAœC<œƒBD<œAœƒBœC<AND<œƒBœAœÃLœNA|Ã9ÄÃ7ÄÃ9Ä9ÄÃ9ÄÃ9Ä9ÄÃ9ÄÃ9Ä7œC<œƒˆœÃLœƒBœA|N|ƒB”C<”N”ÃL(xÂ2@‚ÄÃ9ÄÃ9ă'(Ä9(Ä9èÇ7Ä9Ì„A|C<œC<œC<œC<AœAœÃ7èÇ9Äþ9Ä9àÄ9(Ä9Ä9|AD<œÃ7œƒBœAD<|ƒˆœAœC9Ä9ÄÃ9ÄÃ9ÄÃ9(Ä9ÄÃ9Ä7ÄÃ9àÄ9ÌD9ÌÄ9ÄÃ9Ä9ÄÃ9ÄÃ9|AœAœC9D9D9œAœÃLœC<)üC<œAœƒ;ÄÃ9„;ÄÃ9(„;Ä9ÄÃ9¸Ã9ÄÃ9ÌÄ9ÄÃ9¸É9Ä9àÄ9(„;„;„;ÄÃ9¸Ã9dÈ9(Ä9(Ä9è‡;œC<œC<œC<œA¸ƒB¸Ã9Ä9ÌÄ9(AœƒBœÃLœƒˆœA”C<œC†œC†¸Ã9¸Ã9èÇ9ÄÃ9ÄÃ9Ì„;(þÄ9ˆÈ9èÇ9Ä9àÄ9Ä9ă;ÄÃ9¸Ã9”ÃLD<œA¸NœC9ÄÃ9ÌÄ9(Ä9èÇ9ÄÃ9à„A”ƒAÄ9¸Ã9ă;(Ä9ÄÃ9(Ä9Ä)ü6ÅC9ÄÃ9àÄ„Aœ”;ÄC8•Ã9ăÅC6•C<D<”C<œCAA̾BÌ~<œC<ÿìíÇÃ9Dð+Äì+„õ[<ˆE<œAœC<„ÿìÄ9dˆX(Ä9ăXăXÄÃìÄ9ÌÄ9ÄC2ÆÃ9@œx.žÀxçâþ%80á¹x &¤Fê\Âxçâ LxÎbÂs ¿%<×1Þ9’Ï%<—ð\¼sÏY<O`Âo Ï%<ïœÅoÏ‘<—ð\¼oçâ <ï\<$ÏÅ;ï\¼oçHžKx.á7‹ßNž‹w.Þ¹xß–&<×ñ\¼s ÏÅ;ï\ÇoK¿ Løí\<ñΑ˜ð\Çs Ï,G²\¼rËuAj$ÏÅóï\¼sßâ}‹w®ãÀxãKx.á¹oiã‹'ðä·„ç:~‹w.Þ¹„ß, üÖñÉsßNžû–P`B Ïu<ï[¼sñÎÅ;—ð\¼sñÎÅHò\B Ïu<þ×Q És'ÏYï\¼sñHýKx.žÀ„‚(¡sâ9'žsÊ9'¡sâ9‡¤r::§œxÊIh xÎIè›xÎI¢xΉG “ʉG râ(žr:'â9'žsâ9'žsâ(â9'žrâ(žs:'žr*'â)':'žsâù&:§œr:'žrâ)'žâ(žsÊIh¡xÊI¨œxŠG xÎ)'žs(â9'žsÊI¨œxΉ§œxΉ眄ÎIH xΉ眄*'žsâ9'žsâ9'žs¨œsâ)'žrÎ)'žr:'â9'žrâ9'žrþ:'!â9':Ç¢s,:'Rþ±è‹Î)'![DÐA„``K뜴²H j-¶sâ9'¡sâ©&€xª ,ª¦€ŽJënã9g©sâ)'-NˆÞÓª&€“ª !+ `€a«f€s::‡á„ÎI¨œ¥ŠçØž!Å¢s::Ç¢sâù¦£sâ9'žs*'¡sâ9盄αèœx¾éè›xÎI蛥êè‹ÎIèœxΉ眄ÎI蜄Ήç’Ή盄¾Iè‹ÎIè‹Îé蛄α蜄²è‹¾‰çœ“αH oâù&¡sâùf©s,:ç›xΉG þoâ9'žs::'¡sH:'žsN:'žrH:'žsâ9'žsâ9'žsâ9'¡rΉçœxΉç . âÁ@$ "!œAÎ!ÎÁàªabàªaÜ¡@ ºá è`âáâáâA âA âáâáâa âáâa âáâA âa âáb âáâáâáâa âa âáâa âáâáâáâáâáb âáB ¢!¸áâ!âÁªaX à áªaâÁÀ-k!Î!Îàþb 0Œá´!Ρà @в"!¶áb!¶€¶¡,áB ⨠!Üál âáâáâá,b"!Î!Â"Î!Î!ÎÁ"¾á$â,ââá,â:ââáâáâá¾!!Î!Î!¾!!Î!!Î!Î!"!ââ,â,b â¢âáâáâáâHáÎaKÎ!Ê$Î!’A¾ ’!ÜàHÂ@þ ÜÁÀâA”   Æá ¬s À *Àâ¡”   Î!!`€ ¶a4 à Á"â\¼çx.Þ¹xçâ;¯\¼så Æ;7ð\¼sžëØñ\¼sË <2Þ¹xç,žx.¥ÌsÏëxnà¹rÏÅ;Wî Íxç@ž+ïœÁsËÅ+7ð\<›Ï•;ÏY€qñÎ ¬Àæ¹xåž3x.©åâƒ(ö-H¶ ‰ø-Þ¹6pw®œÅ-ܹ3&Z¼jâ›·-€»mÎÅ+ïÜ@gιK—%B¼jÊ ÜFþ ^µñª pWM@¼sîª Xî\¹xåÊ,g°\¼rËÅ+ï\¹xåâ•‹W.Þ¹åâ•X.^¹såâ•‹×{`¹xåâ•‹WÎ`9ƒç–x.žÍrÝÅ»†ƒA¼jâ·MñT3€;Õ ;Õ àN<çÄóÌ3Ëc@„ØÄ3”1@O5ÌSÍñœSN<ÔDXÌbÏ9ñÀB ˆe;Û€Ì9†Å# îÄ#Ö@çÄC )ñ”3Ð9ÙÏ9ñœ3Ð9}3Ð9 3Ð9ñ”cÐ9M3Ð9sÐ93Ð93Ð9ñœcÐ7ñœ3þÐ9ñœ3MsÐ9 Ù4Mñœ3Ð9ñœcÐ9ñœ3Ð93Ð7ÙôAßtÎAßÈ$Ó9ÙÏ9ñœcM}3P9Ï9ñœÏ9ñœÏ9ñœÏ9ñœÏ9"xò $ÄSN<6yÏ9Ù4Ð9}Ï7ñ|3Ð9}sÎAç@tN<çttN<çôÍ9ñ|3Ð9ñ|sN<çÄóÍAç tHçÄóÍ@çÄsÎ@çtN<çtÎAßœ3Ð9ñœsÐ93Ð9ñœÏ9sÐ9sÐ9ÙtÐ9•3P9•Ï9‘òAç TN<6Åc“É|É|a‘3¸þsŽ:Y0O96´À:2,O5œãN5T1Ð96´À:2qÎ:sN:±¸SM5œóÍTÎAåÄSN<åTN<å TN<å@dÓ@åœ3P9•3P9ñœcP9ñ|3P9ñ”OoçÄSŽAå TÎAåÄSN<å TŽAåÄSHåÄSN<åÄSN<å TN<åÄSÎ@åTŽEåÄSÎ@åTÎAçÄSŽEå TN<å€Ñ93Ð7ÔtN<ÎpN<†³4ÐÄ8ñ”O9ç äN<¤üsŽAåœsP0üF€ð›Äãñ°‰Aœwˆ%6)G:@þ À Â8ª1€x¦pG5 –œ#ÎÀ9âqg`Û€Mâá œ£8G5àrñp‡1pŽØ$6‰Ç9â!›Ä#‰çˆÇ9âa“xˆ%çˆXâ‘ÄØ$6‰‡MâqŽxœ#çˆmsÄC,ñ8‡AÎáŽsÄÃ&ñ8Ç/0Žj ` î¨ÆÎQÄ£pÇ9ª1€sÄã98wÄãéXÀ$èPaÕÀ9ª1€xØÄ îØÆâa˜x¸CÀƒ:0P…xØ$爇;@…xØ$6èÀ9,rŽx<ÃçˆÇ9¨wŽþœc ç€È9âñ ˆ|c 69È9@rŽØ$çˆÇ9b“”ã åˆÇ9 òxœc 6‰Ç9rœ#ß8Ç@¾q› äç Þ7 rŽŽ|ãñ8G<Îas ä9Ç@Îa›ÄãùÆ9âñs ä9‡A¾a“xœ#ç0È9rŽƒ|Ã"ç0È7:RŽƒ”c 倈;@@Še@Bñ8‡A<1›ä±I<ÎsÄã9‡A¾r äñ8Ç@Î1oÄãñ8Ç@Îas $‰9‡AÎsPÏ&ù†AÎsÄãùF<Î1sä9G<Îasþäñ8DÎsäù†AÎoÄãÔ;G<¾1›Äãñ8‡AlBŠØd 6‰‡’ˆD ä _ÈâQŽsô&çp (€ñ G sCî¨Æâ1ŽjÀçˆ9 ›Cñè†ö xŒ£Û7ÎAgÀ&切MâQŽxØ$6‰Ç9âqŽxœ#爇Mâa“xœÃ ç0ˆMâqŽÞ äñ°É@Ä› äñ°‰AÎo Ä&ùF<ÎsÄC,ùF<α”#åˆG9âa“ˆÅ ßÈ9âa“xœ#çøF<Î1sÄãþñ8G<Î1sÄC,ñ8G<α”#çˆÇ9âqŽxœ#çˆMâqŽx”#å8G<ΛÄC,ñ8Ç@lòx”#çÈ9œ " îÇ'¨Q ° ç0È9Üsâñ(G<Î1›Äã"†Ô!^ˆÀ ç8ˆ;â¡ gàå°ˆ,ŒghãrP@<ª1€xœÃÛ€;Èn@äÎ@9âq,(àñX€%â‘ Õ@<ª1wŒcU8G9l0€xœÃ ç8È9 rˆœã ç0È9,rŽƒœÃ çÈ9rŽxœ#çˆÇ9:Rêc þîØF€qŽkà€ç¨ÆÜwTcñ¨ÆÆQœ#à7âŽxœ#à8À9ÜqŽyÈbÜx†6ž!Ä£ˆ9ÀØ$åÇÜsÄã[à@<ÎQäâ î8Ç* °‡stà ÈDÎ1sPƒ9G<ÊsÄã9Ç@ls ä9G<ÎoÄÃ&9Ç7rŽxœ£ñ°É@Îastäñ8G<Λ”à çèÈ9 rŽxØd çˆÇ9rŽ|ã çÈ9¾›|#爇Mâ!–xœÃ 61È7âqŽ|c çˆÇ9rŽƒœãþù†AΛ ä±I3ð03ð03ð`/%àÁ x0Ì€3àÁ x0Ì@|3ß Ä7ñÍ€3àÁ Ä·Ì€3xß x0Ì€3àÁ x0Ì@|3àÁ x0Ì€3(Á^x0Ì€3xß Ä7ì…3àÁ x0Ì€3àÁ x0Ì€3àÁ xþ0Ì€3àÁ x0ñÍ@|3ß x0ì…{áÁ x°—ð`<Ø fÀƒ”€3àÁ Ä7ñÍ€{áÁ ì7ì…{áÁ x0Ì <˜fð¾ˆo/<˜fÀƒð`öÛ fÀƒð`<˜fÀƒð`<˜fPPƒßˆErŽoÄãùRÎsä)G<ÎasÄã9G<¾!sÄ"ñ8‡A΋ÄÃ"9‡@ÎasŒä9‡@Î!säñ8G<΋äñ8G<΋Äãñ8RÎsä#9G<ÎþsÄã#9‡@¾asŒä#9‡AÎ!sä9G<Î!s,TßÈ7âqŽxœÃ ù†@Î1’sTñ8G<ÎsÄãñ8G<ÎsÄãñ8G<Î![È9âñ OÄãçÈ9|5‹Äãñ8G<ÎoX$çˆÇ9âaœ#çÉ7rŽxœ#çˆÇ9âqŽxœ# ŠÇ9rƒœ#ß8ÇHÎsÄã9G<ÎsÄã9ÇH¾!‹äçÈ9r¤œ#ç@Ê9âñxœ#çˆÇ7Î!o€* âR9âqŽ‘”C çˆ)þqŽþx”ã9G<Î1’sÄãñ8‡AÊq.#î8G<Î!P¤切;FRŽs¸#îÈ9âqŽxX$çÈ9rŽxœ#Oç0ˆEâqŽxœ#çÈ9 ò‘|#‰Ç9FrœÃ çˆÇ9âq|C çÉ9rœC ç0È9 rƒœ#çÉ9r¤”ãñ8‡@ÊqœÃ ç@Ê9âñ¥|)爇EâqŽxœÃ É9âqŽxXd$ß8Ó9âq¤”c)çˆÇ9Rƒ”#Oå0È9âAŠœÃ~ræ-D ØB|/˜3^Àç?Û¯<è _ çþüùsfÂ>xÀ„}Ì™ ý4¥å<ƒ÷ÍÀ~1¨4§ùü‚NÛ//°_æÜ9¿àÏ/xß øÜôÐ/°ß øÜñ½Ôœ¦),"‹ŒÄ"ñ8‡@΋Ä"ñ8G<ΔsŒÄ"ñ8ÇRÎas,åù†@¾1’sÄã\:‡@,sŒäy:ÇH¾s å9G<Îo˜Õ È9 rŽxX$ßÈ9|uŽ‘œc$爇EFrŽxœC çÈ9FrœC çˆÇ9¸tƒœ#å@J9âQƒ¸CžX$`œÃ9‡@ÎsÄãñ8G<Îñxœþ#çXÊ9âq_}C ßÈ9rŽxœÃ çˆÇ7rƒœ#ßÈ7âqŽxœC ‰Ç9–ò œÃ çˆÇ9 ò œ#çÉ9rŽx|C ߈Ç9âqŽxœC 爇EâqŽxœƒKçÈÓ7âqŽxœ#ç(‡@ÎsŒä¤øRlÁ [üà…-‚1ú`ð"¶àE0xa‹`Øbô¶=ím± [Œ~Á½-‚ Úüð½-hï{ÚcôÁ°/‚1ú`ðÂ÷¶à…ïmÁ [ŒÞ÷¶à…ïyáû`ð¼/‚Á ßÛbô¾çÅ2lÁ‹`Ø‚¾ç…-x [ð"þ¶àÅ÷yá{^,ƒ-ðB0ðB0ð‚-,ƒ-ðB0Ø/íù//ƒ-ø///Ø/Ø//ƒ-ð‚-øÞèÙ/|/,ƒ-ðB0ðB0Œ^0ØB0ð‚ïž-ŒžïÙB0Ø/ø/,ƒ-,ƒ-/ƒ-ðB0ðB0ØÂèÙÂ2Ø//ƒ-øž-ðB0Ø/Ø/ØB0ðB0Œ^0Ø/ƒ-ð‚-Ð^0ØÂ2Ø/ƒ-//ƒ-ð‚-ƒ-ð‚-ðB<œƒ@œ)üC<¼Oô(¢ðÀ3¬EØBˆð€"b"ôÀ)¼?ìÃ.D&ŠbþèÂ?Œ"ò@ðÀ(*"6ôð@ˆO0A?Øb?`Ãôø"ŠÏ#ðüƒøôÀû0A?èšøAȼZÁ2þÈYðÀ(Æ€"Æ@ð°bÄ&òÀ(("`b ô`b ôðÀ8ò€"ò¼O¼#Œ"("¼Ï8Š"ôÀœ)¢ø,ƒ-p‰EÄ9ÄÃ9„EÄÃ7Ä9ÄÃ9Ä9Ä7Ä7Ä9ăEŒ„E|C<œƒAœÃH|ƒAXD<œƒ@œC<œC<œƒ@œC<œC<œÃ7X„@|RœC<œƒA|C<œþC<|C<œÃRœƒA|ƒEÄ7Œ„EÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ7„EÄ9 Å9ÄÃ7Ä7ÄÃ7ÄÃ9Ä7ÄÃ9ÄÃ7ÄÃ9Ä9|ƒEÄÃ9 Å9ÄÃ9ÄÃ9Ä9ÄÃ9Ä9ÄÃ7Ä7 Å9|ƒ@œƒAœƒAœC<œC<œC<œC<œC<œC<œƒB0@‚Ä9ÄÃ9xÂ9Ä9Ä9Ä9ŒÄ9ÄÃ7Ä7œC<œÃHœÃHœC<œƒ@œƒ@œC<œC<|Ã9ŒÄ9Ä9ÄÃ9ÄÃ7œÉ9ÄÃ9ŒÄ9Ä9Ä7Ä7ÄÃ9ŒÄ9ŒÄ9Ä9ÄÃ9ÄÃ9ŒÄ9Ä9„EþÄÃ9ŒÄ9Ä9ÄÃ9ŒÄ9Ä7ăEÄ9Ä7Ä7œƒAœC<”ƒAœƒAœC<œƒ@œ)üƒE„;üC‡zh‡öNJ舒¨‡öC‰¢è?ôCв¨ˆöÈöŠöÇöC‹’h?ØhŽêèˆöÃŽzh?øè?ôCÚh?i‡öC‹Ä9Ä)üC<¼c¼c Aˆð@xAˆÀ;Æ@A¼cì‚8XC<ðÀ;ÆÀ;*¢>X-ôÀ;Æ@A&2Á?¼£"¾#0Á?8A+Ü("(â;òð0? A A 0Á?ª"Z*ôþô@ ö@§"¾cXj¼c¼#ôôô@§öô@ ö@ ö@ ò@§Æ@A ª"(¾£"A "A"AA¼£"ê(òÀ;ö`b ôÄôÀ;öô`â;*"ôÄ@ öˆâ;ö@ Æô@ ö©¾cAPƒ'ÄÃ9Ä7Ä9 Å9ŒÄ9Ä7ÄÃ9Ä7Ä7Ä9ÄÃ9Ä9ŒÄ9ŒÄ9Ä7œƒ@”C<|C<œC<œÃHXD<œC<œC<œÃHœÃRœƒAœR|C<œƒ@|C<œƒ@|Ã9ÄÃ9Ä7œÃH|þC<œƒ@|Ã9Ä9Ä7ÄÃ9ÄÃ9ăE,Å9ÄÃ9ÄÃ9Ä9ÄÃ9ÄÃ9Ä9ĨÄ9Ä9œÉ7Ä7,Å7Ä7Ä7Ä9Ä9ÄÃ9ÄÃ9Ä9Ä9ÄC9ÄÃ7ÄC9 E9 E9ÄÂ2@‚ÄÃ9ÄÃ9ă'ÄÃ7Ä7Ä9Ä9ÄÃ9Ä9Ä9 Å7ŒÄ9|ÃRœÃ™œÃ7Ä7,Å9Ä9|ƒ@X„AœÃ7ŒÄ7ŒÄ9ÄÃ9ÄÃ9Ä7ÄÃ9ÄÃ7ÄÃ7Ä9ÄÃ9 …EÄÃ7œÉ9ÄÃ9äÉ9ŒÄ9ŒÄ9Œ„EŒ„EÄ9ÄÃ9”ƒ@œC9ÄÃ9Ä9Ä)üƒAþœC< ÍÐÄÃ9¸ƒ@¸C<¸ƒ@œC<Ô¯;ÄÃ9ÄÃ9°;Ä9ŒÄ9 @XÄÐÄÃÐăEă;ÄÃ9Ôo<œÃЄ;ÄÃ9„;Ä ÄЄ;„;ÄÃ9Ä9„EŒ„;„;ŒÄÐÄÃÄ9äÉ9¸C<¸C<¸C<œC„6¼Ã9ŒäC?¼Ã9LìÀ;2?üÃ0Á> ìôƒ0Á?¼ã?ì@ 1ðC>4Â?ìì€ Á Á Á8 Á Á¼#ììì€Áìì€ Á ÁÁ Á8ììì;ï€ Á Á Á°ó Á°ó Á 8©îÀ;:Á ìÀ;"ìÀ;î€ììÀ;îÀ;î©:Á ÁÁ¼£ìþêÁ¼ã ÁÁìÀ;îTò;:Á ÁÁtê¼#ììììÀ;:Á;.)œC<œCƒç Ê9¢rŽoÄãc9Ç7ÎspåßË9âqޱœƒ(Î-Î(Îa,Î!¾!Â"*¾(Î!*ÎáØââáâáâáâáâáØâˆ",â!,ˆâ¢ââá¢ââáÆââáâá¢â¢âˆâÆâ¾(Î+Îa,Î!Î!Î(¾!*Î!*Î!Î(¾!Î!Î!Î!Î(Î!Îa,Î+Î!Î!*Î!*Î!Î!ΡÎ!Î!Îþ!Î!Î!ÎáHá A¢",@‡@Ä0‰1pŽx#Ú€È9âQŽx|#çˆÇ9ÊrÄãùDÊñ’rÄ£Q)ÇZÊñ’oÄãñ(Dʘr@¤ñ(ÇK¾sÄãñ(G<¾“@äñ8G9^Rˆ|#*åˆÊ9Êr¬Å$¤øG<Ü•sÄ£ñ(G<ÊrÄ£9Dα–sÄãñ0I<Üa’x”"å€È9âQލœC-çˆG9âqˆ˜"çˆÇ9Üs¼Ä$ñ8DÎw@d9/9ÇKÊs@äñ(ÇKÊ‘r@¤ñ0I<Ê¡–s”þ"ç(G<ÎwÄ£dçpG<ÎQŽxœ"åxÉ9âqŽxœ"îXNTÊ“@äñxïKÎrÄãQ9G0?q”#!çpàn¤ñ8G<œ€săĈÇ5dÐx€#ÐÈ ¨pr#ÝAβsd€ ßX@*Êjà !AâQ<á÷ AÜQÄ-þà†:d„xTcãhHÍÎ!sÄãñ8G<ʲs ì(;‡@Î!säñ(G<Ê‘r ¬åˆÈ9¢ŽÔàÚ8‡kªQ€hCY @<ª1wTc©ÆÜqwäñÇÊ!s$THG,wTcñ¨ÆÆqŽˆ|(GBæ1Žt`À0ˆÈ9RŽxd€ éX€%RŽxœ#çˆGC¨á‰„œc‹ùF<ÎslðñøF<‚²†|#çˆÇ9âñ ž#"çˆÇ9âqŽˆœ£fߨÙ9âq”C çÈ7rŽxœC çHÈ7rœ#çˆþg"rŽš#çˆÇ9âñ ~#çˆÇ9rŽxœC çHÈ7"r”#!œ9G<o ìñhˆ@Î!o$äñ8‡@ÎsÄã 9G<ÎsÄãñ8G<ÎsÄã" Å3 !€ˆœÃñ8GBΑsä9G<Î!sä9G<¾sÄã 9G<ΑsäñhHB"s ì9ÇÏ!sÄ£! 9ÊÎoœ# IÈ7rœ#߈Ç9ì*o ìñ8‡@Îs$äß@Ù9âqŽˆœC çˆH9âqŽxœ#çÈ9Hñx¤ 3(3þšÓ¬æ2Ï`Í)˜A fPæ”y)˜A™g°æ¸ynþsšg‚¤`iž›gðç¬y€~t fPæzVó =ƒK§`žšgðçz)˜šg‚pÚÍ3Xó Ð<ƒV_šÿˆÇ9ÒB˜A IEÌ`†|XæÐÇ+ž‹2jð.8G<Ά8çð¨@ÜaŒ¸#+ B<ÀQhœÃçˆ1sÄã©1#P !Õ4èqŽ_(àÕ7Î_( Õ@<ºd4Ä pG5sÄ£ñ(‡@ÊQ³s¤çHH9þ’rØõ 9G<ÎrÄ£!ñø†@ΆÄãñàL<Š‘à¹8G5ÀsÄÃ8G5pŽm àñØÆRP ºR £Fè€;ÎQ”£H9âQõ€êHˆ;¶€Tä9G<ÎQ ãFè@9âqŽxœeÔðDCrŽx|ãñøÆ9òsÄã ùÆ9âqŽxœC çˆÇ9"rŽx|#!çˆHCâñsÄ£!9ÇÏ‘oœ# È9âqŽˆœc‹ßHÈ9âqŽx4D ‰Ç9„œs$äñøÆ9jv|ãñøF<Îþ±Ås$„39‡@¾sÄã9ÊΑ†ä9ÊÎsÄã(;G<Îsä)Ê”CD¸C<€),$À7Ä9ă'$Ä9DÄ9ÄÃ7$Ä9$Ä7 Ì7$Ä9DÄ9ÄÃ9ÄÃ9DCÄÃ9 Ì7ÄÃ9Ä9DÄ9ÄÃ9Ä9Ä9ÄÃ9ÄÃ9$Ä9 LCÄ9ÄÃ7Ä9 ÌsÅÃ9ÄÃ7$Ä9Ä9|CCÄÃ9|C<œÃ7ÄÃ9ÄÃ9|C<œC<œCBœC<œC<œC<œC<4„@œCD4D9 Ì9$Ä9lÐ9Ä)üC<¤À Ì@ Ì@ Ì@ Ì@šÍ@™Í@ äaþ™Í@ Ì€šÍ@™ÍšÍ@ ”À ¤À ”Ù ”Y äa Ì@™Í€š•À ¤À ¤Y–Ù ”Y Ì@™ÍšÍ@™Í@ Ì@™ÍšÍ@ Ì@ Ì@™åašÍšÍ@ Ì@ Ì@ Ì@ Ì@ Ì@ Ì@™Í@  Ù ¤À ¤À ¤À ”Ù ”Ù  Ù ”Ù  Ù ¨Ù ”Ù ¤À ¤À ¤À ¤Ù ”Ù ¤À  Ù ¤À ”Ù  Ù ¤@΀›Í@™Í@ äa Ì@ Ì@ Ì@šÍšÍ@ ìc™åa Ì@ Ì@ äa™ÍšÍ@ Ì@ äa Ì@ Ì@ ÌšÍ@ Ì@ Ì@™Í@™Í@ Ìþ@ Ì@™Í@™Í@ Â?œC<œC<ÌÃ> <äÃ"Â"è?ä7ø€)ä!DDCÄÃ9”Ã=¤ƒ1 @<œCD8œC<°Âœ‹ À9Ä&0@<0+l€œKœC<œC<œC¾À ”À ”À ”À>Î@ ð@ ””À ”ìã ”À ðÀ ”@–@ Ì@ ìc Ì@ ð€×òÀ ”À ”x-”À ”Ì@ Ì@ Ì@ Ì@ Ì@ ð@ Ì@ Ì@ Ì@ ð@ ”À ”À ”À ”À ”À ”À>–À ”@zí ”À ”À xí ””À ””À ”À xí ”Ì@ Ì@ ðÀ ”À ”À ”À ”À ”Ì@ Ì@ Ì@ Ì@ Ì@ Ì@ Ì@ Ì@ Ì@ Ì@ äa Ì@ þðÀ ”@–@–À ”À ”À ”À ”À ”À ”À ”À ”À ”À ”À ”@–À ”À ”À ”À ”À ”À ”@–À ”À ”@–À ”À ”À ”À ”@–@–À ”À ”À ”À ”À ””À ”À Â?$D9¸C< <üÃ>ìC>ð7˜‚+ø€)ä" Ì9DC¸Ã/ €@”ƒ@œƒ3À9C˜Â9ă3€@¤CÔBàAdÃPwôôÀt÷ô@ ôÀ \·.ðC¼Àt÷ôô@ Hwð@Ä@Lwð@ôà1`"ö@H°ÇB‡{ðèA°GŒ{ô ؃GF‚=öx8’dI“'Q¦T¹òä¿=’ú/Þ¹s4½Ë—ï_Ï~ܸñë‰È&ÍrçâH`@oçhž‹w΀sîIñ΀sñÎP¢MAD| 3 Þ9šçVİy.9µ¢ $Aqîª Ð$!@qñª 8O’\9ÏŠ€µ¾Å+G“sþçsñÊÅ;×Ùfçråâ•ë¯Ü9Îçâ‹W.žÍxåâ•›ÛÙ&Mwàr80À´sÕÄswn[wÕ¸«6 M+Ô:GÓ¸ç8¯ˆïMp RU àÎjcÜΰ@sgS›4ÏYa‡qØsœR¡©ÎÊ9çRh²)žsâ9'žs8;'žs:;‡³sh:'›â9'žsâù†³s:;‡&›â9gµsV‹ç›xΉç›sâ9'ž¹â9'žsj¤é›xΡé›xΉçšÎé웹hú†³s8û†¦sâ9'žoâ9‡¦sâù&žo8û†¦sVû†¦oŠŒgþ.šÎ¡éœxæŠç›xΉ3›h:‡³s:;‡¦sj´)žs8û¦³oh*‡³râ)§3a Aâá¾Á&<á8ã¾!NÎ3¾!Î!¾¡3¾&l"Î&Î&l¢3Î!Î&Îájä:ãâáâáVãhââájÄ&üÄ&âáhââáâáâáâáâáâáhb.hâhþâ¾3Î!Ρ3Î!l"¾3Î3¾&lâüä8ãâø!œ Y—À –@ p ¤@—@ ’U ¤À ’U œ@ þ Ðàô!´@ úÁ –ÀûA Ô ´ÀÕàœ@ ´À –À \áœ@ ÔàÆ@ œ` °!Ρ¤ Y¥@ œ@ŽUY –À ¤À¥ÀUY œ@ ’Õ –À ÔX ¤@Ž@ œ` œ@µ` P ´À –À –@ ’U ’U ¤` ¤ Y@ –@ –À Ty œ@ ´` ´` ´` ¤` ´À ¤À ¤À—À –À ¤À ´À þ´À ´À –À ´À –À –À –@ ’Õ ´À ´ Y` ´ Y@ ÔX ’Õ ÔØ“Õ –À –À –@ –@ œ™—À ´ Y@µ` 9Y‘Ù ´À ´@•µ` œ@¥ Y@•{ –@ P œ€þa5Ü!Ø#Ü!Î!Ê3Jˆ3l"Î!Î!l‚3Î3Î!Ü&ÎÁÎÁhÂÎ3Ü¡3Î!l¢FÎ!ÜáhâhÂ&âÁhâæáâá8ãÜáVc.hââáâÁ&â¡hâhââáâáhâh¢âÁ&âáâáâáâÁþ&8ãhââÁ&8Ã&âáâáVãhâ:£@hâhââáØãÜ3Ü!Î!Üáh¢V£8ãØc5lÂÎÁÎ!Êa5Î!Ê&Î!l"ÜaÎ&l"Î!ÜáâÁ&hââáâ¡âáhâ¨hââá:Ã&âáâÁ&âáâá8ã¾!Î&Î!Î!Ρ3¾!Î!Î&Î&¾3Î!Î!Î!l"Î!Î&Î!Î&Î&Î!Î!Î!l"Î&Î&Î!Î&Î&¾¡3ΡFl"Î&Î!Î&l‚3Îþ!Î!Î&Î&Î3Î&ÎáâáâáâÁ&âáhââá8ãhââÁ&8ã:ã8ãâáhâ8c.ŠäâáâÁ&ŠÄ&hââáâáâáâáâáâá8ãâáD€ž 3ÎÎ!Î&Î&Î&Î&Î&Î&l‚&Î!Î!Ρ3¾¡HÎ!¾3¾&Î&Î!¾&Î!Î&Î!Î!Î&¾!NÎ!lb5Î&¾!Îa5Ρ3¾!Î3Î!Î!l‚3Î3Î&Î!¾3Ρ3Î3l"¾¡3l¢3Î!Ê!þÊ!Ê!Ê3Î!Î!HáÜ™>à™™ à àÕ`~ þa œà^ úA œà^ üA œ àõaò!äÿaÆà öÁ ´À Ù ^ œ@ œ@ œàå‘Ù ´À ´À Þ ÞµÀÞ ´À Þ làà@ œ à éà™@ œ™P 0é½^ ¼Þæ ì“~ œ€ìÑ™¥ íÀëÇÀ“Þ lÞ ´à´À ^Þ Háâ¡Î!Î!Î!l‚3l"Ρ3ÎÁO:ãâáâáh‚=:ãâÁÎ&ÜÁþ&â¡âáФÜáâÁhâjÄÎ3Î3Ü!Î!Î!ÜáФâáâá8ãâÁ&8Ã&hÂ&h¢Î3Î!Î!Î!Î&Î!æb5Ρ3Îa5Î!Ê¡3ÎÁÎ!l"Ø#Üá:ãâÁÎÁlÂhââáhÂ&â¡âáâá4hÂΡ@8ã"Þ¹xçâÅ;wΠA„çÆCèС»sñÎEtx.â3Rãëè¡Âs¿]üfð\Äo Ï<ïÜÅsÏuüñœÃsÏ<ïœÂo ÏAFc@ŸÆ€1ŒA cà‚Ôð4ˆa \@ƒ?ü0}¼ã±àÐÀ-Èþ ÿà“ŒÌñŒ1ÈH hÈG$ÐðŽ|ä#`Ãø41Œ càÓd41ŒA \àÓɧ18r |`‰1ŒAFcÑ94ˆa 2ƒŒÆ †1Èh Žd4X:r bƒŒÆ £1ˆa bàŸ¸ .ˆa bƒ¸ .Èh 2ƒŒ¸ †1ˆa bƒŒ¸ †1ði 2ƒÆ †1ˆa 2ƒ¸ £1ˆ bƒŒÆ #.Èh bƒÆ £1DI cÃ`9AF\ÑÐ04HSFc‘HñsÄãñ8G<Îräñ(Ç9âQŽx|#þå@ˆA΄ă!ñpÇ9.rƒ¸Ã!”AˆCÎasÄã9G<ÎA™sÄ9‡AÊáÊœ#î8‡AÊA™s!ñ(‡ÆÊQ±säñ(G<Ê…|£båˆÇ7Ρs(äñ@ˆA¾†DäqÇ9âáŽxœ#î8‡AÊÄÃçpÈ9ÜrœC!çˆÇ9 ‚ƒœ#‰Ç9âAƒ”Ã!å@HDÊqwÄñ8G<ΡrœÃ åˆG9br(¤QÈ3Hq‡œ#ß0È7ΡsÄãµ3BâqƒœÃ!1È9rŽxœ#ßPÈ7 ò ƒœ#þß0CâqŽxœÃ ç0È7 òs8äçˆÇ9 rŽˆœ#‰Ç9âqŽx|ã9‡CÎsä9‡B¾q…œC!çpÈ7ÎaoÄã9ÇEÎsä9‡Æ¾qŽx $çˆÇ9‚xœ#ç¸È9âqƒ D!çˆG9*VŽŠ¹¤X$`sÄ9‡CÎaoÄãß0È9âqŽx|à ߈Ç9 ‚‡œÃ çˆÇ7r‡œÃ ßpÈ9 ò ƒ ¤¼ç0Bâqƒ $¹Bâqƒœ#çPÈ9 rŽx $çˆBâq…œÃ!ç0È9rƒœ#ßþPÈ9¾„Äã;G9 rƒœƒÿp‡È 2 b ƒÐ@‘A ddD1 AÙh ƒØÀ4ˆ!Gb@ƒÐ #4 2BƒÈ 2È à&ƒØ€6äH h7dD>±A dV*4Ȉ b ƒÐ 2ˆ bP6,Ñ 2ˆ bP6Ä€e;RÙb`ƒÈÀ'2ˆAÙb ƒÈ #e‹ b ÃJÉ #2À’ bP¶È 2  b È 2ˆ 2BÐ@‘AFÊÄ@1A ÊFÄ@>± b`ŸØ #2ˆ hPþ¶È€2ˆAÙbP6Ø@1A ddÄ1A døD‘A d`È #2ˆ bP¶Œ”Í1A l Å?RŽx”Ã!çˆBâq… $ç0È9rŽxP!ñpG<âŽs”#îˆÇ9 âŽr8äñ@H<Îás!ñ8‡AÎwÄÃñ8‡BΑsÄ£ aˆAòx D!å0È9 rŽxœ#"߈Ç9âÁx Ä ç0H9rŽxœ#ç0BâqQqñàAqqqáñàñpQsîpçþçPñPqñPñpñ@ñpñ€ñpqñp qñpñPqA ¤ç`¡açß`çð ñpq qñ ñpqqñ qñpqñpñpqñpqñ€qqqßç`ççß`çàç`çàßpñpñpqqñpqqqñpñpñpqqñð ñ€ qßç`ç`ççð qñpqqñpñ ñpƒñð qþ qß`ççççççççç ¤ð qžpñ€q qÁñp qó qqñ Áçç`ççàççßpççP1ßpñpqqñpqñpqq qñ€ñpqñp q qq q ñ ñ qñ€ñp¤ðñàol@G©”K ndÀsðQÉü•ÿÀl@KIJIþFl@þ–#h@l@àFàFþFL¹”dp”~ lny”dþp”sns@—àF{é— ˜l0l@ n~€þænédndà€9àFJéhÀdà†é–~ t9þ6hàod0¤ðçççaå€ñpqñpåeåîpî åçåpáç`åPçP;çî`åçç@ñp”¡ açP1å ç çP açå aç`ç ç`ç áçç`ååpñPQ qñ€áqñàñPç`çàáq Áñð þñpñPáñpî”aççàáç Q;çççP1áçÏ@ qs qqqqñ ñ ñ qñp ñpqñ qñpq qñpñ ç`çàßp q qñpñpqñ qñpñpqñpqñ€ñpñp ñ ç`çç ß`çßp qó ñp ñ qñpñpñð q q ñ Q QñP á à Ë þßçžàß`ç`çç`ßpqñp q߀qñpñpß`Y1ßàçð ñð ñ€sq q qqqñpñ qó qñ q qñp Áq Áñpñpñpñpqñ@ ÿàl0àæ~@-Ë-Ë~À-Ë~plp~°—~À~pà6làlвdàlàlàsÀ~0làlpqÀ~À~À-Û²lвwвlp~À~pg{¶lpl0-ëo-K~þn~Àsàwвwàlàþædp¶~Àw0~À~À\Ë~p~À-Ë~À~À~À~À~À~@-{¶sвl0~À~ÀgëþælàlàGÙ²làlàlàGÙ²dàwÀwàlpþÖ²Kélàþ†¶lp~À~°”~À-Ë~À~@~ÀwÀ~À~@-Ë~À~À~Àw0~@-Ë~À~n-Ë~À~ndààv~À~n¤ðQWPWqz ÀzðzðñPñPñPñPñÀœñpþñàñpqñPqq QÁ QqñPç`åçîpåç`çáqåç`î çPñPq qñ ºyQµsñpqµsñPQñpqñpå å îpqåuqñpñpáñpñPÁ ñ ñpQ qå`åçPsñpñ€ ñ ñpñpÔ@ qñpsß`ççç`çßpñpß`ç`çç`ç`çççpçàþçççççpçàçßç`çð ñ qó qñpó ñpñð ºç ç ß`ç ç ç çàçç çççç çç`çß ç ççç`åpñpñpñpñp"@ Ï p qžpq qqñ ç`ç`ÁÎñð qñ€ñp ñpñpqñp ñp qqñpq ñ ñ ñ ñpñ ñ qñpñ€ñð çþ`ç ßpñ çàçßàß`ßàççç çå ç¤ðñwàlp¶qp¶qÀhqpq€¶íÙhwÀgËŸwÀqðÙl€¶™lp™}lŸ}¶™Íhl€¶~ÀwÙwÙwÀžÍhËg›ÙwÀgËghlplàÙlàÙ™¶qp¶qp¶qàÙ-ËwÀwÀwàg nwÀwÀh˵hhËŸÍwÀµgwÀº¶lp-‹¶lp¶lpqpqpl Ûqp¶lplàÙþqpqp¶q€¶~Ù.àl@ ÿpñpñPñ€®à º  ¦à ¾` Ä` ïðƒpqñpñpqq Qñpñpqîáç`ççç`çå çP;ç`ç`å`ÕñP `å å å`ç ç`åP `߀qñ ñPñ ñ çpçßpqñPiç¡åpñPñpqñð ñ€ñPQ  çPñP `VÀ q qñ€ñpQñPQÕ0þ QñPç áçß`åpñPñP± ¤`ç`ç`߀qñpñ qñpqqq qñpñpñ ñpñ€ñp qñpßpqñpñ çç`çp ççßpñð ç`ß aç ç߀ñð ñp qñ qñpqñpñ ñpqñpñ€qñ ñ  ñ çç ççççpç ç çßåpS¤° þ ñpñpñà qñpßàçð ç`çç çP1çç ñ qñð sñpñ q qqñpß`ç`çß`ßç`çç ç`ççç ›ç ç`ç`çç çàççßP;çPqå ç@ ÿwÐÕ}p¶}pÕ}p¶}p¶}p¶}Õoþæ}p¶ÕæÕ}p}p¶Õ}p}p¶æ}€¶Õwö¹ÓG` ïô¹ÓçNœ>}îô¹ñNĈþwâ(Œx§ÏŒ#&Äx§Ï> ûÜÁØçNŸ;ïô¹ÓGa}îÄés§O–AûÚçNË8wú(Œ(0â wú܉x'bÂ>ƒÞi'bˆûÜés§À wúĉs§À> # ìs§Ï>wúŒ#°Ï>wüú¯\<Äñª,®’&ž4ƒé¤GO¼sçâ‹w.Þ¹rœ‹W.^æxÎÄ;Wî\âxç`Ã>ïÜlÄçŸ3âÌåâ¹sw.ñ¹xå—;Wm@9u€2ŸCœ9^æxß`oq.Þ9uâK|qæxçâeŽw.Þ¹Äßâû†øâsñÎþáF|qfþâ9±sš9A€.`ãœj('žs;§›?â!GhÎÙ„ÄÎ)6Ä2‹'3#€¦Īàœm@ˆçÄ2+Äx¾Á  ÄαÁ…s;1gÈ ±sâ)±g<9±oË,±s;±sâ9±sh<'žo;'žs`;±s¾‰çœÄ¾9'žsâ9‡ÆxÎñœxÎíÄΉçœoâ9±sâ9±o;'žs@<'žs;±sâ9¶s;±s`;±oâ9'žsâ™.±s;'žÌ`;ç›xÎAì8ã9çÄΉçœXË,Ös¾Aì›Ä2CìœÄΉþçœrÎIìœxΉçœxΉçœxÎÁ“g ¶s<É ¶o;Äsâ9±oâÉ,±o`;'žsâ9‡ÆoΉçœxΉçÄΡñœxΉçؾIì›ÄÎIì›ÄÎAìÄÎñ›xΉçœx¾9'žsâ9Äsû±Ìâ9'žÌû&žs`;'žsâ9'žoÎíľIìœxÊIìÄ2CìRþ‰'³x܉§wÎ!îwâ)Çs܉çwr§wâq±s`#îwΉ§ws'žsÜ9‡8âΉçœxàŽ§¸Ý9‡¸sò&.âsçˉçwâq'¿Ï‰çœxÎþ‰çœx܉§wâq'žrâ)‡¸sàŽ§œxÎqçwâ)±r+çœxüvçââ)'žrÜ)çœrΉ§wÎq'žss±r܉§œxÎ)§âÎÉ;žsˆË ±sž/1wâq±râq'žsˆ‹§œxÊ9±s`+îsâq±râ)'žrÜ91wâ)çĸ#åpG<ÊAœx”ƒ8çpG<Êqĸ1ĉ‡;ΑRü1™A ,àñŽwÀïa á‹\ñ8œw æñøÆ9“™rÄ£ç€M9âQŽx”ãˆ)G<ÔQ ¡‰9G<ÜsÄ£‰Éþ bÎQ¸ã°)bΘsÄãñ˜N5 pŽxL'ç€Í7sŽxœ1çˆÇ93ØœƒFç@L9âqŽx”ƒFçˆGfâQŽÄœ#éXÀÆ‘ŽRøáÕbÊqÄLgˆ‡;ª1€rÀæñÇsĨ£Âtª€xTcñ8Gb2Ž Ä£çˆÇ9¤1hÄcàlÎgDçˆÇ9âñ RÄ£ñ8GbΧs$&3ˆ9Gb¾‘˜sÀæˆ9b΢sÄãñ8G<Α˜oÄãñøb¾˜o€è‰ùlÎsÀæñ8G¬Î›sÀæñ8þb¾s æ°9bÎsÄã°9lÎñxœDç@Ì9sŽxœ#1çˆÇ72s &3‰9b¾‘˜sÄã°ùÆ9âñx|1çˆÇ9âqŽxœ#1çˆÇ9âq6åˆG9âQŽÄ¸¤X$sÄãñðbÎñxd&çHÌ7âq#1ß@ÌtâqŽXM6çHÌ9¾‘˜s|DçˆÇ9¾˜Ì æ°9Gb¾‘˜s æˆ9bÎs æ±BÌ9âñ Äœ#™AÌ9htŽÄ|#çøˆÎ‘˜sÄãñÈL<2“˜sÄã‰9b2Rüãˆ9‡;þÎwÄÃç@Ì9SŽÄ¸ãî˜NuãáŽs¸ÃçˆGuãqiw:‰qG<2wÄC»îÈL<´{ŽÄ”#1切vÏáŽsh÷ñpÇ9Ê‘™xœ#™Y¯vãqŽx¸#îˆÇ9â¡Ý̬÷ñ8G<ÎáŽx¬÷ñ8G<Îwœ#Ó‰Ç9Sàxh7îˆÇ9âqŽx¸1çˆÇ9âqŽxdf½ÕGfâqwÄãñpG<ÊwÄãˆqbÜqظãñÈL<2r F»çˆGfâáŽsÄ#3ñÈL<ܘs”#çˆÇ9âqŽx¸#ÕEÌzÏwœ#ÚÍŒ;þãŽs$ævÇ9ÜsÄã¤øÇ9“CÀCúÈÇ;àáS¼#ùЇ!ʘrÄ£ˆ©†p€qd¦ñ8G<œ€Ì€ã €  áFP çˆ&nœ ð7Θr æ˜`€,pÄT#Vøj™j À ¨@ ÎjÀÕbÈ‘ƒÀ ˆ!Ç Pp#€$P‹j1ÝÈAЄsÄ£Ä6pbÐèñ8lÎo æˆ9G<2ƒ˜s”#ç€Í9âqŽr æÎÀ8@Th¸4ÎQ¸€þ  ç(bšq€sÀæ˜`€,PÄTcñp@ì] Ø4ãçHŒ;ÆÁc–(G<Îs Æ8G<ÎsÄãñ85HqŽxœ#߀Í7â‘™o æç€Í9sŽxœ1çˆÇ7âqŽx|#ç Ñ7âñ 8!&3‰9G<ÎsÄãñ8G<¾›Ì$æ :bÎÌÄãñøF<Îo€è߀Ó9ó ÄœãˆùlÎsÄã°ùbΘoÄã‰É bΑ˜s|ƒFç@Ì9sŽÄœ#߈Ç9sÄœ#1çˆÇ9sŽxœDçˆÇ7`sŽþxœ#çˆÇ9ÊqŽxœ#çˆÇ9âqŽx8 …`€„€sð„Ä8ÉŒx8ÄøÄ89‡x8‡Ä8Ä8Äø†s‘s‘s@Œsˆ‡s@Œsˆ‡sˆ‡s€sˆ‡sHŒs@Œsˆ‡oˆ‡éˆ‡Ì@Œs@ŒsHŒoHŒsHŒÌˆ‡sˆ‡s@Œo@Œsˆ‡sˆ‡sHŒo@Œo@Œs@ŒÌˆ‡s€sø†s@ŒsHŒs€s@Œsˆ‡sHŒsˆ‡r‘sˆRø‡xp‡x8‡xÐ.Ø(Ä8‡Ä(‡Ìˆ¼x8‡Ä89Ä(‡x˜)ÄpÄ(‡x(‡sHŒsˆ‡sHŒr@Œrþ8ÄÈŒÄ8@Œw‘rˆ‡r€w8‡Ä8‡x8‡x8‡xp‡x8‡Ä(‡x8Ø8‡x89‡x(‡x8w8‡xpÄ8‡Ä(‡xpÄp‡x8ØÐ.9Äp‡xp‡s@Œr@Œsp‡Ä8‡Ä8ĘwH w ‘rˆ‡rˆ‡s@ í‚s@Œs‘sˆwˆ‡sˆí‘s‘r@Œsˆ‡s@Œs@ŒrHŒrHŒrˆ‡rˆ‡s@ wˆ‡s …8!xÈ}Ø4nðW˜´wȇW(‡sˆ‡ê*0g€s€spg€Ì bp‡kˆ‡uh@Œ w bp‡þnHŒÌˆ‡sÈ*(‡°„r8‡j€'x‡t° p‡j€*@ ‚x¨†ˆ‡j€r8hm(‡Oø†xèb8‡k8‡m€qˆ‡s¨†@ hs¸ X‚x¨†x‚Ì È 9‡xÈŒx(‡sHŒÌ€Ì€r8‡ç‰‡s@Œs@ŒsH‡¨O†xÈŒj€À†tø ˆ‡m€s¨†‡q¨†HŒsˆ‡Ì‡ˆ‡rHŒsÈ*(‡°w8‡j€x¨†‡xxžÄ‡8‡x(‡x(‡sH pˆ‡sHŒr8‡xp8‡x(¡R8þÄ8Äø†x8Ø8‡x8Äø†x8Ä8‡x8‡xÈŒÄ8‡Ä8Äø†sˆ‡Ìˆ‡s@Œs@Œo8Ä8Ä8‡x8‡Ä8‡x8‡Äø†x8‡x8Ø8‡Ä8‡x8‡P<‡x8Ä8‡xÈŒx8Ä8Äø†xÈŒÄ8‡Ä8‡Ä8‡x88ù†sˆ‡s‘sHŒs€o‘s@ŒÌ€oHŒsˆ‡sˆ‡s@ŒsHŒsHŒoˆ‡sˆ‡sˆ‡sˆ‡s ‘sˆ‡Ì@Œsˆ‡sˆ‡sHŒrEØp‡xRXH€x8‡o@ O@ŒsHŒsˆ‡s@Œs@Œé@Œsˆ‡sˆ‡sˆ‡s ‘o@Œs@ŒÌþ€Ìø†x89Ä8‡x8Äø†Ä8‡Ä8Ä8Ä8Ø89Ä8‡x8Ä8‡Äø†Ä8‡Ä8‡x8‡x8‡È;Ä8‡x8‡x8‡Ä8‡x8‡x8‡È;‡Ä8ùÄ8‡o@Œs@ŒrHŒs …ˆwHŒÌˆ‡s(‡x8‡x8ÄÈ Ø8‡r€“sˆ‡spÄ(Ø(‡x8Ø8Ä(‡x8‡xÈŒÄ8‡Ä8‡Ä8‡xp‡s@ŒsHŒÌHŒs@Œs(‡x8‡x8Ä8‡x(ĘŽxÈŒx(‡sˆ‡sˆw8‡x8‡Ä8Ø8w@Œé€rH wHŒs€sˆ‡sˆ‡Ìˆ‡s@Œþs@ŒÌˆí‚“Ì(9‡xpÄÈŒx8‡xÈŒr@Œs(Ä(Ø8‡x8Ä8ĘŽxÈ 9‡rˆ‡r‘̈w8Ä8‡ÄÈŒx(‡Äp‡x˜ŽxÈ Ä8Ø8‡x8‡x8‡x8‡xÈŒx8Øp‡x8‡x …@Œs@ŒsxxØ´|xnðS \} Ä8‡ÄH‡Uà€sp‡xÈ Ä8gwˆ‡s(Äp†8wX48phxwÈ g0€sˆ‡sHŒhdp#èÄØà†x8‡_P€s¨‡rˆcP€s¨†8‡j€sX‡€†Ä8Äp‡xpþg8w¨†HŒj€o‡€wˆY8€s؆à†sˆ‡h Ä(‡x8‡x8Ä8™ŽÄ(ÉŒÈ;‡x(‡Ä(†€€¸€\˜‡jnˆzpˆ‡jw¨†@Œj€sH xa€Ž€sˆ‡hdp#èwˆ‡jw¨†€ Fxሇsˆ‡qØH…s@Œsˆ‡sˆ‡sp8‡x8‡x(‡x(Ä R€Ìˆ‡sˆ‡s@Œs‘Ì@Œoˆ¼s@ŒÌHŒs€sˆ‡Ì@Œs@ŒÌ€“s‘sˆ‡s@Œsˆ‡s@Œsˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sþø†x8Ä8Ä8Ø8Ä8Ä8Ä8‡x8Äø†x8Ä8Ę9‡x8‡x8Ä8Äø†x8Ä8‡x8‡x8‡Ä8‡xÈŒÄ8ØøÄ8‡x8Ø8Ä8‡x8‡x8‡x8‡x8@ÌŒo@ŒoÄo@Œsˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sˆ‡sRxHÄ8‡x8O€oÓs@Œsˆ‡s€sˆ‡o@Œsˆ‡sˆ‡sHŒsˆ‡s€s@Œsˆ‡o88ù†sˆ‡s€s@ŒoHŒsˆ¼ÌHŒoHŒs@Œsˆ‡sˆ‡s€s@Œs€sˆ‡oˆ‡sˆ‡s@Œþsˆ‡sHŒs€“sˆ‡sˆ‡Ìˆ‡s@Œo8‡xÈ Äø†x8‡Ä8‡x8‡x˜Žx(Ä8Rø‡s‘s@ŒsHŒr8Ä8Ä(‡ÄОç‘r8Ä(‡Ä8‡j€x(‡Ä(‡x8‡x8‡Ä(‡sˆ‡ÌHŒrHŒrˆ‡Ìˆ‡Ì€r ‘s€r@Œsˆ‡rHŒsHŒsˆ‡sˆ‡Ìˆw@Œr‘rHŒs‘r8‡x8‡x(Ä(Ä(‡xÈ 9Ä(‡x(‡s@Œsp‡s@Œr8‡xø†s€rˆ‡rˆ‡r@ŒsÐ.Ä89ÄÈ Ä8‡õJŒrˆ‡rˆ‡rHŒs€rˆ‡s@Œs@Œrˆþ‡rHŒs€ wˆ‡rHŒs@Œç‰‡s€wHŒr@ŒsHŒs€sˆ‡s@Œsp‡sˆ‡sˆRø‡sˆ‡Ìˆ‡s xÈ}à‡|°0…Mã~ 9p(hˆg€sHŒrˆ‡sp†8‡x`… p€È Yˆ€s` @ VØ xñ8‡Ä8‡xØ‚È chp‡mÄ8g€x؆ˆw(gw¨†ˆ‡j(€sˆ†8w@ŒspVØ xñp‡j€xÈŒj€sˆ†(‡x8gw¨†HŒm€xÈŒxø†x8‡Ä(‡x8ùÄøÄ(‡Äþ8‡xÈ Ä(ÄÈ Ä8z˜‡q¸`€q؆ˆ‡sˆ‡m€x¨†ˆ‡j€sˆ‡m€s@Œs jx†b8ZÄØ‚ˆ‡s0†€†q¨†8‡j€éˆ‡g †e( õgH X0€,°€s@Œr€ g€s@Œsˆ‡sˆ‡sˆ‡g …̈¼o@Œs@Œs€s@Œo8ÄÈ ù†s@Œs€“sˆ‡s€o@Œsˆ‡s€o8‡Ä8ØøÄø†x8ùÄ8Äø†xøØ8ùÄ8‡x8‡Ä8‡Ä889‡x8Øø†x8‡Ä8‡x8‡x8ØøÄø†sˆ‡s@Œþsˆ‡oˆ‡s@ŒÌˆ‡sˆ‡sˆ‡sˆ‡o‘s‘oˆ‡s@Œsˆ‡sˆ‡s€Ì@Œsˆ‡oˆ‡sˆ‡sˆ‡sHŒsHŒrHŒrˆ‡rˆ‡rˆ‡r@ íRXH€x8‡Äð„søÄ8‡x8‡oˆ‡sˆ‡Ìø†Äø9‡x8‡xÈŒx8ù†Ä8‡x8Ä8Äø†x8Äø†xÈŒo€sˆ‡Ìˆ‡sˆ‡s@Œsø†Ä8‡oˆ‡sˆ‡oHŒo@Œsˆ‡s@Œs€s@ŒsøÄø†Ä8‡x8‡x8‡x8‡x8Ä8ØøÄ8Ä8‡x889Ä8™ŽÄ8‡È;Ä8‡x …ˆþ‡sˆ‡s(‡Ä8Ä8)‡Ä˜Žxp†ˆÿ0SHŒêЇsˆ‡j€x8‡rˆ€8ï\¼‚Ï3ha¼rñÎ4"Y¹xå ž+w®à¹‚çâ!Œw.Þ¹xåÆ;‡R!Âxåâ!<ï\ÁrÏLñã—¢sËL6@‚¤þŠwΠ3çÈ 05Ó%@–Á’;uL‹çl€Ás @à*æ.ž,㪀VP–wÛœ«6ÀÝ:ÐÎ$ÀÔ¸sθSMçTÍñ¬4ñÌ#‹îT3@AçT3€BçôMAçÄsŽAçÄsN<çÄSNAßÄsŽBçÄsŽBç„PAÆ0N5œÏ9Õ àN5¸³ÍñŒSÍñœ£;àpN<óœÏ àPO5¸SÍSÐ9à Ð9ê<€G9TqN<çÄSN<ç8À9ñœÏ9ñœÏ9ÔRÐ99BñœSÐ9þ}Ï9SÐ7}Ï9cÐ7óÍJñ|cB}SS!Ï9ßtN<ç(ôMAçÄsNAçtNAÅsNAßtΧçÄsN<ç„Ð7Ï7ñœóÍ9+Ï9Ï9ñœÏ9ŸÆsŽAçtÎJçÄóM<çtÎ7(!„Ò7SB!´Ò9ßtNAåœÏ9ñœÏ9ñœÏ9ñœ#)Ï@"@AçÄsŽ'ñ ¤Ð9ñœcÐ9SÐ7ñ|³Ò9Ï7ñœSÐ7}£Ð9SÐ9Ï9(£Ð9Ï9Ï9ñœSÐ9ñœcÐ9}sŽAçtNþ<çtJç(ôMAçÄóM<çtNAßÄsN<çÄsN<ßôM<çÄsJçÄsNA圳Bñœ)ÿÄsŽAåTNAçÄSN<å8¥Ð9ñ8#À9é\cƹ tNAîT3€BçTN<å TBÏ9•£N QN<tNAåÄSΧçTN<åTN<åÄSN<çtN<ç tŽAåăAçÄsJçÄSN<çÄsNAåÄsNAçÄS¸ñœSP9 n9ñ”SP9SP9çtŽBåœc%åˆG9 rŽ‚”C!ç(È9Prƒœ£ å0È9âqƒ”C!çˆÇ9RþŽ‚”#å(H9 â îˆÇ9 r[ì#åˆBâxð#ï ‚‘Ô¤ñpJ<¾‘ŽghCÎÀ2ÆsÄÃîpÎ@#éøAÎs¡ÐF9Àhœ#?@<ÎQsÀbÀÐ5¨!¸£hÁ8Ô Ä£hÁ8º ¸£8G5€´€é°Å9ÖhÄ#?À8È!h ¤@ `0Žn` ç¨ÆÎwTc)GA¾qŽx D!ß8G<ÎsÄãñ@ˆAÊqŽx”#ç(È9âQƒl# À(Ç5pþxT#qG5pŽj ÀÕ@<Üpãñ@ˆ·q€xœ£ ² 0ê¨ 90àÕÀ8À!nœ#ç(ˆ;Àq„ä[àÀ<ÎQä¢ ç(È9œ!€s€ë¤0È9VrŽ‚œÃ )È9âqŽxœÃ ç0È7âqŽxœ£ ç(BâqŽoä9GAÎs äŸr J¾qŽxœãSç(Bâ”xœ#‰Ç9âñs ä(9GAΡ„ä+ùƧÎsÄã9G<Îs ä9G<ÎsÄãñ8GA¦¢sÄãñ8¸ÎasÄãñ8J¾qŽõþ¡Ä Å2 !€oäñ Å9 rŽxœ%çˆÇ9 ‚‚œ#çˆÇ7rŽxœÃ NQÈ9Å çˆÇ9 ò …|#ç(È9âqŽ‚œÃ çPÈ9 rŽ‚œ#ç0È7 rƒ ¤ çø†B¾Qs(äùFAÎsäñ8GAÎQs ä 9GAÎas”#å@É9HÁƒ $ç(G<Îsä 9Jœ€r”Ãã0În(!¨Á8ÎQB¨Á9âQÄ!Õ À7âÑ$ t(@<ÎQsÄã˜`€,€‚@À rŽxœþ£ñ8G9 ‚x8¥ñ8G<ÎQsÄã9‡BÎQŽ‚8E!åøÔ9 ‚xœ#‰Ç9 rŽx8%åˆG9V‚O#å(B â”rä)‡BÎsäqJ<R…œ#åX B rŽ‚œÃ )ÇJœ„äAH<ÎsÄãñ˜Ê9Äã9G<<ñsÄãy"à‘_sƒüø?úÑ~ â9G<Ü;#ãb<Îw8C爇 $ðÐañ(Ç9Œ€DÁè0€sÄ£ñHÇ Xw„HE5   þ î8G5   ãpG5àŽm  äÈAƒxœCÁè0€x¸Ã @@-ª1€x¸£'ÀšpŽxTc9G5Pƒœ£ ç0È9âq…œÃ ç(BÀu…œÃàÈ@ÃÕÀ9¤X¸cpG5sÄà @@* "Epà9Ç vsÄ£à@*ª1€xœÃ @@-âq)‚ã9G<`ahœÃçÊqŽxœ£ Î@<ÊQrÄ£¡)¾s(ä ùFAbs ä9G<΄ä9GA„|êþßPÈ9 rŽxœC!çˆB rŽxœ#ç(È9 r”|C!çXÉ9 òxœ#)BVrƒ $çˆÇ9¾QsÄãñ8G<΄€ëß(È7Ρs¬ä 9G<¾QoBÄÃ9ÄÃ7(D9Ä7ÄÃ9Ä9ÄÃ9Ä9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ÄÃ9ˆ€'<$À9(„'Ä9 Ä7 Ä9B(Ä9ÄÃ9ÄÃ7Ä9ÄÃ9(„SÄÃ9BÄÃ9€‹SÄ7ÄÃ9€Ë7¬BÄ7Ä7Ä9ÄBÄ7Ä9(Ä7Ä9ÄÃ7ÄÃ9ÄÃ9Ä9ÄÃ9ÄÃ9ÄÃþ9|Ê9Ä9Ä9Ä9ÄBÄ9Ä7ÄÃ9ÄÃ9ÄB(D9Ä9Â?ÄC9Ä9Ä9D9 D<œJ”C< D<8C D<œÃ/ @<œƒ ´7¨ƒ ,Á8Tƒ´À9tA9‡@ÜqŽxœÃñ8‡;âá‹Ä& qì¾…ÄãñøAÎ…Äã9AÎsä9‡@ÎáŽsÄ/çpÇ9Ÿ”#x)G<"r$çå^âŽsä)G<ÜsÄÃñ8GlÎwD!)G<ÎsÄC!95Hs ä9Ç@Î…ä9Ç@Îs äñ8‡þ@Îsä9G<¾!sä9G<Îa‘s|# !È9ò ™ D!ñ8G<ò œc ßÈ9rœ#߈‡B⡜ƒ çˆÇ9,rŽœC ç°È9¢œ#ß°È9rŽŽ%çÈ7rŸ($çÈ7âñ Ÿœ#çˆÇ9âqŽxœ#çˆÇ9âqŽxœ#ç'ž äñ8‡'ÎsäQˆ@Îs D!9G<¾¡‚|ƒ çÈ9:r(äÜßÈ9rŽxœ£#ßÈ7,rŽxœ#߈Ç9⡜#çˆÇ7rŽx|Ã"çÈ9þrŽx(d ‰Ç9rœ#ßÈQâQŽxœ#ç È9rŽx”C ç Å?R”C çH9âq”Ž($ç°È8ðÒ‘sdñ8AÎAwÄãx‰‡;âQŽ_(à9‡@Î!rÄ/ãˆÇ9âqØ•#å°H9RŽsä9‡EÎrÄãñ8AÎ…ä9G<ÎrÄ£ç H9ÎAs$çâá`§âáâáââ¡âá|¢:¢¢,¢ââ¢âA!â¢|BoÊ!ÎA Î!ÎA Î!¾A Ê!ÊA Ê!Êþ Ü!Î!Ê!ÎA Îþá¢B!âá:B!¢ð"ÊÁâáÂ’£Î!Î/â¢â¡âáBo¢âÁb ÎA Ê!ÜA!âÂÎÁââ¡Î!Êá/Î!Ü!Üá/â¡âáâá(,¢Î!Ê!Ê!¾áâáââáâá,ââáâÎ!Ê!ÎA Î!Ê ÜáâÁB!âáâ/ÎA Êáâ!6âA!B!âÜ!b ÊA!¢ÜáâA!âA!âáâáâÜá(âáþâÁâ/âA!ÊA ÎA v¨âââââB!âââá,âââA!âáâáÎA Îa Îa ÎÁ"b Î ¾!ÎA Î!"ÎA B ¾A!ââââA!âáâââ|ââáâââáâáââââáââââáÎA "Î!Î!Â'‚ Î!¾Á"ÎA Ž"Î!Î!¾Á"Î!Ê!Êa Ê¡#ðHa A,Â’ãâ(ç¾A Îa Î!"Î!þ¾A ÎA Î!Î!¾Á'Î!Î!Îáââáâ,âââáâA!â¾!Î!Î!¾ ÎA ÎA Î!¾a Î Îa Î!Î!Ρ#Î ¾ Î!ÎA ¾¡#¾ ¾Á'Î!Î!HáÎ!ÎA Î!ΡâA!âÊa Î  @=@= "ÎA b Î Î!Ρ¢Àâ¡0`âáâÜ!"Î/âáÜa ÎA Ρâáâá(âA!¾!Î!ÎáâB!â¡â¡ΡB!¢|âÊþA "Î!"ÎA Î!B Ê Ê!Ê!Â'Î!ÊA "ÎA Îa Îa Ê!ÊA ÎA ¾!Ρâá(âA!,âÊ!ÊÁ"Â"Îa ¢ââáâáââââáâáâáâ£Î!ÎA ÎA Îa Î!Háâáâ,¢â¡â¡B!Êa "Üáâáââ!6â¡:ââÁÎ/â¡âA!âá¢B!ÊA ðB ðB ÊA Â"ðB ÎA Î Îa ÎÁâáââÁÎ!Ž¢,/B!âþâáâââââá,ââá:ââââ’ãâA!/âA!B!,B!B!,B!âáÜa Ü¡#Î!9"b Îa Ê Ê!ÊA ΡâHáââáâ|ââ¾A Î ÎA ¾A ÎÁ"Î!Îa Î!B Îáââá¾ ÎA ÎA Î!ÎA Î!ÎÁ"Îa ÎÁ"Î ÎÁ'Îa B Îa ÎA ÎÁ'"Îa B Žb ¾A Î!Î!¾A Îa ÎA Î!ÎA ¾Á"¾Á'Î!Îa "Î!Î!þ¾!Î!9Îa "Î!Îa Î!Î!Î!Î!Î!Î!Î!ÎAHá AÎ!¾!ÎÁâáâá’ãÎ!Î!¾ ÎA Îa ÎA Î!Î!ÎA ÎA ¾!Î!ÎA ÎA Îa ÎA Î!¾a ÎA ¾A Î!¾A Î!ÎÁ'Ρ#ÎA Îáâââáâáâáââáâ`çââA!âáââáâB Î!B Ê!Ê!Î Îþáâââ:¢Îa Ê!6ð"Î!ðââÂÂÎþ!ÎA Î!Îa Êá(¶j€ââ!6ââA!¢ââ,âââáB!(çB!¢Î!Î!Î!Ê!Êa ÎÁ'Î Êa Î!Î!Ê!"Îa Ê!Ê!Ê!Ê!Î!ÎA ÎA ÎA ÎA B ÎA Ê!Êá’ãBoâáâââ¡ââ¡â¡â¡â¡âââᢢââ(§ÎA ÎÁ"Î!Háââ¡âáâ¡ÎA Î!á 8J Î Î!Ü!ÎÁâáþB!âáB!âÁB!â¢âA!B!âáâÁâÁÎ!Ž‚ Ê!Êá(â¢ÎA Î!ÎA Îa Ρâ/âá,ââ/ÎA Îa "Î!Î ¾!Îa Îa ÎA Ê!¾ "ÊA ÊA!ââ!6âb#Êáââá(’£’C!ÂâáââÁ¢âáââ¡â:â¢âA!¢ââá¢âálA!âB!¾ ÎÁ"ÎA ¾áââáâ|â|âââáââáÎÁ"¾!þÎ!9Î!Îa Î!ÎA ÎA ¾!¾a Î!¾áB!âââB!âáâáâ(’ãÎ!Î Î!Îa ¾áâáââáââáâáâáââ’ãâáâA!âáÎÁ"Îa Î!ÎA ¾¡#Êa Ê!Ê @À– Î!Î!<áâáâá(âáâB!âáâá,â|ââââââáâÎa Î!"ÎA Î!Î!ÎA B ÎA Î!ÎA ÎA Î!¾a "ÎA Â"Î Îþ!ÎA ¾!Î!¾!Î!8*ŽÂ"Î!Îáââá,B!bPâÊA HáââÊÁ"Ê!Î!ŽB Êa Î!Ž"Î!ÎA Îa ÎÁâA!B!æáâáâá’ãÜ!Î!Î!Î!ÜÁ"Î/Ž¢âáâáâA!:ââBo"Ê!B ÎÁ"Îa Î!Êa "ÎA ôF ¾Á"ÎA Êa Î!Î!ÎA Îa Ž"Ž"Î!Î!Ê¡#Î!¾ Î!Žb "¢,ââA!ââA!âA!Êa ÎA Î!þÎ!ÎA Î!ŽÂ"ÎáâáâáâA!Êa Îa Ρâ¢â(‚þ!Î!¢#Î!ô`¡’#Î!ÊA Î!Î!"B Ê¡#Î!ÎÁ"ÊA Î ÎA Î!ðB!,Ââ¡âÂâÊa ÊÁ"Î!Ê!ÎA Ü!ÎÁâÊ!Êa Bàâ(âââáâA!âáâ¾a Î!ΠΡâáðââáÂÎa bC Îa Ü!Ü¡¢âA!â¡âÊa Ê!Ρ#Ê!Î!¢¢âþâ¡/âáÊa Ê!b ÊA B Î!Ž"¨Áâââá‚£B!âáââââá‚£âââá¾A Î!Îa Î!ÎA ÎA "Î ââ¾a ¾!Î Î!ÎA Î!Î!Î!Îa Îá,B!âáâáâA!âáâ,â,ââáâââáâáââáâáB!,â¾A Î â Œw® Àsß~‹wîÛÀsãøMà7ß" <ï\¼sñÎÅ;ï\¼sñÎÅ;ïœRÏ ˆwþNà9Rç4ž‹wNà¹xçž‹x.Þ·sñÎÅûvNcÁxç4Æ;7ð\¼s¿IwN่çžxnà·ßâ‹wN깈çâx.Þ¹çâx.Þ¹xç"žx.Þ9©ç4<§ñÜÖsñÊ ,Ô?åž‹÷M`Á­‹ÏÅ;7Ð]¼sñÎ tï\¼‚Ï <7ð\¼sÏÅ+(µ\¼sîâ•‹çN`A©å4–+'µ\ÄsÏÅ;§ñ\¼oñÎÅ+8ð\¼‚Ï <ïœÀrñÎÅ+wN่礖xnëÀoñÎÅ;'ðœÀrçHuŽ}ßÄSŽ@ç TŽ}ñ|#PAÑ9þ£Ñ9Ï9}#P9ñ”3P9ñ”O9çtN<åDTNA¤üO9•SPø$’ˆ;•Ñ9ñ”Ã`<åœÏ9åTN<ç TÎ@ TŽT tŽ@î¸ÏbñœO˜çÄSN<‹ÅsN<åœO9#Ð9ñœ;ñ”O9-Q9ñœSÎ@çÄSFçÄsN<çhtN<ç tN<ßÄsŽ@çÄSŽFç TNAñ;ç äNDåœ#P9 tŽ@ç TN< TN<åœOAñœÑ9ñ”sN<‹ÅSPDå4Ð9-6Ð9R•C'ñœ#Ð9KjtNþ<ßÄsŽ@çDtŽFÅsN<çDTPDçhtŽFçÄsŽT tN< tN<ç TP<çÄsÎ@çÄsŽ@çôÍVßhô@çÄóÍ9}#Ð9ñœ#Ð7Ñ9ñœ3Ð9Ï9Ï93Ð9ñœ3Ð9-6Ð9}#Ð9Ï9ñœÏ9ñ|3Ð9}£Q9•; ² $häIDßDtNDßDtN<çÄsNDçTÐ7ñœÑ9ñœóM<çôTEtŽTç|³Õ7OA#Ð9ñôMDçtÎ@ßÄsÎ@ß tNDç ôTß ô@çÄsN<ÅóFç|þO9³Õ9ñœ#Ð9¤üsŽ@çÄsŽ@EtŽ@åÄsÎVîÄæ@ç¸SP<î äŽ@ç¸3Ð9•Ï9ñœ3P9çÄSNDÅsN˜îhtN9•O9ñœOhñÏ9ñÏ9#P9ñœ#Ð9ñ8‡F¾±•s|C ‰Ç9âQxœC çˆGAò |#ÙÊ9ÊrÄ£ ñ8G<Αshä9G<ÎQŽxœC ‹‰GA4rŽˆœc çˆÇ7"rŽD*ßXŒ@Î!s ¤ ñ8G<ÎsÄ#4çˆÇ9rœ£9Ç@Hшœc ç ¨À†QìH„þÊsÄc1ñ8G<Î!s”#åH9¤rŽrÄã)G<S äñ8G9âqŽrD¤©Æ£‘0 ä9G<Îj àåˆÇ9âQœC çHAâqŽˆ”#åˆGARŽsä9‡@Î1sÄã9G<Î!s ä9G9âqŽx¸ãqG<ª1€sÄc1ñ¨Æb…€R)ˆ@ s ¤ ñ8‡@ªQ€ˆœC ç`Ð9âQœc å`Ð9rŽx<ƒßÈ9r|c ß8G<¾sä9‡@¾qœã[9‡@Îs ä9G<ÎþñˆœãYŒ@Î1‚låù†}¾¡‘s ¤ 9Ç7rœc ‰Ç9rŽxœC çÈb"Rœ#ç`Ð9âqŽxœ#߈Ç9¶rŽxœ#"çˆÇ9âQxœ#çˆÈ9rŽœC çˆÇ9rŽxœ#çˆÇ9âqŽxœ#çˆ;Î!O<È9â‰xœ#çÈ7òxœ#çˆÇ9âñxœc çˆÇ9rŽˆœc çÈ9r|#çˆÇ9âñ$çÈ7ÎoœC çˆÇ9âñsÄã[9G<Î!•‚ äùÆ9âq|ãñXÌ@Îþ‘oÄã9G<ÎsÄãñ8G<Îsh¤ 9‡@Î!sÄãñøF<ÊsH夸G<Αsäù†@Êsh¤ñ(G<ÜqŽx„I çˆH˜ÎáŽsÄ)‡F ¢‘s äñ8‡;rŽx$îˆG9âQŽœ#çÈ9"rœ#çÐÈ74rŽx”C çH9âñsÄãñ8G<¾1sÄã[9‡@Ê¡‘s”ã)Ghò ”#åÈ9âqœ#"å8‡@ rÄ>åˆÈ9ò œC çø†@sÄãù†@Ê1sÄãñ(G<ÎÑ­þœc çXÒ9rŽ”#çˆÇ9âAŠœ#åˆÇ94òŽsă »C;ÜPŽxœ#çH5Àëh@ çÈ9œ!€s8Cçˆ3pŽx”£ 9‡:QŽm€à9‡@Îá ^ `&ÈE5 ‘rÄc19ÇVÎr"çÈ9RŽx„×@x­sä9‡@Î!m€ ß8G<Î1sDäù†FÎ1rÄ£È9¦x4cÀîàŽj@#çPÇÎAŽ@#àA<Ê¡‘rä1BsÄ£(Ç6@sä)Ç9¢ þT!爇 \PŽx”#çp¯ãñ8G<Ê1jb ß8‡@ÎqŽœ#çÈ9rœC lÈ9ò |c ßÐÈ7âÁöˆœC lÇ9r|c ßÈ9òs äñ8Ç@¾1¶Çãñø†@Ø>oä9‡@Ø‘s äñ8‡}¾Áöœ#lÈ9âqŽx°ý :‡@ÎoÄã9ƒÎsăíñ8‡FÎ1sÄãù†TÊr ¤ñ(Ç9R,`»@Îá‰sÄãñ8G<Î!¶ä9‡@¾1slåñ ñ qþqñpÁvqqqqqqqñpßç`ç ç l§ç°ççç ç0lçç çß çç ççPqñÀvqñPñpñ@ ÿpåçP[qñÀvç åç çlX&ñàqaç îÀvñpñpåpqñÀvñpñpñpñpå ç0llçlWiqñð ñÀvqå ß ç ç0çl§ß çð qñpñP…[…ñÀþvñpñpRñ ñpñp[ÁvñpñÀvñÀv[…qñÀvRqqñpñpå çl§lçPñPlç0ç ççå0l7çç@ ÿl'åïÐ oP o@ ñÀñàaQ °ßpñpñÀvñà pÎã çà p9åàñP  ç çÎlw 2ÀÕ0QñÀvQqåçPáççåççPñpQßà pßPßl'å ç åÕPçþp‘ççç lççð qñpqqq×°{  éP ~pÕ0ñPqîàçÛçàÕPñÀvñPñpëpñ ñpê qÕ0ñP  å0çÐ 0åpÒ0ЫpãççÎ çPË  0lçàÏ@ lç X8l÷ Ávy…ñpñð qñpß ç0ßç çç çß ç0ç ß ç ßçç çlç ç çp‘ñpþñpñpñpqçßç0ççç çç0ßçlçççç ßçç ß ç ç ççð yñpñpñpñpñpñpñpqñp"@ Ï  ççà qñpqqqñpqñð çlçßçç çß0ßç çç ç0çß ç çXø yqñpqñpù ñÀvñp çç0çll· ß ç þçß lç¤ðqñpñð l llçp‘lîçl7ç0ç0çç åЩYñà…Ößåßåßåßpñpñpñpñ qñpñpqqQç l'ç ßpyñp Zñpqú ñð ñÀvù ñÀvYYçßçßç0ç0l7ç0ßç ßl7lå å åßåçå çp‘¤ðQQñðï@ Eþà ãéçåßlW àçåçà pÎçPñpÎ çP   ñP p µÎåàçð P Õ0qÕ@ñpÝpÐt€ñpñPçÕñP   ÉvÎlê  5Àvñ P@ñ0¸µPl7ßl'çç0ç çå å ççP 0ç0çP À P çP  àƒ[ ñPñpÅpÁv þ ` pñpÕ0çà0¸µPç àpñÀvñÀv|Àà–pñpá pñpÆ ç Ï@ qñð Ý*çß0l'ßçç ççlç0ßçß0ç0ççXçççç ççç ççl'ççç ß ßpñpñð ç ß l7ç ç ßpqñ ñ qÁvñpqñ ç ççl7X(ßp‘çlççåç0çþåå ç0 ž° ñð á ñ qß0çð qqñpñpñpÁvñÀvqñpqñÀvßp‘l'ç çð ñ ñ ñpqñpñ Évñ qßç0çç0ßßçççß ß ß0çð Évßpñ ñpß çç ççç@ ÿççßçç åç° YîÀváå çPqQñpñpååçåçXçåp‘çþ çå ççllçlç0ç0ç Xçß ßç0ç ç0ç0çl7çßl çð qñpñpqñPñÀvQñPñpñ ñpÁvÁvyYñpñ qÁvñ Ávñpßç0çlçç çlçPñpqÁvñ€…¤ðqñÀvñpåð ”PÞçð—å çl'ÕÐM0åå0Î çà 0ç ÎçP ðçþr@ñP Õ0ãpåpñPñà pñY Õ0çP 0Û@±-à÷€pñpáÕ0ñP ð!ÀvñÀvá pñp6ÐÜ2ñ@ ñŸpÕ0lß ç çç ç0çç ç0ê°5 ØpQ PÚ?@ñP àÕ0ã0Û0ãpîÀvç@ß°©ð—Õ0ñP 0ç0lpq™à.PQñà Pñ Y ååçþçÔ@ ñpqqß0çð qqñ yÁvyñpqñpqqqqß ßçç çp‘ç l· çßp‘çç çßçç çç0çç0ççç0ç0çð qñÀvñ qñpqñ ñ çp‘çll÷ ñð Yqñð qqqñpñpñpñpñpñpñp"@ Ï pñ ñà ßçç0l7ççç° ç0ççþ çlw‘çl7ç ç çßpqñpqzñpÉvñpqqqqñpqù qqñpñpñpqñpyÁvÁvñpñÀvñPñPç° ç@ ÿç ç ç åç0å å îÞ& åîpñpQQÁvÉvñPç å0ççç ååç åÀvqñpqqyQñpzñpñpQqñpYçç0ß0þç0ßXçß ñ-^¼sÏÅ;7Pá9…çž;§ð[¼s¿)ŒwNá¹xåÎ „ï[¼sÏÅ;7ðÜÀo ÏÅ;7°ÜÀs¿aü†qà¹çâÓynà¹tðÃêë?èƒ>ðC>È>!ÌÃ9ÄÃ9„¾ @œÃ\œƒ@°Â @4Àœ#P@<”C<ÁœC9œ&D@¾¾k@9œƒ@”ƒDA C9Ä9„DÄC9Ä9ÄÃ7ÄC5 À9¨ÃÄ9Ä9ÄÃ9Ä9ÄÃ6€€@Ä9u‡â•;ï\<… ~;Çá¹xç Æ;ïÃsñÎSx.^¹sñÎ)l¶A@þ€ lÎm À°\¼nΑ íÜ6 ÏÅëx.Þ¹xçž‹wΈdåâ«6 Þ6 ;Æ;¯Ü¹…ê0TQXΆ‹rñÎÅ+¯Ù†@‰wŽáÂg¤Î)ì7Þ·xçâ‹×‘á9…ßžSØ1Þ¹xßÎ)<ï\¼sñ:.<ïœÂŽq¿‹w.Þ·xçž‹÷Má¹…çž‹wŽá9¼ñÎ)<·ðœÂoçž‹÷íÜìŽ ¿Sx.Þ¹…ßâ‹×qá¹xçž‹÷-Þ¹xç~SØ‘á·sñ¾SømáÏÙñÎ-<·ð\¼sñÎ)üvna¹…åâ•‹WŽ!wâÁ“e  .OþÎa蜅ÎY/žoâ9'žsâ9'žŽâù&žsf;g¡sf;'žsê(®oÖ;'®súf¡s:'žsâùF¡Ž:‡¡sâ9g¡s:'žsâ9ç›…ÎQèœx¾Y觅ΉçœxÎYè›x¾Yè…ÎY蜸ΉçœxΉ‡”ÎP¡r*G¡s:‡!g8§œkd` wÎq'žsâ9'žs*'w܉§šâ9§œx:Zè§râ:G¡sâ9'žŽâq&€sâ9ç j‰ÇbPèœjpçœxª žsâ9§…¾Y¨#…~bè¼Îaè†Î‰ç›x¾‰çœ…Ήç›xÎYïœþxÎaèœxÎQ¨£…:Rè¼ÎQèœÙÎY蜸ÎY蜸Îa蜅:ŠçœxΉ盅¾Q¨#¼Î‰çœoú)žsÊaè¼ žs:'Oþ)'žŽ*}4Þ˜~6Ö§”s*'žoÊ)G› ¨PÈ…ÔYà mâ)Åxœ @›xÎyƒTâIg…Êùƾ)ç›o:g!uÀ`‰xÊYèœrêH¡sâ9'žsª@¡ŽÊYè›xΉëœxΩ¦€s:9žsúF¡s¾é(žsúæœxÎùF¡s:ç›x¾QèœxΉk¡rÿFö8ç^üˆ§šÎ)'žsâ9gþ¡j8'žj ˆçœxÎYh Ή§#…Ôƒ!â9'žj8§šâ:'žu.ˆçœxÊ9Gšr9g•Ɖçœx:ºf=´Q‡?:§œsâéˆRâ9'®sêˆq…Ή眅:Šç…ÎYèœxÎQè†Îaüœ…Îaè 9C:¸Ÿ(ä 9G<Îo(äñ8‡BÎñxœ#çˆÇ9ò †œc!çˆÇ9òxœ#ß`Ü9w…œ#.ßXÈ9âr†|#çˆÇ9w…œƒ!çˆÇ7rŽxt$çˆÇ9r…œ#} 9‡BÎsÄãñ8G<ÎsÄãñþ8G<Î!R<8G<ΡOÄãñ8G\Îoœ#߈Ç7âq†œƒ!QÈ9âñs(äŒûF<Îs0¤# 9G<ÎŽ0äñ8ÇB¾oœc!çˆË9rŽxœc!çˆÇ9÷xœC!ç`\Gò …œ#}çPÈ9r…œC!çXÈ9rŽx”#çˆÇ9âñ¸œ#¤øG<ÊoÄãñ8‡B¾sÄ£# 9ÇBÊqŽx”ÃèH<~€sÄCJH@jpŽxT#fø€š sl# Ç € pÃñ G 0(DJ(jp†¸# HþE<ªÁ9!éX@*ª€x8@p@-ª1€W@  Æ9âцœƒ!߈Ç9âqŽx|C!߈Ç9âq…t$.çˆÇ9r†œC!ß8‡Bαo(äñ8Cαs,ä éH<ΡŽ(äñøF\¾±sÄã éH<αoÄãñèH<ÎÁsÄãñ8G<ΡsÄã 9G<¾Ñ‘¸œ#åXÈ9âqŽxœ#åXH9âqŽx¸@<Êq…œƒÿˆ‹;¡SÀà ôÑ Øú€ˆpG<Ê¡Ž(Ä€F<ÎŽDãˆK9ŠsTƒrBþ<Ò±€TtÄ8‡BΡŽ( ÅÎrT£fø€šPŽxTcVøšÐ‘j Õ(@<ÎÑ$`0ˆÇ9ºq‚ÀÜ8‡  Ô¢PH7rP4áñ¨Fñ \€‰Ç9rŽ…|C!çˆÇ9ârŽr|C!åèH<:rÄãñ¨F¸r(ÊÕ+€@ãÕ@<8pp-rp€!çˆ& ‹œ#ç¨FÎá8¸ 9Ç6 sÄ£#|°@7`‰oÄ%àÆ9R…œ#çXÈ3H¡o(äñèÈBþ¾qŽxœC!ç`È9âr…œ#.çPÈ9âñ…œ#߈Ç9r†|c!߈Ç9âr…œãqù†B¾qŽxœC!çˆÇ9âq…œC!çˆË9âqŽxœc!çˆË9r…œ#çPÈ7âq…œ#ß8‡B¾¡sÄã 9G<αsÄã 9G<ÎŽÄãñ8‡B¾±s(ä 9G<ÎsD1ßPÈ9ârŽoœ#çˆÇ7ÎÁo\!åPˆ¢@@Še@Bñ8G<:≎,äñ8‡BΡsÄãñ8G<¾s,ä 9ÇBΡs(äñøF<ÎoÄãñøF<¾þÅs(ä' 9G<Ρs(¤#ñ8G<Îs(ä 9Gú¾sÄã 9G<¾±s|C!ç`HGrŽxœã ùFúÎŽÄãß`Ü9ârŽxœ#çPÈ9HñŽÄ£# éH<Îs0®qqÎtdî(‡ ZÀtÈ ñ¨FªpŽt ñ¨ÆâqŽnãßAÜ´àéøD<ʱ‚œ#2B<ÊrÄ#+Â90QcP Ñ4¶1€sTcñèH5 Ðm¤# ˆÇ9¢ø …œ#.çPÈ9rŽô#çPÈ9Ò…œC!çPÈ7rþŽxœc!¾A!Î!.Î!.ÎA!Î!Î!ÎA!:"¾!Î!Îa!Î!Îáâââîçâ¡#âáâââáâáâ§¢âá'â@àââþáâÜa` øá ˆA°øøAÁÎ!:B!ÎaŒ âáB  â¡#îa† 0¡Œâ!€Âà'â¡¢â!¨ ÀÎ!ª!ªàÒ‚ ª!ž Ü‚ ¢aΡàÜa`àÜÊ!Öâáþd â¡`Ρ¶¡âáH Ρ0` â¡à Îaä€âââáââá¢â¡âá¢#¢èâÔajà´!¥ Æá²€Ρàªaâa¶aÆA!¾!Î!Àáâ¡â¡"¨  ¢ ªaÆáâáâ¡#¶áâáâáâÁ¾&Üáâ¡âÒajàža!Î!}¨Áâáâá'ââââáââáâá¾!ÎA!ÎA!Î!¾!ÎA!ÎA!Îa!Î!¾A!Î!Î!:"þÎ!Îá¢#â¡#ââáââçâââáââ¡#â¾!Î!ÎA!ÎA!Î!Î!.Îa!:B!Î!Î!¾!Î!Î!ÎA!¾â~‚qÎ!.¾!¾!Îáâáâáâ:"Î!Îa!Î!Î!Î!Î!Î!Î!Î!Î!Î!Î!ÎAa Aâáâ@‡ÄãêÈA à‚tÄCJH@p…oÄã|Á,QŽþx¤C(G<ª1wÄà @@-ª1€x”ãÕ@9sðåß8G<Îsă!ñøF<Îñ’oă!ñ8"ò’oðåa_ÎsÄãùCrŽx|ƒ!9ÇKΆ8ä9G<â†Äã9ÇKÎñ’s8äçˆÇ7ÎsÄã9G<¾áÈsÜ3ßpÈ9âqŽx|ãñ8G<Îᆼä/9_Îñ’sâñ8G<ÎsÔüø?þÁ¸8rapˆ;âáŽx¸c pÈ9âŽsÄI€@`hœÃ!˜€%¾áŽt€å8‡Cœ!†þÄ£ñ8‡CB°ƒs¸ƒ!àH@*¢1AH58‡;ª1AH5G<ª1€sTcçˆG7rP€Ààî„Dð: î°‚MjQÄãÝ8Єqœ£€N5PŽs8„!ùF<sÄã/y CrŽx”ãñ8GªÝ@@01ÜQÄ£ñ¨ÆÜQŒ£8G<Üa…  qG<Àq€xœÃ!+ˆÁ<Üs€#©¨Æâq+ µH58PŽ—ÀÂИCäÀ€s¼ÄàÈ0Ãñ(G<ÊqŽrÄÃÔ Eª¿ásÄþã©>G<Îs¼„!©ŽÇ7âÁxœ#çpÈ9âqŽ—0Ä! qÈ7âqŽ—|#çˆÇ9âqŽxœ#ãñ`H<Îo¼ä©>G<ΆÄãùÆKÎsdüñ8G<ÎáoœççÈø9^r‡œÃ!çxÉ9pþ’sÄã/9‡CÎñ†¼äñÈÈKΑj†¼ä8?‡CΑêsdüùF<ÎásÄ£ñ(G<Êr¼¤'– |#çpˆ'ò’s¼äù†CÎs8ä9‡CÎs¼ä/9Ç7âqŽ—|#ßxÉ9rŽxœãñ8G<Îñ’s¼äþd?‡CÎAöxœ#çˆCâÁx|ã%çhþKÎñ’s¼äñ8GÆÏáoÄãñ8G<Îñ’s8äñ8G<Αñs8¤9G<Îñ’sÄãñ@ ÿp/qßàåàåðçççqçàççà1/qñàó° jçççàóp'ñàñàç }/qñpñPñPUçñ0ãîpî>èñpq©vñpq/qñð Çñpñpñp©ö Áßðßàçàçàßjççðçàçðçàçþjçàßàçàßàßàç€sçßjççjçàçàçççà áçàçßçàßççà áçç@vçðåðçî@vç¤ÐqñpéPaPaPaPaPaPaPaPå }åðçîÀñÀñpñPîÀñàçàçàçPqñpqîp©vîÛ0q/Q ðç áñPñp8wñp'îÀîãÀñpñàñpîPîç Q/ñ w/qñpñþpñð 8W8Wqñ0ñPñpñàáñà©ÆîàîpîPñà©vñp'ñpîðççàåàåPñàçàçççðçåUññpîàçç áçÏ@ ñð ‘/ñ ñ 8÷ ©Æq/q/ñ ©vßÐ|çðßàçàçðçðßqçàçðçßjßðççjççð q©v/qñÀqñð /q©vÚwßàçð w/q‘/ñ q/qñð þñpñpwñð ççð dwßàß áçççðççççççç Ÿ° ñ çžàßpñÀñpqñ ñ /ñ qñp8Çñp/ñ ñpq©vÍÇÁñ ñð ñ qqñð ñÀw8wqñ qqÇ/ñ ÷ 8wdwqdw/qñpñp©Vçðç¤ðñpÇñÀdwQqççàçðÐQ p/qó ÀñàÁþñPñàçàwr'©Æñàçàçàçàñpqñàçàçàñp/qw/q/qñpq8w/ñ ñpñp/q‘ñpñ ñpñ çðßpw8wqqñp©vqwwñ çjßççàç€sçð áçàçà‘j AvçççßðåçßðççPñÀñpñ@ ÿqИ¯ñàñàñà‘Á¦åàñqáÁqîjçáçþàçðîpñàñpQ àççÕ0çqUÁqñp©v©vdwáççîàçàîpñpqñ çç@vççßà  å áîîîpñà©v/á çjçjçàååàç@vç sáåàçqççîàåPçççðçðÏ@ ççjçç çß ñçðçq çàçà ßÀñð ççð ‘qßðáçjþççç€sççàç ‘jßp©v©ö ñð ñpñp©vqqÁñpqñð ßàçàççàßàçàç€s Av ‘jßàßqçàçßpq/qñp/qñp©V0X/á"@ Ë p/qžçqç  ç áç€sßçð wñp/Áñpñð ñ Áñp/q8wñÀñpqÁ©ö ñp©ö wq'ñpßàçð ñpwñÀñpñpßþççðßàßðçàçç áç@vççðçàç@ ÿp/‘qQñPñPñPñPqqñPñp/qñpqUQ çççà/qñP8wñpÍÇåð Uñ áç@vçàUqqñð qßàßqçjßçjçðçðç߀sççàçðßp©ö ñßçðßðçç€sçàçà çççççjççƒçàßqçàçßjççþq ñ /ñ ñpqqñpqñpåçàçjç@ ýîpñpÐîîùZçjçùçà QqáçàîðUQ8W8wUáUçàÕ0ñpñpñ0Õ‘îçàçàççP©vUáåçUáçqçP/qñpqq©Vqñð qñpñPdw/qñPñàñpáçà/qîçópñÀîà Qqåð çPqîçàUQþ ‘jçàîpÁîàçàçƒwñ@ ¤ç€sççqçðçð ©vq߀s ‘qçÐ|ñçð qq/Áñð ñð ©v©v8wwñpqñpqßçàçqçð ñ Áñp/qñð qwñpñpqñpñpñpñpqßðçàçßßjßçççç ñçàçàçà çàßqçççççççççç žð áþçà ñpñ ÍwwqñpÁqñ ©Æwñpñpñp©v/q‘ñpqñpñ /qÁ/ñ Áñpñpñ 8wñpqñ ñÀ©vñpqñp/Áñpñpñð qñpwñ ççååçååç¤ðñpÚÇñpñp‘ñpîçççàçç áqóà ñççàñÀî@vîÝîpq©vñPçà ñîp/þqñpñp/qñpñpñpqñpñpqñð ç ñßjçðçjçà çàç áççç  ßjç áçà ‘jçqçðçàçàççßpñÀ/qñpñ ñ /q8÷ ñ ©Æñp/qqñpq/q/qQqñ@ ÿpñpQçàçàçççàçßàá áçà QñÀççàççàçîçåçPççàþ ñîîp8—©v©v©ÆñPç çççàçðççàççБjçàççç ñçqççåpñPççðyîÀñPÏ]¼sñ º3hðœ;w ã•3xN¢ÃsñtgÐÄ„çJLxΠDƒçž‹Çð\<†ç –‹Wî\¼rñÎÅ{F*á·xç<ï\¼sÏÅûfðÛ9ƒ žsxÎá9ƒ^•OâÕxã‹w.á¹xßâIŒw.Þ9ƒç ž‹w.Þ9®ñÎÅ“ï\¼sñ¾9± HàñÄ9rŽxœÃ ‰Ç9 rÅœ#çøÆOÎas|#!çþHÈ9òxœÃ ߸Ê7âñ#ƒœã'çpÈ9âqŽxœÃ!çøF<¾s$äñ8‡AΑsÄã?9GBÎa‰|#ç¸Ê7 rƒœÃ çˆÇ9 rŽxœ£.çˆÇ9rŽ„œ#¤è‡AÎsD")G<Êr¤9ÇOÊq‡¸#߈Ç9Üs$äñpG<bs0$çˆG9 rŽxœ#îHÈ9âqŽxœ£ ‘HBÊQ—œ•à çpÈ9 rŽx”Ã çø†AÎaoüäñ8G<Îñ„Häu9ÇOÎaoÄãñ8‡AÎsäG ù†AÎas$äñ8þG<¾á‰äñ8‡AÎsÄãñ8‡C¾‘sä ù†A$bs|Ã!ç0È9~"‘xœã'ùF<ÊsÄãñ8GB$ò“säñˆCÊaRüã?9‡;Îs„!ñpG9Α‰Ä£ñp‡AÜqŽxüÈŸçHÈ9~RŽx¸£ 9‡AÊq•s¸#! 1Câ!‘xœ#!çˆÇ9 rwÄC"ñ8G<Üas”Ã!ç`H<ÜQŽxœ# 9G<Îa†HÄŸñ8G<ÎarD" ù†AÎsÄã 9Ç7¸rŽ„œ#åˆG9âŽxœƒ!9CÎÁ„œÃ ?JÈþ9âQƒHÄ 1È9~âŽx¸C" ‘H<ÎsÄãñ8G<Üa†œ#IÈ9âáŽñœ£y)®rŽxœÃ!ßpÈ9âqŽ«œ#çHÈ7 rŽx|#!IÈ9âñxœã'ç0È7r‡œ#ùÉ9âñ ƒœ#çˆÇ7 rŽŸœ#‰Ç9âqŽoÄã߈‡Dò„œã'爇spˆs0ˆsø‰sø‰spˆsˆ‰Hˆs0ˆsø‡ˆ„8‡x8‡„8‡x8ƒ8‡xø‘ñˆ„8‡ø†Ÿ8‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡x8ð„e€ˆ‡rþ8‡x8Oˆ‡oHˆoˆ‡sHˆs0ˆo0ˆsˆ‡o8‡x8‡xø†x8ƒ8ƒ8ƒƒ8‡ƒøƒˆx8‡xø†sHˆsHˆsHˆs¸Šs0ˆsˆ‡sˆ‡opˆs0ˆsˆ‡sˆ‡sHˆs0ˆsˆ‡sˆ‡sˆ‡s0ˆo8ƒøƒ8‡8‡x8ƒø†‰‡s0ˆs0ˆsˆ‡s¸ ‰ˆ‡sˆ‡sˆ‡oHˆsˆ‡r0ˆr8‡x8‡x …8‡ºˆx8‡xˆxø‘x8ƒø‘x8‡x8w8ƒ8‡xˆ„8ƒ`‰ˆwˆ‡1‰ø‰rp‡x(‡‘9ƒ8‡x8wˆ‰`ˆsp‡þx8w0ˆr8‡„8‡x8‡x8ƒ8‡„ø†sˆ‡s0ˆsˆ‡s0ˆo0ˆsˆ‡sHˆsHˆo0ˆsˆ‰ˆ‡spˆs0ˆsˆ‡o8‡„ø†sHˆsˆ‰‰‡s0ˆs¸Šsˆ‰pˆsˆ‡spˆsø‰s0ˆoˆ‡sˆ‡s0ˆsˆ‰ˆ‡sˆ‡sHˆo0ˆs0ˆsø ‰pˆsˆ‡s0ˆspˆsPŒs0ˆsˆ‡sˆ‡rˆ‡sàŠrHˆsˆRø‡s`ˆxp‡„p‡xÈ™sp‡s0ˆsˆ‡r0ˆsˆ‰ˆ‰0w0‰ˆwˆ‰Hˆrˆ‡sˆ‡sˆ‡sˆ‡sp‡sHˆsˆ‡rˆ‡sˆ‡sˆ‰ˆ‰ðþ§sp‡p‡s0ˆsp‰pˆs`ƒˆx(‡sˆ‰ˆ‡sˆ‡sˆ‡sˆ‡sHˆsˆ‡sHˆsp‡xp‡(‡s0ˆsHˆsˆ‰h‘s0ˆsˆ‡r8‡x8‡„8‡x8‡xˆxˆxpƒ(‡x8ƒpƒ(wˆ‡spˆsH‰qˆsp‡x(‡xð'wˆ„8‡8‡„(‡„ˆxp‰pˆsp‡Ÿ8‡x(‡x(‡x8‡r0ˆsˆ‡rp‡g …sˆ‡o8‡ø†x8‡x8‡x8‡xø†x8‡„øƒ8‡x8‡x8‡xø†x8‡„8ƒø‡8ƒ8ƒ8ƒøƒø‘xˆx8‡º8‡x8‡„þ8‡x8‡x8ƒ8‡x8ƒ8ƒ8‡x8‡«8‡„8ƒ8‡x8‡x8‡xø†x8Å8‡Ÿ8ƒ8‡„8‡xø‡øÅ8‡„8‡x8‡ˆ„8‡xø†„øƒ8‡„8‡„8ƒ8‡Ÿ8‡ø†x8‡„ø†sHˆsø‰rˆ‡rˆ‡rà wøRXH€„8‡xð„xƒ8®ˆx8‡x8ƒ8ƒ8‡„8‡xøƒø‡8‡„ø†„ø†º8‡8‡x8®ø†xø†x8‡xøƒ8‡Ÿƒˆ«ø†‘9‡„8‡xøƒøƒ8‡„‡8‡xøƒø†Ÿ8‡oˆ‡sHˆsˆ‡s0ˆsˆ‡þsHˆsˆ‡spˆs …0ˆr0[[à^^†| †|]†`à…e°…|å…`à…`0Ø| †`à…`XØ`0؆]X^^†| †Š ^°…†µ…`°…`°^°ƒµ…`à[^†| †|mØ`à…`XØ`à[È׆µ…e°^hX[hX^hX^°…`à…`°^˜Ù`°…e°^hX^°^^°…e°…e^[à[à…`°^^hX^°^†e°^hX[à…`X†`à…`à[à[[[à…`°^[à…`°^^[[à…`°þ…`°^[à…™å…`°^[X†`à…`°^[à…¦å[X[à[à[^°…`°…†å…`à[^°…`à…†µ^[[à[†| [X[†| [XX[à…xˆx8Rø‡xp‡s0w8‡x8wˆ‰Hˆs(ƒ8‡r0ˆs0ˆsHˆsp‡ˆ„8‡r0ˆsHˆsˆ‡sˆw0ˆr0ˆsˆ‡sHw0ˆs0ˆsp‡x8‡x8ƒ8‡xp‡x8w0ˆrˆwpˆr0ˆsˆ‡sHˆsø wˆ‡sHˆsp‡x8‡8‡„˜x(‡8‡„(‡8‡xþ8‡x8‡x8‡o0ˆsˆ‡o¨‹r0ˆsˆ‡s0ˆsHˆ‰wˆ‡sp‰ˆ‡sˆwˆ‡spˆs(®(ƒˆxp‡sˆ‡œ1ˆsHˆrˆ‡rHˆs0ˆrˆw0ˆspˆrHˆsȉ0ˆsˆ‰0ˆs0ˆs0j …x8ƒ8‡x8ƒ8‡«8‡„ø‘x8‡Ÿ8‡x8‡„8‡xøƒ8‡Ÿ8‡®8‡x8‡x8‡xøƒ8‡x8‡Ÿ8‡8‡8‡x8‡«8‡x8‡8ƒø†„8ƒ8ƒ8‡oˆ‡sˆ‡sˆ‡o0ˆo0ˆoHˆsHˆs0ˆsˆ‡o0ˆsHˆoˆ‡sˆ‡opˆsˆ‡s0ˆþoø‰sHˆsˆ‡sˆ‡s¨‹søƒø†„ø‡ø†„8‡x8‡x8‡„8‡„8‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡x8°…`€„8‡ðƒ8ƒ8‡x8‡x8‡xø†«8‡„8‡„ø†„8‡x8‡«ø‘„8ƒø†x8‡Ÿƒ8‡„ø†sˆ‡sˆ‡s0ˆsˆ‡sˆ‡s0ˆsˆ‡o™o8ƒˆxˆx8‡xø†x8‡x8‡x8‡„8‡x8‡x8‡º8‡Ÿ8ƒˆx8‡x(ƒ8‡º8‡„(‡x8‡„8‡Ÿ …8ƒ(‡xø‡¾öë¿öë~ìÁþë~øk~ ìÄVìÅì~Xþì~`lÆî‡¾î‡Äî‡~ì~Xì~ˆìÎî‡ÎíÅî‡Ðþ‡Ë¾ìÎî‡Îî‡ÁîÒþ‡8Rø‡sˆ‰p‡… ^†… †|mØ|mX^ƒmXƒ ^^°…`à…`°^^°…`à…`à…`0Ø`°…`È×`à[°ƒ †|mØŠµ^°…Šå…`°…Š †… [È×`0Ø`Pï`à…`°…|µ…| [à…`à…`X^°…`°ƒ ^°^[à…`à…`à…`°…e°…e^°…™å[à[[[[^hX^^†| †eà…`0Ø`à…`þ0Ø`°…e°^°^hX[^[[†| †Š †… [È×`°…`à[†|µ…`à[^†… ^°…Š †|µ…`à…`ÈW[^0ˆs0ˆg …x8‡ø†„8‡x8‡x8ƒø‡8ƒø†xø†Ÿ8Å8‡xø†s0ˆsˆ‰Hˆo0ˆsø‰s0ˆs¸ŠqˆoHˆsˆ‡sHˆsˆ‡sˆ‡o0ˆo0ˆo8‡8‡x8‡„8‡Ÿ8‡x8ƒˆx8‡xƒ8ƒƒ8‡„ˆxø‘„ƒ8‡Ÿˆx8‡xø†„ø†sø‰sˆ‡o0ˆoˆ‡sH‰ˆ‡‰‡sˆ‡þsˆ‡Iˆsˆ‡sHˆrˆ‡sˆ‡rˆ‡rPŒrHwOXH€xø†xOHˆs0ˆsˆ‡s0ˆs0ˆsˆ‡sHˆoHˆsˆ‡sˆ‰Hˆsˆ‰ø‡8‡„8‡xˆx8‡x8‡oà ‰0ˆsˆ‡s0ˆsHˆsˆ‡oHˆsˆ‡sø†„ˆo0ˆsHˆs0ˆs0ˆs0ˆs0ˆspˆs¸ ‰ˆ‰ø†Ÿ8‡„8‡„øƒ8‡x8ƒˆx(‡xø†„8ƒøƒ8‡„8‡xRø‡xøƒ`‡8ƒ8‡«8†Hˆsˆ‡sˆ‡sp‡xð'‡†ˆ‡shOw8wˆ‰9‡xø{ЉÈþ™xp‡„8‡xp‡x8†ˆ‡s0ˆ‰‡sp‡xp‡x`ˆx`ƒp‡«pƒÈ‡p‡xp‡„8w0ˆsp‡xp‡„ø{®p‡„`ˆx`ˆ«8‡œ‰wˆ‡Ã‡œ‰wˆwˆ†ˆwˆ‡œ‰‡sp†ˆ†Hˆœ‰†ø w0ˆsÈ™x`ˆxp‡Ÿpƒp‡x8ƒpƒp‡xȃp‡xp‡xp‡x8†0ˆq‡x8‡r0ˆsˆRˆñÜÅ‹wî¿ 2lèPa¿‡'6ìGñ"Ã~ ùIì‡Qa¿û)ìw±ŸÈ‹ýú¥lÙ°ŸË˜ûŒw.5R5ã+x.Þ·xçvÆþ;wŽè¹‚ç -x.Þ¹šF ž+ø­à9¢çâ‹÷­à¹šçâýïÛÎsß wŽè·šçâ‹w.Þ¹‚çâÝù­æ¹‚çvžÛy®à¹oÏüVÓ(ÑxFkž+x.Þ¹o5Ï4ï\ÍsñÎ<Ïh¼sF>ïõ¹×¯ÏÉŽ÷íÜëo¯ÏÅ;ï\¼sñÎÅ;ï\¼sñΉ õ ’€xç^Ÿóï[¼sµãÛþúÛ¹xçâ‹wnû¹×çdŸ«môõ¹Úç^Ÿ{}.Þ·s¯Ïm?çýÜkçÄsÎkçÄólFÅsN<çl÷ÍkçÄsŽlçÄsÎkFÅsŽlçÈvN<ßþQ¯óÚ9ñœSÛ7¯Ï9ñœÏ9¯%[9ñœÏ9²‘òOmåuN<ç¼vÎkçÄSÎ9ñœQñ”SN<çÄsÎkåœÏ9¯Ï9µÏ9ñœÏ9¯ãQñ¸Ï9ñœÏ9ñœ#Û9ñÏ9¯Ï9¯¹#Û9Û ùÚ9ñO9çÄSÎ9ñ”Ï9ñÏ9ñ”O9çÄc”lCÆsN'žâ9'¤s >'žsÊ9ëœrâ9'žrB¨ s ¨ʉ§œ‚Ή§´¾‰çœxΉ眂*èœxΉçŠçœ‚ΉçÇÎ)'žsâ9'žs¬:§¯s :ǪoâH£r H£sâ9'žsB:'žsâ)§ râ9§œxÊѨÎ)蜂ÎQrhäå(È9¸¦‘rÄã9GA¨AŠˆÄã߈Ç94rŽ‚œ#ß(È9âqŽœC#‰Ç74rŽoÄãñ8‡FÎoœe 9‡FÎsÄã9‡FÎþÄãñ8G<ÎQs|C#çˆÇ9BrŽœ#ç°Ê@¾q–sä!9GHÎQsœå!9‡U¾q´|#"9G<¾q–sÄc !9GA¾a•sœå!H<Ρ‘shäñ8G<ÎsÄãñ8G<ÎsÄã" Å3 !€x”£ çð„UÎoœ#çˆÇ9â1‚œ#ç(È942œ£ ß@Ë94rŽxœ#$ç(È9 rœ£ çÐÈ9¬rŽxœ£ ‰Ç@BrŽx|C#ç(È9¬rŽ‚œ£ ç(È9 rœ#‰Ç@ rŽx|£ çˆÇ7 rŽx|ãñHAÎrþhä9G<Îshäñ Å?⑤sä9G<ÊqŽxœ#‰G9 rŽx8¹p|C#å8G<Rsäñ(GH"RsÄã卯ÎQwœ#‰Ç9 rŽxœ#$å(È9ÎrŽx”ãñH<ÊqŽ‚œ#åˆÇ9â‘‚”£ çˆÇ9 RŽxD$çˆÇ@â1xD$çˆÇ7B2x”ãHAÊs$"ñ8G<sÄ#Iñ8G<ÎsÄc ñ8G<’T§ÅC¡çˆÇ9â1x $êH†pŽrœ£8G50xœ£ 凾8þCçøF9¾1rD$©ÆâqŽ‚œ#ÑÈ@ òsXåñ Å?¬â3p‚þ'°{†nä!HHÊrh¤ñ(G<ÎrÄ£V9GAÊa•rÄ£ñpZÊrTc!9GAÊrä9‡UÊsÄãñ¨FÎh¤ñ8GAÊá˜x”#çÐH9BRŽsÄ£ñ(G<¾QrÄ£!)G<ÊQrÄãV)‡FÎa•sÄ£9GHÊsœ¥)‡FÊQsäñHHÎrÄãV)GAÊQsÄc !)G<ÎrÄ£ñ(GAÊrÄ£þçˆÇ9âq«<ƒV9GAÎQshd !9G<Ρ‘shä9GAÎá˜sÄc ñ8‡FshäˆF¾s„ähHAÎÑ—oXåß8GHÎQshäñ8GA¾qŽx $$çˆÇ7ÎoÄãù†F¾oœ£ çˆÇ@4r´œ£ ß8G_Î’sôå9G<Îshäñ8G<Ρ‘o ¥ñ(ZÜO,ˆGDâá‰sÄãß(È9Îr|£/çèË@4òœÃ*߈Ç9âqœ£ ç(È9 rŽohäñø†UΖohäñø†FÎoÄãþñ8G<ÎQshäñøFHÎsœå߈Ç9âñ‚œ£ çÉ9 2‚œ#ß(H9ΖÄã¤øÇ9¬rŽ‚œ£ ç(È9BrŽxœ£qÊs#Ñ€*`s4#@Üj À €@ ÎQn(!¨Á@ªQ3TÀ€$P‹h  êPBPƒÄC@ÀvpŽ‚”#çˆÇ9 rŽ‚œ£ ç(È@â«D$çˆÇ9⑳œ£ ç(È94rŽxœ# É9 2‚ $çˆÇ9BrŽœ#çÉ9âqŽxœ#$çˆÇ9¬2xœã,çþÉ9 rL0@(GAª1€x8 ˆOE<ÊQfàqÆs¤Ä à ! /âA”   Î!ª!¬ ,  Î!ÎÁâáHáÎ!Î!¾¡à€¼¡ðAà8¡"Ê!Ê!$œ!  v Î!Î!Î!¶Î!Î!ÎÁ*Î!Î!Î!""¢ b âa ª¡âa "À  4  â "" ââáªaâá ¢Ρ Î!Î!Î!Ρâá ¢Î!ÎA#Ê!Ρ þÎ!$Î!Î!Î!’¤ "Î!Ρ "ÎÁi ââá ¢âá ââá â ââáâáÊ¡ ÎA#Î!Ρâáâá4âBââa â ââ¡âá ââ¡ âB""B""âá "" â4¢â¡ ‚H!$Ρ Îá,Ρ Î!Ρ Î!Î!Î!ÎA#"$Î!"Ρ Î!ÎÁ*¾Á*"$Î!$â, ââá â â4""âáâáâá¾!¾!$Ρ Î!""$Îá,ÎáâáBâ ââa âáþâáâá âÎâ¬b Bb â¾A#¾¡ Î!"Î!¾!¾!Î!Î!ÎA#Î!ÎA!ãáâáâáâáâáâáâáâáâáâáâáD€ž@#ÂΡ Ρ Ρ ¾Á*¾¡ Î!Î!¾áBâ4âΡ Î!¾!"Ρ ¾á â¬â4âBâ4ââáâáâáâáâá4â âÎ!Î!Î!Î!Î!$Îá,Ρ Î!Ρ Ρ ÎA!ÏA+Ï¡ ¢ Êáò âBââá ¢Î!$ÎþþA!Ë¡ Ê!ÎA#Î!Ê!ÎA#Ê!œ!Î!Ô!    Ρ H´¡0` Ρ  ‚‚ ÎÁZ€ÔA–àª!ª Ü¡`bÀil ´Ad` âa€ÎAb¡ "Î!Ê¡ ÎÁ*ÎA+Ïá,ÎA+ ¢ÎÁF­â âBâòlôtÔ*Î!ÊÁ*Ê!Ρ ÎA#ÊÁ*Îá,Î!¨ ÀÜáª!â¡` b âá¶áÎA#œAÎ!Î!Ü¡à B( ªaÆaâ¡l ¸Adâ¡þ  ¢â¡ ÂâáHá ¢âÁΠΠøáüA8á Π Î!¢ Ê!œ¾Ái"Î!Ρ Ρ àâáâáâáâáâá4âÒ!Ρ ÎA#ÎA#Ρ Ρ@#ÊÁÊáœAÎá¾áâ¡ ¢4âBâªa4ââa r â!"B¢âa âáâ¡âáâ¡4ââáBb ΢Ρ Ρ ""Ρ "¢ Ê!Î!ÎA#Ê!ÎA#Î!Î!¢â¡ ââá ¢4âòâá b â ââáþ4¢ÎÁ*Êa 4ââa 4â4¢âáâáâ¡âáH!ÎA#¾¡ "ÎÁ*Ρ ¾A#Î!$¾!$Î!¾!Ρ Î!Â*Î!B#Î!$¾!ÎA#¾á4â â¾Á*ÎÁ*Î!ÎA#Î!Î!Ρ Î!Î!ÎA#¾A+¿á b â4â â4b âá ââáâáâá4âÎ!¾áâáâá¬ââá4â b âa r ââáâá âBââáÎ!Î!¾!Î!ÎA#¾ÁFËA#ÜHa A¬Â ââþá4ââᾡ Î!"Î!Ρ Îáâáâ!"¬ââá â â4ââáâá b âá b ââá â âBâ â â â¬â â4ââáâá â âBb âáâáâáâá ââa âa Šô â4ââáâá b âá¬ââþÁiÊ!Ê!Ρ ÎA#Ê!Êá,Î!ÂÀ ÀªÆ!Üâádáâ¡€ âàÈ! a ŒAâ¡`âáªa4" È!þ !ÎÁ ºAö` âa ¬âÊ¡ Ê¡ Ê¡ Ê!Ê!Ê!$Ê!ÊÁ*Ê!ÊA#ΡB¢â¡âáâ¡â¡â¡B¢âáâ¡ ¢ ¢â¡B¢Î!Ê!Ê¡ Ê!ÊA#Ê!Ê!Ê!Ê!Ê!$Ê!Ê¡ ÊÁ*ÊA#Ê¡ Î!Ê!œ&Î!ÆÁ: LªaÜ¡àÊ¡  ž#àœê ª!Æa ªÜ¡ Ê!È! áâÁÀ¶!Æáâáâáâáâáâþá âÊ Tºþþþ¡ à Î Î!Ρ Ê¡ ÎÁ "Ü!¶aL!ÒªÀ@$ ÊA”  Æ!ªaÌ , @>.€Î!ºá Lâ¡àâá b œÆ¡ º! `šà br   ¢   êyâáâáâáB"$Î!Î!Î!$Î!Ρ Î!Îá±=;Î!Îá³Ïá±Ëá±Ïá±Ï!³Ï!$Î!Î!Î!$Î!Î!Ê¡ ¾!Ρâ¡4¢4âÊ!Ρ Ρ ÊA#Ρ â>{º þâ ââa Òá<áâá ââá ââáâá¾A#Ρ ¾A#¾!Î!Ρ ¾¡ κãáâáB⾡ ¾¡ "¢ â±#"Î!Î!Îáâá â â â âBââá4â ââᾡ ¾!Ρ Îá±Ï¡ Ρ Î!B¿=û â;"¾!Î!ÎÁ³Ï¡ Ρ ¾!Ρ ÎA#Ɀ¡ ¾!¾¡ Ρ Ρ Îá±Ï!Î!Î!Î!Î!Î!Î!Î!ÎA<á Aâ¡4ÂBââáBb âá<û4âþûâá>û4ââáBââáû âûâá4ââá ââáÎ!ÎA#Î!ÎA#Î!¾áBâ â â b ûâáâá â¦ûâá b âá b âáûâá4ââáâ¡âáâáâþ!B#Ρ Î!Ê¡ Î!"Ê¡ Ρ ÎÁ@´âáªaÂÄ¢Î!ÎÁ`ª!ÎÁÎ! à¢!* à+ Ρ LΡàÜáªaâ!Àà+ „6.À4¢âáBââaþ â¡4â âÎ!"Î!¾¡ Î!"Ê!""Î!¢ ""’$ÊA#¢ "¢ Ê!Ρ ""Î!"*"Î!Î!¢Î!"¢ Ê!Ê!*K#"¢ ¶€âáŒ! aªaΡ $žaž¡ €¨áâÁàÿÆ¡@#ªaΡ Î!¢! ¾* Ê¡ Lûâáâþ!Ρ ΡŽàz¡þ¡^ÿ Îà±#¢ œ!Ü¡ "b€¶€Ü¡`4ÂZ@ÔA€àªþAª  ª!ž  „ˆá®A:àªa b âœAΡ H Îá0 ‚Zຂà¶aÎa€✺Xñ –‹W®`¹‚ñÊ1<ǰÂç–‹w.^¹xåâ•‹W®`¹xåÎ<71^¹xåâ+X®à¹xåâ•KY.Þ¹r Ë¥œX®à¹‚çâ;7ñ\¼rñÎýŒWŽá¹xG'–‹w®`¹xåâ•+X.^¹xçâ‹wî)5RNüöó\¼oñÎÅ;Wð[¼sñÎÅ;ï\¼s ÏÅûï[Á£ ÏM<ïÜÏsÏüöó\¼ožKyîéþÄs¦<Çð\Ásñ¾w.å¹”ç ~cø­à·£ñÎQŽj €!åˆG9âqŽ‚œƒÿˆG9Ò‹3À¡½€ÃR¶ Eèv )Cœ€gPƒÏGAª ¥(ˆ;¢€ H× 8G5àŽ£Tc9Ç6PVl@p@ÎQ0¤ñ(G<œwœ#pG<Êá œ#pG<Îጸ£ˆ‡;Xq‚\À9JAŽ2‘rÄ£ñ8G<ÎQrœ#ߘÕQr”­ž#åðL<ÎQϤñ8G<Î1«sÌêñ8þCÊ£Äã )G<ÊqŽž#ç(ÈQ rމœƒ!å8ǬÊᙂœ#çˆÇ9¦Å»sÄãñøCžAŠ‚|ã9CÎ1‘slõ³:CÎ1«sÌêñ8ÇDÎ1­sÄã9JAÎQ£Lë9G<Î1‘£0ä(ñ8ǬÎÁÄoœƒ!ç˜Õ9òstð9G<Îs0äçˆÇ7ŽRs0ñ9G<ÎsäjX†gX†g¸¾ï{†ex†ë{jx†kxjx†kø¾g †îë¾kè¾kxjþx†kx†e †gø>jx†ex†eè¾kø¾g¸jxjX†î»¾î»†g †g¸†g€¾gX†g¸¾g †gX†g †g †g †g †gX†g¸†gø¾g¸†e †ex†ë{ó Ák †g †î»†g¸¾g€¾gXjx†ë{jX†ü¿ë[jX†g€>jX†ü3¿eÈ¿e †g †gX†g¸¾e †ex†ë[†gX†gX†g`?軾g …ˆr8‡r8‡x8‡x8‡x8‡p8‡„88‡x8‡„p‡†HˆŠ88‡x88w8‡x88whˆxhˆx8‡x8‡hþ(‡x(‡x(hwˆsˆwˆs‰s¨ˆsHwˆwˆs‰rˆsHˆsˆrˆ‡sˆ‡sˆ‡rˆs‰sˆ‡sˆsˆ‡s”sˆ‡sHˆs‰sˆrˆ‡†ˆ‡sˆsˆ‡sHˆsˆ‡sˆ‡sˆ‡sHˆ†ˆ‡†ˆoˆsØ‹sˆ‡sˆ†‰sˆ‡s‰s‰rˆ‡†Hˆsˆ‡†HˆsHˆoˆ‡sˆ‡†ˆ‡rˆ‡r8‡„ O‰s‰sˆoˆÑHˆsˆ‡sˆohˆo‰s‰oˆ‡oˆsˆ‡sˆsHˆsˆ‡†ˆ‡†ˆ‡sˆo8‡x8‡x8‡xø†xø†x8þx8‡x88‡x8‡8‡x8‡„ø†x8 ià…ˆ‡r88¡8hˆ8‘ø†sHˆs‰s‰oˆÑˆsˆ‡s8’sˆ‡sˆ‡sˆ‡sHˆsˆsˆ‡sˆ‡o8‡„8‡„8‡x8‡8‡„(4)‡RXH‘ …o‰sð„ø‡x8‡„hˆx8‘8‡x8‡„hˆxø8‡x8¡8‡x8‡x8‡„ð„xø†xø†Hù¡8øøø†x8ø8‡„888‡xø†xøø†8‡x8‡x8‡„89‡„hˆx8‡8‡„8‡x8‡xþhˆ(hˆrˆ‡†ˆR O°…QQ­Ñõ„õ„õmQO QOèÑõ[hQO°…õ[Rõ[ð[`Òõõ[QO°O°O°)mQOøR!õO°…õ[S5QO 2•QO°…5µQO O˜Óõ[°Q~ˆ‡ssHˆsp‡xhˆx(‡#iˆ8‡Š wˆ‡sˆs‰swˆ‡sˆsˆ‡†ˆ‡†(‡„8‡8‡r‰†p‡xp¨ˆsˆ‡s(‡(8p‡8‡x8‡8‡x8‡„ø†s‰oØ‹sˆ‡sˆ‡s‰sˆ‡þs((8hˆ„8‡xhˆ½8‡„88¡8‡x8‡x(‡xhˆx8ø†„8‡„888ø†x8‡x8‡xø†x8TIˆsˆsˆsˆ‡sˆrˆg …x8‡oˆ‡sHˆsˆ‡sˆ†‰sˆsˆsHˆsˆoˆoHˆsˆsHˆoˆsˆ‡sHˆs‰s‰sHˆsˆsHˆsˆ”s‰oˆ†ˆsøø†(‡x°…ˆ‡sˆ‡oØ‹sˆ‡o‰s‰o‰o†ˆs‰s‰sˆsˆ‡sø@98‡x8‡„ø†#9‡„8‡x8‡x8‡x8‡x8þ‡x8‡x8‡x8‡x8w8 …g€ˆ‡rˆ‡† …sˆ‡sˆ‡sˆ‡sˆ‡~ø 9‡xø†xø†ø†„8¡88‡xø†„øø†x8Oˆ‡sˆ‡sˆ‡o8‡xø†sˆ‡sˆox8‡xø†„h8‡xx8‡x8‡x8‡xø†x88‡x8‡8‡x8‡x8‡x8‡xø‘hˆ„8‡x8‡xhˆø†s‰o8‡„ø†sˆ‡s‰sHˆs‰sˆsHwˆ‡s†8’sˆsˆwHˆsŠsHˆs‰sˆ‡sˆ‡sHwˆsˆ‡sˆsˆ‡s‰sˆ‡sˆ‡sþp‡x8‡xp‡†ˆw@•sHˆsp‡s(¡8‡½8¡8‡xp‡8w8‡rˆ‡rˆsØ‹sˆsˆ‡sèW 9whˆx8wŠs‰s‰s0b‘8w8‡#9¡8‡p q‡~u‡sHˆsHRø‡x8‡x8w8‡x(‡„hˆxhˆ8‡x(‡x(‡xØŒsHw8hˆxØŒsp‡x8¨ˆx(‡xp‡sˆŠˆ‡s¨ˆxhwwˆ‡sˆsHˆs‰rˆ‡sˆsˆ‡r‰†ˆw88‡„(‡sˆÑˆrˆrˆ‡rˆ‡sˆrˆ‡sˆ‡sˆsø8‡x8‡þx8øøø†x8‡x8‡x8‡½ø†x8‡~ý†x8‡oØ‹oˆo‰sˆs‰sˆ‡sˆ‡s(ø†„ø‘8‡x8‡88‡xø†sˆ‡rˆ‡oˆoˆ‡oˆ‡sˆ‡sˆ‡s‰sˆ‡sˆ‡sˆ‡oˆ‡g ‘ø88¡ø†x8‘8‘88ø†xhˆxhˆx8‡x8‡8‡8‡ø††Hˆoˆ†ˆ‡sˆ‡o‰oHˆsˆ‡o8‡x8‡x8‡8‡x8‡„8‡xhˆxh(‡x8‡x†Hˆsˆ‡sˆ‡oˆ‡oˆsHˆ†ˆ‡sˆ‡sˆ‡sˆ‡†ˆ‡sþˆo8‡xø†sHˆ†‰sˆoˆoˆoHˆsˆoˆ‡oˆ‡oˆ‡sˆ‡sø†x8‡88ø†x8ø†sˆoˆ‡s‰oHˆrHˆr‰ŠRXHÑOˆ‡o‰sˆ‡sˆ‡oˆ‡sø†xø8‡x8ø†xhˆhˆxø†ø8‡x8‡x8‡x8‡x8‡x …sˆ‡s‰sˆoˆ‡†Ø‹†‰†‘sˆ†ˆsHˆsˆsˆ‡sŠsˆ‡sˆ‡sHˆsˆ‡sˆ‡oˆ‡sHˆsˆsHˆoˆ‡sˆsˆ‡s@“†ˆ‡rˆs цˆsˆ‹‡sˆsþÑp‡x8‡x8‡xhhˆx8wˆ‡†ˆw‰sˆ‡sˆ‡sHˆ†ˆ‡sHˆ†Hˆsˆwˆsp‡„(‡sˆ‡sˆº ‰†ˆ‡sˆ‡sHwˆ‡rHˆsˆ;8‡x8‡x8(‡x8w8‡8w88(88‡„hˆ(‡„89‡x8¡(‡x8‡x8‡8888‡xhˆ„8‡xhˆŠºˆ†ˆwHˆ*oˆx8‡r ш‡ˆ†ˆw¨twˆwˆ†p‡x8‡x8hRø‘pp‡r wˆsˆ‡sˆ‡sˆº‰‡þ‰‡sHþwhˆ„(¨ˆswˆrˆ‡s(hˆ„8‡r‘sˆrˆ‡†HˆsHˆs(‡p‡sˆ‡sph8‡8‡xx8‡8‡(‡„88‡„xx8(‡x8‡xhˆx88‡x8‡x8‡xhˆoˆ‡sˆ‡sø†8‡x8‡x8‡xø†x8‡rˆsˆ‡sˆ‡o8‡x8‡„8ø†x8‡rˆ‡s‰sˆ‡sˆ‡†ˆ‡sˆ‡oˆsˆsˆ‡sˆ‡s‰sˆsˆ‡sˆ‡sˆ‡sˆ‡s‰oˆ‡oØ‹sˆj …xhhˆ„8‡„8‡x8‡x8‡„ø†x8‘hˆx8þh@9‡x8‡„ø†„ø†x8‡„ø8‡½8‡„hˆxh8‘8‡xhˆx8‡„8‡888‡xp^ø8‡„88‡x8‡x8‡x8‡8‡x8‡x8‡h88‘8‡ohˆ„8‡x8hˆx8h8‡x88‡x8‡8‡„8‡xhˆx8‡xh8‡x8‡„8‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡x8‡x8 …g€‰sð„sˆ‡sˆ‡oˆs …xh8‡x88€ˆw.^¼sÏ#Hð\¼sñ¾#xN!ÅsÏ‘Rˆà¹xþç(*<ïA„ Ï)<ïH‚ß~#ˆâ¹xçâù­å9…ßÎ<§ð[¼sñÎQg râ)§¡r*§!wâ)‡¡sâ)'žr*g râ)§¡sâ9Ç£r*g rNþŽÇsâ)'žr*§¡s*‡¡rÎ<çÌr*Ç£râ9§œsÊa¨œ†d:“RΉç†ÎèœdjèœxÎù&žsâ9§¡oâ9'žs¾è›3eŠçœxΉçœÎaèœÎaèœdòH¦Îa膾‰çœxdŠçœx¾‰çœÎaˆ/†Ê‰çœxÊáåŸo’)™’éÌs:'žsâ9'žs’)žoâ9盾‰ç†dŠçœxÎ9S¦†Î‰çœxÎ蛆ÎiH¦xÎaèΉç 9G<ÎsÄãñ8G<ÎsÄãñ8‡Hñ H åÈ9oœƒ!å8Gþ€ ¶aÜ¡ ÎN>€ ÎÁ`^Á !ÎA` àÜa ΡÀªaVîp®VîœΡÀª! Üa^Á ¡Ü`t L€d @j!ADàè Æ¡`Î!ÎÁ j!ÔþA à â¡ dBÏåÎáéÎ!Êa Îa d"ÎaåÊa d"ÎaåÊaåÊa Î!Î!ÎaåÎ!¾çÎaåÊåÊaå tåÎaåd¢XÎ@ãápîâáV®âÁ@WN&âáVîÊa ¾!Îa ¾!ÎaåÊa ÎåÊ!Ρââá¾!Ê!Î!Ê!Î!ΡVîfîâáâ¡âA&XN&âáÊ!Êåd‚åÎ!Ê!ÊaåÎa Î!ÎaåÊ!ÎaåÎ!ø"Êa Ê!ÎåΡ¢VîâHáâ¡VîþÜ¡΀@a@Ú˜ΠpîÊ!Ê!Î!Ê!Ê!Ê! NWN&Xî¢â¡p®Vî⡢⡢¢â¡VîââÁ@¢V®â¡â¡žîÊ!ÊåÊ!Ê!Ê!Îa Ê!ÊåÊa ÊaåÊ!Ê!Êa Î!Ê!Ê!ÊçÊN¿aæÊ!ÊaæÊ!Ê!Î!Ê!ÊA ËaåÊçÎaåÊ!Ê!Ê!Êa ÊåÎ!ΡV®XN&âfŽHáâáâáâB&VîâA&¾!ÎçÎ!Î!þÎáââVN&¾a Îådb Î!dbåÎ!¾!Î!¾åÎ!¾!Îa Î!¾!Îa Î!ÎaåÎ!Î!Î!Îa ø‚åÊA&V.þáâáâáââáââáâáXîâáâáfîâá¾a Îa ÎaåÎ!Îêd‚åÎ!Î!Îa ÎaæÎ!d"Î!Îaåd"¾a Î!ÎaåÎ!Î!Î!Î!Î!Î!Î!Î!Î!ÎAfaLAâÂâáVîâáGi“2)žs.:ç¢o:g s:¡o:‡ sâ)ç‚ʉ§‚Êq‡—ú&žs:g s:Ç@ÎAsäñ8‡C¾sÄãñ0IÍþ†gІg8‡gø†gø†g8‡g8‡g8‡gø†gІox†oèëox†oÐìs€ígø†gøÍþ†gøÍþ†gІgІgø†gІgø†gøͦ†sx†ox†oþxj8‡gø†g¸Ùgø†g8ÍÖ†gІsx†sx†ox†sx†ox†ž}†ox†ox†¾¾Ùgø†g8‡gø†gø†gø†g8mxm8‡g8mxj¸Ùg8‡g8‡ox†o †oȆgø†gèÙg8‡gø†sx†sІ›ÕìsІgø†gø†g¸Ùgø†g^m8‡gø†g8‡g8‡g8mxmø†sx†sx†¾~†›}†ox“x†¾~“x†ox†o8‡gø†sx†ox†sx†žÕ†o8‡gømø†gø†gø†gøÍîÙgÐÍ>‡gèÙgø†gø†g8‡gø†gø†gø†g8‡þgø†gø†gøÍ>‡gІox†oІsx†ox†sx†sx†sxmø†gø†gø†g8‡g8‡g¸ÙgІo8‡gøm8‡gømø†gèësx†ox†ox†sx†sx†sx†o8‡gø†g8‡¾~†sx†ox†ox†oÐìox†sx†¾þ†gø†g8ÍÖRø‡x8‡@•÷t‡x8‡x8wˆ‡sˆ‡sˆ“@ˆsˆwˆ‡s ˆsˆsˆ‡sˆsp‡s@!ˆrˆ‡sˆ“ˆsˆ‡sˆsˆs ˆs(‡…8‡8‡x8‡oˆ‡sˆs“ˆsˆsˆs ˆsˆ‡sˆsþˆr “¸“ø†x8„8‡8„8„0‰x8‚8‡xø†x8„8‡x8‡x8‚0‰x8‡x8‡8‡x0 #:‡8‡8‡8‡0‰8‡x8‚8‡x0 ‚8‚@‡0‰8‡x0‰xø†ø‚ø†@x8‡xx[Іsø†g8mxá}†ox†oІ›}†ox†sІgІsx†ox†sx†sx†¾þ†g8mx†›}†sx†sx†oÐá}†ox†sx†sx†›=‡gø†gІž}†sx†›}†sx†sÐìox†sxm †›}j8‡gø†g8‡g8Íþ†gø†gþø†g8‡gІðˆgßži;÷ìÂgç´}ËöìÛ³oÏ´QÔ†ðÙ·sÏ*ž{öMÂgç´=ÓvîÂoçž{öìܳsÚ>;wîÙ·sÏ´=ûvîÛ3mÏÎi{vîÙ¹gçž}³ùìÛ9—Ÿ{öíÙ¹gÚž};÷ìܳ”b>ÓöLÛ³o€ìh ¤-ܶ@vÙ¡›Ë¼z÷.sImo^mËë¥Fø0âgÚkK¬—šã½Ë\RKL-¯¶Èš7sŽL­sÞe‡—^–xhÍËRï¥Æú5ìØ²9/›­waRÿâ‹çÛ·;wçÜûmü\¼s¾mþ¶ùÛÝ9ã¿Ýý>ïœôþsñÎù>çûœôrÒŸ‹w®œñsÆÏ?÷ûÜøs¾Ïù>ïœñsã÷û>çû¿•à9¾ó›MWN<ߌWN<åÄSŽoßÄsŽoßwÎ~çgS<çWŽ‚ñœSâ9ñœÏ9ñØ4^9ñ,ãÉ2¶%¶Ì^Ë8FKËØèØ2œi³5?IØ2Ï,5¶ý#Â@H D@D!¥Rî€ÄÁxùå—.9æ—ËIæ3gºÌ3_>ãå2`.ã¥K_>Ì3^>3æ2gãÒ—ÏóŒ—Ëx¹L0ËŒùŒŸÁ,óå2ÏœùL0Ë€¹Ì3Á<æ2`>Cæ2g.ó¥K>ãåþ2_ºäå3`.Ì2_>óå2d.Ó(™Ë³ ®`.Ók£ËÌ3d.ãå3g.Cæ3Ã>ŒK^>3æ3Á<³ °.óŒ—ÏxùŒ—ϳŒŸÏx¹ ®Ë ;æ2g.ƒë2_.ãå3Á<ŒK^.Ó¨K^’òo¾¹ãÛ9çÄsN<ç¸sŽ;ü°oå|NpçøÆ—ã[9ñ”p9Ÿ±oç|ã[9¾}Ï7ŸÏ7ñœãÛ9ñœð7¾ñ7¾ãÛ9ñ|óð7ñ”ãÛ9ñœSŽoçÄSŽoßøvN<ßøöM<åÄSŽoçÄóM<çÄSN<åü Éå<üoçÄSÎ9åøöœMÀçøvN<ß\pÀç<|N<ßüoßøvŽoå”Cr<ûvN<ß|Î7çøVŽoßøöMÀç\ÎÃç|N<çÄC )À.¦—˰î˜Ï°>»—ËÐ~»—Ï,ƒ;˜ÏóL0Ë<Ã;˜Ï³Ì—Ëx™W0Ï,Ì2ÄùL0ÏàþŒôÄ/Cü3¬?ãå2¬?#ý2Á<æ3Ù{¹L0Ï€;libjibx-java-1.1.6a/docs/images/eclipse-run2-small.gif0000644000175000017500000051446110350117116022412 0ustar moellermoellerGIF89aêçÿ$K #P$>sC#/j'4C;2 $3[M)+25594-@”EA8JA-?CG CŸ+D†5HrHJG L®*J ]I3„=þö‘½}Ô£û¨‡>ê¡}doõèÇ>ê¡zècÙÛG=ú±zè£úØGööQ~ì£ú¨‡>ö‘½}Ô£û¨‡>ê¡}doõèÇ>ê¡zècÙÛG=ú±zè£úØGööQ~ì£ú¨‡>ö‘½}Ô£û¨‡>ê¡}doõèÇ>ê¡zècÙÛG=ú±zè£úØGööQ~ì£ú¨‡>ö‘½}Ô£û¨‡>ê¡}doõèÇ>ê¡zècÙÛG=ú±zè£úØGööQ~ì£ú¨‡>ö‘½}Ô£û¨‡>ê¡}doõèÇ>ê¡zècÙÛG=úþ±zè£úØGööQ~ì£ú¨‡>ö‘½}Ô£û¨‡>ê¡}doõèÇ>ê¡zècÙÛG=ú±zè£úØGööQ~ì£ú¨‡>ö‘½}Ô£û¨‡>ê¡}doõèÇ>ê¡zècÙÛG=ú±zô£ý ‡>ö±8ÄÕCš³ÇÜ` tÀãì0Ç;ÐŽw´´¥èx<Øñt´Ôè€Ç;ØñxÀï`‡9Ðt°ƒKßAtÀc¥ï`:ZºRsï€:\ºRv´”-eÇ;Ðñv ƒï€Ç;ØÑSt´-¥:ÞaÔwÀ£¥èh)=Ðñþ£¾-EGKéŽwõðh):ZJt¼Ã¨ï€GKÑÑRz ãF}(:˜=pës°Ã;˜; Ã;T;þ&;¼;¼;´=°ƒ9Ð·š·¢ƒ9Ѓ1xЏ¢ƒ§°ƒ9°ƒ9 ;¼ƒ9T;¼; Ã;¨kEÀCE¼;˜; Ã; ƒ¸¾ƒ9ˆ ;x :˜=(=˜:˜=°Ã;°ƒ§ˆ«±ƒ§°ƒ§ ·š=˜=p«9Ð-°:˜ƒº¾; ƒ9T·¢;TÄ; Ã;˜:˜ƒ§°Ã;˜; ƒ§´:°ƒ™:¼ƒ9Ð; ƒ9¼:x ;¼;ˆ ;˜Ã;°ƒ9°=°ƒ9 ;T=|C=˜< ; ·V=|C=˜< ; ·V=|C=˜< ; ·Vþ=|C=˜< ; ·V=|C=˜< ; ·V=|C=˜< ; ·V=|C=˜< ; ·V=|C=˜< ; ·V=|C=˜< ; ·V=|C=˜< ; ·V=|C=˜< ; ·V=|C=˜< ; ·V„9Ð:te=Ð:°:°:ˆ+<<=˜·¢ƒ¸ÂÃsЃ9p+:ˆ+<<=°ƒ9°CE°ƒ¡ˆ+<˜ƒ¸š=˜= ;˜:p«9ÀCE˜:À;˜:'Ђ9؃1 ƒ¡°C[°=˜=°:¨+=°:¼;´þ; = ƒ9Ð;Ð:p«§°Ã;°ƒ9°ƒ9°:¼·¢; ;؃1G=|=°<Ôƒ1T·¾:˜:¼;Ѓ¸Ò;¼;˜;¼:p+:°=°ƒ9ÐC[°=˜= Ã;°:°:¼:˜·š:Ѓ9t¥1˜;Àƒ9°:°:˜·¢ƒ9<·š;´…¸Âƒ9°ƒ9TD=˜ƒ>(;Ѓ9p+:p+=°=˜:p+:зÒ:¼=°C[°ƒ9¼;¼ƒ9 Ã;ÀÃ;p+:˜:ÀÃ;þ ;´;ÐÃ7ÐCE°ƒ9°ƒ9p+:Ð:°<˜:˜;Ð:Ѓ9 ; =˜= C=d= ; =˜= C=d= ; =˜= C=d= ; =˜= C=d= ; =˜= C=d= ; =˜= C=d= ; =˜= C=d= ; =˜= C=d= ; =˜= C=d= ; =˜= C=d= ; =˜= C=d= ; =˜= C=d= C=d:t%=˜C=dC=˜ƒ¸š;ÐÃ7˜ÃsЃ9p«9°þ=|ƒ9<=˜·š;ÐÃ7˜·¢=˜·Âƒ¸¢ƒ9Àƒ¸¢;T·¢=˜·š=˜=´;ÀÃ;°ƒ €(Àƒ=Ð=˜=°ƒ9ÐÃ7ÔC[Dƒ¸¢; ƒ9pësÐ;h4|Ã7h4|ƒ9T„9°:´=´Å7Ð; ƒ¸¾;Ø-Ѓ9p+< ;Ђ9T„9À·>¨! |Ìcì0<ÌÁ©ÐƒiÐDÒ` R˜#+Ž1 žq ì! µx:R€ ƒæ`‡9ìA z(äõÀ„:Ž‘‰NhA “ Ç7êaz Ãï°Ä,hA‹>DƒB;ìAþ tÐC*ìx‡4èñzÀƒР‡BÐÁzœ#êpú<Ô ©€ 0;¤BvÀç`‡9ÎhÐè`Ÿ>ÌQlÔC!õ€=ÌA… ƒæ`G= A©ÔÃìøF=¾AsÔƒôŠ9Øñz|ƒæ¨;è!s°ãõø=ÌQvÐC*æ`Ç7êñ z˜£ì ‡TÌÁŽoÔãô0G=ØA©˜ƒߨÇ7èaŽz°ƒR1;¾QoÐÃõ`=¤bv|£ß ‡9êÁzHÅìøF=¾AsÔƒôŠ9Øñz|ƒæ¨;è!s°ãõø=ÌQþvÐC*æø=ÐAt°ãìø=êÁèA!êèÁ¤ÂèáÌàÁîÁ˜áÁØA!ØØáÎá˜îÀØá耡^€Ba„ Øvààp@ ¢` \@¶áp ªa „€8áôÁàA*Øánáú¡üa‚Ì8ØèèÁàСº´ A*Þ‚ A*¾A( ²‚ÐÁŒA*ØÌÜ` .!r hÁÐà²Âð¢L€jÁž ØØþ èôÁ¤"+è!ÔaZaO¤‚èÌ¡ÌAªAª!Lê!èÁØA*ÂàÆØ˜Ì8áà!+èìÁ¤‚Ì0!’Á¼álA„¢²¾!¼ ,ØÁèêôAÌ¡pغÌA¤A¤6 Ì¡Î2Áâ 2!ÎA*Hо‚´°AÌA¤ÂØúÌØ¢ÐÐÐÁèÁÐÁèèA!ØØÁØêá„‚Ì‚ ¡þ¾A(èÁèA!Øêá„‚Ì‚ ¡¾A(èÁèA!Øêá„‚Ì‚ ¡¾A(èÁèA!Øêá„‚Ì‚ ¡¾A(èÁèA!Øêá„‚Ì‚ ¡¾A(èÁèA!Øêá„‚ÌÐA!è/èÁ6I! ¡ÌÐÁС²‚ÌÌ@á ûa6ÉèÁÐÌúö¡PáØÁÐÁ¬ˆ Øa„ <àÂÐF€ DÁ¬DÁÞ DÁÞ Œá”¡–á8aþØÁ”ÁÞáØPá óaüAÞÐ!+ÐÞÁ´\M´AèÁêÐÐA¤A A”A”¤ÂØAhÁØÁØ¡>q6–!+ê“‚ØÁèÁÐáž ž žà²ØA*ìÑhÁè¤ât¡š¡Is¡¾ÌÌÌáŠ@‚@ÒÀØÁàèÞÁ¤ žààê“ÐÁ¤‚Ρh!+Ð!+¨À´1lAØ‚ÐáÎÁø:aâ!êÁêÂh¡p¤âàþ!5 ÌÌ‚Ìè0!à̡̡¤B!èààáR Áè¤Â²ÂèÁ¿„B!¤"+ÐáêÁèÁèÁè!UÍêèáêA!è!UÍêèáêA!è!UÍêèáêA!è!UÍêèáêA!è!UÍêèáêA!è!UÍêèáêA!è!UÍêèáêA!è!UÍêèáêA!è!UÍêèáêA!è!UÍêèáêA!è!U¿a“Ì¡ ¡ŠU!¾ÌþôÁè¡àÁ¤‚ØÁØêêÁØÞáhaþ¡ A!Ð!+ÞÁØ¡ PAPè@*f¡ Ä@ÌA(ÊÐ@ÞáÌ è` ˆ Äá¸С8¡(¡á"èÁФdAÜ!nPÁÞÁÙÌè´A˜AŒA´ØA!ØèÁÐ}ØÇ”AèÁèÁÐA”àÁ¤ÞbA/àð"+èÞjá.¡ÐèèÐÁõAØØA!ˆa Áþ ¬áØÌÐ!+êA!H¡pèáÌÌàÞ.ábáØ/زàáôÁ Þ!þꯢèèÁèêÁÊAðáØØ‚¤Â”Á6ÉÐàA*º¡pÌÌèáÌRÌÌ„‚‚ ¡Ì‚àÐÁèÁèÁØÌÌÌ‚ÐÌÌÌzÖêá‚Т¾A!èA!àØA!êá‚Т¾A!èA!àØA!êá‚þТ¾A!èA!àØA!êá‚Т¾A!èA!àØA!êá‚Т¾A!èA!àØA!êႾêáàÐè¡Ìa“Ì̡衲èA!ØÁèÁèÁà!+ÐÐÞaáÁêÁØA*àÞAÄ/Ø¡>Í!UßÐ!+ÐÁðÂÞС>áØÁpÀÞÁÞÁØA*Ì!+àá„€fêAØÞ!+ê/ØèÐÁêêÁØÁÐÞ‚øÌA*þÌÌÐáØÞÞÞÌÐÞ”Ì²ÂØÐв‚ÌèÁèÁÐ̾¡¾ÁÐz–Ø/ìì1U¥ÂÐá¤"+¤ÂØA!ØÐØA!êÁêØÁØÌâ ‡ØÁØÁèA!ìÐÐá„êÓÐÁðB!ØáàÌØA!èÐÁèìÌ‚ØÁÞÁ¤ÂêêÐÁè¾Ì²ÂêêÐÌ!+àáÐÁÐ!+‚ØA*êþè„¢ ¡ ¡ Ì¾Ì¡¤B!ØA*èÁèá6I!¾¤‚̾a“âèA*èÁèá6I!¾¤‚̾a“âèA*èÁèá6I!¾¤‚̾a“âèA*èÁèá6I!¾¤‚̾a“âèA*èÁèá6I!¾¤‚̾a“âèA*Ì¡ÐáèA!êŠèÁèÁÌ!+êêÁÐÁØÁ¤‚²²B*êS*ÌÐáØÁ²¢>ßÁÑáÌ‚Ð!+à¡pÐÁ ÌþÐáÌÌÐDÌ„ ÒÞŒ¡pð¢>³Â¤âÐÁèÐÁèÁ ÇÐС>éÁÐA(ÐÌØØ ‡ÐÁ6ÉÐÁ²â¤‚ÌáÌ!+Ìе²¡¢>ááèÁà!+èÁØØ²BŒ¡pÌÞÁÐÐ!+ÐèÁèA*èA!ØA!êê!ØáÌÌÞ ÇÐèÁè/ôÁؾÞÌÌAtÙÌÌÞÌ/ØÁØÌ!+ôAÌèÁÐÌþØØÌ¡¾A*àà„‚èáàÌÌÌÌèÞÐÌA*èA!àÌêA!àêÁêA*ÌÐA!èÁèÁо¢¾Ì¡Ì¡²ÐA!êáÐÁêÁê!Ø¢¾Ì¡Ì¡²ÐA!êáÐÁêÁê!Ø¢¾Ì¡Ì¡²ÐA!êáÐÁêÁê!Ø¢¾Ì¡Ì¡²ÐA!êáÐÁêÁê!Ø¢¾Ì¡Ì¡²ÐA!êáÐÁêÁê!þè̲‚¢ÐÌ¡ Ì¡ì¡‚ÐÌÌè‚]½sìÌ™cGºwï ¾3÷޽oìè™CÇŽ:v ѽCϱc<±c;ô|C:ì cNFf9è¤<ì óNF²C9ìÐcNGì˜ÃŽBðt„NFõ@S9ô˜:æ¨D:ìÐcÐ7è˜C9ô C;ô°C:Ác:*Ñó < ÑcN=}ƒ; ±ƒ :¡C:æ°ƒÎ;è°c<ÖcNF蘓‘9уŽAè°C‚ô(dŽBì cþ;æÔ“M=æÔ“ <ðøÄ=è°C9ðdD9ô C9ì ÃŽ9ô˜C9ì˜C9ì˜Ã=Õƒ`=ßЃ 9ì H9ô|£Aõ@S9ì(;õ°c=èÔc:æÐM=Áƒ;õ@SAì˜SO6õ ÃN=ÐÔc;æÔ“M=è°S4õÄŽ9õdS:ìÔM=±cN=ÙÔƒ;õ@SAì˜SO6õ ÃN=ÐÔc;æÔ“M=è°S4õÄŽ9õdS:ìÔM=±cN=ÙÔƒvÔõ0;ÌQlÔì¨4êaŒ°ƒõø=ÐÁz¤ß@¢èaþz@£ß :Ì(sÐõ@P= A ¾ƒèx‡9ØatÐãð`=Ìás ƒGFÌAs¼æP;BoÐæ`Ç;"ÁwtÄ y‡9ÐÁt¼ƒGàÄ,bv¼ð@‡AèÁt˜ƒß :ØaŽz@ƒè0;ÌAŒ˜ƒæ ;¾AvÀC‚æÈˆ9ØaŽzd£æ`‡B2bŸ°ìx;¾Av˜ƒæ@Ç;àat˜ƒ¡;Ðñz˜ß ;ê ztÄè`GâÐÁŽoЃèøF=ÌAƒÐãæø=ÌAs°Ãô`<²Qþ fÄèȈ9èz|ƒb‡BØAv ƒè0:ÌÁŽzd£©‡B¾Av˜ƒì0=ÌÁsÀÃì0G= ‚s|ƒª4ês(Р‡9èa‚™ƒß GFƒ|ƒì0Ç7èsÐÃô@=ÌA…|£æ ‡92s°Ãô`Gâè¡s|ƒìPH=²Qv˜ƒè < R¡ƒæ@=àaz ì0:èƒÐÃì0<2‚z ƒ쨇áÁz ƒõ0=êaz°ô8G=>Hz°ƒï¨=ÎQzÔQõø <èqŽzþУˆªÇá(xØ£ˆªÇë(xØ£ô°G=ìAz Ê´G=e{УР‡B hÔAõ@GFÌ‘‘z(„ Ɉ9莌 ƒa:ØatÐC!ð0‡BØ¡ƒ Ãô0=Øx˜ƒðPˆO2¢Ÿ°ì ;ÐAv¼ƒè'@á šãð`‡9ÐÁ…°£Ù¨‡A’z˜£ß`< ‚sÔAõ0;èavÀì0<ÌsdD!ôø;Ðatdäì0GFèat˜C‚è :ØAo„è0=ÐAhÔ##è`=ÌAŒÐþæ`=¾at°Ãõ€F=ÌÁŽz@£æ`:ØQÑÃì ;ÐÁt ˆèÈ=ÌAs°A‡9ÐAs°ÃðÈ‚etdìPH= BtHô@=¾aŽzdƒè Ç7W…˜£Ù GFÐaŽz|à ô0=ÌQs°Ãõ0;ÌŽz|#qè0= QoÐC!æ ‡9àav ƒæ`: BŒ˜C‚è`‡92bv˜ƒôø†9ÐAŒÐãì0;èñ s ƒ¡Ç7ØavÐì0=¾‘z|ƒß@:Øa „B‚Ðat ˆþè@:Ø‘¸ÄÑÃðÈHÂÑÁz˜ƒô0;Ì‘s C›ôÐ&=ÌAo˜ƒõ0=ÐAhÔƒô0= Qz°ƒæ@‡9êav˜£Ù¨Ç7ØAs°Ã ô@=Ì‘tdÄô0G=¾‘z ì0;èñ z˜ƒè ‡9àÁzd$áô0=¤z˜C‚æÈ:2‚s ãì8#haŽŽÐÂ|W†2Œ¡ c(ƒ|7†ßáwZ(Þ~§…ßA cÐB´0†2h¡ c(ƒÆð»1”a ¿+ô0†ß o eƒ~W¼ßiA R(ôP-Œ¡ ZÃïþ´0†2ŒA c(ô0-Œ¡ Z(ƒÊ ß•A ÑûÊ(¼2ha eC´0-Œ!zZ(CñÊ0†2Œ!}c(^´€=2BeÌBÆð;-”a ÑÓŠW†1”A Æ  ´` ´` ´  ´  |G Æ  ´  |§ ´` Ò§ ´Àw´ÀwÊ` ´  Æ@ Æ@ Ê@ Æ  ŠG Æ€‚Æ  ´ÀwÊ@ ¢g Ê` Ê` ´` Šg ´àw´  ´` ~G Ð@ Æ x¢G |çw´ z´  ´` ~G Æ@ Æàw´  ´` ~G Æ@ Æàw´  ´` Ê@ ~g ´` þÒg ÒÇw~g ~g Ò‡zÆàwÆ@ ~WxÊ@ …çw´` ´` ´  ÆàwÆàw´` ´` ´` Ê` Ê` ~g ´` Ê` ´Px´` Šçw´` Šg ÊÀwŠçwÆ@ Æ x~ÇwÊ` ´ÀwÊ` Ê@ Ê@ Ê` ´` ´` ÊÀwÊ@ Ê xÆàw´` ´€z´` ´Àw´` Ê xÆ  ´ }´  ´  Æ  Æ  ¨§ Æ@ ÊÀwÊ@ ¨§ Æp¤@ æ@Ý@ ì ‘æÀï qqûHqôpñìðûÈæpì€ìpïÀçÀæûÈþô€A0æ€ô°¹ï`Ò  ´pï`ô€Aè`èðè`èðìðì`ï`ïÀï æð‰Ãï`aï€æ€æðèð‰óæðô€ è8èðô`ô€´€æ€ÊÐ ì€ ïÀè€ ô`ôÀæ€æðì`ô`ï`ïÀï` ñì`ï` aïpæ@ ñ aèðñèðì@è`ì@ªBï`ô€ ô€ è`ñìðôÀïÀæðìðè`ï€ì`ôðì`ï ñì`ï`ïþÀñèðè`ï`ïÀñèðè`ï`ï€æ@‰ ¡B0è€ ïÀæÐæðaï€ïï8ì`ìðèðèðè`è8èðè`èðñæðô`ì`ôÀè` ñô`èðæðô` aèð ïÀïÀæðæðè` aï` ï€ï@0ï€ï ì`ìðô€æðì€ ïÀï`è`è`߉ïÀ aï@0æ =ð,æÀ¬àôðˆÂˆâôðˆˆôPì€(þðpõÀôÀôpõˆï@çPôðè€(ì@bóì@>Aï€(ï@çPôPbóõ@ïì@´  è`Údì€ôÀèÀè@æðì`ô`ô`ôæï Aèàìðìðè0 XÀ«½Ê«Và«ÁŠVÀ«V°Â*¬V°Èj¾jÈj¼j¾jÈê«VЫV`­¼j½j½j¼ºX°ÂjÛÚ«VÀ«V€®Èjíjí*¯V`­VÀ«VЫV€¬V ¯½jÂjíjòjÁjòjòjÁjX`èjþíj½J ì€ aô`ô Aï Að M!ûìðìðìðB@ ´`ï` ð *ïô`ô€ôÀð@æ@æ@ì@ì@ì@õpô€ô€õÀôÀï@>QïÀï@õpð@ì@ððôÀôÀôàððððìðˆô`ðÀôðˆÒ Æ Aô`ô`ì@æ@߀ì€æÀ²ƒIß A Á aô@ op —‹¹§Ð ™Ë¹§Ð —Û +º­ º§Ð ™Û ™Û —Û —Û —Û §Ð Û §Ð ­p ­þ€¹­Pº—Û ˜Û ½Û¹­ ¼—Û —Û ÅÛ¹­P¼­ ¼ÂÛ œÛ ˜Û —Û —Û ­p ·‹¹½Ð ˜{»˜Û ™{»­À¹½Ð —Û §Ð §Ð §Ð —Û œÛ §P¾—Û œÛ ˜Û œ[¾­Ð¹ÿÛ §Ð œÛ §Ð —Û —Û ½P ½p ­p¹ÿÛ ¥Ð ­p ·‹¹o@ >²¢ì€ì`„ññtϢʀ(õ  ˆÂõ€(ìPì€(ð€(è€(è@ïÀõXìðAì@ð@ì€(õÀôôÀˆÂˆòõ@ìPèXˆÂôÀþôPôðˆòˆ‚Ê õ`¡æ€æPaô€ô`ô€ì€ì ô`ôè@æ@ Áæ MèÀf§“Œ¹c0ÉŸ0ÉŸ0ɉ€›œŸ0ÉŸ°ÉŸàɈàɈ𠞬ʠʭ¬Êˆð ®¼É€²lË“ü žü ›ü ®ü žü ·ü “ü ‰ð “ŒŸàɈð “ü “ü ®ü “ü “ü ®ü ®ü ®Ü“Ü·ÜÊŸ°ÉŸàʟέ܈ð çÌΪŒŸ ËŸàÉ€­ü ‡P œ ´0 §àɈP ÏB ¬Ð ˆ0É€‰` aþõæ@è`ôÀè@è@ ôÀè` A ÁïÀïÀ} 0 ì`ƈ’ ô}` _\ì@õp€¥ ÄõpTôP_LìXõ€(õ õ@ïðAðPìPìPôPD G@õ  PôPß` Mæaì@ —ô€ô`õð õð èÀèÀæ Aô`èô€ðàl°l€ØÅP € % kÙk€Øl°ŸÀpÐ >Ùˆ Ùl𠽟°“ÍkÀkð ‘MÚkÀk0 >Ù‘Ý >pkþÀŽp‘ÍkÀkÀØŽpkÀkÀkÀ±Í±Í‘MÚkÀÍÍkÀ‘͑͑Í͑ͱ=ÙkÀØkÀkÀ‘ͱ½l°lÙl°l°l°ˆ½l°l°“ÙlÙl°ˆ½¤Ík0Ùk@ÚkÀkÀkÀÍkÀkÀÍMÚ=ÙkÀkÀk@ÚkÀkÀkÀkÀkÀkÀî Ùˆ Ùl°ˆ½l°ˆ½l°l°ˆ½lÙl°ˆ½l°l°l°ˆ` ¬  Æ@ Ï’l°‰@  ` È@ þ @ ˆ°ˆ½l aèPßÀèÀ‰ƒì@æÀèÀð²!«*ì Ïbð` õ€(pP q€šðAР Ѐˆbõ€(çÐ _\FMõ@õ Ú è@õXõ T–þÅð°õ fÐ[Xè  Aì`ì`ôÀèÀè`ô`ô`èpì`ô²æ€ì`ôÀææ M íMÅp €0cP:0íÝÞ °­P­Ð‰0l­0@Ó€cÀ­Mð ­ˆ0lÐ mПРÒÞ 5Ð MàÒ>ÉM`þMÐ ‰°ÒîcÀmà‰Ð cp ‰ÐfÐcÐcÐcÐícÐí#ßíc0òc0òc@òM0Ò>+ó1/ó0?0?3/ícÐíc0òc0íc€ó1?AOòcÐc°òc0òc íc@ô$?Ó>l` œÐ “Œˆ@ ˆ 툀 ÊÐ õÐ¥ Ë0Ýnì€ô€Aæ@ì`ô`ôÀæ²æçÁè ¤@ èÆ@ö`œ@–` Ѐ(õ õPÚРЀì  è@Ðð Ú@Ð ñ`Ê Ú Ú è@õ õ€(Ð`Êþ Ú€ ð ô Ð` ç  ß@Ê õûèðAö°û°JðAö@öð Ê`ô`ô€ è@æPÐPæ@æ@æ@æ@æPß`ô ô`ì€õð ‘ á0 0cÙ®%P:`ÿ::`ÀÐñ‰Â–O|¼Ñ!ŠÖ5¥Z5i „¼DR€ˆÀ„X J‰0¤ ŒOšÌù¤†˜V ¶4êà :DùRð©CZ Z‰2ÐèQ¤:Œæ„¡ã¨Ž£:Ô1õ¨Ž£9ê¨ã¨£:ꀡè:`訆:`è@ªc Žþ:–€QB 0tÀÐCÇ@Fu ÔCÇQuÀÈ9P FuÀÐCÇQFuXEªc Ž:Œê¨†:ê0ª†Ž£:Œ®Q¦lÍïß ”ÁÐAŒ¼^9[±b¶f zر3gŽ:zÐê¡cWéôб£gŽž¹zæØÕËF;xèнcw„§êËìÕÓWª¦84±Ç}¤éFz´ùFh¤Gtê±nº¦{*Ħmì¡gl´‡bêÁ†~´ÉÆmúÉÆžnêÉF›n´Á¦}êž*úùg ÷ì©g@}²Q¦ùÐ1§sè1wÐþ1oꦞ꾩z¾©z¾©§ºoè1‡tØyç9DpS„1#§ê|óÎOãDØB„VÌp“æødJ±¢ªá“D Å ,Ø¢7?Q@3>Q@,>9@ŒO¡Š7{1C„Oa >Q Š;kµõV\sÕuW^{õõW`ƒvXbwMmÚÐFZÖ E7ÑÁEgr2fm¹ÓŒoê1‡žêäc§ºoè1§ùªû¦tª3vàAg:sÖd#@ažwŒÑÇ}à( 4,ÙÇ} Ù§hê9oê¡Çhº©šzÎA'xþÎÑæ›zì¡Çžz²¡§ ùiâ9lꑦi覟lేžlêñÇžzôÙbŸ*ªø§Š“®ÇžoŒ1‡žê¢¦zÌa‡hêaG¾z²©‡z¾Ax¾aÇ=sØ1‡tØ19.[‚ Ña‚Ð[n¾åþä€->y£•Øèà šH¤ؘC„EÚ˜æ).`cæ@‘ Äàû“7ZA`Œ9ÁⓤhbG¤°à/:øÂ‡O¸ Š 9 Š¾{÷ýwàƒ~xâ‹7þxä“W~yæ‡ã\€[ÃZ¬‘{c–Y‘EÖà1úÖƒs¾A‡þvè1‡zÌa'js詚z²A‡sØ¡çs¦£§:t¼ƒD -ØñŽeècû Å?4a hÔCúx‡>ö¡sLgÙø†>àatØãæ¨Ç>ÌÁŽoØãß ÇÙQ!²éÙ8:öq}ÐãôØ<&ˆŽoÔãú¨ÇíŠ-è£J Å'¸À šCШ‡9èatDæ ›9Ð1sÀ#jì ‡9¾AøÑc:ì@<Øá½9à â¨7 Äñ¸@+p `z;€pAêí˜À"y,Ò€ èM¸€#'°HL`þ¸ÀpÀÀ$0Eêíz“›.à¹I฀îÇ èí€Þ. · 8àz“›Þ.à€ 8àz»À//à \ÀpÀô&\Àè›.Ç ÄQÀ%à€ üòÀ Ðñ¸€~ùO€:@z“›Þ. €êMnw”€.à€ 8à@/ 7ßIÀ¸@B/pG ÜQn¸€p\à—Ç2Œ! it#ïh‚$ÐtÌßÐ1ŒÑ‹ Hàt4;ÌQsȧ:ß G6êazDô`:êz˜C>ôþH:àñv ã :Þ¡Œ}LpÿðÇ?êñê£ ¬Ç>ê±Àê£ÿ¨‡?ôan@£ûÐG=¨Öcúè6&X}8QûèG=ö1Á~è¯ûèÇ÷Ñ .°ûÐÇëát(ƒè¨G6êaŽ®šƒæX£9ØzT‡ô0:ÌQhÔ明9Øñ7ÐÑp@G 8@r“€ÞšÐ½ÑQoÐ¥£Þ$à::€Žp€@G½IÀp€.@GH Žt¼€ 8@nнp ÈMz»€@G\@q¼€Þ. Hàttþ€.à \Àp€.à 8àÐÛ$ 7::àp€. @÷€®$p\À¸€$ 7 8@rs€. 8฀.à€ 8@€Ü 8à€.@Ç8JàÜ•À$p:^@À$p\€»z»€. H฀ {::€» ã$p½É»q¼€Þ. Ðñ¸€èx \Àd–€$à:êM ã$p&ÔC½Q:ZqÈ­ð0Æ2¡ŒzèÀ¸õðލÑð ‡|ØsÐõþ9Øax¼c:ôˆ=¢†Žw°ƒ” Åtœñzô£ ìÇ>üQ~ÔãÿXàºøzìcÝx­Çë±Àuovë®Çf×ýöãõXà?ô½ÙÔ¯ÿ¨Ç?øzìãõØ;”QxT‡æ ‡9¦cz°ôX#;ÌQhÔÃè :èz¬èЃ.À]½I@opp_Jà¸À/éè 8@w”À$p:^Àp€. ¹IÀtŒ£ ½ÑÑdvw HÀttÀèè \@À$à èí°€$p½IÀЧþ%à:^Àtt€. ½Iàq”€Þ. 8€Ž€$ 7:^€Ž £$à:êM€$à èM€$à \@z££Ü$à \ÀЛp½I@oÐÛ$ · 8àtÔ›@GÐ1Žt¼€.à€ 8@¸€èxèþRÀ$à 8@€è¨7 8€Ž[%à€ p€ €  £;‚^€‡z°†1¸€® H„i°‡zhp€ p ¸ 0ƒz0z`s h¨s s ù€s˜x0z0t¨h t þ‡’ƒ‡w`t8Nt`cX·}·À«uëzø‡}ø‡zø‡}ø¼ú‡zð‡؇«‡ª‡è¼ú·~ø‡zX zø‡ú·}¨‡؇u«‡è‡}臫‡u뇨‡Û‡u[ vP†o t`‡ê ù ù0ù`t¨‡ê€‡é0t`t¨s˜t0z@=€8’à.½.½‘€ pîº ¸ p€  £ €  #½‘¸èº #¹.¸ ¸:r ¸¸½¹ p€ p€ p p p€ p Л  #þ°° #€  £ p€  £ Л ¸¸:º¸ p ¸ p:º:º½‘ £8²¸ ¸€ p ¸°½±€ € € € p p Ð pèº ¸¸:r p ¸:º:r ¸ ¸ p  # #¸ ¸ p Ð p€  £ p Ðîºîr ˆ£ € € € € p p€ € € p p€ à® € à.°¸ ¸2s€ þ¸ p€  #€.¹¡#€ 9€Ÿz0zøs¨‡o s@z0v0‡5ªx@ø¡t¨txv F …w€eX uó‡zø‡~ø‡ú‡zX·}è‡}ø‡}X·zè‡Û‡è‡}ø‡zø·؇ØqÛ‡¨‡èë܇è‡ê‡uÛ‡¨‡~ø‡ú‡ú·ú·ê¼Z·}Ðh e s ø©h s ø¡s@v0z¨Žo ù v0‡wp8AºP ÍP ÝPíPýP QQ-Q=QMQ]QMѸ3¨h¨‡ê@þs øa‡ê s ‡$1z¨z0‡zø†z˜xxv@‡#àV`z†è‡ë‡è‡}èëì‡è‡7ë쇷è‡}X·~X·~؇~X·~°Î¨‡u·è‡}ø‡~ø‡~°Î}ø‡zøqë‡؇~ø‡zøqû‡@í‡zø‡}¨‡u3e Zè Z0e0e e0†Þ e0†Þ e0†Þ0Z0Z0VÝ €uÛ‡ðZ]·@]·~X·~°ÎE…Óu[Ôè‡u·}ø‡@õUqû·EõUf]Ô·XÔè‡XÔ~øqû·@]·E]·@þýk]7k×u Ô··u×q]7qûví‡XÔè‡[ @Ýqûvý‡qµÎ~X·xýqûq[7qû‡~`Ö‹W‡í‡u×uë8 Të78í8·XÔØëÜk…‡x€ 0e0e cPJeµÞ e TcPcPZè J5Z0JUZ`Ua8RàtxeX7qcX8í‡uëëìëìëì‡è†í‡uëfí‡è‡uëfí‡uë¦]·~ø·~`Ø~°Î}X7¨‡}X·}ø‡}ø·~ø‡@e8­‡~€Ó~`Ø~ðÕ~ø·þ~8Û~°Î~°Î~8Û Ôuë‡7ëìëìëìÈ…\qcZqëÜ~`Ú~èÜèÓeÚ~°Î~HÝë‡7×í\q›]_ífí‡uë‡u··è‡uë‡TÓí‡è‡uë‡uë}¨‡zˆ‡z€ s@sxt0‡w ø1zø÷`‡ê`‡w0‡é sxsx‡w0‡wH’#àV@‡w{p_vØ_þí_þ}‡ý}‡þ}ÿíßw(`~~vx‡ý}~ž`6‡ý•w0vp†zxþ}zØßw@‡w0t`‡w`‡wÀh°3°þÝ7þ‡~`Zq«á³í‡³í8í¦íÖá~0Ý~X·~`Ø~°Î~X7qcØ~pÝ~0Ý~X·~`Ú@]7qâ~`Ö~X7qëÜ~€SqÛ‡~€Ü~øqÛè7¾‡7pßý¥‡o0þ¥sØßê@v€sð_t0x¨z0vp_v F v@g°‡®šdJ®dK¾dLÎdMÞdJ~v@vxt€t{Ø_ù`s`ù`s€v@v€eàZ`%X·~`Z_þe`fafb.fc>fdNfe^ffnfëì‡`·}¨‡x¸‡x¸‡x¨þ=Hs`t v¨þ5zàßo tà_s t0þEvH’# «w€eÐ÷Ýg~îgþg€hh‚.hùxv0v0z@i¨v v@‡w@zØ_x0v t`‡w`„n`g¨‚P€}pf”Ni•^i–ni—~i˜^·~Øè‡zˆ‡zˆ‡{pc=à_t ‡ê`‡z0z@‡zøt0t tØ_t`‡zø†ý•v tØgv8N t`i°s àþ5‡ý5‡þ5 6²æ_s@`s`sØ_s@`shë¶6z`t€‡ý5vp{ˆþz@v0v@s`t0‡ýEFè˜ÚP€~X7\0ƒvØ3f5ƒƒ)À_f†eøfXët'0ƒ`VfX†e6ƒX73ˆc€vˆißþmàn`Ôzè‡z¸‡x¨7vcxP€0ƒýE‡ýý†zˆtX!÷0z@s t ‡ê v@z`tØßê`tF˜t€i¨vÐdxxè*x¸dxØdx¨dx@xx@h€‡®‚‡K†xÀäêh¨‡o`t s@h¨‡wØ_s`b e°bÐz0t t`mÀlÀPþ€uë)€7°ˆ~ 1°†€8x …QˆP‚QøC˜†u»3€ƒ~ˆ8„`€C …G0_…*8;à…¨‚{PZˆ8„~ 1°†…-X„~X·[08è\`3à…€8x73ˆ|°1°†}¨‚{PZÀF0^ø‡s°8è8¸‡«tK¿tLÏtMßtNïtOÿtPuQuN/„K‡Qï‡zø‡}€Þ{ˆ‡{¨‡x¸‡x¨€=`z0v ‡ê0z€†z tøtøõ_¯‡o0z€†z¨Žý…ùxv8‚ûþp_eÐs ‡6z0z¨z¨z0z0vàgs s s`€6z0z0vp_s s s`‡ê søm@s s s`‡w0z0zxv mÀs ~6z8‡z€v mø†løvvÐ}ý…jø…_ð…^(b0þ¥sÀ[x„P€3Ѐ°x„¸˜ø*ˆØU€p€~X·[ˆxƒÐ^ø à…* FP‚Ø ƒ¸h‡$‚Ѐ_°x„¨€Dø·[ˆx1@€;€þ~0€)€€X·*ø|à„A€~€vH‚*¸ƒè0CèøÈ‚Qÿ|Ð}Ñ}Ò/}K·=Ø…=(røôE­‡x€Þx¸‡x€Þx¸}€3@z0ù ‡$¡d§s s¨d‡t ‡ê t`sp_v@‡#Z@v†z`dÿuz0v06‡ýEvz0v0‡ýíþ_§s`sØßê s`sØ_z0v@h s耀֭;væè™cg®4mÙÐÑÃfn¢9zæÐ™C× 9eìàA«Ç9göè¡Cgµ_íÚݻ׋:væþ ¡Ó¦kÇÿ~š‰‘†‚˜f4äÐ@;%1ÄÄ£†~öð!A•*1þU‰Ñ¯JŒ~fbT‰‘@;ívt=ÑÏ ƒ *Ú™Z ß¿~6$P"&>ý´#ã_¿*?H1à €v;¤ˆ‰@?ÍþõÐnxè~¢N­z5ëÖ®_ÃŽ-{6íÚ¶o¯î·§Ð®B{ö\{Ýï_¿zýê!O^/ó˜õ*lÑcEzæè¡3ÇŽ^=hõ¾Q4Go"=tìÌÑ3WÏ;sèÞ± ”9vÎì±K ¼”Ù™S;ßÔS9ô Ã:ð¤T9ô Ã:ð þ:ð¤T9ô ÃNJÿ™S9è°ƒ4õ°CÏ;ìÔ :æ S9õHSÏ;ðÐc=Ф„;æÐÃ<Ð|9Úh9ì¼4ôLDÏ;ïüòK?WÞC ;ï #ߘó´T€Z1ü$F Ü4À@ ý?ˆñC?ìc ¹ü´O$ ….Ô@ 5ˆÃ?bœ  hÐ4 †.ÔMTðO ðÓ> h€UÄàÿ?ü$F †0Àÿ`€@fTƒ;ü“ ô@;;ˆ±E ¸1Û¬³ÏBm³WþVíoOÔ²ÏjWîóO=WÞ£þ\<÷Ôssñl¡ŒõœS4õ˜Ã:ßÐ3;è˜C=õ@S9ô°ƒŽ9ßÔƒÎDì Ï;ì #'´¤M=ïÐó =æÐÃNìLDÏ7æôÈN=ÙÔs==¢Ã:ô˜C9ô˜C;(³ƒ=ìôÈÎDìÔc<ìHcN7ÐHMJô¤ÄÎDÝH# 4ݘ£ ;ô°“;Õ#6ÆhcŒ6ݰcNJÚÔSPJïPó‹ gò‹/æ°c<Œ°c:nÐÁ?WöƒßûسÏOûüÄ÷•ªðÏ•?íóßÿ\ùßÿþÓ>†c¾æ?íså?ýüÓÏOWþså?†£¶Ï•ÿþþÏ>Wλì³Ó^»í·ãn{?ÖîñÄo—ø³jýÔÓÏ>ý S<1ËÜ=ñ±Œè˜SOAæè›R=æÐc:æ@S==Òc=ÐÐó =æ°3:ï°s( ¤=æ|COxô˜C9ô c"õ0=Øav Ãè`Ç7èaz|ƒá™È7èaz˜ƒß ÇDèaz°Ãõ0Ç7èaŽ‚4 訇9 ò z1<´ s Ãì0=RÂs Ë01 ‘x°ƒʰGAÌÁtô↣:Øt‚æ@‡XQ×ôC5ýXͬÑÜ¡16ýˆÍ•þRÓ4Â1Žrœ#es¥="xB-üñ“~ †oûà[=öœ{ '÷`Î:©g˜ß G6êŠ|#<ô€:ÌÁŽð è0G= Q‚Àãì@Ç A t˜ÃúB‡9ÐAsÐc"õø†9ê‘ z|c"ô0=ÌAsÐÃô€F=¾aŽz˜£æ¨;ÌAhÔÃì0= Q‰ ƒß0GARÂz ð˜HAèatÐãì@<& x¼æ ‡9ØAt°Ã2”A‹w˜ƒæx‡4ìzLæ8Ä2xa^æx<(vÀà ³ˆî®þ”š~ÄîJ?éÇìúÑš~Ħ±ëGkjÓ›ât6ýØÃ*±‡Zøã'ÚhЂ£.  ðB=úQ{$'RG#«zeèá)aÇDêaz˜ƒõ€F=¾As ƒæ ‡9èaz Ãðx;êñ s ãì'8Áz(£è0G= QtLÐì0G=ÌAs¤ÄìøF=Ì‘x|ƒ‰5GJàñ zôß ‡9ê zô`GJ؉Ðõ€=Ìz˜ƒæ@<àñz˜ô˜;&Bv Ãð˜:èÁtÐCö`:ØñŽwôì@Ç;ÌÁþŽw Ã~Ð=Ü@‹ °&½ê]/{UÓöÂ7¾ýˆ/}ëkßûâ7¿úÝ/YÓ{ü†WúI?±/´À G]ðöQ{(GªUðœat˜ƒæ ÇÑAx˜ìø=¾QhÔÃè˜=ÌŽ‰°ï`:„ V˜ƒÒ°=¾z|õ0=ÌAs c"è¨4èÁt°c"ì ‡9èaŽz@£æ ‡9Èû z|ƒæ ‡9èAtÀõÈF=¾Áz Ãï`:&t°Ãõø†9ØAo˜AG= Qvôˆè0ÇuÍ‘v ƒÊÐ=zdŽþÿ°Ãï`:èŽw¢·öÐ+*ÐßS£:Õª^5«[íêWßãJ©éG ¾QØcõ¸R=Z@Œzô#õªT'à$jðÍ?ôCjìƒz]É?ôCzíC=øÃ?ôkÔÃ?\Ij`N?üÕüßüÕüÕüƒáüþ„ÐB¤F?¸ÃèƒàüCàCè †,˜äCè †&àüC¸A´ÂÈA;ô>D€d>lÁ?D>`AülAÜBÜ‚$A?€XA?hãfrfgªZ?ðAx#4˜8zcäA ÁtÁ¤ÝtÁ¨A#Å<2¸<Ѓ9ÔÃ7LD=˜=L:Ѓ9 = ƒ9°=@C=|ÃD ÃDÐE Ã;°ƒ p-¤„4üD?°F"4CxNC3œB1üÃð-ìÀ?ƒðC xB)¤F?ÐW?ÐW? F?üC?ÄW?¤F?¨W?¬F?þ°W?è-T@jôƒ;D¼@>lA?DA>`Á?$A?üC?È‚<>`Á?$A?üC?¬@?¬@?$A?äÃ$A?üD>HÁ>A>`A?DA>lAäƒôäÃà$A>D€p€g"i’*i|Â7îC=”A$ fPi A A 9°Ã”AxA<Àc#6˜ÁD°ÃDÔCx°ƒ9Ð:;˜;¤„9ÐC6Ôƒ9Ѓ9Ѓ9Ð;ÀÃ;°:)p= ƒ4¬F? Æ)ä£6C.8B?ìàÃ쀬À4ì$h@?¬F?ÐW? Æ•üC?üC?¨F?¤Fþ?¤W?°W?¤Z?ø+T@jôƒ;HA?¤5Á>`>`Á?$ÁOðìàüCü>D€x"$Á?äƒDA?üD>hÀ>¨?A?`>lAìCôààÃ$Á>¤@? Ã>dÃ’Úë½*)!¬¦ÔÃ7¬f@À ¬¬f¼Ã7dÀ0¬C”‚.è%ð-üƒ, )0#ð-üƒ,üC=@Ã4üƒ?Œ‚,üC>(C6ˆA;ôC>‚XC?è‚P‚?Ђ,ì4ø"ð-ø-ÈÂ?dƒ,B?¨B?<íäRîö!äA$äA=@•Ú€@è†n䕚lÁTÁ üL?¤@å²Z?øÁ,T@? F?üD?üÕüC?¤F?üߨF?ÔÃ>þüÕüß ßüÄ•üD? Æ>¤F?¬Æ•¨oK°ªõ!”jƒ6” Ø@0A0A äAØ€5ÔÔA$0Á:ÄØnÁ2èEÐ4ÔÃ7DJ°ƒ¾@C=˜C=@C=˜< ÃD =L=P:¼;#ÐBJ8ƒzõÃ:8Â_q"üC=°€áL°«õƒÐB°W?°F?´Z?üC?¤F?<íÃqgî! f@¬fð!˜!˜!˜$P©@Bx#LØ4¬Ã44’(ƒ˜C=ôˆ9Ð; ;Ѓ9¤ F?üÕı«õƒÐB,i? ó23sö! &••A•–A”A”A”jzc0Á:LC#C#Ã:H2è;˜;ÐEЃ9Ð:°=|;¤EÀCJLD= < C=@C=|:¼;)°:¼ƒ2ÜW?üC?Ü×DStE[t?0+T€EstG{ôGƒtH‹ôH“4E÷!tAtÁj®¦:¦#jFB|c|#C1¬C1Xƒ5T•(ƒ°;¤=˜C=˜CJPD=5= ƒ9Ѓ9°=°þÃD°ƒ9|= ƒ9\; ÃP+ Ã;H}]II›õY«F?è-TZ»õ[Ãu\Ëõ\Ot?‚:®¦K«jòµi~#XC18XC1TÕ(ƒ¼;˜C=@=|ƒ9Ѓ9Ѓò5;ÐÃDÐ4ÔÃeÓ:5:˜:¼;%Ð; ƒ3ÜW?ÐõkÛW?èÁ,DlÛömãvnëöjÔ,ìo·0¨·DD$D‚0A1ÃNë],ƒÔƒ9uJÐE =˜C=˜=˜CÀ:ÀÃDÐ:˜Ãe³<¼; ÃÌÏ;Àƒ3°—9˜‚)|ƒjþð-È‚m8kôƒÌBôC€#x‚+ø‚Çu=¤‚ÝÙ Ô]*Ø Ô]*ð ðA*Ô]*(ƒ5Œé,ƒ°ƒ9°=˜:Ð4Ôƒ9 =@C=|=˜=L=˜=˜:˜C=@C=õD Ã;°ƒp- Ã;(ƒzíC<ê&|Â! B)üÃì:$k¬Àdƒ»u?è-T€—“y™›ù™¯N*G=ìCrH•rÄÃ: Ç„ÕC<èÝ44’(ƒ°:˜C=@= C=˜CP›C=dC= E°ƒ9 Ã7Ôƒ9°Ã;Àƒ9¤;ÀÃ;°:!Ð:¼ƒ4¬W)äBþx†g"\Éà$¨À4x‚( 6l@<ôÃ?dÁ?È‚ð@>D€XšßW?è-D±+û²3ûk_É>ðM=üC=ôCrôÚ×±i{ëÁ2è= ƒ9ô;˜;˜= ; EЃ9Ôƒ9Ð;P:˜=˜=ÔÃ7˜:¼;'€‚9 ƒ3¤W?ìÃ)lAôÃlALC0 7A øƒ3èìC èƒ ðìàƒøƒ È|zõƒÌB4þäS~åÿÄ• Æ•ÔÃ?\‰>èrô¶ÇC=h»ÞMC#mÁ2èÁ;°CJLD=d=\¶9 Ã;˜:Ð4Ô:ÀE C=˜ƒ¾P:¼;(Ð:¼ƒ2¬—#@Áó?¿üÄð-È)ÌÁ?B?@ƒ5ø,Ã>dÃXÃ>‚0B>¨ÀXC?XþOôƒÐBL\ýÛÿýþãþëÿþóÿûÿÿÄ7 4xaB… 6tøbD‰jÓöÍœ¹èЙC§ Ý·nâ´‰ãx]¼uëⵇîˆ23ÙÑc‡Ž¹zßê±3G9zðà}£g½ŒKͱcï;tG±B÷NÚ?­[¹öóúµß?U/´îÓêu«×ý¸zý‡oK?®séÖµ{o^½sûù™JÁƒ 6|qbÅ‹7vürdÉ“)'~÷Þ;zì8Ÿ4ǹw숚{ÇÎgs3¶nýNÉ2=ôZÓ3‡Î;לÙe¤‡Ž9zèÌÑ3WÏ\½ÖèÞ±#‰;tÎöÎíþ§µÝ~vûmõZ|xñáûé¡UÁÜeõëÙ·wÿ~|ùóé×·~ýûù÷÷ÖÐáì2vàaç2tØÉètØy‡³õعŒ³ËÐÙB3¾¡ÇœzÌA‡zØù¦tè1§t2‚'›zÌ©z2ú¦hèažwØAçN@¡iÆ ¯Ÿ!<I®úу– x{Ê(¥ü¦›*­¼Ë,µÜ’Ë.½üÌ0Å“Ì2Í<Í4³´è›n´±mºÑ¦mªÔ¦‹ôÄmº±¨JmàÉH eô€ÇµÖèùÆtZ«Çtàa'£“êɆs8ÊwØQZÌ¡G™$þM=USõ %‚ÊÐцe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFþe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFe´QFi´Fh”FeôT&vl”Ñ&öàc×Fá•ÑÆ{ÞAg gÌȈsè1§tÌ ÑzZãÌvÐáŒv̇#vèažwØAGP81‡iô2Ƙðì¿ÿüíïÇY*øï݆þX@ Tàø•}üã+ÿèÇ\úÁ•~ü£ZéÇVú1}Ôãì8‚2ôsÔðHTFèaz ƒõø=ÌAŒþÐãô`:ÌŽŒ ãì8'Xt8£.[¡E)zD(ƒèø‡,òA‰$Ð¥ºC)’8—sØåØÂ#’èetiTã¹ÒCp¢ìXáéhÎtCZá-dÁF?þƒ´  ?h!‹­È"ü ÅÙHG>’‘”ä$ýØ­ôC+ýàJ?´Ò4öc+ý؇=àŽ-8à æ@‡9êaŽz@£æ¨4êsÔ¡Ç7êa”˜ƒç¨gàñv Cœ ;àá ºl¥‰hÆ4§yŠ^ücþ EH‡~ÈâÆÐF úa@C Úè4Äà ~þBÖøGÄqYlaûȆ¨ÁCèÁ²¨À(žYPƒ¡ ýG?Á‰ÐÛ€5¶±tÀð@<ÐtÀð@RðyøCøÐ@?V€ôãùCü‘‚~þèò±…~¶±}f?ôÀŠ ƒÕ`Áª¡nl¥À>°…˜ D°Â7î`Žw ãÊèð±…$lAÓð„( Ä£²øÀ(øa†ü" b°ÃFaI€1þˆ! øØÂ?¢€-$¡D0Cúñ~¤ FH‚R †à ²•ð„)\a _Öí>êñvTAf0gèÁs|£ì0:èÁs|ƒ¡:èñz@£æø=ÌAvÀãì@ÇHA t¼CÏôÊ?±‰\|b¹C?þ„|l! ýp‡þÁ‚3xEþȇöÁ ȇú~h@+ùØÂò;À[èGò± ÿY+ý`+*ð xlãi`IJ!‡(èp8pPŽláæ@‡9èaŽo`ã@ÈÇ’ÐwX¡.xC? Á…à ÿ°‡!者$ô#XøGàp…9¡ÿèG>¤°$ä ýˆB>¶„|H¡;øG?þQô# ûÂ?’€-Üá÷¸É î}Ðè8Â2ô€v´†aGFêz˜ìp = Qv ƒæ 4êñ s ãì'8at8ã ŸpÄ&(î(heøþØB¶ ‚i¤á``ƪÀƒ Yø‡ ô|D@ YèÇ ŽPRˆ! ûàÂæ,ü# þPÁ(ÊMá~èx‡9¶!„qx@ D †'Ž€xàà88ÇØ¡ vÈ怇6¤ñàC I F0Á #¤ÀÚØò…}D¡ÁØÂú‘)üƒ¿Ø:®à•àCþP?Žð à Wðþd£Hà‚(’Ð$ìã ùÀÂ?H_zÓŸõ©WýêYßz׿ö±—ýìi_{ÛË~õx;¶  3ÐÃõøF=¾AsÔƒè0=¾AsÐÃõ0þGºáav˜ƒéF;Øw°G+Þg¬¾ÓpÄúÙ߬ ÿðÊ?úaú~üã+ÿØÇ?¾’-þ+põúáö PöúX!ØÁÊÌÜ€8ÁàáàáÞÁ¶`èaàÁÞA”ávÀhaHaúú¨ÁÄ€þÁF!à€hAþ¡ aüÁÜÀdἂ Á ¬¡dA(hAöü@úAøÁúd¡dadhÁËÐ Ï ÓP ×ööØÁ”@ô€ÌÌ\ƒÒ2èþêÁèÁÞèØ¸¯¾ÁÐáØ(Ðá”õ°þ¡þ|áöòf¯þ¡Ø0 õ€*ØŽ@Ž€ÌàØÁÑÐÁØáØÌû¾Páöáö¡öáúáöá4Ñ+L¯þ¡H¯þÁ+Lï+HÏ+H¯N¯ö¡ôúáú¡ôúבÛÑß±ööÁ¸o –Á ÐØ¡ ¡ÌÌΡ ¡èÁоÌÐZZƒàáØŽ€@ÞAd¯^¯J¯N¯\¯àQ þûAf¡Ø!#àÞØÁ¸/#ØÁ.ƒûÐÁÞ!ÝØ¡¤õú! û!õ¼âôúÁôú%›Ò)Ÿ*˰ìÌA ”AZ辡 ¡ÌØ2ØÁèÌÐèÁêÁè¡5ÐáØA8aØœöú!*óõú8¡ÐÞÁØÞÁà!ÝØØÒÐàèáÐûöAúaF“4KÓ4O5S5ë¡4õ¡T6cS6g“6kÓ6o7sS7w“7qSü¡Òm –Á Ò̾ØÌÒÍÒþÌ!ݾ¡ ÌèÁ¾¸ÞÐA8è¤AöBA0Û³õúÁh¡¾à¸ïÌá2ÐÁØÁÞûÞ\ƒ´ÌAûô”AÔAô”Ô#ÝàÁÐáô”C;ÔC?DCTDG”DKÔDOESTûàØá2ÌA ”AèÁØØÁÐÁ¸èèÁèèÁèÁà!ÝZƒÒ­¾ÁÐáØá@Ì–¡õ¢a¸áú!JhAÜ“LIO@¡ÞÌûÒí¸ï2ÐÌÐ!#èÁèØþA=ÌûÔC=ÐP•P •PÑaPÑÒí2ÌûÐPÑÁP'•R+ÕR/S3US7•S;ÕS?TÕÃxÔÐa œÁ ¾¡ÐÁèèÁê衎Ø!#B$#С5ØÞÐá8¾á¤ôªY«H AÔáÊABaþaþ’ õV  ² Ü õòÁ Ê ûÁX!ÌáØÞ´ÐÁÒèA¹ÏØÁÞØa…Ø¡Ž¶ŽØ!QÞÞ2âÐû\ƒb#Vb'–b+Öb/c3Vc7vŽÞGáÌá”AþØ!#ÒÍèa Ì¡ÌÐÌÌê¡5êêÁèÁèáÌÞˆ€@àAHh¡¶ þÁ+HaÔaæá~Á+€¶ ¶@¦ÁD ¤aâ¡dáFÌ`~! ÄÀ>` ¡ˆ`’ˆ\io(:€ÐÁèÁ¸ÏèØÁèÐÌ̸ààÞÐÐÐØàààààààààààààààààÞÁØàÞûÐþÐØàààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààààþààààààààààààààààààààààààààààààà!AÍÞA œÁ ÌÐZ£²¡2âêêê!Ý Òê!êèáèÞÐá8aÌᤡôp¡ L¯ !Ú ¡áþòa ’ ÜÁ úÁÞ   ^°àìÁè ’ ò þ! àà æú!õ"Z¢'š¢+º¢ûáü"ÀÐÁÒþèÁ¸ZƒèáØ!#ؾÌûÐáÌáÌáÌÞÁÞÁÞÁÞÁÞÁÞÁÞÁÞÁÞÁÞÁÞÁÞÁÞÁÞÁÐÁÞÁÞÁÐÁàèÁ¸/ÝèÁÞÁØáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáþÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌáÌÞÁÉßÐŽ@ô€2‚оØÌ ¡ØØÁØ¡ÌÌÌØС¾þ!#ÐáØ@ÒÍJÏ+NÏ ÞÀ¯ü*HoðA ’€‚¸ÁRÀ´a0 °`¢ ‚a ® òA þ~aÐá ¼Â¢OÕS¢ûX¡ØØØ¸ÏÒÌÐØÌÐÁèÁèÐáÌÌÌÞÞÞÞÞÞÞÞÞÞÞÞÁèÁèÁèÁèÁèÁèàÁÐÁ¸ÌÌÌÐÞÞÞÞÞÞÞÞÞÞÞÞÞÞþÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞþÞÞÞÞÞÞÞÞÞÞÞÞÁèÁèÁèZ#ÝØÁ¶@ÌÀè¡5¾ÌÌÁáÁØ!ÝØÁ¾ÌÐ ØÑcg^¶zìнc‡î§Yèà9ûG±bÅ~P2fdӯ߿þhÍ"µ¨©~ШÃ럡QÙàp¢%ë_?C£ürcM–ÅŸ@ƒ J´hÑ~zXU0‡Î;zèÐÑ3g.*Õ¨èê}£Zï[½oìØaÅjn¬Ù³hϲ3K5,½¨ôÌ…ÅÊ.­Ý»xóêÝË·¯ß¿€ l:vô̱3§D™vèêA«gþŽ]½oTÍÑCÇŽž¹z梚£G5ª¹zæÐÑû†î»# 8½3ç¬hÇÛQ½Ø÷o_¿}ÿúýÛ÷ï¶q‹ýþõ£Øï_G£Ð£KŸNQ¨ìÌÑ3÷´zæè™£‡Žž¹oô ÑËL5,:sô†EÇÎ=sôÌÑ3GÏ=sô˜C9ô˜C9ô°c=ò5–9ô°ƒŽ9è˜ÃŽ9ô°ƒ;æÐ–9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜Cþ9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C9ô˜C;æÐÓ 9ô|C9ì ÖΘ;ïÔ =™Ñƒ;è°g;ôdS9QÑ–9ìPUÏ;ì s)´ 3µìòË.÷óÌ4×þlóÍ8çÜ%œDÀNTôDEÅæÐcN=æÀƒN=ÐÔÃ:ìÐc;æÈG9a­5Ña™#:FE9ô˜Ã=Q±C9ì˜#ßÖpÇ-÷Üt×m÷Ýxç­÷Þ|ß–9òÑó =ß c=è°ƒÎÊèñ:æÔ;ô C:ìÐc=õ@S9õ˜Ã=æ°C=æÐ“:ï°#'œ°óŽ29·ÜOí¸ç®ûî5ûÁJìP…Î7ô|C:ôÔM=Ðd†=ìÔó =ì C9ô˜C9ì|C:æÀÃ<ìÀÃ<ìÀÃ<ìÀÃ<ìÀcN=ì˜C9ô˜C9ô˜C9ôþ0Ç7êaz˜T©4èax°æ€;àÁx°ì€;àÁx°ì€;àÁx°ì€;àÁx°ì€;àÁx°ì€;àÁx°ì€;àÁx°ì€;àÁx°ì€;àÁx°ì€;àÁx°ì€;àÁx°ì€;àÁx°ì€;àÁx°ì€;àÁx°ì€;àÁx°ì€;àÁx°ì€;àÁx°ì€;àÁx°ì€;àÁx°ì€;àÁx°ì€;àÁx°ì€þ;àÁx°ì€;àÁx°ì€;àÁx°ì€;àÁx°ì€;àÁx°ì€;àÁx°쀇9êaz˜ƒ™a:èÁt˜ƒèx‡–at„Åì¨4êa±¨ÐìA=ÌAv Ãè`‡9è!t¬@Ç;¤Á»Žzô£ µHGöáPT€ô0=Ì•ÌÔƒõ@=ÐÁv°§ߨG7êñ z ƒè0G=¾QoÔãõøF=¾QoÔãõø=¾aޱÔãõèF=ºQhÔ#ôø:êzdƒè¨:ÌzÔãõøFþ=¾QoÔãõøF=¾QoÔãõøF=¾QoÔãõøF=¾QoÔãõøF=¾QoÔãõøF=¾QoÔãõøF=¾QoÔãõøF=¾QoÔãõøF=¾QoÔãõøF=¾QoÔãõøF=¾QoÔãõøF=¾QoÔãõøF=¾QoÔãõøF=¾QoÔãõøF=¾QoÔãõøF=¾QoÔãõøF=¾QoÔãõøF=¾QoÔãõøF=¾QoÔãõøF=¾QoÔãõøF=¾QoÔãõøF=¾QoÔãõøF=¾QoÔãõøF=þ¾QoÔãõøF=¾QoÔãõøF=¾QoÔãõøF=¾QoÔãôø†9°RsÔÃô@‡9èavÐãðP‚2ôðvЃ*ô  ;èaŽz@ƒTa;èÁž¨Ð£Ù¨‡9Øv ãì %hÁt8ãÒ© ;=Ð"õ€=Ô\hЙù=Ðaz˜ƒæ ‡9èÁžoÔô@ÞÌñ z°Ãõ0=Ìñ ‹©ì0G=2SvÀì  =ÌñQûú×À¶°‡Mìbúô`‡9êaz@#3ߨ4èÁt˜ƒð0Ç–a†¨°Ãìˆ =ÐþAzÀ#*ì0:èz˜£æø†9Øs°j~;ÐqF°âðpÍpñ2n#–@Š@è†;Üeýð-:€ªÐô0;àAª¨¹ß J= QsÐÃjf<ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐõ°=ÌAsÐÃè`‡9ØŽÌÐ#3j¦‡9ÐAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAzØãíp»ÜçN÷ºÓÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAþsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô0=ÌAsÐÃô`ô`ô`ô`ô`ô`ô`ô`ô`ô õèô€ì@æÀQAèÀæ@ß Ê ï€ô`ô`è`õ`ì`ì@Qaè`1ô`ì@æ€ô`è`èðì œ@ èðÊ@3þ[P-Ó¶ êPiE  ÿ@ [0 ²@ Ä [` W†¼ã PTAèÀè@æÀTÁè@ßPÐ@Qaõ õ`è@ìôð õ õð õ ôð õ ôð õ ô@õ€ß@æ@æ@ìæ@èè@æP)Çè`è`ô`ßPÐ@ßPÐ@ßPÐ@ßPÐ@ßPÐ@ßPÐÐvô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô@ ôð õ ôð õ ôðþ õ ôð õ ôð õ ôð õ ôð õ ôð õ ôð õ ôð õ ôð õ ôð õ ôð õ ôð õ ôð õ ôð õ ôð õ ôð õ ôð õ ôð õ ôð õ ôð õ ôð õ ôð õ ôð õ ôð õ ôð õ ôð õ ôð õ ôð õ ôð õ ôð õ ôð õ ôð õ ôð õ ôð õ ôð õ ôð õ ô@õ€ß@æ@ì@õ õÀè@)‡ì[° v€ÙPèþ`ôì™Aæ@æPõ ôÀQAæ@)ïÀè ¤À èðÒ@3[ðU`ý€ êp h€ hÜÀðõÓà)Ðõ`†ØY;ýà´Pô`ìõð õ`ÊpžÊ` èi ì© Æ  ´pžÆ  ´  Æ  Æ  ´` Ú  çi çi èɞƀž´€žç çi Ê` Ê` Ê` ´pžÐ  Р èi j èi èi èi èi çIè`õð õð õð õð õð õð õð õð õð õð õð õð õð õð õð õð è`þô@ Ѐ Ê` èi èi èi èi èi èi èi èi èi Ê  Ѐ Æ€žÆ€žÆ€žÆ€žÆ€žÆ€žÆ€žÆ€žÆ€žÆ€žØ  çi èi èi èi èi è‰ ÚpžÆ€žÆ€žÆ€žÆ€žÆ€žÆ€žÆ€žÆ€žÆ€žŠž´pžª ´ÀTAæ€ô@J  z€ìô`ô€ô`ô`ô õ õ æ€ð€TõÐ æPÐPæ€ïÀGÀ ³Àèà 3ÓU€ ´`ý€ ¶` Þ Þ` Üðº@¥ÿ?ìš3z@ ð õÀþðÀè`ì`Æ Æp3ð_ ¿Ð ¿@ ¸@ ³` ³@ ´0 ÆÀ°k ´ Ʊ Û ™`±´0 ³À°³À°K ³@ ³`±³@ Æ@ ³À°œ` « ª ª ; ; ; ; [ó³@´™ÁÙPÐ@Tìɰ¸Ð ; ; ; ; ; ; ; ; ; Ë Æ@ ¸0 ; ; ; ; ; ; ; ; ; ; ´À Æ0 ; ; ; ; ; ´À ìyˆð‡pˆpœ±³±³±³±³±³þ±³ ±˱´` ³`±³@ Ê`©`)÷æ°ÊàôÀõ õð³èèPììì@ß@æ@ß`ì€ìæÀïÀèp”@ ìÎ3ÿÐ[€ -Óq€ ɾ¶ ÿÀU¥A[@ ý€½ð¿ò;¿ô[¿ýà´Ðß@ôÀpð€Ëà ¸0ˆ ˆ ‚Ð ~@ ¸À°¸Á ‹ tÁ¸@  Ã`Á¸€ ø` •Ál ´` < ´Àn@ ¸@ L ¸0 r€Á¸` œ  ´ Ü ý°•` ¸@ L L þ²àt@ L¸` öæ@æ@æ`[ õ`©@G€§@æ@æ@æ@æ@æ@æP¤ðð€ô€ìPË ¸@ € ´`Á´`Á³ L L L L L , n`ÁÆÀ Ì@ L L L L L L L < rÁ´`Á´Àžœ` L ì Á0 € ´`Á´`Á´` ´ € ‚ððЭpË€ ´`Á´`Á´€ ² Ë L L lÁl ±€ÁL   Æ@ Æ`@ èÀèæ ÆàTþôõ`ô`ô õ ð`ì`è`ð`ô õ`ì@TATïÀ*  Àæà ñÛ.à š š` ÙÐÿ`ý@ýðýP¿&}Ò(Òÿ  Pô@èÐ@æÀ¸  ¸  Ô@ Ó@ ¼Ðw À´à*`Á´À¸@ , ¸À Ã`Á´P ÞP É Ë   @ l ²°´€ ´p͸@ ª¸ Ì Â€ ±0½Ð àÁÁªÀ*°¸@ € ³À Á´à\Ð@T­`Ê0 ì`Ûpæ@ fP ÙþÀV f œ fßð[  †°½@€ ¸à •à•  , ¸ v´ L ÂÁ´ L ÂÁ´ ¸ÀË  )€ Ë€Á ° ¸@ opop”𬠠€ ´`Á´ L ÂÁ´ Œ¸0 œ@ ÂÁ´ ¸€Á ° ´p ,‡ ®€ ´ .   €  *pÂÀ Ê€ ž@>@Nž ªÀ)`ÂÁ´  œ ¸@ ÂÁ´ L ¼ ŒÁ¼ ,@ ±@ ¸° ï@ èÀæ€[  þfì`è@Ð@ÐPèððð€ìð õ@ð`Qß@æÀè fèïÀèp°ãä΀½ýÐ2ýÐ2ý ÒpçrN¿~@ €œ ãG€ï` Ú ªÐÔð Óð ûpÂà0 (²Ðð,  p#€ ´ Æ@   ƒà ˜€•p³  )@ € +/@ P `†°p\/  €Á € ´ Ò0׽РÒÁª¬Àª¸€ª,@ Ð  ÆPð€õ õ0 P;´ÀæP GðØp°þ ð`ð –°` žð8€å°Ý  jf Ë@ ž Þ ªÐ Ç€Á²´ ª³ÐpDF0  ˆà) ‡ =ÀoÐ=   @ Ë È€ o0 œ` Úp¾ð±  )À à=+ /   /@ + /  p ª†°p\/€ ´ È€ ‡@1@K ` ´ à )À   ´€ Æ Ê@ ªà‡àYpg ³à * ´àG€oÀ´?,p°)ðªÀG°²Àþ ð†°pÐð £€ ±  ì ã ï`èpË ï fèèPæ@ßæÀè@æð ÐPì@ß@æPÐPæ€ì@èðì@ 0 ìðÊðØŸýÚ¿ýÜßýÞÿýàþâ?þä_þØ¿¤Ðì`ôÀ Gðè° Ò€ €;-ûÐwÀ 0Áà‘ PBX¤@¡*E,´pqZF+“»8ÕTÑšå)–'4Èb ¤Á­ªRÄòЃ0àÈJË.\œ–ÑdJ[(tŠ8áòÄàÃU)h¡P•ƒ¬ ¬<Т¥ïþ½i_¦Íe„‘vï¶ 1·b „mGÐáè¶í1f8á0ÇΑEìÐ-&Œ“*Iª:áÃ× —ªÂh©JJ‹\6À‰Å¡'±<¥%„E ±T¥ åW,PËp)zsȺC‚áòÄ ´dmˆåA• \n18Ò@U Zb©Já¡‹`6À¡µ Ô²e£h<Á~éO&\±<¨bðAÃ,)>ˆ¢ «G‡½™Ñ¨Ñ\ª¤˜â–§w²pP%p‘eƒXXa”;Rð@–pñ`c@†O’QGI ¢Ihaáh¡D•TI"ð …Pb@•hñ`\@A†\–Éâ,¬É"‹XTQfÙ TI…X6ˆ‚XhÑÇtàùŠ\ä˜ÃxÌyg!ÆYAŒ¶9]R â]z8¢:ޏF"yÇœa„Á…–XhÁ¥[’é„þZ"PCRXa”AR…b¡ä#À…„™%‚X"P\"ˆ¥Z8A%ZPE•ˆÀƒN@¡å\pE\,é£é¦%‘$–X\˜äZV8ÄPbÁ…V„ÁÅ^ád³gˆE•bÁŃeTI— 4ð$„™%‚Y"P%…e<%URP%"ð˜…pQ%bÁ*dàaàDvЉQ eôx§EtZ¤Çœz¾‰±Å Íi‘žoÌAtØA‡sêùÆtÞaçNfyg¾>xá‡'þË~úa”ZD‡ṫw„‘—GŽïçŸãéÀå Zh‘ECŽC9P±c9b¡a¤~$ŽdP9ZTqƒTÜxD+fqÃ,Ü@‹Y(¡ŠxD à€ 7CßÅ2„A ^øàYXG æ€ U¨ pÀ„ …Y¸A ƒ”€‹YÔðˆ‡8š!‡-´€G‹àÁtœèDß8‡6<ñ†½£D%‚G‰ÌñŽa,£~±À+*!‰XÐ"¤BP±R¡ fx„ à0 !ô`àÂhAŠ#ˆÁ †+Ü€ 9Ä‚ ÀÅ2pA \(C´ÀE,„¡þ 9àBrÀ…0¡J¨‚* -¡,È ¸`„Xá†Xp¡”ðƒ à€ Z€b¬€T©J4üa³ðÀ,Ü T¸á )PÁ!pŠaÄ~`„.Îð…œªP x ‡XÌ ´ Ã"„á9í) Ä,ä 9È ³pÃ,Ü0 .¤€r8š‘‚QÍìx:ÌÑ"x c Î0Ã7êaz ãõˆ;èÁt˜ƒæ ;ÌQ"z ƒß ‡9è$vÀãì@‡8Á z C“’;\R’FIü ðd! ~Ð"K²à-€×Fp"ì ‡9èþs”ÂÐ.ÌWóÕAŒXÆÑbA‹úÑ´X†Ôh Z°b´8š*¤¥oà ÀKÂ>üNa¿¨Rð…(±"ý˜R9Ð(qâ+è…XÑt˜ì0<ÞÁs,C±˜…Ô¤F‹£Åþ´À…0h ZÔ/´8-pÁ a´ˆ-|AÖïá‚G£.h± ´Ö¸ Å2hq´ï‚:ß3†0pA c•d¥ÅÑ|q´eÐ"ư;|ÈsÐãì@Ç;Øq"v¼ð@‡9ØñvÀ㈡eÇ;Zdv¼cÃÀE,–A \ÐBj¸-ŽF‹úÑ"G£Eýh±ŒúÑ"¸ˆÅÑb‹Xí{ ÆÑ¾' ZM´ˆ.h ZÔϸX-|AVZ,ƒG£.z‹ ZàB´À(„A‹£Å‚±øÞÑh± Z¸ ÅÑb V,ƒõS5.hq4_þËÆÑhq´XàBjG£…0h‹Þ₸ø^,hq4Z±ÀÅ2p¡ z˜ãô`Ç;ÌŽ*(à ì0G= AsÔƒæø=Ìñ tÐ1zá7èatÄ(õ€=Zw°Gà-¾Ái`©[8Ú”ú1Ä€°øƒ-þÑ ¤c úðÀ?vp¼(ñcñèG:²ð  oEFaIC Äð‚~ücXˆRð3d˜C>ä°‚_$ ºÈÂ?TÐ$¡øØ‚ã©+1xƒ@1h|Ø‚A8„~Ø~˜3Ø~’~¨†9ÐV¨þs`z°z {°zøx‡o‡o`Aq@qt€Ats(q@‡otøt0l@üüq8"st0DdAqøqÐtøq`Áotˆ‘oÀ†+Ô†o0‡oІtøq8¢otøtÔq@x8"t€‡Av0‡a‡ysx‡w`t`sxvxt`‡#btx‡Al(‘n€Att€Asøq0q@q0‡o8"søtt€AttEtÐtˆtÀ†ùsstÐstøq0‡‡oþ‡+„At‡+„Att¸Bq04t0l@D‡o@‡o0q(‡o@q@q@q@mÀv(m@Q„Atøttèm@q@q(q@q@m0q0tøs`Aq0„Áotøm@üqè†o¨¬z€x@%P=¨‡l€t`‡ ¡t0z€†z0v ‡o0zø†z€†z`‡z0x(‘zøs@‡w`"`P€tp†,©‚~Ø‚)é‡KÀŽ' [øƒ(Ùw¨"¨Ø%¨‚vˆhà‚è$H‡7 …#ð…|Ø‚þ~¸8¸‚9H‚‚H‚èw¨‚~؇+È)Ø È,øzÐ:Ø‚$؇Ptxƒè‡$ø‡|Ø‚}à¸R8‚Rȇ)è ȇ„~ø‡è‡(éKø…è)9¸F…€v¨‡v@‡@lt`‡wx¡a‡a‡yt`s`sxv0x0vD€k‘Óa‡w0txv0‡whx`x`‡w0‡w0‡y‡at€vDxxv@xx‡As`‡Óv0v0v@‡@Œ‘w­w0v@z`t v@‡w`s s(‘w@þx0v0‡w@‡@dtxt`txtxsx‡1v0t0t€‡ÐŠt`‡‡ Av0v0‡1v0€{v(s@v0x@s@‡w`‡whs€s@‡ -t€‡Ð*x`‡wv0‡wx!v@v0t0txvxs(s€‡‰‘1x0v’ Dt0vx‡Óis@‡ ÄÓ‰v0‡yv0v0x`‡zv€‡whxxsDs`sh‘@4z`s€eˆ‘-X70‡z@z0‡z€†zˆ‘‚s`s@z`‡o ‡w€‡ þashs`xxv@‡#àVxxp,é3¨*é‡>@§éƒ?ˆ†‚t‚}Hƒi‚~؇(ámð èS@€vx‡}ð~À‚~ ƒ_ø‡zH‚~H‚H‚è|Ø‚~؇$È ØÀ‡-ø‡(‡h0ƒ$ˆSjˆ’$ø‡|Ø‚lè€xø‡wøð‡è p$Puø‡è‡àmP1€Qàm(‡ˆ‡~ЃYˆs`{@s@‡w8"vxv@‡ DvDv€v@‡w`‡w`‡w@vxsx‡1‡A‡Ðzx@x@sÄythþs`s`txtx‡# Dtxs`‡a‡as@x@vxtxx@‡w0v€sxtx‡a‡w@‡Ð2‡w@v0ths­#bz0‡w0x`x0‡w0‡¡s`t sxtxth‘w`x`x`s`t`x`‡w`‡w@sÄ@D‡w@x0vxvx‡a‡a‡ã}vxs8Þ:dx0ëet`‡w0‡Avxs(‘ãe‡w@‡a‡w`ëEv@x`‡@4t`ë}sxv8ÞÐB‡@dt°Þ‡w€tx‡ñßw`‡wþ-txtxs@‡ As@‡1tx‡yvxt`‡is`t`cxsPcpv0t`s€z@‡Ó¡s€s8"v@s`xhx@v ‡ A‡w`‡#N@‡wP†,¡…~˜’ãY%UÒ„?8†Ø| …~È_…Κ†ØCØ^øЀ€†-ð…0„QðCØk…˜……~ø‡|¨38YÈC0kà_è‡lÐP Yè‡} è‡(I‚RÀ8P1Z0†-ø…~€=  †} Z¨‚*X‡|ˆ…}èU؇|ˆZè,ZþÐNèz`‡z`zx‡Ðz‡AvÄ:,s`‡w0v8¢w(‘w@‡w`xh‘w@v(sxs`x@sDtxv@‡w`‡w`‡w@‡w@‡ã-‘w0‡w@vxvDvDsxv@‡w@sxtxt0x@‡w0‡@,v@‡t v0z`s€v@v0z`‡Asxs@s€s€‡1t-t0v@‡9"s`s`‡w@‡w@s@s`tÄ#2‡w@‡w0‡w¨Ã@D‡@d‡Av(‘w0t0v8^t0v@s8¢w@sx‡þyv0‡ãufvDt0‡1t0‡Ð2‡A‡@<"s`txgf‡as(‘w¨Cv@‡ ytDgFv¨Ãw@‡w@‡ãex8^v@‡w`tÄ#zt0z`‡#btXt0‡- ;-t`s@s x@vø†zˆz0z@‡¡s`t0‡z€zhxxv@‡# Z@‡w†+é‡+é‡}Àžã©‡Ð…ˆ’~Ø)9ž8)!‚Pˆ’ã©’ãù‡ãù‡ã‰’~øìù‡~ˆ’~ˆ’ã‘"…~øìñDˆ’~¨’~ø‡}ø‡ãù‡ìŽ’~øì‘þ’~`V¨€o`{@s@‡1‡là„w`‡i‘wh‘wxx0x@vxv@‡w`t`s`s(sxtxvxvxv0v€‡as@‡w¨Cs`ths@‡1x@‡w`‡1‡Asxë|‡A‡w`s`s€t0‡whz(‘ at`s@s`z@zˆt v€tDv0x0v s thz@‡ÐB‡w`‡@d‡w`txs8^x@‡A‡Ð‚s`sxtxvxvˆ‘wˆt€t`txv@x`x`s@vDt`xþh‘w0‡w€tDs`x@s@‡Ðz‡)‘w€‡w`x`x`t`‡w`t`t0‡whx@v@vx‡ÐB‡@dx`‡w0€C‡@„‡ÐBs°Nv@v8Þ1v@s(‘9¢w@‡As`‡w`sx‡Av ‡Ð2c@sPeЃ¡s`z0t0z@zˆv h¨s`‡zøv¨‡l s€‡#Štxv8Ns@gè-é)é‡ï)é.9*é*é‡-9ž*9)é‡ï‡(é=…hDv ƒPF8s@€3‡þA0x0‡w؆-hs-x`‡@dx0‡w`‡mÀ‚a‡wh‘mØv€‡w0vxvxx-t€‡Ð‚s`s-x@‡(`x8"v@v(‘ÐB‡w`x0v€‡Ð2v0z0z@zø†z v@‡8t`s`t0t s`‡As`s@€C‡whs¨Cv0x`t`sxv@€3t`x@‡Ð2v@x0t€‡w0‡w`‡w-s`‡v@v@‡w`shs€‡is€tˆx˜wt­væØ™C÷Ž:tïØ±ƒgŽ¡þ9† ÍI|gÎ;sìÌÁ“Èî;tæ2„ç‘9zì.šCÇCxìÞ±ƒÇðÝIxì̱ƒg.!CsßÑz‡n‹33æêA«‡Î=–,é%„÷ž¹oôбƒ‡ŽÝEzôØÁ{ÇN¬ÞÁsöï-ܸrçÒ…Û¯_ݼsûéÛ¯/à~€áöËÛO­ æØÙc˜Mï ;àŽB¾…DÇþÝÐvA BÅÝØñsè(¤9.FwÀãnì@=Ìz Ãì¨4êñ t°£3áÌz’>è 4êñ sÐãæ($<ÌAsÐÃô¸;ÐÑLsÐãì ;Ìs Ãè¨Ç7ÐÁz˜æ@;ÌÑÌ‹±æ`=ès±BÒ£æ`:èzЧæ@;.tЇæ¸X!ás°ƒæ($=Ìq1z ƒ3:èav˜£è0G!Ñax‹æ`:Ìv\Œæ ‡9ØAs’æ@G3éaŽ‹™ƒpô©G6êat°ƒæ :þàQHz˜ô`ÇÅèCo˜ƒô OdÐAt°ƒæx::ÀÃ(ƒ ƒ9Ð4Ôƒ9Ѓ9Ѓ9Ð:Ð}Ѓ9°=˜;˜C=@C=ÐÃÿ } Ã;°ƒp(°Ã;(¿IA?TA±õÃ%<ÁìÁH‚$¼Åä¬@/ôà hÀ?ôÃ?àÃÜ>`A?D>hÀ?$Á4ìC ôƒàƒôäÃôƒ¿}!†!±õƒ€B°ƒ9ÔÃݘÃż:°ƒ9°; ; }°ÃŰƒ9Ü :°Ã;°:°ƒ9°ƒ9D; ;¼;\ ;Ü :˜:˜Ã; þ; Ã;Èá;\ ;ÐGd¼C¦¡Ã;˜; ƒ¢;¼ƒšƒ¢ƒ9 ƒš;˜ƒ¢ƒš=¼ƒ9°ƒ9Ð;Ð;Ð<Ѓ9Ô4Ô} ƒ9ÐC6Ô}Ѓ9Ô4Ѓ6Ð:‹š=˜C=°:Ð;˜=\ =˜=°}Ѓ~C=°ƒ9Ѓ9Ð:|C=˜=°ƒ9Ð}Ѓ9ˆÅÅ|} =˜ƒ²ƒ9ÔƒÒƒÒƒ9°ƒ9ÐÃÅЃ9Ð;˜ƒš:˜C=˜: ¤9 $= ;\Œ9ÐÃŰ<˜C=dC=ÐG=\ = = =°ƒ9ÐÃŰ:˜:Ѓ9 þ}Ð;\ ; ;Ð:Ѓ9Ѓ9 ; Ã@¢ƒ9\ ;ÐÇÅ|=˜:˜=˜=°ƒ9Ôƒ9°:À}°:Ð;¼:¼-¼;T2˜9Ô:Ôƒ9 ƒ9 Ãÿ˜:Ð;˜C=@C=\ ;Ô4 =˜C=˜=°<¼; ƒ- Ã;H¿U-àB±õÃÜhÞ@ü?ôÃàÃìÀ>TÃüC 8ôÃ?ðƒüC?àÃìÃäÃüCüC>D€À>lA?$A>l.'s*[?üC?è-T€9¼ƒ=°<°Ã; ä; ;¼:°< ä;°Ã;þ ƒ9¼;\Ì;°Ã;\ }°Ã;°:°ÃÝ;À;¼:¼:¼ƒ9\Œ9¼ƒÂ;Ð:¼;:¼:¼ƒ¾ÃÅÈ!<\ ;Àƒ¢=˜C=˜C=dC=˜ƒš:°= :Ð:Ð<¼ƒÒÃÅÀƒ9°=˜;˜<Ô;ÐG=˜=˜=ì%}=˜;ÔÃ7 =Ð=@C=Ð:°C=|=ì%=\Œ9ÔÃ7üO=˜=@C=Ð; ;Ð:˜;˜=˜= =˜=|=\ =˜C=˜= ; =˜=˜=˜=ЇX˜C=d=Ї¢;ÐÃÿÐþ4ÔÃ7Ð=@C=dC=˜=@C=˜;Ð:°:Ѓ9 =˜=@C=|ƒ9ÔC6Ôƒ9 $=˜;Ѓ9Ѓ9Ѓ9Ôƒ9°=˜;=@C=|=˜= ;Ѓ9Ѓ9 ; Ã;ÃÅ(Á2è;|±Ô4Ô=˜= :ÔC6Ô}Ð}ÀÃ; ±@C=|ƒ9 Ã;°Ãp'˜:8¿m.ôƒ²õÀbBhÂdÂ?ì@>lÁlÁ ”Bô?¤À[ôà ÁœèÁàÃôC¼lÁäüCøƒ ŒÂr®,Ë[?è(t€Ú:˜C7Hƒ2Hþƒ6(ƒ4hƒ2HÐ*ƒ6Hƒ3hƒ2Hƒ6(ƒ6­3hƒ2-Ô*Ð*ƒ38ÔJƒ3Hƒ2-6(ƒ6@ƒ4hƒ2@­2hƒ4`ƒ2Hƒ3Hƒ3Hƒ2­2hÃÕJƒ3@­2Hƒ2@ƒ2@ƒ28ƒ4X4(ƒ6@ƒ2h4(4hƒ2@ƒ2h4(ƒ6@ƒ2h¹aƒ2h4¹Aƒ4(4(4(4(4(4hƒ2@ƒ2@ƒ6(4(4(4(4(4(ƒ6(ƒ6(ƒ6@ƒ2@ƒ2@ƒ2h4(44(4(4(4(4(4hƒ6@ƒ2@ƒ6(4h4(444þ4(4(44(4(ƒ6@ƒ2@ƒ2@ƒ2@ƒ2@ƒ2@ƒ2@¹Aƒ6(ƒ6@ƒ2@ƒ4(ƒ6@ƒ2@ƒ4(ƒ6@ƒ2@ƒ2hƒ28ƒ6@ƒ2P/4(4(4(4(4(4(ƒ6`ƒ2@ƒ2Hƒ2h4(4(4(4(4(4(ƒ4(44(4@ƒ2P¯2@ƒ2Ð:-h®26¼:ÐÂ;˜Ã(ƒ˜=˜=Èa=˜ÃŘ:Ð:Ð:°:È!:Ѓ9 ƒX°C= ƒÂÃ;°:(°Â;Àƒ3ð[?ä›&ôqgÃ1pÃ?°À]¼Å]üÃ][?Ûþ]4ò[ÜžõCËNòröƒpB\Œ=¼;hÃ?ô¾ÝÅ[ÜÅ[ôƒ²õC±5ò?ôÃ[ܱÕÃ?ôÃ[ôÃ[4ò[4ò[ôÃ[4ò>[?¼E?¼E?ì±õÃ?4ò]2÷Ã?4ò?4ò?ôÃ[Ü…²½Ã]¼E#ÿÃ2#ó? ó[ls#ãÛ2ÿC?ì8Ÿó2¿:¯32¿;ßÅ?4ò[ìC#ÿC?ì2ÿ2[?üÃ;ßÅ?ôÃ?ôÃ?ôÃ[°ó?ôÃ?€s±õÃ?hƒ= ƒ2œ;|4h3<¼ƒ2°ƒ9(Á2è;©9Ð:Ð}Ѓ9Ѓ9Ѓ9È!:);˜:Ðþ:¼;%Ð:¼ƒ2,ç2ï±É‚/|a?°l?üC?P2Sû[?P(t€9Ѓ=\Œ3üƒ<Ѓ<È=lµWË=È=l5=ȃXÀƒX|µZ{5=ÀƒX|5=l5=l5=¬µ<ÀƒWÓÃZ‹=À=l5<ØõWÓƒ`öZÃ1èƒZÓƒa7¶aÓÃZÓƒc{5_{5ȃ2ÐÃ;˜ƒ6`¹™:à; Ã(ƒ˜C= =˜=˜=Ї9 =˜:˜;˜:˜C=dC=˜=˜C=˜=°=°<¼; Ãp(þ Ã;HCS¿Å]|a?ø[?Œ·z‹¡pB˜;ˆ…9HC?¼<ÀÃ;Ü·~Ã= Ã;Ü÷;ÀÃÝÐÃÝì·ë÷;Ð<ÐÃ~ÓÃ}ÓÃ}£ÃÃ=è7=ø;Ð;ÐÃ;Ü7=Lø~¿ˆøË<,C=¼ƒ~Ó‰·8‰¿ÃÓƒ‹ë÷;ÐÃ;è7≠Žï8ˆÓÃ=Ì8=ü¸‹¿<¼ƒ<Àƒ6ØÃ;Ã}7%`ƒ3;¼ƒ1¼ƒ9(2è;˜:Ð4Ô4Ôƒ9Ð4Ô4Ô; =°=˜:°ÃÅ÷ŘC=|ƒ9 Ã;°ƒ€+°:8CS÷Ãzº¡û[þ?P(t; ƒ=°<(Ã? Ã#”:<Â@²}¼:Ð:˜ÃÅÐ:d:©$:7}°ª ÷;˜© 7; z¦£ƒ9 ƒ9 ;w©¤9 Ã®ÿú¯£Ã;ƒ>”ƒH' }»–ƒ ¤9Ì;”ƒìº9 ©£:³$:Ї ÷¶‡»¸‡;ª;ª3;ª{¸›:˜Ãżƒ3ØÃ;(=0#0Ã2°:Ð:°Ã8ƒ $:Ôƒ9Ôƒ9°:ÔÃ;Àƒ9ÀC6Ôƒ9 ƒ9Ð;Ð4Ôƒ9Ъ³<¼; Ãp)Ü·3°l0¤|0üC?ºË¿|±éþ'DÀ; ƒ=°=HÃ?˜ƒ |À7¸€9‚ŒB6ÂÄÂXÃ9ØÁ Ãª?=ÔG½ÔO=ÕW½ÕO=:|ƒ0ÔC5A7A(œƒÀ6@CÌÁ7È”Â#(p‚!|CTÁ3pÂ9˜ Ã#ÂhÃÕ¾à>á¾á¾p³ƒ9 ƒ9h<Ѓ1Ø:|6`3 ÃÝ:°Ã(ƒ¼ƒ¢::ÐÃ7 ƒ9°ƒ9À;Ð=|C=|C=È!:Ѓ9Ѓ9ÐÃ7˜:¼;'Ð}8ËÃ]TC'¼?ÐÂ[ð-à?Ђ,°,?ÐBËVÿrîC?P+þt;œC=˜:8Ã?|ƒ ¸À7`Ã7tÀ6h@0h@0Xˆ‚%¼:|þç¿þë?:ìÿ7 @|8à@tшîºèF”8Qa7t¸Þm‚­Ú0¢<½Yá‹X¶ Ý´¹µíˆ ^–Þàø¶íQ–Þ°àuË EŸÑ¡ˆîgQ£G‘&Uê³Û7föÞ){G]7iÒ”5ö]ef¾ÕCG;væ¾Ñc‡Ž£[ŽØæˆ[Ž %…#J¦¼e™]Vhº¦h˜…¦hʃ¦Ùfµ¦Ym éFh¶ÝöhÊMWÝn°ÁFZÞÙ¦!6p†”„Xä%6Ðf!JaAšmz`¡‡zᢇgŽ eDÁAšhŽ`šn Y—YmºÑAYän¾¦hF†¦h4†¦hFšn¾FhºùÆ}Ìaem°ù&¨eÐyG³ªPÆŽz²©‡þž Ìù†sè1‡¼è¡ÇtèA'¯oèF/sÌBçvÐ9¢0tÞ‘&ÕÆTá³pné')öIŸ-’Ø+¢¸Ç-’ÈGŠ’ÈGŠ~€ø§Ÿª Ÿ$öâŸ$ðÙâíÍ97µJ8‰€wìAçiþÑæ*l¤ÁFšv“[mºÑFšäÚ…Fh´Fh´Fh˜Ãm ±m°Ih´Fh´Fh’km Qm Ñm Ñm Ñm ±Fl Ñm Ñm Ñm Ñm ¡ hhÚ€†6®"X¼CÊè†6°¡ i`CÊІþ4°¡ i$GÎ ´áŒ*CØÐF¥¡ i@CаF7´Ñ.hhÚ€†6 ¡ hhÚ€†6°¡ l@CÐÐ4´ m@CÐÐ4´ m@CÐÐ4´ m@CÐÐ4´ m@CÐÐ4´ m@CÐÐ4´ m@Cа6´Ñ.hhÚ€†6 ¡ hhÚ€†5º¡vACÐÐ4´ m@ÃÝÐF» ¡ hhÚ€†6 ¡ hhÚ€†6 ¡ hhÚ€†6 a õhÃõxG,œ! mt#/Ã@;ŒÁtAz@;Ìñ sd õø=þÐAt˜yA‡9êaz £ð¨G6êaŽzd£æx;TÀ‰Y¼Î0ÕdÑ‹iôb·ø>4àä IøG>¶@j WÀÇöq…¤@èG6ú.ˆ" ýHÂ>®,¼“£õ¨côÀŠ˜¥ì@‡6þ! gh…WqFK¯â i(#9ÒІ4´! mHCÒÐFK“# m\EІ3’# mHCÒІ4´qe$GÚ€†4 qmHCÒІ4´! mHCÒÐ4œ‘ihCÚ†6¤¡ ihCÚ†6¤¡ ihCÚ†5 qmÌ‚-u†6®þ‚–:CÎІ3üÀ mÀÔʹŠ2´! mHCÐFr¤¡ ihCÚ†6¤‘h\ÅÉ‘†6¤¡ ihCÚ†6¤¡ ihCÚ†6¤¡ ihCÚ†6¤¡ ihCÚ†6¤¡ ihCÚ†6¤¡ ihCÚ†6¤¡ hH#9ÒІ4´! mHCÒІ4´! m@CÉ‘†6¤¡ ihCÚ†6 !äHCÒІ4´! mHCÒІ4´! mHCÒІ4´! mH(tÆU˜¡tÌBÚèÆ7¾ñc°´@;ª° 3Ѓè ‡9‚RlÔÃߨ4êaþtÐclæø†^à‘v Ãè`:„Pz Cбò•±lå~ì½øÅ4Ö!‹~ðÃf°?h!‹ðƒþ (h! ~Ðâ²è4¶€‚~¨‚¾è'dÑYìCü E–hE/šÑYîÇ?úáVTÀï°;Ì¡ŒwÄb´ˆÅ§?=‹XÐ"³ Å,h1 ZÐb­ž-\M WÓb´˜-fÁ Z´š³ Å,h1 V´š³ +h1 ZÌ‚®^õ³i1 ZÌ‚®¦…«iÁ Z´š­¦…«iájZ¸š®¦E«cñlVЂÈø4+X V´š± Å,VÝjþZÀ›±`Å, ýéYÀ{´À…«gñlV¸š®¦ŸÝjVÐÂÕ´p5-\M WÓÂÕ´p5-\M WÓÂÕ´p5-\M WÓÂÕ«ž+ZM WÓÂÕ´põªYájZ¸š®^5+\M WÓÂÕ´p5-\M WÓb«ž-fA WÓ"ú@+œ! m|#(ÆxÇ;ŒÁs(ar@‡9Ø‘v˜æ@G^ÐA±ÑÃõ0=ÌA¼Ðì ;èŽw°ã `…9豌F#Z—*²¡˜~ôÃÊýØG?öÑLžóýøG?T!+ü£û°r?þÑ+÷cñ­wýëÿÑFþ€¢ì0‡=ÌAiôã0ò8L=èqxÐã0ò€‡<àA{ô>=˜zÀƒðÈÚaè!|z0ŸðÈ=à!xØCøò<ä!|zÀƒ§‡ðåQzDŸ§‡ðé!|zŸ‡¡‡<àìA²¦àÁêìá0äè²æ0äÁ(ìá0¾è²ä˜Ïüà„„¢è¡ƒ„„„„„„„„„„„„¢êá0èAøèAøè!úèAøèAøè!úèAøèAøèAøèAøèAøèAøäþ䄘àfA´¡´áØa‚Bض@̡̀ÐÌØÌØÁèÁèèáêêèáêÌÐ!/ØÁØŽ€háÞA`O1úA1&ïú!ËúÁÊú!Ëúáúá&ïÊúáÊú¡uq±¬ô€"àСÌœA1ú!ÑúáúáúáÊ&O1&O1&ËúáúáúáúÁÊúA1úÑúÁÊúá&ïúÁÊúA1&O1&ïÊúA1úA1&O1&O1&O1&O1úá&O1&ïÊúA1&ïúáúÁÊúáþúáÊú!ËúA1úá:¯þaòþócòƒó¬¬®lòcòcòcòcòcòcòcòcòcòcòcòcò¬¬®lòcòcò¬Œócòcò¬Œócòcòcòcòcòþ¡þaò¬¬ö¡£ÌAМAºáÐÁŒáÌÁÞÁ”`ô@/‚Ì¡¾!/èôòè!(à!/êáèÁÐèÞˆ€@àA¦!(³2-ó21335s39³3=ó3A34Áf¡ÐáôáÞAÃ,\“ìÁÊ®€Aþþaò®¬¬¬°¬®¬­þ¡&ïõúÁÊúÑúÁÊúÁÊúÁÊúÁÊúËú!ÑúÑ&ÏÊ&¯xËúÁÊúaÑúÁÊúÁÊúÁÊúÁÊúÁÊúÁÊúÁÊúÁÊúÁÊúÁÊúÁÊúÁÊúAÑúÁÊúÁÊúAÑúÁÊúAÑúÁÊúÁÊúÁÊúÁÊúáõ¾ÁÞ A¾A¾á–Áàж@ÌÀèÌòâèÁêÌè¡ ÌÌèA/¾ØèØÁØŽ€fÁÞAÁ$À$À$À$À$À$À$À$À.€Žþ ÀÔ$À$À$À$À$À.À$À$À$à@à$À$À@$À$À.À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À$À.ÀO)€*À,êÐAþ¡bA–Aœa¬ ®AÈáÞ¡ùd¡;½õ[³¬Àu\³¬Èõ\£Ðu]­¾¡ÌœAºáÐÁŒÞÁÐÁ”@ô€ô‚Р¡þ¾ê!êêÐÁæÒ,êalèáÐÐáØá@‚bA.@.@.@.@.@.@.À.à$ hAô¡îà$à$à$à`fýô`f@`f%À.À.@fÖfÖO/@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.ÀfÖO%@8¡ÌÂДA18ÁÊúaã€.áÈáJÑÐ! صu]÷ua7þve·;¿ÁÞ!”ºÅØaØ–áÐa –Á êÁèA/àèáêààA/èè!êA/èèÁØÁØÁØŽ€hÞAO@ØWØWàüô  T` ú¡ª!, Ø÷$— áüÔ$àüÔ.@.@øÔÁ$À$€O@0X0X0X0X0X0X0X0X0X0X0X0X0XàüÔ.À$€8!ÌÂÌá¤A1báÊöáúÈL `áƒÄ ¢¡T`’@ Rþ@ ^"@¬¶ þ ÄÀ úavÕxٸݘÑúáêbA’ãÐÁŒÌÁòB ”AÌêêÁÌB/ÐÌÐêáÐØØÐ!/êêÁèÞŽ€@ÐÁA.À.@.À.@.À.ÀOùT(` Œ ô öá, ,@  $  Á` NÁ$àšÀÆ  ¬¹ ÆÀAøô$àà$àà$àà$àà$àà$àà$àà$àà$àà$àþà$àà$àà$àà$ààüƒ%à$€X¡ÌÂà´A1XáúA1úA1`.¡ .áòA # îÁ¶ þþ! ò ú! òa ’ "À 8Àõ”z©™º©ú©¡:ª¥zª©zѾÁØ´A°ÅØaØáhØa –Á ÐáèÌÁ,‚ÂèÐÁ,òâ辊 ØÌØÁØŽ€hÁàAÁ$À.ÀOàüÔ$À.@ÀO³Àô€âá^ÀŠÁZÁAÁÁ þ. üÔ¾ tÀJ J , .@@@àüÔ.ÀOàüÔ.ÀOàüÔ.ÀOàüÔ.ÀOàüÔ.ÀOàüÔ.ÀOàüÔ$À.@.À$WX!Ì‚ØÁ¤áú!£þaþaòj€áÈúaR`ê ¦!! ú! þ! ðAüAòa ’`R Ì¡ªE|ÄI¼ÄMüÄQ¼Ñ¾á0XÁ°A¾!/ŒÞÐÁ”`ôàÐÁØ¡¾ØÐÁØ!(èÁè!/êáèêÁèÁêáÌþÐÐáØA@ÞAœ!$à$€O%—O/@rùT(Àæ`àÀâá, .À, À, ÁÁÁ.@ @.àÀ$à, $À.ÀO/@øÔOùÔOùÔOùÔOùÔOùÔOùÔOùÔOùÔOùÔOùÔOùTrùÔà$ÀüÔ.@(€* (ìÁèAƒö¡Øõ¡¬¬..áúA1 a ¬áì`úaþaöAò¶Àøfá²A ¡R<ÝÕ}ÝÙ½ÝIüôÁf”¡ºØa‚ÂTS œÁ þÐÐÁ¾òò‚ÌÌ¡ Ìáèáèèò‚èÁ5ÍÐá8Þ´!@.ÀO/À$à$À.À$àÀOÍÀ ¶ Öa4À¦!Á!¦Áa$ Ø`À,àDàáAÁAÀO@.ÀO/À,À.@.À$àüôÀà$à@.ÀO/À,À.@.À$àüôÀà$àà@.À$À$àüÔ$À$@f¡èêÁÞAþa;ÿ¡£c;'Oþ1úÁÊúA1ö¡þaòö!¶@1úáÊúÁÝu÷y¿÷ݽ¾¡Øa¤´¡ÐÁŒáÐÁÐŽ@ô€ÌèÌÌÐA/ÐÁààÁС ¡ÐÁèÁêêáÐÐáØA8aÌÂá$À.ÀB 8p A 0>øÐðBC ‚.\à@‚  z4(ÁÁ\0èÀ"A.”à@‚ ,8pÁ Hp`Á„ %8à@‚ $\0(ÁH¸ ÁG %\p@§ìØé{‡NÛ¿µlÛþº}ÛïmÛ~rëÚ½‹7¯Þ½|ûúý 8°àÁ„ï~Ӈޖ6hݾ}{· Ý;ZèÌUYf¦ì·zÐê¡ûV/[=sôÊ¢£g޹wìêA£÷Ý;tæè•5ÇNœà¡s–H %´ Áƒ$”ààA”4(ÁÁV $\Øî@‚ ¼ ÁÁ ,8¸@Ð/8°ààA¼à€\@8@Ð\ Á8pHpdtPÀIæ°S9æH3M"*®Èb‹.¾cŒ2ÎHc6ÞˆcŽ:îÈc>þØc)ô°ÃŠ2Úhþó :æ ƒÎ;Æ cŽÊèA:æÀÃŽ9ì˜9è c=ÐÔc:ô|iÎ;èÔc:ô˜ÃŽ9èЃÎ;ìÁÉ,æ¼³L#8 8 ÁYà€$9pxdG8p8ptAxä€ä€8 8 8p8 8 8p8 8 8p8 8 9 Á8 \àAHàA€ÒAYö°C2‰$A8 8 8 8pA8 A$8 8 þ8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 þ8 8 8 8 8 8 8 8 8 HÀp€ HÀp€ ƒ¬ÁæÐÆ>ôaz¼ÃÆx:”ñtlAf@‡9èa"z˜ƒ&¢‡9¾TlÔÃì0;Þv˜ì0Q=Øav˜ƒèoàñgôc‰ýø—ø'öãý`ËÿѵqÀb°¸9ðà $Bþ° "ĉÀ ”H%@‰P"”H%@‰P"”H%@‰P"”H%@‰P"”H%@‰P"”H%@‰P"”H%@‰P"”H%@‰P"”H%@‰P"”H%@‰P"”H%@‰P"”H%@‰P"”H%@‰P"”H%@‰P"”H%@‰P"”H%@‰P"”Äk°Ç;”Az|CÒÆ2ÐZ ƒ[P†¾QtÐÃô@G= As°Ãì ‡9êz”Åþè`‡9ê z°&b‡9Ø!ð†ïÆzÙŒ%nÃýh‹,®íY€{Üä¾K?ö¡‡YTàï°;Ì¡D8 Ë`@RÐDH ä¸D!öpK\À¡pD , (4 aCá \ÀÀp \ÀÀp \ÀÀp \ÀÀp \ÀÀp \ÀÀp \ÀÀp \ÀÀp \ÀÀp \ÀÀp \ÀÀp \ÀÀp \ÀÀp \ÀþÀp \ÀÀp \ÀÀp \ÀÀp \ÀÀp \ÀÀp \ÀÀp \ÀÀp \ÀÀp \ÀÀp \ÀÀp \ÀÀp \ÀÀp \ÀÀp \ÀÀp \ÀÀp \ÀÀpppppppppppp@kï õ`"Ý  Æ æðÆÀæ Ë ìð æPÐ@þßð%è`õ°\æ€ïÀæPÙP&õ`"õð è@èðìp À _â ãv ÖÐ ç° ÁÐIÐùàë•åæ…_¸ý ´Pè`öÀèà ‰à±ð)Ð̰‰`1@—`… —àP Ð  "0 ˆÀ:‰@@àq@àq@àq@àq@àq@àq@àq@àq@àq@àq@àq@àq@àq@þàq@àq@àq@àq@àq@àq@àq@àq@àq@àq@àq@àq@àq@àq@àq@àq@àq@àq@àq @(±öðÊjæ  Ò° Èðè° _²Ê`ìÀæÀ_Bìjì`ì€ðÀôð%b‰æ@ì`"è`ß@biì€GÀ ¬ððþà ãv Ó` ½·°D° в`< 0 ü +ð ká ¢€ÏD`DÐ I†§9ný ´PðÀöðìà ‰ ± )° Љàg µ`Häp `‰àŸ`*r "`‰àààaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaþaaaaaaaaaaaaaaaaaaaqa °ððÐPì`Р Æ  &b ì`J  zððÀô`"æ€æ€ô`ô`ì`b‰ì@æP߀ô`¡f"è@èðì   è`Î0nª0 Óð Öp ÿÀRÐ@ð² [Ðü u`kÑ,ðù ø ø€I€šµª^ý œÐæÀõÀè  ‰à¬°ŪòÐpxp ÿа`¼àˆ`þ‰à`‰ˆà‰@ pqà àà@ pp`pqà àà@ pp`pqà àà@ pp`pqà àà@ pp`pqà àà@ pp`pqà àà@ pp`pqà àà@ pp`pþqà àà@ pp`pqà àà@ pp`pqà àà@ pp`pqà àà@   YPè  ôÀõ  Ò  ÂÀn´ –[à f€ßPÐ@ìPÐPæð õ`ì€æ@æ@è`"ß@qj"biì`ì€GÀ ¬è ×¶DºÐ ÓÐ Ó ÿ°=ÐÀ<àXÐQÁ°üÐ Ñ`*[þ[€[¶êÂxÑŒÀ `ï`ì`ΰ-Ò`g50pà` paàà` `   qàààà` `   qàààà` `   qàààà` `   qàààà` `   qàààà` `   qàþààà` `   qàààà` `   qàààà` `   qàààà` `   qàààà` `     pàk@ï ¡ö Ú€ Ê èðÆð%G  z@æ_bðÀü‹ôPß§õð ô`ô€ô€õ õÀè@èðì  @ æ@Ê0n þ0 ­0 ëp k z@ û@ ”Àý`£pzÀ ËÀ´@ ý Ìà ù@ ü@ ²à…íÙz@ €æPï Úppààaàp@@pàqààà@ @àà@ @àà@ @àà@ @àà@ @àà@ @àà@ @àà@ @àà@ @àà@ þ@àà@ @àà@ @àà@ @àà@ @àà@ @àà@ @àà@ @àà@ @àà@ @àà@ @àà@ @ à     YPô  õÀæð Ò€ Êðè° ì¦Î`èÀèÀôÀ&Bì`õ õ ô€ô`ß@æ€&‚ß@þð`"biì€Gà¨æðÒ0n¨ ÝŽ Ù°Dl±ÿÐl±DK´ýðKôç¾Dž ïäÖ~0 ðì`ïÀÎáp  @  à àqpqp !à`p  pp    pp    pp    pp    pp    pp    pp  þ  pp    pp    pp    pp    pp    pp    pp    pp    pp    pp    pp    \p ÁHppÁÁ$8pA‚HˆQÂxìœÑ«÷M¶aÆØ™þÃeÞ‘ezÞ±cgŽ=tôÐуVÏ:tìÐÑ3G¹zæèÑCgŽ]=sèè¡{ÇN'Z@ýãÚÕëW®ýþõëÚÏ,×~ÿÌ‚eÛÖí[¸qåÊí§‡Vtìê±3§­×~ÿÌ&\Øðaĉ/fÜØñcÈ‘%O¦\ÙòeÉÝìÑS¶ÔÜ7mÆ–¡{§ ¹*ÊÌ «­PsèÌ¡ƒgŽ&=s¹Í¡ÓmîºlõtÓ4ÇF³ÐÁsÖ¹×~]û=§¶_uìÙµoçÞO­ 4íÁ3'+Íw4Ùéëz 0yÜåϧ_ßþ}üùõïçߟú7zÞv AGc„AÇþc€Rb=ØçÜØ1‡vÌyvÌAÇœzÌ¡Çz̦zСÉzÌA‡tÞaçN8yçeèû§{ôñGûу– ØysÐq†+V´qÆmœé‡+X®ÙçXÞù‡ZÀâ‡Yº’H2Ë4óL4ÓTsÍ¿©eè©l¤YÆš–yÇœ-¤1ƒsСÇzØAÇzСç›zèé-·zêÉsС‡sh2‡t„ …tÞ‘&;cŒùñTTSÕ®?h©wôyiþ釳þég®®–K.!ç’~òÙ,ÐI‚«~’PõYh£•vZj«öþzàцvÐÑšeŒAÇcØ1çˆeôxÇšÐ1‡ r£tÌ¡§hê¡z¾1‡z²ªžoСwØ9¢FsÐq¦:ZJéD”¡|pùgŸGðÙâCydY¶Päž‘SVye–[vùå–õ %sà‡wœ9‘÷ù§ŸWȹĄB`¹ä|"# |¶ø' |¶H¢"Ähf¬³Özk®»öúk°Ã{l®¿±‡eè¡ç›o´Yf™iAç%”1zÌ©šzÌù†žÜêA‡t¾¡sÐz€2§s膚Ìa#@aåxœa¹ŸDšþ]ôS¬ÁGŠ~þ™%"¶Ð†CàðÇ8ú‘…Rzé•úf„²1ƒ~ q7îñÇCö!ûy–Íòƒ– Øy§và‘æŸ~bù§÷r.)¤r.é')öI",ú‰"Ÿ-’ÈGŠ~€{þû÷ÿP€D=Þz°ÐІ0ŒŽwðPÂ2ôs ƒ&ô0;ÐA“ÜÔãô0=¾‘v˜ƒæ`:lftÐï`‡(A t¼C,ÛÇ)š‘ æ‚ ýpÇþÑ$àCþHA>4ÐÜ#oHÂ4üaaûøÇö‘‚~þ¨Æ ªñ0üˆ`ÿáPt€&ú@Ç;”2Vˆ¬ “,È‹kÿÀ‡ü¡~áÀ®ðü¤d%-yILfÒ’ýÈF=ÐÁ‰YЂÆ …1–”e°Ã[P†èÁsЃ¹a:ÌAsÐ#7ì0PèaŽz˜ƒæ :Ø‘t˜ƒæ`:„ P ãÒP™Yþ‘ˆMäâ¹ØúáŽ-ìcIȇþ|l¡¤ÀB¤„~ì ƒÅúñ ä#v€>à,àc WèÇ<°ð„&T¡ ehCúPˆ6Ô,~`EÌÁ} ãÒøþG?œ!Î~ècí‡<`q X¼¢ýà‡!Ì`~ÈB”à-dÑhøåiO}úS U¨C%jQzT¤µæ°;hÁ lhãâ0‡1Øac ÃJX†ÌÁs¥Ш;rƒsÐô0;ê‘ väæ`‡9èaz°ô@Ç;ØqNÌ‚èpD?áˆM$vPø>°…C$àBò…  tØBºôcfPÂ!úÁ…-Ì![ÀÇò…hô@ÓHjmyÚ=Тð`‡=Øm$Ô,íGB Ó„¡fY¨Ylû\èFWºÓ¥nþu‹ú {˜ƒÒ6ØöŽe°ã´`‡9¶  3°ÃõÈ ;êñ z ƒ¹A4ê‘sÔô€‡9ê z|£¹¡‰9ØŽ#ÔˆèÆCû1 GDX =®Bûñ³ü£MGÌò~,Ô, Œu¡Û?°¢Úx‡=Øai(´ íÇ?ú±Ð~(´ 5Ë>úab YÈC&²‰ûŽz¼#Ú†6¾sï0<Ì¡e蹡GnØ‘tÐô¨‡9Øaväæ`‡9êxä¦ß@=Ðñv¨¬0=–Ñ~üc0EíîáÓ~¹¶zàDþÞaŽz˜ƒÊ؇>,½K[z™æô>8½L‹Sûàt©M}jT§ZÕ«fu«]ýjXÇZÖ³¦u­mMë}`Ãß …3´Ñ ¶±Cï@Ç2r³g˜ô0Ç7èaz˜ƒøý†9ØñzÐÃô0=hbvà÷ô ‰9ØŽ#p‚ßx‡4€¼†öc 퇢mÛF°¢ð`‡=Ðñm죲¬=ê!ËzУô¨=êAzУ²¬=ê!ËzУô¨=êAzУô¨=êAzУô¨=êAzУô¨=êAzУô¨=êAzУô¨=êþAzУô¨=êAzУô¨=êAzУô¨=êAzУô¨=êAzУô¨=êAzУô¨=êAzУô¨=êAzУô¨=êAzУô¨=êAzУô¨=êAzУô¨=êAzУô¨=êAzУô¨=êAzУô¨=êAzУô¨=êAzУô¨=êAzУô¨=êAzУô¨=êAzУô¨=êAzУô¨=êAzУô¨=êAzУô¨=êAzУô¨=êAþz ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z%l¨v`fmøt0eÈ c@s8eК€t h¨h¨h¨z0v søü s s s¥Ü@z@‡w`"`P€xP{C¨~èBèê= …0v¨v@i¨y0†X`…X`…X y ‡q–KxYÚC>ìCzzzzzzzzzzzzzzzzzzzzzzþzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzþzzzzzzzzzzzzzzzzzzzzzzzzzz>Ä}`‡Ymèmø†w†¡…w€%X30‡zÈ   xx‡z€z0‡zøz0‡z0zÈz€†zø†z@s  s`s`t8N`sxi°®~C!ë? … ¸{`s†}€‡Yè„ê‡zØzXX ‡s€Yª‡>¬?ÜÃpØ‚YàC:¨‡ðLOõ\OölO÷|OøŒOùœOú¬Oû¼Ïû”{@þ‡Ypiè†o@v0tx‡e0xPeÐv0Y  0x@v0vøz€x@z€†z  vÈz€†z`t txv Pà„w@gˆ¨oÐSø††âZè)ÝQíQ](= … 0v°vxiØx …è„Ú}€X ‡K8r¸x(C€ƒs°8 R ‡r R07€z0ƒG8ƒo0„-…r0; †z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡zþ ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡þz ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z ‡z¥z€l¨‡wà„Y c c …e c`sØ‚e0ƒÜ s ‡Ü ‡o t ‡o¨t¨t0t s` È v€‡Ü  s`t8P s€g€¨6…\Ø„F(D(…X*È‚@‡+øQÛ½]ÜÕÑ~ðZˆz0‡z0tP†VP(qª‡K ‡K0B¨…K¨‡tЀzƒ_°„7Àz,Àk†,ƒ_ð,Ày ° €‡ÀOø_ù_ú­_û½þ_?´zÀ†z`et0mÀf0v@c@sPeÐt0es@v@‡Ü¨‡l`‡Ü  t`t š t0z@v@z@‡w`àP€‡wP†‡ê‡RÈ…fÈ…fÈDè~Ø€xè|Ø‚ƒv1°‚ÜMb%¶]?…@v°‡w iЇzˆ…Ú}°‡k Xr¸zà†# €‡jÀ ‡p8¸‡tØ€‡t8‚$¨‡pÀ{ÀrèzÀzÀ_AdB.dC>äzØÃz{`f vø†nà®e  ZxtØg0z0zQtþ t s@s¨s¨‡l¨s ‡o ‡Üø†zȆz0z0š0v@!àP@‡w††ê‡è‡S¢MÈ60 hà‚À1¸‚ȇpXblÎfˆê=˜… @‡w¨s€gÐxˆqÚ}¨‡}ÐÂW¸†} Xø{H‡- ]H˜†A°.ب‡pÀ]8.8:Ø‚gØxÀpˆ.0z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨þz¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨z¨þz¨z¨z¨z¨z¨z¨z¨z¨z¨?´i°‡w0xP!?`a@‡w0v@‡#P=`s¨h¨s`‡Ü s`ü‚s@s@s s¨‡l¨s@s¨‡o@z@‡w`‡#Zxtp„r"ïGP¬Äj‚àmØ È,ˆ‚~ð‡èsè"Ïr-ßr.ïr/ÿr0ó,ï=à„`s°‡w0mØ{€‡~Їz'{¨s{†Wq y¨z¨z¨zˆYÒÂ=ÔBz¨zz€Kã†# ‡zpOJ¯tK¿tLÏtMßtNþïtOÿôzØCl¨tPzà`mpcxt tx%X3@t`xøz0z0t`s s ‡o v0z0[gt0vÀ/5v@‡#0Z`xp/ÿ(èön·€~ðC_àZ€†-h‡l0ƒEswwx÷/ïF`… @v¨v0gЇ=´x%-¤x x x°>”‡>¬sz¨z°>„‡:‡‡:—NXOßxŽïxÿxy‘y’/y“ùz lЇw0z`NÀiPc€‡w0s€%P=xt0z0t0‡zȆþz0v ‡o`t0t`‡z€z0zˆ`z0z@z@‡w`‡#¨v0gèò㌠Œ0 „2 yo{·{/ï=à„  {@‡w†z%x ‡:‡{Ðx°‡=´>„z€‡=¬z¨>¬‡=´Y²Yªó“¿|ÌÏ|Íß|Îïü̯‡>”{@‡e tø†nÐiXs@‡e€sØ‚e0s`tø†z0t`t0[ÿ†z@z0zÈz°us`t tÀ/s`s`tP t€g€{íß~î‡û~`V¨€o`{°uv`ô×s@ÿo@ô×þ†oжAöïûg›n`mømІoЀø&ð›6mè ¢+ˆ® º‚è ¢+ˆ® º‚è ¢+ˆ® º‚è ¢+ˆ® º‚è ¢+ˆ® º‚è ¢+ˆ® º‚è ¢+ˆ® º‚è ¢+ˆ® º‚è ¢+ˆ® º‚è ¢+ˆ® º‚è ¢+ˆ® º‚è ¢+ˆ® º‚è ¢+ˆ® º‚è ¢+ˆ® º‚è ¢+ˆ® º‚è ¢+ˆ® º‚è ¢+ˆ® º‚è ¢+ˆ® º‚è ¢+ˆ® º‚è ¢+ˆ® º‚è BC×­ @tÚô½cel¶1Z¬±3g 9%Êô¼£ÇÎqvôÌÑ3Gïþqtæè7G:sèÌÕ3WZ=vèÞ±;‰ջwÊþ¡O¯~=ûöîßÃ/>ýúÿúéáT¡;{æè±C=ð C;Ô½ƒŽ9èÀƒÎ;èЃ=ßЃ;æÐc=ì˜;ìPG:ôЃ=RÇ=æÐc=çÔ ‰ôdS4$šC9ôœS4$Ò“M=Ðh=æÐsN=ЙM=Ðh=æÐsN=ЙM=Ðh=æÐsN=ЙM=Ðh=æÐsN=ЙM=Ðh=æÐsN=ЙM=Ðh=æÐsN=ЙM=Ðh=æÐsN=ЙM=Ðh=æþÐsN=ЙM=Ðh=æÐsN=ЙM=Ðh=æÐsN=ЙM=Ðh=æÐsN=ЙM=Ðh=æÐsN=ЙM=Ðh=æÐsN=ЙM=Ðh=æÐsN=ЙM=Ðh‰õG";è˜ó;æ uè˜ó:ì¼CË;èláŒèG;æÔ =Ä¡C¢9ô˜ƒÎ‡ÄÑc=ѱó<æ°ó;èA (è¼# {+³Ü²Ë/óÌ3ÓÜ#´Tð ;ö1ÊЦÌlÊÌ6Œ0´Í¦Œ1Ê̦Œ1Ê£ÌlÊ ­ ÒÊ£Œ1Ê(c -Êõ2Æ(C ×þÆpM 4´ˆ­Œ1Êе1\Ó -m£ -\Ã5-ÐÐÒ¶1Êе1\Ó -m£ -\Ã5-ÐÐÒ¶1Êе1\Ó -m£ -\Ã5-ÐÐÒ¶1Êе1\Ó -m£ -\Ã5-ÐÐÒ¶1Êе1\Ó -m£ -\Ã5-ÐÐÒ¶1Êе1\Ó -m£ -\Ã5-ÐÐÒ¶1Êе1\Ó -m£ -\Ã5-ÐÐÒ¶1Êе1\ÓB´0†ØŒÁ5ÚhƒèxLJގw°ï0;Ìqeèè`‡9èaŽ}Ñõø:ÌQhÔÃô = þQsЃ:æ qÐñv´x:œ¡ž¦g6@"‹hÄ#"1‰J\"zú¡Ptè°<à¡ xУŠð ‡2ôa}è#Œý¨Ç>êQ}ÔCfÔG=ìQ}˜Qõ؇ía3ÖÃõ£>ìFÔÃŽû¨‡=ö¡}ÔcöÐG=öaG{ì£ö؇>öQ}ØCõØÇ#÷Q{ìCû¨Ç>ì¡zìã‘û¨‡=ö¡}ÔcöÐG=öñÈ}ÔÃûÐÇ>ê±{è£ûxä>êa}ècõ؇=ôQ}ô±zìÃú¨Ç>¹zØcúØG=öaþ}ÔcÜG=ì±}ì£û°‡>ê±Gî£ö؇>öQ}ØCõØÇ#÷Q{ìCû¨Ç>ì¡zìã‘û¨‡=ö¡}ÔcöÐG=öaÇYCƆ3¤¡ iÃÊ€†3Œ chÃÒp†4”! c8CÐp†1 a mCΆ2¤a g(Î04Œ¡ cHÃÒP†3 á hHÃÐ0†2àAzÔ£ŠÆø:>„Žw°ì@-Ø%,à æ¨4êsЃô Ž9èAœwÔô`:àx‡8ì@;Ðw°G`'èi‘¥èE"A þZ ã¥Ø4¬!‹*Àá²ø‡.ÄPŠ~01¶²­lû¡VTÀè :Þa t¼ `Ç;”¡Å*¾ãðHî;èÁ澃Ð}=ØñyÐÌ¥Gráñz ƒèø*;èñz¼ƒï Ç;èÁz°ã«ì Ç;èñz¼ƒï ;èÁޝ²ƒï Ç;èñz¼ƒì ;¾Êz¼ƒï Ç;èñz°ƒìø*;èñz¼ƒï Ç;èÁz°ã«ì Ç;èñz¼ƒï ;èÁޝ²ƒï Ç;èñz¼ƒì ;¾Êz¼ƒï Ç;èñz°ƒìø*;èñzþ¼ƒï Ç;èÁz°ã«ì Ç;èñz¼ƒï ;èÁޝ²ƒï Ç;èñz¼ƒì ;¾Êz¼ƒï Ç;èñz°ƒìø*:h! mH#ÒØ†6¤QghÃÚ†6"- lHCÒ(ˆ3´á mHCžÆ†4´!‚8CÎІ4´áilhCØpFAœ¡ iãC  G•ÁŽwP‡æ@Ç;Ø‘\c JP†Øv$æ ‡9ØAvÔãð qèavÐô0=ÐÁâ ãì 'Xaz(ȉh¿ù} kü# ¼HA?vÐjXaùàA?¬AÛ‡Cþ<âéé‡8ÑäÚƒèP;ÐÁ˜Â0Ç@bŽoG ‰E‡9¾aŽoß Î@ûÄ Ä%ÿ†9vîó˜ãç?7‡Ð}nŽ¢ïÜH/¹9–>s8] æˆú7ÌAusPÝT7‡Ó‰c lHCØÐ6´! mDZÒ(6¤¡ lhÚ†6"­ iÒÐ6´ mHC‘Ö†4 ‚ ihÚÀ6ºQHkCØPq@ ƒæH.;àñs°ƒ:´`‡9¶° 3°Ãè ‡9êÁêÐÃõ`qØñ¯~èõ€F=Ës|ï`:ŽÀ Z|ƒþÒ b?úqŠf䢹ÈúñàÿØÁXð ìcGðE?$nþó'±Œ`EÌ{°ãÆH \P½éÆ@ºôn @@ƒ9|4 Ã7tÃÒA:|C7,4 Ã7tÃÒA:|C7,4 Ã7tÃÒA:|C7,4 Ã7tÃÒA:|C7,4 Ã7tÃÒA:|C7,4 Ã7tÃÒA:|C78j-hC7hÃ7hƒ@tÃ7hÃ7hÃ7tCAtƒ6|ƒ6D7|ƒ6|ƒ6|C7D7hÃ7hƒ@tÃ7hÃ7hÃ7tCAtƒ6|ƒ6|ƒ6 6 C7|ƒþ6tƒ1tÃ7@ ƒ6<˜; qÀ:0—1Àƒ9(Á2èÁ;|=|ƒ9Ð4ÔÃ7G=˜;Ð:G=˜; Ã‡Ôƒ9Ѓ9Ð::¼;¨(°< ƒ3Ñ)lÂ'lB.l ‡'¸A üÃüC0ÌÁ ‡>`ú)ã2‘pB°ƒ9Ø; ƒ2@CA0ã)44h6h4h4h4h4h4h44h4h4tƒ6@ƒ6@ƒ6@C7h4D?j4h4h4h4h44tÃ7X4h4h4h4h44tÃ7X4h4h4hþ4h44tÃ7X4h4h4h4h44tÃ7X4h4h4h4h44tÃ7X4h4h4h4h44tÃ7X4h4h4h4h44tÃ7X4h4h4h4h44tÃ7X4h4h4h4h44tÃ7X4h4h4h4h44tÃ7X4h4h4h4h44tÃ7X4h4h4h4h44h4h4`C7ƒ9|ƒ9|ƒ9|:|:˜Ã7˜ƒ@Ç7˜Ã7˜Ã7 Ã7 ƒ9|ƒ9q|ƒ9|ƒ9þ|:|:˜Ã7˜ƒ@Ç7˜Ã7˜Ã7˜ÃΡƒ9|-`ƒ60€6HC7(þÐ;Àƒ9¼ƒ9PÇ2Ç(ƒ ƒ9PLJ <˜=$;|C=˜:$V=dC=$<@C=|<¼; Ãp(¼<8CõC"lÂ…^(ü?¤@?XB/ì€A/ì@>ðÀ>0㊢_?0+DÀ; C=œ:,ƒ6D4hƒ3Ðã)C7hƒ4hƒ4hƒ4ô£4ôc¤iƒ4ø£4ô£44h4h4h4h4ø£6(CA@ƒ6(ƒ6@4h6ø£24hƒ2hØj6ø£2þ4hƒ2hØj6ø£24hƒ2hØj6ø£24hƒ2hØj6ø£24hƒ2hØj6ø£24hƒ2hØj6ø£24hƒ2hØj6ø£24hƒ2hØj6ø£24hƒ2hØj6ø£24hƒ2hØj6ø£244ø£4hƒ1 ƒ9 ƒ9 Cb™;˜:$;˜:˜:h+;˜:$;˜:˜:h+;˜:$;˜:˜:˜; ;˜::˜-xš§Ã;˜; ƒ9ÐÃ7Àǘƒ1 ƒ9(Á2èÁ;°=˜C=dC=þ= =˜=|qÔƒ9Ѓ9 ;G=@C=¼ƒ9ÔÃ7˜:¼;#Ð:¼ƒ2Q?¬ƒ#mÐþCóíCóõÃ?m?¤G?°hÓJœ°B Ã;Ø<¼ƒ1°ÂgÑ+°(€+xmØr(pBØš-+p‚Ùª-(p‚×Ò'p(p(Ð(p‚Ú²‚×Ò(°'Ð'¬-+x--€+p-pÂÚ²‚×Ò(°'Ð'¬-+x--€+p-pÂÚ²‚×Ò(°'Ð'¬-+x--€+p-pÂÚ²‚×Ò(°'Ð'¬-+x--€+p-pÂÚ²‚×Ò(°'þÐ'¬-+x--€+p-pÂÚ²‚×Ò(°'Ð'¬-+x-'x-'¬-'ƒ2ƒ2ƒØ×ÌFÛƒ2ƒØ×ÌFÛƒ2ƒØƒ2̆2CÛ(Ãl(Ãl(Ò(Ì-ÌÂgÍ‚2˜=|ˆ9 <˜Ã‡¼-¼:l2˜A=:°:ÐC6Ô:hëW%;˜=°:|H=˜:;ÀÃ;°:(°:¼ƒ4Q?ìÃ>4ßõCzôƒÓ±2ö#ÐB˜Ã;Ðu°ƒ9 ƒ9À< < Ã; ;À;¼<¼;˜;À:°u¼;Àq ;Àƒþ9°;¼Ã¾°Ã;ÀÃ;°ƒ9 Ã;ÀCÓ; < ƒ9¼:¼:¼C›;Ð; < ƒ9¼:¼:¼C›;Ð; < ƒ9¼:¼:¼C›;Ð; < ƒ9¼:¼:¼C›;Ð; < ƒ9¼:¼:¼C›;Ð; < ƒ9¼:¼:¼C›;Ð; < ƒ9¼:¼:¼C›;Ð; < ƒ9¼:¼:¼C›;Ð; < ƒ9¼:¼:¼C›;Ð; < ƒ9¼:¼:¼C›;Ð; < ƒ9¼:¼:¼C›;Ðþ; C¿C¿<˜;˜:°Ã;Àƒ9 C›;˜:˜; <ı9°:ı9°ƒ9 ƒ9°:ÀC›; C›;˜:˜u°<G³u˜< ;ì :Àu°::°:°:˜C=dC=˜C£Ã;C+Á2Èq85u°qÔƒ9Ô4Àƒ9Ѓ9ÔqÔC6Ôq°ƒ9Ѓ9°q Ã;°ƒ p+°:83öÃKvlõƒ€B¼ƒ9ÔÃ;Äñ;°<;˜; =°ƒ9P‡9PÇ; Ã7Ѓ9Ð; ;˜:ÀC›CS‡SS;P<¼:þ˜:˜u¼ƒ9°Ã; ; Ã; q ƒ9PÇ;˜;¼:°:¼::˜u¼ƒ9°Ã; ; Ã; q ƒ9PÇ;˜;¼:°:¼::˜u¼ƒ9°Ã; ; Ã; q ƒ9PÇ;˜;¼:°:¼::˜u¼ƒ9°Ã; ; Ã; q ƒ9PÇ;˜;¼:°:¼::˜u¼ƒ9°Ã; ; Ã; q ƒ9PÇ;˜;¼:°:¼::˜u¼ƒ9°Ã; ; Ã; q ƒ9PÇ;::|= ƒ9Ð; ƒ9°=°:Ð;0;¼ƒþ9°ƒ9Ѓ9Ð; =°s±Ã;˜;˜=˜=°:Ð;¼;ÀCr±qЃS'<˜Ã; t™ƒS³<¼; = Ã7Ð; ƒ9¼u¼:Ðu3˜= ; ;˜=°ƒ9Ô4°ƒ9ÔÃ7Ô4$V£;˜=:ÐCÃÃ;°:'Ð;Àƒ3Q³;û³C{´Kû´S{µ[{?èÁ,D;¼=°u°ƒ9$;¼C›:°=°=˜= Ã;À; q°:À;˜; Ù™£‡Ž9…ìà±CGo&;tôÌÍ4Q=BŸ ƒæ@;|¢z(„>A=ÌvøD!ôP=|‚z˜ìð‰Bè¡zøô0:Øá…ÐC!ôð :èat°Ã' ¡‡BèátÐÃè`‡OB…Ðà a‡9Ðaz ƒìøF=ÌAsÐô0=Øz°lû=ÐAsЃè ;ÐÁ¶oÐô`‡9ƒv Ãß0=ÌAv˜C!æ`:f‚v˜ì0:èv˜ãô`:èa…°Ãþèx-Ø%(à æ 4êav˜ƒæø=ÌÁsÔÃìø=¾Qv˜c&hò =Øw°B+Þgx„#¥ÈE3ÈÙŒDô£Üà@þ11¼aHCÐùôcøÀBÄ ‚ixBH˜8 ZPƒ¡ íH?ôÀŠ˜ƒöx‡9àQ#˜ìàÆÐánÁDØÆ|òˆ£GÀ9Â㟸Õ8‚9êaˆ,"öqL! XÀ8̱# ƒX¸‚p ŽjÁ a=ÌÁs ƒè`‡9ê z(„ô0;Ìz ƒþæ¨4è¡vÐÃì0:èv˜£Р‡BØAs°Ãè :ØaŽz@ƒ a=ÌÁs ƒè`‡9ê z(„ô0;Ìz ƒæ¨4è¡vÐÃì0:èv˜£Р‡BØAs°Ãè :ØaŽz@ƒ a=ÌÁs ƒè`‡9ê z(„ô0;Ìz ƒæ¨4è¡vÐÃõÈF=|RoÐãæø†9êz˜C!æ`:ÌAsÔÃô =bz Ãô0G=ÌA¶Õãô@=ÐAsÐÃõøF=¾Áz°ƒè ‡9™Ðã3þ1G=ØFt°ƒè€;Ðñc¼JX†ÐQ™ è`<ÌÁsÐõ0=ÌAo˜ƒõø=ØA™Ôõø:ÞÁŽ#p‚èx‡2Ú}œâq¹ØD.Ø ‘|`àý E|‘)ôÄ!þ±ƒ|l! ý˜‡úÁ‚7(дBûÁVtì°;ÞaŽmÁô`Ç96ð”#çÀ7Ž 6v€A–x èÁt|c ¡ƒ(Ò€v˜ìðÀ96`ilã`Å7´Qt£G Dñ e€áž@=ÌAsÔõ˜‰9èav¼õ€þ=ÌQhÔc&æ ‡9ØñtÔô0G= Q™˜ƒæ`Ç;ÐQhÐÃõ€F=fbz˜ƒï@G= AsÔõ˜‰9èav¼õ€=ÌQhÔc&æ ‡9ØñtÔô0G= Q™˜ƒæ`Ç;ÐQhÐÃõ€F=fbz˜ƒï@G= AsÔõ˜‰9èav¼õ€=ÌQhÔc&æ ‡9ft˜ƒ>A;àÁ6s|ƒô@ÇLÐñ z˜ƒì¨4èv|£Р;Ðñz@ƒèð :Øñz@ƒ樇9¾AŸ|ƒШ‡×ÙŸ Ãß þ;ÌQs°C!ô@Ç7ê z˜£l›‰9f‚Z ƒ[P†Øav ƒæ˜É7êx lC=„Âs Ã'3A‡9ÄÆt³@Ç;¤APt&bÑ~Љj¨àïè‡üq„~` `8D?þ±ƒ|l! Ó"¸a„ôcÐñ—ÿ û¡VTô¨‡9èñ#ÐD¶ÀàÁÜ@ÄÁA!Î àa&êÁŽ@ ¬áèfáAta æ 8áì@ záìÀ àáì` ˆáì@8Á'ÐÁèÁØÁêáÌÐÌþÂèÁØÁêáÌÐÌÂèÁØÁêáÌÐÌÂèÁØÁêáÌÐÌÂèÁØÁêáÌÐÌÂèÁØÁêáÌÐÌÂèÁØÁêáÌÐÌÂèÁØÁêáÌÐÌÂèÁØÁêáÌÐÌÂèÁØÁêáÌ|b&|‚ÌÌÌÌêР¡Þ¾mà|‚ÌàèÁfÌèêÌ¡…‚ ¡þÌÐØÁØÌÐÌÌ!ì‚mèÁ'ؾÐ|¢ÌÌÌa&ÄÆØÁ”`ôàØÌÌèá|‚ÌèêêÁÐÐÌЄØÌÞŽàpÌœ#~ò †r(-àÊÁúxÁÌ ôô€þa ªòv€hAHaúú¬(Ç’,ËÒ,Ï-Ѳ:ÀØØ¡ņ|b&ÞÁàáØÄFlàáêfØA!ààAlÌèáÐкØþÄÞA!ºñºñÐÁ‚|ྲ¡„‚ÌØÁÐÐáè!êA(èÁèÌྲ¡„‚ÌØÁÐÐáè!êA(èÁèÌྲ¡„‚ÌØÁÐÐáè!êA(èÁèÌྲ¡„‚ÌØÁÐÐáè!êA(èÁèÌྲ¡„‚ÌØÁÐÐáè!êÁ¾¡èÁêêС ¡ÌáÐÌ¡Ð|âè¡ ¡ØÁèÁêþÁØÁÐÁ'fØÌ¡àÁ'èÁÐØàêêÁ'¾¡Ðm¾¡ÐÁ¾¡ ÌÌ¡ÌáêÁ'ز¡ØF!ÌЖÌa œÁ ÐáêêÁèÁê!êÁëØ¡²¡Ì ¡ÌèÁèÁfÞÐAHØœÁ,ÑÉTûa,ûáÐi,Uá4b4¢4ÒÒVoWsµü€*ØÁèáÐÁ'ÐÁØfB!ØÁâÌMÌá„ÌÌÌáÌÌØÁÐáÌÐÁÂÃ'ÐáþÐa&ÌÐÁ'ÐAlfØ|‚èàÁÐêá|"<ÌèàÁÐêá|"<ÌèàÁÐêá|"<ÌèàÁÐêá|"<ÌèàÁÐêá|"<ÌèàÁÐêá|"<ÌèàÁÐêá|"<ÌèàÁÐêá|"<ÌèàÁÐêá|"<ÌèàÁÐÌá|èA(àÂÂØf¢|èÁë|¢²¡Ø¡ ¡ØA!|b&èÌ¡¾¾ÌþÞÐ|¢Ì¡Ì Ì¡²¡Ì؆ ¡ÌСÌa&èÁèÁêáèÞÌÁÐÁŽ`ô¾Á'àÁÐ|fÂêÁØmèØÁ'ÐáØá‡ÌÁru,ûa#Ði#ÐI#úA|×—}Û(:À'èÁèáØØÐÁâØàAlÐĆàÌÐÞÞàààáØáØÁàa&Ða&ÐÐa&Þa&àfØA!ØÁèáêÁèáêÁ¾ØÁ'èêêþÁèáêÁ¾ØÁ'èêêÁèáêÁ¾ØÁ'èêêÁèáêÁ¾ØÁ'èêêÁèáêÁ¾ØÁ'èêêÁèáêÁ¾ØÁ'èêêÁèáêÁ¾ØÁ'èêêÁèáêÁ¾ØÁ'èêêÁèáêÁ¾ØÁ'èêêÁèáêA(èèÁêÌA!ÌÌÌ!ìÌfÂèÁ'ØáèáêÁêÁèÐáêÁ'Ø¾ÌØÁèÁÐÁëêÁèA!Ìþþ–Ђà!êÁÐØA!èÁB(꾡 Á'ÂÃfbÞ”€ÌÀØA!Ì!ìØÁØáêè!<è|âèÁèÁèÐÁÐàáØŽhàÁÜ×¥_¦cúúAX¡Ð!ìÐÁÐÁØÁèÁè!<ÞÁÐa&ÌÌÌAlfÂÐäÌÌÌ‚ÐÁfââÌáØfÌáØÌÞÐØ„¢¾Á'èêáàáØ„¢¾Á'èêáàáØ„¢¾Á'èêáþàáØ„¢¾Á'èêáàáØ„¢¾Á'èêáàáØ„¢¾Á'èêáàáØ„¢¾Á'èêáàáØ„¢¾Á'èêáàáØ„¢¾Á'èêáàáØ„¢؆ ÐÌèÁèáoéÁСÌ¡Ìèá|‚ ¡Ì|‚‚¾A(êáêêÁèÁèá|b&ÐÁÐÌÌ̾!<ÐØÌ¡¾ÌÌÌèA(èêèÁèÁàÁØÁŒáàa –þAØf|‚С¾¢¾ÁЄÌÌ¡ ÌÌ¡¾ÁÐáØA8ØfAÂ\ÌÇœÌËÜÌÏÍÓ\ÍלÍÛÜÍ¥¶€:ÀØ¡ØÌÌÌfØÁÞÐÞàèA!Öd&ÌáÌØáÐáØÄfBlÌáØèA!ÄÆÐAlÐÁê!êÁèÁèÁ'èÁ'èÁààÁèÁ‚Ì|‚ÌÐÌÌA!èÁèÁ'èÁààÁèÁ‚Ì|‚ÌÐÌÌA!þèÁèÁ'èÁààÁèÁ‚Ì|‚ÌÐÌÌA!èÁèÁ'èÁààÁèÁ‚Ì|‚ÌÐÌÌA!èÁèÁ'èÁààÁèÁÂèmèÁàÁ겡 ¡ÂèÁêÌ¡¼îèÁÐfB!Ì|‚Ø¡ Ð؆ê!êêáèÁêÌÌÐmÐÁèa&ÐØÁè!êèÌ؆f¢Í¡êÁÂàÞàÁ”@ÌÌêêA!|‚ÌÌáþèèÁèáêÁÐÁê؆àáØ„€@ð”ôKßôOõS_õWŸõ[ßõO_lô€*ÀèÌBº÷yàØáØØÁ'ÐÁØØ¡¾a&àôéáØÌÞA!ØÁàA!ƒ¾àÌÞÌØA!ÌèÁ'èêÌÐÁ'Ð|‚Ì ¡Ð ÌÑCgÎ:vÙ™£­:sôÐDÇ® ;sô ÕCgŽº‚èØdgŽ´zèÌÑCW»‚ìÌуV9zè ¢cW9zÐê¡3G]Aþtì ²3GZ=tæè¡+ˆŽ]AvæèA«‡Î=tѱ£gŽ=sôÐÕƒV¯ ;tìê±+È®4zß š«­^¶zæÐ¬­=sì虣÷Í=tìêA«gŽ^Atìà±£÷Þ7sèØÕƒFÏ\=sõ ÕÓkŽº×ðØÁ{Í=sôÐé­÷½o餇î±×J–éyÇÎØñt˜ÃÝð„À K¼ìØÆØtà@åHÁ70°#° ¢ðÄÀ Šohß8Ç2‚as°Ãè`GAØQz ƒzÉ==ÜCê ߨGAèaz¸‡ÕA<¾Q‚ÐÃôp=ªƒx|£¡‡9èázTðøF= BsÐÃ=ô¨:àñz„æ ‡{èQtÀãõ(=ÌA÷У:èßPAæ@îAÕðð õð ôÀæ@þßPÐ@ßPæ€ì .ìPõÀèPæPÙPôÀèÀzAîèÀæ€ô`è@ì€ð`õ õ .õè`ì@ÙPAæÀè`è`ð õ`ßPæ€ô`è`ì qæÀè ÕaìPè ô`ôÀè@ì`ìð ô`èPì€ìð´ðìPÊ`è`õ õ ô ô`è@è@æ@æ€ìPôÀõ€Õaõ ôÀððì€B@ ´`ïÀ ûÐÐp÷°÷àK²8‹´X‹o³ú°ÿPÿPþþ€I´€LÂ8ŒÄ(ŒôÀèì€Τ¬Pæ03ì€æð ô ˜¤û€ôð²Pb ç`p€è`ŠÀè` [@ † npœç`pï`[À ưÔ`R` ì@æ@æPæÀõ ô`ô`ô`ô õ õ`ì`ô`ôPì{æ@ßÀæ@æ@Á"IßÀæ@æ@Á"IßÀæ@æ@Á"IßÀæ@æ@Á"IßÀæ@æ@Á"IßÀæ@æ@Á"IßÀæ@æ@æþÀ¹WÐ qìPô`ôÀô`ô ô€ì@ßPzAæ@æ@ßðì`ô`ô`ôPè`ô õ`ðÀæÀôPì¯QæÀæ@¯AAßP怹Wì€ìPß@è@æÀô`ôðì€ô`õ`è`õ ð€æ€3ƒæ@è@æ@æ€ï` è`J  z@æ€ìèP¯‘{è`ô`ô`èÀÁæÀõ õðïÀ=À œÀèà úð_Ð _ð ‚ Ô ú`º°Ä@  * ú[@þ ¡Z[`¬0 [`õ°õà´ð ô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô`ô šÕaèÀ¯aœÐèÀö€΄æ¯AèÀæðìpB GÀæ€ïè¦ï`âÀñì€æPJÀ¿Àï`ÕaìPôð õ`èÀß@zAæ .æ€ð€õðð`ì`è`èð ô`ô€ôPÐPè@þæ€æ€ß@æ@è@õ õ€ô`è`èð ô`ô€ôPÐPè@æ€æ€ß@æ@è@õ õ€ô`è`èð ô`ô€ôPÐPè@æ€æ€ß@æ@è@õ õ€ô`è`èð ô`ô€ôPÐPè@æ€æ€AæPì`ô€ô`è@æÐ õPßPæ@ìð õ{ô õPâbõ`ô`ô`ßPô`è`õ`ì`è@ì`ªiìPßPæ€æ@ÐPì€ìpõ õ`õÀßþPæ@"iô ’ô`õ ôð ô`è`õPô`èÐ@ñæ€ì€´ðè°Î`Aì`Õaô`õ`õPè ôðª‰ì€æÀôÀððì€G ´`ì` o#¹ Ô õ@ö`¦ì¿@ öÀ¥n@[€ ü`fà ö f@ ³;»œ@ ´ ±À ö õàô@ ß`ì`ôð ôð ôð ôð ôð ôð ôð ôð ôð ôð ôð ôð ôð ôð ôð ôð ôð ôð ôð ôð ôð ôð ôð ôð þôð ôð ôð ôð ôð ¡šô`Õñè`œP¯aì€ì€æðæ€ì`ôð ìðgª‰æðªùìðì€ð€ìðððð€ì€ïPïÀð€ì{ô`èPßPßPÐ@æPÐPæ@æô`ôÀæPÐÐPæ@ßðô`ôÀæPÐÐPæ@ßðô`ôÀæPÐÐPæ@ßðô`ôÀæPÐÐPæ@ßðô`ôÀæPÐÐPæ@ßðô`ôÀæPÐÐPæ@ßðþô`ôÀæPÐÐPæ@ßðô`ô`ô€zAßÀèÀAzAz õ è@æðì€æ@æ@¹÷æ@ÐPßPô`õ ïÀðPèPèÀô`ô`ô ìPæ@ÁèÀèÀôð æ@ßPõð ô€ì@è`õ`õPôð ð€ô€æÀôð Õì`èP¯aô`ôPΤ ì€G° z@æ€`ʹGè`ô€õ`ô`ô€õ õÀô€æ€ïÀBÀ ¬ðð  ³{úp‚pÔþÀ ö ;ÐúP G€úÀ X€ôX€é ö°ò°ò Ëkú Lsy]ö ´Põ ô`ìð õ ô`ìð õ ô`ìð õ ô`ìð õ ô`ìð õ ô`ìð õ ô`ìð õ ô`ìð õ ô`ìð õ ôð ô`ôðæ€ôPèzÀ `ô`èPÎTô`¯ÕQïðÕæ .ïÀèÀèðæÀèPÕaì€ï€ìðìð ôð õ`ô`èÀÁæÀæPè`ô€ì`ô`þèð õ`ßPæðæPð€æ€æPÐ@ßPæðæPð€æ€æPÐ@ßPæðæPð€æ€æPÐ@ßPæðæPð€æ€æPÐ@ßPæðæPð€æ€æPÐ@ßPæðæPð€æ€æPÐ@ßPæðæPð€æ€æPÐ@ßPßPèPô€ßPæ@è@¯AßPè`ô qæÀæ@æ€æ@æPÙPñ õ`ô`ô`ð€õ õ`õ`ì`õðß@è@¯Á¯aß@Qzþæ€ì€ì`ô`ì`ô€ôPß@æ@æ€ñ õ ô`è@QÐ@Aæ@æ@ì`ß@æ@ì .¸Àï Ê`è`ôðô`ô`ô`õ ô õ{ì€æð õ õPððì€BÀ ´ð ï€ ö _ _ qô0»ô¿`Áð8`î`8@é€8X`8à[ ËË ´€ Æ@  0»ô×´ð ð .ôð ð .ôð ð .ôð ð .ôð ð .ôð ð .ôð ð .ôð ð .ôð ð .ôþð ð€õð õð ô`ð`쀪‰zÀ ð ì`ª‰ð¦ôð ¯A¯áLèÀæô`ô`ì@èðìðìðð šðÀï`ì€ïÀèðÕQèPõ õ õ`ôð Qæ@æPôp¶ô`ì`ïÀô€æ@èÀzAæÀæðì@è`ô€ì ô`ì`ïÀô€æ@èÀzAæÀæðì@è`ô€ì ô`ì`ïÀô€æ@èÀzAæÀæðì@è`ô€ì ô`ì`ïÀô€aŽ:vþæ ~£‡Î =hõ¾„H½oõ¾¡£gŽ´zæê}cg;sìèA¬­Þ7zæàA4‡Ž9vìèA¤gŽž9zèè¡£­žAvôêe«g®&;tæØ¡3XZ=sèÌÕƒVÏ=sìࡃÈÎÀ¤°)z-øºØ-HÁŽl¤"[x-Îa8°CÞ[Ð;Ìv ƒõ0G=ÌvÐãð Lèz˜ƒƒ‡Ã Ãè Ç7èatÐà 訉9èz˜ ô@<`BhÔà õø†AèzÐà è0=ÌAsÐÃô0;êñz˜ƒ©G7êzÔdÆô@Dàaz¤È õ€F=ÌAtÔõ0G=¾aŽz@¤&ô0<Ìa t˜C Êþ°<ÞsÐ"ô0‡YØaz˜ƒæ¨4êav˜ƒì :̃ ãì8N…¤6ƒ6{zHv€‡¤1z@z€v ‡q s ‡w0z0 6cz`‡s¨‡lp s s v v v€mPh¨h¨h¨s¨h¨h¨s¨h¨h¨s¨h¨h¨s¨h¨h¨s¨h¨h¨s¨h¨h¨s ƒ s v@‡bt0x@z s`t°P耚¨t€tÐiè‡gû} ³8P‚-H€m80…AØ0àKþxxxØ @‡؆#@0àKxà…mЀwXv†sà€m8ƒÀs`l0à @0KØ0(Ox0‡rØsPsxø…`È0(Kx"@sx‡rØmÐ0Kx‡ø†8‡ èmÀv8‡ ø†8‡ è €s؆#ø† è†؆@‡zx0OxhH8‡ è8‡ økÀx‡#Àw؆#Q°„7À_ˆ†,@v t`s¡søz0v0‡z€†z€v@v0z0z`zø†z0z0³0‡þzȆz@v s¨³€ƒ¨z0z0t ‡o s¨v@x€ vø†z@x€ˆz€†z€ˆz€†z0—z€z@ƒ¨ x0z0z@z`t¨h v€s0 s¨h¨v@‡w¨h søz€sùz0z0ˆš0‡w …¤9‚ept0‡z€z@z0 s v¨h¨h s¨ x0‡z€z0z`xxv@!àZ0‹e`t`‡¤s¨ tx‡¡s¨ sHv ƒ ƒ¨ z¨ ³Hz0zHz€z0ˆš s c c@‡w`s€þz@z0x t ƒ€z@z0x t ƒ€z@z0x t t0z€‰zÈx0v ƒ¨ z0z¨‰rN¨s {0z`m=ü}¨ t`‡†npm80‡j8‚-àx0؆#@؆#€9€‡t8vÀsX-€€m8t0`‡sX1€€m8‚wÀq¨†#À10NÀ³ "Xtx€‡m8‡j8`t0t "X3 (‡XnèƒÀx(‡ XŽrtpt`‡m8‚mþètpm8v0xÀ10N8È‚mˆ3¨nèw@@‡p8€‡m8‡j80‡mØ‚o0zøx`z0v0ˆz€†zøt0x`t0z@z0z0z0z0 v€ˆz€·0v€s`˜¨ t ˜@ƒ ³€zøz@v s s`s`‡z0ˆz0‡š ‡o s¨ z0z0³ s s`s s@‡z€x€ x0 s s ƒ v0v@s€³ ˆ s¨s s m s¨ z@‡w0tx%P=@s¨þt0t s ˆ€‡w¨³¨ƒ`s¨³¨s t0t0txvPPsx\@‡w`³øz`s t`s@‡o ‡àdƒ0‹Av0‡š@v t0v@v0‡z€†z€z0‡z0z`t¨ ³xt0ePZ0Z0cPZ0ZH\e c …ÄUZ0ZH\e c …ÄUZ0ZPZ0ѡ¥e0ZPZH\ec e …Ä5†-…`s°v0vøeð©}¨‡}`s vptx؆#ˆ‚#Ð…¨‚R0xÀþm8vÀvàE…8‚RÀs؆#08ƒ؆-H:èjX3h€m8t… ‚#…8‚R ƒ#x† ‚ExvÀv‡#…à€_ƒ# x(! ‚CÐ…P‚RÀs %°v ‚-(08‚k %°v 3hv@‡t8xX%0‚mØv@sÐ…P‚RHQ@‚_ ‚#°‚w ‚#(CÀ"°:8‚g8]Ø€ø`‡m@z`s ˆ t txt`tp ƒ¨h¨s ˆ t0z0 s v0z@z0z`sþ¨h¨s t s¨h s v@s¨ s¨h¨‡o s ˆ`ƒ ³`t0‡z@ˆ`s ‡n¨ƒ¨s t0ˆz0ˆz0z0v¨h¨s ‡š@s¨v0z0z0‡z€z0‡z€z0³ Cs@Z@sØe°ƒš0z€t0z`s@s¡‡š0z€z0z`xxv@‡#V0‡w0†à|t0t`ƒ€v ƒ¨‡o¨s€t s t v¨s`zÛzȆz0xx‡z@v0t t0v@‡š@‡w@ƒxþtx³0‡w@‡w0 sxtx³0‡w@‡w0 sxtx³0‡w@‡w`‡w@‡wp ƒ ‡o€‡w0‡w0 vHt ‡ox‡Áx7`…¨‰z t`s°‡³Ö‡³® s`%%8P0v@xŒw`s@xxv@‡š0txx@v@x`t`sxv0‹o0‹¤xxx ‡w`sKxtxx@‡w@v0t`txt`x0t€vHšw0v@s x0‹¤as0‹o`³˜!t¨ t€s¨ tHx`t€ˆš@x@‡w@sxsxþvŒw`sH³`x0x@v@v€‡Á`t`‡zøt0t`t s ‡o0v0z0v¨s¨h s s h¨ƒ ‡o`ƒ ‡zøs¨‡o0zøz0v@h¨‡o0³`t0z@‡zÈz@‡w€‡o0t0z0z0z@ƒ s`ƒ@‡z0z0‡zøsAs ƒ`z€†z0‡š0z0ˆo@s ˆNs@s€t`s ³€z0z0z0‡¤1t`%P9`z0t0z0‡z€†z0v s s`t0z€ˆzþ€†z€†zøƒ@‡w`"Hx@‡e0‹š@z@‡ƒø†z0v0‡šÈN0ƒ@søz0vx‡lHt`t0z0t ‡l¨s¨ˆ`t ‡šxt`‡wHxÈN …š@zÈN0zÈN`‡w¨ txvx‡š@‡w0z¨ sHƒ`s¨‰w0txtx‡1vxtx‡š@; …`s°‡š@v€t€v fv0x`‡w@‡w¨ tH³€‡w0tHt`x`t0‡w@‡w0t`s€³¨ x¨ t`‡w`t0³(‡*pt`þƒ`txv€‡w@‡w@‡w@s€‡w0v0 vxtHš1vx³`‡w`‡¤A‡¤1‹w`txs@‡1t0tˆmt`t`sxt`‡w0‡w@‡à4vx‡1‡š0t0‡w`‡w`ƒ v@z0z0z0v€ z@x@v0 z0ˆš¨‡o¨h¨t€ƒ@s¨h¨tøs©s@v@x@z`s`z`z@z@z@ƒ€t`t0t¨h¨h¨s1t t ˜@ˆ t s¨˜ ³ sø†z0v@x0‡z0t þt`s¨h¨s¨‡š@z@s@sp s¨h ˆ€³X†w@‡#p30v0z0‡z@‡š€s`sø†z0ztôÌÕƒVÏ;sõØÕËV¼wìЊ9cïØhÅî#:væØÑ3gÒ=sôÀ˜K·Å;sôèA«‡Ž:z㘱£Ç;tæÐÁ;iŽÛvæØ¡kJϺìÌÑ;· ÇGsðÒ1‡.ÝtR›¢“Ú”9vð¤¢ûHÏ;tðØ¡£×ô#=sRɃ'T„wìì±£‡ÎÜ;sìÞÑcGï#¢“*õÝ;sèà±C÷ñ:sá¡þ{‡î=sð̱{÷ÑÜÇwèØ¡c‡»wðš¾cÝǦæÐ½3÷ñ:sèà¡ÃÜô]Óèà±CÇî]SvMß5ýhŽÝ;t˜Ñ}„Ç;²ïؽc÷Ý;vèà™{g;tRß}Äü®);èÐÓÔIè˜SÏ7æÐM=ìÀcN=ÐÔ“M=æ°Ó”9ô˜ÄŽ9ô˜CÏ7ô CIõ°c:ô˜C9ô@SÏ7ô˜DOSìÔM=ße=&IEIðЃ;èÔc=æÔM=ߘC4õ˜D9ô@SÏ7FÕc=ß Ã=ߘDÏ7ô|C4õ˜Ã=ßÀCÏ7&Ñó :ìÐc:þFÕÓ=&}dŽ1ì¼³…2nÀƒÎIÐÔc=M±c:&Õ“M=¡CÏ7&¡c:&¡ó;*pB ;ïÐò%XðÀ[ qŠ9õ’B ½°`7G$°Å3GàMf¼€Da;ÛlÆYЃÎ6˜ñ:Ha)Pb=ܘÁÁ)+ cɤ(ñÂ6[°€)J¼ÀMJ±Íº¼°B/æÐÃNSì˜COSì˜ÃŽ9õdSÏ7õ4E9ì˜ÃÎ7ôEOSaf’¬t€;õ˜ÄNSô cÒ7ô°ƒŽIô óQSì4ÅÎIô˜D;è°ƒ:ì˜ó;è˜9<7EOþS漃Î;ì¼c;&½ÃNS漃;þ±c<ì Ãfì˜ó:ì¼ÃŽ9<£óŽ9<£óÏÙGð ó =è˜C:ì˜ÃŽ9<³c:æ4õNSì˜C;M™ƒ;d¡ÃNSì ƒ:ì óN6õ˜CIßÐÓT=ßÐc=ð¼ƒ=ÙÔ“M=ÐÔÃŽ9õ˜ÓÔ7õ˜Ä:ì˜ÃŽ9õ@S9ð 9ì Ã³IÁc=æÔM='Õó‘9èÐÃŽ9è˜SÏŽôÀ =ð C9õ@S9õ c=æÐcN=ÐЃÎ7õ°c=ßÔc;èÐÓ”IšBs ƒ&A;èz˜ƒþæ¨;NÂŽ¦Ðã#ï ;СbØÁ3A=ÐÁަÐÃô0=ÌA“ ã#è0:èŽw°ƒÇ;Ø!‚ðx‡1Ђo`.0Ç6Ž`v°@Õ8ÞQŽ#à€Û8¶q„wà€ØÂÐÁŽma)(…I¸¡„wà€=@‡ Òqx4%\¸Â,ˆˆƒ[hÀ6Ž€vb ØÆÐÁ‚mR¸ÂÐñz˜ƒß`=ÐA¦˜ì8‰9>bz˜ƒ D‡ß>Bt¼Ã  ¨€9Øaz˜ƒæ@‡9ÐÁz@£æ :üFÐÃèþ€:àaž¡ƒè`:èaz˜<3=ÐÁtÐÃè`=ÐaŽw˜ìx;às|3ìx;L‚v Ãì :ØvÐãï@ÇGàñt¼ƒï@G*ÑÁtÀÃ$ì@‡9èv˜A=ÐAsð ô@=LÂŽw°3ìx:èÁz˜ƒô`Ç;ØŽw°ì0ÏèŽz˜昉9ØAo°æ¨Ç7Ìv ô@;êat€’'aÇLÌAs°Ãô0:ÌAs|„æ¨Ç7èaŽz˜„æ 4êñtÐãæ@<ÌAhÔÃì8þI=ÌQhÔð@;ÐaxÐæ`‡9êz@£æ€=NÒsÐõø†9ê‘ z°ƒ&¡:ÌvÐÃôh =@iz˜ƒæ ‡9Ðav ãÆ@<”  7°ô@ÇGèñ t˜¤ß@‡Iêaz˜ô0;ÌAt˜æ@‡IÐñv´0:Œ± aoÀÁ;¶qz¼ ¢°Ä¢` OXèØÆp°# çØ<”ÁxlãÒ@ØñŽmÁ8`ÇÆñnÁìx¨á‰#°c<(G ÌtåHÁ90° œãÛPþDedCì0:ÌA“ Ãì ‡Ièaz˜ƒè@‡9Ðñ z˜ƒæ ÇGÐÁŽ'£ƒèÐ(:@sÔ'¡‡9èx Ã$èàÙ“ÍÁt°Ãô0=¾A'›„æ@;ÌñdsЃߨ;ÐÁt°Ã1ÇGàatÐƒËæx<Ðñ‘'³ãÉð`‡9èÁt°Ãè`‡Iêñ z ƒæøÈ;Øñdz°ì@‡9èñs èøˆ9èaz°ÃõÈF=Ìñdv<Ù$ì0;àñ‘'Äì0 :ØaŽ˜„ì0=Øt°C¶õ0 :Nò z°ã$ô@ÏþÌñ“Ѓæ ÇG¾QsÔÃè0É7êñ‘'Óã$ô%;@Is £/æøF=Ìz˜ƒæ`:àñ z˜ƒæ¨4èñx˜ƒæøˆ9èÁsðÌìx:èñsÔô0=ÌAtÔƒæ@ÇGÐQhÐÃì@G6ê‘z Ãè0;¾QsÔÃõ€=Nòx ƒè Å;Ì!e˜¡'a‡IfJzœ„æøˆ9èat˜ô0=Øw°B`Ä,žl RôâçPÄ#ÞQN<™\€:²a?”Bf'qPÀãïÅàðxœƒ¤ØÂ!àþñŽsp€Ç,”à tØAè`4ÜÀP¼c¿‡!äà†rpâè0„ÜP;lÁçÅ;è€b”ƒô`Ç“ÙAsÐÃô0;ž|t˜ƒõÈF=ÌÁsÐõ0=Ðñz˜ƒèp+"`vØ~3; =°=˜= =˜=˜ÏÐÃIÐ:˜= =˜=˜ÃGЃ9 ; =|ƒ9°=˜=˜=˜Ϙ<°ƒ9|=œÄ;°:°= =°ƒ9°<˜:|=˜;ÀƒI°ƒ9°:ÐÓ±:°ƒ9°:Ѓ9Ð:˜:°=˜Ä;°þ:|Ä“:°ƒ9°= =|=˜= ƒ9°:¼; ;À;Ѓ9Ѓ9Àƒ9°< ;<; ƒ9Ѓ9 =˜=˜;Ô4Ô;Ô=@C=˜C=|ƒ9ÐÃ7|Ä“±=˜;˜;Ð:˜=|(Ñ:ÐÃIЃIÔƒ9Ô4Ô4Ôƒ9Ôƒ9Ѓ9Ô4Ô;˜=°ÃIÐ:˜D=˜:ЃlÑÓ™;˜;˜C=€R=|;ÐÓÑÓ™:˜:À:˜=@C=d<°=˜;Ѓ9<<˜= = ;˜=˜ÃL|(qY=˜=˜=˜f:¼ƒ8þƒ˜=˜C=|ƒ9@C=˜=˜D=˜=˜C=˜;Ð:Ѓ9Ѓ9Ѓ9ÔÃ7ÔÃ7˜:¼;'pf,C_p< <˜Ä;°< ƒ9¼ƒ8¼ƒ9°ƒ8 =ÀÃ; ;ô<°< ƒ9¼<¼;¼ƒI°:ÀÃ;˜<¼;ø;p:°Ã“D_ <°:˜< <˜fp=À=<;˜= Ã7Ô4Ѓ9<=dC=˜C=€R=dC= <<ÙI|„9ø€BÐ;؃IÔ; =°ƒ9|C=@=˜:˜;˜C=°Ã“±:|C=|=œ:|Ä“±ƒ9þÐÃIÐÃ7Ô4ÐÃ7Ô:°Ã“™=˜=°ƒIÀ:Ð; ;È= ƒIЃ9 ƒ9Ð:˜:Ð:Ѓ9°:˜= =˜=œ:°ƒ9Ð;˜:˜=˜C=dC=ðŒ9Ѓ9Ѓ9Ѓ9|=˜Ä“™:˜= =°ƒ9Ð:˜Ä7Ô; ƒ9À:|=°ƒ9Ð;˜; ; ƒIÐ;|=ÀÃI <˜Ã7ÐC6Ôƒ9Ð:˜=°Ã“Ñ:ÐÃ7Ô4Ôƒ9Ì4Ôƒ9|C=@=˜:Ð(±:Ð<€:°Ã;Àƒ9°:°ƒ9Ѓ9Ѓ9 (}Ä7Ѓ9Ôþ;˜:|; ƒ9Ôƒ9ÐC6Ô:˜Ã7ÐÓ™;˜Ã7Ð;Ð;Ѓ9°< <˜C= ƒI<™–Òƒ9<ÙG˜C=@C=˜Ã7Ô4Ѓ9Ð;˜=°ƒ9Ð4Ôƒ–r-¼Ã7l2˜Á7ÔÃ7Ô4ÐC=ÀÃ7Ô4Ôƒl:˜:˜:ÐéÂÃ;°:)”;˜ƒ1 ;`†9°ƒ9À; ;˜;¼:¼:¼:`:˜:°:˜ÄG˜f ƒ9 ; Ã;Àƒ9¼ƒ9 <°ƒ9 ;<; ÃG`:¼;¼Ã“™;˜:°<˜;˜Ã;<™œÄ;|=|þƒ9ÔC6ÔÓу9Ôƒ9ÐÃ7˜=˜=|:°ƒIÐ;Ð:Ѓ9Ѓ9°Ã“±:¸+TÀ7°ƒ=°ÃIÔÃ7Ð:°—™=˜=|ƒIÐ:ÐÃI|ƒ9ÐC=@C=˜;Ѓ9Ѓ9 ;Ô4Ôƒ9<;˜D=d=<ÙG ƒ9 =|;<=˜<|=˜:|D=|;˜C=@C=˜ÃG˜:°ƒ9Ѓl=;Ѓ9|D=|:Ѓ9 ƒIÀ; ƒ9°C=˜=|Ó±=@C=˜=˜C=dC=œÄ“i):ÐÃ7˜;Ð4Ô=˜:˜; ;Ôƒ9Ѓ9°C=|;þ˜=˜;Ôƒ9Ð:°=<;˜:Ð:˜;˜:˜:Ô4ÔÃIÔƒ9Ѓ9°ƒ9ÀÓ™=˜=<=<;Ѓ9Ô4Ô:˜= =p=@C=@C=°C=˜=˜C=|=@C=˜=˜Ã“ÑÃI <˜;Ôƒ9°ƒ9Ѓ9Ð:Ѓ9 ƒI<;˜=˜;˜:Ѓ9Ð:°Ã“±=˜; ;˜<|D=dC=<™9 =<;Ôƒ9°Ã“±=°f<˜ƒ,ƒƒ1Ђ1(ƒ1Ђ1Ђ1(ƒ1Ђ2ü0-ƒ2-Ђ2Ђ1ü°1Ђ Ãpþ+ <Ð;°Ã“Áƒ9Àƒ9\1;À; Ã¿:¼:xñ¿:À;˜=˜:°<¼:Ð:˜<˜f˜;À; Ã£Ã;\ñ“½Ã£f <˜<¼;˜ÃÃ:\1:°:Àƒ9Ð:°:˜=˜; ;˜;œ:˜ÃL˜—±=\ñ“}C=@C=˜—ÑÃ;\±€BÀ;Ô:Ð:€’Ó;Ô4ÔÓуlу9Ð< ƒ9°<|=˜Ä“Ñ;˜=Àƒ9\1= ÃIÔ:˜=<= ; =\±9\±9 Ã7Ô:˜=˜= ÃÓÃ7Ðþ; Ã£Ã›=\1<\±9 = ÃIЃ9À;À;˜;˜=œ:°=˜Ã“Õ4ЃI°:\±9Ѓ9Ѓ9Ð:Ð:Ѓ9°C_˜;˜=˜=˜Ä7Ô4ЃIÐÃ7Ô;<Ù©¢ƒ9Ѓ9ÔÃ7Ô4Ѓ9Ѓ9ЃI°<|=°ƒI Ã7Ô:Ѓ9°C=@C=<™IÐ:œC=@C=˜=ÀƒI ÃI°ƒ9Ð:À;ÔÃ7Ô4ÐÓeC= ;˜; =°ƒ9Ѓ9Ѓ9|=˜Ã7ÐÃ7Ô4Ѓ6ЃIÐ;Àƒ9Ѓ9 ƒ9 ƒ9Ðã=˜:Ì:þ˜; =˜=˜:°:xq=@C=€:\±9 ƒ9°Ã“Ñ“m1ÈÁ“½:˜:°:¼:˜:Ðéš= ƒ9 ƒ9Ð;¼;˜:¼— (Ì‚9¼ƒ0°Ã;°ƒ9¼ƒ9Ð:°:˜ƒ£ƒ9¼;¼:°:°:˜Ã;˜ƒV^±9 ƒ9°ƒ9°ƒ9ÀÓ½:˜;Ѓ9°=|:°Ã;°ƒ9 ¿ƒ9ÀƒI Ã;<™9 1:°ƒ9<™I°C=@C=˜=˜<°=˜=˜C=|4ÔÃ7Ѓ9°ƒ9 ƒ9Ѓ9Ѓ9 Ã›=œ:°:¸+TÀ7Ì;˜þ=Ôƒ9Ѓ9ÔÃ7˜<ÐÃ7˜D=˜=˜= =@C=@C=°ƒ9Ð:°=˜:˜C=|ƒ9°=˜ƒÓÃIx±9°=|= ƒ9Ѓ9°C=˜=˜Ä›C=|ƒI°Ã“±ƒIЃ9Ѓ9 = C=|C=|;Ð:œ=˜=@C=|;˜;Ð:°:°ƒ9Ô4ÔÃ7˜;Ѓ9ÀÓ]1=˜:°:˜:ÈV=|C=|;Ð:˜C=|=˜=˜Ã“±ƒ9ÔÃ7˜=˜=˜=˜= =œ*= <|=@C=˜;˜=vÌ1ÈtØ1‡sØA‡zÐþÇzÌ¡v¢wÞ1ètÌiítÌ¡Ç vÌAÇvÌ¡ÇtÌa§vЩsè‰4tÌAÇœzZ£Ç,zÌ©'x–Ø1‡‚Щ‡z ©‡tªçvê1vÐ1‡žè‰zÌ¡‡ ¤î£‡ÐaǃFºhê1ˆzÌ©šzBtFbz ©ÇtÌ¡šzØ¡Çz¾vv¢Çz¾1ˆžoÌA‡ z¢çƒØA‡tZ£z¾©vÌA‡tè1‡sêɦsèA§sØ!ˆ‚èÙ‰tê1s bÇv¢ÇtØ1‡zÌþa‡vàIŒsèA‡ zÌ¡šz̪çzÌIÌzÌz ©çvÌA‡s#(±z ©‡zÌA‡s bg$zÌaxêÉsØ1xÌ¡sè¦vHc‡ tꦞlÐ!(±zÌA‡z ©ÇvÌA‡‚Ì¡zЦžoèA§sZC‡sŒA%”‘£µÖÞy'±wØyvÐùžÖÌù›wØ1wØ9‚NÞaGsà1‡sØ1‡tØ1žwÌ¡ÇvÌA‡ zÐ1‡vÌ¡ÇzØ1‡sàùxÌ¡'1sÐaÇtJ vÐIŒ wØA'ptþØ1ˆtØ1‡sà1‡žoê1vÐ1ç›z²©ÇzÐ6s¾¡´Ùù¦hê¡ÇzÌ1ˆxÌÁŽw°Ã  è=ؔĘ쨇9ê‘z˜ãô@=ÌAs Ãô@‡9Øaz˜£Ш4êat„ô€F=ÌAsÔõ0=Ìz°ƒì iBs„ì =ê zÔÃô ;àAz ô@;ÌAtÐÃô0=Øat|£ARÌAv|£è0G=ÐfŽz@ƒæøF=ÐFt æ@‡9¾Q‚°qü=¾Qz°Ãõ€=êþz Ãß ;ÌAvÔõ@=Ðaz ƒß ÚèGsÔõ ˆAêAz˜ƒaÇ7êÁsÔô0;ÐQs ƒè =¾QsÔƒæx<ÌsÐÃô0RÐAsÐÃì@;Rt´¦РAàx˜A=Âx°ô@=ЖtÀô€F=cŽz@£è0:ØQhÔãô€=ƒŽw°ã´0;ŽÀ 7 ƒIÌØ‚Ѓè`:ÌÑx ƒèH :Ø8v C¤ A”az ƒ õø=¾Ás°Ã ‰¡;èþŽÄ ƒæà9èat˜ƒæ ‡9èzÄô0=ÌAs #1ô@=ÌÁx Ã‰1:èz˜ƒô0;ÌQo°£h£‡9bv #1©‡9èÁsÐ#1æ ‡9èaz˜ì0ˆ9Ðaz„æ0È;ìÀŠ |ƒô0;èav  ì@;ÌQhÔÃõø†9èŽÄæ@‡9ÐÁŽz˜樇9èŽz˜ƒhƒ=Ìñ z@£ШÇ7Ðt˜£Р‡AØQl°ì :ê‘z|ãð0;ÌŽÄÔÃô€F=¾sÔõ@=Ø¡Jþ‚ CÀì ‡9èñ x h«‡9ê‘z˜ƒõø†9è¶z|ƒæ :èaz  :Ìz|Ãô ;ÌÁsÀƒß@Úèz܇Ш‡9èz@£‰1=’‚ ƒæ ÚØaxÔÃì Ç7þFƒÐãæø†9 bvÐÃè ‡6è xÄ‘Ш;Бs„怇ABs¼ƒè Ç7êz„ô@Aèz´Æô@<èavÔ#õ`AèAx$¤A‡9èñ v ãÆ@Ç;¶` = #pILàØvÐæ@Gbèatþ$Æô@Ç; ƒ°ï`Ç.ÇŽwÐÂõ€=ÂsÔô@;èqs Ãô0=ÌsÐÃô@=ÐfÒ|ƒA=ÌsÔ#õ@;ÐÁŽoÐè`:Ж˜oÐô0=Ìñz|ô`G= QÓãõ@;ÌasЃô€F=ÐvŸÄ¼nàDàÁŽz Ã‰1=Cz˜ô€Aèzô`=Ìz˜ƒh£‡€ÍQsЃæøF=HwÄ#õ@<ØaŽÖÀì@[=Ðat°ƒ ì@‡9èŽoЃè ÚÐt°þÃô@;ÐGz˜ƒæ¨G= Az˜ƒì0G= QsÐÃô =ÐÆt$æõ€ÚèAv|ƒè€4èñz˜£¡:èaz|ƒæøF=ÌQsЃA 4êvÔmô@G= Qt°õ H=ÐAsÐÃô0G=Ìñz@£æ GbbsЃߨÇ7èAtÐÃô0=cŽoÔƒ ì¨<ÐAsÔà õ =Øaz°ƒæ ‡9èÁèÌÁ èèÁàÐÌàêáè¡5І‚ÐÁØÁèÁÐÌÐþ‚ÐÁêÞ”Ìá”Á Þ¡5è¡5Ì!1ÌÌØèÁ ‡ÌØÞÐá@ÇÌÐÌÐØÁØ ƒÌèêáØ¾ÁêêÁêêÁèáÌ¾Ð ÐØZƒÐ‚ÐØÌÌ¡¾ÁÐÌÌ¢ T‰ØÌêÁèèáÌ¡ ¡Ð̾Á ê¡5èÁèÁÐÐØÁ8¡Ì) ‚ÐÌÌ¡¾¡²¡¾ÁèÁ þèÁØ!Žè!ŽÐÐÌÌ¡ ¡Î êê ¾ÁØØÃÐÌØÁƒÐÌ!1èÁ èÁèÁÐèÁ ¢ ¡ÌèÁèáÌ¡²¡ÌÐÌ¡ ¾¡è¡ ¡¾¡ ÌÐ ÐèêáèÁèÁؾêêêÁØÐ êÁ ⨠¡¾ÌÌ¡T Ì¡¾ÁСÌ!1èáØÁà‚Ìâ ¡¬ ¡Ì ‚ÌÌÐÁÐÌÐÁþèê êáèê!èáÐÌ∾ÁØèÌ‚èÁ èÁƒ¾Á ‚ ÐÁР¡‚ ÂêÁØ?ØØØê!êÁÐÌêáè ØØÁŒÞá˜Á ‚Ìá>à!1èÁØ¡¾ÁèÁèáèÁÐ!1Ð!1Ð ØÁÐáØA8aÐh̾¡ ÌØÁèÌÌèÁØêè ØáèÌáèІÐáêèÁêmèáê!êÐ ÐþâèêÁ¾¡ è èÁ èÁê!1 ÂêÌØÞ¡ âêЦ ¡ÌÌàA8¡ÐÂ8Ž N Ì!1ÐáèáêÌ¡èÁÐÌ¡ÌÌâÌàÁàÐáhÁè€èÁ '1ÐÁèÁê̶ èÁÐ èÁÐá辡 ZƒÌÌ¡ Z¢ ÌàÌáÌàÁÐÐÐÌàÌС þ‚ÌáèàáèáêA•èÁèÁØáØ èèÁ¾ÌÌ¡âè¾áèÌЦЂÐÁè!1êêè ÞÌÐ ÂèΡÌÌÌHãèmÐmêÁèÁêèÁê Ø¢ ¡Ì̡̡ÌЦ ¡ÌàÌÌàáèêèÁ¾ØÁèè‚ÐÁØÌèA•èÁè¡5ÞÞÁª@ÜÀèÌÌ̾¡Øáþè!êÁÐÁÃèÌþØÞÐA8ÌáŒÁ èáààmêêÁèê èÁ¢® ¡Ð ê ØÌ¡²¡ÌЂÐÌÌÌ ‚ÌèáÌØêmê С ¡âˆØÌê èÁÌ ) ¡ÎÌÐ!1ÌÌà ô*À‚Сªá¾Ì€²Á¶ÀÌÀ8ÁÌÀ ÐÌ€ÂÌ€Îa²a̶ ÎÁ æ 8 þ"@HÁtÁ ˆ! Á JØta ˆ!Ì` ÌÁ üàÌ æ€ ÁRAÐÁèáàÁ êáÐ!1èÁî#1Ì!1ÌØ¡‚ÌÐÌ¡5ÌÌÌ ¡Øè!1 ‚Ì¡ÌÐÁèІÌ‚ ¡ÌÁ èØ ê èê!ء̡²)ÌÌ ‚¾ÐÐèÁè?ØÁèmèÁÐÁØÁè!1ÌР¡¾ÁдІ ‚‚ÌІ ¡àЦ¾þèáÐA•ÌÌ ¡ØІС¾ èèmèࠡ̾ Ø¡¾Áƒâ¨ ¡ Ù ÞÁàŽ@Üà "1ÌèmèàmèØÌÐÁС¾¡¾ÞŽ€@Á ”ÌèÁêèÐàÁ ¢²¡ ‚ÌÌêáèØÁ¾¡ÌÁ Ì¡ÌÐÌÌÌÁ èáèÁ¾¡‚²¡ØÁ Ø¡ØÁè!êÁêè¾ÐÁèÁèÁèáêA•èÁþèÁ¾‚¾ØÁ ÞÁÐáoêêèáoàÁ8¡Ðì ¾aŽ€°Á:`4À€,áÒ@<á XÌÎa´AÌ T À@,á À@ Ž€ˆ`Ž€p`F >`4V€Ð!F > FÀ@< Àà,á pàÞáÐÁÐÌ‚è!ŽèèÁ ÌÌÌáèáê ê!êÁèÐÌÌØ¡ÌÌ¡ ¡ÌÌ!1¾¡ Ø êêÁèÁ èàÁ þÆèþÁèmààÐ ÐÐÌ¡ ¾Ρ  ÌÁqÌ¡ ¡Ð!1àÁêèÁè ÐÌèÁÐÌÐà!ê辡èÁèàêèÁè èè!1Ì¡ÌÌÌHã Ìáè!êÌáè!1ÌØÁ àáêèÁèmèÁÐÌØè¾Ì¡àÁè!pÐж@ìÌØÁè‚ÌЦ¾¡ÌÁ І‚¾ÐàáþØŽ€hÌÁØÁØÌ¡ ‚ÐÁØÌÌèÁÐÌІâˆ‚Ц ¡¾ÌÌÐ!1‚СÌÌT ÌÌ ‚ÐÌ∠¡¾¡Ì¾¡ èêЂèà è à¾ÌÁ ØÁàÁ X¡ ¢ØÌ¡ŽàV  `Ž€p@ª p ¶€p€ÌÊ¡¶` ÌÁ@p@ Ä€pÞaŽ€p`Žp`zÀ\`ŽÀX€àazÀþ\`ŽàpÀªáp@ Äp€"1èÁÐêáèÁêáÌÌ ‚ êê!Ð Ð¡Ø¾ÌÌÌÃêáØ¡²¡ÌØÌèáЂèÁÐÁÐ è èÌÐèmÐÌÌHÃêáêЂÌÌÌÌ¡ØÁÐ̾ ‚ #ŽêêÌØ ‚âÕ9tìÌÁC‡°Þ7s ÍÑkˆÎ:†ôÐÑCgî:væà!4WþÏ;võÌ!¬gŽž9vôÐÑ3:sõ¾Ñ3WZ=sìЙCgŽ^ChõЙC÷î1væ”(ÓóÎBtæèÕƒVZ½‘ Ö3G=sôFÒCÇÝ;vG8b÷Ž:zèØ19;†ôØÑËÎ=tôÌÑ3WÏ=sõÒ3Go=hô~«gŽž9zÍ4W=sôÐÁûF9tæè±cHÏ\=sõÐÁc÷Þ7zæØ™«‡.¦¹‘èè±3‡ÎÜHsôÐ4‡Žž9væè±{gN§æØÙcgŽÝ¶#ßTÈi°íÈ;R)ˆÑÕCI)0G¨1$¢ÄJ¶Ù^ÈêQE)þº¤`=+˜ÑÀ9(Â:+(aÄ6GЃCè!„ÛŽ.=q„.=TQ è°s…6ô˜SCô˜4ô ÓP=ÐÐÃ=èÀcN=æÔÃ<ìÐc=æŒT9у=æÔc=æ dÎ7ô c:ì C9è˜ÃŽ9ô C9ô°ÃP=ÐЃŽ9ô˜C:õ@C9ðdSOWßÔC9ô˜C;ôtÕU=ÐÐÓB ±c=æ°ƒ=æÐcN=S™S4õÐcÎHô09ì c=ßÐCO=æÐÃ:ï˜C;ßГM=ô S4ô˜C9õ@SBæ°c;èÐc=èÐcþ=ÙÔÓ;]±c; ±ƒ9õ@CCìÀÃP=æÐcN=ÐÔÃN=ð˜Ã:ì ¤ ;æláŒè˜C9ô˜ƒ;ð¼SO6õ˜C9ô˜C¡ ›Ã<ﰃΜЂÎ;ÆŒd=æ°C9ìЃ=è°c:æ°C9ô|ÓP=Ù°c:]ÑÃP=ßÔó9ð D9ô0„Cô@S9ìÐó <™CÏ7õ˜ƒ=æ c:ô S4ðt…=ß0„N= ¡c=è°cN=ßÔ“M=æ ÃCõ˜ƒŽ9ìЃ=æ 9z€R9¨Òc;æ°c:ì$…Î;æˆcÉèÄORð°þ“9ï0Ï;è04:”¿Ï;ð¼C:ð$e;ð ÃŽ9%ÅBïЃCð˜ó;I±ÓU=ߘS:æ C:æÀƒ< ÑM=„²c: Õ“Í; Õ“ :]±C9õ˜ƒÎHô˜ÃŽ9è˜C9õ|Ó4õ˜SO6õ ÃN=ßÔ ;æÄ„z˜쨇9èño@£ßh;êñ vÐÃð BàQhÔÃô0=ÌÁz@£è`‡9Òz0ô@‡9êz˜æ€G=²QoÔèøFCès°Ãõ0;tÀÃô€F=èñ sÐÃô@CÐÁt˜þ!ì@‡9èaz˜ƒæ :ØQsÐÃx1:àŽz0„ CÇ;ÐÁ‘ÐÃï`‡9Œ#,Cð :Ìs ƒè0= QoÐÃô¨4êAsÔÃô0G=¾at¼ƒ*(ÌZ ãô0=Ìñz˜Ù¨;ÂtÔô@=Øv˜£è ‡9èaŽz ¤+ì Ç7èax@£æ¨4êx˜ƒÙ¨‡9èaŽzd£æ`GCÐAsУ+õ`=ØaŽz@£ô@CØaz0„ «G6êaz|£Р‡9莆àÅèp':ÀsÐþ#y;àt¼å¨ÐÑt°Ãè`;ÐñŽw˜ì@GJÂŽ† Ãè0BØat˜è0Ç;Ìw°ÃèÉ;ÐÁv ÃxÁK= Qs|ƒ ¡‡9èaz˜£РBàÁz°Ãô@=ÌAv ƒð@CØT™ƒé =Ìs°Ãõ0=¾QhÐÃõ€G=Ìv Ãì0Ç7èaŽz ƒ¡GCèÑtÐõ€F=ÌQ†|ƒ ¡‡9Ðaz°ãô€‡9ØatŒõ€GCêaz˜ƒߨ4èÁs Ãè`<¾*v0þß ‡9êaz|£æ`CèÑz@£#A=Ìx|ƒæ¨4ÐA‘Ô#õ`‡9àaz°Ãô BèŽlÔõ0=FBBÑô`:èÁz £© a‡9ØZ¤T ÊÐ4èaz Ãô€ÇHèÁsÔð`H= z Ãèh:Âx¼ƒè8'hÁz(ãSAGCØQ† ÊôøBÌvÐÃ쀇9HhÔã ©Ç7èatŒÄì@G=FbxЃ!ð@;ºv0„è 4êat˜£æ Ç7ØÑz|ƒì@Ç7ÌAsÐæþ¨Ç7èz˜£ ‡9Øz|ƒè Ç7ÌQhÔÃô0=Øñ=°¢±:Øv˜c$èx:Þt0„ð@GJÑ‘Rx ƒï@:Þ1’wø:¥ìx<Ðñx°x;àaz˜ƒð0:ؼ ƒð`:Þ_ûšõÈF=ØvÐô0G=¾†°Ãõ@=ØaŽwŒÄô@4êa_Óƒ!ì ‡9ØAo0¤Р;èaz˜ƒæ€:ØÑzd£è`‡9 QlÐÃôÀ =ÌÁs°ƒ a‡9ØAo˜ƒè :‘0¤æ¨þÇ7ÌQoЃ!ôðµ9ØAsÐõÈ=¾Ázt…ШG6ê!nvÐÃè0=Ðñ t˜ƒß ‡9Øav˜ƒШÇ7èaŽz|ƒ =¾Át˜ƒô0;ÐÁsÔÃèh<Øav˜ƒæ@;ÐQhÔƒè 4êatÐï`‡9êz˜ƒô0‡¯»BhÔÃxA<Øx0äÆ@<”  7Äô0= Q† ƒ!ì@ÇHÌQs ƒ ©‡9ê‘z°ƒß0:ÞÁ"0‚æ`-BsÐô@C¾Qh4„ô0=Ìs°æ¨Gþ6êŽz@ƒ aÇ7ê‘ õ€ô€ A  AßPè@ì`ìàkæÀèPÐ@„‚*æP¾Æ¾Fæ@æð õ°0 A A Aè`õ€#QÐPæàkì€vÀ `¨BèÀè@ì€ô`ì€æÀððè`ï€ìðèÀï€æ0èÀ耾Æè`ïÀì`xaìÐð€ Aè`ìàkïÀæÀïÀß@æ@ì€ì€ A ñ õ ô`ìèÀìÀô€ì nì A æPÐPè`õ€æ@þ¾VÐ@ QÐ@æ@ì€ì€#A9ì¾ö õ`èð ô`ô`è`ô€ô`è`õÐè@æ0]ñ ôÙPÐP¾fô€ð õÀì€ßP Aæ@¾Vì€xAæð õ õÀô`âö õ0æ€ð€æÀßPÐ@æ0æ€æPæ@è@ß@è@ ñ ô`ô`ôÀõ`ô`è@ Qæ€æìÀx!nxÑõ`ô`õ€ôàkæÀßPè@æ€ô`ððè@ ìð [  f  ´` ´  ´` Æþ  Æ  Æ  ´` Ê@ ´` Ê` Ê  Æ@ Æ@ Ê` S‰•Æ  Æp¦Äô  Cæ@#õ€ì@èÀõð æ@æ@ ì@ßô`ô`ô`ðÀæ€æ@æPßÀæPæPæ€æð Aè@æì@æì@æ@è`èÐôÐô õÐô`õ õ@æ@æÀâfõ õ ïÀì`ðÀ Aæ@èàœPæÀô0Êð Ú@Ú@èð Ý  æ@ß  „߉ß© æ  ßù Úðè žß  ß  þ߀ßÐ ¤ ß© æð Ý@Úð Ú` Ô úÚð Ú  ЀÝð Ú`Ú èðè èÐ Úð ЀÚ@Úð ЀЀÝ€ßP Ý èÐ ßP Ú€Ú€Ú ¾¦ ЀÝ ž)ú Ýð)Š è èРР è è Úð Ѐ ¤ ß è èð ÚÐ èð è@Ý èÐ Ú€ Ô ßY Ú è è¢ê٠Ѐ݀ߠ ß  Ѐß™¢Ð€Ý@Ú`Ýð Ú€Ú è@Ý èÐ Ú èÐ Ê`ô Æ  S9•Êþ ¾VÐPß@]AÐPì@æ€MåkìèÀæ@ÐPÐ@èÀô`ì@æð æ@ Áæ€)e ð`J° vðèÀæ¾fè`ì`ïÀæ@ì`æÀÝjôð ôЭï@ÝŠæàk*À ´`ì@ æ@æ@æPæð ôÀæÀß@ßPàjôàkô`ôЭèðÝú õ ô€ìЭô`õ æð ô€kô€ô`ôàkßPÐ@æ€æÀÝêkàZÐPæ@æ€ôÀð€ðЭô`è`ô€æàkôÀèþÀô`ìðð`õ€ôàkô`ì€Ýêkì  Ðì€öÀï ýðcK¶ÿÐdÛý0¶û0¶ûÐdÛe»e;¶õðû°ý°ýðûðõðû0¶û@¶ý@¶iÛÿÐÿ°t»tûû0¶ýðûðû@¶ûðûÐc›¶tÛûÐûÐc»ÿ°ÿ°ÿ°;¶i;¶û0¶û0¶xûi»e»eÛx»ý€·ÿà»ûÐû0¶û0¶ˆ»d[tÛûP¶xûûðûðûðý€·dÛc‹·ý°t»ÿ°t»ý°t»ÿ°d»þc»ý°d»õðß`ï` õÐ­ß IYì`ì  Æ€•l Xi l l Ê` Xi Xi Ê` Xi |ÀÆpÀЀ#ákË`ðpÊàè€æð#aô€ôÀèÀæÀðÀè@ì€ææÀðЭ)ÅïÀï ¤À ì@Ê`õ õ õ`¾Fæ@àjè@XŒÅõ õ`ìPÙPèÀæ@è®ðPôЭõð ô`ô€ÐPÝJæ@æè@õð ô€ì@õ`ô õ@ÝJÐPß`ì€ô€àZß@þßЭ¾FÝJ¾fì®ì`ìàkôÀô`ô`ìà¬ïö€ôà ø€c›”P¶ýðø°cÛtÛ®kÌý`ÌÛcÛ®›¶ûÐÉ,ÍÿÐÓìºý@·ý@·ý`Ìýðýðý¹ý0Íý`ÍÖ¼õP¶ý0¶ýðýðýpÎÿÐó,Íý¹ýP¶ý¹ß@ï` ôÀ†€Ú  Æ`# ÚЭ#aèì€ÝÊð`ì`ìRÝúæÀèððЭèÀÅæÀÝÊõ ÚÀôЭÆ`ï Ê ï0ô€#ñì®#AÝÊæþÀæ0æ@ÝŠôð èÀè€GÀ ´Ù@ è`õÀèð ôЭè@ÝZæPÐ@æPæ@æP¾Æè`¾Æè`ôÀæPÙP#Ñ­ßPì õ ô€æPÙPÝÊèÀàú æð õ`è æàkðð ô`¾æ@æPÐ@ÝZæð ô`ô`ô`ßPÐ@àJæ@æ@æ@è`ô`¾fìàkv@ Эõ`è ù°r` ü@ ³@ zÐþ`¨€dÛdÛöœÌý ÝdÛÝýýÞãMÞcÛåÞÉÜþÓÜé=ÏßPð  ôÀ ÀÒà Ê@æÆ€xaìðÝŠÝÊæ0æ€#ì`ì€æÐT>àúÊ€#ñ´àk[  v nè`!nð€ßPì€ô€ô€ôÀèÀè€æPì€ì nBÀ¬ô` ìЭï@è®èPß®ì€ì®ÐPÙ@æ@ì@æÀô`¾VÙPßÀæ€ÝŠìPè@æÀèÀèÀô`ô`èÀô`ôЭìPôÀô`ìàkôЭìPß`ð€ô®ô€æ€ô õ@ÐPþ¾ÆôàkÝŠÝJXLæÀôÀð  P#aô€Òà)[ÓP oÔ X¹»Îë½îë¿ìÁ.ìÃNìÅnìÇŽìÉnìß@ï` ôpB Œ` ÊЭð` \ü %ÍíÝîí\Œæ` #ï` ì`J  z0ô`ô0ôЭô€Åè®è`ô€ôàk#Ñ­ô`)õìpœ@ ݪ æ@ì€ÅôPÐ`ô`ô`õ@è@ìPð`õàkÝ:è`è®è`ô€ð€ô`ô€ô®èæ@æ@¾fßPôЭìþЭô®ìЭõ ôð õÀÝJìЭõ€ôð õ õ`õ€æððЭô`è@ÙPè@æPÝJè@æàkæ€ìàœÐì`öÀæ ø€ýø Iðù°Qpî°tkø‡ø‰¯ø‹Ïøïøù‘/ù“Où•Ïøýð ö€Ë@ì€ ê Æì`ÊPÐð è æð è ß© ЀЀÐð Ú ôð è ߉Ðð è õ æ  è ߉Æàkï€Ë0[° fÀÝ:ÝÊè@ÝJè@æ@ìPÐPÝÊþß@ôÐTèЭì€B@ œ€æ` âìPÐ@è@æ@Ðõ²¡ûf®4xæÒC‡Ž;zèè™cGï!:v ëA«÷Í:vô>D§Ð=“èêA«gÒ\=sôЙƒ‡ŽÞ7…ôЙ£§Z=…èè}3÷9zèØ¡3‡žK…èêAƒgŽž9zìнÓéÂC{ôÐ)ÃÁL–|[’üË·%.[þÍ¥[×î]¼yõîåÛ×ï_À&\Ø0ÝoúÞƒ§›6eÆÐ±3g¬á·†è¾e†f­^7m¡µ}SfŒ^7eè¾ASÖ°ºn¡ÍA‹‡î[·n茽CÇΜ1þtæ”(sC:vôб£‡Î=“ô Õûï¡9zô ÁCgî!=tðнc׃­wðhÑ3GÏÜÆæÐÁCìðè0Pì`èÀæ`,BæÀ"è`ì€aì`¦aì`è`{¶g,ÙÁ"ô€ì€,Ò¦Áô€ì@߀J  rð¦Qæ€,’ô õð ô€A‰Ræ€æPß`èðìpŒ@ æÀ´À"þ£Qæ€Áñ ô`ì@è@ÐPßPÐPæ@,BßPÐPæÀæ@è`õ ô`ð€ð`ìð õ  ô`ôÀßPæ€æPæ`%ß@ß@æ@£Aæ`ìÐôÀèAAè@,bè`ßPÙPæÀ"ß@ðÐô`è@èÀè`,òzÀ `õ õ`ß@èPæÀèÀ"Aè@‰‚‰‚‰‚‰‚‰‚‰‚‰‚‰‚‰‚‰‚‰‚‰‚‰‚‰‚‰‚‰‚‰‚‰‚‰‚‰‚‰‚‰‚‰‚þ‰‚‰‚‰‚‰‚‰‚ß@ÐPÐ@æð ôÀæÀðÀÙPæð õ ô`ôÐèÀèÐìÐï€æðèðÇïÀLðÀ"è`ì`ïÀæÀe,bì@æ@ì`ô`ð`æ@æ@æ@æÀ¦Aì@æ@ìæ@¯Ê"è`ð`ôÀè`è`ì`ì€ô`ô`èÀ"æÀïÀ[  v€ì0ô`ô`ô`ôÀõ õ`õ õ€ô`ô`ìÐôÐìïÀèp†@ æðÊÀ"ôô`õ`õþÀæ@ÐPæ€õÀôð èÀ"è`ô õ`è@è`õ`ôÐð€ì`ôð ô`ôð ìô õ õð £AßPßÐô`õ õÐô`õð è@ß@èÐõ õð ì`ô`è@߀ì`ìPÁõ`õ õð æ@èÀ"æ€zÀ Àðð,‚ì`ì`ô€,bæ€æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@þæ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@æ@ì€ð@è0%èÐô€æ€õÐõ õ€ð õPÐPæ@æ€ô€æ@è`ï`ì€ì`æ€ì`èÀè`,BèÀï`ì@þ£AæÀèÀô€æ€ÁAÐPç@è0èÀæ@æÀæ€æ€Á"æðªè@>ìì@è@AÐPæ@æ€ì`J  zÀô`ô õ€£Qß`èÀôð æ@ÐPè@Aæ@ß`èðì œ ,B £AæPif¦æÀ£Á"ô`õ`ð€õÐì€iFQè`èÐìPÐPæPð`õÀè@ÙPæ`ìÐõ0ôÀõ ôð æð ô`ß@æ@¦aô`ô`,bôþ`ôðæ@ìÐßPæð æÀèð ô€ôÀ¦ïà¬Ðì`è@gõ ô`æ@ì`õ õ õÐßPÐPñ õ õÐßPÐPñ õ õÐßPÐPñ õ õÐßPÐPñ õ õÐßPÐPñ õ õÐßPÐPñ õ õÐßPÐPñ õ õÐßPÐPñ õ õÐßPÐPñ õ õÐßPÐPñ õ õÐßPÐPñ õ õÐßPÐPñ õ õÐßPÐPþñ õ õÐßPÐPæÀ"A£A£Á"ÁïæÀõ€æÀðЦÁèÀèÀ"ð`ð`ô€ì@è@¦A,Bì€,>æ€ì`,‚,Òõ õ@æPì`õ`õ ô€ô€ô€ìð ôÀ"æPÙP,ò õ@æPì€ôð õ`%æ@ìÐè õ€æ@èèaï`[  f€Qè@ÐP£Áæ@ì€ì`ð0è@è`ß@ððì€BÀ ´`ô  ìPÐPÙè@æ@æPôÐþô`ÀDiÆæLô`ð`ô`ô`õ0õ õ`ô õðñ ìÐì€ðÀè@ÐP,Òõ õð æ@èPæ@Q߀A¦ÑàÃæPß`èÐô`ôð æ@æÀôÀ"£A£Av ð ݰЀïÑ ¦ñïÑ Ð€Ú`èð Ú€ЀÚ`Ú€ЀÚ`Ú€ЀÚ`Ú€ЀÚ`Ú€ЀÚ`Ú€ЀÚ`Ú€ЀÚ`Ú€ЀÚ`Ú€ЀÚ`Ú€ЀÚ`Ú€ЀÚ`Ú€Ðþ€Ú`Ú€ЀÚ`Ú€ЀÚ`Ú€ЀÚ`Ú€ЀÚ`Ú€ЀÚ`Ú€ЀÚ`Ú€ЀÚ`Ú€ЀÚ`Ú€ЀÚ`Ú€ЀÚ`Ú€ЀÚ`Ú€ЀÚ`Ú€ЀÚ`Ú€ЀÚ`Ú€ЀÚ`û è°è  ЀڀЀÔþ ÚðÚ°øÝð Ѐ‹Oí݀݀Ýð Ýð éñÝ  ß°•ÿ èð Ú`ï¡ æ°øÝ€Ý  Р ï¡è  ß  ЀЀЀûñèÐ ûaÝ ÚþЀé Úð Р ЀÐPéñ ЀÝð ÝðЀÝðÝ Ê ïæÀèì@è@è@æ€ô`ì@æ@Áô€æ€a®ž¹zßÌ¡{Çî(PìÎÑ2Ç=tð Õ3÷­4sìб3WZ½oõÌÕ£Ç9zìЙ3WZ=hõÐÁ4G;xæà¡«g=sôЙ£·&=tð`Òc‡î:sôÌ¡ƒÌzÐèÑ3·“9zæè™£‡ÎÜ7zè虣‡Î=sô̱C³´z0w¢Cç†Stì¾¢£g®;sß虣¸ž9zèÌ¡£gþ®ž9zè虫gŽ:zæê™£‡Žž¹zæè¡£g®ž9zè虫gŽ:zæê™£‡Žž¹zæè¡£g®ž9zè虫gŽ:zæê™£‡Žž¹zæè¡£g®ž9zè虫gŽ:zæê™£‡Žž¹zæè¡£g®ž9zè虫ÇzСǜzÌ¡zÌ©ÇzСǜzÌ¡zÌ©ÇzСǜzÌ¡zÌ©ÇzСǜzÌ¡zÌ©ÇzСǜzÌ¡¯êA‡zØ¡§tè1§tÌ¡t茱̩žzÌ¡ÇzÌ¡zØ1‡sØ1‡vÌ¡G,zv¢‡tÌ¡ÇzþÌa‡sèA‡zØAžÌ‡tèÌzv:§žwê1§tê1‡vèÁé+tØ©‡zЩÇvàA‡xà©§xЉtê1g'zØ •xÞy-œ1sÄ2ç›zpú¦s¾©sСǜzp¢'˜ØAçvÐ9‚ZСG±Ø1§sv¢ÇœzØ¡z¾¡g'œ¾1‡s覞̇tØ1zpbÇvÌaÇvÌA&vèAÇvꉞoè1§hê1‡sÐÙÉœzÐ&zÐ1§hê1‡ÀÌ¡šzÌ¡ç˜êéÆœz¾¡G›zÌ¡Çz¾‡þtØ¡zØyGV*@ÇtèA'vèAÇœz²¡&tØA‡žoØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØ1‡sØÁI,eÍaÇvÌANØAoþ˜£ߨG6Øav˜æ@LÃŽz˜£æ¨Ç7èsÐæ@;ÌÁz Ãõø;”EhÔÃì0=ÌÁs ƒß`=ÌÁŽz|8a‡9ØatÀ„æ`<`Ât˜0ì0;Ðaz cï``Øav £ߨ`ÞŽ#(Cï`:ØQœÔõ€ ;`Âs 'õ€F=`BsÐÃô0:ÞÁ!p‚æ8-ÐÁt°'õP:Бz°C’ô0=ÌAt˜C’ðø=vbtÐÃõ€F= Qv 樇9èÁsÐÃõ0<²Q˜|þ£æ`‡9Ðaz˜0¡:ÌÁs°ãõ`:ÌvÀ&õ€=$‰sÔõ0G= Aœ ƒ8‘$=`BI„èp':Àtàæ :`‚vÀæ ‡XÌQtЃè`‡$éÁt°C’ô`:Ø!Iz°ì$=ØvH’ì@;$Iv ƒ’¤;ÐÁIÒƒè`‡$éÁt°C’ô`:Ø!Iz°ì$=ØvH’ì@;$Iv ƒ’¤;ÐÁIÒƒè`‡$éÁt°C’ô`:Ø!Iz°ì$=ØvH’ì@;$Iv ƒþ’¤;ÐÁIÒƒè`‡$éÁt°C’ô`:Ø!Iz˜ƒì0G=ÌAt˜£Ù¨=ÌAv˜c'0Ù <ÐÁsÔÃõ€F=è±?œ|£æ$=ÌAsÐʪ4êAtÀõÈF=ÌÁŽoÔc'0¡LÐv˜ƒè`:Øaz°Ãôd= A˜ƒ;1=Ä‚sH’쀇$éÁsÐ'ô@ǵvbv(Áf$=Ìñ z°Ãì¨Ç7èaz˜ƒæ¨4êat°£0©4êt¼ƒè'hŽwô@=ÌÁœÀc'ô@;ÌÁs 'þõ€F=ØAsÐC’ôÀ ;Ìz ãè`‡9èñ œÐCYè€;ÌÁz|Ã’d<ÐavÀ×¢‡9èñ s°ô@‡9vbx ƒì Lè±sÐ;©4èñz˜ƒ0¡:èz˜ì ;ôŠ ìô0=ÐaŽz˜ƒ0Ù =¾az( ô0=ÌAtÐÃô0=ÐAsÐÃô@=ÌAsÐô0=ÌAtÐÃô0=ÐAsÐÃô@=ÌAsÐô0=ÌAtÐÃô0=ÐAsÐÃô@=ÌAsÐô0=ÌAtÐÃôþ0=ÐAsÐÃô@=ÌAsÐô0=ÌAtÐÃô0=ÐAsÐÃô@=ÌAsÐô0=ÌAtÐÃô0=ÐAsÐÃô@=ÌAsÐô0=ÌAtÐÃô0;ÐAsÐ'’T=`˜ Ãõø=ÐQsìÄô0;ÌAoÀƒß0=ÌAsÐÃôPLêz|Ãô0G=²AvÐ0¡Ç7бtÐãæ@=$Éz˜£æ@<ØAsÐÃ;1‡$ÍÁsÀ£è`=`BsÐæ¨G6êqŽÀd'æ`:Øaz˜£Ù¨þ‡9ØŽÀÃðØÂ2ôðv˜ƒШ‡9Øavà„Ш4êñvÐ&ì0=ÐÁIÒ&èx;ŽÀv˜Cì€ :èaz £РLèÁt˜£Ш:vs°C’8‘$;àvÀ„è ‡9ØavÔõ@Ç7êAvÀäõ€‰¯0z`˜ v€ z`I z0zØ ˜ s ‡o œØ I‚ t`t0v€t0‡z€zø†z@s@v0z0tØ 7à„`s¨h tPv0‡z€†z@v@˜¨‡l¨sø†z€ t0‡o¨˜@sþø†z€ t0‡o¨˜@sø†z€ t0‡o¨˜@sø†z€ t0‡o¨˜@sø†z€ t0‡o¨˜@sø†z€ t0‡o¨˜@sø†z€ t0‡o¨˜@sø†z€ t0‡o¨˜@sø†z€ t0‡o¨˜@sø†z€ t0‡o¨˜@sø†z€ t0‡o¨˜@sø†z€ t0‡o¨˜@sø†z€ t0‡o¨sø†z€ t€‰z0zȆz s s@zøz`‡o¨h t€ vئo¨œ`s`s¨h¨‡¬3z0z`s`‡z€†z0t`þs€‡m2v@‡ v@s@s¨s ‡o I‚ v h¨s@v@s¨s s ‡À tø†z€ I2‡€s€s¨±0z0zø†zÀ x0v@zØ s`‡oPe0˜@‡z@˜ s s¨I‚v¨˜øz0z0v0v@z€†z`xxv@‡#àZ@sP†0‡zøs ‡o€I2z@v ‡o¨v0t`s`z0z@v s ˜ s`tÀ v¨h¨s¨v0v0‡o@z¨œ@s@˜ s t0z0t0þz0‡z0‡z€†zø˜ ‡zø†zøv0I¢s s t s@v œ s$zøs`z@‡€ I¢;à„ € Ibz0z0z¨‡l¨v0t ‡zÈz@v0vPzÈ:zÈ:zÈ:zÈ:zÈ:zÈ:zÈ:zÈ:zÈ:zÈ:zÈ:zÈ:zÈ:zÈ:zÈ:zÈ:zÈ:zÈ:zÈ:zÈ:zÈ:zÈ:zÈ:zÈ:zÀ z€†z0z0z€†z0t`s$˜ s$zøt€s s s s ˜ s t¨‡o0t`t t¨s¨h¨h¨sþ`s€‡w`s¨˜ z0z0v0tØ zÀ t h¨‡l¨v t€±ø w4z@z0zÀ t h¨s`s`s`˜@v I2z€x@zøz0z€†z@z@z@%P=€v0‡@s h¨‡oØ t`s`t¨‡o€ z@z0z@‡zØ ˜@‡w``ˆw8Z`e©‡o s`z$œ`s`s t sø†z€zPt s$z€s txxÀ v0z`‡z€†o0v0‡zȆz0z0‡mʆz0‡z€†zÀ þv0‡zȆz`t0‡o¨h t`zȆz$v€ t s¨h¨t ˜ v0z0t€ z`t vxtÐPèt v eùt0t`s ˜`I¢v0z0z0‡z€z0z0‡z€z0z0‡z€z0z0‡z€z0z0‡z€z0z0‡z€z0z0‡z€z0z0‡z€z0z0‡z€z0z0‡z€z0z0‡z€z0z0‡z€z0z0‡z€z0z0‡z€z0z0‡z€z0z0‡z€z0z0‡z€z0z0þ‡z€z0z0‡z€z0z0‡z€z0z0‡z€z0z0‡z€z0z0‡z€z0z0‡z€z0z0‡z€z`t€vÀ x@x0t ‡o¨˜@z$z€ v ˜ø†z€z€‰z€z@s@‡o0z`z@z@œ t t`I¢‡o¨v€ v€s ˜@s@s¨s¨h s ˜@x`tȺo¨s@h¨s¨z0‡z$sø†z€z0‡z`t s$z0‡z0z@zø†z€ x@‡z€ t s@‡O t0t`‡-þP3€ z`s ‡múz`t s s`s¨h¨t0tP–0xxv@‡#àRˆ‡wPv s h¨‡o$v h¨v s s ‡o0t¨h¨s@x¨s s¨‡o ‡o`s$s@s`z0t t€ x¨z0z0x€ t¨h z@v@s€‡0z@z0t`t0z0‡€v$xÀ z0z€†z€ txe¡‡o¨h¨s€v$zÀ z@7à„ À‰z€†P zØ t€ z0z0v$s t¨‡l¨t€þt¨‡l¨t€t¨‡l¨t€t¨‡l¨t€t¨‡l¨t€t¨‡l¨t€t¨‡l¨t€t¨‡l¨t€t¨‡l¨t€t¨‡l¨t€t¨‡l¨t€t¨‡l¨t€t¨‡l¨t€t¨‡l¨t€t¨‡l¨t€t¨‡l¨t€t¨‡l¨t€t¨‡l¨t€t¨‡l¨t€t¨‡l¨t€t¨‡l¨t€t¨‡l¨t€t¨‡l¨t€t¨‡l¨t€t¨‡l¨I¢‡o@z0z€†z0zøv h¨s h¨‡l@s ˜$z0þ‡m¢‡o€t`‡z€z`7¥t¨s@v0z0vÀ v ˜ h¨s s ˜`s€t€s s ‡o`z0v¨s¨v€ v¨œ€tÀ‰U6t€v€ v@v s¨‡opSœ ‡oÀ‰zøv€ ùbs8eЃw`s@‡ v œ`t0±0x ‡o€‰z0v s¨œ@‡w`!àZ0z …z0x@z0z0z$z0‡o¨e¡˜xx0v¨h€ t€h sXes s ‡€‰zȆz0‡Èºz€z€ v€tþ0z0z`‡o s`˜@s ‡0t v@˜ v€ z0Iªx0‡ t¨h¨tøx`‡zȆz€zÀ t`tØ =…ø†z@v¨h0‡@s¨‡l¨sè†z€ z0z¤o0tØ œ@‡À tØ œ@‡À tØ œ@‡À tØ œ@‡À tØ œ@‡À tØ œ@‡À tØ œ@‡À tØ œ@‡À tØ œ@‡À tØ œ@‡À tØ œ@‡À tØ œ@‡À t`˜ s s¤z0v0z¤z€z@x0‡z0þz$z0z€ z0z0z0v0v¨t s¨z0z0‡z€˜Ø s s`t s¨h t€t¨h¨s@z@zØ s¨h¨Ibt¨h ˜`˜ œ`z`‡z s søt0z@z0zØ ea‡z€†z s¨s s ˜¨z0‡o v0‡z ‡kA‡wØ‚e0ƒz$zÀ‰z€z@z0z0‡z0z`s@z0‡z€zÀ‰o v€‡w`t†@x0t0v@s@v0‡@e©s¨h¨s@s ˜ø”z€þ†z`x@s$e©sØ t؉z€†z0x@v0x¨tØ ˜¨‡o@˜ Iªh¨‡0t0z€†zøz$˜¨e¡‡o0‡ ‡o€‰zØ t0v0x`‡Oaz0z@v@v@7`… øv@s€z€s s`t`t ‡o€ tPz0z0z0z0zsôÌÑ3GÏ=sôÌÑ3GÏ=sôÌÑ3GÏ=sôÌÑ3GÏ=sôÌÑ3GÏ=sôÌÑ3GÏ=sôÌÑ3GÏ=sôÌÑ3GÏ=sôÌÑ3GÏ=sôÌÑ3GÏ=sôÌÑ3GÏþ=sôÌÑ3GÏ=sôÌÑ3GÏ=sôÌÑ3GÏ=sôÌÑ3GÏ=sôÌÑ3GÏ=sôÌÑ3GÏ=sôÌÑ3g®Þ·zæØ96‡Ž;zßàÁc‡Ž9vè×ûf®´zŽÑ™£‡Ž^etŽ¡ÕSM™6hÚ )Ó¦ š2hÊ )Ó¦ š2hÚ”aSM4eДAS¦Mš2hʰ)Ó¦M4xôÌÑC‡Žž9óæ¾U®—­žctæÐ™£‡Žž9zŽé±3÷­r=ÐÔãØ7æÐcžcß C:ìЃŽ9J(£‡cì SÏ7æÀƒ;æ Sˆæ°ã=èÀƒN=æ˜ç:ï°Ó'´`Fþ fì˜C9ô˜C;æÐc=•±Ï7ôÔh=æ`9õ@C9õ@C9õTF9ô8Æ=æ°c=è°S=æÔcÎ7ôÐcŽyæ°ó:ôdS:ô˜S:ŽÑc=æÔ =æÔã=æÐc:ô°ãXô C9옃N=РC;æÐƒ=vÐ=ì˜C9è|S;è˜CfèÐcN=æÐc=Ž¡ã˜yæ ã˜yæ ã˜yæ ã˜yæ ã˜yæ ã˜yæ ã˜yæ ã˜yæ ã˜yæ ã˜yæ ã˜yæ ã˜yæ ã˜yæ ã˜yæ ã˜yæ ã˜yæ ã˜yæ ã˜yæ þã˜yæ ã˜yæ ã˜yæ ã˜yæ ã˜yæ ã˜yæ cÎ7õ€ø =ì˜C9ô ã=ޱc=æÐbð˜ƒ=昗M=˜ÑM=œ9Š=ûüsÏ~í³zø1´~ í3-Ð8†Ž9ì 2Æ(s5ÖÆ£ -Ð(C‹2´@CËÕÆ`}¶1Xs¶1WCS9蘃;æ°³Å2f˜COeìÐcN=ÐÔCfõ@S9õ˜S;æ ÃŽcßÐc=ìÀó;èa-è¼c :ìЃŽ9æ9F:õ@S9ð c=Ž™‡;ޱc;æp†Ž9ô ÃŽcô˜çØìè`F4õþ˜ƒ=•9F4æÑc=æÔcŽyì8†Ž9˜¡c=ÐÔó =æ9oŽyæÔó ;ô˜C9õdƒ;æ9;è˜CcèÀcÇ,:ð s°ì Ç7ÌAÇÔ㎡4àŽz@£æ G=CtУŽ¡:èQÇÐô¨‡cèzÔÃ1ô@=êáz ƒõp =ÐAz8†è G=CtУŽ¡:èQÇÐô¨‡cèzÔÃ1ô@=êáz ƒõp =ÐAz8†è G=CtУŽ¡:èQÇÐô¨‡cèzÔÃ1ô@=êáz ƒõpþ =ÐAz8†è G=*Sh¨éè ‡9Ðá˜z8†æa:Øaz˜ƒæ ‡yÌAs ƒô0G=Ìs £ì0:Øaeü£¾ìÇ?þñË_þc˜ýø‡1Ì~ü×ÁüÇ/¯†z˜CMÚ0Ç>²©mê£õÐÇ>ê¡}l³ûØf=üÁÍ}l³ûàæ>¸¹Í}ô£Ê`=ÌÁz8F ÊÐ;ÐÁz ƒè0G=ØatÔ#õÀÌ7*Cs°ƒæ GeÐát¼ƒGà(Øe°Ãõ€F=²QhÔÃ1ì@=Øav ãõ@=ØAóÐô0þ=Ðav˜æ¨Ç7êáz ƒæ ‡9èaóÔãô`‡9èaŽz˜ƒ訇9ê z|Ã1˜¡‡9èaz`Æô0<ÌÁtÐÃô0G=ÌQÊ|ƒŽ19Øz ƒô0=ÌCs Ãô`:ÜÀ‰°Ãõ`‡9¾AÊÔô`<ÐQǰæ@G6ê z8&õ€=“z@ƒŽÉF= AÇd£Р‡c²QhÐÃ1Ù¨4èá˜lÔôpL6ê z8&õ€=“z@ƒŽÉF= AÇd£Р‡c²QhÐÃ1Ù¨4èá˜lÔôpL6þê z8&õ€=“z@ƒŽÉF= AÇd£Р‡c²QhÐÃ1Ù¨4èá˜lÔô0Ç7à z°ô€:ÌQhÔô`Geà5™ƒè¨4ê z˜ãô0=ÌAǰÃì0:ÃŽw°”ÐÆ3£,å)SYÊý ò>ž© RУ2è0F=Ô$æ1“™Ìç <È,2³™´€=Øv Ã[p†ÐAÊ £2ì¨ :0ƒ5A£è0G=´AÇÐÃô`<ÞÁt¬`‡9”áxÐ쨇9Ðat°Ãè`‡šÎgz˜æ@GeØþAsÐCÕŽ©Ç7ÌÁs 3æ`‡cêñÊÔ#˜1‡yêz˜ƒæ@‡9Ðáz Ãôp ;èñ t°Ãô€F=¾5}£æ 4êaz˜ƒŽa‡óêz8†èÐÃ,:à¼z˜£Ш‡9èas°Ã1ô@=ØAt°£橇9ØQóÔÃ쨇yêavÔÃ<õ0;êažz˜ƒõ0O=ÌÁŽz˜§æ`G=ÌSs°£橇9ØQóÔÃ쨇yêavÔÃ<õ0;êažz˜ƒõ0O=ÌÁŽz˜§æ`G=ÌSs°£橇9ØQóÔÃ쨇yêaþvÔÃ<õ0;êažz˜ƒõ0O=ÌÁŽz˜§æ`<ÌChÔè0;CoÀƒŽA=ÌAhÔÃ1è¨ :èažz˜ƒæqL= QÌЃô0;ÐÁz˜ƒÊøG2coÌ}ôc±ÿ‡ì}™ÍepÂ<õÈF=Œav¼ƒæ ‡9ÞAvÐãÎ=ØñzÀƒÏw¾šØqýw°ƒæ€;èaÌ€è0:èsAzÀL= AÌÐÃè`=0ƒv˜õ`GeÐ4Ô:Ô4À:8:¼;)Ð;¼-À;˜Ã7ЃcÔ=˜=˜:Àþ4Ѓ9Ѓ9ÐCeЃ9Ѓ9ÔÃ7Ôƒ9 =˜=˜= =8=˜=˜=˜=|C=TF=8;À:°ƒ9ÐÃ;°C=|=˜C=@C=Ѓ9Ô:˜;|=˜C=@=Ѓ9˜=|=8:@=˜ƒyÀƒ9 Ã7ÔfÔ4Ô=Ô<˜; ;¼ƒpB˜=˜;8;Àƒc =dC=˜=œ:°Ãù Ãù Ãù Ãù Ãù Ãù Ãù Ãù Ãù Ãù Ãù Ãù Ãù Ãù Ãù Ãù Ãù Ãù Ãù Ãù Ãù Ãù ÃùÀ; ƒ9Ð:ÔCeÐÃ7Ôƒ9 þ=|=˜=TF=ÀƒcЃ9ÐC˜=œ:˜;Àƒc CeÐ:°:˜;0‚4d“:®#;î*lÀC?ìC?¬£:Öƒ=Úc?èƒ1€‚9`:˜ƒ1Ô;8f¼ƒc°ƒc Ã7‚” T:˜Ãì˜f ;ÌŽcÐCeÐ:˜- CÔH(ƒ°:Ѓ9Ôƒc°:Ѓ9 ;˜=˜C=T=˜=˜<8;Ôƒc°<¼; ÃP'˜=ÐfÔƒ9`:°:8:Ð4Ô:ÔƒcÔ4Ôƒ9ÐCeÐÃ7°ƒó ƒ9Ð4Ô4Ôƒ9Ѓ9Ô4Ôƒ9þ ƒcÐÃ7˜=TF=|ƒ9Ѓ9Ѓ9 ƒc°ƒ9°ƒ9Ô;˜Ã78= C=˜C=dC= ƒ9Ôƒc ;˜= =Ô:`=˜;ÐÃùÔ;˜Ã7ЃcÐ:Ѓ9˜‡ÌBЃ9 =˜:˜C <°ƒcÔÃ7Ѓ9ÔC6Ôƒ9Ѓ9Ѓ9Ð:Ѓ9Ѓ9Ð:Ѓ9Ѓ9Ð:Ѓ9Ѓ9Ð:Ѓ9Ѓ9Ð:Ѓ9Ѓ9Ð:Ѓ9Ѓ9Ð:Ѓ9Ѓ9Ð:Ѓ9Ѓ9Ð:Ѓ9Ѓ9Ð:Ѓ9Ѓ9Ð:Ѓ9Ѓ9Ð:Ѓ9Ѓ9Ð:Ѓ9Ѓ9Ð:Ѓþ9Ѓ9Ð:Ѓ9Ѓ9Ð:Ѓ9Ѓ9Ð:Ѓ9Ѓ9Ð:Ѓ9Ѓ9Ð:Ѓ9Ѓ9Ð:Ѓ9Ѓ9Ð:Ѓ9Ѓ9Ð:Ѓ9Ѓc ;Ѓ9°ƒ9Ô=œ= ƒ9 ƒ9ÔCe`:˜:8F=d=8= =˜=ÔÃ7˜= ;Ôƒ9Ð:ÐÃ7°< ð-)¸<èÃ>ª Öƒ1€fÐ; ƒ1Ѓ󠃪±Ã d4¤ Àƒ.l1|ƒ!lA)dƒÀ:¨Ú78Ï7˜(Ôf˜‡(ƒ°ƒ9 ƒc˜‡9Ð:Ðþƒ9ÔÃ7T;ЃcÔÃ7 ;Ѓc`F=|ƒ9 Ã;°€- Ã9(;8; ƒ9Ѓ9Ѓ9Ô;˜‡9`:˜; ƒ9 C=@C=˜:˜=°C=@C=˜< C=˜C=Tf ;˜=˜C=8F=@=°ƒ9|= ƒ9˜;8=°< ƒc°ƒ9|¡ª¡;|C=@=˜=˜= Ã7 ƒ9|C=°ƒóЃ9Ð:°ƒ9°Cñ Ce ;ЃpB|C=8<°=°:`†9°ƒ9Ô4Ѓ9 ;Àƒ9 Ce°Ãù°Ãù°Ãù°Ãù°Ãù°Ãù°Ãù°Ãù°Ãù°Ãùþ°Ãù°Ãù°Ãù°Ãù°Ãù°Ãù°Ãù°Ãù°Ãù°Ãù°Ãù°Ce|=°ƒ9Ѓ9˜f|C=˜Ã7Ôƒ9Ð; C=@=|C=@=˜=˜=˜C=@C= ;ÀƒyÐÃ7Ô4Ô48=˜=T:˜Ã7Ô;˜Ã;˜#HC=ØC=ØC=ØC=ØC=ØC=ØC=؃=ì@¬@)à€=„ƒÁ4ÃèƒóÚC=ØC=ØC=èƒ=Ôƒ=Ôƒ>()˜:˜:¼ƒ1Ôƒ6˜‡6|ƒ6|þ¢Ã7hƒ Pƒ8|HÃHCdÃtƒ5€(XBà/þ¢4˜ƒ6 ƒ6|ƒ9 þ)°:°:°Ã;°Ã,ƒ°:ÐÃ7Ô=˜=8Æ7Ô4|¡9Ѓ9˜‡9|=8; = ƒc°<¼; Ã0Â, ;:Ѓ9Ð:˜C=@C=d:Ð;Ѓ9°=˜=8= = ƒ9Ð4ÔÃ7À=8;8:Ôƒ9Ôƒ9°C=@C=|ƒcÐÃì|¡9Ѓ9Ѓ9Ôƒ9ÔCe°=˜f 4ÔÃ7Ѓ9Ôƒ9Ѓ9Ѓ9À:Àƒ9˜‡9Ð4Ô;8;Ôƒ9Ð:°:Ð4Ôƒ9ÐfЃ9À=˜=8Æ;è+T€c ƒ9Ð:ÔC6Ôƒ9Àƒy˜ƒyÀþƒ9°ƒ9°= <°C=˜= <Ð:Ѓ9À:Ð:Ѓ9À:Ð:Ѓ9À:Ð:Ѓ9À:Ð:Ѓ9À:Ð:Ѓ9À:Ð:Ѓ9À:Ð:Ѓ9À:Ð:Ѓ9À:Ð:Ѓ9À:Ð:Ѓ9À:Ð:Ѓ9À:Ð:Ѓ9À:Ð:Ѓ9À:Ð:Ѓ9À:Ð:Ѓ9À:Ð:Ѓ9À:Ð:Ѓ9À:Ð:Ѓ9À:Ð:Ѓ9À:Ð:Ѓ9p†9Ô4Ôƒ9Ѓ9°=°Ãù CeÀ:ÐÃ7Ð:ÀÃì8<ÐCe°ƒ9 =@C=þ°gÔÃ7 CeÐ4Ô=|ƒ9°ƒ9Ѓ90‚4t¯_ÿµóÒ Ã ÔC:`ÔC8l=Ô`ÓÃ_Ã2pÂ;À; <=t4 þ¢ƒwtþjˆB7hpChƒ hƒ!°À"à@T'|C7x‡y|4 Ã7hC7 'Ð:Ð:`†9(2¸=˜;8:˜=@C=˜‡cÔC6Ð:Ð:Ð:Ô4ÔÃ7°=T:¼;'pfÐ;˜:ЃcÐ:Ð:°ƒc|C=|C=dC=@=°ƒc ƒ9°< =°ƒcÐ:˜= ;˜=Tþ;˜; Ã7Ѓ9ЃcЃ9 ƒ9 ƒ9 Ãù°:ЃcÐ:À;Ô4ÔCe°ƒ9 ƒ9°Ã7ЃcЃ9°:ЃcÐCe°:˜:`F=˜:˜C=@=°ƒc ƒ9 < ƒ€B°C=@=|ƒcÀf|=˜=°=|= =8=œ=˜:˜:˜C=@C=˜:˜C=@C=˜:˜C=@C=˜:˜C=@C=˜:˜C=@C=˜:˜C=@C=˜:˜C=@C=˜:˜C=@C=˜:˜C=@C=˜:˜C=@C=˜:˜C=@C=˜:˜C=@C=˜:˜C=@C=˜þ:˜C=@C=˜:˜C=@C=˜:˜C=@C=˜:˜C=@C=˜:˜C=@C=˜:˜C=@C=˜:˜C=@C=˜:Ѓc ;ÀÃ7Ô4ÐÃ7Ôƒ9Ѓ9Ô;Ô4Ôƒ9Ѓ9°ƒ9°:°mœÑ&pgœ‘qg´‘Fþi´ |=mäÆÈÌaÇvÌÙÂ3ÌAtÌaÇ£…Ø1g!tØì›oÌÇz´ÁäcqÈq´a¤A¤Aœ<¤<´aÈôØÁÐÌÐá”AÞÐa!ˆ2(èá(¢ÌRe!èÁêÁèÁ#ÐáØá‚èÁ#¾(‚(¢ þP‡"èÁèa!àÁØÁÐÌa!(‚Ì¡Øà"†ÃêÁèÁ#¾¡ÌÂê„ÞÌ¡ ÃêЬ‡(‚²¡ ¡ èÌa8 ƒÌ¡ Ì ƒ"èÁ#ÞÁÜ€:è"¾RÅèa!¾¡2ØÁèÁÐÐa8ØÁèÁêêêÁÐáêêÁÐáêêÁÐáêêÁÐáêêÁÐáêêÁÐáêêÁÐáêêÁÐáêêÁÐáêêÁÐáþêêÁÐáêêÁÐáêêÁÐáêêÁÐáêêÁÐáêêÁÐáêêÁÐáêêÁ #êÁèè2âêèÁ#ÐàÁ#ÐÐ(b!Re!êÁêê"ØÌؾÂ2èè!L¾¡ÌÐ<ØÁà2ÞÐÐa!Þ"ØÞ6e!àÐRåâà2P‡6å ƒÐÁ ãØÁ ÃÐÁàÌ2Þ2Ì!U‚Ð ãÐÁÐÁ ÃÐ"Øá(2èþÂÐÁØa ”Á ÌèÁà^‡ ¡èÁ#ê"¾¡ ÌÌ(âèa!àáØŽÀhÁèØ¡ ¡èÁØêêÁÐê!êÁØ ÃС¾èÁàÁÂØÐA´è̤ ¡Ø!Lêá<‚Ì¡¾Ø¾"ØÁÐ"ØÌ(‚ £ÌèÞØÁ#ØÁðÌØÐ ¡ÌèáÌØAÄ€(êê!èè2èÁ#èÁÐÌØØÁ#þèÁzêÌèÁàáÌØÁàáÌØÁàáÌØÁàáÌØÁàáÌØÁàáÌØÁàáÌØÁàáÌØÁàáÌØÁàáÌØÁàáÌØÁàáÌØÁàáÌØÁàáÌØÁàáÌØÁàáÌØÁàáÌØ¡ÂèêÁèáà2èÌÌèÁè"èÁØÌÌÌ<èÁС¾ØØ¡¾2èÁèÁèê"èÁèáÌ<‚þê!ê"ØáØÌÐâÐÁ c!ÌÞØaSÐ ÃØáP‡ÐØáÐáèÁèáС87…ÌáØaSÐÔv!ÐuŠØáØaSØÌuÌàáÌa!Ìa!èÁØÁ6@ÜàÌ2ê¡ Ø"è!LèÁØØÁèêè2êáÌÞ„€@Áξà!LÐáÐÐÐÁàÁè2èÁêÌÌáêáèè(‚Ì¡è2Ì¡ ¡²¡èÁ#è"èÁêÁ#èÁzèþÐÁèÁèÁè"èÁС ¡ Ã#Âê(‚Ì¡ØÁèèÁ¾ þо ƒRÅZaèÌ¡ÐÁÐ!êèÁÐØÌèÁèÁêêáêu(‚ÐáêÌ2ÌèÁ ÃÐÌ2ÌèÁ ÃÐÌ2ÌèÁ ÃÐÌ2ÌèÁ ÃÐÌ2ÌèÁ ÃÐÌ2ÌèÁ ÃÐÌ2ÌèÁ ÃÐÌ2ÌèÁ ÃÐÌ2(‚Ì¡þÐÌè"Ð(‚<‚¾¡ ¡Ì辡¾¡ ¾ØÁèÌ„Ì(‚èê"Ø2ØáêêÁèèê2ØPÌØ2ØÁ c!6…  ãØÁÐÐáØØÐØ¡8ÙØÁÐa!àá à ƒàØÌáØÁ ÃØÞu ÃÞÐ ƒÌáRÐÁÐÐÁêÁÐÁàÞaZÁ (‚<‚ØÁ¾¡ÌèÁêÁ¾¡ ÌáêÁ#ØþÞÐA8àŒ(‚ê"ÐÌÌèáØ<‚ ¡èèÌ(èêê!ÐÁè"àоÁêÁÐР¡¾èÁèêÁè(ÌÌÌR…"ÐáØÁØÌu("U„¾ÁØÌ¾êáØÁèÁ#Ða!èä  4ÀØÌ¾ÁØÐêà!LèÁèêáÌè!LêÁèÁèÁ#‚(b!Ì(‚(‚(‚(‚(‚(‚(‚(‚(‚(þ‚(‚(‚(‚(‚(‚(‚(‚(‚(‚(‚(‚(‚(‚(‚(‚(‚(‚(‚(‚(‚Ì¡¾<‚ÌÌa!ÌÐÁêêÁèáЄ¾" £¾Â ƒèÁØ<‚Ì¡Ì(¢ÌÌ¡²‚"СØ"ØÌÌ2ØÐa!èa!èèØÌè"è"ÐâÌÌèÁèa! ÃÐa!ÐuÌa!ÞØáÐÁÞÞ ØáàÞÐa!6Ða!ÐuþÞ6…ÌáØÁ‚"Ø(ØáF€ ô<‚ÌÐ<‚ ¡¾Á†Ã#ØÁÂ#èÁ#ÐáØá@(‚èÁè"PçêêÁÐa8ÌÌÐÌÂêê!Lؾ¡èa!ÐÌáèÁêÁ#èáèØÁêê<âêèÁèÌ¡²¡ÌÌÌÌ¡Ì(‚R…ØÌÐÌ¡ Ðáê<âèè"èa!(‚ÌÁ `@Ða!ÐÁèÌØÁΡ Ì¡ÌþØ2ÌØÁ ãêÁ#¾¡(‚Ì¡ Ð¾¡Ìо¡Ìо¡Ìо¡Ìо¡Ìо¡Ìо¡Ìо¡Ìо¡Ìо¡Ìо¡Ìо¡Ìо¡Ìо¡Ìо¡ÌÐ ƒ(â†Ãè2ØÁèèÁêuêÁØÂêêÁÐàÁèÌ¡ ¡ØÌÐÌ¡ ¡Ì<¾¡(‚ÌÌ¡Ðþ¡ ¡ØÁ#èÁÐÁ‚ØÌa!ÌØÁ ÃØÁÌuÞÁØÂ1BJ eÃ¡Ä †C‰ÑP;ˆ "€A r_´QÐ@ô`ô`ô€Áô`õ õpô€ô`ôð æ€ïÀGÀ  ðæ  ÙPßPÐPÐ@怗Áæ ßPæ@æPæPÐPcìPæ€Aè è`ôð ô`ô`ôô`ô`ð@ì€æPÙPÐ@è`ô`ß@ÁþæÀß@QÙPèæ€ì€çPÐPcæð ø ôÀô èð õ@æ@èða àˆŽ8GpJ@‰[@‰G ™xJÀ‰JpJÀ‰™¨JpJ‰J0ŠJ0ŠJ0ŠJ0ŠJ0ŠJ0ŠJ0ŠJ0ŠJ0ŠJ0ŠJ0ŠJ0ŠJ0ŠJÀ‰J0ŠD@‰JpJÀ‰D0Š”H”H™HœHGPŠJpJÀ‰J@‰D@‰J@‰D £¨ψŽÏ¸JÀ‰JŽé¨™¨G@èH™¨™¨Ϩ™¨”¨”¨Ï(£¨é¨”¨™¨”XŠœþ¨™¨H‘¬€cAßPÚ@æ€ì@æ@æÀìAæPÐ`èÀß@ððì€BÀ  è  ìðæ€ô€ðæ@æ@æ@æÀõ`Nô@õ@cÁð@æPß@æ€ô  è`è`ô€ô õô`õ õ`èÀõ€ì@èPæ@æPÙPô`ì@ÐPæÀè`ï`ì@æ@è`ð@æPQ—QÐ@ì0ôð ôð '‰ïpö@ò@”ô`쀗q’è@æ@ì€Æ`þÆðèðèð¿ œì@ô€À‰Àù›è@æœè@æœè@æœè@æœè@æœè@æœè@æœè@æœè@æœè@æœè@æœè@æœè@æð›èœô€õÀï€ì€ï`ì@”ðœìðð@ ÊD‰'¹ ,ñ耜èð úèðèèðìðìðè@æ@ìð›'ù쀜'ù›'Iæ€ïÀÈù›ìœìœèðì`è° >º ïÀè@æÀèÀô`ïp’èÀô`èÀô€¿‰ïÀþ¿y’ðp’À‰Ày’cô`èœèð›ñ›ìðèðìðððHòà§ï'iõ ô@æ@æ@ÁQAQÙPèÀõ`õð æ€ïÀG ´`ì` ì€'‰ô`ßPÐPßPÐ@cAæPæ@ì`ßPÐ@Ð`è@ìPÐ@cÁæÀæ€ô õ`ÁèPÐPcÁèp’ïô`è ñ è@è`'‰Di'Éô€ìè`ôÀæð õ ô0õ`õ õ`ôè@æ@ÁæþP'ùèÀÉæð ô`ô€ðÀðà®èÀèÀï@ ð@ èðæ@ì@æ@ì`'Iô€æ@æÀæ@aì`ô@æÀæ@aì`ô@æÀæ@aì`ô@æÀæ@aì`ô@æÀæ@aì`ô@æÀæ@aì`ô@æp’ï@ï@—Aôp’èðì`è`,Áè`¿Iæ€AèÀcq’ï`ô€ì€ìðè`è`èðèÀèÀ,ÁcÁæ€æ@ì@æ€æ€ì€þ'I'Iaè`è`èÀæPDè`ô€ì`ô0è`Áæ€ì€'‰ôp’Aèà®è`ôÀè`ì@ô€'‰'iì€æ@ô€æ€'iôÀæÀ¿‰æ€ï€ìð›Áè@èÀè`îz’¿iìð ô`è`è0õ õ õ`õ€—Aì€æ€'yì€ïÀèp†@ ì€Æð'iÁæ€ô€æ€ð€ì@æ@ÐPßPÐPæ° õ`ì€æ@”ì`ô`ô€ôÀõ`ì@Aôþô`ô`ì`ðè@õÀôPÐPÁè@è`ô`'‰æ€ðÀô`ôð æ@æ@ô`ô õ õÀèpô õ`õ ôð ì`ô0' ïÀÁæÀæ€Àè@æ€ï` ï` ÁèÀô€ðÀèÀæ€ì€ì`'‰'‰ì€ì`ì€ì€ì`ì€ì€ì`ì€ì€ì`ì€ì€ì`ì€ì€ì`ì€ì€ì`ì€ì€ì`ì€ì€ì`ì€ì€ì`ì€ì€ì`ì€ì€ì`ìþ€ì@ô`èp’è@æ@Áèp’èÀðÀðà®èÀð@' ïè`ô€ð€ð€ì@ì`èÀÁðÀô`èà®èÀô`Aìì@æÀô€ìì€ô@æ€Àì€æp’ðÀðÀðÀè'Iæ@èÀæÀô`ì€ðÀðÀô€ðÀèà®æÀèÀð€ì`èà®aìæÀæÀæ@ì€ì@æ@èÀæÀæ€ì@ôìÀô€ì€ìÀîjì`è@á®,è@è`ô`þô€ôð@èðìõ`õ`Aæ@æp’ô`ô`ô`èðì œÀ èð´€æPæ@æ@'‰ì`ô€ô,a'YæÀæ€Aè@ìè@æð õì õôÀèp’æÀEdì`ðõìAæp’ÁaôÀô õ`ßPæ@ßPì€æ€ô`õ`ð€ð`èÀAaèÀð@æ€ì€ðp’è@ßPŒï€´€Ê`ô€q’AAè@æ@è`ôÀþæ@æ@è@æ@æ@è@æ@æ@è@æ@æ@è@æ@æ@è@æ@æ@è@æ@æ@è@æ@æ@è@æ@æ@è@æ@æ@è@æ@æ@è@æ@æ@è@æ@'iì`ôÀæÀÁæ@èÀèp’è`ì`'iôÀæ€ÀcÁèÀAß@è`ô€ôÀæ@'™è@'‰æ@ìð ôp’è`ô`ì0è`îšìð ôÀô@'‰ì'iì`ìôp'iè@EDæÀÁcAìþ€æ@èÀè`ì`õ õÀæ@æ@ì`ð`ô€ô`ô`ôÀ'iô€ì@æ@ì@ð€ô0Õì`ô`ôp’è@è€Àïà®ïp’æÀè`èõ ôp’æ€ôð õß@Ð@cæPÐPæ€cïÀè  0 èðÆ€cÁè`ô`ô`õ Qæ@'‰ì`'Iæp’—Aõ õ ð€ðÀ1õ`Aæ@æ@èæ@côPßÀæ@æ@ì@æPæ@ì€ìPßìpþô0ì`'iì@îzì`îJæ€ì@æ@è`ôÀô`è@æÀõ õpô`ôð ôÀÆ`Æà®ô€ì@æà®cæp’æ€ì`èèèèèèèèèèèèèæÌ¡ˆN :袈N :袈N :èØÑCGÏ:tìD¢£gN$=sì艤g®ž@t"eÒCGÏ=sôÒû&Ó:sèØ™“iŽ9vô̱CG9zæè}cGÏ\=sôDÒCG;zÑÉdGO :vôÌÑ3G9zæêþ™CÇŽÞ7ô̱3Ç®Þ7tìè™iŽ:z陣‡Î¡=°Ã;°Ã;°:`@üÄ<¼;˜Ã;Àƒ9 Ã;ÀÃ; <¼ƒ9ÀCF$…9 ; XA|C=@=:|C= ‰9Ѓ9Ð<Ôƒ9 CFÀƒ9Ô4Ô< <˜;˜=@C=Ѓ9ÔÃtþЃ9Ô:d;dD=˜C=˜=˜Ã7Ô4ÐCF|C= =Àбƒ9Ô; =˜C=°ŠÑƒ9Ô; =˜C=°ŠÑƒ9Ô; =˜C=°ŠÑƒ9Ô; =˜C=°ŠÑƒ9Ô; =˜C=°ŠÑƒ9ÐCA ;Ѓ9Ô4Ѓ9 ;˜C=@=˜C=@C= Ãt ;˜=d=d=PV=PV=˜=|=°ƒ9 ;ÐC6Ôƒ9 ˜9Ôƒ9°ƒ9Ô;|C=d:Ð;Ô4ÔiÔC6ÔÃtÔ=˜Ã7Ôƒ9ÐCAݘCA ƒ9À;Ô4ÐÃtЃ9Ð;dþ; =9ÐCS˜:Ѓ9|= =˜;˜:$…9 Ã7˜;dÄ7Ѓ9Ôƒ9Ѓ9Ѓ9Ѓ9ÐCAЃ9ÔCF i|C=F=@C=d:°ƒ9ÔÃ7°C=@C=;˜C=P;|=|C=˜C=ÐÃt°ƒ9Ô4Ðбƒ9Ôƒ9 ƒ9 i i°<¼; ƒ(- Ã;(;˜; :T=d=˜=˜=˜=˜C=˜:°ƒ2:˜ƒF¢<˜:¼< ˜9À;˜CA˜:Ä< CF°ƒ9 ƒ9 ;¼Ã#”‚Ñ™CAÀ:˜<„9 Ã;d;˜< þCA <˜; CSЃ9 ;d=°ƒ9|Še4ÔÃ7d<°ƒ9°ƒ9À;˜;˜=˜= <ÐÃ7|iÐC…Ôƒ9Ѓ9Ð4ÔÃ7dD=@C=˜Š 4ÐÃ7˜=˜C=d=|=@C==@C==@C==@C==@C==@C==@C==@C==@C==@C=|:˜=°=|;˜< C=@C=d< ;˜CAd=˜Ã ;Ѓ9Ѓ9Ð4Ôƒ9Ôƒ9Ôƒ9ÐÃ7˜C=˜C=˜=|;˜= CFЃ9°:Ôƒ9=d;þ˜=|ƒ9ÐÃ7˜=|;d<$=˜<˜:Ô4Ôƒ9 ƒ9°ÃtЃ9ÐCF ƒ9Ôƒ9ÐCF°ƒ9ä:Ѓ9Њ™C=@C=˜CAd=˜C=@C=˜; CF°=@C=|;Ѓ9Ѓ9 ;˜=˜=˜;ÐÃt]FÔÃ7dD=|ƒ9Ð4Ôƒ9Ѓ9Ð4Ôƒ9ÔC6Ôƒ9 ƒ9Ѓ9°CF|ƒ9Ô; ;Ѓ9ÐÃ7˜:Ѓ9Ôƒ9 :ÐÃ7d4Ôƒ9ÐC=|;Ð:ÀCFÔC6ÐÃ7˜C=@C=Ð:Ѓ9Ѓ9ÐÃ7˜:¼;˜-€; .˜<°ƒþЃ9Ѓ9Ѓ9Ô4d:Ô4Ѓ9 ÃtÐ;ÐBRÀŠ™Ã;˜:°ƒ9|=Ä9 < ;À;˜:˜CAÀ; = Cü ;¼:h$< ;˜;Àƒ9°:À; <¼;¼ƒ9¼; Ã;˜Ã;˜=$Å7Ôƒ9Ѓ9Ѓ9Ѓ9Ѓ9 4Ô<Ô;˜=°ƒ9 <˜=˜CA˜;˜Ã7ÐiÐC=@C=˜C=@ƒ9ÐÃt=˜;Ð:° ”…‰¦5Mš<ÑCi%²(­:øI–Àƒkåþ@‰R&PSŸ(É¢TD@‡ BÈ¢$’¬O”V}ZEi&N áà§" 8ÁH€O¢Ôò È%¾ª¢pà2ŒV}Rq ƒ?­’¥êÃJ,¢Ä)@”XÄh•!”ÒQp‚’¬OŸd}Z%‹’,å²>­’EI–rYŸVÉ¢$K¹¬O«dQ’¥\Ö§U²(ÉR.ëÓ*Y”d)—õi•,J²”Ëú´J%²('Ë'«ÈB‰,ÊÉòÉ*²P"‹r²|²Š,”È¢œ,Ÿ¬" %²('Ë'«ÈB‰,ÊÉòÉ*²P"‹r²|²Š,”È¢œ,Ÿ¬" %þ²('Ë'«ÈB‰,ÊÉòÉ*²P"‹r²|²Š,”È¢œ,Ÿ¬" %²('Ë'«ÈB‰,ÊÉòÉ*²P"‹r²|²Š,”È¢œ,Ÿ¬" %²('Ë'«ÈB‰,ÊÉòÉ*²P"‹r²|²Š,”È¢œ,Ÿ¬" %²('Ë'«ÈB‰,ÊÉòÉ*²P"‹r²|²Š,”È¢œ,Ÿ¬" %²('Ë'«ÈB‰,ÊÉòÉ*²P"‹r²|²Š,”È¢œ,Ÿ¬" %²('Ë'«ÈB‰,ÊÉòÉ*²P"‹r²|²Š,”È¢œ,Ÿ¬" %²('Ë'«ÈB‰,ÊÉòÉ*²P"‹r²|²Š,”È¢œ,Ÿ¬" %²('Ë'«ÈB‰þ,ÊÉòÉ*²P"‹r²|²Š,”È¢œ,Ÿ¬" %²('Ë'«ÈB‰,ÊÉòÉ*²P"‹r²|²Š,”È¢œ,Ÿ¬" %²('Ë'«ÈB‰,ÊÉòÉ*²P"‹r²|²Š,”È¢œ,Ÿ¬" %²('Ë'«ÈB‰,ÊÉòÉ*²P"‹r²|²Š,”È¢œ,Ÿ¬" %²('Ë'«ÈB‰,ÊÉòÉ*²P"‹r²|²Š,”È¢œ,Ÿ¬" %²('Ë'«ÈB‰,ÊÉòÉ*²P"‹r²|²Š,”È¢œ,Ÿ¬" %²('Ë'«ÈB‰,ÊÉòÉ*²P"‹r²|²Š,”È¢œ,Ÿ¬" %²('Ë'«ÈB‰,ÊÉòÉ*²P"þ‹r²|²Š,”È¢œ,Ÿ¬" %²('Ë'«ÈB‰,ÊÉòÉ*²P"‹r²|²Š,”È¢œ,Ÿ¬" %²('Ë'«ÈB‰,”#‹O¬B”…rdñ‰UÈ‚²PŽ,>± YPBÊ‘Å'V! JÈB9²øÄ*dA Y(GŸX…,(! åÈâ«%d¡Y|b² „,”#‹O¬B”…rdñ‰UÈ‚²PŽ,>± YPBÊ‘Å'V! JÈB9²øÄ*dA Y(GŸX…,(! åÈâ«%d¡Y|b² „,”#‹O¬B”…rdñ‰UÈ‚²PŽ,>± YPBÊ‘Å'V! J¬þBŸ(HAdA‰‚|b!ø„,LA‰O0B‘%A‰UP”%dA Y0BŒøÄ*ÁˆOPâ”`Ä'A YPC Ä*B‰UPâ²`%± JÈb”…@(± J0â«øÊ*!‹U|E«`„r>! JÈâ+”`Ä'(± J(‡Ê¡#V‰}à”øÄWVÁY|EŒÅ'ò Y|bŒø„9?aί˜"œ”EA>A YPb”…@(ÎO¬"²`ÄFW Y0b£«ˆ„,±ÑUDBŒØè*"! Flt‘#6ºŠHÈ‚]E$dÁˆ®"þ²`ÄFW Y0b£«ˆ„,±ÑUDBŒØè*"! Flt‘#6ºŠHÈ‚]E$dÁˆ®"²`ÄFW Y0b£«ˆ„,±ÑUDBŒØè*"! Flt‘#6ºŠHÈ‚]E$dÁˆ®"²`ÄFW Y0b£«ˆ„,±ÑUDBŒØè*"! Flt‘#6ºŠHÈ‚]E$dÁˆ®"²`ÄFW Y0b£«ˆ„,±ÑUDBŒØè*"! Flt‘#6ºŠHÈ‚]E$dÁˆ®"²`ÄFW Y0b£«ˆ„,±ÑUDBŒØè*"! Fltþ‘#6ºŠHÈ‚]E$dÁˆ®"²`ÄFW Y0b£«ˆ„,±ÑUDBŒØè*"! Flt‘#6ºŠHÈ‚]E$dÁˆ®"²`ÄFW Y0b£«ˆ„,±ÑUDBŒØè*"! Flt‘#6ºŠHÈ‚]E$dÁˆ®"²`ÄFW Y0b£«ˆ„,±ÑUDBŒØè*"! Flt‘#6ºŠHÈ‚]E$dÁˆ®"²`ÄFW Y0b£«ˆ„,±ÑUDBŒØè*"! Flt‘#6ºŠHÈ‚]E$dÁˆ®"²`ÄFW Y0b£«þˆ„,±ÑUDBŒØè*"! Flt‘#6ºŠHÈ‚]E$dÁˆ®"²`ÄFW Y0b£«ˆ„,±ÑUDBŒØè*"! Flt‘#6ºŠHÈ‚]E$dÁˆ®"²`ÄFW Y0b£«ˆ„,±ÑUDBŒØè*"! F|bŒø„)(ñ‰¯˜‚ŸX…)(ÁYP"‘ˆ#¾Âˆ¯0‚«`D8! YR‚ŸˆÄWLA‰OPŸ`„,A Y b÷8‚A F,””ø„,ñ‰H0â‘¥,ñY0âŒ0Å'"ÁåÈ’Ÿ`%d F|Â_ùþ#6J S|œµø‡>A å0â”`„9#!KF|‚Ÿ`Ä'(aŠO0BŒXÅ'ñ‰H0â¦øD$¯F|‚Ÿ`%ñ FÈ‚”`%aNSP‚”`„9MA FP‚æ4%A F˜Ó”`%aNSP‚”`„9MA FP‚æ4%A F˜Ó”`%aNSP‚”`„9MA FP‚æ4%A F˜Ó”`%aNSP‚”`„9MA FP‚æ4%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%þ0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0þ%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0þ‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0‚9™%0%0ÂW˜ÂW(%˜B8Q#(%|#|B0ÂW˜‚91ÂWÈÒWÈR$˜#P#P#þDÂW0B$P‚,Q‚,QBÁW0%D‚)|ÅàQ#|#|…,}…,}#D#|#˜#,”91Â'D‚)|#PÂàE%0Â'È€)P#P#|#P#)#|…)P#|#P#P‚,Q#|#D#˜#P#P#|Å'0& ž91%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0Bþ$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|þ%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%þ0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0þ%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜þ%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|%0%˜%0B$|‚)˜#D#|#P#|ÂàQ#P‚)P#P#„€,%ÂàÍ6% %Ì6nç6#P‚,Q#˜S$àv"Ì6%è6%è6r'7%ÈR"à6%$w"$7r'#DÂàQÂlS‚,Q‚tÏv$0% ž)ÈR"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"þ0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0þ%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àv"0%àþv"0%àv"0%ÈR"t7#PÂl'n‡#P#$nSÂàQnSÂà}…,}#P‚,Q#PB 0B % %È%0%0%0% %ÈÒWÈÒWØýl%0%È%È%àv"0B"È%Ì6%à6%0% %0B PÂà™“,Q#|…,}#P#PÂàQ#P#|#$B P#$‚,Q‚,Q#$‚,Q‚,Q#$‚,Q‚,Q#$‚,Q‚,Q#$‚,Q‚,Q#$‚,Q‚,Q#$‚,Q‚,Q@0JĈ%‚”%"H‰ %F‰R"H‰Q"‚”Rb”þˆ %‚”%"H‰ %F‰R"H‰Q"‚”Rb”ˆ %‚”%"H‰ %F‰R"H‰Q"‚”Rb”ˆ %‚”%"H‰ %F‰R"H‰Q"‚”Rb”ˆ %‚”%"H‰ %F‰R"H‰Q"‚”Rb”ˆ %‚”%"H‰ %F‰R"H‰Q"‚”Rb”ˆ %‚”%"H‰ %F‰R"H‰Q"‚”Rb”ˆ %‚”%"H‰ %F‰R"H‰Q"‚”Rb”ˆ %‚”%"H‰ %F‰R"H‰Q"‚”Rb”ˆ %‚”%"H‰ %F‰R"H‰Q"‚”Rb”ˆ %‚”%"H‰ þ%F‰¢„ JI„ J¢„‘D¢„ JI„ J¢„‘D¢„ JI„ J¢„‘D¢„ JI„ J¢„‘D¢„ JI„ J¢„‘D¢„ JI„ J¢„‘D¢„ JI„ J¢„‘D¢„ JI„ J¢„‘D¢„ JI„ J¢„‘D¢„ JI„ J¢„‘D¢„ JI„ J¢„‘D¢„ JI„ J¢„‘D¢„ JI„ J¢„‘D¢„ JI„ J¢„‘D¢„ JI„ J¢„‘D¢„ JI„ J¢„‘D¢„ JI„ Jþ¢„‘D¢„ JI„ J¢„‘D¢„ JI„ J¢„‘D¢„ JI„ J¢„‘D¢„ JI„ J¢„‘D¢„ JI„ J¢„‘D¢„ JI„ J¢„‘D¢„ JI„ J¢„‘D¢„ JI„ J¢„‘D¡„ J¢Df‚‘™šefDfFd‘< Dè<(Ƀ¡É#<( „‘@(Ƀ‘<„f$@É#Fò (Fò $F„„‘<a$Fò`$FÉ#Fò„‘<„΃‘<(Ƀ’@ò $<();<a$@ò:Fò`$<þ(š‘@É#Fò DhFɃ¡Ƀ‘<„f$‚ò$Fò`$@Ƀ‘<„f$@Ƀ‘@ò„‘<Ƀ‘?ò„ <É#Fò„‘<É#Fò„‘<É#Fò„‘<É#Fò„‘<É#Fò„‘<É#Fò„‘<É#FòFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäyþ#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäyþ#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#þòFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òþFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy#òFäy`DòÀˆ<‚èZnF"ŒøCnFü!È#Ð͈@0"ŒD‘F” ÝÈC òÀˆ<0"`DnFü!‰ÈC þt3"È#òÀˆ<"BËAò ´<ÐŒyDQþ¶äâX‡òq¬Ã€y‡8ÖaÀ‡¼Cë0àCÞ!Žuð!ïÇ: øwˆc|È;ı>äâX‡òq¬Ã€y‡8ÖaÀ‡¼Cë0àCÞ!Žuð!ïÇ: øwˆc|È;ıþ>äâX‡òq¬Ã€y‡8ÖaÀ‡¼Cë0àCÞ!Žuð!ïÇ: øwˆc|È;ı>äâX‡òq¬Ã€y‡8ÖaÀ‡¼Cë0àCÞ!Žuð!ïÇ: øwˆc|È;ı>äâX‡òq¬Ã€y‡8ÖaÀ‡¼Cë0àCÞ!Žuð!ïÇ: øwˆc|È;ı>äâX‡òq¬Ã€y‡8ÖaÀ‡¼Cë0àCÞ!Žuð!ïÇ: øwˆc|È;ı>äâX‡òq¬Ã€y‡8ÖaÀ‡¼Cë0àCÞ!Žuþð!ïÇ: øwˆc|È;ı>äâX‡òq¬Ã€y‡8ÖaÀ‡¼Cë0àCÞ!Žuð!ïÇ: øwˆc|È;ı>äâX‡òq¬Ã€y‡8ÖaÀ‡¼Cë0àCÞ!Žuð!ïÇ: øwˆc|È;ı>äâX‡òq¬Ã€y‡8ÖaÀ‡¼Cë0àCÞ!Žuð!ïÇ: øwˆc|È;ı>äâX‡òq¬Ã€y‡8ÖaÀ‡¼Cë0àCÞ!Žuð!ïÇ: øwˆc|È;ı>äâX‡òq¬þÀy‡8ÖaÀ‡¼Cë0àCÞ!Žuð!ïÇ: øwˆc\Ç<ÞaÀuˆãݘ‡8æAwˆƒ&ï‡TÞ!Žyd!øCò †t㙇U"‡Ì#4éÆ;Ä1qÌc☇8ÞáqÌCñ°Š8æ!Žy8 € ¢x'àyº™GœyºHœyÄ™'`wÄ™gyîfžnžgn'qÖéfžnæYGœyºQxc JøqæéfqÖygppFœyÄ 8èyÖGá çÑÆqî&`qzžuÄQ8èyÖGá çy&~€uÄQ8èyÖGáyºY‡œ<Ä 8èyÖGá çYGœþu´ñ`nGá çYG…ƒžgqz—à‚-më‡Â‚6uˆCaA›Ç:Ä¡° Í#`ÏÀ:‚6uˆCaA›Ç:Ä¡° ÍÃH€J@‹€‰CaA›Ç:ıŽnl#ݘ8´y¬C ë†6<°q(,hóX‡8´y¬ÃPZ¬C Ú<Ö!…më‡Â‚6uˆCaA ƒÄ0à…À‘‡ L Ú<Ö!ŽyPS¬ã"ˆA7ÄñŽ€ÍãîXÇ<ÞAÜytãGÀæñw¬cï î;ܱŽy¼ƒ¸ïpÇ:æñâ¾Ã{‡10ŽxˆcÆÀ7Ö1w¸#`óèÆ3ðw¬cï î;ܱŽy¼ƒ¸ïpÇ:æñâ¾Ãë˜Ç;þˆûw¬cï î;ܱŽy¼ƒ¸ïpÇ:æñâ¾Ãë˜Ç;ˆûw¬cï î;ܱŽy¼ƒ¸ïpÇ:æñâ¾Ãë˜Ç;ˆûw¬cï î;ܱŽy¼ƒ¸ïpÇ:æñâ¾Ãë˜Ç;ˆûw¬cï î;ܱŽy¼ƒ¸ïpÇ:æñâ¾Ãë˜Ç;ˆûw¬cï î;ܱŽy¼ƒ¸ïpÇ:æñâ¾Ãë˜Ç;ˆûwX‡yxâzwX‡yxâzwX‡yxâzwX‡yxâzwX‡yxâzwX‡yxâzwX‡yxâzwX‡yxâzwX‡yxâzwX‡yxþâzwX‡yxâzwX‡yxâzwX‡yxâzwX‡yxâzwX‡yxâzwX‡yxâzwX‡yxâzwX‡yxâzwX‡yxâzwX‡yxâzwX‡yxâzwX‡yxâzwX‡yxâzwX‡yxâzwX‡yxâzwX‡yxâzwX‡yxâzwX‡yxâzwq¸­y‡yX‡w˜qX‡n˜y ®n˜Û‡‡yXqq˜q˜‡u˜‡€‡nFøƒ<ƒX‡ywq˜c€qX‡nx‡g€uxþX‡y ‡"8xo ®n¸­€™‡nXqˆ‡€1è†w˜wpP`9€uxx‡€˜€Sø—yXX‡nˆ€é†wx †n˜‡uˆuØ8€ènX‡g€€™m€wx`ƒ °€u؆"0hwXu(€ø†nx‡yxqˆq˜‡u‡yqˆc€nx‡nÐø†wP‡"€xo˜‡€h€v؆8(_˜mPˆ‡€`€S˜‡mP€èqxP‚ °€wèq˜‡n˜‡nxqXqX‡þwX‡g€0H€oX‡g€nxmø€€ø…u ˜‡€Ix‡u؃‡u؆h(gx‡€ h€Sèp(‚€øqX‡w‡u‡€‡€‡uè†wxø†ˆ€Q‡"8xo˜mø€ p†ux`ƒ °€nØ8`zx¸  à…u‡u‡€‡€‡u‡ux‡u0X‡wX‡T€g6˜ pP€ø†ux†˜‡n ‡"0xoXq0`uh€øÊSèq˜‡n˜‡nxþqXqq˜c€n‡qÐ…ø†g€n‡yІè†g6è€ Ð^è†w‡u‡€‡€‡u‡w˜8qx†Ђ˜‡wPGx†X‡g6è€ ¸^˜mP¸9€y‡mP€è†uH è†wè†uƒqXqqX‡w‡y‡u0è†u‡y0†X‡n ‡"0xo˜‡g€uxP˜€è†w‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€þ‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡þ€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡€‡u‡€‡uxq˜‡€é†놀™âê†y‡yxq˜‡nq˜‡up‡u‡yX°ux‡€ù—yx‡xx‡ȃ6`1ø‡€‡ux‡nX‡yèc€u‡wX‡g€uxX‡nHøt€˜qX‡xþ‡u‡u‡x‡y膀1øqX‡wè†wHør‡g€nx†q¸­nX‡nXqX‡nXqX‡wXrP€ÐjX‡nXqHø†mØX‡g€€é†g€nx‚nX‡nHøt0…u8o@À€é†ux‡ux‡n˜‡wè†u˜‡uèc€nxr`xq€øt€‡g€€ymøq à€ux‡8o@S‡g€w˜nHè†mØX‡g€+Xt‡w .q¸-⚇nXc€u¨€èc€ÛþÚ†_r ¨m^˜‡nx˜8oP€u˜møqØà€uxè†y‡wHøu€ àu˜q˜‡ux‡€y‡u xJ †u‡u8oPÀq˜mø…u à€ux‚nX‡xHèt0…ux8jà&€w ®y‡yX‡w ®yè†u0è†u&H€g€ 膀Iø†mØX‡gqx8o@Àq˜‡8oxS‡g€€¹-â‡ÛZ°yxq0†ø†w &p€ux¸­nx†þx‡g"è†u ¸-âšq˜‡ux„˜Bc€nxp†gxx ‚u‡0€y‡8oØ€€I‡m¨m€oxX^‡ 8…uxâšq˜‡€‰‡nc€nˆn0‡w€øt€è†g€ux‚w@Øw ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®yþ‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yþX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡yX‡w ®y‡y˜x膀‰qX‡y‡wè†yè†u¨qX0qX0ø—u˜‡u₇›‡wè†u‡n@ÈFƒz˜yè†w‡ux‡u08¦wg€ux†xp^]H€u˜‡nx‡yX‡y˜yè†w .c¦gzG؆à…uè]€yxx‡gqxXq˜þqx‡€y‡b¸ €  …w‡pqX‡TH€ux†‡xXm€nxø†ux‡m^ø†w‡x؆à…qXcH€‡ux‡nX‡wXq˜‡wXc€h €_x‡m^]H€nx†Xq˜‡ÛZ‡n0Xp^˜‡ÛZ‡g€€ym^X‡nH…X‡g€oè†wX‡yè†yX0q˜‡nXq˜‡g€w†p†g€u˜€X÷n]7cÖͱŸ6Ξ §.€³nët 7oÝ:qâŒX÷L@·wëÀào±âæ­7¯Û¼nóþºÍÇ‘c±\ õn[^ÝÖK ®Þ¸uâÖ#Ðí€oÝÖ ÀkÞ:qëžpv¯›1ëÄÍë6¯Û¼nóÄÍëöNÜo[^âÖé°n[gãæ¥JÀ±Â)c~ÚÀ™¸yâæu3O7ótsÚ:Æp€‚ ÐÍ6ð‘. ¬óÌþë<À7눣Këˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3þO7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ót3O7óˆ3O7ótþ3O7óˆ3O7ót3O7;‰³“8ó¬3O7ïì4Gî¼38óˆ³N7ëÄóN7;‰SÏ8â¬#N=Ýì”Yyü‘‡ûp$Î;óœfLÖXs 5ϰÎ3¬ó Ð?ÁóˆÃ‘8ët38ݼc⨇8ŒôÃßxFvò ¸ãèÆ3À‘yˆcâ˜Ç<ºÁ‘y¬câØI<Þ±ŽfÐ Ý0¾ñŽuëxFÞÁ‘g àÏ@78b ¬ãóàˆ1P¿0@óÇòHP")ÄÉ#‘òH|ì‘8y$NNóOPâ`ÿD$N JDâä‘ D$PÎò”G‚‘ø%XŽóHP‚å*%"qòHœœå” *—‘€r/G ‘@ ŸÀs‘€sŸ@ ‘@ ‘pr‰@ ‘@ ,—r,‡s‘Ðt‘€r‘ð ,§r,‡r‘@ ,G ‘@ ,G /‡r‘@ ,G ‘@ ,G /‡r‘@ ,G ‘@ ,G /‡r‘@ ,G ‘@ ,G /‡rþ‘@ ,G ‘@ ,G /‡r‘@ ,G ‘@ ,G /‡r‘@ ,G ‘@ ,G /‡r‘@ ,G ‘@ ,G /‡r‘@ ,G ‘@ ,G /‡r‘@ ,G ‘@ ,G /‡r‘@ ,G ‘@ ,G /‡r‘@ ,G ‘@ ,G /‡r‘@ ,G ‘@ ,G /‡r‘@ ,G ‘@ ,G /‡r‘@ ,G ‘@ ,G /‡r‘@ ,G ‘@ ,G /‡r‘@ ,G ‘@ ,G /‡r‘@ ,G ‘@ ,G /‡r‘@ ,G ‘@ ,G /‡r‘@ ,G ‘@ ,G /‡r‘@ ,G ‘@ ,G /‡þr‘@ ,G ‘@ ,G /‡r‘@ ,G ‘@ ,G /‡r‘@ ,G ‘@ ,G /‡r‘@ ,G ‘@ ‘@ ‘@ ‘z,—|‘ r‘ð < Ÿ€s‘pr‘𠑉p y ïÐ ç#â$ãpâ°Ý$ïÐ 2ë â°ï°ó ï ï ë€#ºò;ï +ï°ï°ïpïÀ4ïÀ4ãpñ 2âp8²ïpâ°ï°8"2âpï:ïÐ ï çñ뀕òâ0Ý ï +ï çÑ ï ï ï ç!ëðâ$8"뀕ºþòëðݰï ïpâ 8" ï 8:ïpã°Ý0ç!ºòâ°ã°8"@ò;çñâðâ°ï çñâ°âpïpã X)ï0â Ýðçâ 8"ëðÝ€#ã0â$8"ï$8rïpï çñã°â +ï @‚#âpïp8$âðâ°ï ëðëðâ°ݰ82â°ÝðÝðÿ´ï0ç•ï°ï°8â â°8rï @òÒ úëðë zïpï°ó ëðݰï @òþ@òëÐ ëðëðâ°ïpï°ó òâðë0ºòÚ ë0ó!ºò;âpïðOï°âðâpïðOï°âðâpïðOï°âðâpïðOï°âðâpïðOï°âðâpïðOï°âðâpïðOï°âðâpïðOï°âðâpïðOï°âðâpïðOï°âðâpïðOï°âðâpïðOï°âðâpïðOï°âðâpïðOï°âðâpïðOï°âðâpïðOï°âðâpïðOï°âðâpþïðOï°âðâpïðOï°âðâpïpõðÿ°ÿ°Û°ûа»ÿ°ûûP±»ÿ°»ûûðûP±ûð±ûðûP±û€±ûð±.Û°ýð²Û»û€°ý±6‹±û±ûŒp y ï°¹ë ëÐ óÐ 8"ñpâpï°âð2â0Ýpó ïÐ ïKëÐ ï°¹tâð²òâ0ݰݰݰÝðâ°â0â°â°Ý +âðëÐ ¿³Ýðë ë ó!8²ݰÝð;ÝðÝðëþ!ó ïp¹âë!ïÐ ë çÑ çñÝðç!óÐ ë!ëðçñâðâ°Ýâï ñðâðë óÐ ëÐ ï°â°¹tâðâðâðë ï ó 8rÝ óÐ ëÐ ï ïÐ âðç!ï ëKó°8rïKïpï ó!óðë óÐ ë!ó!ñ ñ$â°ï°ï ëKó0çÑ ¹Ýpó óðë ó ñ0Ý0â0ï!ó ï°âðëÐ ââPâð¹4â°âðþÝðݰâ0âðçÑ òçÑ óÐ ëðݰÝ óKâ0ëðë€#â€#²X)ëÐ ï0ïÐ ñ !ó0ëÐ @Ò ë!ë ëÐ ë!ñðâ€#ë ëÐ ï°ï ïpݰâ0ë ï @Ò ëÐ ïÐ 8"ó ë ï ëÐ ó ë ë ëÐ ï0ÝðçñÝ ç!ïpâ°âëÐ ï ñ!ç!ëÐ ï!ï ñpâ â0âðòë ó 8rÝ€#ç!óÐ â€#ë ë!õ0â0Ý0þÝ ñ ñ°â°Rã óÐ óÐ ââë ë!õ0â0Ý0Ý ñ ñ°â°Rã óÐ óÐ ââë ë!õ0â0Ý0Ý ñ ñ°â°Rã óÐ óÐ ââë ë!õ0â0Ý0Ý ñ ñ°â°Rã óÐ óÐ ââë ë!õ0â0Ý0Ý ñ ñ°â°Rã óÐ óÐ ââë ë!õ0â0Ý0Ý ñ ñ°â°Rã óÐ óÐ ââþë ë!õ0â0Ý0Ý ñ ñ°â°Rã óÐ óÐ ââë ë!õ0â0Ý0Ý ñ ñ°â°Rã óÐ óÐ ââë ë!õ0â0Ý0Ý ñ ñ°â°Rã óÐ óÐ ââë ë!õ0â0Ý0Ý ñ ñ°â0[ëÐ ïpâðâðâðÒ ï°Ýðç!ï ï ï ÝðëÐ ïpâðâðâðÒ ï°Ýðç!ï ï ï ÝðëÐ ïpâðþâðâðÒ ïÐ ïСÝðë ï°â°Ý ï°¹ôç‘KëÐ çñâ°^|ïpâðâ +âðëŒp y òñ€#ââðâðâ€#Ý0âpó!ï°ñpï ñ óÐ ï 8r7âðë0ïï0ââ€#óðñ ïÐ ï°ñ ñ ñ ï°ïÐ ñ ñ ï02âòëKïpñ ïÐ óâðâðëðâðÝðâðç#â¹ô1X)ïââ ñ ç28"ï0ï°þóÐ ó ëðâðëðëðó ç!ïpïÐ ï°ïâ0ëï°õ ñ ñ ï°ópï ïpâ08Ò ï°ñ ñ ï°ó!ï ï°óݰÒ 8ò1ï0‚#ë€#ÝpïÐ ñ 8"8²ï°ó ë0ï ë ëðëp7â ñð;ëðÝ0ÝpòÝðëÐ ï óð;ݰ8"8"ç!ñðâðÓ ï°ó 8âðÝ€#òç!ï!ïÐ ñ ëðó€#ëïïÐ ç!ïþ 8"8rÝðââpݰï°ï ë 8!ëâ0â°ñ ïâðëðë€#ë ï @²ï0â°ñ ï!ç^üëâðëðñÐ ï°ñ ñ ïÐ ó ñ ï°ï°Ýðó!8²õ ñ!ëðë€#ââð;ñ óp8ò1âðÑmž¸wóĉ{'.ž¸wïæ‰{×-ž¸nóÖ½[ï`Ãu Å­[÷nݼwëæ½ëön]¼†ï@¾[7ïݺyﺽ[¯%Èwëæ½[7ï]·wëâµùnݼwëæ½ëönþ]¼– ß­›÷nݼwÝÞ­‹×ä»uóÞ­›÷®Û»uñZ‚|·nÞ»uóÞu{·.^KïÖÍ{·nÞ»nïÖÅk òݺyïÖÍ{×íݺx-A¾[7ïݺyﺽ[¯%Èwëæ½[7ï]·wëâµùnݼwëæ½ëön]¼– ß­›÷nݼwÝÞ­‹×ä»uóÞ­›÷®Û»uñZ‚|·nÞ»uóÞu{·.^KïÖÍ{·nÞ»nïÖÅk òݺyïÖÍ{×íݺx-A¾[gžwÖ™çnÞY'ž–@zgyÞYgžwºygxZižægq@z§F\çnF|¤wº!¤wþºñÞé¦ÅuÞéfÄw@z§ßéfÄw@z§ßéfÄwÖy§G|¤wºYçy)žxHŒ§¡uÞIœwÖÑòxÄYç ã‡ÄwºY'FŽÉCŒxæéfnÞY§¥†ºYçnæ™ç xÞYGœwHgžnÞ!±ÞgqÖéfqÞYçºY§›–ÖÇφÖgwÖygyjHœxÖiHœyÖy'ÄihwºYçuÞgºi $qæéæuФƒÖé¦!ĉgqæéæy@zgqæéæƒ@çnQœyºY§›wæ!QœyÞYGœþwĉgql|GœxÄ™§›ßIœxšçuÄ™gqâgqÞ‰GœxÖgÄwÄ™GKq@êfqgqÞéæuÄ™§%©›uº™gqÖygžw@gn@gql|§›wFŒgw@zgwºY§›uÞñÞ™GœxÄ™‡Äw@êæuÄéqæygw@jHœzĉgwâ™çqâ9hq@ê†DqæQœyFgžwĉgwæQœy@šçš§›uĉGœyÞ™§›wÖgqæéfÞ§žuÄYçB»çqæygwâ™Gœ†´ŒgžƒâYGþœuºygqæéyÞé&ž†Ö9hžwÄY§¡uÄygÄyÞ™gq@zgwZgžƒæéfw@'žuÄihžwH§¥uZGºyG<Þ±qÌ£ïG=º1ntcâXÇ;ıq€¤ëÇ<ıŽn¬Cëx‡8Ö!tc☇8ÖÑuˆcïÇ:Ä’n¬CóÇ:º±q¬ãâX‡8@ÒuˆcâXG7Ö!Žu¼CëHº±qÌCëèÆ:ıŽwˆcâI7Ö!ŽyˆcÝX‡8Öñq¬C éÆ:Ä1q¬£ëÇ:Þ!Žuˆ$ÝX‡8æ!þŽutcâXÇ;ıq€¤ëÇ<ıŽn¬Cëx‡8Ö!tc☇8ÖÑuˆcïÇ:Ä’n¬CóÇ:º±q¬ãâX‡8@ÒuˆcâXG7Ö!Žu¼CëHº±qÌCëèÆ:ıŽwˆcâI7Ö!ŽyˆcÝX‡8Öñq¬C éÆ:Ä1q¬£ëÇ:Þ!Žuˆ$ÝX‡8æ!ŽutcâXÇ;ıq€¤ëÇ<ıŽn¬Cëx‡8Ö!tc☇8ÖÑuˆcïÇ:Ä’n¬£ûøG=Ö!Žx¬CóX‡8æ±qÌCëx‡8æqþqÌCñÇ<Ö!ŽyˆcïÇ"Žyd£ï¨É;Ä1nÌ£óXÇ<ºAqüC‘xG7æ!Žyt㙇 Po‚ä€& „8汎yþ˜› ó H7Þ±qDóè†B"pè …(F?ü‰Bx…Ð9ºñŽuˆcâ HãÍ-‚ˆãâHAÄq¼Cî†8Ö u8#Ô0ƒ>ìau{˜¡ëíçAn¬ãâˆÃ.®á6á °Á ôA¬ÎÌ`ÖáÖ¡Þ æ¡Ö¡Þ¡â¡tÀŠÌ@ììÌ æAæAæ àAB!jâºá#þa(Aæ¡Ä!ÀæáÖáʺ Œ° 0AÚI¡Þ¡ÖAæ¡>bÞAæ¡"æ!Àê€Øa Òþ!Î ¾aÄ!ÖAæ Äáþa(aæ ºaÄ¡$ládalaŽáˆaÄa‚ à ºáâAæaÄá#Ä!J¢ üÁÊ@âáÄ¡ºáÖa"Þ ÄaºaâAæa>¢$ÄáÖáÄabÞæ¡ˆáÖá#æaÄaÖ¡ÞAÞaÖáÖAæaÖaÖAâÄabÞA"ÄaÄaºáÄaºáJ¢ÖaBâaÞAâ!Àà¡$æaÄaºáÄ! JbÖAæ¡ÞAâ!Àþà¡$æaÄaºáÄ! JbÖAæ¡ÞAâ!Àà¡$æaÄaºáÄ! JbÖAæ¡ÞAâ!Àà¡$æaÄaºáÄ! JbÖAæ¡ÞAâ!Àà¡$æaÄaºáÄ! JbÖAæ¡ÞAâ!Àà¡$æaÄaºáÄ! JbÖAæ¡ÞAâ!Àà¡$æaÄaºáÄ! JbÖAæ¡ÞAâ!Àà¡$æaÄaºáÄ! JbÖAæ¡ÞAâ!Àà¡$æaÄaºáÄ! âÄaþÖ¡âÜaºaºaÄaJ¢ÞaÄaºaÖAæAJ⺡$æAæ¡æaÞapph¡Ì@ììÌ`àaºáÖáº!Àà¡ÖaÛ’’@‚†  †  ¾aÄaÄaTà¶`DÀàaæaÔÁáÀæ¡Þá $ºaŒ! haºaºáÄaÖ¡ÞaÞáÖáBâAÖaÖA lÖ¡JÂÖ!áò@ æaÄ¡þaábJB"Þˆ®`$~Á æàfþjº æ!Àâ¡Þ¡æ¡æAbæAæ¡Þáæ¡¤Aê ÄaÞÁ⡎A!J¢ÖaºaâEçAæA²AŽ!RÁÖ!Þaâ¡Þ¡BºáÖaÖáÞÄá¢Þ¡ÖaºaÜr€–aõrà:ÀÄbÄBJbbâAÞ¡&bÖÁ¼¼þ!î8Á Á áæAæ¡LÖAÂÖabÖáÖæAæa^ôÜ æ!Þáþa¨!öàf*fªæUÖaþÄ¡$Ä æAê!®®aØàøaÌ fŠ Ä!ÀæAºaæ¡$rÁ aúáþaöa¦ÎÁ æÀÜÞ¡ÖAÖáÖaºa^tâAºáÖ!æAÞaÄ¢ÖA´àæA j  jàtÀÁ¬àÖáÖaº ÄaÞ!ÄaÄajbÄ!Käö†á°æöÄaâÄ!Ö¡êAÞaÖaÄaÆAŽÁÄáÞaŽaæ¡æaæAhïºaJâÖAÜ¡ îøáVL÷VæA¬ÖA!ÄÁÜÄ¡þæAæAâA‚ˆáˆáˆ¡ÐáæÄ ºaB^4Ä¡$ºaºaBBÖaÄ¡$Ä ºahOÞaâ¡âAÖaÄa¢Äaº ÞaÄabæ¡æA æAÞaÞaÄabæ¡æA æAÞaÞaÄabæ¡æA æAÞaÞaÄabæ¡æA æAÞaÞaÄabæ¡æA æAÞaÞaÄabæ¡æA æAÞaÞaÄabæ¡æA æAÞaÞaÄabæ¡æþA æAÞaÞaÄabæ¡æA æAÞaÞaÄabæ¡æA æAÞaÞaÄabæ¡æA æAÞaÞaÄabæ¡æA æAÞaÞaÄabæ¡æA æAÞaÞaÄabæ¡æA æAÞaÞaÄabæ¡æA æAÞaÞaÄabæ¡æA æAÞaÞaÄabæ¡æA æAÞaÞaÄa‚öÄaÄaþaÄáºaæ Ä!Àæ¡$ºA!º!ÄaêAÞaæAºaºaþà ¶p€ö€fêÌ`h ÞaÄaÄaâaÒàÞÚ8š£Ó`Äa¾ € ºT¡ æÁ`ÖAæa`Œ!@Â`æAÖ¡Œ¾¡¶`Þ¡ÞaÞ¡JBbºaê Þaº’ÄaÜ ÄaæAJ"áò@ Äá¤ÞáÖºaºaÄ¡º¡Äaæ à£áðÁÌ Ì`BÂJâÄ!ºáºA!BJBÞáÞa¤aÄaBÖá^ôºÁܺaÄabºáþ¬álÁæ!ÞaÞAÞÁdá²AâAæaâaÄ¡$öaAæ¡$ÞA¢ÞAÖ!–aÀ–!(PoºáBæAæaºaÖ¡BâáæAÖ¡ÖA¼ ¾‘Aeÿá ¡¾ý@Ä¡$æAæ¡$æAêabÖ¡âÖ!BÖAÞaÄaÄ¡ ô€Åœ!ÎàºÁ ªÁ ¬áÄahÖaÖ¡J‚ ®!®aÞ`®A ÌàºaÖAæaºáâaÄaÄaÄÁ¬@öáÁü`âþÁ ªÁ ¬öÄ!BB æAÖa^ÿ¡(öÄ!ÖaÂàÎÁL¡Ô  Að\¼Ï×Aæ¡bÖaº º Þ¡$Ø ØàØ!Øa˜¡òAæaÄaÄaºaâÖÞaÞaºaºaæaÆÁnÈáÖáŽAwu÷ˆáÖAæ!ÀÄaÄaÖAâáÊÀ=Ù•ÝÊ`ÌMbÌmº Þ æaˆAâaÞaÖ¡ÞA!âáBæ ÄaºaÄaºáÖaºaÄ!æAæaÄaÄaþBêaºaÖJâJâÖábº!æ¡$ÞAæ¡æáÄaâaºáºalºAâAÖ!æ¡Þ¡æ!Àæ¡Ä!ÄaâaºáºalºAâAÖ!æ¡Þ¡æ!Àæ¡Ä!ÄaâaºáºalºAâAÖ!æ¡Þ¡æ!Àæ¡Ä!ÄaâaºáºalºAâAÖ!æ¡Þ¡æ!Àæ¡Ä!ÄaâaºáºalºAâAÖ!æ¡Þ¡æ!Àæ¡Ä!ÄaâaºáºalºAâAþÖ!æ¡Þ¡æ!Àæ¡Ä!ÄaâaºáºalºAâAÖ!æ¡Þ¡æ!Àæ¡Ä!ÄaâaºáºalºAâAÖ!æ¡Þ¡æ!Àæ¡Ä!ÄaâaºáºalºAâAÖ!ÞAæ!Àæab^¾zïÄÅ·n¼uóÄÍ'.aBqÝÞ%÷.¡¸„ñÖ½÷Nbšv$E‘$i¦š™oëºÍK(nž¸nóÄÅ{—ðÝœvøð‰Z×3hš„ïÞ=à â¼nñÐ!´"‰ëž“à›8cÄÍ›—ÐX€qâÖé Ðí¹"þ¼ø6ï™%&¼è–p›Šz|{7/¡¸yŽK‚‘¯?bŠëö¯["‰ó¾[O\§vAƒîÃw¯š=fÝ¾Š €êÖ½[÷®›¸yâÞ­›'î]7bÝÖ57¢piݺ[7Oܺzâæ­›×m^zv˜¡ÝXÇ;ÄyHäÝHˆ8ò4´õ >êÑ“ž¤¡ëG7Ô¡€P‚݈D´ u¼ãpÆ:Œ€wT`ëxÞÑ qÌCÆÀ:ÞA&8àâ€Á ¾¡àÏ@Þþì`âHÁ º± à âx‡8æÑ w¬cë˜DB _äA âˆGQþñJˆcÝHH7ÞÑw¬# íØ>öÆ~øÃÕàG'ÆÑy¬ãÿjÐ:Ä1u¥ïHH7Þ1w¬ƒâX7šÎt6ƒïXÇ1º1qeâHH7ÚóŽc¬CÙXÇ;Ö1ŽuÅëxÇ1$Òwˆc☇8ÞñnPbyÇ:æÑy¬CõxÇ~r€Œe¸b®pEº±Žy@dë¨&2q¬£ëÇ<Öu¼cšTá¡ì3ÐtðŽuˆ#! @ƒºñq´þgîÇ;þÑ J¬£ï˜Ç;"ŽuEôð5‚„+ÜÃ^kXG7æ±qHäñèÆ<ÞQ„¼CJ`ƒÞ (A oØÄ*ÞÐyˆcâøJBæÑ q¬ãëG†f‘ddh³~@†Æ!‰Àø—8æÑ ‰tãâX‡8þ±JH"ó€HQ´ÀŽÜ²£SHš…¼ /è E‘H<"Ž„ˆc∇8Ö‘†cã¾0…)Ø P˜c ™G7âÑw$¤ ùÇ;"!Žy$ä☇8â‘nØB"óXÇ;Ð1q ãë¸Å:Þ‘yˆcÝHˆ8Öñq„Aþ·b=rK܆AݘGB\Úž„t#!âHÈWŽqÌñ@Ç:ÐQ”w ãݘÇ:ºñŽ[øâ¶¸…‡Ö!Žztc éÆ<ºÑxtc™Ç:Š"Žytã☇8汎y¬£ïXÇ;ÖñŽutãëxG†%"Žy¼#!ݘ‡8Òy´GóxGBº1q$¤óh8æñŽ„tcâHH7æÑqÌã éÆ<Ä‘nÌ£=â˜Ç;Òyˆ#!ݘG{Ä1w$¤óGBº1öˆcïHH7æ!Ž„tcíÇ<Þ‘nÌC éÆ<Ú#Žy¼#!ݘ‡8Òy´GþóxGBº1q$¤óh8æñŽ„tcâHH7æÑqÌã éÆ<Ä‘nÌ£=â˜Ç;Òyˆ#!ݘG{Ä1w$¤óGBº1öˆcïHH7æ!Ž„tcíÇ<Þ‘nÌC éÆ<Ú#Žy¼#!ݘ‡8Òy¬£똇8æÑy$DõøÇ<ıq$dÝør7æ!ŽöˆcÝxÇ:ıqHDëxGBà1Ž4´õ C=Âv¤¡ëxÇ:ıqÌCñXÇ<$ÒupøØGè Š7ÐaìièFQº±ŽbÜà¸/Ö!ŽgÀëƒÖ1gàÃþ€3Œ€öÌÃ8À@^¼càE7Ö¡‹¬ãpÆ;Ä¡‹¬cpÆ8º‘мcóèF<Þ!Ž„t#Å!`Ä1ò †y¬CÝø‡8ñq¬c∇8Š24ÀûèI=ðÑð£öèÄ:ÞÑutcÿš‡8Ö!‰¼cóGBº±qcâX‡8º±Žq¬cÝX‡8ºqŒxtcâÈð;Rqt£ëx‡4Ža €ÒµâÐ âï°óÐ ó  ñïóñ ëÐ ïÐ óëÐ &Ë ‚…PR9°ë0ïÐ  òâ0þâÐó°âðâæ 3 30 A… 30¥¢â0¸ÿòñ  1â0ÝPëðïâÐ1 Ñ æ°ôp÷ÀaHºÅkPë ð°ó ë ïÐ ë0ó J ×p — ¹° ×p š ïÐ Ø ë  (æ`:àÿp:°:0 È`:`E!Hø/ë0ݰó ëPë0ïðÝó õ°óÐ óð ìpìð ZÀ‹LÀ‹¼ÈZ0±â01ïPâÐóÐ ›lp ² ¦Àl óþë0ÝðëðóÛøâïÐ ó ó°âï@ è è  ï è@ óó óÐ 1ë0âðâPìpçÀçÀçÀçÀìPEÑ Ûø/ á 1âóÛ(·ðè°ï0æ€ï°Ä°ï°âðë ·` ·°ÿ ÛøÝPâðÝðð°ó ëðëPݰó Û¸óÐ óÐ óÐ P¹â0Ý0ñî°ó ó óÐ ÝPâó ëðÝ0â0â0gYâó ëðÝ0â0â0gþYâó ëðÝ0â0â0gYâó ëðÝ0â0â0gYâó ëðÝ0â0â0gYâó ëðÝ0â0â0gYâó ëðÝ0â0â0gYâó ëðÝ0â0â0gYâó ëðÝ0â0â0gYâó ëðÝ0â0â0gYâó ëðÝ0â0â0gYâó ëðÝ0â0â0gYâó ëðÝ0â0â0gYâó ëðÝ0â0â0gYþâó ëðÝ0â0â0gYâó ëðÝ0â0â0g9â0Ý0â°â°óÐ óÐ !ïÿPâ°óó ï°ð€•ð°ó óÐ ï0â°ó°ó°óë0èÀíÐy@o  cG\±ó°ó•ݰï0\ðtðzPû€ûPûÀï°E!ó ë° 4àó°õ°A@àëÐ Æã0)ÐÏë0Ý0Ý` ` Ç  €â` 0Å:Ïó ï` °ÏßPÆþÝ0ÝðX •!ÀÇb øÿð”ðâ°)&óiÐû°õ€û€ûÀöP üßðâÛÝðë  !ëÐ _‘âïp ã °*]·p Ä ã°ãp ïÐ ï°â0ëàë  ññ°Çï Qâðëp ó ë  Ñ ó°âðûÐ ”Ð ëðóðââ°âÝ`˜"è ^à /@ Ý`ð°â°€•ó°ââë EVP*³à!³`'^`'€ ó óÐ ï°Ð ëðë Pþùë ïðâ ó°óðPÝйk°M°M°M°M°[€ï°âðóï°‘bó ÁÀ×° l ìp »  1Û(óÝ0ë ñ0âà:àóðÈpùàVàæ°ó°Ý ï° ëðëÐ ó ó ëÐ ñë@ ÝðëÐ ïÐ ëï Ì0 Ì ç0 ç0 i ç0 ZõðÝðó°Ýó ó ï° òÀ²À¦Ðl ó ï°â°Ý0ñ0â0ÝðëïÐ óÐ þó óðâðë ó@ è€ë€ââ€ë€·P Ñ ó õ ëÐ ï óÐ ë ̰uÀ‹u e Ù ó óÐ ï° ó°ë a<ë ë óÐ ï0âp Äp ·@ Ò%4ì ëÐ ë0ï ñ°óà ²óÆâðëðóðâðâÆïÐ âðÝðëÐ _±â0ÝðÝðݰóÆQaÆÝðñ°ïó`ÊEÆó°Ýðâ0â0ÝëPa<ëÐ _!ó óÐ ñ°EÆó°Ýðâ0â0þÝëPa<ëÐ _!ó óÐ ñ°EÆó°Ýðâ0â0ÝëPa<ëÐ _!ó óÐ ñ°EÆó°Ýðâ0â0ÝëPa<ëÐ _!ó óÐ ñ°EÆó°Ýðâ0â0ÝëPa<ëÐ _!ó óÐ ñ°EÆó°Ýðâ0â0ÝëPa<ëÐ _!ó óÐ ñ°EÆó°Ýðâ0â0ÝëPa<ëÐ _!ó óÐ ñ°EÆó°Ýðâ0â0ÝëPa<ëÐ _!ó óþÐ ñ°E!óÆÝðâ0¦¼Ýðâ0a,óðñó°ݰâ0ëã°â0¦,ˆ½Ý0a â0â°Ýð_ñë \ð‰@z€ûPÿ ¯\°EÑ â°ÝÆâ0ë ó ï KÐûЀòŠòºÝ ëð¦,Ý  ð ë „à©@ßëð ðë  àÐ ïÐ ó°ÆÝ0í° à ë ñÆÏÎ©ï  À ï°©@âˆ-ó ó°âð! ÇbÆâÐ ÿ þ‰°ñ ë ëðÝ0õÀí ¯3¾þÀáÀûÀâ0ï0âÆEq–ó°õ ó a óÆÝ@ Ý0âp EQï Ä0ÜÀ ÇÐ ï°óÆâða<â°ݰÇ«â«mÞ â0gy a<¦üÝ0aüïï°g¹óÆóÆóÐ &@ 9%U3Ý0âÆñ aüâ°ð°óð°óÆ)&ã0Vàȳà3`*: óÐ ó ïÐ ëðñ Ýðâ°Ý0Ý`Êÿð”°Æâ`Êóp]Àçþ ]ÐÑ.íÐÐð°ëðâÆÝ0â°ó¦<æ zx »Pzø » âÆâ0ë0ÝPâÆâÆâ`¹ ^àèTè  V Ä`Êâ¢=â`Êó ó€Øÿ ‰â°ï°ï°E!aÀ ç ÕÀ ÕP áÀ ÃÀ âýëÐ ëâ Úëðá ÿÐl` ˜ÀE°ï0ë0ˆýݰÝ0âðû°” ïÐ ñÐ óÐ ëâ°ïÐ ë@ ï ï@ ·à Äp Çp ó ¢ýã0ëðëðâ°óPaÀ Õþ ä åä ëPÝ0âðݰï°Ýðâ0â°Ý0ëðñ ïÆï°â0ï°èp 4ì ï°ñ Ý€Øâ°ÿÆÝ0ââ°g¹EâÆï0ëðó ïp–ë0âÆñ ï0ñëðâ`ÊïÆâ°ï0ÝÆóaÜ ¦,ëÐ ïÐ ¦ aÜ ¦,ëÐ ïÐ ¦ aÜ ¦,ëÐ ïÐ ¦ aÜ ¦,ëÐ ïÐ ¦ aÜ ¦ âÖu{×mÝAqâv;¸Nܺnïº5Lx°[Cq뺽ëÖ0áÁn Å­ëö®[Ä»5þ·®Û»n ìÖPܺnïº5Lx°[Cq뺽ëÖ0áÁn Å­ëö®[Ä»5·®Û»n ìÖPܺnïº5Lx°[Cq뺽ëÖ0áÁn Å­ëö®[CqëÞu;øn¸uÝæ‰;ønÞ»nóÄÍû7OܼƒâÖÍ{—pÝܸë-7OÜ»y ç7OÜ»ƒKÚÕÛ—çîõê-y×ðÙ`ݶÑp0OÜxÄY‡/qæYG‚"g¤JšGœuÞ!hžnæahžuÄ™‡ q¦šgnæYGœyÄy‡ yš‡¡nÞéfnæéfqæáK¤ÄY§†æ!¨›yrgqæYGþœyę熺‰gypžuøbhžnægžnÖéfqg‚Þ‰L‚ægžnĉgwÖ™©yÞg‚æéfžnâY§›uÞ))²yêfªwºygqæéf¤º™‡!qš‡ yÄ™gn'žuÄ™§›uÞ!HœxêfžuæéfnÞ™Gœyº™§›wÄ!hqêæyÄ™§›yºyG‚懠nÞ™Gœyº™§›wÄ!hqêæyÄ™§›yºyG‚懠nÞ™Gœyº™§›wÄ!hqêæyÄ™§›yºyG‚懠nÞ™Gœyº™§›wÄ!hqêþæyÄ™§›yºyG‚懠nÞ™Gœyº™§›wÄ!hqêæyÄ™§›yºyG‚懠nÞ™Gœyº™§›wÄ!hqêæyÄ™§›yºyG‚懠nÞ™Gœyº™§›wÄ!hqêæyÄ™§›yºyG‚懠nÞ™Gœyº™§›wÄ!hžwÄ™‡¡ßYgøæ'qº!Hœzþùgž’æYG‚âYG‚ÞYG‚ºYGœyšG†Þ™gqægqæg’àsgnæ!†ºyGœyºygwº!HœzºYGœxÄ!Hœxºyg¤Ä™Gœuº™G‚Þþg¤æah‚ÄYG™G7à3x¼Có`ˆ8æÑ ‚ˆcâà Cæwt#2ëÇ:ÄøˆcÝÈN"qŒ<ˆaݘÇTÄ1q0¤ð™G7Ö!‚Ìcð È<º1‚ˆ)õCøBxˆcâXG72‚Ì#Ç☇8òŽu¼cëèÆ<Ö1q¬Cï‡;Ö1øtcâxG7Ö1q¬cRÄ1qtcóàË:ÄAqD‰‡8qdþ똇8æ!‚ˆcð È<ÄÁ—n¤$똇8Ö!Žu¼câ˜G7æÑwÌCï˜Ç:Þ1uc☇8æ!†¼cï˜AºuÌCëèÆ<ÄñŽxˆc%AŠ8Þ±Žy¼£óX‡8â!ŽuˆcëèF=ÄÁ’0dݘ‡8Þ!‚ÄCð˜Ê<º1q¼C‰‡8à1•ytcâx‡8qÀc*óèÆ<Äñq$â€ÇTæÑyˆãâ H<ị̃óÇ;ÄAxˆS™G7æ!Žwˆƒ ñ<¦2nÌCïAâ!xLeݘ‡8Þ!‚ÄCðþ˜Ê<º1q¼C‰‡8à1•ytcâx‡8qÀc*óèÆ<Äñq$â€ÇTæÑyˆãâ H<ị̃óÇ;ÄAxˆS™G7æ!Žwˆcëx‡;"‚ˆcóXÇ;ÒuÌCóÇ<ÄŸyü£%áK7æAyˆcñRæ!ŽuÌcâX‡8òxd@õ È<Ä1qÌcóX<¦òq¼£óÇ:Äñq¬cëRÞ±Žyäë˜Ç:â!Žyäëè<Ö1uÌ£óÇ<º±Žyˆƒ!ݘ‡8æÑ w¬cÝXÇ<2qÌ£óþAæ!Žut)â˜Ç:æÑuÌCóèAÄ‚tãÝxG72wtcâX<Öq¼câèFqŒ<ˆaݘCÜñŽnÌCóXÇ;Ö!ŽyˆcâXÇ;Ä1qÌ£HéÆ;º1uÀƒ!ðÇ:æ!Žy”dâ˜Cæ±qÔƒ îX‡8ÖÑyDëˆ_2uˆƒ ó H7æÑxˆcÝXG7æ!ŽÈ¬cð(É;Ä1nÌCëè_æAw¬£H™Ç;ÒwÄCñ˜Aº”y¸#;Ç<ºAw¬ãñ˜G7ÖñqÌcðx‡8â!ŽxdëèÆþ<2†ˆcñxÇ:æ!ŽN1Ýx‡8æAq¬CÇ<º”n¼Cñ(I<Ä1uÌCóÐ;Ä1uÄcyÇ:Þ±ŽÈtcâˆÇ:ø"Žz¬c@ïG=2n¬ã éÆ:ºñq¤‘éÆ;"Ãxˆc ‡8æÑ ‚Ì£HéF<Þ±qÌCóX‡8àÃq¬£ÖáÖaÄ!ºáÄaJbÄaºáÖ¡âÖAæA"ƒ!à ÜaÄaºaÄaBÖAÖáºABâaâáÖAÖAæaÄaÖ¡æ!Ä/ÄaÄ!2þÂÞAæ)æAÖ¡BæAæ!ºaæ¡$"£$æ¡Ö¡æ!æ Ä¡ÿÖaÖ¡"ƒ ºAæ¡â¡ÞAÖáÄaÄaº/æAæ¡æ æÁÄaJbÄaÞ ºáæaÄáÄ)ÞaÖÄ!ÖA¢æ!æ!Þ æAæaæaæaºáºabÖ¡øBæaÜáºáºabÖ¡øBæaÜáºáºabÖ¡øBæaÜáºáºabÖ¡øBæaÜáºáºabÖ¡øBæaþÜáºáºabÖ¡øBæaÜáºáºabÖ¡øBæaÜáºáºabÖ¡øBæaÜáºáºabÖ¡øBæaÜáºáºabÖ¡øBæaÜáºáºabÖ¡øBæaÜáºáºabÖ¡øBæaÜáºáºabÖ¡øBæaÜáºáºabÖ¡øBæaÜáºáºa¦âÖAÞ!æAæ¡æAæAâº!æ æauVgÄ!Þ ºaÄaÞaºaÄaþºaºaê¡bÖaÜ)Ä!Þ!ºáºaºABæAæAø‚ Ä!øBâaº æaÄaºaÄ ÄaºAæ¡ Kbºáº!bº!2¢æ¡øBBÖAâºaÄ¡ÄaæáÖAæAæAæ¡ÞAæa*ÞaÄaÞaÞAæAæaºaÞAÖaBº!Ö¡Þ!Þ!"áþ ÄáºaÄ!Þ!Ä¡"£æ>æ¡bÄ!Þ¡$ÆaÄaÄáæAÖ¡æ!ÄaºBæáÆþaÄ æABæ!iÄáÖ¡Ä¡âº!ÄáºaÄ!ºaºAæA²ƒ/ºaºaÄáBâÄáºaÄaÄ¡ÖaâÖ¡âÖaÄaºaÞAâºaæAºaºaº!ÞaÄ)ÞaÄaJbº!ÄaæáºaÄaÄadÄaÄaÞaæ¡bÖaÄaÄaæAâÖaÖ!2ÖáºaÄaÄ/Ö!ºaÆÁBÖAÖ¡Þ!Äa²CøbÞaºaºaæAæAÖaþÖábÄaº!dÄ æ¡ÖaÄaâAÞaæAâAÖáÄ Äa¢æ æAæAÖÖ!2bºaÄ âAÞa"£æ¡ÖaÄ!ÞA¦BÞAæ¡BÖaÄaæAâ "£æ¡ÖaÖaBæ¡BêAÖaºaºa„ ²cÄaÄ æAÞaÄaê æ¡àabÄaÞ¡ÖaÖAæ!ÄBæ æAbÄaºaÖa@Ö!2â"ÄaÖá¢Þ¡ÞaÄaþº/æ/ÖaÄ¡ÞA¢æ¡ ×AbÄaÄaÄáºaÄaÄBæ¡æ¡Ö¡æ¡$âÖABÞaÞ ÄáÄáÖáÖABÞaÞ ÄáÄáÖáÖABÞaÞ ÄáÄáÖáÖABÞ æaÄáÄáÖ!ºabÞaÞ!2Ä!Ä!æáæAæaê!æáæaæá:%Ö¡"£"#æaê!ê¡Sæ¡"£>xê!êáƒëaê¡æ¡æaæ¡æ¡ò¡òaêaX8öþaöaêaê!ö!æ¡ö…óaò¡X8ê¡ö!ö¡ö¡ò¡ö!úaê!êáö¡ö!Î8úaúáê!ú¡þ!úaòáòauö¡öáŒû!þ!þaòáòáò¡þaöauö!ö!öáyþaþaVg3ÖáÄaÞaÄaÄa*Ä âAÞ¡àCÖ¡Þ ÞAæaJ)ÞaâaæAÞ æA¢ÖaBÖáÖABæ¡ÞAÖaÄáÄaÞ¡ÖÖaÄaÄáâaÄ þÞaÄaºádæAæ¡ÞaÞ æAÖabÄáàCø¢æ¡æAâºaæAæAÖá¢$Þ!ºaÄ>ÄáÄaBÞaÄ¡B€|áÄ)ÄáÖ¡æ!桢¢ÞAêAÖaÖAæaªÖAâAbÞ¡bÞ)ÄaJ‚/Ä æ¡ÿâ!2Þ¡âæAæAâaÞaÞ!æ¡æaºá¢âº!Bæ¡$âáÖaºaº/ÄaÄa¦Bê¡$¢ø¢æAæAÖáþÖAæáÄáÖáÖaÄaÄ!ÞAæaº ÄaâaÖAúoø)Þ ºáÖAæ¡bæA¢Öa@Ö¡æ)ÄaÄaÞaæabâÄabÖ¡Ä!ÄaÖ¡ø¢æABæAÖAæAæ¡æaæaÄabÖ¡æaº/BbÄ!æ ºaÄaÖ¡Ö¡$æ¡"cÄaºAæ¡Þ¡æ!ÞaÖa@Þ¡ÞaºaÖAêAÖa¢ÖAæ¡ÞAâáâÂÖaºþ!2º!ÄaÖa@Þ¡ÞaÄaºabÄabºáºáºáÖaÄáÄaÄabÜ¡âAêa*ºáÖ¡Äaºá¢Bæ)ÞA¢æAêA¢$âaæAºaºaºAæaÄ)Ä!ÞaÞ!º/Ö¡¢øBâa¢BæAæ¡Ä!ÞaºaÖaº!æáÖaºáÖAæAâ¡Þ¡æ ºa"CbÄaBæ øbÄ!æAæ Äa‚/ÖAbÄaBæ øbÄ!þæAæ Ä!øbæ¡æAæ¡$Ö¡Äaº!;Ö¡Ö¡æaÄáºaÄaJbÄaº Ä¡BæAÞa*ºaÄ>ºaÞ)ºáÄ!;BâàCøbÄ ÄaÞ ÄáÖáÄ!;Äaº/ÖáÄaÞAæAæ¡$æ¡Ä!;ÞAÞ¡$æAêAæaÄ/Ä!ÞAæaÄaÄaÜAæAÞAæAæ¡æ¡æAÞ¡$êAÞaø‚ ÄáÄáÄaøb*ÄaºáÖAâºabÖÄaÖaÖ¡²CþæaÄabº¡$æ Ä!ÞaÄaÖ¡Ö¡æ¡ÖAæAbÄ!Ä)ÄabÖÁÞaÞAæatס$æAâAbÄ!æáÄ!Ö¡$æ¡âaÄ Ä æ¡æaà¡ÞAæaÄaÖÁÞAæáºáºaæA¢bÖAÖAâáÄ)ÄaÄaBâ>²# Žå³nž¸uëæ‰{×mž¸yÝ®‹'nÝ;qã‰{·îݘˆHP"‘HD$˜&¢ D""‘ˆH40‘h` ‰DDb„ %ÀDP" %A‰@œ0 D""ÑÀ@|0‰h` ÑÀ@ 0LÄA‰DP"#¤D ˜ˆ&…‰ Dþ"(‘Jø` FˆÀ@$ ÄI‰@P"LD$"qÂ@D‚‰ D">˜ˆH|0”!qÂ@40”HA‰DP"LD$N˜J¢@à1æ±qÌcâÈ<ıŽn#”HD$A‰@P"‰ D"&I‰@ 0LD$I‰D 0”Ä)1BJ$‚‰ D"PH‰DP"”HDÑÀ@P"”HDùÁDP"”ˆ%ÑÀ@P"ì Ä")ˆR" Ä")‘ˆâ„ D"(‘ˆâƒh` qÂ~0”GˆÀ@P"”X$%þ1É¢‰@à")…‰@`"(‘&‚‰ˆA‰DPb‘‰ˆD‘ˆ‚ˆÄ?˜J¢ D "1Â&‚h` (ˆHŒðƒ‰ D"(1‚ø`""‘ˆHP" ÄA‰@$¢‰@` 8RJ$âƒá$˜J,’@` (ˆD 0L#A‰DPb„”H%F‰DD"ŒX$% J‰F‚€j""A‰E2b„‘X$#‘ˆI.HD$(1Âá.’‰ D"(‘ˆHP"L J$‚‘XdA‰Fb„ %þÑÀDD D ˆDDhàJ"‰ˆ% JŒ‰ D"ˆDD‰ D">˜&HÄÑÀD 0 %ñÁ@ 0”HÄ$)‘J$…‰ D"vR"LDA‰@$‚ø` N8B⃋D`"ˆ"LDqÂ@|0 ñÁ@L2!`Ä1ò „ˆC"ñèF3(‘ˆwˆcâ@ˆ8"•wtcïèÆ8Þ!ŽutcïÊ:º±Žqˆ!â‡8Ö!„¼CãXG7ÆAiqPzâÇ:Þ!•uŒcïèÆ;ıþqtcëèÆ8$"„t!Ý ´D¤"ŽwèÝÇ:º±Žn¬CïÇ;Ʊq¬Cëx‡8Ö!Žqˆ!”^G7$"Žq¼Cã 5AŒwˆ£âXG7ÖÑu¼cÇ8ÖÑ „¼CóG7"Žutcã@ȥDZŽq¬ãÝÇ:Äq¬£ãXG7$"Žu¼cãXR7Ò „tcïèBƱqŒcïèBƱJ¯CëèÆ¥ßÑu¼Cã¥×ÑuŒCëx‡8Þ!Žut!ïÇ82Žuˆcâ@ˆ8$"ŽuŒc‰ „5âÑuÌC똇8æqŒþ¾C"â@H7H$Žn¼Cã@ˆ8Òw dïÇ8$ò©¬£ãXÇ;º±ŽwˆƒÒëÇ:ÄÑut!ãBÆ!‰HeãX‡8ÖñŽnŒcâÈ;Ö1„ŒCãXÇ;º1qŒCãXG7Ö1n¬cóÇ:ÞÑuˆcóÊ:ºAéuˆC"âÇ:Äq¬CãXG7ÖÑ J¿CãX‡8Òq¬CëèÆ;Æ!•uÌCÇ:º±© Dëx‡8º1n¼CëÇ:(q¬É'ë ´TÆqHäâ°ï ëðã°âðݰ$ã ë !ë þë0óÐ 1ë0ñâÐ R±ã0Ý€ã°ã€ï Ý ë0óÐ Aië0ëðݰï ã ”öâÐ !ëÐ 1ëÐ ã°â@iâ€â â°Ý0ï ëÐ ñã ó ݰÝ€â0ñâ â°âðâ€R1ï ݰïÐ ë0â0$Ò !ëRâð$Ò â0ââðëÐ ëðRÑ Ñ ó Ñ !ë0â€ï ã0â°ݰ&â°$â°ã kÒ ïÐ ï0â°Ý€óÐ 1ñþã ïÐ ë !ë $"ï@kÑ Rñâðâ°â€ï°â°ï@"â@"ï ï ”¶Ý0Ñ AiëÐ ã ë@iëÐ ëÐ ëàã ë ë°oãðâ°ïàïÐ ã°ã°ã ã°Ý€â°ݰÝ@iRAiëÐ ãðÝ ã°â°Ý ”¶âÐ —&ïÐ ë 1â0ëÐ ë ë ë0Aië ï°”&”†Ý0â°ݰÝ ã€ã ݰ”&ë0ÝðëŒp y â0ë óÐ ïÐ ‰Ð ëþðëðëàáÝðë ÎÑ ï°ï0âàóðâï ëÐ3ââ0Ýðâ°=ãëðâ!ñðëðâ°ï ï0ïï°Î!ë Î!óðÑ3Ñ3â°â0Ý ñðëðëðëðÝðë αó°ÝëÐ3Rï ï€=Ó ñ0=³ã°ïÀ‰ ÒàâëÐ ï ó ï Î!ë óÐ 3ÝðÝðëðâ°â0αâ°âðñëÐ ï ñðÝðâ0Ýðë ë óÐ þë ñ°âáâðë ó0Î!ëðâ âëðë°˜âðë ï0â0Ý0ñâ0ï°ÝðÝðëðë ï0Ý€âðëðñëÐ ëðÑ ë ‰Ð â°ó Ñ Ò@ ïÐ K"ñ°âðñâÐ8ë ñÐ ëðë ó ëðó ë âï ñ°âðâPâðëàëðáâ°Î!óà!ï°Ýðñ!ë ó€αR‹¹ÝðëÐ ï°â€RëðëÐ ‹9ë þï°ݰï ó âÐ3ëðâó°Ýàâ0ñó0ï°ï°ó°ïÐ â0ñëðÝÎ!ñ ëàëðâââ0ï°Ýðâ°â°â0Î1â=ƒï€â°ï°âðëÐ ó°ï°ïÐ ó ó€ï ï€ïРαâ°ï ó°âð´=³â°ï ó°âð´=³â°ï ó°ï°ï ëðë ï0ï ïâàâð!ó°ÎÑ ï ñðâ0!ñ°ï0âàëðâþ0ݰ=#ïâáÝðÝÐ3ëÐ3ë0ë âÐ3âðRá!óðñÑ3ââ0âðâï°ï°ï°âëÐ ïÐ8ó°ï ñàëðñâPëÐ óÐ ÎÑ ï°ï ó°Ý€ï€Ý€ï°Î!Ý€ï°ï°αï€Ýðâ0ë ë ñðâðëðâ0ï°ïÐ â0ÝðâÐ3Ñ3Ýð1ë ïÐ âë ë ï ñ ó€ÝðÝ óРαï0ݰâðëÐ ëàâÐ3þâ0ï ï ï ñÐ3Ýðâ0=³âðáëàë =#ñ°âëðëðó°Î!óÐ ï€=#ñ°ï°â0ëðâàëÐ3âÐ3â0=³ï°ó°=#ë õ0ï ë ñ°Ý€óÐ óÐ3âðëàëÐ â0Ý€ï óàݰï óÐ !Çb€â0ÝðÍ@ ïâðâÐ óÐ ï áñ ï0âðó ï Kâðñ ï ï0ëâðóðõ ó ëPâðë0âðëðë þï0âðëÐ ëðâ°ï ï0ï0ëðݰâ0ë ó Ñ3`±ñðÝ0â°â°˜ë0ñ Ý0Ý0ñëðñðó ï0â0âðâðëÐ ñëðó ñ@ ÍàââðÝàñ ëâ0ÝðݰÝÐ3ë ëðóâ°â°ó Î!±˜âð`Ñ ïâðóïÐ ï°ó óðâ0â°âðë0ï ï€ï0âðëPâðë Ý0´&ï0â€âðÝðâ0âðñÐ ïþ ‹)ñÑ ï€αï ó ñ ë ó ï°ï°”` 1â°Íñâ0â°óðëR±ï âðëâ0âðëð!ñ ñ ëðñ =#=³ñ ëðâðâ0â°ï0âðñðâÐ ë0âðñ ñ óÐ ï ï°ï°â°âÐ óàë ï ï ïâ€ó€óï°â°$âðRñó ñ Î!ë óðëÐ ë =#ï0âðë !ïÐ ó@k‹Ù ñâ°ïÐ þá1â€=#Râðëâðâ°â°ï ëð´öRñ!ï€ï ë ëðâ€R±Î!ñ1ë0Ýðë ï°ƒï€ó°óÐ ï°âðëÐ8ñ1ë0ÝðÝ0´öâðâðë Ý0â€ï ñ 1ݰâ°ï0ñ Î!ó óàâ°âð1â0ÝRï€ï°ó ï ïÐ ï€R±â°âÐ óð!ï ï°ÎÑ ó ï Ý0â Ý0â0ëðââðþëðâ€Ý0ë0âðÑ ë $Ò ë ñëàÝðó ï°$âðó ë ëRñRñâ€ï0âðâ€âðÝðâ°ï âðóàâ°ï€αÝ€ï0ÝÐ3ëàâ°â°ÎóÐ óâà1ââðëðÝ€‹Ù ñ@kë ï°ñ ëâ°âðó αâðëðóð$òAkó€Ý0Ýðâðâ°ï°âðñðó Î!ï ë ññ ñ ó ëðâðݰó ïÐ óþ ï ó ëàâàë ï ï ݰï ï0ï0ó€óâÐ ï0Rñ´¶ï0â€óÐ8Ýðó ï€â°ï°ÝÝð!ÀÇb°$Çâ0ï0ïâ°ó€â0ï€ó€`ñ`±âPëðë0ë0ñ€ó°ï0ñó ñ0ëðó€ñ°ó°ó°ó°ïë0âë0K2ïââóPKÒ ó óðë`!ó ó óë0ë `Ñ ó°$ó ó°ó `±oݼnþóĉ›—P\¼wâ({'.ÞºwïÖu‹·nÝ»uïÖ½o]·wââ‰['N£¸wâ*j\7o»uâÖu{·N\·wâÖ½[×Mã;qõº½ë¦Qܼuó4v[÷NÜ:q뺽['®â:qñÞiŒïݺnïÖÍ{·.ÄZ¶mݾ]ëî\¸è®õp×Ã]¾}ýþÜ×C`Âs=†ëñbºøzì°‡Åàzðëa±Æ‹=öð×C[|= öÐYu[…=¬†î8-àƒu’xxh‚‡xHˆzHˆwHˆxHˆx’zhZhª‡„X‡zwHˆu¨‡xHˆz˜‡w˜‡z€¦z’z’z€¦z˜‡z˜‡u˜‡xþ˜‡zX!©‡u˜‡xHˆz˜‡x’xHˆzX‡y¨‡yx‡y¨‡w¨‡y‡‡zxhZ‡zHˆz˜‡zøQJ8†yèvœ‡w‡z‡yxq˜‡nxqˆ‡ux‡u8ˆyè†uè†u‡x‡z膄XxX‡w‡y0·ƒ˜qÐq˜‡u‡yXx˜~è†y‡wèÛ˜q˜‡n€ q=çy¦gR˜†i`…A8W'àç-˜g8 ç€èI؇=˜„è„Vè…h8`h8Hh8h8øy>>z†ƒçè3€ƒè3`hy†…þ‡’h8Péþ€>y†ƒ––i>†ƒA˜ç3˜é–>…†ƒê=8ƒ Þ8¢Þ8è3`h8 g8(i8˜ç3j8™>yÖê­æj®†ƒ®k8°&ë=8ƒ²–g8´fë¶vk®>²>´†¶>·öY°YHßUðkFë\Oèê3L°[XJ`¿fJ`J°NO`ëÐqЈyè†y€ ˜x‡u‡y‡u˜‡n˜q˜‡n‡yè‡x€‰zè†wè†x‡yx‡u‡zè˜q€ q˜q¨‡u‡yX‡n˜‡„x‡xx‡ˆ„cÈ1þ‡uè†uè†D˜‡x˜‡z˜‡xȇ'- ‡#Ð-¨‡„¨‡„p!‰‡zøÑz˜‡z€&wHˆx¸‡[’z˜‡zøÑzx‡­‡yˆ!y‡y¨‡yˆ‡y¨‡„ˆ‡yX‡zˆ‡2’w¨hz‡{…„ˆ‡z€¦x˜‡z Óx¨‡yx‡zHˆx˜‡x˜‡zHˆz’’z€x˜‡x€hЇH8†wX‡yèìy‡y膊Јnèìux‡n˜qHˆwè†y‡u˜x‡ux‡nXqxrq˜qX‡yx‡x蘘‡n€ qxq¨ˆu˜qèìx‡Îž‡nxò8ƒ?þß‚?ß‚3€ƒA`…ið†Z8'è'肨'Ø‚?§ô3Ø‚3Ø‚Jÿs8ø‡3€ƒU8ÈÐôR‡ƒ?Ÿx¨‡¨a88ðJßMß‚R‡o ô-(õ]ÿó=€ƒ^/õU8ø€Jß8øög/u8ø‡8ƒ-€vMß‚3Ø‚3Ø‚Jß‚=Ø‚?‡ƒ3€ƒ?߃-€ƒRß‚3Ø‚kv8øó-Ðô-€ö-xö-8ƒ-pwM‡^ßJß‚?‡hß^ß‚gßMß‚3€ƒ?‡ƒ?‡w‡ƒgßwß‚?ß‚}×ô-8ƒ-8ƒ-¨ô-øó-(õ-¨ô=Ø‚þ3Ø‚Jß‚?ß?ƒ-8ƒ-Ðô-Ðô-8ƒ-¨ô-øs8¸ö-øó-àõ-8ƒ-¸ö-€ùkßaß‚3Ø‚Rß‚3Ø‚}ß‚?ßO¸_X…D…ƒ˜qÈYȃU°ÎA¨ô-8O°…[XFq˜qè†l°FX[…A8ƒ-Ðô-øó‡yX‡y‡u€˜qXq˜‡nX‡yè†yè†y膄è†x‡„è†yˆqx˜è†yЈw€˜˜q˜‡Î~‡wè†yX‡yáu‡nF8†<ƒŠX‡wXJ˜‡z’„x‚ä‚#8`~w¨‡ãŸþt°…[[†o¨éOˆz˜^š‡w@[¨‡„¨‡wHˆz’z8þz˜‡z˜‡zHˆzHˆz˜‡zx‡„¨u°…[…Äjðæ¬G°Þ¼zõÖ›‡Î×¼zçÕ›Wob½yõÖ›H°Þ¼zëy¬À¿}ø÷/€G‚õ&&:¶n;qóºÝ|'î&ÐuâæÝ|'n¸›ïºì6o]·wâæÝ|'nÞMxÝŠ[×mÞMwÝæ‰›ôÝMq7ç7Oܼuðº½['nž¸yâBléëN_R¬¦Õ"5©‹“Nj0æá÷±_8QúvÁSÏ@,'àüð¸Ëã(~£àþ³ÔA@ :àü#ÐäØ[àü#2œ(²·té 矀Ø]àDŒåœ| Ãù' /ÈQúvÙ' ä.~»Àù'àq—-p¢ôâ·Ëîô£@Ž"N¿Qüv‘Eýã.»àßâd ±ÁÅcQôÕE n…lpDÑWp@ÖQôÕ…‚»ÁÅnptáW}Á‘a‚]@Ö‰ÁáWvd]lG²EÑQÈÖQ$ØEzpDáW²ÁE_]ÀE_NÀ!Q@Ö…_pD±EpDÑ ÂÑWê!‹-²P’M>ùÔóO=ýäs %²Ü‚É]ÀÑ×þ²ø" %ÒäSKiŠs #²Ü‚ÉÁñXâÌÓÍõ$bÍ:ÀvÔMóˆ³Î<ëÌÃ*þPóÜ48ïtÓÍMâÄ#Î;ëˆ38ët³Ž8ë¼Ó8ó¬óN7óˆ,Pâð<8ótãÎ:óÜ4«ë¼#N=7ÍÓÍÓDáDÿìíDÿDQÅ=N8ñOQ8M>õòO};){C3MUä3 <ÿ¸ÓÅ$ðìc΢P…|ÀqtܨÀ2°þ| #(Á ö­ t .xA'D¡ ü C(Â’‚[Ø[n‰fctBB0n¼£@™‡8æ”nAyÇ:ÞÁ³ytãݨ«º1qÌC@yÇ;Ä1utcݸI7æ!ŽwÌCëxG7æq“yˆ£ëG7BÀˆcäA ñ˜‡8â1@¤ó¨G<æñ„xäžôdLê{ÈbõÇ=dŽcÜBǘG<æqfÜâǘ‡:dArø¢óxÇ1n!‹c¬£óþ@G3dq nÈ‚ èÀF-yÄ#ó¨‡:lAãÍã·èF=æ j ãØ81ŽAuÈb"Ǹ…,šAtÜ‚¾ðÅ<ÞÑŒ[ÈâQ‡,°A `Ì#óˆGLp²“`"ñ¨Ç<ê‚ă ” PæáŽ›°j¬šG7ÖAqÌ£7éÆ;ÄwÜdëxG7æq“y¬câˆÇ;Ä›ˆŽÝˆÇ;Ö!ŽyEëÇ<ºq“w¬ƒUóèÆMฎwÜD7é†8B„­ru«N Å$º‡I졬f=Ã’à„®nÕ IpWP…  ÿÀþ‘‰—pþB°`„B@ð±‹5lA|I¨Â= àÀ k`Bq áqðÀ$À @<€6>@€P\ UøG<À$A|NøG&J@h\" UøG’à„*ü#CøG†ð$Øx Ñ8¡«gàBq 8  ù¸Ä0 pã €;x0„€­IpWà^¶:Á½NH‚’à¶:a¾IpÂVÀU'tÕ \uÂV'lÕ Ip‚0_'$Á IpBœà^'¸× [u‚'¸× îuBœÀV'pÕ þuBWÀV'øw¾NH‚þ¶ê„Ï× IpWÀU'Ì× luBœà^'ø× þu¹ê÷:­þ’zì#M©AÔq‹‰lÃ÷˜È6€Qx`#óȇ8æq[ÌÀXG=æqwdÀ 6¬1t`ãó¸G3¨Qy4ƒ©G<îq‹yÔÃ#èðE7¶ŒxÜÃߘÇ=šAyÜÃóx6¬Q{ƒõ¸‡/¨1zÄÔ˜Ç=šAyÜãß H>RÔcX(È@ðÀäƒ8 Á=$€ðÀ܃ Á?ëáÀêáëáëá€ï­ø°^!¡ïáëáÀêáàëáÀþê%àÀêáòð¬´ðððð$ëáÀâÀê%ëá@ëáàÀâÀâà€ïá@âëáÀê%ïáà@B!ðDb¬°´°°@!øððð$Áêáà8ë%Aâ@$ò€¬!°¬^°Ü"ëáàÀâ$&Áêáàâëá€ïá@ëáÀêá@ëáÀâÀêá$Áêáàà@ëáÀêáà€ïá$Aëáëáëá@ëá@ëáà€ïáþƒ8È‚,¼Ã:ÄÀ±°Š4ŒÀ10‚,t5ð$ƒ8Ü‚,ŒÃ± À<š4ƒ-P‚,tC4að„À:ÌÃ:Ì«¬Ã;¬Ã<Ü„8̃8Ôƒ8ă8̃8ÄC<Ø]7ÜÄ<ˆÃ;ÜD7Ü„8̃8¬ƒ8̃88žT®ƒ8¼Ã<ˆÃ;tÃ:ÌÃ:¼Ã:ˆÃMˆC7¬ƒ8tC0Â1äˆÃ<¬Ã;ÌC"ÔAäC=ÌC><Á<¤‰ðÁhÌCšäÃ<ìC=؃-1È0ÀÃ<äÃ<Ôƒ:øÂ< Ã-D>ìÃ<ÜÃ-¨Ã1àÃDÔC>ÌC=¨ƒ/ÌÃ=ØB<ìC<¨ƒ/þÔÃ=ÀÂ;„:C=äÃ<äC<¨ƒ- æ1øÂ7äÃ>ƒ/Ø>ÄÃ=ØÂ:ÌC=¨ƒ/ÔÃ=øÂ<܃-¼A¨ƒ/̃:ÜAäÃ=À>„:øÂ<܃-ÄAÔÃ>DšìÃ<äÃ<ÀÉüæ<äÃ<¤É<ìC=ìAÔC>$B3ÄÃ;HåÒ¬Ã<ØÝ<ÜD7L¥8ÌÃM̃8ÄÃ:ÌÃ:̃8ÌÃ:ˆƒÝÁC7¬ƒ8ÌÃMˆÃ<Ø8̃8tÃ:ÌÃ:°Ê<¬C7¼ƒÝÁÃ;ÌÃ:¼C7Ü„;,8„Àáð)TBX B%  ˜•Y!Ø€ øž Á?€üC Áþ?ØÀìØ Á? ƒØØœ\@(ÐC Á?ë59üƒ Á?Àê Á?Àê Á?pƒ; ê=ÀüCØÀêÙÀê Á?€ ð€üø€?Àê Á?ÀüC Á?ÀüCØø€?ÀÁ? ƒØø€?€ ðÀüC´ Á?€øƒ(©°+±«±« ë« ¡ +´ëD+µRë« T«¶úž « l+Ø@µ¸¡ (© ”«º¶ž ´ž l« ðlë+dƒ8Ã-ˆC6 @6ˆþ9Ã1È Ã'ÀÂ:XØà«Ã-ˆC6ˆƒ4dC Ã-øÂ1D‚,¬C7øž ð€ ð@tÃ:tÃ<ÀQ7ÌC7¬ƒ8̃8ÌÃ:¼ÃT®ƒ8ÌÃ:ˆÃÌ:Ã1ÜÂ1ØÂ>܃-ÌÃ>ÌC=ÌÃ=ø‚-PÃ<äÃñ 1Ã-ƒ-ì:ØÂ>ÌÃ>ÜÃ-Ì:þÜb1C>Ä>äÃ=ÜÂØÆC=„:Ø5ÌC=܃-ìC=ÌÃ=ØB<ÜÃ-ìƒ:ØÂ<äC=ØÃ-ÔÃ=ÜB=äÃ<¨Ã-ƒ/1øÂ<ÜÃ-ÔC`ÎCšÌC=ÌC>ÌħKÀ<ÔC>ÌC>ÌC=äƒGäÃDPB3tÃ<ˆ<¬ƒÿ¾Ã:tƒ;øo7̃8¬Ã<ˆÃSq 0i üs üp 0i 0i 0i 0i ü³ ĀǓÆÀǓƓÆ@3ǓƓƀÇDSq 0i ps Ls 0i 0i üp |s 0i ¨q ”´ ÄÀÇ€N«q Lq ps ¨q4ÌÃ1ÈB3H ø1¬Ð-ØÂØ#ÜÂäC=ÌC>ìƒ:ØB=äÃ<äÃ<ÜB7ìÃ<¨ƒ/̃?ØÂ<ÔÃ<ÔÃ<܃,܃/tCmßÃ-tC=ÌÃ=øÂ<܃-Ìõ<¨ƒ/äÃ=ØÂ\×Ã\×C>ÌC=ÌÃ=øB=Ôv>ÔÃ<Ô6PÃ-¬Ã<Ü,ÌC>̃:øÂ< ƒ/ÔÃ=ØÂ\׃:øÂ<ÜÃ-ÌC=ìÃ=ÜB<ÌC>ìÃ>ÌÃ=ÜÂ<ÔÃ<äÃ<ÔC>ÌC>ÌC=ÀÉœLÔö<äÃ\ûw>ÔCmÏu=$Â1¼Ã:ˆC=H0‰Ã€ôC& @ @Ã0 „9hC  € ‚Øà=@ ìƒÄ@ Ä@=,Œ.üø@?@  @ ìƒÄ€ Ä-d0éØ€ä± Ä€ Ä€ìC&Ø@ @C'@ àC þ1.üCø@>€ôƒÄ€2ð Ä-ìƒØ€T‚  @(Œƒà€6Ô@ ø@>@ Ø€äCÄ€ ø@>€܃”z Ø€¢Û@ Ø@©Û€ÉÇ€ ¼< ± ± ¼¼ ¼¼Î—º ˜¼ ¼¼ ì|Û€ÉÛÀËÛ@Û€ÉÛ€¢Û@Û€ÐÛ€¢Û€Ð± è¼ ± T½  @Õ+º (º |}©Û@©ÛÙÇ€ (º ”º ¼¼ ¤½ T½ ¼¼ ± T½ ¤½ÐÛ€ÉÛ@Û@©ÛÀËÛÀËÛ€ÉÛ€¢ÛßÛ€ÐÛÀ×Û@Û€ÉÛ@ÕÛ@  €ÎÛÀËÛ@ÕÛ€ÉþÛ@-ÜÃ1È À1 æ1ø1ŒÀ10Â1ÌC-”z-ÌÃ1¬B3¬ ŒÀ1ã­Ð'C<ÔÂËÛ@‡Àú1{#"ûÈG?òAè‰ì#ýÈG?òÑþÔ#~÷EDú1‘zDdù¨Ç>ò±|ì#"ÿèG>ö‘~D¤ù؇DþQ|ü#õøG>ö1‘~äcùG=òñzDäõˆÈ?"ò|z”Æ;øŽnÌCï˜G7ÖáŽuÌcÝ(‰8Þ1nÌ£ëÇ<ÄqÀyˆã€óèÆ<º1nðݘÇ:º1qdïèÆ;º1u¼£œ‡8Þ±ŽnÌ£óÇ:Ä“igÚ FÀŒ@;5A F “¡`(vF€‚ `ÚA B‘tgÚ F€“ug(¢vF€‚h'›BÔNÛµ3‚îŒþ@;&CÉP0÷˜ BDÁº3í#@ÉP`2Œ#èN6i”MíŒ#@É´Óv“¡`( F€‚ `( F “ig(vF€‚ `(0 F€‚ `Ú1 „ˆ‚ `(vF€‚ Àd(vF€‚ ÀdÚ F€‚ Àd(" F€‚hg( F€‚ `( F€‚hg( „ˆ‚ `Ú FFF@;FFF„FFFFLFF4oP`P`´cP`P`Pþ`´ÃdP`P`P ›´Ãd´cPÀd´ÃdP`PÀd´cP`PÀdP`PÀd´cP`P`´cP`P`P`P`PÀdP`P`PÀdPÀdP`P`P`P`PÀdP`PÀdP ›´cP`P`P`P`P`P@ˆP`P`P`´cP`PÀdPÀdP`PÀd´Ãd´cP`P`P`P`P`PÀdPÀdP`P`´cPÀd´ÃdP`P`P`P`P`´cPÀd´cP`P ›P`PÀdPÀd´cP`P`PÀdP`þPÀdP ›P`P`P`P`P`PÀdP`P@óP`P@ˆP`P òaVAtcÅÁ>aæ¡¶ íP þáVAèQ7¤aV!êá FF² F Ö¡HÞ¡ÖAæAâAæá€Ä:hÄaÞ¡ÖaºaæA:ˆºaÄ¡¨ÖAH桃æ¡æAÖ¡Äá€ÄaºaÄáÄaÄ¡B€|áÄ@âAâa"!êáò¡,B"ö¡â§â§þ!~ê!"êa"ö!ö¡úa"êa"ê!êaæáÜ¡þ模$¢&bêAê~þ¡òá|a"öA"þA$¢ô§"¢à§òá$¢úa"¢ò¡ú¡"âê!þ¡$¢$¢â‡ŽºáÄÞAHÖáÖ¡Þ¡ÞAæ¡æAæ¡ÖaÄAÞ¡Þ¡âAÞAÞAæaº¡$ÄaÄaÖAæáÄ!ºaÖáÄ¡ºáèºáÄaÖaÄ!P íP`´c´Ãd´ÃdP@ˆP`PÀdPÀdP`P`PÀöÁVÀFFFF:P;F@;FFLþF;F@;FLF;F@;F² „LFLL„LLL4LÚLFF@;„F„FF@;„ˆFFFLFFFFFFLFLFFF@;FFFLFF@;FFFLFF@;F² F@;LF4O;FF:°Q`P`P`P`P`P`P`P`PÀdP`P`P`PÀdP`P`P`P@ˆP`P`P`P`þ´ÃdP@ˆP`´cP`P@ˆP`P`P`P@ˆ´cP`P`P`P@ˆ´ÃdP`P`P`´cP`P`P`P`P`P`P`P`P`P`P`P`P`PÀdP`P`PÀd´cP`P`P`P`P`P`P`P`P`´cP`P`P`P`PÀdP`P`P`P`P`P`´CˆP`P`P`P`P`PÀd´cP`PÀdP@ˆP`P`P`P`PÀdP`´cP`P`P`P`P`P`P`P`þPÀdP`P`P`PÀdP`PÀdP`P ›P ›PÀd´#›P`P`´cP`PÀdP`´cP`P`P`P`P`P ›P`ºcPÀdPÀdºƒ¼¡æAn²AšA|·þlL¦;x@þadˆ¡ÁšÁAæáP!P`P`ºcP`B@æAææä2Hê¡9ÅaÖá¨Þaº!Äá€Äá€ÄaÞaæá2ÄaÖ¡Þ¡âA:hÌ·ƒæáâáB€Ž!Ä Ä!Äaa1ê!þ¡"þâ$âê!êáòáêáòáêá$âê!êa1ê!þ!þ¡&âêA"êáòá"âòá"âšáˆáê!£ò¡ò¡"âàçêa1êáê!"þ!øáþ¡$¢þ!"ê!þ!ú!ú¡"âòáòáêáêá"b1,äòá"¢"âêA"þ!þ¡þ!þ!"þ!þ!þ!þ!þ¡òáâ'ŽaÄáhÄaÞAÌ÷Öáæ!ƒæAh(Ä!ÄáÄÁͺaÞaÄaæá€Ä်aÖášsþÞ!ƒæAÞ်aºB`P`ºcPÀdPÀdPÀdP`P`´cPÀdP`´cPÀdP`P@€8@óP`ºÃdP`P`PÀdP`PÀdP íP`P@ˆ´Cˆ´cP`P`P`´cP ›P`P`ºcP`PÀdP`´ÃdºÃdPÀdºc´ÃdP í´cºcP`TQ`TMLFFFFFFFF@;FFFLFLFFFFFFFFFFFFF ;FþFFFF`>FFFFFF ;FLFLFLFFFFF@;FFFF@;FFFFFFFFFFFF@;FFFFFFFFFF@;FFFLF ;FF@;FFFLFFFFFFLFFFFFFF4LFFFFFFFFFLFþFFFF@;FFFFFFL¦;FFFFFF@;„FFF ;FFFFF@;LFFFFFFFLFFFFFF@;FLFLF@;LF;F@;FF ;FFLFF@;FLFFFFFF ;FFLFFF„F „áúAŽáŽÁŽ!òáPÁ„²) „a1²ádádáþ¬áòlL:0æá€ººaºaÄaÜá€æaÞ!:¨æ¡9çAæAæá€âAJBæáºaÄ¡ÖAÖ¡Ä¡ƒÄaâAÞaÞAÖ¡Üá€æA¨ÖAº!áò@ èÖ¡!#þ!þ¡þ¡þ¡ãòáòáêáòáêaäëaä#b1êáêáêáêáòaäëáòáêáê!þ!"þa$b£òaä£þ!þ!þ¡þ¡þ!"þ!þ¡þA"ê!##êaäëáêáêa1"ÂþBþ!þ!þ!êáò¡#þ!êa1êáòáò¡þ!þ!þ!ê!êáò¡ò¡ò¡þ¡F¾þ¡þ¡þ!,‚ša¨9çá€æAêÜaš“Äaºaæaà¡ÖAæáÖáÖáÖAæaÄahºaÄ¡$ÖáºAæaJ¢ÖAÖAÌwÞaº!:P;FF ;FF„F@;FLF„¨;² FF„H;F„H;bŠ#PŒ@1…B‚ THpŠˆ("Fl…EŽ@AþPaD…FDAÅ…QDA#*¡p ‚(F b„Â(F bŠ(F b ‚(F b„Â(F(bŠ(F bŠ(F bŠ(F ""Š(F b ‹(¢bŠ(F  ˆb„Â(F bŠ G bŠ(F  ˆbŠ(F  ˆbŠ(F(¡pŠ(F bŠ(¢bŠ(F(‚ Š(F bŠ(*‚ Š(F bŠ(F(bŠ(F bŠ G Âþ(Œ€Â(Œ€Â(Œ`“B#(4 # 0 # 0 # 0 # 0 # 0 # 0 # 0 # 0 # 0 # 0 # 0‚B¡0 # 0 # 0 # 0‚B# 0 #  # 0 # 0 )4 # 0 # 0 # 0 #(4 # 0 # 0 # @ #(4 #(D #(D ¡0 ¡0 #(4 # @ #(4 # 0 # 0 # @ # @B# 0 ) #ðPI=ÿü3O¯»º³‡ (Œ€Â(ŒÐлîZO>ÿÔóO>ÿÔóO=»ÖSÏ?ùÔóO>ÿÔ“Ï?õ¬\Ï?õìZO>ÿäóO>ÿäóO=ÏþSÏÊùìšÏ?õäSÏ?õìZÏ?ùü“ÏÊùìšÏÊõä³ò³ùüSO>»Öóì?õüSÏ®ù¬¼k=ÿÔ“ÏÊõüóì?õìZO>+ç³k=ÿÔóO>|çÃ÷®ùüSþϳÿäóO=ÿäóÛ‰#N¯æº£ï8ó¨kp<ï¸cî<æÎ£®¹ó˜Û¾æ¾ÓÍ<ïtcn7ót3O7ÝÌ#N<ït³N7âÄ#Î<âÌ#Î:óˆ³Î<ât³Î;!ŒÐ E⣑B# @ #(4 ¡ #44 # 0‚M¡0‚B¡@…@Á‚p@!± 2‚¡ "( FЂ4d(à F€‚4d6BF€‚ `( ˆBF  `(BF€ñ¡€ (BF€‚(„ ( F€‚ `( F€‚ `  F€‚ þ "( F€‚ `( F€‚ `(  F€‚ `( F€‚(d( F€‚ ` BF€‚ `( F  `( F€‚ `( ‚‚ `( F€‚ `( F€‚(d( F€‚ € ( F€‚ `( F€‚ `( F€‚ `(BF€‚ `( F€‚(„ (BF€‚ `( F€‚ € ( F€‚ `( F€‚ `( F€‚ `( F€ñþAÁP0Œ#@ÁP0Œ#@ÁP0Œ#@ÁP0Œ#@ÁP0Œ#@ÁP0Œ#PÈP0Œ#@ÁP0Œ#@ÁP0Œ#PÈP0Œ#@ÁP0Œ#@ÁP0Œ#@ÁP0#@ÁP0Œ#@Á2#@A2D!#PAP0…Œ#@AP0Œ@!#@AP0Œ#@ÁP0Œ@!#@ÁÂŒ#@ÁB†Œ !Q¨D-ÜÑwÔbþ< F€‚ `(ˆHC¢P a¸£î¨Å x0#@øP0‚ˆc☇¹Ä¡»n¼cúz‡¹â!Žw¬£º3—8º1qÌ£ï˜Ç:ÞÑy¼£óÇ:º±Žy˜«óÇ:º1qtcâXG7걎nÌCóG7BÀˆcäA âÐW7(‘ÔãùøG>þñ¬z¬¬ÿ¨ÇÊúñgUg•ËÇ?ò±²zäcWùøG=þÑìceùøÇ³öñgý#+«Ç?걫zü£ÿpÛ?pözäceÏÚÇÊò±«g­,+ËG=þñ¬<‹oϪGåþQ•=«»þêÇ?òñ|ü£ÿ¨Ç?pözü#ÿÈÇ®êñ|ü#+ËG=vµP‚ÇXG7Þ!Žy¬CæŠÇ;Ä¡/qÌ£â˜G7Öw¬£ëG<Ä1qÌCæê†¹Ä1utãÝxÇ:Äþ¾cïèï:à!ŽuÌÃ`ÝXGPØd(ˆ ‚‚ €  ‚‚4("(° F€‚ˆp@!#@Â(„ (BF€‚Ø„ ± ‚‰6d(  ¢ˆ ` BÂD„(  F€‚ ` ! Â…ŒAÁ4…ŒQþÈP0…Œ#@ÁP0Œ#@ÁP0#@ÁP0…ŒAP0Œ#@ÁP0Œ@!#@ÁP0Œ#@ÁPÀ#@ÁÂŒ#@P0#@ÁP0Œ#@ÁP0Œ#@ÁP0Œ#@ÁP0Œ#@ÁP0ŒAÁP0Œ@!#PÈP0Œ#@ÁP0Œ#@ÁP0Œ#@ÁP@Œ#@ÁPÀŒ#@ÁPÀŒPÈP0Œ#@ÁþÂŒ#@ÁP0(0(0 1(0(0(0(0(À(0(0 2(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(À A(0(@(0(0(0(À A(0(0(0(0(@(0(0(0(0 A(À(0(0(0(0(0(0(0(0(0(0(0(0(0(À#€¡#€# #€#€#€#€#€# #€#€þ# #€#€# €#€#€#€#€#€# #€# #€¡#Ð#€#€#Ð#€#€#€¡# # #€aï°â0âó óÐ_â0Ý0â°ó /â ;âÐ+Ý0Ýâ`.âÝ`.âðæ"æ"ñÐ ½²â`0âÐ+ï /â0Ýðñð!Çb`.ó ëÀÿ»Rù°+õ°+õðõ°2nó,ÿPùðùP|“ÿPùðõðnóõðõðùðùðõþðnóù°2õ°+ÏòùÀ7ÏòùðùP»’»R»’8³28“ÿð,+ƒ3ÿÿP»R»RÿPùPÿ+“ÿPùPùðÏòõ°+nSÿÿÿP|“ÿPÿÿP»’ÿÿPϲ2õðûýÖðºâ`m#óÐ_ê2ë0Ö6ëðæ2ݰï°ï°óðÝ`.ó ë0â /ð°ó ï`.Ý0âðëÐ# A#À(0 1(À 1(À(0(À A( >(0(061(À 1(0þ 1 A Á Á(0 1(@ 1`# #Ð (06Á¡€#€0 1 1 Á Á Á¡#`#€# #€Á(0€#`#€€#€#€€#€#€#€#€€#€#€€#€€#€ #€#€#€#€#€#€€€#€#€€#€#€#€#€#€€#€Ð# #€€# € €#€#€€#€#€#€þ#€#€#€#€€#€#€ #€€#€€€#€#€#€#€#€#€#€#€#€#€€#€ #€#€€#€#€#€Ð#€#€#À(0(À(0(0(À(@(0(À(0€#€#€#€#€#€#€#€#€€¡ €#€#€#€#€#€#€€#€#€#€#€#€#€#€#€#€#€#€€#€  €#€þ€#€¡€#€#€€# #€€#€#À(0(À 1(0(0(0(0(À(0(0(0(0(0(À(0(0 1(0(À(@(À(@(À Á#€€€# #€€€#€ €#€€#€€#€ €# #À(0(À(@ A( ((0(0  A(@(0(@(0(0 (0(0! ó`mâ0âàæ2âðâ0â°ê2þæó /ÝÝðæRâ`.ï0ëðëPâ0æ2ëðë ëðë`0Ƴâ0â0Ýðó ÝŒp y â`.â°”õ°2ÏÂ7ù°+õðõÀ7ý°+õ°2ùðõðù°+ùðùP9ùP9ùðù°2ùðϲ+ù°+õÿð,ÿ»Rÿ»’ÿPÿÐÿ|“ÿ+“»ò,õ°+ùðùðù°+ùðgùðùðùðùP9õðù°+ùÀ7ùðùÀ7õ°2ùðùÀ7ùðùP9nóÏòùÐù”` Ý0Ý0æâï þóÐ Ö¦/ó°â°â0â0â°Ý ó óÐ ï ó æÒ æ"ó ó°Ý0ë ó`.â`0ë ñÐ ï ó°! Q61€# #Ð#€€#`#€Á(0 1 1(À 1(@ Á A A âƒ`#€€Ð # #€`¡# #ÐÁ A(À(0(À Á 1 1(€#€#€#€#€#€#€€#€#€#€#þ€#€# #€#€#€#€#€€#€#€#€#€#€#€#€#€#€# 0(0(0 1(0(0(0(À(0(0 Á(0 1 1 1(0(0(0(0(À#€#€#€€#€#€#€€# €#€#€#€#€#€#€€#€#€#€#€#€€#€#€#€#€#€#€#€#€#€#€#€#€¡#€#€#€#€þ#€0(0(À(0(À(0(0(0 Á 1(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 1(0(@(0(À(0(0(0 1(0(0(0(0€#€#€#€#€#€#€€#€#€#€#€¡ # # Ð#Ð#€#€#€#€€#€#€#€# #Ðþ#€#€#€#€#€#Ð#€#€€#Ð €Ñ¡Ñ#€#€@( Q 1(@(0(0(À(0 A(0!`.ð`.î`.â`0ë Ö6ë0æ"ï .ó°ï°ïÐ_ó°â`.Ý ;â0ݰâ`.óÐ ë ë`0ëðÝëðݰó!ÀÇy`.óðëÀ+“|ƒ3+S•“Vùðùðg+“ÿ+“»’|³|SùðõðùP9ùðõÀ7ûñÿPÿ»’»²»²1¿2õþðõÿ–|³Ÿ<ŸÿPÿPÿ|ã6|“<Ÿ|“‰”Ð Ý0âðëðâðæë0â0â`.â0ë0Ý0Ý0ëÐ+â0â0ââ°ó æÒ+â°Ý0ëÐ ½Ò ï æÒ ó`.ï`.ð°0 ™¯ù›ÀùŸú¡/ú£Oú¥oú§ú©¯ú«Ïú­ïú¯û±/û³Oûµoû·û¹¯ûº½ïû úšÿûpú#€#æ2ó æ2æÒ ó`.ó úÒ óÐ ë0æòóÐ ë .Ý0â°â`.þâ°ó ó .æ2â0â /â°ó°óÐ ó ëðÝ`.ïëÖ‰ë‚ѱ?bÄ­ë&î]¢#î“XQb¾Šõ,JÌ·/_Å}óU¬'qŸÅ}óÕ‹˜oãÆ}ÿòý«÷rßË}ÿòEÌ÷/߯zÿòIÜ1ß¿|ÿòýË'q_Ä|ÿòIÜ÷²â>«ù$Ïb>‹”Ej&nÞ:qõº­'nž¸yó ìö®Û¼nâÖu[×íÀy»ÍW¯[·uóÖ‰(nÝ;qqv›·NܼnëÄÍ 1b VE&]ÚôiÔ©U¯fÝÚõkرeϦ]Ûömܹuï.½ooþÖûòÕ#…çîÞ‰{÷NÜÜwâæ­ë6O ¼wÝÖ‰(n^·uâæÅ‹'pÞ»¹ëÄÍëïݼuÝæu›·n¼wëÄ­ëöNÜ»yĉG ¶æy'žwBHÄ—<Ä(žwº¡Dµ}Z³ð¥},ªçB;l­Öö¡$J(I$‘H"I¤DJ „E¡$’D(I„’DX ¤ÄD(91’DXL¤ÄDJL„’@JL¤ÄD(‰äDJ:@aJ¬²òJ,³ÔrK.»ôòK0ÃsL2Ë4óL4ÓTsM6ÛtóM8ÕÜ'"âÜ©Çx˜…NL¤ÄDXL„’@J „’)‰„’DJ „’H(þI„’@( ¤Ä@`,1J „ÅD¡$‘@`L„’DJL„ÅH( „’@( ‘còCÞY‡’|¬¬'Ηês`‹µªžŠöѲžˆö‰hŸúÙÇ¢~úÙ'¢}þɧŸúùÇ·ö‘¨Ú}*Ú§¢j÷‰hŸˆöég‹ö‘hŸö aOŒÕw_~ûõ÷_€x`‚ öwŸ|ˆs§xà©Çz@!BG qºYgqºHœnÖGœwÒg®nÒëFœwÄYGœuÆ‘yqÖéfqÖ§›uºçuÄg®nÞ§›uFNOœwÖ ‘còcqÖ9,‘—öyik®þ»öúk°Ã{l²Ë6;ì}ÈÞç¥}$Úçë|"Êgëlˆ!ÎÖ{o¾ûöûoÀ|p 7üpÄW|qÆßç∃§wê§x°áîgžwæ§9𛇼‘×éfxÄèqÖéfxÞéæuâ¹¹¹âçuš›çxÄY§¹wÄYçnæyGœæÖyGœuÞ§›9&1Ö™§9q"‰(=ò×'=qæ¹ü¹FžKœ¹Ä!_œuÄYGòÅ™Kœ¹ÄaqüO #ˆ8Ö1²uˆC€‡@ıqdd \‡8þ7²uˆc8"Žò‰C€âHþ8æ"޹ˆC âx‡8Þ±Ž‘‰cóX‡8"ŽuˆC âx‡,þ±q¼CóÇ;ıޑ5gâxÇÈÞ!ŽwŒì#{‡@FöŽ‘­cdïH7ÄØ h\ÍxF4¦QkdcÝøF8þmÿˆqÜQw§að¨lp·ˆ£âè†8š³qÌ£ëèÆ:ºÑqÄC 8š³ŽwˆcëxÇ:ı޿ˆC #›Ç;æÒuˆcïÇ;Fq4GÈëÆ:ºñqÌy!HÄ1ò †yŒ¬9‰ØÇ?ÄAAöÍcó@fz汎xˆ£™Ó$ß<Ò3ũš™Çþ\æ±MòÍcóXÇ<ºÑÌxˆœñÇßq,ðݸÅ?æòq¤g™@⑞yäé‰Ë:汎y4㶸ECoÑ0Úq¤hE-zQŒfT£åè÷‘ÔãutG=ÜwÔõ€Âƒ¼cÍÈ<ÄqÄCïXÇ;ÖÄ1ÎcdóXÇÈæ!ŽyŒlÝX‡8æÃyŒlÝX‡8æ!ŽyŒlëÙ<þÄ1uˆcâˆ8æ1²yˆc☇8æ!ŽyŒl1œ‡8æ1²yÄp#›G7Ö!Žy¬£óè†8æ1²yÄp#›‡8æ!Žy¬£ëÇ<º±qÌ#†óˆá<Ä1‘Í#†ó‡@º±Žn¼CóÇ<Ä1uŒl#›G7â!ŽyÄpâ˜Ç:F6qÌCó‡@ÄQuˆcëÇ<Ä1uæâ˜Ç:Ä1uˆcâ˜Ç:šs‹¬CóXÇ<Ä1qD䙇8æ±qÌCÇ<Ö!Žyˆc݇@º! [ˆA yÐq:QtTÈC&r‘|d$'¹lûˆÜ?"þçŽz¸£î Ž;ÜQxÀ<°AÄÑtãsyÇ:Ä‘qÌCóˆ8æ‘qÄe☇8òˆ##‹Ç<ıqDóX‡8ÖñqÌãë@Þ<º±Žæˆ£9!`Ä1ò qÌcóè%"qÌ#ïÇ<Þ!ޏÄC™Ç;ÄqÌCóˆÇ;Ä1wˆ#☇82wˆ#.ñÇ:ıŽyÌeñÇ<âÑyˆcݘ‡82wˆcä‡@æñqÌ#ïÇ<Þ!ŽxˆcâHÏ<Ö1wˆcñx‡8æqÌE‰‹8â!Žyˆcñx‡8æAþqdïÇ<È#ŽuÌC‰‡8â!޹ˆ#.ïÇ<â!ÄCó 8Ö!ޏ¼CóèÆ<Ä!y¼C ñGzı޿¬ãâXÇ<ıŽyDëG7n±y¬£å›ûæÑuÌCóèÆ:æ!ÄcóG3n!†yŒlâxGlÀ@Ékg{ÛÝþv¸Ç=lûˆH=þ9wÇõØ#<ˆwÔ#<cÞ±qÌCs™‡8Ö1uÌCóÇ<º1n¬cëèÆ<ıŽy¼£âˆK7æ!Žut#=ï˜G7q¬cݘÇ\Þ±ŽŠcâHO<ÄÑþ0âyƒ8æÑw¬#ÿØÇ;º1—nÌ¥™Ç:º1—y”¯ó ß<ÖѹtC óX‡8æ"ŽutãÝXÇ;ºn¼£óH7ÒÓuÌcÝ(_7æA>q˜è†uè†ò阇¹‡z8ŒwøŸn˜‹yX‡n`Ÿn˜q¨qˆ˜‡¹8 ò™‡uè†w膹˜‡u8Œ¹x‡n˜‡u‡uè†w˜‡ô‡yHqˆy膹‡xxq¸…Hx˜‹n(wX‡wX‡n˜‡n˜qˆyX‡n˜‡nX‡y1i†ch†c8†@;¹KC5\C6lC7þLœ}¨‡|ȇ:"w¨w w¨w€w¨w¨‡0Çyè†u˜‡u‡¹‡y‡u‡yè†xè†yX‡n˜‡uè†yxè†wè†xx˜x‡yè†w‡y蘇nx‡nXq˜‡nX‡æˆ‡yX‡yXq˜qXä D8†<ƒwè†w‡uH„ˆ˜‹y˜‹y‡ô‡ô耇¹x‡nx˜ qˆy‡¹è†yw˜‡u˜xx‡ux‡ux‡n˜qøq˜ x˜‹w耇u˜‡u‡y‡x‡¹€‡¹xèwX‡yˆw(x˜‹þw€‡¹˜‡n€öy‡nˆnp‡u˜‡w`q(Ÿn˜‡æHwè†yˆx‡yqXwX‡yˆ‘Y‡y˜ qxwX‡yX‡y‡wð…ˆy‡u‡yxX‡y™y‡wèx‡nxò‡wè†u˜q 1x‡fh†/ü°´€7œKº¬K»¼Ë¸Û‡ȇ:t‡zpâp‡zh˜z€‡zè»àà˜‡nx‡y™¹˜‡uè†yX‡yè†wX‡wXqq Ÿn˜qˆqx‡u‡z™ux‡¹˜‡n˜‡n˜q˜‹¸è†x‡ô‡nˆ qˆyþ‡nF8†<ƒw‡x‡uH„ˆXq˜ qˆy‡¹˜q˜q˜‡¹‡yHqx‡ô˜qˆy‡yX‡n˜‡ux‡n˜‡n˜‹‘™‡nXqX‡w膸‡yXwx‡¹˜q˜‡q‡yHqx‡uè†yXqˆyX‡yq˜‡uè†yˆw‡wq˜‡¹‡yX‡nXq˜‹y‡ux‡u‡y‡yHw‡yhqXq˜q˜‡n‡y‡¸ˆ‘™‡uèqXq˜‡up‡ux‡n˜qˆn˜‡wp‡wˆ‹n˜‡u€‡wX‡wè†wX‡nþ…™æˆyX‡‘™‡¹hq˜‡ux‡ô€‡xX‡nx‡uð1x‡µ<ih†c3ÃP†€Teø‡` €€S؇ÅTeøHU†!ƒTe°HU†ÄTeÀKVmUWœ}ø‡|¨‡}ȇ¨Ãzp‡Èqâ€âh˜z3 uˆ q˜qˆnX‡nxèq˜q˜‡u˜pqˆ‡n˜‡uxxˆ‡wè‡ux‡n˜‹y‡y8ŒwX‡yxˆx‡¹‡ux‡xx‡`„cøƒ<‡wX‡wXJø‡}˜‡u˜q˜‡u€‡¹˜þq˜‡n˜‡¹™uˆ‡‘ˆyX‡w‡yx˜‹yè†y膹‡nx‡nX‡z‡uˆ‹n˜‡u˜x‡n˜ qxq˜q˜‡n˜‡nx‡x˜‡uxq(Ÿn˜‡‘Y‡x™yòyq¨q˜‡n˜qX‡xäwHqX‡y˜‹n˜‡‘Y‡y蘇u˜‡n˜‡n˜‡¹è†u‡¸˜‡n˜‡wX‡yq(ŸyX‡w™yX‡w˜‹wX‡n‡uè†ô˜‡¹x‡[؇yq˜qè†wˆ‡uè†y‡¹˜‡‘q˜qxq˜‡u˜qˆn€…<‡lhËlÈþ†@;'€—€TP†ˆà€Te›}ø‡€rø‡è€rø‡€ȃrЛè€rˆè€ràšé-‡(± (‡4Ú‡(‰Ø‡(‡Ä (‡7ú_``3òhœ}ˆ\­w¨‡†©x¨w¨w¨xpx + pqè†yè†u˜‡u˜qx‡n˜qˆx‡n˜‡nˆæX‡wè†uè†y‡naqˆq˜‡u˜‡nxî†y‡æ˜qè†yžâyaqè†`„cÐ1èqx‡Dˆˆup‡)awþ˜bq˜˜q˜‡u˜q¨qXq˜q˜è†w‡yˆx‡x‡wX‡yè†ux‡n‡u‡y‡ywhŽu‡yè†wè†w‡yX‡y‡z‡u‡yaxXqˆ‡nX‡y‡u˜Ž ‡yè†w˜bq˜qX‡¸™yhv‡æèq˜q˜‡n yè†w‡uèqˆnˆ‡n˜q˜‡u‡yX‡nˆnˆn˜qhq˜qwáy˜â1$†cx‡u˜hq˜‡u‡æ¸…}(ãw‡yˆn˜‡u‡yè†u˜‡u‡yè†x˜âþnx‡yX‡æ¸1iȆcÈq'@;x‰€zøP ^e›}P‰È‡P†}ø‡}0›|P†ˆÈ‡eøš}€Te›|P5Ú‡e¨ˆ}PÄÙHUÞj®îj¯þê˜+@XœÈÙ‡|ø‡:„‡Èq‡zpâp‡zp‡zp‡zh˜0Øq˜è†yX‡n˜‡wè†xX‡yánX‡y‡wXq˜‡w‡xè†yxq˜‡ux‡u˜‡nX‡nxq¨q˜‡uè†w‡u‡w˜qˆ‡u‡yXxè†uèþ†y‡y@žˆ„cÈ1X‡yx‡xè†Dˆ‡u‡yî†yˆnáwè†2^‡yè†yè†up‡y˜âyqˆwX‡x‡u~‡yX‡yèî†y˜âx‡wè†2ž‡y‡w‡yX‡wˆwX‡n˜â‘Y‡y‡wáy‡)î†uˆ‡wX‡nX‡1\‡æ‡xánaqˆqX‡yˆŽqxè†u˜‡n8b˜qˆqÈîxè†y‡ux‡‘ˆn˜q8†¸¨‡y8‡y™xè†yX‡y‡yˆn¸…˜q˜‡n˜‡ux‡nˆwþðL¨OÀOHóZðLXq(ãn˜qè†[ƒwqè]i(ƒ0Cx €r¸‡H€eˆˆ7 €`€À‡ˆð‡"8˜€røeÈtP€8…ˆ¨‹‡0€€h‡€L¨‚Èô€*ø‡L— €v€P†õFÈ€ЀvˆˆLW†}8€€L¨‚ȇM €`€؇ȇ`ø€8¨‚‡0€€h‡ˆÈt9È€¸hˆ(‚`€IÈôr؇ŠÈôr؇pø8xvˆˆþLW†}8‡LˆL—ƒ € €‰Ø„€¸€zø‡€FÈ€¸hØ”Oy•_y–oy—y˜y™Ÿyš¯y›¿yœÏyßù›ï‡Y° Ÿàù”߇¨‡¨¥WzwXúz€‡z€¥w‡zØ£z€‡z€‡z'à'u˜‡nˆwè†u˜˜‡nX‡wXqè†u˜qx‡y‡)î~‡u‡wXqXqáx‡wˆnX‡w˜‡)î†u˜qqX‡xî†u‡nF8†<qX‡nx‡uH„ˆáyXqX‡yè†yX‡n˜‡u€q˜‡ìþ‡y‡ux‡nxè†u‡yXqXqˆ q˜qX‡w˜‡yè†uè†wáyˆwè‡yx‡y˜bq˜‡naqˆ‡waq˜‡nXqˆ‡u‡yˆ¸è†wX‡‘Y‡nˆ ‡xˆnX‡wX€ vïØº‚ Š›×íݺyëÄ·î¸yß½;öŽ˜¸yóÄ„'nÝ»n»½óX°Û$ä@ I9„ʇ8@‰øPö@€HÀï_€åö¥`’r •bVh±V1bn¸hûo_²HÄ€0¢ß?Ĭ a­(@¬LÿWÎ>éÀZˆ€Ä H°Å•€DøìSœH(€â‘X¢‰'¢˜¢Š+²Ø¢‹/£Œ3ÒX£7âã,€,ˆVâ?9²•Ï?õüSO=ûü£¤“îÔ㎒ðÔãNþ=ðÀS<õÀS;ðÀƒ˜!ÀÓÍ<â4O7ó¬ÓÍ;âÌSÐ<â$Î:óˆ3Aóˆ#Î<ï¬#Î<ë̳Ž8õtÏ:ï$Î<ݬ#Î<ë¼³N7ïÌ#N<ïˆãÑ:ð¼³Î;ñ¼B$Çä!Æ<â¬3O7”¬µŽ8ëˆSÐ<â¼³Ž8ët³FÝäÎAëÌÓÍ;a´Î<âäQ7ÍÓM7ð¬3Ï:âÄ#Î<â48ÝÌ#Î;ð¬3OAÒ®ãNAïtó<ëÌS8ëÌ#Î<ݬãQ7õ¬Ó <‰³Î<âÄóÎ<ëH»Î<ÃÎÓÍ1ó¼CÌ:âÌ#Î<â¬3O<ÝÔÍ<Í#þÎ<ÅÓÍ:óˆ³N7ëãQ3ëˆ38½38ï¬#Î;ëH;8ótÓÌ;ñˆSÐ<ñÌ#FÇÔ#Î<u38ïØRÏ:óˆóŽ8ïÌSÐ;ñ`Ò&d豈g£­Ç<â$NAïˆKëd#Ž9e°CObò@‰ ÌT@@;ˆ)óO\±O:ˆ•óÏ\±Ï9ˆ)óO”óOqÊôCOÀ“Lü³Ï?û¬ÅÏZûèÀk§ [Å)ÃV\áÏ?û VÎ>Å òÏ9PÎ?ˆ)óO:ˆ­Uœ2lU€ ëhƒX;ÿ@@²¸ÓÖ>kñ³Ö>º0ÀZˆ þ²O5°Ö\±Ï9ˆ•ÃÖ>ÿ@9ÿðc-ûаÄ(cç@Ö‚Aì£ÀZp€¬Åk@®°d@D! Kh¢0…*\á ý1 +,#†€ø‘ÀáíCIÿPÒ>œäC%Á£ðP<êáŽz¸£Xª<Ü'ˆ)눇8Ö1>DyGŸ 2qÌCë˜G7æ!ŽuÌCë˜GAº1‚ˆ£ó(È; Ò§y¼£ë˜GAÄ1¬uÌCéÓ;ú´qt#Œ8FÄPq¼£”ØÇ?Ö1uÌcÝ(ˆ8â1uˆãéS=Ö!Žþy¤ïX‡8æÑ§ytcóX‡´Ö!Žy¤YGŸæQwdâ(È;ÄñŽ‚ôiÝÀÈ<Ö!Žytãâx‡8þ8¬n¼ÃšÃGAæ!ƒ¸CóÇ;ˆá‘yƒê<1Ž!Žu¼CóG<º±qDóèÆ<Äq b£ê£Œœ#øÇ>Š£Œµä#ˆ b Œ|Ä!(Nij`| ˆ)Î?ê(ãá(ÎZŠ£Œ}ü1ÊhË>eì#€ücˆQÆ?΀ü£€2þ`ÿ@N±¶ì1ÊØG8€}°0¾ò/}ëkßûÚhý˜…\áßâG~˜…?j´|ä£ûÈÇZêñºÃIð¨‡;|èŽz¸þÃõ€G=খ ™G7<"Žy¬câ˜Ç:<²ŽnÌ£ó0H7æÑ§y¬£óèÆ;º1‚Ì£Ç:Äyˆcï0< 2‚¸cÝxÇ< ‚‘wxäÊ!`Ä1ò qÌ#âXG"þ±ytcÝ0È< "Žy¼CëðHA0"Žyˆã ïÇ;â!Ž‚ˆcëxÇ< "ŽuÄCWžG7 Òyˆ£ óÇ:æ!ŒÌ£Y‡8Þq¼cñGAæ!ŽyˆÇ<ÄñŽuˆcâx‡8àaxdâ(È<Ä1q`¤ë8†GÄ‘yˆ#ïˆÇ<ˆ1qÄ£þó(È<Þᎂ̣!Æ;æw¬ãïðÈ:âAŒuˆcñÇAæ!ŽutãÝxÇ:ÄÑŒu¼õðÅ1¬qŒw¤ÝЦ8nñ‚tcâ8H7Ö‰vx¢õØ>*nq=¼£óèÆ:ÄQqÜB ë7Ä! sh!ŒðÅP¢@þ¨Êñ@ý¨€®ðt ¦ûX±v ¦û@L9þ”ÁÕ€0€vH 0 €¬%(Ç?öñ lAŒ2ؔ〠þ‘ ÿ”‘f kAŒ2ز8Âþ²Å*Ú±}ø£t@Ì>Ä£†@þ±@ÿ8bÖ²bì(Ž2ă˜rüC 0 €¬%PÆ?R˜ìPÆ?Θì£ØxŠ£Œœ1kID"ðQ¢ëc?ûÚß>÷»ïýïƒ?üâ?ùËoþó£?ýæ÷Ç,¬à @ø~pÅ,ˆ!ÃãßÇ?êñzüC=ìÃù;8 <Ôƒ;Ôƒ;Ôƒ;Ô–( <ÔC˜Ã<0BôIAtÃ:¼C7ÌC7ÌC7¬C7¬ƒ8ÌC7¼C7Ä<Ä<„8Ä;tÃ:ÌC7¬Ã<ˆÃ;̃A¼ƒþ´Ìƒ8DŸÌƒ8Ä;¬C7„8D7¬ƒ8tC0Â1äˆÃ:`Ä:$Â?ìƒ8ÌÃ:ˆÃ<¬ƒ8„8ÌÃ:ô‰AˆÃAÌ<ˆÃ°Å> †2ì AìÃ?h$@¬b(Ã? †2ôb(ÃZäCÇÔ‰(ôÀ*¬À>üÃÀ A(äÃÀ A(üC€2¬Å> †2übd`À>üC €ˆ@ìÃ?,@¼„Â?ð$ˆÁ <@?üà A, À>ˆ‡@¬Â þ Æ?ìb(Ã?„CqìÃ?h$@¬€2ˆb(C>(ôÀ*¬ÀZ¤@h€(@À?ìb(Ã?„CqüÃ>ð@ AàÃ> †2üC8¬E€2¨_tJçtRguZçubgvjçZÌ‚‚ýÙ_!ØŸ+ø üÈ,ðCøåÃZøÐZ “Àƒ“¸C=¸C=ÀC=¸<ÔC†ÁC=À<Ôƒ)„À<¬ƒ8ăAtÃ;tÃ;„8ÌC7¼CÃ8D7Ä<¬ƒ8̃8̃8„8¬Ã;¬ƒ8ÌC7¬C7`„8̃8ÌCÃ8`„8„8ÌýC<¼CþDÂ1äDŸ$ÂZÄC7ÌCAˆÃ:̃8ÌÃ:tƒGÄ<ˆÃ;¬Ã<ˆÃ:ˆÃ:ă8üQ7¬Ã;̃AˆÃ<ˆCA¼ƒ8Ä<ˆÃèA7¼C7ÌC7¬C7¬Ã;Ü‚¬CŸŒC7ôI0‚/ä”H€2ˆG€2¬ÅP@´[Á F9üC@9ìCq(Ã>üC=€BqœB[ìÃ?ÔC0P0€ Æ?ìC&<bTÁ?\ Fäb”[(C> F#d@h@; Ø5d@0€ ÆZd FüÃ>¼ÁÀ0ÀìC=¨@€\@(ìÃZìÃ?ÔC0P0€@üÃ> F9ôÃ9 [Áþ @([ìÃ?‡2üC0P0€@ Ø5d0€Ç?ìb”C?œbä&|ÀÚ^>ìb”Ã?œÀZ F9lgïúîïoð ïð’Ÿ?4x"oòÂXð÷íC>üC=ÔC>¬Å>üõjïöR/<¸õÂõºõƒ;P/–¸CxD$„@7̃Ã8ă8¼Ã<ˆƒGtÃ;̃8̃8¬ƒ;Ä;ÀƒAˆÃ<ˆÃAÌC<ˆÃ:ˆÃèÁ<¬ƒ8̃8̃8ÌÃ;ø‚¼Ã:ŒÃ=‹Ã:„#ÃÀõíƒxì[ì[ìC‰ì[ä?ìÃ?쉰C$À>xß>°Å>ˆÇ>üÃ>üÃã­Å>°Å>¬Åã‰Ç>hß>´Å>ˆÇ>xŸxìÃ?<^?´ô?ì÷=ÞZ<Þ?<Þ?<^?ˆÇ>üC?´Å>üÃã­Å>¬E=üÃ>ÌtS;õSCuTKõTSuU[õUcuVWõ,XA!Ø ØØÂØ_!0ï,t_=üC=üC=äC=ü÷n¯;l/–P¯;Ô–Ô–¸õÂC¼C=0BˆÃ<þtƒ8ĈÇãqß>t_ÐTVSúõíC¥cúõíÃL?^¦{ú§ƒz¨‹ú¨“z©ÿƒ?Ì‚¼‚€g!X B¬ÿ C?lß>üƒöîC=¬õþÃöº÷b‰öÂC=¸õbI=`I=dXˆÃ=`BÌC7x„8¬ÃtÃ;tÃLõ>€¼>dß>˜ºVïÃZÔ÷=^KïÃ÷£ú«ÿú³û»öÍ‚Äz!Âü¿B!ü ƒ?ôÃ?ìCöľ|õþ¬÷¯Þ¾z æcÈÐÝBwݹƒWcEóâ1 ±®ÛºuóĽ[÷n8‘ëÄÍ7OÜJqóº½{·Rd·uâþæu›'²›8‘õºÍ7O¤¸yëĉœ·NœHx"»u{×mÝ»xïB0:–GLšÑ”æ4©YMk^›@òÇ,¼`%@diüðÇ>XÔ† @¡ hhN÷:(@XÀ<І,Ÿù̧;à¡;Î)ï˜&B°ŽnÌC®‰G7汎yˆcóÇ:汘y¼#☇HÄñŽxˆcc™Ç;º1•ؤóþÇ<Öaq¬ãñèÆD2‘ˆcâxÇ<ÄñŽnÌ£見Hº±qˆdâXÉ<Äñ[ˆ¡õ˜Ç:汎y„€¾È*ÜsŸÿèAúЉ^táÃV2ú£}ÔcžFG=þ„Ña¸ƒm`…;X¡‡ixC2X€ 𹻣nr<Üá¦Ö)®¡Dæ!q¬câx‡8D"‘ˆ+y‡Hº‘ÀcóxG7pòŽn¬#8yNº!’yàäëÇ<ÞÑw¬#ïèF<Æ2qt#Œ8FÄ Žx¬CëHÄ?ö±qÌCóÇJà!ŽuˆãݘG7â!Žy¬£+Ç<Ä1qÌc%ÝXÉ<Äu¼£ñ°‰HæÑuˆc8Ç;Ä1nÌ£ëèÆ;â1±Ì£óÇ;Ö1•ˆãâ <ºwˆDæA\£æaÞA$æA$æþÁÖiÞ5ÖaDâæa%ÞAVbD¢DBæAæ5ÄaÆ"Äaº!æ¡l¢ÞaÄa%ºáÖ¡âal]ÄaºaÄapÂ5ºaæa%ÆâþAXCVâÄ!CpbDbºaÖaÜ¡ÞaÞÁÄà\\CB ŽáÀèÖ ÛÐ ßãÐÁöðÁnÄ  Ü¡ ò¡þaêa"ôÉ@NlNÜèèÜèÜ!Ä¡L!Dbæ¡ÞaÞaDbÖÁ&Ä¡ÄáÖAâA$ÄáÄaºáþDºÅaºaÄaÖADâÄ¡ºaÄaÄaÄaºaÞaÆbÞaæA$2$áò@ Ö¡æA$(¡ Þ!ºaºaÄaÄaÞaDâºáDbÄ]£Þ¡DBDâÖÁDbÄA$ÞaÄA$æ¡ÖÁ5ºçA$Þ¡8qÞA$ÄaÖ¡Þça,ÖaÞaâADâÖAæAæaâ¡DBDBÖAD¢Þaæá8qÄ¡ÆbÄaÄaºA$êAÞÁD¢êADÂ5ºaºaÄaÄaÖaÄ!D"þºA$ÄßA$æAæAÖaÄaº"×!ºáæA$Ä8QÞaºaæAæánaæAæ¡æAæá-ßA$º8±æAºA$ÆbÞ¡æA¤A Äá—æa!B Ž!à O5SS5W“5[“EüGö d€Eö!úa b!þaê¡"*Àô êÁÑMÜÜÞ®N æBD¢Þ¡æ¡ÖAÖ¡DÂ&(rÄaæaÞ"çAÖáÖaÄaº»aDbÖáÆaÖaÄaÞ²\ãÖ¡Ö¡8Qºþ!áò@ ÞAæAÖ! B$ºáºaÄáD¢æAlBæaºaæA$ªâDbDbÜA$ÞaÄA$æaÄÅA$ÄaºaæAÖAæADbDb,Þò8QDbÄaºADbÖAæA$æ¡Ö¡ÞAêaÄaÖaDbÖ¡æ¡8Q(Ò5Ö¡æA$ÄaÆ!C(òæa,D¢Þ¡æAæAæ¡lB$ºáÄaÖAæA8±æ¡âaÄáÖáÄa8±Þaº"ÅaD¢DB(Rna8±æ¡æAæAþæ¡DâÞR$æç!CÄáæA$(aV$áþ \Y“UY—•Y››|aÚ  bòáê¡ òa ¢þaþ¡ê¡ ÀÂêÁêÁêÁÑàÁàÁàAw ¡N`ÖB@æaÄ!ºáÖÁ5ÖAæ¡8Qæ¡Þa,æAÖAæa,âáÄaºáDb8QÖa,æ¡æ¡ÄA$ºAæA$Ä!ºaºA$Ä!ÖaàáâáB€Žáò@8q(¡ D"Ä!ºaºaÄáºaÄaÞ¡(RæaâA8QþÖ¡Þ¡æ¡æÇbÄæA$\CÖaºaÄáºÝa\cæAæ¡æ¡àaæaàçÁ&ÖaÄaÞ¡ÖAº!ÄaÖáDbºaºaæa,ÞADbÄA$æAÖ¡(RæA$ÄaºáÄaÄaºaæãAÞ²DBæAÞaÞ¡æA$æAæAæ¡ÞaæaæA8QæAâADbÄal¢DâDbÄ8ñþaæAÞ¡æ¡æ¡æ¡ÞaÄ¡ÖaÄaæ¡æ¡àaæ¡ÖAÖ!ÄþáÄaÞ!8"B |!àÁ&˜‚+Ø‚/ƒ3Xƒ7˜ƒoÄ €BX„G˜„KØ„O¸„¡@Ü*‚™sNàêB€ßaÞaÄ¡*\£Þ¡æAæAÞaÞçA$æA$ÄáÄA$ºaÆbÄa\cÄáÖáæA$\£ÖÁ5ÄáÖáêAæaÆbÞAº!áÄ@ 8QÞ!þ¡ÄaÞaÞ¡ÞAÞAâ¡âçAæAæAæ¡ÞaÖÖa2DÞADÞaÖáÖAÖa,DbÄáº!æáþÖaÄaÆB$ÄaºaºáÖAlÕDBDBæáÖaÞaæ¡æ¡ÖA8qÖAæÁ&ÖaÄA$æÁºáæaÄaÄa8QâaÞA$Ä!lB8ÖáæA$àaÞÁV»A$ºaÄA$ÄaºáD¢Ö¡ÖaÖAæAæaÞAê¡æAæA$ÄaÄaÖ¡lbÄaÄáþAæaÞ¡Þ¡â¡ÞaºaÞaÄaÄA$ºáÖAÖáÄ!ÄA$ÄÁ5ÄÅA$Ä!"áþ :X©—š©›Ú©Ÿª£:Hö¡ Ð!þ„©À 4A«·Ú ¶Ú«µÚ ¶ 4Á 4Á 4Á ÒZÜ@ÒZÒZÜ€ B¸Üäí ¡" N`ÌB@æaÆB$æaÄaÞAâAæ¡âaÄaÖAæ¡ÖA8ñDbD¢æA$\£8q,æ¡D¢*Öa,DBæ¡Öá81ÖA2$"áò@ æAæ!ÄþaÞòÖáæáÖáÖAÖaÄá-»áÖa,8QÖA8qÄA$ºA$Þa\ƒ»aÄáºaÄaÄ!C8qºáº!CâAÖa,DâÄÁVÇbºaºþáº!ÄA$æAÖAÖ¡æADbÄaºaÞaºa8±àaæA$ÄaÄaÖaÆB$æA8±(RæAæAæAÖaÄáºç¡ÞaÆ‚çAæaºA$ÄaÞaÞA$Äa\£æa,DbêoaDBÖáÖ!ÄáæAÞ¡âA8qÄ!Äáluæáª‚"ßaÄaB€Ž!@ª$GÒAþ€EÒA ‚ à–Aþ! ÏÒ#]Ò'=š €Ü 2]2Ó5¡4Ó{A2]zAzAþ2]2ý«[]«Ý€€*`˜N`îB`Äaæ!ÄaºaÖaÄ!Ä!ºáÖaÖ¡æaºaæaàaæ¡DBæaÞ¡æAªbºaÖaÞ¡âAæaÞÁ581ÄáÖ¡æAæ¡lbÄ¡B€Ž!Ä@$ºaÖöáÄaÄaºAÖ¡ÖA8qÄaÖAæ¡æá81ÄaÄaÄ!æAæ¡ÞaÄ!DBæ¡*æ»!ÖáD¢lÕÖáÖáfÖaÞaÄ¡ÆáæaÜ"çßaþÞaÞaÖAæA\cºaæaàaæÁ&8±æAæáÖA(Ræ¡Ö¡ÞÁ5Ö¡âaÄaÖAæ¡æaºaºaD¢ºáæáDºáºA$\Cæ¡Ö¡æá-»aÄaDb,Öáºá—ÖAÞÅá8qÖAÖáÖAÞAâA\C$º!ÖáÄaÄa8QÖ¡lbÄaÄaºáÄaB Žá F  ¡Á~Êa`„< EØAp„òàØAöaEØAòÁ þÁòàÒA(]ÿ÷þŸÿû_ÿI €hR¤©`)EšõRÔK‘&EšJ•RT°TÁ‹1ºÙˆÆÍ4_ÜP!! ž;x(Ý©\¹ÚÊëæQ ±NܺnërŠ[×íݺwëÞåì6o]·œóºå'î¸yë˜Î{×mÞ¼w9»Íë¶î]Nqóº­ë6o¼nïÄÍ{×-ç;q뺽‹÷.D¤cyÄÔ·®ÛºDÿþQ¢”ˆR¤D”QJ4˜R Æ” 9R Á‘QJD)¥D‘ ND)¥@‚œ2¥D° Ž)Q JÃNˆlÈhp È'œ(¥@”)¥@”`CNþD)¥Dƒ5ND)PãDƒQJh0lJÃŽ»q Á‰r v Á‰4–H I âZ"%BI$‰DB`c –È`¸–%¸ lŒ„Àˆ/y؉(vNûäs ¤(ãŒ4ÖHã=d0Dûü“Ž3¦#€2æ“Î2¦3À?ì€b>ì@ä”TViå•Xf©å–\véå—`†)æ˜d–i&$Ü¡H/Š´Ùf)nj¢H)nÖYçxæùÅžPìùT|ÅT|A‚0+Á£4+AÃÒJÌS%!ˆ3ON9Í“Ó;Ý`ÚÍ<â¬Ó ¦óˆ“Ó;ï¬3þ¦V‰ÓÍ;Ýt³Ž8˜æ$NNót89‰³Î;ë¼#N79Í#NNïÌ#N7!0rLb¼3ONâ$râ>íóÏ>ÿìX>õ“Ï>ûüÓO`m¨s:» Ñ¹ÿìX?ÿûO:ÖÏ>åCn`ù ˜Ï?ù¶Šä’X?û¶O`ý–Ï?ûиÏ?ýd¼Ï?ýœ˜Šù ˜p`û–Ï?ûü³Ï‰ýìX>ÿôX?ÿäóO>‘ûO?)æsâ>õ³Ï‰û¶O`ùôóÏ>ÿØ>ÿô“OÂísb>(ö“Ï?û–Ï>ÿ$Ln`ùìƒb?åóO?ÿìsb?ÿôXÂÿ„þÉ1@ä9ìX2ìÃŽ'²3À?éÀF\Œö¨p@%´³O:°@3#!$“@?¥#!Pp4ÿ4À (³Ï‰ìpÉÑÏ?ìp";ü“Îÿ¤#@`ö¨`rðO40Á2üÃŽûüÃOÐÃ>X†/þøä—oþù觯þúì·ïþûðW¹Ï?$|açýujâ¦&w(r‡ŠpÃö*@P€€€À/@ $<àáx<êQÐX‰¬Âˆ¬9GNÄ1uˆcâˆG7¬²qÔC9™SrÒuˆc±BÕ:þP5ũ)óÇ<Ä1n¼#'óÈÉ;Ä1n jëèÆ;æ!ŽutUï#nñ1ˆ£óÇ:±*íEõhƒC1 P£Û˜}„õ°GþqŽ (4þq ÀáD0°A>¦´ðÕƒFû8Q>³ôUiSÚGŠöq¢|TiæÛG•ê!£}üc'ʇŒBˆcäD ã&8`éÀ?öñv àìÀÈÈÈ¿øÇ=`À°W W80#TáÄ>þÁ\\aàÀ?Ò1€ Eéöa T!éÀ?öþñv ì@>Ò!€À¤€õàðt 0éÀ?Ò1€ìã,À?`0KZô¢ͨF7ÊÑŽzô£ éùò!;i÷@9Æ€?Eä)O~”¾ ÊB͸%…=‘@*™ <.HT˜c”Á:Þ!ŽyÀ#'óèÆÒ!€}È((G>þ‘Œä#8;ðt àìÀ>ì€r&ø;v éÀ?ì€r& ØGoWÌâ»øÅ0ޱŒ]L‚/Ô©õøÇ<š17A/Å“Ÿ¤()|A T¤@bøã䞤°'ãQ‚ÆJ ±Ì£ŒðÀ<Þ!ŽþwˆcÝxG7æ!Žu0%9éÆ;r2LuCõèÆ:Ä1u¼£óÀT7æÑytcïèF<ºQ«Z½£9‡UrÒx¬£ïˆÇ;BÀˆ[üA âxG7ÖÑ JïMØ,.4‹ hàB³O@Ñ9°t áÀ>þQpàDZÀ€= @‹SûØÈN¶²—M¤$Ây‘€œäBXøG:p"v àé¹þ‘Ô#E»ø@&Ѐü# ×?Ò!€ÕC ØÇ?ª!€rü#ØÇ?ö‘ŽüƒÑ>Ø€Àìãø;p"v àé@>Ò1€þœûøÇ>Ò!€¤CI‡þ‘ä㘀Ì'ÀfÛüæ8ϹÎwÎóžûüç@Gö>þA;i"ù¨1Æ0EŒOcÀÓÆð)Xý V·:²nuiäc䂾p‡=‘@+–×ã²8ÖñŽuÄCóG­ænÌCñ`Ê<º±ŽnÌ#˜šÇ:º‘“wtcâXÇ;ºn`*∇8Ö!w`jâxG­˜"ŽœˆãëG7BÀˆcäA ëx‡8æ!Jäƒ|MÀ…îwÏ{\t!' Gê‘ì#ØÇ?îÁ„äãû¸Ç €rþýúØÏ¾•B‰cü!D:GêA®a  ì@=sŽüƒÌ>Ò!€ÙÃ’ØÇ?Â!€°C±é û" €PÿÀp"é ÿÀ0#ìíðû ðìõç0ùÀðé ÿ`ÐQ ðì ÿ°ì ùÀ°öí }@„B8„DX„Fx„(B"°„Kù0æÐ "0…Vx…WHXx…Çæ0$€…$ ä„eЀePóÀ!€)ÝðÝðóð+ïÐ ñ°ïP+óÐ â0Lþ)L1ï V±ï°ï óï°ó°óðë óÐ ï õP+V1µ‚*ïŒp y â°ñÐ ëÀä³NÐ{½W Iðûðùp°é0ÿp Ð(r  H¸ŒÌxj!ÀÇ@$áûp"$Pÿ ´°ópé '’"öíðþ@ðé '€"ýÀ à ݰÝðé '’ðöí #éA°öC°ÿ ´°÷pðé0û)pûà00ÿé ÿþ)@õPê€ ÿ°ì€ûÐŒ<Ù“>ù“@”WB_Ð FÙ –PùÖàGÙ $°0•TY• @€O© Íë€Pp”Ø€$ +q–+á g *ï0”â0âï°L‘¨²ï°â€)ó ëð9ñ ëð‰âÐ ïÐ ë ÝP+ââÐ óÐ ï óÐ ó°¨"ð€)ݰâ°ó ó ÝŒp y óÐ ï‰pj<Ð{¼ ¸Àùp"çûÐáûð÷À°1 °B9Íþ‰p Dr°ÿ°ÿ  ÐÁ@àY0ûÀû"ûÀÐ ðì ÿ°ÿ""`ûp"ö§ÀÐÁJpp ûp"é lðÐûÁ@àY0ÿì a2Ð!ðì Áðé ÁEðÀ[áøÐŒFz¤Hš¤Jº¤WB_à&c  óPñ RÀtL' °…XH@€Š c`uÍ0âð@0w0Šp$ î0A héЀ– õÀ!óÐþhõ€)â€)ó°î ó°â0ݰÝ0â°Ýïó°ó õ°â0â0ë0âð˜òÝâðë óP+ó óÐ ïïŒp Ý€)ݧ“€ “0¬¡0 ¸0 ¡0 1p"ýé ÿp°ÿ°áûðüPWа87®äZ®æz%!À¾p®5²2²'²±T²)²4²V²qý°A.ÿ°ÿ°ÿ°ÿ@.!6)²î±;±[±{±›±5²ÿP$ðnrš`VA R€¥Rþ À¥WHh€Š L'ÍP¨L—'$ ðP§>{–`”ââ°â€)â0â°ó 9!¨Ò óP+ï°ó ¶âïóÐ óÐ ëÐ ï°â°ó ñ ëðÝ0ïÐ ë0â°Ý0Ýðó ÝŒp b âPâë§æÃ: ¸Ð¸ÃŠ “(rPì ÿp°ýpLàûðG€ÿ°ì`Ê஬ۺ®«l! Çð0®õ`lûðº4²ºÛ»¾û»À¼Â;¼Äëº$@m2Š  LñÇ L'þc@Ö{½ØKnn X*Í`ó@€'c w@Âàð°ðp–аа0õÀ!0î°ó°ó°ââðó ó°â˜"9!óÐ ëÐ ï09áï óÝðâÝðëð91ëÐ ï ó óð˜"91ëÐ ïÐ ë Š! Çbðë€*Ý@ §æ;¬¡¹.p"ù°é ÿ À ÿ0 P‘|àûк`Æb>!ÀÇP#û"õ0ÆnüÆpÇr<Çt\Çv|ÇX²$0þn2nðæ0· V7R $€ˆ€ˆ€¥€áhà$€Š€¥cp ã0ã@cà&h@Âî0A* ?» õ@ !Ð ¨â9!ï°ï°Ý0Ý0[;â0â0µÂï óÐ ó ó ˜òó ë0â°â0ëðëðݰL1ë9!ï°ïâÐ !ÀÇb°Ý ñÐ ”°ä3.pÏøœÏ÷|"ûP ðûðù°A.5²xœÐ >!Çð°W² ]Ñ}ÑѽÑMT c w Äþðæ\gu/‹n€±Òn€n€ùpX*nÐ âÀRpuB¦°ðÊ* *óPŒïÐ 9!óÝ0ëÐ ë óÐ âP9µ"ó€)ó€*9!óÐ ó°ó°Ý ó°ݰó°µï ñ0â0ã°â09!óñð! Çðb ¨"ïâS%õ'rLÀ}Ù˜Ùš½ÙœÝÙXŒà yž]Ú¦}Ú¨Úª½Ú¬ÝÚ®ýÚ°Û²=Û(R$ðn2_ P)-_€ Â=ÜÄMÜš0yrR@@ þw0uB¦ð³Þà ÐPÝîà +æ0”âðñ óÐ ó ïÐ ëðë0Ý0ëðâP+ó 9ÁóÐ ëÐ 91Ýðë ë óâ°óÐ ë0â[›â`ݰó°L1âÐ !À¾b0ëð9‘§](Rçà û@Û.þâ0ŽÙ! Çðã8žã:¾ã<Þã>þã@ãû@T x2w0¿Íu{"~‚'_pcpcpcpc€'c€'c`'w@¦PÝÞ@ b bîÞàÞ@ îà õÀ!0âð9Ñþ ñóÝðÝ0â°â0ݰÝ0ë0ë09!ñÝð˜"óP+óÐ 9Ñ ëðâ0â0&9Áó€)¢Œp y L±L‘°½A>ë´îÙ!ÀÇPë¼Þë¾þëÀìÂþãý@_pm‚'TðôRðTðRðc°'cðcp_ÜÜÞ&c€?Š@¦à ÔPîb~î¿à Ôà Ô Pó@ ! µòÝ0L1âðëðÝðóðââ0ݰݰݰVÑ õ ëðî°VÑ ð€)âó€)ñ 9!Ýþ0â091ë0Ý€)ó Ý‘p  V*뮽Þó‰p :ôB?ôD_ôFßãý@T€w€wð(_(~Rõw°'ÜŽ'ŠpŠpu2vr$` Ñà ÑPîÑ åN Þ@ Þ@ ÞàÔàðæ !°ó°ð€*âóÐ ó°LëÐ ëðâ9!ó°ó ëÐ ï°ï0Ýðâ°Ýðë ó°ð°óÀó 9191Ý0Ý0ëÐ óÐ ˜âÝðñð!ÀÇbÐ ëÐ ó ”pôÆü5þŒà yÈÿüÐýÒ?ý:¿$ðŠ€'_(_@_@P@U_phðy‚w€ŠpŠpàn'w@ˆ@ À ÂöÔöÑ@ Þà AÍÝ@wê½£äaÝ:qïĉ[Øí]·yóÞ-Äøná¼…â0¾·°Û»w ß­{ïệÅa\'n^·wÝŠ[×má…UêTªU­^ÅšUëV®]½~VkˆHÇþ›VíZ¶mݾ…Wî\ºuíÞÅ›7í>Pî ùå ”/T¾Pùå ”/Ñ|¹ƒæÎäÉŠÐ(R„þófΛK)"HX4a€ ‹–:5jÞÜQ# ÞqæéæyàYhžnz§›uÞéfxÄ™gyâè›yþºYçnæYHœuâ'žnægžnÖ©£‡Ö§›9&1Þ)±…4RI'¥´RK± !‘cþàRO?5TQG%µTSOE5UUW­çŸzH  (Ѐ 4 @ 4 @£W_}-¥×RÐ(¥4)b—-EfKQ„DJ&šÒ¨’5‚‚ÆÞ©‡‘æéf!xÖ™g!qæéfqÞYçuÄYGœyºYgqâgžwÄYgžnæéfnæYžwºy£næ'úÖyGœyº™Gœuº™§qâ©èxÞ ‘cò£›yÄYGJV…9f™g¾*F|É#þšwæ¹gŸ:h¡‡kŸ§æÉ†*jeºi§Ñ€ÂW(~EŠ^¡pÃW7ÜÀLE4Q¤7Ѐ‚D€æÕ¼¡Æ›mßÀœy( Aœuæg¡næ¦wÖ™ç¡uÞ‰GœuægyÄYHœuæé¦wzGœwÖ¦uºYGœnЧ›wº™Gœyº™£nÖ§›9&1Ä™gwÖadHy‘6ü™4xá‡'¾x㥠!’cþàx矇>zé§§¾zë¯Ç>{ퟪçh€?|ñÁ‡b|óÏ  @|(€0E˜h¨‰†5o‚æí˜§FB˜‡8â#Žyþ,d☇8ÒwÄcÝÀH7Ö1n¼cšÇ<Ä1…Ðg!óÇ<Ä1…ˆ#8ÖñŽu¼£ïXÇ;º1n`„>!HÄ1þ †…ˆcâ ¤Ú u\chÀJ:ðt`{O„bÿF#bµ¸E.vÑ‹_c£’‡¨ÆŒgŒk€á 3NCц½FjƒÀˆ0€Ah#ÔP 5¼¡?w@C¨%BÐuÌC Ç<º1q¬câÀH702…tcÝX‡8Ö1qÌ#ݘÇCÖ1qtcâÀÈ<º±ŽyÄ£óÇBºQq¼þ#ñèÆBæ!Žyˆ£!`„/ò qÌcïXG"ÂÒj†bx¨Â|@Mn¶!N öÁ<üƒèGV®¡‚ÀUøÇ>²7Oz>/‰8ưzöÓŸÿh@:P‚ÔyõÈG=걆Öc Uè< :ÑzÀ£;êqÔðp<2RxÔc ð©;>šÒ´Ã,u4qÔƒ!˜G7Þ1qÌ£ïèÆ<ÖÑyÀdâ˜G7òŽn¼cóXG7Òwtcë˜G7â#ŽŠ¬Ã Ç:ºñŽn¬câˆÇ:Þw¬ã⨇8òŽx¼#þ‘8Fİq¬c”ðÊ>œ2‚I@ð‡E,4àƒìãç@>ž’då Ã<îÑŒ.\ϳŸ½^á‹<´§EmjU»ZÖ¶Öµ¯…í>œRÔƒ¡ûèCó1Ñ}@tõØG=ö¡Ð}P´ð ¨;šÒä£0…®;PJ„ š[È;ºqÌCóÇ<º±ŽzˆcïX‡8Ö!Ž…¬#âxG7ÖÑytcëèF7Ú+Žyˆc!ïhï:ÞÑuÌC㘇8Þàuˆ£!`Ä1ò †…Ìcâ D=ÂÒ\ÐÀ4p \@ã P9GêÁì#þ¸Ä@†Ò´¨‡?6€v R±‡ 0"ìÃ)öPÁP‚vì#`C&@„}䃵Wm"qŒ?Ë_s˜ÅŒ»çz ¤îP¨; zÀÃðpÇGÝ–Bº˜G=‚yˆ#ÀâXÇ;ÄQnÌCóèÆ<ºñq¼c☇8*²Žy¬ÃëxÇ:Þ±Žwtãâ˜Ç:Þ1ÏCóX<Ö!Žy<$ïÇ;,ŽyÐ'Œ8FÄàŽ…ˆc‰Kp±ímCÐàvž’p`éþÀ?Ø"ìè‚S:‘€vhû¸‡z€‰n@%,؇=60„züÿøÇ=`0‚°XøÇ=R°ƒ3W\R!`Ä1ò‹wÜãyÈE>r«ìc*ùøG>þ±§ä£ÿÈG> šÔ#|ž¨;êáŽy@î¨<wÀ#º0…FJ`ŽyP"☇8౎y¬cëxÇ:ÞÑytã݈‡8Þ!ŽyÄCïÈï<òqtcݨ‡8Þ±Žwtc!âX‡8,Žyˆãâxƒß±qÔCóèÆ:ÄÑ0âyƒ8æ±qD",ûˆ·5¯y'ôÃ)û8þGöÁô#(‡S’‘€§á(‡S´Q„ @Ðø‡=P§$#QÙG8Ðt N©FH¾|©„ ÇøC˜?}êWßú×ÇþVö‘zücQÉÇ>þ1Q§(tùPh>p®PwÔõpG=Üw|´îøhþÝw´ãèw…b„X‡yX‡‡˜‡nX‡nxqˆ‡nxqˆ‡ux‡yx‡nh¯yX‡n˜úx‡ux‡ux‡u‡ö‡x‡ŠXx‡yXqx‡ux‡…‡x`°wˆ‡wH8†?ƒw‡u˜‡wH„°ø‡ؼIضIÀ…Pþà|xŠp€}Høv€|pŠs€§H©Pp€8‡pŠ}‡pŠ]ø€˜€€`‡xŠs€­ðÃ?Ä@ÄA$Ä©Fð…<€BdÄFtÄG„ÄH”ÄI¤ÄJ´ÄKÄÄLÔÄMäÄ}xŠ}p …ʇP¨|pŠ}ø‡|¨‡}ÈŠú‡õƒ(x¨wP(x¨w¨‡r‡‚)hhˆ®x‡y „X‡nx‡xX‡n˜qˆqx‡uxë†ux{‡nh¯yxˆ…˜‡…˜q˜‡ux‡nXq`°u‡n˜q€‡u˜‡u˜q˜‡nXˆn¨qXþqè†`„cÈ1XˆüZ‡DÄ}ˆIÀ…I˜\˜\˜\˜\ˆØ§‡Øv€`‡h‡؇dH§¸È€†~ˆŠd€} ‡(§H†ø{8IpŠs€`h‡}ø‡dHN4Ê£¤Äˆ„cøƒ@ʧ„ʨ”Ê©¤Êª´Ê«ÄJM܇اة؇؇|ø‡|¨‡€¨}¨‡¨‡}˜¨}€‡‰r‡z€‡z€‡z€‡zp‡z€‡zp‡z€‡zÈ¿ÿƒ†€†‘ q¨Fy›‡wHGq˜‡ö‡y‡u‡yx‡u‡uè†ø‡yþ‡u‡t‡x˜‡ö‚‡uˆq˜‡uxˆyè†yè†x‡yx‡…˜úD8†<ƒu˜‡ux‡n BôP`ÈætÎP¨8؇t€}H‡‚}¸‡ ¨‚Ø-À€}È„Àvxjè‡{ `¨`|P‡ ‚| ‡h‡~ð‡#€}H‡‚}P‡ ¨‚¬4Ш F8†<€uЅЕР¥Ð }Ä}ø‡|pŠ|ø‡}ø‡˜û‡|ø…rŠzø‡}ø‡zø‡}P¨|à3w (xP(xP¨‘‚‡È¿ú¿” €y¨JqX‡!qX‡üšq˜q˜qþÒn¨qÒu˜‡!í†yX‡y˜Òwè†u¨qX‡y‡u˜‡!‡yxˆw‡y‡wè†yx‡yè†wèúè†u‡yè†u‡nF8†<q˜‡ux‡uHBtçdÈPpN€Šs€}`ø‡t6 € |ø‡a €v臀Ї €€h‡|ø{P`€À§`è€Èø‡t€Kx ‚}è?4ÖcEÖdUÖeUÖH„cøƒ¸…[…iµVY¸Y°Öm•…[k•Y°…pµ…i W[ØÖpµYØÖvmWY˜VYp×y×pµþY˜VY¸YØVYØÖpµzVYp×pµw•…[k•…[…[…[k W[Ø‹ÅØy W[¸YÈØÙÙ‘%Ù’5Ù“EÙ”UÙ•eÙ–uÙŒ•…‹•…i•…m•…yõY¸_…[_ðYðY¸_…iÚi•_¸ ½[Z_¸ ½…¨õ[¸ µ_°[8†c°…c°…cèÚc†c†cУµ †®µ…¨Su˜wè†yX‡ø˜Ò!‡u‡xÒy‡yè†u‡x‡uxˆyèÛuè†yX‡n˜qèÛn˜‡xˆux‡ux‡uèþ†uxqˆ‡u‡uxqˆ‡nx‡ux‡xx‡`„cÈ1˜‡‡‡q „eðÝß^ßuŠ|ø‡j€¨Ø§¨‡¨Ø©Ø‡§Ø­Ø‡ØvfÅÞìÕÞíåÞ©Fð…<§Ø‡©Ø‡ªØeݭاØfݨبØcÝc݇ªØ‡î=Ö}àßÿàà&à6àžŠ}°Š}pŠ}€Š} Š}¨Š}à}˜ †² †rŠ}ø‡˜q „XqX‡wè†y‡u‡u‡y‡n¨ˆ‡˜Òn˜‡u˜‡n˜‡u˜‡!‡u‡y‡uè†yèÛy‡ux‡nþXqèÛy‡wÒw˜qX‡y‡wX‡xxˆy‡nF8†<ƒux‡x˜‡u „}àßzpŠzxŠ{8 °Šzø‡}àßt¨Øæã>àˆ„cøƒ‡wÀ݇xqX‡CÆÝw‡uÀÝwx܇x‡!=äw˜RFÖdÜ}‡‡x‡MeF~‡)}ˆw‡u8äw8äwÒP‡wÐäwRM~qXÜ}qXqXqXÜ}‡!uåa&æC~‡!‡w(æefæfvæg†æh–æi¦æj¶ækÆæl®æwpåwxˆw8äwØäwXqèÛnÒnx‡uè†w˜Òn‡wX‡þn‡Çµç!톾í†w˜ÒnÒnx‡nx‡ux‡uè†wè†w¸ç!}‡! €Š`„˜‡!}q˜q¨ˆu膊ȯxx‡yXxx‡n‡!í†yè†u‡ŠÒyX‡y‡!…qÒy‡x˜RqXqRq˜qX‡n˜‡)‡)‡u H„cÈ1‡!‡qH„>¸hðcv€¨?öê¯ÖÞ`„cÈÒŠ@ëu˜‡u@ë¶^‡yX‡Š¸çyè[´~ܶÆk¼^‡yÒ¼öë¼~ÜyÒyX‡¶^´îÛ¿®ˆuÀë¾Íë!­ˆu˜‡!‡!‡u¨ˆ¾UìÍæþì¼¶çÎíÐíÑ&íÒ6íÓFíÔVíÕfíÖví×îìuØìu˜‡!mëux‡¼î†ux‡¾}‡!}‡nX‡wè†)}‡)}‡…Òn˜ÒwèÛwè†)}‡!}‡ux‡nÒnx‡ux‡nPî‡X˜‡z „è†u‡Çí†u˜‡nX‡øè†!‡!‡u˜qxqX‡Šèq˜qè†uè†y‡!}wè[q˜q˜q˜{~‡n˜qÒ‡˜‡nRqè†`„cÈ1˜‡!‡wHÞ‡Ø?Þ°fñOÖH„cȃ‡uȯuèqXqX‡üZ‡nX‡n‡u‡uþè†uxˆyxˆyè†u‡y‡uȯyxˆy‡uȯuè†uè†uè†uè†uÈ/qRqX‡üZ‡nX‡nX‡nX‡nX‡nX‡nX‡nX‡n˜‡‡˜qRqXqX‡üêqX‡üš‡‡˜A_‡nX‡nX‡ü‡uȯuè†yxˆyôuÈ/q˜‡üš‡n‡yè†u‡u‡uè†u‡y‡uȯuè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†!‡y‡y‡uȯuè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†þuè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uèþ†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uè†uˆn뺭붮ۺn뺭붮ۺn뺭붮ۺn뺭붮ۺn뺭붮ۺn뺭붮ۺnëºu·Žæºn뺭£)nÝ:qëhv7æºn뺽Tœ¸yÝæ‰{÷Nþ\¼wâæu{·NÜ< ë Îƒ*nž¸wPçu['nž8«âæ‰*n8«âæ½['nÞ;qóÌηN\¼wââxWQˆyëÄÍky¸yïÖ‰³ u^·w@çÑ|'vž¸yÝæÍún¸y—º{·NÜ4¢­èE3ºÑŽ~4¤½‚Hø"˜Ç:ÞaxÌ£ï€Ê<º1nÌ£óX‡8æÑyÐdÝÊ<ÄþQqÌCëèÆ;ÖÑ ËÀcóÇ<މa'b؉6²#‘ˆH$"‰ˆD""‘ˆH$b؉ˆD"†ˆH$"‰ˆD"‘ld‡{Üæ>w¸1ìDD‚‘HD$‰DD‚‰w"ΉDD"‘HD$‰DD"‘HD$‰DD"‘HD$‰DD"‘HD$‰D ;úND$‰DD"‘HD$‰DD"‘HD$‰DD"‘HD$‰DD"‘HD$‰DD"‘HD$‰DD"‘HD$‰DD"‘HD$‰DD"‘HD$‰DD"‘HD$þ‰DD"‘HD$‰DD"‘HD$‰DD"‘HD$‰DD"‘HD$‰DD"‘HD$‰DD"‘HD$‰DD"‘HD$‰DD"‘HD$‰DD"‘HD$‰DD"‘HD$‰DD"‘HD$‰DD"‘HD$‰DD"‘HD$‰DD"‘HD$‰DD"‘HD$‰DD"‘HD$‰DD"‘HD$‰DD"‘HD$‰DD"‘HD$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$Bþ$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$B$$¸%‚¾ [¸EBº%°%B$$°Q²%B$$B$„%PB"$b"Œ% %$B$$B$$B$ìa$„Û°…[$PB"DB" [ºE%DB"P°%B$$°%B$„["þƒX¼Ã<À<Ô#„À<ˆÃ:ˆk¬<ˆPtP¼Ã:̃8ÌþC7̃8E7…8ÔPˆÃ;ˆÃ:ˆÃ<…8ÌC7¼Ã:ˆÃ<ˆÃ:ˆÃ<ˆÃHÇ>ìƒtìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìÃ?ìƒtìÃ?ìuìÃ?ìÃt åtìCuìÃ?ìÃ?ìƒt ¥tìƒtìCuìuìÃ?ìƒuþìƒt å? å>HÇ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>TÇ>HÇ>HÇ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃþ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üþÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>üÃ>ü^JÇ>üÃ>üÃ>üÃPNÇ>TÇ>üÃ>üÃ>TÇ>xÇ>üÃ>`Ç>PÇ>XÇ>PÇ>HÇ>`ÇPRÇ>TG=äÃ<ˆPtC°%„@7¬Ã<¬M(Èt.膮èŽ.é–®ézÇ>üÃ>pÇ>pÇ>€n=üÃ:̃8ÄÃ:€8Ô%„ÀüC0Â1ä¬C7XF7̃8Å<ˆÃ;¬Ã;\Æ<ˆÃ:tÃþ°ƒìÃ?ìà _òv„@$CÀe¼C7¼Ã<ˆPˆÃ<ˆÃ<ˆ<ˆÃ:ÌÃ:ˆÃ:ˆÃ<…8ÌÃ:ˆÃ„ìƒ=äÁ?°Ã|G?\ƒ @\@DÚ>쀔*¤ƒüƒ=ä¢Ñƒ03é†#øÂP̃8Ôƒ8¼P̃8¬Ã;¬Ã;tƒ‚ˆÃ<¬Ã<@ktÃ<¼C7¸ƒX¼P̃8ÌÃ:þˆÃ:̃8t1D‚u°ÃüC: §ƒ€G: À?¤ÃXG:€£¥ƒ5b'¶b/¶1çÃ<üƒ8X…8¬CÌÃ:PBÅ;ˆP¼ƒXÌÃl¬Ã<¬Ã<ˆÃ<ˆC<ˆÃ;¸Ã:̃8ˆÅ;¬ƒ8¬Ã<¬Ã@Z'ÌC<äB ¤ƒ,;csnD‚/äAˆƒX¼Ã3€ÀÃþ;ÌÃ3PˆÃ<ˆÃ;…8ÌÃ:ˆPÌÃ:tÃ;tÃ:XÅ:ˆC=tÃ:@Å<ˆÃ<…8pˆ5DÂt„ôƒ=äÁ?°ÃôÃw\ƒ @x@ü=xÀ¡Ñƒ샢±ƒ€‡=äA>¤ƒX; @?4;À‡¹˜9™£í<üÃ:ˆÃ<ˆÃ;@=Ì#„TÌPˆÃ<E7…;¬ƒ8̃8E7ÌC7¼Ã:pTÌÃ<¬ƒ;ˆ…8¬ƒ8¬Ã;tÃ;ˆPtÃ<ˆÃ¤ƒ\Â@ìÃ?ÐÐÂ?øÃ`Á9>ìCu؃ ÀôÀ>üÃ>؃ €”@;ü;tA=HGTÁ?ìC>ÔC>¤ÃäC:€tðC€ôÀP²Ã°AtÀ@Ã>@€4@(vL<ÅW¼Å_<Æg¼ÆW|01ü̃8¬Ã;tƒ1Â:tƒ1À<ˆÃ<ˆÃ<@Å<„¶8Å;̃8¬Ã<Å;ÌÃ:ÌC7¬C7̃8ÌC7̃8C$üÃ>üÃ9@=LG:ÀÅßA=ÜC3tÁ?¤ƒ`|>üC: ÀÆþOG:ÀƳƒXG:ÀÙWG:@Ü×½Ýß=Þç½Þï=ß÷½ßÿ=à¾àþßÏÃ>̃eÀ;Ì&„@<¼C7̃8¬C7̃8¬Ã<ˆC<ˆÃ¤C°À>¨TA>ìC'$@;hìƒ?(À Œ‚;PG °À>¨à€tØ5ü@܃Áá_ºWöùƒQ¥;åúý“ø/Ýþ€ìäû—‚¾{4†üK‹D>ö±°åD—/aÆ”9“fM›7q攂ѱ<Ö‰›·nݳa|[÷,Qp(á Þ³l 0 ÅæIïÖ‘+b@À‹oÝÞiCÒíݺwÝÞÍ;iâ9ûØ Ø—NÀ¥ˆôûG­}þ6`aß>— Lh lŸ=”h·6,@0¡²}÷ŠÐcß¿tØL°à’€KÙ—€‰ìäc'à;ûþÙSa€/é! µÏß,ìd2À€Ö¥ hýc'@gyóçѧW¿ž}{÷ïáÇ—?Ÿ~ý›þóþ]'î]€yñ( AœxÄ™gyº™G¢ÞѨyºy§ýÄqpyÞyG¢Ä™gwôgžuÞé&qÞYGœyˆzGœyÖGœyÖGœuÄ!êxÞ ’còƒ¨nˆJ½}þq—%™l•$þÙçŸ|Î Ÿtø‡Ú‘(™ö‘èˆ (gŸ®)‚4€æ{(G¢dØG¢}$:‡€Ø  ò©& }\JG€Òà{(G¢pø'öéçŸsø'â UÔQC`ä–?˜çqæǘީ`‡uŒ`y´ù¥›mhà`g þ& â›0$ *…¾Q2Ô%€oô{gqš‰dŸò '€}Øàv b{6¨B¢NhG ö¹G0qg¢tø‡¥ìùåŸ{`áŸt¸âŸ}Øà–öù|øaˆØ ˜Ò€…}ìÙ`‡ÒàŸ}þag€ÒàŸt(ðá`ê$v´À`ŸtÀbŸ0 ¢ž0$Ø'pJZ饙nÚé§¡ŽZê©©®Ú꫱ÎZk¥÷™çwÖ™‡¨Þ™‡’ˆz§›uº!jqæé†¨yº™G¢ÞYgqægxˆêfq,gyÄYgžnˆŠGþœwâg‰z§›uæ!JœuæÇAqº ‘còCœxd\'¨yhÒõ%kpéœöIG€Ø`¢sØçŸ}ÒÀ‰ÞGøçœö‘èœ$Úåƒ&h`€~Ò `¢sè'ÊÙÇ%vØ'þ9€ ØŸ€zÒ€¥ØàvØZÿý‘cò€nÌ£ë˜Ç3°Ža€Ï@7汎wÈÈèÆ3ðu<#ßø†1 p€ßX‡1Ðy¬£ëX‡Œæ‘¡cDB"ûGúÁô#(G>þ‘ŒHäG¸Ê!mÐ4þ‘þ새DÜG8týø;°‰ØåH8°tU”;Љ$Ãÿ`‡$²v àì@?Ò!€Ø#åH2àF‰á(Ç>Ò|ìãÀÇ>Î1€}°CŠôä'AJQŽ’”¥4å)Q™JU®’•­tå+aKYÎ’–µ¬b=þ!ºcÇþ‘ŒHÄÈA”¡Èd ö@9þ‘d$ ö0€$Xüƒh‡D’‘€}ücW¨b>Ò!€°Cÿ°ÚáFv@"ûH‡ö‘Ø’«]e(á‹?àÝxÇ:ºa Œc)h1ðqlâ °kÞñ ¼cÏÀ:Þñ ¼ãh_ðŽn¬#â˜Ç:âÑut£‘ â9°tàì€Dö‘ñB÷ñuÐÀý`‡ª¸‹4` À?Ø!€}ücé€Döqþ´o ø;À’*î#؇D΀¤CDdÇþ‘ü#øÇ9 ‘}¤CùPä90‰°CI‡$ÂŽü#ðê}ñ›_ýî—¿ýõï Ëxü#âpá;0zP"âXÇ<Ö1wtÃ…óÇ<Ä±Ž ÍCóˆÇ;àáÂnÌ#CÝXÇ;ÖÑyˆÃ…ÝÈÐ<Ä1nÌCÇ2çÑuÌÃ…óp¡8ÞÑuˆãâX‡8ºF#bx‡ ß±ŽD´Ò¸hè$BÁÐPL.¨â9Ðvàì@öa A"ZÀÀ>øà|°ã ÔØ‡:hà‰¤þ€õ°Ç†ðz ÿðÇðv€øPǪ°tbd¨Çêñp `ì@>Ø!€Ø#þíH5àÉ äÀÐè; v`ÿH‡þÁÈšéMwúÓ¡u©;}ûXÇ<Ö!Žy`ï`DæÑytC™ÝX‡8âñq¬£ëÇ:ºñŽavC.œ‡8汎nÌCóX‡Œ\Øwtc☇8æáBx¬£ë‡ áÑy¬ãëx‡ 34wÄã!HÄ1ò †uÌCÝXG"Zé‚+34Wvóì#øG:À† ,ʱÀö¸Á À€@C"öPÁЃ}H„ A² €}¤C— €zP"îâ@ PÁü#þ?Š`€0` ÿH‡$’v@"J8ÀNaêð“B€Žá`Þ¡\ÈàÖA´``´!œáÐ`žA\èàÖáÀ…`à¨a°Öá´ ¾¡ÖaÄaº"ˆÂö!`Ò‚ ìavàöA 0øÀðž€þáhÀúÁ öáè!ÚáüáàØAˆÈ ˆ(ˆ êA0áØA<) öA@  þÁ€þÁ``þ!àÒA$"®`òáàöþþA 0øÀð!`þ!@"ÒAþ!`Y±]ña1½jþaÄaÞ¡`êB@Ö¡†iÄaæaæ¡âAÖa\èÄaÄaÞaæA\¨Öá†)C†)ÄᔩæA†éžÄA™Ä¡\H†©ÖAº!áò@ ÄáâAÖ!Zi\ r 2$bªAþaþ%>iª¨þaþ¡Biˆ¨þ%$‚ $b>iþ%þaˆhþa$bþaªhþa$‚%þadQêB |!À…ÄaþºÁ@âAÔàÖ  : `ža\èÀ…žAÖáÔ¡à€ÄáŒ!¾aÄaæ!C¬!$"Â!öàÒA.á€êá†ÊaúvÀ„àà^ úa”À@ê < :  ØAöA"öA à”¡ø¡ ` úÀ“ÒAØ€€æ!þ!(3ó`úàØaúáìA< ²@$"†ÊaúX `þ@"ØaúÀ¿È³<Íó<Ñ3=Õþs=÷kæáÞAÖ!CàêB`ÖAêA\hºaºá\hºaÄaÞAæ¡\¨æAæaÄaºaddÖAæ¡Þa˜ÄaÖAâáÄaÄ¡æAæAæaæAæaæAæÁ…ø)áò@ †éÖ¸ªò¡Šî 8€¿ˆ(@–öAI¡4J)áþÖឺaÄ!CÄá†IÞAæAFÞ¡æ¡Ö\hàaºaÞAºaÞÁ…2d†i\¨ÖAˆ!ˆ¨€ˆöáúA"òA"ö”öˆXB"ÆþæöÁЧxªhD)þaªˆ%$bþ%ˆ(ü¡úáX”öÁ“ö¡ŠöáöAJmõVq5WuuWyµW[iöÁ…æAºÌa(!ºaÞaæAæA\(CºaºaæÁ…º!º!Äa˜â¡æáºaæá†iºa˜àaÖI†éÖáÖáºÁ…框©æAæAº!áò@ ÄaºAÞ!òë@ ¡Lib)à•öÁW5v–B |!@ºáº!P @âA2DÞ¡ÞA™ÞÁ…ÞAFâáÖAþÞÁ…Ä!ÄáÖA†iÖaŽ!$â˜@ö•ö!¿öA•ö”ö–öac¹¶k½ökÁ6lyuæáÖ¡âáæàB@\¨†idDâ¡æaºaÄ!Öá\¨Äa˜ÄaÞaÄa˜ÄaÞÁ…Äáºaºa†iÖI\hºa˜ÄaÖA\èâáB Ž!Ä`Äáâ¡Al[‰%`wv»*þ Ö!ÄáºÁ…ÞÁ…Þ¡2dÞaøé\èÄÁ…ÄaÄá†iÞ¡æAÞAÞ¡†©ddÄ¡"aÂ4þˆ¨h÷”öA–êa}á7~åw~éwWçaÖáÖAºÞa0!ÖaÄáàa˜æ!âAÞaÄaÖaºÁ…Äa”i\hÄaæAFæÁ…ÞÁ…ºaÜÁ…ÄaºaÄaæA†IêÁ…ÄA™Ä¡B€Ž!Ä`˜Þa¡~8ˆe)Áò†éÖA†©ÞAÖá\HÞ¡\HFîIâ¡âaæAÖ¡ÖáÄáÖŸÄaÄ!Cæa2ä"¡•êAˆ[ièøŽñ8õ8~÷aþAæŸ`âB@2dÄaÄaºa˜þÄaÖAÖáÄaÖaÄaÄaÄaêvÄÁ…æ¡ÞaÄaddÄ!ÄáÖAæ¡æ¡æaºaÄ¡,xÖAæŸB€Ž!Ä`ÄaÄ¡(á¾êˆöa¥9JC€ˆ! æA\hÄaÄá\hêÖ…ÞaÄ!Cºa˜Þ¡æ¡æaâAÖáÖA\h”©ÖAÖ¡šTi¦¹  ú :¡quþáºaÄ¡àæBÀ…Äá,xæÁ…ÄaæAæ¡\èÖaÄÁ…îiîIæ¡ÖéÖážÄáÖaÖ¡þÞ¡Þ¡æÁ…ÞaÄaÄaÜÁ…ÄaºaÄ¡B€Ž!ÄÀ…2dA¡±~C€Ž! îI\HâAæaÄáxdÄ…æÁ…ÄaºAâ¡Þ¡d$Äa†IFæ¡ÖAâÁ…æ!Cšî)±»âA±ë![±ë!ê!"ûžêá²5{³ç¡â³»â¡âaê´ç¡âaê!æ¡âaê!êážêµ7»âaê!ê!p;¸…{¸‰»¸û¸‘;¹•{¹™»¹û¹¡›³ë!ê!Š9»î©4»âaê!ˆþ»8»»â´ë!æ¡â¡â!²÷áÖáâá@êÁBÀ…ÄaÄa\HæA†iºá\hÄÁ…ºa\¨\¨ºaºa\ÖAæaÄA™ÄaÞAâAâ¡ÄaºáÖ¡ÞaÞÁ‚ß!Þ!áò@ æAÖAÖ!êÁ«ö!«‰\–B€ŽáàÖAæa£]¨†)ÄÁ…ÄaæaâáÖ!Ä!æÁ…ÞaÄa»Öa”©Ö¡ˆ(Sÿa$‚%þa$"S÷áö¡Šð¼ŠðüÏ3õöA"%þa>éÏÿaþ$b$b$b©ÐýöA"ö¡Š(}Ó9½Ó=ýÓA=ÔE}ÔI½ÔMýÔQ=ÕU}Õ=ýö¡Š@ˆÝ2õöA"öA">½Šð¼ŠöA"ýöA"ö¡Š2õddÄaàž(!Äa†©êAæ¡àÁ…æ¡\¨æ¡ÖaÄaºaÄaºaÖaºáºaÄaæaºaæa˜âAæaâáº!ÄaÞaÄ¡æAæ¡êAÖAº!áò@ ºaÞAÖ¼*ú¡È=Þ•B€|!À…ºaÖ\HæÊ×aÖaºaÄaþd$Ö¡æaºÁ…æA(üddÄa”IFøI™ÞaÞÁåß¡nßÁ‚ëV\¾êß¡ê‡éêö¦ÊßÁ…ÞÁ…ÞÁ…ÞÁ…¦~°Þ‚ßÁ…ÞÁ…ÄáÒ>îå~îé¾îíþîñ>ïõ~ïù¾ïýþïÊßÁ…Äáè^\è6zêÅaÖé\èê~ê-¸n×aÄá\þ\è\HÞÁ‚ßážÖAæ!æá!† Þa˜ÞaÄaºáÖaÖAæaºaæaºaºaºaºá\HâaºÁ…æaàaddÄaºá\HÖá\hºþaÖáÄaºá\hø)áò@ Þ¡Ö!Ä!¸*ê!>>ÿW)"þbÀuâÞ‰›·NÜûìóÏ%ðåÄ|éðO:LO~ùæŸ~úä×#Äü!ÀÞìƒyø;Ð]C€ªðzx @ôð€ú^ ëXËú=!`Ä1òq̃Mâ˜Ç:Ä!y ®ë˜Ç:æñŽuˆc,™G7Ö1w¬£ñX‡82qÌ£óèÆ<ò6uƒMóG<º!nÌãÝH7òq°©lêÆ:ºñqÌC ÝxGþ7ØÔ 6uƒMÝ`Ó<Än¤lê†@Þ!6‰c☇@ºñŽn¬£ï`É<Þ±qÌ£óxÇ:Ä!qÌc∇8Ò 6uƒMÝXG7ÞÁ’y¼câ˜Ç;ºuÌ£l꛺Á¦n°©l꛺Á¦n°©l꛺Á¦n°©l꛺Á¦n°©l꛺Á¦n°©l꛺Á¦n°©l꛺Á¦n°©l꛺Á¦n°©l꛺Á¦n°©l꛺Á¦n°©l꛺Á¦n°©l꛺Á¦n°©l꛺Á¦n°©l꛺Á¦n°©lê›þºÁ¦n°©l꛺Á¦n°©l꛺Á¦n°©l꛺Á¦n°©l꛺Á¦n°©l꛺Á¦n°©l꛺Á¦n°©l꛺Q’u¼£ñXÇ<ºÁ¦n°©lê†@æ!ñ08Ý ó ó°â0Ý ,1ï°â°Ý ÝÀ&ÝÀ&ÝÀ&ó ó ÝðÝ08â0ÝðÝðlÒ ëÐ ïÀóðë óðÝë0ݰÝPâ0âPëP õ@ !àƒ3!ó ó óÀëÀï°%1â â0Ý0â0Ñ óÐ ƒþâ°ï°ï0Ñ ó°ÝÀFÝ0ƒ3ë@d!ÀÇðb óÐ ëð‰`ˆ†‡ùÐ{Àô‰ôÀ˜AùîQÿpï‘ ÷€dP÷Ð ]ðé ’0k±(‹³X !À¾ð â°Ñ óðð â°ó ñÀÑ ó ó°ݰóÐ ë l2â0Ý0âÀ&ÝÀ&â0â08Ý0ëðó ï Ýðñë0ëðë0â08ï°ñ ï ñl2l2l2¤Ó ó°ï08ó°ï°óþÀ&ó ó â ï°ï°ñ ïâ°â0Ýðâ°â°õ óÀó°ï08óÀ&ó°ï°ñ ïâÐ ó ÝðÑ 1l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2þl2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2l2ëðÝ0â°ï Ý óÀ&óÀ&ó°ïÀ&óÐ ó l4,1Ý,ññ ë ó ¤3l2¤Ó ó ñëðë0âðñ ï°ï ó°ï°ñ ïâÐ ó ÝðÑ ï°ñ ï@:â°”ï`ëÐ ó°ó ÝÀ&ó°ó!Ý0â°ó óÐ ƒ#ëðÝÀþ&õ %!ïP"ñë ñ ë0â0ëðݰ,1Ý âÐ !À¾bÀ&ݰ‰ 0õÐò ì ìÀòÀÿP ,’çõÀ°é —ð@ýðô€´°þ°XÀ€û Ðʰö %ÐûÀ` Ðʰ÷P =°ÿÀ`ó¡­ÛÊ­Ýê­ß ®á*®ãÊ­! ¾À&ðÐ ï l"ó 1ë0l"óÐ l"ëð1Ñ óÐ ñÐ ñ°â0ëþ ó ó ó ó Ý ëÐ ï0%±â0Ý Ñ â ó ó â°ï ó l"l"l"l"ó Ý ë ó°â Ý l"l!õÐ ó°,Qëðâëð1ë0l’ë ë ó°âÀ&âÀ&,QëPâ0ââ0âë l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"þl"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"l"lòââ°âë l"l"l"óÐ ëðâ!ó 1ëðï°ï ñ°!ó°âÀ&âÀ&â0Ñ ó óÐ óÐ â âÀ&,±âÀ&,QþëPâ0ââ0âë ëðâ0l"ñ ïa !ð1ë ëÐ â0ë óÐ Ñ lRâ0¤3!±ï°óÐ ëPë`ñ°ó ƒ3â°ïÐ â01l"óðñð! Çb õ ï ”0ð°­]pì0 çÀÌÀŒæþù°é ÿÀ@û`PîÑ ÐZ€ûp Иàï‘ð×óöð ÿp00ÿÀ€ÿ°é0ÿp=ûð,€üCðìX@®mÐþÐ }Ð!@ Ç ó ëðëðÝ0âÀ&Ñ !ó óÐ l2ë0,161ÝâðÝ0l2â Ý0Ý0,1ïâðë ë Ñ ó°ó ó ó óÀ1ݰó ë0â0ë0â°ó î0ë0â,1%‘Ý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â°ó î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ë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â°ó î0ë0â°Ñâ0â0Ýâàó°ó ëþ0âàë0l"óÐ â0ë0ÝÀ&Ý0,!â ×ëÐ óÐ ë0âàó°ó Ál2âðÝ01l’ë0ë0â°óðó ëÐ ó°Ý0âðÝ0Ýâ°ïÐ ë0â0ló ”ݰݰâ0â0l2ÝñóÐ óðݰîÀ&Ý óP"ëÐ óÀ!ëï0õ =Ý0ë ë0ÝÀ&óÐ ë ÝŒp y ë@dëÀû0ðÀ­NÀ çÐßNÐNÐIÐIÐùðûp°þì ýPùðÉïq@åàÚP ÿ°ò±á@ý€î‘°îaPî °éø Ðßþá/þàŒp yñë óðâëâ0-ó â0â Ýðóëæ­›·îݺwëæ‰›'n^·uóÖ­ë6¯Û¼‰ÅÍ›øNܺwÝæu›×mž¸ŒóÖÕ['ëàM7o^·wﺭ7±Û¼˜âºet÷n¢¸xâæ‰›×MܼnÅÍ·®ÛDqóbڌٞ¸‰âÖåì¶NœÍn뺭›÷NܺwÝâþ­{×í]·u9»­g³[ÎnëÄÙì–³Û:q6»åì¶NœÍn9»­g³[ÎnëÄÙì–³Û:q6»åì¶NœÍn9»­g³[ÎnëÄÙì–³Û:q6»åì¶NœÍn9»­g³[ÎnëÄÙì–³Û:q6»åì¶NœÍn9»­g³[ÎnëÄÙì–³Û:q6»åì¶NœÍn9»­g³[ÎnëÄÙì–³Û:qlê&§nÖǦnrêfqlê&§nÖǦnrêfqlê&§nÖǦnrêfqlê&§nÖǦnrêfqlê&§nÖǦnrêfqlê&§nÖǦnrêfqlê&§þnÖǦnrêfqlê&§nÖǦnrêfqlê&§nÖǦnrêfqlê&§nÖǦnrêfqÖ™Gœyºy'£wºY'§nÖǦnrgq晨›uæGœ˜ày§›wlšHœy2‚çnægœºYGœ‰º™gz&êæuÞéfq&gžnº™Gœuı©›uºYgžwÄYçnâYçnÞéf¢y&gwº À&FB˜hž®à'&wÄ™gÒwÄYçqÞÉqêéæuæYGœyÞ™g¢yº™HœwÖ™GœyÖqgnæéFœy&çuæ§›wÖÉé"9æþ1&gq(ùçcA d’ÿ©Ç fRn–aùe@€}ÒàvøxŸtù†yŸÔ¡Á~Ø ä]>h`‚ø‡öÙçŸtøxŸs˜àë ø‡¬.ùl´ÓV{m¶Ûvûm¸ã&9„HŽÉ#€uæ™t"qÞÉuw&ÇuæY§›ulêfq2êfnbg¢næéfq&êfqÞéænæg¢yÞéfq&šGœwºy§›w&‚g¢nÖgž‰ÞgyÄyGœyÖéFœ‰ÞÉhqÖéfqbšGœ‰ºYgžuÞ™g¢næyGœuæçnæéþ žuæg¢nÖ™GœyÄqgyÄyg¢ybzgžuº'£yĉénÌCïèÊ;汎nˆ##ï˜Ç:º!ŽŒ¼cëè†82òŽy¬£âÈÈ;汎nˆ##ï˜Ç:º!ŽŒ¼cëè†82òŽy¬£âÈÈ;汎nˆ##ï˜Ç:º!ŽŒ¼cëè†82òŽy¬£âÈÈ;汎nˆ##ï˜Ç:º!ŽŒ¼cëè†82òŽy¬£âÈÈ;汎nˆ##ï˜Ç:º!ŽŒ¼cëè†82òŽy¬£âÈÈ;汎nˆ##ï˜Ç:º!ŽŒ¼cëè†82òŽy¬£âÈÈ;汎nˆ##ï˜Ç:þº!ŽŒ¼cëè†82òŽy¬£âÈÈ;汎nˆ##ï˜Ç:º!ŽŒ¼cëè†82òŽy¬£âÈÈ;汎nˆ##ï˜Ç:º!ŽŒ¼cëè†82òŽy¬£âÈÈ;汎nˆ##ï˜Ç:º!ŽŒ¼cëè†82òŽy¬£âÈÈ;汎nˆ##ï˜Ç:º!މ¼##óÇ<ºÑ•®¼cëè†8&òŽy¬c“ZÇ;ÖÑy¬c☇8&òŽutcâ˜Ç:౎yˆãâxGLÞ‘‘yˆcÝXG7b2qÄdyG7Ö1utC™‡8bòŽnÌCïXÇ;&âŽuØDÝX‡8æþ!ŽuÀ&˜8Ö!ŽuÀ£+óG=ÄñŽxˆcyÇDr"Žzˆ#'ëxG7æ!Žu¼£ë˜Ô:Ä‘‘xˆcݘǤÖñŽxˆ#'ݘ‡8Ö1I­ãóÇ:ÄÑ0âyƒ8ⱎw¬#rûX>b²!à‚e¸€.  hÔ dáÀ>Ø!€°#íøX2Ðm €F?H– 샙= ‰}ôãøG:²tàcû°GÚA²t€´ã%oyÍ{^¸…€ÇøCºñŽxÌ##9™G7Ö!Žx¼C1ÉÕ;º1qÔcïG<&Œˆ#ÝxG7Ö1þ‰tcëxÇ:ÞÑyˆcݘH7æ1‘n¼cïG<:qLÄéÆ;:utcâ˜G7汎ytcâ¨ÇDıqÄãâ˜H7bÒ „¾£óX‡8æÑuLÊ&ë€Ç:Ä1‘œ¬£9™ˆ8æ±x¬C1™‡8æÑuˆcâ˜Ç:ÞÑx¬CõèÆDÄ“yLD1™ÇDÄ“yLD1™ÇDÄ“yLD1™ÇDÄ“yLD1™ÇDÄ“yLD1™ÇDÄ“yLD1™ÇDÄ“yLD1™ÇDÄ“yLD1™ÇDÄ“yLD1™ÇDÄ“yLD1™ÇDÄ“þyLD1™ÇDÄ“yLD1™ÇDÄ“yLD1™ÇDÄ“yLD1™ÇDÄ“yLD1™ÇDÄ“yLD1™ÇDÄ“yLD1™ÇDÄ“yLD1™ÇDÄ“yLD1™ÇDÄ“yLD1™ÇDÄ“yLD1™Ç:º1qÌ£yGFà±qÌ£GL汎nL¤óXÇ<2Òytc"óx‡82"ŽyddRïXÇ;Ö!ŽyL¤óÇ<º“wˆcqÇ;æ1wtcâ˜G7Þ±ŽnLdë˜Ç:º±qÌCóXÇ;ºuLjÝX‡8ÖÑwÄcG<0xþP"õèŠ8æÑŒä$&âX‡8æÑŒä¤Ç<Ä1w¬ãë˜Ç:æ±q¬ã1ÉI7&"Žy¼£óXG7ÖwtC6yG<Þ‚D#b˜ˆ8Ö1J×Ìp.ŒüãÇ€dçÀ>Ò!€}¤A¨‡=6°ƒìC À€v<ÿ¸ Ð{ ûø=ÐŽøãø;2{  KêQuÀ„`@/<@L@µ D8†<€wX‡nXqˆ qx‡y˜ˆœ€‡‰˜‡uˆqȈw‡Œ‡uxqX‡z˜ˆwX‡wX‡n˜‡ux‡nþ˜q˜ˆxè†y‡u˜qx‡u‡‰˜qX‡xè†y‡u‡y‡u˜‡x‡uxqxq˜ˆn˜q€‡Œ‡x‡Œè†›ˆyȈy‡y˜q˜qȈy‡u˜qx‡u‡yè†w˜‡w˜‡\Y‡w‡˜è†y˜q˜q˜qxqxw˜ˆyè†yè†u˜‡xè†y‡‰x‡n˜‡wX‡w˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxþwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwȈn˜qxwÈþˆn˜qxwȈn˜qxwȈn˜q˜q€‡Œ‡x‡u膘‡y‡w‡y‡u˜qxwȈn˜‡‰‡uè†u€‡u˜‡ux‡nX‡y‡u‡u˜q˜‡xè†u‡œ˜q˜ˆyè†y‡y‡u膌˜q˜‡u‡y‡uè†u‡uÈ ›„ê†y˜”u˜‡‰˜q˜ˆwX‡yˆ‡x膉‡‰È•y›è†x‡y „‡y‡u¨q˜qx‡‰x‡nˆ‰yX›è†x‡Œ‡w˜qȈwè†u‡u˜‡nX‡n˜‡Œxˆ‰wX‡yx‡nX‡wè†yþÈqȉ\Yqè†`„cÈ1‡yȈ@؇ñr@…I¨„I…I¨„I(™s€}`ø‡t€Kx€ ‚zø‡a €r؇~€°!x€8€h‡~Ø%0€P†z`è€Èø‡t€¨‡Q‚8eè~(‚Ø‚~`P@G}TH%­H„cȃˆ‰y‡u‡x‡˜è†u‡y˜”yx‡y˜q˜‡u˜‡‰˜q˜‡Œ‡u‡Œ‡y‡w‡y‡yè†wè†yX‡nx‡Œ¨‡uè†w˜‡nxq˜qˆqX‡y‡‰˜‡uxqˆ‡þyX‡wè†yè q˜‡˜‡˜˜”zX‡n˜‡IÉq˜‡Œ¨q˜qX‡yè†xXq˜‡ux‡nx‡n˜ˆw‡wX‡yXwX‡w˜”yX‡n˜‡Œ‡xx‡u‡yè†wè†w˜ˆnx‡n˜‡I™‡w膉˜”x˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰þ‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w˜q˜‡‰‡w81q°‰‰˜x‡y‡xx‡Œ˜”x˜q˜‡‰þ˜”yX‡yȈI™‡nx‡uè†u˜‡‰‡yX‡n˜q˜q˜‡˜˜‡nXqȈy˜ˆy膉‡yX‡n˜q˜qxqX‡nx‡y‡y‡y˜ˆnX›è†y膉˜q˜‡nX‡nxqȈyX‡wˆ‰nȉ‡y0…è†y‡w˜ˆwX5Žq¨‡nX‡n˜‡\y‡u˜q˜‡Œ‡u¨‡®˜‡uè†wX‡y‡u‡yx‡˜˜”y膉‡yX‡nȈw˜‡nȉy˜˜`„cøƒ<˜q˜‡n „ò"R_þe ™|ø‡jÙ‡è‡É‡Ù‡´Ù±š±š} þ«IjÎæÙ‡Hífoþf F¸…?qxw˜ˆy‡yX‡wp‡u˜q˜˜n˜‡wè†u膉x‡u‡u‡u‡wè†y‡‰˜‡u˜q˜‡u‡˜˜‡nx‡ux‡u‡œp‡‰xqX‡y‡›‡nÈq˜ˆwèq¨qx‡nxq˜q°‰nX‡y‡y˜w˜ˆxx‡‰x‡n˜‡‰˜q˜‡nXq@¨n˜ˆyX‡n˜qxqx‡n˜qˆq˜qˆqx‡xˆ‰n˜q˜‡wX‡nx‡˜x‡y‡Œx‡ux‡y‡nx‡y‡wȈw˜qˆ‰w˜qˆ‰w˜qˆþ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qˆ‰w˜qèŠw‡y‡y˜ˆn˜qè†ux‡n˜q˜›þȈw˜qX‡yx‡nX‡n˜qX‡xX‡nx‡y‡u˜‡nX‡yX‡nX‡wè†yX‡wè†y‡y˜”y˜ˆy‡yè†u˜‡n˜ˆyȈwè†ux‡˜ˆqȈy‡y˜”˜è†w膉°‰yˆ‰x‡x‡‰è†y˜x˜ˆy‡n› „ˆ‡nxq˜ˆy›˜ˆw˜ˆyX‡nȉy‡u˜‡I™qx‡®˜qXqX‡y‡nX›è†‰˜q¨‡uxq˜ˆyx‡nX‡x‡y‡u‡w˜qè†u‡nF81q˜qx‡uHp¾‡#€òÚ‡·ÙòÚÒŠvþiŸvj¯ö· F8†<qˆ‡u‡˜è†w˜”y˜”yX‡nˆ q˜‡n˜ˆyX‡yÈqˆ‡yX‡nX‡n˜‡n˜‡u˜‡Œè†w‡yè†yXq˜q˜qx‡Œ˜q˜‡Œ€‡n˜ˆy€‡u‡‰È‰Œxq˜q˜‡uè†u˜”y˜qˆq˜‡nX‡I™‡uè†yX‡n˜‡n˜‡‰˜qXq˜‡‰‡y膘‡xȉnˆ‡‰˜‡Œxq˜q˜q˜‡n˜‡n˜ˆw˜q˜qXq°‰u‡Œè†œ‡ux‡Œ‡‰›Xx‡‰›Xx‡‰›Xx‡‰›Xþx‡‰›Xx‡‰›Xx‡‰›Xx‡‰›Xx‡‰›Xx‡‰›Xx‡‰›Xx‡‰›Xx‡‰›Xx‡‰›Xx‡‰›Xx‡‰›Xx‡‰›Xx‡‰›Xx‡‰›Xx‡‰›Xx‡‰›Xx‡‰›Xx‡‰›Xx‡‰›Xx‡‰›Xx‡‰›X€€'nÝ:qóæ­ƒ'Ž ¸ƒëà‰#(îà:xâŠ;¸ž8‚⮃'Ž ¸ƒëà‰#(îà:xâŠþ;¸ž8‚⮃'Ž ¸ƒëà‰#(îà:xâŠ;¸ž8‚⮃'Ž ¸ƒëà‰#(îà:xÝæ‰›'nA‚Ýæ½{WvÞ:qóº•GPÜÁnç­ëOÁwëºÍ+»®Û¼uâæ½ëV¶[ÙyëÄÍë¶®Û¸q̃ â˜Ç;º1q$-ë˜Ç:Þ!޲¼cïèÆ;æAn¬cëèÆ:º1q¤e™G72n”åëÇ;Ö!Žutƒ ðAÄQuˆcÝ H<"‚DóXG7ıŽwtãâˆÇ:²¸câ È<ÄAqÌcÝxÇ<Ö1ÁÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌþ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£þóèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<Ä1nÌ£óèÆ<ÄñqÄC>â˜ã!ŽwDóèÆ:Ä1n”eݘG7汎n¼#Ç<Ä1q¼CëxÅ1utcâˆÇ:æ!Žyˆcâ˜G7汎wtC0ÝxG7汎n¤eâ ˆ8ÞÑuˆcë€Ç<ä#Žu¼cþâ(ËA"޲ˆ#â˜Ç:Ä1uÀcïAà‘–y`õ`D"Žy¬cð(K7Òuˆcâ˜G7Ä1‚ˆcëÇ<ºQ–ydëèÆ;Ö!ŽyˆcÝ(‹8ê±qäëxAæAy ïX‡ŽB‰cäA ëÇ<â!J¤‘Bû8Ñ>âmï{ã;ßd %ˆñ‡”åâ áAw¬CóèÆ<Ä1‚̃€óÇ<Ä!ŸyˆcâxÇ:Þ±q¬#-âXG7æAÀyˆcóÇ<"ŽyDñèÆ<Ä1ÎCóGYæAÀu¼câ È;Ö!ùÌCeþ™ 2qÄC‚yÇ:æQ–yˆcïXÇ<Ò"ùt£â€GYº1n¬c똇8Þ±Žw¬C5ݘ‡82‚Ì£óÇ:Þ!Žu¼cÝXG7ÖáŽuÌ£óè†`âÑxtC0ñèF<º!˜xt#ÝL<ºn&݈G7nÄ£‚‰G7âÑ ÁÄ£ñè†`âÑxtC0ñèF<º!˜xt#ÝL<ºn&݈G7nÄ£‚‰G7âÑ ÁÄ£ñè†`âÑxtC0ñèF<º!˜xt#ÝL<ºn&݈G7nÄ£‚‰G7âÑ ÁÄC7ÄCþ7FšÑ”æ4©YMk63ŒðÅðŽn¬£DݘÇ:Þ!ŽxtãÝXþ‡8æw|KÇ:æ!ŽuÄèݘ‡8RqÄ(âÈ<òŽztlÝH‰2qÌcóXG<Ä1qÈñ[%êÆ:æñ+Ìc%ZÇ;~µŽyˆ£ïÈ<ÄÑ tcóøV7Üñ­yˆã[óèF‰"Žyˆã[óˆ8Þ!y$Fñ‡@æ!މcâXÇ<äØo½£ïè†@~5ŽyˆCŽÝ˜‡8äØyˆCŽÝ˜‡8äØyˆCŽÝ˜‡8äØyˆCŽÝ˜‡8äØyˆCŽÝ˜‡8äØyˆCŽÝ˜‡8äØyˆCŽÝ˜‡8äØyˆCŽÝ˜‡8äØyˆCŽÝ˜‡þ8äØyˆCŽÝ˜‡8äØyˆCŽÝ˜‡8äØyˆCŽÝ˜‡8äØyˆCŽÝ˜‡8äØyˆCŽÝ˜‡8äØyˆCŽÝ˜‡8äØyˆCŽÝ˜‡8äØyˆCŽÝ˜‡8äØyˆCŽÝ˜‡8äØyˆCŽÝ˜‡8äØyˆCŽÝ˜‡8ÖÑyˆcóxÇ:Ä1xˆãéÆ<2uÄC1šG7ÞñÆuÌã[óèF<º1q¬ãÇ·º1x|+☇8ÖQ¢n¬£ëÇ:æ!ÔCïÇ<ıŽyÄCóÇ<ÄñxÌ£cïÇ;Ä1q̣ߚGŒÖ1uÌ£ëÇ<þº±ŽyˆcâHŒÄ1u¼C ݘ‡8౎y$%¢Dæ!ŽyˆcóÇ·æÑ±w¬£%êX7ä(Žyˆã[Ýx‡@â!ÌCóGǺ!yÄhïèÆ:æ!ˆC ÝX‡8ºFø"b(Ñ·qMi†! |˜Ã?`Pk[ÃÀÕ¹Öõ®yÝk_;3‘8F°q¬£ïè†8æñŽu¼cïˆ8:&Žw¬Có‡@ÄÑ1qÌCõÇ;~%y¬£óXG7¾qtìóXG7æ±q¬Cßš‡8æ!qÌCóxã;¾5qÌCë‡@ÄQ¢uˆcâ˜Ç:Äþ1utcÝH<æQxÄh☇8Þ±qÌ£ïèFǺ1uˆcÝÈ;¾Õo‰C óÇ·º1nÌãWóÇ<¾%Žytìë˜Ç:âñŽn¬câx‡8汎n¬câx‡8汎n¬câx‡8汎n¬câx‡8汎n¬câx‡8汎n¬câx‡8汎n¬câx‡8汎n¬câx‡8汎n¬câx‡8汎n¬câx‡8汎n¬câx‡8汎n¬câx‡8汎n¬câx‡8汎n¬câx‡8汎n¬câx‡8汎n¬câx‡8æ±þŽn¬câx‡8汎n¬câx‡8汎n¬câx‡8汎n¬câx‡8汎n¬câx‡8汎n¬câx‡8汎n¬cÄáÄaÖ¡ÖaÄáÄaÖ¡ÖaÄáÄaÖ¡ÖaÄáÄaÖ¡ÖaÄáÄaÖ¡ÖaÄáÄaÖ¡ÖaÄáÄaÖ¡ÖaÄáÄaÖ¡ÖaÄáÄaÖ¡ÖaÄáÄaÖ¡ÖaÄáÄaÖ¡ÖaÄáÄaÖ¡ÖaÄáÄaÖ¡ÖaÄáÄaÖ¡ÖaÄáÄaÖ¡ÖaÄáþÄaÖ¡ÖaÄáÄaÖ¡æaæ¡ÖaÞhÖ¡BæAæA¢æ¡ÞA ºáÄ!ÖAÖ¡ÄaºáÄ!ºaÖaÞa¾eºaºA ÄaºaÄaÄaºáäHæAâÖaºá¢Þá[æA ºaÄaâ0jæÁºA ~eºáÖaº!Ö¡æ¡cºA Äaº£ÄA Äá DL¡æAæAÖaÄaÄ¡cÄA ÞA¾ÅÖáBæA º¡DÄaÞAæAb~eºaÖaºaÖAêáWæAþæaÄá[Ä!ÄaŸB Ž!Ä`ÄaæA(™vò€'ƒI „)Ž@‚A ä!hà'—’)›Ò)Ÿ*£R*§2*C€ná`âÖ!Þ¡ÖA¢æá[àaæA æá[æA æAÖa¾åÄaæ¡cÄA ÄáÖaÄá[æAæaÞaÄaàaæ£ÞÁbÄaÄaÞaàá[ÞAàá[æA ºaâÄá[ÄáÄ¡c~eæAæAÖáºa:FæAÞaÞÖaÖạDºaæAÖ¡æAÖa~EŽàþA Þ¡ÞaJDÖAæAæA Äá[æAºA ÄáæAæaæ¡bÄaÖaºA æAæaæ¡bþaþaöáúóöáúóúóöáúóúóöáúóúóöáúóúóöáúóúóöáúóúóöáúóúóöáúóö¡þaÖaºA æAæaæ¡bÄaÖaºA æAæaæ¡bÄaÖaºA æAæaæ¡bÄaÖaºA æAæaæ¡bÄaÖaºA æAæaæ¡bþÄaÖaºA æAæaæ¡bÄaÖaºA æAæaæ¡bÄaÖaºA æAæaæ¡bÄaÖaºA æAæaæ¡bÄaÖaºA æAæaæ¡bÄaÖaºA æAæaæ¡bÄaÖaºA æAæaæ¡bÄaÖaºA æAæaæ¡bÄaÖaºá[Ä¡:æºá[æ!ºaºaæAæAÖaÄaÞaÞaæaæaæ¡Þá[ÞaÄaºaÄaÄA ºá[æA:fÄáÄaþÄA æA âAÞ¡Ö¡0Jæ¡ÖAÖáJ¤¾EàA æAÖ¡ÖábÖAæ¡æ¡ÞaÄáºaàA æAÖaºaæAæAÖáâA¾%Þa(!¾eÄAŽàaæaæA0jºæA Äá[ÄA ÄạcæaºáÖA¢æA æ¡cÄáàaæáÖáºaÄaÄ¡B€Ž!Ä`Äá[a* ~2 Î!Îa†Ah ‚A‚á`€*cWvg—vk×v2áò ¾Eâ¾eÞAæaÄáÄþA àA¾¥¢ÖAâæ¡æAæA æÖáWâÖáWæAæ¡ä¨ÂÖA¾Eæ¡Ö¡ÞaºAÞAæ¡cÄaÖ¡¾¥:FæAæA æaàAæaæA¾åÄáÄA àaÞá[~å~eºáÄ¡:fÖAæAÖáâaÄaºAŽÞA ºA æaºá[ÜaÄaÄA æ¡cºaºABæ¡æ¡ÄA ÄaºaºABæa:&F0*F0*F0*F0*F0*F0*F0*F0*FBÖºáÄaºaþºABæ¡æ¡ÄA ÄaºaºABæ¡æ¡ÄA ÄaºaºABæ¡æ¡ÄA ÄaºaºABæ¡æ¡ÄA ÄaºaºABæ¡æ¡ÄA ÄaºaºABæ¡æ¡ÄA ÄaºaºABæ¡æ¡ÄA ÄaºaºABæ¡æ¡ÄA ÄaºaºABæ¡æ¡ÄA ÄaºaºABæ¡æ¡ÄA ÄaºaºABæ¡æ¡ÄA ÄaºaºABæ¡æ¡ÄA ÄaºaºAþBæ¡æ¡ÄA ÄabÂÞAâaæAÖ¡Þ¡ÞaºaºáÖ¡æAæA¢æAÖ¡ÞaÄaÖ¡¾e¢æAêaÄ¡ÄAŽà¡ÞaÖAÞAæA¢âAâAâA Äa¾¥æA ~eºa~eÞá[ºaêáÖAæA¾¥ÞAÞ¡¾åBæ¡ÖaºáÖAæAæaÄA êaÄá@æBÖ¡æaæÁ¾åWÖ¡æAæaÜAÞ¡ÞaºaÄ¡DÄaÖaÄábÄaÄþA Þ¡æA Ä!ºaÄB¢ÞAââáB Ž!Ä`:&¦þ!x2 èA½Õ[ `@ d¾•d˜òáà`þ!€ &ÀþAŠà nÁ\Á|)C€|!æaæABÖaÄ¡ä(Ä£àabäHÖ¡:FÖ¡Öáâ!ÄaÄaÖaºaº!ÄaÄáÄaÄaâA:&Äa:&FÖáºá[ÞA ľåàA æ¡cÄa~eÞ¡æAÖaÄaÄábÄaæ¡ÖaþÄaðiºaÖáâAæAæ¡æA æA¢æá[ÄaÄA ÄaÞ¡àá[æAÖáæAŽºaÄaÄá[æA 桾ebºáºabÖáäèW0êW0êW0êW0êW0êW0êW0êW0êW:F"a桾ebºá[æA 桾ebºá[æA 桾ebºá[æA 桾ebºá[æA 桾ebºá[æA 桾ebºá[æA 桾ebºá[æA 桾ebºá[æA 桾ebºáþ[æA 桾ebºá[æA 桾ebºá[æA 桾ebºá[æA 桾ebºáºabÖ¢æAâAÞAæAâÖá"ºáæAähÄaºaÄ!ÄaBäHæá[ÆaÞá[æA¾å¾åÖaºæá[ÞA æAJDÜaÖáºaæÆÅaJD ºaæABÖáâAàaæaâAÞaâAæAæAÞ!Äaæ¡ÞaÄaºaºa°1æ¡(!âºaºaæAÖþ!0JÞ!Ä!FÖáJ¤¢ähºaº¾åºaêA ÞaÞA ÄaÄA æAÖaÄ!Ä¡cÄ¡B€Ž!Ä`ÜaÄaa*˜`'Àþ ر³CÞ0ò†ÑøÇÐ^hÿî‘ÚÇ.À•| S°Àç/à CŠI²¤É“(Sª\ɲ¥K!"û@œ¸uëÄÕÃ)n]¼uâæ­‡Sܼu”’&J”´)¥D”"QŠä4i¤«X)}j‰R$J‘(E¢‰Ò'JW›F¢©ÎuM#U”kÒH‰"U¥)é§H”"íä4Ò'J‘’F¢©iþ$§‘ö&Dé­¸¤‘$c­io¤¦Ÿ$G’‰R¤½ÿlÎïÍy6ë­{gsžÍzëÞÙœg³Þºw6çÙ¬·îÍy6ë­{gsžÍzëÞÙœg³Þºw6çÙ¬·nž¸y8ßÍ£ÔíäH’#IŽ$9’äH’#IŽ$9’äH’#ííögÕH’E"Y$’E"Y$’E"Y$’E"Y$’E"Y$I­ÓÍ:âP‰d‘H %‘8µT$”DB V‘|"YRâ¼³N7Ÿì %‘P %‘¬¸W$‰PÉ^WíuU":RrU"IE’T$”DRÕU”D’ÔUIa•ÔUI]EI$”D’T$ëtóN7oþ­ÓÍ:âÌ#Î<â̳Ž;ë0Ï<Œ„ Î<ëˆÏ;ÝÌ#NâÔÓÍ<8½³Î;6Í#N7ݬ#ÎýÓ@ÔB=Ô!Œp yâP&Ý0â0Ò ó€â°ï ë ·` ià þ€` ÖûÖû€þ°Mœ ¥ ¶`P¾` ·pQ°€·pN·à ·à °` ·à wïpU²—eP ›¤IÌ`²pN·À þª°çt eP²  °çt ¶`P¾` ·` ¾`P¾`P¾p ¶p ¶ ` uN¾` ·à · ”°·` °p ¢P¨0k°gÏ0 ·à ·Mœª°/e ^§ H` ¢²p ¶p ç$ à /õâ€Ý0ï€ï°â0Ý ¶!à â€s²ã0ÆÝ`6â€ó€°"Ý0"818Ñ4Ï ñP&ÝëPâ€61I±·à  f ô`‚ê ^÷pkÀ `P¶0ж0ж0þж0жpU¢à°` · pU¶à WE ‘ ¾pUD =ð=°z ¶Ð¶àuœ@¡z‹ðR¶0ж0ж0жàw¢à°`Pª€¾p ¶0жàuçdP‘@ â`P°` ~wNuðp ¶p ¾p ¾` œ¶À ¡z‹à ·À -pN·` ‰ ë` ¾ ip¨n' ,€ê®n°M·À ¡ -ðR¾p ¾p ¾ðR¾ðR¹€¶ £h ·` /å /e ·` ·d·à ¶ ¾`P¾ðRÑtQ/e ° ` c·@ ëþ0ëÒŒó€ó€âðõ@ ! óÐ ëðâ0ݰï€â08áï ó õ s²ó ï°â+3âï sòÝë081â0ëðâ0Ý€1î€oññð! Çb0â°ï°‰Ò<ßó>ÿó@ô<¿ÿ0¹“+ô@¿H¿ôLßôNÿôPõR?õTOõ!À¾°ó ó oQ-eÒ Ÿ ·` ”0퀵P ’à rï ’°øð ià · œ` à¾p iÀp ¶à e · Me þ/e ·` ·pN‘ð â` ¾pN/ · æ¦aÀ ÕÀ·à ·` †¶p «° `P¾ðR¶à · pN· ·` ²`P¶`Pçt ÑtU¶À p çäw¶wëðR¾ õPûPû0ýõ0¹¢à ·à e` °° 4¶à å ¶M¶à ç$ p ¾p ¾`P¢ ·pN¾ðë0âðÑmݺyâæ 7¯°'¶æ…˜×m¸uÝŒ7œŠ48ëöL€’ ÞmSq€É1 àÅ·w LhpJ›ð8/Þ;q‘­óuË–þBfر#dÆŒ-_U«ÂòeË×-6z¬‚EÇ‚(¾nÝòe˪¯³¾l­=ëËÖÚ³¾l­=ëËVUQÎÚÀêÙ[¶nù’éÓ»[¶|É""é¦Z˜0ýÒ«_¶¬ Ö§ lù:+ËÖÚ³¾l­=ëËÖÚ³¾lY•%J€/[V û²µö¬/[Ueµe‹R¤w¶|ÙÂäÊôé8|]{ë‘-X·lݲe€-C’«Z‘–-CdÁZ•ü¬­[‘(‰;KÌ…ê`AƒN°`À4l9ËC€e[`±–än±å_βŗ[ªJΖ³’óE–ªÎ²å–ä|9ËþYn±å[;Ëm9Ë—ä`¼Å_d¹ÅQ€ÅYÎ’å["™Gq'çéf uÄ™g æ™Ç”ÄéFÊyºYgqš§›yÄhžuÞYçnº™GœuÞGÊægq¤ŒçÍuÞéf qæéf%»™§›yº™GœyÄYgžnægqº ‘còcyºgDþ!µTSOE5UUWeµÔ}Z…5VYg¥µV[oÅ5×VCˆä˜?èFÊzº™ÇI'@œyÖ'žu"YG–[lIÃðñ|ÚÁç|üÑ6UÎâ&ZXå– üà,U>8 € Fñþ…l%€"&˜à‚En±å–[l‰$’wn‘å–2:ô–[ÂHF‹UÂHF XnIŽ`¹C°åXT0à€’k€E€"&H€˜\Tèè[`¹¥ˆ [Dà¸`‘än‘Å–‚ÅñÅ–[|Q¥žJ$d «ÏXÃU`89N°å[ àQQ¸E”`E€[|QE…Èþ§›wæygqêfžuÞ§€yBÉæçqâéÆÞ|g›_ºÙ†æy&€+Æ(¾!‚á„oȇuž@JpàuPQÒ΂×þØ3Î9gâÏ1C`Bm¹E"lñE9 9U>8€ FI®ˆ:j[Šx £`áD€"&hàXV僸`”[ á„Þð€\`·°ÅÞ"A‰w샸…-ôÐ_ôc‹°,$Ñ[Ìœ€-n C@(B, U¨x,nÁ a x-D£ @%°,8!€"L  @àN 9ªPÁP‚Q$§èH da‹[ÈB{‡ÀlÁ2–±'°…/ê‹:$go¶àlÁ ØB°0’à $çþº…/lQ°zܲHNЄzœ  'Xƒ<¡O ÷H'` XØâ¶à„ŠÀ¯ ,ÂLp€-–†ˆB·EŠ0ÜB*€^‹[pbEè@.°YˆBJ8ÈÀ† € İ…*Tp€” 9¢@& ,â @àXÜ·%ÖñŽw @0xHIïÀ<ÞÁˆ`IóèÆ;ÖÑyˆcÝX‡8âñq ¤ïX;»±Žy dëPÒ<Ä!¥y¬Ãë`§8æñqÌcâ˜G7Öx¬ãÝx‡8æ!vvãþâ˜G7ØùŽ0âyÃ@ÞqPBWGEjR•ºT¦6Õ©° #Ž‘¬câÈ;º±xvuâXÇ<”ô qì\h>Q I`ž„$Ö€tpá¶€' ŠØ‚ à|a‹\,â«X`! ÈB Br˜à[ܾ¸%>!ù e˜Ê ‹O” ²ÈÂp _Æ€-FƒÀâ0ÐÀ(V±‚È‚HŽ(ÐÉ'XÅ'VÀ‚c¨"‹°,ôp Q૸ à‹[ØB`‘ Ä;–QÔcõØG=Ô«Þy¨¢C·þ°…!` X¬b °'Ð!Q À¢€-8![À…** [ø"9ÿR7æa§uˆÃ}`Aæ!`„`ݘÇ:â!Žwëx‡8Þ±Žy¬ÃèÆ3ðwŒcpÆ@t!ql#¼èÆ:Œ‘€np‡wX‡>h>ˆ†Y‡xè†yX‡wc€nx‡u¸„0€ h€ø†g€n‡þxx‡xˆ‡g~áX‡g€`§Kø¸I˜q˜‡u€qˆ„HX‡[°…[HŽ9`†db¸B°‡v´B¸Yð…[0„X°±Q±…[…[à„€U2 Y°…[P…x‚Q[Q€Q€…[0„/N[àHŽ[…[°N_°±…o\‘"X°2ø‡Zè‡}Ð[¸IèLäàA Q€Q°…[P…1€Q€QX0„¸…\€QðX0°Q€QHN[€þ[€U8Gð…[0„€U2 Y¨ Y_øÆwØ[Ð?@ð@ð@Ðk¨ƒX¨_Ø[à°N$€EHN<GX…[ð[øÆwØ.Xƒ'ø‡5xOX"¨I@I jð…[°NÐtQ€á„¸[H €U€QàQ€Q¸[È[€C €[°Y°Q€[à[à[à„ðU8GC [èQ[[ð[¸…ä „u‡w€'€w‡x‡y‡p‡uþ,a˜‡nx‡u‡w˜‡‡y膇yXqX‡wX‡yXq˜;‡yè†wX‡n˜;y‡nx‡yˆy‡yX‡w 0qXq’nx‡ux‡ux‡nX‡wˆ‡wH8†<ƒwP’nXJؾ.õÒ/Ó0Ó1¥¾`„[øx‡n¨qx‡u)IÐu‡y膈„n˜Oà‚vÀ‡Z„_ÀIØ|ð|ˆtà‚[°XàCpN[¸…7øh€[àðQ€ä€Q€[ð‘…D „uØ›2¸v(ƒ2øv(ƒ[…½±þICJø:@"Q€˜q[HQ±Nqš€€äxƒ€ ƒ[…[°Q€[ð[˜HH„u¸…ª€…D¨OÐOpOÐ`¨LÐ=ð…[ð[0°…[€p[¨ [Q[à¸N€ä€NX°ŠP’˜xèèxèƒèqx‚—õ…ÙnX‡n˜q0†è†u؆X„uc€wxˆ‡wXpg]€uІpqqX‡nx†%é†w ‡4H€n˜%Y‡wˆþJY¸[¸_¸©¸[0z Ûº5±Q€Q[ð…[¸_xƒ8€8¸Yxƒ€ ƒäxƒ0€ ƒ[€_¸NY¸…7ø€Žh°QYQ€[°…[…˜ª¸…o\…U I¸…'ø…Vû…'€…A ‚© CJøY°_……[°N[ C[ØN[à˜€˜€€[…[¸[¸Q€[৘¸Xxƒ€ ƒ½±…[ˆ„O_¸_°`àn`[þ¨ƒX¨ƒ[ð…[ð…[à°C€U :@"¸[0 JˆF[¡„H_°…cx=ø‡5Ѓ5À,¸IØI„=À‚[ð[0ˆ„O FQ[Q[¸…4H[`€Q€[…¸_¸N€1„Q[¸X°Q€[°N…¸N€˜q€[°_°N[豉qˆí)y‡n˜q’˜‡z „X‡x)é†u˜‡uè†u˜qq˜qˆn˜‡xX‡yX‡þn˜qˆn˜q˜q`§)é†y‡n˜qX‡yX‡yˆyX‡xP)y‡‡nF8†<ƒw`)qxJ؇U1çsFçtVçufçvvçw†çx–çy>•`„cȃx)‡x‡yè†wX€uè†w’HX[¸XX‚oˆ‡~Ø|˜‡}Ø|ȋ·%_NY€pYà„°U2€…[à„°Q€[à¸[¸Q€[[˜H qè2‡§0êj(LL_¸[à°_°…4€QP…äØNðQþ…䨛…4 €[à„°Ø›äˆJèLL„zЀZÐx†xÐoÐ_[à°1°QXN€[à°Q[P[¸CLÜ,Y‡nXqp‡>`)`>p‡<0…<1¨,‡x‡w˜c€‡p† X‡g€n‡wX‡8nØ€H" †w =˜pgx‡yÐLø†w0„è†yx‡yèqø„Hx[¸[YH‘ 3x 3 3[¸[[¸NXP… Xþ¸NY€…4 €[HÑàQ€Q€…[0ð…\2CXàHŽ[à¸[¸Q[_°…o[/"[x‚}¨…؇5°…Y[àè…ðQ…ä0¸Q€QCHXP…ä¸[¸Q[N€ä¸NYP[¸[¸_¸XXH¸_[øÆu…[°0ˆ0ˆ0ˆ0ˆ0 ô:x„:¸[Xà°N[ð[à„[ฅäÀD_¸…o|‡½y=Øþ=À=°… Àê˜"[à°X°…[€N€…°1G¨2°Q€[€…äPX„ä0¸N€ä¸Q[àHQ[¸Q€[P……äðစä¸QIŽ[¨Š[ˆ„y‡w€xq˜)é†u˜) €w¨F˜);ˆy€‡˜)‡y‡yXq’n˜q˜‡u‡yè†x)‡y’nx‡y,‡y‡u‡u‡ux‡yX‡y€%™‡ D8†?qˆwè†DX•¬×ú­çú®÷þú¯û°û±'û²7{T Fð…?€u‡u˜‡ˆqx‡nX‡wè†y‡uøq¸XX…%(‡~¨‡}˜‡}ˆ‡|È|ˆ‡}X‡%ØN€[°…ª¸N€[P……[€€[°Q_Q€½IŽo|IŽ0¨†ã9‡j[ð…äØ[¸N![ظxQ°…Oh[°…[¸Y¸_Yø„6°UȃU. €[¸…äà°_°¡„Hxñ…[ÈwÐjÐwø ð†v µ4Ø*hËXþ i€u _°V°%J€-N`ùÚ@ä–- ÚÚ·NܺyâÖq£6…Å”n²ÄˆiòDŒ¬u:wv3ž¸ultèEÀºgÞ½['N›Š ä ·n[4'N‰§´}8pà‚¤w뺭‹÷.Q¤u·|ݺåë–­[$Íœ;g¦nÁº\<‘ëQnå0ê,l©ÒK¾Tå±%+ [¢œ°¥ªB XªŒº‹†[ªŒ’uK”_·l‰ ë–­º”(½»U°î-[kzûôÓq<ýt¼Ï<7Àr‹,œ€Ü-²p@]E4ÐÁB ‹(܉݉ÕeK$‘ˆãK]¾ÜÓÌ0S†B²Üb‹/,s@A·Øbȣ䢂0pÂ-œ`Ë-¢p‹/uÁ¢‚0p‚/ªLp€ ¬a‹(Üâ‹-œp‹þ,¾ørKÑëØrKA˜ÀcÁ/ÀC¿Às0~‹-œð9HRÐL0܉¶ˆ",·¨’Áé&p î·ì³Ž8ë¼³Î<ïtóÍßt‚-!€‚,!¸óŽ8ó¬óÎNL‰3ÏNâ̳S7âÄ#Î;Ý̳N* ̳SÝ0ÕÍ:ÝìäSâ¬óŽ8ït3O$”ˆs‹/¶ÜâË-|‘»[ØÂ ̨†l;ÃÝBo p5ˆB¸+B:0@ª €Y@Y¨‚Èà Q @ l»"4 @‚lq‹˜Åœ€/p'ŠØâ¶ðÅþ-"A qC¸³î`a[c€¶À-8€‚äN€Å- ¢Šœ°¸Šð¼À²¸…*T`€0à·…n! [Übfq' ‹[¨BfaÀ d¡ ˜…k°î|q‹¢­ã¶€Åø I>ÄA“qàÃdQ‡GÔA²¸…-8[p¶€Å-d‘†Œ‚8áçZ ÜÉ"”xÇ-l! 1S tÅ5ˆ€…&í WBî8ñ¹|®œ€-na QÀ¸3D0`‹[ˆ"·à„|a‹[ÀB8á d NÀ¸…nÁ È✀/þdÁ‰à*0 ^ NÀ¾¸…(p [¬àp,H‰uˆcïXÇ<„Õũ)ïÀ;Ì!‹¸ãݘ‡8t2wˆcëxÇ:Ä1uˆcâÐ <˜¢“yˆc:Ç<„µqÄc☇N걎wèDóXG7ıqìdëˆSºñŽu¼#ï#Ž‘1¼C&MÄ¿â*×¹Òµ®v½+^ÿFÜâx‡8Ö1q¬cñÇ;º±ŽnÌCëèÆ<ÄA‰xÜ«¸A;öÁ®ŽýcdýøG?–;YÜ·°…/xŒ[øÂ ·°î ’;’ÜÂp·ˆ%Þþq _àΔ«C2Â` _àθ³…/n! ÜÙâ¶€…/dq ƒÈwà-lÝ[Èb»·(Hî|q‹‚ܹ³E$(±YØwzh‡'4à xÔBÀp‡',à [ܸ#‰-`a‹ÜwÉ-rWcØâ1Ü>P%ŽnÌCÝxÇ:º1ÌÃ!ø°,悈£ÁÇ;Ä1q¼#ÝXÇ<ÄÁ”u¼C¿Ç6@`xè¤:y‡R×1wÄÃ+8â!Žwtƒ‘xîd;_ÜÀaH3æP_àθ3Hîlq [ܶ8†á°ë‹ÜÙâÄðîDþ€[侸…ApGŒ‚ÜB·°î|;ƒàÎE{î r [`À¶¸EApW[$w¾À®An! Ü¢ °¸EA|QYx—Qˆ-rg¸Üù"w¶¸EAna _ÜÂÃY‡-nqŒðº×¾þÁ*ê …:Øâ¾¸…!€;[Ü· †-ˆ;[Ü·(È-lá‹[M¶¸…B`‘;YÜâ,Ø®p…P÷Å-l‘;ƒÜB¾¸EA|q _Ä·°Å-lá [äη †Adq ƒÜB¸#É- r [ÜB4å-|QÜÙâ9†-|‘;’DB'Ýx‡8Ö!Žþyˆc:™‡8º¡“Ôã”Á;ÖnìDïЉ8æ!ŽytcóèÆ:æ!Žu¼Ã+óÇ<º¡“ytC'âpÇ:æ!,q¬có‡NæÑuÌcóÐÉ<ÄÑ x%^™‡8ºF#bX‡WÞ±ŽDäU_×xÄ5öÑ÷Á¾ð†ï{qŒ<`óèÆ<Ä¡“w¬ãë˜G7Þ1uˆcï „8rwƒÑ^¤éG/ ÜÙâ¶ ,|q Yàι3È-la¸úw¶ðE$(±Ž[øb€²ÐV [àιóîlq Yܹ³Åoá‹[ØÂpÁ-na‹ìþË·…-pgÚ"û¾H%Þq YDî¸;îxÀ£ ¹…-Ü‚-àŽ-Ü‚-Ü‚-Ü‚-ÈîÄ-Ø‚,ØÂ-„,ØÂ-ØÂ-ØÂ-ÈBîìC7¼C<èÄ;è zÀ<ˆÃ<Á˜Ã<„À<èÄ<è„8̃N¼ƒ8¼ƒ8`7¼Ã< 8h€¼À7èÄ;x ê<¬ƒ8èD70Å:tÃ;¬ƒI­CѬƒ-ÜBAdß-Ã-Ø‚˜)áŽ-àŽ-à1ØÂ1ØÂ-ØæNAàŽ/Ø‚/Ü‚/ØÂ-øîØÂ-Ž-ÜIø‚-Ü‚-ÜBAÜ‚/ØBîÈþ‚-Ü‚/D%ŒCîøÂ-Ø‚/„,dŸ,àŽ/Øîø‚,àŽAÜ‚/Ø‚,Ü‚/äŽ-Ü‚(À-ÈÂ-ØÂ-ØúÂ-„,Î-ø‚-ÈBAøîø‚, -Ü‚-àŽ-d_"PÂ;øîøÂ1666Ü6Ø‚)É,ä,ЀØÂ-ØÂ-ø‚-dŸ-Ü‚-p¡-Í;äŽ,àŽ/Ü‚áØ5 °PÃ-øBîÄ-ØÂ-ØîøBîøÂ-Ä-øÂ-Ø‚,àNAøÂ-ØÚîØÂ-Ä-øîØBîØÂ-ØÂÚBîØ‚/ØÂ-ØÂ-øBîØÂ-øÂÙ%¬Ã;þtÃ<$a7ÌÃ:tS¬ƒ8¼C̃80BxÅ<è<¼C®Ã;`7¼Ã:tÃ;à°4€ ü; @g² ; À?¤Ãœ¦e†#øÂÀ<ˆÃSêÄ<ˆC7¼Ã:tÃ:ÌC7¬C$¼ƒ/¼aîä‚qâŽ/È‚-Ü‚-ÈBöÙÂ-Ä-ÈÂ-ØîÀ‚áØ‚/àŽ-àN$$Âþ:àŽ- , -àŽ-øBîøÂ-ØÂ-øBîøÂ-Ø‚/Ü‚áÜ‚/dŸ/ØÂ-ØÂ-Ä-îøÂ-CA -ø‚-ÜIøÂ-M7ØÂ-ÄÁ¬¬Á A†’Ä-øÂ-Ä-ØÂ-ØÂ-ØîîøBîØÂÙÂ-øÂ-ØîÄ? 8èÄ<ˆƒNÔC<ˆÃ;˜ƒ8ÌÃ:̃8¬ƒ8ÌC7̃8¬ƒ8̃8¼C<ˆ ΃NˆC7̃8˜S¬C7`<¼Ã:ÀÃ:̃8<å;Üæ:ˆƒND%¬Cö9š-Ü‚-ÈîÀ‚-ÜBAÜ‚AäŽ-Ü‚áØ‚/„/àŽ/ØþBîØŠ‚àNAÜ‚-äŽ-àŽ,äŽ-Ü‚-dŸ-îøÂ-Í:Ø‚áÜ‚/ÈBöŽ/Ø‚/Ü‚áàNAäŽ-¼¡-Ü‚AàŽ(€,Ü‚/Ü‚-Ü‚-Î-Î-øúDöùîøBAÜ‚AÈ‚-8 ,„[¸áŽ, -Ü'À,‚/ØÂ-øî«Þ‚,Ü‚áØ‚/Ü‚/ÜB$|‚8ØBîÈîØBîØÂ-˜’AàŽ-øBîøÂ-ØÂÙ‚/dŸ-Ü‚/àŽ-øBîØÂ-øBAøÂ-ØÂ-ø‚-Ü‚-àŽ/Ü‚/ÈÂ-Ž-Ü‚-ÈÂ-°ª/àŽ,„/äŽ-Ü‚-þÜ‚-ø‚-È‚-À‚áØ‚/ÜB$̃8¼Ã:ˆ<èĸK8À>„@ @»„è|Î샻\ƒ œTÁdÒƒìCç¶K8À>äC»ðCü;Àï.&; @»ØC°‹| À ´c¦ƒäC:þ¼ÜÀÀ>ÐK?lì¼Á€¼@;°KDÂ1äA¬Ã<è„;ˆÃ:xE<ă8Ì ¾ƒNDÂ:øÂùÂ-ÈÂ-„,p!«âŽ,ØîØÂ-ØÂ-ØÂ-ØBöùÂ-ÈÂ-ØBöÙÂ-øBAD%ˆƒ-Ü‚áÈÂÙ‚/Ü‚,äŽAÜ‚/Ü‚-àNAÜ‚-àŽ- /îøÂ-øÂ-Úî„/Ø‚,àŽ/àŽ,àNAÍ;ØBîT£-ƒ-ƒ-1îøÂ-øîØ1ØÂ-ØÂ-ØBîÎ-øBAÜ‚áÄ-ØÂ-ØîØBîüÃ:ˆÃ<¬ƒ8èÄ<è„8¼Ã:¼þÃ<è„8¬Ã<<å<¬C7¼ƒ8ÌÃ:̃8ÌC7èÄ;̃8ÄÃ:tƒNtÃ<¼Ã:ˆÃäÃ=Ѐ°Ë9À>ÔC>ÔÃ>¸Ë= ÔÃ=4CLf: Àò²Ë9À>ÄK: @ËË>üC:@=¸Ë>üCŒÂ<¨ 8ÀbæC:À?¤ÃÀ‹pì½ð >¼K>ôl‘Åôlñå–H(Yç–øn1=_l¹Å–þ̻Ŗ[|IÏ—[|¹Å¼þlAÏ<[úKÏôdAÏô̳ŗ[l¹Å–þl‘żH"™'½øl¹Å–[|AÏ—øRDÏ—[|¹Å—[|IÏôl1ï–ø|‘å_nñ=_dIoÄYGœyÖçwÖyg5½ƒ§›uÄ™G xÀ›§›yÄñþîÄHœuÞYgžuÞYGœyÄùnqÞéFœyÄhžyÄ™gqâq[nñ%É[l¹Åô|éÏ—[|¹Å—ønñ%=[déÏ—ô|¹Åôlñå SôåYnñåólAÏ<ôlñEón‰Ï<[dñÅŹE–[liÏ—e¹Å—Qm¹ÅÛþdIÑ–þ|¹Å–ôl‘å[n‰ï_F½Å–[|A¯= mAÏ—þn1’H֑ż[l¹Å—[l¹Åód‘%=Ynò[n1¯¿øn±¥?Yn1ï»ñå_ÒóÅ_Òó%=óÐò_niÏô|!Ø—øÐ“Å—[l¹Å–ôlþñ¥?_n±Å[Ò³…`ólAÏ_nñ%=[dñ…`[nñå[Ò“å[n¡Ä;q¼›§qæ'žuĉç.e$wÄ™gqæHæy§›uÄ™Gœwº™ç;qæYžwÖéæxæY§›yÄYçægžïàgžnÄ™gwÞéF qâygyºyg5ß ‘cþCïÞIÄ¥áO€$†' +t°B¬ˆÞŠ:©ãš’ò9€} ŸüaÂ’Î`—îQ LÜ!i{ (‡$ª°'hþñ‡•|ØàŸæ~À|ð8ø;€…}ð!DØG$p’þp`&I‡þÁŽaöØ@þ‘`¡$öøÅ?ÔƒüƒÀIìa€rDU0I:P’t %|p@?ì€_üƒ¬ÈÇ?RÀ‚}ðÈ;°L$û É9°á¥@á>ˆÇìã! „/þ€K‰ãë IöQ’}„0ÿØñPB˜”ì%û É>þ±æ$û0É>ðx’}d‰$É>Iâíƒ$û@É>H²ìÃ$ûpÉ>þ±’ìã$ûøaH²’ì£$ûøÇ>ù}”dÿøÎ<àñnÌ£óÇ;Ä1q¬ãóXG7æ!ŽwþˆC똇8ºñŽu¼Ã똇8Ö1uÌCßéÆ:ºq©n€góXÇ;æÑïtß™‡8N²“ìƒ$û0É>H²”ìû(É>þ±—û Þ>†·XždxÜÇ?öñ}”d -É>\²“ìâ$!LJöñ}tô„qÉ>NB˜“ìãûpÉ>ˆ·’þc&Ù‡IöQ’}o.ÙIöq’}$r(ÙÇIöñHtãRâèFæaJ„`MÝXÇ;º±ŽydâXÇ;汎nÌCïè<r)f®£óH7Ö!Žwt#☇82f®£âxG<ÄñŽytþÃ;ïXÇ<ÒutcóÇ:ÄÑ0ÂyÃ<Ä1nÌ#%ñìgAëY”¡-É>tà@ø€ð tp:Ä¢û(É9°sà 8@ÚQ„#8@pŠ}xVE€4~ìãU؇>P{`ð Ì?Ø!€}Ä(I‘€°øØÇ9€}œcžÝG8PÂ$ø;ÐŽ|ü# È;€~€6èG:€ÂüãU؇>PŽ}dì@IÒ!ÏÖ# Å?ì€EÀ£9ö@9H’Œüƒ`CÊáÙs`þ¦ öàôÿ†hA’Dây@7Þ±q¼ãä´ò:ºqån¼ë`<‹àÒ!öáöáàÒAƒ$váààØAö$ê¡ @>+ $ÒA<+öáöaTà.þöá $ÒAú!@®€$öáò!`BË þá`Bk2Ah¡$B€ná@ æA þá;ßaºÁ;ºaÄáºA ºA ˜ »A ºaÞ¡âÖAùÄa˜é;˜iâAÞaºA ÞaÞ¡¼£¾ƒ™Ö™Ö¡ÞA Þá;Þ¡æAÞßÁ;ºa˜éÖáÖaQºÁ;ºá;˜i”Ï;ÞA»A ºá;DqºA Þ¡Ö¡BßA Þ¡Ö¡¾ãÖA¼CùæAæaÖDæAæA ÞaġޡÖAþbBB¢bMÄA æÁ;ºá;º¡ÄÁ;æ!çAÞ¡æA¼cMÄaÖßaÞaºa˜éºá;˜I Þ¡¢¼ã¶qæaÞaÖáÄaÄaæ¡Ö!ÄA ˜I Þ¡¢Öá¾£Þ¡¢Ö¡ÖAÞÁ;Þ¡zrºáÖáº!ãA ˜É;âAÞaÞA ˜é;ÖDñº¡,×AüÒ;ÄaÞa»á;ÞaÞß¡'ß¡¶ñ±Þa˜i™I Þ!ßÁ;ÄA Þ¡ñÖábM¼CÖá¾ãÖaºþA º!™)Äa˜iÞ¡âÖ™âáÖaºA âAÞaÞßaÞa˜é;˜é;Þ¡zòºÁ/ß!Þ¡æAºÖaL!âAÞ¡ÖAæ¡àA æAQÖ»áÄᘩbÄaæáÖ™Ö¡æA¢Ö¡ÖaÖáÖáâáàaæAæAæaøoÄ¡B€Ž!ÄÀ;ÞaüÀþT â â â â p´¡®$òá`Î!êáöa þá€$öü’êáò¡Na$þöáüa`ØAHbì!ÚÁ³ö!€$ÒAH" <ë`J¢Øaþ þa’!þ! $ìáhaþáàÒA<+*à"@J¢þ`þaØAJâ€ú!öáöáüaàì!Ú$ªAþ€`ú¡$Â!ö!´’Á àöÁ³êáò¡$B€Ž!`ÄaÄáþAÄa¸Uæá[çAæ¡æáÄaÄ!ºwÄaÞAêaÞ[çAæáÄ¡ÖAâáÄaºaþÞ! vÖ„[çAâáæaÞaÄ!Äa¸uÞAæ¡Þ[çAâáæaMæáÖAæ¡ÖAæAÖ¤ÞA ¸uÄaÖAæáÄ!ÞAæ¡ÄA ¸uÄ!ÞAæAâAæAæaMæáâáæAæ¡ÞAæ[çá[çAæáÄ¡ÖAæAæaÞÁ`çáÄaÖáÄ!Ä¡ÖÄ`¿ãÄ!ÄaÄaºAâAæA vÄaºaºA ºaÄa¸uÖ!Ä!Ä!æA¾CbBê¡bÖ¡æ¡æÁ;àþaÞA æaÄA ÜaÄaÖ¡ÞaÞ¡âa¸Õ;ÄáÄaÄaÄaº[ëaºáâaÞAæAæaMÄaÖáÄ¡ÖAæAæa¸uÄaÄaºAæ¡ÄaMÄ!Ö¡ÞAæaÄ¡ÖdÄaMÄ¡ÖA‚[ëaÖDêaÄ!Ä!ÖaºA ÞAæá[ç[ëA Ä!ÞAæá[ëaÖAâáÄaÄaÞaÄA Ä!Þ[çAæA ¸u¸uÖáÄa¾u¾µÖAæá[çá[ç[ëaÄaÖ[ç[çáÄaþÄaºaº[çAæ¡Äa¾uÄaÖá¸u¸uÄaÖ[çAâaÄ!ÞAæá[çAâáÄaºa¸uÄaºaÄaÞAæaÞAæ[ç¡BæAÖAæAÞAæ[çAæaºáÄaÞAæ[çAâáÖáæáæAâáÄaÄapG ºáÄabÄA ÄaÖAÖAÖAâá¸uÄ!Þ[çAÖDæa¸uÄaÖáÄa¾u¸uÄáÖÖ¡Þ!Þ!æa!bÄ!ÖáÖAÖAþÖaÄaºaÖ[çAæA ÞAÞAæá.eºaÄaºaÖáRÖ¡âAæaÄ!ÄaÄaÄaºA ¸uÄaºaÖdp'"áþ@ ºaÄaÆTôûTtÀ :©“ ®¡¡ê$Âö!`H¢H  þ! ò!¬÷Á³Øá ¨áî`H‚4€öáì¡ê¡:!þÁ J"ˆþ0áØaH"€$Òa>+`ê!êaÒAò! ö6  þàöáè!ÚáüþáàØAJ¢þ4€ðá³ÒaJ"€$Ø€~!¬ëáìaêá:!H"®àòá ÒAöá`H¢Îö!ö$è ö¸µŒ!¾þ ö!€ºH"áòÄá;þaMÄaâáÄa VÖAÞaÄ!ÄA Þ¡æAâ[ßA æÁ`ÅaÄaÞaÞ!¸5ÄáÄaºA Ä¡æÁ`ÅÁ;ÄA ºaÞ!ÄáBÞAÖ$ÞAæ¡ÖABâÄ!ÄaÄaæAÞaêAæ!þÄaºaBÞA âAÖabâAæ¡æ!ÄaÞ!ÄaÄA ÄaºÁ;ÄaMæaæáÄa VÖAÖáÖáâAÖA¢ÖA¼CÖwÖ¡¢ÖaÄaÄaMâAÖAâA âA¼£æ¡ÞA¾cbÞ¡âæ!Ýab¸uÞaâAæ¡ÖaºaÄaÄÁ;ºÁ;ÄaÄA æA ÄÁ;ÄáæAâaÄA æ¡Þ¡æ¡æA öÖaM‚[ßAæAºaÞAæAÞaÞ!ÄÁ;æáÄaÄA ÞAþ Þ!ÄA æAâAâAÖá¼CÖaÄáÖaMêAæáÄáÖAÞapG æ¡âAæAÞAæ!ÞAæábâ[ßAæ!ÞA æÁ;âA¼cÞ¡Äaºa VÖ¡ÖaâáÄaÞAæAÞAæ!ÞAæ!ÞaÖDæ!ÞAæ!ÞAæáÖáBæáÄaâAÖ!ÄaÄA 6ÄaÄáæAæÁ`ÅaÄA âáÄaâA¼câA¼ã"Äa Væ¡æáÄá.%ÄaÄ!ÄaÄaÞþAæAÞAæ!Ä!ÄaæAÞaæAÖaââAÖ¡Ö!ÄáÄaÞAæ!ÄaºaÄaÄÁ;æAâAÖAºaÄA âAÞA¾cÄaÄA æaæ!ºaâáºaºa VÖaÄ!ÄaÖaÄaÄaÄáBܼxïÄÍ‹'nÝ:q‰Ö½›'®€wõ(…PˆQܺwñÄ­›'nž¸uÝæ½{§°›BqóÖÅë¦Pœ8ŒëÞu[×Má»uïÖ‰›·nÞºyÝæu‹'îä¼nóº½ë¶N\·u⺅`ä+…âê ´ïŸØ±dËšþ`6m¿|ÚºÍÔöG>-êÔ.À¾söÕE ]8 ²Oì>{B8ð¢]>±ôøÈ×Þ .àê·OÉÊúñ+bàƒ-ýÒ È·/€|ÿÒ (Îpá+ìüK'€ÍDðõc'€,:dð€}déðÑoì¾éŒe7 ß? ØgOÅè ¸úý³§ÂC‡,þ¥ð¯;Wþ`˜ ûüNøuøˆøì€nàóO‰“ó¬8ïì£P7uƒÑ<ët3Fóˆ3Ï;ÝijÎ<ï($Î:Ý(4Ï:âдN<ë̃Ñ;þ½CÓ<‰3Ï;݈ƒÑ<â¼³Î<âÌÓ Fï¬3FâÌÓÍ;âăQ7ïˆ3Ï:ï`4Ï:ݬ#N<<ÎÓÍ:â¬ÓÍ;ݼ#ŽBóˆ£Ð<<®38ó¬óŽ8ëtƒQ7ͳŽ8uóÎ< ̓‘8óˆ38óˆ£Ð;É48ñ¬#ŽBóü9Fݼ#N<óˆ38u³Î;ëÌÓ MðÈO7눣Ð<âü)Î:ïˆ3O7óˆ38ñˆ3Mó¬ÓÍ:âÌ3Fâ¬óFó¬ÓÍ;ë¼ÓÍ;Ýœ´N7ïÈ4Bñ̳N7'­ÓÍ<ݼƒQ7ëÌ#Î<Ý(ÔÍ:óü¹Î<ëtóŽ8ó¬óÎþ<ݬ#Î<½ƒQ7ë¼£Ð;ëˆMâÌÓ8ïˆ3Bó¬Ó Fݬ#Î;â(Ï<ët³N7눃<ÍÓÍ:ݬóΟó¬#Î:Ýð(Î;ëÌÓ FݬÓÍ;âüÙ FÝ($Î:âăQ7 ‰£Ð<ëˆ3O7ëtóÎ<눣P7ͳŽ8ótC°;ëtóÎ<âÌÓÍ<ëtóN7uóN7‰ÓBó¬#N<Âø}ŒedÉ?  Œ}%ì8À±s`,û Ë>þD±ìãõÈÇ?úñ}ˆ‰ÿØÇ?öA–}üc8þÜYöQ–}%Œ¸Å°q¬ãëØMæA°wˆƒ&ïG7ÞÑ …tcâxMº1uÌC&â˜G7"ŽuÌ£ó‡Bà‘nÌCë˜G7Öñ‚)äâà‘8Ö!Žy¬câXÇ<02u¼cñÇ:ºñ§y`dâPˆ8Ö1uÌC!íSH70ÒuÌCóFº1qHS!ݘÇ:æ!“w¬£óG7æ!ŽuÌ#ïèÆ:æ!“zˆcë˜G72Œtc☇80"Žy¬ãóPˆ8æ‘yˆcóI7ÞáŽuÌCBÞ1xÐd2QÈÌ ìƒ,ûøÇ>4m–zˆ¥iÙ¬ÇR²ì£†s@Zþö1–}TÃù¸µ±m–0âyÀIº!ŽwüC!âÀˆLæÑyˆcëÇ<Ä¡wˆ#â˜Ç;ºuˆcâ˜Ç:º±qÄ#óXÇ;Ä1…ˆãâ˜Ç:Äñ™ÌcâXÇ<ºñqÌc☇80"šÌcðÇ<"Žytã4G7d2nœD!â˜G7æ!Œ¸CóÇ<"Žyt#âX‡8æ¡y`D ™‡8ê¡n¼cëÇ<Ä1uÈdëèÆ:ºqqÌcݘFæÑ?uã$4éÆ;Òuˆcëè†Bæ!Žytcâ˜G7hÒ qÌC ™G7Þþ1x(D&ñ I7"ŽytcÝxÇ<ÄQn(DóXG7òŽuˆc☇Bº±q¬C4Ç<º¡q`d<šG7汎wˆ# Ç<ºñ…tcâ˜G7Þ!Žy¬Cï‡BºñŽyˆcë{Ç:Ä¡qÔC!â˜G7"Žu¼C&óÇ<º1wˆ£}âˆÇ:Ä1wÌc∇8æ¡qÌCó  <Ö!…tcÝxÇ<ıŽw`DëxFæ±â°Ý€2ë ï ó°Ý0â0â0Ý0ëë ñ°â€â°ï°ó â0 ! Ñ ëðóÐþ ó°ð óÐ â â Ý âP±>!óÐ óÐ ï°ó â°Ý'¡ïÐ ñ°ó°ó â0 !ë ó ëÐ â0ëÐ óÐ ëÐ ó ó ó ñ°â '1ëÐ ó€Ý ëðë0ë !<"óÐ óÐ ï ó ë !óÀ#î â0ë ó°ð°â°â021â€âðë ó ó°â ó îðâ0âë !ó°ð°â0‰Ð ëðñðPïÀ! ó°ó â€ó°Ýþ0ï°â0ãÐ â@ï@'1âð !ó@óÐ ó ðÐ ó°â°Ý0 ñ<"óÐ ñðëÐ>!ÀÇðy í³‰€l yCç iû @ ·V6´b±9ûiÀ´pCýÀ‰’hŒà ë ñ û ó°ó  Ô 4ñ Ð 1ï€Ýð 1Ý0ݰï Ï Ý óÐ ó ó ïÐ ó ï0Ý óÐ ó ïÐ ë0Ý0â°ó12±ïÐ ë0ëÐ ï°î â°ñ0þñÐ ï021ëÐ ó ó ó ï óÐ ë0ëÐ ëPâ ó â021â°ðð'ï â0Ý0Ý€-ñëð ݰïÐ ó óÐ ñ ëë0ëðëðë0â€ó ë0ñó Ý0Ý€ÝðÝ0â°ØÒ ó ëÐ !'¡â°ó ñ ï@0ï€ØÒ 4Ñ ó óÐ ï ë€-â ó ë0Ý0â óÐ óÐ ë0â°ó ïÐ Ý0ë0ÝðÝPâ0â0âðëð ñ4ñ4Ñ>'!þó°ï óð'õ ñ€Ýð ñë0âðÝ0 Ñ ë ó°ïÐ ó Ñ ð°ó ë0ëPâ°âð<âó°ó ó ó ë ó ë0â0ñðë0 ñÝ0Ý0Ý02ñâ0Ý0ëPâ óÐ ó ëðâàó°ó ó ë£â°óÐ ó°ó@ï°óp21'±â€-Ñ ïÐ ó ëâ0ݰÝ0â°ï°2¡â€-2±ó óÐ ó°ó€ïÐ ë0Ä…ݰâ°Ý0â0ñ€âþÐ ó€ó ØÒ ï ñëâ°ó ó ó óÐ ó ï°ó°â0 !ë€-â0â°óÐ ó ë€-â°ñÐ ó ð â0âpñÐ óÐ Ø"î0 !ï ë ‰ð !ÝïP”ïÐ ëÐ ë0 1â°â°ݰõ°âðñ°ð°ó ëàÑ â°ó Ý0â0ݰÝ0â°ïÐ ó ï°â°Ý0â0â°óÐ ïÐ ó ó ÝŒp b ¼$ë)™’û ·d‘Du‹·š¶þh´ÇVy‹i! Çð !ï° á Ñ ë° pPƒð 0â0â°â0ëðâ0â Ýðâ0â0Ýð   Ñ ó°ó°Úà21Ýðâ0ÝðÝë0â Ý€-â°â0ëàëðó â°Úà ñâ0ëðâ°ÝðÝ Úàó°Ý MÝð ï€ó°ݰâ0Ý01ë ó°â0â Më3â0ë   óÐ ï óðâ@ó ï ë ë  1 Ñ ØÒ ó óÐ 1Ý0þâ02ëóÝ0ë0â0 <" !ñ â0â0â0ݰâ0âÐ ë õ ó°â°â°ï ñ0Ý ó°Ý0Ñ ó óÐ 4Ñ ó°Ýð 1ëÐ ï ëðëðëð4!óÐ â0Ý0ë óÐ â âÀ#â°â0â0â0 ñë0Ý0ï ó ë ñâ0âðâ0ë ó€ó ï°Ý ñ°â ï042ñ2A0ï óÐ Ñ 21â â0âÝ0ÝݰñpëðÝþ€ó°î°ݰó ópݰâ ópâ0ëðÝðÝ0Ý ó óÐ ó°>'1!óÐ áâ !ó°â0!ñ ó ó ó°â0ëÐ Ä#â â0 !ó°ð ó ó°â0211ë  Ñ ó°â0ï0ë ï ë óÐ óÐ ëð 1â0Ý€ó ó Ó ñ°â€ݰâëÐ 1Ñ ó°ës Ñ ópâ0ëÐ '±ÝðÝݰ'Ñ ë í3ï ‰ óÐ>€-Œþâ0ë  áÝ0â€-"ó0ë ñ ñ ó@Ýðâ@ÝðÝðâ0âp¢Ý021ë0ëÐ QÝðëðâ0Ýðñð! Çb0oó&”€··Û¹­Û»-ûÀÛa”p yë ó ÿ <’ @Ô@tPÏ Ý0ݰó°Ý0â€ó ï0<ò 0ñݰݰÏ ñðÝâ0ÝâðÒ$ëðñ !ë0 ñ 0â°ï ó ï°ñ ï Ï ë ë0Ý0â@ó ó þëð2±â°ó°óÐ ïÐ ó óÐ 'Ñ ëâ°õ ëðî°ópÝ02ñ ݰó Ý ó ëÐ óðñ Ø"ó ó ó ëÐ â€âðÝ0Ýð Ñ ë0âðî 'â°ñÐ !ð°ó°ó óðë ó ó ëÐ ñ ó  1ï°ó  1ñëÐ 4! !ó  ñݰóÐ ó  !óÐ ó ë ï°ó Ý0âðÝ€ó ï0Ýðݰó ë0â ó ó ë þ1ë0Ý0Ý02±Ý0ÝðÝÀ#ó ëPâ0ݰóðÝ Ýðî â0âpë0ââ°ë3â0âp¢ñ ð ð@ó 4óÀ#ó  ñÝâð !41â°â '¡ï°ݰï@ݰóðÝ0ââðÝ€-Ý0âðâ°ñ ݰâ0â0Ý€ïâ°óðÝ0ïÐ ó óp4!óÐ ó â°ë#ëë04121ï0Ý óÐ !ó°ó°Ý0â0â ó ïÐ ó 21þ1ë 4!ó óÐ ñ  Ñ óÐ ó ð ð04ñî ó°ó°â@ݰó ïÐ ó°ï°â0âðÝ ñÐ 4!ñ ïÀ#ï°ó°â°ݰï@ ëÐ ë ÝïP”óÐ ó€'Ý02¡óðݰó '¡â0â°ó óÐ ó ï°ï012óðÝ02ñó  ñó ëðÝðó ÝŒp y  Ñ ï°‰ÿ$XÐàA„ ÖSØÐáCˆ%N”¸âEŒ C0:ö'À:âÞí÷þn¸yã`'nÝ»wÏ\¢@¯uâÀ1 àÅ·yâÀ©8  E¼g@^" iÝ;qñhÐàÔ;p*ÐàLܳJ:XèNEr€TWÄ€€ßÖ5PõÔ:60°ñNÜ< LhpjÝ6ôèÖm¸xëÄ+b@@oâ´!´n܆ óÈ9 àÅ7àŠÀâݳÝÞuÓ& ^ƒUO­SW䀀ßê½Ó†¤HäëÄì6oÈyë཯[¼uâæ­'.ž¸wëÄ7/ù:qó@¾ë>¯Û¼nçÝu{7ïݺw ç­ë²ÛºyÖéfºþižuàIžuÞ™¤wº{§›yÖ™9qæÇ9q’çqægžuº™Gœyºy¤yºygqâygqÞižuÄ™§›uºy§›wº™çqâéæqâgÜYçóΛçnÞA®›wÄ™§›uÞIœxÞIœw@êfnæIœyÆYGœyÄAnqæé$qægžnÖ™GœyÞYçqæIÎwÄygžuÄy§»yºéuÄ™gxĉGœuºy§›wÖygwº©›yĉgžn`Iœy@šgqÞéæqëfwºANœy΃GäæiäÄÉqÎëæqÞþéæäàé&ÊyÖéfqæ¹yº™GœyºižuÄ™'¹nâgqæY§›(×éFœzº™§›wÄ™§q@zgàyGæyGœyº™gqޙ纙gqæ'žuÞYGœyºIœyºAnÄ¡äuÞ‰çæ1‡’º›Gœyºgäºy'qægwº›¤nægžnœë¤n›gn’ëæyÖgžn@êfžwÄANœuºYgžuÞéf˜Þ ‘cþÈCœuÞ)„òÖ{o¾ûöûoÀ|p 7¼ðñ%ægþYgqæùæxY'qþÞéæ™N f&$XgžNøpèfžNèSºy€n.!à—wæAî™ëF›_Þ!‡æy€ ºYçNø†XGNøpXç'^ºÙ†•uâéngèfžnÖIá„n¶©‡uæéxR8árÀëøF'à &``ÝHÁ ¾¡à`âHÁ ¨ñSˆãxÇ:ÞñŒˆãXÇ<ºƒ|C0ÀÁ:Æ¡‹|#9ð˜Grº!ŽuÌ£; ‰‡8ÞÑy g yÇ:汎y §óÇ:æq¬ãñXG7æÑwÌCóÇ:`þ²Žn¬CÈéHæ!Žw¬C éÆ<ıŽyˆcâx‡8æ!Žät9ñˆ‡8Þ±qtcâ˜HÞÑu¼ë˜Ç:Þ±Žw GÈéÆ;Ä1î¬câ‰8’³q¬ãâXÇ<@q¼£ëxÇ:ÞñIq¬ã™‡83qtcâXG7ÞÑyˆcóXÇ;ÄñŽutcóxÇ<ÄœyˆcñHıŽwtcâ˜G7ÖuÌ£óræÑyˆã“âHŽ8Ö1q¼CïXG7æ’wÄ£똇8Ö!Žwˆ$óXG<Äq¼c☇8Öñ¼9ÝxÇ:Ä1þuÌ£ ‡sºñŽuÌC yHÞ±Žyˆ$ݘ‡8óx¬cÝXG7Ö!ŽwˆcâXG<3q¬#∇8Þ±Žyˆã“ó<@"Žy€$Ý@Î<ºñŽn|Rë˜G7@2uÄCŸ\Ç<º1nÌCëˆHÞ!˜Ä£óXÇ<ÄÑ qÌCŸìÆ:Þ!Žwˆ9ÝG=ÄñŽnÔ#9âXÇ<â!ŽuÔCóÇ<Ä1q¬CëxG"º³qt#õ˜%BàœnÌC0éÆ:æ!ạ̈șHÄ‘œnÌ£âXÇ<@2q€DïÇ<ıŽw¬£óXG7Èúþx¬cïXÇ;æ!¼$âèFá‹?ˆA Ç:q8ô¦W½ëeo{ÝûÞ„ ÇøCãŽuì£ Ç<Œg¬ãâˆÇ:ž€o¬£Ï@7À^|cºH@7À^Ìã y†Ø@hŒCÈyÇ3°qÄ£ëHŒA€u<ßXG7¶g€DxÇ6À‹oÌà xÇ3°q¼c 5ÖoÌcóXÇ3ÐwˆpLR‘€n¬£;ëGx±Žn#ïX‡8Ž ð"à/º±c$àÛ/`²qgtNgK Fð…<€y‰îøq˜‡u‡y‡N2 kØ„x‰wxX‡yH q L€‰8oXSp‡g€q(؃wˆqè†up†wèmg€ xxX‡î‡8oØqX8orÐxÐpÐþLhŒNH€ux‡uè†up‡`n؆ À˜pqx8jXlЃnX&À€oˆƒø†u€ †qÀL‡wHøt0…w@„u@€w‡p†u‡y€ thLX‡wÐ$øqXqˆq‰y‡y‡z‡6}‡zX‡n˜q˜‡uè†u˜q˜qX‡wèx‡uxä˜qX‡y€‰nX‡x‡y€‡u˜qX‡xèŽyè†wèäè†uè†up˜ çè†yè†u€‡u˜˜q‰w ˜‡upŽwè‡uþ¨‡î˜‡u˜‡nx‡n‡äxxq qˆ‡n˜‡nX‡yç‡u˜‡uä‡y‡w‡u˜‡wX‡x‡yè†yè†xèŽux‡nXq@Žyè†w‡u˜qX‡n˜‡î˜qX‡yè†u€x‡n q‰w‡yˆ‡w‰w˜qx‡n‰yäè†y‡yè†ux‡ux‰yèp‡yHŽw‡z䘇n˜‡xX‡wè‡u˜‡nx‡u€‰y‡n‰n‰w‡u˜‡uè†uè†yè†ux˜‡wX‡y‡yþx@Žz‡x‡w˜‡ÆX‡yèŽw˜‡u€˜è†u˜qX‡y‡n qxq˜‡nXq˜‡n˜q€‡Oz‡n qXx‰y‡u€‰uˆq@ŽwX‡w˜q@qX‡wXq8Ûy‡wXq qè†äx‡ääèç‡yx‡uè†y‡u€‡u˜qX‡nˆ„îXqX‡pLu€‡u˜‡ä‡n˜‡nX‡yäxx‰wX‡yè†y‡y‡ä˜qX‡n‰yè†u˜‡îX‡n˜qX‡x‡x‡w‡Oê†u˜qHŽy‡nF8†<qþ‰wX‡@؇pP`9€wp(8h‚ux%0€8mø€­¸Iè†y‰nX%0€8…nÐèoè†uè†w‡z‡"Ø h‚uè„p†w˜`qP‡"Ø  søpþP˜q¸ ð€È‚ %0€8q‡"0€8À I·uÆ|›·nÝ)´Oµûþ³ËP*ü\°Áï»= ܰÃC±ÄS¼oŒ“ëÌÓÍBÿ,ÔÍ;ë¼³Ž8ï¬óÎ;Ýt³Ð;Ý,ó:â¬3N7 ÍóÎ:ÝÌ#N7 ¡³Ê]½#Î;â,$ŽÊïˆ3<1w³Ð; u³Ž. ˆ38ݼ³Î;Ý,ÔþÍ:ݬÓÍ;댳N7ïˆ38︳N7 ½ÓÌëÄ#Î< ½#Î:ï¬óÎ:ðÌ#N7ït38ó,ôÎBK¯8*ËÜÍ:âÄÜMÌï¬3Ï;ë¼ÓÍ; ½Ó8óˆó;ó¬ÓÍ;ݬ#Î:ï,Ô•Ìóˆ³8ëÌ#N7 Ís÷<â¬óÎ<ÝÄ,ÎBót#³8ï¬#Î:óˆóN71‹³Î<︳Î<ÝÌ#N<âÈüÎ:ï¬#Î;âÌÓ <1Ï8ó¼ÓÍ:óˆ#s7ëÌ#Î<ÝÄCë˜‡Ìæ±q¬cëèFfıqÈ,3âX‡8"ŽwtCfÝXH7dÖ•˜½câXËæ!Žy,þ¤ëÇBÞÑuÌCëèÆ:ÄñŽutc!☇8ÖñŽxˆc!ïX‡Êº±wÌ£+ Ç<Ö1qÜíÝXÇ<â!Žy,d yÇ:ıw¬#âXÇ;â!ŽyˆcëPY7"Žw¬CëèÆBæÑwÌCóXÇ;ܱŽytc]‰‡8ÞјÍ#fóx‡;Ö1…¼c!ÝXG<Ä1nÌcðˆÙ;ⱎnÌ£w›‡8î¶ŽwˆcëxGWæ!ŽytãݘGÌæÑw¬#ÝxG7Þ±Žwˆc∇8ÞÑuÀc!*‡Ìâ!ŽwtcóÇBT¶qÀc!óXÇ<º1uˆcþÝXÇ<2wtcâXÇ<º²Žyˆ#ïèÆ<Ä‘q,Deëx‡8Þ!ŽuÌ£ïXÈ;2n¬£‰XG7æ±¼c¦82®¬câXÇ ¶<ücù¨Ç?Ø!€}±cÿH‡Ø0 °cl˜€þq"@=ØÇ?Ò!6t@\4üÀ4€2ØÞ2`:à>L0Â-üA¼Ã:ÌÃBüƒ8tÃ<ˆÃ;ˆÃ:¼Ã:¼Ã<ˆÃ:ÌÃBÌÃ:ÌÃBtÃ:tÃ;ˆƒÌ¼Ã:tEÌtÅ:¼ƒ8ÜÍ;¬ƒ8tÃ:ˆÃ:¼Ã:¼ÃB̃8¬ƒ8ÌÃBh@¼À7,„8ÌCWtÃ:¸Ã:ÌÃ:ÌÃ:ă8tÃB¼C7¼C7¬Ã;ˆÃ<¼C7¼Ã:̃8¬þC<ˆÃ;,Ä<ˆÃ;tÃ<¼Ã:¼Ã:ˆÃ;¬Ã;È <,Ä;tÃ<ˆC7ÄCWtÃ<¼C7¬Ã<,Ä;¬ƒ8¼C7ÀÃ<,Ä<,D<ˆÃ;,„8ă8tCÌtCfÈÌ;ÄŒ8¼ƒÌ¼ƒ;ÌÃBÌC7,<ÄÌ;ˆÃ:̃8¼Cf,„8¼Ã<ˆÃÔƒè€è€è€0iœCìÃ?Ü´À>TË=làÀ>L:€2 ;@µìþ; À?°C\A>üC:ÀìK °>Ü Á>°C\Aµ„ü;Àöh£:ê£:j0Â1äAtÅ<ˆÃ;üC<,Ä<¼CW¬C7ÄL7ÌCWÌC7ÈÌ;ˆÃ<¬Ã<ˆÃ<ˆÃ:¨Œ8̃8ÄÃ;¬ƒ8¼Ã<ÈL7ÌÃ:ÌÃ:¼Ã<,D7̃8¬Ã;ÌÃ:ˆÃ<ˆÃ<¨Œ8¼C7ÄŒ8¼C<ÄÃ<¼Ã:tÃ:tÃ:tƒÊ¬ƒ8ÌÃ;¬Ã;ˆƒÌ¼Ã:ˆÃBÌC7¼CÌtÃ;¬Ã¤ÃüC8@´K´¿(ƒÁ„àÁ¤ƒì ; @>¤àCµ¤CàCµØC”Ã>üC8$À?¤CÌCµœþü;@µìC£jôFs´†#øÂÀ;ÌC7ÌC7üƒ8¬Ã<ˆÃ:¼Ã<¬Ã;ñ<¬ƒ8tm=ˆÃ:¼C7tm7¬ÃéÖsý>ÔA,ÔÁ¾äC8À>¤ƒüC8ÀÞ`À¾ Ãp )Á°”Ã>ð ;À¾°ÃìC:@µä;À¾œLÀâOüC: À?ìÃ?¤ƒü;@Gkþæs~Á„@$øB@7¼C7¨Ì>ˆƒÓŠÃì€v€¶±•íli‹­DÂy€8ÖѬ}ˆ8݇Bºq¼CóÇ;ÖñŽuÌC}Ç<º±qÌCëx‡8æ±w cóèÆ<º1‡Ì£/☇8úuˆC!"Ç<Äœy(dëxÇ<Ö1uÌ£ëÇ<ú2n¼c™G7ÞÑy¬£ïX‡8â!Žy§ïè‹8æþáÎuãݘ‡BÄá&q(DóG_ıŽn¼C!â˜G7ÖÑuÌC!âˆÇ<ÄuˆcâèÆ<q¬£óX‡8â!Žy¼CïXÇ;úÒx¬CñPˆ8Öáy¬CóPˆ8Ö1qÌCóè‹Cæ±qÌcðÇ<º1q(D qÇ;æÑ—fucë€Ç<Ö!q(ä}é†BºÑqÔ£óÇ<Ö!‘ˆcâxG7ÞÑwÌ£ëxG7Ü´Žn¼CñÇ:º!Žytcâè‹8æ!Žx¬ãÝpÓ<Ö!Žy¼C!ópÇ:ıŽnÌCóX‡8âÑwÌãëxG7Þ±þŽn¼CóÇ<qÌC}Ç:Þ1…tÃMÝxÇ:æ!Žu8D!Ý Õ<Äñ…tcݘ‡8汎w(DóèÆ"áÄA!Ä!ÞA!Ä¡àæB@$ÞAÖ¡ÂMB€ãæAºaÄáº8ÄaÄaºaºáºaÄ¡/âAæ¡BÖaºaÄaþºaºa"âtbÄaÄ¡B€Ž!Ä`ÄaÄáá Åeþá¶”K»ôþ¡ê@ þ!þ¡ öáö![öa´e´ePfþa°ÅMOf°e²e¸¥´e´ÅM¯ÔPQC |!@æaÄáöAæaºanA[öáö¡eöA[öeöaeö ÷A\ö[ö¡[öeöA¶ö!eöA\ö[ö[öeöAeöa[Ü[öA\öAeöQ·e²e²e°e°e²eVf²ÅM»eþa\f²e°eTf¸efkþNfºe\fRfŽ[öQÝTeöáö^µeXfþaNf´eþaºePfþa²åþ¡Þa(aעƲÁ¤A¬!ÖaÄ!ÖÄa&4Ä¡!ÄA!æaÄaº8æA!B!Þ8æAæA!Äa¢ÞAâAæAæsà¡/ºabÖ¡æáÄaÄaDBæ¡&4"áò@ ÄaÖaº!ò•eê¡´å˜@ŽuÄe\fTÆMoó¶¶B€ŽáàºabæA¢lAeöa¶öaeöþeöÁeöA¶ö[öádöA[ö![ö¡eöáö¬öáöA[ö¡[öáöáP÷¡e" ÷eöeöAoµenw¸ÅM³eþa°e ÕM÷[öávÿaPfZfbk°ehkþaXf´eÄeTf˜pRFþA!º!æ¡Ä¡/ÄÄ!¤¡ˆ€C(A!ºA!ÀM(!æAÖ¡ܤ¢ÖaúbbÄaºabBÖáÖaHEà¡/æAÖaÄaÞaÄ¡/ÞA!â¡æ¡ÖAÞ¡ÞaÄ¡B€Ž!þÄ`ÄaÞa!yaë@œa‚˜eö‰—˜‰k+"Áò Þ¡ÖAÞaÖaÄ!ÞáöáÜÄüÆ8êaÈÓë!êŒwÍüêÁüÜdŒÝDͯȸÄ¡vmÌo×îxŒëAëaÌÏMÌoyиƸÌÏMâÁMÌÏMÆØMâ¡ÈØMÙüêaâ¡ƸȸÜ$æ!ÜwÍ“Óx×âa×ÌÏMê!êç!þ!ü8ê!ê!üxêa×â¡âa×âÁMâÁMâÁMêAëŒëŒýXëAëÁüêAÔv̯þæAëA‰9Üä•ç!êAÔvêaêaêÁüæ¡âaÙMâÁëaŒÝDý˜ŒëaƸÒx×<ÙMêAÜ$çaŒëaæëŒÝ$êÁüÜdŒÝ$êá•ã¡â¡üx¤ã¡ÖaÔ¸â¡â¡¹âaÆØMê!êŒý¸ÖaÔxâ¡RZçŒÝdŒwMþaÞA(!ÜDÞaÄ46¤á"AæaÞa(AÞaÄá`êB`æaġޡ/ÄaÖAúBbºaÄaºaúÖa¢ÄaþBæA!ÄaºáÖAæ8æAæA¢Þ¡ÞAâaÞ¡ÖáâáB Ž!Ä@!æAºšødê[ö¶s[·w;¶B€Ž!@Þaâ€CdáöaˆÙMÞÁ¹£[ºßaÞ˜×a×ÞÁMêÁ×AºÝäü8æ!ÄaÖÁס¾ÛMÞ!ºßaêaÖa×êá»ë˜ßa×ÞÁMÖÁMÖa×ÖÁëÁMÞa×êAØÛMÞÁMÞa×ÞÁãAܤæa¢{<º×a×ÖÁ×áæáœ;öaÄaÖÁMÞaÞaÄ¡ÖaÖáþæaÜD$êaÜdÜdvmÞá»ßÁßa×âÁæa¤û¾ûÜ$æA$víæ¡œû¢»ÄaÖÁMÖAÃëaÌoÞaÞ¡Þ¡ÄÁMêA$êá»×aêAæaæáܤĽë˜ßÁß!º×½ëAæ!¾»víêÁ¹ßÁ×ÁMÞÁMÖa×êAÜä4üæáÜdêAÃçá¾ûæáæá¾ûæ¡üxÞaÞÁ¹Å¡Ä¡¤»æáFý»ëÁ×a×êAæ!náÄaÞ!êa׺aÆÁBš¡(A!Ä¡Ö!bþÌa(!æ¡æaâÁ!êAúbÄæA!æ¡â¡Þ¡Þ¡fEæ!ÖbºaæaÄ¡/Þ¡ÜA!æAÖAbâæ8ÞA!Ä¡B€Ž!Ä@âÖ!xÛäOåS>eB Ž!`ºaÄáþAæADâ°E!àaæÖaÄaÖÖaàaæÖaàaæÖaàA!æaÄaÖaàAæaàaæA!ÞA!ææaàaæÖaàA!æA!àaêáüÂâábàaæÖaàþaæA!àaæÖaÄáÖaàA!ÞA!æÖaàA!ÞA!æÖaúbÖaàaææaàA!ÞA!æA!æáÜdàaæÖaàaææAæAæA!æA!ævmÞaæaàaæÖAæaàaæÖaàaæÖaàaæÄaÖÄaÖÖAÜdÄaÖaàA!æ (ý›GÞºyëæ­#8OÜótóN"uóÎ:ãÀM6Òd#Í1‘lÏF”ˆ#ŽkÌS#Ì#Î<Ý0ÅÔ<âÌÓÍ<ët³Ž8ë¼³Î;ë¼³Ñ<âÌÓÍ:âÌ#ŽkâÌÓÍ;RγŽ8óˆ³SRn4ÏFRÎ#Î:Ýl$ÎëÌ8Õ#Î<ÝÌ8ë¼#Î:Î;â¬óŽ8ë¼#N=âÔ³Î<â¬óÎ<ë̳N=RÖ#þÎ<â¬óN7ó¼#Î:Î;âÔ#å<ñˆ³Î<ât³Ñ;âÌ8ëÔ#Î:Î;âlT”óÄ#ÎFõˆ8ó¬óŽ8õˆS8ë¼#Î:ïˆS8õˆ³Ñ<âÔ#N=R®óÎFï¬3Ï;ÝÌ8õˆ³Î<âÔ#ŽkÝÌ8ë¼#ÎFõˆ³Së̳Ž8õˆS8ë¼#Î:ÝÔ#Î<ëÌóŽ8´Î<ñˆ³Î;â¬óŽ8ë¼#Î:Î;ó¬3Ï;ó¬3Ï; ‰SÏ:óˆ³Q=%²Ï:âl48óˆ3Ï:óˆCÐ:Ñì‘1º‰èc 9HB)‰8ÆðqÄ£>ÿèÆ<æ±qÜbHÜèÆ3ð nÀ œ89¸q‰4À”°Æ30ŽnPuI3Zc7⌳Ž8âD2Õ:â$òTât@=óPÂ;â¬3O7ïÌ#Î;ïÌ3U7ëˆ3O7P½#Î<ÝÄ#Î<âÌÓÍ<â¼Tóˆ³Î<â¬38︳Î<óˆÓj<âLõN7˜vóN7óˆóÎ<ât#Çä!Æ<ÝÄóÎ:‰üô.¼ñþÃ<µ ‚Š'• B†;\¬ÄNíü³O2Ô“Îý°#@>ÿ쓎ÿØ@;U#@?ì ð;œ”ŽÿØ@9ÿì“Ì=ÝB@Ó;ÄŽûü“Žÿ¤#@>òúþü3ÐA =tÐ!0âKL%Î;ÿLõŽ8¾–8z%N3ai½uXØp͵9Í|=öÖØlmN3c›C6׿„…5Y™ÓŒ4Çd# 6^a“•9lkuL6~ >øÖØhmÎ1ZEòÏÖÙ ÞÌàr"á•geNVæ4–9ÇøÍØæxuÌàØX# 6ÖheN3YacåZc6ÖdeN3Y™sLì[c“•9Y™“6ÖlmN3Ò˜ÓLìØXÃ56ÖnNïÒ`C¶9ÇTO66a™ÓLXæ#Í1·ü#N<â|Ò¨V܈ÃÍ8ã¬óÎ<”`º%â¬Óê;ÌS#B°ŽytãÝXÇ;þ Ò qÌã~똇8汎n¼cïÇ<Öñq¼Sݘ‡×ñq¬£ïÇTÄQq@Eó€Ê;ÖñŽnÄcÝxG<ÞF#bèÆ;ÖÑuPb%F<"“¨Ä%À£‰îhb=Ü.¬$Â>ì‚ü#øG:pvàûHÁþá àé@>Ò!€“°CÿèG ‚°{€@ùø=°hûÈDð‘Žìãé€@Ò!€}¤cJ¼$&3©ÉMr²“ž4b(qŒ?`â˜Ê?౎yˆã°HXå•c4ckÍÐJ3´Ö r£Òh†5´þr ®C+2G3¬ i#dž5°‘•f˜#,ÍÆ1²Ò kH£ÒÀFV•ldÒ8F£u i4ÃY9†4Ž!f˜#+ÍÀF3¤Ñ(iCͰ†4Ž!FI#Y±†5Ž!f ´ÒhÔ1¤a lHãÙ8†4Ž‘cŒíZ³6¼Ò ­5C+†WšaެXÍ6% kH£Øh”4šá•HìVš‘•fH#ai†à²Pk4Céœ4š!Fe¥æÈÊ1š‘•t6CÍÀF3²Ò ¯CÍ0G6ŽÑŒ¬ 4+ÇhFVŽ¡•FCÙh†9²qþ iCÇÈÆ1¤Ñ s¤Ó͆5š‘•FI£m†4¬¬4Ã2‡4¥µc˜#+Ͱ†VšÐfd¥Òh†4ei£YÁF6Ž!cd¥ØÈÆ1¤a l4CÇF3š®6ÊÒ8†4š‘•tf¥aÉÆ1¤q iC+ØÈÆ1²‚Ðfdå^Ah3¤ÑŒ­a#+é<†9¤Ñ i4ÒJ3¤Ñ ldãZ±FVš¡•c˜£Yi†V°!ch¥_kÆÖšaެ4¡Í0G3¤Ñ(iÃ’F3´r‹Ì£U‘8Æ1¤q qdƒãè†8º±qDBóT1þqÌCÝ€8æA‰TêëxÇ:º1q¼cÝXÇ<ıqÌ£óèÆ:Þ1q¬ãݘ‡8Ö1q¬câXG7ÖáŽuÌ£óÇ;â!Žy¬ãâXÇ<05¨ˆc•ZÇ;æ!Žw¬CÝ#Ž‘1ˆcëÇ;ñÉE d ðð„'$1ˆ5ÀÃîXÂJÒ!€KÀDØÇ?Ø!€°C'a‡bx YÀ?Ò1€°Cé;ÐC¸€ jà @;úñààØÇ?Ø!°CùH‡­íms»Û™ #|‘‡¬cëpÇ:þQ©wþ@EûøÇ1šqŒFI£ÇÆ1š!FCé<†4c4ãéq3²rŒF£ÇÈÊ1šq i£æ8†4Ž!t£QÒhFVšac4CÇHç1šq i£Ò8F£Ž! kƒ«Ç°F3Žafhåä8FVŽ‘Î¬põÒ°F3Ž!FI£Çh”4¸zŒf#Y9F3Žá•f£QÒh†Vš¡•c4ãÍ8F3ŽÑŒcH£ÇÆ1šq ®CÇhÆ1šqŒfCÇÆ1¤atCÇhˆ›!cX£Ò8F£¤afCé<†4މ}4ãÍ8W¥Ñ i4þãÒh†4Ž!Žc4êYiÔ1šq ®£ÇhÔ1¤ÑŒcHãZ9F£ŽÑŒc4êÍ8q¥bq€XÇH§4šq âJÃÍ8qAŽcH#Lj%cd£Ç Ç1šq ¯×+ÍÐÊ1u â6ãÒhÔ1¸z ®ƒ«ÇÆ1HÃ1HÃ1dE£ƒ4pÕ1¤Ó1¤“4C3HC:eÅ1¤SV4ƒ4ƒ5pB5JVC£C£CVC3HC3dÅ14C44Ê14Ê14Ê14Ã14CX4Š54ƒ44Ê14ƒ4C3HC£C3C3HˆIÃ14Ê14Š54Ã1HÃ14ƒ4¤þÓ1HB5Ã14Ã1HÃ1Hƒ54Š4—44Ã14ƒ44Ê1pÕ1XC£HC3ƒ4C3C3C3C3ƒ4ƒ44Ã14Ã1pÕ1HÃ14ƒ44Ê1HC3dE:ƒWÃ-ìƒ8¬C7|B3h…8H7ÄÏ8@Å;P‚8ÌTˆ%@Å;ÄÃ<À<Ôƒ)„À<@…8ÌÃ:tÃ<¬C7¬ÃüC?üÃ>ìƒíÃ?þìÃJìCíCõƒíÃ?$CÄ>&Ñ>žÄ>Ñ>°#EV¤E2ZD1ü̃8LÅ?¼¦ÜÂ?DB$|#¤$#˜d$|‚J~‚J2Â'¨d$|‚I~BJ~B$|BJ²$%DÂ'Ää'¨d$$Kšd"˜$%DBL²$#DÂ'Ää'0Â'¤äQ%#P#˜d"˜d"DBJF#˜$#˜$#PBLFB"°d"PB$Ää'˜$%Ä$%0ÂQ¦äQƤIR%ÄdLF#|‚J~#|‚_2‚IRB$0Â'&#|‚_FB"D‚J^%K&ÂQ2B"å'0‚eRB$|‚c2‚I2K&Âþ'0Â'Ä$%0B$|‚J~#˜$#P‚e¦d$¤$%˜ä'0Â'0ÂU¦$K&ÂQÆä'f"$%DÂ'øe"˜d"0Â'\%#DBLF#|B$ø¥IŽ&#DÂ'0%°$%D#|‚JRK2‚Iò%#˜$#°ä'¤d$0B$¤d$$ÂQ¦äU~‚J^¥Jš$%DBLšd"|BJFB"D‚Jå'0ÂU~‚_FÂ'0K~B$0Â'x'#DB"DBJ²$#|‚_å'˜¤_FB"Xf"0Â'0B$$ç'0Â'¨d$$B$¨$%D‚J~BJå'¤¤I&Â'p¨w~BJFBr^e"˜dJ²$#Xþf$ÜÂ?ÌÃ:¼C"4ŠVˆC6ˆÃ8¬ƒ8@E$¬C7̃8¬C"L…8tˆÃ;PBtÃ:ÌÃ:ˆÃ:¼C7ÌTˆÃ:ÌC7LÅ;̃8@Å,®æêA®î&ííƒ@ÔÃ?ôƒ@ìƒ&åƒ=PÃ>¨ íãIìC­V«µ^+¶Öj0‚/äA¬ƒ8¼ƒ8¼Ã>¬Ã:ˆÃ<¬Ã-üÃ<ÔÃ<ìÃ<ìC=DK´äÃ>DK=äÃ<þÔÃ<äÃ<ÔC<Ðë<ÔƒÀÎC=ÌC=l>äC´,lÁÎC=ÌC=DK=ÌC=DK=ĽÆC´,¬ÀæÃ<äC=ÔÃ<ÔC<l=DK=DK=DK=ÌC=<ì<,l=l=ìÂÖÃ<Ô½îÃ<äÃ<äC´ÔÃ<ÔƒÌÊl>DK>ÌC>l>ìÂF-½ÖÃ<ÔÃDK>Ðk=äC´ÔƒÀÖÃÃÖÃ<ÔC´ÔC<ÌC=ÌC=DËÈÎC=´í<,l=ÌC>ìã<ìC=Ðk=ÌÖÖÃ<ÔCÛÖÃþ<,ì<ÔÃÃæCÁ.ì<äC=Ðk<l=ÌC=ÌC=ÌÃÂFK=DK=Èl=ÌC=DËÂÒk>DK=ÌC=DK>ÔÃ<ÔÃ<Ô½îC=ÐkÔC´ÔÃ<,ì<ÔƒÀîC=ÌC=DK>ÔÃ<ÄC=ÄÃ<ÔC´ÔÃ<ÔC´,ì<ÔC<ÌC=ÌC=Ðk=ÌÃÛÎC>DK=ÌC=DK=l>ÔCÔFK=,ÖÖÃ<ÔÃ<ÔCÁÖÃ<ÔC´Ô½.l=ÌC=ÌC=äÃ<ÔC´ìC=ÌC>DK=ÌC=ÄÃÂFK=ÄC>ìÃ<¼- /ì<äC´ìC=ÌC=ÌC=DK=ÌC=Èl=ˆC«DÂ1HþÃ1dƒ4ˆC6tƒ8<ª8Ä%¬ƒ8ÌÃ:t%ˆÃ<¬C«@´0BTÊ<¬ƒ8ÔÃ:tÃ:ˆÃ<¬C7¬Ãàƒ/óò?ìÃ?ìƒ.׃.32Ó2=P@À àC2G³4O35W³5_36 D=„#Ã@´ˆÃ;¬Ã>̃8̃8¬ƒ-üƒÀÖÃÑÖÃ<ÄC=Ðk=˜CÁÖC´ÔƒÀÖƒÀÖ½ÖC´ÔCÛÆLÇÃ<Ô½Ö½Æt<ÌC=ÌCL_tÁÖÃ<ŒlÛÖÃ<Ì-½ÆC=ăäÖÃ<ÔC´ÔÃ<Œì<ÔÃ<ÔC´Ô?׃Ol=DK=øt=È,L?ì>˜Ã<Ô½ÖC´À4½ÖƒÀÖÃ<ÔÃ<ÔƒÌÖÃ<Ô½Ö½ÖC´¼C=l=l=Æ8׸ß85‡#C@7¼Ã:ˆÃ;üC$‹Ã;ÜŽ'þy’ïƒ@샒?9”ó>D9•Ûx>T9–gù?샖w¹—¹.ßÂ>ðO$ƒWdƒ8D·8tƒ¹R‚¹ŠÃ:t%ˆÃ;ˆC«@<Ì%„@7¼Ã£¾C¥`÷:̃8˜«8ÌÃ:tC<¬Ã;D‹¹vÃ:̃8¬C7´Ê:ÌC7ÄÃ:tÃ;¬Ã<ˆC´ˆÃ:¼C7DË:¼ƒ8¬Ã;tÃ<¼C<ÌÃ:tÃ<¬Ã;tÃ:ðO$Â1üÄC7¬ƒ8Œ%€9±»±;5‡#ÜÂÀ;˜ë<ˆÃ?Àƒ¹Îƒ8ÈB-׃-ïÃ?Ô5ײÿC=ty=„»¹ër=œ»4׃º?y=Ts=Ðr=þ`s=dy=¼x=Ür=´û5׃5׃@ÈÂ?tÃ<ˆC$4Ã1HÃ1TJ6pCüDr$˜ë<¬Ã;$Â:¼ƒ¹vÔƒ8PBÌÃ:¼C<ˆÃ;ă8Àƒ¹Âƒ¹ÎÃ:̃8¬Ã;¬ƒ8¬Ã£Îƒ8Dò<ˆÃ;¬Ã<ˆC7`÷<ˆƒ¹vƒ8̃8¬Ã;<ê<ˆÃ;˜ë;tC$‹Ã;tƒ¹¾ƒ¹ŠC7„#øBˆÁ;ˆC<ÌÃ:Â>ð»ÙŸ=Ú_sPÂ1äA¬ƒ8˜«8üƒ¹vC«Ü‚4׃’ßx=üÃ>ô}4׃à's=är=èr=Ür=>Ž×ƒããr=D=Dþ׃å_s=$óþ>Ðx=D=d~-×C4׃-ßÂ?ˆÃ;ÌC$4C3hE6TJüTÊ õˆ&Uº”iS§O¡F•útŸÍ}ÿêMÕº•þà>¢_Á†ý·OlY³gѦUkvßZ·oá–Ý7ôÖ¿wëÄE’vLš´l¹ëöî]·H"ç‰ë–è]·yâºx7RˆuóÄu9O¤8‘óDÎ7O¤¸uóÄ­ë6od=q"»­'n¤¸uóº½Ùmž¸uóæ‰{·nÞ:qëºu«'x·u⺅ˆt,˜‘âÖ%"ˆ‚{wïß»bÄxóà ‚á} ƒ(Fx7Ø}„÷ÜG 1~ÄùñÏÁ?ÿFÐÀý…¸aÀ…ìΠ9&D‚gnþyG¤næ‘Ŧf"IQÅ)I1¨ñc–oöùf?þyQÇy|qŸ RÈ!‰,ÒÈ#‘LRÉ%™lÒÉ'¡ŒRÊ)©¬²È[ö'žu"iFq¬9†nÄ'¹wÄ¡džn{‡’nÄi3qêa$w›GœyÄYGœxÄ©§‘º™§›yFgžuæG$xÆYgžuÞ¸yD‚GœuÞI$qÖ™'¹wÄ™Gœ‘©›wÖi3FŽùC qæYçu!È"Bá¡9€ 6ظS„P»P@ˆ»ƒP@ƒP……P ˆ»†PÀÀ…P0…‡P…P¨…B`Ä—?˜G‘Þù§›yÄy§j†þ÷™'¨FÙGá}þQx–F¬´)þIg€|"ÎXã9îØãAYä‘­ôåŸwºY'’fŽiFš1»áFœqÞçHº™§›uºIäuæg橇’ÖéfqÖéæuæYç‘æg¤nDšG$qº™GœwÄyG$qÖy§›uf[çuæéžuæg$‘æYçnàYgqÖg¤xf›GœnB`ä˜<ÄgžnÄY'‚*än„ñFp„9μ“9FoïBa„îênïFànFo„ :o„ȽöÛ…¸aÀ…h?(FŽÉ#€wÖ™íþº™GœxÞ‘e–Ž¡äŸzª‡¥}ê ?úñ?¬ðöñ™}2æ'Ò€äûñÏ_ÿýùïßÿÿƒr‹}¼Có Lú"ipcãèÆH"±Žwˆ#ïHÄ:ºñq¼#ó˜‡)BðŽn¬c"‡HºñqˆdëÇ<Ä1qŒdݘ‡8â±qÌc󘛻±Žn¼câÉþƒ!(“à7øÁžp…/œá wøÃ!q‰Oœâ·øÅ1žqoœã¸”Å?º1qD&Ù8†8²!ŽqpãݘM$º±Žuˆc‰ˆ‡8æ!ŽuÀƒ”ÌÅ1qÈ|âèÆ:౎y¬câxÇlÞ!ónÈ<â¹;d>u¼£2Ç:âw¬câxG<ÖÑ ¢ËÜóþù<ÄAôn¼CæÝX‡8ºF#bXû:±t‡Üáw8ÀpgãAw8`ž àOXÃdQœ¹ûHw\Ðî(Ä;A üá ÀþàκÃîŒÀ@.ð Ò|gÝáw8Àp‡Üá@wFp‡Üáw8Àp‡Üáw8Àp‡Üáw8Àxg(wFÐp‡Þw8À€g(w8Àœç (Aáò ÞaæaÞáÄadNnÁ&Ž! nlb¬øÁfÁ fÀ fÁø¬ þ l "àÒðaÎ!ðaÎaþ! þaª!ê!àÒaþÁ òáÂ!þa:n ©° ­ð ±0 µp ¹° ½%öáþ¡Þa(&ú¢/¬aÄaÚ$ÄaÞAÞ!ˆNâ!Ä¡!ÄaºÁƒÖÞ!æafcº¡MâAæAæAê¡æèÄaºAæaíæaºaÄáïdNæAÞaºaÄAææÖáþîâáB Ž!Ä`fcÄ!þa‚;F€;F€;F€;8‚ þ‚;8À 8à BÌŽžàÌB€óæ! F\`°æ¸ÃîF\ PÀü\ ‚öaº  šF€LÁê º!º àAº\`F€;8à ¸c8À Pà ¸c¸c¸c¸c¸Ã P@!¸c¸c¸c¸c¸c¸c¸c¸c¸c¸c¸c¸c¸ã ¸ƒ Â;8À 8‚;F€;F€FÂ;8À 8 !ºÃ B€ná`ÄaÄ¡öAæÄaÞÁl¢"¡àæ%ÆfÁfþffÁffÁXâ`ŽXâ€%Î!þ`þ!€ Øaþ€%ÎAþ!àÒAòá`Hsà Q35Us5Y³5]ó5a“ànáÞaÄ!h¢/ÄÄaLơ֡>èÞA(aÄadæ¡(!æ¡dn6Ö¡ÖAcºAæÄaíæaÞaÞ¡æAÞAæ£æAd®dndnÄdnÖ¡ÞA£æ¡æAdn6d®ÄaÄ¡B€Ž!Ä`æaÞaaþ;    Â;8À;þF8€;F`âþþád.Þ¸/ÄÁ²a¸aˆ.âAÖ¡Þ!æAÖaºêa(!ÞAæÄaÄaÄAææAdNæ¡â¡ÞaÞ¡êAdnÄAæÄaºaíæa6æaæaºafCæâ¡Þadnd®ÖAêAâáºaÄþaÄ¡B€Ž!Ä`dNÞ!öáF  F ;FF8 ;F88 ‚¼Ã P`dA Ä  ž dœÝÁàa ¸Ãþ¡b` ¡¸£Ô€;p¡PÀþa\ P`  ‚ö ¢P`ÁPî¡\à¸Ãþ;\àPÀîaP`ºã P€P`PÀ P€P`PÀ ¸cP`P€ºcPÀ PÀ P`P€P`PÀ PÀ PÀ PÀ PÀ PÀ ň(¢ˆbŠ…Ž@1ÅÀ…(8P¤ÈÅþ#P D1‚"#PŒ@1báŠ#.RˆbàÀ‘Žå nÞ»ÿÖÍ[7ïÝ­D‹=Š”è¾¥Kë-Eº/©Ô©ÿÒ ø·ïè>ªÿêýÛÇ5¬Ø±dËš=‹6­ÚµlÛº} 7®Ü¹tëÚ5zëߺuâ>“fMZ6nÖÆëÖMÜ»Hëæí\G©Ûøƒ<õ3 #ì@ 5ÞìÑ .䃂 õ,4-ÞürÈ< ¹° CäS #ÐÒ‹ ÿŒ€‚ ù,äÂ<(¸0Ï(Œ€ °Ð(p€Â € €(Œ°Ð q@ ´Ð(Œ° q° q° q° °( D(Œ°Ð p( ´Ð q°Ð( DÑ(p°(Œ€Â(Œ€Â(Œ€Â(p°ÐB"ÇäÀ<ˆÍ#Î>óˆ³W7² Åj«ÿìóÏ>®ÎJk«ì Pk®ºîÊk¯¾þ l°ÂKl±Æþ‹l²Ê.Ël³Î%Ë?óˆ³%Í\+4∃Ø8;uCÉ<ÛŠÓM"ïˆ38ÝÐ%!̳N7{ÍKo7{ͳWgâ¬#Î<ÛÒÛÍ:‰Co7ó¬3Ï^ï¬3Ž;{‰³×<ô®#Î:ït³Î<âÐ+N7!0rLb¬#μ”,5(Œ@Ñ(p€Â(Œ€ q€Â(Œ€Â(p°(È„B#ÈBÒÂÂN;Â@€Â@(È„Â.-4 # 0 #,$ÓB# 0 # 0ÂB#l= # 0  0 #P4 #,4  0ÂB 0 # 0 # 0 þ 0 # ÀE#,4ÂB#,4ÂB#,4ÂB# ÀÁE# 0 # 0 # À # 0 # 0 # 0 # 0 # À # 0 # 0 # 0 # ÀÁB# 0 #P4 2¡0BŒó;‰óÎ<ûÐûŽ,ûKýößþúïÏÿþÿÀ p€, Rö!‹ÀcâˆÄ1¤q qH#Ù‡8ÆÑw¬ƒëxG#€1.#€ #€#p#€#€u?(0(0(àò(0ÁÔ(01(0áò(àó(01(0(ðôéò(0(0(ò(01(0(ò11(0(`ú(àò(0(ÀÔ1þÁÔ1(0(àó111(P÷(0(01(ó(0aú#(F bÄÁ(FÜú7Oœ8Jûæ­«÷®Û8nÜÄIkv듸wïæ‰£$nÝ:q눛G)ļ“ïNŠ›'n]·“ñÄ|wrž¸“'ç‰ ï$¼ Aç‰[÷nÞ»nëºÍë¶®ž¸“ç‰{×íä»n'ß×-£cyÄt›7ï$¥~ÿäÎÝ7÷ß¾¹ûìÊÝ'7ß¾½çî¼wß¿}r÷–»1ã}‘íî{\Ùî>¹ûæî›»Ïrå}v÷ýÛ÷yï¾½ûäî3ýx_áÈÿö޼7£cyþt›·NÜ»}₾»õÅÁf‘Ïû‡ÂùfÅëW}ß?9wîâžóÜGäãî! »˜‡! (F”§Ïá#ês8ÈŠêCFp޹ãÀ¹Ê;rî¾Ëãà ç8ànî*çF¨p8¸oçîãŽF o„98¨ÂòòF@ƒòFpnî88È9œ!AP*9@a„ú8 F(F@á>8pn8 œèÁ9ânç88P¸>rŽçFHƒ¢þFpŽƒòF@ƒƒœãÀ¹Ê»…ûœãÀ9Îä€>P;Bá>î88œAÀûP¸Ï¹ûPà€FœBƒúFpŽƒƒÎDF@ƒòF@aXþY'žw"ù§žwĉçqÆÉ&qšåqÖé&¤Hæ9ižu¨gF<8Iœy’šgqæéfžuÄYGœyºYgžuÜYGœyÖéfqæGœyÄ™Gœ æç¤wÖ™GœwNzgž“æéfžuÞIê$qÄ™çxÞ ‘còãnºY§›D*Û§2 çÚg¢‹&:h¤“V:èz–vº°}®g®z‚®gþ¯z «g®zžžkŸÂB ä˜?x§›yNúgyÄY§YúÁ9b"ù§ƒæÂ{Ÿyòƒƒfñ£ºY±Âdú¹ÇYPâî;ã>¸»PpÁ¸…Pà Ñû8 ƒD¹C…Pà QF@á PG…ƒP@ˆânÊÝâî â…ƒ8àî>BaPGa„úFà <„P…û8@a厃äâ ¼8¸„8@aâ…8@!îAP‡‚ `ÎáÀ}P€:Œ8 N„‚ €AÁP0þ‚òŒAÁPо à ( îÄ;á  `ÜáÀ‰P€:Œ€;AÁAPÀÔ%ˆ'BÁPpÜ#àÎAPp „åá@y✠…(8 F€„pgÎá  à (àÀ‰8Pž8‡(Ê3´AÁ¸3œˆ(8w8€BŒ#@Á}Pp_üã$݈Ä?ÚuˆcâȆ8¤qŒ[DbI „;Ö1–àõ Dæ!Ž“ˆ'G=Ö!Žwtcë˜GRº±Žwˆã$â˜GHº1xˆ#(óèÆ<Ä”þn$EëèÆ:ıŽn¼£ëèÆ<Äq’zˆ£-ÝX‡8ºF#bÉ<Þ±ŽDxíis¨GdüÙ‰9èS ú¬Ç@åRƒzm L=:—0ÂyÀ;º±q¼câXÇ'  ` Fàœp‡õsF€ `åA NÄòp >qΜ3‚ò „ÜsF@pg(8P0„Ü F€þ8gBHy8à”çD Ï¸3猀;#pÎA¸ƒçŒÀ9#HÐP0„>#ÐP0‚úŒ€>#@ÁÊ3Œ@ Fàœ `Üá€s8Pž8g(AyFÀ„ €åA F€„ÔgÜáwF€„8gÎA‚Å#pÎÊ3 Ä9#p¸“<8ç (w8à”gô F€ !(à€sFÀ„ `ÎA}NÄŒ€;'BÁ¸ÃúŒÀ9#@BP0úŒ€;)4Œ#(œ3[ücïXG$þQxÌþ#$ã7Ä!cØ‚â˜GP!Ž“Ìãh‹)BðŽ•…ùâ˜G7Ö!ŽyœDïXÇÜ€8€‚8g@w‚‚ƒ à>ô9 FÀœÈ9 FPŸ `ÜA F€‚8g(¸ 8€îܧ<@ˆ€îƒ„ à (@ â„ €(8 ‚‚ûp!( FÀû €áÀAP0Œ@ FÀ„ `(¸ F€‚”g(P0 Ä9#p‚‚ƒ `(¸ BŸûpg(wF€ qÎ8€‚8‡þAÁAPp D@Aâá FàABhtqΜà`@ F€‚Ôg(  à ( 8€úŒ¡ÏPpçà€ƒà€ƒ@ƒ@àŽ@à„@„àŽƒ@@8@¸8…}˜qXJø‡x˜qèqni†[ˆ„“h™uH„¤è†˜q „è†y‡yè†y‡ ˜q8‰n˜‡ ‡y8‰yè†u˜‡XqX™n˜‡¤˜q˜‡uè†y‡yx‡u‡yè†þu‡y8‰yè†yh™“ˆ‡–™qè†`„cÈ1˜qˆ‡wXF؇\³‹}Hƒ@O„A؇g†N˜ƒ}( v€|( zð[ë‡t€}(DP Å\ Fð…<q8 qx‡}è†uˆ‡uxYø„hJȇzø“ª‡؇yøç8À~°t˜dD+À~Ðçè‡V€†V@èp`ýúöïãÏÿoß?.ðj¡â *ž ²F=\ÔgOåÌ—ÌùÔ·O8ü“ŽûàÿìcßPÎ>é€Ï>ç€Ï>çð;裌3ÒX£7â˜c}!0r̬3Ï:â¼³Ï:ݬ&1ÿŒ€ÂÇ$þòO>÷Õ3Ï>5ÔÈ,þüÓ}ý4ÒC(ŒàÂ?­Ä04½ àB?(¸ÐC(¸Ð #@à #ÐÒC 0–B# 0 # 0 p4 # 0 )ÄB#4 Ä #p€Â(0„Â(Œ€Â(Œ€Â €PР(ŒP(Œ€Â(p€Â(Œ  €Â(p€Â(p€Â(ÔÄAA# À #ÄG#4 # 0 #Ä # 0 #4 #(4 # 0BAÄ # ÀAA ¡0BA#ÄB(4 4G#4 þ ÀPA4BA# ÀG#4BA#Ä Ä #ÄAA 0  0‚B# 0 # 0 #p4 # ÀAA# ÀB4  0 # 0BA(Ä # 0BA5¡0G 4 # 0c€Â Ð(Œ€Â(0„Â(0„ PÐqPÐ(Œ€Â(ÔÄ # À #4 (Ä(Œ€Â(Œ€ÂÀCq€Â(p€Â(0„ €Âc€€# À #4G#TÓXÄAA#pÄ #4G# 0ÂX#(ÄAAþ5¡0‚,û¬#Î;‘ìSÏ;Š­3Ž8ÜTÖÌ-”¼#N<ŠQ¢ëxG<Þ€wÔƒ!Ç<Þ±Žw¬£ó‡83ú¹C1âx‡8æÑuˆ#âˆÇjæ!ú‰ƒ~ïPÌ<ÖÑÕÌcâ˜Ç:ÄA¿y¼c☇8æñú)æñxG"qŒ<ˆAŠ™‡8QŸ'B1ŠR”b?¸€xÔ߀<ê.ÐgçÀ|ö‘Ìgh@& €°CõÙÅØ8@qçÀæÃÌ'˜O:Ðt `ŠŠ\$#éÈGB2’’¬Oá‹<`âXÇ;ºñúÍãþ²è F€‚f0bõM<ê1zäcý@ÁP0Œ ~˜Å;þñŽYØ¡nA úxìC#@ òä£ #ðA> 2Zx㇈ F€‚ `á 8€‚ `( FP `(`HA8P„! F€‚ ` AAj‚‚ ` á@A8€‚„  8€‚pd( 80p#PÈP0…p#@ ÂŒ#@Á8€‚(d 8ð’ €( 8€‚d(àÀP0Œ#@P0Žp  #þ@ÁP0Œ  @ÁP0ŽŒ  #P 2p`(AAF€‚ `( FP `( FPdaHAF (d( F€‚ €( R `( F€‚d(BF€‚ €á F€‚ €!(à FÀd( F€‚ `á@A8€‚ `(AAF€‚ `  80Œ#@P0Œ  #@CP0p#@ÁPÀ‚p  (ÈP0‚‚p AÁ ÂŒ@!@Á —Œ#(þP0Œ@!#àÈ 20#@Á ‚Œ#@ÁP0‚‚p#(ÈP0Œ5ACP0‚‚Œ#(ÈP0p#@CP0‚‚p@! AP0Œ  #@ÁPÀŒ@!@ÁP0Œ#@CP0Œ5)HM 2ÜâóPL$þzÌC1âàF7*s YD‚~âXG"Þ¡qt#ï˜%BðŽn¬C@Ü´8æ!ŽwˆcŠy‡8Ö1 ŠcÓóPŒ8ÖÑũ‚ŠéÆ:Ä¡qÐOëÇ:âÑ ÅPP1õÇ:ÄÑ0âyÃþ<(8uPbó™6µ«míkc{>ýàÕÀ>ìaZìãç@?Ø!€iÛã´ØÇ?Î!€ko €F?Ø!€ù°CÿØG:Ðt`Ùž8Å+nñ‹c<ãßø´C‰cü!ëÇäpÑYº>Àƒ;pAµ¥Àìƒ?À€ü=@;üƒ?üƒ=@;ìÃ?ÐC´Ã>øÃÀ|ÐþØœ`À?dBàC:À|¤ƒÌG: À?°ƒˆåg‚fhŠæhR[0Â1äÌÊQÐ>̃8l¤,ÔàÀ €[à& ¸ Œ@Aà&C À €[ À @M @M C À @M ÀÄ À Ä À À À ÀÄ À  À À À À À À  À  À À À  ÀÄ À À À À C  À À Œ Œ p Œ@AŒ 0 Œ@AŒ Œ Œ@Ap Œ@AŒ Œþ 0 Œ p Œ Œ Œ Œ Œ Œ Œ Œ p€BŒ 0 Œ Œ Œ p Œ@AŒ Œ Œ Œ p Œ Œ Œ Œ Œ Œ@AŒ Œ 0 Œ Œ@AŒÄ À  C À  À C À À À Àp Œ p Œ Œ ÀÄ  À À À À À À Àp Œ Œ p Œ Œ Œ Œ Œ p@AŒ Œ 0 Œ 0 Œ@AŒ@AŒ@AŒ Œ Œ þŒ Œ@Ap 0 Œ Œ Œ Œ Œ p Œ Œ p Œ Œ Œ Œ@AŒ Œ 0 Œ Œ Œ p@AŒ Œ Àp Œ@AŒ p Œ Œ Œ Œ Œ Œ Œ€BŒ Œ Œ Œ p Œ Œ Œ Œ Œ@AŒ Œ 0 Œ Œ@AŒ Œ Œ Œ@A0DAŒ Œ p Œ@AŒ@A0 Œ Œ p Œ Œ Œ Œ Œ Œ@AŒ p Œ Œ Œ Œ p Œ Œ Œ À ÀþÄ À(Ä À À ÀÄ Àp@AŒ Œ@AŒ À À À Àp@AŒ 0 pCC €,üÃ< %üChă8tÃ8ˆC6ˆƒ4Hƒ,$Â<ˆÃ°Á„@dìÃ?„ìÃ0@9Ì ì@:À|°ƒüÃ>¤ƒô;À|hñsq{ñƒq‹ñ“q›ñoq$Â1üAlä;ÌÃ?¬Ã<ˆÃ:¼Ã-üàC C(Ä À À €[ ÀÄ(C À À À @M À @M C À ÀC À À À À À À À À Àp Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ pÀÄ À À Àþ À À À À À À À À À Œ Œ@AŒ 0 Œ Œ Œ Œ Œ p Œ Œ Œ Œ 0 Œ Œ Œ@AŒ Œ Œ Œ 0 p Œ@Ap Œ Œ Œ Œ 0 Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ@AŒ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ 0 Œ Œ Œ Œþ Œ Œ@AŒ Œ Œ Œ p Œ p Œ Œ 0 Œ Œ@AŒ Œ Œ Œ p 0 Œ Œ Œ Œ@Ap 0DAŒ Œ p Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ Œ@AŒ Œ Œ Œ 0 Œ Œ Œ Œ Œ Œ Œ Œ 0DAŒ Œ Œ Œ Œ Œ Œ Œ Œ 0 Œ Œ@AŒ Œ 0 p Œ Œ 0DA0 Œ Œþ Œ 0 Œ p Œ Œ Œ Œ Œ Œ Œ Œ p Œ Œ Œ Œ Œ Œ Œ 0 Œ Œ Œ Œ Œ Œ@ApÀ  À À  C À À À À CÄ À À ÀÄ ÀpÄCØB>Àƒ8¼C$üCh¼C<¼Ã8pC6XƒðÊ%ld<¼%¬Ã<¬ƒ8¼CÌÃ;0BˆʽÃ:̃8¼Ã:ă8̃8̃8¬C7àd7lä< œ8¬ÆFÎC7ÌC7 Ü< œ8ÌÍC7„†8ÄÃ;¬ƒ8þ¬C7 \7ÌÃ:̃8̃8 Ü<¼C<¼CDÂ1äA Ü<ˆÃ:$Ãû/<°;p‘;Àƒ;,ßC?ìÃ?ìÃ>tqÀkñ>üÃ>pqÀoñ>xqÀkñ>tñ>ÄûÄS|Å[üŇq0‚/䬃8 œ8üàC ÀoŽ ¸EAp ŒGŒ Ô ÔDAŒ Œ ŒGp€BŒ Œ@A0 0 Œ Œ@AŒ Œ Œ Œ À À À À À À À  À À À À À À À À À À ÀþC À  À À À À À À À À À À ÀÄ À À À À  À À À À À À À À ÀÄ À À C À À À ÀÄ À À À À À À À À À À À À À À À À À À  À À À À À  À ÀŠ(F 1Å#PŒ@1ÅPŒ@1Å#PŒ@1Å#PŒ@1Å#P bŠ(F þbŠƒ(F â`Ë(¢â`Ë(Fp@1Å#PŒ@qÅ#PŒ@1QŒ@1Å#PŒ@1Å#PD1Å#PŒ@1Å#PŒ@1Å#PŒ@1#PŒ@1Å#PŒ@1Å#PŒ@1Å#PŒ@1Å#Pp@1Å#PD1Å#PŒ@1¢å#PŒà€bŠ-G bŠ(F bŠ(F bŠ(F bŠ(F ‚Š(F bF@á F@aF@aF@aF@aþF@aF@aF@aF@F@a„–F@aF@aF@aF@aF@aF@aF@aF@a8@á –dùgxº‰äŸ}Ä™gqÆé†q²‘æ–DÖsnY§›yÆ `žz( !qÖéfÌxÄónæéfqâgyÄYgqæçqÆgÌyÄYGœxÄY§›uêsžyºy§2ßgqâgwÖ§›wºY§qºYGœnB`ä˜?ÄgÌyÖIäŸ^}ýØ`…¶×}–8Ù%„@vŸ_÷!Úh¥vŸi­½ÛlµÝ–[hCˆäþ˜<sžuÄùçnÞY÷–P8h„–P…äEá Fh ÞP…PAÞƒP…Pàà –àEaBá F@aF@aFà…P¡¥PP…P…P…P…P…PP…P…P8¨¥P…Pà…P…P…P…P…P8…PP…P…P…P…PP…ƒPà…Pà…Pà`F@aBaF@aF@F@a8@aF@þF@aF@F@F@aF@aF@aF@aF@aF@aF@a8@aF@aF@aF@aF@aF@aF@aF@aF@aF@a8@a( 8€‚ `( F€‚ à ( F€‚ `( 8 ¯ `( 8€‚´d( F€‚ `( F€‚ `( F€‚ `( F€‚ `(à F€‚ €( F€ `(à F€ `(AK‚‚ `( þF€‚ `( F€‚ €( F€ `( F€‚ `( F€‚ `( F€ `( F€‚´d( 80Œ#@P0Œ#@P0Œ@ÁP0Œ#@ÁP0Œ#@ÁP0Œ#@ÁP0Œ#@Á8€‚ €( F€‚ `(à F€ `( F€‚´ä (8 F€‚ €( F€‚ƒ `(àÀP0Œ#@ÁZÂ{µ„#@Á-þÑw¬ƒÿÈ”8âþ±qŒ#ÒP©-(!ŽyŒI”xG7æ1¦¼£ŒÁ:æ±q̣똙º1¦yˆ#Sݘ‡8Ä1nÌcLó Ó:º±ŽyiS]G7ºñqÄC«ë˜Ç˜æ!Žy¬#ëxǘÞy¬ë!H„/ò †1Í£ë D·°µ}àïÝÇ?ËWÃk‡UìbÛØh…€¾øCæ!ŽnŒéâxÇ:ÄñYÔc÷äÅx¡`(îup#@F€ `( F ¯ƒÈk(AKF ¯ `( FÐ’ €(8 8€‚´d( F€þ à ( F€ `(à F€‚ `( F€ `(à F€‚ƒ´d(à F€ `(à F€ `(8 F€ `- ‚‚ `( F€‚ `( F€‚ `- F€‚ƒÈk( 80Œ#@ÁP0Œ#@ÁP0ŒiÉP0Œ#@ÁAäÅ#@ÁP0p#@ÁP0p#@Pp–Œ@ÁPÀŒ#@ÁPÀŒ#@ÁP0p#@ÁP0þp#@ÁAZ2p#hÉPÀŒ@ÁZ2Œ %#@ÁPp–À #@P0‚–Œ#@ÁPÀŒ#@ÁPÀŒ#@P0p#@P0p#@ÁP0p#@ÁPÀŒ#@ÁPp–Œ#@ÁAZ2p#@ÁP0p#@P0Œ#@ÁP0‚–Œ#@ÁAP0p#@P0Œ@ÁP0Œ#@PpŒ#hÉP0Œ#@ÁPÀŒ#@ÁP0þŒ@ÁP0Œ@ÁPp–Œ#@P0p#@ÁP0‚–Œ#hÉPÀŒ#hÉP0Œ#@ÁPpŒ#@ÁP0Œ#@ÁPÀŒ %‘×P0Œ#@ÁAZrŒ#×-þq¬#ÿÈÔ<Æ4qpCÒhÆ-"±ŽnÌCïH„8Þ±q¬#ï˜%B0qÌcâ “8æ!ŽxˆcªâS¦º1&qŒI먇8ÆÔyˆcL☇8Ö1u¼cªó‡;È$ŽyˆcÝX‡8æÁÔ1‰£ÖAº!áþò@ ÄaLÄáAZ{ů"+Ð/3P7‡%"Áò ÖaÄaÖá¦ênáú!^°z¥òáú¡^0˯æá÷Áû!lpúapð÷¡^ÐýÊ÷!úÁ¯òÁ¯ð¡ööttðaºpð!°º ëaðA‹ »°Òpðað! ÜЯð!°ºpðaðA°ºpöa ç çaÈpöüŠ ãaðaºÐ¯º°ö¡ ý öa çaÈЯȰüŠ ãÁ¯ºpºp ö öþææaðA°ºpð!°ð!°ð!Üüj ÷ü öa k ç!°ðaü Òö  æaðaðaðaÖ0ü  k »P°È0°ðÁ¯ðA°ð!°ð!°ð!°ðAñAñ!°ðaðÁ¯ðaðÁ¯Öpö« ÷tö¡ ýj ýŠ çaðÁ¯ð!°ðÁ¯ÖP×°öüj  ö¡ ëÁ¯ð! ×P°ðaÒ1°È0ö í çaðaºÐ¯ðÁ¯ðaºpðaºP°ðÁ¯ð!°ðaÈpö Ó ÷ööþ çaðat°üªúaúáoáÞAê!ö!S˜êÆA²ATJ(aÄáÖáLÄá SL¡ÆÞaæAæ¡âaæA«Äa¸êÈdÖÈdƤÖaÄaÄaÄ!¬ÄaLÞ!¬æaLæ¡â!ÄaÖáæáâáB Ž!Ä€Læ¡"¡P8‡“8‹Ó89“S9—“9—3þ¦JöaÄaÄanAXöáüÊWüêöáüêöÁWtXöáöZöáö¡Wò¡Wöáò¡WúÁWöáöáö¡W«þzez¥zůúAXöá«üjXöáËWtðöáëËWö¡Wúáú¡Wüªzů~e|ů|ůþ¡öÁWüêú¡WúáWöÁWöáúáWüÊWúa~¥öÁW«Wö¡W«|%°lðöáüªWüªz¥zůz¥öáܰWü*XüêúXëWüêöáüªþAûáö¡WüªWüêüêúáöáúáWë÷¡Wüª„%°|¥þaþaú¡W«WüªWüªWüêlpþaþaþ!°þaúaþaþÁÿaþÁ¯~Åþ¯zůú¡Wú¡Wüêöáö!þ¡ö¡Wòáúa|ůlpzůze€Å¯úa„eúáWúÁ¯€Å{%°úa€%°þa‚¥öÁWüêò¡WëËWüêö¡Wúazeþaz¥þaz¥ö¡öálðlpþ¡|ůþ!þ¡öáËWúáöáöÁWüêüÊ÷¡WúAX|áÖáÖöaöâ¡Æ¸!ŽAnáÄaLæA"©æaL`ÄB`ÄáºaºaºáºaLÄaàaæaLÖeÄÆDÖaÄaºþaÆdºaºaLÞÁÆDæAæAÖ¡æAàLºaÄ¡È$ºaÄ¡ÖAº!áò@ ÄaºáÖzešÓpqWq—q‡3Áò ÄaÆdþLÄadXö¡Wö¡WöZöáö!XöA8ë8ó¡Wöáö¡WöaXò¡WöaXö¡WöÁWöaXüêö!Xö!XöÁWöáWüJXöáWòAq÷¡WöÁWöÁ8÷Á8÷!Zö¡WöáWöáWöXö¡8óXöáWöZöÁWöá8÷ÁWöXê!ZöXöáWöÁWöÁWöáWöáöÁWþöXöÁp÷¡Wöa8ëÁWö¡WöÁWöXò¡Wö!Xöa8÷¡WöÁWöXòZòaˆ%|e†s¤e|ezepŽÓ¯|eze€åþ¡Æ$ö!SÖáÖaÄádUê"aÖ¡Þa(aÆDÞ!æ¡!ÆäÄaLÞAâAæaÄáÄaLà¡ÈäÖAâaÄáÖa˜jºaLÞaLºáÄa¦jÖáÄaÞaÄaÖ¡æáæaLºáÖaÞaà*áò@ æAÖEZ2Y“7™“;Ù“?”CY”G™”K¹“C€þŽ!`LÄaÄ¡ÆdâAdÁWöášA—w™—¡‚e¡¬@¬ A“ëÁ”ÿa@¹:¹ ¥–9“ëáWòÁWêAXêa”ëXêÁWêXêšËÙWêXêAXêÁœ‰¥–9Ú™”ëAž=¹†¥ˆ%~¥8¹ ¥€¥<9:¹|¥8¹:¹€¥FùþáÆ$þaö˜j¸A¤AšA(aÄL¡ÖaÆÄa(!æAÖ!ÄaLæaæ¡ÖaÞaªÞaÄaÄaÈäæAº!Sº!ÄaªàJæAàaLÄþLæAæ¡ÖáºaÄaÄáæAÖ©æAº!áò@ ÆDÞa¡žãZ®çš®ëÚ®‡%áò ¦jþAÖ¡ÖEöÁWš![±›[XÁfáöáfÁá®E¹:¹ eD¹þa6¹|¥æº€e|¥€e2û“ëáöAXöAXê¶;¹r›·Ky†¥†¥€¥þa4y e€e:¹ÊyXêº3yþáþ©æ!ö!SÖ!Äa¸A²A¥nÖaÈ„ÄaLÜá æ<`ÄaæaLºAþ¦JÖAæAÖ¡æ¡ÞAÆDÖ¡Ö!Ö¡ÞaæaLÜA¦ªÖáÈdÆDÈDæáÆDæ¡ÄaÖ!SÖáâáB Ž!Ä ÄaLÄ!¦Çs\ÇwœÇ{œ”C Ž!@Ö¡æAöaLÞaLnáWކeæXú¡fáö¡WúÁ¯f¡~…`“÷àÒa‚%ÀÇÛÜÍßÎã\ÎçœÎëÜÎï|ÇeáÖ¥(áfoÞ¡¸!¤Ašáa˜JÖ!æAÖáÄ!Þ¡(!ȤæAæaLæAÖaÖaþÄ!ÄáºáÆdÄLæAÖ!˜ªæAàÊ´ÊÆDæAÈdÞAºaÈd]ºa¸jLÄ¡B€Ž!Ä`æaÞaϳ]Û·ÏC€Ž!`Ö¡ÖeÄaªnáWŽþ¡þa€e€ìÀüüÀ üüaü`|%`6ÙòàÒAòXØA¸â#^â'žâ+Þâ/¾œoáÖáÖ!ö¡ÖaºaÄaÄA¥Žá(a2eL(¡æ¡Ö%2…B`ÄaÄaºaºaLÄaÄLÞAâA«æAæ¡ÞþaLÞ!SÄa]ÖAÞAæaLÄáÄaÖ¡æaæaÜaÞaÄaÆDæaÄ!ÞAæ®B€|áÄ@ÖAÖA(¡”óáÚÞ0Þð?ÇC Ž!`ÄáÖ¡þaÄaÄanáWš!~¥~e~eì`üaì`¾aì`üaÁWØA<9Òa‚%ñwŸ÷{ß÷ø ÿþ©Ö!þ!SÖáÖaº!²A¥|!Ö¡ÖAÖ!âAÞaº!Þa(!2¥â¡â¡ÞÁæaæA«ÞaæAæAæ¡þæ¡ÆDæ¡Ö¡Æ æ‰{G°Û: ”O:±=T‘;¤ÄÎÿ¤3@>ì€R ,ÀcÄ(çœtÖiçxæ©çž|öé矀*苲ü³Î;ÝPòÏ<ñÄ#Î8ât“4Ù4cK$ݬ38ÝP²Ž8óˆÓM$þQm ôN7ëÌ#Î:ït8ëÌ#Î< ½38ÝÌ#ŽBݬ3ªó¬ÓÍ:ẫª8ë¼£P<â¬óŽ8 ½³N=â¬38ëˆÓMŒ“‡ ‰³N"rÆ0 4ì¶ë.4pÄ€R8ì# ;ðNûô£Ð2èÀB$ÇäÀ:âÄCÐ> u³Ž8·¨tL$î3JûX >~ÌâÅ ^Ìâ?ÈX±JéPN>ÿ$“À?ì€R=ì ðO:üÃŽûØs@9(%#@ÁH'­ôÒL7íôÓPG]ç>·üÓÍ;ÝPòO=ŠóÎ8Üp#Ž4Ò܉8 Åó%݈AþÌS#!¸#Î:âÌÓM7ë¼³Ð<ë¼£Ð<ÝÌÓÍ<â¬#Î< Í#ÎP’Ž8ð‰PŒ¢§HÅ*ZÑC·øÇ;ÖñŽDü#ó˜Ç;Ö!޽qã͸%¢n$â똇8ºs̃!xÇ:Â(‚Ì£óÇ:Ä±Ž«Ì£óèÆ<ºÁÆuˆC!â˜Ç:Âx•yˆcóèÆ<"Žu¼ƒóÇ<òŽu\e yG<ÄÑ …ìmâèFqŒ<ˆa☇8Ö‘ˆ95ÐÀ…0… av¡(9ö¡v`é ð¡T!ìÀRbjüã0àÀ>Ø€+äcü0@9öÑìþ ØJö‘Œäã?`>Ôƒ!ì#ÀÂ>Â,ì# øG?RÀ‚}¨8ØÇ'Š’0âyÀ:6*ŽwìcëèÆ:Äq •X#ªG>T2 ;ô£³ðƒü€Œ%ùûøÇ>Ø€vücÉHÀ?Ø!€|Ôãá@>Ò!€~¤Cÿ°GÚ‘TCû ¨V·ÊÕ®zõ«¼Å?®2HD‚”H„Y#‘³~‚Ÿ „8æ!Žw¬#ëèÆ;â±Ì£ŒÁ:ÄÑw¬ã*ïÇ<Ö1qÄc£ëèÆ;ºñŽuˆcÇF»±Ž½…qó€l7æ±Ñytcþâ˜G7æYÈβâXA6Jy¼#ïA"Ž‘1ÌcÝØh"VBÜâ¢DzN¦r‡‰Š$¤$ØÇ?êvàì8@;P’Œü#ÀG>R²”„ƒÿHð’|ü  ÿ ÇÊqì#%Õ@=ì€rìãáHÀ?Ø|ìãÀÇ>Î1€Ø#å@I2`Ü [øÂΰ†7Ìá§dõ#Ž‘ÌCóØè?®²Žy¬ã*!F$ˆ»äc)‘Þ?1‹~HïÇÿhD#ö‘’t ý¸†~,@ÿð ðvàéJRp…øþð°˜ÇLæ2›ùÌhN³š×Ìæ6»ùÍp޳œçÌá}üCÿh”8"qŒ×XÃaG7Ö!Žut#óèÆ<®B‰u¼cW @)‚y@v86*ŽÖÎcïXG<Ä1utëÇ<6:‚ìmÝ€ì;º±Qq¼CóÇ:º±w¬câ˜G7Ö1q¼²âب8º±qt#Œ8FÄ Žx¬CëHD™y°Ün× %áÀ>R²vàì@JÎ!€}¤C(ÙÇ?vñL èG:’|#ûþqŽì#%ÉÀ>΀ 8| øG:€vàûþ`Çþqì%çGNr‡ ÇøC +ŽwìãõèÆ:Äq ”ìãÖHDëzÄcõ#q÷Ñ?ÌâýxÇ,üЈ•¤C—xÀzðã`P ÈÃþÁŽäƒÈÇ?ì¡„ (¹Ú×Îö¶»ýíp»Üç>ç[ìcïXG$ŽÑ ²I#âàF7Ʊ‚PâÝhÔ:(Ñy¼#ïÀ;Ì!‹@ÖëèF<6:ÖvCóXG7æÑy¼²âب;6Jy¬CóÇFÅ1Ö®c}‡8Z+Žu¼c☇8æ1Îcª #Ž‘1Ì£óØþ(%ʃPLâú“ÅõC1‰PÄ %çÀ>T’ü#hÇ?ö‘ŒüƒH‰= é…Cÿ`‡VRSl@ÿ°)ñðöí°ì (‘€é ÿ`PÿÉt×jŒà yð°ó°Qû°Qï0ëp *A ûðû û€ûP\û€ `:`€ û ûðý`aû€ûÐ+Q*!=ø„P…R8…TX…Vèa·ðâÐ ë Í Ç W‘ Ü0{#ë âðëÐ ëï°ݰÝõð”â0â`{ëþÐ ð°ó ó°QâðÝð{3â°ó Õ ëÐ ëÐ ó°Qó ó°Ý0âYÝ0â°ñ ð°Ä'ë0­u%ó ÝŒp y ï ó ëe渀}“ × “€ .çõθì0ýÀû` 0ÿôíðýpðì û | °ÿ°ý oÐÐÿDÿ ˜ðì (‘€é (‘,Pö°8°W‘*‘p â°Qâðÿ°â°Qâp föcÒSûðþûP\õ ‘,Ù’.ù’0“2Ùa·ðï ó Ç Ç Ò âÀ ã°ï ï õâ0 ñ°ÄÇ0ëðâ0Ý0âëpó°Qâ0ââï°QóÐ ó ñðâ­åÝ0¶7ð°QÝ­%ëÐ %ó óÐ Ä·â0ëðñð!Çb 5”Pf.0 𹙡°™“àõ€á¦yé ÿÀ =°ÿ l0Y û õ@ûðç¦É%@ ý€üP þ °ÿ€ì (ÁÐÿ`EpÐø0“SŒp yñ ó°Qÿ°ñ ó°¾pfûpaõÐaû`žþùŸ : & ÿ°ñÐ ‘Ð ~' Ù â0âÐ E ó ëðâ@ %ëÐ Pâ !Ð Ý0â°Q±Qâ°ó°ï°ï°WÑZï°âðÝ0â°Q±â°óÐ óÐ ã0â°Qâ°QïÐZó°ÝY{C|ݰQâÐ !ÀÇb0%ïû@fCàhš¦jЦõ $ùûðÒóû Òc\Òƒýþ@\÷PÊÐaù =)±)±*Ñú„!ÇYî°ÿÐ ­% ûP…õ¨šº©œÚ©ž gûp ÿÐ ï°‘p Í` âp Ü âÀE ë0Ýðë@ âó@@|Œó ëðݰópóYóÐ ­%ñ0â0%ñ°ï ó õ0ݰQW1Ýðó ï0%ó ó ó°â0~(%ó *!À¾ðb°â0ñÐ ”ðfõ gû@\û 𩉌à ó õÿðó óÐ · °Û±û± û„·ðþï0â ¯q Ò aà ãÐ ë Ýë ï°âuÝâ0”â°ó ïYïÐ ð°ó 5â0Õ ó ðÐZó õõë@|óÐ ñp%óà‡â°Ýë0â°óYóÐ ë Ý‘à y Õ ï°‰ðŸÀ´€aûàaõ²k‘p yë ï ïðݰQq +±¹œÛ¹žû¹ º¢;º¤[º¦{º¨›ºª»º¬Ûº®ûº°»²;»´[»¶{»¡{ ÿÐ ï0‘Ð ~'Ù6ã ë@”ðE”°þQïóõPŒóÐ ï ó°ð°ï°âYîÐ óÐ ó°ïÐ ï°â0ëÝðó°Ýðâ°â°{óë@óÐ ó°Qð óÐ ó°Qó°QWA|ÝYÝðëðñð!ÀÇb0â°ï°‰€» ¬ÒÂ$\Â&Lº!À·ð0õâðë0â°Ýp ÿ¶ñPñPóõ¶`õõ ÄBõ€ÄLÜÄñPóPóPÄõÀÄñPóPñPóõÐÄb ¶ñPc|Ægõ@|ñP`õ¶ñPh ¶ñþPóõ¶ñPñPóPóPñ0½õõ0õPÇŒõ@|õ0õ@|ñPóPHõõ0ñPÄõ0õõ0ñPóPóõÀÈHõËÄõ@|ñPHõõ@|ñPÄõ0ñPñPñP`õÀÄñP`õ@|ñPLõ€ÄñP`õÀÄñPÄõÀÈñPóPóPóPñPBõõ0õ0ñPóPñPMõõ0õõ0ñPLõ@|ñP´,ÄñPuõ@ËñPhõþõ€Ä"õ0õ0õ0ñP"õ@|ñPÄõõ0õ0ñPHõõ€ÄñPÄõõ@|ñPóõ ÄñPóõ ÒÄõ@|ñPñP²ðÕ ‘p ÍðgÒ ÜpëÐ ï ‘Ð ó ë ‰ ë0âÐ ðó@ !Ð óYâ°Qâð­EݰQâ°ï°ïâ°Qï°ݰñ ó ó°ïWÑZâ°QïYÝà%1{³Qõ ë0â°âÐ !ÀÇb°ópë'Œ»ûðÛÂ=Ü&Œp yþë ó°âðÝ0ëðâp ÿPóPóPó0½óPóPóPóPóPóPóPóPóPóPóPóPóPóPóPóPóPóPóPóPH\óPóPóPóPóP`[ó0½óPóPóPóPóPóPóPóPóPóPóPóPóPóPóPóPóPóPóPóPóPóPóPóPó0½óPóPóPó0½óPó0½óPóPóPóPóPóPóPóPó0½óPó0½óPH\`[`[óþPóPóPóPóPóPóPóPóPóPóPó0½"]óP`[óPó0½óPó0½óPóP`[ó0½`;½óPóPóPóPóPóPóPóPóPóPóPóPóPóPóPóPóPóPóPóPóPóPóPó0½óPóPóPóPóPó0½óPóPóPó0½óPóPóPóPóPó0½óPóPóPóPóPóPóPóPó0½óPó0½óPóPóPóPóPóPóPóPóPóPþóPóPóPV=õ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õ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Ó;õ0õ0õ0õ0õ0þÓ;õ0õ0õ0Ó;õ0õ0õ0õ0õ0õ0õ0õ@|²ðëðë Íp ~'ÙÀ Ý0â@‘ ó°óð‰YÄG ! ó°!.Þ;qñÄÍ7OÜ;†âæ­ƒ(NDqïÄÍ['nDˆâ ¾›ÇQܼuâÞAã:qóº1œ'îݺyâÖÍcø.D¤cyÄHœO¥EEšTéR¦M>…UêTªU­^Å*5£[¬\÷ï]·zâÞÝú7¯Þ<¶mݲ­÷Vn=¹uíΫ7ÏÜÝyõØÖ3ÇWð¼zƒ F,·ÞàzæØÞ3×Ö\þâÁææÕ«gŽrÛzlë™{knsÛz”ëžWot½ÄõF×k[q½·õ̽­×ÖÜÛzæ ×3Ç·êÍõˆg[o^½yæîÖk[¯m=·æ®7¸žÝz·þ‰ƒé˜4iǤeã6ŽÛºnëÄ}‚(®[7JóºÍ×-@=s”B¬œGœwÀ‚HœuâéfqÖ™çuØçnÖ™§ˆæYgˆæ›Gœy gq懣yÄ™çnÞYGˆÄY©›yÄé&FŽÉCŒxÖéæuÉçŸ}þ!²H#D2I%—d²I'Ÿ„2J)§¤²J+¯t2FŽÉ#°þygwÖç–Ú:†þ˜cˆ9†˜cÞ$æbŽiËœyê™™F¬ÐÁŠF§žyê™§žyê™§žyê™§·Ìɧ­zÚ2gžzî2‡-sæ©gžzæ©gžzæ©gžzê2gžzæ©gžzæ©gžzæ©gžzæ©gžzæ©gžzæ©ç-sêiË·ÌqËœyê™§žyê™§¹ÌiËœºê™§ž·êaËœyê™§žyê™§žyê™§žyê™§žyê™§žyêi«ž·êa˶̙§žyÌaËœ{æ1çžÄÌ™§žyê™§žyê™§žyê©Ëœyê™§žyê™§žyê‘ËœzÚ2gžzæ1‡-s橇-sîa˶ÌiþËœ·Ì™§ž·ÌqËœ¶Ìɧž·Ì™§ž¶ÌyËœyêqËœ{Ú2gžzæ©gžzæ©Ç-sê™Ç¹Ì‘«¶Ì‘Ëœyêy˹ÌaËœyêqËœzÚ2'Ÿzæ©gžzæ©gžzæ©gžzä2gžzæ©gžzê2gžzæ©gžzæ©gžzä2gžzæ©gžzÚ2Ç-sæ©gžzæ©Ç-sî©Ç-sæ©G.sîaËœ{ì2gžzÚ2‡-sæ©§-sØ2Ç-sêi˶ÌqËœ¶Ì™§·Ì¹gsäºeqêY'’fš‘Æšl²á†qÆáˆˆâyg@ÖéæxÞ žz( Áqæéæ°ÜþY‡8â!Ž•Ì£ëÇ:ºñŽu¼CDº!Žz¬ã☇8æA yˆcâ˜G7ÖñŽˆcÇ:ÞÑwÄã!HÄ1ò ˆ¼"‰ÀRu¸CöЇ?¢“BÀˆcä!óÈ<Äñuˆƒ#¾øG[Ž *VÑŠ‘ø‡[汎Føaë¨Ç7fá‡F´åæ˜Ç=Ì1{˜£-æÐb=´8G:æC‹÷0Ç<îaŽyÜÃl©‡9èxsÌãæ˜Ç=Ì1{˜c÷0Ç<îaŽyÜÃm159Ç{˜c÷0[êaŽMÒ±m©ïaŽyÜÃó¸‡9æqsÌãæ˜þÇ=Ì1{˜C“õhK=æQ9æƒ-õ˜G>ÌQÊyÔC“÷0Ç<îaŽyÜÃl©‡9æxsÌãæ˜Ç=ÌÁ–z˜ƒ™lÉÇóaŽRÖcŽ÷0Ç9Ûrs0³s¼‡9Ú’shñæ˜Ç=Ì1{˜£n©Ç<ê!Oyšƒ™ùhË=ÌQÊ{˜c÷0Ç<îaŽyÜÃm1‡&ïa¶ÔÚ¼‡9æqs´Ås¼‡9æqsÌ£›¼‡9æqsÔ£-õ`K=æXs¸¥lɇ9´X¶ÜÃó¨[òÁ–{˜cõ`K>ΙsÞÃõh fè(‹¼"‘8y²a ‰ˆcëþD"ÁqtƒâxÇ<ÄÑ °Å!`H7ÞÑyˆcâ€ÈÌÁ–|Ôc“ù¨G)ë¡Å|Ô#õ˜G=æQRÖÃôš¬‡Í¡ÅzÌ£n©ëa޶Ôc“õ˜G=äYÓ׃-ù0G[êá–z´¥ó¨‡ëåz°%õØd=ØR¶ÔÊõ˜G=°]fÖcõ˜G=´˜sh±ó¨-Ês8§z`‹|0·¨‡sª‡9ª‡y¨:ª‡¶¨‡y¨:ª(ˇzp‹|¨‡9ª:ª:ª-ª¶¨‡9ª‡9ª‡y¨l«-ª‡y¨‡Rª‡9ª‡y¨‡¶¸…`ˆuˆ„f†c†l(Ÿn‡u‡uè†þH‡yè†u‡H‡w˜q膘‡z „‡u‡ux‡n q`‹u膕˜‡u˜qX‡nX‡y‡uè†yèˆx‡x膕`q‹nX‡n˜qXwàˆy‡yè†è†y‡y‡nF8†<ƒu‡nx‡uH°C„7@„6ð°#ÅR4ÅSDÅTܺH„cøƒ€ˆy€ˆ€ˆw€ˆ[ø‡yȇyh†H0®yø¶0‡y°ƒYð‡YðƒYø†Y°ƒYð‡Yðƒzh‹z(¥z`‹zȇzp‹z˜‡z`‹|˜‡z˜‡z`‹g€yx˜‡z`‹z˜‡zX‡y¨‡92‡|`þ‹z`‹z`‹z`‹z`‹z`‹z˜£zh sȇzp‹z`‹zp sȶ¨‡¶¨-ª‡y¨yª‡y¨Mª¶¨¶¨¶¨¶¨¶¨‡¶¨‡¶0‡zh‹zؤzТzТ|Тz˜‡z˜sÈ-ª‡¶¨‡¶¨‡Rª¶¨‡¶¨‡92‡|¨-ª‡¶0:ª‡¶¨·¨‡y0‡|`¦zÐ$sÈfª‡y0‡|À¶z`‹zh‹z˜£z`¨z`‹|Фz˜‡z˜‡z˜‡|˜‡z˜‡z(%sȇzp‹zh‹z`‹z˜£zФz˜‡z`¦z £z £zp‹zh‹z` sȶ¨-ª‡y0‡zÐ"sþ¨-2‡|Фz˜‡z˜£zФzÐ"sȶ0‡z`‹z £z˜‡zФz(%s †|X‡nx‡Hhi‡c°†ò‡qè†uxq qˆqˆ‡uˆ„uè†wˆ‡w€w¨FzX‡y‡x‡yXq˜Žè†yàq˜‡nX‡nxq˜‰x‡ux‡nxŽè†y‡yèq˜qX‡yXq˜qˆqˆq˜Ž‡yèˆx‰ˆq˜‡nx‡xx‡ˆ„cÈ1˜‡ux‡uJøº6Pu¸†]@ƒ«KPťѵQS Fð…<€u˜‡n€ˆ}‹[ø‡y¨‡y8†þH0®yø‡¶¨+@ðƒYð‚ð‚Yð@+˜sxv0%˜ ¨‡kP€‡yx†`‹{¸†˜‡g6è ¸€_` m`9€yh€h€8…g6˜ x†˜‡g%è èu˜‡z0½z˜‡zp‹|¨fÊs˜‡zh‹z`‹zp‹z`¦|0Mª‡y0‡ßs‹z`‹z˜‡zh‹z`‹z˜‡zp‹z˜‡|0‡y¨-ª‡yÈs˜‡z˜£|Фzp‹zp‹zÈs(¥zp‹z˜‡|¨‡9ª‡yÈs˜‡z˜‡z`¦|0‡z`‹|Тz0‡y¨‡9ªþ‡|0·ès˜‡zh‹z0‡|0‡z`‹|˜£zТz(¥zp‹z˜‡z`‹|0‡zh‹zh‹z˜s`‹z˜‡z˜‡z8§z(¥z˜‡|¨‡92‡y¨:ª‡y¨‡¶Ès`¦zÈs £z˜‡z˜‡zh‹|0Mª:ª‡¶¨¶¨Mª‡yȇzp‹z˜‡z§zh‹zp‹zh‹z`‹z0‡y¨·¨‡R2Mª‡9ª‡¶Ès˜‡|˜‡[øqˆqˆF¸"+¢Jø„Ox‡uxˆ qx‡u‡nq˜Jq˜q‹yˆy‡uè†y‡u˜qX‡y€ˆwX‡xX‡y‡uþx‡n˜qX‡wè†y‡x q˜q˜Žx‡nX‡n˜‡u舘q`ˆuˆ‡nx‡y‡nF8†<qXq˜‡q „}غ6`ÞP˜<¨‚)ðæ¥Þ6È"¹€ð€*ø~ȃ ¸Ñò5ßóE߈„cøƒè†u˜qx‡X‰˜q¸…h kH㚇h‹zÐ|ð+@‡@`t°~À˜‡z˜‡g€+0¶H˜uب‡g€y¨‡yx†¨v"؇z˜‡zH€u˜‡g€zȇzx† ‚z˜‡g€z`‡À‚þyÀ¶¨¶¨¶¨¶¨¶¨‡¶0‡|˜‡z` sÈ·0‡|` sȇ¶È‡|Ð$sp‹z˜sȇy0‡|˜£z˜‡z˜s˜£z˜s¨¶¨¶¨¶¨¶¨¶¨·0‡{p‹z #sȇRª-ʇMª¶¨-ª·0-ª‡|˜s¨¶¨·0·0‡|p‹z0‡{¨¶㶨‡y¨‡y0‡|¨‡y0‡|`‹|p‹zÐ$sȇ9ªM2‡|h‹|˜‡|h‹z` s¨¶¨‡y¨¶0‡|˜s¨¶¨·0‡¶0‡|˜#sÈ:ª·0‡|˜sÈsȇzh‹zh sÈþ‡z˜s¨¶0‡z` sÈ·0‡|p‹z`‹zh sȇy¨‡¶¨‡|˜‡zp sТzÈsȇ92‡|˜‡zh‹zȇy0‡z`‹zh sÈyª‡y¨-2‡|` sÈ·0‡z`‹zp sÈ:2‡|`¦|` s¨‡|h‹z0‡|0‡z˜‡z˜‡|˜‡z0‡y0‡|h sȇy0:ª¶¨Xøqˆ‡y „zˆ‡x˜‰‡ò!f J‡•HˆÈ‰˜‡z`„‡u˜Žˆ˜‡n˜‡u˜q`‹n˜qXq˜ˆè†uè†y‡zX‡n`‹ux‡n`ˆ•p‡w q€ˆyþxq˜‡w‡yè†w€qX‡wè†uȉH„cÈ1X‡yxqX‡DȺ} ’˜hÀíÜÖmh€ƒ ’{@2¨‡{h†.0’tôUîåfn° F8†<€u˜q˜‡nØq˜‡w‡w…˜‡z˜bˆ㚇¨¶¨+@ðƒYð‚ð‚Y°@+`‹zx†ø¶‡p¶H…ȇg€¶`˜‡g€o¨‡y0¸ugˆ‡yH؇g€¶`ø†y¨‡g€yxp†zˆ‡jHl3‡¶Ès`‹zТz˜‡zh‹z˜s˜‡zh‹zp‹þ|`‹zÈs˜‡|`‹z˜‡zÈsÈs(¥z`‹|Us˜‡|˜‡zÈsp‹|0‡|0‡y¨‡y¨‡y0‡zp‹z0‡¶0¶Ès`‹|0‡|0‡y¨¶¨‡¶¨:ʇy¨‡|0·¨-2¶È¶¨‡Rªfª‡Mª‡y¨‡yÈs˜‡zp‹z˜‡z` s˜‡zh‹z˜‡zh‹zp‹z˜‡|0‡y¨‡¶¨Mʶ¨‡92‡yȶ¨‡|` s˜‡z˜‡|¨‡yÈs˜‡|0‡y¨·È‡¶¨‡|¨¶ÈsÈs`‹|Фzؤz(%sh‹|0¶0‡¶0¶¨‡yȇy¨‡|0‡¶¨þ‡|0‡y¨-Ês` sh‹z˜£z`‹z˜£zh‹|0-Êsp‹1ž‡z`‹1f‹zh‹zã¶0‡y¨s˜‡16·¨‡|0‡¶¨‡y¨‡| £|`‹|0¶¨¶ãy¨s˜‡|˜‡z`‹zÈs¨‡y¨‡¶¨‡y¸…x‡u‡Hˆ¶‡wX‡qnÈi°†fˆˆ˜qè†D¨qXqX‡{À„àq˜qàˆnx‡nX‡nx‡nŽ˜‡u‡y‡yàˆwX†èq˜qx‡u‡y‡y‡wèx€q˜ˆ˜qè†yè†ux‡nàˆyàˆw€qè†þ`„cÈ1ˆ‡wH„®k\Àm\€\€\€\€†'(’t€vØ#I؇€ heØ~(€Ø$þàþá'þâ7þãGþäWþågþáD8†<q€†Øˆx‡uxYø‡¶8†Hþ}˜‡˜‡z` ;˜~˜@˜p˜?˜˜;`‹zxȶx†X‡z˜‡pˆõØ ˜Wo;óØ ˆ7oÞ3ïžxXyì<œ÷LÀÃzÏÌ{`^½yÆÌ3÷ÐÜCsÍ=4—o^¾|w>¬Ç³ÞÎ|Íå{h.Ÿ¹|õ:æãÙ±^ÎþzóêÍ«7¯ž¹|óÌå›W¯£¹‡æš{h|óÕÛ™ÏiÎ|NçÕ››¯ÞÃ|õÖËùÐÜ=sóÌå{hnž¹|óÌåÛ™o^½æòu4—¯ÞÃzëÍ«çÔ\¾yæòÍ3—og½yõšËdz^ÇzswÖÛY¯£¹|<óu¬·Ó\¾yæò=¬·Ó\¾‡ùf3˜¯£¹|³Íå{˜¯y½õ:Ö›k|órvÌ9/ß¼z<ÍåÛ™og½Žõv朗o^½ææ™»W¯£9õ™“Ï<õÌcN>óÔ3O>õtdN>™“OæäóP=óÔóPNóäSÏCõÌcN=åÄœ9ùþâijN$½³Î:âŒ#Ž8ÙHsŒ4” 9Ï;ë$²Îõ<#@=ÚàL=ñT#À<ÏÐÑ3<”Ï3ÌÃNÎ̳3 Ô3O>õÌ“O=óäSÏ<ùÔÓQ=æŒÛQ=7ß\ϸõtTO>õåss>õÌ“O=óäSÏ<ùÔ3O>õèüP=Õ“9c›9ãÖ3O=c×ÓQ=óäTONÕ“ÓCõtTÏ<õäcNGùÔÓQ>õæè\Ï<õä£s>æŒ[O>åcÎØù˜3n=7ßcN=7ç3O=Õ“9:çss=挛O=7×3O>æŒ[O>æ<”þ9ÕÓQNóäcŽÎùè\9ãæcŽÚõè\Ï<õÌ“O=Õcθæè\Ï<õtTÏ<õ¨=¶9:çSONóÔÓQ=åSOGõŒ›ÚõŒ]ÏØÌqs¬ï!ùW>Ì‘sÌ#æ¨GGò1z¬/æ˜G=ÆVvDÿˆG7ÖA‰‡©ë7²‘ iH£‘ˆÇ:ºA¤D¬£óÇ: ŽzP"ñÇ<Ä1n¼CóÇ<ÄÑ "uÃJððÒ:æÑuÄCñxÇ:æa¥yiâXG7ÖñqÌ£^š‡8Ö1wtcâxˆ•æñ$ÍCÝ#Ž‘1ˆÃK‰ ÷áþT’Iè”6Šhÿ`‡ö‘ìcSö@96Žìžü$(C)ÊQ’²”¦<%°BÀˆcä!VÚÓ?ÄqÌc·øÇCæaD«ÿ˜‡9ö1w4bûøG?põ~Ì¢â¨Ç<êÁÔã!ûH ࡎ à`ïP€$êq`ÏÀCêñŒÔc)Â<ÐÌCpF=êÁ<¤éÀ<ž€ÔcHB.ªP…Ö#—æÈG.Í‘‡˜#ó0G>bŽ|,4—ù|H>æQŽæ²ɇ9ò¡Ðz˜#$%©9ê1s䃤õÈG=æaŽþ|ÌÃùxH=摎š#õ˜‡9òñÒyÔC¡õ˜G=–ÚQsäcùœG>š“z˜cõPh=šy˜# ÍG=bŽ|ä2'æÈÇ<Ì‘y˜#õH¨9ò±Ô|ÔcæÈÇ<ÌQ|Ì£¹ÌÇBÍQy˜# ­‡Bsò|Ôã!æÈG.Í‘zäcæÈ‡Bë‘ÐzäÃõxH>æaŽ|ÔÃùÈ¥9òñzHµ ÍG=bŽ|¼ÔùH¨9òaŽy˜# ÍG=æa©.Õùè¨9ò±Ðz,´ó¨ÇCê‘yäcæxH=jŽ|ÌÃùxH=r’Ë|Ôcõ ©9ò‘Ë|þ$Ô 5G>bŽ|ôûxÇ:ÄA‰‡ÔãëÇ8Ä¡Bi4£”XÇ;Ä1nPâÝxÈ:0z0"Püð;æA$qÔCï ’8æ!"‰cï°R7ˆ„¤y¬£Dz’æ!ŽyˆcëpG7Þ±ŽnIó‘à±qxiOïA"Ž‘‡<©ó%PÉBN¢¸¨A>:µ¨ƒèG:ðv`Sû8& ç 0•v¾3žó¬ç= +Œ¸Å0qÌCëØÇ<Öñq¬ãÿ¨ÇCމ…Æ£ùÇ<âQ\6³xÇ?¾1 ?4¢ }†rYm¨þàèA7êñŽ]P`Ãêñ <$ÏÀ<ê¡ x YÀ<â¡àÏ@=Ì1g`ì €¬£æ˜G>Ìñ|˜cù0Ç<ê¡Ð|ÔcõxH>R|Ì£ùÈe>R\Ö££ù0‡BóaŽŽæC¡õ˜G>r™sÌ#æ˜G>Ì1|˜cù0Ç<ò1œ<$æÈ‡9òaŽŽÖ#óȇ9ZsÌ#æ˜G>r™„æÃóȇ9ZŽÖ#æXh>Ìñ|Ôã¥ù0‡TëñzäÃó¨Ç<ꑇäéG.ó1|ÔùÌÇ<ê‘yä£þó¨GBó1|Ôù¬‡9Hš’Öã!ù0Ç<ò1œä²¹Ì‡9’sÌ£ ÍÇ<ê1zä#¡õÈe=òaŽyäùÌG=Ryäd9Ih>æQ|˜#¡ù0ÇCê±Ðzä2'ɇ9R|˜# ­GNæQœÌ£õ˜G=r™‡äéÇ<òaŽ|˜ã!ù0G.ë1|(´æ˜G>’sÔcõxH>Ì1|˜c©õ˜G=’sää!ùxH=Hšs<$æÈ‡9æ‘zÌ#æ¨GBÕC>ÌC>˜Ã<äÃCÔCN˜Ã<Ôƒ9(”,üÃ<ˆÃ:PÂC¼Cd`þ@fÃ1C"IœR L‚âÂ$à‚Ê!.ÄÀ?ìç$ì;À?°ƒlÊ>ØC´ž-"#6¢#>â…#C€•ˆÃ;ìƒ8ÌÃ;¬Ã;ÜÂ?äR3à )îæä§äR=ä2Øè€4Â,ˆC>,T=̃9äC=ÌC=T=ÌC=ä’9T=ÌC=<„9äCBÕI™C>̃9äC.ÕÃ<äÃCäÃCäÃCäÃCäC.ÕÃ<˜C=ÔCBÕÃ<äÃ<˜C>ÔC.ÕCGÕÃ<ÔCB™ƒB™C>$T>̃9äÃ<ÔÃCä„9äÃB™C=äRN˜C>$”9äÃC˜C>äR=T=ä’9äƒBåD=(”9äCB™C>ÔCBåÃ<˜C>ä’þ9ÔÃ<äC.ÕÃC˜C>ÌC=ÌC=ÌCNÔIÕC.ÕC.ÕÃCÔC>,”9äÃB™C>ÔCBåÃ<˜C>ÌC=˜C>(T=,T=$T=tT>ÌCNÔÃ<äÃ<˜C>äR=̃9äÃCÔÃCÔC.åÃBÕÃ<ÔÃ<˜C>ÔC.™C>tT=(”9$”9äÃBåÃCÔC>ÔƒBå„9äÃBÕCGÕC>ÌC=̃9äÃCÜÂ?¬Ã;¬%¬ƒ8ÄÃ;~f  ±%¬C7¼ƒ8ÄC"XI<¼C<„)„€8¬ƒ8‰8ÌÃ:¸C7¼ÃCÉ;¬þÃ;ˆÃ<¬ƒ8ÌÃ:¸Ã8¼Ã:̃8,T>˜C.åƒ9(T=˜C=ÌC>˜ƒBåÃCÔÃ<ÔC.åƒ9äƒ9ÔC>ÔÃ<äIÕÃCÔÃCÔÃCÔÃCÔC.åCBåƒ9ÌC=ÌC>(T=äR=äCBÕƒBÕC.Õƒ9ÌC=(T>˜Ã<ÔÃCäƒ9ÌC>˜C.ÕÃ<äƒ9ÌC=HU>˜ÃCäƒ9$T><„9ÔC.ÕÃC˜C.åƒBåC.åƒ9ÔƒBåÃCäƒ9äR>˜Ã<äCBÕCBÕC.åC=äÒ=˜Ã<äƒ9ÌC=äR>(T>˜C>˜ƒBåƒ9˜ÃÔƒBÕÃCäÃCÔC>˜ÃCÔƒ9˜Ã<äC.åƒ9T>˜C>$T=tT>˜ÃCäƒ9$T>˜Ã<ÔCBÕCBÕC.ÕÃCÔÃ<ÔC.ÕÃBåƒ9ÌC=$TN$T>ÔÃ<ÔƒB™ÃCÔÃCÔC>tT=äƒ9¼T=؃<@À ´Ã>°ƒlŠÀ(C?ðCÀ0@ä°o1w±ñ †%C€8‰8¼Ã>¼Ã:ìÉ<ØÂ?äR=ÌC=ÌC=ÌC=ä’9(T=,•9ÌC=0×C<ƒÌƒ9äÃ<äC=ÌC=˜C>tT>$”9<„9äƒ9ÔÃC˜C>̃9äÃ<˜C>̃9äÃ<ÔIÕƒBÕÃC˜C><„9äCBÕƒBÕƒ9äÃ<˜C>äR=,T=ÌCN$T=,T>äR=$T=,”9äC.™C>ÌC=ä’9äCBÕCB™C>äRNÔÃCä„9äC=HUNÌC=ä’9äC=(TN˜C>äR=ÌC=ÌC=$T=”9ÔCEÎC=”9äÃCäD=äÃ<˜C>¼”9äC.åCBÕC>ÔCBÕÃ<˜C>ä’9ÔÃ<äÃ<˜C>˜C>˜C>ÔÃCäÃC˜ÃþB™Ã<ÔÃ<äC.ÕC>̃9äƒBÕCG™C>ä’9äÃ<˜C>ÌC>äR=(T=äR>tT=˜ÃBÕÃRÕƒ&×ÃKùsÕÃ<äC=ÌC=äƒ9$T>˜CNÌC=,T>äR>˜C>Ôƒ9ÌC>˜ÃBÕƒ9˜Ã<äÃ<Ôƒ9,T>ÌC=äD=äR>(T>˜C>˜ƒTåÃBåƒ9˜C>˜C=äÃCäIåƒ9$T>˜ÃCäƒ9(T=˜ÃCÔÃ<äƒ9$T>˜CGÕÃCäƒ9äƒ9ÔÃ<äƒ9äƒ9˜C=äRNT>˜Ã<˜Ã<äC=T>˜C>˜Ã<äÄCÔC>˜ÃCÔC>(T>˜ÃCäÄ<Ôƒ9äR=,T>˜Iåƒ9,U=äR=äDBÕÃ<ÔC>ÔCBÕÃ<äCBÕÃCäÃBÕÃ<äƒ9äƒ9äR>˜Ã<äƒ9ÌC>˜C.åƒ9äƒ9ÌC>˜C.åƒ9ÌC>ÌCN˜ÃCäÃ<ÔÃ<äÄ<äC=ÌC=˜C=܃9ÔÃ<ÔÃCÔC.ÕÃCÔÃ<äƒ9ÌC>˜CN˜ÃKåÄCÔÃ<äƒ9ÌC>˜IÝÂ?ÌC7¬C$ÌÃ:Ôƒþ8¬C7Œ7dƒ4dƒ44C$tÃ:t‘$Â:̃•À<Ô%„À:¼C7I7¬C7̃8¬Ã<ˆƒ•ˆC7̃8XI7Ì‘tÃ:ÌÃ;‰8|Ø<¬C<ˆÃ<ˆ‘Ì‘ˆð¿ð?ñëiD‚/äAˆ‘¸Ã:üƒ•ìÉ-üC.™C>ÔÃ<˜Ã<ÔÃC˜C>Ôƒ]'T=(”9ÔC.åC=ÌC=¼”9äCBÕÃCÔÃBÕC.ÕÃR™ƒB™C>˜@Ô›7¯Þ@ƒÍåh.ßÀzþóÍË7°^¾yæò™Ë·Ñ`¾z7¬wä¼zë ¬7°žAsùêÍ«·±Þ@sùêÍ«G²É7–h.ß¡õÌå«7Ð\¾ƒõÖË7pãÁzùæ™Ë7/_½õÌå3XoÞÆyùÖË'”ðÀzóÌå3—Oh>sõšËWo ¹|ó6æ˜Ï ¹|ëm¬'4ßÁzóê ÌWd½|æòÍ«w°Þ¼$Íå›—o`½æòÍ«7Ð\¾õ Ï«gÐ\¾zÍå›g®žAsùHfÎWo`½ùæ;X/ó¼|óÌå›—o ¹zóêþ‘Üh.ß¼zùÌå›g.ŸÐzë(ŸÌ¹g sî™§žƒêÉG¨zæ1'Ÿzæ1'Ÿê™§žƒê(ÂnÙçq桤žwâ™çqÆGi`´&’uh¤‘’nÄ™Gœwx§FB QœyÞYçqæ©qžçéf qÖyGœyÖy‡ÆnÞ'qæ¡ÑuºgžçY§›yjgžnj\Gœzºé†Fxĉg wây'„D|ùCŒwº¡QJþ)ÔÐCMTÑEmÔÑG!TÒI)­ÔÒK1•4„HŽÉ€yÄ©qŸuê§›un©§žä«ÇœêÉÇœê)¬žêaµžyê1þ¨sò1ç zæ©ç z ÊÇœy̙ǜzHªÇœyò)Éœ|Ì9h£ê¨žyêÉÇœy6š§žyò™§¡ê9(3ƒêauž|Ì©g zä=¨ž|ËÇ |̨sÊÇœyê¨sHÊÇœyò1'Ÿzæ©'’ò1Ç zÊÌœ|Ì1¨žyò™'ŸzÊÇœ|ÌÉÇœ ʧžò1‡¤|̨ž|Ì™§ƒê!©ž|ÊÇ’æ©ézò1gžzæ©Ç zæ©g ÌÊÇœ6(sò©Ç |ªgžzò1‡¤zÊǤ᨞ò1éz Ê'nƒò1gž|ÌɧƒêÉÇœy6þ"©ž|ÌÙé|ʧžê1h£yê1Ç |Ìq¼žyò1gžz ªg |ê9¨ž|HÊǃê1(Ÿz¯=ŸyTHÕ{Ì;sêh#ƒò™§sjŸ§s ªg Yþyçn‰§žy\gn²ÉFšfš‰DœyÄ™§›DÞ™§ÆÄ™“ÄYgž8ëçnægqægnÞÑ q¬£â ‘8ºA£xˆcëxÇ:ıéÅãÝX‡8æá"‰cïˆG7æ!ŽyˆcïXÇ;â!½£ëèÆ:ÄÑ0âyÃ;Ä1%"S=ôáD!‘ˆ #Ž‘¬cþ5úÇ:ÞéÝâ¾Å-d! *fQ·à",¸HE*ÊBŒ\¤¢/²x _È‚Š²¸…,n‘Å[dñ²¸…/²x _ÜB¾ã-|‘EXøâ\Ìâ-²è‹[ãǸ…,n! 1ÊâÇÅ-²è YˆÑÄð…,|‘Å[ø‚в¸…/n! *úB·àâ-dq‹,úⲸ…,ná‹[ø"‹bÌâ-dá Yܲ¸}q YÜâ°Å-|M_ÈÂ\¼…,|‘Å[dñY¼…,n! _È⾸…,nq _¤Ó·Å-Žq _ÜÂé¼…/dq _Üâ²°ç-|q _ÜBþ·ð…,ìé‹[dñ¾¸…,n! bÜ·ð,|!‹[øâ¾Èâ-|AŒcØÓ·Èb:³x _ÜB¾¸…/Òé‹[ÈâÇHg4Ó)‹[Èâ²€…/ná YØó†¼…/n!‹[D¾H§/ÒÍ[Èâ²ðÅ-²˜Î,ú"ǸEÓ)‹tú⾸…,|q Yܲ¸Å1n! _Èž²¸Å1ná‹[pÑ\¼…!oá‹túâ¾…/dq‹hÞB·ðÅ-²è‹[Ȱð…,nqŒ[È⾸…,n! {úB·ˆæ-|ñÏ,ÞB𾏅/²x .ÞÂY¼…/Òé‹[øâ²þðÅ-|aO_Ø“‹¾¸…/ná YÜ"š·8Æ-|q YÀB¾¸…/Òé YÜÂéôEÓyŒ[ø"²¸…,þé‹,úB¾¸…,|!‹[øâ¾¸…/dá YÜB·ðÅ-dq _Üâ·ðÅ-dá‹[øÂž¾¸…/n!‹[øâ¾H§,|q Yøâ¾¸E4oá‹[#‹·Èb:ÿ±éE"ëˆG<Þ!r¸(Ò8F3"A#qÄc”èÄñŽÌ#”A=º!½u¼ƒFâ˜Ç:æ!޼cÒ{G汎yˆ£ÝxG7ÄQ#q¼CmšG7汎zÐhâ Q7ÚÔwˆƒFâ˜þÇ:ÞA£yX9‘8FÄ ŽwtƒF‰Ô¡hE/šÑvô£!éDâÀ:ıýcÝx‡‹"jQšÔ¥6õ©QjU¯šÕ­võ«aÝh­#‘ %j]ëDD‚µ¾µ8æA£n$"â¨QB‰¬ãâXÇ;º±ŽyÐHÝXG7Öá¢6ÑHmzÇ:ⱎyˆc ∇8Ö1qtcÝ ‘8æ!ŽuÌCï˜G7æ!Žxˆãë˜Ç;ıŽnÌCÝX‡8ºF#b˜ıŽDÄšâ·øÅF#x‡8â!½¼CVÞöÉQžò“‹ã4Çþ;j$Žw¨\ïX‡8j$Žw¤\ïh“8Þ±q¼CïPùÉÅñŽ6‰ƒFâxGÄñ‰£Mâx‡ÊÅñŽ6‰ãâxÇÑQ.ŽwÐHï ‘8Ö!‰ãmÇ;T.ŽwˆãëÇ;Ž.ŽwˆãâxÄñŽuˆã'Ç;Äñ‰ã5G›Äñމã(Ç;¶-Ž6‰ã`_‡8ÞA#q¼câxÇ:ıs¼ãäâx‡8ÞQ#q¼£FâX‡8Þ±qÐHïX‡8Þ!Žuˆ£MâxÇÉÅñŽuˆã*Ç;Ö!Žw¤\ï@¹8Ú$Žwx¾Fâx‡8Ö!ŽwÐH5Ç;þÖ!ŽwˆãëÇ;Ž.ŽwÐHë0Ç;N.ŽuˆƒFâxÇÉÅáhDÞaÄáÄáÖAÞAÞìÄáÄáÄaÄáÄáÄ¡MÄáÄáÚDÞaÄájDÞaÄáPNÞaÄáNNÞAÞAÞAÞ¡FÄáÖAhDÞAÞaÄáÄájDÖÁÞaÄáÄájDÞAÞAÞAhDÞAÞaÛÄaÞaÖÁEÞaºaÞaÞaÞAâaÞ¡FÄ!Ä!ÖaÖÖ!Äa!Ä!\$Ä¡MæaæAâaÖ!{æAþæaÄa\dºaºaº¡MÄFâ¡FÄaºajDh¤æaÞaÄFÞAâ¡Þ!æáâáB€ŽáÄÀEæF(ÖŒñ‘1#-áò¶íhd\d²‡ûhÄEÀîºFâ!{ÄáºAåÞ¡ÖáæÁEÞ¡h¤æÁEÖAÞ¡ÚäºaÞ¡FÄaÄáÄaÛÄ¡MÞA¶mÄáºFÄ!\dÞa\dÞ¡TîÄ¡MâAÞ¡P®æÁEÞAÚäÄFâÁEÖAzÖaÄạMÞ¡TîÖáÄaÞ¡ŽîÄþaÄáºFÞAÖáÄáäâAÞAh亡FÞa\dÞAjäÄF\äÄaÞAÞAjäÚäÄáè\äÄFÞ¡ÖáÄa¬LN.ÄáÄ¡FÞ¡jÄÊÄFæAÞAÖ!ÄÁÊÖa\$Ä¡æ!{Ö!\äÄAåâÁEÞA¶MhäÖ!{hDÖáæÁEÖáº!å\d\äÄáÖÁÊÄFÞa\äÄaâAÞ¡ÖáºáèâÁEÖAzâÁE¶MzÖaÄáºáäÞaÄaÞAÞ!ÄáÄaâAÞaºa²§M\$þÄ!ÄáÖaÄáÖáæÁEÖáÖ!Ä¡æÁEÞA¤§j$\$\ääÞ¡ÖáÖ!{æÁEâAâAÞaÞAjäÄFæAÞaÞAÖ!ÄáÄFÄa¤GÖ!ÄáºFÄ!Ä!Ä!ÄaæAâAÞF\dÛºaÞ!ÄaÞaæAºFâAhÖa Äa(aÄ¡F`êBàÖAzjÖaº¡Mºa ^¬æ¡æFÞ!ºáÖaº¡MBÚdÞ¡Þ¡æAæaæAÞaÄaÄ¡MâAÞaÄ¡ÖAþº!Áò@ æAæAÖ!¥S=õSA5TEuTIµTMõTQ5UC5áþ jDÞáÖ¡Þ!Äá^Læ!{æ!{æ!{æAâáÄa²g²gÄAzÄaºá^,¤Gæ!{æÁEæaÞAÞAÞ!¤GêaÄáâaÞaÞAæÁEâáÄaÄaÄ!Ä!Ä!Äa\dÞÁEæA¤GæÁEÞA¬LêF¤GÞA¤gÖáÄa²g\dÖáÄa\ÄÊÞAæ!{æAâA¤GâAæÁEâáÄaº!ÞaÄþFÄÁÊÄa\$ÞAæ!{æÁEæ¡ÄAzÄ!ÞAæ!{æ!{æaÞa¬LæaÞAâáÄa²gºÁÊÄaÖáÄaÄáÄAzæaÞAæA¤GêAzÄ!Ä!ÞAâAæAÞÁEæA¤Gæ!{æÁEæAâÁÊÄaÖáÄ!ÞAÞA¤Gæ!{桬LæA¤GæAÞAæaÄáÄÁÊÄÁÊÄá\äâÁÊÖá^lº!¬Læ!{æÁEæ¡DVæÁEæáÄaºaÞáÅÄ¡ÞAÞA¤gÖáÄa²gÄaþÖáÄAzÄ!ÞAÞAæaÄaºAÞ!¤GDVâáÄa²g²gº!ÞAæAÖAzÄa\d\dÄÁÊÄa²gºaÖAæáÄAdÅÁÊÄ!ºá^LæAæAdEVÞaÄáÄAzæÁE¬LÞ!¤G¤GæAPøÄa²gÖáÄaÄaZÅáâ…ÅAzÄaÄAzÄáÄáÖA¤GDVêFÄAzÄAdš֡‡ßa¬lÄa¤gÄaÄaÖAÖ¡ÞAÖAh$Äaºá\äÄaºAzÖ!ÖAÞAþÞ!æ¡!ÄaÖAæAÞAhDæ¡Fġ֡ޡæAj¤ÞaÄaÞ¡FÜ!NæFÜaÄaÞáäº!¶mÄajDhäÖÁÊB Ž!Ä`â¡h$Tõ™¡9š¥yš©¹š¡9ÁòÖ¡ÄFö¡MÞ!×">á"Î9(áœ#jí"Î9(áœ#"j"rjÎ9(á"áÖjrȹÖáÖr>!(!>"jíÈ™>!ní""j>œ)¡Ö¡Ö(¡Ö(!×nþ­Ö(áœ#>!n">!zºÖ(áœ#új>!n-(!(!×!×(¡Ö(á"jÎ9(á">!(¡Ö(¡Ö(áœ#Î9n­ÖjíÖjíÖ"Î9(¡Ön-n­Ö(!(!×z:(!(¡Ö¡Ö>¡Ö(œ)!(á""áÖ"Î9(á"ríÖ"áÖjíÖ""jÎ9(!n­Ö(!(¡Ö(!(á¡kíÖ""">¡ÖáÖ"áÖ"!(!(!n-(áœ#>!(!(!n-þ(á"áÖ""áÖx›ríÖjÎ9(!(œ?¡Ö(!(œ)œo-zºÖ(¡Ö(áœ#Î9(!(¡Ö!×>!(á">!¡Ö(¡Ö(áœ#"j-(!(!n-(!(áx›"áÖ"¡§#(œ)!×(á"áÖÈùÖ"j"áÖ"áÖ>!(áœ#áÖ"á(·¡§#"j"áÖÈ™"áÖ"¡§)!!×(¡Ö(!(¡Ö!(!¼¼Ö""áÖ""ÁËçaÞaÞaÚ$ºáÖ!ÞaÞAþæ¡Ö¡(a ÄáÖÌa(!æ¡ÖaºaÄFæaºaæaæFâAÞ¡ÖaÄFêAæAÖAæA¬¬æAÞAjDæAà¡MÄFàFæÁEÖaÖaºaÄaÄ¡B€Ž!Ä ÞaÄaÁš½ýÛÁ=ÜÅ}Üÿ!"áþ hdÄáþAæaºa(!yæþaô}þaßÿaßÿa e eþa eþaßÿAß e Eß e Eß %þaþAß eþaþaßEþô½Pôýöáôýô½Pö¡PöþaQôÝPöáöýôÝPöáôýPöáöýö¡Pöáöýô½PöÁPö¡Pö¡Pö¡Pöáô½Pöáöýô½Pöáô½Pöáöýö]QöÁPöáPö½Pö¡PöÁPöáö¡PôÝPöáöáôýöáö½Pöýö¡Pöáö¡Pöáöýôýö½PöÁPö¡PöáöáôýöýPôýö¡PöáöÁPô½Pö¡PöAQôQöáPö¡PöáöýôÝPö¡Pöáô½PöáPöáöáôýöÝPöáöýöÁPôýô=Qö¡Pö½PöáPö¡PöáþöýöÝPöÁPDþôQö¡Pöáö]Qöá(|šŽ¡ˆášÁŽÁšášáˆáš‚رcÍ kv¬Ù1kLj5;V°™µc›kv¬1bÖŽ5;ÖìXÄcÄ*Z;f­™µcÍ6#VÐZ³cI³V±±fÄ*kFÌZ3bÖˆU<ÖlãÆ”æ9uïi¼©ñ(‰›·®›¸yâæ‰[÷nØuâæ‰}'.^7JÝÞ0¯£ëÄ­{×íÝ:qcʼn›×m¸wïÖ½[×mž¸xëÞ­›·nž¸x„ÅŠ‹÷nÞ:qóÖu{·NÜqN÷‰sºOœÓHó¦Î‹çtªÓ©ó¦NSþMåÔTO‰3ÏTóL5óø78óÔ3•SñÌ϶ÿ|ðÂO|ñÆ|òÄ…È1y <â¼³8ó¬3O7”6Xó|=Ï:ó¬C‰Xó¬#N=b‰SXâÌóµ8ó¬#Î<ëÌ#–8õˆ%ŽSïÌ#qÌcóøš8æ±§¼c_G=Ö!Žyˆc„›‡þXæ±qÌCóXÇ;Ä1±Ìc⨇Xæ±qÌcóË<Ä"Žyˆ£~™Ç:ÄQ±ˆcëxG<æ±qÔc⨇8æ±qÔC,â˜Ç:æ!–yˆEõxG<æ±qÌcâ˜Ç:æñ5qÌcâ¨Ç:Ä1uˆ£b‡SÞ1uÌC,â˜Ç:ÄQ±ˆ£똇8Þ1qÌCNyÇ<Ö1wÌc⨇XÄ1uˆÃ)XÄ1qÌCõàÜ<Ä1±ÌcóX‡8æ±qÌcóX‡8æñ5qÌãk⨇XÄQuˆcb™Ç:æñŽyˆEóX‡8æñ5qÔC,âpŠ8þæ±qÌãk☇8æ!–y|MOÇ<Öá±Ì#NyÇ<Ä1qÌãkóX‡8ê!qÌc☇Xæ!q8åóX‡8ÞyˆcëÇ<Ö!Žyˆ£~™Ç:ÄQ±ˆcâ˜Ç×Ä1uˆcñ˜‡8æ±qÌcóÇ<Ä"ŽzˆcëÇ<Ö!ŽzˆEõ‹8æñµyˆe☇8œòŽyˆe☇XÄQ±ˆc☇XÄ1qÄ#ÇFAޱ°c,¬Ö†5¤ÑŒ…DÍ8†ÌÄÑŒcd£Òh†5dvŒ… Ddž5 r qCfÖXX3¬!³cd£ÇF3¬þqŒ…UäÙhÆ1²a icaÖh†4¬!cH£ÒhÆ1¤q qDD‘Y6Äq ™Uda‘˜Ç:œ"qÌcóË;(!ŽxÎëèÆ;ÄáqÎïÇ;Ö‘±ˆ#ïÀ<êÁÌcîK7æ1q¬£ëx‡Xº!qÌCóèÆ:ó±ˆcóX‡8æ!Žy|íëèÆ;Ö1uˆC,ݘ‡XæñqÌcóèÆ:æ!ŽyˆcïèÆ:ÐFãb˜‡8汎nP"xÄÉG>ŠIàa SðÁ‡O܆}üãÀ‚p`Ђ}„4@  ±p`ý¸† þTÃD.²‘Œä$+yÉÿ#|ñ‡ÌCëxÇ:þñŽnÌC8ÖÑyˆC,G7æÑuDBóÇ<#ŽyFNéF=Äá”nÌcóÇ:Ä1ˆÃ)âèÆ<üâ”nÌCõ‡Sº1nˆEóÇ<#Žy¬ãëÇ<Ä1¿Ì£NG<Ä1qÄÃ/óèÆ<Þ±Žyˆcâ˜G7æÑzˆcâpÊ:3•ñ0âpŠ_Öñq̃0â@o7æAqÔC,âX‡8êá—y¼ãkÝpJ7ænÌ£õ‡Sº1ˆ#ݘaÄáqtc~Y‡8œÒþyFóxÇ:æ!ŽxˆcóøZ7æá±ˆc„‡Sº1±tc~©á3•y|MóèÆ<ÄQ±8¥óèÆ<ÖuÌCóèÆ<Ä1ˆcïXÇ<Ä"Žytcݘ‡_汎yˆcݘ‡8æAq8eâ˜G7œÒzˆÃ)_Ç<ºQq8eÝXÇ<Ä!qÔCëèÆ:º1qÌcóèÆ<Ä1ñ0â˜Ç:æ!ŽytcâX‡8œ"±ˆc„Y‡8âÑ §tÃ)ë ÌTº1ˆ£b™G7Ü1uÌ£ó Ü<ºá”nÌcóX‡8œB˜n8¥ó Œ8æAqþ8¥óÇ<ºQq¬c똇8ÄÒ wÌcóX‡8æAqÔƒpâ¨á>!fˆÃÙF6¸q kˆCf͇4²q qXÃÒ‡4 "ŽlXCÍÇÂÄ‘ iˆÃÙ¨¿Ì¬!Ž…ejÒh†8dVÒ Ù` Ç Ù Ùp â` â Ò 2“ 2s â 3ÙÐ â â 2c âp âp âÀ “ ÇàÇ Í ‘°â°Ý00ë Ý0â°‘ Ý0âð5ïð5âð5ó ï ï Ý@ â°óÐ ëæ0”ë b!ïÐ óâ°óþ ó bQb1âð5~1„#óÐ óÐ ë0â°â~±â°ó°ï°âð5ïÐ ëÐ _3â Ýðb!ÝŒà y _óëû ›È‰10 Ð Š£HŠÐ1 Ï0å° øðáõð÷Àðçûp@ð¹žHŒÅhŒÇˆŒÉ¨ŒËÈŒÍèŒÏˆŒ! Ç@Ý ï°ï _ bÑ _#ðÝ â@ â0âÐ b!ë ó Ýðb!b!ëÐ ë0ë ë ó bñݰó b!þ_#b!„#ë ë ñÐ â0â0â0âó ë „#ï ó ë ëà„³âð5ó°â°â°âÐ b!ë ó bñâ â°âðë b!ë ï â0â0ëðó ëàb!ݰâ âð5â â°âðb!ë ó bñݰN±â â°â0â°~ñëðëÐ â0âðݰóð5â°â0âÐ ë ó ïÐ ë0b!ó ë ë9â0â0â°âðbáݰâ°â°ã „#ó þë ó ëàë ó ë ïÐ ë0â0Ýð5â°â°â0âÐ âð5âÐ ï â°â°â0âð5â°âðëÐ ë óà’âÝðÝ b!ë ó Ý â0âðb!ë0ë .)ë „#ݰâÐ â°âÐ b!ë ï âÐ ï°Ý b!óÐ ë9ë ݰ~±â0âÐ _#ݰâ°â0â°â0âÐ ë ë ó0ë ë Ýð5„áë ó ë ï â0â0b!ó ë â Ù âþp ÖÀ õw âp â°0õ‡¦Ù âp Ý5âÐ Òp Ùp ÖPÒ â ÙP‚õ'ÇÐ Ö ÇàÇ` Ù°0ÙÀ â iÊÖàÒ ~! Ù°0Ù â5â Ö°0iš ~a h*2SâÐ Ö@ _#ë@cëðâ°ó°” Ý0âð~1_3â0â€^ë@ë@ ëÐ ï ñóPŒóðâââ óÐ _3_#„#„!ó ð ïÐ óàN!ó°ó°óÐ ëÐ âàëëðâë0â@8ï ó ñðþ! Çb0â0~A ϸÿPk€ ¥ˆ ¢ˆ ¸ðœ¨` ûðçûðùáûp€û5k³7‹³9«³7Œp ë ñ û ó ë@ âÐ ë9@cÝ â°Ÿ°‘³âÐ ëÐ ëÐ bᑳâÐ ë9â°ݰãÐ ë9Ý o+ëÐ â°‘#ëÀ9Ý Ý Ýðëð¶ƒÛ ë ë0¸ë0¸ë ‘óݰâ9â°~Ñ âÐ ë9_Ó â°Ý0ݰݰݰâ°ݰã°Ý â°þݰÝ ݰo+o+ïàݰâ°Ý ëàë9â°ݰ‘#ëÐ ãÐ ëð¶ë9â°‘#ëÐ ãÐ ëÐ bñ¶_ó¶ë9~Ñ ëÐ ëÐ ëðâ0¸ë9âÐ ëð¶ïÐ _ó¶ë Ý0âÐ ëÐ ï ë ë b!‘#‘³Ý0ݰÝðݰ‘³â9bñ¶ë9âÐ bÑ ëÐ ëðݰÝ ݰ~Ñ ë9ë9ëàݰo»ݰo+Ý bÑ ïÐ bÑ âÐ ëð¶ë ë@¸â°Ý ëð¶~Ñ ë ë ݰâþÐ ï ëðÝð5Ý ëÐ ëÐ â°ݰâð5Ý ‘³âÐ ï ëðâ ݰ‘³œ³ï ëÐ ãÐ ëÐ ëÐ ëðâÐ ëÐ âðÝ ݰÝÀ9ãðݰ‘³ݰÝ ë0¸â°ƒ Ò Ò ÙÀ ÜPâÀ ÙÀ õÇ9ÖPÖPÜPâ€¦Ý ­ÜÊÙ ~! œ#Ü Ö Ù ÙÀ ÙÐÊÙ ­œ âÀ â ÖP~Ñ Ö ã'Ö ãÒ Ü Æ\â` â â ~a õ' â õ7~â ÜÐ ãWÖÀ ‘9þë9 ëð¶‘Pâð5óïÐ b1Ý0âð5Ý ï°‰ óð5à”ݰó°ï°ï ݰó ëÐ ó _3â0„Ó ó „ób1‘#Ý0â°ݰóbÑ .¹óÐ ð ó ëð~1âÐ !ÀÇb°Ý@ë6Û‹ÖЀÖЀ ]›è8 áõð÷À-°áûà ð£à;k؇؉­ØŒp yï âðÿ°Ý0â‘°ã0ëPc0ÝàÙã¥=ë€Ú¨½þãÐ ã°â0ë9ã «½ãÐ ž-ÝàÙÝàÙëÐ ã žÝ ã «=ë0báÙÝ0ݰã žý5Ý0báÙÝàÙbÑ ã°¥Ý ë0â€ÚÝ0ëPÚÝàÙ‘3â°ÝàÙâ ÜëÐ ë°Úë ãÐ ã ¨½ÝàÙÝ0bÑ ¥-ݰ«½¥9ã ݠܥ½â9ž½¥½ã°Ý Ü_SÚë0ëÐ ã°«Ý ž½Ý0báÙݰ¨Ý ë ¥½ã ÝàÙë€Úâ°ãÐ ã ãÐ ¥-ž-‘ƒÚÝ0Ý0báÙë0Ý0ëþ ë0Ý0bÑ ž½â0ݰž½ž-žÍ «½ݰã°ž-ã°ž½ãÐ ã9ã ã°ãÐ ãÐ ã°â ¥Ý ã ¨Ý ¨-¨-¥-â0ë°Ú‘3Ý0ëàÙë Üë ÜÜ0ëÐ ë0â0‘SÚbÚÝàÙÝPÚë ž½ž-ž½ãÐ ‘ â ­Ì9ÙÌÖÐ Ü Ò`ÌâÀ ÝÀ Ý â` ÝPâÐ ÜÀ9 Zâ âÀ â ­Ì9ÀÌ â Ö ~‘ â€¦Ü ~‘ ~ÑÊõÌâ¦Ö Ù h*õgÌÙÐÊœ“ þÜ Ù Ü ÝÀ ‘ ãÐ ëàÙ4†Ú‰ðó Ýð5~!Ý0báï õàñ ë ó ïï`²âð5â°â0ë b1ë ï0ëÝ0â0ëbÑ ï°â0ݰâ0Ý@ó ñÐ ë0ëà„#ï ó âð_Ó ó óð5è‘p y â@8‰pŒÅ¸ÿàhM÷tŸx  ÂqPc Ðÿp°ÿp E@ Ððöïøù‘/ù“Où•ù!Àǰâ0b±_óë Ü Ü þÜ@c žÝÊ”0ä Ü ã Ü0­ìÙÜPÚÜ@âÀ ÊÍ ã Ù ¥ÝÊÊÍ žÝÊ«Í ãÐÊžÍ ãÐÊ«ÝÊâÀ ã@âÐÊãÀ ä Ü€Ú­ìÙÜ€ÚÜàÙÜàã@âÀ ãÀ ã@âÀ ¨Í ä ÜàÙÜ Ü0äâÆqW° ·qܸShP7ƒ’§P7râ rGNœ¸qÜ *$'® 7q ljS8ŽÛ8r rÇœ8nãŽã–ÜÇqÜȉÇœ8näV›8râÆ)ŒÈm·‚ÜÆ)$'nœBqÜ r+ÈÜGn *þGN·q *ä6Ž›Anã¸TXœ¸‚ÜȉÇÍ ·ãTHN9q¹ä¦vœÂqÜÔrG· ·‚Ü>Ž#'Ž[DnäÄ),¨p7qÜÆÑU«p·q ÇqÇm7qÜÆq+Èm]Ë Ç‰ã‘œ8nã¸䦖[AJt?r˦°›¸nã莣«°[6qtÅqG·[¶òÝÊÏçÖ­Ýn»)GŸÛGÿºQÈšnÄ™OœòÄñO¡Ê'q¸G!qŠDœq¸)¹!ç#n"ÇuÖyžuæ™§ÄuÞéfqÞ‘q»¡dyJì&€zæa$„uæ§D»™þ§DxX\Gœßé¦DqÖ™GœwægžnæYgžnÞYGßY§ßq§DÅY§›yÄ™Gœuæ§Äyºaqqº ‘còcqægDþ1ôPDUôpqôQGCÁ¥úAt˜Òp`Ÿ|þ9'€}ö¹‡ þ9'€PSU‡uõUXc•uVZkµõV\s•5„DŽù#Åy矻)1nÄɆn¬á0›lÄɆ›H¬aZnÄÉFh¡Zq¬áFœn»'nÄ!GšrÛÍFh­á&qº'›ÜuWœnÅ‘¦[q¬ÉFhÅÑWœnÅÉFœl˜µ†hÅþÉFœlÄ)÷£lÄVœlÄÉFiô…Vn²a¶[nôÇn>"Gkº'q¤VœvÅéVnÄ–›l¸É†›lÄ‘¦[q¬ÇnÄÉæ#hÅ–hÅ‘&q¬ÉFfÅáF_k¸VœlÄ)WhÅɆ›l¬áZq²Zf³áÆhÅqWœlı†q²‡›r?jWœl˜uWi²áFkÊ'q˜Íæ#h?²&k²áÆ]q²§]q¬'nÜ'q¸Vœl˜µ†qÊÇšl¸§]n²'›¸qWœn?ÊFn 'q²ù(n ‡wÅ–qÊ'qþDîVh¹‰„›n¸‡›q¸é†Yn>Ç>öÙ‡qƱŸÙnƇ›q˜µ÷ƒݰ7º?rÃ~ã`–8¸Ñ ö-Ð~Ü7ì#fCö±7ºÁqp£ÜX ûºÀqpcÜGü>2ŽH”‹7Ä‘ nˆƒ‘X‡8æ!Žu|¤Dâ˜G7æÑ ‰ƒEÝxÇ:(ÑÉ(ë˜%B ­Ã>ïèÆ<Äñq̃Eâx‡8âÁ"q”Hëx‹Ä±Žw°HóPR7ÖÑw¸¯DóXG7JôŽuˆcâ˜G7ÞQ"wtãñxGq‹?äAóG<ÄA Wþe2Q1˜Ä$BÑÉNâb¡E u \¡Ø¡Â€}ücá@=€}$*؇&}ùK`S˜Ã$f1yLa†€¾Èæ!Žy”èâXG<ıŽHHCÜ8†8²aHCÒ‡4"Ñ.mjSÝÒ¦8¤‘ mfCâ†8²!lhóÝ’†8Ü¥MqHCÙÐ&´¤‘ mŠL‖4²! qH£\ÒȆ6¡Õ qHCÐ’†8š!iˆCÙH§4ÊÕ qH#ÒèVIµ)idCÙ†÷²!lCÙ8ÆG¤‘ iˆ£\ÒÈF:­Ñ.idCÝ’F·¤!itþ+âȆ4Ú%rI#ÒÈFI›!Žl4CÙ´¤-i@«¤å’†8ÜÕ q4CÒ´Ž!i”KÐ’F6¤­tŠ#ét—4²!lh3Òh—6³! q@KÙÐ&´¤!hIZÚl—K³‘Nqh3ÒȆ4Äá®tvKâF6´)i|DâÈF3Ä¡Mh•ZÒ(—4º¥Mq´KâF3Ä‘ iˆ£[Úüˆ4š!mBKÙHg3Ä! hiSÐ’†8 u qh³\ÒȆ4lš i@K”èÆ×aŸqˆcâ ýÖ!Žq¬ã#ö‡ýÄ!AqŒÃ>öÇÅÑ û‰£þëøÈ:Ʊq¬câX‡8Æ!Žn¬cÝX‡8ƱqØOö[‡8ì·qŒ£ Ç8ºa?q¬Ã~Ç:ì#ÁuŒC\G7ıÀnDZâ8†8 qH#ÚÌ%Öq¬c%šÇ:æ!Žwtã,šÇGÞQ¢DÄC%êFê1J„`ÝÇ<Öq¼ƒEïÇ<Ä¡"q¼£óÇ<â!Žy°¨õ‹º1uÌ£óøÈp|8Ôhø‡s€}°‡þx`€€†k»AÌA¤¶`„cȘq`»‡wè†yX‡H†fp©€kmj†HЦ'”†€“†c8m ¸tzBmj†t 8kÀixۮ’jiȆc†cH§fЦc†c†c†c3”3”†cH73Ô¦chihm2CixBi8m2Cm:i¸’jihihm:i8i8i8†’jmj†tzBi8ihmjih†t:†fЦfЦfH§cЦ'L'3̆c†c¸’j†’jihi8m 8i8mj†’ 8i8i8i0Ci8ixþÂ’zÂt:m:†tj†t:†f†€“†fЦc†c†f†fЦf†f†c†c†fÐ&3lm:i8i0Ãtj†t:ihihi¸’ 8mji8i8ihk°†fH§cЦ'Ô¦€+©f†€+©'”†fЦc(©fЦ€“†cЦ'Ô¦€Ó¦ch†tjihi¸’j†tji8†f(©cèÇf(©c†f†f†c†c†c†c†c†f†c†fFX@‡uxqX‡qxqX‡w±‡u‡qX‡w‡u‡uxo{qð6qX‡nX‡nþXqX‡wð¶\‡w‡ux‡uo“q‘X‡wð6‡uxqð6qXqXqXqð¶wè†wX‡wè†u¶‹qXÀuqX‡y‡u‡w‡uèFxBi@ÊtŠ„wX‡y`»yð¶y‡Ë›qˆ‡H„wX‡w‡n¡„X‡yo›¼›‡Ë[‡xè¼›o¶¶ë†u˜¼‡yøˆux‡n˜‡n˜‡n‡yoë¼›¶ûˆu‡nF8†<ƒ˜qXJØMªÐ!p ÍP ÅPWÙ‡D •CéDÙ‡è‡ =QMQ]QþmQ}Qu•H„cøƒX‡y`»‡y‡y‡Hh†cÒ!m†ch†!m†cˆY¸_Y¸…[)õ(•R(•…[…[€Ò[ÈÒ[€R)õY¸Y¸[¸…,½(•Ò[ÈÒ[…[ð7uSY¸Y¸_…[ð…[ðY¸…,ÍR)õ(•R_…[€Ò[…[€Ò[)õ(½Y¸(½Y¸_¸…A½Y¸Y¸Y¨Ó:Ô[T(½Y¸Y¸Y¸(½Y¸(½_¸(½(½(½Y¸Y¸_T)•…[…:õ…A½…A½Y¸(½(½þ(•R(½…,½Y0UY¸Y¸Y¸_R_PU)…Ò[…[)ÍÒ[€Ò[ð…[…[ðY¸Y¸_RYðY¸(½YR_RYð(½Y¸_ÈÒ[…[…[…[ð…,½(½_…[…[…[PU)Ô[€Ò[…[XÈÒ[…[7…R)Ô[)Ô[…[…[…[ð…A½(½(½(•Ò,½(•R_ÈÒ[ÈR)Ô[ÈÒ[)ÍÒ:õY¸…A½Y¸_S-[YR_¸_…[ „nxqX‡wXqq˜‡wY‡nÀ»wþ‡y膇u‡u‡wXqX@qˆo{¶ë†uè†wX‡wX‡nX‡w‡wèqˆ‡uè†xx‡ux¶ë†yøY‡‡x‡xXqX‡wXqX‡wX‡n`;qX‡wX‡wè†u‡ux‡u‡‡x‘u „ch†ch†ch†ch"m†c „uè†u‡zèoë†yX‡y‡y‡y輋‡wHo[À˜‡z`„ð¶yo‡yèos‡u‡yXq˜qx‡u‡yos‡w‡yð¶ypÁ;xð6qx‡y‡yx‡nx‡nx‡u‡xXq˜þq˜q˜qð6qˆy‡xx‡`„cÈ1P‘nx‡uH„ͤzø‡zȇ.b#>b$Nb%Vâ`_ÈXqX‡ø‡xè†wè†wˆ.îb/æbJøâHøFˆF`JàâO`/þFèbJcJ „DøbJøâO8c/þFàâ3¦„3þF Fˆ„DàbFðâOàâOˆ„O`JH„HøFc.þ.þ„3öbJ`Jø/NJˆ„O°äO8cT>ãOˆ„OðâOðâO@åO`„O°äHH„.¦„O`„.þFãO8ãO`„OHeJøbJø„Hø.f/þ„.þþF Kþ„TþF FøFˆ„D`JH„Hø.þFøâO8c[f„.N/>cKþ„3æbFøâO`.þ.þ„.¦Fˆ„D°äDˆ„O`„H`.þ.þFàâOàâO°äOàâO`„O@å.fJøâO`JøâO8ãO`„HH„OcJø„.þFðâOàbFãOˆ„O`„.þKfJø.FåHH„H [fJHeJHåO8ãH`„HH/¦1¦„H .žcJˆJˆJèbJàbJàbJ°dJèbJàbJH„/¦„H /¦.¦„Oã9Ž„9ŽJèbJàbJþ°dJèbJˆJˆJ`.¶jJˆJˆ„9îâ9Ž„D „H [þ1‡u˜¼›‡uè†yè†yè†yÀë†@˜qXq膘‡u`;xð¶y‡yøˆw˜o‡yoS‘n˜qð6YqX‡nð6q˜q˜q‡yÀ»yè†uˆqx‡u˜o{‡yÀ;qX‡y‡yè†uè†u‡nF8†<ƒnx‡n‡wH„%žoú®oû¾oüVш„cøƒXqˆ‡xx‡}x‡ux‡u‡zX±‡x‡xX@qˆq˜‡u‡w‡x‘uxqxqˆY‡þw‡yx‡uËwð¶qqˆ‡nx‡uX@qˆ‡u‘yX@qPñyX‡yX‡w˜‡w‡yX@qXÀu‘uxqx‡u‘uKqˆ‡w‡y‡wX‡y‡‡xX‡wX±‡y‡œ‡wˆ‡w˜q˜‡qËuKqXÀuxq˜‡w‡yX±‡xxo{q˜‡wX‡w‡y‡\‡wXqˆq‘uˆ‡u‡y‡w‡x‡xxqqˆq˜‡uq˜‡‡œqx‡yxqˆq˜‡wXYñ6qˆ‡wX‡w‡wP‘‡yxqxþq˜qˆ‡LŸ‡uq˜‡w™qx‡yX‡‡w‡w‡yKq˜‡‡yKqxqˆqˆ‡u‘uXÀuq˜‡‡xx‡u‘uxqx‡yX‡yÈt‡wX‡L‡yxqˆ‡yð¶‡yx‡u‡‡w‡xqËuX@q‘uxqˆ‡wX‡xqËu˜†—q‘yX‡w˜‡w˜‡w˜‡w˜q‘yð¶\‡w‡wøˆyÀ;qð6qð¶wo‡yð¶wXq˜‡uq˜q˜o‡yXqXqˆ‡u‡uèq˜‡wX‡wþøˆu‡x`;qÀ»wèo¶{‡ux‡u‡wøˆw‡xX‡wXqx‡u‡yð6qo‡yÀ»d»wèo{‡u‡uPqqˆqˆqÈôu˜‡nXq˜‡˜‡u¶ë†x‡yXwÀ;JX‡yx‡xx‡˜q`„¨‡nxq˜‡nX‡n˜‡wXqð¶yè†xð6qè†wè†y‡xè†uy‡u‡yè¶‹‡n`;xè†w‡yxoë†uøˆËë†yè†wð¶yX@€éX1ñĽ{'.Ñ¿†BŒ(q"ÅŠ/b̨q#ÇŽ?‚Ô‚ѱ<æ½[×þmÝ¿në^¾{ùò¸xââ‰['n]à.Öá`¾`žAÞþá á' `Œ¾aÄaºápŸ.~ ž!Pätç¡bÖaÄáÄ æAÞAæ¡BæAæ¡BÖáºA4ºAâAæAæa­Q$ºáºA4JBâAæ¡$ætÅ æAÖA6ÄaÄaÞ¡æ ºaºaÄ¡æAÖAÞ¡@Wæ¡æAÖaºaº!ÄaÄaJââAÞAæa­QdÞAæ¡Þ¡DCÖ¡æ æ¡ÖaÄáºaJbÄaÄA4ÄáÄabÄá¢Ö¡$þÞ!ºµ×áÖABºaºaJâÄaâ ÞaæaÞÁæ æt»áâAÖáÖaºaÖaW6ºaà æpÅA6Ä Äaºæ Äaº æ¡@ Þu›·nݼxÝæus·n^Ánó ®›W0ž¸yïÞu[×mÝ»nîÖÍ›¯›¸uó Š{WPܺyâæ­Ëøn^7‰óÄÍ7¯`·yŽ[÷n8‰ïÖ‰ËèNb·‘âÞ‰›'NܺnóºÍ[7O\G Ì>ÿôcO‹À³ÏŠöP„É0a0вâ9ìÃŽý°@;&“„ýqåP¨ä’L6éä“PF)å”TRB$Çä@7½óÏþ:ótóÎ:ï¬cLð4Ï:â¤MÎt3O* t£ âijŽ1tóŒ—ÍS88³Ž8©$°Î34Dó¬c ݈3OA8’шóNAâÌ“:i$°88³Î;UÍóŒë€€3ݼ#8ðRÐ;ë<#À:â¼NάÓÍ:דּMάóŽ.ˆ38ë¼#N=ݬÓÍ;ó¬#Î<ݼ³Î<ÝÌ#‘8ñ$Î<ë¼S8Ýd´Î<ÁsY7â¬ÓÍ;ë¼#NAñijÎ;⌴Ž8Á³Î;ët3Ï:âÔÍHu3O7ótóN7ó¬#Î<ëÌ#Î<âÌÓÍ<ëtóþŽ8óHÔÍ;âÌsÙ<½#N<ëˆ3Ï:âÌ#Î:ÝTõÎ:ï$ŽDóT5O7눳Î;ó¼ÓÍ<ÍSP7ï\O7ï¬#Î<Í“Ñ:ï¬3DðˆƒÙ<˜Å³Î;ÝHÔÍ:UÔ8õtsÙ;Ý4OAݬ#Î<ݬ#Î<Ý$Î;âÌ#Î:âÌóŽ8ó¼3OAݼ³Ž8ëˆ3Ò:â¼ÓÍ<Á#ŽDâ¬ÓÍ:ït“‘8¹óN7óˆ38ëT58‰38ód$Î:ݬóÎ:ótƒ™DâÌÓÍ<ët³N7ëT58˜ÁóN7‰3O7ó¬#N=UÍSP7‰3Ï:ÝtóÎeó¬3O7ïˆþ3O7­38ótS8ñÇ<ºñ‰Ì£ñX‡8 2qÌ£ïˆÇ:Äñq¬£ï¸Ì<Ö!Ž‚tãó(H7âÑwˆcyݘG7æÑy¬cð<Ä‘‘‚ÄãëèÆ<Ö1qÄcÝx‡8 2qdÝ(H7Ö!Žy¬c™GAÞ±JäñXGæ!J„ÀèÇ:æ!Žw,ï☇82"Žy¼ã2ï(ˆ8$âŽw¬#YG7æ™y¬£Ë“HU òŽuˆcóXÇ<Þw„€Çȃæ!‘w0¢JâA†&¡¡I`ˆÒà€}Dh*8Àp±sþBûHÇ"´L € ö‘ü#ØÇ?öqD(”–ÉÌf:ó™ÐŒ¦4#FøâxG7æQ•|Ì£—‡1À qÀcâH7RÀ‚olc8x: ˆu x8àŒªÌCG Xðmlëx†Ö1ªÔCí3Æ1Žnä F1*p‰ÌcàÀD7摆' †8ȉn"Žìƒø;ÐŽ%#ºrhLóèHOºÒ—¾¤DÂyÀ;º‘ìã☇8æÑàë¸>Ö!Žy¬£ÚPAЃoˆc— @<…¬ãJ8ÀNQqÌ£ÚPÁЃo¬ãèÆ:汎wÄcøúþׯ0q€£@æ!Žyt£ Úø€Þ/ ‰uˆEh@@„uëð!óÐ !ó ó°ÝðëðݰÑ ïÐ ñð1â0‰Xñ°â0ï ÝðÝðâ0ݰþâ°ï°ïÐ #±â0âë ëðâ0ë ó 1ï ó ó°í3â°ï°â0Ýðë0ëÐ ë óPâëð1ë0ݰâ0ëó°Ýðñ0ë óÐ ï ó°Ý0âpâPâ0ëÐ ë0ë 1ëðóð‘0ï°ï#a ! ëÐ óÐ ï #±ó ó°â0âP!ó óÐ ë ó°î@Ýï0ëðëPóÐ ó ó ï ó°ð ó°ݰâ0ë óPݰó@!þ Çb óPïÓä¡ðp¤Yš¸0’GÐÿ°ì`ÊðöP õð’WðþðýÀ ùõ!çû°éA°êUðõ ð™øÀtÞùàžŒ@ ëðëÐ âðâÝ0Ýðݰë@â0ïPïÐ ëðö¹ï°ï ݰâ`ŸÝ°â°ð°#Ñ ïÐ ë ë0 Ý`ŸÝ¡ë0ïÐ ï Ý0âPâ°â`Ÿí³ßð ï #!öùâ`Ÿâ°ï ݰâðßþ°Ýâ°ó°óPÝ0â°ñð ë@ëâ@QãÐ *ïÐ ï óPóðë0*ó :ö9ââðð°óPïÐ ó ï ó Ý0ïÐ ó ó úë0öÙ ð0úÝ¡Ý0â°ÝPâ`ŸÝ0â°ó ëðð`Ÿð¡ï°Ý0öÙ óÐ ï ïÐ *ö9U±â°ó ð â ó ëÐ úó ºó :ð°ó ïÐ ïë0öâ`ŸU±Ý0ö9ö)ó ñ°Ý0Ý þëPëÝ0*öݰó°óðÝâñ`Ÿ!ó`ŸÝ`Ÿó ïâðâ0â`Ÿð ó Ý0â0ݰ!ë0Ý`Ÿ±ó ö)ó`ŸóÐ ë0âðñ #!ïâàúöù ë0æ–¡ó ó î°ó Ý0â`ŸÝ0âðëðóë ëð*óÐ óPó ó ï0UñëðëPóÐ óPó ó ó ë0â0ö)ëPââðë0ݰó ó ïÐ>#Ñ öÙ ó°ó ïÐþ ó°Ý`ŸóÐ :Ý0ïà¡Ñ Ú ö9ö)óp¬â°âðë0â U â0ëÐ ï°ïPïÐ ö ö9*öÙ ó Ý°ݰÝëÐ ë Ýó ”öùÝðëðí³Ý0ݰóÐ ó ë ëðÝ0ݰó`Ÿâ°ݰâðÝ`ŸU±1Ý`Ÿó öU±ïÐ :â â°ñ ݰâÐ !ÀÇb`Ÿî`Ÿ‰0M.Pš“ ¡Pš.!Ã@å!û Ðôðzw¸Ðÿ`*à!°"þ>ìÃøðçûÀðé l@@ûðÃ@å!0€âyÅXœÅÍŒà yÝ`ŸñúëðöÙ öùÝ`Ÿñ°ï°âð*4‘Ý*ÝðëpÇë ó°îðëðâ0ë ó ó°ݰï°±±ó`Ÿóëðóâ`Ÿó ó°ï óPñ°óðëðëðëðâ`Ÿâ#Ñ ëðëðë ï`Ÿâ°wüJÝ0*ë ó`Ÿâ0ë0Ý`Ÿâ ñ`Ÿâ`Ÿñâ@Ý0Ú :þëàëPó ï°Ý0ëëPñ°â0öÙ #ñö9ââ°â`ŸóÐ ë ó0â0ëPó°Ý Ýðëðë0â°âë ö9ëðÝ0*ó õP4!ó ëÐ ï°óÐ â0ëÐ ó`Ÿî°â°UaŸâ`Ÿâ`Ÿó`Ÿï`Ÿâ`Ÿâà¡ó`ŸïÐ  Ý¡â0ë óÐ ó°Ý0âÐ 4aŸÝ0ëÐ Ç*õÐ ï óðö)#!ï Ýðñ¡â0Ýðâ¡â`ŸÝó`Ÿâ0â`Ÿâ°ÝðÚþ ±ï°â0âðÝ óÐ öéè ö#±ðÐ â0Ýï°â°ï`Ÿó`ŸÝðëðݰÝ â0ë óp¬ó`ŸâëÐ ±â óÐ óÐ ë0Ý0Ýðâ0â`ŸÝ0Ý0âëë0Ýðâ`Ÿâ°Ýðâï ëðë ñ ëÐ ï°óÐ ëðë ö)ó°ÝðÝ¡î°â°ï`Ÿâ0â0Ýp¬â0â0öùâ0Ýðâ0â0ë0Ú óð:ë0â U1ö)#aŸÝ°â0ë ñþ ñÐ ”ðë0#Á! óðšó°Ý0â`ŸÝ0ë0öÙ ñ ð°!ñ°ï ó°óPëÐ ï°â`Ÿó öï`Ÿâ0â`Ÿâ0ö9öóðñð! Çb ëðöI Ó4.°èŒÞè‹Þ$+2!ûðõÿвLÒÕ ²’ÿ°Z\ê¦~êKŒ@ ñ ö)û0â°Ý0Ý0âðúúëðÝ0ó *öùâ°â°óÐ ó°ñ ëðâðÝ0ëÐ ëU±ïÐ þó¡âp¬ö)ëÐ ó ݰÝ0â°ݰñ ëÐ ï ï ó°Ñ öÙ ó :úݰݰó`nó`ŸÝ°ó ë ëPóPë0â`ŸïÐ ë0â`Ÿó`Ÿâ Uâ°ó ó ë ïâ0Ý¡ÝÝ`îö)ñ ï0Ý0â°ï°âðâï0âðU±ï°U ó ë0ö9ÝñÐ óâ0ö)öYâðó Ý ó°ó Ú â`ŸïÐ ï õ`Ÿï°ñ°Ý0â°ââðÝ0Ý0þö)ëÐ ó ï 4 Uñë0â¡â`Ÿó`îð â`Ÿï°Ý0â ó ó óÐ ï°â ï°ݰó ï°ââ°ð`ŸóðëðÚ ë0ïÐ öùâ0â`Ÿâ:Ý0ëâ°õ ë0âðí3:â`Ÿâ°ó ö)öùñÐ ó ï0Ý ñ ñ Zëð1¯ÛºuïÄœ'Ž 8‚ëæ‰‹'nÝDýþ}€ÚÔ§FuªUÅPây€8,²qüCñG=ºñqÌCï ^ òqÌcïX‡EÖÑ qÄã☇8Ö!Žu¼ƒ â˜G7Ö–xtcâˆGCÞ±ŽytC.y‡Kæá’nÌ#,ëèÆ;ⱎydâp‰•-"Žy4DïÇ<º±qÌCóÇ<nÌ£!ݘÇKÞ±qÌ£!â È<Öuˆc.Ç<ºá’y¸£ïèFCıŽn€• â˜Ç;ÖV‚ˆcâ˜GCº±q¬£ïxÉ<º±Žytã Ç<"Žy¼ÄâXG72qÌCëèÆ<2þ‚̃ â˜Ç:Äñq̃ ݘAܱŽw¬£ëxÇ<ıŽwˆcïXÇ<ÖÑwtãñXÇ;Ä1†Ì£ïÇ<Äñqd y‡8æÑuÄcïp <Þ±qÌcâˆÇ;ÄA‹¬CóŒKıqÄca‰G`2q¼c™Ç:æÑuˆƒ óË<2qÌ£ïèÆ<Ä1ñ îxGCÞ±qDG<ºÑq4DïAæÑy¼dÝx‡82w¬ãâXÇ<ıqÌCñ È;Â2w¬ã∂¨‡u膆˜‡°˜‚è†wXq˜‚‡w ˆþnXqX‡n˜‡u˜‡†‡wXq˜‡w肘‡u‹y‡wX‡yh‹è‚‡yX‡yhˆyXq˜q˜‡nX‡y‡yXq˜‡¦p‡w˜qx‡yxqˆ‡n˜‡uè†yè†uxq˜‡u˜q˜‡u˜‚€‡nx‚è†u˜qX‡w qXq˜‡u˜q˜‡n˜‡ux‡uè†wˆ—xqx‡n˜qhq ˆwX‡°x‚€qˆ‡u‡yè†u˜‚è†w‡xX‡Hx‚‡y€y¨F‹˜‡uè†yè†wX‡wXq˜°"ˆn˜qhˆnx‡u‡†‡y ˆnxþ‡u‡zè†w膆xq˜‡n‡yè†u‚˜‡u‡u‡w‡yx‚‚x‡xx‡H„cÈ1X‡n«u „UCÇtTÇudÇvÌ¢`_ø˜‡À˜‡u؇yX‡wX‡wX‡y膗—x‡n qè†u‡xx‡y‡wè†x‡u˜‡n˜q˜‡nX‹x‡ux‡u˜‡nX‡y‡y‡n˜—˜‡nX‡y‡y肨q ˆx˜qhqè†y‡u˜qXqE‚‡y‡y‡yX‡wˆqX‹‡y‡uè†u˜qX‡wXq˜q˜‡n ˆz‡uè†yþ qX‡y ˆyè†uxq ˆn˜qx‡xè†yèx ˆnX‡x‚˜q˜qˆ‡° ˆw‹wè†u˜qX‡yX‡n˜q˜‡u˜‡#™‡°x q˜q qX‡y qX‡y‡u«uxq˜‡n˜‚˜‡uè‚è†y‡nX‹è†y ˆwè†z‡wè†y‡w qhqx qX‡nX‡x‡wp‰wè†u˜qh °r‚ ‚x‡nx‡yè†u‡†0Ïwè†uxó$q˜‚«up‡y ‹‡u˜‡wX‡wX‡y‡y肇u˜‡nX‡nˆq ˆy°ê†þy‡u˜‡nˆqxóì‚+qX‡y‡u˜q˜‚˜‚xxX‹‡u°qhˆn˜qX‡nXq˜q˜‡nˆqxqhˆn`Ïu¨‡†è†u¨q«u‡wè†yXqX‡w‡x‚è‹è†y‡wX‡y qX‡yè†z‡w°q ˆ°˜qhˆw ˆnx‚è†wˆ‡†‡uw ˆn‡u˜‡u˜‡nX‡nhq˜‚x‡nX‡yè†yè†y q€‚‡ux‡u肇†x‡ í†wè†uè†yè†y‹ ]‡yè†wX‡n˜qX‡yx‡n0Ïwèöþ‡yè†y‡uÀ«u€‚˜ó+‚˜qX°‡y膆‡u˜‡uˆqèJXq˜‡xè†x‡y „X‡n ˆwè†u˜q ˆyè†uè†y‡yè†y‡yX‡w`Ïyx‡n˜qx‡n˜‡wX‡wX‡w˜q˜qˆqX‡y‡wX‡w‡y‹w˜‡u«À¨q0Oqè†`„cÈ1x+{‡DpÇ“EÙ”UÙ•u¢`„cÈxó܇uè†w‡yè†whx qXq¨‡nxq˜‡u˜‡u˜‚è†wX‡w ˆyè†w‡yè†w‡uè†u‡y‚óþŒ‡†€q q ˆn˜q ˆw˜‡u肘‡†ˆq˜q ˆyXqX‡n˜‡n˜‡n˜‡n˜‡n˜‡n0ÏnhˆyX‡°+qhˆyè†y‹wX‡yX‡n0OwXq qx‡u˜q˜‡nxq˜‡wè†w qˆ‚x‡yöÄ+q˜‡uxqˆq ˆy肇y‡yè†u‡zèq˜q ˆy‡y‡y q°q˜‡°˜q˜‡°˜qx‡u‡yX‡nx‡n‡y‹y‡yX‡nx‡y ‚‡y‡ux‡ux‡u˜qˆ‡u‡yX‡y‡yX‡y‚‡y‡þy‡yx‚‡y‡yXq q˜q˜q˜‡nX‡whˆy‡zè†w‡uxqˆq˜‡upqXq˜‡ ‡yè†y‡†‡wX‡n‡y‡nˆ‡yè†u‚‡ ‚‡x ˆyöì‚è†w‡xhx q¨‡q‡w‚˜‡n˜‡n˜‡°˜qx‡u‡uè†u˜qè†yX‡y q˜‡u˜qˆq˜‡nx‡ux‡u˜‡u‡yXq˜‡u€‚è†u‡yxq«yèqˆqˆ‡n˜‚‡xX‡y‡yX‡n ˆn˜‡wXq˜‚˜‡nx‡uxqXþ‡nx‡y ˆy‡yX‡yXq˜‡uxq¨‡uxq˜‚€‡wX°‡y+qXqhˆy xX‡n˜óì†wè†wè†u‡xxq˜‡u˜‡n ˆy0Oq q˜‡n˜qˆ‚˜‡uè†wè†u˜qx‚‡yX‡nx‡u‡x‡y ˆn˜‚€‡u‡x‡y‡y ˆnXq˜‚膆‡yè‚°²yX‡°ˆ‡w`ÏyXq˜qXqX‡wˆ‡u ‚è° €y0Yè€y‡y‡xXqX‡y‚‡xè†w ˆnXq˜‡n˜q˜q˜‡n0Ïyx‡uè‚þ‹†x‚˜‡nxq˜‚è†yx‡uè†u‡y+‚˜‡up‡uÀ«H„cȃ<‡wˆ‡w‡D`ÇÁ&ìÂ6ìÃþ¢ „[øè†y‚øqˆqxqx‡nX‡y‡w‡yX‡y ˆwX‡y‡u肇 ‡nˆqˆ‡nx‡yˆq˜‡u˜q ˆy x0Ïy‚˜q˜‚˜‡n˜qx‡À0Oq˜q@Uwhˆw膆è†yè†wè†wXxhˆyè†yè‹X‡y‚˜q肈‡y‡y‡uxxX‡y‡w0Ïy‡†è†yhqˆqX‹‡w‡þnX‡yx ˆyè†y‡wè‚x‡u˜q˜‡n ˆyhqX‡y ˆx xhˆxè†y‹yx‡nh‹hˆy`Ïyè†u˜‡ux‡yè‹è†yè†ux‚˜‡†x‡nX‡y‡uè†uè†wè†yX‡n˜‡n˜‡n x˜‡u˜‡n˜‡ux‡À¨q˜q q ˆy ˆy ˆnx‡n‡zó|‚˜qx‡ux‡u°š‡wè†y‡y‹yhˆn ˆy‡w‡uˆ‡†x‡u‡u°q`Ïy‡y ˆy q€‡ ‡†˜‡†‚xq˜‡w ˆw˜‡†öœ‡n˜qXþ‡x‡u˜qX‡wXqXq˜‡uè†yè†yX‡yè†x‚˜‡n°qX‡yè†uxq ˆy q«nX‡w˜‡ux‡ux‡nX‡yx‡n`Ïw˜q ˆ° q˜‡nX‡w ˆx‚è†u˜‡n qXq q ˆw‡ux‡n˜q qX‡wˆ‡nhˆy ˆy‡n˜q ˆw肨qˆqˆqx‡y °ê†u‡x‚‡y‡yhˆy‡y‡yè‚è†uˆqx‚xq¨q˜q0ÏyX‡wè†y‚T%q ˆy q ˆy‡uxq ‹ˆ‡†þ˜‚°²†è†yhˆyhˆnX‡D ˆx‡n€yˆJóì†y`Ïyˆqx‡†x‡u˜‡n`Oq`OqXqx‡y‡yxwhq˜‡n˜‡uxq ˆw膆˜‡uè†u‡†‡w‡u‡nF8†?ƒ†x‡uHÄVýÕgýÖGÇ`„cȃ‡y‡yè†X‡wX‡w ˆ°ˆ‡u˜‡n˜q q˜‡n ˆy‡yXq˜‡u‡u‚‡xX‡wX‡nhq ˆyXqXqxq˜qX‡nx‡yX‡n˜‡n˜‡uè†wè†x‡xX‡y0Oq°q˜‡†xëþ$ø®Û»uïÄÍ'nÞºnÅu[×íݺyÝÖÅ›·®ÛÀnëæu['Ž ¸yâæu[7o¼wÝÄÍ#øNœ¸uïÄÅ{'®à:qïºÅ8o]7qÅÕëVPAqóÄ­7o]·wÝæ]¯[·ðºÍ(n^·w뺉›×í]·uﺽ7o`·yëÄÍØí`qñ€v{×-AœëÞu7pÁyç‰#Ømà;qñÎ(Ž`·w»‰‹÷n¸ÝÎèð:œó¾7o¼n»Í›7Ð8‚ðÄ|7PÜÄ<¬Ã<ˆC3PB"DB"P%$B$$B$$Â?ˆÃ;¬Ã<ˆÃ<Å;tÃ@tÃ<¬Ã<¬C7¼ƒ8¼Ã@ˆCü°û?ÔÃ?̃8̃8ÌC7¬Ã<ˆA¼Ã<ˆÃ;tÃ@ˆÃ@¼Ã:Ôƒ8ÌC7̃8¬<¬ÃÎß¡|È(ÊÇ?òá ~8h‰ˆD6æáÄaÄaÞAƒ Ä¡1ÖáÄa#ÞaºaÞ¡ÖáÄaÞaÞaÄaºaºa#Äa,ƒ º Þá$,ã$ÖáÄ!æAÖ¦ÄaºAÞAÖAÞaÄaÖáÄáºaºáNbN‚ º!æAÖAÖáÖá$æAþæAæ¡Ö¡Ö¡Äaº ÞaNbºáÄaÄaÄa,CÞá$âaºáÄáâº!ÄaÄ!áò ÄaÞAÞáÞ¡æá$æá¬!¾oæáÄ!ÖAF‚ ž¾aÄa6Tà ºažAØ`, àÖ!æa€NaÀá JÀºá€ &ÀÖaTà@àÄAŠàà¾á & NAØà`x@æAæ¡ÄaÞAæAæaÄa#Ä Ä Ä æá$æ ÄþaÄaÄaÄaºáZbÖAæ ÄaNbÄabÄaÄaÆA6Ä¡NâÖáÖaÄaÆaÄ æaÄaºaÄaÄaÄaÄaºa6BâAæa#æÁºáÖAZBæ¡æAÖáº!¢1Ö¡æá$æAZB6bNf6¢æaÞAâ¡ÖáÄáÄa¢1âÖA6Ö!ZBtHæaæáBâaºaƒ ÄaÖÁ£âºaZBæa#ºáÖ¡ÞaNbÄa#æ æaæ æáþÄ!Ä!ZBæáæaºaÄaÄÁjÞAæ¡æaÄádºáÄaÄaºaÄ!Öáâ Þ¡ÞaæAÖáâÖáÖ¡æaº¦æAæAâáÖAZ¢6¢æádÞaºaÞaÞaÖAæaÄ ºaZâ$æ æ¡6â"Ä!6ÂÄa#à àAæAê¡Äa#ºaÖAæAêaºabÖ!ÞacÖAÖAbÄaÂÖ¡æANfÄaÄaº æ¡Þ¡Þ¡âaæ¡6â$æaÄaºAþÖáÖáºÁ2ÖáæaÄa$Ö¡Öat¨Þaæaºa$ÄaÖaÄáAâ¡âá`$L!ÞA6BÞaÞa#æaÄaÄ!Äa6âºáÖAâ ÞAæá$Ö¡FbºaæaÄaÞAâac#ºaÄ ÞAæá$æáâáB Ž!Ä`ÖáÖáŽ!öÁAòaòáòáòáêÁAòaÒ/þaZ÷!ýþ!¤$þaZÿ!ýê¡CþaòáêÁAòáòa¦õòáÒïòaòáêÁAòáAê!þþ!ýúáö!ŽaâAÞ¡bN¢%ÄaâAÖAâæAÞ Þ¡ÖAÖa$º!Ä!ÄaÄáÄaºáÄaâAæacºaƒ ÞaÄaæ!æ!¢1ÄáÖáæAÖAZâÖáÖáæAÞ!ÄaÞaÄaæ æAÞ!Äáºaº!Ä!Ä¡1ºáæ¡æAÞ!º!ºáÄaæaºaº¡1æ¡1æAâABâbÖ!ÁþBÞaþAÞaæáÄaŽ!ȵCæáÞ¡æ º þÈ^¨aºaº!N ¶ap@žˆ@ºá 16¢Öá 1Öa´áºV€Öá º RàºA@@NàÔp žaÖ¡æàÖAP¡%æa#ÞaÞÁ6bÄaàabÖÁbÞ¡æAæaæ¡Þ ÄáÖAæAÖAÖáº æ æ¡æá$æA6¢æ!Ä cæ Þ¡6BÖabÄaæAZbÄ¡%Þ¡ÖaÄaÖáºaæAºaÞ æAæAÖáºádâáþ$ÖAÞAbÞAÞÖaÖaÄaÄa#ºæa#ÄaÞaÞ ÞaÞ¡æAZbÄaÄaÄaÞá$ÖaÄaÄaàaæAÖaºaÄ¡Öa¢ÞaºaÄaæ¡âºaêAÖáÖ¡æAÖaºa#âAÖáºaâaº Ü Äaºaºa#ÄáÖáºaÄaæ ºaÄaæa#æAæA6âºáºaÞ6BâAÞ¡æ æáº Äa#Þaæ¡ÖaNbºaæAÞ c0º¡%ÄþaBêAbÄ Äaàa#Ä Ä ÄaÞAæaêAÖ¡ÜaæAâáÖAÖ¡ÞÖaNbÄ ÄaÄábÄaæAÞ ÞaCâÖA6âÄaº ºahŠ NbÄBâ$Þ¡%æAæAbÄa#æAºáÖáÖáæAºáb£ÖaÄ!¢æAÞaÄ¡6Bæ¡NFæAÖaÄaÞaÄaÄaº à¡%" Þaº!êA(!6bÄáâ$Ö¡æAÖ¡ê æaþÞ¡àaæACæ¡æAÖ!ÄaâAÞ¡ÖA¢æáâæAÖABnâæ¡ÖAº!áò@ ÄaÄaÞÁ!ý$þ!þ!þ!ýêáAêÁAê¡Còá¦õÒ¯òáêáêÁA¦5êáAòáÒ¯òáAêáêáêÁAòáAòáòÁAê!$$$þAÖá¢Þa$ÖAæaæ¡FâÄa®âÄ¡ºaÞ¡%ºáªâ6âÄ!ÄaBæ¡Ä!¢æaºa6¢Ö¡æAæ¡ÞaþÄáºáæaÄaÖá$æá$æ¡Þa#æAæ¡%ÄaÞÁjìjÞ¡ÄáÄ!âÄ!bºaâºaÄaº cÄaÄaÄ ºAæ!"Áò 6BÞá¢6âš!>×Aöaöáºaºa6âŠá 4€ºÀºaR!ÖáÀæAža¬fžAÖAÖACÐÁ ž¾áÖAÀºatAÄa€ºaŒ!Þá`ºáÀ!È€N¢ÖABBBæá$æ º ºþaB6¢æ¡æ¡ÞA‡Äa$ÖAæaÄaº ºáºaæÁjÄ æAÞ¡Þ¡Öá$æAæ NbÖ¡ÖaºáÄ¡ÖaÄaÄaÖA¬F"Þ¡æAZbBæaÄaº!Fâºa$Ö¡ZBÖAæaÄ ºa$Äa¢ÖAæaæ¡N¢º ºáºa#àá$Þ Ä!ââAZbBÖ¡ºaæaÞAZ¢ÖáÄaê¡ÖAÞ¡ƒ Äaºaºa$º Äaºa$Ä!NfZbÖ¡þÖaÄaBæáºaÄÁjæ¡6¢æAæAæAÖáÄ!º Äa6b6Bæ¡ÖáÄaÖaN‚ ºáÖ¡âa$ÖABæa#ºA‡ÄaÄaÖáæAbb6BâaBæaºaÞaºaÞaCÖáBæaæ¡â8qñÞ­{7oÝ:qñŒ÷®Û»w »½7oÝ®ë¶nž¸yÝÖÅS(n^·nïâ)7s8…âæ)ìön]·‰óÖ¹{§PþÜ8ëÌ#Î;ÝÌ#Î<ëÌ#ñët#Î<§¿ÓÍ<â?8óˆcú<¦‹³N7óˆcº8눳Ž8ó˜.ŽuÌãÝ ž8Þaº¬ãâŸ8º1‘wÌ£¦ëÆ:Ä1Ó]ÆtâxÇ:²Žxˆãݘ‡8æaºnÀƒx☇éÄñŽn˜îݘG7ÖÑuÌCóèñÄq˜nïXŠéæÑytãtóÇ<Ä1‘utcó€Ç:æ!Žy˜nëèÆ<Öññ äÝXÇ<ˆ'Ó½#☇8ÞA¼n˜îâpÇ:æ!Žu$â¦G70zP"9Ýæñq¼C|âx‡éÄÑ ] à€3º1T$`Ï@7L÷ ¼C—Ç<Öñ ¬#âØ†uCëx†Þa:pÀâX‡.°pÀëxÇ:Þ±Žg@óÇ;æ!u¤!ïX‡8ÖÑˬCëè†é౎wˆ£™‡éÄaºn¼c¦{G7Þ!Žþxˆcâ Þ<ºaºytãÝ88N'Žytc™‡8L×y¬ãëXÊ:ÞÑyˆcݘ‡éæA¼n¬Cñ8]7ÞÑuÌ£ó0<汎nÌ£ñx‡8æ±xtcóX‡8N'ñ™NñXÇ<Ö!Ó‰câ ž8æ!ŽyˆcâˆÇ;Ä1ÓÍCëè†éÄqºytcâˆÇ;Nutãâ˜Ç:Ä1wOóß<ºÁÌCóñıŽwˆƒlâ0Ý;ÖñqÄã똇8L×Ó½Ãtâ˜Ç@â!ŽytcïX‡8汎y¬£óXÇ;ÄnÌ£óèÆ<º1qþ˜nî8]7Ö1qÌÃtâx‡8Ö1‘utãâ¨Ç:ºñŽutãëxG7N×y¬c☇øÄ1n¬CóÇ<Ä1nœnëèÆ<ºñâÍcð˜Ç:Ä1qÌ£óñæ!Žy¬ãâ˜Ç:Þqºyˆcë€Ç;â1utãëG<Ö1n˜NëèÆâ`:Ý0â0ݰó°ÝP¦óÝ`:ïÐ ð`:âp±ï óÐ ë¦3âÐ `ó@ ! ó ï`:ó ñ0ó ¦3ݰó0ï°a:ó ë0â°!óÐ §3â`:ï0Ý0âðó ïÐ þï°—!óÐ ï°ñðݰÝ`:âÐ !ÀÇb óÐ ï ”PùPÿ°;€øí°¿1}ùðõÓ÷ù0}¿QÿPÿÿPÿÿÿPÿPâñõõðùPÿPÿõðùðõõðõðâ‘õõðõðõðùðõðùðõõð”p â0Äóó°ݰïp:óÐ ï°óÐ ó óðëðë0Ý0¦Ó ó ñ`:óëð¦#¦Ó ëp¦#—A<â0¦#óÐ ï°â0ï°âðâ0þëÐ ¦#§3ðÐ ó óÐ ó`:îp:ñðâð¦3â0â°ï°ïÐ ó`:ó`:—a:ݰݰÝA—a:1â#Ä#! Ç`:ððâðëâ°ï°ïÐ ‘p½ë»ó°â°â0ë0ë  7ð%À ëÐ Ú 0=ð ëð @ö‘ktcݘÇ:º1q¬CóX <Ö1nÌC&LÖÑyˆ£'ÝXÇ<ÄÑytcóGBÄ1™¬ ™‡8ÞÑyˆ ™‡8æ¡n¼£ éÆ:º‘xˆcݘ‡LÞ±Žw$DïXÇKæ!ŽuÌCóHˆ8ÞÑwÌCïX‡;汎wtC!â˜Ç;º±ŽytC!óHH7æ!ŽuÌ£ïèÆ:汎w¬cë#nñÌC ù‡8z’yˆƒTX‰‡8â!q¼ãݘí;ÄÑ„¼cïXÇ;Ö!“„À#!þñÇ<º1q`Eó‡BÆQq¼cïÐ €|C Ç<ÄñŽuÌcñèÆ:ºñq¬£ éÆ<Ä1nÌCóèFBæ!“utCóHÈ;æÑÕtcݘ‡8òŽn¬ãëxÇ:tÛyˆc∇8"Žwt#!ïXÇ;ÖñŽnÌCïÇ;º¡ytcÝXÇ<Ä‘y$dïXÇ<Þ±ŽnÌC=Ç<Ö1uÄC8º1uÌ#!ïèÆ<Þ1qtcݘ‡8Òy($ïè†BzÒyˆãݘVÞ!ŽuÈ$!☇Læ!Žu¼£ëxG<º‘yˆcâþPÈ<2n`¥ï€Ç<°"ŽuˆcïèV^2q$dÝX‡L汚n$äÝxG7汎yˆãâXÇ<Ä•wˆcâP<°2q¬Có‡BÄ1q¼£óÇ:æ!Žu¼cïÀŠ8Ön¬câXG7ÖñŽnÌC ‰‡8ÖÑu¼CóxVº1q$äÝPÈ<ÒܼC!=GBâñŽn¬CóèFOºqtc éVÞ‘y(¤Xy‡BÞÑ„t#7㨇8Ö1n¼£ïX‡n»1q$dâXG72„¼c ‰‡LÒyˆãëxG7Ö!Žu¼CëÐþ­82qt#!óèÆ;æ‘qtcóˆG7"“„ô¤ïÇ;âÑ„t#!âPˆ;Ö1q`E·âHˆ8t+ŽuÌC눇8ÖñŽ„¼câHH7æ!Žwtc2¡Ä;º1wt#ï˜%B°Žyˆ#!2yG7汎w¬c éÆ<ıޗ$dÝPÈ;ⱎytcóGBÄ1uÌCóXÇ<ÄñŽn¼£â˜Ç:º‘yˆcïÇ<ıŽn¬£âX‡8ºF#bÇ;Ö!J|gù¨Ç¬ý{ÔcõØG=¾3ïÌ#Ü6 Àõ˜|æ‘y°#ß™Çþ3P}@>óÈGwô_øúø‡€ €|¨öè‰|˜‡|˜‡H8¬è†yHqHq˜‡nXqHˆnx‡x‡„Эw‡yè†ux‡uè݇xX‡nx‡Õè‰u‡yè†wÀŠw‡yè†u‡zHˆwX‡w‡zHqˆ‡u˜‡nx‡uxqЭu˜‡nXwXq˜qX‡w‡yHˆyx‡nPˆnx™˜‡„˜xx‡n˜‡„‡wPˆnPˆnX‡yè†wX q˜‡nXqF8†<€w˜™x‡}è…‡u‡yÀ­yÀ­y‰yx‡ux‡xˆ‡yX‡wX qHþqHˆx‡yè†y‡u‡yX݇w‡yÀŠnˆ‡yHxPˆy‡wHˆw‡yè†wX‡nÀŠy€‡w‡wHqHˆwX‡wPˆy‡yHˆnxRé†wˆ‡yHq˜‡u‡„‡zHxx‡nx‡nxq˜q˜‡wX qÀ qˆ‡„˜‡Õ‡y‡„Ð-qˆÝZ‡w‡y‡ux‡nx™˜‡u˜qXqX‡n …è†yè¬p‡„x‡uè†uˆ‡„è†y‡yx‡nX‡nx‡xHˆn˜…è†yXqPq¨qx‰wè†w‡x‡yè†y‡yHˆyx‡yHˆnx‡(þ‡„ …˜‡n˜qHq˜‡nXq¨‡„x‡„è†u‡yHˆyX‡yÀ xX‡wXq˜‡u‰w‡žHxXq˜‡„‡yx‡„‡yè†yHqX‡w˜™˜q˜‡nx‡u‡yPq˜‡nX‡yPˆy€q˜‡n˜¬‡„‡z‡„‡yHˆyè†wX‡nX‡yPˆw膞‰y‡xXq˜‡nPq˜‡u݇yPx膄‡x‡y‡yè†y‡yHˆ—˜‡u˜‡nHˆyPqX‡wX‡yx‡u‡yHq¨qHq˜‡nHwxq˜q˜‡nH™˜q¨‡þw‡yXq˜¬˜‡nx‡uxq˜…è†y‡yè†w˜‡w‡yè†u‡uè†yÀŠx˜‡„è†xÀ qˆÝZqPˆy‡„˜q˜‡nx‡uè…˜qX‡nx‡u˜Ýš‡u‡nx‡„‡yÈ x‡z‡w‡„x…‡„˜‡uxq˜‡u‰wPˆyèqx‡n˜‡u˜‡ux‡uxqˆ‡„ˆ‡wH„wè†uЭ‡z`„è†yPˆxX‡wè†uè†u‡Õ˜‡ux‡yX‡nx‡„€‡u‡uè†w¬xq˜‡nPˆn˜‡ux‡ux‡u‡yXq˜q˜q˜‡uèþ†yX‡y‡wX‡y Á`„cÈ1X‡zÝbø˜|¨‡ž˜Õë›ö¨ø¨€*¨öH˜v€ï¨v€yx€˜€Pv€|x˜v6è Ѐ_ȇzP‡"(xy¨‡ï˜ø¨‡|€Àп|˜‡z؇|¨‡D°†u˜qx‡u‡u€‡yX‡yè†yx‡u˜qx‡„x‡„˜™˜‡nx‡n˜qx‡y‡u˜qx‡n˜q€‡u˜‡n‡wˆ‡nPˆy‡„xqX‡yPqP݇yPqx‡u˜qx…è†x‡u˜q˜‡n˜‡(‡uþè†ux…x‡uˆ‡u‡y‰wè†wè†y…˜qxx˜‡„˜‡nÀ wX‡yX‡n˜q˜‡`_øè†u˜‡„ø‡„‡„˜‡x‡yˆ‡w‡yˆ‡w‡yHˆnPˆ—˜™p‡u˜qX‡y‡x‡„ˆqxqˆqx‡nPˆwX‡w‰u˜qHˆnÀŠn˜q˜‡u‡„x‡nxqЭy‡u˜‡nX q˜qXq¨qè†y…‡Õp…˜qPˆnX‡yHqHˆyX‡w‰w‡wX‡w˜…è†u‡y‡y‡u˜qX‡yX qPˆyPˆyÀ­„‡þu‡yˆ‡n˜qX‡w˜‡xx‡n˜qHˆyX‡L\‡y‡u˜‡nXw‡n˜qX‡y‡Üè†wPˆnÀ q¨qx‡n˜…˜‡„Эx‡wX‡yX‡yè…è†u˜‡nX‡nÀŠwp‡u˜‡n¨qHˆžXxX‡yè†wèxHˆwè†u˜‡wÀ qX‡w˜‡„‡y膄è†y‡uxqè†yX‡nè‰u˜‡„謘‡n˜q˜qXq˜‡u膄‡yX‡yè†u˜‡x‡wè†u˜qXqXw˜¬è†y‡u‡ux‡nx‡n˜q€…˜‡„x‡y‡„‡uèþ†u¨qPq¨qX‡wXq˜‡wHˆy‡xè†w€‡yX‡y膄˜qHq˜qHˆy‡y‡xè†yè…è†u˜‡ux‡n˜qPˆnHˆyX‡y‰n˜qHq˜‡„ˆqX‡yè…x‡u˜‡n˜‡nHˆžHˆwÀ q˜™˜qX‡nx‡n˜qHq˜qˆ‡n˜‡nHˆnXwX‡wèxÀŠn˜qx‡n˜qX‡yH™˜‡u˜q˜‡n˜q˜‡n˜‡n˜™X‡y‡yè†yX‡wPˆnX‡n˜‡uˆqX‡yHq˜qX‡y\‡wÀ q˜qHˆy‰uþx‡nè‰u˜qPˆwˆqx‡n˜™XqX‡yXqHˆn qx‡y‡n€ž „x‡nÀ qX‡wX‡x‡„˜qHq˜Üz‡n˜qxqx‡u˜‡Õ˜‡„è†u˜qPq˜qX‡yX‡n˜‡u‡yè†yè…‡„‡uè†u‡nF8†<qx‡yè†uH„zè‰|è‰}¨‡ïè‰ø˜‡`|è‰z˜vgˆ‡y¨‡|H†˜‡g€ž¨v€yx¨‡yˆ‡g€|`˜v,˜‡|øŽ`x¸Ày¨‡|˜‡|˜ÕžÈHWþ¨‡yȇyȇy¨‡y¨‡|˜‡z˜‡|¨‡D8†wPˆyX™X‡wXqXqˆq˜‡uè†yX‡nЭuxqˆ‡nx‡uè†wPˆyxq˜‡u‡uÐ-qHˆyX™˜‡u‡„˜‡nXq˜‡„‡zè†Õ‡y‡uè†wPqˆq˜qHqxq˜¬€‡„˜‡„‡yXwXn˜‡wX‡w‡xè†yXq˜‡n˜‡nx‡n‡yè†u˜q˜‡ux‡uè†yx…‡ø„cȃ‡„‡wø‡„‡y膄è…è…è†yè†w‡yXÝJÝ’‰yXqˆ‡„˜þqPˆwHˆyPwXq˜‡„˜‡nx‡yHq˜‡n˜‡uè†yè†yXq˜‡u ÁnX‡n˜‡uè†wÀ qx‡u˜qˆ‡ux‡xHˆyXqè q˜q˜…‡„˜¬è…˜xè†u‡yˆÝZqX‡n˜q˜‡u‡y‡yè†yX‡n˜qHx‡yHˆyp™˜‡nX‡nx‡xx‡yHq˜‡uè†wè†yXqX‡nX‡wè†u˜qXqX‡n˜‡nX‡zè†w‡yXwLqHq¨qHxxq¨q˜‡u‡z‡yHˆwX‡y‡u‡z膄xqþX‡yHˆn‡„‡yPqx‡u˜q˜‡„è†wX‡nx‡„˜™ÀŠnЭy‡y‡„˜qX™¨qÐ-qHxX‡n˜‡u‡yè†yÄŠn˜‡nÀ qxqHˆn˜‡nx‡Õ‡yPˆnx‡uè†ux‡uxqX‡w˜‡„x‡n˜‡n˜‡„è†yX‡yHˆw‡x‡wPqPˆnHˆy€‡u˜‡ux‡„˜‡Õ˜‡nÈnx‡ux‡„‰„‡yè†w˜‡„‡xXqPˆyPˆw‡yH™˜‡nx‡nX‡y‡yPˆnX‡nЭx‡ž‡yè†y‡wX‡yè†wXq˜‡þn‡„è†yXqX‡n˜qX™˜q˜‡„˜qx‡u˜qˆqˆ€X'n^·xëÞu{·n¡¸yâæ‰['N\¼uç-7oݼnóÄ-\÷n^·uâB†|×í]·xóÄ¡\'náÄxëæ‰ )¥¸yóº½{·NܼnóÄÍ7¯Û¼uâÎ7o]·nóº­7OܼnïÄÍë¶Îç:q!ç­{'.R·…Aø4b¸z!ÅÍ·pž¸…óv‹÷.Þºwââ]'n¸yâæMœ·î¸…õÄÍ[§yóºnœ»ÅãïÙ€}ìÌÛ7€yÏä{àÛ¾|Ï̳ œÏp ˆ×Ë7/_=âõæø§ÿ_€yùæå3O>ó7O>óäãS=‰4Ï:ótóN<ëÌ3Ñ;óp&Î<q¶Î<ë¼38гÎ;ݼ£Y7šÍ#Î:âÌ£™8óh&Î<ë¼#Î:óhöŽ8ëÀ³ŽOÝÄ#Žfóˆã“8›Í³Ù;ÝÀ³Î<â¬#Î<ݬ3Ï:%N7ó¬óN7ëÌ#Î;œÍ#Î<ݼ³Î;óˆ³Î<ÝÌ3Ñ:â¬ÓÍ:âÀãS”øòšÍ£Ù?âÌÓ¡fól6Ï:ñtþ³Î<š‰£™8š5O7ó(ºÎ<âp&Î<âhöN7ëÌÓÍfâ¬38ï¬#Î;ݼ#Î<ït³ÎDA­óN7ëÌÓÍ<â¬3O§ëˆ£Y7óh&ÎfÝŒS8óˆ³N7óˆS8ëÌ#Î<ݬóÎ:ït³Ž8šÍ£h<ÝÌÓÍ;ÝÌs¬8ëtÔ<Ý̳Î;ët£™8ó¬38ñˆóÎ:âÄ#gót3Ï:óˆóN7›½³™8Au³Ž8ëÌ£Ù<›Í#Žfï¬óÎ:â¼£Y7󈳎8ݬ3ÏfóLôÎ:ݬ3Ï;šÍóN7ëÌ#Î<ÝÌÓÍ<ÝÌ#NPâÄ#Îfóh&Î;â¼3ÏDñˆ³Î<âþt£Y<ïh68Ù;Ý̳N7ñt38ÝÌ#Î:óˆ³N7›Í#Î<â¬38ñtóÎ<âÀ£™OÝÀ³Ù<âhÖÍ<œu³Ù;ݬ#N=âh&N7óˆ³Ù;ÝÌ#Î<ð¬38ïˆ3O7šu38šu38ëˆ3O7œÁ£¨8ïÄ£™OݼÓÍ:âlöN<âhÖ gït³ŽOëtóÎ:ïÌ#ŽfâÌ#αÝÌÓÍ;ݼ£™8šù$N<ëÌ#Î;Ýø$gñpÖÍ<ݬ38ë¼³Ù<œ‰³N<âÌCõÐÌ<ıŽyÄ#âxG<4#ŽÍˆ£CóÇ:ºñŽÁc3ñÇ;4ów¬câXþÇ<Äá“uÌCÝx<Ö1ÍÌC›‡fº±Žwt£CÝxG7æÁ™ytcAÑÌ<n¼cÝÇ<Ö1qhFëxG"â!Žyˆ£¨‡8(‚y¬cóÇ<âÑyˆcݘ‡8Ö!Žy¬ãÝXG7æ!͈£óXÇ<83ut£SÝ€‡fæÑy(êëpÇfº¡q¬CëG7BÀˆcäA âxÇ:ÄñŽDäc7ûØAv`Êà#û¨G>ê‘zìfì/æAœy¤Bõx†æ‘z°Cñx†æQxê1|Ì#óȇOö1D4£ïè†fº”utc3â˜G7汎zhëè†8ÖÑxÌc™Ç:Ä1wˆc∇fº1uÌ£óØŒ8汎nˆcš‡fÄq¼c"ëx‡f汎n¬Cš™‡fº¡q¬ãë˜HP63‘y¬#(âˆÇ;4#Žx¬CïX‡8æÑytcÝx‡8æ!ŽÍˆãݘÇ;汎y¬CïX‡8Ö!Ž0ÂyÀ:º1q¼cœÇ<Ö!ŽÍˆC3Ýx‡84#Žyˆ£ݘÇfºÁw¬CóÇfþæ͈#ïÇ:Þ±ŽnÌC3âðI7Þ!ŽyhæÇ<Þ±qÌCóÇ:Þ!ŽuÌCš‡f&¢qÌcÝØÌ<Ä1wpf똇863nÌ£ïX‡8æÑwhFõè†8æÑ ͈cïèÆ;Änˆcë˜È<º!ŸeÝxG7Ä1qÄcâ˜G7æÑw¬cœñ‰8æ!ÍtcÝxÇ:Þ!Žy¬CóX‡8âñŽu¼có‡fÄ¡q¬Cñx‡84ÓyhæšéÆ;汎xÌ£šÇ:‚²qÌc"›é†fı™wˆcݘG7æ!ŽuÌCñÇ<ÖþÑyhFñ‡fÞ¡™ytãñ˜‡8ÖÑw¬£ïXÇ<Ä1͈cïXÇ;ºwˆcâÐÌ<Ö!Žzˆƒ3óèF<ÖñŽnlFó¨Ê;Ö!ŽyˆC3óG<º¡qÌcÇ<Þ!Žyhfš‰‡8汎yhæœÇ:Þ!ŽytãëG<ÄñqÌcâ˜Ç:ÞÑw¬cë€Ç8Ä1͈cïÇfÜ1Žwhfë˜Ç:&²Žy¬cëÇ<ÖáŽw¬CëèÆ:Þ¡qhf☇8æ!Žzl›éÆ;Äuˆcš™ˆfÞÁ™wˆ£ñ˜‡fÄ¡¨n¼cݘ‡8æ!þŽytC3ðÇ<Ö1n¬CñØL7Ö1nhæâÐŒ8|ÂqÌcîèÆ<ÄqÔC3îÇ;Ö!Žyt#›éÆ;ÖÑ ŸtcâÐL7Þ͈C3îè†OÖuÌC3âˆÇ;Ä1u¸cïÇ<º1qÌ£šéÆ:º¡™nÌCóÇ<ÖÑwtcïØL7æ±qÄCïXG"4óŽx¼#ñ˜#<0‰Ì£ëxG7æÑwtc똇88óÍÌC3ñÇ<º1uÀC›G=Ö!ŽyˆcïX‡8æ!Žutcâ˜Ç:౎nˆ#☇fÄ1uÌcóÊ;B‰þcäA 8ÞÑDÌ£ó¨Ç;vvàAðI<ƒä;€OÄÃ3À<äC 5܃:°Â<ÔÃ<Ôƒõ€~€O€~€õÕÃ<ÔÃ<ÔÃ<äÖƒO$Â1̃8ÌC7h†8¼ÃD¬Ã;¬Ã;¬ƒ8Ìï̓fÌÃ:ˆÃ<ƒäC=€C@0X_=øD=@€OÔÃ<ÎC=øD=ÄR=ìC$Ã]gÄ™§›‰ÖéfžÚº)²ægžwĉ§›wÄ™gqjgžuÄ©G qd§ÈyŠœGFqæ'žnÄ)2žyÖéæþB›§›yº™GœO»‰G qÞgžnĨ›yºygqgžuÄ™gqægwÄ™gqæéfžnæy§›Úæ)RÄ™§›uºygyÄ™Gœxj›'ž"ßYGœ"»™gÄ™§›Oũǧuº™GœyÖgžÚÄ™§›uæ‘QœyÖ™§›yÄ™GœxÞ™gn2G qŠ|Ç'àéfžuºhŸæé¦6qæY§qŠgžnÞé&řǧxĉGœuæygqæY§›yÖyg]&¨›wÖ mwæy§›w|ZGœxº™§›w'žwÖ§qÖñI wæYGœwÄ©þ§›"Å™'´uº™Gá íqæéFœuĨ‘‘8æÑwtC ó‘8dÔuˆcEzG‘àQ›"åfðQ7Þ±q¬ãé†8Ö!Žyˆ£H☇8æ±q¬£ï‡@|"Ž"½£óèÆ<ÄñqPâëxG<Þ€w˜C!Ç<º±Žyˆ#☇8Þ!q¬ã∇8ÖQ›uˆ#ÝxG7Þ±ŽyøD ï(Ò<ºñŽutãë˜Ç:汎w¬ƒM⨇8æÑ ¸CFâ˜G7ØFø"bÇ;dĈÜÄc;ä$çxL$ï¨t, u@Ç’óxtâ1þxä§óxÇ<â‘›xL$õpO=æQ‰Ä#7ñpO=ò3‘zôrñH„4Ä1wdâp‡Œº±qdJïXÇ<|"#qÌC™‡ŒÄyd2š‡8æ!ŽyˆcóðÉ:Ä1nÌCóÇ<º±q¬câ˜Ç;ÖñŽyˆcñèÆ<º±ŽyˆcݘG7d4n¬c"â‘;d$ŽyˆC Ý‘8æ!ŽyÈèÝx‡ŒÄ±ŽyˆCFïXÇ<ÖF#È<ıެCëÍ:º!HD"?ªPÿñŽ"½câXÇ<º!yÄC2Ç:Ø$£w¬Ã'ðXÇ<ıŽxþˆCFîÈ<Ä!wÌCóèÆ:æÑyˆcóXG<Ä‘©xˆc8â“"ÍCEÇ;æ!Ž"Å£ëèÆ<Ä1‘uÌC2šG‘Þ1n¼#4éÆ;ÖÑuˆcâ˜Çºæ!‰cóèÆ;B#ndjâ(Ò<º±Žw¬ãóÑ<ıŽwtcïˆ8Þ!y¼Ã2‡;2Ÿ¬c‰‡8âñ)Ÿ¼câ˜Ç:æÑLÍC™‡8d4ÚÄCóÑ<ºqÔÆ2Ç<Ä1âÍCïèÆ;ÖÑwÄ'óÇY‡8º€ză!x‡8Ö1nÌ£Áî(Ò;2qtcyÇ:Þ1q¬#ïXÇ<ºQ$qP¹ëèÆ:º1n¬cïXÇ;º±Žyˆcݘ‡8æÑwÌCÝ#Ž‘1ˆc2JtÞ!£oàã¹y‡{Þ1‘zdð˜ˆ8êzˆÃ=õÇ<Ä1‘uÌãâ˜H<Üy¼c"ñ˜È;ÌqqÌ£ÀœÇ;æaމ˜c"ï˜Ç;æñqÔcâÈM=⑈cDyÇ:Ä1w¬cþ2‚‡8â!ŽztcóÇ<Ä1nLD2‚Ç;Öá“ytcâ˜G7Þ±Žy¬cëèÆ:â1wtãݘG7æÑwˆcëÇ<ÖÑutC óèÆ;º1qPyóè†@ıŽnÌCóÇ;dnÔF óX‡8æ!ŽyˆC â˜Ç;|"Žy¬cݘ‡@Ü!qÌC!HÄ1òqDïøÇ;æQ›y¤"áþaÐÿaþA ÄaBãæ¡ÖaÖ¡ddžaæaÄAFžaº!ÞaÄA æAæA Üá`ºa"Ö¡ŠD¢âAÄaºa"ÖAþæ¡bÄA æAâadÄaÖAžAÞAFæAFºáÖaºaÄA ºaÄaº¡ÁºaÞAâáâÄaÖAæA ºAæA ÜAæ¡ÖAæA æ¡ÞAâaæAFÄaºAbÖÁÖ¡ÞA ÄaºAFºáÄaÖ!4Öá`ÄaÄaÞaÄajCæ¡ÖaÄAFºádÄabÄ¡Öá Þ¡H”ÀàÖÁÞaÖAB¢æA ºáÖáÄ¡6ÄadºA àAæaÄaºáÖáºaÞþA ÄaÖAæAæaÄAFÞá@FàAFÄA ÄáÖadÄbBæAæA ÄáÄaºaºáºaÄaºÊÞʺádäÖAæAFÄaÖAdDÂÄanpÆáÖaº¡6Ä!ÖaÖÄaºáÖa¯æAdDæáÖ¡ÄA ºaÄAFºaÞaBæAFÜaºaÖáÄaÄ!bÄaÞAâoPFÄaÄaÞA Ä¡HºaÄaºA Äaºaæ¡ÞA ÄaÄaÄA æá¢æ¡âaÄ¡ÁþºA Ä¡ÄáÖAOæaÄáÄaÖÁÄaºaÄa"ÄaÖA¨¬ÖaÄ!BÞaºaÄaºaºáæA¢æ¡ÂÞaºAæáÄaÄA ºaÄaº¡HÄaÄ!ºáºAFa"jc`æB HºAæ¡æAÞAæaà¡¢jCæ¡ÄaºAæAFÄA ÄaÖÞaæAæaÄabÖAÞá¬ؤâaÞ¡ÖáâáB ŽáÄàÖá×!æAæa&æ!æ!ÖaÄa"ÄaþÄaÄaÄáæ¡Öá&"ÞaêAæ!&æaæ! cêaê!êA&BêAæaæ¡Äáæáæ!&"æábÄáàA æAæÁ’æ!æáêAæAÞ¡æárC Þa""áÖaÄaâAæ¡ÖAºaæAÖáÖáÖábºaºáºaàaæAÖ¡jcºaæaºAFºA ÄAFºaÞ¡HºaæáºaÖ¡ÖMºaº!ÄáÖáàA ÄA æ¡b"Ä¡HÖáÄAFÞaÄ¡npæ¡Þþ¡ÖaÄA ÄÁ’Þ¡Ö¡Ö¡æAjCÞA B€Žá@ æA þ¡Ö¡Öáס"ápþaæáàa¢6Ö¡Œ!ºA ÔA ÖAdÄž!Þ¡j#ÄaÄáºA Þò@Ö!4Ö!ÄA ´ÁæaÞa,©Þ¡Äa"ºA æ¡bºaºaÄ¡ZÅažAÖAºaºA<@ÖaÄ¡Þ¡æ¡æA â¡Þ¡æAæAªU êAÞ¡æA<@ æA n°6ºaæA ÄaÄA â¡æAÖaÄaþÄaÖA<`ÄA âáç¡HæAÖaBÞ!Äá`ФæA º¡6ÄAF´ÁªuÄáBââàÖÁB€BâçAŠäºaÄA ÄaÞA ⡊äæAÖaºaÖAÞ¡æAÞAºaÄaºaŠD´ÁæAºò ZÅabÖaÄ¡ÖAÖ!Äanpd¤æAâºA âAÞ¡æ¡ÖaÄA æAddºaÄáºaÄanpºaæAæ¡æAFÞ!ÄaÞa&B ÄA ºAþFÞ¡æá×áºáÖAÖAbºaÄaºA æAæáß!ÖaÖáæaæAŠDÖaBæAÞABÖa¢ÖaÄ¡Z'Â’ÞÁb"4êAæaº¡ÄáºáºA æ¡HºA æAÞAæ¡bÄ¡6Äaæ¡ÖaÄáæAæáãAæ¡HæáàA æAêAæ¡ÖaÞA Äáâ¡Öa¢æAbÄaÄabºaºaæ!ÄÁm‹yºaæAÞaÄáæ¡ÖáºaæAd¤ÞaÞA&þBæaÞaâAÖ¡(aºaÄa`êBbÞ!ºáº¡6BÖ!ÄaÞ¡HÞ!Ä¡6ºbÄaBÖ¡æ¡æáç¡êá×aÖ!Öan°Ä¡HÞ¡âBº!Áò@ ÄaÖaÄÞa"àaÄa"Þa"Öa"Äa"â:êArcÄ!7Þ!æáæAæaêA&BæAæáêaæáâaÄa"âa"Äaâ¡ÄaÄ¡ÞAæArÃâaÞ¡Ä¡âaÄaÄ¡Ø:jcÄaÄaêAþæa&‚Žaæ¡æA Ä!æAâ¢ÖAæ¡¢Þ¡Hn0ÞaÄaºáÄAFæÁmçaàáBæ¡æáŠDæaÎrÞ¡âaæaÄAFÄaÖáßAæ!4ÞaÂÞA æAÞAÖábÄaÞA æ¡æaæÁmßaæAâaÄ!ÖAæAB |!@BÞáÄ!ÖaÞA ¬!öëáÄaÄaÄajÃ`æÁÞÁàºA&BæaÄáànpæaÞA Ä¡ÆáßaÞaæ¡þbÞá@æaºaÞAâaÄaÞaÄaÆaÄA ºáÖaÄ¡ªUžAÖ!âžAæAæáÄ!ºA ÄaºáBddÄAFn°6ÖáºážaÖ¡æAæ!ÞA ÄA ÜAFæaºáÄaÄ¡HºaÖá 6ÄaÞaBêá'¢ddºáæá`ÄaÄ!ÄaÄáºA æaàážaÄaÖABæAæA ºAæAžAÖáÄaºáÀmçA æaÄaºaÄa"bºAæ¡æAæþaºAâºaºAFæAâAâáŠ"žAjcÄ¡ÄaÄaÄaºA æA æ¡æ¡âÁm»a"ÄaÖAê¡ÞaÞ¡âABæ¡æaÄaÄaÄaÄ!ºaºá桘ÅaÄaÄA æ¡æ!4ÖAâaæaÄaÄaÖAÖ!æaÞaÄaÄaÄaÄaºaºáÖáçA Þáç¡Ö¡¢&B ÄaÄA Üaº!jcŠDæaÄA æAæanP ºáÖAæ¡ÄajCFÄ!ÖáÖáþÖáÄaºaÄaÖá¢Þaæ¡âaæ¡ÞA æAÖáÄaÞaºaºa"ÖaºaÄaÖ¡ФªuºAæA ÞaÞ¡Z»a¢âÄaÖ¡Þ¡âábnpÄaÄaÄaºáÖ¡âaºádDæáddâÖáçAŠDæ¡æAâa(A ÞaÞ!Ä¡!nPFÞAâአ޽[7OÜ:qóÖ‰[÷nݺwëÄÍë¶NÜâ0ë0âÐ óÐ ë0ñ ïÐ =ñ1ñ@>â0âàóÐ ó =Ñ =1â°õ ó =â°ó ó°ï ó°âà!ó ÝþâÐâ0ëðÝ0â°î°!ÝðâÑ ë0âàó°ó°ïÐ î0ëÐï°ïÐ ëÐñݰÝ0=!=!Ñ ëà=!ññ ëÐ ëð!ï =!ë0â°óÀñ ïÐ ó ï°ñ ó ó !ë02Ñ õ ñ óÐ ðÐï óÐ 1ëðë Ý ñó `ó@ !àó 1!ë ëðî°óàâ0Ý0ÝÐâÐóÐ ó ï ñë =Ñ â!óÐõ ëðÿãþó =21âÐ !À¾bàïà” ó°ó°âàð ó°ó°ï0â0Ý!Qâ°ݰâ°óàÝ0=1ï ñ0=1!ó O!ñàï0ë0ëÝàó ñ€ëÐ âðë ëðâñ2Ñë ñ0ë ó óÐâДp±Çðì!ó ó ó°â°ï 1Ý0âàîàâ0=1ë ëðââÐâï ë0ë0âàâ0ÝàóÐóÐ =Ñ áÝ =!óÐ ±ï þÝ ââ âÑ ï ²ÖïÐ ë0Ý0ë ! ǰó°î°ÿ ó°óàïp ‘ð† 2ÿ ë ó ÆÔp Öp œßð 0ÏÝðëð ðϺ0â0=ñ Ð Ï ïàÏ ëð Ð ñ°Ï¢; Ð Ï Ý°Ýð °ï°Ï âð—ð м°Ï âðóàÏ 21â° м 0ëð °ï0ÏÝðëð ðÏ¢Û °Ï ë0ïÐ ›ðp’ðÝ óþÐ Ï0ëðëð  Ïßðë` °Ï0Ý â°ãp ` óð » Ð Ï ïð »ðÏ1ï°Ï Ýðëð » °Ïëðëð àðÐ ëð àÏÝ0â` °Ï ó ñÐ óÐ ïð »0ïÐ Ï6ðëð » Ï1ëÐ Ï 1Ï0ëð °â0Ï ëð Ð ó°ÆÝð ðñ °óàë óÐ ïÐ !ëÐ ëðëðë0âݰóÐÝ0þÝðñ0ë ëÐ ïÐÝðëð!ñ°â0Ñ ñ°21Ý0â0âÝ0ïàâÐâ0â0âÑ =!óÐ óàâ0â0ÝðÝ0!â0ݰâ0ݰïàó óàâàóÐ =!óÐ óàó Ýð1ëÐ ï ñ0ë ó°â°ïÐ ë0ë ëÐ ëðâ0ë óðâàó°ݰâàï°Ý0âÐ ìÑ ë ïàóÐ â1ë ó°Ýðâðë óÐÝàó âï0â0ë1Ý0þâ0!ëðëðÝ ë0Ý0Ý01=1âàóëð=ñë ó áâ02áóðë@ â°â 0õÀ! =1Ý ó ÝàðÐ óÐ óð?ë0â0ݰÝðëðë1ëàï°â0e»áÝðâ0=1ë€!ÀÇbàݰâë ó ñ 1!Ý Ý0Ýàñ 11â°îÐÝ0â°ݰï°ݰÝ021ïÐ ë ó ëÑ !ëðëÑ â°â€Ý0âàõþ Ý0âï°â0!ë0Ýðݰó ï021ã°‰”p ëë0ë0=1ë ó ëâ°âðâ0â°ïàïÐ 1Ý0ë0â ë0â0ë0âàÝÐõ óÐ =Ñ ó ë Qâ°ó ï1â0âàâàâ1âàóâÐâÐñ ë0Ý0â°îÐï0âð1!ÀÇð°âàïðóÐ ëÐ ó ëÐ ‘ ¸ 2û°ó°Ý=a 0ï°ñ` °Ï þâà ݰº â  à âàóðÝðî°Ïëð ðâ°Ï ëð ðâðÚÎð?ë ëð ðó°ÏâðÝð ðÛ’°ß` °Ï Ñ ñ ðñ à‹ë` °Ï ëÐ âà ¡  ÚÎ ëðëÐ Ï ó Ýðëðä ïÐÏó Ýð ðÚÎðâ °Ï=Qââàï@iâ  à ëÐ ãàÏ â  à â°â0ï  À Ñ ëðþ â°ÚÎÐ ã°â°àÎÐ ë  PâÐÏâ°ÚÎÐ ó °Ï ë0âðÝðë  à ëÐ ëðëÐ ä°9´ðÚÎ ãàïÀ ó ëðÚݰÝ` °Ï ó°ðð °ÚÎÐ ë °Ï =ñ °âàóÐ ï°ñ !ñ Ý0â0Ý0ëð!õ ïÐ =Ñ ëâàâ0âðó ë ó°ó ï°â°ï õ°óÐ ï óÐ îàâ°ïÐ ë óþÐóàó ±NܼuëÄÍ['® ¸uóºÍ7OÜ»nëæ‰÷NÜ;ŽâÖÍWpÝ»nëæ‰·nž¸uóºÍë¶nž8‘ëæa|7O¤¸šóĽ›×­æëˆÃÔOëÔsÔ<â¼Ï;õˆSQ7ïÌ#Î:þusÐ;u38ë̳Î;âÌÏ;ólÈT7óts8ݬ3O7ųN7ñˆóNe󈳡8ð¬38ï¬S8óˆÓÍ:¿sÐ;ÝÌ#Î:ï¬#Î<â¼#Î;âÄ#Î:âÄÓÍ;­¾³ÎQLÍÓêAï¬óÎAݬƒ‘8ëÀÃT7눳Ž8ó$Î<âÌsP<ÝôÓ;ݬ38óÄóN7ëÌóN7us8눳ÎOëÌ#Î<â¼ÓÍ:ïµÎ<ët³Î<â¬38ëˆ3ÏAïT68ñµÎ;ݼsÐ<â8ët38ñˆ³Ž8ÝÔ#ÎAâÄ#Î:óˆ3Ï:?Í#ÎOñ0%ÎAÞ±ŽwþÌã ó8 SÞ!Žy¬£óXÇ;ÖÑ¿¼ã GyÇ:âq”ƒˆ#â˜G7Þу̣ïX‡8º1n0#ݘ‡8Þ!¦¼CëGeâ!Ž¥¤™‡8æ!Žƒtƒ)G™ÇAÞqy#™‡8æ!Žw¬Cóx‡8"ŽuˆcñGEÄñŽƒˆcïèÆ<"Žƒ¼£똇8æ!Žƒüdóx<6ÔƒÌã(™G7q¼£ÇAౌˆãÝXÇ<ÄqqÌcbó8ˆ8æqwDïXÇ;"¦ˆã ñÇAÞ£¬£õÇAæñ—yˆƒ)óG7"Žyüþeâ˜ÇAæ!Žyåݘ‡8Ö1q¬ãLéÆ;ºq¼£óÇ<º1n¬£ëèÆ<º±ŽyäÝ8È; ÍCyÇQÖÑyˆã óèF<º1ƒt#âèÆ<€yˆƒ!`Ê;Öq”wˆcݨ‡82qÌã(ëxÇ:*"Žu¼cóÇ:汎yˆcã˜G7æ!ŽyˆcóÇ:æn¼cóèÆ<º1n¬ãëøI7Öñ“V­CÝ#Žñ1¬£ïˆÇ;qqäàÅ<Öq”y¬ïèÆ;ºqqÔãéÆ:æ!ŽytCóXG7ÞÑuhÃþLy†ÖŽ<üDóX‡8â!Žyˆcë€Ç;º1ƒ¼cÝGÄÑyˆ£ë˜ÇQÖÑyˆcÝX‡8þr”utãцæÁ”yˆcÝxÇ:汎n¼Có8ˆ8"ŽƒˆcâXÇ<Ö1¬ãXÇ;Ä1n0EÏ€8æÑy¬£Ï€8x(Ô‰#âˆÇOıŽw¬cݘÇ:Äñq`dóèÆ;Ä1n¼£óG=Ä1ƒtc?™‡8æÑŸÄã õÇ:Äu¼ã/óÇ<º±ŽxÌcݘÇ:æÑwˆ#Œ8FpwÄãÿX‡8êÑ¿¼cþâˆÇ<ºqwˆcïèSZõqÔ£â¨Ç:º‘n¬CóèÆ:ºq£Ìcâ8<ÞÑw¬cëxÇ:ºñŽ¿¼Cñ8ˆ8æq”ƒˆ£â˜Ç:àñŽuˆƒ)ÝøK<æñŽx¼CóÇAÄñqÌ£2∇8â1w¬ãëøÉA~rqäéSıŽnÌã G™ÇAÞ±ŽyˆcݘG7æ!Žy¬£ïÇ<ºqw¬CéÆ:ÞñqÌã/óx‡8æÑutãL™Sæ±qÌã ÝxÇ:Ä1qÌã/â˜Ç:Ä1nÌã YÇ;r”x¼ƒ)óxG7Þqy¬ãþ™‡8ⱎyˆcéÆ:Þ±q¼ã/â˜G7æÑƒˆã Y‡8ÖñŽn¬ãÝXG7~"Žyü?YÇ<ºuÌã ï8È;ÖñŽuˆcï`J<"ŽyˆcÝ`Š8â!Žy¬Cë˜Ç;æ!ŽyL,óX‡8æ!ŽyˆcÝxÇ:Äñq̃)âˆÇ;Ä1n¬CëèÆ<ÖѪƒˆcÝxSºÁq`ä âˆÇAÞñ—Ÿ¬£‡8汎weë˜Sº!Žutãâ˜Ç:ÜÁqÌCëÀÈ:ºñŽuˆƒ)ïG=Ö1ƒˆcÝxÇ:æ!ŽƒÌã âxG<æ±qÌã/â˜þ‡8ⱎwˆcÇ<Äwˆã óXG7‚¦ÌcÝX‡8æÑ ¦ˆcÝXÇ<qü¥éÆ<º1wÌãÝøË<Ä1qÌãëxÇ:Þ±Žwtƒ)ÝxÇAÄqÌcÝX‡8˜r”yˆcâ˜G7æqnÌCñèÆOæ±qüDëx‡8ÄC7ÄO$B<„8¼CÌC=0B¸ƒ8¬ƒ8ÌÃOTÆ<¬C70E<ÌÃAtÃAÌÃQÄ»­7ïâ‰óN7ëdµN7ffiÒ<Ý„È1yˆ1O<â¬#%ï$4O7ó¬ÓMBâ¬#Î:ót38ë ”•8ï¬óNBâ¬38óˆ38óˆ38‰ÓÍ;ót3Ï:ó$OBóÏEâ¬ÓÍ<â$„Ò<ïˆ38눳Î<âÔƒÒ:ït38ëˆ3Ï:ï$ÔÍ< ½“Ð<ݼÓÍ;눳Î;Á“P7óˆÓÑ;Õ#NVót3O7ót38 u38ÝÌ“8ëd58ót³Î<ëÀ3ÏEY%4Ï;Ý̳Îþ<ë¼³Î< ÍsÑ<ïtóN7ó¬8ï$ÔÍ<uCÞ:ó ´N<âÌ#NBï¬8ëÔ#N<âLÕMBóˆóNB󈳎;!0r̬#Î<ât³Ï:ï¸,Î<â$$Î:ñˆ“Ð;ë̳Ž8ïøô<ëÌÓMBó$4Ï:ïtO7ïtóN<⬓UGóˆÓÍ;ëÌs‘8óˆsÑ< ‰óN7ð¬38óÄóN7ñˆ³Î<ëÌ“P7ëÌ“8 ½ÓÍ<â\ÔOâ¬óNBÝ̳Î;݈38ë̳N7ëLEÞ;ݼ“J ½#Î<âd•P7ïtóNGâ$8ï¬óÎ<â¸ó°óÐ $á!ñ !óÐ ë Ý0$Ñ ó ëâ°Ñ I!ë0ÝPâðî!ï°î@Ý ïÐ ë0I1ïÐ ïÐ óÐ I!ó ë0ë0ââ0ݰïó ó°ó $áî1â@óÐ IÑ ñâÐ óÐ ïÐ ð°ó@óÐ ññ ó ó â@ó âPâþ°ÝPâ0Ýðâ°ó ó°ó°â°â0â@ñ@ëðñ@Ý01âð$ñÝî1âðÝ0ëÐ î ó ëë0ëÐ ó Ñ ëݰóï ï0â°ÝPâÝ0Ý0Ý0ëðëðÝ@ïÝ0Ñ $ñóÐ ë ñðÝ0â°ݰð°ó IÝðÝðë ëÐ ïÐ ñ$!ó ë ëðëóàÝ0â@ï°ï0$1$1ë ëï°ñ Ýâ0”â0þâ°ó°ó ó 1â°ïÐ â0!ïÐ óÐ ó óðÝ@âðó@ïÐ îÑ ó ð@óÐ ó ó !ó ݰâÐ !ÀÇb°âï°”ð4I1â0Ýðë $ëÐ óÐ óó ë ñÝ0ëàÝðñë€Uñâ@â°â°Ý0â@âóð$!ó Ý0ë0ð 1ð Ñ ïÐ ó°â0Ñ ï0ë ó°ð Ý`+â0Ýï0ë0â0â0â0âIÑþ $!ï@ó ð@ó â ó $ñâ0ݰï°ï°41Ñ ï î!óÐ ï0â0ëÐ ë ñ0î!ëðâ0ݰó 41â0ï°óÐ ïÐ Ñ ‘â0ÝðâÝ01â”p yï óûðë 1HÆÖ0â`â°ó°ââ@â°Ýâ0ëÐ óÐ ó°â°ï°ïð  â0â0âðë ¶2$Ñ ó 1ë4ï°óàÝ0ï ñâ°â ïð ð!ëþ ó°ï0ë ïÐ â0ë0ëÐ ó°â î°â0Ý ¶Ò ó°â0$!Ï â0â!ó@ó°âðëð1ï âPÝðë0ð $â@ñ$1ë ã$!Ñ ë ó ï°ó°â óÐ óÐ ó°ó°â ó ñ ñ óP>óðÝ0ë 1Ý â0â@â!óÐ ëÐ â041îÑ â°ï õàp1å341Ñ I1âÐ ë óð ï@ð°âë ï°â0þAó@ó°ð ñâÝð$$AóÐ ëëðë ëÐ ï°ï°â°Ý0â0âð$ëÐ ë0ë@ï ó°â0â04ñÝðñ°ï ñ°âàó°â@ó ó p!óÐ óóð$ñâîÑ 1ëÐ ë0ë@!IáïÐ â0Ýðâ0ë óðë ó°ð 1ïÐ âï@1ë $Ñ ñ0ãÔ ëðâ óðëðëðÝÝðÝ ó óðë ó°â0Ý Ý0ëðþ!óÐ ï ó ó°â0ë0âðâ ó ó°Ýðëð$1ï ñ óÐ !óÐ ±óÐ âðâ0ëâ0ë ó°óà!ë óÐ $!$!ï@ â°¶óPŒâ°Ý0ÝëÐ â°ݰâ0Ñ ï0âIñ!ïÐ ï ï ó Ý ó ó óÐ óÐ óÐ ï°â0â Ý0Ý0I1ï0ïï‰p y ó°ó ëâï°â0â0Ý0âó ëðâ0Ýþ0ݰó $1ë0â°ïÐ ëë ó p1ñÐ ë0â°ó ë0âðݰó ó ݰâ°Ñ ó óÐ ëÐ ë0â0âï°ï óÐ ó Ñ ó°ݰï $Ñ ë0Ý ƒ4â@Ý0â â@Ý0â ð°!ó â°ã0â°Ýóàõ ñݰóÐ ññ Ý0â°ð°!ïÐ $!ï0$Ñ ó ë0ë0ëðݰó@AâÐ ó ñëÐ ï0Hð@óÐ þï@ïÐ !óŒp $!ݰë $ñÝ` Ð pPÎ Ï J0°Û ÀrÝðäP /ð ëÐÐp I!êP /ð â  àÝ€°Ý Epðß ë  *pÀâð °óðÚ0ÝÐÐ p Ï ± *pÐÝðÏ lР¼ð$ñë*pÐß Ï J0Ð Û pr ï°äP /ð óð  `ë  HÐ ó ݰóðëðó þݰï0âàó0HëÐ $!ó ó ó !ëðÑ ë0â°Ýpâ°âðÝðݰݰñ óÐ ó ó°óÐ á$!ëðÝpâ°Ý ó@óÐ ó â°óÐ ëp1ïÐ ëÐ ó ë0ë0ââÐ ó óÐ ëÐ ë0âï0Ý ï°ðï°ó ó ë0â@â0â°óÝ0ïâ âp1ë 1â0â0ëâ°ó $‘â°ó 1â ïÐ óÐ ãâ0âþðâ°ó@ó°ó@óÐ ó ïâðë a+$$!IÑ $1â0Ý â0â âïÐ ó ó ëë0â@ÝpïÐ 1Ý0âñP>!nž¸uïÞ‰·nž¸uâÖÅ3ø.Þ:ŠëÄQœ'î]·uâæ‰«¸î]ÈnëÄQ·.ž¸wëâU×m^ÅyâÖÍ[÷nÂuóæu›r¸uÝæu›·.ž¸âÞÍ·NܺyâÖ½[7¯EŸÝÞuë6O\¼wëÞu[÷n]·Šâº½gpݼnBÅÍ[7OÜ<Љ(Î× €¹y”BÌ[÷®ÛºyþâæQœWQÜ<ŠâÞu£8OÜ:qó„R|ï3ÅyÝæ‰[×íݺwñÄUœ×í]·yâæu['®Û:qÝB0:–GŒ¸uïÖ½KDQ\»Í['n8ƒââ­ëæqæéæuægnÖéfžnÞ'žuº©èuÄ™!qæY§›uÄñ‰¢n(çuægžwÄYçuæ1HœuæYžwĉçŠæYGœyºñIœwÄY§›wBšGŠæ¡HœuÄ™GœŠægžwÖéæu¢Hœyº™Gœuæþ¡¡ÑÖG¨n橨qæygnÖ™gnæ IœuæYGœuÞ'žwÖgqÖyç3qæY§›yB`ä˜<XGœx úgyÄ™GœwÄ1€næyœ_Ö!†ºyæ€+Æ1(¾!(JájЇwž@ŠàgžwºIá„oЊ:IÀ™#,˜gNø†pXgžNèSæyF°Öyf€wž`wÞyF€uÞI…q¶Ù‡už€ˆoÖ C‚uÄ™§qÞIá„o¶Ù‡yž àŠqÞ™'¾!Öy'…Ú!ºy&€ ÞAg]ø¦›xþ(êæq(Šçn(gŠÄ¡èqâg¡àgžuº¡¬xÞAˆ"q(šgq(šgqâYçqæ9snÖ™gwÄ™G(°æYgŠº¡žnÞgŠæéæuÄéfžuº¡hžuº™GŠà¡HœxâgžnÞYgq(šGœyºY§›uæ§"qægŠºYGœyÖÇ qæYGœxÖ‡¢n*šGœyÄ©¨›yÖgžnB‡"„â¡HœuÀú¬ŸÄ™çq ZGœyÖgn('ŠæéÆ'ŠÄYGœyºy§›wBšgqêé¡yÄ™gqæ¡hqæ žnÞYçþŠºygqâÇ<Öu¼CóèÆ<ÄñqPdâ˜Ç:Ä!qTäâèÚ:B‘x¼£ïXÇ<Ö!Žut£"â˜Eæ!ŠÌ£"☇8æ!ŽytcÇ<ÄqÌcó¨È<º1мCóÇ<º±„ÌC™BÖñŽn|fëèÆ;º!ŠÌcð¨H7Þ1uˆC(Ýx‡8ê–wˆ#Ç:ÄAq¼£"ó€Ç:âaqP¤ïÇ<ÄñqÄCëèFEÄñJˆcïˆÇ:0z0"â˜Ç;ıŽwTâ <Ä1ÌC™Çgà!Žytcâ˜Ç:Ä1þŠˆƒ"ÝxÇ<Þ!Žytƒ"óX‡;ÖñqÌ£óèÆ<(uD$‰8FÄP„Pbó È<ºñŽn¼câðI7(2qÄCëx‡OÄ1nPäÇ<Ä1u¼£ëxÇ:ÞÑw¬Ã'ó EıŽyTäë˜EæÑwÌC똇8â!Žxtãóˆ‡8 2nÌCë˜Ç:抈cóxXê!ŠÌ#☇8("ŽŠˆcâ‰8ÞÑ Š „"â˜G7(Òy¼#$ݘ‡8æ!ŽxˆcÝ È;抈cݘG7BâŠÌcÝxGHÄaytc☇8Ö!þŸˆc☇8ÞÑyˆcó B*"Šˆƒ"ó¨ˆ8*òŽuˆãñEÄ1qÌCð˜GHÄ‚HÜâXÇ<º1qìcݘ‡8"bŒtcâ¨7ŒA€u<ßx‡8¶g¼cº8€8À^Ä èÆ3°ŽyˆcïèÆ:À^tcÆHÀ:æÑ#\€ÎèÆ6À‹n¬Ã Ç6À‹yˆcÝx† ²Žg  ÏÀ:Þ±Žg`Û/ÖÑTÏÀ7Öñg `óÇ;Ö¡8ãâHºñ |ãâØFx1Žq¤Bâx!Žwþ#óx¾ñŽuˆƒ"ÝxG7æ!Žyˆ#â ˆ8(2uˆcóXG7ê!Žxˆƒ"â€GE "Žu¼câ˜EÄñŽuÌCÇ:æÑytc8*"xPDG<ıq¬ã™‡8Ö1wPDݨ‡8Ö1q¬#â ˆ8æ!ŠÌ£"âXÇ<23½céÆ:æ!ŽŠÌCóèÆ<(2q¬£âXÇ<(Òyˆcó ˆ8ÖñŽu¼£™‡8*òŽuˆcݘG7(2q¼£óX‡8Þ1q„Ä'™‡8Ö1u¼cð È<ıŽnT¤ñ@ˆOº±Žwˆþcó¨ˆ8Ö!Žw€ë˜Ç:æ!ŽÏÌC!‰Ç;*ÒxPDóèÆ<ºáŽuÌCëxG7Ö!Žyˆã3ïX‡8BÒŠ!Ç;à!”yˆcâxÇ:æ!Žyˆcâ È< Rq¼câX‡8(qÀcÇ<º1q¬£óÇ<(2nÌCï@È:汎w¬ãÝXG7*Ò ŠˆcóÇ<º1q¬c8æ!ŠÌcóèF<ÄuÌCyÇ: Šˆã☇8(ÒyPd☇8â!Žw¬Ã ë˜Ç:ÄQ‘yPdïÇ:æ!ŽnPäÝ È<Ä1uÄCþóG<º1u¼ë˜EQ‘n¬#â¨%B°q„¤ó‡PÞŠÌ£óÇ:ºuÌCóÇ;Ö!Žˆtcëè<汎yˆãëÇ:ÞшãâXG<ºñŽn¼£ë˜Bæ!Žn„€ÇȃÄ1uÄc”èÆ:º±Žw¬ãݘÇ:ÄAqÌ£Y‡y‡uèŠx‡u@ˆu‡yX‡nx‡u‡ux‡u‡yX‡wXqX°0ˆy ˆyè†y‡yèqXqX‡nx„˜‡Š˜Šx‡uè†uxqX‡n¨ˆyèqX‡nXqð q ˆw ˆy‡uèþ†Š˜qˆ‡y¨q˜‡Š€Šx‡u˜‡w˜‡u˜‡Š‡yX‡n‡y‡y ˆn˜‡n˜‡u˜‡u˜q˜°Xq˜qˆ‡nx‡nxq˜ ¡q ˆw‡yXw q˜‡nx‡n˜‡nð Šè†yè†yè†y‡y‡u˜‡n¨ˆx˜‡Ï˜x芟‡yè†yxq ˆy ˆn¨ˆw‡y‡y qF8†<€nxqx‡y؇‡yXc€nx‡u¸„h€f€uxè†w˜‡gqxqxX‡g€ Ç`€uxè†xx‡ux‡ux‡gpÇþ‡wè†gø†x0€Ç `€wxø†w¨ˆg€n‡yx†X‡g€Šx†X‡gŠèc€nx†X‡wè†g€n0ˆu‡g€nXq0†X‡g€ux‡yxX‡wX‡g€ux€Ç`€nxøŠ‡yXƒ‡yè†w ˆy‡w˜q¨„˜‡wX‡wX‡yXq˜‡Š‡w „8“nð q˜‡è†yè†uè†u˜‡u‡x q˜‡u˜xxŠ˜‡Ñ˜‡n‡y ˆy ˆy胇wø qŠyèŸ@ˆyXw‡wXq qX‡wXþq˜Šp‡n q˜‡n¨ˆw‡u‡yX‡nX‡y膊˜„ ˆyX‡nx‡y‡y‡yX‡n˜‡nˆŠ€¡x‡n ˆyXx‡uè†yèq˜‡u膇uŸ‰wX‡w˜°xq0ˆu‡y¨ˆy ƒXqXq ˆy¨q˜‡nXq˜Š¡‡y‡yè†yè†xx‡uèƒX‡wX‡y蟠q˜‡uèqˆ‡u‡yX‡wX‡yXq¨q˜q˜Š‡y‡yXq q q˜‡n˜Š€Š‡yŠyX‡y@ˆwX‡n˜q˜‡nx‡nð‰uè†yèþ†yX‡nx‡n˜qø§nX‡n˜‡nx‡u˜q˜qˆ‡Š‡uxŠè†u˜‡nX‡nx‡nð‰uè†uè†wX‡wXq ˆyXx‡y qx‡Š˜‡u˜‡uè†u‡˜‡ŠŠè†u˜q˜‡u‡u‡ŠŠˆ‡u@ˆx q˜‡n˜‡n˜‡nx‡ux‡n˜‡nXq wXJ‡ux‡u˜‡˜‡z`„˜Š‡yX‡nˆ‡wXq¨‡Š˜‡uŠè†yX‡wXq q˜‡u@ˆyXqX‡wX‡nX‡nxq˜‡Šxq¨‡nX‡yX‡w ˆw‡x q ˆyX‡wþˆ‡wF8†<ƒyè†uè†u„yX‡wX‡n¨qx‡n˜‡Š˜‡nx‡uè†y膘„ˆ‡uð‰n˜‡˜q˜‡w膊˜qX‡w˜qè†u˜‡n˜‡n˜‡n˜‡uð qx‡u0ˆn¨ˆn˜qŠx‡xЇy ˆyX‡y Š˜q¨ˆy‡Š˜‡n˜°˜q˜Š‡y‡uxq¨ˆnXqè†yè†z qx‡Šè†y‡yè†wè†uè†yè†y‡ˆ‰x‡wX‡yŸ ŸŠx‡n¨ˆy‰xè†wèw ˆw膈‡nX‡y‡u˜q¨q€‡þu˜qXq¨ˆy ˆn˜‡nx‡nX‡w ˆn˜Š˜qŠnp‡u˜‡`„[øƒx‡ux‡nX‡˜‡n˜‡u˜‡nXc€uèuIX‡o0X‡g€wXq؆pqx]€wÐp†nXqxqx q qXmg‡nXŸXrØ€^X‡mg˜‡nŠÐ†à…u˜qXm€w˜‡n0†X‡g€up‡ux†mg‡wH…X‡g€y‡wx†x‡n˜qXmgð‰TH€uxè†u‡mg ]€uІpþq膊xˆqð‰n qx‡nx¡˜q¨Ÿ qx‡n˜‡nð‰nX‡z‡Š˜‡wˆq€‡u˜qŠn˜‡n˜q ˆwè†wX‡w˜‡n˜‡Š¨Š‡nX‡n q˜q x q˜‡wX‡n˜‡n ˆnX‡y‡w w¨ˆyxwX‡y‡uèŠèŸè†ux‡x@ˆu˜q ˆyŠŠx‡yè†y ˆn ˆy‡ux‡yX‡n ˆyè†w€‡u˜‡n˜‡w¨q膘qXqX‡wè†wè†y‡Ñxx qxŠ˜‡n˜¡˜q ˆyX‡n‡y‡yþ@ˆŠx‡x‡w‡u˜‡uè†u‡uè†yŠ0ˆu€‡Š‡y‡y‡uð‰n˜q ˆy‡u˜‡wè†yè†wè†wX‡w‡u˜„Xqè†y‹zЇyX‡y‡wЇnX‡y‡w‡yè†yè†ux‡xè†yŠ˜‡n˜‡uxw‰n˜q qX‡y‡y芘Š0¡x‡nXqxŠè†u˜qx‡ux‡nXq˜qxqˆq˜‡n˜‡n˜„p‡yŠwX‡nX‡y ˆw‹Š˜q ƒpЇux‡u‡n˜qX‡y‡Š‡u‡u˜þxX‡y‡uè†u˜qx‡y‡u˜‡n˜‡n Ÿ‡uð qX‡y‡wˆ„X‡yè†w‡wè†w˜qX‡wƒˆq¨ˆDX‡y‡uè0‡y „Xq˜ŠŠ‡y ˆn ˆn˜‡u¨qx‡n˜q0q˜q˜‡wè†y0ˆu‡u˜qX‡wX‡yX‡wè†y‡y‡wX‡x‡n q ˆwXq˜Š˜‡n qè†`„cÈ1‡yx‡u˜‡@@ˆyx‡ux‡€qX‡w¨ˆnx‡u‡yX‡nx‡x qè†wèq˜‡u€‡nXq˜‡u@ˆzè†w˜þ‡nX‡w˜q ˆnx‡nx‡n˜qè†wX‡y¨qŠy‡y‡yè†wX‡y‡yX‡n˜‡uèq ˆw˜q q˜q ˆyXq ˆnˆ‡u‡y x ˆyXqxq˜qx‡u˜Šx‡˜‡‡xX‡w q˜qx‡nx‡u‡€‡ux‡u˜‡nx‡uè†yè†uè†y‡zè†w‡w‡‡uxqˆŠ‡yXq˜q‰nXqX‡y wxŠèŸ q˜q¨ˆnˆ‡uxqXq˜‡u‡uŠ˜q˜‡n˜ƒ‡u‡`„cȃ‡yxqþx‡X‡n˜‡nxq˜c€nxmgxr X‡g€u0ˆuHø†m ˆ8jˆrЃy‡p†u‡zx‡u˜‡uHø†uØ=‡x` è†8H€oX‡8orÐqX‡8j@SxtPIèt€Xpg ˆg€wX‡`o؆ Àux¨ˆg€w‡x˜ŠH †mØø†g€uˆˆ‚uxŠHø†uhLè†gŠè†wÐ$ø†yxЇy‡y芇z‹yè†w‡wè†w‹w¨ˆy‡þy膊˜w‡yè†wè†yè†yXq˜‡wXqX‡n¨qxq¨ˆx0q˜‡uè†y‡yXq˜‡u膊è†w‡yXq qx‡u‡y芊˜‡u‡yx‡n qx‡uxŸè†u˜q ˆy ˆyX‡n q˜‡uxq˜‡nxq˜‡n q¨‡nxŠŠèŠx‡y‡yè†uè†w˜‡ŠˆwëÞu{·NÜÈ"»Ï±ûì³ì±ûDKí²û »OµÚnkì>Ñîí>Èîcì>ÆîÃ-·ûü³OºÕîóÏ>Çîcì>Äîsì>Åîsì>ÇîCì>ÛîSì³ÄîóÏ>ÿìã.µû¤»»û»OÃÇî“î>ÛîSì>ÄîóÏ>Äîc±¶û»±û»²û»O±ýT»OÉÅîS¬/ÿÌÓÍ:‘ÌôSâŒÃM6ÖˆþÓŒ5‘¬#Î;OÍ#Î;â<8ïÌ#Î<â¼ÓÍ<ÝTé•Î#N=ëÌóT7ót3Ï:ó¬ÓÍ<â¼óÔ<â¼ÓÍ<â¬3[UÖ#Î;ݬÓÍ<ë¼ÓÍSó¬óÎSÝÌóN7O½ÓM<âÝÍ<âP)Î:â$âÖæ±x,åËÚG±öQ­dþ*óû¨Ö>–I¬}@S™û@Ö>–µikÕÚDZöA­}kÆÚ‡2÷­}kÄÚ±öñ}$sÚ¬§=‹µhí£Zû Ö>þ±ìYû¸§A‹µƒîãû@Ö>´¹cíãû8è?ö1Í}ücËÜG´öA¬}Xô²ØÇ;Ä1HMïXG7Æ!ŽlHCÍ8%Þ±qÌ£OyÇ<ÄñqÖ!*ÝÂXû0è>F­}« Næ>’¹hí£Ô ÞÇ=ë±Ì} k¬®µ­o¬}(³#ÝÇA÷Q­} k¸†æ>ˆµzî£Zû€æ-þ!Žwˆƒ@‹•ÄAqdCÍhF$Ö!Žyˆ£MëðI$|JÅ'‘H„P( ¡D‚þ‘ D$„ J|"B‰Ä»#!”Hø(”ˆ„P‘ˆw+|ᔈÄÂ#á“yˆãëÇ<žÒuˆ#ÝxÊ<ºq̃!Ç;Üqtã)ïxJ<^þrq8øݨ‡8ž4·¼#ïX‡8Ö1·ÄCëˆG7ÖñŽxˆÃÁÝXG<ºñt¸ã)ݘ‡8Þ±Žnï°ó Õ>ëÐ ó€ðÕ.ó õ°ó°ÝðòÞ ßÙ ó Õ>Ý0Õë ó€!â0ÝðÝðë0â°îÐ ïïŒp O Õ.Õ.ó ïïàò>âðåÝðÝPíâ0âðÝâ0ë0â0âðëðÝ ëðëÐ å.ïëþ0Õ>sïâPîâ0ÝPí3‡!ó ë0ââ°ñ ëðâPíó ë0âPíï°â0ëÐ Õ>â0ë0Ý0åî`ó ó Õ.ïPíó Õ.Ý0Õî`ÕÞ óÐ ó óðëà`âpôå>Õ>â0ëðëÐ ó ï ïÝÖ­›7OÜÀyß-\¯Û¨7ÏTþJ”QJdr%¥@”%Z™(¥D‘"%JÄ’R “‰vJD)¥D;QJ´2P¢H&QŠ”(¥D”n& ÁèX1ó:ΗH\Ænóºu\¯£¸´ëæ¥íö®ÛºwâÖÍë8O\ÚyâÜŠ[÷nÝÇuóºÍë–vÞ»uïæ‰K+nÝþÑ|CÙˆÆ? rkì#û0Ç?¤‘ q¬£ûø‡:ÄÃâðÆ?¤Ñ oü#ÒðÆ?¤áÂlH#.̆4"lDƒÍÈÆ:(ñŽuÌ#-¥‰DåÞw ó`DÖ!Žuˆc¥YÇ;ÄqÌãóèÆ:ÞþÑ‘w\dâxÇ:Þ!·”fâXÇ;:òŽuˆcÝxÇ:Þ!Žx¬cÝH‹8Ö!ŽytäâX‡8Ö!Žyt#‘8FÄ0·DB‰‡8æ!Žutcâ˜G<º1nÌãÝXÇ<Ö1qtdÇ;:"Žu¼#-âXG7Ö!Žw¸cóèÈ;º1޼câèÈ<ºáŽ´Ì£óèÆ;Öq¼£™GGâ!ެã™ÇEÖ1wtcóèÆ:æ!ŽtcÝH‹8æÑ wtDóèˆ8àÑ‘yˆãëèÆ:æÑwÌC똇8ºñŽnÌCyÇ­æ!Žyˆcâ˜Ç:º±þŽw¬Cë€Ç:汎nÀ£#óxG7æq‘y¼£ë˜GGº1qÌCóèFGÄÑ‘wtcÝèÈ;Ä1[­ãâèˆ8ÖÑwˆ£#ï€Ç:æq«wˆcÇ<º1qÌcïpGGæñŽxˆcó#Žñhâ˜Ç:æÑ[l/®r+]ëj×»â5¯zÝ+_c$‹}¬£ëøG7:ÒutcÝXG7Ö1ŽnDâêzG$ÄÑ sH£Ç0‡4ŽáÂf˜£ÖÀ†4²áBYøâ¶…,|q YÜÂ…²•í1f+cXÃÒÈÆ1ŽÑŒl¸PQÖhF6Ž¡(6CÍ0G6Ž‘þcH#Ç0‡4Ž!fHã.\G$ºÑ‘nÌCëÇ:±Žn¬CÝ@å(qÄCñÇ:²µŽ¼£ëÇ;æ‘­ud¤ñÇ<ÄñŽyˆcâèFGÄñŽy\¤#óxG7Þ1q¬ãë¸:ÜÑ‘xˆãâXG=ÄñŽy¼cïèÆ;BÀˆcäA â˜G7ıJˆcÝxGGæñqÌ£éÆ;ºÑqt¤•[G7æáqÄãiq~Å1q¼ã"óÇ:ÞÑŽtcï˜Ç:ºñqÌCëxG7Þá–ytDiéÆ;ÒÒyˆ£#•GGÄ‘–n¼CñxG7Þq‘yþ¬£ïèˆ8æÑxtDõèÆ;Ò"Žu¼C™G7>²Žwtcâ˜Ç:>"Žxt¤ïP×;Ò"Žu¼câ˜G7:ÒyÄÃ-âX‡8â!Ž´tcóèÈ<Ä1wtc☇8æÑ‘wˆãë˜Ç:à1üÎCïX‡8ÖñqÌCóèˆ8æÑytcâx‡8æÑ´¼£âA$|‘‡tâxÇ?:ÒwˆãÂ8Á nðƒ#<á _8Ãîð‡C<âŸ8Å+nñ‹c<ã‡ø>nñwtäÜ7¸1ŽnŒ£ãèF±ÄA‰Žˆcâ˜G7Ö‰y4C¶Š’-6š!c¸þ°³ Þ>b$ÛcH£¶ua3\Ø id¶Š:† ³!fÌVQKoÆÒ]ØŒwDBóXG7æ!Žx¬£”xÇ:ðqÔƒ!˜Ç;:"ŽŒ¼cëÇ<Þ±ŽwˆcïÈÈ<º±ŽwtDñX‡8â1uÄãëxÇ:ºñŽÊ‰£#ïGGÄÑ‘Ìãâ˜G7ⱎwtäë¸UGÞ±Žw„€Çȃæ!Žyt$yÇ:ÄÑqèëxÇ:êá–[¥EóÇ<:Ò´|ä"óX~Õ5qÄCÝX‡8Ö1nÌ£#óèÆ;º1qt¤õÇ;àáqÌCn™G7ÄÑ‘y¬cþâ˜GGâq‘wÌC<¼CG|Ä:ÌCGˆCZÌÃ;tÄ<\Ä<¬Ã<ˆCG̃8È;tD7ÌÃE¤Å̃8ÄÃ:ˆÃ-b|Êç|Òg}þÚç}âg~ÂÈ-üƒ8ÔÃ:ü7ˆƒ4dƒ8dƒ8dƒ8¸PÉQBGÀCZˆÃ<$Â;¸P3C3HÃ1HC3XÃ1HCnYC3HÃ1HˆæV3€è1HC3C3ƒ4C3¸Ð14Ã14Ã1HÃ1HC3ô– 5ƒ )Š4ƒ54Ã1HC3ƒ 5ƒ 5ƒ4ƒl)Ê1(Š4(Ê;PÂ:ÄC=tD7¼CGDB嬃8¼C¼Ã<˜BˆÃ¥á"Á"þºáÄaÄáÄaÖ¡æaÄA"æaà¡Þ¡âaÞAÖ¡Þ¡ÖaÄaÄaÆAêA"Äa$¢Þ¡ÞA"ÄA"Ä!'æA"ºÁ"Ü¡æ¡æAâAÖáÖaºaºAæÁ"æAÖá$¢æ¡DbÄaÖáÖºAâ¡ @êB@"æAæaæaæÄaºáºaÞÁ[ºáH$Ö¡ÄA"ÄaÞaæaæ¡ÞA"æAæaºaÄ¡ºaÞAæaÜaÄaÄaÄa$"æáâáB€Ž!Ä`°bÞ!þÞ¡æAæAæAÞaÞ!ºaºaÄaÄaÞ¡ÞÁ"ºaÄA"Äa$âºA"ÄaÄ¡æAÖAÞaàaæAæ¡æAºa Bæ¡æAæAÖAæAÞ¡ÖA$Bæ¡æ+$BæÁ"ºa°Â"ºaÖáÖáÖáÖáºa$Bæ¡ÄÁ"°b ÂæÁ" BÖa$B.èÄaÄaÞÁ"Þ¡$â$âÖÁ,¢ÖAÖ!ÄaÄ¡ÖáÖ¡$âàaæA$bÄaÞÁÖaÄáæAæ!§ºaæAæþ¡âAâaæaæ¡ÞaÄa,+$"ÄaÞ¡Ö¡$¢æaÄ!áò Äa,âÖáºA"n #]Ò'Ò+ÝÒ/Ó3]Ó7Ó{ÄþáÖá"á}Äa€¡¹!¤!(AæAÞÁ"æAæ+Þ¡æ,BÖáÖáºA"âAâAÞaºaÄaÄaÞaæA$BÖáÖáºa,b$bÄaÄa¼¥ º¡ÊºáºaÖ¡æA,bºaÄáºáìbÞAÖaÄ!â!' æB@"ºaºA"Ä¡¼åþÖ+æAæAr¢ÖAæA"æA"°¢Ö¡r¢æA.HÖáºá‚æA"ÄaÄ¡ÖAº!áò@ ÖaÄaÄ!Þ¡$b,B,¢Þ¡æ¡DBâaÄ¡ºáº!æÁ"Äa,Bæ¡âá$b$BÞaÄÁ"ºaÖaÖ¡Äa.h¼EæÁ[ºá}Ö,Þ¡ÞaÄaºáºAæÁ[ºáºarbÖAæaæ¡ÖAÞaºAæaºA"ÄA"ÜaæAæaÄaºaºÁ[ÄaÞAæ¡ÖAÖ¡$BæaþÄ!Þ!'D¢$Bê¡ÖA$bÄA"æaÞA,¢¼ÖAæaÄÁ[æA"ºAÖá°bºaÄaÖáÄÁ"æA"Ä!rBæAB Žá@"àA"þA"ÄaÄá:Ýÿÿ þ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jDxkߺ”æ‰ü8€8qÒR‹$.Þºy»½[7oݼwâÖ‰›'.Þ»uâæ½['nÞÇwâ>v›×í¸uâ>΃·nÞGqóÄÍ[wrÞºnóÖÍ÷ѸyÝÖ½Wo¸yÝÖ‰‹·î]·yëÄÍ['n^·wÝâþ­{'.Þ»»½{—±¸wæÕcÂÝ»nñÇ{·Nܼ“óÖÍ7ïc=qˆÅÍC o¸xóâÍ['nž¸yïºÍ7±¸yˆÅ½û(nž¸uâæu[¼nñ»‰Žåƒ¸Û;Jˆ×us·N¤¸yâÞ­‹×í£¸wÝæ}|·îݺnð>Î;9oݼnïºÍ·®ÛÒyˆcâ˜G7ÖÑw¬£ïè†ðÖ!Žy¬CëèÆ;Ä1qÌc☇8B‰cä!ëx‡8æÑdG·hˆwÈÃúð‡@ ¢‡HÄ"ñˆHL¢—ÈÄ&êðÿÇ<ºA ‘ˆäãÇIR" bPbïX‡8æQ­y|¤óÇ:ºñŽxÌc[ˆé†HÖ!Žy¬ãˆÇ:汎w¬Cóè†H#ŽÀcóøÈ<>²­tCóèÆ:Äñ‘“|D$âˆbÄñ‘“ˆã#óXG7Þ1q|dþ%Ęy`õ`Dıq¼CÇ<>ÒìÀã☇8Ö!ŽytcݘG7âñqdç☇8æ!ŽxdGëxÇ<>"ŽˆcÙÇ:Þñq|äñxGqŒ<äá#ÝX‡8QqÌ£ë˜Ç:Þ1q|Dï˜Ç;º±ŽyˆãÝxÇ<ⱎyˆcóÇ:æÑwˆcóÇ:Þ±qtãݘÇ:º±q|Dˆ9É:æ!ŽyˆcݨV7æÑuÌCëˆÇI>"޼c똇'×1qtcâ@Œ8æ!ŽyœdÝx‡8æ!ŽÌC8Ö1qlk☇8þàñ‘yˆãó€ÇGº1q¼câX‡8Ö1qˆ¤ñ‡HÖ1q¼1݈‡8Ö!ŽutÃë˜ÇGıŽyˆcó@Ì;q ¦óǶ>"ļ£ïGvæ!ŽydçëxÇGÄ1q¬c똇8æ!Žw¬#ݘ‡8Ö1q¬#Œ8F0q¼Cïø‡8æ!Žy¬ÃNŒ®t§KÝêZ÷ºØÍ®v·;DYüãÝxG"ê1uœdâhV6ŽaHÌ£ÛrÇ:æ!ŽyˆcâXÇ;ªÕuˆcïøÈ;ºñ‘yˆcݘ‡8æqÌCñèÆ;<äŽuÌ#;Ý€ÇGºþ1qtã#óØ–8â!Žˆ$;âøˆ8à‘Ä1ÝÞGıŽw$bóèÆ<ºq̃!˜‡8¶•n|ä똇83n¼cóèF<º‘qdgâ˜G7æÑyˆ£óÇ:Þ!ŽnÀã#óÇ<>"ŽuÀ1ݨ‡8²#Žn„€ÇƒÄqÄc‰øÈ;Ö!Žyxhë˜Ç:Ä‘n¼CñX‡8>"ŽwœdyGµæ!Žy¬#똇8>2uÌã#óÇ<Ö1qÌã#"Y‡8æñw¼£ëÇGÄ1Ì1âXG7Ö!ŽwX±ïˆÇ:æ!Žy¬Ý@ŒHÞÑþyˆcâ˜G7Þ±ŽnÌcÝxÇ<º‘wˆ£Ýøˆ8²Ów fëxG7>Òw¬ãëèbÄ1u¸ã™Ç:æ±-qdç$ï˜G7æ!Žytcâ˜G7æ!Žyˆ#âX‡8æQ-xtãëxÇ<ÓwtCóX‡8„'Žyˆã#ÝøÈ<²ÓuÌ£óXÇ2qt âX‡8æÑ„ˆcëÇ<:&ŽŠ#!ó0Î:ÞÑw¬ã똇8Òyt€ÇÈCº±qÌCþ›ÇÆæ!޽cݘGÇÄ1qÌ#!ðX‡8âÑ ‰¬cëˆGBæ!ŽuˆcâØØ<º1x¼câ˜G7"ŽyˆC"ëÇ<ÄQnÌC{ÇÆÞ±qÌCóèF<º1nÌ#!óX‡;Þá2q$dðHˆ8æÑwtcóGBæ‘nÌ£ó0Î<"ŽytcâˆÇ;6uÌccâHÈ;6Ö qÔ£óXÇ;æ‘zpìóèÆ<ºñŽuˆcƒÇ:ºÁ±n¬CëÆ:Ä1u¼£ éÆ:Þ‘qp¬ïXÇ;Ö!Ž„Ì#!îxÇ<ÞaœutcâˆÇ:æ‘qÄC"ëþÇ<Ä‘qÌc☇ËÄ1qÄC"ïØX7æÑuÌcâX‡8汎n$dݘGBÄutcëèÆÆæ!Ž„ÌCëFB汎yˆcâ˜G7"Žyˆc ™ÇÆÄ1q¼CóèÆ:Ä1n¬cë˜G7Þ!Žwl ëèÆ<òqlì›Ç:Äwˆc݈Ç;Ö!ŽuˆcëG=Ä1ãÌãëÇ<ºñŽuˆcâèØ<"Žyt#!â˜GBÄ1uÀãñHH$þñûðûðû€ÿÐû°€ øûðûÀ€€ûp€û@øûð €ûðûp€þûðûðû ÿ°H ݰâ0 ñâ0 1ëÝ@ ‘ T‘@ E ‘°Q‘ð ”ÐQ‘°Q‘@ G¨TMH ‘‘PRŸPR‘ R‘°R‘@ ‘°R‘°R%RëÐ ÑÝó  Áw0â@ ! óÐ ï°ó õÐ ñë ó óÐ ï°âðâ°ñÝðâ0ݰ1Ʊï°âó ó°1âÝâ0 !ó°1ó°ï°ó°ïï‘p y óð ‘ëðëðÝ0Ý0Ý0Ó ëÐ 3â°óÐ ó ó°þóñó ë0â°ï°Ýâðݰóóó`ëð3âÀ1Æ‘ó ï°ï°ñ°1ó  1ë0âÝðÝ0 1Ý0â°1âÐ ó ï ë0âðëðëðÝÀ1ÝPâ°ï°1óÐ ïÐ ó°óÐ ñ á !ïëðââ0ëÐ ó ë ë03â°1ïÐ ó ñ`ë0â°ó ïÐ1Ý0â°ó°óÐ 3Ý0ë ë0â054ë03ë0âðë0Ý0ݰó ó ! ·þð°óó ë0â0û2â°ð°1âðݰî°ó Ó 3 ñÝ0âÐ ë ë0ݰÑ ë0â0âðݰâ°óÐ ñ 3ÆÁ1ïÐ ïà#õ`ó°1ÝâݰÝ !ï°Ý0âðâ°ó ë  1ïÐ ñ ïà2â°óÐ 3ݰ!#ó óÐ ëÐ ð°óÀ1Æ1ñï°â°Ýï ó ëðïÐ ñ ó°Ý0â°1ï0âóÀ1ó ë0ïÐ ñó ïâ0þïë0â0â0Ʊ1Ý0âðëÐ ëðñ ë0 !ë óƱó  1 1ëÐ ð°1ï°óÐ óÐ ëÐ ë ó ïÐ ï0â0ë0 !ë0âÝ!3Ý0Ýó  1Ý0Ó ëÐ ïÐ óÐ 1ñ ëÐ !ëPâ0Ý0âݰóÀ1ݰÝ0ëðâ0â°ï ïÐ óâó  1Ý0ë0âÀ1Æ1ë0Ý03ÝóÐ ñ ó°Ýðó ë0âÐ ó óÐ ñ Ñþ ë Ʊݰâ@ ûÐ[ÓÚ[õ0ñPÔÚñPQõóPóð­Úª­ïPóõÐñPæ:ñPðõõÐõ0ñP±‘` óÐ Ó ë0Ʊ‘ðû@ûÀ€û€ ˜‚Kû@±ûp€ûû0û0ûÀ€”ðÓ ï°óÐ #ÝA !ðÝPC3Ýðâ â0 1ëðëðëݰ1ï## ! 1 â0 !ó°ݰ1Ýâ°â°âÐ !ÀÇb ë ï@ ÝðëðÝðÝþðÝ0Ý0ëàïâPâóÐ ï ó óÐ ë`ó  1â0ó3Æ1â°â0ݰñðâ0â0ëÐ ó°â0âBó 3ݰâ0â0Ý  !ë óÝðÝ0â0 1â1Ýðóà2â0ëð 1Ý0 Ñ ï°1â°1ó ó°1â#ñ0â0â0ë ó°ó Ó ó ó°ÝðÝ0 ÑÝ0ëÐ ë óîÝëÐ âÀ1ðÐ #ó ó°ðî óÐ â°þâ0ÝÝð !ïÐ ó°âð !!ÀÇÐ ó  !ëðݰ)”óÐ1âëðëÐ óÀ1Æñâ0ݰïÐ ±ó°Ýð Ñ ï°Ýï ñ°1Ýð QÓ ïó°1âëðÆ1 ñó óÐ óðëðëðâó#Ñ ó°ó°â°Ýðë0óÐ ïðÐ ó ëÐ ë0â0 !#ñ°Ʊâ0 1ëÐ ! 1ë ó ë ñ ñðâ !ó°ݰâ0Æ‘þó ë ó ó ë0ݰ1Ʊ1â0 Ñ ë .Óâ0ë ñp>óÐ 3óÑ ïâî°ïâ0â0ÝðÝðâ3ïÐ Ñ óÐ ç3 1Ýó°â0ÝðÝ0ë  1âÝ0ë ó°âëðÝðâ0Ýó°â0óëð 1Ý0â0 !ñÐ â0ëÐ ó óðó°âPݰó°Ʊó°ݰâ0ÝðóÀ1ó°âݰâ°1Ýðâ0Ýðââ0ïÐ añðâþ0ëðë0ݰ1â0ëÀwâ0ï û@­õÓZóÚZð*ðª­õÐõ0ñ0õ0ñÐõ0­õ ­õÐõÐ[ëPïPñ‰` !óâñð‘°óPñÐõ½Uñ Øõ0ñ Ø½õ­½U½UñÐõ0­ñ ­õ ­õ0õ0ñPñÐõõ0õÐâ@ ÖÐ ï óÐ 1â0ïïõ0¦ïâ0 !ó ë ëðëð.#óÐ ë .3â03ðÐ â0Ý0Ý0â0â0þë óâ0ë0ë0|‘p y Ý0â0Ýï ó ñ ñ ïÐ !!óð3»ݰñÝâ°Ýî°ó 33âÀ1ïÐ !ëÐ Ñ óÐ ëÐ ó ó`ó°ïÐ ó ó°óó õ`âÝ0ÝÝâ°ݰ1îÝPââ°â0âðë ë0â0â°1ó`ó`Ý0#ëðëÐ óÐ Ó 1â°Ý0# ñݰóð !ë0ïÐ 3óñ°1ó þëðó ë0â°1â°ã0âð3ë0ݰ1ïÐ ó  ñÝÀ1Œp Óâ°ïÝÝðâ0â0ë0â°âðݰî°½%ïÐ ñ ëðݰâ°âó çóë ó ñ`ë0ó Ó ë0âðݰïóÐ Ó óÐ aóë ó  !ó óââ°âï0â°ÝPâ0ó`ë ïÐ ó ëðÝ0â°ó  !3ï°ïëÐÆ1Ýó ñ ëÐ Ñ ïþ0 ñó ï0â0 !ï0ñ á3Ó ë0â°1õÀ1Ñ !ñ óÐ ó 3Ʊ1â0âó ë0â°Ý0â0â°Ý  1âÐ1Ý0â0â°âðëðëÆ1ââÀ1Ýî°óÐ ó`ó`ñ ëàóÝ0  1â0Æ1Ý0ñ  ñóðÝÀ1â0ݰó çÓ óÐ !óñðݰ1ó 1ï°1ÝÐ#ë0ëÐ ÝÖÍ·®ÛºyëÎ{7OÜ<…óºÍ÷NáºnþñÄÍ›wñ]·‹ÅÍ{×mÝxþÌCá{G7Þ!¼&óèJ<ÞaytC#ÝXG<Þ!ŽytãâèÆ<º1$ây€Avbq䙇8Öñƒˆ#|óØH7Ö!Žxtc☇8æ±qÌà âЈ8汎wÄé†Fı“uìdéÚº1u¼cëÇ<ÖÑ•u¼c☇8æ!Žy¬cë˜G74Ò•utcݘÇ;æan¼CïÇ<º±qÌà â0ˆ8æ!ŽxdÝx‡Aº!Žytcâx‡8ÖñÌà âxÇ<ÖáŽu¼cݘ‡Fº1ƒÌà óèÆ<ÖñŽuÌ£ï˜Ç:Þ!ŽyˆþcëèÆN "ŽytCóXG7Ö1uÀCóèÆ:ºñŽn¬cï0ˆ8æaq¼CóÇ:ÄqÄcâ˜Ç:Ä´‰câ˜Ç:ÄawldâXÇ;º1q¼cóÇ<º±ŽnˆÃ ÝX‡8æ±qhDïèÆ;Ä1ÌÃâ˜Ç:JdytcOÙI7Ö!Žztà ÝØ:à¡‘wtcâЈ8Þ±qÄà ó€G7Ö!ƒˆcïè†Fº2uÌCéÆ:Ä1uÌ£éÆ<Ä1qÌC#☇8Ö!ƒˆ#âX‡84"Žztcâ˜Ç:º1nìi☇FÄ1uÀcþó0ˆ8Öñމc‘ø‡AıŽn¤âXG7ÖÑ ƒˆãÝèJ7Ä1ˆc; ±Žn<DøÆ:`°q<AX‡8`°ƒnAÞaæAæaºÁ Ä¡"á²A²A²A²AVO²¡EÕNÄ¡EWOÄA²Aš¡nZí¤!Ä@4¤DŲÁ¤!ÄDÕ®E›D¥!nZþÔ®EÅ!H¥AíZ4¸A"AÞaâA°# b "æ!!ìMÖáæ¡æ¡ ÂTÖÁT ÖaÄÁ ÄaÄ¡8 BæAæ¡æ¡æa=ºaæaÞaæaÄaÞaÆaÄaÄÁ êAæA â Bº!"áò@ °ãÖ!°ãbÄ!ÖcºaÞa=æ¡ÖaÄaÖ¡ÄaÖaºAæaºá bÖ¡ÄaºÁ ºAæÁ ÄaÖAæáæAæA âºaÄ! bÖaU b°£æ¡æÁ ºaÞÁ ÜþáÖAæaUÖA ¢ÖaÖaÞÁ Ä;ºáæaÄaÄáÄaºA bÖ¡Ö¡âAæaÜaÄaÞ;ÄaÆA b ÂTÖ¡Öa B <Ì ;Þaæaæ;æ¡øbº;ºaºaÄaÖ¡LEâaæ¡Þa=æ¡ â°C æaºaºáÄ¡8æÁ ÄabÄ!Áò °£ÄaºaâÁ æáÖA ÖAâA "ÖA ºa=æaæ¡°C ¢æAÖAâ¡æ¡LEŠOæ¡æAæaÄaþÖ¡Öá b ¢ÞAæaÄ;æ¡ÖáÖáÖaÖA âÖc B°Öa bÄaºaÖ¡°ÖAæ¡æA æaàáÄ¡bÖaÄÁ æaÄaæAæAÞAæ¡æ¡ÞA âAæaÄaÄabºaÄa°ãÄaÖAÞaÄaÖã bÄaÄaÖ¡Ö¡æA桊OæA Bæ¡æ¡ÞaÞAÞAlQ ¢ÖaºÁ ÄaºAæáÖAÖ¡Þ¡âA æ¡âÁ Ä¡ºaÄáÖAæ¡þÖáÄaÞa=æa=ÄÁ ÜAâa=Äáæ¡ BæaÜ¡æaÄaÄaÞ¡âa=æaÄ¡ÆAæa=ÄaÄÁ ÄÁ æAæáÄaºÁ º;æ¡ â°ã BæÁ Äa bºaæ¡âAÖAÞÁ ÄaºaæAæ¡Ä!Äaºa=æAæá°cŠOÖAºaÄ!ÄÁ º¡8Ö¡ÞAÞ!þ!H;n:¤!¢¥ ²I“–-ÛÀÙf³öLÀÀ‚Ù¬qMZÁà(›´lÒ JË& ¢4ˆ¥e“1ÛºH¶Öu›×þmÞ:qóÖ½[é_6iÙ¤e“Vp`6ifKY0¥´‚³ Ì6€U«¬Ì6âAk)[ÌæTZ¶ƒ¥e{é–¸uëæ‰›;oîîX‡8æÑwˆcëèÆ<Äq¼.​8ÞÑ ¸ÌCóXG7Ö1Ètcë˜\ıq¬CëÇ<º!ŽyÀe.óÇ:Ä‘ýÌeëÇ<Ä1¸Ìcï¨O7æ™w¬c​8àÒ íÀó€‹8æq¬£ïX‡8àþ"Žwtãݘ‡8æÑytcë˜Ç:ÞÑyˆ.ë\º1qÌ£ïXÇ\汎nˆ#ëÇ<ºñŽn¬£ëG"qŒ?`âÀ)\Ä1¸ÌCpéNÅ1nˆcâ˜NÅ—y¬ã8G7Þ!Žy¼.óX‡8ÞqÌ£ÚY‡8ÖñŽu¼£ë˜G7Ä¡qÌCóX‡8æ¡ÕuÌcîèÆ:æÑwÌ.óXÇ<ܱŽnhUóèNç—yà´ñ€Ë<Ä—yhUóèÆ:ÄwˆcâÐê<ºw¼cݘG7Ä1qtãëx‡VÅ1qÌc☇8æÑþ qÌCpéÆ:æ!¸ÌcsË<Ä1¸ˆcݘ\ºñŽuˆcëèF<ºÓyˆcâXÇ;Ä1nÌãâ˜Ç:æÑ ¸ˆcâxG<æ!Žyt.ÝxÇ:ÄxÀEñÇ<ıqÌãóèÆ;´Úuˆc݈Ç;à2qÌcÝX‡8Þ!¸Ì£ë¨G7ĸ¼£ó€Ë<à2qÀïX‡8จcݘN籎n¬C8Ç<àÒwtãâ˜GeÅ1­Î£ZÇ<Ö!Žzˆ#óÐj7æ—yÀEïXÇ;pú­Î£ïèÆ:ıŽnÀ¥ïèÆ<º1þnÌãâÐê<Ö1nÌ£ëè†8ÖñŽuˆ#ëè\汎n¼c”øG3šqcHÃÇÆ1²! s£ Òh†4²1l äei†S²qlH#)9†4š€XûÚ†9Ž1þ ÄÍHÉ1²Ñ idc ÇxG$|Ñw¬ãÝ€Ë<Þ1uDâi†4Ž! sÌ1Ǭ±qY§ÄÇh†9šqf ¤)‰¸4Ž‘ƒ4#âÍH3¤Á¿#ذ†4š!fHÒ˜õAÞ‰[¼câXG7æÑutãÝÈMÄQFx ïÇ:Ä1wÀ¥óèÆ<ºñqþhGïG<à2wÌeÝxÇ:Ä1uˆ.îX‡8Ö!Žyt.ݘ‡8Ö!Žyt.âˆÇ<ÖÑuˆcÝxÇ:Þw„ ÇȃÄq¬#ñ˜Ë:æ!¸ÌC«¹Ç:Ä1qÀåëxÇ:rÓ ¸ÌCë˜G<ÞÑ íˆ.óˆÇ;à"Žw¬ã݈‡8Þ1qÀeâXÇ;ıx¬câ˜G7Öñw¬câxÇ:âÑwÌ.☇8àòŽnÌCó€K<ÄñŽuÌCpÇ;Ö!xhUÝpÇ<Ö1œÎcݘ\Ä¡xˆcóÀ©8Ö1q¼#8Ý0Ý0þsSâPâðÝpÑ õ ëó€SïÐ ë p!õ ïÐ õ Z5ëPâñ ï°ó ëÐ ïÐ ëÐ •ó°ó€SïÐ ïÐ ó€Sâó ó pñp¡!ÀÇ p1s1p!óÐ •åó¹s±ïââ°ó ó ó°ñ Ýp!ë0â Ýð82pÑ pñpïÐ ë0Ý0Ý0ë ë ëàp!ëðë 8%ëÐ óÐ ï ë0âðâ0Ýó Ýݰó ï°â0þâ0â0sÚ!ó°ó°â085â0ݰó ïÐ pÑ ó€Sï°ó ëàp1Ý0ݰóÐ óÐ óPƒó 8Õ Úñë0Ýâ08Õ •5ݰñ ï0â°Ýðóï0p!ëðÝ0ââ â UóÐ ó 8¥âPƒ85p#ï0â0âï085ë ó p1¹SÝðp‘Ý€Sï°ââ‘p1âðâ°ó ï ð€Sâðëâ°ó°Ý0ââðëðëÐ ðóðݰó ëþÐ •5Ý0ZÕ p1ââ0Ý0â€SÝó05â°ó€Sñ ñÐ ïÐ ïÐ ëðð°ó0ó ïÐ ë0ñ°óÐ ó°ó ñ p!ï0âÀÿq³Ö ±™Ò0k±™Í Ùp Ùp ›9¢) ÍpÍ Í qÒ š³& Ç0kÑ Ç°™Ø ÇÐ Ñ Ñ ±‘p ï°âó ݰâÐ ‘ðÇÐ Ç ´Ù Öp ³& Í` Í Ç Ç@›Ò0kÒ0kÇ Íp ÒÐ Òp Íp Íp Íp äp ³v Í ›) Ç þÇÐ Òp Íp Í ›y Í Ç Í` Òp q Ͱ‘p Ý0pñÝ Uñ Ýõ0”ïÐ ë0p!8Õ ïÐ ï°ñ p1¹±ï€Sâ°ñðÝó°â°ó ëðp1ëÐ 8õâóÐ ë0ë0ݰâ°ó°Ýs1âÐ !ÀÇb0ZE Ý0âó°â°â0âðâó€Só ë ë ë ñ óÐ ë0â€SÝó ë ë ëë ñ°ï°Ý0â0Ýëðp!Z5Ýðsþ8õâPƒó ó°Ý0Ý08%õÐ ë0âë ñ°â08ï óÐ 8Õ óðÝ0â0ݰݰóÐ p!ó0ñ Uî°ïÐ ïÐ Ú±â0pñâë óðZÕ ë õÐ ïó°ï°ï°ó0ï0â0s1ã°ó ëðpÑ ï0ï°ï°ó ó páâî°âïâ085Ý Uóâ0âÐ â‘p yó°Ý â0Z5ëàï ïÐ ó0ó€Sï 85â0s1Ý0Ý€Sïþ UóÐ óÐ ëðëpï óÐ ó 8%ëðÝ0Ý0ë Úñ8õ8%óó°Ýï ë0âp!õÐ ëâ0pÑ ó°â0Ý0Ý€SÚ±8â Uâ0ââë ñpñÝ0pÑ sñóðâ0ÝðÝ0ëÐ 8Õ ó ó°ð p1â0ë€#ë •%ó ó°â0páëðâ0ë p1pÑ ó ëÐ 8%•5Ýó€SÝðÝ0â0sâ0â0ë óâ0ÝëÐ p1þâPâÐ ó€SÚ±Ý0â0ݰâ°â0ï ó°ââPs1ë0p1î°â0â°â0ÝëPÝï°â0âë ï°â€Sâ0ë02Ù 8Õ ó°óî óÐ ë ë óÐ ó óÐ ë0pÑ óÐ Ú±ââ0Ýðë0ëâ0â0ë0Ý õ°ââëðëðâs¡ݰââ°ݰÝðݰÝðâ â0ë ï°”ðÇ0kÇ0›y Òp ›) Ç Ç ÑÐ Ç ÇÐ qþ âp ³v Òp Ç ´y Ò0kÇ š× ÇÐ Ò0kÇ0kq ÍÀ?Íp Òp Òp Òp Òp Òp ï·ó°Ýðñï°‘ð³v ÒÐ ®‹ƒÓ<‰3O7ÍÓÍ;âÔÓÍ:Í#Î<ÍÓ8Í#Î<ï<48ó¼ÓÍ<'¯#Î:âà$N=ÝàÔMDï$Î<âÌóŽ8auCP7¹³Ž8ót#Î<ݬAâÌþÓ8ͳN7℉/yà‹-·Øâ‹-·lî‹-°ÈbKè¾ØâKè¾ØâËæ¾„ú-¡ßbË-¶Üº/¶øbË-¡ßâ‹-²Øâ‹,·Èr‹/·Ø"Kè·°~‹-›Û²ù-²„~‹/·Ør‹-¾Ø"Ëæ¬oú-²Øâ‹-›Ûâ‹/·ør‹-›ûb‹/¶øbË-¬‡ž¾,¶øbË-¶Üâ ÖEï¬Ûœ/Xw‹Ðùâ~¡»…,ná Öɲ¸…-d±9_°î ¼…-|ÁÀÐm޾Ý-|q [Ü"t²`ÝædBÖÉⶸ…-na‹[øB¶ðE}a YÀ·`Ý-Bç‹ÞÂþÑ“Eèná‹FÏ¡‹ž/lá‹[Èâé»…-|a Y°î²°…/6'‹ÐÝ·Å-B'‹Í¥ï¶ðÅælá [ȶð…,|ÃÐÝ¡óÅ-lq [Dï~¾¸…,Ò'‹[Èâ¡óEè6g‹[Øâ¡óÅ-lq _ܾˆá-Bw _„η°…,na YÜB¡Ûœ-|a‹[ø"téó…-|!‹ûmη¡/dq [Üâ~¾`à-Òw Y„…/Xç [ÜB÷ /n!‹[„î²…-|q YØÂ¶HŸ,¢Ã[¤ï~·°Å-|a YøÂ·/Bç [ø"tþ¾°…,6Ç:_Ȳ°…/x‹Ðù‚u·Hßý|q YøÂôoÃÍÙⶸÅ1X·9_Dϰ¸…/bx Ylξ`Ý-Py0"óèÆ<Ö1‚tÃgÝxG7ÂqÄãâˆÈ<ÖáŽnÌ£ï˜Ç:æÑyˆcK"È<Ä1uˆcïˆÈ<2“½ƒ ™Ç;âñŽDâyȃ8æñއ$bGDıq¬c A汎nÌãÝX‡8Öũ Ýx‡8æÑy¬cNÄAnÌC©Ç:âÑ ‚ˆcóxÈ<Äq¬câXÇ;ÄñŽˆt#"óþÇ:àAytcâ ˆ8æ!Žyˆcâ ˆÏæÑ q¬câXÇ<"Žzˆƒ âxÇ:汎nÌCë€ÇÇ<ıŽn¬c8éÆ;Öá3‚Ìãð È<2q¬câX‡8Ö1ˆtcïè†8"qäë˜Ç:Þ1nì§ó È<–0‚yÀ?~ ä yÈAÞ‡÷Aä$+yÿØÇ?öä}(YÉû˜r’÷ä}ücÿØÇ>†¼+ÿxVör÷¡ä}ˆyÈûXó÷áf"ïÃÊûøþÇ>þ±8yzvó>„¼> úû´’÷ñ}ˆySÞ÷aèìÃÍûˆt÷ñ}ôyÿØÇ÷!ä}XzzÞ‘÷aiKïÈûèó>~¼ìCÈûøñ>ļ%`õ DºñŽnD™‡8Þ±Žwœlâ˜Ç:æ!œtƒ ïèAº1qÌ£óèAæ!Žˆ¸ƒ óèÆ<ÒyˆcÝ€GDÞÑzˆ#,ÝX‡8ºFãbèAÞ±ŽD¬Có‡8æAyDóxHDº1wtƒ â˜AÄAx¼'ÝXG7æAqÌ#"ó H7Þ±q¼cÝx‡þ8æ±qd8™G7Þ!ŽyDëÇ<âŽu¼ƒ â˜G7ÞѰˆ#â˜G7æÑyˆcÝXG7Þ±ŽytcóèÆ<ÄñŽu¼cÇ<º“w¬£óèAÞÑwÌCïAº1nÄc?ÝX‡8Öq²wtc]Ç;ıŸn¬CóÇ<ÄAqÌ£ëÇ<Ö!¤Ìcâ <Öñ‚¼cóX‡;"ŽztcÝX‡8"Žyˆcë€Ç;º1ndëè†8BÀˆcä!ÝxÇ:ºñœˆãëGW×Ñ q<âxG7Þ‘nLÝxÇ’òœtCëÇ;þpÒwDï@Š8ÞAqDD]íÆ;–ÔwtCóØO7ÞÝðÑ ï°âÝðÑ ïð|âðÏ÷ï°}Ó'ïP!ï€â@ÝðÏ× ï°$Ý ï°}âð8!ïâðKòï°âðâðâ0}>CÝð(ï€âðë ï°â@Ýð8Ñ Ñ ï@Ý ï@âð¸Ý ï°ÝðHÑ ï@âðë ï …Ï'H!ï !Ñ ï€ݰâÐUÝðâðkÝð€¸†ââðë ï°âðØ ï°þÝðÑ ï°ÝðÝðëÐ ïâðëÐ ïÐ ï°Ý ï€âðëÐ ï€âðëÐ ï€â@â€âð8Ñ ï€Ýð8Ñ âð8Ñ âðëÐ ï ï@ââðë ïaÁ!0ï@ð0ë ï°â0ï°â0Ý0Ýðó@ððâà3ï°ó°âÝ0â0Ý0ë óðë !ó@â°óâ0ëðÑ ï°÷‘à y ïÝ@ ë0Ý0ñðë ó H1â@ââ0ë0âà3ââþ°ó óâ0!î@â@ó ó ë0ëÝ08!ó ë ó°ïÐ ó ïPëÐ ó ïÐ ë ïâ@ï°Ý0ëÝð1ââݰó ûñóðÝ@ó ë ëðÝ@õ ï°Ý081ÝðëàQâà3ñ ëâðÝ0Ý0â°ð@Ýó ó ëâ0Ý0Ý0â°ï ñ1â1â€â0Ý@âðÝ0ï°ï ó 11AïÐ 8!aŒp þïÐ ëðÝÝðâÝ€ï°}ï°ïÐ âÐ HÑ ñÝÝ>ƒï°óðHñëÐ ëðÝ€ïÐ Ï× HñëÐ ûñëpâ€ïÐ ëÐ ñÝïÐ HñÝïÐ Ï÷Ý@ݰ>Ý@ˆëðݰÝÝïÐ KòÝð|ïÐ 8Ñ ñûÑ ûñÝ€ïÐ ñݰ$>Cï€óÐ ]õëÐ ïÐ ëÐ ]Õ ëðÝ€ïÐ ë±óÐ ïÐ ëÐ ññëÐ ëð8ñÝ€Ý@ݰ}ïþïÐ HñÝ€ïÐ Ñ Ñ Ñ Û× ëðHñ]Õ ï°Ý@Ýðëð]õëðÝ€ÝïÐ ëÐ =ŠÝð|ÝÝ@Ý€ïÐ ëðÝݰ$ÝðëÐ ïÐ ñݰï°ï@ïÐ ñݰï°ïÐ ëðûñëÐ ïÐ Ñ ëðݰïÐ ëÐ ûâ€ïÐ 8ñÝ€ïÐ 8ñûññëðÝð|ïÐ ðõ@ ! Ý0â@â@ó@Ý0ïÐ ïÐ Ñ ó ï ï0!Ýó ï€ÝâÐ ó€âþ@óÐ ë0â0â°âñðó ÝŒp y â0ëðëÀÝðâ@a±ÝðóðÐ ë0ûÑ ë ó°â0âðââ0ûñ1ëÐ ï°ï ë Ñ ó ó€ó€Ý8!÷¸ó ó°ó Ñ ëÐ ï@â°Ýðâó€ݰó°ððó°ó€1ëà3ââ0ãðñÝ ó óÐ ï€â0ãðâ011Ýâðâ0ë ó°Ýó€ÝðÝðâ0ë0â0ëï þó !óÐ ó ï ó€â>Ó ñÝ0ë0ݰâ@>#óðâ0Ý0Ñ ó‰à yï ñðâ0âë óÐ ë ó ñðó ï°â°1*;â°â0ï ó ÷øó óðâ0âà3â0ââ0â0Ýðó ó óp21*;ï óðâ01ëðâ0ëðó°â0ïðóðë ñðóðóÐ âÝ ï óðó°ï ñ ó ñ ó óðâ01ââ0â0þï ó ²óðó°ï õ°â01â0Ýðõ°â0*;*;*;1â0ï ó ²õ°Që ó óðâ0â0ë ó ñ ó ²óðó ñ ó óðâ0ñó óðâ01â0ï ó ó°ï ó óðâ0*;Ý@â0Ý ó óÐ ï ó ²ó óà3ópâ1*;ââ0ï óðóðâ°>3Ýpââ0â°â0Ý ñ ñ°â0â0ï ó óðâPëþðó ²ó ²õ@â0ëðâ01ëðâ0ë ó°ï õ°Që óð1*;*[ë ñó ë ó ó ó óðâ0ï õ°ï ñóðóðó°ï ó óð1*;*;1ï°ïðó ²ó ²ó ²ó ²ó ²õ°1â0ëðõ°Që óðâ0ë ó°ï óðâ0Ýð11ââPëðó ó°ï ë ë ó°ï ó óðâ°â0ï ñ°1â0þÝ ñ ñ ó°ï óðâï ñ ó óð!ó ó°ï óðóðâ01ëðâ0â0ñó ó ó ²ó°ï ó°1ë ó°>ó`”ó ñ°âë óÐ ïÐ ëðëð!ñà3ëÐ >3ñ0Ñ ï°â°â0ë ݰñ á1ëÐ ë >Cââ01ëðñð! ¾ðb0Ý0A ñ ï@Ý€âï@â0Ý0â@óðÝ0ñë0â€â0Ý0þâ0Ý0âK2ë0âðÝ0ݰð@ð@â@ï°â°ó ñëðݰâ€ñ 81ë0Ñ ó õ !÷Ø óÐ !ó ï@â0Ý0â°ñÝâ°ó@â°ï Ý0ÝÝ€óðñÐ ó@â°ó óðë0âðëðëݰâ0ݰ$>Ó â°â0â°óâðóðëðݰݰóó ï ë0â°ÝâŒp â0ë ñ 8!ë0ñ ëð>"þ1ëï óà#â@óðñ ëÐ ëð>"ë ëâ°ó ñ ëðñ á#ï ó ïÐ ïà#ñ óï !ï óðâ0ââï ë0â°ñðâ0ë0>ï óâà#âà3ëâ0ï ó >âââ°1ë0ñ ñ ñ ëðï óï óðâ0âðëà3â0ñ á#ï°>#óï óï óï óâ@âðâ0ñðëðñðëðñ !ñ þë ë0ââðâ0ñðâ0ñ ñ ñ ë ëðâ@óâ°â°ï óâ@âñÄ­7O\2qt#ó¨%B Žw¬#!ÝÇ<Ä‘=þÆC ™G7æÑyˆC#óÇ:ÞqÌCó‡FÄ1qÌCÜÒÈ<Ä¡‘zˆc–yÇ:º±qt#Œ8FÄÐw¬ãë Ä:ıŽn¼câX‡8âñŽuˆcݘÇuæñŽŽtCóèÆ:º±ŽÌ£ïÇ<ÄÑ‘n8¤☇8æÑ q¼£ñèÆ<4"ŽxtcóXG7Ä¡qÔc⨇8Þ±ŽyˆcãÇ:>"Žxh¤ïèˆ8æÑytcâ˜G7Þ!ÞtcïèÆ;42uˆ#ïÐÈ<Ö±ÇyhćC4"ˆãÇ:º1À£#݇F汎yðþfë˜G74"¼C#óÐ<:ÒuˆC#óX‡8æÑu¼cóX‡8²qÌCóX‡8ÖñÌcâ˜Ç:Þ±ŽwˆC#óxG7æ¡KqÌCÙ£8B‰cä!ïÇ<ÄQq¼cïX‡842ˆc݇FÄ‘qÄCïèF<ÖÑwtãÝx‡8æÑytcÝÐ<:ÒuÌcâ˜å<4âŽYvcëpÇGæÑ‘nÌCóèÆ<4"ÌCë˜Ç:à±qhÄâÐH7æ!Ž/½£#óG<Ä1=:¤#â˜Ç:ÜñŽ=:dÝxÇ<ıŽw¬ãâ˜Ç:Þ¡‘ytãþ݈‚ºu¼C¼™Ç:º1qÌ£y‡8ⱎnÌ£ïèÆcºñŽu¼£ñèÆ;ö¨‘y¼C™‡8â!ŽxˆcëpÇ;ºñŽxˆc©‚ºqÌcݘ‡8æÑwhDóèÆ:ÄÁqÌc☷Ä1=vdâxÇ:º1qÌC#ðxG7Öñ‰£#ݘÇ:ÄÁ›wˆãÝÇ:ÞÑŽˆcëèÆ;Ä1nÌC#âèˆ;ıŽnÌã™G7Þyˆc_Ç<ÖáŽutÃ!éÆ<ıŽnhÄïXÇ<Än¼£#óЈ8ôŽnÌCóXG7æÑ‘„ÌãKþ∇8âÑyˆcÕˆ8ÞÁ-qÌCóÇ;:2nˆc뀇842ÞtC#ïX‡8x3utcâ˜G7Ö1Žˆ£#óXG742ÌCóX‡8æ¡‘nÌC#óG<4ÒwhëpˆFÄ1qÌ£ñG<ÖÑŽÀCóèÆ;Ä1nh¤ïÇ<>2u¼£ïG<ÄñŽu¼c☇8æ!Žutãâ˜Ç:Ä1uˆcݘG7æñŽu|dݘÇ:ºtcqGB4"ˆcïÐH7:òŽu\gâ˜Ç;º1nÌCÑHB0z0"Y‡8â±qÄcâþHˆFÄ1n¼£óÇ;Ö!Ì£_š‡;Þ¡‘n8dðX‡8æÑ tc∇Fæ¡xðFó‡FæñŽx¼#Œ8FÄðŽnÌCÝH„8x#ŽuÌ£#óXG7ÞÑ tcÝx‡8²qÄCï˜G<ÖÑw¬ãݘ‡8æ!ŽutCóàÍ;4q¼câpˆ8Þ±q¼#™Ç;Ö‘ÌCéÆ;â!ŽyÄ#ݘ‡8ÖñŽũ8ÌC7ðÆâ0ë ï ë0þëðó  Ñ ï°â0Ý ¶ïÐ ï ñðÑ ó°ó0ï°â0â0ÝðóNÒìó qñÝÀXó°l1lâÑ ë ó óÀñ !ñðëðÎ!nÝÀÝ®7OÜ:qß7Oܺwç‰èNœ¸uâæ­{÷n¸yëÄ­ëF°ÛþQ|ìg?ûÈÇ?òñ|ìgûÙG>ö“_þcùØÏ>š¹|ü#ÿÈÇ~ö‘äãùØO>ö“_Ö#ûÙG>þ‘ýÔ×ùøG>ö“ý¼ƒ²ˆD7à1uÌ#Oóˆ8"ñyˆƒFë˜G=Ö1qì¨ëØÑ:걎y¼ƒFâÎ:fT­£âÎ;fôŽy¬£â¨Ç<걎y¬£ë˜Ç:´4ÓuPÂñèAºAK­CÝ€t(‚ytcâXÇ<ò4Ì£ëèÆ<Ö1nÌ#ÝXÇ<Öq„ë˜Ç:Þ!ŽHgþóXÇ<Ä1¬Cé†8æ!‚ˆc óèÆ;ºAnÌCÝ#Ž‘1ˆcÝXÇ;(Ñwˆc ñxAºñŽnÌ£ïÇ<Ö1x¬C™G7æÑwˆ#ïÈS¹Äw ¤ñ8<Ä1ˆcâ˜Ç@à!ŽHGéÆ\æ1q ëèÆ:Ä®y¸â˜G7Þ±q¼ã ïè¸Ä1—n¼c óXG7æ!ŽutcïÇ<"Žyˆc뀇8æ±qÌ£ïˆ8â1yˆãÝÈ;Ö!Žy¼CóG<Ö1nÌ£óÇ<Ä!n¼£ïÈ<Ä1q¬£ëþ˜G7Þ1u¼CñÇ<Ö‘§uˆcâ˜Ç:Ä1wˆ#$ë‰8æ±q¬£ïÇ<º!Žu¼#OõA$|‘‡¬CñèÆ;2q¬£±Ô:º1‚ˆcyÇ<Ö!Žx dÝxÇ@ıŽw¬#$óˆ8æÑ q¼CóÇ<Ö1qÌCéÆ;qÌc â˜Ç8Ä1n„DFZÇ;æñ޹ˆ\â˜G7汎wŒ¬Ý ˆ8êшcâˆ8â1q€këèÆ<Ö‘'‚Ìâ8H=À5wˆcÇ:Ä1u¸ãëÇ@汎w dÝX‡8æ!ŽxˆcâxþÇ<,5nH§Ç:ºAqÌc ÝÇ<º!ŽyäiïèÆ:æ±w$OóÇ<º!Žytc☇¥æ!Žytã™Ç:Ä1q d™‡;Ä1w¬cëxG7Þ1—<ÍcâW7ò4qˆc ݘ‡8ê±q¬£™Ç:Ä1nHg îˆ8Ö!Žw¬ãݘ‡8Þ1qÌCïÇ<Ä!u¸ã â˜Ç:Ä1q¼£óÇ<Þ!ŽytcóÇ<æòq¬£óXÇ;Äw¬ã☇8ÖѹtcÝH7Ä1‚tc똇8ÒwDyÇ@æ!ŽxÀB ‘øGþ?š™ä#ûøG>þ‘zäc?ùøÇ>þ‘ýÔãùØÇ~ò±Ÿ|ü#ûØO>ê‘zäãûøG>ê‘zäcÿÈÇ~êñ~ì'ÿØÇ?òQ|ì'ÿèÇ?òQ|ì§ÿ؇8>q‹H¬#O™Ç@ÜñŽuDâñ˜Ç@à1ÌcÒY<Ö!ŽwÌc ðH=Ö1uÌc ð˜‡w˜‡u˜xXqxq˜‡u‡zxéX‡y‡yX‡y‡zx‡xxqx‡yX‡zX‡yX‡zxxxwˆy€‡wˆ„[x‡u‡y qˆ‡w˜‡wˆ‡w€y¨Fuþéè†u˜‡€‡nX‡yX‡n˜‡nx‡nX‡wX‡n‡u˜qˆ<™‡nx‡yXK™qXq—yXqˆ‚˜q˜‡u˜‡uè†w‡x8ˆnx‡xx‡H„cÈ1˜qˆnH„w˜‹nX‡y‡x‡xè†w˜‡wè†u‡ux‡x‡yè†yè†u˜‚x‡y‡up‚˜‡‡z‡wè†w‡y‡wX‡nxqX‡yX‡n¨q˜ q˜qX‡y‡u˜q˜‡nX‡y˜‹w˜‡˜q qx‡uxqX‡y‡˜q ˆx‡u˜qX‡‡ƒˆ‡Òÿòý#ýï_½|çð>PâéõþÕË—ô¿zÿêÝ&Mú_½¤o×û—¯Þ?Òùþå«÷/_½õþåûW¯[$Y‘Þ­GQܺwëÄEú—PÜ»nóÖ½£8OÜ:ó¼³Fâ$ôŽ8óˆÓÍ&€’<À:ñˆ³ŽHëÌ#Î;ݬóNBóˆþÓÍ<â¼ÓÍ;ݼ#Î:âÌóÎ:ó$8ëÌÃ8ït3OBïˆóŽ8‘ÜBÑ;â$$Î:ÝÌÓÍ<â %!¬38 Í#Î<â¼ÓÍ<8ëÌ#`ït38ót“8‰”8‰8ïÀ“Ð;ÝÔ#Î:ó¬#R7󈳎8ݬ#N7!0rLbˆ³Î;ñˆC EâÌCÑ<@a”Ð<âÌ#Î<ݼ#N<óˆ“Ð<ï&PïˆÏ;ó$4Ï:ï¬óÎ< ‰3Ï:DͳŽ8ót<ë̳Ž8ët³Î<ݬóEâÌÓM7ót3Ï:âÌ#NBõP$Î;âÌ#Î< ¹ÓÍ:â¼³Ž8€þ­#Î<∔FóˆS8 Í#Î<݈³Î;ët³Î<@ͳŽ8ó¬#Î<ݬÓÍ:âÌ“H€‰38õt3O7ó$ôŽ8ó¬#ŽH븳N7ït“8 ͳŽ;â̳Ž8ó¬Ï:Ý$Ï:âÌ“8ñ¬#N< a48@¹óFëˆ%Çä@7ï¬óŽ8ë̳Ž8ݬ#Î:âˆôÎ:ó¬óNBóˆ#PÝÌ#Î;â$ÄPBótóÎ:âÌóN7â$Ô CâÌC‘8ó`8ñ¼T7 ‰3Ï:ð¬#Î<Î;âÔ#NBÝPÄPBâÄOBîˆ3OBâÌã.Eó¬ãC@u#Î; ÅóNBþóˆ#Ò:îPôŽ8ñ$$Î< u3Ï:ó¬#Î<âÌ“P7óˆóN7ó¬óÎ:â$4Pâ¬ÓHët³Ž8ót“P7 ‰óŽ8ïÄ3Ï:ݬ3EðPO7âÌ#Î:ïtÏ:汎yˆcÝHÈ<ÜÑuÌ#!ÝÌ;0’nÌcݘÇ:º1nÌCóÇ<Ö1q$dëèÆ;02j½CGBÄ‘y¬ãëèÆ;ÖÁ„ˆcÝxÇ:ÄwÌ£óHˆ;Ö!Ž„`$!ÝxG7D²ŽnˆcÝ È<àA‘nˆDëÇ<ÖÑ„¼#!ïHH<(2uˆcâ H7æA”w$D@™‡þ8ⱎyPDó H702u¼CïèÆ:æ!Žy¬ïÇ<ÖÑutãÝ ˆ8æ!Žutã ¹…"ñzäãõÈÇ?êñã°Ò8õø‡qþAš|܆4ÿ¨G>Α¨ƒøG=þaœzü#ÿ¨Ç?Z™äã­üiþAšÔãù¨+Ióz䣬üÇ:"á Jtã™Ç:02„Db@Ç:º!Ž„tãë –8Ö1wÌCÝXG7ÖñŽN€ Ö Ç&0ðŒtãâXµºñŽu¼# éCÄñŽu¼£ïèE¨…‘n¬C G7Äñq¼£ëÀÈ;þºñŽyDÂëÇ<€2uˆãâxÇ:ðsÈ¢ðèF=ÄA‘w$DÇ<ÄñŠÌCëÇ<º1nÌ£ñ ˆ8æ!Žyˆcâ˜GBܱŽw¬ã Ç<ºñŽ„ÌCë Ö;ºuˆdïˆÇ;BˆcäA aH"Ä1q$¤óèÆ:ºy¬C$☇8æ! ¼#!óGBºAwÌ#!óÇ<ÄñŽn¬CëèÆ:Ä‘j%dݘFÖ!Žy¼C™‡8Æ1n¬#âXÇ<ÄñŽuÌCë˜GBBqÌ(㘇8Ö1wP¤ aÈ<â!ŽyP똇8(þB­uˆ$!ïXÇ;(2qÄ0ëèÆ<Ä‘nÔcâ˜Ç:º‘yPD ÁH7æ!ŽyåâHˆ8æ!Žw¬C ÁH<Äq¼óHÈ<ıŽwF™‡82ŒØWïˆGB౎yˆcïG<Þ1x„€ÇÈCÞ‘w$¤óXÇ;2wP+!ݘF2n¬Ã ™PÞ!Žuˆãâ˜G7#ŽxPäëxGBÄ‘w¬cï Fæ!Ž„ÔCóGBæ‘qæö]‡8Ö1„ˆ#!ïˆFDÒ„ÀcóÇ:à‘q¼£ë‡;òŽx`$!âJ7Ö!þŽw$dâxÇ:Ä1ut#!ïèÆ<º1„t@yÇ:Þ±q¬CñÇ:Ä„Ì#!ïèÆ:ıŽy¬£먇8(„tcâHˆ8æ‘utcâXÇ;óŽn¬£óèÆ<ºq¬£ YG7æ!Ž„ÌC™`ÄñŽuˆcݘG7æÑutcâHÈ<º±Žyˆc aÈ<â!ŽyˆcóÊ;Äa_Œ¬ãâHÈ<"Žn¼cy‡8Ö1qÌ#!óHÈ;¨µ‘¬#Y‡8Ö!Žy¬ãÝXÇ<ÄñqE éÆ:æ!Ž„Ì#óGBæ!Žwtƒ"âXÇ<2þqÌCóÀH7౎y¬£ðHˆHÞÑ„ÄC™FòŽ„¼c y<Ö1„ÌC‡/ĉÛÔÃ8ÿ¨G>ê¡ÌVÖ#õÈÇ?ê1eÎ#ÀÇ>öQÌ#¨Ç?òÁŽÌ#`C( g°²ÆùG=XùVþ£•ÿhå?êÁJqD‘xÇ:Þ1nˆäݘ‡8"ñj­CëèÆ;Ö‘ut#! ‰h7€B­AÔÂÈ3°ŽnhC@¾!Žn°á¨µ"@/øFBÄÑ„¼#!âxG7PÄ;tÃ;tÃ;tÃ:¼C7¼C7ˆ%ƒ8ÌCþ7¬Ã<ˆÃÔC>ÌC+ÕC>ÔC>ÔÃâåÃ<Ç<(S=„CˆÄ=0ÌÃ3@=ÌC=°ÃÔÃ3ÔÃ<„äÃ<°Ò<°R=Ì+‘F>ÔƒqÔC>ÔƒqÌC>ÔC>ÔC>¼C$Ü%$D7¼µ¬Ã;tÃ;¬C$üÃ:ˆþÃ:tÃ:ˆµ¬C7¬FPË8PÄ8ŒC7ˆC±>ƒðB±ŽÃ:ˆÃ3À8tC œÀ7lÃàÀ8lüB7&ˆC7¤À P9ÀtÃ8¬C7Œµ4ë8ˆC74k7Œƒ8¬Ã8tÃ8ˆÃ8$D"ÜEˆEˆÃ:ˆÃ<¼CB€8Ô#„EˆÃ<¬<`Ä:ˆÃ;ˆÃ<ˆÃÌ+ÍCŠ+Í+ÕC>ÌC=ÌC=̃1þÀ4$4Ô;À<ÔÃ<°ÃÌC:À7äÃ<œÌC=Ç<Ô+ÍC>ÌC=ÌC>̃qF>̃qÌÃâ­C$ÜB$ˆÃ:ă80Ä<ˆÃ;¬ƒ8PÂ?pC³Š¼Ž7lö8p7Œƒ84+78¼ZÃ37hðF¤ŒÃ6PFŒÃ6/7èBÀ«8«8Œƒ8ŒÃ:Œƒ8+:ˆÃ8ˆƒg¯%ØÂ:̃8ÀÃ:̃8ÌÃ:ÌC7¬ƒ8¬ˆ%„FÌCBˆÃ;¬ÃN·Ç»=æ&nœ¸qâºu[ÉV·x »Íë6¯Û;qñÈi*þÄ„â˜M7ÄH@ŠãÙÇ:"!‹wtãâˆG7Þ!Ž…Ä£óæ!J„ ë˜ÇBÄ1“u#s9Yˆ8æ!ŽÌ‰ã ™‡8æ±n¼#똇8æÑy,¤n‹‡8ÖÑ…ÌãóÇ:Þ1w,DóÇ:ıqþt#Œ8FÄàŽn¼c!èÆ<º1q¬cݘG7æ!·=dnG<Ö!Žy¸­ïÇàÖà`6ŠA@^ ²¡>à€$¤aŠÀ€ˆ ÄÁé¬ÁëÄÁëœN¤O¹Áé¤ÁÄá"AæAþÖ!ºaºç¡»æÁ(!ºÅa’qÄaæaÞ¡ÖÖaÖAÞ¡æAÖ¡ÖaÄaÄa0rÄÅaÄaÞAæ¡ôçAÖ¡Þa<²ÖAº!áò@ ÄáÄ!ÖPñÖ¡ÞaÞAæaÜ¡»aÄaÄÝaÞ»Aæ¡ÞÅáÄáçAæ¡ÞaÄaÞAPQæAÖáºaºáæabÄ!P±æ¡Ä!’qÖÁÖárbºáPÄaÄaÄaÞ¡âÅ!þ'0ÅaÖ¡"'Ö¡ÖAæA’±ZQÖAÖáÄ!»a0rºáZñº!ÖaPñÄaZ çÅaÄ!æ¡Þ!çá!æ¡sBæá!ZQæAæAæ»!ºaÄaÞaÞ¡çAæaÄaÞaÄÅaºÁÐÄ¡ÆAæ!áòæaº!ZñÄaÖá!ÖAæ¡æ¡ÖáÄaZ±æ¡æ¡ÞaÖ!:Ö¡æAÞaæAæÝAÞaÞaºç¡ÄaºAÖAÖArBÞaæÅ!Þþ#çAÖAâ¡Þ¡rBÖAâAâç!ÝáÄaÄábZJæaàAÞAÖáÖá!æ¡ÞaÞAæaºaZjæAæaàAæAæa"'ÖAæAPñºß¢ßAÞ¡ÄaÄaPQÖAÖáºáÖábvæÁP1P±Þá!âáÖAæAÖAPQPqZ1Ö¡¥ºaÄß¡æßaÞAæAÞ»aæaºaæaºaº#ß¡æaÄ!ÄaÖÁÖáÖaÖAÞabPñþZqÖÁºaæAæ!f»aÄaÄÅÅçA’qP±’±Ö¡ºaÄaÄ!'ÖAPQæ¡æ»!ZqZqÖá0Ö¡¥ÖAÖ¡Ö¡æ¡rbæ¡PqÄaÄaºaæãç»áÖáºabÄ!ÖAPqàAÖáŽù˜Åa|A "áæÁòÁæ¡æÁê!'ÌA/ò†Ì!ô¢fèz¢æáÄ!'ê†ê!'ÌA/Ì!Ì!ÌaÌ!'Ì!'Ì!'òaÌ!'êaêaâa"á"AæÅaþºßaáèNœn¦¥Áëf:¤AèÎé¬!èÎë¬!¸ÁèÎé>é²Á²á“èÎé¤!¬¡lÚ¦³A¤AšÁéÄáÄA²A¼Žî¼N¬a"AÖaºáºáP±ÄaÖ¡¥ êB@æáAæAPqÜáPQÞAPñÄ!º!'ÖAP±æAæAæAæ¡ÖaP±rbÞ¡Þ!:Ö¡æaºaæáÖAÎŽùâáB€náÄàÖáÖA¡ÎyÄaÞ¡Ö!bæaæ¡ÖaÄá¢þcÄaÞ¡Þ¡æAPñÄaÞAPqÄçaºaÞæáœ×áºáÖ¡râœÅaæAÞ»aºaâÄ¡Öá!PqÄaæAPqºaÞaÄaÞ!:æAÖaÄaÄaÂdÖ¡ÖAÖ!'ºaæ¡æAÖaÄaÖaŽyÄaæaÞ¡æAæAÖAÞaÄaġޡPQPñºabºaæaæÅáºaÄá˜ãáºáœ»aºaŽy޹PQæßç¡æ¡æAÖ¡PQP±æáþÄáâAæ¡ÖaÞaæáÜ!Áò ÖAÞ¡æAP1º¡'ÖaºáºáæAÞ¡æAæá˜»áÖ¡æçãAæ¡æ¡æAZªPQPqÄáæAÞaÄaæaºÅÅá˜çAÖáêßaÞ¡ÄáêßᘻÖaÄ¡¥âAÖaÞ»áâá!ÖáŽyÄ¡¥ÄáŽùÖAPQιPñŽYr":æaº!ÄßÅaÞaàûÖáæaæ¡ÖaÖaÖaÄáæAÖ¡æAþÖÁP±à{ÞaZjÄ¡¥ºaæàÛPqßáœ[jÄaºaÄaºaæAÖ!ÄaÄáPQæ¡ÖaÄaÄß¡rBÞ¡޹໥PQæ¡æAæá!ZjºaºaÄaÄaÄç¡ÖaÄççAÖ޹æAÞÁÖaÄá˜ßaÞ¡æ!:æçß¡æAÞaºaÄ¡Üá˜Å¡PqÄßAÖáâAP1ºá¢cÄçAæAæAP±ÖaºÅaÄçAÞaæáœsþBÖAÞá˜Ýá˜çaÞA`!(á2®zâæ!Ì!'Ì!'âáæAÞaÞa ¬tþçæAê!æÁÐêA¢ž¸uóæÅ›g® B…ñ Æ›/ÞÂxóÞÍ{‡±ž¸H·(Íë¶NÜ»nñÄ­·ŽÒ¿l,¥±|™Mš´—2ef« SÌl5_Ê|)3›Ìl2­ÕÜYSZ¶šÙjf«ÉRæËn‘nÍëönÝ»yâ ®ë6O\·õæQ 1¯ÛºµñºÍ·®Û;qâæ½[‹7ž¸wÝÖ‰›·v^·uëæ‰[×ð:qëÞuG8ž¸wŠ×‰[7¯Û:q„ç‰SÁ:J"¡„ê #1ú–cþ¡D …æY'qÞ‰Gœn扄ÀŸ:‘H œ‘H(IäpF"a„jª rF¨þ$’D¨frF¦|jJ„ª™:‘D"|jJ¹¥™wÖgžuº™Ç$„æ‰Gä£$„uÄ™GwR{Çæ¨“ægžuºþ™gnÖéfqÖygqzgqæh!qæ§Ü1)qê¦qæHœwæéfqº !_þ£,$óHM7Ò ˆ#â˜Ç:º1qÌcâXÇ<Ö!ù¬£ë‡@Ä1wt#ïH7æÑ ˆ#ÝÇ:Þ!Žytcâ˜G7òˆ#™‡8æ!x d»Yˆ8æÑuˆC ó@ÈÝ@È<²x¬cÇ<ºñŽnÌcÝÈ;ÖñŽn¼câˆÇ:Ä1wˆ#Ç<ÖqÄCó8£@Þþ±Žy¬CñXG72w¬CóèÆ;ºñqdDH<Ö!Žy¤\‡8"Žyˆc™G72nDóx‡8BÀˆcü!‡|Ö3Æc™G7º1utƒ•ëÇ<)ŽytC Ý8c7Þ!qÌcóX‡8Þ±Žn¼ãŒïG<º1qÌCóxÇ<ÞÑy¬CõÇ»!ŽyˆC â˜G7Ä1qÌ£‘óG=ÄÑuˆcݘG7æ!Ìc☇8â!qdëèÆ<º1Àcâ˜Ç:Þ!qÄ£똇@ºñŽyˆcïÇ;Ä1utcݘG7æ±þŽy¬cݘÇ:æ±x¬Có‡@Ä1uÀãgœG7ä#q¬cgœ‡3űqÌ£óÈ<ÜqÌC@º3ŠcÓœ‡89uÀcݘG7æÑwˆc™Ç:Ä1qtãŒð`å<Î8w¬ãâˆ8æ!qÌ㌠éÆ;Ö1uˆcâˆ8æ!ŽwˆcgÇçáÌwˆcâ`e7Þ±qœñ☇@Ä!Ÿuˆcë+»ñ¼ãŒâ˜¦@à!qÌ£éÆBÄ1VΣóˆ8æ!ŽFvc☇@º1nÌ£ñxÇ:Äñq¬£똇8æñŽþn¼£óèF<Òwd!ëxG$þa XÈâ·Å„o‹[Èb²°ð„a! XLذ°°,n!‹[À¢Ã°¸…,n‹ Ãâ°°Å-dqc Û;–Å-daaXÜB·€Å„}!‹[XÍøG$Ö!t!ñÇ<ÖñŽu¼£I–Å„eá‹[ØbÂ7¾…-:,‹[È⾸…,,l‹[øB–…-daaYLض¸…-’ÜaYXX·Å-dq‹û–Å-dq Y4£ëx‡8æñŽnÌcâÏç€yÔƒ!€G7âñŽ3ÂcïÇ<º1Ín¬CóXG7Ù…þtC â˜G7"ŽyˆãŒâ˜Ç;æ!ŽwˆcÝÈ<ª»ŽytãëxG<ÞF#bxÇ:æ!ŽnP¢óG=ÄñìwtcñèÆ<º±ŽwÀC óèÆ:ıŽydéÆ;ºq¬cÝXG=Ä1uÄcóÇ;º±Žy4²™Ç4»1q¼#ë€G#ç!Ž…ˆcóÈ<Ä1ˆ£ó‡@æ!ŽuÀcšâXÇïèÆ<ºñŽn¬cñXH7æ!Žykâ˜Ç;ºñŽ…¼c!âhé<º±ŽnÈuþ¾zÇ:Þ±Žwˆc!óh©8æ±w”¥ïXG<ıŽnÌCóë;Ön,dâHî:Þ±ŽwtcóÇ;"Žutc!ݘ‡\»±Žyˆ£¥óèÆ<ÄÑRqÌãóXÈ<ıŽytcݨ‡8æ‘ÜwtcóÇ<ıŽwt£,aï:º±yˆ#âXÇ<Þ!Ž…Ì#âXÈ;æ!ŽyˆcÝXˆ8äÚutc éÆBÄQ‘n,dñÇ: P‚,†`ðXÈ<â!Žy¬£ëÇ:ÞÑ…Ì£>ÉG}æ!Žävc ‰GK+"Žy¬ã-‡8âÑ–¾£ïÇ<ÄÑÒytcâþèFqŒ<ˆAóXG<Ö‘ˆwˆãì}GKÅ1u¼cïX‡8ÞQŸwˆcÝxÇ:ıxtcïXÇ;ÖñŽy¼CeÇ<Òytc!ÝÇ<º±q”¥ïë<Ä1uˆ£Ýx‡8â!Ž–vcâ˜Ç;Ä1qÌ£ïXG7æ!Žw,dõYGEÖñŽy¬CóXG7æ!Žy¬ãâ˜Ç:à!Wq,äëÇ<º1n¼CYÇ<Ä1q¼C$vGEÄ1w°·ë˜GKß!Žz,DeYˆ8ⱎw¬ãóXˆ8êÑÒnÌ£8æÑävcÝXG7Þ!ŽxXóXþˆ8æÑw´ô ™‡8ÖñŽytÀ˜ðZÚ²¬£r…ÇBÄ1n¬£ëÇ<Ä1qÄCñ+<Ö1¹Îcâ˜Ç8Ä1äŠcÝxÇ<óŽ–vãëx‡8汎y´Tõh©8RŸyˆ£¥â˜G7ÞÑx¬ãóX‡8ÖñŽn¼câXÈ<Ö!Ž…ÌCóXÈ;Ä1qÌcóXG7æÑytc Ç;Òwtc GEº1n¬ãâH®8âÑÒyÀc!YH<Ò Å¬ãÝxGKÅÑRqÌC ™G7Z:¹¾£óXÈ<º1…Ìcóh©8Z*ŽwˆcïÇþ;Ø;–vc먈8âŽutƒ8,Ä<,„;tÃ:tÃ<´”8TÄBˆÃ<,Ä;,„cÄÃÒæ‡´n>{ç³nºYgq>ƒ‡´n>ç³wºùlžuºy'q>k¨›uàù¬›ÏÄù¬›wº‰pËæéæ³wâéfqÖ±l†Ö™Gœy>{gwÄùlžnægq>‡´wÖ©‡´næg†âQ+>qægžÏÞéfwÖ糆ęGœøÄy'žnH›§›xºy§›uæùlÒÄyGœÏÄyþ'¾n>çyÄ™GœÏĉ¿uægqÖ‰Gœøz‡´yº‰¯›wÄYgžnâçnægwæygnÞYçnÖ™ç³yÖç3˺ùLœuægy>§¡uâç³wâY§›yÔz§›uæYgµægqâçÏÄygwH‹§›yº™'žuº!mžÏÄYçÏÄ™§›zâ{§›uĉPœyÖyGœøº`-¶á³yÖy'qæéæ³y>‹GœyĉOœwÖç³yÄy§›wH›Gœy>›GœyÄYÇ2qâçuº™GœuægnÞgžnÞgn>§›9&1ÖþQ+žugžnÞYgqæéFœyºùìnâ'¾y>gžnæY§›wÖéæ ×y§›uæQkžuÄ™'¾w>ëÆ²uæqGœwÖ™gwÞYgqæYçuÄùLœøæ!­›yÄ©§›wº™GÒÜyç³nÞùLœSÅ™Gœyº™§›uº!íqây‡´yºy'>x>놴nÄ™GœÏç3qæYGœyxgqÞç³yºY§›†ÖéæʼnçyÄ™çyúLœyºgqây§qægïøÌ<>ÓuÌã3âXG7Ö!ŽzŒã3óèÆ:汎wtã݈Ç;Ô‚$$ èþÆ:Ä1uˆcâøLCæÑuÌ#>ÝxG7Ä1n|æâXÇ;æÑuÌã3ñXÇ<>#ÒˆcâX‡8ÖÑy¬£¤‡8æÑytãŸéÆÓy|¦ï˜Ç:ܱŽw¬£ ‰O7Ä1nÌãñˆZ汎y¬£óÇ:º±qÌCëèÆ<Ä1­ãÝ M7ⱎwˆ#>ÝxÇgÄñqÌãÝhÈ:Äñ™w|FŸ™þiÄ1q|Æï˜Ç:ıŽy¬cïøŒ8H3nÌ£óèiÞ!Žyˆcâ 8æ!Žy¬ëÇ<Ä1qÄCóÇ<>óÒÌã3â˜ÇgÄ1uÌCëx‡8æ!Žu¼£¤™‡8Öñq¼CóàÑ;ÄqÔ£â˜Ç:4ÔuˆcÝøL7æ!ŽutCëèÆ:ÄñËuˆcâXG7æÑuÌCóÇ<ıŽnD¨ë˜G7Äñˈc☇8Ö!Žytã3â˜Çg汎n|Fñx‡8æ!Žx¼ƒ4ó€G7Þ±Žw|fÝøL7>wˆ#â˜Ç;>#Žy|FóøŒ8þ"4u4Ä2ݰÌ:Ä1uÌCóPË<ıqÌ£ëÇ<º1w|fÝxÇg汎nÌCóÐÐ:Þ!ŽytãñéÆ<>3 ­CóX‡8>#ŽøÌã3ݘ‡8æÑϼ£ëˆÇ:æ!Žuˆã3óøL7ⱎwDHïÇ<Äñ™n¼£ñ™G7>ãŽwFóÇ<"Ôw¬ãŸq‡8æñxˆãóÇ<Äu QHBÄñq|¦ïøL7æ!Žw¬C–Y<ÖñŽuˆãâ˜G7Þ±Žw|FóèÆ;Ä1n|F–ÑÐ;ÖñqÌãÝXÇ<º1ψ#ëx‡8âþñqÌãT!ˆÄ1þ †yœJ”xG7Þ±x¦!݈O<Äq¬ÃŸÇ:æÑy¨…4ñGCæ!ŽwÌCóˆ‡ZæÑyˆcøÇ:º±µ4DóPË;Ö!ŽÏt#Bóø qÌ#>óXG7HÓyDh¤ÇgºñŽnÌCóÇ;ÄŸ†Ì#>óÇg汎nÔcݘ‡8ܱŽyˆc∇8HÓy¬ãš‡8â3nÌCŸÑÐ:Ô²Žytc¤™‡8âAšytã3â˜G|ıŽyˆãóXÇ8æÑyˆã3ݘ‡8Þ±þŽw¬C– p…4$>âˆP7Ö1üÌCóXÇ;æÑÏÌC¤éÆ:æÑuÌC-ëÇ:æÑzˆ#âX‡eÄñŽn¬câ M<ºñŽn¼£õÇ;º1qÌCŸiÈ:Äñq¼£¤™‡8HÓn¬#âøÌ;Ä1uÌCóˆO7â#ŽyˆcâèF=Ô²qÌã3â Í<ıŽy¬c☇8Òyˆã⨇8H#ŽwtcâxÇ:Þ!ŽÏÌ#ïèÆ;ºñw|fñxG7ÖÑ ÒÌã3óXG7æAšxtcðXÇ<Ä1qDèëiæ!ŽøXFóøL7ÞÑþyˆ#>î˜ÇgæÑ x¬Ã2ݘ‡8ÖñŽn¬CóXG7ÖñŽuˆ£!óÇ:Ä1n¼£ï€iÞ!ŽÕã3óP 汎xtcj™‡8â#ŽuÄ£ë˜Ç;ºñ™yˆcæ¡ÖaÄáHCÖaÄáæáºaÄ>£ÄaÖáÖ!>Cæ¡!,£ÖaÄ!ºaÖÁ2Ä!Äá3àaæAÜá3æAæaÞ!>æ¡æAæAÞaàá3æ4Þ4ºaæAæ¡æaæ¡>cÞAÖaÄaâAæá3ÄaH£H£ÖáÖAHCHcÄ4þÞaâ¡ÖAæá3Äaâ¡æA>ÖaÄaÄ4Äa4dÞ¡âcÞAæaæAÖaHCÖAÖAÖaÄá—bÄ!º4à4ºaæA>cÖæá3æÖaÄaºaÄá3æ¡âã>C>c>cºá3Þ¡æ¡ÖÁÖaÄ¡!æá3æaâA>cÄaÄaÄá3ÞAæAæ¡>CÖHcÄaæABHãæA"D°Àl æAæ!>æAÖaºaºa>£Öaæ¡æáÖ!Äá3æAÖÁ2Äáþ3Þ¡>cÖ¡HcÄaâ¡Öáæ¡>Cæ!ºaÄáºaÖaºaÄ¡B€|!Ä@Ö¡Þa(!>ÄaÄ4ÄaÄaº!ÖaÄáHCÖáºa,cÄaÞaºaÞaºá3ºÁ2>C>ãâaâaH#>ãºaâáHcÖAæAæA>ÃÐAæaà¡æAHCâaÞ¡æ¡Neæ¡ÖAæ4º4ÄaÖ¡ÖAæAæ¡ÖA-ÞAæá3ÞAæAâaæAêAæAÖ¡>ÃÖ¡ÞaÄá3Þþ4º¡!Ä4Þá3æaàáºA>Cæá3ÄaÖaÜA>CÖaÖ¡!æa,£Þ¡H£Þ!>ÄáÄaÖ¡HÖa>C>ãÄáºáæá3ÄáÄaºaÖ¡ÖAB`b` æAæ4æaÜaÞA>cÞAæ¡æaºáÄaºáæAÖáÄá3Äá3,cæ¡ÞaÞaæá3ºáÄ!ÄaæAêaÖáÖáÄ!ÖáÄ!º4æÁÖA>£!Ä!>úaÄ¡ºA>CbÄ4Äá3ºaÄaÄ!þÄa>ºaº!ÞaÞaÖaºaHÃÄ!Bºá>C-â¡ÞAæaÞaÖAâ¡!ÖaâcÖ¡>ãHCÞAæ¡"DæaºAê¡"DÖá>Câc>Cæ¡æaæaÄá3æá3Ô">ÜáÖáºÁ2ÄaºáºaÄaÞaÄaºáºaÄ!Þaæ¡æá3ºaÖAÖ¡,cºáÖáºáÄaÄaHÄaÆaÄá3Bæá3Ü¡ÄaÞ¡Öa>cÄaÄaÄá3ÄaºáÖA>cºáHCêaþÄaÖ¡âaÄá3ºaÞaÄ¡!ÖA>Cæ!>ºaºáÄa>ãºa4äÄ!æá3Ô¢!Äaºá3Ô‚4ÜaÞ¡â¡âAæaðcÖAæaÄaÖAâ£Ö¡ÞAê¡>C>Cx¤âCæAâaºa>Cêá3æA>cÖAÖAÖáâ>£Þ¡æ!>ºaâÖa"BàAH£Ä!BÄaÖA,ã3Äa>Ã"¤HãÖAæaÄaÄaÖAÖaÖ¡>£>ÆA>cÖ¡ÞaÖ¡ÞAêAÖþAæ!>ºá3ºaæ4ºáÄáÄ!>ºAÖ¡>ãæA>Cæ¡ÖaÖ¡Þ¡âaÞá3ÞAÞAæaºaÖAâáHCÞaºaæAæ¡æa b B>CæaÄÁ2ºáºáº4Ä!ÄáÄaÄ!>ºaÔâ3æ!Bºa>Cæ¡ÞaºáÄaºáHC>£âá3ÄaºáÖáâáB€Ž!Äà3ÞaÆ!ÞA-ÖáºaÄa,£æAÞ¡HãÄÁæ4Þá3ºa>cÄ!ÄaÄ4ÞACæAÖaþġ֡ÖA~éHCæAºaæ¡æ¡æAÖáÖáÔbÞA>cÄáºaÄáºá3ºaÔbæaºaÔ‚4,C-Þ¡H£ÖÁ2â3Ä¡Ä!>Ä4æAâAâAÖáÄá—Ä!>Þá3à!BÄáÄ!âAæaÄaÄá3Ä¡"BÄ¡ÖAæ¡Hãàaæá3ÄaÄaæ!>æAæA>CÖaâAæAÞaÞ¡ÖAæá3âAÞAÖ!ÄBP à>£>cÔâÄGÞ¡ÞA-ÞaÞAæ¡>cHcþ>c4dÄaÄáºaºaÄaÖ!Ö!Ä!BºaÄáHc>cÄaº¡!âAH#ºaÄ¡!H£!Öa>£HcÄ!>æá3æAâAH#ºá3BCæ¡>CæAÞ4à!Bæ¡!ÖáÖáÖAÖA->£ÞAÖAæA>CæAÖ¡>cNE>£æA,£Ö!ÞaÞaÄaÄaÖaÔ‚4à4ÄÁ2ºá3ºHcÔbÖaºaÄ!BÞaºaÄá"DÞ!Äá3Þ4ºaºáÄaÄáÄaâAÞ¡>ãºþaºaÖáÄaº!>æA-æ4æAÞ¡>ãâaæAÞá3ºaÄ!>Þa,CÖ¡Ä4ºáºaÄaB~iÄáÖaÄaÄ4æAÞaÄ>#Ä!Äáº4ÞAbHCâ3Þ!Bæá3æAÞ¡ÖáÖáÖáÄaâa>CÖAÖaºa"$ÄáÖáÖáàaHcÄaàaæaâAÖ¡ÄaÖaÄ¡!ºaæá3ºaÄá3æA-ÞaÖaÔbÄá3æAâAÞ¡ÖaÔâºÖaÄá3ºaÔâ3þêAâcâ4æAæaÄaæACæá3ºaÄáÄÖaÄ!ÄaæA,Cæ!Äá3Äá3Ä!>ÞaÄaÂ>C>CÖaÄá>c>Càa>cÄ4Äá3Þa‚4æAæá3æA>CæAæaºáÖAÖáÖá>£æAÖáÖ!Ôâ3Äá3ºaæAæAºáæ¡æ¡>£`F`BàÄaæ¡>£ÄáÖ!Äáàa,CÞaâAÞá3æA>câCÖaÄaÖ¡æAæ¡ÞaºaæGæaæaþÞ¡ÖaÖ¡ÖaÄaÄ¡B€Ž!Ä@-æaºÖ!ÄaÖ¡æAÖ¡Þ¡æaÞAæá3¢æaà¡æ¡æAæAâcÖaH£!ºáæ¡æáæ!>ÄaÖÁÞAHÃÞá3,£Þ¡æ¡æAÖA>#ÞAæaÄaÞaÞ¡âaÞAæaºaâaºaÖ¡|DæACr™4ÄaH£ÖAæAÞaÞa"dÄ!BæAb>Äa>cÄaÖ¡æAÞá3Äa>CâAÖaÄaÖAÖa>#Þþá3ÄaHcÄaºaÄaÄáÄáÄ!Bæ¡ÄaÄaºaÄ!ÞAæaº!BÄaÞAæAæaºáÄa>£!Ä!Fp HCæ¡ÖáTæaÄaºaÖá>#æAæaºá> ܉›'nÝ:wÝÞ­›·®Û;qñÄÍëfp]·yÝæ7O\ñà>ñÙîÙ Ÿ ÒðíÙ` þÙ0ñà. MîÒpñÙ0ñ‡îÙòÒpñÙî:Ÿ ß. á. Ö ?ñ / à. Ö à>ñÖ ðÒ` o ÿíÒ á>ñßÞ ‡Ÿ äÞ Ö ðßž ÿíÒ` ÿíÏðÙ@îÙ` ÒîÒòÙ ßôÒðíÒ` ÿíÒòÑ€6ÀÆØ6ÀÆ66ÀÆ6!Pâ°ó0ë0âðÝðݰâ0ïÐ ë0â°õ !±NÜ:‚ëæ‰+¸®[7xç‰[×mž¸wëæ½ëFPÜ;xëæÍ·N\·u⺅`t,qñÄÅ{G‰ ¸uïºÍ[÷þ±à»uâæ¯Û»nïÄÅ{÷Ž`7‚ðŠ[÷Žà<‚âºK*nÞ:q×u›'n^7‚â>®ë&nÞºyëÄ%×MAqóÆuG°Û¼uóº}ìön8‚ïĉ›G°Û¼wâæu·nÞºnïºÅ7O\êæx z§›uºyg¡wºYçqš‡ qö\çuæ9lqÞÙónÖ‚æ!hžn:lqöìfqgwþš‡ xÄYgžnÖgwºy§›„Ä™GœuægqÖy§›yÄ™‡ y’ŠGœuÜ!hžwÖ9ŒØuÄygyÄ™Gœ„ÄYgžÃÖ™Gœwº™§bC“y°ád•MŽ _ޱÅ™ñå[dÆù[ޱg[p¶Å[d¶g£m‘Ù–cl‘Ù£e¶g[|±Å[|±Å[d¶Å[Œ¶çclyºl_ޱÅ[|±åécl1Ûh[|±Å[d¶å[|9Æ_l‰g[|±åéc|±Å[ޱŗclñÅœmyÚ–§mñå[d¶Å[Œ¶Eæcl‘ù[ʶEf[d>Æ[þžv=p[ޱEæclñÅ£ñÅ_ޱå[d>Æh[â>Æœm9Æ_ޱÅ[ޱŗclyÚ_lÁù[žvÝ_l1Ú–²mñå£m1Úu_l‘Ù–clñå×}9Æ_lñå˜ð}±…/lq [àÌue;†-Œf‹ÀÉÌuf;†-df _ØÂ¶ÀÙ1lá‹càÌO³…Ì\g6[<í¶™-žf _Ø¢l®“Ù1Â×@œÙ⮓™-Œv [˜Í¾°…ÙŽa ™Ýâ¶xš-pf £Ã2s má [ÍF;†-Žá:_Ã8;†-|á:úâ®ó…-df _Ø¢þ®“V6G˜Ì!Ç;ÒyˆãëÇ:ÞÑ x¤âXÇ<ıxD똇8æÑ‚ˆãÇ;2„¼cïXÇ;2qÌCïHH7"Žuˆ£!`Ä1ò qÌcï%Ö1u¸Cë˜Ç;"Žyˆcë€Ç:æÑy¦[Ç<Ä1q¼CóÇ<Ö1‚tcâ˜G7Þ!‚ÌcðXG<Än¼ƒ ïXÇ<2u¼ƒ ☇8âQq¬£ïGAÜ‘qÄCñxÇ:’Byˆƒ âøÈžÄ1ñ ñÇ<Ö!Žyˆƒ óXÇ;Ä1n¬C{þš±àñ‚ÌC!È;"Žw¬cÝ È<’òŽu¼ƒ â˜GAæÑ‚Ì£ïÇ< n¬£ï(ˆ8ÖÑy¬ã#ëpÇ;‚tc™Ç:àAytãñ˜G7汎ytcëÇ<Ö!ŽyˆcâÉœ0Ç•!ŒøÄ'"A‰HP‚ŸˆD`#A FP‚ý# ˈO0"°ŒøD$4‰À2â”`D$XF@6°”`dA‰À2‚Œø#ËJ0â‘,#(ñ Í2´Ÿ %4û‰Í2âÁ¥Ä'(ñ ä2â‘l$ K‰À2¹Áý#"ÁˆOP‚Ÿ þÄ'"ñ JV³”,#‚‰ODâ‘ D$‚ËJ0â”`r#A F˜6ŒøD$>A‰O0â”`DpÜH–Ÿ.#> J0²”,#>A F7Œ Ä'4û J0‚¿ ¬f)Áˆàj–Ÿ`Ä'6K‰HPâ”`Ä'ñ‰àF²Œl$L«YF@–‘`Ä'"ÁˆO0‚ŒøD$ñ‰Í~‚Ÿ`D`#A F–‘ #û‰H|"Ÿ`Ä'(‰à~‚Ÿ.dA È2‚Ÿ`r#ÁˆOD‚”Ð,#>ÁˆOP‚Áý#>ÁJ0â‘ø#(±ÙÀF‚Œøþ%ˈOPb³”0m$‚ˈOlö‘ #ˈO0┬fñ J–ŒøD$ ˈOP‚”ìu)ÁˆOPb³”`Ä'(ÁˆOD²Œø#(ñ J@–Ÿ „fÜÍ7È%>ÁJ0‚Ÿˆ%  J0‚Ÿˆ„iñ FP"°‘ø%"A F–”`% äF⌠D$(¡YFP⌠d#A‰ÀR"°”`Dp7 Fv³Œø#(ñ‰H0"°‘ #>ÁJ6(¬fA‰O0â”`%K‰OPâ·”ø+#(ðÕdN0™B0uˆcâHJ7þÞQz¬ãÇ;Ö1n$eâ˜Ç:౎n¼ƒ ó(ˆ8汎wˆcâHÈaæÑufâ(ˆ8æ!ŽytãëÇGvF#bXG7æ!Žw$‚ âXÇ;ÖÑ ‚Ì£ â(ˆ82wDë‡;2nÌCïXÇ;Òuˆcâ˜Ç:æ!ŽxˆcóG7òŽu¼cóAºAqDó(H7òqÌCñÇ<ÄñŽn¬#âxAêq˜uÀ#!óèÆ:ıqÌCëèÆ;ºQwtc™Çaòq¬cy‡;Ö1nÄë˜qXq(ˆyè†u‡yþ8Œu˜qX‡nˆq˜‡nX‡nXq˜qX‡yè†y‡u‚€bé†y‡uˆq(ˆx‚x‡nX‡nXqx‡ÃØ“yèw qxqXqx‚è†wè†uè†wè†yXxHqxs ™(”B)쀘Â+ÄÂ,ÔÂ-äÂ.ôÂ/Ã0Ã1$Ã24Ã3DÃ4TÃ5dÃ6tÃ7„C7ô€8¤Ã8ô€à ™ÃX‡yè†y‡ux‡u˜q(ˆw‡z‡y‡u肇¤è†ux‡ux‚‡u8Œyx‡u‡ux‡‚€‡uøˆw膚q€‚øˆn˜‡nˆq˜þ‚è†u‡nF8†<ƒÃx‡nXJè†xx‡u‡xX‡n‡y‡yXqxq˜‚肇X‡wXq ˆnx‡u‡yHˆyè†yè†yè†uHŠyè†yxqx‡„è†Ã˜‡u‡x‡yXq˜h‚‡n ˆw(ˆyH ‚x‚‡ux‡x˜‡u‡yXw qø‚˜‡u˜‚˜‡u€‚è†yè†uè†w˜‡u‡yHˆÃxqHˆw8Œxx‚˜xè†u‡yè†xøˆnX‡yx‡‚xqˆq˜‚˜‡nx‡n˜‡u˜‡„‡y‡yè†yè†xØ©yXq ˆyþ‚˜‡u‡xx‡yX‡yè†u‡yè†wØ“yX‡y‡yX‡w‡x‡xX‡w‚‡y‡yX‡¤X‡Ã˜q¨‡w0‡zX‡w0‡y‡z8Œyp‡Ã¨‡Ã˜w8Œy‡y‡y8 q˜‡Ã˜w‡ypq˜J‡ypJ8Œypq¨q˜w‡yøÌè‡Ïœw‡y‡y‡z‡y8Œz‡z‡y8Œyp‡w‡yp‡ÜüÌzøÌypq˜q˜‡Ã˜‡Ã˜‡Ã˜w8ŒyøÌy8Œz‡y‡y‡y‡ypq˜q˜wX‡Ã˜‡Ïœ‡Ã˜q˜q˜‡Ïœqþ˜q¨q˜q˜q˜q¨q˜q˜‡Ü¬‡Ã¨‡Ã˜q˜q˜q¨q˜q˜‡Ã˜q˜‡Ã˜q˜q˜‡Ïœ‡Ã˜wxq˜q˜q˜w‡y‡y‡y ÎØw‡y‡y‡ypq˜w‡y8Œy8Œy8Œyp‡w‡yøÌyp‡!wøÌy‡ypq˜q¨q˜q˜w8Œz‡y‡y‡y8Œy‡y8Œy‡z‡z‡y0‡ypq˜‡Ïœq˜‡Ã˜wÈÍzøÌy‡y‡y‡z‡z‡ypq¨q¨q˜w‡y‡y0‡z‡ypþq˜‡Ã˜w‡y‡y8Œyp‡wÈÍyøÌy‡yÈÍy‡z‡y8Œy‡y‡y‡ypq˜wøÌypq˜‡Ï¬‡Ã˜‡Ï¬q¨q˜‡Ã˜‡Ã˜q˜q˜q˜q˜q˜q˜q˜‡Ã˜w‡yp‡uÈÍypq˜q¨q˜s‡zøÌzøÌz‡y‡z‡y‡yÈÍypq˜êœw‡yp‡Ã˜‡Ã˜q˜qˆ‡z‡yøÌy‡y‡y8Œz‡y‡z‡y‡y Îy Îz‡y‡y‡y‡yw‡ypq˜w‡y‡ypq˜wxq˜þwXq˜wRq¨q¨q˜q˜q¨‡Ïœ‡!w˜‡Ã˜q˜q˜s¨q¨q˜‡Ã˜q˜qøˆnx‡nˆq ˆn˜‚‡ux‡‚x‡ux‚xq˜‡u‡u‚‡yX‡X‡n˜‡u˜‡‚€‡q‡uè†ux‡Ã˜‡nx‚‡uè†wè†x‡y‡y(ˆwˆ‡wH8†<ȃw˜‡uxqH„wè‚x‡y‡xX‡n€‚˜qx‡n˜q˜qx‡xèq ˆy(ˆwX‡èwX‡y‡„‡u˜qX‡nx‡n˜‡w‡y‡y‡yˆ‚‡yHˆyþ‡y‡y‡y‡y‡ux‡„˜qè†u8Œyè†y‡¤è†u‡‚‡w ˆyèq˜qè‚‚‡u˜qˆ‡nX‡y ˆn˜‡wè†u˜qX‡yH ‚è†z‡ux‚‡y‡nX‡w˜‡xè†wè†u‡u˜‡nXq˜qX‡x‚è†y‡x‚‡n˜q˜q˜‡n˜‡nx‡nx‡u8ŒnXq˜q(ˆz‡n˜‡‚è†y‡x‡y‡w ˆy‡y‡n˜‡n qX‡y(ˆy‡y‡w(ˆnX‡nX‡yx‡x‡w t‡wX‡w‚˜‡u‡wˆþ‚x‡y‡ux‡y‡y‡y‡˜qX‡y‡¤‡wXq „u‡uH„u˜qHŠu˜qX‡y\ž‚Àeqx‡x‡y‚˜q˜‡„˜qX‡y‡w‡y‡wXiž‡¤X‡‡w˜q˜qøq˜‡x‡yXqx‡xXqX‡yXq˜‚ˆq˜q˜q˜qx‡x‡u‡u¨q˜qX‡‡‡y‡y‡yX‡y‡y8Œuˆq˜q˜qx‡uxq˜qX‡ ˆyXqøqXq˜q ˆx‡y‡‡y‡yxq˜q˜qÀeqXþ‡y‡w‡y‡y‡y‡¤‡y‡y‡X‡X‡y‡wˆq˜q˜qx‡y‡w˜qøqøqøqxqxqÀeqXi^‡y‡wÀeq˜qx‡y‚˜q˜qx‡y ˆy‡y‡y‡u˜q˜qX‡y‚x‡u˜‚‡uˆqX‡yxq˜qøqHŠx˜‡ux‡uøq˜q˜q ˆ¤XqHŠ‚˜qx‡y‡‚x‡u‡wˆq˜‡u‡wˆq˜qX‡y‡w‡yx‡\‡y‡uøˆu˜qX‡w‡‡y‡y‡y‡w˜qþx‡xøqx‡u‡yx‡ux‡u˜qøˆ„xq˜‡u‡wˆq˜q˜q˜q˜q˜q˜qXq˜‡u‡w˜qxqfqx‡y8Œw ˆxx‡u˜‡xx‡uˆ‡xx‡uxq ˆy‡y‡X‡y‡u˜qÀåu˜qx‡y‡¤˜qøq˜q(ˆy\‡y‡y‡y ˆy‚˜q˜q`gqX‡ˆ‚xq˜q˜q˜qX‡wXqx‡y‡wX‡y8Œ¤‡w‡y‡u˜‡ÃX‡X\Nˆy‡y‡ux‡xx‡yv^qxqX‡y‡y‡þwX‡wX‡wX‡wX‡yˆq˜q q˜qx‚˜qx‡n¨qxqHˆn˜q¨qX‡w(ˆy ˆy qX‡nX‡wè†uè†u‚˜‡x‡u˜qˆ‡wè†wè†u˜‚x‡ux‡=é†y‡y‡nF8†?ƒn ˆwXJxq¨‡…HŠux‡‚è†w q˜‡nˆq ˆy qXq¨‡nX‡…x‡u8Œy –nX‡yxqˆq q˜‡n˜‡q˜‡nX‡nØqˆ‡„€q ˆy‡x˜‚è†yXqˆ‚‡yØ“nx‡‚˜q˜‚‡xXqxqˆþqXq˜‡u‡‚‡y‡„‡yX‡w˜‡„è†yx‡uè†uè†wX‡wØq˜‡n˜‚x‡y ˆn˜‚˜‚˜‡nXqˆ‡ux‡nx‡uxq˜‡¤ˆ‡y ˆyHˆwˆ‡‚p‡w膤(q q ˆw˜qx‡u‡y‡‚‡„‡yHˆwX‡Ã˜‡u‡y‡yx‡Ãˆ‡w‡yè†ux‡„‡uHŠuè†yè†yè†yè†uè†yØ“w(q ‚Jè†w(ˆnHŠn ˆ…è†y‡uXˆwØ“yX‡n(q˜q ˆy膤X‡nˆ‡wXìï†uè†wX‡n(ˆnx‡nþˆq ˆnHˆwˆuÝæ­›×mÞºnóÖ‰{'.ž¸yÝÞ½[·nEqï,Îëfq]·"»Íë/Þ¼nóºÍëöNÜ<‹ÝæYì¶NœÅwݺÍ[7¯Û»y"-vº®›Èó,R|gt¸yÝ>v³ØÍb·wëÄÅë6¯Û»uÝÞ­ëf±›Ån»5ý¸“b·uÝ,v£Øm]7‘Ýæ‰›×íã»nóÄYì6¯Û¼Ýæ}œ·NÜ;qâæQ´8¯ÛÐnï,v³(n^7£óÖ‰['.Þ;qóĽ÷îãÒ ‘¼Ã"â°È<ÖñŽ{Îc'óÇ<Æ!޼Ã"óÇ<ÖÑw¬câ˜Ç:ıŽwˆã#ÝxÇ:º1qÌCñXÇ<Æ1”y|dÝÐã:º1uˆcÝX‡8汎yˆcïXÇ<Äñ‘þn³ë˜Ç:º1H†˜ÝÉ;汎wˆ¤âX‡8Ö!Žyt#ó‡EÄ1w¬ãëxÇ:æaqÌÃ"Ýx‡8걎n¬ƒâ°%º1uˆcëxÇGºa‘w|¤ëG<ÖñŽuˆãó°ˆ;ÖñŽ¡tcó‡QÖ!™x¼cëèÆ;,"ŽÌCóXÇ<,"Žˆc"yÇ<ÖÑ ‹¼C™Ç:Ä\‹céÆGº1nÌãy‡8æñŽu¼câX‡8æñ‘y¬â°ˆ8æÑÄcóXÇ;ˆ¹ŽnÌcó‡EÄ1n|Dó <Þ1qÌcðÇ:Þ±Žwþ¬c☇8æ!ŽyˆcëèÆ;æ±qÄCëx‡EÄ!’nÄCë˜ÇG汎yˆcݘÇ;>"Žy¬£ïÇ<,n¼C$ݰH7ⱎwEC™<ô¸Žw|Dñ˜G7æ±qÌcðøˆ8æ±ÉÌãëÇ<ÖÑytCëˆÇ:æa‘wXdëÇ<º1‹tã#âxÇ:Ä1q¬c☇8,¢Çy¬c☇Eº±Žn¬c뀇8æ!™u¼C$ݘ‡EºñŽutãñÇ<º!ŽxXDÝXÇ;ºñq¼cï˜Ç:ÄuˆcÝXÇ;ÖñŽu¼cïG<,"Žy|þä"™G7Ö!Žy¼CóèÆ;Ö1nˆãëÇ<Þq’u¼ƒ˜ëx‡8ÖÑwˆã#ÝxÇ:Þ1”uˆã#☇EtÃPˆƒEˆÃGˆÃ:ˆC<¬Ã; …8ÌÃ:tÃ<|D7¬ÃtÃ;ˆÃ;ˆÃ<ˆÃ;ˆÃ:tÃ;„8ÌC7¬Ã<¬C7¼ÃBˆþÃ;tÃ<<ˆÃ<¬C7¼C7¬Ã;¬ƒ8̃8<̃8„8ÌÃ:ÀÃB̃AÌÃ:ˆƒAÌÃ:ˆÃ<,D7t…AˆÃ;Ð΃]t…8ÌC7¬ƒ8¬Ã;ˆÃ<¬ƒ8ÌÃ;ÄÃ;„@$ÈA<ˆƒAˆC"¬Ã<ˆÃ;̃ADüC7ÌÃ:¼C7¼ÃBÌÃ;tÃBˆC<ˆÃ<ˆƒAtÃ:ÌÃ;tÃBˆÃ:ÌÃ;ÌC7̃8¼C7„8PÂ:¼ƒ8¨Ä<Ä;¬Ã;¬C7ÌC7̃]ă]¼Ã:ă8¼Ca¼Ã<ˆC7¼C7ÄC7ă8¼Ã<†8Ä<„]ÄÃ<„J,D=ˆÃ:ÌC7þÌ<¬Ã<ØÅ:̃8¬ÃC»Ã:ÌÃCσ8¼Ã:¼Ã:¼ÃC¯ƒ8̃8pt7̃8¼<¬Ã<œÖ:ˆƒJpô:̃8¼ƒLà@œažA”`,  &ຊÀà¾ažA”`,`Â)æ¡þæÁ!âºáºaºaæAÞA bÞ¡æ¡)Þ¡BÖAæ¡Þ¡šbBÖAššÂ!ÖaÖ¡æA¢Þ¡æAæAæAšBÖašâº!bÄ%Ä¡)æ¡æA Ä¡ÖAæAbÄaàA ÞjæAæáBÞaÞaÄA æAÞaæÁ!ÖaÄaÄaÄ¡)º!ÄáÖá†ã†BæAæAÞaæaàaæaPbÖáÖaºaÞA ÞA æAP$=ÖaºaÄaæAÞaºaÄaÖAþbÖašbb%ÄaÄáâÖ¡æA PB ÄÁ)êAÞaÖaÖaºaÄaâAšBæ¡æÁ!âAæ¡nÞÁ)Ä¡bºA ÄaâAæ¡æA ÞaÄaÄA âáÖ¡æÁ!šbºaÄaÄaÖaÄaæ¡æAæÁ!Ö¡æaæAÞ!ÄáºašBBæaâ¡æaÞEæaÞÁÖaÖ¡ÄA ÄA æ¡Ö¡æÁ!æ7ÄA æA æa8æAbºaÞAPB ÄA Ä%Ä¡)ÞaÞ¡bxþCÖáºa†ãÖáæÁ)æAÞ¡)æáœÂ%Ä%ºaÄaºaÞ!=Ö¡ÖaœBÖAÖašÂæA ÄaºáºáºAÞæA æAPbÞaÂ%âAÞaÞ¡ÖabâÖáæ¡bbÄ!â¡æ¡æAÖaÞ¡P‚7ÄaæAæA Ä¡)ÄaBæAœâÄašBÖáâ¡â¡bÄA æA ÄA ÞaºaàA æAæanábÞÁšbºaæAPB âAÖAÖ¡æáºÁ%ÞÁ!Þaþæ¡xCœBÞaÞaÄaºaÄaÖ¡Ö¡æAæ¡Ö¡ÞaÄabÞA Ü¡)âAæAÞAšbxCœbÄA ºaÄ¡B€Ž!Ä Ö¡P"æAâAæ¡)þáÄaš¢ÄaÞ¡šâÖAâ%æ¡P¢ÖAšbÆ7Ä!œB(¡æ¡Öašâ€Öa@Þá@æažaÖá`žAÄaR€¾@@ÄaÖAÞa:œá0`ž!ˆà˜ ˆàÂ@ºá ÖaÄ!Äaþ%ÄaÖÁ`žaÖှA6Þa:!œá0àÔA^`ŽaºážaÖ¡æáÀâa`€¾áà ¸ážaº!I`€¨`ºá ÞaÞaÂÄA º¡ŸÖAâ%ÖáÄA ÄaÂ%¢Ö¡ãAæaæaºáÄ!ÄaºÁ)æaÄaÄáÄaÂ%ºA ºaÄaÞjæaàaÄA àAæáÖáâaÞ¡)æaÄA ÄabœbÖAæA ÄaÄaºA àA à¡ÖA†£šbºþáÖAÖ%ÇÞaæA ºáÄaÖÄaÄaÄaœBæ¡æaÞAæ¡ÄáÄA ÄaºAÖABÞaÄaB æaÄaÄašbºÁ)ÄᚢæÁ)æAÖÂ!æ¡"æaÞAæAêAxCÖ¡¨æÖ¡Ö¡Ö¡Þ¡â¡)æAæaÄaºaÞ¡)’d8Äa%Ä!ÖAâ7ÄA ºÁ)æaº¡)Äá\Â!¢\bÄaºáÖAÞAæ¡\bæÁ!bbÞ¡ÄaBæa¢)ÄÁ)þÄa¢Ö¡ÞÁ!æA æaàaÄaÞAæAÞaÂÖAæA æ¡¢æA Äaº¡)ÄA ÄaœB\B ÄaÖAæAÖAÖáÖaºaÄaœBâAæ¡æ¡æaºáºA Äaºa8ºaÄaÄaÒãxcÖAæA æ¡)ÄaÖÞA æ¡BÞ¡ÖAæ¡ÞaÞAâá¢æAâºáÖ¡æaÒcÞ¡)ÞÁ!桚¢Äaºá¢æ¡)ÄÁ)Äaæ¡ÖáÄÁ)ÄaBšB\bÄaÄaþÖạ)Ä¡ÖáÖAæAæAâbâÄaº¡)ÄaºA ÄáÄaºaºaÄáöaºaÞAæAÖáÖ¡æabºáæaÄ!ºA Ä¡)âaæ¡ÖašÖaÖÁœÂ!\bºaÄaÖAæ¡"IÄA æaâáºÁ)Äaºáº!ÄaÖaÜAÄaÖaºáÄa"IB€ŽáÄ`ÄA ºÄaÄA bÞaæAÖAÞ!ÖaºaæAæ¡æA ºaÄÁ)æaæABšþbÖaÄA æaÞ!Þ¡ÞaÄ¡àažœáÄ!`žAæ¡àá`žAàáà¶xA RAÞ¡æ%ࡎàÀàáàæÁàÖá`žAÞA æ¡)æ!P¢)ÄÁ ž!ÖáÀB@ ¾á.`œá¾¡nàxaž!ÖáÖAÞa¾aŒÄáàÞ¡žÞA ¶!x%Œ!æ žø¶n]·nóĽ+¸îÝAqó v›'n]ê-xÄ9èuÄ™Gœyº9¨›wgþnÞ§žnÖç nÄ9HœxÞ9H…Üy©yºyç yºQHœyÐ:¨›wæéfžƒÞYGœxÖgžnÞé&žƒæY§›yÖgžnæYGœƒÄ™gnÖgžuºgqgwgžuºy§›uºygyºYGœyšç nêfžuæAkžn(êænæG¡yÖGœƒæçƒæ¹êuÞ'žnšg¤Þg¤®šgnæéfqgžnÞé&qêfžuæéænâY§qÞéæƒægq®ç wÄY§›xÖg¤Þ'žuº9HœyÖéF¿næ'…ÜYçþq‚ç wÄ™§›wç#qê&žx®ç–æYGœyÄ9hžnÞ)rqæQ(žÖygwÖ™gyº9hq(BKœwšžn‚gq‚§›uÄQ(žyºy©yÄ9¨›uæQHœxšgnÖ™gqæéænÖçuæÑ/„?òȃJ¸¦„‘Ha¤ë°) ›JéÚlF(a$J¦„‘H¸;®ášJÖf$’H¡„JÂŽ„F(a„k³»ûoF(a„’H¸f„F( ›ëH¡ÄlJÂæšJ¡„‘HÂæ:lJ¡„J¡„JÂîšF"±ÝìD"éþ:l®Í¦„JÂî:lJ"a„k³)é»ëH(a„kF(a¤ë°)1ÛvFlg„F(a$JášJÂæšJ¡„J¡dí®#¡„®Ãî:lJ¡„JA‰µQ"l\cÄ߸ÆJ˜Ÿ #(Á®…fë#l—AFP"l‘`%úF‰µý‘×"A Fp-l”[$Á5Fp‘ #(ÁJD‚\cD×ÌF‰°E‚fëZ$(ÁˆHP‚\cD"(Á®E‚‘ D$ÖÖµ°u¶c%ÂF‰°Q"l”`%Áµ°E¢k£DØ(6J0‚Œ #(ÁˆHP‚þ”`%A‰°qÍl]c%A FD‚‘ D$(¶®­Œ #(ÁJD‚‘ „Ù(ÁJ0‚kŒ #¸ Fp-”0×A FP‚]3[×A‰°Q"l”`%ÂF FP‚\ %úF‰°Q"”`×ÌF‰°u-”ˆ#>ÁˆHP‚Ÿˆ% J„kf‹#>a;FPÂl”`%A‰°QÂl‘àZ$(ÁJ„kŒ #(6J0‚ka£#"A‰Ht-l”%A‰°E¢kf£„Ù( J„-Ÿ`×ÂF Ft-\c%ÂF‰°Q‚”%ÂF FD‚þ‘àZØ(¶HP‚”[×A‰¾Q"”%ÁµH0‚ŒèZØ(6J0¢kf£DØ( FP‚”`׉°Q‚‘ #"‘AFP‚”%A FP"l”`D$ºÆˆHt-l\cD$(a6®­-a£Dß JD‚Œ #(Áˆ®1"\c%ÂF F$‚Œè#(a6J„f£„Ù¸ÆJ0‚Œ #¸ÆJ0"ƒf£#(ؾq-l‰ø#(¶®1âo”`× J0‚a£#(ÁJ„aãÚÚ¸ÆJ0‚a Aò †6ˆ!bȃ²&†<ˆ!kHþÇKÄÑ ¤ˆã%/G7òqtc¾ÝÇ|»”nˆ£¾/AJ7ÄÑ q¼)ÝG7Rßù¾)ÝG7æ+Žnˆ£HéÆ|»!ŽúŠã%Hé†8º!Žnˆã%Hy‰8º!Žnˆ£âè†8^’ándXõåñKR_qtC/™ïKÒ ¤ÔWî»”nˆ£ó}‰8ê›ánd¸âè†8º”n ¥âx Rº!Žnˆ£âè†8 Ìãn å%ó}‰8º!Žnˆ£â¨o7Äñ¤t#ÃÝG}çÛ qt)/G}çÛ g¸âx‰8º!Ž?wCFJ7Äñ’ w)/þÇKÄ1¤t)Ý@J7ÄÑ ¤t)ݘo}Åñ¤Ô—ÇÝ@J7Ò ¤tcÒâøó|_2ßnd¸âx‰8^"Ž—ˆ£âèRÆÑb¿D/G7ÄÑ qtCÝ@J7ÄÑ qtC/AJ}çÛ qtCݘôKæûgqtCÝG7x\_qtCÝ@J7ÄÑùv#ÃõEJ7ÄÑ qtc¾õo7Äñq¼DÝÇKÄÑ qt)/ÇŸÇ!Ž—Ì·H©¯8^2éqˆ£HéÆ|»”— ¥¾âè»!ŽúŠ£âè†8^"Žúò¸âx Rº!Žnˆã%âèR^"ŽnLú%âx‰þ8º!Ž—d¸¾â¨ï|_‚”n å%âèÆ¤»!Ž—ˆã%ó}‰8^"Žnˆ£ó}‰8^‚”nˆ£ܘo7ıéù¾Dݘo7ÄÑù¾D/G7æ[_q¼)ÝG7ÄÑ ¤¼D/G7ÒIwc¾/G7ÄÑ q¼DÝÈp72ü¤t)õEÊŸÅñqlº“î†8º1ßnÌ·âx‰8º”nÌ·⨯8^"ŽúŠ£¾Hé†8º!Žnˆ£Hé†8º1én ¥âØô86”— ¥âxÉ|»1ßn ¥~‰8ºAºA^B^)þ )ºAºAê«Ä@ ò Û þÄ Ä  Ú@ Ú@ ž ¬!CP¤AMг!¥ÁIðE0D0L0¬ALP¬!¬]0³Á²¡³AB0N0¤!¥Á¤!³¡¡ÐHP²!§Ð³Á¤Á³AD0²ADPDPBE0N ¥Á¤!D0\¬DPBEP²AL­!B EPD0D0¬EPD0H0³A¥! IP¥á³A¬ADÁPÁ­a M‘­!¢ ­!¸¡IP³ ¥!¥á³Á¤á³A PþDp MP²A²ÁIФÁ¤!Á0¤ÁOQ²! {PD³!¥Á²A¥Á¤!¤Á²Á¥Á¥ÁI°¥Á¤A³{P²A¬A¬AzPL0¬A²!Ið¥!¥AI0L³ ³Á³AÀг!¥Á¤Á³!³­A¬q$Cp IÒIP³!³!¥Á²Á²! ¥ÁH0N0N0¤Á³A³A³A¥A¥ÁH0¬AB0Nò¥ÁIÐ¥ ³A¬!N0¬!¤Á²A\P¬A²¡³þÁÀФÁ¤á³A³!IФ!¥ ³!³!¥ C³!³Á³A²¡³!³Á¥Á¤á³ADM0L0¤á)Cp ­CP¬ANE°D¢0¬!D0B0Bp ³Á¥ ³Á³A³AŸÑ¥!Ú Äà Ä Ä  à Ä Äà Ä ÀŽ¡:­ó:±3;µs;¹³;½ó;Á3<Ås<ɳ<Íó<Ñ3=Õs=Ù³=Ýó=á3>ås>é³>íó>ñ3?õs?ù³?ýS<ó!¤S à @ @ ž@:Û@:‘À Ôþlá"´B}Á|álÁB}ÁŽÁ8´BÁ8Ô|álCÁl¡BÁŽÁlÁlÁlBÁl!Bm!Dm!DHmBm¡Be4BmÁl!H!Ô"Ô"ôlÁŽÁ€ôlBeÔlBmÁŽAF!Ô"ô ÔŽÁ|AF-ôlBmÁBm!Dm¡BmÁdÔ Ô"Ô"Ô,Ô8ôl!BmÁl!Dm!BmHÁ ôòÔòÔl!BÁ*ôl¡BÁ"ôlI#Ô|álÁŽAFÁ,ÔŽAFIµBmBeÔdBmÁþdÔdôlÁBe4BmÁBm!BÁ,ô"TF-Ô|ál¡BÁ"ÔŽÁ|Á8ÔfõlBóÔlaV}ÁŽÁ Ô8Ô8ôdBe4BÁ|ál!BmÁl!BÁ Ô Ô"ôl!BÁ˜ôl¡BÁlHmÁŽÁlÁlálÁŽAF}ál!BÁ ôlBmÁl!DÁHUF+Ô|álÁlIAF}álÁŽÁ*ô"Ô|Á ôl¡BmÁBÁ*ôlÁd”ImCmÁláò”CmÁ\!ÔBÔ|ÁŽšAFô|Á ôl!BmÁl¡BmHmCmÁŽÁ ôl!DÁŽAFÁ Ô ÔBôl!BÁ|álCÁ ô Ô Ô Ô,ôl¡BmÁlTÁfÕ Ô"Ô Ô|á ÔHÕ*Ô|Á8ôdôlÁŽÁ|Á"Ô˜Ô,ÔBÔ;libjibx-java-1.1.6a/docs/images/eclipse-run3-small.gif0000644000175000017500000052740710350117116022417 0ustar moellermoellerGIF89aê€çÿ& #QI <1$4_<4.,)˜8z19G8976:AC@6=ADLA, CžG¯8:›*J :Kt.K¯j¢AVd^P:3R°VSQMI£^OV\SLQV[.]™9V§QVg!nqFWŸ?Y±MU®]R¤\agd_^`cVSgk4€>iaY[duÚ.=²E/Hb¶Ag²lfCmeNLg³6…RrlCOm¡Yqu_rfonTslUayCAƒhbe²xlYgprwoLTn¼npm…iX{leog£Yq²vqfšg=rtqkt‡puwduží?O{w]D”Z`t¼ˆqi\zº\†v|}{hB‰À_{Èfz¼~z{w~€w}|~{}r¹‡€htšz‚‰†ySœx‘~pZŸVx|Äs€½‚ƒ†‚|¸Ät6††ƒ‚€Á•‚„–‡iãccÖmfs¹¬„_d¦p¤„yoÎuÄ‘ƒ¸ÔmyŒŽœ€‘®›|Œ‘’Ž‘‡’ŸŽx˜ˆ}Õ•Å‚¬SؑÒPt¢ÖÒŒV°|„ª¢®œ†ªž”Ÿ¢¡™ŸÃŒ¦Ãž›Í‘¨¯Í“}’¢Î™¤²Ž¢Û«ÕÏ B«¨™â¦Œºœ¶ß³¥ÎÞ™š­¯¬È¨ˆ«¯²Ì­dµí¿®‹°Þ›´Ð¤¶¼«²Á½¯£µ³¤Ë°y¹Çµ®Ä½²™©±ÖЩŸ°´Ðµ·´§È‹©¹ÙžÚY©É¨»½¹ÏºªÃ¾¶©Ë¸Ä¿±¾¿Â Çñ®ÆÕÚ¿…à¿w®×„̧ǻܸÁæµÅÙæ³¸»ÅÍÔšտµÏÀÂÄÆÂÁÃÛÉǾîÄkÉÇËÉËÈÛ¿Ù¿×­×úÊ׻ĨÍÑÒÏÄÖçæËËêÔ˜ÎÖÞãÒ¼ÞÓÆÆÛáÔÔèáÙ°ßÙ·ÛØÏéÐÛØÚ×ÎÞÞÖÛÝßÝÁÝßÜøß“ãàËäáÄ×àïØâãæâÓ׿ôßåçååÜåçäôè»üé¬èêæßíõëíêíëñåöü÷ô×úôÑñóðöôùõ÷óüøçõûþùûøýûòþÿü!þCreated with The GIMP,ê€þ°Ø¦ Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CfœÀ*–É“(Sª\ɲ¥Ë—0cÊœI³¦Í›8sêÜɳ§ÏŸ@ƒ Ý©$’Q£¬49²è¨Ó§P£JJµªÕ«X³jÝʵ«×¯`ÊK¶¬Ù³h·²¨Ã¶Ž&gšÊéa¦­]:¬ìêÝÛ–N²¿véHŠÅ„/ßXÉ"‰ú©Ž(¶¬ KžL¹²å˘3kÞ̹³çÏ C‹Mº´é½Ì`1"Å0MhŠaÆ–Û¸ÙHaÅÊL¤Ûޤð6c73WÎLHðÂL,VX²2ˆU #‘‚2"Š•#X‚þ˜0!X€ £ð‘+#ÆãËŸO¿¾ýûøóëßÏ¿¿ÿÿ(à€hàÚ'Å0À0à šÔa†Ex Bƒ6D3L`‘€@É3L`6-Œ8ƒ-L ±ÐJ¥|`Jˆ²x4X‡'¬¡K0\ñ…(Ì0CŠPF)å”TViå•Xf©å–\véå—`†)æ˜d–i¦–3L ‚| ‰fØP„kÖ¹æ/dA_€ñ¥@_œ±¦\LðÁ{P€cˆðÁgˆRÀˆRy0!J[$ B›Ø€‡(| E¢° Šþ°Æ*무Öjë­¸æªë®¼öêë¯À+ì°Äk챸~0ÌJÐ…D€@Í>Ь„AÇ“d!Á(cH@Ç“d!Á×b`K#Œ|%ŒH( ‰D"ÊPHâÌÒÁH,€‚#ž0‰6H"Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Áþ< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Á< Áx€ Hàx€ Hàx€ Hàx€ Hàx€ Hàx€ Hàx€ Hàx€ Hàþx€ Hàx€ Hàx€ Hàx€ Hàx€ Hàx€ Hàx€ Hàx€ Hàx€ Hàx€ Hàx€ Hàx€ Hàx€ \Kx€*%ð€áˆTIK < Ux@ € ª@À,ZJà€T©Ì€YZ€ àÀ,e"@ÊDÀ~ù¨RÀ$ð <@À$ð <@þÀ$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@þÀ$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@Àþ$ð <@À$ð <@À$@KZ€Yª”ÀZJàÌz€(¨R€*%ÐgUJ ÒÀ$ J ¨RxÀ¬HÓ´”-%@K <@ª”À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@Àþ$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$ð <@À$þð <@À$ð <@À$ð <@À$ð <@À$ð <@                                  À,À,ð J€j•& ¨&ª$ ªÄ,À,˜Æ,NXiÌò Jð JÌ¢Jðð…nø†p‡r8‡tX‡vx‡x˜‡z¸‡|؇~ø‡€ˆ¨&´T€þª$ª$€À,¨Ö,€ J@K J€iÍâ„@Kð JPiðÐgð Jððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððþððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððþððððððððððððððððððððððððððððððððððððððððððððððððððð JðÌ2 LHš¤Jº¤LÚ¤Nú¤P¥R:¥TZ¥Vz¥Xš¥Zº¥\Ú¥^ú¥`¦b:¦]ZÀíÐñ°¦ñ0lÚk:íÀ¦óP§vš¦xÚîàñ0yʦóÐñÐþvªíiº¦vyÚvЧkj§ì°¦{Z©–z©˜š©šº©œÚ©žú© ª¢:ª¤Zª¦zª¨šªªºª¬Úª©{º¦îó€ gÀñP©ìЫîÀlÊkº§uJóàì0ñÀóÀñ°§ñÀóó•ÊñÀó°¦îÀó󰦕ìvz®ô0k:½®ú®ð¯ò:¯ôZ¯öz¯øš¯™{:ÀóÀîЫlÊñЫî½Jó@{Jó½ì–½Ú«î@l–î±ìàôàì"»§ä@îþ±ô0«¯2;³4[³6{³8›³šÊ•JîÀðY0ìàñ@½ªž` îЫñ°§ôàô@óàôàóÀñ ž` Û±ìàì@ì@îЫîÀîÀ¦îÀîÀñÀl:ä@{JñP©ì0kÚ«Êé󪞯êà ¥ªž0³–©–°ª–P³’;¹”›¯ì°§ñÀî@ä@{:" î0îÀÜ`K` Ìîî@î@ä@{JÝ KðóÀã°Ópg0ì@Ä»§ì&p¬°§ì0ì@½j©ô0ôЫÄþKô°§ÄBÀ’Ыkêé"Û«æpåÛ«î¾ÝÔÐ K¾ìàÓ ¿ìPö+²î°KðùËî±ã°雱ݠB½êëÓPÀãpÌ1°+ \À2Àsðô°ÓPÀ9ÁÜ KÀݰ"›$ÜÂ.üÂ0Ã2<Ã4\Ã6|Ã8üÂî±î@{êä@0YàôàìÐ KÀç@:@DJ°¦î@ô »Ü ñàµ`G°>` ðî »î@óÀ>@ â0µ`' 9àã@: ª@KP µ`+° þó@î@²ë@à۵`' pêÀP Æ`[p @ µ`' @@¹ÀëÜ  Ð Y \À¥@éÐ {°µ`GêÀP  á@\°îбñàêÐ×àó@\°îp aÀݰxP &°ãÐYÀ¼¦Ý°íp9 ª@Y ãµ`+ µ`[p @ î ÌîPâP [ ñpTgà£0;ô0£°B ) ÝÐjÀó@Y`ó@Y ݰs s0 ó ÌܰñÀ KP &° þݰj°ÛüÒ0Ó2=Ó4]Ó6}Ó8Ó:½Ó<ÝÓîP§?L{J{:" ô@ôÝ`Kà K ãÐjÀôÀä0{:Ý 'ð:  Ü@9Ð Y0îî@¼îíð 2Ü@2@æ°9@ãð{ªZPT°§ôàkJ5°° 9^°9àÞ ^°9ä0Yà9Ü@9ôàÄK½:B0§ÙÀU°+ YéÀ K jà[ìp p @¥M¼ì¸p ` p 0Š  þ0Kà9ñÐ Kà@@ÅMìÐ î0?à10K ZP`é@ãî@ßí1°° :@ã°@ÀãîÀÄËô@ÅðK0‰:0Y0:0?À1`?à10,°Yà{ZÜìÐ  G: U°:pK01ðÝ6~ã8žã:¾ã<Þã>þã@äB>äDä{Jô°§ôðÃì0=À{ÊñÐ Kàã°:ÐÀÓ°§ô@î@ìÐ KЫc° ¡: ?àì°§ä@½Š à [0© yàþÚ TìÐ@â0©àÌ{ګĆ0©@Ì îp× K¤æðä0© y {J¨>{Ú Iа>p ¡ î,0T¤ TpÔ Y é@Ą̀ŽêóÀí@ ÞàíÐé0 ê`ípã°î0© ãì îìäàñÐ K@ì ìÐà 0K ¤àÌ0©0 æðó@îä@îô€ àÔ Kì0Y@îì½ÅÚãî í`ìàíÐàäpþK&ÀîìîÀݰäÐ K ¤0× ã`àþÞó>ÿó@ôB?ôD_ôFôHŸôJ¿ôGOì@{Êî@äàóà'°jðÃì`œàêà –À¸ÀxàìàñÀîæ°K€êÀ‹à –Àzðî@?ìó€ \ÀÚÐaÐéà g°žÀ ñà¸ÄРÛÀ}Oî` ôÀ–àpÌ` ì {°žÐ|€ì Ðaì` ä@lúÃêÀ îÀ ¯  {°ž– êà í – Ù ‹à Æ áþ€ j€îбî@íðZ@ ñ€ Y€ó |°Ùà ôàa€êà ô` îÀ¦î0ì`œ°§œî€ Z@ ã@îð`À / vzÅCèN¡;KìØYò¦f‘'KóÔy¢ç.Þ<„ñØù¡Fo ;Kí<±³ÄΟ=äpeÉ5Ï”*cžè¹ëè.ž9OñÌqr÷' 3KØVd!ÖQéR¦M>…UêTªU­^ÅšU«Swä’£7œBzîØ-ñ”Å=wì<-Ë.»yìè)d7Ï=vœ„À%ç;zäè¹#§9vp³ü˜§pÞ<‡ é±£Ç.ÞBrôعþ‹·Ð¡;vîÎsHÎÝaCêŽ=wóâáËÅn»Šµx)ÑG,9ôjVtGÎݼvØ–ý*÷‰½š!i¹£çnž»i̦¹W“\EwÉÍc×Ë!T¨~ÑCÊÎ;rôÜÍ‹'¸ióbV$GÏ]óÔ;þóCOMìÔOMä°ÓHVd‚Š5Ÿ`C=5±ãN<`P’%™äá;‰˜ +C Ñ  7IăHâ9ôSS<†Ñã;Kp’;øØB;ô°ÃÎ/õªO9ŸÐãNBÁ 9îÄä=ÓÐ3MLôLCNMôC9óˆS ;äTãÎ4ÓS=ìàC‹;äÌãN<‹‚I4³<²GMKèÊ 9îCOM*aÎ?÷AFEI(ê‰;±ƒ25ÍC;x˜# ©pó 3îÐS=äÔI1qSÌ'îSSLô°#‡4ÏÈ1Ë'³¸CKdÁ‰8îü©3H‘ÃNþ/ð¨RÄ*(ÌNMä¸;ô¸³J'¡X³ 6ó°ã=ìäƒLMôÃÎ4̈3täxã9ìÐã=ì rÍ4÷B9Y(Ê =5‘CÏ<Ó„DOHÞ¸CO3¥Š3=ä°ã=î°C9‘ã9îÃ=ì¸ÃNEä°S9ìTD;‘ÃNEä°S9ìTD;‘ÃNEä°S9ìTD;‘ÃNEä°S9ìTD;‘ÃNEä°S9ìTD;‘ÃNEä°S9ìTD;‘ÃNEä°S9ìTD;‘ÃNEä°S9ìTD;‘ÃNEä°S9ìTD;‘ÃNEä°Cþ>5ýé=îÃRìÐCNEâ„RO4òÔóI1ìÔÄŽ;óü¹J=ÏúËŸNBŽ;~4¢Ü\ÀÂ8YÔTƒ;б…Z˜`»ˆV ŒZ˜€嬃 rAvÐÃñP…=¨‘Š{¼Ãî 9èQ“x°ãq€ÄÑ SÔ„î8HLh L<þA ‡˜9Üá ( &ôpG<ðA ¤„äðàÅ'P!ˆÂôpG<ØAw£¦`†" y¸ƒô¨ >Azƒó Ç4ÜÑzÔdî`‡;ÈAš Îtæ'ÈAO@ôp9*RpÌÃí¨É4jBŽ\LôpG<æÁwÃä 9Ü1šÐÃó@Š;ÈáŽx¸ƒ;ÈáŽx¸ƒ;ÈáŽx¸ƒ;ÈáŽx¸ƒ;ÈáŽx¸ƒ;ÈáŽx¸ƒ;ÈáŽx¸ƒ;ÈáŽx¸ƒ;ÈáŽx¸ƒ;ÈáŽx¸ƒþ;ÈáŽx¸ƒ;ÈáŽx¸ƒ;ÈáŽx¸ƒ;ÈáŽx¸ƒ;ÈáŽx¸ƒ;ÈáŽx¸ƒ;ÈáŽx¸ƒ;ÈáŽx¸ƒîˆÇ<ÈáŽxÌ!Ç<ÜAšÄcä RâAwÄcòÈ…4n!PÄ)ä ‡; ZxBÒHÄA¼ñHB ðC#Ʊ„1Xb ôpG ~`€]ä@ UØ‚ØÑ *ä@Ü 9è!O$ú@Æ<ð‰ ~Ôƒû€Ç/èAŽxxÂô`‡;èAwÐcät¦AŽiÌÃìp=ØAqЃþî 9èÁŒy°£&ìÀ2èAvĈè&ÁpЂäðRèAŽŠCdÆ,Ž%‡šÐÃH!ÇŸðŒ˜¸ƒîP<ð‹QÐ8ñp;ÜÁŽšÐրĹZ”?Í£"b8D;ž! H)ž`Rþ„fЃî ‡;Ñ‹^”£åè…1ÚázÃôp6ÊqE¨"í GMÈ1wÌH!GM ÓŽl”jópG<ÜAw̃Ÿ(!„ƒvƒžp9â᎘ÐÃà(•2Ü1 |Š#î ;Ü1wÄÃñpG<ÜAvÔ„î ‡;èAŽx¸ƒäþˆ‡;èAŽx¸ƒ䈇;èAŽx¸ƒ䈇;èAŽx¸ƒ䈇;èAŽx¸ƒ䈇;èAŽx¸ƒ䈇;èAŽx¸ƒ䈇;èAŽx¸ƒ䈇;èAŽx¸ƒ䈇;èAŽx¸ƒ䈇;èAŽx¸ƒ䈇;èAŽx¸ƒ䈇;èAŽx¸ƒ䈇;èAŽx¸ƒ䈇;èAŽx¸ƒ䈇;èAŽx¸ƒ䈇;èAŽx¸ƒ䈇;èAŽx¸ƒ䈇;ØáŽx¸ƒäÀÇ<ÜArÔ„î 9èávÔ„5a‡;N¡ NàƒüHD<Øáz¸ƒñ`"ú‘ ¯Ÿ‚ôPþ†8B±…x!äè†Úá!Ã5`‡9@0†]ƒ:HE(ò0†T„"êÈÅ8‘…xà#ô =ÜSüãûx‡?pQz¸ƒî =ÜAwCô˜8ÄÁ r0ƒä˜9ÜAwô™}žRØ1|ÐÂñp;ÜAZ¤# †;Øáz¸ƒôp9jBzHƒ ‡Pž zŸîˆ‡;âZ„„î`G,~ j@ºØ;BzÄ$ˆ$ÄA+Ð9Ѓ;̃;ƒ;€ÃÈÁ!<&°==Ô==¸C<à-¸9TD<¤Á2Œà2þ|6¸CEÃ<ƒ;´C9ìƒ? B"„>Ñ;ð3 =Ô=Ä3Ì;ă;°=¸Ã<Ô9ÐÃ' =°ƒ;°=à=ÔÄ<ÔDHЃ8LCE¸;ÄÃ<ă;̃;Ѓ;Ã^=ƒ;=¸9Ѓ;Ѓ;Ð;ƒ;Ð;ƒ;Ð;ƒ;Ð;ƒ;Ð;ƒ;Ð;ƒ;Ð;ƒ;Ð;ƒ;Ð;ƒ;Ð;ƒ;Ð;ƒ;Ð;ƒ;Ð;ƒ;Ð;ƒ;Ð;ƒ;Ð;ƒ;Ð;ƒ;Ð;ƒ;Ð;ƒ;Ð;ƒ;Ð;ƒ;Ð;ƒ;Ð;ƒþ;Ð;ƒ;Ð;ƒ;Ð;ƒ;Ð;ƒ;Ð;ƒ;Ð;ƒ;Ð;ƒ;Ð;ƒ;Ð;ƒ;Ð;ƒ;Ð;ƒ;Ð;ƒ;TDMÐ;Ô=àC<¸9T„;Ä;¸=Ô9ÐR°Ã<ƒ%ÔC.x?X;¸= ;ÌCpÂpÂ)TA<¸ƒ-dˆƒ;ÔÂ#°ƒ:pB;p'°ƒ;X‚8Ѓ%¸Ãd1ä€"€;´ƒô;˜'',;à2Ð9Ð9Ä.(Ã;ØÃ/œÂ*ÐCLă;Ì9¸9°C<¸C©0Ãï5;¸=¸Ã<¸;3L20þC30Ã5¸=¸=C> ;ÔÄŸ¸;ä)¸;˜Ÿ;C<Ð9ă;ü ;`&Ì9¸Ã<ƒ;Ð;¸;Ìßà3=¸C<¸Ã6HÁ$´æ$=ƒ;TDM°=ˆ;˜=Rƒ;Ѓ;°ƒ;ü‰e"CMÐCLÔÄ<ÔDEà2ÌCM°C<àB'Tg'CMƒ;Ð>™ƒ>ÜÃ/Ð;¸==ƒ;> =>Í=ÄÄ<Ð;Ô9Ð9¸Ã<¸=°CLà==¸9¸=CMÐ9¸Ã<ƒ;Ѓ;Ð;Ô=°ƒ;°=Ä9Ô=Ã<ÔÄ<þ¸=Ä„;Ì=ÔÄ<ÐCMÌ=ÔÄ<ÐCMÌ=ÔÄ<ÐCMÌ=ÔÄ<ÐCMÌ=ÔÄ<ÐCMÌ=ÔÄ<ÐCMÌ=ÔÄ<ÐCMÌ=ÔÄ<ÐCMÌ=ÔÄ<ÐCMÌ=ÔÄ<ÐCMÌ=ÔÄ<ÐCMÌ=ÔÄ<ÐCMÌ=ÔÄ<ÐCMÌ=ÔÄ<ÐCMÌ=ÔÄ<ÐCMÌ=ÔÄ<ÐCMÌ=ÔÄ<ÐCMÌ=CMÐ;Ô=ƒ;ä=¸C<Ô9°ƒùÍ9Ð9°CMă; ƒ%,‚%XÂ"(RÃAüÉAÔğă;Äe²ÃA¸ÃŸÌ;Ä;¸Ã<¸=ÃA„„°C<¸Ãþ‘ƒ;Ä> ƒ;Ѓ;ÌC<¸C<¸C<Ô;¸9ÐCMÐ;¸C<°ƒ;„ÅÖ9T;Ì9Ð9Ѓ;ÌC>Ð=¸ÃŸÐC<ü =Ä=CEÔ9ÐCM°=P¦;°9Ð;ÔDMЃ;ÐßÐÏV9Ð9°9¸>Ø=¸9̃;ÌÃ^„DMă;==¸C<°ϺCL̃;ă;Ì>Ђ;°9Ѓ;=Ô;ÐÏ’þ=¸CE¸CL¸CHð,;=¸9TDMÐ9¸Ã<ÔD<ƒ;ƒ;=°Ã׺ƒÅ²ÏÒƒ;°=ƒ;Äà Cäò,;Ð9ü =¸=¸;ÐÏÒƒ;Ì;ðì<°CM=¸;Ѓ;°ÃA°C<|-=¸;¸>Ø‚;Ð9ÐßÔ;ÐÃ<°C<¸=ϲÃ<¸Ã­Ö;ă;Ä„;̃;ÌCL¸C<è2ð,9°Ã<°ƒ;ÐÃׯ„;ÄÏÆÏZl<ð,;ð,=Ã<ă;Ã×Î9Ì9ă;°> ÏÒ9,±;Ð;ă;Ð9¸;ÌÃ×ÒÃ<Ðþ9°=°ƒ;ä2ÌC<¸=ƒ;Ï’ƒ;T9ð,;ÐÃ<Ð;Ð;Ð9¸C<Ô;¸9¸===°CEÔ=¸Ã<ƒ;Ã×Ræ<Ô=ÄÄײ=¸=ÃAÐ9=ÃAÐ9=ÃAÐ9=ÃAÐ9=ÃAÐ9=ÃAÐ9=ÃAÐ9=ÃAÐ9=ÃAÐ9=ÃAÐ9=ÃAÐ9=ÃAÐ9=ÃAÐ9=ÃAÐ9=ÃAÐ9=ÃAÐ9=ÃAÐ9=C<ÔD<Ô=¸þC<Ì>ÄÃ<|mEƒ;Ð9ðì<¸=CMÄÃÇ=ÌCM=°=Ã<°=ÔğЃ;Ð;Ìeò,9¸=°CM°ƒ;Ð9Ì=CE°=üÉ<¸p‚¸Ã4Ð=¸9Ѓ;°9ÐCMЃ;Ä9ÐCMƒ;°=ƒ;=Ä9Ð9Ð9ÐCä’Ã<Ä߸CE=ðl<°ƒ80;=ÔD<üÉײ9¸;=¸Ã<=¸ƒÅþ‰;Ѓ;ÄÃ<==¸CE¸Ã4 ÏÆÃ×’=¸Ã<¸ÃA¸;¸;Ð;¸ÃŸÐ;TÄ×þ 9¸;Ð;þ¸==¸9Ѓ;ÐÃ<Ð;¸ƒ8Ð;T„;ÐCä²=Ô;ð,=̃;°9TDL¸Ã<Ô9ÐÃ4 9Ѓ;=Ô=¸9Ð;ÔD<|mL¸ƒ†º=¸;ÔD<¸C<ÄÄ<ðlL¸;Ô;ÐC<Ô=°=¸Ã<¸Ã<¸;ƒ;Ä=¸9Ð9¸9Ѓ;Ä;Ѓ;Ä;Ѓ;Ä;Ѓ;Ä;Ѓ;Ä;Ѓ;Ä;Ѓ;Ä;Ѓ;Ä;Ѓ;Ä;Ѓ;Ä;Ѓ;Ä;Ѓ;Ä;Ѓ;Ä;Ѓ;Ä;Ѓ;Ä;Ѓ;Ä;Ѓ;Ä;Ѓ;Ä;Ѓ;Äþ;Ѓ;Ä;Ѓ;Ä;Ѓ;Ä;Ѓ;Ä;Ѓ;Ä;Ѓ;Ä;Ѓ;Ä;Ѓ;Ä;Ѓ;Ä;Ѓ;Ä;Ѓ;Ä;Ѓ;Ä;Ѓ;Ä;Ѓ;Ä;Ѓ;Ä;ÐCMÐßÐ;ÐCMÐC>¸=¸9Ð;ÄDMЃ;Ì9Ѓ;;¸CwÈ¡Çrèa‡wÈ™'³y2›'³y2›'³y2›'³y2›'³y2þ›'³y܉ÇyÜùrw¾œÇ/çqçËyÜùrw¾œçËxæ‰gžxæ‰gžx执¼yây7žòð‰§<|â)ŸwñyŸyð™Ÿyð™Ÿyð™Ÿyðixž†!Ž8âòZÍxÈ¡‡r܉G zVsgwæq'æ±wȈwèq‡wÈh5zÜaÇrè!‡vèˆwâq‡èq'rì#‡wØ¡Çrè9Á“%ÈaÇy¢‡œxÜaG rØq‡rÜ¡‡è(wÈYÕzÈÉl4rÜaG yÜ¡‡wèq‡zbÇzÈ¡‡zÈÉŒvÜ™Çyþ2#gžÑØq‡y2›Gîx܉Çyäv'è!gwÈ¡‡zÜa‡rbG yÜa‡rèaÇz2‹'³yzØ¡‡åãq‡wæq‡rè!‡wèq'è!‡rèq‡èY-3vì#gÈrìc‡zÜ¡‡z¢ÇrÜ™Ç>zÈArЃô Çh2ÐÃó GfèAv$«Š;âA幃Ës=–çz,ÏôXž;豤‡GÃwÐcyñ þÇòâAåÅc4ìˆ=–z,/ôX^<è±¼xÐcyñ ÇòÜA幃ì Ç<ÜAv¸ƒó ‡;èAw°#î`=Bw°ƒäpÇ—ÜAvdyô =Ø!y¸ƒ™!‡@èáŽy¸ƒ}èAŽx¸ƒî ‡@ÈÁz#3ä ‡@ØáŽÑƒ«q=ÈáŽ%pBô˜‡;ÈA Z ¹@†-˜‰ fÐÌP¦-lA fÒ‚™Ì°3hÁLZØ‚ÈÈ…-hMd0#¶ 3™ Zض@3A u2ÓÊ´3l±NЂ™¹°-a dØ‚´`†þ-˜A f ÃÌ`F.‘ [0ÃÈ`-˜a fä´`&3hÁLf ƒ¶ 3A ‹Ú‚ؤ3±‰ [0ÃÌ@†-˜a‹\Ø‚äÈ 9¦A fä̰E.lA fЂ™¶@†-˜‘ [D“´°3iÁLfØ‚™Ì`¦-Á [ ƒÌP&2˜ÁL[0ÃÌP&3ia fÐÌÈ…-˜A fЂ™´@†-˜ÁLe2ƒ̰3hÁ [X›Ì´¨-˜i f2ÃÌÈ2lÁ Z ÃÌ 2lÁ Z ÃÌ 2lÁ Z ÃÌ 2lÁ Z ÃÌ 2lÁ Z ÃÌ 2þlÁ däÂÈ 2°É e*¶`2˜a f Ãe†2‘A [X¶`3•Á d0´`2”Á däBÌ@F.”Á dä‚È`F.¢™‹hæ"š¹P†Es¡ f #Ѥ…:mÁ ZäÂÈÀ&2lA f2Ì`&3h [ ƒêÌE.lA fØ´`-˜a fäÂ̰3i±OZäÂê¤3lÁL[ ƒÈ`3™a e0ƒêd-˜A dÐÊ`2lÍ%xBî ‡8˜wÌãKì ‡;âáŽyäKó`=Bv„ñ;èÁăñXU<æþÁŽxÌC ñXÞ<è!xØgË›G<Øṽâ`-ÜÁŽxøî ‡;ØáŽx¸cyö‰‡w°Ãñ`Ç<ÜArÄÃ>ì˜;âáz„Óñà4§ÝñkvÄâpG<wÄC ì ;âáŽx̃Óîˆ;ÜAr¸ƒó`=w,/3>t‡Ç%z,ÏìøÒ<ÂŽy¸#‰;Ü1wÄÃôˆ‡;Ø!z¸#î ‡;ØáŽx¸ƒñafØAN»ƒ;Øáv¸ƒî`‡;Øáv¸ƒî`‡;Øáv¸ƒî`‡;Øáv¸ƒî`‡;Øáþv¸ƒî`‡;Ø!xÛ㊇;Ø‘v„™ù’;âÁ,Ïóp;ìw,Ïóˆ;Ü1w°ÃópG<wÌÃñpGyìv$ìH<Ü1w°ÃåYž;¾$ìxЃ™a‡@â±¢âA æ!ÜèaUØÁæÁÈØaUÈÜ2ƒFƒÈèÁÈÁ}J‡Èa4æÁØÜ!‚¾dØa¢ÐâèA èA âÁèÁèÁæ! ãÜ!È2#"ÒpÜÜæÁÈâÜaØA â! ÝÈÈÁØÁâÜÜÜÜÈÜè!3â! Ý„À„ÀÈþèÁF£<âaè!èáKèá]âè!ææÁèæa\æâÊc4æ!ʃè!ææ!æáKæè!è!è¡þê/æÁFcÀèè‚ØA F# éÁæØ¢<èæ2ƒ‚ÜÈaÜìƒÜ2c4Ü¡ØÁâa4ÈÁèèæØÁèÁæ2Ã}ØA ØØ!ìcè2ƒbØÁè¾$3èþÜaFƒèa2ƒ¢pèÜa4ØÁâbèÜaèÜaèÜaèÜaèÜaèÜaèÜaèÜaèÜaèA ÈØÁØæ! ã!3è!3èæ2ƒâA ØA ܇ÈÜÈÁæÜâA ØÁè! ãÁèÁØÁèÜÜ" Ýa52ƒØÁèÁØÁÈÄA èÜÜa4ØaØa‚âA ÈA ܇‚Èá]èA èA ÈaÜÜa4ÜaÜÈA æÁèA èþÜÈÁØÜaèØÁæÁæèA âÁæÁâA âÁØA èÜÈaÈaÜ 8! Üa˜!è!šaèaè!è!F#æÁ}æ!èaâaF£<èæa4ââa4¾dèá]â¡þèaè¡þè!è!Þ…Þe4æâaFCÜ2ƒFƒìƒèÁÈA ØÈÁÈÈÈÜÜèFƒ2ƒèèA ÈÈ’@P–ÜÜ„ „` ÈÁÈA ÈÈ2ƒÜè‚èÁØÈÁFƒÜa4ÈÁFƒÜa4ÈÁFƒÜa4ÈÁFƒÜa4ÈÁFÃÈìƒæÜaÜa4ÈaÈÜìƒ2ƒ2ƒÜa52cØÁFƒFÃèA È2ƒìƒÜaÜ!VeÜáKØÈÁÈb2cÜÜèÁÈÁÈA æèÜþÈa4ÜVC èÁÈÜØÁØÜÜØÜÈ!3ÈÁØÁèèA ÈA èÁæÁææÜ!æèÈa‚¢ÐØa4È‚Üè‚ØÁØáèÜÈÁèAâÁè2ƒÜa4ØÈÁØÁVƒØA FƒâA èÁ>èèÁæ2ƒÈÁÈÁè‚ÈA è‚ÈA è‚ÈA è‚ÈA è‚2ƒ"Ü!è‚Ø2ƒ‚ÈÁè‚ØÈJ'3èÜ‚‚2ƒÜÈÁ>þØÈÈ!3¢P èæÁÈÈÁ>èaÈÜØÁâØa4ÈaèâÁÈA ¾$3È!Üa4È!3ÈaUØâÁèèÁæÈV# ÝVƒØA FƒØÁâA èÁÈÈ!æÈÁÈ2ƒÜ!2ƒÈaèA –€„@ ˜òAðÀ!:ò¼A¦ðaè!f¦æAb&ð!&èÁÀæò!bæ! †&ð!tæ ø ²€–òðAA ØâÁÈØþ"ØØæÁÈa4â2ƒÈa42#æ2#Ø!È!3Ü8! ’` ’€ÜÜ! þþá– èâ!ÜÜÜÈÈÜÜÜaÜFÃâÁØÜ!Øè!3ØÜèáKÈAÀãA ØÈa4ÜÈA èA ¢ÜØÁVÃæÁæÁ¾D ÈÈÁØØÜèÁÈÁèÁØâÁØÜ!Øa‚ÈA Ø‚ÈA Ø‚ÈA Ø‚ÈA Ø‚2ƒÜÜþ܇Üa4Ü!‚ÈÜèÁèÜèa5ÈAÀÙA Ø2ƒ2ƒÜÈb4ÜÈÁèA Ø"Èa4ØÊCÀéæFƒÈÈâA èa¢ÐÈA â‚‚Ü! ÝÜØ2ƒ‚Ü<¢PÀÉÁâÁ¾dâÜ!2ƒèA âÁFC Èa4Ü!ØÁÈaÜáKÜèÁ¢P ØÁâÜèAC„:=Æ—M¹yäÀó†/_;fìæù#Nœ7}ñÄyGNßr̲#8à¼y é¹£Çn!;zîØ‘£ç޽yì’£÷“X‚ä²£çÎ<îCOùL÷äÐà ;´°CAì¸;ÅÏBäÐÃ=îÐCAäÌCŽ;ä,;ópDŽ;ìü´†‘C;ôpÄ=ó9îV<îCAôC;óÄÎHîÄÃ9ó4ÏBô¸C;ô¸C;ô¸C;ô¸C;ô¸C;ô¸C;ô¸C;ô¸C;ô;ôC;ô;ô,D9ôÄŽ;ñ4þ9ôC9ôC;ìDÏ< ‘ã;ô¸Ã=äÌã;äÐㆠ‘ã9 ÑCGóÄÃ=îÐãÎ<ä°£;ó,Ä9ô¸C9ôôJ;ä¸C=±ã9ô¸CÎBôD=ä€åÎ<îC9ÅCÐ<äÐC9ó3=îij=ѳP<îÌCÎBìü4;äÐãÎ<îÌÃ;'x";ñ4“Ïc}äÅäó˜7øä=íˆC;øø3 8ô€CO;ß3O;àT3O>óèƒ8ôð“8äÐãÍ<í ã >Óà3M;âä=ýàŽ>ùèóXÿp¡E>Y<†O>ùøáŽ|àÃä˜=ðAzàƒø Ç<Ü!}°£ìà;È«µƒàˆÇ<ôAoîÀÇ<ÈAþ~Ìý`8èÑ}èã1ýxòÑ.¼"úÈÇcúÑ|´ƒä 9ÀBzƒîÀAØްö#=æAz$ä 9èAx,ä`‡;æÁrÄve‡;Øa w ƒî Ç<Bzd$î =Bz°ƒô ‡;èAz¸ƒô`=ÜAwŒ,ì˜GèAzƒî ‡;æÁŽÃäp=Ü1wă¡‡;âAzdì H<ØAz̃ô`‡;ÈAwƒì 9èázü„!=B‚ƒ ¡AÈA…Ѓ ä ‡;æwþ̃îˆ9BwЃî ;ÈAr¸ƒ` =ÜÁ‚ƒñ˜‡;ÈAz,î 9èAܲƒî =Ü‚ÐÃñ =ÈÁwЃ ìp;è‘[wăî AØAwăä GnÙAŽèºƒôp9èArÐ#·ôp9è᎑¸cì 9èAx°ÃñpÇHÜ1wă ô =Ü‘¸ƒìÈ-9ÜA‚ÐÃä ;Bè’ƒä 9èár¸#!=âAz¸ƒKðÄØAfàžùèG>à©|À³ùèG>ôO}ôCøÐG?ð‘~äþä¨;ú|ìý°Z>úÁpà#ðÌ>ú|ô;¶Z?¬Ü|ì˜ýÈÇ?à‰~X­î@AÈ!^Û¹ƒ!=Èáz¸ƒã!XÈAr€…ñp=ÈÁŽxˆ—ä 9Ü1ÜŽg;âÁf¸ƒî˜=ØAz¸ƒäÀ;æAzdñpÇ<ÈázÃìp9ÜAŽy¸cñ 9Bv„䈇;ÈáŽyЃô AâáŽy„;ØwÐc$숇;Èázä–îˆAèAzˆ×ä 9Brä–;È]rÄÃþäˆ.9âárD—ñp9ÜÁwЃ ìˆGnéAŽxä6¹9‚̃;ØAyЃ;Fâz¸ƒìp=Èár¸ƒî =ÈAr°#î 9¢;‚Ãä 9è‘[r¸ƒ!‡;èáŽx„ôpÇ<Ä;wЃ äp=ÜÁr„ô ‡;ØwЃ¹e9Ø1r°ƒîˆGnéÁzcäp;èyÏÃóˆn<ØáŽñƒ ô XÜAr„ñp;èAŽy¸ƒä`‡;èAŽxœ€B È4òñ|ìøVûÇŽÿ‘÷#þý°r?¦Ãôƒü˜N>þÏ|ü£Ê<§cµXm:ùøG?òÑéäAùØq>àù[m:ýȇ;šáŽxˆwä GtÉñ²c$óv=ÈáŽx¸ƒ™9ÜAô@ó@îÀAì@ì@ì@ñ€ î@ î@Áô[ô`;ä@ä@¹Eô@ôî0î0ä0ô@ì@¹Eäàä@¹Eîä@ä0îìä@î0ôÀÁôàìàñÀî@ô[ì@ô@äàì0oóàñ@ÁîÀî@ì@þî@9ä@9î@9ä@9î@9ä@9äîÀî@ä0ì@î@AAôàì@ôî`;î@î@îÀî@ôÀôàñ@ôàñ0äàäàäÀîñ@Áîî0ì@î0î@ôàä@îä@ä@îÀî@ôàñ@Áî@ô@ô@ô@ô@ôàä@äÑEî0îîì@î0î@î@ãáô[ì@ô@î@Añ[ì[ä@ä@ä@îÀîÀô0î@ôî@î@î@¹5þîì]ô@1ä@ô ž îÀÓÿÐù@|Óa5ý`5ÿÐV3ùðýðVOúOÿÀùðÄÇÿ`5ýÀýðð”ý0ý0ù0VóùOÿ°cÓa5ÿ°cV6ý ýðýÀî@ ìàô@ô@ô@î@ä01ôàôÀã]ô@¹îÀAîìîô@ô@ôÀäà#áäàô@Ì0¶@ÑE¹5î@AîÀî@¹Eäàì@äàôàô@ô@Aôàô@óàä[ä@¹þEä@äàä@ä@îî0ì0î@äÀî0Aäàôàô@ôàó@îÀô[¶ãôàô@ôàô@óÀó@äàäà#î0111AÑE¹Eî@î@ÑÅî@î@ó@îÀÑäÀóàóà#áô@äÀô@óàó]`Aì01ôÀãá`A`A”Cñ@óÀîÀî0î@¶ãô@ôàä@äÀî@ä@#îî0Aî@ô@¶CîÀî@ä@ó@ä@þä@ìôàô@ó[ì@ä@ìà`áô@ô@ô@¹E`Aìàô@ä¹Eä@î@äàô@ñàìàñàô@TÀ Yàñ0 ÿOÓO’ÓÑ’ýðýÀù0ùðù0üÐÿOÓÑÓ‘ýÀýÓÁðÄý0ùÐòùÀý`5üðù0ý`eÒÿ`eýÿ`5Ó@ ÍÀî@î#¹5äÀAôàä@î@îÀAî`;Aôàì@ä01îóàó@î@´àÌàþä@1ì@ä@Aôî@ôàä@î@ô@ää@¹5îä[ôàôàìàìàìàä[ó ^ì@Aì@î€!ä@îÀî01ôàä@ñ ^ô0î@ä@îÀîÀîî0îÀî0ñÀî€!ìàÂî€!ìàÂî€!ìàñàì@ô[ä@ó@ìàìàä@A¹EôàóÀäàñàôÀôàóäàìàô@ô@ô@ô[#áñ@ì@ô@ä@#Aô01Aäþ@î@ôàì@#áóÀî@ôàä0îó@ñàñ@ì@ôàñ0ì@Á1¹5äàôàì@ä@AA¹Åô@ôàäàôàóàìàä]ñ@ó@î@ô@îî@¹ì@îÀîÀä@ô[ôÀóÀô[ì ž°ìàÓ`5ÿÐÿ`5ÊúVƒ ùðù€ÂùðV3V3ý(œÿ`5ÿ`5ÿ`5Ó‘Ó‘’Â’(üVƒ ù€Âùðó0 ´@ ÈÀ È€ TŒÅ¶À ¶À ¶À È` þÌ€ Tœ XL Ì` Ì@ ÈÀ ¶€ÅÌ  ´` XŒ ¶€ ¶À ¶ Ì@ ̀Ŵ€ œàÈÀ È` ¹` ¶€ Ì` ´`Ç´` Ì€ ´€Å´€Å´À XL È@ È@ È` ¹€ ´€Å´À ´` ´À Ì€ Ì€ Ì@ vŒ ¶ vL Ì  ´` Ì` Tœ ̀ŋœ Ì` ´L Ì€ ´` Ì@ Ì` ´` ¹@ È@ÅÌ€ Ì€ ¹` Ì` Ì` Ì Ì`ÇÌ@ È Ì`Ç̀ŹÀ vÌ XL Ì€ ´€ ¶À ´€ ´` ¹€ Ì@ Ì€ Ì  TŒ ¶€ ´À Ê`þ ¹À XL Ì` TL ¶ÐÊÈÀ ´€ ¶€ ´À È` È` ¹` Ì€ÅÌ` Ì`Ç´€ ¶À ÈÀ ´ŒÅÌ ÓXl Ì€ ‹Œ Ì€ ¶À ¶€ Ì€ ´€ ¶€Å¶ XL XÌ XL ȰÈTŒ Ì€ ¶À ¶€ ¶À XL ¶À ´€ ´€Å´` Ì@ÅÈ@ Ì  Ì@ ÈÀ ´€ ¶À ‹lÇ´€Å´€ ¶€ ¶À ´l È@ ¶ Ì€ TÌ ÈÀ È` Xl v¼È¶@ ¶@ ÈÀ È œ ä@Ó€ V3V3ù€ ù0ùðù Ä’b5Ó‘ÿ©­¬ù0Vþ#Û’ÿb5©Ó‘ÂÓ‘Êjeüðüðü0ü0ù0ùðùðü0ùðüÿÐüÄ—Ä—üðü0ùðùÀÓq îÀ ÁóÀQîÀôàì¶CñÀî`;î@¹îî@¶îî@ñàì0ì@âô@ô`;ñÀä@ÁôÀñÀîÐQñàî0Aìàìàó`;â]ñÀîÀîÀîa;î0ìa;Áñ@¶C¶CôàìàóÀñÀ¹5ä@îÀþñÀîÀQî`;ñ[ôàì0ñ@ì]ñà¶ÁôÀôÀÑÅî@ôÀî@ì0oì]ñ@ôàìàìàEóÀî`;îe;ñàìì]5ì¹ÅîÀQä@îìàñàñàììàÂñàì@ôàñà–îô¶3•[ì@¶3ìô[å–ÎóÀó`;±ž@îÀÓ€óFâÑEâãóFÑEâî@îõG$î$Îîî@îAââEâ¹E¹Eâì[ñ0 úàìà¶ã¶“[ñÀþñÀîÀà0 ? Ì? ä0îì0oó@ø0 î@ ôÀQâñàì0ì@âì0î0ñ ^ì@ì@ä0ñÀî`;îÀîì€!âEäÀì0ì[ìàñÀóÀQî0îÀñÀî€!óÀî@îÀî!ôÀôÀô@Áô`;ñàñÀA¹E¹E¹E¹E¹Eî0î@ä@î`;ñÀBô@äàì@ì€!óàìô@ñÀôÀîìàìàôÀÂî`;¹…!ì@Ñþì@ì@ä0¶C¶ãä0ììì@âôàìóàìóó@î`;óÀó@î@ì0ô`;ñäÀñ`;ô€!î`;ñàEî@a;óÀóf;Âóìàì0îÀñÀóñع£GÎ]ÜÁz$îˆBØAžcäp9æqvÐÃñ8;xy¸ƒ™=ÜAŽäÍÃó =Èqwƒî =܃̃䠇HâAŽƒÐcî ^è!z¸#ÓÀÇAæÁwà…·!=BwÌc×3þÄÁ qL#ŽÓ`ÆAâqrÐ!ô8;ð1 v0cx™‡;èÁr¸#ä˜BÈáz¸ƒ;ÈAwƒäpG<Øár$î`Ç<Âzƒ;èáŽy„‰92xÃôp9ÜAr „ôp9èAwÌÃôpÇ<Bwƒä Ç<BŽƒÐ!ä¸ BèAwã ñp;Ü—Û¸ƒ·A=xwƒñ8Èm2w̃a=ÈAƒÌƒ!=âÁ„°ƒô =ÜAwÐC$ñp9\Åzã ôà =ÈAƒ°C$ä¸ ;ÜþÁwă!=ÜAz„ô˜^Bwăa=Âr¸ƒîˆBèqv$ó =Èqx „!=ÜArЃî˜Ç{èqrÜæ=ôp;v ä6ì ‡;ÈAy°ƒî =âAz°ƒôp9Üv,ÁI˜;¦‘ƒ°ƒìp=Èq¶ „ä˜=ƒÐƒî ;ÜAwЃô ‡;Øqz¸ƒ¹ 9Bv„ä OØqrÌã=¡‡;âár „"¡9’wzàeø¸ 92zÃìp=Ør„-ìp;æþ—x„·¡Ç{Br̃ø¸†;lÁwЃî˜G<ÜÁŽxЃ· =Üq›ƒÜ†aÇ<؃àe™BÈqrЃ·9È<ÈA„Ѓñ8=Bvdî G<ÜAwЃî ÇxéAŽx /ô`‡;èAzÃô ‡;ØAr¸ƒä˜ÇAØáŽy¸cî ‡;ÈAwƒä Ç{ÂwЃôp;ÈAr¸ƒô`=ØqzÃóx=Ø1wЃóp;æAv¸cvî Ç{ÜÁr܆î`‡;æázƒä@=Øqzã ô@=È1þÛÃñp;ÂwÐÃì 9ÜAz¸ƒóp=ØAw°cä 9æÁz¸#a‡;Øqz!ìpGðC>üÃ#æÃ?ðÃ1”B,0#C.°C?¬Â>H.œAÔƒ1¬Ã?xB>ðÃ#>"?ü?üþ?äÃ#æÃ?ðÃ?äC.òÃ?ä?ðC>¨"?äÃ?ðÃ#òÃ?ø"?üC?<"?ä?<"?äƒ*þ?äÃ?ðC.>"?ü?äƒ*æÃ?ð5òC.šã#òÃ?ø"5þƒ9ò5æƒ;ä3 ÃËåÂ+0Ã4¸ƒ-Ѓ;Ð9Ѓ;Ð9 D<¸;Ð9Ð9°Ãì¸9ă;à;Ѓ;Ì9°=ƒ;Ð9¸=°C<¸C<¸Ãì¸[ă;°=¸;=ƒ;ƒ;Ì= ; =ÃAÌBÐÃAă;ÌN<ð9¸Ã<=;ă;Ð9°C<¸Ã<¸;¸=¸;ÐþÃA°=°=àBЃ;Ð9°=¸=OÐ;¸;ă;Ã<=¼= =Ã<Ð9¸Ã<¸9ÜFò°ÃÃHÐ9= 9¸;ÃAÐÃÃ;Ð9¸Ã<ÌŽ;Ѓ;ăH°=¸===ƒ;Bà…HÜ9¸C‹‘ƒ;Ѓ;ÌB°C<¸=°ÃAÌÃAÐ;Ð; =;ÄÃAÌ=ƒ;̃;̃;°ƒ;ă;°ƒqñ= ==Ãm 9¸=¸=¸9Ð9܆;ÃAÐ9ÐÃA';°Ã4°ã?ðÃ?øb$@Ãþ'+lC>þÔ€?ØB ðC1àÁ>˜@'Œ5òÃ#òÃ?ðC~òƒ*òC~j¨*òC~òC>l(5æC~æÃ#òÆòCˆæâ?ðƒ*òCˆæÃ?Ì;4Ã<°ƒ;8Ä‘8°3¸9¸=9ÐB°ÃA=¸C<Ì^¸=°ÃA°…;=9܆;Ì9¸9Ѓ;°ƒ;à==°9ÌÕ;Ì^¸; ;=¸Ã<=¸9ÐB=¸^ÐÃA=¸=°==¸Ãì°9 Äm99¸9Ѓ;¼‡;Ã<ă;=CòÐB=9Ì;=þ=Ä<=¸;=¸Ã<==9ÐÃA=9Ð;ÐÃ<=¸=¸J<==¸;9=¸^ ;9ÐÃA¼Ç< =¸C<°=Ä<;¸9=ôˆ;ÄÃ{܆H°ƒ;ƒ;Ð9Ѓ;ƒ;B=¸C<¸;9=Ãm ;¸Ã<9Ð9Ð9Ð;¸Ã<°99Ѓ;=¸;¼=¸9܆H°9ÐB°ƒ;¼==',=°Ã4ðÃ#æ;æƒ+@ƒ.@ƒ.èBü?Ô€=œ¨Á ?$‚ðÃ#æþCˆbmˆæCÖjh>Pc>pmØfm>„->¸C3̃;p8ˆƒ¹2ÐÃA;ă;Ð;=C<;¸Ã< Ä<°Ã<ƒH°ƒ;ă;¼=Ä<¸9Ì9Ì9¸=Ã<Ð9Äm==ÃAÌ;Ä<ÐÃ{ÐÃAÜ9Ð9°C<¸9Ì9¸=C< 9¸=¼;Ѓ;ă;°ÃA=Ã<Ð9̃;ÄÃA°9̃;Ð9°ÃA°ƒ;°ÃAÐ9¸Ãm=ƒ;Ü9̃;Ð9Ð9=9=¼Çm 9¸=¸==¸;¸C<¸9þ¸;ÐÃ{¸=ƒ;Ð9Ð; =ƒ;Ì=°=¸;¸=Ã<;ÄÃAÐÃAÃìÐ9ˆ=ƒ;Ð9;Ì9ă;Ð9 ¥;°=ă;=°=ÃAÄÃAЃ;°Ã<Ã< =ƒ;°ƒ;Ì9Ü9Ѓ;Ð9¸;Ð;¸=== ; =C<¸Ãm¸9ÐÃ{ÌÃìˆÄ{Ð9¸Ã<ÄÃA;̃;°C<=ƒ;P';ÐÃ4`-+€Â!ë(ÐÁ#Ö€=œðC1à?œ ƒØbr&kò&s²†â;Lø3´CüÀ,3ˆ3Ä2°ƒ;°=¸C<¸Ã<¸=ƒ;̃;Ð;¸=°ÃAÐÃ<¼‡;Ð9D~»=þ=¸;9Ð;ƒ;°==ÃAÐÃA=°=°ÃA=;Ð9¸Ãìä7;;¸=°Ã<Ä<9Ð9¸;Ü9Ѓ;Ð9¸;¸C<¸Ã{Ð9è79Ð9Ð9¸Ã<=¸Ã<==Ì9ÄÃA°=¸C<9¸;¸=°ÃAÐ9¸Ãm=ƒ;ă;=°ƒ;ÌC<è÷A=Ã<=ä7=¬¹;ƒ;ŒW~Ó9¸C<¸=¸=ƒ;ƒ;C<¸=ÃAÐ9°C<=¸C<ä79Ð9Ä=;̃;Ä;è÷<D<¸þ9¸9¸9Ä<¸==ƒ;;Ð9Ä<ƒ;ÐÚσ;ÌC~“ƒ~“ÃAÐÃAÐ9Ð9=;Ð;¸Ã<ă;Ì9¸==¸;^¸=Ä<¸=¸;̃;'d;°Ã4„(?lƒ#L¼Ïû?ôƒ P£/æC2>w¿ûû¿S#>¸Ã4̃;8ˆÃ4ˆÃ4°2=9Ð9ÐÃAă;;99Ð9ÐÃìD<°=;ÐÃAÚÇ9¸=Ôy<äw<Ã<¸9¸9Ð9̃~Ç9Ð;¸;Ã<°=Ì9¸9Ѓ;þ=°9Ѓ;ÐC~“C<=¸=Ä9Ð;¸C<Ä<¸9ÐÚÇÃA°===ƒ;Ä9ÐC<°Ãš³ÃAÄÃAC~“ƒ;°99Ѓ;ă;°ƒ;°ÃA=°ÃA°=¸9Ѓ;܆;°ƒ;Ѓ;C~“==ƒ;ƒ;=ƒ;Ü;ƒ;ƒ;Ѓ;ÌÃAÐÃAÄ9D<¸=¸;Ãm9ÐÃAÐÃÃ;=¸=;Ð9܆;Ä9̃;Ѓ;°=¸9¸9̃;ÄÃAÐC»==°==äw<;¸=°=¸9èw<þ¸;¸C<¬9;=;wñÜ$Go9zîÈÑ#G¯`AvB< ™Çn¿9näǯ#ÇSÄB–4yeJ•+Y¶t2=wÓæ¹#nZ3qÓè1sG=wôÜ‘sG½ˆó Ò#W»‚ì ’£G® ½ˆîè‘c¯ ½‚ì FeçŽ]’‘ü?ðáZ4Žâp;¦!v #"ñp;Ü1v¸ƒ!GAâ1xƒì ‡;ÈArÐÃäp=æÁwcñ(= B‚ƒ¡;èA z$¡‡;ÈÑ£ ä(èár¤5ä ‡;ÈAwÐc+ôp;ÜÁwþƒa=æQrÐ#"¢‡;Øáz¸ƒä ‡;Ôw̃ôp9èáŽx°ƒôpG<"BŽ‚ÄÃäh 豕xƒa‡;èÁŽ­°ƒî = Bz„ô =PD‚°ƒäp9 Âw°Ãô@=ÜA­ƒì(9è±z„ô ‡;ÈAwУ ì GkÜAzˆî˜9"µ¦ ì 9Zãr¸ƒî`9èz¸ƒô =ÜAzˆîˆGDÈáŽy¸ƒî˜9 Bv¸c¡‡;ȱ•xÄcìp9ÜvK˜;¦Á-‘£þ­ ‡”ö‘ \H¶±->ÜA‹kLƒ@î`GãèA w°ƒì˜9Ü1wУ ô(;èÁŽxD„‰‡;ÈAˆÌƒñ ;èAwЃî 9âáz£ äpG<ÜArЃóp= ÂwÄcî ‡;èáz¸#aÇVèA x„ìp=ØQr¸cìˆGAèAwЃî 9ØQ˺ƒäØ ; Bˆƒ‰GAØ1z¸ƒô =ØAr¸ƒîˆGDâ"vЃî GDæÁŽ­Ãóp;Ü1w°ƒäpÇ<ÈArЃìp;È1wăþñ`‡;æ"zÃô PDèAzD„¡9 ÒzD„r=Ü1x¸ƒô(;âár¸#î`‡;æáŽx¸ƒ@ô ‡;èAw°#"ô˜GAÈrÄÃñ(= 2x¸ƒä(È< BrЃô(H< BrÐÃä GAØávЃóp=ÜÁŽy¸Cž‚;Ø1 -1Aº%JÁUü£ú ‡ò1¥dá ²÷¸µ”v¼bâ‡8Èáq0ÃÌ`ÇVØAw°Ãä 9èAŽˆ°#"䘇;Øáz„ôpGTÜAw°Ãä ‡;ÈAvÃñþ(H<ÜÁr¸#¡9ÜÁrÌ#*ôpG<ÈQrЃä ÇeÙAŽ‚\–‰9èQrÐcô(=ÜAw̃î =Üw°ÃQ!‡;汕y¸ƒ[‰9èAz°Eä 9æ‘x„ìˆ;ÈAvd;è±rЃôpÇ<ÈA‚°ƒäp9æAz¸ƒô(È< ÂŽ‚°Ã옇;ÈArЃôp=ÈáŽËºƒôpG< Bz¸ƒî ‡;èAw¨ ìˆÈ<ÜAzƒ;ØáŽy°Ãô`= BwD¥ ôpÇ<:HŽ‚°Ãô`þ=Üv¸ƒ[!=ØAwă­!;"BrÐÃìp;ÈA‚ЃôpÇ<"BrÐc+ì‚'¨0vLƒ²¤ A Á#áò¡î œà NBa¢ :€òᢀ ¾àpA ”à`ð€ÉO°Kòáð^aÄÄÈ¡qÜ"‚ ‚ÈÁèÁæè bÈÜaèæ ‚âÁèÁæÁæÁæÁâ¡ â¡ æÁèìŒâÁØÁØ!"æ¶‚¢ÂØ! "ÜØaâ¡ Ø "*æÜþæÁØèÜ¡5È bÜØÁæ bÜØÁè"‚Ø¡ è¡ â¡ ÈÈÈ!Ü!è ‚è¶‚Ü! ‚ØÁÈ!*ÜØÁè¡ èèèÁÈ!"ææ"" ‚"bèÜa ¢5ÜÈÁÈÁÈÜèÜÜÈÁèÜaÈ ‚Üá² bèÜÈ!Ü„Üa:ˆÈÁèÁæa+è¶‚Ø!ÜP„èa+èÜ ‚ÜÈÁÈÈa+âÁèþèÁâa+âÁèZƒÜÜèè¡ ¨€„ÀØa´„@!Ú@Aê€þìá €€Þa úAòà¼! @À´ € pÀÎàœËÒ,©Ü¦¡À@æA¦ÁÁÈ"‚æAZèÁèèÁÄÈÜÜæÈ!"ÈÜèÈØ¡ è@èÁdè!"æè!"è!"èaæÁæÈaØ¡ ÈÁØ ‚ZcÜâZ£ âè@ÜaÈÈÜ!Ü„ÈÈÁÈþÜØÜ!æ!*"‚ÜèèÁâÜ ‚¤…èÁæÜÜè!ÜaÈÁÈÜÈÁâèÁÈ¡5ÜZƒÜÈØ!"èèÜÜÈÜ"‚âÁâa+èÁâ ‚Ü!ÈÁè!"È¢‚èÜ!ØÁè "è!ÈÁØÈ¶‚Ü "*ÜÜÈØ ‚ÈÁÈ ‚èZÃØ¡ è¡ ÈÁØÁæÁâÁæè¡ ØÁÈa ‚ ‚Ü„ÈÁâþ"‚è¡ è႟?b” ú#øá>¢øá>"6‚òáòá΀}'š¢+Ú¢ÿ!øÜáG„þÄaÜØ ‚ÜèâÁØaÈÜ¡5ØÁè¡ èÜ@ÜÈaP„ ‚ܶ‚"‚âÁæ"bÜNEȶ‚¶b¤…P„@è ‚Ü ‚Ü!"‚Ü! ‚ÈØÁèÜÈ¡5ÈÁÄÈÁæZƒ ‚ÈâÁè@ÜP„èa+ÈÁèèæØÁèè!"æÁÈÈ"‚¶‚ÈÁè¡ Ø!èÜaèEè bÈ!Ü! ‚è¡ ¢"æ!Ü¡5ÈÜ¡þ5ØÜÜèÁâÁâÈa+æÁÈa+èÜØ!"èèÜèâÁâa+Ø!è ‚ ¢5È!"èEèÁÈÁèèÜÜÜÜÁÎÈ bÜÜæÁ¨€„ÀØa(šôY}ùAJôù¢GœÄKœ#ðÁháÄÄÁâa®Ára""ÜÜ!ØÁÈâ¡ ÈÁÈÜÈ¡ èá²È¡ èZƒØ¡ è¡ âèèEØè!ÜÈÜÈÈ""Ȥ…ZƒèèþÁÈ¡5Ü!*Ü! ‚Èa"‚ÈaÜÈ ‚ØÈ!"ÈÜÈEè!æ¡ èè¡ â "ÜèÁN“@èæ¡ â¡ ¢ÂæÁÈ!„â!"ØèZƒèÁâÁØè!"ÈÈ ‚ÈaØ¡ ÈÁÈÁØÈÜÜè!Øèèa""æÈ¡5ÈÁâÁÈÁÈÁÈÜ "*ÜÜÜÜèÁè¡ È"bÜÈÈÜa""ØÁØèèÁØ¡ ØæÁþÄæÁÈ ‚èÁÈ¡ æ"b ‚@èÁØ@Ü!Üèèa+ØA;¶¸C= Ñ“P”îƒDîã9 ¹Ã=þaGBèÁ/wƒî ‡;ØAz$d!ä@=vc!îXˆ;¢„x°!Q"=ÈA„°ƒì@9âvЃó@;èáŽy „ì =ÜÁr̃!‡;ØA„!ì ‡;ȱrÌ!ô`‡;æÁwƒîˆGBØzăóˆ;æAz$„ !;Âw,Ääp‡DÜÁz „ä˜9èár¸ƒqG<æÁrÌÃôH;Bwăô ÇBȱwÃñpÇ<Èáv¸c!ÇBæáŽxH„ô@;vƒä 9ØáŽyÄ! ™þ‡;Ø1„Ãä˜BÈÁwÐC"î˜9èárÐÃó`=ÜÁr,„ì ‡;æy „î˜BØ‘‰¸#ì BæÁwÃñ`Ç<‘w°cü( ?~ö³ÛàG üÁ '˜¢üÀ…<ŒŽäcÿÈÆ®ñl¨ûPÄ®ñ °£Ê8ƒ-ú‘ 5\cŠX1pÑb„說ʇ>Ü‘ óC"ô˜†8ØÁ z¸ƒä( ;Ø´¸côH;Èár°cô BÈáz#!óH=ÜAwÃô ‡;èAv¸ƒî`Ç<âár „ôpÇþ<ÈAv¸c!î˜kèAwHÄñ@9BrЃ!=ØAr !ó`‡;âáŽy$„î Ç<ÜAr¸ƒ a‡PÝ„Ѓ q;èAvÌ!ñpÇBÜÁz#¡9Br$„ópG<ær¸ƒ䈇;èávЃî˜G<ÜÁz#ô ‡;èAwÌÃô;ÜAŽx¸ƒ!=B„Ð#!×DˆDÜÁŽxé%ô ‡;Ø1x¸ƒä 9ÜAvЃî=Èázƒî˜=Èáz0/¡9ÂrÄ!q9èÁzƒäp;þÜAv$d!aBèAz „î`Ç<Ü!N,Áô˜Æa\¡ hèºD>þ{œÁ Ô(#Ôñüƒ? †?LÐôCý8=,ðÜC ùøÇ=Àà˜€B°‡úq„{œ¦xn?ØñŠi|â ;ÌZ$„ a=ȱy $Jä GBÈáŽy¸ÃHYBèázƒä BÈ‘r,Äñ ‡;â1w°!ô`BèrЃôH9ÜAŽ… „ô Ç<Üa$wÐ!ñ@9èáz¸ƒôp9Bv¼d!ä ‡;èáŽxc!äpÇ<þÂŽ„Ѓô@;èávÐÃäp=$B„̃ a9Bwăî ‡;æAz¸c!ÇBÜÁz $äpG<ØA—ăô`GBæÁŽ„c!î`‡;âáŽy¸#ìpG<BzÃì GBØqJz d!î`=Âz „óp;rÌ!äp;B„ÐÃôp=Øáz¼„ôp9èÁrЃî =2v$d ‘=2rÐ!ä ;^2r¸ƒôp9èñvAY ;¦ÁȺ…âéð—Øã NÐÇ;ððäÿÐÇì¡þ~¡D؃ì¡…8aøË=Îà„}4€|¸úá{€!ϸg >ØA‹iˆà ;¦ÁŒy #!ô =ÈázÃä ;æázÃìpG<ÜArЃôˆBÈA‰¸ƒî 9èÁŽy¸ƒ䈇;$ÂŽy¸ƒäpÇ<èÁÖÃñàô@AAäàäÀñ€ô@ôÀô@î@ Añôóðä°ä€ìàìàì@ì€ô@ô@î0ääàä@äàô@î@ôñàäô@A 1î@î°þAìàñàäÀAì°îÀAì€ìAäàô@îÀîÁäàì@ä@ì0äÀô@háìä°ä€ñÀä€ì@ô@î@ìàô ó@îÀñ@ìàóàóðô  AAä°% î@äàôðô@ìàó±Aî@äàäàì@ä@/Aî@ô@ô€Kà Kì0 ‡1 ŠWWÿöNp'° ~° c€ Y,ÀD_°'° `  [À‰°YÀþ `àþj€öpÿàþÀ¤{Yùðø¯`>à@ì@Ó ì@ ì@äàìàó€ñ@ôàä@óàñàä@ì@ä@î@îÀî@ôàhä€î@ô@îìàháô@î°ä “ì@ì@ Áä@:éñàì0ì€ä@î@Aìàä@ìàäàä@î@ôàìàì@î@ôP•Aî0î@:IÁ áó@ôàóàä0îÀîÀÁî@îÀôàñàä “ì@î@ôþÀô@:9î@ôÀîqJ:Iôàó@ô€ôàäàô@î0î0Q¢“ó€ä@:ÉAQ‚ôP•ä0ãQ‚ô€ä@î0îó@±î0ì€ä@ÁôàäàhAôàóà1äàìàFä@î@ôÀ±ä°ì@î@ó@ôÀ!ô€ôàóàó “ô@ô€ä “ä@ABÀ K0ì0 ü@± “0 ް¢“ðþ üðüðüðùðüÀÁÿÀÿa`°£ü€‘þ±£€ÁÿÀ(¥R:¥TZ¥Ršù€ì@ Ó ÀGì`>ô` î0ä0î@äàì1ä@äÀô0î@:IUÁô@î:9î@ä@Áô@îÀAô@xxÉô@î@ìàìàó “ô “ó@ì “ñàñàìàñ€ôà쀗:ÉU9Añàô@î@ì0äàä@:Iäô@ó “ì “ô@î@ìàôàôÀî@ô€äàô@Aä0:Éî@î`$AAô€ôÀî@þô€ôà Aî0ä€ Añ “ôàó@î0UIä@äôàFBóP•ô@óàä@î@ä:Iô@:Iî@ì€ä@î%ñ€ôÀhA1ä€ áä@1ñàäàäàäàäàä@Aì€î@ô@î@ôÀô@îÀî@Áñ€ô@î ž îÀÓ ¥ùðüü` ÄQÊ‘‚±¹P¥ù`¥|Û·~ë·ùÀ´p Ó äàñÀ âàÌ@ôî@î@îìàä@UIôþàô “ñ€ä@ìP•ìàì@ô@ô@îä°Aî0ì “óÀô€ä@Aô “ñ@UIä@ì@:Iô0ñ€QBôÀó@ì@ô “ä@UIôàôÀôÀô@×Dîä “ñ@ô@ôà±î@:Ióàô@î0îî@î@xÉî0ä@AîÀôàìàô@ôÀî@ôàô@ôàä€ô€äàäàä@ÁôÀî@ôÀî@ôàä@ñ@ô@ !ôàñÀ:Iô€þì@äà Aó@ô@ Aô “ôàä@î :I:9ì@ìàä@ì€äàôÀô@AAôÀîîî0îî@:Éó%î@îä@Aô€ì€ô€ì0ìàäàñÀBà K0ì0 ü¥ù0F*¥ù¥ùð·¦|ʨì·úÀ¯0 à â@î0 ÌÈàôÀô€ì@Aî@îÀó€ä€ô@ô@ äÀ1ì0ìàô@ñàìî@î@:9äî@äàô@ôàäàôàþì€ì@Aäàô@î@î@ä@îÀô@ôàóP•äAAî@äÀô€äàäàäàô îÀîÀñ€ôÀñàñ€ô€áôÀô ô@ñàô@ô@î@ô€ô@:Iìàì@äàô :IAäàìî@îî@óàô@îÀñàìàñàôÀó@î@ñàóàô@î@î@A:ÉAì@î@쀗äô€—ô :¹î@háô@Aä@ó “óàäàìþ°äàäîÀ:I:ÉôÀî@äÀUIó@óP•ì@î@î0î@ä0ä€äÀ1ä@îÀóàTÀ Bàô0 ©ÜÜÎýÜÐÍ·ü€ñ` æÁâ0 ì î@UIîÀô€ì€ô€ì@ôàì@ô€ä°î°Aó “ô€ì€ôÀîÀôàì@äàóàä@Áô€ä@î0î@ôàô@î0Aî@!ô “ìàä@î@ì€ Aî@ô€ìàôàóàó€háóàóÀä@þî@ô@ô@ô “hAî@Aîìàä@î@îî@ô@ô0ä@Aóàñ@îôàä@ó “ñ€ìàôàìàô@ôàñàóÀî0îÀäàäàóàóÀî@ôàñ@î@îÀî@xIî@î@:Iô “ô “ìàä€ôÀî@UIì@î@î@î@ä°î@ôàóàó@îîì “ä@Aô€äÀî@óÀî@ô@î@Áî@ó “ôàäàô@ áñ0ä@þî@î@óàì ž@äÀÓÀ|; ÑÝïþþï¥ì ×0 à î ÓÈÁî0:Iî0ô@îÀî0ñ€ó:î@Aô@î@UIì0äî0:ÉÁî@äÁóàäàóàì@î@äàäAî@Aî0ñ€ôÀóàô€—ô ñàñ “ó “ô@ô@îð1î@ìàô@î0xIô@Qî0UÉî@xIä@:¹á Aì@îÀî@ó@ôÀÁô@óþ «ô@î%Aä@î0î0ô@ôÀóàôàäÀôàñàó@îÀÁîpMôàóàñ€ô0ä@ä€äÀî0îÀ:9ì0:IáäàäÀUI Aì@ì “ì°îÀÁî@î@:9:Iäàô€ô@ôÀAî@î@ä@:Iî@áŽ9zäè‘sÇÎ=wî„pÝ´-^ü‡Mã?~£òUÜ— F’%MžD™RåJ–--â›÷j8qâÈÑ›62vô²£×°!=rîè¹#GÏ;¡ì„²kHOþ(=rôè¹cGÎ9zìè¹#G¯!¹yäæ¹#gÕ¹y ã±£×^Ãx é‘£GŽžPwVÙ¹#×=wäè¹#GÏ]¼xìè±#GÏ9zä董玹yñÈÑsGŽž»xäè¹cçŽPvóÜÑ#GÏ»†äè eGŽž»xBÉ‘sÏ=r çñ%G¯!9zBé¹cGŽž;v ã eGÏ=wäè‘£GŽ^CrôÆ›×;wôÜÅc×ÝorîÈÑ#G=rô®w'wèq‡xÜa§!rèq‡z܉gwæq‡yør‡¾È¡G(r"Ǫy¢Çrè!‡ž†ÈiˆwþÈÁÐzÈ¡Çz„bCzÈ¡G¨x¢ÇrèY‚“%æag~þáB .¸ ¥¢c<k²%~þ©ávœ(i5¾°‡~H²‡~\b³M7ßü‡žy^ɉqÈa''zlq‡r¢‡wè!‡rÜ™gwØiˆvZor"G¨xbgvÜ™G(rèq‡r桇wèŠzÜ¡‡zÈq‡œ†è!‡zbG(rØq‡wÈq‡z¢Çrâq‡zÈqg=¡æq‡z"'ž†È¡Çz"gwÈa‡wØ™ÇyÈ¡ÇyÜ¡‡zÜa§!zæ!ÇvŠÇþrè!Çz܉Çvè!'wØiˆ†âiˆœyÜ¡‡œ†èq'wè!§!vè!§!rÜ!ÇzÜ¡‡œ†Èq‡wÈq‡†èiˆrØ¡ÇzÈq‡±xÜ¡ÇzÈ¡‡¾æq‡zÈq‡rèagwèiˆzÈq‡zÈ¡‡œyÜ¡‡zÈaŒ¯yÜ¡‡wâq‡žyÈq‡wØq‡œxÜ¡‡z؉ÇzÜ!'zÈŠrâq‡žßæ!gvbt‡œyÜa‡r¢‡w„ðDw虦¢\rÉçŒ|þÉ'Sª„ç]„©ˆ{Îp⌨ %•(Â逞|p途}ÔXA'ö£þR²ùájœàƒ˜•ž‡>zéMâz^çpÈq‡q˜q'vÈ¡§¡ßèq'wâ!‡zb‡wȱjrèa‡wèaÇrèi9Ü1rÐC(ôpÇo¬ârЃ/ì =ÈÁw̃V!‡;âÑv¸cB‰‡;Ø1wÄÃôp9è!z¸ƒîˆGCæÑrÐC(ä ‡;èÑxƒä GCèÑy…ôp;Bz¸#B!=ÈAx4„ó`‡;ØÑz¸ƒìJ<ØÑz4„ô`9èáz¸ƒôp9ÜAz…B±Š;æáŽxð%B¡‡PèAþzü†äpG<BwÐÃôø"_âáŽx¸ƒôÀ=ÜAŽycä`‡;è!”xÃä ‡;èAz¸ƒî`=ØA«ƒäp9èÁwƒñ ‡UæáŽx°£!ñø =„v4„ä ‡;âÁr¸#î G<Âw|Ñìh=„B¡ÄƒBðÈÁŽið£"´È‚E*¢^˜!¢ D$Xñ Øã NàÇ=¶ äÊîq†øƒzƒøq3ôÃ}ðœÀyvÔ£iHE:R’–ôxÅ4ÄpÃÓ‡;wЃñ˜9ÜÁþw°# !GC~3r¸ƒó 9Ü1zðeô =ÜAz°Ãä`Œ;~3r¸ƒ ™G<2wÐCì ;BrЃ/ì 9ÜAwÃô ‡PØAr¸ƒä ‡;ÈÑx…ô`G<„BzÃô ‡Pèáz4Ä*¿a‡Pè!vЃî 9Üw°C(ó`GCØzÃô ‡Pâázü&î GCèAwƒä 9„ÂrЃô GCØArÐÃäp=ÈAwУ!ô ;B†Ðƒ ¡9ÂwX¥!ô`=È!”xУ!ô 9«þ…ôhÈ<È1†ÐÃä 92†Ð£!숇;~ãṽî`G<æAzÃìh;ÜAr¸ƒ;¾èz°Ãó ‡Pâázƒ|¡9Ø1wPIˆ;¦Q‘Òu4lÈ4t1ä@T¤ö8ƒ¨Q F`c &ØÇ5úq}h¡cG1Îà„|ì ÿЃ6úA'䣤gFsšÕ,Òy¸ƒ9;ÈAœ¸ƒì ‡;èÁzÄ£!ä˜=ÜA«¸cî G<Èa¡°Ãäp;ÈA/ºƒî =øBv¸#î G<Âz¸ƒä˜9Øáz¸þƒôh=„Âz¸ƒä ‡;ØA†ÄC(ó`‡;âÁކÃô`‡;èárXÅìp;ÈA†°£!ä GCèáz¸ƒô ‡;Èár4„1 a=øBwЃî° =Ø#z4„î ‡;ÈA†ƒB¡;ÜAz4$ìà =„BzC(ôh9èÑy°Ãñ †æáz…îˆ_è!r¸ƒôq=ØAz°Ãä ‡PÈawă|‰_â¡x¸#ì =ÜA¾°£!Vq‡UÜ1vÐC(ôp=Ü1†ÄC(ì Ç<òz£!ä° ;ÜrÐÃþä ‡;â1w°ãœXÂ<Ø1 ~€”WÀ;Þa 샧0Eøq ~dãŠ8Ã.ø¡R´cž`.þÁE¢Š:p±fÎwÞó Å;^‘pˆƒìȉ;1†Ã_œ;èAz…ä ‡;؆ƒ䘇;èáŽy°ÃäàK<øÂ¡°ƒî ;„BwÄÃ*äÀ=Øáz°C(ä˜G<ÜAr¸ƒî`=ÈázÃì˜9Ø1†C(ñh;2ÑCäpz ¡ˆ« w`«`‡† w`w˜‡† ¡ ¡ v rpz þw w ‡xpz zprÀxpz v˜z ¡ rp‡yp‡xhvpvp‡x z w`‡xhvhz w r`‡ypv vpvpv vˆw˜Ƙ¡ˆw w w « v ‡†`wø¢† v v vhvpv˜z w r`‡†˜¾`rpvprpvpvpz z ‡† vpz˜vŠx˜r r° rprpv˜w w w`w ‡†XOHw`‡i©Òá‡[´ˆU`Ò‘§|ø‡|¸E‹È~ø‡|þè¨|¨~ø‡~à‡|ø¼g„Æ4Çx qøp w`‡œ`[ ‡†˜¡`‡yhr w w ‡† zpr w r ¡ˆw˜¾`‡†`z˜w z˜rp‡ß w w vhˆyhˆ/rrprpr ‡†ˆw`‡ß˜w ¡ˆvp‡y zpzhˆy v v w`w z zpvhv r˜w˜‡/jˆxhrÀzpv Æqv w w w zp‡xpz`rpzhz zpr v ‡†˜rp‡x`rprˆ7þw`zp‡ypr vpr`w˜wˆ‡/jz w r zÀyprhvhˆ/¢‡† zp‡yà rpvhrŠy`‡yhvprpr v˜r˜¡ w˜w° v vŠxpr ‡yÀrpr° rpr r w v v ‡y ‡yhˆxp‡yhz w`‡xpr w zOX‚y`‡ià‡4ãÎ+~ȇhdÏöL3~ vx…ipz`‡œ`d r ¡hr`‡xhˆy ¡˜w ‡xhr w z`z z`z þz w rpr° rŠx˜w ‡† w w vhˆyp‡xp‡yp‡ypz «p‡yˆz w rpvhˆxc¡`r° r mzhvpz w˜r`‡y vp‡x r rŠ/š¡ r w ‡†`rpz w˜zø w˜rhˆxhvhˆDir`w`‡† ‡†ˆw`« v˜vp‡xpúhz w˜¡`‡† v ‡† rpz w˜w rpz ‡† rp‡y z`¡ r w « w ‡†˜‡†˜wþø"¥rp‡yp‡yhz w w rhr rp‡ßpRz ‡ypvhz wˆwˆ‡† r˜%‡† w ‡x rpvpz`'7rpz w Nw ‡ipÏ‚5؃]3}ˆZÈ qø v˜q`Z z z`z zHvpv°Š†`zp‡/jˆxpRr ‡† z «p‡y z zp‡/¢‡ß w z r ‡†`z`z zø zpr`z`w rpzp‡ypúhr w z w`r v° rhr ‡yhˆþx w ‡† w v zp‡yŠy z`r r ‡† ‡† zp‡x`q r˜‡x z˜r v zpvpr ‡†` w˜w ‡† z ¡ˆ‡yp‡yø"w` z w ‡xsr ‡yprprprhzhˆx z w w z zpz`z z w zhr ‡†`rhz r v ¡ w`zp‡y z`z zhz vp‡x`¡ wˆ‡yhv vp«hv w°Š/bw ‡† ‡† z˜‡† w vpþ‡xpr w zpv wø vO r`‡ià„eáváÀv …œr v`†i`dp‡xprpz z ‡yhrpr rpvHw vhvhˆxhr˜wˆwø zpRw rhˆyhzhz`w˜w`z w w r˜‡† ‡xprprp‡xhz`«p‡xhˆyhˆy ‡xp‡yˆw w z w w ‡†`« w rpRr v v ‡†˜z ‡y ¡ r˜w rH”† v w ¡ˆw rþpzpz « ¡ w w rhz`z ‡D!‡/rzŠßpzpr° w˜w° r vˆw`‡† ‡xpzø ¡ r w˜w rˆ‡†`‡yˆw`w ‡x#w z ‡† ‡ßp« ‡† ‡ß e‡y z ‡†`z z w ‡†ø† w ‡†˜‡†ˆw rpzhr r rpv ‡yøypr˜«p‡xhz v˜w8N‚x`‡ixÆixá¦vj~À‡xx…š‡ß˜‡i‡x@w`w˜¡ z zp‡x þzp‡yhr vhr ‡ypv ‡† ‡†`wˆ‡† ¡`w ‡D!z ‡† ¡ z w ‡yp‡y zhv w˜wˆr w wø†`w`zpv ‡x`‡†`w˜¡ ‡† «p‡x ‡† ‡† rprpr w wˆwˆw`w « w`‡† ý zhv z w vpr v ‡† w w w ‡† z w Æpr ‡†ˆw w zhr w wˆr w˜vp‡yhz`‡†ˆ‡yÐxpþr w z`e¡ˆ‡ßp‡xhr° w ‡yˆrhˆxprhˆyøbw`wˆr w zp‡yp‡y «p‡yp‡xÐ/"‡† r r w r w˜‡† zˆw w w ‡†`r wˆ‡ypvXNX‚y`‡ià‡¢…Â^(†Nˆƒ8@§¦sæ|`‡WÈ q ‡/šf˜dhz ‡†ˆw w vˆ‡† rpzprhz w`‡† z z ‡†`z ‡†ø¢†ˆz`‡y vhv zŠy r r z ‡yþpz «hvˆw˜‡xpvpz w ‡† w vhz ‡y w rˆ‡†`zhqw vpzhˆyp‡xhzpv v rp‡xÐy° w rhÆhz ‡† ¡ˆ‡y ‡x r`‡†`‡† vhˆxp« « ‡xpvpvhrˆ‡† zpzhzhv ¡ rp‡xhv r rpvpz ¡˜r w w rpzp‡xpz`wˆwøy v rp« z w° v°Š†`‡xpRz z`er vpþz`zp‡y ‡'wˆw ‡xkv ‡ßpzhvˆvhvpzh!ð„$pv˜‘:.è¨|è…w°$ˆƒ!@‚cøS8ƒmÀS`†l8ƒm¨óÎç<|`[˜qp ‡y¸†i`[ zpz z`‡† w z w «hˆy zhzhr ¡`‡y`‡†ˆr w˜r vpr ‡x˜vp‡y`r w «ø zpz zpr wø zhvpr r° r˜‡†˜w w w ‡† zrôèÍsç.;ƒä ºcgþ9zÙ¹#GÏ;zäè¹#gœAzìÜ‘£çŽœ;rì ÒsÇŽ9zä2t÷ÒÝK†ìæŒçŽœAzìè¹#Ç=vîæ±‹ÇÎ =ƒñÜ‘sGÎ ;wäÈÑcGÏ;wìè$GϽšîè$G=w[dGÎ9zì ÒsGÎ`ó¼28äˆCŽ;âL2îij9ôC9ô¸Ã£ì9ôC;ô¸C=îc=ñÌÃ949ô¸C=ѳ_<츂ñ%9î°cP<ìDAÄ’CÏ~ôã=‘C;ñ°ãN<îÐãÎ<ìÐÃ=þÍC=îCAôCÏ~ó¸ÃŽ;ñC9ôìG=ìle= ’C;ìì;ñ°ã9û ä=î°CÏ~ìC;ó¸C;î°ã;±CAäÐãN<ìD=îÌã;î°C;îÌ9îÐc9ô°cP<äÐc=Ñ£à<î°ãN<ìCÏ<ìÐc;ôD=Íå~È1r̃ì 9ÜAw°ƒäp=öCz¸ƒô`= BƒÐc?ñ0;ÜÁw°Ãì ;Ü(¹ƒô09è±zc ŒŠ;„à *ƒÓàGÈÎ` ~$ŒË8â2zìCþ U(…øÁ(œù8³¨Å-šŒóx…{ÈAp¸c̈2èAƒÐÃìp=ÈÁƒ°Ã ô ‡A¢äŽyÃäp;Ü1rЃô`Ç<âᎭ¸c äpÇ<ÈAr¸ƒäp= ÂwЃô`‡AæáŽx¸cìp=ÈAr¸ƒîˆR< Br¸#¡9èár°cä`‡AèÁr¸ƒî 9ÜAwƒî =ÜAr¸ƒî ‡;æáz„ä 9ÜAƒËìp=Øay¸ƒa‡;èAzd ä ÇVÈázà äpÇ<èárЃþîˆ=ÜAƒÐƒî 9èár°Ã ô`‡;ØayЃ!=Ø1rЃñpÇ<ÈAvÄÃä`‡;È¡ v¸ƒä0;æ1wà ä 9öCwЃ™‡ABŽx „î 9æÁ(wƒî ‡;ÈAwÃä 9ÜArЃî 9è1r̃™Ç~Øyì‡䈇;èAƒÄÃ[1=ÈÁŽy¸ãœB<Ø1ñC= ÃF'jщZ`#ÿÈÇ?ò!Eâðãùà"hC+Ú’ñôÈÅ1Ä1 pÐÃâ˜;rázƒ™‡AâAŽycìþ ‡;æax̃ôˆ‡;âÁŽycªä`= 2v$ì ‡AâAwăäÈ~ØarЃó`‡;È1vcî £Øár¸#ä ‡;È¡ y„î 9 2wÌc+1H< Br$ä9èAzLÕô0;èÁwÌÃä0;èAwƒó`9豟­ÌÃÄ29æAz¸c î =ÜArÐÃäp9èAŽy¸ƒó0H< BwÌà ôØŠ;æárÐà äØ=Øav„™‡;ØarÐÃì0È<Ø1rÐÃôp9èáŽyƒî þ‡;¶Bƒ°ƒî =Øayì‡ûa‡AâAz„™9èav(ˆä Ç~Bz„ôp=ÈAƒc î =ÜAz¸ƒXä ‡;â1w°c œXÂ<Ø1 ~˜,ÿÈÇhƒ-ìacî Å4ÄpˆÃט†;áv¸ƒa‡;Ø1Ã[¡;BŽx¸ƒô`Ç<ȃЃñpÇ< BwЃaÇ~ÈÁŽx¸ƒ䈇;¶BrÌà ôpÇ@Ü1r¸#ô Ç~èA’ƒî`G<ÜÁŽx¸ƒäp=ÈArdäp=ÈAwÄÃ[qþ=ÈÁwÄà QR=Èáv(ˆî ‡‚Øax¸ƒäØ=Èaxd îˆ=È%v¸#ô0=òƒ#î =ÜAƒÐƒñ 9Ü1vÐà ô ‡;Bz¸ƒî Ç<*Lý̃ô0È<Øáv¸ƒa=ÈázÃä Ç~èaz$óp;èAw# ¢9ÜAw°ƒä˜;ÜÁŽx¸ƒ!‡;èQawÐÃñ0=ØárÐÃô =ÜArЃô G< ÂŽx¸ƒû™ºAØázDžH‚;Ø1 bs¿ûÞÏ"?ðáŽ\¸ä0ˆ{þæA wÌÃñ`=öCr¸ƒAò9‘c û‰G”Ѓ;Ã@¸Ã<¸9̃;=̃;ЃAÌ;=¸C<¸9ЃAl=ƒ;Ѓ;°ƒ;̃;°=Ã@¸;Ä<°ƒA°Ã~Ð9ЃAÐ9Ѓ;Ð9Ѓ;Ð;¸C<Ì;¸C<;Ѓ;ÄÃ<ì9;¸;¸;Ã<=(;Ð;Ѓ;Ì9ÐÃ~Ѓ;°9°9;¸C<¸Ã<¸=°9ÐÃ~ ;D<°ƒ;ă;Ã~=°ƒ;Ä;Ã~==¸9¸C<=ì=Ä9ЃþA=9Ѓ;°ƒ;°=Ã<°Ã<¸=0 =¸C<°C<=¸ÃVЃ;ƒ;°Ã@ƒ;Ã<¸Ã<°9Ð9¸9ЃAƒ;=;Ì;¸C<°ƒAЃ;Ѓ;=¸9ÐÃ~°ƒ;Ã~Ä9¸9Ѓ;Ã~Ä9Ð;ì;;¸;¸ƒN9Ѓ;=',Á<°Ã4ðÃ÷ý#@ä?àƒ;ä3ˆ9T;Ì30Ã< ƒA°Ã~Ð9(=D‰;̱9ì=D”¸;Ì9¸=°ƒA=°=¸==°ƒ;°9ÐÃ<Ã~ ;¸9¸þC<0 =ƒ;Ð9(9ЃA°=¸=ƒ;Ð9°ÃT=ƒAÃ~°=ƒ;°Ã<ƒAÐ;ì=ìÇ<Ã<Ѓ;Ѓ;=¸;Ð;ìG>уAÐ9=¸Ã<¸C<¸=ƒ;°£Äƒ;ƒA°=D”̃;Ð9ЃAЃ‚°ƒ;ÄÃ~Ѓ‚ă;ЃAƒ;Ð9D‰;°ƒ;Ð9¸Ã@=(=ƒ‚Ð;=ƒ;°ƒ;ÐÃ~ÐC<¸9Ä=ƒ;Ã<Ã<Ð9Ѓ;ă; „AÐ9̃;̃;Ð9¸=;Ì9ÐÃV=¸Ã@¸;=þ=ì;ă;ăAÄÃ~Ѓ‚°ƒ‚Ì;Ì9Ð9¸Ã@ƒ;Ð9¸p‚¸=Lƒ@&¨‚Ž?àƒ;ÐÂ4€ƒ8°9Ð8L;ä;ÐÃ<¸9Ð9ÐÃ~ƒAÌ9ÐC”¸9 9ЃAƒ‚ÐÃ<¸9Ì£==¸9ì;=°=¸9¸9̃;ÄC”(9¸=ƒ;ÐÃT9Ð9 „°9Ð9Ä<¸C<¸9ÐÃ~Ѓ; „Aƒ;°=°ƒ;Ð9Ѓ;Ð99 „Aƒ;=Ä<ăAÐ9¸C<°9¸9Ѓ;°9¸ƒþN¹=°=;¸=¸;¸9 „AÐ;¸C<;0Ê<¸;=(9Ð;Ã~Ä;¸C<¸Ã<¸9Ѓ;Ä9L©;Ð9 9¸9ЃAÄ£=¸;¸C”¸Ã<Ä@¸9Ѓ;=l…AƒA 9¸9ЃA=;¸±¸;¸ÃVìG<Ã@;ÐCäBá)ìC.ˆ .ìC.hQ5ìÁÈä?¸-¸8ˆ9°ƒ8LC<Ø‚;Ѓ8Ìþƒ‚DÉ<ì=(;=l…;°ƒAÐ;¸;C<ì;D<ì9ă;Ð9̃AÌ9¸;¸C<;̃;°ƒ;Ð;̃AЃAÐ9°Ã~Ð;¸C<ì9¸;==¸C<(=;¸=¸9¸==l=C<ì9;¸==¸=9Ä<¸Ã<¸;Ã@Ð9¸C<¸;è”;Ѓ;°ƒ;Ѓ;Ð;Ð99Ð9=¸Ã<9¸9¸9¸;¸;;¸=°=°Ã<Ð9Ð9¸;ăAЃ;°ƒ;Ð9¸;Ð9è”;;þЃ‚Ð;Ð9=Ã~̃;°9 9Ð9°C<¸9Ä<=ƒA=ì=D<¸;ă;°ƒ;=C<¸==¸=°Ã<¸;Ð9±ì=ÄVÐ9¸=Ä<¸;¸;¸;¸;Ä=ƒAЃ;°==¸C<¸ÃV=;̃;œ'A<°Ã4ˆ ЂÂdÂ(@C&`Ã%¼qÔÀ=(°À?Ô@h5Ç dÁ|Œ=ðÉ܃9Ød‘ðC?Ѓ',Á ƒÂ8=€q¼ðCqôÃ>?‡',Á Ã?8A>ŒÌþ<ÐÃ+Lƒ8ˆ9Ä40;0Ã~ЃA==¸;ЃAÃ<°C<ìG<¸=Ì;Ѓ‚Ð;Ð;ЃA°=ìG”Ѓ;Ѓ‚Ä;ÌÃÔÑÃ<Ä<°ƒ;=ì9¸9ÐÃ<°=ƒ;=°Ã~ăA°===¸;¸;¸=¸==ÃT±Ã@Ä<¸9̃‚Ã~ă;°==¸9ÐÃV¸C<=9Ð90ÊV¸9̃;=Ã<Ð9¸9Ð;Ä@¸Ã<°Ã<Ã<ì=¸9¸9ÐÃ~Ä;Ì;ì;Ì;¸Ã<ì=°=¸þC<ì9Ð9¸9¸=ìG<==DÔÀ?ä?üÃ>˜=äÃ=|Á?œ@"€AàB6ü€Pƒ¨ ¨ Ç;dA>üƒÜèÁÜÃàÁ>¨Á ƒ€)|Á?œ@>ðƒþüÃ=œzX$äÁ?DÁÀ=œA"Œ?Ô?G?dA ðq¨‡5lÁ?8Éà=ä‚{8;¸‡; Ã~=9=ƒ;ƒ; „;Ð9;Ð9¸9¸9L9¸9Ð9¸9Ð9̃;ƒ;=°ƒ;Ð;Ä<ìG”Ð9Ä<¸;ƒ;°ƒ;ăAƒ;Ѓ;ÌÃ~°ƒ;°=ƒ‚=ƒ;Ì;ì=ƒ;ƒ;ÐÃTÍ9¸;Ã@L=¸;¸;Ð9¸=ƒ;Ì9‹;°C<¸=°=¸=ƒAÐ9°C<¸C<¸=Ìþ9Ä=C<¸=¸Ã<ƒAƒ;Ѓ; 9Ð;¸9¸Ã<Ã<Ã~°ƒAÌ9Ð9(=°Ã~ƒ;;;Ѓ;Ð9̃AÐ9¸;ă;Ѓ;ƒ;Ѓ;ăAÐ9̃;Ð;¸=°=ÄV==;̃;°ƒAÐ9(ˆN¹=ìÇ<Ð;Ä< 9¸=l…;°ƒ;°===°=;ì=ƒAЃ;ƒ;ă;Ì£LA°ƒ;ЃA'$;°Ã4ˆLäÇaÂÁþ6ä),A)ØðƒôàððƒäÃ?ÜÇ؃üØüÃ>ðœœC‡üƒ=€Á?̃ ȃ),A)ìà ð܃4q??t5?G>øÃ ÔÃ?8É̃;¼Â4D²8ÐÃ<ˆÃ5¸3=¸=¸;¸Ã@¸9̃AÐ9¸9¸;ÐÃ~¸=̃AÐ;ÐÃ~Ì9Ѓ;̃;°ƒ;ЃAă;ă;=9ÐCç»9¸=¸9ЃA°ƒ;Ì=°9ÐÃ<9Ѓ;=¸==t~<=t>9¸C<þ¸=ì;¸C”D<¸9Ð9¸; 9ЃAÃ<°ƒAÌ9¸Ã<°=ÄC”¸Ã<°ƒ;ƒA@¸›ÇŽž»xóØÑcG½xìÜÅcGÎ]Evô*ÒsGÎ9zîÈÑ‹GŽž;zñÈÑ#7Ï;zôÜÅ#G=wäèUœçŽž;zäæU¬HÏ9wôÜÍcW‘ÜËŠìÜ‘sG½ŠäÈ u½ŠìÜÅ›'”=wôØÑ«H޹Šôȱ«ÈŽVwñȹ›çŽž;zã‘£GÎ9wä董ǎ¹—Bé‘{Y‘=wôÜÍ›W‘=wäè ñ´d»iüþ¥V­ZM–Õÿþø’={65îeá7†üúýów­ß~,¬‹÷ïÂ>0ùüPëGÏ ?'ÿœ¤¾Ç¥ß?'ö,ô;qïL>/ë°©qÂ_§õøýsòïÞ™l&èå‹÷ï‚¿ÿ.x'‹Ðù§†Ôö'.xÄr²aAž|þqâµ ÿÁ'ž\¦™+rÜéÐfÜ!§¢yÈq«xè!‡râq‡wæq‡­è!‡r*"‡rèŠr橈vèa‡ræq‡wè!‡vè!Çy*z‰œŠæ¡‡œŠâq‡rÜ¡Çrèq‡œŠÈq‡rè!‡rØq‡rèa'wØaG(væaG3þzØ¡‡œyÜ™‡œŠÈaÇvÜaG+z´r‡žŠèaÇvâ©(wèÁÊzÈ©ˆ¡Ø©ˆy詈¡Èq‡z܉§¢yÜy‰zÈa‡wèa‡¬Ü!ç%wè!ÇyÈ¡‡zÈq‡rè!G(zÈ¡G(zÈ™‡wâq+v*¢§"rÜ!Çy⩈wØ™ÇvÈ™ÇvÜy‰œŠÈq‡wØq‡rØq‡wè!G+z*b‡wè!ÇrÜ!Çz*¢ÇyÜ¡Çy°ŠvÈ©ˆrÜa‡zÜ¡‡wè!Ç—Èq‡rÜ¡‚!Ü¡g UËCÒ(: HáåŸöÉåþ{ˆÁE 5¨ùÇŸEÔ &Ÿ}&øG5„ùGRúQ„kpù—pIÍ-Η}LQ}ˆù§E8ÉÅ–òÙg~þéÇ‹RîÁƒ™3ΠE5„á'>ñç<¡E3ÖÙ'öNáÇž\˜Éâ Z²áèÕæ¡ç•iÄvÜ™†wq‡wÈq‡w⡇wèq'vÈÑŠzÜa+zÜ™Çrè!‡rèq‡w詈wÈq‡œŠè©ˆræÁÊzءǬ*¢‡Šè!gv°¢G(z*¢‡z„Bw°Ãñ¨9èárУ"ó =´Bw`Å/©Hþ<*yeô =Èázƒî GEÈárÐÃì 9èAwh†î GEæQ)wƒî =È1rЃîˆGEØárÐ+B‰‡PÈárÌ#Z!GEÈAwƒî GEâáz¸ƒä ;Ü•—ÐÃô¨=æáv¸ƒ;ØAv¼„ó`Ç<„¡°Ãä GEâáŽy¸ƒôpG<æ¡•yƒ•š‡;Èáz¸ƒä G¥ÈAŠƒñ˜‡PâQzT$¡9ÜAwЃ/©T<Ø!OPì˜?0” ñC5ù0æ?ò‘šU° 5ùP1þù‘š|¤†U…?øñ~ä#5ìÉ?þÁ|¤Æ˜©áÇ?Œ™~äc5üÈÇjª0Šäƒ=ùE#RÃð#5ùøG>þÁtþƒ=ÿàÇjø±c®n5üÀ‡;^1 qÈŽôè;Q‘—ÃìÐ 9Øz¸ƒìpÇ<ÜAwÌC(ä Ç<ÈwÄÃä GEèÁŽx¸c;èAwЃñp‡f*BŽy°cZ!=ÈáŽxЃóˆ‡;èAŽJÅÃô ‡Pæáṽñ¨È<ÜÁŽŠÄÃô =ÈñwÌ£"XY#9Ø!zÃô =Èázƒy‰;æþ¡zƒî 9èQzƒä 9Üñ’Šƒ¡GEæázƒ¡9æ¡v%î˜=ØázÃó¨=´B¡°£"ôp=„2vÄ#îÀ =È¡zh…䘇;°âz£"ô ‡;^ÂzÃñp=ÈArÐÃóp9Øáz£"/q;ÈáŽ>уìÐJ<ÜAr°£"ôp=È1w°ƒä`‡;èAz¸ƒî`‡PâáŽxh+¡9Ø1wœ€Bˆ;¦ÁP†æc5ùàCùÁÐ|ˆx5ùX]>V“çcuùXM>VÇ|¼Æ˜"ž=rÑþ¡o|HÓ`2ÜÁrT„óÐJ<ÜAw£"ì 9ÜAz…ä ‡;èáv¸ƒ!‡;ÈArЃô ‡;âÁwăô =ÜAŽy¸ƒô¨;È1wăôpÇKØAwăî =ÈAr¸ƒZa‡;èÑ'wƒî =ØA¬ÐÃô ‡;ÈA¡ÐÃX¡‡;ØAv¸ƒ‰‡;âAŽŠƒä¨9èAz%ó ‡;èáv`…î 9^ârÐÃñ˜GEÈAwƒB!=*Bxƒ¡‡;úDrT„î`9èáv¸ƒô¨H<ÜÁþ¡C(ä ‡PúäŽx…ì =„Bv¸ƒ™G<Èázƒä ;Üw̃ôp9èAz¸ƒôpG<ÜÁw¼„Z¡‡Vâ1аƒô ‡;Ø1v¸ƒî ‡;èár¸ƒî ‡;èQvcì ‡;úÔ'¡—ôpG<æáv,K˜;¦Áý5ùX1ÉNö|¤&«ÉGÚó‘v†æcìüÀ9^1 pˆƒî`Ç4˜AZÌ#B!‡;èÁwЃî =tHwЃô ‡VÈ1rT„ñpÇ<ÜArЃìp;*ÂŽŠÐƒôp=È1wþЃš¡9Øw£Rì˜9è¡Czƒìp=È¡rÐÃô¨9*¡ÄÃôp;„Bâj…!‡;èAvÄÃó¨=Èáz¸cä 9ÜÁwУ"äˆÇ<âQrÄÃX‰GEØ¡"Ø!Üè¡"ØÁèÁÈ¡"úÄØ¡"è*‚ÈA(ââæâÁØÁØÁæÜ*‚ÈÜØÁæ¡"Ø¡"Ø¡"æ+Öˆ*‚ÈØ!*‚È!ÜÜ!æÁ^‚„"´‚è´‚ÈA+èA(ØÁèæ!Ü!Ü!*þ‚*"è+æ¡"ÈÁÈA(æèÜâaÜaÈÈ!ê*‚Ü*Bd=ÉÈá%¬4ØA< Ȧ€&¸@ .Ä* < .¡òjÀhþ¡ð`L F¡R#ÐAŽþÁöAðL¼A ®aaˆ€î5‰•øBð!ÀA3ÜAv˜¡CØÈr“èþظÜÄÁæACÙar“rsÜaâÁèÁÈÁØÁØÁèèaÈÁÈÁJéæ!èr“°b=çÁȰÂèâÁ^‚èè4ã%ÈÁèâÁúdÜ!Öó%È!ÜÜÈÁèæ!ÜÜr“âÁâÁØr“Ö“ØÁØaÖ3Ö“È!7éèÜa4”ÈÁâÈÁèÁÈÜÈÁØÁ^+Ö“ÜÈ!Ür3Üa4”ÈÁ°"Ü!Ü^‚Øa=ÉÁØþÖ“Üa¬”æÈ!Ö“Èa=éÁèÜèÜØaÜaÜáCæÁÈ!rsÈÁØÁâró%È!Ü¡Oâ!7çÁÈ!r“ÈÁè¬4ÜÈÁâ!7éa=5#7׈âÁ°"7éØaÜá8A⦡Π²`5øž@äà *¡Rìá €@ V@ø¡, øáîáþ!ì ò¡ ìÁþÁ ¨¡L€„À, ŽàÎ`‰!{‰ñ¦a^B¦:$haÜè!7ãÁèÈÁæè!7éÁþÈÈÜèèÁØa=ãACéÁèè!Ü!È44ÜÜØa=çÜèèÁæ!r3ØÈÁâèÁèÁ°b=ÉØÁæèÁèÁÈr3ØÁØÜaÜèÁØÁæèaÜ!ØÁØÁV_‚4”ØÁÈÜèÁè!7ÉÜaÈr“èÁèèÁèa=ÙÁÈÁâ!7±Âˆ+7Ér3Ør“èèa=ÉÁæÁâ!êØÁèÜ!ærsÜÖ(7ÉÜèþÁJãr“ÜaÖ“èÁâÁÈ!7ÉÁÈÁØܸÜÜ^‚è!ÜaÈܰÂèrsØÁÈÈá%ØÈá%r“èèÁØÁÈaÜ4”èè!7±ÂâܸÈÜ!æÁØa 8a æ¦þaÖiÖÕ ¡Öù!v ×wÀ.Áþ¡ìá €à¸üÁˆ€f}X`Öíá þÁ ìá þÁ þÁ€øàð œÀÀ ÖÍýÜÑ=ÝÕ}ÝÙ½ÝÿØaæÁÈA¦ÄâÁØACÙ!7þça=éÁØ!7_ÂèÖ“ÈÜÈÁØ!7éÜÖ“èèÁÈÈÁØÈÁVé^b=ÉØÈ4”â!7Éá%Ö“Ö“ÈaÜÈÁèa=Ù!7çÜÈ!Ür“ØÁèèa=éÜÜÜÖ“ØÁæèÁè+Üèâ!7_‚ÜÈÁÈÁÈÁÈACçÁèÁ^‚ˆËØÈær“æ!ÜÈÁÈÁÈÜÜÈæÁæa=ãÁØÁæè4ƒÜ+ÜþÜèÁèÜÈâÁèÜØÈ!ÜØÖ“ÜaèÜú„Èa=ÉÜ¡OÜÖsÖsèèÁè!7ãÁ>$Ü+ÜÜÜr3^ÂèÜâÁÈÁØÜ!Üæ¢.7‚;zîÜ ñ”Ä»iÿ:|x†V¾| ûñKCÈFHƒxýbïL .+FùÙµÏDC~‰–pv„ƒ{`þ9ù—oÌ<öÎüs⩇D‹=Š4©R¥üðÅ»6ž;râMÇ.×ø¸3Í<îÐ38ÌL3M<Ì3;ôãN<îÌÃŽ;ä˜;ñðEYñ¸C;î°ãœ;ä¸ÃŽ;ìOAñ4=äD9ô¸ÃNfñ¸C=äÌãhì¸C;îÌC=fæ9ì¸CYä¸C9îÐÃ=äÐã;äÐCŽYñ¸C_ó¸C9îã=äþ˜ÅŽ;ôðE9ñ°=ì¸3_ôÄÃ=ä°ã=ä°;ì¸C;ñ°O¼ÿ|ðŸâãN5óC8Ó #3ìК;äÐC=ä¸3OA ‘C;þìÐã;îC;ì°SÐ<ÍOAôÌÃÎ<ìÐÃ=î°S9îÐã9îÐSy„a9èQz8Çä`‡;ÈArЃôp9 âŽx¸ƒ$hÜ縃ô(9èáŽx¸ƒô`‡;æAиƒìpÇ<0Hz¸ƒôp90Èz¸#ìp; Bzƒä ‡;Øáv`ä ‡;è1v¸cä(;æq> ’ƒìÀ ;.Wy¸ƒôp=ÈAwÄ£ ä GAÈQz˜Ññ`GAæÁÐdôp;èÁză™ÇéAvìƒó ‡;èAvþÐÃìp9è1rЃô Ç<ÜAz„ôÀ ;0Èиƒî =ÌHrÐÃ5›ÙQz°ƒä 9Üáz¸ƒô hövÁT ;¦Áá…ü J>´ ÎpŠówùà;Ä1wƒÓ@«æ çÄÃñpG<èAw°Ãä ‡;ØAw°£ ñp=Ü1rÐÃäp=ÎWzcì(hÈázL’ìp=Ø1x„î`G<Ü1‚ÌÃô G<ÜÁz`äp9èAŽx¸Ã9ì G<Ü1wÃó(;ÜA ‚Æ9 !‡;èAzþ#î 9 2wЃîp;æaFz¸ƒä ‡;Èáv„äp=ÈárЃñ0ã< ÂzÌ£ ä GAèQ3w°Ãô0c<ÜAzƒñp9Ü1 ÒƒdÇ<ÈAr`î 9èAwà!‡;èAzÃôp;ÈAr„ä(=Èr¸ƒ¡9Ü‚Ѓ¤9æQrÄ£ ìpÇ<ÈÁw̃î GAèár„ä(9ÎGó¹cô ‡;ÈaFzƒñ(=ÈQç„ä`Ç<ÜqN!ì˜F8ó1Î xÀžšG<¦1zþâ`Æ4®ádăì =ÈAr€f{œGAÈAv¸ƒa‡;Øwcì GAèaFrЃ{dÙAw£ ä ;ÜÁŽ‚Ìƒä ‡;ÈA‚ăî Ùáz`ôpG<Ü1w°ƒ éQr°£ ñ(9æQz¸ã|äpÇ<ÜÁzƒópÇ<ÈAyƒŒGAâáŽyƒîˆGAâAvЃô =ÈAwƒî = Br€Æç+=öÈwÐÃñ˜;Ü1rЃô GA@CŽyƒî GAÈAv`p䘇;ÈQzƒþ{$=Ü1vÐÃôp;ÈA‚ăΙ=ØAz¸#î = Br€†!=ÜAwÐÃñ ÇéAz¸#aÇéAwÐÃóÀ 9Üw°ƒñ(HÍÈAwÄcî`Ç8±„y°cüpˆÅ/Žñbh¼ï¸Ç?ò‹|ä$/¹ÇñAfàcä¨8˜Á*w Ã5s;0è ²Ãô(=0z°c$‡;æQx¸ƒä 9èAŽyÃäp; 2v¸ƒÎqÇ<èAŽy„{¤‡;@ãw°£ ópÇùÌÈwÌÃä8ŸéAzÃäþ ;ÜAwÐÃäp; z°ƒv›‡;èAŽ‚Ðƒî 9èAz4Î)=Èáz°Ãô ‡;ØQó™‘î 9èAЃä 9âáç¸#ì(9ØázÃŒìÀ hÜAr„Ρ9èár¸ƒîˆÇéáz#î 90ÈzÃóp9èAwÃìpG< Bz„îˆ=ÈAr€¦ ä É1ä@ó@ô@AìîÀô@AäàçãvCfDäPô@ô@ñàô@AäÀô@çÃÁî@!þžîÀÓ`rQ üðÜ€ ±¹Ðû ·¹€ 7Øû HÈ„Mhrü€ñ0 ô0ç3 È ÓÀ¹@ôÀîfÄ$î@ôàì@AôÀ“ää@î@ó@ôà 1î0î0ì€Aìàóä@AäÁôPÎáñ@ä0î1îÀä@ó€Aô0î@áôàñ@ô`FôPóPìàì`Fäàä@äàôPä0ìàôàôPäàñàô@îìàä@îAä0î@4“Tþôàä@îìàñ0î@î@îîÀîÀ áìàì@ìàäPñÀäàñPôPñàä@ì€Aì@îÀî@ìPñ0I Aóàóàñ€AìPñ@ôàôÀ1ìàñàôàñPìàñàì@ô€Aôàäàì`FôPñPó@äîÀôPñ@ôàôàì@ä@îÁî`7Aôàä@Bà K0ì0 ü€„Å@ ɰØP ü`gðüðôÐÇ÷ä`r Áöpyé—ù—ùÀîþ0 vCâÌ0 Ì0ÈPì@çƒAÎAAAî@î@Aì@äÎAä@fDAôÀô@î@ì€ALâô€Aä@ìPô@óîÀî@î@ÎAäàôàñàä@çcFôÀó€AìAî@î@ôÀôàó@äPô@LBô@î@ä0ô@fD5ãì@îÀîÀ1î@ì@ìàìàäàôÀî@ì î@ÄÁôÀî@î@ô€Aó@î@î@äàäàñPì0ìàì°Gþô@ñ€AôÀó@ä0äPìàì@ä@äàìàäàô@ô@ô@î@q>ñàô°GôPìP3î@ìPóàì@ó€AäPäAäàìàäàçƒAôàô@î@î@A1îÀîäàì0î0î@äà Aî@äàTÀ Bàô0 ~É¿° Ô èP ÿp  _pgà}PÉ€ &gà÷Ð{ ÿg`ÿÀû`Ù N & ,p`˜ÃJ¬!7ô0 ôàô@Ó€ â0 î€ ä@4þçã5Côàó€AôPó@ôàÎAfDôPñàä@äàä@Aôà—SóPì°GäPôÀîî@ì€Aäî@ô@ô`Fì@îàô`Fìàäî@óàäàìàä0ä@îÀäPñàñ@î@äàó°GôÀf4ä0ää0{äàä@Aô@ôPìPì€AóÀfDî@ä@ä@1î0îÀô@óàóàóÀÄî@ìàì@î@î1ä0ä@î@îþ0ADäî@ôàóÀ“Äî@ôàçãì0ä@ä@{ÄñÀî@çCî@î0îÀä0îÀôPñPóàôàä@îî@Äî@ôàä@ä{ì ž@äÀÓÀyɧ@ Û èð ù`ZÐ@`gàùp[Püðgàöpÿàû üÿÀÿÀ ÀNÐNÐNpgP¬ÿ À ô0 ôàô ÓÀ ¬BÈàä`Fóàçî@ôÀî@Îá ávãäàì0äÀîÀþî@ä@äîîî@ä0îîAäàó@DAäàôÀîfîàôРäàóPô@ì0AAñ@ä0Aîäàó€Aìàì0Aä@ìàô@ôPô@Ä$Î1ô@{Dñàó@AîÀî@ì€Aó@ôàô@ êôÀôÀñàô@ô@ AîÀî@ä@ä0ô@ô@1Aî0ô@ôÀô@ô@ô°Gô@DìPñPä@î@ô€AìàôÀAî@þ4ôÀî@ÎáôÀî0ì0{Dî@äàóÀfDîÀAäàô€Aô@ ÁfÄ A AñàÎQô@ì0îpœ ñÀÓà—þp Û Â@ ¸ð÷`ýp÷pNðöps@ ÅpNpgðNà& ðÙQP©àÿàýàö¬ÓÃ:î0 óàÎ!È ÓàÈàôàì@î@ôàóÀä@î@ôPóÀ1î@A5ãóPìàì@îÀôÀäPôàÁîÀAîÀôþ@ìàô@fD Q*èñ0Áî@ôÀôPô@ôPôàìfÄAî@î@ JAóàä@îÀî@î@ôàì@Îáñàô@ôàìAä@ñ@ôPó@AôPì@ôPôàì@ä@îÀîàÁÎ1ä@î@óPô@ôàôàäÀî0ìàä@îä@ä€Aä@î@ä@Dîìàñ€AìPóàä@îÀôàä@{DAô@{Däàä@Ä“D Qþ QôPô@î@ÁîÀî@äàä@îÀî@Dîìà5Côàñ0îÀKÀ K0ì0 üà—œ É@ ë€ ÿ°ŠÀÛ°¹€ ÿ°¹à‹à ¹` û ü€ ü g€ü° û@ ùà ¸ð¸Ð¸°¹°Ó}ž—øÀÓ`7ôÀ*ÈÀ*ô@ î@äà áî04äPô@Dä@äÀô@îÀôÀ4î0î@4î@ä0ÁîÀÁî@ADäô@ó@îÀôàóPì@äÀóàôàþäàô@î@ÎaFäàäPìPô@ AìPì@ì@ì@î@ìàìàñ@ä0äàóàì@AäPñàì`Fô@îàAäÎQñPôàì@îî@ô@ô@Da715CAñ@ä`Fäàôàóàô@î@î@ì@äìPñ°Gô@ìfDôàô@DäfDAî@ìàñà áô@{Dî0îÀôÀä@äAäàäÀäàìPô@ î0î@äþ@ó@îÀó@ì øÁî@!žîÀÓð—§€ ‘¿ êðüüðüðüðü`qùðñýð« JðüüðùÀÿ0±ïç³?rv#ô@ôÀâÀ âÀ ìÀ î@óàäP áìàä@ñàìàóàäÀAôPô`Fì@ÁAAô@A1î01äPä0IôPôî@Dô€Aó@ôàäóÜ‘£çÎ]è1ŒƒÓ@†{ØÁ ƒƒ™=Èay¸'ä0NÈÑ$w°#îþ =ÈArÌÃô0È< Bƒ°ÃñpÇ<ÈarT„¡9âázƒì0È< B·Ðƒ¡9 BŽx¸ƒäˆÇFæaz£"ôp9؃ÌÃô0KEèawƒìp;æŠÐƒó 9 Br¸ƒä0ˆY BwЃódEèÁw°ƒäp=ÈAwƒî ‡[ÜÁw°Ãì ;èÁwÌÃô`‡;âQzƒñØ;èár¸ƒ;èAwÃäpDzäãþðD?< SÂ¥°*}}ìg r9 fLCî`Æ +2xÌà ópÇ<Èax¸#î`‡;ØárЃ‰‡[æaþvp‡x z`zprpr`w˜r v˜v¨vpr ‡`zp v0vp‡y0ˆy`w ‡A2ˆyp‡x¨ˆypr wˆ‡Š w`ƒ ‡Š wˆrpr ƒ`w ‡Š z0ˆ&™v0r r rprpvp‡xpr`wÀ w˜‡x z z0z0ˆx`rÀ rpv0ˆx z z z`z`z¨r w`zpv0z w w zpvpz0r vpv ƒˆwˆv w w w w˜v ‡ypv0œþpr w`z0rpr w r¨zp‡&!zpv w zp‡y z0r0r rpœ0vpv ‡0 wˆw w`zpr ‡xp‡x z zp‡x0vpå2r w zOX‚y`‡ià‡É‡åð„?àb ‡|ø…{°€~8{ƒ~¨{8'ðð‡ X~˜!  Ð"¸‡3È> Iæà|`‡iP.rq`†i`w`†y rpz`z w rpz`w`wÀ‰˜rpr`w`‡Š r r¨v˜þw w ‡xp‡y°&w˜œ`w ƒ w r˜w`r¨ˆyÀ rpz`·˜ƒ vpz ‡y œ0z`z¨zØz ‡Š`zp‡ypr r¨z ‡xpvp‡A¢rpz0z ‡y ‡yp‡ypvÀ r¨r v ‡Š`ƒ r`‡y0rp v˜rˆ‡Š w w wÀ r r¨œ z ‡xp‡ypz ƒ r`· w r rˆw˜ƒ ³ rpv w v w ‡x0rprÀ rˆw wˆwÀ r v þ‡y0 w w`ƒ vp!w˜· ·`ƒ w w`ƒ ³¨v v ƒ w`‡yp‡ypz wÀ rpz w Nw ‡iС|X„EÀIÀbX‡_°-ø'°‡3à'¸0p‚}X~‚~XŽ_(€zp~p~p{‘ÌÒìÃwzpz ‡i@q˜w r0v0r w œp rpr w z˜w`‡y0z zp‡x œ¨zp‡yp‡x`r w z¨ˆA"w z z0zpzØz z w ‡yþ w œ z¨vpr ƒ ‡x w`w85zpr¨v w ‡Šˆw zpvp‡ypr wˆv0z¨ˆy0v¨zpz`w`‡y w˜ƒ zp‹Š wˆ‡ˆƒ z0zˆv¨ˆyp‡y0z ‡Š˜w`z wˆƒ r w ‡yprp‡&qr ƒ r¨ˆy`r w ƒ w˜w w ƒˆwˆv0ˆy؈x`w w`rprˆrpr ‡x˜wˆw˜w0‹y85w w r ‡Š`©v r ‡þŠ rp‡yˆr re‡xpr w z œp‹x`!ð* v˜~"6Pƒ3(t@\¸‡ƒ/ȇ#ง3p‚>0€h{0sP'ø'ø'¸‡3ÐRÈ4~Èw˜z˜r ‡i@qh†x`w r0ˆxpz0³pz z0zpœ0 z˜rÀ r`rpz¨v rpr r ‡y w`zpz z w˜w˜‡Š z0 w vpz zpz ‡xÀ w˜w z0 z`ƒ˜³`w`‡xp‡y ‡x˜‡xpþz0œ ‡y0z z`w rp‡y œ0r`‡yØz z`w˜‡ rpz wˆwÀ r˜w ‡Š r˜vˆwÀ v w$œpv0v0z z z z ‡ rØvpvpz ƒ v˜w`zpzpv w w`w w w · r˜w ƒ r`‡y œ z w`‡ˆvp‡x ƒˆw`z`z`ƒ ‡xp‡yhƒ r˜r rp‡y85z · z`‡Š v w ·˜vÀ rÀ rˆwþ0 ƒ r`‡yp‡à!ˆv˜ Z„|Ø€Eø\øuà‡|`Ž|øˆy~ø~XŽ|pˆ‰\cÖ¡y ‡i˜z`‡if˜f d0ˆy œ ‡Šˆw w w`ƒ0 ƒ w z wˆ‡yˆrØrpz zpz zس w˜ƒ z0r ƒ˜rpr wˆr0ˆx`ƒ zp‡x0z¨r ‡xp‡y0v w v vpr ³0zprpvp zp‡x w`w˜w v r rp vpv ‡Š ‡y`z þw œ ‡y r rÀ w`rprpr · z¨v z z z0ˆy z w r‡Š ƒ z ‡y z¨z0r˜v¨³ w`w0 œ0r w w v0 zp‡x0ˆy`w`z˜w`w z`w w ƒ`zp‡A¢‡Arr0z0v whw œ¨r˜ƒ z ‡Š œ z zpr¨rp‡x`whr wˆ‡ypvXNX‚y`‡iàŽÉéÈ~ø~ȇJˇȇcNoÂz˜†ypz‡i`þ÷pZpœ0‹xpvpv ³¨z ‡yˆ‡ ‡Š`w$w`ƒ˜ƒˆƒ ‡xpr¨ˆ&1z`œ w`‡x¨z0ˆypr`‡x0v¨zpr rØœ ‡A2zpœ ƒ wˆw ƒ w`ƒ˜ƒ r0v ‡ vprØv0z`w wˆƒ w rpz ‡x¨z z ‡Š w wˆwˆrw w wˆwˆwˆ‡ŠÀ r rpz œ z v¨vp‡ypv ƒ ·`‡Š rhw`‡y zþˆw z z w z ‡yp‡x0vÀ vØr rˆz¨ˆyp‡yØrp vˆ·˜r ‡Aš‡Š`r w rp‡ypz ƒˆƒ r r ‡ˆw`‡y ‡Ò3vpz0!ð„$pv˜õ^wvϾyp‡i w0 p@q˜w`r0ˆ&aƒ`ƒh· vpv Ww åbw v w z0ˆx`w˜v r v w85ƒ w`ƒ`w r wˆ‡y$r%z0zpr`ƒˆw˜v ƒ wˆ‡Š v@xv0þr wˆvpr¨r ‡Š˜r ƒ˜r`‡y ƒ z z ×x`w z¨ˆx0rÀ w$z`w`z0v rÀ ƒ`w`w`w v0ˆxp‡x w ³ w ƒ`ƒ zp‹x`z zp‡y r0ˆx$w w w`ƒ ‡yp‡x¨ˆx0v¨r0r w zp‡y`w z`z z z0ˆy¨r˜w w`w`rØr ‡Š zpv0œ¨zpv · z0ˆA"‡ypvpå2r w zOX‚y`þ‡iˆ„˜ú¯û¿üÏýßþïÿÿ€x p Á‚>‡Þ´yóè}‡L³xÌܹcÇn=ró0²£GŽ;wì0ÒÃHœ;zì0’s7œ;rîèa$§#=rîè‘sž;‡ºcw”9wôÈÍsG;zìÜÅÃÈ#=wäܱ;JŽ=Œìè¹£Gî(;zä0ΣǎÞXvóÈÍsÇn*9wäÜÑ;J=wäæÑ#GÏ;wäè‘£GÎ=ŒñܑèÑ]<ŒäeGœ»yäÜ‘£‡tž;zGÙ¹£7œ»xñÒ;JÏ9ŒìÜÑ#w”;rSÉÑ›‡qþ=rHãÑ#§#;zì0N=JϽ£ô0ÆsGÎ=rôÈÑ#G=rSɹc‡qÞÔ£óܱÃ8ϹyîèEŽ;ô¸C;ó€;ô°3;ì¸C;óÐCŽ;S‘ã=ä¸C'B¸CÏ4‘HP¢‰'¢h¢ŰÈË)£Œ3ÒX£7âˆâ¸3Í<îŽ8ÈL3;È`49ôC9ôÅÎQó¸CŽ;äÐãN<ì¸C=äLå=îÌã9ô¸ÃÎ<îÐÃŽ;ó`9ô¸C=±C=ìÐ3Rñ°C=îŒå9G±ƒÑ<äЃÑ<îÌÃ=̓9óC;ñþ¸Ã9ÅÃ=äÏ<ÑÃ=GÅCÎTîÐC=äÐs=îăÑ<îÄCÎ<îЃ9ô°ãN<ì`4;ô`4ÏQäÐã9î39ôÄCÎ<îC;ô¸ÃhîCO<îh„9ô`Ä=î3Fì¸3;ô¸C=ñãN<äÐCÎTîăÑTì¸;ó°;ä`D=îŒE;äÅ9ó€F=îã=ä¸C;óC;cÑã;ô¸C=ìÐãÎ<ä`d;îã9ìÐÃŽ;츣9îãÎ<îÐã9ô3hñ°#„'TÃÎ4‘ Ôõp¨±ˆ>Ý|2ÁþFd„1qáõ0‘·Þ{óÝ·ßxà’0ó 3Í CK.¹Ðò 2¯ à 3Ê ƒ 3ÈØÂ 2Ì #93È0ƒ 3•ç 2Ì(S92¶ #¹-ÍT.¹-ÈØ‚ 3¶ #yåÌ c‹äÍ c 2¶H®:3ñ¸3Fó`D9îÐCÎ<ä¸C;ôƒ=äÐCŽFG‘Ã=îЃ=ä¸C9±3;îã9±C;cFÎTcÑC;ÑÃô ‡;Øáz…ó`Ç<Èr¸ƒì ‡;èáz`$ôÀ;âArÐÃì =Èáz°ƒä FØþáŽy`„ñp9èAаã(ô Fæáz`„ñp=Äz°ƒî ‡;Ø‘yЃ¡9âᎩ¸ƒ¶q9Øáz°cî 9Ž2£ÌƒîˆFèAzƒ;èAŒÌƒî ‡;¦Âwhd숇;âqz¸ƒî˜G<Ü1z°ƒ¡902ŒÐƒ옇;NÀ !ă͈Ä$`7”pؘ‘|˜€pA$ð€LBÀ$$ð Lâ'"H‰&ñtM`B>âÌgB3šÒœ&5«9M|̃øÈ‡>ð}ÌÛùÀG>èáþÍsz“èÄÇ<ÖéM} 3ÞÌ>Ât΃øà>æÁw΃çœ?æÁy óì ‡;È1rЃô ÇTÜ1ŒŒÅôpÇXè‡Ð#ó8 9èAwÌÃä˜=Èr`dî FâÛ¸ƒ!Ç<È‘y¸#î`=È‘x`„a=æárL#ô`‡;ÆBwŒ…ì 9èvŒËó ‡;ÆBw°Ãä ‡;ÈAwÐã(óÀ;0Bz¸ƒä ‡;ØAr`„ó`Flƒ”x¸ca=Èázƒî˜;Èz°Ãì˜FÈÁþz¸ƒî`9èrÐcî`9ÜAz …c™‡;ØAy`„ä@Ê<0¢z`„î FÈAr°#ô8J<0brÐÃñ˜‡;رN,aì˜F$$ HàÀ  @‘¾ÀOHù`¶FH ˆ„" À!€@"ˆQˆ !8D‚€C$à@ ÀÀp`„ OÐC#"1‰Klâ£8Å'¶ ;0BvÐÃq;ÜŒh#ìÀ;â‘x¸ƒî`FØq”x°Ãq;lãv¸ƒ;ØávþÄÃìpG<4v…ìp;ÜÁwˆ8´ˆ‡;â1rЃ FÈAwÌ#ôpG<0ÂŒƒä 9ÜAŒÐƒô G<èAzÃñÀ=Èáz°ƒäp;èAŽy¸ƒñ ÇQèAz`„ñ`‡;Ø‘yã(ôÇ<ÜAz°ã(óˆ‡;È1x¸ƒH!FèA¤LÅóˆRèávЃî ‡;èAzƒG™‡;ØáŽx…ñp;¦BŒh„äÀ=È1zÃô ‡;èárÐÃô8 =È‘y¸ƒî˜FÈáṽî`‡;èAzþcôpG<ÂÛăäÀ9èA¤Ð#ô Ç<0BrÐÃôpÇTÈAr …ä`=È!bŒ°ÃôÀˆð‚<á oxÃkdä ‡;ÈávÄ#óp;ÜÁwÄC#óp;ÜÁz`„™‡;Øáz¸ƒìÍ<4‚vÌÃìpG<È1vÐ#qÇ<Ø1w°#ópÇ<ÜwÌÃþó`Ç+èAv`$îˆFlãrÐÃä ‡;Æ2ŒÌƒôÀ;ÜAаÃô`ÇQèAz°ƒî 9ÜAŒÐ#ô =ÜÁŽ£°ƒ;°9Ѓ;Ä;;ÐFЃ;FÐCX±=`=°ƒ;ÌFû=°=F=°ÃQÐhЃ;°ƒ;Ä9Ѓ;=°=;=¸C<°ÃQÃT ==¸;È<`D<`9ÌR=¸C<¸=;¸9ÐFÄÃQÌFЃ;Ä9ÐFh„;=`=h„;Ѓ;=¸=`9Ð9Ð;¸þ=¸9¸9ÐÃQFă;Ì9Ð9Ѓ;ÄF°ƒ;8F=¸9ЃxB°CÐÃ<¸ƒC¸ƒC¸ƒC¸C7À#tƒ¸Ãà;(Â<°=ðC¸ƒC¸ƒC¸ƒC¸ƒC¸ƒC¸ƒC¸ƒC¸ƒC¸ƒC¸Ã3¹===°=¸Ã<¸=¸9LEþ<`9Ѓ;=…C¸9Ѓ;=`9Ѓ;Ð;ÐF;ƒ;ŒÅT¸ÃX¸=FÃT°=¸ƒC=¸9…(FÌ-ÌøÌ;¸ÃKâJÀH€@H€@œH>K€@0þ>¸9¸9¸ÃX¸C€¸C7,A-à@ð'ÃÀ9¸ÃX¸ÃX¸9¸ÃX¸9¸ÃX¸9¸ÃX¸ÃX¸9¸ÃX¸ÃXÐFă;Ѓ;ÄFÐ;ÐC<`D<¸9ÌFÄÃQÃT°==ÄFû‘=¸Ã<¸=Œ ;¸ƒm¸;`„F`„m̃;Ä9Ѓ;ă;Ð9Ð;Ѓp9Ѓ;Ð9¸9Ð9L9Ѓ;Ì;ÐFÐ;¸CüÃùÿ?üC?ü?ôC? üŸÿû¿¿üÿÃûŸ??œ??ôúç?Ä?~ýúýë÷ï¿ùøýËÇïÁ~ÿ$þã7m=rôÈÑ#G;zîâ±cçŽ;zñØÅK"DH–$äè±£GŽ9zäè‘£GŽ9zäè‘£GŽ9zäè‘£GŽ9zîè¹s7Ï]<«ô¬vµÊŽž»xäæYeG/ž»yñ¬’³JÏ]¼xìÈÑsGÏ9¯VÙYg•=«äæ¹#Go¯þ;rîæÍ#ו=w´ÈÑ#GÏ]<«óÜÍ‹çnž;rôæ‘sGÏ«IzìÈÍ#çŽ=vôâ‘£wÛ*9zîØÑ³zÛ9z^ÉÑë:Ï;«óÜ‘£çn^WrôÈÑsÇÎ;wôÈѳ:œU¹VéYGœ;zîæ¹#çŽ=wñ¼ÆcçŽ^brôºÎsGŽž®æéŠ«È±jrÈ¡‡«è!‡rÜagv¬b‡«â™‡«æ±jž®èqgwncÇrèq‡rº¢Çvè!§+rèq‡vºbÇrèéŠwâ!‡wÈq‡®æq‡zÜaÇy¬b‡zÜ1‰œyÜaÇÆ¬"‡þwÈ¡g O’p‡iZ“Ÿ5â!~ÖÌç“bŠAÅ~Ü\“Ÿ=ùÙ!~]3Ÿ=ùáç~ÖäGœyè!‡rè!‡rÜa‡w桇«Ø‰Ç¤yⱊwÈq‡rè!‡rè!‡rè!‡rè!‡rè!‡rè!‡rèQÐvº¢‡œ®è!Ç*zÈq‡wØ¡Çr豊rn£‡œyÜaÇ*“æéŠw⡇«nëŠvº¢‡z¬ŠÇ*vÜ¡‡wⱊ«èag«Ø¡Å+v¬¢‡zLrç6rܹ«Øqg«æq‡«æq‡wØ¡ÇÙ!‡wè!Çrè!þÇrØq‡zÈqgwè!'zØ™‡œyè!'«èaÇÛÜ¡‡z¬š‡wâ銞®Ø¡‡«è!‡w豊œÛ¬šÇrLêŠy¬¢‡zÈÙÖrØqç6«Èq‡rºšÇ*z¬¢Çx¬"Ç*zÜaÇyè!ç6rÜ!ÇvÜ™Ç*zØ¡‡«èQr¼ŠÇ*ræIÌzÈÙÖvȉ‡w豊röb‡wÈ¡Çyȹwæq‡wèaÇvæ¡ÇzÜ™‡wèqgzÈqç6rÜ¡‡w„à$ zØ™fÐî:´˜m¨9çsþá!'øYÓfÖägÍø×äç'äþ¿M~šwâq']™‡UÈ1r¸#ì° ;Ãz¸ƒî Ç<¬wÄÃñèJ<ÜwÄ£+ñpG<Ü®ÄÃñ ‡UØAv¸ƒî =ÜAvÐÃôpG<¬BzÄÃ*ä =„èvÐÃó =¬Bvt…ìpG<ÈAr¸ƒô`‡;ÈAwÃäp;èÁrЃôp=ÜAr°Ãì ‡;ÈAw°Ã¹p=ÈAwƒ^q;ºBrX…V¡9èAw°Ã*ä ‡;æá•xXeîâ<ÜAwÄÃ숇WnCwă]a=Èqr°Ãþä`‡UÈÑrÐÃñ =ÜAzƒ^¡;Èázx…ô"=ÈA«ÌÃôp;æár¸ƒô =„hzÌCˆî`‡UèAŽÛ¸ƒô =ÜAzƒìp9nC«ÌCˆ]!Ç<ÜA«ÐÃì 9ÜAŽÛÃ*óp=¬Bz°£+ô =¼BŽ®Ã+ô =¬Bwăô¤;èarÐÃä 9èarX…óp9ÜAŽ®ÐÃä 9n#Èx°c ž‚;Ø1 ~à©áÇ/¶ÑTt!Ùà þ‘ 5 …?Ñ~ ò0F8ÁpðAþNH*þò|Ѓìè =¬Ûƒó`‡UèA«£+ô ‡;èAv¸ƒî˜9èAv¸ƒä° ;ÜAr°£+ìp;ºbrX…V!‡;Èár¸ƒì ;âázƒ;äâŽy¸ƒä`‡UèAŽyƒV!‡;ØArÄÃôp9Ü1wÐÃ*óèl<Ü1!ºƒä GWÈÑrÌÃ*¯pG<¬B!²£³éí =Èáz¸cì° ;èárЃ]aÇ<ÈArÈ…ä° ;Ü1zƒî`‡;Èavt…äè 9âa•y¸ƒîˆGWèávÐÃ*äþ GWLÒ•yteäp=¬"wÐÃä`GWèAwЃ;âá¹t–V™9èAŽx¸ƒì° ;ÜAv¤—î Ç<ºrwЃñ 9ÜAvƒBŒ‡;âazÃô GWèÑzX…î`‡;ncz#î`GWæ!DzÃì ‡;Øáz£³·!‡;âáz¸ƒî ‡UèázX%ô`‡UÈArXEˆV¡9Ø1wB˜;¦±Ö¤®‚ÔÆ6~ñ~˜@è‡>þq‚{œáþÈG1ò€uü€ö°@7XÀ<8ÁÕ÷›Æ<Ü!ŠäþǶÁ!Doo›ì 8ØApˆƒ⇷…q°B‡ÁÁnq°›Ûö¶8ÀAqà›à¸Å!p!n›Û‡ÁA!Šä;È!€‹ÞÞ¶ÀÅAq°[ä‡Áp!Šƒì =ÜA w°ƒôp‡\¬Âzt…]a‡;ÈA«ƒ]™‡;ÈAr܆ôpÇmÜ“¸ƒ]¡9ÜÁwcV¡‡;ÈArÐÃóè,=ÜAz¸cî ‡;ØÑr¸ƒî`GzÉAv¸ƒôp9nãrЃô`9¬By°ƒî ‡;èaz°ƒôp‡þIÜÁrУ³ì° =Ü®ÌÃñ˜GWÈA®ÐÃì ‡UÈáŽx°Ãô GgçvЃä°J<ØÑvÐÃ*ä ‡;ØáŽyX…B¤9ÜvXå6ä G<¬Î’ƒî ‡;ØárX%î`‡UÈqwƒä`‡ULârÐÃópG<¬"rÐÃñ˜‡;Ø!O,aØaø!ÚîgbM¨áþa´à€ÀV`À΀Lá ¼à ÖDòàÎÀÀàØÀ pMøAæÜæÜ¡1Ü!Üa[Èaº‚ØÁ*èaÜaèÁèÁèÁèþaØÁèÁèÁèaèèÁèÁèaèÁèÁ*ƒÈæÁ*æÁèÁèÁèaÜa¬bä‚ÜaâÁæ!nƒæææA.èÁÈaÜa[È!æ¬‚ÃƒÜØÁèÁ*æÁØ!ÜÜØÜæÜÈØáæÁ*ÈèÁèÜØ¬â6ÈÁâ!½ÈØÁ*âÁâÁ*èAˆÜAˆè!½ØÁ*èÁæÁØ¡³nƒèAˆèØ¡+nƒèèØaèÜaÜaÜa¬‚¬bº‚ÜþâÁÈâÁâÁ*⡳ÈÁÈ!èܬ"ÜÜ!Øa¬‚ØØaº‚ØÁ謂ÈÁØÁèÁÈ¡+ØÁÈÁÈÜÈÁ*⡳èº"¬‚æÁ謂ÜÈ¡³ÈÁ*äÂèÁØaèܬ‚èÁL¢+æ¡+èܬÂ$º"¬‚衳ء+æÁÈÈèL‚¬‚ܬ‚ 8AܦÁåç’!Ðp!ô! ÁüAø€ü!HÁú@ÎàöÀva ¤ î ì œ`.bþð謂¬‚èÁÈÁȺ‚ÜaÈÔ‹èèÜaÜè¡+ÈÁèÁ*ÈÜAˆènCˆÜÜèÁÈÈÈÈÜÈÈØ¡+ØÈ„è6Üá6ÜèÁ*æèº‚¬‚èÁ*È„¨+ÈÈá6ÈæÈa¬BˆèÁÈÒënÃ䂨ÁæÁ„ÈÈ„hèÈÜÈÜèÁØÁØ¡+âÜA.Ȭ‚èèA½èè¬"¬bÜæÁ$„È*„ÈâþÁÈÁ*èèèÁÈÜØÜè¡+ØÁ*æÜÜaØÁØèaÜØ¡+èÁ*ØÁèÁèÁ*ØÁæ!½ØÁèèÁèèncè¡+èº"Ü!ÈÁ*æÁ*Ønƒ:‹èº‚ܺ‚Ü!¬‚¶ÅL‚:‹èÁ*è¡+ÈaÜÈá6¬‚¬‚:kÈܬbÜ桳æèèÁâÁ*ØÁÃ*ÈÜèA< Ȧ.“øÁN8Áp!úáø!‚â‡òáòáþò!ø!Ö„.óøAðÁ*è¶…ÈâÁâÁènƒÜÜèèØ!:‹È¬‚ØÁè¡+Ø!Üè¡+ÈÁnƒ¬‚Üá6ÈA½ØÁèèAˆÜØÁ*èäÂ*„ÈØÁÈÁè衳ØÁèØÁÈá6Èá6ÜÈaÈaÈÁèÜaèèÃÈÜÈÁ*è^Üè¡+èÃèä‚Èa¬‚Ã*æÁèÒ‹¬‚èÁ*èâÁæÜ¶…Ü:‹¬‚ÈÁþ*æÁØ!ÜaÜaÜÜÜÜÜÈØÁ*ÈÁ*ÈÜÔkÈaÈÜÜaÜÈ¡+æÈaè¡+èܬ‚ÈÁ*èºbÈÁÈ¡³„ÈÈÁ衳èèâÜá6ÈaèAˆèÜȬâ6ج‚ÈÜØØÁÈÁÈÜaâÁèè!½ÈÁ*Ø¡+èÜèÁ*èÁÈèÜܺ‚È!èè¶…æÜæÁæÁèÜá6ÈÁèÜá8Aâ¦A^þâZï'z8~òAˆ§ÈÁ*æÜÜ!æÜÈÁÈ¡+衳ÈÁ*æ:‹衳æA½ØÁæA½ÈÁæ¡+„ÈâA½ÈÁ*âÁâÈ!½âÁ$¬‚â!½È!½ÈaÈÁâa:+¬‚¬‚桳âèèÁ*èÁ*æÁÈÁâÈÁ*hÁèÜÜÜȬ"L¢+ØÁ*ÈÜèAˆnƒnƒæèÁ*ØÜèèÁè!¼ÜaÜ:‹Ü!ȬbØèÁèÁ*衳桳æèa¬‚º‚þØá6ØÜèÈÜèÁ*èÁ*Ȭ‚Ü謂ÜèÁèè¡+èè!Ü!¬‚Ü!èÁ⺂èÁÈÁ*ØÁØÜèÁäÂ*èÁèÁ*ÈÁÈ¡+ÈÁèaÜ!:+:‹èܬ‚èÜèaÜá6¬"„ÈØ¡+æÜá6¬‚nƒ¬‚ÜAˆèAˆ¬‚âÁÈÜèn#½â–€–`ØaøAˆç2øò!®ã‡ÄèèÁ*âÁØÁ*èÁæÁN`$ÜÜÈaþܺ‚Ⱥ‚ÜÜÈÜÈaÈÈܬ"ÜÈÈA.ÜèèèÁæÁ*ØÁØÁèÁ*èÜÒ‹¬‚Ø:‹èÜܬ‚ÈÁèÜÜ„ˆº‚Ò‹È¡` „`$ÜÜáÜÈÁnƒÜÈÈ:‹º‚ÜèÁæ¡+èAˆØÁâ¡+äÂ桳Èä"¬‚ÈÁØÈÈÁØ!ÜØÁæÈÈØÁÈÈÁè:+Üèºþ‚„ÈÈÁÈÈÁæÁ*ÈÈÁÈÁ*nƒÔ«+ÈÁèAˆÜÈÁÈÈ!ÜnƒÜaȬ‚º‚„ÈæÁè¡+âÁæÜÁ$Ü„È*ØÜ!¬‚⡳謂ء+nÃØÁæÁØ!ºbÈÈÁ„ÈØ¡1¬‚ÈÁ衳ÈÁæÜÜÜÃ*â¡+Øá6Èá6È!ÜAˆ¬‚ÈæÁ„À’ÀØaâšòáøá®‹}M¦Ò‹¬‚º¢@À$8 @ ”Àˆ ” @ X€è!½èÁþèÁâÁØÁèÁØÁ*æÜØÜèÁâÁ$º‚ÜÈØÔ‹ØÁèÁæÁæÁ$¬‚Ø¡+ÈȺ‚º‚衳âÁ*ÈÁ*èÁØÔ‹¬‚–ÀæVa$¡+ج"„Èæ:k¬‚èÁ*ج‚Ü衳äbØÜèèÁèèÁØ!ÜÁ$ØèÁèÜèÁæÁæÈÁÈÈ¡³ÈÁÈaÈá6ÜÜÜèèÁèÁ*ØÁâaÜ!ºb:+¬â6ÈÈÁæÁþ衳Øè¡+äÂ*âèÁâÜAˆÜèÁØ!ÈæÁÈÜ¡1ÈÈÁÈܬ"¬bÈÁâa:‹nƒæÜèÜȬ‚èºbÈÈaØÁȺ‚Ü!èÁ*ØÜÜ!Øè¡+æè!ÜaÈa¬‚ÜæÜܺ‚Ü!ØÁä ÈÑsož;vB<-™Çn¿#Jœ±X1nÅ(jÜȱ£Ä|ÿøMÃÇÎ;zäè‘sG=rãn¸sWÛx1Ì-PÃàÜ’x9f²sGÜLþräèÍœIo&»¥äf²[JÏÝB‘Š(H£>Ø‚bá›Jdôp=È1rЃî Ç<ØÁ‰$! IH~ÇEÅÃôp;æA™ƒî ‡;Øá¤Ðƒî =ÜArЃbq;ÜÁ¤ÐÃä`ÇLÈÁwÐc&ñ˜ 9æz°Ãä ÇRÈA¶ÐÃì ‡;âáŽy¸ƒî ÇLèáŽß-…ì˜ =ØAzdeäp9ÜÁVv,…î ‡;r1z,eäp=ÜAzăîˆ9èárЃô`=ܱ¸ƒî@ =ØþÂŽ¥c)ì ‡;ØáŽx¸ƒó`‡Xȱz,e3™G Ò£HŽ;Éñ|œÏ9ƒîâýg‡zÜ!‡ž‰èqgžxÜ!Çrèq'rÜ¡‡z(b‡¢x&b‡ƒ|r‡ž‰âq'žy(ЇzØ¡Çræ!‡wÈ¡‡ƒÜ!‡wØq‡wÈ¡g¢yÈ¡‡w葌rèq‡Šâq‡yÈ¡g"zÈ™ˆw案rÜ¡ÇyÈq'wØ™ˆžå r‡zÜ!gw葌œ‰È¡ÇvæaÇvè!‡ÉÈ¡‡ŠØ‰‡zÜaÇrè™(r虈œ‰Èq'vÜùz܉gwØ“%æag~¬:¦aaäfÄÙþ‡¦,¹ç ¬œZå Iæág׫òajš|è!‡"v&bÇxÄŠgvâçrÜ™g"zØq‡w؉Çr&K¬tØñDˆ%„p‡žåÜ!‡rÜ1ˆwè!gž‰Èq‡wè!ÇzÈ¡‡v&bg9zÈ¡Çz&¢‡zØ¡g"zÈ™Çx&bÇ÷È¡‡wæ!‡rÜ™Çÿ$›‡wèaǃȡ‡œxÜ¡çwè!gwØùÏyâq‡w♈wÈq‡wØ™ˆr&¢ÇyÈq‡zØ¡G2v&b‡žx&b‡v܉g"rÄ¢ÇvÜa'wè!ÇrÜaÇzÜ™ÇrÄþ’Œrè!‡"vèagž‰Èqgž‰ÈqÇ vèag"zÈq‡wȉ‡Šæ™ˆwÈ¡Çz(¢G2zØqgr(¢‡w⡈rÜ1ˆwâq‡v&¢‡œ‰è!gr܉g"zÈ¡ÇzÈ‘Œr$#ÇzÜ!gzÈq‡v&šÇƒÜ!ç݉Èag¢xÜ¡‡vÜ™‡vÜag¢yÈq‡vèq‡wæ™H<ÜÁŽy£\a‡;è1*pBî Ç4®hT°‚¬ØÆ;²ð|œÂ'àÃ5ö¡<øã}à.LaŠdôÃ@ÐG6@ðl¨áûPÀÁ‡zøã’–8æáŽþ÷¸c™‡;ØyL$îP‡'âAz°c"ä Ç<&BwÄc"ÿ‰‡;þãvL„î`‡AØAɰÃä0ÈDèrÄä˜;$3‰Ìƒôp9èávƒî`9&Bމƒî 9èÁzL„>qG<ÜrÐ#¡‡;Ê5vƒñ ‡;ÈÁwc"b!‡;^Az¸ƒ!=Ø1z°c"óp=&BwЃî ‡;ØárÐ#!Ç»èáŽy¸ƒ‰Ç<ÜÁމÐC2ó˜;ÜAz¸ƒôp=ÜAz¸#î˜E|BwÌÃì 9 âŽxþƒî =ÜAwÃä ;Ü1wÌc"ô =ÈAx¸#ä˜9èAɰÃó =âAzƒ"ô =&vc"qG<$wøÄ óp;ÜAwÐÃäpG<ÜAvL„a‡;â1rÄñ ‡;ÈAvÐÃ'¡‡;èAzP„ó˜;èÁމÄcì ‡;æArÐÃôˆÇ<&ÂrÐÃb!Ç<ÜÁw€u"ä ‡;ÈA!x‚ ä`Ç4øñÆ6¶±®€†. ¡ ]‚÷8c½p ôãöH?üÁbäÁ Ôð‡öÁ ð#5ð‡ ú!{Xþ€,èFæ°‹N4±¿ýG>þ1 |¸Ã'ìp=Øáz¸ƒä ‡;èÁƒ°ƒî˜9ÜArЃô =Ø1vЃô‹;âAv¸ƒî ‡;ÈárÐÃì˜H<Üáv¸ƒ!G<ÞevЃôp9ØárÌc"äøÏDâ1z¸ƒî ‡;ÈázÃÿq=ÈÁz¸ƒî`‡;èAŽyL„;è1‘y¸ƒñ`‡;ævă¯ ;æárÐc"ô ‡dèAމ°ÃôðÉDèAwÐÃô Ç<È1w°Ãô`ÇDØár̃¡9è±zƒþä˜Eâ1‘y¸ƒî =ÜAvL„ä Ç<(Bv¸ƒäpÇ<Èár°ƒî ÇDØwÌÃó ‡;ÈArЃôð ;ÜAr°Ãìp=(BwЃìp=È!zL„äp=Èw°ƒì˜ÇDèAwƒ¡9ØázÄÃä 9ÜAɰÃ!‡;È1z°cä`=Èwø„™‡;ÈázH†ä ‡;ØAzăäX;Ü1zL„ó0ˆ;ÈávЃì˜=ÜAw̃î ‡;æAr¸Ã äp=ÈáŽpBñ`Ç4€ÛX~°þ'×(èðwh±N°‡þá{€á¦8ƒ²àÆŽÁ£¨?þq}4`|¸ì†{œÁ üxFþ[qàÃÿ!=ÜAz¸ƒî 9èáŸP„î ;&Bz¸#Ë<È!vЃ"ópG<Ü1rÐÃì˜ÇDØáŽx¸cäp;(BrÐc"ìp‡OÈázL„ópG<$cr¼‡"ñ˜9æárЃô`ÇDþó.rÌÃä ‡;ÈAwƒä ‡;âÁŽx¸ƒô˜;ÜA w°Ãä ‡dÈáz¸ƒô`‡;èAzÌÃ'`u9Ü1w¸Ã'þq=ºOwƒî =æáz°ƒä ‡;ØAvƒîˆ9èÁz°ƒì zè>zp‡xpr ‡y`z z zè>rè>rpz zˆw`‡ypŸ ‡îcr r ‡xpv z zp‡ÿ zp‡ÿè>vè>zè¾î‹w`w˜w`zpr ‡¤‡î£w °rvè¾xpzpv wˆw w`wˆr w z¸Áy`rp‡xpzprprpzè¾x`wˆw zpz ‡y¸Aw`rp‡xè>r w`w ‡î#zprþ rè>v0rè>zprp‡x˜w w ‡¤w z ƒØCwˆvXNX‚y`‡ià‡©ãQ8¹“›„+ø‡wh€,'°‡ƒ/¸0ø‡Dè/8'ȇxø Pƒ,~ƒ3Àƒ{8ƒ{ ‚{8lø †|˜ºȇ˜| rp ‡tdpð‰t”z ‡xpz ‡Rdw ‡î£‡î£w`w˜‡îûw w˜zpz z`‡yˆwˆ‡îcz˜rpv r˜‡îcw rè>z¸Az`‡î#‡xprpz w`‡î›z`zpz ±pz ‡î3r¸Avˆw ‡î£r rp‡xpv r`‡xp‡y rè>v˜þw`zè>z ‡y rpv w˜w rp‡ypr¸Az zpƒ z z w ‡R¤w`w ‡î‹z`‡î#z ‡îó‰î£r`‡yp!ð„$pv˜†pü‡mp„IQý~ø~àÆÊÆÊ‡È~ø~È~ø‡|0‡-`¬~`,å‡|ðÑ|à‡|ø‡Íý~˜zp‡y ‡xpzˆ‡yp‡xè¾xpƒp‡ypz˜‡d‡xp‡ÿ z˜r«yp°ºAƒ+w ‡y wˆr °rz˜w0vpz`‡yè¾yp‡3ýzè>rþ ‡y`z+w ‡yp‡x˜‡R¤w w`‡y ‡xpzp‡ypz+w`z˜v ‡3%‡yè¾x`‡xp‡yè¾3í¾x0w˜‡\pv w`‡x zè>r wˆwˆw r0v w zð wˆ±(Ezpr r0ˆî›‡dw˜‡î#zp‡x(Åyè>vè>z zp‡x`rp‡y(Er w z(Er r r vpƒè>r(Evpv¸Ar ‡x¸Av r w ‡î£w zprØC±pz wˆ‡zð w ‡î›w w˜þwð wˆw zpv ‡$vpzpv¸Áx˜v zè>zè>z`‡îc‡î#z z¸Ar rè>ƒè>zprpzpŸ(Åyp‡xè>v zè>r ‡î w zp‡yp‡xè¾ÿ zp‡x˜w`!ð„%˜v˜~˜:ý‡~àÇÊ#åàêƒzø‡|0ÒÊý-~˜|è>v r v z ± rpz z ‡î£v˜z v vpƒ z z w ±è>Ÿ˜wð w0Ÿpzð‰î#w rè>z ‡¤r0r r w þrpv ‡î#w`‡œw r r`‡ypr`‡¤rpz z w ‡îcrp‡ypz z˜vØCz`rè>z w v ‡W¸Áy vpr`‡xpr0vØCŸpr˜w`‡xpv˜‡R¼Az¸ArØCz ‡î3w w z vpz z zØÃxpr`‡yˆw r r`w˜w z w rè¾ypz zè>rè>v ‡xØCzè¾y v ‡î‹î›w r¸Avpvè>ƒ w r˜‡xè>zpz`w ‡y °þ"zpvè¾xpz vˆw`ƒ¸Áxpz ‡x˜‡î£w rpvp‡y Ÿè>z`v‡y ‡xpz w w`w rpr`w ‡=ü¤r w`z`‡yè>r0Ÿ`‡œw z v r(—îcw ‡î£Nw ‡i0RµÜq&gr‡| r(Ezpv˜‡x¸Ar wˆv wð w ‡î›É£r r0ˆî›w ‡÷pzpz¸Aƒè>ƒØÃx z ƒ`z zprè>vpŸ˜w ƒ ƒpz`z`z¸Áþxpr ‡x˜v vpzð zp‡ypzè>r0v r ‡î#z`z`‡î£v ‡$w˜‡\pr rp‡yè¾y`‡î#w zpvp‡x˜‡î£w˜vè>z z`z`z zpr ‡î£w`zpzpvpr ‡îcw`w r w r v r w`w v w w w0wˆ‡$z ƒè¾x¸Av¸Áx`w`r w zpv˜w`‡î#zpr¸Aƒ ‡yè>vð‰î£w r vè>rpr ‡î‹r þ‡yè¾y`ƒ w ‡y`‡=$zpz w‹î#w`w ‡îczp‡ÿ`w ‡î#zè>z zˆvpr ‡œr¸Azè>r ‡ w rp‡x zØCv(E°r‡y z zp‡xè>vp°ê>r w zO r`‡ià‡r–ñÆÊ‡¯Ü|ø‡i+r(†n(†O@n0r rè¾xè>vprp‡y ‡î£rp‡yøwˆwˆwð‰î#‡xè>Ÿ¸Ar¸AŸ¸Arpz v rˆw¼y ‡=œwøz ‡ypr˜rpv ‡îþ“¼îcw w`zp‡y@ar rpz ‡ypÉë>r0w w ‡$w ‡î‹w rx…ypz ‡îcw˜r ‡xpzpv˜w`z zð‰î£vpzð w w˜r@azð w z wˆw w˜w˜‡=$wˆw ‡=œz w ‡î#‡=$z w ‡îcwð w`w`z˜‡¤w w rpzpv˜rp‡xè¾ypƒ ‡$v¸A°ê>z w zØCvp‡y w v r r rè>r rè¾y`‡Œþw r`w˜w vˆ‡=¤‡î#w`zè¾xè>zpv r`w`‡î‹w rè>z@ew r w˜vpvpvˆw ‡î£‡îc‡¤r v ‡$v˜w˜w rpƒ w rp‡à!ˆv˜—ñ|à{Ë|0ˆn‡_à|à‡OPwˆvÈ58ƒkè¾y zpv w z`zpv zp‡x˜vx¤r w`r wˆ‡y`w ƒp‡x˜wˆvp‡x+wˆ± ‡dzpƒè>zˆ‡î›‡î›‡ÿ`‡î£þ‡î#w zpo0˜†Wè>zè†%0wˆ‡y°„îcrè¾yp‡y zp‡yp‡vÈv vp‡yÈzè¾x`zˆyìèÑsÇÎB„ìÜ‘£ç.;z事7ÏÝäýi>ðƒvðC>ðC›òÃ?´iMîé?äÃ4äCܼ=Ì=°ƒ;Ѓ;°=°C<¸=”9¸=€„;Ì=¸;¸9Ð; 9ă;== =pB°Ã<ÃÀ°ƒ;°ƒ;Ð9¸C< ;Ð9°ƒ;°ìÐ; ; DܸÃ<¸HЃ;̃;ÐBÌBЃ;BÄCéЃ;Ð9Ð9 ;¸C< ;”=¸;”=°ƒ;Ð9ÌBÐÃ+°C<¸==ApB°Bă;°=°þƒ;ÐCþÌ9¸=ƒ;Ð9Ì;¸C<¸;ÐìÐ9¸=;”9¸=¸; Ä<¸Ã<Ѓ;ÄCéÌ9Ð;¸C•ÑBÐ;À9Ð9¸C<¸A°ƒ;Ð9°== ;ÄB̃;°C<¸=ƒ;°BÐCé°=C<¸==ƒ;€D<¸=”= =p…;°ƒ;°CÜ =ƒ;ÐB°9À9¸A= =C< 9¸ABÐ9̃;Ѓ‘ƒ;€Ä<°B==°B°C•‘=;Ðì°=ÌC< ==”=ƒ;Ð9þ¸H”=ƒ;Ѓ;Ð9 W =;̃;'$;°Ã4ð©ðïÕˆ>°=T;=¸C¯@[Í4àƒ;Ð;̃;1°=;ÌCþÐ9T=; W°=¸=Ã<¸=CéBÐ9¸; =°CéÄBÐÃ<BÐBЃ;;¸=ƒ;p9¸9Ð9̃;Ð9¸=°=Ã< W¸==Céă;Ð9Ì;¸=C<”=5=ä9”Î<= Äîãþ<ä>ï÷¾ïÿ>ðƒ2ðƒ;Ì=ðB.$¿'BÐ7(€€@<¸9Ð9Ð989°=ƒ;|?=pE<|ÿ<¸==|?;ÐÃ÷ǃ;Ð9Ð9Ð9|?H¸C<¸9ă;°9¸@sçŽ;wôÜÅHn =róâ tGŽ;‰îè‘£Gœ¢BXéˆçŽ2s?Æa7ð•;r1ÈÑcçŽÞ@vñÜÑsGÎݸ3ñÜÍÛøj;wìÜÑ#7p^<‰ìÒ#'‘œ;zç]¤GN"=rîèI¤þ'‘¹‹îÈÑ#çŽÜ@vîè¹#玞DzäâÅsGœ;zîÈI¤Gn =wóè ¤ÇÎ=rɹ£çŽÞÀy鑸‘œ;róÜÑcw‘»yäܱsGo =vî6œçŽ9wôÈÅ£'‘Þ@rìÜÍsGŽ;zìÜÍsÇνôÈÍ£çnž;vñÜÑ#çnž»¼ãuGœ;zäÜ‘#7p#=wôȹ#79vîæÑcGÏ=rôÈq‡‰È‘ˆrÜ¡‡všÇzÈqg#rÜ¡‡w„àDwòŠÇd@ QDsÑÄQLQE™AÆ|ÈÙ¨˜wŠÁTèq‡œn„ðþæNŽ`¡’p…3Â9" %.ÚˆzÜaÇv"g rèa‡rèq'w⑈zØq'v¢ÇxÈ¡Çrèq‡z¢‡z¢‡È¡G"rè!ÇzÈqg$'²àÀ•ViàˆaÇ#܉§†qPƒu2HÂcLXa´È¢GÜ!Çrrqg‰Ü™ÇrèaG¢yÈ(wÈ¡'õè!‡wÈ¡‡wèq‡zhˆœØ¡ÇvÈ¡g rèqgr6’ˆzÜ¡g v$¢‡rÜÙh vÈ¡Çræa‡žhɈwØ!ÇzÈq‡wè!‡wÈþq‡wÔs'wè!Çr$"‡žè‰Çrèq‡õÜ!G"rèQožâaG"r$šÇvè!‡õb‡wÈ¡Çrè!‡žÈ¡g vȈr6bÇÒÜ!‡žÈqgvÜ¡ÇxæqG=wÈ(r6’hžÒ$Rr6¢5žØq‡v$¢Çrè!g£hãag N„؈f˜ÉGðÁ üŸÂO¼pÀ™iÏñÇ!‡| væA&wÈ™‡—wŠY‡šnp‰ÇnâS²`ÀÀÐFvÆY@ è‰ÖvÈqgw؉g zÜQ/žØq‡zÈqg‰Ø‰–žÈ™Çrþâq‡œèq‡zh¥ÇræÙÈzÈq'žæiç$ÉÁq´ÐÁœ%ºÑbO~PàUjg wtÐŽhA2ÐBÀ wŒc !G<Üñ wЃô G{BŽ#aÇFÜÁz „äp=ÜAŽÐc ä 9ÜÁwÐÃô ‡Dâáv¸ƒî =$ÂrÐc äp9Ø1vЊ!Ç@æw#ô ‡;ÈAv¸c#äpÇ<Ü1x „î Ç@èAŽÃôpG<ÜQwÐÃñp=ÈAZ±c#äH^ÜA°ƒ;èAw°c ìp=$þBr dä˜Ç<¢ErD‹ä ‡;èAŽyÐÃôp=Ô#‘y¸#¡Ç@èA‰ÐƒH<Âz¸C=î 9¢•wÄÃäp=ÈÑvD‹Ù9âáõ „ä`Ç<Ü!O,î`F<þÑqŽ“œå4ç9ÏùuöCÍ@†;Ôãõ¸C=îP;Ôãõ¸ƒî =Ü1w0äØ*¬Q t$cÍ( 7„0u˜ hÇ5б¤£&H3ÜAz „î Ç%%²‰ÌÃô U<ÈÑž°cî`=ÈAw°c ô=ÜÁzÃvì ‡DØáþr $î`9èáe#[Ð;ÆAtC æX9rw#ãÈ‚;tÐŽk„b zHE;˜‘w˜c ‰;È‘ zƒ!‡DÈAõl„ä°­è1y°Ãä ‡DèáŽy°ÃäpÇ<ÜAŽy°Ãó`Ç@âAz „ôp;ÜAw̃Vì;ÜrÐÃìp=ØáŽyЊÙÈ@Øa;r „î`9ÜAv dî =ØAwÐÃäØ9ÜAwÄÃähDæárÐc ô Ç<$Bwƒìp=ÜAzăô =ÜAz¸#î`Ç@ÈáŽþx¸C=9’wÐc ì`9èAzÃóp9èárÐÊÁîˆÇ@âAr¸ƒ!=Üá`w°Ãñ`9衞úƒî ‡;âÁwä…ôpG<æávAKpG’cG¯ 9wñܱcW^Avîè-)}4>óÐ3ÏÙø¤„Ï<ô¤„=øÌƒ=ó|„ŒEñ¸ÏBìÐÃNAä¸C9Ìèó=îlÒþD-ÌC9ñt#;Ü1F*¡ä‘C;¤sB7YÐ3F*¡äá;îÄCOAó9îÐCÎGä°³=ä¸ó“;óXÄŽ;ìÅ=îS=äDNAôC;ô°³=î¤ä;ñD9ñÐCŽ;ìD9ñ¸C9?u³„;Ü,1F*¡ä¡ƒvt€'8‡Ü1†T„"ô(;^AŽxÌÃ"äp=È1‚Ѓô`ÇBèAv¸ƒî 9~Rzc!äˆ=Èár,„ì(=ÈQvЃóˆ‡;èAŽx¸Ã" ¡GA~âŽyX„žr;ÜAv,$î`GAâáz°þÃSìp=Èár,„ä ‡;èAŽ‚Ìƒî G< ‚Ѓñp=Èñrd䈇;~âŽx¸ã'ìpÇ<ŽBvЃî =ÜAOуî ‡;èAzƒäˆ=ŽÂrÄÃäˆÇ<Ü1z°Ãôh"=Ü1w°ƒìX;È1rЃîXÕB,ÂwЃî = Br¸cä ‡;ÈávÌÃóp=ÈáŽÃô ‡;–à !Ð#Í`Ç<ê”Äcø`ÛØ1°mô`=Rb¨”Ðcô˜=RyÒcô˜gBwƒa=ÈáŽxÌÃó ‡;V5‚cî =ÜAwÐÃó(;ŠÊŽ‚Ìƒ¡‡;ØAwăþîX;ÜAŽ¢Æc‰GQÝÁzƒä GAèárУ ô`=ØáŽy¸ƒ†š; By°ƒôp;ÜAŽ‚°ã#ñpG<ØárÐÃä(;,Br¸ƒî =âÁwÌÃì GQãAz\×ópÇ<Ürl˜ùˆ;ÈQTz¸ƒô¸.9æv¸ƒì ‡;Èár°Ãô`9èÁŽ‚°ƒaG<ÈA »ƒä ;Šºªy$îˆGAÈáz„î`G<ÜAz¸ƒô ÇG6vÁI`‡;š1xÌsìH ;æœzÌ9óà,Ûâ1xÐ#þ™G<>²*zÄcžôX•-¦árd䘇;ÈA‚ÐÃÈÀ=ÜA;´àÃhA ªAvpCI0Á5jñ-¨"îö@<¢&ÈB)Üwƒôp;Üñw°ãº!‡;ØAyÃôø‰;æAz£ 䈇;Èë’ã#äˆGAèáŽy¸ƒî ÇGÜAwÌÃôˆGQRTr„¡9ØÑ $Á×À… ²P ¸# KØ98ðˆZ˜ ¥ ;èAŽW„îˆGAØáŽx„×eGQçávЃî ‡;èÁŽx¸ƒäp9ÜArЃ¡þ9Üñr̃î ‡;âávÌÃ?™ÇOÜñzƒ?¡9ÜAr¸ƒä 9ŠJ‚Ѓî ‡;ÈQTzPÐó GAèAŽx¸ƒópG<ÜAr„óp=ÜAŽxd;âQz„î 9®KŽy|Äì 9®KvУ¨ìp=Ü1x¸Ã"ôp=Èq]rЃ;رavЃó¸n<”Ìw̃!‡;æAr„E¥;èÁwÃì ; B‚ƒó(;>BŽ#î°HAèAvÌÃBàDÜÁd¬jì˜;ð<vÄcì˜Gþ<æy°#%ñ˜gã1ñ0«2«Âô𜕫BñÀâ@ ìàì@î@ä@î@äPÌäÀä ›ìp ›Pñà Y-Èôàñ@A)QóÀñàáñ°aóî0î@ôÀAq]ô@ôàóàÁîìPTä@äàôÀEEôàó dôàìàìPTóàáñÀî@îÀîÀYìà?1ìô?áìPTœUäàì@ ×5îÀ1ì@î@ô0ä@ÁôÀôàäàôÀþEEôPñPô@ôàó@ôàó`AìPä@ÁôàóPóÀî0ä@Fî0îä@äàìàäPóàó@á«âôàñÀ1ôàñPì@î0öÁôàìðìàìàäàôPäàQìðäPäà„DäàäPô@óÀî@ì@îóàäàñ dä@ì@óàì dôp]ìàä@EEô@îÀî@â@îÀ×Eôàäàäð×EôPä@ä dî@îìà«þBôàñ0îÀBà B0ô@ óÀñÀó@H]9«2ìîðóðñÀÿ7Jó°*î@î°*„Áñàñà¶` È î0äàä@î@ä€ úà†ÂîÀóÀîÀîÀôàìî@îô@Aìà«Âô`ì@äPTô@ôÀî@ìàäPì@ìPä@äPTô@î@äàä0îÀóàìàñàñp]ô@ôàä@ä@äPôàìp]ôÀEEî@EÅÁáóàñàó@äà«ÂþóPT„Tóà«ò óPôÀCIä@ñäàäàAEÅî0A?q]äðñAä0äàôàôÀAî@äàó0”îÀî@ô@îÀîÀô°añPô@aî@ìPôÀ)ô@î@ì@î@î@ä°aÁóàì@î@EE×õäPì@äàäPTóàóPTô@óàìàìPTôPTì@äÀîÀî@ìðä0î@î@ô@î@äPôàì@ä@Aî@ìàóàô@óPóàä0þìPì@äàóàôàä@äPôàäÀñàñ@ì@äPTñàì0ä@HÁî@Aœäà¹@ñÀñÀ«2ñ0ñìPñÀôî°*ì0ì@ì@ì@ì@ó¢ìàôî@1î0ì@?áÌ€ ¶€ ùŠ ´¯¯î@Eóðî0EEñÀî0ì@î@î@óàóðEEîÀôàôàä@î0î0)ZQñ@î@îä@îÀôàAôPTìàñàä@ä@îäþ@FôPì@îìàä@Fî@ôàôÀôPôðñPìà«âô@ôà?‘ ì@ìPä@ì@î@ôàñ@ô@î@óàó`îAó@ô@1î@J×EîîÀAEEAáì@AAó@óàôPTñàä@ÁôÀô@ôP«BÁî@î@ôÀÁî`ôàäàôÀôÀôà«r]óàñ@ô@î@î@ìPñàäàä0îÁô0”ôp]ôp]ä@äàþñ0Aî`Aî@ä@AîðEeô@ááì@äàó@ôPTó@óÀEä@äp]ô@ôPñ0ì@ôàäàôP?Aóàìà)Qä@î@ôpž°îÈÀóÀóÀô@ôàô@a(äPä`(×Eî@î@î@ô@ô@îÀ1ìPä0äÀAäPììà]YìàìàÈ@ñP?Aî0ì@?Qìàì@äàäàäô@ô@ó@äðEEáäàó@î@î@þì@äPô@ó@ô@î@îÀôPäÀôàäPäàäPìàô@îÀîîñî@Aì@äàäPäÀAî@îðîî@î@äàQTó@?á?Aäàôàì0ñ î@Aî@î@Aôp]ñ@ä@îîÀîðä@îÀî@ô@î@ô@ô@îðÁôàì@ó@äÀAAAô@î@ä@äàô@ñ@äàì0ì@äî@ìPQäà?A×aîþÀ1ñàäÀ×Eî@ì@ä@ìàô@ì@î@äàôp]ìä0ô@ì@ìàä@ì@ìPô@ô@EEìàôPó@ìàAî0Aî@î0î@ô`î@ô@îEe«RTó@Aî@äðä0ô@îÀôàô@×Eî@îÀî0AóPôÀóàìàôàó@äàAî@äàKÀ Bàì€ ä@óPTô@ìàôÀô`î0äðä œ ì@î@î0î0ä@êà äðþî@äPTìðñ0ä@äðä0ôPó°*óÀêà –àô€ ø@ì@Aô°aìPôPóàñàñÀä@î@äà«âôÀäàóîä@ñ@ôÀî@î@ä@îÀôîî@ÆóPôPôàñÀî@ôàóàóàìàìPTóàóÀôPTñàôPô0ä@î@aôÀAîî°*ìàäÀ×5AäPTä@îð î0ä@1A×Eô@ìàô@ôÀAäàôPñàñ@þôàìàôàñPóPóp]äàñ0îÀî@îCIEEáñàä@äàñÀî@E5ñPñà«âä@ä@ìPñ0î0îÀôÀîóp]ó@ô0ä@î@ôàô0Fôp]ìðäàô däàä@äPTôÀôPäàä@ä@ñàô@îä@×Åä@ä0îóPä0ì@×µ*ìðî@ôp]ô@ìàä@î@ô dôÀFîÀQôàäàäàóàôàä@äðì°žþ°óàÌàä0£Pñp]äAANàã°ÊìàôÀä@EÕÓPTäðä@äPì@çpAñàäPTôÀôàôÐÓ  øPä@AäPTó`KžÀô@ì`| ñP9@î K¤àó@í ô ôàìÀE5Aî@AäÀAäàìàóàäPô@Áóàó`ôÀôÀó@ñàAî@áäàôÀî@äPô@îî@îAäîÀôúóàôp]þô@ô@îÁ ôàñ Aî@ô0AìàìîìÜ Œ7» ÝÑ#Ç.ÞÀyɱc7;wäè‘sGÏ;wôÈ%¤GÜ@z事玜;vîæ¹›GŽÝÀxî董ǎ9ŠôعcçŽ9rÙÑc玹„ìÜÑ#G½yäÜÅ8é@r鑋玻’äÜ‘£·’9wóÜÍsGÜJrîæÑÏ=väâ¹cGÏÅó⹋G;zäÜÅ£GÎ=rôȱ£Gn »ìŽžç.ž;zévÇÎÝœ ¢“}æÌÙgÏ›ùþõË÷¯ç?v¶È%ŒG]Bvóâ%¤GŽ»„äÜÑ#çîdBzîè¹£Gn¥;zäè‘c6Ï=rîèÑ#G\Âyþîæ¹›Çn»yì豋—¹xóæ‘KÈ.!¹„äÜ‘cG™»xîØÑ#玹„ôȹ#çŽ9z#OÎs‡ŒÈyîæ%¤çŽ9zä²›r^ÂŽ;1pÁÁ(9œÒ@ üËO>ÿôúO>üäÃO?ü0#;ô€ÄÎ<î°ã9îijR<ä¸;ô°CŽ;ä¸CHôC;ä¸;ñ ã9î°CŽ;ä€DÏ<äÐC=l‘ã9ô¸CŽ;ìÐÃ=ñCÏ< Å“þ=îÄ“2î°CNBìãN<îãN<î°“P<ä¸3;ô$„L< ‘ƒ—;ì$DHô¬D=ä°CO<ìÐOBä¸3} ÍCOBó¸9ô°Ï<îL“9ô¸C;ô9ìCÏH'x²=î0ã9ì€ÄNBäÐ9ñÐCŽ;ä¸CŽ;ìÌ“=ìÐãŽ} ‘ã=îÄ9ô°C=ä¸C9ó¸C;ô$D;ä°³;ìÄ“K>ñ¸C;ìÌC=ä¸ÃŽ;Ü(°æ, ã,A)Y0`Î ô°“;ãü@O ã,áÎ< ¹ózBx‘;ô“=äГ9ì$þ÷äГ^ä$÷ó¸ÃNBó¸=ìÐÃñhÇ8 ‰¸£TÈÁ8¨0Ž,Ѓ?0ÀJQ %ã ãøAâA!¬`JpG7„ÀîÍÃì ‡@qÄ#ôp;ÈáŽ×¹ƒî 9æÁz¸ƒô ^Bw°Ãì ‡;èAz€cýÈG,(!ŠLÄBèÐGOþÑ“ôäùø‡OòÑ^ýä&?éG>þá“|ôCý°…}ÜAr¸ƒäp=ÜAr¸ƒ¯£‡;ØArÌ#!ñ ‡;èAv¸#î =ÜÁw°Ã¶`G<æwÄ#!ìp^ÈAþrЃxaÇ<Ü1wЃ{î ‡;è‘r°Ãì ;ÂzƒȘ÷æwЃôpÇëæ‘vÄC–ô =lÁz$„ô =ÈwЃ²¤GBæAw°#!ô`=Øáz¸#Ü£9¦±‡i°ƒœ ‡;èAz°cúp^ÈQŒn ”ì˜G<2w,Bp;AzÌÃôH=ÜAî‘/;æáz$„ä ‡,çáŽy¸#äH;ÜÁrЃ{äÀ 9ð’rÈ2!ó`=dÉŽfàƒÜ#=âáŽx¸ƒôèÆâb˜€ÓÇÔ‘wþ8  ‡8|rt€ØAwƒî˜9ØáràÅä ‡;ìCrÐÃñ Ç<ÈAw°Ãìp9èAwÐ#!ì =ÈAwƒä ;èár$„ÊG(¶ vœc :8ÇÌñw°ÃI =|ð!$`TÐ8ÜÁŽsl!!ÜX‚;ØárЃ{ž`‡;æAWpoÜ£‡%î‘Ãä ‡}è¡OЃô˜‡;Èáv¸Íè‡>lЈQH¢_ „>ø¡|ðCøàG?ô¡~ø×'=Ñ>ö‘ ÿâ£üÐGO²ðŠ~¼" øèG¯Az$þ„ä˜=ÜAŽ„ÐÃAM=^ÇîÄ–p=d9v0cìp;Üñº„¨ƒ–à9è‘EЃô ‡;ØÁ½yÃìp=ÜÁK$„ôHH<èa w°ƒ aGBèÁ½y¸ƒ a=²á ûÐù˜9è‘rÌÃñ`GBâAz°ƒî`9èñ˜„c‚tBØr$ÄÌàra p¸ƒôHˆ8ðaŸ„ŒƒÛ¸/ŠAzcî`‡<‘„yƒ ¡9èAw°#!ôpG<Üazƒäp=Øáz؇{ôp=ÈAv¸ƒñ Ç<‚Y’ƒþä`‡;ØÁ=zƒ{ô ÇcÈ |poî 9ØAî™Ãî0Ç"p‘<´ÃìPöÀ\dÊÈ‚6p‘b´Ãä ÷èÁŽ„Ä#!䈇;èáŽx¸# ¡Ç<è‘rÌÃóp=ÈîÑÃôp=ÜA„ÐÃ>äpÇ<Üvà" `H‡%ÜÑOX¢ž`‡‘N¸ƒx G<8! O(# á ‡:ø‘ÿâÿùèG>îA~ôøà>ôÁ3Ø" ´8C>üË|Ђô ‡;èAwtc ôàÆ˜‘vЃì*=ÈvÐC a=ØAr¸Ãxñƒ „  v$dKÐAB¸!rp# Ê 9â‘z¸ƒì˜Çˆé!wÄÃô ;ÜÁf¸£+XdÉŽyƒî 9æávœC$;ă-°ƒ;ƒ;Ä=;Ì;¸;ă;ƒ;Ã<$Äë=¸Ã4€C5\ƒ ±CB=C<°ƒ;,3¼ˆ3LCBÐ9LC>ă;Ð9üÂ:lþ56¸Ã<Ð;̃;P',;Ì2=CBÐCBCB¼Ž;ă;=¸=ƒ;CBă;Ð9°ƒ;°ƒ;°ƒ;Ì;¸=$;¸9à;ÈR<¸C<Ì;Ì;¸;¸=¸9Ð9Ð;Ð;4Ã<Ѓ;°=ƒ,у;°=ƒ;Ä;Ì;¸Ã<ÈÒI˜X$'¸;¸9p;=Ã<$;$Äë¸9Ð;¸;¸;;¸;¸==¸;¸C<°ƒ;==p}ÐCBÄÃ<Ä9Ѓ;CB¼Î<°^¸Ãë$Äë¸^$=Ì÷°^¸þ;=p;Ѓ;Ѓ;CP‘=¸;¼=A(=A”B¸ƒ% ŒÃ€:pŒdÁ3d)˜À C œŒÂ<€3̃>Ø5¸‚+4B)4‚æÁ.àC> œ5ø€+(B|A>A(Á9€A-˜€$>äƒæ½B.ðC.¼‚æñƒæñƒ-C<$D<¸79tƒè€;lÁ9,À¨Cp@)ä€x$A)äp@)¬@8tB°C.ƒ:€Àc°ƒ%d ŒÃè€;°C7,Á°CBÌ.°5l:´9Ð9¸9Ѓ(B°ƒ;0CÖÅ=Ã<$;Ð÷Ã<¸Ã<$;Ð9Ð9pÏ<9ÐCBÐ9È;¸;¸=Ã<$=CBЃ,‘ƒ;Ä;4>Ð9p;È9¸Ã<ƒ‰DBÐ;¸þ;Ѓ;ÄÃ<°=°÷ă;Ì9ÌCœC(Âx‚=ü€>Á9€AœàÁ<ä>ÐÃ+ØB>äÂ+äþƒæ‘+>Ђ8¸;Ð;tƒ,˜CptÃЃ7¨APA°Ã8ü€;Ѓ °Ã8dA'äÁ °Ã< ƒ;tC Ѓ;ă)dŒÃèÀ<Ä7(ÀèäÀ94€0À8,;d8ä;˜Ã $D°Ã8dA'äÁ °C<Ð;.˜Ã¨°ƒ)ptÃÐC¤Ã<ŒÃ°ƒ°ƒ; ƒ;ÄCØØØÀ(ÐÃ<˜Â°Ã1ŒÁ.tBä?œ=pÀdA.,-œ><ÆcàE>09$;pðC7´C¤Ã4Œ¸ƒ\Ã/,°C;t9€CÄÃ8hÁ<  ă; ;¸CC6x‚ ÃŒCè€;°C7,9tÃè€;t@:0Ã8P;6üÂä=´Cƒ8è=ŒƒÌ °Àë ƒ;´þC.¸ƒ´ƒ ¤3¨ƒ ÃŒ°Ã¤Â4œÃ̃ă;ä=CBCB=$;Ð9ÐCB=°=p9L3äB.Ð3=$9Ð9ÐÃ<¼9ð¨0ƒ;ÄCBˆ>¸ÃI°ƒ2Pƒ0$3œ€d=$;',=2Ѓ;ÐCBCBà…}Ð9°ƒ;Ð9¸=ƒ;Ð9¸;¸=°=°=ƒ;Ð9¸==¸9°ƒ;Ð9p}¸9Ѓ;Ð9à9ă;;¸=p94ƒ>Ѓ; Ú40ƒ 1Ã4080ƒ80ƒ 1ƒ83þäõ ]ƒ70ƒ8L3L3ˆƒ 1à‰ƒ 1ƒ8 3 3Lt^Cb3Ã5L3 3Lƒ8$ö40Ãj3ƒ8L3$63ˆƒ Açjç53€n‹Ã40ƒ83Lƒ8à¶8Ð9¼B<àBô;àBƒ%Ѓ"ðÁ´ƒ'°C6¨Á"x‚2d4x9„A°ƒ%ÐC;x‚;2è>\C#x@0A#èÃ!›‚xB<üAàÃ)̃:¼.d'à.œ1´ƒ'ÄÜÁ5Ä>Ì>hÁ+Ð'dÁ<äC>ë!Û;Ä;˜'¸ƒ:p‚%Ä.dA´ƒ'°ƒ2¨Á"x‚þ%¼.d1(Â<´ƒ'ЃŒÂ<°2¼N6dÁ\ƒ"¨Á´ƒ'X=¸ƒ:x‚;˜'XB<àBHB;x‚;dC,‚'X^àBƒ%ÄC;x;øÀ(ÌC<0CBüA‚;àBô;(‚ìA;x9´àA;x;X;Ä2à;ÐCB̃;CP‘ƒ;Ѓ;ƒ;=Ã<ÐÃ4@'tÚB<¸^CBÐ;ÌÃ"dÁdA;¸=¸3à;Ѓ;°ƒ-C. Ã"œÀœ9¸Ã<¸Ã x‚¸C<Ђ;ƒ;°ƒ;̃;؇;ÄCBă;Ѓ;°ƒ;Ã<¸þ9Ð9Ì9¸9¸9¸Ãð>èC>è>è>ø¹f¸>ä?à=hÞ<”+>øW¹êC>ÐC>àÃ<äƒ>”«>äƒæù—áC>h^†ë¹òC>ðÃÈãC>k>àC>h^>è>øW>àƒ>d¸>ÌC>àƒåC¹Î=ð>ä>äƒæåƒæå=ø¼>äƒæÑC>àC>à=̃;°-Ä;¸ÃcÄ;ÐÃëЃ;°9¸9°C<¸;ÐÃë$Ä<þ$=CB°84;œÄI´C=ÌC<ò!ÇÃäãÃä?>̃ær<àÅäÓÃ<ÐÃcœÄ!ãÃ<ÐÃ<Ð;ă;Ð;¸;ÌÃëÌ;$Ä<Ð;ƒ;ÐÃ<¸=¸=¼Ž;°'¤ÀëÄ2¸C<°C<¼Ž;Ä;;Ѓ;°CB˜X<¼Ž;ƒ;ƒ;°C<=ƒ;==¸;¸;xB ÄÃë CB°ƒ;œ;4¾;ă;ƒ;ÐÃ<9wÙÑsG9wä²£7Þ@‰ôÎ#GÏ=rãutG»ñع#GŽž-!Ìâñ9#‘Ý4|óܱ³ݼi‹þ˜-rGÏ;!ž„УG‹ž»yîèÙŒçŽÝ@zäÎ#¹xîè¹£Gnž»yîè‘“HŽ9wôȹ#Ç.ž;rîØ¹cçnž;vñΓ(1ž;zì˜ásÇn Mw6ã±£ÇnžMvñ$²È.ždwì⹓̎ždwñ²sÇÎÝgwŸÙÅhSâØárÐÙ‡§æAŽÐC‹‚;èA £Hó`Ç<ÜAr Ä(ä0T<ÜAz¸ƒä 9ÜAwƒî`Ç<È1vÐÃPô =ÈÁz¸ƒî ‡;âáz°#î ‡;èádàc ì=ÈAwЃôp9èÁŽÃ(ìp‡§è1zÃþFÑ‘;ØAv¸ƒô =Ø1z°Ã(îБQÈázƒžr=È1r¸ƒì 9ØAw°ƒìˆ;èávЃ¡;ÜAO „F!Ç<èÁwè(îÐQ<ØAy¸ƒ:9£°c :¢9èAw°ÃìpÇ+ÈáŽy¸cìp=ØAC±Ãìp=Èáv…ìp=ØAwÐCÌQtDvø':š‡Žè1vÐCGó G<€4wÐÃôˆ=Øzè(ôˆ‡QÜÁŽyÄCGôp=2kØ'q;ÜAr‰ä9ØávÌ£yäþp=€d „1Š;ØAvЃÍ#=ÈAv¸ƒî˜=ÈArèhìp;BrЃô8ÉIhAr¸ƒô ‡;â¤x°#î ‡;èAz°Ãì˜=˜ázƒ,sÇ<ÜÁz‰ô ‡;šçvЃî ;èAzƒî =Èáv¨‰aÇ4ðar¸ÃSH<ÜA,ÁY22rЃô =ÈvƒäpG<BŽyèˆó Ç@âáŽxc ôp;ÂwÐc ì ‡;ØArÐc ó9èárÐÃ'¡‡;täv0cFqþ#èAz¸ƒ;ÈAwƒî 9ÜAzÌc ä 9ÜA“°ŒôP9èᎩ’ƒîˆ9ÜAwƒî ‡È1rHñ09è1wcî =Bz¨‰î ÇIèár dñ`=æáz „!Ç< ‘Ãó =BŽy¸#jb-˜a fäÂÈ -l fØYf†-˜a‹,Ó´Ȳ-lA [ ƒȰ2<5xÌÞbÇæþèèÁèÁÈÁÈÜèèÁŒ‚Œ‚æèŒ‚aÜ¡$aÁæ!8a èÁØaâá² Ø!tÄçãaØ!‚>èãÜŸÈÈÜŒÂ?ØèÁÍÉÜØÁèÁæÜÜ(ÜœÈaÜÜÈÁ(ÜÜÜœÜÜè!èÙÜèÁñÉÜœØÜ<ÜÜ|èèÁÍçÁÍÉh¡ ´@Üa²À€à ÔÀt ÜÆáØAÌ! Ø!Æ! tÀ~ÀbþÀ²àr ÈqÛ¢cÜ’x:ÌýpcÜîÆeñ‘®ÛwìÈ¡ø2.‹¹,ݨè çnÜvs8±0nÉ<ã²°£Ç®»b[r3GEǹ%9Âq£ÂN½yä–˜Ë/‡;S:$é˜Oȸ%‰–TY2NIw+¸0 ·dÜ’xcò¤Ë„¹î€t3ð…»ôòºË¡…À#vñÜÍéÃnήé¸mÑ1nÉ<û‘HK*ã”l ·‚ vôÔÝpwd—»N_r¤c7nIñÌCNqì—;ìÐCŽ;ô¸CŒ0ÆC;ñØ–9ñ°;¶ÑC=ó3=䨯Î<ñ¸;䨯Ÿmóã9ô¸C9ÑÑÃŽ;óã9ôã;îÐã=îÄãî3móÐc=ä¸C;Ñ‘OtôØF;ô°cÛ<¶ÑCN~îÐßmô¸C;ô¼rD2ÌC˜òC¥äà=ìŒÓþÀJ°³Â Œ³„ó¡†ä°ãNKp ŒÝPÁŽìÁ‡ãd!;ã,‹ G,Ñm”Å)KŒ³Ä8Kè@9ãdâ°sÁ3Y°£9 â=1Á$ŠhqÄ2œ£E-?‘;93O1y°s‚¨ó’È0O1y˜³Ägø 9|ÑÎ j0PLã,ñÇBxb &°s„t£E"[pB€Ät£9éÄN7gü‘Àž$1Yd°KãdÁŽÅäqzhQÅì\ðE;'¨a€mäœ0O6'$q‚6Ƙ°…;~ÿŠ€RE‡_>(üú¡áWF›¦IÛ"äËWF^>eòùWb[‰zÿ€Eø÷ÏY4ÁÖÈ+³¦^¿2òøåDšTéR¦ÿ„(ZÂÎ-w䨹sÇÎÝ<¬ñܱ#çŽ;wôè‘sGÎ=vôÈa7Ü\³ä°º#G\? ÏÑ0ƒK4<·ш  ÏÑX Ï»èáÒODc÷5Ê ½‹ð}w;Ð85ÐX£ ;ÊàÒŒÏËØ½ŒâÍø¼ ;Ð@Ãs4ŠGc2ØAv`…î ;°BŽx`%ô`Ç<âáŽx`…ÏÜ1Ÿ¹ƒî˜G<°ÂŽy`%î G<èAz°+ô =ÈwÄÃóp9èáŽx`e.X¡VæávÄã.äp=ØAv`…äp;îBvÌÃ옇sèáz¸ƒs¡‡;ØAzÄÃó ‡;Èár°Ãô =Øa–¹Ð+¹øJõ~ þ%ÿàÇ?øñ~üãQüÈ?ò~äãüøG>‚’|ð#)üÈÉ£þÁœð#'ý@INŽù¨|ücœÿxÔ?òñ~$¥ùèÇ8ÿÁŒ3'Ê?¨™~üƒÿàGNòñ~ä$ÿàÇ?ø”|ü%ÿàÇ?Žù|ðãüø?þ1N~üãQHáGNø‘“GýƒùÈÉ£rò¨|üƒÿÈÇ8—Â|ŒóüÈ ?òÁ<êüø?þ’Gå$ÿÈÇ1ó¡”|ðãüøG>Å?ª.… œÈVr•¹ÐÃñp;Èawƒì ;°2wЃôp9°2¬ÐÃþìp9ÜAzÜ…ôp;ÜAŽy¸#ä Ç<œCz`…ôÀ =°Ò |`e̘Æ4˜‘ÙÌ2C™eFf™ÁYÒ^ƒ¤Í,32Ë Ôf–Ó3¦ÁŒÌ2ƒÓ`Ff¯ÁŒÌ2c×h†8ZËYf ׸¤eFfÅ1 fd–Ó`Æ4˜ÑZq —ƽFkÁ•W$Å»ßoxÅ›“|ˆ—HáÇxÕë]~ˆ—ë…o|å;_úÖ×»üPï£ÆËûö÷BðÄØád¸cwa‡;æÁwÃó Ç]Ø1r8‡w¡9îBz`eî ‡YÈázÃñ 9جЃþî VèAz¸ƒX¡9Ø‘‹|¸ƒúÀG>ô"óƒÈù ²>ø|ÙÉDÖJðAM}àƒøÈ‘Q‚~¾ò|<9D¦>òA"óùÐG>ˆœ}ð#úȇ>ø¡'ã#NÎ?æ‘~àƒøÈ>Pòä|Ìü 2=ØZø×Ô§FuªU½jV·ÚÕð='’@zØ‚ôp;è1wăô˜Ç]Èaçƒä`‡;ÌâvÌ+ôÀ ;ÜAŽy¸ƒfa‡;âávƒî =°BwÄ+ôþp9Üy4옇ÏÜá3Ÿ¹#fî ·;âázûŒî`G<ÜÁŽ»øÌìp‡Ï°Â¬°Ãñ w<úÍÅÃó`=è•xøÌìp;ÜÑowø,ìpG<|æv¸ƒî`=ÜÁ¬°#ìpÇÄÙŸa…X‰‡;Øáv¸#>»‹ÏÜÁ¬Ìƒ¯HJÔ¥>uªWÝêWÇzÖµ¾u®wÝë_{ØÅö%x" ä`‡-ÜArЃX!Ç<ØrЃôÀ 9èAz#î`‡sÈázƒä 9æAŽxЃñpÇ\ÜAwÌcX™Ç\ØwЃX¡þVØdàÃóˆ‡;b6¬°ƒäˆVèMvÄã.ó`‡;æÁ¬ÄÌñp;æÁwÄÃì˜=سy¸c1‹Ç<°Br¸ÃgŠVØáŽx¸#îˆ;èá³x`%;Ø1¬ÌƒóH™;âÁŽx¸cñ˜Vâáz8'Xawˆwˆ¬ˆ¬`wˆwˆvÀŠy`Z» ¤À ´À ÄÀ Ô@ <NH‚x`f`r w w ³À r w˜ zÀ r w vp‡y¸ r rpr wˆvpz`wˆ‡ypr r w z°v v˜Ãxþpzp‡x˜Crpr r r rpr v˜Ãx˜CzÀ r r ¬`‡ypr w ¬ˆwˆwˆ‡yp‡x zp‡¹À r v r r w˜ wˆzpr w z˜Cz z`zp‡x zpvp‡yÀŠx zpr w˜¬ z˜w ‡y`wˆ‡W°ïVwõW‡u^OXz d w˜w ³ w`‡xÀ z w ¬`w rðw ¬0 vp³ w˜w w r˜v¤r`³À zàGz ‡x°ä„H=îã9ô¸"9ÿÒÃŽ;ôâSäÐÃŽ;”¹C=äÄ=îÌs=îÐC;îþÐCÎSä„HŽ;óó/9ì¸CÎADNˆì¸C9ô¸C=‘9ô<ÅŽ;ìÐã9îó=ä„xPˆ…è9ó¸CÎ<Øár¸ƒa9Btv¸#¯ø#(Á R°‚¼ 3¨Á r°ƒü C(Â’°ƒBPÄØá[°Ãÿ"=ØAƒ°Ãó ÇAæázã_O¡9ÜAwУ"ñp=ÈAr¸ƒäpGEØñv¸ƒO¡ÇAÈávã)ì ‡;¡wcäpÇ<ȃÃó ‡;"sx¸ƒô =RÑ#;æA¨¸ƒQþ'æAŽƒÄã)óp9Bw¨ƒä˜9ܧЃ:8AŽƒÌÃ䘇;ÈáŽxЃó8HEæáŽxd䘇;*òr¤"ñ 9æár¸c;èáŽx¸ƒî 9ÜAvТ„Ö¼&6³©Ímr³›×\‚'’àv0#;âAB²ƒî =ÈArÐÃäp9èAwÐã äpÇ<ÜA¨ÌÃ䘇;â1wÐã ä ‡;ØAÈx¸ƒô˜9èñfäÃñpG<ÈAv°ã ñ =üðƒHbaÇAÈArÐÃ!i ØAzƒî ÇþAÈAwЃã =æárЃô =бr @È3ÜAyЃô =È1vУT˜‡;ÈAr„Èó`=B޹ƒôpG<ÜAw°ƒä ‡;èá±ã ô8H<èÁw̃ô˜9èAzÃä ÇSÈ1v¸#¯ð&hC+ÚÑ’¶´%‚'–pfÐÃñp;âqv„ˆî G<ÜAr„ñpG<ÜAr¸ƒä`‡;èAw°Ãìp=Èzƒô ‡;èAŽyã)ô ‡;èÁwÌÃä ‡;Èázø ;BDŽy„¤ñp‡:þ,Àwp ƒæA„$l¡ P æqÐÃI`Á/¶ÀŽ ¨ƒ (E-Lp„˜Â'ØE-:°…ƒ°Ý8A |ðŒ%p" Ø…%²À‚n,€ µ–ÀŽy<¥"ô ‡;ÈÁŽx¸ƒ!"=ØArЃî`ÇSÈÁz@…ä`ÇSèAw„ˆô =ÜA§ÐÃô ‡;èÁZl°Ín~3œã,ç9Ó¹Îv¾3žé,Ná ´8;Âzã ä˜ÇAèqx$ìp;y„!Ç<ØA޹ƒ¡‡;È¢x¸ƒô8=Âz¸ƒ¡;ÜþdÌÃä8H<È1vÌ#ìpÇ8R0rÔ ?`GÌÑ50`K ‡ÈAvÄ€¦Èâ±llÁj¨Ât  ndA×àrŽy¸ƒíXÁ´±„ Œ# î°ÄØa .0àK`GÂÁ,ƒî`ÇAèáŽy¸#î ÇAÈñr— æqv„ˆî ÇSæ±bÔã°€72ÐŽ°cãX¸F(~0†]„b cHE(¾0†TLcô Ç, "¤`K¨…ÜaŽ´ÃçXÂ<ư‹PdA¹PG.Ô wЃô ‡;ÈáŽx F`"Ã4üœ^ Np‚¸;ÐÂþ<¸9Ѓ;ƒ;Ѓ;°ƒ;ÐÃ<¸=<=<=°ÃAЃ;=¸C;Ð9¸Ã<’ŠTA°ƒ;¨È<¸=ÃAÐÃSă;Ãþ<°ƒŠ°Ã<ÄÃAÐ9<=¸;Ä99'½Ö«½§(ƒ; ƒ;C<¸==°C<¸9ÄÃAÐ9@==<IÑÃA°ƒ;̃;ÐCEÐCE¸Ã<ä(;¸C<¸CEÐ9¸C<¸9Ѓ;Ã<¸;2àC 8B ÔA Ô#ÔA ‚#ÔA8B ­#ÔÁ$mÏNB ÔAÏölôlBLB ÔÁ$ÔAÓölBÂ$‚#BBLB‚#ÔAÏÖAÖNBÓþÖÁ$ÔAÏÖA ÔA ÔA ÔAÏm8BÖöl4mLB ÔA ÔA Ô#ôlôlBBB8BÏÖA LBdmBBô,ЊC$`À`€ÔÁœ`€ëŽ@L¸î`@‚뎀ëbÀ`À`ÀˆÂ$À¸îˆÂ€ëŽ€ëŽ€ëŽ€ëŽ€ëŽ€ëŽ€ëŽ€ëŽ€ëŽ€ëŽ€ëŽ€ëŽ€ëŽÀLB`€(ì.‚(\뎀뎀ë `(PÀŒ€ëŽ€ë^A`¸îŒÀ$L ì.Â4Ü+G°_ÐxB°ƒþ;ä‚;Ð;ƒ;°9;Cˆ¸9¸=9Ð9Ѓ;°ƒ;Ã<;ÐÃ<=ÃAЃ;Ä;ƒ;°==°ƒ;¨ˆ;ă;°ƒ;ÄÃSÐÃAЃ; =@@@´&PÀjv1@St1P@kRt1t1€1PkRPPkR€±kv1k‚1€ñj‚1€1Œ±kRPkŽñ³fCC@°&@@C¬&@@@C@OC$°ˆàÁLÀpÃ+°(ÃÓÁ$¬$ð(ŒÀˆþ0ˆÂL DÂ,7³3?34Góà ”ˆ‚(¬Á˜Á68Â6D p$ð @ƒ#Œ€(B2”ÁO¼ÀØÁc€0ô@$Ã+@ LÃÿ3@ß«xB°C< ƒ;ÌÃAÌ;DA;<=°TÃ<”;Ð99Ѓ;Ð9<;ÌCˆƒ;Ð;¸=ÃS”;°ƒ;Ì9Ð9°==ƒ;T3àcÀüô`€(Lü4Rc@!@R7µS?5TGõîŽ@TSRT€T»n0ð40 „õlàÁxÀ ¼²(þ„5['C!ØÁ $à Ä ˆ[cs0¬(„56¿+P‚(°5a¶a6b#v,Ä‚A2¼€.¼6¿€(„56oC$¼€( A2¼€(¼+¼€ˆÂ6D¼@!laCX‹a3Â4ðÃoÎ6m×¶mcÐp‚Ä; ƒ;=Ä<=°=<;¸9=Ã<¸C<¸Ã<¸=¸Ã<¸9ÐÃSÄ;¸9̃;ƒ;Ì9¸9°ƒ;Ѓ;=¸Ã<Ã<°=°ƒ;ÄTÐÃAÌ2àC3c@3cÀˆÂ Ã`ÂÐÁ$˜Á“À @ƒ#Œ@D‚þ#À“€4K3 43 43dø,“Àˆ73 83 ¼2 ”ø+“À+‹Â6¼23ˆÂ ÌÀ ¼ð˜A¼@Aˆ[Ï@!lƒ($C°B€B°B¼@ˆBH(ƒ(+ˆB¼+$6˜‡9˜÷À \A0¼+¼@0+ˆBˆÂ ¼³¼€6ˆÂ6 (¼@,¼ÇBôÀ C,˜¿0Ì@@à ôÀ ô@ LÃmO:¥Wz< ',;Ð-Ѓ;Ð;¸=¸CE¸;¸Ã<ÐTÄ==°ÃAƒ;„!±Ã<¸=¸==þÄ<@==°=ƒ;Ì9°CŽº=°3àà ŒÀ Œ@X€aoƒ($à Ä ˆÂ $ÃÄ[‹$à ˆÀÀ ŒÀ pX@aÀabÀaÀ Œ€˜‡õ€ùö°õ€ù„õ„õ ö¼€(䃌À L+ô@ô€àdÁ@AÌ8:ÃÌ@Ã@A0”+A0A08ƒÌh‚(°B0A0Ð0ˆB0@нÐ=ѽÑ=A0ÄB2\A0Ì@0Ì(°B9+@°0CPƒ#Øx,À@þˆ‚@A0Ì@@Á$ÄB28 @ @#L?XºÞï=ßS';¸3ƒ;T=þ<¸==¸9Ð9Ѓ;°ƒ;°Cà³=ÄCdÐCà³9̃;°9°Cà“ƒ;Ð9ÐCà“=¸9Ð9þ<>;¸=¸;>;ÐCà#>ØxØxÌÀ Ì@¼@¼+\A0+¼€(ô++¼À ¼€6ˆÂ6 ÁˆB2¼€‡Øx¼À ô€÷€¿À ôÀ ¼ ô€÷À ÷@øÏ@Ì@Ì@ô@¼x1£Ç‹=^y1ãE3z¼˜ÑcFþ=ΘqÆ‹/‚|ñ°Ç‹gô˜Ñãa3‚ôxÈŠN‡ÓXAÁbÄ”"fl@Á%H V±AQŠå ¥X”bQ %ÈT(X°\¹bÕHW#PºBé ¥+”®PºBé ¥+”®PºBé ¥+#Pº*ÕjJ©XŒ`á{Åj(Xøb‚ ,PDšj„Ñ´—1gÖ¼™sgÏŸA‡=š4h!ž¨‹‡Ì]¼yäÜ‘£çÎÝŒ8±âÅŒ;~ ™±EKè±CæîåBvôȹ£ÇŽ";µóÈMŒØœ»yä’c7‘Er þɹ£ÇÎ9wäè¹tÇÎ] ÒŠt¤$-©IOŠÒ”ª4¥BàDÜÁ[¸ƒî  =Èázƒ ™‡;膃î GCÈAw°ƒÜr =ÜAŽ†Ìƒó`ÇDÈAvÐÃä ‡;âáŽy°ƒä ‡;È1fÌc"äh9èár¸CeÜB;:ްîà@7,ð üâ îˆGCÈAvÐÃôþhH<ÜÁz4„î =B†ƒ¡‡;â1vƒ !ÇBÜáwÌ£!äh=ÜÁwÃäp9ÜÁކÄc"ôp;ÈAwÄc ¡;èAz¸ƒ!Ç<ØAwÄÃô =È1rЃY'â1f¸c.I ª1Œj c"ôH„Awpc 1`9j0 ¸cÝX‚hÂŽn( ÐÁ8²ÀŽ#¸£äp=’ƒqXÀ+˜H7„ÐŽãêè€8®¡ƒˆ¸#ä Ç<ÈAwÐÄä ‡;ØÑSd` áÈÁ.~ñ…œC ÝÈÂ<8¡hÁê°þÀÑ,ä€ñȰw´c©˜GCj H‚ L>V æ0‹yÌd³H±äà4áô@ô0ìàó@ôà 1óàä@ A  Aô@î@äàóàô@ñàô0* AìÐä0ôàìàóÐäàô@ôàä@äîÀä Áó@î0î@äî@óî01 ôàì€ ™Éw° Õàôàœ°Kôà¡°ìàôàôà>Èñ@ìî@ä0þôÀñÐà@àôàì°ìà.AäÐ41ôÀñÀ Aì@.áôÀôÀîÀî0ôàƒî`î@îô0äÀô0î@îÀñÀî@îÀô0ñà.á.ÁôàäÓÀŽŠ  ª «·ž° AôÐôÀ-ì@ 1ì@ñàäàä0óä°ìÐAñàôÀô@ô0ä@îàôàìàñÐäàìÀ ó@ñÀä0îî 2 14á41î@ Aî@ôÐó@îä@Aþî@î@A áñàóÀäÐ4áä0 1Aîà Á-ä@äàñàì@ñ@ôàä@ó@ôÐñÀî@ä@ Aô@ôÀ Aì@ ±ä@äÐôàôÀôÀä@ì îVø@ Aäàä@î``ì@î@1î@îÀ Aäàô@îìЧ¤@îÀî@îîî0ä@áä0ô4Aìàì@î@îì@î@îî4á* äÐì@î0ÜÂñÀóþÀüóàñ@1à  б«±ç(œ ôà¶@ó@ô@î@ä@ä@äÐô@ô@îÀ ÁóÐó0ô@îà Áô@î@ì°.1ô@î0î° Aóàô@îÁ ø@äàôàñ@äÀ ÁôÀî 2ìóÀ áƒî@ì@îîÀñàä@äàì@îÀ ±äàä@1î@î0îÀAäàôàìàñÐô@ì@ì°ÁAî@ Aôàì@ô@ Aî@äþîî0ä@ô@î@ôàìàìàä@ôàäàÓàƒ*Ã*Cäà 1ì0ì0ô@ìÐìàìÐì@ô@ìôÀ A Áî@î°äŠô@îÀîÀÁó@î0îÀ*ãóàô@ô€!ôÀô`ñàôàñ@ä@äà AóÀó@ ÁôÀ Aî@äÀ±à0 ëÂ/ Ãÿ°žîÀÌ@ôÐì@î@ä@î@îàôàóÐôàä°ä@ä@äÐóàñ0Aäà.áñ0þîÀ.Š.1ñàìàñ@ áÈ0 AîÀôàñÐ.Ñä@ A Aî@óä@ìàìŠä0ì@ôàôÐñàóàäÐñ@ô@ Aô@ Aôà áä@AôÀî@î AÜB1î@ A AôàóàäàäàñÀîÀî@ áäàä@î 1ì0îÀB 1 î ¥ Aô@îîàô@ô0î@ôÐä@óÀôÐóàìîÀî@ÁÂä0ì0îÀþñî@ìüØä@î0ä@ä@äàìÐ4AìàäÐ*Ãî@ôÀî@ Aî@ô0ô@.Ñôàôä@äÀî@‘1 ÔAÍŽBà BÐÈ0Ññ0ôàóàä@ìÐ áôàìàì@ì@ì@äÐôàóîÀô@*Ó.Áñàô@ AîÀó@î@ìÌ€ìàäàäàìÐñ0 AîÀäàô@ñàó@ì@Aáì@îBì žÀî žîî@ô@ìàþ áäàäÀ Á 1Áî@äàó0ì@äàô@ì@óàä° îÀó0ôàäàôàñÐì€!ì0î@ä@äÀ ÁÓàƒîî@ä@äA áä@Aî@ Aî@ä0ìÐô@î@î@î@ä@ìàñÀô@î@ä0RÚó@ì@ì°ìàô@ôàì@ôàô@ìàóàô0äàóÐô@î@A A.î@ì@ä@ìÐóî@.áôÐôÐñàà0 B­þå[îzBÀ K@î€ ä@î@ìàä@î@î@ô@ä@äÐñ0óàó@ôÀôÐäàôÀ AôÀAä@ óÀ Áî@óÀ 1îì€ øÐôàñÐôàì@ä@~`Bà î@ôÀä@äàä@ä@äàä@ î0 ÁñP J Ìàî0YÀîÀîîó@AîA Ñì0ô@ôàä@äàôàä@ì@ì@î@ Áôàì@îÀîÀ ±ä@Aäþ@ì@ôÐì@ä@ó@ô@ôàIÀ Ìî0àp · Aì@î@ä@ AôÐä@óàôÀêÀ äàôàä@äàôÐô@î@ôÐä@ó@óÀî0 რAî@îàî@ô€!ô0ñ0 Á¡ž@ä ž` Y@óàäÐóÀä` ä0ä@ä@ì@îäàì0ä@î\.øƒ_zKÀ BÀô€ îÀ AAäî@ä@î0ÁÜBî@î@î0B AäÐôàìàþ4Ñô@óàñ@î@ì@äÀôàñ€ øÐôÀôÀî@äàô@ê` AD J0 ,àZ@ \À®K  DJÀñ0 À 'Gð ?À\ð  ìàìàô@AäôÈÍcçŽ9zîæÑ#玞;zôÈÍ#çÎ]<‹îȹ#çŽ=rîÈÅ‹çn»yôØ‘sGœ;r-ƳHœ;zé‘ËHo Nìâ]£—‘Ý-1ôd’s‡ €ÅxÜ„Ä`ç.=rîè‘cæÄ=wœt(⊹yô,:‰èŽ\‡q`q˜`vr‡ƒ‡ƒ8,>¬ƒ&qrv þf‡ƒqvh`q ‡Ã‡ƒ8,p >pxSq°ÐÃv°Pq°ÐÃq°qxdxb(Žb)žb*®b+¾b,Îb-Þb.Æâ%ð„$ w w`‹˜‹˜rˆv rˆw vpz z w r`w ‹ rpr˜w`w v r r˜‡xpr`w˜rÈz vˆw/‹ˆ‡ŒˆdÀ‡xpvˆˆƒ`r r nP€0vèr8n°và€sÈ‚v‡Pø‚1H…kh‡ ‡p‡ðÚ€Nx„/qø˜‡q°qàw8þ‹ v w r˜‹ r rv rpv0$z`z w rpv w ‹ w v v˜‡Œ z v r rp‡y ‹ˆ‡Œ r rpvˆ!N¯i˜‹`‡xp‡ypv ‰x˜‡ˆ z˜zȈx v˜‡x˜‡Œ w w zÈz ‡x˜zp‡xp‡y ‡yˆw w;w`w r;r ‡yp‡xp‡yˆzȈ±sz z˜‹ v w`w˜w˜wˆw ‡±›zp‡yp‡x w`‹˜‡ˆp‡¶&‹ ‡y°þzp‡x ‡Œ˜q`†|HlÅ^lÆnlÇ~lÈŽlÉžlÊ®lËŽl} NXw`d ‹`zpr`‡y w wˆvprȈxp‡x wˆ‹˜‡Œˆ‹ w zp‡ƒ w`z`wˆ‡y`zˆr ‹ ‡y`wˆ‡yp‡y`‡Œ`f v ‡Œ ‰Œ wè†%˜† ‡Pƒ38‡ˆ‡%H-¨‚,Ðqp‡qh€38‹ˆ¸tX*Ðw‡%˜p‡yˆw`‹ˆ‡Œ r r w˜w`z`zȈxÈrˆr rprþpzpr w˜‹ ‹ rprpr ‡y°ˆxp‡x°ˆy z˜‡Œ zprrprÈO`‡x`‡i ‡ŒˆˆŒ v rpr w8zp‡ðrr`z z zÈrˆ‹ zpv rpr rp‡y8‹ z v r w rp‡y°ˆð¢r r˜r v ‹ˆw ‡y w8z˜z z°zÈq w zpvȈˆ w zprp‡y zpr ‡Œ ‹ zpph‘vb/vc?vdOve_vfovggvzXþN‚y Z z w`‡xpz°ˆypv°ˆxÈvp‡ðrv°z`‹¯Œ ‡ƒ˜‡x°ˆy°r`‡Œ`z vȈy`z w ‹`wˆwh|pr°ˆðr‡y ‡Œà!`‡Dȃ#Ђ-8‡%*Ѓ38‚%¨Øw8‚$Øw¯N°€kð%‡%ƒ%ˆ†%` ‡ðÊz`w r r°r v°rpz w`‡y¤‡ƒ rˆw˜‹ ‡xpz ‡Œ rpvp‡yp‡y z z`w r°ˆypz`w`‡xp‡ˆ þĘwˆv ‡y w`‡i v°r vÈr rˆ‹ ‡xpz ‹˜‹ r rpz zp‡ƒˆrp‡y zpvp‡ˆ`zˆw ‹ ‹˜rprˆv z˜‹ rˆ‡ˆ°Pz vp‡y$‡±srpz z`w`r ‡ypr w rpv°r rˆwˆvˆˆƒ r`w rp‡ˆ ‡ˆdZüÏýßþïÿŸ%€p'ÄÓrîÑs7Ï9zäܹ#G¢;vôØÑ£oDvôÜ‘£q;rôÜÅsGErôè¹þ£GÑ]<ˆäèA$÷Ò;zîØ±s‡lž;zîÈÍsÇŽ^ä¸3;ôPÄ=î°C;ñ°CÎ<уôp9^ârÐÃô ‡;âáŽÁÐÃì =€âv@„ôpÇ<ØAˆÄÃô Eèáz¸ƒô =ÜAvÃôx EâAzP„a‡¯èvÐÃñ€=|5vP„/a‡;èÁŠÃäpG<(Bz¸#î D˜Aw`â ÒøÇ!žrþ̃5`=Ô! wô\.²@ uü –PÄÒÑŽ0œ!: ‡;ÈÁ%°ÃI Ƹ9Ð9@9Ѓ;=¸C<@Dă;¼;@ÄK =þ=°ƒ;Ð9¸9ÐDÐ;¸9Ì)DÃKƒ;ƒ;DÐ;PD<¸9ă;Ð9ÐÃ`@9̃;Ѓ;Dƒ;ÐDC<¸=°DÐDÐ9¸=¸Cx¹=¸9ÐDƒ;Ä=ƒ;Ð9¸=¸=ÃKéI…;Ì9¸;ă;Ð;¼EÐ9Ð9Ð9°Ã4ЯI;lÂïBB5¸;@;;ÄÃ<¸^<°DÄ;ÄÃ<¸9¸Ã<°C<¼9¸;¸=°D°ƒ;Ð9¸;¸=C<¸==DÐ9PD<@;C<¸Ã<@þ9¸;;Ѓ;ÐEÐD°Ã<¸=°=@;¸=°C<¸ƒTP=@Ä`¸=C<¸;ˆ2„m‹ð“p ›ðƒÃ «ð χ;ă;̃;'d;ÐC.¸Ã<¸ƒÄ¯¹;̃;°ƒ;°9ÐC<¸¯¹Ã<¸;¸; EÃ|ă;Ѓ;Ѓ;ÐDÃKPÄ<°ƒ;Ì9Ì9Ѓ;Ð;¸C<°9¸C<¸=P2ä; é‘CØ’ƒ;Ѓ;ă;ƒ; =Ì=¸9Ð9Ѓ;ƒ:pDÐÃ<¸C<¸9¸9ÐDЃ;Ä;EÄÃ<¸9¼þEÄDÄéÅ;ƒë‘=¸C<@D¼‘^HDÐ9ÄDÐ9Ð7(€€éÑ;ÄÃ<=ÃK=¸9T;C3@=ÃK@Ä<¸;Ð9¸=C<¸;¸;¼E°9¸;¸¯Ñ9°ƒ;°Ã<Ð9¸=°ƒ;ă;ÃKC¤¸=¯¹=;P=¸C<Ð9Ä≠Ã8,AÐ;¸C;x‚;tƒ,ÁÌG<̃@;¸C<¸Cæñ”œ¬èa'«xÈ¡‡¬ÈÉŠvèqgœ² FOرDOrp—,P 'wtP¤w,iç5H!Ç-PPÇKáCœvÂXdyÈÉjrèÑŠwØáf wæÑv: 'l,h'ƒv:Hgšq²`'‡tÆ¡bŒTÈgr8 ‡*­Øq'rè!‡wØ!‡Î:¥‡rÜ¡‡œ¬Èq'wèÉŠwØqgž¬æ™'+vèq‡wÈq‡wæÉŠzÜaLJ²H`-|H'+s¶ ‡›%vËÁn¨ðþ!vLHgšq–pgž¬â™fræáÌvâaÇx8s‡¬8ãÌÎèÉŠ¬Ø¡'«yg‡ÎÜáŒw8sgòÃ=¥§SÎè9ÜvÜa'+vÜa'«Ãçq‡³xØq‡3ww'wâa'+vÜáÌzÜaçSO9Ë*v´rèq‡zÜ!‡wÈ¡Çrèq‡zÜ!‡wÈ¡Çrèq‡zÜ!‡wÈ¡Çrèq‡zÜ!‡wÈ¡Çrèq‡ôp9èárÐÃä ‡;ÈAwƒî =ÜAz¸ƒôp;è±z¸ƒôp9èárÐÃä ‡;ÈAwƒîþ =ÜAz¸ƒôp9èárÐÃä 9èAzdeb‡8!z°ôÈÊ<âÑ©x¸ƒî GVØAw#+ñp;Ü w#ã°820Ž,ÐçÈ‚ ÚÑr8€Y‰)B‘œäXA;2@Œc 1ØÅ/¶0†T„¢ùÈ =²Bz°Ãì˜;Ôቬ˜‚ìÀEr1ŽdñPFðÐO°C\†'Úñ‡,Ã\DVØázÃ옇VèáŽx¸ƒÅ£9ܬÐÃô`GVØ1r¸ƒî ;èAš‘#+ìpG<ÜwЃî þ‡;èAwàñ°D8<¡Œ,hÃíð;Ô‘„,lÁìh‡'”‘…p(# xP‡'hFÎ0£¡Y‰;âAvÌÃSñÐh<Ü­ÐÃSô =ܡѬÐÃ숇Væwl”ô˜‡;Ø¡zÃô ‡§4ª•yÃñpG<²y¸ƒì˜G<ÜwÌÃôpG<æáv¸ƒó ‡;âáÒƒô GVØázd…î ‡;4švtjâ`†;hFš‘ƒfä 9hFš‘ƒfä 9hFš‘ƒfä 9hFš‘ƒfä 9hFš‘ƒfä 9hFš‘ƒfä þ9ØAwЃî ‡8ÜA3rÐŒ4#ÍÈA3rÐŒ4#ÍÈA3rÐŒ4#ÍÈA¬ƒäÈ =ÈáŽy¸c žXBV˜áv¸cô =ÈA3rÌÃóðÔ<ÈA3wÄôp=Ø1ŽÄCãXB@²èÁÈaðÈÁèèÁè!+è貂ÈܘÜa7âÁÈÈÜØÁØØÁþèèÁè´‚²bÜ!ކÈèÁØ!+æA+æ²b‚#Î’Ó€#Î’KŠCå4DŠŽ8DŠC¤8Tú(&‘Óþ€3 ‘bŠNš>‚³#8i‚3 ‘ÓøÎ4DŠ38àˆ›>‚³ã’″#8äL³¤˜àLC¤8DNÎŽäLC¤8DŠCåŽDN³¤8àìÎŽàˆŽ8àˆIŽ8TŠC¤8àìŽ8ÓÄÃŽ;ñÄC˜;ì³+;ôÌCX®ó¸3Ï®ì¸Ãή»²C9¼‘C;ìC=îCÏ®ôÏ<îÐCX<îÌ3;ó¸ÃŽ;ô¸C;äÐã;î̳«häF=îCaä¸39ô¸C=äÐãN<ìÐC=îÄC=¢ÆŽ;ñ°ãÎ<ì¸C9îÄã8¹3 ‘>NC¤Óéã4þDú8 ‘>NC¤Óéã4Dú8 ‘>NC%‘>‚3 8;R)‘léã4Dú8 ‘>NC¤Ó &‘bR9 ‘â(!ÂØ/ˆð‚À¨öÚl·íöÛpÇ-÷Üt×m÷ÝtO3Ïaììj.=ìÐCŽ;ôˆÃ;ôC9ì¸;ñ0K;„ñ&Ú<îãN<»’;ä¸C9ôC;äìÊ=ìC9ÌÆ›;äÌC9„Í“+=äÄC=îã=îÐC9ó¸C9îÐCŽ;ôC;ñ¸CO<îÐCŽ;ì¸C9»Æã;îÐÎ+Çà­¾ÝǬïþÝL ÿü€…Kd!ÄþKd!ÿKÈ„Àp BXB„À,Pü³„%á€Bø—!ð/ KÈÿ„°!,Aÿ„°„,Bˆ!³À¿,! BXB˜!,! K²°!0 B` ˜ .! ̲ „%dÁ‰Ì…À?!,! BÀ`„°!0 ÌÂ<ñ Z¸‘¯ˆ£_A‹8ÒbŽ´xÅ_A‹9ú1ŽnŒ#-^‘‹WÐâ´ÈÅ+hGZ¼‚q¤…iGZ¼Â”#-äH‹?Ò"s¤Åi!GZÄ‘™œ£åh 9æâ´ˆ#-ø°„,,AYBø'„,! üB„þ ! BÈÿ„!dBÈ‚²À?!dAYàŸ² „,ðOYB(„,0 üË‚0(„%! 1䟲 „,ðOYBø'„,! üB„…fAYˆa(„,0  ;libjibx-java-1.1.6a/docs/images/eclipse-run3.gif0000644000175000017500000232755110350117116021311 0ustar moellermoellerGIF89aÔçÿ   ,„! ;& 5 R#0!ž%%" #u0$%*0/‡&&U,l` U"$3I345.¾1¨E6*<Š<=;Q%‹c4"B—/F\ CŸ+ODG¯$GŒ/J¹#P}ZD2}9+J !T‹t+Š'M¯xDË)PE;Wt Z¯+R¼6S¤7Q¯1W´%_­(b–*kz†O >[¦%g¬@Y²¤G<_·µ;0Kc‚(Cv[DhaO,l½Fb­8eÐIbµ…^:7t³c(^CTlPj·Ol±Ft hmlcgœŸ_$rc©OoÍ›T’¥klq…}sMjl«Ø‘IÇ’t憵oª•ᣠ€Ë(©±Ó™e‚Ï&h¼Õ¥§¤±§‰­¦ž¤©¬Œ«ã˜¨Ôæ¡%Ž±Í®¿Ñ¥g¹¯uʤ…̦v‚¶íÔœªÉž¾Ê®hгRpËÞ¥³ÓȤ̹µ¹í¾¬ËŒœÇÜŽËñ³¿Ú¾À¼­Í²¡ÇóÜÅ`ÄÂÆÜ¶È¯Þmá·¶²ÉÛÛÊråÀæÊ]ŠÞôÇÉÅ¥×Þ½×§ËÊÎÛЃãÂ¼æÆ£èÉ’½×ò×áöËvÏÑÍßÓ™­ÜøÚÐÃÐÓâáתÒ×ÙÉÝãÞÙÂÍßÒàÛ¸ÙÚ×öß}ÕâãåàÅÜáäßáÝõ哿ÝêÁïùäãÚéäÒòãÂóê¨åçäõé±Òïüßë÷çèóèêçëîêïñîýõ´üòÇäøýúô×÷óæîôúõòøõ÷ôôûýüúïùûøÿýîþÿü!þCreated with The GIMP,Ôþ= A° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲeÈ B ›9L×L]3uÍÔ5S×L]3uÍÔ5S×L]3uÍÔ5S×L]3uÍÔ5S×L]3uÍÔ5S×L]3uÍÔ5S×L]3uÍÔ5S×L]3uÍÔ5S×L]3uÍÔ5S×L]3uÍÔ5S×L]3uÍÔ5S×L]3uÍÔ5S×L]3uÍÔ5S×L]3uÍÔ5S×L]3uÍÔ5S×L]3uÍÔ5S×L]3uÍÔ5S×L]3uÍÔ5S×L]3uÍÔ5S×L]3uÍÔ5S×L]3uÍÔ5S×L]3uþÍÔ5S×L]3uÍÔ5S×L]3uÍÔ5S×L]3uÍÔ5S×L]3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.þ3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“þ.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3é2“.3éâA§Ì¢ËðÄoüñÈ'¯üòÌ7ïüóÐG/ýôÔWoýõØg¯ýöÜwïý÷à‡/þøä—oþù觯þúìÂ,ð—ÿü¥Ì)öÏRJþ¥ä_Jþ¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"þ¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥þÈ_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥È_)òWŠü•"¥˜JÁÓžòt>-Å,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³þê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³êþ,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,‚:‹ Î"¨³ê,|ÊIL¢†Nt¢gA‹FûÁuðƒ¡èJ[úҘδ¦7ÍéN{úÓ µ¨GMêR›úÔ¨NµªWÍêV»úհ޵¬gMëZÛúָε®w-ê4â×ÀnD ~‰r”ƒ™¨C¾…,|á ÀD°ñë@;Áįì@;¿°ì@ü:ÀD°ñë@;ÁįAŠ|4Bûv ‚ˆ_Øv ~`"Øøu €ˆ`â×v ‚ˆ_Øv ~`"Øøu þ€ˆ`â×v ‚ˆ_Øv ~`"Øøu €ˆ`â×v ‚ˆ_Øv ~`"Øøu €ˆ`â×v ‚ˆ_Øv ~`"Øøu €ˆ`â×v ‚ˆ_Øv ~`"Øøu €ˆ`â×v ‚ˆ_Øv ~`"Øøu €ˆ`â×v ‚ˆ_Øv ~`"Øøu €ˆ`â×v ‚ˆ_Øv ~`"Øøu €ˆ`â×v ‚ˆ_Øv ~þ`"Øøu €ˆ`â×v ‚ˆ_Øv ~`"Øøu €ˆ`â×llðkllðkllðkllðkllðkllðkllðkllðkllðkllðkllðkllðkllðkllðkllðkllðkllðkllðkllðkllðkllðkllðkllþðkllðkllðkllðkllðkllðklll¿‹²‹Š ´`lº0 ~ðYð@P_ ³8ŒÄ¨û ĘŒÊ¸ŒÉ¨ýÐûÐù`˨ÿ0 ÀŒÜHŒr@ íýð׊ðŒûÐïp ‹ŠÐ²Ø ù0 ÝXöxø˜ú¸üØþø9Yy™ ¹ Ùù‘oðrp‘Y‘F º@ ™ð_55@ðyo oprðyþ©û0o g o gðrpo oprðyo gðrðg op‘gðrp©û0°•`gðrðg ©ý o, op‘gðrðg op‘gðrpo oprð™‘õ  %à  û0 %P üo@ý0rÐ ýðrðrprðrpo gðrðg op‘gðrpo oprðyo gðrðg op‘gðrpo oprðyo gðrðg op‘gþðrpo oprðyo gðrðg op‘gðrpo oprðyo gðrðg op‘gðrpo oprðyo gðrðg op‘gðrpo oprðyo gðrðg op‘gðrpo oprðyo gðrðg op‘gðrpo oprðyo gðrðg op‘gðrpo oprðyo gðrðg op‘gðrpo oprðyo gðþrðg op‘gðrpo oprðyo gðrðg op‘gðrpo oprðyo gðrðg op‘gðrpo oprðyo gðrðg op‘gðrpo oprðyo gðrðg op‘gðrpo oprðyo gðrðg op‘gðrpo oprðyo gðrðg op‘gðrpo oprðyo gðrðg op‘gðrpo oprðþyo gðrðg op‘gðrpo oprðyo gðrðg op‘gðrpo oprðyo gðrðg op‘gðrpo oprðyo gðrðg op‘gðrpo oprðyo gðrðg op‘gðrpo oprðyo gðrðg op‘gðrpo oprðyo gðrðg op‘gðrpo oprðyo gðrðg op‘gðrþpo oprðyo gðrðg op‘gðrpo oprðyo gðrðg op‘gðrpo oprðyo gðrðg op‘gðrpo oprðyo gðrðg op‘gðrpo oprðyo gðrðg op‘gðrpo oprðyo gðrðg op‘gðrpo oprðyo gðrðg op‘gðrpo oprðyo gðrðþg op‘gðrpo op™‘! dÉ’Lg@ ÀPÃS ™à€W€Wp‘|g@¤|dpdpÊd°ý0b í€ùð~ðpb@Êtð§\ ø°ïà§|dpdðÅ|d°ÿ0“Ld ½àû€Ë@bðpü@k°½àîp ¤ü­àø°Ëpʽ€ùp gɤ,t‘l @ÿ0‘|Fp ÅŠðÐ ú€‘|Êdpdð§LÅLg@opÊdPÌdpdð§LÅLg@opþÊdPÌdpdð§LÅLg@opÊdPÌdpdð§LÅLg@opÊdPÌdpdð§LÅLg@opÊdPÌdpdð§LÅLg@opÊdPÌdpdð§LÅLg@opÊdPÌdpdð§LÅLg@opÊdPÌdpdð§LÅLg@opÊdPÌdpdð§LÅLg@opÊdPÌdpdð§LÅLg@opÊdPÌdpdð§LÅLg@opÊdPÌdpdð§LÅLg@opÊdPÌdpdð§LÅLg@opÊdþPÌdpdð§LÅLg@opÊdPÌdpdð§LÅLg@opÊdPÌdpdð§LÅLg@opÊdPÌdpdð§LÅLg@opÊdPÌdpdð§LÅLg@opÊdPÌdpdð§LÅLg@opÊdPÌdpdð§LÅLg@opÊdPÌdpdð§LÅLg@opÊdPÌdpdð§LÅLg@opÊdPÌdpdð§LÅLg@opÊdPÌdpdð§LÅLg@opÊdPÌdpdð§LÅLg@opÊdPÌþdpdð§LÅLg@opÊdPÌdpdð§LÅLg@opÊdPÌdpdð§LÅLg@opÊdPÌdpdð§LÅLg@opÊdPÌdpdð§LÅLg@opÊdPÌdpdð§LÅLg@opÊdPÌdpdð§LÅLg@opÊdPÌdpdð§L§Lg@g@§L§,d˱T0ïô>T0´@ ú> ¤Ð“lÐT0A@ïðkÐ0S€ð¹ð ó¾˹P 0b€@¹ð Apðó¾¿þù0"Ÿ ç@'€kð°ü0k°xP «°S°a0p0Õ` !@¹° S`ðSP«ÐW0b@Zð0TÀðtÀ ù0 ÷ÐS òó>hðK°öô¾n?ïK÷T°t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿tþ¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t¿t?ÿTKÀKÿK@K ´`Q'ËÀ/5 ‚˜p •% y4äцZþ XDJ ZÐMXR­%õ\LXD  ZìMXÂc †ANl¨å ah¡ p@$Ѐ haHA¶Ò„  ÿ€ö ð@ û(à0 }”#@ÐÂ>Æ‘DwÄ£+Xð€œ‚9ÐÂ>Àƒ­¬áÐB?.ÐWð áK–°°„@X$WÈ ,A–[á–pK–ðKà%xþ„%“@XB0y„%“@XB0y„%“@XB0y„%“@XB0y„%“@XB0y„%“@XB0y„%“@XB0y„%“@XB0y„%“@XB0y„%“@XB0y„%“@XB0y„%“@XB0y„%“@XB0y„%“@XB0y„%“@XB0y„%“@XB0y„%“@XB0y„%“@XB0y„%“@XB0y„%“@XB0y„%“@XB0y„%“@XB0y„%“@XB0yþ„%“@XB0y„%“@XB0y„%“@XB0y„%“@XB0y„%“@XB0y„%“@XB0y„%“@XB0y„%“@XB0yÀ°$KØÊP9‘%@29@î rpƒä@™ Å¾Àƒ` ! Á rpäÞ¹7@n˜›&äcBØG € ü#9B;2pŒN$ ;ÀG € ü#9¸Axs€€9¸A˜Ð¤)HAˆÐ äáeB?À„~€ÿXrÁ` wx‚=H°ƒ~,@@ŒéÓ8Ó=÷=ó=•³=÷¡7˳}sþaþA91ôCÝ8Ýs@7÷áö¡D™8ÝsTôEq8at:÷Á7•37˳=•>÷=“9÷Á=÷¡=óE37÷Á7ó<³7÷áö7÷7•Ó8•Ó7˳737Ëóö7³=³7÷áö7÷7•sFatØsè3ªì`ÖáNïÖÄaàAðtàAàAàAîðÄáNáAîÄáNáaàAþuàÄ!S=5S7UîÄáNáAÄaàAîÄáNáAî>µVmuSÅáNáaàAîÄ!SáAl5SáAîÄ¡X=ÄÄYñÄ¡XáA2ÄÄÄ!PáAàA¤5PáAàAÄÄÄÄÄO7UÄ¡XáAàAàAîðÄÄá\×ÄáNáAÖSáaàaàA˜<ðÖÄáNáAàAàAàAàAÄÁVááNáAàAàAþÄÄ!c×ÄÄ!PáAàAàAàAàAðtSÅ!PáAŒ¶k3ÄÁSáAîÄÄÄÄÄO7UÄAZáAàAàAÄÄÁháAàAŠuSÅÄÄ¡VáA¤Ä!Pá!cáOáAluSÅ¡XáA2Ä¡VáAîÄÁSáAîÄO7U<ÄÄÄÄÄÄ!S7UŠÄÄÄÁSáAjÖÄÁSáAàAðtSÅÄ¡VáAî<2uSÅÄÄþÄÁSáAjÖÄÁSáA<ÄÄ!PáAîÄ!PáAàA¼ÖháAÄÄaàAî4ætòÄPÄPÄÄÄÄÄÄÖAàA6UàaàAàAàAàaPÄÄÄÄÄÄÄÄÄÄÄÄÖAàAàAàAàA6U6UàAàA6ÄÖAàAàAàUáAàAàAàUáAàAàAàaÄÄPuSÅÄÄÄÄþaSÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÖAàAàUáAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàaÄPÄÄÄÄþPÄÄPÄÄÄÖAàAàAàAàAàAàaÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÖAàUáAàAàAàAàAàAàAàAàAàaÄÄPÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄþÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÖAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàþAàAàaÄÄÄÄÄÄÄÄÄPÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÖAàAàUáAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàaPÄÄÄþÄÄÄÄÄÄÄÄÄÄÄÄÖAàAàAàaÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÖUáAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàUáAàaB`NàÄÄaSÅa×XàAàaàaÖþUáAàAÖPuàAÖUµ_àAàAÖXàAàAàAàAž8xâà‰/¡¸„ðÄÁ[—PÜ:xâ\ï Æ±Žƒäc¦ÎÇ8Ö‘m^çcÉÇ8Ò-lxˆcðu>Æ‘î|ŒÃÔð6<ıq¬ƒþ×ðÇ:êÍkxˆc¼†‡8Ö!ŽuˆcâX¨á!Žu˜:ã€7<ıq¬ã ð05<Ä„‹#ã8H>ÆqxÔð†‡Êƒ qÀã ð€7<‚ PÃã ð5<ıq¬CëÇ:Lqd †‡8Ö!ŽuðâXÇÍq¬ƒ×ðÇ:ıq¬Cë5<ıSçc_¯;¯ó1Ž`çc †‡8Ö!ŽuˆcâX¨á!Žu˜:ã@8<ıq¬ƒ×ðÇ:êq¬#ÝðÇ:ıq¬ÛùG½ó1SÃãæðu>Æ‘mxˆcéÎÇ8T^çcþØÎÇ8’q;ã8H>Æjxˆc†‡8Ö!ŽuˆcâX‡8ÖÁkxˆcð†‡8Ö!Žu;ãÀ6<aÃCë5<Äq¬ÛùÇAàlxð 8Ö!ë ëlù0ØÁ–ã lð ë`jù0‘ãÀkð ë`w_—ãÀkð ëpðpë?!9Ðö3´Ô ð@ â?ãñ#ë?ã?â?ëà?âÀ@Ôð@ à?âë?ë $ë?ã?â°ð#K?âà?ãë?ãà?ãþJ´â?ã  1´s44þ#´ð° ´öC Cë°@ëà?ëà?â@ã Bëë`?â`?ëë BÔë ð3ñ#*$$D  Bââ?ëðAâ@â?â?ë?ëà?ë@ãàAâ?ëë°@Ô7D ?ë°@ëà?ëà?â@ãÐJÔt4 ´â?ëà?ëà?â@ãpCëë°@ëGë Bâ?ëàAãCãà?â Dâ?ãàAâ Bã Dâà?ãÐAë ð3 ´â?ã`?âÐAë°@ë°@âþCëëÀ@ãÐAâ?ë°@ëà?âëàAã?â@âà?âë?ëÀ@ãÐAâ?ë@ãÀ@ë@ë ð3´`Cã@ë`?ë?â°âM9ÿ?ã°ð0ð°ðÀ À•Û ð€ ?ã°ã ñ#ð0ð þ#ñà \907à?Ôð€zØÀâ?âã°ñ3?â?âãà 0PgàAë°@ëàAâãã0âãâ?ã°ã öà t%0 ëã°ñ³ð â Bë ëþ€ 4ð°âÀ@ãë ñà €ã?Ìâ°ââ`?ë ë ñƒz Bâ°â?ØÀâ°â°ââà?â?ãë öã 0Pg°â°ââ°@ââ@ë@Ôñ³â DÌ@—Pð*„z0GØÀù0GÌ@—Pà ð³â°â°â°ââ?ãâ By0ã ð0 ðC €z 1D â°â`?ë ë ë ë ð þ#ð3ð°â?Ì0â?Ì0âÀ@Ôþ74ð°â`?ãã?ë ë ë ë ð þ#ð3ð°â Bë ë ð ö³â°â0Gë ë ´â°ââ@ãë 4ð°â†ãâðAâÀ@ãë u4ð°â@ãã?ë ö3ð0ñ³âà?â@ë ë ë ë ë ð  $´â°ââ`?ãë $´â°âà?â°â@ãë t$ë ë ð ö3ð°âðAâ`?ãë ´â°â?ã°ñ³â`?ë þë BÉ@ãë ö³â°â?âà?ëÀ@Kÿà™ùjð ãÀ  ž9ââ@ ãž ?ãâž ã?ããÀ ãà â°ãã?Ø ð0ù Ô ö3ù0?ð0ð ë?‰Ùp¢àž ãããã?ããž ãÞ0ðà™ð0ð3ù ñ3ù ðã™ù ð3ð0ðÀ pÖ0 0ð ó3ð ë@  ð3ð0ð0ð0ð ³ð#Ô 2 ãþãž ââÞãããââ?žI °€ã@ ?ëãž?ë?ãâããã2 ë?ãÔ ð³þ3?ð0ð0ð3ð ð ð0ð°Ö€{ ç r`?óãããë?ããÞ?ããâ@ °ãâããããããž Ìà0Ö0 ?ãÞããã?ãâ0ð0ð0ð0ð0ð0ð0ð Ô 2 ã2 þããž Ìa 3Àëà™ 4?ðà™ù ð0ð0ð0ð ³ð0ðÀ ð   ²0ð ;°â?ãããããâ@ `?ãžÉ@óãã?ãââ?ãÌããÌãããã?Ø ãããããããââããâ?ããÀ@óãã?ãââ?ãããã2k?ëãžé?ãããããã2k?ããþãããã`?ëãããââãããããââ?2 ãããããã2 ž™âãããž ã?ããããââ?ãããããž ããââãããâ?ë0ð ð0ð0ð ð³ãâ°ð0ð0ð°ð0ð ³´ð0ðà™ð0ð°ð0ð0ð0ð ³ö³ð0ð0ð ð ð3ð0ð ³ð0ñ3ðþ ³ñ³ð0ð0ö3ð0ð0ð ð ðà™ð0ð0ð0ð0ðã™ð0´ð0ð0ð ð ð3ð0ð ³ð0ð3ð0ð ð ð3ð ³ñ³ð0ð ó3ð ð0ðà™ö3ð0ð0ð0ð0ð0ð0ð0ð0ð0ð0ð0ð0ð0ð0ð0ð ð ð0ðà™öã™ð3ð ð !°@°Ðâ°ñ#ðâÀ jð@ 0Ô â°è€ Fã ð0?ù ðpðpù Ì0âþë ù áÐðqù@  0 à²ã ã ù ð°âãâ@   ëñâÛÐ FpÔ  † Ô QÀ Û€ 0â° H0`â@?ââ0ë ðpùpÌã0?¾âè€ 6âÐÐÝð   H0pàÐà â° -0`âÔ `jù ð ð°ââÌà0ÌâÝð   âA @þ pÛÐðq ù Ýð ðÐÐ ã° H0`¼¶ù ð ð°ùpð@   ñ“ã è€ 6jáð â@ pâ° -0pâ@ ° 0  – – –Ì0 æ @ pâ° -0`A pè€ 6jáÐ W вpùjùjùpðÀ 0óã Ô ã ë@  Ô À°É0ë –‘ââë0ð ãþ@ `Aç°Ÿ@  Ô À°¸páÐðq ã ÝÐ F ã  ð  ð0;jëââë`jÌ¦Æ pè€ 6 ã@  Ô QÀ`¦–âðÄÁ[—OÜAxó·NÜ:qëÄÁáÁuùÄÁoÃ| óÌwž8xâÖÌwž¸u ó1ÌÇ0ßÁ|á‰[—a¾‹âò‰['ž¸uùæO¼uùæc˜OqðÄå·n]>†ùæc¸î`>†þùÄÁoÃ| ó1Ìw0Cxâà­ËÇ0Ÿ8xá„·.Cxá„a>qðæ—OÜ8qëÄ­·N†ùÄÁo]>qðæc˜a>†ëÄ­Oܺ| ቃ·Ža¾ƒòžƒà9(qàžuÊGœ|ÄGx‚Gx‚g|ÊGœqÄY'†òa(†òa(†òa(†òaqàY'ŸƒògqÖÉGxêlÎBXâHþžq–„gœqàþaq–\‡Ä¡&xÖq…lЙqàqKœqàÇÉ%LJžqàQqÂÑ@€q¨`j€Ç-q–žqØ<žuÐQÀG–'xÄQq¬Ñ x¨ ÀIj‡šª€r`ÈæN–tmЙ·Äg'×qrœ%™@œuÎ"uÆqmЙx¨@xÄ g˜|¶™x¼q†lÎájˆGœ%U`ák4j¨B6á‡Mqàžq¨à ž€‡– gq¬™Á„xº xâQá jXRÄAGÖ'œaþä±fÄ¡F·ÆÉÇÀAgâÇÉuÄgÉuÐQ G–gqàqqЙ‡%Ó&kf l¨JxT`Aœs8‡šXÈæœ&pr'Çqr%Åaqà9Ѝ   (áQq¬Ñ x¨`I`xXR²9§x¨ qœ\ÇÉuœ\gIq˜@œu΂q¨@xÄÁ†x¨  (ó˜qÆqrœ%×Gx‚GÄ¡Äb&‡´¡Fx¨ Šƒò˜`IX ÈgXxÇ ‚§›Äñf’'ƒO؇MþqØdfqœdfqàqmЙx¨àl¨Bœq¸@ N›Ä±ŽxÁc tÒ8q°IN‡“Ʊ¤u,i \ǒƯq8iNÇ’Ö±¤qÀJNG¼Æ/(9iNZ‡8Öá¤q8il<Ʊ$q,iN‡“Ʊ¤uÀCð‡[Ä1'cIãHà8œ46‰ÃIãpÒ8œ4Ž%­#âX‡“ÆÁ&q8IëH 8œ$'A‰Mã€Ç:Æ‘ÂJKÇá¤qÀcð‡“ƱŽŠÃIãXÒ:à!ŽŽ〇8â¥|ÀJN‡“Ö!ŽuÀCþK‡“Æá¤qäqëH 8œ4Ž%­âˆ×8Ø$'PÊÅá$qŒcI뀇8–4'ÃIãpÒ8œ4'ÃIãpÒ:(Žq,iðÇ’ÆÁ&qÀCëG–ð àð<Æq,IÌÀpP#ë †ÖŽ$ã ÄH<Ö‘Àqˆã<ÄÁ ÀžøÄ6 qÄ#5°j〇8œ$xŒCñÇ8œ‘`¸XG8 xˆ# 5°$q`Câ F´‘q„cɇ“Â1€d„ XÒ8–$x¬Cðþ‡8–$fà@¢!Žp â€1°j`KÇ:ÂŒŒ£H†8–4j`IãG’qÄ¢â FÀá¤qÀCð<Ʊ$q,iÌ€8`!€d0#â€Ç8–$b`âPÁàÑ $ƒ€G8%ùBKÇ:à!f@Ô<ÜŽ$ã ÄHÀ’ÆqxŒ#^ã8<º `ÃG8Œƒ#ãÇ8Öq£ç F´‘q„#ÉXÇ’ÄA hCð`à1Ž|ŒãÈÇ8à1xŒcIâ`ÆÆ€œ‚ÐþÆ’¶1€dÀC±(€8¨!xlcÉ81p  Y5°¤q8ið<Æq8IÌÀXP€hÀƒXÒ:¨!qP#à85à¤qÀCðÇ)1x ç@€6(ÁqPCâ FÀq0ƒðÇ¢±xÄ"âG’|Ä"nÑÀ'¨1!bÐÆ:àqxŒƒâ`†=íé€@á@2BŒˆƒX5  pˆÃ €Ç8–4xŒëXÒ8à1xŒcIã<Ä1qÀCð›ÆqxŒ#^ãÈÇ8à1Ž%cIãÈÇþ8ÄqÀcKG>Æ!xŒâ€Ç8à!xŒâ€Ç8–4Ž|Œ#â€Ç8à!'cIãÇ8Äq,ið<Æá¤uÀcð<ÆqÀcðÇ’Äq8Ið<ÄqÀCð<Ʊ$qÄkð<Æ‘q,IðG>Æq,iñG>ÆqäcðG>Æq,iðÇ’ÆqÀCðG¼Æu,iK‡“Öá¤q,Ið<ÄqÀJâ‡8à!ŽqˆâXÒ8ò1xŒCð<ÄqÀCð<ÄqŒ#ãXÒ8þ–4'cIã`Ó8ÄqÀCð‡“Äq8 JâXÒ8à!xŒÃIëpÒ8ò1xŒcI〇8–4qÀCã<ıŽ%cIãpÒ8–46CðǒƯq,Ið€’8œ46ÃIã€Ç8–txŒâ€Ç8à!xŒâ€Ç8à!xŒâ€Ç8à!xŒãXÒ8à1Ž%‰ã€Ç8–tx''Y‡X XÈq€‡ƒXqXf€lȆe¸jq †f A p†€‡ƒ€qÈx‡|pf€ ̆ejqXjþx †Xjx'xXx‡%x8ˆ%‡u€k˜fqXfx †q€j x p q`8ˆq€q`†A pq‡|8x8x‡|€‡qXf€lX†PP4Èf8t€u €‡u‡Uøh€q ·x †€‡ƒ`€’|`†€j†€qpq‡|‡%9x XHjx‡Uø DX’X`p¨„ €jq †p x †xX…pJx †€qj8þt€q€qpqq€q‡|€‡u€q€p°†Hq`†€CÈxX…pJ q p q`8ˆuXj€uXl€ƒX†X‡ƒÈ‡ƒ‡%a†¨@qXp €‡ƒ`†‡%a†€jq`€Cfqpq †€‡ƒ€†€q€q€‡ƒ‡%aÈo@q xl x pjxx'ax‡qX’q`†Ð†ˆqPYP€jx €q€l€q †€q€jx`€’q`†þ€q ððX‡q`q€qx‡qXf€l˜†i@Xq`†€C€j€u †X’u †`xxxx`ˆ|8x8xxÈ'‡%‡q€qpq€qx8ˆu¸x¸ˆu'¹qXqXqpqpqp’‹qp x'x‡q‡|€qpq€qpqq€q€qpqpq‡|‡%9x''‡%‡|8xx8xxxXx‡u‡qX’ƒX‡ƒ8xx‡q€‡ƒX‡]þ‡]q€qqȇ…q€qpqq€q€q€q€‡…q€q€q€‡q‡|8ˆ%‡%‡|xx''x‡u‡qȇ%'‡%‡x‡uxXQxxqÈq€‡…‡ƒXqXqX’qpq€‡ƒX‡|€q€qpqq€‡ƒ€‡ƒX‡x8xx''xXQxxqÈq€‡qÈxXQx‡qxqȇƒ€q€q€‡q‡qȇq€q€q€q€‡ƒÈ‡q`qpqpqpqþpqpqpq€q€‡Íqp’ƒÈ‡qpq€‡qxx‡u‡X‚)X‚ø'‡%9ˆ|`†·jq †È‡p€hȇqˆ—uXÅ„(9ˆ|`†‡qp‹uÐq€bqÀ†Xj€%qÈq€qX’ƒp’uxXqX‡qð‡p€d€qˆ…lx8fq X‡|‡p€hÈq€q膈†…qp xX6’ÍfqÈxHІnm‡qXQj€u€‡p€S‡u`†X‡n€þdXx8jxÈq‡ˆ†q‡XHp †Xq€q€q€qX‡ƒX‡%‡u`†xÀ†€„‡pT‡u`€q@… p †X‡p€h€‡q †‡pTx`†j€%Y‡nm‡uXQ'xÈxx‘xxp †‡p€hÈq€·‡@pXf€u X‡% ‡ˆ†ƒ€q YjxX'Y‡%‡%ɇq‡|`†8ˆ%j€%‡n€d‡|ˆ…€jq‡ˆ†…þq‡Hxxj€%'xx‡%ɇq‡|`†8ˆ|€Ðlqȇq`jxp j€uxx‡xxq(xP€6`€u;‚øq j€%Yj€u‡Ðq€bq‡ˆx‡X(€%‰… POèxq€‡qxxÈq€‡ƒ€q`†8ˆ%a‡pm‡u‡u€jq ˆ·ˆ…Xq€qpqp’uXqp’|PLq€q€q€‡ƒpq€q€‡ƒX’u`qþ`“uXqH uXq€q€q€q€q€q€qH u€q€q€q€q€‡|€‡qpqXq€q€q€‡|€‡q€q€q€q€q€q€qX‡ƒX‡%xxxxxx‡ux uxxxXx8'Y6xx8ˆ%Y'Y'YxxȇqX‡xxxxÈxx‡%YqpqpqXq€·Xq€qXxx6'‡%xXx‡uq€q€q€qpqqX’u€qpqXþq€‡q€q` q€qp’…q€qXqXxXq€q€q€‡|€‡qˆ—u`qp’ƒXqpqXqpqXq€‡q€qp’|€6xÈxq€‡qX‡Êx‡u‡%'‡%‡ƒ€‡qxxxxxxxxxxxxxx'Yx€qX’q8xX‡%‡xY‡% %‚%€''f€ƒXx €j€qX`mkà„q€qx‡%‡%‡%foøÔqP*€þ‡u˜Xjq‡ˆ†ƒ€(Y’qpqxp jè‚_‡m˜€op‡mЀ‡qXI€‡s˜€jqx`l8‡ZX`q€kàxp x‡%xX‡|p’u`X‡q€‡sÈ€ `lÈkàx †xè†Hq8‡x€m8‡Z€‡p€hxð€pØ x ‡Z‡ZjxxÀxèˆx8‡q€q‚m€j·PÈtЀ‡n€d€‡s˜þ€‡p€hp xp8kà„%‡%x‡%q q€jè‚_X‡m˜X`m€kàq膈x8‡q †€‡ƒ`p8‡Z€jqp j€%'‡%’uxfqXqXj'€pØ àq X`q€kàxX`l8‡Z€‡p€hÈ#xxXq€‡u`xXqÈ€ ‡8…q8‡ x €· †H qXqXqȇ%‰€‡u †m€jx †· ‡qpþ*€‡u˜€op‡mЀqè†@p‡ €OX‡%'6x`‡%fqX`ƒ°Nj€u †`pØ ‚‡%‡%Y‡qX’q€‡qXqX‡|€q` (a q zq€‡qX’q`q6''‡xx6'xx‡%6x€x6¢‡x'‡xY‡q€qxX€'Á‚ã Âo†×\Wp\ÁuðÆÁOÂqðƃ'nAqá‰GPÁqðÆ9×pÁqþÅ­#¸® ¸‚ã Žƒ7^>xãà‰;)Žà:‚ãŠoÂq'®‡p<ðÄÁ'Þ¸«ÇGPÜ8‡â Ž+’ È‚ ÇåC8Ž 8x Š+(n¼qÇå+8®à¸‚ã Ž+8®à¸†ã®—OœÃqðÆ7N É8ùˆSlÌ [AÔ þÎ:ðˆÓM `8âP#À:ð ƒDzH1Ž8Û´0€0À³NéÉ2Ž8ðŒ8ðˆÏ8#3ˆS,D³ p‡âP#€lâP#À8âÀ#Î8ù€Ï8Ï8âÀC Ÿˆ3Î9LŽ8Ô5ˆÏ:Ô Û6-HÀÀ#N7- €âÀc^Œ#Îh³Ž8‰8ƒ8Ì <â0€8ð ƒD8 Å:Ô 5üA6È8ãˆCÐ8âÀR>ãÀ#<â¬8ëŒC8ãÀ3<ãä#<âÀ3<ãÀ#<ãÀ#<âÜþE8ðÈHÉ8ðˆ8ðˆ8ðˆ8 !$Î8âÀ#< å#<‹C8ðˆ8ðˆƒÐ8âÀ#<âŒ#Î8âÀ#AâÀ#< å3Ž8ðˆ8ãˆÏÇð|œ<âŒ#<âÀC6Æ!Žqˆ²É‡8à!xˆâXHd“qŒƒ ²Ç8ÄAˆ 8à!‚ˆcã<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀ$âX<Æ!xˆƒ ²É‡8à1xäã(È:B Še0bÿBÆ‘qÀCë "‚Ȧ à‡8ÌqˆÃ< G>>–ÙÀC6ã ˆ8àaž|dâ ˆ82xŒCù ˆ8à1þxˆ£ ëÈB>FÙÀcÇ:B $´ âX‡8àxä£ âG>ıqDã(ˆlÆqÀ#â‡8‚ˆcð <ÄqÀCÇ8ò!xˆcð<ÄuÄâX‡8@²‚ˆc²!ˆlÖQq$” â€Ç: bÓÁCYGAÆQqÀC6〇8à‘†¬ƒ æ<ÄuÀCðˆ5°q dðÈ<Æ!Ž|ÀCùÇ:ÄAqÀCG>Æ!xäC6ðÇ:à1‚ˆcùA>VqäCðBd“qdGAÆÑþqäCãAÄQqäC〇82‚Œ£!²‡l"xäâ€Ç8"xŒ#âX‡8 2xäâ8É:Æ|Àc‘ AÄAÙäã ˆ8Æ‘ÙÀC6ù€‡lòAqäCðX‡8à!ŽqÀ# ‘Í8Ö!‚|,â<ƱÙŒ# 82xäâ€ÇÇà‘‡Œ!BÆQqDù€‡8"›|ˆcG>"‚ˆã€G> 2xˆù€Ç8ò!xˆƒ ãhˆlà!‚ˆƒ Ѓ‡8òqäC É: WÙÀcâ€G>²xþˆ£!ãȇ8²xˆâ ˆlà!xˆ# <ÆAuˆ£ ã(È8 2Ž‚Œ£ ãhÈ8 "›|ÀcãÈ<Äqdð Hà!xˆâ(–Áˆüâ€Ç8Äa‚0€‚ÈfâhH>ÆqdâH¨8àúÀõâ H>à!xˆ!âXGAÄAqäCë@ˆ80€`ÇóÇ:dqÀcðG> ²x˜!æÇ8ÌqÀCBÆAqDæ‡8 "xˆ!âhÈ:"‚Ü$ð@€q¬ƒ8ÀC>Œ<ˆBþˆ<ŒCAˆÃ:8Ä8¸ÞÀ@Bˆ<ˆ<¬ƒ8Àƒ8ă8¬ÃÇD7 Ü…8ÀHÀÃ8ÀÃ8Àƒ88„8¬ƒ8Ä8„8Ä8äÃ8ˆ<ˆÃ:œ„8Ä:ÀÃ8„8 Ä8ÀÃ8ÀÃ8äÃ8ˆ<ˆ<ˆ<ˆ<ˆÃ8ˆA¬<ˆAŒAˆ<ˆÃ:Àƒ84Ä8ˆ<ŒC>Œƒ8Àƒ8„8„8Œƒ8H„l„8¬Bˆ<ˆ<€BŒ<Œ<ŒþC>Ü…8Àƒ8 „88Hˆ<ˆ<ˆƒC€A¬<Œƒ8¬<ŒBäÃ]ˆ<ˆCAˆÃIŒ<ˆ<ˆCAˆÃ: Ä8äÃ]8Hˆ<Œ<È<ˆ<ŒCAäƒ8Œƒ8Àƒ8Àƒ8„8ÀÃ:Œ<ŒCA¬<ˆAŒÃ:€„8œ„8ÀÃ8ÀÃ8ÀƒlHˆAˆAŒC>Œƒ8Àƒ8„8Ä8œ„8ÀHÀÃ8ÀÃ8ˆCAˆC>ŒBˆ<ŒƒC€„8ÀÃ8¬AŒÃÇÀƒ8¬<Œ<ŒAˆƒYÜ<ˆCAÈBˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆÃ8þˆ<ˆ<ˆCA¬Ã8ÈÆ:ŒAÈ<Œ<ŒAäƒ8 Ä8DŒÂ20üÃ8Àƒ8ä<¬<Œ<¬<˜‡yÀƒ8Àƒ8ÀÌΨ8Àƒ8ŒÃ:ˆ<ˆÃ8Àƒ8ÀÃ8ä<¬<ˆ<´è:Ìè:Àƒ8€Ψ8¬<ˆ<¬<ŒÃŒŠÃ8ÀÃ:@©8ШyÀC‹Š”Š<˜Ç8ÀÃ8ÀÃ8ÀC’¶è8̨8Àƒyˆ<¬<¬ÃŒŽ<ˆ<È<È”ŠÃ:Àƒ8ÀÃ:@)<ÈÆ:ÀƒyÐè8Àƒ8̨8Ш8ŒC>Àƒ8äƒ8Àƒyˆ<ˆ<˜<¬ƒ8¬<ˆ<ŒÃþŒŠ<€ÄŒÞ®<˜Ç8˜<$é¢Âƒ8Ðè:Àƒ8Ш8¬6PÀ€ €ÃŒŠ”ŠÃ:ˆŠ<¬Ã8ÀÃ:ˆÃ:È<ˆÃ8Ìè8Ìè8ˆÃŒŠÃ:ˆÃŒÊÆ:ˆÃ:ÀÃ:̨8Œ<ˆC‹ŠÃ:ÀƒyˆÃŒŠ<˜‡8äšÇŒŠ<ˆ<Œ<ˆÃ8Àƒl@©8ÀC’Òè:ÀÃ:ÀÃÇÀÃ:Àƒl`ƒ <ˆ<ˆÃŒŠ<ˆÃŒŽC>È<ÈÆŒŽÃŒŽÃ:ˆ<ˆÃ8ÀÃ8̨l¬Ã8À©yŒ”ŠÃ:È<ˆ<ˆÃ8̨8@©8ÀÃ:ˆŠƒyˆƒyŒÃ:ˆÃ:Àþƒl¬<ˆ<¬ÃŒŠ<¬ƒ8¬ƒ8ÀÃ:ÀƒyˆC<ˆ<È<ˆ<´(<ˆÃŒ®ÃŒŠŽÃŒŽ<¬ƒ8Àƒlìl‹ÂÃ:ˆÃ:ШyÀ8PCÀƒ8Àƒl¬ƒ8¬C>Ш8Àƒ8Àƒ8Ìè8Àƒ8Àƒ8Ìè:Ìè8ÀÃ8ШlÀƒ8@)HÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8äÃ8ˆ<€ÄŒŠ<ˆ<ˆ<ˆ<ˆŠ<Œ<ä<Œ<ŒŠC>ŒÃŒŠ”Ž<ˆHä<ÈÆ:ˆ<ˆ<ˆÃ8Ðè8̨8Ìè8ÀÃ:äÃ8Ш8ŒÃŒŽ<ˆÃ8̨8Ìè8äÃ8ÀÃ8Àƒ8þÀƒ8Àƒ8¬ƒ8¬C>ÀÃ8Àƒ8ÀÃ8̨8ÀHÀÃ8äƒ8,ê8ÀÃ8ÀÃ8Àƒ8äÃ8ÀÃ:ÈÆŒŽC>Œ<Œ<¬ƒ8Àƒ8Àƒ8Àƒ8Ðè8ÀÃ8ˆÃ8ÀÃ8䔎”Ž<Œ<ˆÃ:ˆÃ:äÃ8ˆ<Œ<ŒC>ˆÃŒŠŽÃŒŠ<Œ<Œ<ä<ˆŠÃ8ˆÃŒ®ƒ8Àƒ8ÀÃ8ÀÃ8Ш8̨8ä<ˆÃ8Àƒ8Œ<ˆ<ŒÃŒŠÃ¢ŽC>ÀÃ8Шl¬ƒ8Àƒ8Àƒ8ŒÃŒŽ<ˆ<Œ<Œ”ŽC>ˆÃ8̨8ÀÃ]ÀÃ:ˆ¯Š<Œ<ˆÃ8Àƒ8ä<ŒCþ>ˆ<ŒC>,ê:Àƒ8Àƒ8ŒŠÃ8ÀÃ8ÀÃ8ˆ<¬C>ˆÃŒŠÃ8ШlŒÃŒŠŠŠŠŠŠŽÃŒŽ<ŒC>Ìè8äÃ8ШlÀƒ8Œ<¬<ˆ<ˆÃ8äÃ:ˆChÂ20Bô<ŒÃ:Œ<ˆC>ÈÆ:ÈF>È<¬ÃŒ®ƒ8¬ƒ8Ш8¬<ˆ<ÈÆŒŠÃ:Œ<ˆ<¬ƒ8Àƒ8Àƒl˜ÇŒÊ<´èŒŠ<¬ƒ8ÀƒlÌh>Œ<ŒÃÇÀƒ8ÀƒlÀÃ:ÈŠƒyÐè8äÃ8ÀÃÇÀƒ8˜<È<ˆÃŒ~ÌŒŠƒyˆ<ˆÃŒŽ¯Ž<ˆÃŒ®þ<È<¬ƒlШ8Àƒ8¬ƒlÀƒ8̨l̨yÀƒ8¬ƒ8ÀÃ:ÀÃ8È<ˆÃŒŠ<ˆÃ:ÀÃ:Ìè8ÈÆŒŠC>È<ˆC>È<ˆ<| <@O>Œ<ˆÃ8¬ƒ8¬ÃŒ®ƒ8¬ƒ8ðª8,*HˆÃŒŽÃ¢®ƒ8Ìè:ˆ<¬¯ÂC>Œ<ˆ<ŒC>ÀƒlÀƒ8ÀÃ:ˆÃŒŠ<ˆ<ˆ”Š<ˆ<ˆ<ˆÃ:ˆÃ:ÀÃ:ˆ<¬ƒlÀÃ:Àƒ8¬ƒ8Àƒ8̨8ÀÃÇÀC>ˆŽ<ˆ<ˆ<ˆ<ˆƒy| <¬®ƒ8Ðè:̨8Ðè:ˆ<ˆÃŒ®ƒ8¬¯~ <ˆ”þÊÆŒŠÃŒŠC>È<È<ˆ<ˆ<È”Š<ˆ<ÈŽƒlÀƒ8¬ÃŒŽÃ:ÀÃ:ˆ<È<ˆ<ÈÆŒŠÃ:ÀÃ:ˆ<Œ<¬ƒ8Àƒ8ÀÃ:ˆÃ:È<¬¯®ƒl@é:ˆ<ˆÃŒŠ<ˆ<ŒC>ŒÃ:@©8Àƒ8Àƒ8Àƒ8Àƒ8Àƒ8Àƒ8¬ƒ8¬ƒlШl@é:Àƒ8¬HˆŠ<ˆ<ˆÃŒŽ<ˆ<Œ<Œƒläƒ8Œƒ8,ª8ÀÃ8äƒläÃÇÀƒ8äƒl¬ƒ8̨8äÃ8ˆŠ¯ŠŠ<€„läHÀHÈŠÃ8Àƒ8Ìh>ˆÃ:öŒŠ<Œþ<ÈBÏ:ÈÊ<ˆÃŒÊÆŒŽƒ8äÃ8@<ˆ<ˆ<¬<ˆÃ:Œƒ8̨lÀÃ8̨8äÃ8ˆÃ:̨8Àƒ8Àƒ8Àƒläƒ8ÀÃ:| ÊÆ:| <Œ<ˆÃ¢ŠÃ8Àƒ8Àƒ8ÀC>Œƒ8¬ƒ8Œƒ8Àƒ8ÀÃ8ÀÃÇäƒ8ÀÃ:Àƒ8¬ƒ8̨8Àƒ8¬<Œƒ8Àƒ8̨8Àƒ8̨lÌè8Ìè8ˆÃŒæ<€”Ê<È<ˆ<È<¬ÃŒÊ<äÃ8ÌèÇÀƒ8ÀÃ8Àƒl¬Ã8È<ˆC¨‹<ŒC>ˆÃŒÊF>ˆÃ8ˆ<ˆÃŒÊæƒ8äÃ8Ðè8È<ˆÃŒÊþ<È<€„8¬<ÈÆ:ÀÃ8Àƒ8ÀƒlÀƒ8ÀC>ˆÃ8̨8ÀƒläÃ8ÈÆ:Àƒ8Œ<È”ÊŠÃŒŽƒ8Ш8Ìè8ˆŠŠ<ˆ<|L>Œ<ŒC>Œƒl@©8ÀC>ˆÃ8¬<ˆ<ˆÃ:Àƒy„€(ü#@?Ìè:È<ŒÃŒŠ<¬Ã8¬ÃŒŠÃ8ÀÃ:Ðè8ˆÃŒ®¯Š<¬ƒl̨8Àƒ8Àƒ8̨8¬<ˆÃŒ®<ÈÆ:ˆÃŒ®<ˆÃŒ‚Ä:ÈF>,ê:̨l̨8ŒŠÃ8Àƒl¬ƒlШ8ÀÃÇ̨8Àƒ8,ª8ÀƒlÀƒ8Àƒ8ŒC>¬<ˆÃ8þÀÃÇ̨8ÀÃ:̨yÄqÀcð<Äq¬cð‡@ÄqŒëˆ8"Ž™ÀCYÄqä£&ð<Ä1ŽuˆC ãG>Ä1xh%1<–qŒãÈ8òqä5<Ä!š8D+ùþ€‡8Æ‘¬#â<ÄáqDZˆ8²”q¬CYÆ!ŽqDð<Ä!qäâ<ÆqÀCù€GM2"xŒâȇ8àQ­ä£&ðÇRÆ!xŒ#5qÈ8ò!Žqˆ5Ç8à!xŒC â‡CÄqÀCã<ÄqŒãG>à1Ž|ˆÃ!âˆ8à¡)Œù<Æ!‡Œ##〇8à1Ž|Ôâ€Ç:Äq¬Cã<Ä1xˆC+ðG>ÄuÔd5ÉþGLj2xˆcð‡8òQ“|ˆK<ÆuÀ£&ãX‡8ÆqÀcùˆ8Æ‘qÀCðG>à!Ž|ŒÆaàAàaò¡&òaàaà¡&à¡&bòAB´Â!ÄaBàAàAÆ6ÄabbbÄA Ä!&Ä´Â!j"ÄÖ–"BÖAB`~à@A@A4a4@A–p 5Á Aá¦p¦ðA —P@A@áPFA@a AAFáGAFa4a GA–p¢4a Ð 54a þ¦Žp¦p4Á EAFA@a4a p p4Á —p —P@A.ÑAáÝP–PFAœP@ADa.q4á5Ž4a 5a p4a4A44a GAqð8r4)Þ¸”âÖƒgž8xâ¬8ðˆAù˜´Î8q‰8&‰×8,­cÒ:ðp”<â$ŽIãÀ#ŽIëÀ#<âÀ#<â˜$Î:ðŒÏ:ã˜ÄKëÀ#<ë¼$Î:&qd’8ðˆ³Î8ù¬3N>”’8ðˆc’8ëˆÏ:ð¬8ëŒÏ:ð¬#Î:ðˆÏ8ùŒcþÒ:ùÀ³Î8q­Ï:âÀ#Kë˜4KâÀÃQJâ˜ÄQJâ˜$<âÀ³<â˜$Î8ëˆÃÒ8ùˆ³<™Ä<ëÄeIâŒ<ãÀ#<ãäó’8ëÀ#NJâŒc’8ù¬8)‰3<ã¼$ŽAƒå³<âŒÃQ>òÁ#Î8&‰³<ë˜$Î:&­Ï:âÀ³<눳Ž8ëĵŽ8ð¬c’8ë¤Ä<ëˆc’8™$ŽI⌓8,­8&“<™4Î:â¬#<âÀ³Gðˆc’8&­#<Á#ŽIëÀ#Î:ò­#ŽAã°$ŽIâ˜$Î:â¬cÒ:ðpdP>ðŒ8ðˆþÏ:ðˆÏ8ùp4K±$ß:,‰G&q”Ò:&­“GëÀ#Î8ðijO>âä8ðˆGðäÃ<8&É|lÃ#<âÀÃ6<“8ðˆ8ðˆGãÀö8ðˆ8ðˆGðˆ8ð¬O>ò­|ãÀ#Î8ð¬#ß:&­8ðˆ3<c’8ðp8ðˆGã˜$<âÀ#<âÀ#N¢,ÃÈðˆ“’8ùˆcGðˆ³ŽIâÀ#<ã¤4Ž8ë¤4ŽIâ¬#<ãp8&­cÒ:™4Ž8ëˆ3Î:&‰c’8&‰3Ž8&‰8ëˆ8ðþÏ:à!xŒãàˆIÆ!xp$%â0É8àÁ6xˆcGÖ!xˆcð‡IØÆްD&ÉÇ8à!ŽuÀƒ#ðXG>Ä|ŒÃ$IÉ8ÄqÀC&‘O>à1ŽQ‰c&Ç:à!Ž”ˆâx‰8L"x¬â€Ç8àÁ‘” â0ˆ8L"xpÄ$ 8L"x¬C&Y‡8౎|Àc&‡IÄaެÃ$ 8Ö1q˜d0âX<ÖaqÀcòG>Æ!“ŒC&á<Ö‘qÀCù <ÄÁq˜Dù‡8Öqäƒ#ð<Äq¼DðþŒIÖ!Ž”âxÉ:à1q¬#Y<8q¬Ã$ë< ¶ÁcòI‰8X"xˆ#%‡8RÂx¬CðXGÖ!x¬ƒ#&Ç:R²q¬câ0ˆIÄaqÀC,Y‡I8uÀCðÏ:àÁxpdâ€Ç8ıŽq Žmë<ÄqÀCÇ88²Ž”ˆ#%ã‡IÆ‘’u˜„#,áKÄÁ’qˆ뀇8R"–ÈgðÇ:àaq˜DðGJÆqÀCð <ıx¬C&‡I8uŒƒ#)‡IÄuÀc)1ˆ8ò!Žqˆc,GþJÄ|ŒCð<8’qÀCðX<8qÀCðà<Ä1qÀc&<ÄެC)<Ä‘Ž˜D&‡AƱù˜Dð‡AX²xâ0‰8L"xˆÃ$ 8L"xˆ‡8R"xˆÃ$âX<ÄÁq°„#ðGJÄÁpâ€GL"x¬Ã$Ç8ıq¤d)ÉGÖ!xˆ#%â0É8Äax°-%â0‰8ò‘˜d 8à!Ž”ŒÃ$âUJÄ1*q(X&Ç:à!xˆ 8R"Ž—ˆ 8à!ŽQãHÉ:þ^"Ž”Œ#%ë€Ç88b’uÀc)á<ÄaqÀC/á<ÄqÀCð‡I80 d0ë€Ç:ÆuŒIÉ:à1“¬â€Ç`òu˜dù‡IÄqäÃ$â0 GÆq¤D&Y‡Ic’q˜d0 6‰8à!Ž”¬CðK8Â’up$%â•8L"“d,ÇKÆ!Žq¤Ä ð<uÀc,Ç:à!Žuˆc/G>R²Ž—¬cð<82xŒÃ$ëH‰8R"Ž—ˆÃ )‡I8bq°d&‡I bƒ°d£< b’uˆcðÇ8Lþ2“Œƒ%ã`É:ÄqÀc)Y<Ä‘’u˜dðX‡8L2Ž|Àc)<Æ‘’qâ0É8à1“Œ<2“ˆ#ëH‰8à1xˆc&Ç8à!x¬CðàˆIÖ!ŽqÀcðG>à!Žq˜d)G>Æa’qäcð0ÈKÄÁ’q˜dâÇKq¼D&Y‡IÖ¡àuÀCëÇ:Äqä‡8àÁ–ŒCðÇ8R“ˆ#%âˆË:àÁxŒ#^ÇKıŽ|p$%ëLJÖ1Ž|ÀcðGJ8Â’qÀC)GJÆÁä1‰8Æaþ’qÀc/‡IÄq˜D)‡8Æ‘q¤DðG>ÄuÀC&G>ÄÁ’u°DãÈ<ÄaŽäcð<Äu¤dðÇ8à±xŒÃ$GJÄaqÀC,Ç:¼“ˆÃ$â<Öñq¤Dë0‰8Ö!“pã0É:Æ‘q˜dð0)1ð0ð0ðÀ ë `‘âh£Âð°â°ðÀëâ°âë`‘£"ë`â0)1ùââ0ð ã`âãã`ãð ,1)!ð ÿ ë`âðëþâ°ð°)Áããðëëëâ°ð°ð°/1(ð°ð°ââ0ð ð0ð`âãë ð°â`ëë0ùë±ð ¶ð°ð m(! ¿Àë &±ð0ë`ã‘ã ë &!ù0âã ëÀ)!ë0)!&‘âëâââ°ââãã°ù ð ð0ð0ð0âðëâëâ`ãâ°,±ð0&að0ð°,±ð ðþãÀðÀ&±ð ð ð0ðÀ&±ù ð &1ð0ë ëù ±ƒ±ð0ð ëëâ`ù0âã°&1&1ë ð0ð ,1)!)1lââ`â°ð !ëâ0&±òëë`ù0ðÀð ð0ð ù0â°â`â±â°â`ãâ`ëã`±ãÀ&Áù0ëã°â`ãã ð0â`ë`âëããë`â`ëþÀðâ`ââÀãâò±ãâëâ°ð ë ð0â°ò‘ëâãâãðÀð0ë q!ð ð0â`ã &!ð âãã0*â°ã ð0/1ë ùãù ëÀë`ëã`ëâë ëã0*âãã`ë0ëâ`ââãã ë0aã )1ëâ`ãââ0ëãù0ð ð0â°ð0âã ð ð°)!þãð ã`âëã &±âããã ð ð0&!ë0&!&1ë`ãââ°ðã ð ð0ð°&!qaâ°âëã ëã!)!&!ë ëaƒaã`ëù0&!‘â°ð ù )!ð`â°ð0ëã !ë`ââ`ð°ð0ð0ð°)!ð°ð°ð°&±&aâ°â°ð°&±ð0â°ð`ð°ù0&!ëÀþâlë`ëãã ð0â`)að°ù0â°)ññ ð°â ð0ð ð0ð0ë`ùÀð0ð0&1ð0ð0ð°ð°â°&1 !ð0að &1ð0ð0ãëââ`ë ù0&±ð°ãâã°ð0âë`ëâã ð â7kð°!0 ÈÀââðû  ù ãâÀââ`⃑ðÀ/1&±â0ð ð0ð0ðþ0ð0qaðÀë ã°ð ë‘‘â0ð )1,1ð ð0&1ð ãëÀë ããñÿ  ðÀð0ë /!ð0,Á)! â⑱„ââ`ë ùÀ6ð ð ã`ã°âÀ±ð ãÌ« âÀ1ð ð0)Á Æ&!&1&!ã`â0ù ãðâ1ë /Áãã ùâÀâ`ëâ`òã‘ãã&1)±âÐý  þù°&Áë ð ùâãðëãâ`ââ0&±ð0ð0&±)!ã&!)±ð`ð°âã`Ì« ùëâ0ð ð°&1ù ðÀãÀâ`ë`ë0&!&!&!&1)!ð ð0ùÀð°âââãðÀð`ð0ù0ð0ð ƒaãë ë0ð°ð°aâÀë0ù@„ëââ0ð ,!ãëò‘ð0ùãââëþâ`òã`1ë &Áð°ð ð°âëâ°ââ0&1&!aãââãâ°ðÀ&±â°âãðâ0ðÀ)!ã°ââòãë ð°â`ð°ð°âë ,1)!)±â`ãâãâë ð°â`ã°òëƒñë ð0/!ð ð ð°aâ`â0ð0&1&±â°òâ )±â°ð ð°ââ°â1ð`ãþð°â°&!&aa„ãëðëÀë ð0ù 냱â`ãý âƒcò‘ë`ò‘l“â±âò‘ò±ð ùpQ±ðÀù ùàÝð /!ðÀãëÀëÀë`ââë ã ùâ°ðÀël“l±ðàÝò⢰ Œ)!ÿ šâã°,!&!ð0,!ð0òâù ð°ââ‘ãã ë ‘ëþù0)!&±)Áðâ°âã ð ð0ù &ÁðÀ&Á&±ð±&!ý š`ë )1âòñâ°&±â°&!ñ &a&±&!ù &!&1âëâù0ð ëââÀâ°âðâ )±)!&Áð &!ð°ð°ð0â`â`âÁâ`ã!,!ëâã )‘ã`ã`ëâ`!)1,Á&1aâ°ð0ã°&Ñë  âãƒþâ`â°âã`ââÀù ð°ð ðÀƒâ°ãðëÀ&Áð ý š0â`ëâ°ðÀëãâââã‘âÀâ°±ââë ë`â`ãë ëÀâã ë ð &‘ëëâò‘â`â°&1â`â°ââòââù0ð ð &‘ã°,1â°ð0âââãÀ£"ð ë`ù0ð ,Á&±&1ðþ°âââãâãò‘ëãÀëÀë )1/!ð ð0&Á&±â°ðã0*òâ°&!ð )Áð )Áð ð0&!ð ðÀù ð°â°&!ð ð ëÀâââã ð &±&1ð0)!&!&!O 8âàå—Oܸ|ãĉƒ'N qëà­—¯þ_¿|ðÖ \'NèÄu×Á['nÝÖqBÇÁ'pÝÖqÅ \·u¢¸‰ã&®“+wÜÖ|ãÖ 'P¼uðÆÁ·^¾qቛ(n뺼âò ]'Ã(dŒÀ'ðxâÆ >Þ|xëÄÁoýuðÆÍ'%qàI žqæ'ŸùÆgœùÆ¡žqÖyˆ>qÆgúĉpxúGqƒgxÄ™OœùƉžuþàžqæ§Åqàyh>qZ„gœùÄ¡OœùÄÉqÆg‡æžqÄGœùÄ¡oœ|Æá±EqàYqæ'qà§q4™OœùÆgœùÄ¡OxÆ™oxÖgÅGœÆæ{húÖgœ|Ä¡ï!xÄGœùÄY‡>qæžàÑDœùÆgùÖ™OœùÆGœqànœÅÉGú›oq²\žuæ[gœùÄGxÄGxÆgxÄGœ|àY‡>q‡¾‡æ‡>qàYg¾uàIé!xòžuàžu²„gqæqÆY¸qæ'ŸùÆÉ§EþqÆ¡Oœqò¡OœqàIi>qègxÖg>qƉpxÄgœ|jqx‡¾”¢oxÄgœ|æ[gxÆGúÄÉGxÄg>qÖ'qZžuÆYGxÆGtáYqà‡¾qÄ™oúÖAWxÆáqœùÖ‰PœuÄgxÄGœq"žq懾qàgqòyhxÖg×™oœùƒgxÄYGœ׉PœùÆÉg>qàYqÖg¾uÆ™oxÆÉç!xÖiQxÖyhqæ'¥ùÖy™àIIœuæqà'ŸùÊg¾uàg>yþ'þ¥qàqà§Eqàg¾qàYqàgœùÄgœùÄGœqàžqàg¾qèžqà'ËqæžqàžqZgqƇ8à1xŒcëÇ:²$ŽùŒ#âÇ:æ#Žùˆƒ>ë}ÆqÌgôIÉÑıq„@Ë`Äà1x¬ãâÐÄ|ÄqÐGð<ÆuˆùxÈ|ıxŒƒ>ã<Æ!Žù¬CðÇ:"$xˆƒ>ã€G>Æ¡qˆâ€ÇCàaÀuÀcðÇ:æ3މƒ>â€Ç8"4qÀ#â˜Ï8ò1x¬ãâÐ<ÄþuÀC„‡8²”qÀã!ôYÇCÖ!xˆâ€Ç8Z4Žuˆ#〇8ÖaÀ|ŒCð‡8à1xŒCz<ò1qÀCó1 <Æ!x¬ãâE>²úˆƒ> áœåÀâ€Ç8Ä1qDhð<Ƈäcó1à|Ä1ŸqÌGðÇ|’qˆƒ>ãÇ|Ä1q¬Cð‡8à1xŒCð‡8æ3qDhð<ÖñuhBóÇCò1qÐgóy<ÄqÀcâX}ÆqÌGôÇ:à!xˆcð<Ä!qÌgð<Ö!Žþ¥äâ<Ä‘qDhâ˜Ï8Ä1qD(ãÇ8Ä1xŒc>ãG>Äqˆc>ãÇ|ÄuÀcâ€Ç:ò!Žq´hðXÇCò!úPðÇ8à!x¬CGÇ|ÆÂCÇ|ÄqDh 8Æ!ŽuÌgôG„òa@x¬Ã€âX‡2Ÿ|Œ〇8ÖaÀùˆÀáQ>Ʊxˆc>ùxÈ|2qŒƒ>ãX<ÄuDhâ€Ç:Z$ŽùŒC)ÇCà!ú〇8à‘q¬ë€Ç8à1Žùˆ뀇8ò1xˆ#ã˜Ï8æ3xþˆã€Ç8è3qŒ#ã€Ç8à!ŽqÀcð<Ä1ŸqˆâÈÇ8Ä1xŒë€ÇCæ#Ž¥$Bù0 8Æ1qÀCó<|Œcóɇ8Ʊxˆcð<Æñx<â˜8æ³úŒãÇ|Æ!q¬Ã€ðG‹Æqäc‡8ÆAŸuˆã€Ç8æ#Žùˆ#ã Ï:à1ŽuÌ8ùGJæcÀ‡ÌGë€Ç8æcÀq¬c>™Ï?ò1Ž|g> á!xˆ#â‡8౎ùˆùÇ8æóú¬#ã˜8à!xˆ#„Ç:à!xˆþã€Ç8æ3Ž|p> 8à!xŒã<ò‡À8ùÇ:àñx¬〇8Ö‡¬âX‡8Z4xŒCùà³8à!xŒ#ã€Ç8ÄÂcð<Æ¡u„`È`ÄÆ‘‡äšÇ8à1úˆâ˜8à!x¤¤E〇8à1xˆãÈ<ÆAŸqäCô}ƇŒcâ<Ä1Ž|ÀCð}Ä‘qÀCó‡8à!ŽùˆcóÇ|€qÀCóI <²qÀCý€‡&Äq¬CðXG>æ#Žqˆcðà³8è#Ògþô<‡ŒCù<ÖñxŒ#âX‡8à!Ž|ÀCùx<ÄqÐgë<Ä1Ÿqäã!ù€ÇCúM¬c>‡8æ#úˆ#âàÑ8Ö!Ž|ÀCù€‡8æ#xŒâ˜ÏCÆ1Ÿu<âȇ8æc@xŒc>¡OJÄ1ŸqÀCó<òuÀã!ðG>‡Ìgù˜8ÆuÐGÿ‡&à1qäc>ëÇ|Ä1Ž|Œƒ>ã€Ç8òqÀã!ÌÇ|Ä1xŒãà‘u‡|xx‡ùx‡q€‡‡èxЄq€‡q€‡‡€‡‡˜þqÈx‡ùxxXq€‡|€q€qxxx‡|˜qÈx‡q˜q€q€‡‡xx‡q‡qÈx‡ùx0 x‡|€q€‡|˜q˜qxqxxxxˆqÈq˜q€‡q€‡u€q€q€àxxxÈxx‡|ú‡q˜q‡|H qȇù‡|˜Zq€q˜qȇ‡˜q q€qà³uúà³ù‡‡ùxxq€q‡ùx‡ùH xxx‡qÈxX‡q q€qþ0 |x‡q€šq˜u€q0 xxxXqXxXq€à€qx‡|xx‡qÈx‡q€qÈq€‡‡È‡‡xxúXq€‡|xx‡q˜q˜q€qx‡q€q‡u‡|€q€q€‡q˜qˆu‡ù0 u€q€q€‡‡€‡qȇù‡‡ùxxx‡qÈxxˆ|x‡ù‡|‡ùxq€q€qXq˜q˜q€‡‡˜q€q€qXúXq€‡q€q€q‡YqÈqx‡þ| q€‡u‡|‡ù‡|xˆéxXqXyˆ|xxxÈxxˆq˜‚q€q˜qqH q€q€q€qH‰‡€‡uxx‡|°Cqqȇuxxx‡|xˆù‡,Y‡xxˆq˜q˜u˜q€q€q€‡qȇ‡˜‡Èxxxˆuxˆ|€‡‡ÈàÈà€q€qMXF€u Pȇqȇq‡qˆq u€‡u€‡q€q€‡‡€qÈq˜qX‡qx‡q‡u€zx‡qȇq˜|þxȇq€qX‡qˆqxH q€q€qˆq€‡|0 x‡Žù‡”‡ùXxxX‡QhqX‚‡|€q€qȇu€q€‡q€‡|‡ùXq€q˜uh‘|0 q€‡u qXxXú0 x‡yxqh‘‡X‡ùXúȇ~Mˆq˜q€qq€‡u€‡q€‡q€‡ùX‡q€‚q˜àh‘|0 x0 |xˆ|‡‡ùXú‡x0 qh‘qÈqà3xxx‡u˜MÈxà3úx‡uxxþ‡|qXqˆ|š|‡|‡|‡‡€‡q€‡‡Xx‡|x0 |‡ù‡‡€‡q€‡|úøx…qú‡‡u˜q˜qx‡ù‡ÉqˆqX‚‚q€q€q8q€qX‡q u€qȇq€š¢qÈxq€‡‡€qˆq˜q˜qŽùtx0 xx‡‡€‡q€‡|0 ù0 q€‡u0 x0 x‡|xú‡u qˆq˜|‡|xx‡|‡ù‡‡€‡q ‡˜qÈxxþxx‡ùxxú‡uqÈqh‘|‡u€‡q€‡|q˜à€q˜|úxXxxX‡xȇq‡uˆqXúx‡Y‡ùȇqxˆùx‡ù‡ùxȇq€‡‡€q˜‡€q˜qXx‡xq€q€‡q€‡‡€qȇq˜qhqXx‡ùq€‡u‡uȇq˜‡€qX‡q˜qxxx‡u€q˜‡ q€‡uˆu‡|‡ùXq€qˆ>[xxxÈqxxxxxxXxþúqXq€q€‡u˜q€‡qȇ~ȇu€‡u˜q€q q€‡qȇqXxúxq8šùtY‡ù‡ùXú‡,1 ,ú‡u€‡q€q˜qXx‡q€‡q€q˜|‡ùXxxXúxxˆu u˜uh‘u˜u u qh‘q˜…_`X‡q˜€MqXq€q€q€q˜q€à€‡‡€‡EˆqˆqÈxxÈú‡|ˆqXqð†e˜†e@†io`åepåeð†|˜q˜ù‡ù‡qx‡uþxVæZ®eqH‰Z^‡Z‡~€‡Q‡qxx‡|šq8u‡Z‡qXx‡q˜q˜q¨eqà3a‡ùxxXo€38‚z†„s€‡q€q˜qÈxx‡qæq€‡q€Z‡~X‡Qx‡ùx‡q€‡|˜q€qІhqÈxXxXq˜q˜qfxxà³|xxq€q€qX„u˜u‡q˜‡xxxx‡q€q˜qÈxxX„q˜q€q€‡q€q€qÈq˜q€qÈqXqøþxЄq€‡‡Èqa^‡ù‡ZH„/H„Z€‡q€‡q€‡q˜qà3qqXq˜qÈq˜u€qXq€‡r0/è„;xq¨eq‡u‡ZÎqЄ|€‡q€‡q¨åq‡ùxÊx‡|xxq0 xxxx‡|x‡|˜q¨åq€‡q€qxa‡|q€qxXqXx‡q˜‡€‡‡0 |Xéù‡Z‡ù0 |¨eq€q€‡q˜qXéqȇqXé‡0 qÈq€qȇùXqȇqÈqxXq¨eq¨åq€þ‡‡€šq0 xXq˜‡x‡qȇZ~x‡ù‡qXʇùxXxa‡Z‡Zxx0 xªeqxxax‡qXxx‡ùH‰ùxx‡Z‡|€‡q€‡q‡ù0 x‡Z6 xx0 u‡Z‡ù‡q€‡u‡ù‡u‡•‡•‡ùx‡q€q‡ù‡|€‡q€qÈq˜q€‡u‡q¨åq€‡q˜q€q€‡qÈx‡ù‡uxa‡|‡Z‡ùxX‡ùa‡Zx0 x qþ˜qfq0 |‡|‡ò†‡u€q€q€qX‡•^à€qÈxXx‡ùX‡q€q€q€‡€‡”xx‡ùx‡uxxxˆZ‡|€q€‡qx0 xxxxx‡q€‡E‡q¨eq€q€‡q€q€‡q¨eq˜q€q€q€‡q€q€Êà¨å‡‡ùx‡ùxX‡‡€q˜qX‡q€‡uæq€‡q€‡q¨eq€‡q˜qxà3xxxxx‡ùXqPXFq€‡qX‡€M öq˜qXiq¨åþEð‡E€‡qXxxx‡uxà3‚‡u0 qæ|˜†uˆ‡lxȇZŽo€‡|@xq¨åq€‡|€‡qȇq˜o‡|˜i`exxxxxà€‡q€‡|è‡qÐq¨åu‡u€qȇq¨åÈ:xȇq˜‡€q€à€q€‡|xxxxx‡ùH8‚MØ„[¸H03€o¨eqX‡q¨å‡€‡qxxxˆ|‡uȇ~XMxx‡‡€‡|ೇ˜|І€x‡Eà‡E˜q˜q˜qxãÄÁ—Oœ¸uðŠƒ7b!þ¼EþÁ/ß8q ÂBxÈÚ´9BÒÛ"~‹Š[ˆâ:xã>Ž[¸NÜ?qšà­ƒ·Bxãà‰ƒXëK¦I™¾Ô—oœ8xâàå÷qÝÂqâÖA÷Þ:S•æ±ûÕiãÀ“Ï:ð O>ã@$ÎBã@$ÎBâ,4Kðˆ8ðŒ#âÀƒP>â|4N>ãˆO>å£W>ãÀ#<ãˆÑ8ðŒó•8ðä3<Á#Î:㈳Ð8ð¬Ñ:ðä#Î8ðˆBð ´8ëŒ#<㈳ÎWâÀ#Î:âÀ#Îk㈳Ð8ðŒ³8㈳8ùŒ#<ë,4ÎBâÀ3<ùˆ3<ãÀ#ÎBãÀ3ÙBâÀ#<â,4<}4Î:ã@4<ãˆþ³8 åóO>ãÀ#ÎWãˆÑ: ‰Ñ8 Ï:âäÏ8âä3ÎGâÀ3<-âÏ"}4Ž8‰Ï8ð¬# ñ°DAð ¾Jˆ³DâÀ#ÎBùˆ³8!´D㈳<âÀƒ<ã,$<,±Ï8âÀ#<ùŒ#N>å3Ž8‰³B ­Â(È0<Á“8£À#<ãÀ#<âÀ#NRT!œ2Ì5…,ÂÏ"‹ 4ÎBâÀ3N>ãä³N>âä3<âäÏ8ðèµÎ2 -Q>ðÄÏ4 M#N>ð Ï8ð ¤<â¬#<ãxO<âä3Ž7…5N>þ‰3Î:ýÀ#ÊBâŒÑ8ð¬O9ÞÔrB-âäs‚8ë àBâÀ£<â,$ÎBAt$f`²I>›`r;&f@Ï8 “Ï8â@4N> ‰³Ð:ðˆ³N?ðh²8ù@4N>âä³BÞ´Ó"ð²ˆ?…,"ÎB#N>ãäÏ8ð¬³Ð:–üa ýQ¬âL!‹ðÓ´8ã¬#éà!Ž…œ#f€•B,‚Mƒˆ8 "ŽqÀcù<ÆuÀCðˆG>à1 q,dA<Æq$¢.ôÃta†#˜ðX<ÖqÀCð<Æ‘x¬cð<Äq¬£þ¦Æ<¤ uÜA Ç:Ä„Àcÿ‡&òq,DùXˆ8R‹q¬ëX†5ıu|DY<ÄuÀCðXG>Ä1Ž|°„Xˆ8"Žqä!¯Ç:q|d ÇBÄqÀ!Ö€‡5Ä1Ž|ÀC <ÖÁ’qÀCð<Ä‘x â€Ç8Öqäã€Ç8à±qÀC Y<Äñ•u,DãøÈ8à‘qÀC〇8à1xˆc!,YÈ8"ˆ¬! ‡8à!ŽÉäC AÈ8à!ˆL 8Æ!Ž|¬"ã€Ç:Ä1Žu d!þãX‡8à1Ž…Œâ€Ç8‚xˆcù€È8 2Ž|À!ù€Ç8òq,!〇8àxŒâXÈ:à!xˆâX‡82Ž…¬!ëÇBÄ‘xˆcâÈÇ8ò!ŽqˆãXÈ:ÄqÀcù€Ç8à±xŒ〇8ƱŽqäCðÇBÄqÀcù€‡8òqÀCðÇBÄuÀCð<Äqˆ#ð<Ä„ŒùXˆ8à±qÀC A<Ʊqèâ€Ç:¢—|°$ãx K^#x¬!ðG>q|¤ Ç8 2xŒ# þ<Ö‘qÀƒ%ðX<ÆqÀC Ç8äHaÃh?šqÀCãÈ<ÄqÀƒ%ðXÇZÑ‹\ä¢Õ¨Æ5Úá%äcðÇGÆqÀcDıq|EÇ8"Ž×Œ#ð<ƱqÀc Y‡8à!xˆ 8à!ŽˆbŒÀBĬCðB¾’IH¢’`o5ܱ{؃ö Ç"ò1ˆˆcâ‡8Æq ë‡8à!Ž|ŒcËXH6ò±Ž¯,câ˜Æ:>’q,$ëXÈ:‚o@$ðG>¼1q,DëÐþ <Ä|Œcý‡&‚uˆ#ãX‡8N èøÀµ8(ò‘qÀCãÇBƱqhÇ:àÁ#Üùø‡'p‡‰#ŒCðÇ:ıqÀCë€Ç82Žu,dùèÇ84±ÉˆãXÇ8à1Ž…°âÑè6Ácz؃‹ÇBòqˆC/â€Ç:౎q[‚ÎxÆ*qBЃÇö G! 2q,D/ðDĉ#@BÝ€7azð˜‹DÆ|ŒCë€Ç8Äq,dâ€Ç?Ö¡‰q 〇8 ‚"Ž…ˆcã` DÆqÀÕ˜ÔñŒgüAðÇBıuÀcýX‡&ƱqÀczYH-ÖQ‹uÔBȈ‡5Äq,d ÇBÆ„,D뀇8ÖA~ðƒâXÈ8à!Žu,Dð<ô’q,D_‡8Æq@! Ç2à!eè"âøJ>Æñ•q^ù‡8Ö1–ÀcðDÖ!Ž…¬!ðX<ÆqÀcâG>ô‘|ˆc!âXÈ8¾2qÀcð<Æñ‘qäã€G>Ä1îuÀc ɇ8à!Ž…ˆ#âXˆ8à‘xŒc‡8þ "Žu@dùÇBÄq d!â8¼8Ö1Ž…ˆzÇ:@Ä:Œƒ8¬DŒÃWˆD¬DŒ<ŒDˆÃGˆÃ:ÀÃ8Þ8Àƒ^ÀC>è…8¬<ˆ<ˆC>èÅáÁƒ8¬Ã8ˆ<ˆLÆ8B@„8Àƒ8ÀC>¬ÃB <ŒC>ˆÃ8@Ä: ÄBŒÃB¬ÃBˆ<Œ<è< ÄB Ä:|„8ÀÃ8äÃ?äÃ8ÀC>Œ<ŒC> Ä:è<Œƒ8ÀÃ8Àƒ8|BäÃ8ˆDŒþ<ä<(A/ôB.ôB.´C!¸›=ÐC!,„8¬Ã8ÀÃ8|…8Àƒ8È PA¾à‹8ÀBÀÃ*´À@œA>¨À ¬<ˆ0Ã\clÀ0¬<ˆÃ:ŒÃBˆD¬<ŒÃ:œ ^,Ä:,DŒÂ/0BÀÃ:Àƒ8üÃ8hÂ8äDˆÃ8ˆ<ˆCÀƒ8ÀÃ:ˆÃ:LB øC>ˆC>ˆÃ4,Ä2Àƒ8Œ<ŒÃ:ˆÃ8ÀÃ: <ˆ<ˆÃBdþƒ8x2 Ã/üÂ:xƒ8ÀÃ8,Ä8äƒ8Œ<ŒÃ:Àƒ8ôÀƒ^äÃ8,„8ÀÃ:Àƒ8Œ<ˆÃBˆÃB€$˜&¸4ü`n&¸&¸$Àƒ8|B,„^äÃ8Àƒ8Œ<Œƒ8¬C>äƒ&ŒÃBˆC>Àƒ8ÀøÁƒ8À+üC?´CÂ8Â"¨‚8ÀÃ8ÀÃ8ÀÃ:ÀÃ:äÃBŒ<Œ<œƒ%8Ã<8ƒ3ü3ØC!,94$<Œ<ŒC>Àƒ8Àƒ8äBÀƒ8Œƒ5´&ðÂ>ì`îÃ"‚:°A!þˆÃBŒ<ˆÃ8¬ƒ8Àƒ^ä<ˆ<ˆÃ8äÃBüÃ:hB>,BŒÃGœƒü?dfA&˜&@&@&˜<ˆ<¬ƒ8¬ÃBˆ<ŒC>|Ä8Àƒ8ÀC>˜‚4Ì;L‘4Hƒ)¬ÃB¬DŒC> Ä?ˆƒ&äƒ^@„8äÃ8ÀÃ8ìÂ2ÔÂ:XÃB ÃBˆƒ^äÃ8,Ä8ÀBÀƒ8@„8ÀÃ8ÀC<°?؃?°Áe°!°!ÀÃ8,„8ÀÃ8äƒ8¬ƒ8|BèÅBˆ< <ü‚5,ƒ5ü‚5 ÃBœÃ2ˆ<ˆÃBˆ<ŒÃB¬ƒ8Àƒ8Àƒ8Àƒ8ÀÃ8ÀÃ8,ĸ‰þ<ŒC>@„8Œ<¬ƒ8Àƒ8,Ä8|K,BÀƒ8ŒC>ˆƒ.„8ÀÃ8Àƒ8ÀÃ8,„8ä< Ä:Àƒ8äƒ8ŒÃBˆÃ8Àƒ8è<ˆÃ:ÀÃ8äÃ8ÀÃ8|Ä8ÀÃ:Àƒ8,„^ÀÃ:|B|Ä8Àƒ8¬ƒ8Àƒ8Àƒ8äDˆ< Ä8Àƒ8@„8ŒDˆC>,„8Œ<ŒC>ÀÃ:è<ˆÃB DŒ< Ä8Àƒ8Àƒ8Àƒ8ŒÃBˆÃ8,„8Àƒ8ÀÃ8ÀÃ8ÀB,„8èDŒÃBŒ<Œƒ8äƒ8Œƒ8è<ˆ<ŒC>Àƒ8Àƒ8|Å: <Œƒ8Àƒ^Àƒ8Àƒ8Àƒ8,þ„8,„8ŒÃBˆÃBŒ<°<ˆ<ˆÃGˆC>Àƒ8,Ä8ÀÃ:ˆÃ:äƒ8ÀBèDŒ<ˆDŒÃ: D Ä8@Ä8ÀÃ:@KÀÃ:|Bäƒ8Øà8ÀÃ8@„8ÀÃ?ă8ŒÃ:°Ä8@„8äÃ8ä< ÄBˆÃ8ÀÃ8ˆÃB¬ƒ8Àƒ8ÀBè<È À€4Â04 94$<ŒDˆ<ˆ<ˆÃGˆÃ:B;¤®*¤.붃 äƒ8,:(@dÃ9ˆ‚ˆC,€8,„8PBÀ5€<ä5 <ˆÃBŒ38ˆƒ5ÌŒÃBŒC>ŒÃBˆÃ8Àƒ8ŒC>ˆ<þˆÃ8ˆÃ8ˆ<ˆC>ˆ<ˆÃ:ˆC€Â/0ˆDôƒ8ˆ‚8ÀÃ8,„8Àƒ8ÀC>ÀBëšC;ÔC=ÄC!HÄ‚8ÀC>ŒÃBˆ<ˆÃ:ÀB,Ä8ˆÃ:ŒD¬ƒ8ÀÃ4ÀC> B¬<Œ<ˆC6ÀÃ:,<ˆ<ˆÃB Ä:,Ä8Àƒ8Àƒ7,C-xƒ8@Ä:Àƒ8xC-,C6Àƒ8¬<ˆ<äB,Ä>ˆ(ÀÃ8Àƒ8ŒÃ:Àƒ8@Ä8¬ƒ(ÃtC7(ƒÔ‚((<è…8äÃ8 ÄBˆÃ:ˆ< ÄBˆÃBˆ<¬Ã¸¸4f>ôÃ&¸@Â,Ä8ÀÃþ8,„8Àƒ8äÃ8 < D>Œ<üƒ8ŒÂ8ˆ<¬ÃBˆ< '0 Ì=ÜC;ô D!|C!xÃ8ˆ<¬<ˆ<ˆÃ:ŒKäƒ^ÀÃ8Ã3g¤C: |ŒK¬Ã8Àƒ8ÀÃ8|B„2äÃ?ðõÃ9Â7‚7èBÀC>ŒÃBäƒ8èDˆÃ:èÅ:üŒƒ8Œƒ8ä?×B \ ˜Á˜Á˜ÁÀBÀÃ:ÀÃ8,„8¬<Œ<Œƒ8@Äü+üÁ<°9<ƒ4ô<ˆ< <ŒC>ŒÃ:,Ä?¬ƒ&ˆC>ŒBÀÃ: þ<ŒC- Ã.LD,2XÃ2,2,Ã8ÀB|Å8ˆÃB <(>5‚8ŒÃBˆÃ:ÀÃ:,Ä8|D> Äá!ÃGˆD¬Í=ü<ˆÃB <ŒÃBˆDŒ<ˆC>°„8ÀÃ:,„8¬<ŒÃBˆÃB¬<ˆ<¬< <¬ƒ8Ø <¬Ã8Àƒ8äƒ8,Ä8,„8,„8Àƒ8,Ä8@„8,Ä8Àƒ8Àƒ8|„8@K¬ƒ8ÀÃ:Àƒ8Œƒ8äÃ8ÀÃ8Àƒ^äÃ8ÀBÀÃ8ˆDˆ<ˆÃ8 <¬ÃWŒ<ŒÃWˆÃBŒ<ˆ<äƒ8Œƒ8ÀÃ:Œƒ8ÀC>Œƒ8¬Ã8ˆC>þ ÄBŒDŒ< ÄB <ˆDˆ<ˆ< ÄBˆ<ˆC>ŒC>ˆDˆ<äÃ: <äÃ8Àƒ8@Ä8Àƒ8ÀC>ˆDˆÃ:ŒÃáéÅ:,„8ä<Œƒ8äÃ8Àƒ8|Ä8,„8ÀC>ŒDŒC>ŒÃWŒDŒÃBè<ˆ<ˆ<Œ<ˆÃ:ÀÃ8,D>ˆ<Œ< ÄBˆÃ8äÃ8|Ä8|„8ÀK,„8@BÀÃ8Àƒ8,Ä:ÀÃ8,„8ÀÃ8ÀKäƒ^ˆ<ÈC?ä<äÃ8|Å8ˆ<Œƒ8èÅBˆÃBäB,Ä8¬DˆÃBäBÀƒ °n(´.|Œƒ8ÀÃ8ˆÃWŒƒþ8|„8B;Ô>„Â> °¤ Â9,„8Phƒ8@„8¬ƒHÂ8ÀC>dÀŒ3@%$8Œ3ÀB°3 À:,„/€8À: Á€ ˆC>PCDP€ ˆC>ÀC8´À€èD¬ˆ20Àƒ8¬ƒ8ì<Œ<°ÄGxÃ:B;Hº¤§=|ƒ=ƒ8ÀÃ:ˆÃ5^#\ãBˆÃ8ä<¬ƒ8ÀB,„8üÂ8ÀÃ2èEሃ7Œ2ˆÃ: ÃBˆ<ˆDŒÃBˆD,ÃBxˆDdƒœþ<Ô‚()ƒ2ø@-,„8äƒ8À¼û»‹ÃWˆÃBŒD,=/ô`þC>ƒ@ÂŒ<ˆÃ8À»À€8|Å8Àƒ8¬Ã>Àƒ&äÃBèÅBˆÃB0B)Ø?hÃ)B4=¤=pA98B>ÀKÀƒ8ÀÃ:ˆD¬ƒ8ÀC9üÁ*ç* Á*¬‚3XC!ˆÃ:@Ä8äÃ8@Ä8Àƒ8ÀÃ9”C˜/ü:@&´$˜/p/Àƒ8äÃB À €8äƒ^,Ä8äÃBäƒ8h‚8ÀÃ8ÀÃ:ˆ<ˆÃBäA:ÐC:ÐC-h"¸¸Á:þ@„8Àƒ8Àƒ8ÀÃ:Àƒ8ŒC>Àƒ8ÀÃ,Ã.üB-ü:ˆ<ˆDˆÃ8LŸ8üƒ8h@À['^Áu×ÕZW+Û.yðâ,ïܹe ŠOFxlìÑ)ÒÞH{ôØÀoÜ—OÜ8›ÇÁ7ž8kë<ÌWð2xâ þªõë×®_»ÄË7Þ:ëà‰ƒ·N\¾qÅÁWp›ðÄÙÌ'Þº‚ëà‰+(n\AqÅÁoܺµðÖZGœq qàžµ £µ$'›Æg-ŒÄGœqàYqà§ µàG"q £µÆ)hxÆÉgœ‚ÖÂhqò‘¨xÆYG‰ÄGœ‚Ä'q$¢#q § qàY§ oi§yT©GËzÀ)–uà'Ÿ‚ÄGœqòGxÖGAÚÑ2-÷©Ÿ}qÖAGFYžþq ÂbxÆ¡&€hÄ¡&o4xbj#fœs HÀ&XÐx‡šªXg‚°IıF%ÄGœuÄ a”ežu êgM0žqòXÚ©g-÷©gŸ}üùÆXàY§ u`€náYqÖ'¨u Zfœu¼™f™e¦Yfšl¼Gœe0§ qà§ qàxÄ™žuÄYgqÄ™¦ eàžqÄGáuàYçxD'›ÖgqàÇäNðh0Qæ–[|Xžu R¸Û› žq ²IxÄž#ˆ>"”}þI¢ã8¢þ |ÆYçæn1žuàY§ ÆÑĦ|Ägœ‚ÆDè¹')z€ÃŸ‘èAäœqˆ“hŒFˆ"Š?¢ ½ÿE”0Î)HœuÄÇä|Ä)HxÎ!:’ )šhHxdœuàGᦆgqòqÖ1žÄÅdqÄ›ˆC"âÈ: 2xŒC‡GÆQqÀc<ÄqÀcâÈÇ8à1Ž‚ˆâ(ˆMÖ‘qÀCðGAÖqÀcGAıqäcðȇ8Ö“ÁcëÈ8þà‘qˆ£  8 "‰ˆ#ù° <ÆqÀCGAÆ!ŒCëG>Ä!qdɇ8à1xˆ£ 㨛8Æ‘›`$ã€ÇëÖa2‰ˆã€Ç8àaqäãñ‡DÆ!xˆC"ë€Ç:à1qÀCùX<ÆqÀCð<Æa2…ÁCðD;´Š-iÉ‚ðê1-øCöH<Ä“­À:à!‰˜ â<ıxˆâX‡ÉÖ1x¬CÞ€‡8ÆŒqÀCGAL×åcâ€Ç»¦áeLcÞȆ8àŒqäÃdðÇ:LqôCšÇ:ÄQqäâ€Ç8òáø@ ÆÄ-0ნ`ðxÝ:n¶ŽqÀCð0<Ä‘‰¼£–ãEÒò¡ ¢ùîʇ8Öq³uÀcð0Æ›ÀCGAÄÓŠ 8à±xþ¬C6Ç8$b²qˆ&Ç:ÄqˆC"ãÈ8 2xˆÃ&ù<ÄqÄdðGAÄ1Ž|ÀcðX<Ä!‘qÀCð°É:àa2‰˜ ã€Ç8àa“‚ˆcùÇ8à1x¬ÃdćDÄÄ¡ ÄAú!ÄÄLÆ#ÄaàaÆ!àaàaÄLF"ÄÄ! BÖ¡ ¼AÚ¡ðø ø ªø@Ä¡ ÄÁ#ÖA0bÀáô ôÀêÁ¶D¼  ÄÆLff€$"žàààa¨!àaT ˜ Âdà`²þ! Î@ÔP¨!àAà˜.†@ÆAàAB@–  ÄaþA@Æ#àa âꦥ÷ÁìüáÎA BàaÀd bÄ¡ ÄÄ¡ LÄÄaàa–ává]ÄÁ&¼a bàÁd$B$bÖ$BàaÄÄl–a0B bà!þAFaàA bàAa BàájÁìÜ|Æá$Bàa@òAàA0Â&ÄÖÄ|Ç x¡þÌ` þLfàAàa@àÁd B0BÖáÄ0Bòa$"ž¡¡ ¡ ¡ ¡ ä¡àAòA BàaàáuàA¢Àæ¡Ì¢Àء̢Ä¡ ÆÄÆl¢ ÆÆ!Ž  ô¡ !"!ä¡ ÚÄ¡ ÆaÄÖÄÄÖÄÄAaÄþA4A"òÁ´àAì@ŠA쀨¨¨È¡¸Àd bÄL¦ ÆÄA"LáæájFAþ@àa^§ Ä#Ö¡ þADÁdÖÆÁdqþ–aàBàBÆá~á$bàaÄÁÇAà ¤¤Áú€ ú€ ú€ Qàa@àA0BàÁ&ÖA"ÆAva~aá–ál¢ÄA"ÆaàaÄaúáLÄÄ¡ ÄÆ#ÆA0b Bàa BÆÁdàÁ&ÄÆA"lÆÄÆA$BàÁdòa bÖÄ¡ Æ¡ òAÆ!ÆÄ!ÆLÖòÁ&L&ÆAàAàA BàA$BàaàaÆAàA "àaÑ&àA ÂdàAòA"Äþ#LLF"ÄaÄBÄA"lÂd BÄÄÄáMáAàA0bÄÄ!ÆÄÄÆÁNQàaà!ÄL#òÄ¡ òa B BàÁdàÁdàaòaàAàaàaàAàÁ&àa B$BàaàAÖaÄÖA"ÆL¦ Ä!Æ#ÆA"Ä!^'ÄÆ¡ ÆLËÇAàaLÆAàAàÁd BþAÞÔ&àAà!ÄaÄaÆAàaàA$b0bàaàÁdÖAÀáø@ø`¦e§¼àþÄ¡ lÆA bàaÄÆÁ ÌAôAú8¶öÁ ÆA"Æ¡ Äa|aÄ¡ (b¡ÀAa˜! @ Bò@òa`¸! V Æ@Â!’Aab¡òÆÖ!DàA "ÖaLÆMfî ¦*‘üìaîÀMf$BòÁáAq¼a¼áà!ä¼ÊÁd~AàA$BôÖÄÁ¼aLfÄÁL ÖaàA0BÆaú4A Bàa BÆ¡þ ÆájÁ|àe0á|@òA0ÂdÖÆÁÅaòA$B¼ÁŽÀwx!”hò¸¡ Ö¡ L¦ Ä!rÅ¡ ÄáàAàÁdàAaÄ(¤jçä ª¡ª¡ª¡ªAäÆÖ¡ Ä!rÅA¢ÀÒÁVáœ!ža¢@ Âd bòÁdòaàAÆÁ¬áÌÐ!òáîÚàaÑd BÖÄ¡ ÄaòAàAò471Âdò@ÈÁÈA€8ˆ¥¡ò@$Âd0Â&òAàAàÁÈa’æD8 ÖÄþ!rÄaÄ¡àa bÆ! bàÁdæ~Á ‚)ä~òaàÁdàAàaàaàAòòA쀾 ÄÀÁdòAàAL#ÄÆ¡ L&Äa"wàašaàÄÄaÄ!ÄAaàAþ¡ Ö¡ ÆÁÅaÄÆ!àA âu$ÂdÆòA"Ä!àAòaàaòAàa Âd bqÄÆ!ÄaàAÆ!ÆÆÄaÄaàaòÁmBò¡ ÖAàA$B BàaàAàÁd B$bþàaàAàAàaÄ!Ä¡ ÆÁÇÄa"#ÖA$bòA$ÂdòÁÇÆÄ¡ Ä#ÆÆ#Æ¡ ÆA$BàaÄÁÅÄa0BÆAàA BÆaàA bàaàa bàaÄ#Æ!rMfÄ¡ LÄA"Ä!LÆÁM¦ Æ! Â&àÁd0BàaLfàáuÆ¡ ÖA"ÖLLÆÅA"Æ!àAò¡ Ä!.ºòaàaÄaàaòÁdàBòÆ!àÁd$bàAàaÄ¡ Æ!0bÆÁ ÚaZD¡þñaúÁ Ä¡ Æ!L& ÂdàAàÁ&¼ ¦…,±òÁ àaİ¡ †a¬a`àaÐa€àAÖÀdà 0b˜l¢ 2 àÁX àÁ8a¨!X¶A‚ÆA`¶Ax`à¬@B`~  Äþ4¡ ÄÁ&Ä¡ æÚÁ÷áüìáöÎAa ¢ ÖÆlBÆÆ¡ÄÇábÖaLf~!²Á¦aÁlbÆÄ¡ÄÇAàÁ&ÆÁdàá^ÇrüÉÅáòAàA þbà!Æ!úa4ÆÆÁdÖÄÆANòaNÀvmwÖÄaJÄ¡ÄÅÆ¡ ÄaàaÄa bÆ¡ |GxáÒw ÖAàa BÖ¡ÄÇAàÁ&î|þ4¡ÄÇ¡ Ä!Ä¡ ä@ÔÁÚ¡\½ÜÁÕÛá ÖAàaàa bÄáÎ "¢`Êlþ`Êl¢ Æ¡ ÄÄa bL¦ ^'Ž  Ún Á Ú ¼ÆAàa BJ\àA bÆÖ¡ þAF!ÄÁ× B°@숋þ¤¤Š!ÄÆA|}òAơĞaþ¡þþ`îÄáÎÇAÆÁd|=úa4ÆAÖÆÁd ÂdJü¸mÎÖÆÆAJ\ ÂdòaàÉÅò ¤!Æ¡ÄÇÆÄáÎÅÄ¡ Ä!Æ¡Ä×ÄLÆÆ¡ ÆAÁ~ÖòaÆd bÄ¡ ÄÄlÄòÆAÖaàÁ&J\àA "lÆAàaÆÆáu bÄÁ×ÇAàaÄÆ¡ LfàA BÖAàaþî<ÆAÖAàaàÁd blÂ×Å¡ÄÇ¡ LæÎÅ¡ÄÇÄÖ¡ ÄÄ!lÆL¦ ÆÖÖ!ÆÆAÆ¡ Ä¡ Æ¡ÄÅÄaàaàA bàaÄ¡ ÄÄ¡ Äa BÆL&lBàAàÁdyþvÜ(NàºqâÖmï!=û7îçeðˆ“à/Þx#2ãx“M6Þ 3·Ȉ¡8;åÏ8ùˆ“„â óKŽ¿,Ãã2¿,£#2ã@áC;‰þ³N>ð€òÐ8ù@(„âäáNÓœ0Ê(ã<4„Á³<ëÀ#Î8>á:ðˆO>눳<ç´q„nÜyç$¡8ð¬C$<âÀ#„âä3Ž8ãÀ#N?⌲<Á3<ãÀ#Î:~<ãG/ºôrM/¢^Ó DŽ“ÏCð<ÏC;Á#<–DAk­µZ8DŠÏ8ðŒ¨8žSN$G´,²GD2N>Á#<ë@¸<â:<ëÀ“ <ÿÀ£É8ðˆ³“8ðŒÏ8Xä!M»î¶[LâÀ#N>DŽ#<âŒO>ã@(Ï7óüóO?ó|óâ:<âÀ“„þÁ#Î8ëü3Ž&âäÏ:âäá:Dг<ëü2ŽÏ:ðˆ8ã á:⌓8Ž<\p‘<âÀ#<â@(<ë@8„ãÀ³Ž8ãÀ3‘â)„âù 2 ®³<ë¹<â¬8DŽ“8ãÀCV>Š8ùŒCó8ð¬#„â@¸Ž84¯3N>ð<4<ãäÏC>D3<ãúâ@(<눓8ëˆ8ðˆ3Ž8ùŒ¨8DŠ3<â@ø8ŽÏ8ðˆ8DŽOî⌳Nîðä³<âÀó<âÀ#„ãä#<ã@(N>þð<8ðˆ3<ùŒáCŽ#N>‘Ã#<⌓8Š¡8DŠ8DŠq@hâ<Æ(qÀCù€8à!xäCð„ÄqÀcÇCÞ7xŒâ€8òq@è!ãG>ˆ$Žq@Hù€8à1xŒBã€Ç8à!xˆ¹<ÄA$qâÈ‘Ä1‰ëȇ8 ´“|Äãñ€85xŒBG> $ŽqÀCùG ÆqIã€8Ö1Ž$´£1ŽØG?Ó|$á!<Æ‘qŒƒHë<Ö‘„HJr’‘„Ö@þ­#wDZ‡8à!xˆ8Öñ|ˆâX„qĹƒÇ:àA @è!ë€Ð8ˆ´xˆ 8BŠe0bâXÇCþ1Mi;8àÁ>„"ä ‡:ЋlòÁ |€8|ˆBâ ’8à!Ž|ìDðx<~!oˆãâ‡7váe<Ä¿ R>ıq@h ‚71ˆ"#¢è/¼±xˆBù‘ú±MÀ#ãÔ8à±xˆ#âÈÇ8Nàr@(â ’8qÀCð‘Æq@hâ€Ç:à!ŽxÀƒ8‚SànÄþcâX<Ä‘ uˆBâ€8à1qÀ#ã€G>þMŒBâÈÇ8ò1xÆ!xˆ ¼Å‚zË[xŒdG>à!"ã!Z5öy|ãw€‡8àa<ã”8Ö!Ž~ˆCdÇ8à1ŽuˆƒHâ€Ð8Äñ‹]¬B!R>ƇŒ〇8ÖqÀCðxÈ:Æ!xˆ#þrâÈj>Æ!Ž|ŒBâ€ÇCˆ4xˆBâ€ÇCq¬CùÈ<$Žu@H<ıxˆùX‡8Ö1qiâ€ÇNÄ1qÀcðx‘Ö!qé!ë„ò1q¬#Pâ€8à1qÀcù؉8ˆ$Ž|ˆ#ã€8 4xŒBâ€Ð8à1"ùØÉCà1íB‡8%xˆâÈ<Äq@è!ÊÇ85qäcðGäÆqŒãÈÇC౓Èåc' Ô8 ´qŒCðG Ä±xˆcâ ’8 4Ž@íBã€8Ö|Œã!þ‘<ÆA¤Àcù‡8 ô|Œã!D<ÄqÀCðx„ÄuŒãG Š |ˆBdÇCà±xŒC<ÄA$q@h'ʇ8ò1x¬ã<òñ‰cð<Ä‘q@¨‘‡8àñ@­c'ð„Æ¡qˆBâ€Ð8ևЌ’,O„q¬â€Ç8à!"%ëG‚À±Žx€#Að<‡DN뀇8à!xˆB‡8 ” ‰#râ”8à±xP#D<ÖÜÁcðX<Äu„@È`Dà!õC£þØ <Ö!Ž|ˆ#Añ8Ç9â!räBâH8Ö!Žq@è!;8à1šƒHë€Ð:¼‘£] CG¿XÆ.t„ qâÈ<ƇÀ#«Ó ½ísä qäC<Ö!q¬ãâÐ<ÖñqÀã!ðØ <ƱŽqœBë€Ð8 4=$Pã Rîà1xˆBÇ:âaøx¨ñH<ÖA¤‡@Hã€Ð8h¶qŒcý‡&Ä12â°â@$ò0g°u°u°u bðD²ãâ0ð0ð°ð ããëëâ0Bâãâþâ!ãâ!âçPðà åð!dã;!!â0ùð!âââã0 ;±ð0ð°â;±ññ ð ê!ââ°òë!ãÀ„ð ð°ëðâ0‡s¸ð ð0â!âÿ  ù ð°"ð0ð°ð {â0L(;!L(ã²s(L(ð°ð°ââ0òã°âëð"òð 2â0‡ë0²ð°L(ð°ð ãÀ„ã`‰ã°â!â!â0"þù ðððL8ððð ð ãÀ„ã;â!â0ð0s8ù1âð0ð0ð0ð°âÀ„ã!ãã!âÀ„â0ââ°ðLøãâ`‰ð0ð0L8ð0s(9ù0L(ð°â0L(ð ãâÀ„â02ðãã;â0‡ãâââð òã 2"2Løð0ð0ùðð ã!â0ë "ã;ëâ0ââ!ââã0‡â0‡!ãþÀ„âÀ„â!ããL(ëââ°ð°ðâÀ„â1 ââdë ð0ð 2L(ð02ð0âýù0ð ;‘ð 2"ë ù!â0ð0ð "2ù {(à°à°à à à°L("ð0"ù ’ L˜ àÀ„â!ë ù {8L¸ââ°¢¹‡ã â0"ë „ëðÔ Á„Á„â°"!0 ¿Àëëðð  yþããëÀ„ëÀ„âë ù ñ°‡ù ð ’‡ð ã‘U  ë0‡ëI ù ù0ð°ãð’‡ðëâë ð ²â ð ãð "ð ÿš0’ãÀ„âã ð°"ëã ððs(ð0ð ð ã0‡ë0‡ââI ëðð ð0""ððððð°ðã ý ¢â0²s8jÁ„ññù!ë òððù0âãâ°±â°âÀþ„ãâð0â`‰!â!ù âÞâ!âãÀ„â!â°{¸–Øë0 â°ð s(ð°àâ!ââ0‡âëâãÀ„â!ââ°â±‡â!ãy("{¸ÿš°ð0yë‡òð0ù0ð0ð "L(ë ð0ð0âÀ„!â ð ð s˜ã!ã!â šââ!ãã òð ð°ðð’â0ð ð ãðð ë!â0‡!ãã°–þøs8ðð"ë ù0"ð ð ð ãâ°ã!ù;!ð ð°ð0ððð ððë ð0"’ð0ðë ë°â!â!â0"ððð ð ð 2ð "ð0â;±ã ððs˜ã ð0"ëã s8±âââãâã ù0ð0ð ð°L(’ð0ð s˜‡ð0"²{ø’ã0‡‘âùãâ°‡;Á„;!âââÀ„þã!ãðë d!ð°âëâ!ââ0ð0s(s(ð0ð0ð0ð0L8ââãy!ã!ã!ãðð ð ðÿã "ù0s(ð0ð ð°òù "2â°ð ð0â°L¸²àð°’Us¸2ð0ð0ð0ëðë L(²â°ð0ð â yâÀ„âââ âë ð0â!âëù0ëââ°âÀ„ù!ââÀ„ë s( þ! ËÀëðÿ0£°‡ãâ°â±ãÀ„ëëëðð0ð0ð0"L8ðâÀ„â!±ðð y˜ ±ð°âã)ã°â!âââ°âëãùÀ„ëëâðâ  ð0ð°â0ð ""ã!ëâ0‡âã!ãâÀ„âБë ãëëÀ„Ye‰âã@ 2ù ãâÿ š°ãâãâ1ëðð ððã ±‡ë "{þ¸ð°ðððð2ùâãã0‡â!â0ð {ø"ð°âã!ãÀ„ããã!ãYõë  ððð0ð0L(ð°"ð ð ëâ!ã òã!ã!ââ0‡!ããâ`‰â!â0ððý š°ã¢9²{¸ââ!â!ã°‡ã!ë ²L(s(ð°ë ãâÀ„â;ã ã°‡â0ùëã!ãÀ„;±ãâãù!âÀ„ã!ã þL¸ù0ù0ð0ð ã°‡ââÀ„ã!ëë ð L(L(2ù0ð0ð°ùâ!y¸s(²ð ù0ââ°ð ã°âë ù0‡ã!1s(ð0sø2òððù "21ë ð ð 2ð ð ð ãs(ð ð°âÀ„âã ð°²ãã!ããâ!âã°‡âБãâÀ„;±ââ0L¸ð L8ð "ã ãÀ„‘ã‘ã`‰â0þððã2ðâ"{(ããÀ„â0ð0L8L(ù‡ùðð ð ð0ðð–øððãs(ð°òL(ãëðð0"ù°L(s8ð0²ùã!âð ëâââ!â!" ;ë‡ð°ððù s(ù òð ð°ðð²L("ëã0‡â!âãððð ë0ëðëë!âë!ë ;1‡ âëâÀ„â°â ° Œ0â!âÐëþ  ’‡ "𠲑Uâ!â°ù0s8ù0ë!ë ððL(’Us¸’âë!â°ð0ëÀ„ã!âë {(ð°ââããðð°â!ÿ £ ð0ðâ!ã!âù ðð"ð0ððð0â°ð0âÀ„;!2âù0â" âë 2âã ;!ð0âã ëðÄÁ#¸îŸ8MðÖÁ'N’‚Œ〇8à1xŒƒ#âŠ8à1xŒƒ ã€Ç:à1xˆÃ2‡D²qŒãAÆŒÀCðÇ8àáxŒ 8à!Ž|ˆ#(!ˆ8Tâ‚8–ÉAÄAËDYFÆ!xˆcùp<Äa™qHdðþG8"Ž#â È:à!Ž|Ä!Ç8Öá ¬Cã€Ç:’qdð<Æ!‰8D%âȇG "xˆƒ ýÇ:"Žq¬Ã!〇8"xˆ#(‡8òAqÀcâÈ<uD<ÆAqHd1ð<Ö!Žˆâ<ÄÅÀc1ðX‡8à±x¬ 8à1‰ˆÃ2<Ä1ŽuˆC"ã Èbà1xŒC"‹Aıx¬cY‡8à±qŒCù ˆ8²x8â È:Äq„`¿`Äà1xˆCš…8à±xˆc‘þAÆ!‚8ë€Ç8$²q¬C"Ç:‚xŒC"〇¼à!x,Fðp<#xˆƒ âàˆCà!x,‹<Ä!/x¬ƒ ‘ˆ8à±xˆc¹š H>Ö‡Dð‡8à!xŒCù‡8j$‰8„ –G>Æq¬ƒ â È:ÄÁ‘uˆƒ  882xŒCÇ:Æáx`„ š…&Ö!ŽuX〇8$â|`„ ‹!È8q$ 8àaqäc 8ÖAqÀCððAò1•HDðÈÇ8"‰`âÈAÄ!qäã<þÆAuŒc1âÅrÇ!ŽqÀCY <Ö!Žuˆâ€Ç:$"‰8$–‡8$2q¬CÁˆDÄqˆ 8Ö‡À#〇8à1ŽuLXðG"q¬câ€Ç:à1xˆù°Œ8-x8D"âˆ8Æ‘çqdùX<ÆAqHd± AÄAqÀÃ!ù<ÄAqÀcðȇ8à1‚ˆ#–<Ä!‘q¬câXÇ8$’qÀCð<ÆÁ‘qˆcŠGÄAqÀCðG>à1Ž|ˆC"ãàÈ:òq¬£â€‡8ò1xŒÃ!‡8àþ1qpDðG>ÄAq¬ƒ ã€Ç8òá‰8$â‡88"xˆcðp<ć#ɇeÄqÀc*ɇC2Ž|ˆC%ã€G>Æ!‘|ˆâÈ882qpDAÆ!‰ˆƒ âȇ8Æqdù<ÆqÀcëH>à1xˆc<ò!Ž|Œƒ ÉFá1‡Œâˆ8ÆAqÀcâX<Æáx¬£<Ä!qDðAòa‚ŒÃ!ð‡DÄAqHDð<ÄŒŠã€Ç8à1qp$ÿ€‡C"‰ˆC"ã È:à!þxXqq€‡u€‡qȇqȇÅà‡€‡u€q ˆup‰Xq€‡u ˆqq° ‰È‡q ‡€Œ ˆÅ€q ˆq ‡€‡u€‡|xxXxȇq qX‡€‡qxpˆ|qxXx‡u€q€qȇq‡uxXqËŽŽxXxX‚àQXFŒ€‡€‡q€q qX xpˆu‡|€‡qˆu€‡x‚‡q€qq€qˆqȇq€‡Xxpˆu ‡à‡XxxES qXxxx‡uþ‡u qàˆq‡Xx‡u€‡q€‡uŽx‡|€q q€‡u‚‡q€‡q€q€q‡<xq€q€‡q ˆu€q ˆÅ€q€‡u q ˆq€‡qȇqÈŽ‡| qà‡XxxXqÈŒq ˆqË€‡q€qÈŽx•xXq‡ q ‡‡upxxxq€‡qXq€q€‡q€qˆq€Ë Ë q‚x‡| ‡‰‚Àx‚xpxXxxX‚‡uq qˆþqÈq q€‡qÈxxX ‰xxpˆO$ˆu‚‡|xXqy‘qàq€‡q qx° qÈxx‰x‚x‚x‡|‡q‡° xXq€q‚‡q‡|x‡|‚‚‚Xq‚px‡qXxxXxX ‡àq‡|‡|€‡qÈqÀ¨|x‚x‡Èxxq€q‚‡qàŒˆq€qxxpxxÀ(‚‡|‡|€‡q q‡|ˆqÈx‡|€‡þqX‡q q ˆq ‡X‚‡qˆq€q ˆq€q‚‰x‚pއq‡|€q€Œx°Œu‡Žx‡q€qx° x‚° ‚xp‚‰x‡q€qˆqàˆqq‡ ‡‡‚X‡qȉ‚° xXq‰qÈq€q q€‡q€‡q qxpˆ|€‡u€q qXŒ|‚‡| qˆq ‡À¨|x‡| q€q€q Œ‚x‰‡|€æ€qoȇ~È‚X‰þ‰xpx‡qq ˆqˆq€qq‡uqx‚‡Å€‡Åàˆu‡u€Œ‡|Ë€‡|x°Œu‡u‚X‰xÀˆuxx‚XŒqXx‚‡qXq‚X‚‡|€q ˆuxxX x‡u€‡qX qàˆu q€‡uÈ‚° q ˆq‡q q€qXqPXF•xx‡u€ŒqX‡qpy‚pˆ|‚ȇq ˆqȳq‡up‰ŽX‡O‰pˆu€‡q€‡q ˆq€‡€‡uþ•xXq ˆq€‡q€‡€‡qˆu€‡ÈqXxxq qX‰•xpˆ|‰Èq€‡q€qÈ‚xxÀxpxX怇Å‚‡€qXq° ‡€qXxŽ‚X‰xXް ‚qqȇ ˆq€‡qxxx° x‚X‚‡uˆq ˆq ˆ|Žpx‚‚‚•‚x‡|xxÈË‚° q æ ˆqP q€qàq yYxX‡|€Ë€qx° x‚pˆu€þ‡Åx—|•xx° xqXx‚y‡u€‡q q ˆq ˆq€q ˆ|pxȇqÈq€Ë€ŒP4qˆqÈq€‡q€q€‡q‚ȇXxxÈq ˆ|° ‡€‡upxp‰‚ȇq‚xȇq q€‡q€‡uË qXqX‡q‡u€qÈqX‚xx‡| Ëxxxxxxxއq€‡q€‡|q‡€qȇq€‡q‡u€‡q€q€‡q€qXxx‡uqX‡qþˆqP‰q ˆqx‰‚pxŽÀ‚‡²T‰qàËP q€qȇq€‡qP Œ’q ˆ|q q€‡q‡|‡qp‰‡|q€q ˆ|‚° q€‡q‡qȇqpxȉ‰q ˆ|À(qXˇ|‡qÈq€‡q€‡€‡q ˆu€qàq€Œ ˆ|‚XËÈ3qXx° qX‡q q° ‡ˆ|pˆu€‡Xx‰‚‰x‚xq€‡uP q ˆq‡|ø‡€qX q€‡qÈq€‡qÈ3‡€q ‡€‡þq€‡P q€‡|‚‚‡ux‚‡u€qàqXx‡|‡u€‡q‡|ŽXq€‡ÅP‰u ˆuà‡È‡q ˆu q ˆ|x‡u€qX xXxX‰ÀŽxX‚‡q€qX xpˆu° qÈxxxȇq•X‡…e`xx‡|ŽX•x‡|ˆu•x°Œux‡|‡qx°Œ|€‡uàq€‡Åx‡u€‡qxxXEcq€qàq€‡ó]‚x‡qȇqÈqq ‡þˆq€q ˆqÈ‚xx‚xËP q€Œ‚Œ€‡q€q¨åuP‰u€q€q‡| q€‡u q q€‡u€q€Ë€qq€q ˆuxx‡|°Œ|€Œ‚‡u q€‡È‰‚‡|‚pˆq ˆq ‡€‡xXq€‡q‰Ž‰xx° ‰xpˆq€‡x‡|€q q€‡uÈ3qȇqP4q€‡uxX x‡u‡u‡q€qȇq€‡|x‚‰° ‰‡Å‡u‡q€‡q€‡q ‡þÈq€qàˆq‡€‡u‡|pxÀxÀ‚° ‚‡u‡uqà‡x° ‚‡q€qx‰‡|€‡q€‡u qˆq€Œ‚‡|¨åq€‡‡u•X‡ ‡€‡q ˆqȇ ˆu€‡qÈ‚xXxX‡qàˆq€Œ‚‡|€qP qÈ‚‚‚x‡|pˆqXq€qàq€‡upˆ|€‡u€q qȉÀx‡|€‡qȇq€Œ€‡€q°Œ|€q‡àqÈq€‡qP q ˆqË€qx‡q€‡q€‡€q þq€qàq€‡uxpˆq€q€qÈq€q q°Œ|€qq€‡u‡|àˆq€‡u‰Ë€‡q€qÈx‡|€qXqˆuxp‚‡|€‡q€‡upˆ|€‡qÈq€‡u€q‡u€qqÈq€‡q ˆq€‡q qŒ‚‡q€‡qȇ€Ë€qqÈ‚‡q qȉxX‚‰Xx‡q€‡qȇq€qà‡€‡q q ŒR‰qÈyø‡x•pˆq€‡€qx•‰À‰xpˆu€‡u‡q€q€q€þ‡u€q€q qXxX ‰X‡q€‡u€€O¼uâà‰ƒ·n¼… Å-8Nq׉ƒ7NãÀ³<96Ž@åÑ@9&<ãÀ#’8ðŒ#Ð:ðŒ#Ž@âäÃÑ:"‰Ï8ðˆÏ8‰ $NF"þÁ#Î:­#8ùŒÃ‘cãÀ3Ž8ëŒÃ‘@ã$8ðˆ8ùp´NFãÀ3Ž@" 4Ž8Ã<ë”Ï8މ“Ñ8­#’8ðˆ#Hðˆã˜8ëŒ#Î:⨠8ðä#ŽH‰$8ðŒ#Ð8ð$–Ñ8qO>âÄ<âÀÃQFëp”‘HðŒ#Ð8ðˆ#P>âÀ#<ëÀ3<â”H‰8ŽÏ8ðŒ#<ã$Ž@âä3N>â4Ž8ðŒãØ8⌓Ï8Hâ8¶Î8â¬Ï8ðŒ“‘8ðˆ“Ñ8ð$GùŒSš8ùˆ8ðˆ³NFâä3Ž@ãˆÏ:"Á“Ï8þ­#GðŒÏ:ùˆ#Ð8âÀ“Gëp$Ð8¥‰8‰“8ðŒ#<ùäóO?ýä8ðp®@â4<ãˆGᎣæ8ðä#Žcâ´8­#Î:ðŒ8ùŒ³< ´<âÄ<Á#< Á#N>ðŒÏ8Á3Î:jŽO>ëÀ#<Á#N>ãÀ#<âä#NFâŒ8ëˆ8ùˆÏ8âÀ³<ëˆ#Ð8ðˆ³<"e$NFëÄÁ(È0bâG>౎qäƒ#ð‡@qÀcÉÈ8òqäCã€Ç:Äq”FG>à‘˜ŒpD ëàÈ82þ’˜ŒŒ#’ˈ8àÁxˆ 8à1¬##â‡@82xpâ<Ä‘xŒ# 8Â5ŽuÀcù<Ä1qÀc<Æ!qŒâ‡@8’qÀÃ!ð‡@Æ!uÀCðàHFDqdDð<Æ‘qDãˆ8à!ŽŒˆ〇8à±xpdù‡8Æ!qD$G>Ä!’qÀCãȇ8"ŽqÀc‡8‘qÀƒ#ð<qÀCG>à1xŒë‡cÆqŒ#áÈ8à!xˆ##âÈÈ8à!ŽqäCãˆ8#þˆâˆ8²ŽŒˆâX<Ä¡&qŒcGFÆqd¥<Ä!q¬ë€Ç8à1ˆC ãȈ8à!ŽuˆãpŒ8Æq8f‡cÄ1pâÈ<3xpâ<Æ!uˆ#ðàÈ8à!Ž|¨iðG>Ä!q¬ÉÈ:Ä!uŒ‰É<Æ‘Œˆ##ð‡V’‘qÀƒ#ðÇ8‘qäãG>"xˆd 8Æ!ˆcùÇ8à±qä##â€G2­Ž#ðX<Ä1ˆãÈ8à‘qˆ$âÈGÆþqh 8Æ¡ÕuÀC¡‡VÅ¡UqŒqâÈ<Ä‘Ðâ6É<Ö¸|ÀCð<ò|Àã·ù<ò!xÈ#ð<òyÈùÀn>°‹Ý|È#ñÈv'}äCˆÃ®>ò¡ìæCùG>ä¡ûæ»÷½o?ö«ÄÝ7ûí‡>ú‘~ì7÷͇>ú‘Åå£ù¸o>îû|ôãÿøí}û¡äãýЇ†û¡áä£ùXÜ?òñ|ü£ÿÈljóÑôãñX<Ä1Œ##〇8à1xˆC  8à!­ŽãÈ8à!xþˆcðHŒH"ŽqÄ!Y‡8’˜qÀcѪ8à±x¬C¡‡@‘äcùȈ8Ö1xˆcðàÈ8ÖÁ­Šë‡@ÆqD$ðÈÇ:à!x¬ë<Æ‘x¬CðX<Ö1Ž|ˆ〇8ò!ŽqdDðÇ:ÄQü‚Ç:ÆÁ‘uh•#¡]ˆVÇ!ŽuŒ〇8à±xˆÇ8´*Žu„vâÈÈ82’qàV âX‡HÄ1qÀcâ€Gp»xˆC â€Ç8"äcâH>Æ!qÀ#〇HÄ!qhuâ€Ç8ò1xˆþcð<òq„#ðàˆ@ò!xäcâÈG౎äCG>ÆqˆC«â€Ç8ò!Œãˆ8à!ŽuÀcánÅ‘qdÇ:ÄqÀCáH>Æ‘˜uÀCùX‡@ıxˆÁí8’q„;#ãÈ8à!Žäc<qÀC$âGà!ˆ##〇8"ŽuÀƒ#qˆ@Ö!uÀCÇ:à!ŽqÀCðX‡@Æ!Ž…ÀcðÈÇ822qÀCðà<8qˆC ëÈ82qÀ#1ð<Æ!Ž|ˆ##â€Ç:ÂxŒCþ È8à1ŒC 〇8à‘qhu!ZÍÇ8´šqÀcðX<Ö‘‘|Œã€Ç82xˆâX<Ä1xˆC«âÇ:2"Ž|ŒCF¬Ã8ˆÃ:ˆ„8Àƒ8Ä8„8Œƒ8ÀÃ:ÀÃ8pDFˆ<ˆ<ˆƒ@ˆÃ:Œƒ8ÀÃ8ÀÃ8„8äÃ8dD>ÀÃ8ˆ<ˆÃ:Àƒ8ÀÃ8ÀÃ:ˆ„@Œƒ@ˆ<ˆ<Œƒ8Àƒ8¬Ã8ˆƒ@p„@Œƒ8Àƒ8Ä8Àƒ8äÃ8ÀÃ8h•8Àƒ8ÀÃ8ÀÃ8ˆ<ˆ<äƒ8Œ<ˆ„@Œƒ@ŒƒVC¸åƒHÀÃ8Ä:ˆCFŒCF$Æþ:„H,„HÀÃ8ˆ<ˆÃ:ˆÃ:ˆÃ:œ<ˆ<ˆC>ŒÃ:ÄBÀÃ8ˆC>Œ<ˆÃ:ÀCbÄ:ÀÃ:Àƒ8,<ˆƒ@ŒÃ:ˆC>ˆƒ@ˆC>¬ƒ8d„8dÄ:ˆ<ˆƒV‰ƒ@ŒCFˆ<ˆCFˆƒV‰n‰ƒ@ˆ<äÃ:äÃ:ÀC>p<ä<¬<ÄC<äÃ:ÀGÄCh‰<,DFˆ<ˆƒVåƒ8„8h•8Àƒ8Àƒ8dÄ8äÃ8ÀG„8äÃ8Ä8d„8„8ÀÃ8pD>ˆGÀƒ8ÀÃ:hU>¬<Œ<äƒ8¬ƒ8¬ƒ8ÀÃ8ˆÃ8Àƒ8hU>ŒÃ:dÄ8Àƒ8Àþƒ8hÕ8Àƒ8ÀÃ:ÀÃ:ÀÃ:dÄ:ˆÃ:ˆÃ:ˆ„8Àƒ8äÃ8ÀC>Œƒ@äÃ8d„8dÄ8¬ƒ@Œƒ8Àƒ8ÀGäÃ)iÕ8¬dÄ8ÀÃ8dÄ:„8Œ<ˆƒ@ˆD>„8ŒCFˆÃ8„VbÀGÀÃ8ÀÃ8ÀÃ8Àƒ8dDbœ’@ˆÃ8„HÄ8äƒ8ÀC>ÀGhÕ:ˆÃ8ÀÃ8„–8Àƒ8äG¬ƒ8ŒÃ:ˆƒ@ŒÃ:ˆCFˆ„8ÀÃ:ä<¬Ã8ä<ˆÃ8Àƒ8„8¬GhÕ)åƒ8d„8þÄ)ÁÃ8¬ƒ8Ä8dÄ:dÄ8ÀÃ8Àƒ8¬ƒ8Àƒ8„8h•8¬<ˆ<ˆ<ˆ<ˆCF¬Ä:ˆÃ8ÀGàÖ:ˆC>¤8Àƒ8Œ<ˆƒ@Œƒ@¬CF8„8¬ƒ8Àƒ8Œ<ˆÃ8Ä:ˆC>ˆƒ@ˆCFpÄ8ä<ˆÃ8Àƒ8ŒÃ:ˆÃ8ÀÃ8äCFˆChC>Àƒ8Àƒ8ÀGŒ<ˆ<ˆCFp<ˆ<Œþ<Œƒ8d„8Àƒ8dGhGÀƒ8ÀGÀG„Hˆ<Œ<ˆ<¬Ã8ÀÃ8ÀÃ:ˆƒ@ˆÄ:pÄ8Àƒ8ÀÃ)Ã:ˆÃ8„8ÀCbÀƒ8ÀÃ8„8„8Œ<ˆÃ8äƒ8ÀÃ8ˆ<¬ƒ8Œƒ@ŒC>ÀÃ:ˆC>hÕ8äÃ8ÀÃ8ä<Œ<ŒC>„8ŒƒV‰ƒVC>„8Àƒ8Àƒ8ÀÃ:ˆ<ˆƒHÀƒ8dÄ:GÀÃ8äƒ8ˆD>¬ƒVq<ˆƒ@ˆCh‰<ˆCFp<Œ<¬ƒ8ÀGŒCFˆ<$F>ÀÃ8Ä8ÀC>pD>ˆÃ8äÃ8Àƒ8„8ÀGÀƒ8Œ<ˆþÃ8¬G„8ÀÃ:DbŒƒ8„–8ÀÃ:äƒ8¬ƒ@p<ŒCF¬<¬ƒ@p<Œ<¬ƒ8ÀGÀÃ:p<¬<ˆƒ@ˆCFŒ<¬ƒ8¬ƒ8ÀÃBˆ<¬ƒ8ÀÃ8ÀƒCˆ<,„@ˆÃ:„8dD>Àƒ8Àƒ8„8Àƒ8ÀÃ8ˆCFp„@ˆÃ8Àƒ8Àƒ8ÀG¬ƒ8ÀÃ:Ä:ˆÄ:ˆÃ8¬CF¬G¬ƒ8œRF$d„8äChq<Œ<¬ƒ8Àƒ8ˆDFþˆdÄ:ˆÃ8¬ƒ8Œ<¬ƒ8ÀÃ8„8ˆD>ˆˆƒVq„V‰<¬Ã8„8Àƒ8h•8Àƒ8Àƒ8Àƒ8„€(,# €8¬<Œ<ˆ<ˆ<ŒÃ2h ³°(¬ð(Œ k(Èð(Èð ƒ(Èð(°°(ŒÂ ‹B ¯0 1 ƒÂkÂ((ñ B7ñ(°ð(h‚(¬°(¬0(@ñ ‹Â ƒ±&ˆ‹Â(„ñ(hÂ(hÂ(¬°(Üpþ‡1 Â ‹Â(¬°(Œ‚&ˆ ¯°(Œ ‹Â(h‚(€ ‹Â(@ñ2Ä8Àƒ8dGÀƒ8ÀÃ2Äñ(Äñ ƒ‚   ‹Â Âç°&ˆ‚&€Â ‹B,‚ ƒ‚ Çò(¬p,¯°(Œ‚&ŒÂ  ƒÂ(Èð(ˆÂ(¬°(Œ Dz ‚‹‚ ‚ ƒÂ B ‹Â(Ȱ(Ȱ(°°(ŒÂ ‹B'k(hÂ(¬ð((1(h(°³&ŒÂ ƒÂ(°°(hB,C±(Èð(Ȱ(Œ‚&ˆÂ  ‹Â ƒ‚‹(ŒB'ƒ‚&ŒBƒþƒ Â={4‹Â(°°(Ȱ(¬°(Œƒ‚ ƒÂ ‚&Œ‚ ƒ‚ ‹‚&ä°Gç0ƒÂ ‹Â ‚&ŒÂ‹;ƒBƒÂ(°°(ŒÂ ‹Â(hÂ(|4‹Â(Ü0((ñ(hÂ(hÂ(\µƒÂ sÀ( #<¬ȆH¬GÀƒlÀÃ:ˆ<ˆCh‰CF¬ƒlŒƒ@p<ˆ<ˆ<ˆ<ˆ<äGx<$Æ8Ä:ŒCFˆÃ8Àƒ8ÀC>ˆÃ:$<ˆ<ˆ<ŒƒV­ƒ8G¬$<ˆCFpÄ8Àƒ8hGÀÃ:ÀÃ:ˆƒHˆ<Œƒ8ÀÃ8ˆ<ˆÃ8ˆ<$ˆ<ˆ<Œ<ˆƒ@ˆ<ˆƒ@ˆÃ:Œ<¬ƒ8ÀÃ:ˆƒ@pÄ8ÀƒþlÀƒ8À§Âƒ8Àƒ8„l„lŒƒ@ˆƒHÀƒ8Àƒ8Àƒ8Àƒ8Àƒ8GÀCbŒ<È<ˆÃ8Àƒ8DbÀGŒƒ8ÀGÀG¬GÄ:ˆÀƒ8¬ƒ8„8D>$Æ8Àƒ8ÀÃ8ÀÃ:ÀCb,GÀÃ8ÀCbŒÃ:$†H¬GŒ7p<È<ˆ<äG„8ÀCbÀÃ:ˆÃ:Œ<¬ƒ8ŒGÀƒ8Ä8d„8GŒƒ@ˆƒ@ˆCFˆÃ8Àƒ8Àƒ8ÀÃ8ÀƒläGÀÃ8Àƒ8ÀGˆ$†@ÈÆ8ˆCFˆƒ@ˆƒ@p¬<äƒ8¬<ˆC>ˆÃ8ˆÃ:ˆÃ8Àƒ8d„8Œƒ8ÀGÀÃ:Œ<ˆÃ8¼uëÄ­ƒ'qðÄ%OÜ\qðÄ5—PÜÜ|âdŽ«).á8q2ÅÁO\Bˆ ‡&„xR\BqùàA<)N溄ëÄ%7Wu$DùGBÄ1—xÀCñþÈGBâ‘„äCðGMÄ‘“ˆ#ðGBÄqÀC <ÖqM,cðÇ:à±x@D&â€Ç8à‘qŒCðx<Æ!Ž„Œ#!âøeBÄq’qÀCë€Ç8à!ŽuÀcðxDà!xŒ#!‡LÆqÀC'Ç8’qˆã€ÇPà!Ž„@ùÇ8Ä‘qˆã€G>Ä‘qÀC2Dà!Ž„ÖqÀcðX<ÄqÀc'<Ö|ˆcùGB qˆþ‡8à!Ž„Œù€Ç8"xˆã$ãHˆ8ò¸uœd GBÆ!Ž“Œ〇8ÖqÀ"ðGMò!ŽqÀ#〇8Ö!xŒ〈LÄqÀc <Äq¬Cð<Äqq$d2HBıxŒ#!â€DÖqÀcð<Ä‘qäcë€ÇP2qÀCð < qÀ#ãÇIÄqÌeð‡8à1Ž„ŒC G>Ä‘qÀCMGBÄ‘q$dðÇIÄ‘qÀ#ãX<òñ8qÈdð<Äq$D Ç:à!xˆcâHþDd‘“ˆ#! 8à!xˆâHÈ8Ä|ˆ#!C©ÉãNxxñäÁ‹'ï ×ƒù†z/b¼ò†FÌ74ÞÁxó‰“w0¼xãÁ‹{0_È|óEÌ/¼|ââÁ‹1ßÁ|ñBÊS2Ÿ8yš–ÁË7NÜ:x'ÅE·nœ¸|ãNo\pqðÖ‰Ë7ž8x⊃'Þ8qOOÜÁ|âàårܸ|ãàqÝÉ|îÅÁË7ŽvpxùˆO>ëÀ#<ãˆ8ðŒsÐ8ð¬3Ž8ëŒsÒ:ãˆsÐ8âäÏ8âDt’&âþÀ3Ž&#<î”Ï8´Á“Ï8â åž8#<ùŒ³N>ãÀ#ÎAùˆ8ðä#mâ¬s8ðŒ#<âÀ3<â$ÎA'Eä^HùŒ#<î‰8ëÀ³<âÀsÒ:âŒÑ8ðä#Î:ðˆ88!‰’8‰‘8ðˆ“8ðŒ8´<ãœtÐ8ðŒÏ8s<ãˆsÐ8ÁäÞIðˆ8ðŒÏ:ðŒsP>â”Ï8âÀÜA'å#Î:âDä<㜔8‰³<ã$N>ð¸7<ãÀ3<âÀ3ÎIðŒ8ðˆ³Žbâ”Ï8ðœÏIðˆ“Ï8þ1Š3NHî‰Ï:ðŒ#ÎAëÀ3ÎI‰sÐ8‰Ï:‰Ï8ðˆÏ:â¬Op!s<âÀsÒAã4<ãD”<ãä3NDâÀã<ãÀ#NHãˆs8ðœt{“8´<눓Ï8⬒8ðŒ\>â¬8ðœ8ðŒÏ8‰³Î8â¬ãÞII+<â¬3Ž8ðä3<ëŒ#<ùH+Î:‰Ï8‰Ï:ð¬8å3ÎAãÀ3<âD4ÎAâÀ#ÎAãÀ#Î8눳<âÀ³ÎAùœÏ8ð¸'<'ÁsÒAãˆÏ:ðˆ³Žbãˆs8ðä3ÎAëˆRþpO>ð¸'Î8Á­Ï8!#N><ã4<ãÀÜAùÀã^DâD$ÎAãÀ3NHâÀ3N>ãÀ“{âÀ#Î8âD$<ùˆ‘8ãˆO>ðŒÑ:!2€ˆCòˆGHâÑxä#Љ<òq¯äò€G>à‘yD$.‰ÇA¼xD$ñ8H<à‘ƒÄCð<äyÄCq‰<ò—ä#ùˆ<òxä#‡ò8H>’xäñÈÇPò|ÀCñÇPäqxÈñ€G<à‘ÈÈCð<ä3ÂãŒò8H<äxhëþ<Ä’q„DðX‡8"2xŒ#C<Ö!ŽÁã$GDÄq¸î‡8Æ!ŽqäCëÎAÄ’qˆ#ðÇ:Ä1xˆã âÊ8à1Žuˆcð@ÀË`<Æ‘ƒˆã /ƒ9 ðXÇ:""ŠˆhbâÈÄqDC‘V>"xˆ#"'ÇIà±iâXÇIÆ!Žƒˆ#'ÊIàáž¡œ$Á<Ä‘qÀcðX‡8àþ!ŽqÀcG>"²xˆƒ6ãÈÇI"2Ž|Dù8È8"Ž|„DðÇ:Ä1xˆî‡8òuˆcâ8ˆ8ÜqÀã$qÏ:Ä1xç î‡8s’ƒˆã ã8HpÆ±Žƒ'âˆÑIà1xˆãÇ8ÄqŒ#ð<Öuˆ㈈8à!ŽˆŒ#$ã8ˆ8à‘¡ˆâ<Äuˆ#ðXÇIàqxˆ#$ã€Ç8"÷dâX<ÆqÀCðGDN²q¸Gù€Ç8à‘ƒŒã ãX<Ä1Žƒˆã 〇8à!Žuˆ#£X#þqdš€åyt!ð‡ð€;ä!òˆÇã‘|À#ðˆ<ΗUË#9có8æ0.ò€‡<ò!xÈ#ð€c<Œ—|ÀãŒñ8c<"xœ1.òˆ‡<â!xÄÃØÏ†‡<àalxÀ1ÆÎ<ä‘3Âò€‡<ð!xàCðÀ<àxä#òÐÄ4"Žˆˆã€Ç:²ŽƒŒ 8à1ŽƒŒCùÇAÄ÷ˆãpä8"ŽƒäãGDòq¬C1ã€ÇIÖuÀÃ=â8H>Ä÷Ddð<Æ‘qÀ#ãXþñþ}pýëÇ:Æ!x˜}øºÚÿ1iŠ'ÑqÀCð<ÄwqÀ#ã0û:ÆwxäcðÈÇ8Ì>Ž“Àcf‡ÙO’“ÀCx<ıŽqˆï ´N‚÷“Àcð8I>ÆavqÀcxxãŠ'n\>ãÖ‰;8.Ÿ¸qðÖË'ž¸|ðÄÍ\OÁqðÖ‰[§“à8xâò—ï ¸qðÄÁo8šâà‰GPÁuu®„—O'Aqãò·r¼qùtÔIp¼qlj;(nqÅå7NÜ8šãàƒgqò9h‚V‚gšf‡ q'qò'q$h‚¾‚gœ|Ä!Hœ|qžuÄ™IœƒÖÑ qÆG'‚Ä!h*xÄGœuÄ a”_ `xòÑi”xäa’I}ºÐGž|° ,òi’ÉxÐù¥It~Ygd~Aæxä¹g™]~¹&žs~'žs~Gžx–ùå—eÖ‘žxÙå—qva2živA&‚ð‰‡És‘yò‘çœ_ÜGže´9çoAæyà9ç|â‘gš<³'ž{vñf™eä‰þgš<³Gžs~ñ&O&ãÉRž|ø§Xc`Ÿ|à‰'Ë|ä‰G“eàÉGxV‚gxt‚§Ûqàžqòž|ÄéòqÒ'ŸqàGxÄgœtu‚gxÖgxÆI·[qº§Ûq ÎGxÄG§uÄg%º'ÝqÖG'xt‚GxÄG'xÄgxÖÀXcûÙ'qºžq4'q4gnÇžqò']qà'ÝqºÍgxÆ)¸[qºžqt‚GœuàGxƧ[qº'ŸqtJWœuÒòžu¢gxÄ'qòžqºþ'jqÆÉGœ|ÖGœtÅç+xÄÉGœtǧÛqàÑ©[àGœn¿êVxÆqàžqtZg%q¢NWxVJWœtÇéV'xòž|tZgœ¯ÖGxÄGœuÆž|¦žqàÑ  'ŸqòGœnu‚G'xÄgxÄgœtóžqºžqºž|Äç+qºGxÆÝ8`©äCðGºt’®¯t+ãH—8ò1xŒCëG>ıŽqÀcð<ÄQ°qÀcQGºò1qtkÝG·ÄÑ-qlðGÔÆqÀn%√8ÖÑ­þ|Œâ€Ç8ıxˆã€Ç8à1x¬$] 8º%xˆã€8౎uŒC'ëXI·tÒ-Lãè–8º%ŽuÀCðX‡8Ò•qÀcé<ıxŒCðȇ8È(ŽutKé<ÄÀCÝG·ÄÑ­qˆã€ÇTò1Ž‚‰# 8à±’nâè–8Öqˆ〇8à!xˆc%âÈÇ8Ä‘®•Àc:‡8ò1¤kðÇ8ÄÑ­qÀC<ÆqˆcðÇ8à1xŒC'ãÐIÁıxŒ£[S‡N¢6Ž‚­#]〇8 –qþtKéÒI>Ä1ÀˆbŒ€8ƱŽniBøÈ?ºÐ$}ä#òÀ‡>äyàCû@Ç/š´_ÜòˆÇ4®!wXCL‡<îñ yœãï`Ò=à!xXcL²F6äqeü‚IÖX†<àakàCøÇ>Ðñ‹,áCèøE<¬± yÜãÙG<¬q}ÜãL²Æ2âehCçøE6šdeÄ#Ö†<îñ‹lÈY’>²€b+MЇ<ð&åƒIø‡(–1Žn‰#:é<Ä1xˆ£[:<Ʊxˆc%ÝZ<ÄŒëøJfá!ŽqÀþCÝÒ <Æuèã-<ÄqŒC'ãXGpᱎn‰#ÝG·È(Ž|è¤[â­8” q¬C(laûñÀcÝÒÉ(VQèd%ù€‡NÆ‘YqdVãèÖJÖ!xè〇8º%ŽuÀcùí:Æ‘xè$¸â€Ç:Ä‘ÙqtkâG·ÄÑ­qtK'ðGfÇÑ­qq뀇NÆ‘qˆãè–8Æuˆ£[+é–82+xŒ£[:É<Ä1Ž|ˆ#³âè–Nà1ŽàŠ:Ç8º¥“|tkâÈ<Æ!ŽqÀcðG·Æ‘qÀCãèÖ8à!ŽqÈvþâXI·Æ‘åŠ#³ãÈG·Æ‘qä£[âØîJà!Žqˆcâè–8¶+Ž|¬:ÇJÖ!xˆâȇNà!xŒcðGpÇ‘xè〇Nà!xŒ 8ò!Ž•Àc݇lÅÜuˆ£[ã€Ç:¾’ÙuÀcùG>tÒ-qtK™<ÄqŒcâ€Ç8à!Žq(WðÇ8à1xˆ#³â<Ä‘Yq¬DðG>à!ŽqÀCðXä&é£ ñЇ<ì`‡LòÀ‡<ð!| c»þÈÓ/À&¡ãò¸G-Ü!}0é¿ðÆ/Ö±,éèX>âñ‹x0 ¿ÀyøwÀy@‡_`}‡}@‡]ø…]ø…]‡}kX†_€y8‡_htø…x@‡]À‡xø…z`tø|¸‡_`|‡_¨yÀtXyˆ‡]؇x|ØyÀyX,}Ày€ð &ɇ&Á}}Ð&ÑyÐMX†q€‡qP.Ø.qX‡nÉq€‡qX‡àʇqX‡à‡nÉq.€q.€‡•èq€‡|èq #xq€‡qxxXx‡n€2þê–uÈ,2‚‡uè–q‡uÙ€ð ¯ȇq-MxM€‡|‡•èq€q‡n‡nùŠ|‡u€qèqÈqȬux‡u€‡q€‡q€qX‡àx‡n‡n‡¯€q€‡|‡nxx‡Ìxxx‡|‡n‡Ì‡u‡nÑ Ùxx‡|å‡|X‰n‡n‡nxåÊqȬq®|qè–q€‡qxX q€‡|Èq€qè–q€‡|X €‡|xqXxȇu€‡q‡u€‡q€‡•­qȇþ©€‡q€‡•x‡nxx‡|å‡nq€‡q‡nxX‡Ì‡|xxx‡àåx‡q®¯­q‡nxxxxqè–q€‡qȬqx‡nqØ®q€‡q‡u‡uèqȬq.q‡|‡Ì‡ÌÒ xÈqxx‡ÌÒ‰|‡nq€‡|xxxÈqȬ•€‡|xx‡|‡u€qè–©€‡q€q­q‡nÑ Ù‡íʇqЉÌ‡Ìxxx-­qØ®nÑ xXþx‡nÑ xX è–qxÐ xÐ xxxq-qx‡ÌÙxxXxXx‡|ȬqÈ,q€‡uÐ xxÐ xЉuq­qè–q€‡q.qȬq€‡qè–qȬ¯€‡|˜Šq-qÈx2Ò‰nÑ x‡n‡Ìš xX‰Ìxx‡u€q€‡qèqȇq€qÈxÐ xЉÌZ‰|‡ÌÙx‡u€‡|‡Ì"£d`Xqè–uÐ}|`’}Ї.؋ƒyÀ‚yÀƒ|ÐyÐyÀ}¸‡_`’xÀ‡}8‡iþøPù…|¸‡]pByX¬{Ø…_¸†}ȇÅZ‡iøPùy¸‡_À&¹‡_ÐtØPYdø|Ї&¹‡]¬|‡{ø…kØ|¸‡_`’}¸‡_؇{ø}@‡_‡|‡{ø}8‡_|ÐtødøPù…}@‡_`|`|}Èø‡p×È|pB}`’}`’}ÐyÀ&…e‡nqX Ùxx‡n‡•Xx‡|xxxXq€‡qȬ¯X‰nYq-q.qè–qÈq‡nY‰àÒ x‡|€‡qè–q€q€qȇ̇nþx #€‡u€q€q€‡uèq€qqÚ€uЉq€‡qxxЄ•€‡|‡Ìxȇq€­u€qȬq€‡qèqÙxЉ|xq€‡q€€q€€‡qÈåxx‡Ì‡q€q€qÈ,Xq€q€qP.qè–q€‡¯è–q€‡u‡q€qX x‡q‡|x‡qè–q€q€q€q€‡q€‡•€‡qx‡nx‡u‡Ì‡qȇn‡|è–u‡nY‡qè–q€qX qȇÌZq€qè–qXqþ‡|€‡u‡|Љ|‡q€‡u‡|‡uèqÈ,qè–¯€‡ux‡q€‡q€q€€‡qÈx‡n‡qèq€‡uåx‡qè€qX‰|‡nx‡í‡qÈx‡q.q€‡qÈxX‰|Љq€€€qÈxЉqȬ¯ÈxX‡nÙÒ Ùx‡qèqè–q®q€èqxX‡nxX‡qÈxX Ù‡•èq‡|‡qXqè–q€‡q­q€‡uÈÈÙ‡qȇn‡ÌZ‰q€‡q€qèq‡u‡nxþ‡uèqèq€q‡|è–•€qȬq€‡¯€‡q€X‡qȬ¯èqÈ,qȇ̇|-qèqȇnÑ xxX xÈq€‡q€€qx‡nY‡q€‡qè–q€‡q€qxx‡í‡n‡|èqqȇq€q‡|x‡ÌZ‡qèqȇq€q€‡q®u‡|‡|x‡q€‡qè2ê–u®qȬq€qÈÈq€È,q-qÈqxXqè–qØÎqÈqxxÐ xq€q€q¸cxxx‡…_`þ€‡¯€M8×|`}è+è=ø˜ÀyÐypB&A‡]|Ðy¸‡_|tØy¸‡]X‡|pBy¸d¸‡_Ð}‡{øp‡|@‡_‡{Ø…}`tØ|à‡_‡}À}`’}À}‡{Ø||ÀyÀyømØpÐtØ|`tøy¸‡_À‡{Ø…xÐy@‡_Ї{øyЇ}¸‡_¨y؇}‡}ˆ‡_8×s•‡Ôq؇p€&ч|`|`’|‡Ô…e€q€‡|‡nxqȇq€qè–|‡u€qXxøŠ|þ‡u€qȇ•‡Ì‡nqèqȬq€‡;Î,qèq€‡qÈq€‡•ЉÌ‡uq€‡¯È¬;†q€‡qПnù x‡nxxXxX‡×vð×€×îȇqÐxxÐq€‡q€‡q€‡qxȬq€‡q­q‡|‡u€‡q€‡|xxЉnY‡n‡nщn‡à‡u€‡q€q‡nqèq€q€‡|Ù‡ÌZx‡Ì‡q€q€‡qÈ,q®qȇqè–|xÈq­q‡nɇ•‡n‡ÌÒ x‡|q€qèþ€qȬ•€qX‡qè–uX ÙxxÐ xÈq€‡uX qèqèXx‡ux‡uè–q€È,q€‡q€‡¯èqèqØ.q€‡|øŠà‡uxq€q€‡q®qxqÈq€.qȇq€‡qÐ xx‡nxx‡uxȇq€È,qX‡q‡|‡nÉq.q€‡qÈ,q€‡q‡ÌZ‡qx€q‡ÌZ qÈ,q€qè–qȇqxqȇqÈ,q€‡|Ð x‡nqX‡q‡n‡qxÈq€‡q€þqèqX‡nq€q€€q€qX‡nY x‡n‡uX‰nÈq€qè–qx‡íqè–qÈ,qX‡q€qȇqè–qЉàÙÒ å‡nq€‡;†qX‡qåZ å‡|X‰n‡àÒ Ùxxq€€‡|‡nщnx‡à‡uX xȇ•Ð x‡u€€‡q€‡qxx€‡¯è–q‡nxqèq€q€‡qЉnq€‡qЉ|‡qø xX‡nx‡Ì‡Ìqxx‡Ìx‡ÌxþxqXxxЉn‡|€‡q€q€‡|xÙZxQ@F€uÈ,qÐ}‡|Ї}Ї~è‚}Ї|Àz,ô°èÓ—OŸ<}ûîýÚ'O_>y»äôö+Ÿ¾eÚôɃ§ïÜ/y÷~•Ó'o—¼}ú¬íÂÏš6|ò¬ý’·ÏÚ0y:Åå“§ß>t¿äáÓ¹OŸµeòÐýÚwï—6|ò¬ Ûwî—>yÖ´É»gm˜¾s¿ôåË'Ïš¶|òà‰“wïW>yùtê˧O_>}úý OÞ€ÿè+{÷°¾|wñå“§Ož¦eðà­ƒ'ÉëÄM7nÝdqðÆMþž¼îòäqâòÁWZž8“‰c8ãÀ#<ãÀ#Îd˜å8“Ï8ëˆ3<žÁ#<ãÀ³<ëŒ3™8ãL&<ãL&Î8“]¶Îeã¬#Î8ëÀ#<â”&Î8눓<â”&NiâÀ³Ž8ˉ3™8ðˆ3<âäSÚeðŒ“8ðx6N>âÀ#Nië”&N>ðˆcÝr—M6<âT'Îdâ éÙdãLvÙ8þ“³œ8ã,'Î8ù”vÙ8—ÁsÙdâÀ3ÎrâŒ8ãÀ3<ãä3™8ð\æY>—•&Î8ë\VÚ8¥‰Ï8ðl Ï8ðŒ³Üe¥]Ï8““<ãä3Ù8ðä3<—å3Ù8Ës<âL&<ëˆ3Ù8ðŒ³Îdâä#Î8ùÀ3N>ðˆ3™8“­Ïe“3™8ðˆ“ÏdëT'<ëŒÏ:ù`6Ù8ùˆ8ùL¶Ni⌓OiâÀ#<ãˆÏ8ùÀ3<âÀ#NiâŒÏ:âŒ#N>“‰3ÎdâÀ#Î8ðˆ3Ù8ðŒÏ8ðˆãY>¥‰“8“‰gðŒ#ÎdâÀ3Îdãˆ3Ùþeðˆ8ãÀ#ÎrâÀ#<âÀ#N>ðˆSÚ:âŒSšg¥‰3<ãL6N>âxfÝ:¥]6N>ðˆƒfi—Á#<ëÀ#<âL&<âä3Ù8ðˆ3™8“­3N>¥Ï8ðˆ8ðŒ3™8ð\8Ë]6Ni—Á#Î8ù\÷dãÀ#NiëÀ#<ãˆ8ðˆÂ(Ë02<ëL&Ž&ˆísWÿèÓxü€Çû v×=»è#Ï]ùœó 2Ëœ³ >úÈ3Í/¿d³Ï=¿È£Ï=¿ˆ³Ï9¿ ³ 8»ì“O<ÖtÏÍ/wÝã 2¿,“ bûܳË.~Àk cûÈÇ>¬1Œ{üÂþÈøE6ö¡{üùˆÇ2º—}è㿈‡>ö‘{X£{˸†>»ä£ù¸K>ô‘}ØG>ö¡@ýȇ>ò‘åÝeù8Œ&–1Žêˆã˜Ì8ò!ŽuÀC“<Æq¬£4㘌gÄqLF“ÇdÄq¬c2ë€Ç8à!Žq\¦4ùÇd<qÀCðÇ:Æ!ŽÉŒc2ã˜Ì:à1xŒ£4ã€Ç8&3xŒCù‡8à1x¬ 8à!xˆ˜Ç8౎Ëhb2ëÐÄeJ³Žqˆ£4â(8à‘q Iðȇ8à!ŽÒŒãþGiÆ1™qÀCð<ò1ŽÉ\âXŽgà!Žqäcù<.“qLf—™Ì8ÄQš|ŒC“¹Ìdòá™êˆcðÈÇ8&3ŽÉˆc2âX<Ö1xxF“GiÖQšqˆÃ:—Ç:Æq”Fë€Çeò!Žq,gâ€Ç8à!x¬cðÇ8à!xŒC“GiÆq™ÒŒâ¨Î8à1ŽËÀCùÇeà1ŽÉäÃ3¥‡8à!xˆ〇8Öá™Òäc2ã(8J3xŒc2ù<ò1̬ãXN>Ä1ŽÒŒCðÈÇ8J3qäCðÇd.“qLFðþ<Æq”f˹ <ıŽqˆcðG>ÄqLFð¸ <.3™qXç2“<ÄqTÇ3“‡8&“qLFù‡8&#x\âX<ÄËLfð<ÆQš|xf2ãÇþdÄ1™qˆ£:â€Ç:дxŒ#☌8J3xŒ〇8à!ŽÉˆc2—™Ì8ª#xŒc2ù‡8Æ1qÀC˹ <ÄqÀCã€Ç8&ã™u”&ã˜Ì8ైŒ<ıŽuÀùèÇ>îÒ~taûÈG?ú‘~ìCýâ>ä±}àÃÑýÐG?òÑ}ÈÃÑDÌÇòö¡|è#úˆ´>òq—|ìCû@Ç/ð¡}¦B\Þ>îÒ|8ûÐG>ö¡{übùØG>ô±ÃDºúp´>úq—~ÆÑ‡éÇ]é|D:ýÐG?öAÄ}¦wÙG¤þõ‘~¦úˆ´>ú‘MLC㨎8àq™qÀC㘌8àqxˆc“Á <Ä‘xˆ#âÇdÆ‘Ï,gð<Ä1xäc2â<Ö!ŽÒˆc2 8&#xŒ—‡8&³xˆ—ñL>.3x`ëÇdÄq¬ 8à!xˆ£4—‡8à±MÀcðÐÄdÄ1ŽÉˆc2㘌8ÆQšuÀCã€Ç8à1ŽÉŒcˇ8òqxˆcðÇd.qÀcë<ÄQq”F“Ç8Ä1Ž|”fððL>&#ŽqäâðÌ:Ä1qLFžÉ‡8&þ#ŽÒˆcë¸ <ÄqÀc“<Ö!xˆ#“¹Ì8à!ŽqÀ3“ñ <ıœu\f“<ÆQšuLÆ3ð¸Ìd.qÀC“¹ <Æ‘x`f2âÈGiÄË”Fë¸Ì8ò1™qLF“¹ <<#Ž|ˆÃ3ù(8ÀÃe”†8äƒ8Œ<¬Ã8Àƒ8ÀÃ8LÆ8Àfäƒg¬ƒ8ŒÃ:ˆCi¬<ˆ<ˆÃ8ÀÃ:LÆ8ÀÃeLÆ:ˆÃ8L†8ÀÃ8Àƒ8¬Ãr¬<ˆÃdˆ<\<ˆÃ8ÀÃeÀÃ8,‡8ÀÃ8ä<Œ<ˆÃ8ˆC>”Æ8äƒ8äÃrˆÃ8ÀÃ8ˆÃ8LÆþ–ÀÃe,‡gÀÃ:LÆ8ä<ŒC>ŒÃdŒÃdˆCiˆÃr¬CiˆCiˆÃ8Àƒ8ŒCiˆ<ˆ<Œ<ˆC>”†8ÀÃ:äÃeä<ˆÃdŒC>ˆÃ8LÆ8ÀÃ8Àƒ8Àƒ8äCiˆÃd\Æ8¬ÃeŒÃ:LÆ8äÃd\<ˆÃdˆ<ŒC>LÆ:ˆÃ8ÀÃ8¬ÃdˆCuˆÃdx<ˆÃdˆÃrˆCi\Ædˆ<ˆÃr\Æ8”Æ8ÀÃ8ˆÃdˆ<ŒC>Àƒ8x<ˆÃ8L†8ÀÃ8L†8,Ç:LF>LÆ8Àƒ8ÀÃeäƒ8Œ<¬ƒ8äÃ8Àƒ8ÀƒgLÆe”Æ8Àƒ8Àƒ8ÀÃ8ÀÃex<Œþ<ˆÃ8ÀÃ8”Æ8L†8L†8L†8Àƒ8”†8”Æ8äÃ8”†8ÀÃeÀÃ8¬ƒ8ÀC>ŒCuŒ<ˆÃr`Æ8äÃeÀÃeäƒ8Œ8Z?èC¤åƒ>TÛ>èC¤éÃ>,Ï>ÜE?èC>ôÃaôbôC>èÃ>Q¤åƒ>DZ>ìƒ>ÜÃ;ìƒ>XÃ0ôƒ>Ñ]T[?äÃ> F>ôC> F?èC?èÃ=ìB?èC?äÃòäƒ>ìÃ]äÃ>ÜÅ>èÃ>èC>èC¤Ñ]ôÃ]ôbäÃ>äƒ>ôC>èC>ìÃaôÃaäC?èÃ>äC?þF>ìƒ>ôƒ>äƒ(,Œ<äƒg,‡8ÀC>ˆÃ8”†8ÀÃ:Œ<Œ<ˆ<\Æ:ˆC>l <\F>ˆ<äÃ8¬<Œ<ˆ<ŒÃd\<ˆCuŒÃd\FuŒÃ:”Æ:ÀC>ˆÃ:LF>ˆÃrŒÃdˆéÀ8”†8h‚8Àƒ8hÂ:ÀC>xFi\Æd\<Œ<Œ<ˆ<\F>Œ<ˆÃ ‰<\<¬Ãr\ÆdˆCiˆ<ˆƒuŒ<\<Œƒ8,G>Àƒ8¬ƒ8Œ<Œ<ˆC>Œ<Œ<ˆÃ:Œ<äƒ8”†8,‡8ÀÃ8ÀƒgÀƒ8”F>ŒƒuŒC>ŒÃþdˆCuxCiäÃ8ÀC>ŒCuˆC>ŒÃdŒ<\ÆrŒÃd\<ŒÃ:Àƒ8äƒ8,‡8”†8 ‰8¬Ã8,Ç8ÀÃ8ÀÃ8L†8”Æ8ˆÃrˆÃ:Œ<ˆ<ŒƒuˆC>ÀÃ8Àƒ8äÃ8ÀÃ8 ‰8ÀÃ:ÀÃe¬C>ŒÃd\<\Fi¬ƒ8äÃ8ÀC>ŒÃr\Fiäƒ8Œ<ˆC>ˆCiŒÃdäÃ8ˆÃd¬Ãd¬<ˆÃ8ÀÃ8L†8T‡8ÀC>ŒÃdˆC>\ÆrˆÃ:ŒÃeÀC>ÀÃ8ÀÃ8Àƒ8¬ˆÃrˆ<\F>Œƒ8ÀÃ8ˆÃ:Œƒ8¬ƒ8ÀfL†8Àþƒ8Àƒ8¬<ˆÃ8ÀÃ8ˆÃdˆÃdäÃ8ÀC>ˆƒuˆÃdl‰8L†8¬ÃdxÆdŒƒ8L†8L†8L†8”Æ:ÀÃ8ˆCuäÃ:LF>Œf¬Ã8TÇ8LÆ8ˆÃ:xÆ:”†8¬<ˆCiŒƒ8,‡8,Ç8L†8TÇ8”Æ8”Æ8LÆ8LF>x<\F>Œ<ˆÃdˆÃ:Œ<ˆCiˆ<ŒÃdˆÃrŒƒ8ÀÃ8ˆ<Œ<ŒC>ˆ<ˆÃd¬<\Æ:ÀÃ8\ÆdˆC>Œƒ8,Ç8ˆÃdŒÃdˆCiäƒ8ÀÃe”ÆeÀfˆ<\<ˆCuŒƒ8LÆ8\<`†uˆCiŒƒ8ÀÃ8ˆ<ŒÃeþLÆ8ˆCu¬ÃdˆÃd¬<`<ˆ<ˆÃ:ŒÃdpÀ( #@iˆèÃ?äEÚaôC>ÜE¤ÝE?èC?èC>ìƒ>T[>èC?èCµåƒ>ôÃ>ôƒÝE?äÃ]ôÃ>ÜE?èÃ>ÜÃ4ìÂ/dC?]êC?Q?èC?]FZ>ìƒ>äÃ]ÜÃ/F¤éÃ>ôÃ>Dš>Q?胣éÃ>èÃ>üC>ÜE?F¤åC?èC?äÃ]ìÃ]DÚ?äƒ>ôƒ>DZ>ìC>ÜEµýC>èC?äC?äƒ>DÚ>èC¤íƒ&,C>ˆC>,Ç8¬ƒ8x†8äÃ8ÀÃ8”Æ:Àƒ8X‡8Àƒþ8TÇ8ÀÃ:\F>ˆÃdŒ<Œ<ˆÃ8ˆC>LÆeÀƒ8T‡gÀÃeX‡8ÀCäƒ8Œ<ŒÃdlIuˆ<ŒÃdˆ<ˆ<  Ú8ÀÃ8”Æ8ÀÃ8ÀÃ(Àƒ8Àƒ&ÀƒgˆC>Œ<ˆš\F>L†8LÆ:ˆCiŒCuŒ<ŒCuˆ<ŒƒuŒƒ8ÀÃ8Àƒ8”†8äÃdˆÃ–LÆ:Àƒ8ÀÃeÀÃ:ˆ<ˆCiˆƒgÀƒ8ÀÃ8L†8”†8äÃ8äƒ8LÆeŒÃ:ˆÃdˆÃ8ˆ<ˆÃ:ˆÃ8L†8Àƒ8xF>ˆƒgÀƒ8ŒÃ:ˆÃ8LÆ8ˆÃdˆ<\†u\Æ8”Æ8äÃeÀÃ:Àþƒ8ÀÃ8X‡8Œƒ8Œ<ŒÃdŒC>ŒÃd\<ˆ<\ÆdŒÃdˆ<Œƒ8,‡8LÆeÀÃ8ÀÃ8Àƒ8ÀÃ8Àƒ8ŒˆC>ÀÃ8Àƒ8äÃrŒ<¬<ˆÃ8Àƒ8Àƒ8LÆ:ˆ<ˆC>ÀÃ8䚌ÃdˆCiŒÃdˆ<ˆÃrxÆ:ˆƒgÀÃ8ˆ<þ š8Àƒ8Àƒ8äƒ8L†8LÆ8L†8Œƒ8ä<ŒÃdˆCiˆÃdˆÃ:Œ<ˆÃdˆŒ<ˆCiˆÃdxF>Àƒ8Œ<ˆ<\Æ8ˆC>ŒÃdx<Œ<ˆÃd\<ˆÃ8äƒ7Àƒ8Œ<ŒC>ˆCiŒ<ˆÃdˆ<¬ƒ8L†8”Æe”ÆeÀÃeL†8L†8Àƒ8ŒCuŒCiˆÃ:,Ç8L†8ÀÃ8LÆeÀƒ8Àƒ8Àƒ8Àƒ8l <ˆCiˆC–Æ8ÀÃ8ÀÃeLÆ8äƒuˆÃ8ÀÃ8Àƒ8Àƒ8ŒCiˆC>Àƒ8äÃrˆÃþdŒÃdˆ<ŒÃrŒÃrˆÃrˆÃ:ˆCˆÂ20Â,Ç:hB>T[>üC>üC?äC¤å]þC>ôC>üƒ>Ñ?DšýC>üƒõC>ôC>üÃ>ôÃ]ôÃ?äÃ?DZ>T[>Ðå>èC>üC>ìC?F¤åÃ>DÚ?DZ>F>üÃ>ôC>T[>üC>üƒ>8Z>ìC?ìC>ôC>DZ>üC?üC¤éCµF?äC¤åÃ>Q?üC>üC>üC?ìC?äC¤ÝE?äÃ?äÃ?Ðe>ôƒýÃ>ôÃ?DZ>üC>üÃ]ôC>üƒ>ôƒ>hÂ2¬ƒgÀÃ8ˆÃdäƒ8ÀÃ8\F>ŒÀƒg É8ÀÃeäÃ8LÆeÀÃ8ÀÃ8Àƒ8,‡8ÀC>Œƒ8ÀÃ8ˆC>ˆ\<Œ<\F>ŒˆCiˆ<Œ<ˆÃ8LÆ8ˆÃ:ÀƒgL†8¬<ˆÃdˆCi¬<äÃ8LÆ8ÀC>ˆÃ:Àƒ8äÃ8þÀC>Œ<äƒgˆÃdŒÃrˆ<Œƒ8Àƒ8LF>ˆ<Œƒ8¬ÃdŒÃ:LÆ8\Àƒ8ÀÃeÀƒ8¬ƒ8Àƒ8,‡8”Æ8äÃ8ˆÃdˆÃdŒ<ˆ<ˆÃr\F>ˆÃd¬<¬C>ŒC>\<`F>ˆ<ˆÃ8äƒ8Œ<Œƒ8L†8”†8ÀÃ8Àƒgˆ<Œ@ÀË7ž8ƒâà/ß:x!Šƒ'^>që„'.Ÿ8ˆâÖÁOÜÃqâà‰{˜Oܸ‡ãò‰ƒ(n¼qùÆÁ3qœ¸uðÆ÷0èÃqùÆA4Þ¸‡ëà·.è8qÇå úp<ƒÅ=4þO\¾qðò­ƒ'î¡8¦ãà­ƒ7NÜÃqâà‰ƒ—^PƒÅ÷pÜCƒÇÁ3˜oqó‰[Þ8ƒðÄÁ÷p\>qAádš/¨Axâò+QSqð ÂËgpqLÇ=oœ8ˆãŽOÄÁqŒã€G>2އˆcð‡8 "æŒã!ãxˆ8à!ˆˆc‡AÆ|ˆcð<ÄqˆãxÈ8²Ž‡ˆãÈ<Äqâ€GPృŒã!â€Ç8à!xˆc 8‚þƒÀã 1<Æ!xdù€ˆ8à!xŒâ€Ç8ò!އˆcL<ÆÁ”q q@Ä ðÇCÆ‘q¬Ã ð<Æ!Ž|t”=éûÈÇ?òÑ|ìcùøG?öÑ|üãI'Ú”Úô#ÿèÇ>òÑ}èJùèG>úñ~ä£ùxÒ‰ö‘ä£ÿȇŽòñ~œèIùèG>þÑìãùèÇ>þñ¤|ì£jÊÇ>ú±þ'(ÿÈÇ>ú±~ô¨ÿèÇ?òq¢~hBËXÇ8Ä‘qÀcâ€Ç8"xŒÃ SÆq qÀ#(DÆñ|Œâ¨J>ÆaœuÀCë€GPÄñqŒ"ã`Î8à1ˆˆãxH>Ä¡‰ªhyÈ8˜"އä!â€H>Ä‘uÄaqÀcð<ò1xŒ"âÇCÆñq0Eð< ²xŒƒ)ãxÈ8à1qÀ#ã€G>Æþ|ˆã<Æ|Œù<Ö1ˆäâ€Ç8ıŽq<Ä Ç:Æ!Ž|Œ 8àq<ÄðÇCÆÁœqÄ1x¬câX<‚bxäã0<ÄñƒþÀà ðG>Æñ|Œâ€Ç8 2xˆcYGPıŽqÆñuˆ#ðŠ8àqÀc A"އŒCðÈÇCÆñ|È8ÄñƒÀà ÇCÄ @$ 8ò1ˆäC1DÄqˆKLÉ<Äñq¬câ`Ê8 òq¬ã<òxŒã!â€È8ÄqN´¤äcýøG?ú|4ûÈljò±}ìãùØG>öñ|èhý8Aûq¢%õ#'êÇ?úñ~œhIÿèÇ?úAÐ~äãùèÇ>úñ|<éûÐQ>ú±|ô#ÿÈÇ?ú±¤äãIùØG>zÏ}œ(ûÐÇ>ò±ôãûøG>þÑäãù臎ò¡}èãù8Q>þ‘}ô#ÿèljòáòáIöáò  d D¦ABÆ!àaòAbò)Æá!ÆAÆ!ÆÆá!Ä) b þBÖá!ÄabÄ!(˜bòAàAà!("(àÁ àAòAÖAàa BbBBàÁ àÁ ÆÆÆ "Ä) "(àaàAàAÖá!ÄÄaÄeBªâ!ÆÄÆ"ÆÄabàAÆÆÆá!Æ!ÄaÄ!àaàa BÖÆÁ84fÖAàAàaBÆÄÄÆA BàAbàÁ Æ â!ÆaÄaÖAÆaàaòá!ÄaÖAÆaÄÆ!Ä¡*BòÆ!þÆ"Äá!ÖAàaÄ)Æ!Äá!Æ!â à!(àá ÆÄá! bÄÆÆ"Æ!Æ"ÄÆ!ÄÄ!Ä"Æ ÖAòá!Äaòá àAªbò"Äá!Äá!ÆÆ‚bÄÄ!(Ä!BŒcàaà!Æá!Ä)Æ!"Ä! â!Ä"ÄÆÖAàaÆá! ‚<Æá!Æ! Ä! bÄÄÆÆÄa àAŒ#(òÄá!ÆÖ! b˜CÈCÖA‚bÄá! "(àAb bþÄ!àaòaàÁ òÆÄÄ‚BBÆ â! Ä â!Ä)Æ!Ä)Æ!àa BàAÆÄa àaòAàA àaòAÖÁ àaà!(òABòÄ!àAÆ<Æ!à!(àaò¡*òA˜"(òá!Ä9â!Äaò¡*ÖÄÄÖÁ Æ‚Æ)Ä"Äá!ÄÆÄÆ"ƪÂ8ÄÄÄaò"Äá!Æ!bòAàAàAàA‚"àAÖÄ"Æ"ÆÆÄþÆ! BàaBbòá!ÄaÄ!DábàA@¡òáòáòAGöáDö¡òáDòáúRN¤þ!zdþ!þáIòJþ!þ!z$öáIòáDòAGò¡ö!N$ ¥þž–äDòRúJu$ö!þ!úáòáòAGúAGú!þ¡öáòáIt¤òaNdúaNdN$N¤N¤ö¡þ!þaúáòAGöáòáòáòáúA4aàAÖaÄaàAàAÖ!(àAòAàAàAÖÁ òabþàa "ÆA˜bàaÄÆòaàaÄÄá!Äá! Ä!ÄÁ8ÖÖÄ!ÆÁ àAàá b˜B""Äá!ÆÆAàABb4Ä!4"Äòa ÆAbÄá!òÁ àá Bà!(Äá!ÄÆÁ ò¢àaÄá!Ä‚BbÄá!Ê.‚ÆÁ8òaàA "Æ"Æ!ÆÁ ˜C "Æ9ÄÄá!òaà!ÆÄaÆAà!ÆòaàÁ ÖÄ!ÄÆ‚BÖÁþ BàaŒcàaÄaàa bÆÁ8Ä!Æ"òAbŒCcàaÄ Ä â!ÆÆÄá!Ä" ‚BàA˜#ÄÄaàaÄá!Æá!4FòAÖ"Ä!ÆaÆ"Ä!(bò!( â!ÄÆÄa BàaàaB"(Äá!òa òa˜bàAÆÆÁ àAÖ"ÊÆ9ÄÄá!ÄÆá!Ä"ÆAàAà!(àAà! ¢*Æa ÆABBàaÄ"òAÖÁ8òA˜BÖ)‚þBÖÁ "( "Ä!Äá!ÄòA BB˜bÄá!ÆÄÆÄÆÖ!( "Äòa B ÖÄ9Äaàa BàÁ b"(àa àaÄÆÄ!(Äá!ÄaÄ!‚ÆÆÄ!ªâ!ÆAàaÄ"Äá!ÄaÄ!ÄabŒC â bbbBòaàaÄÆÁ àAòAàAÆÆÁ8ÄaàabàAªBÖÄÄ"òAÖ"ƪ  òAàaÄaÆÁ þàAòabàAª"ÖFàAà¡ìF¡ eÔ¤þ¡òAGòáòáIòaòáòOÿ!úá $þa ôIþ¡òAžûáDòáDú! äò¡ 4þ!þaòaz$úáúAGöáDöAGòaò¡tdþ¡ò¡Gúáú!t$úáúáòaþ!t$ú!ö¡þ¡z¤òAMúáúáúáDúaò«@òá!Æ"Æ! ÆÄ9ÖÁ Æ! ÆÖAbÄaàa BÆa"Æá!Æ"ÄþÆá!ÆÆÆÊÖA˜BŒCàa bàa bbBàa˜BÆFaàa4aÄá!ÆaÄ"ÄÆÄÄaÖ<Äá!Ä!àABòá!ÆÁ8Æ!àa˜"àÁ òÄaà!(òÁ òAÆ"ÖA B"(ÖAàAàAÆ"ÄaàaàAàA‚bÄaàAÆÁ8ÄaÖAÆaÄ"ÄÆaÄaÖA˜bàaàÁ àaò)‚â! ‚"bò"ÄÆá!Äá!ÄÆÆá!Æþ!ÆÆÄ)Æ!˜B˜bàAbàaBàa˜B bàaàAÆaàAàa â! ÄÁ8ÖÆÄaàaàaòA‚òAàÁ ÖA BÆá!Äá!ÆÆ"ÄÄabàAòá!Äa bà¡ì bàÁ ÆòÁ BbàAÖaàAàAÆAàAàAàA ŒcòÄÄá!ÖÄabòAòAbòÆá!ÄaàAòá!Ä!( Bà!(ÖÄaÄ"ÆÁ àAòÖ)þÄ! BÆÖá!Æ‚"ÆÁ8ÄaàAbòAàAàaàaòÁ Ö!"(bÖAàAÆÖ"Öa àabÆ!ÆÄ)Æ â!Äaàa bòÄ!àÁ àAàaÄá!Ä ÆAòAàaòÄ!àa bbàaàÁ àAàÁ Æá!"ÆÄÄÆÖAÆ!àAòá!ÄÖÆòÁ àaàAbàÁ Æ!Äá!Ä!àabB‚ÆA‚"Æ!Ä!þb bàaòá!Äá!ÆÖÁ Æ!ÄÖ!ÄÄaÄ!Da!àAà¡ì4AMòáòáò¡þ¡z$N¤þa ¥ò¡ò¡þ! ¥zdò¡òAžó¡N$t¤täIöáúa %öáò¡t¤öáDò¡òáDúáúáòRòAMò¡òáDúáDúaž$ eòR Ròáö¡òAGö!ú!þ¡þ¡þ¡þ!tdN¤¸J–ÄBÜ:xׄ7ž8xãŠ[GPœÄƒáIÌ'nœ8xùÆ„'þnœDxŽƒ7N"<‰âà‰ƒ7nÁqã>Žƒ'Ž 8xãà‰ƒ'Žà8qðÆI<˜o¼q%®Ó4Nâ(x4ó;(Ž ÄƒâŽGpÁqâà­GpAoÇ'nÝ8qðÆÁ·nAšð$æ7Žà:xâà7ž8xâŠË7ž¸ƒùÄ”˜OÜÁ|âæ/Ÿ8xãÄÌ7^¾qðÄÁG0ß8xùÆ'.߸ðÄ­£ o\>qðÆ—OâÁu4ÅGP\¾qâŽ#(Žà8‰ëÄÁ“È[ܺqâà#(Ž D‚âò“HpÁqðÄ'ž8‚âÖw8þ¼4<ãÀ#Aâ$Ñ:ðˆ“Mðˆó‘8å3Ž8ðˆ8ðˆÏ8â”8ãä3<ëÐÏ8å3<ã”Ï8åCÓ€ãHDDðˆO>ðˆ3à8KëŒsDð¬sÐ8â¬Ï8#Î:ãˆÏ8ðä3<48‰3<å3AùŒ#<âäsÐ:ëŒÏ8ðˆ3<ëÀ3AâÀ3<ãˆ8Ñ$<4Á#<ùŒs8ãÀ3<âä3Ž8ë$Î:ãÀ#N>4å3ÎAâÀ#<ëÀ#N>ãˆsDëÀ#Î:â4Ž8IDDðä#N>ã$<ãð¶Îþ€ëÀ#Aâð¶<ãˆÏ8ðÐ$<4å3<âÀ3΀å3޹™+<ãÀ“MðŒÏ88ðŒs8D‰³<ãˆMâÀ3N>ã$N>ãä8ùŒ#Î:ðŒÏ8Á3Aâ¬CÓAâÀ3Aâ¬Ï8â¬Ï8…0 2Œ@DãŒÒOÏ=ÿ4ÐûôóOÏAtÒÿôóÏ>ý½O?ûô£ô?>û|tÏÿìÓó?=ÿÓóÑ=ÝÐý ÝOÕA÷tÏÿô£ö>ýÝÏ?ý ½O?AïÓÚI÷óÏ>ý$½O?ûôóO?IçóOÏùhyä’G>Êä‹þ9(¢L.Š&¢Xú(¢@.Š(“"Š&£ˆJ䣈"ù(’bù(šˆú(šˆbù(ƒù(ùù(‹¹(‹¢‰(’"Šå£ˆù(2ù(‘ƒù(¢L>Jä h" 蚈¢É(‘‹ú(šˆb¾(æG>J䣈"ù(ú(¹QÌr£ˆœ(,'ŠÉb‘…äF! Èbr¢…äJºQˆÂr£(åD¹Q@nšEäF¡‰QˆÂ|¢€œ(@7ŠÈ‰br  ùF! ÉBEäF¡‰QÌo6(" ˉbr£EäF¡‰ÒY–…å@¹QˆþÂr¢ÐÄ( 7 Ȇ …äFa9QDn¢Ð„( ·@È-Pr£ ãüF¹QØ1r  cé4! PLn{,¤&F1¹QˆB£€Ü("7ŠùÂr£(ùD!¹QˆÂ|¢0ßK79PDn¢0ß(8 Qhb¢Ü 9 É…@Ë`DÖA|Œc=«Z?€Ö¿ óýZ?þѵõãýøG?”öž­Ðì4¯‰M õ#›ÿè7ûq´~p3iýPZ?þÑlî#hýøG?þ±ô#ýÈÇ?òñ|ü#ýÈÇ?ú±£íãùøG?þ±~ì#hýZ?‚– íãþùØÇ>®–ìhûZ>þÑ}ä£ùèÇ?òñ|ô,ÿÈG?þ‘äcýøG>zö|mùèG>þ‘žåiš  <41–(•%ùAÄ1qÀC©ðKà1qÀÃð<Ä1‰ÀCð°“R Bx(뀇Dà¡ÔuÀ#,!ˆDàA‰ÀC4‡Rá1xŒC4‡DÆ4&qŒCð ‰8hBqÀcâ ‰8hÂ’qÀc,!ˆ8à!x,5ã ˆD2xÐã<$q¬Cã<$–ÀC"ð` <”Jq° 8Æ¡TxŒCþùÈ8à!‘uH!È8$B¥ÂC©ðzv´~ -AëG>zv´|íjGëÇ?zVñôƒ›ý8ZÏþ‘~h"âþ‡&xÃ;­â8È:Äñ‰|DðG>Äq|DðoÆ!xäC¼Ç:"ŽŒé#â ˆ8>"ŽqäC@<Ä|ˆã â€G>Ä‘q¬#ðAÄqdùøˆ8€.ŽƒHèY<Ö!‘ƒ,• ãÈ<ÆqqDðAÄAxˆƒ â8ˆ8>Â’ƒˆã#ëøˆ8àa'xˆc¼AÆñqðFAÄqqÀcÇAÆAqÀCðA$qDù€Ç:Ä1Æ‹ùAÄA|DÇAÖÁxˆ# D"xÐâ€Çþ8à!Žqäã  8à‘âðãpâãâ@âÀââ@ñâ¼!!ãâ@±â@âââ°¼1ù @Gð°1ð 1ù ãpë ãðð v2ð ãÀëÀxãÀââÀxð ãë ùp,âð ð ð°ãðAAâð @—ãÀqââ@ù ±!ù !!t±âÀë !ð ±ð ð !Œ'ù°þð ù ¼A!Wøë !!!ð ð !  ËÀ ð°â°š4BGŒÅhŒÇˆŒÉ¨ŒËÈŒÍèŒÏÑ(ÓØŒ»ð‘ãŒa'‘ã t¡Œù ëã@é¸ù0ðÐÿ  ð švrë@BGââ Šð0!ëpã @'ð !ð ãë@ã ð ±ð°ð ù ð0ð !ð°ðãâpã ð a'âpâ°ð0ð0ëpâ@âââ°ã !þ1Áxâ°ð@ð`'â°!ët,±ã ð0ââ°‘ãðâÀq…ëpã ã ð !a'‘ˆµ1,±!±¼±1ð0ââë ð !ëâðâðâpã ëù0±ð0â@ã !ð0&ð !ð0ëÀãtã@ââ@â°âãpã°ð01ù0ë 1ð ð°¼!ëÀxâ°â@ãã°âpâëpë@âãã@þãã±¼1ð ù ë 1ù 1ââ°ð @7ðˆEâÀùÀ¼!ð0ð ð !!ëðâ@ë ð°ð ë ð°â0ªH@·â@âÀxããpã°ð ð0âââÀxëâã@ãââpããtAãëðããtâ@âpâ@â°ââãã ð0ð ë ð01±ââ@â@ã ð°!!1±ð°! ¿ÀþAš4ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðþ ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð »ðë ëââââââ°â°ð ð ðÀð ð ð Ó° û µ° ¿Ð¸“K¹•; ð ð ð ð ð ð ð ð ð ð ð ð ð ãëðû  1 S&ð°TãpâJ5ð ð ð ð0ð ãð@ð ã@âñãñâ0ð°ð ð°ð 1&!ã°â0þð0ð 1ð0!ð°ð01ù0âvëpâãa'ð ùp1ð0â@‘â°ââ0±âp…ãð ð°ð ã ë ð 1ð Aâã@â0ââùâ°ð ð°ââ@ë ù ù ð0ùpAãâã ð ã!!1±ââãã@4qâ0ë !ù@Aâ0!ù ¼!ù !ð ð ã@âþã@âðâ°ð ð@ù0ð ð ãâpâ0ù !ë ð ë@â0ð ã@ââ‘ââ0!@'ð`'ãpââãqãJâ`'ð ðÀããât4!ð°ð 4â0ù0±âcòâã@qâpâpâpââ@Aâ@ë@ëâãâãââãããââ@ããâAù ð ð0ð01ð ã ðþ°!ãâ@â°ð ð ããâ0âpâââ,Aâ0âpâtâ@ëââÁâ@âãJEâââð0ð !1ð ð°ð ð ð ð ! ËÀ@ë šðýââââââââââââââââââââââââââââââââââââââþââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ° ýâ@ââââë@âââ@âëpâââËP z€è‰®ŒèŒèŒèŒ€èð þð ð ð ð ð ð ð ð ð ð ð !ð4šãštâÀù0â0@—ãâ@â@â@â°ã ù0ðãtãââ@âã°ðã 1ë@âââÀù0ðã ð ð0ð ð !ð0â±â@âãpâ°4!v"ð0ð0!ð !±ð ‘ãâ@4!ãpâ°Œ—ð0@7qëâã ù0‘ð01±âþðâù ëëãã ëãðã@âã°âpâpâã ëpãÀâã@â@ââã,Aù0¼1&¼‘ã ð°ð ð ã@ã°â0ââpââðã4qãpâ@âã !±ãëãâBwë !ãù ðãÀëëpâã@ã@ãð‘ââðâ°!!¼!±W(!ã ð0ù !ðAë !ð ù ±þð ð0qâðã 1â@â01â@ë !ðãÄÁƒ'.ß8xãÄoœ8xâà‰Gž8xâ,Ž£h^>qã<O<ŠâàåƒGÞ8‚ùÆÁgQœEqëÄÌ7NÁuâà‰ƒ'΢8‚áåƒ7Îâ:xãÆÁGpœ¸‘Å­ƒ·Žà:‚âÖ­ó8näºq Šƒ'Þ¸|ãà­ƒ'Îâ8x놅ŒQxë,jú×/ëaĉ/fÜØñcÈ‘%O¦„qÀCðAÆ!‚ˆâ°È8à1xŒC<ÄAqÀ#ã€þG>Æ!xŒƒ ù€Ç:à!•uˆâÈÇ8,"xˆcâ‡8à!‚Œƒ V‚Ç8à‘qXdð<ÄáqÀcð <Öq¬#ð‡8"xäcY<ÖAqÀcV²È8,2Ž|Œ#V‚Ç8à!Ž|Œ 8à1xHÅJG>Æa%xäCðÇ:ÄAqˆã€Ç8"Ž|Àcð<ÆAqäCãXW>¬qˆƒ ãÈÇ8à±.qÀC뇕à!Ž|ŒÃ"â€Ç:2xŒƒ ã È8,b%xˆâÈÇ8à!‚Œâ€Ç8Ä‘qäcðXWþ>ÆuÀC*ðȇ8ÖAqˆ#ã‡GÄ1’qdAÆuŒ〇8ÖqDY‡8"ŽqÀCc‡8<2qXd±Aò±xˆcðÈÇ8ÄAqÀc]#Ç:F"‚Œƒ â <ÄAqäCã°AÆ!xŒ〥8ò!xˆãG>„ä‘qdâè8à!‚ˆâ€Ç8à±qÀCãÇ:à1qÀcð<ò!©ŒDð‡8à!ŽuHâ‰8b%‹ˆcã€Ç8"ެŒ# 82q¬ã<ÄqÀCù‡8þà1qÀCãAÆqÀc‡8à1‚Œc]ðAÆ!‚ˆ •à1qdð‡8à1qÀcùA¬”qdɇ8"Ž|¬+â ˆ•ూäCð‡8à1qXDð<ıxŒâ€Ç8²"‚ˆã0ëÁ(Áäƒ VÅÿzú_XÀ&p |`'XÁ fp‚óa%xìâðX<<Ž|¬kâ€Ç:àa¥uˆ#Þ…Ä‘òe£|åS_ùÔW>õ­xýEƒ×µxŒEÿÓ<¬¤‰|ˆcâȇ•ò!xX ã°ˆ8àþ!xŒ°„‡8à!xˆÃ"VÇ:Ä1ŽuˆV<Öa%xˆ#â€Ç:à±qÀc<ÖqxÄJã°ˆ•ƱqÀCð°’EÄ1xˆV‚Ç:Ä1‹ˆC*ù€Ç82ŽuˆV‚‡"¬kðÇ8ı‚¬ ë‡GÆ‘qäÃ#â ˆ8,2xˆ뀇8Æ‘‚ˆâ‡8à1xX‰ â°È8à‘‹¬ƒ ãÈA¬´+eeùðÈ:ÄAqDðG>¬+Ác]ã°ˆ8à1x¬CÇHÄAqˆƒ V’ AÄá‘uˆcðG>Ä!þˆëAÆqÀCð<Ö5Ž|ˆc<ÄqDG>Æa+ÁCã€G>ıˆÃ"Vòˆ•à!Œcâ°È8à!xˆcù‡EÄqÀCð<ÆAqdù°AÄaqÀcðÈAÄ1Ž|Àc]ùÉ8ò!‹ˆë<ÄAu 8Æb©xÄJ<òAqäV<¤qäCã€Ç8ÄAqxDù<Æ!xŒƒ ã°È8<"xˆâ€Ç8à!xˆâ‡E¤’‚XÉ"ë‹8à!Ž|ÀCðÈ<Æþ+ÁÃJã°ˆ•à!Ž|dÅJðAÄáqäãG>¬qäƒ âX‡•,2xŒëAÆuXdð‡GÄ1x¬V‚‡•,"xˆâ Ⱥ"xx‡qx‹‡qxx‡…e`q ˆuЄÿé ì@ü@ AÊ‹‡]ØqPŒqX‚x°‹Xx‡Ã‡]ÐxX†l˜†lX†ó†ó†ó†iXo˜†lèPè q€q ˆuè‡~ЂM°ˆu ˆu +‡qð+ñq q€‡q ˆ|xȇqðˆ|þ‡q q€‡u€‡qxXxX‹‹x‚ȇqH q°q ˆ|‡‘xX—u qX‡q°x‡uðq€‡|x‹ ‹°xÈx‡¬Xxxx‡u‡qx‚‡u°ˆq‹X‚‡u xxÈxqðq€q€‡q !‡q€‡q‡u ‚X‡¬Xx‡u€‡q€‡q © q€q€‡qH +ñq€‡q ˆq€‡qxq +!ˆq ˆ|xx‚‡u°qXx‚‡q‡‘°‚xX‹‡þu€+É +!ˆq°’u°xÈ© ˆqX‚q q€‡q q€‡q‡|xx°’u°qXxxx°‹xx‚q ‚x ‚‡u€‡q€‡q€qXX‹xX‡q€‡q€qðq ˆq°ˆ|‹‚x‡|qqðq€©°’u°ˆ|q°ˆu€q€q q°ˆq ˆq€‡qÈx++!ˆuq°q q ˆq€q€‡|q‡|‡uqHŒu°© ©°’‘x‹xxxþxÄxx q€‡qð©xX‚x‚°x‡|x°xx‚‡|‚xÈ©8Œq‡¬x‡|xÈx+‡q€‡|€‡q€‡u d`‚ MøÇxPP P ­P ½ÐÅxxØ…P qHŒu€q ˆq8 dЃuð†óoÈB „ið†ó†òñ†iȆið†… ]xx‡~ØM°M€q ˆq€‡uxx‚‡| Åx‡q qxXq‡ux‡q€‡qþ€q€‡u ˆu‡|€‡q‰q€q ˆq q€‡q€‡u© qx‹‚‚‚‡|È q€‡qÈx‡q qŠ|‡¬x‡q€‡q q‚‹X‹‡|‡qÈq€‡q€qX‹‡q ˆqÈq°©Èx‡q€‡q°ˆu‡qÈq‡|‡| qȇq ˆu€!q ˆu€¥q€qȇq ˆq°ˆq€qx‡‘x‹x°’qÈx°’¬°’q€‡u€q€‡u +Yx°xX‚‡q€‡|€‡q€þq‹xÆx‡q‡|È q ˆq€‡uxqÈqx‡|‡q€q‚xXqx‚Xxx‹xxx°©È‹‚‡|°x°‚°‹xx q€q€+q‚q°+‚‚‚‚xXq€‡|°qðq°qŠu‚‡u‚‚‹Xxx©È‡¬‡¬‹xx‚‡ux‡q q°ˆqx‚‡q€q qx‡|ðˆq°þq€‡q°ˆq q ˆqȇq ˆqx‚°xX‡|°ˆq€©Èq€‡qðˆu±q€‡uxx°’q€q€q‡u°xx‚‡| q€q€+‚xxXq’| +‘ xx‡u‡…e`„x‡uMBxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxþxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxPkXxxxxxx‡|‚ȇ]èq€©€‡q€‡q q€©€‡±€q€‡q +‡q€‡q€‡qXqØ=oX†l˜†l˜BàBȆlð†ÎþoXo˜†lXoøQxxxxx‡(i“>éu‚X‚ø‡~Ðq€qЄuXxX—|‹‡u‡|q€‡q€©x°‚xxÈq ˆ|xxÈqðˆq€‡uY‡qX‹‚‡u±+YxÈq€‡q q ˆq‡|x‡|xx x ‚q€‡u€qX©‚xx‹‡q‡|‚q ˆq‡u +É©€‡|‡qȇqxx‡u€‡q€qXxX‚Xxȇq€qXxþxx‡uxȇqxxXx‡u‡uq€‡qx°x‡|°xxÈq€‡u°xx‡u+!q ˆq°’|‡qx‚‡u‹°‚‚È© q€‡u‚°‹°‚È!±x°‹x x‡q€‡q‚‚xxxq€‡q‚q€‡q€qÈ©€+!©€qXx°xȇq‚Xxȇq‹‚q q‰qÈŠ|‡u+qX‡‘°°xx‡|€qþ€q q€‡| q ˆq°ˆ|q€‡q€q°q€q€‡u !x‡q°‹xÈq°q q€‡q ˆq ˆq‡Ã‡|xq€‡q‹q‚x‹‚qðˆ|q°ˆqȇq‡|‚°‚x°xXxxq€‡q°q€‡q€‡uq€q€q€+‡uñqX©‡|°’|‚X—‘‹‚xq€q€q q€‡|‚‡|°x°’u xÈ© q€‡q€‡|‡|ÈqÈŠuà€þQøF€|xxÐ)\—|X—|X—|X—|X—|X—|X—|X—|X—|X—|X—|X—|X—|X—|X—|X—|X—|X—|X—|X—|X—|X—|X—|X—|X—|X—|X—|X—|X—|€%xX†_ȇuɇuɇuɇuɇuɇuÉX‚‡eø…|X—|X—|X—|X—|X—|°’_€‡x€‡xø+ɇuɇu q€q‡]øx°’|X—|‡u€TÐTàTˆüZ˜…È‚‡|X—|x@=€‡lpQ†&~à6ÈoÈõ†lð†lXýlȇQ€‡uÉþ‡uÉ+YøÞÿ x€‡u‡u)x‡uЄà~qhþux‡àxXq€‡uÉqh~xï— x‡qXqhþu€qx°ï_‡|ð~q~q‡|ðþqðþqXx°x€€Oœ8xãàƒ·n‚⊗ž¸ŒÇ Oœ@qÅåƒGÞºqðò —O¼q׉ƒ7ž¸qëÄÁ'.£¸|ðÄe—ž8x㎃·Þ¸|âò Oܸ¡â2Šƒ'Þºq|׉Ë'Ðó8xëÄÁ—OŠÏ8ð”8ãÀ“ÏG³<â|$<Á#N>ãÀ#<ã$Î8âÀ³Î8âÀ#<âä#8ðˆAã$<âÀ#<e”Ò:âÀ3<#Ð:}$ÎPëx–<ž#Ar“‘8r#þ8ðŒ“8ðŒ#Ð8ëŒó‘8ðŒ“QJð”‘8|‰“<ã¬#NFë$NFâä3N>㈓<âä3NF⤴Î8ðŒOJëÀ#Î8âÀ#Î:â„Ê2ŒÑ:âhòÏ?“Ñ8“Ñ8“Ñ8“Ñ8“Ñ8“Ñ8“Ñ8“Ñ8“Ñ8“Ñ8“Ñ8“Ñ8“Ñ8“Ñ8ó‘8ÖÀƒLFãd4NFãd4NFãd4ÎGâ¬c <ÖˆÏ8“Ñ8“Ñ8Ms<ëŒsŽ7Ö cÍ2ÖˆóÑ8´Ë?­“Ñ8ðˆ³<¨¸ÓN=õ´Óq;õ ’þÑ8­Ï8âì¢<Þ°ì !öÀLˆÌlÈLH6ÞdÓ²7ÿ€’Ñ8#8𬀧ž@<âÀÓ4<ëôó&ð¬#Ž&N7=<ã8-<â`íô:ðŒ#ŽÓ)‰8N‹Ó´8ð¤Ô4AM‹Óô8ðŒÏ8ðˆ8M‹³<ãÀã<㈓Ï8N‹Óô8X#<ãÀ#<â¬Ï8âÀ“8X‹Ï8ð¬3NÓã`-<â8-<âä“<â„=<ëŒ8N¯Ó´8M¯Ó´8ðŒ“Ï8MCPÓãä3<âÀ³Ž8ðˆÏ:ðŒO>ë4-<âä3ŽÓùŒ8ð¬Ó4ANþÓô8M‹8ðˆOJâÀC<ãˆ8ëÀcð<ÆÑ´qÀCðHIÓR2ަâhAà1‚À#Y‡ÓÆqÀcM‡8°&Ž|Œ£ië€Ç8š6Ž|ÀcN<Æá4q4-ãhÚ8à1ަå#%ðGÓÄÑ4qÀcaƒ‡8‚ÀcðG>Æ”8 ðÈÇ8š&ަlÚ8š&Ž|Œ£i gÖq¬<Ò4q4mð<ıÄqäcð<Æq4mãÀA°6xŒ‡8𿙦­â€Ç8à1xˆ£iùGÓÆ!Žþq,ã HÓÄqÀ#ð‡ÓÄá4ÂCXËÇ8Ä6q8MðG>ÆÑ4‚4 ðX‡ÓÆq4mð<Æá´q`-âpš8š6xŒ#ã‡ÓÆq4MðGÓıxŒ£i〇8ò!ަÇ8à!Ž|Œ£i 8œ6xŒã€G>Äq4MðÇ:°6qÀcâ‡8à‘q4m‡8à‘uÀcžÉ‡8|ÀcX (ÁˆŒ£i &<Õ4qÀcð<ÆqÀcð<ÆqÀcð<ÆqÀcð<ÆqþÀcð<ÆqÀcð<ÆqÀcð<ÆqÀcð<ÆqÀcð<ÆqÀcð<ÆqÀcð<ÆqÀcð<ÆqÀcð<ÆqÀcð<ÆqÀcð‡5š† xŒâ€Ç8à!xŒâ€Ç8à!xŒâ€Ç8à!xŒkÈhš5à!xŒâ€Ç8à!xŒâ€Ç8à!xˆÃùpš8à!xˆ#ë˜<ÆÑ4qÀCNCF>š6xŒâhÚ8àŠv bŽX0ƒ qÀcð‡Ó~¡xdþ#Þ`=:ìáÓƒ ,˰7ÄñM8Mð<Ä5q¬ž@ØÄ±qÀCÿè‡&à!xh"%ð<ÄqÀCMGÓÄ1xŒ£i〇8š&ŽqäCNÇ8š¶Ž¦#âÇS’qÀƒ ãpš8š6xˆ#lâ€Ç:6qÀcðG>àA°#MGÓÆq4MM<<3§£iãhš8ూ8mM#<Äá4qŒâ€Ç8œ¶xˆY‡8àA¦âX‡8šF§£iâH‰8à!§­ƒ )YAàAq`mð<<Ó´q8þ ù›8œ6xˆâ€Aà!§‰#žÉ‡8àA§‰£iãÈ‡ÓÆÑ´qÀcâÈÇ8šFqäâ€GJš&x,Ä3ðÇ8à!xˆkãpšá!x$ã€Ç8ò!ަ£iãpAÆqÀCðXG>Ä1§âX‡8Æ‘qÀcX[‡8°æ™¦‰žGÓÄqÀCX<ÖqäCXGÓÄÏŒ£iâ‡8àAux† 〇8à1Ž|ˆcX<ÆuÀCaÖÖu8mð <Æudù€Aà1ަ‰âARqÀCþM<Æ|ˆ£iãhÚ8à!ަ‰câÀš8à!x¬C©lÚ8šFxˆâÈÇ8òA§ã€Ç8à!§ž‡8š6x$âhAÆÑ´uŒ#â€AqÀCN#È8š&§£iãG>²>Žu8mM#È8à!ŽqÀC©GÓÆ‘¦‰ãX‡8à!§­ã€GJà!xˆÃ:ˆCŒÂ/0Bˆ<,XA888888`8 ÖÈÃ4,ƒ<8Í2ÀÃ8ˆ<ˆCÓŒ<ˆÃ.üAÀƒ88Í8ˆCÓ B;8‚ÇÔCÇÔCÇ8BÓˆ¤A48Àƒ84Í8ˆCÓäÃ8ÀAÀþƒ8¬<ˆCÓŒ<ˆ<ˆC>Œ<ˆCÓäƒ5Í8<ˆCÓŒƒ84Í:Ì¢8ÀA4 AÀÃ:Ì¢8Àƒ8ÀA¬Ã8<Œƒ84Í8ˆ<ˆƒ068ÀÃ8Àƒ8ÀƒgÌâ8Ìâ8Àƒ8ÀÃ848ÀA4M>Œ<Œƒ8Àƒ8Œƒ84Í8£8#AÀÃ:Àƒ8£8Àƒ8Àƒ8ÀC>¬<ˆCÓˆÃ8Ìb>ˆGÂC>ˆ<Œƒ8äƒ8p¤8Àƒ8Àƒ8Ìâ:Œƒ8ÀÃ8ˆCÓˆ<<ˆ<ˆGŽCÓ¬Ã,®<ˆCÓˆ<ŒÃ,Š<¤„84Í8D>¤„8Àƒ848¬Ã8þÀÃ8ˆC>ŒÃ:X%<ˆ<ˆCÓˆCÓŒ„0Žƒ8Àƒ8¬<Œ<<<ŒCÓäÃ8Àƒ848¬<ˆCÓDÓ¬<ˆÃ:ÀƒgÀCJ¬CÓˆ<ŒÃ,ŠC>pd>¤<ˆGŽƒ84 AÀÃ:ÀÃ8ˆƒ0Ž<ˆÃ,æÃ8ˆ<ä<ŒCÓ¬GæÃ848Œ<„0<ˆƒ0Žƒ8ŒCÓŒÃ,ŽAÀƒgÌ"A¬CÓˆÃ:£8ÀÃ8ÀÃ8Ì"AÌb>ŒCÓˆCÓŒC>xÆ:ÀÃ8ÀAÀƒ8Ì¢8ÀC>Àƒ8Œ<ŒÃ,ŽÃ,Š<Œ<ˆ<Œƒ8äƒ8ŒCþÓˆÃ,Žƒ8ŒÃ,Žƒ0ŠCÓŒ<Œƒ8ÀAX¥g4Í8Àƒ8Ìb>ˆ<ÄBˆÃ,®<„UæCJ4Í8Àƒ8ÀAÀÃ8c>Œ<ˆ<ˆƒ0æƒ8ÀAÌ¢8Àƒ8ÀÃ8ÀÃ8Ä:ÀÃ84848Ìâ84 Aäƒ8päBp€(,#<ˆ<Ä(8`Óˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆþ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆCÓüÂeŠÃ=45ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ü<œƒ<œC<ã:ˆƒ5Àƒ8Àƒ8Àƒ8Àƒ8Àƒ8Àƒ8Àƒ8Œƒ84Í2ŒÃ,þÂ2d24Í8Xƒ8ä<¬CÓˆ<ˆ<ìÂ?48Àƒ8Œƒ8ä<ˆ< B;8B;lL=ìC×Öƒ#Àƒ8Àƒ8ÌâBì‚ÀËx9°7xÆ8dƒ7Ä8°Œ8ü(Àƒ8Àƒ8Àƒ8Œƒ8p$A¬Ã,ŽCÓŒƒ8þ4Í:ˆƒ§h<ˆXî8ä<ˆÃ8¬ƒ8ÀÃ:Ìâ:4MÖÁÃ8ÀCJ4Í8ÀÃ:ˆC>ˆ<ˆC>ã8Àƒ8Ì¢8Œ<ˆ<ŒÃ,ŠÃ,®ƒ8ŒCÓŒGŠCÓŒC>Àƒ8ŒC>Ì¢8Àƒ8ŒÃ,„UŽ<DÓx<„U¦Ä:ˆÃ8ä<Œ<ä<ˆ<ˆ<Œ<ŒÃ,ŽƒåŽ<ŒÃ,Š<ŒÃ:ˆCÓŒCÓˆ<8<ˆÃ84Í8ÀÃ848ÀÃ848ŒGŽCÓŒ<ŒC>Àƒ8ä<ŒCÓˆƒåŠŒ<¬ƒ84Í8pä8Ì¢8Àƒ84Í8p¤8äÃ8Àƒ8ÀAcJˆ<Œ<ŒC>ˆÃ,ŠƒåCÓˆCÓ¬<ŒC>ÀCJÀAŒƒ0®ƒ8ÀCJÀƒ8ÀÃ8ã8ÀÃ:ˆ<ˆ<ˆÃ,ŠCJÌ¢8Àƒ8ŒAä<ˆ<ˆC>¤„8äÃeŽÃeŽ<Œ<ˆ<<ˆ<Œƒ0Ž<¬A4Í:Ä8p¤8Ì¢84Í84ÁC><Œ<ˆ<Œƒ84 A48ÀÃ8Àþƒ8£8Àƒ84Í8ÀƒgŒ<ˆŒ<ŒÃ:,<Œ<ì‚7¬Ã8xÃ/ÀÃ:,CJÀÃ848Ìâ.üƒ0æ<Œƒ0¢B;8ÂÆìÃ>ÔÃ>à>Ôƒ#pä:<ì‚äC*zCJp9pA*Š!,ˈƒ7ŒËô(pd>ÀÃ8ˆÃB£8¬AÀAÀAÌâ?ôƒ&4Í8ˆ‚8Ìâ8ÀÃ84 A¬ƒÁÃ8ÀÃ:¤<ˆÃ8ÀÃ8<Œ<ˆÃ:Àƒ8ÀÃ8ˆ<ˆÃeŠ<ˆ<ˆ<ˆ<Œ<¬<Œ<Œ<Œƒ8ÀAÌ¢8ÀC>ŒCÓˆ<Œƒ8ÌbJÀC>Œþ<ˆ<ˆ<Œƒ8Ì¢8¬Ã8Àƒ8¬Ã8ˆÃ8Ì¢8ÀÃ8Ì¢8Àƒ84Í8äÃ8Ìâ8\¦8ÀÃ848äÃ8ÀC>¤„8ÀCJ#AäÃ8ÀÃ8<Œ<Ä8<ˆ<ˆCÓŒC>ŒCÓŒA48äƒ8Ìb>ŒAÀƒ8Àƒ84Í:ÀÃ8ÀC>ˆCJˆ<ˆ¤<¤Apä8ˆ<¤GŠ<ˆ<ŒC>ˆ<<ˆCÓ<Œ<ŒCÓˆÃ:¤Ä:<ˆÃ8ˆCÓŒƒ0®CÓˆƒ0Š<Œ<Œ<ˆ<ŒÃeŠCÓ¬<Œ<ˆ<ˆÃ,<ˆCÓˆ<Œƒ8¬ƒ8ÀþÃ84Í8Ä:ˆ<ŒAÌ¢8Àƒ8ÀA4Í8ˆ<¬ƒ8X¥ÁC>Œ<ˆCÓŒ<ˆ<Œ<äA¬CJÌâ8Àƒ8¬Ã8ˆC>ŒCÓäÃ8ÀÃ8ˆÃ,Šƒ0<Œ<„Ã8äÃ8pd>4Í8ÌbJˆC>8Ð8ˆCÓŒ<<Œƒ8ÀÃ8ÀAäÃ8\&AÀÃ8xÆ,Š<Œƒ0Ž<Œƒ8Àƒ8Ìâ8x<ˆ<ˆ<ŒÃ,ŠCÓˆC>ÀÃ8ˆÃ,ŠCÓˆÃ,Š<ˆ<ŒCÓˆC>ˆÃ,Šƒ‹<Œ<¤<Ä,ŽC>ˆCJÀA484Í8ÀÃ8ˆÀÃ8äÃ8ˆCÓ¬<ŒAÀC>ˆƒ0Žƒ8484Í8,<ä<Œƒ0†€( #<ˆÃB¬ƒ&ôC>ˆÃ8ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<ˆ<„8xâà‰ƒ'ž8xâà‰ƒ'ž8xâà‰ƒ'ž8xâà‰ƒ'ž8xâà‰ƒ'ž8xâà‰ƒ'ž8xâà‰ƒ'ž8q»þàõ<÷³ç¹žç~Á'nœ8xâà‰ƒ'ž8xâÆý‚÷Þ9x?×õ„·KÜ8qðÄÁOÄ1q¬ƒ-âÈÇ8à!Žžˆ 8Ö1ŽHÂC^GOÆ!ŽžŒã€Ç8ÄÑ“q8Ò8âð [z"Žžˆ£'ùÇ:à‘qÀcãÇ:à!㌣mÆa <ÆÑqg^Y[Ä‘q¬Ã+âh›8ÆáHxˆùXGOØÒqÀcð‡8z"ŽuÀcù<ÄáqôDðp$<ÆÑ6qÀcù‡8ŽãÈ|Œã€Ç8ÄÑqÀƒ-ÇGOÄqÀCÆþ‡WÆ!ŽžˆcùG>ÄáGgâȇ8z"xˆ#ãÇ:Æ!¯ˆã€Ç8ÄÑĈùÇqéqôÄ‘ùGOÖáq'ã<ò1Žžˆcð‡#Û6xˆ£m‘ôŠ8²Ù“|ÀcðÈ<™qôDðȇ8ò!Ž|82〇#ááÈuÀƒ-Ž4Ž8Ö1ŽžˆãèÉ8à1qÀC^Ç:à1x8ãGOÆqÀC=<"¹xŒâðJ>"é•|ŒâXbÄqˆŽì‰8à1¯Œ£'ã<ÆáqÀcðp¤qÖqÀcùpþ¤WÖqx%ã<ÆQ×lŽCù<ÄÑ“qˆ£®â€‡#{2¯ˆâè‰8z²ŽžˆcâÈbà1xˆ#ðGO¶82â8Žp8 Še0ð<ÄM0gð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCãÇþ:z²ŒqôdËøÅ/¬ñ‹eÀCl‡8à!xˆ 8Æ!xì¢ÈøÅ.F sÀãŽì‰8Æ!xˆâhÛ:àŒqœcëØÅ4¦ñ qŒãÈ<ÆHŽ£'¿ø‡8z"ŽqôDðG>PÑG´CæÐF;ÌÑ{;âðŠp„³ =gð<IƒœöP8!Ä!qüCðÇ8Ö!xŒãè‰#×Ñ“qˆ£'އ8à!ŽuˆÃŒ£<Ö¡ ¯ŒãðŠ8ŽÃx F=< qŒÃ8ãÈ[¼âÈ|ÀCð<ÆÑ“qÀC=Y‡WþÆÑqäCÆbòqäCðX‡8z2ŽžˆÃ8âðŠ8z"xˆcÆq$<ÄqôdùðŠ8Æ!¯ˆ# 8àÁxŒëpä8Ö!ŽuŒ#ðX‡WÄ1x8r=<ÆáqÀcù€‡8z2qÀCë<Æ‘qÀcŽ„Ç:z"xŒlG>Œ3ŽuˆcðXG>Æ!Žžˆcùè‰8à1xˆcâGOÆÑ“qGù<ÆqÀcð<ÄÑqÀc^YG$#ŽžŒ#ãè‰8z2ŽžDâ`KOÆGöDàAÆÆÄá8 ÄþÆÆ¡'Æ¡'Ä¡'ÄÆÖ¡'ÖÄ¡'Æ!Ä!àaÖÁ‘ÆÆÁ8ÆAàA¼bàazbàAzbàaàaÄ¡'Ö!’zbòÁ8ÆAàÁ‘zBÆÆá8ÆÆ¡'ÄÆÁ+Ä-¼b©'ØÆA8zbÄÁ+Ä¡'ÆÖ!Œc¼B¼"’Æ!Æ!àazBzbàA¼Â‘z‘ŒcÚfàAzbàaÖÁ8ÄaÖÁ‘àaòAò¡'ÄÁ8ÆÁ+ÄÄaòAàAàAòaÄ¡'É+Æ¡'ÆÆ!iþ¼Â‘zBà-ÖAzBàaà-ÄÆ¡'‰-àAàaiàaò¡'ÆÆØ¢m Æ!›ÄÄazBàa)" Ø¢'Æ!Ä!ÄÁ8ÆÄaÄÄÄ!@aa¼bÄaòázB¼B¼B¼B¼B¼B¼B¼B¼B¼B¼B¼B¼B¼B¼B¼B¼B¼B¼B¼B¼B¼B¼B¼B¼B¼B¼B¼Bà!àaÄazâ~¢ÖÄaÆaà!Æ¡'ÄÁ+ÄÁ+òaàaiŒãàÁþ¬Á+ÆòÆÄ¡'ÆAàazbzb–¡²av~ÄÄÁ8ò-ÖáþÆÁ+Æ¡'ÄaÄÚÁÚ(#.c¡'Æ"Iàaô 'ØBz‚Ø4K“æAØAAàaþAà!Æ¡')ÆÁ+ Ä¡'Ä¡'òÆÁ8úá4AàA4aÄ!ÆAàaÄÁ+iòAàAòAàAàÁ‘ŒCàaÄÄaÄ!ØÂ+ØÆÁ‘òa"É+Ä¡'ÆÁ‘zbàaàAzBzbÆAzbzBàþÁ‘¼BÆAÚFàAà! Æ!› Ø¢'Ä¡'ÆAàaàazBòaÄÖ¡'òazBÖaà-z‘z"ÆAàAò-ÄÄ!Ø¢'é8ÆAÖÆaz‘zb")ÄÆÆÆ!Æ"iÄ¡'ÄÄaØ¢'É+òaàÁ‘àÁ‘àaàaàa)ÄÄÄÁ8Æ" Æa¼Â‘àAz‘ÖAàAàaàA²)ÄÄ!ÆÁ+ÄÁ+òaòaà-àaÄ¡mÆÁ‘àAàaŽCàaàa©'þià-ÄÁ+Ä ÆÄÁ+Ø¢'Æ!"É+ÆAàAàazBŽcÄaàaÄÄÁ8Ä¡'Ä"É+ÄÄÆ" )Æ¡'Ä¡'ÆÆ¡'ÄÄ¡'ÖÖÆÁ+ÆÁ8ÄÄaàaàaòAÆÁ+ÄÁ8ÄaÄ-ÄÆÄ Äá8ÄÁ+ÆÆ!ÄaÄÁ+ ÄÄÄÆÆ¡'ÄÁ8Äaà-Ä¡'Ä¡' ÄÄÄaàA¼bÄ¡®ÄÆ!iz"ÆÄ¡'Ä¡'Ä!Ä¡m)Äþ Æ¡'òÁ‘ÚÆ‘àa4SòAàaÄÆÁ+" ÄÆAzBàÁ‘¼bzbŽCàÁ‘zbàÁ‘àaàaà!ÆÁ+ÖB@ÖÄ49ÄÁ+ÄazB¼BÆ¡'ÄÁ+ÄazB¼BÆ¡'ÄÁ+ÄazB¼BÆ¡'ÄÁ+ÄazB¼BÆ¡'ÄÁ+ÄazB¼BÆ¡'ÄÁ+ÄazB¼BÆ¡'ÄÁ+ÄazB¼BÆ¡'ÆÁ+ÆÆ~avA8àA8àaÖÁ‘¼BÆ¡'ÄaÖÁ‘ò¡'Öazâvá~Á‘zþBØÄÁ+©'ĉ-àaàAjâ²Ö¡'ÄÄÆÆAòaváiÄÄÄ¡'äPÁÚ2)Ó4Ó8Äô`Ä!ÄÆÄ †˜ˆ¹€Ž˜ Ä¡'ÄaDaÖAÖÁ+ÖAÆ!›ÆÆÆÄÄaÄáúaàAàAÄÖAàÁ‘zbÄ¡'Äaàaàa¼BŒCz‘àAàaàaÄ!Æ¡'Ä!Æ!zbÄÁ8Æ¡'Ø"z‚-z‘àa¼BÆ!àaÆ!Äá8ÆÄÄÁ+ÄþØÂ+ØÂ+Ä¡'ÄÄaŒCòAŒCàaòaò-zBàÁ‘ÆÆÖAz‘òÁ‘ŽcÄÁ+Æ!ÄÁ+ÆÄÄÁ+ÄaÄaò¡'Æ!ÆÁ8ÄaŒc¼B3×AÚfŒcÄ!ÆÁ8ÄaàÁ‘ÚFàAŒƒ-zBzBÆÄÁ8Æ!Äá8Æ¡'Ä¡'ÖÄ¡'Ä¡'Äaàaz‚-àAÆÄÆÁ+CÖAàAòAòÁ+Ä-Ä!ŒÃ‘àÁ‘Æ¡' Ä¡'ÆÁ+ÆÖ!àa¼BzBòAz‚-òAàÁ‘ÆÁ+Äþ-òÄ ÆÆÆÆ!z‘àAzBÆá8ÄÁ+Ø¢'Ä¡'ÄÁ8Ä¡'Æ!Ä¡'"iòaŒ#’àaàÁ‘ÆAòaàazBzB3Ù"ÄaÄÆ¡mÄ!zBzBŽCÆá8Ä!‰-òÄa²IàAòaòAzBŒczBàazB¼BÚfzbŒCàaàÁ‘z‘ÆÁ+ØbÄaŒCÆÆÄ Ä¡'ÖÁ8 1¼bÄ¡'ÄÁ+Äá8Ö©'é8Æ¡'ÄÆ!›iàaàazBŒcàa¼þBòAÄÄÄ!FaaÄ¡'Ö4¡þAàaà!Æ¡'ÄazBàaàAÆ¡'ÄÆÄazBàaàAÆ¡'ÄÆÄazBàaàAÆ¡'ÄÆÄazBàaàAÆ¡'ÄÆÄazBàaàAÆ¡'ÄÆÄazBàaàAÆ¡'ÄÆÄazBàaÖÄÄÄÆaàaÄÄ!Æ¡'ÄÆòazB¼bàaÄ¡'Æ!àáÁ+ÄòAzBàa¼BþàAz"ÄÖ„Faajá¼bÄÁ+ÆAÖaþÁ+ÄÄ¡'Öò¡'¡þ2ú2Á8ø ÄaÆ¡' òÁ8ò!¸@¤ÁzBzbFazBÖÖò-àaÄÆ!ÆAàAŽC8úá4¡'ÄAêJŒcàAàaàa¼bàAêJàAàaÄÄÖAÖ-Žc Ä!ÆÆ!É8ÄÆAàAÖ-Äaà-Ä¡'Ä¡mÄ)ÆÆ!ÖÆAzbàaàÁ‘àazbþà-àAzBÖAÆAòaŽCàÁ‘zbÄ¡'ÖÁ+ÆØÂ+ØÆÆÆÁ‘ŒczBàAÖ-ÄaÄÆÁ+Ä¡'ÆÆÉ8ÖÁ8ÆÆ!ÄaàaÄÖÁ‘àazBŒcÄÆAàAzBàa¼bzbàÁ‘ŒcÄaàAÆAàaò-ŒczbàAzBàAàÁ‘Œcz‘àaÄ!ÖÖÁ+Æ^òAàaàaÄ¡mòA¼B¼Â‘z"’ÖaÄÆá8ÆÆÄ!ÆÄ!›Ä!Æ¡mÄþÄÄ à‰[7N¼ƒÇÁË'nœ8„Çå'¡8ˆãŽƒ7ž8ˆâÖ‰ƒ7NDŠâæ7N<Šëà­1¼qðÄo¼qâ®'îà8„,ÅÁOÜ8xâà;˜KxŽƒ'â8qãà;ÈR¼qR<(á8qðÆÁ'Exâàƒ‡ò 8ˆðƉË'î`¾qðÆOàqÇÁoÂ|âòƒ7NÜÁqÇoDqÇ—oœ¸ƒâàƒ7E„ãòOÜAqðÆ¡<8Þ¸uùÄÁ‡p¼uDýbž¸uâÖiêþ÷Þ¸|ÞàQãäEëˆ8ðˆ3Ž8ðˆ8ÿü£É8ðˆ£‰8ãÀ3<ãÀ#ÎA,Á3þÎAâŒ8ðŒEQ4<ãÈ 8­Ï:âä#Î8ð°”ÏAãÀ³Î8ðˆ³ÎA⌃8ù@$N>‰“<â$Î8ð°$`(#<âD<â@DÑAãäC<ã´<âÀ³Eðˆƒ8‰8Ï8ðP4N>âÀ3<âäC<åƒ8ãÀC`âäƒEã $<âÀCQœâÀCÑ8ùP4<å'EÏ8ùÀ#N>‰Ï8ù ”Ï8ðˆ‘8,åsÐ8ðäs8㈓Ï8ð 4<â&<âD<Á#BâÀ³Ž8ðŒ8ðˆ3<âä#Î8ëÀþ3<Á#ÎAâÀÃ<âŒ#ç8“<(Á#KQÏ:⌃8,Á3<ëPÏ8‰ƒ8ðˆs8E,“<Á3<âŒs8,$Î8ðˆÏ8ùP4<ã@´<4Žœë $Ž®ðŒ³E€‰“EðŒs8QÏ8ðˆ“BâÀ“8㔺8ðäƒÐ8ðˆs8ãˆÏ:‰3<âäÏ8ùÄ9ÎA,‡8"xˆ"â8ˆ8ä$ŽqÀCð<Æ–¬%€<ÄqäcðÇ8òAxŒã8ˆ8Æ‘ƒPãȇ8ÆqÀCãȇ8þÆq „"〇8à!ˆˆ#D(²qÀCð` <Æ‘„ˆâ€Ç:à±xˆãÇ8òq„Ë`ÄBMdJëBÆ‘qˆ#NãGœÆ!Ž8Cq‡8â4qÄiâˆÓ8ħqˆ#NãGœÆ!Ž8Cq‡8 "„ŒCBÖqÀCð‡8Ö!ˆŒCù‡8 "xˆã€Ç8òqˆ〇8à!ŽƒŒã  8à1xŒã â€JÖ!xˆYB(rqü¢‡8àAxˆ!lZ`ÄqÀ%â€Äþ± =ˆùŒ;’up ‰ÇAþ „P$âX<Æ!–è*ðDòÑMˆâEò1Ž|ˆã ãG>ÆA‘ƒäCðG>Äq$ã<ÄqÀƒ"<Æ!x¬ɇ8Æqäcð BÆqÀCã€Ç8à1xˆë‡8Æ–ÀC¡H>Äq–ÀcÉ<ÄqqÄiâ8JÖŠÀcºDÖqäƒ"ÇAPuDY<Æ!xP!ã8ˆ8à±– „"ð<Äq dðHDıŽ8­ƒ%â€Ç8ÄþqPâ€Ç8àÁqÀcÇ:2Š dâ€G>ÄoÀCð`‰82Š $ 8à!Žq0ï â@ˆ8 B‘ƒˆù<ÖqD€‡8à1qäcðȇ8à’ƒP!âXGœÄ‘qÄ)ã€Ç8à‘Šäcë@ˆ8à!Žƒˆ0â@È8ò1Žƒäã ,AEà‘q$ 8àA‘ƒˆcÉÇ8Äqˆ#NÇ82x°„"‡8à!ŽqÀƒ%â€È8à!ŽqÀcÉK"„P©;K2qäCKà1ŠÀCÇAÄþqDa‰8ÖqPã<Æ‘q DðÇAÄqD2„Œù È:(‚qŒ#<Äq”d 8"Žƒˆþ!ë8È8ò!xˆã ,9È8 "ŽqP$ºBÆ‘qŒâ<Ä”Àƒ"ðK౎ƒˆ!ãë01ð q‚ãpë ù Aq2ù@ù ð ã€ãâãë ùã1â!!ãùããpããâ0ù,ãâ€âpâãããããâ0ÁA!Á±Að ð0ð0ùpâë ©ã€,që ãpâ0ð°ð ãâÀþë€ã°±1ð ð !ð ð0ð 1â0ð°â0ð Áù:r"‘:ù(1Aã ù@!ð ùâ0ù@ùãp(ââ©“âã€âù ãâpã‑º"ð ð !ð ùãâpâð@!ã 'ããpã ðPãâ:1ð ãpââ0ù 'ãââÀââpâã€ã€ãpâãâþâ0!Áë ãâpãããpâpãpâëâ°â£ð Œ0A#ð  ýðâpù0ð,ââÞ€ââÞ€ââÞ€ââÞ€ââÞ€ââÞ€ââÞ€ââÞ€ââÞ€ââÞ€ââÞ€ââã€âãpââ@#ð0ââpã,!!±ð°ð ùÀð0!!ë0âpãã !þð q2ð ð°º"ð 1â°ð0»ð!1ð€ð°à@×'â° zñøð ø òqòòР@ð0ëpâ°qâââãpùðšëšã€ã +ù ð Áù €!ð A±ã ùÀð ð0±1ð ð0€!±ð A11ð0ð0âpâpã 1ù ãâùp©31‘âpâ°ð@ðãã þ+âã°ð01ð@1ââãã@€1‘ãâãã €1â,!ëpëãùÀð Að ðÀâ°,‘,ãpãù ,!ð@ð ð ð ð0ââã ù0â°ð0ëâãâpã ã !ð@ù0ðãã ù0â€ãp,‘ëã@€1(±,qëùpâãqââ°A‘ããâpâã€ù0ð0‘ãþ€ãpãpâpã ùâù01ùÀâð0âãpãp‘ë0r"ð ‘ð0±‘:1±ã ð0º"ù ãã ðÀA!!º2âpëã ð ,'âpâë0,ãâ1ââpëãâðÀð@ðã°1ââpâ°ã 1ð@€!ðâëã !ð0ð ð0ð !1âpããã þù !ëã€ù0âãpâpâã(qã ±! ËÀâ1 ÿðÀë ðà ù ð0‘âãù ð0‘âãù ð0‘âãù ð0‘âãù ð0‘âãù ð0‘âãpããp1!ð0!ã ùâë@!!ããpë ë0âëpâpâpâ€âãpã€qââÀ&ããâþâ»ã€,‘â€ââ(±ããã4âÓ ë0wœ, sòœ,:wøÿ !ù@!ð°!ð ð°ð ã ã𠙢 (¡ ð ð ð ãâ:Aùpãâ01ð0âë ð0ù !ë0ð !ð Að0ð 1â '‘ð01âð€ão ù ù0ð 1ð ãã°ââ€â0ð ãëþ ãâ(qã ùââã ããë@!ð ð ãpqâ1ð0ð ,!ù ð !!ùãâ0ð ð ð@,qââââã!!ð°ð 1ð ë ð0ù ð@ùâpãââpë ãââpâpã ù ãâ0ââ€ãpã1ù ð0ð0ë@!!ããpâ€âà ð ð !ãë ð0þð°(ãë ã ð@ð ð ð ð ð0ð0â€ãâ1ð ð°qââpë ð ããâãããë(1ð !ð ð0ð0ùãâ0â4’ãð0ù ð 1!!ð0ð ð0â1ð@1ù@ã,qâ01ù€ããù0ð@€1‘r’:ð0ð°ââë@ð@ð0ð0!!ð0ð@!,ãpþëëã!ð@1ù ð ãâ,‘ð ð !ð ð0ð 1ùâpââë@,ë€ã ùpââš° Œ0𠱚)ù !ù0ð0ù ð:Að:Að:Að:Að:Að:Að:Að:Að:Að:Að:AqB‘â0A‘,qãâpâ0Aù€!ð°€1€1€1âpâã !ëâëþ@ù0ãpââ»Ðð ãâ0±ð ð !ñpâã@ù@4râë0 û°ôûÐûÐP¿ÿ°ôý°ÿÀôÿ°ÿ ð0ð01ð°11ð0ðð ë0ñù !šââù !ðâpâ0âpëã,Aðâ0ù0ùãã ð0±ãâ°ð ù0ð !1A1â0ù〺"±ã ð0ùãë 'âââ0þð0qã€ââ0ð0ù0!ð0ðãù0‘â 'âãããð@!ð°1€!ð !ð°,A‘O¼|ëàƒ7¼q ჷnœ¸u ÅÁç^¾uðÄ-oœÆ…âÖCépÜBq×åOÜBqë4Žs(NÉq Å-·pÜÂqâàƒ'nCquÂÓ¹ná8q uŠË7Ρ8x⊃'ž¸…ãæOœÆ|ãêÔ¨Þ:xùà# oœFqðÄÁ·P¼qðPjÌ'ná:‡âŠs8Þ8xâàåÓ þ¥Ã«:á‰Ó˜oþÀcð<ÄqÀc:qˆ8¢‡ˆc!:qˆ8¢‡ˆc!:qˆ8¢‡ˆc!:qˆ8¢‡ˆc!:qˆ8¢‡ˆc!:qˆ8à‘xˆc!㸊ˆÄ‘qˆc!âX<Äá,Dð<ıqÀCëÇBıq¬C'ðȇ8Æ!Ž…è„$âÈ‹8à!x,Erˆ8à‘qÀC'ð<Ö!Ž]üCþ#ãıqÀCðȇN"Ž…èd!âXˆ8à!Ž…ä〇8à‘qÀcðÇ:‚$MäHãÈÇ8ıqÀcùÇBÄWêù€‡+’xˆc!âÐH>ÄáqˆãpÈ8àq8DIò!”,D'ðÈÇ8à‘”ˆâ@ÉBÄuˆ#(‡Nà!‡¬:YJà!ŽqÀC$‡CÄq8$ã€G>Ʊq,dðȇ8ÆqÀcWÉÇ8®’qÀCþ ‡8H’qˆÃ!:qHŽÄÀc(ÉÇ8ıqäå* Ç:Æ¡‡Œc!:Yˆ8Ʊqˆ:ÉÇUà!Ž…ŒâÈÇ8t²8%‡NòÑq8dɇ8à¡xˆÃ! 7à!xŒ#ãXÈ8®¢‘qˆ#âXÇ8t²q¬ù‡8à1Ž…ˆc<Ʊ|ˆc!â€Ç8"Ž…äcÑ <Æá|ˆC#ã€G>à1‡èÄ!〇N"Ž…ˆùÇ:à1xäc:‡8P"‡ˆcð<ÆqÀc𸊈à1qÀcðÈÇ8à1xäcëþ€Ç8Ä|ˆc!ëÈ<ıޅˆâXˆN4"xŒCÛâ€Ç:à!Ž…Œc!:Yˆ8àxŒÃ!ù‡CÄáqÀcðÇBtq8$ðЉCÄ¡‘u,dðÈÇU2xˆ〇N4"ŒCð‡8à!Ž|ˆ#ãpÈ:à!‡ˆcð‡8à1xˆcùJ2Ž…ˆã<ÄqhD' ɇ+uqÀC <ı‡ˆ#âЈN¢“u Ä!ë(–ÁÀCð<4¤q8dÇBÄáq,%ÇBPâq,%ÇBPâq,%þÇBPâq,%ÇBPâq,%ÇBPâqŒ(ÇBÄ‘‡ˆcðÇ8Ä1Ž…ˆC#ëXˆ8Æáq,D' qðÆ!—!qðÆ‰ƒ7NœFqðÆÁ'.ß8xâàC8ž8xãàŠƒ7ÃuÅ!§qÜ@xãà­[O\>oùÂOܸ|ðÆáÌá8„ã4Žƒ—Þ¸ðÄiOÜ8xëà‰Cˆ} Á#<ãÀ3Ž8ðä#<âä3Ž8ëÀ“Ï8ðˆÏ84#<âä#ŽFpÁ3<ùŒ“8ð`‡Ð8bÁ3Î@Ï8‰)<ãÀ“Ï8‰Ï:ãˆÃ8ëŒ8bÂ#Bâ¬Cðä3B­#N>ãˆ%<ãˆO>ð0„Ð8‰ƒ8#<âÀ3ŽFãÀ3<؉Ï@ðˆ“vâ $<ùˆÃ8ãˆ8ðŒ£‘8Ï8ðˆÏ:ãˆ8ëŒ#<ëà$N>ã 4<âÀ×:ðˆ³Î8­‚(¿02<â¬8£üóî?ýÀÛO?ûüÓ¼ùî3¿­´þòÈ`0Á/Áƒôó.9äc#ùPB5ùø£ÿôó <äÛÏ?ôæÛÏ?ôæÛÏ?ôæÛÏ?ôöóËôþÓO¾ùöóO>ÿôoÌùöóO?5ÃÛ¼ýäÛÐÿì/½5çóO?ðöón?IÃë2¼ýÀÛOÍýìc5ØÿÄLï?ý€ÝOØïöóO?ùÒûn?i#$Î(ùäÏ:ð ä7ÙL3 2 ü³&âÀ#Î(­#B⌃Ð8ùˆ“FëÀ#<ã $Î8ëˆCÓ@“Ï8#< Á3Ž8ëˆC“8ùŒ\ðˆÃ8ã 4Î@ã 4<ëˆC“8Øi$Î8ðþ¬ƒ88ëÀ…Ð8ðäƒ8ãä8ð „8ðŒƒÐ8ðˆ3<âÀ#Î88‰Ã<ãÀ#ŽŸ£Ñ@ðˆ8ðˆÏ:à1Ž|Œ!ãÈÇ@ˆ 8à!ˆcâ€Ç8à±xŒ#ðN2„¬CG>Ä1Ž|ŒÃOÉBÆqÐd  BÆqÀcBÄ1ŽÀcð<ÆqäCð€ <‚|ÐD ɇ8à!xŒC#ãȇ8ò1„Œ!Aˆ8Æqˆ!ã@ˆ8à1ˆш8ÆA“Œ!â€Ç8òqhDþCà1šˆcâ€Ç:òqä!ã ‰8h2„ŒÉÇ@2qÀcâȇ8à1Ž| ãX<Äuˆ YÇ@42xˆ 8Ö1„ˆ'â`ˆ8Ö¡‘|ˆ‡8Æ!x0$<Ä1Ž| D<Œcâ<Ä¡qÀCù@ˆ82xŒâ‡˜Æ‘qŒcÑÈ:à1xˆcð‡FìäCð<Äq DãÈ<ÆqŒCðX<qäƒ&ã€Ç:"xˆC#ã€G>Ä|hdùÇ82x¬AÈþ8òAqÀcð<Ä¡‘u â“8à±qÀCëG@± F €&ëÐDÚÀ¶!¢f­F;ÎzVEaï"öÑw‘ûÈÇ= Àz=CæØG*P}Ô¬IëGÒú‘´~¤­±aë‡c#[³~X-ïêGdû!ÙÆæ#iýø½6+ÚÍŠëÐD<âqÀƒ!|óF6¦‘ Mü£ @È841œäcY<ÆqÀCðX<²xˆC#ë€Ç842uˆãG>à1Ž|¬ë€Ç:2xŒ!â‹8òq D<Æ‘qÀcð<þÆq Dð<ò1xˆ'ãË@àÁqÀCëNÄqäcð<ò1ˆ〇8’qÀC8‡FƸˆEðBÆqÀc ð`ˆFÆ!Ž|0D8<ÄqÀ#ðBÆ!ŽuЄ!âÐH>ÄuÐdðÇ:ÄqˆC#ãBÖxŒc ð`ˆX2Ž|ŒâÀ‰8pqÀc<Æ!–|ˆ#ØÇ8à‘qŒƒ&â€Ç8à!ŽuÀcâ€Ç8"–ä》FqÐDð<ÄqÐd <¼1xŒCBòþqˆ〇8à‘xŒCë‡8ÖqäCð‡FÆqäcpAÈ:Ä’qäã@ˆ8Ö¡‘|ŒC#ã@ˆ8ò1„¬âÈÇ8à!š¬ 82qÀ#â@È8‚q $ð<Ä‘q¬ã<Äq dâ€Ç8p’qÀ#â@È@4²† d 8’qˆã<‚qhDðX‡8à1x !ã I>à!ŽuÀc4aBÆq¬c 8à‘xŒc <Ö1qÀcùÇ@p2x¬ã€vÄq d ð<¢þ‘qˆcã<Ä|Œc aˆFÄqÀcBÄ!–ˆŒ<Äâhb´ïêG>Ñ‹jô¬½¨F/ª‘‹j”^ù Gö¡üƒØÇ»¾€ôãvÀ;‹ìÃñ¶¿=îs¯ûÝó¾÷ùê<à±PÀÃnÁßÄ‘ ¾!ÿè‡&Æ|Mˆã€CÖ!Žà¯â€Ç@à!xˆ#øæ_<Ö—à‹Ãüð<ÆqŒCð<ÆŒ#ã¾8Œ<Œ<Œ<¬Cð‰ƒûÁÃ@¬Ã@ÀÃ@Àƒ8_>ˆ< Ä8¬Ã@Àƒ8Àƒ8ÀÃþ@Œ<ŒCð‰ƒù‰C>¸Ÿ8Œƒ8Œ<Œƒù­Ã@˜ß:ˆ<ˆCð Ä8Àƒ8ŒÃ:˜Ÿ8ÀÃ8ˆ< <À…ù<Œ<ˆƒû< ÄŠC>Œ< <ŒC>ˆCð<ˆ<ˆƒû1„ùÁEð1<ŒC>ˆCð<Œ<ˆÃ8Àƒ8Œ<¬Cð­Cð‰<ˆÃ8Àƒ8˜ß:˜Ÿ8äCðC>ˆCð<ŒCð Ä: < <ŒCð<ˆÃÂ\˜Ÿ8˜Ÿ8`Ç:¬Ã@äÃ@0Dð1<ˆ<À<Œƒù‰C>˜ß8ÀÃ8ˆƒù1D>˜ß8Àƒ8˜Ÿ8Àƒ8¸Ÿ8Ÿ8äC¸þŸ8ŒCðC>ß@ß@`‡8ä< Ä8ÀCÀƒ8ÀÃ8ä<Œ<ˆÃ8Ÿ8Œ< Ä8ÀÃ:ˆÃŽ<0„8`‡8ŒCðCð<0Ä: Ä8Àƒ8ÀÃ8ÀÃ:ÀÃ:ÀÃ@Œ¢8˜ß8À\˜ß8Àƒ8ß:˜Ÿ8ß8Àƒ8Œ<¬Cð<ŒCðC>, 8ÀÃ8ä<ŒC>ŒCð<¬ƒ80<Œƒû<ŒC>ˆ<ˆC>Àƒ8Àƒ8x<ˆCð‰ƒûCðƒù‰Ã:Àƒ8lâ@ÀÃ8ÀCˆƒù‰Cð‰<ˆC>Œ<ˆCðC>˜väÃ&®ƒ8Ÿ8¬ƒ8Ÿ8ÀÃ8þÀ܉Ã:Àƒ8äƒ8˜ß8, 8¸ß8äCð‰<ˆCðÃ:ˆƒù D>ˆÃ8˜Ÿ8äÃ@0Dð‰Cð‰<ˆÃ:ˆCŒÂ/0ÂÀÃ@¬ƒ8hÂhõÃ>ìC>\A/´fkVƒk¶æÀË>Ãìƒ:À?CìÃ?ܤÀ»ìC?d>øžr.'s6§s2'<Œƒ8ŒB<ÀÃ:À\¼Ö2LC6h»ŒÂ8 „(ÀE>ˆƒû<¬ƒ8¸ß8˜Ÿ8Œ<À…ûCð<Œƒûƒù‰Cð Dð‰Ã:ˆ<Œ<äÃ8 D>Œ<ŒCð‰Ã8ÀÃ8l¢ù‰Cð1„ûåÃ8ß:˜Ÿþ8_> <ŒCðƒ8ÀvÀÃ8ÀC>Àƒ8Àƒ8ÀC¸C¬ƒùƒùåÃ8Àƒ8¬<ˆCðƒ8Àƒ8Ÿ8lâœÁƒ8ÀÃ8ÀÃ@˜Ÿ8Œ<ˆ<¬ƒ8¸Ÿ8¬<Œ<ˆCð<ˆ<ˆÃ8äƒ8ÀÃ8, 8ä\ß8À…ù‰Cð‰<ˆ<Œ<Œƒ8˜ß@˜ß8ˆÃ:ÀÃ8ÀÃ8ÀÃ8ˆCð1Ä@äCß:, 8äƒ8Àƒ8˜ß8Hè8 Dð‰Ã8ÀC>ˆCð­Cð­Cðåƒ8Àƒ8äƒ8H(\v <ˆCðCð‰Ã:ÀÃ8Àƒ8˜ß8ˆƒùa‡8ß8ÀÃ8ˆC>ˆþÃ8˜ß@Àƒ8l¢8_>ˆCðƒùåÃ8äÃ:˜Ÿ8¬Ã8 <ˆ<ˆ<äÃ8_>ŒÃŽÃ@Àƒ8ä<ˆC>¬<¬ÃœÁƒ8Àƒ8äÃ8ß@Àƒ8äÃ8¬Ã@˜ß(ß8ˆC>Œƒû< Dð‰<Œ<ˆƒù <äCÀÃ8äÃ8ß@ÀÃ8Àƒ8Àƒ8ÀÃ@ÀÃ8ˆ<ˆÃ8 „ùåÃ:ÀÃ@ÀÃ8Àƒ8Àƒ8Ÿ8ÀÃ8¸_>ŒCð‰Cð‰<ŒC>ˆ<ˆ<ŒCð‰Ã:˜ß8ÀÃ8˜Ÿ8äÃ@˜Ÿ8ŒCðƒùÃ@ß8äCˆÃ8äÃ:ˆÃ:ÀÃ8ÀÃ8ÀÃ8ˆCðþ‰ƒû­Cð‰Ã&ŠCð­<Œƒ8Àƒ8ß8ˆƒùƒ8Àƒ8¬C¸ß@¸ß8ß8Àƒ8ÀÃ8ÀC_>ˆ<ŒCð‰<Œƒù­CˆÂ20˜Ÿ8Àƒ&€ Øô¼A/TCl¾îä 9À>°ƒü9ÀÀ@;ä À1üC>$ñ/ò&¯ò./ó6¯ó>/ôF¯ôNï»äƒ8ä<€‚<Ä<ˆ<ŒÃxƒ8,ƒ7LÃ2€Â?äƒ&ˆCð‚ù­<Œ<Œƒ8äƒ8¬ƒù<ˆ<ŒCð‰ƒ„<ŒC> Ä8ß@Àƒ8¬Cð‰ƒ„Ä8Àƒ8ß:ÌYð Dþ>ˆÃ8Àƒ8Œ<ˆÃ8˜Ÿ8ä<Œ<Œ<¬ƒ8˜ß8ˆCð<¬Cð <ŒC>ÀÃ(æƒ8Àƒ80Dð‰<ŒC>ˆÃ8ß@äÃ8Àƒ8Àƒ8ÀÃ8ÀÃ:ˆƒù<0D>Hhð1ÄŽCð‰ÃŠ<ˆÃ8ß:Àƒ8Ÿ8ß8äƒ8Àƒ8Àƒ8¸Ÿ8Œ<ˆC>ˆÃ8Ÿ8ÀÃ8¸ß8äƒù‰Ã8Ÿ8Ÿ8Àƒ8äÃ@`ñ@ÀÃ8Àƒ8ß@ÀÃ8Àƒ8äCð­ƒ8äÃ8ß8˜ß8ÀÃ8˜Ÿ8ÀÃ@ÀCÀÃ8ÀÃ8äƒù‰<ˆÃ8¬<ˆ<Œƒù1Ä:Àƒ8ÀÃ:Àƒ8Àþƒ8ŒCð‰ƒù‰Cð‰C>Ÿ8ß@Àƒ8ÀÃ8Àƒ8Ÿ8Œ<ˆCð‰Ã8äƒ8äCð <¬<¬Ã8äƒ8Œƒù‰<0„8ÀÃ8˜ß8Ÿ8Œ<ˆC¬ƒ8¬Ã@ŒCð­C>¸ß8ÀÃ8Àƒ8Œ<Œƒ8ÀÃ8ÀCäCð‰<¬Ã8ÀÃ:ˆ<ˆƒû‰<ˆ<¬ƒ8¬Ã®ƒ8˜Ÿ8¬<ˆÃ8ÀÃ@ÀÃ:ˆÃ8ÀÃ8Àƒ8¸ß8ß@ß8˜ß8Àƒ8äÃ@À\˜Ÿ8Ÿ8¸ß8ä<Œ<äCð‰vˆƒû <ˆ<¬Ã8Ÿ8Œ<0Ä:ˆCß8Ÿ8Œ<ˆ< Ä8þ¸ß8Àƒ8ÀÃ@ÀÃ8ÀÃ8Ÿ8ŒCð‰<ˆC>Œƒ8ŒC>˜ß@Œ<ˆ<ˆÃ:ˆ<Œ<ÀÅ8äCðCð‰Ã8Àƒ8Àƒ8Àƒ8ŒÃŠÃ8ÀÃ8ä<ˆ<ˆ<ˆ<ˆCä<ˆ<¬ƒ8äÃ8ÀÃ8˜Ÿ8ÀÃ8Àƒ8, \C¬Cð‰<ŒCð‰<ˆÃ:ˆChÂ20ÂÀÃ:ÀÃ:ˆƒ&PoôB+¼®k¶ôûô9€>°ƒô9À>ôÃ=@ôÃ?äC1€ 0À>P¯}ß7~ç·~ï7#ï:ŒÃ:Œ‚<¸ À¼Ö4L(¼ (ß8hÂ8ÀÃ8Àƒþ8Àƒ8ÀÃ8ß8ÀÃ8ˆƒù Dð‰Cð<Œƒ8˜Ÿ8¬CðåÃ8ˆƒû­<Œƒû<ˆƒùåÃ8`±û<ˆCðåÃ8ÀC>Œ<ˆ<ŒC]Ÿ8ÀÃ@ß8 Ä:, 8¬Ã8Àƒ8¬<ˆ<ä<Œƒù‰Cð „ù­ƒ8ß8ÀÃ@¸ß8ˆC>ŒC>ˆ<`‡8ÀÃ8ÀCäÃ@¸Ÿ8Àƒ8Àƒ8ÀÃ8ˆƒûåÃ8ˆ<ŒCð‰Cð Ä:ÀÃ8˜Ÿ8Àƒ8,à8Àƒ8Àƒ8ÀÃ8äÃ8ÀÃ8 <ŒƒùåÃ8ß8ß8ÀÃ8˜ß@Œ<Œ<ˆƒù Dð‰ƒùåƒ8ÀÃ:0Dðþ\äÜß8ˆCðCð‰C> D>Œƒ8¬CˆƒùåÃ8ß@ÀCˆC>ŒÃ:ß8ß8ÀC>ŒÃ&Žƒ8ÀÃ:ÀÃ8ß8Ÿ8ß@Àƒ8ß@Ÿ8Àƒ8Cˆƒù‰<Œ<Œ<ˆCðCð‰C>ÀÃ8 <Œƒ8˜_>ˆ<äƒ8,à@¬ƒ8¬<Œ<ŒC>Œƒ8ß@ä<ÀE>ˆÃ8ÀÃ8ß8äÃ8Ÿ8ß:lâ8˜ß:ÀÃ8ÀÃ:Àƒ8ÀÃ:ß8ÀC>ˆƒù<äÃ8äƒ8Àƒ8ÀÃ8Àƒ8Àƒ8˜ß8 Dð‰CðCðƒûCð‰ƒù‰<Œƒ8ÀÃ8ˆ<þŒ<Œ<äƒ8ä<ˆ<Œƒ8,à8äÃ8Ÿ8Àƒ8äÃ8ÀC>ˆ< <ˆƒ„æCˆ< <ˆƒù‰Ãæƒ8Ÿ8ÀÃ8ˆ<ˆÃ:0„8˜Ÿ8˜ß:ß@˜Ÿ8¬Ã8ˆC>ŒCð <ˆƒù <0DðåÃ8ˆ<Œƒù‰ƒùåƒ80Dð‰<¬Ãœ™\ß@,à@äƒ8ÀÃ8ˆCð‰<ŒÃ&†€( # À8Ÿ8Àƒ&P¯´)ø øû )ô‚ô¼Ãìƒ:À?ì½|ä¦=hðƒ Aï?ÿ÷¿ÿÿ?@ü8`A‚ëà­Ó$O’âdŽ[—^Jxâà‰ƒ7Žd¾£ðÆGRÜ8Žãò‰7vœØqâòÁ7.ß8Žã8®ÇQ\>Ž2×¥\ÇQ\>qþðÖ‰ƒ7^JxâÆY'%xÄ .ŽÆGxÄÉgÌ8BxÆáH’ÄGœ|RâHxÄGxÖ'ŽÆÉq‚ƒgœuàG&ÌÖ'Ÿ”ÖqHG¬uàqÆGœqÄgŽÆG&xÆGxÖ9 qà‡#q8JI&xÆáHœqÖg’ÄÉG’ÆáHŽÆ!iŽÆÉg’R‡#™à'ŽÄáHxÄ‘ ™8‡$qàIi”8žuÄg±ÆáHœqàgxÖ'xÄÁLŽÄG™à‡£qòKœ|Hg’Ä™qàY'%ÌÄ!)¥þ|dZGŽÄ‘‰¤à8q Gœ±Äá(¥qÄZqòáHŽÄGœqÄGœFù…‘Äáhx41HÞyÿÑ”{ñ½·RJ‘a ~È `v臜öéç(èg,Rèçv¨†Þ‹1ÎXã9îØãAYd÷‡£QäÉžˆXo¦ÉF“úå(PÄG’Æ'ŸqÆK’R‚Gœ|ÆKŽRÊgŽò‡$qHG¬”àqòI)ŸqÄÉgqòG,q8ÊgxòZœuÄG¬qÆ:*q8gxÆÉGœqò‡£|ÆáH±ÄGœqHgþBqàqHg¬|Æá(Ÿ”àgqào8'ŸqÄÊžqRâH±Ä'Ÿqòqàžq8žuàgxÆá(qòB’R‚gœuÄ:Š#q8qàIixŽâhqH' ÇGœuR‚GxÆ!IxÖ:qÖkxÖgŽÄÉG±Ä1qäCëZ>ÄA’q¤ãGÆA’qÀcâ<Æq’ˆƒ$ã‹8Ä2qÀhâ€Ç8à‘qpD$G>€qˆcðÇ:0#xŒcð<ÆAqÀ#â ‰8à1x¤$ 88"þ±ˆ 88"’äCð<Ä|Œ뀇882xŒCãÈÇ8ÄA’”Àã(ðÇ:Äqˆƒ#ùGJò1qÀh<Ä|ˆëÈÇ8ÄA’q,obÉÇ8à!Žˆã€G>Æ”¬@#‰8à1ŽŒCðÈ<ÄÁ‘”ÀCë<ÆuM,âGÄÁ‘qÀCðGÆA’qÀcðGÆA’qˆ#ãàÈ8à‘qÀcðG>ÖqdðIÆ‘xŒƒ$âàÈ88’qÀcðG€&Žˆâ€G>à1x¬#¢X#þq¬#%£ÈC!Q‰þ£8È×½Z‘¯äC ý ö¡ôƒ@°jü£0ÇCóÀ€}L”¦5µéMqšSî”§=õéOTÀ#% Ë:€ælxcÓ@(þÑMD$8B>Žˆã€GJÆqˆe<ÆqŒâX‡8à1xˆâ€GJH"xäcâàÐà1qŒc,ã É8ò1ޱþˆƒ|b‡XÄqÀcù<ÆuŒ#GÄ1qpDãÇ:ÄÁqÀ#%〇8Æ1–” ëGÄ1xˆc 8H"ŽqÀccÇ882Ž|ˆë É:Ä´|ÀhðÇ88"¥ã É8ò!ŽqˆEð<Ö1Ž|Œƒ#ã ‰882ŽˆcðX<Æ‘qŒƒ# 8H"xŒâ€Ç8àQxˆ)ɇXÆ!Ž-ã€GJÆÁqÀ#%G>8" ÁC<Æuˆ#âÈGÄuŒ 882Ž|¤Dð 3IÆÁqpþ„ÎY<ÄqpDã€Ð88" ­ƒ$â€Ç8Ö!xˆcðGÄqÀCIÄAq$%<ÄAqÀcù<Ä!–uÀ#%ë<Æ”ÀC〇88’xˆhëH GÄÁqŒcâ ‰88"xˆcIÉ8ò qDcG>ÄqpDùÇ8à!xˆ 8à‘xˆ〇88’xˆâ€GJÆÁqÀcâ<Ä1ŽuÀƒÎðXGJ8"x¤â<Ä1xˆcâàÈ8à!xŒct†‡8ÆÁqpDbZ>Ö!ŽhbþŒ€XÖ¡ œÖ´ZXÁÏô à¡ýø†ú‘ä£íÇ?úñ~L½ÿØÇαžu­oë]÷ú×Áö¬sD£‡<Ä”-Ùð†7– h‚$šfÆ‘’|ˆƒ#ãàˆ88"x¤âÈ<€Æ‘qp$%GÆ‘qÀcùG>Ä1’äcâ€Ç882xˆã ‰8à1xˆƒ#ù<€–’|¤„#tæH>Æ‘xŒë€Ç88"ޱ¬ƒ#â€8ÆÁ ‰ 8ò1qÀCðGÆ‘qÐâ€Ç8R2xäCù<ÄAqÀcþ$<Æ‘’|Më€Ç8ò!Žäcð<òÆBòAà!ÄÆ!%8Bòa8B8B8BÄbÄòaÄÄA,ÄÆAÖÆÄÆAÄBòhÄ!Ä#Ä!8bÄÆAH‚ÎàaÄaàAàA€ÄÆ!%ÖAàaÖ€ÄR‚#Ä#ÆAÖÖÆÆ$Ä#RRBÖ#ÆÄ#ÆAòaÄ$òa8bHBàaÆAà!Ä#ÄR"Æ#Æ€F8bÄ#Æ#ÆAÖ$þÄA,ÆA8B dÆb8"ÈGàaàAàaà!ÄaàA8bòaàAà!ÆAòAÆ3ÄÄa,Æ#ÆA,R‚$Æ$Äaàa8‚|Æa8b8"%Ä"%8bÄBòaHB8Bà!Æa,R‚$ÄÄ#ÄÆAòa8BàaÄÄaàA8bàaà!%ÆbàAÆ"%8b8BàAÄ"ÆA8bà!ÄòaÆbHb0#%àA8"àAÆ!Ä#ÄA,ÄÄÄA,ÆAàaàAÖÖB@þÄaÖaF¡¾nêò!¦®)©.¢î & "jªòáòaêÄî+Á2,År,ÉR,×#@Aò!ÄÆAÞβa¦þ!4aRB8bÄaàAHb8‚ÎÆÄ#Ä#ÄÆÄ!ÆR‚$Ä$Rbà!%ÆÆÄÆÆ!àAòAÆ!Ä#ÄaÄ#Ä!8hÖ#Ä!8b8BÆbàAHBàAàAHBàAÆÄÄÄaÄÄa8BÆÄ!Hb8BHB8"%ÖAÆ"%8þB€†#ÄÆÆ#RÄaòAHbÄ!àaàAÆÈRhàAà!%ÆÆÆÆaà!%ÆbÄa8B8BHBÆÄ#Æ!àAàhHbò$Ä#Æ!à!%ÆAàaàAàa8Bàaà!%àaòÆa,Æ!àa8Bà!Ä#Æ!Ä‚ÎàAòaÄB8"%òÆÄÄÄ€fyÄaÄa8bàAà!%HBàaÖÄhÖ!%Æ!Æa,Ä€†#ÆA,Ö!%àA8B8BòÄaþòaÄ!8b0#%àA8bÄÆ#Ä!RbÄRhÄ!Ä#Ä#RbÖ#ÆÆÄaÄ$ÖAàaÆ!ÆÆ€†$ÄÆRRbàaHBÆRÄ#Æ!€&Ä!Ä#ÆBÄA,R‚#ÄaàaÄaàa8BàaÖAàA€F,Ä#Æa,ÄÖAÆ#RBRÄA,ÆÄaòaÄbÄ"%0C€Ä#Ä€€&Äa8Bòa8BàAÆÆa,Äh8BÆ#ÄÆ3Ä#ÆAþàA8"%àaÄÄ!Faa8BàaF¡Ê¢ú`ªajµvk¹¶k½ö+ûÁ(áaâ!àaàhÄ!¼¡©²Aþ¡F#ÄAÄ!à!%àAàa8bH"ÆÄa,ÆA8bR3ÄÆ#òA8bàa8"%àa€ÆÄaàaÄòÆ#€Ä!ÆaàÁ(†#ÆÆ#ÆÄA,ÄÄÄ#Ä#ÆòaÆ"àaàAH"ÆÖhàAàaÆbÄ3€3òAàaàAàÎÆBÖþÄÆaàaÆ!%à!ÆAò!%8"Ö#Ä#è ÖÄa,ÆAàaÖòA8bHb8"%8bÄaÆ#Ä!ÄaàAÖaRÄÄaÆ#òÆaÄA,Æ#ÖA,ÄaÆAàa8bÄa€FHbàaàAÖÆa,ÄÆAàAHbHhRÄA,Ä!Æ!%8BÆ"%àA8BHbÄ$Ä#òAHBÖÎàh8"àaÄ!ÆAàaÖ#Ä#Ä#ÆÆ#ÄaÄÈGàaà|ÄBÆ!þÆ!%àaàa8BÄ"ÖÖÆAàAH"ÆRÄ#Ö#€fÄbèLòAàa8‚ÎÆ"Æ!%H"%Æ"%Ö!%8bàAÆ!%àAàaàA8bàaHBà!Æ#òaÄÆ#Ä#ÄòA8b8bàAàAÆÄ#ÆòaÄBÆÄaÄ3ÆRÄaÄÄaèŒ#Ä$ÄÄÄòAHbà!%8BàaàAàaàaÄÄ$ÄÄ$Æ#Ä!ÆA,Æ#RÆÆ$ÆAÄBþ0Ã(C@~ÄÄa4¡¸vêþ¡¾¶©ú©¡ZkûAÖa4!òòAÆAÞ.¼aBÆ#4Æa,Æ!ÄÄaàaàA8BàaàaòÄ3ÄÄa8Bȇ$ÄÄaH"%àAÆ$ÆÄ#ÆR‚#R‚#ÄaÄÁ(Å!è ÄhòAàaàAÆ3ÄÆÄaÖAÆAàA€Ä#ļį!Ä#Ä!ÆÄhòÆÄ€&ÄÆ#€f8B8BHb8þB8bàaàAÆÆ!HbÄÖA,Ö!% $%8bàaàaòR€ÆRèL,Æ!àaòhàhòA8B D¤1Ä#RÄaà!%Æ$Æ!à!%ÆAòÆ!Ä#ÆÄÄ#ÆèlHbò$ÄaàAàaàaòa,ÄÄ#Ä#Äa8bàAHBàAÆ$Ä!8"%à|àa–GòhÖ!%àaÄRbHbÄaÆÄÄa0CòRbòAòaàa8BÆ$RbÆBþÈG8bò$ÄaàaRB,ÄÄR"ÄÄÄ! DÆ3ÄaàaÄ#Æ3Äa0càaÆò#Ä#R‚#RÄaàAàaÖAÈ'8BÆ#Æ#€ÄaòAÆ!Ä$Ä#ÆÄaÖAàaàaà!Äaò$ÄaÄR3Æò$ÆA,Ä$ÆÆaàAÆÄ$Ä#Äa8"%HB8B8Bà!%àAàaàaÄaàAàAÆ$Ä!Æ!ÄaÄ!8B€F,ÄÄÄ!@aaþÄb4á¡t~çy¾ç}þ¡ú!~~艾èþè‘>é•~陾éþé™^8b4¡êAa4F4a@a@A DAÆA4#ÆÆÄaàAà!ÆA8b8bèlÆÆAàaàaàAà!ÆAà!Ä#€ÄòaÄ"à!ÄaàAH"%ÄBHbàAàÁ(áaÆ"Ä#Æ!%à!ÆAàhÄ#Ä#òaà!Æ#Ä!ÆA,R‚$ÄaàA8bRòA€F8bÄ!Æb9ÄaàAàAÆBàþA8bÄ#Äò!%Ö|ÖA,ÆÆ$ÄaàaÆBà!%ò!%Öa8BòAž8x oœ¸uãÄ­—o\>xãàWPÜ8qðÄÁË'.Ÿ¸uðÆ/Ÿ8‚âà‰ƒ'n]Á|ðÆGpœ¸ðÄÁogAqðÆÁ·nœ¸qðòƒ·ž¸uðÆÁ'ž8‚㎃—oÜN‚ã ÂË7Þ8x6Å—oãÀ#N>ãˆÏ8}&<ùÀ#ŽAãÀ3<âÀ3<ãÀ³<ãˆC8ãä3N>ã´“Yâ”Ï8‰CÐ8â4ŽAâÀ#N>ã$AâÀ“8ðŒÏ8â¬8ð¬c<ùˆ8ãˆ8ð¬CP¢ Ã𬳎8ðhòOšj®Éf›n¾ gœrÎIgvÞ‰gžzîÉgŸ|$Ž&Ód37Óxþƒ¨7â¬#Î: ì“&ðä&¦“8ðØÏ8ðˆÏ8ðˆcS>“Ï8ùÀ3N>;4Î:â´<⌓8³Ž8ãÀ3<ŸÁ“8ðˆ3NAâŒ8í´A;Á#<ãÀ#Î8ëÀcS>8‰“<ã$Î8ëˆ3Î:ðˆ3<ëˆ8ã$<âÀ3AâÀ#A6”<âÀ#<6™5<âŒcÐ8ðŒC8ðŒ#N>ðìÏ8ë4N>âä3<âŒiãÀ3<ùìÏ8ðŒC8CÐ8ùŒC™‰3<âŒCÐNãäÏ8ùÀ3<눳ÎNðþˆCMðä8ðØÏ:ðŒÏNðŒCÐ8‰8‰ó<ëäCÐ8ù˜EwA;$<⌳Ž8‰Ï8ð˜fÐN‰3<â$<âŒÏgë˜6N>â4<ëˆCÐNã$Î8‰Ï:â4<ãÀ3<ãä#<âŒc8‰“<ãäCÐ:ã4NAâÀ#Î8ðˆÏ8ðŒÏ8ðä#N>âŒÏ:â˜%<ã$<ã$<⌓Ï88ã´Ó8ùˆ“OAâä3N>;$<â$Î8ùìdqDð<Ö!ŽqÀCð<ÆAqŒ£ ë€Ç8òx¬cþ'ð° <Äad<ÄqÐmâ<Ö!xŒƒ  8òÏDð<ÄQqÀC<ÆAqŒCã‡YÄa‚ˆcë<Æqdù ÈNà!xŒ£ ãGAÄAq¬;‡8à1Ž‚Œ#â°IAÄaq¬C!Å/1€Àc'šð“!‰ÈD*r‘Œld#ÅAM,cËðF6Äá qØ„LâÅ?ö¡ ›ˆCÇ:"Ž|ŒCÉÇ8à‘q¬ƒ ãÈÇ8ıŽqˆc±‰8 "Ž‚ˆcð<ÄAÓÀcâ È8 ²“‚ˆƒ þãGAÄQ7qDðG>ıxŒCvBqÀCÉÇgL“qdù€‡M "ŽuÀcðX<Æ!‚ì¤ ù‡8à1‚˜&ã(È82q¬CðÇ:à!‚äcð<ÆAq¬câXÇ8ÄqÀcfG>Ä›D<ÄaqÀc'ð°‰AÆAqäCðÇgıxŒƒ ã<Äqˆã(ˆ8à1Ž‚äcð‡Avb›DðÈÇ8è¶“|ˆ#ãþ(ˆ8ÖqÀcùAÄQ|ŒCðÈÇ8ÄAud;ÉÇNà!ŽqÀCðȇ8"‚Œ6Ç:Ʊ“|ŒCð0Aò1‚ì$âX<ÆqÀCAÆA|Œƒ ;‡8 "Žuˆ6ÉÇ8à‘›ˆƒ âX<ÆqdâXÝÄqÀcð‡YÆ!‚ˆ£ ã ÈN"xˆâ€G>ÆqŒ;‡8ò!x¬£ ù€Ç8 "ƒŒCðG>ÆAÀCð<Æ|Œ£ ùÇ8à!xØDðÈÇgà!xˆ 8à!xˆãþAvB|Dð<Ä|ì„ âX<Ä‘qÀc;Y‡M 2qÀCã ÈNb“|Œƒnù° <ıxˆƒ â(ˆ8à1Ž‚¬#¢X#`M8rЄ.´¡hEödÅ4¦áe JˆÇ8ÖP¤IëȆ,ÉPŠƒ'Žá8žãxŽ Oç»qàžqàžuÆ'Ÿqžuà iqàAqœÆ'$†òžqB‚G†ÄÇ+xÖGœÄgxÄaHxÆYqà iq'Ÿq>Zqàq*I†ÄáI†ÄgþxòGœÄgqÖ‡!q>qàžqàž’ÄahxÆaÈ+†ÄGœïB‚GxÄY‡¡’BÊgœÖg†Ä§$xÆgxƇ¡|à‡¡qÄQTxÄg†Æ'ŸqÄùHxÄá)¤|JòjxÄgœ|ÆGxJ ž|JbhœÆgžòžqÄgxÆGœ|ÄùhqÊGxÆùnDA†ò‡¡u4éǵ|„x¤Øc—½š@„èçŸ|È `Ÿ~zWG€|Nã=ê‘Ç?\S~yæ›wþy裇'$P¦Yfše²ÉÆq¼)Iœu@ùþK“4gxBRTœqÖGQxÆáixÄùhqPüHxÄ))qŒ#ãP”WÆŒƒ!!aˆ8>2Ž|ˆâøŽ8òqäCã€Ç8>"xˆ£$<ÄŒc 8à7Ž|Œã;!‡8¾3Ž|ˆ#ãøHI౯äã#â@Q>¾³qŒƒ!â`È8òÁqäƒ!ã€Ç:Äñ‘uäâøÈ8à!x¬Cù€GIà!žxeðOį0dù`È8x"ŽïŒã€Ç:2ŽuˆëÈCÄ‘ø‰#ð<Æq|gðÇ8ò1xˆcù`È8þà!xˆ!<ÆÁq|Gã€Ç8"x„DQã€G>à!Žqäƒ!ã€Ç:B’xˆcëÇ8ÖqŒ#ðGIò1†Œ Wà!†ˆëÇGB¢(qäCù‡8à!ŽŒë€Ç8òÁq(Ê+ CÆ‘†ˆƒ!âÈÇ8ÄÁ“qäcðÇ8à±qÀ#$ð<ÄqÀCù`ˆ8à!ŽqðD Ç8à!xˆã#ãÈÇGÄÁqÀCðOÄ1†ˆ#ðCBqðD<Ä1ø‰cðG>>"ŽŒ#âXÇGÄÁQ1¤$ Ç8òþqÀCðCÄ0D ÇGÄñ}dâȇ¢B2Ž|ˆƒ!âÈCÆqäcð<ÆqŒã€Ç8à±xˆ#<Ç8à1xˆãÈ<Æu0DðÇ8Äq„`Ë`²Ôj‚yeèÅìªÑ‹jä¢e 9°uàì€%( #ìãôP@.úÁ "Žˆc A<Æáþ•ŒC‡8à‘q0dÉ:à!Žuxâ€Ç8>’q0$ã0°Ç!ŽuÀc <Æ!x”D뀇8àxŒâ€G>Æ’´ù‡C2q0Dë<Ä1xˆ£Åâ`HHÖqˆ%G>ÆaàuŒC〇8ò!Žu”DðCò!‹c%ŠÄu0DðÇ:2qÀC2ŽuŒCðX<ÆqÀC )‰¨òQxŒâ`ˆ8Öþxˆcâ€GHà!çc!GI <qÀ#$ù‡8 ,xˆE ) <ıxŒ#ãøÈ:Æq0$ã`ˆ8à1xäCã<Æ‘qÀC<Äñ‘uÀC<Æ!† ãÇGÄÁ0Dð(‰8"xˆCÉðð <ıŽq0D ‡8"†ˆc!aHHFÎq0E<Äq0DðG‹Åq¬câCÆ‘q0Dð( Cò1qÀ£$ð‡8”<q8$ðÈÇ8"xŒƒ!ù<Ö¢„dð<Æ!†ˆ£Åã‡Å±ŽqþÀc ‰’ÅÑbqŒƒ!〇8ò!xŒã€Ç:2xŒã#â@íGÖqäcðGHàáxä#$ð<ÆÁ’xù‡82q¬câ€Ç8à!xˆù€Ç8Qü‚( <ÄMüEúÓ§~õÿ"‡^d_ûÛïÅöÑäƒØ;u õ°‡”Ф¢õÀöáØîþ>Tƒ}ð P‚¿°‡hø‡{˜Èv€*؇p%°> ¬@ ¼@ Ì@ Ü@ì@ü@ D­u…iXíY†lØøPø‹QÈq€M€qþx‡q`ˆ`q€‡Èq‡|h±øˆ`ˆq€q€‡( %[‡ †xxx‰q€‡’€‡È‡x x†X‡|€‡q`qøq`ˆqXq€qȇq‡q€‡q€‡qȇq`q`q`qøˆq€‡|†x( x‡|€qÈq€‡ux‡x†Xx‡|†‰qX‡q€‡’øqȇqÈqȇu€‡q€qXq€‡u(‰|€q€qqøq`q€‡`ˆqh±q‡|øˆu`q`ˆu‡xx‡þ|€‡€q€‡øq€‡qȇqȆxx xx‡|0°u‡| †‡›9q€‡q€q`ˆqÈq€É[q`q†xÈqÈq‡|‡‰u‰q€‡qȆ‡qX‡øq( xÈx‰qøGqqøq€‡q`ˆqÈx‰ux††‡†‡|†‡‡q€‡q€‡u00q`q†xX†x†X‡‡‡q€q€q†‡q€‡|x††‡q0°q€qq€q`q€q€þ‡€q†‡|‰q€qøq‡|øq€‡’Ȇ‰‡u‡’€‡qȇ’Xqx‡|x‡X†‡|`qh±qÈx xx†x††‰’€‡|x‡q€‡u€‡€q€‡qxð x†X‡q€q@­Xq‡|¹u`q€¯`q0°ux(‰|€‡qÈxð xx‡…e`„ x Mø mP}пøî˾jȾjø‚|`Pr€~Pøu€vè‡øø‡ÞÁ‚ sø‡~H$þ €Ø€jøzsè‡0†ȇ臿èr(€`h‡؇oHmR'}R(R)R*­R+½R,ÒÈM˜†e°¯Ø qxPø M‡x† x†Xx‡u€‡q€‡øˆq‡‡†Èq`ˆq‰x †qøˆ|qȇq`ˆu‡q†‰uq0°q†‡|xxq€¯€qX¯h1q`q‡|àTxx‰|x x‡X‡q€‡q€‡q`ˆ€N5°q€‡q†þq`ˆ|x‡| xxqXxxð ‡|‡q0°|€‡q‡‡‡|†xxàÔq x‡x‡xX‡›‡qNõ x‡††xx††àTq`q€qq`ˆq€q€‡q†‡|‰uàTx‡xxq€‡q€‡q€qXxx‡ˇq‡u††‡|Øqq€‡q€‡q`ˆ|€‡`ˆ€‡q‡u0°øˆq†‡‡q†qȇq†þ‰|x‡xÈNxxq€‡€‡q`ˆq€qøq`ˆq€‡`ˆ|‡q€‡q`ˆq`q€‡€‡q€‡€‡|€‡q`q¸¹|x‡‡ xxXxqÈeq€‡qȇq€‡|x‡u‡|xȇq€‡u€q€q`ˆq€‡q‡uàT†Øq‡u€‡u€qx‡‘xx††Èq€‡q xȇq00q€qÈx‡‡|xX‡|xX‡Xx‡uàT†x‡q¸9qøNýˆ|‡uqX‡þN][‡d`„h1MÈÒè"˜ÐVȾVè `Ð| ‡Øv€P‡`Pr€¿èu"ø‹}ø‡}ÈtøÈu€}ø‡} ‡ø}p†p€høu%Ða:®c;¾c<Îã)톇Q˜†iX†lX†Ý‡qð†€Pø‡~Є†x †x‡x‡|€‡q€‡qÈq†xXxx†‰€‡q€‡q€qøˆqȆxXq`qx‡|†‡‡‡|€q€‡q‡|`ˆþXqøGq€‡u0°q€Neq€qXq`ˆ`ˆu0°qȆXq€q€q‡‡|‡‰qȆ‡|€‡q€‡u x†xX%x‡q`ˆq€õÍxx x‡q€‡q€‡q€Y‡‡|`q`N† xxxXxx‡xXqøˆuÈ%††xx††x‡|€‡q`q€‡|€‡q€q`ˆqÈxx†x‡uøqȇ€N͆‡|`q€q`ˆq€q‡‡q€þ‡u† ††åq€‡ux† xÈx xýˆqøqÈxXN…qøˆ`ˆq`…‡|€‡q€q€‡u‡[‡€N…‡qxàTqÈxx‡|h1qx†q`q‡|øqàÔx‡|‡‡|‡xxx†xP_xx‡‡qP²Èxxx‡|†‰u‡qX‡xXqx†‡qȇ€‡u‡|x‡|‡|`ˆq€‡q€‡| xxx†xxþ†X†‡‡|‰q0°q`ˆqøˆu‡q‡q`ˆx†‡| x†x‡q€‡q`q`NÍq€…‡qȆ‡q€‡q`qȇ€qXqQøFx†MÀÒ|臂V …Ãh…^ …V …^ !hPr€~Pèv€v؇ð…è‡à ð¨݇o€~°0‡ØcH€~°‡À…}ør€`0‡ØcH€~pRZ¯u[¿u\Ïu]ßu^ïu_oRx‡uÐ@žoX†Ýo`ˆq€Pè‡}ÐþxàTM†x‰+ix xx‡|‰u‡È‡q€q€‡qÈNeq9q€qÈq`ˆq x‡€‡q`ˆq€‡|qXxq`ˆq€‡`qX‡q€‡€N†Xxx x‡†x‰|x‡xq`qXxxÈqøˆq€‡q‡q`qXN‡uq€‡qøˆu€‡qȇq xx xxYþˆ€qȇu‡u`q`q€‡|q`ˆqh±qxX†qÈx†‡|þ‡|†xx‰‡u‡u€‡q€q€qÈq†xxx‰|‡qøN †Ø€q€q€‡q€‡q€q€‡øˆq`ˆq`qÈqXxàTq€q`ˆqȇq€‡|xxxX†X‡xˇqXxȆ‡‡xÈq€N…q€‡q`Íq0°q`q€q€‡qÈqȇ†N…‡qøqÈ€'xâà#˜oêÐC=öd Är 2Ø ƒBþ¡„RX¡….˜ÏI L3M6Ùx“7Þˆ3b>âŒrœ&ðˆ³Î(âÀ#ÐIâŒ85Á#ŽâŒCÐ8ù´Ž8 4N>4<ãÔ$<ãÀS>'‰C@ð4Î:â4N> tÒ8'‰ƒ£8'‰ƒ#<âÀ3<ã4<Õ4N>ãÀ3Ž8‰3AâÀ#<âS>âŒ#ÎIãÀ<⌓<âÔ$N>ðŒ“<âä3A‰³Ž85‰s’8ðˆS“8'‰Ï:âÀ³NL5³Ž8 T“8ù$N>â$<ãÀ#<ãÀ#<âŒÏ8ð¬#<âÀ#NMâÀ#<âþÀ3<â4<ãÀ#<⬣&<ãÀ#<âÀ³N>Å”Ï:ù¨+<â$ÎI Š8ðŒÏ8ðˆ“8‰sÒ:­#Î8ë€J8ðŒ8 D8ðŒÏ:âÀÓ8âœ4<1´<âä#AÏ:ùˆ³<âÀ3<âà(Ð8ðŒ“8ùÀ#Î8ðˆÏ8ðä#<â4<ëœ4<ã$Î8ùŒ8ðDÐ8'Å8ãœ$<âÄ„£8jŽ“<ãÀ#P>Á#Î8'‰8'‰Ï8ùÀ#Ð8'@5‰8'å8ðŒOLë8ðˆs’8ãÀ“<þãä#Î8ðä3<âà8AâäC8‰3NMãˆ3<âÀ#Î8'C@sÒ8' t’@ëˆ8&ó<âÄ´Ž85­3NMãà¸Î8ùŒ8ãà¸ÎIãä#Î8ëˆCÐ8ð¬3ÎIâ¬#Nš,ÃÈðˆ뀇&0tHç½h…tPr ì@?Ô!K4@F¨Ç?ŠAsüc.=’@ Õ8Ž=0aùø‡%‚ÄAÿP‡,¡a"‹hÄ#"QBýX<ÄŠM#ÞȆ8¼!q¬c øG>4qÀC'ÇIqþ¨ið‡8N2q¬#&ë È8"ŽuœdðÆqdâÈÇ8ò!‚ˆc'<ÆuŒCë<Æ!xˆã$ë È8ıx¬ 8j"xˆã$ã8É8ò!xŒCðÇIÄq’AÂcðX<Æ!‚ˆƒ âÈÇ8N’qd8‡8à1Ž“¬ë<Äq¨ið<Æ!xŒGY<Æ‘qŒþCã€Ç8ÄqŒC5ÇIÄ¡.qÔdð‡8N2Ž“¬ù‡š@qÔd<Æqäcù€Ç ’ÀCë È8à!Ž“ˆâX<ÆAq„ 1ÇIò1xŒ#‹AÄqÀCð<ÄqÀcð<Ö!xˆcÁ‘@à!x„ ùˆ‰8à!xäcð<Æ!xŒCð‡8Æ!xŒC'YGMò!xŒ£&ã ˆ@j’qD '‡@à!‚Œ1‡@à!Ž|ŒCM!H>ƱŽqˆcðÈ:ÄA,Šƒ  ‚Ç:à1‚ˆþùÇ8à1Ž|ÀC5<Æ‘˜ÔD ð‡8à1ŽšˆC]ùAÄ|ˆc'<Æ!xŒãÈÇ8à1xŒƒ ãÈIqdQðÇ:à!ŽšˆÇ8j²ŽˆŒÀI2 æC +X1‹[¼âä|CÇÉG?öœ~ô9ýPN>þ‘}$Ç êÇ?úqvàûøÇ>ö‘Ä'C9ÊRžò:ÄQ,cËðF6F$oŒCYÅqFqMˆc‡š9xŒ#!ˆ8Æ‘‚ˆ#âX‡@N²ŽqÀT'G>ÄqÀC ã ˆ8òqqŒ£&þë<uäC'ÇIÆ!xdù È8ò!xãȇºpª|¨I ãX‡8j2‚ˆëÇIqˆcðAÆqˆ#Ç8òAqœD5<Æ‘‚ŒãÀQLN2qÀCð<Ä1‚ˆã$〇8N"|ˆƒ âÈÇ:à1Ž|DðÇ8"xˆcë<Ä1qŒ#ðG>Æ!xˆ£ÕðÇ8à!ŽqäTù€Ç8ò!xŒCã8‰@ÆQdù ˆ8à!xˆc8Ç8ÄAŒãÈAÆ!Ž|ˆcÇ:ÄqqŒCMâþ<qÀC ‡8b’qäƒ ë È8à!ŽqÀCÇIÄuÀC1ÉÇI’xˆ#&ëÈ:à1qÔDGMÄÀC ðHMÖq’qÀc'GMÄ1Žuˆ#5Y‡8ÆAqD<òqäâ<Æqˆ#&ð<Ä1xä$ãGLÖ!ŽqàhùÀÑ8ò!xˆã$â€Ç:ÄqÀcâ8‰8ƱqŒ#8Z<Ä1xˆc8ZGLò1‚ÄùÈ8N2qœÄùðF>ÄqÀCG>à!qÀc<ÆqÀÃ8¬þAˆÃ8ÀÃ8¬ÃIˆÃ8ÀÃ8ä< <ˆ<ˆ<ˆ<ÄIAŒC>ˆÃ:Àƒ8¨É8„8¨Àƒ8¬ƒ8„À(ü#<ŒA¬ƒ&,È .ŽõC>è`>èàqàØ?ìÃ=`Áìâ`?,Ç>,H? G>$;À?ìZábajárazá~a>ÀCÂ2LÃ2xC6Œˆ7Ä„8Œƒ8€ÂqhÂ8ÀÃ8ˆ‚@Àƒ@ÀÃ8ÀÃ8Àƒ8äƒ8äÃ8ˆÃ:œÄ8ÀC> <¬<¬ÃIŒ<ˆC>ŒƒºŒ<€JMˆ<¬Ã8<äÃ8ÀÃ8ˆÃ:Àƒ8œ„8¬<Œþƒ8„8ÀÃ8ä<ŒAˆ<Ä„8Ä8œ„8¬Ã8ˆCMŒƒ8Ä8àÈ8ˆÃIŒAäÃ8Ä8Àƒ@ÀÃ8Ä8Ä8ÔÄ:àÈ8äƒ@ÀÃ:„8äà „8Ä „8Ä„8äƒ@Àƒ8Œƒ@äƒ8Àƒ8Àƒ8œ„8äƒ8œ„8„8Àƒ@DLÔÄ8ˆ<¬CLˆÃ:Œƒ8œ„8ÀÃ8œ„8àˆ8ÀC>Àƒ8¬Ã8ÀÃ8ˆA¬<ˆ<Œ<Œƒ8Œƒ8Àƒ@Àƒ8¬ÃIÄ„8¬<<äÃ8ÀÃ8Ô„8Àƒ8œ„8ÀCLˆ<ˆCMäà ‰Ã8ÀC>ÀÃ8ˆAäƒ@¬Ã8ˆC>þÄ<€J>ŒAŒƒ8Àƒ8œÄ8ÀÃ8ÀC>ˆC«ƒ8Àƒ8äÃ8Àà Ä8äÃ8Àƒ8œÄ8Ä8œ„@ÀC>ˆÃ:ÀÃ8ˆAŒAˆC>ŒAˆ<ˆAŒ<ŒAˆ<ˆ<ŒŽˆƒºŒÃIŒƒ8äÃ8äƒ8ÀÃ8äÃ8ˆÃIˆAÄ„8ÀÃ8„8Àƒ8àˆ8DLˆ<Œ<äÃ8ˆ<ˆ<ˆƒšÄIŒ<ˆ<äƒ8D>ˆ<Œ<Œƒ8ÀCLˆ<Œƒ8¬<ˆAŒŽˆC>AŒAˆAˆÃ:Œƒ8ŒÃ:ÀÃ:D>ˆAÄIŒC>ˆÃ8<ˆAŒÃIÄ„þ8ä<ŒAˆÃ:ˆÃ:ÀÃ8äƒ8Ä8ˆÃ:œD>Œƒ@Àƒ8ÀÀäÃ8ÀÃ:ÀC>ŒC>Œ<<äÃ8ˆÃ:¨‹8Àƒ8Àƒ8Ô„8œÄ8ˆÃ:Àƒ8Ä:Àƒ8Œƒ@äƒ8HÜI„€(,#<ˆ<¬Ã8ŒB?€!öÃqôÃqƒl@5 !Žia?ìƒrôà ªƒ4i˜Šé˜’i™š)ƒ8À(tˆ7,ƒ7dƒ7DLä<€Â?ôÃ(€Ê(àˆ@Àƒ8Œ<¬Aˆ<Œ<Œ<ˆCLˆC>ˆ<Œ<ˆAÄ8ÀÃ:ˆÃ8„8Ä<ˆƒšA¬ƒ8„7Àƒ8Àþƒ8Àƒ8¬ÃIˆAŒC>ÀÃ8„@Œ<ˆCMˆC>ÀÃ8Àƒ8àˆ8„8ÄD>Àƒ8Àƒ@ÀÃ8„8Àà åÃ8ÀÃ:ˆÃ8Àƒ8œ„@Àƒ@¬¨ÀÃ8Àƒ8Àƒ@Àƒ@¬ÃIŒ<Œ<ÄD>ˆ<ˆ<ˆ<ˆC><ˆAˆ<ŒCMˆA¬<ŒCMˆÃ8ÀÃ8„@ÀÃ8¨É8äƒ8DLäA¬ƒ8äAˆAŒÃIˆÃ8ˆAˆƒšŒÃIˆCMˆ<ˆ<ŒC><䃚Œ<Œ<¬C>ÀÃ8ÔÄ:ˆ<ˆÃ8Àƒ8ÀÃ:œÄ8„8Àƒ8ÀÃ8œ„8ŒÃ:D>Àƒ8þ R>ÀÃ8ÀÃ8Ä:ˆ<Œƒš¬ƒ8Àƒ@œ„8Œƒ8äƒ@ÄÄIˆ<ˆÃ8Àƒ8ä„8Œ<ˆ<ˆÃIˆ<Œ<ˆŽÄI¬<ˆCLÀƒ8äƒ@ÀÃ8äƒ8„8Ä8„@Œ<Ä8ÀÃ:œ„@ŒAˆÃIˆ<äÃ8Àƒ8 AˆAˆÃ8Àƒ8Œƒþšˆ<¬Ã8Àƒ8äƒ8ÀÃ8Àƒ8àÈ:Àƒ8Œ<Œƒ8äAˆÃ åCMˆCMŒC>ˆÃ ‰Ã8ˆÃIŒÃ:ˆAŒ<ŒAˆC«ÅÄIŒC>ÀÃ8Ä8Àƒ@Àƒ8Ä8Àƒ8ÀÃ8ÀÃ8„8Œƒ8Àƒ8„€&,# Aˆ<¬Ã(ôÙŽ%Ç>üC? a?@q>@ñsq{ñ„8€Â2Lƒ7,ƒ7ˆÃˆˆÃ ‰(ôÃ?ˆA¬ƒ&Œƒ8Ô„8ÀC>Œ<ÄAäÃ8<äƒ8ÀÃ:ÀÃ8ˆAŒƒ8D>ŒAäCLÀC>ˆAˆAŒ<ŒÃIŒƒ8œ„8„8ÔÄ8ÀþÃ8Ä8ˆŒÃIˆÃIŒ<ˆ<¬Ã8AŒƒ8Œƒ8„8ÀC>ˆCLÀƒ8œ¨„8äƒ8Œƒ8ÀÃ8ÀC>ˆ<ˆÃ„@¨Ë:ÀÃ8Àƒ8Àƒ8Àƒ8ÀÃ:ÀÃ8œÄ8ÀÃ:àˆ8ÔÄ8ˆCMŒ<ˆ<ˆÃ8„8ÀÃ:Àƒ8œ„@Àƒ8ÀÃ8Àƒ8Ä8D> ’8ÀÃ:Œƒ8œ„8ÀÃ8ˆ<ä<ŒA <ÄÄ:ÀÃ8Ä8ˆ<ŒCMˆÃ:œÄ Ä8Àƒ8Àƒ8Àƒ8Ä„8ÀÃ8ÀCLÀƒ8ÀC>Œ<ˆ<ˆÃ8Àƒ@„8D>Œ<Œ<ˆÃI¬AäÃ:þˆÃ:Œƒ8ÀÃ:ÀÃ8ˆA€ <Œ<ŒAˆCMŒ<äCLD>¬<Ä<Œ<ˆAŒÃ:ÀÃ:Àƒ@¬<Œ<ˆCMŒC« <Œƒ8Œ<ˆCM <Œ<ˆCMŒAˆÃIŒ<Œƒ8ÀC>ŒAˆ<ŒAÄ„@ÀC>Àƒ8Ä8Ä8ˆ<¬ÃIˆÃ8„@„8ÀC>Ä„8Àƒ@ÀC>ˆ<Œƒ@¬Ã8ˆ<ˆC«‰C>ŒAŒ<ˆÃ8„8ÀCL„8äÃ8ÀÃ8œ„8¬<Œƒ8œ„8ÀÃ8D>ŒAˆAŒ<ŒAäÃ8œÄ8œÄ8<äƒ8Ä8Ô„@œ„8ÀÃþ8ˆAD>Œ<¬<Œ<Œ<<Œ<ŒAˆ<ˆ<¬CLÀC>Ä:Ä„8ÔÄ8ÀCÁƒ8äƒ8œ„8ÀÃ8ˆÃI<ˆ<Œ<ˆÃ8ˆ<Œ<ÄD>ˆ<ˆÃ8ˆÃ:Œƒ8ÀÃ8äÃ8¨‰8Ä8D>Ä<ä<Œ<¬Cˆ20Àƒ8Àƒ8Œƒ&ôÃ÷Ãoa>hy—{ù—9<ˆC<€Â4dÃ2xC6xC6ˆƒ7€ <€Â?äƒ&Ä:hB>Àƒ8ŒÃIŒ<€J>Œƒ8¬ƒ8œÄ:Ä:ŒC>Àƒ8ŒC>ÀÃ8ÀÃ:ˆÃ åƒ8Ä<ˆAÄD>AŒC>àþÈ8œÄ8Àƒ8äƒ@Œ<ˆAˆ<ˆÃ8œ„8À¨Ä8äÃI<ä<ŒAÄAäÃ8œ„8ÔÄ8ÀÃ:ÀC>Àƒ@ÄDMˆÃ8Àƒ8Œ<ˆÃIˆÃIˆ<Œƒ8Œ<ˆ<<ˆÃIˆÃ:Àƒ8Àƒ8ŒC>ŒAŒƒ8Àƒ8ÀÃ8Àƒ8Àƒ8ÀÃ8ÀÃ8Àƒ@œ„@œ„8Œ<ŒCMŒ<ˆC>ˆ<ÄD>Ä:D>Ä8ä<Œ<ˆ<AŒ<ˆCLäƒ8äƒ@äÀÀƒ8„8Œƒ8ŒAŒ<Œ<ˆC><ˆAˆ<ˆ<¬C>Àƒ@ŒC>ˆÃI¬ƒ8Ä8ÀC>þˆƒšŒ<€ AˆÃ8DL¬ƒ8ÀÃ8ä<Ä8䃚<ŽDLDL¬ƒ8Àƒ8äÃ8äAˆAŒƒ8Àƒ8Ä:ÀÃ:Œ<Œƒ8Àƒ@Àƒ8Œ<ˆŽŒC>Àƒ8ŒÃIŒƒ8ÔÄ8äÃ:Àƒ8Œ<DMˆÃ8äƒ@Ä:ˆÃ8ˆA<ˆC>œÄ8Ä8Àƒ8Àƒ8äAˆ<ŒA„šÄD>ˆCMŒAŒC>œ„8œÄ8Àƒ8Àƒ@ÀÃ8ÀÃ:ˆ<AˆÃID>ˆÃ8ÀÃ:ˆAŒ<ˆAŒC>„@ÀÃ8äÃ8ÀÃ:ˆÃIŒ<ˆ<ˆÃ8ÀÃ:ˆ<Œƒ8äƒþ8Œ<ˆAÄ<ˆ<ˆ<ÄDM„8qëà‰ƒoÜÁuâÆÁ—OàAxá ”xp\>qãÖI—ž¸qÅÁ·n¼uÅ—ž8x⊃'𠸃âÆå·Þ8xùàËOà:qãŽwÐi¾ƒãò‰s:.ß:q!F-cÞºƒë4ý3{mZµkÙ¶uûn\¹séÖµ{o^½wûõ;(²iÙ¼-óæMœSxëàú·O“¸uâ4ƒ'Þ8xâ.Žwž¸u£ÅåwPܺqæoqÅIoþÜAqlj[oœ8‰N—oœ¸qâà‰'qœ¸|ãà9•˜OqwP x‚GÐÄY$gÄÉg‰‚GœƒÄG ‰Ä¹hqàÉgœ|Æžqòžqà'q®’hqZg@Gœƒòç qZ´ƒÄ'x‚Gx‚gƒÄGÐÄYG"qrJœƒÄGxÆ9hqœ‚Gœ áq0qÖ9Hœu$g§ÄMœƒÄgÊÇÁ|Ä9HxÆç*xÆ'xÄ‘hò'xƹHœƒÆç qÄYç |®çþ¢qÄYžqàÉg‰ÆGxĹHœƒògq.ZÇ)à'qàž«´qàGœqZžqÄgqàGxœç qàè"àç"q$G¢qàžqrð qÄYgq$gqàç qàqàÉÇ)xÄÉÇ)x:hœ|Ä9HœƒÄÉgœƒÄ‘Hœƒ‚gœƒ”Hœ‹Ä9HxÄqÖGœƒÆžurqà'ŸqFƒgxÆgƒÆ1ó"qàgxÆGxœg‰Ö'ŸqÊGœqòg§àqàgxÖ'Q~ad€qàYþGx49 î¸åž›îºí¾ï¼õÞ›ï¾ýþðÀ¼/xÄ”i¦ñfoÄ9L§åŸ~FGx4ç gœƒò9hxœ:hqàYGœq'ŸƒÄgx:hqàh‰Æ'ŸƒÄÉ´qàYGœƒ®:HœƒÄ9H qG"qè"qò9hœƒÄMxÆGxÖqž«ÖgxògœuÄqê ò€>HxÄ9hÇAÖ!‘qÀCð‡™ÄqqÀc<Ʊq¬Cð<Ä1Žƒˆcðȇ8ò!ŽqÀcâ8È8ò!qdùþ€‡8ƱxŒâ<ÆqDã8ˆS$"xˆã"ãÍ8à1Žƒ¬cqJ>Äqq\d〇8à‘dhÆšuŒã"âÈ<Æq˜I<Ö!‘uÀÃ)G>Äq¬c<Ä!‘uˆÃ)ù<ÄqqŒ#ð<Äq«äCù8ÈUòudëÇA2‰ŒN‡8œqHD〇8òqŒã"ëȇ8à!xˆ〇@à!xäC"ãÈ<Æ‘xˆ#G>2Јc<Ä1ŽƒŒÇ8."xˆã"âÈþÇAÄqq\D ðphÖ!Ž|Œ〇8."ÑÀc<Ö!qHDAGÆq§iðȇ8.²qäã N Ò8à±qÀc @2xˆã<ÆqqÀc G>Äqqäëp <Ä1Žuˆã 뀇8ÆqqäC Y‡8à!Ž€bŒ€@à!M«YÕêV¹ÚU¯~¬;ˆ8@±Œex#ÞÈÆaru€¢ÿÐÄAÖ¡‰‹ˆã  8®"|ˆ9È8à‘qÀCë€Ç8à!ŽuHDAÊÇ8ÄqÀÃ)â€ÇUÄqˆã8ˆþ8ò!Žƒˆã 〇8$’qÀC ðÇAÄqÀcðG>Æ±Žƒˆâˆ@‚$Ž|ˆ#〇8àáq$ã€Ç82Hd<Æ!ŽƒŒã 9ˆ82qÀcðX‡8.2xŒC Ç8"‹äcðXGò!ŽqHdð<"‘uˆcðÇAÆ!xŒâ€Ç8|ŒCð<ÆÀChÆqˆã<$x〇8ò1xŒCù‡8Æ!|ˆã ãˆ@à!xˆcð<ÄqŒCð‡8à1xˆNH>þœ«ˆC"‘È8Öqäc9È:à1Žƒˆãȇ8à!xŒcÇ:rqÀCð<Ä!qäCë€ÇUò!uŒC"ùÇAÄq|Œã<Ä‘qÀCÇ8à‘qÀcðÇEÄ1xˆcð‡D"qdð‡@Ö1qÀcðpŠ8à±§äcâ€Ç8"ŽƒŒCð<ò!xä âȇ@€6xŒcN‘ˆ@à!‰ˆ4〇8Æqˆã â¸È8²xâ8È8’qˆã 〇8à1qÀC <qäc 8àþ1Ž|8ã<Ä«äC‡8à!x¬‡8$2qHD<ÄÁCðÈ:à1qÀcãG>Äq|ŒC"㸈8౎ƒˆ 82šˆŒh4V¯ìaûØÃžxˆ£P\6–qqæ*ëÅ?ú¡ xD‘ˆ8"Žƒˆ#Y<Æqq8E<Äq¬ã ã€Ç8Äá”uˆâ€Ç8ò!xŒ#âÈ<Ä‘ƒˆâ€Ç8à!ŽqÀcðÇAÄ1x¬CÇAÄ!‘qˆC"〇8Ö!ŽqÀc<ÄqþqÀCãÈ:à±qHdù€‡SÖ!xˆãÈÇEÄ‘qˆcù<Ä1Ž|Œã"ã8ˆ8òqqÀCð‡8à1Ž|ä ÄÄaà!ÆA"ÄaàaÖAàAÆÆÄÁ)àAàA ÖÄA"Äá ÄÖbòA"Äá Ä!$bòÄ4"ÆÆÆ!bàÁAàaÄÄÖAà!bbòaàAB$BàABà!àaòä Ä!bòAÆ!Ä!b.bàAàaBàaþàa4àA$B ÆA"Æ!ÆÄ4B"ÄaB àaÖÆ!B"Æ!ÄaàaÄÄá Æ"àABB Æá ÄÁ)bàABB bòaÄA"Äabàaâ Æ!BÆ!ÄÆÄä ÄÄA"œâ"Æá Æá ÄÆÄá*òAàaÄ!ÆÄá Äá Æ4ÄÄá Äá"Äá ÄaÌdÄ!ÆÖAàAàA àaòá"œ"Äá Æá ÄA"bÄaàAbbòAÆþÄÁ)òá"ÆÁLÄ!àAàABàAÌD$bòÖÄÖÄaÖAàaàAÆÄabàab$BàAB`~ÄÖ4ìÆ’,ËÒ,Ï2¬àa4@Aq¦a²ÁZLÖA@¡òAB4á ÄA"Æá ÄÖÁ)àaòaàaÄòAàAàA ‚dàA òÄ!Æá"ÄA"ÄaàÁ)àÁ)ÄÄ4Äâ"â ÄÆá Äá œBbàA $"ÄaB"ÄÄÆÆÄþÂ)Ä!ÆÄá ÄaœÆÆAàA@CÖA àaÄ!œœBàABBÖ4ÆÄÆA $B òa$"â ÄA"Äá ÄÖÖA"ÄÖÄá ÄœB.â*àÁ)ÌdÄA"ÆAàAàAÖ!HÄá"ÆAÌd$bâ*àÁ)ÄaÄA"Æá Æá ÄÄá ®BÖá"ÖFÃ)ÄaàAÖœÂAàaÄ!Æa$BÖAB Öá"ÄaÄaÄA"ÄÆá"ÆAà!Æá"Äá Äa.bòaþàAàaàAbÄA"œâ Æ4â òAàÁAbàA.bÄaÄá Æá òaàA @CÖÁ)àAÖá Ä!ÇÄA"Æ!ÆÄá B"Æâ òA B àaâ"ÆÁAàaÄaàAàAB àAbBà!ÆA àaÄÄÆAàaÌDÖÁ)BòabòÁ)BÆá"Äá"ÄÆAÖá"Ä!œBÆAòAbàÁ)àÁ)àAb$Â)bÄá ÆbÆÄá Öá ÄaàÁAà!ÆòaþÆÄÄab"Da$B Fa«aÐRgw–g{voàAàaòÁhÇÄ@Á,4á ÄAÆAbÄ!ÆA"ÖAòA ÖAàAàaÖA"ÄA"ÄaB $Â)àaÄÆÄÖabBB$bàA ‚DÆA"Äá Æ!Æá ÆÄ!$B $BÆabà!$B@CBÆ!ÖÄá âAàaÄA"ÄÖAòA .œÆváAàaâ Ä!wáAbàaàaòþA"Äá Äa$bÄÄaÖá Äá ÄabBÖAÆÆA$Bàa$Bòá Ö!"Æá Äa$BàAbàAbâ*òá ÄaBÆÄÁ)òaàA òA òA"ÄÁ)òaàAÆvÇ!Ä!BÆA"Äa4Ä!àabàaòA"Æ!hwÄaBàAàA$bBàaòA"ÄabòAÆâ ÖA ÆÄÖAàaÆdÄá â"ÄÄaàaòaàAàA .Â)þFƒvâ ÆÆÄá"Ä!ÄÁàA$BÆá Äá Ä!$bBÆÄÆA"b$B àAÆÄá"ÄÄA"ÄaÖá Æá"ÖA"®"$bòÄá"ÆA"ÄÆÄÆá ÖA$B$bòbàaÄÆá Æ!ÄÁ)àaàaàAÆAòaBBBàabòÆbàaàAàAàaàaàAàAòaòA$B à¡Æ!ÄaàAbòAbòAàaàAÆá Äv×AÆaÄáþ bàAàA àAÖAB@–`Äá ÖA´jÒ¦;aðFàÔA|nÔAþAÀ§‹Ú¨ùæ Äa–a²a¼!Œvàaàþ!4AàAFá ÆA àA àabàA"ÆaÄá"ÆòÁ)BàaòAàaàAòabÆÄá Äá ÄB"ÆAàaÄòaàaàAàAàA Æ!ÄÖÁ)ÄA"Æá Äá Æ!œÆá Äá ÆA"ÄÄaàabÄá ÖÄÄá ÖþÖá ÆAàaàAòaÄÆAàaÄ!wÅA"ÆÄabàAàÁAàÁ)Äá"òÁ)àaàAàAÖÆá"òAàAhW òœBBàaÄÖÁ)bÄab4BàAh7ÆAhwâ ÆAàA òAœBà!Äaà!ÆòAÆA bb®òAÆA à!Äaàab4œBàA àA.bÆA àÁAÖÆÄaàaàÁ)ÖòaÄvÅá ÄÆÄÖÁ)B àAÖÄá"ÆA"þÄA"ÄA""wÇá ÄÆA$BàAÆA .Â)BòaàAàaàa$bÄâ ÄÆÆÄá ÄA"òaÄá Æ®â òABàÁ)"ÆÄá"òaàAàaÄÄA"ÆÄá ÆAbàAàaàAòAÖÆÄÆá ÆAàAhW BàA.BBàAÖA"òA B àAÖÄ!ÆA òAà!àaB"Æá Æá ÄaÆA "Æ!Äá"ÄÄÆAÖœ"xáAþ B ÖÆÄaàaòahwÄá òah7Æáâ×!DòFcF¡þfpvZáa À€ €èÏ‚`ìò òÆZ` «ôÁ>` f ìòo莚íÍ2àAàÚÒ²ÁZlbÌB$BÆáâ/bàA$bÖAbàaàAœ"ÄA"bbbÄÆ!bòAÖÄá Æ!wÆ!àaàAÆ!Æ!wÅaàaàAòÆá â ÄÄþÄä œ"ÄÁ)$bÆ!B bB àaàaòä Äâ ÄÆÄaàA$ÂAàA Æ!ÄÄA"Æ!ÄA"®"ÄÄá"Ä à‰ƒ'nœÁqðà‰O\Bxó‰{O\¾„ãò‰ƒ7.¼uãàK(ž8Šãà­OxâŠK(Žâ¸„â ®Ï`¾qùÄå—PœÁ„âà‰Ë'Þ8x5áƒgž¸q ÅÁ—Pܸ|Ååƒ'^Í„5á­ƒ7ž¸‡âàÕ|(ž¸qÅÁ—ð`Âq׉3¸î¡¸„âP4N> Aðˆ“Ð8ðÔOMðˆ“8ðŒ“ÏCã¬#Î8 ãׇ댓OMðŒÏ:âŒó!<ãÀ#NB댓ÏCëˆÏ8âÀS<⌳Ž8ðŒÏ8ð¬#Î8ðŒ8ðˆ³Ž8!Œò #ŒOMëŒÒÏ?\véå—^î#)Õþ”iæ™Õ("D?ýìCNûôÃ¥:€i§? ìQ<Öø±€ÚO*ìÏ=¡ÔÀŽl(;ìã褔Vj饘fªé¦^³< L³L6Þ,ãͩވ“Ð: üÓ&ë¬&âÀ3<âÀ3Ž8ãÀSS>â$4NMëÀ#<âÀS<ùˆ3<ãˆãWMðŒ³NBâ¬Ï8⬓Ð8 Õ8ðŒÏ8‰7â$$<âÀ#ŽA~ÕAâÀ#ÎCãÀ#ÎCâP4N>âŒ8ùŒ#Ž_â¬cEâÀ3ÎCâÀ#Î:~ã—8 ÕO>â$4Ž8г<ã<4Ž8ëÀ3<þ5å#Î8ðˆ“Ð8‰ó8ùˆ8 ‰“Aðˆ“Ï8ðŒ8 $Î:ðŒ#Î:ãÔ8ðŒóÐAãˆÏ8~‰Ï8ðŒC‘8ãÀ3<â$$ÎCùŒO>ëÀ#NBëÀ#<5Á³<â$$NBâ$4EãÀ#ÎCã$dPB5­óaMðˆOMðˆÏ:ðˆóPMùˆÏ85}(Î:#<â<$<âÀ“A ÕÏ8$Ž_ãÀ#NBâø%<ãˆO>ã$$N>ã$”Ï85‰“8ðŒóÐ8â$$NBâÀ3N>â$$N>ã$$N>㈳<ãP$NBã<4<ãˆC‘8ðÔ”Pþ>㈓P>ãHˆ8àá xˆ‡8"އŒ5‡8à!xˆã!âHˆ8àQ“„ˆ#!â€GMò!xŒCð<Æ|ˆcð‡_ÆqŒCë0HBÄqÆqˆã!â€GMÆqÀ£&ùEÄauˆcë¨ <ÆšÀCYGBò!xŒ#!5IÈ8à1Ž|ˆã!5<Ä‘qPD〇8Æáqøe EÖqäã!〇8²Ž„ŒCð<ÄqŒ#! AÄ‘q2އˆ#!â<Ä‘oÀ£&Ç8"Ž|Œã!ãxHMü"ŠŒ#!âð‹AV´xŒ#ðGBÄa„Œ#â8С:è#©H@=ì€øc6@…;¸Ä&À èЀúñ{h£÷˜ ò¡Ž Aýpþ¡˜ãKê@?Ø!€|üc0؇?f „|¨UˆfLv``ŠºÔ§Nõª[ýêXϺַ^uxˆ£˜Æ2¦‘ Tª&ð(þÑMÀCðЄ8"އˆ#!ë€Ç8V$އŒCãHˆ8"Ž|Œâð‹8"xDù<ò!Ž„ˆþâ HMÆ‘ƒÀCÇCÄ‘qÀC <Ö1Ž„ä!ãÈ< ƒ$Dð‡8à1Šäc Ç:àaxˆâX‡8ü"Ž|ŒCð<Ä‘šÀc Aà1Žš$$<ÆqŒã!âXÇ8j’ƒPdâxH> ’|Œƒ"âxˆ8ÖqÀc5ñââë`â°ã ëã@ùãðãPùããâù ±ð0ð  ‘âù0QRð` Q!ð=ëãP ‘ãë  1 ! Qþ !!ðPð0ðPð0ð0ðpâââ0ð=ð ~‘ããâã  1â°ââù0 !ðPð0ð=ð ðà ù0ðâ@âàâ5‘â`5â@â5ñâãðÑ“ã ð0ð ðð0ðQð ~!!1 ‘ë ð`â‘âããã5‘ããâãâ0âãã ë0ââù°ðPëââ@!ð0ðþ 1ð  ‘âù0ðð 1âð5â@ââ0ð  QADâëãë0 ±ð0âëQ ±âãðâãàã뢀 Œ0âšÀu]ÒgÐoD™oWà%ä0ûÀðêí°ÿ` Ð\‚@æðûH@°ÕðöæÀ%Æ\²ùðý@ðìõÀ%ßÿ@Pûà%ì ý ðöæ°ý@ ðìõÀ%êPÿ Ðÿ°@™™š¹™þœÙ™[— !šðOÙà Ë€*â0ð ð \¢ 1šðâãðãââ0 !ð ãâ5ù01ð°âðâ0!ëâã‘âã@ââ`ù0ðâð ð0 ! !1ù`ù  Q‘5‘âðâðâãã°ââãââðâ`ð  !ð !! !ù ùðÞâðP !ð ! aù 5‘ãã51ë ãã5ñþãâð!âë ùã!ð ãë0ùpù 1ð ð  1ð0 1ð0ð0ù ð`ë±ââ@ããð5ãðâ0 !±ð  1ð°â0 !ðP !1 1ð`Q!ð ð°ù ð0ð0ðâð!ãÞâ0ð ë@â0ùðâðââ0ë +"+"ë ã°ðP!ãâã@âùàãð!âãëPë ± Q1ð ‘âþâã5ñãâãÑ3ë ù o !ùãâðãâãÑ“ãââ` Qð  Qùã1ëP1ð°ð ð0ð ùëããââ`ðà ð ‘â0â1~!ãâ@5‘âââ0ð ãããã5ëPð°ð  !ë ù5ñââðãââ0â0ù°â£° Œ55¡ ›ÙEÙ ­ o9à%äúÀ°êþ\Òê\²ê7\²ÿ°èð ðêûÀ%äùð«ÐÐ ý Ð%êý `ûà%ì ÿÀ°êP ðê \Òê ÿÀà™ÜÛ½Þû½Y÷£ðOËà ÙPÞ0Þã  À%š5¡ ‘5ãPð ðã !2âã ù0ëã ðããðã  ±ð  ! !ð`âð!ã ð0ð`ðPð0 1ð ãâ°5‘‘ù ëã‘âþâââà5‘ãã  ‘âãàããã  !ð°ð0ð0âãëðâ@ããðâãâãðãã ëâ°ðÑCã ù0âãã ãã ð°ã ë`âð5â°ââ°ð0âããâðâ!ð=ëãââããð!ðP!ù !ð0!!‘â0ð 1 1ðPð ð ù0âàãâââ°ð0 þ!ð01ð0ð ðP ‘ããP !ë0â!ð°ð !ã ð0âãã ð0‘ãðâ0 ‘ââ0ù ð0 1â°ð0âã ð`âð5ëð!ãâ@ã ð0ðâ0~!aÑ“5Aââë0âã ðPðP" !ðâãàâë0â°ã ããðãâã5ë`âÑCââù0ð0ð\3âãã ð=þ 1â@ããð55‘ãPð=!1ââëëãðã±â0ðP!ð ëë! ¿Ààš°™B@ ½Ð ­@ ­@ ½àܤ ^B°ê ÿÀÐ\b À%ü>ÕÐ%ûðýð °ôæÿ` ðö0¸À%ä ÿÀ`ùÐÆÀ\²hð%ê ÿ ðôíð%ì ]¢ðê àÛáþá ò Ë0 Þ° ¨=Þð \¢ âš ù0!ùàë ð0þâðã ð0Qð°â0ðPð0ë=â`ù° ! !ãâãâ5ñââð551ðâ@ãâãã‘ãâã@ââã ãðãâãðpð ðPð ãââãð01ð°ð ð°âã ãðã ðPù0ð ð0ëë ãâ°âã@ã°!ã5ë  1ùPðãâãð°â !~1ð°ð°ãþð ùP! =ùâðãâ0ðPð°â5ââð  1ð0 1ð Qð0ð ð ‘5að QðP~! ! 1 Qã@âãâðâpù=ð  !ãâ0â !!ð0ð ùãðãâ0ùâ QãðPð`ëPð0ð±ãâ0 Qãð0ð ð ù5‘ð`! !ð0ð  1 QðPã° að0 !ãâþ! !ãðâââ0 1ù‘+2ð0ð0 !±ðPð0ð01ùââ0ù0 Q Qð  !oâðP!ãâ‘5að ù ùã5ñ!5‘ãâ`ù0â°"âDâð5ë  1ð0ð  =!!±ââj£ðÆÁƒ'NÓ?† >tØo_?­H]luñb/R2öÛG.À>vþ© ÐcŸ½ JâÁ°¯ƒzìödÛ‡îƒ}ýTôØwOƒ’}ö˜ëÇþêôØgO•}ÿR ؃O^¨êüS'`ß>UÀíCÇéŸ:ÿúåS'`Ÿ=æ ÞÅ›Wï^¾}ýþ8o¾~âÄ­µlÚ´l˲yó6Nܸqâ@ýË ¡8Që Ão¼qðƉCOÂqâòÁgX\jxëàå—ZmxùÄ­[gž8„ù(#‡pyå—,5P¦É&È 3 Ãà…!QÆAhqR!ÙÄgÚ ƒ‡²|Ržqà‡2„ÆImœÔÆgÞÄ¡,qà<ÆÃÀcðX<ÖaqŒC©<Ö!„fùàaR3ŽuÀc©<òqŒãJâ°Ž8à±ÃÀC©¡ mÄq dù€‡82xˆ!㸒8à1Ž| dðB ƒqÀcðBÄ‘qÀcâ LjÄqÀCðG>à1xŒ⸒aà!Ž|ˆ†m “„ˆcðmÆq¤Fþð  BÄqÀcð0Ì:Äq dðÇ8Ä‘„¬CùGjÄqÀC´<Æq¤Fã€Çø"ŽÔˆ#ð< 3ŽÔˆã€Ç: “xŒ#5ã@ˆ8²ŽÔŒ!â€e"Žq¬〇8à!›q DðXG>à!Þˆâ@ˆ8xCxˆëBÄqÀcù <Ä1ÚŒ#©< 3xÄCðG>Ä1„fù°ŽaR3x¬Cã€Ç:h#ŽqÀC〇8Æ‘qðˆ2ð0 <ıŽ+‰ë0 <Ä‘xŒ! 8"ŽqÀ#þð0Ì8à!ÚŒù€Ç8òq¤fðBÆqÀCð< qäcð L>à1xˆc<Ö!ŽuPfâ@È:à!Ž| dð‡8ÆÃÀc©<(CÃÀÃ0ð<(ÊäÃ0〇8ò1„ˆƒ2ù€‡8RcÞˆcG>Ä1Ž|&5 8B0Š_0"ð<ÖM$O +€mle Û~4äèÇ?úq—~üc ÉG?þ1–~þ¡ìãýpH>þ±~äcÿèÇCú1Þ}0$wéCúÁ<ö¶×½ïþý <ÄM cˈ^6¦7Žu¬ øÇ>F!Žq¬Cð‡8"ÞÈã 8Öq¤Æ0ðȇ8à1ÃÀÃ0ð  B qÀcð0Ì:à1„&5ã€Ç8ÄqÀcðBÄqÀCð<Ä‘š|Œã0LjÄqÀCð0 BÄÁ#â€Ç82q¤Fð‡8®$xŒ#ð‡8Æ!„Œ#5âXÇ8Rc„ŒCð<Äq Ä0ë€Ç8ò!Þˆ#5†É‡82xŒcðȇaà1„!âXÇ8ÄäÆ0ðX‡8"x¬ã@þH>Æ!Žqˆ!ë‡8à‘q 8àaxŒCð‡8ò!„Œ†I8"xŒ†G>ƱÊ dð0 B “šqÀÃ0ð<Äq $ãà8à1q „2´É‡8h#Ú¬c†Aˆ8à1„Œcð<Äq Dù  <ÄqäC¼É‡8b˜uŒ!â@È8à!„ˆ#5ã€Ç8Ä‘q dðBÆ!„¬c¼Éeà1Ž|Œ〇8R“à D뀇8h“qÀcð‡8h3Ù $ã Í8à!„ˆ!â@ˆ8ò!Ž|¬Ã:†‡þ8"Ž+QÆ0WÊ’qÐfùÇ:Æ!ŽuŒÃ0©Bdà Ä0©Ç:Äqäƒ2â@H>Æq¤FùGjÖqÀc”<ÄäÆ0´B(“q DðG>Äqäcɇ8à1ÙÀ#âXGjÆA›q dðȇ82xˆc<ÆA›ˆbŒ@j 3 åõù×gH>þÑ‡Ü èG>úq—~àe¼ýxÈxÒôƒ!ýp;àÞ|8$ý€oþõ¿öö!â…iÀé qx0ŒQ`M€q€M‡|@q`„xþxx Œ|x„‡u€‡qÈÞ0Œ|0 „‡|0 Ú‡|€q  Ç|€q@q‡|‡Ô‡Ô0 „‡q€‡uÔ„‡|x„‡Ô‡|Ê@Àq@q@ˆqÈ„‡q€‡q„0Œu0 xÈ„0 x„‡|  Ú0 x0Œq@à Äx‡Ô‡Ôxx‡qÈq‡u@ÀqH q€‡qÈx‡Ô ŒÔÚXx‡|xXq€qHqÈx‡u„ë0 „xxx‡Ô‡qH þq@qH Ê€‡qÈqxX‡Ô‡Ô‡q‡|ëqXq‡Ôx‡|€‡q@qqð(x‡q@Ãx‡|@ˆq@qȇq€q€qÈq€Àq@qÈ„x„xxx‡Ô‡|  xx‡Ô„qÈÀ‡q@q„‡qÈ„0Œu€‡q€q  qÈÇu€Àqx‡ÔÚq Œuq€qx‡|H q‡u‡q‡q€qà q@Ê€‡u€‡qxxx„„„0Œq@þˆq€‡|Hq@q ŒuxÈAˆq€Àq‡|€‡qÈ„x0Œq`q  q€‡u€q€ÊÈx‡qXq@ÃxXxè/x0 xx‡|€q°q@ˆq€‡q@ÙÈq‡+Yxxxàx‡|H Ê€‡qxq€Ù€q  xxX‡q@ˆqH qq€qMXFx„XMp/¼Èr€ ¨†öꇾè‡Pà‹|Ïù¤Ïú´OÁè‡|H PÀû‡lo0 xè¯Q`MHQà„ð(q@ˆq„0 „þ‡|qHqȇqXqXÊÚX‡ÔqXÚxÊHqH qX‡q@q€qXx  „q°q€‡q q0 xqXÞ0 x0Œu€q@q@qHqx‡u  xxx‡+áÚx‡u‡|xëȇqÚÞÙ€‡q x‡Ôx‡u€qX‡+q@qX‡Ôx‡|xxXq@ˆq€qq€‡q  q€qX‡qÚx‡qFx„‡Ôx„  xx‡|XÃXx þxxÚxxx‡qÚȇq€‡|  q@q€oxxÈx‡|Xxx0ŒÔÈÃXxÃ@ˆq0 xxxÚ  x  xxXxxq€q@ˆq€‡q‡u‡|x‡Ô„q€‡q  Ê€‡|„‡u  „x„‡|€‡qH à q€‡u€‡q@ˆqx‡|€qȇq¸’|xx„ȇq€‡|€Ã@ˆq0ŒÔ‡|x‡ÔÔ‡Ô„„x x  Ù@qȇq€qqÈþx  à qX‡q‡u€‡q€q@ˆ|„q€‡qHq‡Ô‡Ô‡|  x„‡ÔȇqXxx‡Ô0 xXÞx‡Ô q q€q€‡q€‡q€Ê€‡qȇq0Œ|„‡u€‡q€q@qà|‡ÔxÈq€q€qȇq xxÈxxX‡d`€q€‡u‡Qè‡ÐÞíåÞî͇ȇ†è‡è‡î5ßóE_‡è‡ôeßöuß÷…ßø•ßù¥ßúu„P˜†eð†i @ȇþÒ„~ÈM€ÃЄu‡|x‡|þ‡|€q€q@qHq€‡qXx‡q€qXq@ˆqÈq@q„x‡|Hqx0 xÈq€q€ÃHqȇqàqÈÀq@ˆq€q„0ŒÔ‡|@qÈxXxx‡ÔÞ‡q q€qà qÈ„Úxxx‡|„„xx„0 x„x„q€Ãxx‡Ô‡|H qÈqx„X„0 xxx‡|@q@ˆq€Ù€‡u‡q@ˆu€q€ÃH Ã@ˆq@q€‡qÈþxx„xÈxxxq€qH q@ˆqH Ù‡|„0Œu‡+1 „‡q°qxÈxxxXqx‡|€‡q@ˆqÈxx‡u„0 Þà‘Ô‡|@ˆq¸q€q@q€qȇqÈÃ@qx‡|€q€‡q€q‡|€‡u€‡u‡q@q€q€‡qÈx‡|x0Œ|Ê€‡q@ˆqÈqH q€qxx‡q€q  q@ÀÇ|€à xXqà Aq€q ŒuÊ  qÈ„x0Œu€þ‡qÈÃà q‡|x„ÚÚ‡|H qxXq u0Œ|  q@ˆuÈxXÃ@ˆq€‡q€ÊÈ„0Œq‡|€q€À‡qxX‡qÈ„„ÊXqXq€q@ˆq  Ê€‡Í5 xÞë‡|0 x‡|0Œu„Xx„x„Èq@q€‡q€‡q€‡q þBq€‡uÞ‡u‡|XqQXF„xX‡Qèûeß|Pïù݇ñjïø–ïù¦ïú¶ß|XxÈPÀlXqÈÃÃ@Pø‡~ЄMþ€‡q0 xXx  x„‡Ô‡|x„ÈqH q€q@ˆqxØ\„ð(q€qHq€‡q€qH q€qXÀq€‡q‡uà Ã@qà ʇu€‡q€q@q q€q@ˆ|qx0 xx‡q@ÊH Ê0 xx0Œ|xq€‡qH q€q€qH ÀqH qÈx„„Þx„xÞ‡Ô0 „qXÊ@ø’|  q@qH q  ÙH qX‡q0Œ|xx  ÃÈÀq@qxþx0 Þ„‡ÔX‡Ô‡qà q@À‡q€q@ˆ|àxq€‡q€‡|x  ÀqX„‡|‡|ÚxqÈq@ˆq€qxq€q@q€‡q  q€‡q€‡u‡uH q€‡|qX‡Ô„ÈI|q€q@q€‡q‡u0 „Xx„xqXx  Úȇq@ˆuȇqH Êà q@qX‡q@ˆ|xX„  x‡|„xxÈq@ˆ|„„  „‡ÔqX„„„‡u0Œ|xx  Úþ„x„ȇqHqx„Xxx„qX‡q q„‡|ʄȇq@qÈx‡u‡u  x„ÈqXx‡Ô  Ã@qÈq¨@qà Ê0 xx„xë„x0 xxx„q@ˆq0 xàx‡q@ˆuHq‡qȇq‡u€‡u€‡…_`€q€qMèûÖ~ùí‡í÷þïÿðw_q ŒQ˜†lð†i @q  qXPø‡~…q€q…qÈ„x‡|„ˆqðŠƒ'n\>qþðÄo¼uðÄÁ[7.ßÀŒðÄÁ—O\>ðÄÁ—o\FqðÄiO\¾ãà‰—QÜ@qðÆÁ'.¼qðÄ —OÇ­—Þ8âà(.ã8xâàË7p‰“Ï8ð4´Žbð¬#< å#<âÀ3ŽHãäÓÐ:‰Oùø´<âÀ#NFëÀÓÐ:ð(&Î@â4”Ï8ðŒ“Ï@ãÀ#Î8ðø$Ò:>Á3N>âÀÓ<>38 Á#Î8ðø48= OðŒ“8ãÀ#N>ð(6Î@âÀ3<ë $Î8ùŒ3PCùˆÏ8ùˆ3PCëÀ#NFãÀ#N>5Ï8ðˆÏ8‰38~Á#N>ù4Ð88þðŒO‰#Ò:ðø4N>ðø”Ï@>å#Î8ðäÓ<ãÀ3N>ðˆ³Ž8ð¬#<â„Ê2Œ Ï:­£É?骻.»íºû.¼ñÊ;/½õÚ{/¾ùê»/¿ýò›8ëh‚Ì2Ëds°7 Ã3ŽO ôó&ã ¤É8ðŒ“OëÀ3<>Á3<âÀ#Î:‰3O­8ë4$Ò8â¬_ð4Oëˆ8ãh4<ãä3< ù4Ob­3ŽO‰Ï:ðŒOCð(–‘8ùŒ“‘85$NFâ¬3P>âÀ3<ãh4Î:>­Ó<ùŒ38ãäã×Uùˆ38ðŒÏþ8#<ùˆ“OðˆOå8å3NFâ¬3Ž8ëÀ3ŽFù4485$<㈓‘8ðˆ£‘8‰³NCùŒ3Oðø5<ãÀãSFãˆÏ8ðøÏ8ðø8ðŒ#Î8âäÓ<>å3Î@ãØ&Î@â¬#Î:å3<âÀ³<ãˆÏ8ðŒ“Ñ:‰8ðˆ3Ð8‰“‘8"‰“Ï8Ä‘‘q dððÉ@Ä1qˆ## O"ެ 82Òq DG>Æá“ˆc ~<Ö!xˆ#ãÐÈ8à!Ž|ˆcð<|qˆc âX‡8ò1xˆC#ãÈÈþ8à!Ž4ãȇ8ÖqqÀ# bàá Ÿ $âÈÈ8à1xŒ##âˆOò!ŽäÃ'ðȇ8’qdD‡8lq¬âÈ8®"ŽˆãG>à!ŽuøëÇ@Ö!ŽuÀcðG>Æ‘‘qÀCY<Æ‘qÀC‡8àÑqÀcG>Ä1†hD1ððI>ÄňdðhˆO2"ŽuddðÇ@ÖqÀcâÈÇ“Ö1u DYÇ:B d0bã€Ç:ÄMø«œæ<':Ó©Îu²“ëÈ(¦!Ï„yãIEºF!xŒc뀇8þÆ1qÀC‡FÖш##â<|qäCðØ]>à±xˆ#âG>Ä!’qÀ# ‡Oà!ŽuˆcùÇ@Ä¡‘qÀÃ'WG>2"ŽŒâG>Äq•qÀcâGFÆqäãÈÈ:üq DðGCò!ŽŒ#â<ÄqÀCãG>ĆÀÃ/<Æ‘ŸÀÃ'<Æ¡q D~È8à±q4d ãÈGFÄqˆ£!ùGFÄqä>‡8à!xˆc ãÇ@ÄqÀcùÇ:ÄqdDùG>|"ŸÀÃ'ñ‰H|þqÀcùÇ82"ŽqÀÃ'ðÇ@Æ1q dGCÖ!ŽŒŒ Oà!xˆC$âÐÈ8ò1ˆ##â€Ç8"xŒCãÈÇ8à!ŽŒøâG>à!ŽqˆDÇU’q D‡8à!Žuˆc ãˆ8౎|ˆc 뀇8à±qÀcððÉ@ÆqÀCG>à!ŽŒëÇ@Æ!Žq dððIF|’ŸŒã€Ç82qÀ£!"G>"ކdD1 8"xŒ##ã€Ç8à1ŽŒ¬ Y‡8à1ŽŒøD$âGFÖ1qÀc ˆO4âþxŒc ëȈ8à1xˆ##â<Ö!xŒCù<ÄqÀCãȈ8Æ‘xø$<Æ‘qŒ#â€Ç8à!ŽŒŒc ãÉ:à!xŒc âÈÇ@Ä¡‘qÀcÇ@Ö‘qÀc"<Ä1ŽŒˆâÁ(~Áˆø>ÑD:ÛÕƒhS»ÚÖ¾6¶³=¯~ôcë€Ç8@1 o,ôô†8Ʊx€"ÿÐ<ıMˆ##ãÈÇ8à!xŒC‡8à!Ž|ˆ##â€Ç8à‘qdDñI>Ä‘†ø뀇8Öq Dð<Æ!Ž|Œc âȈ8Ö!’þqÀÃ'W<|²xŒc ãG>Æq d‡8à!ŽŒäÃ'ðð <Ⓦˆ#뀇b2’q¬##âX<Äq•|Àcð‡8ò1qäãÇ@Äa›qˆ##ãÐÈ8à!Ž|ˆã<Æ|ˆãÇ:"Žˆâ€Ç8àÑŒ`S‡8à!ŽŒc âX<Æ‘‘qÀcðX<Æ1qÀc>q<<Äqˆã*âX<Ä1qÀ#ãˆOà1qÀc<Æ!xäC‡O/ŽqÀc<Æ!Žuˆã€Ç8Òˆãˆ8à!xþø⸊8Ö1ŸÀc‡OàᓌCùÇ@Æ1qøâ‰O Ä8ˆÃ:ÀÃ8øÄUŒCFˆ<ˆ<äƒ8dÄ8ÀCCÀƒ8Àƒ8ÀÃ8Àƒ8Àƒ8ÀC>øD>ˆCFŒƒ8 Ä8h„OäCCä<ŒC>ˆ<ˆÃ@Œƒ8 Ä8Àƒ8äƒ_h„8 Ä8 „OÀÃ8äÃ8ˆ<ˆ<ø<ˆC>ŒÃ@ø<ŒCFø…8ÀC>øÄ:ˆ<Œ<Œƒ8äƒ8ÀÃ8dÄ8ˆƒF¬<Œƒ8 „8 „8 Ä:ø<äÃ8 „8äCCdÄ8øDFˆÃ@ˆÃ:d„_Àƒ8äCC „8¬<ø„FŒþC>Œ<¬<ŒCFŒ<Œƒ“Áƒ_Àƒ8ÀÃ8ø<(Æ@Œƒ8ÀÃ8ˆÃ@ŒCFŒ<ˆÃ@äƒ8ŒÃ@¬Ã@„€(,# €Hh‚µõC>ô€¶ #1£1#»pÛ?¬ƒ8ÀÃ(LÃ2ÐS6xƒ8Œƒ7(Æ(¤‹&ˆÃ@hÂ@ˆ<ˆÃ:ˆÃ@ŒC> „OÀÃ8`<ˆ<ŒÃ@ˆÃ8¬ƒ8ŒCFŒCF¬<Œƒ8äÃ@¬ƒFŒC>Œƒ8h„8ÀÃ:ˆƒFˆÃ@¬CCˆ<øDFˆÃ8Àƒ8Œ<øÄ@¬<ø<ˆ<¬ƒ8h„84D>Àƒ8Àƒ8ø…mäÃ@ˆÃ8ˆ<¬ƒ8ˆ„84Ä@þŒ<ˆƒFˆ<ˆÃîŒÃ@ˆÃ@ˆ<¬ƒOhDCÀƒ8Œ<ŒC>ÀƒOŒC>øÄ8Àƒ8 Ä:ÀÃ8ä<øÄ8¬<ˆC> „8äÃ@ˆCFˆ<ŒC>ˆ<Œƒ8ÀÃ8ˆ<Œ<Œƒ8Àƒ84D>d„8Àƒ8dÄ:Àƒ8Àƒ8ŒC>ø<ŒÃ@ŒÃ@ŒC>؆84DFŒC>Àƒ8h„8ÀÃ: „8Àƒ8Œ<ˆƒFˆC>ÀƒOÀƒbä<ŒÃ:Àƒ8Àƒ8ŒC>dÄ8 „8Œƒ8Àƒ8ŒC>ø<Œ<ŒC>d„“ÁÃ8äƒ8Àƒ8ÀƒOh„tÂÃ8ÀÃ8Àƒ8dÄ8dÄ8äÃ8ÀÃ8äƒþt*<Œ<4D>ˆÃ8äƒFŒ<ŒƒF4D>ÀÃ:ŒC> „8Œƒ8Œ<(<¬CFˆÃ8ÀÃ8ˆ<ˆÃ@ˆÃ8h„8Hç8ÀÃ:ŒCFøÄ@ŒC>Œ<øÄ@¬ƒ8äƒ7Àƒ8 Ä8ÀCCä<Œ<ˆÃ@¬ƒOäÃ8H§OÀƒ8d„8¬ƒ8Àƒ8 „8äƒ8Œ<¬ƒ8Àƒ8d„8 Ä8äƒ8ä<4Ä@ˆ<ø<ˆ<¬<øDFˆÃ@ŒÃ@øD>ÀCCh„8ŒƒF¬ƒ8ÀÃ8ÀÃ8 Ä8ˆÃ8äCFø„t6<ˆC>ˆÃ@xC>øÄ@¬CFˆ<Œ<ˆÃ8ˆ<ˆ<ˆÃ8ˆÃ8äþƒ8Lç:äƒ8 „O „8h„8ä<øDFˆCCÀƒOÀƒ84<ø<ˆÃ:ˆChÂ20ÂÀƒ8ÀÃ:Àƒ&¤ ­Öª­Þj­²‚®²Â­ö®þ*°«°+±«±+²&«².+³6ë­æ<ˆÃ:h‚<Œ7dƒ7ˆƒ7 Ä:À(üC?h<ø„&ÀÃ:ˆ<¬<ˆ<ˆŒÃ: „OÀƒ8ÀC>Œ<äÃ8ˆ<ø<ŒÃ:ÀÃ:ÀÃ8ÀÃ8ÀÃ8ˆÃ8øÄ:ˆÃ@ˆÃ8ˆÃ@ŒÃ@ˆ<ŒÃ@Œ<ˆC>ÀÃ8 „8d„OÀƒOh„OHç8Àƒ8Àƒ8Œ<äƒ8þÀÃ8dD>ˆÃ@Œƒ8ÀÃ8øÄ:ÀÃ8ÀC>ÀÃ8 „8 Ä8 „8 Ä8øÄ@Œƒ8 „8ÀC>ˆC>¬ƒb Ä8L'<ˆÃ8äƒ8 „8Àƒ8¬CFˆÃ: „O Ä8¬<ˆÃ:dD>ŒÃ@4„8ÀCCˆƒtúÄ:ÀƒO „8 „OäÃ8 „8äƒ_ Ä8 „8¬ƒ8h„8d„OÀƒ8äƒ8Œƒ8ÀCCÀÃ8ˆCCÀC>ˆ<ˆ<ˆ<Œ<ŒƒbdÄ8 „8Àƒ8 „8ŒCFŒƒ×®Ã8ˆÃ: „8Àƒ8¬<Œ<ˆ<ˆ<ä<ŒÃ@¬CFˆ<ˆÃ:4ÄtŠÃ@ŒƒtŠ<Œ<ˆþ<Œƒ8ÀƒOäÃ8 Ä8Àƒ8 Ä8ˆÃ:(Æ:ÀÃ8ˆƒ×ƒ8äÃ8Àƒ8¬<Œ<ŒC>8Ù@ˆC>ø…8¬<Œ<ä<ˆƒtŽ<ˆÃ8Àƒ8Àƒ8Àƒ8 „8ÀC>Œƒ8Àƒ8 Ä8ˆÃ8ÀÃ:ÀÃ8 DCh„8¬ƒ8hÄ8 Ä8ÀÃ8 Ä8äÃ8äƒ8¬Ã8øÄ@ŒÃ:d„8ÀÃ8ˆ<ˆƒtŽƒ8L§8ÀÃ:Àƒ8d„8 Ä8ˆÃ@øÄ@4„8Ìï@¬CFˆ<ˆÃ@ˆC>Œƒ8 DCˆC>Œ<ˆÃ@äƒ8Œ<ˆÃ:ÀƒO „Oä<ˆÃ:ÀÃ8h„84„8äƒOd„8 Ä:dþÄ8ÀÃ8dÄ8ø<ä<ˆ<ˆ<ä<ˆÃ:Àƒ8dÄ8øÄ:ÀÃ8Ìï8ÀCChÄ8ˆ<äƒOh„8Ìï:„€( #@FøÄ(8++Ô*+Øjàª:À?¨ƒ8+1³132'³2kFŒ2dCÂd=‰CÂÀÃ:€BºhBFh‚8 Ä8Hç8äCF4D>ø„tŽÃ:ˆÃ8¬ƒ8hÄ8äƒb¬ƒ8ŒC>ø<äƒFŒ<ŒC>ÀÃ8Àƒ8Àƒ8 „8Àƒ8äƒ8ÀÃ8Àƒ8ŒCFˆÃüŽƒ8h„8Œ<ˆƒFˆCC „8Àƒ84<ˆ<ˆ<ˆC>d„O4<ˆÃ8 „8ŒC>þˆÃ@øD>d„OÀƒ8 DCÀÃ:ˆƒFø<ˆÃ8ÀÃ8Àƒ8Àƒ8Œ<ˆÃ@ˆ<øÅ@ŒƒtŠC>ŒCFˆCC¬ƒO „8ÀÃ8äƒ8 „OŒÃüŠÃ@ˆÃ@Œ<ˆÃ8ÀÃ:ˆC>ˆÃ8Àƒ8Àƒ8d„8Œƒ8 DCd„8ÀCCäÃ@ˆC>ø<äƒ84<ˆ<ŒÃ@ˆÃ8äƒtúÄ8h„8Œ<äCCÀƒOŒ<ˆÃ8 Ä8äÃ@ŒƒFŒ<ø<ˆ<4<ˆ<ˆ<Œ<ˆƒFˆC>ˆÃ8d„8ÀÃ8Àƒ8Àƒ8 „8ÀƒOŒ<ŒC>hÄ:ˆ<(<ˆÃ8äƒtŽ<ˆ<Œþ<Œ<Œ<ø<4Ä@Œ<(Æ:h„8Œ<¬ƒOä<¬<ˆCC „8ŒÃ@øÄ8ÀC>x­8 Ä:ˆ<ŒÃ@ø<äƒOŒC>ˆÃ8äƒ8ÀÃ8Àƒ8ÀÃ:Àƒ8 „OŒ<øD>Œ<ˆÃ8ˆÃ8ÀÃ8äCFø<ŒCFø<ŒCFˆ<ˆC>ÀÃ8ÀÃ8ÀÃ8 Ä8d„OdÄ8äÃ@ˆÃ@Œ<ˆC>Àƒ8Œ<Œ<Œ<ˆÃ8Àƒ8ŒCFˆÃ@Œ<¬ƒ8ÀÃ8 „8ÀÃ:ø<ø<ˆÃ8Àƒ8h„8 Ä8 Ä:(<Œ<ŒC>ˆ<¬CF4Ä@ˆÃ8ÀÃ8ˆC>ø„_äCF4þDF4DFŒÃ@4D>h„8ÀÃ8 „8Œ<ŒC>ˆ<ˆCCÀÃ8ä<ŒÃ:h„8 „8ÀÃ8Àƒ8Àƒ8¬ƒ8„À(ü#À8ˆÃ@¬ƒ&,ë Ü:9ƒ:C1À üC¤KÔ*9À>Ø#ô;@±:C @T€"ì=pÀ>+=pÀ>,3·w»·û²ÂÃ8À(,Ã4,ƒ7Œ8xƒbŒƒ8€BºhÂ8Àƒ8ˆ‚8ÀƒbÀƒ8Œƒ8¬ƒ_øÄ: DCÀƒ8ŒC>Œ<äÃ8 „8ÀÃ8ˆÃ:H§8¬CFŒ<Œƒ8ÀƒOÀCCø<ˆÃ@ˆCFŒ<ŒC>Œ<äÃ8Àƒ8þ Ä8ÀÃ8ÀÃ8ÀÃ8ä<Œ<4<ø<ˆ<ˆÃ@äƒ8ÀÃ8d„8äÃ8Àƒ8d„_dD>ˆÃ@ˆ<Œ<ˆÃ@ŒCFŒ<Œƒt6„8x­8 „8Àƒ8ÀƒOdD>ŒÃ@ŒÃ@ˆC>ˆ<ŒC>4<ŒÃ@ŒƒOÀƒ8ÀC>ˆƒFˆÃ@ˆÃ@ŒCFäÃ8ÀÃ8øÄ@ŒÃ@ŒÃ@Œ<ˆ<äÃ8À6Áƒ8 „8 „8 „8 Ä8äƒOdÄ8 „_ÀÃ8dÄ8Àƒ8äÃ8 „8ÀÃ8Àƒ8ÀÃ8ÀÃ8Àƒ8 „8ÀÃ8ÀÃ8ÀC>4„8äÃ8 D>Œ<äCCˆÃ:ŒƒOÀÃ8ÀÃ8äƒþ8H§8äÃ8d„Od„8Œƒ8ÀÃ8Àƒ8ÀÃ8ˆÃ@ø„FˆƒFäÃ8ˆˆÃ@ø@ä'N<ƒðÄÁ—OÜAxãŠ3¸ÞºqãÄÁË·Þ8xæ»xQ¼qðÆ·Î`¾qâŽ3(n‚âà}=(Þ8qð¼‰38Ž ¼u¿ŠË7^>qðògpA‡âà‰shP\¾uóƒ'Π8ƒã Žwð+¼uðÆO\¾qâàÌ7nÁ|âò]þ¼/ß8xãÄå»(.ß8qùă7Þ8xâòï«Aqðò}]7NœÁqâ Ž3(.ß8xㆵŒ€|ðÖ­7ªß?óÿ¤W¯þüù2èÅ—ÿ_ó=Îç#`_?ÿêȧ½Ïã=ê‘Ç?þQG!4¯uˆÂ~,ÌPà 9ìÐÃA QDóGx@™fo–ñÆEq¼qàåŸ|F!Mž|à'qò1h‹òÇ qÖgœuÄÇ qò1hƒÄYžuàqàq ÊGœ|ºžqÄgxÄYGœqàgxÆ'Ÿqòþ'‚ÆGxÄÉg°qà¹hx‚Gœq ç qàY'‚.Zq "È qàžqà‚ÆgxÄÉ‚ÆGµÁàç ‹Ö‚àžuà!hœ|ć ‡ÄgœuàgxÄqhqòç¢uÊÇ qàžqò¹(q Z‡ qÇ qàÇ!‚Ö1hxÆÉ‡ xògƒ.ÊgƒÄÇ qò9HxrHœ|g‚ žqàç"qò1HƒÄɇ qç"xÖgqgqàÉÇ q "È qgqàž‹àžqò‡ qàgƒÄþ9HxÄGœqhÇ!‚à!h‡ÆÉGœqžuà'q Z‡ |ç¢uÄGœ|à!qÆGx.ZGœƒÆgƒÆ1hxÄžqà!È qÆgxÆgƒ.2Hƒ¾Ç qç qò1HœqàÉÇ uh…Gœq 'xÆÉÇ qò9è¢ÁÖç"xÆYGx.ÊÇ qàÇ q "hxÆgq.ZGƒÆ1è¢|Ê'uq "‚ Ç¡q R žuʇ u¾‚gœ|Ägqàç ¯Æ1HœÁÆ9hƒÆ‘x$ð<ÄqÀc 8à!Žþuˆ#šX#0xd£èÇ€0 D¨ ì0á Møaô ¨ØÇyÈ€}¨Cÿ`‡,Aaÿ ‡rÑ~hà ê@=üÓ}ì£@Žñ{´`(9þ¡üAh@$ЀcüÃH€Œ°¨CÀú1"9ΑŽu´ã!ÔxÀC X†Š–!ycÞ€Ç:à óhbâЄ8ö8Ž|¨F{\<ÆqäcðÇ×|¬ùÇ8ıŽqãØ#<Æ‚ÀC¯„ÇEà1xŒCðG>Æ‘qÀC¶Çó1Ž|þ\Dã€Ç8ö(Ž=ŠÙ£8à!xˆ#ã°%<Äqìqð<ıŽ=æCëØ£8¾)Ž=dâØ#Aò1x¬ã• 8ò!xŒCð‡-Ç!Ž|Œã›¯Ç×1xˆã•â€Ç8ö(Žuì1ãØ#Aà1q¬âÈÇ8öxxdâXAÖ‹¼2Ù£8àAxˆãøæ8¾òJq¬‡8ò1qÀcðȇ8ö¨qÀC¯‡8ö8Ž=æc¯ÇűGqìq±å8ö(x\ù<Ö|Àc¯ÌÄñÊ‹$〇8à1Ž|ˆã•yå8à!xˆ 8à1Ž|¬ãØã8^™qŒc㈠<Äoì1âP <ÆqˆÃ–â€Ç8ıŽqˆcÇ:à1xˆ#ãØã8à1xäCðÇ+Å‘qÀcɇ8^9Ž=æcâ€Ç8à‘q¼r‡8ò1ŽuÀC5ð‡-ÅñJq¼r{<Æ‚äCþùÇ^m¹ŽqÀc{G>ÆAWæã"{ÇÇ!x\ä•ãÈÇ8^y‘WãØë:B d0ùÇס‰~瀅æÀiÌCì Ç3Ô¡Ž~üc‰çÉ9°v ê@êa (¡ÿHEê ìà °*Üqu`‰æ±G4þq˜ ìü£,ñû êá(aìüc!]ïš×½öõ¯laØð<@1ldcÞȆ7¾2‚ŒÂ<š€‡8à¡ xˆâG>Ä‘xŒãG>Äuˆc{<Ʊq\þù€Ç8ò±G‚Àƒ ùÇ^Ç‘uìqù€Ç8à±qŒ 8ÆaKoÀCãx¥8ÆqìQ{G>Äq‘WŽëÇ8ö(ŽWŠâȇ8à!Ž=^d{ÇÅ1xâx¥8ºqŒãx¥8à±xŒ#ðG>ÄqÀCðX‡8à!ŽqÀCðø <Æ‘q¼r 8ò1ŽW^dâÇ+Ç‘x¬cðX‡8ƱGqØRßG>ÄÕìQã°¥8àñx¨&¯<ÆñMqÀcëØ£8.qÀCùGCÅqìñ"ëÇ 2qØRðþX‡8ò1xˆëxå8ò!Ž‹ìQ5ð‡jÆqäC{<Æqˆâ<.qŒcë<ıGà¿’ ðøÊEö*xˆɇ8ö(Ž=ŠcâÈ<ÆñJ‚ìQù€Ç:Æ‘‚Œcâ<ÆaÄá•Ö!Æá•ÆÆÆÄaàAòá•böH¾‰ öH^IöHÆ òÆÖaòAàAlIöˆ ÆaàaòAÆ!Æ!àá"^IòÆ!öHòÖá+àaÄÄá"^Iàaàaàaòaþ.."ÆÖAà .ÄÄ!öhàaÖaöHò TcÄa¾Iöˆ òAöhàaÄÆÆÆÆa¾ÄaàAÖA¾iòAàaòá"òÄ!bàAÆaÄaöHÆAlIàAÆAàAÖAB`–`Ö!5!BàÀBúá ¤aæà ¾`®à ²à ®à ¨q̃ ÔAþA úá¾þÁ?°`Àþ¡Ò ( 6 þAÀ<öáúÁ<ú àÔêÁ?ÔAÎÃþÀþ¡È!þA úØ(²"-ò"12##Ä?öH@¦a²ÁÄÁEÆAöh@Á<4ÖA4ÄÄ!×a"ÆaàaÖòa¾"ÆòAàa'Åa¾iàaöhàaÄaÄabàA^‰ ^é+à ^‰ ö(¾â•ÆAöHòaÄÄá•òaÄaÆAàAàaàaöhÄ!Æâ•Äá›Äá•ÆÆÆá•òaÄÆÁ–ÆAÖaÄaàaàAJöhlIÖÄaàA^iþ"ÆÆAÖaàA^)ÆAàAàaÄaÄÆÄaà òaàaà!ÆA€LòAÖaÆAàAà ^iòAàAà!àaàaàaàaàaàaÄá•ÆAòA*àabÖ àaÄÄÄaàAöˆ òAö(Ä!ÆaÆÆa¾"ÆaÄÄá›Æá›ÆAòAòa€,ÄÆÆA^IàAòAöh'÷hàAÆÖaÄaÆá•Æv’ ÖaòaÄò àaþöhbÄaÄÁ–Öa'×aÖaÄÄÄÆÆ¡¡ÄaöHli'_IàaàaàAöJö(ÆÄaàAÖAvRòAÆavRÖa'áaÆAöJàAà!ÖÄaÖ Öa'ó"ÆAàal)Äá•ÆaàaòaàAòaÄÆaòAòaöHàaàaÄaÄaÖÆÖÆÄ!âBòalIà!ÆÖaÆÆ ÖbÆÆaòAöHàAàAà!þàAàaÄÄòÆÁ–B@~`'áAàA,,d‰š@@ö ªadI–dÀ<ò`ØAþAà<È!Ì£Ô!ˆÀ<öáö!ÐáàØAΣœá @þÀ?þÀ<òA $ kàØAüC#Á6lÅvl/Ò?àAà¦Á¦Á–Á²A¼a'Ça@Á<4Ä4Á–ÖÆ!öh^IàaÖA^iÄa'×Ö!àaÆÆÄaÄaÄ!bÄá•òaÆá•ÄÁ–ÆÁ–ÄaÄþÄaÄaÖÁ–ÆAòÖaöHàAà ÆaÄaâ›Æ!ÆÄÖA^I^IÆÆavÄaò ÆAÆaÄBÆ òÆ!àaàA^‰ ÆAöHÆ!ÆaÄÖaà!ÄaÆa¯ÖA^iòÆ!Äèvòá•Ä!öHàaòAàa^iÄÄaÖAàaàaàaöHàaàaÄaòÄÁ–vÄaàAàaÖAòaòaàaòa|ÅaÆÄÖÆb'×aòaþÆa¯Æ!àAàal)ÄaÖÄa'áaâ•¢¡ÄÁ–ÄÄaàAàaàaÆÄÆÖÄ!vÒ–Æv2ÄbÄÆ!àa|÷ˆ àAòaÖa'×AöhöhòaÄÈÄá•â›Ä!ÆaÄá•Æá•Æ!bÄÆaÆÆaÄaöHöHàAòAàaöhàa'áAàaàaÄaÆá›ÄÆÄaàaòÆ!ÄÆ!^iàAÆá›ÖAÆÆá•bÆ!ÄaþÄaÖAà àAÆ‚ÖAàabbàA^‰n÷HÆaÄ!ÆAàaàaàAàa|ÇÖá›Ö à!÷hÄaöhò öhöJöˆn÷H^IÖÆaÆ!liàAàAÖAB–€ à 4ØúA¤á„ zds¡FVÚƒ ÔAú öá|!úáøA|`ªa@öá`ØAÌ#ìapaþàÔA΃à<ìÚá<òáÔAȶ³=û³AÛ<òÖA@aPþÛ²ÁEŒÄüCöH4aàaÖÄavbÄ!Æá•Æaà!‚‘ ÖaÆ7ÄaÆòÆ¡¡ÄÆÆ àAöhàaÄaÆá›ÆÁ–òaöhÄ!àa'áAàaJöjàabÆÄá•ÄaöHàAàaòAöHÖaòÄ¡¡òavRÖaÄá•ÆAö(àaöHàAàa^IàaàaàAàAàaÄa^IöHÖaÄaöHò Öaàaàn÷HÖÆ!ÄaàaþàAà!Æa"ÆaÆÄÄaöhÄaÄ!ÆÁ–Æ!ÆÆAÆa|×á›â•ÆbòAàAàaàAöhàAöHÖaöHà vvÆÄ!ÆÁ–ÄÁ–ÆvRöhÄá•ÆÄaÄòA^iÖaÆwÄÆaÆá•Ä!ÄaàaòaòAÖÆá›Ä!Æá›Äá•lrÄ!ÆaÄaàaÄaÄÄÆÆÄaàAàA^ià àaâ•ÄÄvRÖá•ÆÆÄþÄÆá•ÄaÄá•ÆÄ!Æ"ÄaÆAàAàAÖ!vÆ!öHöHàAÖaÄaÆAÖnóAàAàaàa'×òaÄa¯Äali¾Ià!Æ!ÅaÄá•Öá•ÖaÆAòAòa'á!ÆaÆá•ÄaÄÄaÄá•òaÖá•ÆÆá•ÆÆÆòa|×Á–ÄÆÄaÄaÄ!ÄaÄaÆá•ÆaàaÄavÆA¾)C@à›4"u@t ,ÿò/_þ!Ì#ÈöàÔþ!z`ìÁ”À<ðþ¡ Øa®aÐá ì!ÚÁ<èaÌáøáàØAòÁ<ì!ÌÁ<øÁzþá8áØAò!´µû¹_ØàaàaTÄ–ÁÄaÆÄ@Á?FÄ4 ò àaÄ!ÄaÄaàaB¼qðÄÁ·N¼…ãò-„7n¡8qãÆÁ[7^ExâÖÁ7.ßBq 'ŽËOqðÄÁ—ÞÄq Ç-—ÞºŠðÖ-—oâBqùÆ-OÜ8xâÆå·p8©ëN¬˜OœÔŠùàU\(ž¸qðÄ­'õá:xã‚‹«˜OÜÃqëà‰[(n¡8xá{(nÜBq ó­ƒ'.ßÄ…ëÄÁOð¬óÐ8ùL´8 ‰Ï8ðL <âŒ#ŽTþâä³Ð8ðL 8 ‰ÏDëÀ#ÎBã,4Î:ëL´Ð8ðˆ3N>ðˆóPEâä3Ñ8ðˆ#•8ðŒ“<댓ÏBâä#Î8(N>âŒ8ðˆ3Ž8ðŒ8ð¬8ãÀ3<ãHµŽ8ã,$ÎBâŒ8ðX¹Î8ðˆÏ8ðŒ“8ã¬#NEðŒ 8ðˆóÐ8ð¬#ŽXðˆ3N>ãÀ#N>âä3Ñ8ëH5<ã,D <-$<ãÀ#Î8ð¬8ðT”ðŒ“8ðˆ8ãˆ8ðˆÂ(¿02<ã,$Ž&ÿÌKo½öÚÛ +BJ+ü¶BJ/¤ p/9ôÃŽý¨#€þ% `D=ÿC€9ÿìãBô$AÁØͼQ pÀ1ÿXâ@!Ä!@?êPo pÌ?ö ÑÀ¼Ñ:Ü tÐBMtÑFtÒJ/­´8ð¬Ê4RgãM6âxãÍ8ðŒ#(ýü£ÉBâ€Ï: Y •‰Ï: ‰#<âÀ³<âÀ³Ž8ëÀ3<ëÀ3ÎBùŒÜðˆ“Ï8 ‰8ëÀ3ÎBã,”OEðˆÜâÀ#ã,$ÎBâ,$ÎB‰³Î8ðˆóþÐ8â<$<ãˆÓ#ÜùŒÏ8 ‰3ÎCùˆÜðˆ³Î8ðˆ“Ï8ëÀ³Ž8ë<$<ãÀ qGë<ÆñqŒãJ>ıއŒp[Ç8Ä‘ŠÀCðÈÇ8౎…ˆâxÈ8à!xÀí!ùÇ:2xˆã!ãXˆ8"އÀ â€G>ÄñŠˆc!ãxÈ8Ö¸-dðÈÇ8"xˆå!p{È8àQ‘|Œ 8à‘Š,d=‚<Äñqnë€<àqÀ#â€Ç8R‘…ˆ#Y<ÄñqÀcâ€GEıޅˆã!ãXˆ8"xŒnþÉ<Æ!xˆë¨Ü2xŒC‡TÖ!Ž…ŒCðG>Æ!•qäcðÇ:2xˆc!ãXÈ:2¸=D먈8Ö1qÀcðX<ÆœqÀCëxH>à1¸-DðXG>ÄñqÀcðÇ:à‘q,d ÇC4—qH¥"ðÇBò·|ÀmðGpÆqÀcðȇ8ò!xˆcâXÈ8à1Ž…äc <4'ŽÁcðÇCò1¸ÁCùÇ:¤"ŽuÀCÉ<Æ!•ˆbŒ<ÄqÀCL›?VÔ  hßÀ¼òÑ}Ыý þW?ì•äƒ^û¨W?ö±yõãýÈÇ?öq¯~ìc^û W?浞ªu­lm«[ßZ´~ÀCðÅ4²±Œi`Íšƒ‡8àŠôCãXˆ&à1xŒâ€Ç:àQ‘‡Œâ ÜÖ±uÀcð<ÄqŒ뀇8"x¬CãXÈ:à1xˆcðÇ8à1Ž|ˆC£<ÄqÀnðXÇ8Äq,DãÈܤ"ŽàŒc!â ÜÆ¸-nðÇ8à·…ˆã€Ç:à6Ž…ˆpƒ‡8à!Ž|ÀcùÇCÆ‘xÀm!p[È8à!ŽqHe뀇þ8Æ!±HE <Æ‘¸­ë<ÄqÀCðÇCÖ±qŒ 8à!ŽqÀcðÇB*"Ž|ˆã!â€Ç8ò!Ž…Œcâ<Ö!Žu,¤"ð€<ıqˆ£" ‡8ò!xŒCð€ÛBÄñq2އŒCùÇBÄñqäc!âË8þòq,dâȇTÄ‘qä 8"ŽqHeù€‡8¬$xŒp[‡8Rxˆc!âXÈ8à·qäc! 8"Ž|ÀcùXÈ8à!ŽqäCãxˆ8"xˆC,ùxˆ8à!ŽŠÄqˆ#ãxÈ8²xÀmpƒ‡8à!xÀmâèÜ7xäCð<ıxTä!ã€Ç8Ä1xˆùÇBàöqäãŠ8‚3©ˆš[ˆ8à1އäC Gpò1­ãXH>Æ¡Q+Cë<*"xŒc!âŠ8ò!xäcâ<Ö! ‘â0p“pâ âðâ° !ð ù0 1âãâ0 1âù0!ð€Q 7ùP1þ !ëââ°ù7 !ð ù Á1ùâ°ã ð0ð0ùãðãpããë°pâ°ã ù0 7Á‘ã°ãâ°ð0šóùPÁ‘b‘â°ð7R7¼%ù0ð R!ð0ð0ð ðãðù ð0â°âšãp#âëPâã7ð0p³â°ð0ðââ°ã°â°ããâã ã°âù0â0ð ±ëâã ã ùþ ð  7ù  !ë0Á!ð°ã ëPpâ°ð ð0="ð ëã°ãù0ðPR!ð ù ð  !ð02ð !ð  ‘ããÐ#ã =’ââãã°ã°ââ°ù "ðPâpâ°ð ù0!ã°pã°ã ã ù7Áa%! ÈÀðp3 @C•UI/LÅT÷B°Õ`•Le•LE•ý`•eùû`–i©–kÉ–mé–o —qY–ùâš 5{µ 5p3 þó2 ð ù  ð 7ð°ð7ð°ââ0ù0ð°âðâÀ[â°ãã7R71!ð°ãpSù7ð  1ëââ°ãâ±ãã ð7ðPÁ17±R1 !ãâã ð0ð ããë7ð ããâ°ãR!ùãã°â°ããã°ââââPð  ± 1ð ð0ð°R1!ð°â0ð ðPð ããù 9 ±âãÐþ#p³ëù0âââã âP1ð ð0ð0 1ð ã°p“R!ãâ°pââ°p3â°â0Á1ð V"Á!ã ã°âp³ëâðQ1ðPë ù ãã ã !p âã°ë ë°ãâãp3ð0ë ð0ð0ð0ùã°âðš³pS ±âð ùÐ#ãâ°ãâPð  !ââp3R‘ãã°âù  !ãþã°ë ð0ð0ââãðâ°ð°ãâã ð  1ùë ùÐ#ââ0â0ð  !ð0ð7ð ã°â0ù ð ã V²â°p3â§ð ã°ë â0ë ð7ãã‘ð ð0 Qëâãšâ0âãâPR1â°p“ð Á1ð°âù7 !ù0ð ð ð° !ã ð ð !0 ¿Àã°ë  ri/XI•ûðý`•ýP–ý@•ýà¶þ{Ë·}ë· ¸o ë ° ‡› „ç â°ë ó¢ ð0â  11R1!ë7ëââ0ð0âðëp“ !ð0âðãëâðã ‘â0R!ð ë°âãã°ëðâãp“ð !ù0â°ã ð0â°ù ð0ð0ð ð0ð  1âšâ°âã ââðâ°ã ã ð°ã ë Qâ°ã R!!Á1 ! ¡9ð ð ëâã°ëþù  ‘â°â°âã â0 7ð0=2ë ã ð R7ð  ! 1ð !ð ð 9ð R§â°âðã ãùãù0 1ð "ð0âùâ°â°â°ã ââpââãë°ëâ°ãð0!ù  1âã°ð°ð ù  !ë°ù0ù0ð 9 !ë0pÃ[‘ââ°ããâã7 !ð7ðâðãù  !ð R!ðþ ã ã ù0âðãã ð7ùP7ùâ âëãâð0ð°âë0âëãã ð0ð0ð ð  1‘â ù0ð ëãù ð ã°ð ãâðùâpùPë ëðâ°ð  7ù0âã ð7ù0ë°â°Á‘ð0‘ââ0pâðë âãã° !ùPÁ1p#ëëù0±ð¢° Œð ð°ã0 ý¸þw×y­×{Í×}m/ð°ð0 R3 Þ {%pº ðý  ð ð  ð0ð ã°p3 !ð Á!ã°ãù7 1ð7 1ð0 !!ù7ã°‘ Qëðãâ0 1ù7ãp3âë 1 1ð  !ð0âð7ð0ð°ð0ù7 71ùÀ[p3ð  !ð ð  !ð 1ùðâ0ð ù°â 11!ð§ù0 1R±ð  !ð7ãpºâ°ð þ ± !ãã°ââ°ãâPð0ð0ù "R1R!ð7ð0ð !Á!ð0 !ùâ°âp3ð  Qð§ð ã°â0ð  !ð ð0â°â±ã p3ðPð0ð0 !ð ð°âãâPð ð ãâ0ð0ð°ð ãð7 !ãããð±â°â â°ã§ð0 1ð§!ãâ0 7ð0ù°ã°âðVòâ0ëã pâþðâ°ââ0ð°ãR1ù ãâ°ãðp3ð0ð ð7ãââ°‘ã°p“ ±âppâ â0ù0ðP!âPð0ðâ0ðã°ãë0ð°1ââpóâÐ#âë ù0ùâðâ°1ð0ð pšpSëãR!ãã ðP !ãâ°âë ëp âðã°â0ðPð ð ð !  ËÀ°âë0 ýà×mïöo÷qÿ·þL7ð Ó Ëà Ë7Þ 9ð  Ðù  !š7ðp³ù0ââ°ã ‘ã7ð ùP!ù01ð0ââðãã°ù0p“7ù0ð ð7ð0â°pâ° ‘â°ùã°â0ð0ð0ù0 1 !ð°R‘â° !R1pñããðù0 11 ± Qp³p â°!ðPpðŠË'NÜ:ƒðÄ „7NCq áå3˜oƒùÄ1Ì7^>qðÄ Ï @qóƒ7._MxâÆ‰˜Ï`¾qùÆ gT 8xëÄ1'Ñ`¾qðÆÁ·Ž¡Axâà­ƒgÞ8qùÆÁ[OÃuâà‰[WÓ`>ƒùjÌ'N ¸qðÄ 4(Ž¡¸uðÆdXsÝ:qðÄÁË7ž8xãàƒ7Nâ8q ×1¬oûôóO@tPB 5ôPDUtQFuôQHí§†@™fo²ñfÓMÇGx@áS“uÄG†ÖhxÖG"ƒà§¦uÄHxÖG šàYGjˇ¡qà1H šÖG qÄÉG u þ‚G ‚G¿jžqàƒžÚàƒÆ‘Hœqà©)qÆhÄqòaHœ|ƃògxÖƒàqà1hÄhœ|ÄÉG qÆÉGÖɧ?ƒÆgÖHxÄqª žqàžqg ‚GœqàžqÖG qG š$žuÆÉG qògqà1hqà1H"qàgÄÑqÆaH†ÄGœqª qÆhÖÇ qÖ§&†Äñkx´ÍÇ qÄÉGœqògxÖhqÖ1qàƒàqþ§& bhƒòa¨&¿ÄaÈ xÖqªI q'Öhqòhx ‚GÖ1jÆG†ÆGœ|ÆHxjÊGxjËÇ xÆgœ|qÆ‘è7ƒà'xÆ‘hœ|à1H qÖqÆ‘hÆ'qÀc ùÍ8ò!†Œãˆ8Æ!ŽqäC~<Ä‘£ˆC 5G>²†ˆC"YGmòÁuŒãˆA2Ž| 8ò1Ž|À£&ð<ıxˆ 8à!‰üF âˆ8ƃHdð<Ö!†¬ƒ!ˆ8àþ±xˆ5Ç:Ä!‘udâG>à!ŽŒbŒ<Ö!uh"R{äcýøG@R‚„Ç8ÄŠi$rÙ0ˆ7Æá xŒ øG?4!qhâ<Æ!xŒC â€Ç8$’qøeð<Ä‘q0d ©‰8àa†ˆ#âXCÄmõÇ(〇8Æqäcð<ÄÁqDÂ̇8ÆqÀCð<ÆqÄ ɇ8à¡-qÀc 82xˆã&CjÃq¬5ˆ82xˆcð‡@Ä!qÀc ‡D "ƒäcÉÇ82þŽuÀ#5‘H>Æ‘qäc 1<ÆqÀCùÐCÆ!ŽuŒCðXÇ8ÄQOxŒã`ˆA’qäCð‡DÆq0$〇8ò1xäc<ÆÁq$ 8RxŒã<Ä‘š$ð‡@jbxŒã€Ç:"†ŒC âðK>ÄqDðC´%Ž|ˆC ã€Ç8Äqsð‡8ò!‰Œë¨ <ÆÁuÔD˜ã`È8àax„!µÇ: ÂqÀcFCj³ŽqÔùÇ8²†ˆcã‡@Æq¬C"ã‡DòQ“þqÀà ð<Æ!qÀcY‡8ÖqÀ£6ù¨ <òq¬5‡DÄèŠC"ãÈÇ:àQƒÀcâˆ8$²†Œã€Gmò1£ˆc<ÄqˆcãG>Æqàã<ÖqD1ˆ@ÄqÀcâ0Š8à!xŒC"ãÈ82qäc © <ƱxˆâXÇ8Qü‚<Ö!xhbS¦r•­|e,ÿ1ãÈ<@1edc›òFm¼‘qŒ‚Oš‡@4!qŒ#ð0<Æ!qŒÐ…Ç8à1qÀà <ÖaxþD ãȇ8$2xˆ〇8à1¬âÈÇ8à1xÔã€Ç8àaã‡@ÄqŒC ã0Š8Æ!èŽ#ˆ8àaD ¹ˆ8òqäÃ(âˆAà!ŽqÀCðÇ8ÄÑqÀc1ˆ@ƃdù¨ Ä!qŒcâ‡8Æ‘qE‡@Ä‘qÀcâȇ@Ä!qäƒ!〇8à1ˆ#‡8]xŒƒ! 8Æ‘qDãX‡8Æuˆcë< qŒƒ!5Y<ÆqÀþCù¨M>à1x¬Cð€.<ÖqÀ#G> qHDãÈÇ8"Žqdë`È8bxŒâȇ8à±xˆcù0CÆqÀcð‡8àax¬â€Ç8à!x¬Cù0<Ä1xˆ#â‡@Ætˆ8"ŽzŽC âˆ8ÆÁqÀC G>$R“|ˆcðøÍ82Ž|Àà ù<  qä 8ƱƒäC~‡@Æ‘ˆëG>ÄÁqäC5È8à!Ž|ÀCãÇ8"Ž|ÀCð<Ä1qD1ˆ@ÆqÀcþ‡@Öƒ`ˆqxx†axXq`q€‡š€q€qqȨ xa2ˆqÈ0ˆš`ˆÚx‡|x0xxXƒ€‡qÈq‡|X£‡u‡…e`„0x0MÈ2$LB%\B&Ü£~X‡qPH¤eÈoX†Mq‡ß…èMxMˆ|†‡|q€‡|‡|‡|‡|q0Šqˆqq`ˆqqƒð ƒø q€‡q0ˆ|0ˆ|0x†‰x‰È‡q€ƒ€q¨ xÈx‡þ|XxX cqȆxX‡q‡u€.q`ˆqq€qˆq€‡|€‡šˆq€qˆÚ`ˆqÈq`ƒXqȇqÈq€‡š£È‡qˆq€‡q‡q€‡q`ˆqqˆ|‡u€qx‰X‡q¨ xqˆqˆq€‡u€ƒ€‡u‡uƒX‡š0ƒˆqˆqqÈxq€qq€qXxȇqˆ|xxȇš€qȇqX‡|qˆu`ˆu€q`qÈqXƒqxqX‡|¨ xxþ‡ux‡u€q€q€‡qqȇq€‡u€‡q€‡q€qX†x0ˆ|¨|€‡q`ˆqˆÚˆqq€‡|xXx0x£Èqèq€qˆq€q€‡q¨ xqÈqqXxxx¨ x0x‡ux‡|‡|qXxȇqˆu`qx¨ x‡uXx‡uˆq€qXx‡|xxȇq0xX‡q€‡Úqèq€‡Ú€ƒ€‡q0††‡|x‡qþ¨ x‡q€q€‡q0ŠqƒÈ‡q€‡q€‡|€.q`qqxq€‡qqX‡šˆ|x‰È‡q€‡q0a2‡u0xx†X‡d`„0 MhÂ؇ÀQíQµ²qÈx…ið†ið†lð†Úqø Pà“Q€q€‡Q€.x‡qˆuxxXqXqqx0ˆq€q0 ƒ€‡u‡|€‡q`ˆš‡q€q`q0Šqˆuq€q†¿€®u†xÈq€.0ˆq€‡q‡q€qƒx¨ þxX‡ÚˆqÈx‡|‡|€q€ƒ0 q€q¨ x‡|‡qÈqq0 ƒ†XxXqx‡|‰xXq€ƒ€q€q€q€q€q€‡uˆßXxxÈxx‰‡|ƒ€ƒ£‡|‡q`ˆu‡|q‡|qxx‡qȇš€‡u0†‡q0 ƒqx0ˆqXqð‹u‡|xXq‡ux‡q€‡q€‡q€qqXxXxXx†x‡|x‰¨ £‡q`þƒ`ˆuxX‡qȃˆq€q`ˆq`ˆšÈ‡qƒ0 ƒˆqˆšˆq`q€qxx‰xx¨‰|x0†‡u€qƒ€‡q€‡q€‡qˆq€q‡|¨ ‰x‡|xXx‡q€‡ux‡qXqˆuqxÈq0Šqȇq€ƒ€‡ux‡qˆÚXqˆq`ˆu†Xq0 qXq€‡q€‡q€‡q€q0 qƒ0 q€qxXqxÈ£0x0x¨ ‰x‡šq0 qþxȃ€ƒ`ˆqÈq€‡š€‡q€‡q€‡q€‡q¿x0ˆq`ˆqˆu`q`q€qQøFxxXxЄ,ËJÈJ臘øøøQŽaV”~X‡qPX†lXoÈ2« qq…|øM€‡šq€q€q€‡qX‡u€q€‡qð q`ˆ|¨ x‰‡uƒqÈx‰xXxxx‰Èqqȇq‡q€‡q0ˆ|x‡|‡u€qÈq€‡qˆ|q€qˆšˆþ|qȇq0Šq‡uqXx¨ £xxÈqˆq€qXx‰q0Šq0xxȇq€‡q€‡q€‡š0£††xxq€‡qXxx€.‰Xqˆš£Èqxx‡u€ƒˆq€‡q€qXxxȇڀq€qȇqqq€‡š‰x††xx¨ xq€‡u€‡|†xx0x‡ß`ˆu€‡q€ƒˆšx‡u€qˆq£xȇq‰¨ þƒX†xƒ€q€‡qˆq€qȇqx†xq`qÈq‡|x0†È‡qxx¨ ƒ€ƒˆqÈqx‡þ‰ƒÈq€ƒ€qX [xq€qˆqƒˆ|0ˆ|€q€‡q€‡q€‡qx‡u£0xȇq0‰Xx0ˆ|¨ x†‡uˆqˆuƒÈ‡q0œª q€q€q€‡q€‡|¨ xx‰‰‰x†È‡u†¨ qq€‡qð‹q€qXxqþq€q€q€‡uq€‡qȇqƒ€‡u€‡qxxxXQXF†0ˆQ€H;è“|p†`‡gˆvx†˜a?qÿ‡qÈx…iXoX2óq€oÈx>ÑxxÐxxrqÈq‡!xXxxx0ˆ!èrqȃ€‡qrq€‡qȇ!‡‡q€‡qrqqsƒ€qÈq€‡Úx‡š€q€‡uxȃòu€qrƒ€q‡!_x‡|xXqsq‡|xx‡þ!‡q€‡q€‡qÈx‡|€‡qrqqx0x‡q€q¨ xx‡!x0x‡qÈx‡q€q€qsq€ƒ‡u‡qȇqȃȇ!x‡qsll‡|€ƒ€qrqÈq€q€qrq¨‰!‡0‡q€‡q€q‡|x‡0¯ q€q€qsƒ‡uÀvxxq€‡q€‡q0xqÈxxqȇ!‡0x¨ x‡|‡07ˆqXq€qrq€qsqsqxxxl7ˆ|óqsƒòqþrqȇÚ‡u‡!x‡|x‡|Àöq‡|0l¯ x‡q€‡ux‡!qȇqȇ!q€‡q€q‡uóÚ€q‡ux‡!‡|rqsƒ‡0‡!xx0x0xx‡|òq0xxX‡q€‡u0ˆq€‡q€‡qrqrq€q€‡Ú€qrq‡ux‡!‡0x‡qÈxxXx‡u€ƒóu‡!‡0‡0qȃxxx‡q€ƒ€q0xqsq€q¨ xxxx‡||q¨‰|þx‡qòq€‡qrq€‡qÀvƒ€qq‡u€€'Nܸ|âà!D(n¼qÅå‡p\>xŠƒ7ž8xãòÁ‡pIqðÄ!O\ÂqÅ­BÓ2FƉC¸NÓ¿ž> ú¡@óå!§´X±t.ž­ñŒ• £AûYͪu+×®^¿‚ +v,Ù­ûÖ‘5mí²lÙÄyçmÜ:q úåÓOãäÏeùŒ#IâÀ³Î8ð I‘ÄÛ_â¬Ï@Šå3Ž”³IåsY>ãÀ#Î_ãüµÎ8âÀ3<â(&N>$Á3ŽbùŒó×@Ï@ëÏ8âÀ3ÎlâÌ&<ùŒ³ÎlÁ3Ž8$“þ<ã̶Ž8[ŠÃ›8ðŒÏ8ЉóW>㈣Ø8å3Ž”Á³IâÀ#Î_ãÀ#N>ã(6P>Á#<âÌ&ŽbâÌ&Î:ŠÏ:ðŒ#Žbâ¬3Î_ë(6Žb$Í&<ãˆ8ðŒó×:å#ŽbâÀ3Ð_âü%Î8ðŒ£Ø8Љ“Ï8ås<ëÏ8ðˆO>ëŒ8ðä3Î@ðˆ8ðŒ#<”þ%<ùÀ#oâü5Î@ðˆO>ãˆÏ8ðŒÏ8ðˆ³Îlâð&Î_â¬3<$å#Î_âð&Î_âÀ#<ã(¶N¢ ÃùÀ³Î:ãŒÒÏXÿð[åA=ôØCþ?D1B #DñÃ=õc 8ÐÄ?êðGücÄÕ¸àƒ^xPãä(keããÞˆãÍeð€Ò“&Ši²Î8âä3Îlãð&Î_ãÀ3Ð8ëÀ#Î8‰Ï8[Ž“8ðŒ#Î:‘¤˜8ó×8ó—8$‰Ï8ðˆÏ8‘8ðŒó×8ðˆ3Û8­Ï@ð\öIùÀ3<³Ž8ðˆÏ8ùÀ³N>³­ó—8ãÌ&Î8ëˆÏ8 ´Ž8‰C1â ÉlÆñ—qÀcðX‡8þ²Ž¿Œ〇8þB)ňcG>uŒëø‹8౎qÀþC‡8(qÀcðÈ_Ä1›uÀCëIà1xˆC1âøË8à±q$‡8ÆÁqÀ#âPŒ8x3xˆ#〇8ÆqüeŠ<¤&xˆÇ8à1xˆcùIÖ¡˜uˆã/〇8#ŽÙŒC1ã€Ç8ò!ŽqüeðX‡8Æ¡qÀCŠY‡8ò1xŒ#〇8Æñ—qÌfâ€Ç8à1)­#â<2xˆã/ã€Ç8þ"ŽÙˆãø‹8à!xˆcÇ:ÄqÀc Y‡8ÆqüE³G>à1xŒÇ:2ÅŒãþ/â€Ç:à1xŒã/ã˜Í8Ä1qÀCð¸Ì_Äñ—qäcð<ò—qäc ðÇ_¢˜qäCðXIÖ’lé/ 8à!xˆcù<Æñqüe³G>ÄÀcëÇ:þ2Žuˆã/âPÌ8òqäCù‡bÆñ©ÁcYÇ8òñqÀƒ$ù€Ç@à!ŽqäCð<ÆqÀCð‡bÆñ—uˆcùÇ:à!ňãøË8x#xˆcâÁ(~ÁŒYÇ(úq5ôZÉ; [Ø{¸`Îh=ž1ƒ}@–ÀÅ?î1‹|¨cþpØG?þ¡Ôƒ¿0iKkÚÓ¢v+ûÇ@@±ŒidcnqÜ8¤¶x€âýÐÄ8¢‰|d ‡8à1qÀcð<Ä¡˜|Œã/ù É_ò—qÀCðÇ:à1Ž¿¬ã/ 8à!Ž¿ŒCðG>ÆqÀcðÈÇ_"xˆ#â‡8ò!xˆ#ãÈ_ÆqØâPŒ8f3Ž|ˆcãÈ_ò1ŽÙˆc$Y<Æ’Àcðȇ8à!ŽqÀ#〇8ò1)$ù‹8þBûÂÃ¾âø‹8cß|ˆã/ãÈÇ_Ä¡˜|ëPÌ@à!xŒã/ãþȇ8þ2Ž|ÀCù‡b"¥üeŠÉ‡8à!ŽÙŒâ‡8à1xäCã˜Í:ÄqÀc<Æ!ÅŒãÇlÆ!Ž¿ˆÇ@C’uÀC³‡8à1xˆã/âÈÇ8à1xŒâ€Ç@þ2¿ˆãÈ¥Äñ—qÀc ð<Æ|ˆC1ãøË8à!x¬C1ùÇ@à‘qˆ#$‡8ÖûæCð<Äq¬ëPL>ÆqÀþðÇ_Æ1¿ˆ 8“’ˆ#¢ŠÉÇ8þ2Ž¿Œã€Ç:Æ!x DJù<ÆÁq¬Cðþ<Æ‘qÀcðÇ_Æ!Ž¿Œâ˜Í8þ2Ž|Œc R‡8f3ÙDRH>ıxˆ#ã€Ç8þ2xŒc6 8à!Žu $$QÌ8þ2ެâPŒ8þ"xŒ#ãà8Æ!ŽuŒC‡8à1ŽÀcâ€Ç@þ2uŒã/ãÈIx#Žuüe ù‡bÆ!xŒQŒ8ÖqüEð<qäCã<Ä!¥ˆbŒ@>Äñ—uh¢ZÉ |€¬äAÏPÇ3ì`‡<àÁxȃ°‡ìÃ8Å;òÑv ÿè‡=`Žô£›>þñ‹oüã#?ùÊ_>ó‹¯P¬eóÆ@¼ŒâûÐD>þ2ŠqÌFãÈ<òqÀCÇ8à±qP* 8þ2x d6ãȇ8à1ňƒbŒƒ8ä<ˆƒÔ < Iˆƒ”Œ<ˆ<Œ<Œ<¬ƒ8ü…8ŒC> „bˆ<Œƒ” Ä8ÀÃ8äÃ_Œ<¬ƒ8ÀÃ8Àƒ8ü…8äÃ: <ˆC> ¥ü…8ŒÃ:ˆÃ8ÀÃ: Ä8ÀÃ8ÀÃ@Àƒ8äƒ8ü…8Àƒ8äCDÃ_Œƒ8ÌÆ8üÅ@ŒÃ@À¥¬ƒ8äÃ8ÀÃ8Àƒ8ü…8ÀÃ8äÃ8Àƒ8ŒÃ_ IÀþÃ:Àƒ8Œoˆ<ŒƒbØ¥¬<ˆ<ˆÃ8ˆ<ˆÃ8ÀC>ÀÃ@ŒÃ:üÅ8Àƒ8Àƒ8ü…8Àƒ8ÀÃ8äÃ8ä<ˆ< Ä8äƒbˆÃ8ä<ˆÃ_ˆÃ_ˆÃ_Œƒ8Àƒ8äƒ8üÅ8ˆ<ŒC>Àƒ8ðÆ8ÀÃ:ˆ<ˆ<ˆƒ”ˆÃ_ŒÃ_ Ä: D>üÅ@(†8ÀÃ@Œƒ8äƒ8üÅ8À¥¬Ã_ŒÃ:ˆ<¬Ã@ü…8ÌÆ8üÅ@Àƒ8ÀÃ8ÀÃ@Ä:ˆÃ8ðÆ@ÀÃ@(†8H‰8x<ˆC>ÀÃ8ÀÃ8Àƒ8Œ<ˆ<ˆƒ7Àƒ8ÀÃ@Àƒ8äÃ@ÀÃ8䃔þŒ<Ä:è<ˆÃ8ü…8Àƒ8ÀÃ@¬ƒŽýÅ@Àƒ8Àƒ8H‰8ÀÃ@ŒÃ:(Æ8ˆÃ8Àƒ8ä<<ˆÃ_ˆÃ8ü…8ä<¬ƒbŒÃ_Œ<¬ƒ8ÀÃ@ŒC>ØIÈÛ8äƒ8Àƒ8Àƒ8Œƒ8äƒbŒoˆÃ_ Ä:ˆÃ8ÀÃ8Àƒ8ÀC>ÀÃ8ä<ŒƒbˆC>ü…8ä<ˆÃ_ „bˆÃ8Àƒ8ŒC> Ä8Àƒ8̆8üÅ:ˆÀÃ@(Æ@(Æ8äÃ8(†8(Æ@D>Àƒ8ü…8Àƒ8¬ƒ8„€&,#À_Ø–&0ôh…H9C¨ƒ:ƒ:5¨9Cþ@Ö?¬B ÀôB?¨ƒø9À>4_uZçubgvj'óí<¬ƒ8€Â2LC6,ƒ8dƒãˆƒ7üÅ:€Â?äƒ&PŠ& „bˆÃ:̆8(†8ü…8(F> Ä:ÀÃ8(Æ@(†8ŒÃ@¬<ŒÃ@̆8Àƒ8ÀIDT>¬<ŒÃ_Œƒ8Àƒ8(F>ŒC>ŒoˆÃ:l‰8Àƒ8À¥üE>Œƒ8¬<ŒC>ˆÃ_ˆC>ŒÃ_ˆ<¬Ã8ü…8ÀÃ:üE>ü…8üE>üE>ŒÃ:üÅ@äƒ8ÌÆ8ÀÃ8ü…8ÀÃ:ÀÃ8Àƒ8̆8ü…8Àƒ8ÀÃ8Àƒ8ÀÃ8H‰8äƒ8üÅ8ˆ<ˆþƒ”ˆÃ: <ˆ<ˆƒbäÃ8(Æ@ÀÃ8Àƒ8Àƒ}ÁÃ8(F>ˆC>ŒÃlä<ˆ<äÃ8¬ƒbäÃ8Àƒ8äÃ8Àƒ8ü…8Àƒ8ü…8Œƒ8¬Ã8̆8¬Ã8ˆÃ_ˆÃ:ŒÃ_Œƒ”ˆƒbŒ<ˆ<ˆÃ_ˆÃ:̆8ÀÃ8äÃ8¬<ˆ<ˆ<ˆ<ˆ<Œƒ8üÅ8äƒ8HÉ:Œƒ8ü…8HI>¬<ˆC>ˆÃ8ˆ<Œ<Œ<ˆ<ˆC>¬ƒ8ü…8(Æ8ü…8ÌÆ8ÀÃ:Àƒ8üÅ:üÅ@üE>ˆÃ_äÃ8ˆƒ¼Ã_Œƒ8Œ<Œƒ8ÀC>Œ<¬Ã8 D>Œ<äƒ8Àƒ8þÀC>Œƒ”ŒƒbˆÃ:Œƒ8ÀÃ8ˆ< D>ˆoˆ< „¼ÉÛ8(I oˆÃ_Œƒ8ÀÃ@ÀIˆC>ŒÃläÃ@ÀÃ:„8ÀÃ8üÅ@(†8ü…8¬ƒbäÃ@Àƒ8ÀÃ8Àƒ8ÀÃ8ÀÃ8Àƒ8Àƒ8ÀC>ÀÃ8ÀÃ8Àƒ8Àƒ8Œƒ8üÅ8(Æ:ÀC> Ä_PŠ8¬Ã8Ø×_Œ<Œ<Ä–Œ<äÃ8ÀƒÔüE>ˆÃ_Œƒ8(Æ8üÅ8ˆC>ŒƒbˆoŒÃ@¬ƒ8ÀÃ8ˆCD‘Ä_ˆÃlHMˆ20Â<ˆüÃ>ØÃ˜Ã>lçóBoôJïôZ<¬<€Â4,ÃZ8Ž8xÃ8ˆI¬(ô„&äƒ8ÀÃ((Æ8üÅ:ˆÃ8ÀÃ8ü…8üÅ8ü…8Ä:ÀÃ:ü…8ÀÃ8ðÆ8ÀC>üÅ:ŒC>ü…8ÀĬ8ä¥ÀÃ8ÀÃ8ÀÃ:ˆ<ˆÃ8Àƒ8Ì¥ˆÃ8ˆ<Œ<ŒÃlŒ<ˆ<ŒÃ_ˆ<ŒC>ˆC>PJ>üÅ@Œ<ˆÃ8ÀÃ:ˆ<ˆÃ_¬ƒ8(Æ8ÀI¬Ã@À¥ˆÃ8¬ƒ8ŒÃlŒ<Œ<ˆ<ˆ<ˆÃ8(Æ8Àƒ8ü¥ü…8ð†8(†8Œ<ˆÃ_Œþ<¬<ˆÃ8ä<ˆ<ˆÃ8Àƒ8ŒÃ_¬ƒb¬Ã_Œ<ˆÃ:ˆÃ8ÌÆ8äƒ8Œoˆ<Œ<Œ<¬Ã@À¥Œ<Œ<ˆÃ8ÀI¬Ã@ÀÃ:ˆÃ_Œoˆƒb¬ƒ8Œƒ8̆8Àƒ8(†8Œƒ8äÃ8ÀÃ8Àƒ8(†8üÅ8̆8ÀÃ8ˆ<ˆÃ8ü…8¬ƒ8ÈÛ@(†8<Œ<ˆÃ8ü…8ÌIÀƒ8Œ<¬ƒ8Œ<Œ<äƒbŒC>ˆ<ˆ<¬ƒ8ÀÃ8ü…8Œ<ˆÃlŒƒ8Àƒ8Àƒ8ŒƒbŒÃlŒ<¬<ˆÃ8¬ƒ8Àƒ8Œ<Œ<ˆ<Œ< <ˆ<äÃ@þüÅ:ˆ<ŒC>üÅ:ˆ¥üÅ8¬ƒ8Œƒ8Œ<ˆÃ8ÀÃ8Àƒ8ü…8Àƒ8ä<ˆÃ_ŒÃ_Œƒ¼‰<ˆÃ8üÅ8(Æ@Œ<Œ<ˆ<ˆ<ˆC>(†8Œ<ˆH‰8ü…8Àƒ8PŠb¬ƒ8ä<ŒC> Ä_Œƒ8ðÆ8ÀÃ8ÀÃ8üÅ8üÅ@ÀÃ8äÃ@ŒƒbPÊ_ <Œ<ä<Œ<ˆ<ŒÃ_ŒÃ:ü…8ŒC>¬C>ÀÃ8äƒbŒ<¬<ˆÃ_ˆ<<Œ< Ä8¬ƒ8Àƒ8¬¥üÅ@Àƒ8ÀÃ@ü…8ÀÃ: Ä8üÅ8ÀÃ8ÀÃ@ÌÆ@ü…8Ä_ <ˆþIÀÃ8ˆ<ˆ<ˆCŒÂ20B < „&0QhE?ìHä.9HC1ƒ4C1äA?ìCOØ*ìÃ?ÀBü;€Oìƒ ÀÀ>ðÃ/ôõÒw}Û÷}gE>ˆÃ_€Â4,C6xÃ2xƒ88Î@¬ƒ8€BOh<ˆÃ:h< <ŒÃ_ˆ<ˆ<ˆ<ˆ<ˆ<Œ<äƒ8¬Ã_Œƒ8üÅ@üIˆ<Œ<Œ<ˆÃ:ÀÃ8Àƒ8äƒ8Àƒ8ÀÃ8ÀÃ:ˆC>ˆ< D>ˆÃ8(Æ@ü…8Œƒ8äƒ8(<ØW>„8ÀÃ@Àƒ8äƒ8üÅ8ˆÃ_Œƒ8ä%?9<ˆ<Œþƒb¬<ˆÃ_Œ<ˆ<ˆC>ŒƒbˆC>ˆ<ˆÃ_äÃ8ÀÃ8Àƒ8ÀÃ@Àƒ8(F>„}Áƒ8Àƒ8äÃ@ü…8Œ<Œƒ8Àƒ8Àƒ8ÀC>ŒÃ_Œƒ8<¹8¬Ã8(Æ@ÀÃ@Àƒ8ü…8Àƒ8ŒC>Œ<¬< Ä_Œƒ8(Æ8üÅ8ˆÃ_ Ä_¬ƒbˆC>ˆC>Œƒ8üÅ@äƒ8<ù8Àƒ8ÀÃ@ÀÃ8Àƒ8ü…8(F>ÀIÀƒ8<ù8üE>ÀÃ8Ø×_ˆÃ8üÅ@äÃ8ˆ<ŒÃ_ˆƒbˆ<ˆƒb <Œ<ˆ<ˆÃ˜‹<ä< Ä_äÃ@üIÀƒ8äÃ8Àƒ8ÀÃ8ÀC>þŒC>Pò@¬ƒbŒƒb Ä_ < < <ˆ<ˆ<ˆŒƒ8ü…8ÀÃ8üE>Œƒb D>ˆ<ŒÃ@Œù8(Æ8(†8¬Iü…8(Æ8ˆÃ_ä< <äƒ}ÁƒÔ(IüÅ8äÃ8ˆC><ŒÃ_Œƒ8üÅ8Àƒ8ÀÃ@ÀÃ8(F> Ä_ˆ<ˆˆÃ_äƒ8¬<Œ<Œ<ˆÃ_ŒƒbˆC>¬<Œƒ8üÅ:Œƒ8¬Ã“‹<ˆ<ˆ<ŒC>Œƒ8(Æ8äÃ8ˆƒbˆÃ:üE>Œ<ŒC>ˆC> „bˆ<„8üÅ@ÀÃ@¬ƒbˆÃ:ˆÃ:Œƒ8¬<Œþ<ˆ< Ä_ˆÃ_ˆC>ŒÃ@üE>¬ƒbˆC>ˆÃ_ŒÃ“Ã_ Ęçƒ8ÀÃ@äÃ8<ù8<¹8ÀC>ˆ<ŒÃ_ä<äƒ8Àƒ8Œù:„€(ü# À˜kóÀðéäÁîîn1äÁ>ôCOì=D‹6œê§N@¾ í! ÈB‰)V´xcF9vôødH‘á‰7jÚ4o˼µ4 ž8x þíÓ4¦&˜ðÄåS¼q;aš7ž¸£ù`Šƒ)ž¸|0×Ë'¦ÉqðÆí4¹n¼uðÄÁOq0ÅOÜ8xâ`š„)Þ:q0ÇÁ[·óè:“âØîwT\>¶ãà­ƒ)n¼|&wŽƒ7n8x&á†9.߸ÒðÄÁ;ºSÜ:q㈊—Þ8x&ÇÁSÌÑãà‰ƒ·nÆuÀCðX<ÆѬã<Æ!˜Œ〇8à1xŒã€Ç8ıx¬&&ÙI>L²“Àc0‡8àqxŒù0 Æ!˜ŒCð0 LÆ!ŽqÀc0‡Ivbxˆ#ã€I>Ʊq¬âLı“u„@È`à!xˆšˆÙFF&‘}Œ dý˜H?FÚR—¾¦1•éBÀ³ŽQ¤$Óh‰8¼a’q˜dÿÈÇ(à!xŒÂ$ð<Ä1xˆ&âÈ<Ä1x€GG>ÄqŒ&ãȇ8þv²Žqäã€Ç8òaxŒ&ªÇQò!xŒC0 LÆq¬Cð0É8ò!˜ˆã؉Iv"ŽŒ#ðX<Æ‘qÀDùÎ8ˆ"ŽqÀCðG>àax˜dðQÆqäc4ã€Ç:ÆqŒc'ª:J>ÄqÀÃ$ãÇ:ÄqŒâ€Ç8à!Ž|Å$ãÈÇ8àq˜ˆ〇`b’ˆâ<ÆqÀCã€Ç8à1x¬Cð0 <ÆqÀ# 8v2ŽŒ&â€É:Ä‘qÅ$ð<Äuˆƒ(&É8ÄqÀcðX‡Iàþ1˜&G>ÄQqÀd 8`"˜Œc'ãØ‰8à!¶˜â€Ç8à±qÀc;F“ˆcD<Ö“uÀÄ$ðG>`"Ž|˜d뀉8v2˜ˆëÇNÖqÀcðXÆ“ÀÃ$ãȇ8ÆA”qÀdâÈÇ8à1˜¬CðX‡8à!xˆƒ(£‡8à!x˜„(â€É8à1Ž|Œãȇ8`"x˜d' 8B0Š_0"ð<ÖMÀÔ"ý¸H?@’˜ßç9×9LÅžQ cËÀ™7ÄáqˆàÅB4“qˆ‚-ùLÄuÀDðŽq˜&ù€Ç:à!xäC0LŽ"¢ˆc&ɇ8à1˜ˆâÈÇ:J3Ž˜$ãȇ8àa’|˜ã Š8ò1˜Œ 8à1˜Œ 8`"˜ŒÃ$ØBˆb`BàavÂ$vÂ$ˆb4àAˆB`bÄÆÄ&Ä-Æa'ÄÄaLÆÄa'Lb'ÄFcàÁ$àaàÁ$ØB†Cv"ÆA`bvâ(þLòAàaLÆÖ-ÄÖaÄÖ&òaˆbLÆÖAòá(LÄÄÆa`BÖLb'Æa'Æ&ÆÁ$òAàÁ$àAàaàA`Bà!ÆAv"Æ&ÄÄÄÄÄÄá(àAJCàá(vBàA`BàaàA`bÄavbvbvBàÁ$òAHà!ÄÆ(Ö&ÆÖAàAv"àaàA`bL"Ä&Ä&ÄÄÄa'LbL‚-Äaàa4`Bàaòá(L"ÆAvbvBþ`b†CàAˆBvbòaàaL<àaÄ-Æ&Æ&B@–`'Lb<‚!Ò!"#R"'’"+Ò"/²àAÆARbt¦%Äa¼Öþ¡FaàA4ÄaÄaÖAàA`â(`Â$vÂ$ÖL&Ä!àaÆÆAòÆ!àAòaàaòÄ(ÆÖ¡4ÄÆÆ(ÆÄ-Æ(Ä&Æa'ÄÄÄaòÆ!Ä&ÆÄaàaòÆ!Æ!Ä&Ä¡4ÄÄ!Æ(Äa`Â$ˆbàþaàaÄ-ÖAàAÆÆÆ!àaòa'ŽÄa'Æ&ÄÄ&ÄŽ¢4ÖÄ!Æ&ÄÖAÆÆFcˆbÄaˆb`Â$àAÆ&ÖAÆÄ(Ä!ÄÄ(Æ&Äaò&LÆa'ÄaàAàAàÁ$àaˆBvBÆa8Äavâ(òL&Æ&ÄaàaàAàÁ$àaà!`Â$vbvBÆ¡4À&ÄÄ-Æ&ÄÆ&Æ&„ÄÆ&ÆÆ!Ä&ŽÄ!`Â$ÆÄaàa`bþàAàaàá(ÖÁ$àá(òa'Äa`bÄ!`BàAàÁ$ndàAÆAàÁ$Æ!`bˆBàa4àAÆÆÄ&ÄaÖAÆ(Æa'ÄÄ&Äa'Ä&Ä&Ä!ÄŽ¢4FÄaòÖá(àÁ$ÆŽÄ(ÖAòAŽ&Lbàa`b4ØBHÆ!Ä&Ä!`bàa`BJcàA`bˆBld`Â$Æ(ÖAàaàAÆÆ&ÆÄaàanD`BÆÄaLb'ÄaÆ!`b`b4àAàAB@–þÆ&ÖA.Ò]ß^ãU^ç•^áòFa²a–gÄÁÆÁ$ÆA@¡þaÄÄAà!àAˆbÄ!Ä(Ä(Ä(Æ„Ä$òaÖaÄaÆÆAàAÖa`bÄaòá(àAàaàaàÁ$àÁ$vBvbàaàÁ$`b`bòAHàAàAàAÖaÄ<`Â$à!LbÆAÖAÆÆA`BÆÆ&ÆÆAàaàAà!Æa'ÄÄÄÄÆÄ&ÆÆa'òaÄÖaLbàaàþAvBHàá(vbÄ&òAàaàAÆÆ&ÆÁ$vbàÁ$òav"ÄaàavbàaàaˆBàAàaÖòA`bàaàaàAàAàAàÁ$`BÖÆ&LÆ&LÄ-LÆ&Äa'ÄÄ&ÆA`"ÄaàAòá(`BàÁ$`BUàAvBàaàavbàÁ$àaà!Äaàa`Â$vBvâ(F&LÆA`BòAv"ÆAòaÄa`bÄ!ÆÆ(òAàÁ$òAàAv"ÆAòaþ`BòA„Dà!ÄaÖŽb8ÄÆÄa`bòAà!àa`"„&ÄáFòaÄ-Ä&òá(ÄÄÄ-Ä&ÆAàA`BÆÆÄ!ÄÄaL¢4ÄaÆAòÁ$`"L"Æ&ÆÆ&ÖÄ&Ä&òAUˆbàaàAòaÄaàaÄÖá(`Â$`BàAàAÖ!ÄÖÄÆÆÄÆAàa`Â$ˆÂ$àavÂ$àAàAàaòAàÁ$òá(LÆÆAàA`Â$ˆBvBòAþHòá(†cB@ÄÖaF¡ꕞëÙžïŸóÙ"Ž4Á#AÒÄá(ò@áúA`bFá(`BÆAàAàaàAÆa'ÆÖ&ÄaàÁ$`Bò&ÖÆ!`BàAàAàaòaàAàAÆAòAàAUvB`â(`BàA®`bàAàÁ$ÆAòAJcòÖ&Äa'Æ&Æ!ØBàa`BàÁ$Æ!Æ!àa4àaÖAÆa'ÄÄÄL&ÄaòÁ$àá(ÖAàÁ$vbàÁ$àÁ$Æ!Ä!Äþ!ÄŽ"`bÖFÄLÄ&ÄLb'ÖAàaàaàAàAÆÄ!LÄá(ØBòAŽ&T&Æa'Ä(Æ&ÆÄavb4ØbàaàAvÂ$ÆÆA`Bàá(òÄá(à!ÆŽ"Æ-ÆáFÄÆ!L&Ä!Äa'Äá(àÁ$òavBH`BàAòa'Äa'Ä!àÁ$àaàAŽbÄÖA`bàAàaÄ&Æ„„(Æa'Äá(ÖAàaÄÆÆ&òA`bà!Æ&ÄŽÄa'þFòAàAÆ„$ÆÖÁ$òAÆÆAàavBÆaÄÄaL&„$Äa'Æ&ÆÆa'Ä!vBÆòaòaàaàaà!`BvBvBàa`bàa`bÄá(òÁ$ÆÆ&òAàaàa†C®àaÄÖÄÆÄ!Äa'Æ&ÆÆŽ&Æ&Æ!L&LLbvB`B`Â$àaØBàÁ$Æ(ÆAòa'ÄÄÆ¡4ÄÖ&ÆÖá(òAÆ!Äa'ÄÄaÄ!Fa!`BþàaF¡ô™ÜËÝÜÏÝ'bdÖAà–aúU²A¼aTÅaúá4aàa4aàaà!àaØBàaàa4v"Æa'ÄÖá(ÖAàaÆaJCÖÁ$ØbàatIòA`b†Ã$ˆ"àaàá(ÄÆÄaÆAàA`bÄa'ÄaÆAàAv"Ä&Ä&ÄaÄaÆ(Ä&òaÄáFÄ&ÄavBòaˆB`Â$ØBÖÆÆÆAòAHÄaJC†cˆbvÂ$vBà!ÆÆ&ÄòAàAàþa`bàA`bØBòaÄa`BàaòaàÁ$à!Æ¡4ÆÄL"Ä&ÆA`"Æ!àavBòá(à!ÄÆAàAòaLÄÆ!Æ(ÆŽ&ÄavbàaàaàAà!Öa'ÖÁ$`BòAàaàAàaàavb`â(vb`Bòa`bvÂ$`b`b4òA`â(`bÄ àÁË'N Aqâ Š[oœ8㊃'.Ÿ8ãÆ8ž8ƒâò‰'Þ8ãà‰ƒ'N 8xá‰Û˜Oà8xâò‰oœ8xâþàIÌ'nœÀŒãæË(nœ8xãà‰ƒ—Q RãÄ 'P¼qðÆ Ì'nœÀ|áƒ7N¼qÇÁ·qã:xã æoãl4ÎFâŒÏ8ðŒ8ùÀ3N>âÀ3N>ðˆ#8ùÀ#<âÀ³Ž8ðˆ8HÁ3Ngãä3ÎF⌳Ž8eÏ8ðŒcÐ88‰Ï8ƒÙ8­8‰Ï:åBã4ÎFâÀ3<ãä3<8‰3ŽAëˆ3Ž@ã´<â$Î8ð¬#8ðˆ3ŽAâÀ³Ž8ðˆÏ8‰³Ž8­#Î8ðŒ#Bu#Ð8ùÀ3<눓Q>âdÏ8ðˆ“Ñ:ðˆ8ð¬cÐ8‰8HÁ#Î8ùˆ8Bã$Î8ðŒ³Ž8ðŒþÏ:eÏ:‰c8ðˆÏ8âä#Î8ùˆÏ8ðˆÏ8ð¬#<ãä3<âl4<â´<⌓8㈓âÀ3<ãÀ#Î8‰3<ãÀ“<­ƒ<âÀƒP>‰8ðd8ãÀ³Î:ùŒ“<âÔµ<Á3N>âd´Ž8u!d8å#N>㈓@ãä3Ž@ÁƒPFð䃔AãÀ3N>ð 4Ž8ð 8ãl$Î8ðŒ“8­#Ž@ãÀ#N>ð 4Ž8ëˆ8ðˆ³Ñ8ðŒ#N>ã4<ãÀ#NFùˆ3<ãÔþ%Î8ùˆ8‰3<âä#Î8ùˆ“ÏFãÀ#<âÀƒ<å#8!Ï:ðŒ“8ùŒ#8ðˆ(Ë02<ë´Ž&àµïþûðÇ/ÿüôÓ8ð€²Ì4Ùx³L6ìñ†@¦ ùh &’q$â0È8"Žˆ#ãˆ8‚x¬Ã âX<Æ„äCë<Æ!Ž|ˆ1HFÄ|ˆâÈÇ8ò1xˆâ€Ç8Ä„Dð‡@Æx¬câX<Æ!ŽuŒGFÖ!¬£.âȇ8àxŒã<ıqÀcâ<Äaþ„äc 8à1xˆã€B2xˆ#ã€Ç8à!xŒã@ˆ@ÄuÀ!Y‡@Öa|ˆcùÇ8à1xŒC"ë@ˆAò!Ž G>Ä1qÀCãÈ8ÄqÀCY‡8à‘¤d<ÄaqÀ##ÉBà1ˆâ‡@2"xŒCð<Ä‘qÀCùG>Ä|¬âØÈ8Ä!qÀCɇ8ò!xˆC ãÈ8Äa|ˆC ùG>Æ„ÀcG>ÆqˆC ã<Äqä##ðÇ:à1„ÀCù‡@²„þdð@ˆ@Æq¬C âX<ÄŒˆ#ë€BòqÀcâ0È8ıŽqÀ!<ÆqÀC‘H>Ä|ŒCð‡AÆQqÀcâ€Ç86’ƒŒâÈÇ8à‘qÀ##âX‡@Æ!xŒã؈8Öqäcð<Äq!ðȇ82qÀ)âXB "ˆC ãG>Ä!qä!ë0H>à!Žˆˆ8à!ŽuÀCù<’qÀcÉ<ÖaqDð<ÄqˆÉÇ8à‘qŒÇ86"ŽuÀcðÈ<ò1xŒþâX<2"x d#â¨Ë:à1x D â€BÖqˆãÈÔB d0bã€Ç:ÄMÔïÁް„'Laù D ˜2¼±Œ"Äã<@ñ}ˆÂ š<Öqdã€B "ŽqÀcðX‡8à!xŒc#ë<ÖuÀCÇFÄqÀc<’xdâ€Ç:ıql!ð‡@ı„äc#âÈ8ò!qŒ#âˆ82xˆcð<Æuldù@H]|DãØˆ8à!x D 1B²„äCðG>"qDþð‡AÄ1¬CY<Ä‘‘| dùÚ8à1dÄ ãȇ82|Àcðȇ8Æ‘ƒˆ1È:’qÀCãˆ8 2qdùGFÖ!„ÔEð@H>"x D ëÇ8à±qŒãX‡8 "ŽqÀCðÇFÆ!ŽŒÀc<Äqäâ@ <Ä‘q¬C‘È8ౄäC ©Ë8౬cùØÈ:buDù‡@Ä1Ž| âX<Öaxˆë@ˆ@Ö1Ž|Œ#ð<Æ‘x¬CÇ8òxˆC ãØÈ:à1ŽuˆÃ þÇ:Æu Bà!xŒ#â<ÄqÀcâÇ:Ä1Ž|$#ð‡@ÄqÀcð‡@Æ!qÀc‡AÄauÀcG>Ä‘Œ3Y<¦„¬C ã€RÆaqDù@ˆ@Ä!qÀcâ0È:Äqˆ)ð<ÄaqDðÇFÄauˆ##ðÇFÄ‘¤dðÇ8ò!Žq¬CðX‡@Ö!qldðÇFÄ1xŒâ0ÈÔ6²xˆC  8à!ŽŒâŒBàMDçÿ€Ñá ¦ý €˜€ ¸€ Ø€øþ€(€ùÐ Ù° Ó È ÿ°šãš ë â â°â ‘ã â ã ð ë 11â0â ââã°!ù011â04ð ð01ð0â`±ã ð 1ââù ð‘ãã !ë`â0ð0‘ð˜!˜11ë S#ãPâ01ð ð!ðâãùã â°ð0ð ð0ð ð ð0âããþ !‘âãâ°ã ˜1â°±ù ã â0ùâ0â âãPãâ â ëu1ëù0!ëâãù ð ãð ù0ââaã âë  ‘ã`!1â ãâ°ð0ð0ë`ã`ãã â°!ð ð€ð0â ë`ãâ°âââ°ã€â°!1ð0â`ã ë ð0 ã !!1þðãâ°ââã ââ!ëâã`â0!ã 1ð ð ë!ð0âãã°âãâ ëã€ù ðãã ð0ð0u1âã°ð ð0ë âù 11ââPã 1ð0ðâ04ã ù ð0ù0ð !!ð0ëâ âã ð€ðð ð€1ð !!1¢° Œ0u¡ ¦` ¦ÐÿY  ê ÿ þp Ð¡ ’ðê ¨ðê úiÐ0ýë  ° Ó @ãà  ÿК1 ð!!ãâPë ã ã`ãð !ð ð€ð€ð˜1ù0âãâë ð€ð0ð€1ð0ð !âã ââ ã±ã‘ð0ë`ë ð 1ððã aãâââ`â`ãâ0ð ù ããâëãù0âþâ0ðù 1!!u1ù ð !ùã ââ!1ùâ0ð0ð€ð0±±ð ð ð ù ãë ãããã`ãââ ‘ë€ð 1!Qââ!!!ð ð0ð°â0!ãã ãë€ð0ðð0!!ù !ð0ð ùàâ ãâ`ã°â â!ããëëþð ð0ù ã !ë0!1ð ãð0ð0ù ã°ãã ãâ0ùã â ãâù ëâë ã04ââ âãù0ð ù ˜1!ð ù!ëâ0!ã±ð ë ð€ð ð0âë€ë â â ãâã ãã ù ãââ0ë`âââë±âPâââã ãð þ!ù â`âââ0!1!ð ð !  ËÀâëš }` ¦€ ÎA°ä6,%P ËA6ÜÃD°Íá -0Pа H°ÿI°Ë!öÀýÀÐXœÅZ¼ÅÌ!ê ù öÀË‘0`æÀÅË!ê ýÀÅI °lÌûÅIð 6`Ì¡ÀňÜýâë Ó° Ó° â âà 1ë ðù  ðÊš ù0¡,¡œâÊâð0ðþãÊâ°ãʺ¼ð ¡,º˜â0ââ°âÊâ°¡¼º ñÌ!ù0ðâââðÌã Ëâ°ã ëð ¡,ëãð̺,ð ð ùº<ͺ<ð ¡,º<âÊã ã€ðããâÊâ‘âã ºœãâ0ð0¡<âù°ð ð ã ¡,ð ëðÌâÊãÊë0Êâë0âÊã ëÊ‘ã ËÓ,ð˜Ï<¡,ð˜â Ë‘þâÊââãã ëãÊãÊù º,ð ð ð0âù0ð€ò ù0ëÊâ Ëã ºŒº,ºœù ð ð°¡,ù !ð º,Ï<ð0¡Ëâãã Ï‘ãâãðÌã ù0¡Ëââ°º,ëâù ð0ð ð0ââÊâ°ã ð ëâ°×ð€ùÐÔð ð0Êãù ë ð0ëðÌãã ËãÀÝâ Ëâã€ð°ð þ¡<âââ Ëë ËâðÌãâù0ð0ð ëëÊëÀÝð ù Ïã Ëã ð ¡œ ÊâÓœ9Íð ðãâ0ðâðÌã ÏâñÌããÊã€ð ð0º,ð°ãðÌâã Ëââ Ëâ Ï뢀 ŒºŒ£È‰lÃl¾<€U€tŽJðØ` ¶` Í‘äû@°ý€?Àýäûù°ûÐü€{Pò` ~ÀæË±ê š®éäûÿÐÿ ý €ÈýþÀæýÀÅýðì Ì!Ëa¨ ÖàÈýðì ý €Åý°ªûÀÅûP 'õÅF€ ò` .€ÌÁðé‰Êâ Ó0 Ù0 $ÞÓ< Ë1 ãã  ð°Ê ù ð ã°â ËãÊããããÀÝãÊâ𠺼¡,ð°ããâðÌâã Ïâ{-º<ð ð0¡<ù ãð0ù ¡,¡,ð ããÊãÊââÊâãâ ÏÊã Ëâ0ùãâþù Ëë Ï,º,ð ¡¼ð0º,!ãÊãÓÊë ¡,ðÏ<¡<ð¡Œãã¡,ëë°âÊÊã Ëë Ü=ù ù0ð ãð º,ù¡ËããÊâÊÓÊãð€ãëã Ëë ËÊë ãÊâãã ë ð0¡<ð ùÊâðÌâÊ1ë Ëãâããëð ð0ð0¡œð°ð {½â0¡<ò<ëââÓ ãââþ!nÜ:qð oÝ8xâà;¸ž¸|âà‰wPÜAƒãòÁoœAqãà‰OœÁq ŽËgPqãà‰cà©qŒ¢‰Bds°$2õ8BŽÐ†#´ám0CLчt0'äÀ>È1€}üÃP`ÀrÈ€}$Ê °*ÜÁ{ Àÿȇ Ð` #÷ÐÅ>Ô!€}ìãû êá(aì@ꑇTay˜ÀrþÑ#ûÐf>Ø!€|°c=¨‡=4 „|°#pàÏ?ìÜc&þÈ;€†~äÃ0Ç?ò¡4äãýø‡:å°CÚÔfÐ{`ù¸‡.òñÀöÈ€òÁüƒ¨Æ>–CŽì¢í‡ $AÔã¥/Íö±và¦?ª6ûÁ(q€bÓ ¥joÀc øG?4!F‰Bã€FÆqŒƒQâ( <Ʊq0j ÇñÆqä#ðÇ8@%xŒƒQ‡8àŸ‰ãÇ8òÁ¨²äCãX<Æ|À£,ðÀH>à!xˆ#[ë`Ô:òq0JŒ‡ÏÖ!Ž|À#ðÇ8à!F­CðþÇ8òq€J ¨Äq”âÈ<ÆqÀ#ð<ÄQx$kðG>ÆqÀCë`Ô8à1xŒ#â€FÊqä#ëÀ£ÆªqÀcù`Fà!ŽqäCe<ÆqÀ#ð<0q”…Qã8<Ä1Žl­Cã`T­²5xˆcŒ¨Ä1x¬#ŒÂ<ÄÁ(qŒã`Ô8Ö!ŽqdkðÇñÄqäCð<ÄÁ(ŒdKãÈ<ÄqÀcðXFUxˆcâ`”8à±qÀCð(K>Ä‘q€.ðG>0qÀCŒþ<ÆqÀcŒ<ÖÁ(qÀcŒ£Ê’xˆâ€G²ÄqÀcð<0Â(qŒ#â`”8à!xˆc٣Ƒq¤ â`Ô8à!xˆcŒG>ÄÁ¨q€j G>Ì(qÀ#ðG>à!ŽqäƒQeÉ£Æ*q€JŒ£ÊÂ(qäcÙ<ÆŒÀcÙZ‡8òÁ(ŒÀCù<Ä‘-ŒÀcùÇ8à!x¬ƒQâð™8à!F‰cù`Ô8à!xˆcù£Ê²x`¤,ðG‚Å‘-qŒCð<Æ‘qÀ#Œ£Ä1xŒâ•8þà1x`ã€Ç8%Žã‰câ&–ÁŒYÇ(úTž/Ú@Pû±#´GGúÒA[ô¢äÀ>È` 0G>þAŽÀëÅ>´¹t Ø@5þÑ!(áô€9ìT¸c9ýP‡´i˜ãý Gþ¡Ôãä@=þAô¢äÀ> ªüChG?þñüC¨G?–Óåôƒø‡:PþôcJø=`Ž}ü£ûP‡´©h³û`…rÁ{îЦ=`Ž~ìãø‡:Љ˜c9ýØ9þ°Ÿö£)Ø9°Ÿöc¬p@.þѨC=‡ÿrÖ|€b÷_†8’Z+xˆcýøM€ŒÐ„|Fɇq€‡|‡q€‡|xFxÀˆlFFxXFPxX‡ZqH°q`”qÈx‡u€‡qÈq`q€‡qxh@qȇq`”uxFq€‡ux‡uŒ`”xxxxXŸÁF‡l‡uxq•qFq•|ÀxX‡qÀˆãxÈqð™|qXq•uFxx‡u€‡þq`”|Àx‡ãFx¨•uqÈqXx‡|xÀˆlx‡lÉŒ€‡Za”q€‡q€Œ€‡qÀxŸxqÈq€‡|qq€Œqq€q`”|q€Œ`q€‡q€‡qXFFq`”q‡u€‡q€q8žq€q€‡|h@Pq€‡u`q€qȇqÈq8qÈqxXx‡|XxX‡q€‡q`q€‡u€ŒÈŒ€q€‡u€‡q€‡qÀF©PÁˆ|h@x‡Yƒ‡qxÀPx‡u€‡q€‡qÈ–|þxh@xh@qXx‡|ÀxxÀPxxXx‡qÀˆu€‡u€‡q`”xFq`”qÈ–u`qX‡Ìqx‡|xF‡qð™q`q`”uÀxF‡|FYxxxxX‡Ì–u•q`”qqXxP‡lxŸx‡uh@Œ€q€qXxx‡|PɇuPxq`q€‡q`qÈq`”q€‡q`q€q`”‡ˇqxF‡q€‡q•uX‡d`Èq`”uþЄ~ˆ? €åžÛ‡z8‚ò4Oóä‡>°…>Ц| Ør€u€gX4XrqÈŒ¨mʇ(¦|@‡`€èrH€¨„ ø‡}X…€ è…`XŽ|P‡¨ ðPøv€Øu€Øv€~Ц| ‡؇|Ð&v€`‡Ð&r€`؇Ös†p€høvþø‡~ ‡ø‡J˜€~XŽ~øvmbЦ}è8…è‡}X…€ è…PXŽ~Pèvmê‡ ‡Ø‡Ÿ²0‡ ‡¨‡ŸÚ‡þN €SXŽ~Øv€îä¹~‡qXPxo˜JÉJi@q€MXMMXq€‡qXqhÀ|‡qXPŸxx‡q€q€qȇq€‡qq‡|‡l‡l‡q€‡q€‡ZqFx‡q€‡q`”qÈPF‡q€‡qȇq`qÈxÀxx‡|`”q€qÈx‡|Àˆqȇq€qx‡lÁxqq‡|€‡q€‡qÈFÁFxXP‡|`”q€‡q€q•u€qxxXq€‡u`ŒXxÀxxþxx‡q€‡u•|x‡q€‡qÈŒ8qq`”uxXxP‡ÃMFPx‡qÈP‡|Èq€‡qÈq€‡q€‡qXqqð™q`qð™\qÈq`Œ‡|ÀFqÈx‡qÈF‡|`”q€qx¨xh@qȇq‡qÈFxXxxXq€‡q€q`Œxxxȇq€‡q`ŒXq€qPFY‡u`q`q€q‡|`”qð™q•q€q€q€‡qðq‡|€qÈŒ•qÈq€qþq‡u¨•|Àˆ|`”q€‡uÈqq`”q`”uxÈFxx‡q`qq€q`”qȇq€q€‡qF‡|‡q`ŒXŒ€‡q`q`qhÀ|ÀFPxxX‡q€‡q`Œ€q€q€‡qÈq`qxh@xÀxFxFxxÀˆq€q€q€‡q€‡qðqȇ‡|xXq€‡q€‡uF‡qÈŒ`”q`ŒqFx‡|FŸx‡|€‡q€Œx‡uxFxȇZþq€qQXFF™ÝuÐFý)ø€?<äI¦d<èSèƒtè‡å ‡Ør€bÚ‡b €vør€}ø‡~à¹}øØþÐYÈI؇؇ðAH€~`Ð&{€v؇à`(&v€å`x)r€}XŽ~øu€`h‡b2†øu€è‡|°‡À…}ør€PÐ&þÐYÈI؈RÐ&umbèˆÚ‡ðAH€°‡0‡è‡o€~`H‡ }XŽ~ ‡؇›Úcp€p€€…}x)V þ€^€¨~P`ä ‚‡Ù…GYoXoJa”q€Pø‡~ÐxqÐFFÉqxFFxP©xÈq€q€‡qxÀxx‡u€‡qq€q€q€q€Œðq€‡qÈq€‡|Œ€qX‡qÀFxÈŒXq€‡q€‡Ì–u‡u€‡qFY‡q€‡q`qXŒ€‡|Pq`qÈxh@Fxq€q€‡qŸi@xŒXx‡|¨Fqq€q€‡q`q€qIFFɇqXxxqþ`q€qXFqq•q`”q‡|xFFi@xxqÈqȇq8q€qXq`qXxxxÀxxPq•qFxqȇq`”qx‡qÈqqH0qXFxxh@x‡uh@q€q€Œ€‡|‡lFq€qX‡qÀxxPŒ`q`ŒÈ‡qxŒÈ‡qXFPɇ„q€‡q€‡qÈq€q€qX‡q€q•q‡|‡q€ŒÈq€‡‡q€qXPx‡lÁˆþu€q€‡|€qÈ–q`”uh@q•q‡lF‡|x‡|‡u€‡q€q€q€q€q`q`q`ŒXŒ€qÈxx‡u€q€q`”uŒq€‡|‡q•Zaq€Œq€q`q€q€Œ`”qxȇq‡|FFFÁF‡lÁxx4FFYxFxÀˆuxXx¨Ÿ‡uŒ€q•q`Œ€q`”u€‡q`q€‡qFxX‡qÀFÁˆ|Fɇx‡ãYxQøF€„þq€Mxé—ˆ¿4èK脘—ùN°ƒtèSèƒ~ø‡| Ør€}X~È:ÈryÈ}Ї}€(v؃kØtø؇è;Ø€¨‡°T؇€…ø{sX~pp‡¸Nøu€åPXu€|€(r|`ú|Øu€P‡è}¸P‚`Ð&zsø~øøv€|Ц~°ƒ (€zx)v€|Xv€è‡?(€j`z}ø{@…}øXH€Ø€ƒ|à€PÐlP€FXŽ|`†À}؇ØvþЃ}ðŒfp¨‡}`+؇~øƒ†Ö×&v€”ÿ©Z…eÈoXoo¨•q‡u…è‡QFxxhÀuÈŒxãàÁOÜ8‚ Ç)T(Žà8…ëà‰7Ž ¸†ðÄiGPœ¸qðÆÁGPAq AŽ[§QAqðÆÁGpxã4Žƒ7®¡¸u Çå#R¡¸qùŽÓ¸N@­#<ã¬#N>ðŒ<ãÀ#<âÀ#N ,ÃÈ Á’&ÿÈ:+­µÚú·Þ:D%•tÒI%ôŠÇüôaKýÈJNûÀ>³úB@=ä@ @Ä>³Ò“PB;ùüÓ=ì «= 0À§ÈÅ»Çüc ð€ÿ¨#À>ÿ¨#À>ý¨#À¬ýìCÙ0ìÐ:XBFàó:ÈÚÏ?–8BqÐ:ÈšÏ?ýÐsÀ´îó;üÓÏ?ê ë»dþ À>ö|ðî½ü³=-TBô£ŽÿôƒÍ€ü30 ûìóMõÐJNûüÓ9ìóÏ-õüÓ:èz·® Â 2Ëx“7Ùx3¸8ð€J?ÿh"<ãhª8ùŒ³HzÃ#<ãä3<âÀ3<ã€8ãÀ#ŽåâÀ3<〚H Ž#Î8–E Žj>㈳ŽåðŒ£÷8 æ3<ãˆ8 Š*Hùˆ³Hz‹j>âÀ#Î8â€*¨ùÀ#¨#N>ãè=Ž8–ªEâè=<ãÀ3NððŒc¹8 Ž“?<Äq€JðG>þÆ!ˉTù€Ç8à!PTã€HÖ1qäCã õ6q€J <Ä*qÀcð0Q>ÄqˆâHà!Ž|Œ€â€H౎q˜Ho 8@5xäc ¨ò1Ž|ˆTâÞ8à1Ž|Œâ€Ç8Ä¡7qÀcã<Ä‹ÀcùÇ8Ä¡7q€jâX<Æ*qÀCðÇ:à1xˆÇ8Ö¡7qÀcëÐÛ8à1xˆTã°œ8à’|ˆ〇8à!xˆTâЛ8@%P‰â°Ü8ô6qÀcâ°Ü8ô6xˆâÕ8àþ!xˆc 8౎üåcðGÇa¹|Œã‡Þ@qÀcù<Æ!P‰ë•8à1q¬ë€Ç8à‘qˆT •8,P$ð<Æ!xˆT〇8à!xˆ〇8,"½â€Ç8Ä*è-〇8à1P‰â°Ü8Äa9€J–GþÆ!xˆTã<@qˆ±Ü8à!P‰ã•8’uÀcð<Æ¡7q¬ëHà!PTëXGD F xšÐZÓšÖ!°µ­C(B[÷ч¹öCVßÀ?úñþ~ôã|íÇ>fÕxmVûÈÇ?ò±ôc³âŽA«}Ȫ³êÇ>dÕ|xíýøG?ò!«}äã|¥_kåµì£ûøG?¼æµôãVýøG?òñ}ØŠ8†­æq€ Hbì€Z÷Ö~äCVýÕ_ÿ±~ÈJ¶ýØ­ø*«}ÐjÿØÇ?öA«}¤AP+zeµxˆÓ˜F6–18˜T •&Ö*FÀcðX‡8ô6xŒT Y‡8@’qäÃr ‡8à1P#&Ç:@%Žqä Ç8Ä‘äcâÈÇ8à±q€jð<Ä‘þqÀcù<Ö!xˆã•8@%P­âЛ8@%‹ÀCãÈ<Ä*ójðG>Äuˆcð ¨ÄŒâȨÄqÀcðÉ8à!ŽqÀ$ã€Ç8@xŒTâ°ˆÞÄ*¬Cð<Ä*óÁcãÕ8ò!ŽqäCz<Æ|XN〇Eà1xˆÃrã°Ü8@5Žà­ ‡8à‘P‰ãX<Æ!ŽqÀcùG>‚'½âÇ:Ä1P™Oã€Ç8ô&ŽqÀÃDâX‡8@%Ž|€JãÕ8òq€Jù‰EòqþÀC뀇8òqÀCz‡åL*qä$ ¨Ä‘q€ $ð¨ÆuÀCù[¨Ä1Žà‰TãÐÛ8@5qXN Ç8àxŒ#ð°<@2xŒ#âЛ‰@%x¬âÕ:Æq€jðÇ8@%xŒCð<ÄqŒãÈHà!Žq$ã€Ç8òqè $ ‰ÞL4ŽuˆãÐÛ8@xˆTãG>@%x€Doã€Hà1½# 8òqŒâHà1ËY H,¢·qÀcð‡åÄ¡·q€Ê" Ç8à!‹äþâ•8òqèMðG>Ä¡7ŒÃr ‡ÞÆqÀC–³6<@qÀCðG>@%xˆ 8à!ŽŒâŒ<Æ*qhbVÞÿ>øÃ/þñËŠ³ÚG>ö!«|Ü èG>þÑïï£ûU?ÀßñS‚ù ?à÷åC? ¬ôÃ>ü_ÍJ> %0@>x_>ôƒ¬ôƒ¬äƒ÷åÃ?ìøõƒøñÕøåøíìôƒ×€_íÃ?äC?x_?äƒà:€ (¼×4,C6 N6Œƒ8Œ<ˆ(äÃ?h‚8äŒÃ:Àƒ8€Š8ÀH„<ˆþÃ:X„8Ï8€<ˆÃ:è8¬<Œ<ˆÃ:è8äƒE€Ê8ˆ<Œƒ8ÀÃ8€Š8äH€Ê8˜È:€Ä:Àƒ8€J>Œƒ8€Ê8€Ê8¬ƒåŒ¨Œ<ˆƒåX<ˆ<ˆC>Œ<ŒC>ˆ<¬¨¬<äÃ8X<Œ¨äƒ8€ŠEÀƒ8€ H€J>Œ<äƒ8€Š8Àƒ8ÀÃ8è8ÀÃ8ÀC>ˆ<ˆƒÞŒƒ(êÍ8Àƒ8äƒ8Àƒ8äÃ8€Ä:Àƒ8¬ƒÞŒ¨ˆ<Œ<Œ<ˆ<€D>€D>ˆƒÞŒ<€<ˆ<€<˜¨ŒC1ÂÃ8ÀÃ8€ HÀƒ8ÀHäƒ8Œƒ8þÀÃ8Àƒ8Œ<Œ<€¨ˆ<€<䨀<ˆC>¬ƒÞ€<Œ<äÃ8£8€ŠùÀC>ŒH¬Ã8ˆ<ˆ<¬ƒåXH€Š8ÀÃ:ŒH€Š8èÍ8Àƒ8XŽ8ÀÃ:€Š8Àƒ8ÀÃ8ÀÃ8€„ÞˆƒÞ˜¨X¨Œ<Œ<ˆ<äÃ8ˆÃ8ÀÃ8ÀÃ8Àƒ8Àƒ8Àƒ8€Š8€ŠE€Ê8ˆ<äƒ8è8ÀÃ8ˆC>ˆ¨äÃ8ˆÃ:ÀÃ8ˆƒ(Žƒ(Žƒ‰Àƒ8ÀÃ8ˆ¨äÃ8ˆ¨ˆ¨€„Þˆ<¬Ã8XN>ˆ<Œƒ8ˆ¢8XHÀƒ8€Š8XŽ8XN>Œ¨€¨€Dþ1ŽC>ÀÃ8ÀÃ8ã8äÃ8è8Àƒ8Œƒ8¬ƒÞ¬¨€<ˆƒåäƒ8ÀÃ8ˆC>ˆC1æƒ8ÀC9Àƒµé8ŒƒÞŒC>ŒHäƒ8€Š8€Š8äÃ8èÍ8ÀÃ8èÍ8ˆ¨ˆ¨˜¨äÃ8ˆÃ8èM>X„8äÃ8ˆ¨ˆ¨Œƒåˆ¨ˆƒåˆÃ:ÀÃ8èÍ8ˆâ:„€(,#<ˆ<ˆ„_?ÈJ?üC?à>À䲃‚ø}_>ôÃ>ôÃö¨†_?ü¨þ¨8Àƒ8Œ2LÃà,©7ˆÃ8€<€þ‚¬hÀÃ8ÀÃ8ÀÃ8䨈¨ŒƒÞäHèÍ8ÀÃ8ÀÃ8€Ê8Àƒ8XHÀÃ8ÀÃ:€Š8Àƒ8£8èÍ8¬ƒ8ÀÃ8Àƒ8ÀÃ8äƒEÀÃ8Àƒ8ÀH€Š8Œ<ˆ<ˆ¨Œ<ŒC>€Ä8èÍ8ÀƒE¬ƒ8ÀÃ8Àƒ8ŒC>Œ<Œ<Œ<ˆC>Œ¨ˆ¨Œ<¬ƒ8X„刨ˆ¨ˆ<€„EÀÃ8ÀÃ8ÀH€Š8Àƒ8Àƒ8ÀHÀÃ:Àƒ8|•8€Ê8èEÀƒ8Àƒ8¬<¬<€„嬨Œ<Œ<€„ÞþŒC<ÂÃ8ÀHˆ<Œ<Œ<¬ƒ8äÃ8è8XŽEä<ŒC>ˆƒÞˆƒÞŒƒ8ˆâ:ˆƒÞŒ<¬ƒ8Àƒ8è HŒÃ:ˆÃ8èÍ8€Ê8Àƒ8äƒ8ŒÃ:ˆ¨ŒC>èÍ8ÀÃ8€ HäƒÞŒ¨ŒC>è8€Ê8ÀHXŽ8ÀÃ8ÀÃ8€Š8ÀHXŽ8ŒƒÞˆƒåˆÃ8äƒ8ÀHÀHÀÃ8¬ƒ8ÀC>€<ˆ¨ˆƒÞˆƒÞŒC>€<ˆ¨¬<ŒƒåˆƒÞX<ˆ<Œ<ˆ¨Œ¨€<Œƒ8ÀÃ8äƒÞˆ<ˆC>Àƒ8ŒÃ:ˆ¨ˆ¨ˆƒÞˆ¨€<Œ<Œ<Œþ<ŒC>Àƒ8Œ<ˆƒÞäƒåŒ¨Œ<Œ¨ˆ<Œ<ŒC>ŒƒÞˆƒÞŒ¨ˆÃ8Àƒ8Œ¨€<Œ<Œ<€Ä:ˆÃ8èÍ8ÀC>€Ê8ˆˆ<Œ<ˆ<ˆ<Œ<ŒC>ˆ¨ˆ<ˆÃ8€ Hô+<ˆ<ˆ<¬HÀÃ8Àƒ8Àƒ8Œƒ8Àƒ8„€&,# <ˆ<¬ôðò•±_?)_ ©l þi?1GqŠ<¬Ã(,Ã2dÃ2dC6ˆƒ7ˆÃ8€Š8€B?äƒ&ÀC>ˆƒ&Àƒ8ÀÃ8€„(ЍŒƒÞŒ<Œ<¬Ã8ˆ<ì:ÀÃ8€JÀƒEèÍ8Àƒ8Àƒ8€ Häƒ8è8XŽ8ÀÃ:ÀÃ8ˆâ8ˆƒåŒHè H€Š8¬ƒ8äÃ8€D<æÃ8Àƒ8€Ê8äÃ8ˆÃ:èÍ8¬8äƒ8¬¨€<ˆ<€¨€<Œƒ8ÀÃ8è8ÀÃ8ÀC>ˆ<Œƒåˆ¨ŒƒåäÃ:Àƒ8Àƒ8XŽ8Àƒ8èÍ8èÍWÊ:è8ÀÃ8ˆC>€„å¬ÞŒ<Œ<Œ¨ŒH€Š8þÀÃ8äÃ8ˆ<Œƒ8è HX-‹<ŒHˆâ8èEˆÃ:ÀÃ8€<ˆ<ŒC>ÀÃ8ˆ<Œƒ8€Š8€Š8€Ê:€Š8XN>Œ<äƒ8ŒCÀƒ8ÀÃWÁƒ8XŽ8¬Ã8ˆÃ8€D>Œƒ8€Ê:ÀÃ8Àƒ8ÀÃ8ˆÃ:ÀÃ8ˆ¨¬Þ˜¨€D>ŒC1ŠƒÞ€<ˆ<ˆƒåˆ¨ˆ¨ˆƒÞˆƒÞŒƒåˆƒÞˆ¨ˆÃ8Àƒ8£EÀƒ8Àƒ8Œƒ8€ŠEäƒ8èM>Œ¨ˆC>Œƒåˆ<€Ä:ÀÃ8XŽEÀƒ8èÍ8€Ê8€Ê8ˆ¨Œ¨ˆC>Œƒ8€Ê8ˆ<Œ<äÃ8Àƒþ8Àƒ8˜8Œƒ8ÀÃ8ˆ<€¨ŒHÀÃ8€„Þˆ¨ˆ<Œ<äƒ8Àƒ8Àƒ8è8ÀHXN>Œƒ8Àƒ8ÀƒE€¨ˆC>Œ¨ˆ<€<ˆ¨ˆ¨ˆ<ˆC>Œ<€D>XÄ:èÍ8ÀÃ8ˆƒ(Šƒ(Š<ˆ<Œ<äÃ8Àƒ8c>€„Þˆ<€<¬<Œƒ8XNÀÂÃ:ÀƒEèM>Œƒ8èEˆ<˜¨Œ¨ˆƒÞˆ¨ˆ<ä<Œ¨„€( #€Þ€Ä(H±‰Ÿ8Ч¸Š¯8‹·8ÃÃ:À(à “–ƒ7X„8À(ÈŠ&ˆÃ8Àƒ&€Š8䨈<ŒƒÞˆþÃ8äÃ8À-ÃÃ8ä<ˆƒå€<ˆƒÞ€¨Œƒ8äƒ8Àƒ8€Š8€Ê8€Ê8ˆ¨Œ<ˆ¨ˆÃ8äÃ8ˆ<ˆÃ8ä<Œ<Œƒ8䨈ƒ(Š<Œ<¬ƒ8è8Œ<€Ä8¬ƒ8è H¬ƒ8ÀÃ8ÀÃ8ˆC>XÎ:Àƒ8Àƒ8Ä£8èÍ8䨈<ˆ¨€„E€ HÀÃ8ˆ¨€<ˆÃ8ÀÃ:€„ÞˆÃ8Àƒ8èÍ8ˆ<ˆ¨€Ä:Œ<Œ<Œ¨€<ŒƒÞˆÃ8XÎ8€Š8ŒC>€Ä8ˆC>ˆ"HÀƒ8Àƒ8ä<ˆÃ8£8xð8ÀÃ8ÀHÀHÀC>ÀÃ8Àƒ8þˆ¢8Œ<ˆ¨ˆ<ˆ¨ˆ¨ˆÃ8Àƒ8€Ê8ÀÃ8ÀÃ:ˆƒùäƒ(Šƒåˆ¨ˆ¨ˆ<䨬ƒ8€Ê:ÀCÀÂÃ8äƒÞˆ<ŒC<‚D>ŒƒÞ¬ƒ8Œ<ˆÃ8Àƒ8Àƒ8XÎ8è8X¨Œ¨ŒC1Š<Œ¨Œƒ8èEÀƒ8Œ<äƒ8ÀƒEÀƒ8XD>ˆ¨ˆ<ˆƒÞ€Ä8€Ê8ˆÃ:ˆ<Œ<¬HŒ<ˆƒ(ŽC>ˆˆƒÞŒ<ˆ<€<ŒC>€ HèÍ:ˆ<€D>€Š8ŒÃ:ˆ¨ˆ<¬C>ˆ<ä<ˆC>Àƒ8èÍ8䨈ƒÞˆÃ8€Ê8€ þHX„ÞˆƒÞˆ<ˆƒåˆÃ8¬ƒ8Àƒ8€Ê:äƒÞˆ<¬HŒƒåˆ<ˆÃ8ÀÃ8€Ê8€Š8èÍ8äƒ8ÀÃ8ˆ<”<ˆ<Œ<Œƒ8€Ê8ÀƒE€Š8ÀHŒÃ:€<Œƒ8Œ<ˆÃ8¬ƒÞŒƒ8Àƒ8XÎ8ä<ˆÃ8ˆ¢8ÀÃ8äƒ8Àƒ8ÀÃ:ˆ<Œ<€D>€Š8ä@ˆOð‚'ž@¬âà‰ƒ'nÂ|ðÆÁOXxá „7žÃ®ãà‰C(P BqÅ9—UÜ8q]ÅeOÂ|ãàgöÄA(„ÖgxÄAÈ!qG„ÄAÈ¡qÖAhxÆÉJœuÆ!GxÄÁJ xÆA(ŸqàÉg¬Ä!qþà¡|Ägà‡ÄAhàqà(ŸqàÉÇ!xÆÉG„ÄÉgxÄéJ ¬Âjq²Êg„ÆgxÄžqÄÉgxb¯+qÖq+‡ººž|ÆAh„ÄYžqÖžq°G uàq°žqÂ*Ÿuà¡qà'«qàqºhxÆAh¬òGœ®ò'qàžqžuÆG „ÖÁJ |Ægò¨«|ÖÁJx‚G„ÆGœ¬Æ(Ÿqb/+žq°!‡Äg°Æg¬ÄGœ®Ö A”eqàYgœþQúÉàƒNXá…nØá‡!ŽXâ‰)®Øb…ûhP¦éxo²ñFoh4GœuF!à!²g¬ÄAHœqàq+qà¹+q°'Ÿqr(qà§+qÆ«u¡qòAhxÖGœqÄgœ|à¡qÖ+qà'qÆGxÆYG¬ÄGxÄ«qàg„ÄAH¬ÄAHœqžuÄ¡qàq(¬Ä¹žqàqº+qžqàY!qg„Ê'+‡'« b¡qàçBxòÁJœ|Êgx.ÌGþxÆñ®«|à‡àÉ!BhxBHœqÖgxòÉÊ¡uqÆGœqò¡qòAHxÆAHœ|ÆqäC XBćäâ€Ç8²"‡¬CãX‡8à1„ˆcX‡CÖqä,âÈ<Ä1Ž| DÞÇ8Ö!xˆcðÇ8à±qŒ!ã€Ç8º"„ŒãÈ<ƇÀCð<‚qÀc뀇8ò‘qŒâ€Ç8ò!„ˆ#â<Ä1x¬#âÇ:ÄŒ+ãÈÇ8ò1xˆcâÈBÆq DXG>"ŽqÀþc 8à1Ž|â€Ç8ò!¬ŒãBÄŒ#â<Ö!xŒã‡CÄ1¬‡8²2x¬CãèŠ8òu`eð<Ö1éÁCãȇ82x!ëÇ8ºâ¬8!â€Ç8²2Ž|ˆã€Ç8à!Žqˆcù<Ä1¬âX‡8B ‰e0b<Ö1Š~x„ 5èAšP….”¡ uèC!Q‰N”¢µèE- ŒâýèG>þ±‚öƒ  ðˆ&౎qŒÂâXæ8Ä|ˆcâ@È8à!|ˆÇ8Ä‘qÀCþX‡@à!xˆ#〇8°"Žq $ðp<ÄqÀcðÇ:öÀ#ð‡8àᬈâG>Æq Dð<ÄdEð<Ä|8G>Æ!ެˆcX<ò1ÀcðÈÇ8‚qÀÃð<ÄqäcY<Æ!xˆ〇8Æq d]<ÄqÀcG>ÄqÀcâȇ8à!ެ!âȇ@qÀc‡@ò!uÀcÁÊ8à!x\Hë<Æ!Ž|\hɇ8à1qdeðBòᬌ#þâÀŠ@à‘qÀC‡@Öá„°ã<Ö•q`EX‡8à1Ž|ˆÃ!aOVò!„äcVqÀ#â€Ç8à1xŒCð‡8౎qÀCë€Ç8âq\ùGVò1xäcðXG>ÆA qÀcðGVسŽq$âèŠ8°"ެë€Ç8à!xäCÇ:àáxŒG>Æ!ŽuÀCBò!Žqdâ‡@à‘‡ÀcùGVÄ1„Œã€G>ÄqÀC ëÈÊ8Ä‘•qˆ#ÉŠ8"ŽuÀCðB’xˆ#ðþX<Äq DðB‚|ˆcð‡8àq!xŒìɇCqdeBÆqteðÈÇ82qäCð<Ä‘q DùBÆ‘q D ù<òq¬#+ù‡8°"x¬!!2xˆâ‡&ú±P‰Oœâ·øÅ1žqoœã÷øÇ3ŽMüCòˆÇ:Ö1Ÿx£c»…G4qÀCùÀŠ8Æ!xŒâÈ<.q`EXYBÄ‘xˆ뀇8â|teð<ÆŒ#‚‡8ò!xŒ#ãȇ8"Ž|ˆ#+ëþG>à1Ž|ˆã€Ç8°"ŽuˆVÄq`E〇8À²qäC<Äq8ùÇ82Žuˆ!Ç:ÄqÀcùVuˆ〇@à!xŒ!â@ˆ8à!xŒ‡8°"„Œ!âpBÆq D ðX<ÄqtEã€Ç:²Ž|!〇8À2Ž| D〇@à1Ž|ˆ#ðG>à!x¬Cðȇ8à1„Œ#ðÇ8àA BÆaÄÄaàAÆÄ¡+ÖA°bò+Ä!Æa™Öaà=ÆAbàAþBÆ!Äa²bàaàaàAÆaÄÄÄ!+ÄÆaàA B B°B°B ÆÄ!àAòAÆaÄ!ÄaÖAÆaÖAÀB òaB°bò!ÆÆÄa²BàAàA °bàAÂ!BbòAàA²bÄ!+Æ!ÆÆò!Ö¡+ÆÖÄaB B B Äa²bàaÄaòÖ+¢+Æ!Ä!Æ+ÆÄaàA– Ä!ÄÁ!àAàAbòAàAþ²bÄ!BàaÄaàAÆ!"ÄÄaàaàAÆÄaàAàaàAòaB ÆÆÆÄaàa°bÄÁ!°bàA¼Ä!Æ+ÄaÄ!Fa!àab4ä4r#9²#=ò#A2$%ΣàaàöAâ$\r~þa4aÄ4Áàaà!ÆAòaàÁ!Ä!²bÄ!ÆÆÄ+Æ!".Dàaòa"ÆA°bÄ!Æ!ÆÆAÖAÆÆ!Ö+ÆAÖAÖþaÄaàaÄÄÆ!+Ä!òÁ!àaàaàa°"ÄÖÆÆAbbÄ+ÆòAàaàA àAÀ"Ö+Ä!ÄaàaºbB°B"ÆA¼C ²BÆ!‚=à!ÄÆØ#+ÆaBàaÄa"Æ+Äa°BòA°bàaàAÖÆòA°BÂ!ÄaÆ!+ÄaàaÄÆAàaà!Æ¡+Ä!Ä"+ÆA°bbàaÄÆA °bÄ!ÆAòA°"àaàA þBà!ÆAà!Ä!Æ=àaBÖÄ++Æ!Æ!+Ä+Ä!+Ä!òAàabàA°bàA"Æ+Æ¡+ÆAbÄÄ!+Äa"ÆA à!ÄÆ!ÆÄ+ÆAòAàAàAbbÄaàa°âBB àABÂ!àaBàÁ!à=àAàa¼C"àaà!ÆABàAàAàaÄ!Ä+ÆÆÄ!ÆÄÆÆA àaà!Æ+òabàaàaàaàAþ²"Ä!Ä!ÆAÖÄÄÆÆÖÆ!ÄòÁ!òAÆ+ÄÄ!!Ä!ÆAàaBbòAòAÆÆòAàaàA à!Æ!Æ!+Ö!DáaÆÖAàADRâú!LÁBödQ6eU6e= Äa@aä!+ÖÁÆÁ'–a@Á#4!ÆAòA !ÆABàaÄ"B àA àaòAÆA òa°bÄ!Ä!ÄaÄ!ÖA°Bb!Æ!°BàA àþabò!+Ä!Æ!àABàÁ!bàaÄ!ÄÄaÄÁ!àaàAòA àAbÄ!àAÆÄÁ!BºbàaàaàaÄÆ!Æ!ÖbàaàAàAàAÆ+¼Ä!ÄÆAÆ¡+Ä!ÄaàAò!+ÖÄ!Ä!+Æ!ÄÆ!òÁ!ÖA Æ!ÄÆAàabàA òAB !Æ!ÆÆ!BàA Æ!Æ!àaòÆ!¼Ä!ÄabÀBàaòA òÄþ!ÆÄÆ!B"àAàAàabàÁ!òAbbàAbàAÆ!°‚=ÀB°BÆÄÄÆÄ!Æ!Æ!+Ä!ÆÆ!ê+Æ!bÄ!Æ"bBbàAàaòAÖA°bB Æ!Æ!+ÄÆ¡+ÄÄÁ!ò+Ä"Ä!Æ¡+Ä!ØcàA °BòAÀBàaÄÆÄÆÖA ÆaÄÆ!Ä!+ÄÆÆ!Ä!Ä!!bò!ØcþØcÖAàA àA òA Æ!êvàa°bòÆ¡+ÄÄ!bÀbòAÆòaÄ!Ä!+Ä,Ä!+Ä!+Ä!Â!ÖaàAàAØ!ÆaÄa°‚=àAÖAB–@ àA 4ae ªþÁlÁJÀ¢A:¤E:¤óÄ@aò!ÖaÂ%½a~þ!4B"àA²B²B òÁ!Ä!Ä+ÄaàAbÆ!àaàaÄ¡+Ö!ÄÖ+bÆAºBàAòABàa°þBÖ+ÄÄ!ÄÆA òÆÆ!+òÄ!Æ!+"àaB à!ÄÄ!ÆÄÄ+Æ+ÄÄ+òaàAòaBàA àA àaàaàa"ÆÖÆÄabbà@àAòA²bÄ!Æ!+Ä!ÆÆA bàa°"ÄÆA àA àaÄ!òaàAÖaļAÖAÂ!à!ÆÄ!ÆÆ!bÂ!ÀB BÖa"ÄÁ!àAbþàaÄ!ÄabòAÆAÖ!+ÆÄa¼cÄÆÆÆ!Ä!ÆÄ!Ä!Æ!ÄÆÆAàAb"ÄÄÄ¡+Ä!ÆÄ!+"Ä¡nóAÆ!ÆA BÖÖ+ÆÆABÖAàÁ!Ä!ÄBBà!ÄaÆA ²bàaÆAB²B BàAàå°bàABàA bÄ!+òaB ²bÄ!+ØÄ+ÆÆ!Ä+Äaàa°b°BÖ!+Ä!Æ!òÁ!Ä!þÄaàAàabÆAàaÄÄÄÄ+òAbàA ÖÖÆAb°BBàaàAbÄÄ!ÆÄÆÆ!ÖÖ!ÄòaºbòaàA ~1D!ºB::ŽÁLÁ Š`ìþ ä ªáîAЀ ~ Jœá J`D’8`¤q>ç àAF¡JbV.¦a@Á#4çáAêVx^àAx^ ˜~‚éµÖAëÅéÅÁ!àaòçÅÆÆþÆ!ÄçÅÆÄéÅçÇA˜^àax^x^àaÄçÅax~àaàAòçÇÖÄçÅÁ!x^´~àaàaxÞ!àA´~´^ ÆéÅAëÇÄaëáA ˜^¶^¼ÄaàaÄÁ!`Ä!bòÁ!ÖAàaàAx^ àAÆÄá÷ÇçÇÆç×A`_˜^àA´^àA bàaòçÅçÅaòA˜~ÖA àaòÆ!´~òAbÜ:qâà‰— 8x ác(nœ¸q Å5l(nœþFxùÄ1Oq æc¸ž¸†âÆÁ#ÈPCqãà‰c¸Ža>qãà‰c(®¡8xãàƒ'Á|ŠËoÃqùÄ1ÇpCq Ń·®®8xâÆ1W—á8†ëài„'nCqÅËO<ëÄ]O!¼qðÄEfHá8†ã®ƒ'®á¸‹âà‰WWã¸|âà­ƒ7Ž!A†ãòÁ#o\]qÂቻÞpNýô³9ì³Ï=P0ðO?Ï`N>©$PO…ý¤ÀøÜJ ûl8a?öÃä…ì°O”V^‰e–ZnÉe—^J<뀲<ò„ OyÓd3Í/ üÓÏ(㬳Ž&â )<â„9šãÀ3šÁ#Î8â„)<ã 9Ž8aŠ8ëhÏ8åÁ#Î:ðŒæuhÂ3N˜×Á#<ã„9<â„)<âäÏ8âÀs<âÀ3N˜Â­sšãÀ#N˜ãÀ#<ãÀþ#<×å3<ëä#<ãÀ3Ž8aŠ3šùŒ#ΧðŒ#N˜ãÀ#<㈃æ8ÞŽf>ãÀ“Ï8aæ#<ã|:<ã„)<סy<âx›8ðˆƒæ8â„9Nyùˆ3šãÀ3Ž8aŽ8ðˆƒ¦8ã|š8ðŒ#<ãx+Î:ðˆÏ8â|*Î:㈳Î8âÀsÝ:ðˆã­8ë )<ã\8ðä8ðˆƒæ8â ™8aŽÏ8ð\8ÞŠƒ¦8ðhTÞ§ã„y]>âx¦8aŠÏ8ðˆ³Ž8ð¬ÏuhЦ8ëÀ#<â )<ã„)N˜ùˆƒæ8aŽO>â„9<ãþˆ3Ž·â -<â„)N˜‰Ï8ðŒ#<ëŒs<â¬Ï8âä3Ž8ãÀ#šâÀ#<åÁ3Ž8hæ3ÎuhŽFùh$<âä#<ùŒ#N˜ã )Î:ãÀs]>ã„)N˜âx›8ðˆæ8âÀ£Q˜×å#<âÀ#<㈦FâÀ3šãÀs<âŒ#Ž|\gðG˜®ã-q¬ãSù<ÆqÀ#âð–8ÂtxäCðǧÄq MÞǧÆ!ŽO‰ù‡pà!Ž|hDð Ó8à1ŽëÀC#ðÈ<Æu„@Ë`ÐtQ|IBø¢´yÀ,`þÁ§ø~ôÁ¦˜P?þAŽìCø9 }#ÿèÇ>ì€z( û¨?@½èêÀ„ØA€¨CÀØ!€?Tàÿð #ìãê€%8@ Dã@$p ‰r”¤,¥)O‰ÊTªr•¬lå*óu¬ý€G>Â$ŽqxÃâ˜Æ4vŠôCâX‡8FqÀch<Ħòˆ#Lãȇ8Æ|Àã:ð(Fò&qÀCðX‡8ò1Ž| IhÇ8Ð$Žqˆâ‡·®qäCaš4’´Áã:aG>Ä&qÀã:hºþš®q„i 8Æ&qÀCðG˜®£xˆ 84’xˆâ<Æ‘4•ã€Gy4’oÀã:ãXG˜Ä¡qÀCa‡·Äqxkð‡FÐ$œ|ÀcâÈšÖqŒåÉ<Äë|Ja<Ä1x¬ãÈG˜Ä1xˆ#Lë@Ó8òq„IðG>Â$Š#LãÓ8à1Ž0#aG˜Æ&q„I#ù€Ç8Ä1ŽuÀã:뀇8Ð&ŽO‰ãSëÈÚʃ¦qÀCã€Ç8zo‰ãSâ<4¦qÀcaG˜Ä‘ëÀcð‡FþÐtx\G#ð‡8òq4‰ãG˜Ä1qÀCð<Ħq„IðG>®¦qämâ“8àq0iMâ@“8ò&¬Caº<®“qŒCù€‡8à1xŒcâ€Ç8à!xˆMâø”8à!xˆ#LâG˜4‚&äãȇ8>54‰ãÈG˜®“x”ãȇ·Äu„iãȇ8Ð$4‰#L FÖq|\g뀇8à14ãSã“8Â$Žq IðǧÄ1xŒâÓ8à!4‰cðN>Ä‘qÀcâÈG˜Ä±qŒ#aG>Äþ!œ|¬C!ÐÄ21€qˆ#LëЄ+E À”ýØ>ŽÐ†#¡ GhCŽ@S˜ÂÊ9°v äÀ>òq(¤@Bûà‡ Àƒ~ŒR0…ú¡ü£ÿ`ò¡Ž ¡ÿPÇà° ûðÇ ”u  4ʃ òÁìãÑä.·¹Ïnt÷Cë(ú|ˆ#LâØe6²1_ŒBBšG<Ö¡‰0‰ã€ÇuÂ4oCa<4‚¶|ˆC8h‡8Öñ©q\ùšòqÀ#â€Ç8à14‰cð<ÄqŒCù<Æ!þxˆMâ€Ç:>%4]'L 8¼5Ž0‰M〇8Ð$4åChG>4‚¦|ŒCë‡8Æñ©ë Ið‡8Ð$Ž0‰ù<Ä&qäCãšÄ&\'LâÓ8à!Ž|ˆC#â€Ç8à1xŒ#Lùš4q Ið<Äñ)qÀcðÇ:Æ!xäcð¸<®3q¬câ€Ç8Â$ŽuŒCa<Æq0‰câ€Ç8ò1q„Ië€Ç8Â4Ž0#LãG>4"xˆchG˜ÄqÀcâÓ8Ä&á\gð<4â­q„iðÈÇuà1þxŒãð–8Æ!xˆã<ò1âãââ×âë€&â&â&á-ù°ð ð°hrðpa"ðð0Þ2ð ð h2hrë â0â€&ãà-בãã€&ã‘â€6â&ãâ&ââ€&×â&ã€&ãã€&ãâ&ù â‘â â&ã ð0a"h"ë a²Ÿrë ð h²h"ëâ€&!a2ð0âã&ë&ù0arð ðpð ââ&ãþù0â&×ã arù a"ù a¢a2ù ð°ð0â€&Â&â°ð0ð0ð ð ëë! ÈÀð°ë0£Ðæ¥ô"õpàmàpéжÐB°ê ÿ@Ð’XÇ@Jäõ°Âðýðì ÿÀPÂPÿöæ°ý@ ðìõ !êPÿ Ðÿ°éf’'‰’)ÉJñ ð û h"Þ »ä Ó°  ÿ ð0ð  ð a"þŸrŸ"ùã€&âãããëëâãã ð ð0ââ0ù€&ë ã Âã×&â&ãâ€&âëpù0ùâãâ&ë a2ð Þ2a2ð ù h"ð Ÿ2a2ð°ð â0ð°ãã ‘a"ð h"h#a"h2âã°Ÿ"ð ù×&ââa"a"ð ãë&âð)ââ ë ã€&ââ&ãã€&ãâ&×&âþãâ€&â&ùãðpð ð0ù&ã&â€&ãù×±ââ0a2ù0ð Ma"ð0âh"ð°a"a"ùparð ù ù&ãâââ0arðpã°a"ù Mð0ð ãù€&ãð0ð arh#h2ð ð0a"ãâ&â0ð°â€&ãã Pãââââ&âãã&ã€&ãâùâ0ð ããà-åãâëâ0a2ð0ðþ0ââ€&â På×âââ&â ù ð0ââ0a’ð0ð arãâ0h"ù0a"ð0h2ù ã&ãââãâ&âð ð°âã±â0h"Ÿrùã&×1ð ð hrð h2ð0âã&ãâ×±ð ãâ&ââââ&ãâ0ùð)ë ð !0 ¿À0ðpë0 ý`n !€Jû i5k³ûжÐB°ê þÿ@°ÿÀPý !Å@‚Àû0Jêæ°¢0!ì@ÿ ÿÐê ²êP ðê Òê ÿÀ ’w‹·y{’ð°ð û Ÿâ âpoÙ0 » ÿК㠚&ââã h¢âqð ð0âââãâ°ð0ââð)ù0ââ°!a’ð ðãââ°h2arëã h²a2â a"a2ð0ù ù0ðpa2ð0ð ð0בâ0þë a"ð ð0××ã&ù a"ð0ù0â×±ñ)â0h¢h"a¢ð a"a2ð0ð0a2h¢a"ð0ð0a2ð ðã&â€&×âù a’â0âð)ã ð ð0ðpa2a"ð0a"a2ð0a2ë0â°h#ë0×â€&×ã Pù0ð ãpÞ"a"ð0ð0arh"a2h2h"ù0ð ðpð ð0ðph"a’ãããð)âââÂþâ°ã h2h"ã h2ð0â€&â€&â°ð ð ð0ð ð0â×ããããâð)ããâ€&בâ0×&â&Â×ùpð ããð)×&â0ð ðPù0â!ð0ð Ÿ"h"a"ð0h#h2a2ð ð0ð0a²ð ð qa"a’ã×âãPa"a2â°ð ðpùPa"ù0ðpa2a¢Þ"ð ù0ðã€&ã Ÿ²ã ð þa’ã€&ã Pã&ãð0ð0×±ð a²a’â&ââëãâ×â°â0ââ&Ñ¢° Œù a²šÐæÿ¨´xÀ×}í×xЦÐÎ !ù@°ì ý@°ò °ÿà€ü O@J €Òôûðû@ðì °BТÄ0!ê ÿ  ·»ÍÛ½]J/2ù £ðò â×a“¾´   !š°âš0â€&ãhrù&âa"Ÿ"ð ðPþa2ùâ&â Þ"ùâ a"ã ш&ã×â&ëâ&ãÑø)ù0a"ã×1a"Ÿ2ùpa2ù&ë&ã×1h2ùà-×!ð arë Ÿ²âã&âââ0ùpã&âââð)åâ0ùpð0ð0ùpa2a"ðpa2ðParÞ²ð ù&â0âŸ"Ÿrh"ù0a"ð ããâ0ù&â0ð ã&ãa2a2Ÿrãâ±×þù€6â&â€&×1h"ã&ãëãâ&ãë a"h#h"ã&ãë ð ð ð0h2Ÿ"ù a2ùâ×ããð0ð0ùpð ð ð ã€&ãâ&×&ãð a2ùpð ã ãâ0âââ&âð)ë0ù€&â&ã⟲a"ð×&â€&â ©ð a"ùââ&â0a"ã ð a"ã&â0h"ð ð ù&âãâë&âþëÞ2ð°â€&âãŸ"ð 㵟"ð°â€&ã×1ù !ð ð ð°â0ë ããð ð0ð0ùã&ãâ ð ããã××1ðpù Pë ð0a²ð°a"a"Ÿ²ðŸ"ð !  ËÀ&Ѹšpn©ÔxÐ «Ïú¬oéжÐûðû@Ðê ý@°ýpPùðXýðì0Ç0!ù !© {€ò° 5Ð ýÀ?@ÿÀ0!ì þB#.Pà°èÀ ÿ ðýê û``¾ÿù·/2ë° ûòɃWPœ¸lâ–MÛ*_?MÅ*(ž8xÞà‰+8Î#¼uðÆ'®àI”ãÄ­;9ž¸|áƒ'žGxâ Ž;¹n8xãÄ¡<9îäÁƒðƉƒ'nÜÁ‚âÖ¡O\ÁqâÖOÜ:ëà‰Ë7®`¾qâà‰ƒçQÊ|âPŽ+¸ŽhÁqH‰Š;™o\ÁqðÖÁOJqðÄ<Oܺ“ãò$:NÑq'ÇÁ'n\Á|ãày/<âÆ‰ƒ'Þ8”ã Ž;XP<¢¶qäcmë<Ä¡6qä 8Ö&x¬Cã žGà1µ‰âðÈÚ²6qÀCð<ò!xˆ#j[‡ÚÄqäcâ‡Úƃäãsã€Ç8à!xˆCmQÛ8à!޵DmÇ8Ô6µyâ <Äq¬mù€‡8Æ‘qŒ#âPÛ8òuÀcù<ÄqÀcù€Ç8àxˆâÇÚÆ¡6qÀCãXÛ:ÄuÀã „Ç8Ô&µ#âðH>þqÀCjÇ8à±xŒâX‡8ò1µ­CùøÜAà!ŽqÀcj<ÄqÀCk<ò!µ$HG>ƃhpj‡ÚÆÒŒcâ ž8Ö&x¬#ðG>àAxˆcmã€G>Ä1ê‰cjG>Ô6Ž|ˆ뀇8>'xDmâ<Ʊ6q¨Mð8<ıq„`Ë`Dƒh"jOëǬjÕ"XµVýG¼ºv}Cý k¼úñ²¶«ôÊÇ?òÁ®~üƒ¬ûØÇ?èê®~À‹¬ýØ»ò¯~°«S%la {XÄ*mâX‡8@ñxþÈâ€ÇA²‘iLã øG>4¡6ohBðÇ8>7q¬ã8ˆÚò!µ‰#ð‡Ú<"ŽuŒCðÇÚÆuÀCðÈÇ8à!ŽÏ%wâPÛ8Ôvµ‰CmI®GÔ&µ‰ã€ÇAÖ&xˆ#AÊÚÄqˆCmë€G>ı6qÀCððRà1ŽäªMj‡ÚÄq¬ã€Ç8¢¶qäCù<²Žƒ$7ã<ÄqäcŸ;ÈÚÄqˆù<Æ¡6qÀã j;H~ó1xˆ뀇8ò!ŽqÀƒ4âPÛ8à!޵åck‡ÚÄq¨þmðÇ:à!µ‰cmë8HrÇ!ŽuŒCj‡8à1µ‰CmùÜ8Ä‘qÀC¤Ç8à!ŽÏ#¹ã‡ÚÆ|ŒCm〇8ò1Ž|ŒCmâ€G>à1q$WðÇÚ<qÀƒ4Y›8Ö!x$¹ë€Ç8à1ŽƒäcðG~áqxˆãX›8ò!xäcð<Æ‘q¨Mù‡ÚÄqÀã ëP›8Öq¬〇8Öáxˆcð<ă¬)É<ò!ŽqÀCð<Ä|ˆcQ›8>7xˆÃ#ð<Æ¡6qÀcð<Æñ9qÀcþ 8à!xˆãsã8È:ÄuxDÉEŠ8àqxˆcmã€Ç8Ô6xŒCj[ÇÚıq¬Mj<ÆqŒCðÇAò!Ž|ˆCmâPÛ8Ô6ŽÏcã<Æ!Ž|¬Mð‡ÚƃÀck<ÄuxDë€Ç8Ö¡6qÀc 8Ö&xäc‡8àqSÃc!Å/1€äj"±Mó»øá.ºîƒ]÷€ÂþÑô#ÿØG¼úqØ~ücíÚÇÒòá®|ôcï›ç|ç=/xˆ øG>à‘xˆÞ`}6¦± P°kð<4qÀ#þâ<Æ‘x¬âPÛ8à1µ〇8àq|¨Mj‡ÚqÀcë8ˆÚ2µ‰câPÛ8à!Žq|NãÈ/ià!Ž|ŒCmãPRÔ6޵ãG>Ö6x‡üZ‡qXx‡µxxȇµ9xx‡q€qPqȯu€q‡|X›ƒxXqX›uPqxðxxµ‡ux‡qXqX›qÈxxµµ‡µ‡üxXqP›u€‡q€‡uXqÈq€XqxXq€qPqx‡|xµYþµµµ‡µxqÈx‡|€‡ƒÈµ‡qPqøœqPq€‡u8µ‡|€qX›ƒx€‡qÈxx‡qXqx‡q€‡ux8ˆq€‡qX‡ƒP›q€qP›qÈ€q€‡q€‡qÈqȇµµY‡äxµ9x‡µxx8ˆqPqøœƒPq€‡qP›u8x8ˆq€qxXx‡qÈ/P›uX›qÈqPqÈq€‡qˆ»ü‡q€€qP›qøȇµx‡q€‡ƒPqÈq€‡ƒµ9µ9xþqP›qȇµxxˆ;qÈxµzTq‡|8x‡|‡|P›q€‡qH.qµ‡qȤ€‡|€qȵxXxµx8x€qȇqȵx‡ƒPqÈq‡ä:ˆqPqP›u‡|P›qÈq€‡u€‡qȇäx‡u‡¸µx‡u‡…e`„€‡qPqЄÏ{š}`—| ‡Ø€j@š|`—~HL˼LÌÌÌ̓‡u€PøyP8ˆlð†l˜†_vÑx8Mxxx‡ux‡µxþXx8µ‡ÏY‡q‡ä‡µ‡|‡|‡µµÉ‡qPqP›qȇq€‡|xµxxx8ˆ|xX‡q8x8ˆüxxxxxxµxx‡ƒÈ‡q€q€qX›ƒXx‡µ‡|xȇqP›qPÒ€‡q€q€q€‡q€‡qPq€‡q€qPqXq€qȇqPq€qXq€‡ƒX€qX‡qµqÈ/qX›q€‡q8xxxxxXx8xXx‡|8ˆµ9ˆÏµµ‡ƒ€þq€‡ƒPqPqøq€‡qxX‡q‡uXxÈP›q€‡qxµY‡µxµxµÉq€‡|xx‡ƒ€‡|xÈq€‡|µµÉ‡qȇqX›ƒPqq€qȇq€qȇq‡u€Ò@еxq€‡ƒ€‡qPqX›qÈ/¤Xqøœq€‡qÈ05q€‡|Ÿ€‡|xq€‡qÈq€‡q€€qXxq€‡u€‡qxq€‡q€‡q€‡q€‡q€qxȇqȇuPq€q€8xxþqX›|µµ‡Ï9ˆµ‡Ïxx‡u€qȯ|xxq€qxX‡qxµ‡µxxq€qX›ƒXqX‡q8xxxµÉ‡qPqH.€ÒP›q€‡ƒPqøœ|µqX‡q‡üxx8xxµÉ‡qX›qxX‡q8ˆu€qx‡uq€qq€qøqq€‡q‡|ðx‡Ï Q@FxxxÐÍlš~ø‡~]Ó=]ÔMÝ¥Qq…ȇxPqÖËo˜†]þ…èMP›|µµx‡|8ˆqX›ƒøœƒ€qx‡|€‡q€qq€‡qX›q‡uµ‡|xX‡ƒX›ƒXq‡ux8ˆÏ9ˆµYxS‡qH.qXqPq€qPq‡|x8µYqPq€q‡Ï9xµYqx‡q€qqÈqȤX›qȇƒX›ƒP›qPqµµ‡qøH.ÒÈqP›qÈxxµ9x‡µñˆ|8µ9µ‡|µ‡ü‡uPq‡µ‡qµµ‡ü‡µþµYxxðx‡|P›qÈxXPq€Èq€‡ƒ‡|€q€‡q€qPqPqµ‡| xðxµ‡µYqðx‡u8ˆqȇq€‡q‡u‡qøqxÈxµ‡µxXµ‡|X›qxx‡Ï9ˆÏxx‡q‡ü‡qP›q€‡ƒ€qqÈqxµ‡u€‡uxðˆu@ µ‡u€qȇƒÈq€‡q€q€‡q€‡qÈx8µ‡qȇƒ‡|x‡u‡qPqPqȵµµñˆuþ‡qX›qPqH®qH.qH.€q€‡q€qðxµ‡µx‡|€q€‡q‡| x‡|8ˆµñˆµYx‡|Pq€‡ƒPqðx‡qP€‡qPqPqȤX›qøq‡u€q€q€‡qȵ9µ9ˆqH.qP›q€‡qxðˆ|XqP›uPqP›qÈxxȇµxµµx‡|xx‡u‡…_`„€q€‡u€MPÝ£ÉʾlÌÎìÏ#+q€‡u…~‡|µqð†Ëš†_Є~ÈMðqÐqP›qþPqXµÉ‡ƒXq€‡qµx@Šu‡ƒ€‡|€‡qÈÒÈxXµqXq€‡qX›qH®|x‡µqXq€‡q€‡qPq€‡q‡µÉ8µqX›u€q€qPqXx‡µ‡u€qøœƒP›qPqÈqµµ9xÈxx‡ÏñqøqXq€‡ƒP›|µñxÈqq€qÈqµ‡|8µx‡u‡ƒH®q8xqÈoÈ/q€qXx¤€‡q€X›q€‡|‡µµµq€qPqX›þq‡|qµqȇq‡uðqX‡q€qȇqµÉqXxµÉ‡qP›qÈqP›qX›uÈq€qXqÈxqX›qøqP›|x‡µ‡u‡äʇq‡µxðq€‡qP›qX›u€q€‡u€‡q€q€q€qP›qH®q€¤€q€‡|xµµx@Šüxxxxxx‡|‡äµxµYx‡|µÉ‡ƒX‡Ïx‡uPqXxxȇuX›|‡µxX‡µ9µqȇq€‡|ðþ¤P›qxqȇq€qðµñq€qȇqPqPqX›qµ‡µ‡uP›qȇ|x‡ä‡|8µx‡u€‡qøqP›|xȇq€qȇq@ µxX‡µµxxx‡µµ‡uqX›qP›|xxxxxx‡|Òøœq€‡q€q€qX‡qxðqPq€qXqPqXx‡äZ‡…e`X›ƒÍ®|Ë¿|̲‚ŸÐ„€‡xP›ƒðqð†ÌÚP`MÈx‡QP›ƒþ€qPXµxµ‡¸‡|X›q€qqÈqx‡u‡|X›ƒP¤€‡q‡qXqøœƒ€‡qX›qȇƒ€qPq€q€o€qȇµ‡|€qx‡Ï‡Ïµ‡|µX›q€€7¼qðÄ#¨à8xâà­ƒ7Ž ¸|ðƃ'Þ¸…1®'n\>qãÖËo¼uðD·Žà8‚âà˧pœ8xãò)o\¾qÅyOÜB‘ùÄÁOÜ8xâÆ- O\>xâà‰GpqÇÁ‡qAqE^^'F‚ãàå#(žÈqðDŠ[o"$<âÀ#<ëˆÏ8ðˆ4<ëÀ#Ò8‰£Ð8ðˆ“HðŒ#N>"$<ãäÏ8ùˆÏ8CÐ8CÐ8ðˆ8ðˆ³Ž8!h² #À3Aëhò§Ÿ‚ª¨£’Zª©§¢šªª«²Úª«¯Â«¬±Š³< ô#< ‰ãM6âd3Í/ ü“&"­£É8‰“8ëÀ3Ž8ðˆ8 ‰Ï8 ‰³Îeâ,´<ëÀ³Ž8ð`$ŽBâx$<â¬8ð`¤8ðˆ8ë,4Ž8 ‰“Ï8ð\&Ò:‰DÐ8ðŒCÐ8ðŒCH눣P>â4ŽHðþ䃑Bùˆ3ŽHðŒ#ŽB"Á#<âÀ³Î8âä#AâÀ3<â$N>ã$Aâ„‘8ðŒ£8 ‰¤8ëÀ3Ž8ùŒ8ð`$Aâ¬AãÀ#<â,4Ž8­Ï8ðˆ8‰Ï8CÐ8ðˆl·å3ŽGâÀ³Î8â'<눴Ž8ðŒ³Ð:ðŒãÑ8âÀ#<â(4ŽBâ¬8ùˆC8ð¬#AâÀ3Ž8 å#N>ã”8ðŒ#Ò:ãˆ8å3ÎBãˆ8ðŒ8ãÀ#<"å#Aâ4Ž8ðˆ“8å#Î8ð`$AãÀ#ÎBëÜ&AãˆÏ8þå3N>âŒãQ>"´<"4Aãˆ8ãÀs<ãÀ#ãPˆ8’qDðG>ÆqÀC ÉÇ8à±xŒƒ â€Ç8ıqd"Ç:Æ!÷Üf H2xŒƒ â FÄqÀC$<ÆA‘Dð<Ä‘qÀ#ãpÏ82xˆâ ˆ8Æq(dÆAò1‚ˆãPH>.#…ˆc YAÄ‘q¬ƒ âPˆ8Ö1q¬ãÈFò1ØÀC$ð <Äq›ˆŒ<ÄuŒcý˜%+iÉKb2“šÜd&ûq¬þÿ<ÄŒx#•Ó˜Æ.@á)M(Dâ<ÄqÀcG>à!xŒƒ ã<Æ‘qÀCðG>Ä‘xˆâ€Ç8à!’…ˆãPˆ8ÆAqGù‡BÄ¡qÀc 82x¬Cãȇ8òAŒ,Dù <`#xˆc!âÀÈ:à!ŽqäC!ëG>Äqxäƒ ãÈ"…ŒëÇ8"Ž|,D$ã€G>ıq,dâÈ<Æ¡qÀc G>à‘|ˆãÇ8Ä‘ÀC ‡BƑˈcðÉ8à!Žq¬ƒ â€Ç8"ŽqäCãÈAÆ|À&"Ç:ÄqDãX‡8ÆAqÀc H"Œ¬CðÀH>Æ¡qÀcð‡BƱqä"þ‡8à!Žqˆ〇80’Ûˆcù€‡8"’|ÀCðÇBÄ1‚Œ#ãXˆ8à!xŒëÇ8Ö!‚ˆcðÄˈcã È8n#’…ˆD!ù<ò1‚ˆãÈÇ8²…ˆ#ã€Ç8"xŒ6‡8"x`D <ÆAq,$âXÈ8DBq(DAÆAq¬#â È8à!Ž|ŒCù<ÄA‘ÀC$ë¸ <`£qD ‡BÄ|ˆùÇ:Æ!ŽqD뀇Hà1xˆ„ ãÈÇ8þ"‚Œc!"ÉÇ:àqäc<Æ¡qÀCð<òxŒãXH>0qˆã È8ÄqÀ#â€FDBq#âÈÇ8à1Ž|ÀC AÄqÀCðÇ:Ä‘ux$â€G>ÆuD$ Ç:à!ŽuÀcùÀˆBÖA|ŒC!ã ˆ8’qd‡BÄ|ˆƒ âȇ8Æ!xŒƒ8„HÀƒ8Àl„H¬ƒBäÃ8„8Àƒ8äÃ8ÀC>ˆÃ:Œƒ8ÀÃ8Àƒ8Àƒ8¬Ã8xF,Ä8ÀÃ8ÀƒHÀƒ8¬ƒHÀÃ8x„8(D>Œ<ˆAˆþD>ˆAäƒ8x„HÀÃ8ˆ<ˆ<Œƒ8„8,Ä8ˆƒBˆƒBˆC>ˆÃBŒ<äƒ8ÀÃ8¬AÀ<ÀF>`„8äƒ8¬ƒ8¬Fˆƒ{Œƒ8„8„8ÀÃ8ÀÃ8(Ä:„€(ü#<ˆ<ˆÃ8hB?dÚ>B!b!nZ"*â"2¢¬„8ŒB?È<ä<ˆÃ8¤’7¬Ò.€‚§hÂ8äƒ8hÂ:ˆÃ8äÃ8äƒHÄ:ˆÃ8ÜÆ8ÀC>(„8ÀÃ:„8Œƒ8(„8¬<ÀÆBˆÃBˆÄ8ÀƒH,Ä8ä<ˆ<ˆÃ8ä<ˆ<ˆAˆFäA`AŒ<Œ<ˆÃ:Àƒ8þÀƒHÀÃ8ÀÃ8ˆÃBˆÃ8Àl`<ŒC>Ä8äƒ8Ä8ÀÃ8ÀÃ:ÀÃ8Àƒ8ä<ŒC>Œ<ˆFÀƒ8`AŒ<ˆƒBˆÃ8ÀÃ:ˆÃ8¬ƒ8ŒAˆÄ:ˆ<ŒƒBˆ<ŒAˆ<ˆÃ8„H,„8ŒAˆAŒƒBˆAŒƒ8Àƒ8Àƒ8ŒAŒ<ˆFÀÃ8„H(lŒAˆÃ8,„8Àƒ8(Ä8äƒ8ÀÃ8ÀƒHÀÃ:ˆAˆ ­ƒ8äƒ8x„8¬<`AŒ<ˆAˆA`<`<ŒC>Àƒ8Àƒ8„8„H,„H¬ƒHÄ8Àƒ8Œ<ŒƒB¬ƒHäA¬ƒþHl`„BˆFäƒ8Àƒ8ÀƒHÀFÀƒ8„8Àƒ8äƒ8Àƒ8xD>„8äAˆ<ˆÃ8äƒ8ÀFÀƒ8ŒƒBˆ<ŒC>Œƒ8(„8Àƒ8ÀÃ8ÀÃ:ˆ<ˆ<Œ<Œ<`„8Àƒ8Àƒ8(„8¬<ŒAŒ<ˆÃ8äƒ8ÀÃ8F¬ƒ8Àƒ8Àƒ8ŒAˆFÀƒ8ÀƒH,Ä8ÀFÀƒ8Œ<Œ<ä<ˆÄ ÁÃ8,„8\<ˆAŒ<¬ƒ8`AˆAˆÄBˆÃ8Àƒ8Œ<ˆC>Œ<`D>ˆ„Bˆ<¬ƒBˆ<ˆÃ8„8`Ä:ˆAˆƒBŒ<Œ<¬<ŒþAŒÃBˆAˆ<ŒC>Àƒ8(„8Œ<ˆAŒƒ8Ä8Ä8Àƒ8ŒAˆFÄ:„8Ç8äƒ8ÀÃ8,„8äAˆÃ8Ä8ÀÃ8ä<`<ˆÃ8„8Àƒ8Àƒ8¬ƒ8„(,# <¬A¬ƒ&hÚ>>ìà*,Â>4b¢*ê¢*b?ôA¬(üƒ<(„8ŒC9xC6dÃ4ü‚&üC?ŒÂ8Àƒ8h<ˆÃ:ˆÃ:(Ä8„HÀƒ8ÀÃ8Àƒ8ÀÃe(„8Àƒ8ÀC>ÀÃ8,Ä8,„HÄ8ˆÃ8(D>ˆÃBˆÃ8ˆÃ:ŒƒBˆ<ŒÃBŒ<äƒ8Œ<ŒC>ˆ<þŒƒ8ÀƒHÀÃ:„8„8äÃ8ˆA`„8ÀƒH(D>ˆ<ˆÃ:Œ<ˆAŒƒHÀƒ8ÀÃ8ÀƒHÀÃ:Œƒ8¬ƒ8D>ˆAˆC>Œ<ˆ<ˆƒBˆAäÃ8ÀC>ˆƒGˆC>\<Œƒ8ÀÃ8Àƒ8ÀC>ŒƒGŒƒ8Àƒ8Àƒ8(„8ÀƒH(„8Àƒ8Àƒ8ÀC>ˆÃ8ˆAˆC>ŒC>Œƒ8,„8(D>`<ˆ<ˆ<ŒÃBŒ<ˆÃ:ÀÃ8äƒ8ÜÆ8Àƒ8ÀFÀÃ8ˆA¬<¬<ŒAŒAˆ<ˆC>Œƒ8äƒ8Ä8ÀFäÃ:Àƒ8„8¬ÃBŒA¬ƒBˆ<Œƒþ8x„8Àƒ8D>ŒƒHÀÃ8(Ä8ˆÃ8(Ä8ˆƒBäƒ8Àƒ8(D>¬Ã8ÀÃ8Àƒ8„8äƒ8„8,Ä8Àƒ8„8Œ<ˆÃ:Œƒ8ÀÃ:ÀÃ8,„8¬<ŒC>ˆÃBŒAŒƒ8¬ƒ8„8x„8ÀÃ8Àƒ8ÀƒHÄ8ˆAˆÃBŒƒ8(„8ÀÃ8ˆ<ˆÃ:ÀÃ8ÀF>ˆÃBŒ<äÃ8„8(Ä8„8ÀFˆ<ˆC>Œ<äÃ8Ä8,Ä8ˆ<Œ<Œƒ8Ä8ˆ<ŒAˆC>¬ƒ8Ä8äÃ8„8„8„8(„8Àƒ8ÀC>ˆ<äƒ8ÀÃ:ˆD>ˆÃBŒƒGŒƒ8,þ„HD>ˆÃ:Àƒ8FÀƒ8ÀƒHÀÃ8äÃ8À<Œƒ8x„8¬Ã8Ä8„H„8ä<ŒƒHÀÃ8(„HD>ÀÃ8ˆ<ŒÃBˆÃ:ÀÃ8¬Ã8ÀÃ8„8¬ƒ8ÀÃ:`<ˆ<øÓ:Œƒ8äÃ8ÀC>Œƒ8¸Gˆ20ÂŒ<¬ƒ8Àƒ&dÚ>üƒ äÃ>äÃ>äÃ><,B¨¨ƒˆŠ:€ª¨ƒüƒ:À¦©ƒ0j)›ò?8ê:¨2(ìC>ȃ8„8xƒ8¤Ò4ì(üC?h‚8„&Ä:ÀÃ8ÀFäƒ8(„8ÀÃ8äƒ8Àƒ8Àƒ8äƒ8ŒAˆÃ:ÀÃ8Àƒ8þÀƒ8Œƒ8äÃ8„8„8ŒC>Àƒ8ÀÃ8ÀÃ:ÀÃ8ÀÃ8ÀÃ8äAˆF(„8Àƒ8ÀƒH`<ˆ<ˆÃ:Àƒ8ä<ˆÃBˆÃ8x„8„Häƒq¨2A¬ƒHÄ8äAˆ<ˆÄBŒC>(„8ŒÃ:Àƒ8ŒAˆƒGŒÃBˆÃ8¬ƒ8ŒÃ:Œ<Œ<ˆÃ8ÀÃ8ˆC>ˆÃ8äAˆÃ8Ä:ˆ<ŒAŒC>(„8ÀÃ8Àƒ8܆8ÜÆ8ÀC>Àƒ8Œ<Œƒ8Àƒ8ÀÃ8Àƒ8(Ä8ÀÃ8ˆC>„8Àƒ8äÃ8ˆ<ˆÄBˆÃ8(„HÀƒHÄ8äƒ8Àƒ8„HÀÃ8Àƒ8ÀþlÄ8ÀÃ:ˆ<Œ<Œ<ˆÃ8äƒ8Œƒ8„8Ä8ÀÃ8ˆÃ8äƒ8Œ<ˆÃ8(„8(„8ŒÃBˆFäƒBˆ<Œ<ˆ<ˆ<ŒC>Ä8ÀÃ:ÀÃ8Ä8ÀÃ:ˆ<ˆƒBŒ<¬<ˆAˆÃ8ÀÃ8(Ä8„H„8Ä8Àƒ8Œ<ŒA¬<ˆÃ:Àƒ8Àƒ?Áƒ8,Ä8Àƒ8`<ˆ<ˆ„GˆD>Àƒ8¬<Œƒ8Àƒ8äAˆ<ˆC>,Ä:ŒC>(Ä8Ä8ˆ<ˆÃ8¬ƒH„8Œ<ˆÃBˆC>ÀÃ8„8ŒÃ:ÀÆ:ˆÃ8ÀÃ8ä<ŒC>ˆ<Œƒ8äAŒþC>ˆÃ8ÀÃ:ˆAˆÄ8ˆƒBˆ<ŒƒBŒAŒAŒ<`AŒAŒ<Œ<Œƒ8äÃ8ÀÃ8ˆ<ˆƒBˆƒBˆFxÄ8äƒ8܆8Àƒ8,„8(Ä8Àƒ8„8Àl,„8ÀFäAÀÆBˆFˆC>„HŒ<`AŒC>ˆ<ŒC>ˆÃ8,Ä:ˆC>„8x„8„8ŒÃ:ˆ<Œƒ8Àƒ8Œƒ8Àƒ8„À(ü#€HÀƒHh¦B>ÌÂ,L"üÃ3,Â>xJ?¨ƒ„J?Ø#¤J?¨ƒôƒ=0B?ì¦õƒ:À)»¢æ<¬ƒ8€Â?Àƒ<ÀÃ8ÀÃ8xC6þ,C6LÃ/€‚§h<Œƒ8h<ˆ<ˆ<ˆC>Œ<ŒƒBŒƒ8,„8ÀÃ:ÀƒH(Ä8¬Aˆ<äFˆ<ŒAŒ<ˆÃ:lÀÃ8älÀÃ:ŒAäƒ8ÀÃ8Ä8,D>ˆAˆAŒ<¨2AŒ<ˆ<äÃ8ÀF¬ƒG\<Œƒ8Àƒ8¬<ˆ<ˆƒBˆÄ:ÀÃ8,„8Ä8ˆÃ:`AˆƒBäFÀƒ8ÀÃ8ÀÃ8ˆAŒ<ˆAäÃ8Àƒ8äÃ8Àƒ8(Ä:Àƒ8ÀÃ8ˆ<äÃ8ˆÃ8ÀƒHÀƒH¬F(„H„8Œ<Œƒ8FÀÃ8ˆAŒAˆÃmˆ<ˆþ<ŒC>Œƒ8ÀFÄ8ÀÃ8ˆ<ˆAˆ<ˆ<ˆ<`AˆAˆ<ˆAˆAˆƒBˆ<ˆƒGˆÃB¬<ˆ<ˆAˆ<ˆAˆ<ˆD>Àƒ8¬<ˆ<äƒ8Àƒ8(„8ÀC>Œ<ˆAˆC>\†8Àƒ8äÃ8,„H¬FäFÀƒ8Àl¬AˆƒBŒƒ8ÀÃ8Ä8„Häƒ8`„H,Ä8Ä8ˆ<äÃ8ˆ<Œ<Œ<¬AŒƒqˆÃ8Àƒ8D>„8x Žƒ7Žà8xëŠ8â8‚ðÆÁoxãàå›8PÜ@qðÆ‰ƒ·nœ8xãàåþGPéùg'Àx¿~É‹³ ];wñ㋳@}zõëÙ·wÏ*þa à‘@qè¡€\ôƒxÂ<` < –PÀrÁv@z!áIXÂá $£è‡<ä‘q¬ccÙ˜Æ/@!MTEãAÆAªÀcâÈ< "Ž|Œ〠<Ö1qŒ#ëÇ:’q dð€Ê@Æ!ŽÃˆcðGØà!Ž|ŒcÇDþÄ‘qLDTòqˆcð‡8 2¨DùÇ@Æ!Žu@ãˆ8Ö1q¬☈8à1xŒc"ë€Ç8à!x@DùAÆ1qˆù€ <Ä1|Œƒ â8‰8Öª dÇ@Æ1uL*‡8"Ž|ˆã€Ç8Ä1qäã$â€Dà!‚Œã<Æ!xŒ 8àx@☈8à!xŒâ Tà!Žˆâ€Ç8à1qÀcÇ:à1Ž|ŒÇ8Äqˆc âÈ<Ä1xäcY<Æq¬c P!ˆ8ÖþAqÀcâ8É8à!xˆcãÇDò‘Œc G>Æ!x@Ç8N²¨ÀCë< |ˆã€Ç8ò!‚Œc ã˜Tà!Ž|Œâ€Ç8à•uÀ" 82Žˆc â ˆ8’qÀ#ã È8à!މ@eã<ò±‚Œã ˆ8Ö1qÀ*ð€ÈDƨäCÇ@ÆqÀcâ€Ç8Ä1qˆâ<Ö1q Dë8‰8Ö1Ž@âÈ8"‚äcð<Æ!Ž|DDë‡8àQ•äC A BqÀ*ðÇ@Ä‘þˆ$ã ˆ8àQ•uÀcë È:à1xŒã<ÆqÀCÉGUN’u Dã€Ç8ò±q¬ë€GD F€ P…ôÔ³AHðÀÇ;ê!|‚8ì@êa (!ì@>Ø€*ücy˜€pT|Ø#È;v  ÿØG& ô ÷pòQœT xÀÀ>Ô€*Ô# ¨Â>ò0~¨CÉó˜É\f3ŸÍiVó™á!Žqhâù Døã ÿìÂAF!ŽŒ 8N"x¬cù<Ö!Žqäc ã€Ç8"ŽþuˆÈ@ "ŽŒâˆ8Æ!Žq dÇ8"xˆcÇ@:=xˆëÇ@ÆAqœ"ù€Ç:à!Žˆc<ƈäc"P!È8ò1¨DðG>Æ1qÀ* <Æq Dð€ < 2q dëÇDƈˆã0 8 Bqäc<Æ1¨Àcâ€Ç8à1Ž|@ã€Dàxˆcâˆ8ò!ŽqÀ"ù€ <Æ‘xtzGªÄqŒƒ Pˆ8Æqˆ¤Óù€Tà1Ž|tz 8ò!Ž|ÀcùÈ8à1Žþˆcë€Ê:Ö1Ž|@e âˆ8Æ1uÀCð<ĈÀ*'<Æq@$â€Tà1Ž|ˆc â8‰8òxˆƒ ë8Œ8ò!ˆ dðÇ8àxˆP9Œ8à±qD'G>à!Ž“Œã$ã ˆ8ƱqŒcâ< BqœDðÕו|Œ#〇8à1Ž|ÀCJ>ÆNd < 2¨À*ð<ÄqÀCðˆÈa q Dð€J>ÄqÀCGDÄqÀCðX‡8Ö‘xŒ#‡<ÆqLDBÆá$Æ!þÄaàaòAà"àAàaÄá0Æ!Äaà¡ÓÄaò*bà*àaàaNBÆÖaàAà! bÄÖAàAB`~`Äa ÖAÖlÍöáÞA®çzaêAöáúáÔaÚ¡þáàÔAþA þaÔúÁÀúa¾AþAàÔ!êáöA ìaÚáöá€8òA;°` öA þ þàÔAˆÐ/3QËL;àAàþA¢Ó²A²!¦á4áúAÖþÆAà¡ÓBbbÄa Æa Äaàaò*bBòAòaàaN*&"àAàaÄÆAàAàaàAà!ÆaàA&"ÄÆabòAÆAòa ÆAòÇ ÄòAàa "ÆÆAòÅa"ÄÆ!öQ&bBòaÄÆ!Æ Æa" "ÆAàA"ÄÆ!Æ*BÆ "Äa ÆA&Bà!ÄÆ*à*àAàAàaàaBBàA&*òABBþBàa*òaBÖá$Ä ÆABbà!ÆA&bà!ÆÆÆ!ÄÄa"Öa"ÄêbàAàaàÅaØ1ÆÄa òabàAÖa  b" ÆAàA&"Ä!Æa ÄÆÄa òaàAòaàA*ÖØq ÄÆAàaBBÆAbàAbàAòa b òac Øq"Øq ÆAbàAàaÆa ö±Óàá¡ÓB"Æòab Äa Äa òaÄ ÆAþÆABÖaNbÄa"ÄÆa Äá$Ä;¡â0Ä!Ä bàaÄ!Æ;ׯ*bBòAàAàAbàAÖaÄaØq ÆÄa  b ÆÄa Æa òaàABÖÄa Æ "ÆÄ!àabà*Ö b"Äa": òabàAà*à*bbB‚êB@– àêÆaúͬîÀÜáÜáÜá„£ö`8ÈAþàØAöA8ÔAþA@8úAàØAþþ`„CàÔþA;ÔAŽC€„ƒàöAàö`ØA ÕYŸZ£UÍ´càaF¡ò!à[á¡Îüc@áúAàAÆaÄ¡[áA¸UÆ!ÄaÄ!àaàAÆ[ÇÄa¸UÆÖaàêàaÄÄ¡[Åa]ÇAØ‘[Å!à*º*¸uà*¸UàaàaàaòAà*ÆÄÖA¸*àaÄ! Ä[ÇÄ!¸uò*àa ÆÆ[¡bàAòÄaà*àaàþaÄ Ä[;mºuàAÖØqàAÖA¸uàAàAºuºUàa¹uÖ ‚lÅÄ ÄlÅ¡[ÇÆ¡[Ç[ÅÄ¡[Ça]Å[Ç[Ç[×¹U¸uÄ!àáaàAÆaÄÆ[¡bÖAÆ! bàa¸u¸uáAàa¸uÖUàaòÆ!Äa ØqÄ[¡ÖaÖUÆ¡[Å!ÖUö‘[Åaº*¸uàAÆÖAȶ[Å!Æ[Ç!ºuºUÆ!àAàAÆþÆÄ[×A¸UÆaÄ[ÅaÄaà*òAö1Ä ‚[Å ‚[Ç!Ø1Ä!ºuòAÖu¸UÆaÄaÖAÆÄ!¸U¸Uà×AàAÆÄ¡[ÅÄ[ÅØÆ!àAÆ¡[;mºUºU¸uØÆÆAàaÖ5 ‚[ÅaàAÆAàaàaò¡[¡ÆÖ¡[ÅÆÄ[Ç!¸UòaÄ!ÄÄa]¡¢[¡¼Äaàa¸uº*ÖUÆÆ Ä¡[ÇA‹áaÆÄþlÅa :M‹ÇÄÆÆ¡[ÅÄ!4aÆ bF¡¤Õ8öA8î tázNá&Üáúa8ØÚa9Œ!þA ØA†ƒàìaÚA8¾AþA ØA†ƒàìaÌ¡þÁÀ8øA|`ªáØA–ƒ@8ØAúAÀ˜¢#ºP×AÖþ!òØQ¼APq~þ¡4òa4[ÇA¸uàAÖÄØQ¸5Ä ¢[ÇÄÄ!ÄÆÆÄ[ÙÄÆÄþÄ!Æ[Ça”áaÄa]Ç[ÅÖÄaàAØwFyÖu¸uàaÅaºuº*òAÖUàáAºUòaÖ}Ù‘[á!ÆA¸u¸uàa ‚[Åá°¹*[àaàaàA¸5 Æ!Æ¡²áAàaNÄ[ÇAàa¸UÆAà*àaòaÄ¡²ÇÄ â°Ç*à*¸Uò¹*àÅ!ÆA¸5Æ[ÅÄ[óaàA{àAà*àaÄ!Äá°ÇÆ¡Óàa¸UÖaÄaN[þòaàAÖ¡²ÅÆÆòa{Ç[Å!ÄÆòAÆA{Ä[óaÖ[ÇÆÆA¸u ÄaØQò›áAà!ÆA¸UÆá´Åá°Çò ‚[ÇÄ!ÄaàA[àA*Ö*¸uàaàA¸U¸uòa¸U¸5ÆòAàaàa¸U¸Uòa;Æ[Å[Ç[Å[Å!ÆAÖaàAàA*;ØQà¹uÄ!ØQàaà¡ÓòÆÆAÆÆá°ÇòAà!þÆÄÄaàaÄ[Å!ÆÆ¡²¡‚[ÇAÖáaÄÆá°ÅÆá°ÅÆ[Å!Æòa ÄÆA¸Uàa¸Uàa[àA¸U¸uàaàAàAòA{àaàa¸U*{àaÄ[¡‚[¡"Äa¸u¸5DòA¸u4¡$z8ôÁ 5QßÁÞ!Q½`†C öá\@ þàÔAòA8ÔAþaT  þ\@þàÔA†C@8T ðá\@òaØÁ öáðþþ¡ ÔA„C@8ÔAþâ»Þë¿^8´càaFáâ!Ä!ÄaÄ?üc@áúaØq4aàA¸*X{òÄaÖÄá°ÅÄ[ÅÆ[ÅÄá°Å!Ä[Å!Äá°×*ÆØÆAàaà*¸uà*àAà*¸uÆá°ÅÆÆÆÆ[ÅêÆÄaò¡Ó¸UòÖaà*Ö¡²ÙÆÄ[Å!¸Uàaàa ÄaàóAàaàaÄ "ÆÄÄ[Åá°ÅaþàA{¸*à*à Æ ÌOœ8xáÁ'N¡8xãà‰S¨Ð BqðÆÁËOœBƒëÄ)Ï 8ŠðÄ Ì§PœBƒðÖ‰Ë7%qãà­ƒgpܺqù(ŽËOà:qãà™7. ‰“Ï8ùP4Ž8ã(dÐ8‰CÑ:âŒ8 ‰AðŒC‘8(4ŽMâÀ#<‹Á#<ãÀ#Ð8ù8C‘8ãä8(‰£Ð8ð8ëˆÂ(Ë0€Bë´©É?pÆ)çœtÖiç>pzá*¥Ì‚È$îê…œê` QÏ?ìÐ:ÄÉŽÿìcO „‡ÿ°#@?êðO?ýþ°#À>ÿØÓÂD"À?ý@=Å`Î?ûü„:ìó:äó:ô£Žv&«ì²Ì6ëì³ÐF+휤®Ï8£ì#< ãAÙd3Í/ ª‰8ùŒ3Š8»@ðˆ³Î8ðˆ³Eã($Jã¬8ðˆ£Ð8âÀ3<ã(4ŽBãÀ3ŽBù”Ï8âÀ#N>âP$N>ãì8 ‰Ï8âÀcR>&å3Ž8 ‰“Ï8ðˆ³JâÀ³Î8ðˆCÑ:Á3ŽBâä#<ëˆÏ:)$Înå#ŽBãä3ŽMã8(‰Ï8ðä#Eãä#EâP$N>ëÀ3ÎnãäÏ8þâ($ŽBÁ#Eâ($<ãì¶ŽBãì&Î8 ‰“Ï8ðŒ³Û8ðŒc<ãÀ#ÎnâP$EâÀ³Î8⌓8(‰ã1<âÀ³J㈃’8ëŒc<ùŒ“Ï8ë ”Ï8â $<ùŒ£8ð¬3<ãÀ#<ãP”Ï8ð$Î8âÀãM>â(”Ï8(‰³Î8ðˆ³Ž@âÀ#Î:ðŒÏ8³<å#Î: ‰Ï8å#<ãä3ŽBùˆ£Ð8ðÇ:ÄuÀà ðˆ8à!xã‡B qÀCð0< b“qˆ#ã€G>à1“À#â€Ç8ÄAqäCë8à1…þŒC!ùˆBÆ!xˆ @Ä¡qPDð<ÆqÀc(‡BÄ¡ƒÀ#뀇8ò!”ˆ%â‡Mò!›DðX‡8ž$Ž|ÀCð‡Bò!q(D Çèà‘qÀCð0<Ä¡|ãEı›q(DùÇ8P"ŽqÀCð‡8à!xŒâ€Ç82x¬Ãcë(~Áˆ &æDËZÚò–rò‚;ÞáŽvê—^€Ó>ú±ôcûÈG?â„Ì[öcÿèÇ>âÔ}À©pʇœHå È©ÿèÇœö‘8í£sÊ.×ÉÎvºþóðŒ§<çIËuˆšø‡<à±xÄÆ4v 8¢MâЄBÆ!ŽqÀÃ$âȇ8à1Ž|(Dð< BƒŒ#âJ ¢qÀCQˆAÆ‘qÀc<ÆqPdðX‡8ÆqãPˆ8"›Œƒ"ë<Æ!x¬C <Æq(dù<Ä1xˆC!âȇAà1x´ ëG>ÄqÀcð<ÄA‘uÀcð< 2xŒctâ ˆ8¢qÀCã€Ç8l2x¬CðÇ8à!ŽqÀà ɇBÄqŒ#â‡BÆAq(Dþã€Ç8à1…Œ 8Æ¡qÀCð<qÀcð<Ä‘qäC!ãȇ8bxˆC!〇8à!Žq(Ä Ç:à!ŽqÀCð<Æqˆ%ã€Ç8à1Ž|(DãPÈ8òA‘qˆcâ€Ç:Ä!uˆC!ã@É:ÄAq´ %Ç8ృÀCðȇBıxdâØ8²qäâPÈ8òaqÀCðXÇ8ò!ŽqÀcâ È:²xdâ<ÆqÀà ðX< ‚qäC!âȇ8("…ˆc7âØ8ƃÀcâÇ:Ä‘”¬þãÈ< 2xŒƒ" 8Æ!xˆC! Aà!Žq¬CðG>à!xˆC!âÈ<Æ¡qŒƒ"ùÇ8"Žqäà ãPÈ8("ЬCã€Ç8"(dð<ÄqPd ˆ8౎|(dðXG>Äq dðG>Ä¡qäC<Ä1xŒC!ãX‡8ÆqÀcð‡8òa…ˆc6H>Ä1x¬ƒ"ã‡BÄ¡ƒ DãPˆAà!xˆ〇8à!Žuˆ# X#`xDôŒç>þá…‚üà^€S?n¹ZöcsêÇ?öñ}À©ûþ¨¥=´±{¸à·ÌÇ>nIªô#à(O¹ÊWÎò[öâ€(ö!”ŒÃ ášÆ/4'MŒC!š‡8à‘q dð‡8Ö!xˆ#â È8("ŽuÀCð<ÄaqÀ#¡ˆ8Ö!x¬ã H>Æ'‰ƒ"ù<ò!xˆâPˆ8(2xŒ#ã€Ç8Ö¡q(d G>Æ!…ŒâEò1”Œƒ"뀇Aà±q¬ãPˆI"xŒA‰Aò1q(Dð0ˆBÆ!xäcð<Ä|ŒCð<Ä1qÀc‡BÄA‘|ˆãIþ‡BÄ¡ƒÀC <Ä“ÀCùEÄqPDùG> ¢“(dâX<Æ!ŽuÀc6< BƒPD ± ! 1‘âã ð0ð ð`ë0ââ°O¢ëâ ù 1âãâ°ð (a(aë ù !ð°ð ù0 1ð ð0 1 ! 1â° ! !ð ëâ€ã`ð0ð0(‘â@âà1âã ð°ã ð° 1â â@ãã@ã ð0 !(1ðãþëããã ë@ù0 a!ð  !(! !ð`ð0»±ã` ‘â0â°ð` !ë âã@ã  !1ðâã`að âã ù0ð O"ð ëã ã ð  1ð0âãâ0 1ðã ð0â ù ð0 !ð ð°1ðãã ð`ëâëââ ãâ€âãù0â€â¡ã€! ÈÀ`šÐrëÔù°ùþÈ„LùÐû 'û@KûPKùзÔqÒµ”ô@ 6Pù0Oý ’DY”Fy”r¢ë ÿp’âã å µ  'š ð ¢  ±â`ãð°âãã@&161ð0 1ð ã ë â@ëâã ð`ù ùO²â ð ð0 !ð0ð`ð ë`± !ð`ë ð ãâ O²âëãâ€â@ââ@â0ù ð`!ã@ë ð ãã@¡ã þð  1ë ð`ãùâ â âð$ð°ù ð  1! 1 !!!ð0 ! aããã ë@â@â@ãâ@ã ãâ@ã@ã@ãã@â0ù ãã &â@ã(!ð0ù ù ð  !¡‘ð`ãã â@â06!ã¡ë ð`ð`ð ù ð°ù0âð°ð°ð  !ð° ±â¡â¡â ð þAã ã!ð0ð0ð ð0!ð ð ãâð ù  !ã â0ë ð0ð ð ð  !±1!6! !ã@â`âãã ð0ù âð$ù`â@ã â &â@ââ0ëã1aù âëâÐ&ù (1ù`aã ! að ãââðð$ù ãã â ããâ0ë`ð  ±að  a1aã°â@â`þâââ°â£ð Œ0ð0 !š€”´Ôûð¤Ò6Oûг@´BK”¤²â ðñ ù aÙ° Óð  ý  ââ  1 !ã`ë0âã ð°ð ‘ãââã`ðã  1 !6!ð ù01ð ââ ù°!ð0 a !ð°að0ââ°â°ð0ââã âã ð`ð ð0âë £# !(!ðãã°‘ããã@þâ â ã 6‘aã@ãù  !ëã ãâ0â@âã ã°ã ð 6‘Aëã°ã ð` !!ð 1ð  1âã‘â0 !ë ð0±Gâ°â°ð0ð ð  ! aù0‘ãâ@ã@ãââ€ù0ð`!±ð £3ð`ë ð°ããã ã âã 3!ð  ±ù ð  að0â°ã` !ð` ‘â0 þ!ð ðããã &ù0 að ð  !ðâ° ‘ãã ãã ã ðâã â ã ââ â°ð0ðâO2(1ð {dã ð ðãââ`ë0â ë  !ëã ð`ë€â€âá1â€!ù ãâ°Aù03ð0â`ã âEù0 !ð  1»Ñ&! ËÀââš0´}ÑÑr¤¢â0 þÿ ð°ð`Sé Ó°  '  â &â0ù@ã6!ãâãã ù`1ù ãââ0ù0â&1 1ð0ð  1ù ð°ð ë`(!ã°ãà1ã1 1±ãë0ð°ââë ð (1ù€â0ââ 1!ãã°&¡â â°ââã â@ãâ0ð°ââ0ð ð ã!ð ã@â!ù â@â0ð`ð O’1þâ±! að ââ@‘ãâ@!ù ð ãð`1ð ã@ââ 1!ð ð ð0ù ð0ð ð°ð  1(!±!ë ãâ‘ !ð0ðð$ù  ±6a61 !ð0± ±‘âã â !ã¡ãâ@â0ð0 !ù0!ù â`â@1(1â â0 a6±ð°âà1âëm"ð ðQâþ0ù¡â0 1ð ð ð  !ð°1ëâ°ù ù ð`ð ð0ð ã â0ð0ð`ð0 ±¡ââââ0ð°â ë0ù€ããã ã€âã ð0ð  !ð ãâë0:ã@â@ë 1ð ããã1£3ð0ù0ð ù0ù`ð ð ã ð ð !  ËÀâëš°ÑŸð ¿ðB› ±£°ò@aá2 ¿ p¢ þââ ! 1 1ð°ã`ð ð ëãã ë€ââ°ð0ù0!ð 6!ð0â‘â±1ù (!ã ðâãããã â°ã ð ð` 1â°ð°ð0ð  1(1ð0â°! ‘ã â!ù0â ââ€â€â ¡!‘ãù ããAù0 ‘‘ãâ€ùOâ0âù (!ù !ãã ù þð0ð ð0â`âã`ã ë (1ù ð0ð0ð ð0 !ð0ù0ðãããããOãâ â°ð` ±!Þ:xãòo0|ŒCë€Ç8æ2qDDã€Ç8à1Ž ˆâˆÈ80‘qÀcÉþÇ84"xŒ〇8""xŒ#"âŠ8à‘q¬#"ë€Ç84"xŒCã€G>ÆqE<ò1|ùð<Ä‘q`$"‰F"’qÀ#ððˆFÄ¡‘uÀ#〇8àx`$(ëÇ8Äqˆã‡FÆ¡ª ˆâX<ÄqDDsÉ<Æ‘qD#ð‡8à1ŽuÀCùøŠ8à1qÀcâˆÈ:Æq¬C# 8""xˆ∈8à1qÀC‡FÆ‘uÀCùÇ\ÄŒDDÇ:à1Œhd‰È8à‘qhD〇þ8""ŽuDD<ÄâÀcG>Æ!ŽqäCGP<"xˆÇ8‚’qˆ#"∈8à1xŒãÀ<Ä¡‘|ŒãGDÆ|ˆcâÊ8(jxˆcùðHDÆ!ŒCG>ÄqÀCGDÆqÀcAGPÄqÀcâ€Ç8"2qÀcðG>ÄqEë€Ç8àxˆÞÈÇ842ŽˆŒCùÀHPò!ŽˆäcùÀÈ\ÄŒÀ#ðGD<qhd!Å2xˆëÇ(úACî£1ˆ9à1qÀCð<Ä1xŒã˜Ë:"bšˆˆcðø <Ä1޹ˆ#ë€GqÄu`$ðG>àxŒãÈÇ84"Žqe<ÄqÀcù€‡8‚2xˆ#〇8ÆuˆcÇ8æ2Žˆˆ#"ãÈGD¾’`dë<ÆqDdGDÄq¬CãÈGPÄqx㈈Gà!Ž|h#ù0 <<²þqÀC〇8ÆqÀCãÈGPÄá‘uˆcùˆFƱŽqäâð<Ä1ŽˆˆcðGbÄ1qäcð<Ä1qä 8Æ¡qÀcG>Æ‘qDdð<<2—qä#"â‡8òqä#ãŠG42xˆC#∈8Ö!ŽqDDðÀx‡ˆxˆo€qxЂӇ|Àx‡Єe`„ˆq€‡u…~H1Ù‡BÀ‡}`Á„…B؇”Á¤Á´A‚q€‡Qøy‡|xŒÈ†l˜†_ЄèMˆˆþqqXq€q€ŒˆŒ€q€‡uxÀˆ|‡¹ÈqЈq€qȇqН€‡q€q€qX‡ˆxȇqxðq€q˜‹I qÈqqŠq€‡qˆˆqx0 ‡u€‡q€€q€qXxqXx‡|ˆˆq€‡q€‡qˆqxȇq‡ Àx‡ˆ‡uÀˆˆ‡|x‡q€‡qÈqX‡ˆÈx‡ˆÈq qˆˆq€qŠqˆx‡ˆx‡|x0ˆ‡ˆx‡|‡ˆÈq€‡u€qˆþˆq‡¹‡ˆ‡|‡ˆ‡¹qX‡ˆ‡ˆÀxÀˆu€q€qŠqˆÓ€‡uqX‡q‡ ‡ˆÈ‡qxxxxUY‡|Àˆ|‡ ‡ˆxXxÀ‡ˆðqX‡ ÈŒ€Œq€‡|xxÀˆ¹‡ˆ‡uˆˆq€q€Œ€‡qÀxȇqXxȇˆq€q€‡qÀx‡ˆÀˆu€‡qÈŒ€‡q€qˆˆ|x0ˆxÀxÀxxðxxx‡uðq‡¹‡|ŒÈ‡q€‡u€‡qЈu qȇqþЈ|xȇq‡uðxxÈqXx‡uðˆˆÈ‡qˆˆq€‡|ÀxȇqxȇqЈq€qˆˆ|€‡qÀÈx‡ˆÀxxŒ€Óȇqˆqȇqxx‡uq€‡|€€‡q qðˆ|xxÀx‡ ÈŒ€qŠq€qˆqˆŒˆˆ|xŒÈÀxq˜ qŠqˆˆqˆˆd`€q€qMè‡dA}Ѓ.è‚}ȇ}è‡g€…B¸ÁÕÑåQŠq…}Šq™†iØþPÐMXx‡QÐq€qÐqˆq€‡q€qЈu‡q€‡¯xx0 xXŒ‡|Àˆˆxx‡ˆ‡|ˆqÈx‡ˆx‡¹‡ˆxðˆ|ˆqqÈŒ€‡qÈUÁxxÀˆ|‡ Xqðˆ|ÀxXx‡q€Œ‡|Àˆqˆqðˆ|€q€‡q qPŒ€ŒÐq‡ˆøŠˆø xðˆ Àˆˆ‡ˆÀˆq€qȇˆÀˆq˜ €‡qЈqˆˆqxx‡ˆ‡ˆ‡q€‡q€‡qЈqЈqx‡ˆx‡uþ‡qˆq€‡q€‡qȇˆ‡ˆ‡ˆ‡ xxÀˆ¹‡|€‡qÈx‡|ˆq€q€q‡uxxÀˆq€q€q€‡qˆqxX‡ˆXxx‡q€q€q€‡qÐq€q€‡u€‡uÈxX€ˆˆqˆˆ|€‡¹x‡q€q‡ˆXq€ŒŠqȇˆ‡uÀ€‡qȇ|ˆˆqȇq ŒX‡ˆxXqŠq (Œ€qÈŒŠqÈq€‡|‡ˆÀxXqÐq€‡q€q€‡q€‡q€‡q€q€‡uxþxXqx‡ˆ‡|À€qÐqȇq€‡uÀxˆˆq€q€‡q€qq€qxÓ|Јq€€‡qÐq€‡q€‡q q‡|Pq€‡qˆq€‡qЈuxðˆˆ‡ˆxx‡|‡q€q€q˜ q‡|‡qPŒˆqˆŒˆq‡u‡qȇˆqȇˆ‡|€‡q€‡qŠq€Ó€q€qQXFxX‡ˆXMÈÑZt]è‡|è‡g(X(„}øuRøuQ˜!u€â!6±þ‰ˆu…~‡ˆx‡l‡"œ†_ Ñq€‡uÐqˆˆu€‡u€‡q˜ Œ€q€‡qˆˆ|qÈqЈqP•|‡qxX‡ˆÀˆ|ŒX€‡uˆˆq‡|Àˆ¹xx‡ˆø xȇqX‡uqˆˆq€‡qÐŒˆˆu€‡q€q€‡q€‡|‡qÐŒ€qÐqЈ|‡ˆÈqðxŒ€‡q‡ˆxxUÁqȇu€‡qÈqȇqÈq€‡q€q q€‡qˆˆ|xX‡q‡ˆ‡¹‡|‡|‡q‡|ðþˆ|€‡qˆq€‡qÀˆˆxx0 x0 xxxxÀÈqxÀx‡uŒ€‡q (q€q€‡IÒˆq€‡qÀˆuqX‡q‡uðxUɇqÐŒ€‡q€q€‡q€‡q€‡q€q€‡|x‡ˆÀxxqX‡q€qȇq‡|xxø qˆq€qˆqˆŒ€Œ€‡q˜ qˆqXx‡|Xx‡uqxxq€Œ€‡q‡ q€q€qÐqÐq€‡qxqHŒuŠq€qˆþÀˆ x0 x‡|Àx‡ˆ‡ ‡ˆxxxX‡ˆÈqˆq€q€‡uÀˆuˆq€‡|‡ˆ‡ˆÈxxȇq‡|XqXxŒ€qÈŒ€‡q€‡qx0 xq€qXxx‡ˆx‡ˆx‡ ‡|qˆŒˆq€‡u€qH x‡u€q€qˆˆqxŒˆq@qˆˆ|øŠ|€‡¯€Àˆ|xqȇqP•uQøF€q€‡uxЄ]†°ñ_ȇ}È|À‡| aþH¡}°FÈv€|à|`Èb â)§rú‘âXPø‡|‡ˆxБ#ÝPÐMˆˆuЄˆ‡ˆxxx‡¹0qXq€‡u€Œ€qÐq€X‡qȇˆX‡qˆqXqˆˆqÈq€‡uxxX‡ˆ‡ˆÀˆqÈŒ€‡|ˆˆq€qˆq€ÈŒ€‡qŠqˆq‡ˆЈq˜ qЈuø xðˆu€qȇqȇˆ‡|ˆÓ€Ó€‡q‡q€qÐq€q€‡u0q€‡q‡q€Œ‡ˆÀˆq€þ‡u‡ˆx‡ˆ‡q€qxqxxx‡ˆÀˆq€q€q€‡qȇˆ‡ˆ ‡¹€qÐqˆqˆÓ€€ЈqPŒ‡|ˆˆqÈx‡|€‡qÈqÐqˆˆq€q€qxXq€‡qÐŒˆŒ€q€qˆˆqXq‡ˆx‡ˆ‡|ˆŒ€‡u‡ˆÀx‡|X‡|€qˆˆq€qˆqH qȇqxðx‡ˆXŒXqˆÓˆq€‡|‡ˆ‡¹xxÀˆ|˜ q‡ˆðˆˆÀx‡|ˆqþx‡q€‡q€q‡|xx‡|ˆq€‡q€q€‡q€qHŒuˆq€q€q€‡qxÀˆˆ‡qˆˆqˆqˆ(‡ˆX‡ˆ‡u€qˆq‡ˆ‡¯€‡q€q€‡uxx‡ˆxX‡ˆ0ˆ‡| qÈxÀxxxÀˆ¹q€‡q€‡u‡ˆqðà‰(nÝ@qðÆÁ7.Ÿ¸%Šƒ'n ¸‰ðÄo¼qâ:'.Ÿ¸qÅå/ŸDq2á­7n 8xâÖ‰ j£2áÉÔôï(Ò¤J—2mz4ľþeeÊtù•/Ä>|øö :ªN€Ó¤ýúU'`©:a×U'€-ܸrçÒ­k÷.Þ|ðÄÁÕ^>xâÆÉ—-Û´_ þåÓO¦¦ÂðdJ,¬q ¸Ë“™o¼uቓ(Þ¸u׉8ž8‰ã$ŠËOœDqÅ­ƒ'^a‰âæ7N¢ÌãòÉ„—oœ8xùÄÁOæ:xâÖ o\>qÅå·Þ:qëà·Î¡fxâàå7pÜ@q×I§9ß8ðˆ8å#Î@2 ”Ï8å#<ùŒ“<â 4Ž83P>âÀ#Î@âÀ3<âL$Î@㈣Ñ8ðþˆ8ðŒ38ùŒsÙ8š‰“Ï8âäã8ðˆ3Ñ8‰3Ð8â¬3Ž8ëŒ#Î:ð84Ð8ðÈ$‘L‰Ï8š‰8#Î@ùŒ#Ñ8âH$Î8ð”tÙ8‰³Ž8ã $<â $Î88#Î@âä3<âÀ3Î@ë 4ÎDâ 4Na‰3<â ”Ï89$Î8â $<ãä#ÓDâÀ3Ž8ðä#<ùŒ#Î@â¬38­ãÐ@2 $<â 4Ž8ðŒ£Ñ8ðˆ“<ãh$<âÀ#Î@㈓Ï8ëˆÏ8#ÎDãÀ#ŽDâ $Ó@âÀ“Ï8ùŒ3Ð:ɤÑ8‰sÙ8þðˆÏ8ðŒ#‘8ðˆ3‘Lðˆ3N>ðŒ#<ë $ÎDã $<ã $<âä3<ãÀ3Ž8ðŒ#‘8‰#‘Cå3Ž8ùŒ#Î@ãä#Î@ãÀ³ŽLð¬#SIã\–Cðˆ3Q¢ ÃHi¢ÓM;ý4R!üsN]”¡Uù䣕 G±#€%`Ä>ÿ¨#Rìð:üÃŽGÙÓBD"€Rô(Ë?ühð„:X2À¸X¢À¹üÃŽP;þ8ä‘K>9å•[~ù?âÀ#Ž&ÿÈO>ðˆ3Ž7¥{3Í. ¥‰8ëÀ£‰DâH$ÎDâŒ#<ãH$<2Á3<âŒ#Nþ>âL$Ó:âä#<âŒ#‘L3Ð:ãä#<âŒ8ðˆ3Î@ãÀ#ŽDãÀ3ÎDâH$<âÀSÒ@ãÀ#Î@ãÀ#Î8³Ž8ðŒ³<Äq dY< #ŽqÀCã€Ç:Äu dâÈÇ@Ä‘qHdÇ@Ö!ŽqÀC&<Ä¡qÀC&‡L$"ŽqÀcðÇD¼q”Ç8"“| dðÇ8à1މˆc âˆ8àáxˆcù€‡8à!xÈd ãˆLÆuˆâpÆqÀÃ!ðÉ@2q\FãÇ:Äq DÇ8à!xˆc<þuŒc âˆC4"މˆâpH>à!xŒC"‡8Æ1™ÀCð<Ö!ŽqäC&ðPà@Æ!‡äC%È:Ä1™¬ 8à!‰¬C"âȇ8$2q8DùÇ@Äq„`¿`Äà!x¬šÀÜäúñüBöÐÃ/B •|¼‚ØÇ?Ô€ìPB?Ô!€ôãì @>Ô!€¨CGQ öq )ùøG>R‘€zØû`Ǫð<$  ûÈÃú¡@¶ºÖ½.v³k9‰€¢ñ˜ˆ7Äq˜lLãšøG?41qhb"ãÇ@Æ!qþÀCù<Æq D&<ƇÀc<Æ!qhDðÉ:d²‰Èâ€G>"‰ˆ 8à1q\fG>ÄqäC‘‰DÆ‘q $ãX‡FdqÄ'ãˆ8Ö!xˆ%Ç8d™ÀcÇ@d2qÀC&‡8Ö!މäCÇ@d"qÀcâÈÇ8à‘q Dù€‡8&âÂÀCðX<Äq DðÇ@d’qÀCë<Ä1qÀCðÇ@ò1މˆ#ãˆLà‘‡LÄ!ðÇDò!‰ˆâȇCıŽqˆþcã‰FÄq dÇDò1q $〇8à1x8ùÇ@d"‘qÀcY<Ä1xäCÇ@Æ™äc 8.#xˆ#ã˜È8’qˆù‡Là1qÀcâGa2މäc2H>Æ!މˆcÉÇ8$"xŒc âˆ842qLdâX<Æ!‘qHDðÉ@ÄqÀ#âˆ8à!Žˆc â€Ç8à!ŽqˆâЈ82™ $âˆ8à!Ž|Œc ã€Ç8Ä1މ¬C"â‡DÆ!xÈâ€G>qäC&ù‡8ò1q Dþù<Æ!xŒã‡FÄ‘‡À£0ð‡8ò1xäcÇ@Æq¬#>ãȇ8Æ!Ž|ˆc âÈ<Ä¡™uhfðÇ@ÄuÀC<Ä1qˆãÈ:ÖQ,ƒˆLF¡ÝÇÕB!`D-ðáwàc÷w ;ÐŽ}üã ø;ð~üƒø;ðv ö8€9Žb 4  €9þ¡ŽÔcä8@=þAüƒ˜=üã/ÿù;n âÅ?ä|ŒC&¦›Æ4ì(…&Àƒ8Àƒ&8<ˆC> „LŒƒDŒÃ@ÈD>ŒƒFˆÃ@ŒC>ŒþC>ˆ<ˆƒFŒƒDˆÃ8ÀÃ8 „8 „8 Ä:Œƒ8hÄ8Àƒ8äÃ@Œƒ8H„8 „8 Ä8ÀÃ8ÀÃ8äƒCÀÃ:Àƒ8ÀÃ8 Ä8L„8Àƒ8ŒC>8Ä:ˆÃ@Œ<ˆƒFˆÃ8H„88Ä:ÈÄ@ˆƒFˆC>ŒC> „8 „LŒ<ˆƒFŒƒFÈ„D¬ƒ88Ä:Àƒ8ÀÃ8Àƒ8ŒƒDˆ<ŒÃ@ˆ<¬ƒ8ŒÃ:Àƒ8Œ<ŒÃ@ÈÄ8ÀÃ:äƒFÈÄ8 „8Œƒ8H„8L„8H„8 Ä8ˆÃ8\Æ8ÀÃ:ˆÃ8Àƒ8ŒÃ@ˆÃD8D>ˆ<ÈÄ8äƒ8 DÏŒÃDˆ<ˆ<¬ƒ8ä<þ¬C> „8 Ä8ÀÃ8ˆÃ@<ˆƒCÀƒ8Àƒ88<ˆÃ@ŒÃ:ˆÃ8 „8 „8ŒÃ:ˆÃeˆ<È<ˆCê „88„DÈ<ÈÄ8 Ä:ˆ<ˆ<ˆ<Œƒ8HÄ8ÀÃ:ˆ<Œƒ8ŒC>ˆÃ8¬ƒ8 Ä:ˆƒFÈ<äƒDŒ<È<8Ä:ˆÃ@8Ä:ˆÃDŒ<äƒ8Œ<¬ƒ8Œ<ˆÃ@ÈÄ8 „8 „8ÀÃ8Àƒ8ä<ˆ<ˆÃ8äƒDˆ<Œ<ˆ<ˆÃ8Ä<ŒÃ:Àƒ8L„8 „8 „LÀÃ8ä<ŒƒD8Ä@ŒƒF8<ˆÃ8 „8ÀÃ8ˆ<ŒC>È<È<ˆþ<Œ<ˆÃ@ˆ<Œ<ˆÃe8D>ˆÃ8ÀÃ8 Ä:ˆ<¬ƒ8 „8ÀÃ:ÀƒL „8ŒC>ÀÃ8ÀÃ8ÀÃ8ÀÃ:È„FˆÃ@ˆƒCˆ<Œ<ˆ<ˆ<ˆC>HÄ8ÀÃ8L„LŒ<ˆ<Œ<8<¬ƒ8ÀƒCÀƒLŒ<ÈÄ:ˆÃ8ˆ<ŒC>ÈÄ8HÄ8 „8äƒDˆÃDˆ<ˆ<ˆChÂ20ÂŒƒ8 Ä:hý!E„ç/tAtA-„g¸>¼Ã…:ÀQô9À?¨ƒ ;À?°ƒü;À?¨Å>¨ƒ0Í>¨CÜÀ>ü;À?ì;À?ì;þ@?¨ƒ|'‡v¨‡VN>ôƒ8Àƒ8€Â>È<ä<ÀÃ8ÈÄaLÃ/€ÂQhŠŠÃ(ˆÃŠ–ÄŠÊ<Œƒ8ÀÃ8¬è8ˆ<8ÄŠ®è8ˆÃ:ˆÃ:Àƒ8¬è8ÀÃ8<Œ<ÈD>ŒÃ‘n©8ä<ŒÃŠŠ<ˆÃŠ:„L¬¨8©8¬¨8äCaˆÃ:ˆC>ŒÃ‘ŽÃ:ÀÃ8ÈÄŠŠ<ˆ<ˆÃ:ˆC>Œ<ˆ<ˆÃŠŠ<Œƒ8Œ<È<ˆ<äƒ8¬Ã‘ŽÃŠŠÃ8Àƒ8ÀÃ8ˆÃ:ÀÃ8l)<äƒ8ÀƒL¬è8äÃ8ˆ<ŒÃ–Š<Œ<äƒ8ÀÃ8¬¨LÀC>ŒÃ‘Ê<þˆÃ–æÃ8¬h>ŒÃŠŽÃŠŠ<ˆÃ8ÀÃ8Àƒ8i>Œƒ8ÀC>ÀÃ8ÀÃ8¬è8ÀÃ8é8¬è8ä<È<ˆÃ8ˆ<ˆ<Œ<äÃ8ÀC>8ÄŠŠ<ŒC>8<ŒÃŠŠÃŠÊD>ˆC>ˆC>Œ<ˆÃ8é8¬<¬Ã8ˆÃ:Œƒ8©8Àƒ8Àƒ8*<äƒ8li>ˆÃ‘Žƒ8¬h>Œƒ8¬¨8ÀC>ŒÃŠŽ<Œ<ˆ<ˆÃŠŠÃŠŽƒ8¬h>ˆ<8©æÃ8ÀÃ8ªL¬è8Àƒ8é8ˆ<ˆÃ:Àƒ8¬ÃŠŠÃ:é8ˆÃ–Ž<Œ<ÈÄ‘ŠC>ŒÃ‘ŠC>ŒÃŠŽƒþ8Œƒ8ÀÃ8Àƒ8©8pl>ˆÃŠŠÃŠÊÄŠ:<Œ<ˆÃ:”ÄŠÊÄ‘Š<ˆ<Œ<ˆÃ8ÀÃ8äÃ8¬¨8Œƒ8Œ<ˆÃŠŽÃ‘Š<8„8ÀÃ8ˆC>ˆ<Œƒ8Àƒ8ÀÃ8ÈD>Œ<äƒ8¬è8ä<ÈÄ:p,<ŒƒL¬è8¬¨Llé8ÀÃ8äƒCÀƒ8é8¬è8¬ÃŠŠ<ŒÃ:l©8Àƒ8ÀÃ8¼i>ŒÃ:ê8ˆÃŠŽ<äƒ8ÀƒL¬è8iIÀƒ8Àƒ8ÀCIp¬8Àƒ8äÃ8¬è8äƒL¬h>ŒÃŠŠ<ä<Œƒ8¬ÃŠÊ<ˆC>ŒÃŠ®<ŒÃŠÊ<ˆÃ‘Žþʆ€( #@>ÀÃ:¬Ã8ŒB?|çXôÃ?èA-èÁ/0Âî¹Ã;ìÞìÃ?°´Ã?ôÃ7$@?ÐCìÃ?ì9À?¨ƒüƒ:À?ØÃ´C>üÃ7@>(?d€@5üƒ:À>üƒ:ÀQ¨ƒü;À‡Ž1—qRÀÃ:À(üƒ<ÀÃ:ŒÃ8ˆƒéà.€Â?ôÃ(ŒÃŠj<ˆ<ŒC>ˆÃ–ŠC>¬¨8ÀÃ8ä<ŒC>ˆÃ8ÀÃ8ˆC>é8©LŒC>©Lé:ˆÃ8Àƒ8ÀÃ8Àƒ8ÀÃ8ÀƒLŒÃ‘Ž<ˆC>lé8À¯è8ÀÃ8pì:Èçƒ8þÀƒ8¬¨8Œ©®<¬ƒ8¬¨8Àƒ8¬¨LÀC>©8¬è:Àƒ8¬¨LÀÃ8ÀC>ˆÃ–Ž<ˆ<Œ<Œ<ŒÃ–Ž<ˆ<ˆ<ˆC>ˆÃ8ÀÃ8¬¨8ÀñŠŠ<ˆÃŠŽ<ˆ“*‹Ã8¬ƒ8Àñ:¼é‘ŠÃ‘ŠÃŠŠÃ8ÀÃ:ˆ<ŒÃ:ŒC>È<È<ˆ<<ÈÄ8ª8©LŒÃ:ˆƒ7Àƒ8äÃ8ˆÃŠŠÃ:ˆC>ŒC>ŒÃ‘ŽÃŠŽ<Œ<¬ƒ8Œ<äÃ8ÀÃ8äƒ8tðŠŽC>©8Àƒ8é8©8ŒÃ:Àƒ8Œƒ8ŒÃ:Àƒ8Àq>À¯ƒ8¬¨8¬èþ:ˆ<È<ÈîÊ<Àñ8ÀÃ8äƒ8¬¨8Œ<¬ƒ8Àƒ8ÀÃ8Àƒ8l©L¬¨LŒC>àî8¬è8ÀÃ8Àƒ8Àƒ8ÀÃ8¬¨Lª8ÀÃ:ˆÃŠŠÃŠŠÃ8Àƒ8ÀC>¬¨8¬¨8©8ÀÃ8ÀÃ8ÀÃ8ÀÃ8¬è8©8ŒC>ˆ<ˆÃ‘ŠC>ˆ<ˆÃ‘ŠÃ–<<ÈÄ8ÀC>Àƒ8¬è8ÀƒL©8ÀC>¬¨8ÀÃ:Àƒ8ä<ˆ<ŒC>©8À1<Œ<ˆÃ8é8ÀÃ8©8ŒC>©LÀƒ8é8ˆ<Æ8äƒ8©8ÀƒLŒC>ˆÃ8¬è8äƒ8Œ<Œ©ŠÃ–®þƒ8©8ÀƒL¬¨LŒÃ:l©8Àƒ8Àƒ8ÀƒLäƒ8Àƒ8Àƒ8äƒ8äÃ8Àƒ8ÀÃ8¬¨8ÀÃ:ˆÃ8Àƒ8ŒÃ‘ŽÃ:ˆÃ–Âq>ÀÃ8lé8ÀÃ:ˆÃ8ÀÃ:Æ‘ŽÃŠŠ<ˆ<ˆCŒÂ/0Œ<ÈÄ:ŒB?xh-0‚tA0B-¬ðîyÁQ¨ôÀ> C(Á?ôÃäB?ðÃ@?°ƒô;@?ìƒ  Á>ôÃÀQ°ƒàÃ?àìC%0@=¨ƒìÃ?¨ƒäÃ?¨ƒôƒ:€:¨Ó_Ã(ìƒ<ÄC>ˆ<F6,Ã4ü(ôÃ?h‚8ÀÃ8h<þŒƒ8¬<ŒÃŠŽ<¬Ã8ˆ<ÈÄ:Œƒ8¬¨Lä<À5<ˆ<ŒÃ‘ŠÃŠŽ©ŽÃŠæÃ8ÀCa¬è:i>Œƒ8ŒC>ˆ<À5<ˆ<ˆC>ˆ<ÈÄ–Ž<ˆÃ8i>ˆÃ:Àƒ8li>À5<Œƒ8ÀÃ8lé8ÀÃ8l)ÃÃ8¬(¯¨8l©8ÀÃ8ÀÃ8È<ÈÄŠ¾éŠŠ<ŒƒLê8ÀƒLäÃ8ˆ<äÃ:Àƒ8lé8ˆÃŠæƒ8ÀÃ8Àƒ8Àƒ8ä<ˆÃŠæƒ8¬©ŽÃ‘Ê<ˆÃŠŠ<ŒÃŠŠ<ˆÃ:ª8à<ˆÃ‘ŠÃ‘æÃ8ÀC>Œ<Œƒ8¬¨8éþ:ˆÃ8ˆ<Œƒ8äÃ8Àƒ8Àƒ8ÀÃ:ÀC>Àqa¬<ŒƒLÀƒ8¬‹Ã–Ž<ˆ<À1<ˆÃ‘æ<ˆÃ‘ŠC>À±8äÃ8¬¨8¬è8¬Ã–ŠÃ‘Ž<Œ<ŒÃ–æƒ8ÀÃ:ˆÃ:ÀÃ8ˆ<ÈÄŠŠÃŠŠÃŠŽÃŠŽÃŠŠÃ‘ŠÃ:À1<Àµ8äƒ8ŒC>Æ–ÆŠŠ<Œ<Œ©ŠÃŠŽ<äƒ8¬è:Œƒ8¬è8ÀƒL¬è8¼éŠŠ<Œƒ8¬è8Àƒ8¬<ŒÃ‘Š<¬<ˆÃ‘ŠÃŠŽƒ8@ý‘æé8äÃ8é8¬¨8¬Ã8ˆ@Àƒ7Nà8ðÄ­7n¼|þðƉ;(N 8xâ0 ·Þ¸ƒâŠËOÜÁuëà‰'ž8âÖÁÃOÜ:xâàa„'ž¸ƒðÆ­ƒ'ž8x⊘oŒ£þÁË'pœ7÷î§þíõ¯ß(xãòi—ï`×|ãàç§qògœƒÆ£|ħ«Ÿ0‚gxºZhq~ŒZGxÄž“òÁqàç'xÄ£qàÉGœqàG qg¡u0Ê#ÄGœqàqÆgÄ'Ÿqà'qgxÄHxÄYq~gxÆÉç …ÆgƒÖG uÄG qÊq‚£qàžqgœuàç'ŒàÇK0ZqxÆgœƒÄG qêjhxÖg¡|ÆÉG qàYžqàÉŒàYGxÖhxÊGœƒÖùþixÆÉGÄHœqòÁ(0ZH qàžuàžqòG qàgxÄñRx0ÊGœqàgxÄ9hœ|~ç qàqàÁè q'qà'qàqÆùIxÄñRœ|0GxÆG ŒhxÄ£ƒÄ'ŸŸÄHœ|àqZqàgÆ9HœqÂH qG 4×G q0‚G0ç qàŒÆGœqZGœ|Ð'xÄGxÆHœƒÄ9¨«qgxúIœqÇËu…GÆùIœqàç qç qàYGþ‚GœƒÄžuÆgqàgœ|àç§qàÁhœuÄgqÆÉç ŒàÁžqòGxÄÉG 4WqÖG qàgqBÐdFè¤u4ùGùå™oÞùç¡W>„j Áú_D Á‹í·g>äöégŸ~úåûÙçŸ|úùgŸåûɧŸæ÷Y>Ÿ~öégù~öé'úÿ@€4àX@ò­ëÅ>â!qÀcÉF6¦ñ MôãšÇ:Ä¡‰u,DF2xˆcãÀ<Æñ“uxIð‡@Ä‘q$âXÑ8ò!äC?ÉÇ8à!Žuüdþ<Æ!xˆC ùX<ÄqÀc 8à‘qd<Ä|Œã ùGWà!Žu`ã€Ç8"ŽƒˆcEâ€Ç8•qˆ G>0qÀcð‡@Ä!|ŒCðȇ8à1xˆ#ãH>Æ‘qäcÇ:²ƒtã€Ç8ı"qŒCð<Ä|,Dð<Ä…$ãÀH>Æ‘ƒäcãšÄqä#ðXÈAÆq¬CðÀH>Ä1ŽudÇ:ıq¬ãÈ8Ä|ŒC hˆ8ò1x`$〇8"Žu`þG>Æqˆ <Ä!qÀ£+ëˆ8à‘u,ä ùÉ8à!ŽƒˆC ‡8"x¬ãðÒ8Äá¥qÀcð‡@ò1qä H>Ä®d‡@Ä!qDY<ÄñqÀCðÈÇ8àxŒùXÈA0q`ãG>Ä!Œäã'â‡@ò±ƒ`D ù<0rqˆ#ë€ÇBà!`ä'ãÈ8Äq|Œ〇8à!Ž| I ùÇOÆ!Œ〇8ÆqüDðÇ8‚xˆãÈ8à!xˆˆ8à!Ž|Œâþ€Ç8à‘qŒ#ù€Ç8à!ŽuŒC ãˆ8"äcðÈÇB0"qDëÈ8ౌäCð<Ä1xˆëÈ8à!ŽŸ„@È`ÄqÀC 4`?Bð~t¡ eÈÇ>Bò1¯ÍëGôúñ~ø·yýøG?ö‘ååƒÂöð‡AâÂã$ ø‡<â‘x`Ä=ÓðÆ4vŠ~üCð0"qdðXþ‡8Ö!qÀcù8ÈBà!ŽqÀcðÇOƱqÀC ÉÇŠÖqqÀCÇ8Ä!qŒâFà!4câ€Ç8ò!x¬C â€Fà!xŒ Y‡8à±xŒ#ã€Ç8ò1x¬CãÇ:0"qŒɇ8Æñ“qä#ð<ÆqÀC‡@Æ!Ž|DðG>Ä!qÀC‡@02Žuˆã âÈ<ÆuDëÈÇ8"ŽE­C ã€Ç8à!¬C+ÂÈ8ò…ÀcðG>Äquˆã ëÀˆ@ÄuxiâG>à1Ž|ˆ£nÁÈþ:à!¬CùX<Ä‘qŒCðÇOÄqÀCù<Æ!qÀcùÇ8à!Žqˆ#<ı|`D hÈ8à!Ž|Œ'ñ’8‚‘qdâÈÇB"x¬#ãˆ8Æ!ŽŸ¬#ÇBò!xŒã F~2Œã‡@ÄqÀCùÇ8V4ŽŸ`â€Ç:Ä!qd<ÆqÀ#<ÄqdðX‡8ò‘q¬Cð<0Œä#ðG>ºqdðȇ8V„‘qÀCÇOÄ!qDšò!qÀCÇ8þÄ‘qDÇ8Ö!Žq¬#‡—Ö1xˆëȇ@ÖÆ!ÄaòaBàaòaBàAB`–#à#4ay8°=ðAûáûaú!Q0UpY°]ða0epi0ÅÄöAb!0₦á@!úAòaàAàa!ÄÆAàaàABàAÖÆÆA ÄÄA ÄÆá FM ÆAàa"à#BàabÄ!Æá ĺbbÄA ÆÄÆÄá'ÄaÆAÆ!ÄA òAþàa0ÄÄA ÄòAÆÆÄá ÆABàaà!àa!à#B~BòAòaBbEBàAòaBBÖAbÄÆòÖaEÄá Æ0B ÆAÖá'ºâ'Äá ÆA Ðä ÄA B~bVDÖÄÄÖÄA ÆA ÄaºB ÆAàAÆÆaÄ!ºâ ÄA ÄaàABÖaÄÄÄÖÐD ÄaàabbÄÆAàaÄA ÄaÆAbÄÄaÄ¡åàþaÄÖAòaàaàABàaÄA Äá'Æ#à¡+ÖÄA ÄÐÆòAÆá Ä!ÄÄÄA Æ#ÖÄA Æ#b""Bòa!àaÄaÄÄòÆAàa~bÄòAÆÆ#Zn!0ÆÆAàABbà#àaÄA bEÖÖA ÄA Æ#b0bEBBBb"ƺbEÆA ÄÆá'0ÄÆÆA Æá òAàABàaàAàAàaàAàAþà!ÖÖa!Vdà!àa0B B ÄA òa~#àAÆAàAòaBÐÆAÖA ÆAàABÆAàaâ$B@~`E4¡A4DEtDI´DMôDK”|àAàþAäAà#Þc¦a@Ay4aÄa4Ä!àAòA 0bQ0b~BàA#Ä!Ä!Äĺb!~B#BàaÄá'Äá'"àaàA##ÆA ÖAàAÖÐÄ!bBb!àAàA#Æ!Bþ#Ä!~bBÆÖÖAàAàaà#àAâ'ÄÆÖA#àaà#ò0b!àa#BÆÄá'Æ!b!¼d!bà#"ÄÆA ÆÄ!àAÆ0bàaBÖÄá ÄA 0bb~#BàAàá$VDbà#~bòÄÄÆA Ä!ÄaBàA#ÆA Æ!àaòÄA Æ!àa!òÆòÄaàAÆÄ"bàaÄÆá ÄA Æ!àaþBÐ$¼dBbòAàAÄÆAàaàABVd##àaà#Æá Æ!ÄÄòá ÄA 0B 0B ÆA Æ!bàaàa#òá 0"bàAàAÆá'Ä!à#òAÆAà#ÖABòA ÄÆ!BàaàAòÆá 0ÆÆbÄaEÆÆÄaBbàABàa#àAàaàaàab!B~#bàaÖ#ÖAò#à¡+â'Äaò#þMòaVdà!àAàaÄÄA Ä!ÄA ÆÄ!àaB~BàAàAB–ÆA ÄAPô!8‚%x‚)xDûáòFÂÄ!Ä!¦á@!úAà#4Öaàa!Äá ÄÄA òAàaê&ÄA ÖÆÄaEÄ!ÆÆA Äá ÄÁKÆA~bàAòa!0ÄaQ0ÄaEÄ!ÖÆ!ÆABÆ!ÄA ÄÄá ÄaÄá òab!àaàAàa!à!ÆÆaEÄáþ ÄòAàaàA"Æá Äá'Äá B òaà#~bà!Äá Æ#àMÄ!ÆA Æ0"Æ¡+#¢+à#àa#"0Æá ÖÖ#B"ÆabàABBàAàab0B ÆA~bàaòaV¤+àaà#BàA"ÄÄaÆAÖaàAàAÖaÄ!Bàa!à#à!Æ0"Ð$ÆA Ä!B ÄaÄÆ#"Ä!ÆÆAbàaàAàaÄaàaà!Äþá ÄA Öá ÄaBàaÄ!ÆA~BB"0Äaàab!ÄaÄ!ÆA Äá Æá ÄA 0Æ0"ºÄA ÖÆAb0â òAàab!bàAòaÄaQÄÆÆ0B Æ#b0Äá ºBòAÖÄA Æ0"ÆòaBàA¼#Bà#bòa0"ÆAbÄá ÄÄÄá ÄÆA Äá òaàAàaàA~bò#ÖAà#Bàa!àaÖá'ÄþÖÄÄA BàaBàAb"DàAàAàA*x¿ù»¿ýû¿C0bþFÅÆAÞÃFw”GbÆÄaòAàaàaòAÆá ÆÆ0bàAÆAàa!ÖÄÆÖA ÆaEÖa²ÇA ÆA ÄaÄaà#àaàaà#àa!òaEÆÄa~Bbàa!àaÄA ÄÄaÄÆA ÄaàaVdBòabàa0bòAà#àaòAƺbàAÆA Äab!àþ#bÄaÄÆAbàabàaòaàaòABÆ0b!BÆ!BòABÆ0â ÄaQÆ¡åÆá ÆÖA ºÄaVDàaàaÄaÄÄá ÆA ÆaEÄ0â Æ!àaàaà¡+ÆÄÆ'WDÐä Æ!àaòa~Bàa!òÆ!Äá'ÖAbÄ!Äa0bàaò#ÆòÆ!BÖ¡+àA"0B 0â ÄaÖÄÄá 0b!à!ÆABàaÄá â ÄÄþaàaBÖÆ!ÆA ÄÄÖAàa#àaB~BEbàAbòA~B0bBàaàaBBÆÄa!bàAbò#Æ!bòA Æá Äá'ÆaEÄ!ÄA ÖAÆaÄaBàAÆAÆÄA ÄaV¤+àABBòÄaQÆaEB ÆÖ#à#bà#ÖA ÖÄA Æá'ÄaòAàAÆá ÆA ÄÄÖ!BàAàaBàAàAB`~ÄþÖ4AyLàûÁ?üÅüÉ¿üÍÿüÑ?ýÕýÙ¿ýÝÿýá?þåþáÿ @¡àAàAàaÄá‚"Û´_ þíÓoxâhÂ/¥Ï|ãà'qó—oMqðÄÁË/%Ä”ðÄÁK Oܸ”ëÆA/ß8ˆùÖÁOܺ¿ÇA/Ÿ8šã|Žþq\JˆãÄÁ‡â¸|âÆù¤)ž8xã Žo¼|ðÄÁo\Jx)ቃ'ž8ŸãÄ­'^Jš)!Šƒ'⸔ðÆÁK oÄ|â Šƒ'nÝ8qëÄÁÏ8‰“Ï_â¬Ï8ðü5DãÀ#<ëÀ³DâÀ³Î8åà8ðŒ‘8ùŒó<ùˆ³N‰ðŒ#<ùŒ³MãÀ#DùˆÏ8â@$Dã@ôW>âÀ3Ž84‰Ï8ðŒQJëàäÓ:‰8ãДDâÀ3Ž8ðˆƒðŒÑ_)Aô—8ëÀ#<ã@$N>ã@$<â@$<â”(DâäóWJþ4#MùŒÏ8)­Ï8ùŒÏ848ð¤4Ž8ðŒÏ8ðŒO>ãÀ“Ï8>å8¿‰Ï8â¨Ï_Ï_‰8ðˆ8ðŒÏ8âä#<㤴N‰ã¤DÓ:ð¬#Mã¤OJðˆ³<âÀ“Ò:ðˆÏ:ð¬Ï8âü%Mãä3Ž8¿­‚(Ë0M)òÏ?$ìËo¿þþ pÀLpÁŒp /ÌpÃ?̰Uë€òO>ðäÏ8âxñ7ÓìJ¾£¤4Ž&ù@´Î8‰Ï8O>ð¤”Ï8ð¬#Î_­‘8ðˆCSJåOJðŒCÓ:âÐÄ þDâŒC“8>#Î8ð¤¤bJãÀ3<â¬#<눣¢8ã@$Î8ðŒNù@„<âø”Mëø$<ãÐ4DãÀó<⌳NJë¤4Îoã¨(ŽOâø”8ð¤4Î:âŒÏ:âÀ#Dãä“Ò8ùŒ8Á3D)Ï8ùÀ#Î8ù@ôW>ðˆ“MâÀ#Î8ðˆ8ã@$Dâ@”Ò8ùÀ“Ò_>“ŠãüöW>ðŒ“<âÀ*<âÀ3<â@”Ò84‰Ã <âŒ8ðŒ“<ëД<âX5N>ð¬3N>)å#x¤„&〇8|"Ž|ü 8 "xŒëþ<Æ‘qÀcð<Æ!xŒãÈ<Ʊq@DðH <ÆuüFð<ÄqäC〈8 2ˆ¤dù¬à1xŒâ€Ç8à‘qÀCDÆ‘šˆ#âÈGJ "Ž|øDùð‰8ò!ŽqÀcâ ‰8 "xˆ)<ÄqŒëG>h"xˆ"Y‡8à!š¤8‡8à!x¬ƒ&ù€Ç8 "xˆcëÇ8à!ŽqÀCˆ8à!xŒ#)Ç8à1ˆˆcðG>Æq@DðÇ8 "xˆ)‡8à±xŒ#><þÆqä"â<ÄuÀcðG> "ŽßŒÃ')GJ 2Ž|@D<ıq@DðÇ:ÄM,ƒ€Ç8 ²Mäë$x ^@‚à$x ^@‚à$x ^@‚à$x ^@‚à$x ^@‚B¨t¥+}Á Hð¼€/ Á Hð¼€/ Á Hð¼€/ Á Hð¼€/ Á Hð¼€/ Á Hð¼€/ Á Hð¼€/ Á Hð¼€/ Á Hð¼€/ Á Hð¼€/ Á Hð¼€/ Á Hþð¼€/ Á Hð¼€/ Á Hð¼€/ Á Hð¼€/ Á Hð¼€/ Á Hð¼€/ Á Hð¼€/ Á Hð¼€/ Á Hð¼€/ Á Hð¼€/ Á Hð¼€/ Á Hð¼€/ Á Hð¼€/ Á Hð¼€/ Á Hð¼€/ Á Hð¼€/ Á Hð¼€&08Ö!PüCÄA“”ÀCðMÆ‘ˆäcâ€Ç8à!Xåˆ8òÁþ ßˆ#â  N|òq@D4‡ŠR’q”H<Æ‘”@DðH‰OÖ+qÀc4<Æ!xü")GJà‘xˆƒ&â É: ’qŒC‡8à1xˆc4‡OÄ¿¬ƒ&ù<ò!ŽqÀã/DıšäCð<Æ!ŽuÀcâ€Ç8Ä1Ž|Œã€Ç8ò!Ž¿ˆc><Æqü&%¿ÉÇ8à!xäC4ÉÇ8 "Žuüâ ‰8 ²þq¬ã/âXDÖq@DðGJà!xŒCðGJ ’ˆŒâÈÇ8Öqäcð<ÄqÀCðG>R²Žqˆ"â€È8h"xŒ)Ç8 ’ˆˆ" 8h"Ÿˆc)Ç8Ä‘qÀ'ùDÄq¤„&â€Ç8ıŽqˆ"ã€Ç:h"xŒ〇8౎¿ˆcð<ÄáqÐd%J DÆ|Œ"ëø DÄqäCDÆqDqÀCðÇ8àñ—”@DðÈÇ:à!ˆˆ"â€È8h"Žß¤$GJ౎”@D>DÆáqþ@dðÇ:à1qÀ'<Æ|ˆ)‡8à!ŽuÀc4<Æ‘qÀc*JÉ:Æ!ˆˆƒ&ë€È8à!Ÿ„@È`à!x¬c£èÇ? ÿøËþô¯ƒu ˆ}èÿû€E!ì€(€H€h€ˆ€ ¨€ È€ò·/ð ð ÿðððã Ó°  ðù  â0ë  ãâ0ð0ð !4ñ>!!‘!ã ã±)‘ãã ù ãããë)áâââ!1Á )áãâþ0)â0ù€4!!41ñð0!â)1ùãââðâàâ0141ððùââãâ0ù0ð ð0ð0ð°ð ëâÀ ùàãâð04±4±4!ð0ð01ùãâ0!ã)Aâ0Á ù0ù ð0>1ððëâ)ãââð ë€)1ð ùâã))â0>1ð0ð°â0ð0ëâðë ããâ0þð0¿!!ùããðâð)ñ 2âãâãëð ð ð ð0ð01ùââ0ù044!ãàâãâãâ)Q"ãð ãâ@ãââ@ãâ!ðð1ð0ââ)ãâù04ñð ð ãâãâð)1ëð0ùãâããà)ã ãâP"âã!414!!ã !ãã@ã ù+âþââãââ@ãããââ@â0!Q"âëã)â°)‘ãâ0ð 1ùàã ð ð0ù0!ð !0 ËÀâë0 ùð/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/À/ü ]Ðù°ù°Å …@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/þ@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@þ/@&@ð°ð0 ý !ð0âaË0 ¿  ÿ°šâ  â@âP")‘ââãâ@â@âù)‘â°1âãð°ð ðù0ð04141ð ð°ãâ0ù ù@âãâùâ0ð ë "ã@ã ùðâ)!‘ââãâ°ã 11âàã !ð0))Aããã ëã 1r+ð ð ‘âã ð0âã ð°ãþð0ð0ð ãâ@âãâ°ã)ù0âù41‘‘1â°ð0â)‘â`ð04‘â@ãpD±ã4!>‘1œ ù0ù0‘â°ðâ°ââââã !ð°ãð ð0ð0!1>1ââð ð0âãâã°G$41â°ããâ°ââðã ðââ)A)ñããâ°ãâ°1ð ð0þ!41)!‘)ââââ@)±ðð)ãâà)âãù04!ëùðð0!ð0ð 4!ð ð ððð0ââãã‘4!*’ððð ðPð04ñð0ð ð0âã@ããàâ)‘â)¡"r ù°ð0ð0âP"ù !>1âãù01â°ãð ð !ã ð0a! ¿Àââ°š/ 8€/`¿èþ»Ðý°ÏP °  †ú@€8°$€û@ñG8°$$€û@ñG8°$ €$€û@8 ü< -íÒ/ Ó1-Ó3MÓ5mÓ7Ó9­Ó5 = £  >= ¢ £@Ô>­ > £  J­ š O- O­ =­    JÝÓOíÓš O ¢ š Õ   @Õ== ¢ š0 šÐÓš £ š £@Ôš -ýÔ£  ¢ š š š    ðÔ @Õš JMÕ£ š £ š =­ - š ¢ T š š £ Z- šþð!ãâàâ!!·ð0ð ð 4!!ã°"ã°ð 4!ð°âã!ù!ãã)‘â)ãâãàr;ðãùãð0ù 4±ð ãëã ããâ0>‘ë0ù ã1>1â@â0ùàâ0ë ë ±ð ã°ð°ð°>!!!4!!ðÀ¹41ð ð0ð0ùãë ð0ùâ0ð°â0!ãâþââ0ùâ)áâã@âãâ@ãàâ0ð ·ù04!41ð 4!ð ñùâëðÀ !ð 1>1>1ù@)1ð ãðâââââ0ð°ââëÞâãâr ãâ@ââ)ãã°ð ðù)â0â0ð0ððù ¿!ð ãâ)âãâ0âââââàãâàããP"ë ð ãþð ð âãã@)1ë ‘!*">!ð ð ! ËÀëV¡ ý°übò'ò)¯òûb$`µ1ÿ ø@óõ ‚@&€ú°ò&ß``8Ð&ß`8Ð&ß`8Ð&ÐóûÒ`8Ð$ ðôWOšPÐ[Ïõ]ïõ_öa/öcOöeoögöùÒÿÐùòý/ú×ú×ú÷û—/ýðýð[ÿ½[ïöÿÐÿPÐùÒÿÐnßnßûàöý/ûÐûÐû°õù²n_ÐÿÐûðûÐûÐúWÐùRþÐù²ý/ú×ûÐû°õƒßûЃïöûÐûÐûÐûиŸ/ûðýàöýðý°ÿ°ýð[¿Ë  ã@â)â01ð0%"ù0>!!!ëãâãù0!ð 11â°ð0ðãàÁ70ß8q ÂoÜÂâÖ-\o¼q ÅA8n\ÂuãÄ oܺùƉƒ'ž8xãÄåK8P¼qðÄ-·ž¸uðÆ‰ƒ'Þ¸|ðÆ-7pÜBqó‰[70ß8xâÖÁ7NÜBqÇ%äQ¼qùÄÁþ—/áºq á(nÝ8qðò˜OÜ8x !ŽOÜ:lj[˜Þ8qÅÁ—O¼qljË'nà8xùÆ-—Þ¸ãà%„'ž¸…ãà‰Ë7Þ8xãÄy—O\ÙqùÆÁ/!¼q ׉ƒ˜o¼„lj[8Þ:xâàå·nà¸ãà‰8NÜ8xâ8Šƒ8nà8Ž á%q¼q ÇÁËO¼rg qàñHxÄGœuàg!qÊGxògœ…ÆgœÄq ‡¾„qÆGxÄYgxÆ(qGxÊgqÊgxògþgxÆYHxÄYhœBFžuÄG“~þ1LÓ0MÓ0MÓ0MÓ0MÓ0M3„Æ)cÏ_ò !@÷äpø‡À4LÀ4LL0úÓHqèL Å¡0M€TRLÓ0MÓHqè‡ 5LÀ4LÀ4LÀ4L@ùgb‹5öXd“UvYf›uöYh£=žbÇÉGbáIhœ|ÖÉçÙqò9eÇÉYx*vœ|Š'Ÿbá'bÇÉgxŠ…gxÄYžqòYžuàYgœ|Œ…gxŒ…gxÆþɇXxÄiž„ò'xÆÉ§Xxž…g|Ö'bá™q৬(!xÆgœ…Öqàqg!qàgœÄñhqà!v qàžqògxÄ'ŸqòqgœÆÉGœqàg¡qàIú g qÆHœÆÉqÆYGxÄHxÖHœè[HxÖY(!xÄHœqàÇ£Æ'ŸqgqÆYqð<ò!x¬ã€Ç8à1xˆ$Zˆ8 2xxdâXˆ8Æ‘ˆ Gà1Žuˆc ‡8ò!xŒ 8ÆqÀcâÈÇ8à!Àc0ƒ‡8ÆqÀCIˆG8"xŒ 8òÁ‘u dðÇ@<ÀCãÇ8ò1Ž|Œc âÈ8à!xˆƒ# 8"ˆŒ#ãȇGÖqÀCY‡8à!ŽqÀcâÇ:à1Ž|þˆã€Ç8òAxˆãˆ8à!xˆ#£ø#x$Dÿ؇ ^`‚Hê& ^`‚Hê& ^`‚Hê& ^`‚Hê’ ÎÑlâ#!À>ò±AÀ8øÜ]¼À8؇ ^@ìã8è pð@½Ø‡8êð˜à&þ†väC/xþAì ×pÇ5²`È ûGþAôã8ØÇ#®áŽkdÁ$A/öñŽ:ìƒ&x ^€ƒz$Bý€‡´|úS U¨ÎJ<Äb‰âXÈ8Ä1Ž„ÀþCð<Ä„ÀCðGBà!x$ 8à!ŽŒ#!ð<2qÀCðGB2Ž„ÀCðXGBà1‘ Ç8H4q$$‚‡8à‘xˆã <ÄqÀCð<Ä„ dðGBÖXxˆ 8à!xˆôY‡8à1úÀc €GBà1xŒâX<ıúÀÃ#ëXÈ8⑌c â€G>Æ!xäC뀇8ÖqŒ#âˆ8Ö1Ž„ÀCëH<Ä‘qâ€GBÖqÀ#!ð Ï@ÄQ\ Dã€G>Æ!Ž…ˆcþãG>Æ!xˆâ/<Æ!Ž…Œ£ÂÇ8౎„ÀCòGqó!xŒ#I<Æ|ÀC ɇ8Öq×#ðȇ8à‘xˆcGBâ‘qˆc!ùG>Æ1qˆcÇ@ò1Žˆcðð<Ʊq¬Ã#ðÇ@Ä,„>òMÈBò1qTxð<ò1xä#!ë‡|Ç1qÀcâG>à1Ž /d G`űáqˆc!ã€GBò!ŽâŽ G"Ž|ˆâˆ8’xŒc âXˆ8à1xˆãÇ@Æ!xŒ#!ðȇ8à‘ˆc þãˆ8à‘Œc ù<Æ!Žuˆc â(î:Æ!xŒã<ÄqÀcâˆ8’xˆâGB"xˆc âï8à!xˆ£¸â€‡8Ö!Žqˆ#ãˆ8"ŽqÀc IÈ@ò1xˆc ãH<Æ!ßqäcâï:B Še0bòÕÄ?öAÀ$0 LðÀ$0 LðÀ$0 L@¼À$0 L@¼€/Á.ôFü"øT7ï`‚à`À0ÁªáŠàà$0Á pÀà $ÀÁ>Hð‚\ã;¨F?Àd¼€8þØ0L°ƒj¸‚8ØÇ pðZÀØ Lp a¼`Õè pàà¯0 ± IC ­F?L@À$PÂ=FÑ„ä#!ùHH>’„ä#!ùHH>’„ä#!ùHH>’„ä#!ùHH>’„ä#!ùHH>’„ä#!ùHH>’„ä#!ùHH>’„ä#!ùHH>’„ä#!ùHH>’„ä#!ùHH>’„Èqqqq€‡u€q/q€q€q€qq€qXq€qq€q€q€‡„Xq€q/q€qXˆ„XþqˆuqH´âùJˆ…‡âx‡x‡ xxxx‡âZ‡âZùxxxxx‡…Xx‡â‡eqXq€‡„ˆq€qXqXˆ„Èq€q‡|@²|x q€‡qXq€‡qX‡Xx‡‡qq€‡qȇâZ‡xXqx‡…ù\qÈq‡ȇu/qq/q€‡q€‡q‡|q‡|‡qxxx‡|€qˆqXq€‡qˆ„ð†Hˆq(®„ðˆXþx xxxHˆqX‡ [qÈqq€qÈq$‡uHˆqÈxx‡q€q€‡qÈXqXˆ„€q‡|qXqÈq€‡qˆqÈq€‡q(®q€‡q¯q€‡u‡‡qˆ„ˆqXq‡uˆuxxxȇ„€qx‡Hˆqqðxðqȇ ‡q(.qXˆ„Xˆu€‡q€q€qˆqÈq€qxX‡…‡$ƒq‡‡qˆ„ˆ„€q‡|¯qq€‡q€‡„qXˆ„x‡|þHˆ…‡‡qxXqˆ„ȇ…x‡|€qˆ„ðˆâ‡‡â‡…‡Hùqq€‡u€q€‡u‡qˆqq‡|‡âòˆuHxX‡qȇxxq€qXq€‡qx‡u‡Єe`„Xˆq€Mø‡}x      x      IéÏZ`„ЃZÀw(н0؇x`‚{ ø0À~ øÀ~ ؇x`‚} xþÄþ¨ &¸À}xø‡“ø‡}¨ &ø‡À è‡ À}xØ!0`‚}x   VЄ€‡qˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆq€‡uˆuxX‡XqqXqÅâa-.q¨°uHˆâ‡âxXxXx‡uþqbb‡…‡X‡…xX‡…Xx xX‡P\xq€q€b‡uˆu(Vx(xxX‡…ÈPq€qXˆ„ˆq€‡q¨°q€q€qXqÈqˆqXˆ|‡|‡È‡q€qX‡‡â‡‡u€‡q(®qȇqˆ| …xðˆ…qˆq€€‡qxx‡…ȇu‡u‡„€qˆqˆq€‡qˆ„€q€x‡u€q€qÈú€Xq€q€qˆ|‡…ȇ„(®|XxxÈqXxþ‡xHˆÈ‡q€qˆqXˆq€‡q(®u€‡q‡|‡X‡‡u‡„€qˆq‡u‡|‡ù‡u‡‡X‡Hx‡u€‡qÈqˆqHˆ|Hx‡„(.q€‡|qXˆqȇq€‡|x‡ …Èq‡â‡…‡È€‡|x‡|‡u¯qxxx‡Hˆxx‡„€qXqXxxxxxHˆÈqˆuÈqˆ„°Aq€‡x‡…‡|‡„¨°qXq€bYq€‡„ˆþ|€qXq‡…xx‡…‡q(®„€q ‘…x‡„€qذu€‡|xHˆ‡uHˆ‡|‡âJˆu€‡q€qȇq‡ x‡â Q@FxHx‡Qø‡}000000000”0000000y¨äZÀ¦2ø…JwÀ‡u¸0ÁxxØÀ} xà‡À} ؇À”À~xØ`Þø‡0ÀxèÀ~”Àþ} øIyØÀ} è0À~ øxÀ0000…ˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆqˆq€‡u€bqq –‡uXgq€cxHxx@–… xx xxXx qXxXqXx‡…‡…xX‡þ‡…xXxx‡(–q€‡u€‡u€‡u€‡uxh–„€qˆ„‡x`–q€‡q€q€q€‡uˆud(®qXq‡|Hx‡q€‡qˆqXˆu€‡u€‡q€q€‡q€‡q‡qÈXqq‡xxxxXxHˆqx‡uHXqx‡qȇ„€qÈxqȇ„ȇ„qqðˆux‡|qˆ„q€q‡…‡…‡ xX‡…‡|x‡‡|x‡…ðˆuHX‡xþxXúðx‡‡‡xX‡„€q€qqˆqÈqq‡xXxx‡…‡|(.q‡|€‡q€‡ux‡|‡…‡â¢xx‡âZx‡q€ȇ‡…‡xðxx‡…Hx‡qXq‡|ùXˆqXq€‡„€ÈqðxxXxq@²qȇ… x‡ KˆqÈùJˆ‡|XqqXxHxx‡…‡‡q€‡q(.qÈx‡‡|x‡‡â‡q€úXˆ„xðþˆâq‡…‡|xx‡‡‡… xx‡…xx‡|¨0qȇ„/xðx‡ux‡u€qùJˆ…‡‡q‡ ‡u‡…_`„q€‡uЄØ          xx x x xx=ø=ØF0Põ0؇ `~0Ø01èÀ Ш0ØèOx؇&¸À} øHþÁ~0ø‡ À} øÀ~À~ è‡&Ø0008Qèqȇq‡|qȇq‡|qȇq‡|qȇq‡|qȇq‡|qȇq‡|qȇq‡|qȇq‡|qȇq‡|qȇq‡|qȇq‡|qȇq‡|qȇq‡|qȇq‡|qȇq‡|qȇq‡|qȇq€È7N\¾qâò—oœ¸|ãÄå'.ß8qðÄa„·n<ŒâàÁ·NÜ:&OŠƒ·þÎd>”á­s Ò#¼uá­3 oF'óa„瞸|á­Ã˜Ïe>“ð<Âsyä:xëÄÌ'e>ðÄÁ[çqÈe£òoFðÄ­s c>ŒùÆÁ'Þ8xâÜŠs»nœ¸|ãà‰)Þ8qðÖ‰s»#È|ãÄÉçv¼|ãà‰“;n´8xã@Žs;ž8ùÄ­ƒ‡qÝ8·âÜŠƒ'^¾qrlj9Þ8xâà9Þ:xã0ÂrHqãò‰s›OÈqð0Âç6Ÿ8â@Š“+Þ:¹âàåƒ7ã:xâày9N.¼qðÄ­Ï8n‰³Î8âÀ3Ž[þãˆF Ï8r‰ãÖ8âÀƒ‘[Á3Hãˆ#FùŒ#Ž[£É•Ï8ðˆ³<â€4Hâ€$<Á3<â¸%<ãÀ#N>ã€4Ž8ùÀ#N>Á3Á3<⸕Ï8ðŒÏ8r#<ÞÀ#<âÈ%N>ã¸5Î: ’8ðŒO>ã`Ï8âÀ³Î84FùŒ#×8 ‰ÃŸ8n‰8ùŒ#Ž[Á3<ÁƒÑ:ðŒ“Ï8 ‰Ò8 ß8ð`Ï8ùŒãÖ8ðŒÏ8ðŒÏ8r†Q>㈓FùŒ8ðŒƒ<ãÀ3<âÀ³Ž\â¬8nãÖ8ðäÏþ8âŒÏ8nm‚(Ë02À8 m¤I?ý@‚ $˜ð‚ /˜@‚ /˜@‚ /˜@‚ $˜@‚ $˜@‚ $˜@‚ $˜@ &¼ð‹z”Q†¿¸Sñ;ïxA 8ìÌ 2T# &´“ &ôÒ 8ècû¼`Â1¯¼ C.ý` $¼`ûó‚ Õcý¼€ƒ>/˜ðý¤{Ì+$ÈK?/àÐ 8üc /àÐ &Ì 2TÓ $àPÊ &´bÍ(ýl$ÎFâl$ÎFâl$ÎFâl$ÎFâ¬35` Î:ãP3À:âl$ÎFâl$ÎFâl$ÎFâl$ÎFâl$þÎFâl$ÎFâl$ÎFâl$ÎFâl$ÎFâl$ÎFâl$ÎFâl$ÎFâl$ÎFâl$ÎFâÀ#Ž\¹µŽ[âÀ³Ó»%Ž\ëPï–8Ôß8r‰“=<âð7ÎôâÀ3Ž\‴õëÈ%ŽøóÃ#HëŒC¿[븵ÎðˆÃ- 8¦¡‰uˆãÈHÆ!Œã‡[Æ’ux$â‰8à!x`Ç:Ä’q€Dù€‡8Ü"xˆ$ã€Ç:Ü"·ˆ<Äá–qÀC ɇ\Æ’qÀC Çhø³qÀc4n‡\Ö!xˆcâȇ[Ä‘Œ¸E£þÉÇ8à1Ž|€Dð<ÄqÀC뀇8ÆuÀcð‡[0qÀcðHÆqÀc Ç8@2Œfù˜ß8ò!Žuˆcâȇ8à±x`d G>à1Ž|¬Cð<ÄáŒÀCã‰8à!x`„?â‹8ò!xˆÃ-ã‹8@2xˆ#〇8Ʊq€d <0ŒÀC G>ÆáqÀ# Y‡8ÆqÀcãË8ò!xŒczÉ8à1xœ£É<Æ‘q¸eðÇ8ౌ¬cùÇ8à!Žq€#〇8@‚Œ# þ‡\Öxˆ‰8ÆqÀcnHÄqÈ#Ù<Ä1q€#ððÈ8ä"`â‡8ÆqŒ#É8à1xˆ# YHÆ’uˆ$âÈHÄ‘Œ¸EðXFà±q¬$Ç8à!ŽÑÀCðȇGà!xˆ#šX#0xˆcâÐÄ?öAÀ$0 LðÀ$0 Lð¼À$0 LðÀ/0 LðÀ&Á/B€ŽÔ"îxGÅÜá˜ý@ƒ;ðQ àJhÇ5®á~ü ôAè åFþ&öAÀ$0úw죪Å>H€}@µ8ø‡juPâfb$ÀÁ?H€ƒ¼@µ8ø‡je }ˆ£ÿx p°(!5Å?Ö’u€d YHÖ’u€d Y‡[ÖÁŒ,aF@²¬$ëÉ:@²¬$ëÉ:@²¬$ëÉ:@²¬$ëÉ:@²¬$ëÉ:@²¬$ëÉ:@²¬$ëÉ:à±·¬ƒzâ‡[Ä¡¿ÈeëÈÞF²‡lÄ-áÏ8Äá–u¸eð<Æ!·¬âÉ8Öá–qðgð<þÆ1½qÐoðÀ<ÖÑèã€Ç:@2xŒc‹8à!Ži€$â€ÇhòqÀCðHÆuÀcü<Äqdoð<ÄqÀc4 ‡8ø#xŒCð<Äáq€$ãÉ80Œ¬c4â€F่#ã<ÖqÀCù<Æ!ˆcâ‰8à‘q¬c4â€Ç:@"xˆùÇ:Äq¬ã FÜ2¹ˆã€F¨‡‘ˆã<ÆŒ€Dð‡8à1Ž|`d£Ç8ä2xˆcð<ò1`$ù<Äþ±Žqˆcã€Ç8ä2·ˆù[ÆáqÀc 8à1ŒâÉ80qÀc ñ<Æ!ˆcn<Æñã<Æ!¹ˆë€G>ÄáqÀcð‡8@âxˆã‡[0ŒL#ë‡8Öqˆâ‰8ø#ŽuÀC ɇ8Ü’qL#ë€Ç8à1qÀcüÄq€Dð‡[ÆŒPoâ€Ç8à1·äãÇôò1Œd/ðð<Äá–q`Ç:Fq€dð<Ä’Ñ€dnHÄu€D  H<þ|ˆƒ[ŒÃô¬<„€( #FÀƒ8Àƒ&üÃ>¼€ ¼€ € € € € ¼€ € € € ¼€ ¼€ € € € ¼€ ¤‹ @˜À/„@þ‚&„€ø š ˜À ˜ ¨–j‘€jÉÀ ¼€j‘€j‘€ ¤‹ 0¡ ¼€ ¼ ˜ ¼ ˜À ˜ ¨VºÀšªá ! ¼@º˜@º¨ ˜À € È܃j½€jÉŽÂ?¬Ã8ÀÃ:Œ<¬Ã8ÀÃ:Œ<¬Ã8ÀÃ:Œ<¬Ã8ÀÃ:Œ<¬Ã8PCäA€Ã8PÃŒÀƒ8Œ<ŒHŒF>ˆÃ:Œ<ˆÃ8ˆÃhÀƒ8Àƒ8ŒC>Œþ<¬ÃhÀƒ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃhäƒ8€„8€„8äƒ8Œ†8ÀÃ8ÀÃ8ÀÃ8ÀÃ8Àƒ8Àƒ8Œƒ8äƒ8À ÀÀÃ8¸Å:dƒ(ŒHŒC>ˆÃ8Àƒ8€„8€FÀƒ8Àƒ8ÀÃ8L8€Ä8ÀÃ8Àƒ8ÀÃ8Àƒ8ÈF€„8ÀF€„8ÀÃ8€F€„8€FŒHŒ<ˆÃ8ˆC>€„8È…8ä<ˆHˆƒ[ˆ<ŒHˆÀÃ8ÀÃ8€Ä8ÀÃ8¬ƒ[ˆ<¬FÀƒ8¸…8Àƒ8ÀÃ8¸…8äƒ8¸…8Œ<Œ<ˆþH¬HˆC>ÀFÀƒ8ð‡8ä<`Ä:€Ä:ˆC>`Ä8`<`<Œ<ˆÃhÀƒ8Àƒ8€Ä8ÀÃ:ˆHŒC>ÀÃ:ˆ<ˆ<ˆ<ŒC>ˆÃ8¸Å:ˆC>Œƒ8Àƒ8ÀÃ8€Ä8äƒ[xÄ8¸ÅhäHˆC>`Ä8ÈÅ8ä<ˆƒ\`<ˆC>È…8Œ<Œ<Œ<ˆƒ[ŒC>ÀÃ8ÈÅ8ÀÃh€Ä8€„8äƒ8ä<Œƒ\ˆHˆHŒƒ[ˆõˆƒ[ˆƒ[ˆƒ[ˆHˆ<Œ<ˆ<¬HˆÃhÀƒ8Œ<¬ƒ8Àƒ8Œ<Œƒ\`<ˆH`<Œƒ8Œƒ[`H`Ä8€„GþŒ<ˆƒ\ˆÃ8ÀÃ8Àƒ8Àƒ8ÀÃ8äFŒƒ8Œ<ˆƒ[ˆ<Œ<¬ƒ8€„8Àƒ8ÀÃ8Àƒ8ŒÆôŒ<ŒC>€„8¸Å8äF€FÀƒ8€Ä8€„8ŒF>ŒˆÃôŒ<ˆÃ8ÀÃ:ÀÃ8Àƒ8Àƒ8Àƒ8„À(ü# €[¬ƒ8hB?ì ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜ ˜@º¼€ „€ @DŒj…€ ¨¾ ! ¼@º¨šÀ € ¼ ˜À À €’€j½€j‘À ˜ ˜þ ˜ ¼€ À €j‘À ¤Ë ¤‹ ¼ ˜ª ˜ ˜À ¤‹ € ÈÀÀTƒ0€ À €j‘(äC>`D>`D>`D>`D>`D>`D>`D>xÄ:0Cœƒ<Á:PÃ`„ °€8œÃ ð`D>`D>`D>`D>`D>`D>`D>`D>`D>`D>`D>`D>`D>`D>`D>`D>`D>`D>`D>`D>˜<`D>ÀÃ8€„8äƒ8€„GÀƒGäÃIäƒ8äƒ8€„G€D>˜D>ˆC>ˆHxD>ˆC>ˆHˆC>ˆHxþH`D>ˆH`Hˆ<ˆ<ˆ<ˆÃ:€FÀƒ8¬C>ˆÃ:ÀÃ8`<ä<ˆC>ˆ<ˆ<ˆÃ:`<ˆC>ˆxD>`D>Œ<ŒHŒƒ8ÀÃFˆC>ÀƒGäƒGäƒ8Àƒ8ÀC>ŒÃ:Àƒ8¬C@À8¬ƒ8€Ä2Œ‚8Àƒ8€„8€„8¸Å8€„8Àƒ8ÀFÀÃ8ˆÃ8ˆHŒ<`D>Œ<ŒFÀƒ8Àƒ8È…8ðÇ8ÀÃ8`„\ˆHŒHäÃ8Àƒ8€D>Œ<ŒHŒ<Œ<ŒÆôˆ<`<Œ¬<ŒHˆHäƒ8ÀÃhÀƒ8Œƒ8ÀFÀÃhþ`D>ˆÃ8äÃ8äÃ8ÀÃ8¸…8L8ÈFÀÃ8ÀÃ8€Ä8€FäÃ8¸F€Ä8LÏ8ˆ<Œ<ŒHl<ˆ<¬HäHˆƒ[ˆHäÃ:ˆƒ[Œ<ˆ<Œ<ˆ<ˆÃ:Œƒ8ðÇ8ˆÃ:ÀFÀƒ8Œ<Œƒ8ÈFÀƒ8¬ÃhÈE>ˆÃhäƒ8Œ<Œ<ŒHäƒ8¸…8¬Ã8ÀÃh`„\Œ<Œ<Œ<ˆ<`D>ˆHˆ<ˆ<ŒFÀÃ8ÀFäÃ:ÀƒG€Ä8ÀÃh`HŒHˆƒ[`„\ŒŒF€Ä8ð‡8€„8ä<ˆ<ˆÃ8LO>ˆƒ\äƒ8€„8ÀÃ8ÀFäÃ8Àƒ8€„8¬Hä<ˆƒ\Œ<Œƒ8ÈÅ8¸F€„8€Ä8€„8Àƒ8Àƒ8¬<Œƒ[`Ä:¸…8€„8Àƒ8Àƒ8Àƒ8ÀC>ˆÃ:ˆŒ<ˆC>ˆÃ8Àƒ8¬<ŒHŒ<ˆƒ[x<ˆHŒHlDˆÂ20BÀÃ:Àƒ8Àƒ&üÃ>€ € ¼€ ¼€ € € ¼€ € € € € € € € € €j‘€ ¼€ À ˜’€j¥Ë !¾€j‘!š ¨þ ¨ !¾À{›@º¨ ˜À ˜À ¨Ö ¨Ö À ! ! ˜À €j½@º˜ ˜ ˜À ˜ ˜  À5¸ƒ<è ˜ ¼€j¥‹ €Â?ŒHŒHŒHŒHŒHŒHŒHŒƒ[¬5À;À‚$3<„Ã$FCŒƒ8h€,Pà  „hÃ:ŒHŒHŒHŒHŒHŒHŒHŒHŒHŒHŒHŒHŒHŒHŒHŒHŒHŒHŒHŒH¬ƒ\ˆHŒ<`Ä8ÀÃ8ÀÃ8dÏ8ðÇ8ÀÃ8€„8ðÇ:ÈÅ8ÀÃ8€„8¸Å8þÀÃ8Àƒ8Œ<¬Hˆƒ\ˆHŒÃôˆ<ŒŒ†[ˆ<Œ<¬Ã8äƒ[¬Ã8ÀÃ8ðÇ:€„8ÀÃ8ðÇ8¸Å8€Ä8€„8Œ<ˆH¬HŒƒ\Œƒ[Œƒ[Œ<ŒHˆpû8äÃ:ÀÃ:ˆ2€<ˆ<ŒHˆHŒ<`Dö`<ä<Œ<ˆƒ[¬ƒ8ŒC>L8Œ<ˆHˆ<Œ<ˆÃ8äƒ\Œƒ[`<ŒÃ:`€Ä8Àƒ8Œƒ8¬ƒGŒ<ˆƒ[ˆþ<ˆÃ8€„8Àƒ8€FŒHx„[¬ƒ8ÀÃ8¸…8Œ<ˆÃ8Àƒ8ÀFÀFÀƒ8äÃ8Àƒ8ÈÅ:Ì´\ˆ<ˆÃ8Àƒ8ÀÃ:ˆ<ˆH`Hˆ<ŒC>€„8Àƒ8ŒC>ÀÃ8¸Å8ÀC>ŒC>€„8Àƒ8ð‡8äÃ8ÀÃ8ÀÃ:ŒC>ˆÃ8Àƒ8Àƒ8€D$ÁÃ8ˆƒ[ˆ<ˆC>ÈÅ8€„I€„8€Ä8€„8È…8€F¸Å8ˆƒ\Œ<ˆ<ˆC>€Ä8Àƒ8ÀÃ8ÀÃ8Àƒ8€ÄhÀÃ8äFäƒ8äÃ8Àƒ8€„8Àƒ8Œ<ˆ<`„[ˆÃ8€F€Ä:ˆƒ[ŒHŒ<ˆþƒ[`HˆÃhÈÅ8€Ä8ÀC>Œ<ˆxãÄÁ'Þ8qðÆ‰ƒ7N¼qâà;¸Þºü˧"µë¨ð_ÆgòP"b™`qàGxÆžqÄgqàGxÆžqÄgqàGxÆžqÄgqàGxÆžqÄgqàGxÆžqÄgœuç qÄi(ŸqÄg¡ƒÆžqà§¡qàqà§¡qà™è qàqàç qàqžqà§qGx‚gœƒÆÉgxÆqò'qGœu&g|ÆþÉg"xÄ9hœƒÆÉgqàqàqàg¡ƒòç …ÄGxÆgœ|Ægœ|&'Ÿ…à§!gqÖç i@9HxÆGxÄÁIœqà''x&ç qàç |ÆgxÆgxòç qàg!xÄg"qàYq'qò'xÄÁIxÄ9hxÄ9HxÆgqà'ŸqàGœœ:h!xògœÆg‰rZ§¡|Æ9h¢†ÄgxÆÉ)qržqZ¨¡|ÄGœƒÆ žqÄ9h¡uà'qòžqà§!qÖ Wœ†ÄiHœuþÆqàgqÄ9hqàGœu&‚GœƒÆgœƒÆqàžupç qòç qà'§aáGxÄažqà™è qÆ''qàç qGxÖ9hxÆÉGœƒÄ§œ†ÆÉGxÄYç uàg¡ƒÄi(qÂç …pg†ÆÉGœqò§!qž|Äg؃ÆžqÄ9h¡|àç qGœp':hœ|ÄqòYžqZè q&‚g!ù‡82ކŒã ãXHNÒqÀcù‡8ò1xˆ〇82Ž|Œã 〇8à1Žƒäc9YÈAÄþqDLGNÖQ ƒ€‡8Ö±Qüc&x H`˜€9&x H`‚˜€&x ^`˜€&x H`‚˜€& Ác^`Ï0‡/˜Ìc^@LÆ/ Ác^@‚ǼÀ$xÌ £¼à1/0 L0™˜`2/0 C‚ÇÀ/ ÁcH`‚ɘ€™Œ ^ð˜€&x C‚ÇLÆ$xÌ H`€âð<Æ‘xŒ#ðG>à1Ž|Àcù8ÈB౎…Œƒ€8¨H`Ý@4lµxÄ‚*Å6 0¬ãÈ<Æ‘þxŒ#ðG>à1Ž|Àcù€Ç8òqäãÈ<Æ‘xŒ#ðG>à1Ž|Àcù€Ç8òqäãÈ<Æ‘xŒ#YÈ8ÄqÀCù€‡8ÆqqàdðÇAÄÑqÀCÇAÄqˆ# ɇ8à!Žƒˆã â<Äqqàd!ð<Ä1xˆâÈNlq¬ÃVð<Ö±xŒã É<Ö!Ž|ÀCãÇ8ò!ŽƒØjðÇ:Äqq4DG>"Žq¬CãÀ‰8à!Ž|,d¶‡8ò!ŽuDðÇ:Ä€ƒ¬ë8ˆ8–! þxˆ Á‰8ÆqÀ#¶š<Æqäâhˆ8&²qÀÃVðÇDà1ŽƒŒ#9G>à!ŽƒŒ£!â€Ç82xŒãhˆ8Æ“uŒ#GCÄ1Ž|4d¶ÂÉ8²†¬CÇ8à!ùˆ#â<Äqqdâ<Ä‘qˆ£!âG>Æ!xŒ〇8Æq…ÀCðÇA†5ކˆcù<Æqq4D8YÈ8à±xˆ# GCÖ1xˆcâ8È8r"ŽƒˆãÀI>à!Žqä'ëG>Æqqä G>à!xˆ#â<ÒqþÀcðN2qDùX<Ä‘“…L$ ÉÇ8"ކŒ£!¶:È8Ä‘xˆâÇAÄ1Žƒˆã ë€Ç8à!ŽqÀCð<Æqäã ã8È8à჌â<‚“qd!<Ä1xˆâ€ÇD²q¬ãȇ8ò±|DðNqÀÃVð<Æ…äCðXÈ8à±x¬ÃV9<ò!ކŒ£! <qäã ã€Ç8à!ކˆcÇ:Äq…D〇8à!ŽuˆcâÈÇA2x¬c!ð<Ĺƒ,dð˜<ÄqŒþCðGFñ F 'ëÐÄ?öAÀ/0 3À/ H`˜à& H`‚˜€&˜Œ &c¼€! H`‚ɘ€& H`‚˜€& H`‚˜`2&ðÌ L0™˜`2& Á LðÀ/x L0Læy HðÀ/0ÁdLðÀ/0 L@‚ÇLÆ“y L0Læ&E>à±q¬câXÇ8ıŽqˆcãÇ:Æ!Žƒ,¤!ë`Fà!x`AX‡8\ÀqÀÜ8:€mŒ#øÄ:ıŽqˆcþãÇ:Æ!ŽuŒCë‡8Ö1q¬câXÇ8ıŽqˆcãÇ:Æ!ŽuŒCë‡8Ö1q¬câXÇ8ıŽqˆcãÇ:Æ!ŽƒäÄ¡!Æá ÄÆá Äá â ÄÄÄÄÄ¡!Äá ÄÆá ÆÄÄaBà!ÄÄ¡!ÄaBb!b"Äa 'Æá l¥!ÖaÄÖabÆÄ'òaàaBàAàAàAàAÖÆÄá òAbbbrbàaÖ!\ÖAàAàAäã –ArbÄáþ òAàa""Ä"&ÄaÄòAÖÄ!'òaàa!àAÖÆAàAàaÆ¡!Ä&â ÄÆ!Æ!ÆaàaÄòaàABÖab"ÄĆepbXòAÆ'&bà!Ä'ÖÄÖÄaà!ÄÆAbÄÄÄl¥!ÄÆá ÄÄ¡!Ä!Äá Æá ÄÄÄÄÆAb"àApbb"ÄaàAòAà!àaàAàAàAÆÖA"ÆÆþAÖaàAÖaÖÆAàaÄÆá ÄaÆ¡!ÆÄÖá ÆArBÆÆá òaÖ!'†E"Äab'Ä!'Æ!àa"ÂVà!&â ÆlòaBàÁVÖaàa!àa!òa"Äá Ä¡!ÄÆÄÄá Äá ÄòaBòAàaÄá òaàAbb"Ä¡!&ÆÁà"Æá ÆÄiÆ!\ÆAòaÖ&Æá òaBÖaàAàAbBàAàabBþà!Æ¡!ÖòaXBpBòabÄÆAàAÆ¡!"Äá ÄòÆá B@–ÄA>ÖAúaî?óS?÷“?ùóîóòaþ@ûS?û?óáîóð3î³ú3øóîó Cûóîóö¡þ¡?ûa@ábòÆ!àaòÆ!àaÄá Ö'Äa¨ÄÄ! Ä!Ð `@ òA¼!&`Ä ÖÆ!àaòÆ!àaòÆ!àaòÆ!àaòÆ!àaòþÆ!àaòÆ!àaòÆ!àaòÆ!àaòÖAàaàa"BÆÆá ÄÆá ÄsÆ!'ÆÆá Ä¡!ÆÄapbb"pb"à!Ä'Ä'Äá ÄÄÆá ÄaàabàArBÖÆ!bÄÄÄ¡!ÆÆÖAÆÆ'Æ!'ÆÄá Äa"àaàAàabàaBàabàaàaÄaÄÄaBäcFab!àA&â Äá ÆÆÄá ÖÄá Äá ÆsÆþaÄ!\Æ!bàAàAbòAb!ÆAÆ!BàaàAb!b!àAò'"Ä'Ä!Äa"òAÆÆ!ÄÆaàAb!àaBàABàA&Æ!b! NÆá "\ÄaàaàAàAÆ'ÄÄá Äá Æ!Äá Ædv"àa"ÖÆ&Äá ÄÆòÄá ÆadÆ!Bb!Æ!àaòá Ä¡!Æ!ÆAàABb!àaàa!Æòa!àa"rbàAàaòAþòá &â ÆÖ¡!ÆÄá Äá Æá bBàApb"Ä!ÆÄ!'ÖAàAàApBÂeÄ!àABÆá â Ä'ÄaàaÖAàa"àaBàaàaÆá Æá ÄÆÆ!ÄÄá ÄÄaÂEàabàAàaBb!àAàaÄaàAòAbòa"àAÆÄá Äá ÄÄd'ÆÆÄaàaàaÖAàAàa"Öá ÄaBÆÆÖAÆÄâ Æ!ÄabþàAb"àAàAB@–à ÄaÄATÿatù>ÿaþaþaþaùöA’+™@÷Á’ÿ¡¹:9“ t2¹>¹>Y’û@ûÁ”W™@÷!“û@AáÄÄaÆAÖaÄaÆAÖaÖ¡!ÄÆÆá Ö!'sÆaàa!Æ¡!ÆAàAÖaÄaÆAÖaÄaÆAÖaÄaÆAÖaÄaÆAÖaÄaÆAÖaÄaÆAÖaÄaÆAÖaÄaÆAÖaÄaÆaBàAòa"à!ÆþÄ!Äá ÄÆÄaÄÄ&BàAàAàAbÄ!ÄòaÄdÄá ÄaÄ!ÄÆÆAàAbàAàaÄ¡!Ä!&"&BfáAàaBàAÖaÄ¡!ÖAàa!àAàa!"dÄÄÄaÄ'Äá â ÄÄ&â Äd6Äá Ö¡!ÖAàAàaÄa¦aÄÆ'Äá ÆÄÄÄ¡!ÆaÄ!'ÆAàA&&b!BàaÄbÆAàApBþàAbÄ¡!òÖapBBpBpbàAàabàAÆa!àabàAàAb!rBBòa"àAÂEBÖa"BàAÆÆ¡!òapBàaàaà!Æ¡!Äòa"Ä!'Æá bàAÆ!Ä¡!òa!òAÖ!\Ä¡!Ä¡!Ä&¢!ÄapBÖa"ÂEÖaÄa&Äá ÄaÄ'Æá Æ¡!â òa"BàAb"â ÄaàaXÄá Ä!ÆAàadö Æá Äá ÄÄ¡!Æá Æ!ÖÆaþ!àAb" nàAàaÄÆá Öá Æá òaBbÄá ÄÄ¡!Ä!Æ!ÆAb!pBfÅÄá dö Äá ÆÆòa"Äaàab!àaòaàa!àAbÄá Ä'òAàabÄÄ!ÆòabàA nÄ"ÄòaÄÄ¡!ÆÄ!ÆAòòaÄá ÄÄ¡!òArBàaàAàaàaBÆ!Æ'Ö!DàAàAàAX™à ^÷Áà^ážá þÄÆþ!àaòÆ!àaòAÆÄÆ!ÄaÄÄÄ¡!ÄaàAàAàA>@Y Æ!àaòÆ!àaòÆ!àaòÆ!àaòÆ!àaòÆ!àaòÆ!àaòÆ!àaòÆ!àaòABÖaòA&â â ÆÆá dvò'Ä!Bpb!àaàaÖA˜FBàaBàAàab!Æá Ä!'Æ!Ä¡!ÆAò!'Ä!ÄaBBàAàAÖþÖ'Äá ÄaÖ¡!Æ¡!ÆòÄ¡!Ä¡!Ä'ÄÄá Ä"ÖAàAbàAàAäcrBàa–àa!Æ'ÄÄá ÄÄÄÄ!Äá Ä& òÁO\>qâòÁ[8n¡¸…ÅA7NÜBqðÆËOœÆqðÄ­ƒ7⸅ãài„(ž¸qðB/ÄuðŽ[(Þ8ˆãÄÁq¼qùÄ-OÜ8ˆâŽË'ná8ˆó}'Þ8x⊃'nÜ:„㎃'.¼qðă'ž¸…㊷p¼u ×-oq!ŽËo\>q Å-\·P<„ðN†§Q\¾qðÄÁËoqùà!„·NÜBqŽÇåQœcq ÅÁ7ž¸uâÆås¬1Ÿ8xãÄÁO<„Å-7Þ8qðŽƒ'nDqãà‰ƒ7nò8qðŒ#Î:âL6ÎBâ8&ÎjðŒ³Bðˆ£‘8ùÀ#<âÀ#ÎB­#Dâ,„ÐBã,4Ž8Á3<åÏ8 ‰3<âŒ8 ‰8ðˆ3ÎB9¶<å‘8ðˆ8ð¬#<­#ŽcâÀ³ÕBãÀ3ÎB-„þ<-$Î:Á#Î:â„0Ê2Œ Ñ:ðhòÏœtÖiçxæIg!|öÉç>z*è „j¨žû€ò<ëÀ³Î8â¬3Ž8ëŒ#Î:ð ´8ë,$<ë,´Ž8ðˆ8ð¬#<â,„<âÀ³Î¬³Â3+<ëŒ#Î:㈳Î8â¬3Ž8ëŒ#Î:㈳Î8â¬3Ž8ëŒ#Î:㈳Î8â¬3Ž8ëŒ#Î:㈳Î8â¬3Ž8ëŒ#Î:ðŒ#DëŒ8ñL6Ž8ðˆ³šFâŒ#<‰‘8ã¬&Dâ,4Ž8 ‰Ñ:ðˆã˜8ðŒ³P>ã@4Ž8Á3<ãÀ3ÎBãÀ3<â,4þ<âÀ3<³2Ï8ðˆ3™8“Ï8âÀ#<A4<⌳8ðŒ#óBA4+<â,4ÎBâä#Î8⌳Ð:âÀ³Œ( å3Ž8ã,$ŽÌãÀ3<ãˆBùŒãØ: }$N>㈳8ðŒ‘8 å3<ã,$N>Á“8ðˆ8ðˆ8ã 8ðˆ“Ï8âŒ8ðä3DâŒ#<!$ÎBùŒB ‰³Ð8âÀ3Ž8ð¬3<ãÀƒ<Á3<âÀ#ÎB㈓Ï8â8&N>âäê ‰8ðä3ÎBâÀ3Ž8 i$ÎBÁ#DâL6Ž8ðŒÏ8ðŒ£z>â¬þ#Dâ,„<Á“8 ÇGÄqÀcðG>ÄqÀCë‡8Öq,Dð<Æ!³qˆ〇82q,ä#Ç:4²ˆcð‡cƱq@dðÇ8q,D#D‘|Œã<Ä‘qÀ! ÇBÄ‘qˆc!â€G>Æ!Ljc!â€Ç8‚…äC#â€B"x¬c!YBd†…ŒCù‡8“…Œc! 8–6Ž…ˆ"ã<Æ!xˆc! 8ò¡qÀcðÈÇ8à‘qÀC <Æ|h"â€Ç8à1qÀCþ#âXÈ8à!Ž…Œc!ëDÄ1ˆˆ#âXÈ8Ä„0H<Ö±qÀc (~ÁÀcð@È(ÅM;õCûÈÇ>ƹX¢›èL§:Š,DãÈ<Æ‘xŒ#ðXDƱuŒ"âX‡8³Ž…ˆÃ1âXˆ8à!xˆ‡8Ö!ŽqäãÈ<Æ‘xŒ#ðG>à1Ž|Àcù€Ç8òqäãÈ<Æ‘xŒ#ðG>à1Ž|Àcù€Ç8òqä뀇82xˆ"â‡8‚ˆˆãXˆ8à!xä" 8à!x þ〇8 2Ž…h$ðÇ82x d!âÇBÆ‘À!É<Ä‘„ÀCãȇ8à!xˆc!ã€Ç:"Ž|À!ã€Ç8Ä1qÀ!〇8à¡‘…ˆcðÇ:Äq@Dð<ı„,DuðÇGà!ˆˆ 8ƱqÀCð<4’x ë€Ç:¦1 xŒ 8à1Ž…ˆ〇Fà!ˆˆÃ1ëÇG౎qÀCù<Ö!Ž…Œc!Ñ<Ä¡x â€Ç:2ŽuÀCðX<ÄqÀ#ŽÇBÄq,dëÇBÄ|,!ùþ€È8à±qŒâXÈ8 "Ž…Œ# A<ı„,Dð<ıqÀcðÐ<ÆqLfŽY‡8 "Ž|ÀCðXG>à!ŽÕŒc!â<ÄqÀ!ðÇ8ò‘q8f DÄ‘u,Dðȇ8òqÀcù<Ö„,dù€ˆ8Ʊq,DãÇ8à!ŽqÀ! A<ÄqŒ#ëÈDÆ‘„Œ#ŽÇ8à1xˆ〈êà‘ˆˆãȇ8à¡‘…ˆÃ1Y<ÄqÀc“<Ä1ˆ d!ãXÈ:ıq¬!“ÑH>Ä1q@dþDÄ1qhã€È8à!x¬C‡FÄqŒc2Ç8à1qÀCðDÆ‘xŒ#ÇBÄäc!âÇ:Ä¡ˆŒ 8àá|ˆc!ãXBòqÀCð<Äqäcð<Ä1Ž… ã€Ç:à!xˆâXÈ8"ŽqL! YDıq„Ë`ÄÄuÀcšX'7 ±|ì#ûÈG1`Qˆ}èIº:Õ!±j£è‡8à!ŽuŒCë‡8Ö1q,dù<Æ‘q¬CY<ıqÌ ´<ÖáqÀC þ<Äq¬câXÇ8ıŽqˆcãÇ:Æ!ŽuŒCë‡8Ö1q¬câXÇ8ıŽqˆcãÇ:Æ!ŽuŒCë‡8Ö1q¬c êà…äãDı„ÀcðÈÇB4‚¥!â‡êà!Ž|hù‡ê 2xäCð<Ä‘q,$âÇBÖ±qÀC !ð ð ð ð ð0ð  ùââ°ù0 !ù0 «!“!«!ù  1ãù ããã°ãàâ@+È  âàâã ð :ùþ !¡ð0ðââ0ù ð°ð01ââ°ù  !ð Ž1‘ã°4!1Ž1ù0 !ððâ°ë0 !ð0ðããââ°ã  !ð  12ƒ 1 !ð ù0âë  1ð ð ã  !¡ð€ë0 1ð ð0±â°âàââ°ð0 ñããã°ã ëã°ã±â°âëââ°ã€ð‘ã ðð€ðþââ0â°â°â0ð0â°ââëã€ð ù0ð Žñâ°â°‘â°ã ù°±ù0ªãàâã Ž!ð0“!!ð0ð :ëã  1 1ª³âù :â°±ã°ã ð  !ðãâã€ùâ°âã€ð0âãâ0 !ð âù0ðëââ°ã!ð  1 !«1ð áâàâ0âãâþâ±ã뢀 Œð ð°ã0 ý`v‚²ÿ ùp ³p “°ÔP °Py’ì ù'ôÀ®y'ùÀPœy¢ ýëÀ ë°ââ0ð€ãëë ð  ± !ë±´2+K³žìÙžî ë°â0 òð ð0!áã ããâ°ãùããâ0ë «!âãë ãëâ0ð°ãàã 3â±âàãàãë ã ð°áâãþââ°ã ð01 !ãëâ0ùââ ð ë ð ã±ð0ð  1+Ó 1ð0 !“±ð ã ð ‘ââ ð0ð ãã°â‘1ð°ð0 ‘!ãâ0ð0ù ë0âãã°âð ãâ0 ë ð ð0ùâàâ0 ã°âã1â°‘ããâã0â0 !ð°â°â‘âãùã°±âàþâ±ã ! ! 1«1ð ã ù ù°±â0ù0ð  ãââã°ëª3“! ¡ù ë ð0ëàã°ã°ãâã°ë°±ãëâ°âãޱáââ !ð01ù  !ð ð°âã°âàâ°ã 1ð  〠!ù°â0 “1ùãâã1!ããàã0âã!±âª³â°±â°â°þã ð0ðã°ââã°â0ë ãâ0âªâð0Ž!1ð ð :“!1 !ð :!ð0  !ð0ù  ! !ð ð ð !0 ¿À°âë0 ý œ"ù¾ê‹ù€‚°y¢ 'ì û`¾t¢€¿v ÿ ð°âë ð°â°ð  "ë°ãâ°ââë  ±ð€ë ðž´â0+âë ð°âë ð°âë ð°âë ðþ°âë ð°âë ð°âë ð°âë ð°â°ã°ââù€ã°ãù°áã€ð€ù0!ð0ð0ð ð€ðããã ðââëù  ð  !ð ð0ð0ð0â°â°ãã°ãã ‘ð0Ž1ð0 ! 1ð0ð0ð ð ù âù0ð0ð ëã ! 1+ð ð ù0 ¡:ð š ù€ð0 1ð0ð0þ ‘ð0ðâ°ð ðââàâãââ°ã ð ð0ð ð°ãâ°âë0ð0ù0F‰ð°ãù€«1â°â°ù ‘ã°1ã ð 1ð ð ù0‘⪳ù  1! !ù0ð0â1â°ããàââ°ð0 1 1ù ã  1ù ðããàâ°±â°ù ð ð0±ù ð ë ëàâãþð ð ã°âãã Ž!ð0ð ëëã ëããàâë  ð0â°ð0 !± 1â0âàãâÞ±â°ù°ã°±ù ! 1±ã€ !ð0 !ð0ð 1ãâ°âãàãâã  !!ðà â°â“‘ãù0ðã  ‘ð ! 1â! 1âãâã°ã°Á ãþ  «1â°±ãâàë! ËÀââ0šÐü‹'‚°º0 ¨P §0 “€‚`'öÐð‘ sb-0Pæð ÇðöÐ%`uÒô ¹ðü O ` ð¸` ð¹ðì UN' ðð€ð€ð€ð0!ð0ð  ±ââ°ëë°â°ëâ°â-ë  ð€ð€ð€ð€ð€ð€ð€ð€ð€ð€ð€ð€ð€ð€ð€ð€“ñù ð°þð ±âã°âà‘«!ð  1 ! !ð°ð0ù0ð0ù€ð ð0ð  !!ù !ð  !ð :ù€ð ããâ°1ù`”ù¡ð€ ð ð ð ð ð ð  1ð0ù ð0ù ã°ªãâ°â°â°âàë0±â0Ž!È0 ð°!ãââ¡ð ã°ã°1ð  ãã°âââââ°ã°±ð ã þ3ãޱ 1ð0ð ãð°ð0ð ù ±ãë ð  !ã°âã±ãë  1“1¡ð ð ð01ð0ð0ù°ã 1ð0ù°ââ0“ð€ð€ãâ°1ð0ëëâ°â0ã°ããë1ð0ð0ð0O ¼qÇÁ7n 8xâò‰—o Šƒ7.Dxó‰8DxAá­'PÜ@qðÆå8Þ:q5Ž['nÜ:qãÖ‰ƒ'.¨ÀqÇå(.Ÿ@ˆÅ›(p\>qãò‰(ž¸q! 'Pœ@ˆãòÁO\¾qðÄ OƱxˆC âˆ8Ö|ŒùÇ@ qäcð‡8òqÀcAÈ8à‘qÀc‡8Öq¬â€Ç8"xŒc ã˜È8Ä!qÀcÇ: "qˆc ã€Ç:B d0bã€Ç:ÄM°Èo\Q?îð]Ìb§(Åþ)±;ˆÇ0xŒ!€~ücùøG?ÈQ€¨CýÏ>òñ~£ýO?Àƒ… ÀÿPÇê±r ÿ òÁÀÑ•nÅ?Öq¬cýXQ>“ôC<ýèÇ?ò!ž|ô#®ÌGxúž~€§àéxúž~€§àéxúž~€§àéxúž~€§àéŠú`EýøG?R”õ#ýxåŠú‘ôCEýO?PÔ|†§)ÊGAÿÑ|ö#ÿfxú±"`®¨àéÇ?òñ|¬((Ç4D¡xÅlY‡8ƱˆÀ"ëÇ:þN:xŒ#Ç8"ŒCf‡@ 2qE ^G>2Ž|ˆC  8à!މŒ#1›8‘ˆc<Æ!qœ‡Fò!Ž LDã€<Äq¬C‡8ò1ˆÀCðG>Ì”|ˆùˆ8Æqeâ‡@Æuˆâ0D‘q˜MðÇ8ò!q Dð€ÈDÄqÀCãX‡8"މŒã€Dà1xˆ#Ç82Ž|@D ãˆ82Ž|˜M<Ä1Ž| DðG>2qÀc<‚"ŽqÀ"A‰8àþ!ˆC Aɇ8Æ‘xˆëGP²xˆC ‰8ƱˆDGPà‘qŒC ^ˆ8à1Žˆâ€Ç8à1qŒãˆ8à!Žqdð<‚’  D<Ö!މŒÃlãX‡8ƱqŒc"‡FైdâÈÇ8"Žq¬#%ãÈ<Æ! ÀCù‡8‘qDðÇ8à!މŒ#'…<Æ!ŽqäâÁ(~Áˆ@Ñ„Bõü~ì£w¨Ç;ÞáA»ÃÐw:ž}¨CàYE ЀàìÀ>³Š8 @Šö¡þŽÜ`ÿ`‡þ±vàû`‡þ¡ì9ŸûÅ?ÖuôÚ×ëã $‚â¶Î8â¬Ï8â $<Á3Ž8ðˆcØ8ðäó×8âÀ3Žaâ $Î@ãä3Ž8ùˆ3N>â $Î8ðŒ#Ô:ð¬#T>㈃#<ãÀ“8ðˆ3Ð83Ð8ðˆÏ8ÂC<âÀ#<ãÀ“Ï8â¬#Î@â ”Ï8Gå3N>â $Î: $<ãÀó<ãÀ#<â–Ï8#Î@âÀ3<ãÀó—Pãˆ#T>ãÀ3Î@ãˆ8QÏ:ãÀ#þÎ@ùŒ3UðŒÏ8ðˆUùPÏ8†#Î:â¬ó—Pâ5Ž8ëŒ#Î:‰³<8Ž3Uðˆ3Î@TÁ#<âä8ðˆ3P>âä3Î@ãÀ#<ãÀ3<âÀ3Ž8ùˆ8ðŒ8ðDO>â%<ãP5Ð8ùŒÏ8âä#Î@âä3ãÀ“8ë (ŽPãÀ#Î@â $Î@ùˆ3Ž8ðˆÏ8âÀ3Î@âÀCÕ@ãˆU­Ï:ð¬#Î@ã5<ëü%”8ëÀ3UjŽ#T>â $Î8‰3Ð8ðŒUðŒ38ðŒ8ãˆ3N>ãP8ðŒcØ_â þ´¹ŽÿÓÏAý,Ôå å³P>‹Ž&ÿˆ³Ž8ùDUù¬Ý8ð5<â¬8ë%<â¬#N>ðDGU>ðDÏðÉ+¿<óÍ;Ÿü:ãÀ“8ðˆ8‰“UëP5N>âÀCÖA•qÀCëG>¢ªÀCù<ÄqŒ#ð‡aÄ1Ž|ŒC(〇8"Ž|P%ã€Ç:Ä1þqŒcÊ8Ö!x$/ë8–!Š¿ÀCG>àA•|ˆâˆ8Æq DðXÇ8ò1qÀCã€Ç_"5fðX‡8à!ŽŒâÈ8„2Ž|Àcð<þ2qäƒ*ðÇ@ƪüâÈ<¨qe<ÄqÀcðÇ:à1ŽˆÑÇ8à!xŒc â€G>à!xˆc뀇8à1xˆч8Bxˆcð<Ä1q…*ãX‡8à1xŒc Y‡8àñq¬ãŠ8òAxPeù<Ä1q „*ãX‡8Æqþ Dð  <Ä1qÀcðÇ@Æqä#:ãÈ<Ä1qF<Æ‘qFð‚Ö!qÀcðG>à±xŒ#TÇ82qäãÈÇ@Ä‘¡ˆ#âÈÇ8ÄaqHHðX‡8à1xˆã/ðXU2xŒ#TUౡPe â0Ì:à1xˆãÈÇ@Ä1qÀƒ*<Ä1x¬CBÇ@Ö!Žq¬ã€Ç8à!Žˆcð‡PÄq dð<ò!ª „*‡PÄ‘xˆC(TYU„BxŒâ€Ç8ò!xˆcG>„"xˆþcŽÖq DðÇ@¨qFãˆ8ò!Žqä 8"xPâ<Ö‘ˆâ(–ÁŒTYÇ(ú!ºõdùØG>d"_™°·¾ö½/N@ñuÀc‡8„"xˆA〇8²x¬C(AÐ8Ö!qб¾0† #Ž|üEBã€Ç8²Žˆc ãÀ°8„2Ž d†Ç@Æ1qÀc<Ä!‰CBë0Œ8Ö1qÀã/Z<Æ!qftÇ:Ô$ŽuˆãG>Äa˜q dâ€Ç82xäc†<Äu¨ þGð‡8à!Ž,cù<ò!xüe ã0Œ8à‘qÀcâ0 ŽÄ1qÀCùø <ÄqÀCð‡8„"¡ˆc :<ÄqÀã/âXÇ8t<qäcâ€Ç:„"xŒCBɇŽá±Žq Dù‡8à!xŒâ0Œ8 £ãˆC(Ÿ†‡8òñ—ŒCBÉÇ8„¢cxˆAâŠ8à¡ã|ŒÃ0ã‡Pò1Žäcâ€Ç8ò!ŽuÀCÇY<Äqˆã@8"xˆC(ãˆ8’q d†Ç@Ä1äÓð‡PÄq D‡Ž2ÃcþâÈ8"xˆã€Ç8à1xˆŸ†Ç_à1qFðÐ1<Ö1q¬câ€Ç:Æ¡cx¬ãÇ@Æ!¡ˆc âÊ8"Žˆc ㈎ó1q¬c â@Ð8Ä!qfâ€Ç8ò!Žˆcð<òq D†ÉÇ8"Žq ä/ÉÇ8à!xˆc ‡Ž2ŽŒ 8à±xüE†‡„Æ!xŒÃ0ãˆ8„2¡|:^<Æ|ŒâX<Æ1qÀãÓðȇ8ò1ŽŒC( 8"¡ŒCðÈÇ82ŽüåÂ 8p4£„@Èþ`ò!ެCýÀ¯èöÑõ³ýî?{AñuÀCã€Ç8Ä1xˆAâˆ8Œ<èØ@ˆÃ8ÀÃ:ˆ<ˆ<ˆC>Œƒaˆ<Œƒa¬‹] ªÉQˆ<ü<Œ<èØ@Œ<ˆƒPŒ<ˆÃ@ŒÃ@ˆ<ˆ<ˆÃ8Å8Àƒ8Œ<ŒÃ@Œ<ˆ<ˆÃ8 „8Àƒ8ÀÃ8ÀƒŽÁç Å:ÀÃ8…8TØ8Àƒ8ŒÃ@Œƒ8Œƒ8 Ä: ˆ8 „ŽÃ@ˆ<Œƒaˆ<ˆ<ŒÃ@ˆÃ8ˆƒPˆƒ¶Œƒaè<ŒÃ@ˆÃ8Àƒ8ŒƒPèØ8Àƒ8ŒÃ:ˆ‚¬Ã@ˆ<þˆÃ8†8䃎å<ˆ<Å4hÂ:ˆÃ_…8ÀÃ8äÃ8ÀÃ8ˆ<ü<ŒC> „8Àƒ8Àƒ8ä<ŒÃ@ˆ<Œƒ8äÃ8 „ŽÁƒŽÁÃ8ˆÃ@ˆÃ8 Ä8Æ8…Žå<ŒC>Å8 „8 Ä8ÀÃ8 Ä8ä<ˆÃ_¬ƒaˆ<ŒÃ@ˆƒPèØ@Œƒ8Àƒ8 Ä_Å8XØ8ˆC>Œ<¬Ã@ˆÃ8¬ƒ8ÀÃ8 È8 „8 „8HÈ:ˆ<ˆ<ŒC>Àƒ8Œ<¬ƒ8ÀÃ8¬ƒ8ÀƒŽ­<ˆƒPˆ<è<ˆC> „8ÀÃ_Å8†8Œ<ˆƒPˆÃ_ÀÃ8Àƒ8Àƒ8†þ8 „8 Ä8†8¬<ŒƒPˆÃ_ „8äƒPˆC> „8 „ŽÁƒ8 ˆ8ŒC>èØ8¨‰Žå<¬Ã8Àƒ8 È8äÃ@ˆƒPˆƒP¬<ˆƒPˆÃ@Œƒ8Àƒ8Œ<Œ<蘄ˆ<ˆƒa¬ƒ8 Ä8 Ä8…ŽÁÃ8…8 „Ž „8Œ<ŒÃ@Œ<ˆŽäÃ8…ŽÃ:èØ@ˆÃ8ˆC>ˆÃ_¬ƒŽÁƒ8Àƒ8Àƒ8äƒa|Ú8äÃ8ŧÁƒ8ÀÃ8ÀÃ8†ŽÁƒ8äÃ@è<ˆ<ˆ‚|š…‰Ã8¬ƒŽÁÃ:|ššŒ<¬ƒ8üE>Œ<ˆ<Œ‚|<Œ<ˆÃ_ „8ÀþC>ü<ˆÃ8ÀÃ8 „8 „8ÀÃ:äƒ8Àƒ8Àƒ8„À(ü#À@ …&ÀŸ~î'Âß>€B> D>Œƒ8ÀC>Œ<¬<Œ<ŒÃ@ˆ<äÃ8Å8ÀC>ˆ<¬Â @”À0ˆƒ¶Àƒ8äÃ8ˆÃQÀŽÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ_ÀÃ:Àƒ8äƒ8Àƒ8†8äƒ8Àƒ8ÀÃ8äƒ8 „8äÃ8ˆƒPŒ<ˆ<Œ<è<䃎ÁÃ8ˆÃ@ˆ<è˜aè˜PˆƒaþŒƒŽÁƒ8ÀÃ8ÀÃ: Ä8ÀÃ_ˆÃ8Àƒ8 D>ˆÃ8ˆ<ä<Œ<ˆ<ü<ˆÃ@ˆÃ@è˜Pˆ<Œ<ˆ<ŒÃ@ˆ<ˆ<ä<ü…8ÀC>ˆC>ˆC>ü…8Æ:ÀÃ8Àƒ8 „8Àƒ8E>ˆ<äÃ8Àƒ8Àƒ8À3Àlëè+PÀÀœÂ@üÅ@Œƒ8¬Ã4€<ä<ŒƒŽ „8¬ƒŽå<Œƒ8 „8¬Ã_Àƒ8Àƒ8ÀÃ:Œƒ8ÀÃ8 „8ÀÃ8ˆ<ˆƒ„ä<ˆÃ@ˆ<ŒƒŽ …8Àƒ8Å:Œƒ8¬<Œ<ˆ<ŒÃ@è<è<ˆÃ: „8äÃþ8¬<ˆƒPˆ<ŒÃ@ˆƒaŒC>Àƒ8 „Žåƒ8 „ŽÁŽ Ä8ÀÃ8 Ä8|<Œ<äÃ8Àƒ8äƒ8 „8Àƒ8ÀÃ8Àƒ8 Ä_ÀÃ8ÀÃ8 Ä8ÀƒŽÁÃ8ÀƒŽ „Ž!È: „8ÐÑ_…8äÃ_Àƒ8ÀÃ8ˆÃ@èØ@ŒÃ@äÃ:ÀƒŽ Å_ÀÃ8 „8…ކ8Àƒ8ÀÃ8ˆ<äƒ8ÀÃ8ÀŽˆ<¬<Œ<ˆƒPˆÃ@Œ<Œƒ8Àƒ8¬Ã@äÃ8ˆÃ@Œ<ˆÃ@¬Ã_ˆÃ@Œƒ8ÀÃ8Àƒ8¬Ã8¬Ã@Œƒ8Å_Å8ˆÃ@è˜Pˆ<ˆƒaˆÃ8ˆ<Œ<ˆþÃ@ü…aŒC>ˆ<ˆ<è˜PäÃ_ Ä8ˆƒPˆƒPè<è<䃎­ƒ8ÀÃ8ˆÃ@äÃ8 „8 D>ÀÃ8Àƒ8äÃ8HÈ8ÀÃ:ŒÃ@ŒƒPˆ<ˆ<ˆƒaˆÃ@ˆ<è<ü…Ph‹aˆ<ˆÃ:ÀÃ8 ˆ8…8ÀÃ8è<äÃ8…8Æ8ÀÃ8ÀÃ_ Ä8ÀC>ˆÃ8èØ@ˆ<ü<ˆƒaäÃ8ÀC>èØ@ˆÃ8ˆC>ˆ<äÃ8ˆ<ŒƒaŒƒ8¬<Œƒa„€(,# À_Àƒ8Àƒ&ô§Ÿ1ç(üƒ8ŒÃ:ˆÃ@¬ƒ8Œ<ˆC>è<Œ<ŒÃ:ˆÃ@èØ_œ+þÀdƒ5Ü$ƒ8äƒ8äÃ:ÀÃ:ˆÃ@èX>ˆC>|Z>|Z>|Z>|Z>|Z>|Z>|Z>|Z>|Z>|Z>|Z>|Z>ˆ<¬<<ˆ<ˆÃ8Àƒ8ÀÃ8…ŽÃ@ˆ<¬ƒ8ÀÃ8ˆÃ8äÃ@|Ú@¬Ã8 „8ä<ˆ‚ˆÃ8ˆƒPˆƒ„èØ@ˆ<|<èX>èX>Àƒ8 „8ü<äÃ@Œ<ˆÃ@èX>ˆÃ@ˆ<¬ƒPˆÃ:ˆ<|Ú@ˆ<ˆ<ˆ<ü<ˆC>ÀÃ_ÀÃ8 „8ä<Œ<Œ<ˆ<ˆÃ@ˆÃ:Àƒ8¬<Œ<Œ<ŒÃ:ÀÃ:Àƒ8Àƒ80þˆƒ7xÃ8¬<8Ã/L2x<¬C>Œƒ8ä<ˆÃ4hÂ8¬ƒŽ …8ÀÃ8 Ä_ä<ˆÃ@ŒC>ˆ‚ŒC>ÀƒŽÁƒ8¨É8ÀÃ8ÀŽÀƒ8 „8äÃ@ü…aˆÃ8ÀÃ8ä<¬<è<ˆC>ŒƒPˆÃ@ˆÃ@ˆÃ8 „8ÀÃ8Àƒ8Àƒ8 „8ŒÃ@ˆÃ8Àƒ8äƒ7 Ä8Å8ÀÃ8†8äƒ8Œƒ8äçIˆ8ŒÃ:ˆÃ8ÀÃ8ÀÃ8†ŽÃ@ŒC>ˆ<ˆ<è<ˆƒaˆƒPŒ‚ˆÃ@ˆÃ8…8Àƒ8Œ<ˆ<¬C>ˆÃ8ˆ<Œƒ8äƒ8ÀƒŽIȧý…8þ†8ŒC>ˆ<ˆ<ŒÃ@ˆƒaüÅ@ˆ<èØ@¬Ã@ˆÃ8ÀC>ˆÃ@Œ<ˆÃ@ˆƒa|š8Æ_¬ƒ8ÀÃ8ÀƒŽ†8ä<ˆÃ8ä<ŒC>ˆ<ŒC>ˆÃ8Àƒ8 Ä8Àƒ8äƒ8Œ<ˆ<ŒC…‰Ã8Àƒ8ÀC>ÀƒŽÃ@ˆC>ˆÃ_ÀƒŽƒPˆÃ@Œ<Œ<è<ŒC>ÀÃ8ÀÃ8 „8…8Å:†Ž Ä8¬ƒ8Ž Ä8ÀÃ:ˆƒPŒ<ŒC>Œ<è<ˆƒ„ŒÃ@Œƒ„ˆƒPˆC>Œ<ˆ<¬C>ˆ<Œƒ8†8ÀƒŽÁÃ8Àƒ8ÀÃ8ˆÃ@ŒC>Å:ˆ<þŒƒaŒƒ8䃎Áƒ8äçý<äƒPˆ<ŒC>ˆÃ8†7Àƒ8ŒÃ: „8 Ä:ÀÃ8ÀÃ8Àƒ8ÀƒŽÁƒ8ÀÃ8ä<¬<ˆ<ˆ<ˆChÂ20Âè<è˜&ü¯÷º¯ÿ:°»°;±»±;²'»²ÿú>€Â?ÀÃ:Å8 „8ÀÃ8…8Àƒ8¬Ã@ˆÃ@äƒ8äÃ8,ÀÀƒŽƒ À8PCDP€ è<  @Ø€8À5Àpl@4ÀÃ8Å8Å8Å8Å8Å8Å8Å8Å8Å:ÀƒŽÁÃ8¬ƒaˆÃ@ŒÃ:ÀÃ8…8Àƒ8ÀÃ8…þ8Àƒ8¬Ã8HÈ8 Ä8ÀÃ_ÀÃ8ÀÃ8…8 Ä8 Ä8ˆ<Œ<Œ†Ã@ŒÃ@ˆÃ@ˆÃ@àÈ: „8Å8ÀÃ8ˆÃ@ˆƒaŒƒ„Œƒ„ˆƒPü…8 „8ÀÃ8ÀÃ_ˆ<è<ˆé<ˆ<ˆÃ:è˜aˆ3€8Àƒ8¬ƒ}ÃÃ8Bäƒ8Œƒ8ÀÃQÀƒ8L(¬ƒaŒÃ@ˆ<Œƒ8äÃ_Àƒ8Àƒ8¬<ü<Œ<ˆÃ:HˆŽÁƒ8Œ<|<ˆC>ˆƒPŒ<¬<ŒC>è<ˆÃ@èX>àˆ8Æ8蘚ˆ<äÃ8¬<ˆC>ŒƒPŒƒ8ÀƒŽ „8ÀÃ_ÀÃ_èþ<ŒC>ŒƒŽÁÃ8ˆ<¬<ˆ<ŒƒPèØ@Œƒ8ÀC>Œ<äÃ8 „ŽÁƒ8E>ŒƒŽ „8Àƒ8 „8 Ä8ÀÃ8Å8ä@Œƒ7N$Žqt$-ù0JNÄ‘£ÀC〇8r"§ˆcð0ŠAÆÑqÀCðÇ8r2Ž|ˆÃ ã€Ç:Æ‘£ŒÃ ãèÈ:à1x´ëȇQà!xŒ£#âȇ8à!Žq¬Cð<Ä‘§ˆâ0ˆ8:²qäà âG>Ö!ŽŒâŒ<Æaqh"Eu´ãñ˜G=þc ø‡8ò!ƒˆÃ ã€G>ÄaqD<ÆuÀƒˆ†AÆb Ô@4à!_$á@2ŒBŒˆƒ<ÄA ¬âèˆ8:"ŽŽˆ£#âèˆ8:"ŽŽˆ£#âþ€‡Qr"ŽŽŒÃ âX<Ä|ìâ€Ç8 bƒŒCÉÇNò!ŽqÀCëÇ:à1xˆFÇ8:’qD9G>ÄqÀC〇8à!Ž|ˆùGGÆqd<`Ó‘qˆcðȇ8:bxŒCð<Œ’qtÄ(ëHQÖÑ‘qÀcâ0H>à!§¬Cð<Æ!xˆãÈ3p€8ãG>Ö± kÌ€ë<Æa”ud €GZr"ƒ¬ã<ıxˆëHP>Ä£Dð‡SÆqˆ#'FG>ÆqÀC;þÇ: ²ŽDë€Ç8Œ’£dùGGÆa|ÀCë€Ç8à1qÀcð0ŠAÖ±qÄ--ð‡8ò±“ŽˆÃ â0H>ÖaqÀcù‡Qò1ŽŽâ<ÆqDðÈ<ÄÑq¬cðÇ:à1§Œ#〇8Ö1qÀcð<ÄÑ‘qÅ FÇ8Ä‘“qÀc>ð0 <ÄaqÀ#ã‡AÆaqÀCð‡8r"ƒŒCë0È8’7q$hâ€Ç8à1ƒ¬c'â€ÇN:2q¬cë€Ç8àa”Žˆ£#ã0J>Æ!ŽŽŒã0È8à!ƒˆ#âèˆþ8Ö!xŒù<ò1ŽŽˆ#'FÇ8ÄqD‡Qò1qäc'â€Ç8ÄqˆcÉÇ8à1ƒŒÃ ù؉AÆqDð‡8:2ŽŽˆã€Ç8r’qÄ(<ÆqD1 <Ä1§äCð<ıxŒCùÇ:à1ŽŽ%;‡8à!xŒcFY‡SŒqÀcð<ò1xˆ£#ë‡8Æ!ƒˆÃ â€Ç8à1ƒ¬c 8ÖuÀ#¢X#qÀCðÐÄM´Bl›ÛÛÆö·Á"PüãH8vbqÀc‡AþŒö`ÉÇ8ò±ŽXÔ@G¨!q0c0¸j`¡Fà!xˆ 8à!xˆ 8à!xˆ 8à!xˆ 8à!xˆÃ ã€Ç8:"xˆcà!ŽqÀCÇ:ÄaqÀ# 8ÖqäÃ(‡8òaqDðÇ:Äa´ìÄ ã€‡QòÄ!DòÁ ÆÄÁ Æ!'ŒÆAòa' b b>Ä¡#ŒÄÁ ÖAàa:bà!Œbœb' B:BrÂ(àaàÁ(ÖA bòÒb:BÆ!dòÄÆAòaà!Ä¡#ÆÁ ÄÆÄ¡#ŒÂ ÄþÄ!àaàa BàAàav"ÄaàAÆ¡#Œ"ÄÁ ÆÄÆ!àAòÁ( bÄ! BòAÆAòÆ!Ò¢#ÆAÆÁ ÄaòÁ ÖA bòAàAàÁ(:b:b:bàÁ(vÆaÄaÄÁ ÆÄ¡#Æ! BàAàaÄ! bà!Äv"àAòÁ ÄòaàaŒ"v"ÆÖÄaàAÆÄÁ ŒÂ)ÆÄÁ ÄÄæcàa:bàAàÁ( Bdà!ÆÆAvÆÄ¡#ÄþÖAàAàaàA bòÁ(àAàAàarbÄÄÁ ÄÁ ÆÄaÖA:B Bà!àa bÄÁ ÄaòAàaÄ¡#ÖAàAB@–ÄÖ4!ÜDd ö¡)› ar*©RCöaúAàa'àÁ(à!ÖÆÁ ÄÆ!Ä¡#ÒÖaž@ÖaÖAL@¨¢¡=b!Ä!@ÄaÄaÄ@Æa¨A Æ¡1Ç¡1Ç¡1Ç¡1Ç¡1Ç¡1Ç¡1Ç¡1 Â(òAàaàaà!vÄþŒbàAàA bàaòa'ÆÁ(<³1ÇAàa BàAsàAòaà!ÄaÄÄÁ òav³1ÇÆA BâŒÏ8Q8ð8tÐ8â$N>â8t8ã 7AâŒC8ãÀ#<CEðˆC8$9EãÀ#Î8ðˆ3<⌃AC8ëä)Î8‰3<Á#<âŒC8ãÀ“<â8þtÐ8ùŒÏ8âä#N>ã$<ãä#Aâä8­CÑ8ùDÑA$AâÀCA4Ž8$‰ƒœ8ŠÁ#AâÀ3<ãä#<ãÀ#Î8ðPEðŒƒÜ8âä#Î8‰CÒ8ðˆ3ÞAyÂ3N>ðˆEð8$N>QÏ8$“Eðˆã8Ï8‰3AãÀ³<âÀDAâÀ#ŽbùÀ3<â$N>ðˆ3A!·Î8$s8ëÀ#<â4N>‰3Ž8ðŒ“AãÀ3<⌳A⌓Ï8ðˆ3AãäC8ãÀ“8È“AâÀãP>Á3<ùÀ#Î80þ‰“EÁ3Î:ð¬#Aâ$ÎAâ$LÁ#N»âäP>ãÀC<âÀC<ùˆ“Aëä#<â¬#ŽhbŒAÄuŒ¢¾i`h]Ìb‚§˜Ä$ê!ˆÏØ €öñu 3ì À? 4àž¡‡rÑ~hà ó€%ð€jXBÈÅ?Ô!€×qˆDÜ(þ‘qDð‡Cı‚8ä ã€Gž"Ž@€€‰8à±xˆëAÆ1‚Œù€Ç8à!Žƒˆã â8ˆ8"Žƒˆã â@Ž8"xˆƒ !‰8àþ1ŠäÃ! 8ÖAŠdð<Æ!‚ˆcð<(B‡À#âXAò|ˆƒ ù<ÄqÀc<òtqÀ#Ç:(B’qÀc<(qd‡8à!xˆɇCà!xäCð‡8à1qÀCÇ:à‘qP&â ˆ82ŽvÁdâ ˆ8ÖAuÀc<$<Ä1 Mˆã ù‡8ò!}Š#ã€Eà!Ž|Œƒ"LÆqdAò!xŒCù€‡Cà1xˆ#â8H>Æ!‚P$ã<ò1‚äC$ÉÇ8Äþ“qDð‡8ò!‚äCðA(|Œã ã€Ç8’qˆë I>Äq|Œ#â ‰8"xŒƒ âȇ8ÆA‘uˆë€Ç8à1qÀCã È8ÄqqÀcY<ÖAq¬câ É8ò!xŒƒ$â8ˆ8"ŽqäcðpIÆA‚äCðAÄA<dâÐ'<Ä‘qdð<ÖŠÀc<(rq GëLÄA‡ˆã 9ˆ8ÖAqÀ#ÉS>ÆAŠÀCðÇAÆ!ŽqD<ò!Ž|8„"<ÆA|ŒC¡<ÄþqP„ ã IÄqqPdãAò1xˆã€Eò!xäcð<ıŠÀ#〇8àáxäÃ!‡8à1Ьã ˆ8ò1‚ˆ#ãXAòDqÀcɇ8à!‚Œƒ ã ‰8ÆqqŒƒ !ˆ8H"xˆc 82xˆcâ°í8à¡q¬ã8È:B d0ð<Ä1Môƒˆ|&â>@Ã輻<ò!ÏìC0؇?4 „°CÿØG?Ø!€}¨C¤ùÇ>þ±~ü#¨0°u  õÈCª°ÄA’qDðÈÓ8òqD0¡H>Ä1ŽuÀCŠqAÄ1ŽƒŒ#AÄqqÀƒ"G>ూˆy‚‡8Æq¬ã !Hžà!Žƒˆâ È8ò!ŽqÀÃ!ðG>à!Ž|DðG>Ä1Žuˆƒ 〉82xˆâ<ÆqÀþc 8`"ŽuˆcãÈEÆqÀcðX(âxˆë€Ç8à!xˆ!ˆ8`²qÀD〇8à!‚Pâ ‰CàAx8$â È8à±xŒCãX‡8à1‚ŒGð<(⃌ëIÆqŒƒ Ç:à1xŒã ã É8ò¡˜|äÉ!ëAÄ1ŽƒŒŠY‡8ÖqŒCÇ8B‘qÀcãÈI(Bqäâ€G>Ä1ùâë0ð0ð0$!1ð ãã ãpãpââ0ð ù@ð0ðþ ¡ð !!$1ùââãâ01ðàð@ð00!ðàù Að0ð0!ð°âã@â0ù íâ1áââpë $!ð0ù ð@ð ð01ð ë ùpâââàë ð0ð $1ù@‘Aã@ãã!ð ð !1ð0ë@í²â@ãâ0ð ðàùãAð0ð0ëãë ã 01áëpy2ð ð þã@âqAãã@ãð01ù !ð0âããë@âð°ð ð ë !0 ËÀë@ë  ¸†Ÿ±wðº0A„“P‚°A`ýðÆÿ ðýðì@ÿ ðý ’ý€@í°êõðäõðä@ý ?ùû ûâãpë@â@ã ð ð !!ëââëâ@ë@ð ð !‘â@âãù0!ã@þâãâ0!ð0ð ð ðð@ð0ã@âpã ð0ð â°ð0âyã@âpâ°ã@!ð $±ð ‘ââ@ââãâ°‘ââpù@ë0$!!ðã@âãpâ@âã ëâù ð ë0ð Aëâ@â%ãâ‘ãâ°ð ð ã!!ð ù0‘âë ±  âãpã 1!ùà1ðþ ãpã ð0ðããâ@ãâ°ð0âãã ð A±!!1A‘'ð@$1ð@1ð ð0ð0ë0ââ°‘âpãù !ù ±‘ð0Að ‘ã@ãããp±ãâã ù Að@ù ããpã@ðã@âð ðàâqù ð0‘'!ù@ã@âpã@ë0ð0ð@!ð0!ù !ð þð0â@âã@ã Aùàð°â@âã ‘ããã ð0ââã@ð !1ð0ð ð0!ëã@ã ‘âëãã ð ‘â°‘â@ã ð ëãâ°ð0Að'ëã ‘ââ@ââã ð $!ð ð0â0ð ð ëâ@ââàâ°ð0$!ð@ð ‘ð01ã ù ëâ°‘âââ`[1þù ð0‘ã ðàâã ë@â@ã Aù@ð ð â€! ¿À0ð°âš” Ùwàîð¥‹îðîp‘êûðû@ðì œ±ì ÿÀýðý @œÁðû ðûÀðì ¡k½ ðAð0ðà!ãð !ãpâ°ð ëâ@1±ð0!!È1ð0ð 1ùà ð@A!A1ù0$11ùpAŠ‘ð@!ùþ@ãÈAȱùâããë@1ëââ0$!¡ð0ð0â@âàë ð°y21$±â01â@ã@ã‘$áëpâ@ââpë@âã@ââââ Oë ãââ°ð°ð°ð0ŠAã1   ð°â‘ð ãã ð0ù ð@!ããð@ãâ0ù0â0ð0AAã@âëâë@ùpãâ@ã@ãpâþâ@âãâÈ1!!ð Aãëãããâ0ð ã°‘â0ð°ð0ð0âàð@01ð°ôyBâpâ0ù ã@âã@â@â@ãâ0ù0ð@±âpãpâð0ù ð !ãã ðàù0â@â0ùpââpâ@y2ð0!ð ð@!ð0A11ù $!ð@ð ð0ù@!ð°ð ù@â@ãââ@âþãpãâ00!ùâ0ë@â°ð@$!qãâ@1Aú4ð áð 11ùpâ@ãã@ââ@âã@ã@ë@ùã1ð $!ðPrã‘!ð°ð@ð°ð0ð00!ð0ð ã ð 1ù@ë ð@ùãð°ã ðàù@â@ã@âpâ!ð ð ! ËÀ@ð@š`½}¶œqõ  t §0 ˆàwÐa`ÿ°ÆþýÀ°ÿÐä@ýÀ ü >0Õðì ¤ÁÀì ý pà?¹£$Aù !ë01Aëãqë@ÕFâ@â°â°ð0$±ð0ð0ð@!ã ë 1$1â€ã ð ð ãâãâ°ð0âpãâã@âëàâ°ã 1â@ââ0ââ°A‘'ð0ð0!0‘Š!ð ð0âââââ@ù ëqââã°þð@ð 11ð0y’âà1â@â0â@âëã@ããââ@ãëãâ@âãã°ð 1ð0âë ã!ð0ââ@ã ð@ð0  ã@â°â@â°ð !‘ã ëpù0ð ë ð ð ð !$‘ã 1â@ã@ããqâyâã@â@yããâ@ââpââpâ°±ð ð $‘âù°þ±ð ð0ð ð ð 01ð ð ð°$!$11ð !ð á01ù0ð ë@$!áâã ð°ã 1âëãù01ù Aù0â@ãâ°ð0È1È‘ã ð0ú$A0Að0ë0ð0âãù ð@ëpâ@ã@ãã 1ù ð ð 1âââ@ù0qâ@âëâà 7n ¸|ãÄÁ7Pœ¸âƉ˜oœ¸ðÆÁ'.ãþÃŒâ2Â'^AqðƉXPqùÄ{¸Þ8qÇ|˜OÜ@qðÆ |8P\¾qåΉ8N¼‚#á­'nÝ8xâŠËWpÜÀqÇÁ[÷Þºqâà¸n]QÈP«éßcÈ‘%O¦\ù±>/î4»{çîf/û"«€ïž%ÿú-Èõßÿì0÷x;+ûþáÁð¯S‚zêÄ1qˆâÈ8à‘‡¬CðG>Æ!ŽŒ<âXGF ²q Dëx<Ö1q D†È2@ñxˆþâÈ8Äq ä!ð(<Ä‘qDùG>ÆqÀCðGFćÀCð<Æ1‡ ä!‡8"ŽŒù<ÆqˆC-ãG>Äq Dð<ćddâ€ÇCò1qdDð<Æ.xäCÇ:àŸ‘ˆ]ùÇ@ò1q Dð(<ÆqŒä!Y<Æ‘qÆ|ÀCGFÆq dâÈ8ò!Žä 82"xˆãˆ8’‡äcþÇ82xŒã!#<Æ!Ž‚ˆ##ãxÈ@Ä1qÀã!ðxÈHÄ1q¨eð<Äq dÇHÄ‘‡ØùGF "ŽŒˆãP‹8à1xˆvGF 2q >ðÇC2’qˆã<ÖQˆc ë‡8à!xŒã!ð<Ä¡$q Dë€Ç8Ä‘qddùÇ@Æ‘q dðG>Ä1‡¬CðxÈ@ÖuäcâPR>Æux*#â€Ç8ÄqÀcâXÇ8ıxŒâ€Ç8à±xŒãX‡8F²xˆCIãHD± F #þÅ mD/¸ãîhÇf4ãÈ죇!A˜À~ìCýHà> ³ôãùxL>}ê#‚âÇCà!ŽqÀ>ÉÈCÆ1q¬âX<Ä¡q¬c$†ˆ8"ŽŒŒc vY<Æ|À£ ë<¼‘qÀcj<|ÀCð<Æ1q¨EÏ8à±qŒÇ8ò!Ž‚ dðxH>2"xˆ##âÈGFÄQxˆcðxÈ8"x¬CÇ@Æ¡qÀã!Ç@Ä1Ž|ÀCùxÈ@Æ1q dù€ÇC"ŽŒŒùÇ@ć dðxþÈ@Æqˆcù<ÄQxŒC-〇8 2qÀcZÅ1Ž‘ˆc ëÈÈ:à1x¬ãˆa 3 PŒDyÈ@Ä¡qäcðXÇ@ÄuÀcâÉ8ò!Ž‚ŒdyZá!Ž|ŒDðÇ8Öñ|Œ#ðGFuÀCù‡áÅ1xˆc$ë<ÆqÀCðxÈ@ÆqÀÃ.ðÇ@Æ1’‡dDðx<Æuˆ〇8à1Žˆ#ÉÇCÄ1xˆ## ó×!tCðGFÄ1‡Àcð‡ZÆqŒ$Ç82Žuˆ£ yÈþ@qÀcùÈCÆq€‡qˆqqq€‡‡‡x‡Œ‡Œx‡|‡|Ȉ‚€‡q€‡uqq‡|ˆ‡€‡qq@qP qxxx‡xxx‡ŒxxX‡‡|‡qX‡‡x‡|€‡‚‰q€‡q‡‡|‡xˆ|€‡q€‡qÈq@+qȇŒ‡qXqqÈqȇqq€‡qÈxx‡| q€qx‡Œ‡xxXqq€qXxx‡uxˆxˆq€‡qȈu€qþˆq€qxXqÈqq‡uxˆu€qÈqq q€qÈx‡|ˆqÈq€qȇuxxX‡XqXxxxx‡qxx‡Єe`„qˆuÐT+ÇÇØ‡ðu\GvôÈØʇÚ‡Sˇ}ø‡|€Œ~؇Çè‡Çès HÚPø‡‘xȇqȈ|Xx‡ŒÈ‡‚‰u ³ƒqqXq€‡qµqÈq€qÈqXxxˆ‚‡|x‡|x‡|‡q€‡q †‡Œx xˆ|‡Œxþ‡Œ‡ŒÈ‡qXxÈqÈqXx‡|(ˆ‡ˆ‚xˆ‘€‡q€‡q€‡qˆ|‡È‡qˆ|‡‡uqX‡p>q€q‡‘x‡‡qX‡q€‡uÈçƒq€‡q‡u‡Œ‡qÈqXxq€qȈqxˆŒq€q€qXxx‡|‡|q€qXqˆ|‡xx‡‡q€‡q€qˆ|(qˆuxXq€‡up¾xxxxx˜PøJqÈqq€‡qxXq€‡q€qˆu€‡qˆqx‡þ‡|q€‡qȇq‰‡€‡qxxxðqq€‡|‡q(xq‡Œ‡x‡q€‡q€‡q‡ŒÈqqx‡‡‡¯‡|p¾|‡Œxxx‡Œ‡‡xx‡‡Œxx‡‡ŒÈqÈq€qȈuˆq€‡qx‡|xxˆŒqÈq‰q‡qxxxqxq€q€‡q‡Èq€‡q‡Œ‡‡‡uq q€‡u€‡qȇqˆqøÊ|x‡(ˆ‘‡‡uþ‡u€‡q€qȇqxx‡x‡uˆu€‡uÈqȈqxqˆ‚€qqq€q€qˆq q€‡q‡|xˆ¯\x‡Œxx(qȇ‚xˆ|xˆqXxqˆuçˆqxq »qÈqqx‡‡ˆ‡X‡qq€o€qˆq€‡|‡xxxxˆxÈx‡‡ŒX‡xˆ‘xˆ‡‘xxx‡‡q€‡|€q q€‡u€‡q‡q‰‚‡u‡‡X‡Œ(ˆ‡q€‡qÈqþȈ‡€‡|€‡qȈuQ@F€|€Ã‡Qè<µ~ȇ}ȇ|!ʇ~ØÚ‡|(¢}h *¢~84·}[È…€qȈqXq€‡q€‡q‡qˆq€‡u‡|qxx‡Uø€€x‡Xx‡|q€‡q€qX‡q€‡q€‡u€q qˆ<˜xqxJ`€mxÀ€‡q€j€xxp>xxxxxXq°‹ŒxX‡q€‡u‡|øJqȈqˆ‡‡»€q‡u‡q€‡u‡q€þqq€q‡¯xȇq‡qqȇ‡Œxx‡‘x‡|€‡qȇq€q€‡q€q€‡qˆqȇ¯‡| qÈx‡ŒXx‡XqXqøJq‡u€‡q‰‡€‡q€‡|xˆq€»‡|€qX‡‡uqÈq€¯‡XQqx‡‡Œxxˆ‘xxX‡xxxˆŒ(ˆ‡xxx‡Œ‡|Ȉ‡€‡|‡|€‡qˆqXq‡‘xxȇqˆ‡€‡qˆ‡È‡‡€q° x‡‡qȇqqþ‡|xxxˆqȈu€q‡xxxxq€‡‚ȇqȈ‡€q€q‡‡|‡|xXxx‡‡qȈqq€‡qȇ‡qx‡‡q€qøJqq€q€‡|€qÈq€‡|xˆŒ‡|€‡‚Xx‡|Ȉ‡‡Œ‡xx‡°ËuxˆqÈqxx‡Œp¾|»qȈq€‡‡€‡uxx‡¯ˆq‡‡‚€‡q‡|€‡qÈx‡qȇ‡€qq‡¯xxxxxxX‡xˆqþ€‡qÈqøÊ|x‡|‡X‡ŒxˆŒ‡ŒX‡|Ȉq€qq€‡q‡q€‡qȇ‡q€qˆq€‡|‡|q q€qqq€qxxxˆq(xxxxxXxX‡‘‡‘p>x‡¯|ˆqq(ˆ‡xXx‡|€‡q€q€qq€qȇ‡X‡qxX‡|Èq€çƒq€‡qøÊq€q€q€qQøF€q€‡‡X‡Qè¸îè‡}ø‡êé6¢~Ènî–î}…|ˆq€qÈqÈq€þçˆqx‡xV€=k¸HqqXx° xp¾‘xX‡‡‡Xx`†x‡ЀO8q(‚xx xx ‡‡¯|ˆ‡|‡ÈqqxXqȇqˆu€‡q€‡‡Èˆqȇq‡È‡‡€‡|‡|x‡xˆÈ‡q€‡‡Èˆ|‡Œq€‡qxÈqxx‡‡q€‡‡Øè‚‡uxˆxˆŒ(q€‡‚€‡‚‡u€‡q€‡q€‡q‰q€‡qˆqXxX‡x‡‡xx‡‘þx‡È‡qÈqˆqXxxˆx‡¯\‡ŒXq€‡ex‡xxx‡¯|ˆŒxxx‡¯‡qÈq€‡qq‰‡ˆqx(qqXx(q€‡qȇq€‡|q€q‰qx‡Œx‡¿Îqˆ‡q€‡‡qX‡‡Èq‰q€‡qˆ|‡¯‡‡xˆux‡Œ‡ŒÈqˆq‡qxxxxxȇ‚€q€‡qq‡Œ‡‡‘‡‘qq€qˆqȈq‡‡‘x(qþȇq»‡È‡q€qqˆ|x‡¿†q»Ì‡q‡‘Xx‡|x‡xxˆ¿^‡qxqÈx‡qÈqÈ»xðx‡uøÊq€‡|q€q‡¯‡¯x‡xˆ|xˆxx‡qˆuxxXx‡¯‡ŒqX‡‡|‡‡Èxx‡‘x‡xxqXx‡x‡‘x‡x‡¯‡xxxÈqøë‡€‡q€‡q€q€q€‡q‡‘xˆ‡ŒÈqˆþ|xq€‡q€‡u€‡qx‡‡Èˆ|€‡q€‡uqÈqÈ€OÜ:xãÄÁK¨Þ¸|ãÄÁ7N\BqðÖ% !j#ùÄ%\§©ß¿’&O¢L©r%Ë–._ÂŒ)s&JPÿà‰—p ‰“ÏBãÀ#N>ðä´Ž8ã¬#<â$$<ãä8ðŒ8ðäÏjð¬8Æ%$NPã($<⌓Dëˆ3<â,$Žqâä#ÎBâH8ðˆ£8ðˆONðˆ#Q>â$”<â(4ŽBâ$4ŽBâŒONTæÏ8ùÀþ3<ëÀ3<9Á8ð¬#Î8ðä”<ãÀ³Ž8 #NB-4NBãÀ3NB㵎8ðˆ3ŽBã(4NB9•<â(”<ùäÏ8 ‰ONðŒÏ:ù$$ÎBÁ“Ó8눣8ðˆ3Ž8ðˆ8ã$$<â,4ŽBãä“SBëÀ“<ãä#ŽDùˆ3ðŒ“BãÀ3<âþ¬3N>ë$4<ãÀ#Î:ãÀ#ŽBã$$<â¬#NBâä8 ‰³Ž8!h² #$„Ö:š¬T¸á‡#ž¸â‹3Þxã ü“8ðäÔ8â$4NBâÀ3NBùŒ#6$£Ð:± 5T‘ AÀ³Ž ,ˆƒÎ <ˆCMU€#NŒ“Ð8ð¬£ÂðP‚1ˆÃŒÚP#<ÔÏ8âP€ לÅðŒ#<ãÀ#Î8 å#Î:ð¬#ÎB㬣PN “SP9%$‘8ð¬“Ð89)$〇8à1xˆ#뀇8ò!ŽuŒ#'ðÇBÄQq¬c!âÈGN"ŽuHã€þ‡8’“„¬câX<ÄuŒCA<ò‘q$D ÉÇ8à‘xˆC!ãÈIPò!Ž„ˆùGPrqÀcâÈÇ8ÄœÀ#ãHÈ€€qˆC!ÓÐDBıބŒ#"Žq(DðG>2xˆ# YÍ:Äþ¡œÀcâ<Ö‘q($'〇8"Žq,D«Ç:"xŒ#â€GNà1Ž Œ# ‡BÄqÀc5 GBÆuˆ£0ãG>"x¬f <Ʊxˆâ‡BÖ‘qÀcâÊ:Äq ãÈ<Ð"ŽeŒB <Ä1qäâPˆ8à‘xHd!ãÈGB$²q$dðÇ8"xˆ#!ãȇ8౎|ä$ðÇ:Æ!ŽqÀCãX‡8à1Ž„ˆc!âGBÄqŒâ€Ç:à!…Œ#!ãÈGBrqÀƒ:ðÈI>‚²x¬CãX‡8à‘þxˆcð<Ä‘xH$!âHˆ8"ŽqÀCãHˆ8$q(D" GBÆqŒ#ð‡BÄ1xˆ#!9YÈ8"Ž|äd!âHH>"Ž…ˆ#!âÈ:Ä‘qäC!ãŠ8à!xˆ# G>²q$D〇8Æ‘q($'ù€ÇR"…ˆ#9Ç8"xˆ#!ãHÈ8"ŽqÀCãHˆ82Ž|ˆâHˆ8"‰ÀCðGBÆ!‰ÀCð‡qÄ‘¥ÀC ÇBıuŒãPˆ8à1xŒãHˆ8¨”uädù<Ä1xäd GBÄ‘þq,$' G>2Ž|¬Æ8ãŠ8"xŒ#â€Ç82xŒ〇8à!xˆc…Ç8à1qäcðÇ8à!ŽqÀcâHÈ8ò‘¥ÀCðXÇ8"ŽÂŒC>$DNŒƒ8ŒŒƒBä„BŒƒ8$D>ŒCBˆ6@2ˆ< E,Œ5À8PÃHÀJ€ˆ5€8ÀÃ8PC(„8$3€6,@2ˆƒ |Bð€8`Cˆ5<ˆˆÃ:Àƒ8Àƒ8E>Œ<ŒÃBˆCBäÃ8$„DÀC>ˆ<Œƒ8ÀC>ˆC>Œ<Œ<ŒCBˆÃ:Àƒ8(DNÀÃ8ÀÃ8ˆÃ:H„8ÀCN(„DˆCBˆ<ˆ<ˆC>ˆ<äÄBŒƒ8ÀCNÀÃ8ÀÃ8Àƒ8äƒ8äÃ:ÀÃ8$„8(Ä8ÀC>Œ<¬<Œƒ8$Ä8$„8ÀÃj$Z <¬Ã8ˆƒB,ƒ(ÀÃ8ÀCNÀC>ÀÃ8(Ä8ˆÃBˆC>ä<ˆ<ˆþ<Œ<ˆC>ŒCBˆCPŒ<ˆƒBˆÃ:ÀÃ8ˆÃ:$Ä:(„8Àƒ8$„8¬<ä<ˆƒBŒCBäÄBˆƒBŒCBH<ˆ<Œƒ8ÀÃ8(„8†8$ÄjÀÃ8ÀÃ8ÀÃ8ÀC>ŒÃBˆ<ä„BH„8äƒ8ŒCBˆÃBäÃ8ÀC>ˆCBäƒ8$Ä8ˆ<ˆ<¬ƒ8äÃ8,<ˆÃ:ŒCBŒƒ8ÀC>ˆƒqŒ<äDaŒ<ŒCBˆÃ:Å8Àƒ8$„8ÀC>ˆƒBŒƒ8¬ƒDˆC>Œƒ8ÀÃ8ˆƒBˆ<¬<Œ<¬FBˆCBä<ˆÃ:ä<ŒCB¬CPˆCBˆCBŒƒBˆ<ŒÃB,þ<äDBä<ˆ<ˆƒBˆÃ:ÀÃ8Àƒ8E>ˆƒBˆ<ä<ˆƒBˆCBŒCBˆ<ˆ<ŒƒBˆCBŒCNÀÃ8ˆÃ8$Ä8$Ä8äÃ8ä<ŒCBäD>ŒC>äDBŒƒ8Àƒ8Œ<ˆÃ8ÀÃ8$„8¬ƒBäÄBˆCPŒC>ŒCN,Ä8Àƒ8ÀÃ8ÀÃ8ˆÃ:ˆC>ˆCBŒƒ8ÀÃ8ä<Œƒ8Œƒ8$Ä8äÃ:Àƒ8¬<,Œ<Œƒ8$Ä8ˆ<Œ<ˆÃ8,D>ÀCNäƒ8þÀÃ8ˆ<äÃ8ˆCa„€(ü# @PhBêéžòiuÂ?ÀÃ8Àƒ8Àƒ8ŒÃ:ˆÃ8…8ŒC>ÀÃ8ÀÃ:ˆ<ˆ<œÃ<Á:ÀÃ8Àƒ ˜€8PCDÃ8¬C,$ä<ŒC>ä…8Œ<¬<ˆCBŒƒBäÄ8¬u¬FBŒ<ˆƒDäƒ8H<äÀÃ8$„8Àƒ8ÀÃ8,„8Àƒ8Àƒ8Àƒ8$Ä8äCNŒ<Œ<Œƒ8Àƒ8ŒCBH<ˆÃ8¬ƒ8ÀÃR(„8ÀÃ8$„8äƒ8Àƒ8Àƒ8<äD>Àƒ8 Å4€ÂR$„DÀCNÀÃ8äCBˆ<Œ<ŒCBŒ<ŒCBˆÃ8ÀÃ:ˆÃ8$„8Œ<,…BäDBŒC>$Ä8ÀƒDÀƒ8(„8$„8(„8$„8ŒC>ˆƒBˆÃ8ˆCBˆÃ8Àƒ8ÀÃ8äƒ8$DN$„8ŒÃBˆƒqˆC>ˆ<äD>äÄ8¬ƒ8Àƒ8ŒCaŒCBˆ<¬<ˆ<ŒCBˆƒD¬þƒ8H<¬<ˆ<ˆƒBˆÃ8ÀÃ:ˆCaˆ<äDBŒCBˆ<Œ<ˆÃ8äƒ8(„DÀƒDäCNÀƒ8ÀÃ8ˆÃ8ÀÃ8ÀCN$„8ÀƒDÀƒ8ÀCNÀÃ8äƒ8ÀÃ:ˆCBˆCBˆƒBŒ<ˆ<ˆC>ˆÃ8$„8PIN$Ä8ÀÃ8$„8ÀÃ8ˆH<ˆƒBˆCBŒCPˆ<ŒCPˆÃ8$„DˆƒD$Ä8ˆCaäÄ8$„8äƒDÀÃ8$„8ÀÃ8(Ä8äCBä<ˆ<,<ˆÃ:ˆCBä<ˆCBŒƒ8ŒƒBä„Bä<äCN,Ä8†8Œ<Œ<ˆÃ8Àƒ8þ¬ƒ8$„8Œ<,ÅBˆ<¬<¬<ˆ<ˆ<ˆC>$DNÀC>$DNŒƒ8$Ä8…8äƒBˆCBŒ<Œƒ8$DNÀƒ8äÃjˆÃ8(„8…8$DN(„8$Ä8(ZˆÃ8ä<¬Ã8ä<ˆC>ˆ<ˆÃ8ÀÃj(Ä8$„8$Ä:ˆCBˆ<ˆ<ˆC€Â20ÂÀÃ8$„8hBŸ*ó23³Iì(üC>Œ<ˆ<äÃ8ÀC>äDBŒ<ˆÃ:Œƒ8ÀÃ8F*Àˆƒ5Üà‚8P°8lƒÁ:ˆƒ °@NX'ˆ5ÀRPCäƒ8$ÄR¨˜@NC€6¬þ5À:„CD<ˆ5<ŒÃ:Pƒ,EBäÃ8(D>ŒÃBŒCBŒƒBŒÃ:(„8¬ƒBˆCBˆC>HDBŒ<Œ<Œƒ8ÀC>ŒƒBˆ<ˆˆC>ŒCN$D>ˆCBˆCPäÃ:ÀÃ8(„8ÀCNÀCNÀƒ8Àƒ8ÀÃ8ÀÃ8(„8ÀÃ:Œƒ8ÀÃ8äDBHDNÅ:Àƒ8(„8Àƒ8…8¬CBäÃ8,„8ÀC>ˆ<ˆC>Œ<äÃ8Àƒ8…8$„8Àƒ8ÀÃ:Àƒ8ÀÃ:$„8$Ä:ÀÃ:€6ŒC>Œƒ8ÀþC>ŒCBäƒ8Œ<äÃ8,Ä8,DN¬ƒDˆ<ˆC>ŒCPŒCaŒƒ8Àƒ8¬<ŒƒBä<ŒCBä<äDBˆCaˆ<ˆ<Œ<$Ú8ÀÃ8ÀÃ:Àƒ8$Ä:$D>Œ<ˆ<ä<ŒCBä<ˆƒBŒ<ˆC>Œƒ8ÀC>ˆCBäÃ:Àƒ8äÃ:$Ä8$„8$D>ŒCaŒƒ8…8ÀƒDÀÃRÀƒ8(Ä8ˆC>ˆ<äDPŒC>ÀCNäƒ8(Ä8$„8äÃ8Àƒ8(D>Œ<ŒƒBˆCBˆCBŒÃR(Ä8ÀCN(Ä8$Ä8ÆRäƒ8ŒCBˆCBˆC>,EBˆ<,EaŒC>ŒCBŒƒBþ,<ä<äÃ8ˆC>ˆ<ˆCBäDBˆCBŒƒBäÃ8ÀƒDˆC>ŒC>HDBˆ<Œ<ˆÃ:¸<ˆ<¬ƒqŒ<¬ƒBŒƒ8(„8,Ä8$„8ÀÃ8,EBŒ<Œ<äÃ8äƒ8ÀC>ˆCaäÃ8,ÄR$„8ÀÃ8$„8(Ä8Åj,„8Àƒ8$Ä8Àƒ8ÀÃ:Œƒ8,DNä<ŒCPŒƒ8äƒ8$DN(Ä8ÀÃ8(„8(DN$Ä8ˆ<Œƒ8ÀÃ:Àƒ8¬ƒDˆÃ:Œ<ŒƒBäD>ˆCBŒ<ˆ<ˆCBŒÃ:$„8(Ä8ÀÃ:„€( #<ˆ<ˆˆÃ8ÀÃ:ˆƒBä<äDBˆCBŒ<ˆƒBŒCBˆÃ8ÀÃ8äCNÀÃ:Àƒ8Àƒ8$Ä:äÄ8,Ä8äƒ8ÀÃ8¬ƒ8ŒƒBŒCBˆCBˆƒDÀÃ8$„8Œ,„8äƒBŒ<Œ<ˆÃ8ÀþÃj,Ä8ÀÃ8$Ä:¬F>,EBH<Œ<¬ƒ8ŒÃ:ˆCPŒƒ8$„8ÀÃ8$Ä8(„8¬ƒ8Àh<¬ƒ8€62ˆ‚BˆÃ8äDBˆCBäÄ8äCB,Å8ˆÃ:ˆCB¬CNH<ˆÃ8Àƒ8ŒCB,<ŒÃBˆC>qðÄÁ«L#¼qÅË9Þ8Šâà‰ƒ'ž8xâ(Ž£8Þ8Šã(ŠËWQ¼Êч‘â8xá‰GqœŽÄ‡¤q(žqàÁžqà'q(gœŠÄGœq*qà§"ŒògxÆgxÖ¡HŠÆ‡$xÄ£ŠÄ©Hœ|(‡"q(ZGœ|àYGxÖGœŠÖ§2ŠÄgxÄgþŠÆgœ|Ö'„Q~a$xÄgx4ùÍ4Õ\“Í4IÎNi“NuøGèÜ“Ï>ýüP@÷åxòGŠògŠÄ©HœuÎZqàYgqàÉGLá¡Fyò9+žŠÖ‡"LÅ©HxÆÓXIZ#qàžu*”"q(§#qàYqà‡¢qÄ9Kxć$Š0"‰¢|ÆgŠH‚GœŠÆ¡(ŒÄGŠÆ‡¢|Ægqà§#q("‰¢|Æ'Ÿq*žqà''qΪŒ¢qÄ¡HœuàqàYžqÄɧ2xòGœ|Ä#qò‡þ$ŠÄÉ£Š0ÊgxÄ©(ŸqàžŒÄ¡hŠÄg’à§¢uÄY‡$ŠH‚gMÆ'§q(‡¢|0§¢|à‡¢q*ÊgŠòž|ÆÉ‰$xÆžuÆ¡hŠÄ'Ÿqà'xÄé#q(ÊGœ|Æ¡HxÆgŠÄ©HœŽÆ¡hŠÖgxÆ©ˆ$x*ËGŠÄgŠÄ‡¤ŽÆGxÄgŠÄÉgxÄ¡(ŸqÖ¡HœuH¢(qƇ¤|Ä'#xÆ!‰¢uà§¢qà§#q:q*Zžq(ˆ$xòžu(qà‡¤uà! ’à'§q(þ‡¢qò‡"q*")Ÿq(žq*gxÄ¡h! <ÄA‘qÀCð¨LGıx„"ãÇ8à!ŽŠŒã ˆ8à1ŠŒƒ$ù‡8ò1Š〇8ÖqœeâÈÇ8HB’Àc$ÉIà1ŽŠˆ£"â¨Ià!xT&Ç8à1Šˆ£"ù<ÄqPd 8ò!Šä#â È8r"Š$âȇ8àA’|Œã H>Æ!ŠˆùI:BxŒ#âXØ!c~œáü9€8ÀÕç:ÙÙNp‚¢ðX‡8à‘u#EÖ!ŽqÀCðÇ:*Bxˆcð<ÄAŒ$‡80%xˆ 8àA’uÀC! <Öq`Š" 8à!ŠˆcâXE0€ 6ÅEÄ1Š$Ç8à!ŽqÀCGGÄ‘Š`dâ È8à!ŽœŒCù<Æ!Ž|þÀCðÀH>à‘uˆù€Ià1ŽŠ„"Y‡8à±qŒ£"$EÆŒPdð<Ä‘qä¤2<ÄqTdë<ÖqäCGEÄuˆã€Ç8ò!Žqˆƒ"$Ç:ÄA‘qäCù¨ˆ8à!xŒ#<Ä)xˆƒ"âXEÄ1Qäƒ"â(2Ž|Œ 8(²qŒ㨈8ÆqäâÀEHB’Œ#ã ˆ8*"ŽqÀƒ$〇8Ö!Šˆþƒ"〇8ruÀCG>0’qŒâȉ8à1Šˆƒ"âÇ:Ä1Žg$'㨈8ò1Ž|Pdð<Ä‘‘|ˆâGGÆqÀC<*’ä£"ë È8àQxŒ#G‡á!ŽqPdðÇ8ÄʬCd¦ˆ8ÆqÀCð‡8à‘qÀCãÈÇ8*"xŒCùG‡ÅAæqÀCðEÆqäCùGEH2Ž|TDðX‡8:BŠŒâ€Ç8*BŠˆƒ"â¨I(²ŠâEÄA‘qÀCGEÖ!Ž|Œƒ"âEÆA‘uäDþð<ÄuPÄðG>à‘|ˆ#GEÆqÀCEH2Žuˆâ È8Ö!ŽŠŒ⨈8ÆqTd 8ò±x¬£"âGGÆAqäcð<Æ‘qÀc! EÆ‘ŠˆâG>HqŒ£#ãÈÉ8r²qÀC!ÐÄ21xŒƒ"ëЄ;¹!¢AúЫ¡!ôãäÀ>†Ù~ Ig?ØÙböcäÀ>úa;ûàùØÉNLPücG>ÆA‘|ˆ 8*"ŠŒƒ"âX‡8(²x` â 5°Ьþë<ÄqÀcðGEÄqT„$ë€Ç:ıŽc â€Geà)L‰câÈÇ8*"ŽŠˆ£"$‡8(‚‘ŠŒâ€Ç:à1Ž|ˆ£"$©È8Ä’Àc 8àŠˆ#G>ÆA‘q¬£"$é°8ò1ŽŽäcâ¨H>Æ!Ž|ŒCùGeò1ŽŠŒâ IÆ‘“q„"ë È8ò1ŽŠŒC(#*B*bÄ!ÆAÖÄÄ¡"Ä"ÄÄaà!#Ä¡#Äa0B:BÈlàaA0òar"ÆaÆÆÄ"ÄaH‚"ÄÆþòA(B*Bàa*BÖ#ÄaHÄ"Æ"òa(b(‚$àaÆÄ!0‚"Ä¡"ÄH‚"Äa("Æ"òAàaà$à$òA(bÄÆÆ"ÄÄaÄ!ÆAÆÄH‚"ÆÆA(Bàa:B("0ÄÆ!ÄÖAàaàAàaÄÆAÖÆAà$à!Ä!ÆÆÄÄaÄ!Ä¡#ÆÆ¡"Ä"Ö#ÄÆAòA:BÖÆ!ÆÆAàaÄòa*òÆ¡ÃÄþÆAàaàaà!ÄÄÄ!à#*BÖ$*bò#àaàaàa(BÆÄa(‚$*BàAàAÖÆ0B("2¢ÃÆ¡ÃH‚"ÄÆAÎ(b:bàarBàaàaà$*B*bàaàa*Ä"ÄÄ"ÆÄ"Ä¡#ÆH¢"ÆAòaàAò#(BÆÆÄ¡"Æ¡2("Æ¡"0"Æ¡"H¢"ÆA*Bàaàa*bÄÆ$("ÆÄ"ÆAàaH‚"Ä¡"HÆ¡"ÆAÖ#*BþÖ"Äò!#Ä!ÄÆA(bÄÆÄ"0%DàAàaÆaú¡ìþ¡òzaèz!èr¡r¡ þ¡ò`òa˜ÔAþÀ(@Œ`þAà8àòÁZ` ÌáÔAþ€.€&MúA€`Ð$†ÀÐÄ`ÀöáÔ!,a,A ÐÄ`Àö!6¿iò"ÆÖAÆÖÆ¡"H‚"ÄÄÄ¡"ÖÄaàAÖÄ*ƒ"ÄÄ!'Öa(bàA*B:BþàA(BÖALÄarBà¡2àAàaÄaàAàaJÄaòAàaà$(bàAÖÄa*BÆÄÌÄ¡"ÄÄÖÄÆ!ÆÄÆÄ"HbàAÆ"ÄÆAÆaÄ"ÆÖA(B(B:Bàaà$àa*"Äa*B:BÆÄaÄH"(bòAàA(#àSàAàa:B*BÖ¡"Æ"Ä!àaÄÄ"Ä!(BàA*bÆÄaàaÄa@!ÄaÖAÆÄþ!#òAàaòAà$àar‚$0¢#Æ¡"H#*BòÖ!'*cÖ¡2H¢#Æ!ÆÆ!Ä¡"Æ¡ÃÄ"Ä#àAÆÆ"Ä¡ÃÆ"Æ!(Bà$:bàaÄÄarBò$(B(Bà$(BÆaH‚"HbàAÖH‚"Ä!àaò0"àA*b(BÆ!(BàAàaà#à$àA:lòA(Bàaàaàa(bàAÖAàAàAòÆÄ¡#Öaòa(BÆA(Bà$àA0¢"Æ0"þÄaÄ!'0Äa(bò$à$ÆòAàAÆÌÄÄÆÄÄ!àaàaàA("#à$ÆÆÄ¡#Ä*cà$à#à$àa(‚$òAÆÄ¡"ÄÄ¡#Æ"ÄaàAàAÈL(BàaàAÆÆ¡"ÄH¢#ÆÄÆÆÆ!H‚"ÄÄ"ÄaÄ!*bàaÄaàaòAÖAàa*BÆAò"Ä"HÄÆ¡"Æ!(BÆaÄa(BòÆ!rbÆ¡"Æ!ÆÆ!(Bþò#*b(#Ä!ÄÆH‚"H‚"Ä¡"ÄÄ!Fa!(BàaF¡bÓé® ²8‹«A‹³ø ФÈ!öMœN Ôz`ÐA” Ôaª ÐÄ´¡îaL Ôaª þÁÀœNè€`ÐdŒAòá†öÁf@ ú  þ!  ö!& þA` ÐA” A úÄÖòaàaòaàa*brbÄSàaH¢#Ä¡#ÆÄ"ÄÄÖAàaàa(#(b*b(B*þbÄÄ"00Ä¡ÃÖòa(BàaàaH"'Ä"*£"*Ö"H¢"H‚"ÄÆÄ"ÖArbÄ"ÄaHÄ!Ä!'òaà!Æ"Ä!àA*¢2*b(b(bàa(‚$*‚$à#àAàaÄ¡"ÆAà$àa:#HbàAàAÆ!*Ö"ÄÆÆ"Æ"ÄÄ*0B:BàaÆA*bÄÄ!Æò$(b4Ä"òAà!ÄaÆHbàa*B(B:"ÄHH¢#þò$àAàaÆA(Bàa*BÈlà$ÖAàaÆÄaàAàaàAàaàa("Ä"H‚"Æ"ÆÆÆaàaÄaÆAàA*bÄÄ!'òaàaàAàa*B(Brbà!Æ"Ä¡ÃÄ¡"Ä"0BÖaÄ!Æ¡"Æ$àaàAàa:lòA:lÄaàaÄ"ÆA(BàAà$à$àaàA*#Ä¡#ÆAàAÖAàaà!àaÄ¡#ÄòÆAàAàAòaàA(bàaàAòaþà!*c(B("0¢"H‚"ÆAÆ!'Ä"Æ0B(Bà$òAòA(‚$òAàA(Br"Ä"Ä!Ä¡"HÄ"ÖH‚"ÆA*Bàaà$(‚$àAà$*b(B(bHòaÄÆA:Bàa*ƒ"H"ÆAÖ!'ÄÄ"òÆÆÄÆò$ÖÖ"H¢"ò!#ÆÄ¡"ÄHÄÄaÆ"Ä"òaÄ0BÖ#àAàaH‚"ÄaÄÄaÆAàaÄ!0Bò#ò"ÖÆþ!'Ä¡"ÄÄÆ¡#B@~ÄÄa4¡´Π‹ç=‹¯`˜ÈaöMúáØAþ öá¾!þ †iòáú àØ!êa˜†@ þÀÈöa˜¾êÁÀö¡È!úA ö þàìÌMŒ!V¹˜@áÄÄÆa**ƒ"HbÄÄaò"H¢#ÄSàAàaH‚"0Ä"ÄÄ!HÆ!ÄHbàaÄa(bÄaÄÄ"ÄÄaàAÖ"LþHbÖA*‚$àA(#Äa(brbr‚$*bÈlòAàAÆ"ÄÄaÄ!(Bàa(bàa(Bà#ÖAÆaÄÆÆ¡"Æ¡#ÄaàAà$(BàAàAÈlòA(‚$(bàAÈLÆ"Ä¡"Æ¡"Äa:b*Bò$à¡2Ö¡"Ä¡#Ä!(BàA(bÄÆAÆ!àAàaÄ#*B– @Á8n¼‚ðò‰oݸ|ãŽ(NÜ8xëÂ7P¼qðÖ 7p\>xŠÓ(N#¼Š ×Á«(n ¸4áUþ„'®à8—âà‰ƒWž¸qùÄÁ7PœËŠðÄÁ«8^Á|ÇÁ7pCqŃWqÜ:q Ç o¼q ÇÁ—o 8xãà‰+˜o`E†âàƒ7^ÅâÆÁ¯"¼|ŽËoœFq.]Ž(nà8x]V,OÜÀq ŠËÇp¼qiŠ7PܸuÇi—OÜ8âà‰ƒ'nÁ³<â þTQAÏ8ðˆ3Ð8âÏ:ùˆ38™‰³Î@ëˆ3Î@­#Î@âäÏ8ùTÏ8ù $Î@ëÀ#<ãä38ðŒ“8ð¬SÑ8âÀ³Î8ùˆ3<ã04ŽKâÀ#Î:â„Ê2Œ Ï:­£É?pÆ)çœtþÓD/xæÙK+yæðO?ûÀ>pöó;ô£NpöCŽÿ¨#À>q®Ò‚ 4 À?ê ç7 ìSÉÿ3À>q#À?ê AHðÀ?ìðÏ>ìðÏ>ìð:ì'9Ôiì±ÿìÊ?Udß@ã ”<âÀ#Î:㈣Ñ:ëÀS‘}ÜŠ3Ð:âþÀ³<ë0$Î:ðŒ3PEå#·ðˆÃ·ðˆOEq;8 å3<1$Câä8ðŒSCãTÄÐ8 OEðŒÏ8âŒ#Î:ðŒO>âh$< ´Ž8­Ï:ðŒOEùŒO>ãÀS<âÀ3MU8 ‰8ðˆ3Ð8ðŒ#<ãˆ3Ð8ÑÄÐ8ðŒS<âÀ#CãäSKãÈ6Ð8™­8­#<ëÏ8‰ÃP>ðˆ³Î8ðO>âÀÃí@Óh2Ž8ù¬8³<ãÀ³Ž8ëˆ8ðTÄ8ðŒ8ðŒ£M3Ð8â¬3Ž8ùŒ#Î@þâÀ3Î@‰Ã8Ï$Nîùˆ“Ï81$ŽFâÀ#Î:ðˆãÒ8ðd_Eùˆ3Î@ùŒ“8ãTÏ8O>ã ”Ï8ðT8ðŒ8ð¬“OAðˆ3Ð:ã¬3PEðä#<ãhT<4ɇ82xTâ`È82q¬c‡84"xŒ<Äq DùCÄ1xŒc ùC*qÀCùð‰8à!x¬Cð‡KòQxäc‡8òQxŒã€M"†äc.Ç:*²ˆã<ÄqˆãÈ8à!Ž|Œc ãÇ@ "xŒc þш8à!ŽŒC# 8à!ŽŒâÇ@ÆqÀcâȇ8ÆqÀ£"ë(ˆ823xäCãÇ:à1xˆc ãXÇ@òQxˆã<Ä‘qÀ£"ðCò±Žˆaˆ8à!xTdðÇ@ qhDð<ò1xˆ#ãÈ8౎qˆC#âX<ÆqÀC Ç: 2q¬ãp MÖqÀ£"ðGEà!ŽqˆC#Ü (ÁˆŒë<4¬‚þC¤èE+ZAŠV¢ %…þÑcûÈÇ?ú±uàì@;þÑo$ ìþ@œì1\À‰ø;°äcÿXÀ12 ‰#ûˆÓ&ðz rʇ:'uNê@?èsÀÉ 0¨VÿŠˆƒ!ã`ˆ8Æ1ŠŒãÐÈ8òuÀCð¨CÄ±ŽŠÀcâX‡8à!Žu¬c â€Ç8à1q0DGAà±q0įðGfd#xˆ£ ëCÄ1ŒC#âÈC ’ŒCðÇ@*ŠÀCðÈCÄáxŒC©<ÖqÀCð<ÄÁuˆcë‡KÄ‘Ä>âÈŒ8òQxˆ#ð<Äqا"ðþ‡FÄ1qÀCãȇ8ÆŠŒ#<Ö1xˆcÇ8à1xˆâ€Ç:à!Ž|Œ#ãˆ8|ÂqŒ#âÇ:à1xˆcã˜Æ(Äqˆc ñ«8òQx¬âpÉ8R‘q DðÇ8\R‘qÀCÇ@Ä1qÀ£"ð¨H>à!Žq dÇ8"Žq Dã`È8à!Ž‚ÀcâHA"ŽÌŒc <Ä1Ž|ˆc 〇84²Ždâ(H>2Ž|ŒâÇ:Ä1x¬C.©È@ÄQ|ˆc âXÇ8ò!xˆƒ!ãˆ8à1xˆ#âÐÈþ82xˆ#3ãÈ8à!Ž|ÀcùÐÈ8àQTd ù<Ä1qÀcÇ@*’qÀcðÇ8"xŒëˆ84"xˆ#âCÆ‘qŒcâ<Äqˆ#4Y‡FÄ1ŽŒ〇8Æ!Žqˆ#3Ç8à1Ž|ÀCàA“| ¤"ðG>Æq Dð<*q d <Ä1qŒ 8à!xŒâÈŒ8òqÀC ‡OòqÀCãÈ8ò1xŒcG>à1x¬£"Ç8à±qŒc â`ˆ8þ4’ˆãȇ8"Ž‚ÀCY‡8Æuˆcð<Æ‘xŒãÈ8à!Žˆ〇8à±qäc<Ä1ŽˆC#ëˆ82Ž|hD<Äq„`¿`D*Šhb«sêÇ>ú!ƒVâô­8ýé{A ÀiäÀ>ôAû}¨CÿPz°td@ ÿ`‡à´{ÀýàÇÐuNý€S%6@€zôƒ؇>ÐqTcûpAÀ±tpâêœÔ!8©CàW öa (ôÈÚÇ(þqÀ£"»P »ð »P »ð ¿° þX ¿P ¸ µð ø ø€¿ð€¿° ¿P ø »ð µ€€ X ¿ €¿° Èø µ ‚¿ €¿° ø »ð ø »ð X ¿° µ €¿° µ €¸ µ€€ ø »P »ð ø »€€ X »P ¸ ¿° X ø »ð ø µ €¿P ¿° µð »€€»ð *¸ µð µ0ƒµð X ¿Pµð ø ø »P ¿° ¿° ¿P ø µð µ° ¿° ø€¿ €¿P ¿ð€¿° ¿° ¿° µð ø µ° ¿P »ð »P »ð »ð µ €¿° ¿P þ¿° µ €µ° 3¨€µð »ð »€€ ø â01  ââÀâ°ð01!ð0¡ù0âÀâ0ãâ0ù !.!öQðãâ0ãù QðP!ù0 1ù ð0â0ãâã ð Qð Qù01ð0ð0ââ ëã ðPðãù0ëâã  !Qëâ0ã ëã0ã0ââãâã0Q 1ð0ð@ù ðPâ°þ!ð ð ù0âÀã0ãã ð0ÁëP Q!ð°â!ã  1ðPðPëâ0ù ± ! 1ð ð0ùP‘ð 1âãâã ð ëÀâàâù0 !ð0 ±ã 1²¡âÀââ0â0â0ââ0âÀã 1ð°ãã0ã ðëë0ù0ð ã ð ë0ã0ãâë ã0ù0ëù 1ð ð0ðþ0ð0ð ðP!ã ðâÀã0ù0‘â0â°ã ðPðP1! !ð°±ù0ðâ01ð0 1â°! !.±! ËÀàš€qÒp²§÷§× ­ðª·qB€ì ÿÀ` 0F°ÿ 'ý` !ðì ù'ú@°ýðä`Õ°ÿÀþ€ 0 ÿ ðûÀ'ì ÿÐö€ F°Lz,šðââ0ý'ý0'ý€,þù€,ý0'ýÐqÒsÒq’sR«ÿÐÿÐùÐù'ù'ûPPµ'ùP«pÒpR«q’µ:'ù0'ùÐsÒpÒs’r’rÒr’ÕÿÐù@'ý0'ùðý'ù0'ýp,ù'ý`,ý'ù'ù'ýPPý'ý 'ýP'ýP'µ:'ý0'ý0'!1  0ë0ë0â0ãã ù0ãâ!ð0ð°â0â0ââ0ãã0â011ð0ð ãâÞâ!²ã â0â0ð°âãâ0þðPQ!ùãð,ãâ°â4‘ëâ1ð .±â0ë  1ùâ`ã0â0ùëâ0ð ù@ããã â‘ !ã4Áã0âð0ù  !!ð0!!ð0ù0ùã1 !.!ãÀãL ù0ãàâ0ëÀ" ãâë0 !"›Q !"Ë41âÀã";ã ã°ÁããÀâÀâ0ùàããÀâ ãùþâ0¹Ãâãâ0ââã°1ùÀëP !ð ã1 !ã0ãâ ²ë L âââ0ã¡" ù";ã1ëP";âãð ! !ù0!ð ±1ë " ââ ²ù@ð0ùãâ0ã0ã ã ð !  ËÀâëš0ªr¢+ÈŠ¼È‰Üÿ°r~p’q’à~tÒùýðû@'ý'ü€Ç°qR«ÿsÒþûðµºÆÒqÒÿÐÿ°†l,£ðãÀ~åWù0~ââðËëPðàWð°ð ðàWâàWâã€Ìë1¿ âãàW 1~•âù ëàë0âÈ ãðËââ0~ù ð ù0âð0~Åâëë0Øœâ~5â°ù0È È â~•âðË ±ðàWð0ë01âãðËð°â~â¿ âãã0ë áWâ ù ð€Ìð ðàWð ð°ð ðàW²þÍð@ð€Íù0ë@ð°ù0ð0ÈœââàWðPðàW1ë@ð0±  °ð0âã°Qð ð0âãããã0ã0ãâââëâ0ã0‘âù ð°â0â0ð0‘ââãàù0!ù ðãÀã0â0"+ð ²!ðPëãàãÀë0ã0ù !ãâ0ù0ðPð ë0ð0ââ0ð°ù !ë0ë0ù ð° ‘ãþ04ââ0ëã ð ™1ëãë0â0ã  1!ð ð  !ð "+ë ²ââã0â0ð0âëâL+ð ð0 11âãù "«ã0â0ãð,ã0â‘â" â ãâ°âã !ãâ°ð0ð0â"Ëââã0â1ââã ™Qð Ï" ‘L+!Q‘1ù þ‘âÀãâàââÀâ0âL+A! !!!ëã"[11â0â°ðâ âã âã 14âùã0! ÈÀÀ1 ¹'ý°Éô'ùðý@'ýtÒtÒû'µ 'ý`,ýðù@ 'ý'µÚÿP«Ç’q’qÒr’ñ~,šðð0ââ1ð@ð0ð ëâ04ââã1!ë ð0!ëPùPëâ0ð þð ð°â44â²ëâë ð0ð ù ãâ²ââ1ðPã !ãââ°ð ë41 !~%â0ù@!ëãââ°â41ë@1ùPðPð ðPð ëPã011Á¡â²Á41ð  Që@ù@ëâ01”â â41  °âðP!!±â0! Qãâ‘1ãþâ`ã1n÷Þ8xâh $(n\>qðÄ­—à¸|ðÄÁ[HSMqãÄÑ\— ¸|ðÄÁ[8Ž ¸qùžŠ£)nÁ…ùà‰ƒ·žÀ|ŧVÁ… .o¡8‚ùfƒ7ŽæBxâà‰#¸î©¸|âŠ#¸ðéBx㊣¹ž8xëŽË'þžÀ§âÆ©GpAqðÆÁ7N-Æqd4<Bqäc!ð<ÆuÀC<Ä1‚,„ ã€Ç:Ä1qäCã È8à1xˆâ€Ç8ÄqDã€G>ÆAqdO<Ä‘qŒã)âG>h"‚ˆâ ˆ7ò!þ‚ˆƒ  8ž"‚ˆâ<&·qD’"ˆ8à!Ž|ŒãÇ8ò±xhjðXÈ8à!Ž|Àc!〇8h"x,d°<ÆA…dð<&…d!ãX‡8Æ…ÀCðX‡8Æ¡–qdG>"Žq¬COYÇBà!xˆcùÇ8Ä‘xŒâ<ò¡)xˆcâ&–ÁŒ YÇ(úáJr—ÛÜçFwº; ŠÀc4Y<ıxŒC-’<ÖudðÈêSÖqÀ#«4ÉÇ8à1xŒƒ Y]<Æ!xŒƒ&ë È8ÖAqþ¬ƒ&‡Ç82xˆƒ QËBà!šëG>qÐdY…Ç:Ä‘qÀCðÇ8à!xd•&’‚‡8 .xHŠ ë€‡@à1qÀC 4AÄqÀCRâX<Æñ”qD š‚‡@Äqˆâ€Ç:à1ŽuD ðÇSÆqÀcëÇ:"xˆƒ ã€Çä4q@ 8à!ŽuDðAÆuÀc!‡ZòqÀC4‡8à Pˆ# !ÈBò1šˆùX<Æ‘xœ â€ÇBà1šˆ 8à1qDAÄAq<þE뀇8ò!‚Œc!ð<²Dð‡8à!…ÐD〇8’qd!ð‡¦h"xˆã€q  q qȇq ˆu ˆq‡u‡§XµXq ˆqXqȇq q°”q€‡…°q€‡…€q€‡qxšxÈxX‚XšÈq ‰É! q€q ˆ|‡q ˆqXˆ|‡É¡ ‡uÐx‚X‚‡|x‡u  M‡q  qȇq€‡|‚xxxÈxx‚8x‚Èxx‚x‡… ˆq8‚Xþxxxxxx‡…X‚q ˆqxŠ… ‰q  q€qȇq€‡q€‡qXq€qxŠqXˆ|€qX‡õȇq ˆ|xµX‚‚Èq ˆqxšxš‡…ȇq‡|‡§‚‡u ‰uxŠq€‡|‡q€‡q‡|x‚‡u€‡q€‡|xxˆuXqXxxX‡qXxÈ  q€‡u ˆd`Èq ˆuЄ~P·‡„Ȉ”ÈVêPø‡³Yˆu€M‡q€q€‡… MYq M‡…€‡uþx8‚‡uÐxx‡|XxXx‡|Xx‡u€q€qXq€qXq‡|ÀHq€‡…€q€qȇ…€‡u°”qȇ…€I!Mqȇ³!ˆu€q€‡q€‡|Xx8›uxXˆu€MY‚Xˆq€‡…ȇ…Èx‡|‚Xš‡|xxДq Mqȇ§‡|€qÈxxxXˆq€‡qȇ…ÈqxX‚‡|XxÐx‚Д|‡|  qȇ³YxšXˆu€qȇ³Q‹… ˆ³É‡…xXšÐx‡iÐþxX‡õXqx‚Xq€qµµ‚‚š‡|xŠqXq ‰q ˆuxXxˆ|xŠ|  qȇq  q  qx q€qx‡qXqx qȇ§š‡|xx ˆq ˆqxXq€q€‡u‡| q€‡qš‚X‚xXx”… €qxXˆ§‡q€°q€‡q€‡…€‡…  q€‡q€qšš˜œu€qxX‡|x‡|xxx€‡…€q ˆq€qÈq€‡q€qȵþ‡|XšxX‡q ‰q€q ‰…€€‡uÈq  q€‡…x‚Xx‡õš‡|xŠqx q My q ‰…x‡|€È‚Xx‡q  q€‡…šxX‡³É‡q€‡É!q€qqxŠq ‰q€‡q€‡q€‡u‡q€‡u‚‚Xš‚ˆu€‡q€q ‰q€q€‡…€‡u‡| ˆuxX‚xXšx‡q q€‡…‡u€q€q€‡u‡q q ˆ…xXxXˆ|‚x‚Xš‡| ‰uþ‡u€‡q  qXqQXF‚”uЄ‰ÔÙåÙtë‡}…P q€…¢eXP…¢…‚X‡õKqXq€qXš‚X‡q q ˆu€‡Éq q  q  qX‡õ‡§xX‚x‚xx‡u q€‡u€‡u ‰|‡ux q€‡q  q€‡qµXx‚X‡§xš‚‚X‡q€‡q€xŠq€‡q€qP‹|ˆ§xxxX‡q€‡q ˆqxŠ|qX‚xXšxqP q€‡q ‰q€‡q€‡þq ˆqx q ‰qxŠq€‡qXšXxxš‡§X‚xq€‡qXe…u€‡qxšÈ‡…€qXxš‡§‡q€‡q€‡…€‡…  qq€xXx˜œ…€q‡|x‡|‡u€qȇq€‡qxxq€‡qxq  q ‰qšÈ‡q€q ˆ…€‡q€‡q€‡q€qÈq€q€q€‡…€‡…€‡|xXq€q ˆq ‰…€‡É!q ˆq€q€‡q q ˆqXxXš‡|‚šx‚Xˆ|Xþxxxx‡|K‚Xxȇu€‡q€‡…€‡qÈqȇq ˆ*^xXˆu€‡qP qȇqP‹q ‰u€‡qXxX‡q‡§‡u ˆq ˆq qxK‡|xxÈ€‡qµÈ‡q‚x‡§xXˆ|‚qq ‰…Xx‚X‚Kx‚q ˆ|šqȇÉyŠ…€‡qxŠ|‡q€qXqXˆ|‡|‚xÈxXxxˆ…€q€q ‰…  q ˆq ‰q ˆq€qȇq€‡… q‡|þ‡§‚˜œ§‡…xŠqx q€‡qxŠ|‚‚xȇq‚‚ȇ…xŠu¨â|‚q€‡q€qX€‡q€q€q ˆq ‰uQøF€q€M¥²6ë³Fë´Vëµfë¶æ$Pøµf8%|(ZU€UPZq‚‚‡q q€‡qÈš‡§xXµ‚‚š‡|‚‚Xq  qXxxKxxX‡q ˆ…xxXxX‡q q‚xXxxx‚xšxš‡§‡þqxŠq  q  qxXq ˆqÈq ˆ*†‡u ˆq ˆq€‡q‡|‚xx‚x‚xx‡ÉÉ‚xµXx‚‡§‡|‚xx‡q ˆqP‹q€q‚Xx‡§¨âq ‰…€‡q ˆq  qÈx‡|‡§‡iq‡|€‡…qˆ§šXˆ|xxȇ…  q qxÈ‚‡|xŠqÈqȇ§‡q qX‡…xXxXx‚‡§X‚q ˆq€q €q ˆq  qȇq qþxš‡§‚XYx‡q ‰uÈq€q ˆ… ˆ…‚ˆ| q‚Xˆq€q q‚¨bšX‡§‡|xxš‚q q ‰u¨â§‡q€‡u‡q ‰uXq€qx‚‚‡q‡|Xˆq€‡qÈšXq€‡É‡u€‡q€‡…‡|XxÈq€q€qx‚‚Èq€q ˆq€‡q€‡u ˆu‡|‚x‡q ˆuxXx‡|  ‰qȇq  q€q€q€‡q ‰*&q ˆqXx‡qþ€q€Èq qx q€q˜xÈq€q€‡qXq qx ‰qȇ…È‚xxXšx‚X‚Xˆq€qxXqXqXq€q  q€‡uÈq€‡qXˆ| qx‡|x‚XˆqXq‚x‡qXq qȇq€‡u q€‡q€‡u ‰u‡q‡|€‡*&qȇ… q€q€q€q€qPXF€…€‡…зVýÕgýÖwý³Þ‡Qè‡É‡…P…|8%Uø‡}ø‡SÚ‡¢‚‚È€‡q‡þu‡*† ‰…€q€q qȇq€‡*†I‡q ˆqXš‡§xxq€‡qx‚¨â§Èq€q  qȇq ˆ|XxxˆqâòOxâ.ŽO¼q0DZ—¯âþEqKáå¯â8xÅÁ'î"hqDÅÁ[w1߸uâ`V¾È’(Ë‹ãX—oL–0ÇU†—o\¾qâÆåoÌqùÄÁwqœ8¢âàåoœ¸uðÆ]wQÌ|ó‰[·¦¸ÍðÆÁË'né8xãà7NÜEãä3< ‰Ï8â\4ÎEãˆC”8ðŒ#LãÀ“Ï80#<ã°S>,Á3<â\$<ë\”Ï8â¬Ï8,]”KðˆK‰³ÎEÁ3L,åSÑEâÀ“8ëÀ#ÎE•‰K0#<,å#<ùŒÏ8ðˆCÔ:å#<ãÀ#Î8,Á$L,þÁ3Ž80±“80±t‘8ùŒOE80‰“Ï8ðŒKðT$<ã¬Ï8ðä3<ùŒÏ8ðˆ³ÎEëÀ3ÎfâÀ$ÎEã\$LùŒO>ã\$<ãÀ#ÎfãˆsÑ8â¬KÏ8ðä3<ãˆsÑ80å8ùŒO>âÀÃ<ù¬sÑ8ðŒ#<ã¬sKðˆÏ80åSÑRãÀ³Ž|âµ°äsÊ$°ì“Ï>ùì³O1°À"ÎE⌳K«|0@œr‘8ùˆÏ80‰Ó8â¸'Qþâ¸8ðŒ“KëT8‰Kðˆ“<âÀ#QâÀÚRâÀ³Ž8 ]$<,]$<âÀ4<åÏ:‰“Kð8Y‘8ù°´NeãÀ#N>‰s‘8­3N>âÀ$<,]$ÎEâ%Î8ùÈ8‰3Ž8㬓8‰3Ž8ãÀ#<«|0@œ‚ âÀ´ÎEâPQâ¸ÇR>ã0hùˆs‘8‰8ðŒÏ8ùˆ“8ðˆsKØp N>0‰s‘8ðˆ3 (ðŒ“Ï8ðŒs‘8ðˆSeåÓ:âÀ3ÎEãÀ3< ]4N>âÀ#N>ðŒ“<ã\$N>à1xþˆcð<Æq–À¤ã€‰8ÆÑ@xŒ#0‡8à±qÀC0©Èá1q¬CðÇ:X’qÀƒ%뀇8à1xˆ,ÇEƱqÀC븈8."˜ˆcðG>Ä1Ž‹T 8Æ–Àƒ%¹È8.Âxˆâ€G>à1xˆ,ɇ8òqä&â€K.2˜Œ#<Ä1Žu°¤"ù€Ç8òqŒcaÉEÄÑÀЬC0LÆ±Ž‹ˆâ˜à8à1Ž|ˆâ‡8`²qäƒ%ðÇ:౎‹Œc‚â¸È8Ä1Ž ŽÉK8Ž‹°þä"ãȇ8(Žq\d†KB8xˆã"âh 8à±xŒ#â€KÆqqŒã" 8Æ!˜°$ðG>*3Žuˆcë€Ge.2xŒ 8Æq\¤"<ÄqTdâÇ:Ä1Ž‹T〇8Æ!xˆã"ãÈ<Æ1AqÀCãX‡8Æ‘xˆcùÇ8౎q\D™à:Ä1xˆ&,Y‡8`"x°dâ¨ÈE*r–\dðÇ8à!Žq\Dð<Ä‚Qü‚€Ç8."M ì_ƒÑÕ±’µ¬f%(þqÀcë‡*†Uìcþˆ@„öAbÀBLR!€=dá¨Á9à1xT㸈8Æ‘‹Œ☠KàÁ’u„ð"âèlE`"޲$ 8Æ!Ž‹Œã"ùGgá1ŽŠ 8àQxˆã"ãèl>Äq\d0ɇ8àQ˜Œ&,¹HEÄÛ‹°&âX<Æqˆã"âh`>à!Ž‹¬C ÌÄ1˜ŒC‡8`"xŒ#ã€Ç8(Žqˆã",¹ˆ8.2xŒã"ã`ÉEÆ|ÀcÉÇ8."xäãh`Eà1˜äcðÈÇ8ÄÑÀq°$â€I>XqäCðK."Ž‹äCÉÇ8à‘qLPGY²Žqˆã"ã€Ç8à!xäcðÇ:Æq¬,‡8à1xäCð<Æ!ŽuÀ#⸈8`"Ž‹Œc‚ù€‡8àÁ’|°¤ã` <ò1xäcâ€É8౎ˆbŒþ<ÄqÀCgåÇ Òág8# S‡Î*ûÙ›ÿ€‡8.2Ž{„§˜„*öáïcaøÈ‡*Æ“qÀcOXÇE*"Žn´`0Â8àAD°K(1‹x# Ç×1xˆcÇEÆq\dðXG>Æ!Ž‹€&ë€Ç8ÀC>Àƒ8ÀKŒÃ:ÀKŒ<ˆ<¬ƒ8ÀÃ8\Ä8L8ÀKÀÃ8Àƒ8ÀÃ8ˆ<ŒÃE¬LŒ<ˆÃ8\Ä8ÀKŒ<ˆ<°ÄEŒ<ˆC>ÀÃ8ÀÃ8\Ä8ÀÃ8ÀÃ:ÀÄ8\Ä:ÀCeÀƒ8ŒÃEŒƒ8TÄE¬ƒ8þÀÃ:\„8TDÃ<Á:ˆÃ8ˆÃ84À8@È5@HÀPC\„8Àƒ8`CÀƒ8\3 €8PƒüHÀDƒ8ÀÃ(À @ÀÃ:l @Ø8À5@HÀ4ÀH@È‚8ŒC>Œ<ˆ<¬Ã2Œ<¬<ˆ<°ÄEŒÃEˆ<Œ<ŒÃE°Ä8ÀÃ8\„84Ð8ÀÃ8ˆC>48ÀÃ8ä<ŒC>4Ð8äLŒƒ8¬ÃE°Ä8\„8ä<ˆÃ84PEÀƒ8ÀÃ8äƒ8ÀÃ8äƒ8ÀÃ8Àƒ8Œ<ˆÃEˆÃ8\„8\„8Àƒ84Ð8Àƒ8Œ<ˆ<ˆÃþ8ÀÃ8äÃ84Ð8ÀÃ8¬ƒ8\Ä8t–8\„8ÀhÀKLÐ:ˆ<ˆÃ8¬ƒ8Œ<ˆCE¬ƒ8ÀKLÐ8ÀÃ:ä<ˆ<ˆ<Œ<ŒC>ˆ<ˆC>ˆÃEˆÃ84Pe\„8äÃ8\Ä:ˆÃ8ÀÃ8Àƒ8äÃEˆC>ÀÃ8¬ƒ8Œ<Œ<ˆÃ8Àƒ8äKÀÃ:ˆ<ˆLŒLTFEÀCEäK¬ƒ8ÀÃ:Àƒ8€F>ˆ<ˆÃEŒ<ˆÃ:ˆÃ:ÀKTÀCEä<ˆÃ8\KŒ<ˆC>ŒÃEŒþ<ä<ŒCÃE°<ˆ<ŒC>\Ä8Àƒ8ŒˆÃ8\Ä8ÀÃ:ˆÃ8¬ƒ848äÃEŒÃEˆÃ8¬ÃE°Ä8Àƒ8äLˆÀƒ8ÀCeÀÄ:ˆÃE¬ƒ8L—8ŒÃ:ÀÃ8\„8Àƒ8TÄEˆ<ŒC±<Œ<Œ<ŒC¹ÇEˆÃ8Àƒ8äL¬ƒ8ŒÃ:ˆ<Œƒ8ŒC>Àƒ8„€&,# <ˆ<¬ä‹3´À@(B>þØ#ü=pÀ>ä(•V©•^)–f©–âè(äC<°<ˆ<¨Â;ìC>¨B>œÂ$ Â$À"HA>¨B9¬ƒ8äÃ8PC$ƒ8¬ƒ8\„8¨ ŒÃ6hÀ5@ˆÃ8¸@ˆC8 @2°„ <Á8Àƒ8\„8äÃ8ÀK\DEˆ<ˆ<°<ˆÃ8ˆÃEŒC>°<Œ<Œ<ˆŒKÀK\D>ˆC­<°<¬Ã8°D>ŒKÀCeÀÃ8ˆC>Œ<°ÄåÃ8Àƒþ8Àƒ8\Ä8ˆ<ˆ<°<äÃ8ÀÃ8ÀKP$ÃE¬<¬5<Œˆƒ °€8 Ã ð€8PT8À5€8\„8¬K\„8À2€LŒLŒC>ˆÃEŒƒ8ÀÃ:ÀÃ8\KäCEÀƒ8\Ä:äÃ8\Ä8ÀÃ8°ÄEˆÃ:Œƒ8¬<Œ<Œƒ8¬hˆ<¬CåÃ8ˆ<¬Ã8ÀKÀÃ8ˆC>ˆLˆÃEŒƒ8\Ä8ˆÃEäƒ8\Ä8ÀC>TÄEˆ<ˆL°„8\„84þP>Œƒ8¬KÀÃ8Àƒ8Àƒ8\„8Àƒ8ÀÃ8°<Œƒ8\„8\„8äÃ:4Ð8ˆ<ŒÃEˆ<ˆÃEäÃ8ÀC>ˆÃEˆÃ84Ð8ÀÃ8Àç®Ã848Àƒ8¬<Œ<¬<Œƒ8Àƒ8Àƒ8„Ð8ÀÃ8ˆ<ŒÃEäÃ8ˆÃE¬Ã8ˆ<¬Ã8ˆÃE°D>Œ<ˆÃE¬L¬<ˆÃEŒ<°Äåƒ8Àƒ8äÃ8\Ä:ÀÄ8ÀC>Àƒ8¬<ˆ<°D>Œ<¬<ˆÃ‰C>p®8\Ä8ÀÃ8ˆ<ŒÃEˆÃEˆC>T„8\„8À„8ÀCEˆC>T<äÃ8ÀD>ˆ<Œƒ8ÀKþÀCE°ÄEŒƒ8ÀÃ8\„8\„8¬<ŒC>ˆCåÃEˆC>T<Œ<ä<Œƒ8\KÀK¬<äÃ8ÀÃ:ÀCEÀh\Ä8ÀC>ŒCåÃ8ÀÃ8ÀÃ8ˆÃEˆC>ŒÃEˆÃEäÃ8ÀKÀÃ8ˆÃEŒ<Œ<°ÄEˆÃ:Œ<ˆCUÄ:Àƒ8ÀÃ:\Ä8ˆ<Œ<ˆÃ8ˆ<äÃ8¬C>Œƒ8ÀD>Œ<ˆÃEˆ<ŒCqn>Œƒ8ÀÃ8ˆÃE¬L°<€FEÀC>ŒÃEˆ<ˆÃ:ŒÃE„€( #L°Ä(léæƒï3?÷³•‚Â?¬ÃEˆ<¬C(¼C)8B(¸C>ìƒ;ÈÃðí>„<Œ<¬ƒ8hCC:@2ˆ<ÄBˆ5€6ÀÃ:øBÀƒ8 ÀC7 @4ÀDEÀÃ:ˆLˆ<ˆC>Àƒ8Àƒ8\„84K¬ÃE°<ˆC‰Ã8äÃ8ÀÃ:ˆÃ8À„8ŒC>ˆÃ8ÀÃ8ÀC>ÀÃ8ÀÄ8Àƒ848ŒÀƒ8ÀÃ8\Ä:¬ƒ8ŒÃ:ˆ<¬ÃE¬ÃEŒÃEˆ<Œ<ˆLŒC>À„8\„848ÀÃ8ˆCUÄ:°LpnU<°L0hþ<ˆC\‹5€8ÀÃ:PCh<ˆ5€8Àà ¾öÀÀ3À:PC€ƒ8Œ5€8„ìÁ5, <„Ã$KCÀ5€6ˆŒ<°Ä8ÀCEä<°<ˆC­ƒ8äÃ8\DE¬KÀƒ8Àƒ8À„8ÀÃ8äÃE°Ä8ä<ŒC>ˆC>\„8Œ<Œ<¬ƒ8ÀÃ8Àƒ848ÀÃ8\Ä8\Ä8Àƒ8ÀCEä<ˆCE\KT„8äÃ8„8À„8\„8Œƒ8TD>48äƒ8Àƒ8\Ä8ÀKÀ„8\Ä8\Ä8ÀÃ:ˆÃ8þÀÃ:°ÄE°DUÄ:ˆÃ8¬<ŒÃEˆ<Œ<°<ˆÃ‰Ã8ˆ<ˆ<ˆ<¬Ã8äÃ8ÀÃ8äLˆ<Œ<ŒÃEˆC>ŒC>\„8€F>Àƒ8ÀÃ:ˆLˆÃ­ƒ8\„8ÀÃ8ÀCE4Ð8äƒ8À„8Œˆ<ŒC>ˆÃ8ÀKŒ<ŒC‰LˆC>\DEäÃEˆC‰<Œ<ˆÃ8\„8ÀÃ8ÀCEˆÃ8ÀÃ8ˆC>°DEÀƒ8Lþ8\„8TD>¬Käƒ8\„8äƒ8Àƒ8ŒÃ:ˆÃ8ÀCE¬ƒ8ŒÃEˆÃEŒ<¬ƒ8ŒÃEˆÃ8¬ƒ8ÀKÀƒ8ŒC>°LŒÃEŒC>ŒC‰C>ˆC‰<°<°ÄEˆÃE¬ƒ8ŒÃ:ˆÃEŒ<¬ƒ8ŒÃEˆ<°Ä8ˆÃ­ƒ8Àƒ8ä<Œ<ˆCE48äƒ8äƒ8ŒÃ:ˆC‰Ã:ˆCŒÂ/0BÀÃ8\Ä:h‚?ßhô‚9WC/TC.ôBè‹:@=èC>lÌ?¨ƒìC€4À1üƒ= Á€ìCØ>á¾¾€B?ÀÃ:Àƒ8\D(¸ƒ;àC(àÃ$œÂ$ þ‚ìC(œ<¬C>ˆ5@2Œ<ˆC>ˆ5À:Àƒ80CÀ58°3À:ˆ1$€7äÁäƒ8ŒC>ˆCÃEŒ<¬Cl‰<ŒCg‰<ˆ<°<ˆÃ:ˆ<Œ<äƒ8ÀÃ8Àƒ8¬<ˆ<ˆŒ<ˆÃ:\Ä8°DåÃ8À„8\@ˆ·ž8xãĉƒ·0áºqF„7NÜBqðÄÁo¨pJµÀJp Žš€…⨠7.⸈âÖ!•p¸ˆùƉË7.¢¸…âà[8N¼„ùÆI·pœ¸…âÖ·P¼qâ>/aˆùÄE'n¡8xቋ˜OܺqðÄå'na>qðÆ%„÷0¡Hxãàåƒ'žæˆã"Ž—oœ8‘â"Šƒ7N\DqðÖE·P¼qðÄå/ß8xâ"ŠË'n¡8xâ"Šƒ—Þ8‘âÖu^÷0bÂ|áGœ‡Ä'Ÿ„ÖYg¡qzh!qàG¢qàIqòç!xÄžqàž|Æ'¢qÊgxZ(ŸqJhþxÆgxògxÄgœˆÄ‘hœˆÖ'¡|Ä‘hxÖ'!xZHœuàžqà'"qzHœˆÆg¡qà'oàg¡qàg¡„àÉgqàIqqàYg¡|Ä‘hßògqžqÄgxÄ'ŸqàI(qÊ'¡…Æ'¢|ÆY(ŸqàÇ7q|KqÖqÆžqàgxÄG‘ĉHœuàÉgœ…ÆžqàÉç!‰ògœ…ÆgxÖgq‚'qg¡uàYq"žqà'¢uBeF€GxÖg”~þÉWß}ùíþWŽ^Xà^®Ø§ŸüYÀTÞÑ—þQG€}öùgŸ!`¨ÇŸ”è×ãAYä‘Iæ”àgxÄ'”wN™$”wðywÞÁŸwBÉgqÖgÐHžqÎé€dÄ'–À¡€hŠ%xÆgO2ødxÄž‡àIè¡|ÆGxÄqÆYhœ|Ƨ3‘Äñ-¡qÖ'¡…ÖYHœ…ÄÉžqàÉqÆ'xÄy(qz(Ÿ…Æç¡uÄgœ…Æž|Äžqò‰HœˆÆÉGœ|ÆGxÄ'ßàéLxÖg¡„à'"qògœ||þž@cˆÎ¡Fqà‡šÄYˆàgxäÁ¦€…ևġ&€…Ö¡F€ãçœ; €§›¢Ihqà¡&xÄjâ€‡îÆ±qL Y<ÄñuˆëÇC""x$d¾Y‡8"‰ˆC"ë‡DÆ‘xŒâȇ8D"xıޅˆc éL>à!އä〇8Ʊ„,$!ãXˆ8"²qHDð‡HÖñuÀCðèÌCà¡™qDd G>"2xŒcâˆÈ:à¡™ˆŒ#ðÇCÖ‘q¬CÇBƱqÀc ‰ˆþ8"2xä㈈8Æ!’qHd Ç8Ö!xŒ#ðHÈCò!xˆcð<qŒãXÈ8ò‘uÀCðH<Æu,dðÇBÄqÀC!ÐÄ21€…ˆëE?Jæ±/ `ÕX5¾|í#H @6P¨Cû`‡òµ{Àÿè9XÕ®–µ%ÛÇ(òqDD¡p‡;Þ wL‚·{@à ŽPˆ#AëÇ:R!€=dá¨Á8TplCK5ÀplCAÇBì°€ÃG>ı|ˆâXÈ8à‘x$ 8þD2xˆC"〇8"’qˆDð<Ö!x¬câ€Ç8"x<â€Ç8Ö1qäCë€Ç8òqäcðG>Ä1Ž|Àã!ð<ıxŒc!â€Ç8ò1xŒ#!Ç:Æ‘qˆâÉ82Ž…$ã<Ö1q¬câ€Ç8Ä„ÀCëH…ö kˆ¢Ý@4BÀCð F"ŽuÀ£<Ö!fÔ<Ö!j@á@…8à‘ŠŒC.`8òa Nˆƒ€G‚¶1mˆC" ‰È2@!qäc Y<ò!xŒCÉÇ8ÄþqŒ뀇8ò„DDðGDÆq¬câ€G‚à1‘$d!ãXÈCq,dÉ<Äq¬CðÇBÄqÀ#!ð‡8à¡xˆ#ðÇBò±‰¬âÈGBòq,dyHBà‘…ˆã€G>Æ!‘qˆâ<ıqÀcðÈÇ8à!Ž…$d!<Ä„äcù€Ç8"‰ˆ#"âX<:qÀcðÇBı|Œ뀇8òñ„Àc ‰H>"‘q,d <Æ!Ž…äcâÀ<ò1Ž…Œ ‰ˆ8àñ…ˆ#âXÇBıþqˆâXH>|ˆcâXÇC"2Ž„À#!ë€Ç8ı„,D뀇8""‘¬c!âÈÇCı|ŒC"âXH>Æ‘qˆc îÄqˆ#â€Ç8à!ŽˆäCðG>Äuˆâ€GBÖñqäcâˆÈ8à1xˆ#ë€Ç8à!ŽuŒùGDıqÀ#!ðG>ÆqÀC ‡DÆqÀã!YH>ÆqÀcâ€Ç8àÑ™…äc Ç:"’q¬ã€G>""Äò¡3àAÖA£B"Bà!!àAbÄÄÄÖa!B@þÄÄa4¡ò%UpY°ˆ€±Z`Z¡€ _ò!_öáÐá ØAþA òE,ÀâXp ™° ð ¡0 Wþa!ÄaÄ4¡N4á¶ÜánëÞÁBaàaÄb>``NAº¡@ŒàÀ@l@B°!r@òÖÆÆ!"ÄÄ!",1"ÄÆbâ!àAÆa!ÆÖAàaàA"!"bÆ!bÄÁÅa!Äa!ÄÆa!â!àaÄa!ÆÄá!òþA,qà!!Æa!Äá!.Q"B"àa.1!à!!Æ!"b!Æ!àaòÂÅÄVáà*àÖ! àd@àa°AÖAà!!º¡Bà@¨!¨!Ö>àNâ`À¤`¨!àA$ `dáÇÄaDaÄÆÖAàAbà!!àaàaàaÄÄÄÄa!ÄÄ!"bÄÆ!":Ö!àAÖÆ!ÄA3"BàAàaà!b"!àAâþá!!""!"Bòa!Ö!"ÆÖ¡3à!AbbÆ!ÆÄÆÄ!äRBÆabà!!"Bbà!!ÆaÄa!ÄÁ"àa,qÄaÄÄaàAàaàAäRò!!àA,ñ!àAÖAàaà!äÆÖÁÅÄbbòÄaàAb"BbÄ""ÄÄa!Äa!ÆÆa!Æa!Ä!"Ä4#"Æòa!Ä!Äá!òA.ÄÁÅÆa!Ä!"ÄÆa!ÆÆÆAþòÄaà!!àaâ!à!!à!!bàAÆÄaBàaà!!"bàaàAàaàAÖ!"Äa!Æ!Äa!ÄÆbòaàaÄb!Äá!àA"B.QÆÄa!ÄÁÅÆÄ!"Ä!,ñ!òAwà!!,ñ!ÖAàAàaÄá!ÖÆÄá!BÆ!"Ö!"ÄÆ!Ä!b!ÆÄÄa!ÄÄaò!"Æa!ÄaÄ!Fa!àab4A W0úá„ H¡pµH¡H¡HA–p¾öþAàØARР–ðY¡5Z¥uZ©µZÿþaàAb4 5ANa¸ÞáÜÆAàabààuÄa!òAàAààÅÄá@Îa"bàAàAàAÆÁÇÆÆAÆAÆÆA""ÆAÄ!Äòa@VÖNÄÁÅÆAÖa@v!Æd-Q"Bàa"ÄÖa!Æ!"Ä!ÆaàaÄ@v!òaÄa!òaÄÆa!""4Càá!Ä!"Äa!òa.d×aÄa,Qþ"bBÖÄòÁÖ@vbÄaàA.q@Ä!Ö@v!ÖdáAÖÖÀÄá×@v!Ä^bb!Æ!Æa!–aàAòaÖ!"Ä!ÆÁódáa.QàAbàA3àABàaÄÁÇabàAÖÄ!ÄÆa!Äa!@vàaòaÄÁÅa!ÆAàa,Q"Bàaàá!@v"Bòa@v,q@ÆÆÄ@v!Äa!Öá!ÄÆa!ÆAà!Æa!òa"BBàA""þÆa!Æa!ÆÄ!"¼!ÆAÆÆÁÅ!"òadbÄa!ÆÆa!Äa!ÄaàAàAàAbÄadáaNv!ÆÄÄÁóád×aàA"BòAòAÖÄa!Äa!Ö!"ÄÄÄÄ@ÆÆA"BòAàaÄa!BàaàAòaàabÄÁÅÆABàaàAÆa!@ÆdóaòÄÁAÄ!ÆA.Å!ÄòAà¡BàAb,qàdáabBàþAbàAÖÆa"Æa!ÄaÄÖÄ!"ÄòABàabÄA.Å!"b!NÄÄÖÆ@6Æá9Å!"Ä!ÆÄa!ÄòAà5Äòa"BàA3bBÖÖ!"Æ!ÆÁÇ!"ÄaÆAÆ!ÆÁ×!DáaÆÖAàA¬u q H!¦eZ¦[Aò!_Øa®aÐáàØAþÁÀò…\ ÜAîú¡¥¡:ª¥:ZAáàaàAàaô@ô@ ÝáÄZòa!àþ`` æ5Ä!À`àdbÀÄ!Æ@v!ÄÆòaÄ@ÄaòÄòaòÄá!ÖAbàaÖA"B,qbàAàaòa!Ä!"@6"ÄÖÄabòá!Ö@vÄ!ÄaàaÆaàd-qàaÄa!ÄaÄNÄ!Äá!òaòa!Ä!àAÆÁ×Aàaàa"bòÖAàaBÆa!Öa!àÄaòd#Bàaàab^áõ×ÄÁÅa!ÄþNvàAbàdáABÖa!Ä^Ç!@ÄaÄÄa@aàaÄa!ÄaàaÄÆb!Ä!ÆÂÇÄa!Ä!ÄÁÇ!àaBòaÄ@Öaàaàád#BbàAÖA"BâdBàaàAàa,QB"bàAàaÄ!"Æa!@v!@Äa.QàAÆÄ!dáAbÄaàaÄa!ÄÆa!ÄÄaàaÄ@@v!Æa!ÄaÄ@6ÆÆ!"ÄaÖAÆáÅþÆÄa!Æ!"ÄòAàA"b@ÖAò!"Ä!"NV,QÆÆÁÅa!Äá!àá!òAâ9ÄaÄ!"Ä!"Äa!@vòÄá!àaàAòÄÄ!àaàaàaÄ@ÄÁÇa!Äa!Ä@v!@6"Ä!bÄaBBÆÄa!Æa!ÄaàAÆÆÆÆab"bbòAâddád#bàaàdáaÆ!ÆÄaÄáAÖÅÆaàadádáaÄ@v!ÄaÄ!þÄaäRbàA"â!àaB"B3àaÄaBàaÖÄá!àaÖAb!@6Ä@ÄÖÖaàd×AÆÆÄÆ!"ÄÄa@ÄaÄ!@aa@@V¦:_p`¦¡Za¦Q é! (`À¢áÔAò%  ŽáìÁ `à fú©¿Z÷ò!"Äa!ÖÆáAAAáüAÎ@üýáaÄÄÖ@B""àbÝ8qð Š+O¼qâà‰+(ž8„þðƉ[WP\¾qÅÁG± 8„âà‰Wpœ¸uãÄ!GqqðÆÁ—o¼“ðÖÁOÜ8qëÆ,8N\HqùÆ…O“·N…'ž¸|ã Šƒ7ž¸‚âŽWpܺ‚ãÄþåÛ:U¼|ãÄÁ'BùˆÏ:㈒8‰Ï8‰SÐIô<âÀ#<âLµÎIùˆÏ8ðˆSP>âÀ3<âtRAâ䳕8ƒ8‰ƒÐ:𬳕8³UA'!4Ž8å#<âÀ³<âä3Ž8ðŒÏ8ðˆ“Ï8ðäÏ8ðŒS8S‰³Î8ðä#<ë´<âÀ³•8ðˆÏ8ðˆS8s<âüˆÐ8m5NAëÀ#Eâ 4N>ã$NAâÀ#NAãˆS8ëÀ3<âÀsÒ:ðlèIðˆ8‰“Ï8â4NAâÀ3EãÀ3NA⬳Ž8ŠC‘8þ‰Ï:ðˆÏ8‰SÐV'Á#<ãÀ“Ï8âÀ#NAâÀ#N>â $Bãä3NAù¬8ëÀ“8­8­#<'…tR>â$<ãP´Îw!ˆ‚ #„¤É? /ÌpÃç£Å OL±Ä ï“Ï?ù,¼Ï?ýäãð?ýä³Ï> ÷rÊ*¯ÌrË.¯ Ê?âÀ³<â¬Ï:ð¬³ÕVÞÀ³Î:÷œ³N>â$<âÀ#<âÀcWH'Mu<àˆƒ8ã 4Bâ|OÏã4<ãÀ³Ž8ðŒC‘8ãÀ3<ã4NH⌓<ãäSÐVùŒSÐI‰Ó3BëÀ³Ž8ðŒþ8ð¬S8ðˆ8ãÀ3NAâŒ#<ã´Ž8S8ðˆ3<ã¬S8“7ðˆ8ðŒƒ8SÐ8ùÀ3N>!‰ƒÐ:!]8ð¬#NAâP$<â=N>â $Î8ùˆ³Î8ð¬#NÐðœ´ÎI‰³Ž8ëÀ#Î:‰Ï8‰8눳Ì(ðˆS8ã¬#xŒë<ÄqPdð°‹8Ö!ŠŒ'G>à1Ž|DY<Äqˆë°Ë82Ž‚Œƒ"âØJ>ÄqÀcBÖ!Žqä$ã(ˆ8 ²•|ÀCãÈÇ8 "xŒCùGAÆAþ‘uˆ£ â(ˆ8¶qÀCÇV(rxˆã È8("xˆcðÇ8("Ž‚ˆcð<ÖQqDé<ì2qÀcâÈ<ÆqÀC뀇8²xˆãȇ82xŒ!ãÈÇI"Ž­ä£ 'Ù BÄuˆâÈÇIÆQqô,'Ç8 2xˆƒ"âÇ:à!Ž­D Z>à!xˆ#ë˜ÊI(2xˆcð<ÄqÀã$〇8ò!ŽqÀã$9IAÄ1xˆ')ˆ8 "Ž‚ˆ#ð8IAì’qäC<Æq€M〇8à1ŽþuÀCð<ÄqäC〇ÇqÀcðGHı•Œ£ âÈÇVà1xˆ#!9É:ÄqDð<Öq d 8Ö!Žž‰£ ëÇ:àq’qÀc<ÄqÀC<ÆA‘qDð° <ÆqŒ 8Ö!ŽŒâŒ<ÄuÀC!««Ãú×|àµùØ«Âðª°~ücÿè‡]ëÚÃ*v±Œm¬c¶PüCë(È:à1Ž dÇ:Ä Ác<ÄqÀC<ÄqDð‡8Æ!Ž‚ˆ!â(H>Ä1»þÀC<ÆqÀCùG>Ä“äc9 <ÄQ|Ø%ã° <Äq¬câXÇ8N’qØ!ã€G>ÄQqÀCð<Ä‘qä$Bòqxˆ!vÇ8àq’|lâ€G>ÆqÀC9É:ÄQqä$!9 <ıŽqˆc[<Æ Áã$Ç:ÄQqÀ#hðX‡8 "x¬â€ÇIò1xˆc 8ÖqØëBÄ ‰!â(ˆ8à´uÀã$ðGAÄu (È8à!ŽuÀCùEÄQqÀc`GAÆ‘q þdãÇ:à1xŒC<ÄQu $[‡8à1Ž“dðȇ8 2xœã<Ä1Ž‚äCÉÇ8ÄQqäCã(ˆ8Ö!xˆƒ"ãp <Äq DG>Æ‘qd+ðȇ8àq„ˆ£ 'Ç8ìRqÀCðÈÇ8à!xŒCGAN’qˆã€Ç8Äqäc!9 <ÆQqd+'ÉÇ8à!ŽuÀCã€Ç8Ä“¬〇á±qPdɇ8zVqDë€ÇIౄŒ£ ùØ <ò±q¬! ] 2xˆùGAò!xˆ£þ 〇8ÖA‘žÁc+ðEÄ“Àã$ùÆ‘qÀcð<Æ!Ž‚¬ƒ"ã(ˆ8 2xˆcðBÖ|ˆ£  8ò1„äc'‡8 2Ž©ŒÃ.ðGAÆ1q$ã€Ç8²ŽˆbŒBN2ŠÇ:¶ ëGÈúáX¼jüä/]AñxˆþëÇ8òq’qÀCëÇ8à±xˆcã€Ç8à±`³ð°4!ðð0±ð ð =“!ð0ðà@!ð°ð0±'âPãâ0ë€ë !1±ùã±â'1ëâ0ð ëPãë ð !±ãëPãPââ€ã ù01ù 1±1S!ð !1ùPâðpð ã€ãPâ'ëâ0141âPâ€ë0ââ°±ðp!þëâ°!ð4a!A³ £'ë ãâ€â'â0!1ð ë !ãð°ð ð !ð ð0ð0±ù 1ùPãâ°ð0ð q!=â0ð°âãâ0ð ã@âãâ0âP'11ð ãë ë ð0ù [Aâ€ã€â!ð 1ë q1ù !ð0ùp!ãë ãããPv1ù ð°ùPë 1ðþ'ãâ@'‘ðÐ3â[±ð°ù qS1ð0Ñ3ù ã°âë0ð SqãPëp[â°ð ù ð°â°ð°ùpùpð0ð°ß±â€â°ð ã€âãâP'Aâ01ðpð ð0ðãã@âP'Qãâ1!!ð0ð ã°â0qð 1ð !ã€ãùPâ€â0ù ðâ0!ð ù !ãPã ð ð0ð`!ð0þ!ãPvQâ€â0ð0ëâ°ð ð°'±ë !ãã[!ãqð ð !ð ã°âââ°âš° Œ0ã ±š`~Š…W)ª0ýÀ¢/ £‡µ ðð ëâ4ðââù ð°ð°â'‘eK4ð ë ë ð4ð ±âë ±ðëëã€'Aâ€ãââ0ð0!!!ð0ð01â0'ã[!ë°1ð ‘ãPù0þqù0ë€ëPãã ð0ð0ù0!1âPã€ã ð0K*ðp1âãpð0â€âPââ°ã ð°!‘â°ðp!4âù ãpðpð4ð0±ð4ð`±±ð0A#±ð41â'‘ãã€ëÓ  1'ãù 1!!ð ð°ð ðp!‘=#!ð qù ã ð0ð ð ëãpðë'Qã@âPù qq‘þ[ãP''ã qðpðã°1âPâã ãP['ããPâPãã0'±ð°ð0!ë€âù0!ð ð !!ë'±[±1â[Aãã ëãë0ââã ù0ð ë[Aâ0ð0'ââ'±ð !1âPã€ù0â€â€ë[ã°ðââ°1qù ð 1ð01‘âP'ãP'Qã@ãPâþãã@ãâ0ââã ãPâ€'Q=SãPâPù0ð ‘â°!ð0â€ãâã ð°ð0ð0!±ð ð0±1ðââ€ãp!qð ðâðâã'‘ã€ãPëPù !!ëpù ð ëãâPâ€=ƒâ6𢀠ŒùA3£Ð1Ú0ý ÆmìÆ0 ùPâ°ð°ð0ëëPã'ââPdÈââãP'Qþãëð !ë ã°'1ð ð0]<ðp!ð !!1ùpð0ðpð!ùpùã'ã'ãë [±âãPë ãâ[â0ù'â°'QãâP'â€ãâ0ßað°âPâð0â0ð !!Ñ3ð [ë ±¤!ëë0ùv1ù ëpq!ãâ4ðpðpðeâ°âã ùëë0ù ãPvâ4Ë þ !ù€â°að ã@'‘ããPâ°ââPââðãù'Qâã ù€ëp!ù !ð°ëâ0!ã@'1ë ùpãðãâ0ù6ãâ0ð ãð0±ââãâ€=Sâ0që ð ãã@ãââ01ð01ëp!ð ð°1±ââ'ë ëã'1ùPãâ0ð0!ð°±'ëâããPâþâPââëPëPë0ð ð ãð°ù [±âã€'1ð 1ù [â°ð0ð ð0!1ð0ð ð ð0ââ°ð qð q!ãâP'±â0ð ð ã€âPâù°1±ù ù ð ð01ë Ñ3ð°ð0âPãð ã ùP'ââââ°±ù !ð0ð0ðp[âPâ0ùðâ€â[â0!ãP'ë þð°â[ãëãâPãëâ0!!ð ù ð 1ð ã ð ë !0 ¿À0ðpë0 ýðƽîë¿ÞXû ÿ@ââ°ð0ð0!]ÜÅââPâv±ãâPëù0‘âââã[!ð`!!±ð0ââ0ð ëPââ€ãããPë0â°q!ð°ðâ°!ð0ëù ð0âãâ@âë€ãp!!ðpð þëvâã ß1ð°âù0ð ãPãPâââù ð !ë ð0âëãë°ââe!±‘âë ëPâPëë ð°ð ùÐ31ëâãâ°ð0 ¢ ðÐ3âù ð0!!ð01ââã ù ãâPëãPâPãã ð0âã€â€â=#1âãã !ù0‘ã€ù !‘ãëPù ð0ð0ðþ`ð ë0â0ð0âããù0ð ð0''QâPâvâãð OqÇÁ'0a¾qó­8ž¸uðÆÁ)nœÀqÅ O¼|â6Žƒ7^BxãÄåKo¼„ðÄÁoœ8xãàƒ7.!¼|@IœÖgÆÉGxòg uÖ A”e qZG“~þñðCCqDK4ñDSTqECåŸqàIqàž„FGÖHxÄ'°Æáhœ¥ÆÉgÖgœuÄžqàžqJ(qžqJ(qqžqàG qJžuàYgœ|àYgxÄYJÖGxÄþHx@HxÖG qÄg qàGœ|ˆähœ¥hxÄ)ŸqàÉG uÄHÄgxÆgxƉp qqòè2qÖ'xÆgœÖGœqàžqGàYGxÄYG uJH qÆg‚GxÆ(¡qg u–E uòG ugxÆG ËÆgœ|JòHœqJH qàqà'ÄgÆGœòG qà'xÆHÆ(¡qÖGÀqàG qàYGxÖžqò¹l)qàgœ|gqÆYGÆþÉG àg q žu8ºlxÆÙHÆÉGxÆ$xÄGœÄ(!xÆGÄÉ'¡qòqàYgÆgÄYJœ|àg qž„à'Ÿqg#qg#qàgœ|àg qàG qžqàžqòG „àžqZgœuJhœÄGœÄÉGœ¥ÆgœÄG qàqÆGœÄhxÄgxÄqÆqqàqàYGœÆžqÖgŒëH<Ä1qŒëÇ8xäëÇFÄqÀcþ‡@Ä1ŽuÀ#!ã€Ç8à!ŽqDY‡8Æuˆ〇8¬|ÀCðG>Ä1ˆc<@q$!ãÈÇ:౎ŒC LB"Žqä#!Y‡8ò!Ž|Àcâ‡@Ä„Œ ‡8à!xˆ#šX# ­C-âcýøG@ÒC èÇ@Ö1qdº@Å0j±‡ˆ Ç8à1xŒ 8Æ!xˆã‡@Æ!ŽuˆâX<ò1xäc뀇8à±xˆC ë€Ç8Ä!qˆâ€GBà1Œâ؈8à!xˆC þ ¹Ì@Äqˆc〇82xŒCɇ8Ö±‘qˆâȇ8à1Žˆâ€G>ÆqDð<Ä1x€〇8à!x¬ãÇF@’xäCãHÍ8"ˆë€Ç:à!މ〇8²xh)ëGBòx¬CðÈÇ8"x$âÈ882xŒCÉÇ8à!ŽˆâÈÇ8’À$ð<¡‰qˆcð‡8"$xäcù€Ç86’qˆcãÇFÄ $!GBà!ˆcã<Ä‘qÀC‡8Öqˆ#ãþ€H²qÀcÉÇ8à‘qäcðH<ÄqÀCðG>Öq¬ƒ#ã€Ç86"xŒCÉÇ82q¬ãÈGBò1$âÈÇ862Žäcâ€Ç862qdâ€Ç8ò!ŽŒCÇ8"€ãÈ:ÆqdùÉe82xŒCðXÇ8Äqdð<Ä1ˆâHB6’xŒCÇ:ÄqÀcY<Æ!xŒCIH>Æ!Žu$d Ç:à1¬CIÈ@Æ!qˆë€Ç8Ä!qÀCð¸Ì@Äq$$â€þG>Ä1qdð‡@"q$ã€Ç8ÄqdùG`Ä!`ÁcâXJ>à!x¬ù <ĈC 〇8à!Ž|$âÈÇ8"ŽäcâH>Æ1qDð<.3qld <"|ŒC ãG>Æ!xˆC âX‡82qÀC<Æqˆc# 8Ö±Àcð‰8àq™äc 86²x„@È`Ä@qÀCÓ¦vµ­}mlg[ÛÛæv·½ýmp‡Û ø‡8à1xŒC ÖèD* G̈øC*¬!„äã2ù¸ þ<Ä| $!ðÇ8òu DãX‡8@’q DãÈ8à1Ž|Àcð<ÄÁq d‰@Äq$!ùàˆ8à‘xŒ# 8Æ!Ž|$ Y<ÄqˆcùÈ8ÖqÀ#!‡@Ö!ŽqDG>Ä„ä#!ù<Äq€$ð<Æqäc ãàˆ8ò!xˆã‡@Ä!Ëd‡@ÆA ÀCù‡@¨qÀ# 8Æ!Ž|$dðX‡8Æ!q  8²Ž„äCùÈ8Ä’|ˆâÐ|„ÄqÀcù<þÄ‘ËLâ€Ç:Æ‘ŒC ëÇ8à!xŒ〇8à±qd<Ä1xˆc ãG>4¯yqÀcðX‡8"x$〇8à±qŒùˆ8ÆqÀCù<Ö!€‡q‡ïKˆu€q€‡ux¸Œ|‡qЇ‡|ˆq€ˆqxxHx‡‡ðxx‡q€‡q€qx‡ÍK‡q€q H‡|X‡|ˆËˆuq€‡uHHˆqq€qxHxHˆHˆïKˆï‡q€qø>qxxXq€qмu€‡qþ€qXxXx‡‡|HxxT|xxX‡|@Eq‰uxxq€q€qQXF€„€‡„€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€þq€q€q€q€q€q€q€q€q€q€‡QøxHˆ|‡q€VH#@DØDØD0‚t`…X‡`Æ€(a qø>qX‡q€‡qlà€|xÈ€qq€‡|‰Ë€‡qHÍxqˆ„ȇqHˆ|‡ïXxx‡ï[x‡ÈqȇqqÈx‡uqxXq€qq€‡|‡q€‡u€‡qˆuˆq€‡qˆ|xHxXqq€‡u€‡q€‡„qqq€‡„pþ†€¨€3Xj€€tÐx‡ˆqÀ‡‡u€‡|Íc†H‡uˆq€šÉxx‡u€‡qXxÀ‡‡q€‡uмe‡u‡„€q͇|q@Å„€qˆ|€‡|‡‡|€‡q€‡qxHxxxṪqˆq€‡|‡q€‡q€‡„ˆqxxÈqqx‡‡xxxx‡Xx¸ x‡|x qˆ|xxÈqq€‡qˆ|þHˆu€‡qxT„q€oÈqX‡ï»Œ|Hxqмq€‡u‡q‡|‡ïxqX‡qqˆ|x–HxHxq€‡q‡|xqX‡„€q˜Xx‡uqˆqÍxÈq€‡u€q€‡qqȇqqX‡q¸ xxȇqx͇qqˆqH͇ qȇqxTxHxHˆ|x­xȇq€qˆqˆ|xˆqHˆu ͇q€‡þqˆqмqq€‡qq@Å„@Åq‡q€‡|xHx‡q˜Øq€‡q€‡qHxx ‡ïKx q€qÈqx‡ËXxq€‡|‡uм|xX‡…_`„ø>q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€þq€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€qЄ‰|ˆV°‡t°‡t°‡tåQfqxxx`‡q°†H€„ˆqмqȇ„€jx‡qXxÈx qÈ͇xxHXqˆq€‡q€ˆq€q€‡„ x‡|xq xxX‡„xXq€‡|‡‰x‡|‡qX‡„‰|þˆq€q€‡q€‡qq€q xX‡|€qˆqÈqȇ„€‡qˆu€qмq€‡q‡t@€=Ȇs9j€qÈq‡|jx8l€u€‡q€q€qÀ† xq`†XxXq€qq€‡„ÈqxxX‡„ȇ„€q ÈqxxX‡qq˜P€q€‡qÈÍxHˆqq€q€‡„‡x ™qˆq€qxXxÍK͇q‡q€‡qXqxqÐxâÄå/Ÿ8xùÖÁ{Xp¼qðÄÌ7n]ÁqðÄ 7ÞCqÇ,(Þ8q1 æo\>qãà­[§RÜ:xâàå'PœÀqâàƒ7îaLqUŽ8®à8xâŠoœÀ‡ÅÌO¼‡ðÄÅ\þWP\¾qðÄÁo¼qðÄÁoJâà‰ƒ'n¼q7áåoœ¸Ç*Å­Sy+¼qðƉøÞCxùƉƒ×rÝ8qðòƒ'Nà8q1ó‰ƒ7ž8âÖ 'n¸‚âà‰Ë'Þ¸‚âàƒ'N ¸‚âàOœ@qùÄ­ƒ7.æ8qÅ 'Nà8xãà˜ïa>qðÆ s¼qâà³<ãä£<â¬Jùˆ#81‰“Ï8S8ùŒ#8‰#Ð8âÀ3<ô<ëÀ3<ã4<âÄ”Jå3<ùˆ#Ð8ðŒÏ8Á#<â¬8ð<8þ#<ëŒ#8ðŒ#Î:ðŒÏ8â$Ž@ã$N>-Á#<â¬3Ž@!ˆ‚ #À#<âUç:Óh’§ž{òÙ§Ÿ¨ ƒZ¨¡‡æùÏ8ù<´Ž@©¤i:ªìSi>Å„"Ð:âÀ#<Ì <ç@‘@7ÃÄcÍ $¬ÓM¸ˆ3'ðP#ÀCëÀã Ú 3ãÀ#Î8ù<8ðˆ8ðŒÏ88ð¨ÏC­Ï8ùˆ3NAãÀ³<âÀSç87­#8ãÄÔRAëÄ4N>â$<â$Î8ðŒO>âÀ³Ž8ðˆS8ðˆ3Ž8=Ï8âÀ3ÎMâÀ3NþAãä8ãˆÏC7=´Ž8ðˆ³: ”0Ê2‰CÍ,dc ¬CâP#€8ëP#€8ðŒ#Ð8ù`S@>1€8ÔPÅ8âä1A>Ý € <çpÏ:.À  :3ð°5T±<Ô<ã$Ž@âÀ#Î4£Œ#Ð:âäÏ8‰Ï8Jð¬#<âÜôPAãÀ3<ãÀ#<ù¤Ò8­#ŽJðŒ³Ž8ãôP>âÀ#<âŒÏ:âŒ#ÐC©”87‰“Ï8ðŒÏ8‰“<âXÏ8â¬Ó’Jùˆ”8ùĤ<ã$<âÀÓR>Y^ÐCùˆÏCðˆþ8‰#8ðÆqd‡@qä 8Æq“‡ÀcâÈ<ÄQ‡ÀcðÇ8òñqÀcY<2ŒâGL²Ž‡Œcâ(È8ò!ŽqÀc1Ç8à±qŒâÈÇ8 ²Ž‡DÇ8þò‡ÜD1G>qÀC‡åò!¬C*)ˆ8òŒã1âˆ8à!ŽqÀCÇ8"¬ã!ðÇMÆ‘qŒã(ˆ8b"Žuˆ#£ø#qÀ£%™FžöÑ}ôcýØG?öÑ}ôcýØG?öÑ}ôcýØG?öÑ}ôcýØG?öÑ}ôcýØG?öÑ}ôcýØG?öÑ}ôcýØG?öÑ}ôcýØG?öÑ}ôcýØG?öÑ=MCœ2)MkjÓ›Ö4ëE?Ö!‡„Ï Ç3èŠ}LøxF1B±x@â`þЀ<àë<ÄÁ ˆ#ØC6ò!xP#ðJ8Œ‡#〇8¢ UqØUðx<qäã!v<Æ!ŽuÀCð<ÄqDuâˆê8Äq¬ã€G>Ä1xˆÃ®ðx<Æ!ŽqˆcðÇ8D qÀcð<ÆáZ»Š#ªë€ª8 úxŒã€êCà1q¬cðÈ<ÄUqÀc⸭8À±$@ À…8¨mÀCÌ €8¨xPCP¥F¢:Ž À€x0â FÀ±qPƒãÇö|<$H†8àAþŒˆƒІ8ÖAŒªã°ë:౎e€BAÇ:Æ!xŒ〇8àñxŒã€êCò!ÑŠªãGTÇqÀCœPµ<Ä‘qÀcð<ò±xˆcðÈÇ8à1¨Ž∪8à±xäC%P<Ä‘qÀCP‡8à1އä£%PU <ò!Ž|ŒC¢Í<ÆqˆëÇCÆ‘qÀCðÇm×qäCù<ÆÕuÀcP<Äa×q@UPTÅ‘•ˆ#ã€Ç8Äq@UQÍÇ8ÄÕq@u®GTÇ!¨ŽªâˆªLó!þxˆC´P<òñ•ˆcðÇCò1q¬âX‡²á1xŒ〪8¢*¨ŠcðTÅÕ‡äcQ<ÆÕqˆ#–ƒj>Äq@uð‡8 :އäc‡8¢*•DUðPÉC¢*x¬ªã€Ç8¢úxˆcP͇8ÆqØ5â€ÇCà!xŒCQGTÅqÀcâX<ÖqÀcð<ÄÕ|ˆãô¢=éKoúÓ£>õ¦ßG>ö1 P€bÝž=íkoûÙ¯cðÐD?Ö1ލŠC¬xÆ3ØñŒPäùÀ‡<𠨊cPeF²‘r¬«ø€ÐÀc«øÀ6p qPCðXÇ8¨1 À_ÈTÇqˆªã<ÄqtÛ8ØÕ8Àƒ8ŒC>ˆ–8@UKÀƒ8ä<´D>ÀÃ8äÃ8Àƒ8¨<ˆÃ8DÕ8Àƒ8@ÕCÀC>@Õ8ÀC>Œƒ8ÀÃC@UK¬<ˆ<Œƒ8þŒ<Œ<Œƒ]‰Ã8ˆ–8@Õ8äÃCÀƒ8@•8äT‰ƒåD•8@•8ÀÃ8@Õ8ÀÃ8ÀÃ:ÀÃ8<„5Ì@À5À:ˆC>PƒÀ5À:PCˆÃ:`ƒÀÃCäƒõý6@6,Ã2ˆ3 €8Pƒ¬ƒ8¬5@>ŒÃ*|ÀlÀ)œ5 @üI€À5T‰5<´<Œ<¬ƒ8Å4€T‰<ŒC>Àƒ8äCKØ•8äÃCŒCT­<ˆ<¬ƒ8ŒT=„]=D·<ˆC>Œ<ŒC><<ˆÃ8¬ƒ8@•8ŒÃ:ˆ<ˆÃ8@Õ8@Õ8@ÕC¨D>ˆCTþ<¬ƒ8@Õ8Àƒ8ˆÖ:ØÕ8äƒ8¨T‰T‰<Œ<¬ƒ8ÀÃ8äCT‰T‰CP@ÕCŒƒ8Àƒ8ŒT<ˆÃ8@•8Àƒ8ÀÃ8@•8(›8¨D>Œƒh©<ŒC>ˆ<ŒC><<ˆC>ŒT‰ƒJ¬ƒ8@ÕCÀCKÀÃ8Àƒ8@•8Œƒ8ä<¬Ã8äÃ8ÀÃ8ÀÃ8(Û:D•8ÀÃ8ÀÃ8ˆCTT‰C>@Õ8äT­ƒ8¬CT<¨„8ÀÃ8Àƒ8ŒC><Ä8@•8¨D·‰Ã:@•8ØÕCDÕ8äÃ8Àƒ8ÀÃ8Àƒ8äƒåDUKD•8ŒC>@Õ:ˆTTCTåÃ8ˆþT=D>Ø•8@Õ8ˆ<ˆ<ˆÃìY<ˆ<´Ä8ÀÃ8(›8ä<Œƒh‰CT=DT‰T‰C><TYÎ8ÀÃ8ä<ˆÃ8Àƒ8Œ<ˆÃ8@Õ8ˆÃ8Àƒ8AÕ8äƒ]ƒhµÄ8ÀÃ:D•8Àƒ8ŒÃ:ˆ<ŒC>Œƒ8DÕ8ä<Œ<äT‰Ã8ÀÃ8Àƒ8ÌÞ8ÀÃ8@•8ØÕ8@•8ŒC>ÀÃ8D•8¨„8ÀÃ8ˆC>@•8Àƒ8„€&,# <Œ<¬<¬Ã2ˆ‚ê9èƒBh„Ž^>ˆ^?€^žLÃíiè†ÎÞ:ÀCP<<€B?äÃ8¬CT‰+°ñ±ƒ(ìÃ)þ TÁ>ˆÂ8ÀC>0C€Ã8€Ã:„à8À3€8¬<¬:BÀ5€8äÃ8tChÃCÀÃ:Œ<ˆ<ˆTC>Œƒ8ˆ–8ÀÃ8ÀÃ8@Õ8ˆ<<<ˆÃ:ŒÃCŒƒ8Àƒ8ˆÖ8¬ƒ]©„8¬ÃCÀC>ˆTåƒåäƒ8(›JˆC>¨„8ˆÖ8D•8@•8ä<´DKÀÃ8@ÕCÀƒ8ŒCTƒ8¬C·©„8ÀC>ˆC>XT‰TåÃ¥æƒ8¬ƒ]­ƒ8À5<Œƒ8PCˆ5€8PƒˆÃ:Pƒ@•åÀƒ8tˆT‰3€8PƒÀCþPPC<<ˆ:B¬C7€6ˆÃ8ˆÃ:ˆ5À:Àƒ8PƒØÕC@Õ:ÀÃ:Lƒ(ˆT‰Ã:Œ<Œƒ]CTT=<Œ<Œ<ˆT‰<ˆƒ]ƒ8D•8DÕ8ÀÃCÀÃ:ˆ<¬Ã8@•8ÀC>Œ<ˆTåÃ8Àƒ8ÀC>Œƒ8äÃ8Àƒ8ˆ–8¬<¨<ˆ<Œ<ˆ<<Tƒ8ÀÃ8ÀÃ8ÀÃ8<Ä:Àƒ8äƒJØÕ8ˆ<Œ<<Ä:¨„8ØÕ:Àƒ8DU>ÀÃ8ÀC>ˆÃ8<<ˆ<Œ<ˆTµT‰<Œ<ˆ<äƒ8Œƒ8ÀÃ8ÀÃ8Àƒ8äÃ8ˆþÃ:ÀÃ8ÀÃ8ØÕ8<Tåƒ8(›8DUKÀƒ8@U>XÎC¬ÃCÀCKDÕ8ÀÃ8ÀÃ8@ÕCÀƒ8@Õ8Àƒ8DÕ:¨„8¬ƒJ¬T=<ˆ<ˆC>ÀÃ8<<ˆCTåƒ8Œ<äƒ8ÀÃ8ˆÃ8<T‰<ˆT<ŒCT‰<ˆÃ:<T=<Œƒ8äÃ:Àƒ8ˆ–8@•8¬ƒJØ•8ÀÃ8<<ˆÃ8ˆTTY<ŒTC>ÀÃ8Àƒ8@Õ8ˆT‰<Œƒ8äÃ:@•8DÕC@•8@Õ8@•Jˆ<Œ<Œƒ8ÀÃ:ˆÖCÀƒ8@Õ8DÕ8äƒ8äÃ:Àƒ8¨T<ˆTþ‰TåÃ8Àƒ8ÀC>ˆƒhƒ8¬Ã8ÀÃ8ÀÃCÀƒJØU>Œ<Œƒ8@•8ÀC>Œ<ˆ<Œƒ8@•JˆÃ:Œƒ8ÀƒJ@ÕCäÃ8@Õ8ÀÃ8ˆÃ8ÀÃ8ÀÃ8ˆCT<Œ<<T‰<Œƒ8ÀÃ8ˆ<äƒ8@•8ÀƒJˆ<¬T…€( # <ˆÃ8ÀÃ:,ƒ&TJ?üC>@r$Kò$Sr%[ò%cr&Kr?äÃ?ôÃ'÷Ã?äC?€ž&Lƒ r*«ò*³r+GÕ:€Â?¬ƒ8ÀÃCˆC>°Â3HÃ3H(¼Ã;à$¿ƒ&ˆƒJ@Õ80ˆT­C7@4ÀÃ9Ì€ÀÃþ6 ÂC¤BˆC8 @4<¸ hز8ä<ˆƒh‰TåCT‰CT‰<¨<Œ<¬C>ÀÃ:DÕ:ÀƒJ¬ƒ8äƒ8ŒˆT‰Ã8ÀÃCØ•8Œ<ŒC·ÙrT‰<<Ä8ˆC>ÀÃ8ÀÃ8ˆ<¨<¬C>ÀƒJ…8äƒ8ÀÃ8@•JØÕ8ÀÃCPCü‚8là 0€8PC¬TQƒÀ5Ø26<ˆT1C€5@PƒÀC7 8ˆC*À:Àƒ °@6Àþƒ5pÂ:PC<„ÃDT‰T‰<<Ä:,Ã(@•8@•8ŒT<ŒC>Œƒ8Œƒh=<ˆT‰TT<@ÕCt›8@•8Àƒ8ŒC>DÕ8ÀÃ8äƒ8ÀÃCŒC>ÀÃCDÕ8äƒ8DÕ8Àƒ8@•8Œ<Œ<ˆƒåäƒ]=DT‰ƒ]‰T‰Ã8ÀƒJÀC>Àƒ8äÃCŒT‰TC><<¨„]‰ƒJÀƒ8ÀÃ8ˆƒíY<ˆC>ˆ–8ØÕ8Àƒ8ŒC>ˆC>ŒCTþ‰TÙ2<Œ<…8äT‰C>ˆÃ8D•8Àƒ8ÀÃ:ŒC>ˆ–åÀƒ8¨T‰<äTƒh=<ˆT‰C·‰CT‰<¬ÃCÀƒ8ŒT‰<ˆTC>ˆ<ŒCTC>@•8ØÕCD•8äÃCÀÃCŒ<ˆCT=<ˆT=<¬ƒ8ŒC·‰Ã8Àƒ8ÀÃCÀƒ8ä<<Ä8ä<¬<ˆ<Œ<ˆƒ]‰Ã8ÀÃ8ÀÃCŒ<Œƒ8@Õ:äÃ8Ø•8@•8Œ<<T<ŒT<ˆT‰Ã8äƒ8@Õ8äÃCÀÃ8ÀÃ:ˆ<ˆ<ˆCT­ƒ8@•8Ø•8ä<ŒC>D•8ˆ–þ8ÀÃCÀƒ8Àƒ8ÀÃCä<ˆ<ŒC><„²C>ÀÃCÀÃ8¬T‰T­C>@•8¬ƒ8„À(,#<äƒ8@Õ4hB?䃄|ÀKh?üÃ>äC?Dò?LržLC=;üÃC|ÄKüÃçƒ8¬<<Ä(ü<ˆƒ]­+ƒ4<ƒ4Œ>L"Ààƒ&äÃ8ÀÃ8Àƒ80Ã<<ˆ<üpÄA¬6|@œBPDÁ€,¬: Á€HÁ8DÕ8@U>ˆ<Œ<ŒÃCÀƒ8ˆ–JØÕ8ˆCT©„8@•åÀƒ8äƒ8Àƒ8Àƒ8¨<Œ<ˆ<ŒC>ˆÃ:ÀþÃ:ÀÃ:Àƒ8äƒ8Àƒ-C•8¬<ŒT‰ƒ]<Œ<ˆ<ˆÃíƒ]åÃ8¬Ã8ˆ<ˆT=<ˆƒJˆT<¬<Œƒ8ÀÃCäÃ8ÀÃ8ÀÃ:ÀÃ:Àƒ8„C4@@ DÃ:PƒˆÃ:ˆ5Ø23 €8PƒØ25àx¬ Y<ÄqD< 2’ˆâ€G>àŒƒ"â‡@Æ!qdð‡@ÆqþDð‰@Ä!qPdð‡8ƈŒƒ$ã€Ç82xdkâÈ< ’­uˆC 〇8à±q"¯G> 2ŽuPdð‡8ÆA’uP"ð€ˆ@Ä1xŒ#DÆ!ˆP$ù€Hà!xˆc‡@ qd‡@Æ‘ˆƒ$‡8Æ!Žqpjâ É8"Ž|Dð‡8à’u¸Ç8ò!xˆcâ(–Áˆ¬C 〇&ò¨|ì#ûÈÇ>ò±|ì#ûÈÇ>ò±|ì#ûÈÇ>ò±|ì#ûÈÇ>ò±|ì#ûÈÇ>ò±|ìþ#ûÈÇ>ò±|ì#ûÈÇ>ò±|ì#ûÈÇ>ò±|ì#ûÈÇ>þq¨} jŒÒG?41 ®©IUªRᱬA@‘x〇8,‘ W9Âa«#à!’ ÐV’ˆƒSëÇ:ÄuˆâDòqäã<Ĉc 8à1qP$Ù‚D‘uÀcâ€Ç8²x¬ëH>Æ!x¬ƒ"G>ÆñˆDë€Ç8’qP$[âDà‘ˆä$Çdá1qäcÇkÖ!q"ð‡8à1ˆþ 8ÖuˆC â EÄ!uˆƒ" 8Ö!’ˆcð‡8ò!’ŒCðX<Öu"ðX‡@ BqÀCJˆ$G6@!äc$‡8à1xŒƒ"â€Ç8à!OMV ‡@Æ!q¬cð‰@Æ!ˆƒ$¡Èd2xŒƒ"âÈ8 "|Œã@ Dà1xŒã€Ç:à1qÀcâ€G¶ qÀ"뀇8Öq$ùIò1ˆƒ"âÈÇ8à!xŒâ ˆ8à!ŽuP"G>ÄAˆDð‡@Æ!ˆÀcþð€<ÄAq¬C ùÇ8’Ь"< "qÀcðIÄ‘qDð‡8H2q¬câ€Ç82YqäC<ÆA‚äCë Èdá!Ž×ä$âÈ8qäcð€<ÆqÀcâ€Ç82qDðIÆ!qÀCù<Ä!qPd 8à‘q$ã<Æ‘|Œc²ùG>ÆqP$âÈÇ82Ž|ŒC âˆ8à!ŠŒC 〇8Ö!|ŒC ãÈÇ8("xˆcâÈ8^3xäcâà”8(2qäC G>ÆAˆÀ"¯þG>ƱqDðXÇ8ÄA‘qPDðÈ<Äq@ã<Æ!qÀcH("ˆ#ãà8Öq$¢@# ŽqD øG>òÑá AxBž`)Ç?ò‘—üäOø|üÃòÿ°<áÿ‘~èCšXƧH_zxŒ〇8H"x€âððµ@¬qVüáŽ@„#áˆ=8ÂëAàAqÀCãX‡8Æ@È:"ˆëˆ82xˆë€EÆ‘qÀ#ð<Ä‘ˆ$ðȇ8H2ŠŒƒ"ãȇ8ÆA‚€dÄAþ Ä"Öa²à$HBàaàA@bÄa(BòÆ"@B ÆAòaP"àa   bàa@‚"ÄA Æ!àaòa^CàAàa‚ àa‚ (BB(‚ (bàAàaBàA(BÖABÆÖ" bBàAàAÖÖ"ÄÄaàABÆ!ÄÖAbÖAÆÄaò ÄÆA b(BÆÄaàaHb("à"bòaò"àAb(BHbP"àAÆþÆA Æ!$ÖAÆÆÆ%Äaò"àaàAHbòAòA ‚" ÖaòAÆ!ÄaÄaàaàaÄ%ÆÖA(BbàA(BÆÖ"ÄÆÄ%Ä bàAH"PBÆ"@b"[àaàAb(BPbòAàAàAÆA Ä" Ä@"àaò& %ÆÆA Æ@B Ä$(b^CÆA ÆÆ!ÄA Æ!ÆA ÄA ‚"ÄA Ä!à"BàAHB@ÄÄÆ"þÆA ÄA @"àAbbàAàaò"Ä"ÖÖA"[ÆÖAà"ÖAÆAàaÄÄÆA Äaà"$ÖAÆÄa ÄÆ"ÆÄA Äaà"ÆÄƲÄaàaà"àaBB@â5Äaàaà"Ö"àa"òA ÆÄÆ"ÆA Ä!"à"à"Æ!bBÆÄA ÄÖA(BÆ"ÖaòÄaÄ!Fáa& ÄA%%ê¡ê¡‚@òAòAþòAòAòAòAòAòAòAòAòAòAòAòAòAòAòAòAòAòAòAòAòAòAòAòAòAòAòAòôúaPòRòÁRöáPòQ4a|H‹ÔH”Hóa²àAÖÄÄ!4!HBÖÄ!ÆÄ!ÄÄ!Äb|M ÄA ÄòA ÄaBâÄaàAbÄA ÄaÄA ÆÄá5ÄÄA ÆaH"[àAòAÖ$Æ!ÄA & Äaà"àAÖAòAÖS@bHþBòABb"ÄA òAÆAà$ÄA Æ!ÄÆA ÆAàA^c8"àAò$(bÄaÆAÖAàaàaàa(bòAÖ"àaÄaÄÄaÄÄA ÖAÖAàAÆ B ÖAàAàaàAà"B¸F ÄÖ"Ä!à"àaÄÖ‚$ÄA Ä àa4Äaà!ÆÄa(BBH"²òAà!Æ!Ä" ‚$Ä"ÆAÖAÖ% @ÄÆ ‚"Æ$ "ÆþÄ![òA" ÄÄÆAàAÖ"Ä"ÆAàAÖÆÁSÆAÖÄaàaà!Æ"HbàaòaBÆAbòAB" ÆAàa(BÆÆ%òAà"^cÄA  "ÆÄ!Ä&‹" ‚$ÆÄÄaàa("@B Æ% "@BÖ$ÄA ÆA Æ"à"òa²à!Ä|"ÆA òa B ÆÆ"àa²^cÄ$Æ$Ä"ÄÄA Ä!Ä$Ä@"ÆAbÄ!ÆA ÆþÆÆA(BàÁàa(bÖÆ "Ä!Äá5ÖòÆ!àaBàAà!Ä"ÆAòaà!ÄÖA ÄA ÄÄ B Æòa"ÆA ÄÄ! òaòa(bàAbà!ÄA ÆA(BàAø"($& Ä!@"àaà$^C"ÆÆAàAà!ÆA ÆA ÆÄÄ&kàAÖa(bB@–%4QöA‚ ¹‚ Ú¡Ú¡ùòáòáòáòáòáòáòþáòáòáòáòáòáòáòáòáòáòáòáòáòáòáòáòáòáòáò¡ö!@OúÁ™ûÁ™¹òáOòA¦Áôº%Æ"ÖÆA ÆÖþá5ÆÆÖÄÖÖò"ò$ÄaBàa@B Ö"ÄA ÖÄA Ä"ÖaòAbàaP$òá-áAòAbàaÆÄÄaàa^c(BàAàaàAàaÄÆAà"òAbÄÆÄa("@@bþÆ!bò&kàAòAÆ!àAbàaàaòaàAÆÄ$ÄÖAòA@"àaò"&+ ÄaÖaàa"(BàA(bàAàAàAàA(bà Äa(bÄaPBàAÖÄabÄA ÄÄabòÖAà"ÆÄA ÆA &k@AàAÆaÄ"@‚"Ä $àAòA@@BÆ@‚"ÆÆ$Ä!HbàAÆ"Æ!Ä" B ÆAàAB(b Ö!Äaàþ$ÖA ÄÄÄ!HbàAàA@"àAàaàaàAÆÄaàaàAòA Æ"ÄaàABàHÇAàaà!"ÆA ÄÄ$bòÆ! bà!Ä!ÄaàaàaHBàaàAàAPBb ÖÄ$Ä"ÆAàAòAÆA ÆÄaÄ$òAà"ÆA Æ"ÖAòÖaàaBàAÆAò%Ö"Æ PB@"@ÄA &kò? bàAòA  bàABbbàþaBÆ" ÄÆÄÖA@" ÄÄa(BàAà$òa²bÆÖÄaàAÆÄ$àAÆÄ"Ä@‚" ÖA@B ÖÖÖA Æ%Ä!¼ÄÆÄÄÄÖ"ÆAàAÆÆ!ÄA bÖ "àa(BàAÆÄaP‚ àAPbÄ!"Bàaàa(bàaÄaòÄÆÄ  B Ä%ÖAàaÄÄaÄ!4aaà àA4aš÷!þªAé«á ö` ž@¯ô¡ô¡ô¡ô¡ô¡ô¡ô¡ô¡ô¡ô¡ô¡ô¡ôA@Ô!ô¡ô¡ô¡ô¡ô¡ô¡ô¡ô¡ô¡ôáPôaòAÐ*ô¡Pòñõ¡ô!Q@O–A ÆA ÆA ÆA ÆA ÆA ÆA ÆA ÆA ÆA ÆÆ"ÆA ÄÖ@áàaÄÆAà"àaàa²àAÆÆ"˜ÄÆAàAÖÄ$Äaà BÖÄaàaàa²àAÆAàAòaÄ!þÄ!ÆÖÆÖÆ"à ÄÁ(NÜÀqâà‰8n ¼qëŠ(Î!¼uðÆËoœ¸âà70Ÿ8xâòƒ·n\ÁuŽƒ'nݸÅå'n¸Žs8nà8xâòi·nœ8‹ã,æ+O¼u׉³¸®«¸u1Š˜SÜÀqðÆ‰ƒ·Þ¸ã„·NÜ:qð :o¸uãÖ \/Ÿ¸ã Z— ÔÀ|㎗¯ ¼q󉸞¸âŠƒ'.Ÿ8xã æOÜ8x5Xp ¸âƉ³(ž¸âà‰ƒ7nCqëà‰ƒ'.߸þ°ðÆÁ/§Ã|âÖX^Axóƒ[ðˆÏ8ðˆ3P>ãÏ8ðŒÏ:ãÀ#<âÀ3<âÀ“<ãÀ3Ž8ðŒãÐ8ùŒ81‰“Ï8A'Î:‰<ãL 8Sj$Ž•Sæ3ΔâL9N>ã8ðŒOAðˆÃ%<q)N>ãL)Ž•Á#<âL)N>ãX)ΔâÀ³Î”Á“Ï8ðä³Î”ëX)Δãä#<½™8ðŒSÐþ”ãˆ8ðˆÏ8ðh$Δãˆ3¥8oŽÏ8âX™OAëL)ΔùŒc¥F½™Ï8ðä3Ž8ðŒS<âX9Ž8V®ó¦8ðˆ“Ï8ùŒ#<âÀ3<â¬3å8ùŒóæ›ãX9Ž8SŠsn¢ Ãð4¥&ùè£Ï>û‘K5¹äÄ>úÈÃïÁûè³>ûô³ÊP.ûè³>ûè³>ûÄCûè³5èƒ#ûè³>ûè³>ûè³>ûè³>ûè«ï>úîÀ?ÿ /@>ùè›Îúˆ² <âŒ8ãÀ#Î8ðˆ3<âŒ8ãÀ#Î8ðˆ3<âŒþ8ðONç®#Î(ýÏ8ùpY—âÀÓ<⌓Fðˆ³Ž8ðä8ùÀ#<â¬Ï:ãX)Î:ðˆ3ΔëˆÏ:ãä#Ž•âÀ“<âÀ3Î:ðŒ3¥8ðŒ8ðˆ3N>oŠc¥8ãä8ðˆ8ðŒ8ðˆ8SŠÏ8âŒFùˆ£Q>oŠÏ8ð¬Ï8ð¬SÐ:âL¹Ž8ðŒ8ãÀ³Ž•âŒÃå:âX)—iOASŽÏ:âÈÇ”ÄqŒã˜Ò8Ä1ŽupiSê <ºÒxˆcJâÇ”ÆqLIçÊI>¦$xˆcðÇ8à±+‰ã\þ\<ÖqäCðÇ8à1xŒCùàÒ:¦´ Qhdâ€GAà±+‰ Fà!ŽqXISÇ”ÆqÀCù°’8¦$xˆ#âÈÇ”Äa¥qLI#ðȇ•Æñ&qX© V<Ö1¥qÀc 8ÆØÀcð—buˆâ8—Æ!Ž)‰#VÇ8Ö!xŒãÇ8¸$ŽqÀcâȇ8à1xˆâ‡•Ä1Ž|Àcù˜Ò8¬$xŒãMâ<4b%qLiS*<Æ‚Àcð<ÆqÀCS‡•Äa%qÀCð‡F¦$Ž|ŒcJã€þ‡8¦Txˆcãȇ8à!xÄJã˜RA¦TqÀCãÇ”bqÀcâ°Ò8à1.­Cù€Ç8àQ+‰cJâ€Ç8à!ÀCã˜Ò8 qLIS‡$Å1.dðX‡8Æ!IqpIðÇ:Æa¥qÀcðÇ8¸´qŒcGAÆ!xŒâǔđqLI#]‡8¦$Žqäâ°RNà‘xˆcù€Ç8¬$ŽqÀ£ ðÇ”bc¥qLiðG>Ä¡xäcJâ<Ä1Žuˆcë<Ä‘)‰ÃJ™’8à¡xŒâ°Ò8ıqX© Vþ<ıqÀC〇8ÆqŒÑH>¦$Ž)‰âX‡8B0Š_0"SÇ:ࡉ}äCòØG–»Ü'ÈcÈ®<ô!}ÈCÅÀðŽ; øÐ‡<ô!}íì€ÎÔ!}äCú‡>ä¡yèCú‡>ä¡yèCúÈG>˜¦/ähÀ>þÑè ú‡>ò¡|èCÓȇ8à‘qÀ#â€G>Ä|ˆù<ò!xäCðȇ8à!Ž)‰ÃJâ€Ç8Ä1Ž‚Liÿ˜’8Ö1q¬ÃJ1„GWÄ1%q¬Cù<Äq¼I#ðXÇ”þÖ!Ž)‰cðX‡8¦$ŽuˆÃJâXÇ›42+‰â€Ç8¦TxˆâX<ÆqLIVÇ:¸$Ž)‰cJâ°Ò8¬$xäcâÈÇ8à±q¬câЈ8¦$xŒâ€Ç:Î5xŒCS<Äq¬Ç8¸¤‘)ã˜R>Äa¥‚äcë€Ç:Æ!+åcù<Äq¬ã< 2%q¬CðÇ:ÄqXIð< uˆcðè —Ö¡xˆùÇ”ÄuXiâè <ÖQx¬£ ðÇ:à1xäcS<Ø,xŒCë€Ç2Fþ‘qÀCV<Æ!+CVÊÉ”Ä1%qÀCðÇ”Ø<xˆÃJë<ÆqLið(<Ä‘–#â<Æ!Ž)ÃJâ€Ç8¬4xˆ〇8àQ|ˆ#áÒ8à!Ž|¬âä8¦4xŒÃJâ€Ç:Æ!Ž)åcðÈI>à!xhDðÈÇ8¦´Ž)‰cJâ€GA¬$ŽuŒCëЈ8à1qLIçÊÇ8Ä‘qÀcSGA¬”“)‰#â€GNò!Ž)â€Ç8àQs‰cJã€Ç8Äqˆã\☒8Ö!Iˆâ°’8¦T+‰âÈGAò1þŽuX)'ùÐ<Æ1¥uŒ£ VÇ”Æ!Ž)åcðȇ8¦TxˆC’ðÇ”ÆqŒâ€G>Ä1%qL)ã˜R>Ä1Ž‚LiS"ð0S"ù ð0ðPð ðãlù0o’ð0â0%ââëù ]!\"ë0%ã \"ë0%â°ãPð0ðPS"V"ù°ð0ðPð ð ëââ0ð0ð S"S’ã`%ãã0%ã V"ðPùPS2ð0o"\2S2V"ðâù ðã0%ù þë0S2âÀ%]¢° Œ0ã0%¡ ò 3ò€0û ûÀ\ò€ú"úòðø `ú & Ô øðÀÐÇ@  ê ñÀ` @ ùÐè€ 6 ø /ù ù òúýÐ@4 ù@`ù ù€\ù  È~SRðSÒ ðV2ù1%âCë ð ëëëë`%ëë0S"ðÐâ°ðPð°ð S"ð°SRð°ã þl–ð ðPð ëââp.ãe1ð ã0%â0S"ð S2â1V²âë ð S"ð ùÀ%1%1%â0ð0ù0ùâ0%âââÀ%â0ð0ââ1ù0ð°ð ã`%ëPë0ù0%l&ãâ`%ëâÀ%a%ââ`%ëâââ0%ã`%ã0%â0S2ù V2S"ð ð0âë0%ââ0%â`%âëâ0ëP\"ùâðÐÓ ë S2Sþ"ãS"ãðP\2S2\"ð0S"ù S2ð ð ð°ð ðPV"S"ð ù ‘ãâ0VRã1%ñ&ãë0%ããëPS"ð l–ã‘ââ0%ë ðÀfùÀ%ã0%‘S²1ð0S"o"V2ùë ù1%ââàsë S"ãã ù0%ãp.ããð&ã0%1%a%â ð S’V2ùâ0ð \"ð°ã ð SRùâ0%ã Iþâ0%ãë0%ëPð \2ùPù ð0ùÀ%1ð S2ë ã Iâãã`%1%1%ã°â ë0ù0%ââã0%â0âãñ&ã°9‘â0ë ãâÀrùâ0%ã0%ë`%ãð&1%ë0ð S2V¢S2ù0%ã’4âã ðP\"ëãã0%1%â0%±âãëâãS2o2S"ã9â0S2S’ð 1%ã°â0ð°ð0þù ãð0âââš° Œ0ãÀ%š ù€Ò%ñ],°0 Aø€\ù Ø É /ù Æ ø  ùØ ò@ €\ú  Ô ò@ Pû y0ù .Àøp3Àú€\ù Q«ù òÑø ú€\ù€\ú€\ú‚\ú  Ó ð ù0ù ð ù0ù ð ù0ù ð ù0ð0ð ðÀf\2ð0£ââ°\2ð ð ð ð°ð°ð°ð0S24%ââ0%âþ0%âÀ%â°ðÐS"ëÀ%ãð ù ã ’$ð V"ð0ðP\’ãù0ð ù0ðãð&ãð0S’â0ð0S2ð S"V²ãPV"\2ð±â°S2\2ð0ð0â‘ã°ð0S"ëPV’ë`%â°ã ù ç2ðPS"\²â°\2ð ë IâãPð ð0âëãPð V"ùã ð ð S²ð VÒS"V"ð0âë0ð 4 šþââââã ð ’4ù0ð S"V"ð ð°ð ðPV’\"\2ð ð°ð ð°V’âù V’â0%âÀ%ãã0%ããâ!Iã`%ââ01%ã°âëâ0%ùPë ð0S2VÂfë0%ù01%ãâãâ0ð ë0S²è'ù ù ë0%ãââããâ0V2ù0S2ð0ð ð îâã Iââ°SRS2ð S"ùã1þ%ë0S2ù ãã0%ãââ0%ããÀ%âãâ0S2ð0â°ð0â`%ù0V"S’ë1%â0ð0ð0‘â0â0%âÀ%â0%â!S’â°ðÀfð S"ð ðð0\"ð0ââÀ%ëâ0%ù0ðââ°S2ð ðPð0ð ðPð ù ð0âã0%âããâã ëã ð0ð0ð ðPS"ð V2â`%ã V"o2ð ù0ðPðPSþ"ë ù ããâ`%âÀ%âââð&ùPð S"S"S’â°ð ë0âð&뢀 Œâ0S"š]û€\øÐßò€òÐ0Àú]ù ò°Äæ€ÑE Ô ò ñÀ ì øû@  ì ò ø ê@ú` òäò 3ú ú]û0y ø ú€\ú"ú]Q+£0 ãë ããë ããë ããëPS"ù ããë0ù0%ë þÿâë0ð°âÐ ip ââ0%—ÍPã ù ëð S"ð ëëã0%â0%â°V"ð0ð ëÀ%âããð&ã0%ãâÀ%ãë ã°ë ã°1â1ð ã‘âëð&ãë S"V"SRã°\Âfù ââ0ùÀ%ë0%ãçRã°ã0%âë ð°ð ð ð0ð V2S"ãã`%ããâ0%âãââ0%âç"þùëë`%â0ð0ð V²ð°ãëã0%91%ã`%ãS²ââ9  À%âÀ%â`%lâ0ð ë S"S"ã0%â`%ãð&âð&â`%â0ðPV²S"ãl‘âããÀ%â0%â1ù ð \"ð0S"ð ãëù€~1%ã°S²S"ðPã0%ââã0%â0%ãâ0%ããù SRð0ð0ð0ââ0ð°ð°ð ðP\2S"‘þâ°ââ0%ã`%âãâ0ð0ð°â0âã0%ââ0%âÀ%a%âãâ0ù S2ù0ð ‘9âÀ%9â0%â0S"1^¾qðàËgPœ8xâÆÁ['nxãàËgPœÉ…ðă·NœFqÅÁ—OÜÅ|þ ^4x±ªAqðÆ7nIqÅwQ\>qðÆ—Ï ¸qâà‰ 1ê£âà‰ƒ—O“>yòðá ò$H'Aâí‹·O>}úä5ÇÇn@²æ½GM€<|ò؈G-@oyêÄ£&@5ñðÉ£&@žº*Hà _<ò½õõà Ÿ|zˇ<|äѧ·|ze™uà¡PxÆ¡qà'CqàY'C Ågxć¬|Ægqàå Çžqòiæ"Ò¸d-)bŒ4„‘ž|ÆYqD„g סp…ò‡šàž…և…(Ìg ÅþgxÆY(qÆžq‚Gœu(žqò¹ž|ÆÉpxò‡Â|à‡Iq2‡Bqà¹hxÄž…òaR /¢0ŸqàGxÄÉGœqà'Ÿq2gxÄgxÈZç"xÄg ÅÉPœ|.¢P Ç¡PœuÄÉGxÄ¡p! Åg!xÄɇ,xÄYqò'Cq(žq(‡ÂFÅQœuÄGxÄÉPœu¨ `|Ä¡p!xÖ¡Px‚gqÖGœu(ô1Ã|Ñq2gœ ÇGœ|Ä¡p¡ Å¡P ÊPœqÄGxÆ¡p LJÂq(ÌgþÇYˆÂ|Æ'ŸuàYhxÈ¢pq(GxÆ¡P ÅY‡É‹àYq2ÌgxGxÄgLJÂuÄGxÄ¡0ŸqÄgxÈZ'Cq(qàžq('C²à'Ã|Æg&ážqà! ž|à‡,ÅGxÄGx.‚‡,xÊg óg!xÆQxÆgœ ÅgxÆÉP /g…2\'Cq(GÅG ÅGxò¹HxZç"¢0q('Ÿuà‡Bqò¹ˆBq่ÉqàYžr(Ìç"xÖGœ|ÆGxÄ¡ð¢ ÅGþxÄYqà‡ˆÄA!q\D〇8ò1xäc<ÆqÀCð‡8à!xˆã<Æ!¢qÀc!ðÇà."Ž ‰âÈ8à1Ž â‡8Ö1qÀCë‡8à!ŽqÀc"ÊÇ8($Ž ­ã 8Ö‘¡qPHðG>Æqäã"ð<Æ!Ž -„Bâ Ð8ÄA!qPH…ÆA!qÀcâXÇEà‘xŒƒB!Å2xˆëÇ(âAžxô lGäþÄ#òˆG>z³€'À#òЇ @ v@–d†âÁ‡ˆ‡:°þj 7ñ`‡òј£7ðÈG<úÓŸ Èþäc˜½Ñ2à!Ž ‰âÈ8à! ãÈÐ8à1Ž ‰#CãXÇ8òu€âðG>à±s¸" ‡¸DÒ Œ4â—(‚0ÆuÀcð`Æ”`â…Ä‘¡qÀƒ<ÖÁ$q`ƒðÇ:2 ‰cù ÐEòqäƒIãG>2Ž|ˆcë…2Žuˆcð<Ä1x,„BdÇ8D$Ž|ˆcù…qˆ〇8ò1x¬Cð<ÆuÀ#ã€Ç:ÄþqPh"K†Æ‘…PHG†Æ‘qÀCG>Æ!¢qdhƒ…Æu0iã€Ç:Ä1qPHã€Ç8ò1xˆcðG>àÁ …À%“Äq QCâ<Ä‘!qÀ‘8òuPHð‡à1ŽuŒ#¢….|ˆã"ùG†Ä!"qPHã`’8.|dˆ,ðÇEòA¡…\dâ<ÄqPè"ë<Ö!Ž CD 8à1xˆ#CãÜ8ÄqŒ#âÈ8($Žq¬ƒ,ðG>à!xÉ<B¡qdhðX‡8(4&þ#CâG†ÆA!qŒë 82$ ‰cë ‹8ÆqŒƒB ÑEÄ‘&cpG>Äqdx,dëÈÐBà1xˆãÈYà1 ‰cùXˆˆÄ‘x¬#C <Æ‘¡…ÀCã`’8(4xŒcâ 8(´qäcðG†ÄqxŒCðX‡8($ŽqPHðG†Ä‘qÀcðXÈ8DÔ¨|ˆƒBâ€Ç:Ä!¢uŒ# ‡8˜´ ‰ã€Ç8(4 ‰#ðX<Ö!Žq¬Cð<ÄqPHG†Æqäãȇ8ÆA!qˆHã ÐB($Ž ‰þƒIã€Ç8ò!ŽqÀCã€G>à1Ž|ÀC<Æ|,dðÇ8Ö± ‰〇8à!xŒ Ç8(4 ‰cðG>Ä1Ž|ˆ#ðÇ82$Ž ‰#ð…ÆA¡qPH…Ä‘xŒ#â¸<Äq„@Ë`Ä౎…ÀCùèOÌÑŽv˜#û¨F;ªaŽj´ò°doRá€=¼Ãw .äH"÷˜âŽDò †òA ȃèM<¨€Þ¸€à‡58yä£?ù€Þ@@G>z“þàƒ<ù &¦!xˆ#þC 82$x,$<È"¢qÀc!ëÇBFñxŒƒI÷¸D1û"Ìþc¸D<Ä1qdˆ‡7¬á…àB〇8ÆuÀCÔ…ÆqŒ#CØ<ÖA¡|ŒCð<.B¡‹ˆcÇ8Ä‘‹Ph〇8($Ž åcðÈÇ8à1xäc‡|¸xxX x ‡|X  ‡…Xx ɇq€‡‹&xXˆ#‡uÈq q€‡…€‡q‡u€‡q q‡uxx ‡qXxq€‡qÈq€‡q þqx xȇq€‡q€‡|XˆuXxȇq€‡qx`‡s°/€S€qXxÈq€‡… † x lq€‡q€‡‹X&x‡uXˆlxXˆ|¸x‡|q€‡‹ q€‡q€qxȇq‡qÈqȇF‡ÁÉqX‡‹ | Éq€qÈqȇq q€q …q qÈq‡|xq€‡qÈxx ‡ q€qq€‡‹œ…X‡q q€q€q€‡…‘… q‡|X ɇq‡qþȇqxX ‡Áx& Yˆ  ‡|Xxxx xq€‡q€q€q qÈq€‡‹ q€q`q q‡uq€q€qX ‡qXxX‡q€‡q€q |q€‡qɇqx xx  Yxxq€q q€qȇqÈx‡ xȇ‹€qÈqq€‡q€² |x‡q€qȇq€‡qxxqqq€‡q€‡q q€‡…€qÈq‘q€‡|x‡|‡þ ‡ ‡ ‡|qX‡q‡u€²€q q€‡|‡ qÈq qxq€q …€‡|hqX‡  ɇ‹ |xq …‘… qȇq€q€‡q€‡|xxx¸ Yˆ ¹q€‡‹xq€‡qȇq …ÈqxX‡q‡u€q`’uQ@FxX ‡Qˆ‡|è |‚j Ðj|`ÐP …‡|‡|hyX…8(a V € à€8 yЇ(€jy €jyÈ| È}@þ$h€p)èxè|€‡xȇc€x0yÒ|€‡Þˆ‡|‡xȇx‡xÈy€y0Q˜q€‡u‡u€q€‡u  ‡|‡|`qx‡| ‡| PÈxXxðq€}¸„1ƒCƒCƒ"¸É…€f€qȘ€qȇm@‚x Xt@‚x€€h€xØ$P€°p‡|XˆuÈ ‡|€q€‡q q€qÈu q¸ˆu‡qX²‡u‡ ‡qÈu‡|‡u€‡q€qXxxþxX&‡ ‡u ‹ ‡q ‡  ¹ x‡ Yˆ ‡|€‡u€q€‡qÈxXxÈ1qxÈ ‡|€‡…€‡qÈq¸ˆ|Èq€q‡u€‡…¸ˆÁYqX f€qx‡!˜€u€‡m@‚x XxØ$°p€€pYt@‚q€q€qˆq dÐq qÈqxXq€qÈq€‡…€q qxx‡q€‡q€‡u‡|  ‡‹ qȇq€‡u€q¸x‡þ x‡|x i‡q€q€‡uxxXˆq€q q€qx‡|Èqqx ‡ x‡ ‡q€q q€q€‡q qxxx&Yx‡‹€‡… q`qÈqÈq€qq …‘… q q€‡q€q¸xXˆ|&xxx‡qȇ x‡Á¹xȇ ‡|X  x‡|Èq€‡u ‡q€qq q€‡q qÈxxx YqxXxXˆ‹Èþq u€q`²q€qÈq€‡u‡qÈ Yˆq q‡| q€qq€‡|€‡qȇ… ‡q€qxx‡qXq q qÈ‹€‡q€‡…Xq€‡qÈx‡#x‡uXx‡|È…¸xȇ…Èq‘uXˆ| q€q€‡‹Xq€‡‹€q q … qÈq€q`’u YˆqX²`’qÈFÉq uÈx‡|€‡…X‡… uxx‡|€‡u …€qXqQøFqðq€M€‡|È È…sÎ… þ؇}‡}°$yˆyˆxÈòˆ‡gÊ}éx‡|ÐyЇgЇ|°¤aÒ‡||Øx x x |°¤þˆ‡þ€‡|€‡x x€yÈK‚‡|ЄeX ‡ ‡ux¸q‘|XYx‡u€‡q€Pø‡ Yx‡|x(HEê1Xq€qÈ…`†X ‰Xqp‡s˜jxX`q@‡àq ‡uqpÐt˜%X ‡uq€‡uÈuXˆ|xx‡… | ɇqÈ| þ ɇq°l xXqÈq q q€‡q€qxX‡…q€q€‡|x qÈˇ|xÈ1x xx°ì… qX‡q‡ÁxxqXYxxÈq°lq q€‡|q |Xxq€‡q‡u€‡… q`†Xx_€u€`q@‡àq †xpÈt˜jx8xX`l8‡‚u€qÈu ixqXx&x ɇqÈ|Xˆ x‡…€‡q€qÈþ‡q qXxx x ‡… q€q€‡q‡|‡|‡… … q€q`²qXx ‹u°lxXxx‡|€‡…ÈËÎq q€q€q€qÈ…È… q€‡q€q8²q€‡qÉq‘qXxxxxX ‡Áx ‡…€‡|Xxq€‡…ÈqÈqX‡q‡q q€q€‡qÈq€Ë‡…X xx‡ öqx xȇq€q€qÈq …€qX ‡uþ€‡uœ|‡q€ˆ‡q …€‡q€‡q€q Ë x‡u°l ɇqx‡u‡… q Ë‡u |‡ q |xȲ€‡| ‡u€q€q€‡…ȇqX&‡uq q€q€q qqX‡qX Éq€‡qÈq€q€‡q€qÈu°lx ‡|x‡|‡ x q‘q€˦qÈ|‡ x ‹| ‡|‡u€‡q€qX‡q€‡qÈuÈq`qX‡q€qÈq€‡u …e`þ€‡qÐKê}Ž x‚ဇu þ |ˆxè|ˆ‡|€|È|K’xèx€y€y€y€‡Þ€Kê xˆ‡|xˆyˆxÈxÀx|xxx°$y y€y€| yˆò Þȇx€‡Þ°$QXx‡q€‡…€qxXˆ| x‡f§u q€‡u€qˆu þ­ƒ'¼u áÝãÐ!  Å!‡³âà‰ƒG,¸t’‰G,'.Ÿ¸qÇ!,‰PÂqðÄÁ+ OÜExãà•D(.î8xOá•D(Þ¸|âàƒ'..‰OIð”„8ˆ‰³Ž8q=Ï8ðŒ×8ù\´ÎE]åSR\ã $ÎEâÀ“<⌓<ã $Î8‰“BëŒWIðˆ3<ùˆ“<%ƒÐ8눃8ðˆOIðˆ×:O‰sQI•4<â<µBãä#Î8ùŒsQIãä#<âÀ#N>‰ƒÐ:âä3<눗8‰—8ù ôÔ:ðˆóT>ðˆóâÀ3N>ãÀ#Î8ðˆƒ8ù”4<â TBã\$Î:â„ É2Œ <ëÀ#Ž&½#Ï>û¬³O<ñȳÏEïÀ#<ÉSÚøÀ“8òÀ#Bhö<ðȃ<ðÈÚÅ#BñÈs‘<É<ðÈ<ð  <ðÈÚîÄsÚðäO<ò\<ñh2M>ãÄ•Ï8)TÒEùˆ“Ï:ðŒOIð($<âÀþÊ?­Bð¬s 9DÃ%ãÀS<ã”ÄÌâ ´Ž/ˆCMx߀âP#À:Ô à½÷ˆCùŒ³5 /ùŒÏ8m›8Ï82xŒ#âXBò1xäcâ@ˆ8’q dðØV>Ä—qÀCð( <ĘqÀ£$Ç8"xˆ#⸈8.2xŒ#ãˆË8ÄqÄ¥$ð‡8"ŽuŒ]Ç8àQ’¸ˆ#âˆË8ò1xˆ!%GIÖ1qÀcðGcÄu ¤$Ì€8à¡XÔÀü j@ÔÀüj`þðX50?ˆcGI² P\ä)â€G>à1ޏˆâ€G>Ä|”!ãÈ<ÆQxŒ!ã<ÖQ™§ DðbÄqTFðbÆ’ÀCð( <ÄqÄEÇ:à!ޏˆë€Ç8.2Ž’ DBÆ!xˆ#ã€Ç8àQxŒâ‡8â²-qäCðÇEÄq\¤$ðX<ÆQq\DG\Æ!xˆ#%‡8à!Žq”OBÆ!Ž|”d<Æq dBÄoäcâ¸HIà±xŒCùxŠ8."x”dþðÇEò!ŽqäcðG\Ƙqˆ!âÈ<žrq\$ã€G>ıx”!â€GIâ"„Œã"ëxŠ8."xŒCðBÄq fð<žR’|Œ!âÈÇSà!Ž|ŒC‡8Ö!ޏäcù‡8ž—§ÄEë<Ä|ŒCã( BÄqˆã"%AHIò!ŽÆäcð<ıxˆcâÈÇ8.2ŽuÀ£$BJR™’ dð( BJr‘qÀcé <ò!„Œ£$ë€Ç8ıޒÀ#〇8àñx¬CQÈEJqÄe!2xˆâþ€Ç(ðq\dîX<ÄyÀ#ø¸ˆ<Ü6xÈ!øˆKØâxÈãð‡;"xàCð‡8ðyÀ#ð@›8ò´‰ðÇ;ä|ÀCâÀBð|\$ðÀÚÞwÀCðÈ<ä!MLCÇ8Ö!ŽqÀcqé <Ö!ŽqäCqG\@‘qŒë(É8Êq 8„c Chpq Dù@30x¶—’ÀcÇ8à!Žu”ä×G>àQ’‹Œ!㸈8à!„0 QÈ&0Žn %‡8àA À£ˆFIà‘u`Cã€Ç:º1€häCã@HIÆ‘„(d¢à1„”$â@ȶà‘„ˆcˆG\Æ!Ž‹”ä"ã€GIà1xŒCã@ˆ8žqÀCðÇ8à!xŒë@ˆ8à1xäã"âÈ<¶õëq d[ð<¶5xˆcÇ:ÄqŒã"〇8à1qäãð÷8ò!Ž®ÀCëÇEÆqäcðÇ8Ä‘xŒCð<Ä‘qŒ!âxÊ:ˆÃ8¬<ŒÃEŒb<ÅEŒ<ˆ<ˆ<¬ƒ8äB”D\þ”Ä8 „8\Ä8Àö Ä:äB¬ƒ8ÀÃ8ÀÃSäÃ8 „8Àƒ8Œ<ˆ<ˆ<ˆ<Œ<¬ƒ8¬ƒ8ÀC>”<ˆ<ˆÃ8\„8 Ä8¬ƒ8ÀC> Ä8 „8ŒC> Ä8\DI Ä8ÀÃSÀƒ8Œ<¬ƒ8ŒC>ˆ<¬B¬<¬CIÀCIÀƒ8ÄEIÀƒ8\„8 Ä8ˆbŒƒ¿‰Œ<ˆC>ˆÃ8¬\D<\D>ÄE>ˆC<ÀC> „þ<äƒ8ÄBÄC> Ä;Àƒ8ÈBäƒ8ÈC\ˆC>\„8ÀC>ÄÝEäƒ8ÄE>ˆÃEäƒ8ä<äÃEä6ƒ(,Ã8Àƒ8 D>Œ<Œ<Œƒ8äƒ8 Ä8Àƒ8¬<Œ<Œƒ8 „8¬ƒ8À(üö\Ä:¸ 8 \‚0 8 ¸BŒ<”3€8Œƒ5xàÂ8€ƒ °€6ˆƒ5p‚8PƒŒƒ8¸ ”„5pÂ8tD<¬ƒ8¸ hÃ:X'Àƒ8ÀC>ˆ<Œ<ˆ<ŒCIÀƒ8\DI\„8Àƒ8 D>¬C\Œ<ˆÃ8 DI\Ä: DIÄÅ8ˆ<Œƒ8ÀþÃS”<ŒBŒB”bˆ<ˆ<Œ<<B”Bˆ<¬ÃEäƒ8 „8 „8ÀÃ8\„8¬ÃS „8¬ƒ8¬<ŒC\Œ<ŒC\<<äÃ8ÀÃ: Ä:Àƒ8Œ<ˆ<Œƒ8¬C\Œƒ8äÃSäÃSˆC\ˆC>0CˆÃ8Xƒ.€ƒ8¸ ˆC>X'ˆ5€B¸ ”„5pÂ8tCDÃ8¬ƒ8¸ dƒ8X' „8¬<Œ<¬ƒ8,Ã(ˆB<…8 †8 „8Àƒ8äÃ8äƒ8¬ÃEˆ<äƒ8tBˆC\äƒ8Œ<äCIÀƒ8\Ä8äÃ8äƒ8 Ä8 D>Œ<Œ<þˆ<”D\ˆC>ŒBˆ<Œ<Œƒ8\DWŒ<ˆ<ˆB”<Œƒ8ŒŒCIÀƒ7äÃS Ä8ø[WÀC>ŒBŒBŒƒ8ÀÃ8ˆBŒC\Œ<ˆC\ˆ<ˆ<äÃ8 D>ˆBˆÃE”BˆBŒÃEˆ<Œ<Œƒ8ÀÃSÄÅ8ÀÃ8ˆ<”D\ˆbäƒ8Àƒ8ÀÃ8ˆC\ˆ<äÃ8ÀÃ8”D\<…8ÀÃ8ÀÃ8ÀÃ8Àƒ8Œ<ˆC>ˆC\ˆ<¬Ó:ˆBäCWˆÃEŒ<Œ<”Bäƒ8 D>Œ<”Bˆ<<<ŒC>ˆþ<Œ<ˆC\ˆBtÅEŒƒ8\D>ˆBŒ<”bŒƒ8tBˆC>ŒC>ˆÃ:ˆ<ŒÃEäƒ8\Ä: „8ÀÃ8ÀÃ: Ä8\DI Ä8ÀCIÀƒ8 Ä8äÃ8 Ä8ÀÃ8ˆ<Œ<ˆÃ:ŒÃ¶ Æ8 „8äÃ8Àƒ8\„8¬<¬<ˆ<ˆ<ŒbˆBŒ<ˆbŒƒ8 Ä8ˆBŒ<<…8 Ä8ˆBŒ<ˆÃEŒCIÀÃ:Àƒ8Ä8¬Ã8ˆ¼ÕRmLí; „;Pm<Àƒ;Lm>Lí:œ-ÕâÃÔæ<äC>Àƒ&€Â2Àƒ8”<ˆ<¬Å:ˆ<ŒˆÃ8Àƒ8ŒÕŠ<”<ŒC>ÀÃ8ÀÃ8ÀCIÀÃ:”Ä8äƒ8 „8<<¬3Ôn8@ à‚8ÀC<  8€À5€8Ä: Áò:€¬ÀCIŒƒ8 Ä8 Ä8ÀÃ:ˆÃ8 Ä8ˆB<BˆC>ˆBˆˆÃ8Àƒ8Œ<ˆÃ8ˆC>ÀÃ8äÃÔŠ<Œ<”BˆÃ8Àƒ8Àƒ8ÀÃ8Àƒ8Àƒ7 Ä8L­8œí¶Œ<ˆB¬<ˆÃÔŠ<ŒBˆÃ8ä<ˆÃÔŽÕŠ<Œ<ŒÃÔ–BˆÃ8 Ä8¬ƒ8ŒC>P­8ÀÃ:ä<”<ˆÃ8äƒ8 Ä8ÀÃ:ÀÃ8Àƒ8.BˆÃSÀÃ:äBlË×>Å:Àƒ8ŒÃ:ˆÃÔ–<ˆC>ˆÃ8ˆBl <ˆÃ8ˆÃ8Àƒ8 þ„8äÃ8ÀÃ8äBŒ<ŒBŒC>ˆBˆÃ8ÀÃ8Àƒ8 „8äƒ8Œ<Œƒ8Œ<¬Bˆ<Œ<Œ<ŒBˆ<ˆ<ˆC>Œ<ŒBŒ<ˆBŒ<ˆÃÙ–Ä:ˆÃ8 Ä8ä<”BŒC>Pí8ÀÃ8ÀCIŒBˆB”B¬<”<ŒBˆBˆÃ8Lí¶L­8ÀÃ8äB”B”<ˆC>ÀöÀƒ8Àƒ8õ8LmIŒÃÔ–<¬ƒ8 „8äƒ8ÀCILí¶ŒC> „8 Ä8ÀÃ8 „8Àƒ8¬ƒ8„(,# <ˆB¬ƒ&Àƒ; Ä;ˆB¸ÕŠƒ<®8 „;þ Ä;¬PSí;î;œ­;Lm>ˆàºPçÃ׊B¼BˆÕº<ä<ˆB¼Ã:ˆ<¬ƒ8ÀC>Àƒ&LC><BˆB¬ÃÙŠBˆB”B”<€Â?ÀÃ:ÀÃ8 D>¬C3ÐÀ!Àƒ8¬ƒ8¼Ã%Ѐ0¼<”<¬ƒ8ÀÃ:”<„8œ­BÀCIœí:Àƒ8ÄB¬8Lm<ˆÃ:ˆÃ8äƒ8Àƒ8Àƒ8Àƒ8¬<Œ<ŒC>ŒÃÔŽ<ˆÃ8ÀÃ8ÀC>Œ<ˆC>ŒÕŽƒ8ÀÃ8Lm>ˆÃ׿Ã8L­8 „8ÀÃ:ÀÃ8Àö|­8Àƒ8äÃ8L­8Àƒ8ÀÃ8”þ<Œ<Œ<”BˆC><…8ÀÃ8ˆÃÔæƒ8 „8¬<ŒBŒ<”Bˆ<ˆÃ: D>ŒB¬<ˆBl <ˆÃ׊Ã:ŒCIäÃ8œ­8¬<ŒBˆC>ŒÃ¶ÀÃ:ˆ<ˆBˆ<ÄÃÔ*„8 „8ÄÃÔŠÃ:ˆ<¬C>¬<<ܶÀƒ8Œ<”Ä: „BLƒ&ÀCI¬ÃÔæÃ8ÀÃ8”<ˆ<¬ÃÔ–BŒƒ8 „8ÀÃ:ÀÃ8 Ä8ˆC>ˆBäÃ8P­8ŒBä<Œ<ŒÃԊË<ŒBŒ<äƒ8Àƒ8P­8Àƒ8 Ä:LíSˆBŒƒ8¬ÃÔŽÃÔŽC>Œ<Œþ<ŒÃ:Àƒ8ÀÃ8äÃ8Lí8ˆÃÔŽƒ8Àƒ8ä<”<”D>Œ<ˆBäƒ8ÀC>ÀÃSˆ<<…8Àƒ8äÃ8 „8 D>ŒÕŠBˆC><…8ÀÃ8ˆBŒ<”ÕæÃ8 Ķ DI „8Àƒ8Àƒ8ÀÃ8 Ä8ˆC><<ˆ<Œƒ8 Ä8nIÀƒ8 D>tEIÀCI¬ÃÔŠ<ˆÃ:ÀÃ8ˆC>ŒÃ:Àƒ8 „8Œƒ8Lí8ˆBˆ<”Ä:ŒÕ–BŒC>ˆ<Œ<ˆÃ:Àƒ8œí8Àƒ8 Ä8|m>Àƒ8 DIÀÃ8ˆ<ˆÃSl B”Ä:ÀÃ8 @ä'Nqò1HƒÆGÀà!q‚þàžuàù0‚àž|J͇ XÅŒ xÆ1ˆ xžq VƒÆgxÆGœ|à!(xÆgqò¡ qÖ10q‚à'ƒÄLxÆLƒÆLšà¡É q 'xÆgq£ qàgÀÆgqò‡ ƒLœqàqà°q`q`‚ "È qò‡ |žqĹVœqÖ!(Ÿk×gX×GxÖ0qÆ'xh‚Gœk 'qÆUxÄYžqò¹VxÆGœqòŒ À>4h®Å1HÀÄlxþq¸^0qàÉÈ uÄ1HÀÄGšàçÚuć ÀÄGxÄìCXÅq qÇ qà'qà!È ‚àžq Ç ‚ÆYGxÄ1hxÄÉgœ|à'qƇ ÀÆGœq °ŒÆÉžq qÆgœ|Ä1hxġɠu`‡&XÇÉGxÆlœ|ÄGxıq„`¿`DÆqÜFâ0ˆ8à!ƒ¬C`ÞqD`Ä«uˆc€‡AÄqDð×à!Àˆ#â0ˆ8à!Žk‰#ë<Ä+qÀC°þ<Ö!ƒˆV 8 "x¬š…&–‘qÀƒ ð¬hBxŒCðX‡AÖ1Š|äƒ&â‡tb‚ÀcY‡AÆ!ƒHG: tà!ƒˆâ0È:Äqp ðÇ: ²xŒÃ ëÈLJÄqÀj€<òAÀ¬ù‡AòAx¬cG>šˆâ AàAxdVã‡AqÀcðÈÇ8 2xˆcð‡8ÖaqFð<Ö1qÀcð ˆAÆuÀCë‡AÄaqÀjâÈÇ8à‘qÄ â0È8 ’xˆãXMþÖ|ŒCð <²xˆëÌ: ²x¬ 8 "À¬C€!<Ö!Žudð <ÄÛÀcð‡AÆ!xˆùX( 2Ž|ˆ#Ç83qäcð<Æq-q¬â€!<Ä‘šdâ€Ç8Ä‘uˆc€<Æaqˆ0áš8 "Žqäƒ&â<ÆA|Œƒ ð ‰AhB|ÐDù×ÖšˆãZâø<bqÀc°<bqäcâ0ˆ8 "xÐDð‡AÆqäc€!<qÀc0`ÄqÀj!ˆAÆþ+špm<Äqd<ÄaqÀC`ÖAxŒ0ù<Äaqdð ˆAòñ!qäCÇ8à!ƒˆcð<ÄqÀC‡8ÖAqÀcð ˆAıqŒVâG>Ä‘qÀCð<Æ!ÀˆãZâ<ÄqÀŠ ð‡8à1qd<Æ+qÀc€G>Æ«qÄqˆã€Ç8à‘qÀCð‡8ÖqãXÇ8à1®q@Ë`àAuŒc`q„ ð<ÄaqD`ÄqFð‡AÄqDð< $xˆ0 8 "xˆâ€GFà!ƒˆÃ  8`%xˆÃ â0ˆ8à!xâ€AàAqˆcâÐ(–a‚dðG> 2Ž|ÀCðÇm@ñuÀCðÈ<bqÀjYÇ8à!ƒÈ â0ˆà±qFð`Äaþq¬0â€A Bxˆcë H>à!Žk‰â<ƱqÀcÇ8ÖAšäCðG>ÆauFùÌ8à!ާ†&ù0ˆ8®%Žq¬C〇8 ²Žqäà ã0ˆ8`%xŒ#`ÄqDðX‡8#xˆâ€Aà±qŒcâ0È8 B“|ŒVâ€AÆ‘qÀcð ×qÀcâ€Ç:à‘‘uÀcðX`ıqÀƒ ëŒ8à±xÜ0 8à‘ƒŒCù€‡8à1ŽuLC〇8ÆuÀŠ&ð<Ö!ƒŒ#â¬qþŒ 8huˆ4ɇAÄuˆë<Ä‚Àƒ ð<ÄÁ ÄaàA`EàAÆAò" bÄVÄÆòÁ Ö0ÖAÆÆ0ÆÄ! BÆÄÖ!Ä0Äaò Æh"Ä0ÆÁ Ä ÄÁ Ä! Bà ÆÁ ÄaÄkÆ!ÆÄaàaÄa bCàAÆAàAÆ0ÆÄÆÆ!bÄÆÄa®Eàa`E ‚ ÆVÄaàaÄ!bÄ&##àa`EÆþaÄÄÆÆÁ ÄÁ ÆÁ ÖÁ ÄÆ!ÆÁ Ä! Bò0ÄÁ ÆòAÆÄÄaàaÄÁ 2"àaàAƒ& B BcàaCòÆA®EàAÆ0ÄÄaàaÄaàaàAÆÆAÆÄa`e ‚ àaÄaà BÆkÆAàa B¸† bàA BcàaÄ0bàaòÁ ĆâZÄ!àAòAÆÁ ÄaòÁ ÆÆÁ "Æ!ÄÁ Æaàaò „&þàAàAòÁ Æ! Bò àAàAÆAàAB–0Ä4AàaÄ0ÖA B®EàaÄÄÁ  Ä¤ÄÖÁ 2ÄaëàAà `E¸F®E ‚ àAàa ÄÖAàA`Eì2ÖÁ nCàA74tc0S7F¡3;þA bÄáZÄÖ àaÄ!ĆÖAžJ BàaÄaààA ‚ `%ÆÁ Öa âC Bà!Æ!ÆÄ!ÆA b BàaàaþÄaÄÆaàaÄ>0ÄÆA bÄÄ!>Ä ÆAàAà!ÆòAàA BÖ&òA BhB BÖaÄ0ÆÄÁ ÄÁ ÄÁ ÄÁ ÄaëòaCàaòAÆ `H BòacàA bàaÄÁ ÄÄÖ0nCàA:ÄkÄÖA BàaÄÖVÄ0ÄÄÖÁ ÆÖA²aÄ0ÆÆÄ!Ä0ÆÄÄaàAàAÆáZòaàAà!ÄÖÄ!ÄaÆA þb BòAžJ®%ÄÆAàA®eãC`… ‚ Ö&à #hB âCàACÖÆ0Äa ‚ òAÆÆÆáZÆÁ ÄÖaÄÄÁ ò&à!àaàaÄÁ ÄaÄÄòaà àa#àaà!ÄÁ  ÄÄ0òaà à!ÄÄaÄÁ ÆkòaÄa bàaàa "àA B`%#àa B " Bà Bà àAàa BÖAàaàáCàa®eþ bÄÆ0òa B`eÆA##òa BcàÁ@àaàa`%à&ÄÄ0Ä0ÄV2"àA Bà&àAàA®… cà!ÆAàaÄÄÁ 0h0ÆA¸Fà BàA`EÖaÄ0ÆÆÆÁ ÄÁ ÆÁ hÆÄÆÄaàaÄÄÆÁ ÖAÆÁ Æ!ÆÄa®%ÄV>DÖÆÖÁ ÄÄòÆÖ!D BàaFÁ ÄÄaàAþà à ÖÄÁ Ä0‚kÄÁ ÄaàA ‚ `(ÙÄÄáZ2bàAnÄaàa ‚ ®EC B`… Ö0ÄA:àaà&àAàá6àa`… àAàaJeàAà ÖöÖÄÖbàaÄÁ ÖAàaàaàAÆÖ†ÖÆÄacàa®Eà nà ÖáZÄaÖACÆÄ! hBÖACàaÄaCàaòÖÆ! BòA`…& BàaÄ!àAàþ&òAàAòÆÆaÄ&ƒ àaòAÆÆÁ Ä! B B BàAC B B b BàAÆÆAh"Æ0b®eà&cÆÖAà!#Æh" Ä0b BÖÖ ÖÁ ÄÆVÄÖÁ ÄA:Æaë>$Äaà4Á ÄÄÖÄaàA`e BàAàaàAÆÄÁ Æaà ÖÖÁ ÄÆÆÆÆÆÆÄaCÆA>Æ!àA bþàAàAÆÆò àa`E bòAƒ Æa ‚ òÄÁ Ä! BàAàaàAÆA`hCƒ àAàaàAh0ÄáZÆ!Ä&àAàA B¸F bÄ0>Ä&àa`EàAàáCÖÄ0ÆÁ Æ! B ‚ Æ‚&ÖAàAàa2ÖáC Bàaàa®… ÆÁ >ÄVÆÁ ÄVÆVÄÁ Ä!àAhÄÄÄ! B`…&ÖAÆÁ Äa bòÄÄVÄa bþà ¸FàAàaà&àAòÆÁ ÄkÄÁ ÆAàA¸f BCòAàAàaà ®… ÆÄÁ ÄVÄ0Æ0Æ!ÄÁ Ä!àAhÆA®ecàA bÄÆbò CàAh"ÄaCò0Ä!àAà b bàAÖ àáCàaàaàAh Ä! ‚ àaÆáZh"ÖAB`~@ BÖAÄ0ÄaëÄÖAàAàAcÄÖA Bàá62â©ÄÄþá©2V2Ö0ÄÁ ÖAàA B:ÄÁ ÄÁ ÖÖAÖÄÄÄÁ bÄÄaÄÁ ÆÄÄ!àAòaàa BàþÄÖÆÁ ÖÄÁ ÖA bà à!ÆÆnCø(ÄbÄá6àAàaÄÁ ÖÁ nÆaàaà!ÆÁ ÄÁ Ö0ÆA b bÖÁ Öòa bÄ!hBƒ ÖaÄÖÄÆÄ!ÆA ">Ä Ä!ÆÆhBàA "ÖþÄVÄaàaàAàaàah ÄÁ ÆÄÁ ÆA b BàaÄÆò àAàa20òaÄÆ!#òAàAàaÄÆÄ0òaòAÆ0ÆÁ Æ0ÖÆÄÄÁ Äa bÄÆaÄnCcà àAàaàaàaÄÆ!â6Äaàa4AàAàAc ‚ àAàAàAàaCòaàA ‚&ÄaCnÄÁ "ÆAàaà òaà! òÄ!àaÄÆÁþ ÆA Bà!Æ ÖÁ 2 Æ0ÄaàAàa BÖVÖaà àáC`… à!à&àaÄÆaž8qðÄÁ;ˆP\>qðò‰ƒ7nÂqð®ƒ'¡¸ƒâŽ;8ḃâ—OÜÁ|âà <(Τ¸|âà‰;Qqð®;˜8ðˆÏ:㈃Ð8ùŒ8ðŒ³Ž8ëÀ³<ˆ² #$<ëhÏ:â$Î:â¬8ëÀ#ÎAâ8 Ï:@™$ŽIâÀ#ŽIë˜$Î:ðˆÏ:⬳<µðŒ8NŠÏ:â¬þ8ðˆ³Ž“âŒÒ8ð¬3P>ëÀ#Γâ8¹<â|9N>Á3<ĉ3ΗëÀ#Î:âÀƒä:ð¬#Η›æCÜ8ëˆ8ðˆó%<ãÀ3<âÀ#Î:ã¤8ã¬C’㈓<ãÔ*<ãð þ´Ž“ë8¹Ž8Ë€Ï:_ŽÏ@µŽ8ðˆ“Ï8ðŒÏ:â8)<âäÏ@_ŽÏ:_®#Ž“âŒó¤89éÓ8Nä¤8ãÀ#<â<9N>OŽóå8ðˆÏ8OŽã¤8OŽ8ã8)Γãä#N>ãˆ3ΗãÀ#N>Á3<â|9<ãÀ#Î8ðŒÏ8ë8)N>ãÀCœ“ã89Гã89Ð8ðˆ3<Ä9)<ãÀ#<ëÀ#ND_Š3Ž“âÀ#<ëÔ*N>OŠO>âÀ3<ãÀ³Ž8­8ðŒã¤8ã89<ëÀ3“â8)xŒCð<Ö!Žq8i Ç8j5þ'â€Ç@òá$q8IðÇ:à!Žq8IN‡“Ä8IÇ8œ$Ž|ÀcùG>"’Œcâp’8Æá$qŒCùp’8ž$x âÈ<Æá¤8i ðÇ—ÆqÀc N<Æ‘q|Iã¨Õ@œ$Žˆ¬CãpÒ8œ4xˆ#OG>à1xˆÃI<Öñ¤qÀcùø’8Æñ¤Œ£Vð<Æ!xŒÃIãXG­qäc 〇8à!'‰Ç8à1xŒâ€Ç:à!Ž'ùâpÒ:Äñ¤ŒCNG>Äuˆâ(–Áˆþ¬H‡&Öq8ið<$ÁINZ‡8Öñ$qÀcâ€G©Ö!x IN‡“J%ŽuˆIð‡“Ö!xˆâp’8à$qÀC뀒à1Z!ÉI뇓ÄqÀcùÒ:ù¤q8iðX‡“""Ž'ÃIãpÒ8à!xˆcNZÇ(þu8É'ð’à!$‰â€GDÖ1'‰£N‡“Äá$qÀc‡8ž4$}iOÊÇ8à!Ž'ãH>ÆÁHqÆá¤q8I_<Öq¬ã€Ç8œ4q¬câxÒ8ò‘Z‰#ã<Ä‘q8ið‡8Î)xˆcOÇ:à!'m ëpÒ:à1Ž'EÄIëpÒ:ıq8i¢<Æq äKã<Äñ¥q $ãxÒ8à!x¬ãKã€qà1xŒcN<ò1xŒù€Ç8à!Ž|ÀCðÇ“Ä|ˆãKÇ:à1xˆãI㈓ÀCN<| ÄþI〇8ÖqˆÇ8â¤uÔJO<’qÀCOÇ:à!xŒc _G>Æñ$qÀcâ€Ç8œ”qÀ#ãx’8œ4'ÃIâp’8ž$xŒãpÒ8à!ŽqÀCðXÇ8Ä1xˆcðǦœ”qÆ!Ž'ƒ¨N<ò¤|ŒcNʇ8à1xŒC_H­Ö1q8INÇ“ÄqÀcâpÒ8à!Ž'ù<ÄqÀ#"âX‡8Æ1u8)〇8œ”q8)ysÒ8j%x¬câ€Ç8œ$ŽZ‰ã€Ç@à!'‰ÃIþqÒ8â¤8)"N‡“Ä‘qÀc ðH­ÆqÀCëÇ@j•qÀcðG>Æ!xDD_Ç“ò!'Cð<Äá$qÀcù<Æ!F®ÃIù<ƈ`t ùÇ“Æá¤qˆ#âxÒ:⤈|IðÇ:œ$'!)¢@# '‰šÇ:à±xˆƒ¨âX<‚$xˆcðX‡“ÄuÀCðÇ“Ä$9‰5 x dðÇ:¾$'­Hr5 ŽR=IHÇ:à!ŽuÀCð@Ò—Äá$$9IHr’8ÆuŒ#þÉÇ:à1xˆ#ð<Àƒ€5qÀI ø<Ä1Ž'‰ãIâX‡“Äñ%qäCðÇ—ô$qÀC©Õ:œ´xˆcyÒ:œ´xDdâX‡“ÆqÀCNZ‡8Æñ$q|INÇ:Äñ$á$ëð0ð0ð0ë N2N2ãâëÀið°ð°ùâ0ë N"N"ãP+âÀHâP+Ä1ððàN2ù N"ã°âñ$âNBùãâ0ù ãN"N"ð ã ùâë N2þð°âà$‘N2_²â0N²âãP+âãââãà$âà$âð%ë° £à$â0ùð%‘O2ð _²â0ð0_ð05ù ð ð0ë ð ã°1ð°â1ð0N2N"ð0ùãâ0âO"N"N2N"ù O2O2N²Œ4ùà$âãããð$ãâð$ë O"O"ð0ùà$ãð$â°âãà$ãð0ù0ð0ð0ð ãð$ãð$â1N"þãâð%ââá$ãââð$ã_"ã°ðàùà$±âà$ãâãâ0ð0ð0µ2ã°âããð%âð ð0O"ð N²âãà$ëà$âð%â0ùà$ããð$1Hâ$âð°ðOë N">á$âã ù0ð ãà$ë0ùããð$ãâà$ATãð$‘N"O2ð ù0O2ð0ùÀHãà$â0N"N2ùð%âë@ð ð N"ùãþââ>ââââð%ââããâ0ðàð0ù0ù ð0ð0ð O²âÄá$âã1_2ù N"_²ãð$â⣰ Œ0ã ð°ð  ð°â°ð0 ¥2N"N2N‚$â°âë0ð ð€$âë€  ë Ôâ€zÀHë ð€$ð°âë@ë á ââHë N"ð€$ð°â¥ò$ë ë€ à$â㛲±ã@ð°ã@TþâzÔ ð0ð°£ðñ$ã ð°ð Nâëââ0ð0âë ðââ0ð0Ôë@ ð%A ââãâã N"O2ðã ã@ 0ð0N2ù0ð ð0N‚$â°O"O"O2ð0N’âð$ãâã ëã ãâð ë€Qá$ãà$ãâà$âà$âð$ù0âà$âà$ââà$ã ðãâà$á$ù µ²ã0ð ëâ°þã N"ð O_2ëð$âãà$ãà$ë0âà$âãâù ð ð°ù O2ð ù0N²ð ð N"N"N"ð0ëÈ âù0ð0âð$!ð N2âãà$ñ$ã ð ù0N"N2âã ëâà$âà$âù0N’ãP+ù0âãà$âãà$ë0ñ%âëã Œ$ð0ð0Nëã N"ð0ñ$ã ëã‘ãã0ð ð0O2ââþâà$â°ð0ùâð$â!ð0âÄâà$ù ð0âà$ãð%ù0N’ãââÀHâð%ñ%ãâ°O2ðãââ°ð0ù O2âãâ‘â0ð0O"ëëâð$ã0O2ð0âð$á$âà$âââ!ë ðN’ãâP+ë0âããâãâà$âà$â‘ð0âã N"ð0ð ë0âá$âð$âããþââà$ãâá$ãã0ð0Nð0âà$ââÄââ°1ðâð%âð%ã!N"ð ù O"Œ4â0_"N2ù0ð0ù N"ã ëã ð0ð ð0%N"O2N2N2âââıN²N¢ð Œâà$ â°ð èÀâëð$âëð$ëëë€Qâà$â@ âÔ ð0ù H"N"N"ëëâ°µ"ùââðþ$âë N2ëà$âÄQ*ð Ô ATãO²ãã ãâ0ð ð0ã@ ð$â ðë0NBùà$âà$ãâN²ã°‘âÀ  € N²O"ãÛÀâ@ âð%Ôâð ðÀ 0%0 âð$ㆠðÔù0ð0ë ëñ$âë ãð%âà$ãð$âããà$ââ0N"N2ùâ0ðâà$ââ0ð0_"ð ð0ù ð0Nþ"ð O2ð°ââà$ñ%ãN²âÀH±ð ð0ð°ã_²N2ùà$ãð%âà$â0ð ãâãð$â1ð0ùãð$âð$ãð%>‘ãë ð ë ð N"N2ð0N2ù0Ó  N²âââ0N"ð ð ð ð0ù µ2ð N"ãð$ãð0N2N"N2ë ð0ð ð0ð0ð0ùà$1ð0ù0ð0ùð$ãP+á$âñ$ââ‘âþâð%ãN2â0ùð$âð$âð$â0ùð%1ð0O"ð0N²1ù N"ãë ùà$â€Qâð ùåââë0ã°âà$âN"ð ãð$ã€QÄã ãâ0ë ãëà$1Nùð%ë N"Nù0ãð$âð$Äâ0N"ãN2ð0ù0ùâ0O2âãà$â_"ùð%âãë N"ãâ°ãëëë N2N"ãëà$ãâð%âà$âþâã%N2O2ù@ãà$ââ0ð0ù ð0O2ùÀHââ0ùãà$â€Qâà$âN2ëãP+â1ðð N2ð0ð á$ããù0ð %O²ð µ2ùâP+âã ãà$âÀiãð$ãâð$ãâð%ââ°â ð Œ0ëð$â âà$ë@ @ 0ð@ ð  ã ëð$ÛÐ F ë@  ð°Ô âÐÐ Ô ð@ ÔPþ°¸â° HÐÕ6ëâà$Ô ð° à@°N‚$ÔÀ°Ѱð-0`à  0—/ µÒ аÑy0ð ë Ýð   ð@  Ô ð0éð   ÿà$ëð$>âëâùÆÁƒ7ž8fÄ­³…·uðÄ·Nœ8x⨠€7N¼q⨠7Žà8fÀ‰³6ƒÁºqð.‡-¼që¨ (Žà:xâ'Þ:‚áG𢸡ã.O¼|ãļ¸Ž 8xëà#(þž8xá#(ÞE‚↊*nÆáqä"ð‡_Æ1”qÄbðȇ8àqxˆƒ â È8à‘qDð<ž(ÁcÊE౎qäOÉ<Ö!Ž|DùÊ:à±qdãþÈAÄÑœuˆãÈ<.â—‹Àcù<Ä1x¬Ã/ 8Æ!xˆë<.’˜0ðAÄ1 PÀCCAÄAqÀCãÈÇ8ür‘|\„ ã€ÇEƱŽqäƒ ãJ>à!Ž|dð¸È:ÄqÀC~YÇEà!xŒëÇPÄA§Dù¸È8à1q eãÈAÄ1qŒã È8àq‘¡ˆÃ/ãȇ8"Ž(ÁCðÇP.BqÀcðAÄqäƒ <.‹ EAÄ|Œ#ðAÄ1Ž¡ŒCðÇ8à1Ž|Œëþ<.qäÃR<Æ‘qÀCCGsÖ!Žq¬ã)Ç:ÄAuˆO<.2qäã"ãŠ8ò!Ž¡ˆcAÄq¬CãÈGsÄ1Ž¡Œ£9G”à1Ž¡ˆâhÎ8¥uˆâ€Ç8ò1”qD~G”Ö!xˆ<ÄqÀCã H”Öqxˆƒ â<Ä‘xˆc(Q"ˆ8à!‚ŒcâŠ8†"Ž¡ˆ#ðG>š3Ž|D〇8Æ‹äcCG>ÄqDùG>à1qXŒ  8òAqXŒDã€Ç8à!xˆcðÈþAÄ‘qÀã"ð<ÆAu eâ‡8òqxŒã ÈEÆqÀ#ð¸È8ü"¿\dâ€Ç8à!xŒCðÇ:Ä‚Q,ƒ ˆ8à±Mˆcð ’!Ž!Là"Ô8à!j`Y‡8º1€dˆ±(€8¨x¬Ô <¨!q¬Ô€8¨qP#à<˜Ax„#ÉX‡8ˆ‘q EÔ€8¶1€=dCù ˆ8B€câ Ʊ$CëˆEàAˆc¹AÆ!xˆƒÇ:Tð„|tcÑÇPÄA ˆ5þ Žö‰£ø‡8à!ŽuÀCë€G”Äq\dðGûÖ‹ÀCÌ€8àá (¤`ÔÀEà ˆƒ50Žu¸à@‡°Ž‹ÀCÌ€8Ö($ ÃÇ6f0xP# 8¨hã?˜€8à!xˆÃ/â È8à!ŽuDi(ãȇ8š#xD)ã ÈEà1xˆã<ıqÀc–G>Æ!‚\ã¸<Ä‘qÀc~AÆAqˆã€Ç8Äa)xˆ#ãðË8ür‘uøeã<Ö1qÀÃbÇ:2xˆcðA¢þq¬ë€Ç:ü"Žqˆƒ â€Ç8†’q¬ 8à!xäã€Ç8Äá—q¬›€8à1‚,<Äá—qäcð<.(dC‡8†’qÀÃb‡Åà1xŒCCYGsÄqÀcAÄáqd–Aò1qdð<¢$xä 8à1Ž‹Dð<ÄAqˆcðAÄ‘qÀCð<Ä1”‹€q€q€q€‡‹Xx‚ȇq qŠqx‡| q ˆq‡(ñ q€‡‹ð q ˆqx¿¸ˆuˆþxxqŠq‡æ‡æxxȇuhqð‹q€qŠ|‚ȇqX‚x‚xˆq€‡|ˆq€‡q q qXxx‚ȇq ˆ‹€‡q‡¡‡|xxqð‹‹ q€‡qÈqX‡¡XqX‡q q€q€q€q ˆ|‚x‚ÈqŠq€q€qÈqX¿‚ȇq€‡u‚‡qÈq€‡qŠ(‡¡ˆ’¡xxxX‡q‡uˆxxx‚¸xÈq ˆu¸x¸ˆu€‡q€q ˆq€‡(þxÈq qŠuq€‡|‡|q qXq€‡‹ q€‹‡q€q q€qȇqx‚xȇqX‡¡x¿Èq ˆqŠ‹€‡q‚‡‹hŽ‹ ˆ|‡æQøFx‡u€qÐx¸;`qXb€h€jx‡u  ˆ‹Xjq fx xj€u  q Xjx Xxj€q †®” ˆu jxX‡Uø€Ø€S€q q ¸ˆu fq€q`†þjx¸ˆ¡xX…p€h€€qˆ€‡<˜xX‡UøHL€jx †€‡uX…hPøxXx¸ˆux‡|€‡qÈ‚X‡qÈqhŸ¡x`€ˆx  j x †€jq‡HxX_€uð f€€x€S‡u€‡|`jxhjm¸f €¡‡¡q ˆ‹ qȇq€‡‹xx‡¡‡|‡u¿‡|x¸x‡¡x qq€‡q ˆux‡¡‡| ˆq€‡u€‡q€‡(ñþ‹‹€‡‹€‡q€‡qȇ¡q‚xXq€‡q€‡‹x‡¡x‚‡| q ˆuÈq€q€q€qÈq€‡u¸x‡|¸¿‡q€‡q€‡q€‡|ð q€‡q‡qX‡§X‡æxx‚‡q qØ< q€‡u‡i…u‡|xxˆq€qhqÈq€‡q ˆq‡|€qˆ’u¸x‡| qÈx‚‡|€qxx‡( q€q ‘‹ˆxx¸x‚x‡(q ˆ‹€‡‹Èq€‡(!q€qȇæþ‡¡¸ˆ| ˆqÈq‚¿‚‡¡‡¡x‡u‡æ¸ˆ¡ˆ‚ˆ’¡‡q¸‚‚‡( q ˆ‹€q ‘r€q‡|€‡q€‡qÈx°xx xxŠ|¸ˆqXq‡¡xxqȇuð‹q€‹!ˆq ˆ§€q€qÈx‡u‡|€qȇq ‘‹xˆ’u‡qŠ‹€q‚X‡¡‡|ŠqŠq ˆ‹xxx‚‡q qhqˆx‡æˆxx‡| q€‡q€q¿ˆxx‡|‚‡q€‡‹€‡þq€qÈxx‡|xx ‚¸x‡|€‡qÈq q qhŽq ˆq ‘q€q q€q€‡uÈ‚Xx‡¡‚xˆxXq q qÀ:qȇq ‘q€‡uxxq€‡(!ˆqhq€‡q€‡q€‡(‡qð‹‹ qÈ‚xx‡¡ˆx‡qx‡…e`„€‡uxM ˆqX8€h€x‚u  ˆu ‡¡X‡n€d¸ˆX(qÀ†‚`jq€q †€jq  j€u膈†§€þq‡öj€‹ t„‡u€‡uj‚Xj€|‡HxȇX(q Šq ˆq‡@pfxt€dÈ@X‡pTq`†Xjq ‡p€SPø¿X‡|xX‡q‡u€‡q€qXx‡¡x¸fq‡s€ jx¸jq l€u X‡‹ † qXq`†È†i¸xX…hhjxXq  jq ˆ(‡|€‡q q€q€‡q¸‚ȇq ˆ‹€‡q‡æþ‚‡u°qhŽ|‡‹€‡qŠ‹ q€‡q€q ˆqÈqÈq€‡q€‡q ‘|¸ˆuˆ’‹€q€‡qxx‡|‚ȇq¸‚¸ˆ|‡q‡uˆq ˆ‹Xx‚Xq€‡q q qX‡¡x x¸ˆ|q€‡(‡q qÈx‡æ‡qx‡uhŽq€q€q€‡u€‚‚X‡ix‡¡¸ˆ|€‡q ˆqxxx‡|xx‚‡|‚ÈxXxxq ˆ‹X‚x¸xÈq€‡qxx‚¸ˆþ¡Èq€qð q€‡‹ ˆ|‚Xx‡|Xx‡¡xx‚x‚X‡q¸ˆu€q€‡q€q€‡q ˆq€‡‹ð q ˆqxx‚‡¡x¿‚¸x‡|xxȇ¡¿Èq€‡qx‡¡‚x‚X‚x‡§€‡q‡|¸K‚ȇq€‡|ˆq q€q€‹‡(x‡|€q€qÀ:xˆq ˆux‡‹€qx‚ȇqÈq ˆ|ɇ(‡qx‡u‡‹Èq€‡q¸ˆæ¸þˆ¡hxÈq ˆqx‡q€qȇq€q€‡(q ˆ§Xq ˆqŠ|¸ˆq€qȇq€‡‹€‡‹‚X‡qx ‚¬‡uqXx‚‚‡q€‡q¸xq€‡q€q€‡qȇq ˆqŠ‹X‹!q€q€q‚‚‚‚‡¡x‡(¹xX‡‹€‡q€‡q€q€‡uð q q€q€q€qq ˆ§ qȇ‹€q ‹q ˆq ˆq€q€q€‡|€‡q€‡uQ@FxX‡¡Ð„u‡X€hX†lX†<þHp †°6jq qXpP‡mЀ‡qX€S€‡q˜X‡nmx jx †€‡‹ Xxpx°N€‡|¸x †€‡n@q€A(‚‚ €qXj€qð€pØ àx‡ˆxxŠqȇn€hˆ‡s˜ q‚pX‡n€d€‡søXjx †€‡n€dPèqxx‚‡| ˆqÈq€‡u ˆ‹‡| f€‹€bpÀ‚`€jx †X‡p€h þb€( fp€q€‡p€S‡u`€j€‹Xj‚jxˆ’|xx¸ˆq q€‡qÈ‚xXq€q qÈxˆxq€q ˆq€q‚‚‡q€‡q€‡qŠ‹€‡q q qŠ‹xx¸x‚‡q€qX‚XqÈ¿‡|€qȇq€‡u‡q€‡qȇ¡‚ˆ’|€‡u‡|€‡qŠu ˆq€‡uŠ( q€‡q€‡(Šu €X'AqðÄÁoAqÇGPExâÆËGPAqÖÁGPþqÇÁÃHp\>‚ Šƒ7ExÇÁGPÁqðÖÁGp¼qâòƒ‡q<Š-Å-¥8.ÅuâZŠ[*né8‚âà#ˆq8ŒâòÁGP\Kqù(æƒ7Þ:qðÄÁ£8Ž ¸qâŠ#8ž¸qùŽƒ—â8xëă'#aD8ã$[âÀ#<ãÀ#<âÀ3N>K³”8ðŒ8ðŒ“<ã4<$Î8ù4N>ðP4Aâ¬#<#ÎRâäCAã´$NK⌓Ï8aÏ8ðˆ“8ðˆ“[âäCAãÀ3<ã\%<âÀ#<ùÀ3ÎRâŒÏ:‰8ãÀ3<â$AâÀ#<âä#<â„Q>ëˆÂ(¿02€8ð¬8šÀ#Ž /ˆ“8à„3€,Ô6À3<ëÀ#N7- à€ àÀþ#Î*TÀAˆO 5ÀCðP#AâP#€8ð ƒÄ8 Å8ë´DMëtóAlpŠ8ð¬³<Ô8ëP#<âtÓÂNÀQ¼+ <â¬#Î:8q0<â0 âü‡p‡âP#€8ÔðpÊ?âÀCA­ƒ‘8ë4<ã$Î:ã$3¬#Î4P$ð€ÀsÎ ˆCë`À:â¨P…8ç¸ @>ãˆ8Ì<âÀÓ ÑÀsÎÀÎÑÀ#5Œ8Ô8ëÀ3Ž8Á“Ï8‹³Î8ðˆÏ8þÃ3<‰“E‹8ÁEAùŒ“Ï8ðˆÃ¹8ùˆ¹8ãˆ8ðˆC8œÃ#AãÀ“8ðŒÏ8­Ï8cÏ8â@.<⬃‘8CÐ:ã„E#<Á3<âä#<$<âä3Aâ¬Ï:Q¹8ùŒƒ 〇8àAȉrâ€G>Äȃ â ˆ8²‚ âÈÇ8à1xPâž8Ö!x¬râX<ÄqÀ#ãX<(Bq¬ƒsã È8‚àÁc@„‡8ò1xˆƒ â¢8B‚ˆã<02Ä|PrYAòþ1q@#<ÄŠpŽ"ù<(oˆrã E"‚äƒ"ðäÄq#ð‡8à1ŠäC@AÆqDëàœ8à1΃ ã E2qÀCùAò!x`„"‡8à1‚Œâ€Ü88G‚ˆ!ˆ8ò!xˆc<ÆA|`ù<Ä‘qÀ.ù<ÆqpNAıxŒƒ 〇8à1‚Œƒ ùðĹq¬ù‡8à1ȉrâ ˆ8|¬rùÀ<Äqˆr 8ò!ÈQdð<(þýÀ.Ç:ÆAxˆrâ ˆ8à1xˆã H>Æ! æã€Ç8²È#!E"ŽuPâÈÇ8ÄAqÀcðXFà1xŒã ˆ8àA‘|Àãõ#xŒrù<ÆÁ9qÀƒ"ðG>à!‚ŒrãàÜ8Ö!ŽuÀcð(–Á¬â ˆ&2Ž€ƒsáÜ:à!Ž|¬CYAÄAq¬â€E"Ž€‰c¡È:(uo£<ÄAÔ‰câÈ<Ö!‚ˆcâ€GÀà!ŽuÀCƒ‡8à±x¬CãÈç–þqÀCã€Ç8ò!Ž€QÉGê"ŽuÀƒ"ð<Ä‘Qüâ ˆ8 ·qäã€Gê ·qÀCð`0€lâ€+(À Äð FÖA ¬-¨â €uˆrÌ€8"xüÁ,‹CÄ1Ž( ಠFò!xPCã È8òqŒë<ÆAuˆƒ ‡8àA‘qäCðXäÆAqÀC@Ô8ÖAxŒã È8à!ŒÀ#<Æ9ŠŒrÁAÄ1Ž|ˆã€EÆAqÀCAÄqäCG>(²ŠþÀCù È8à!ÎÁ%`ðG>ÄqÀCðX‡8ÆAqÀcðäÆAu¤Ž â€Ü8€ˆxäCð‡8ò±qÀ#`ð<ÄqLƒE†8È­ƒ â<Äu@NÉE 'xPdð <(Šäƒ"ã \ÆŒÀc¡<ÄAqŒA(<ŠÀƒ"ù<ÆAq`rãàœ~òAqˆ#â€Ç8†¨ȃsãÈçÄ1 Žë È8"ȉcðG>Ä‘àƒ âA(ŠÀCÀ‡8BxˆcðÇ8àAȉþcù€‡8à1xˆcë ˆ8òAqÀCù€Ü8à!‚`â€Ç88' Žãàœ8òAqè'âÇ:ÄAuˆƒsë€E 7xˆƒ ãȇ8 GxP„ pG>ÆqÀcðF2qä#ëä0BýÀcY<ƱqègùAÆ‘x`„sã ˆ8 ·qäCG>Ä1ÄuäƒsâÅAqä#ð<0qèâ€EÆqÀƒ"ãG>ƹqdAÄqŒƒ â ˆ8òAxˆƒ ã ˆ82ÈQ„ ã€Ç8à1Ž|¬#þðG>ô³Šäƒ8ŒäˆçŒAŒ<ˆ<ˆÃ8„8`D>ˆ<¬ƒ8Àƒ8„€&,# €8Àƒ8Àƒ8hÂ8ÀCÀÀÃ:ÀE@NÀ¬<ˆ<ŒÃ:Ä8Œ8„8Ä:ÀÃ:ÀC>PP<ŒäˆC>„AŒC>Œ<ˆAäƒ8Àƒ8D>¬<Œ<ˆÃ:ÀÃ8PAˆ<ˆçˆ<ˆA¬ƒ8Ä8Àƒ8¬Aˆç¬<ŒE„8Ñ8Àƒ8¬<ŒQˆAŒŒþ<Œ<Œƒ8Àƒ8@Î8ÀÃ8ˆ<äF¬AŒAŒAPÄÁÃ:D>Œƒ8@N>Œƒ8äEÀÃ8pÎ8Eäƒ8 Ñ8 Ñ8PD>`<ˆAŒ„^>ŒÃ:À\Àƒ8Œƒ8ÀÃ8ä\ÀÃ8„8ÀÃ8ˆÃ:è‡8ÀC>ˆ<Œ<ˆ<ˆ<Œ<ŒC>`<ˆÃ8ˆ<äÃ8ÀÃ:Àƒ~ˆ<Œƒ8Àƒ8Àƒ8Àƒ88„8Àƒ8Œƒ8Ä8pEÀC>ˆAˆ<Œ<ˆÃ:Œ<ŒääÃ8¬ƒ8ÀÃ:ÀÃ8Ä8¬Ã8PD>ˆ<ˆ<ˆC>ŒAþˆ<Œä`AŒ<ˆ<ˆ<ˆä¬Ã8ˆ<äƒ8ÀÃ8Àƒ8@Î8¬AŒ<ŒðŒƒ8äÃ8E¬<ˆÃ8‘8pŽ8¬ƒ8ÀCÀˆAˆC>ŒEÀÃ8ˆC>ŒAPD>ˆ<ŒC>ˆC>ŒC>Œ<Œ<ˆÃ:ÀC>ˆC>ˆÃ:Àƒ8Àƒ8¬Ã8ˆC>`<Œ<`AŒäŒAŒƒ8@Î8Ä8Àƒ8Àƒ8¬<Œƒ8„8ÀÃ8P<Œ<ˆ<ˆ<ˆC>ŒAäEÀC>ˆäˆAäE@N>ÀÃ8PAPäŒC>Œçäƒ8Œ<ˆAŒAˆAˆC>ˆäŒÃþÁ–8¬ƒ8`<Œƒ8äƒ8¬A¬Œ<ˆŒAˆALˆÂ20@Î8Àƒ&äCꬃ8@Î8À ŽäˆÃ:ˆ<ˆÃ:„8ÀŽƒ8ŒYRR<À<ˆä AP BŽ8¬äPçˆ< <ˆÃ:ˆçˆ<ˆÃ:ˆA`D>@Î8@Ž8ÀÃ:ÀE¬<ˆAPÄ:ŒAˆˆ<ŒC>Àƒ8Œä¤Î8@Î:ìK¼KÍŠ<ŒC>ˆçˆÃ:PDÀpŽ8äÃ8„8ÀEÀþƒ8¬äŒ< <À<¬<ˆÃ:Àƒ8ÀEÀƒ8Ä8EpÎ8ˆAŒ䌃8@Î:Àƒ8ÀEäˆAŒC>Àƒ8Œ<ˆ<`D>ˆäŒ<¬AP<Œ‰C>ˆÃ8Àƒ8¬ðˆÃ:„8ÀÃ:ˆ<ˆÃ:ˆÃ4ˆð`APˆC>@Ž8`D>þPA¬<ˆAÀ<ˆ‰Ã8Àƒ8@F¬ƒ8Ä8ÀÃ:ˆ<¬äˆ<Œ<ŒC>ˆ‰<ŒAÀ<Œ<ŒðŒƒ8äAˆˆÃ8Ñ8ÀC>„8¬äˆC>P<ŒC>ÀÃ8äƒ8ä<ŒÃ:À\@EÀƒ8ŒC>ˆAˆA¬ƒ8ÀFäƒ8ä<ŒC>Àƒ8@Ž8ÀÃ8Àƒ8Œäˆ<ˆ<äAPAˆçŒðˆAŒC>ŒC>ˆF¬ƒ8¬AŒ<ˆ<ˆ<¬ƒ8Ä8@Ž8ÀÃ:ˆ<ˆŒA ÀE>ˆˆÃ8Ä8Àƒ8Àƒ8EE„8ÀÃ8ÀÃ:ˆƒ~Ä8¬PD>ˆÃ:ˆðˆÃ8ÀþÃ:ˆÃ8@Ž8Àƒ8„€&,# <ŒC>P„&¬<ÀV>`„8@Ž8Àƒ8¬A Ep&ŠðˆÃ:ˆ‰<ˆÃ:¤Î:Ä:ÀCêÀCÀÀƒ8@ ÂE@Î:„8ŒÃ:Eäƒ8¬Ã8PD>ˆÃ8¬<¬ƒ8¬A¬ƒ8Ä8„8äÃ8¬<ˆAˆ<ŒäˆÃ:ˆÃ(üEÀÃ8ˆÃ:ÀE¬APåÃ8ÀÃ8`â:ˆÃ:ˆA`<ŒçˆAˆAPÄ:ÀÃ8PYŽEäÃ8ˆC>ŒçˆC>Œä¬<ˆçˆ<ˆC>„8ÀE„8Àƒ8ÀÃ8ˆÃ:ÀÃ8ÀÃ8@Ž8ÀÃ8„8À\„8¬<Œ<è<ŒAŒ<èEÀEäFˆÃ:ÀÃ8PÄ:Œ„8pÎ:ˆAˆAPþ\äƒ8Àƒ8¼qùÆÁ3xPœ8xãà%Ì'._Bx ŠËwÐà8qùà­ƒ'î 8Œ Š38Þ¸uãÄå3˜0á8xâ Žƒ'Þ8xëà‰[wp\>qëà‰Ã(ž8xâÖ‰›¦ ^ÂqSáÁgpÝTx0§Ž;˜p¼„ÅÁKhæ8qð`„sœ8ƒâÆÁ/á8qãà‰ƒ7^Bxmá%„—^[xâàgPœÁqðÄ·ó¸|0Çì:NÜAqãà3Øž¸qðÖyƒ7Î`Û„ðÄÁ·žlqðÄ­7Þ8q]þ Šƒsª¸©â &OwBx á%„ÞTqëÆ­·ž8xâò‰ƒ'^ƒâà‰3˜ž8x0á%<(Î`Bxâ¦ÂKhPœuÄgqàIÈ „àžqÄY&ƒÄ'qà'Ùà'qài qàž„à˜àik„Æg˜àIqàç „àIž„àÑ žqàžuà qÖÑmœ„¦‚gœ|Ä'˜àÝÆ&xÖGƒÚ:H¶q Jh˜ÆY'!xÄGxÄ1HxÄY&ƒt3Hœ|`Zç3qàÇ ˜àIž„ÆIÈ u`:(¡©àžþuàqàÇ qÆGœuògqàqBeF€GƒÄÑ3qàÉGƒÖgxÆYž®àgxÆÇ q0‚GƒÄ'!xÄGœuZž„ qÂì q0ÂlxògxÄGxÄgƒÄ1hqàžuÄYÇ qàYžuÇ q0ZÇ Ì Êgªuà³eáÉgƒÖg” ê žqÖ'Ÿq0Ê'!xÆ1hƒÄGœƒÖž„ ÊqàqZç qà'ŸqgxÆgƒZžuÄ93xÖgqࣄ 'qÆ1hþœƒÄgƒÄYgqà™Ê |ÆÁhƒ¦ZGxÆgƒÆ'Ÿ©ÄgxÄÉg*q qàgYqàGxÆÇ ©Ä9hxÆ1Hœu‚G‰Å9hxÆ‘XxÖ™JœqZg*ŒÄ9hœƒÄ1HxÄ'¡|¦‚gŒòç „ ‚ žuÄgxÄYžq Gœq ç uàYgM ÊÇ q0žqòIhYqàGƒ0;hƒÄ1(!‰%gÙ„àÉGxÄ1HðÈÇ8àû‰ë8È80"xˆ#ð‡AÆ„dâ€Ç:౎|Œã 0‡8ò!ƒ$þùG>¦’x$Ä ÉÇ8b?qÀCðX‡8$&Žƒˆâ8H>Æ!xˆã ù<Ä‘xŒCIˆýà!ƒˆÃ â8ˆ8²Ž|Œâ0ˆ8à±xŒ#0‡8à!Žƒˆâ8ˆ8 "xŒÃ ã0ˆ8à‘xŒÃ ‡8 2xˆã â8È:à!Že%â<Äq`dðÇ:à!Œˆ 80"Žƒˆ#ë0H>rq`Dð<ÄaqD‡ÄÄauˆcâ0È:à±*$〇8Æq¬cYâ°Ÿ8ƒˆ#â°_>bu$þã0ˆ8à!‰‰cYâ ¢8à±x¬Ã âÀÈ8à‘ƒˆÃ â0H> "ŽeÁ#âÈÇ8ÄaqÀCðHˆAÄuŒâ0È:‚Q ƒ€Ç:à!ŽuŒ"!ðXÇ8"ŽqÀcùÇAÄa„DðÀ f ²Že­ã â˜é:Äa¶ÀCëÇAÖ!ŽuÀc¦ðHÈ8Ö„dðHÈ8 "Žqäâ0ˆ8à!xˆm‡AÖuÀCðX<2xˆcð‡8ò!ƒˆ <Æu$ Å?Æuä#!ù<Ö!ŽqÀc*ë0HBÆqu`dþðFÄ1ƒÀÄ ã€Ç8à±qDë<qÀcðHFbuÀC뀇8Ö!ŽƒŒâ8ˆ8ÆuÀ#!Ç8"ŽƒŒ#ðG>ÄqÀCã<„äCðH<Ä„ŒcâȇAÄ1xŒCù€‡8à!ŒLSÇ8ò„Àc<ÆaqÀCãXÖ8à1xŒã â<ÆaqÀC〇8"Ž|ÀCð<Æ‘„Àcâ0ˆ8à‘qdö[ÇAÄaqÀc 8¨(ƒˆc<2Ž|ÀCSÉÇ8Äq`f£þèJBà‘uˆ FÖ‘x$Ä ˜‡A`b¿qÀCð<Æ‘q¬#ëFÆ‘udâ˜8ÆqÀ£+ù‡ÄÆaqŒ#â8HBà1x$dâDzÄuDY‡8Ö‘qˆã â€Ç:Æ‘ƒ$dTÇAÖAEq$!ëÇAÄ1•uÀcðXÇ8òq`Dë0È8$6ƒŒã ‡8Ö!ƒˆÃ ë<Äq,kDz²xŒÃ ‡8ò1ƒŒc ±_B 2xˆã â‡AÆqÀcˇAÄ1xˆã0È8 2ƒŒã ë8þˆ8²‰‰S9È:0"ŽuDÇ1ᱎƒ$dð‡Aıq¬cÇA2•|ˆë0È8à1xˆÃ âX<²qÀcË<ÖquÀ&ðXÇ8ృˆcã€Ç8à±qdÇ8buŒã0ˆ8à‘ƒŒCðÀŒ8ÖqÀ&ðFÖ!±®DðDzÖ„Àc 8ì·q$!<ıq„@¿`ÄÖ!x`FðX‡8 2ƒÀdð€ÉAÖqÀcGBà!x¬3…‡8f „ÀCY‡ÄÖу¬〉þAò1ŒŒÃ ë0ˆ8à1xˆcYDzđ|$d 1È8Äq|ˆ 1fÄaqDð<ÖquÀc£èGBÖaqÀcIH>Äq$ÆAàaàa¦ÄaàaÄá ÄÁ~ ÆAàa0b BbàaÄÁ fÊ Äa0BàA bàaà!ÆÆá ÄòAÆA BàAÖaÄÁ ÆA "àA B b0BàA "ÆÖaÄòa b*0bÄÄ!ÆAòaÄaYÄÄÁ òa*"!àAàþaòaò&àA Bà&òAà!ÄÖA b Bà!!BòÆAàA "ÄÄÄÆa` Æ!ÆÁ ÆÄÆÄÁ ÆÁ ÆòAàABÖÁ òAÖAbÄ–Da4A4A@—–qAAÁ@a‘q®Q·‘¯q®qF¡—q®Q4a¦qœQÆ«ÑAÁçqÃGGGaGáEa4aœºqèñAGEAFaGAaAGáGþGAFáÃqAaGGG!·qR’%AGAEa´q4a¶¸qÜq®q4aRr4a¦æDADaºqXrAÁA9@–à Æ43àAà!!0b–EÆá Æ!¦" BÖbÄaBÖá ÄÁ 0c–E0BÆÄ!b¦ÄaàaàAàAÆá  ÖAà!!àaàAbÆÆAbÆ!àAÆÆ#ÄÆÁ ÆaYÄ Äá 4¡ bÆá â ÆÁ ÄÆÖAþàAò¡-àAÖÁ Äa &àa0B BÆ! BàAÆ0CàAÆÄaòÁ Ö`bàAàAàaBàAàAÆa`ÆAà¡+òÁ ÄÄÆ!àa*ò>#ÆÁ ÆÆAbÖA Bàa*òA BÆAà!!àA B BàaÄÆÁ ÄÁ ¦"ÄÄá ÆÁ ÄaÄaB0B bƦÆÁ ÄÖa*0bàaàaàAbàa$F BÖ#bÄaàA &àAàAà!!¦þÄÄá Ö¡+0BàAàa¦Äaà!! B0"!à& B&à!!Bà!!ÆÄaÄÄbà!!à&àAÆÄ –û!þáò¡òVó¡þ!þ¡ò¡òáòáö!úáúVûáòáö¡þ!`u`5úZ÷áòáú!`õú!¸õö[ó[÷áò[û!ú!öAFA–Á ‚^Åèuà!! B B bÖ!!àaÄa¦bÄèuêµ+ ÖAþàaàA BàAÖAàAà!!BàA "!àA bÄ4Aà!!¦bb*ÄÁ  ÄÄÁ ÄaàA "!àaÄa*Äa ġ+àAà!!àAàA¦BÆaèÄÄaÄèêÄaÄÖAà¡^AAàAB "!à!!à¡^â Äá ÄÄÄaèÄaÄa ‚^ÇAÖAàAB B ‚^ÇÁ ÖáoÅ#bb BÆAÖ!!à!!àAàAà! BàAÆAÆA Bþ ‚^ "!à!!0‚^§èêuà!! ‚^w¡ "!bBàAàA B BàaÄaÄÄÄÄ!@aaÆÄÁ 4A B–eòaàaàAà!¦Äab¦àaÄÁ ÄòAÖAàA0ã Æ!!òaÄaÄa0bà!!àa§f òaÄòa$F–E BÆÁ ÄÖÆAàab BàaàaB bòa*àa–E b*Ä@áà!!àABàa Bà^ bàaìþG "ÆaYÄÄAbÄa¦ÄÄÄÁ ÖòaàAàa*àA¨hÄÄÁ ÆÄòaBòÆ! b*Ä#ÄaÆAòa*Ä!àAàaÄÄè5ÄaĦbà!! "Äaà!!à!àA–e–%Æâ ÆAàaàaàA BàAà!àA0bÄa–eàA "! bÄ!ÄÆÁ èÄ#Æ!ÆÁ ÄÆA bÄÄÁ ÆA0"ÄŠÄ#òA bàAàaàAòAàAþÆÁ Æfj@a0b BàA B0b "!ìGÆÄÁ â Æ#Öá ÄaY ÄÄÁ ÄÁ bF!`µÀ•ZÁµÀV©õúV󡪹•ZÁµ¸5ú[©5 šZ¹•Zó©óáòá–q0BB0Bà!!àAÖÁ ÖÁ ÄÁ Ä!ÆÁ ÄŠÄaYÄá ÄÄÁ ÄÁ ÄÁ ÄÖÄ#èÄÄá Ä Äa4A " òá ÄÁ ÄÁ ÆÄÁ ÆA–%Ö#ÄÁ ÄÖÁ Öáþ ÄÁ òaBàAàA0BBìgÄaY4AàAàA B B B$&! BàA8nYÖAàA"!4á è0à Äá ò!!ìG¨(ÄãÄÄÁ ºÄaYÄá Æ#ÄAbÄÆ#â Ä#ÖA B0B~!Äá Æ¡^ BàAà!! B bàAb0"FòAà!!4aàa"!àAÆAà!!àa*Ä!Ä#ÆÆá Öá ÆÖá ÄÁ ¦" bÄòÄÄa*ò#f b*ÖþA0bÖ^ÇÄÁ ÆAÆÄÄá ÄÆ!b "!àAÆÖèuÄ!èuàa BàAòÁ @!BàAÆÁ èUbÆÖÄÆÁ ÆÄ¦bb BàAà! `´a bòA0BàAÆÆaÄÁ ÖAòAàa BàaÄaòÆÆÄá ÖA0bàAÆ!!àA bàA BàaàAàaÄÁ Äá Äá ÆÄÁ Ä!Æ#¦ÖÁ ÖÆÁ ÆÆbþàAÆAÆÄÁ ÄaÄ!à!!àA b0b* Bº"à!!àAÆÀ Äá ¨!Ä¢×µÄaYÄaà!!à!! "! bòà Äá Äa* Bàa bBÆ0Æá è0à Äá Äa@!!ÆÄ!ÖAàAà30"!àA–E BàAìgàAàA "!ÆaYÄ#Ö#Ö#¦A¢Vû©ûªû!ªû!¸µò\û!¸5þ!¢:`µ¸5ú!`µþ¡òáúÁñ¹µòáqbþBÖÄÖ#Öa bà3ÄÖÁ Äá ÄaBàaÄÄa B BàA B b0BÆ#Öá Äa–EBàAÆaàa bÄaÄŠ ¦"à ÆÁ'nÜ8qðÆÁ[¯aCq Å5g°¡¸qëÄ9ÜèPœÃuÇ57Þ:ŽëŠÓäP\CqŽk¸n£¸uðÄ5OÜ8xãà‰×PÜ:q ÅÅÔOG‚ðÄ5oœÃq×5$(Þ8xãÖƒ'ž8ƒðÖ‰ƒ7n#Á|⊃'®¡8xŠs(®¡8xâòþ­k(Îáºëà­Û(nœÃ]ÿà­ƒ'.ßFq Çm\'Þ:‚ÅÁ·NãÀ#NCq$Î8ð 1@2âŒ5ˆƒ  ‰8ùŒ#<Á3N~À¬#N>âŒÃÑ8ðˆÏÔÐ4 4$<㈳sð$GãÀCPCãl4<ãÀ3<94Ž8 Ï854<ãˆ8ãAð,£I?ýä#ñÄùüCq>ÿ\œÏ?÷³Ï?ùüóO>ýþä#r>ýH,r>ýì#ò?ùô“O?ûüÓÏ?ùô³Ï?¿œO?ûä#r>ÿ@ý¼,²&ËÀÃÕ:ð¬ÓsðŒÏ8 ‰AðÏ: Ï8ðpO>‰Ó8å#NCãˆã8ð¬#<\Á3<ùˆÏ8 Ï8ðäcPCãÀ#<i8ë4Ä<ùÀcÐ8ðŒ#<ã4$<ùˆc8‰“<Á#NCãÀ#NCãÀ#NCùÔP>ã44Ž8ðˆ8ðˆÓ8ãÀ#<ãÀ#<ãÀÃUCâ¬Ï:ðŒÓ&â44Ž8ð¬8ã8ðŒC<ã¬8þ8ð”8ðä3Ž8ðˆs !<Öqhã€sÄÑq4„+ Aà!Žq„#ÉÇ8"xäƒ !<Ä1q4dðÇ8ÄÑuˆ£!âhˆ8à!ކŒCðGCÆqpÅ!ã<ÆqÀƒ ðÇ8’‚Àc»øAàa†ŒÉÇ8à1xˆƒ#â€Ç88²x¬#£@#qŒ£!š€‡8òqŒÃ!âpÈ8"xˆâhˆ8²qÀcù H>ÖÑuˆãhÈ8à1Ž|ˆãhˆ8à!ŽqÀcë<‘uˆc þA"ކŒcâÇFÖ!ŽqˆqÈ8౎¬CùhAb"xŒ£!â€Ç8à1x¬£!‡8à!Ž|4ÿ€‡8à±9qÀc‡A6"ŽuˆaÀ1kÌ€ã€Ç8Ä‘qÀcð †2qlDð<Ʊj`ð <Ä‚äC9Ç:òáq8DãhAàAxˆc#ãÈ<Ä1xˆcâÈGCb†Œ£!〇8à!xŒ£!ãpÈ8ò!xˆcðG>Ä‘‚4DðÇæ6"‡lãÇFÄáqÀ# !È8ÖÑk `Ù8‡(þäj@ G>à1Ž|Àƒ<¨!€uˆcðGCÒ±x¤!â@G4Àƒ†ˆƒ€5@xŒëG:6ЂŒ#Ì@6 "ŽqÀcð<ÆÑ‚4d€8Æ!‡ˆ# €‡862xŒ‡8òáqŒqAÆqˆ#\ɇ8"Žqäƒ#ãȇC2Ž|ÀcðÈGL¦Š|ôÃià ¯xE–äãùØÇ? Ö}ü£"ëÇ>þ‘‘åCdýøG>þ!±}ü#ÿÈG?ò±|ˆ¬ÿ€Ø>þÁÞ—åãù`o?ö‘ä£ùЄ&¦þÑuÀƒ Ç8òA‡ˆ£!âhAàAxˆcY‡8òÑq4DiÈ8òÑq4d‡A"Žqˆ#1H>Òulë€Ç:ÆáuÀcðG>Ä1Ž|4DÇ8à!Ž|ÀCð<ÆáqÀcð ˆCÄÑqŒc Ç8Ö!xã€Ç8à1xˆcðȇ8àÁxd#ãhHwÄqh¢!ãÈGC2Ž|l„ !ÈFÆq¬c#ã€Ç8Ö!Žãhˆ8Ö!xhâhˆ8²xŒc# 8"xä£!ã€Ç8à!ކ¬ƒ ãhÈ8ÖÑþq8dðÈGCÖ1ކˆ£!âhˆA6"xŒâpˆ8à!xˆc#âG>à!Ž|p¥! 86×qÀcýhÈ8ò!ŽqÀCãȇ8ÖÁ‡ŒCðXGCÄqÀCë<ÄM,ƒ€‡8à1qh‡8à1qÀCðA"Žˆ£!ãpˆ8ÖÑæˆc 8ò1x¬âX<ºã|Œ# 882ކ¬CðG>Äq4DãGCò1qŒã€G>à1‡Dð<Æ!‡¬ƒ#〇8BxŒ‡8à1Žäâ€Ç:à1þxŒ" G>Öqäcsâ€G>²‘ql$Ì€8˜ã‹H€l@ G7>0€” ðG8Z0€À  @ xt£€Äj ¸€AÄÑqŒCðȇ8"ŽŒã<Æ‚À#›GCò!x\‡8àÁx¤!âX‡CÄÑqÀc !‘âããàã@ù°âð0ð0ââãÐ! ‘ëëÔÚ°†° € ð@   Ð ² ð`ØPþ±”ÀÄPàâ@   0Ã' ð0 0 !ñ ÌáëÐâÑââ0Ðã°ð°Ë  1âÝÑâë`âáãà‘ã°± 1ââ°Ñã ë`!ë0â›#ð0ð° šð&aû0Šû0Šý°ìõ2ý 2ûÐû°ÿ°ý‹ûðýðù°ÿ‹^ýð2ýð2±˜ÿÐûð±˜ö2ì•"³ÿÿ1ÿ  Ëãàââ°1ÂâëЛþ›Óãù ð@ë`âããâÐã ðââùãÐù` Aëâã š°ââÐëãÐëâ°ã  ! ! ±ãÐâëãàáã  1ð ëàâ°!ð ð  !ð0ð0ãØ1Žâ  ±á›#"ð0ââàããã 1ð0!!ð°â  ð@ 1 A±â°ã ð  1ð0 ‘‘ããÐãâé—âÀþ‘âã  1áãÀëãÐâ°ãã0Žù  1ð@»ðð ëâÐëàâã  1ð 1± ¢ð Œ !ùšÐâÐáã±ð°âãÐââ01ð0±ð°âãâ`â0±9ù@±aðð`ë ðað  Aùâãâ0ð@ !ãàâ!ð@ãããÐë`ù  ðð ð°â0ð0ââÐþëÐâ0ð0ù0 !ëÀ ëpPÀë.Àâ€3Àð@ ÃÖ0Ð*Àïà µ0Ôâð *Àâ° â@ Pâà ù ð  ! ±ãã°â1ùÐâ°ãââ‘”ã( 1ð ëãëâ0 1ð ëБ ±â‘áâããð0ð°ë€ Pް A `Ùà X0â@ Ô ï Ô Ñâ†ÐâãþðÞ€ŸÐÔð@  ù1†°âÌâÝããâÀâ ;ãâ°ð0  0ð – âB1 1ð0ð0â1ùÀùãáë 1ù  !ð0 š ÿûûûÿûû“ûû“±˜¶1û 2ùÐû1ÿ 1û 2ûÐÿ°ù`‹‹ù‹³/“ûðùÐ/“û¶˜ÿ°³ý°ÿÐÿ 1ý Ë ð0â°ããþãããâ0!ãââÐâãâ`ëàë ù±â0ð0ð  ±ð0ð°9ð`ëÐãàâ0ð0ùš ð0ð`ðÀã°âÐâãÀââ“6A !ùàâàââ0–: !! Aã°ã°âКÐãâÐââð ãÐãàãÐâ0ù@ë ð ãââÐâÑãК°ãâàã ã°â0ù ð ð ð ð ð ðÀþ1ù@ð@!ù ãÐ!ãâ0 ! 1ù°ââ0 A!ãÐã±ð ð ñ ÿÐëÀãâ°ã AãÐâ0ù0ââ°â ° Œ0 aâ  â ã ëã@Að0ð0ð@ð@ð@ð ð0ð0ð  ±ù01 !!ð`ââ0 !ë ð0ð ãâ!ù0 1 ‘ëÐâàëàâÀù0 ! ! 1ð0â\ëþãâãÀ ð 1ðãÐëã Áë@ 1âÀ p0 ã A °Ô 1ð ðÀ á0É0åã@ `ð Ì  ÔàëãÀâ0ðÀð0â°â°ã aâÌã  !ãâÐãããã !ð 1ââëââÐâÐã°ù ›ãâãàãÐã@ù`âãÐâ°âÝ€€ ã@   ÌÁ  Ô ðþ@ ÐÔ 1ðpÍÒ,0â@  ã0@Ô ð@ °ãÐÐ0ð!âÌà°ë0ð0ââàÜâ°ð0â°Ó0 âë 1ð`›ãã !ð0ù ðÀð ð°9ð ëà!!ð A 1ââÙ  ù ^ù^ù1N“#2ì¥ùðý–ì%2úý 1ÿ aó¶ùÐ1ÿ aû/Ã^ÿÿÐùÐùðúóý ý Ëàþãã Áù0‘ãù ð ðâëã@ðëâãÐëÀù0Ñâ0ð ð ðââ°‘ãàù0â°ã  âââàù@ð0 ! !ð0âã”ù ð0â°â›#ð ð0ð ðâ0ââ0ð@a ! Að0!ð0ð šâ°ð`ð ð° Ñð01ââ° ±‘ââÐãÐâãâ  ð0ð þëâÐâù ãââÐâ â±1!ð@ð°ð ð@ùâ°ð ð  Aë`±ã\Ñz âù ã zââãÐâ°ãð ùëàãâа ªÐò°  °Ðù0ââ°âÐëÐ룀 Œ0ãâð  !ð0ð0âð0ð !!ð°! ! 1 !ð  ±ð ë ã ð@ !ð ããâëÐãÐãÐâ0!ðþ°â0 aë@ !ãã ãÐããâÐã°â0!ð ð ð`ð 1ið°â°ð ù1ë@ 1ù1"ãðÀ  Ù €âÀ  Î/ Ô â0ð° àÃâÀ 0 1ù@ Á ° Á Ô ë ë0ù0âù 1ù1N<‚ðÄO\¾uãÖ­—ž8qð(Â7.EqùÆåƒ'nAqðÄ—ž8xâà+(Ž Å|ã ®ƒ'.Ÿ8xãà=þoŠlj#(nôÑ}¬çýÈG?ô‘}ä£ùÐå,×ó}ä£ùèÇ>6Ô}ì£ëùG>ú¡õô#úÈG?ôÑ}ä£ùèG>ôÑP,ƒ ã E2ÉŒùX<ÄqdÇ:à!xŒC<ÄQqDðÇ: 2qDðAÖudð<òqHfÑÄ8ò1xþdDðX‡dò!xP„câ€Eò1£qÀcðÈ<òAxŒCë€Ç88&‚Œƒ )ˆ8à1ÉŒCÉHAÆqdFð<Ä¡ xŒCðXÇ8à1Ž|ˆcpâÈÇ8ÄÁƒ"ð<ÄqÀCð‡dÆAq$#š(ˆ8ò1ŠÀcâÌ8à!xŒƒ É<ÄqÀcð<Ö!xˆƒ ã(È8àAxˆcð<Æ!xŒCð AÆudã€Ç8$3qÀCÞð†! FèáÞÐÃ.ÆA|ˆc<Ä]ä£ â€‡8$ Šíþ#+ÆÅ2xˆã(È8‚Q ƒÈÇ:Æ‘xhBAÖ‘‚Œ#QAÄ…Á##ðÇàÄ‘ŠÀcF<ÄuÀã!â€Ç:Æ‘Š„"ëGAÆqH†"Ç:ÆqÀc9GAƱ‚ˆcðÇ:Ä1ŽuŒ#ð È8"xŒƒ â€‡ÂÆqHFðX‡8à!PücðX‡88&ŽŒ¬ƒ"ãÈ<2BqÀcÌ€8౎|d ðp (b Nˆƒ<º1€dÀã3<Æáh㜀G8 ‚ŒC0Ç64ÀpP#þðGAÆqÀcù˜Q>à1Ž|Dð<ÆAqdð <Æ!xŒã È8à1‚ŒC2â Eà1#x¬CãÈÇ8ò!ŽqÀCãG>ÆQqäCù<Æ‘#qÀCYAÆ‘…ë <Ö!xPc¿Ç6fÀqP#ðX<¨!qP#ë †Äp@ð<ÄŽw`£ð ú±]þã=ºìG>ô‘}ô#ÙÉG?t™~èòùxÏ>Þó~è#úP‡ú¡K]æCýX.³£~è#žÑG?ôÑùè‡>ú‘ìèc¢X<Ä1Ž‚Œ‡8à!Žq¬ƒ"<Äjâ ˆ8$3Ž‚ˆƒ â(ˆ8à!xˆã ˆ8à1xˆƒ€‡qÈŠÈ‚x ˆqÈqqXþ…Éx ˆq€‡‘ q€jx †(ˆq‡|‡| ‚‡q † q€‡q€Š€‡q€q q€qx x‚‡|q€‡qÈ‚ ÈqÈ‚‚‡|‡‚‡Q€q(q€qXx‡Œ€q‚Xq(qÈq q€q€q€‡q€‡q(jŠ ˆŒ€q€‡Qx‚‚‡| ˆq q …)ˆŒ€‡q€‡q€‡u€q q Š€‡q€Š q€oø…_@†P Ekø…i€q qÈŠ€q€qxxQþÐäÒ=Ðo°=x ˆÉq qØ…€‡q q€q€UȇY ÆIÀ‡g(XPx‡q q€q‡|XqQXF€q‡uqqŒq‡u€‡q€qX‡Œ qàqȇq€qq€qx‡u(qÈq€‡qȇq€q€‡q€‡q ŠX‚X‡‚X‚‡q‚‡q€‡q q(ˆu(q€qÈx‚q€‡q Š(ˆ|x‡‚ȇq‚x‡¡ˆ|à)x‡…~€‡q ˆq(ˆq€‡|‡‚‡uqȇþq€q€Š`‡u‡u€Ðt@‚‚u †€‡qX‡?p€à€8ŠØ†€€x‡(€pè†0Š  ˆq€q(qXqÈq€‡q‡uÈÉ xxŠ(q€qȇqx‡|Š€q€q€qàqȇq€q€qXqx‚ȇŒx‚xxŠ ˆqÉq ˆqxX‚x‚‚qè†$€ˆ†u  x †jq †€‡‡ˆ‚Y ˆul(þ‚xP‚‡p€O †xˆ( PYˆ‡u ˆn(€u€q q`xq˜‚‡uq ˆq€q Šxx˜Q ˆq€ŠÈŠ€q€‡q€‡u€jqȇxxx‡|P˜‚xlàq ˆpÐxx‡u ˆu ˆY‚xXMÐ¥}Ї}P#h|ȇ}ȇ~À‡õ(%Ї} =}‡Uh€ 8…~ÔAÍŽ}Ð¥õhT}؇IÍ} ˜T]ÊÚËÚ€èÈ}€øЇ~ ½}Ð%|ÐM˜†|þx€аÕ|€q€‡|x`†[fq=°Uq°UqxxÈ[[µV[[͇q°Õq xjqX[Íq€‡q¸VqXxXMXk]xX…€Ø€Sx‡kjq k]f€q°Uq`†‡mÐq°Õ|[¥[[xÈq°VаÕq[‡uÈq †€qÈаUq€‡u€qq°UM€‡q xX…€¨€3 x ˆk…q€‡q€‡q0Zx‡|‡|ÈŠ €q€qȇq€þqM[‡kÍŠ€q€q0Úq°Uq€q€ŠhZx[U˜k[xØäB®sð†r°qø[x‡kx [‡‡`=XäʆlÐF°VqÈxxx[͇]è‡|x[xxP|À‡w€‡|€ÝõPxȇqk‡u€‡‡à€Q@F€|€‡uxxxqÈ[Ux‡|[[x[xXq°Uq°VаÕq€q€‡u€Šq°UqÈŠ€q°Õu€‡q€‡q°Uq€‡q€‡|€qxÈþаVqx‡q€q€‡q€‡|[‡qÈx‡|‡k͈u [Íx[x x‡q¸Öu ˆ|[‡q°Uq… ˆu ˆŒ€q‡u€q¸Vq€‡u£Í[‡k}q€q€‡u‡uȇqÈq°UqXqX£xX[¥ˆq€‡q°UqX[‡q€аVŠ€‡q€‡u°Uq°Uqȇq€‡q0ÚqÈ[]‡q°Õu€‡ux x[xx[¥ˆq€q€‡u k]x[kxxxX‡qÈk‡|°UqȈ|þ€q‡|€‡‡X[¥k‡qȇuq°Öu€ŠXk[[]‡|‡u‡ux°åu€q‡k¥x‡u€‡qÈ[x k}[Ík¥k]x[‡| x‡|€q‡|°ÕqhZqX‡e[Íq°Õu¸ÖqÈq€q †€‡u ˆ|°Uq°Uq€‡q8‡k[jkx []‡¹q€‡q€q€‡u˜MØ]Ê}P#h8‚›†ŠÁ#P‚A]T€=yX…‡}Ї|Ð¥|ØÚ“]ê}Ø]Ê}yÐ%þ| ½~Èu€}X}ЇõÐ¥õÔ}@ÕðŒµ}ÈÚ“‡õÐ¥|Єi‡q0ÚŒ€‡qXq€fq[e†H9q°Õq€‡|[‡|oȇq€Šq[‡uðx‡|°Õu€jxX‡ŒXx xk]‡q€Mk‡T€=Èo…€‡q€‡Œ€Š †€jq€qx`xx`†‡|[‡u‡k‡q°Uo°Õq°Vq°Õq°Õs€q°UqÈx xXkxXxxÈxo…qÈþ[E¨‚l8Qð£Íx [xxÈx‡ŒqqÈ[¥†°Õq°Uq°ÖQx x‡q€qÈ[‡k[¥x‡¦xq€‡q€q˜[qx[‡fð†_@†eEdXoØx ˆq°Õq‡¦xX‡u=`o°MÐ=Èx`=Xq€‡qȊȈuØ…~Xqxx[UÀ]Ð…Y8…S˜„IÈU‡uxq°Õux‡…e`‡u°ÕqÐŠÈ ‡k‡u€‡ŒÈqŠÈ‡Œ°Õqþ0Zq°Vq€аÕqX£x‡¦x ˆ|È[x[xk[Íq€‡|[xx[‡uxq°Õq€qȇq°UŠÈq°Öq¸Vq€‡|x‡¦[ÍŠ€‡u…¸Ö| xȇq°Uq‡¦x‡u€‡q‡u€q€ЏÖu[‡u‡u°Öu°Öu°Vq°Öu€[xk͇q°Uq€q°Vq€‡q€‡q¸ÖqH9[x‡u€‡q€ŠXx‡¹%úq°Õ|k][‡¦‡|€аVq€‡þu ˆ|ÀpŠX‡Œ€‡|‡Œ€qX‡Œ‡|‡k[‡uq€‡u‡-kÝrq€q°Õ-‡-xx‡-£¥£x‡u xX[xØrq°Uq°Õq°Öu []xxX[]qX[‡uxxÈ[xXx@M€‡q@$€°q€‡q؆€¸q °Õtø€€ Іu ø ¸€qè†h€ØmX‡€pY †€qè†0q€j€?à Ø\8‡ux˜M¸j}È}P‚2h|Èþ‡wˆ|ïòåÃ×E‰<‚ú.@³Ÿ>yúä¥C2@€yø¨ °ÄA†hòôY¢ÀA“|òÒµàÀÈ>xì,D‡¤A#ëî˧/Ÿ<‚úüû·¯è?øôáÓ—o¡>yúäQµL¼qðƉË7.ß8xb™ 'ž8fÖQ v’l˜¥ ‡ âº}h0 D4xÔDápA\¸À€GMÀ* 6$ƒGi¼qâb1oœ(qãÆ­·à âÀ#<âÀ3ŽXâˆ5Î:ð衇7kˆŒŒÃÈšVˆ“Ï8bå#Î:âüò<ùŒ#ŽpëÀ#N(òàãÎ;ùÈS>ïXãXùÀ3<âÀ³ŽXŒ‚ #ä#Î8𬣉XãÀ#N>ëþ'ŽXãä#Îhùˆ5N>âÀc<âÀ3<ã'Žpâä3ŽXâÀc–XãÀ#Î8ðˆ8b“8ðˆ#–Y­Ï8âä3Ú8ðŒ³Ž8ã'ŽX㈵Ž8‰Yð¬#N‹ãˆ5<âÀ#Žp£ÁcÖ8ðŒÏ:ãä#Îhb­³(ÿ¬#Î8ð¬#Ü:âÀ3<ù˜5ŽYb‰Ï8ðˆ8ëÀ³ŽXâ<,Î:ð< Ï:ð¬3Ž8ãÀ#Îhð˜%Ühð¬8‹#Ö:ð¬3Ú:âŒÓâ8ðˆÏ8ù˜YðˆÓ¢8ã·Ž8ùˆ#œYãÀ#ŽXâÀ3<ãÀ3<ãä3<ëˆ3Ž8þã'Î8âÀ3ŽYð¬#Žpãˆ%Žp똕Xãä#Îhb‰#Ö8ùˆÏ:f‰%<ãˆ5N>-> ÏÃëÀ#<âÀ#ÎÃb­Ó¢pâÀcÖ:âg<â¬8ð¬#œ8ëˆ%Î:âÀ³Ž8ðôÏ:ðˆ#Ö:âÀ#ŽXãˆ%<ëˆ#Ö:âˆeV>âgÖ4 À³Ž ,hƒÎ <ˆ ,dãM-âP€8ðt3L<ÖÌ@‚8¨1€*ˆÃùØÆ0àa€Ô€8Öj@,*`8¬¡ ˆƒ¨Â8à‘‡ ÀcðÇ24Ay°{hG à )\0xÇ‚y胅þì@2Xˆ|È#.€;С%ÈC¨‚<ô‘‡ 䣆>Ð1 yìC,x:4Àƒ}PCúè‡ XŽ{Ì@ ,|£<¢|ÈHùàÈÂ|°PòÐAäŠiˆ#fÇ:ıqÀÃ,Ì€8„ÃŒˆƒ<\m c<€5P…ÑÀ#À‡5f0qPU‡XTÀqŒâ Flsü`ãØÆ’!x¨à ð0‹&à‘qÀH†8à!xˆáF>¬1ˆƒ€5;f @〇8˜pP#bq ÄqŽðØþ@Æq„cð°Æ &0j  ðÇ:TÀqœð Fls`aâØÆ’r¨à â€Ç841Ž|ˆèP€ ‘ ³ÀC.`8Ð1ˆ¥Ãȇ5f@xP#U<Æ¡dcÀ€5`ƒlœã€Ç8Ä¢ qˆEb<ÖqŒC,â€Ç8ò!ØÁCðÇ8È*qÀc4ù0Ë8Ö!x˜E,¿˜Æ/vñ d4c¿ðF-F³xˆC8ãȇ8Ä2xˆkZÆ(¬ÀMXAš„¡ =ÀcâÍ:à!xì"〇8à!xˆC,çþÅ;t¡ TÌbº¸Æ>Î!–ÑÀCã‹8Ö!ŽˆâŒXˆ}äãûî8y,ú€#>ä±|ÈCš˜†pÖu´HÌÀB?€ @Ô€8Â1€d˜… €5  ±Œfâ€3jãXG7ŒuŒcâ F´±x0ƒâ€Ç”°Žn b‡&Öþq¬ƒІXÄ!œÑ˜…X5j Eâ`Æ0€ ôâ †àŽ$Ãâ FŒ5€6ˆÅÈ…80CÀ58¬Œƒ PÁ:tCD<ˆ<ŒÂ8ÀÃ8ˆ<`C@l.ÀC8@2˜1$€Y¬Ã8¬ƒ80Cˆ5€6˜E8@2ŒÃ:˜5€6ˆ<0äÃhˆƒ(ˆÃ8ˆÅ8ˆ…YÀC>ˆƒpŒ<Œ<Œƒ8Œƒpˆ<Œ<ŒƒXŒƒ8ˆ…8äÃ8ˆE>ŒC‹ˆÃÃü2üÂ.ìB-üÂ.üÂþ2ü‚XŒƒXŒ<ˆÃ:Àƒ8ŒC>ˆƒXäƒxƒ7 #X&0 X0#XÁ ¬<äƒ8<ŒpìB?¬ƒpˆ<ˆÃ:ÀÃ:„Ò½ƒ;àÃ;ìƒôb9ô¢ÀC>ŒC‹¬Œ20ÀŽ&Àƒ8ÀÃ:Œ<ˆC>ˆÃhä<¬<˜<ˆC>˜<ˆƒZ‰<˜Å8ÀÃ8äƒ8‡Y´ˆ8´È8ˆÅ8ÀÃ8ä<Œ<ˆ<ˆƒp˜…XˆƒXˆ<ŒÃ:ˆ…8Ô^>ˆ…Y¬CoŒƒ8Àƒ8ŒƒpˆƒX˜<ˆY‰<ˆƒpˆÃ8´È8Ç:ˆ…8‡8À(üƒpô†XŒ<¬þƒY´È8ˆÅ8GéˆÃ:ÀÃ:ˆÃ:Àƒ8ˆ…8Àƒ8ˆ…8ÀÃ8´È:ÀÎ8ÀÃ8ÀŽ8ÀÃ:ÀÃ:ÀÃ:ˆ…8¬<¬Ã8ä<ˆÃ:ˆÃ8Ç8´ˆ8Œ<Œ†pŒ<ˆƒpŒ†XŒ<ŒƒXˆƒZ­<ˆƒp˜Åh‡8ÀÃhÀŽYˆ…8ÀÃ8Àƒ8Àƒ8Àƒ8< <ŒF>´ˆYˆ…Y¬ƒ8Àƒ8ÀÃ8Àƒ8ÀÃ8ˆ…8äƒXˆC>ˆ…8ˆ…8´ˆ8¬ƒ8ˆ…8ˆ…YÀƒ8¬ƒp¬<¬ƒX¬<”ŽpˆÃ8Àƒ8ÀÃ:ˆƒX˜ÅÃÕ:‡YÀƒ8‡8ÀƒYÀƒYŒ<¬<ˆC>‡8þˆ…8ŒƒXˆƒXˆÃ4Œ‚80ÃH€yJ€ˆ38ˆÅ:À5€8¬Ã*|€4@@>PƒÀƒ8Œ<¬Âàg€8PƒÀÃ:À5<0<Œ80CÀ5À8ˆ6€X<Ì2hÂáC<Á´Ò¹>¸Ã; ÝÁáƒ<°Ã$>°>ă:@<°3€<¨ƒà QƒÄƒ<¬B ÀÌ‚<¨ÃÄ 1È5<¨Cœ§8€<äƒ>è @QŒé> éC>è>è>°&,Ã8ÀÃ8ÀÃ8Àƒ83À2dŸªB¬6 Àþ9PÃh©ˆ5<Œ<ˆÃ*|@H@À:Pƒ¬ƒ8¬5€8¬<¬¬5@2Œƒpˆ<¬Âhˆ5€8Pƒ˜<ˆ<0LÃ2,ƒ7¨ˆ5€80Ch©À5<Œ<ŒÃ*|€4ˆ<Œ<ˆ<˜Å8ˆƒpŒƒXŒ<ˆC>ŒC>ˆ<ˆ<ˆ<ŒƒX˜<ˆÃhäƒXŒ<Œ<ŒÆ:ˆ<ˆƒpˆ<ÔÂ4ÔÂ/ÔB 6C-XÃ/ˆ<ˆ<˜…XŒƒXˆÃ8ˆ…8ŒÃšX#¬Ã X(Šâ XÀÃ:ŒÃ:Àƒ8<ŒYìÂ?ˆ<ˆC‹˜Å8„‚;è‚. B)œ‚.XÁ è7XÁ XÁ8¬ƒYÀƒ8¬ƒ8„€(,# €X¬<ˆƒ&ˆÅ:˜<Œ<ˆC>Œ†Y´È:ˆ…8ˆ…8ÀÃhÀÃ8´H>Œƒ8¬<˜…pˆ<Œ†pŒÆ:ÀÃ8ˆ<ˆÃ:ŒƒYþGíÁ<Œƒp¬ƒ8ˆE>¬<Ôöæ<Œ<äÃ8ÀÃ8ÀƒYˆ…8ˆ…8ˆÅ8ˆC‹ˆƒXäÃ8ˆ<ŒƒpŒƒ8ÀÃ8ÀƒYˆÅ:ÀÃ(ôöŠC>ŒÃ:Ç8ÀÃ8äÃ8ô†X¬ƒ8ˆ…8Àƒ8ÀÃÈÅ:ÀÃ:Àƒ8¬ƒX¬<Œ<Œ<Œ<Œ†8Àƒ8ÇÃÀÃ:ˆ<ˆ<ˆÃ:ˆƒXˆÃ8ÀÃ8´H>ˆÃ8ô<Œ<˜E>˜<ŒC>ŒƒXŒƒ8äƒYÀƒ8Àƒ8ÀÃ8ˆÅ8Ç8ÀÃ8‡8G>¬<ŒƒXŒC>ˆ<Œ<ŒC‹ˆƒX¬ƒXŒ<ˆ<ˆƒXˆC>Ôžþ8Ç:Ç:Àƒ8ÀƒYˆÅ8˜…XŒ†8ÀÃ:Œƒ8ÀÃ:ˆƒX”Žp< <¬ƒ8ˆ…8Àƒ8Àƒ8¬<ˆC³Áƒr‰Å:Àƒ8ÀÃ:ˆ<<ŒXˆ<<Œ8¬<˜<ˆìˆ<ŒöÂC>ˆ<Œ<Œ†8ˆÅ8ˆ<äÃ8ˆƒXŒ<¬Ã4€‚8„Chƒ8¬Ã8ˆ<„Ã$<ô5<„à8À3€8PCÀC>ŒÃ6 À)€Ã:0CÀ5€8¬ƒ8PƒˆC8@2Àƒ8ÄBˆ5€8< 5€8¬ƒ8ÀÃ4hÅ ìFï"h´# ÂtAÄÃÅ<,þÀÑ=tCDƒ>ȃ/$üðP<À>€) iÂ2ˆ<˜…Xˆ<ˆ3€YŒ<0CŒ5À:tÃD<¬ƒ8Àƒ8Pƒäƒ8ÀÃ6 À)ˆÃ:0ƒˆ5<ŒC7@2¬ƒpPCÀƒY`CÀƒ8¬ÃÈBHÂ8Àƒ8Àƒ&ÀÃÃä<ˆ<ˆÃ8øxC7@4ˆÃ:ˆÃh„à8¬3€8PCˆ…8„CDCéˆ5€Xˆ5À8ÀÃhh‚XˆE>ÀÃ8ÀÃ8ÀÃ8ô<¬ƒ8¬<ˆCŠÃƒ8ä¸8ÀC>ˆˆCŽÃÃ8¤ø:ìÂ24Ã.üÂ.ÔÂ.üÂ2ìB’‹<ˆ<ŒCŠ‹<äƒ7ÀÚÀÃ:ŒC/®ÉšXÁ:ˆ<¬ƒXˆCŽïÂ?ˆÅh$¹8„Âþ‰ºƒÑåC/ê0ZÁ8$¹X„À( # €8Œ<Œ<ŒÂ8Àƒ8äø8ÀÃ8ˆC>ä¸8ÀÃ:ŒCŠ‹ƒXˆC>˜<ˆÃ8ÀÃ:ˆ<ŒCŠ‹CŠC>ˆ<Œ<ˆC>ˆ<ˆ<ˆ<ŒC>¤¸8ŒC>ˆC>ŒƒXŒ<˜<˜…XŒÆ:ôF>ˆƒXˆÃ8ÀÃhÀƒ8ŒÃ:ô¡ƒXŒF>ˆ…8ŒƒXŒÆ:ˆ<ˆC>ˆÃhä<ˆC>¬ƒX¬ƒXˆƒ&ôÃ8ÀÃ8ˆÅ8ÀÃ:ˆCŠ›<ˆÃ:ˆCŠ‹<ˆ<ˆƒX¬ƒXˆÃÈ<”ŽXŒ<ôÆ8äƒYäƒYäCŠ‹ÃhÀƒ8¬þCޝ<ˆ<ˆÃ8ÀC>ˆ<ÔÞ8¬Ã8äCŽ‹C>¤ø:ˆ…YÀƒ8Œ<ˆ<¬CŽ‹<ŒC>Œ<ˆ<ˆ<ˆ<˜Å8ˆƒXŒ<¬CoŒ<ˆÃ8ÀƒYÀƒYŒ<ˆ<Œ<ˆÃ8Àƒ8ä¸YÀÃ:ˆC>ˆƒXŒƒXˆÃ8ÀÃÃä¸8ŒC>ˆ…8ÀÃ:ä<¬Ã8ä<¬CН<¬ƒ8¬ƒ8¬ƒ8<ŒXÀÃȃX˜ÅÃ,(ÀÃ:þ¸ hƒ8X'ˆÃ8¸ ˆÃ9Ôâ1xä#!C`„'èc"ðȇ<â1‘|Èc€60 xt£€À!j@ñ5 n|à¨À)ð‘n´`0Â:àA äCè@Bð)%ñG<äx€Žd‰‡<@G²Èɇ<ò9æCr”‡(–qðHÌ€8Ö’f@ÔÀZЄ ÀR5æÀãØ_°jë`Î6Z0€À Ô€8à!j`â€G7þpqŒc-ãÐÄ:à±xˆ«øÀ°SxãâqP#â †Æqˆ#ÌÀ:Ö’f@ÔÀ:à$8ðRX5ÛýÁ!à@j 8¶„ð †nGÀCëÀF^q¬E r‘„@%H†8à$8ÐRðÆ:þà€p X50ŽÐˆ#-@` j 4ð †Ä±æhÌAŽ8Ö2xŒâ<˜æ˜+〇8Æq¬9ë€Ç8àÁ1g-㨅7¼‘ ¸zÃâðF-Ö’þq” ù‡8Ö’x0zØÔ 6e=lJâà‘«à!Ž_üCëXK>\q¬ƒâpÇ;ÜZ|l* !ÐCôqÀ#ð<ÖÁQ ƒXË:ÄQ¬ek sÖqäƒ9ãȇ8Æ‘q¬ek<Æ!WÁCð<ÄqÀCã@Î8òÁ£q¬EðÇZ˜Ã×µ¬CkÇ8Ö2x¬Cë@Î8ò!Žq¬Cð`Î8Ö!ä0âàÑ8àáª|ˆ9ã€Ç:Äq¬eðXsÖ"xˆâX‹8@ñxŒCù€Ç.~±‹_Ôâ»øÒ.` ãþZÀøµ€ñ/b ã_ìâ»øE-~ã_ìL»¨ŒQ‹]|iµ€ñ/`ü‹]üb¿Èñ.~±‹ZÀø»øEŒkñ ×b_ÚÅ/jãZÔƵØÅ/jñ‹]ü¢»øÅ.~±‹/íâ»øEŒkñ‹]üb¿ØÅ/j±‹_Àø»øÅ.~Q‹]ü¢»øÅ.jã_좻øÅ.~Q‹_Äø0þÅ.jã_좻¨Œ±‹ZübµøÅ•wQ‹_ìâ0þÅ•ãZ좿ØÅ/`ü‹+ÿb¿ˆñ/bü¥ÿ¢¿€ñ/vñ‹]ü¢¿ˆñ/vñ ÿƵØÅ/jqåZþìâ1þÅ.¾ãZüb-ÌYÇ2FÛ­9 8â!Ž|ÀCðÈsò±æÀƒ9ð <ıqŒÌÇ:Ö²q¬c-뀇8ò±x0g-âX‹8Ö±–u CðˆŠ<ž ™gä ø€‡<ò1‘x¼œ"ûÐÇÏõ!}ð|"øG>àyÀ#@×G<ð‰ÄãçùˆŠã!xäòÈEä˜yÄCXŸH>äxÀ#ù˜H<ò!²¬CËȇ«à!޵¬ëÇ:ıq¬̇8à!x¬âXÇZÖ±æÀCë`ÎZÄ¡^q¬EðG>Äq þ²G>Ö!xhBðÇ:àŽÛÁcãÈÇZÄqäc-âXË8òÁx¬C\ÌGhà!Ž}#çv̇¸òoˆc-ŇÇ:Ö2q¬Eã€Çíà!޵ˆãÅZıMÀ#4â‡8àq;qÀc<Ç:à!Ž|ÀCãÇ:˜cò9àaÌEÖÄeàaÖbƒ9ÖbàaàAÆòAÌEàAàÁUÄÆ!ÄÆÄaàaòACÆ9Äa-¦AÖ¬D!EaàÁUàaàAÖBÆaÄa-\9Á ôÄ A6eôþÀ ÖBÆÄ!Öbþa-nEòaàá4AADjaB`SÄa¬ àAn%ÖAB@~ÆÄ4a˜c-Öa-ÖAàaÖBÖÖaàaàAà9àAà!àaàACxDà9ÖÁUà9àAxdxdà9àaàaÖBà!ÆÄÖ9ÆÄaàAÌEcÄa-Äa-Äa-ÄÄ!ÆÆa-Ä9˜Ä!ÆaCàAàaàaÄÄaþa-ÖaÄá*è±þ¡þ!þ!è±þóá*úaúq ¯‚+ò r óá ¹â*¸â*òá*úáú!®¢²’ûa#ÿ!²þ¡<òúûá óûá ûáú!÷¡òá*úá*úa ÷áú¡ûáúá*ú¡ûá ¹â*ò¡ú±ú1Jò*úóá*úó¡<²úQÖbà@Aƒ9xDàaÆÄaÖa-ÆAÖBƒ9Ì…9Cà9àávÄaà!4Ä9ÆÖAÖBÖAàaFa-ð¢B("ä!îä!CàáåàA#àAâa"àAþð"âAàAÖb"xD°n"°ä!^.âAà!àAàëà!à!*à!È‚"â,à!àAŽäâA–!Æa-˜#4àaàAàAÌEà9ÖbÄÖACàaÖBàaÖBàAÖBÖbcC àÁUà9@AàAÖ"4˜cÄaàaàAàaÖAàaÄÆ9ÖÁ\˜ÄÄe-˜ÖAÖBcàAÖBxdĘÃ\ŠOàAÖB cÖ4!4àaàa˜càAòaÖBàþaÄ\ÄÖa-ÄacàAÖbàaÄ9ÄÖ\EÆGÆ!Æ9à!\9ÄÆ9ÆAÖBàaÖBÖB\Öa-Æa-˜9Æa-ÄGâa-òa-Äa-Äa-\Ä9˜9ÆÄaSB@²9ô 6Åà!ÆÖaàaváÄ!Äa-ÆAÖAÖaÖÖaÎò!±ÄÁ B`à!ÖAÖÖ8`Äa-ÆAò9ÄaÖBcxDòaòAxDÖb˜c-ÆÆa-ÄÄÄ9Ä!þÄÁ\ÄÁUòaÖB\CàAàAàaÖAÖBàaŠGÄÆ9ƘƒGÆa-Æa-ÄÆÆ!Äa-ÄaCàa˜càAJFúAàaòÆÖÄÖÄ9ÖÄ!4àAàaߘövàacßàABÄ!4ÄaߘcàaàaòAÖBšv-Ä!Ö9ÖaòAÖbÆ!˜#4àaÆ!šVàaàaÖbàaà9à!4àaàaàaàA\òAÖ¢i÷MòAÖaòAàaàA\Ö‚9à!4à!þ4Ä!4Æ!˜VBƒGÄ!4Æ!ÄaßàArCÄÖAÖaòAöMÆ!ÖÖa-ÄaàAò!4àAàArá9ngòAàAà!4àaàAà!4àAà9BCÖAòávÄ9Äa¦aÖ‚9Ö"4ÄaCcÆÄa-ÖBCÖbàaxävàACàAà!4àAÖbàAàAÖBàaàA¦AàAàAâÈä!ä9òa-âäðAÖBÖBàa"ò!Ö"àÁäÁ\ä¢b-&‚,äAŽòa-Èþðä¡däää(ääa-Þ&‚¯âa-äääa-4aÄaxDÖAÖ9ÄaßàAÖBÖAÖBà9x$4àAàaÄ9Äa-ÖÄBcàAàáÄÄ94ÖÖÄaÌ…9Æ9Äa-ÄÄaàaàAà!4àaÖBJFÖ"4øjÖbÄBC½\ÄA½ÄáÄÆ!˜C˜Äaòa-ÄÖaà9ÖBCxdÖbàaà9à9ÖBÖBÖ‚9àAàAÄþƘcÄ9Æ!ÄaÄaàAòaÄaòÄa-Ä!Æa-ÄGÖÄ…GƘƒGÖÄa\ÄÄa-ÄÄ!ÖBàAÖB\àáÊÁ¬@Ä!ÖBÁ àAÆaÄÖ9òaòÖÄ9Ö˜˜ÃUÊAàAàÁUÖAàaÄÄ!Da!àAà94ÁUÄòaÄÖÄ!Äa˜ÆAÆÆAcàacò9àAJfÄÖÆÄaÖBòaÄÄGÆAàAàAÖBþÖBÖ‚9Ì…9ÖBòAàaòaÃUà9à9ƒ9òaàAÖ‚9cÖa-Öa-ÆAàaÄaÖâvFá˜cÆ¡øÖBCà9à9CàAàAàA\àA\òAÆÄ!4˜Ä˜ÄÄ!Ö"ŠoàaĘ˜c-ÄÆA\àAàaà!4ÄÖa-ŠÆA\à9àáFá¡øÖ‚9à9à¡øcàáF™ÄÄa-ÖÄÆÄ…GÄa-ĘÄa-ÆA\àAàAà9àAàAàAÖĘþÄÄĘ˜Ä!ƘÄÄaÄÄòAàaÄe-˜nt-˜ÄaàAÖ‚9Ö9ÖBàAàAÖ‚9àAàa˜9Æa-Bc4AcÄ9ÆÄa-ÆAàAcàaBÖÄÄe-Ö9ÖBàAàAàaÄÄBƒ9àaàaÄÖAcFGò¡d&9äää9ðäÜAàáÖB#ÖBàa"àAàáÖða-òa#øJàÖà!àAàÖÂþÖÄAàAð!x„"ða-âa"àAààAà!àA¦ABCàaÖ"4ÖBà9ÌEÖBxDà9ÖACàaÄaàABCÖ‚9CÖBàAÌEBCÖBÖBàaÖ"ÆÄÖACà9àA˜v-ÖAà!4Äa-Ö9àaÄn…9àaàaÄÄeÄÆAòAcà!4àaÄÄeÆAÖa-ÄàAàAÖbàAà9ÖbÄÖÄa-Æ9àaàAà9ÌEÖÖa-Ä9ÄþÄ!4AòaÖbcÄaàAà!ÆÆAàACÖb˜c-Æ9ÆÁ\Ƙ9ÄÆ!4Äa-òaxDÖbàa\E½˜9ÊÖ9Äa¼Äa-˜c-ÆAváÖa-˜cßÄávÄa-Ä!Öa-˜ÄaÖBÖ"4B`À\4AòbÜ:qðà‰·nݸ|o¼qù<8Îá8qãà—¯à8xâÆÁË'n¼uâà‰ƒ7®¡8‡ðÆWP͂⎃7ÞÁuâ ŽË'n§¸q ׉OœCqãò‰+xž¸þ‚âà‰ƒ·î ðˆ8ãÀsP>Á3NAâ4$<â4´<ë4´NAâÀ³<â4$<â´< ³Œ&ð¼ãÐ:ùäãP>ñ¼<âþäÏ;;É#N>ñ„öâ;½SP<òˆ“h ­ó¢Còˆ“OAâäS<åS8åÓ8;½C“<âäÏ(Ó$T8눳Ž8ã$NC눓CãÀ3MâÀ3<â¬ÓPBð¬#NAâtPCâ8$<i"Î:ðˆ³<ã$N>ãÀ³ÎA­Ó8­S Á#<ëÀ³<ëÀ#NAëˆÏ8ùˆ“OA5$NAë4$<ëÀ#Î8ð¬3NAâäC“8ùÀ³Î8iâÐ8­ãÐ:T8ùtPAâ´<â4$<­SÐ8£ <ëˆ3<âÀ3<âÀ3NCëˆCÓGþCÓ8ùŒãtPCâŒS8ù¬#NAã¬sÐG‰8ðŒ“8ðˆÏ8ðŒC“8ð¬Ï:%”8‰3Ø.ÿŒÏ: ù8ðˆÏ:%8ðÄ#<ëŒÓ8ðˆ‚(Ë0À8â$Ž&‰ÓÐ8 Ïaðˆ8 ù·NCã84Ž8ðˆÏAùˆó‘8ùŒO>Á#<ë8$<ãˆÓÐ8âÀs<4<ãÀ3Ž8ã4ÎAðˆÓÐ:T8ðŒ#NCùˆ3<ãÀ“Ï88ðˆ“8ã4´<â8$NAâ¬Ê?ðˆ³<ã4NAþÁ#<ëÀ“þ<â„¶NCëÀ3<ëˆãÐ:âÀ“<ë´NCùˆ³ŽCÁ³Ž8­Ó8ð¬S8ëˆÓ8 ´NAëÀ#<ë„6xˆ£!ã€Ç8h"ކŒCðGAÆQ„Àc YGAÄqˆ£ ã€GBü³xˆ GBÄÑqÀcY<Rq4dðÇ:”T„DððCÆqÀcðÇ:q4$!â IBàq‡ˆã8HAı“uˆã<Ö!xŒCðX<ò!š¬# €‡8D3xŒÃ!)È:ruÐDYÇAà!Ž‚$DY<ÄÑqÀþc Ç:ÄÑiŒòL>Ä‘uˆ#4‰<äñŽ‚àñ  > ‚qÀc8 >"Ž‚¼£ ñM>v’‚Èà yG<à!x¸ƒ&ï(È;â|Dš˜†CÄ|Œ£!ëGAqˆþÇ8Ä1ކˆ£!ã<ÄQqd;9<Ä‘qˆâ(ˆ8@!Ž‚¬)È8ÄqdðÇ:à!ŽqìD ñ<Öáx¤ ëGAıxŒƒ&âXGAÖqŒC <ü“ƒÀã0<>"Ž|ŒãÐÄ: ⟂ˆ#! 8ÒqÀcþð<Ö!Žu8dÇ`qÀcÑDAò1xø§ â€Ç8à1Ž‚ˆ〇8òñqÀCðÇAÖq†ˆã(ˆ8’qdâ€Ç:à!Žu$â€Ç8ruÀcðÇAò1ކŒ£ ã€Ç8 "Ž„ÀC〇8à1qÀCÙE?uˆƒ&â€Ç:ÄqÀc <Ö!Ž|ˆcYGA80 d0ù€Ç8 ¢‰uäâ€Ç8ò1ކˆâȇ8ÆQqŒƒ&ã€ÇA "xˆc'ã€G>ÄuˆcëÇ:"ŽqÀc9HC2˜qÀCþãÈÇAà‘äÃ!ã(ˆ8à!Ž‚Œ£ âÈ<ÄqxˆâÇ:ăŒc'â(ˆ8à1‡ˆ )(þ!x¬Cù<ÄA“uÀ#!â(È:à‘'dðXÇ8à1xˆc <ÖQqD〇8ÆqˆcðÇ8Äq$!ðXÇ8à1xŒã€Ç:à1Ž‚ˆëGAâqD <>"Žqˆâ<“ƒ|ã(ÈaòqÀcÇ8 2xäë<Ä‘‚dð‡CÄqìdð<ÖqÀc Ž×q¬Cðþ8<Ö1x¼:Ç〇8Ʊ“uŒãȇ8౎q8dÉ1<Ä„Œã€Ç82xˆ)È8 2xˆ#ÇG>à1Ž‚Œ#ð<>Òq¬â@(ÖQuŒâ€Ç8 "x¬ãØÉ:Æq8DiÈ:²x¬Cë"Ž‚¬CIâhÈ: 2Ž‚¬â<ÆqÀcã€Ç8 "ކÄ!ãhÈ:ò!x¤ â€Ç:Ä1Ž|hbiˆ8"xˆ£ âGAÄuÀC4<ÿ¬C GCÄ‘ÿˆCY‡8#~xˆ£ âGAÄ‘xˆ£ âÍA2qŒcâ<Äëpð°ãë1â@â0ùPëpðpðpð  !ãPâPãð þðp»ð !±ð° !ðpð ð0 !ð°ðpð ë !  ËÀ0±ù  ±ââãPâPQãp1ð !1ð°ð0ð0‘ãâã ðþáÑâã ð0ù0ð ëÐãpëã ð ð0ð 1Qù  !ðãàùpð0 1!ðà1 ÿð0QâÐâ°þë ~‘‘þù ðpðpðàðpðþëPù0âPãâ°âþ‘ã ð0þQ Qãp1âëpùpùââù0ùp ‘âââð1!ùpù°‹âë!‘âÐã áðpðpð°‘ââPââP‘ éù ðpð  â±ð0ââ0âë ð0þëpùàù ð0ââ°±ëàð ë0â°ãpù°ð ãPãPË ë ðþ 1ââPâãâ0ð  1âPâë ë ð !ð ð°ðpëPù !ëPâÓ0 â ððð ;!4ñð ñ0â4!ù ñë ññ4 !ñ;!!ñâ@â ñë0ðð4! !!ñÀLËcð ëp‘câPâ0þQQâPù0ð á±âPëPù0ð0¡ ð ð ð0ââàãÐâPã ð ù0â»¶þâ°ãpëâ‘âPâââÐáãâ!ëâÐâPëâ°â  ±ð°ð ð  ±âù0âPQ!ðp;±±ð  1!£ ;qƒ1âùðð°ãPâÐâãâ@ãââPù04±âÑùâã !ðð !4!1‘âÐã ë0ð°!»ðð 1ð0â áâþâPë0ë¢ð ŒùP1 ð  ±þð ƒ!ð0 !ã!ãÑãP±ð ±âPÑããÐãÐãðpë ñùPãâÐÑã1!â0 ±ââ0ð°‘1ðpð ;1‘ ÿp4!ð ã!;1± ±ãàâp²ð°±ð Ñãâëëàâã ±ãâ0â!ð ð0 !±±4±â°qëâPãëëãâÐãPãþ0ââð0ð°ð0!;!;!±!!ð0Ù¹'»;±ð0ð01ð ð°ð ±ð ‘± 1!ð0ð0ð0ð0 ! !41ùàã±âPââð Ó ëââ0ùâPâà1ðâââð ããQ ëÐëPâÐâPã ãP !ð°È  ñpâëPâÐââââââÐñ ð ïÐëPâþâPââàâàâPâPââð!3 ï@ââëâð  !ð ðââëÐâ̤ ÈPâÐë 11ð0;!;ñëp! !ãPë01ëàð š  !ùâãPãââëPâ×âPãëðùÐãâ@ããPâãPã@þÑâð0 ±âPãÐ ¡ ±ð ãÐë0±ð°âPâБð ! !ðpëþë0ð°¡ ð0ð ã  1!ð 1ù ð0ùð1áð ð0ðp!ã°â0ð ëâë ù ããPãð 1ù ð0!q‡Qã ùPââлбãâð ð ð0';ð0ð0ð ð ë ! ËÀãã°šÐã 1ëâPããÐâ°ð0ðâÐãââPâPâPù ë°ù°1ù0Qâââãþàâ!ù0ð0ù !1ð ð0ð ð ðâPùðâ° q ±‘âàã ð0ð0âPãã ð!ð0âT0âãÐã ;11ëPã !ãàâÐã‡ãâââã ëPâãããPâ°ð0ð ù0ð ð°ð0ð !11ëã°ð0ðp 1ù ù0!ð°ð ëpñâã0ãP 1âãþÑâPþãPã 1 1ð0;±ù0ð0ð0ð0ð0ƒ1ð0ð0ð0âþâPâÐãÐQâP !ð0ëãââPâ‘ãp41 1ââ°ð0ââ°‘âàQË ëÐâ°ãPâ0ùð 1ðððã ëàâPãâÐã  !ð që ±âÓ  ±âÐþââÐë@âââð ð ð !ð ááùp!±âþâëpð ±âà !ð !ù°âPâëPâ£ÀLÓâPþ‘ã 41ð0âãÐâ@ù ð°âçââ ð01 !ð  !ù0áã 4ááëâ°!ëàããP±!ðàð0ð  !ð ððã ð°ðàðàš0ù0âââã°!1 ñ1ð ð0â@ëâã ù0âãšþpðã ð0â!që±âãAã ù !1ð ‘âëPã°ð°ð ñâ°ãââ°ðpð0ð ððð ‘âPëð1ð »Ðð0â°ððð !ð0ð 1â°ù ~1£€ Œ±â0£0â0ùPãâ°ââ°1!Ñþã0â0ëÐâãã°â0ðâÖ‰ƒo\AqðÆ7ž¸‚âò‰ƒ7n˜ðÆå7êß:qð@ÂóÏDPx ÇÁs¼qð@Â9N\>xâ Šƒgqx ¡ŽOà’‚ˆâ€þ‡8à±ÀC0Y<Ö,DA<ÄqqÀ#KðX‡8`²qÀ$ðGPÖ®­£  8à‘%qÀ$ð<ÄQÀCð<ÄqÀC\<Ö!Ž‚¬ë€H ’%xˆcðÇ: "Ž äc ‡8ÖQqDð<,̘E<,qˆã` <ÆEGAÖ’uˆc ‡8à!Ž‚€ëLÄq¬â(È:‚²qÀDãI>ÄÀ$ãÈLAØqÀ„-PGA@Rq¬£ ‰8ÖQq¬£ þ<@qÀCã` <2xˆã <Æqˆâ€Ç8@جã¢Ç:ò1x°ãÇ8Äq$<,’™‚XDã€Ç8@qŒ$ùÉ:à1Àƒ-ë(HÆ!xˆ#〇8à!Ž‚d¦ GAıxŒCð<`#xˆc EÄ1xˆâÈÇ8àaŒCðI>Æ!ŽuÀcÇ8à1qÀCëÁ(ÁÀCë€Ç8FQqäCLðG>Æ!˜°ãX‡8à!Ž ˆãȇ8Æ‘$PÇyÄqeÉ8þÖ!Ž‚Œ 8ÖqÀdðGPÄqÀCùLÄuä 8`qŒëÇ8 "ŽqÄ"âȇ8òQ®âã€Ç8àa‘‚Œ&È<ÆqÀcðLÆQf @ðX<Ö‘qdðGAÄqžudð <ÆQqPCã€É:Î#˜Œ#â€[`’q@e£-È:à!˜ˆâ<Ä1xˆë<ÄqÀdù€Ç:ÆuÀc0<ÄuX¤ ã€H bxX¤ ã€Ç8Ä‘ ŒëGAÖqeã€É:‚þ2¨Œã(È8à!Ž ˆCLã(Hà1Ž ¬ã<â<ÆQqŒâ°È:Äq@$<Äqä&â(ˆ8à!ŽiŒBðTÆ‘ ˆ# 8 "xä£ H`²Ž X¤  8 ²ŽqÀdA<²qÀCðX<Ö!x¬âXTÄqÀ$ð` <ÄQqÀCAGAÄqÀC뀇8à!ŽuÀC뀇8à!˜ˆ&ñGPÄQq$ 8à!x¬CðX<ÄqÀDë€[Ö!xŒ£ ëLÄ1q¬CAGPÄþqÀ$çÉL@qä Ç8òÀD〇8à’‚ˆ&ã€G> "xˆ£  8à1xˆâ€Ç8 ’™qDGP²qˆiAYGAƶÀDGAÆqDãŠ8 2xˆ*âౘ@²x€dù€‡8à’‚€ùÇyÄŒCPÇ:òqÀcAY<Äq¶DãÈGAÄ|¬ãX<,’‚ˆ& Š8à±qDðIPÆ!Ž ˆ 8à’‚ˆ 8‚"xˆ#KâG> 2Ž‚Œ#ð<Ä1Žþ‚ˆ 8à!ŽˆbŒ<ÄQuЄq‡u€‡q€‡qxXq€q8q(q(‹€ q(qX1x˜‡q€‡q(q€q€‡q` ˜È˜q(q€‡,q€q€‡q‡ °ˆ‚‡q€‰qXq€ X‡q€‰|‡|X‡‚Xx‡‚°x x‡‚xxXq…~ xxx‡‚ȇq¨x‰‚xxq`†j€?€8…?PÀq †ˆ x‡mh#q ˆ‚ þ¸€€pY€‡qx˜x ®Šq q€‡q‡‚°x‹x(ˆqxxȇq€‡|‡‚‡|x˜‰u°ˆ|‡u€‡q€‡q˜È’| x ˜qȇqȇu€‡qȇqȇuxq€q€‡q€‰q(q€q€‡q‡q(ˆq€q€‡q€q€q€€(q€‡q€‰q˜‰ xq€‡q€‡qx‡ xxÈq€‡|˜q€‰q‡q€‰qȇq€‡u‰‚x‡‚q€‡u(ˆþi…‚‰u€‡q‡ux‡‚‡ x‡u X‡ ‰uxxÈq‡‚ ˜Èq(€qXxXq€‡x Žƒ7Nxãàƒ70Ÿ8xëŠË7Þ¸|ÇÁ7î 8xâÄ—O\>ƒâ—ïà8qðÄÁ—'xãà‰Ã¹Þ8ƒâFýïåº@ºàÀ¯Ê0àyC« ŽÁqùà1 Žš€u𨠈'ŽšxÔ¤&@³àÖÁc@µâà­£ž8ƒâà „'nÜ:qð^ÂË'.ßÁuâ Š38Žè8x'áþ38Π¸|ðÄ['ž¸qðÄÁ‡s\>qãà‰#:.ŸAqðÆå—ž8x/ÇÁ7ž¸ƒâà½o\>xâÆ…÷Ò ¸ðÆÁ7îฃãà‰Ï8ùÀó<ëˆcÐ8ƒ“8DcÐ8ðˆÏ88‰3<ùÀ3<ëˆÏ:âà4N>ãà$ÎA⌳Î8ð¬3N>D“8ðˆ³Ž8ËŒbÐ:“AØp°Ž8㈃ÓKðŒÏKðˆ8ðP#€8ã%Î8ðˆÏ8ùlÃ<Ô0ŽAâä5ˆÏ:QÀ:â¬#<âl£‡8ãÀ³<ë 8ëˆ3<Ô Î6þz¼´Ž8‰³Ž8ðˆc8‰s8€Â³Ž8‰c8ðˆèKðPÀ:ðº5$<ëˆ3ÉÀ³<â¬#ŽAâ¬#6¬#Në0@Ën0Œ8ðŒ“8ã$Î6zŒCðˆ3N>/Q#À8ÞˆCù tÐ8ç   <âä8ëÀ#ŽAâõ’A✃7zÀ#ŽAâ5<â 8ù$ŽA㜃7zä € ÑŒ“8‰Ï8­5œƒÁ3ŽA- 0€8ðŒc8ãÀ3N>âÀ£Aâ¬óÒ8ðˆ“PB4ãÀ3Î9(#€8ð¼”þ<Û02ŽAâÀ#Qè ‰ÏKðŒ“ÏAë$<ã¬#ŽA/s3 Œc8«|0@% 8ðj8ð`Ã8ãÀ“8ãÀ³ŽAÞh0€8½d8%AÁ”Í:ðXƒÄÏKÛ 1€FDÍ,k8ã$N 8ëÀ#N  <âÀ#ÎIùˆÓ‚ˆcÐKó ¬8ðˆ8£âÀƒõX`8ëˆÃL!€² #Œ“Ï:ðˆ£É8ðŒÏKð¼$9ˆ8p²ŽˆÃ /É<ÆxŒÃ <Äaqjâ€Ç8Äþu$/9ˆ8à1øŒCë€ÇIà1xŒâXÇ@^‚“q¬ã€ÇKà1xŒ'ù<Æqq¼dðÈK2x$â€Ç:@ÑœŒ³€<Äu€#ù<à]ÀÁùÇK˜1pP#€¢†à!jÔ@4‹ˆ#H<Ä‹ÀƒXÇK¨!€2Ž£ŒùGó±xˆ£ŒðÆ!xˆ 8Ê8q¬”ã(£8à1x¼”â‡&Å—hò%ðGňë(ã:Ê8xŒCë<’RÆqˆâX<’²xŒCð‡8ÖqÀceD†&^qÀã$ð †à‘xŒ£ŒãФ84)ŽshRÔ@>Æ!Žq¼âФ8Öñ’qÀƒ€Ç8à1qP#ð<ÆuPCš<ò!xäC€z <ÖÊ—P#ðÈGó(qhrð<q¬Cð<Ö!xþ¼â(£8à±q”qâ †Ö—ÀƒGÅt @<GÅuˆC“âÀ†à!xJð`^b (0Àð<ÄqÀ#âȇ8¨!xˆC“â †Ê(j@ù<ıŽXL@ðXÇ8Ê(PÂCð(½qÄbâФ8à!xŒCãȇ8ʘu”qGÇ‘qÄbI‡ F‘ kh€e‡8à‘MŽCÔÀ:¨!qÀCð<¡ ˆ#ã<ò1q¬ãÀà  Ž2æce´Á(®a0€ŠÅ¨q”þqðH <ÆJqÀc/‰Åò!Žq âXÇ8ÄqÀce‡&ÅQÆ| âÂ4ÉŠìAÖ¸’1xˆC“/ÁFò1xˆ/)#Nq€Re‡8àaƒQdÃ#`@±pkXc€È‡8°€mXc€€5àq¼$âH>ıU`ëФ#Tqh2/‘µ8ö  ˆC“âˆ8²‘'ˆâå8ć@ë F¼1Ž—ŒC“ë`B d0âXÇKÖ¡ qÀCY†‡8à1xˆâ€ÇKÆ‘q”Qe<ÄqÀãþ$ðx <Ä‘xˆ£Œâ€Ç:Æ‘x¼dÝeÇ8Ê8Ž|ˆâ<’xŒëȇ8àñ’|ˆ£Œâȇ&ÅqÀc/‡&×—Œ£Œ²†GRÆ‘2Žãȇ&_qhRð5(þ!ŽqÀcðÂ,¤ IqÀã%ðÇ9¤0 )ˆCÖedFÄA ÈšX<¨pP#,Ç64„uˆÃ,G84ÀqPCš G¢!Ž|ŒV‡8°aqÀV<ÄqäCe‡8à1qä/Aï8౉ÃCš‡8Ö=Ž|ˆë@ïKà‘xŒ#þâG>౎2Š£Œã€Ç84)xˆ£Œë€Ç:àñ’2Ž”âÈÇKÊ(Ž2®âÐä:Ä¡ÉqhRãÈ<ÆqÀcùG_JqŒ£ŒâzÅq”QðGÇ‘q”Ñ8ÀÃ8”QRˆÃº<ˆ(‰ƒ&<ˆ<ˆC>ÀÃ:Àƒ8Àƒ8ÈÚ4€Bl@4ä5ÀHÀ4@4@ÈB>l @Ø8À5ÀHÀŒ<ˆˆ<ˆÃ5À8äƒ8Pƒ”Ñ(@ @À5@HÀ”Ñ5À8ˆC:´ÀÀh<äÁˆÃ8¬%0À8„C þ@l@4ˆÃ:ˆÃ5<ˆ<ˆCùB€<üÄLÀÃ8„ÃÀÄÀ5 <ˆ+À)€Ã80ˆÃ:ˆCC>ÀÃ:À5$38Œ<¬ƒ8h’8¬ƒ8øB$Å5À4@Ø€8À5 €8PƒüHÀDƒ8”Ñ 5 ÀK¤Ã @l@4ÄCL€&Q¬C:|ÀÀhÃ@äƒ8ÀÃ:,€,ˆ<œÃ<<ˆÃ:ˆƒ L@>ˆC8´ÀÀ¬@8€,”‘8”‘8PC0€<Œ<ˆ<Œƒ8äƒ&‰Ã8¬ƒ/€8þxÃ|Â8ÀL<œ|Â8œCL€8PƒÀƒ8¬<Œ<äƒ8ÈÚ80ˆÃ:$Å80ˆÃI¬6X8¬Ã9Œ3€8Œƒ&%3@4ÀÃ:`ƒˆÃ:ˆC>PC0C€Ã:PƒÀƒ8¬Ã8äÃ8ˆ<ˆ3@ŒÂ/0ÂŒC­ƒ8€‚8Àƒ8ÀÃ8ˆ<ŒC‰C>Œƒ&‰C‰Cƒ8”Ñ8ÀÃ8hÒKäƒ8 ×8h’8h’8¬Ã8h’8ŒC(‰<Œƒ8¬<Œ<äÃ8ˆC> DR¬<ŒC­<ŒC<ŒC‰<ˆƒ&åÃ8ÀCR”Q> „þ¬‰ƒ&‰Ã:ÀÃ8ˆ<ˆÃ:ÀÃ8h’8ÀÃ:hÒ:ˆÃ:ˆÃ(üƒ8Àƒ8””‚HAÀT¡*HÁ,HA<ˆ<¼38PƒˆŒƒ8ä<Œz‰Ã8Àƒ8ÀÃ8ÀÃ8Àƒ8”Ñ8ˆƒ&ƒ8ä<Œ<Œ<Œƒ8Àƒ8¬<Œ<ˆÃ:ÀÃ8€Ò@ˆÃ:Àƒ8¬Ã8ˆ<ˆCƒ8”Ñ8ÀÃ8h’8Àƒ8ÀÃ:hþÒ:ˆC>Œ<Œƒ8ÀÃ:hÒ8”Ñ@hÒ8ÀÃ8”‘8Àƒ8Àƒ8Œ<ˆÃ:ŒCRÀƒ8¬ÃKh’8ÀÃ8ˆ<ˆƒ&åÃKÀƒ8hÒ8dÙ8Àƒ8¬<Œƒ8äÃ8¼D–‰Ã8ˆ<Œ<¼D<ˆ(½„&<ÈZ­ŒÃ:¼<¤Bh\Œƒ À8„ƒ€8PƒÀƒ%À0ŒÃ:ˆ3€8”ÑK¬Ã@Àƒ7¸ 0Cˆ<ŒCCÉš8ä”Ñ8 @4Pðø‚Œ6€6ä<ø‚ˆþ58€€Ã:Œ<Œƒ¬‰3 €8”‘¬‰3 €8äƒ8¬<À<¬ƒ80È<ŒÃ:h’8 ˆCh< DH3ÀKPCP€8ˆƒ&‰3ˆÂ20BÀÃ:ÀÃ:Àƒ(hÒK”ÑKŒ<¬ƒ8ÀÃ8”Ñ8hÒ8äC%E>Œƒ8hÒ:Àƒ8ÀÃ8ˆ<ˆÃ@”Ñ8Àƒ8ÀÃ8äÃ8ÀÃ8ÀC>Œ<$Å8”‘8äƒ&‰Ã8¬ƒ8ÀÃ8ˆC> —8”Ñ8ÀÃKŒC½Ä8h’8Œ<¬ƒ8€Ò8ÀÃ:ˆC>ŒC–­Ã8ä<ˆC%Å8€Ò8ˆ<þˆ<ˆ<€Â?Àƒ8Àƒ8¬ƒLÂ)LÂp—B)œB)LB) B+L‚ˆÃº‰C½<$<Ä5<¼„¬<¬<ˆƒ&‰<Œ<ˆÃ:ˆÃ:Àƒ8¬ÃKÈÚK¬ƒ8Àƒ8¬<¬<È<ˆ<ŒC<¼Ä8ÀÃ8”‘8”ÑKÀƒ8Œ<Œ<ˆ<ˆ<¼<Œ<ˆÃ8äÃKhÒ:ŒC>ˆ<ˆ<ˆÃ8ÀÃ8Àƒ8ä<¬CC>Àƒ8”‘8ä<¼D>¼<ˆÃ8€ÒKŒ<Ôª8ŒC>ÀÃ8ÀÃ8ÀÃKŒ<ˆC>ˆÃ8ÀÃKäÃ8”‘8h’8”Ñ8äƒ&‰(ƒþ&C>h’8 Ä:”‘8ÀÃ8ˆ<ˆ<Œ< <ˆC­<ˆ<¬ƒ8”‘8Œƒ&‰<ˆC‰(C>ˆ<Œ<Œ(<¬C>Àƒ8Àƒ8ÀCR,Ã(ˆ3PDC>Àƒ/$ÈC,$À:PƒÀ58ÀÃ:P¬C8@4”‘/PCÀÃ: D>ˆ3@©ˆC7 @2ˆÃ8ÀÃK0ˆÃ8È5@­ÂÃ8°‚àˆÃ6@2ÀC>øBÀ5À@4ˆC>ˆ<þ0ˆÃ8hÒ8äƒ8xC'¤<0€ÃKŒ<¼„¬Á+.¬ƒ8ì5€6¼„/$¬óƒ7ž8xãà‰{(Þ8xã°Â7Þ8qùÆ=÷0_FxâòÁ÷phÀÈgœ!Ї°‚GV8EœqàYåƒ68j¨Jj‡€cqª‡°‚gq§þ’‡™Ä'qV8EœuÄ q¨ à q¨@ÔÀ:¨qÀcÔÀ:Ä14€ƒXÄqqdù<°2xŒâÇ:JqD!Ç:°rqdë<ÄuŒâ@’8à!ŽqÀc<ºr¬$#ÁJHÆ|`ëÀ <°qÀcùÀ <Æq’‘ƒŒcâ8È:à•‡Œ#〇8à1qŒã 〇82xäã€Ç:Äqqdù€‡82xŒã âÉ8B2qdâxHFà1Ž|Àcù€‡82Ž|`eðXVò1އˆcâ8È:à!Žƒˆ#âȈ8à!ŽŒŒ#âxÈ8B2އŒâÇCÄ1Ž|ÀCYÇCÄuÀCÈ…8˜!xP#¡FòqtcÑÀÊ8Äjà y5ƒÄ"ëÀFÄqbÔþ€8¨x„Ú€‡8ˆxˆã+ã ¢!xÄ"ð FàA Àcã FàDCð †àA Àƒ€GU¨!x„Ñ8ˆ/putåðApjâ †à±j@ÔÀAıqPCÇ: `x‚8¨!xT…€5qŒë<˜€q¬CÄ8°!q„€5já€6à!b`ð5uˆã! HÆ:°x¬CÌ <Öqt¢ë FÄ1Ž|œcÉ€5 Žp àXa†þ°rŽ$#€€G8p qÀƒ< xP#ùN•ƒ¬çDÄŽDcð Fà 8Cp8ˆ8àÁŒˆã8È8à±_` À ‹qÆqÀ#ã€Ç8ÄqÀCã€Ç8"އˆcÄ!$Äá!Äá Ī+àAàaÄ!$Äá 2Ä¡›bò++BàabJEàaÆá!Äá!Äaà+@¡°bÄòA.þÖÄaÄÄÖAàaà+àAª+à!ºâ!Öªâ!ÖA¢*àAÖaà+bÖá ÄÄÄaưâ Äá òaB+àAàaà+Ö!#à++Bà!#Ä!Æ2+ò!#òaBbBàAÖ+BàAà¡+bÄ2BàaBàAàAÖ!$°â Ä!$Æ!2°â °Ä°"°bÆAÖaàaÄaÄa"Æá!Ö+àaà!àaàaBÆÆÄ!àAà!ÄaþÆÆºÆ°â ÄIÆÄabÄá Æá ÆÖá ¦Æá@¨!àaà¡ ÄÄÁX@òÁ8A¨!àAà+àA¨X¶A‚Öa$aÎa@¨!à`àÁª@ÎÁ°â Ä À4 à@¨!ÄÄ`ÄAª`Îa¨AÄ *Ä`ÄÁX@¬a`Ä¬Ä .À:!´à ¨AÖA¨!Äà ÄÄà Ä!`þ²1ó à *ĺ¢!ÆaB˜!Äa¼ @ÖANAÎa@¨Aà`ÖÁz ÎÁ`àA¨!Öá °‚à+@Îáf€Æ¡PÄ!`¨!ÄaÄ+°!Ö¡ àa~ bJ@´aº¢aÎá@˜ª‚`àá àÖaÄaº°" `ÄAzÎÁ`¨AÄä+˜a¼+Ö°Á Æá²a¼Àa°Á Æ  paºþ‚`Ä€Äa4€ ƨAàaĘàA¨AÖ¡ àá~ àaàaJ@´º¢!#~@BÖÄaÐ`‚`ÄÁî@paÄAXΡÄ! Äá ÆÖás`!àÆá ÆAþ pÁ6uà 0¬aàà †´ÁÀ!Pa¬A@`ÖVB˜Æ+B˜²ÁÖÖ¬à+˜a²ÁÆa‚ b°Á ÄaÎ!–Áþ˜!¡ÀÁ4Äá!Ä€DaÆÖAàAàAB+BBàabòá!Ä!Bàabàaò+ÆaÄaòÆ!Äaò+àABÆòÄÆAbbBBDàaàa¢+òAbBÆá °bBBBBÆÄÖaÄaàAà+à!#BàAÆ!þ!$ÄaàAhuàaBÖÖ!$İâ!ÄòA‚VBàVáaàaÄaBÖÄÄþÖAbà+àAJeòá!Æá ÆÖAÆÄI°"$Ä!Äá!ÄIÄ!ÄÖAàAòá!°bÄİÆá ÄÖá!Äá!Ä!$°â Æ!à+àaBBàaBÆá ÄaàAÆ!ÄÅá Æá Æ!BàAà!"#Ö+àa+2İâ ÄÄaàaÆ2Ä!Æ!Ä!$Ä!$ÄÄÄaÄ!bÄÄHjò+àA–8 `¨Aà+à! Nâ`À¤þ`¨AÄ!$Ä!¨Aþ€ÀÄaà(€* ¨AÄÄaZ 8 à!°b¨!þ À°‚`¨AàAà€V»¡* ¬ Ä`¨A°¨!bZà @à`¢aÖa`€@Àà ¨AàÖá!¨!àVUàÖ+à!à¨A°¨!Ä¢`@Äa‚ 6àÖX* â@Î@¨!àAº¡*€â Äaà@þàa”@ÖaX8 â@Ä¡>`àN¨AàaàÁ‚à ¨!ÖþÀ8€â@à+˜LÄþÀü9ì@ °‚ÄapNºá6àĺ¡*€â@ÖâÁàa`aÄ@h+˜ÀÄ@ò!’:`ÀÁ”Öà lÄ@¨!àAà`ì@ Ö¨!àaþÀü9°‚€àAàáÀŸã Æá °bþ`àAàaVá 6`àÖaZ`àa¢`ád+hÖAààabÖAàA—•:Àa¬  Œ`Æa @Œà °á J@Äá ÄaÄa`aÄa Äb VÅÁ&İ‚Ä+˜!Àº J àa‚ @aaÄá!ÄABdÄá ºÄa2BàaàaBàa°Æá òaàAÖaÄaþbdà!ž °â ºÄÆÄá!ÆÄá ÄÄIÖÆ+àaàAàAJeÄá!ÄaÄòaàAàAà!Ä!$Ä!°â Äá 2Ö@áÖAÖÖá Ö¡+àa°ÖÄÄÆIÆá!ÆVáAÄö ÄÄÄÖÖA+àABbÄá!Äá ÆAbò!#àa°ÄÆòAàABBàabàaàabÄá Æá Öá Öá¹Æ!$ÄÄá!°â Öá ÆA.pþBòaBòaàabàa°â!ÄÆ°ÖaàAÆÆAÆÆá!Æ!ÆÄaÆIÖ!#Ä!Æá Ä!Æ!$òABº)ÆÄÄá!ÆAÆÆÆAàAàaÄIÄ2Äá!Ö!$Äabb4aÄaÄaÄá ÄòAàAd°â!ÄÖÄá!Äá!ÖºòaÖá!ºÖaàaº‚VBº +àAÖá H ÄÄaÖAâÄÄá!h+ÖÆAà!|!äÀþVÅá òa+àAàVá+İ!$ºâ °"ÖbàAàA‚Vá!°"ÆaÄa¢+Bòa¢+àAÄ+ÖAà! À°2B’¤Äá ÊÄa°À!ÄÖAàa4@àa¨AÄ®ÄÁÄÖaÖAÖÖûá+Æa4@ΨAàaàAl×ÄaÆÖAÖÖÆ à‰7ž¸uâà)\'n¸uëĉƒ'Þ:qðÖI„'ž¸uðÖ„HrYë*Ì·N¥B‰ ×I·þNƒ¬uð¨ p OA…ãÖI„'Îå8‰<ºø¯¤Bqë\æS9nÂu ÅÁ['N¥DxâÖ ‘tN¡8x%!ŠËqœ8y %’T)n¸uáIT Q¼uâB”O"Á3<â¬#ŽJÁ#Î8ðŒ“8ð¬#<ãÀ³Ž8ãÀ3<ëÀ#ŽJãˆÏ8⌳ŽD*‰3ŽKãä3N>*‰“BâŒ#ŽKÁ3Ž8ðˆÃÓ:ãÀ#þDË€’Ï:âÀ#<ë(4Î:𬣒8ðH¤8ã¨$Î:ðˆ³ŽBëÀ#‘K)$Ñ:*£Ð8ù¸<âÀ#Î8ðŒD.‰³O%%<âÀ#Dðˆ£Ð:ã¤3 <Öh<Á#ŽBâ¬Då#ŽB⬓ÏL*Í´<ù¸<댳<â¬D*ÍDÐ8 ­8ð@4N><‰Ï:ðHÄI.ÍäRc뀧8.‰£Ð:ðH¤’7Ä0 ’8ðŒ“<ã($<âÀ#ŽB)$Ž7 ‰óN, À#<ëÀ#‘BâÀ“–8ðŒ£8ðˆ8ð¤8ðH¤8*‰£8 ‰ãþ’D*‰D㈳<â¬#<ã¬#<3)$Î:â(´Î8â($N, ˆ3<“8ã($NRâÀ#ŽBâÀ³<ÁcÍ5â¬#<ëH8ðHô4<Á#D*I¤D ‰Ï:ð¬“8*‰8ëÇ8Ö1ˆ(Dð‡B qÀCð<ÄÁ“uˆC! Dà!…ˆC!âPÈ:à!x¬âHÊ8à‘qŒCãPˆ8à!…ˆC!3ÇLà!ŽuˆùPˆ8B0Š_0b.‡&$¢|ŒâXÇ8Ä‘q¬ãG>Ä¡qŒã€Ç8à!Ž|ˆc‡8þÖ1q(dâPˆDà‘qÀcð<Æq¸dð<ƉÀ#〇8’"xŒCë0A"‘uŒC<Ç:x2xD*<Æ!xŒC! 8²ŽQä3Ç:’²xŒâX‡8à!…HD!ã<Ä¡q¬C ÉÇ8\²Ž¤¬ã€Ç8²qÀC" ‡8à1ðˆâXAÄ¡’|ˆãPˆ8Æ|ˆcâPˆD"•ˆC!ùÇ8$âqÀcð<Ö!xŒã‡BÆ1xˆC% 8à!Ž|ˆC!âPˆ8ò1xŒC!ã<Äþ¡qHã‡JÆ‘qÀc ‡BÆ¡™Àcð<Æ¡qÀc& ‡BÄ‘q(¤1ð<ÄqäcâÈ<Äáq($ã<$²qD y<ò‚ÀC*‡JqÀCù‡BÄehb*Ç:ıq@Dë<Ä¡’uÀC"ëG^×!ŽuHD!âX<Æ‘™¨dðX‡8à!‘uŒã<Ä¡’|Ìâ€Ç:Ä¡‰¨dâX‡8Ö!‘uˆ#¯ Y‡8‘|ˆ8€l  …ˆ#¯âÈ«8H¢’¨dâÈë:Æ!’ˆC!뀇8T²þ•ˆ·ùX<Æ!…¬C"ðX<Ö!ŽuˆC!ãG^סq¤e¸‡8p«’qH„$ Y‡8²‰($â€Ç8òAÀAã€Ç8ıŽqˆâ€Ç:T2qäCð<ò!…¬ƒ€Cc"…ÌQˆ8à1xˆC%<ÄÁ_•¬C YG^%q(d&ð‡Bò¡uÀC ‘<ÖÑc•¬C <¨!€@ˆC%ù<ÄqÀ£$âÈë8"ŽqˆC!â€Ç:à!…Œ·ë€G>Ä‘q(DðÇ:à!Ž¼Šƒ¿ëÇ:Æ‚(Dð<ò1þxˆcâPˆ8²qÀcðG<ò …ŒC!ãG^סq(d*Ç:T"‘‹〇8à‘q¬·âPˆ8ªœW‚ˆC!Å21xˆc Ñ„B²q¨Dð<q¨Dð‡BÄqÀcð‡BÖq(DðG>à!•ˆ#¯ëPÈ:à!xHã<Æ‘q(D"*Y‡Dà!xˆcð<Ä‘x〇DÆqäc*G>"xŒâ<$B|H$ðhÌ8ò™à" ønÅ1xŒë€Ç:Äu¨d ‡BÄÁ_‰þÀcð ‰8à1xŒC%â€<Ä1Ž|ÌãÈë8à!…ˆC!ãP‰8T2Ž|ˆC!ã€Dà!Žq(DOËnÅ¡q(äi¸<Ä¡q(D*<Ä¡qä·ã€‡8T"xŒC!â€Ç8à•Œ#ãàï8Ä‘…HD!3Ç:Æ‘q¨dðG•%ÒãuŒ#ãPÈ:Ä1ÜŽ#ãPˆ8Æ¡q¨d*!È:Äqà6ð<Æ‘qâȇ8ø+xˆ#<Ö!Žuˆë˜(à±q(Dñ< uàvð‡JÄ¡q¬â€[ëâþâ°*±ð0ëâ â0ù â ±*!ð ëã 3±ð ð° ±ðpë¡â°â0ð *!¡â°â°ðââââ0*1ùë  !ù ð  !ð ð â°ð°â0âââ°*!ãââ âW1‘3±âpð ã 1ð1ù ëâ°âWâ O3ð ë0ðãð0ùâ(ð ð0ð ã°*!ð =&þë â ë ð ð ðpð ð ð *(ð°â ëâ°â°*!ð°=ö4ð ë â â° !ãâ°¡ã±ââ@ë  ! !ë  !ã ð ãù â â ë ð°ð ë *8ü%*¨ââëã‘Wë0ù ð  !ðâãâ±â°ð ãâ0ùââ!ð ù ë0*â¡âWãâ ‚ë ââþ°ð0â0ð0ð0ù â ° Œ0ð ð ¢ ù *1â ù ù0 1â âãW¡ã°¸µâ°ãã  1ð0â°ð0ð0ð *!ð ë ¸%¸5ð  1ð@â3¡ã  1ùð4ð0ðâ ù ë ë€[â°¸5âã ð° ðp 1ëââ âââWã ë âð0ð0ù ¡â°ð ëWâãã *! 1âã þ !ð  1ãââ ù ‘ã ã ð0ð ù ð ð0ð0 ±ð *1ââ â°ð0ð0ð ¸5ââ ë ã ë ð  !ð ð0ð0*!y%ë ð0âââ ã ð0 !ð0y5â°âã ù *1â°ââ âëã ù0ââã€[!!ð ëâ ãã ð ã ãë ù0ë ë ð0 š0ª¤Zª¦zª¨Zª£þª¨  €ª£Àª©: ¥êª²jª ª£Àª p«§: ¨: ¾ª  0¬¤: ¤: ¨: ¥ £`ª €ª£Àª£`¬š0 £@ª¢0 š Öª ¢@ª¢ £`ª£  ®ú­£: ¦: £ ê¯Ã: ¥ ¤: ¥ £* £0¬£@ª pª£pª£ ® à«  ¯§: ¥ §: ±ê* £  £  £`ª! ÈÀWâ  ð0 1â A*!ãâ€[âãâ â0ð0y%ãð0ð ð ð@ù Ħâ0ð ãâ0ðþ@ù ââ âë°´ââ@ù ¸µðð4 1ð°â0yµâãâð0ùâ ð(ð *!*!UP0ã O“ðâ° ! 1yEù ð ð ëããâ â0ùâ@ !ù¡ëâë0ù ‘Wâ@ë ð ù ð ð  !ãë âââ0ð  1ð *1ð ð0ð ð y5ã*1y%‘ð°ð ð0ü% 1=¶ð þð0ð0ð0ð  !*1!ù ñ4ð ‘*1 ! 1ð°âãë ð0ð0ð ù ùâWââââ0ð@ë ëâ ë€ £°ÿÐùðûðûÐûðûðÿ°ÿ°ý°ÿÐR,Åùðû°[,ÅûRœÿ°[Üý°Åý°ÿÐÿ°ÿÐaü_œu,Åý°ÿuÜR¬ÆRÜÿ°ýðÅù°ÅùðùðûÐRœRÜ_¼ÿ°ÿ°ý Åû Å•üûðjÜùðýðþù°ý°RœuÜû°Åù Å•¼ÿÐùÐÿ°ÿ[œuœaœ[ÜûÇ[ÜÿÐ_œÿ ÆÿýûR¬Æÿ Æûðûð_Üù°ÅýðjœûÆùðùÐÿÐ[¬ÆûÿûjüÅ[œû ÅûÆjœR¼ýPÇûðû°Å•œy<ÊýðjüùðýÿÐÿÐû°Åj\É£œý°ýÿ°ÿ°[¼ÿ Æû Åùðû Åýðùð_üûðýðû°ÅjüjüûðùÆù Å£ü_üûðýðù Å_þüûðýðÅÿÐÿÐùðù°Å£¼ù Å_üù°Åý°ý°ÅjœÿÐûPÇùð•¼Åùðû ÅûðýRÜRÜûÀÐùðùðù Æÿa¬ÆùðjœÿR¬ÆÿÐùðùÐRÜû0ÊÿÐÿ°j¼ÿÐùÐûðùÐù Æÿÿ°!0 ¿Àã ð š ð ð°! 1 !*!ã  !*1 !ð ù0âââ°ã  ! ‘â0 !ð@â0ð0ð0*! ‘ãù0âO“Wþâ ãããã  !*1ð0 1âãâ ââã *1â !ëë ð ý ù°*±*±ð0ð ‰Þââ@ââë *!ð0*±ð0¸%ð  1âù0 !ù0âãW¡±ð0 !ð  !ù0 !ð°ð ¸5ðãã ëãâ¡âWâ¡ââ ã â°ã ã ð0âù !*!ð ãâ þ! !y% 1Á_âWù ðð4*‘â âOââ âWã â âã ð@â@ 1â â°´ù ù0ð  !ë ð°  €ÌR¼äþýpîûðù°RÜy<ÊÿÐç¾£Æj|îý Åýðý°ÅýðûðûðýÆýÇûpîaÜûÐ ¯ÆyÜuüÅý°ýÀð¿Åý° ¯ÆRœ[¼RÜä¾ç¾ù Æ ŸȬÆa<Êû0ÊçÞÿýÇj,ÅýÀðý° ßÿ°RÜÿÐR¬ÆR¼uþÜ ßÆý@îý€Ìû°ÅùÐÿÐ[ÜaÜuÜÿÐ_\ÇýõÿyÜÿ ÆçÞa¼RÜRÜR¼ ¯Æa¼Èœý Å£ŒÌýÆûðý°ÅýÇjœÇý°Åýðýðý Åý€öaÌ¢° Œ0ã*¡ ü%ùâ[â0ù â ãâÀ_ë ¸5ùâ ù0 1ù ðâ0*!ã°â0ë ð0âââ0â 1ù ã !ã â±ð  !*!ð ãþð ð ùë0 !1êߺqëă'Þ8xëÄåO\*Uĉƒ·ž¸|Ì| àÆqœ¤.$IÄqq$ðÇIêqÀCð¸<ò1’¬ã"ð<ê"xŒã"ùÇÂÄ|ŒCù¨ <Äq¬câ É8àq‘uˆÿ€G>ÄqHp€<Äq,aþ @ÔaF‹¤¢ÚÀÂà TëpAà‘°@ÛÐ@ÄATAã †Äqd'ÇIÆ!Ž“Œƒ$â€ÇEH’qD$IĺˆcðÈÇ8ı°ˆã(âXG]Äq”‹À#ã<Æ!xŒâ ÉÂÖ1q¬ë€Ç:ÄqqŒC`<¼!Ž|ˆcu¹È:ê"xÔ…(uG>Ä–ºˆƒ$ã ÉEN²x\ä$â€Ç8ÄAqœ$âXIÄqÀc‡8à±0°Œƒ$ã8É8à!ŽuÀCðI.q¬CþðX(>jÔƒ;Þ0ÀG1ê ¨Ù¨Ç>ÔlÑ~ìÃØÇœ¯sÌÙ¨Gvú±ÆAqäCu‡8à1xŒâÈþI.rqŒâ8É8H2Ž|ÀcðIê2ŽuÀCGG>Þ qÀc$¹<.qˆ#$YÇ8ÖqÀcÓ…Ú&؇íè‡{0€|˜¶ëè‡è‡ÊCX}X@ìè‡}ø‡}Ø=Û‡t0€|P³-`‚}ÈŽ~؇ÐÀëȇ~ø‡óø‡~¸Ž{0€9ËCX}¨À‹Ú&؇‡Ú‡t0€|µ|H˜¶|0„؇ë¸ø¨~ø‡~ÀŽ~È0‡îè‡{0€|àŽ~¸Ž{0îȇ~ø‡óÀ¨ó¸Ž{0ìè‡è‡508\À…e`„XxMþx‡ý#‰q€‡º€q ‰qxȇq€q€q€‡º€‡q‡q ‰èx‡qx¸x‡|¨ xx’’xxȇºx‡|‡“‡“ȇqxwqX’‡“xxX‡q€‡ñ;Šq‡“’’‡|¨‹‹€q€‡u€‡u€‡QøxXq€‡u€]€)€q ‚q 8]@q ‰uf€eX†l@px †¸xXj€xˆq Xj€uȇq`†j€u¸jq€q q€‡qx¿þ‹€‡‹€q€‡qÈq8 q€‡‹ ‰q€q€‡q q8Š…‡º€‡q€q€‡qȇq€‡q‡|¨‹“¢?xx¢‡u¨‹|‡qx‡…ɇñxȇq’¢xXxq€‡u’q€‡q8 q8‰qxxˆŽº8 q€‡qxÈq8‰…q€‡qx¸x‡|‡u8‰q€‡q ‰ñx‡“¸ˆ|¨ ’’‡|?x‡|?xxq8‰èÈM0&¸~˜ 0Píè‡{0sèìH 0(¸~˜þ 0P„ëà‡gz ˆ€G¸~x¦W°€x„ëè‡t¨vÈŽr¨ ¨è‡ì¸0‡}ø~x¦W°Øz¸Cx¦{˜ƒgj…}ø‡D°ˆ1؇ëè‡z&ìà‡9°ðEÀŽ~H 0‚¸pPƒë(‡°€Š€~ÀŽ~¸0‡~¸Ž~QìH‡j‡ì@x 0¨‡ë°€g:gx¦èì¸0‡}¸Ž~H 0‚¸Ž~H 0€ƒ}¸Cx¦{˜ƒgj…}à‡9°ðEÐŽ~¸0‡~¸Žr¨ ¨è‡þƒëà‡,°ˆE؇ë0„gº‡9x¦VØQ0¸~˜ 0Pì0„gº‡9x¦VØì¸0‡}¸t0€W°Àzø~x¦H‡gj‡è‡t¨vÈŽ~¸0íH 0(x(t0€W°Àz¸Žt¨vÀ~x¦W°€x„ìH 08ø‡~H‡jìà‡gz ˆ€GÈŽD°€Xƒgª‡ò°€g:gx¦°¨X00è‡è‡}ø0:œ¶d`8 M€q ‰‹x’¸’‡|¸’¸xx¸ˆ“¸ˆþ|¸xȇ‹€q ‰qÈ¢xXqȇ…Éq ‰q q€‡º‡|€‡‹Xq€q ‰q€‡q€q€‡qȇq€‡q€‡ºÈxx’‡£‡|‡|‡|x‡ºÈx‡q€q Š‹X‡‹ Šq8 q…~‡u8 )˜8€‡q€‡q q’€ƒY€ƒq€‡‹€fp€‡u€q€‡sÐ\j€h‡uˆ…X‡n€dˆŽX(x †’ †8 q ‰qȇ“‡|8 q qx‡q‡£¸’¢xq Š‹È‡‹ ‰‹þ’x‡|x’‡q€‡q€‡|’’xx‡|‡ºÈx‡|8‰u¸ˆ|‡qXq q€‡q€‡‹ ‰q€q8 q€‡qÈx¸ˆº q¨‹|€q€qX‡qÈq q€‡qÈx¨ ’‡wx’xX’x¸x‡q€qÈq q¨‹“‡|wxȇ…Y‡‹È‡‹€q ‰q€‡‹˜Pø¨‡~ˆè…w  ƒìÈWè€~ÀŽ-ˆ€RxN°ø‡~ˆè…w  ƒó8XkH؇ȇs0€¸†Dþ0|ø‡ó˜50‡}À x|ø`¨è‡@äp…è‡D^è€Y¸ð€ȇ|8)Ð…L¨†Ø‚èx¸XDÎqȇs0DÞ‡ð€^x`°:@ä-ˆR¸†W0€è‡K¶˜5xØD¶€GÀ‡†0€~Hä|p…è‡Dþ‡|‡|8Hä~˜50j¾è](ð€~¸ä9ˆ€và ƒ|è‡Dv…è‡؇~Ø‚ …kxèDÞ‚èx¸X¸äs0˜]È„jø‡ð€^x`°: æ|p…è‡D¶€þGÀ‡†0€~¸dk0€Yƒ‡}@d~ð]ÈN0€zø‡K>)Ð…L¨†K¶˜5x؇؇ð€^x`°:ø‡K>)Ð…L¨jv…è‡D¾è](ð€~Èt0€Èx0sø‡~è‡Y3s؇DîD6€v æ-ˆ€RxN° æ¿Fä{0€Ð…kˆȇè‡Y3s@d¶>XkH؇è‡-ˆ€R¸Z°È¶ž50‡}@ä|8XkHÀ‡àCˆ€RX†0€jljî‡|˜ƒh~:ȇw0R¨ þƒ_0€zø‡~@dh‡|Èíé¦îê¶îëþ‡…_`„€‡qxM q ‰|q€‡q ‰q¸ˆu8 q8‰|‡“‡“X‡“’’x?’xx‡“x‡qȇq8 qÈx¨ wxx‡“‡u¬|‡º’¨‹‹€q‡‹Xqx‡‹€‡|‡º€‡‹€‡‹€q ‰u q€‡‹€q ‰Qøq€qXx€ƒY‚|x’¸x8˜)X’x`†ð†‹‡‹À‚ ‡tÌí»hÀÜÃ~ÿîhןsûî8¶ïß¾fZhÇñžvýø0·ïŸˆ\Ãh×òn¿~†"ÄX³ï_?íþ0wÏ€¹}ÿöý3`î.äÈþ’'SŽBÔ2FÆåƒ7ž&xãà·Nðˆ3€ë‰3<¥åSþ<ã¼6<ªÁS<âŒjðˆóš8°›8ðŒ8®Ï:ùˆ“<ãÀ#<âÀ³lãÀ3N>ã¬7N˜ªÁ#Îk[®jã¬jãˆ8ð¬8ùŒóÚ8ùÀ#<âŒóš8¯©8ðˆóšjù¼&Î8°­#Î8ðŒ“Ïkë¼&N>ª“8ãä#N>âÀ3<ã8N˜¯­#Î4£ôc€9Ͱ.»p$Lí“O:àóP>ö O3ì²ÁC÷ðP?˜óÐ=<´æ´d€9ûü“O?Âèàï AK÷À‘Çü“Ï=äsQ?é°ÏCùôcÀ1-¡cþÀ?ú4ãïºô“ŽûüÓÏ?ý\Ô:´Ô0:° Adÿ cÀ]´ÃÑ=pdÀ1åeAí´$L¥cÀ>yýÓÏ?ý¤cÀ>õcÀ1ÿôsù<”W38GÂDÀQ?ÂèàïõƒŽwŰÂ0ú”c€9õsù<ÔÏCýØcÀEýèÓŒß<”Ï=äóP^ AK÷À‘ÇäcÐNK˜³Ï]˜óÏ>ù¤c>åcùüƒ¬kÝcÀEýp G´ÃÑ=<”æü“Žø\„Ž-`Î>ÝcÀCû`Î?û`Î?ûðþc@;¢ö¼ôÃhÇCòa€vüÃõè‡ÌÁ˜C€¼ 1M,ƒ(8à!MˆâÈÇ8$Žu”FðP TqäC5ð‡j^#ŽuÀC5ë<ÄqÀcëɇ8à±Õ¼F5ù€‡8^3ØäCã€Ç8à1xŒâXÇ8`³xŒã5ã€Ç8ÄÕˆã5âX<ÄQxŒCðG>ÆqÀcðP <Ä›uˆëÅ?ÄñšuÀC ¥˜D)2YŠIp²§àä$¤Pš×ˆë8å:Äx¬£ªÇ;¨!Õ¬g°Qþ <ıŽq¬§ÌÇ)Ç!x¬ct|Í:à!xˆã5 8^“Õ¬cðÈGiÄqHðG>ÆAÇ|¨&â€8`£š×ˆã5ãxÍ8^3ÕÀƒŽ¯<ÄñqÀcë(jà!Ž×Œâ€סxŒCùÇ8à1xˆ@ãG>Äq¼FëÉ<ÆqÀcª‡8Ö1xˆù‡8à!â€Í8à1xäCãÇkò1q¬câxÍ8à1Ž×ˆã5âxÍ8à1Ž|ÐQðÇ8Tqˆã5ã€Í:¦Š~ÀØ0E’~ìã"1xÄþ>þ±~ÜÃÇèÇ?ú! ô#¨ÇEòñ|üãøG?öasàã÷0ÀE `Ž}þaspÄ8ÆCÐasPä[`B""P}\$ØÇEÐa€côã!üèE>Ða€côã!è0€9öñ{€#ýH‡(ò|ôc‰Á#öq‘~ÔayÉ'þ"p{`-1À1r˜c¹‡î’{`ùG: P‹äãÇ÷0ÀƒGìãÇö0À1‚˜c÷0À>þq˜ã"ûø‡Ú‘ä}üÃæøÇ>úq£ÿè‡0 ð~ôã!ý ÈCìa€c<0Ç>þ±ÀÉË= ð}Àû°‡r±‡ÃÙÇ? ÐŽ‡äã÷0ÀE `ŠX@ûè‡= ÐŽ£ŠØÇ?úñ}üc LHDêñ´£¨G? `Ž}ücÿ0€9ö‘äe3»ÙÎ~6´Q ƒˆ‡8`£ xŒã5 8^þ#Ž×ˆ#ð€Ö!xˆã5â€Ç8^#x¬ã5âÈÇkÆ&q¼Fð<ÄÕÀC¥Y࡚|¬‡ŽðÇkıžq¬6â(8òqÀcK°<Ö!ØŒã5ã€Ç8à!xˆcáR ˆ\C9\ÃxÀCôC:D@=üX>lAÂ5d‚À5ðƒà€.”Ã5Ì<Ä9>üC>@5ôC>œƒ¼Ã>ȃTC?üC>¼Ã;@5¼><„¬€.üC>¼BüÃ>ôC:D@=\D?üÃ=€þèÂ5Ä@ŒƒÐà;lAôÂ;ƒ¬À>\Ä>äÃ=À?ô?ˆèB9\ÃxÀClA”Â5ЂtÀCìƒ>À#”Ã,ˆüƒ¬€.ìƒ>$BôÃ?ôC:D@=0Û>ôÃ=ÀEä @5¼>ìC?œƒD@/ƒxÀ>üC>dì?ÌA´Ã>ôC:D@=üC^<ÄD@)\-ˆ@<ÄD@/¸0ˆÀ ìÃ?”Ã8€àÀ5”Ã5ÌüÃ>èƒüC9ŒþƒXáéƒ<Â;p‚0?ˆèB9\Ãx@?üC>ŒƒXáEôC:D@=\Ä>ôÃ9@ô0ˆ€ìC?ðƒÐÁ5ÌTÃCä @5¼>\ @5¼C>üC>lAÂ5d‚À5$Y?<Ä>ôÃ9@ô0ˆ€ìÃ?ä @5¼>ôC>œƒàÃ?èƒTC?äÃD)\C&X€\Ã?ä @5¼><Ä9À;ìƒ<@5ô?B”Â2ˆ€´Ã>ˆÀºdì?ÌA´C>@5üƒ¸Ã?@5< @5¼C>Dgv¦gþ^DŒÂ20B¼†8Àƒ8ˆ‚8ÀÃ8Àƒ8¼†8¼†8ÀÃ:ŒÃkŒƒ8ÀÃ8¼†8¼†oÂÃ8üæ8¼Æ8ÀÃ8äCiÀƒ8øæ8ˆÃo>'<ˆC>ŒÃo®ƒoŽƒ8ÀÃ8ˆÃoæƒ8ÀÃ:¼†8Àƒ8ø¦8¬ƒ8ÀC>ˆÃkTÕkˆÃ:ÀÃ:Àƒ8ü¦8¼Æ:Œƒ8@§oŽC>Œ<äÃ8ø¦jŒÂ?ˆ<ˆ<¬Ci¨Æ8ˆÃ:Àƒ8€¡<ˆÃoŠ<ˆÃkˆÃk¬ÃoRƒÀƒjÀƒ8À*½Æ)©<¬ƒjÀƒ8äÃ8ÀÃ:ÀCiœ’8ü¦8ÀÃ8¼†8Œƒ8äÃ8¬<Œ<äƒþ8ÀCiˆ<ˆC>¨<ŒC>ŒÃ:øæ8¼Æ8¼†8üf>Œ<Œ<Œ<ˆÃsæCiÀÃ8ˆƒoŠtŽƒjÀƒ8¬<Œƒ8ÀÃ8ü¦8¼Æ8ˆÃkˆÃkŒÃkˆƒoªtŽƒ8¼Æ8¼†jÀÃ:@§jüæ8Àƒ8Àƒ8ø¦8Œƒj¼Æ8¼Æ8¼ÁC>¬<”<ˆ¾F>ˆCiÀƒjÀ½Æ:øæ8¼Æ:ÀÃ8ˆÃ:Œƒjü¦8ÀÃ4€B?X€ôÃ=d¬‹ôÂCôÀA?üX?è시‚DÀ?܃X€X€ôÂ?ðút€>ÄÀº´?¬KäC ¬‹9܃ßtþÀCàÌ TC^äÀÁõÃ?܃¼‚À ˜Ã?äƒøKôÃX€DÀìò݃äÅ?ÜCXÀºA/üÃ>ôÃX€xÀÔÃEôƒ+X€x€´C?à TC?üC?lô³õÃ?܃üC?èƒßtÀ?Üú$º0A=ä…¬Ë1¤ÃºD@>äÀÁCôÃCìÃ?ÌX€œÁ>äE>Ì@¬Á><„øK\Ä=d¬‹ôÂCôÀA?$Îà€6ôÃCôƒ+X€x€´C?4ƒ€B €,ôƒøKäÀ¬A;üÃ=þd¬‹ôÂ?äƒøK\D?lôÃÝú$º0A=PÄ?¸‚X¬K=܃ßt@^ÎDÀ?ôƒ>ÌÁºx.@ìC³Ýú$º0A=ôÃ=øMü?¬KôC ¬‹9ôƒ>ÌÁºxÀ)@ȃßt@>ðúD@>ÄÀº˜Ã?ðÃ@(‚´ÃEôƒ!ôÃ?ôÃ?XÀº:¬KXÀºìƒDÀ>X€äƒ!àLôƒgV°7[ˆÂ/0ÂÀƒ8ÀÃ8ÀÃ(ˆ<ˆƒoŠÃkŒÃkŒC>Œ<ˆÃk¨†oŽ<Œ<ˆC>ˆÃ8ÀƒjŒ<¬<ˆÃ8äƒþjÀƒ8ÀÃ8ä<Œ<Œ<Œ<Œ<ˆÃ8¼†jŒ<Œ<ˆCiä<ˆC>Àƒ8Œƒ8ŒÃ:Àƒ8ÀÃ8<ç8<ç8ðç8¼Æ8ÀÃ8¼Æ8ÀÃ8ÀÃ:¼Æ:ˆÃkˆÃ8¼†8¼†j¬ƒ8ŒÃ:ˆÃ8Àƒ8¼(ô<ˆ<ˆÃ8äƒ8¼†8Àƒ8¬ÃsŠÃ:ŒÃk¬ƒ8¬Ãs®ˆ<¨Ækˆ<”Æ:ˆÃ8äƒjŒƒoŠCi¬ƒoŠþÃk”ÆoŽ<ŒC>¼†8ÀÃ:¨ÆkˆÃkŒÃkˆÃ8ä<ŒÃkŒ<ˆÃ8œª8Œ<ˆÃ8äÃk¨Æ8ø&ƒ8ÀCi¼FiÀƒjüæ8ÀÃ8ÀC>¼†8Àƒ8ÀƒjÀƒ8üæ:¨<ˆÃk¬Ã8Àƒ8”<Œ<¬<ˆC>ˆÃkˆƒoŠD€9,[?$Y^äÃCìC>äÅ?P?äC?äÃ>PÄ?ôòõÃ?ôÃ?P³E€9üX?üÃ=@>PÄ?äÅ?ôÃåÅCôÃCôÃCìò¥ƒþôÃEôE0Û><Ä>ôÃQÄCôÃ><Ä>ôòåC˜ƒ³åC:@^0[?ìC?üC?üX?ôÃ>PÄCäÅ?äC˜C’õÃ?PÄEôÃQÄCôCUïC?äÅ?ôÃõC’åE<Ä>D€9\Ä>äÅ?ôÃíÃ?PD?$Ù>ôòõCÔ&Ù>äÃCôÃåC?äC³åÅ?ôÃCìÃ?PD?,[?üC?üC^ìC>PD³õC>0[?üC?üC^ìC>PD’éÃ=@;ìÃþíC?äC’åý?üØ>ôÃO9•‡(,# Àk¨Æ:h‚8¼Æ8¼Fiˆ<Œƒ8¬ƒj¼†8¼†8ÀÃ8¨†jÀÃ8Àƒj¼F>ŒƒjÀƒ8¬ÃoªÆ:ŒƒjäœçÃ8ÀC>ŒƒoæÃ8äƒ8ÀC>ˆÃ:Œ<ŒÃkˆ<ˆÃ)Áƒ8äÃ8ÀÃ8ÀÃ8äƒ8Œƒ8ÀÃ8ÀÖü¦jÀƒjäÃ8Àƒ8ÀƒjÀƒ8ÀÃ8ü¦8Àƒ8¼Æ8üf>Œ<äƒ8¼Æ:À(ü<¬Ãk¬<ŒÃk¬<ˆÃkœÒk¬ƒjü&*­ƒ8@'œ‹ƒo®ƒ8¼†8Àœûæ:üæ:Àþƒ8Àƒ8ÀœÃƒ8Àƒ8ÀÃ:ˆ<ˆtŽ<¨<äÃ8øæ8Àƒ8¼Æ8øæ:Àƒ8øæ8Àƒ8¼†8¼Æ8ˆC>Œ<ˆƒoæÃ8ÀÃ8ÀC>ˆ<Àùk¨F>lÉ8ˆ<ˆÃ:ŒÃk¬ƒ8ø¦8¼œ¿†8¬Ã8¨<¨<äCiÀÃ8ˆ<ŒÃk¨<ˆÃ:”ÆkäÃ8Œ<ˆC>Œ<ˆC>ŒƒoŽƒ8Àƒ8Àƒ8ÀÃ8ÀÃ8ø¦8<ç8Àƒ8ð§8äƒ8ÀC>ˆ<ˆ<ŒÃk¬<ŒÃoŽÃkˆC>¨†oæƒ8¼†8¬<Œ<”ÆkŒ<,($Y?üX?8[>ôC>0þýC?ìÃ?ôÃõÃCìÔ÷C´õÃå< æC?0[9è0Ô@P9í7[9\ƒ.Ä@\p^ä´õƒ³õëu?ìC?üX?xf>pf?\Ä>ôÃ><[>ôC÷ƒgöÃ><[?üC>Ô~^äÃõCí7[?,[>ôÃø'?\Ã5$‚ìóåÅõÃ?ôòõÃ>üC?$Y?¤¿ÿ;@„…ŒÑ€qð®…P\CxâòÁ—aÅqᡑã8xëÄaoܸŠãò!Wq¸qëÄÁ+¹NÜ8x%áË7ž8ŽðÆÁ['ž8xâÆÁ‡°a>qùþJŽû¹NBqÂ'¡8„ Š·N\Ixãà‰ƒê¼uëÄ­ƒ'Þ¸Šãà5OÂqâà釰ẟðÖƒ·ÞÛŸëàC8Þ:„âà‰;Üž8„âÆÁ+™o]ÅuâÆ‰C(ž^xãà‰C(nÂq?Å!‡0*<½ãŠ; O\>qùà‰C(Þ¸Šã*Š«8á¸|‡Ååkˆ°áOqùÆÁ['®$¼qðÆÁo¸qÅ!—ž8xâàC(ž8ŒâÆGœqà!qàižqà) qàihxÆGœqàqÆžu*§$„ÄAH°|ÆGœu¦þÅ€aŒQÆi¬ÑÆqÌQÇyìÑÇ RÈ!‰,ÒÈ#‘LRÉ%wüÇÉ'¡ŒRÊ)©¬ÒJ'CåF¡†4ùiqÄY§$xÆGx¢žqqàqà§¢qàqò!qÖ) ¡qàž|ÆGœ|ÄYqà!qÖi¡qà§¡|ÆAHxÄáH„ÖgqòižqÄg„Ä©hq0¡q§¢qà¡|Ö§!xåqjqàžqªhŠÄAhŠÄY¡uàž·Þ'Ÿ†Öž·à!wqò)I0ŽÈ…Gœuþ0GxÊGœqàqÖ'xƇ#qò¡qàqò‰jqÆÁHxÄÉGŒÄgœŠÆGœqàžuà) ¡qà'qà'qƧ¢qòqÖ)Ix¢‚gœŠÄÁhxÆžuB(qàž†0ʧ$„ÄgŽôªHœqàž|Ä'ŸqÄgŒÆq~ʧ!„òqàÉžq!q¡q0§!xÄgP®t²ŸÈ)¯Ür'óé§Ÿ'5‡²ŸË¥ÜgŸ~žÔüÍAO=JͧÌÇÊ~"×üJÍUßÇÊ~"ïGõݩ̇w'ûÙ=ŸþÈ5—²(ûùýÉ~,ÏGù'÷ɧŸ|úÙçŸ}*ÏÇÉ~žïÞûDY†‘à§"MÄ!qà'xÆÉGx‚gœ|ÄÉ!qƧ!x‚†ÀcðBÄuˆcG>ÄqÀCãX‡8Æuü¤!ðXGEÄ‘† dâ€Ç80"x”¤"〇8ౄˆ#ðÐ BÄ1xˆ!〇8ÒqÀCã€GC*2Žuˆã' è<ıŒˆâ¨È:"Žuˆ£"âàÈ[à!˜·ÀCðBÖ½Àã- Ç8Ä‘Œ¼Eã@HCÆQ‘qÀcùÀÈ:Òþq ¤$ðBÄ1ŽŠ¬CðhBÄqˆ#âÈ<ÄqŒ!â€Ç:à!Žq`Dð<2Ž|4〇8ò1xˆcð( <ÄQ’| dð<‚qäãȇ8ò1„”¤"âG>ÂqŒcð<ÄQ‘qˆ£$ù<ÄqÀcð<ÄqŒùhHIàQ’|À£!ð<Æ‘Š4dð<ÖqŒcâ@È8Ö1Ž|! 8àÑáÀCÓÅ>ú±~ì£ûèÇ>ú!º|ü£ûèÇ> ´~ì£ûèÇ>ú±~ì£ûèÇ>ú±þ~ì£ûèÇ>ú±~ì£ûèÇ>ú±~ì£ûèÇ>ú±~ì£ûè‡èž$º|8©¢Ë‡æ¢Ô}ôcýØG?öÑ}ôcýØG?öñ¤}ôcýx’æöÑ}ôcýØG?öÑ}ôcýØG?öÑ}ôcýØG?öÑ}ôcýØG?öÑ}ôcýØG?þÑ}ôcý]”D×}ôcÿèÇ>ú±~ì£ûèÇ>ú±ôcýØG?öÑ}ôCtùøG?öÑ}ôcýØG?öÑ}ôcýØG?öÑ}ü£ûèÇ>ú±~ˆ.šÛG?öÑ}ôcý]>þÑ}þôcýØG?öÑ}8iýØG?öÑ}ôcýØG?öÑ}ôcýØG?öÑ}ôcýØG?öá¤}ôCtNêÇ>ú±~ì£ûèÇ>ú±~ì£ûèÇ>ú!º|ücýØG?öÑ}ôcýØG?öÑ}ôcNÚ‡“öÑ}ôcýØG?öÑ}h®ûèÇ>ú±'‰îûèÇ>ú±~ì£ûèÇ>ú±~ì£ûèÇ>ú±~ì£ûøG?öÑ}ôcýØG?öÑ}8iNÚG?öÑ}ôcýØG?öÑ}ôcýØG?öÑ}ôcý؇“úñ~ücÿÐÜ>ú±~ìþ£ûèÇ>ú!:'íãûèÇ>ú±~ì£ûèÇ>ú±~ì£ûðÞ±£M,ƒ€‡8Þ"Pˆã€Ç8ıŽqˆcðGEÄ’ˆùGÄQqäCðGEÆ|ˆc<ÄqÀ#ë€G>Ʊx4dâ¨È:2xŒc<Ä‘qˆ 8ò!xˆc AÈ8à1xŒ#â@H>ÄqäCɇ8à‘qTdâÈÇ8à!„ŒoÅ?à!„Œ#â@È:à1x¬â€Ç8xˆã-Ñ BÖqˆ#z©ˆ8à±xŒþ! G>‚|ŒCãÐË:JqÀcâ@H>ÆÑŸˆâÇpÆuÀc<R‘q $ã<ĆTdi<ÖÑxäcGE¢ÒŽŒë‡82ކÀCù<ÆqpDð<Ä±ŽŸŒ#ðhÈ:à!„è!ã¨È8Ä|”!ù€Ç8Ä‘qTDð‡8Ö1qT$ Ç8à1xˆ£"ãÈÇ8ıŽŒâàHI‚qTd èÇ?úñ~ü£ÿèÇ?ðúáú!°þ¡þ¡þ¡þ¡þ¡þ¡þ¡þ¡þ¡þþ¡þ¡þ¡þ¡þ¡þ¡þ¡þ¡þ¡þ¡þ¡þ¡þ¡ °ÿ¡ °ò¡°þ¡þ¡þ¡þ¡þ¡þ¡þ¡j°l°þ¡þ¡þ¡þ¡þ¡þ¡þ¡þ¡þ¡þ¡þ¡þ¡þ¡þ¡þ¡þ¡þ¡þ¡þ¡°þ¡þ¡l0ûáúûáúáúáúáúáúÁûáúáúáúÁûáúáúáúáúáúáúáúáúûáúáúáúÁûáúáúáúÁûáúáúáúáúÁûáþúáúáúáúáúáúáúáúáúáúáúáúáúÁûÁûáúáúáúáúáúáúáúáúáú¡ûáúáúáúáúáúáúáú¡ûáúáúáúáú!ûáúáú¡ÿ¡þ¡þ¡þ¡þ¡þ¡þ¡þ¡þ¡þ¡þ¡þ¡°þ¡þ¡þ¡þ¡þ¡ú°þ¡þ¡þ¡þ¡þ¡þ¡þ¡þ¡þ¡þ¡þ¡(ò4çúáúáúáúáú¡ûáúáúáúáúáúáúáú!þ*Ýò-á2.k0D*BàAà¡!Æ!àaòÆ#ÄÆ!ÄJ¢"Æ¡"Æ¡"Æ¡"ÄaàAJ!Æ#Ö¡$ÖAÆ¡"Æ!Ö!ÄaòAàaà¡$àAÆÖA*bàaàaà!bÄ!Ä!ÆJ¢"¢!ÆÆ!"*à¡$*¢!àaÄ!ÆÄþaàaÆ!v¡<ÍÓ<a~a~¡~ajáäsäÓ<a~¡<Á<å³<a~¡<¡ÊóÊój¡<¡<¡wáÎs~¡<å³Êóv¡~a~¡~a~¡ʳʳ"ÔkA>ka~ajaäsj¡<Á˳~¡<a~a~¡~¡äs~¡â-Äa@A.q5WuuWyµW}õWþ5X…uX‰µXõX‘5Y•uY“5FáaÆAà¡!4!ÄÆAÖaJ!ô!òAà¡$ÄÆÄÄaÄÄ!òA0BòÁbÆ!Ä!!ÄÄaàAàAÖÄ!Äòa*BÆAàaàAàaàabàa"ÄJ"Ä!ÆA¢$"Ä!Ä!ÆA*bbÄ¡"@áÖ¡!ÖAò¡0ú!úÁ-ûÁó"©L.ó¡ú° °Ü2(2(²ò¡00 0úÁþó!*û¡û.5'ó¡j0úáòáú¡ûÁû!*ûÁ©Ìû¡û.ûÁ5'ó!û!û!.ÿ!j°°l0â2àA*b@ArEwtI·tM÷tQ7uUwuY·u]÷ua7vewvi·vg7Daò#4¡"Æ!àaò!Æ!ÄÄ#J!Ä!à¡!Bà!àa~â-àaàAàaÄ!Ä!ÄaàA*b0¢!CàaàaÖ¡!JòÆ!Ä!ÄÄÖ!ÖÄ!ÄaàAàABòAàþaÖÄ!ÄÄ¡"Æ!ÖAòá0@áÖ!Ö¡"Ä#bàaà¡!àAà¡!ÞÖAàÁ]Æ!Ä!ÖbàÁ]ÞÖÞÄaÆÖˆÆÞBàa*‚ˆ×Ö´ø-bÆ!Ä!Ä!Þ¢"ÜÞÞÆÄ!ÞÆ!ÄÁ]ÖÄaòá-Ä!ÜÄ!ÄÆ!ÄÖĈbÄÖbòÁ]àAòˆáAÞbòá‹ÝÄÞ¢"ÄÄ!"ÖÖÆÆþÆÂ]àAà•áaÄá-àABàAÈÄ\0BÞb@Áv±9›µy›¹¹›½ù›Á9œÅyœ04aJÖA4AàAÖaÄaàaÄ!Æ¡"Æ¡!òaÄÖ¡"Ä¡"JBàAÆÆAÖ!Æ!ÖÆÆ#Æ¡!àA0¢$àa*bòaÄ¡"òAà¡$ÄaàaÄÄ¡"ÖÄÆÆÆÄ!Ä!ÄÖÆA*BB¢$ÄaÄÆÆAà¡$ú!ÄÖAàAàAàAþB0BàABàaÄÄÄaàaÄa"Æ¡!à¡!à¡!àAàAàAò¡!ÖAà¡!B0àA0ÖAàA0ÄÖAàAà¡!â-ÄÆ!ÄÄÄÄá-Äô¢"0[òAàa0!Ä!ôÄaÄ!Ä¡"ÆÄaÄÄÄô¢"Æ¡!àabÄÄÆ¡!B/ÖAà¡!àA/àaÖÄ!Ä!ÆA/à¡!àAàABàAàAàaþâ-àAàaBàAà¡!àAàAà¡!ÖAÖÖAàa@œU|ÅY¼Å]üÅa<Æeü-C@ ÄÄ4¡"Æ!àaàAàaàAàAÆ!bÄ!ÆAÆ!Äaàaò¡"ÄÄÄ¡"ÄaòAàaàAàAàa"BàaàaàAò¡!ÆAàAÖAbàabò!Æ!àa*BàAàaò¡!àAb*BàaàaòJ!Ä!ÆÄ!àá-¢!Bò!@áàAÖÖ¡"þÄÄa¢~¢!0BàAàaàAÖ!ÆÆ!BBbàAbÆ!ÄÄ!‚×áA8BBàA¢!*Bàa0BàAàAÖÄÁÛáaB8B*B†c0BB*BB/B*BàAx]*¢!ÆÖ!ÄÄ#Ä¡"¢"ÄÄá'Ä!Ä¡"Ä!Öá0ÄÄ#ÄÄ#Ä!Ä!!Äá'Ä¡"Ä!Ö¡"ÄÖa@aÆ‘>é•~陾éœC`–Ä!ÄAÄÄaÆ¡!"þÄ¡"ÄaJb¢!à!Ä!"JBB*B*BÞbÄ!ÄÄ!bàa¢!òAàa"àa0¢!àaà¡!¢BÖaàaàa*bÄa~BàaÄ!ÄÄaÆAòabà¡!àaÆAàaÄ¡"ÄÖÆAF!¢!ÖA0â-Ä!ÈEÜ#Ö!Ö¡"ÖÄ!ÆAàAÆÖ#ÖAbÄ#Öa8ÖÆ!ÞB*bbàA†£!BòAÆA~B*bàA/žÀuðÆ‰ƒ7Þ: áþ­¸Þ8ëÖÁ'P\ÆÅ5o¸× ¬OŒnQ¿`(ž&xâàËÇPÜ8âŽË'Þ¸†ãàc¸ž8xãŽ8NœÀqðòÁ·Žá¸qaŽc8Þ¸|»wçoC˜âŠË'f>˜ðÄË'pâŒ8ðŒ“<ãÀ#<ã´<âÀ³Ž8ðˆ#P>âŒ#Ð8â¬#N>0­S>â4Ž8ð¬3Ž8­Ó8ëì&Ž@âÀ#NCãˆÃ8O>ãÀ#<㈓Ïnâ¬Sœ8ðÀ”Ï8ò8ðŒ#<â¬#<â0”L‰8‰3<âÀ“sâ0Äœ@ëÀ“×âÀ#Î:0å3Ž8ðä#<Ìå³<ÌÁ“s눓ÙùŒÃ\>Ì 4Ž8­þÃ8ë0Ï:âäÃCf¯3Ž818ùÀãµ@Ì1$N>ã0—LùÀ3Ž8ðŒCâÀS>0å<Ì1´LðŒ#Ð:ùˆsðÀÏ:âä#Î8ùˆ“Ï8âÀ<ÌÃ8ð¬“ÏnðÀÄP>âÀ“@ùŒÃ<ë˜-N>âÀ3<0 4Ž8 å#<âÀã5<â´Ž8ë” M°e€, ˆÀ*p l ÁJp‚¬ /ˆÁ jpƒì Q ƒ€‡8à!xhâ€Ç:˜#q&ã€Ç8à10'ð€ <Ä!âäCð€É8à!0þâ‡@ÄqÀcðX<Äqäë€Ç:²Œ»Ç:à1Ž|dâ€Ç8à1xŒC G>à!ކˆcðG>à1xˆC âȇ7à!ÀãG>à1Ž|ˆ# YLÖŠ|D <Ä!â‚$<ò!xì†* ‡@v³qÀcY‡8à1ŽuÀC G>ı‘uldGCÖÁq4&ð‡@ÄÁqŒë`Èn¨"ˆƒ!ã€Ç8XÙqD Y‡@Ö1Ž|Àcùhˆ8²¬ƒ$ãˆ8œâÀCT<ÖqŒþë<ÄA’|¬C Ç8à†§!»Y‡8À)uÀ& <Ä!qÀcðIÆ!uˆ뀇8ŠÊt¦4­©MoŠÓœêt§<íéC0Š_0" ‡&౎Œ#»aˆ8ò1ˆƒ!ã`ˆ8“|Àc ‡@ÄAqÀC <Æ!qÀ£8ðÇ:à!xŒC âÈÇ8à1q¬c0H>Æ!xˆC ãÈ8²†ˆâXÇ8Ä!qÀcë‡@ÄÑqÀc7âXÄBðƒâ<ÆqÀcðþ‡82xŒCë€Ç:VŠãX‡@ı†ŒâX<Æ!qˆcð<Ä1ކŒë‡@ƱxŒC 0Ç:à±æ$ãX‡@Æ‘˜ldGCÄ!q0dð‡@ÆqäcëÈ:à1xŒcâXÇ8ıxŒã€Ç8Ä1xŒãX‡@ÆÁ˜P%âØÈ8Ä!qd<ÖÑqˆã€Çnà!ŽqDùX‡@ÆqäCð‡@Ä‘q4dâhÈ8à1†ˆãhÈ8Äq0d <Ä!uˆcɆ&| ç8ËyÎt®þ³ïŒç†@Ë`Äà!ŽqDð€ C`2qäcð<Ö“qÀc Ç82†¬Cð‡8"Œë‡82xŒC 0CÖ‘qŒ#ãÈ8ò!ŽqÀc0É<Æ‘†Œc 8Âxˆc7ù€ CÄqäâG>ÄuÀCGC*’xŒC â€G>`²ˆÿÈ8²ŽqDë€øÁ6Œ’9Ç8òqìÌaˆ8à!†DaÐ<Ö!xŒ#ã`LÆqdâ †`æŒùÇ8àxˆã€þLà!Žq4D‡@г˜À&ãˆ8à!xÀdÙ <Ä!˜ŒCãȇ8à!Žqä&ë€É8à1xˆ0Ç8òuÀƒ9ãÈ<ÄqÀ&ãG>Ä1†ˆcð<ÆqÀCð(N>à±›|Œâ<ÖqÀCð€‰@Ę&ð¨È8xT0<Ö!ŽqÀc7ù€‡8vqÀCðCÄqì&ð`Î8à!Žâ4DðX<Äq y.¾ñüä+ùÈ&–ÁˆÀ&ð‡&²ä〉@Æ!|Œ#»<þò1xÀãˆ8òÝDð‡@Ä!qˆ0ɇ8’â0ð ëâ°0â°ð ð0±â°ð0ð 1 !ðâÀâã â°!ë0!ââã !ë00Áã Á ðð ð ð ð ð°ðÀä0óÀìð l ð ðãÌ[%0 ë 1â ã!ë ð  ‘ââ°ââ@ °ù°ë!‘â ââãâ»Áâ0‘þâ°!$!ð ‘âââ â ùâ° !ë ë ùÀð  !ë00Áâ°!ð ‘»0Á0‘ã ð !ùë0âãðâ°ââ°ââ@‘ã  1ð ‘ã ùù0!ù ð ð ù ð  ‘â°ÌÀp°…†°…`â â°Ù  q&‘I‘i‘‰‘©‘ ¢€ Œ0¡ ùP!ð0ð0â0âð0ë  !ð0ð°ùþ ð0  11ð°ù ð°± 1!ùã0!ã 0±ë»!0âã 1 !ãÀ0!âãð°ã0!â0 ù  !ð !ðÀß ä ê@ß°±ë0Ì0â0Ö0 Àã »‘ð@  1ð°ð ð ãã@Ô ð0 ±â@ë ã@Ì!â»!â ëâ0 »Áããããã ããÀ»ÁãâNãþT1 1ð0ð  ± ±âââ0ð° !ð°â ë0$!ð0 ±ð ð0ð »±âÀ0!ãë »±1âãëÀããã â°Á Þà ãÔ ãÀëâ ë ð È  ¤A*¤CJ¤Ej¤<£ð Œ0ð0ââ  ã ã ù0ð ð0!ù0âÀ»!!ð0â0!â°ðð  1 !ã ãð ð0ð00âã ð  !ðPãþ Á ±“ âã@â ã  !ð  !ð°ð°ð0ù0 ÿâÐã ðël ßÐ\` ÒÀãë ù Ìâëà ð€H0`à  ÐÔ  0è€6ð0  9Ô «@°¸pð ± !ð°ð01ð°ââ ãã ù°ð0‘âã0!ââ0Ìãâ»0âã ã ð ã ð ëþ°ð0âã ð0âââ 1ù ð0T!ð°1± !!ãã ãð0!ð!ù0±!ð  ‘â°ð0ù°âã»â ã ð0ð ù00Á ð A Pð°1â ã Ù  Gʹ빟 º¡k‘! ËÀ0ùâš !ð°0ãâ0ð°â ââð0!ù°â@âãâã â0â!ð !!ð ùþâ0Áâ°ã ! !ãâââãã ð0ð ð !ùâ° !ð0 ð  ±ð ãÀ ÿ 1ââ ÷ÀÆÀùÀÆÀâ°â°ãÌâ°ç 0ðà,  è0<Ô ð Ô=Þ.Àâp3À〠ùpœ Ô0, çââ0ù ã  !ù0ù ãÀâããâ0‘»±â01ð0! ! AÈ„Ìð0âþâ@È01âð0ðð ð0ùùãð ùÀâ°ã̱ðã ð ð° ±Ì0±ã âãÌ1ùÀâ0â@Èâ0ð°âãâPÈ0±ð ð »ëù  !ùãã â Ìà ðPÔàFâ0ùââ Ë kÁÏýìÏÿ Ð-ÐMÐmÐÐ ­Ð ÍÐ íÐ Ñ-ÑMÑmÑÑš° Œ»!â 0!ëÀâ°ð ð°ð°!ð°ãþ±âã ð0â ã‘ð0ð0 !…¼ð°…, !ëããPÈ0ããã  !ù0„<ð°ðâã 10ã !ð ð0ð0ðãã 1 ÿ0AÈ„0ð@lð`\ ð`ð°!ð ÌpPÑ á0É ð@ °Ô ð ÔÚë ã Äë°ÙñÔÚ°ãÀ Àâ°ð 1âã ëâã þð ù0â ã ë ù0ð°‘ã ð ð  !ã ð ð0âPÈ!ð01ð0‘“*ð0±âÀ»!ë0ð°âÀë@ÈëÀùâ âãý½0ë ð0 !ë°âù»Áù0ë0!»âÀâ ë !ð0±ð ã ð°ã ë ð0 !ÌÀp ( ဠ» â°ã@Èâ°Ó Íæmîæoçq.çsNçunçw^Ñ! ÈÀ°ù0⣠ãþâã â°!ëë0ù ãëð0ùã@È⻑ ! ±ð°ð ãÀâããÀâãã ð0ð ð°ðÀð0âPÈâëÀ01!ð ãâ â0ë0!ã1ùÁ0â0ë ãðšð„,ðÀü@â@÷@»Á»ë âÌ0Ù ¡°h ÌÀðàâ@  ð@ °ù Ì /ã° 0p â@ °âÔ»Ñß0þãð0 ±â ãããë ð°»±âPÈ“ ùã â»ãÐßã0‘ãëë!ãëë0ð ù âëð ã01ã»!â0QÈâ â ã âãÀãâ »‘â0©ë ±ãâ0ð   ! 1ð0!1ù@Èâã ÌÙ° Ëp ë0ââ@ ë ð ã ±  €çÅoüÇüɯüËÏüÍÑ!0 ËÀ0ââ°þš0ùÀ !ð0ðÀð ð°â°ð0ââ°â°ãð0â ù ëã 1âùÄÁ'^>qãàÁW0Ÿ¸q⊃'n¡¸…ðƉËOqâ .—q\ÇqÄY¨ |Æ)¨#qngqà'qà‡™Àç¨uàžu|`ŒÄYhx–åSTqE[tñEc”qFk´ñFsÔqG{ôñG ƒrH"‹4ÒÅDù…:ZGqÆÉHxħ ñàg¡‚àžuògœ|2g¡›'Ÿ… ‚gxÄYg¡uàžqòYè¦|qþ:gqòéHœŒ ‚GËÄéHœqÄéHœ…Ö)žq:'xÆÉqàžq2Z'£uàÁ”ÆÉGœqò‡rØ™gvØùfqà)qàYg¡q˜@xÖÉ'ƒ Öq…lెq¨p¨  #XÐk8gT J%x¨ #jGœ|*¨£qòGxÆgxògœŒÖGxÄg!qàYGxÆ'xÆg…ÄÉžqº©#qàg¡qà'#q:žqÖqòGxÖg!q禎 ÊHxÖ'Ÿqàžqà'Ÿ… ‚GœþŒÆYhœ|ÄYhxÄgœŽÖgœ…ÄGœ…ÖYhxNqògœ…Ž'£qàg!qàÉ'£qàf8jœ|Ä §–l¬Ñqà§#qÖ™”#—|rÊ+·ürÌ3×|sÎ;÷üsÐC}tÒK7ýtÔSW}õÎCeF€gxÖ”ŒÆÉr¡qàGœ…ƱLœuÆg›ÄÉHœ|Æ)žq,[g¡›ÆY¨ unZh›:Gœ…ħúqÄYhœŒÄÉrxÆž|àžqÄYhœŽ ‚gqàYgq¬c! 8ò1xܤ ðX‡8Ž"x€¢〇þ8Ž"Žu°áäà 9¤AqXFð<ÄÁ ˆã( ´$ Â:¨!€|ˆƒX<Æt ap€Öà88¨!€“PCð¸IGÆ!xˆcã€ÇIòqxd!âèH>Ʊq,Dù¨ž82qÀã&â€Ç8Ä‘ŒŒc!â€Ç8"xˆc!âXÈ8"ŽŽ¬c–ÇBÄ|¬7éÈ822xŒ£ ù8 <ª×q,Dð<ÆqÀCY<Æ!Žq,¤ ð‡82Rxˆ£#ùÄ‘…dÇMà!Žqä£ <Ä1Ž|Àcð<Æq,dùXÈ8ò±›dd 8ò±‚À£ ðX(þ±Ž…¬ñ<¸À6HÃlGGƱ“¬# )H<âþ£tdðÇQà!ŽuGéÈ:àŽ“ÄCðGG޲qŒc!‡8"ŽŽ¬CÇBÆqÜDðG>Ä1x¬CëÈıqÀc <Ä‘qÀcðX‡8àQq,dðX<Æ!xˆ#ãXHAàq“|ÀC GFÆ‘qäcðÇBıqä£ <Ä1xˆâ€GA2"Ž…ŒâXˆ8à!xŒë<Ö‘ŒãÏ:2Ž|ˆ#â€ÇMÖ!ŽŒ¬âXÈQıqÀã$2@!þ9 YÈC&r‘|d$'YÉKfr“üd(GYÊS¦r•­|e,W9£ø#qdDùGFÆ!xŒYÈ:n"Ž…Œù<ıޛÀc7ÇBƱqt¤ ðG>ÄuÀ£ <Ö±q¬ã€G>Äq“…Œc!ã€Gõ’›ÀCðÈGAà!ŽuddâXˆ8Ö1Ž‚À£ Ç:ÆQuÜDù‡8à±xˆG< Š~Àc'‡8à!xpÁlRêþ-dùÇBÄ‘…ãȇ8Æq,dð<ÆÑ‘qddY<ÄqÀ#â€ÇI2Ž|ˆ#ã€Ç8ò!ŽqÀã&â¹I>à!Ž…Œ#–<Ʊqäc!ãȇ8à±q,DY‡8à1xxX‡Œ…‡|(6xÈ.x(ˆ|ȈqèˆqÈqXx‡Œx‡…Xx8 xx‡ŽXqXq€q°Œ‚XqXq€q€‡u€‡ux‡…‡Œxx‡…(ˆ|èqXqȈuÈqXˆu‡q€‡q€qXqXqȇŽXxxþ‡Œ‡ŒñX‡…‡…‡qqÈq‡Ž‡Ž‡…‡›€q€‡‚‡u€q€q‡|‡…ñÌqñ¸ x‡qÈx(xxXqÈxË8 x‡ŒxX‡ŒXqXq€‡‚Xx‡u‡Œ‡qXˆq€‡u€q@P¸<_üE` FaFb,Fc¼²Єe`„x‡…Ðxx‡uqȇq€‡›‡…ȇu€qXqXx¸ xX‡›ÈqXx‡Ž‡…‡|‡…‡‚€‡‚€‡qXx‡…Xxx‡Ž(ˆu€‡þq8‰u€q€qȇq€‡›x(ˆuXq€qXxqȈq(x‡u€‡q€‡u€‡qÈq€q€‡‚€‡‚€q€‡qxXx…x‡£x(ˆŒ‡…XxxxqXq€‡u€‡uXˆ‚€q€q€q8Š‚€qXˆq€‡ux‡u€q€‡¾Èq€‡‚°ŒqȈ|è xxx˨q° qXˆq€‡q‡…‡…ȇq(ˆ…‡…x¸ xx‡Œx‡“° q€‡q‡Ž‡…‡…qXqXxx(ˆ…¸ qþ‡…xȇ‚€qXˆ|‡Ž‡u€‡›€‡qx¸‰“Xˆq€‡q8 xxxq€‡q€qȇq€qX‡ŒxX‡…X‡q‡ŒqPÀ¾€‡qXx‡u€qȈuXˆuxx(xx‡uXˆlЄc,P=PMP]P Q@F€|‡…‡Q° qx(x‡u‡qÈq€‡q€‡u(ˆŽ‡|x‡|‡…x‡…‡›Èˆ‚x(ˆ|°Œ¾Xˆ“€‡qȇqXqXˆu€qq€‡ux‡|€qȈqXqÈqXqþ‡|Xq€‡›È‡‚‡|x‡Ex‡|Xˆ‚ЄX‡ŒxxXx‡Žx‡…(ˆŒ8Š‚€qq€q°Œ¾XxXx‡u€‡u舣°Œu€‡q€qÈq¨žŽñx‡…‡|€qq‡…¸‰|(ˆ…8‰qXqȈqXˆqXˆuȇ¾xx‡|ÈqXqXˆqÈxx‡qÈqXˆ“€‡qXˆq° q‡|xȇ‚XxX‡ŽxXx‡q‡Ž‡|‡|€‡‚ȇŒ‡qȇ‚Èqȇ…(ˆ…(xXqÈq‡þ…xx‡|€q€‡‚èˆq€‡q€qèˆqÈqXx8 xXx(ˆu(ñ‡ŒxdmY—}Y˜Y™}Ù…_`€‡q€‡qXMxq€‡‚XqÈqȈ‚èqXx‡u€‡q‡…¸‰…xxȇ‚€qêxXˇŒ(ˆux‡ŒxX‡…‡‚€q€‡u€q€‡qȈq(x‡…qXq€q€‡qÈqȇqXx‡uxx¸ qx˸ qȈQȇ“ÈqXˆ‚€‡q8 x‡Ž‡u‡Œþ‡…(x‡Žx8 ˇŒX‡…xÀqXxxÀqÈq€‡q€qȇuȈqȇq€‡q€‡qx(xxX‡…x(x‡|‡Œ‡ŒÈ‡qȈqx(xq‡ŽÈ‡qȈq€‡qXqx‡q‡uxx‡u€‡q°Œ‚€q€‡q‡Œ‡…‡£XqXxxq€‡qXxÈx¸ qXˆq‡›Xˆq€‡qXqX‡Žx¸‰Ž‡Œ‡…q€‡|x(ˆ…‡ux‡Ž¸ q€‡‚èˆq‡£x‡Œ‡…‡Œþ‡q€‡qÈqXˆuXˆlЄ™-c3>c4Nc5V²…e`„‡|x‡Q(ˆ|(¶qȈu‡Ž‡Œ(ˆ…‡|€‡q€qÈxx(ˆ›XˆqÈq¸‰…‡|€‡q°ŒqXˆuȈu€‡‚x8‰…‡|Xq€‡q°Œ›‡|Xqȇq€q€‡q° qxx‡u€‡u€‡u€qXqÈxxxx‡…‡ŒPø‡Ž8 x(ˆ…‡|° qèq€q€‡uXqXq€ Yx8 q8ŠŽqxxXxXxXx(x(xþx‡…‡q€‡u‡›€qX‡¾‡Ž‡…¸ Ëxq€‡q€q€‡q€‡ux¸‰|° q€q€‡qXˆu‡q‡qXq€‡q€‡|xȇ…‡q° q€‡q° q€‡‚€‡q‡…¸‰|x‡Œ8‰|€‡‚¨x‡|€qÈqȇqÈq‡Œxx‡…(x‡Ž(x(ˆ…Ëx‡|‡…x(ˆ|€qXˆq€‡›ÈxX‡Ž‡q‡|X‡Œx‡|(ˆq€q€‡q€q€q@PXcÎîlÏþlÐ&ÆЄe`„x(xÐþxxxxx8 x‡‚€‡q‡|q舂X‡q(xX‡qèˆ|Xˆqȇê‡|xxX‡q(x‡›xx‡…‡ŒÈq舂X‡qȈ“€‡‚Èq€‡q€‡q€‡q(ˆ…(x¸ q€‡|q€q€qXqÈq€‡uXq€‡‚Xˆq‡Œ‡……ÀqqXx‡…‡…(ˆ…X‡…x‡ŽXqXq€‡u(x(xx‡|€qXq€‡¾ÈqXqXˆu€‡q€‡|‡u€‡|(‡ŒqÈqXˆqXq€qþXˆ‚Xq€‡q€qÈqX‡qxqèq€‡qXˆ|€‡“€qȇ›x¨xȇq€‡q€‡q€qȇ›‡bËxx‡|q€‡‚€qȈuȈ|‡Œ¸ x(ˆ…X‡¾€‡|¸ xx(ˆ…‡Œ(x‡Œ‡Œ‡u€q€‡qÈqXq€‡q(ˆ…X‡Ž(ˆ|‡uxx‡…x‡u‡£Èq€‡uXˆ|‡…ËÈMmk¿vlÏvmO²d`‡ŽÐ„qXq‡|(ˆŽ‡|Èq€‡u‡…x‡…X‡|èq€qþxX‡“qÈq¸ x‡…‡|Xq€qȇ…(ˆ|¸‰…xx‡…‡…‡|x‡Œ‡…X‡…x‡|‡…‡|Èq€‡‚€qqXˆ›° q‡|€‡q€q€‡£…‡ux(ˆ…‡…xx(x‡…x8 qÈq€‡£xxx(Ëx(ˆqXqñ8 Ëxx‡qX‡‚¸‰Œ‡q° q¸ xxXx‡qÈqXqXqÈq€‡‚XˆuXqXqèq€‡“¸ ñ‡|‡…X‡|‡qX‡‡þxqÈx‡q€qXˆ›€qx‡u€qXˆqèˆq€‡›Xx(ˆ…‡Ž8 ËXqÈq€qÈqÈqXˆqÈq‡Ž‡|‡qXˆ‚‡Ž‡|èˆq‡q‡ŒXx‡|(ˆqq€‡u‡q€qX‡›Xq‡…x€o¨"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$I†!F-c4`¼qðƉ'ž8x6ÅÙ'n¼qâl޳)Ó¦Mqëà“IT¼qDóÁ[OÑu2×ÁGtÝ8q6ljË7N¦8›2mŽƒ'nþ8¢ðÆåo¼qðÄÙoœLxãÄÙ'sÝ8qn‰æƒ7Nf¾qãÄ·nœLxëà‰ƒêŸ8·»jí ý«Ö¯]¿Bÿ ý«Ö¯Z¡wýz-;ô¯]¿výÚõkׯ]¿Bÿúµ«Ö¯]¿f謁Vèà»~íú%;ø®Z»jí þkׯ×ÁC×úµë×®_¯íúµëW­×¿Bÿ ]kׯ]¿vG^kv­]Áwý² 2¿ìòË.ÁíRË.¿ÔZ-¿„Ü.¿ìòË.¿ÔòKhµ¼Ü.¿ìòK-»ü²K-¿Ô‚\-»üòZp»ÔòZ-»ü²Ë/¡ýRË/µüòÚ/µìòË.¿ìRþË/µüZ-¿Ô¢]hµüÚ/¡·K-»ÔòË.¿„öKh¿ìÜ.Á…öË8ðÈÏ4 €Ô¦›o§œsÒY§wâ™§ž… Ê/Œ ð¬86“Ï8D‰3<âÀ³ŽLD‰c“LðŒÏ8ð¬c“8ðŒã–LðŒc“8D‰Ï:â%Q⌓8D‰8ðˆ³Ž8ðˆ8D‰Ï8ùØ4N>6“MãäÏ8ðŒc“cŽåcÓ:âäÏ8âØ4N>n‰8£ücÓ:ïöcP?ùLÔAýìóÏ> õSQ?ùôð?ý”BýäSQÀå³P?ùþ”Aý4”CcÔAý$ÔBýÔO>õóP?|PÀ å£Q?å³P?íóO?ù8ÔAn­³ ({´ÐC]´ÑG#4C!€² #ˆCÔ:šŒ#<âä#ŽMâ¬3ŽL6#Î:2%“Mâ5Ž8‡Á#<ëÀ#“MdÁó.QdÙ$Î86­s˜8D‰³<ãÀ3Qâ%<âØ4Ž86‰³<ãˆÏ82­Ï8â¬3ŽLù8&N>눳Žc69&ŽMãä³-<âµ(ÿÀCV>ã¼ 8ð¬#<ëˆÏ82Áóî:dåÏ:ðßü:ð¬Ï8ðŒ³<2Á3Ž8ðþ¬Ï8âä3N>âä3<ÆÃãü»ðÈÏ8âÀó®8ð¬#“M2Ù$<ÆÃ#Î:âØdðhž8ˆ²›¬#ãÇ»àÑx¼ 뀇8à!ŽuÀCðG>ÄqÀcDY(”fÇ;â1zÜ#û(‘ˆŒQÄ1Mäâ€Ç8à1›Œ#DG>Üâ·þŒƒ(ãȇMÄqÀCð ‹MÆá–qÀC6QÆaqÀC&ð<ÆaÇØdãȇLÆ!›ŒC‡G>à1›Œâ°‰8lâ˜|Àcù°É8ò!x¬CðG>duäÃ&2‡8ò!xŒïE?Äa“wÙDDà!xˆ2±‰Lˆ²xˆd‡8à!Žqäƒ,ð<Ä™ÀC&ã°I@á!›ŒÃ&2‡8ÖqÀþ¡ãȇ8ˆ"xÈ 8à!xÈâ<Ä™Àc6Ç8ò!›ˆcð(ÄqÀCë°I>ÆqäŽ<ÄÇÈþ2a›8òáq¬Ã1âX<ÆAq¬Ã&2Y‡cܲ¢âÅ?Öa²Àã]â`Û8à1xˆÃ-ïr‹8à!xˆƒmâXQÆ!ŽuÀcnYQd²xˆë°‰8l"·ˆcðX‡8Ìk“qÈÄ&â°ò8Öaqe6YQÄqqeùQÖuØD‡‡[ıq¸Eð‡•ÅqE&DY<Ö!xÈÄ-â`Û8Öqq¬ã0â°²Là!xmâ0¯Lˆ"›¬ƒ(ãX‡8à!›ˆÃ&ë°²•ÅqÀ#šè-­kmë[ã:×á€(–Áˆˆþއ&Ä1xˆ#ðG>l"Ž|ˆÃ&âȇLÖqÀC&6G>à1Ž|ˆƒ(â<ÆqÀC〇cÜ"xˆc‡Ç8à!¢ÈdðG>ÄuÀÃ6‘É8à!Ž|Àc6YG>l"¢ÈŽÇ:Æ‘x¬Cù€Ç:à!x¬Ã&ëQÆ‘qØDë<ÆáqÀÿ€Ç8#¢ˆÃ&〇Lò±xˆã€Ç:Äu°ú0ë€Ç8Ä‘xŒﲉLÖ!›ˆc6‡yÉuˆƒ(â‡MÄ1xˆ#DY<ÖqÀcðX‡8à±¢¬Ã&âþ°‰8l"xˆë Ê»d²™Øä]2Y<ŒG”u8FD1ÛÄ1xˆâ Ê»ˆ"Žuˆcã8Ì:ܲxÅ&â‡MÆa“uŒ뀇8#Žq°M&〇8à±xˆcD<ÞuqEë<ÄÁjq¼ ã€Ç8à!ŽqÀC&ã€Ç8Ü"d€B×â?ùËoþ¤…@Ë`ÄÆ‘qÀcš <Ö1x8FðX<Æ!xŒƒM¬ƒMˆQˆ<¬Ã8ˆÃ:ÀÃ8…LäÃ8È<äÃ8äƒLÀÃ8†LÀÃ8È<äÃ8˜×8ÀÃ8ÀÃ8ÀÃ8ˆ<ˆQŒþ<8†8ÀÃ8ˆÃ:ÀÃ8Å8Ø„8äƒ8ÀÃ8ˆÃ:ŒƒM¬Ã8È<ˆ<ˆÃ:Àƒ8ØÄ8ˆƒMŒƒM¬C>ŒƒL¸Å:ÀÃ(äC>ˆCóÀƒ8¬ƒM8†8Å8ÀÃ8Àƒ8äƒLÅ8ÀƒóÀƒcÀÃ8ˆ<ˆ<ˆ<¬Ã8È„MŒƒ8Ø„8ØÄ:Å»ØÄ84ÏaˆƒMŒƒMˆ<ˆ<ˆƒMl‹8ÀÃ:ÀÃ8äYØ„8ØÄ8ÀÃ8ˆÃ:ØÄ8ØÄ8Àƒ8Å8ÀÃ8¸Å:Å8ˆƒ[¬QŒƒMˆC>ˆƒMŒQˆƒóØ„8Å:ˆÃ:ØÄ8ˆÃ»…8äƒ8¼ <¬<8<Œ<ŒþQÈ<äÃ8<ˆC>ŒQˆŒ<äƒ8Ø„LäÃ8ÀÃ8¬ƒMdƒ&œßEbdFjäFVDˆ20ˆÃ:ÀƒL€‚[ˆƒMˆƒMŒ<ˆ<ŒC>Œ<ÈÄ8…8ØÄ8äQˆÃ8†8Å8ˆÃ8ØYŒ<ˆQˆC>ØÄ8¬ƒ8Àƒ8Œƒ8Ø„LØÄ8äƒL†LÀÃ:äƒMˆ<Œ<ˆ<Œ<ˆ<Œ<¬<ŒC>Ø„LÀÃ8äƒ[ˆƒMˆ<ˆÃ8ä<¬Ã8äƒ8þŒƒ8¬ƒ8ØÄ8ÀÃ8Àƒ8¬(üÃ8ÀÃ8äƒL¬<È<ˆC>Àƒ8ŒƒMˆC>Œ<ŒƒM¬ƒLäB‘E>È<ˆ<ˆƒMŒC>ØY¸Å:Ø„8ÀY¬ƒ8äBƒMˆÃ:Àƒ8äƒ8Ø„8…8ÀƒLä<Ô8…8¬<Å8ä<ˆÃ:ÈÄ:ÈÄ:ØD@åƒLŒ<¬ƒMÈ<ˆÃ8ÀjÊÄ:ŒQˆ<È< ¦Mˆ<ˆƒMˆÃ8ˆC>Ø„8Àƒ8<È<ÈD>ÈD>ˆC>Œƒ[¼‹8…8ÀÃ:Å:Àƒ8äƒ8äƒMÈ<ÈQˆƒM<ˆC>È„MÅ8ÀƒþL¬<ÈÄ:ˆ<ˆ<°§8äÃ:ˆC>Å:ˆƒcÀÃ:Å:ˆ<ˆÃ»ˆ2€G*é’2i“âZŒÂ/0ÂŒÃ:…&ÀƒcØ„8…8…8¬ƒ8E>Œ<ŒƒMÈÄ:8†8ÀƒLÀÃ8ÀÃ8Å8XY>ˆƒMŒƒMlK>ŒQä<8QÈÄ:…8ÀÃ8…L¬Ã8ˆƒMäƒ8Ø„LØ„8ÀÃ8Àƒ8¬Ã8ˆƒMÈÄ:Œ<ˆQˆQˆÃ:ŒƒL¬<ˆ<¬QÈD>Œ<ˆ<€Â>Àƒ8¬ƒ•­ƒMˆ<ˆ<Œƒ8Àƒ8ØÄ8ØÄ8XÙ:˜×8ˆÃ:ÀÃ8Æ8Àƒ8Àþƒ8Æ:ÀÃ:†8ÀÃ8ØÄ8ÀÃ8ÀÃ8Å8ØÄ8ØÄ:$8¸…8¬ƒM¬ÃaˆÛ¬ƒMTÒYÙ8ˆ<ˆCÒQˆƒMäöˆQˆ<¬QˆƒM¬ƒMŒ<Œƒ8ÀÃ8ÀÃ8ÀÃ:Å8ØÄ8…8ØÄ8Àƒc…8Ø„8ÀÃ8ØÄ8Æ8˜—LØ„8Å:Å8XÙ:Œ<Œ<Œ<Œ<äÃ:Àƒ8ÀÃ8ÀÃ8Àƒ8Àƒ8E6h‚“:íÓBmÔMˆÂ20ÀÃ:ÀÃ:ˆƒ&ŒC>ˆ<ˆ<Œ<ˆ<ˆQ¬<ˆƒc¬YŒƒ[ˆC>¸…LÀƒ8ÀÃ8ÀƒLÀƒLþŒ<Œ<ŒƒMÈ„cÀC>ˆÃ:ˆ<ˆÃ¶äƒ8Ø„8ØÄ:Œ<ˆƒMÈÄ8¸…8Ø„cØ„8…8ÀÃ8äƒ8Àƒ8˜—8ŒƒMŒƒMŒQŒC>ØÄ:Æ8Å:ˆQ€Â?ØÄ:Œ<ˆ<Œ<ˆ<Œƒ8Ø„8¬ÃaŒ<ˆƒMˆ<ŒÛŒ<Œ<Œ<8F>Ø„LØÄ8ÀƒLØ„8Ø„8ŒƒMˆ<Œ<Œƒ[ÈÄ8Àƒ8Àƒ8Àƒ8ÀÃ8Àƒ8Œ<ˆƒMl‹MPƒl‹MŒƒ[¬Ã8Àƒ8Ø„8ØÄ:Àƒ8ÀÃ8ØÄ85<ŒƒMÈÄ8ØÄ8YÀÃ8Å8Ø5€þMÈÄ8ˆƒM8Æ:Ø„8Ø„8ÀÃ:ÀÃ8ÀÃ8ØÄ8ÀÃ:Œ<¬<ˆ<È<È<Œ<ˆC>Œ<ˆƒ[Œ<ˆƒMÈÛÈÄ8Àƒ8…8Œ<Œ<ˆ<ŒCÒ‰Ã8ˆ<ˆƒ•­ƒ8Àƒ8Àƒ8Àƒ88†8Ø„LÀƒ8¸…8Àƒ8 (Hmûñ²G„€&,#€8…8ŒÂ8Àƒ8Ø„L…LÀÃ:ØD>ˆƒ[È„Mˆ<Œ<ˆƒ[ˆ<Åaˆ<ˆƒM8†MäƒL¬<Œ<ˆ<ˆC>ˆÃ:ÀÃ8ˆƒ[È„MˆƒMäƒ8ØÄ8Ø„LØÄ8…8Ø„8¬QˆÃ:ˆƒMŒþÃ:ÀC>ŒYÀƒLÀÃ8äÃ8ÀÃ8ˆ<Œ<<ŒÃ:ØÄ8ÈÄ(ä<¬ƒ8Ø„LØ„LØÄ8ÀÃ:Àƒ8Àƒ8¬ƒLØÄ8ØÄ*|À@ ƒLÀƒLäƒLäƒcˆQŒC>ˆƒMˆÃ:ØÄ8Àƒ8ÀÃ8Ø3€8ÀÃ8¸E>ˆÃa<äÃ8ØÄ8äƒ8äƒcˆ5@>ˆ<Œƒ8ÀÃ8ˆ<È„MŒƒ8Ø„8¬ƒ8äÁÀƒ8ŒÃ€8Ø%0@8èL…8ÀÃ8äÃ8ˆƒcˆƒ[äÃ8ÀÃ8ˆ<ŒŒƒ8Æ8ÀYäÃ8Àƒ8ÀƒLÀƒ8þØÄ:Ø„8Ø„8äƒ8ÀÃ8È<ˆ<Œ<ˆ<¬ƒL…8ÀÃ8ˆQäƒ8ØÄ8ˆ<äYÀƒ8äƒcØ„8ÀÃ8ˆ<Œ<ä<ŒƒMlKk‹Qˆ<ˆ<äûˆQˆ<ˆ<ˆƒM¬ƒMdƒ&8Äpwq÷q#wr+÷r3ws;÷sCwtK÷tSwu[÷ucwv3wˆ20ÀƒLŒˆÃ8¬ƒ8°L8<ˆ<…[ˆC>ˆ<È„M€Â?È<ˆQˆƒ[È„Mˆ<ˆÃaÈÄ8°‚ìA6œƒ@2Àƒ8ØÄ8ØÄ8ˆC>¬ƒMÈÄ8ÀÃ8Å8Àƒ8Ø„LÀƒ80<Œ<ŒƒMˆÃ8ˆÃa¬ƒ8ÀƒLŒ<Œƒ8äÀƒLÀƒ8Ø„8ŒC>Ø„83@6ÀÃ;,€ÈÂ8Àƒ ì€Lä<ˆQÈÄ:ˆ<ˆC>ÀÃ8ØÄ8¬ƒ8Œƒ8ÀƒLŒ6€8Œ<Œ<ˆÃ8ÀÃ:ˆ<ˆ<Œƒ8Àƒ8¸Å:ˆþƒMˆƒMˆ<ˆÃ:ˆÛ8ÛÈ„MˆÃaˆƒMˆƒMŒ<ŒƒMÈ<ŒÃ:Æ8ˆC>ˆƒMÈ<È„cÀƒ8Àƒ8äƒ8äƒ8äƒ8äƒMˆÃ:¸Å:ˆƒMŒÃaŒƒM¬ƒ8Àƒ8 (h÷ÃC|ÄKüÄS|Å[üÅc|ÆkˆƒMˆ<Œƒ8ÀÃ8ˆƒMŒ<äÃ8ÀƒLØÄ8ØÄ8ˆƒMˆÃ8°Í:ÈQˆQŒ<ŒƒMÈQÈQÈ<ˆƒMŒƒLÀC>ˆQˆƒMŒƒ8ÀƒLÀƒ8ØÄ»ˆƒMˆÃ:Àƒ8¸Å8ˆÛˆƒ•þ<Œ<ˆƒ[¬(üQŒQŒ<Œƒ[ˆ<¬ƒMˆƒMˆQ¬Ã<8¬<¬ƒ À8PCDP€ €Ã8¬Ã6 Á € €C>PCüHÀDƒMÀ¾80ì<¤Ã @l@4À%L<ˆÆ!xè$âGEÄ1ŽŠˆ N¸W‘qÀcð‡EÄqÀCã°ˆNà1 P ŒaþãÉXF3ži¬WD F⨈84QqÀc:GEÖqŒ£" 8òqäÃ"ë<Äq4Q+ɇ8Æ‘xˆ⨈8,ò™Š|:±ˆ8ò!ŽŠŒ#ð<Æqäƒ{:áÞJà!xˆcG>Zµ’ŠŒ#<ÖqÀcâ€G>H"x¬£U‡&ú±qŒcð÷Äqäâ€ÇJÖ¡xˆÔ@2ÄuÀ#5 Ž 1#ð Æ$ÐO 8Ô€NÖA poÌ€8Ö±Š4¢€‡8bÁ€uTbðXþÇ*>àˆ Ô€NâA ˆƒÇ8òÁŒŒƒ‡EÄ1qÀc%Ì€6 q¨@*¸<¨!‹„chÐÉ:Vñˆ6@ë †Ä1ŽuP# 8¨!€u¬dâ É:ÄqTdM´ÈJà!Žqäcù€Ç8à1µ®CðøÌ8*2ŽŠŒ#<Ä1xŒ#É÷ÆQ‘•äâ¨È8*2ŽŠè¤‰ë¨ˆ8ÆaqÀCÇ8H"xäcâ°È:–Š·¼¶±•íli[[ÛÞ·¹ÕínyÛ[ßþ¸Áîp‰[\ã¹ÉÝmF± F `‡þ&ÄQ‘qTDðÇ:*’•Xd%âXÇJÄAqXD〇8à‘•ÀCëàž8H"Ž|¬C'ùG>ÆA’qÀc‡8Ö1xŒCY<Æ!xŒÃ"+Ç8ò!ŽŠŒù‡8*2‹äcð‡8Ö±’ŠŒCGEÆqÀcðÇ:H2‹ŒâðÈÇ8*"xˆc%Y‡EÄ‘qdðÇžuˆ* 8¨€hˆ±HÀ:ºm´jâ FàQ!j+‡N˜q„c§<˜!xˆHF±Žp àã€3°Žp @à€‡/þ Žp ãG, °Žn ð<òqˆ# "‘pˆÃAXÀ'ÖA¬Cç˜ Îqlc§‡8˜!qP#ùÇ:ÂmT„ȇ8*"x¬ë°ˆ8à!xˆ+GEÆ‘uTDëÇJt’q¬Dð‡8,"Ž|¬#ãÐIEıxŒC'ðÈÇ8ı޽ÂcðÐ <Æ‘•XdG>ÆA’qÀc‡8à!xŒƒ{â€G>ÄqTd%â¨È8,2 Pœå)WùÊYÞr—¿æ1—ùÌi^s›ßç9×ùÎu®\ŸÿèAúÐiþQü‚X‡8ÆQMTD'Ñ <>#Ž|ŒCðXG>à1Ž|ˆ£"ã‡EtTdùX‡EÄ1x¬¤":GEÄQ‘qÀcâ¨È8à!ŽŠŒCù€Ç8ò1Ž|ÀCð<ÄqäcG>à!ŽqÀCðÇ8Ö!xˆâ€Ç8à±qŒ#G>ÄqÀcðÇ8*ò­qäc$<Ö!PäcëÐIEÄ|ˆâ€Ç8ÄqÀcâ¨È8à¡x¤"{‡5î \Àƒ`Á:¬¡ ¬.`A6àa NÀƒ¨È8¨!€qäCaFÄÑþ$Îa "ÄaJ@Àaº¢AÎáÆÁªÖaÆÁ`¶Ax@'\€ÄÁjaàAàaàaTP`à ´a¨AÄ!~àÆÖº!’Îá`¨AÖAÖT  Öaf ưÁ V¬à¬`*b*BòÆÄat¢"ÖÖ!*bàAòtÄÆÆAÖA*B*bÄ!,bò¡"Ä!àAàA,B'Æ¡"Äa%òAÆ ÅÆZ%ÄaÄ!þ,¢UàAÆAàá3*b%òÁ"tÄa4arQw‘{уQ‡‘‹Ñ“Q—‘›Q§ØB§‘«Ñ¯³Q·‘»Ñ¿ÃQÇ‘ËQC~ÄÆA4$ÆÁ"Ä!Ä¡"ÆA*BÖaÄ¡"ÆAòaàaÔjÖaÄÆAàA'òAàa*"Æa*b*b*bt¢"Ä!>CÖAÖaà¡U,bÄÄ¡"Æòa,BHb*BàaàAÖa%àaàA*"ÄòA'HBÖAàaþtt¢"@¡Hb*bàaàaÄÁ"ÆÁ"ÆA¸'Vá@Jt‚à`Œ@'à`À¤`¨AÄÄ`àAàAò@Öá$€8  "Ä€Ä ÿ@"3@'¶¡*€â@t¢Z ÀÆÄaZ`,bàaàà²aÎ!&Ä "ÀÀ Äá 2ã@ÖÄÄaZ 8 ÄÄÆ@àAàAàa%t‚{ÆAàAÖþa%Ö¡"Æ{Ä!Æ¡"Ö$ÄÆ>Äa%ÄÆAàAàA¸G'à!ÄaàAàaàAòa,bàAàá3šH*B*BàAòaÄa,BàAàþ {ÔGHƒTH‡”H‹ÔHI“TI—”I›ÔIŸJ™T²AÄÑJ¯K³TK·”K»ÔK½4D*Bò4AÆtÆ¡"ÖÄ$ÄÆ!àaàAàaà¡UàaàaàaòA*B'Hb*BVbÄaàaòAàAàA',Bàa*"àaþ*BšhòÄÆÄaÖAàA*bàaàAàAàAò¡"Æ!Ä¡"Æ¡"VVB­*B'Ô þA*B'ÆÄÄaò¡"ÄÄÆAòÄÖÄat¢"ÄÁ"¨!*B'Ö!Àa*B'ÖA'*BàAàa*bàaˆAàAàA'àAÖÄZt¾e*bàÁàA,BàaÄa,Bà!*BÆAòA'Öa%ÄÄa¨°"Ä!ĨÖA'HbÄaÄ -b>ÃÄaÄZÄZeþàAàa*bò¡"ÆÆtÂ"ÖAòa%àAÆÆÆÖA'àa*BÆ¡"Ä¡"Ä!Ä¡"Ä!YW¢"ÄÖÆ$ÄÆÖAÆ¡"ÆÁ"Ä!ÄÆ¡"Ä{tÆÆaàA'Æ$ÖþAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàþAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAþàAàAàAàAàAàA'à@áK_–cY–g™–kYC`– "VBD!Ä¡"Ä!Vb*B'àa*BÖaÄÁ"òAHB'òaÄaàAÖÁ"ÆÆÆAà!Ä¡"òaÄ Å¡‰ÄÆtbÆÆA,bàatbÆ¡"Ä¡"òa,BàA'òa,bàa%àA*B'òat¢"Ä¡"ÆÆÄÆ{ÄÆÄ@áÄÁ"òA,">ÆÄ!àa%àaĨ°"¨ÆaĨA,B',"šhþàaàA'àaòaàÁ~`àA*BàA'àA’Õ"ÄaàaàA*BàaH¢U,b%*Bàa*  € +Ä¡‰Ä!àaàAÖAÖÖ¡"Ö!àAàa¸G,B,BàA'ÖÆA'òa,B,bÄ!ÄÄt"Æ$ÄÄòaÄ¡"ÄÖÆA*bÄÆÄaòAàa,b*BàaàAòa*"VBàaà á¡U*b%àAHB*B,"ÆÆaÄ@áÄþ曾ëÛ¾ï¿ó[¿÷›¿ûÛ¿ÿÀ\ÀœÀ ÜÀ\À³Al™ÁÜÁ¹”DaÄÖ!àAÆÆ¡"ÆAòA'Ö¡"Æ!Æ¡"Æ!àA>Æ¡"Ä¡"ÖAàa,b*BàAàA*bàAÆaÄÆÁ"Ä¡"Ä¡"Æ!Ä¡"ÖA'ò¡"ÄÄÄ¡"Æ!Æ¡"ÄaÖAàAÆ$ÖAàAàA*B'àa*‚ Å¡"Ä¡"Äaò¡UàaòAÆVÆ!ÄÄþÄá3*BÆat"Æ!ÆÆþÄ!Æ!àAàAÖtÄâ¨AÄaHB'ÆÖA¨Ä{tbÄ`¢!Yס"¨P*BÆÆÁ"t¢"Ä¡"ÖAÖaÄ$ÄÄÄ$ÆÖÀ!HáA¨ÄÁ"ÆÆÄaàaà áa*BÖAÆaÆÁ"zÄaàa¸GHbÄ!*bÄÆ¡"ÆAàaàa,B*btbàAàAàaÖA*B,bòÁ"Ä¡"Ä¡"ÄaàA'ÖAÆ!ttbàaÄa%ÖAòZ¥‰ÄaòAþ'*b,B'*bàaÄÄ¡"Äaþê[ë³^ë·žë»Þë¿~Àu€¾—"ÜìÏíÓžÁC@–Äa%ÄAàA',b*BàaÄatbàa*BòaàAàa*b,BàaÄ!ÆAàAàA*Bàaà!Æ$Æ¡"ÆAàAÆAÖ¡"ÆA*bVÄÄÁ"ÄtbàA*Bà!ÆAàa*BHB,B'*bHB*BÖ$ÄaàA'òAàAÖÆÄþòA*bàA,bÄaÄÄþÖaÄa%àAàAÖ$ÄÄÁ"tÖ à \'Nœ@xâà<(p¼‚ëăWž8âÖ‰['Nà8xù Šƒ'N 8âÖ‰ƒ·îà¸u⊃'Þ8xâàoHxâà‰ƒ'n8xâà­Ë7® xãâ,O¼‚ðÄÁwpÜÁ|ãŠ;(N ¸qâÖ+(PÅ•ÏAãä#NdãD–@ã4<âÀ#Ò8‰8‰#Ð8ðŒ#8ëÀ#Î:ð¬3<ã4ÎAë04N>’Ï8ëÀ#<â4Ž@ãÀ“ÏAâ¬s8 ‰c™8‰#8YV<âTCâÀ#Î8ðˆ™8ã04Ž@ëÀ#Ž@³‡#Ð:þ8ðˆ#8 ‰8ù$ÎAâÀ#ÎAâTÐ:âP 8ëD¶Î8ðˆ#8‰sÐ:â0$<â$Î8ðŒ“8ãÀ#¥âÀ3N>âŒ8ðŒÏ:âÀ#Î8#P\ðä#8ÃÐ8ðÙ:ðŒÏ8ð¬SÐ8ë4<ãT< 4<ã$<âÀ3ÎA1dÙ: ü : Ð (È€‚ µ„Nµ  Æ:  Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2þ`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,Æ2`,ƒ :   Ç˰ (ñE/ýôÔWoýõØgO^£üÂÈðˆešŒ8ðˆ8ðŒ“8ðˆÃP>âä3Ž@â”8‰Ù:<Æ‚ÀCðÈÇ8à!YåcAãȇ8Ö± q¬qÇ8Ä‘q,q‡8à1qp(ãÈ8àþ±q0¤ ù‡8"xˆ#"‡8à1xŒâ<Ä1q¬ èÇ:à±qd 8ò± q¬ë<Ä!q¬#2ã8ˆ8b™‚D±ÌAÆqÀCðÈÇ8ò°uÀ#〇8ÆQxˆC –H>ÆqÀC〇8à!xŒCY<ÄqÀc‰ ¥â"+ËÄ2YÇAÆqd 8Æq¬C<Ö!ËÀC‡82qÀcðÇ:àQƒˆc‘Ç:àQxã8HAà!xˆ# bHAà!xˆƒ!â8ˆ8àQþ¢ƒäcð(QA"Ž|ˆã(H>Ä1†Œ£ <Ä‚ÀC£ø<’S‹ôÐI¨B“Ã~è€ ü(ø±ÐŠZô¢¿a?ŠÃ~ô¦ùȇ,*ðC­è– í¹ô¥0©LgJ½ˆbŒÀAÄ1ŽQˆc< 2xˆã€Ç8Ö1x¬£ ãÈ8à1ŽÈˆã€Ç8à1ˆã ã€Ç8Ö!J‰#.ëÇ:ò!ŽqÀcùG>"Ž|〇8ò!xD âÈ<ÆqÀcðXGAà!ŽqDëÇAÖ!xŒCãˆ8౎þƒˆG>Ä1Ž|ˆƒ!âÅ?Ʊֺöµ°­lc+ƒÙºÖ¶…­ `k‚Üú+ø­p‡KÜâ÷¸È…­ „»‚ä¾ù‡t°ƒÞa;Á¼Q†îÖB!v… !A;Ð>þ!„˜WæÕyw‹~¨Á¼:0¯Ì«ó2áBÐyu`^&|§רƒyu`^˜W:h„˜˜WBÐúÑóêÀ¼:0¯Ì«óêÀ¼:0¯Ì«óêÀ¼:0¯Ì«óêÀ¼:0¯Ì«óêÀ¼:0¯Ì«óêÀ¼:0¯Ì«óêÀ¼:0ïÖ0Œ}þôãœú¡!èÀ¼½iDoö‘!0áæÕyu`^˜WæÕÁrñ5¡7L臘p óêÀ¼:0¯Ì«!èÀ¯‚„‹f˜WæÕèp|ÈãuØv ƒá7ÓMGMêR›úÔð &–Áˆ¬CÑ„8à1YÁ£ ù‡@Ö!|ŒC$‰ <Æ!‚ä£ ð<Ä!qÀC<Æ!ŽÁCù<Ä±ŽƒˆcðX8౎ƒˆC 뀇8"ÄEð<Äq0¤ )<Ʊˆù‡@ƱJ‰c<Æ!xˆþC  è¼Â;¼þÄ[! ËÀââšë  !ù ð°!ù0ð1!ð ù ð0ð!ð0 1ð Qð ð ð°ãããã!"ãâ0âã !ã â0âãÀãâ0ëpãë ð ð 1ùâë ÐðÇÁÿÿ×4\¹jÐÃB<ÄD\ÄFÜBpÄJÌB€ýp ð°?;µP]P¿pÅq»Mù ·K û M è°²ZðþSÐS ýÐZÐq«ûÇýðSÐZ + ZÐM ý°ZÐ+»j0Sýp·’<É”\É8»D0M0½ðýPu°Z°S°²ZÐM ýÐZKÐZ8›ò€ùÐù ç°²Z°jй€DÐZÐM ý€³ò ùÿòp8› ý0Kð³K ý5»`Ðs‹  €ä\Îæ|ÎèœÎê¼ÎìÜÎîüÎð !  ËÀâã š ð0ð0ð ðãã°âãPÐð0‘âã ùþ0âàÐ=-ð° -ð0â¡Ñð ]-ð ëãPÐã *]Ðâããùã ð =QÐù0âããâ°ð -ð 9íÐqâ°ãë = ÿ; Ø%;°–;ð`Ø%;`^;ð`:Àÿ°BнpB€]B€]k‰]Ø%„½–9°õÐÀð¶B€]B°B€]B°æµ†]¶ki^„]æ…]B°B@ØæµŸm^;`^;ðÙ; ; ; Ø%¡MØæµBÛ;`^þ;ð`Øe^;ðÙØõ`¹-¡-Ø%¡­; ;ð`ØÕæ…]B@ØæµBàÛB°k¹k‰]¶«]B°æµB@؆]¶æÕ; ; ¾Ýÿ`^;ð`; ÿKàÈK°+;M0zP zP z0M0>áSÐެÿ0>áM0­p+«ÿS ÿ°²S ýÐZÐMPàS°SÐZ°S°²½pM ý°+«üÐZM ÿÐZð+;ZðþäPåR>åT^åVåM0M0M0M0b ÷ÐZðS°M þýÐZÐM°ùàÈkÐSPàM gpkÀb dàÈ­pM°`ðYÐZÀM ýPà+Ûç}Þ}NM0M°ÿ@ ÷о²Z°sÐSÐS°ý°SÐSPàŽÜË ßë²>ë´^ë¶~븞뺾ë¼Þë¾þëÀìÂ>캢€ Œ-ð  -ð =ð ð°]q¡Ñëë -ããPÐâàÐâãàÐâ°Õð0ð =ð --ð°ð ð0ùqãPÐââ° ùâàÐâþ-qQÐë *--ðPã ãããâPÐë -ð ÿ°«=ó4ÿ`DÀýÐB@LðMÀýð`LÐB ý@ ×àå «½tp`À–àÍü 5ŸõZ¿õ\ßõ^ÿõ`¿ÚD@ó"öfö«-¢Yïý°Ú ðëàÈŽÜr?µ ŒP]ÀµP÷M0M0MàÈkð޼²M0MàÈõðù€ù°À°kÐŽÜkÐS ý0ˆ?M ZÐr¯ÿÐkÐr¿ý0kðS°ÿàÈÿ ޼ÿÐS€øþ¼ßû¾ÿûÀüÂ?üÄß޼u?M°ý0kÐMàÈZÐS°ý0ZðM0ZЈïÈM°k É_ú€ͼÀ0kS ý0MP÷M°ý0MP÷í@ S`À0ÑdJ“)Û+8¥I5tMšLqè°à4Pÿ,^ĘQãFŽ=~RäH’%MžD™R¥Ç£–1 0ÞLqšÄÁOBׄH“ÖBš&¤^"!Bšìó“£I "‰4i£5‘&9ˆ4!Ò„H"Mˆ4ɱIk‡Dši"‡&ˆh‚ˆ&Ök‚ˆ&ˆh‚ˆ&Zk‚ˆ&Zk‚ˆ&ˆÈ¡ "šÈÁ¡"Â!"šÈÁ¡š Â!"š Â!""¢ "š Â!"š "ýˆpˆˆ&ˆpˆý"¢‰õrh¢;!rh"""¢ "r ¢‰Ê¡ "š ¢ þ""¢ "š ¢ "r ¢‰ÖrX/‡&ˆh¢µ&ˆˆˆˆ&ˆÈ¡ "r ¢ "„hBˆ&ˆÈˆ&rЈ~úÙçŸõš B“ÄIHŒ„ a—Ð ¡–#!1Zã1Nc 1 ¢£?΀µ}¦X£Ÿ„ÖèGŒ)þñãÔK×èÕ^î)¨žDĘ¢—¦XCŸ)Öè§ j€)¨š~¦@5[m·å¶[o¿7\1.B‹Yü8µ—{¦Ð‚Ÿ‚ÄX£Ÿ)ÖÐGŒ5ú™BŒ)þñCŒ‚Ę‚Š5ô¹”Žü€õŒVî™bĘ"?Èb }ĸ4—s ZcŸDÈC‘}29•”æ#þ¡SÊF^†9f™g¦¹f›oÆ9gwÆ(Q~ad€žàMÃKxÄgœqÖGxÆÉ§§™ÆÉgxÄgqfgœ|f'Ÿ™Ägœ™ÄGxÄgqà¯qàYžqà'Ÿ™Ä™IxÖ™Iœ|Ægœ Öžqòq‚êiœuÄgxÆ Jœ™Ä™ixÆÇé Ö™i™ÖqfZg&PògHÛ›ÈávýˆÐâŸ|öÙ'Ÿ:šÐB‡€Ð¢Ÿ%´øgŠ%–ЂÛµègŽ&rA§ &öÉD ‡rÐ=|ñÇ'¿|óÏGÿül~‰ôß·=ø—hþb‰ñû±ÈöQòGŒ)ĘB¶B †Z„À€¿C´USý£ùèÇ?^11LáTÕhª¦°†|$b ý8ÕÖÐ1L¡øÈ‡!N51¬¡ÿÈG?Ê‘ˆ/ˆAî(Ç;2¡/¬á_XÃ?PUr¸ƒÿÅ”¸D&6щO„"ª¦ð…5èâ‹*G¾°† j ýøÂô!†5èC SC/öCˆa b˜‚î!†‚ˆáÍ ªÖ€D¬¡b˜B/ò±CLUSàGAÄ0Eô£¨j…<´51¢ý؇?ü ­„œ  àY(E9JR–Ò”§ e@ñ F þ/âÐ<Æqˆc&ãJOò1Ž™ŒCëJOÖÑxäƒ1â€Ç8à!ŽuŒc&ãèÉLÄqÌdA<ÆžÌD3qÚ8f2Ž™Œã€Ç8z’qÀCAÇ:z2“qˆc&ùÇLz’§e3‡8à!xˆc&ã€Ç8à1ŽžÀCA‡8à1qÀýXÇó¦Ð>Ž6a åhA–0…&ha§RD=^±-ôc MX‚þÑ-ô£ K˜‚ú±„&,¡ MhÅ=¦Ð„5äC M˜B ®Qrd¤ShG§°„&,¡ Khš°ý€¤YB–Я–Õ¬þ ÕÏóšpÖ%4a MX‚C–à%4a MX‚C–Є)8äyMX‚C–ÐŽÚn Mh_– Ÿ)4a YB–0…öég MXB–à%4a MXB¦Ð„%4áyM˜Âó¦Ð„)´¯ KˆÈš°„)4a MXB–Є%8d K˜Âž×‹€´  ø‡8Î 2h+b8CÊÐ…S… [døB·¾ ­3 Š _8Õ´E1 Ú:C·¸uõžj Ù:Î@†3á d8Î@†3á d8Î@†3á d8Î@†3á d8Î@†3á d8Î@†3á dþ8Î@†3á d8Î@†3á d8Î@†3á d8ƒyQõ1œ g@έ/lë §"ƒÈpª3p‹ _8Õ²õ…S}áTæEÕ´+1œ¡½êUD?2¡­3UÙÐ*Õ¼f6·ÙÍoÆHD F`âÇL4Ñqä 8à1¼ôdù˜É8à!¤ã€Ç8‚"Ž ˆãÈÇLÆ4qÀC3G>Ä1qÌDðèI>àÑxôdùG>f2qÀcðÒÆ‘xŒëÇ8‚²ŽžÀcðúŒ‚4a M …>¦Ð„)4A‰M€âšP‡$¤ Llš0…&L¡ išP&\ª iÂ¥šP‡L¡ išñ„,áRMP¢Cxž&(± iÂÐØ„‚4¡‰MPúšPL¡ iBA@ñx  VbHØÄ01œA[°:,Ò~ü£b8ƒ`%†3ˆá b»È †3|![dû©`%†3ˆá b8ƒÈv1œ §2/þªê°SUg@ÕPuTUg@ÕPuTUg@ÕPuTUg@ÕPuTUg@Õ¶u†SA °"éÎ@T™W d8ƒÎð2pë d8ƒÎ †3ˆ!ì¨J˜ê€*2ˆá §JªÎ †3œê ¨"ƒÎp*2œA g8¨Ð qœA ;•yÏ€ PÀÙÿÿÀ@‹QøFxè xQ˜‰ux‡™xx‡™‡upšž˜‰qxq€>˧xxxè xxxq€‡ž€q€q€qXx‡™‡™þ‡™X‡q` q€q§™xà3xx‡žX‡q‡ è x‡ ‡|¤Aq€qX§‡q˜ qX‡q€‡q€‡u€Pè‡|ƒ)ƒ‚ƒ)ƒKƒKƒ)rYƒ~(1 s†)¨‡L(ˆ^à‡)Xƒ~ƒ‚Xƒ~ :ø?H˜VЇ)XƒIƒ)x}ƒ)ƒ‚ƒKƒ)ƒ„ƒ„**˜1(ˆSI1˜1˜1¸1(1˜1˜1(1˜1(1¸1(1˜‚l™T™1H1˜1(1˜*(1 ‚„ƒ)*˜1˜1(þ1(1 ‚‚@•)*°Ç) ‚‚ƒ‚ƒ)8•)@•)*˜1˜1(1˜‚S¡‚„ƒ) ‚‚ƒ„ƒ) ‚Kƒ„ƒ‚ƒ‚ƒ)*(1˜1(1˜1¸1H1 1 ‚S™1(1H1HPøx»žôIXñƒ3ð1;1øÉ£Dʤô1HʦlJ?Xñ1€?Xñ1€?Xñ1€?Xñ1€?Xñ1€?Xñ1€?Xñ1€?Xñ1€?Xñ1H?pÊ„ñƒÃôƒÃdÌ£ôƒÃôƒ¦$ƒ°óƒžÌþM¥ÌÔÌÍäÌÎôÌϼˆd`„` M˜‰qȇq˜ q€‡ž€qŠu‡|ŠqÈx‡|€qŠq‡|Šqȼ‡™è ¤‡ x‡q˜ q€q qx¤‡|‡™‡ ‡™‡ Èx¼‡|‡q˜‰q˜ qxxx1‡|€‡ž˜‰uxX‡™‡Qè‡qƒEÐUÐMÐ5È28Ð) ~øEx‡rx‡R؇/Xƒ~@Ð5è‡/@Ð3¨†fHÐ5؇DXƒkȇ}(‡L`P‚/ƒ/˜‚1˜‚=P2˜þÒ ý‚) ‚‚1˜‚/˜‚1ø‚)ƒ)8ЄàÑ)HÐ)8Ð)Ò)ø‚1ø‚)PÐ)Ò1˜1ø‚)@Ð/˜ý‚)8Ð/˜1˜1˜‚6Pè‡q??ƒE•ƒ3`Ô3ð9ð989xFÅÔLeÔ3xƒ3ƒ3ƒ3XÔ3`Ô3ÐÔ3X‘ƒ7ÐÔ7ÀÔ78ƒE=LõF…98ƒL}F}F}F}F}F}F}F}F}F}F}F}F}F}F}F}F}F}L}M]Ô3ÐÔ7ÀT?XÔ3ÈÔþ7ÀT??8?`Ô„ÑÔ78ƒL=Lõ9xpeT?XÔ7`Ô78L}ƒ/ÈÔ7XT?XÔeÐt؇…؈•Xž QXFxq€qЄq‡ux¼xx‡™Xxx§‡u‡™xx'x‡ux‡™¼‡q€‡q€q€q€q˜‰|p¼q€‡|‡™xxxXx¼‡™‡ §qxxxè xXxxȇqŠqè xxxxX¼‡ à3xXPèxø1822þ2ø‚3 182ø‚32ƒ/ƒ3HÐ3 1€181 ƒ„©1 ƒý1 181 ƒ3Xƒ38Pó2€10/1 1ø‚5¯/8P28ƒ=1 ƒ/ 1818ƒ%ƒ/8P2828Ð3 1øóú1 ƒ/ƒ32ƒ3 1 182ƒ/€=ƒý‚3@PXAP22 ƒ/8Ð/ 182ø2ø‚3 ƒ3ƒ3ø1ø‚ý‚/Xƒ3ƒ3ø1H2ƒ/ 1ø2ƒ/81ø1ø1ø1822HP2@Ð3ƒ/þƒ/8181 ƒ/ ƒ/X!ƒ/ 1ø2ø1`1ø1 ƒ3ø‚38Ð3 =ƒ/ƒ/ ƒ=28Ð3ƒ32ƒ/X!1 ƒ/8ÐQèxx9xƒE=M}9x9x98~×7ƒ7`Ô7ÐÔ7ÐÔ7ÀÔ30dF}ƒE}L}F}ƒ7ƒ7ÈÔ3`Ô3`Ô3`Ô3`Ô3`Ô3`Ô3`Ô3`Ô3`Ô3`Ô3`Ô3`Ô3`Ô3`Ô3`Ô3`Ô3`Ô3ÀÔ3˜äL=L}ƒE}ƒL=L}9x9xƒb^Ô7ÈÔ7ÀÔ7ƒ3˜ä7XÔ3ÀÔ7ÈÔ7ÈÔþ3XÔ7`Ôi…‰eçvvçwvXd`„‡|€qX‡Q‡™ðçqž qÈq€‡q€‡ž€qÈx‡|x^‡|x艙x‡™xx‡qXqȇqxè x‡u€‡qx艙x‡™x‡|‡™x‡™‡™‡qȇqhxxo€q€q‡|˜‰ž‡|è xxxà3x‡u˜‰Î…~‡£ôI1èÉ/»`;8282ƒ£$¶îI1H2»/H1ðƒž$ƒ£ü¾Vìņ2ðþƒ3ðX!ƒŸüÅöƒŸÆ>2ÐìΆ•/8?èI1ðI2H1€2ðìŸ`Å&¾&ƒŸ…~€C~9„Lõƒ@ f9ðƒ@ÈÔ@èmL ?~ L}ƒáFõƒ@XT?„Eõƒ@XT?„Eõƒ@XT?„Eõƒ@XT?„Eõƒ@XT?„Eõƒ@XT?„Eõƒ@XT?„Eõƒ@XT?„Eõƒ@XT?Fõƒ@n?„Þ9xƒL C„7˜ä@ÈÔ@ f?9ðƒ@ f?Lõƒ@XP€ç7ñGñ— QXF§™‰q…q€‡qxþ‡™x‡™xè qèuqX‡ž€q€‡žXx‡qx‡™è‰™xx‡qðgq˜‰qxx‡|€‡q˜ q€q€q€‡ xè x艙‡uè xxxxȇqðgqXx‡™î‰|‡¦ž‰qxXPøqð9ø?ðƒ/ƒ3ø?ø?89ðƒ/ð98ƒ7ð9ð98989€9H98ƒE}?ƒ/x9ø98?`T28ƒ7€•E=F…•Eý9ðƒ3xP?9898ƒ/XÔ3þ?8?ƒ/?x?€?ƒ3ø?ø9ø9ø9H?€?ƒ/ð9ø?ø?ø?ø9€? 9 ?ƒ3XÔ/ƒ3XÔ3???ø?ø9€98ƒ/ƒ/ƒ3ƒ3ðƒ3ø9€98ƒE=ƒ78?XÔ/ƒ/x?ƒ/?XñXñƒ3ð9H989ø??x989ø‚L=989ðƒ3?898Pÿ9€?H?ƒ/ƒ3ð9ø‚7ø‚Eý9ð98?xXñƒEý9ø989ø9ð98?ƒ/?øþ?ø98F…èŒu t^>‡u¨|x茙è q€‡xˆxˆ‡Í7ý™‡u0ýu8ý¦¾^xèŒq€‡É‡‡É‡‡É‡‡É‡‡É‡‡É‡‡É‡‡É‡‡É‡‡É‡‡É‡‡É‡‡É‡‡É‡‡É‡‡ÉŸ‰Î˜‰É7ýsðçÎxèŒÓ‡u¨üuèx¸‡™xX‡ÓŸüu€‡q€‡ÎØüÎpšu‡u¨üx€‡ö‡öxˆe þ,hð „ 2lèð!Ĉ'R¬hñ"F†!F!cž8xâÄiÊ7Jx#QŽƒ7.eJqðÆåƒiÞ8xùlŽ„'å8˜ãàåþ—RÜM˜âÆÁgS\R›ãRŠ»9å8”ãò—r$ÌqðÄ¡\'nJqãÖæƒ'n¨ëÞÈyc÷9wßä½û%Й7rÞä-\øœ@g Ÿy#çMÞ7rì¶køò›ÂoÎØ=c7o ß•óFΛ3oò¾É{WÎ9o ¿ÉûFŽ]9{ï¶+Ç®œ7yßÈy“÷œ7rÞÈÙ{Æ®»rÞ¶+çMÞ7rÞä}sFΛ¼oä¼9óFÎ9o ¿É{WÎ]9oäØ•óæŒœ7rÞ\~#çoäe—{‘—]rØ%ÇrØ%Çr¼!‡]r¼!‡]gÈaW^oÈñFaoÈþñ†vÉñ†{aØ(ùÀ³Œ0¦´<âÀã:âÀƒ#<Â#<ãÀÃ#<1ÂÓã8ð¬OŒâÀ3ÒH8ÂÔ#Œâ¬8ðÄŒãÀã8ðÀ8<0ŽŒãÀã8ðÀ8<0ŽŒãÀã8ðÀ8<0ŽŒãÀã8ðÀ8<0ŽŒãÀƒã8ðP¹J1Ž“Ï8(ñˆÒ:ãÀ#<<Žƒ’88ŠÏ8(Mº<âŒÏ:ðŒƒÒ8ð¬:N>ð¬Ï:)ÁOŒð¬3NJ0Ž“Ï:Ó€²³Í:û,´ÑJ;-µÕZ{-¶Ùf‚&Ë0Lâh’’8ã¤$<âÀ#<ãþÀ3<ã $Î:kÁ3Ž8ðˆÏ8ðˆÏZâÀ³ÖMâÀ3Ž8ðˆÏ8#Á3<#Á³<##ŽMâÀ#NJ⤴Ö8ðˆƒÒHðŒÏHðŒ“8ðˆ8ëŒ#J㈓’8ð@‰Ò8(å³<ùŒ#Jâ€ò8—Ɉ҅"G †½!G ybX y½ˆao(ý†a\öÆeäHÓr¼‘v^äÛ†’W qÛ}7ÞyâÇÝ4HÞvâÞo~x^ žv †òJëÀƒãH(#<âÀ#JãÀ3Ž(³<ëÀ3N>⌳<ëÀ3Ž)ŘÏ8#Á´ŽMþãÀÃ#<ãÀ#<0³JkÁ3Ž8ëÀ³<ãÀ³<ãÀ³<ãÀ³<ãÀ³<ãÀ³<ãÀ³<ãÀ³<ãÀ³<ãÀ³<ãÀ³<ãÀ³<ãÀ³<ãÀ³<ÆuÀcðX<Ʊ”Œ%ã<Æ!xŒ#%ëŒP"ŽuŒãÀÑHn2¡DðXJÖ!”ˆâXFqÀcù<Äq d$ðG>ÄqäC(<Æ’‘$e$)G>F‚’| d$ã<Æ’µÀc-ðG>Ä1xŒ&âHÉHÆqÜD)IJÄqØD ˇ8Ʊ”¬ë<@±˜Ä#)6<ÆÁc(<Æq“uØ$ñ€ Œl2xÀë°& 4xhuðJÄq d$kÇ8à#q JëGŒà!Ž|ŒâÆ!Ž”ˆcð‡8P²xŒc$0Ç8Fr“qˆ& Jòqˆ#ÉÇ8ò1x¬â€ÇHà1q d)I>Ä1qŒC(<Æ“qØdð<ò!xŒâHÉ8Ä’uÀÿXJÄqäcðÀJÖ’|Œ0‚Ç8FqÀFðJÖuÀCðÀ<Æ’åcðè<`„’qÀc<‚Ǫ`µÀCðXıŽþqÀc)É<Ä‘q d6¸8Ö‘’‘ÀCë¸É8R²xˆâ° ÚQ’qÀ#ã€Ç8P2”Œc) <Ä‘ DIGJÆ‘q¬câXJ²¡ þr¾óžÿ<èCoŒŒÀZà!xh%ã@‰8R"Žqˆë€Ç:ÆqŒëHÉZÖ!Ž”ˆ%ãÈ<Ö’qÀCù€‡8P2xä%ã€Ç8à!Žqäã€ÇZò!Ž|ˆ ËLÖ!ŽqÄS(G>Æ“uŒ#ðLÄ‘q d$ã€ÇZÀÃHÀÃ8¬<ŒJ¬ÀÁƒ8ÀÃH€Â?ÀþŒÀÃ8ÀÃ:ŒŒJˆÃ:ˆÃ8ÀÃZäLˆ<Œ<ˆÃ8Àƒ8äƒ8¬ƒ8Àƒ8à<ˆ<À<¬…8ÀÃ8ÀÃ:ÀŒŒ<Œƒ8Àƒ8Àƒ8ÄÈ8ÀŒ Ä:Œ<ÄÈ8ÀÃ8äƒ8¤Ä8 ÄHäÚ<ˆ<ŒJÄJˆ<ˆ<ˆ<ôÈ8ÀCŒŒJŒ<¬Ã8¤ŒÀƒ8¬<¬Ã8 ÄH¬ƒ8ÀC¦<Œ<ˆJˆÃ:ŒJˆ<Àˆ8¤„8Àƒ8¬Ã8¤„8 DŒŒCJÄJŒ<ˆ<ŒJŒJÄ<Ä<ˆŒ¤ŒÀƒ8ÀCŒÀÃH¬ƒ8ÀÈ8 Ä8ä<¬þÃ8ÀÃ:ÀÃ:Œ<Ä<Œ<À<ÀJˆÃ:Œ<Œ<¬ƒ8€Â?ØÄ: ÄHÀÃ/„7Ö<Œ<Œ<¬CJ¬<ŒJ¬ƒMˆÃ8¤Ä:ÜÄ8 Ä8 Ä:ÀÃ8ÀÃ8 „8ŒC>JŒJ¬<Œ<ŒJPCÀ5<ˆ<ˆ<Œ5<¬CJ¬CR¬CJ¬CR¬CJ¬CR¬CJ¬CR¬CJ¬CR¬LŒ<¬JˆÃ8 Ȥ„8¬JŒ<ˆÃZÜÄ:ÀÃ8ØÄ8ÀÃ8ÀÃ8ÀÃ8äÃ8¤„8ÀÃ8 Ä8$Å8ÀÃ:ˆÈÀƒ8ŒJŒ<¬<ŒC<­LŒCRˆÃ8þÀÃ: Ä:Àƒ8 (ˆž[¾%\Æ¥\DˆÂ/0B Œˆƒ&Àƒ8ÀÃ8 „8Œ<äÃ8Àƒ8ÀÀÁC>ˆÃ:Àƒ8Àƒ8äÃ8 ÄZ Ä8ˆ<Œƒ8äÃ8ÀÃ8 Ä8 Ä8ˆ<¬<ŒD>ˆ<ˆÃ:Œƒ8Àƒ8äÃ8¬Ã8ÀÃ8ˆ<ˆÃ:Œƒ8Œ<Œ<äÃ8ÀÃHŒ<ˆ<Œƒ8 „8ÀÃ8ˆ<ˆ<ŒJŒCJˆÃ8 Ä8ˆ<ˆJäÃHäƒ8¤„8¬CJˆ<ˆƒ5åÃ(äÃH¤Ä8 Ú‰<Œ<¬<äÃHäÃ8ÀÃ8ˆCJŒ<äƒ8ÀÃ8Àƒ8¤„8ÀþÀÁƒ8¬À¥À¡Ä:Àƒ8ä<Œ<ˆ<ˆÃ:Àƒ8ÀÃ8Œ<ˆC>ŒÀåÃH¬<ˆÃ8 JŒLäƒ8ÀÃ8 Àåƒ8¬ƒ8¤Ä: ŒÀƒ8ÀÃHÀÃHäƒ8ÀÃH D}ŠJˆ<ˆC>ŒJˆJ¬ƒ8¬ƒ8äÃ8 Ä8Àƒ8Àƒ8 ÄHÀƒ8Àƒ8 ÀÁÃH¬<ˆ<ˆ<ŒJÀ<ŒD>Œ<<©8 „8ÀÃ8äÃZˆ<ˆ<ŒÃH „8ÀÃ:ˆŒŒJŒÃH¤„8ÀÃHäÃ8ŒÄ:ŒD>ŒÄ:ˆ<ˆ< <Ô'<ˆ<¬C>ˆJŒJ€Â?ŒLŒƒ8 þDÀÃ2”AtA-äCˆ<ˆ<Œ<ˆ<ˆCPÀ@ DÃZÀC>ˆ<Œ< A$Ã8ÀÃ8ˆ<Œƒ8 ÄH`CäÃZÀƒ8¬<0À»nÀ0ˆJˆ<ˆ<Œ< ƒˆ5<ˆJŒ5<Œƒ8 Ä8ˆ<¬…8 Ä8ˆJŒƒ8ÀÃZˆJŒƒ8 Ä8ˆ<¬…8 Ä8ˆJŒƒ8ÀÃZˆJŒƒ8 Ä8ˆ<¬…8 Ä8ˆ<ŒÃH¬<Œ<äÀåƒ8ÀÃ8¤Ä8ÀÃHÀC>ˆ<ˆLŒD>ŒJŒ<ˆ<ˆ<Ü:ˆ<Œƒ8 „8ÀÃHÀÃ8þ¤Ä8Àƒ8ÀÃ:ÀC>ˆC>ˆ<äÃ8Œ<ŒD>Œ<Œ<ŒÃ:ˆÃ:ÀÃ8ÀÃ8ÀÃZˆ<Œ<Œ<Œƒ8 ÀÁƒ8¬Jdƒ&$„äN.åV®å^.æf®æn.çv®ç~.膮ä†À( # €8ŒCJhJŒ<ˆ<ˆÃZÀƒ8Àƒ8ÀÄ8ÀÃHÀÃ8ÀÃ:ˆ<ŒC>ˆ<ˆC> „8ÀÃ:ˆ<ˆ<ŒJŒJŒDJŒCJŒC>Àƒ8ÀÃ8¬JŒC>Àƒ8 „8Àƒ8Àƒ8ŒÃ:ˆCJŒ<ˆC> Ä8À„8ÀÃHÀƒ8¬<ŒJˆÃ8Àƒ8Àƒ8ÀÃ8ÀÃ8 Ä8ÀÃþ8¤ÄH¬CRŒ<ˆÃZ¬(üCJ\RˆCJˆÃ8¬J¬<ˆ<Œ<ˆJ¬JˆJ¬ƒ8 5LˆCJˆ<ˆCJ <Œ<ˆLŒ<ˆCJˆŒˆCJ¬J¬Ã8ÀC>ÀÄ: Ä8ÀŒŒJˆL¬Ã8ÀÃ:À <ˆJˆJ¬<ˆJŒDR¬<ˆ<¬ÃMŒ<ˆŒ\>ˆ<ˆ<ˆƒMˆ<ŒCRˆÃ:¤„8 „8ÀÀÁŒ „8X“8ÀÃHŒƒ8ä<ˆ<ˆC> „8¬<Œ<ŒDJŒJÀˆM¬ƒ8 Ä8 Ä8À„8Àƒ8À„8ØÄ:ÀÃ:ˆÃ8ÜþÄ:€B?ˆÃ8ˆ<ŒDJ„<ÈC³8ÀCÀƒ8ÀÀÁƒ8܃  B6XÃ0@>ˆÃZ „8 ÃhäÃHÀƒ8ä<¬<Ü6À8äƒ8 Ä8À3€8ŒÃ4@Àƒ8 „8¬<ˆÃ8Àƒ8À5@JˆJPCˆC> ÄH „8ä<Œƒ8äJŒJˆC>ÀÃ8ˆC> ÄH „8ä<Œƒ8äJŒJˆC>ÀÃ8ˆC> ÄH „8ä<Œƒ8ä<ŒC> ÀÃ:¤Ä:ÀÀƒ8äƒ8¤Ä8Àƒ8ÀÃ8ˆÃZ Ä:ˆÃZäƒ8Àƒ8Àƒ8ØÄH „8ÀÀ<þˆJˆÃZÀÈ8ÀÃ8¬ƒ8 „8¬<¬ÀÁƒ8 „8ÀÃHäÃHä<\>ŒJˆCJ¬<ˆ<ˆ2€‚è¶a6b'¶b/6cWnˆÂ20äÃ8ˆ<ˆƒ&$E>¬ƒ8ØÄZØ„8ÀÃ: „8¬<Œ<€ LˆJŒLˆJˆ<ŒJŒ<ˆÃ:ŒJŒ<ˆC>ŒCRˆ<äÃ8Àƒ8ÜȈ<Œƒ8Ø„8ÀÚ¡D>ŒLŒJŒC>ŒC>Œƒ8ÀÄ8Àƒ8Œ<ŒÃH „8äÃ8À(üÃ:ˆLŒJ¬<¬JŒJˆÃ:ÀÃ8äÃH 3À€”À0¬þJŒÃ: Ä8ˆ5<ŒƒEÁ„8¤Ä8ˆƒM A$JŒCJŒÃ:ÀÃ8ˆC>¬<ŒCJŒƒ8äÃ8ÀÃ: Ä8 Ä8¤Ä:Àƒ8¬<ˆ<ˆƒAÃ:ÀÓ8ÀÃ:ˆLŒ<Œ<ŒCR¬CJ¬ƒMŒ<Œ<¬Jˆ<Œ<ŒCJ¬ƒ8Àƒ8Ô8ÀÃ8XÓ8ÀD>ÀÃ8 Ä8ÀÃ8À<ˆÃMÄHJ¬ÃH¬<¬<ŒÃ:¤„8ÀÃ8 Ä8ˆC„Ã8¬J<¬JŒÃH€Â?ä<ˆƒMäƒ8„À/è=èA-„ÀM¬<ˆ<œÃ8ÀÃ9øˆC>ˆ<ˆ<ˆ%01þÀ8 5Àp€lÀ0¬C@4€,Àƒ8 3€8ÀÃ:C¬5Jˆ6€8Pƒˆ5À8ÀC:´À<@À:Œƒ8¤„8ÀÃ:Œƒ8ÀÃZˆCJˆ<¬Ã8ˆ<¬…8¤„8ÀÃ:Œƒ8ÀÃZˆCJˆ<¬Ã8ˆ<¬…8¤„8ÀÃ:Œƒ8ÀÃZˆÃ:ØD>Œ<Œ<ŒÃ:¤D>¬J¬…8¤„8ÀC>ˆ<ŒJäƒ8¬CRŒƒ8À„8 „8ØÄHÀƒ8 D>ˆŒ „8ÜÄ8¬CJˆ<ˆJˆJ¬J¬LŒCJŒCJ¬ƒ8 Ä: D6hBcO=ÕW½Õ_=ÖþW.Œ20¬ƒ8Àƒ8ÀÃ(ˆÃ8Àƒ8€Ì:ˆ<Œ<¬<ˆC>ˆÃ8ÀÃ8¤„8Àƒ8¤„8Àƒ8äƒ8ÀÃH¤„8 „8Œ<ˆLˆC>ˆ<Œ<ŒC>ŒCJˆ<Œƒ8ÀÃZˆ<ŒCJ¬ƒ8 Ä8ÀÃ8ÀÃ8 „8ä<ŒC>Àƒ8¬…5­Å:ˆÃ8ÀÃ8¤„8Àƒ8Œƒ8Àƒ8ÀÃ8 ÄHŒ<äÃH „8Œ<¬ƒ8¬(üÃ:ÀÃ: ÄHÀÃ8 Ä:ÀÀ¡„8Àƒ8¬CJˆ3€8xƒ5xàB>¬ƒ8äƒ8¬ƒ8ä<`ƒŒC>Œ<Œ<ˆÃ8ˆ<ˆ@Œþo¼uâà‰'.¼qðà‰C7@qðÄÁOœ8xâà­·n\¾qð:®[×±#ÆqP#ÉÇ& xP#à€‡8¨A€uPC〇8|"f`@¢!þj@ù5jÔ<¶1€dÀc¾DÆÑxtdãDÆŽÀ£#ë‡8 2xtYÇ8Ä‘qÀ£#ðèÈ:Æ!ˆŒGGÖ!x¬cÉÇ8:²xˆ 8à!x¬£#ù<Ö‘ŽÀc 8à‘q@DéH>:²ŽqˆÇ8 "Ž|ŒCDÄ‘qÀ£#ð<Ä‘ŽÀCëè<ÆqÀ£#ð‡@:’xŒCð<Ä‘q°"âM64+qŽ“œå4ç9Ñ™Nuª“£@#0xŒâ…OÆuþˆ£3ëð‰8 "ˆˆ〈8|"xŒ"ã€GG|â%xŒ,Ç:Æ1(xŒã€È:à±xŒ"â<Æ!'qÀCð<Äq‡8¼4ˆˆcëðÉ8à1ˆˆHGÆuˆ"〇8’q¬âE? Òú¤#>YK  tÆ<\Àm c@€5ÀqXCA€5 ˆ`ƒðX‡ XŽtŒ@ãÈ<:‘ <áøÄ:àÑàçàÄ8|2Žu@d‡OÖá“qÀc‡œ²ŽŽäc«>Y‡8Ò™q´þV âX‡8 ²qäâð‰8%ŽÐŒâ€È::#x°d«ëèŒ8Æ‘xˆ*<ıŸ¬GG "ά£3ëðÉ8 ¢x¬£3ãèÌ8 2Ÿ¬â€€øDðÐÄ?:²qøDù€ˆj¡‡]èùÇ:à!ŽqÀ£#+pŠŽŒcɰq#Ñ5°j@Ô@G 2ˆ0câÇ9 €xP#ð<¨A€qP#â †àAtÔ<ƑЌ#ðXÇ8ò!ŽÐŒ#ðXÇ8ò!ŽÐŒ#ðXÇ8ò!ŽÐŒ#þðXÇ8ò!ŽÐŒ#â€Ç8ò‘uˆ"ë“8àÑx¬cð<Æáqäâ€Ç8ÖŽÀC>YDÆ‘xˆÃ'â€Ç8 "x¬lðX‡8|²xŒ뀈8:Ó‘qÈIù€ˆ@òqÀCðX‡8ä$Žqˆâ@(\•le/›ÙÍvö³¡mi3;¢X#ÀxˆCð<ÆáqŒã€È8B3ˆˆã€È8Ä‘ŽÀCGGòqt$>G>Æ!Žqˆâ€ÈÊÖq¬â€Ç8à‘qˆãÇ8à1ŽÎt"â€G>:#xäCþù<Æ|ŒÃ'ÉÇ8 2qäC>ɇ8 "xtù<Ä‘u€"GhÆqtfðGgÆ‘f@Y1 Žp âX1 j ñ€‡/ jã€5 Žp  /°ŽÎˆƒH8†0x¬#ØÃ5ò‘qâ€Kà!xŒãà~à ¾à þà>á>Dá!ÄaàaàAòA|BàaàaàAà!Ä"ÄÆAþàAàaàAÆ¡# Bàa BàaàaÄÄa bàaeà!ÄÁ'òAòaàaà¡#àABc:ÄÄ"ÄÁ'ÄÁ'Ä"ÖÆÁ'òA "Æ¡3òA àA "ÆÁ'Ä"òa ‚,ׯÖÁ'@áàaÄaÄ"ÆÆAàaàA ÆA b::‚`ÀJÖ"Ð ðǤ`¨Aþ À:XA8€â@:¢Z  "T V&@°á àXÆ!Ä!ÄÆAþBà¡#òA ÄÄXòaàa bàñÅÄÆAàa:ÄÆÆ"ÆAà¡# "ÆÆA¼|ãĉƒ7Nœ@qðÆ‰ƒ—OÜ8ƒëàoœÆ|ãàƒ7N HqÅÁ3hpâÀ3Îfùˆ#Ð:ðˆFâÀ3<âä#ÎNãˆÏ8âˆ$<ëˆÏ8ðŒO>âÀ£<ãˆÏ:ãÀ#Ž@ãÀ³ (ÿ܈cŽ:îÈc>þdBId‘F‰d’J.ù#£ ÃÈð¬Aš¬8ðˆ8ù4<Ác<ãä8O>#AðˆÏ8ùþŒ“ÏNãÀ#ÎfðŒ8à „ÒfâÀ#< 4ÎNã4Ž8"‰Aå3<ã¬8ã¬c<ãÀ3N>â4<눣‘@⌳Ž8ãˆ$Î8ð¬3<’ò<âÀ“<åc<ÁcP>ðŒ³“8‰³Ž8눳Ž8Œ³ŽHâ0¶™8ëÀ#<ëÀƒR>ðˆ#’/ ˆ3N>âÀ£ÑNëÀ³JñÀ#ŽHÏ8‰O>âì´Ž8ùÀ#Îfã¬#<âÀƒ<âäÏ8‰A‰Aðˆ3Ž8ùl¦‘8ù $<­#’A‰Ai”H ´N>â¬#<⌓Ï8þâÀ3Ž8ðˆ#8;­3<ùˆ3Ž8ð¬#<âŒ#Î8ðŒ8ðhAðˆ“A­#Ž@ëÀ#ŽHâ4N>ðˆ“<âä8ðŒ#’8;8ëì´Î8â$(ùÀ#ÎNâì$Ù8ùˆ3Ž@⌳“8’­Ï:ã$<ãÀ³<∴Ž@‰´Ž8ŒÁcÐ8ùì$ŽHëÀ#<ã$<눳JÁ#<ëÄ<âdÐ:‰ã§8"“Ïfãä#Ò8ùl6N>"“ŸâÀ3N>âÀ#N>âäAðˆ8ðˆ3N>âäc<ãÀcFùˆ£äC;1H>2ˆþ‡84qäc<ÖqÀà "‡@Ä1xŒÇ8òqä 8à!ŽuÀà ð‡F"Ž|(Ù‰8Ö1 P0iˆD,¢ˆÄ$*1I!Å21qˆDšˆ8D2äcùXÇNıŽqD"<Æ‘qlfâX‡84qˆ#ãØÉ8à1ŽuDù<Æ!qÀcâˆ863Ž|ŒC〇8à1qDãØI>Ä1qÀCëH>Æ!ƒÀCë€Ç8àaäCð<Ä!|ŒÃ ðÈÇ8Ä‘qÀCëÇ(ò!d›þ‡@Ö1”ø)0€¿ â cÄud;ÇN4n ÖÐıxŒâc ²qøI$â€Ç8²xŒCð‡@Æ!qˆC ãÈÇ8à!xˆC$â€Ç:Æ!xˆcž›É<4"xŒâÈ:6“q¬CÉ8²xŒc'<ÆqÀCë<Ä‘xŒ☧8à1xˆC ëðÓ: "qäC;YÇ<DZˆc'ãÇ:ÆÀC#ð<Æ!‘ŒCð‡HÆ!ŽuÀcù€‡AŠ~ˆDðX‡8ò!ŽÍ1þH>ÄqÄ ð@ <Ä!ƒ¬CY‡@ "q¬Cð<Ä!q¬Cë€Ç:à±q¬Ã ð0<ÄuˆâI>Ö!xˆâX‡8à!x¬c'ëÉ8ÄqˆC$Y‡FÄqˆc1È:4"xŒCëЈAÖ¡qÀcâˆ82xŒã˜ç8à!ŽuÀc"1ˆHıxˆC ãX<Æqˆdɇ8vbxäcðЈ8àÆäc"1ˆ@Ä|ŒãG> qÀC#ðGIó±xŒë˜ç8à!xˆÙÐÄ_ ãËxÆ4>RþF Fâ‡@4!ŽqDÑÈ:ıqŒc'ë‡FD"ŽqÀCÇ8à!Žqä뀇8òax¬CðÇ8àa|ˆã€Ç:àaŒ#ð‡@Æ!xŒ 8à‘qÀcù€Ç8à1Ž|Œã€Ç:D"ˆC#ð‡HÄqÀC"Ç8ÖqäC âÇ:Ä!’uˆ〇8à!x€âYG>Æ!qÀC›G>D2xŒâØ<$ƒÀ%ð< qÀC뀇8à!xŒC â€6(ЀØ@ðXÇ8ò!xŒˆ8þ#ƒÀcâˆA"xŒãÈà1xˆC$âÈ<Æ‘ˆ#"G>à1Ž|Dù‰8òqäC â€Ç8à!x¬ëÇ8à!ÀC<Öã°âë ââ0ð ã ããâ01ð "±â°â â0ë ãâ ã ‘ã âëã ãâãâ ââ0ð0ð ""!È 5Æ„Mè„O…C¢° Œ0ðþ! ããââ°âã "‘âù "!ù0ð ë0Á›!ð`±ð`ð0ë ã ð ðà 1ùã`;á ð0âã`ð0(ãâ âââã°âãâ !ù0"1ë âà' ±â(!aù0ð0ð`ù ð ð°(âà'â°ââ!(±â ââ°a›!ð "!ù!â(³;!!ë0ëþâãã ð0â â(!â â â â°"að ð0â°‘ã "!ð ë ù ‘ã°âââãâ â°â‘(!ã (!!ã ââ‘â0ââ ùâ â ââ°ð ð0â°ã ‘±ðð°ð0Œ!£ù ã°ë âù0ð0ù !ðãë ë â ëâ0ð€"Áð°âã°¡ð þð ù ë ð ëã°ã°ãã°ð°âââ Œâ°!ð`!ë0!ã ð°ã ë0âãã ð°ã ë0âãã ð°ã ë a!ð ð !ù0"ð`1"!±âù0ðã`ð ’(!ã ~’ãù01ù ãâ0"‘ãâ â0âã ð !ðã`1ë°â°‘ š…Iª¤KʤGÄ£€ Œ0ã°þâë  ë`ð ð0ð ã 1ëãâ a!"aããà1Oã !±â¡ù â01ùã!ù ââ ã°âÀâ0ð0›1ù 1ù`ã°âã11ðÀâ° ð±ð ;!ù ±‘â ã ±âë±±9"±±ã°pâëããâ°ã ââ0¡ù 1ó¤~2ù ã°âââ0â°âþ â â ã ë0â ââð`ã ë !!ð0ð°â0ð0~b"!ð°%%;!ë ãââãâ â°ëà'àâ!!"1!ã!ð !à(ââ ÿ°ãð€2Œëë€ãâ0ð0ë ð Wð ð ð ãù ;1ð`ã âãâââãâ ë ââ0ð ë0ââ°âãã ãþâ AQã"1ù ã!!ð 1ù â ââ ãð0ù ›!ð "!ã ââ°â ‘â0a"±â ù âëâ°ãð0;!ð€të ã°â0ð ãâ0ð°ð0â0â ã "1ùâà'â°â (!ã 놠ФÌÁìÁ8¢ð Œëâ š â ë 1Oâã !ù "11"‘ãã ù`ð0ð0ð0âã âþâ â0~"ð ù âã ã ããã€ð0"±ð`ù !ð ë0"!ë â (!ù ë ð !ð ÿÀ;1ð ð0ð°1ð0ð ð0ë ’Œ!"Áð ð°ð0ð°ð°âã ë ð°ð0ð`"!"1ð0ëë â±ð ã ð "1ð ù ð0ð0â°ð0ù`ã ð ~’ð0â0Oã ã°âð ›1"‘â0;þ11aù°ð ð°ðãã "!ð !ð ãã ã ã°ã°ã±â ã°ããâ!ù ð ð°ã 11ð ð ð ð "!ð`ù`ð°!ð ð° ðð ›!ð0"‘ãù0â°ð€2ù`›!ð0ð0ð0ð`"!ð ð ù ð0ð0!"!ð`ð ð`‘ã ð°±ð°ù0ù0ââ ã ãããââ°þð0ð à!ë ;!"!ë "±â â°ã ëã ëâ°ã ù ð ð ~"ù0ð`ë ±ðâ0ð0±ââ ãâ°ã "1!ù ù0ðãù ›±ââ ââ ââ°ãã ã ã ã ã°ââ0â°‘ šðÁŽá>c0 ÈÀ`ð`š01ð`"aãã ã1ð0ù ð0ð ã ù ãë ë ð°"aù`ð þù0"!"1ðâ0â âã±ãâ â01ð ð°ð ;!ð°!ãâ0;aã ã âà'ëëââ°ð £ðð ãââââ0ð°ð ð°ð ã ŒŒâëâââãë ã ã (!ëâ ââ!âÀð°â°ãùã âãâ‘aã ù°ã àâ âââãâ0;þ!ð0¡ð0ð`àâ ð`ð`ð ±â â ë âã ã ã â0ù€2ð ð0aâ0ù "!ã ãâ0ð0ð`ð`ð ù ð°ð ±âãâ0ð !;!ù0›Á!ëà'â0 ý ð ãë(âëÐë@â0ë ð ›1"!ã "±ãââ°âã ã ããëQRë ã â â0ð°â°âã !âþââë€ðâð0ù ð0â ãâë ù0ð 1ð ð0ù ãð01ð0ð ±âã ããë "1aù ã°ð°ð ð`"¡ù ð0ùâ ù0âãë ã°âãÆÁƒ'nà1Ž|PfðÇ:2Ž|Dã€Ç8²ŽŒÀ##ÉAÄAq@Dã ˆ8Æq¬cù ˆ8qÀCY‡8ƱqŒãX‡82xˆG>Ä1‚ˆƒ âÇ: "xŒã!ã ˆ8à‘qä##ã ˆ8à!þd€â%KejSúT¨FUªS¥jU­zU¬fU«[åjW©Q,ƒ H41xŒã ˆ8ò!xŒã! 8²‚dä!â€GFà1‚d$â H>Æ!Ž|Œ##ÇCò1x¬ãAÆñ|ˆcâÈÇ8"ŽuÀ##ëˆ8ÖqÀcÉH>Äqdð<ÆqÀcù<Ä‘qÀCð<ò1xˆù<ÄA|ˆƒ Ç:@ñ‚Œâ ˆ82x¬ë€G>Æ!xˆƒ ë€Ç8à±xÆqÆqÀcɇ8ÖqÀCðÈÇ8"‚Œâ HFÖ‘xˆ#ã ˆ8à!ŽuŒCð<Æ!xˆã€G>ÆAqˆã È8à!Ž|ã Œ8à1xDðÇ8Ä‘Œ¬##ð<ÖqÀcâ ˆ8à!xˆã!yˆ@2qäcðÇCÖ!‡þâùAÄq¬ã OPÂt¡ 1°Cl „7à‚ˆcð<ÆñqÀCðG>BŒÀCðÇ:Ä1‚<ŒAÄA|ŒCðÈ<ÆAqPCÓ‚GFà!‚Œƒ  8à1j #ðȇ@à!xÆ‘uë¬8Ú”<Á#Î8ðˆ8Ñ“ŠÝÙ”OtâD'Î8ðŒ#<ãä#Ntâä3<ëD·Îâ@0Š“8ëŒÒ8Ý­Ï:ð¸ÓÆÜ\rÈ!å\RçuëÀ3N>뜳Œ5#ðÏAãä3ˆÃ àŒÏ8Ì05€Ï8Ô 5ÀCðŒ#<ãDÇ À§P#€8Ô5ÀÑDGÌâÀ“OtâP<ÔŽ8ãPC<þât3¬3N8$#Î8Ä$O8ì‘ <ùÀCM0Â#Îuâä#Î8ðˆ3Nwëˆs]dEgÓ:ðˆ3<㈳M °.ðP€6âÀà ç`À:Ô8ÔÏ8âä3€Æ;0ÀÑQ@2ð 1AtÔ5ŒsÝ/€ÆDæ àÏ8ðŒs34p@œr8ãˆÝ2 dÔ´ÓOCµÔSS]µÕWcµÖ[sݵ×X‡ Ê2Œ ÏAùˆ#Ê8Ý“Ï8ÑÔ8ë´Ntë\7Îuâ¬3ÎAðˆO>ëÀ#Ntãˆs8Ñ8ðŒ#NtãD'þ<âÀ#<Á#Î8â4 8×EÏ8âÀ#Ntã\—Odщ]>âD'<âŒs<6Á#ÎuëÀ#<âÀ#Î:Ñ(ÿˆsÝ8âÀ3<å#N>ëÀ#NtâÀ#Î:ãˆ8ù0À:ðP3€ë7à@t«|à@ 5¬“5¬#5„ùÆÑ¬|Œã:〇8ÖqÀcð<ÄqqäÃ&âˆÎ8à‘ƒDGë€Ç8¢3ŽƒÀÃ& 8à!ŽuÀc]GtÆq¬cÿ€‡8¢3xŒCðG$Ž xŒÁòÈÇ!Þ!xDFº‡/q¬ã Ì€8˜pÀã Ì€8¨!xˆcÔ<¨!qPCù€Ç8ă0Ù˜F6BˆƒˆŽ8°!qP#â€Ç8¨xŒcc² †ÄAÀCë †àqxˆâ`Fıj`þ}ës€8ొ`§5°q\gðX<Ä|Ø㈎8qäC×ÉÇ8ࣃ¬Ã3HÀ;¨!xˆÔÀ:¨!qPCð5›ˆ#RÅ–‘eˆX`@tˆ€hˆƒ5 Žèˆ#˘F7° d,ã:° À0/xˆ#Ì@6¦qèŒù€Ç8Öe€âkŠ],cëØÇB6²\ãÀ(Á\gð…8ÆudâÇuNÓ,qŒã€Ç8à!›DgùˆŽ8à1ŽuãG>¢#ŽëD&:âÈ<Æq4KþÝ<òqŒâ€Ç8¢3Žî Màqšu\gÑ<ÖqDGðÈÇuÄ‘uÀcÑGtÄqƒ\F øÄƒ„c§‡8˜!xPCâ5 xPCâ€Ç8à!›¬CðG>à1x¬#: à8à!ŽëD&: 8Æ‘èˆ#Ñ9HÇquˆâ°I>ÄqÀc 8Æ!xŒ£;âGwÆÑƒÀcð°É:Ä›Àã ãG>Ä1Žë‘‰Ž8Æ‘q\Gðþ<Ä‘›DGð<ÄqÀCã€ÇAà1ŽuŒãÇ8à!ŽqÀcùGtæxœëG>¢sq¬ã:â€Ç:àqxˆã:âÈ<ıŽèˆâ@tÄuDg ø‡8à1x$:ëpGŽÀ pŒá9DtÄq‰Fàð…ÆuD‡G7ŒëÄ¢ð FÄuPCâ FàAØ$ðGt˜€ƒ\‡€6qÀƒ€G8qä#Œl"jÔ@tÖA \Gð<˜q¬£ˆÆAÆ!Žuˆcð8þ‡ °l`ѱI>ÆqqŒcâÈGd¢3xŒ£;Y<Äqš|dÑÇ8ˆpP# 8¨!€uP#ë F`DŒã:â‡8ºAxˆ#:ëX€`€'ÀƒX5q\gâÀFºt,çÐÀ®3xŒƒˆ <Æqœ&âXÇ4@!ÙÓ£>õª_=ëµQü‚<ÖqhBðGtÖ|Œãȇ8òaq\Gð<|ˆãÈÇ8à1Žèˆ£;â€Çi¢3Žf69HtÆq\GðGtÆqDç ðˆŒþKÅ‘ƒäC×G>Ä1Žƒ¬CtˆÃ8DÇiˆ<Œƒ8Àƒ8ÀÃ8Àƒ84Ë:DÇ8Àƒ8¬<€Â?äƒ84‹8ÀÃ8¬<¬<ˆCtˆ<Œ<ˆCtØÄ:ˆ3€8¬ƒ8¸ dƒ8X'ˆC7@4ÀÃ8ü€ˆ5<ˆ5À:ˆ5€8äƒ8ÀC>ˆÃ:Àƒ8ÀƒMDèˆ<Œƒ8ÀÃ8äƒ8\Ç8tÇ8\‡8¬Ã8ˆ<¬C³ˆÃ8Àƒ8ÀÃ8äÃitG>ˆCtŒÃA\‡8ÀC>ÀÃ8ˆ<Œƒ8DG>Œ<Œƒ8äÃ8ˆCwˆC>Œƒ8äÃ8D‡8äÃ8DG>ŒÃ:ÀþÃAt‡8tÇ8Àƒ8ÀÃAŒCtˆ<ˆ<Œƒ8äÃ8¬<ˆ<ˆ<ˆÃuäƒ8\ÇAäÃAÀƒ8DGd¬CtŒƒK‰C>ˆ<Œ<Ø„8DG>Œ<ŒÃuŒC‰<¬Ã8D‡8DÇ:D‡8¬Ctˆ<Œ<¬Ã(ü<DtˆC$DB<ÀC$A2ÄøB>ˆÃ!ˆCwŒƒ8ÀCü‚7ì‚€@tˆCtˆ3€8Àƒ \@4xƒ3,@ˆ5<¬ƒ8Pƒˆ5ŒCdDG>Œ<ŒÃuˆ<D>ˆÃ8ˆÃ8\Ç8ÀC>ŒÀƒ8`Cü8là 08PC\5€8Pƒ¬5@ttCDƒ8D‡8¬Ã8`CÀƒ8ÀÃ:Ä‚hÃ2dÃ4äŒ5€8„Ãhƒ8Ø„8Àƒ8`CDtˆ¤8ˆ5 .¬ƒ8ÀÃA0C¬<¬ÃAÀC>Ä:Àƒ8¬C6hBdYçubgvjçv.Œ20äCd¬ƒ&ÀÃADÇ:ŒÃ:DÆ8D‡8äþ<ØDtˆ<ˆÃu¬<Ä:ˆ<ˆÃ8D‡8¬C³äƒ8ÀCdÀÃ8ÀÃAÀÃ:äÃuÄ8DÇ8DÇ8äÃ8Àƒ8ŒCtˆC‰Ã8ÀÃ8ÀÃ8Àƒ8ÀÃ:DÇ:ÀƒMÀƒ8ØD>D‡8Ø<äƒMÀƒ8äCtˆÃuDtŒ<ŒÃADÇADÇA€B>¬<ˆƒMˆCtŒC>DFtˆÃ8DÇAÀÃ8Àƒ8äƒ8À3ÀAÄ: A €HAtüpÄA¬5€8¬5€8À5<Œ<ØD³¬C>DÇiÀÃ8DÇAD‡8ŒCtˆ<ˆÃ8DÇ8äÃ8ˆÃuˆCtØ<Œ<ˆþ<ˆCtÄ8ˆC>ˆÃ8ÀÃiÀÃ8Àƒ8DÇADÇiä<ŒC>ÀƒM¬CdÀÃ:ˆCtˆÃu¬ƒ8ÀÃ:ˆ<ˆCtˆÃ8ÀÃ:ÀÃ8\Ç8ÀÃ84ËA4K>ŒCwŒCt¬ƒ8ÀÃ:„Ž8ØÄuˆCt¬CwˆC³Œ<ˆC<¬<ˆC>ŒC>ˆ<Œ<¬ƒ8ÀÃAÀCdÀÃ8ˆ<ˆÃ8DÇ8äƒMÀÃ8Àƒ8¬ƒ8DÇ:ˆŒÃuˆ<Œ<Ø„8äÃ84Ë8ˆ<ŒCt¬<ˆ<äƒ8\Ç8ˆÃ8Àƒ8Œ<ŒCwˆCwˆÃ:ÀÃ8\G>ŒCdÀƒ8ÀÃAÀC>ŒCtØ<ˆCwD>ŒC>ŒCtŒ<Œ<ŒC>Äu¬<Œ<äƒ8ÀÃ8ˆC>ˆ<Ø„8D‡8ŒÃuŒƒ8Àƒ8\Ç8D‡8t(üCtäƒ8DÇ8ˆÃ:tÇ8ÀC>Œƒ8\ÇAÀÃ:ÀÃA\‡.‰CtÀˆ8\‡MˆÃ:ˆÃuˆCtÀ<ŒCtˆCtþ<Ä:ÀÃ8äƒ8äÃ8DwˆÃuŒ<ˆ<äƒMˆ<ˆCtŒÃuŒƒ8äCd\‡8\G>ÀÃ:ÀÃAäƒ8D‡8Ð8äÃ:ˆÃ:Œƒ8¬Ã8ˆC>ŒCwŒCtˆ<Œƒ8ŒÃu¬<ˆCtŒ<äƒMˆC>ŒCtD>ˆ<ØDwŒƒ8Œˆ<Œ<ÄuˆÃ:ÀÃ8Àƒ8ÀÃ8ÀC>ˆ<ØDtŒÃ:ÀÃ8\‡8DÇ8ÀÃADÇiÀÃ8Àƒ8DÇ8ÀÃ8ˆÃ:D‡8ÀÃ8Àƒ88\‡8ÀÃA¬ƒ8äÃ8äÃ8\Ç:ˆÃ:ÀÃ:\‡8ÀÃ(äC³¬C´4ðÂDB=€ƒœþŒƒ0\Â;äƒ8Àƒ8Àƒ8\‡8ÀÃ:Àƒ8¬ƒ8D‡8ƒD8Àƒ8À8Àƒ8ÀÃAÀƒ8DGdÀŒDÇ:DtäÃ:ˆC³ˆCtˆÃ:Àƒ8ÀÃ8ÀÃA\G<øBäÃ:ˆ<Àˆ8¬ÃAÀƒ8Àˆ8\‡8D‡8äÃ:„N<ÀŒDÆ:À8Ä<Œ<ˆŒ\Ç8Àƒ8DÇAÀƒ8ÀÃ8ˆÃ8\Ç8\Ç8DG>ˆ<Àˆ8DÇiˆŒˆÃ:ˆCtˆCtÄuˆC>¬<ˆÃ:äÃ8ÀHtD>¬ƒ8DÇA¬<ˆ<À<ˆ<ˆŒDÇ:ŒÃ:Œƒ8¬ƒ8tÇAÀƒ.ƒ8ŒÃA¬þ<ˆ<¬ƒ8\‡8À<Œ<ŒCtdƒ&HM~ë÷~ówû÷x€ ø€x8Ô„À( # À8\‡8hBtˆCt¬ƒ8tÇAD‡8DÇAÀƒ8Àƒ8ä<Äu¬Ct¬<ˆÃ8ˆC>ÀÃADÇ8äÃ8D‡8Àƒ8Œ<ˆ<Œ<Ä8ÀÃ:ˆƒKÃ:ˆƒMäƒ8Œ<œÆu¬ƒ8¬ƒ8ÀÃAÀƒ8Àƒ8ŒÃuÄ8Àƒ8ØDt¬<ŒCt¬C>ÀÃ8D‡8D‡8ä<ˆÃuÄ8\Ç:Àƒ8€Â?ˆÃ8¬Ct<Œ<Œ<Ä8¬ƒ8Ð:\‡.‰C— ÓDÇ8D‡8Àþƒ8\‡8Àƒ.‰<DtˆÃ84Ë8Àƒ8ŒCtˆCtŒCtŒCtˆ<ˆCtŒ<ˆC>tGdŒ<ˆ<¬CwŒÃuœ<ŒÃu¬<<ˆÃ8Àƒ8Œ<Ä:ˆ<ŒC>D‡8ÀÃ:ˆÃuŒC>ŒÃuˆ<äƒ8Àƒ8ŒCtŒ<ˆƒMäƒ8ÀÃ:ˆÃ8\Ç8D‡8äƒ8Œ<ˆC>Àƒ8Œ<Ø<ˆÃuDtˆ<ˆÃ8D‡8Ø<ŒC>ˆ<ŒC>ˆÃ8äÃAŒCtŒC>ˆÃuˆC>ˆC>D¬ÃA¬<èRt¬CèèRwÌ <ˆC>Àƒ8ÀÃA4ËA¬Cèˆ<DtˆCþtŒ<ˆ<ˆCtˆ2€ÂÃüËÿüÓýÛÿý_DˆÂ20BØDt„8MâàÁ·ž8xã Â×p\Cxãà“8NÜ8xãÆoœDqâà‰ƒ7®¡¸‚ãF)qœ8ŽðÆå/Ÿ¸‚âàå—#¼q Šƒ'^¾qðÆÌ'^>qðFÂoœ¸uãF6o\Ãq óqo]APÿÄ­ƒ7®a¾qâæWPÜ8qðÆ‰ƒ7® ¸uë ®7x0¼qùF6\7Þ:qðÄÁWP\Á|ãà‰ƒ7n$á„^˜á†~âˆ%ž˜âŠ-V˜ƒQad€|Ä)HQàqiœ†Äg¤qàqƇ#xF‚GxF’Hœqà§¡qòiœ†Ä'ÅgxÄ'qàgqÆYžq þâžqòqàgqÆ‘hœuÄ'ŸqàžqQxÆÉG"qàqà1•£uÄÉž‘Ö” © qÖqÆgqàž|à'xF‚GxF‚g$xÄg$xÄG¢u$qàYG"ŽÖgxÆÉG¢‘à§ qò)Hœ†F*hœ|ÄÉg$xÆgxÆGœqà‰¨qòž‘àgœ‚fƒgœuÄ)Hœu 'qàgœ‚F"JxÆgxÆYG‰ÖGð‡DÄ‘qä£ â(ˆ8ÆÙÀc$ á<ÆQqdâ€Ç8ÖÑuŒ#þGAÆA”qÀCã(ˆ8Æ‘qDã(ˆ8 "Ž‚Œ£  8òÑqÀc$ãȇ8 "Ž‚ˆ 8Æ!Ž‚ŒCð0U>à±Pü#ɇ8 ²x¬ë˜M>à!ŽuˆãÈ<ÄS‰#Ç8ò1Žˆ1#!Š8à!Ž‚ŒâhÈ`ÄqÀCð <ÄQqÀc$ðICÄ‘¬£ ƒbà1˜qD1<Ä1ŽuŒ¤ âXF"qDðGAF’qÀcðGAò!ŽqDð<ÆQqd$<ÄuÀ#〇8à1qäcâX<ÄqÀ#ð<Æ!xˆ£ âX‡8à±xˆc0â€Ç8ıqDëàˆ8 2Ž|ˆƒ(ùGA8RqÿGCþÆAqÀc<8ŽDðXGAÖ!qD ÇHà!Ä4dð<ÆqäcðÈÇ8ıxŒC" 8 ÂqdâhÈHÖq4Dðà!xˆcð‡8à1x¬ã(ˆ8$"ŽQä£!#<ÆÑ‘ÀC <Ö‘qHdðÇ`CqÀCGCÄ1x FùÉ8à±qŒcâhÈHÆAqŒ#â(ÈH"Ž‚Œâ<Äqœ\ù€‡8ò1xˆc G>Ä1þx¬Cðà!Ž|Àc$ BàAÆÄ!ˆB BàaÄ¡ Æ¡ Ä¡!Æ!ÄÄÄA"Æ! b B b6ò¡!ÆÆÆ! þÖ¡!ÄaàAàa$àAàAàa b$àaàa0àðbÆF¢!ÄÄA"ÄÖÖAàaBÆ!àA(Ä¡ Ä!Äa$BþÆÖ¡!FÄ¡!C bÄ¡ Æ¡ FbBàa0àa$àaàa$ÆÄLeàaÄ¡ ÄF¢!ÄaF¢!Ä¡!ÆÄÄÄ¡!Ä¡ ÄaÄ¡ Ö(Äðb± FB"Ö¡ Ö¡!Öb± ÄL¥ ÄFb bàa$àAàA bÄF¢ FÄF"ÄaÄÄ@¡áÆ‘ËÑÏÑaB@–ÆFBàaàaLe b$àa$$"ÖÆÆLÄÆÆÆÆ¡ ÄaàAàAþBàa B B$bàAàAàa$òaàA%ÄaàaòAàaà#ÄFÄ¡!ÄFÄ¡ ÄaFÆÖaàaB BàaàÁT bàA þÄ¡ F"Äa@DBÆa$àaÄÖÖÄÄÄA"Öa$ BÖAàa "Æaà!Æ¡ ÆA "ÆAàa BÖÆA$bb$àAˆB bàaàaàa b$b$àa$ÖÄÖ¡ FB"ÆAàa$Ö#àÁTˆBÆþAàaBàAÖ¡ Ö¡!ÆA"ÄÄ¡ ÆÄ#àa b$àAàAàa BàaÄ¡ Ä!ÆÄA"ÄÖaàa$BB ‚#àabB bF¢!ÆÄaàA‚#àa$Ö#ÄÄ8"ÖAÖÆÄÄÄaàaàaúaÄÖFDÖ¡ ÄA"Äa0ÄÖÄaàAàAòAbFb0 B bÖo$àAòaàAàAÄÄÆAÆAà#àaàAà# b$àAþÖ¡QÄÄ¡ Æ!àaàAàaF‚(Ä¡ ÄÄA"F‚(Æ¡!òabˆbÄA"Ä¡!Äaàa$B BˆbàAÖA ‚ðàa0àAÖa$àAbàaÄÄ!×Ä¡ LeF‚(Ö(òAÆABàaBNÄ¡ ÖD²AÐQY—•Y›u¢B`  ÄÖaFbò¡!Ä¡QÄÄaÖAàAàa$ˆb$ bòÁT b BàAÆ¡ LDÄLDÖA B Bàa6Æ!Fbàa$ BàA B bþˆb bà!B BàAàABàÁT$b$ b0@áÄ(8"Æ¡ ÄÄ¡!ÄA"Æ!àa$àa$àáÆA"8Ö¡!ÄÄ¡ Ö#ÖAàaÖAàAòÆÖA BÆ¡!Æ!$b$ÆÄA"Äaàa BÆ!Ä!FbàaàaàaÄDÆ¡!ÆDÄaòÄ¡ Æ!ÄDÆÆò¡ ÆÆA"Öaàa$ÆAòa BàAàaàAÆòAàAÆ¡!Ä¡!FÆ¡ Ä¡ ÆÖAbàAÖ¡ ÄþÄÆÆ¡ Æ¡ ÄÄ!F‚#àAàa$B BÆÄ¡ Öa BÆ!ÄA"Ä!bòAÖAb$àAàAà#òA@¡ò¡ ÄaBÖAàAàAÆÖÄaàÁTàa$àAÖaàa0Ä! b$àaàaÆ!Fbàa$ÖA$bÄab0ÖÄ¡ ÄòÆ!Äabò£ Ö¡ Nx0Ä¡ Ä¡ FbàA Bò¡ Äaàa$ÆÖÄN¸!ÖFÄÆÖAà#òaÄþÆÄ¡ Æ¡!8¢ ÄA"Æ¡ 8¢ ÆAÆÄ¡ ÖÆAàAFÄ¡ Ö¡!Ä!F¢!FbF¢ ÄA"Ä¡!ÖÖÄaàAfòÄÖ¡ ÄÄ¡!ÄaàaÄaàA bàaàAÆAàAœ•—{Ù—y`B@–@àa0àAàAÖÆ¡ F¢ Ä¡!ÄÄ¡ ÄÄ¡!ÆÄab$Ö¡!ÄÄ(òAˆbÄÆ¡ ÆA"ÆÄaàaàA bÄF"ÄÆ¡QÄDÆa$àaÄÆ!þ8Bàa6Ä¡ Æ(ÄaâlBÖA þÆAàaòÆAàaàa ‚# B BÖa b%ÆÆÄ!ÆAàa0ˆbòA Bòa‚#ÄÆ¡ Äò#àA V "ÄDÞ¨ Äaàa "FÄÆ¡ ÆÄaàa$àa$àAàaàAàAÖaBÖÆ¡ ÆFÄ8b$àAàaÄ¡ F¢ ò#ÄÆ¡!Æ!ÄòaÖÄòAbÄ¡!Ä!ÆA b$ bàaL¥ Fþ¢!FÄÆAàa bÆ¡ òA ÂTàaÄA"FÄ¡ ÄÆÄ¡ ÄÆ¡ 8BàAÖÆ¡ ÆAEòacþaÄÄÖAàa0F‚(ÄÖ¡ ÄAXׯaàa$BNX$B B bàaÖòaàaFÖ¡ Ä¡ 8B b$àaÄaF¢!ÄFÖAC bb BÖÆÆ¡ Æ¡!Äa bÄÖAÖ¡ Æ(F¢ Ä!ÄaÄ¡ F¢ ÞÄ!Æ¡ ÄÆÄÆ!ÄþFòa bÄòÄÄÄ(ÖAàaÄÆ¡!Ä¡!Ä¡ ÄaàAÆabàAàa B Bòaà#àaÄ(ÄÆòaÄÄ¡ ÄÄÄ¡ ÄA"²A€YÕWÕŽF b$àAbòaBÆ8B"Ä¡QÄ¡ Ä¡ Ä¡ ÆÆ¡ ÄÄaàAfÆ¡ FLeòaB BàAbòA"ÖÄÆÄÆÄ¡ ÆÆÆ! b$ BÖAò¡!Ä! b$àAÆA bþ$àAÆ¡ ÄaàAÆ¡ ÖFþÄ¡ ÄaÄ!àa$Æ!ÆÄ!Æ¡ Æ¡ Æ!ÆÄ¡ Æ¡!ÆaÞÖA bÄaàaàa$ÆÄaàaàaÄÄ!àa$Æ¡ ÆÄ!Ä¡ òAòÆÆÆÆAÆ(ƨAÆ8bàFF¢ ÄDÄL¥!Æ!ÆÄ¡ Æ!ÆF¢ Ä¡ Æ! BàAòF¢ ÆÆ¡!F‚#àAÆÆÄa ‚# BÆ!àAÆ¡!ÄDÄF"ÎÄþ¡!ÄÆ!àa$àA ‚#ÖÄA"Æ! BÆ(F¢ Ä¡ 8¢ FbòA$bòaàABàAàaàaÄÄö¡ Ö¡ ÄÆ!Ä¡ ÖAàA b$àaàá„áa ‚#àa$à ÄÁ[7Þ8xðÄÁo¼uâJ—OœÅqë,æC(Þ8„ãà‰ËoœDqùà‰ChÞ:‰á‰[‡p\>qãàYD(ž8xâàYD(žE‰á‰'.ß8xâà‰C(n¼qðò!'±+¼qÅC(.Ÿ8xÇy]'n¸|ðÆC¸ž8‰ëà­Ûþ OBqðÆ!'qÄqðòí]Ï"<‹âŠo8xâòˇPÜ8q-Ž['N¢¸qÅÁ'QâŒ#BãÀ3Ž8ãÀ#—E‰“ÇðˆÏˆ8”0#â`Ã8Q€Wâ $<㈓"<ãÀ#Î:!dÑ:ñgÑ:ãt%WWâÀ³ŽEå#NWâ ”\ùˆ8ðˆ³BÁ3Bãˆ3<âÀ#NWãÀ#Î8ðŒÃŸ8ëx5Ž8ùˆÏ8ðˆƒÐ8âÀ3Ž8ðä3<ãˆÓ•8‰“Ï8â $Bãˆ3ŽEëX„\ 8ðŒ8ÒBëˆÏ:ðŒƒÐ:ƒÐ8‰Ï:â 4Ž8ðŒ#N>â $Bå3Bâ $<ã 4þ<ãÀ#Î:å3BãÀ3<Ác<ëŒc‘DãÀ³BâŒ#NŠãX´<!$ŽDëˆÓ•8ü‰ãU>r‰ƒ8]‰Ï:ð4ˆÐ8ðˆÓ•8ðŒO>rÁ3<ãt%Î8ðŒ³<âÀ³Î8Á3Î:­Ï8âÀc<âH´<Á#<ã $—8ùÈe<â ´ùŒƒ8ðŒ#Ž\âÀ“<ãH”Ï8^‰8^ƒÐ8e£ r¬·îúë°Ç.ûìÅq0 2Œ Î^"N>YÔ 8ãÀc%<!$N>EðŒƒ8ðˆ3<âx8ã¬8Y„Ð8üY$Ñ8)®#þN>å3Bëˆ3<ëˆÏ8ùÀ#NWrÁ3BãBÄÑqHDÇ8à1q Ä"]‡Dö‚Pü£+â€Ç:ı(¯ˆ뀇8ÆÁ ì!ÖE ÄÑqäc„‡Eä’qHDë<|ÀCð<Ä!qä!â@3xˆc…8î¡‚ŒCðÀ†"j!âBÆ‹ Dã€Ç8$"þˆ#Er‡8$bxˆëÈÇ8à1„ˆ#Ç8à±xˆâ@Hƒò!ŽqÀc]GWÄ!—|ÀCGWÆ‘qÀCðÇ8Ä!þxˆ!â<ÄqÀcð°Bä’„ˆ〇8à!„Œâ@ˆ8Æqteð<òuHdù<Ä€ÀCðXBÖŠ~XdðX<Äq𢠑h$"a‰ˆcð°H>àaxŒëˆ8$²qŒC" Eb‘|ˆ!ã FÖ!ŽqÀcðGŠÖ1Ž|Hd<ıxŒù€Ç8à1‰ˆ#Æq¬!âˆ8ƽˆcã@Hƒà‘xˆcGW,2Ž|ˆÇ8Ä1„XdëG>Æq Ä"ð<,"‘qþäÔ@>ÄuX„Ç=¢0€hc 8ºb‘qˆ#â€Ç:Ä!q „ˆEƱqÀc<ò!xÈâ€Ç8à±qÀÃ"ãèŠ8à!x@fù<– Ø™ö´¨M­jWËZÞ„@Ë`I$âÈ<ÄÑAqÀ£AãGW,Ò•|Œù<ò1ŽCð <ÄÑqŒCð<Æ!ŽqÀCðXBÆ!xŒcðÈÇ82q¬£+〇8ò1‹ÀC‡DÆ!‰ˆ!ã@ˆ8à!„ŒC"ã€Ç8ÖqÀC‹Y(ò!xŒþ!â€Ç8ÄqÀcÇ8Äá•q ä x‚8ò!ŽqœÛhÁ`‹P#ÀNñ𠆜À Ø@éÆ € DcÔ@$px  € ÀqÀCð@À'ÆØ!â€Ç>A Œ£p@dA ¬‚ØÀ0ÄáqÀÃ"ù‹8à!xŒãÈ8ÄqÀcùGWÆÑ•qˆc E2xŒùÇ:2xˆcù°È:à!xˆr‡8à1xˆùÇ:"xˆr±È:à1xˆù€‡8ò1„ˆþâ@È82¯ˆ#rBÄq Ä"‡8à‘qHDðG>ÄqÀc‡E2x¬€8öqäCÿ€‡8ö"xˆâÈÇ8ÚÐn¬!ã@ˆ8$²Ž®œCÇ8²xŒƒ3 ‰0câ@È:à1xˆÛÐC>°Á‹teÈ÷€XÀ"ð‡DÄqÀC.ب@>Æ!ŽqÀcðG>ÆqÀcð‡DÆqˆ!Ç:"xŒ# 8Ö1xäcð°<Æ!„ˆcðGWÄ|ˆC"ù<Æa‰Œ£+þâ@ˆ3>0€Tà ë Fà!Žu DèЃ8Â1€hÀ£È8Ä!‘|ŒcðÇ:à!Ž! ð 5 lpâX<,q dðÇ94ðxXÄ)€‡8’|@ç°€Dı‹Àc Žö·Ïýî{ÿûà¿øÇßýŒŒ€EÆqhÂ"ùÇ8à1xŒ!âèŠ8à1‰ˆ#âð ãâ€âr±â0ë ã°âãã€âð ù ã€ããùââÐã r!ð0ù€â0âþâàâ€r‘1â€â€1ð0ð ðð0ù°âãð0ð0ù€ãð ãâ@ ë0ðâ0*Àâ° ð@ PãPÚØUçàAâ° ÃÖ0$°ÔUã°*ÀÚ€3ÀãÐç <”`Ä0ð@   Ôð@ °ð°Ô6 çâ0ð0^1ù ]!ð`r‘ð ù`ãâ0ð`ãââ â€ãþëâ ð0ââ€â0±^!ù ð`ãã°ðÐ ]!ù€ãâ ë0!ð !ð ð ù !ããâã€â0^!ãð0ë`ã€1ð0ð°ð`ã1ð ð Г ã ð0 ð!^!îÐGÀ â11ð0ð ãâ€'àâ0ð`ÌâÀ ð ðÀ  ããââ0Ô !r‘ã Ìâ â€â°ð !þ±ð€ °ââëâ°âââà!±ð ð°â0ë`aü!11ð ãë ]!ð`1±Ö€{ ç rÔ !1ùØ â°Ô ââ0ݰð0ð  <0ù Ôð@ ÀðÐ ãâ0Ï Ñ©Pà  ’ Ìàà ã ëÀë°  @~z¡š¡º¡Ê! ¿À‘ã  ð°ð ð 1!â€âþëã€Ñã ù0ðãù0ð ù`ð ð ð0ð ðù0ë0ð0]!ð0â âë±ã ðð 1!ã€ã ù  ’ð ]1ü1!‘ã ð0ëâ ðâ°ã€â°ã ð ëã ë0ð ü!ÄÚð0ð á0Éã  Ôà ÔàÌ@ã@   á €r±â@  ÔÜ ë â°Äð0ââ•Àâþ0€p”Àâ@ Ô ð0â@   ð0Ì@ð ð`ð ð ð0âââ€ù rã€â€ù0ð0!âù°ð  ã0²âã ð ð0#›ããâââ0âëãã€ã ð ð0#;#+ð0ð0âù0ù ‘â€ù0ð +ð0â±1²ð`%!ëãâ0²=9ðð0ð £ðð ð°â°â€ë ‘pÜp‡p þåp ‡à ð`ðâÔÌàâÀ  Ì0â°ð Ì0â@ ð@ ã@    à²â°ââÀ `ðH0`âãð pÐãÐÐ ð`ð°ð +1f â0f+»»ðã¾ð0ð0ð 1ù ã‱ð`+;ù0ð ð@   â€âÔ «@°¸Ôã@½0Ô+ ‘〠 !ð0”À±Pàã@þ    à²0ð`ØPâ€1X€Ø€’pëâââÀ `%ð0ð 1ð°  ^üÅ`Æb<Æd\Æf|Æhl0 ÈÀ±ãšã€â€ââ€â€ã€ã€â0²â€âë ã°â0ë ãã€âãââà¾ââ€ãã±â€ââ0±â0²â ’±ã€âëââ0ð ù0!ù0ð 㑱ãë ±ð°ð £Ðþ!ã€ã+ùã!ã€â0ù@ ëëâÀ ð Ìð@ ë@ °ù@ °Ôëë@ 0ð° àÔë@  ð ÌÒà‘±âÀ   ð² 7Ôë@  ùÔ A €â€ãââãð0;ð0ðâ0#+;ð°ââ±ãâ€â±ë +ã ùâ0að ±ð r±â°ëãù€ãâ°þ⑱1â0ð ð0â€ã€âr!ã€rÞr‘±ââ`¶ãâà¾ð0ð ã€ââГâÐ ù ð ù±ëâ€ë0îÐG î0—ïp#+ðp ÌÙ¾ÌâÀ ë ðÀ  ÔU°à Ô ð@ {ëëÌââà, è0A é0¸ çÀ ë@  ù°;#›±â0ù0!ã€â0ð0ð ð ãâëâ0ë !þð0ð0ùar‘âã±â0²ã€ã1â€ë€ `Œ  !Ô06 ç°Ô â@ €Ô âð0ð°†â€âð〟0ù@ Ôâ°ã±â€ â±ëp0°ââ0áÌà±r‘ë0  Æš¾éœÞéžþé Î! ËÀ0ð°ã°š ð0!>ð0;ù ããâ0#›ãù0ðã0²ã 1ð ð ð0ð0#þkð ð0â0áðr±1ð !ð ‚îã€ëâ€ã`ð ù0+ð #k#»£ðâù ð ë0ââr!ë0!ð0ðã ë°Oð°áÉâ  Ôð°Ôã Ô ë@  { Û0¨ ëÀ  Ô ùâÐ   ‘±âëã ‘âv@ ð à@  Ôr!Ô!Ô #+!ð°â°ã ð ð ð°ð0ð`þð #;ù #kð !1ð ð ð0ðr!ð`àn!ù0ð°»ð ð îð ›ð`ð ù⑱âð°ð`a#+ù #+ð0ð`!#;ð0ââ€{ð ð ð°ð ý°ð kð°â m ë0®âpâãëâP )à Ì!¼qðÆåc@³âŠc@µàà‰£F5ð¨ (nà8qðÄ1 ^¸Éĉ#–@\¸{²åþš€uðă÷R¼qãÄ O¼qð^|™oÜ@x/á …—oÜÀqð^·Ž*pyÀ…|â¨HnÈ„—ÔÀÀª¸ ÐŒaÐ>Á7PÜ:qðÄ1Þºâà‰Ë7Nܺlšþ=‡]útêÕ­_Çž]ûvîݽ^üøë!F!c@qãà‰[Gœ|è%xÄHxÄ)jqÆYGœqÖy qÆÉþžqàg qqÆqž—qŠ'qÖŠ@xÄGœ|ıžq§¨|ÄYgœÄ'ŸÄ'ŸÆGœqà‡À—àg —àYPòh×qàGœ|zi —Š"0•öÇšPjGÄÙFà¡FxÄ¡F€¨ j`œm4BœnHžsf`jXGœ\`!x¬ádœÆgxT€xÆ!¦´‡à '€hò‡àjžq*j uà'xÆ!P(Åhqà§(xƧGqqÆþÉGœ^*ªGxÆgxÆ!PœqàYGxÄè%űqxÄžqžqz,ÊFqàžqà‡@qgxÆHœ|Ä)j —g ¢Æç¥|lg qàžuàžuàgPúGxÖYgœ|ÚàEpÚ8‚›vƸ$qHœqÄ¢‡™À¡Æa&€w˜œqb&q¨`xÖ¡&q¨ @j( ž—òGx˜ œu¨ @Á%pqVù`€ NY‡šÆHœÅÉžql|I]xÖgÍágqày‰@qàžqàg qþòy qÖ§¨ÆÉg —Æhd½Éq¬™!x¨@xÄ¡Fx¨j€jX'xÄÉ&›_º! ûeƉ à‡˜¢‡šÖ¡&x^‚'›e~Á†€i²YfxÖ)†îpq Dð<Äf@ë°Ñ8à±qÀCÈÅu4¸AvЃaE8B–Є'¬ND± F @ð<Ö¡ xŒã%ð<ÆqÀCy ÖqÀc‡Ä|ˆc ù<ò±Žˆâ€Ç8^b£qˆâ€G>à!ŽÏ e âÏzôx¬c þë€Ç8ÄA qÀcðȇ8ÖqäCÇ:Šq¬ãÇ@ò!Žˆƒ@ãÈ8ò’uÀÿÇ@ıމë(Šºò±qðLðXÅ€ œBÝhÁ`pÀƒ5À3j@ÔÀ0ˆëøƒ8À8@Ô<^t á2‚8Æ!xˆc ”À'ıŽs `Þ5P”( ಠ†àÁ3j @(ðG>Æ!xŒCë‡8à!‰c ãÈKà!‰#ð<Æ!Ž…@âX<ÆA |âˆ8àñ’|ˆcþÉÇ8z4Žˆc/!Ð8„|ŒCðJ>Æqˆc  8à1xˆ#〇8à!xŒâ 8à!xŒ〇8ò1‰ƒ@〇8òñ’¬ã<Äqè%â<ÄPäë<ıh¡ à€GŽpŒÁðÇ!ÄA qäÀ 0Èb3 Žn âH, j@ðX5j@Ô@>Æ1q Dù`ÆÄ±Žn  8ÆuÀCèDÀA ˆc âÈ8Ä¢ˆãGÆñxŒc /þÈ8à1xŒ#ãø<ÄqÀCð‡8Ö¡®|ˆãÇ:à1CðÈÇ8Ä1xˆcâ€Ç:ÄA €ƒX<ÄAˆƒX5qPCëÈ:Äq`£/‡8α4àÀÄA ¬ Ð8"Žn`ð϶±8œCOGÄ‘f à%ð<ÄqÀcɆ&ª³e.wÙË_s˜ÅÆ‘qÀcðxÉ:„2j` âÈ<Ö!Ž|Hëˆ8l$Žˆ#ã€G>à!xð¬(â‡8F–xðLù€ÇKxF ¡H<Ä‘xŒ#ðÇ@ÆA qÀCãP×KàQ”ˆâG>ÄqØHð<Ö1u DÇ@þÆqeâ€Ç8Ä—ÀcðȇđâèÑ:Äq Dð<Æ‘qÀc/Ç8"ŽŒƒ@â€ÇK2Žˆc* <Ä1x¬ÃFEɇÄq¬ƒ@ë€ÇKÖq€â<Ä¡6´‘hC$ÖŽCŒ!¸Ä@Ä1xŒËȆ5Td€C<˜qÀ#,"Ž|Àã%xŠx ‡qȇ—þ€qXq€qx‡¢€q€q€q€‡qȇx‡q‡qXx‡| qq€q€qXq€‡|‡u †=øq؆`x  jx jq€‡p€hxXxx‰n €u€qˆX€hȆe¸†â¬83NðŒ£IãÀ3<㈳Î8ðˆBO>ã $<â¬#<ëÀ#N>ã ¤Ð@£ä#“8ðä3ŽL $Ië ô8Ï:ðˆó<â $ Á3N> É$Îþ@ Á£P>ã¬8ðŒ#Î@â 4Ž8ðŒ#< 4Ž8ðˆÏ8ðˆÏ8ðŒ8‰Ï8C’8$‰8ðŒ#ŽLã 4Ž8ëÀ£<ëŒ#Iùˆ³Ž8ðŒ#N>ãÈ$Î:ðŒ“Ï8ðŒK$³Ž8òÏ@ã ´<âÌ¥ß@âÀ£Ð@âÀ#<âÀ#<â$<â¬Ï:$­#Î:ù(4Þ:â¬8ðˆÏCâÀ£<âÀ#ÎCâ $<ë(´IÁ#Î@â¬Ï8â ”Ï8ðŒ“8ã 4ŽL⬣Ó@ãŒ7Iâ¬38ëˆ3Ž8$“B‰3P>â $Î@ãÀ#þÎxã ´Î@㬣<âÀ£Ð:ðˆ3Ž8ë($Ó\‰8ð¬ÃÒ:ú‰³Î@ãÀ#N> Á#Î@ É$Î@ùŒÃÒ@â¬Ï:ðŒ8$#Î:ðˆCÒ8⌗&Æé¾;ï½ûþ;ðÁ‚(È02€8‰&âÀ#<ãÀ“LâŒCÒ8ðŒ8ùÀ#ŽNãÀ#Î@âä£Ð@â ´<âÀ3N> ‘4<ãÀ#<âÀ#Î8#K¾uèG!ãÉ8à!Žq DðÇ@Ä1qäC!ãÈÇ@Ä¡…Œcâ ‰8àñŒc ‘‰8@ñxŒƒ$ãX‡Bà!†‰c 뀇8þÖq Dë<ÄuÀcQÈCÄuŒâ€Ç:Æ–¬C'ðxˆ8àñxˆc ëÉ8Ö!xˆ ɇ8àa¥uDfÇ:Æ¡ŸÈŒc  8à¡q dùˆ8à!ŽqÀ#|ù‡LÄ‘Œc âˆ8¢“(dÇ8Ä1q0LãÈ8òq Dð<Æ‘xˆc :É<Æ1… DðÇ@tqäcð<ÆA’q DIÄ…Œ#ðIÄAqŒã€Ç:à¡x¬Cãˆ8à±xˆc,Ñ8ò±x(ù‡8òþ!xˆc ‡Bà±qŒƒa<ÄqÀC$<ÖqÀcÇ@Ä1™ˆã!âˆ8H2™ˆƒ$âˆ8Ö1q D‡BÖq¬c ãÈ<Â'xˆc<Ä1qÈDù<Ä1xŒc ‘É8d’xŒCðÇ8"Žq D'ðÇ@Æ…d 8ÆqÀCðÇ@Ö!“uŒù‰8…¬CÉ<"q¬CÇ@Ö¡qÀc<Ä!“uÈdëIÖ1q¬C!ðÇ:Ä1qäc  8à1Ž|ÀCã<Äþ P䦵®}-lc+ÛÙÒ¶¶¶½-ns«ÛÛ„`¿`Ät2qˆBðG>tqÀcðÈÇ8Ä1Ž|ŒCÇ@Ä‘qdðxÈ@Ö1q¬ƒ$â‰8à!ýŒù‡B2ŽñŒ#âÈÇ8à!ŽqÀc$ÉÇ8ÄqäCðÈÇ8ÄqÈ$:ˆ8à¡“ŒCÇ@ò±ŽŒƒ$뀇Nò1ŽudðÇ@@‘|ŒCð‡LÖ!xŒ〇8"xŒâX<Æ!Žñ(d ã ‰8H2…Àcâȇ8d"Ž|° Y‡8à!އˆcðPÈ:à!þ™ÌE!ðxˆLÄqÀcð<Ä1xŒC& È8d’–¬ã ‰8à!Ž|ˆcð‡8à1x¬C'Ç@ƈc<ùÇ@òq dð‡8à1ŽuÀ#â‡8Ö1qDÇ:d"Ž|èDðIÄqÀCðG>Æ!x(d Ç8BqdðÇ@ıŽqˆc 〇B¢x¬C2Y<ò1q dúÇ@Æ!xèD2E?àñqÀc$Ç@Ä1|ŒCðÇ:à1Žuøâ<Ö!xˆ Ç:Ä!“q<â ‰82ŽuþÀC!ð‡LÖ1qdã‡LÄA’q(dãG>ÖqÀ#ãG>Ä|Àcâ€Ç8à1q $ã<ÄA’qÀC!ð‡8à¡q$ãH>Æq D!ð‡Lt"’($〇8H"އÀcâÈGøÄuÀC!ëH>²(„$ 82Žˆƒ$ùÇ:à±™Œã!ð<Æq¬c sÇ:d"’ä:I²ŽqÀ#ðÇ@²¡‰Ý²¾õ®=ìc/ûÙdž¢X# Ž|è£ É:Ä1qÀC〇8à!ŽuˆâG>Ä1x¬þ Bà1x¬C!ðG>Äq dðÐ IqˆâÇ:Ä1qÀC!ãˆBÆu(âG>ˆƒN¬ƒ8ÀƒBŒ<èD>ÈDøŒ<¬IŒC>ˆ<(<ˆÃ@Œ<¬Ã8Àƒ8äÃ8 „8ŒC>ˆÃ:(Ä8ÀƒB ÄC€Â?¬ƒ8„8Œ<ˆÃ@ˆC>(Ä@Œƒ8Àƒ8äÃ: Ä8äÃ@ˆÃ8ÀÃ: Ä:ˆC>ŒIˆÃ:ˆC>Ä:ÀÃ:ÀÃ8 „8<„~ˆI¬ƒ8ÀÃ:„8„8Œ<<Iˆ<ÌIˆÃ@(<Œ<äƒBèÇ8Àƒ8Àƒ8„LŒC>ŒþIˆ<¬<ˆ<ˆÃ@ˆ<¬ƒ8äƒB „BÀƒ8ä<ˆ<ˆCøäCƒ8Àƒ8Àƒ8 „8èÄ:ŒC>ÀÃ8ä<(IˆÃ@Œ<è<Œ<ˆÃxˆÃxŒÃ@ˆÃxˆÃ@ŒC> Ä8Àƒ8ÀÃ8ÀƒBŒÇ:ä<ˆ<ˆIŒIˆÃ@ˆ<Œ<ˆÃ8¬ƒ8 KŒ<ŒIŒƒ8ä<ˆI<<ˆ(ü<<Ä@(Ä: Ä: „8ŒÃ:ˆ<ˆ<¬ƒ8Àƒ8ÌA®Ã8ÀC>Àƒ8Àƒ8Àƒ8 „8¬Ã@¬ƒBÀƒB¬<ˆÃ8 Ä8Àƒ8Àƒ8ÈÄ8ÀÃ:(ÄCÀÃ8Àƒ8þ¬ƒ8$<(Ä: „8¬ƒ8äIˆ<¬ƒ8 Ä8¬ƒ8ÀÃ8ÀƒNÀƒ8ÀƒBŒC>Àƒ8ŒÃ:ˆ<ˆI°Ä@(<Œ<äÃ@ˆÃ8¬ƒBŒ<(<ˆIˆ<ˆÃ8 „8äÃ@ˆI¬ƒ8Ä8 Ä:ˆ<ŒÃ@(D>ÀÃ8ÀÃ: „8Œ<è„8ÀÃ:äÃ@¬Ã8ÀÃ:„BŒÃ@ˆÃ8ÀÃ:(Ä8 „8ÀƒBÀƒBäKÀƒ8Àƒ8¬<ˆIˆÃ:Dø „8 „8È„8è<ˆÃ@,(ОmÞ&næ¦nîæl„€&,# À8ˆC>è„&èÄ:ÀƒBÀƒ8ÀC>ŒÈÃ:Àƒþ8 Ä8Œ‡BäÃ: „NÀKÀƒ8Àƒ8äÃ8ˆI(IˆÃxˆÃ@äƒ8ŒÃ@äÃ8Œ‡8 „8äÃ8è‡8ÀƒNˆ<ŒC>ˆC>¬ƒBÀÃ8Àƒ8¬<ŒƒLˆ<ˆ<ŒƒBÀÃ8ˆ<ˆ<ˆÃ:ÀÃ:„8 „8¬ƒBÀ(üÃ@ˆÃ@äÃ8ÀÃ8 Ä8 „8ŒC>ÀÃ8ÀÃ8ÀÃ8(Ä:è<(Iˆ<Œƒ8ÀÃ8¬IŒ<Œ<ˆˆÃ8Àƒ8<<°ŒIˆC>¬þ<¬<Œƒ8ÀƒBŒÃ@Œ<¬ƒLˆÃ@ˆ<¬IˆƒL¬Ã@ˆ<äƒ8ÀÃ8ˆC>ˆC>ŒIˆÃ@ˆ<äƒ8¬<¬Ã8ˆÃ:ŒIŒƒ8 „BÀƒ8äÃ8äƒ8 „8Àƒ8ŒÃ@ˆ<ˆ<ˆ<ŒÃ@Œ<ŒIŒƒ8ÀÃ8Àƒ8„BÄ8ÀÃ8ÀÃ8¬Ã8Àƒ8Ä8äÃ8„8„BÀC>ŒÃ@ŒI(D>Œ<ŒC>„<(<ˆÃ:ˆÃ@ŒB?ŒÃ\Ä8$<äÃ8„BÀƒ8ÀCdDF>è„8ŒÇ: Ä:Àƒ8ÀÃ:Àƒ8 ÄCÀC>ˆ<(<ˆÃ@Œƒ8ŒƒB„8þÀÃ:äÃ8Àƒ8 „BŒÇ8¬IŒ<Œƒ8 Ä: Ä8äÃ8È„8äÃ8ÈD>è<ˆÃxè„?)Ä:è<ˆIˆÃxˆÃxˆ<ˆ<¬ƒNÀƒ8ÀÃ8¬Ã@ŒÃ:(<ˆ<ˆC>ŒÃ: Ä:ŒƒBÀÃ: D>ŒÃ:ä<(Ä:ÀÃ8°Ä@ŒI(Ä@(Ä: „B Ä8 „8 Ä8Œ‡8ÀƒB „8Œ<¬<Œ<ˆC>Œ<ˆÃ@Œ<ŒÃ@ˆ<äÃ:„8¬Ã4€BA¦®ê®.ë¶®ë¾.ìÆ®ìÎ.íÖ®íÞ.îæî톀( #€8ÀÃ:ˆÀÃ8äÃ8Àƒ8äÃ@ˆÃ@ˆ<¬ƒ8ŒÃ@ˆIˆ<Œ<ŒI(<(<(„NäÃ@ˆÃ@ˆÃ8ŒGdŒC>ŒC>ŒÃ@ˆ<ˆÃ:ˆÃ8ÀÃ:ÀÃ8Àƒ8 Ä8¬ƒ8Œ<ˆÃx¬KŒ<¬C> <¬Ã@ˆÃ@ˆ(¬˜8¬ƒ8<„8äKÀÃ8¬ƒ8ÀÃ:ÜxŒC>ˆ<ŒÃ@Œ<è<ˆÃ8Àƒ8¬ƒLˆ<è„?‰<äÃ@ˆ<¬<þˆÃ8¬ƒ8¬Ã@ˆÃ@ˆÃCÀƒBÀÃ:ˆ<¬Ã8äÃ@(<(Ä8ÀÃ8Àƒ8Œ<¬ƒ8Œ<Œ<Œ<ˆÃ@ˆÃ8ÀÃ8Àƒ8äÃ8„8ŒƒLŒC>ˆÃ@ŒIˆÃ8ÀÃ8 Ä8ÀÃ8„8 Ä8äƒ8 „8äƒ8Àƒ8Àƒ8ÈÄ8ÀÃ:ˆÃ8ÀÃ:ŒC> „8ÀƒN¬ƒBŒI¬Ã8äƒL°„LŒIˆƒLˆÃ8äÃ8ŒÇ8 „8¬ÃxŒ<äˆ<Œƒ8Œ‡8 „BÀƒBÀƒ8äÃ8ÀÃ8(D>Œ<ˆÃ@ˆÃ@ˆ<äÃ8è‡8¬<ˆÃ@ŒƒBÀƒ8Œ<„<ˆÃ@Œ<ŒƒBÀƒ8þ¬Ã@è<ˆI¬Ã(ôƒ8Àƒ8äÃ8D>(D>ˆƒ~ˆÃxä38Àƒ5üè„8„B „8Ä:äƒ8PCŒG>ˆÃ:ÀCdÀƒ8ÀÃ8ˆÃ@(D>„8À38(Äh€,Œ<¨Àˆ<ˆ6 KPƒˆC>ˆƒ?‰<äÃ8 D>ˆIˆIäÃ8ÀC>ˆÃ8ÀƒBÀƒ8 „BÀƒ8äCøÀƒ8Àƒ8ÀÃ8ˆÃx¬Iä<ˆÃ8Àƒ8ÀÃ8¬ƒL¬Ã8ˆÃ:ˆ<4à@ŒÃ@ŒIŒÃ@ˆIˆ<ˆ<ˆƒ~ˆÃ@äƒ8Àƒ7ˆ<ˆÃ@(Ä@Œƒ8È„8¬ƒ8Œƒþ8ÀÃ8Àƒ8KÀƒ8Ä8äÃ8ÀC>ˆÃ@ˆ<Œƒ~(ÄCà°8 Ä:ˆÃ@€Â?Àƒ8ÀÃCüÂ.üÂ.¼ÿ/¼ÿ.ÔÂ/ÈÿûÿÂ/ìÂ/ìÂ/Ô‚ýï@üÚUë×®_¿jíúµë×.‡wýrXëÄZ¿Öúñஃ9üõð×®_»~ÕÚõkW­]¿výÚõk×ÁZÜõ«–Ã_»~íúµëW­_kíªupW­_»~Aüµ«Ö¯]¿výªu°Ö¯]µ~9¬õkׯZ¿þªõ ¢Ã_µ…xpׯ‡µþÚUëW­_»~9¬õk×/‡¿þÚuÐa­_µvÕúµ«Ö®_þÕ:XËá/‡¿výÚõkׯ]¿vüµë×®_»òÁ·^6Pâà‰ƒ'ž8xâà‰ƒ'ž8xâà‰ƒ'ž8xâà‰ƒ'ž8xâà‰ƒ'ž8xâà‰ƒ'ž8xâà‰ƒ'ž8xâà‰ƒ'ž8xâà‰ƒ'ž8xâàqàqàqàqàqàqàqàqàqàqàqàqàqàqàqàqàqàqàqàqàqàqàqàqàqàqàqàþqàqàqàqàqàqàqàqàqàqàqàqàqàqàqàqàqàqàqàqà'Q–adxÄéMzqŒgœuŒqzGcÅéUœqÆÉÇZqŒµqzqÆ1Vx¬ÇXxÖGœ|à±vxÄGcÅéUxÖ±ÖØuÄéUœwááVxÆgc­íUœ|Þ§WqòqÆÉÇÚwÅgœ|ÄéuxÖY”àžuÄGœqÖéuxþÆÇZxÄgœ^¹‡™¸]ÇÄÉ$Àpà¡&€(8 ÀpÖ¡FxÆIçƒ(!š^ÃAb€`€Gt Àg|àd›ìxžqø„šài €…X¡`€ †žqà§×qÖ'hxÆGx‚†GnáÉáqŒ§WkóéUxÄÉqàIÙÚ ¹…'qà'k×Gœqò1Vœ^ÅÉgxÄÇZxÄGnáqgxÄ1vxÆgœ|ŒÇXqàa„ÇÉgœ^ÅY_x¬]Gn{kágœ^ÅÑ«uþˆÀ8ÞµPüÃXâ€Ç?úñ öC‚ÿèGÿÑ~ü£¬`?0Ø æÃƒ̇÷ñ~ü£ÌÇ?úQB öC†%ìûQÁ~Ôðý¨a>$¨AæƒýøG?xø|H°ì‡ûQÁ~”°ìGûñ~ü#Ô ÿ‘ æÃƒý¨`>ú‘Ä æ£‚ýȇ5ø~”°ì‡5ˆÁ~x05ìÇ?¸•q¬ 0ä!™HE.’‘tä#!IIN’’•´ä%1™IM:R!ÐÄ21€^­âÐD¯ÄÑ+qô*ã€Ç8à!Ž^‰ã]ãG¯Æ|ˆþ#eƇ±ÄÑ«oÁ#â0–8z•qˆã€Ç8à±cYËXâx×8z5Ž^‰ãXG¯ÆÑ«qÀCãG¯¾•qˆã]â€GÐÄa,qÀcð<ıŽw£WÖZ<Äo‰ øG>ƱxˆâèÕ8z%x¬ãè•8àa­|X‹°Ö9 Àn¹€â@Ç x j  âX‡ ‚ jÀZá<¬1ƒ ôJ,È<8qq¸€â@Ç x ŽuÀcÖRAàA cð F´¬ƒÈGʨ P˜€8ò1xˆâèU>ÄÑ+kõJþùG¯ò!x  µŒ5c­cïG¯Äñ®|ˆ#ë<ÆqˆcïZ‡8Ö1qôÊZð‡µÞ%xˆù<Êa,qŒC½Ê‡8z%xˆ£WãÇ:Æ!c£Wâè·à!xˆ 8Ö!xŒâ0–8z5Ž^­ù<Äñ.qÀ#Ü2Ö:౎`âX‡µà1Š~¬ëÇ:à‘²uäc |­|ˆ)ƒÇ8à!ßæc뀇8à‘2k¥¬Wù€Ç:ò!Ž|ˆC¾ðG>RqÀ#eâȇ8à1q¬Ö‚GÊà!Ž|ˆþ)Ä”ÁÃZ½’o>Æ‘2qÀCðH<Æ#§  µä›q¬âè•8à!ùŠëèÕ˜S&Ž^‰cðƱxX 6†‡8l #÷JðX‡µÖ!x¬âX<Äi€¢‚¥6õ©QjU¯šÕ­võ«akYÏšÖµ¶õ­Y½„@È`à!ŽqôjâèÕ8zÅ­uˆâèÕ8z5Ž^#½²·à1xŒâÈÇ8Œ5„AþëÕ8à!x ÜB˜8Œ%ŽqÀC〇8Œ%Ž|ŒÖ‚Ç·à‘xˆã]ëG¯ÆqÀcùG>à1xˆ£W〇8Œ5xŒâǻƱ¾u€"ëÂÄkõJ½<Äqôj½bÆЀ ëÇ’a-b$Ô€6à1_$Ô@¯ä f@Ý@2Œ%Žp Ö"FàÁ-cQ‚ã ¼1pP‚ð FÆA ¬â F´q0ƒðX‡8Æñ®q¬âx×8Œ%n­âȇ8à1cãȇ8ÆÑ+kCðXþÇ8ze­qÀcðX‡8à1xŒ#½<¬e,qÀcïʇ±Ä±¾uôjð‡8à‘x ㇱ¬•xŒ#ð<¬qKù<Äq¬aâè•8ÆÑ+qŒ#ãèÕ8RÖ«qÀc½âV>ÄqÀCðG°x¬£WâÐD?ÆAzEÖá[ÖAàAàÁZzEÆ¡W ÄÄá]ÖÄ¡WÄÄ¡W¬eÄ[ÄaàazÅZze¾¾ÖÄ¡WÖAze àaàá[àaàÁZàAàá[àá[àá[zÅZàÁZàa àAÖá[þàAàÁZàAàÁZàAàAÖÖªWÄa¾eàÁZàAàAàá[zÅZàAàAzEŒÅZÆÄ¡WÄ¡WÄÄĬÄĬ¬¬Ä¡WÄÄa¬Ö¬Ä¬eàÁZze¬ÄaàAàÁZàá[àAàAàÁZzEzÅZàazE–âá1…q‰±ñ‘1•q™±ñ¡1¥q1FáaàÁZàa4AàÁZàAòaàAàAàÁZà!¸EÖ[z%ÖÄÄ¡þWÆAàaàÁZzeÄ¡WÄ!Ĭe}zEò[àazeàAàÁZà!Ä¡WÆaàa¬E!ÇÖAzeŒÅZàAàAÖ¸EzeÄá]Æ Ä¡WÆAòaÄá]Ä@áàAàaàaàAzEz…[ÖgRÆZ˜aBÐ`¨a$à+%ÀÄàA¨!Ä`àa>q@Ö@ŒE¨!ÀR@òAàaÊ@ ÄA>Aˆ`¨AÄ`àA¨!Ö!Ä WòaÄþaÄ!Æ¡WįďÄ!ÆAàaàAàAàa¾eàá[z%ƬơWÄÄá]¬%¸ÅZŒER¦WòaàaàaàaÄ¡WĸEÆÆ¬¥W¼Ä!àaòÆAŒeÆAÖaÄÁXÄ!ÆÁZŒeÞEÆAàAzeàÁZzEÖAàÁZzEàÁZòaàÁZÖÄ!ÄÖ¡W HàAÞúÁXRÆXÖÁXÄá]ÖAàaÞEàAÞeÄ¡WRÄA!á!ÖAàAàAzEàaŒeþÞezEÖAzeFÆZ|T|ÔXÄ¡WÄá]Ä!ÄaÄ¡WÄaKÇaÖgàAÞEÞeàAÞEzEàAàAÞEŒEàazEÞEÞEàAàAzErzEàaŒEŒEàAŒEÞEzEàAzEzEŒEàa|TŒeàaz%FaKiµVmõVq5WuuWyµW}õW5Xƒ5DaFÞeàaÄA!¹Eò¡WÄ!ÆÖÁZàAàAŒÅZŒ…[òÄaÖgàaÞEàaÄ!¾Äa}ÆþÖAòaÖGÆÆÖAzeàÁZÆÁXÄÁXÆÖ!àAÆ!àÁZÆAòAÖGàAàaÄÄ[zE@ázEòÁZFÆ!ÄÄaàaàAR¦W˜ÀAò@ºa¢!ÄÄa¨!¢Aâ!¨!ÄaàĘ!à¡ ÆAz¥ ¬eÄÆÆ!z"!àaì @ĨAÄ!e¨A¸¨A¸eÄÄÖAÆ¡WÆ!ÄÄ!ÄÁXÄÖAzEàaòþaKÇ¡WÄ¡W¬ÅXÄÄÆÁXÆÄ¡WÄazÅZ¸eĬ¥WÄÆAàaòAà!¬aÄaàa¬eàAzeàaòÆ!àAÆÁXÄ¡W¸Äaà[à!àazÅZŒeÞEz…[ÞeÄá]ÆÆÖAÖA WÖl þÄ¡WÄ!eàAàAÖÖ¬¥W¬ÖÁXÖÖÆAòÄaÄÖ¡WÆÁXÄaÄaÞEàazÅZR¦WR¬eÖGÞEàAàaÞÅÆÄÖÁXl¬W¸e}ÖA!þ×aàaFÆ¡WÆ¡W¬ÄA¾ŒezeàAzeà!ezezEàaÖGàÁZàaàAzÅZÖl¬WÄaÖgÞEÖaàaÄÖ¡WÄ¡WÄA¾ÖGŒezef¶TÆÆ¡WÄaz%eàá[àa–ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄþÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄþÄÄÄÄÄ!4aaàa¬4AzEÞeàaÄÆAò¸EàaÄÆa}ÆAŒEzEòazEà[Ä¡WÄĸEzEàaFàaàaàaàaàaÄÄÆÆòa ze¬¥W¬å]ÄÄÄazEÖÁXò[FzEÖ'¬ÅXF!zeŒeàazEzEàÁZòAàAòaÖ!˜!Ä¡WÄ!‚@\€´a¬Ä€Àa4 ĺ¢AÖá`þÄAXÆ¡ÆA\€À!¬ÄÄ!eÄTLÄ @ÀA¨AÄ¡ àA¨AàÁZ¨AÄaÆòAàAÖÁXÆÆÆÁGÅaàaà[ze¬Äa}Æá]¾ÆÄá]òaŒ%ÄaàAzÅZzEzEz…[zEàaàAà!ÆA!­ÄaÆAàaàAà[ŒEòaà!¬%‚FàAÞeò[Äá]Ä!ÆAÆÆÄ¡W¬ÄaÖAÖAàÁZÖAàaúÄá]ÆÄRþÆÁXÖÁXÆÄÁXÆAò[ÖĬ¥W¬ÆÖÄÆAÖÖÆaÆAzez%ÄaÄÆAz%hàazeàAàaàaÄazeàazeÄaàaòAàaÖÆaàaàAàAÖ¡W¬RÆ¡WľezEàaàaàÁZà!eŒEÖÄaÄÖÆAŒeRæìßeàaàAÞeÄaÄR¦WÎþìáaÖÆ¡WòAÆÄ¡WÆ¡WÆ¡WÄÆáî×ÄÆÁZzeàaàþAàáìáaîòÁZàAàÁZÖ¡WÄá]Rf@AàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAàAž8xâà‰ƒ'ž8xâà‰ƒ'ž8xâà‰ƒ'ž8xâà‰ƒ'ž8xâà‰ƒ'ž8xâà‰ƒ'ž8xâà‰ƒ'ž8xâà‰ƒ'ž8xâà‰ƒ'ž8xâà‰ƒ'ž8xâþà‰ƒ'ž8xâà‰ƒ'ž8xâà‰ƒ'ž8xâà‰ƒ'ž8xâà‰ƒ'ž8xâà‰ƒ'ž8xâà‰ƒ'ž8xâà‰ƒ'ž8xâà‰ƒ'ž8xâà‰ƒ'ž8xâà‰ƒ'ž8xâà‰ƒ'Þº¢1 Nxãv‹ƒ—;¼qÔÇÁOܸÝâàåOuqðÄåËmu»‰“€»Ï8âP'<㈳Û8ðX7uÖ‰³›8»8Ž# 8 ü3ÎnãÀsŸ8ãì6ŽãP·Nþnã03À:ðˆ31hƒà€ñPÀ `ƒ8ðP#À:ðüáÄ!<ë„ÓÂÀO<è 1H±ÎnëˆÏ:” ‰8ð 3Àë¬CMðˆÅÈBâìFðŒ³Û8ðˆc<ãì6Ž8ðˆ3N>¹í&Î8âÀ3u¹“8Öå#à8ðˆ³[nãÀ3Ž€âä#uÖ­#<ãÀ³<âˆ+<ãÀ#<ãP—<㬓Ûn¹C8ðŒ“<ãä³›8ùˆu»‰cÝnëä–<ãPwß8âäÏ8ðŒ#ÎnâÀ#<âì6Žãˆ8눳Û:Ô‰þ8 ä³›8ãä–Ï:ðŒ“Ï}»‰³În÷ív<ãì6§€¹í–Û:â¬8»­Ï}ãìv<¹å3<ãÀ#Înâì&N>âä3În÷ív<âÀ#N>)ŠÏ}ãÀ“Û:âÀ“[>âÀ#<ëä¶[Šùˆ³›8Ô‰#`Š»‰Ï}ëÀ“<âÀ#Î8âä³Û8âä“ânâŒÏ}ëÀ#Înâ¬8ðÜOnðÜ8ùÜ8ãÀ#În÷Á“Û8»‰“<)®8ùP—<âì–â8ù¤8Î:»‰c`nðŒÏ:â¬2£¬#Î:â¬#Î:â¬#Î:â¬#Î:â¬#Î:â¬#Î:â¬þ#Î:â¬#Î:â¬#Î:â¬#Î:â¬#Î:â¬#Î:â¬#Î:â¬#Î:â¬#Î:â¬#Î:â¬#Î:â¬#Î:â¬#Î:â¬#Î:â¬#ŽuˆcâX‡8Ö!ŽuˆcâX‡8Ö!ŽuˆcâX‡8Ö!ŽuˆcâX‡8Ö!ŽuˆcâX‡8Ö!ŽuˆcâX‡8Ö!ŽuˆcâX‡8Ö!ŽuˆcâX‡8Ö!ŽuˆcâX‡8Ö!ŽuˆcâX‡8Ö!ŽuˆcâX‡8Ö!ŽuˆcâX‡8Ö!ŽuˆcâX‡8Ö!ŽuˆcâX‡8Ö!ŽuˆcâX‡8Ö!ŽuˆcâX‡8Ö!ŽuˆcâXþ‡8Ö!ŽuˆcâX‡8Ö!ŽuˆcâX‡8Ö!ŽuˆcâX‡8Ö!ŽuˆcâX‡8Ö!ŽuˆcâX‡8Ö!ŽuˆcãGFñ F @@âÐDnv“xŒ#WâXÇnıCãG>¬qˆâÈÇ8r“qPÇ:¹1urÜÀC»ÉÇ8ÄqPG»Ç:à±xŒc7ù€Ç8v3ŽÝŒã€Ç8v“›|Àcâ Ž8v3ŽÜäCðÈ <Ä‘qˆc7ã€Gnà‘qäCðGnvŠ~ÀCù‡€ò1xäã€Ç8ÖqŒcÔv3'PüCë<ÆAuˆC@â€Gnv#êˆâ Î8à1'ꈃ:à †à±âë0Ô!ð ð°â°s"ð ð ðãs"s²þâë@ë¹! ëâ°ââ s²â»!»±ð0âÖ! ¹! ãëâV•ããð ãâ@â@ë Ô!ù »1ù ãâ¹ùâ°ëâ`Uâ°¹! Öâãð0ù Ô!ð0ù ã°â¹1ð0ùãâããëð »‘ãÐbãð`ð ð ã ãsâ ÿð!» f° Á€ ·€ fÀ »!Ô1»14&ããâ0»!»±þ"ã°ãâ°ãã âã°ã@â âããã°ãââã°ë0Ô‘"&ð ã ãã@ëâ0ð@!ð ãâ0Ôa»1Ô1»1ð@!ðâ»1ð0Ô!»!ã@s’2Ô!Ô±"ð0ð ð ð0âã°â0ð0ð ð ð0Ô±»±¹!bã ë0ð0ð°â0ð0ùã°ã°¹±¹1  à âà âà âà âà âà âà âà âà âà âà âà þâà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âàþ âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà â0Þà !  ÈÀâ°â  »1ð0ð ðð0ð »‘ð0ù 4–Ö!ð0Ô1»‘¹1ð0Ô1âëã V%Ô!ð@!ð "ð ù »1¹Aâ@ãâ0»1»qð0ð@!ë`Uãââ°âãëã°ðþ`ðp£ðð°ð ð0â°âã ð »!»!ð0ðëÖ!ð <µð Ô±Ô s"ð`®»!ù0â`Uãâã ð –â0'ð°âë°ã ð°¹±â0'ð0âë€`ãã°â°²ã ð »!ð "6âã°âë0âã@ùë0ð»!Ô1ð°ð Ô1ð`â°ð ëã@ÖÖ! Ö!»!ã@ã°âã°â°ã ëã Ô!ëâ°þâ°ù0ù`â°ãã°¹±–â0ð0ð ð0â°ã V•ð ðð»1 ý ð ð Û`˜  þ np ˜`Û°ð0÷â¹! ã ðù0ð ð »1âã »!ðëÖ‘¹â@÷¹Ô¹ãã ð ð ð0ù0ð »!ð0ð ð0â@ ââÖAù ããù@!â°ù0ââ@ââââãâãâã ð ùþë"ð ð0»1»‘ãã 2ââÖ±ã°ð0ð0ð°ð»1âãð ð–ããâ0â@ã ð ã ù@!ðð ð0ðpë°ù0ð-¶  à âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âþà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà âà â¦þÞ Þ£ð Œ0ãâ°š0ð ðð »‘»‘Ô!ëâ0Ô!ð0ð°âðð`ù0ð0Ô‘ã ð »1ð ð0âã°â`»!ù ã°âââãâ€`â â°â¹1V%»!ù ð°ããâ@â°¹±÷1»! ýⰹⰹ`ã°¹a»!ùâ°÷±ë0ð0'ð»q»!ð°ââ°â¹±â`Uâ0ð0ð0ðð ð°â°þâ°sbUâ°¹±¹âÖ‘¹±âââ¹â â°ãã÷ëÔ!ð0ù ²ã"ð ã¹1»að°ð ù€`âãâãâ0ð0ð ùã°â°¹að°â@ã»1ùââ ã°ãë ã ùãâ°¹±ë ðÖ±ð ð ãâð0ù¹â@ã â@â ÿââ°à˜ û`Áà˜`°â`UâÌ %0þ°Ô±â°ØÀð ù¹! â°ë0ù ë°âÖÑbÔ Ô!ðZ¢%°â@â÷¹Ô â0»!ù ð Öù»±¹‘ð ã°âëââ@ââ°â°¹±âð ð°»1»!ùâ¹1ð Ö±¹‘ð »‘ð ð ù ðð ùpð Ô!ëã@â â0ð Ö±÷±â â@âëù »!ð fë»1ð0âãâ0 £à þÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓÖÓ¦Ó¦Ë Þ ! ËÀ°ââ0 ãâ@cã@ã ’"ðâÄÁo<„âò‰'á8xâþæƒ7!<Å!wQ\¾qâà­ƒ'Þ8xã.Ž»O¼qðÆ!Wá8xâæ‡pœ8„âàƒ'Ðè:xãÄ!ײ¥@xâà­£ *ÆšÀcâG>à1Ž|eùpÊ:Ä1x¬CðBÄ|⸈8œ2„Œ#ðÇ8à!xŒ뀇@à!xd⸈82Ž‹ˆG>Äq¬cùÈË8à!xˆ£&ë€GM.²qÀcù€Ç:Ä1Ž‹¤%â€GMà!ŽuÀÿ<¨RŽþ#$”ýø‡>¶á†6˜ã€GMRx0#à€Ç:à!l àð8‡ž4 ²€Ç60Øð Fþ PC€6€ xŒc-@J xPCâ@ˆ@à!f`â€G7Z0AðG:Z0A Ô€8àñÀ9@ˆ8à±xŒCðÇEÄqÀÃ(ðÇ8à!xÔdùBÆqq DðÈ:"„ŒCã€Ç8à±qŒc<Ö!xˆã"〇8Æ‘qäc<ÆqŒAÈ8à±qÀcð‡`×!ŽšþliðBÆšÀcðX‡`á1„Ç:Äq Dð<Ö!x¬c XÆ4Ì» óNcé]Fz—‘Þe¤wé]Fz—‘Þe¤wé]Fz—‘Þe¤wé]Fz—‘Þe¤wé]Fz—‘Þe¤wé]Fz—‘Þe¤wé]Fz—‘Þe¤wé]Fz—‘Þe¤wé]Fz—‘Þe¤wé]Fz—‘Þe¤wé]Fz—‘Þe¤wé]Fz—‘Þe¤wé]Fz—‘Þe¤wé]Fz—‘Þe¤wé]Fz—‘Þe¤wé%s™ÍQü‚<Ä1xˆBðG>’£\þd<Ä1„ŒãhI>ÆÀCð¨ÉEÄq DðÈEÆ!xŒã"Ç8bxˆÃ)â ŠSÆ|ˆë€Ç8"x!Aˆ8"xŒã"ãGKÆqÀC ùÇEÖqâ€(þqÀC ù‡@à!ŽqˆcÉ<Œ²Ž‹ŒÃ(â Ê:ò²xˆcðXGKÆq¬YÇEò!xäcðÇøà!xŒ!⸈8Z"x¬CðX<‚q´D ùÇ8ÄqÀCã0J>Ä£ d‡Qà‘qˆë<Ä‘q Dþë‡8Öqq¬cð<Æ|Œ£%¹È8¶´xˆã@È8²ŽqÀC HKÄ1>q\D yYÇ8Ö!„ˆc51 <r‘|ˆãȇ@à!„ŒCëBÄq\DðÇ8à!|ˆë(ú!Žr‹#¡Gà…>úÁ‹„b(ÉÇ8’0c 8à!x°¢ÚÀÂÞA Àcãȇ X tÌ€â Æª ŽqP#U@H&u„câ°Æ &j㸈@˜äC0Ç64À¨à؆‚já.àqNäcþ‡8à!x¥%âpŠ@à!Ž|! 8à!„qh @ˆu‡|€Èq@ˆ|xˆ-q@qXq€‡q@q@¸ˆqȇqXx0 xÈqȇq€‡|Xxˆqx0Š‹xˆ|·|‡|qh qÈ‹qÈq¸q€‡q@qX‡e…_ø…]Ø…(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂþ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(œÂ(Ü…(ü…]ø…)ü…]ˆÂ]à€Q@FxxÈqxx„X§„‡‹‡q€q€qxxXqp qX‡|§§¨‰|€€qh qp q@q€q@ˆu@q¨ „,x„‡¼‡‹„‡‹xxx‡š€q@q@ˆuˆq€‡u‡|p PÈ„„Xq@þq€‡|@Áj qX‡q€qp £€‡rxxÈqx7„X‡‹‡u‡š€‡qX€‡q@q,xXxˆuxq@qX‡q¸ˆu@qXq¸q@q€q€‡uxÈxxxȇ‹x§0 x‡‹‡u„X„xX@ˆqÈxX‡qh q€‡q‡uˆšh‰q€q€‡qxx‡q@€@ˆqȇ-ˆq@ˆq€‡q€q€‡š@q¸ˆš€q€‡qÈq¸q€‡u‡|¸q@ˆq‡qX„‡q@ˆq€qþ‡|€‡qÈq@£„x‡‹XxXq@Pøx‡u€‡f€„#p^ø^p5ƒH„Xq@ˆq@f€€€O‡uø €hXjqXq؆H †€jm‡| †xj xX‡qX„`€jx‡q€q@fªè†Hq‡X(xè†H„ˆ…j€q‡؃lÈq‡‹‡ñ„„§X‡‹‡‹x¨‰|@qh‰q€q€‡q¸ˆq€q‡u‡‹x‡q€€q@ˆup þq€q€qp XqÈ‹q€‡u‡qX@qð·–X‡–X„xx‡‹¨ xˆq€q‡‹x„˜PMøUPÐaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕaÕþaÕPРM…QÐPZPQXFq€‡šM‡‹xxx‡‹q€‡q@ˆ|xx0 xX‡‹q@qXq€‡q€qh qxqȇšh‰q€‡q„„„x„x¨ xÈq€qÈq@£@ˆq€q¸q@€h q€q¸ˆ|„‡‹‡‹0 xxx‡u€P臋xø…]ø…)Ü…ZØ…(üÝ_Ø…h¬…_Ø…_øÝ_øÝßý…]ø…ZØ…(¬…]ø…)üçý…)ŒÂ)ü…]ø…)ü…]þ¨…]ˆÆZø…]ø…]ø…)ŒÂZØ…h¬çýÝ_øÝ_˜Â_Ø…_Ø…_øÝZ˜Â_Ø…_Ø…Z˜Â_¨…_˜Â_¨…_Ø…_Ø…(Ü…_¨…_Ø…_øÝ_¨…)ü…]øç­…(¬…ßý…]ø…]ø…]ø…]ø…]ˆÂZø…]¨…_¨…)ŒÂZø…ZØ…_˜Â_˜Â_Ø…_Ø…_Ø…ZøÝZø…]ø…]ø…Zø…)ü…Zø…]ˆÂZøçÂZ˜Â_øÝ_Ø…(Ü…_Ø…Zø…]ˆÂ]ˆÆ]¨…(Ü…_¨…_Ø…(Ü…ZøÝZø…]ø…]ø…)ü…]ø…ú½ˆu€Pøx„Øå^pƒþ#PÐK8„CHƒKȇq€q@q`†X†eÈd‡u€jq †xXj€žê)jxq †€ª qX…p•q €‡|‡‹fqXj€uȇq`†€j£`†jªX…€ 8x‡‹x„‡‹xx„x‡q@ˆq‡|q¸qȇšx¨ „„q€‡q@ˆq€q@qh‰q€pŠq€‡q„‡¼x§„xˆ‹È‡qÈ q@ˆq€€‡qxþxxxx§x¨ qÈqp €q€q@qX‡ixxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxþXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXx‡‹x‡u€q@q€‡d`@q@M@q€£‡|„‡|€‡qȇ¨Ýqxxx„Xxˆq€‡q€‡q@q€q€‡q‡|xþx‡qÈ„xxx‡–0Š|‡š€q€‡q€qp @ˆš@qÈ‹q€‡qpŠšXx„‡šÈ‡qh‰u€‡u€È…xxØbß|è‡؇| ö~(öbïbïiï‡ȇ ‘vg'ö~ȇlÿ‡~Èö~èvqßi/ö~ȇ ébχqïö~èö|h÷lï‡|÷|èyÏ÷b—ölÏbï‡bï‡bï‡qχqχlχ~Ø~Ø~Ð÷ é‡lïbïˆß|øqxˆQø‡–oà70UP^(‚{ȇrP§x`þ‡u€q€‡u8 ðÀx @ˆu膈†qƒjq@jq€‡q †È‡p€Sx`€j€qXqxx`‡uè†H†qȇX(€u舄ˆ…€j€u‡ut„ˆq€€q¨‰|‡q€q@q@@q€€‡ux‡š€‡q€q@qȇq@q‡|€qÈ„„q€‡qȧx0Š|€‡š@q€‡q€€x„x‡‹‡šXqxx¨ „0Š‹„ˆ|xþ0 x‡q€q€‡qÈq€‡q€‡q€qØx„‡i…u€q  xª€q  x€X·ž8ðÄ „'N ʹ(Q£4r.juç¢FQ5Êø(ꢜƒ*O½û(MÒå%ÔqQ£Œ‹2Š&£àGÝ( üc<ãÀ3Î:ÄÙ&<âÔ&…‰O>ãX˜Ï8ùŒ£ < 8ëÀ#<ëˆc¡8ëˆ#8ðˆÏ:ĉÏ:ðŒc¡8Öf¡8 æ3ŽˆâÀ#<ãD<ëˆ#<g!<âÀc!<Á³<‰³Ž8 ®Ï8Ö&<â8ð(qð¬Ï:âÀ³N>q®8ð¬“Ï8ëÀ#þ<âÀC\>ãÀ3<$Ú¶qƒ£8ð¬SqùŒ#<눳<Á3<ãÀ3Î:ð¬‰ð(<³<ÄÁ³<ÄÕ&<ùˆSÛ: üS›8¶‰Ã $f¸áÆ%i­´—Œ#Nmâ038ÞŒ3Ž8ë`8y$N8D#8.° <Öp"5ˆ8Ô <ëPÀ8Ø@? 5Ô–8ðÇL⤠Úl£ëˆã âl£ðP#<Ý Bœ Ü#6V‡⌃âÀ#NmÝÖ&NmâˆX[>âÔ&Ž‚ãW›8Õ–O·ÝÂ#<âÔþ&N·ðŒ8"®3Ž8ùŒ#<ãˆc›8µ‰S[·ðˆ8¶‰“Ï8ðä3qùˆ8 Ž#NmâÔ¶NmâØ&<ùŒS›8ëÔ&<ÄÁ#<ãÀ#Î8ðŒC\mâLJ›s޹矃ºè£“^ºé§£îù(Îâ¢,Ã"8µ‰Ó-<8Â3Ž8K#<âÀƒ#<âŒ#<âÔ¶Ž8ëˆqÝÂc©8ãÀ#N>ð¬C<Ä--<ãˆ3<ât+<âÀ#<댓q¶‰qµáè <ÞÀ#NmâŒâ€Ç8à#xˆ 8àAœqˆâèÖ:pTÕfþµY(þ!ŽqÀƒ8ãȇ8j#ŽuÀƒ8µ!Ž@ˆâÀCë<ˆ³qŒë Ž@ÄâÀƒ8ðGmˆSâÀCð <ÄâØGù€qà!ŽuÀC<ÄqÀƒ8ëÀÑ:ˆqÀCù Nmˆâ¬âP8j³xX Äqà!xˆC –‚qà!xâ°8àAxÄ©¥àAœnÕ†8ðGmˆ3Ž|뀇8lCœ|§6ÄŽj#xGDÄY‡mÖ!x¬Cð<ˆ3Ž|gùÀÑ:ˆÁƒ8ð<ÄëÕGþµÇ:j3ŽÚù€‡8à±qÔfðXÇ8àQ„K¨àêTÁ%Š`qÀƒ@0€°‚Ñ€‡;fƒuDaE<Є ÀRX5PCðÇ:¨!€|ˆãà€âxPCKS3 Žqˆc-8€Œl£€À!j`ÝøÀ°Sˆ#Ä8àAŒ€Ä8j3xˆ#ã¨Í8l3xˆcië€qj3q(HµY<ÆuÀcù‡ˆÄqäGµ<ÆQqÔFðG>à!Žž‰cù‡‚ÆqÀcâþÇ:ÄQ›qØf¶<Æa›qÀc=ƒÇ:Ä1‰£gÄ© qòQ›qÔf£<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCðþ<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCð<ÄqÀCðà1ŽÚˆ£6 8j“qlVðèVÏò!Ž|ÀcâQ>à!ŽÚ¬ƒ8ùÇ:jCÇ6ù‡mÄ1xäCð Ž‚ÄqØF þ<Ä!"â(h뀇8Ö!ŽQü#ã¨8D´qÔF GmÄaÀCµYGmˆSq¬â¨8´‰c³›]‡mÆ!ë<ÄaqÔf*<Æ¡rxÇ6ÄÇ:àA‰£6âèÙ:Ä¡ qlV*GmÄñsÛäƒ8µ<Äaq¬Ã6â°Í8à±x¬ë NmÄÑ3qÔF›Ç:౎ڬÃ6â¨8ÖQqDDâPÐ:à!Ûˆãê"GmÆ!ŽÚ€¢ðX<ÖqXµ)çUPp¾ðGmÄ ‰£6뀇8à!Ž|ˆcùÇ8þÄaqÀC â€Ç:Äq؆8ðX<ˆ“xg 8ò±xŒâÈÇ8j#ŽuÔ†8ð‡@j“qÔ†8ðÇ:j³ŽqÀcâXGmıâÀC  8j3qÀcùè<ˆ|ˆC>Œƒ‚<‡‚Œ<<Œq¬<Œ<ˆÃ8(È:(È8ÀÃ8ˆ<ˆƒˆˆÃ:ŒŒCmäÃ8؆8Àƒ8Àƒ8ÀÃ8ˆCm<Œƒ8Àƒ8ÀÃ8ÀÃ8ˆ<ŒCm<Gmˆ<Œƒ8؆8ØÆ:ÀÃ8äÃ8¬<¬ÀqŒƒ8äƒ8ÔF·ÀÃ:Ç8Àƒ8ˆˆ8Œ<àHmˆƒˆˆÃ8ÀC>ˆC·ÀÃ8ÀÃ8Ô†8ŒC>Àƒ8ÔqŒCmŒC>ŒC>ˆCmGmŒ<ˆ<ˆƒm¬qŒÃ:ˆ<ˆCmˆƒm‡ˆŒC>Àƒ8Àƒ¥Ô†8(ˆ8ØÆ8Ô†8ÔÆ8ØÆ8ÀÃ8Àƒ8¬q¬2€<ˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmþˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆCmˆÃ.üCmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆƒmˆCmˆƒ@Àƒ@Àƒ…ˆÃ:ˆ<ˆCˆÂ20Â<äƒ8Àƒ&Œq¬CmˆC>Gmˆ<àˆmG>Œƒ8¬ƒ8¬qÀƒ8Ô†8ÀƒõÀqÀqÔ†8À(äƒ8ÀC>ˆCmˆC>t‹8ÔF>Àƒ8äC·Àƒ8ÀÃ8¬CmŒCmŒCmˆÃ8ÀÃ8ˆƒˆˆƒmäƒ8Àƒþ8ÔqäC·ÀÃ8äqÀqÔÆ8ˆCmG>ŒCmŒqÀÃ8¬<¬ƒ8¬<ŒB?Ô†8Àƒ8äÃ8ˆCm¬<Œ<ˆ<ŒCmŒ<Œ<Œƒ8Œ<ˆ<DmˆˆÃ8ÔÆ8ÀÃ8ˆCmŒ<¬<¬CmŒƒm䌃mŒÃ:ÀÃ:Ô†8Àƒ@(H>ˆÃ8¬CmG>Gmˆ<Œ<Œ<ˆ<ˆ<ˆ<¬Cmˆ<Œƒm¬CmäÃ8¬<ˆ<äÃ8Gm„m¬ƒmŒCmˆƒ@ˆƒm¬qÀÃ:Ô†8Ôq¨œ8Ô†8¬Ã8ÔF>ÀÃ8ÔÆ8äÃ:ÀÃ8ÔF>ŒƒmŒƒmˆÃf‰Cmþ<äC·Àƒ8äÃ8ˆ<ˆ<ˆ<äC·Ô†8ÔqÀƒ8¬ƒ8¬<ˆƒˆˆCmˆ<ˆ<ŒÃ:Ô†8Ô†8Àƒ8؆8ˆˆ8ÀÃ8ˆÃ:¨œ8ÀqØÆ8ÀÃ8ˆ<ˆCm<ŒqÀqÀÃ:(È4Œ<¬qÀÃ:<¬qÀÃ:<¬qÀÃ:<¬qÀÃ:<¬qÀÃ:<¬qÀÃ:<¬qÀÃ:<¬qÀÃ:<¬qÀÃ:<¬qÀÃ:<¬qÀÃ:<¬qÀÃ:<¬qÀÃ:<¬qÀÃ:<¬qÀÃ:<¬qÀÃ:þ<¬qÀÃ:<¬qÀÃ:<¬qÀÃ:<¬qÀÃ:ˆ<äÃ.äƒ8ÀÃ:<¬qÀÃ:<¬qÀÃ:<¬qÀÃ:<¬qÀÃ:<¬qÀÃ:<¬qÀÃ:<¬qÀÃ:<¬qÀÃ:<¬qÀÃ:<¬qÀÃ:Ô†8Ô†8ÀÃ8ˆ<ˆƒm¬<¬CŒÂ/0ØÆ8Àƒ&ˆƒmt <¬Ã8ÔqÀƒ8(ˆ8Ô†@ˆ<ŒCψƒÊ‰CmˆƒmˆCmŒƒ&ÀC·Àƒ8ÀÃ:ŒC>ˆCm, <ŒC>ˆCmŒC>ˆÃ:ˆC>Œ<Gmˆ<ˆþCmÇ8Ô†8tË:ÀÃ8Ô†8ÔÆ8ˆC>Ç8ô qÀƒ8ØÆ:ˆC·äƒmˆCm¬<ˆÃ8hÂ?Àƒ8Àƒ8ÀÃ8Ô†8Œ<GmGmG><äÃ:ÀެCmˆ<Ç:ÀƒõˆC>Àƒ8ÔqÀÃ8<ˆ<<ˆ<<¬<à<à<ˆÃ8äƒ8ÔŽÀƒ8ÀqÔqÔ†8Àƒ8Àƒ8ÀqÔqÀqŒ<ˆ<Œ<Ç8ÔqäqŒC>ˆ<¬<G>ÀŽÀƒ8ÀqÀƒ8ÔF·Àƒ8äŽäqÔ†¥Àq؆õÔqÔ†8ÔÆ8Àƒ8(ˆ8þ„8ÀެŽÔ†¥ÀÃ8ÀC·äƒ8¬ƒmŒƒmˆ<ˆC>à<ˆ<ˆ<ˆC>ˆ<<àˆƒmˆC>Ô†8ŒCϬ<ˆƒ&ôCmˆ<¬ƒm<ă<œC>½<ÈC>ÀÃ8ˆ<à<<ˆCmà<qÔ†8Ôq¬<ˆ<¬<¬ƒ8ŒCm¬ƒ8¬ƒ8ÔqÀƒ8Œ<ˆÃ:Ç8ÔÆ:ˆCmˆÃ:Àƒ8¬<ˆ<qÀƒ8Ô†8ÀÃ:Œ<ˆCmÇ:ˆ<ˆÃ:Ô†8Àƒ8DmŒ<ˆCmŒC>Œ<ŒCmŒ<ˆÃ8G>Œ<¬ƒ8Œ<þ<ˆCmˆÃ8ÔF·ÔÆ8ØF·äƒ8Œ<¬ƒ8Àƒ8Àƒ8ÀC·ˆC>tËÕCmŒ<ˆCmˆƒ‚‡‚¬CmŒCmŒ<Œ<Œ<Œƒ8Àƒ8äCmŒ<Œƒ‚Œƒ‚t <ˆ<ˆƒmŒƒmˆC>Ô†8؆8Ôq,ƒ&¬ƒ8؆8؆8؆8<âÂWP\AqÅWP\AqÅWP\AqÅWP\AqÅWP\AqÅWP\AqÅWP\AqÅWP\AqÅWP\AqðÖ­ÛõO ¸‚â Š+(® ¸‚â Š+(® ¸‚â Š+(® ¸‚â Š+(®þ ¸‚â Š+(® 8qëàé…'.qðÆ‰ƒ'Nà¸|ðÆq'Nà8Îâà˜OÜ8xãà­ƒ7NœÀ|ë@å+8qÊGÄáLÖ)hxÆ)6xÄHÙàYgxN+HÎÆálœ‚ÆálÎÄYžqÄéLœ‚Æél eËGô(ŸqÄhÄHœÎNG u8[žuþG qÄ)hœ‚ÖhÅYGœÎÄ)Hœ‚ÆG qÄ9M qà§ q8‡3½àžuàGxÆžqžq,\žqàG qd”qœ‚Nqàç4½àG Pþ‡³¦'qò9mÆGœÎÄHxÖ§ uÄYG uħ)ÄhxÄY§ qÄáLÎÄhòGœuZ½àYžuÄYGœ‚šžuÄÉgœÎÄgÖ)h½à'Ÿq'ŸqÄg½ò‡³qÄgxòG qqà'½àÑ žqògxÄ‘QÆ'ŸþEáGxÄGœ|ÆÑK qgq ÒK qà'ŸqôqòÑK qàñF/xÄç4qòGÄÉgxÄHxô*hxÆ)hxÄálPjJ ¦jJ ¦jJ ¦jJ ¦jJ ¦jJ ¦jJ ¦jJ ¦jJ ¦jJ ¦jJ ¦jJ ¦jJ ¦jJ ¦jJ ¦jJ ¦jJ ¦jJ ¦jJ ¦jJ ¦ÄÙåŸujJ ¦jJ ¦jJ ¦jJ ¦jJ ¦jJ ¦jJ ¦jJ ¦jJ ¦jJ ¦ ZG uàG ¦àYžu Aþd½àgxÄGÆÑd€|½Æ)HxÖèå|ÄGœGSôqÀcð‡@Ä!qhzYGAÖ1Ž|ˆâG>Ä!qdðGgÆ!ŽqpFMG>Äqxˆ#ð‡@ô2Œ/ƒÇ8à!ŒC z9Í:à!xèzÈ8šŠÀã4ù<ÅqDð<ÆqD/yÙ:8#ŽqtfâG>Ä!qdð<Æ!xˆ〇8à1P#‡@Ö1Ž|pFœÑ‹@Ä1xˆâ<ÆqÀcðÇ8þà1xŒ£ ã€Ç:ÄqÀC‡@Æ!½ÀCð<ÖqˆâGAÄ‘xèâ€Ç8à1xŒ#ãàÌ8 ² £ â€Ç8òqŒ#ðG>ÆqJ/GAÄqŒ 8¨xèeù‡@ÆqÀcð<ÄqÈFã(ˆ8ÆÁ™qÀC‹Ê‡8ò!qÀCùˆ8"PôCð‡8àѬcë‡@ÆqpFã°8౬âX<ÄuÀCëˆ8ÖqÀCëÇ8ò!qÀc‡@ÄqŒë<ÄþuˆcÑ‹@ÄQq4E ã€Ç:Äάâ<Ö!Ž‚èe ^ƱxèE ãˆ8ÆQ½œã(ˆ8ò!½¬C â(ˆ8ÆqDðÇ8à1ˆ£ ëÐK>Æ‘xˆâˆ8"ˆcðÈ<ÆÁ½ÀC/ëGAÄqtfùˆ8à!Ž|ˆëà¡xŒCðxÙ:à!Ž|Œë‡8à1Ž‚è%ãàŒ^2Ž|Œ£ ùÇ:"Ùèeâ€(þ‘q¬C âÈÇ:à1qdâˆ8à!x¼L ÌÀÈP‚aŒãH>%ŽqˆâÈ8Ä!Óˆ£ âàŒ^à ¼lz‡@Æ¡—u,j<ÆQqÀ#〇8à¡—|ˆ/ƒ‡^ò1½Dð‡@ÄQqÀC/ðxYgò1qäCðGAòqqÀc‡@ÄqþÀCë<Æ!Žqäã4ð<>xˆã(ˆ8Ö!q¬C ãÐ <ÄÓˆã€Ç8 2Ž|Œ£3C@2 B Àx<ÄqÀC<˜1òŒüâ€G>Ä1ˆÐK>Ä|ˆ#ã€Çi8³ŽqDð(þ!Ž|Œãeð<Ä!qDðÐ <Æ|Œã€Ç8šudâÈ:àqDbÄ¡3ÄaNÄ!ÆAbbàAàa8C6dcÄôÆ!ÆaàaôÆÆAB/bÄ¡3þÖÆòaÄ¡ òaàA/àaàá4ddÄA ÖA ÆAàAà!^¦ Ä3ÖANƒ3Æ3ÆA ÄNCàa`° ÆA Æ^fàa bàa Bòá4 BBBòáeB/8CàaÄa@A B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B"Ä¡ ÄaþÄ¡ Ä¡þ Ä¡ Ä¡ Ä¡ Ä¡ Ä¡ Ä¡ Ä¡ Ä¡ Ä¡ Ä¡ Ä¡ Ä¡ Ä¡ Ä¡ Ä¡ Ä¡ Ä¡ Ä¡ ÆôÄÖAòA,d8@–  Äa43NcB/Æ!ÆÖáe Bàa â4àA/àaBÆÄA6ÄÆÖ4aàAbÄÖÄÄA6^fòA ÄÆ¡ Æ!:cbÄÆ!BBà¡)ÄÁBôÄÆÖô‚3ÄÆ¡ ÄÄaòaàaNÖAàAbòÆA ÄÄ¡3˜þôbf€òA/àÁÆAòAà!8còA ô"àAàABàAB¨A "ÄA Ä!bòAòAàáØBàaÖA:cEbB/ BàAàAdD/ÆaÄÖÄA ÄaÖAòA Äá4bÄÄÄÖôÄaòAÆA Ä!Ä!ÄA ^ÄÖAâ4,DòÆ!ôB ôbÄá4àAÐa4€B¨Aà  ÄĺaÄĘ!ÄaQÖNôB °Abàá4þàaÖôƼaÄÆA Ö@áàa8CòAàA/àA/8C/Æaô"Äô^& B/ÖÄA ÄaBàaàaÄaàaòÆÖAàAàA/Æ!BÖaàaÄA Ä¡)ÄA ÄN#:CÆ!ÄÄA ôbòÄ¡ ÄÄá4àaÄÄaàAàabàAàAÆaÄA ÆÖA8CÆ!ÄÆôÆAòA Äa^¦ N£ ÄÄaàAÆÖÖ!ÆÆÄaàaàAþÆ¡ Æ!àA/NNÆÆÆÆ!Äô¢3ÄÄÄôÆÆ!ÄÄabàá4àa8C BÆA ÄA ¦àaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàþAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàa BàaþAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAàaàAòaBàAÖÆÖAàAÖAàAB@–`bÄAàAàAà¡)ÄàAÖAàaþ8c BàA/òA8C "Æ3ÆÄA ôB ÄABÆAb8C B8CÖaÄ¡ ÆÆAÖá4 B/àaBÖaÄA Æ¡ ÆA NCàaÄ3ôÆ3ÆÆÆA/döA Ä!ÆaàAB/ÖaôB6ÆÆA˜ÆAÆÁ€ $àà¡Z`ÀÄa¨Aœ€(ÀÄaÆ`Àô‚ 8à ÀdÆa`ÀÀaàá(` àaBBbâ48càaþ B/8Cb8cÄA ÆÆA Äabâ4àAÖòAàa8cdDÖÄÄÖÖÄÁBÆA Æ!^F NCàá4Äa B8#ÄA Æ€ àA¨AÄ¡ @ B°¡B/˜Ž ¨Aþ€(`¢Á Àd @là 8ààáeà¡)àaúaÄA ÆÆÖA6Æ3òabàAb â4Äa Bà¡)àaÄabÄA ÄA ÆA/àadCÖaþBòAÆA ÆôB Æô"ÆAàAšBbBàabbà!ÄÄ¡ Ä¡ Ä^ÄòaB/àaàAàaÄÄaàáeB/àaQàA8ã4òÆ¡3ÆAà!ôÄaŽ òA/"NCòa "ÄÄ!ÆA/òáØB8cô¢ ÆÄ¡ ÄÄaàAà!NCàAòa b bÄÄ¡ ÄÖa@ÆA Æ¡ Æ¡ Æ¡ Æ¡ Æ¡ Æ¡ Æ¡ Æ¡ Æ¡ Æ¡ Æ¡ Æ¡ Æ¡ Æ¡ þÆ¡ Æ¡ Æ¡ Æ¡ Æ¡ Æ¡ Æ¡ Æ¡ Æ¡ Æ¡ Æ¡ Æ¡ Æ¡ Æ¡ Æ¡ Æ¡ Æ¡ Æ¡ Æ¡ Æ¡ Æ¡ Æ¡ Æ¡ ÄÖÆaBváàa b b b b b b b b b b b b b b b b b b bàaQàa8cb:c"DòaàAàAÆ3ôBà B/ B/àaBà¡)àAÆ¡ Äá4ÖAàAÆôB ÄA ÄaàaÄaà!âeàAÖÄab:CþàaàáeòÆ!ÄaQ BàABB/àaàAàA/òÄ!àaàA BòAÆÄ!ôbòA ÆÖšþaÄA Äab bòA ÄÄÄô"à@àa  ¨!ª@àAT€Äa4 ò  Äa\€ àAT€Äf€à  ƨ!à¡)¨!Ä\€Àf€Ö¡à8aòaB B/àAòANôÄa8cBàá4òá4àA/àá4òA/ BÆÄþaàAò3Ö!ÄaÖ^ÄÄaàA/ÆÆÖA6ÆÆA ÄaBàA/àA/Æ¡ ÆÄ!BòÆÆAàaàá4ÖÄA 2 Î>Aà¨AòAàaàAà ` ‚@ B¨ª`À!&¨!bÄÁ`@Ða–@¨aªà48còA/4áÄN#vþéÿê~¡è¿váð víú%°à¯ƒ»~íúUp×Aµ6ü%ð—ÀZ¿jü%ðW­‚kýÚõkׯZ¿vý*xp×þ¯]¿ þøk×Á]¿vÕú%ðW­]¿vý*ø«à¯]¿výXkׯ‚¿jýÚõkׯ]þÚõk×/íúµëW­_ÕXkׯ]µþÚõk×/¿ þÚUk×Á†»jíúUë×®ƒíúµ«Ö®_kýÚõK`­ƒ»~ üµëWÁZ»ÂÖúµëW­]µ~üµë`­qðà­7M”8qðÆå7Þíqðnƒw{¼ÛãàÝïö8x·ÇÁ»=Þíqðnƒw{¼ÛãàÝïö8x·ÇÁ»=Þíqðnƒw{¼ÛãàÝïö8x·ÏmãÀsÛ8ðÜ6<·þÏmãÀsÛ8ðÜ6<·ÏmãÀsÛ8ðÜ6<·ÏmãÄv<·Á#<»ü3N>âŒÏmãÀsÛ8ðÜ6<·ÏmãÀsÛ8ðÜ6<·ÏmãÀsÛ8ðÜ6<·ÏmãÀsÛ8ðÜ6<·ÏmãÀsÛ8ðÜ›8ðˆ8ðÜ&<âÀ#<⌓Ï:â„0Ê/Œ Nlðˆ3Ê8v"ºÎ?ÿˆƒ(<ã jç¤ãÄ–Ï8âÄ&N>ã z¢âLšÏ8ãh"<¨NJMðŒÏmðˆ8ðŒ#NlÔ5¬3Ž8ëÀ#6À3Ž8ðˆ5Ä&NlðP#<âÄþ†*<¨Þ8ðPÀ8Ôª±å3<ãÜÏmëÀJ?±O>ãÀs[lâ¬Ï8ÔŽ8±­s3 Ð@œB à¬O8$Ï8± 5hŽ8Ä$°N8$s1 ÀCMÚÀ35À3Î:Ô N8$#<Ä$ N8ìqM>ùŒs[lâŒ#NlâÀ³<âä#NlâÀ“Ïm±‰Ï8±‰“Ï8âä3µùˆ³NlâP›8ðä3<ë jç:ðˆCíÝãÀ“8±åc'<·Á#Î8væ#Nl·Å6ÎÝðä3Nl·Áƒª8ð¬3Ž8ðˆÛmùˆ³Nl·Q@2ãþ 1AlÔ5À3N>ã û0ð0Àì |BMàÀ#5¬CëÄÎÉÜFLâP€6±›8ë¬(ÿÀ#N>¨öóO?æi>ö)¤ýüÓO>ë÷³~?ëCÚ¤ýäi?ùÔŸ¤ùøÇ>ê·¾~ôc}ý  ø~@* Œà?òQ¿~¬/ʇ!• Bª ìGûñ|@ªô`? e@ö#… ì‡ûQ¿|¬¯ÌÇ?òAÀ~ˆc 8²ŠØˆcð¸Mlò!ŽØäC±É‡8b“qÄ&âˆM>Ä›|ˆ#6ùGlò!ŽØþäC±É‡8b“qÄ&âˆM>Ä›|ˆ#6ùGlò!ŽØäC±É‡8b“qÄ&âˆM>Ä›|ˆ#6ùGlò!ŽØäC±É‡8b“qÄ&âˆM>Ä›|ˆ#6ùGlò!ŽØäC±É‡8b“qPKŒÇ/ú±xÜ&6ùGlò!ŽØäC±É‡8b“qÄ&âˆM>Ä›|ˆ#6ùGlò!ŽØäC±É‡8b“qÄ&âˆM>Ä›|ˆ#6ùGlò!ŽØˆ#ðãb#jâX<²Q,ƒ€‡8Æ!xh"w[<ÄqÀc±±Ó8‡*xÜþfë<Ä1x¬CðãÆq j &b³Ž|ˆc±¡†nÃ8qÀCùˆÍ8СxPCãÈÇݨxˆãnÔÀ8b3xˆz Ö8ò!ŽqÀ#±Gl¨!xlC∠ªÖq›|ÄF±¹ (þ1xˆcëµÆ›qÀCð<ÄA­qP‹Ȇb³G ˆcâ`ìÄŒˆƒˆ<ÖÁ ˆƒ€h%àqPCð¸ 5qPCç FFÛÀc«ø@*p j#6â¸Û8à1xŒã Ö:b#ŽØÜã€Ç:Äuˆcþð@Ulƛ۠ ãX‡8à1Ž|ˆƒZëˆ8à1ŽØˆâ@ÖqŒ#â –8Æ‘uÀCÙËž8b³je/6q^ÇÝò,Ž8#Ùƒ‡8ò!Žì‰Ùƒ‡8ò¼qÀcþðG>à!xÄâXÆqäcðG>ÆqäcðG>ÆqäcðG>ÆqäcðG>ÆqäcðþG>ÆqäcðG>ÆqäcðG>Æqäcð‡8ÆAqÀcâÈÇDÄ‘qäcùDÖ‘qÀCëGF± F â€Ç:à¡ xHEð<Æ¡‰qˆcã€G>ÄAq¬ëxÊ8ħM$ 8ÆAqÀcùÇDÄ¡ ‚ˆã)Ô<Ö!j@Ô<ıj@Ô€8¨xP#5q À–² FÖ!x0Câ FÖAÀãAÔÀ:¨€qÀCÔÀ:¨qPCâ€Ç:¨!xPc 8¨Püâ€þ‡8à!x8M<Æá4xˆ 8â4‚Ø2À:&"‚P#ðX‡8"xˆƒ â˜È8àñ x¬Ãi<Äq@DyDÆAqÀCðAÆ!x8 â<ÄqÀcðAÆ1§Á#â‡Ó ’q@dAÆ!ˆŒÃâ È8ò!ŽuÀ#〇8à!xŒã<Ä1Ž|Œù<À"x¬â€ÇƒÄqäCð<œF|8 ã<Æqäc<Ö!‚L‹ âxÓ ²Ž‰ŒÃOǃı‚ˆëpþDÖ!xˆã) 8à!ŽÁc ÈG>Æ!ˆHE<Öá4x<âXA¤â4x8-â€G>Ä‘§­ÃiðX‡Óà!Žu8mNˇ8àá4xˆî„Ç:à‘qÄðpg>ÄqÀcY‡Óò!x8  8à1qÀCqg>¤’xŒÃiëÈÇ8Ä|ˆ#ðp<ıwæë<œ–qÀcùAÄ‘qŒÃiùpÚ:òá´‰ˆƒ Nƒ‡;Çá4x¬ùpÚ:ÆqDã È8 òÔ|ŒCðX<Ä‘§åÃiëAÄq¬ã<þœqLÄiù‡;!â´|ˆcâXÇSó!ŽqdðÇ:ı PÀC*Ç8ıqÀCã<Ä1qÀCã<Ä1qÀCã<Ä1qÀCã<Ä1qÀCã<Ä1qÀCã<Ä1qÀCã<Ä1qÀCã<Ä1qÀCã<Ä1qÀCã<Ä1qÀCã<Ä1qÀCã<Ä1qÀCã<Ä1qÀCã<Ä1qÀCã<Ä1qÀCã<Ä1qÀCã<Ä1qÀCðȇ8àá4‚Œ 8vþñ‚ˆâX‡8à!Žqˆâ‡8à!Žqˆâ‡8à!Žqˆâ‡8à!Žqˆâ‡8à!Žqˆâ‡8à!Žqˆâ‡8à!Žqˆâ‡8à!Žqˆ 8à1Ž|ˆƒ 뀇8à!xŒCãÇ8à!xˆcðÇD8 d0<Ä¡ §åc"š@?"©ÀÃiðXÇ8à1ˆˆ#<ÆqÀcðÈÇ8"•uˆcðÇ8à1Šq@D〇8¨€hˆc¾H<°!qÀCÌ <¨xPCãÇ¢±xøBN[Ç8Öþj@ðG,jÔÀ:à±já@4àqb@Ô<¨x<ˆG8uÀÃÅ?&"“‰"â˜q q q˜§™q€‡u€q€qXjx‚X{Ñ”qÈxp§u q°§!ˆu€§Yxx‡q€§q‡|˜q€q˜§q€§w"©€‡| qxxxp§qȧÉx©È‡‰p§q€q‡u‚xpxˆ‡u‡qX§!q ˆu §!qX‡q€‡qÈq q‡þu §§§xXˆ‚‡u‡u q˜qX©€‡q€q€§yq€§‡!§!ˆ‡§© q€q€‡u€‡…Xq€‡q‚x˜H0ƒ#83€„sXq ˆu‚‡§x x‚‚x‚xX‚‚X‡q€q€q˜°0ˆxxX‚‚X‚‡‰‡‰pšo\§‘Š| ˆqXq€©€‡q€ˆuxŠq€‡u˜ˆux‡q ˆq€‡q€q ˆq ©€q‚Xq°—|˜qXˆ‚‚þx‡|ЧXq ˆuxX‚ˆ‡q q€‡q€q€q€ˆq ˆq€‡q€ˆuˆ‡q€ˆu€q°—u‡|xpxXx˜Q‡|pšq€‡|€‡u€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€©x w‚q€‡]ȈxXxˆˆˆˆˆˆˆˆˆˆˆˆþˆˆˆˆpšq€q€‡q€‡qøFx‡|xXxxx‡…_`„XˆM€‡u xq€‡øq€‡|‡‰‡|p'xx q€ˆq‚q€‡qpx‡|xȇq€‡|ŠQðxxÈq€q †`qØ q€‡„s8‡ q €j€uèxXxxxjtÐ*jq ‡qXj€Q*ȇs˜jq †€‡uj€u`q°†€Qè‡þqˆ‚xx‡qˆ‚‚‚Ðq q€q qx§ˆ‡i‡qXqxqX‡q€q€‡u€qXxq€qX§!w"ˆ|ˆ‚‡uqx q€‡q€qèNx‚xxpš|‡|ˆ‡‡q qÈ©°—|xȇq€qx q q˜ˆ|‚‡| ˆqx‚ˆx‡u˜qX‡o‡u ˆ|x*‚px‚‡u€q€‡‡uȧÉq€‡u˜§q ˆupšˆupxxqXq€þ‡|{x‡uPø‚‚xXH8‚MØ„[¸Hp3€q€q€§qxXx‚xXˆpš‰‡u˜ˆq€q€ˆu€ˆqpš|x‡‰xxxxx‚q€‡q q §q˜qxxx‚ÈqXx‡|‚‚x‚q ˆqXxxx‡u ˆuxq€q˜q€‡qÈq ˆq€§™ˆq‡q€‡qXx§q ˆq ˆqpš‰qÈq ˆq€‡q qX‡|‡uþ€‡qȇq€‡q€‡|ˆpš‰xpxxpx{Éq€‡qXxxq ˆq€‡q€‡qpˆx‡e…u ˆ| q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q€q q ˆq˜‚‡]èx‚ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ‡!âqpxxpþxx‚xx‡‰x+°‚x‚Ðx‡|‡qÈxx‚Xx‡q qXˆp‚xq‡|€§É‚‚xXq‡u‡qX§q€q ‚8l€?h°q€‡q` à€ ˆ€jq Xx膨ˆPcj€?h€°p€j€u † q †X‡q؆¨ˆ€j€u px †Xqè†8ˆ…Ø‚qx©È§xÈ‚x‡q€§!ˆxþxX‚x‡u€§yq€q€q‚xp§|xp‚‡!qxxXq€ˆâu€q ˆxˆxx ˆ‡q˜qx‡q q q€§ÉˆXqXqâq€‡u€‡q€‡q€q xx‡u‡qXq€ˆq€‡q€ˆq ˆq‡qXq€©€q€§‡u€q ˆu ˆuqˆxx‚pxx‡‰x‰Xq ˆu §Yq‚x˜–uPãqÈ‚‡u€MqXx‡u€‡u€§qþ€q€qˆq€Pø‡‰xH0LØyØLÀHÀ3€5‚x‚px‚ˆxˆxŠ|x xxqÈ‚xxp§q€q€q˜q€ˆq‡|€‡qÈqx‡!x‚p‚‡qȇq€‡u€‡upšuˆpxpšq‡|€©È§qÈq€q ˆqȈ‡uxXx‡u€q€q˜qxxx‡upš‰p'x‡| ˆq€q€‡u€‡q€q€q‡|‚‡upx‡uxþ©€q€q€ˆq€qÈq˜q qÈq€q€°€‡qÈqˆx‡qÈq˜ˆq˜ˆiqŠux‚xXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxxXxþxXxxXxˆ‚‡q€q€q€q€q€‡]ø§‡q ˆq€‡u€‡q€‡u€‡q€‡u€‡q€‡u€‡q€‡u€‡q€‡u€‡q€‡u€‡q€‡u€‡q€‡u€‡q€‡u€‡q€‡u€‡q€‡u€‡q€‡u€‡q€‡u€‡q ˆq€‡qxx©È‚ˆXxX‚xxp‚xx‡˜T@… ˆq M‡u€q€‡u€qx‡q ˆ|q€‡u ˆq€q ˆ|€qX‡q ©5†‡|xȇq qÐq€‡|XxþÙ‡‡u€w"qX§q€q€‡u€qXqq€qXxX5~*xpxxpšu‡u w‚q€q€ˆupšu€q€q€‡xð…… §‡|ˆˆ|ãŠË'^¾qðŽ·PÜBqâR¬(ž8ŠùÄ-Gq¼u×-\o‰ðÄÁË7ž8xùÄÁo‰ðÆ-”¸pÜÂqá­ƒ7nÝBq3ÅUoÜÂqsÅ­[8nf¾q3ቃ·N"¼u ÅQHqEq×ÁÕOܸ…ëàq;‚ ´ý<=~ÄÛ:xãàId6 À¢-”OâÂÕð$—o¼qùÄ-'ÞºðÖ‰£(ž8ðˆ8 #Î8ùä$Î:ðˆ³8ðŒ#Î8âÀ#QEâÀ#Î:âÀ3<â,´ÎBâO>ð $N>ã¬Ï8âŒÏ8ðˆÏLâ¬3Ž8ëP$Î:âÀ3<âP4Ž8ðHD‘8ðˆS‘8ë6<ãä3<ãˆ8 ‰8ëHþ´Ð: ‰Ï:ðˆO>â,4E-4ÎBãˆ#Ø8ðˆDù¬8ãÀ#<âÀ#<â,$ÎBâä#Î8âÌ4 (ùˆ#Ø\ðÌÏ\ðÌÏ\ðÌÏ\ðÌÏ\ðÌÏ\ðÌÏ\ðÌÏ\ðÌÏ\ðÌÏ\ðÌÏ\ðÌÏ\ðÌÏ\ðÌÏ\ðÌÏ\ðÌÏ\ðÌÏ\ðÌÏ\ å3<â,4PEâìòÏBâÀ3ã,$ÎBãÀ3ŽDã¬#Î8ëˆC‘& ­#<âдMâT$ΉëÀ³Ž8ð¬³8ðˆÏjëP$ΉðˆÏ: ‰Ï:ðˆS‘8ñˆ8ð¬C‘8ëÀÓÍ0ðX£Á  L³Ì2ÓX³ 2ËXC92ËLC92Ö,3 å”O3 2§O³ŒêÈLƒL锫> 2µ[C¹êË ³ŒêËLƒLéªSnÍ2³#CùéÈL»5ËLCù4±[C¹5Ë c åÖľŒ5Ë cÍ2Ó”n åÓ ³Ìé”O³}éÓ,cÍ2ÈP>Í2ÓX³Ì4þËLƒÌ2ÈL³Œ5–1 k,Ö Ü4–1;d”n˘†5ØW:kĢ妱 kLcÓ(Ý鬱½ÓYcÈXÆ4–a Ên§[Æé–1 dPnvÓˆ]í¦Qºi,cvÈ œê(7ÒM£tÖ(Ý4–¡‰~ÀC"ð˜ $Ì€ 7@#ÿȇ'0áL¸âG>ıf@ãØÆ 0Šˆc!ã¨<ÄuˆâX<Ä1Ž|,dùÇ8àH‘q,dù€‡8ƱqTd ‘<òq,dðlj$u,Dð<Ä1Ž…ŒãXˆ8à1ŽuÀcù€‡82þŽ…ˆc EÄ!qŒƒ"ɇ )2ŠŒc!â€Ç:à!Žuˆcù€‡8à1ŽºëEÆA‘uÀcð<ÆAqŒÉ<Æq ã¨È:Ä!qœh <’xH X<ÆqŒ£"â ˆ8("Šˆƒ"â ˆ8("Šˆƒ"â ˆ8("Šˆƒ"â ˆ8("Šˆƒ"â ˆ8("Šˆƒ"â ˆ8("Šˆƒ"â ˆ8("Šˆƒ"â ˆ8("Šˆƒ"â ˆ8(2uˆc ‘H>Æ!xˆ»ø<Ä!qPDEÄAqPDEÄAþqPDEÄAqPD<ÄqÀcð<’qÀcùEıuˆcð<Æ!ŽqäcâA#&Q ,$〇&Æ!xˆë€Ç:úñqäC‘H>ıq,dâÈÇ8à!Žuˆâ ˆDò±q,$ãXÈ8Ö‘Mˆc <ÄuÀc 8(2q,Dð  <Ö!Ž…Œã€ã\*²xˆc&ð ÉBf"xˆãXÈ:౎…ŒC'Â0€C (FŠB ~°(@1 MhbÁ¢Å(D1 M–¡ xˆc!ùGÝ/øÁ¾ð†?<â¯ø#âX<ò1q,dþ⨈8~Ñ…ˆcñžÿü‰Ä±qˆc!âÈÇ8$qˆâ È8’qˆ 8Ö™„à hÄÄ1xŒC 8"xˆcâ€Ç:à!ŽŠŒc!â€Ç8à!x¬CÇBÆ!Ž…Œƒ"âÇ:ĹŒC YGEÖ!‘|ÀC Ç8ò±qÀCðÇ:ˆÃB¬ƒ8ÀƒDÀÃ8Àƒ8¬Ã‰ˆ<Ì„8,ÄLÀÃ\ÀÃ:Àƒ8ÀÃ:ÀÃ\¬ƒ8Àƒ8Àƒ8äˆC>Àƒ8ÀÃ:Àƒ8Àƒ8Ì<ˆÃLÀÃ:TÄ8äƒ8äÃLˆÃBŒC>ˆ<¬<¬<ˆÃ8ÀÃ8äÃBˆ<ŒC>Àƒ8ÀM¬CE¬ƒ8ÀÃ:,Ä:,Ä:ÀMTÄ:ŒC>ÌDEÌDEˆÃ:,„8Àƒ8Ô8¬CEÌÄ8¬EˆC>,Ä:ÀÃ8¬CEˆTD>ˆÃ:Àƒ8,Ä:P„8,MÀƒ8äÃB¬CEˆ<ˆ<ˆ<ˆ<¬EˆÃB€Â?þŒ<ˆEÜ#/ØÚ?äC0˜$8ÀÃ8ˆC>À3€8ÀÃ8@AŒ5ŒÃB Ä:ˆÃBˆ<ˆÃBH<ˆ<Œ<Œƒ8Ì„D,„8ÀÃ8,„8ŒC>ˆÃBˆ<ˆEŒÃBˆC>ŒC>ˆ<ˆ<ˆÃ8äƒ8,Ä8ÀÃ:ˆ<ŒC>P„8,Ä8äÃ8,„8ä<ˆ<ˆC>Àƒ8ÀÃ8ˆC>,„DÀƒ8,„8Àƒþ8P„8PÄ:,D>Àƒ8Œ<¬EˆC>HÄBˆˆ<Œ<¬ƒI®<ÐÄ4€ÂBˆÃ@ÀÃ@ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀÃ8ÀþÃ@ÀÃ@ÀÃ@Àƒ8Œ<ˆÃ8¬ƒ8,Ä8äÃBˆÃ8,Ä.ô<ˆ< <Œ<Œ<Œ<Œ<Œ<Œ<Œ<Œ<Œ<Œ<Œ<Œ<Œ<Œ<Œ<Œ<Œ<Œ<Œ<Œ<Œ<Œ<Œ<Œ<Œ<Œ<Œ< <ˆ<ˆÃBˆC>Àƒ8Œ<ŒÃ:,„8,Ä8,Ä8ˆC>ˆÃ8¬ƒ8Æ:ˆ<ˆCPˆ<ˆC>ˆƒ&,ÄLÀƒ8Àƒ8€<Œ<¬ƒDÀÃ8ˆ<ŒÃBHÄBŒ<ˆ<ŒEHÄBŒÃ:ÀÃ8,„8,„8PÄ:ˆƒ&ˆ<ŒÃ:ˆÃ:þˆÃBŒ<ÌÄBˆÃ: Eˆ<ˆ<ˆÃLÀƒ8,„8äÃ8,Ä8¬ƒ8T„Iƒ8¬ƒ8äÃ8P„8Àƒ8,„8T„8Àƒ8PÄ8¬CEˆEˆC<ÀÃ:ˆ<ˆEˆ<¬ƒ8¬ƒ8,„8,Ä:H<ˆCE¬ŒƒDÀƒ8ÀÃ@ÀMˆ<˜¤8,„8ÀƒD¬ƒDÀƒD¬ƒ8Ì„D¬ƒ8¬Ã8HÄ:ˆÃLˆÃ:HEÌEÌ„8Є8ÀÃ:ˆÃLˆ<¬<¬ƒD,Äþ:ŒÃ:Àƒ8¬ƒ8ÀÃ8ˆ<¬ƒIÂC>ˆE¬<ˆE¬ƒDÌ<Є8¬ƒ8ÀÃ:ˆ<¬ƒ8¬ƒDÀÃ:˜$<¬ƒ8Ì„IÂÃ:ÀÃ:ÀÃ:ˆ<¬ÃB¬ƒ8,„8Àƒ8¬Ã8HÄ:ÀÃ@˜äLŒÃ:Àƒ8,„D,MÀƒDÀÃ:ŒÃ:˜$<ˆƒ`¬<ˆÃ:ˆÃLÀƒDÀ(ôÃBŒÃ:ÀÃ8ÿA(샭AƒÿÆÁ¬C>ŒÃ:Œƒ804À @ ˆCEˆCEŒ<ˆþ<˜äBHEŒƒ8ŒEäÃ@ˆ<¬ƒ8ÀÃ8ˆC>ŒCE¬<¬E¬ÃBHD>ÀÃ8¬EŒÃBHÄBˆÃ:ÀÃ8ˆCEˆÃ8ˆ<ˆ<¬ƒ8ŒEˆ<ˆÃ:,Ä8ˆ<ŒÃBˆÃ:ÀÃ8,„8Àƒ8¬ƒD,Ä8,Ä8ÀÃ@ÀÃ8ˆ<¬Ã‰ˆÃBˆÃBŒƒ8,Ä8ÀÃ8Àƒ8¬ÃBäÃ8ÀÃ8Àƒ8ÀÃ:PÄ8†8,D>ŒÃ:,„8ÀÃ:P„DÀÃ8ÌÄ4hÂBˆÃB˜d>°­Iæ1KD>³8äƒ2çƒ2çƒ2çƒ2çƒ2çƒ2çƒ2çƒ2çƒ2çƒ2çƒ2çƒ2ç1çƒ8Àƒ8þäƒDäƒ8ÀC>Œ<äÃ8,Ä8ˆÃ: <äƒ8ÀÃ8üÂ?,„8ä1çƒ2çƒ2çƒ2çƒ2çƒ2çƒ2çƒDäÃ8PÄ8ˆ<Œ<¬C>Œ<ˆEˆ<ˆˆƒ`ˆ<¬<ˆÃBŒC>ˆ<ˆÃ:œˆ8Æ:ˆÃ:ˆC>ˆÃBŒ<¬ƒ`Є8ÀÃ:,„8ÀÃ:,Ä8œÈ:ˆÃBˆÃ8Àƒ8ŒEˆˆÃ:Àƒ8P„8¬À3@6dC((ˆ5À8,6Àƒ8ÀƒÉåƒ8†8ÀÃ:ˆÃ8ÀÃ8ÀÃ:ÀÃ:ˆ<Œƒ` D>ŒÃBHDEŒEŒC>,„8 <ä<ˆÃB¬ÃB „`Œƒ8ä<ŒC>ŒÃBŒŒC>þ,Ä8Àƒ8ŒCEˆÃ8,„8äÃBHÄ8äƒ8ÀÃ8ˆÃ8¬ƒ8Àƒ8ŒÃBŒ<Œƒ8äÃ8ÀÃ8Àƒ8ÀƒÉÁÃ:ŒÃBH<¬EˆC>¬Ã8LÃ(ˆÃBˆCEŒCÝŒCÝŒCÝŒCÝŒCÝŒCÝŒCÝŒCÝŒCÝŒCÝŒCÝŒCÝŒCÝŒCÝŒCÝŒƒ`¬<ˆ<ŒÃBŒ<ŒÃ:ˆÃ8¬ƒ8ÀÃ8ä<ŒC>ˆÃ@Àƒ8äÃ.äÃ@ÀÃ8Æ8ÔÍ8ÔÍ8ÔÍ8ÔÍ8ÔÍ8ÔÍ8P„8Œƒ8Àƒ8P„8ÀÃ8äƒ8ÀÃ8P„8Þ8Àƒ8ÀÃ8ˆC>,„8¬ƒ8„À ¼ À:ÀÃ:Àƒþ8ŒÂ8ˆÃBÌ<¬C?üƒ8,Ä8ÀÃ@ˆ<äƒ8,„8,„8P„IÂÃ8,Ä8Æ8PÄ8ˆEˆƒ&ÀÃ:ÀÃ:ˆÃ:ÀÃ8ÀƒI.Ä8ˆÃBŒ<¬<Œ< „8,Ä8ÀÃ@¬EŒÃ:ŒÛÂÃLÀÃ8ˆ<¬EŒÃB¬<ˆ<ˆ<Œ<Œ<Ì<Œƒ8ÀC>Œ<äÃ8ÀÃ8TÄ:,ÄLˆÃLÀƒ8Æ:,„8À@¬ƒ·NıxHdð<ÖuÀÃ!ɇ8Ö!‘Ž\Ä!âèÈ:à1‡ˆcðX‡8Ö!ƒ¬Cð¸ˆ8Öq¬CëÇ: "Žuˆ£#â0þ¡ÅqäCðp<Ö!¬âX‡8Ö‰tdâÈÇ8ÄáqäC"‡A-‡ÀCðX‡8"ƒŒŒ‡D "Žuˆë<Ö!xäcÓtˆ8à±x¬Ã „vˆ8Ö!x¬C뀇8à!‡0ë<Ö!Ž|ˆã"Y‡8ృ¬C뀇8Ö‡ÀCð<ÖqÀCð‡CıxˆÃ Ç8à!x\DðÇ:ÄqtÄ!âX‡8."xˆÃ £ø<ƉÀã8‚”Á‹#XÑ fˆ‡AÖaq0Y<`!m°‚à@þ j@ð5àb ë FÀ±béH˜ò1‰¬#AÉÇ8 2ŽŽŒC‘›á1‰äã0ˆ8ò¦|ŒCðȇ8ÖÑ‘qdlâÇaqÀ#ð<ÆÑ‘|ˆÉÇ8@2ŽuÀcâ0È8Öq¬#Að‡8 "xŒ$âÉ:@"xˆcð<Æ’|ˆ£#Y<Æqäc‡Dà1ŽuLsâ€Ç8 2ƒŒ〇8 ’ ŽHâXGG¦! xˆ£#〇8à1àAàaà1àAàaà1àAàaà1àAþàaà1àAàaà1àAàaà1àAàaà1àAàaà1àAàaà1àAàaà1àAàaà1àAàaà1àAàaà1àAàaà1àAàaàAàA@b¦I"Ö!ÆÁ ÄaÆÄÁ ò¡þÖòAàAàaà1àAàaà1àAàaà1àAàaà1àAàaà1àAàaà1àAàA BàAàA" bàaàA"àaàA" B¦)Æ!ÄaàAÖÆ$BÀH þÀ Còñàa:B "AÄa ‚1 Bà!AòÆÆòÁ ÄÁ Ä¡#ÆÄ¡#4Äa@BÆ$Ä!:B¦iòAoòaÄaàAÆ¡#ÖÖAàa bàaÄÆÁ Äa b@bÄ!dÄ¡#Ä$Â!àaàÁ!àAàÁ!àA:B:BÖ$bÄ!AàA:bÄÄÁ!ÄMÖa B"¦iàa:B"àÁ!àA bàA bàá"àAà1 bàaàaàAÖ¡# ġ#$ÖþBàaÄÄÁ ÖÁ $$ÄaàAÖ!$ÖÖ!ÄñÄašÄÖÖÖAÖÄaàAÄ.Ä£#$ÄÁ Ä$$ÆÖaàA"ÖÆÁ $ÖÁ ÄÁ ÄÁ ÄaàAà1¦IÖÄ¡#ÄÁ!$bš$¢#ÄÄB"Ö¡#$$Äa4á$¢#ÆaÐŽÀ ˜î ÄaàAàAà!:B" B B" b:BàaàAàAàAÄaÄÁ ÆAÆ!$þÄ¡#Ä!ÆÆ!$Â$:B@BÆÄÄÁ ÆÄ.bòAÖAà!AàAàAÆ!ÆÄÄ$$bàA"Ö$"AÖÄÁ ÖA "AòaÄ!à!AòA"àaÄ!$ÄÁ Ä!ÆÆ¡#ÄaàAàAÆ$$Æ!Æd b@bòA"ÖAà1 bòAÆÆÆ!àaòAàAàA"àA "AòA¦I Bàa–aÄÁ ÆÖÁÇñÆñÆñÆñÆñÆñÆñÆþñÆñÆñÆñÆñÆñÆÁáa¦Iàa bÆ¡#BàA B" b bàav¡Æ¤#ÆñÆñÆñÆñÆñÆY;B@bàAàaÄÁ $$ÆÁ ÆÂD$ÄÖÄÄÄ!,`:B4!AàaàaàaÄÆÁ ÆÄÁ òa@B:Bò!AÄÁ ÆÆA bÄ!ÆÁ ÄaÄA BàaÄòA:â"ÆA bÄ$bàaÄa$ ÄaÆÁ Ä$ÆaÄ¡#ÄÆþA"ÖÁ $ $ÄÆÆAàaÄ!ÆÁ ÆA¦é"àAÄÁ!:Â!àAÖB BàA bàa$ÄÄÁ .B"àAàAÖ¡#ÆAàaÄÄ$¢#Ä¡#ÖAàA bÄÖAÖÁ Ä¡#ÄÄÄÆAàaÄÁ!ÄaàA B¦IÖA bàaàAàa@B:b$Öa@BÖaàa:B bÄÖÄaÄÄÖÄÆaàÁ! BàAàAàA"BàA:bÄa$ÂþÅÍ$ ÖÁ $"Äa BàAÖÄ¡#ÄYÇÄaàA B$ ÄÆA":b@‚1 BàA:B.Ä@áàA ‚1ÖḨˆŠ êa$ÄÁ ¤#Öa$ ÆÁ ÖAà‹ Œ@àAàAà1¦IàAÖašÆÁ ÆAàaÄ!$bÆAÆÁ ÆÆÄÁ Æ$Æ$ÖÖ$Ä¡#ÄÄa$ ÆAòAàaàA "ÄÁ òAàAà1 "ÄÁ! bÖÁ ÆAòaÄþDòa:Bàa@B bÆÁ $Ä$bÄÄ!ÆAÆAàAòaàA" bàAÆÁ ÖñÄaàA"òaÄaÆAB@BàAÖ!ÄaàaÄa:bÄÄaàa@$ÄÆ¡#ÆAàA"àa BàA"àa BàA"àa BàA"àa BàA"àa BàA"àa BàA"àa BàA"àa BàA"àa BàA"àa BàA"àa BàA"àa BàA"àa BàA"àaàþaÄÆAòaàaÄÆAò!AÄ!ÄÆAÖ$Ä¡#Äa:"AàáúAòAàAàA"àa BàA"àa BàA"àa BàA"àa BàA"àa BàA"àa Bà!AÄ$ÄÆ!Ä$ñÆÄÆA"òA@bàaàA@Â!B€H€ FaDaD4a¹5aDa4aDa¹GA–[FA4A»EaDa4aDaDaDA»GAFAFA4a¹EAFAFAFAFAFADaDAFAÀ5aþ4aDaDA–[FAÀGAFAFAÀ—[ÀGAFAFAÀµ[–[@AFAÀGAFAÀEa|DÁ½|DAFA–[4a¹Ea¹5a¹Ea¹5A4aDAFAÀ[4aDa@FÁÅ—[4a\|4A»]FAFA4a¹EAFAFAFAÀGAFAFA4aDaDA–[4aDaDA@aDa|DDa@AFAÀGA–[4aDAFA4aDa\–[FAÀÁ{4a\FA@AFAFAþÀ{|DAFAFAFAFA–[ÀGAFAFAFAÀ—[–[FA@AFAFAÀ—{ÊAAFAFA¦\4aDa4a¹¼5aDa\–[FAÀ5AFA4AFAÀGAÀ5aDA–[4aDA´[FAÀÁ[4a¹]|Da¹]|DaDAFA´]@AFAFAFAÀGAFAÀAá:B:bâáÎ!îÖ!àaØL"òAàaàA b BÆ¡#MbšÖ$ÄÆ$ÖaàAÆ$¢#$bþOà!ÆAòA" BàAàaàA":BÖAÆÄa B"@b:B bà1à!Làaàa:B¦iàaàaàA"àA"àaÖ¡#ÄÆaÆÄÁ Öaàa b¦‰1ŒQàaàaÖòÄÖA:BàA"àAàa BÆÁ ÄÍÖAàaòÆ¡#Äa@"A:Bà!ÆAàA:Â!¦AFAÀGA´[–[FAÀÝ[FAÀÝ[FAÀÝ[FAÀÝ[FAÀÝ[FAÀÝ[FAÀÝ[FAÀÝ[b”(Q£ Žþ5j ÁQ¢F \(jÔÀ…¢F \(jÔÀ…G‰ÒdPTAQš ŠÒ4p”¨QšFiJ”¦Q¢F‰Ò´PÓ(QšD5jàBQ£.5jàBQ£.5jàBQ£.XPTAM£Di¥IÔ¨š ŠÒ4J“AQ£j5J“AMEi¥i”¨Q!^¼ò† ¿/H¼0ñ V–óæ­œ·rÙÄY†ìMœ7qÞÄyçͲ8ÌÞÄ•-²eo⼉Ë&Λ8o¨Åy—Mœ·rÞÄe³ Yt6oµÅA—Ͳ7qÞDC¹¸7qåÄe{—Mt6ÌåDgçMœ·r–!‹ƒ\þ²8È¢½‰ËV.[ílÞ,{CíͲ7Ñﲉ†\œeÙˆãM9–ycY6¢y“7–e#Ž7âxc™7¢ycY6–y“7¢–eYæeÞXæeÙˆSdâxcY9âx#Ž7z#N6¢•“8ÙXæ8Þˆã8ÞˆjÞˆã8ÙX–7å@V›7âxcd¨y#Ž7µy#Ž7â@fY9–yƒZ9eãhÙÔ–eÙÔ™eÞX†jeåd#Ž7¨eó¡hÙŒ“8Ùx#Z6ÞˆÊ?ðˆO¥ëÀ#<ë¬#<ñlº)<ãÀ3N¥ð¬8ðˆ8ëÀc<ùX¶Ž8ðþˆS©eðl*<âTºŽ8•ZVé8ðXO>â˜*Ž©ðˆÏ8ëT:N¥ãˆã,<ã˜*Z¥â˜*<ùŒeÎŽÏ8ðŒ8ðˆ“m¥âä³<–Á3Ž8¦®Ï8ãTjY>âT*޳âÀ3Ž8¦Š“Ï8•Z–Ï8âÀ3Ž8ðˆ/<ãÀão¶âÀc<þV:<â˜*N¶¢Á#<ãÀ#<âø Ï8•гÎ8âÀ3Ž8ðä3N¥ãä#<–U:Ž8¦ŽÏ8â¬#Î2 ˆ– dådãMm¤‰“e¤‰“e¤‰“e¤‰“e¤‰“e¤‰“e¤‰“e¤‰“e¤‰“e¤‰“eþ¤‰“e¤‰“e¤‰“e˜•“ j˜•™eÞ –eÞˆãM9ÞˆæhÙ&Ž7–eã j¤‰“e¤‰“e¤‰“e¤‰“e¤‰“e¤•#N6–AVŽ7–ycY6¢Af™7å`VŽeÙXæ8˜‰™eÞ”ãM6Þˆ‚_9ŒÿB~ŸÃ ã¿`Å2åd“Í4ÞLãÍ4Óxÿ2Ù,“Í2Þ,“e,cÙXF9àg?ûecðËÆ2²±Œl,CËȆ7²!ÀedcÙX†8–‘idcÞÈÆ2à· o,CÙX†7–‘edcÙXF6¼± q,#ËÈÆ2à· ø-#ËÈÆþ2²± oØ/Óð†½±ŒrÀÏ~ÙXF½‘ û-CËÈÆ2²1 q,#ËÇ2²± q,#Óðüè øycâXF6–álPË€ß4àçiˆcÞÈÆ2²± o,ÃÙðF6¦áedcÞÈÆ4²± ø‰cÓÇ2²± q,#ËðF6–‘ex~ÓG—1lÐ˘†7–‘ o,#ËÈÆ2à· ø-#Ëðü¦ÑÀeÀÏËÈÆ2ıŒl,cÙXF6ı o,cÞ˜†7–¿edcÙXF6–‘eÀO€ÞXF6–‘eÀoðóü–áedcÙXüþ–¿ixcÞÇ2à· odcð[†7à·ŒlL#ËÈÆ2¦¿i4°ËÈÆ4²!ÀiˆcÓ‡§‘edcÙXF6–1rÀoÞXF6¦±Œl,c£ÓðF6–ál,#ÞXF68l,ÃËÈÆ2ıŒlx#âXF6–‘ q,~£ÈG¥ÆQ)ËdKð°Ì¦Ä‘ÑÀc㨔8౎J‰£RãXG¥ÄqÀCë0•8ÖaªuÀC•G¥,“q˜jð<ÄqTJð° äààèúr`…_dpâ¯ø2²1qdX|ã·x6:ò‹<ƒÙXF61òþ” 0*o¹ËUž—Ë|æ.ÏÍ7þ‹›ë¼âÈØùÍ‘Š~ÀC4• <ÄqÄ–Ç:œ5xˆ£R G¥Æ‘qÀcñZ<Äq¬Cð°L¥Æ‘­uTÊ_ðG>ÆQ)qÀC·©ò!ŽJåCù‡³ÄQ©qÀCðG>ü%Žu˜jùÇ8L5ŽJ‰ 8*•‰ÃTâ€Ç8ÄQ)ÑäCðØT¥ÆQ)ÁcâpVgMµxäCð‡³Æa*qäÃ2ðG¥Äa*ËäCðǦà!g‰âȇ¿à1Žl#[ã¨Ô8à!xˆ£RâX‡³òQ)qþ˜j⨔eœ5ŽJ­£R›Z(|ÿøË¿âÙ@ų!@dÀ"Ï2æßqÓàsȰsÿ9pp9pp ¸9°€9`»ð HXË`¨¸ ¿° ¸ ¸ H‚¸ ¿° ¸ %8ËÀ‚¸ /(ƒ3Hƒ3¸ 5ˆƒ¸ %¸ 9胸 (@¿ @¸ ¸ ¸ /¸ ¸ ?˜Ëð‚Ë@Ë Ë@Ë0Ëð‚Ë€ƒË@˃ ÐβÎ"¦²Î2ð0ð ð0ð°–±•"ã ð0•*âã1ð0ð ð ðà/ð0ðþ ù`ë ð ð ð°ãà,ããP)þããâ0•"ð0ð°âð ð ð þ’ã`*ã/þâðÐY•"ñ2•2•"ù ãââ`*ãââãþ²•"ãâ0ð þëP)–a*ãà,ãâëà,â0•2ð0â–ââ–ã–1ð Ù"ð°ã%ã`*âP)ãà,–â0ðà/•"Ó 5¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ þ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ P¸Ë`Ëð ËðƒË0ËPË0ËPË0ËPË0ËPË0ËðƒË •¸ ˆ(K°SvÙv9KppK`Œ A˜£ £  £  £ ¢°¢`¢P 0   ™ £ £ £  £ ™!  £  ¡™  £ £ ™¢P¢P P P˜…) £ ™ £  ¡™£ £ £ £ £ ™ Pš¹ P˜š¹ Pþ œ¢P P 0  `¢° `¢° 0 ¢P 0 šY P¢P¢0 ¢P¢P˜ P @˜ P¢P¢P P˜ P˜×i 0  0  œ ` 0  0  0 ¢P P 0  0 šY P 0  0  0  0  0 ¢œ¢P¢P P¢° P  £ £ … ! £ £ …)    £ ¡™   ¡™£ £ ¡™£ „ £ Á d d?Ù@È0 Ȱ Ó@qÖ`?Ë0 Ë0 Ë`?d Ùþ0 7 '@Ö @Ó° Ö @ÓAÖ€ Ë` Ó @Ö° Ó @ÓPqÓAÓAÓ° ÖAÖ`?Ë0 4 Ȱ ÖAÖ Ë€ ŽšAÓAÓAÓ @Ö@qÖ° È0qÖ€ „ 4 g?7 d d?Ë`?g öã¨Ó° ÖPqÖAÓ° öƒ Ë` d Ë0 4 Ë@Ë0 g Ó0q 4qÓ`qÖ @ö3qÈ`?Ë Á9  0  P P 0  P P 0  P P 0  P P 0  P P 0  P P 0  P P 0  P Pþ 0  P P 0  P P 0  P P 0  P P 0  P P 0   £ ¢`¢` °šY 0  °šY×9 šœ¢0  P 0   £  £   £   £   £   £ £ £ ¡™£ £   £  £p 0 š¹šY¢0   ! £ Á9sµk»·k»€»»Ë»½ë»¿ ¼Á+¼ÃK¼Åk¼Ç‹¼É«¼Ë˼Íë¼Ï ½Ñ+½  š9 ש Ù« £ê £ ™š ¢p¡™£0ºš© £  ç˾  š) š9 £; š9 ×9 š9 ×9 £; ¢ ™¢p¢0º¢p£p£ š9 ¢0º£p£0º¢p¢ ¢ ¢ ™ šÀ¾£ ™¢ ™£p¾š0 í ¢0ºš ç« š9 š) £ ¢0   š9 ¢ ™¢0º¢p£p¢ ™£ ¢ £ ¢p£ ¢ £ ™¢p1 š) š)  P£; ¢p¢ ™¢0º¢ £   £€Â  ½o Çq,ÇsLÇul»;libjibx-java-1.1.6a/docs/images/fix.gif0000644000175000017500000000026510350117116017552 0ustar moellermoellerGIF89a³-ƒ„„H/üƱ8)&#æè騦¨ûýûœrTö¶¦„:$TRTxwv˜˜–´¶·!ù,bÉ9 ½Ô^+â_'n¡¨YE1REãAÐeWÏáÜ®QŠ!{p¯ØãñKÐe×0`!…5 V©J…Å`ÕÍÀÔÐQ7­ ¿¦Ùëý‚ ÷)€ƒ„…;libjibx-java-1.1.6a/docs/images/h_logo_d.gif0000644000175000017500000000145610437636512020555 0ustar moellermoellerGIF89aº(¢ÿÿÿÿÿÌÌÌ™™™fff!ÿ ADOBE:IR1.0Þí!ù,º(ÿºÜþ0ÊI«½8ëÍ»ÿ`(vAižhª®ÁbŽp,Çíì*5Û|ï7»YkXÒýŽHYPi“Ð(gIk©Ò¬è«å°Ûp,úÅh19´N»“íOüMç­S:Ôd^ïÃîzx|~…r{zƒ†Œ=€'y‹”Uƒ‰’„•œ“š˜/ž£^, §^­­ ¬®¯ ¬²·»¬ µÂÂÅ·ÁÅ­² ´°Ë Á·ÁЭ¿Ñй¸½D©/áT¬°ç¯ æç´Ûêî½½ÙÈìç¾ì¶÷ÒöϳúÊ€õ¢æNA:󪽃æk ¸q‘ –#€pà<t‹w+ÿáÀ 2\™Ài  èMäÂw(†‹8sâƒk I¾ŒåK–G”Bj™R(½‚Ò¨$F«¢KÍ1™ŠfU›NsfmHTëQ Œ.Õ©ô¤Ò‚L“þ{ʵ!Xª§¬ÆÅÚçÅ8ÛnU ìÑ®xý¼TZ¯KsIå"ªxèšõ­Ô®?+ˆ=\Tpç³Ö¦…ôÈm—Q+™¬ªvˆ¤€×ÍšBMÆÐrKmÉünN–‘od¼ÑZDKú]^ÆŠ“K®z¢±ýFs†z²ÑÍý`ióÌlWvÛ燺yêÈÌ#»†Mô®Þ÷k·kö;öóßl?ªϵüqáâèÄVØdÔJ¶Å÷Õ|fw“Ú?>˜˜;þ¡&‘€OÜ{L±Å@^øA°™ƒ”1³L‰VEüYæ\,ÈU£ddÕvEßt&_ƒ.#qѸ‚KâHà;Ðu‡‹œ8A†$žV˜_í°•àbJªÀ¤˜Nz¨àJÞÑ•:–]mM©¥p‚¹â%g™²!Dž™#…Þ¸ÂSì–[ ¯¬9ç„YˆäHȰ‰“’bi¥`ji'šZÐ馔|J¨ Bª(¥¦ê€€¬6¦ê«°Æ*E;libjibx-java-1.1.6a/docs/images/hdr_tcy_logo_hrz.gif0000644000175000017500000000641310437636512022340 0ustar moellermoellerGIF89a½:÷üüý4Q}íðó¶X)âçíðòõˆL8:VÙÞæÝâéq†¤ÿm6iVu‰§A\…«Áb™¼Úa“®ÍÔßÉÒܬU,ùúü’¡¹"K{^”¹'2W÷øúJ|¥ArœkEAP„«Mf -b²¾ÍZr–òôö=YƒvG=ÒØâC:N•¤»Úàè…–°½ÆÔäèî*IwÏÕàfÀ¹ÄÓùùú*Uƒ~‘¬­¸ÊN¨YŽ´d›¾[µ—¥¼ÕÛäFa‰Ä[$ãcŠ›´z©$Cr-Kx.\m‚¢eœ¿%\!@q©µÈ𩾧³ÆŒœµÏÖà(^1N{ˆ™³46S¾ÈÕj£Å”¢ºùúûPhŽ*`ÀÉ×3fVn“üjŽž·¶ÀÐÖÜäi~Ÿèìñ:i”Vа_v˜I:l0Z!Z4aŽEwêìñÁÊØ7jÑ_!ðg8k.Zˆóh_v™ÅÍÚ£±Äf{œTm’Hb‰ÿlßäê|Ž«Ul‘6dÌÓÝa˜»Jd‹¸ÃÒÏ^!Œ¶%]ûkûicš¾îf%DsRk˜¨¾åêïåéî\r–ÛáèAsGx¡ ?pw‹¨¯ºÌ:nëe(Fu9lNhŽ9lQ2'Rk€¡g}žéÿÀeW;ÍF9‡ô’‚˜S¬Xå@2éÐ&‚²ÀD‘Ë[RÇAžxàtÅ2LúýÉÞ–,ðÃ[ärÈu0Å:–¶GÄlÑ‹÷ä2 ãXÿ0@7a2”Al–êÝ ¸ÑK.ÀÛˇBì yRé‹&ð×> ¸h§ÁR‚h/”ÉJ=ìÑÛ¾°ÃN&H@ óP›K–òC. ø’!p€FoÆÔ² NB˜  3ˆ¬DDs@Ò©©Ôå,šÐŽÐóPTÔ½©P 8]RK-$<µ$€“‡¸á È6ÄF µLó1µÜB²k&£Œ5_PÉ´Dćðõ!qÔ +²r-Ô<ô AÛSòÉ9™aFA ײBK2G?›ÊAPƒi¬Ì̸ 1ÿ BÈÇ<‘…·íAx~<ð/A‰“ Eùq¸A{ðM!4cH+ÐŽ ®p"Ì 109®œ@>ƒ$yB{ø1 ¥°E9EQÎútc,ÿÔ’ 4µ”`,./„À ¬|Á UL PÉÇY¨ G-¸ü„?ÈoÍC ½FPt^@5 >[ÇáO)K“]Ðl]K$H\°5wB ‚ `½,0€3G-tQ… álM(ú ‚…0" dPÇŠ@„Ìa9ËÂ|0‰fa!…ü§. H`H`†ZˆƒMhBÿ®ŠZ¸Ã#X™Ú @ 3°   ˆ•ua ¾¨ Ò 8Ôb 9…7¡„ ,Áµxäâ9‚LceX`P°2  Œ°âT°‰•…b B¨B-"á2)À PDAÓ•˜m± ô 5ÌЃ°Á C<È,¡1Ô! ±üW dpÀ‡%P‡C¸4ü¤¨…9fX+Ø. &XY0¸g†„Õ`eªlÀ*jñ¥„µÈÃ-K¼$ ÂfpÆP‹&¤Q‚ÈÚ ‰^Š€ +KAdP 9< ½D…(VfáµBó²°ƒ˜YN ÊÐ….9ÿL°f€:H° Ñ$ Ucˆ Îd¬lB(¡C̶[äð•±\YöÐ>.::+.."ÃÑ~~^vvXrrUnnRjjOffLbbI^^FZZCVV@RR=FF4BB1??/77)33&//#++ ##ˢÊÊ—ÇÇ•ÆÆ”Ãґ··‰¶¶ˆ³³†²²…¯¯ƒ®®‚««€ªª§§}¦¦|££z¢¢yžžv››tššs——q––p’’mk‹‹hŠŠg‡‡e††dƒƒb_{{\wwYssVooSkkPggMccJ__GWWASS>OO;KK8GG5CC2ÌÌ™ÊʘÈÈ–ÆÆ•ÅÅ”ÄÄ“ÁÁ‘¼¼ººŒ¹¹‹¸¸Š¶¶‰µµˆ´´‡²²†±±…°°„®®ƒ­­‚¬¬ªª€©©¨¨~¦¦}¥¥|¤¤{¢¢z¡¡y  xžžwœœuššt™™s˜˜r••p’’n‘‘mlŽŽkjŠŠh‰‰gˆˆf††e„„c‚‚ba}}^yy[uuXttWqqUmmRllQiiOddKaaI``H]]F\\EYYCUU@TT?QQ=MM:LL9II7HH6DD3AA1@@0<<-88*00$,,!$$  zz\vvYrrVnnSjjPffM^^GZZDVVARR>NN;FF5BB2==.99+55(11%--"))%%!!>>/::,22&..#** &&""   ÿÿÿ!ùÔ,a)ÿ³H° Áƒ*\Ȱ¡Ã‡#JœH1bŸ)65™Q±£ÇOLQµ@²&Sªl(FY¤A…<0MÎÊ›8fJŽ"‚‘³hJ@ÔÉÔ¤S¼ZJÑ‘„#1›z¨ ÌÕ¯¿Ppdä•V),]ËÒ %N´zð% Û»Ë8ˆäJî'%ð &˜¨–X">aÀÁGP²âLZ[†à$²à¶|uBDì€Þ4üÄÚ#ëOk·xñ²e fÍðÌð`€+_»n=UÆ«_¼Xp,–º<•9 @o8Á‰W^4ÍfÖËÿP ›_Ó$Xòûví7“€·þŒ°O¿r‘:^™´X¹G‘€*é@€uÌ€oäàÆ=ñ .XwB |*Q€4³ä±†pì°C(ÂÃx,b‹LR[v°u¤¡G/˜À-6¬Áƒwüà<œ‡;à°†Å`Â4fAD,Ÿl¢ …•ŸÄB– çkQHÉ¥#ADt©áC!‹´É$•TòÁ‚Ø"räÇ £Æj¬!òk±€™…¡‡²6B a¶6f—\ªDPDc HôÄ:˜q†€ÍÚ­ u1mè`GCì Çàƒï H#qüŠ×8pç~R/B"B2A&{ÌÄAâL ‚'ŽN:áJÌAÅ2\´^pu ÊnQè;yÂÒ+н¯±« XÜ2‡ÞæA("rp)¸:ÜÁ*P í:°á[¥"„Â¥öµCT±l0ôâ{¨Ú„üb¿Ä!€?ÈK°Å43çÄ=ú{›ÇD…¾æRƒÀ96p«sE°ž‘lb˜ 2œq0AVŽƒO ªÁ¥X(Âz׳›™Xƒ&Š|AÈ…x0"³á`|H­0 Kl@UøE£Ä›ü ü0>5Ü@ h8CÈ 4è!Ðév0¨BÖ)Å-dñ V¬bMx-Dá Ô2ẻì‹FŠç’‚W ÉG£Ì °¸Å ž¡4CTàƒg4Öɯp!_ø¤µJV~ânµÌ¥.wÙ€;libjibx-java-1.1.6a/docs/images/icon_alert.gif0000644000175000017500000000214010350117116021075 0ustar moellermoellerGIF89ajgÄÿÿÿýþÿÿ((ÿ;;ÿQQÿ__ÿ~~ÿ““ÿ––ÿžžÿ³³þÎÍÿååÿòòÿøøÿÿÿ!ù,jgÿ` Ždižhª®lë¾p,Ïtmßx®ï|ïÿÀ pH,#AÃ0h ¤¶pZ‡©VÕ \­ˆ­¸tøZ ãt€iv2Ôâ¶õ ×ÊÝ‚úôÞdäõH^wt€Glr…H‡mŠHewŽFw‰’@ Œ_ ˜™6 ¢ ŸW¡¢ ³ ¨1 ´²²m½²­¥¸+ ¿fÁË ­ ÆÇ%º¼Ð¢Í_ÏÛ¬Ô×# Úà¢wç §™º­ë²éò½â™ ñò¥‚f Í­[`­P¹z n ðÊIAœ¬Ã@µ‰kä˜P¢ì\«[ £ænD7'hPÿ$[§dšŠçÚ¥¨äl…ªs-ÓçMo,táĈäHY2WT1“¥ÅNhI§t„Jôƒ6a\$Û7 A”)0¡¾¸j&«Ö©# iî«Ö6n]ݦ ä´½âºh£Vî®H„eg—ßO…õr4ÁbÌvJ·Èà^}_4´WVfG ÒØ\cî2Cv-CðøÅI7.Ëj½£ó( €ÞÄÁ6Ú.~:{[Õ²osþ’ ÇÑÏ9þ.ƒ>ö‹Y +ïñ@{‚ãÕ¯ ÆÁÚòìr|¡ã(ð¶Ù¿Xÿ'¶vù3lOŽñå=ŒÚé•4ãáð‰ø¶Œÿ€7< Vî@`èå¥#)é 0Bƒ_pV§¡y<$÷a ‰4þÅ\‹ :ÑT¼X"‹:ÕDs;d· Œcáˆ7þ¸CBÞP£ Ò ”‘=zˆ 4Ò醽€‡˜”¸`)K‡ sw¾S¦„$fRa`=Øf%úHsb &úà£0sÎäÍ›)¸iç™3œÔûÉeœ .£¥Rw¨8ƒl^á¥(y–Ù œyX_‘#ÕÀÇʨb@ŒÚ Ÿ#|z] E„m¡Â * ¦z&€\ÆàÏaù¸(G)𫠹ɑa kÚšÚ6MªàÀ¥ÿÌ`ÚHÃâ`[Ý•ð,(Í*µM¶4$;[~xQÀ l:V°Õ"ç]N2,tƒ¸¢ ZƒÓŽdï¼G!î¼àÀ»V¿Q!‘œ(/ûî¾+‚óï ¬ò[׊"ÚyQª®×ÒÃJç<ìCÇã‘w˜Br-…r¡ ÊÊrð‚¶´à€*ÛÃ0‰ñS @@$q=^µ¬FÄõCåÒ0{Ø®NIGSO­šÔX_4Ž 匵,÷lBD_Cµ³$º µ -¶J›¢6Û?7€ÉÆo¿€76{çí÷߀.øà„^G;libjibx-java-1.1.6a/docs/images/logo_sapient.gif0000644000175000017500000000201710437636512021460 0ustar moellermoellerGIF89a–-ÕîF(fff¿¿¿333ÌÌÌð]C÷£”€€€ÿÌÌ@@@¯¯¯ókùº¯ßßß PPPüÝ×™™™òt]fffôŒyñiPïR5ø®¡ýéåppp™™™úżõ—†ó€kÿÿÿ!ù",–-ÿ@‘pH,ȤrÉl:ŸÐ¨tJ­Z¯Ø¬vËíz¿à°xL.›Ïè´zÍn»ßp7eAÛÛM`¿ßÜÿgz||€†bƒƒ ‡Œ^‰|‹’Y{‘“˜T•—™žN ›…Ÿ¤L• ¥ªHttL \«ORËÌËZ Ë ]Âv‚‰QÍÞÑÓZÔBÀ´l¡•M Î B ¹ÐY Z ã"4 À M»Gï– `fmH„††þK× BAv›*Yàâ’BÀ'$¤ h8 d¿!)ÑR&‡!祰L€:ÿ‚ÓL¤1 GëðÁ:fÒš ÐoN…H$aß¼”“J¯:tm*$,³y©qXÛŒ-‰a ˆ;ÖMˆJ¢Dõ:A&‘ 4†·_3~ºê+‚'Å"ÃË AƒÁ‹-ûìûæ‚Ó@èñó„ÃÕ°’H*â55f`2£:±+Ëeá$†b›7ºF28`¡¹…£’X ëÑH‡qÌú23—cu¾%æB™ò¤•4ÐNò+Óe/+Lxýx/|"Ùã6p› ÖÍþIRVkïåfYX·-CÛ{Ä…—[ X^€ øÄuuÓÓ> D•ÿ XøÁ×p–˜æý7QŠºÃJPBˆ†áx1bwßÛÅepI°8áD˜XH„k ôBGÈ·ÌTBÇÌC(³Œqà-c¤é#€€ BÇŒ.t@RR9@æØ¸Laå]VP€e½l9‘† tàÀz@PÉ€ÒD—7 @3òE¥kny©§\t‘vzdàœJ‡vÙÐRÍèâfœ©":¸Œ¬J„y¤Þø<°iµ„PÁ…`g?¿c"DÐ@}% Á.F„´×°–²¡Ü#©±Û0Y ¥Èã’{,…¹ ;¥ºë†iFºðRÁ®%kpX¯÷r²ï*Øÿ«ÿRJÿãÌÿ‚'ÿ…eÿÇÿݱÿB/ÿ„'ÿƒVÿ>/ÿÁÿòåÿ¼ÿD.ÿÓ<ÿïÌÿŠ&ÿŒdÿ’dÿæ–ÿä±ÿ%ÿûòÿueÿŒ6ÿÆ+ÿ¤ ÿ…'ÿ§bÿµÿöòÿ@/ÿ8/ÿ¾™ÿ’$ÿ‹&ÿ¯aÿ¤Sÿ¯oÿ¬ÿ¥ÿœpÿ¯ÿõåÿ˜#ÿîØÿá–ÿˆ€ÿÛÙÿÞÌÿËÀÿÓ^ÿFÿdzÿ¼`ÿ»™ÿ­~ÿ¬1ÿøòÿŸ!ÿôòÿœ4ÿ™#ÿ“$ÿ·³ÿ"ÿ×—ÿ×]ÿe:ÿßÌÿ²}ÿ—cÿ“UÿêÌÿáÙÿßÙÿxrÿÜ—ÿ2/ÿsHÿòòÿèæÿç£ÿÃÀÍÿËmÿ¿‹ÿµ/ÿÍ ÀÀÀ===€€€ïïïÐÐÐ___   +++àààÙ%æy§ò¾pppNNN±±±¿õÎÐëûïàSpìœÿj+ÕøßÖÿ],Jé‹Óÿc,ãgÜ>ÿN.ÿa,ÿd,ÿm+ÿ[-ÿq*ÿg+ÿT-ÿV-ÿr*ÿ`,ÿZ-ï­ÿs*ÿW-ÿl+ÿf+ÿU-ÿS-ÿv)ÿÐ(ÿt*ÿi+ÿy)ÿM.ÿw)ÿÙ]ÿx)ÿòËÿu*ÿz)ÿ\-ÿb,ÿ½ÿ·ÿh+ÿàzÿX-ÿÆÿÀÿÉÿ¹ÿÄÿÊÿÃÿºÿ¸ÿõØÿ¾ÿe,ÿÅÿ¿ÿk+ÿ5/ÿì±ÿÖMÿé£ÿøåÿÜkÿãˆÿÎ¥ÿÌ)ÿh:ÿ’FÿËŠÿœÿžTÿÑÍÿ7ÿÎNÿÎÍÿŽUÿU;ÿÓ²ÿ׿ÿ|HÿjXÿŽÿ›ÿ¡pÿ•5ÿÀ?ÿWJÿÚ¿ÿhfÿ²™ÿÂ|ÿܤÿÌ{ÿ cÿ”ÿZXÿ£šÿ€8ÿÙÍÿ´‹ÿ…Gÿ´A,ú2ÿH° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱãC?12ˆÑ ‚ƒä±¥Kƒ2uŠ”§fžImعåËŸñÜy@¡¡ å9(GEŠ2ªâtɦիy8Ýé´ëBC[¹ @£°^1ZºJÉ¡%J3±Ê•»ÑÙ´x †ÝIè,Ú½eóNœ ÁEŠªÎ]ÌxãÞ?‚óîÝùgïØ°#Gd̹3çDŽ1kN;ùPå¿¢G?œä¹µÕH2hµ­ÆÇª»Niwn‡‰\ÏM¤hC«ZSÿ~é'lÒÓ[/oͼ¼!%Ï—8—¸yèéÕêÿä™úPéC©‡oÈ «FEÞo+_ßÕDÈP> "cXŽ$ÈR“mµ"z‡DáøQFБBäG)Q žRÉ3a¤‰UQ]_BAX’an”!R&OPª‹af–âšÑmUÖ‘dRG'›òGNíc%(¼AP‰^ڴОdÆèP…' ÄäždRÊHtxúvéd}òFwDs  $4J%„²’¥@ÁÙÿ”I¢5)ôhO™®Y)A@2:ä­½»Asçuš°ˆz¡Å§&7­Új‡~)Q&6]’±Œ–%ìNˆ tȸ+Ž»• À.WÆ‚—k˜å í˜@ÖÀJì ÄšM¶1´UsÍŠà­•ª‹¤Y#Òë¸ŽÜø(";¬¼€Ìxé®]£ º\“ø2 Ã9 ˪›`òïÙ*jbÂÙj?¢5¯®?Ó´Ðþ1^±§7PǸ[_[I,;ÔŒ,}d­uÖ¤A pðÀ Ü3&¦ [ÅI¬Â!º°Ï¹¹“OeªDoCòÿ|i!—ŽùH˜}[$™Ä«ôA êµóÔ3è2P6[W®u2>TMamA,ÐsÚ¬PsÜW7˜{Á¨ó^ ttÄ.¨{%eМt 48¨ïÞ§x~¿ TåÌo 2μSb“ ºèh«½BÁ'\"²IT&!h 4ÈÅ'}B·£BP¿/Pûad<’Ã+)ÐÄBDyóÌ{ž3˜A€3DiAöJw€Ó]6»ï‚dˆ %Ï °ËØ"•‹mCò›ÛV8˜«!Ý/qêÓ߸²ZN€” €Whïuˆ$à–•‰¨B‹bTQÿ.È¢°ðæÀ„&€a 8È0aCÆ¡ Ú:bxh“H$‘N‘š‘yrÄõ½.=ïbÖA|s¸ô¡¥Š€˜Ô­*2­C¿cÏHô` FhÇ *á‹^´q˜FA¶T“íd“ ¥gò(ÍÇq[é£Xþˆ#1±R4ü#—“,SÅ\â›*äD„áHHƒŒfC%=·‹£“Ÿ eA:º¹4ä~¹K’ ÍgDûÜr:ïr]BèǦÝe—‡Láœx7^aq!Ù ÈÖù‹cNR™Õ³@3ŸéÿÉŠr 4©fê"?ÜÉ ƒÝ áAfÇ@˜s–Q¤™ì¶)’S)ôùΠK….„}˜.*GÏc’ ™Ë¬/fáLhzB ü' :Zâ!@Šì6Z¿`¡±´8¹—ALlLD¥]í.Š4÷Ý癊1-—c~€?CŽ 6•Î"¤ø„(^ñRP–@‡Ÿ)ŽBhZNdbRCg,jŤE–;iŠAxªÔ¡l¨£<‘ØdÊ7E^¦0ª@õ(C¬AÕÄ@WÍêV»ºR°Šµe=€B͚ǔ Y‹UX?BшtÝ&™ðz<ƒär¢šŒ^ë‰ÿî„„¡âa'ƒ[nö"ŒÕZ  ‚3¸¡ kðªeEY˜6p#t‘kX8HNá´ˆAÓ§´¦?ð) MÏÆKÞuêÖ©;áR=¨X ¡²aenYË`nåÁŽ›qíÔ¥Í=E+è"õ‡óöu' #ôÚ‡9¥ «h…+.ûR"d`6{HtK»'ȼr °»¢AÇÅŸ2ªÀ†Eo…øÛ+DبH,l!€*+ÞzˆhmBÚ …×åð‹)Ãn»1ðyöâ3Ê+ýxqŒg¬ŽƒlØ!l½ BØK§“XHȲˆÕuv–Éh–¡ëŠí€—éï'ØÔP )ËØ¹òF~×eH}Æîš†ê°<Š9,0ªn¸Œ«6—‰…kI€PZœBÂ1Æ3Bj“Õy„Ñ[j’BW‹únMåâ0þÂDèE2Q ß3O,jâ­œdb^1‚¥¥ñŒ\a!ªŒ KaŸ@:Ì|JœDm»Zo©ªH#zeˆÞV•‰tŠ5‹A[ ñ;Ć‚iý˜;7P=·º×ÍnA#±ÝðŽ·ºÓ-ïzÛ[0ô¾·¾÷í’|óûß·ˆ¿Nð‚s(q5¸Â¾F›áøo#Nq†Ó¯âÏ¸Æ ;libjibx-java-1.1.6a/docs/images/nw_min.gif0000644000175000017500000000006310350117116020247 0ustar moellermoellerGIF89a‘ÿÿÿÿÿÿ!ù,Œ-!R;libjibx-java-1.1.6a/docs/images/remove.gif0000644000175000017500000000034310350117116020256 0ustar moellermoellerGIF89a³!á•”ÎÌÊHJGùúø¹=9121áÜÛ½NJºgduqÁº¹MÝuséVQŒLH!ù,ÈI«½øûÙÝeY(jh‡ ,BÇ«µ.x« D]Ý/Y¬å£Ü0`hس @N£ð0-P‰pV2¢¦GA\¤ÞŒ@Áá`ØPC‚Àh &<)<] X%‚ ng~ v? \ˆ  c 8 W T¡M¢²³;libjibx-java-1.1.6a/docs/images/simple-binding.gif0000644000175000017500000007150410071716566021707 0ustar moellermoellerGIF89aÓç222‚ŠF¦Fv¾v–Ζþ®Ú®22þ2š2ÆæÆ^^þ^®^ŠŠþ:ž:‚"""ÖîÖj¶jB¢B^^^¦¦þŠÆŠNNN†æöærºrF¢F¾¾þjjj¢Ò¢’Ê’þŠŠŠvºvÎÎþºÞºvvv¦Ò¦–Ê–ššš>>þFFF¦¦¦ªÖªöööÚÚþzzþÂ⪪ªöúö®Ö®ÎæÎ¾¾¾FFþ®®®666ÖêÖÞîÞzzzÆâÆ&&þ’’þÎÎÎâòâ***ÂÂÂffþÚÚÚ¶¶¶ææþ:::VVVŽŽŽŽúþúRRþªªþ††† þæòæžžþÊâʶ¶þæææÖÖÖÆÆÆBBBjjþîîþ¢¢¢&’&rrrbbb–––‚‚‚îîîÂÂþþRªRnnþêòê‚‚þÚêÚÞÞþÒÒþÞÞÞ>>>ººº...&&&VVþ::þÒÒÒ**þ þÊÊʂ‚²²þJJJ²²²RRRššþÊÊþZZZêöêrrþžžžfffîöînnn’’’~~~JJþööþòúòþþþúúúÖÖþêêþ*–*òòþb²b..þVªVââþ"’"BBþ¢¢þººþ––þ®®þÆÆþþ""þ66þvvþþþÎêÎŽŽþúúþ††þV®V~~þZZþNNþâââbbþN¦N6š6~¾~.š.²Ú²>¢>†ŠšÎš.–.f²f>ž>Šn¶nZ®Z¾Þ¾Ž¶Ú¶†Â†6ž6òòòêêêžÎžŽŽÆŽNªN^²^†Æ†¾â¾žÒž&–&’¶Þ¶ŽÊŽf¶f~Â~ÚîÚÊæÊz¾zÞòÞnºnJ¦J¦Ö¦ÒæÒòöòÒêÒ † ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!þCreated with The GIMP!ù ÿ,Óþ! H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cÊœI³¦Í›8sêÜɳ§ÏŸ@ƒ J´¨Ñ£H“*]Ê´©Ó§P£JJµªÕ«X³jÝ ñ˜2.‹µ8׳hÓª]kp ·tþHèÄCŽ@ª‹‘ÅÛ9K½b8¢"8èøIøŠŽ;TŒ¤˜­å˘3ËŒ°ãĉ ‚æƒ4fÆC9ÌŽi‘Nçx¬pG…b"’°Ì ½˜¼[³ñãÈ“gŒàC`±EmÌ{á<Ò‹é¯C’vïÖ¿þO¾^¦iƒtÀ4¦ƒ ܯ¿ˆäœ£2Ô‹Ñ·n}þ@ø/ BF1¸é7žxàɧ܂ 6¸VvAb DŒ¦DàõmqÞ *4¤Iâ…‡ TÄR¥GÐ b,VÌs0ÈGÌ0âˆ`¼k' ‚Hm(¡×à°×ø€`ñAÌqˆ@pFmD0}¦©æšN‰A!„° Æ!ô] jx1;Їƒ ´Ð‚ÝÅAH†ü¡'¼€ÅJ¬ÖB4¢§Þ@ÆÐÁ$*l±H ŒˆQV RÒ‚Fb  ŠxÁˆ þê…)$ZH±„ azñ bDÑ‚H¦‡¢ƒ±©ì²Ìú[ıCz¸¡x'YÄÔ…ÁB²¨™e-jÙB²·*ÐÁ›@RTZ¥÷ dàPaD  Ãyw$$`èëÝq@¥”ÁEß•w˜Iq(I˜H¤¶Íf¬ñÆ/A蜘fg¸yÁ-$D(‚&^zŠ(p&shBBƒ»ñF'ãmаo¿©B2ó@,«@Â-ì…¬ IÒ0+­ÜÁñÖ\wý‘Ç“!‚ȉ’ ‰ÉÔñ<Éãšx6·'Qs»5êLk*@þYdqÄßC;÷oÀRðÁC’*ÔZ DõÒ±×”Wn¹CÌ ô!J@2²Ûh“ Ë'J:$-P t˜•ÛÍ5^ IБŠD Ró@ü:m´ÀSwù +ΰ ’IÈ¡3~ùóÐCátw¼ºÙ׺:‚´P̈˜Ø¶öÜâ Æ ÆÜÆŒ5*ò‚1HĶ©nƒxaL1wD!eïþ"IÒ‡‹’@Äc\çJÆøÃôP&tàK“\¹¢GÁ nL C¢AF@Ï‘:XÀ@Ú †8ÊtÝAê Á=t ”ªÑ±&À ŠĈÊ4«¦Kþ'çªv5F ‚€Ú—ô#$‰ˆqž§HÅ5é ^hŽ€&9< - ÎÄX#,è`Z8‚÷îôÅ5ŽÑ98hŽÐ,Ä^È"¸H2àÀU‹(ufP®H´`0BXLg%–ÑÌ L°_ \x`ñN °°7Vñ“  å@ô`/9Œi‚.Ù(WÉÊV¢gD4ØBÅ\IËZÚ’%8ƒß2yË^úò—À ¦0‡IÌbó˜ÈL¦2—ÉÌf:“)ZÀ@ω1L!Å p°P~=ó›àÄ ˆÐGNf [XH$N=¬§›Qe8çIÏ£DBŠþжPð& 38Ä¢¨ƒ;ÈAƒ)fð¨AÂ3P”Ê€$ÜÁ8À ü ƒŽBg=GJÒœ¼â@_1­Aa ÂÎ9¡TÅø€ ú Sw"¢RƒÁv …ÐA 3xEæ#˜rQHVI§JÕ˜DÂX[n@?´€UŽj¨‹P,Ä!rè€"Œ1‡–átj$–¤É¡4ƒÁ„HcJeUKØ”L蜄ÄÊ™…Èu}$ó‡>è@_:D;ÁD¡B 1 ƒ,ì€QƒÖÃA,Áœ…þ­l;‚/Ì¡s @9õp>ÅA’¥¬e…ó‚õ­kœž­hI[\:ôƒwúÃTÛÙZ÷ºy…â Ï b‚¸ƒaÂOµ5 Y°©æÐ>`ðz‡`D"¥ š 䵄|!`¨.vLà‡DB pð>$D¢#ˆ‚„á…,B#ä Føa«C†£0‚ˆ¸ÖpgÉ@%èA b,°Œgüĸ!"UȤp‚1Ц±‡Œ’WDa „ ƒT‰Ìä&—¤ ¼t²”§ì‘Bã5q‚7¼Qkô &<¸A nÀƒ†8Ah.þGªaxãyD5†à— Áà5êLå>M€3M†xƒÔ¨É2b!mX¢!j°Ä/zŽ€<À4è‚pIdáið"~¦j!nˆ8ÁÕ5H eH8á®~Di}ëXCâ?˜l­ë[óùÖ´®uAxMë87ÛØXöõ¯uB[‚ ¼³±ÜìYó9Ù1.œA^ûÕ¶·‰­koG± &HYS»?bo>³Ûß´–vA®a‹øb8F/va4`ÚÓþv³!Q ^d£Üǵ«ð{ózÖ ×þöÀBTCÍ©®§5Ð0_l`טÅ5‚e`âÚÆ/¨ALì¡ØE2œ«XE5 ŸOÀD"zŽ LøÂ NèyÐ8A ÀDjaƒ_ ÃÎhžAöY ¼ NÁ1‘ @¢{øEÕC0_8˜†lö_4.ÀÄ78pm@¾ÀÄ4€ñ¨["˨E jas_ áUÆ4 H È… R KT¨Î÷1b›ã¼Î¯únŒªûbé‘Á0 ‚h€_Xú.P]À ×ÀÄœà½7à7°2tþq¨'"ú @¼÷0dL 5¨áçM…\Tý–°„ FNaH#¾@ƒ×SNll€û= ðÀ Ïp»°?@ lÐ ¸ÐÚ¹ À»p »@(° `'½Ð € Áð •w$ ²° 0j€  º À _Ð Ï ÃMp ðJø¾èkݰ _`ÖЮ÷P €@ ±  ˆ÷ À$° …  ` .@ š  Á@ à½p . –`×€ Á° Ä ék‡u( þÓð ð_–oû $0 ÖÀ߀j¾ Ð .Ð×Ð ¼ µ°„ð eFˆc¦ ± N‰  ² µ` _° 2€€€M  0 ° šÓ€ Ç  @  @΀ ð M0&@ð– €n‘k=@º0oÇË º  & Ç@ ) . TpÇ  u ±P&Ð$0M€g   u†°¿ðÃÝ ”à ÙðpÇ Â šàw&p Ì@ º0 @  h !  ² ÞP .Y ÓWþÍp‡a6°” ݰ…l  š@à ! )H{ß † € ×ÀOG»p¿ à ² r2Ð  ÀPf Ñ Ê€ ôA)€jV ³ 7à É  €j$ð ±Ûh½ðA8=ð’µ ÝP? G»ð@É ”ð³ Bé ºðhhù¿à<€ Êà ¼0 h Ë ˜ Ò ”  = ½@ ‘`ÀgÑ ² äÈL@ç‰Xv p  Äà ±@ ˜i ¿Ð ¶x   =ðÚ  êøé ‘0 ½ 2€ ±ð €jþQ‘Ö Ð@=pŽ$@ ”€ ² ¶ %IÉu$ 6@òY) p @oá _Њ[耀 »wŸE‰x½@n(Ð ¾À{° Î0 à ð JC M m‘ hŽøk˜à›õˆjÕ°_€ ²P‰ Ä0”“ò)Ÿ0Á9¨lвP=`‘ꇌÁ †< »  ðWÇÁÀ€{°)ð CÀпÐ$ ¦In Ñ {  †›Í ±  . ` Ð7`¥¨ ±` Y  & ½05p‚´èŠþ` ЇÝP ”  ?‡) &ðÁà ¹ •À _` º¼ hÀw€=fP {°Ã0 ( £8š&€ Þð$@i/h™öŽÉ¨ Ȱ Þ`?°p —Îð{€ ǰ ³@ =ÀÖ@t9 NØ5°ßp£ze\*! M€ Ü@¡K7 Ã0× 2€»ÐÀ ×` §zª!0låF°=0‡· Á`¾ o7€ 7pš  ‰P ² Þ0 nŸP k Î ÎÞUôi€k`Ë“°é’`—ðÀ ?}< MýÔ•P AÐÙ"0 wîW` 1p¨p°À»Þ¨P™ê’€9p ›`¨0×%@àu0 °¿†æqÏOf`•Ôu0­­ Sð|P ðgà nàœ0 Pp +àþƬíò™À|p ÐAðâ9 pS "Ð xð +`n¦`é áfPà°ÔIÝ…] F o s¾Íª}Ío0çoÐÐ@ ¿kpn а@ÊÓÝ ¦Ê¼¦ª|` i¤p©ð¬` ªàn—ðg´Í âüO®ó P¥ ê­pÛ aÖŸvÀZíì” ök­Ò¥ð ªPwo›p Þ.ÿ-ä k` %S`£pßQ`Ì¢Óžà Ž#]ððž`ÀnIoþðüPOñáF@ýà ¡°×R}Ð"€­°Ñ#]A 5^ãœ` @‘ ü". U0 |0 œ "`r !×Q ÒÀ™<”ÉN);vDØ©‰ÏN>‰àÉS©nÞ|,‘‰àHH’¦¬)ÉÊ—6u©4IÒ — ÁXEÄ•I.bGT§Nu6‰: ‰C¤Ö¤Is P IôÀÁT%FùtUìX²eÍžE›VíZ¶mݾ…Wî\ºu튤ꬭވȑãʤ'¡ x:§ –bUÉ©—ðXàÃ'XÆŽÏþòPŠA§xÜ$@µâÊ@9ò`þd¦’ƒMµsŠHÒ‘‘)#w÷è Ï•>q2"âI%7£rLC:Œ.PlÅcT©Vrˆ‚ §Qìp’Jæ7hq82Ó(„™6‰ÀÌT*‰xBÁ“Tb¸.†Ú6É¥«TR°¤•º¤‘Ü&Xò0„?N¦€¢§K$Ù0ÀKFé„‹¤`1ÂVTIÃbÈìŠ.ĪÄ.ꢊé„¿»~2H!‡$²H#DR¬®ZÁà Hºp¥”’Èd…Pªp庅•ª(¡’R %Ê`4@K• È$9þÀBå<‚X'Pe X:©•.2)¡„@‘ä*G@q%@pÊÄŒHùˆ‚h´¤Q<é$Â.’È!@Hqƒ¤T8À‚LΨ£Š@%”PÜ€ò:å“:B‰¡Oª8Ë‘@ž(eÒÞàMa .:$ˆI@a5ˆÌ0e”BI †DMõªL ˜Âˆf]#-ˆM̘±“>¹Â.¤“YQñÄ sEUD9VIq Uê¸h…Oø@¥½«ÌÀÃ1H‰áT’H2d‘G&¹d“O.2•Nú⣎Œ ¢‘Ÿx¢„:h~ÂIhc@•'‚þH…•MìhGÓxb*n–`AºŽVø`¥ÒH…“FVØ$†ÜÊJˆ'nv’*ƾ¹©›ëˆ¡'RrX¡‹¯hd“4¾(Cžˆš›^Rbe% 3bxÈ*!e“aÓ¬I¸¸ù UøÝg@Rim…Xy£ò'`)Á“MZAåO´ À¹•ÍDoe Xhf`+¸:r!áb…'> ¢C $@h›ùfO8‚õIÌhÅŽtv”o~!©„‘Pæ¾{ï¿?ü#'™‘¬T’ðÇ$ð6Ëôͪ$‰IŒ5ý''±¿¬ó¯/kTþëUù®’ŠIüoH“xWþÖ7p€I™Xøð!ñUЂÄ`5¸AvЃ€Å>8B–Є'Da U¸B¶Ð…/ô^$Œ1ÃHˆ¯ e€DŠ‘Ãî0|/0F$ŠC²ã¯ð¡ÉÄ’ˆD$‰ #ñ‚2Ô°34\"QCHlñ-‘(à €ÈE‚„†gDcÕH;¢D¸CøÊPDd¡#€–€ˆ¯qЃX€…±Ès #^€…?(‚,3 Dæ@9ì€Y¤dä°ˆ-ÄQKˆÃÞRŒ(D!X8Á´à-la~PFbŒ-øa·Äe.ÁŲãLÀ*wþÙ‡ ÀA x„Cè@ˆµè¡H(’è ‡(ì€W‰æ€/¨ˆ>`BïP¤ qPÂ5Gâ‡È¡DÈ$°  b-Q@Ä_†6 ¡ „ ƒ0Ù¢ÌA EÉ"X`ŒèÒ¡…¨" Ì Œ ƒ„@ÜAd C ˆèè8 C°@†LÑ¥” ‰1 #A<‘2DAZ à FP„!Zàé |èDœ–A:È+æÀLH¼â£dð…ÀS2BðÁ > “’LXÄ È0†ª• ‹À‚Ñ‚1øa;„Ã!ÈÀþ¯fGÐ"x9,¨ ;˜^0F0beTkŠPÃH(¢ ‰5A‡t^儸i^1bT@ )ƒ[1Z8,£8(v /è  *€^qˆt£CaÇÐM?Œaˆ‘,€ƒ#"žÑ 9 à@¦Ånvµ;–W€!`ÀB hÈ¡>ˆB±Èa $]¥\% "‹ˆ€"þ h:‘œDP‚N@ËD!,ÐAè@" b: B1ˆ»z! ƈC†Sˆ ÔK áJPo¢ &ì@ D¸ãUà°ƒþ6ì R(è¢0á(0âÅ4˜ƒ pPŒ>Ì DØBƒD±hƒè@a & BÀ,¹:Äñ–Ȉ€B zø†Ã )Ž‘´„°'$ô „(€aŒ€Äè°ˆ?`àˆ XÐ8¨ Á#C^„,âV„æÀ`1àÀtd„‰ Ê“‹‘ðÁjEÁêÜnªUýÐ1D “”]‚„ËAZ&T!AÒ²ÎdD°ƒ"´ aË!à…bˆáÅÀA"Àá»q8Tð¡HÆ‚pŠÓ\×à † …1þ Y ÂèŠÐHè@ w­!>°ï|6Ef`Œ[[E"Ðâ,è'(: ë²Dâøƒ»xñ%@W (Â" ‰/_'„"Á‚8da8ež{•Òž–Óën³!¡„„· Sĉm[ùqÀÖí…;#áÞ÷–wúP„1Üy,BhçLq I?˜{Õ_; #1:,A\lF€D sØ  kø¤ áŒB„°à8ô½WQö*#0à?áb¨v˜$üa [@ßãP,á—?êYt·`qww1qc"xþa HÄò ´X¨@µá9!;øƒÀ :xA •ìc¯#0†b>\)P‚# '=ðƒAð?迨¤pµ@̂Ѻ €MC-2€08;Æa,¡`Ó+9B¸¢ „>Øèƒ;P¹[F€:%ˆ)8„œ›ƒ0`À&rr,Ø/2O„ „E`¼?ƒ"ÐÆ èƒ?À$³ f¤E8„  gþC„°@©úà ¬#ØAЀ?ˆ)`-´%(½À"Pbƒ(«€-h³‚Ì/YŠ‚ è€ø€rAØ0Ø28Ã9€SCè{>÷:‹@:EÀ©6Ø‹œƒ,ˆ2Ûh¨1tòB ?x%P8ð6èƒ8€(2ÿ“ƒ+AøÅ™¼Š2XG"胑$Æ·„KJ:“ð >ЂK4†K¼DØÂ5?9ˆ#vCˆ£(’6!È‚KÄ??ÈK9ƒWÐc‚ÉÊ/@46C iãK T¼D9(v‹?€"þ\;„,¸.c(¯d’ÌðZÀKT)-(ƒ"ð*‚Ã)$¸G²PºKœLHÈËÑD‚xz‹‚8‚#N$(‚b&ð6$@5²¸9àË"ð­Ù¬MËÔL)D­`ë”¶¾Ò‚E’+-ÌÚÃ=(æJΗóð‰J:Ì0†ëŒËþôÏÿЃEðº5ÐEÐ ,@BuЅЕР¥Ð"±Ã¹ÀÌûÍî™("«‘Y*@M$%²Ð‚Æ:„†‚C(P?¸¼‰ËãÏ QcÐüL’¥²Q!x…xA‚@‚²ªÐ!R Ú( àÉ»8FðG!õcÀ€ ¸þƒÀ³ðÂU‹2P§HÈ2Ø¯Š„%`#Ød - @„«„„—¼PHX„ ƒ ¸ ƒQ‚ØÀ‚9À#±ÐÒ¹øÓ@LÚÓ1@:pËÈ%0>"…T}ý›lƒؼ³ˆ„"€Ï¤#,È¢bHº¥â5HU0œË.JºÝO º&USeP%#ˆV ´ ,ˆÕ“U,Ø<è@ýôTB-,€¢EºÇ0ºÀm€xŠ„À,X‚¿‹E¦bàÎWÀ%Q…"äë¸2²*¸SýÄEx…s$­Uë{ÁSÕE"¢ý\*Q½GŒ$"$þP1€kº¸Õœƒ$ý2Êó§HEØ!ØF€Ø-Àų(ƒ®6ðƒ˜ôØ(¦÷ &H8ycHQS.«<;|=:ÓÊR‚.%ø% G-ƒ(˜ÙŦK|Ø4=pƘ|Eˆ€6ˆƒ©C„ÏC„¥!Ü‚ÏÛ´"ø«8ø1‚-è!(ƒæzÖ(‚xN cP:¯ÅÿûXŠcÜXŠªä#?P¶MÒ™òƒ!ó‚x*ÝD8Z®…Ú;ÀKZ‚˜\¬©FHƒ?Ø8¨Ï¤HB3†#À€%-/¸ƒÛšX-ø7þ]]JØÔ}@.m0ˆ…]ˆí2´À‚E B0©k €,@Ó·Õ0Ü¢»’’§6ƒ/„2(<=ð)èS’¦>¹000(‚W ¶½Û˜ƒ9ˆ@ĨcÖ _…¼ŠQBˆ­%„(ð‚W8@E&`b“¾B'„û8ð?Ø‚vô‚k ƒ±E‹ðƒ%˜¯÷µL4Ä!- 0x…‹'q%,"Ð$F˜;0 ß DÈT‚à2-˜…DOd‚÷-†;P‚6ƒlSnÌ‚¥,(¦è$Ð8H½¬ˆ?ð\²ˆ„?ø€†*-ûTÝ%VµH(þàØÝAP,)f\Y‚8D8¨*&ø¹ ^ajéË»; ¿0`/ H6Úƒ1P„HðƒÄÄ#ƒ8Ø6`þÈÀ‚WÐ(Rb‚_%ƒr;¹` 1A0=ø¬Dx$18“I)¾0¸¾‘(à™C ^Ò`Š‚€ ƒè[Z¾1X± ½#øc=0ª«ø€§]³>%fE= XK¼Ü ƒ8 C€ø æÏ‘P¦G$9óRMfâiÆ.-(†]á²'"`‚Ô) Gf³2žš;‘ã(x°Ú;:ˆœ²%ÀÞÁ‚8F%þ¨¶pÇÆÃã6xçðc(Å?øƒjlPHÈ&8[‹*ƒƒ˜ð±€¥77å?x¬± À€'ˆCè&@u ;2pq± ©>P‹" „b«€@F‚ tt'yê.€XU–õ¹Ðõ« 8 vÒî1ø+‹ˆ_‚h±ø€88‚%PcŒç,?(ätcE½ !ÐÊ%‰,8?T‚£¼Ù–¿/Qò0&ˆùuj§·ÆÑbÀ€¶+ù±_£‰¢1¨±ô 8ØÄÅD‚#Z·2‚K¼.ª;ç<‚bÍQ“ÌM'iƒƒòÂ!nM\GÃÆØâ´ÚdM±ø2E€R~O7íô§8ì>Ôò‚ˆ‚V×ÎþÉ<ÏEÀ€îGš+)ø².?ÐŽJ¹NýÔ[<ý_ƒƒV¿´VFº¼Ä°õƒübðA c½ƒKÌ‚ÅÌm%(9Ø%ö½ÌK'ûéG!¿fèFþ¹0Ø?Ëè‰ÖÚ'ƒoä¹G,Õ´[il¬7:pF" w’ëÜJF(% ùAX¦›4% E-;âô4#R Çøya ¤WÅ"©Ã"ÌE‡Xˆ¡ #:mÄð)"H–tPQæU$cÆ>Òü8fNAsNðÀˆ/ÑY"¨B1HXXÄùˆƒH€Ÿaî(TèK18!Fòþa Æ^úDhó1ŠHAÀ0iCƒ ŠŒi-“¦±8#"á`ÁbÆ‹š‚.lø0âÄŠ3nìø1äÈ’'S®lù2æÌ4µôà™HCÍ‹` âef™8t²™óJœ3èøè€H/Ú,ŠÄhЫ8J°ht‚ðŒîBTf,}ˆ!²$ÀŸ-‹ÂЀcŒ,*þ_B&iÍ;Ea2:a·‚G¥*:0ʱˆ%Å> BؘR€qÄ+S„AA‚Cd”A† r¸…Ã}ƒ„Qyä}Å`Y€W`мðJfxˆ õaQ 41ÃÆDRØ"þÌ‘t|P hA 9$‘Ey$’I*¹Œ´áY'”!d$ˆâ¨€ '|‰[Am¶ ÇG¼AÅ BÐ!EtÐa‡àI>”TƒñJLláÇcüg}`‡jqÇ5ùÑ‚ $Hˆ¡M/|0ܱØ Ö”…©$'ˆœsÌ` SÀ¸ÃG¾â¨zøG“Q ‰"*B"‡‹Ð¤ƒ,…aGìàÅ©ˆ1B`KZ{-¶Ùj»-·Kjñ‡žÍÑ®¢3C,@ ÉùmƒtbhagmÜ–$mH‰HwÌ1zèþa·¡Á ~†b±Ã"q ñ‡ }H„ÀwÄ_[láž`8 ²Ä®Å ‚é¤ÌÒ„Ä ƒTÀØ4(øQÌ ¶À¹ 1NA$GІ~±°ÅB V„ LÙéÂ"Ñ"M¯(!E 6‚¢ãÅ} Qm·e›}6Úi«dctà „@ddLQP[1€ÁC€ªί¨ ·-#ˆt@QtИô+Œ¡Åã*´Á¿‚DqzB (ÁSL­—Q.$‘„1rü鱇ԖE|0Wì1±˜N.áE*Hy þFˆøc‚R €p¸Þ:a‘|úÇ„¡‡¡m¨ CÐDÌñê,BÃä„Á1G½Zî0ìkûÿ?(À% áJ‰Ȇ$!Œ ZˆF£± G¨ #ÈÀ8´ d˜#ü‰C| ŠÈM"1Fx{õ‰B¢0† FA^8 Æ&ETà‡P aÊ@Â0€az$#th¯0( 7ŠD–°£Äàƒ#8B$ŽÈˆBL¨@Èp/ ‰3x¡ƒ(aЇ) +T‘C`Z€Eˆ‡ C‰Â?wÈB¤¨ÈE2þ²‘Ž,L1Æ@&HBHd·^€IANÄR\L$>i˜ˆ‰)†( ó‚jéáÀ@–0ƒJÄ2¤Ü¤`:i 2ÌA%…¹ÃðõÈa³˜Æ4Ûñ$B¦<æ"q€D|š5Á¨ÙH—Öü&8Ã)NÄÌ Ëd¼9Îu²³îd§z€žœ€ºbæË@¦ÜÃ3Ì <: ý+Û„•¤, B ‚¨çf™!–ï¼(F3*Î(Р^8"Q b 4™Á î” -QæÐ(<³[ ]’ÌétªsHXP‚„.s„9ÌLþ£F=*R)9`áq…†8 ¦a`éJ#h0ÐA(eà—V-”!daW¯Záp„#ÔDSÂ‚ÆÆz‡UA Ð:Å,D‡3‰Ú€V¶éŠH):à‰© úÈ ±ºH†l¤¬Ö*)[Ù‰Òk¯ˆBPKJ²…•YqcR‡™ÊÔRæwe­e4u‚(ˆA«#õ‚ °ÀN¹Yé? ÃÕš†8"eˆ0Á@†>¤¶”C„iLìUÐBzFPÁE(-/3qe|CƒA0¡ZÅY‡0ÞfxY=L=k2”9|BcÂ(‰,E` Û)@«ºŒ(‚ˆ°)=Ì `ð# t ?ìÊ ´@†A$0 #lŠáƒ·QRÝ4N°,êÆÀ@é!Óm"âË[ tÚ°D´ádHÉÄ8‚ ôSÊÕüÒ†ÚTDP8x‰‹â8€ñª€jºHBmþ¸±f°@ˆˆAƒ ÁNBˆVWæmhÃkG:ƒ;D€ ¢º×”Y ЮÖ$É/ ƒnä)Z‘„!¢Õ.G€&¨ÐGX°H`@Âcð ¦DãZh̺)‘t0_< I8hj":ü–#ØŸ”fÃ1°È´®0…qJ‚àç•>ò"dáм †h q ûˆ=@?Ð`¼„hÁÓŠ©:iæ„Äf’…(üá$¸V9d¢pìúýæKY1nfd„•0ÃM!"˜üãuAb©@0‰õ-S·Ü 7M ì ôØSÊMì-?…Ö\dßþ"‘”…ë’¡Z‘ Ä 3Ô1ì@qÐÕè€À‰/p(F怸˜ ‚0²b?rWx|xEèÀв£1*ºÿ"Ѹõá= ^ö °^¿]h’Ì" ‚õ@DP£Ð)­qölÿàÒÞöœ*>ë9…c?ˆa†‚p±¬¦ ‰ˆ¡6Ð.’©ý«!B7mÐíG¬‰0(“`—.uµ¿õˆ>¸œ7Mfª*¶cF (W d=$ôán/hA‰ Uà€hˆt†1|€ àt€ôpɰ@÷”æ€Aë`ÀÀA@ìÝ X$þè €œèÍå¹×@1Á·1ÒÌÛ üAȉ,Å<‘ì|À ,AâEÈ`Œ¼VMØ$T@ NG ‰ÂôˆÁ H!Z!Ž•O”ÁwôÁ”üØ«`Á @„ÒE[Ó ÆÓÅ ÔÆ "h[p(¹éˆPp$œ€×ºA‚º"ÄM ]­0Ë"Ð_e¼€ LyÙᵤÚÀA0MÐßÉ€Á+Aì€x1ÂHÁÐ ”Lõ W`€ ÌÀ@dЏ àêhÍ É¸ ¸ø€/.RêÕD$hA™|Ψ< þ`’И”`ð‰7ýžîµÁ«ÔÓ”h£€™‰E‚ãU Ð@o(›`\— UZ  H z8Î"èA”1KX!Á!TÀ윀ø!èa’}ÄúA‚Ø ¬"èü¢½Ð@ T”eDÂg‚ⵄÒ!lMx¡C8Ä[á@ó`„ÎÉÜŒ ÁŸ±¤MÊV°¤1¼ŸÁ!Ð&ýâ"á‡0Ž€¤Í`1èÀT‰†$LŠÒ¼|€˜€±L£ö †ƒL™¼ŠÛ}€A`ŒeYª FñNÞ}DTÀj`œáJ¹àºÕþDåÀÍŒÀ½‚K1ìÈ!ìÀ2ýi´œHšÛb1,NxFÔ†!B‚üÁxÆäØ ‰™M¼JcdNd%$d&¨eIòKvÌÁç ¥å¥ ŠÁ65Ò1FÁQ,Brˆæê½Âì@`°ùxA0Á` ž%á°E!,–lS10BHèP18uš&kø\•A$¸•`ƒT–Àœ§] ÆkèY½q§”U ÝŠÀKLÜA1èÁ”¼‚/ªMðd1J YNY–tçqူšc" ÖL¡Ö¶¬Ö)ÝF~ÄX£b¨MþÂf#µ‹ §j¦Í ŠAüC™L_„@%$(ÁÌhçG‹òuŠÏáIüŒTm¾€b€ TVv€þ‰è/¾€ˆ—g¼Ë‰")”bK$ŒÀ2yFüA ›Xâ œ@$€ W(A~Ä Exç`D€$EÁfZc€&áadA`$"ñ©ªHÁAEi8ª˜1$—gHÁ$nKDDjA} Æ ØWè@Qê; U‰Ç­^ÿ! v ôwÕË (BµD芗~„ÈT©ÆÁŽö©’Åtá Ì `lüj©~Å“j*þFEÂ"á ø#Œ”VÍŒ@ ‡jA¤á`¼ÀU¡É ø@(kFéÀxwñ[pý þAI aÔMÁ†”$#`ÀèÁ@ß``„Û`ÉE ýÁ¼1,BíaÀ`ÁÂ6ìÃ’«Ê™l€Ùµ"p(’Q 1Á¤Z›ÀADBÄc”Á¼HÄdÁ¥ \!hÂAY½¡)EôlŒƒRìC(BR´bÑÁºšø­Óþ+àŒ—­áߑ晾ýaúFp ›fÁ$ZìÍ@~ì€ÌA`HRp>î@œHÞãÁC©þ («A¨,c=­IdÉAHfÊñ-á[¨j‰†ÇI`_^" Ìp,t€ÐÅm¸X Ž 4Î ÂÜœ‰1Ü☠è "ôÀ R„X²nÙhkGRíî.Rb•#Pè‘`At”¼®hÎÙ¨LÇL,^½€®À³6“Àw…AÜh˜îÀËìÀhAÜe2ºOîñ®Áý ™/û^”ü®{‘ ¶Ÿœ[ÑÓ]‚ €ÈsMÉâAŸ Å–D‚t@o̬…`ïGüoŒÒI ‚xžŒìâ@í¶o¶ÁýI#þ\0p½Âè £úd‹’n dAuä§é& hà$ð• ôÁ+0Á|"p—‡ß’¨€1Ìè^Q1(Â0ð‚°Ú˜n¢FÁ B±ãU¥¢™ˆ¶üŸPÙ´@ÄÁp"`@¤1!øëéAWÊ<×0BŤ1,X|À ¤qãZ Î1T@¸ÜÚ²"«Í!PÙÅÁ=·<$âEÐÆê0t@èÁì É" С>I X(Ÿ²ÚÈAxÆ D@¡è§‰^‹ÉÀ@¨@,£²’èYËíMrê20_ lÁ lAþ!!±ƒ{sM)bõA–2³4‰Íæò4Oó ,bÅA%g38‡³8—¤+pë8§³:¯s¼€ðÙ9³³<Ï3=O†¿@‰éÕ³>ï3?#ã¿á36'† @M8A$´7ÐD Ø@-L$´ ˆ˜À Ô@ÚÁ,ÂâNÆ#ðFCÂ#<F;Á#8H‡´IŸôGƒ,@MÔK;A Ð4$„ôGÔ@HË4FŸ4PA?5#/+3BÕJF$LXC_À5|C ÐD! Á/LF.ÌB04@f<‚%PÂPÂ,†TP DÀ^vtdðÀüHþÀXÂ2øÂ €@È,Ã58Ì‚%43hCXÂ0µ øB@5 À\À€À4ô$ô@\OôÀXÂ50CPƒP€  ´P—6a&)ŸGd<6$B"`MP6<Àü4MpD5$  €0Ô_c6kcƒAÿ¶.hõG$÷#´q/7$P6 aÔÀ5àÂÔ@L€u;ÁkS7m—õ PB6Ä46µ(w!Ô@"D7$Œ÷G‚q?B! i ½]Æ#\€,4À /è‚ ƒ-ä‚ € PP$ì2¤@ðþ„@L0œ4Ä|A,ä.è.PB/8C  €&ôB4 €|ƒ, ÁôÀ(@ð€iÿøÚèÜ„ÁQF |Á*€.ü‚ ð‚%@B,|Á ƒX¼øGxƒ„ÀGì‚,è“Ä 1ø5 †¸/¬ùCe/ùGÚËøø˜Ë/pÀ <Â(/`¹`Tƒ,<@"@‚5&|A"ù0Ì÷ø91Ø€ ÈÂ7hµ7p€,Ã5xÃ’ËÂ. $B.Ø‚,(@Â,|y úpÿ+ˆ[eÜ€-h t. |D.C7è:$ø‚þ„Ã7”¸3Dwô‚›«ú-¸9 4A2<Ã0ÈB ð‚ 4.pÀ1@4:&h‚5ô€ ÜÈ)h4Ü:§»Ù”Á(z"¸‘j&C 4@ä‚6$nS9lƒ&Èe{CoD4ƒè{us€.ƒ C˜×„0à‚%¨A7p€ @64÷GÔB2Ô 88$¤@/\@,ƒ5Ü@0`B_Ã`È@87$8A ~kBXC/ìl€ ô@2ƒ6¸€ PÁÈ‚7\ &46ôÄ‚ dÀ,ô&<ƒ7 A2 µÇÂC ü[÷]FøB/\ƒA'dþ "èC‹«þ)¯ÜòË1Ïüj80غ«6Z(*d4i\óÓ :¢Ž@Ýõ×a]vÔ_`ÁómwÀböÝ­þ¤Ž'Ö¨ÖH¥rG$yCù$ rÄ“5&ʃ*Œ–'Œ`†5ÜàÝûïÁGêF¹) _}hçÃ#Pi$HÅ¥R $hKhD”.Š‚TÂyxÃRŒ'LlHÂVˆ˜ax¢ðÀR$a†û­ƒ¤Ú ÆxnYx(r†.„uXA„Q$ð(©àCÒÀ‰&%‚T$±Qˆ‚ŽèŒ•7¡…ª °•CIB+.œÁU^Haˆ¥¸W(Bñ„$@!­Øa´Á‡F4ÂuÅ0 X`@þðb€‡3äàx¸Â'ð`k¦+˜ÂF1 b„"p…DY X$@ˆuèÄü× Q8%ØÄ(ÐIpâiDA<‘EH˜!¡—€Å$‚p€'\Bœ˜D#Dð 4U •øÄ&ê ËI•ˆ„0q—Á!‘<ˆ‚¢—ð'€°‚K4 ­Að0 P" (L÷–ŠÂülÄêp† d M€J0ŠFb¤Ç´¬eËP ”‚€ƒSlXÅO|¢ à ’À‰O8›¸'ÌÀ$¬àš& P‘À.˜œàƒ B S@¡ °D*þ`‹P@á •x-Ò¶3Ü'@a+Üè­¤IGxÀ—E ºðEO|Um ´ëˆI|¢·ó›'ÎÀ…7ÀxÈ ’tá­°u®à€¢w4ƒ>!KH¸Áû{ (¸€U$ÁfhÅ>щ$TBF8ÀýjŠM@á WxÂøà.ñ ¸D'é+Ø P8@# €‡FtfèBòà;Œ¢¼9 Å$ž€/š‚ù[ª'þ™T.ÚÁ0ðD)P‘ÔÂæ! •À☠ÑaX\Âá]C#’Š7 RW¤‚JHªb 9ø„+Ìþ ^! Ž…+BQ…NL‚À;.A€N6(BDLqÄÀä´0^ .ì-Hò <gÈÃ%º†Qà5„…+ò@ HHâSHòÀ¬À9ȃ+V-7ŒÂS°ƒ+2¡ J»± ¨ž‚(*Z‚'q0Ä%òp;$±Ü@xCPÁ‰¢¦àÃ&D„PàáoHÖ¼iVÌO™„¦`[’âÄÁ­9$, þ‚*8°0ž@=H°ÑQŽT|rçXMÅ'Z±‰Pä1¨*àÇn¯ÀµMn(TQ‰µ”¢€á„RìϪ€„ÚÙÎ=;˜âÀ Ä%¬-ÎØs |Øû@8! ¤²¬øù XòH:¸0‰̘¡0'ê õP$Áªp ¿¬`¡H»  0àŸ­v}‹q0lANÄà†àá“PH…ð lá8Î DAì ÞÇ Â îÉÏ)`Õbà§RæFJ D¢ª€ Ž¿Ø(ØÂHtp”zV ÞÀ¡ž€ê@­ªÀ€ÝšJº@ÁÐ!<¡:* ’J°jª›Ôî€ÚîíJÁ ÝNÔŠº'ë€ &PÏÂïØB!ïL Õò€y¶ï§ Äv°—ÀR¡òl+ž 4-FÁÁ \áªà  *á ¨Êéõ0±ƒŒa,šþ¢ ` á Ì ýÒ*ØêMŒFÂùüˆæŒ‡ò`¯ˆ¢ *áã€^ñ 4 !¦` Ô êàÜ@À JÀ¨Há Ø° &!Üh Øh!Úš¨½àJá8Áx@AÖ` ì€TÁDÀ:aÀ=a<Á®À°M.áÓ‰*jr $€Ô†ÎzR`ÀDðÐŒ áèȦ€XñÂ&ar J¡Þ:aÖ ¹€ŠKb€·Á€ÀÞÍ ò`”¢ŒP!(²ºo ÊŒ ' ­½ `þpú2!©!<ÀZÁ,`˜, â¸ôòGóÒŸ`7× L!@.Èë Z!Bá€8Àø Ta@A6a Œ 6a稯ì AøÎ#Ÿ3ªà Þ'ñPÁ¦à?-`Ø:‘¸€ÝF¡´ò ’gŠ‚ €†È8V@ ’ \a .á t˜ô ø þ!µ¦€Za ÈôêÀ‚ó ,¨¤¢$¢ |²Zø¨õ ¡ â,) ©4 B\õA éV•Âñ²Q*ʨõÔbXi• ÊÈkÚ ŠÇw¢üà&‡‹— D¸XÌ^@nøŒ" NxàÀZ€”€… âFÆ€ L¨aa,zxŠ«˜mí˜ Šþ@+>à³Ü7“5§Ê o½æÊnu7ˆ÷:{_!Š÷Œ ¢`p"Aw—~; Ž`p@ ˜“;ym!¡ à`V7–›&”BwGy(î@ F` |ypdY ´€ÔW Šúà‚#À !šƒYmñV @¹mc¹‚§â ¢`w9¸xg`¢ hÀ Œ¡æ€ ¶ ô aX€Ðù”)  TàvàÀ`À€ h€"šüàè qÅÀ^@” ¼p@:€Œ|@ æ€æ@ 9 Ä ¾Ùæ  €Bg v  ÈÀiþî€`æ÷è`uéXŽóX À :@68v€ ”€Š€¡X €v€>à¶ !”È@ $š: !>Ä@´àv` øW“õxãš ~8ƒ…œZ  0 ööB0à0ào` 0Àz  œ¹ ü Ê`@ A„àþ€7 ²€{‹ï €0^!C v ¢™Ÿ@µÿ€ Öv(; „ƒi@ !}Žà|ü èZ` þà¢à0€ *`Á ^À**€qå` TÀ*"!þ è€FW 8؃!áàf  ˜àqè` "â@ tW Fàüàà‹u@¨‘ ¸Ó[a—É`f@ æ@ ü@ àÀè ^!f€h |‹@¢ ¢`îàú¬¿™ :@N§íyN  ʵÿ¦þ€ÖÈùæø‚õ ˆ€:Ž€ ‡å ²€xÿ{üp`‰G  æ€j¸´ ô È€R|@ ô`Á©‹aŠu5'¯÷újàB"Á@ |@X`‰uÀ0€ A h€Ê— Ø[•S×±@D–—öî@ ¼þ¥ @; bY¶`>€î A —ý` Œ¤À¶ÛÀ Š À À|~ B·" ·¤à@N@ú@p:` á4œ` ü€pÀF 0@ „ a:`–àÂAjZwZ ¦·*ŠAØ“ŸºS"  Úv˜ Æ@ Ú€TÀˆ·¦B– ßo ÄàŠZàð™ݹaä@ ¼@¢w`;½€ú@ t÷ Õý€¼ • u°€ìÆ ŒÈøzÁØM!AæÀÜ#©!! þ`ü™:Š þšZ ^¡£Bò} Át ¬+€ú º\èààÞ "`~¡Â zæ¼jà v;Î- È`XžBV—Ä ›gЕ ^á" ½x¹øÀiÒZƒ!áXÒ•©¨âÄ€{E¾æ]tçx] \éý€ZÀÄ ¼‡" h`·Mxú² ¤çÀá³Zýš5<a*à¹…à„·Ž€èáµO@@¢ Ä`r^A Ÿ*Š¡¶@ zþ½ã by ¤ÝÚ`Œ¡ý`rǶ@ ìö›õ¶“Á@þŽ  À 켊€–@êU w€£‰`v³à³î` ˆ ¾#a¢€•#` b/;äìÈ Ë%‘ AR!ÅK±˜´iHe(Qâ‡ãFûÐ&R$2!‚’±(EtÙbìUœ9/ŠAêY¬X™: ‰4' ’6'„ôIH/J Î@Ë‘,¯^1"¢(KɱdËš=‹6­ÚHeü "2hŽÚ¹tëÚ½‹7¯Þ½|Ó‰@ƒÈ‡"Åö­{€HŠ"àÒ¹JX; ‚C,qX”ŒtEp¤½ƒåiD Oˆ¹SrŒ $c³ˆãpÉþ8GJca`K±gïH©X:`–ÈRÆ ‹bAÒ¤C8;Ž| !F:'X€CèÇ(ŒN„ð¢b#>l¶ÌrÆ|*(Òq°Åslˆ¼ð‚môFdýÑ"`À„[° aD ‚80B ÌñAa”Q"G”…'ø@‡ 8R%Ç@*ü'‘ÝAÂŒãÜ3H•±ÈE\5£CH('Œ°“,ÐGÑÚ§ˆ7Ö€!‡ sx!Å"…QDpˆ‰sŒqˆ ´¸Eà‡(]‘1þ")r%Ji¥–^Ši]E ` G¦%%Ö‚sô‘„´@Å|„Ã4¨ “;49nÂÅ’dqU–TÆ#”!ÚEцKw3‚ -ã1EòÅq„Ì€dÈaXYXà #XÁz€r,Ñ­¼ C1BÌ!D… 8ï(ÂÞ]ú¬Ôê@˜F’ź:è0ƒZÀ1Æ8llí"ŒxñÊvcD¡Edu¤Ã8Ì0^D4#ñ çê L0²ˆ/áSIGxÁ#~¼P„=ƒ„5uìþ±C3qÈ/È¡ƒzlœ4$ÁÂåÞÁñÆrØLFÎ:Àñ‚Ð'; ‹ŒàG¹%É1YtüŠd´¶Zðì³@Ë1#cèµ¢Rúu;HÁ)¤D”ôJ -hQÒ¢Ãæé- ‰êek!úë-p¹8’Åo|¡ã¥t°„2ÌÅŽˆâ£/G50ˆ¡ ãÔ¤ ÑBjÆ!dhC6âfµA;d¨¯6\ð"Þ„@„N}2”[Ð#$ppAœ8•²\ Å„’ÌRÈ10ˆ”$‡¹tÈ æÐ1ÊlÀ¦/!‡Ï ³$*€ÒL<‰@,BþÔÙ¤^ÐêÝ’¦ÌW§ÊIôA*…ŒTèð˜2Q[À´´2è¡0/PI¨¤Ÿ*(A})6 ~æZ‚ߌ!c 4ýôe? ŠQy1[ÞÈ¡ší¯€PAï`´ÏÜá†Q‰@“#„WP´ ¥H$Œ!6úa’ì©O÷R êýt¨>Í ÒÙÎH}Î!^€!h)”„%Êš*¤†å`th(æÝ”–ÃAZé¼³ª³ÔfI^éV³åº´%hÐ΂0 1ùê×H@j%yÁ`™ )DŒ*±ˆ+7iY’lþ~ô–øè7Éé=<Š–Ó,XàÙ¤BŠ<ÍKÔ ¶€05S^hàèp…®V-8¨€…f‹ÛÜêv·—*Fá4ˆvR  ÄJ¢BT ®H.!˜ë\ê-‚„.!N`ÊW€¡`Èî A†¤eᄈ‚xÉk^‡hº´Q/{Ê„ â{‘ˆï|z‚±)¿ N$”ËÓÿ‚·$8P®uVIÝŸò½Z£nHLˆ²€º¾®ËÎháí€#`g!i@¥`¡l”z¯x‹¨¼ÂRó#Š}9Ï÷¥¢i‰1´B,!܈‘(©CºÒ>¦Æ¾•)¦| cþ ðû)‰óB5EÈSK•±•¯Œ¨Mq*ˆ¨–¿ f+Û?=Ë+Æà®³àëø›æ0‡¼@Â!Âð‰16/ðà°É’D8þhJy‘q¦¥Š¡Åše"‡±O¹Ê ‡ P²Ž¯( (©0‹zÔhÙT:ð¹=yµB8ÁH<0(bcñÃ\\8xÁ ¬£Ëu@꟰i¨P›Ñ °€—1¡~-Œñ‚2Hô'Æê ªY1XHJx”iŒ Fa .‰|ðFD@zèFÐZ]GmÈë "àƒŒ@¨SmŒ1 ”áþ¦Ï¦öP’-hCÆxv´G\c0é5‰Ãe’liV[eyØ$‡ ٦Ďv®=âc»ì¦Ó®ÂO)†m.!ª…ÚGû‚2¨6Ø<5X°„”–·¯ ‚eÆ"‡Cý3L˜®Ç®8ü!~‚b\–W¤ÍR8xpåÐ^HaJ Ájá %Pn qˆ"¼2Ä-, ŒˆƒX`¨;T` [8nëöÞw,àH @'ÌQ± f“p8J‚…P-BÛŘѲ#ƒ üAZ?q Z4›„ `Ø‚Ýgà!"ÈÂúàüAêƒVïw²4SÁþr0Û_†8ø€ïÀ.°Ý y0ìÀÑxP1¢ÐvCùa !Z Ðqý!È9Bð·À¶ŒÀôÙª`–`1Ó Bµ0ê¹…õžË_Æ/Ȫåx„;ƒ7À³ŠP‘Pù7Oœáµ"yE,wp‰†Mƒ€ÆÐhq€:pPep,uz0QGP\!PYÀ€;v¯À€  „fSù‡4YpIþ7t4ø$, £²t f¦—ó ‹@­Ç‚ óH@ƒc°RdP$Q°‡PB­Öx+VØ1Ð’sI¤áWYPsÀxÃ@¯ þˆ G~€ƒ ¡³'y °„ð~e¡!@m¯0wàDÆ@LH d€mð]‚cÀ$X …Ã2coEÆÀFa‰JP0KŠaÐqfD`[ȵ°pp°\BÀ‚Ðcpu8 4_ÝEBB@RpäE0ˆ€' ŠcÐ^q²s/D@5ÓH2V ,Я¥ŒÐa#( bŽ‚`!ÈTáØQ Œ ^7Ujb4=¶g{†‡t@8°äv D ; ̆@䦽V' ,tFþïDz°b D SCqÐrit’#`RЭÂpØ8aÐþƒ)eð%*4Â?^@Ëæh3Ћ Zài4‡R@fCI>ðc†Ä²`Ey³'h€U"d8 ëçÅZ üH‰%¡!'Ð%a` ~Àˆ Ž`tX Yˆð•@£ÜÒ , oea‰‘ñc‹·äE¡KIÑT[ _r-H#P6X{™Åˆ0)£t@Ie@’‹b5©K@K"Š à&×´Jë÷'aW³I›D¥!ŠPp&ß aþ@‚ ²‚ý×Oˆ ¡4ÀCÁÈ7pðMt°qa ^ 1’8š~@Zp.‚R4#^€³Ò‚0v„D 3`^z° „ˆ `0Æ%L` ù¨~ðŸÚ8p—E  QÔ7QÀ·u)‘€8Øz#Ðb°”O “3 u…ƒ°MÃ80¢%Ú4¦áäÈ”‰Ç3ÐvÈw†cQ—ħ´~JD’3£,Á\c±mƒqÂc°F`'Æ0VŠà0#}0e i¤²M-qJ>ðía~`0(þMÅM!}°‡`9T7e0a@‘ YÃÉvV×2&zq >Ð4*ð5b`1ãš#5†ûV›‘*©r”‡ò¡Kð9•G0OEœh6¡A' ¤Ó²¥b5"´ ®Á:²lÓvA’»‘*÷d0yCú` bÀ!ñ.X ² e0qt0•t€,Á¬üèÆ@Bc!“m0BñtøQ #0ð dY=M7E„ñæ$ž:pޝ8°#‹àFƒvßòl„g¦TZ°a¥GE@cQˆ30þFê'‹Pˆp@¨JÌB£Éd0Å0qð¬R0_‰zŘYâªeñ|Ê‚>0S‰nr¤RШƒÀ8pr€:Å0;ðpP ;Àš8¡=û 3ãÐ>Æs0Y€r 4°wPG¡YPÅÐ+¢Xú­ß3©më¶”’‹QDà-Õ °àhw@/ªŸ Á€9ic€8ZôªƒÀ¶* ²Y«ÉIsð ©Ò/Ë!|÷ òƒ# QwR6`Ÿ‘¤%9#31ºHðo2Yeá %;üv1F%4‚2wÖ9‹þ@³q¸áCDà“¾Û£´¦·"ëBp„€'4Se ñ”0Z@o¶B‚ÀFzPt²%“L¸ž]°ÙIna¤ÁjçŠ0æ=ä¶€Èx*Eò4@BZ tD€Ì wàH@¥¥j´±©ÐÐ(‚@µ¨J°xHd؉@0õ(Å ¾7suoËÂ-̉áã°m°Bpp—L@R=ñùg‚ó óbŠ#°å'±¶Õ äcЊÀ¥ršL`!EÐZKPwÀt06ùzv÷þcps…¥˜ØGE Q'É'3¢yòÙPrÜQ°OЋ  èJP¨ƒƒ“=Uv4ñ÷p‹ÜÈ&4•â,…*XÆjQ ÒhˆU‘2‘ð¼V-'ò"wqbi1(XY0I,vö›d¦ÌÈH‚J3t.lË·¬‰¡ B7dÀ`0ËE¯‡*¸€Ì ŒÅ…ÌØ¥À[p_cñ^°B“Õ‚,Z@̼¨ˆP\Ê5PÍ+_ Ä„лõ…ëì?zÇ ߥ\€©ˆð!ûÌõ–¤©½’Ì~1~…þË_±4àWž:IouA‚àh”LÀ¥ ÍÑ=[‘ùúQ7EG e°[AÅo×¶Ñk1Í‚ú«ÈÔDÑæb,7—­‡~p‘eBÍ4f6"ÔGÔ¶üaÀR©BPöË[3°‡IÕY­Õ[ÍÕ‡ñ (ÝÕѰ­gQ?ˆƒ4G€að+šò`ÖsDAg1ÐÒa×yíÑ*Æo9ñÕÖZËsQÑ݈Ô—Ƀ ”F‚@Ù3†¹‰j!`@†Ic̪ õ zT nID+/þ0ߦsàNàgŽæ3HLdp:ÐGpá÷cpˆºÅé>'ÀçÜcç[Ø]{ÝjØ7Q€2v>ÅŒªÁç!d€è> Aã|ÞÞf‡ÀçŒp*p#´40†–k~Zê:ÐÍ Ú»•z;Ðûw+,ÅaplˆG6#}Œ´ov»ñ^4¬b'}ppØ?^ 4~¿ \8³cØÀ°Å €ó㌠8¬1„pl!­GáÎAN¥t eî\ 2º¬œæ÷Žï}Ñ›’ÒYd‰ðÚ£àÈ$J€²y~€Eàþ€ÜÒI*0Ð9*RãÛ'0b(*ÐÿZ9÷‰ÃR€yBˆ@êˆpÉÅð1×'*pŠ É´ŽC¤ ðëÍÒÒ!-¸¼e ,0pê>bðL.¢±J=R€apöíÒ»‚Ò?.óã@Ãf7·¯Ð¦A4°‘)ƒ;0HÐ>c 3‚;gô¤1O* —¾äûi²&'ãžï{Ï÷¹Ì›}àß”qZ ‹dŽø…ôøÚ^>pÑ5-ÒÚfc0Õ©¡’¶ K&wð-~@W~ }©=m o|Ó,L±‚þð~ÔJjͧZ0e¹[XÀ¤Z¬Y}cGï2ì¹ÄI;ð=wðQ*9ΧZ£4Öƒ]ÿõœa ý>‘ô )óò&t°V‘•å±ÁQƒÐ1^š©û}/ÿóOq ‚ôy5x{±Ý·Š‘ h£ÒA„ ±”ѳ'ÄÜA8F’„G8H(À«,pdQÒ‡- +¶i¡Ë–8;ÈA¸HÊ’BTîäÙÓçO  #eù§ˆ¢AK¨¥^¼82‡ˆÆ ‘òA K´,£bµP€‘,b"ê EÇ1þE¹5ÆBŒ%4|QÃ’WLv”!|"éRBGZü ÂÏ HEÚôù0âE¤ R¼@2ÖçOAU¯fÝÚõkرeϦ]ÛömܹmïÅa,N!N‰C$’’-Ytˆ‰*òϑʴ5öbL0ÆÊ,TY&L‹!d$ –ê‹þbv~G¢b‘–9r€œbˆvÒ‘Z¥Ÿ6*X½àØB‰0S¡CÐjŽ6ñÏ‹ÓtÃ-Ž(fŒ0–øàNcÄŠdB*ïÄ " ö Á"ŠƒŽO8 ÉñÁ‹É8‡Nð!‹hÁÈ„Ê@âŽFþCè:ü@…"DÔ1 Æ"!ƒEŠ /8^ŒÑB4ÓTsM6ÛtóM8cÛK %:ØQBŒAë` :ˆ(sB$ ä@dÂ`äˆ éƒé®"ùc1!‘ƒ†9”X$ %¤À`„ƒ>XBŠ9a"€>?à, b fð¡H>d‹?vˆ‚‰B;@DH² %ÈÀ̇0B脨â”í…2ÎÜ©Ì6Üic‹$¾ÙéC+•°ÕV¥q‚Ã1úÈÂZzëµ÷^|óÕ·5„[D µ£ˆ;ŠxE9T8ä„(âá"Žxâ"ô®ˆEþE7#þãˆ)‘ c ~˜"H´ ø= vX $YD‡[_ቡ1ÁᓞÆðã•qÃÀ€1„¥}qÃB‘ #_86–M¨ é´i®»öúk°¿~¡‡v [µ1h 1¢0;6-v`‡„fÀàç³óÖ{o¾ûöûï{#A¢…­ß ?‰ ¤k{e†f°!8Ê4ürÌ3×|sÎ;÷¼s?Rú|tÒK7ýtÔS—-‹Âu­ÀÆU—}vÚkw-Š0AÙöÔGúEIí…W^Á‚x­Šg¯xt‹ˆ 9„ŠyÝ2^)‹H°@‹W03Fy,°€Cy7ÿ|þô¹ÖbÂX7}Í_@b‹0ÐÕ‚º=íƒN%ÀP‚£8ÌazØrŠ ‚H,àHX@§EDb;¨@ÿ …W|@ „ƒ~v%°`s ÄîàwB¦P7BèÀާ¾½@ ›CùäãBH°Ý[Â(‰½aƒ` ‡;¡„hÁÎ蜶 A ‚ˆƒ”@| /ZÄŽPž8ŒSÄU,C4¦Q=ñC±FÀÉ(èЩë¤%epPB<€#h!è¡öŠ TA"fÍ‘CNp"ø°qhA`–°ì€JðB$îÀ˜bxaþ,°MyJô!„˜AùPy¶ø![ðƒ‰Êðèm¥2 ‰Ã^0Tmþ£ªœg£F2r>¨Ê” ‡-x¡NLÈXT †paa s¨Ð+½ùMÙ# øÃäÀ 680‚Œ(à ˆ`Î; bRl®8† H`p€!,@‚ î0K-A rÐð ÍCøjB@ $ˆCج ”RAìÎùQjN2 iØ"¡‡(d¹„D$t‡ JcˆÀÀ@‡ h!;Ø ‰› eÀÁxAg¶€Z¨€"°ð"ì ˆÐâ0ž#Œ€a%xåjWý&‡e¾Í«ú:„Θ8lÓJZUí¦j@1Æâ:V¼æUoXÀÁ *àJ½æK8k` {Xó…a˜bûXÈF­w¬d-{YÌfV³›ålg=ûYІV´£%miM{ZÔ¦Vµ«emk]ûZت$ ;libjibx-java-1.1.6a/docs/images/strich.gif0000644000175000017500000000005310350117116020253 0ustar moellermoellerGIF89a€ÿÿÿ!ù, ;libjibx-java-1.1.6a/docs/images/sw_min.gif0000644000175000017500000000005510350117116020255 0ustar moellermoellerGIF89a€ÿÿÿÿÿÿ!ù,D–P;libjibx-java-1.1.6a/docs/images/update.gif0000644000175000017500000000030010350117116020234 0ustar moellermoellerGIF89a³ Ù•\ëÒª?!y‰’ÄÄ~LWA(ç²xdG¬ûüúϾ¯V.°®¸Ü6+Vqg·!ù ,mPÉI«½8ëØßä!HhyÁ7’åE"[š¢\Ó¬'à O†ÜH °vhzÈ߉u  À"yÚ.ŽF#øJ‡¬Ã*ö` Ž<ñ ²cÀ`Ð Af{ €‹‰ŽŽ;libjibx-java-1.1.6a/docs/jibxsoap/0000755000175000017500000000000011021525466016653 5ustar moellermoellerlibjibx-java-1.1.6a/docs/jibxsoap/index.html0000644000175000017500000003761011017733600020653 0ustar moellermoeller JibxSoap: Binding XML to Java Code

What is JibxSoap?

JibxSoap is a SOAP web services framework built around JiBX data binding. It provides the same advantages of flexibility and performance to developers implementing web services as the base JiBX project does for ordinary XML data binding. JibxSoap is designed around the latest web services interoperability recommendations, which lets it provide these advantages while still allowing for very easy configuration and deployment.

Many other SOAP web services frameworks are available for Java, including the popular Apache Axis implementation of the JAX-RPC standard for web services in Java. JibxSoap differs from these other frameworks in that it's designed from the start to support document/literal (doc/lit) web services rather than the older rpc/encoded (rpc/enc) style. This is an important distinction - the rpc/enc approach allows developers to easily expose simple method calls as web services, but creates problems for interoperability, especially with more complex data structures. Because of these problems, rpc/enc has been effectively deprecated by recommendations such as the Web Services Interoperability Organization's Basic Profile (WS-I BP), and replaced by the doc/lit approach.

The doc/lit approach to web services focuses on the actual XML data being exchanged. Rather than model method calls with parameters encoded in XML, the doc/lit approach uses W3C XML Schema definitions to fix the XML data formats. It's up to the participants in a web services interaction to process the XML payload of doc/lit SOAP messages in whatever manner is appropriate to their needs.

This focus on the XML formats is what allows JibxSoap to apply the power of JiBX data binding to doc/lit web services. JiBX is designed to support fast and flexible conversions between XML and Java objects. With doc/lit web services the contents of SOAP messages are just XML document fragments, which can be converted to and from Java objects using JiBX just the same as any other XML. All that's needed to support this is a framework that handles the SOAP wrappers and actual transport, which is what JibxSoap provides.

JibxSoap demonstrates excellent potential as a light-weight Web services engine, with performance typically several times faster than most other SOAP-based frameworks, but it's been stuck at an Alpha-release state for some time. Much recent effort has gone into supporting JiBX integration with the Axis2 Web service framework, for the purpose of supporting JiBX users who need the full range of WS-* standards (as offered by Axis2). Some samples and documentation for working with JiBX are included in the current Axis2 distributions. You can also see the Axis2 page of this distribution for more details. The plan going forward is to build on this work to provide a level of framework independence for using JiBX with Web services. This will allow switching between JibxSoap, Axis2, and perhaps other Web services frameworks with little or no change to application code.

The current Alpha 0.2a release is a long-delayed update which fixes several minor problems and provides compatibility with the JiBX 1.1.X framework. Despite the Alpha release status, JibxSoap is in use by a number of organizations for deployed Web services.

Check the online version of this page for updates on the subproject status.

Module Name Primary Developer Status
jibxsoap Dennis M. Sosnoski Alpha 0.2a release May 23, 2007

libjibx-java-1.1.6a/docs/jibxtools/0000755000175000017500000000000011021525466017051 5ustar moellermoellerlibjibx-java-1.1.6a/docs/jibxtools/index.html0000644000175000017500000003316311017733600021050 0ustar moellermoeller Generator Tools: Binding and Schema Generation

Generator Tools

This pair of tools support generating a basic binding definition from a set of Java classes, and generating a basic schema from the combination of a binding definition and the associated set of Java classes. The generation support is fairly primitive, and may well require hand modification to complete in complex cases. The documentation included in the download covers the usage and limitations in more detail.

The current Beta 0.4 version of these tools should be usable for many purposes directly, though the output is far from optional and may require manual corrections. The tools are being replaced as part of the JiBX 1.2 work, in which they'll become integrated components of the core JiBX distribution. An initial version of the replacement tools have been made available as part of the Jibx2Wsdl code-first WSDL generator. There's currently no documentation for using the binding generator and schema generator components directly, but this will be coming as part of an initial beta release of JiBX 1.2 in June, 2008.

Module Name Primary Developer Status
(core) Dennis M. Sosnoski Beta 0.4 release May 30, 2008

libjibx-java-1.1.6a/docs/style/0000755000175000017500000000000011021525466016174 5ustar moellermoellerlibjibx-java-1.1.6a/docs/style/maven.css0000644000175000017500000000314710071714742020022 0ustar moellermoellerbody { background: #FFFFFF; color: #1F354D; } h1 { color: #000000; } .app h3 { color: #FFFFFF; background-color: #A2B7C5; } .app h4 { color: #1F354D; background-color: #F2F5F7; } .a td { background: #F5F4F1; color: #686868; } .b td { background: #EEEEEE; color: #686868; } .app th { background-color: #DDDDDD; color: #686868; } div#banner { border-top: 1px solid #A2B7C5; border-bottom: 1px solid #A2B7C5; } #banner, #banner td { background: #FFFFFF; color: #FFFFFF; } #leftcol { background: #F2F5F7; color: #000000; border-right: 1px solid #A2B7C5; border-bottom: 1px solid #A2B7C5; border-top: 1px solid #F2F5F7; } #navcolumn { background: #F2F5F7; color: #000000; border-right: none; border-bottom: none; border-top: none; } #breadcrumbs { background-color: #D5E1E9; color: #000000; border-top: 1px solid #D5E1E9; border-bottom: 1px solid #A2B7C5; } #source { background-color: #FFFFFF; color: #000000; border-right: 1px solid #A2B7C5; border-left: 1px solid #A2B7C5; border-top: 1px solid #A2B7C5; border-bottom: 1px solid #A2B7C5; margin-right: 7px; margin-left: 7px; margin-top: 1em; } #source pre { margin-right: 7px; margin-left: 7px; } a:link, #breadcrumbs a:visited, #navcolumn a:visited, .app a:visited, .tasknav a:visited { color: #1F354D; } a:active, a:hover, #leftcol a:active, #leftcol a:hover { color: #FF5A00 !important; } a:link.selfref, a:visited.selfref { color: #1F354D !important; } h3, h4 { margin-top: 1em; margin-bottom: 0; } libjibx-java-1.1.6a/docs/style/maven_ns4_only.css0000644000175000017500000000101310071714742021635 0ustar moellermoellerbody { background: #FFFFFF; color: #1F354D; } a:active, a:hover, #leftcol a:active, #leftcol a:hover { color: #FF5A00; } #leftcol a:link, #leftcol a:visited { color: #1F354D; } .a td { background: #F5F4F1; color: #686868; } .b td { background: #EEEEEE; color: #686868; } body .app th { background-color: #DDDDDD; color: #686868; } #navcolumn div strong { background: #F2F5F7; color: #555; } #banner, #banner td { background: #FFFFFF; color: #FFFFFF; } libjibx-java-1.1.6a/docs/style/ns4_only.css0000644000175000017500000000513010071714742020453 0ustar moellermoeller/* simple rules suitable for Netscape 4.x only; richer rules are in tigris.css. see */ /* colors, backgrounds, borders, link indication */ body { background: #fff; color: #000; } #leftcol a:link, #leftcol a:visited { color: blue; } a:active, a:hover, #leftcol a:active, #leftcol a:hover { color: #f30; } #login a:link, #login a:visited { color: white; text-decoration: underline; } #banner a:active, #banner a:hover { color: #f90; } #leftcol a, #breadcrumbs a { text-decoration: none; } h2 .lastchild { color: #777 } .a td { background: #ddd; } .b td { background: #efefef; } .tabs td, .tabs th { background-color: #ddd; } body .app th { background-color: #bbb; } body .tabs th { background-color: #888; color: #fff; } body .app .axial th { background-color: #ddd; color: black } .tabs td { background-color: #ddd; } .alert { color: #c00; } .confirm { color: green; } .info { color: blue; } .selection { background: #ffc; } #login { color: #fff; } #helptext th { background: #cc9; } #helptext td { background: #ffc; } .tabs a { text-decoration: none; } #navcolumn div strong { color: #555; } #banner, #banner td { background: #036; color: #fff; } body #banner #login a { color: white; } /* font and text properties, exclusive of link indication, alignment, text-indent */ body, div, p, th, td, li, dl, dd { font-family: Lucida, Arial, Helvetica, sans-serif; } code, pre { font-family: 'Andale Mono', Courier, monospace; } h2, h3, h4 { font-family: Tahoma, Verdana, Helvetica, Arial, sans-serif; } .selection { font-weight: bold } #login .username { font-weight: bold; } /* box properties (exclusive of borders), positioning, alignments, list types, text-indent */ th, td { text-align: left; vertical-align: top } .right { text-align: right; } .center { text-align: center; } body .app .axial th { text-align: right; } .app .axial td th { text-align: left; } body td .stb { margin-top: 1em; text-indent: 0; } body td .mtb { margin-top: 2em; text-indent: 0; } dd { margin-bottom: .67em; } #footer { margin: 4px } #helptext { margin-top: 1em } #helptext td div { margin: .5em } .courtesylinks { margin-top: 1em; padding-top: 1em } #navcolumn div { margin-bottom: .5em; } #navcolumn div div { margin-top: .3em } #navcolumn div div { padding-left: 1em; } #banner, #banner td { vertical-align: middle; } body.docs, body.nonav { margin: 1em } libjibx-java-1.1.6a/docs/style/print.css0000644000175000017500000000025710071714742020047 0ustar moellermoeller#banner, #footer, #leftcol, #breadcrumbs, .docs #toc, .docs .courtesylinks { display: none; } body.docs div.docs { margin: 0 !important; border: none !important } libjibx-java-1.1.6a/docs/style/tigris.css0000644000175000017500000002071310071714742020213 0ustar moellermoeller/* contains rules unsuitable for Netscape 4.x; simpler rules are in ns4_only.css. see */ /* colors, backgrounds, borders, link indication */ body { background: #fff; color: #000; } .app h3, .app h4, .app th, .tabs td, .tabs th, .functnbar { background-image: url(../images/nw_min.gif); background-repeat: no-repeat; } #navcolumn div div, body.docs #toc li li { background-image: url(../images/strich.gif); background-repeat: no-repeat; background-position: .5em .5em; } #navcolumn div div.heading { background-image: none; } .app h3, .app h4 { color: #fff; } .app h3 { background-color: #036; } .app h4 { background-color: #888; } .a td { background: #ddd; } .b td { background: #efefef; } table, th, td { border: none } .mtb { border-top: solid 1px #ddd; } div.colbar { background: #bbb; } div#banner { border-top: 1px solid #369; border-bottom: 1px solid #003; } div#helptext th { border-bottom: 1px solid #996; border-right: 1px solid #996; } div#helptext td { border-bottom: 1px solid #cc9; border-right: 1px solid #cc9; } .tabs { border-bottom: .75em #888 solid; } .tabs th, .tabs td { border-right: 1px solid #333; } .tabs td { border-bottom: 1px solid #ddd; } #navcolumn { background: #eee; border-right: 1px solid #aaa; border-bottom: 1px solid #aaa; } #breadcrumbs { border-bottom: 1px solid #aaa; background-color: #ddd; } #navcolumn, #breadcrumbs { border-top: 1px solid #fff; } #rightcol div.www, #rightcol div.help { border: 1px solid #ddd; } div#navcolumn div.focus { border-top: 1px solid #aaa; border-left: 1px solid #aaa; background-color: #fff; } body.docs div.docs { background: #fff; border-left: 1px solid #ddd; border-top: 1px solid #ddd; } body.docs { background: #eee url(../images/help_logo.gif) top right no-repeat !important; } .docs h3, .docs h4 { border-top: solid 1px #000; } #alerterrormessage { background: url(../images/icon_alert.gif) top left no-repeat !important; } .functnbar { background-color: #aaa; } .functnbar2, .functnbar3 { background: #aaa url(../images/sw_min.gif) no-repeat bottom left; } .functnbar3 { background-color: #ddd; } .functnbar, .functnbar2, .functnbar3 { color: #000; } .functnbar a, .functnbar2 a, .functnbar3 a { color: #000; text-decoration: underline; } #topmodule { background: #ddd; border-top: 1px solid #fff; border-bottom: 1px solid #aaa; border-right: 1px solid #aaa; } #topmodule #issueid { border-right: 1px solid #aaa; } a:link, #navcolumn a:visited, .app a:visited, .tasknav a:visited { color: blue; } a:active, a:hover, #leftcol a:active, #leftcol a:hover { color: #f30 !important; } #login a:link, #login a:visited { color: white; text-decoration: underline; } #banner a:active, #banner a:hover { color: #f90 !important; } #leftcol a, #breadcrumbs a { text-decoration: none; } a:link.selfref, a:visited.selfref { color: #555 !important; text-decoration: none; } h2 .lastchild { color: #777 } .tabs td, .tabs th { background-color: #ddd; } .app th { background-color: #bbb; } .tabs th { background-color: #888; color: #fff; } .axial th { background-color: #ddd; color: black } .tabs td { background-color: #ddd; } .alert { color: #c00; } .confirm { color: green; } .info { color: blue; } .selection { background: #ffc; } #login { color: #fff; } #helptext th { background: #cc9; } #helptext td { background: #ffc; } .tabs a { text-decoration: none; } #navcolumn div strong { color: #000; } #banner, #banner td { background: #036; color: #fff; } body #banner #login a { color: #fff; } /* font and text properties, exclusive of link indication, alignment, text-indent */ body, th, td, input, select, textarea, h2 small { font-family: Verdana, Helvetica, Arial, sans-serif; } code, pre { font-family: 'Andale Mono', Courier, monospace; } html body, body th, body td, textarea, h2 small, .app h3, .app h4, #rightcol h3, #bodycol pre, #bodycol code { font-size: x-small; voice-family: "\"}\""; voice-family: inherit; font-size: small } html>body, html>body th, html>body td, html>body input, html>body select, html>body textarea, html>body h2 small, html>body .app h3, html>body .app h4, html>body #rightcol h3, html>body #bodycol pre, html>body #bodycol code { font-size: small } small, div#footer td, div#login, div#helptext th, div#helptext td, div.tabs th, div.tabs td, input, select, .paginate, .functnbar, .functnbar2, .functnbar3, #breadcrumbs td, .courtesylinks, #rightcol div.help, .colbar, .tasknav, body.docs div#toc { font-size: xx-small; voice-family: "\"}\""; voice-family: inherit; font-size: x-small } html>body small, html>body div#footer td, html>body div#login, html>body div#helptext td, html>body div#helptext th, html>body div.tabs th, html>body div.tabs td, html>body input, html>body select, html>body .paginate, html>body .functnbar, html>body .functnbar2, html>body .functnbar3, html>body #breadcrumbs td, html>body .courtesylinks, html>body #rightcol div.help, html>body .colbar, html>body .tasknav, html>body.docs #toc { font-size: x-small } #bodycol h2 { font-family: Tahoma, Verdana, Helvetica, Arial, sans-serif; font-size: 1.5em; font-weight: normal; } h2 small { font-weight: bold; letter-spacing: .06em; } dt { font-weight: bold } #login .username { font-weight: bold; } h4 { font-size: 1em; } #breadcrumbs td { font-weight: bold; } .selection { font-weight: bold } /* box properties (exclusive of borders), positioning, alignments, list types, text-indent */ #bodycol h2 { margin-top: .3em; margin-bottom: .5em; } p, ul, ol, dl { margin-top: .67em; margin-bottom: .67em; } h3, h4 { margin-bottom: 0; } form { margin-top: 0; margin-bottom: 0; } #bodycol { padding-left: 12px; padding-right: 12px; width: 100%; voice-family: "\"}\""; voice-family: inherit; width: auto; } html>body #bodycol { width: auto; } .docs { line-height: 1.4; } .app h3, .app h4 { padding: 5px; margin-right: 2px; margin-left: 2px; } .h3 p, .h4 p, .h3 dt, .h4 dt { margin-right: 7px; margin-left: 7px; } .tasknav { margin-bottom: 1.33em } div.colbar { padding: 4px; margin: 2px 2px 0; } .tabs { margin-top: .67em; margin-right: 2px; margin-left: 2px; } #leftcol { padding-bottom: .5em; } #breadcrumbs td { vertical-align: middle; padding: 2px 8px; } #rightcol div.www, #rightcol div.help { padding: 0 .5em } #navcolumn { margin: -8px -8px 0 -8px; padding: 4px; } #navcolumn div { padding-left: 5px } div#navcolumn div div { margin-top: .3em; margin-bottom: .3em; } div#navcolumn div.focus { margin-top: -.1em; padding: .2em 4px; } body.docs #toc { position: absolute; top: 15px; left: 0px; width: 120px; padding: 0 20px 0 0 } body.docs #toc ul, #toc ol { margin-left: 0; padding-left: 0; } body.docs #toc li { margin-top: 7px; padding-left: 10px; list-style-type: none; } body.docs div.docs { margin: 61px 0 0 150px; padding: 1em 2em 1em 1em !important; } .docs p+p { text-indent: 5%; margin-top: -.67em } .docs h3, .docs h4 { margin-bottom: .1em; padding-top: .3em; } #alerterrormessage { padding-left: 100px; } .functnbar, .functnbar2, .functnbar3 { padding: 5px; margin: .67em 2px; } #topmodule td { vertical-align: middle; padding: 2px 8px } body { padding: 1em; } body.composite, body.docs { margin: 0; padding: 0; } th, td { text-align: left; vertical-align: top } .right { text-align: right !important; } .center { text-align: center !important; } .tabs td, .tabs th { padding-left: 7px; padding-right: 7px; } .axial th { text-align: right; } .app .axial td th { text-align: left; } body td .stb { margin-top: 1em; text-indent: 0; } body td .mtb { margin-top: 2em; text-indent: 0; } dd { margin-bottom: .67em; } #footer { margin: 4px } #helptext { margin-top: 1em } #helptext td div { margin: .5em } .courtesylinks { margin-top: 1em; padding-top: 1em } #navcolumn div { margin-bottom: .5em; } #navcolumn div div { margin-top: .3em } #navcolumn div div { padding-left: 1em; } #banner, #banner td { vertical-align: middle; } body.docs, body.nonav { margin: 1em } libjibx-java-1.1.6a/docs/tutorial/0000755000175000017500000000000011021525466016677 5ustar moellermoellerlibjibx-java-1.1.6a/docs/tutorial/images/0000755000175000017500000000000011021525472020141 5ustar moellermoellerlibjibx-java-1.1.6a/docs/tutorial/images/advanced1.gif0000644000175000017500000014230510071716566022475 0ustar moellermoellerGIF89a<ç:::‚’V®V~Â~žÒžþ¶Þ¶>ž>::þŠÎêÎffþJ¦Jj¶jŽ’’þRªRâòâfffŽÆŽz¾zRRR***ŽVªV®®þrrr–Ê–®Ö®’’’òòò®®®ÂÂþþÆâÆòöò†††šÎ𢢢²Ú²žÎžÒÒþVVþFFF¶Ú¶vvþþòúòÎæÎÖêÖªÂªŠ¶ŠVVV~~~ÒÒÒÞîÞÞÞþÆÆÆ222JJþöúöÖÞÖZZZ..þ–––––þ*–*úþú~~þêêþÒæÒºÚºššþJJJ ÊÊÊâêâBBB&&&޾ަ¦¦²²þ^^^zzzžžžŽŽŽnnn¦¦þ‚‚þ6š6ÆÆþBBþ&&þæòæâîâ¾¾þ††þZZþÞâÞþž¶ž † jjþÖÖÖNNN’¾’>>>666ââþ¢ª¢ÎÎÎb²b...ººº"""®²®‚‚‚òòþšššÚÚþn¶nbbbŠŠŠNNþvvvjjjÎÎþêòê þ66þžžþ^^þººþŠŠþþB¢Bþþþ†Â†nnþºÞºúúú¢¢ú¾Þ¾¢Ò¢¦Ò¦ööþ2š2ÖÚÖ¾¾¾ÚîÚææþv¶vîîþ6ž6ÊæÊ¦Ö¦ÖÖþFFþîî¾¾â¾""þ>>þîòîÊÊþ"’"22þ†Æ†**þ¢¢þŽÊ޶¶þþRRþF¢FªªþþbbþŽŽþZ®ZnºnrrþÖæÖ&’&ª¶ªÊÊöúúþ^®^zzþ.–.ŠN¦N~®~‚ŽŽ¶ÂÂÂf²f~¾~†F¦F>¢>&–&ŽÚæÚ^²^.š.ŠÖÖêv¾vf¶fNªNââú†êöê:ž:ææö‚‚¶¶¶æææööö’Ê’®Ú®–Ζæê榪¦ÞÞÞrºrîöîÚêÚâââÂâŠƊÊâÊvºvÒêÒ²²²ÂÞÂÚÚÚªÖªêêꪪªŠºŠ¾¾ÂÂÂÆêêîÿÿÿÿÿÿÿÿÿ,<þ! H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cÊœI³¦Í›8sêÜɳ§ÏŸ@ƒ J´¨Ñ£H“*]Ê´©S‰”ÒIM'N`ˆª Ãmt•bT©âB,¬wå…–° ÛQ‚¤V Ú§pãÊÛ €»¤€D$Nþúø¨/'Pºñq"\" óô€$Y t3kÞ̹f÷îAÒ8± ûø0mªa:N逾7OžÄŸ,³:.¡©µºšêݹ¸ñãÈ7BÉ#p\€@æm wEË °¹Vxñ"ƒ_­Âþ ±ŽÝêöNV”=Ð7{l¯@'Ý q^PÚ2R‡=…¼PAk8Ñø½ H"@’N¸qÇ@nhQVÄ%§á†ÒõX2Eb€‘G 'øÀ…i…à‘à ¬FÄj}1þv8!HZŒSH/ØáÃ=H›ëôâŒOÜÎ {œÅÍб—ån0P’Ó‘EåŸÓq4$÷ *ç}ôAâœàzÐ$NÂÍ'`•Bb° N¢'´Ã–{ˆ°»iœœ H= "<$UàÖøôÔWß"@‡¦Qr¬õà‡/¾IX4 Û㧯þúì·ïþûðÇ/ÿüô×oÿýøç¯ÿøé\aíæXJÈÜÐ JìatûK 54Ž{¸Á ÃiNæ‰ ‹í`ÁÜL…ÑõÆ{‡C€ššð„G鈀ƒtwÐpH´á 'èÙÍz <€?þ8ÀÀ^z€¢÷ D!â„- v(Œ¢wB‡Íc8`ì …t„R¨à2°@œ`ÀA8¸Ðtˆ [¹¤Üáv˜@0Ž*ØA”›¢ ù’Ø!åzOr0qPâ a„Äæ64N°`B“$æ6T!hƒ2 Ô –, !WÉJ”Ô£>¨%ÙFRBpH&§P…yøÉx˜Û=6ɤ “mè$ aÕáy­Œ¦4?B‰eÀ!Y¬ÕÒ‘)¬ ,À@Œ „qøÀ/x‚8±(ééU<‡ è€RþA†¦ÉÏ~bäõ C8ñÉ{„ãwá ÃîàÅ?é€ eèAçq(Ì£t¸(!âP8HAò§HGJ“qT8ÀƒšHÊÒ–ºd:X†#]JÓš¦$ßSÉ8ZƒÓ–œ†!MHLÔŠ„`@%ÈQQrÔÓØô©¹Ç Ô’¼ R˜KQˆp(i!9ÀA¤GS4Rè:”‹$m˜ê„U‘¦£<¥qL•B+U1…XLÑ,$†U¹G†ÄÁØ6§53%]UË•Ê D±Aêáƒì\q޼Jîñ'‚uˆk WôjÔŒC"Dþ§z0æäµU A@Å•Èþ5²|-*$L¡ øàµSpC=° …á¼–8Œ]  UÓÀÖ-•E %7ÜÀ† ï"t›ÓºÒVíÀ DViש¢Çpø`;H‡ ¤‡þhv pÐ$öK d R¨)Ñ7Ì—Ø‚€ 1T ¸Á t¸ caÛ„  ŠD„œˆÒÄÜ€l,ÀA(±_)"rƒض7¼ NXˆCY®Ê‰e„ û¬ >‡þÐ!åÊ‚1…ý¼@ š ÇŠ1оn˜"¨G:ê$ì°NÈÂþ2âsg=Hg[uøJ¡â@!¤Ð³{ÁÇ{hƒ|P8\áU8‚8‚»æä8ú`‡+´£S‚p@×,´£€H¡…@àá3Bˆ§ ı ìEOX8ÁÄA@PG•JmS€ eƧðp…8¤¾âØB¾•f'j 9à´®p@A€V¤`Š ¤ã>>jí>x²Ò›vÂðP"° ¦pÞ[݃T»N'ÀÌ“-U…€²@ Ëà‚ –¡)Ò˜¢õ˜Yìðh ¤\ÈCAô€ 'XFî@À…-ˆ ȯþò ßLû v„‚² ò hA ŽýkÁÇHO± >Bbêa$'ä`nY€žP…Q¶£”Õ®·Ò§!æÉb‹rðSHJ³‡ŸXB ^@<ÂS€CzN5ƒÁi¶!amHœ€€Øâêyà=¥ƒ#;ò<ø Ù»%–š 7"„„ ,ÀÁ 80ˆ)|N x¯­Ù…$ï%´1$l,a Gëús4B",èTÀp, Bík(\9ÁP´9 Óq‚(é ç{è@±À‰Pk¡¶ `'þq< ”h Úœ,:pâ kë3¯žu-Ä¡ Æ,ó¤@ˆ¿ B/ò2 PþÛ³ ¶‘L‚}`“ø Ð ¦pZ¦@O°Û#ZÀ)x=° ¿QÇÅÒ$tTËÁ Ûe…° x :_„â°EÇ})à{PTO†dC5_m`$mƒÀŠ&p¤õnëF°gø`cž´ œÐí0¦cDnÐÊ7HËà;²nÐMÀÄRðóRw d0í8ðq€{YpÜׇD`à¶rÐNðþxvU€éàKi5ƒP\ V}Àj >Puì 9i”#‡w€V%>0‰\ 'w FP|¬ãà†Vst¦à€N>pŠ8tåQ)Å… 16€€‹B øv Œq`uc)nN) S øœ€F€‹xƒŸS÷€UÐ…«¡1T]q=@Zâ®Vzí„­áeâaAZ¦O YÀ[—[%ó¸aCõZkqw0&T=0õàŽ=\¤Óˆ2é@g¦¡épa!X¹eQõÐ@ŒU‘ 1m0þtð€†8¦pmŒÕ@=нq^ä’~ ETP¯F&PЦ€gnAT “C¹aÂÅZìHR”€(øÂPÀE†v•dY–‘Lf™–jir Á¤À† †à– ¤@† 6á †ÀáJ°|ÐA—|@ ž°–ŒÙ™ÐI€µÀà `ð‹À—‘ ƒ9J ™á½0~ <`` ±@ 0M°º á M ›P ªp ?JÀ à–¤ — y¹˜œA q <À pšÇI YÃYœ€þiÈ yiœ<  Ð±`Á À ©Àlr—ЩàÅ)E |pš¤šJ°˜á C`! ½Æ Jàœ  Â@ x¹  zï韉¹ áÊ y)š šÙ û i`š E0 ‘˜ðé¡àœ þ‰  €¢.ªv©¢0©@ a°Ð À›½É> `aPg ª ?Àƒàªà ³ a  0îÁE®Ðkg < ºÜê´Œ0 ¹ ¿C ÂÐÛN›æÇÉ©páÂp Ä0ð¸Nç| Eà«ùë‹Ðæ¦è¢› 'z^À—Ú à‹™èƒI Þ\ñ}œ¹@þ z bP —Nî,?º rÀ“,…úl \¿-P¬g€ ï°àê°.³ ¬› ±ÐJ JÍP‹¢¿ži°³ ÄÐ P«¹?ÐíÉÀñIÁø{Æ>Üa¹É²Ž¹-ßöÁå1Ð ¸ À¤páV€Ç€)¸P.€ J tM@—apn)Ê’Ð-À ÜŒ ¸A¹`Œ`–|À™hJ ³p ©Xßrp˜-âí).P ™÷PžÐ º«h]Ù, €§n¿û! ¹²?ž ÀàÚgðg€º†°³’ð¶þ>§gàŒpƒ0™~ ÀØV} ß:³@ Ì,í|`¤kÒŠ ઌ@ØÁσPµP < ý™ .pø=e0‘ $9]@ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäÈ*ñäÐdIˆ+#òñ$!(O “ãR!Ÿ„rl.Ìu‹äP¢EEšTéR¦M>…šêTªU­^ÅšUëV®]½~VìX²eö¸r…$J'î1Ô"è„Â;'Ú)—åÎ2AE{G„NÂ{‚(™EœXñbÆEÓ¹{ѹ ·e\»)mâþÛ@!}ŠóAd¢'ì@±.¡ +m߯ñ½„ …;qBG»=\´Üá}‚SŸ*œúöé ©]Š‚tdáÒᎸy) HÑî‘e'ßÑR%ÄÂvD€ØžåD‡È=úô7Ð=Â6 NX+¡ ™gž@î!bž*´¸ ŠûîNALÇ¿ÆðB ã„@ðîŽ@Ú¹ „t -°xK7_„1F£ÆéAŠ+t * $8ž°ã@ÈÃ28á HQRpÀç…0îè H^ 'òà"ƒB´`A‹8:Àð,)À S@ €ÁÂaþá'œÈo?¶X â"Ð-îY’qîÉ'è <öpã…vD`Áˆ ðG8ð±£"êd‹yðÚ d=S"¤é®Ÿ4e¤µV[oeèŠ<.„¤@Ø£2G—ˆ;p€¤Šp”\&H°p¶W:ÚÀ#‹@ˆl!¹ƒ |êɇNpt"m°Ò…Ä:áâHúí7#*+ Š*ö½cÖ⨠|p*ˆ’B¡äŽz0`4…t¨m<ð ð÷ÄÎ'jõd“O¾ ¤g3A„`Áqè”—-¶h™'BX’-vþæôóaœ´t”HÒÉÀ,°a=…z!váäi» ѳ.ê áO !û„UŠ#H„ðAЬ±ØºƒD„â$;jáâŒ7î’qÔù7œPeÅgü«*ì "'2…c:Á¡ƒezx@ˆs©BŠ<ÚXVˆyˆÈBœâÀ""¨ ƒ ê!(¡$)NGº§ ?žˆz@È.t¨ äÒÀ‰+þL§ëu ¡8àH!TÙBy:&¶C])ˆÀ'ÌâÁ –qãÄOŒ#¿ß¦Èá÷Æ÷ç¿§ÄÁGrp…@¨K WÀBþñ4ÓÜã¨zU B6"(D P,"‚DxL¤-!`@ g³!…µÀéiCA Ü€Ú­"àÚ"8´‡ÄÁØÃª 4CO©Ðw\›RÖÓ‡@`óÀ>@ˆC…\Á;9ÓŸÿ´¸E.eÙc‹C:–ªìŒ Gà&b(‡œ±!õÀC¤V¬/Š1!j\ˆ4ÓE>öÑ|È=æAÅ¢Ô‡Dd"¹HF6Ò‘IÁ„@,¨¤ õ(Dˆ‚Éòì¡!=ˆÃ œÆÁe 8¨GB  |,D9€B Î5: „0 BÆQT>Ò—¿ôÈéþ6LºÕCy+[ÌØÃ”q˜ qã@N:d f¸ˆ Q™b5!g¤Û= Q³6ØáBPCœð† LÝÚP…²ˆ+(õ`wð¡6B¤s„¨@Í¢…-A¦ÙhGép…,‚Z8Œ Aˆ,Ôl98—K… :TÀð„ÐÒ¡BB§„ÈÏJŽtìÁLAÃ,Ta!÷¨N…,ªfR „l A‡BÓ^йb=ÀÃ<Ò†T¶Wv#eíHqœ ZXЩzhTža­wš@gÅi_U°BšÜlµã=á˜rŸ¤P!ùàû G8p°mÜv O¬MÑ-B¢Y^¨™¶²â”‚þ »Ï9˜HŸÿÌ™¡ý‡ÝU¸‹€Êõøà Uà¶¥¢ƒMAfÿ½-¦ßÊì‹qmw›«k­†t°X"‚2=kŽ/ 3ä0`9‘ÿX ó8檠3q—SˆÃŽ9,pîs\,\û¸'à ›Ž{ýg¼ƒá7P"Ïq`Y;pð€BäGA7l82óB¤ÀNÀƒX!‚Ĭ ã¨KÌRPM®·{ðà8¤`%¿ F?ºBR‡iºª yÐutà¶=¼e ,Ä®0)+¥ø ’Wr8dšÕDsÇ5È˜èø %ðq|pþ ø@}8©…ÓÆSXèÃ,r‡o¡>£§=êuÀ‰vàcUwÈÂ!é¯ÎC‚˜åáûÛ£¾—œØƒðCðB€à\t@]/b Ôãcêþð©oP’.Nà„,j²'‹ƒ6¼Œ6B@NVsƒ½°ž´H !˜‚v0Üqºá.È‚:²17zI=|µ)LÊâ„ÕLô|€ÏsžJ‹†Bˆ@`tÀ@Jþ™ûŒƒqXfÁ{JS*º‡-˜‚ª4Ð1µ•/ ‘¹‚qè5q€p©€à„ø•M‡¹Ã€+Sˆ NÀ›, •t‚)è¹*xQ|PƒÙËB;à‚+€œqUC.± 1‚V‚|ø±¦Z†+˜<(„t0Q*„,¸#!#0Šü³†€‚8¸ дVJ-;pƒõ˜8hÀºÉ‚ M25VÑCÁ©‡©‡;h\¼‡zH‡th‡qH‡ ]VHÀ( ¾g5…z¨‡på=q]VqzÀv˜|€Qˆ¸ÚÓt5×i‡!­0BxшþˆÖtÈÖé×t3Ä万i•ÖÍàq :~å„*ÐSðWqÝCX†££´=ÛR7°§=ÖÙ;’ËLMŒeà‚Š*ËeÙ–uÙ—…ÙÓÐyŠ{h5­Ã°YœmqÐÐü „b-–6híÓÖ6¨CJ×g ¥¥£Mט•ZÄèP¹¦Èk5†pÀ4jˆ=€ƒJàqƒ¶Á‚ßÀ7"‘HÙœ±ƒ%D:ˆ.âÚˆb#†@‘š+HЂ€™Ú¿­ Sq p]¦dTSéÐ>SÈEm½‹z ¦UZé´Üè.†ÎtðyQZÉå–ëDÄ…þ€ÈèH‡8¨Á„¸HS Z(€Ûv@¡-O˪@ÄуyØ’yVûƒüDiE…k¿u €“BËjµyx\À¥Þ¢AðM"H)èƒmƒ8Èò-Àƒµ9߸'‚Bð—ÜÉ€0¸qضy¼ƒ p‚ ÁÙÕU^ ýÙv Jè’\'8>;x‚ €ƒT*¡yì@€A‡@`Û@¸»+à… ‚)`¸.á‚ÃØÝÃØÔ– ݇½ÒгÄ68—Ô‚X%.0„ÂÃ>È€<(´û!8àJ°HqEˆþ€ƒ*ÈÙê¥bÊáÊ0…žÛ„äœgÉ‚< ƒp„«%‚¼I®HŠ6P-„H‡;i‡ð|ȸŒÛAn„=¸/öA°ÈKÕk[†zŸ;Muˆ{x;NŒvðNú•‚tÀ‚ 8Ü•N;Ø‚vH›"Üã-8#8è B›WßûA„,XÔ¨©«œ…H‡'u¨ñ|Ï*æŽ #ÈWÄA¨€,Èø±£6"S’éYÌÖåš%-©;ø1*+TăK'à„),2 3‚¡¹Ñ…„ 0ÓmgË«e@þÍ|î3pžIñ\LŠ7ræÎ*Èpƒ»(ÞùÜ2SY…ó@K p£ HHmÕ‚YæŽö¥]™´4;Ò¨zñV:à"‡fBȃq ‚< ªe`Tmq²Ь¡$QNM¶¥dNÐ=0ê=0Z€Ú•É€{è.0qÑ>¥Aå6 @(XdˆièHé¤Ûu8XËe`C0½‡Ñ<„¼ØŒI„¨ 'ïpƒ ˜Yáá„ÿ¸ x‚,h,;J¾É©é·u‚ÍòèÆÖˆ ‚{Sn‡``ª[ºDÝN`@pƒ€¿þ@ à'Œ§+à‚7k-p~áÀ'À‡)¨‡»i…à„ø}[m•U3Ë~aµÑK¹q(.€°„ˆš|h„„²FÙ>€)³6®‘'<ØBˆp‚x8*#˜‚Â~qy€¹0.À.H˜;¨ÍŽ©€\¢„=ð=ÇÆo’˜Þ{š¼ˆ•ˆdkÁ›q8ÀÇ ºÿîˆz`Ñ„ðˆ°œxú\<@Ú6‚Ïï çðˆhƒýîðñ'ñ8ãpÐ𥨇ásV"¤fà™‡{X†GˆÑ‚1£ñȶÖåO‡áã„Ú³_–NïùÁêWþò¥xi~› ,Hè㘇óeÈ€eEìÛtØ%ß`Å{‚ì¡<' ¾=ˆƒ Å… pd­ÓòßD €Â%ÇóŒxŒe¨eq¨å¶ÄÄ…CS : $JH‡f:héUt+­áÅ(xÜ>XÔ¨e>_†Áʹ` ´&Ú·ê27ÈD„07À›õó,¨Á3DM€Éå„<ͼˆƒz0ë·ÒtGä„,(ˈVìÑòÁ€? ‡¢‚ÛÉóeð@„~Ô™e)¨·9òu*%Á%‡Pšî,º‚NT.­vSc;°”8ˆWÝ(Ђw×8éþ˜—)ø1'hnSYÀVµ»Èů3p>;ÈÊtjƒ)À;Ð`HÀçK{€ì¶Ixׂ^•ȘG;ȃ,à„rÉO(ȃ~€Vº‹d .•N¦{qfgyiÕ¿æíö™çˆÐgæ%I­yP¯;ÏâPsJÀ,-ˆ¶B°‰l8ÉN耦?­©ÁÓ6È®NØƒÊÆ™‡¨ü‡/‡# ‡âP|OS¨€ítz ENPéˆ'Àq„ÞEˆ/¤²C<œly%'<€*m%Tó‡ +0öŽ"(g  Cú>îP(;|m4Έ’1îF›þð|ÈExYѪ7 Þ;°ŸOÕ€_7 }´j¼ƒÏ¤œlÝpã}€oè…r] K ûûãg ,ðIôu‡ê¨Hq¨.ߟ‚'øâ,°ØbíÐèÜÒxå*¨²i{qÀ€èZñtÈvK…ÐOÛ;zu…ÀøyU†hƒÀs '8ÚAÚÃ%E=NíêÐFœ”8}2H©—%KŠ!qä@,WLépâ†à“ËžêØQK qÅÙÃÉ%Μ:wòìéó'РB‡-jô(Ò¤J—2mêô)NJËZö€ÓÒ8à`!þ"D †t0ÄÁ'Ë8"¤8 ‡³ƒNn¤Ì˺‡“>89i'NÈÚ+âzŠ€ó‰¿8ààH @Í ¦zÞëàäE…6œp¼x¨©k1ô¸‚qqpzQÏg!8nœœØ|9Ž'ງS\œ T™ õ8òäÊ—3oîü9ôèŒï¤Î1D»@­ë'üh=[¾'5ÕŽ’Î2•¦{R<Ç>[ÐK¯oÿ>þüú÷óïß¼GZø÷œ°|*¸ ƒ :ø „J8!…Zx!†õÝmä×÷ôá¡KË„x!f¡Cy:öÓ=+†SSDÔGþGQ‚O8t€@NËÈ<„Âz8¥.Í‚v.™’œäˆ“éÕí¤ÐƒKမ!™eš™Ô2Zòâ}XÄE7¹Ô}µ‡=dpÇOâd‘`)¸aPtd0Wè$Ÿµ‘w.‰ãC“ZpñÚN"¸¥“)œ EQJÊÅYä@ISD ‰xìá>lÚQvàˆ9‰HGMÔƒ4rTOtœy,²š"Òá#tôèÕs«D@’‚¶Ô#BZât•L²:-íP‹›.ÓǦŒÓA ›‘ÜŽì,¢„DiÊÁÕB2é«9‘EJy'òAÒtÁ'©ø@ ɆQg E øP"áÈé"'$X$&ÎÉ:þ8ƒ:¼€Á2p<à/ó8‚hY Žeñ$…^Ï\a‡¸mñ„xØqZ\ñD8d`„vˆÓ{ØAH8C¹ %ÚMFìxL!þx€”¬U =¸ñ@\` CêLQÏ8Úù–SStPÈá–OÇvREv4¹¡t€‡ShqŒwªÉŒ=8DP¼)< {ÈÂôì€ùà €` ˆ°…<ÜyðA¸°ŒÜay¸ž€^U!xqÌd’—øpƒ)D€ó¹!'`ȉ{°À3¨ÂŒ‡…qøf2ÑÂ3ˆvppÈDÀ,°` ËÀ
`09ÉdΉvÄE ð!Ô¹9ÒQ:W¨“L–Á‚p¤@QpÛ‚C¼…­•¼-‰°`„+uþSÈX ± "tœ@'´Á¦ð´‹ü 'DÀC:ðÁ…;Ôé1tšÄ… Tà¦`ß  …¢[< â ˆ&q›‚%®ÐHxlexÀ€à`J„ƒ”r ÜaIHÀAIH´-#ô 8ËÍMªˆ6ÌóxÀMŒp“àà:Ò´XD˜΋Ÿœp2+!öÁ¦€Þ<ðu‘p‰#áx€8aUö ˆ‡X0êÝcŒxœ9r„è@GˆÅcÕ±¥.UÎ2ÜàNüÍ€·5Î1+ ÁHWñt þúlä#AS° ¹$^P…è vèÀŽ¢UœñÁC=æÁVÚ tHY!‘ZJáì«äâÊRžÜC(â88Á€,€@”ð÷6.À«D¸Ç ¸j'—Œ#W Bp&›orá¨à':!¡Ê„pá" !qÑ!ú` qÝIs+5Š€Ÿóx‚¶Ð úàU9`Á=ÚpÄŸõG8™‡ÚÐ.P‰ƒ¶•9êA/ÁĪH¶2l¤Ùƒ¨^ªÝí*…}˜‚Ð&S|q€œG=ÂÁ…Ôã‹BÒŽ<‚\{É#;p(~U²þp „¦ú—)€ÀDéX‚—Á"Ì ÂSœ<`á‹U¨€Ú!ÓvàU@ÜN8ñ‚eT T:xfø”µ^…¬,èA§â…ƒQBæÄQ9Búæ v  @p‚,#… ù ±Wô°ó ]ªÂ²´Ã¨@++`!›b x¸˜(ÓYM cžÇ=LÁ'àcºƒ2à TÔ³1‚uÐPH„ã }( Ò±ÅvB„°Ã<P¯²rƒˆ`¢ìr¤‚ |@SîrºÓG‡cê±¾Ní€Aâj zìA©Æ$8q'bþÄz [P¶[˜ °…ÁØÕ ¨íI€˜,#«Uè@KêÑ@TáæÕõxJã„+Œ‰'õPã<"„-hiSð8ŠWN„à&¹´OƒÄˆ…¸Â‹ä½‚Å•A\³*ì+à€O^IA^¥ƒBáJDÀKÓpuœô8S_þûÙÙÎ× Ó½îã#¦îC Nd$ïv_Š•æê”Uý½ð†?<â¯øÅï‡(UŠÄøÉS¾ò–ßI!Ê–"T(V¿<èC/z3…ÇŒC:î@ˆ,B óÀZ *L‡@¤€„HÇ>U™ Iò"¨@ q t©„¨€ÄG¯üå3ŸA5Æð<ÐC ä˜Rh î°:øàtº2ˆ€.b N¨‡ ààP¸yhÇVˆÀHuÀ‚Hmóó¯ÿý+‡\pMG̃øF=ØÁÀAÀ\2½OÑ8t‘8A`ĨŸ$åÒl„ÜÄ8lTçñ þ–  *…\ŒØt¼À¦ »åËM'Œ¸ tÀ¬Màœ‡¢q„£ÑA’£ÁÁ«Éá 6¡‰RÑ>`}ÀÉ ¸A«pÐàÀ\äÀ`º8–äöqPà€€ŸH¬Ýæ¡æ_Ôà \“TÜÁYé¸^ xá¸ÝÁ8ÂÿÄFdA{eA¸áHAŸ0Ý~"(2ˆE¬xÓù@ Å=oà×…",Æbèá!N܃ˆ %´ÁÀE;ÌC8ÔÃçÉ¢0#1£1ãþ…€ÌŠ}hÁþ ÐøÜS”ÄT@!üD…°$ÅTÀ%A B!AŽžÌÁ2!£:>Î=d$}ŒƒqÈqL†z‰8xGØ#˜‚?‚òtDÔã;äuXÄA­ÐT@vu˜BCR‚?:d” à Oø£DBQdGÈ£¨ˆ¤N0\ªè€  ¼† í# D:äz˜‚Ô N,ƒD›'®#OVÀÁà@T@ ØIÌE!´Aà€íÁ`’L‰Ã Hü@HA¼€)öt%¼X¯ìÁeÂ2HA«¥\‚@hÉß„dAAº…%&Åþš¼€ „ X˜¶pF\l [P"å °›$”N´A-I¶¤ÃGæPgôŠ8¸Á ¸‹Tæe²È[¢G8„ƒ)hI<ßqPp†TA!HA8ˆlfA°E8@Á `pRhÆHµ0\ëô$pFÈ8àC`@=Ôà€´F˜¤€<@àÀ‹4„´ƒ^9†£Ùˆƒ¸ÓðœK€À(ÎìÜ_¬\Ò °ø@:à@†U€ŒM}âÁÜu⌕.ÚBåÔÁ0Š%5„ÄAô‚OÜCl$ˆÀ5¦C|¥8H.ÃpA;þ`˜tˆV˜#Ù§Ü—Ž=Á ŒgkÝÁáÃÔ|¡ü ÔÌ$‚|h:<ôÁ0’KÂ,%Hpi´ÁG±H=ÔÖ $`…ÎÆT¨¤ƒ¸â R‚ú’Oå ¡·dÀÍa@NA*•UΆ%I€eÁ3NH¼ÉÔé”ƒÊ ÜÓpJÝ1…€8Ð àUU’ Á ABøÒNT€‰ Bd~å8œÀ LÏp²ÀA¨xjêÕ)»á„äœÀÆÙPp¶¤ÀJ™Â=hQr¦ƒLA¬i”´Dhu¦#’«ìhTA'‘åt€þ8°@ tf@:,¥@JõT!m !AÂLq–iRÅAxd,=%!¼>pR¸Áp³ ¼ àaX¥ hp'h  6Jš¸ÚäâôÁ¢ÆÁWö+m#¥f($lÔ$À8TA¨IìHÅú)½ÀkøÝÊpG¤¾Æeq„ô‘nA·>¬¯¾â‘!£°Ö¬}\!àÁ怑¡€D§4• 2 •I™ž€ QäA´ƒøHžKÚ2ÄÁš@LdX¦€øÀ{ýfNé])Š,glµAÀ‹L„ødþ§a¸´ÃÀ2üÕO`Û+9¤JAÔÉÄAùÉ@ àgO„€€:ŸÜƒgh'ØAtÀ M>,HAf<Á´¡¢¸%`!$ŸÍ¾î~˜B=è€8¤xæ zé€ì hhvT©¤%´ƒîêÀqÒ®.¶Ã¥äA·9ŠÄÄÐAîÒí¦Cìb=P,0ö„š€À<ØãÓ¼ž)Xoô‘2ât¸ë=dïÄèîO„ÀøÖà> h d=¤Ë Z"z´C\öÍæ¢LÌ>ZÉ‚§õjÇþBLˆCmÊ£<„ñê ìV°„P <Ú U=þÅÄi¼t¼ÀåX° Ÿðsˆ ¯0 ë%ȃ(ÈG ÁÅ:ì Ï€ GÁtC 198Ã|«@+8$€($À$üÄ+NDû¨Ã7¾Ã7äK{æ¼®wÄêópÔê 1;ˆÂ;Ô;N (Ѐ¯CîwB7¬'»„;Ã7¿#Áêëp<ˆ‚;DÃ,Á”À|½N²sÌsD†×€?zßsDÌçº kPC‚=´ÃãÄ$€=4ƒ6Ì0qw@À0¤1ššA²áŒ#ë ÎØåa†,‚1fÔ¸þ‘cGA†9’dI“'Q¦T¹’eËŒ“Ô'`Ò0übbë—·‚5PEÁÎD7Hd ‘[sd¦­’k5ÉÖ‚5­ tó&ÕÚ0$4iÊiÆn:]pVBÞ0hÌÖ¶à,ž<ÖThµ€Y´I¢90öÇ`5Ш•ÐJƒ%¬9p¶Èo4!ñ6¬ÙšxxÙàŽã…Ìíµ@2 f¤ýZ`/bL~EhµæÂÁg6`´W¬ÓQƒ_5®Ót$&—lЀ Ec ¡ºmØðÈX k`H–÷ 8HÕHkEáƒP{@(@ša/ÌZù„ôA@þ|HݾH迯.‚ä’ ²àsŒrÉÁ!ŒP )¬ÐÂfˆé˜Öù%yxcj„DfPÌF<ÐÀ’f4Y“év˜ŒbvÙÁ¨:¼¡š#â³à³¥ Jþˆ‡Q"ˆ'p,`ÒÉH °‚/,H AŒâYr:à—ud‰@”¤“r Iæ‚’ùÀ– f€àˆŠyä ñæ˜GÀJH†4hHHà¹à˜cê,&’_†±Å ºäJ Iàv¾G vù€6HjÀ2${Ö¨V(fw0ëÆàÙJXè ž,ˆ:B)Á–G ²…šŸŠÁ}—¢¯Ö$ë\Q€Õ™: rÀiHâñ@¨›< ä¡'Ç?~9$rºIÆž lië xJ€N6S‡Ù ösÝ‘ $c  &vÑ¿:`Ijà8i,0 ×imà†;6°ƒxh à0 .‘\Bøƒ0 m¸£L˜ iyX#+HÆ%€5 ¬!…4Є:‰I¬ö  < #àXþ 6`Œu(Á ÖÁ€/ü¡@YÇ0b\@…¤sãáÇ7RâÅ@Û0þ ‰g­øóƬ@òoXÂÞ %&ð…n_ð†yê`Œ|áPÃ( $ÔñŒ¸ÃšF<䤫a\@Nì±E ŽDH c|‘°”jÐxØÂy…l‘”à>dÆ*õ=ꨥ葠5cŽ»À&ðLHØÊ܆á€Ô ˆ„ - ÿìàq–Pf p hh’š(†Šó‘n8ÀzÅx ðç­ Ž °™Í@¢¿àÅf0±“@x„þ#q×&hÂ…=˜±bÑ€C5"‹x gÇâä˜R•®”¥j£„¶ JÐgÇ0}4rÌíB•ÚæbúŸ fä¥&è×I(¡#3vÄ5TäÈ:†:’—BbGMÎU?’D‘ aª"!4ÖR±Ž•¬eã!.ÀŒˆšEsÆ1k„¬úÖ ÍG®uµë]ñšW½î•¯}õë_?lj>ô¡¢£CîQ…M„î"hGî±’z –!¡Ä<8¡ƒ> 4%áÐ$BЇʢdUGÚXÕ®–µ)å„ ‘Ña!=˜ÂhK2e¸Ä  û‘q࣠©þâp…Ü#Z„Ʊ‘á~¶ PGLá†>Èô ˆ,G(ênä ¸ÃÆÛZõ®—½* Ár0XhVõHAÚÀ©zpA¶mÈ$Dð_H´ã¦ÝÈ2ÄÛ‡ÏÖ£ ø=m=æÑ†ÑÒ¡ wˆ®Fðƒv` Að‘Ž>˜¢#†„)ªÐ‡p„  ÀR›‘àc¾G®›…Ó!Âá Ä°PÄ8#§íÃ2ÞË‚Ðá“íC;>S8A!1a¥[Ìà ” „SІp‚[`r=®0…e´ÁY¨‚u…>ìa´XðÁ+bJ„cÄœÀC!˜þ ‰t„‘ÕÂÒá„â¶—ÑvôF„ì„eà)¨ ðñ‚àÀé€D=X Û>< u=¦pø€È)ÄìÀ;ˆã{ÀÁæ1… <À>G … äà…0v!–A‰@"²ËÈÀˆà U q8ô=À žàƒhD„@ˆøR°C»Yˆ ° !ˆîw3b )à > Ã aT \`Á2pq„À Ê…„â€.ˆ€Æ®!ÄYJ˜â'pAà)è@`79F`DP¢ X€5^€þ˜âèîƒ,ÐáÏ/Â=B°l|?šéMgmò‚è.ƒá¨B•{B ¸û•mH݃<@"y˜³Œ"L!D$–‘,€RÀB@Þl[Ý&Â߉àéŒ` !îµ!AmHü)Xv*PzÄòqG‰8! ïî<$ M¿@ð‡2 …ë¶c ÀȰ 8à´n¨2'ò@ˆ>LA=ø;ˆ—‘q,# @Ä1š„v¸p¸@8ã†!âpA°@¸G:v~ ì¡ 0B$N{§¯Ÿý€½Ã pÐþJŒÃÂ2L‡@ô¼ë¡†ûÆáH ê* ±-#@€í@ B` AèÎ œ€t-*`æ °`Ñ0"ì`qb/® ðÛ| Ê˜ ðú 0Oó8ÏùˆàÝBïª@ J#Æ¡0¦ÀÚ–Ú@×0 º¦L¹tÎ * ú 8 @€ã2¢ ð ¶ù¦€ü˜žæ#ÄÁ–¶ÄÛº¯tÀûÄ ž ·Û/õЮ(ðà¿æLa@ :î 8 ö ±^ Úa –Az@#0šþ/@¶. ¤€tðî2 ä,î ï`é a ‹_ €ö¤<1 X ¤N# ïì@÷Ò-¦àr° ^ ¸:¢j‹ îâd‹®®ËDîÚàžÂð¡\±. #¬-ºQL9¯Nàˆˆ  Ñíú¦@œè„®-¤Àˆ@`ªí÷°"-’¬ ¡ aöà‹¯s  :À R 8òpàzO#Br!8á#÷ +@´ !µöÀ ì =" Dï þ8aÜ øÆm®@ aêT-í ¢ ¶ –¡u p %9¡ˆ@ z p‹#L ZRÀ®î î  Áò ¡ °¶ ¾ A 0`»>BlR !!ÃÔ’ÙÁ  ¢0Ö2æ0ãbÎ 0@B ’²úQ„à |D/(ò"9³3Ç*ø:¢ä8+4ABÊFBÊLF4­,#æo$J“$”Mø8åÇí° 4OS#¼LøHÂÞ0‚5ÇaqÆÁbÓ3‘39Ý« •Ó]fìïÄ¡9¥s:Mà ¨3;µs;¹ÓÊ a,UBä0 ¼L"9¢° ´ #z`þ Ä@€  `q]Ա㲠>arŽS#Bàx±2":à?»3AT¥tÀ  åî%ààêSÊÜ€95ÂÂÁ Þ#Ú¡ÌxÓ að Eâr YÂÚ– 2 XS#N€ ñ#îïžkqN;´G}TŽLaXˆÔúVâNÀ*€°R²: îN`0¤»¦2 Á¶`#@ Ò¡8n A ÄAð¡ ö–Áز@´® « !L ¦P°­@ ÂÁ´ ª  ^ ,±m ª@!² úõÓ*®Oÿ´QþE9´ zÀßLáðòGIµT×e„ ˆò ½R„àà Ôb  @ X€ºáí(à€¸À+_àXq@.,(Wñ¡ì p Ä!¨Õ !œ  |À*/-à`  ÆAÿð!úæá Á 2¦Àö@Ó쀴0` ðõz žÀ à€’ð Ö•æáŒÀ 2  .¬3° –ᜀÔT16cM"@aU‰T]Âë0Bd±bUÀ~õ-Y  í ¬9A7Û¡e bÅ; ðòX |±ð/€ÝþD€ N° <û ûp !óâ á8Á:àÜ«7/A.²€Fç¡X˜6óÀ ¢V(1ÂEKïá ®Kcá6nK¢àÀcWÕHYb¿8Ròü¯òðR‹R6V¶ ¡p q ¡gö '® –6´r òàûðÀú^ ððaæð€ Ä€þ®Ã¾µ èÀ×ê¹ö 2ôœ`ë¡kÓákq‘t‰  ó|d« ÒAH]On‰·x;ÂÚÖnÀUS"ö±î€–X¡—ÌÜ€r î(§NíbUB È7PŠ * þ p€[¸ À²` Aʤ aK3@® ç>·O ð á€ïàœ 9!îáþV !|q@ôªÀ ³àr@ n âà€!_@E5¢¤ Çá œ@.Öx]cÇ!ìV ¤ˆ`>« A`‡« è aÚ@vøï$Œæ!FÕ#ª *‰Àt ¾æ!ðR`¶`· á(á³8@à8!z`Si¯@ 8æ“ö8_C t ‹E  n8æÁ¾ê‹°€>KˆçøïöV#p`}ø…ù…‘×cŸCy#~ø‘%Ù…)þáTÕ¤ X`3'ùH:ù“ãv耰 ò@9•U9c¡`Hó€9{“Bˆ@à`-CÜ@0 ²B` „æz CAÇ ­œ 6ӡס~ 5âê&0#*·Õ " *|q2@u€MBû”õШ$~N&œk•ÙY$ÒA ˆt b©Ú!鼌YA+øÄn´ò#^s#^4Ç!ø–-ºÚq89B â@ì ²Ä.z O½ #€3ø”-øæ¢S £K7s¢+–;’Sôm>GP ; ¡‰àütx "øîa¦ =cÚ±8#:O|  þÛà ðDÀ‡—P¦–- 3º XÒÓBÀOñ :ó5IÚŸq5–Á œ¹üÍ|Ûù«9À :z%Ú`&5Dà²@Ü@«— Ôd‹Ü ÔêR@Üàm3 „ 4 ܺÖ~N!ö º¶À ® œ}/´ v¶ îÁ (ÖSá¯^ÿë_Á¤à„ K5"p ^sàÓ¶þ踶 ,Nò Òaˆ€è 3”W§€Qï³—0_@ –­RO¦Œ¹nãS@²k÷ °@0À œ éVÛ´©ôŽõæáäºE@ì@þHñ.³; h/+_àQyî´H˜®`Ê`¬õ[>U•ÊÙ$Ú€þ°Y¹`ÂÚaN‹ë>Íÿ–ÔR€ÔÚ•ªÀÄÒ ìàöàd˜&”0ÀÒA ²` X| t î‘öz1Â’­u ² <µ  fÑõè`ˆ| Ÿ „`é (Á ì ŒÀ áª2Ú $ªÀ¤É&V¹L!"ÓRÛ¸Û³ÀÍb¦[üwGA¶ €‹f1t`]§8 t` Œ ¤ŽC¿ÐJŒ„ W¹ÖKÒa :þU#t RË aæts¿A9:ÖÂ["VE ºÚ€²àä€ÁEöÁánìp(¹` bP= AÅ_@¦€^ × `S7õ>©1#ú0âªÎÒ¡à¦@Ñ ! €« ®À¬]¤kßM2À,–VØX h£õ4΢m¯/ ^`g©¯=s@ ëîÀXØËÚw#t ¥Àlëaˆ*ª¨ë.ñ 2 r`Ä{u ³40ÜÞÝá4â #La @Ö5½“OžÀ¦Y¢Íì 8î2 Ò¡ `ËTÝÁŸ@ª€Ô° þÂ!^Q#Ö.@ À/ <±î° çÄ1Üà$š0àéq€“!¡ØÕÙ•l¹vØÅBky BÒ!êÁú€´=YàÇÁ} °àfs ¤`çÙÝ1¾ ³8aç ËÌeÛ0öèàé1 þ6ÂÚ@ÓÚüÒV nP B Â±x¯«€×ö  Vâ…€è,"wQ÷Ä B’äC^’€Gk8²4 Ææ ns üü@àÁ½Õ'O}ÀÍ b ¸ à€¿ àY2€&0Ú¡Œ V»ôJs£)»²´2ûëA ʱ°ú ¶ þ-åÌ^#°ÀÂnrà „€ä ÁhoP¹ V»F¥ëì€íÛ ¶`ÿK;7€p)$¢8‚è<H!QªXñÎæA"´±>"Oìô¹XÅN!X µ{Ï89( É# MÉ£ÃH8 „Ñâ•*ÇÂ"©Ô©T«Z½Š5«Ö­\»zý 6¬Ø±d­RÚ’€te1Ž«)D¶”zT¡ÓCG½e=–Ñ _º¹Ä‰1ï^RËîõgoíÚ˜ê1’Ž> èd®ºw2Û¾}Ó9ž¬ØqŸíöª£dÙ÷ÝJ»þzéèhÎÊgª”$C1uz²©Ë@TáMJ:øêõ€k5Ý2¾p¡ðÍ+YÅ{PV›¢¥JSPèPj§ã§Û“u×kç›9ˆØ+êpžEí´E`ˆ`‚ .˜`8F0E NHa…^x P`Èa‡~â‡á€Y„ˆbŠ*®Èb‹.¾ãŠ!D”ÃahJ;íÜÈaíP"Î8ãè ‡ïsO‘I¥ÓF‰s‘Tâè˜T;JV”¤Ü£c”\}FIT\™$”n‰cšj®É&W”T8ðx!8dàч{HwÜC9€8OË81‘TPp!þ pµ“oR]áÆÉ@ <Þã„ À1Î8L±!W!tÅ8'¼§V…\qGâU”…mÞŠk®0R"Hœk)ÈœŽãø˜Ù”QÒ)XØ€… ˜Tк¥±ïAr^‘ANEDõøÀÉ–RTð¤³M …P%Nã )`€?f{¬³tLÑà HEI /˜Â %÷¤CH¦HI |B:mE!¸!H vŒSÜwTÔNÄ\Fë„­bD{‘º„æ»ØÆõl´X¸¡ÃÉÏú¹ ¼ºÞŒsÎ.Ãx„‹à8U¸Eô‘R` ŠÕ£,$ZØÉTCþˆ/Ô”Tà`G o2íÆq\ø(…R,cJ“Mš’'㈭ëBRˆÛ ˜B8AG €páľÕÓ¶vÜ…‚B‡g;‘N/8H;!°ŽÍ™ˆƒ@I/œB nq‘™Ñ,À¤Ü÷PrG;âl¬Ùáêy„@‚à/С NœðÑ@1Å2`v8‡[˜RÛZPÛç` ‚C‚¼p‡˜:¿ü]ŧâr‚AkÁÂ2óHaŠ>„pR=X°¬<"X` x@´Š"D a‡†`àDÓðPþ8¤cpâè€,f;øx1Å È †¾ñîÑvôÀ†áÐ)²ÄÅ!áÈÀè°1 Pm%pƒ摇>Üdz ' …p ¨œÈÃ2 q¤# ýƒÄC`)è p˜G S(‚©ÐAxhC8 <@â>¸¬‡8„Ã7Xh2°Œ,P‚4<®ð‚"ø`Ð’bŠ)8 )`6)¿PŠR”í€Cœ¶@§¶Âø( @°…}™P „Ä—µŒæš& L!D$fÙA)² /€Œ0…)H¡œàÄŸ"VþSèmd6¤¡Ôð‡+(&0L‡Î ‡tÄ)q B=Ü€ Pm ƒ«‚2}6´Ä*¦pÂP*B/R.˜‚¾¨°ˆc ‚8&èPMkbÓ?taì0Hda yš¤€ƒŠ`á…` zPˆ!Ò0{"‚¤‡hfà’ÙB¢4Ž,A £ì©OqF‰=ÄÉ -Ð8ò…' vP…yF\èÃQóÀ AäZÈÃ<úb.г‚ð†C „3Óöy [°i@Y/)\amÀjðň€‘q @„uÄž‡œãðþÁ”(^ÀÌ*äá|™UU8•¾¦@!w8 æá{„@a⇄І€®uí@©Ü…'Ìc9àBáX€µ*ô!ŠpC¦D Bœ `A¯Â@!{x¶`„¯Ö 6²¢ˆ¤‡yxé§ä-/Œªðá5A¦8¹xJ¤ˆH!á„Øa œ0ÂhI„v`Àà=F„ð€pØáY€PDl‡…T2w`Áœ€°J%N0é–¡€pÂ0Áø„)à`¼õÀƒþ`²‡<€'n¼lÂÛ#@]ü,¸Û8qÀB¤`„„þ{xAzeP.x–*Xp‚Œ±ÐÕàá "P²‰]<¸ánp‚8@À‚> …MfA¤@„)ÐáIŽC“Bˆ†Z$D(ªyÿ èÝáA`á„pŠÓ6‰”’ ñ–FGI;¶HfiG3ºÑ¢íÁx§ÒhMóÕÑ6Å2À4°OCcÎÑ¢1ÆhX›º ªNJ¨?ãèGSÂ:ŠÉõEÄqG_%×£›¤Çaêá4ìÒ™9v=nmNËw»K’‚¹jèlk{B˜@`·íp‹’S·¹Ï] a¨èn·»ß ïl"NÐäBq”;Þüî·¿ß-.ølþß²YDõï„+|á€Ö‰žnùe \áp%õ—Ø&‚%8J÷ðq2'[¢#ÃB}õuqáq XqS°÷Bs&Øw@S>(„ñTiÁ€b%[qB=…Ñ¥ˆàgCHË€ng…[˜3óðà[>iÇ…Wy°UX†þkØ"Pðp—|)px,)@†I‘w´%tȆqâ.؇ƒˆ"¥'}  ]¦€Wm€`Ç/‚‡(í€v€/ b,émk“_¹”€§”Jbq%P*¦˜9¡"óS@…,à^,pTÇqB`fnµÓç!“A–í@"Ș„Pi`é˜I1['qP“aA Ë 9°þ!ƒ³,Xp8p‚°FE'B€ÝÇ šOÈ BðaPfF`PP™Ì(sÈþÈø˜Á‰Dð…v ) "`.ˆq#X–IOÐ{ü˜’9P"1b»)œþH?€ ‡ ƒr.u†œwàV÷qòÛù˜é€q‚Úéž@Ewð…é"ã€ý–IýéiW°™õ©+ýâmn@ŒJ©'@Ÿ "x°eJ!àcx0€¶O z+‚ð…¢æ¥žðø"£×D€ÖW@Z¢/ŸŠ!_È_T£åeŠ>Ó˜â{€Ÿð{@ }ÑÒ-"j¤A‰!`zv,€XÀ FúF€¤ FêõP(`Z%´þN P€F ¯Ñ£Òè<œ@" ö¦æU¡ â9 Õ´ÜØ,pG”ð„P7ÕäzÔB°oW 0ÕDOà9\pœ •z©PP…À ÌRB÷©B‰uêwêmqb¡¦êSâ`ð* ", wwú#G <.¤I}•v¥Á é` \ ÎÌ꬀„@8`”³éSæTE1¤F"ˆh¬·3é`Ä8F ®EF""ãíðªÈ¨”¬Z^ø , ˆâ{>q ’‰&w)ÕZF›ÁŠ÷ðAh¥„€þ¡¸’éÀUÕs“[=¦n€;óà\pæ¥S_Î…ÐPZ2"IГ1@rJ±Ø—sxg(YGœà ˆ{R¡CnÀæ5^Ó„Šn°,s–BoB‹<ŠZGSP Bƒ9J=°ÊÕ„ðm=Ž«X€¥é¸@ó9ÊU*Y \„ âeÔº Tª,™9МC«3'Z³"í”®h—ðRª{ z RþÑFÀ§»Z3ŠŸh2C·X™±n•Æ+imZ€ó–ž’RS n` …@ŽÃ·3 ¸`tq;’3¢΃x 0"o+yð€‡Wx\ /à±q¾à1`ƒ™\ð±~KˆÉ•xðy¨ëSáð…åg!ƒö+W Ž/‹²µï‡Áv °A 90Zj÷p¥¥ô>¬à_FàY°J[Š•/Oê\`¤SЭå%T[kFSð¬Yàâ¾1ë·ø0¾• δ,s'÷`PQG}-ñË@ÓYGÞ$Þ)R@þõ`z<åG[Y=+}_^Šiƒ§ëÀ:“\Þv´R»(&u³ Æ0²áœ{jd¼œ@±zaûÈÇí@ÈŒìÈOÒZ tÉÇòƒM%Ùû€0I,³TÁÄ!ztÊ"…s1ó¿òËѬL„\¹™ýJ<«s=Ûã0–qòSÇåu¢FÀ£ÅìJ:\@(‘QË0á"ÊK<¾7÷·ª<ËE2ËY,¿oë\Ëá°w0¦ºŒ»=[Î^Q—螦Ìå5¿¤óœÀqpã LâáÉ—‘¢,¾£SIL!̓)90¡Ëhþ ï¼1”@F ÎÝ<Î) –M¡êÌË{à^qùº:‹Ï9SqrH[Ì[à™‘ƒ!åÉ!Ê[@­y†ø`Ô ¼›!p'„¬´–F0­¬>P`R-Ë´ \œBEÕ ýT ¼L,P«!ðRà°#ÝSm0°*«` [ষŒ±IAz@ò±qÝÖÑq¥^òC¢É£” àõë©ãZxä÷8°U@ 'pgøÐPAuÀZÑDÉf ?}ð…p°¯œ­"aB÷,Ú c™u|Ú­íÚ‹1Ö«ûÚ³íÚ–þ§¦MÛ¹º!'hˆÒº ÜꆰšÌÁmܨûœô…ÛÇÍÜõYÒÐ¥d!0Ã!0ªµ°_-»Ó輟‰ÕÜßM ŽHÖeÁ8ù×x8ÀcAKêèd±¸ hB ŽýOàßbáÙÚZ&Ë-îÒ.Œdb(ÜÑ…Ñ…à>dâ·@‚&Åa™(EâàÇÒZS1‘R‚Њh4à…±-màe-ðòß+cðbàþ‚p¡›ß3nc´»‰aÐnÐ=ÐNÅe¨w"〾ŒŽ£§â)ø`‘p€ˆm0á6L)l…Ý<ýR.þ öE›Z@q€:…ô;趯Á p Wm€âP‘N@:`5Sà/ˆsMãƒÎbŒæ9³¼ Öýšx¹ü8> zõàõð@hRúéyVˆuqdé|s­0â`dàš«(‚`æ‚«ç:À„@|JFa%µž¼xTé‚@ì/ZµÂš€À‡„îìV¡‘D†Û³œ‚«Ëºì±”pHè|äÿç´¦` N'= œÖ¡^läÁšSÀ~:‚dS`jv±N„@:€ ²ŽXrÌØsWàV/°’e—­·þ.wØB0ÍÏîðWÁÛÞÖ“u‘J³,mðZà8 ,ÀèØI‚NpipYã-ïB†p‰!€Ž7Y2$Ã+)@œZ° {ð?qp%íð‚0†÷9ÿÑs ©ŽHîpVåõÛ‘ø jFÛqò Ä/ˆõÏõT1ܬTèζj‘B\¦@pêj:@¦‚ˆ² Í…¿„µÖåN peÑ•°€xñ«Dæ}RN ™>7w€Øs!àF€—:—JDvðR9®&p§vÀSž}çVÚ Ó7Øþ‘`´&1¶Ï/­µ-÷ÐZç¡Pžõ-ï±^ðûõðŸ]¯øé4ê0Î QñáòØ"+0Èa ”p0Š…-l&¶–ƒ4†ßF÷àCè¬PO]j=à lþ —$Áf åó,mð#££Qlh¦(Qjw‡Ž)S÷ÔÐaÃq,^äxXÑâEŒ5ZTjãÇUAùñŽe/N@ê@ ‚p`h©Lš—Ù `¤qt`é£ç=‹÷ àè))pÂAÊ!ÅGJ 9Ùቓ;n°”$[ÖìY´iÕ®eÛÖm:.ä0Îb<þDÝîåÛ·¤-‚üZ Q¥¡'R~ ‘Ê„8SC¤ä4TåâabH|{æ’’É™I)Ñœ´¥6”Ò¸Ó)¤{m솨©M‡÷Ú]Ô‘aަ2ì™@\Ž m|졚A‡Šý!B¤8 D4ÝS¡ºÝŠ„¤Àç¤-/ €Ò‡EÓ{ÈCªgg™BƒõïçßßÿHBÀ'ƒ¹ä2â5TpABä8C•\\ñ" 0Š  Ht¥B0\p„WˆÉä ùa1Heˆ3xPå‡D$áà `‘!•Y Á <|àBˆ6ˆ##Ò™G¢)8!8ðþÈ q¤p"€BÄ™§ºí Ñ’zL á… Üp#„¸Â>HRÈã ”, (^ƒC„š Ù#(²h|ž"H*8/:®ˆ£¶+:Àô“AJ+µôR²îÑâ‰åzt/qút(T(vkQ(ç:L[ýhž^h*x€$ FH(ƒ]!)0¼ÃUÂ0„ ¥ \I„TØ$ZXiBF2É+b`¤",¦¸£<Â@s{ð¡S¤x!…ªÐ‚…qN¤‡>¸À' úÁ"{ó$„6ðxè3˜…„+¢Ã 0¸®‚2˜J'2ؼŠþDxâÓp츃>7žØ‚’ #ƒ>²rõe˜cVp-Œè4º½è˜‚‡æ©ÀÁÊ"‰# áXfWA0â¤Tã!F€¤jHnqå€0l­¬¡^àÃXØPÀ‹R$XD\`Ec‚‹°ˆCœ*ð€pV ‡‹•°°# #Ú  ò°ÃŽ8ðÁ§ ÈIz –-¤(„“ ¤hGsN¦€7à9À¨üÌ€¦,òxPÛ2˜ç¡>™ç…¦à^¦{÷ý÷µDð¡À»Ír¶k«§&.öЭ!qâˆN‡;´ð±Ô*о‚*Œø×¶¬b áyHÆÁÞåþårÍü‹ê Á”tÊÞ”Ûàohù×èÇ}÷²Ÿ?SlÁá †#ºà Cø P.8‰EXÁ ˆP$j‘ VŒ Y`Ãt‘3„Ag( H19hkž¸!|…@p…5t`]*ÐŽ¼@$mÈdè é ‚3²‡,ƒuõ„PSÂsO A^‚§!wÇ€œÀ±bI=ˆ€ø¡ç<0E žÐ,:Á ]Ê‚8ñA$„\Ȃˀ÷G@R{n˜‹$W’vÉ€ÈA¸€2Hp!v0ByÄ6 ¡D| ¨•<$zþXØã ´±p¢Fð ¦@‡K:!{ D„òÀa vàB~¢ƒ eY€"U¢•èÝ„àƒ{ô@",Ç Œ KB‚pPOÆ1-ð bC"ñZ,B ‹€„ ÂðÎÉt!®È(¼ €Rô¢ ®a, ÎT¼“fp[Xž` cÁ Á‚=,Ã]p¨G¸ª$|Ü£SˆÊT2 ÄÁ A¦à†8üĤnˆÓ˜Ñ…¸G=f‚Ìq"(´lH|ÐHpèâÀ\¡P/àæuÚ!‚¤jU{'Ž pj>eþqz” .¬‘Â…‰èEç8ˆó ß ïå&R`i…6Äã –Q:Ì{ÀÇd ùÁæñûÚá±B€þƒCL 7,ƒDÑÂBó@‡e<Õj?*æsŸýüçCáH,‰Q±e@!xªàžÀ¡ ø€˜ë)àÁ "ǦХ>D Œ‹N x2gBàÁÀÍâð´ìܬ@=dy;ø€¸ ™ z’°GÏÁ»ÜBÆñ)XÉtp—þÚ <ôá ,èƒ6áPáÞµà·PŒYø0 R°bÚ¶m_F0ÛÃXÁwVx`ENÈaÜ¢· Aä o@çÛUãP.H¦,:¼øº¨!‹ù®ëÛ6À×"í î8„[\à {I8FØ7*œ ÔL+ƒR¡‹³´`V8ƒ x; ¬pˆ'1ïȈC`ë…ïŠàt;$ gàË,ÂàŒð  H$„‘Ï.Àâ úf: ÓÁ¯‡˜Bظ_(¡…/ÈVhÁ 0ð -`¡`r%XÁe0DCXa…lYÄ?`„r‰4$!ƒ™‘@Š"`k2i_;Ëþ!‘‰Y”»!¨…CH‘0Xåˆßúäg!Aa@Â3ˆ'$h+aŒÀ ¡ ½F C Pí™™Å,<óöYd"W†`Dì=Á&Ä# ýé¿mP(!ñ`ðD ¢„AÄBVP#Œ_ú2d‚lpDÍ…Á†$€!J¨!vÝtð‡_ü”ò"JÁZ$! bp„ jnöF@¢ €…”ÕGcä|(Bü_a`!>xŒ4HXð \Ih‚”!…dû3¾.À…i%‚¶3:6ðOHƒƒ p„,AöK=8ƒyóhÁ€„ƒd9óþ13@XpP‚0(1>GˆWè‚Y¨Zƒ±s!(…‹Xp,ƒR˜1`„Y?ðŒ.Hhú“DP‚FH/€«!÷kPx Û¢„+€b?<ôI#®IÇH+àƒR„EH… 8€[ Dˆ?0[ñ@IP¹TPaX„ZpI(?0Fd,…X\H…h7‡xÄ0hÉ#.Xh¼\ "(‚NþRH‚R¸eñE\  ð:\È >8)¬a¨UxŒ"0ƒ ;`U@B/øºñ„DP·À…˜D€6@ hÛrÚ»JÈ›88DìÈJ‹P‚„ð4æ¢ùˆ{@¶8”;ø>‚ Y‹h ´HN8.L\P%01 †Eƒ?HÀÄ2ÀD>hEèÀ3¨ÜÆŠHJLƒoyE‡èè@98FP1 ÄLTôƒ! ½3h‚Ì+¿D ¶4?À1 D˜­±Ì<>pGø[@uûdÙA/8K´!C¿ƒþbXÆT …&˜ºLã3:{¼-ÈWÆ€ðƒL€…µ!g„Çh„xŒ2@„(€„pZH…o±ÈâÊ‚ À‚óHÞ JÄ6‡H‡‘¹ƒ‘é%(X»¸$Š „yH˜4Ÿy˜‡‡ ‡':ؘ;`‡qÐy¨Ђ®0…yh‡DkˆÀšÎãúÍyXJNàNïOñ”O‚¡N蹃/1…`Xrø‰J™X0D`ƒ2øÉ Ô%Xˆa9€2(e!3Кm»«™J3P‚4нE0 EÈ„ÕtG?¸E P¯”¿!Ñðþ‡(UðŒ[ÀEHƒA? r„AXø8º…!(Í+…Hœ;Âp„¢;E(ƒ4èGWIP€8€XøRhb`I\Â[p„0 @‘nkXÅ^p] …X@Ç&è PÒ<§LMÃc–èDð„(‚ ]…YEøÅ‡ £ ´Þ¬Ô¾ˆ@È€(,@7@.°¯<à™´â/8`«qÀáœiˆx‹„eˆƒ0ÙÙƒ'#`(˜!à‚±¸˜Y†;0‚+0 x8AÀƒ=`¦€Z•x.0.à„€@˜(þèžB˜-ÀÁƒ“”Tl£”\8ƒ"¨…ZX„è]h‚^èct^Ð…AèÇA€XpRˆ‘`…Z„[„`Á4a{¬PèJ/ȼ¨…¶ƒ0@EHøukˆhC݃\ÙXà’½… ›a9qª…RhÍË…ZH‚Ì3{d9ˆZ(pq Z¼€uRÐ…Z¸/XZ¥tZÈ–ã€A@´ ƒZhÈ’“€6í‚$ZO0b@Åví‚^y=ƒ0h9˜…3¨„nsˆtÝ´T¼u 'pƒ{À;«Ã‰$BïbNˆ`¯þ†ÀH˜eøNJ)x‚  „Àƒ,SÔh‡ÈS€,Xz()XºÌxˆäØØzŒ–ãÞ²Îhˆ†½9¨ÚXº¼]߯qœ°¢|Uæx7@+éqˆ=`«›ªŠh‡v¨Üi:`ãÕ/Q €±]|]ñ|!È—ü @Ûˆ6‡€ ˜ºrƒÀMÀ-0hS81a_H(ƒ$¸ŒP_äåÍL¨þ^žaJéªÎÂ@É„{à‚+à#È¥X—Óhƒ(JЄàÇ]+¸¹‡tˆ˜,®¹z ¥ˆƒ@hVâ& €Š„>X.°žt°7È‚;¸¡¸ŽzBèe” "0R\-¤ Ñ¢aAdBv7* X¨„1æ͹¸ ÀÐ+7¸ <¶’’tˆÀ9ò¨°ßpÈ7ÀÝ„„ydØpƒˆå .À€ (?jAÀ)¨€ë A°ß;ÈIƆ¸ °’,0…Bà¦-¸‡YINòeAê†Kø þø ¨r à ¬å’æå* €œ‡pÈŠöô¨{è|%™NM€»0H»ÐÐ"‚®(dƒ–+¨Ž9.qØeP•»•ëŠè' ,ÁI´Úe†q¸].,À/@ƒ#¸o$ð{Ðl`‹n…Œ-8]o]†‡‹q°ƒôpƒqèé-(ðÀ'H!°U¢¦B°ƒ*H È.ðÚ˜8Á ;åÁpªl,€*˜†5ˆ†c€K@c°€]NXéQ°w€„wà†ø‚ KÐpØopþ‡aH†Ð  ˆ„a°2ø †‡/00° HoЄ(†øp†„Ѐӆ„ h…†ˆ‡À„KÐ2H€f`‡_Èëbøp ˜c8$X7Ÿx€b°p€X˜„_Ðgøo˜t!èWg`uJØ‚3±‰N͘À‡)H˜@€If+1±6Á܇^Ã.ªœâ † hGðÏúÄ=(hۈɘgð_¨W—É=ˆ:ìZ@x4r†w€g°&X[h2hpðvhˆCø€1°kcè†þgh†:0( X1€IH†cßr€nƒx[èpˆ‹ø€¨ˆH¨ƒ5øƒ˜Hƒ €€m†ˆiv8Ù¦L€íf€„ch†Nø…bˆ‡É¦VÀ„†ð€#Èø]Øø€n 8_hho°€c@ÇÁàH`h˜6À<æ½#À‚qè"°Šâ<˜ß³ÒWrU)À¨€{°ƒ'ÐX?uªˆ{`$Š3)œÁ‡tÕˆ5Æ!P{Cü“ °ž¶¨‡ H£Ö®q8Ø‚ ö`wTØHØ€PéIø‚šnþ2 ~·‡i·„(‡ X€fÐl ðö)§€H؅؅f€U8„x[Ø xpˆwc¨°wˆhX€ÓfXé†`y€„%Ѐx`}†W 8öu Èø øhˆNP€ƒŽy2ù%`€/„Ð=¨ê/„?$ÐDÉ8¤†¶37À!°ŸjMÑŽÊ/ôjˆ@€šá‚eè;^ܪ?è È9z¨HŒH*€è£E$qqr@— BH«ìÙ£Ã!ÅpyªÔ!BóÚáÛ3¯SËrt˜©ÞN úŒ£Ô'âSþ†¸1$9¶ÜƒÄ Žy=DìÁæ=-oB*u*ÕªRÛ]yĸk,\šPÎÖ°1 48øƒÒ% % a²faï1—ŒAø ˸àLÀÕöÁÁÎ^¡pÏÖ2ņ­½—F3c&¼Ã´Àž;g_Øs¸A$$4¼úmٌ݄í‚÷åà 3(K .ôÍ.M ¢›€GóÖÌ–[Q @§j="\0, áĈ“B!Æa€²å H”ˆádê )x u`A‡… v,ˆP<‡Ó)â¦Üá†AYU "˜ ‚ 2Ø ƒ:h €8ÈþZpIr‡OœP…€8tO/ÌsECÍÇ!и±LFáÃPœ4Ѐ/ÀI xìHã@%óœ EOP%XØñ„XTmpqÂ8áR„k¨ à8,ÑLì09ààÁZ 4³\ÎlÀÌ[LÂÌØI¼µ8Ãà Éñ¨ãï@8Í&͸óN3ô\rÁÌ Ï§¤:„‰áÁ.€3=xàAXA–Ä A<ì@eI3˜Œz %0óA3Í€cÉ ò43CUËì‘ÃZT×þ팔ìCw8ÔÆ 9hÔ{´IS8haJ='<%o¹ÐAÉæĦÀ\°Á³éãTA ÎÃ!Bq8QÐAí‘!$}oËDµŒ¼‰x¨év@ò‘¼q i øÈœÎ,ƒG P-c„š÷¨$T–á`¥y/dÀÉ/ÂO;DIdUýÁ &SÓŠõMHL­µ‚¡ÄÔ”@% Ù ƒàÙCIUÛ½-ULQÇ µÝwã·Þ8%Ø‘ !T!1$p¸!â‹M:ùBEG!Tð@=óõA%S$N„@"3ÍYŠ“Ç /ÔÍÉ™ßþÄ m8$Ë…c„‚¤H‡M{ó^‚ ð¼ðÃ_¼ñÇì„}L±ÅøÀ´ÉB’œþ€à €@TB´ÁÐA:` ¼SºD:€ÐAä€8@e¸˜Â88€Ò |”À|@9X Ô@ ÀC` ¦;ÐÃïÀÀï¬Ã$x9Ï`•P‚%¨À”ƒtYÂ%D³Eß ‡UP€ LB' &¶ÙƒÀƒCL9¨%Ì^Mé¶Õ$¨µÑÊ# ¶YÂ:XB `Û$tÃpBÂpvÂ$¬Å¨%Í€dZ²Ì xÀ¡Àƒ=\ÁäíiŽÁ` g|@$\ ÐÀÔ€(¨@ tƒ ¨iî^ô9’(ȲP@7ØÃµÄçažæ:@Àcþåß{ZB9È ”C3À fA…)8ÍG¶¼À†@I†ÀwPć¶ %|hÓ•hÔ|(Û¥h*­hB´(Ô½ˆ†h¬Í‰âÎhÒŒp( H¸°äƒ(Ì8lÃ@ ŠHÝáTŒ8ŒÆ HOtLAÀ T´A<˜ ÊhN‰MÜÃç„ÎÌÈ K àCTìÁÀAØÄÉÑ=ìL•Ì€L:dÀDD=àI‘3LÅ;§CX‚¿êAíMJÁpè¤Ú €L‘\j¦âC…Ctê§B‚x*Eêì@BXÚÁÙ¨*þ«fÀ¥9DÁ*$$ЧÕ*EÜ*$XÃ8„œ€ L)'ì°:„°«Pì~kR¤0+Nê†þ¨BHß0ŒÃÂ=ô‡L]$ObŒÆp LE8tРݢÂÑ ÁÆ}ÜÖH,aADk´Úàðh 8È€Èn̆*k ¬Cp œÊº¬CÀ†žÍÌÆìáÉÙä‘´¤~¥CHj¿:Ä€ÐÂ,î@B À – PjÆêÍûhPîšÔCó¶1CXâ€Î@ %qvé@t$¬ØÌ':D$DB—éâ 8Å:ØÃ:PÀ+èbþïBB%ãZ7„Ê:<‘IE7–#!+ã$h‹-W2%¬$ §À`Á&„Î=Mø@;È8x)TÜÃÑ™!äT2-;D&o3¬€=Áµò5™ ØC7L—5Ýrƒ±ò*[³BÚ,ër([ó-ëò<{›~o&ð=¤@àÁ”$ Û œÀ=¤q‹C…†R@'´ƒŽŒG‚’Íà@>h‚:<¹íÀÙ‚5qâ|Á!Í€qaÛXC5l€ ¬€-|gÙƒ7Ã.|Ah¬À#Ø5Ô@,ÀìB;S#2ƒ$€(”À&tƒ7ð‚-üAtà ƒ-DþÂ!Á(tA-à H¶Ã8TIB¤À ¤Ì2d@;¼ƒR'µ‰Â#8€6¬Ãƒ5QÀ1Y'87„ÂÀÃ…­‘9†—;Ü—MÿlÀ„Â.ü&ljØÂÁÀÜ$ȃ7¨Ã1dƒ\½Ã<9¬BWK4Ôè€4Þà(Zñ(ÝÙ(NHÛAtÞÜÒŠ0 %t‚@@Ö@D²ºoÁH8Р%òÞ0 Ò~àŽAx˜%xØ @+Äð 9Ø‚„Z²#&ˆ“ì©c¬ (÷4cl¹ƒ7(ºtCx“4À@ Ã#h€6Á0C{35Æi‚™) ˆ@:ø©þÄðtÐ需ÈmÅܾ̒@\*§‰€¿É¿_+DÀ.ì P„ € ;D€¢BB'»C¼ƒŒ(¯Ã0HÃ/ÌJ ´‚Q!ž¢ßØì­À·'ÀEÀÂ#ävÞt:¡ÝƒœFl•»;›ä%%…¼Ë‹1K3'D4iAÜÁ±Ý=Œy;Tý„ƒ¼S¾CB!ÌêRÀßÃî³y4½o¤Ã|;hAE‹æåvõÁö@ Àp À*` x€ü0°ƒ105Ï@$´ó¨£2á8¬Å TÓ5Y<€(tÃc̱S@ÑSR7Q‹×7ÐÀ1Ôþw¦cÂ#&X‚%PÀVOì耩Óà%ØÚA;ä@Åle;ìAɈÈÒ‡:13, ,€0XÀ XÀÌŠ;ü¹5Ÿò Õ@`;Ô€1(j$üÂîa[Ä ÃP€µ÷œ ÜŒAï À ˜€ÐÃ3¶7@@7@C<<ÂbD¢*Œ> Ú¿ûë?H;|ƒ§€CT ¼€ÀÁ×2)B˜WO±Áâ¾|ZˆÚÁÐTïß!¯„Ãà>ºT¢½ë=àÀ^¶€`´»ÊÀA.…ÀW†ÃÚru¼@Á pZvC ¸Á €þøü;¤Û.´‚aƒ„€5 9²R·aŠÅë†iÃx—Š9ÛPÒ¡_Žý2A‰™³_@2 ©†³ ö¸9ùlA„IG ØúpÄÒg} bœÉ>S„p©ƒvèààÂÉ eN9e0j²Ž>wÜ„0ù*Ù¨ ÉìmH°Kƒ(H0VÒ’ñ íØàÌ[3 îæõ0À3 äý"ð($ ÇŒµzwÒ$=ñ,`vl-gÑ,ýjf Ó/w0% "¤dÕ«Y·vývlÙ³i×¶}÷m'S²øR… $"Á¹HÁg$$qqr@¢¤ “:þ¾guˆ XL²€ƒN/¦Tá„4CºzpÑ"hJºnÄ Ð.B8R¬¾2χ Ú¹ 8:€$®HA é!Žyr›BÖî1e‡CÆ  ›È(‡’ÖÙ €€‰nºA±Ä‘±ÅnJãÄ‚äa“f§†T‚Œ1L `Œu–ðe 2€\§ L¢†JXÇÈÆáD„v(q®îQ®ÚigqÈ3(“ÊÄàŽ“º!c†$gèf‡rv0éÇ(‰ |Db2ˆLˆ»#Ð=QC”ILÀS”Nj<É„T$²Qv@tÈuñ’hø€þª¬ÕTU]•ÕVssJ°È …àæ!®9'œP޹“öAh’q¼RM;î a;<ðƒL Á‡âÈÀ‡¤¤8z`‹ká¸G<Ä !MÈîÉ:Lº'€¬bœ ¤äž-]Ý—ß~ýÍ­þ˜à‚ >áÜœÀÀ|HÁˆ6Nà‚.°¨HÚñ‹-)Ù-ñ`cU×B¶dvÙg…À#SÆÁÀ‡p–YÆ”_ cc6—bœ=¦§5NÙ£Š,”3’³¸Çîè8A‡„­¾묵ޚ뮽†Ì @^Nž$Ž'ðá)X€þ!X°£ƒ6p€#î#œÂ ÕîÀ.Yƈæyb×,°SªÂãnN¤˜Â‡-LIpBŒ(„ØÕð <:˜2آǒp¨âk~g褤Õä¡AžÜÇ©çËÖtÐW5:Ò‘ä[C¢Yû=øÜ­¿û)yá»ã)éòž0ÛIG„tš?qÆsÌ*CÐA/U3…}ñÅ¡ŸØqÒ‘’{°L§Á 4qÌ#Ká“óN"Žt´OLìK‡~DP¼{¼àYÙKÕ%Žñ…:ô2¼˜@¤› ¬/À zÀ(à¡x!8Ö8„à†Sþ¹¦@7d <6à  F53¸Ìf³j‰IDb|ÃìµrRx+T@\2=è•™yœ£ @ŽÒ‰;AÂ+¨A1’1œäX$vGFHt¢dÄD+hÀšÜIR&¡@¡—C 2GõØIœ‡léG•¾T:äàTØ•Iö`‡v´Áyõh!‚¡„qÒC'ãŽ?átQLOògœdÑ; }$V¬ 5ë ïL²ƒ0!Œ+š£0!aŠ*œ¬‹Ñ”æ4eShRS{áxA¨` [!cpÇ/vñ…I(fGš°DB¼ÁŒ“`þB9ú€-6W A_˜À#€€‚bpãÞ(¡I°¡[üB@ÈÆ1¡ áÑxÄ# õ…châÀ܉+2ÁÀÇxBBþ% @6ÐbƒàB7ÞaŒK”€öxÅnÝñk¬à$ÄÄ`°†²£Ìð;†Ú püBøaÁ (;0.9ðÁ|Ðqˆ`Xhƒ|…ÂîÁY…‚)áƒ@”ŽRPÖ°,`Ð ÞFJ¬à9&ÐÔ[BbòGCj :”À@(G+â1%Qìö—€„4`?|Á£ À%àŽ ã¼H@$’1*c|  àˆæX; S°ŽIæq;8È$)ˆƒl>)Â$¦@ì´„ä ÑáÇ7†M8XPˆzÜQ–¨ì Dá TþÎiÆÞÈxæÅ8è€ $c'²‡–`’fãð&Œ% @"Õ8Y6P{æI,HãX†0¦8„Ã$“p†<ì± Ä0Æ;ºñ uL‚–Ø ÆI g¨è Ç²Qƒ]ÐÎXå/ê)ç(ýDøÀñwà pÐ8  U vp‚)t tè~×ÚÄ ' „ ñ‚ ÀÛ>`þÀ–ÓSHáZ&¡„ âp…hA5fs<G¼3¦Táx8$æ!6;pßSp ¤0XHè` Œ pÇý|`Û!vƒÂJŠ è€2€f$d{§‹(¡®œ!þ`ê @l¡Pˆm42"êÀ$6à¼éâ!àZÁ¼1láDfàZAØA5.À0ÁŒÁ~ážÁ¼¡Ôar j ~Á@ ¡°Šâ€ft`a! œ ®@ Œt <$Ð^&ìlJ9r R jŒa6@V pð nþD`J PLGÀŒÁV`"à ŠÁªÁ¾`Pd4àP@5 Z 4A NÍ §"a%Š @ òÎcøb±kÜ – V !¹Ú‹ªÏ$Ú!€e@`Rü à á 2 B@˜ î!ààîà   Ú ¸Ã ˆºeð ?T0à…0ðÀ  €@ |à:`  @?8´É êaó¥äÆz7ÖaR Áì$€(6²5È zV°¸¨5ð%6ÄáªÆ5(A– 6 2d2áˆ^£ÌZ£þäáQd‘%¹Æ p`r€VlW Á v¥Þî @†“>m5Œ…¦Àî î$¢24 ɾ¾± p5~>0î*ûÀ¤€þð à™ŒQt2` ÜÀÿZ-_°Ò’-Ûr_t¥^à7@*€ Æ ¶ ªlã`‹ú‡]ò…€Bª4ò$@€B  Ú`  êa¤(MÆ¡ 6ʘr‚ëÄ5¦ Ò°HuBˆ â@=ð À²öQŠ88a(!tÒ-sS7w“7kà !ð€z¸€pRÀ2 |  ªÀ ðÀþFŠ œ@d… „@5ðA;(¡u¦ :€ ¦` ¼vî@ Œ€öÀ:  ŒÀâ@iÐ1\| °¦@ ¢ ìÂÁ¶@´ä^@}zSB'”Bu³á@OÂÿžÃ#‘EjL5žcy4´CY#æÃ Ý ]š „àx\DY£ 4rû°HƒÂ7Y£ R°BH)4jˆ"±'^`a Ó$ VT…NàÊ„yÜàQä$ wâa"áÔb5Jâˆ@¨$±4¬¾´XV4HÓTM×ÔDÏÒ-«F)à À,`ÊPþav!©:¡( T@1À ŠP`ùvÁºvxÁ!Ü¡Oïixa"aÆ@^¡†¡ˆÀ ¢”MOUqcæa”4U±‡8Á ÞqKL8$€¾àv@ꀎ¡F< î¤À aÖ`&ÀƉè¡À"À¨A4a‚Uç@Záf  ZB@ èfD_•]ÛU5Æ¡à ÐÔ]»Æhp ø@@ ‚" âaÖÁŒA.¡$,AÚˆ#iÉúÌ"€’áÄ4!ä à£`i@" àL «€÷þœã:³^SÖ] Keµ&œà5Æ[LBà¶Ÿ<Û:Á ÄÍ$$ÌK¶&Á ` °0A-l¡ÀxVì¡ "Á``iaKaÀš.( "AþܺAV×ìaŠtt¯×-‡À{æ2Uê €©{ËwtSÓ|³†^'„SÒ×}_6&Sê}s“'ïB2ê±ô¥Do£~[e}ç·{Ça | ÔxøB Ž^1Ž‚ÈÐÉL¡N®à ¶à]O@z€ƒ]uBÆá‚+ÀTQE2ß÷Ö5…&ª”€Lbzá$d”à†…á$2a†M¢~ Šî„â`þ® !§´àúÚ„:°Ã&1€æ/“"¸¸™N](Œk³JLájóŒÃï ád2SC$]”L5DM0 ?„þA tÊ á†gX!xØ$2L€L¢íZØ‘ç7&_€Ê ~à H¡!Aº@\ TÁ xà ~ x@’ ~à ¡†€Î@BÀöàXÒ¡þæ@© ì`ìî<$„+ì@‹…hXC»Ò | :À ¶Ip î&’¤ùnª ² ÁyÚ jÔ„ž¹B`âIïápÀ „ JEX ätŠ„¡J! bÁ €Ja”`Ta@bJÙü@tÁ~@ ÁH@ L­ˆ¹BÓA àÐÝ@@  A!€þ_c@@JXU9@Î_(¡2ÚzB€2 ¾$ TA €A† À@bàa’@Î@ ¡ÁHAd À`¡ ¬@c®€ žñAA‹yešò€ë!tସ22rà¢"ê(ˆÄa7úÀ7BÀ ÈÓ7ˆàˆ Á¶ áÞÆA sXîAAäúæC„Ä!|à JgìÀ¦8Àbš€’Àˆ!fØ p¡Ø@~àHp,fh§NÆX¸àxI³¦Í›8sê45NN‹.ròi1“?Hù@&ç@•ébH©0?ŒäP2õò^½t`Ç¥«W¯$qUD©Ùq”ÒU©7®¦ÛíÒ…¨§¶ì 8)èP¢ô7ð¸óòp²™÷«^¾nÅ™*+þ®ž8HíDàKG©¡©tRt4ÌăÑ¥Jû ©Ôr8pÃzDVJ•€iÁÇTgÀƒ N¼¸ñãÈ“+_ΰ€p÷XìqBhÜ‹=œà Ô!ONÎÐ.Dœ¿kj°°a#" Íc!¨HáÅ„OÜ ,lGÓCpÜCIxÄA! Œ#HF qÒA\TÁ‰Ud'…¤£…5‰Ó‡t0gâ‰(¦\v°pC,ºÈP €`‚C5Á%Üa8QBz49ÌÐÉ ©þ,\2Ǭspõ¸!²"ëÊM0$L&ÁAñ…ÔIr•S:pœ)ÌSµH`4ÒA‡-öØdó¨C„–Ýq[R‡ÝüWù‘ÉQ€ÁP,© HA"‡ú@ñ!\è0…KÌ•)âPb™ãg½ø“µ N3„ˆ !5·M”ÁP©I&}{âÇ>£ªíúë°Ç.ûì8ꀃé(¢ÀaHÒDbICà2„*³¤"F. ¡L ¬E¼`‡æ˜ÜcGUpá„x´ã„oÑYB`ù8vhÝÅî¥4 ðº@KñÇ[!F*Šþ8ÃN-¬…vL [µŒ+¤ wØB NÂeb8U„ë  µzh!:é`†#qlßâ"‰2H‚†€EþäÐG(â4‹ \Hô>ˆO—:€‡,`+„À% t`$kÃä†ñ^ !zB‚Ž€ 0t… ¡]Т #H ‡EÄ@t€ƒ2´À:ÚñŽ< ›ÒŽyØ!] ™‡V¦…Ü'0‘8:Ð:ã¤' ŠBö@Bšìa ä|àÁÅ¢Ó,X¨¿T´€!#HÃTÁ1JÜÉXD æuDH`¶ÄþÕ’½ÔAœÐHqd D]@Ä,^â 1Ž.¬`+ÒP x‚-áàÂñÈÍnz³+×ÚC z‚ ná‚\!šv¤+BÂâ¦x:ª!:¸Â4È)"¬³ )°Ã´Ÿš¤ãñÄðÁ¾“Ì#ž}H!Œ€-8­[Bî!]¥`! ƒ¾D ,\! [ØÃxÜš,à# D î@=œ ÀTG!!Ò+ˆà9èhJOÖŽB7dr  °0.d!OÄ|%#ä@ )˜Ç ¡…'Ð/xÜ‚\A S€‚—ÄK„;¤w½fYÆèX:bfˆ&”BCh€'ø@‹TÐ"(pD4³ …Ëø0FxÍþúô„€ È@XÐ'ë ëÍ@y½Ã:T€`= .dà U¸"?Àp.äÀ‡TÈ@zk‚#ì–ÁLföÊXv¶³… ¤`´k"-vq¸³!{C@@ÌHÌ!8xCðZÄ'Î7ÑÒ¼Úa;«á€íˆ „ 5àŽÊ$òß>HapƒŒ@Jøà XÆÐd ˘ï2òPœ9Ø‚0‰Tç.$| „L×%=Șq2Ñ‚ ÜÄ×#ƒ*fœЬ8{°­Ñ •_3 ¥HDzLíj—M;㨀hdŠ,Œ– c¤8Vþ‹fØj)`5¡x‚:Ç׳IŽÔT Ê%BKp6°@ 4 $¤Àh)àã'f ²p]Ì3Ó¸G‚PßCO¨‡Nà„=l˜ _!p‚,0ÜÒÛlÎ<¬Ü#5ª¢¦+Õ2r&>ô" aˆ¦µwÎó¹a XÀà Ð< \@—D…½ ÷Ђž`Qcf ë¤I:ñ‚)€  Å…‚n$ˆ'ÄÓr¸G®¾Î@<Á €€Cì ˆ@La÷€CÜ@„&mhÁ/¸Â ðNdÀX Ä R',>z³…'Ä!$ÏÇ÷€þ¡>pƒ8ì`,`aUÈà vÄl2¸ç°½ìCæ‡gÁ¦À‡  Pˆ@WóÇÙªP’Ÿø¢iG: …£ž%Çï>DІâ?_÷|‰ˆ:€ý6ô)è£r ¦eh! f î9A‰ô€™IG;tuNœ)-™®‚^æQSˆ`÷ć:° gS}' ó‚[Pó@|¬wð%2“QbÁº3á`Y³·(2õ0\€vØ#Pà>)ÒzcÂÀ ¾¦ €ËDà)ဇøà4U8A )8‚@„)2£Bh"!pÁ1 þ†0z“ ªà™ §¬€4< fP…Ká-`…Ó× v b$pà0”À ¬g n3Ñ$ 1 r€4Â@J‘ ¥ð^( žV¨Z@sG˜ˆŠ$42Fh‘¨ãP‰(³@”àG…pÄ ½ #ð´€ bÐ ž ’´ª$ Š0Uƒ. : 8†ãOtA0rRÓNà™Óá ³àl ·À2p©  P gði0 ƒ@  `TMƒà ~€on 5‹XŽæhw”8UB ±9Â!/°SÀ‘m pþH\ð"¥Ær:!ØÑ@}×*õ^!Š· J ªð “ ³P1pJÐbÖ Ž0 Ë„QàF SÀF` qUðð4P4ã=¬g¸ à b@ S#Ј`CS à·àf ! ,pˆxŽNÙs8³l±8Â9À2! dô”pºÖ€@¹õ0/B€w”À2ã 7eHù'x–é&NÐ)°trjÉ2À0uA îHy0qpiw2léˆqé"¨íàPYȨ ˆà z.À§8‹p|þà °p”P ˆ  MIÉîJ‰bx÷ÖeZð'°B µ@2ÀЉ # .€Š= ?0 ‘¨y lS ›OY±G' w¸„ƒÄnà/ 8ã–.¦ðmE†WàGáXÐP8 _° P][VÈUãnpÛóR`bX€`Wp‚í@ „ Ÿî3/ðÐ[`•Rqm Y°H/Ðq"€t}Gáé(‚#PB` ƒ`e€Uà´0 · 0 ½p4éœÀ±@ þeÀPÀn9“¥À';‚‚Bàé`LåâÀ ®À Ð±0$à<© i`·P  †€…!`q€–Ö¹§<‡3(á DðmFpAfHt WDÊv¼øËp9èw>' P Ë t B@ !q° ‡V)/óÒ"€Viœºzv€÷]"P”· >èçŽ@jSPŸá™SP"9o*ut ƒ¹À1³ a@ ¤  تù£ àª|àÜ:# œplèÂ'˰!!PþR &!©lM0¥0z# 0…|0ª Ø Œ®1 ±€s? g£„|:±˜µeã`¥_&ß–.%ªZ¶µ°e$é‡vm¡€€!µª .!u!z5ªø` hÕED05!qVÓœ@«€q˜„t/c†q ÀEd 90Y¤fj×QðE—‚Ã8@ÂVبAF4Á`<¶ÇQ/ÀryøÄ5±¶¤±¶·Ô¦ð´ms¢K €K‰Šfj )¹#kIøëòm ˜¢2 g·¥ 2{h%¹f0ۿцìÁBþ€8”EX›ãzk¹ p€oŒ'ð,²y…à]wÀ ËÀU€˜ß¤=r»» wn Kœð\àOP^Sà\",Pzõð_y`)!àF€JY0„ H)J+õ%tuÌk„’9°9 ŠÄ¦@Dæ{„ €úöâ ? å 5Æ «Öb—)Ùuypx0{ Ë, W¼{ÁŒ‰AyƒÑwà+^¡)P[1mPcÂ/‚k) 4‘•U04#œ “1œ‘v&\mÐípÂ|R b^ 1þ'\FÜc1$ éÐU°¦= ¾âý7œLl ³’gø1§Â1§êW.Êû'hAK—³ ˰”Ùgó 85a:—Á|Œe·®3[0]GŽAó[¦ ƒP4:xpgZS SpÂàKic,0¦«J§õåµ.à5}|ʨœ^Ñs:PP2)ž0# ~ † À §F ]¶Y/p!âmÐ.ut€1$ƒ—y°! !Ò7Ò±,`  IJ³Ð` -Ñ•ÊæÜM“ql^Ñ ±Ãþ1“x[‹cÑÄÅñ'!ð˜Zà ©°Cà†`’@ ,d ®p† >PóRx0§Å ­›W™:¢‘ E Z‚àŽéÐ'iÓÈ °°®`0 ’ c” 9ä ö [·yÎ>½@=ði !B@w ¡T¡qP¹l11ub€,àÆ:ñâp)ê|#–p9³à£Œ,2„˰¤iÀBâàË`\À° „ðx`g0 ¸Ubx ›Ð9@r438ZÈØ`Êž0c Iž 2`:5èÇþöÓš-2’Qb†µËõ€Ñ/A„™óèuË0t ²ˆµ“ѬGÂ’¿daÏæâ³igϨÝó€­s€ v–ÑÆö•ô”tÙ#!°°faX¹àA!CÀB~pÖž p·‰¦ i9€:ð"Ð2·wø&÷ÐáðÌÉü"P1ú)<g@ AÑL®à Š ¬P„°mñ¼Ùn*í )1PX´nà¤uyx 5}k §álpй7ȳO€:Ð?ô‡CSx xz6R yòá¤q€'lAß5ѳ™ƒþâPpžN‘B¼¡S·w0Ëп>€KB`=ãCø+8鑊#=ãâˆÐ ƒ  <0 ° >xfÐÀ …ÐáÀí>xP¦`XPxС2Ûä2hí`õpä4ƒšG €»ƒPæµ`¥á @ ©Х  ×€80Êê­ây…:ZÞFZ8° ê5ÚN,Z [B/‰ô¦0GêGg•p Þ8Y©E³0PPp ªrøã>‹!â¥àg©\3·žã`•…óµj>ó$x@÷ðâ&¸û#áÐþ1 î^àî’`ËЯ±` zÊSÖ+'3û~2 €Ly±{ã` v¹š–ñÅ9 A ò> 2íîIà Ià?°¤¸¢Þñ³e”­›M¤•.ºÕNû·æHwð×÷ðÚ Ö¸Ú'ª4;³r%^¢…Ç4ä q<þUp8^FÜiƒÕR`àq0_ µ‚pS€02±p^@¶§Ù~93é1¸ ö4Aùž\E #àõÿö©2Œ’UðóP€À[ÐwN„ r2@\%-nA:}0'†Ö,é`/ —õ[þÏ[â:@&N`D5ïma•á`}À „° n t°« 7@÷PPc!\µbpJÒTìÄàÓ1»|˦¢Ï*h±Ð‚pü¨B½‚ÆÚ€Nð)p×q0gó\0Aê—ŒÂÙEUàY¢:¿Ëš§¥$'sp›Œ>‘!QF0ORÐ {` (F5ø“„”‘ p„˜Ê‘H>žôÁ'ˆDúpñÀ ¤zx ARäH’%MžD™RåJ–-]¾„SæLš5mÞÄ™SçΔ!¤Héa $%q")é ÄÒ”Ž¢%éÔy/þ©ËqNÜ´qâ$„Êv#Ó5ÙÕ$X“: B×aOJ'–ñ„Wî\ºuíÞÅ›Wg: R„ê•I‰ˆ«tŸ‡å¯Í©  »L OŒ_ÆœYófÎ=¯4ùsMqZ„L}q$b¹$ÍjàçV.?åÊeÌ¢4Ä$ãÓZ(V’ºx) ’b½ ùi`¼A¥@„Æž]ûvî1)… צûøº÷ðùè vœ¢]héj1(¢2¬p°âHQ¯&ŒÎ rAP\Pà–T¼ –0Ò#ŒXh‰%†!&ÃEŒAθ'8ˆØŠ<?1D»Æ!"Æ1Å™ þ!1EŠ,@ª ‘ƒ„2 ѱ aƒHbI…HZ¡Hr‚”D¼P ‘3j!!—± Q HBè,T$³L3ÏI @:D³Í‘LÙ#A¶AŠ©jI…H¸E úHÑ%†TÉ$GX92É%‡ðãÉ0$˜R¿&bñŒT8É”ð ¤17?5ÔÌœðAÔP¡p£SÜ'$+dx´S©å€$byT6„i‘RJ1¤$¢ˆ†ð¢ Já@e{¹E$‘’œ¸ÃSS·å¶[œða!Ѽ1„eðÁ`$V¼D‚fIb„X8ðCb̨ ’l.’P$“L8HâHäˆÅFHQDC¼`£ˆ2bQD‘ ¡C[r/Æ8ã’R˜"‹q5ö‹³@&¹d“óº"Ž“E|qe—_†Y¦qräã˜oÆ9g±g ;¤Ø9h¡‡&/qF.:i¥—fºéÑ;libjibx-java-1.1.6a/docs/tutorial/images/advanced2.gif0000644000175000017500000013630410071716566022500 0ustar moellermoellerGIF89a6 ç:::‚ŠNªN~Â~žÒžþ¶Þ¶::þ’"’2š2ŠŠbbþÔêÔfffF¢F¦J¦j¶j‚‚ŠŠþ¾v¾ŽŽŽ¢>¢z¾zâòâ”Ê”ºnºªªþΖΞ:ž¶j¶ † ÒªÒNNNœÎœ®Ö®þnnnÊ’ÊêöêÂÂþÂÂÂÚ²Ú²b²ÆâÆN¦N†²Ú²ÆŠÆ&&&RRþþ~~~ÒÒþžžž¶Ú¶êÎêæÊæbbbòúò~¾~jjþÎæÎÚÚÚÖªÖŠŠŠÞîÞÞÞþªªªºººFFF***ZZZ––þ~~þâÂâîÞî&&þFFþ ÊÊÊ...ÒÒÒººþêêþúþú–––vvvîÚî–*–êêꎮZ®æòæ22þêÒê222vvþVVVššþöêö®®®²²²BBBêòêòâò¢¢¢ÞÞÞ†††ÊÊþVVþ^®^îöî²²þ$’$ΚÎþòòþš2šææþžžþæææÎžÎ¦N¦6š6îîî‚ÂJJþöúöÚ¶ÚŽކ †BBþöööâââÚÚþºÚºJJJþ„„^^þ"""ÆÆÆ..þÎÎξ¾¾¶¶¶^^^úòú>>>666‚‚‚ŒÆŒRRR¦¦¦jjjzzz þšššööþrrþrrrÒ¦Ò’’’,–,’’þ¦¦þ††þ:ž:þúþªRªn¶nîîþÞºÞÚîÚââþTªT¢Ò¢úúþ>>þNNþ¦Ò¦ºÞºþþþ>ž>¢B¢ÂâÂÖÖþd²dúúúÆÆþÎÎþÖÖÖZZþ¾¾þ""þ**þZ®Zúöú®®þ¶¶þ¾z¾öîöþºrº66þŠŠvºvòæòŽŽþzzþþ¢F¢’&’æÎ梢þÊ–Ê‚‚þÞ¾ÞnnþêÖê—.—š6š¶n¶®^®ffþªÖª¾~¾ÊæÊJ¦JÆŽÆ«V«Ò¢ÒÞÂÞÖ®ÖâÆâºvºž>žŽŽæÔæA¢AÆÃòòò²f²rºrƒƒ¾Þ¾††Š,6 þ} H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cÊœI³¦Í›8sêÜɳ§ÏŸ@ƒ J´¨QŽS(¡ täÈ›£P£JJ5çƒ$X“|˜äé¸zx)+Š4Äæ{`*’›$ǾIBlnZ_HÂVÝË·¯ß¿J<Á¹¡iÖ1bDº0|J ÅG±G N‰£ Ô×…>»ñUÀÝ*9þª^ͺµN*n¦1ìëH¾ÚU.éœH÷5z­›·î4KN5F`oSG«r$7D|BR{ø›KÔÑþ(fê+‡ö#×¹û:¦{ŠÀ|GŽ¥Aﺾýûø'*!ò¦ÊO@R¡JLAL(mE2Kc¾ "¨à mÑ`Š^1GP˜8@$J@$#Dè^R@)–FÌ'º•¾H2 $(aÉzl¢„)(’ß‘H&i4 @¾XE„±½I’…@=è%a„©Y9Ê‘lé XË5×asSðÔ1„"£@•HR^$O¹@"2Îé‹Jøâ‰&äÓH@ÚYE%,(éè£F¥D*(2 hI(¥@Tä0Ê&w1¥¦_ú2Æ(Ì…Ê¡@®Y^%þP0K%=Pbš@¬ˆ#i¦õyëŸ8Îò£/¶ò¹'Fªì²ÌâÔé@pô ¥€‘C› Ô%®V;Jjž¹ª/­ äIw"„%–TágåíZš±ô ”C ð™È1Çú"E²Í,ðÀ'=+P(žL; §9A…W=4F-µz„^¡IP¹’°1Š/h(!A¶”k¼Íëë]nàÉö²1]¿ÿlóÍ8gD(G¸Q —(Ü£P¢D#GhA‚—ÝVÐ%F"$Ä'ùûR¿ü àÀ(Q 4jPB%Ø ÓáI€Œ ’úp)`–1¦€8Lé ièx|‘K žCÂn ˜*XBh0R>.4\âî‘ wh”D¤b?þŠ ”K¤b ³ØÊ H¡YC¢rNQ¦RÒ‰¨Q !ÓÂXxHÆ2â„‘PÔòqÁ>ÌbnU`ÃV,ñ¯KÌ‚$øD"” bXŠžy4‘ \ 40’Šæ Jb& ˜(ôO|B î¼€8уøB ˜þð&à€0,Á,ÐÄ&¦†7x3œM¨Gš†Øo!ǨÛ¤ …Zô¢7&N¡GŒzô£1ÑHGJR”.ÉG.”²„‚Ét^BN¤#'=Æ( Ä'0>t$’àÄ.`§’õ!—×Júp*Nd+"C#EŒv }.$h(C .‚° DÈGH MŒf!HÈ‚H)’…QÁ€Gç {p4Œ"­ù ÄêÑØ•Š8Ânˆ„…B9‰EÃn0%JÜ౎$ˆ_GØ.¬0U@CÃì—4À!?%á)†Æ$ mÊ–n°%E f‰xþ'LÁ‰4 '7E Fq„\‚RùHC]†ô61]x%R3ƒ°€¹½ ¶Z…TW1ù°nb<ùØaä ˜8†Ð0…Jl¥gŽ%n‰‘ˆ,Ü}ÄHpîôº–è ,‘K¸!-— BºPÖ · ’èA0…Q€¢¡q}$1(á‰$Pl ÒpŠTÀâùÛf¡…SH! T ‚"8 )°h – *hA JÀ¥@º@6xbûE`‰†YŒJ¸ÁHð©teˆ2(º0öú¢lømnМtY iÃ$Ñ#@© Áþ" )áoŸèl’œQŽÎ, ’¤â9våV9A„ P`KK>B.q h!€b”ËpÓá܆¸M>ñÇ@¤ž–c#.‡T¢ FÔ0t„h‘ ÇÈ–’°K¨A ‘Pˆ¡i_,8£m„%˜8 ‡À„’à."€B ±1¥4È7¸ J…‹}‰$ä( D#»xù¢SL 6!‰HÀ“®cà ü¦ˆ)4 –°›@¦à±ÞÁC1 ÜÖÙwöä„»ÇÀ˜$d I¸Á&Æ@ ÈÌR-H6" 畦» þLqÓì`¢›U\(섆¦aJÑ‚)ì'„L×ÜwXB7ïI…‚W‚;°(Ô¸h‚#A>a I#‡!Ƥ¢a“±  ÀòÁJLÈ“cX ·¢ÏÙR•¥g¶‰F|ÛsKXw bn¢­Ù ˜Ø™´–(aœàÄÓ.–pâ¡’0:Ôs"4ç¡Ð„~„°T°çšCÁp8$áÌ |l@¡Ô„t!p"®/¡ÌÑfAm„⻊Ð` ÇX‚D澨ù,˜)pBö‹ n“Šúbð *©†c©¦Yè þu$$aÜ·úY †Sh!Ù©PÃ'|ŠJhÁJhž).°ÍT$!]@ƒ*‘E”AB    =|±G=`% €aVC9àh`q @uÅ ]ð”°‡A¬ ©ð ˜À"˜ðfo@mn0yëA¨v §° nÐûÔy(vŸÀ U $ħÀZPZ’€c…ÇKœ0 öt  ð ûA~iÐcWH ¶cI  nD §–À¡Ð„ºF zÂwB@€¦PtCwšð7@VhÀ ’€ £oT€â'ah@9Sài þ\¸x4ep¾c e Sx÷ ©À ”x,@ºW*!DÀ ÆSpX£x©` —©¡QK@)W• e`x²u —€‰£ e@pö œ`$9à‹å1 —Àn`[Y°= X¨xP ‘鄉”(Šn ŠÄÐRKðŠàlPT ÑZ°(€Ùõ·X_œ°~œð­( œ€Ÿp üá?= sGxp ca…˜PÚS¦@qQR³Y Qd¡Ð4 ‡±V±g‘Ú³VYéÙVv‘Q÷‘’ÒQI’%©’ R]€ Éþ—p…ja À-™“:¹“<Ù“ÑKàjò Êá\œsSñ #uÁ‚ ±Qž3’àN‘gÑŸ°ÇЕZPQ>9–áMìuð~Α™A8«§=™Nv’«çtY—!k–P4‰Si—¾Ð_Å!ûrAÁ:’[’Õ8Ä J ny’vSÊ% da ‘æm™Y@U01© }àŒd™š!(ЊÐeðoš$pX›P£p 9 eS QF ±C§ T= ŠeÐReº7|Z°‹écÀ7àUejþÙ7МÃI iN`& 4oeEI œCö4 `áDвH”г°7 9Pž%—0b pHe.XÃ÷œ02¡ ŸAQ©šêC¥[w&4 ˜Pˆj@[ u •0P§@Ž (€†„u9€-†œ@ JV’Ç0´Gd‰gžÒšÀµÈ‘-‰  #`}öt¢a‘Rp¤o‹—i\˜Ð‰5i@=ÐgH JPY à ^u ø‹ÔA7Å ¾ø@@ùú¦=Þ7,Л` ,Y¡Zþ¡d7D0 š Š ­$—e]p àÆm(€• o`$© ùó,ÏÒr Ÿ–ž` IðTñÍ‘xcà JÐJà'å™ì‚q 8B&=³Pj@– kB(ž ©nj/–3 ~àH  ½|I (¨Þ:¢Apph(0 £‘5÷ Ã90(°W˜à âÈm csG`„Ѫz&ÙÂo¼wv¤äBÇÐåÙZNÙJ¤çIr ç ôU€¬-c±[!Ί”9À;¶ ³0.ñwþž@xó­2›2eð~ét‘%Ò:K c `$ P jÀj ø$9¶¢ c pb³à G@:KŽÓš.嘟Bª}À Z{o€eʶŽoðqÐ@…’ù ‘O&{7€³Pf` ›pµ6[Ui S€yJ6¤|[BÐ"c02¡P3,ù  œ€š3;³ùÐXÅu ™A¤Y ”øã o@Œ’ùð9À 6%iðg¤Ñ¹0Éiù˜+”ݺA³Û°Š³«‰` 7@,ð¹i€] Y@ i³»»iðÇй–%dþÊ G ˜Ñ»ŠO¡¼¶% ‹·ñ[P’§àm±•qº•Û¾íã¸0 L9¿è¾öû>]Ð}Бz¿þû¿À<À\À|ÀœÀ ¼À ÜÀä““{?ìkp –|Á޲Dꀴ‚E‰Á œ$ù pÙ?Äpš!œÂ*¼Â,ÜÂ.œ\‹Ç@¹/\Ã:‘e0±Álæ($]¥ÓX)둇ъÑUpS’#óös X| ÿóÃ\‰ð ’›ù ££ T0ž£#>‚ $  ‘Pƒ`Æ~KZ«D<ò¶= Tp%þ}ÌÙÅ„\S ›0w9Ðû¢ @õ2B€¦ài–4ØZpL7S@±! 4 •àɳ€=°¯*Ř@“…üÊÁt¡?{d'5pÊÁ J@¨Ÿp‰TgHÿEž# œ#È$ —z¢ !]3ó ËÔì} nhA˜·<œp o@ViðEkVŠ‘`AR [÷É”ÂÌ”p ¥œ^6e¾ÀËZàÊÕœÏ ¼µ¢ ùƒcp:GH›@2¦Úæ8DL4jp_óµ (À èä1Š0gÜŠ Þ¥ÏýðÁÑPÄ 9 5wþ8yccÈôÑ0 S0Èq ë¨IÐ@ Á¡IPgÓ@M$ÔD-²PaÎà 8€Âà yð FÂPÕF0Æà ²0ZÝq WÐÕ a ÎpÕ)‘V°Æ`¡Ô²ÖE3ΰ a à0 ¥€M@ qVÀˆ`ËÐW ÏpÞÀ{°¤0¶Æ ÂP Q P˰ ±a ±”=‹ÝØaà È€ ¾+Pر “P §׫qPF WÙyV°¹ +ÛÅ  ýÖ…ý Ð a 8` VÐØhþmV ñÖVpÕW€ží ²°V°Õ¾ Ô ’]ÞÁˆ`º ¤P Ê {à ¤°ÏpLà ¹Ýyà 8` üM Ø`qPØqð à0ßyГp[MÝ‹ÝF@@`Úš]o½[­ ŒÝÜV°¹è° ¶ ¹âo Ü‹PÝmÜÔM ¤À6ÐÚa ˆ€à Ï`Þp¹@Þ¶€qä8@ VÙ¤°ÉÐßu‹uÐÞ`Þ´]² “à 5àÒx`è r€Ï ŽàË  ­ ¢° ÒWPº ¾pº€Ëpþ°ˆ0“`Ï`­€Ù ÔpçÜ-Ü=x°qp@0 |à Æ é“`ÆÐ œÞ Æ@ [=ß¾`Ê`A ËP`ê50   uzŽ5Ëpʰ ¹ ª¾ðêê¾@ ÚP « fp-êa º@Ôà¤_. Ùà ¬ d° u€ÊpP0ÆÚ Ž Þâ íW Ë ÔP«p낽fÐéf ó- h¢ Ë`Ù  ^^ã» Wê²€ˆÐê‹ …=߀ÈÚWàÈ`ÝØ@ rЈöÍxþØP€Wˆ€ ÊØàÅ àvî €‹ @éV `Â`à ¶Àܲ  ÝMÝpÆÀ Ú LÐÔLïôÂ`ÙPõÙÐÔAêù½¢°y€ßÅp­P6@ÂЫ`ÅPؤ@Ù$¾ {°ÕÉàÙ° ƒ`åäV @ º€ðƒ@ ¤Ú° L0Õâ`÷. ­°LÐâÎè~¶à Ïà ¤`5äf`õ|à÷úmÊð㤠º`÷­@õ5à ¥P¬°êÞàA_{ Ú~ñQ±“€ EŽ Ž Q` Ë€P“Cæ€,”Þ”áð%ËLª@¢ Úád9'³íòE¦F“ˆ¢Dšò 8(S¾…Wî\ºuíÞÅ›Wï^¾}ýþX°_>ÊVµJi¢ŽJy;QÁ×29ʼnÃfãY(F„UþÐ&Œ¤A{vAÚƒHW©;ž®·ÞèI0¨Ø2d¹²U( 2|á÷̆_òØE+ ¾RŒYa(+´Ç [’Q.™·pPoйb™]˜ ˆ –‰ÂŠñ(Œ#¥8l¨á¢ÁnÄ1Gwä±Gä1[À¤” œy¬]€¨’É @[°9Aµ:rA™A Á’Ù¥†–Ae˜Ké&]¢ØÅ d˜(þblž©aAŒñå™]âs.>Þ¬¡”+ÐI •(ô;™³#H™sRš€„+p|fN @ZDVêZä, ¢ømáŒð…‰¸º¨TDX®¬È… á ÙÅV¢ÐeV|É¥†`Q”+2‚µ‚ 6›øÉ ®ÈسƒJµBé™Z²[o¿7\qÇåY[lˆÂ–\f’ænçbE›¨d.[®ˆ YŒ®x×~ùê—X[ômn.Ùå€ì"xŸNr%‚O"åªöèwb¹F‰”‡C²…crG&¹d“OFùFaÀiâ¤U² ”®+*(4­”w¬ƒŒl¾¹gŸþ:h¡‡Î1‹‰F:i¥—fºi§ÃÍ#É­8‘¿­zêŽeA1­)Ž:%áú©b“×¥Ëj¼Ô6›â£Ÿ†;n¹IÎEŽ] ٴ©¢‡(6Â^D&qD+3À‚« 9&‰ñ¤]¢ Ø ]V¨r÷ £˜<š@ÆÆ¸’¡fT»¼A¤˜A°õ…tPŸ»u×_ߋѮÀW|sù×ßVDÁ(jܹ%Eã¨<îú_ßÇÆH–¯£ÒÅŒU¨9‰vâýEÑvn‹™<®ÚRž”+¼W»µE°ŠÞbÂa’æŠ:ZŽþ*YVeˆ+pÄsŒâ€¢˜(,'íö|¥î (ª€¥þNb»¶æ]ÊÛWk¾78Yð ÷ò×÷ZS±ŠI¤x—Ô"è¯\8c8 ê’‘R¡^°ƒa e¸9” @„wÐBšA(È«àÝ a$ÀrØÈÞ"ŒA¡AVÀAbl N¬Cä0ˆcA\“…Ô¼aŒÊuŠ‚8Jᤘô) ƒ@ÆV…*á&%f …ƒ]8à è"ı(9Ø‚|؃<Ô1l,ãÈh…0TÓ_,BK ¨—1´a¿= Ëp„0ÀFY0Að"ž¡‹:°‚¤ Ã+mñÆ(ÄaE'¨¡/’1'2à`5ƒ(:”þ×€?£º8 q>8cbñE vÁ‡]45ð†/¡']ÄAuÅt2VÁ²ð†-0’ ]¬Â †–'CzÖiÅ@‡Nü•]ø’Ÿ°0‚ Þùâ Å.Äá mÄ¡x0IJ&:€Ã¡¾ˆ5Šq‚l3rH×QθŒe@MÉc‘/üf¼5oa€\la‹V8†²ÀAtj P‡=F Æ*d1 &x„!ahœ\âÐQV#8Ç2¢Â’+è $š´6‘ ü­ $]üN²f¨FX YeAi,¢+($T‡+œ Æ8Aj€þ(È! Â@5l‘eÃ:-i…±lЄIðÁ­RŸ#p² tøBˆ`Å ÐA“Á–,ȰÞâŒ(pË d²Ÿ=U»Ú ¡ãÎxð`„(Ù‚ F€ˆ‘ƒTöI5lÀ:ŒÅ½m–A þ‘¡ Ȇ2¤‘€e$ÀưBvãp´dàA ¹ØK‚7p8Â¥`Š”Ñ Pý¥ÐM14â‹(1«Ç«øýÅE“@IT}QŒœP Q 6‰ÑøÂŽˆCv³Û_ë80‹8À…—ò eló"Ù˜Dk: “kù•0&‡LT¬°1@ˆÍþILbÞx¬3ƒ°î¢›rĦ€5‰PcaÀA”‡U5‹  ¹¦èm<#É( J&!ŽãþfÆ€„F•A  1ƒ°\ó°Šç6ýÆy+&•Δ¢¥`ÏN¨l©Éb—®Íâ0RPC‹X6˜4V â…qÉET¯’‹žäbÊ@G2V£\h2¹Èh²aóY“¸f؈Ç4¼g,…fHŸ8üs‚=ÌOWRF j‘@–*ŠÔœSWgöBê¶:÷ }#8LøÄ¿ÚITßbìAH+ >íŒà €¤ûÉP§«áïêê·ð'‰ì€ò#=±æCZ„…ì³½ô[X„ì<+@óо¯1ƒóéyÒ¼ôÀÁ¸YŽ$Á4ÁDÁTA¢)ÀÀX|[Á”ÁÔ¼<@âÚ‹+М£ÁôÁ”¡:x˜: çóê¼Eø!…‹ˆþ½“X„,ŒÀôÂ.ôÂ/R(µl(@r&Dƒ<ò…¯ˆ‚0HÎ૨ihë3Ñ ­„’’Oš„¶ §ÃA$ÄBÔc„0ào„<(€'q†•Ì`…Rp²*ô¸·8p„lÒ &0mȼ²‚qZU†8)C„ÅX”ŹðtCRXŽX„I‡A‡Rð…V0Qð†F2ƒoÈ…9«$Em0†bÐÑD È»›˜™ÅmäÆX´2˜„(ÃHŸIh…]øÅŠË†9dlX²&°éÀ«€St„UÈi4†g0Å„štþÀ—ÞëÆ‚4H0Ì…g@c°.Œ0¡ ƒVÐ…<˜e 8#áú X†0H€+À†AÈ: 8& &°…¯š„°qˆ¨ƒ„ɘBü¢ ‚ÌÍ`´j‚Ë› †âM“É Êl=»˜‰(X¤:@„±‹Ex•­¡”Ê©œJu¡Ê«ÄÊ/ „K ,¨ð‘°ô^ЀºÐKÀð~(‚ è_¨…Z q€^PPÁX‡ºÐ ƒ~¨B˜ËZ(‚“˽܋~`Lº¸K:@0ÈÊ©D% ™"„ÈWð‘Gp…X¨‹G†ÀþÀ‚f†up/€WˆËaf`Up½À‚u8Ë» ø…ÇŒ‹ X€`„tH‡{°;¸Êô…~ð‚G¨ X8 pÒô X‡Ô„‹X€€`P…¿¬L „T@E‚@8_H„*°„.Àˆ)`Ï) †7 „|°„@ðK@"Àˆ*8†>`b€OKPP!x ß,‚ïôøJ,¨P (ìôuHÌ·ðv(¸‡ÞÄP%p,ðÊu „`¨Ë"†`OML:† MÌø…"ø…ÚL Æ4 _À †ZHM¯ †u€`€Ð”Ðþ€{Ðk˜_°;ÐUðL‚ZðøJ -Ò'Ò'¥L0x¥Ì `ÐÍ·8Ò5 Ó¯S:(;øHMÃLQ,x0¨ÐÔDÒaX€½ƒÅΔÐ@¨…{0U…a8K,¸ËøŒ°Ñu1åS\ð‚õ¸ì0%„°ƒ õ…uHR ­…N`Í|,`ó”Á@¸*È S  @‚XO €K86 %¨"X)PSƒ._èM0%˜…%è5h*`ƒ4H‰Zð/Pxø…Xø‡[è„(×éD€`;Ø€uè„|í„ÝþLLbP"(×s}pÎIÍÍø‡PXUØ_è…v€UðÐ,ØËßL ð‚}€€aÀˆ€ÔÑaø‡ øÐ{˜ƒÀ‚tð‚X°}Ý€Ä !è6È×=APL Ý ÐLH…$ „Ø„S˜…Oð%8_XM¸%xƒKPÞÚu^Lh„|ÀȇF*¸ì•_P…è…†~;°†a† °/HßaÐNØáNèP”X€_6Ôô½… èöÅ`x½Y;Y"Fâ  \€H ’EÐP X€9þÀzŽ_ „ ¸…±5ÿÝiÖÚ“àÙ åÞHß9("Ž_¸x•˜ÎÏ æp˜¥ k€_øÙ &„„=Kî¥ÎÑ€ôe‡uÀT_ð\Pêü¼¥ƒað‚ØÞá ðÐÃõ°x¶c Úôý ãG`_€Yóô†`_x„ÌÅBˆ…Q¸P-ˆ4°dÈ8L¸586Ð7˜… Þ%6@ Kx! )b å.ðLèÖЂ|ðe: ÛÇ}@X€o¶ †N¸@0°Ô€Å\(hŒPXsÖ_\¨þ³Ü€à…‘݇ €€0¾fø…~F€ÌN 0fX‡uðÜ"Øp€5`‡{è…Ív€{ a¨k\U°†Z(\à NŒˆ/ØMBhYp½Ì/èŒøGU؇úøfàŒÞ«‹~0Û'ýÒeÛ" WxapâpÂô‚XƒØPP2N‡…½…_\(À…jÖÔuàà UØN`Ü5ð‚ax»4ê"ˆ~†È€¨5ð½$Ù­Ëu„F‰K0áíê|ƒX€4@À„x€$(ƒSŽM(ƒ7¸€YÐþ„8bVMX‚ èF@‚$h 5Ð胔p0î‡ÔN‡_€9€f˜ƒÈ× ƒaðèa í”;ø…[ à˜6`ÈNm7–vî¿T ðó5ÐÑ °†_°`¹Ðád‘ƒg5¯ó[`‡˜¸kx… €ÔŽ_^mf(Ò™þ…}€€ó¾àÕ†Ýt€a€f ƒG€0óµ” \øYvÀ…G¸‡Npm&ÞWQ:è„®…NÙå†^øvØv€ËN§RºhMht Ø@°†FÎÙ„€}Ù~@õu f Ðó[°P®=à0]b¸þpJ@ÐGÏ“èƒHhE@P`$ðOºø„J@ƒ,‚7¨ ,XÔ¸ wx;¸ §ƒŒ‹5€q_Èø¼À‚"˜î“ „{Ÿjâ,H΋• (Ò“Øx¼ U B0bPy¸ „•ÏΆϋ–/‚5‹–G‰.‚a˜[|ŸÅc…PÀb¸-˜»èNPWo©…°£š~ˆ…XHt­¯Ì|y°'û²7{_ä^X‡‡ ‚ ŽÝ\à ûêäo¨{Œ û³çûDÏûÐy¡QØ€8Ôaâ“X_ž‹tøî“Ø€¤F{Ði¸€S¸þf@ f`â¾}{¢È€0Å…N0/…UøJu7|Õí`Ð\7ƒtf¨…êNåoØ×^è„^0Áà·P ‚tXØÐN( ða.~Ú5‡PPót0y:0Ï'†öbðJ`÷0u^Àìå÷·NUOºì„G`b˜}ûW-U^ˆN˜½èôÃÂ`€ìÃE!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê“XÜ»Ä×U%“ JÀ¯Xµ~ øgg„}ìì«®_%6¸è;%^ü+ëŸO/½@xþäÄ"ªTý[° ;\÷b¨°ãÅUŒ ¾°ÐÅâ Æ†a!øbv—†Þ†Ž/b>–°SË— /Ì x)ÒÏNv‚ °Ã3¯¿:ÙA•/0¼x¹Ç+ˆÛuÌ~Qá‹ÝÛ·Jø âêÖ‹”‡/nü8òäÊ—3Ÿ# 1„ûXÛ€xÎ/ˆ:¼Èp ƒ™_Ã$X ðEð vŠ ”éËý0/¾tt°¯“—aéܳhTýtr‹¾, ; ¤3–*0øðÂÓ­ã ;1Xà !ë”°¡ IT‚Ýr/ ÖrË?Hà…!là‹ÁøâÊa±jþ¾DÕ D Ã/2P´ ‡>d À‹Ì)¹$“M:ù$”Qjô ìô]?ûò/}-‘ vÈèËÃrË>„°Dø±÷ÞXÀçŠ]ÀÌ>ûô²ß=@À ¤hM „w E𲨠*ä·Á™Ë,F˜g'lFÔØc€ÜâË!BðÏ>±dP’0ç Å’ãP@T‹*vÀ[Dt°cBt˜pH9,±Å{,²ObQ|l÷¢üÆUÙ_,^ÀÀ‹sô‚ .¾ô"@B- J,!d Y­!À-&˜ÐeD*ôwO:]=ÇŽbá‹™Dðþ¡]ÞS‚ ôbY?ý]DA<B ÔÆ¥Šlð5Á”„ ÊÛ^tÒ‰ ý¬ ü-Ð oÄ #€™p ›êY—,Ï=ûü3Ð@ƒ./û°óˆXÔËd‹5ö3ÌX³Æ s°3¯ÄÄÂŒ5¾ðÂÌÜK, V‹ÑÌðQûè°Aû¼`ÍÄ’ ª°“mÅrK'÷*;xX ½wÖ cÂ>2šÀ ;±àbM'2pîË Ló¢B,¥ÆÒ/&Œ7f'®¬A ÁÍ¥ÄAÛ~;î¹ë.\Òá*Ñâ!ÑâÁO„…µcäa-^,@þÇï¾KÔrHÊß6úé«ïóéл»ó–x®ëÛ?þùë¿?ÿýûÿ?‹EŒS  P D(ŽpP ¤HÂá‹,äJ”x%nð Štaì‚/Ñ!P$(ÀDíºð€ X/7pC@!Á.x‚}ðERñ!}H¬‡‘,„¢  8Dq $°‰N\Ÿ'‚SHJ}ØÄ(à0„hA ’8E "l„h ‰\€"7P‚%´pÃ.¨a$–! ŒH>Ô@„,PA‚p€ã Þ8Üþ`#DС/€#a  GP0ÐÀ޹DºÅ'’²”Ézà p L<  ¡xÀˆ€ -°!¨b 4(Ll ¡E-%ò†SñˆŠ¥,‘8\ 7°ã@qƒ?F$œ„%n,Ð`@‚%z€ 7ø¢ ˜8Ez†r‚œPDH€T A"Š8E*nŠ*ôáç¬çF¡…Op"Ç€CŽE @p&Dò1 %x³žpÀ&Hè‹#hážü„}N`‚ ~”È"‘ ‰Pb¢cøæÄ™_ã(pÃŽà‹‹ö` ‰p ¨ŠK¼þP„'à -ôB@Á(Bá†â Dè$ˆ†Ttá7)Ð ‰1@Ô”f=k”ú*LóÝL„'@q 8Ta j@H*ªHŒ2   š@ (0Š °Á“I¤A$NaŠXǃ&.1 M˜bZÐ0OôA šøìú€IbA=…%„ƒ0(¨„ÁÀ$ÔQ U ‚H€‚ ¡·BHÄtËZrâšØ„/–@ƒnÒà$P%f*ALF„¸¥Á).É,T¢–G Á'NA$‚tZ A¡ 4|ö³:…X"ˆ‘ %ÐixCÔP_äC þ• ÁÊp 6ä ©HÄ6Áä@‘0 <Á‰T| $ (H „1Ð TXBá˜èP× ž °¢µÅ.VŽ'¤p LÞ€Äh‘ŠÐ@¶¬¢/0‚ £à•À„'fAN‰PTÈŽ{@QIDB exÀ ¨@L€o8†%ÂìS‰" €H™Ïì K° }°ãfá‰,Hp¤i$ò‰7°–›ÈBK1¡*ø5ÌB.P‰FôÀw¶È±„ˆT¡»¾zÐ6h·¼]ØD(|q M¼!Ì–@5“àˆ®Ú’ ”§À‚YŒoþ@H<EP!Ø„Sµ° À!¹&B¢¥L@×á³v2-âÅÖ¾¶pºðÆ,ìq Á¤CA$ô x2Fóá h9È1‘&ûâÉ7ˆD80…*? œ ‚à†@ÀÁ×Bµ#5¨Y¤ G"QO„¸!KÀ:71„$¢ ¯‚/ìì‹y –¡#܈O¨á¸¼ [‘@Œ¡„¥Ë`Šw„åí ´@Œr_Âàž(CY’V‡°ÕT^§/„ -D" L‚}ñ%(bEªp×çà˜˜…W€SSð…æ1Š=Ft #¨B$<¡…Y ¾°OÂ'4Á‚1ô:"¶1R¼ (o”•@ÒPõhZ"§¾8‹€ oH½"A]ŽG £„.  û R°µ/DŸþ=@tÜ€`BDœTœÂ&P Ì‚¤&X‚(”ÝDБ'½Á&ÁêᎠFþäCÛù ¸ÁC\@¸¸ ºÁÞ  À°Ø®}‚ƒ|‚dÁPÉ P‚$H‚v]BG¡ñUD>  AÄ`¦  jÔ%ŒøEG^À BD! Á`] ~B˜½C¸ pBÒID&¼àÞÊ`ÃÀT•á ²€Ôå€%¸ÁWUD"àá'(ÂÌ ΠȽÁ'Ü|~ P‚TA" A T˜ Z ¼ATA„cMœÞ Î"-Ö¢-zDEá-î"/öâ-Ο/£/’Ö(1 ı#14Ã1bŸþcbÀ2*I3V—0^#6Â]Œ€¹=IxÂ(A#ø‚•9É€¨BTÖ‰}ZÝ! ”hAD¸ÁDš•Œ‚ÕuA4ÂÆuD"AŽBXBGÁÁ)ØDDf£Eb["üV T[>T1&)'Y"ÄHÂ.iEáI–äˆETùÕ`!W\ÖI*]NNA#Œ!™ñ|%\µMWa’8QY;ò\¢ ^F)‰CLBT•´ 5¬U>ƒ"€ $Q ÔÎFFG4C DB(FBÛ}¤åC|u¥Ömþh³…P#(Ô1@ãE&MAæ±W(&$Á%<@ŒÀùÂ-ùB`B*—Â@.YDÜB ±@ô@cºÁUõ@„]ÂÐ5‚'Ü1’V"Œ‚PÂQü^M%A#T%$Á²u 4‚²õ€,BDh‚Ùmœ‰©&TAhÁÜ&€'xÂÔÓ%äX*$DH‚×1šœ‚ÔÑ®‰&(ÜÐÒQå'4‚ _kÒeTÁ1ŒDPB'(§qBx^ÀŒ€¨AC»iA(%LAbzBh(,sRBhZÈß(”Úä!@n$À` ¦‡â%þ¬¥N}šaÂC‘d]dY"4  HPÀÄEÄ å\S%Á&H‚œ™B#è¥(ÂÀ<@žÑ@#$"DLÁMúÂèT#lÑ&$A>`Büq‚AÙ1\‚—Vm‚'ÀŒÂ1P¤(l˜P$”œáEÂ<|]ƒ ÔR>lÂtnÃyJ¦<“Džž©ÁpFÄyQœÇ]Ø«A6õ|€Q·² P%`‚Š¢[8ÐV8YB*“åÀ)t&l¾1¨¿mZ"ÁäÃ,×j“DøamFìmÔ$­Ù«FGU½ÁmJmöÓRþ™šÖÐ'Üë8±€ËJÀ"%ì)ž=8Q‚ ‚1|Â,HÂHÁ q­ƒ† 9†å§Á’ÀÁÀ°_¼Z*–õ]Ä”¾Ü@`(Ì™,¤%¬jDðÙè[ÍÖ.þt(0P‹@=iŒ€)˜ `‚×%àùQ( PÖœ=E‚XhB(¬_ðb¿=À)|‚)ŒAFpBÀäÓï/ h&° uAn‘@²BH9-úQ gh¬Ü&X‚$ o¨?R%Œo#èBÀï¨Aó²€”E ¼A$T‚&@EVÄdækþ*pnBÄ}ï8‚‚EB*”ÁŸ^ ÄÔ·Í €,(¤.\À,¨˜¤$'„ZU6‚|Ú®ÛO"|•"x¢HMAjUA |?u%TÁx"» h§ÒÃ1tÇuîƒôAü‘Á `.à1T‚/`Á¸Áp Á%qD ±",à¦ç#Â1T[¤AdíEð±ÇñÇ‘1!%%1|C> bp1FƒwÁ\BTøý‘"Ä1þiäoõ H‚Xqw#FÝ'¡DøÕ9&ÿ°,Ï2-g6Õ2.ç².ï2/çNH®G(Bßö21sþ‹]écŠD¬—17³3“`Ò%lê‰T"Ÿ%GG>ÜÐDG7wAµYrÃ&Æ­ 3D°-Û¦Á0?3;·3²C©ƒ&äÀXíg…Ú xP@04‚,AÀl T$ LÞ$õÅ ìŸdAxBt¨;g´F/Ç1x $3Ëe$ 4ÚØ\#J‚)¸aå(° €\'‚$¼ª«À¤B%tÁ̹™[>Á,€0o´QuqŒ‚¦~U"PCVŒ'Àâ(AHÁ'Tu'Ÿ+¸1@`ÔÙ´$T‚V‘_‚&¨™@ª*R·µ[þÇSõï•pB#Lµ"@(\‚)¡œr‚[@*pBÇ‘·5% A%”¤'ôì ¥<@R¾5fg6H|bP‚&hÔÐ@Ts5Óh­éô&,V"@$PÁPjÌBeûEWB(ÂDB@÷(@f·pƒ½b„¼!D(œ«¼'ÌéD¤AwA%øäpW·u_ÄoÄÐÀÄ¡Á& ™Fœ%nêðu—·y?I7Ÿ·z¯÷HC>É+ÈÃ8<-0G&8AˆI|À@Ã0G7èA!À‚ dD Lƒ|CI|Á´9ŒC4|=ü=„ƒ?¸ƒ!|C7xþÛ{À¥x3ø0¸ƒŒ7üA5p@Ø+@=ì=0T7œý+ø=œƒ?B LÔüƒ?TÃh¸/DCŠKÄ<Cœ?7 û5t=9Â+Äè7Â5èAlÃø‚<´½l|±G=¸B0ø6”9”C!0€d;‚‚ÈC××0ðÀ!(€LÀ $¿:l~<\iù»D¼|A=¼4=Lƒ?à9ñ;,(€ œÁø700´>ÐCÁ‡¸ @tó0ðΖL™|µñµP—h¾ Uû €Ü–?z.†ÓcþˆÛ!êM¨§Ç׎mÜ€ùrBîC:ÎSWíݵf¾®ù¥$U—…?:”hQ£G‘&Uº”iS§O¡FEš†ÆI¾.Œ)³DÓK’ÜPp㋦7T’\ˆd I.HYˆ)@O¦Ì²Dw(9wO¸¤xBKÞ¶r<êøðE°mðôq¡‚2ˆnA·(P—pZäLíê¥0BϹvúÊuÓÇíI·p´ô¸è6U¡ Ñôz²íÎÑnüPù’×.!·¾¢µà1oB3u‡P¥Ø"ÏЗ!ñ|Á£¬oڠ׸Yø‰j‡ԕ›Çmš»WÛ"l1¼…X |1˜ö„Aþ¼wþPÆbŒºÆ/'Ü)çŒsüábˆf Qà›'¢Ep¦áF u¸ÇœâáÇžq&h¡C¾ùF *3GŒ¡á&šf܉à uô¸c?Z0X€g›i΀FnzåŒ/¶ñ…˜phç‰LPñ玾x%(,X€Š«¤ SÌ1É,ÓÌ3Ñ ‰HzÂ"À$5(… P(øÄ%PðM. A‘K"aÁ—Täò³‘|0A!F<¡B‹¾@ð…?4rçƒräQ`}ô± žjÊ)ÇBRLQ! haà›Ÿô Ê€T@Ø&š;Øâ.ÎáÂ{&àa¶Wäþ©`2Ê ä °ã®¡g›/šë&‚ ¸¡%u ñ§RZR¼Ãœ~Šƒ/~šf‚LÀã A¶Iá b€¹wr4úcüÀ h‰†ÊñÎ(êê)Õ…LÚ˜€„xx 9.(õ'p¼F8Œ&â,:¤žàIõ\¹8#r ñEr@˜€œRý€–f`™Ç|¸A×—f˜\ÈÞY( ¡'Z¡YB‰)Ò¬Ú꫱ÎZë ² a8åLâ6Bùd–Tö\b ¸€$ˆD!ˆâD0I¢ O0é#‰´È§/s¢á¸Øá=hñÔþÀ€–'þ yÂ?î¸cÕŸáÂéqPQ‡›n©ÇõùF=œøƒù¶ ‡ Xä)–– lrgjƒŸsºÙ¡…3xàF3Þ™ s&hšxàbžp`Ù‚ΰ<ówÎêŽjüx"žgi¹ýŽèµ—˜m¶áAX¦1„‡?ꉆ¢ñ'év&0GK£¢ñ?„c´p‚¦qˆiDc 8G<ä¡rT.7*GÌŒg¥À]->º¡}hÏ\Bû‰óäwXåÐC<&ÐŽuCgшˆ¡£wˆ`F[øÂžà‹-pÁ-ˆÖ³Îñ? daZÄÖ E)N‘ŠN:þF(îrƒO<`žØÄŸF@–HhboHÅ,4± 7£ #ØD.°„$ A I ‰1<(BŠ->wè!šr,R0AÌ£ °ø@¾L8'DàÛøÀæŒ?Þáßø @ ¬r„Cfå€E€1=|c«ôÅ X“ÃZ_x‡;¬eŽp”ƒçÐC ÚøˆÁø0Žsç”ÀÇ7"ð|8a~"Ð `ÔƒÀ°G ʱ MAƒ.@Åôá Z¢IÙÁ*é×µƒ1@ÀKZ\ÃÌ„E7@@ZlƒḈ*ñáömã2rþa`!‚B03 ò8Ÿµ á`ÐÂZg¸F9*Ù 1¸cëâ1¦Á褯 J>.p U‘¦5µéMÅä“…t!žx1ˆq 6\‚FùD%.1ŠJ¸I™)Ê5‚¨”'í XJ&V(§ú"7ʯ.©”W<¡ªCéž´¼ê‹3œ5)PýI3Ò ”hðrim–Px° ì`)OØœP¨¥¨ iC\—ÒŒ­BEaëP¢A ÀâOÃée1›YÍ"¥ (èÓB8 ª!¥¡HBô´Ùh¨ƒ kG¸Ù¤la @ìP^ñ ÊÐB¶5õƒ>@àÒÞ—¸Å5®/þ {\å.—¹Íuîs¡kµQŒ"5MX@‰Q„I£Pv‰‡<`!’°Q¦»]Îâ¼A©Â(ºð‰*H…h°Ä{gº¯D—¿ýõï/KŒQ`"QUTÄFŠM„ …C†B6|§‰Å¤†’P ¿Pƒ&’ˉ/)áR Ä&ˆ@*$‚sš(1€ac7í%S>.Á‰÷æ GÈAX0 4(b!ˆrR$Ñ…Q\å —ø‘_ú 89ù„1eIL™È”pXüRL áeȇ”/á†.XËZfˆˆ ÇHÂ1zp„ c šh„$(þqŒ,ÀAÏ РӀʼn@B>¬ÓŸ\Š( zl $¨9SÅÞ ‰4x oð%>q‰5dân t˜}‘M(6žñ­qk­á™¼dBþŒ„Y(¡ IH‚<Ñ5O,$.ÈM „@¼¡,K ”¢ˆH˜b •¸Á%F0 4"³ )Hpƒ˜"J¸A.0Þ„¢ >ID>úpîMH!H7 Žmn ¾Ð„&Bñ6_ø$¹¾ÈÇLÁí,HâTèÁBX ¨a>Y4²` LPÁÅò~ˆñDŸô Ã,P`‰FŒ‚š8‚¹Ñþ‚#°› §Èlj!¸…x ¾ø„NÑ]/éM‡J>r@ØZ*@Â| øbièÂ%²°‰9Qò nP‰QÜÀÕ Ê|A…|= ØÄ"¡…F<›ÐÄ(–‰,§ °^ÈÈ» ø‚]”È{…K@ ⾸QqÚŸä# ˜XÈØ¡–Ø ŒDNá hBé…©ƒ¢‰P@Â(’@ƒ*Ðàj@A(Ò˜…àC¹A̢҇èNwþó¡ï E`b ¤Ãd‰$xB²Ä,81‚|Œ‚ p&˜]vP$b (°:(ÆK þ¡P¡OrwƒààEIäý=h·Æ‹ºK 0„î'Ïìèòo /Fáà. Ž"ó.Ïááò’€ÆëLmÑAh|á\Œ p¾boö h€–@÷h E ¨€ÆëÝ„"Æ`´ Æ °/ú0  6œðòKLˆ! "¡º .ÀO"áh€ º€ˆ (oȆ Êà $ À(î¤ x¯¶° ¹P à/ Ê@ Fa ² ŽÁ4m ¢P  ”Ià”€E Æ+ º–  ÐŠ¢ ’`Š/$þ!‹(¦À ª€²$¡<÷H`Ö‘Ðà0¡ ÆàPÀ.a Þæ1áÄ+RA»”.(à Hà O ™±™« œ¤àÅ̤Ü.@éöÄ‹Lî,¡ ´€¶qÕ` Úp!:«Ö"Ðz` 8a¼BáÜÀ PÐü’€ÞŒâNáÀ 1a ÄkÞÐàQð@A «Š-õ„àÀP~"@!Ò@Õp(¬Žªë @á)» N€‚P 'ƒBÔ0 ˆ )úÀõ„®³Ò@n ÈPð'$á8‹b ¦Q 8¡.3:‘°nŠê P À¨¨ ¯ï«8Ÿî  §€ š/(„`.à LþÆà)Mj€¢”`⨠ÒÞà\ð(Žáh`öº€ –  ¨ z  €¢ ÐÆ(ú 2§Q S:5”é.¡úfÀföÎDÄË@ÁQ8ª @áÀ¤ÙòÐ\SÏX´`0}¡´ àà„ XÔEÝ€²€GåoN.BáÍBA FáGG¡EY@@!42=b‹ÒI.á<-A ºàŠ/(X ®îòa#g*´†”ÀÐnDî-2²@´ÀP`ú€n@&òP%äÏÔBý3OÙ o´ÀË&ÔÐþ Þ n`*. à’,27´TaLš°ràÌÁS£¢ Ž` ´@ª Æ F Ò@ Ñ‚ì|!<ú`P` Lá8!t蔀m(à,A Ç@ Ò`€ÛBá” Ò±´Œ­óú€Å”ò P€ ÏX@ ¦` 0TL(à¼Þ`^ŠR Œšè@Y¬'BæÀÿAN9Ìà€ŽR|ÂNd Ê¢ à[_S\‰04!$Ñ€¸°éØöÕI¼(”` ‚®+"£&V5Ãà(€,Muggìáœù Mþ<¡g*á|¡Ò ²à”ý°¢ìú¤QþòÊ`ÜÎ A!îVUi ðN ²ˆ ”@ðŽ‘@ƒâ "A½ ŽiÇÀަn!h ð6'ÙÂn€2¶_‘âã~‚¹“Õ Šïî”h`,4Áó¦m)a37áM—À$¡L!@ÓÑvo,ÔžÒ 6!ÌáåR(Xà-‹’®–ge÷¿RÁ @$ÓDN FApòÂ2÷h øâPÊ®ò!XOáê²À»æ/kå.YÃtöÏ9•äš7Ñ8¡ ¸×‰Ö6Žñâö Ô!§ }§@þp¨ ÂÑ,‘¢ô`~û` / ”Qõî”&,¾¨N{SR($ô„`.¡ T".=Oö€Ý €eƒ¢ Ô ½àBÚª’ŠR uvI˜¿Ð 2)`„­†,A P° ðrô”H€Ž¡JUU€<Á’àH`R!p“sVöØ ôT|#A-ì„µ è-‡N ”.àÅ×k"FÀÔ ($á^—à ’/­‘((ayG¡ø 6 ª€†¥ø½@ïõ4–€F€ú`^j” ÊÙf 6áLAÅÞ¦ r` ÚVÔþ€) qÀÂŒ¨+—À ¥Q ¸´„Iy¹ò„€óLlo!퉪à- m²`âªàÜ 1—{pWúr`V”Ž‘Õ='pË,Àý*)Ø"¦Žá˜›7 Òàô—umyáš4 ¨N›où¼lyœ1Õ™ßà–›· $áЛ“bW³ ’ó°ù–Ó, @Ô9 AêñFa½v!øl•1Æ€ª/ ¬¸”!º·,Ì ³6¢}ìšâ œÐ3-ú£5 QZDA: Iõ(PÕ(1°¤Yº¦ª@ Œr”[Z:-á-i`g:§¯&¥`ŒþuzIîš2A*C¸þÀK)Þ]b`¡j (P¡R0+ÞòNZ§µ:*_+Á²úL^aUË«!”æ&®¸Ê«^á b`á¬2áÞÚ®ëú­"©÷zhüš«œ*¯ùZië n+èÁR@šAô ”Fê!ªØš«†Æ«ôAöZ¦a!ÎÀ†`!Þz­£a ô ô©‡fâá nËÀšpVz«m»L>á-Ç€&¡hÎ!ž®e €f4Ú!®¶á4<@ ¶ÁT‚I¶AÞà ÌaÜZ` a¶¾à ¶À *þKHfàÔAÚ@¶áfÀ‡Äû,ë'fÀ_ŽG8üEkh<Àº!™ü WC¹¹ ¼£É C‰t8Þa7¶Á|á @À>¹·aô¡}¤¤Vj!îøé"‰¦,!2½ð¶e<$[®†$;œ¢¼A€ü|þj! Ü;f€(û ] hå7€á&à†þ Èá¡xÀ¸¹<€" ÀÏ`›šá¦A‰~âôàE|²9 Å§(¨œpöf<Ö›ÂÃ@íM¾àâa¦¾¡h¦{Î~¢ê¡`Úà8Àý±âº'¸aU¸À,…ÚÏ"& ’ Ág€âÓ-Þ’&€ÍÓé ^(VÞç rf[${ªAÔ!Ä |êã¶xÅ;€Á|Á|üÁ’ øá8*Ë0à€Ó›=JƲ¡¡‚BÜc!š!8nªØ¨±¶e=ärÃh£(ü€  á!ÞÁÁðÁ¾?"Bœ€Ç¿ þþÀ þ*üa‚ á ¸Ú]à¢&à arÈ,`D€7 …°@„|aô žà ¶  "æ¡X|!ÞhƒÁi Å œ™dFÁÝ¡ž>2áà}¢å‘€b2'Øã'ÎÁ†â èA²Â ™pÊlú¡E¾ò}!,@SiŠŸ*å¶A€·’çèÁ èÁÈÛÜ… àá Á"à³·Àfê¡ €aÛýAƒ Ú!Ö§ÜÁÄCZT†€ øç¸€6ô@ÜÁNü'ž`xi>ÛTôÁÆÁ®Iý­ðá&ÀþâaA0&œ€  WR€@`à_føA€¶€@@ ˆ†ÈÁÛB?y¾ ô¥N]ÁWЦµ91¢Ä‰+¼À’|;zü2¤È‘$Kš<‰2¥Ê•SH˜5e¥ÉfO|m‘—‚1_™ä sMž<g|]k!ofG¿µxˆ…Ǿž ·Cž=òv¼òÍI &’×f\4AEØKJnÛ7y;!ú|+Æ—˜p)ÆYlÖM('a[œÌ¢Å~ÌŽ|%l¼Ä.Gz”F*,«1=P E*ZÌ l›€Èž$Bí¡ ÙH$dy iñ¦/ĸ1‹$Irþ„"Ôn|¢È<ú’ˆ6þ›µ$ù¤áF˜僄iðXE’¸q„{ŠPá Þp»!÷Ÿ"½qò,,—DÌH63prŠ/©P¡Æ,n\@ÃiDr fSž$T˜0%’Hd§¨ÑCA],¡„Õ<ß>R(eDí]¶€·M#l4íðnX‘$³¸Ý±$Ê"©üñU|ø‘×gß±%n 1öY/û' @ƒuÔ^¢F>Ÿ”¡ Üz;Q(ž„«¯hDBE$cXW&%( ‰»DA€> Pcˆ„@±‰H°!B}A”@L$⸠0Ñþ¦Y˜B ›è0¢’t@•­lC‰Àj£(G„@NŒ€rŠ AÎL1 Î} aȤÀ‰DTYH„$*A KT"‰(0q¤Ql¢ [Ã;’,8hw¢ I‚*%Hð}Є£ÚDƒKƒž‚ˆýw‰IbŽlÐD ä(ÀYpJd <± 5–!Çè”( ,žU©(µ¡‰Q,á§¶œV¿¨Ä~ÀÑ*€Â§bÓÞ¡GS ç‹.ŒÁQ©X‚ªZb‰`FDž/&‡$¨ïŒÉ 2Iè$➨‚&²D¯þHpbr›„5Q‰M\@  Y"@ƒ1(¡DHÂ,T©»,”¡ˆŠ 0Õ…á‹üìÈ'¨DFD“eÆ”Ý&|ʼnp$jx’L‘¡ƒxâh™ÞAX€7”Ä Æ%¦P†tô£9X¤/¦‰4!þaôFÞP”ZÄŠÄ&¡6déô“ˆîg¨½!Èó–) h£ÊRDõ…)FuLG T¥RnЈ‚œ± èêXšÁÄ @އbŒâé¨ÔÜJŒYÙè$0^À I줣|íëN.Q $|,xa?+¦²’‘ ùÈV‘P þÌÂW} €%ºpºAðC5ÈD#’Ç‚P¢ ÌhØP7°i$è›–P ªà– &r“Ûqb—qôM{x œr ” …(KŠ¡îç$ð"”Tè"©ŒcR‘ÙˆHb»’€l$·ê‹ä¤€¹F²Ä—äV;H™Eˆá,è¢á±fÄêW7,HQF¤€T‚ú¢#@ÃÔà«DxB —ˆDò¡‰\¢ lèì(íUÑe a¡°F߈,x¢]ñˆ5Ñ…2,, ºˆ4`ÂÌÙÆp|,ŠhDÙŽ¿ö4"?5È ׇ§þäšðÅ(Z ¬è®´dœR£ê‹øé 7ø®1{uøô#ÄðDoö;«ýªY"Bh+éØà±ª]õÅ(ÆÐˆEv+«+D,1‹}„”mhi”Qƒ|XÑÂ)ÑXˆŽK$A$u6 š$§LØðgPlpš`:Š%¤óEâNá-¸a T€ÃDÝ‚\™(-CÜЃtY«ÆÄÄ&F!§,h„!ñNF8 E°­\ë¢DúðâñR{ÍÜ>IRÁ®j‰"ãCåøæNP ]}(d„ºp¾ @ &ÛLA!Ntz, J €<0þ7sÃÀµ@ET!#(A_ÃaÎ$“„rK ï1Ò¤J~.qÂ9VÎ 9&Ðp#8tŠ…Êü—J€‚ šc Ú½M€gj“'˜É,¬Ò,Pƒ%“@…1$A cж;‚û<7 8E4ÈeQJÄÚ$[ÞØí°›D­'“B3'’ÆP¸çÔrÏ}Š$cxò&^*» h‚Jð„‹9–N(!¡PÂ%hÍ·˜Ó.ñ;aíØ° "8‹ ‡â¸ØUsö’Äõ6 ztqcW_C ŠXÂú ¢|P ”>†Œ®Õ#JDâËÛ(a¤±]Œþ”@B½/|I$¿7ŽÆmØÿò‰@F¦lb¤ÁÜîQp%—À†G‚‚K7ú•@ƒYœ lPƒPp5 rH¨„+! 5‚j°„)×»üËçãZÈ¿ÿM„zdÃ'•°e¶Qj0iPH Á) ¥2}€ Fç 4°Ç ™F©Ð4p D£ •sNœ@ 0L& ‘}ð‘.ÿvù€w0Hƒ  “ö‘y³A x¶^IP!¬4ù@4À#˜Ðd4à v8J1çäçTS0 (@Øô ëWƒ_†a¸¼Q /1ƒ´A h@þ70M#°K  _¢}ðs$Jp ù@©à! p `M=Тƒ@,P³Ð\ò4w†b‰‘(‰(Áá–Z`X´!Z@ jà;§0 „ˆžÀ@e€l#TUèÓšÐ—à    JP3¶h> —c3‰¿ŒÁèYP4UÆ‹–÷–G;¨‘Â+C(ŒÓHÕ˜TPP0Ðñ™¨°Ø=0uÕHŽåXƒB0dd ¡à‹$“ÌhŽñ(Ë÷U;Þ8ù¨ûho0F/Áü(I¸‘eŒøX ÉãA pàŒˆU€þíØ‰‘±Ñ£Ð„F§p,àtip l’§p Ç@ /Ÿ°” ¡ ”p-ó b DÀ ÇðZP“Z€î¥ ù@Tðˆ©”!mî5,–ǰ2!,†M)ñÇÁ!ˆXp£ ˜ i@!y(Ràa•ÀÊ’iЕpuDÃZ GE0 › Ìå2›@)•`[K Qjð È7—pS¹”Y ÷v¾púÂ8PpÇp Ð/üQjž@”¡@³Q4И)ßQ…¾ðsWsD‡óÛ&¼ñ?¾ ¾À'ÇGZ` ˆFC¦@TP]À9ó “T€¹áK\˱_kÐU‹økš¿é!•£ƒ5‰=ˆ]€Q7 U@žQ£ðSPDSšÐB@œpd£(Pœ¢Àƒ•·‘SHð—€-T³ mà †ƒ…ÇPDK«(€ Y )– –ècmá!‚ ¶µ[` þ4“êôJp_IÀ&=ÐJ0pˆ4‹BPrš Cg J š ”@ŠcP,  RË7H  I0j‰0 6`lx ‰Ô»n€Œâq/BB˜Ðœj€_{’DZ Ucp¾ú†)S‡QÎj» ,¥ÔªOB”W FB‘ [™y}ÐL÷Ro€V™—fhbï¸ÁÊGø² ý§À)p„P„€Ã„`þ€> Ãá?¬Ã5ì `0Ä*ÌÄM</À ± 0€ ¾ Ãp ¼PÃp 0ÃþsÀÌྰeÜëp À f,ÃNLÇðQ6ÐS6xshÀ˜1ŸæÙXS“”q Ÿ']ð§¹D>#! YkA°ª`X°ÿ` ÷°2 é ÿÀÉ`ûð „` ^àû %ðý0 vP1%@` u¬ËÜA •Â8‰ eÐ\\3ƒÌ5VT š@iä;ó v¡ÀlkÓÇñ Tp¬Q€!=f‘¯\“¹¿à:PÖð k°^p àvðXpÆéðª Ç·`¾Ð^ ÿð¾ð½pà ½Ë =þù€xë¬z`à Tð¸Çà Æô¸7€MUy“ÌØtu E ïC}·b“H0“y£D4ðº%þÚ1Àsú Ÿ`žŸ@ÂÄð £ðF0ü e»#,Î1F FÝ›Y*Gr Ÿp¬ÅÓ[ò oð¸32†L`ðªÐ >°® `ðÉ2` `m2PðûÀ ý¬^`ÿÐ Ý ` vÐ ?ÌЃ½„{”•„›QwUR@}Ä73€ R0*”0‚p 3’-#PwBà¼@HPNT0 = #` ïtÇà,í) åþµh° ³DR‘˜àNÁjeÀpU@¦,Àl0H„ 4˜ò"3h@‚I—@~šj11“µ` ÿ0 ^Ev ÌPÖàÎŒpο` vP/°ÌPƵàÉÃðÃpÆ„Mà+±Ž‰Ðw;j@ÖUÑJ֑уV0*§` þ¾s‚c[Ñq£°žÐ0˜Tð;±žíIh*¨*:à ¡ÀVAÖÚ5¬øU nÀjŸð@‰À„İ,Um4rdé$8;[ep^¬·tP   tÄéÐ ¼/Ðþý0àµÐ :\¸ÀtÁðEÐÁP.ç*ÁŽ‚¿;zªsv›°%‘œà²Ç@roÞ4ר7 âÅ/i &ù?ƒ‡!¼¸DyB¾  5`­KäBe0eP ü‚ Sྠblq!ùÕ`nj¤P\3š&¡€/0ç¿þ¦€ :£¤å§ˆ}Ƙ¥}@“¦pžo೩ÐS‰hÀÕ¢‡pH0;‘P*Ù §` H` jÒIБ†B¿·Ež%Š`¼oé ƒ%Rñ³@Ÿš¤l0£P p i ê´ JÊ®£’þ–ø0p±*{ R£ ¹< ì?l€9´÷(™ý(€0;ÝÕ˜°™’ =°˜pp#p¾œÍ5¨[=``*vKEŸ9D€ºŽ‡ 3‚j¢5#_òV“ °V3lp†‰0ò3p)°K6‘RYlH°lµ¸â…(¿(0+†EñNØ$3Iv¤ Áö¹p¤÷¾@ u?÷¹ ¤Pu_÷{ßö! sO{`ñ4H¸žpv–çc±#¨ÂB 0Öµ™¨*/² ú‚“’?1Ú1á4ÀÌC §€Âú% d ÷¾Àr|à 8þ ÔÐyPy@Ø€÷ƒÀû¬à ÂÐÔ ¾¼?Èp‹àúWP Ô úºp…ÿÇ ¢¶r c̶1MD@]”ž/¶°{o ¶à W¤` ¶ï é÷q0 Ï0yÐöêÿëo ¤@ømypóUÐW”e®lPÇÙ2cÏÈ,ÂÓªà*mrHí±ÑªB1Yˆ€ÛåË6l» ä’%Ž4gÙ¨ KPÊ ¯=}‘Îà[yríÁIÔ—,[ }5(yó¦­£y¢æ º‡”TYyVrÚÕëW°aÅŽ%[ÖìY´iÕ®eÛÖí[¸qåÎ+«"+þ¹X ª¡«Õ >+ÂðÉ$J”l+¢œ³ ‡Ó<Õ“ÍÛ$Yd&ÕIÐ ŠœRtUЙF÷ä)¶ )[qN¬ò%l×.9C‘úLZ:+ æÑåÍ$G­–­Ð5(²0 e­Bä¬`²I mAº]ƒL_rÀ'KPc±R6ðìjÒõÙ$HºÂ¬¨QÁµ ÈéŠo, :¨èp@ 4ð@TpA¹rლŒð%™:ð›»ZÉ#Vбœb*¸‚ Èpæ cXQQ¸ll0£†(„Q(Žp i$Ë;]’)(… "eH¤ç„eò%gš¨!—+&þ¢†=šÐfe²ó%—&€(h…¨á ql¨`iŠaE—(1h&|ÉDò˜“<|ñ&O9 ¨’–©£½TdEÉÐéà€!ƒ”AȨ@™Aä³â 2NG*;õôSPCuTRJ€}A­´\rA¤_^½D„‰eV)ÅÍ‚ ™äþ­}䀉£ƒI€8€‹¤â™g ØåÈH ¤E@`©2  c€C5pAìÅ„ghÄ pÄ$! Vœ Ðä@](#zÒtÁ)ƒXáâhÅJQŠLBÊðŸÈtQH@Žw;äa}øCµä‚+¹0B2A RàÀNBɃ0Œ‘‹ˆá [‘E.”dÅ×d¥ŠLlÕM”¤$®()+[ZÁ P¸DR¤Íœ"…¡hE(V«m¥!E¹r“¡ìB8^\A2„" a\‰²HF¶ ¤Ä®ò‹m¼Â"Ó˜‡4Ò…UÈ-ùÃcH‚Éä&}I(â’þ£$åÊöð £ «|Ãr -”! šˆDJyËÛqÂ]0ˆ.yé J(¸$f1)—|dË@3ÙLSš¢baIÀáš¾èC$1Íi" Gø¦/¦PÉ•%BëÜfA@)J´äƒ9ÆŽÐ_äc £LÄHðL€6œ%hAGµ ÀùèƒÊ)–>üò@DPÔ°Oƒ(B (ð¤Y.€ _a#HB|á†M”%ð|™$P €6Ó¤ù|ƒD zSœæT-”øffñ _Tá ” ÂòY….äCyCà™O|e’¾¨iAº@I_#¼þħ/¦ê‹.äÉÇ' ‰Jãi„'º°Ö|¬U«Na-Áª KøbX¥"ª`‰ įÄPÄ/¯ºV_ÀA 65HŒZO ±ŠèC"¶ÙJ²àq!FÆS úB ñ|á ¸ÄÐ…,˜ œE[G‘„Tb¶J¦g’ „O£¼}¸y¡„Œ  ‰'.Ac\Â!MB¨\p“º¼ FžO*H» BPƒÂ7«Ø®¢ßKH¨ "$!ž€'rMƒSœb ©6¨P†@øâ$@Á\á6TÝ+À´0ój=Ÿèj¸I‰)lÖìÅ$%Ñ|²@ G¨d$!…Oä#]‡gÐp )ŒÂe`ƒ$þXpMb$ž°@¾-‘çKDB ¡€jÔðñSL¡ ßì1ôî‰O¸Á¼–`ü*á†xÂÃ(@Ã,ªàST2H@ô¹ £æ“ÓŠØäˆ)€Ï7àÛLX0†×h@B>Ÿx"ü<¸Ž ´é(ÀDÔЈU[¢ ›ÐÄÉé"„¨%ë§glPITbpp6c×Î;I ¸ì÷¿åˆÉ©å$b… 5ЂpºÀ'LPƒ$HQ:{€Ž*ˆOx³Pˆ„PX%*Ø5À„8‚87òCŠ3-Ý €MظD€D!(9$ƒ@þøOØAƒxƒP°„˜)b¸5 O8‚@5ˆ„H…ˆM@¶,P¯1È+Eˆ„+_H„á¢=*¸À^“¼ ƒN8-@´1POpƒ,Ø?P!!@‚m‚ƒJ¨„râ„MX8ä?Ü!†„ƒ ôÃÓ"Ä*U*‹.D§‚>œ¹Ü#+.,‹cH‚G4‹7àÂKìŠMœ9m{™[…_Ê1 (24À²v"D–A6È-U|EÜyƒôƒE°h§SH‚Fø¥ÏRƒ_²K˜EZüJ €Ð Fc<Æ „®:†M˜­ËÂù«?ûCF «Yx?j¢²ú„4h™5c)§è4þð 4DZÇcø„O±l4ˆD¿‚@‚ã„x%À¨vKX‚T˜Æ|Ì|¸€P²$èĸP¬®cGƒÈ@D$@¬FûįÐÈ&Œ+‹ˆ ÆÎ‚ƒt…fÂÆ+CƒHüǶ`D“¼@8‚n­hú$I°µkR„rÌD4 QP„T,ˆ)`7@|êƒ4Hƒ>èƒKèIh*°’K`¨SøDS @P 4Pèƒ)H„#Èaš$¤S„@¸ÜJvì‚Q('fܧ>Ø„(¡$JøCƒ4X?! PK§H„K8†) ÃD8Ih°)P«)ˆº|¨‚4HªPÀGþi¢O¨¯‚ ‚f*'6CÈ”< R0›¦ñ¢;: ÒA!¶"$Š££˜"ÐDͳȃF‚™KЄ%€§ +ˆX‚˜…P„<[‚2x¼Yà­‡r6O˜%0…$xM¸50…K %˜œXì-Ø„Tð¤1¨„PH„.P %p¨%Ð6 9S%È‚?S‚HØ% ƒSø¥”sËM¶|PƒH‚ß¹PƒOxƒ$0âL…F4Þª„ HƒF¸SÀ" `S¸bPMè±)8%Ðp¨¨„ó,ˆxÑË|‹d*t` ¥Èd  ´09Ðþtp R–¨lˆ#HˆŽ´p†0P [ˆ] – „#<‚vÒ‚—¬‚K6 J 5…K ]Ë;_ÈL-د1‚SwD€ *¸2xbÜ-4ÐR%Ó Z‚Jƒ*ð„ä½Ñ>ˆ9çKI8‚‘;†1 ð¤üëª.`K¯²„S€7ÀµPH£ê‚är>JøÒ…Š„SȇHP$8‡³„„j„2pƒòº€ i‚`NƒR§tó…fƒØøºýŠFÚˆ Š=iØ”lɃE!Š<°l@¥‚ £èŠ<8Ö-‘ó0ˆ1jþ5ÑMƒ0†ÌiØ>Û1 Öĉ‚°‚0¡ÈY›Ø]hÄY¡W_XœùÌ•ÉNƒ˜ÅÙ$P`ËcË8ØSðb„HÀFK€‹ý„D˜>TóE L85 N(©%h)ðOXJ¨5*@EÌJN8xÓ$85À§Ýr§-ˆ4p½K8ÏK €T¨$bè>OZKiãÔ%YE‚(dÁˇ¥*‹…Ï“<_(ÕOH.5P$@ºSÀ„ëüJÂD„FPм)$€ƒ «f’9bh„P(É”´ÜØjðpˆ‡ñ[G@âÙ£: o žþ8ñg¸ ] êa‚AØDR@¿õ…Vܤ–Ð3ð>h9àWÅU†”¹tuM†]H @„gH€Ð*!DÐð؃†òd˜„àƒ0hÓ,pÇ}E.!˜¤S §R‚%p @*˜Þ·šÎ,pśЂP„H‚€O~ €ýÌ‚2 µT „½L%˜Ó¬ÚKè HOx58¬…¬ü7àÆLËøÌªìÃ’„Mx€7¨>7YIhµ)¨`bH„ŠJàAÔÀ. "€0$P‚M@ƒí[‚ˆ€S`þ_ŒÐ ˜ÄÔ¢„SØlü³¹+Jø`lÇA˜V]`Ø•$v„(p<¸Q²¡–+(†0ð c8€Ïe‹¸ 38á`‚àƒ=gèiàƒ:àƒ<˜*ÒuÓÕQXtµ‚Yd¨iXHH‡du©†V8x&Æ:øœ80§>¶˜I„48HLÀ„2èKØOPè•íOh„ÐÚÏ2`A²Š¥},$e-ð„L>‚¸„%/¥·#@ƒ±"† ©è‚%N„µ%àÓnü„éú„ ð4ufwü„)–ô4Ðä%@ÇþSO ‚#h-"+ô„·½ J°Í4àÓ#`U(L@ÈT ?$(5,pƒ Þ¶Dð¤#`ƒVŒL)P5ÁÚgZ„ÜÐ >pÅeèd=ˆ¦(\Õ8^_j"§¨i¨–!j‰‚`‚Qp[@<€‚:àGÀƒRˆã9Þ …V!H¨€I°…» eØ£‚ÀDÞ‰0¨×à±t@Rƒx†!šÄ|Fç+ ƒvÇEüŠ@¨j²øà±˜L°á›˜Ä.HÅ~Îêݤ Fy’„mÒ‚J¸1¯šµ2°«²öC¾¸‚ <1†&p„\p„l€—ç!g›þ-1‚ÊÈ…E!dÎtŠl85ÊŠÓ±\ØHV„a…‡:@„ˆšg°hŸöÖP†d …°>V2(#c8[X–\ð o° 9™® jˆ‚ÎT¡IЉH¶é V¸Àjáþ”>pƒr¦4 Ã\"`Hþ<@˜H ¢Q@c²cXŠõ&è€p„e‚Á#­§X„(XÊ0rdHG°]@9f ¿ž„(„eP !Ɇû¦liH€ð†&Ø þÆ+˜< °ií¾“:PQX†¸ ix¯XmÖâ.ñRʇQ [¦bxþgC$øP Ó]D¨#h•+P¢+ …y¥(aòX„gX£DÂ+8"Òa7ά¢)Æ(2+ ]¹‚1B‘ÌL£+°àLßñ£pò‚r© #¤<(\]é cøðÏMR”4q: ï¤' åÊ*)¨„r~´©¾)šXÕä¿:€e€â®ÈÌ îRé58Ä:Ÿô³Ì‚HßL+8`ƒX[JÿôO’1"x€Gû¤vºóO§@@§¢ô$e$«¨ëª)ðGPWÅ|@8È9`Äâ„F¸¯öÃ\ˆòÙ’8ˆƒî6)2‹8H^ÜáÑ #ˆ€%­þl ©J;ÁÐM¨$l„;+äÓL„[TzDMPPxƒh„%`ËDÈ8µ®õ|äÁÅå.27 „>˜s#«Ü]XV Ø…Iø T) cP†j¥žÑ‹Åv ˆ‚:0]`j¯ o'KðÀ‡BÂaìsÒcI 7˜  #´„˦.˜"8†Yà-`ƒ,ð¡ó…, 2°[|oG- 3=°Øú9ž<­E`Íiú+†<‡0°aˆ£½.[À ðí¨/ö›p¢MI¨¸úҕׯX„¸i#_P{­†‘ˆ1·÷…¤¸Š**ˆ¦ß‰µ',¹þ0–Ú«7VRHpl53«ðm³? êªfKУ23KÈÂV§ÃÉ> ú»ê2 €HÈ‚#¨*£·PØ„u¶,˜…úL„UçÉØžŒ„10¿‚Bj˜iè¤y>Àƒ&Áƒ0°¾©h†ö…& nTB]jøÑ wŠý8´‘ Ø3X† ƒ‡ÿ’0¨d †2q˜$ö(øÑFqQt( j`Y(X†0P>À•˜„À€°E™#VaN`«Ò R“¢Z–À†®0Æ„™„'N»–uX¥l`A_fNó¥r%Ë–*¡ ª/LpþT p©Ê¬,9aÁB‘"7} …¤ ‰4RÐ$"IK€.§*%rÌNÒG³®J‰$‰øBŒ"UÌH vA °C2Û¬³ÏBëì¬*qBÃ&Ë&Q ËRRE´0J#þŽ0Žˆs$Þˆâ 8“ÄÄ2Âì1Ù¹X†y`“®-ƤÚhÅvdèBŠ'T £,Í–@1{$SGºèœG)¬<#M¾ ³Ñ Éð §LøYJ)Ȭ‚HÉ“Œ,¥@ѯ.+¬ .ØØ )5y@bgˆpZÁEMD…-ËBF”+ñ1€kåãêJ©Ê·WcµÖ[ )%+5RÉ]ù¢F$ =-×hI£ 5ºtVCaËì‚2 (Ç,»è¢Ì.΀³‹2º”b„8P 2žK „:8È,ó 5ËL ïºTL“ ²L“(‰ |°‡ˆ.)=cCräþ1Ý R"à€cr›G±K“@‰8P£&$5Ô¡Ì$r,cEâ ó "©‡AÍ W³9"»¬» 2ù‡6t®¾øã“_>‹’|’†J}H@#d«q Žæu…4 ›J ¯dËe]AyX ÿ¼²îåâ,ÉKø—Y„eý ) RLÐÂùŠ-–Á=ú0„"aø‡%H­.…J¡…),‹~Å:HhñDì†:Ü!{ø—)˜í*ù  ’|ôAma!››èÄ'B1ŠR”Ñ¡-€ B¸â,4±Å°TA jÑ :ðŒN1j\#þÛȬ||" GL¨,bÀ¡œpÉ'¤À† X0qøãÆC"2‘Š\¤KOhA%]P‚ûŽÈ 7tá;šE#¦À¢EàŒ%)KiÊ&vÁl@A M5`G›¼"þÒi¬à”Q$–5O a%x€.‹iLó%"ËJŠfÊrG4ÈA ×BŠ$À Çôá ¶¥’)P…*)ƒ&¶iÎsr­S¸„%¢ÍJ,LLË"&)¡3ŸúÜ'?Ç‚EwFs§dZ’Ë~"4¡ 5çdɆ‡jbž¸'Ð0ϳ\† Ý(G;zÈPp" —˜B·”þÈ–ŸÇ£kcÁUêÒ—f- „)Ö„  Ož¥–0)M{êÓŸ®B Ùn€‰`)" iP%(‘ˆ4|-—HC_òA5K¬h iØ"Þ0….x2IM%ÒàÕ_Á*[ºŽG8€%èÄ#|°^#-E +/Ü‚…uÈ ` Ä!ûЃ¨Ï] A_@Nxb#XBh°„|Œ  °c*( %X• ˜0ÌF%°A˜PÂ"†hË$¨‚%Æ€‚¾´5·ýTÁ?Áü@`P‰æ°´€!÷`‡[À °Ã ,/` Ô2X=ˆä*¡þ¾*dáoÆ0†¸AY9ˆ !Ü€#Ø ÔЈS¨aR”°bh‚ ] BÞÐ ¸A· .¥J^t¢½8n':/H PJd \_£û@€JTŽGÀÕ%µ(A:1\B0*YÇ¡»ÊÅq­_±àÀÁ-BJaÐ5Ð/r\€¸îõëðE-1áPW|—C¾æ‹*Œ&:2âË@ŒSü7š À&få†Ùúb l ‚/NAP4b9Hl0‚F¤ÂIàJˆqŒŒa~ ^ôøŽ0Šr"Ò’–t*Ö*þ: øÇá_ ãÓÿ°;Ð •˜àÃýø| †ÜCnÉ T1 Ü#¾€1s}!  x1ŒGìÀ èàF Ö°ƒ ¼ðƒa¨"ÏýÇØAlcÿÀv`F,¼à@@/ÌwH°tV¬FÀIäà$  aÓ)ü¤/H RA‰M,¡ XÂ)òœ5°`=`Á:;‚@~‚§#£;¾¶>¸ ²¤nÑÂŽ[`Û¸øtµ}am_þ°/^ý_”àÃÈ+K$𕼠®Ä¸…Œ}±ŽNH &Æ\ñþâ^ØG:|Ü /·±Á#|Ž x¡*Xú?W\ >ø‡5è ^ø íô„²  ö…Ý— OHâžP'ºBŒ2$áâoÀóòÑNÀÁ(Hƒ$ÈÙˆ„B¢ñ%†Þ`iƒ>ZЄÈ PôH-''Æ>T±r:”àÓ/wPMóWû¶AþÊþaו`Ì%„*æÀ‹˜ `†à\ì1ˆkK ÂC?øÁ#já;àB%`èóÙ± Âûp;/ÜN}úBj+!F™ˆy6¨%õOç_ÿÐ ù X$ˆp[þ@ ”€ÄBªÍ üC-üÃ-”À?W?œ.h@-˜€*ÜB08@ @.YK˜À?0ƒ t/Œ ,@/ f@ü€ À€ À;¬n@¼ßJ¤ƒ”ÀpÉÀ?ÜÚ’m@ ü‡É;˜À-ÜCþ@:„@?¬¾€˜@eWzá"yY @y‚—±;xàÐòIpõC'dÀ-lauÂöý/¬Ú#ü€‹9@C_µD? Ã-ìC?Al\uÂ0ÔX÷Û08l€5Ü/XÝJŒß<ÐIÀ-XÉm_»9À#Ì$RYÄB»Ã”/ü@ø}aþ,Ê¢/ÜÀ4´”)Ì‚,™Â@¹…¨‚€Á%ºD–c1#K\T2~ÞW`Á2Îâ4RcKC A ¡ÌÂüxMC€kõZÐÈ€4Vc:ªc¡P@0]ˆÀÁЍÌB´Ô:êã>š1PB‘/Aû°ÒK¸DŒB5éÐ>ÌÁï Ø#”€Õ•Ôr‡¥Å`&À#?‚¤1ôôÁ&Vð A>®Í%F£/Xе„ÕÑ$ðmÀPßKº„øÜ=`Löƒª„K%ªIÀïaA@€¨DåKêdK\ A†äU’R<þ@#Q#ÔKŠO-d3”€8@) ─*¨Â#èZ0XØ€ìCŒe0øÀÜÂ/LŸ/àÂ-¥W€ šÀÀ€Âòe€ ¬A]Že?˜À¦eÀ©íÃ-Ü‚ `ÁZ¶.tÂ-ÄB?ÜB8äJä  V¢&"ÕÊÁP™!AÂ3j¸ à ØÁÂ0„À>P[ ¸‚d.ÔB tBòxÁ´ý¡þÀô}_¤Ã0xEØ® ¢.Ì+¬ÃÉÑ ,§­¥3„@,ø#œ_dæ=ü+¾@ 0ƒ x ²„"xKjòçYB#(Abþ4Â~Š´ýÂ-ØÁ-Ô € ¨;Èœ/œßÉõ Ü1ÀÀÌÁ/ø#L_ü‚Ü„ºØéÚxÁ¨€<‚,¨*,€ Ü ø@hbÁ#¨‚FúB/@¨3ÜÃP2ƒ'®D(Hmög“’нգ]œÂ«ÜP0Ä€tò”Ղ*¼§J¸ JœßHÀ#ü‚þ+*üB Ä€+,@0‚´å-Â2êÀ>üƒOÖBÀª©ýÀþ3Á=x'¬ÒA0¸lÀ>À>´ÛùY¦³©‚¼ÂW\˜¡¤Š+ùBÀÙ˜¤)¤BêèÀ]`õ‚ 0ðÂL”Àà«9 ˜€ ÈÀ Ô¨g'üàŒl`ùÀì øB? X?¨#˜À¿Ê€C:l“A&ÀæÕ˜Àä¦ÝÜWd ŒXŽëËfÍ6òˆJ¤ ÈßUÖ‚¤Xd’'h*Ìí³À„'Ì…/°H¦“ª#! *XÜ_ÐRíŒ$þ²°€+‚$ÉÅþ-R>TS>ˆ-KäÓÚÔ’EÙ®²Þ8–ÅÒŠxq\Õ²Õ(h(K>Œ)<»ŽR>”&, à6‚¬Äè­XXüÐ#X‚Z8 D^ Á&läm `ÂÜ L €P¤B"XÔÒÀ¼œŒ™ ÕTÁ1\ ¸Á%ÀeÁôä. Á)dÛÒm"õ ,‹W²nA)R²$“$)˱Ԣ®tEh¼„"œ‚"‹WŒÁ(‚xÒ•$YÑøz™Ø®ÊJtAýòÌB·| ¤bµ/­þÔïˆ/$B$Xê lÂÒîŠ$ñ_ËÜ*Zøc#xÂX €BL¤B%XÂ%p0 ÌY\À'¨A%lBäCQ<S”È&ÌÂ@n$ÜÀh‚$,¶PATAâ!Ù&o}ÂHNÂ,Aê1%hÂV¢o°@l Ü ,Á&ž/p‚)¨D($Á&ÌçýY@ªJDT%ôD‚),¤ŸVpB„ÌE”Á”A¤ÀRXK1X‘˜‚Ôx‚'n(ðñú¶@ôJÈóJ8ª%$B>L ˜‚&xËÐÀŠxÑàs9akB`l Ü@°DpZ ÁÀÁ(HÜ%AÌA@*¸A¤Á %‚$T€Â1LÁ,\@<ÅÌq*xÂ(\×%¤ ÀÁ¬dŒò‚5‚à…/(B%€>™Â $ pÀA¼#'ŒÁþÀA$TA"œ³ááw0iCg+¤" @(ÜvDbƒ\Ï1T)¶`;6$ƒ'ø×Wäe“M"ˆ8]DBѦA*ä€n*ä¯i‚%P·„P%äqJ/AdÁ Y ô%Ü7Ô|1\‚ࡾõÀpÂP‚Q¡µô@(t%œ °€CË8Š$Â%ô$}ÂU‡‚åƒ)xdvu%t"$êþ 1¼QTQ¹¿ÁºûB HPOõ Av%BVwÁû°¸»¹'ƒ§°"´ã¤Â·D¬»"Ì&QE ¼"äíh4Ù(‹ÕØï÷Á¤p$QÕ H‚5òÍZû‚%Ù°ÀŽÈ{_ˆç“%À{Û%(AhBÐ$ €ç®¼n5‚“J¤ö5[»…ûðÐÓþm °@ÌûÂÜ:Ù0[Y8[øí²Ä1˜÷áVQYx}ZtATAã¾í-0ý4ƒJ¼B·º=ÜÃýJÈ=ÝÛ=ÝËý+´½Ó¯ (˜,‹Œ€8)X>Pu BhÅJ”d↠¨&xÂíW”d*›Å%`o—تvChB|•Ï8èƒ:ø*èÃÌC4„Ã9¸@ ȃ>ÜÌ€´Á4à4œ\C;|>ÄÃ8œC ˜ƒ>ðÀ|¤À¨98ßK>¤(x´Òÿ”$ÓŠ¼A2q?+BKuÓú”œ{¹¬TøÂxÒ`¯„Ô’ÐßPá–®þ$BKƒÐwA„_ßHPH_ĨœÈ‘.šÜøê#„˜/Œ ìÓÑW"ƒI–4yåAäîDƒ¦ Ð“r¨ü}t¨—m €‹†¡ž…z°ä z[3z JqŽ­vž )K J­[¹võúlX±cÉ–5;¶Ï@Kl"¤êR¾³séÖµK’R$McH¤™éR6Hn˜ @bIÆlÞP3ØW 0mºd’ ›#}a"1+Š4ThŒ‰çF6i|)R3æðÎj”(9b²KÄ<•Ñ -§MK4IAÁðK³h°Ð”Cˈ$TPQþC#‰¦7Š4Øt!‘/$îžü`(Ü«3zÜ äaaB¦6†Ì}ôaÆbÀÎÓGîšoÎ!G_ÀÇ@Zäñ„/üp.2) -¼à }Éêb )<ÔÄÏ2e ILÁÄSâ2% N"A”Hªð…S d Ððå‚YŽÁñÇ’Žø ”.Žid I†LE -ˆ "‹,c$Ô… ,)C“r(‘OúÈ!C“*nè‚*<‘D6¡¡ŠÐÂSrèAMzؤ ¨8†ˆH(ñ%‹F2|Ârühãƒ?šh†øÚ`„ðÙæ©ýÎye@|þª Ç‚˜!A_ÎᇞL^‰‡žm²2×\uÝõ«#S€HFºÄ^=ÖN|id„Y[“19BQè XAG­ºÈDzðÅ“$B#’):Æ”"=ñ$‘2´È ”12©Ýª¬‘4¥€2!Æ^µ4Ià Üà„Šfùs 5ŽHB*¤¨-_I|E`ÚI¡š?>E… ¦á†.&`š†›iêIá&` Ã9d_†8¤_¶øà›hŽ=é¤Ëƒc*H‹HPKéªId…7ØÅ68b–On ‚”8¦‹Âª’‚ò!b–þÍŽy£$!F¨¢ 6ˆðSª˜"‘,H@b |(1e”ðÊ!P$‰M7)!%ˆ>ÉJY 4‘H$€Œ)±D bP¨äBIƒ‚T0Á$‰#ÔâÒ¨‚…nX¢Ähìñ%|æAåŒ'îðc‹6âž-†xù PÉäT¾ gZâ)Ä !•zžðåšk¬^Ÿýö}ÉG’Ž.`Ö,Éýüëbƒ„MÆ0¨ð6h‚ YD#`ŠF `CN!„°á5p(I>Øä 5¤ ¦P‚'Ž0ª+‚lÜ14¡„KD‚ ’ ‚¨P†Œþä 0a X‡( †&ˆ¨ …ÀA„(à $Q%ŒÂ4ôß<‘†XB Šã‹HiX8É8P qåêà?¤?7¾ÑDÙÀ(°E, Žy$K(Ѓ*ÜÐ"%yH¸Ò…*%ŠøãAˆ‘±¸A –Èð¸G$C:H>¨†/®(2<¾¸ÄÜ׌6œÏ+×xÂŒ¦GW¾R,ÄÂ'Š$À\$,y‰ã°È•U(C `³…/( þ怘Xg‘îz⣼ÄG)ô-Р"‘ ÊØu¾Ÿ0ñŠcyÝ$ IxÀüŽá†*T!DЂ°4Ì}°#Ø€‰§  èÂp Ô"¡JÈ@q)„â¦p«/à ÄuÁ7þ4ðÄŽQ…P0&GPB#Ü@‰ä†B ¸äAF *ÜÀZD(C(Q˜P¸¡IAˆˆ*P ÐÄ'*¡…PTÂ` À FÐIè+5ìCºãO°+0Å.0:7Œa G^S±.@8,a Uº„kÐ¥ ”nD¨ÛPኂºZcŠ‹„Ø,Væ'(ð_e?[+}ØÄ&þc$Äx H ¬«µÐOd!Ÿ•àq$ð¾QHÁ˜xCm8¡d!s" 6,`‘†k•ÄJ‚Ê 5¸áƒ¾XÌŽ”€g_¤aU¸Ä½Irk-T„a}€ƒ£Ð¥.OP jþD>ÒH$$œ$øDHµZD_ÄÐ"Š|Ìo › '$ ãÖ©än $%(BÑ¡ jMßö ‘0 ÓÂ\Wˆ[›8ˆƒsívrðßV×zIA„ïÈ–8FšÆðI(ÝÀ' Kˆ]eP‚ˆ.'§MŠPÄ,.àÝDäš©Ç8’;OÑEP žx@í’Ðbp‚ `¥Â® »zw«$PC"ª…h)"5KõQå&KH¢îJˆ/@Éå!/!F¹¤y4„"ìi˜ãÛ߆TŒ‚”?Æ 6QuEÔz ø¹¢UG6âX‚Zþ&¼î $° ~¡Pý–ÇB $ìm e@%ŽŒ×­¯S›Å€Ïßþ*4⨽€@|6$A lbV6‘†ÌBÐ0!nÀ‘ˆ¡²ƒpj`+† Ö¢!¤ êÌ~¢HÀN!†¨`ñÔÌ"F –ÀˆfA @á¤à
® F²*‹Úa HâÚa.e âAÆ¢ R â¡.š¡âá2'óå"A“|¡ÓVê¯F7„ œ­r€ÚJ,BÉFÁ4A€PX hàt‚Œ”G&8ál6AþY<Á½~$8«ßg à ¶*®&Ò#0â#LBÜ„ *G b drW÷€‰fFd2¡íªAH"ÔaÔÇ2á R4ß"€.œÀþ¸à ¨ò P vP *ØáF ¨ ZÇn@ ìiC®C©~Múg 6A nÇ8Ajè• /)'lð`vªŽÊÊ F¡@ .c >AMâ ¨ÀQv$Àþñ „å¨@Ü  FY¨`3¸F +K4Áž&E ”€|3iŽAüàó¢äB–@ ´ó>ã)Þ¡Z ÚÀ îþÀ¾O«ÁP¡%¢þÓäa â Z`f 5I¢ PaRàA›á ¶a ÄÀf &„u|!4g ^¡$^ÊášÁÎ@ fàž€üÀ ¾‡ZÀVg€|D“^¡ f@üà¶àQw f  Ö)à€ÓBâLÁ 62 „ /à`"ÊtoBí.@ãdoˆ!b„Êé – Ñòa:’ Âj„" ¾õFr@!<’º ” ´Àr‘*è&6AÊvDIâ4A ˆNáÔêØ™áÊL l *a Bè¾5I÷þb@BÁi¡H€Þ‘›Ò Ø41%pNë Êè\êÁ¾h«¡€Ô U}ha`?£áèAÜAJ‚Èá D€†À0A}Af`üAAœöÔ¡"àî@”$¶€ a Ú€`èA ÁÈÁ¸À@à>@ô  `áÎÁžÀ&€èaî€ ¡ÌA"•—ær *°5}%ÖÌö&Æ*Ë–`J—5^Tƒºí|!€ÃX@Fó¡ â’Ê`SFJwX#0ᦩ hK èó.à…4jŠkmÖŒþ)Ù@®¢œÌ"çK BrÁ¸ Štw Òbß TψÀièq “WÞ è“f“/o6¤"@?\€ÞÁ’6 a?Éák•v ®Aªö U ¡$@ "ºa!ÜAS}õ¦Á†À üða^¦  Éê!h| ¦•Ôðáæaf€Úà à¡ôaÆ!&àz&` ÞaüÚhòAÛ¶«Ý` ª€‘ nÀn¨0q8‰“¤)çd#4aBÕe±$䂌“²€%× ‘¨Øü# $AvÓ ˆÈÕ4 ªàrá4þ®ª‹™*& )“–€¢F—/?. ¦à` XÀèA‘o­ ¬Š“Â#to Ø5$aC߯@¿v…7á}ÙTêä÷°¶ÁšÁ¸ëth÷“þ€P }ô`?Û!‡Qâ̈$ˆá ´ÊÁîg®A`¡N@@ aTIâ 0@PÕ\à„»Á áÔaf€ Ú@êa aly v¸‡· ÊÁ€=_)B+"XŽ € ƒØ€ 6AoÔЬ"´H z@F”àD³`E¦íà' H q Lòâsúù ’²¶µ§žÚ·ë)þ`®¡ ÔÁâahAþ8àÚaBa¦aü€i£[®A Ìá\€ˆ"\ @€¶À…§ìAÎ!QÁ á ÎA šaôÞAšI P„;¾Ûº!Þ aàà»æáÚa¶çÁßa¾ÁÞAPé·Û‡P/Ã;|}Ú€¸¡ šÎÈ+^AVP¢žIÅÅè šá¾t+2ÁÄ9³$ˆÁªlÜÆI Ĉ¼œÀËÜÈS2Zb|ň¡P¡Y»¢Â üÈO‚„¡Àpà aHa ö l¡$Œ@ÌIaÖ<ÍW@¶"ê@̯þœÎë¼*ó ÞœB ! ÂļV ÞÜê ˜Àò`j š V!t® ”¢ |!a&!Š!¢ ¼%ž! ò@,„ÕíÖsô¡ÇO"Ú×—| üà 0,Îà ÜV,@¡Ù)’Á |!laÂÜlá VÀÌóàÙ¯ÀÓm€XÝ$d!Ì­=p`È<ËeÁœ¡Hb„ lÀ|¡áöÀøN  ®€–AœÁ V@:À*À`"váöýäàÚÑ® á raê` þd¡Ì` H¡V`®`Ëã`Ë}Üãj@ò`ÎI‚ÜAåÀÚ öÀdAö ì=Ö×âàV´"¨ùR€3@¬»¢æÁÄŸà¢<ä+*Ö \{V jç‘aJ! €`*€à+ÀÂ`v¡¬`DA  å‚vá ¢À à JáêÀ– â  BÞ L]è›ðÂH¢^>Š ÀËmÁ¡¢²a ~êçuar Àæã`Õ½¢¡€ €|a~l   þjÀ À$žAù•áœJ ¿î¥Á È ø æ‡>%ŸÎášaôAä–‡ ¸ ZàP»®ÁÀÁä¡üà€ÁFuÎ ÎùñE° /1 Pl¡ÏÝ„x¯fèÃí 4|‚\8)¡š o¾¦;wæÕ;rÜÚ Iqnž“sê2$˜ƒ ‹™8sêÜɳ§Ï‚²ä@Y•Ç—·Â|=뀨B.]ŒÙ¨ÁÊ©g6ÌìÉÕ™× ¤È„1d—‘²0–€Ì²l5Hí'­‰¯EÈð)ê+Û=ã8WðY˜:¾HQ¦ëН ¤uPjþ£˜®W„‰K`Ñ*â`Y!›¦¾$3ˆ(Ë㋈DJ”Q #ˬ¬ºˆ¥ŒJF @² "8äb 5»Ø‚ã¯À+ì°ÄvWˆ?ÀœS, êñAüAP ÀâêüáN3¨ã¾;ÎzÔs- 2x‡!ל1>ÜpqŽä\ã,ÍÀ"¼gD ‰} A¯À’ýΤKëðL¶ †É@†1Å<ƒ5«8BÆ »,RŠ {£L¬ÄS6ÔØ‚NÂP Xþ‘8Q0L16 ’”/­ãŒ(LÈYÊÅ"KÒˆ³ŸØxCJUR¡#L6¾Ô€‡c¾\†]T%Jf´²ˆ4˜ú²G˨ºŒÊ¾äÈ$uãÍЭ삇, x³‚4yŠ#Ê3¬ðUq¨µŸ«œÜŠ.¶Fa $Ž˜éØg®ùæš³8Í;ïÈãËä0€AèA¤úàû4¨î‡?bœñÍ 0 N)$H5mØó.€^HÁdâÎ<¾Ì@|AáL°AîpQ (0PNiDrçÃæáM¤ð¡ "ƒ€ƒMèȱK5ì⥙›E±ÂLy…§ÿþ“5š  ùñ¡ÎØ+’a¸RD! âðQY ˆj@ÀAt —õ bWXDj€ˆ'½rˆƒ7¢0ˆVÂÔD)dQ©u i#ˆ‘€&c +šPƒ( ÃW–AD¬fò ]¸M€!$0ˆ6Ìà+òyñ‹` £Oˆ nÌCÐ7αž}â çô ŽyÌ9¶á‡C£‡ÇÈÑŽspá3 4ªŒÃzØÆÚaz¸@"mˆ=ìA`Dà øÃ6®áhLáðE øñ…/Dƒä0D3t’ LAŒÃ"þ…-NÃ?®D—ë‰/{BŠáp'Fð庨“+Ð ¶`¦AŒidÌ4œ™lq¹\<Ó'ÀÄ¥8ÇIÎ0FCD8Ä€ ZñhÚ‘Ê'Üa3pB²°­lo$ÚDœµ« D"B1†>âÄPÄÂ’>€‚amig²‰FC·DÁ{ZÍæC(¸¥/²ÚY‚dV·3±-j7K\ЮV°gïN-18ä ‘@®%Ê5\ÂnPC²€„Fha €Ã ü«Pø‚#P Žñkâ}Є&àÀ MÜ€Ghël7Ìáû‚I8…'’@ K šÄ þ" M œ0An MŒï#N‚v B‚M¼AŠX1zp4h ÐÄ'8‘M¶KèA‹?á‹ ÔX£01DŒ cÀjÐB>à exÂùÀD#Ê0Sb ÀÀ6µ&”PX‚háÄ`² ‡ H—p>1O˜¢ jÈ´ H—¨†`5B ŽNEòA‰Pá¾µ¨aËM¸afCú`ŠKÄ# Ák9Á†÷Z‚iÀ¯î‹‚#àR0Å(q‰$D"½A%Fð€P¼Á¦@Aʉ,l¢,`è‹"˜‚KØD.þ@·ö ÔÀ‰4¢-m0¡ÓF¨š¬’Є\o€Ó’–ß× Pá ,á¦8 H€†$¡’Eú …2øâlÁ@=*à¶£¹È½jŠø" #ð…)r½òˆûñõEŒ r H» 2öE@.XJ(A ¾qAÐ@öâ¦ðµ/<á‰D”A BPÂ’а™A Š ‚ˆA„$$áÜ– Á)€ !kÂã}ÐùbmÚ…QŒášíA(’La¬‰¨{ „0‹sB ©88Ž‘Sda°Ä,.¡…Õy@%’ˆDa ˜PÄÈ7Ïþù¦²áÄPäÙp7àúcPÄH@ bКæ6÷Å)(ð†Õ®U¸]PDÉ}Qœ÷‘Í“NOŒ ¯ZX: Ê y«SApP%p4€]ì(ÀÄå=KL´öN±NC i×y(0â%ÀõÈ` ˜œŠ1ä`ò‘Af¡5Àe@–@$`#H0 YF #ðX×€¸S¦ IÀ·D•  •à œ0 #` Z= R€ ,p˜ jf K`a3Ñ˧5â £P c H0³Pr•= .¦gg $@’@c0a3A =` þ–° l`n›°  © v§°¡¦0K€~Ä„=u]T‘'f i‡†SÐ{—{p £@E¶XÇp op Ç Ç‡Ç]@l0SùÀsxˆˆF‰À‚nðZ¾ —àZBÐU– Äp U ‡¹§‡ÇP{` n kgBhŽÈiHð] ‰ÇpZŠ ‡UðùÀ‡PU€ð  ;ö^}¸‰·ˆ‡Ç Šð}{š÷GàµÇu×S0 öK0 fÈVZ ˜ˆÞø^tk›ÀTH°n›`q¿B ˜PgàØŽîøŽ#×zð8ôX:Eþ B~!B0Yïeˆ;q]©´è0¤]ÀW¾ðŽhùiyå ·KãH}° ìÈSЛ°mV¾ÐjÚ1V?‘§ .É |õX‘4Y“ø¬•~8¹w‰àrŠ d5s%)æ'Xý˜$@opKB·i”®rU’ºåü(ËUˆfÇXùè @©Y` ©~Bð •`#`I’6Ù–nYW”@I—às¢HHp¦ 4Ð\õz¾pI€—¨ jn(YJ@i  H³ §p c@š u ÷ÕIš@pþc TVV™’I Kà š€~H@›à$Tás}à 0i‰_$àoœÂ9WlP,@ô¶rÐjœ GÐ4 WBÙ’€k¾pxÈuJgn` p ”ØT` U@ P (ppÐ’@|K7—   ÀN¸•3Q#@g”nŸpnnFp|¾p›¾ h”p•€\iÀ9œ¡Nõm¾ q¾À÷Õr½|·˜g#Pk;±s°gK—C ;v Ñ6mMç Z ›€›p 9aŸL8_çˆ4 k>Âׂ¾ÀR –4UYdE þ€’Z|ú¤Ê§ l0]¦ —0 KF”p Ñzi]S@nÀv ]ðÍWoÀƒ}Àî… l U9 Èi¦Ze|0(0 PŠñ¦@§–0h£”œ4 GÀp,I” ê Ÿ€ úˆKZP |µp©PI@PºªÁi =¾  RМ  ¦pp¥ƒI€L6 c€Bà pvœ0ù šP› yG 4П@ šÀº`›@—l@GHJ@o8ñ¬4 U JèÉ •p êŠ Z° ÀÊþ ’ÀÐRe©Sɪþú¯a´œ ±¦Ny]ð¨I°¾@ ¡zŸ ,྘[ËV¡ªJð û± [,, è¨TUÐ(ç^Å’9À–!û²0ëaµÇaS±1{³‡H HÀ ‰³×¡I0>Ø‘°=ë³FKWr¦jG;¢Y@Vh( ÀÄ Ž8’~wJ°?¦YS0µÄ0YhÈUŠ µT›Fº´j+FŠ@¦kk—6n@] 6¢$€(×K ‘°‰ ›˜@‰p4$@åf †Ÿ‘@4@ @K i€•@®J iþ@7à±oºs ´k; ,6•[†&T6D…¾€eÐchдùzŒJ fMÖed{ˆ ‰ ©B ¯E ž â'ºÒkTÐÛ©¶Ÿ·Íuš'hìXq²·Ä0 JP j Un rÕž/¦T 09 Ê–®›p¬It‹$˜Óû¿À¢p ¹¶ÍIe=p¬%)K0 ªÕV½o`®æf#‘FnP›ðBep ñ;¿Šw SP,ÐT0¥…¦Ð† À0|#HÀÂ'½Ä07À›6t5Fuh00š,P †c\•j° j°å ]ðÁZp ˜€iPc’ÙxI c• Ã^S0 YàeZÆŠQy‘k¨Y¹„ŠðÂ_<Ç8‚XÃÿ ºt¼ÇK•]ÌǀȂ<È„\È¢;libjibx-java-1.1.6a/docs/tutorial/images/advanced3.gif0000644000175000017500000014317710071716566022507 0ustar moellermoellerGIF89aB²ç>>>‚ŽNªN~Â~žÒžŽŽ¶Þ¶þB¢B¦F¦nnn† †ÎêÎ>>þj¶jN¦Nºnº‚‚¢>¢ΖÎ~¾~nnþâòâ’Ê’ † ŽŽþ¶f¶ÇŽÇž>žÖªÖžÎž®Ö®ffþVVVŠæö檪þâÂâ¶Ú¶ÆâƲf²ŽŽŽþ222vvvŠš2šÚÚÚÎæÎžžžÂÂþòúòªRªªªªÚîÚæææºººBBB""þ¾z¾ZZþfff†††Þ¾ÞêêêÒÒþ***FFFÂÂÂêÒê$’$Ú¶ÚvvþúþúÞÞþæòæÒÒÒ¿~¿öêöÆÆÆ’"’¯^¯’’’JJJ**þ²²²JJþZZZîÞî––þzzzæÎæúòú-—-êöêΚÎîöîÒ¢Ò®®þ“&“†ÂzzþÊÊÊ666ÞÞÞ êêþÚÚþNNN"""66þ¦¦¦ššš‡‡^®^òæò^^^öúöººþššþîÚî~~þ2š2‚‚‚ææþæÊæöööòòòÖ®ÖÊ’Ê®Z®š6šÊÊþîîî—.—þúþNNþn¶nžžþþââ⊊þ††þ¢F¢öîö6š6ÎÎΦN¦ÖÖÖ¾¾¾:::¶j¶...úöú¶¶¶rrr&&&‚‚®®®RRRbbbŠŠŠòòþ¢¢¢òâò»v»–––rºr†Ã†jjjFFþ¶¶þ~~~êÖêâÆâž:ž..þÞºÞ¢¢þþVVþ þ²b²Ú²Ú^^þþþþÆŠÆÒ¦ÒÊ–ÊΞÎJ¦J¶n¶«V«Â‚º޺–*–TªTööþ¾Þ¾¢Ò¢>Ÿ>ŠŠy½yŒÆŒ¦Ò¦‚‚Z®Z–Ê–f²fúúúîîþââþ¢B¢ÊæÊ²Ú²BBþÖÖþRRþ©Ö©::þÆÆþÎÎþ9ž9b²b¦¦þÞÂÞ¾¾þúúþbbþÂâºrºŠŠþ¦J¦22þÞîÞ²²þŽŽž6žrrþ’’þ&&þ™Î™ÕêÕF£F‚‚þjjþ,B²þ‡ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cÊœI³¦Í›8sêÜɳ§ÏŸ@ƒ J´¨Ñ£3ë0B©)G¤P£JJõgXåˆØcFCš†u¥( k‰Tnr"5‡”T ¯öjî0zªêÝË·¯ßƒ Î 9"m "_Ã¦ØæT‹Q BlE8¸Ð°(«vÚÊ ï0N™ÿŠMºôNPvrbVé°:3x˜â4ˆ–:¦°y½6´Ú®“£BX‚m®$$ëÅŽaÛ¢ÔÑ2éî‘°Ýlu£eFQˆ‡þi¢Â ö:ܺ1e*Ê@MIšv"dº¾ýûø)¾ÂI“ž#Ï5 m¼B^¹)¤!àƒHÛ$ ’ŠnyòÊ@3€²Õ+ž0ØÆ$\ìR)uÔÊ0«TÐ)!!Pg3Tp")v1 0øB'3†b©ägä‘Hâw!L^±Í6Ö±ÍZ™ ñBuî†!™Q9L m„‡!r”\§¤Eá\²x¶ŠŽ56L Ð×Ù0£xV‡Ž\pÁH!emƒçŒlÃ@I&ªè¢TrE!¶‘" ”šP*Ð ©õP¤@†5f©ÐÂ@cšY&tm¼’üñÆ.þp1‹+®²âeØ™×,ê¸ iò†\´'£È&«lO Ô02vzij˜’ªåµ—nè‰rœîF&‡ ˜RÃ<$‘D'´µ)P pꈫ wæ)ЛÃT$®ôR,‹¤,ëï¿·Ôì@0A©¥ÃT+ ¤zêð´ÃpÁ€@Pzkê@_8'Šî$ë¼µÞðîꦎ Œ:L!ä«§»Ç,ó̽D5 2‡>œpj«ìrÅ*Al‰í0©®lH ¯`Qª@m ’C*=„ñ#r`Z‡%L¢îœíª–ë0w¦Ò¬(ô^1Ó 0Œç¾«ôKóÜt×Ím‚JþO’ÂÉ6~ tJÃ")=\AŠ{>Ì)Or(ÔÀZA%´e3ßêbD¤QH _dŠØ‚…@3"h O"G=ä°z!©¼Ê(K #Ä(iq„ÝÄo|I¦‘D;ÐWQ!Î/ýôÔƒ…»€òTõÜwï}ODØQîòß—oþù觯þúì·ïþûðÇ/ÿüô×o?û“$Ñ;Ål„wÐIX^!’½ûð€IÅ.&#Ix‚gIÂì‰9Ì i Q‡‘™bKÙfÒ²7 ½ÛÁ æP‹a¸Av°Ì$&Qˆ8o3Èaü§ÁúÐ'þ„Å0x¢ a`Õ A¸Q¸hF D-Hq„7”.¨Àß° ¤”€ x'BƒTxÂûû¡×(7è¡ Z #ƒ(„…ЄՆ! VÔ`oHBÃÂa0‚ M* a „) -°Ãf° `Ac£&7™*àî)âØMbI`':È9É¥O"‡ÑPì žØÆ)ŽPB c …)8IÌbŽ„vxA-&€W$ÁhÔ£ˆ Š7DA ¼cЀGMèOF˜„Ú Å6È¢Rux °dÌvºs#Q¨æÐ†Æ¡rþ@œ,‚0‡W GÁä(z€'¼É%0‚( ÈÁxRÁ¹wZô¢!;²Š!n¨Àxðgaô¤(I!`pÉX&¥0©J ñR™Úô¦"á„IYBˆÙ°a˜,aÄyp¯„¢5ªE&‘ƒhá8Œ BpL‰ÁÄé;?jS¼À%;hÃÔç"šxAô0«„0¢§¸•Ex 6¡Û¸‚âº=…Ä&# ÒD”ªÕvnCBÐÈ·l† Û ¢`.B˜‹¢xŽ(ê°¡Bt‚ làbv ŠÒz… ’¥l' § Qˆ–²l˜þþ>S.®¤%EŠ5¥ÒrÂ\|LBá» Bha5pƒ ¢ ÈR TpC'ŠËÜJ%¡¹lè„FåÀ!â nà(¨ ¨/¸‹›¡}ÁQÌç—¥ÍêgŽÀ‰›±¡© Äê€YöŠ‚Ûhï|ˆð…Dá9…‚…è'6Äl˜«SL¢TÈÁ*jZØMî/¨ a„]¬• A0„b 1‡,BoðÄ<±Txâ ¿|!^°‹Q¸¡qƒ†¼ vÐB¦X‚ìbsØE*ê0Y„@t«ø‚–¯ÀˆæAj- cÚP‚¯Ft%ðDþ-@!Û¼r˜™*B ." F¨€(jaY wŠa…["+Ç4 „sÐÚic^Œâ²Øc˜k1Ø(è­%`D-´üžy”£{C'ñ ¢`ÄBð±‚1æÂ6JÐ=Ì!mÉÞ ¸c„Ž¢Ø…HQ BxÔ£lw;¼I-"Ï*€Ndø»xŠô@ˆS´¡sÐDBÀƒm¼ÇÃÐCH„ 6좇:ˆ¸@#´`ì9B¢0‡/AfìA¸ ÿ›æ@ËîB ÛØk d€+AA/ÈÁ?£sP¡¨A&±mËì²á’óy¤k€6œ"_¨€¶K'‹oÛã@²ºõp BèDƒ¾[h¶ £Y9b@ö Šß1 wÏ–E-vPxÞ¥aCNõpý~Õ\˜(ÂÂacʤeq„Q\A5ƒ9eñ]TŒ!Dx*lÛèB ¢ _ƒr4LR¬‚-èîyvWÀi‡þQÄIŒŒQ`€KË9XF†®'x),Xrc ‚,¾0 m¿ nÅ ^Áö¶k5ðP rt÷ †`{0*¤ 3 àf A nàÀ n0 §Ð;p z°ÊV /·F…:%@ < ;Z°0pye ?…^uPƒ÷BB` LÃê_,Á $JJ *Þ9 „0‹âÁ‘(jCuïø©€žŒ¤à‘3Ð虉5 Z°›Æ• DjÛZ@²rál€ †P¢ua0 ¦@˜ ú8žBP @ÂLWÐ]H˜3 Ÿ•bãJÔ­!; µ°þ×3„ÀóèA`¶Ã“cœ¦ÐXÀàŽmÀi•%‘UTAàÈ¥GH¥c§à 9Pk-`CfH=° § gœ€»ebF–=%ö&=  ˜†iOAô•X° % XÐ °ÄäÂvª·i2¢¤ûØ<À ña€ ð²€d2ù(@BÀrªRz“¬0*o £ ñt“ <-ÀKã>: o$` BVOmà œ|F"Ê&Ë:½Ö2"¥©ÆKxƒ±n«^Á ߥ6½F˜I`5ß9 õú]Ìd Œð¹rð]rÐB¯@u3bE¨° ×Ç£A9«³HXþ¤q‰OЄ'0c ¤pz AÈ_ð¾ vpIwU"mÀÀVÛ0¦póèÆnÀŠÇ€¢.ÉâXþQ`cX‡”m°¦5 ÷f¦©ÀM7!Öɬ ¥m^z&E+J ²À; dEiÈ´þQX@@`¦Nžå†îÛ£ …5õ \` r RRÅCl…“JÂÙæ0° HyBŽ2¡ˆR²©3êÅ   $/ÐÕÁ©0z ~è®naÛq^1 =ðÃQ žX0ËTÏG³¤ ½—θo° ©À láìüŒ@î:Ç· Þ{tD`Âñ¡ „À %Ð]þêÜNDØÃ žqA§¯÷¤Ðr]/P:QÀbmÀ%Xà `xº×¦ l ° 0Ð À" ¢xœÀ¯œÝ¾ð¯]C@‡„?Ö.dCD°;QÝeKAQ€.Ü:aÆšÐþeñ/@¢å•­Îð.¯Ïûò2?ó4ŸÝqðÜpíPO°Ï@Ïàóôâ0â ô‘óª ‚€ÜÀ´Pôí°ªpç°‹@S_ô!Ý Eç ó!‹Ðôñ EÀ OÀõ5¯ªÀ ÑpP¾Ð|0qP^P n? Oàç@pð¾ ÷Ã` •öÁå°³Àóà ¾  O6p •€øÃÀ áð /ܰ^ tPõáúðA ½àPøà oq€O€öø0ùÝð OÝÈ_÷Ãþü°? êÐ °ÿ ÝÀ ˜Ï ÝüÚ¿óÀÿóÑËÏö;üǯ ×Ï Ø? âöáM óРÀù° p‚ ÷`ßu/ÑMÕ“và Ö®ÛU¹=6KU»'´˜[¨Jƒ¹¤HР 'ÏÍ狃p$Ezv®›¸H‚v³i°^‚Ãþ+×ó ªG^ø†â—±ÃÑ0D8èøc˜5ÊÄ´yAC¨„8Èb‹Jü‰h4*‘—^ª†±Á‡ÓU)Ço·ˆ7 I|£ˆY$É…–•·ç¾{ï¿?!q„ çtKÔa§’©×pAœs¸‰Dv "¿ž,HðÂÜ™b«çZQE.Ü1¼|p£CÜhÇ"þ~ñ‡","tyÔ,à`*L&E(G$¼ö) Aæ(ÂÖ0ÂÓ± –XÄ,Á[Ù€'ÜXDh¿BåÃwzÆ3ÚÑz! PÇÆÁŽy„ÃìjBØA¹>4¤óxÄ"ÎaŽsà£ÿðAæêA‹_H.- ü¢ŠEH"wïò 9Á YÅ¡áØ;Æ&Œp /CȲàŽzø` X4*¡°xðâþh-|PU÷ÙÏ”Uz²E$`|åxÂ|ðÂqÀÔŠ`#ÁJ‚ °7ôA-4  >‹„$eŽB£!.@%®Ft´x€$ßD±cÖÏH@ Æ!/ü!(À/0@¼|(¸Õ$²Y"†ÛþÙÙφö&ÏëbAÐa $¸ 0Æ¡ ^øÀ ‚©Finäãçö"H€8 Ýþø#  ò™ þ¡^Ü@"!dK°C{œåðÄÁßHœ¿+É âk_˜ŠçpG/ônă•pGWŸÑ9À6ÚyÈI֠˹º>þH€ßÄòˆY¨3EèE„1'Ð17o×¥ýQIø£[@€ÐŽ>4᳇!‹Í†ÄòsŒEþÄ|Äpê<ê†>þa“þq ì(¡&h´‹{`u|Z‘·Ýío¿ -€ðˆq€ã>fñ‡xÌB…æxF$üþvX=î`;‚­Ž&¢—‹q7Ø1 G>áPaÎÒ¥G`€ðøx€D] z‰ þt_C;Ö4x}H∃œ·nƒtƒ'†{îu¿{¶ØÙF&¬*àÜ·<ãª÷‚àð‡¢|ТµhMôAË|ã»Òç}öµ¿}îwßûßøÅ?~ò{2jXF¸× øá ÈRá~ø›%ÆH0À0 ] -gP)h„Pb–ðè ‚,IÀ.(ƒ<ˆ¨¿ò³ÀïsµÀ&À\à0[H„O8‹<(?˜‹P?ƒƒF`†³{8W†a(ƒD@‹A8†k@ƒø$è–Ð…f„Kð?³èc˜‚¹† ‚F8Bb81¸þ„¼À,Ô>]øD@„bƒ/´…c@„2ȃap„OðÀa`Dp„bpÃ)D8„P` 0@](ƒ3…V C ȃ)@&(]`Gð 0†A0‹<[ð DAD‚eÐ?D„`8†3À„D\ÄaÀ„C ÃPƒD@&¸…a˜P/4‹T´‡C¸öSc0ˆR¬D;[h€@Ã!@+@‚Dˆ.°‚.p&øE/¼Á.X†i0†M,ƒA,ƒb@Ec°[†<€C]ƒ[ðEÐ%˜D+ðƒÀÂa°h…O_ÔÂz¹Vp…8ƒ2˜`À„fþ5D¨‚e0ˆdXC¸†aøk`Àb¨‚$œÀ h†Kh€!0+0†*‚.Hƒf8¸‡"„`¨%p+`I*G;\o8Eð0‡;ð†D˜$Ø„F8„F€‡@[ø„{ð€* ;H„@CLØ18@„DxÊDPƒVX†h4”¥L50?h€u†`@X$``I+8R„ÉK¼‡D \&ÀHyH[‚;Hy`h†èÀ.yP\†*°‡Dð€©†˜4ˆ<¸ÂP†ø´ÇЄ¶!¨hÂmÀ…þM˜\h?0)¨ @C„4ˆ[XHÛ{P5h `‰m˜€2Î[4†eHyXo(†Mp… Px¸ H&°NFd o@‚0†„4hÇf°GÐ…˜€epJH T’t)Hƒ l‹h„ø°´…*pÌ{P„ ôƒkÆDð†a(†£4DëôF„˜h)8† d$Ø¿oD5èK+ 5`€‡5¨LyP 5ÐAƒ˜‚O¨‚ Í]1L èÊa@$HWÀ`Pch„d05¬ÍkØÀk„iØðEà (†a˜€[0þøLD]x€N$]xH„D°*d &‚8€„*8„ƒh©†eèR8{$mÒe@‚mp W˃ðÓaP$¸$=ƒ FµÄK Q{+SºüÍCp\°‡dGÍÌ*XA U(ð$½AM‹<ÀìÄ„cÀ 8C…ÕS‚DÀ.P{ „A@Uoð$P†ž+ØJ(0àØ[8gƒ"ýÆ -†þ 8ÀÜEyøcØ„¶  ÇÕ¾D\€k\HoTf%Hƒ&ÅEÆlŽM׃Ѕ`tEFÌYæl 51Ø„{8 6‹ä<†ƒheh)nëêN¬m8„°t<$ÀH–oðV¾þgÛ”ÃkÈM`¸ÎÃ.à<àÐÏLNDØ]l°N0ÐèîgßžR6ˆÐm¸˜Ví 8^×^M\&H;Tf0¨‚cÀ`¥ö†K€ò‚khÒƒn2e‚ihàC¸ƒfp჆KðÅAH\8Dë¦qÇÜMðƒV¨‚;è‚)¸„F`ið%ðØ6%ƒ;þ‡{˜×õHW â)žWÐ`–‡fòTm†nm&X†Qž‚< sIFÞKHF&Ábœ–fH{ø„ˆÉ4X€µ>ˆ…móV4›ö€`($°‚eø<¼{ÈCoH¸ƒ¸D2Ï37ˆmØ„*øÛ½…ÇÄ ÷JØeðFGh\¨ß),ÔL5hÂWuŲ…Õ5Vƒ3`è°uð1pè[0Àb n[y-v%ˆu] u\_9d?@„ôkc´Ãe@„V¼u`ÄV0P‚mÀ„F¨K¶P‚[GÇl¿'ÐbX†`ȃl·%˜åYþ·sW<„eÀe0¸õCØCPK<\EøÚƒ(eðE1ÍUWøûÞ“‚fÕ¹€^´hx-¹…Fh€Ô6 ©]øŽÏ_1è?xUÄ ….è‚iG^WùË Ìä;üh*ùú­B«4™¦^—ÇÊ Žy<–‹ž?ß•úOòFâíQ‚¨éþ΋¤_‡àk³8$P„˜Rw–XeH¹†)0‹O€‡!ã)I†dH 8g+õú¡‡û-q%hL8@»¿L¼ß†)€È›X1äÃ]ÜýËãÆ{R¬^ó½Ì«d %P¬ŽrÀ÷E%¸„ …Ã÷VJ;´…þ(N†(g\\†V)`¿V<î«c]a1˜Epf„(d[<\I^ûs¾ý UŠ\üíÚ?g°g[`ü¸Gþ*™‚‡Oø€Èoè€æÜyÝvâ4PÜ„Ñg‰ì†‡P†V°ïê?X €[W˜‚2hL—´Ê˜ƒcÈ]h@ê·‚<ÀI\Æò_€!ˆCÞà°2l•MVºˆ9ÓJ×a'æIDI†•!Æä}84ÌѱMòÔlæçZ ‰·DRúJ L1Û†0™RÓ”„òóvGáËd"áùù4 #1jDž–‚ ¦›ó4 ^¢A·ríþêõ+ذbÇ’-kö,Ú´jײmëö-ܸrÇŠ)#ãG?”à9òvè“VŠ’Iü„K"“kÃ]ËÓ(™``\§LWl“`ÁZáú4åÃ%$‰(”¹6èÐCʱ&̵ŽVZåA„dYÒÌy>ë²lš1&ykE!‘ØPÅ| <åVDØ4 yG—I”æ`Óˆ…ÖŠ.ájÌ“cǺ¨™†ˆÉv5Q'´ Ö,“.(AdO‰W?$ãÈGÆÈOs)¸ ƒ :ø „J8a[º4£L‚ÃX¡H Þä¡‹<òLãZ2‡ s‹b(Þr@3—4³ WÛLp†Œ` !Ò4þŸˆ! #<xóAeÜ¢ ’åqõCi$3ÅAi#Q !Ú#Ù!HØ2 H¤áâ%†E•5#P@AǘÔ@JJ¤Â0°à’º¤ WJ4R…7؃„’˜¸r .02…"RH”Hˆ6W`|°¥DuÙ£F(zú)¨¡Š:*©¢n3H"Þ0áöxcÌÞÈ“Â=„…Ò‰(úQZ—, 2¦ÉXŒŒº,°@ ¸°€É%é²Éó«-,àpí2]YŒx4g„2Å% ÜòAÁÜa•UsË ŠÕÊ™Ñë#ˆxûkŽØrÍ:\VHþßsí&‰È;Ñ Ç€pü!ƒØ–P(A ~ UôÄÐ…êy ÛŠ#ü0…<‹+ëKA†–è•<JîS‚å¶¢½$zE OÜŠµ7á ±n|#ÅÒ…O|F£n‘×teP^‰U1<@?.©aàá°þ nšˆ¦qÆax€< W¾VÃíÈ£ ÆÀEéı”¦bLXŽ… [Ü¡ ~¸ -ëUŒ ‚›C€Çµp°ŒNgÄh@¶35™$ ‡€GQ½Ò“ žáb,~ó«_° þ›ÀT2šy`â ðÆ$K•\C¡×XQqƒleXŽPg1leɆ݄& žcè&NÉd6‘/ã2…!p–ªØ'€`%‘! 2Œ`L ¬1™X—‘"NàL0ñ!PÌ•uLÃrùo`bP“Æ%š"‘VÍ#ûý2˜Û bàb°C°‡€óà_]È€ãbÁ=~‡"]¸brRXȸRÚ3`Â[¸0¬ €A.g•×(†-b¸®H/WŒrŒLi>˜Ã'¼¡x(b^ E&=¶B‰Èi~ `A·ÄÀ„îp )L@þh4<ŒÑ•.(BCF L1ÀJø ˜¸à`dN)QÂ,íitŸ¡"ª€‰P° DjƳҀÃM’ÇŒq†4”u´9DˆX!öø@&…„2(ck)ø¼!8Á `¡%²]¶M(¢›ð .‚„G‚å¸pxS† *¤Aë  ñh¬ÚBUØD¤`p°€àUA²•qñM¨wÎ9‘XQʱÁ /µƒ.ôS¶‚`™¥°°G\|CT† Öq»¶8yž&íÿ̭ܲƒ^)n<ô±“½ì£š‚2.!cÝåÄëäþÊ Øhö¹Ó½îv¿;Þóþ©BˆBï~ÿ;àu(öa\A])¼ž–mhb<ä#6Øa"nèA'†ÁMh¢ÃàÁ´@BDA“˜'f ‰mpbõÃØ†êWÏ #´€¬çã9±MD†ïg0 B¼Â ’?>òïîYx©…,†¡ Rœ¢AàÞ@Š6t˜(HÁV Cäß^ ‹¡oALOlñ÷DHA T˜b%C B €B Aò R›€ L‚åA ƒ(¬‚)‚(ÌAÁ60)”€¤B¼Á0þt ¦BLÂ6ÔAD´Á0´@lC‚$ÁôÀˆ‚¼€ãE´A$ &!cÕ€Œ‚ã½Þ|AI0ÂAÀÀ6$)ðŽ‘B HD¼A’ TÀVL(\D¼Â Îà0h)°Á0L ÌÁ)œBììé(p¡þ! ž#À(ÔÁ0PÁ àç'A"jBÔ‚(ÌÀ$Ì 8À+œ+0B¼DA$Á´A t\AÔÁ a Ì(B!”À tBt#ØÁ *^ ö¢/ QÚÁ6A*L„&ÈÁÁ* ó‚þ(ÈBÈÁÌá) À*‚À`Á2²¡h@ŒÂÀ@õ•@ßMø`L‚pÂ/Î#=ô€ xžDlzE!ð"Ží€ÑIÄ>J„,òÂ…0s[0‚¯³>Óã*P\Z.V^ñD9˜®þxa˜8a¥£昄R:Ñ#Ø`ƒ {ªŒ“9di¯=Þè †0¨e¨:àz£Ž(V©£ 9x€õ,Š“©–yAŽUÂØ!®*¸b˜ô€WÞ#vè!€Ö^ª”`r/½ ™ÁÁ/z¤‚ ŠÌ—ª=Û@…â9QNYå•Ynù3FJ ‚Üâ,äŠSz#Ð#j1”ÞcRHé! SZ¨àˆô „XAµ }f£ UGÉ)¦(Âh#‰]Ž€a,B0„‹Le S ÉϨÊd%ˆ9êÈòR I€aRUƒA-Âð¤„0D–(†i Jä£#þæ8…6^,9e.DžìŠ]ä8BZЀS©¥‚0w餇Ob•Pño\Ɉ ©gSxØ#*èDøÂ褎‚hc”m†kãì§w bÒWô`EŽ@ê`刢a .ä…VšŠ**ŽèÖå÷á_þù? „`Ð:Îmvˆb’ˆà†ID!Q0 !dô.B!Wà¶¡ FaKQ`„;†:¤¢î{ # ÂV‰‚äv°ƒlƒ¦ÈÁ +#œ¢<ÅA¨¼ à ¢ÈÚ3-p,„N HA"h¢˜Õ$´P6 G‚³¢þÌ6fP·-Äj …ìŽ ÊêÄY;XÁ–M“0B,95¿B¬âW0Åv&QOÔá§hC VzœI!ª#`p„„‹*˜“ƒ'@¡*`¡m¨E*<у€¢XCDÅlE³I˜„:aµÓ¦– ¬m]þb{¸Ü´à^§0z«M˜0a^Á,xjd=­ÚÖœ°ÁK;‚v«-áâš0V@‘ƒÆ´#±µì+8a›6ä€T ÆåάáI˜)aœ`O†ª æ#©P‚‰ØÑÈT W. ³*ñáÌ@»ðà0a¯ÍAQ0!ôÐ*ìB•K…m&ÁOL¢Xð10IP¼ ¤¨E ú6Ð8%¸'p3‰0áŠh’&Aˆ/YÑ$^1ÆÕŽFâz û˜«ŒDm'ü3ƒ¨…š0Du¹ð4Om.iþ ¡BØ_pä‚hÂÖñ#¿‚¨‘¥¢è’¦x¢ÃÃЃK>= ùS¥Š§@QƒL·aÓJ[*@± ¨`½¢°µ© a¼À)š~'ÐÆ€Q¬Â TE·8é¨r`öm†ì‰žˆ—/ ŽÀ [‹B ~I‚°´€ =˜)8цÌ%mõ Ž`L˜l ÷yÉ@Š:(šßýÖhiNIB$¡t“r(j±Ù×v¼Â c,<%-xC±:2#`ÊWЃŠ+c¹HB´uY¬\gÝÆ Âõ=‚ §P²µÀþ;Pá eÃ,'C,è¡ÛàŸ³‹Î€h! Tk @„I(Ô½=àÁÊÁ“Ø—ˆžüŽß¸@ó´ _„ˆŒrvêE³ÊÁhço¹Ï—;8¬‰'Ɉ+¸$Äo`O *ð#ìBÍ @£Rñ¥9Ì zCh»¾0A Ä.Ú0ø´A0`@ Ф•2lÃDQPp0ó€o*„}ŠaÀÀ¤ä ƒ«?i×a='–fîN ýð°øð wÉh"¨7„8˜¹ @žì¯bÃð õê#BIwñ?•Œ8|K¯JÆ›0Q!`%ƒÈþÉ`qû™ùŸ²g0ÎϨpíÝ…?fT*2@DÞ`ÂNáÀÈ/~ì‚àÿ03ƒ êO-ð㤒^`‡0°=ðApNÜÀN AëB°M¾ÈöÀ2ö@n`2@T€2ãTàœà%VAcÉ`t@2  öa†a˜Á "ƒhp_âW a „Þá2È@ ž&È aâT€ ‡ ÀÁAãø!Þ O05fdÆ`t)Ô3Ì€à~°˜a èÁ22` lJ! 3È@" ‡A6 ;ƒ2áúA$¤þ°áè¾!246‡á¡Ì&n@4`'ã–À 56€ xª!& `²pèa  5C«!åð1#î ’øA^ t ^2á%È@èát@¡`Êñ%2@†pÈa‘É@é¡ÃqµQ c ¶ñS‘o@O`‡¹12´t` Ø‘ 2`Nàu 3€¢ ^â$ƒuÀ É€ð€ùà2Ò tÀ=R ×#ihÀ°q12`¢uÀ #_‚è MÒþ÷0¤¡3ÒöA¤AÉ n€ ÉQvP¾a'aB(ca¡ù€†AØ1ÂQ … ×ñ «Ò ¶Áªá2A)¡q/£òFMÿ$)`Èabað` ˜A`!¬6` –Æøa`áœa 𲡖@Æ V D`6`s–`ÀÆÀ2€* b` 63=–`rs¾!úa ´ öa9÷a£Ò èrÓÆ¾Á33a ¶¤AF1 $C€F`¤aúСþ4`A(s ö@–À–€øa úAœa ` Òa `2À ¤r1Þa ès øº†Á=-ó‡+™ÔS=W9­Á ¤r2r3–€ a Òa `°!À‡ "aT3À  :ËRb@Là_“2 @ G‘ @W€ ÐÎÒ œà åP`‡¶a¾@Â&¨ ¨¬+’­ ®†g¤é‘Ce&ÁNbG•¢AÛ–ªÈ@Æ  À ¢a²D `°ªÁqÈá²aV AÇ@œ Roþ@?u ²A²bà¨Â >sœÈ€¾ – @– ` à¨aWÍ2&Ì´!b¡èV€Uà¾AÅ"€#‡v•ªÁ F¢AÀAð`Oà+éa¼33!€ba!ñ’È!†Ab('cÄÕ `ö€6À,aa˜á0)Ô$Í@ ¸ ÈaZ5€FÏrJÇàœF`ÒaRqºr+;6À$£&‘@^Õ úÌàDà.à_5@`;sb!Þñ¢aørº ëþ†A æÀv´g\Fá cöôC2zàì ^ Lm~ !¢æd9€0K•²a ¨Áß“Ba`bÆ€^Ž A©Âàñ%Æ †öF‘á%ÈA2¡<5‘*´!ö@´ŒSZUD ²Áú¡œª¡B³Y]‘4 V*WÚC¼3 A<‡á`áuK!" °AFba ¡`a öÀdi ^£uü³ € .` LœÀ)@(Q2èa(ô%tÀz‡Á r Ö ÐAT©AN@2·D€þQ>É!,ÐAc3tFaÂF1ÒrSð R£ÒS+u"œ`0!Qº·@7t7àÉb`r÷g_ÂÎVH¡†¡ Àx Œ Üö£&£ˆä%j–e’ La‘àÅV ì`\Ü`ßnø†k@j¨”or :¡=x€ :¡Œ1*@쀀Øì`ÎÚä MhW‰ a DJs—6à  öa |Ð!S6 OW`M’`p ˜²¡ úùa.€žt1°¡ ð ˜¿!‘!rÈ B3s‡þ&T¶úUßftmwuÀrÿ”*È’S úAÈa ¤á+É@ 4x H—øáV@ø¡w¡ hùd+cÞaÈÍà˜“¹Y& D@øú0K T`’£A)éAä3VWRanà¬Ah€ Ñ™š¡ “Æ 6@ÄN„J@tî%^ x d Ì#úO3 Ò±Ýjá¨u ã€Ì F€ Á ­AlðÈÈau€¬¿6ïÚ¾ @¶A4€øÍÈaþ˜Ð  ?™Ï2ù9ÞÏu6[á5F [³AüßAÀំð˜ÜaüÈ‘ã7 гoÕª {øN¿RÌö<¼ˆ1£Æ;zü2¤È‘$Kš<‰2¥Ê•,;nÛÁ²£Ûf¶¼˜ã €Œð¸ ô¤gÒ¶IC療R€èEK·ÁÀ°X1qŠ4gc–X»!ì>'d¶™¹áDÀ¬iˆpa@©a#b\èWMG&lΖɨBZµ1ÈœdʤM@4'è¥P킉èÆ¨@Çw ”Rª¡ñm lxšÙvÃÌÃ=xª9aæ˜^ÐÙ´kÛ¾;·îþݼCnCÅó ŒB½sW“6Ìó¶ÊÕö Ì0ÀÚ°wÞQ¿A#Æ;X™œ€3HnEÆm4lƒ'ƒÛ1†EÛ M?ªûbmˆ ™þ}dFˆèˆ Ð0Œb(€ÃŒÍäP#@}&ˆ‹ h@Ï  ³É6¦0ÀbňbŠ*®Èb‹7ÂN/hAˆ‹@y¶G,È£MWÒ³„‚+ÀÏØA€™TcÆ@¢M6¥%4Ø@H)ch3LH3ÀB 5߀Mš4h0Æ]c€3?f$8Bœ{(¶ ,] ™Ô¬@5€,o EÝàŒþtü2ßņ&5Úˆi¦šnÊ)n¢À “tªR5-ÈXÃŒÌMg:Œ À ´’aF\ÀÏk#¨Î¤‘G5T“I?",Ñ`6|ƒL£\@ÃâaÔ׃B#,‰UCCŸ‰ÅÂ{² x­+À’îÔ@ã °ø¥9È ´Í`û( ”sp¡ ©LpÁšn£‡Zˆh0I:`ƒM6é¬P3TsƒÚ¤“,±hóÈ:Œá 2~„GÉÜ2P£ =4à AƒM?Î\{Ñ  M5ì“N,É $Ô¤£Í‹ 6¶b,ÐþI´f´:Ì<ä„ ªÕ6ÊNr˜riÃj¯ÍvÛ%íPË n‹´ë 8ÇB0€lí1ö‘N`äZmÃï¢vƒ÷EodÖà>̉_4‚6—ÛÆ );Up„(DÌMz馼Íâ§e†5ÄÂóêÕ[-<íäI²ïÎ{ï¾ÿ|m“ÌqûNF´`SðÊ/ϼ高²#0PѼ¦Bo6qÕoÏ}÷-¦íFœ¬D„?yÏâÄßþBÀè¿ü71òŠ6É2JØQC ?uR ´`©B `ÀƒNÀ µhA!ê0ŠQl üÂ+¢@ÀÀr¨ƒêä§þ’W°âvzÐOˆÂ^„F쀄Ø! áÊa´&ÃÅÆw‘UÊ’…(!.E„ѵ’•;`DÐhJ"/Äè4á ˜LÂv8E ¾0 þ#pÁ†XE Œ°[~*ˆÅCàÄ$°‚”%*Œè¹ °CÚ’ù"”@nŒèÙh‰OÞB X¨FуôFÐÄ+ŒÀ†ô@XEÚð†Èa…øÂz0 -´AˆX€Á$d…¤ÂY,'‚P ,Ð( -b*‚°=\pI¨g ZPN„@²xZ†/ô ;€F± °á †…^Q´€šØAŽ„èn ©o’ç,€ê£3ë颠O,,s`Ã6‚PVPo Â+ Š:Ôa-0D¨—PAo¸(ô`=þp¡spÃ+æ„ì"ÜF<ŠQ¹5EÛ ‚) ½(¬" ¢Ð„†‘ƒQ¬Âv(lÁ B@  _Üäà I¨q;W‹¢ò@_­GÜ Jœ¢”Îe[ ÂðŠ™ÈÁI+’0ŒïJt Û†B…‡!Û˜D€`ÁA8+^ð‚6t¢¤ïCq…0¤¢¹ÕÅM-´ ’m¡FQA`Œha¨Ã Y`ÁŸ»h†F*ÈATEö: F°â ¢`Å~¯ÀB…Qƒ7pBHE|åPT0 Zˆ&¡…9ðþ@Dlq'îùaÝP×#ÛÐÚ: *à$„ÐD le’¸á;ak˜ÕVúÎ aè(Vñ‚]™ u0HÑ‚š„ ˜>ó{ŠÌA¾5&Ž0‡#xÈhñ;LùÌ”FßJ0J WºS ›DÁQNlƒ"bDÊNhon[ê†!¢X»A N]„7Í’èA0XœrØÔq…B*p›mpa„žØ2²Ÿ]éIhžèÄ)NÁˆK¢!õ/W¨¾/Ô¤9€µ·6ê_Ú'!pà ¹±{Þ.„° ïTp¡\@};…kË1þ %D º¨G.œ¢_еkÛSâAfFüÓø—Þ"a¦áíaŽŸ™Ô-!>+‹²ƒâ q…,º §±ç@ ;"D0*¨‚/! m`ÀpOv‚™¶¼B!„­g‹Ü%zØI˧~æT}´¶ÔC[u(‹‡pA„xE`›ƒ0†j@…9ˆÂíydÄÌ©ÛG@-x Ë=ŒNášÆ:FÊ·“ÈÛð™¢BÜPÌÅOâÆÃ¨bŠg@œ*ª|3U!fÀˆILâä¢M !L‘Þ9¶ Ÿ=- á†QiþóÄaÄ T>ŒÎ?dòþ­'£}· AlXyp©ðB¤;¸kb„<’bIƒ)vôaôÓèºÍn9ýŒÂ—upÏxŽ0‚ VyúS4ƒQxbmƒ'Â7Ô<ž ‚cÃ`s 5zð¨×X`A` oðFUvÐBðu$|G 0± £Ðkï—"þ&8 “° ²`IP AZ Y– †U¦@…¦pš ¤°è¨0PnTÐo'; ~§=š eµ » n Gp ž Q@U•_ÆÅ£pvuÖ uPuðW½TEWz¼3 Ià ¥7P<ÐKTà‹T`dG–Ô3u  lÀYFIÀì3šP žzj…P #d%‡ÅAY6 @xç…ipGPn¯0‰¡ rð $D9PT0 ;‹D†1§ðÇp†Ð.ç žà… å5`òp@þ Z 6G¥¨†à¦A€iØ;¦°I¸a†^8hÿø„#D ©÷¼Áy¨Ðȉ²à "d3@˜' `)à ¯  F0 ”¥ W0TÐc…ð&ù PšÐNô»v¦°zݦžàu1öu»ðl0£  ä“nðMTP#Wð‡/ B®eh«° ªD m° PV]/“6“ñ:1úX˜¼qr5À»à ¨|/ðQ9`=ð\P|W€G'µT_öX«ðX¯÷Äžqb‡8 Þ8 lÉ\p± ¤à §p{%Ð_þèQ/PÔ#Xа °TW°/P% W R·˜X×Q:ÑÓɘ§ I`B¡G˜…0zÝUL¸Á=ðu“Pùwx³ˆ„ž°6žØ)Ÿ.¹s “òiŒ€–‹Ç);0‹I€ 感š‡ ýE  ª ¦|: Ä& º6àp‹ (¡ ^PíðÚ¡*¢É¶U0I„pq„9¢á¡ p‘ã ¡Üð¡6Š£+Ê£´ñ a J¬x= ªÐ‘Ћ€hâõ@ 60 ª€I: pP‹À´  õ€æÐí`þ( £fŠðì€|À¤Oð LjM*ÃÀ |€ìð ‚°q`¤ƒ*KW <Ñ€I¨aðçÀ•г` Eó’ p@˜: qà•.€1 ÿ@•°¼P @ À ¬ê ú^ð’Y°–øàùP¹àÂ@£î0–0‹  k0Т‹:¢… V<Á « ­A> ¤Ã€’@ù°–J –*±Yð0ÏðúÀã¯$ì –hðÿÐøO¯ÃÀ¯Üà½`ç ú0‘t`½°}€þð>úç³P×*¡…Ø *Ú£í å@âÐÝðÐ `©ç¥Ï`®è: @ÃðYP}À³êðt°(@k0 ðqP´í€´ÜÐYðÃP½Pø€ñ^°û |ðY ì §‘@øÐ » ¢#Øc­-Aœ·AÑ^p뽈Bpเ¼@‹°[@ ÀìOÐq­qðh@îð¬Ã`¿` ö 0ùÐ tšË¹tPþ¶ªÀ ³0|`ê`ã°kP pà ‘P¹‘À [0 Tþж º w¨\—”Y/ G­9È rn°Š>Ôw^4j¿œ:„X° uPž ° T "Šúab ˜0 Žˆ Ôl Çp ~€`Ž0 Lp‡0 äœä,Î-‘·  bºP¢ü;íÍ'ñÆ3p hr KFð =‡`1Ö§`µ Èþe„< ô—›Q9‰6žPÑÛÐo`¤@ FÀs%OB ²²    (qÇðí|Ű w0àÞ ÍðÀ Vp 2Ð ÑÍðÔŒiÉ~Ð iM-Ï-щ0À0*áí — áÆp(qˆðÒö,;;L €£R = XTÁë  ] ý¢`÷YyºÌ!ð 5ÐC¦ ! ƒmbp ,ô!ðZÁVÐÕƒ Rp˜p U  Åà e` Ëà]€R¡ ÄŽ  Š Åp Cþ  JpÁ@ ×°ÒSÀÃà ò0 C0eP`0 b 2@W½ ­ 0} ¡ VÇ ËPÓÇ ¬}`° Å@ З]ÎRp ¡ °Ò¡jÐÚÙ½ ¬] ÃÐ Æ ÅpÒÕ|‰àÍÃ`› ÏâÚSpi Å g ÆPR ­ÚgÝÁ° jàÍC°UP C›°ÞfM:æeD@qUaa– plÃ0µ¹`×Ä= 7„À<ǼDð]¹§‘nÀQ f…ØI@ ´TPd¿$5¾;S Þ@ ˜ eà ]ðö€ þɰ ðw  p ¸e`ÇàP­€ÍPp ˜@ ¸° Ô<Î PÓ1Š øÓ? ψ`ˆà Ô¬À` Q pËVp ‰ÀòÐð ×° ›`Å@ IM 0Óe`2pÎÑÞï= ðŀĠ Þ€]°›p H`ŽÀ º "­p +-÷€Åà J° H É Á w° Þ` › ›íeÐ e íy` Š`` ¡€à WMâkóW B° å =nMS$o™´T»åTРm0^Ǽ„pþ¤ÐÀ K(ð Y}F°Íæ’¸/p ½¤ ˜½Ó ¸pÈ= Þ ðp#¯Ëp Ò|×  ð`òð% U` à ›ð͸€ AÍ ðÞ¡À,@ÍrŽ òÐ ]PÉÍÃp e@ ® ò ÄÐ V} ®ðö0 ‡@ JUpö Ãpíƒ@ Ë  C0> ¶ Ÿ€öL0öz?”° ðPò ö N 8ð¡ðI} Û  Ô!Ͷ ê Hò`ëý ÷€7­9ßî c -@\Ï<\¢Ð 6 lþ@NÿõG¦›¹d B0 um©@“`¯vÀ <`©@üÃ`ü-ü²”-À©`eÞô ·¿;ÛÞ  )0 ¡pËà Ð ¾Óñ ÞpÒºp Épgp¸ ÇàþÔ¬ Þpƒ° ðÞA_ÓŽ ‰b† ëêVƒ2J€YQ4M#?˜6QÀ4Т<`Û.Y!6íX$ÂMë& {ĆáØähÓ4 S,ZÔ5aH(¶|ÑHJ0J~˜L[wØ™37ÉøÑeX«`n FL^0¡(³øã^Å”Žž v)ͱ3 d~jdQ‰•Áͤ[×î]¼þyõîåÛ×ï_À&\Øðaĉ#žâ×VŠÊ¨¡ÔE ËŽ ¹$#˜LŠ>ó`A ’Ç–µæÊž5C>Ë3ðÖ²kËn©’†Âa‰Ê,C2d˜%ɥ販X3Wt§(òÖ —7 ”ˆ) z¨eiòLñÌ^™a‡î,«ËˆØ˪ ¢þƒ’2b †¨¹skd9ΔéB x¶H \ˆAäŽA¶±¢5ŒB™FÔÂdÊðÀcHæŒeüƃ;ÔX \¤`m1c”qFk´ñFsÄÑ?B9#™d˜Œd¤£˜‘© bX€G—mŠþI†…c*:ðÉ.l™ ˆñ„.éòaÊøä&fˆuÁäh¦<Œ!Æc'˜™Drx> &”a”€Ç•AñÒ˜Úò@ÄS2ƒ'N™òX&™`òPBGb‹5öXd“UvÙÁ™k¦gíŠv˜i sBMY¸æ˜R¸Ã1¦ $Šé«Úº¶ÁÖ¢2©ݼ¶—Yzëµ÷^|óÕw_Å”¢ÑY 0ü€'B™Ëê¢FŒ;ܵz&1>&‘ŠŠfÕ‘V’Ñ2½DX=ëPÄÐùfºë¶ûn¼™ðFÈ€QF]ÀSFË3> bÎPÆŠ!±B™dÆý˜Ðo)¨¶nQ„¬X¿a´CD5ÜÂ!õa¦Xn˜[üV&˜Ñq¶oîH&up¢ßï1Æm¼‹7þxäóyt&…i<ðU [@¸†Ð §)ã?ˆÉ%¥¸ÇƒŠü¸Ãþ¶œ’okEˆ ÍÁ¦­@íXHdX?\Qä˜9‰ziÐF RðîÀ7+À "´“E(A ‰ðÆæµF°¡¢H^=øAÎ*÷Ä@ˆq´Â)~¸Þ@Ô·ýÀg¨ÎÖÊàPPnŸˆYæâÔyƒ ˜Fõ° J4¤„ŽHDä2[ÀlÆh@¯Vxç5° Fpq  ¤ ‰h„qúB"°Á\xAŠÆQŽs´™¬€‹3œhkƒbÖáÂi¸ H˜†1ZçŠFx@ æ3ã@Ö7 oÀc:j@I+@P…Ò%ÂVˆ¯A HAþ)ÃJh‘.PBH'š†LâÈ`X·À7tqA‹0BB8)X`3t$f1 ±m A‡h…7Òð e¤æ†»˜p (£6À°‡¶áŠÈ-è×°ÂÀ0!ÃI¡qÓð%.Á‚à ”xê ‹ø!%RÄÚ¦`hÂãG×H"¶±Ž˜¬V"ê¢< º"|a¿ fE …¸!lP#ˆPˆc†T¤#ÅÑd2…CL`BKŠ`ãhK<œ€6⤥¬ EK[Ú….”a· ³Ž!õyH*Ølñ bDk ÁP©üåÒ¢1A¦EþDþ „íe¦Ã., LVð` ¯@ˆ0!€ F´0ƒ\2‚®$åk_ýŠ˜VÈ 0Ô‘~àÊÀœ €Ç`¶‘Y˜µ¢† \à F ¤xÁ[`a „ÐC0B˜Bœøkk]ûZº8A ³-ÖÂþ Lˆx‚ÙÆ$ZІ`’¯Ã 4a‘:A b„„Á(Á@f`VÔ"£m˜ƒÂ-ˆ"³ÃØÆÆ [ôÒelЄš›„ÊŽ– çõË$’„I fnpƒm‰Å*$s̵žµ[i!6_;XE*І·îe3èþÄp ÑTÔ` Q0®0Nvñµƒhò-$AM… }Ó+ÒB” ãeÄN ‹¸áIL'``8& z8B±BLbÀ1bc-lüÁÑY d¡Ð…†…—3p¥a°ƒS*ˆb¸D¨…†Û `¦ÎopÃ@ìÌáÖ§ˆ0LÑ 3ߨn“pC!Ü@C‚3èqÜ0Üa!/ŽB ò;ÚG_y…˜Á @*]í—¿{ÍôwgPgº‚Å;àA&1‰ _šVPæ@dSgv;Ø!\<ŒEƒÔÐ…vC„ébTDÌþœþ«0á X$&‹*SM¡lƒàâ0–qc¨H ¡FØcG€áE˜ø@11…9u@è¦öÖpî`‚‹¶Üb­_‹BÎè(0ÞU„!—FÚ0^°.A¾ &*hÕà ‚±}1T좤ðDvÁƒUœü †@P1`I¤N1ŒpŠS´a¯¹(¸p„SpÜO.DNP0‚´ž(Áõ0.´¡tIÂ.¦NA……†…®à Zè0(<1V#`Á¦8(BÐr6árÅ}{`ˆ6ávу'Ö Ü"˸Ä&þaGJ4cvJP>°"yÜAƒë‚6aËPüº`pNAÞð†EZá y¬ ‰H1.Á<0ü€ø0pp‰Ã³`Š?Ä~0ú¨Ò0Qu+D8jç Œb¼!?B„AA]ºö »ß= ><ˆ‚®Û¨ñ¿?άUT`u0„Éy@•ÏÁqc¾iMT€ƒ;ðDh¬úF! ©Xïi‰Ðí"„:ˆ‚;›„B09è„@(„Zƒ:x…øB.C苨Ñú‚½3…0‚:ÈB¨ƒ¨ƒ˜„6@FàOø‚›+ÈøMx.x,CT¯Txþ'cG8\ð²§@xHLÐ…f†È[8ƒmø„4À„c¨uʸèxP„Vp„cÀ…Oȃ[¨‚{°\HAHc°?ƒ2`Ši…Fè˜ë8=[PyP„uPL@L(† è‚!h„D€ @Ãc@0p„uð8¥Š‚Nh¯HT𮱈IØAý€©6hƒ60L4…óû>{Ñ@7à#09ŒR9OÀº`ƒH›´Œ’?›ƒ$« زˆÿ{²ÀO8€µ… "à9¨RÀ¨™èÅO†@Ø;!-"‚0Ø¿aè„[†þ…«…, X,¨ 0‚èÓÒ„Fô!h˜V‡{ø£­$¨x˜6E`åù€4h†VI2™ŽiÀðDx [h‡¼ƒ.X†fÈb„/²…g‘‚dPch†i°§H„ˆ)\P„ Ð6\Ža°‚kPEh!q&HÖ )E›1!à‚ EõˆN˜(R†xƒ7.-¸4N0\#."˜2T”‘8¹+M¨A;xƒø‚ ‚Qhƒbû‚0ÈJ4³:"ØhM °uqƒ0(àã„6"¨0!N(= ‚:þ*°ƒETX—BEN˜*‚hlƒ ø‚(@A3„+H‚(8‚pó1TPGS =ˆM ‚mè„ðÀ»Ðƒp˜)P Ј )Ø£é`mû{¸+HGP‚*@„)ȃ:0B˜ K`‚PÈ$°+h€<˜€<`7+x7x˜†`P‚[˜‚ÓS„3è6×"7ˆºÒ„QàZdÊ_c+V®Q€0°ˆxdCÊÕÊ+­ÜJÀ0Vhƒ€mà×4=h#ðP¨8:R8…UÈþFR8Y@³ð„w´±ÐÌ( ;O@S0»S˜ƒ@ 9è  LPh²› 68‚b” ¹S8ËNh+}…M“ƒ8‚Ø €wdƒ…/0.°ƒ}G 9Ð;« PЃå—Í9„<ØÈÎÀ„mH†iHb ƒŒ'1¸$H4hy¸0pòaÉF@„ °…Fè¦X‡rJ†è°ˆMh†9ɳËQ\˜€epWH¢eÐ $\Ъd+µˆI€46…¹’¹7 ‹ðº0F¿6º¾a/HëU¼H…]0…ó5l)/M»‹Wþà 7ø5º(q}±K#.)»‹ýJך‰(;¯Þš²òÊS‹Ø¯rÍ‹€º{ÝuÙ0ÈŠª[P[èoL„,ÜšA¸L¸–™-…TL˜X ì71ðƒ[˜ˆP‚ƒÜ°t³VAÏMqï£VòÚV½²-@…$Û,pM‹ÐD˜ C`…/ˆ®]i܆à_£±nm­Z(¥ü8Bˆ* W¾ƒ,bY‡YEHc#½Ù 1`Zë€kžèuƒ¨)C££Z¶m[·F(´è’Y8.q CÀµU°Ð5˜ƒ_Kƈ0S°ƒ«|[þÄ¥ƒ˜½ØXâÄj„1©f£–ˆÐ LpbÄĵuÁ–—*… ®U …ˆ0ø[+9`…f݆ =@­W@`<ÚÎÝÝ™è‚fàÜ»°y mBX+ €0Žcø p—ÈÀ\(†<`oØ„˜¹‹N± DøÞµ˜Eƒ´:PÄ4„Ú ÓËz±€Qˆ®x_d!hÖú.Ýí^ØJ*G* ê"%(ƒÚ\1(ˆ)·ao°EGx0 ™Dp ò†b([8 ?P†ˆ0 “ȃ{pXþ­ ?4—Pè“b 2Äß‹)„o%þ¯@…K†I­œµa#1« ÄIØQ»Ý/xsa¿`H`[@o8{ó¤„Ivj†ð–pvÉP„è71¼æ„0‚UЋzƒ6X…s-Œ@…a’9Y°ˆN(ým¾È`?¨‚l†=Ù„*¸„dhÏœl )ø2oSÜ«ˆ`\-†PPø€‡Ð…F¨Þ.`‚fØyp18Dp+ˆ¶Wª\øeÐb\Hp½ÀI]2 Pó†­Ià„+„@ЃOþ»òyüá;;+VÐÁþ*ñˆ¡ŒÞ“ÉÅ–fÜ<@˜ 'ºê5ù€¹É L¸%0r§Ö(¶‚›ëT8«Š WÀè'W–˜bi…RÙ ?ðÆÝòÎý\d­(VS0@3s9ç«Íª€0À‚Zµ‘nøu˜ uø|‹P‡Hè‹s0ºP|ˆƒˆƒ&à…á€&€ƒ0|à™1…{¥‚ ¯BX…#ö‹BØ 5áõ9_õjm$Ø×Q…r†v°ˆ"PI …hXƒ¾Ð‡J°t‹`‡Ðôa€ƒ‚Z¯/G†n¨hd‹ ‚þØî½f…òvîØö¿pÝ#@8Ofur× -Œgð‚>PK8>°n@xß‚qð‚xè†x¨‡aˆøI?vv·]§ sÈ‚J@ƒX„xXƒb‡/°}‚>°„Hà…x‡nˆK@gh4°„vùs¨‹8ÈKÈAhvðwø…8xðøqˆ‡x@ƒxP‡vàƒxà€'qàKà…gPއ¡/ø@¯Ý´Sð.Fà`­Læ$8.6Ђ+p1*¨0`eùâN©mÐQ8:F`5Á…NÈzø*¯Nè„·B38>½gƒBÍþs/÷rW…q„q ƒð‚„HH8Ø‚J‚gèwÐõ'ˆ:x„ax_(ðΧ‹|øƒrÀ‡vx‚Éo‚¨ ȉuI˜…èƒGØ/è/ …^° øƒaàƒßþºà|è°âÇa„sØ‚°ðHw\x„Yà…,à€Yx„n(‡Gà…„>¨„>†Co‡yØAS,hPQh4 ,‚؆L~R¨€à%€d˜ž7mHÚ1láÂ=`„€1¬N˜S¤zDyá €¨ÞÌy*I.õ”¦a)W²Õ&ˆ†6þoâÌ©s'Ïž> *t(Ñ¢F"Mªt©Ï5t©ë…"œn m×înÞ¸¨·°GÃl„ÖM¬ÍgòÍ¢£ªO%8‚xÉâeØ8 ÏÖdT„—¤qk|<âSiÖsÇkŒ3N<|½š`È5ŒÝ¯H•ø óñgعJ¼¸ñÙÒk͸^ìøÀ×çY$I¾üÅÖnÑ9¦>G‘ºRh!‘#9†í0rÄΫmœ˜b`‡sVW¢"*Œ© z¾óp“£NIF‚@È®QP™4Æ;A Õ©†R¯Z1Lÿ)4ɤԱo 2Ø ƒB¡„µFþ9Ü à ˆsU[ÓŽ%¹¨2L.Ð2–0f±#I$: ’[pèE%‚%Où¨2‹_M\x–$ÂôÑ-‚ôñ><ƒä?>ŒóŒMÜŒó/¹¬AÂ<í àb/|¨ÒËhEô’â3³è“¼B‹?³H²HùÑ >í´sNncÇ L²Ð*% GHX„Ð#ϱñ!ÃÌðÆu!LÂ)¦\Ñ‚¦ša ”ÀH_ ÃÀCsò;„`ÇB\T€J hƒsŒ4Œ­¸…žˆB¡°Ã[¬±Ç"»ÓúÄ3ËE$0cìlQN<¹ü³[mþØ H=á”Ãþ‡8åä‰MÜÄË,ª˜óK<œ¹óH–„3.„ùÔà 7àòâ…hlÆ8[¨B°ÁëÚ$H9øS‰/H‚ùŽ;¿¸‡–ˆ3L>«¡Ï9pÉ/6äã tdÛf »  hAHÁ3 TÔ'TÐI'L2 ¬Ô1 v¦À0Ç 6ÒC¦X´ñÊž¤ÂÊ\@GE©(Ô‚!WD!Ê z¬BÅ5T¼b(B —¬ß¸à€¯Q kÄÑN>ÿ á (¬áN<‚ ƒ‚?—çS„%þXOÝä# ¼Üd¹*ìX¢Î3I¢þ‘ú9ÿpЇ?^Xb ݨ; ð„?î4±g7þüMíðA‚%ùà­³SÏ?¼p8›û—ÿ¸s»:Ü£ðL‘ûCy;ÿlQ,˜¢·#£È!‡}žòŠr¼’ЧèñE o@«¸É6rp.0 C;BÿNAYá~²ÿ®0 B¼ ÔD*°€ú £rÀÂ(&a 7(hp*\! [èBŸ¨"•°A;RC›à)(9üÉ ÇÒ“gôp‡céáñŠhCŸ1ˆAüG>ŒEŒÜ„}ëÉ(v‘ƒ)Þ¤bˆ² ,ℌHa!A53¾0j\#þõ vÐÂ+mta;â ¥bm#PF©A ¨0Ç?2‚$! iÈC"2‘Šlá €…:,2’¾ÑB ™2ƒtb‹—Ìä0 aŠ¦å„ <àÁ@ˆ0J˜Ñ”£Dc9±Bˆ¢QÆ6¨`‡$LqУNZ0K†ì ”$1‹y,BD =`¥1›™“-2Dh QRÈ(s° 'Œ ÍXà  É#„à"ÃÈ!æ0?šbîÕq…\ ¨ ’0CHd!u`E nÍNA! 1¬)‡:3¢b:Q‰Ú,¯¨A„À‰çÔà FRþÑM¸¡9ø © )NL¢IHá*æ Š#H¤!Åw@Š/Ø! `¢ ÅuòmŒëLEqRˆW s!TÐÄ$Ú° "ˆb\HÚp6†!BxåêÐ !ˆ¢«Ø†NQƒL­«B Q‡h!¦@N „`ŠBÔâ º(aIˆèa-l"ízZa¡%ÅŽæ‰#°bQ˜Ã(‚0‡N! %0D ´`!œÂn¸B` 7¸Ó®”®8‘Cœ6'ˆ}…BLá‰@°a!¾í£N¸›˜6¸I€öÊ=Ø!%„)zWC Ë”¦'¸ðþSÈÁ§ 1Š´À¨zà Jð ­ÒD °Ð‰Å26¿…ÜEä0Xý"r§€¡aÈAÑžC„Tì¢n0D ÐЂ »¨ ,7`áTH zð†/‚Ä=`}Nq„0€¢&7ÑDB ‡a`µanŽÃàGœèḠá„'\¥«QÌa¬¯ …ŒÀ…·q˜=Øë$ Ã#À § „`0RŒ•FXÅ.Úf좵˜Ã AæZàÀrnc!À€9+’ .¾¯©Q‡90XŽ‚°„)|žaH·ÃWØè$fƒ6Ô€\8>Å þ.ÈŸzÜЉ TN·1Š0쀌ÐÄ\¥jMà­“lP(A„üÄabÛ`ª¯pŠSâIÐz ŠG½‚ ©r'ñ‚Z`Al­Å ŒPPb˜ ‘„ èá¯8vz ìâ9ÝtgœÕýG¹¶ÁbnANÁ`S0˜ fB ÂЉÈa …N`ŠðÀº®Ü†,@!Š Pºá—ƒ(XñŠ„¡%«Ã@Á- üB*BЉa¼â -Á@¨@Š‚nƒG8ó®Ð^9$ \`CÚ@j* ÜŒvõÄÌÃ…죨EDr7þt%ž¨CFÑ‚ $¡» BÚPæÐ»æt7ÙYÈ Ì,» 'A„€ 0pƒJËGSÔR H RM"„…,ôðw6X3˜z˜;rj±xÖAVàkBˆT â ê*PqôapÞóËN…øÀ×*ðÄ(ú‡ÝB\A¬2FNR!‹-V AÈÁ$Zð÷ÀâÁ¨h\Ñ ßïRzEØð_¶Cp3Ð;5£?H"`Ç=i÷6ºŸ“î;4üí6§÷½Ønž€ß'ŸZCƒ±ýç·>ýñXþú’ÅÚÓÍLNhApáßÓQ-#þ0“R …1üÅá—> mC`jàfѯ¡Ñs'0„€ÂÉ …)p(XPRh‚</-!`Zÿ…&„@MÝ VÓ¯A„lÃð  á¾PU`÷5 !!À@¤š‚B ™„¥ÂìUà~A÷UU ,D*à00^ªåDÚ¹Á$ÁQ©Ú6Ô LÂá]!!ŸÑ¢ÍA-•ŽR A9 Rl­ÉœBy_#¦Ðý±*Àà#ÒR%~á*ˆ÷m!rb'ÚÄÉ‚i'PÁ*´¬À(ˆY-AþГèAüèÁØ%Á¯}޵A-\,ÈÁ B!lÃpA!$Óžá®DÁ¬q,0BÜ™+êA¤Â6d22Â$Ô"2šÊ)”@h*Ä¢±Y0®Š#MÙ*õ@A)Œƒ¸ôàBô€«p p´¼‚76‡)|ÇX%A T€,À™´ž*ÁÁ#°ä$00À  À '’¤þXBìÿ5]-Â+ÈÂÌ’+Ç·ËÖ`Á¸A0“|0@!ðÀ)ð¢€0Ø0ÂÈÂô„\A2D ìB¤#|Á þ h%{\Üu Âô¹Á)ôÀ$ì@h¼A Àï™B§-DHˆBÖœ—Ô(°Á+,d*Œ•M0B]¾‚oÁ+´A –zÓ ¼B üc!ðÏ$Ð#”!¬å.|Á+<‘tÂÀ—´ÃÍG'X%AÀ"'0 xÂ+ UIÊfô™‚!Ì6ÕÁJÙ}'<å0ÐäBÌ€nr)¤‚ûÜD'èæ‰¡'ø¢¦€' Í6D g1¿…À `j¼ÁÁlC `p¾ÀðÀgg±z)g-´Á> Ѱ)øbJô@x ´ä?mÃØþqB ‚ *ÅîÂ*lQq‡(¼A`d©èAqÌAý(pÎÒf¹ *€‚?–@ `A °BE…* C¨(' G!Ø!ÌÏlÒ¨õ±SÛ˜Ü.´¼ôæ$¼‚l‚‚'T€l –ߌmØŽQU}Á6ÄåJuÚåñ€ÀG,Õ)È‚CíìÀ„Á(AÌ@ tå ¸ðS*ˆ‚–’‡)!!|A0âÑp‚‚ÌÁÂ8•€t‚&h‚Ÿ è3yB=2#´€JHܘ®À0•J¦ý#!äÀ °BMhÁ.´6 ¦¼ @œÈÁÿÔÂ(¹RÜþqä¥Ð`Êꜙ+›‚'B°‚šñg|è(¼ä@*ÈÁ‰ŽB!`\<ß0‚!`ÁtšÂh \ T@P'ß”˜Á$Á¨‘1Ä$(*¼h(ÂŽ Á¯Ž‚³Õ›¸)„Àey (¤¨+Gœ‚’Âx•(PÁ ôÀÀ.xæ3U€<2Å6LŸ,LB|ž€q–wÂ.¼˜ˆÂ(ÈB¼VŒSÜÌJØÁA €œ)XÄ  ¼Bìc÷}, Û¬òlºÙAØ& ÇPŒi!LBØrŒé”QÓna&AD+-íþ@'8_!@-!ÌÀª¤šö“'t‚báÑò@€lC£0u íT=ŠE6-ÁÔjá˜n¢ÑŽi*Í@'(ˆÒ$´í˜: !T„Ä2ÅØ¶*XÓo¦Â+í+˜hÁ$Á\Aõ‰Âä #h Þ3Zî )¤‚°A'hœ\’bÏÂnaÝô,´€.ÈüRìònïú.±Ìßï ïðêD! ”Mp°Á¹ûù„N¾îM4/ñRoõ Ô1€5ÙÁÈ~^zä#úU˜¹‘Ú&~ß(¨¨õ¢oúZ2BM´ï6B´í/¹nÝ¡„ÉïMAÄþN‚oêÊ;ÑÒ$¸Öî×jA°äïྒ@ðØµ¯Ö–NˆÑ‚BMðB¡úzðK#<ë(%„ÁìÂÖ­Êcq <«,„Ÿ¨©²ÙìBtB€h(°Â @B†Aø'B ƒ?ñNq‚³ækõ5Ä.ô€»®VXÄ¡Dh´œâB¤‚!Ì“q+Å(X-„ÀQ¾Çp L–¹Á‘Zí)Ü'œM-}ïÆh#¬BÔm¹½ÑrÁy®hBØA“iBŒDU ͈ ê œØqä€jrBÈð0dÕšñ)£²þOÔ‚'œÝOG•‡´µ)ȱnÒ¦éJÓéüjÂ)@°¬'=%¥Änƒœç0ø12OîOÍíÞð/8&(`@ùZ¬ü,)x‚¥ò7ƒ3PÜ)|°uD H3”@¨©²Á.ÔAÆ”ÚEAèAóvçB$ì€t¼ð.­NÎSYm±I‘jî*ìÀF\åÙBG•‰Â ”€(A  B6›ÂèÁ3 à*ô­…óHƒóTÀ ø„Že)Œf°ŒçËB'€ë'A €ÂtF*C¼§2 c'õ€\qAç0è™»ªÙLYüL´Á ÈÕþ€!˜©!0€,€·Á(ä@ ¼B€‚{ÉÂB´€\’tZ£ò6 ‚ ¢‘ÖÚDþF¯M$©H3DþÂ`®Í5N¼!¤ÄHâ„ëîDþÒZ„ë¡ÄûEy"$LžZC6 B0ò%pÁç-HH%à$"&^"-…ÓbZÓý¶#vR &#¼AsÐõ#>âFölG“(¢œ)aðë¡Ç+èAFs^ÔÁ¹1À¨ ÂÉ•£üåÛ}LêÁÈÂtÂwÙBÊ}%*,åû(÷(ŒH#(m«5 €¶xçØA/^í6Õ€H²p‚u0À.p¥°Uæeþ²ÏÀ¼e°eå$8 Ÿ´ÖÂv‚š&mjf%T×XªwZ§X8T€!ô€ð€Ù:=`C5ØD6h2|ÃB8A5P€ƒÜD6ô ,?@58Á°è@?@ÁB\@:èøB˜Á>œ8CìC?¬ÀBè€3”Â/ˆu.è£D(ì•u C„ÔX'ô@†6G*¼Áp4ï$„+FÁ‚T¾—IÈÖŠJ›‹Rž'xBzO8ñÚ¡5qBȈ]øŸcø×À^ë„Ü8“#ú(@:ì“g3l€ ,Ä h€ˆ3„¡çÄ ,A dÀ¥ƒ0Ã08Hþ64ú¡_ºM`ú¥3ùM´:«!?`,=ƒèÀB¨€˜:Cðƒ€ƒ¨›28à `z«¯:Š#û«¿º6*bî@¼B@++˜ÂØ÷È)hBÔ@ °Â œ5º‘ùH]d.D¬õ€L§Ò£°êò€'”ßyÏ6Cð@*Г°¾À Ú`G,DÀú…wûÄ À5Ä €5àTA?ô,hƒ ¹ H: àhÀBd@|ü>à4ÂDÃB€C:8¨g,àÁ`C)àÁPC:|?PTà ÜÀÄã¤ïÐKºMðƒ6T5TC6@þA烋ÃB:àÁŽ/Ä =,5dÂì¸ ¤6À@ÁÔ€34<5@:¼ƒ¨€6hC°óƒÌÃ=ì||°ƒhCNDAÁgÖ‚‹.e@-ÀÝ>-eˆÂN€Jt^ÇêAq‚€Â¿G ŠšB ÌÈlØÍÖÀ6$Aä¡ß{ôa MB'$Á­à°]æBÒÇ À(GùK.D|Á"b:˜,D €œ3DÀÄB&ôà =pü0˜ ( d‚3ðC48N”B5(8 ˜@)샃3(Àd6¬6þ˜8ƒ‚6¼ÃD)rK¢iˆ5l ƒÃ2¤] d ¾ÁâiÀ°wÐk¸B€ŽaNœ‘ÀLG jÑÃnD&g+Ò Ð†M¸äb p€ Ð7mïÀ-Ù§¡Cc6Fˆ#-©^ÍÖ©-¢ÔIµŠÈ¶$-Z°a8i•D™2EeØSZèNUCH§mW[áA„‡[ÃMrzqbÅ‹7vürdÉ“)W¶|óá½ …e8ÃN " “ÀbuX­7 Ü0üÀHëa\XaÄ𔡠·ÒóŠ!!6I 39+PB4efH-”F€þBO™~Øö”Zbf˜à:ÁAc ÃÈ|sº§5ic̈ˆŠ€lc² ‹€Í XÆ€"ƒ6PÀ™f`ŒtÞftŠ 4P lè©&L6`è>êB@b1a¥è1C€jƨf<œÙæ‚1èÉ jp&¬¹ †ø øf‰™qˆç”\’É&|Ê(¥œò)*Di..Yô0k˜B®ar ,M N€9P[Å.v`ˆŠDÙl²ã*àÂB˜” k–¨ŽŸ¡è'm¨ä†ðLXo$<ÐÈ„}ƒ"X à›}îÉE nPEþ¥ï› `aF2°¦@¸áUgmÊŒ~öAflbÙjL`$ˆQgäË$ùiñÅqfXÐâ¹ F`†(Þ±ªy5ˆ}‡*Õ]—ÝvÝ}×]"8‘mZÈ!"P Aˆ³@yã †8a€>ÛLÒæ˜ƒËIF©eNÂ&Ùa3B)dÉ`pÃÏ&©@›1ð gi2Àš–Hg‰R¶š ÒŸXC°@SlœŠ%3T€bF.H°Ç1öég‰j ¸%¨„šL$u˜bÙn¦øápƸ`mÙà6¥&]þ !Z„LJqB›ö1¤aÁc€Ù'‚ƆY/Hœt"ˆe Tä‚~"Û™áÕl›Î+¤ãÇÁS3Œ#ÄtÆFßœõÖ[ßõ†I‚ŠÑ†Ñ"ˆQ6 „”݆)Dz8ë`Èד7|ßá”D ®­ÛžŠ‚“Ð]g«EÀv Va…¬‰e„F¿ apVT!–jlê›¶á|'Tð|4#PûT2Œ ÞƒOö­Vcp À¡ƒPÑÈFù1@ö=ˆìG¡1Œf@ÙøÞ;èñ¿ª$Cø±XþD#5Œ3n@p@ÐX‚ºÞ08Á=è!`MaÄ)¸ºÅlÃX8…Á“„98‘!5`˜êdQ‡!~Œ•ÙLLjÐÈ&ž–jCp‰m*NðÞ0 X`H!®ð/V‰Q#¼Ìà¡ù ‘Qª5(³M\Ìb¼a#öRKnÃtÛ`„Ÿf±|‰"€‹&;Æ€á6#åax‚U¼¢¨#Ä,÷ÂM|¡”zø ’º¦‚ ›ÑÂ,IÉMîñ˜›,&‘ »(X/‘ÑtŒ&¥7 6ð 8Ã*CDC„àyDdEÂ9&C„I »0–r€THþÏ^ü*¥ Æë8¡žùtÎðBð àÂ@`FÈBG`À0F¡9À QаP‚\áZ!JÀ…¸è r0Ë(Œ€Š¼â ž`ÀbéS¼!“`C äÀ`Á‹%8‚'@ˆ9„AWp‚ EÓMT›9‚zYô`¡À¸À† tA Â*䀅/ì€ A@>¯ç¹àL²!¢¸Â*‚ •6ĨECÞ¦v‰¬ â 1‡nN4X"¨€E²Ñ’‡Ulë¨P‚t‚¨Ã+¦ê†Tâ(D v!P´N¨ØAb J=¨éþw-<1=´a£0ĺš â @mC˜9PA†(!ä0W7´1,l8 x ‰¡þQp ^`‡ŽÕA·©+¾ ["¼" l¨@äà #œÂ«xƒ¨0ÞBb9Õ\¬”vÐ -4„ A8žk*`„†Á·ÿo¾´ßa”À÷Íb Æ:ßÅΠhé\á'mƒ ¤ÈÁ^ÐF‘naŠÀ@%°CHP¡sZ*ˆ ‰Bœ¢ŒhÃñ^†(À Œ€EÁ4È÷);hAH‘„´@µ¸‚qŽÌŠž˜&‘ŠÙJþÎcˆ 1BG8+re,ˆ €IÑ‚aá s`«…³ 7pÂvD°ÃPK…Bz¯¨À.dÓì¢!£Àx£‡È¡!¯`€2Æj‚’|æó6ˆÐ<ÊÕ—1£'`°ƒ§” mäA*4›ƒ·à« EU5¡‰IÔ⯠ °0 &â\@3)f0ŠSŽâœ“´‘\/z9OFE-ì¼ -€bÃÐà PgäN™„ÐiÕ´Š–ÃeÎA4±‹Zˆb¼\¨x€G×@Tpƒ&Nñf “•– qCPCvsÐ3CxP(8oþxjr°‹ p<Gh'æÒIH7Õ)oL!z K•¿ü2®vvx`„9´à (Þ+‚pë↘ê)Z Ù¸!\˜ì0DA 9AØ0DÍçÇZÔSnJ*HÁOÁ ¸Â¶1ÝapÁÎv¨@ôàèZÈ9{¼ÂiEÙY°¢§¨À抰¢s„j. ¥7¯¨x4SˆÝN‰npÃf’°ÖŽq!0Ø )0г|i®Ã˜DœaPÁaÀQ‹@󀌇ùì!C=œ" §ýîc±Ipl“(D¨ð{"a“<þ0ÜÀƒNì`u¼‰þ‚(¨Ð17p¥sc$Äïƒ|7 yøÔ·Ø Ê9q£NŽïä§¿!š¬…,šBáŸ×çþ÷Ó=‰Yj¢¹.¦ö4¡H!‰(£üx+ râ‚ ¤G ¤‡ŽÚ@zFìÝäÀÞö¤îjZà é)&FöxÏ)ÃHÆN[°1jàñ¨¤x@éãâï—ŽéÎV¡¤GzÀ°ÄÞ Š#·Þ@6âlç vál'¸à 6ƒÎ¯0J! »Ð ×e„ƒ õˆ0„ŒFŒÓ‚ Â) ê*œÚdƒ<Á"¦Nr ¿Ð¡þxŽ ÿð ¡ IÂãh Qà h@$xÃMx@€`È9Ì8/óúe¢àB Îâ µ Aò6ƒšÑÛe®à”íÿ°ú!²À=ƒ ¤ñƒq÷xà1±öbÌô ¡-D*ž©«ŒºìèÅSÀ!zÈ Àà 2 Âf™ÁâYJè0œ€@Ñ èANen@¥p„V†VÀc$ȱŸÈ fȇúi¶aê@’'  lg#R"'J2  –@ÆÀrh œ`èABþØ1°ú! EVàTÞúa Ða t²F ˜!" @†ÁfœÉà?)‘!!  ⪎ ’"¯ò°8a¬¶¡×Dp¶! N1I<é2˜©)4ðD-uï2&AlˆÈA°Ì œa `At`{²A )B „èA“ö ø6@" äQ†²2çqCL@²hF&à˜A†AÐ @$È VbÁë‰fêöÌ+o3šnLlçðÀŽ Œ &ƒd:3® < ÙlcÔ É0cþ OÁô¾È Á(öàœ¡"ÀNf©¡0ÃC%ß°Á ð &[Ân†¤æú öÃ#øa `a0a6!à˜ .A ¼ŽÁ2ú0fÙ©!d@†¡®áÒ Š¡šAî€Ò –a쨛b& þ¡â´aÊà®A  Ä Á € º aÒZ ”á†!6: A(apÁˆ¡¦¡  ໑ † ”! $>ÁîÀªó@¼á¸Ùú*1!¸¹!R@`Ÿb¹1ÁÀ ­cÂ: Î ­ó ä¡!ü@~«CªÀŠÁ@ ‚¡ ap!X ü  «¹[à!­™ –{<àFÚ¬  ’0Ô@ î!£ìa¼bÀ òàt!»‡áî€ tÁŠa>a pA‚Ê@ \þÁ”‡A”»!À @ f¼˜ (!¦;Àà. 6ã (€ŒÅ > <@ òàX€ áìa¡ ¦A‚¡6A!’! 0|°  ‹AØÁ)²ª;ÀƒA ¦A³Cá<›1¶áîA¼˜1á2ü04½œ›µ™Á ¤ Œ˜á >`>@ ¦À»â¼a/0Û!¤ìA”áÐXä!¨¡à˜‰\³ƒFZ£¡îà†Àüº€¼Å`®!ä¶Áà¡Áì̧¦›¡€†Á .A d ¼ÁÞþ‘{tÁŽa \¡|Æ)Á˜`†@À•!Ô@ 6†¡CA@ !Šáº (€×‡áp˜‡²Åý¼š²ù!¨A>!ÂcÝ  ”`§W:«‹ý¬@ À ýà‚á³o¡4{Z§é¸!ò < Ú‚ tA Ä@[a‰¶{¦×˜ŒÙž¥™¹)¢:§‡¡ÍY@ º^ë»z§¥¹¿šÅ¡ñb›ÉJ ¡Þó`á &À0á*;Zó» À ˜@ǃA ˜˜Y  †@ö?| ΠŠa º p€€Úþnáç?›z>àA pAL9¼äZ;6ÁÄà(áŠÛì!t ¤`ŒahÝ)¶¡&˜@ÖaáA ’á î ΀À ” ÀÜ2ÌÑ¡{É0•I$fذP8†0™0$Ô&\CtåI&ÃÖ¶Vip€¤ ^¶tMöƒÒº`]ä-X簦͛8sêÜɳ§ÏŸ@ƒ J´¨Q b¼QÂeo± S¤@½dï%Wކu¡ÄdØ eH6”’æÓ&y71!©r&ë¡fך)º¬AšFit)«‚6¥4Í€Ô ÇJn:ºÈ¢ÙWJÓpY Öþè@š*eà5J„$Ø0ÍœA$³×àÞ'‡›î]]Ó¡!˜XÈ“÷cÛ°3¸6²iÓ§.Ãt•‡hʧK—X´¶ÎÛƒ@4t¨F™7ejÀàðæíǰ㠖arxF™¼2y.ÉÃܦe›À˜?äíÒñCÁ®}ðæaÛ´fÞ(çU3·àä0Þl‚Ã%y¨‹ÊàÏ% °pÉk8, 5åQÆ ÐäP(ŸÌOC‡| ÏjœÅ‚-Ìex‰Œ¸RŸ0‚qIxJœ1k@)äDi¤O®4"H€•PÉsI+Ÿ¤Ñ”x6 &‰ˆÆ4Ç £Ä27m£‹ ”$‚þI(Á Á&ŽäQ0] ‚ —— ã„=ÀLDe4.ðà$F#ãyà¡„òƒbŒ=0!ƒ2``ª)±)2Åt‡ rä©6M±RM£êÊ?nƒÉNÔ$ÆB…’Ǫ5ÕêЬ¡ü$ÆtÃ,#Øx~Ü‘ÈrÌ)“?91…m¾–™®5•aE°6ÍÚ-¶6m«C²ò:ŒŒ ªîºì¶ë®P?à2MNÐJq 0ÛxP²\h…XºÜ¡¥¡~t‘̇ 3D)üZ…©äƒÖ0H‰Ä!`4cE ã‚7‘µ §9$…"ã A‰"Ê(³Œ_0Ëþü"6EúîÎ<Y†+º8ÆTŒ+@«›±=7íôÓP÷üC#ºƒË ¨Á¶̦Ë%Ê82Å:w“G(~dØ…U\"7 áM·P4Ì-”sˆ¶T±ÌJhãðASØóƒv¡vQ0Y„‘.­$£ˆ¡´R˜i.Ò µôR°,4õ騧®úꬷîúMRÜÁŒXñÁüýp‰78 2 1‰ðO ‰ÌL ),x‰7ù1›<Ä 0(£‹…8p¨ÄÀòXAL÷‡ì›_2ÈcîCHyâ0)®Ø¢<øáÄ-ÊKáDòÈI1ŒŽ—,,<þxP0¡fÅ#Ä b¨b<“ï|R?à¤í 7ÈÁ)ΪȈ°µ³ei9—¹Ä•žT« IbB"p‘‡œx«&˜`Z¸Æå8áêV-<†7<8¢œ´âÐòJ˜|Â¥kà °¬Ÿ´â¼ ·æÞ¤Þ(ÐþÊÐBÅñŒhL£êÄ WÀȃJ€‡2Üȳupƒ~HZ+Ša t¡TËXŽ-€a& â8†bË `B1@eTay8Æ º`JC %<Ê®üŠpˆV„I>ZÀL@Ä2€c‹OØ#:þ†‚1 ƒbT£0‡IÌbÉ[4¦‘Ba Àc ] À&Žc|bC„ î€ £2”táD$Ñ ÐÅ1ì-²h¥jè›࡟f4£tEÂä]t/1ÃÆÄFy#?8C2®4 (¢88®CTḇÀ¥ÌŽzô£?Ƀ6 ctÈ!àæ1è&@ F1‚„ ¼¤9ÉÃ!FD\c<:E¤†4p U„"`$bÛHÖQ†`YÒ!Þ Æ0² ‚i(H%6Q1r¦™Â…†Q†Ô$B Øþ0‘†u¡À0F"â¼{§€ ¬G1ñ 2‚áw0e(–Q¨ž„Bºç0Z8bÌRäA1UU°¡.>‘b\Ë|½FĆ¡†°:döPÄ>e$&Y à•;·úƒPàB °G+@pIJ(E ÁBoR•…ØH)_ï´axÀ?rĦñ‚äŠ ÆùKÞò².g^‰H1¬ë)†Ùø°Vƒ,ÅÄz-ðWL^ão èu1„VèRéõÃ}gºHû¨Ÿ},Ã’ô1%²„Qpˆ€Áe°ÅÊÐ^ê0­ø þn1ˆi$‚ Ç8†-@p c$¦ (ƒFu‰taÄÀÅ‚µCÔ¸†Ž ì1ˆÍÊ”ø„(1bØC wH ¦V1X@$ÆEu•0 cÄ~8Ä< „mÐâÝ_6q«õLмxÎ3ê,r‡KºS´<° >« †-~Ð ±8ÈÌÅp؈i,£!rkÀuÆD‰¶ñtjhQB§/Q¶!¤ÁM‘î¯äá mÁC4‚Æ1pÑyï/ƒÇ&Æ£†k¨z˜J€Ö >¡Œ0ÁHƒ1D#XZÆ6R@,6™<\qm& !Ä †+Äþ=)À£j¸…+ŠæV肟آ’#3׎ž\‘k Í&R`=üàMSqÎ`'M¡ùZ¤êª¹nc`wË’öh €s9C@‚1QW°)¿ …„3£JÀ…+pRŒk žiEÃrŒ*xÑ”¸Å%ÄËd*™;ÙÆ¿ ¹£G+e #”qS‡8å–åÖ.A‰,"üë`_×>0…`Tr~PÂ6 GÃJqÕR(ºä°;œA'y#Œ1¸é «%9'Œqhc­hÄ%pÑ_YO ‰éÂÎe-\‡  ŠøD ó€þ¹¯‹¡ úºÄv[€~µaO½ê‰Äè2lÂ`˜ 61\·ZmOóš•€‰[Èãƒðƒ d Sv¿Ö¯‡h´À@ eb†ƒÑÀ/2[Ø#y°›‘½ ÖÄMa‚ËÓ<ìl#?„T"®qg+{õð¿ü»]ß(j°ÂàqŒ2ûËq ×¶nƒpmÛ6­° 8`^× ®  /ÖB€Pƒ Üf Šf€®€lRPX¸ &&ð€Àû·mj ÛÀo+X,ʰEL@ ï7¶ò#¡ÐŽpb7!¿fƒ@„§"—€CPpJ׃¹ât¡3þ5‘„B± RPjp<ø‡Ž˜öà ¼âOõQP·L˜®°b°X' —pg9QÀHç*¢'„x˜‡5±2…Zd`Rp#(bp ·E­0ˆjt I”ˆ 1ŠÀn•Yi2Ñ +ÑO¼â ˆ°nÈe  ?5áCR²Z·*V0iŽˆÁBXÞÑ!^4¥‡¸˜‹ºÈ:y{$’ ò` Êpmsƒ62ð ƒ@w xÁv › CF Þp(¢dõ Å8€3BcìAšg]0|£A ý_Öá ¶£V ­` @(ñjàþ‡»˜ª×,Ee@oIäˆ`|;a Ä Lp‡9!KúøeðdÀÑ U Œ?Ð{ð `0~˜P%b@\đ֑G"x~×áƒPŠP,–ep¶@@°c|Õ oô` Rà~p`С`6g`/· À‘j`¶°N"—P] •'`eK‰5"@9!0Cãa ððƒ=Ĭájpw91®ÐY•Ê º¡ÐZ” ¯rEs Þ€ €±?i7ø2Š 4Ä€6Õ wà€U°MÇÜ-µáÅ s#ÅCa8þ ¸b€ ³8Q÷ bVÄ W(•°)LbðRà0 И€0ºöP[áJÀŸ`íF ÐjÙ!ðL$¦@ ÉÀfðÐÆRp ,À8l°m&ƒ,ПPu‘Ð÷XUð5ežÛ¸ ö  `A~° °(“å ˜èAbp Ð'Úv O¡Sð Ã"ç,Ž` i° ¶Ð¡© œ#ëp æ'HÀÀð˜›À1÷6ö"´ ‡ fe0 ÀÐ ]°” j0]€ € #”p¶Ðd¶`Oy†±y¤htqþwð Ç3 `8å,XÒöb  ƒ` 8Ѓ†a[bÂQV@ pÍÞ ô­0 §vepû”}Òƒ›! V¿5µ \R`Ùc Tùbi =2À•ÔšаÞÀ‚?pŠàÆŠð£b€*É1ŠÐõ1&Ž”V¸` ÐmJ U0` ÜI&5¡ á4 Å0 ÷p›ö ÞÐdbŸ‘؉PÞpºP ÷ˆ¤ÐjLRpypõ2“%1hIã1œ#ë0 ]1p8‘PV¤ #1Ë€@ÈD¤ÞþòÕJ5‹9s U)Þ ¿b V£~i7 PôJ€jÔÞ§‰æ‡ÛÐÓ±q~…Eq €YFyÀ,˜Ð /$±æ¯­*KDc7ÅÃ9Ç/ËÐW"WŽ€qdƒ9áÇ`&pN  öÐY‚÷„¯‡w˜ ØXƒì³p ¡°w®@°ÍJ^eLÀK[ ·(•~y+›¶«'HÀ‰,ÜÑw—p‘i ŽÀjÐÚèˆp‘¦U`VpëÐ Æ èªa1Neàb9g¸Ð eÀÓÀ)Íg‰—ÐPi+2þ· ÓÛÐU Ô®ðP t ¿jT´ ´)&U€¯j;»´‹g®€®€­@  ëP ë0eP-zÅp]`¼Å@8 @4›; Sp ´ yÁˆ zAÓ g`¼CP ®š^ Ј€2Z&º RÀ\Bn g&lËPÀá²DC\BŠ%Á0†Ä ``@q ¸°;‡)%ph©Š`· Ñp ]° —ðÜC6ÁXq8DÜÃh4£„@Db³Áþ”ÀZÌL -~p e°¶  `€ y`8¨ —àŽâgƒ° ñC ep À“ò  ƶ­2°EÝû}ŠyÐÄ]d’İ›LÀÀ>üÇ´…6±…Q'Ȭ¥ 8`˜Ö'w@ ’r Ø4 ë‡ UÐòÅÀ@;ê›2PÇÓà ŠÅ0J€/Ф{£atÐb ðÕµ 0[?p£ù(䋊–˜wº@VP¶€\̼ØeD ÊÐ «å®2<áŸ0ÍŸ@–îâR0‡Õ…1ÜßåÓ`*¡ ×@Ç ®‡`‡PˆŽ²Ÿö`þHÐk#Hpκv¨L@òÀSÁ•Í@ )@R€ZƒÐ5´R`ÁTËÀËðsÓŒR³€ÈÆ\Ѩ²†;ø¼&—`Ãò+ƒ%1g°D1,¢7 àg‡)b°ƒÒã=6ñÑ#2,ÓAÓÃ)'–ƒ9 ½.wÒÈ´E=Ll™Ÿ%&H`?âªuHЖ¨ÂLp‰` y€ 8S pŒ2ðÁ73¡UΊj]àÍP‘=ô ìæTÅPp­å þr'jOFlÑ|MSVLêr`(`Èj]ÒYWêRBŠ`Њò`«7 <×Ý#–ÓÐÀþpÌta2‹œSð½QÀ°É!è¹ È±e ›°3·òP‚d*k RLò ~‰iP °76‚‘ÅpL`I_ Z()ùl‰08Rð·P~XÛ ·03~3Ïô – ¬ð#ºp ‰°Ò‡j­_›×1 Ú×î½.Ÿ0 Ä€T¥<XCòÐrÙÞ*®-y,àRaŠÔã¶08ÀwÑ› ‹D ‡u` ÌÄÅð $™0p ‡Ã Å0ŒÔ¦Öq.ñl§bÁV"hL˜P CM ÂŽË  ;ÊNôº+a5Þ0Û ‘þê‘ÆŽp p /ʱ ð(ì½ VAýtÛ  /êe "¾á]"ÌÅ0¥?NÁ°×ï=æF/ew­—Vd—Øq.Óº’’IÀy`/'ÓXŸp ð—ˆ@ @ p»*ʽ)ÍpP+Û`!‘Þa5#‚Ä€å£L›B»’3(ô+¼¢*-4”˜Lp ˜ž*ªédÞê§bæÇq á›á7+wt‡7Ä`Lxàv®öB•VéðXƒ0˜i°"b° 0ƒà¿ÃÀ¡:~Vp ư ÆÃë8°â) ü‹S€mÁ©0 ÃÀ © Z u©PA< 9 ;óŽß:L nyÍAþ ~&ÊlºpÙ{R æ©“øÃÐ =@>1 ž  Ã0 ¦\„p .Ã` @Ÿûú˜ˆ6è÷vàD€9 Z` lP…° IP5€ûZ`BøÃ@%ðú8A¦P«Ðø„ v€³Ï Ц° 5u` ÛÀ «° |¿9P¦Äð/ÿD9Pº¿ÿŽÅ7 ¿ÿÁ㈞(Æ™òDh”¡sv™š E C„ìÄ`¡S\ ~4XCN‹9 †Ù T6¤äpPF…9^ˆ5 K"zÚ\iÃf˜žW<±¡Ò£DAM>…UþêTªU­^ÅšUëV®]½~ö£ŸOÍ\9›VíZ¶j·é Qç㎢†åhƒÁ)M„D½B Ð°¬4#TÂã0,=zѲcU‹\0 £G-C…f ²#D B¦ôìjÁ Œ9!j½b4ì”ëWD†jaèʶ¶½}ÿ\øpâOC%ò&¦øræÍ?j9Â… ïWzì1ªÅ)6IBèp}ƛÄ:Ô’C='FZ´)A$ï6Y¾„(¤ ô¤5 ê© –@„˜¡< Á®N¾h#A¿°àË9 '¤°B ã.ä°C­ˆh”:i£ƒ^9†íþ †þ˜aSX©"¨8‹(bûˆ‘#Ú¨aŽ#v8”@Bx¡jÁ"¦N“ $‰U¢(á *Xe˜,·´(;ó°L3ÏD³ÂP’ñæPÒ„³L7x‚Þ†iá S’¨a•à¢YV¹‚C… ÂPFѤ)J%fàD ÕDˆV‘å ½°Ã S¸ƒNVáâ”b«!Õˆè„Ç8g¥µV[­rÄ\™âV_—#BޤÚ溭¹Ó m’EŒØBî$„Lƒ¢ýµZk¯=\$À¶Û¶¶ÙÁ[qÇ%·\°ÄÀá’7Íe·]wß…7Þ¦º€'Ð’·ÝþmRáAª:J’+6Jˆ†@ŒÍ7a…žjŠCtÁ„ao¥e£‡I¤ê€F¹¢BBA%Y‰eVb“OF9eçv¨%ˆŽ¸bM¾`€ÀZjø³†(hA;ƒ:14fF^ ºÎ„€“QåºQÚ¨“ Äj`à 7r` Bë8åiU;l±ÇÆŠ‘0vz7€#:‘C“ô` ‚À‚7"3B–ä`$ˆx@H‹*@2S`l˜Qv "Ofä…¿Oá!ˆ7°(AˆOé¤d²G'½t“gªãÎB°èR¶0¸¸‚ôfvN2šÄ!ˆðdŽ jÐdŽWnãþ¾6< ×”ÆGñ„ˆ:Âè$€9Bž# ;H‰b) ¡?Ó¿?|w‰ĽØL9âNQìЃSöb„‹»5™„”+Ñâ ,XÑâ;‚è”7˜Qô€u EІ˜‚…°(6‰/€â_5¸ÁZmƒ \`À° …—]Ê¢ø‚!¸Od,\à &ñ!¤pªP rÐŦ À+ ôÊ0â !E `P¸´À …@*f :VÑŠW¤P~^Á…dÑi¢ Ä$^#ŠÕ µÐþ¾€ÆÛ,î ¬A F4ŒUı<`Ã+¾p…‹ C µEx(ÇU¸Q "¹HFþ†Bid$%9Iya’—Äd&5¹INvÒŠ;libjibx-java-1.1.6a/docs/tutorial/images/collection-binding1.gif0000644000175000017500000030226310541745160024466 0ustar moellermoellerGIF89aRÀçü     " ÿ#$"ÿ%'$'(&*,),-+-/,02/%ÿ231ÿ352685#ÿ8979;8<>;>@=/$ÿ"-ÿ@B?ACADECEGDFHE<-þHJG14ÿ%;ÿJKIJLJ55ÿLNK€NOM… OQN>;ÿ4AÿQSP‰STRUVTVXUWYVHBÿ@Hÿ ŽZ\Y]^\^`]PIÿIOÿ`b_ac`%cdbYPÿegdQUÿ'“&TVÿhigjli-—*`VþXZÿlnk[]ÿnpm/›6g]þ_aÿrtqbcÿtvs?ž:vxufhÿxzwijÿA£E{|z}|moÿoqÿ~O¦Iƒ€yrþsvÿO©R„…ƒvxÿ†ˆ…ˆŠ‡~yþ\¬Vz~ÿŠŒ‰Z®^Œ„€ÿ‘Ž…ÿa²a‘““•’‰‡ÿj´d…Œÿ‹‰ÿ–˜•i·m™š—Žÿ›šu¹q‘ÿž ˜‘þ“–ÿv¾z¡£ •˜ÿ€¿}¤¦£™ÿ™žÿŸ›ÿ§©¥Ä‡©«¨¡ ÿ¬®«££ÿ‹ÆŠ®°­ª¤ý¦¨ÿ°²¯‘ÉŽ¨ªÿ²´±´¶³¯¬þ–Ì—¶¸µ±®ÿ¬±ÿ·º¶¹¼¸³´ÿ»½º¢Ð¶¶ÿ½¿¼¡Ò¥¿Á¾¼¸þÁÿ¹½ÿÂÄÁ¬Õ©ÄÆÃÀ¿þ­Ù³ÇÉÆÃÂÿÉËÈÊÌÉÉÄýÌÎ˸ܷÅÈÿÇÊÿÎÐÌÏÑÎÍÌþÂß»ÑÔÐÓÕÒÐÏÿÂâÄÕ×ÔÕÐýÖØÕËãÇÒÕÿØÚÖÙÛØÔ×ÿÎæÊÛÝÚÚÙÿÜßÛÎéÓÞàÝÝÜÿàâßâÞý×ëÖâäáßâÿäæãåçäáåÿÜïÛçéæèêçççþéëèâñäêéÿëíêíïëïëýæôçîðíìðÿðòïñóðîòÿðöëòôñòóýóõòïùôô÷óõöÿöøôñûõ÷ùöúøüøú÷ùûøüúþúüùûýúþüÿùÿÿüÿûþÿü!þCreated with The GIMP,RÀþÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cÊœI³¦Í„ó²Íc¨ŒÖ?mçJª5)W7}ßi«W\·}7£JJµªÕ«%ç1áàÁƒŠIöb©xµ"öl¤¡hŠC1è@K˜o‰*|t3Èo” _çþûÇ/q6+^̸±ãÇ,ùÙ¡¢%R•{Ô-¡@~inØãäËsB~‘¤Y”ÆÂ_ükJž/Nö ò“6©›3 øñóÕÉžéãÈ“+_μ¹óçУKŸN½ºõëØ³kß®Ÿ½RøþÉ7 R·HöL‘ê¤%2í&-I³ä¿NÂø2Å ËhóeD² AüL"A1üÈÓ #´óO0l@ÁÆ5ö¤@“ÄBŠ=ÇDrËRÐ’O7–”³HKüÑŠ/©ÜóO0k@AG6ÿ(É-e@ >)äDiä‘H&©ä’L6éä“PF)å”TViå•Xf©å–Xòó=#HÁO>‹H Œ/ãƒ#,aÁÿØGEÁ öŒð?640¼ð=_4°Ä$?“H Œpü€2€0Òlà/Ü LøÆ6ØóñB¬²4i  Âþ¤áƒ=Çl B#¼à "lP„ øÂå°Äkì±È&«ì²Ì6묑öØ3 4@åÐ"A9>¨Ð<™ Ð3XÂö ðdz4×lóÍ8ç¬óÎ<ÄÏ?üØ3 «¤òø"/7a?« PŒ%”³?rÜ`ÏðcÙÒÀ1„XPÎ?ü¤QDüL"0üüÃ3L2Â7ÜðÂþ™L"/üüñ‚=„XPŽ>üHð‡)8³Œˆ—†ÎŒ?ÿÜsËXPŽ=üH ?=—nú騧®úêZêcÏVÈ#ÜÐ"A9>Q?± Ìhó?iÜ`ÏðóÂøðc åб8ÿð“†ñ#O$#?¯@ÊKLbþ#åd/üÐñ‚=XÍ?ù@Æ*(SŽüÃO6(Çä y,Á4þÁ ÈaIŒ 'HÁ Zð‚Ì 7ÈÁzðƒ ¡'ÈðÃ#?þÁ¼À(Æ Š`~ÄÂàœñ~¤ÁþöÁøaƒ%䃦h€0FeüÃ_(Bø1 ƒÿ°‡ TP|Aü‡=ò‘ ø‚x=þ°jGHÅœq üA8i¸A7n°~üÃ#øÂ",@ ~äràÇÉÈF:ò‘Œ¤$'IÉJBðöÁ "ñˆ/4à´°À2|P„wÈ#ð…; °„WüÁ7°ÇþÀ,üEŽ1ŽŒ KP€ø!~ÈcÃ$Ò`ø‚‘hZa +”#ð?è`ƒrüÁÝøG9$†UX åPÁZQŒ4øÀ“€"ŽAøþ Æ?ø!9H🠨@JЂô M¨BÊІ:ô¡ åÇ?øaX`°'Êq ”C _°?|1‚r¤ƒµÁ¾`"D‚KH>ø‹”ÃÇX äP§~ „¦€6 ‚4”Ãü°0º¸c/8?!{LÂÝø?^ð_Ø ö…6†?|!ZiØÀ6‰rpÂÝÎ ÁƒÚõ®xÍ«^÷Ê×¾úõ¯€ ¬`{$HV8ù؇pþÁ|àCÂq‡3òqØÊîc†µ‡ Ò0áÈðù¸ì?„#gtc•MmÈò©|Ø£ÂÉþÇ>„crÈã°ÿ€T^wËÛÞúö·À ®p‡KÜâ×·ü¤Â! G ü؇pÒ" G öÀB– ‚ tƒ„”@ø‘$~ D8ùà‡@ø!}àCû?ŽKßúÚ÷¾øÍ¯~÷+KÁBÂŒDŽ/|AÿøÃø P~DЭøÂä ~Hyå‡@øÁà{øÃ ±ˆ…k_àAâG¾P$~äC è?Òð…} i騎w¬¤ÊòøÇ@²‡Lä"ùÈHN²’—Ìä&ÿEà&‡I죋XD'þ Bô‚ “ÀÇ>H‘†4@‹@Dþ&ø1ó™b ¹Ø-Ê€‡4Äâ “˜‡“™,œ=ûùÏ€´ MèBºÉÝHÃÑ ¨ ˜D7"Q~d#°|ñ¤A Æ$F`~Øc ðTЊüÁ/(G0|pƒ[àãиε®wÍë^ûú×À6?¤ñ‚ø‚ö'ìÑ€/ȃ*?–€Xø¦È›<¾Ð€rðÃø?Òy¤Aœ@À2l°„xäÃhÀ‚MïzÛûÞøÎ·¾Í|´ÂK8†=‹|4 ÂQÁø¡ 8£0… nÀ/4 ü¸þÁ4X€r@9þð¢ZðËPAºÁ$¹üå0¹ÌgNóšÛüæ8ϹÎwÎóžûüç@ºÐ‡s~È£P)ð…4X`ÝXÄ °ˆ?àˆ@ÀÒ€€/X«Xİa,´(@±%ÐöHCZa~ýîxÏ»Þ÷Î÷¾ûýà]©c@# iXÂ*ä! Ä#þiøC$Ò`‰rÀ! “HÃ*Ÿ†Xü! ¤@ü,†H@¾p?ÏúÖ»þõ°½ìgO{§ö••?ä!œ}ðC‘¤äÁyð#dëøCÒP„؃µ¾ô§Oýê[ÿúÕŽÏùþQSü¡åØöÇOþò›ÿüèO¿ÐåñŠXìãüð;-hÑ P¨ƒHøX-n~PŒ"H± “ DR ­0H2‘  P7W©à ʰ ó0ÝÝpÿ@ ¦$øè ú$ãÀ ·$œ œ0D ¹ £ÐêWƒ6xƒÒ·7Çùð6ÀÇ>`£ãðç í ü`#P.× ÁpBÂöp0ü K€ÐBÂi`¾€Çp$ü`i0 6ÇÞ°‘@*`u2>`´À>0ûp$ü u2KpÔ0þü@ PÁtàð ü $üð_ `÷€ƒœØ‰žØw࣠ ´à ±êp œ0 Ý  ´ £ øÐ ½  £à ã ¾p ÿ0¹ Á0 Ýð÷ £` ­AÒ ´ © øp ©À ¯€Ú ¹P ´à õ@  Cˆç /ÀÝp @½ðÝ0ËðÁ ± ±ÿ    ïp _ œ ø¯À ¤`r Ê0 ÞÀòà ðQ  @ óÀ‘°Ë ö$ÁÐ œP õÀ_ÐàðÅ0 œ ‘ À Á€þà0 œ ÷À‘åà« E`_à °r ´ ¾ÀøÐ Ð Êp ÿ°¾Ð ¾° _` à _ Ð` œð ü`> ¦ðü “€±ðøp  ûÀ_ð´`×ð×À‘x™—z¹—|Ù—~ù—€˜‚9˜„Y˜†y˜ˆ™˜Š¹˜Œ)˜ñ0 7``#°*°±À 6ð°i€E°#° K EE i°EÀöpððüð#Pö0üà °# ­p(KÐÐ àKði K°¶p llà àPöà ü` *þ07ðÝà i°KÀ_0`° ©0K i@€>öEð i€>> üà ðüÐ #°# ü`Ý Êp!ùp#ðKàöÀ_ÐàÀ*°>`Áà 6àKàÝP6 /Ð ´ på`ÎàÐ °åp i€ü`/ð`#0K0P±€¾àöP‡Ò¦`p ÿÀ€±Àt0K°¦ÀÝPö° öð/ ï¡p§r:§tZ§vz§xš§zº§|Ú§~ú§€¨‚:¨þ„Z¨sÊÒ°/° ò0 #àR ¦PœÀ /0™¾à ` iÐå°àö€ûÀK°à°#À*°¾€Å°ü0ü KP@¾0 Ðt ð/à_€_0 #°Ò`` üð"  ´Àù`î0>Àip/#à 7°«ð `ÝÀñPðPr€î Ð ü ð〦ððÂñ2ü @Ñ’öÀ_ÐàÀ ` iУ °¦À å`/ “`­à¬_Ð üð†U°þÿ 6°ÿ`>ð #à P¦`#À±€¾°ü  ð ð6 öðÐò0  Ë K` /`Âñ’¾ð7  †:¶d[¶f{¶h›¶j»¶lËã#0 ö0 E°ð¦ðð6°œò`°i ü0 ° ö0/ K òð#`K0ö°Êðݰi°*ð@å°ip(E€*°EðåðŽç ü¡ü à Âñà0>Àwð*°#Ð #‡RùpÐ üi°i°EþÀ¦ÎÀ´P ‡Rü@§ü` ` ùí°üð ö06ð ò°/ >0–p å° œ× ü0ü°ÞЋÀÿÀ6°ù`> Ð #à °‡’ü  ü`E _Ð`> iãÀ“€±à 0KPiÀÊö` *Pãp§B<ÄD\ÄF|ÄHœÄJ¼ÄLÜÄNüÄPÅBÌò` >PiàE@*0 K ¾` à €¾ _öà ¾T ö°E`îð¦`ý0þû`ðå°E _ ¯0ip(_7P¾ Ò0 ð‘° Êò €­îà 0å``6°#° K ±p ¤PР° Ý0>@ PiÐÂð`å0 ¾P@ Å ç@§ûP`¾ ©`ΰ 0‹0 Ýàåðà Kà ¦P™œÉã§ùà ä`Ëð  åpr° °å /à ° å À àP€ð6 6pöP€‹à `ÂP ±ð¡öð/0þ ùÀwÚÒ.ýÒ0Ó2=Ó4]Ó6}Ó8Ó:½Ó<íÒÂaðˆ KÕ07ð*0* ò07° ¯`# 6ð> ¤´ð ðü ü°¦€0Kð#°>°ððið¤à# PÂ!§ü`E0_Ð  `*0/àð¦PPi0*°ø*ò #PKp0*p©°ið*ðKPK0*°àÀrÊÿÀ¾P#ðrÐ 6ð*`P*ð7å°xñåð/ iþ ëËòÀqjK /0 Â`xA‘P‘°Õ©P>0/Áà*`¹`_0KàæKK° úP*0/Õà#ði`ÁûÐ P=ýàá>á^á~á7Í!³áòÀ÷ðå°á™`üKд`‡ÕâüP°¤`p¡†%ü2åÀá<ÎòÐ öÀvºüöÀÿ`X<.Â!Ñ"òö òàžî`"ÂaûÀå`Âa§Â1ö`X^ÎÿÀã`Â!ÑÂÁtêâ2ù€þú€öðüàöàâòàžÑÂÿ°áù€ùÀå`ü°ü òü€áš¾éœÞéžþé þÒÂ!§ü§üðiðÂat´ÀÿÀÿ !Á–°E°ö0§ü0§ü0üðÂa§†µÁÊqÊú°!0ÍÿÀ.ÍÿÐâw*Áù u*Át*Áÿ°ú ¡ü¡üqÊqÊÊ¡žïú¾ïüÞïþŽÓü òü Âq§2¡éâÒÂ!§ü§ÂA§üÐÓü0Â1ÂáüðÒÂñï ò"?ò$ïþïü ü ü¡Üð Ÿ  A .ß Ê.mªÀ 3• °pÿ@ ª §áàò°¡ìð °§Ü ì ÑÀ6mª` 2M°` Í0 ÷PòýPò`öb?öd?§ø`§Üð M@ ÀÐÒõ@ á0ĺ Óúà^0 ~`ÿp^€qjŸ0^¡ð@IÀpª SI 7m d  1½ì0³ð dÀû@òüPö¤_ú¦úœn ‡`ì  ª æðÍ Ä`û`^@ÿ°ûI ¡Ä  È Ö ª@ æ  DpÀþÀÍ@ ÄÁº æ`ÄÀ º ú§ô  Y º`ó À@ Á °  ìÀû@Y0È  ^ÐÊû qq@ ñ/Ü,Uºà…›¥J»fº¬éÒeŽ˜.k°ˆEÓ,Ü¿õ€©jö/œ.bÑ`YcK1xðìÓuÈš&vmÞÄ™SçNž=}þTèP¢EEšTéR¦M>…ŠÓÜ'4Ÿ¬¡ÑS ͧY^eÔ4ÿøý³6¥Ò?}‡¼(š2 Ö”CвÌÒ“„Ì¡h³%Ñõïš8~²ÀJ2ÅK]7õ±Ë"bì>¡ÉÒï°,‡Ðøþ¡ÇÍ~ÿTMñ“$‰.A­ýÀÃgN»{IJR4¥YkEI>©R& 1MD¦ !sJQ’SÿôéA£h ±hqˆxñr(E^¸éc÷ož9x~ÐèªUýzöíÝ¿‡_þ|ú=£¡‰­Ÿ"ïöA$#Ž~Tq{¼ ã~öá& Hþ±& ?fñbŠ,Ù‡žOàáf UêÙ'bx€åbx ž)Iân²¨Ä&~úéÇœ,*¡q}üHŸ~âHbE\0‡4¦è‡2ôøÇŽ$ˆù$JMàáçŸ~þ© 2øÁG•p¬ÑE“$Ù‡4èÑn\øžYæ‰&‰Oþ‰þ¦†Ct™B*!‚˜pˆñ" Xty§~úág~úÑÅ ?Âá)RI'¥´RK/Å4SM7å´SO?5TQG%µÔœØ©Ä XØ$ vþé‡/ùGÂ¡Ç 48⇛$*ùÈP¤Ø$ é‡ެIâ“~øùG—$Tùg–$¬Ág ?ˆÐ„/*Áir¼¨d~øéG$è™$Š„žÐÈâx¦PäŸ8šÐÅaç&vÈ@ƒ#|ÚÑ#‹JšP$Ÿ$áG}¸q–øé§™$>ùG—$ÐPDYö©$ nþÙ‡A¦h¢~pbç“,>¹ÇT›oÆ9gwæ¹gŸþ晎ˆ‰#ŽS`Ð$]¢9dŠp™‚f²ÈÂvØÑ…A¢1' 2ˆAf4šÐ%]à ' A€±&U’ÐÄkjЙ$>Iâk²8›ø¡‡˜,±æ|¢‰ƒˆhÌ„ˆY¢ÑEn4¦°&œ8¦PE5k€FbⱩ{IB•h`‰f AfIÂk\°Ã}æÑÅM¸ù'œY’P$n’@Ãdˆ G"tGŸ8t!& `lú‡nÐðÃè¯Ç>{í·ç¾{ï¿?|ñÇ'¿|óÏG?}õ×g¿}÷ßïþ]à!&2ü žJ¼ðÚhŠ.Z4T@?„#‡ þ>ÁŽJx ŠPÇ>`?„Cn(š"àAŒ8 áÄ(,â s@ÏôÃ?Â7ÄÁ ³ˆ‡*Ð@AÌ"n(0¬¡;|"á ?°ç{¨‚ dðC8`AB‚(Ú!ÌÁ A­÷øDÜ?°Ã‚ð‚N1 ΂Ÿpƒ*q½~pƒÿàüä8G:ÖÑŽwÄcõ¸G>vï\ÁG?ôQvØc™G?öÁ~ðcÓG?ö±~ô#ýxÇ=öÑ~Ìÿ ‘>Ø~ôcúè‡Mê1~äƒý¸?°Ç}èc6¡?öñ}üðøÇ>úþ!±|ìCý ‡>8Âô#{ûèÇ<رÅ£üèGÎE£œëýÐG?&Ùsíó؇>ú‘Žð£ø€G?®Ç›ôã|÷Äg>õ¹O~öÓŸÿh@:P‚š¯ÿØGúÁ‘smÿèGöø±ôz4â?þÁŽœëý°É>úñ~`¯ÜëÇ?ú±~üƒ6é?²ÇíÑè\ûè?lÂŽðãý° ?þÁŽðƒ#üØG?þÁ}@áÇöø>ªVÕªWÅjVµºU®vÕ«_kXÅ:V²–•#üø?ºÇíñãzüà?8ªòƒ#üÈ*?´Çþ¬òc{üø^?lÂìñ£¬‡Elb»XÆ6Ö±…ld±ÇÉV–#É0Ä7 ±‹®îåð&Dñ @”ã°Õ06$Á Ž|C¬xÆU“±lx˜¨Æ¾aYÞöÖ·¿np‹ŽìÕ‚XµG)~aUæZ52¨BÑÜëm"ØðžÞà ¸{ßðÄ7¨k“~ÔBÓØ!þaŒ\A F`®,€` ŽÔ×¾õÃp¡wØÃ÷p€<`ØÀFp‚¼`7ØÁ†p„%~QCüµØA D1 t°BÄ'Jñ‹rˆ"ÿ°G- aþVlÂQE5ž!Šo$£Ï@…(†ÑYØC—0Ä3ü Q<òàG9JQF`£ÃðÄ0BáŽü¡@€“qqlaÿ¨% q tLƒ…¸D9j!Ša`âØ`…(†! VØC¢@…;þáQÿ¨†(X± G #Žø…øq_l¢u`:P!Š]p h„ûJÀ…_ЀZQ0Ð:¸‚ àƒÀ… `J†KÁKû’‡ ‚|ÈO؆iÀ„:Ѐ7ø¨yÀwÀ0ypyàCЀiÀ J`.ø>Ѐ_ø†aèã‡ÀpŽxPþƒM0ƒa`€]p(„(øLxp…¼„r¸/^ЀKø‡~àlð„Aø€+è‡g`€F°‡Z(h{wàQ¸€Z`† ¸JÐ ø‡KpY@‡]àûâ‡~¨…ˆl8·LÔÄMäÄNôÄOÅPÅQ$ÅR7y tpLPtà‡(‚úz(~ø%¸wÐ3… ¸~è‡(hŽè…]øVØpŽ0ƒ<ȃ_°/~HÀf¨€Z h„+˜:8ƒ ب>Ø>…+ Ç+(‡úêyØ è~ètþp‚pxƒp€3à‡~à‡g`Q¨/~„ ˜†Zp%à>@…~àƒ ˜†~8—ãˆ~Àp~ø‡~¨ HaH˜~pCP‚ ؃=àQ¨Ç+xûâ‡i`3ȇ‡.HFÐ+à‡d`€Pà‡(„sù~Ø ¨…aø Ø>À„~¸x~ø‡±$Ë~¨†6ØPȲd˶tË·„˸”˹¤Ëº´Ë»Ä˼Ô˽ä˾ôË¿ÌÀL¿ä‡_¸‚'¨'1Ørø1ø€R(tÀ˜ƒdà‡*`:¸€-ÀÐÉÜq0AOØ…p€þ.  pG`@0†H W…Zà¶ LÀ„.0PØ3L˜T¨Th„]ø…èüy`Ë~„ àV`^˜+h Ø‚]Ð%Øy@Q`€9~øW8ƒ  „Z#`…R…gØÀl Ëaø€7Àlø‡jp%èf`€F0À…B¨G`JÀéüwhË~¨ 0„]p„‚Rø#ø†K`€<wÀè‚_°‡¨…:p€B¨… ØR@O˜†7pGx·|† ¨ƒjè‡Á$Ò"5Ò#EÒ$UÒ%eÒ&åË~WÀþ†=ˆ‚.À…~ø‡iè‚0`lx1Cȇ_ ‚9؃9(lȃ(Ø‚M\¸‚0H†0„+(5àƒ301p„è‡]8%8Yඤ1àGJH1Fƒ:(G†:{ *¸‚<@¸ä‡àQØ‚(hƒo@…+x@hƒ:01ȃo˜†7pTF°‡pTGÅ„g¨'èQ@3pTYˆK¶”*ȃrèy`Vàf`%ˆ‚Zè‡|…+ˆ‚9À†±¤‘·ìJp%T¸‚60„7Ø…7pTCÀ†:pT@X‡˜3pTF¨>ˆ‚- „Z0ƒ}þ…¶ä‡j0~Ö%Ø‚5؃EØ„UØ…e؆u؇…؈•؉¥Øƒå‡ày‡~Ë~@Áඤ{è~`Kwȇ±ìyà‡±äyË~ø‡~hË}p‡|(Ø|è~ø‡~K~K~øy°‡sX~ÐX²Ì‡±ì‡è²ä²¤‘±¤‘à‡~øw8—~ø‡~ø‡~ Ø~Èy ‘]è… „|è‡à‡~È{è‚=yp‡|ø‡| ~è¸ì‡±¤‘±¤~@‡| KyË~¨ØÆuÜÇ…ÜÈ•ÜÉ¥Üʵ\‚í~€Ë~pK~è¸ì‡±ä‡·ä‡þ~0Ø~ X~8Ø~ Ë~pØ~XX~hKc¸JØ~Ø…K`~ KAØ~Ës!K~PØ~¸ÜãEÞäUÞåeÞæu^†Ý…ZØtˆÜo¨…Zx‚u‡_@‡gx~xXtÀ…røl¨t@X²´‡aøl0†|€K~ø~ø‡~H_²ücp‡_(‡‚E‡Zx·Äcp‡]@‡·DW0„]°‡À†_È·t‡ëý…~ KyØ…_ȇ¶D‡_pcÀ†‚•‡]ø…~hËrøyøl`KyH†|¸ß–á¦á¶áÆáÖáæaž#¸€Z¨a{¨wxË~Ø….¨€(X~þø…*ƒ|pËrÀ~Ë~À†oˆKW¨€PøW`VˆKy¨ypË~ø…=wèáèCÐa¨€Z(Ød¨€(pË=‚_ÐcxK@@˜jø‡7¨€ohK~ø1@Ȳ,‡øthKW`iH@(Xqȶì‡R`lF`KO¸yˆãW†åX–åY¦åZ¦åg„rH†d‡jx†o\{ø‡~ð„ Àwx†o@‡d@‡cØ…oxKtØ\xt@(„dp‡iH†i@‡dÀ~(ˆ‚±D‡]øwpËglà@èt0\þøwÀ†0_Ày0¨‚dø†jH†o†a°‡j0^@‡È…_xtHt(‡dp‡r¸¸„gÐXcØ…oøq0\…+à‡¶¬†d‡]À†|˜†]À…oè‡gøcÀ†dàtØ…]p‡·…+À†˜†ø†_À…d°‡|H†]ø†èc`P~°‡dØløJè‚jÐqhË|ø pcÀy0†_†|ËrØ…_p‡~à‡+~KlØ…(øwhË_‚mØ‚Pøtø\øwø‡gØ…jà‡˜\à‡~x†]x~Ø#'`²Ä†þ¨LÀ†~ˆåÓFíÔVíÕfíÖV{`x\`#˜†9¸‚.x‚+¨Oà‡~… ¨…dÐ@À „PƒP#À†¶´1‚(0Q‚ +†99ø `„~@ˆ‚¨†(P‚ 8tÀJpoJ°‡a‡jÀ†Ø%è‚„:0 0>À3Ѐp‚F0˜iH„.Wø‡~`€ @ÀTHT@…¸€ƒjxƒP‚ À†~H†ufhË~˜ƒ0‚ˆ‚aÐ-'ø†(@p‚0†(p‚ 8tØ…÷¦~@‡dÈþ‡af‚( ‚˜GÐ'Øc؈‚~àp‚xq`{†|`Ë~(‡.¨pT‡6P‚(‡˜'ˆ hwø‡+¨€|ø\Ш€ Ø#/y~Hqø†+P‚-ëÕ*˜R¨… |¨‚`y0†H†r ËFw ~hËX—õY§õZ·õ[Çõ\×õ]çõ^÷õ_ö`öa'ö~† xlË+ØqƒZØW(8ƒ± … ¨…Ð5ø„_pF¨ȃ¶,ˆ‚]Àw`†ð~è‡oø€0þH%‡(‡ˆ‚àƒ Ø…P`\h„* ø+à‡~ø‡~ËapVH-è‡7˜wË|Ð.ø‡~øw0„oøVЀPø‡|`@@‡8 0cøQø‡ZøYø‡]p€B¨¨~ø~˜uTp€dÀ„ †R¨…7a8ƒ*Ð:Ð3¸€]¨G¨‚«¯~K)‡ˆ~‡7p… y0`=XP‚a¸€=؃~ø釶ì‡r5øù‡7Ѐoø5¨€]ÀH†è‚è‡|¸ ø‡3ø€KÀú+˜¶ì‡.yàþC(…8ƒ~h P'ø‡.ø€i`.À…(Ð臱쇱¬ †±4†(P‚_ öÞ÷ýßþàþá'þâ÷õ~H†Plà~@… Ø„(‡B˜13ø‡~ ¨…5øQ`€ ¸ „¶ìL˜¨‚oHØ„ ‘7*h„±,ˆ~؈+Wt seÈÐ Cÿþñã÷Ÿ£aX\á×fºýúíè²ðß3üú-t¥!Ô¿~ XýcÑå‚!f<ñ«BÖ¿P‚l"é#ÐýP1øW«B¨AüSG‡(JÔ1ÌÕÁƒý€Vcþ!f¡¼Z PõÛ¢AÃ%w3”°r ãJBAçº¢è› ßþ9q°åŠŽjýºTè'oG—g@Ô:8ÈÐ7 ü€èèÇOÞ4…þrÀ¢M¿. †}H±ÅH—¹ýøÌÉ÷¯ß³.)vÍ­mû6îܺwóîíû7ðà‡/nüxP~î$éôï…ª¥à „~Õ]ðôMFJø»0[²dù€º3c Ó^Ï@ðöŸ± Ðýs—L†Øâ@-ÓüRM-‰$Òˆ#A‰³ÃÆ|@E?u€ðË/üÈ„é}sÁØäóÏ7—hÐÈ7ù0ÐÈ.H¢†h@I?µT@É/þµh0G5Ì“n˜0ðÍ&œáÀ.sTÀKyÈŠm8àÊ4¿`S‹‚†0ÂPîDÁB-ÓÔ oT£Ã,t±ÉJLóÁÕL3Œ=·ñÃÌ]`ó?ؘ¡Á/èìqA-Ó 3 6Q|ðL9Q°àЏ¢`#‰ˆT?u\PÊ4¸0£„ßl!ƒ3¸’‚Õì`„1Øü"OPÌÌ0Í?ö\ òðƒ¯½úú+°Á ;,±¸ñÓÏ?Ïäñ?uì ?|°àJ”s…(ìPG D±Ãâ`²Ã@4bÏGüȳE;ˆ±Ž…ÈE:Tó‹ ;ÂÏ?”°%f€ CØôsÆ è :È ƒèœB3˜!;UÌÐE5”ì CŒØs?a€ð†&´!Ã]°ÐˆTáJŽð¡ÃFÈr?ÿ`sÅ ;DñM)ä^ñM#&8¡D߈¹ƒÈsÛ7Q° ƒÿ”cÄ ,áÈ7s̰×! A\R‹ Al‚1ÿðc›8uȰƒà £ÄJð⊠A\Â4Ã(1g”?sÂO?è$ò ?ÿ¸þ:ì±Ë>;íµÛ~;î¹ë¾;ï½ûþ;ðÁ ?<ñÀoôz?¯£Ó?ñóþO?üüÃO9ù4Ô?ÿTÓ?ýÄÎO9â¸ÎO?âðóÏ7Ž€Šëýðã:?®ËóMC¶óó:ùðã:?î¸;:ìÁ~ÈŽ¯ãÇ?ì!Žð£åè?\×qü£ÿè6äÑ~Ø®®ãÇ?úayÌŽÿà‡<¾ñ~ÜŽÿ(G9þÑ{”£!ÿXÇûñ~ô£´?þÑ×õ£!°“‡8øñº†¸ÎòàÇ?ú;y|ãuüøF?\'yücƒÿàÇ7Üñ~Àî;øìúQ¼5²±n|#ã(Ç9¶ã‡í6;~üƒ´ëíú1 3ˆ¡üˆ?þÑÝõþv ‰]?tרõ#výø?†×Øñ#výè]?^·Á×5$výàÇîúQ»†Ð®¼ëìr»~ÌNâx]?è¨Ë]ò²—¾ü%0ßÈâñCvü&2yÉ6ò#™¾ëÇëøáÌiR³šÖ¼¦3Qá‰R”cŽÕð„'v;t¸ââÇð¾ŠoüãžøÆïä!‹j<£öxãë¦! t â¾ÃF)Ê;c좥@Çìúñ @âÿø+ø!»o€S°s‡(\!»o¸¬˜†ï¾Šoà.µxF5d!×}cü¨Lc*Ó™Ò´¦6½)NsªÓò´§>ý©Lù!ÓBDAþµè©<’Úñâ ˆ‚LcTA ý6’Á×õãب]->ŠÔ‚¬¨;’áŽÙ}ƒ¢ØCäÔÙbƨ@-bÚg`v¡ø@-d*†*ÔBå˜]9>3âa@A?d7:€@°‡ @ »MÈ  Ø„L«ñ ØÉâ¥):fЈDÌÀ®ëÇ‘~̵¶¶½-ns«ÛÝòV§ÉxÃ7v± w$ÃÕ¨E)j!~üc¨:~rìâÿp.PQÙ‰ƒ¥F96¡>üÉØE2¾±‹ið2ˆ‚ëÄÁ W CvÕ6úrÔ¢þ²@Ç3¶€Y6²“­ìe3»ÙÎ~6´£-mi—ƒ:(Ä/X„i´¡ [¸‚>@‰E‡â»xÆ òÀ 4‚WBv `Ëã JCPá„ ì  ÆàƒÞ` 4âåÐAþñŒ lÁ Wø*ø ñ=ðcòðp?öP…6T€€0¢0ˆj¼¡ Ø%(ñèÕ „XÀŠðƒA J ‚¥`E.„3L£ AèÂ’Ñlä£Õö4`(:8‚P(ìJÐ/‚°'PᬸÄûáŽjôcèþÄR Tã [èB.ñ €` ¡øG!º€^`ˆ:€@[hÄ?!°A@Á4PˆÌaQЀ!äQuÈc‹¶G(Ñf8A Éà‡³Ó¯þõ³¿ýî?üã/ÿøó£;Ø6úñ-ì]¨Å0¸&€ÀüC?ˆ‚àÂ?È€T Â.8  Âä°¹ +l‚<ÈB?üÃ7˜@þ$ƒ Ã? ƒ DÁ?ÌÁ¸Â%8.xBÔà,?,?*„‚ \Á?¼Á  Ã?ðC>è@0š(ìÀüÚ&\.üƒ DA5ìÀðƒH&T€8ôÃ?ðƒ°õÃ?ü‚ Ã?ðÃ?lÁôC>\È 8@9üCÈÀ?”tÁ?D B!¶:ôþ° Ã&|Ã0°‚$|ÀðÃ?,Z?¸‚„?8|ƒDÁ?°À¸‚|âõ£õC-(Á7,Z>B :(?ö£?þ#@¤@$A¤Aä?bƒA2ØÃ?°HˆÃÈÀ˜À,Ú&h@-üà ¨Á7°À „‚(\Á&?x‚€@`Ã3˜À%,?ð&,Z9Ì@üÃ8€ˆA$C)pËä°å ÈÀÈÀüƒÈ€;,š<A0š˜?ôCC°BˆÂ?ä°B?°€h€!0ƒ lÂ?ÔÂÔÂ?ˆ‚(\Á&þ*0À?Ô‚\B t€À0ˆÁè€'ì€8@tA$C)pKÌA?›œÁ?ôƒ;l´Á8B?ÁüÚ&\@-üƒ ´Á:üÃ\A?[? C £mlT€tA Ã? ü:ÈÀðC˜€,@æ”C°ÀØC?ÈÃèÀ ÀüA?0+T@)üCTTƒ!h&|ƒ (#h@LƒþœÁ3 Ã/ä£ñƒ;t.„ìÂ3€@ìÂ4ð3h”Ã?¬Ã0È@(©Ÿ.?PTÃ&h€8€,œÁìBÔÁ „ ¼”Â3ÔÂ3ì&`‚'\B?øi>`ƒl6ÈÃ3€@l‚<üÂ0ü6‚`Â4°À`ÃlA>´‚1ü)°þƒ8l”B9ØÃ3DÁþ<:´¸‚1ÔÂ4<ðÀ3`Ì@(€ü&l‚'l‚<ø)?TÃ(Á3ÈÃ7¤€°‚œA?\ Ã.ü6P‚3|ƒ< ‚ ì/+?„Bäâ C„A2+ÄF¬ÄN,ÅV¬Å^,Æf¬Æn,Çv¬Ç~,ÈV,?üC?,Ú7ÂÂL?4‚\AT8lAè€Ô!ÈÀD ƒ+8Á(%䃟ÊCÁä=ØC!è@LÃ?äC¢±‚è(Á.8Âè@ì¢õÃ?ôßöÃ&ì@ˆA|Ã3A0?ä*èþ€lBÌÀˆ6üCA Ã ð<ð „ÌÿˆÁˆÁ7¸Bì€P‚ðC?ðÃ?ȃ;üC?,Z9ÈC?,ZCüC?(iC,Z> ?üC? Ã?l?üC>”C?ðÃ?ðÃ7ØÅö?üCCüC>¸?,Z?ü?ø©=ˆÃÄ6Ä?ðâmÐ?¬C?,Z?üC9ȃ’öÃ?ôƒŸòC?LÃðÁ&|@)H,?ü?üC?üi?,?¸:ôƒ’òC?,ÚQl?ø)þ?üC? C>øéý?kCô6|€ P‚ŸöC(<;,Z?ü?¤°839—³9Ÿ3:§³ÄnÄö?üéký?,Z?,3ÌÁPÂ>@ìñƒÅößö÷?()?üi?øi?ðC?dìñÄöÃ?ôC9÷C°öƒ!\A°?0?P,?T,?üiCx0&tÁ\B>üiCðƒ:Ç´LÏ4M×´M³; ƒ;ðCÆòCÄòƒ’òCÅæƒ;ðƒ<ØÃÄÚ: ƒ<,Z>¸?¸C>+?ˆ.|?üƒ=¸?k?”Ã:¸C?(©<¸C>«<ØC>¸?ø)?üþ)?äÃRËÃ?ðƒ;äƒ=ÈC?(i?È?œs?Üt9óC?Dl?6b'¶b/6c§0È€ÔÂM» $ƒ ÔÁĆ‚\@,Z#È@2T*k?ˆÂD <Ã? ‚<°–C|@”âñ 8@#ü©<è@P  Ãĺ\@ü6€*¨¸ƒ’Vƒ`CcG·tO7uW·u#6:°‚<ÀP>,µ<”Ã7”?üC9`‚ÔB> ƒ<ØC9ØÃ?äC9|ƒ;«<”ƒ<|:ôƒ;x:üƒÿ”ƒ;”C>üƒ<|C9ä°Ö‚|C\ÂRó:¸? C9¸C9ˆC>þLƒ tÁ¢‰BTà $ßòÃ7\|Ã/¸:ƒ+¸Ã?ð:|ƒ;ô? ƒT@9üC?|C)h@#üi>(A# ÂðÃRóÃRËC9 ƒ;|ƒ<äC5È€ðC5ÌÀ04Bôâñ œ;ü‚;\·˜9™—¹™_7?ü‚\.ì@`C„A<¤€+,Z(\À.$ƒ0/Á&üƒ!t8üi(È@°€TÃì`C!\ÁtÁ$6„%T¬Á:È+ÈC-LC;˜A`C!Ì@ÌÀ `Ã7È@,Ú7¸‚< B9üi9œAT@`þ?˜Á(A5ü&¨|â½ÁˆÃ?ä°€8Â7|º+ˆ.TÃ7°Â?ä ¸ÃlÁ&<( 8?¸Ã DÁ?ä+¬C2à‚’bƒ<ƒ;„Áü‚Åö»¿ÿ;À¼À<Á¼Á<Â'¼Â/<Ã7¼À÷Ã7œ Â:ÈCì€8˜A¦º+€@üC?ˆ‚ÔB?¤€` Â4h@!ÔŸb´A(|+B-4 B#È@\ ÈB€À.Â8‚1üC?üC?ð#8?¼ ”:8€$CTÃ7°@ü?üCC+?`¨`:üþƒ8ð<6€ÀìB ¼Á¢©Á ƒ1hÀ&”Â4+èèÀðB?ðâñƒ'0?‚ <ƒ8%H#ðƒ;È@äПÚÃ?üC9`BÔÁ7H¬éŸ>ê§¾ê¯>ë·¾ë¿>ìǾìÏ>í×¾íß>îç¾’òƒ,€@ôâQÂÔBˆC(A|€,Ú&hÀ.ðƒ ¨A5°@!l‚쀰 ü©80/<ˆÂ€Š Â%lÁBÈ8@ Aì+„+„:ü)%\À?Ì  Ã?8@¼á÷¯ß7aþ%T¸P¡<*Wö+tá+3”°h“þðM…o¢>$ÛõÁÑ7V¡J•ǰ”ƒ…X`kâ[¿~ÿÊÍPògOžÃt|ãdzœ ®|&Uº”iS§O¡F•:•jU«W±fÕº•kW¯_ÁnåÇ[› ¢þUû £¶b†¡0ï%¥ÜÉèâªÂ^M{6ŸOl \ÓÐæ‚¤KJ5ºB…ÑTb* ›f¬ÔÏo°%•ä Ù•ßÜ18ƒŽŸ¼g(®”Ëç”ß7%QÊõû'nO…]¿4´©öì™=qg40+uá’$ ††ynÓæYÒR ’‰añÌLcöþÉ«&ÃH¹|Iû‰1Äï_>WJÚTãÇ•~}û÷ñç׿Ÿþÿÿýã§T¨ø'Ÿ.*¨Ež.4¢‚¾yXhã dЈoÚA‡ö°Ç§Bâ ”øÀ„ c‹+®hD†3’„væŸ~˜’EXp ”-Ð`‹o6‘Á fxÆ©rªpà‚Üég!>@˜a†7¦Ñád؃…€p wz²)©_4Ò+*p`TþaE 4˜—¤pBžÄiÃyLTÑEmÔÑG!*~xêg¬žøéç›|xꇟø±©Ÿoä釟øéçyúIª~þUql«Ÿ|øé‡ŸøA§š~þᇩ~ø)GœÆþâ§~úù§Ÿúù§§lú‡Ÿøùg,Qûù‡ŸgÜéç›þáç{¾ù‡Ÿ~œâ§ŸrÊéç~þKT~úù§Ÿ¤ä©"žlâGÒ .ØàƒNØ¿d›â'©±þá')~”â'©~’â§©øù§žøù‡Ÿ¬úñ)ÙžøYÊ&©øù§Ÿlê©~–²§yÎYçyîÙçŸÞŠÿúù‡Ÿ ‘NZ饙>¸šgª‘Ry°±›r´r{°A‡)wv)~Ü©Fž¥ªy¦{zâ›jäIÊlÜ)ç~œJŠ¥ÐÁÆžjÜé)lòÉÛðÃO\ñÅoÜñÇ!\òÉþ)¯ÜòË1—¼1fР–Ìg…gfàãq~Baá YŠŸ6LèB‰rDÑ@¥ú¹b† ŒéIž04ØÅ§~žù 1ªçð¦™a déɘÊYÞúë±Ï^ûí¹ïÞûïÁ_üñÉ/ßü뿹Äl°±ç›oЙ&™iòùGžMØElБwþaj<£JA6Ðñ lðCÏH6þ/l”öø:žQ {(å;ÀÆ0ñ l ãåø‡;ª‘ŒiÈãåÀF9°Á~|ãßàÇ.€P#°B)ùF Î0i`õ@Oä1g¸ƒò0„†Á“ucÀþERª1ƒiâ åÀ:žñ~ØÉx†;¾Ql”ùøG9ž|üQ˜†žÁ“~tÁè`:´HA’…4ä!™HE.’‘t$"ùQ‹„¡2PB5æÐ1(! (ODá\<…À…0Ñ:A QøFR¢°qˆ!¨+PО„BµÈ‡ Îð Â(D-@ˆ¤|ƒ{ÅPq \0¢¨ÀĜЅÔB à…! # ÖÆà‡O(á€Zâ¨+jÁ]o˜A5dp^DAýàÇ?øÑ¥ð£,„<ò!Kh@ÿ@…6! \âŽÐÀ0þሠ`ƒa€ ›üÃ&Æ`%þ\ñ\0#»ˆÂ ê ˆA¿¨‚ ~QŒ¥'üø:® ŠôáØÁ°aSõ®—½íuï{á_ùΗ¾õµï}ñ›_ýÚw(¸‚ PaøAX€x¢  ä¡Ê¡Á@L òÁÞŒBáø¡a>Àþ.€’á 4ÀvÞàìX Ðáçs1³1ó1!32%s2)³2-ó21335s39³3=ó3)s‚@ žþtàx¢®X`þ¡d x"þÁ&4À˜áÎà áú¡øa>@x á@þÁ4`þ¡`® áäL Üá3Á3<Ås<ɳ<Íó<Ñ3=Õs=%“þÁþ(æ Î`ø'J¡ÄA® ÐAºÀžà ¾þáÎÀ4d †vAžáa°¡ÂÀ4@Êá 4 Êa4  °!’º€ ~.óEa4FetFi´FmôFq4GutGy´G®¦¡p!С'Xa‚XáäÁd 6a @@Îþá @€ dà pÁf`ÌÜA d ¦á L f@ 6A@B¡(!t  ¡(|tOù´OýôO5PuP F÷áúa ¡'úáøáú¡'øAìáøáÆþâø¡Ä'ú'ÄÁþ¡þÄa,ú¡òáú¡'ú'ø¡ª¡ø'ø¡Pq5WuuWyµW}õWe´øá¾A”¢øÁ'ú“úÁ'úx¢øÁ)ú€5[µu[¹µ[½õ[Á5\Åu\ɵ\Íõ\gŽ ~: à€'˜ €óÚÁ'¡‚]ýõ_6`¶[õ!âáøÁT þaî¡îáô¡ðáøÁhÒàøÁA2þêzê¡ìÁ–àðaþ!–ìaþêAþAðaîÎþö¡)ˆ¶höh‘6i•vi™¶iöi¡6j¥vj©¶j­öj±6kµvk{B¾`Àaìá@À! nÀT€¾àl î–AÒàöH2á‚ÁlÀráb¡nà†àÀŠ€øá ŠÀ :ál@ ìaTà 6À|AÒÀ¸6tEwtI·tM÷tQ7uUwuY7)ìaT ºö!n ò! 6À„Á–ŠA@øá$ øáøÁ`ìán |ÀºÁ¾À^ÁLaŠÀ¼¤! @¨aÒ€, Žþ–à`Šá ^ ê¡uí÷~ñ7õwù·ýw)òÁ6 ¼a,òA@ìan`,Êál€¤@¡ÊAÒ€'äa „,ÀF`@:ä¡Êa¾`,þAþ„ `øÁT@àÊ2ºá6àþ·ˆøˆ‘8‰•x‰Iw,ºá lÀìaŠÀúÁ|`¤áºa ,ÀFa„!hÒÀðÁ8"¡6à|!Ž}ÒÀÀaìa¤`ÒáìáÀbþ T` ¨VÁà2áÒ@ø‰)þ¹’-ù’19“[w,äanÀFÀøaìÁFÀl`al`ÒÀþ@r ¾`À¾à$`l ÊAà^à ºA à2l`@Òà 6à6àþn ÀŠàÆB“Á9œÅyœÉ™œùáÆÂþ` ì!YòÁ|ÊÁÜaÊáøÁºÁº!ÞaÊÁº¡ò¡bÁÜae»¡„ÁòÁ|¡Òº¡º¡ìA¤Êì¡ÜÁÊ¡ÜÊù¤Q:¥Uz¥[WFA|"YøAôòáøápöáþÆbÆbxb,öad:þ!ìaþòòò!YxB졊šXz«¹º«½ú«6Y˜‚|‚z‚Œ–x‚––Àú­á:®åú­ñáì!x¢ÔAî¡iõ¡ð¡iñháxbÚa)ôa¯ßÁ'öAÚA)ð¡ö¡îa)ô¡ð!tßîáæ:´E{´1™^A@þþ` ŽVºáx‚R¡––î|@º–ê!)øÁ^6 'ø¡ ’‚&aŽþ ’‚h¡þ ¢öºá”‚ºÁ!þ TÀö´Ù»½ÝÛtßaÚÆ¡¼¡þAºáö!ºa^€'ìÁ xbΡÒ'Þ¡ºáìA^`È¡ìA@¡xÆ¡êáÎ!ÆÁ”B¤a– |ÁÆÁVx"ºaðae_`zbºá$ )øÁF TÀðºÁîaìAF¡öAÈáÆæáÞÀ'ΡÔáðáÈá¼!ì!^ÀÎAðÁºø¡F Á®Áð)ð<Ïõ|Ïù¼ÏýüÏ=Ð}Ð ½Ð ýÐ=Ñ}ѽÑ{â–þà¤lÀF`œ¡nàF!ìa^`,òa$ Æl Õ•Á|àlHÁ`|Àî` TÀÆâlྀT F@„Á'ø¡|,ÀL¡¾à|þ–À^€ìl`xB^`@œÁÈÝVäºnÀ6àò–@8Áî`|`6l` ^ÀhÁ^z}Á¬`Š`  T`T@ ¤áTàl òÁÊÁVAF ¼ÁÑA>äE~äI¾äMþäQ>åQ^ìA^àÊáÀºAþ` F þÒ VVT€'øá$ ø¡6@ hA|À| œÁÊÁ$ ¨ÁÊÁ øA |AÒ ^ à’B|a¾€ìAº¡ Àøá $ÀèÀ^`þÁŠ@Êá$àFx„»a,þä!|^ÊàVv6À–`,@|a„U` ºÁF@:¾À– "&¡äan€Ò Æâ’ÅÒ@2áò¼÷}ÿ÷?ø…ø‰¿øÿø‘?ù•ù™¿ùÿù¡ÿ÷ùA|anÀþa @øÁºa¾@Fþ„Á|ž'øá$ ø¡`n`6@Ò@ø¡ìá$àøáøÁ¢Á#~“ ø’·¡H9åF¤é÷/â?~àF¤á÷¿%êñSÀ‡ àøÙذ܆4ù|H(7©§Lö$þãGˆ *ôñ£áFVäiÜðEÞ É£ƒ [,¯äýÛ· Â*$@XbOŸDü|m°ÑͦڵlÛº} 7®Ü¹tëÚ½‹7¯Þ½|ûúý 8°`µËÉyñ'Í€Wà„•ó1ÂÞöºP1®ž=_¾t+gaI±r©FØpæMYºrä\;WŽ‚?î|!ˆTÎBšþiºmH£Ï¦½rÒû—o\Ýì-iàk™¯qãTlðæN…c#púþË8~ùÉ+²¡Ü‹öÜjpgœ½KÎéã·AJ¹*F,±·Äö€(êð#Ï+L;tвH£hÑ>öÈñ"öäÃÏ[~bˆ"ŽHb‰&žˆbŠ*®Èb‹.¾cŒ"jäKÂ,ÑÀDË*XðÇ(# `À«Ü±Á ¼pÌŒ°Á™H`Á6tc Œ`Ë ÁÝ,aÁ6 2 0B7ûüÃÏ>ÐŒ07ü#Í 0"¨`Á#ü1Œ`Él°þÝÈ#Fjå##X€@0iX€/@EHÃÏ l -H ‚£ø2¤ñ?Ýl Á μ° tÃODüìã‹å¼b²Ê.Ël³Î> m´ÒNKmµÖ^‹m¶ÚB«‘<Ù# Yù,“Fùð“Yå“FùcYÝt“>ûðãŒ=û¨›FöH#Yù¨k?ìòóYöä£Q9Ò”CV>ü䣑=öÕ?ÿðã=ü䣮FùðÃ.?öXàÃ2òh$3òðÃî>ýÃ<ötäåH£‘MüX¬Ï?ülKtÑFtÒJ/ÍtÓî³l?j‘õ?ÿ„ÌþODü´EVDåóFÿð³FiôYÿÕ–Fk‘?ÿä³Ï?üüÃODüä£Ñ‡IÄODdõc“//¼à?iôO?ÿð£Yi´?û8yæšoÎyçžon-,³,?mñ­Fñ£?Jóƒ´ºû|N{í¶ßŽ{…Ï8¹¤17س{îíPs4ç°54騥Q´ó¶ >DÇCM=׌‘>óìÑ=Ѓ-8ÚÄÍ=ůÏ~ûî[ëÍ(VŒ@XàÌ>ü( N7Îî£ r¨e€, 8@~LbË"ÈZ@à¬à?æqyüƒ6°'$ÐþÖãñ°àùa ciø?F±_üƒÅ@LxÀ{\ãÿàÇ|Ð t‡D,¢ˆÄ$*q‰Ll¢ŸÅ(JDЈÄ0 (ø!ňxcúG1”1|tc 8 9î‘ jCи9êAsüCÝ(F1ºqŒ|áêH5âqŽkœãÔ ‡2º±y@Céà8¨‘etãõ¸F1”¡Žnä€>þ1e@jáG*^ФÂÔ(†2Þñp#ÝÈG7¨Ah@C× ‡0÷ñy@Cí˜Ç5¨AetÙØ'ºaþ%È#à‡Zìщ X¢õ¸5¼‘j@ƒéP†7"re@£já‡/FÐ",âöXÂäÀ{,#ÒàÇ=²A r(×G6œÜÊ8Ç=²A r8#ö ÅÑ {¤á ¾°@> ±Šy †nð‚/tã hÀ þ@/XÀ ¾°Œü™xlð‚" À>Å*,ŠG¨`_°€ 6Po|ápK‡Møñ ø@7è(^P ¤á >Ø@Tà aÜà*@D02YKþØÃ±-¼‰Árà"–0‚I¤ãx£:¡¨¦àG·ZHÁ6°À¡‚¨` ÎðE9Ʊ µðc*À–àŒ%Xà¤PA,° Ü Î(‚ Tpe@²àpG,ìá jüÃ>°Á ì1‰%ŒüÆ,`ƒ Œ@6°Á?¼À>ðÅ,ð‚ Ü /ÀŠÐ‹røÂ¦à‡4Fð…n´t®°…/Œá k8‰üØG>h-r‘‹/°‡>’h@i,A«-@‡U Bö¸ Êa~ø_èÆFP{là ÇhÀì!%”þÃ_°?‰V@«@ºñ…L `¯P"ø!~øˆà|!ŒIÐâ#øÂ T°„øÂ#ðÅ€èùÝàÇ?Èâ KÄâ*`×*ðyØ#(Çœa”ã*hVQÈC9¾àQ@îàÇ>ò¡µð#¦€@&ÜÁX €´¸A+‰b`R€/þ0€?èYÏ Yb±„I @ùðÒÀ|ø_èÆuŒ%X€ xD96ðaà ÝøB7hGØ£üȇ±í‘ "(®·½ïï|ë{ßüî·¿÷M–%þ#F-öÁ}óÃ#ðÁ8þQŽ/ ÀÀ?Š ‚ˆðc˜?äqØc_8Á|€cø‚Fä€LÐB ðVÁyü*¸a~øÇ(Vñ ø@PiøÂ 1‚Wl7P|±ˆ¬?BáÇ?øa a#à‡<|ÑBüƒ‚>4²/üc øC‚Á ,Áh…>ø!UH`6áåA Œâüp‡FP„EÒÒ ÜàˆÅ#²¾oüƒáG,ðDBÂ@þÁa€üÇ Š 44àþxÅ>' ,B#òð…&ÁˆðC"ûȇ/,Poü{úÔ¯¾õ¯ýìS?_Ð"0€Hðƒßd±ÇF@_¤¡V؀Ŋ°h(#´!ìÁ¨ø‚0°Ýà Â`°ÐÐ üið   “`ùÐ °å° ÒÀÁ´¹ Ð E°åð/ð#ð E°å° ÂÀ i@ƒi`Áöà#P*0à Ý0°Þ€ü°K /P¾0‘° ðœœ`úÀ­P ö Ä´° ö¯þP˱à Ð _ÐÂPÂ0 5˜ÝÀ6a#° ¾0>`«_öð €öÀ6pÝP*Pðΰià ðã ¾ p ã _   (ÆŠ­èН‹±(‹³H‹µ(‹û` # E@E`üP‹dá Kà #ðïÀ“#ðÂ`°_`€* #P‘`‚òö0 / *Ð> °_Àò0*ðû üP_€_°  /Ð#ð>0 #Âð0/P¢ûÀþ!Ð*  P _0`6P E@ ü° °# òð‚²£0°i åðàÐÀÔüP7`>° ü ðüp °ðåð >`#ð¾)ò 6Á´`“P`K0 `6 60ðù`À(¤`°#p©p°_PÿPE 6 ÿ ˜ÿÀ¾ÒÀƒ©˜‹É˜é˜ ™‘)™“I™•i™—‰™™©™›É™é™Ÿ©˜öð E> „0#@ üšŽilùÀÝ`üðaã`lÆVö Æþ& åðÑ öðü å)ÆödaΠŠIW )#ÕÉîÐ ù ƒÉ‹©clò›ñã >Pö@åàù@û ˜ûÀöÐ ü ™ü`ÝÿÐ ‹ ­À£P÷ áÝ Á˜üð!ÿ@ò0žüðü`# å`ù öPã)˜Ñ ù°˜ÆÖš)ª¢+Ê¢-ê¢/ £1 ™ú > EÞÀö°¯À2úñùÀƒ¹A™¡˜¡˜üðüà˜™ü ˜¡˜ü ˜ù ü ˜ü™ú°I‚ÉÂàþ>Ð ü ˜ü ˜ü0˜ü ˜A™Æ EàˆÀ„pi°ƒ¹‘™±˜± EpÁÀƒ™û ˜ü ˜dš‘*©“J©•j©—Š©™*©ü  E0 ò›š ™üð˜ü@ªŒÉÉ•I“Iû©!üÐd‘©dÑ™ïà øª¿ ¬Á*¬ÃJ¬¿Ú i00EÐ ü ˜üP¬“É‹ù€¶Ð˜üP™û øà˜ p ’ %` VÀ÷À˜óЊÙñà˜ü 0 ÿð ° ‰ê€Ù 1` ðé°˜ü©‹€Áà«0™· PÀþ˜}ð½À¹Ð˜ °/`ÙðrààÀ˜Ð @ø0˜Ý ! ‹ù *  6p“™ !@ø°˜¤ÐÐPˆ ˜¹pç ¬A+´CK´©* * E°îÀE ™Ê™üÐ €¯À›Éݰ±Ð˜ü`°>™ü ° àÁ‹É‹ðö ˜ùÐÉÝ€ÒÀö ÀɰÁÀ˜üÐ @ pü™“ÉðË` ™ü0à‹Érà ݰ˜ü`>pöÐ ö¾€ö°˜üÔà‚Éù°`ú0˜üþ° Ð /€ü™ü`>ù ˜ü à #0 ü ˜öPˆÐ ‹K½Õk½×‹½Ù«½Û˽©öð E6à üнÚK K`´0L r0tP=¹ðò0 ð ÊÀÐ E0 ÿÀ EÐk ‹©‹7ð«PðX rÐr` L€÷`#àÿ Ð=0 óÐ Á`ÂÁ`P£ ÿ Gà/0 °pp eБð?08`Ýð_°´°ø_ðG0 C0 ¦P¾° 7€70ÔÐ EÐiö€åà þÀ˜tÐr0k Vð*ÀêkÐk°Ú=‘PÚpÂÁÀÒðåðã@lð=0Ý@ GÐe@Áà*€7À«p= ö ‘0t`ü ˜ãð°K0 éK°äðç€!œ úÀK úðÝÀ1 ÂpÂê`Pà ê€BÐ8Ð ×?`Ê Rð ú  LÐK å@òðË ˜ü 7Ð KðÊ@½é¬ÎëÌÎíìÎï ÏîÌààðåðüÏ휠r à°/0_i0 ­ þ_ “€¯PðË rà © ‹ÀƒÉö _ Eà ˆÐið ã0 ݰ±à°>À“€©° à _ ?-üðÆö‹@ °¾àÀ ¾`«`6° ˰ ‹0ÂPt€“Àÿ>ð ð±Ð‘Ð iÐr@ ÎÐi` @ü d±˜üðK ±ð± E0pð оð@-ña_°¯ # #`£`_`7Ð pã`_° ðò ±˜ü` °>þ° Ý`¾°à ü°  ÐÒÀEúÀi ©pp’í üðdñ @ ¾`‘°/@ *ð_°¦ð`gJ 6Püð!˜ÿ`>ðòà i0“Píßù­ßûÍßýíßÿ à.àNànàŽà žàü0  E0 ü ààü0 ùÀòðà 7P¾à7Ð_Ðò0 ð ÿ°VP@“/Pùm_€#°î ðáE°4¨ö0>ÀE0Eàð åà ¾@ ¾ÀøÍ¾P>ÐE þ_°ö ò K ò€_“¤Ð–ðü  °ð‘ ¯¯ ™/PüÐßü ­€´> à _# *pP>€­PS>åøÍÒ`_ÀùP¦  K€ 0 î°>  E`_ßüßåð_@òð Ð üpP>€ÂÀK ù`#°üð P¢N ö€ßü #ÀùP  ðüPà °E°* ßü°E`ÿÀöð€ð/ðOðoðOþi€ZTå`ða >°ÇÀ΀>ðÝ Eð ðù`‘€¦À# Â`ið  ¾ð ÒÀ‚Éÿ`‹Ð K ¾P °ö€üÀ ÐÇÀöÐ àùð° ±ð Ýð>PUÏíÍö`6à #PüÐ öðö0E`ñ`ðö ˜ùÐ 0 ùÀ ö i€rà ðòð 0 ö° @¾ ÎÀýÍœù` À t¾°i0‘0K0© ¯Ð àEàEÀíÍÝ06`ê`´þ `7`@å°7à ð±ð ÅÀû­ÿ0*`ö ˜ùð Ð ù°ð ¾Ð Sðö 6`EЈàU_ÎÀ‚Ùüà0ïÐݰ_i€#PöàPà´ ¾Àù àl¼âǯے«ìýcØÐáCˆ%N¤XÑâEŒ5näØÑãÇŒû|©Á{û@®ÌXÐÞüäù@0ªœ EŒ÷EÅ€tn 1ÀG9Šø3Ïa¹E–ŒXÖíŶøÉÛ°$¿VE4(2iĈ">@ñ“WŸÃ{öŠHðÑ`C·Eþn¤Ñ—ïKÒð¥¿4/ŒHsÀ#ªh0b€{å,ŒX"¬ˆ„">äÔ›Èo €?KAàCÅ€?#Òl°d!ÍÙ">:ñ“çö¡+T?ÐÅ‹ñãbúÀÇ>øq2 ñÙ€†>LÆ‹%Q‰KL"?˜øD(FQŠS¤b­xÅ+æ##(Éþ`~`QŒQì *$‰©à@0H°RŒ =X¢:Î.S@ SG î@ˆŒƒaú(ÂFð…}°!Ù`5Hð Ä£!ÝƱ°Up 'XÃ?¾À,B‰þú Ç<² XBbí8p4¤?ÅmyK\æR—»äåÄô ”d©È?z)F|äbøÀÇ?˜©|ÜÿàÇ8€WüiÃÇ>‚{èƒaúÀÇ>îèã÷ÐÇ?ô¡|è ÑÇ=ðÁ0~¼bݸ"ìáŒØ !ø¸>²uâãûÀÇ=ðñ|¤á ÷ÐÇ?òÑLt£!ø¸GÚð±|ÜcöPÁ"&¡~,ŒÎhÀ¤á‹|ƒö`È>Öù|t£°Cîa/4èâG,6@ü!öèDÁ|Ü ÑÇ:ñ±|Üÿþà‡4|Ð |üÃÝÈD7‚{¤ ûÀÇ=þa b*àCø‘ £Çäk_ýúWÀÞRK(ɾ`~VŠû†nð ø@iøB|`ƒ¼¢ “@@+Šáƒ?øÂ™àÇ"nð‚/]ü°„ ¾°tc 7PÁ ºñ‡%Øà /F7¾`ƒL"´ .-¶ôw€Bü°ÇlÀgøà>èÅ8Òp¨àð FŠ4@ EøÃ?î°„¼¢ ¸Á à` |aX†=HQŽcL‚a´¸ÁT°a|¡>Ç?쑼öàÇ tã#hþ@„Q\Zléò…0 ÒŠ ‚Î( |Ћøb 7xÒàŒ Â(ÂFP_üa 6hEAqƒ¤a6øÂ6pŒ|¢ŘDCìñ‚U¬b‹°Ç>{e,gY˽ÌÇ*6P’<Âüزí‘ ¢öÁ Àñ…;üa¦ÀþÁH àîØÀœ!9trH…þ€.~,KøCF‘†Uü¡£øƒTð‚¬"  ð‡ „z½(È? ²{ŒÀû°Gn° Œ ðE1là‹?Xbø‚3l°_tcåx,Ág `¦€Àþ0‚G@àüÈÇ> °rt(8Êa…t£@À+€cðc °?¾ _¡õnQäüˆEþ`"Øà>A7F°„eøÂiÈ„)$ðwtiÆ8ÊñD‚ËPÀ"L!;(`hÀø‘}„!ù@Dø!Zø ÅÀÇÂl~sœç\ç;çyÏ}þs ]èC'zÑ~t£Ÿ# (É ŠÁ¤GÝèüÀ($ðyäx…Ê1ŠÜ_(È$ð ~là å°@&ø@ràGCø1Т ˜D|ð€"Ôùƒ þR¡øàðE”M‘ { ‹û°Ç^ðgXàòø6pyð£îEØðyAòàÇ>øaŠL‚€@9ìa% àåAvÎe4`òø‡=ÒÐiðÃðà ~,ñà‡ Š /4ÀQ6E*ì±…ñ# „4,@y bhÀ"äÁn€"ì ø?œ!?ÈCüE"ÁG€a‡ (øƒr4X~ø{W(~  (‚n: Ì@ Ü@ì@ü@ Óe°’P€4°~ø‡‚Aäyð…%(‚Xȇrhø‚nþ%ð °‚p‡E@€Q°‡XZ°€4ð… aðgX˜nSHøƒI€NX„æû…"€€U(_…%8Ã%p~@{è†x{(‡X{H¸ €†s(g%ð ø~(‚8‡qø{àX{h…è„r€4P€4è† Hƒ}Ð9yðÈ„zÀ{ø8{HƒøZð{X‚ð{°è†%h€L@Ã%X~@~Sh€?(X{Hðø‚s(_%ð ø{( øƒqP{@{X…r°€4h€4þè† Hƒ}X˜|øƒ%°}°‡?x?~`Az¬G{¼G|ÌGžã‡E€’°Sà}ôÀ‚°‡Gð}°@€Tp‡"€h€è†%Ø4ð°rX ¸Hƒ|h~¸4€h€ xø‚%(øƒ ø‚j5Pjày(›[…@ Z° ð X_ x h€p‡;@€~ø‚€ ø‚rð°ø°D@€è{€{° €øax °øƒ°GX„ €jàþy(›û‡4°€%øƒ ð XyøP(‚€h€è†n¸ xXø‚€ ø‚rð °ø€?@膅¡†8~ØPX‚r°‡Ç^üãÇÏž” öä@ø’~,IcáÏ" Òþñ“Æ’ KFH±Dņnü&IHóÇBšG,,ñ€–0 –|9ǯ,W~>îã¿…üx#OŽ\0?PEøÉ[‚à•»" T@ØÐ톾,0Á‹r_ ŒgC~t¨øÀ *|YR¤ÈŸ _„© Az¾È#s ñ£i¨ÀK  ‚ XÆþ™4ÀI&l0BÞl%Í@P?>X€_”³éý1‚lF, H (` ñó>|À 0Âlð… H†/Hž3 ñ³Ê ãüƒO9_¬b?X‘Y¦™g¢™¦šk²Ù¦›o¹`E ‡`ölðE+X2B9#,ÁϤƒ?>¼°`„X ‹ÈÃÏ#ø"Aòð“=ˆX `¤1I¾ÈC Ⱦس"òðÓ i@à‹<ü@ð‡qžyÁ‡Àòð¬²Ë.Ë?ÿ8ËO>ݸÃO>ÎÚ“?Ò”Ã>üäcþ/öðÓ³=ÊSNå Ûc7åØ#™‚ÙÜ<ütcO»ò8»L9ú˜ÉO>‚å#X>üØ“Ï=üäc/öÈÃ<üäÃOå(™üìcO>èŽSN>–Ó.?Ôt“Uã¼ð ?ÿìs`ÌÒ\³Í7ã|s>>ðÅ<úØ3ÂòŒ€€õŒ°D>_Œ`VüñCüüaÁ"øò?¾H «,ÄO>‹H@Í?üHF&,#0 ¬²= Ð" #Ø`à ¤!3ÿðcAü¤±69ÿÃ- Çðƒ¸ä9óÓ? EûO´‚-ÄÜ?‚‘ÉCüìó` 9û?ùìþ³?g ö?ÿð“?Wñ³`û¤ÉUÌ-äì?üüÃÏ?ü0ÄÏ?ü˜ÉÏ?ü0$Ø?ü\ÅÏBÌYåÎ+ù0$Øä߃¾øjòó‡i ?ölð?‹HàŽ=*,ÁϤƒ?>¼À?_l ð…`–!/@€üø‡`aiÆiÈœÁa4`ò°G|‹¤!–È(þ`iÆiàG6à ÄucÎ ì¡ñá0‡8ã‡{È,~üƒ>"‹È&~HcrÈÇ Fà–|öp>ì1‚%äã #°Vøá,įhÀÊÑPüC¤À$þ €~üòx„œÁyH ™€€4ä!Œ¤Böh€/Ê!Eð£@刄¤ñ~X ü€Ãº¬2Ùc À @€3€Aü¸$)KÙ¦x€!X©>Þ´yèÔ²œ%-kiË[â2—ºÌe>¤0‚rðà 86ðÁ,$#X?¾Ð€? ‹8ÇBþÁ"X šKhÀÜò‚Ðâ*xA9¾ LŒ" ™ðEÒŠ/ €€3ø!ŒŒ"öh-øñ ,‚“XB$$ ÁX üÈD‘ {T3¢(E#úˆ€“ØÀFQŽŠ‚4¤")IKþ*Rh,„´xÁ8$Ê{¤"¥(?¨ñ_Ìt¢çPGN{êÓŸ5¨B*Q‹jÔ£"5©J *?ŽáƒUüC0°A9–ð~T3VH?î°l`* F5ù‘ Œ`Kx„=òQr,a#XB7þQŽ4l`7 …<þ` ¤Áh… ºqr¨Àù°‡ „±r¤!¯#H)nÐð£øG9–°œC©ü p€ |ÝÈ?–êÚ׎ƒ*°Ç?ìQ„Iðã`8ÂRq14@c !¬Ð‡#haZ Å+¸ŒnÐ E€-–€¬\h-´Ðþ‹^Œ røA$h¡…%àÁ¦ðA,êñÚ÷Â7¾ò/}ëkß2g!Ìч[úQÍh¸šÎÊG>äÁ…ìC0å†<ø±ÁØ£ò`Ž;Ê‘y`X0ûàG>þ±|ðãûŒ=œQ~ȃ L?þÁ{tÃûˆ(klcÛÃ#HÃ+ìÁœ9ÈB2‘‹d~ŒÂR?ò‘‰؃ˆÀ$Òð‡q<>˜„0h Üa¾0À^ÑBA©àÄ|‘|Âh€hÑ€Htc (‚| /dB°G$Tðr9ÑŠ^4£íèGC:Ò’ž4¥+mdþ~ܘCŒùñ~,D0 ÙÇ?øÑ}äƒ áG>îñ~T“ÕäÇ?øAã}¦šü°1?ò±~Lšãè†=˜céc› °ÀìÁ~Øã¦L,$`/ƒåØ@“¤öþ |à‡<|!aHÀüÒP ö²Ÿ=“eüa üX?Ê1Š?ŒÂûà‡4þÀ i¼¢ˆ…=øá‹?Tc¾pG,þ€_¼ÃÂøÃ(Üá‹?øÂ¾(Ç$FŠrØ£¤ C&Ê!ràãÑòŸ?ýëoÿûã?ÿúß?ÿûïÿÿ`Î?ÈÃ,CDþñ†ñC>üC´È€åƒ>?,€ÉC>؃>0Gëì†åÃ>ðÃ>ðƒ’` šà ¢` ªà ²` ºà?0G£ñCñCDñCñÃBF5ñà úàa áa¶ ?a*á2a:áB!éX‚ýA D,„„Œ‘µÃðÃ(¼€=äƒH€)ÐÂHAÐÂH€6ðÃ1H@,„<Œd‚=Á Ä ø8ŒÀø'Œ@$H@¬B7ðƒ/|C7lÀ€‚Ð0€¤A¬-Á ä‚£‰äH’dIšäI¢dJªäJ²dKºäKÂdL®ä+XÀ؃>üC>¼'ðƒ=l€È?tà ؀TÓ+à@0Ù>àÃaA DÔ"Ð@ Â_JædR&?ȃ/ÄB>ŒÂ ØÃ>ØÃ l9ØC9ÁØC, €/äƒ0@@Ü?ÈC' À"”ÃÜÀ+¼B,øÜÁ;¸…=ŒÀÔC=ôƒ<üø‚/4À"ØÃ A7€)”LB,ø€øB>üCwzçw‚gxŠçx’gyšçy¢gzªçz²g{ºç{Âg|ÊçzR?HCCwòƒ/¤3œ'?øBPCxþò!€wòÃ8¬|?€'>€C{Jè„Rh…Zè…b¨x †=p à ¼?ä?¼ÂŒ@¼"lÀŒÀØÃ#øÀlÀŒCبÀÐÜ@,A9|Aø€|A7,ø@&ðÃŒÜÀ,Á,ø"@¤Áø€ €‚<ðC†‚i˜Šé˜’i™šé™R¨2¬D1HtÃÈAHÃ?€Â¤"Œ2äÂHÁ"ØC*XA hÃ`Áü=pdÂL>ȃ3X@üÃ;D‚|A.؃üA7Th¨Šê¨’j©šêwòC>¸!Aþ>ðÃ?F7Œ‚%ø‚=”Ã$¼‚[”Ãr.§=”ÃrÆB9ØC5dÂ(,ƒ=¸ƒ0<Â*Hƒ=¸(¼‚=ðÃrÆB5tC9ø‚%HC>tC.äB9ÄB9Œƒ`œj¹šë¹¢kºªëº–«=üÁ ¤8HC À<‚7ÄB À+ð"4ÀŒÀ<|A$H€%øÂ @t5ø'¤ø'À,,?,ƒ|?üpÂX€=ü@*໪ìʲ¬¨ê?<‚0ðCwFË>àƒ>Æ?èC>0GëØƒ`ìC=ÜÃ>ðƒðƒ<8Ë>ä>ØþC>´lÖjíÖrm×–«=¤dB>ðƒ<ø‚p?`Ø$ À+ð(ÜÀ| ,øÀ@@ȃ%@€/ðƒ<üÁ¼@ÄB&@>Hp?Hƒ¤A>¼@|A @7ðƒ=üü×rnçª+s€'?t'?ü?t'?t'?€'?t'?üƒ`ü?|'?x'?ü?ü?t'?t'?˜ç=œÃ>xîðoño©òÃ8È üA>ðƒ/@@'ðÃ?ðÃ$ À+ð(ÜÀÈÁ |¤A'tB9Ø'H€/ðƒ/ ÀüøB&?@¼?Hƒ|?؈o'¸Eþ¨"؃>op…ÞoáAw>o‚„*ä‚„ C¼´Ã?,àCxo±ÁwvŒAxöBdØ‚©>(ƒhÃËð o­`ÈÃ1,ÁÔC9lÀ |0Ð @'?ŒÃ+lÀ ü?HC$4@ ç9üA/t'?ÃÄB{Úà ܀4¤=ðÃ,A>€ç>Ø-ŒÀ|§=Ø€€'?XÂtƒþpÂyrÂ# '?HÁÐBØÃ<ÄÃãr.ëò.óò„ †=Ã>ä-¤(Ø'DÂ$LB5¤‚/Tƒ0¼B5,'¤"ƒ`d¬B9p¬B&Tƒ4DûB?øB$<Â$dB9øÂÈA'”ƒ2Ø?ôr=Ûó=ê>Ä tC6üAÈ2ìÃ(¬Á#Ø?äüÀ?Æ1H@ðÃ?¨Ã"¬A&àƒ>´”Á",Ã4À,Â5Œ",‚4ðÃ?\C°A08Ã"ØÈA<|'?œÃH€ ,‚0ŒC4MB>üÃ>ÐÂüA7ä?ØÀt§>DBX€ð>@5>ðþƒ/,;,Á+(³)¤A.üÃ=,ÂŒÂ9€ÂX"Ä?¨Ã"¬%àÃ?@ƒ”Á"Ø"ÐA9Ä?ÐÂdÃwòu_ûõ_v` ö`vaöa#vb+öb+6?üC´`˜[àC>Ô?ØC=è†E‹<0†É>è€É?`˜`x6?üƒ`ü?0vk»ökÃvlËö_óC1|Á €-@ÀD‚ ÈÁH"Œ@ ðƒ=Œ€ t'?,ƒ¤Á?؃¼ÀXȰï¤Â À ¤A9¬B @$èƒ=XÀ¤ü4@ À"|ç>ØC4€ Ð0¸C$¨Ü?þ,üAl€=ðà lÀ?äCHX€‚ 8¸ tƒ`ì?äÀXÀ؃ŒÀHÀ,ÂH@t‚=ø€ üÜA>ŒÀ  H?äƒ>ü?䨜bóxûøy ùy` FwòÃ>ü?t§`6?ð5?x'?y•[ù•cy–óx,lÀ”C>|AÈ?øÂ+¨ÀÈ'@7䃃w'?ƒ¤Á?øBø€Œ€X@È?p‚;8ƒüÁ?ØC>¬B<?pBø‚;lÀ4À”äwöƒ`ŒÃ¤<üƒ`,ØC>ØüÁþ@7ðƒ lÀ?ØÃ|<ø€ø‚2O‚%؃w †@@9ȃü<|”C¨€<üƒ/4À ÐÁØ@>Ø€|A&¸CwòÃ?F>ÐÂø4hù·ƒ{¸‹û¸“;bóC¹£{º«{aóƒF>”ƒüAwÊC*(@$ðC' -ØÃ,ÈA7Œ@ð5?”ÃÀÁ?ðÃ?ðÃ@À=ðà 4€ÂÛ?¼Àðƒ7lÀðƒHÀ$ év?x'?¤ðÃ@€/XÀðþÃH€= ì?øBøû‚‚<ŒÂ¨ô_óÃ2, B>¬{Ú«ýÚ³ýóCl–OC lÁ`¿AìÂü‚(`ƒ<È*ü‚'`Â/äÃ?|ƒ¸‚!t; ¶=ÈC?tg?tÁô8 ˆÁ/è@5tç.ì:üC¼Á.Á7yé¶`HC¼À$H@ ‚˜ÂXÀ$øÀ H"èù"Pƒ/¤AøÀ#”ƒŒ€Â/¤!ÈA7tÃÜÀøÂ(|,Á(”ƒ,ÁlÀ €´‚,=ìƒwžÃ@€L?œÃ#¨ ‚0ü¤Á"ÀÁ*<Â@À"þÃ@À4”ƒ3D9gÎòý3ø/ß´– ðµD…¥iø}iðgQ9þt,÷‚Î ¾øüçëÅŸr&Y¶tùfL™3iÖ´ygN;yºäW­§AO˜‚¾”§CÇÌ.gpÀ¢K¹:QvQ«ß¿j(pªÂç¦9î ò …ɦÉ6[†U÷› ßþ]iS :qiùöµÉO^,{¾Ò,‘sÌÝ£% •Kó8M¹Uåt+÷gÉNî}ù‚¨¼T_Ò”›ù=_i¾d*÷'Í«4Àñ3ÈoÇôÙƒœÆW¹Q_–üñõÛW·Ç‘ÒtË·?ƒÓíýIþÃéOaåþ,ùcŸ´Ç±þ•C´$M'{™¾,‰doú?}å–éûÇ/~~ýûù÷÷ÿÀÀ <Áããg—(á§–3® "”9ºˆâ wd9ãŒ7”ä 1òPâ’dêƒÄÉã 1~Ù$Œ:ÄP"™üÜi¤‹+®øf3®ÈãlÂpBþ1æŒ+Þ(ç›iœÄæWXù†d¸ –RÚèÇŒøù§y ù—KôEŒ7ÎP¢”7¶P‚wÑA1y¦1ù:ÚÈ#ˆPܤŠ*”øå'§Áæ\Dù¦Ž~ä1£ ¾éV°Dœ( ùæŸPE•ÔRþM=ÕTS.ŸVóáçŸèìáGŸ|¢ãg{nÝUž^oµÇ~þ‰.ŸòÙõŸèäiÕž|䉮ŸQw6:y¢ëU~ä¹Už]åáÕ[±•çŸ[ûù':{¢Û‡Ÿ^w•'ºR£S•Þzí½ß|õÝ—ß~ýý7ÕròØw’ù_Þ8ã V ù@l”pàŒ+Þ0ƒ.Ú£œ]dØáŸ|Þ˜¡–.fxÆ øØ•QóÙÃVj‘¡–'¢`%1¶ÐÁv@g‡.X‘A(@8Ú‰Pû‰î ¢‚’7þQCRûù§ŸR§‘á‚9ŒÈCŒZÚ™_ªø“_ÊÁE†þÉg‹þ òˆR>@E†*°éâht5ºPQ‰‚— °•Ÿ’éB‰Zúò{§•|ùõVQù •ŸSùù':zù¡—Rùù‡ùù‡Ÿn%•ŸQùA•ŸÈm¿÷Üuß=ryºa~þDƒiþA›FºBVþƒ…oøé ¦é‡ŸPСŸoX¡‹ *øG%äù‡ŸQË‘¡ ~þ©¦Dá§ @0¤ t¨EƒºH ÏøÅ“ÁR!¡2Âþq†ü#ß自Œt䣀èÂ>ÀŒ~ÔAâèG¨€0~üã 2øGXàŠÈboÇ4ø cþª)¸BRñãå8ƒj‘/#‰I,?”ØD':‘O”â©XE+^‹¥#v0{4¿àG>’qC`â®àGXP~ð˜?úÑyì`ü(ÇtP ?òCN(?HµŽ ì@üÇ3@P{ˆá ȃ;ò ˆÁ»¨C8ÙRõ#ÏÀ„ÌÀ3è€Ø(„=RÅ ì ýÀ„PQãyÁ7òÑ|AüèÇRÀ:€àAØÁª!=p2 b •8 ñ†0\¥ªFœÀ {8œá¬×nÐZˆÓˆÊ€B0àÐ|Ðþk§ ”1BìCTÚ8ÐÙOþ è@ÿQG~LC y(Ç@Ð…(ÌáJP‚öà hà ÃØÅ PWüÃaø€Ä€‹P€À ]¸B4ð5LcTÑa v%Lƒ,0 <Ñ¡ øF@°…-¼ÿ臩ŒC ã gp… 4 †-tA©’Ä*†d„â[ØBÁM\ sF> 0°ð„ 4@‰PA ”Ç?úaª~„ªTp€#FÅl\uTÕbÛXǪ*ªâ‡4Nðã±™M?|ae! üH?^!{èƒþTüˆÅ¤aƒ?ð#TùxÌ8ö¡YÛÞ·¹ÕínyÛ[ßþVTùÀF?ÄQ GÔ¸ðÄ0vñŒgø±âÀ†,üX £²ðc9øa L„‚¿ð#/ÐQª~<#”Ø…<ÖQ J#â(E-ŒQ y¸ã’(Å4ò*qà"ù¨6ªÝZL£T¤2†qQy¸ƨ6þ!V”bâ006vQ‹i좎A)Ä`‚r$˜Tߨ.¦Aª||ãü@ñŒi\cߨÆöX„ äÀ†VôB·è´ÀeüC£h@&ºÑ‡N\C­ø4ä …E܃T½`Ã(´°udb þVHÇ=ºñ…rüa“`Ã(¤ðˆ{Ä\ÀC7:á”aõh!¾ ‡ntã å¸C'D øâ Ž9ÝiOÔ¡õ¨I]jS‡ºÿàG?HUÇð#TüøG?þÁ~ˆŠ¡ªc?DÅPõãýH0?DÅPõ#Tü ?úñ~üƒ7æG?DÕèôãÆü?úñ~ˆªü臨úñ~ü£ÿàÇ?ú! (!|°?hÌÔ‘TÑéÇ©ù=j~´¢E E` _ŒÀrHÃ($°„耜(ÇŠÐ |ÁþXÂ"$°~ˆŠÒÀ–€Pá@@&"Ñ€X`ˆ°À!I˜b#ØÀLÁÜêðÁ $° 8l`*xÁ(|Ѐ4tÂ_ØÀ$^pyüãV¡âÇÒ g,á¦ÀG¿É^v³ŸíiWû¨ú!*~ŒŠkÇ1?>͹'˜òÀ†1°!~„ªîȇ§ùq÷µ÷ƒøÂ8äá üa_°G9Òðøàò E2ñøÀø‚)àƒ4X` ¤âQ üai(‘ ,á >XŠ |¤)@Ñ ~ˆŠ£@9LÑ€XŒ@ òˆþÊñ tƒÒØÀÒp”Š´xA7¢cE €†WÿúÙß~÷—Š¢N†Ä`ˆRåƒs û7 áŽP•ÃСý Á FèF¥D¥A ÄÖNJÆÜþòÀîŽòáT ºA|@nÀΡF TÀ¢€øÁ|À6à La¾à&ÁøaTø2¡, ,` "Ál` ÒÀ–`¾à&ÁhÁªÐ|D…@ðáàF` ø! èÀººaF Ï8H%–àøáìáFàºÞÏÿþ±ßòj¬\AtàäÁD¥Þ H¥XATj!òÓìá þ á ò¡ÓF±Tvaäá ÁFe0áÚÅA’~Á0aHqÆúDÅ”@hLdá *àþAòAG‘ò¡Ò`øaÀìÁ|`ÒFÀa  ¡ ÀÀÊÁ6à1þ FÅ` &||`  þྠnà F`ãÊÁÜ¡ÀÁF…Ò&! àþÀþà–@2¾@Ê$à CF…|aºáì! þ–àòJÅ%_&cR&g’&kÒ&o'sR'w’'{Ò'Cø€jaÜAXÁ6¡j¡xáø!tà\á Ð!TøÁ4àaÜR@6ád!P€páDaBÜá¾Á¾ATú!tàBE€`†!¾áŒ0¡þáPD¡þad!B%T~ažÁJ!þÁÜ!6\Œ¡¢¡D’p¡þP  BÅ¡Ê!j! 4ÀjA$á¶`°Á1S\aÐáúÁdAj°!þTÊ¡ø Tø¡ºà6á~AÄÁ6\¡’áÞ Äá(ì!8ß>ãS>ás¢ÃøÁþ@¢ãè:áìþþ |! "!"ÁÊa¾àb!B%:„áÁþ:! Œ@¡2¡hÁL¡á þÀìô!:Þ“FáHa¡ì!¾`ÆìáÒ òAFá1:Á‚Ó–`øaìáäæSJ§”J«ÔJ¯K³TK·”K»ÔK¿ôKÑ!v`ÐAàöP! `‚@ ò¡€`þ¡ò`$ÁþþÁ  X`ª¡@Àê@(a*`0áXຠÂàPADÁ1ù! ¡þö`ò¡@`aPÁ! 6ÁÚà ä!8]R4€J¡A v€€À€`êàt@ÚBÁ¢`X þ¡@à þÁ@À¶`Äáf@ê`¦á * êÀÞS”@0a€ÀŒ>àDAdXàÜ‚à Ä!T°A¦!@<á\atÀ€@áæàÄá¾A v@ì!8/c3Vc1–Z¢[ne\äz%:þòa°…úÁ1£#dóÁô!êÁ÷¡Wø[¢ccÿ!:z%êᦥ:Vv%Tøá¾ :úáø!g›ÖiŸj£Vj§–j«Öj¯k³Vk76ª@jAþa@0ž.àÄÁø!€@þ!:X!ºà áÊÁ@ þ!œàúáÄ`ä¡þª@ÄÐp¡àBÅ‚`þáXà 4  Ú@®@ºà ª”຀‚“°\!>€®`þa`Äž¦áò@ÄáJÊ*`ú@  úAþ >ÀÞÀ¾áÞ€ø!Tª !ceAJ¡Ða> ì! ‚ dà t„Ì€XAB…á ò¡ pá\áºÀ¦¦Þ Ä¡ø¡.Á¢Ö˜š–œ–B…B%:ö!8ùáC%:2– öV:˜„KØ„O…SX…W˜…[Øùᢠ páxÊ@à A°úáòv T¦¡ € òÁ4 $AÐᔀ þþÁ t@BeÄàÔä¡xABÅ®ÀøáøA ¡B. @€@œ@þá4@‚€j!TváþáàžáJ! và˜\á Xàsd þ¡€\A¦á¦ÁÞ Œ@  Aþá dÀ1± Á1¿aÐáXÁB!TvD¡®@\aÚà ®`˜á ¢@B¥‚`øájÁ\á ¾Á1çàÄáøa8)úÁ…Ãù„ùacùAœÏYìîáœÛÙßžãùûáЂ ~ÁÔ@*`®ÀáþáDL@6!¡ø!ÎÀ~á .Àøá P€P¡êà$þaþv€d`ú*þ\!Ð!T¦a¦Á1€$Á’¡ P`@ú‚`*àBå¶€d¡4À.¡Bá dÀ€@$BÅ*€.a Á\$¡” ¡A !vA >@ÊáÄa” ~¡$áj¡ÐAfà0Át@ PA‚à Î ö€Ða‚€ä¡ Þ€þ¡  ¢À(a€ (áì!¢@(!6!6¡œÖµ1và€š–b !T°@J \»ð!8-! áµ‹Û¸û¸ù¡þìa¾ º£[º§›º«Ûº¯»£û†á (a¡ æà jᘡ æà Ú¦úáøæ@øà vážá Ú`þáÚà Xt€¶ Ðá˜á Œáä! Bþ!ÄÀúÁ1EAžä¡(¡ø@þXÁ ÁB¥0áPaöހ亠 ¦æà ÞÀBEÞ@ J!Þ€á XÞ`rüPA ¶`¦æà Úþd! ÚþøBåá Π¦¡¶@úÁ(ÁÈCÁìáú¡vþavàSº øÃç Çar¼ Þ€†áú¡°;îáøAF@r–ÀÁ þºá œÖÒ`“|! º¡iß²[Õ›6¾l V]ÖgÖkÝÖoÝiù!TúúB¥.vBÑ/¶ø!Tøáúúþú!úá°døÁ1û!TpÁ ìáú!¶@‚“þ¡B¥0¶þ¡.у³¢£øAcù¡ø!Túþ¡B%:þ¡B¥W¢£B¥B%:ò“þúáúÁø¡þìþþBÑûÁ1ùáÁø!Tú!ì¡øáúAcûáø!»ÏáT þÁ–€òá"A –€ ”˜ ‚!:–AÒà¢Ã`ø¡Ò` ÆþÁà€ Žà1`Æ€þ£ø!¸€ !LÁ á¾@l Ú!TæžîëÞîïïó^ïõžþ2aà¡öÞðñ_ñŸñßñò#_òûò¾ Ÿè>:æ¾øá¾¡D¡ò¾B%:螟ôžB¥þê~ðžæž$ÿøaîýð½î£Cïù÷éžhÁþ–Àò^Aì!þ@,Á6à À¤ÀºŽAÒ Täa ìa ^À^` ìa|`aþ@l`–bá @Æa–à à| ¼øÒà•)EŠý[Ȱ¡Ã‡#Jœ8‘Ÿ4 HsŽ¢Ç CŠI²¤É“(SªdÈ/$?‡ü"þã÷_?™8#æ+—'?œü òˑѣHeòKÊâ« Kºñû—ïÆ"~öFÜÇOØ‹òœ0ů˜„4üþñ3Õ`Ò1¾ŒØ` A'yù„•ñEÞ?~üþ f B*y>THЪ\ƒLòÆÝ°þìŸå˘3kÞ̹³ç΀‹dÌ"ؾϨS«^ͺµë×°cËžM{¶tÀ+Ê@À‰3Eø°J>œµèâ‹0Æh?@Y‰Œ<öèã@)äDidfù”3$:ù\öÍ Q”Ç Õ¼ˆÉ%–¡óA—U³Il&Ï3¸S6ßòþ gå€B9–õÃÇ›•S WXÆ uùeüÔQÇòÈs¤€åɼ` `ùŒb Vøð‡_¼°„=™,À_Œó‡Ø@G,±Äå,ÑÀR|áM,‘É?_¼À‹1ÂÄ Kü1@*<"?‡6û"?Þ QÀ8Îf«í¶Üvëí‹ýT£F"¬RË¡¸ƒIm„ÂO(¬ÂŠ!è$“ÇÃäSÈåôc”²Kò„2‡$蔳‰!¬ä&2¤ÀH-ÿ ð s Ó.8b6†¼QÊ:›ÈÀB"»Ló†aPòf®áÀ.ÿTþÃ#¡üó #”lòÆ/ý”3Ãÿ`Óˆ!¡üãÎ%˜„òÆ/ùÈ2 Õôc!oÔ‘Œeý|È–a£Ã4ɲK€¸# m"Ï/ž4"Š!Ï|cÈ¢äƒKÓðóí‹üÔSN$7äc`Â,ò(öøòG&Ý´SN'”›âÎ+ ŒÂ‰/ÞTóÇ"¯ÔãN+LŒ<Ý 2‰7òŒbÊ(øRN&ÐbO9 ¬âË(±HÃÏßÚîc @F#8üòÌ7ï|·å4² ëP€J|°K”œÂ0a ‚&lRÁƒ€ 6oŠ=ÿPQ… ®l ›è€D9¡8B&þ( P`Yð&èÂñ]| ÿ‡ ®àˆ4‚,`!pñ 5h` ŽÀFføQFè`ýø†'d„$#pBòÐqÈà ÿ(G(d0~ȃ Ø‚€ HB 2@‡#> ‰.Pâò¸DÎPŽðc{àG5ð-\@[0„!4€‰Rh@&H#tpI€`ò0ÄŽç]†ûàÇ|ÁË0òL>þ¨{ä0ÿŒ<ø!~àãù?þñG~ü£’ÿàG¡ ˜|ȃúÈÇ& Å;‰ûàŒg<,Á¦Œ¥,g9K{D!»èþÇ?xÁ€gìB¸ðÄ¢ ZÔA ;0Ä®à€9ðÁ¡ø‡<6‚7؃ ¢A”°ƒ0ðà @‡8Pˆ~<ÃNÂ?úñ¼:˜Ã?pñGüCØÂX y\á üèG?†ñRlFNEf ÈC@°Œ@€ q|ãåÁþÑì@–y äñ(A€¾QŠ ÁÕÈGX þcAÀÆ?úáFTƒ†ØÅºàGüBmè¶à€+äÁb° /fàlÄèªXÕ `4Ãðãüø?.ÃËðc3€Á `.Ã&«p«þ\[˜UÀxùB>ø1×¾úõ¯€ ¬`KجöãÆè‚\ñ]8 ÃЀ!ÀC€`sx6¡ƒ-8À”¸6øÁ œaý B2XÁì  ýØÄ!8âýøGŒpÔ;xÃ?~ñFðƒ%(ñ yDá –éÇ0>P Íôã,ˆB>ð‹Øc@øG?Ì‚oôãý@‡ ®p Ìàüxƒ þ1(¡Ë¥„<ªA‰6\ ÿ¨F‚€‰~ð# ޏÌ0 ¼AWØñ‹´á Wƒ°Ü]ðÃWˆ.øÁ™›øÄ—i)þP|âqÜá,ޱŒgLãטöа €6²‡Lä"ùÈHNò?ä #` ÀD#Ð ¼! ØÄÚ„KÈ  ˆ‚#ö€ CD¡öèG9t`t@Šñ1wûûß™áa_PÀÎð†;üáCæÇ?Ê‘ŒR b¢(D)‘‡P0¢¡àE)¦A \$bp3’~ü£âpD(äñ W¸#gh:Ä! CböøÇ4øÀ‡aLÃ…Ø…!.A‰B¢˜pG5(!@¸‚b,„=ú‘W¼èÈL-Q^¢Ó£=Q1>ãÃ(„ ± µâ”(D-ÄÈŒZ¼á ”øÆ3 qG|ãý°Œ=pÑ…K\fbÜ…!<Š9`¡¨…(vþ T”’ p lðãĨO½eœ±„bðcX‚=FÑ‹HÜ"ã ÅîŒzŒÂ´4LÁ‰`ü¡ÿðÅ$&q ~dƒÁˆ!ÔñLàðÅ”¡úî{ÿûàW=`þÁ|ð#ü(CF þö»ÿýð¿üçOÿú[¦˜á‡eúÁþ£˜ÑÿЀabýÿÐÿÀ–Á–Ñ–Ñÿ P›±ÿ–ÁýðýÀÿ°ùÀ&ÆÿÐüðýÀýð€üÐÿÐüðý ýpü PÿÐüЙÁÉpý`üðýðüЖÑþÿÐÿÐÿÀýðüðüÐü Pü`œÑ r `ü * ùà*° ð`#à E€K`ðP#`Ýà iiÀÒ  pð°i0i` tÐ ^X‰–xü`ü07€ûp‰¢8ФXЦ(Šüpbüpbüpý ûpý€üÐüýÀ%ÆÿÀ&Æ–ÁàÇœÁ©×©ÇýÀ›Á§h E üðü_`üðK0i0å ` iå` P¾« Ë i°þå0_°6P` üËà#Ð –q™ ¹ Ùù‘ Ç``Ð ‘¹‘Ù‘ù‘ ’"9’$ÉüP’ É ÉÉ(ù’0 ‘ü“)‘0iÐ ü * ü`_#` #ð_ åÀ t0ûp ð õPÿÀçð_à `6Ð ü00r`4Ù–ny€ñ>Ðoy—x™—z¹—‰ ’Ð!ù [@ |Y˜†y˜ Çð/° _ùÀùài0‘°K€™p à iРþP#° _`ÝP ÐE° Ò> P“ _ ã>°ÂÀˆù›ÉöÐ0°À™œÊ¹œmÉØpâ¿ ’âÀ¨ðüPüÀœÜÙ öà « Ý`ò  Õ‹ðKð_Ð i0>°å0 PKà ù0 _°_𦠰i°°åà öÞ©œûÀÒ €¾¡º¡ÊÉ`{`üÀoÏb ¡ð € [ ÃÀyà]P ¬P†]0 ¸uà ÿ ž o` è€ o@ þg mØÐ¥ÉùGiðù`€!ûü òòÀòà ð ö_  ôGò^Êîà*ð#ùÀRz˜€ñ€ñ/@{Z¨†z—è`@0å`Ӡ؀,вQð ]À bµÐ]É A@ Ó° 0ýà P gß° yµð@ öP’¾ú«À¬!Ù¦ü°ü`ü`öÀ € @ ÉÿÀ–ißðiÐ ö‘à®â:®ä®ü`_ðåÚ®îú®ð¯ò:þ¯ôêù (P ý`ýÐ|¥ µðè0 âÐf ð € Ï èðJ ßàòÐØmÐ@ mp ÿÀoÀßÐò€ P Ù².û²0³2;³4[³6{³5K¬$ü³ú`ü ü€³D[´Fk´€ #´ÐGû´PµR;µT µüP s°’`ÆØÐ¥à¬`ý°  €ÓP0 ÿJ åÐýðÏs`J𬠥ÿÀyðý`Ž ƒð U»¸ŒÛ¸Q ‹ÀGõÀêZp ÿþpkð7Ë–ÁŽ[º¦kü #Ð §ûº°»²k³Æp€ [`–áJop€@ Ð@p{° »ð¡`ðÓð®`0u@ pyµÐ Ž y`ÓÀ³{¾èK´íð–a>0 ɰö°ür€¾Àö`Ð/‹ê¾ µ€‘K üÀÁ7Ûòð ɰâpâP y@ ɰ˜Ð¸° ®à ¡ Æð¿ 'ü ÿ` ¡° ¡ è0 †¥P ¨€ ¢à è0 ò ÁBüÀÒPþ­ðü°>`£¾À±`‹°–€ÿ  k ÷à i`à ¾€ˆ@ ÿÀ ‹@ kÐ û°“Px¾°´€C|Ç-ËÞ 0 €Ç€ÈÜÿp ¬pýðüðüpýpýÀ–Ñ€ñý`ýð€ÑÉÉÙ‚<ÊÛ i0`ÿà *à ü °6´ð/ö_7° >€ÂP KÀi7àËÞð€ðö0 /`Ç@Êx Ê€ Å Íâ<ÎTK·ŒË Éä¼ÎFËÒðþ7à ü°üðK`ü0 0Ô™ RéÀ€å€à €¾ ݰKÀö0 Pr°åÐÝ ° ì Á€!Q÷PÒ,ÝÒÛž€ ÉOû |€ 0‹ ¢€ †Pÿð µ Ø€¥'üðè É€ ž EÛž€ 7+ ž€ † ü` µð –Q ¥P Œ€²ËùÐ 6°ËÀҠ üÐ ü°`üðÀÐ60ò°à üÐ °ü À“ Òà ð7 ü0r þ`ûàÒè öPñúÀÙ¤ÝÒýàFË]°U[( 0{a °»0[ÐWP @À—`ÿP (P uðùP³Éà ö`üÐWp³gp¸ åÐ;p@€ ÿ@fà PöP´8Ëòà  ´_ÿÀ£  ðð¾ðð _€K0_0` Âð ‹ðÐ i0« ðp ã°_° öâ½áÞá8ËÒÐÂàá&~â(žâ*¾âé”ÿà¬à”ð »@ Ž ÿð ¨P »@ µ€ þ®ð ”` ßP ¨° ù P îð ¨ð ¬p å Õ€ Ž î¬ ¿Àÿ€ `:ðòÀ € ý €Ïî [ Óÿp3Ж!Q žp 9 ¨° ²@ ÓP àÉÀ¿p € ¿ð ¨€ »ðò ¸ð ”P ÿ` Žà Ž0 ÙuÀ ;P (ßð€ð{Pàß0ÉÐ*Þ²t ¾0ÎÀÿÀÒ_ðÂPi i «ðiÀ ©ð_Ð iP¤p úi` ±°ðåà òÀ)žîêÎþá€4pë>ïô^ïöžâö° N°Óð A†o uÐ ð »°°2`Qp;°gP Œ @ðü@ ,À@Ю à ɬm°(0 s°uÀ’°(`°ö;(@ {°>_ÿ`òÐëP @ ÿÀîðg ÉîÀ^šÿà ) AÀu€ 2€ Ž  Ž0 Œ @ðî »ÀuA …àó[ÐÿòÀèð ðÏð]ð^ÊåÀ”€ð Tÿøù’oüþ ‹ðü`”€ñm*üॢ/úö¢òÀòÀòPK°i _ðü ù¶û¸Ÿûº¿û¼¿ûü`_øÐûÆüÈŸüÊ¿üÌßü¶/m ¡ ÿà ÿð ¥P ˜À ÿ É` €à¸€ µÐü:ðå°2à ]àÿ ; »ð ‰@ Á¯_£Z åëò!E~@t ûГ #¥] Åï¿ÿ\}(õ_Ç33:þãwR¥Ê ,°ýJÆŠR• ÉþÕ‘!î_?~@füë÷D95,6i@DŒ;Taâ×±þß¿|b* ©påd?®ÿ¦m‘±kåX²eÍ’å—veÚ³mËò+géO,{níÞÅ›Wï^¾ÓJ³`€¯¾… FœXñbÃÔ\ÙõoÐ…güþ}û°…Wÿ¤øö¯ ÕúýK dÇ?q2PÔýOFyiÿÝþWN‡’´ÿ† Ä…úÙ«B:sñéÒ%LÜ·}È÷ÿÊyÊW]üm#AÊýs¥¡ÎÆþÍ‘îv¿ :nŸ‘ѯ l3”̨EC¢ëâ ñú)‡VdàC<~ܹd‡7ܯB /Ä7~2ä°ÃöùGž´Òò°DOD1E-”gþØ€šg¤±FoÄ1GûáCte º¨%C0ä <©Æ‰J)§3.å›ÐÁEvùÆ <Áe“]@˜wÄËgŽ ©…’ix"™ºBC.H¡€¨¥Qvé³–aÄë'Œ<1¦f¢@aQÔÃgdH¡–rq•+>àå@*¥qp™…]¾é„jº¨Ì ~’é—_ÄëG YBÁñÊ# \øÑ±Øùù‡ŸÛø1¶YgŸå'Ÿ/à }žÅ6[m·5WþùEŒ Â`å '9£J¶`—W¶¸â Tþù…]vw‘Çþ%œhƒ-º8cñú±‡’(”CœjÎy~¡Â @Ì›9 By.äGC‚P콂~0d¤‹-Â`æ3¨(¤ Vþù¦‹((æŠ-®Ø5ºØ$:F@ØBÊÁŸ~Æd‡(jéG*Ød‹ÖáyÆã§~r$¾þxãG>yÜÒòÅ6PFyé§§¾zëqãg<~0ä'Ã~Äãç6~P/­~ȯ.-ñúá'C~¾¡D I¾ñôïÇ?ý÷ç¿ÿK”‡¨å|üÏ€D`¸@ ñÃD⇇øQ" V‚iù?úaAvЃaE8B~öð°ˆ|”Ð…¸iG.d8Æ£@-´ ,hã…?bÅ“ 3˜ÁãÉêàÂo·)‡!ÐABcÑ%üÆ(!ÄñÈ¢rGóà.–ÑŒgDãmøá  ÊH#ù!ŒlÂá>ìñl` Ø€/,pþŒ8’‹ù@G†Äá èàò°núÑ ˆ§¬ÀM-B‘åc€àÇ?úa3ðc„ýø*dòÃAPeù~”7îP‚,.Äy¸â øÆ?ä‘ Ó˜ÇDf2•¹Lf6әτ¦2ùñ´€Ž! ·á‡v ´ì ò ÐŽ]”7µ6n“Œ `ƒß`A*Ð…6èàþ 肾%T  ”èGuqfüƒ®àG>v„È#†P’Q (ÃH‚À^ðC„(±‹ AÃøÇRGØãoÐÀ.‚ ~TG@Å?Ð1‡xBQB-dp†+Df`+ä›=œ¡ÿ`*vWô£ &˜6°ñ7T@ÿè?6a5 £B×Ç~öµ¿}îwßûßøÅß}yDÂPÁ8Æ¿~ð˃?øQ_LǾÀ_4@®+‡W‚ è~¸ ~x(†êà_€càw(‡Xxè H{È~þ‡4h€qx~(‡%X‚s(‡n°€?ð {à{”Á¤Á´Á~ø‡_ˆ‚+Ø…Ø@‡Ki ¨®à‡|ø‡~x†.‚ZàC¨€À„@‡‚(À 1Ðy¸ƒ~8p‡r¨t¸ y¸‚P¸|8ƒ=¸ ~@ ˆ(… Ð'¨€Fà Ð HZ¸]x†~00Üè{Ø àVp@˜xtÀ1ø€+@‡P8qà H ¨†r1(*00‚rà‡iЀ8ƒ~ø‡oøtøTp€Rà‡ø…þ(…|¸‚¨…hƒ3¸L0†-ˆY¸i‚dø‡~`€RÀ…p…èø~¸7¨qø‡~†(ˆcà„Çx”Çy¤Çz´Ç{´GùûjÑ}ÀǤA~ {H@€?‡?°{X_ØxØoÀ ~ …~¸ ùó (‡E P °y€"X…|† @€øƒb° ° ˜„Q€€ðBÀy4Ê£DÊì‡rh …_p€6Ø À„+p€Dx†øQH(…PC@‡è5p€_8 0†Ø¸þTø‡9øJÀ„и˜~@… (…Ûp @‡Û˜†xÜØpH†.M`Wà0‚=Ѐg¸Ø‚Hx‚Ph„RÀ†M@(…=ÐJ  ¨Vˆ^¨%À… Ø…3ØqøQ`Cè‡ZP^¸‚ ¨† ˜Op€3ð›.Ѐ]¸F\øt˜ðL0„pT`F xƒ6¸‚=ø‡u¸„  „|xƒ9À  ‚(ÐJ0† øIø{(*¸JH†ML@‡~HÊÐ%Ð5Pyä‡nR8Е?Z@a x„n(þ‡ ~ ˆ„ ˆ{¸X†rˆ„ ð†Ûà‡(‡øƒêȇX€UØ€/wøàyð…?x ðyèPXø‚øgè†e({‡bx@KxÐ*Ð~¸o†r1 „7p„7ÓZèchƒ7hƒ6@…iȇÛà‡BxOàƒ7Ø~H†38ƒ]ø‡o83`…ØØC@‡~0†6H†°‡(…Û3„êO˜@‡Z làtàJ`c0y¸:À„ÛH†: ‚9Àc˜ƒ7HÓZ¨ƒ3 „7Ø…j„+PƒdøCØ3Ø~à‡]þ`tøl„+hƒaø>ȃix>(‡~؃.à‡ÛÀ…:˜~øl„*8T˜†:èJà‡Z ¹„FȇàtØ…iØoÀ IèGÈQ1}ƒap‡4}ƒ6@cø~HÊ‚5؃EØ„UØ£ä‡|ð€ †…]X~xp‡?€€r¨gØ€?à‡|ð Øwè†  ƒȇ?ØoàÜȇ"°€e¸ {øZ°€G€€LÖ%¸w`•…rH`]ø‚(‡|Ðh8‡n°~°‡HŠÅZ…å‡~ø~èÜÜèÜà‡~¨~¸ yà‡þÛè‡}àŠi˜~Zƒ|¸g¸y¨~¸ ~~A~¨Ž|°®ø‡~¸ ®à‡~¸ ~è~`½ {È~è‡PІè‡~è‡Û8@‡<1ø†Ûè‡ñ~à ~~ø‡~¸~¸ ~À ~0GÈÜèyè‡Öà‡Ûà‡êà‡~à‡¬uÞç…Þè=X~È9 ÀéÇ~øƒ"ø (~†P/xøƒ‡N€/È{øX‚"Ø€ ð†êà_P X) ð ðØ€%ð xw¸hƒHƒ/þ€G†úý‚%Ø€Xø‚€ƒ"_@Ê&áÆ ~ A~ Á~ A`½o…P@ì‡Ûè~8J~Á~VÜàxä‡~ø~è^…P¨Üè‡äw@…P@tˆG~¨A®~0á,Öâ-æâ.öbxV{°jÉ„/a~ˆ…/X‚?p›£…%ø‚Q°aV{øhV{Hƒ%ø_x{¸ ~ø`íB Á?ð…r@„rè†/X‚ExN°Sø‚%Hƒr¨‡eøä„ràh¸ƒ%ø‚G°_Hƒ%ø‚Qà3fåV¶A~˜A~~pe£ää‡Ûà‡~°A~þø‡~¨å`æa&æb¾Á}à‡ch€€\0æÖ|à‡؇Ö|°`å‡ÛÐæÛÐf{ÐfñÐf~È`Ý~ø‡qÖV{h}Ðæ|ÖÛÖ|°‡qÎ{à‡gæç/þ†PÀ^…(ˆLÀ ~Èb{Lpw…(0D‚6w¸|à@Ðby(cèçéixÖÖ? –¸‡‘þ``~m¦Am`½ ~¸ `Å m`ý~¸ `eia·r atȇê†Ø‚<`op0ƒ.V0¨…o`TA{0†.¨q¸~Èþ> áoÀ]tá|@‡¢–빦kyä{Xj¹|¨ëV懾ìÛè‡iPƒF`CÀ…7wÀ„:hƒPà‡Pp@`C@‡dȃ90~0@@‡~øtˆ%p‡rPƒ¨8ƒÛØ@x@@{`„7¨ƒdø‡o„7؃_0C0†R „opt „ià(T0„aÀC(…d0„]ø‡7¨€rø‡ihC(…pCÀ…7ð{ÈW˜@À~1e…|¸ {Ø#¸ ~ØJJLxƒdøWàƒ6„j „RpLp…ÀCxƒRø†.{ÀþÁ—ð §ð ·ð Çð ×p Ön€@_Øð'ñ7ñGñDG@(J`€ 0À#¸„3a`OÐ@0lh {`† ~è‡ÛÀ0ƒÛ@p (JGGø‡0˜KTØà…9ØtCp À~è(…* ‚g`cTø‡6øqø‡o‚¸%d„ „.]¨@`„-p‡¨…+ ‚]ø‡~(…(t è‚è‚ C ØØ ‚-pØIPp%þƒdè‡÷õ_ö`ö çy˜€‡göfwög‡v´*H]è‡ØÀ†]Ѐ]Ø„=P‚ Ø…< (¸€ (…~L6†`„êÀ8ƒÛ@ ¨Q¨#0„ià‡9¨€-h„rØ%ñè{ÐVȸ‚H†~ø† J8ƒ|è‡7¨€rà‡ȇ‚øx^p€Z0„0p\`¨ƒZȇR`7@‡Û(%(…à‡*wØ‚ ø‡Z„+¸@ÐCHBèVp€+àhƒ|À†0ø€Zˆöþ±'û²7û²ç{øjI|8û·‡û¸v~H†0PVø^`q0† 0 àƒBZ¨ƒ6‚MØ-p@ J¨~` lˆyÀj@3ø‡r%Øàƒj „7Ѐ7øcp*¸T`+pñ@Jøc3è¸(„à‡BІ~ø5øqø‡~‚ø(cЀZ‚ h|J(‡Ràƒq°‡FØB(‡@…((‡Û¸%à‡0Øo`-À„p„0p8ƒÆÿ…rˆ<@$Ùûgð „ 2lèð!þĈ'R¬hñ"FŒùÀm0€TÂ"G’,iò$Ê”*W²léòeB~òP)¹Ôˆ&C º8¨E¦-o€\b±ÇÄ•F|P%ª‚K^¿~¢4tÁÄ  ;%›a¤Î….…” ’1§Ÿ3”@°âgH«Øf %ãÒ/sÂ8ðô†(ýä9BrÐ.lŒP€hT‡¥FQúІQL:B‰ "Ž?lg”ˆ "Ë ¸(~é@ Ä•3ª $ƒRj:t24(Êlý`/nü8òäÊ—'Í/V 1¯ný:öì&û•{VÊЦR†P5šÊ®M¸JM£T+ 1þ’1+×Ïà?~®Þˆiäªw!†”SKŽ`rI2†œaÈ7ÿü²‡”DEIýà‡Ÿ=¨¨aF(ýübH)Ãâ ?åè€Ê?îRHoµ<Ó›!…PbÈ&¡ÂJ>²¼Ñ%Ó\ÒFÃôƒ_?¸PrE?¡CI!¸Â6¨¼‰$Œ4’Œ(ÉP‚ 6”ˆÁ‡+Ãôó?šy&šiª¹&›mºù&œqÊ9'uÚ‰&?ü¤Kès'  :(¡…úOTÿðóOžü\˜g?ûàÇAùÔÏ™üä“OžEõ?ÿðÓ?ÿäÙÏ?ýüÓ¨;€˜ Ä3föÃÏ?ýäùOžýüÃÏ?»(þ#yöÃAüôÃÏ?ýäiP?ÿðcP?üàÇO?øå•É”'~ýðÓÏ?ü\ÈÏ…üüÓOž‡ª».»íºû®™yÚcŸ“ì/¾ùê»o üœÉOüœÉÏ…üü#Ï/µÔRŽšü Ù8¬¸’Œšü¬ÉO?nòãf?gòc?üŠ<2É%Ó¹> €ǘü2Ì1Ÿ™Ì/€ºSÊ0ìöÃÏ?ýÌÉAü ÉÌE}4Ò‚6šç`C=„¶‚È;áƒ"“´ƒŸ) Ì Ö´úN7Ú˜MÎ>ÝLM›é˜mv:f¾‚H;éƒõ$긩O,ˆ¼¢Ï? >8á…~8âÿþä#x>[l’8äW#ÑçÓOä™k¾9ç{þ9è¡‹>:饛~:ê†óãŽ|"²Oéüü@7ç#Ç H8?>¼Ð9?´¤ÑÀ¢ó“‰7Œ°ÄöÄbA&óCG*¨PDúÎÏHx>rØ €4‘ó# KŒ’èí .O)ŒîIèÈó‹'¡<#Ï/¡x2Í7j±‹d”âϨ…1vQŠoLcµÀFàª! W C¿¨Å3XÁ GÔ‚îû C(Â’°„&Ê‘†¼àãðÁ Ò`ƒ4N7ðATðytcKà)^† øÀ¦ØÀlð_l@ Eø‚=Ç{¸ãèF9ñ d‚°À6°E|A_ØÀ*ì!øÀöPÁŠ _7ÁŠÁ9 @ÿÆ–P„xƒpø(GñÍÌõc,p:G‰+È£`Å?°Át°¢]Á3qZ<ÿ0 ¦Q‹dð£ xC>ªVðåà‡º L”ãs%Ö*ÚÑ’¶´¦=-jS»V~ØC |Z8Òð‚n.O#ðA9–°{`¾þ€(|€W”àGÐzäéà!° yøbü?Ò€{äc¦àG76°~€–¸Áº¤¡¾0E¾À Zðcpüø?ä°päi x?|a/Ø KhÀ&±"䉩N'¾€P«(þÀ94@üHƒ8ñøbƒë…6 ~¨6pü`ÅÚðŒÀ•#»ø‡( ‹ðõÁÄðgBÓ?ž°qü£ÿ˜æÐ hà fè:þÁ€:®ÆèBpáÍ1“¹Ìf>3šÓ¬æ5GŽöØ °Àˆãþ‡ ¤ð/XÀx-$Ð _ úÀø‘H#püxÁø‘tãù°ÇàøaØ£QüèÆ– HH EØ@7Ê‘†4àåHƒ ð|.OiA7ø!T(àï(ÇÒÀ¼" @_XÂþÁ"ø åÁ ÒNÔÀÇþÀ4 @üX¾ð…%,ƒƒ³G' ° 6 ®Gf€Š~¢ y†ª` ^Ô¨E>P 5h€åø6€0ƒ]¸ãâ`źŒ6TÉpE5ªÁ1TC˜ ÐÁî‘“¼ä&?9ÊSž~tb|âSþúa¸<À´Áø1q# ¾À("€Wã HE7ÔqŒXà–À„ÑŠ[ Ž‘€|a axãðÁ1–Ð_ØÀÒxDÊ1‚"¤â å(‚ ìQ8{|Á±à‡4:8c#Hó¾ C«°G7lð‚`øH"Q€"XÅ2¾€Stˆ„0Rq ~Žûà‡=°~¸Ï}ýàG5DQ<#pùàÅv JL# J˜ƒÔ`„ ƒ0¼À ¨À$¸Ã Ø€ ÜÀøÂ ØÀ ÜÀ(¬Â Œ€pÂàðƒ<€‚ Œ€¼B&ÜÞ@&ÜÀ | ¼‚/øÀø€/C¨À ˜Â>?€‚ ¼€ðCÜ€ ÜÀüÁLÂüÁTÃŒ€ ü=üÁ Ø@”èÀø@ƒª@$È ÚÀ ü<< Œ@ÐÂàäI1'¨è¬aáô ´= N?ˆC>ô?äƒ=ôCàäI?N?üC?äIàôCàÈC9ôC?ðCàðC?°¡#>"$F¢$N"þ%V¢%^"&®!?tà ¼ŸŒƒáðC7X€ ”ƒ=ä‰<”ƒ<ðƒ<ä‰Syš,òƒ<Ô"?äC7ä á4Ê8Ô¢<ä‰/Ö¢,:UžäƒSñCáxÚ?4J-òC0ÊÃ?ÔC>”ƒ=Èâ?ðC0þCž8U£ÈCžÈ?Ôb9ä áðƒ=ŒÀ¤A>d¢æ âàð""òèð;Þ#>æ£>î#?ö£?"Ž=”ÃðI$üáÌC9ÐAtCâä??N?NžNžðƒàðÃáðÃ?ðƒ>äÉ?ìÃ>ðÃáðƒàðÃ?ðÃáäÉ?ìÃàä âä?xÎ>äCFþ£Nî$Oöþ¤Oþ$PeâðÃ>àƒ=tƒ@¼ÜÜáðÃ>ä?ìâðCä°;L"?ü?èÃ?ðÃ?ðèì>àƒ>Î==D?|NžÎ>°<üd/ôÁ8ðd7°A$D(d4üÁ5P4@9N;ÐÂ+œCàC+¬Â5ÌÃ#ÐB/ ‚:¥e^&ff¦#ê?äÃ#@ÀËIÀ2\"xAæÜƒ9èƒæ4ƒƒ#ƒ è*ÜCàÀƒáèƒ9Ôƒ%ZCTB?¶CáðÃ#Œ€3ä‚ ¼(|;˜=„;܃9˜;„;ÜC82ü;˜;àƒ9°ƒ>˜7„C=°ƒ*x1°Cà°C8˜ƒ>?T‚ Â?èÀÂC8 ¨9ÀC8˜Ã?ÀC8pƒ9ÜÀÖVšƒd9Î>˜7„<ì;„C8ÀÃ?°ƒ9Àƒ9„;˜;˜C8à<„0pCà°C8˜ƒ>ì;˜<„ƒ9üƒ9pC8ÐCàÀƒ9èCçìƒ=,‚àC,Âä?€(‚=üƒ2€Â+Ðþ"Œ(@Ã"¼Bà("LÂ;Ü-€‚/LÂ#ÄÂHÀ#Ђ>4<ÂL‚:àÃ(B.ì?€ÂXÀüÃ<Œ!ÄBáðƒÐ0Ø€DÂàƒ|v«·~ë?æI7|Á€xÎ>¨BBØÁ,Ä A@B4ø?@BTB4ÄÁ'ØÁ@Â'A  Á!˜ƒ5Ø*ŽøÁ˜C8(B¸Á "dd„ƒ¸x*$ø9@ÂìC?üC%øÃ?ìƒ"Äþ.¸ 4CáœØTB3 L"˜Ã'xdA@ 41À‚x*üƒ5Ø*˜$ddÄœBàœDçØC,ø@,C7¨@øÀ,Ã?Ђ € l€ €BÀ*¼‚¤ ø@7L@€ @@Œ,ÁØÃàìÃ(lÀ¤øBŒ@X!È|AŒ€=, ¤,B0ÁAðƒ=ȃ=ØC>l€¤”Ã@@9؃A9H€8¢ön/÷v¯÷~/ø†¯øþ²ažØƒ%4äçôÃ>ƒ ÀB4¸,h‚ ¨1hÂ<°ƒd?XC|= A4X, ƒxA8œB<àƒdA4(BÔáXDC èB?Dƒ ‚57¸pÃ!„ƒ*Ã)*øÁDƒÌ‚>(BðCà°,$.ü=Lƒ&˜1$Á'Àƒ> N?DÌÂ<$Xƒ* ƒ LA8°Cx5(‚5xAC% >DCTB?øAD$A=˜ƒ Ä5B%$,À‚.ü?è‚"pÃæàÃlÀ$Ø?È)<Â4€/Èà €0ðƒ<,þøB9p‚= @,ðƒ/À+ÈÜ€=B9¤Á€? Î>ØÃ Ø?Èä‚ü=,X@ȃ Œ€/4ÀDÂØ' áLÂ?ðÃ?ðÃ?ȃP©ÀÜB@@0ðƒø€=ÄÂÀ¤?ü?ìCžØ!l@¨ÃøŽ39—³9Ÿ3:§3áä‰<Рä‚çXƒ „Ã?À@%œBpÃ>d$xÁ?À .(?DÄd;èBDƒ>Àƒ$ AèÃàì,d¸€&üƒ5¸€.ðƒ>ôƒ hB?ðÃ=(ÄAÌ2À@%;üƒ"xþÁ?܃5ôƒ.Ô1üÃ>|B$"Àƒ5$Á,ìáðÃ)Ô€5üC=°ƒ5 A A„?$ÜÃ?ô <üC?üƒ5$A%̃ðAÐC=¸€&ðC?„ÔèBàôÃ>ôCáìõ?ä‰/Ø@Ð?øB|A@€/ðà €0äÉX@7ØC7-ðC¤AŒ?Hp? ÀðÃ?ðl@7ðƒàäÉ8Œ€ d¤/HÀ#Èà ü<¨ÀÐØ@¤Á¤ó,Aü??lÀ”ƒ Ø€%4€0äƒ|Á28ƒ;¤ôBàðCàðÃ1Á þÐ?ðµx7y—·yŸ7z§·z¯7{··{¿7|Ç·|NžØ4¤w?ðC4¸@44ƒ Ì$2ÐÃ?è;xÁ°Ã=ÀL5üƒ47øÁ˜ƒ.$1X;ØÁX7D<?ÌC¨2 Ì1¸À)À>˜ƒ T;ðC4$Á'ÀÀ<¸ |B?ăL9Xƒ"„,Ô,`%$XÃ'$A3DC|7°Ãàô2À@%˜ƒ•VXƒ $5°CÄ9äô; C(B8øAX7X<„ƒ T<è1¨B8dA,è5¤7?”ÃþŒ@$L< (øÂ À#85Ü€pÂ9xüÁ"4À(üÄÂH€3ø@/؃<üALB&ÜÃàÈÃ4ÀÄ”ƒ Ü€/ŒÀŒÀül@9{5¬B&ø‚/Ð-ø‚àðƒ>؃A'X€¸CÐ)HÀ$ü¸"HÀ2 ?p‚ üÁ8ðC|¯;»·»»¿;¼Ç»¼ÏûzóCzóÃ?4ƒ dÁ‚*$ dÁ)üC3xAè‚9$ÔC>ÀBx$1pCL°C4 AxpÃà„C|?$|ÀÀB8Ä $˜þÃD 0”CÁ|A7ðC7, B> ?ä"ø€ XA7HÃØ@”ƒ/øÀÈÁtƒ3| ÜÀ”C-æ‰àðC>øóA¸ƒ=¤‚¼À#ȃ/, þø€/ðÃàð-”ƒ=ðC{—¿ùŸ?ú§¿ú¯?û·¿û¿zóƒ.¸€.˜Ã?ð"òÃ?ôIö?ô@üÛÇïß¿}ûâ±ÛÇß¿xììéÃ×¹‚ÿñÛ×ß>~îã×ï_¿‚ýð±ë‡¯_47~âõã·Oß>}úòõã·ó?xìøýë÷/>ŒûñÃg ÞÁzðúñëWß¿}ýöáÛ÷¯Ÿ¾~ýöáëÇ\¸‚ýøíÓ×¾pø ö çÅF»w îÔ+o_~òvÊÓËo€/òøýÛ)oç¿ÁÿøÉËgßÝöì픇Y/æÁùìÉã‡÷âàüöñ“goð8{üþìòË·tmÛ·qçÖ½›woß¿>œxqã?y©Äï"¿‚;1î¼øõ?»ûþñ+ø•Æ~ûìg›_¿}üØ)BãÇZÁÁ¤÷õ+Èïß×»üþõÛÙß¿}üþÙ© ~øÙç~0Ú§  â§¼øÙç¢|¢Ñåž»0Äh§‹ø¹‹»vòåLøÁˆŸ»ø)ˆŸ âGŸøùg§‹v*ˆŸ‚øaC~0Úé¢XäGÇ!‰,ÒÈ#‘LRÉ%™lÒÉ'¡ŒRÊ$ù釟}täçH~úÁh'»øÁŸ!wúg§}øé'C~0âgÊ‚øù‡Œøùg§»ø1Ÿ7ïz§—^Š Iþ~0Š'o.Ú #~0ÄGs0“’"Ûi§ uæ)¨{tÄG™kþ„FI Õ &QQMUÕUYmÕÕWa5Ih”‘UuðQ’ŒîQGx.J'u.â'Uh”‘Õ.~þáGÙø‘¦ $à‡EϹFŸ‚øñ:ø¹Ö.~|)âޏF\}®!GÜwùù¢uº¹á~¨¹áù9f„LŠPà~Þ½ hÔ)ˆŸQà„Ÿ‚!ŽXâ‰)®Øâ‹1ÎXã)æ§`~^Ø àv ¹§`~|¹ÁŒùye ±ç~8A`~îºu æÇ† 6ÎÆŽ#®‡RøÉÇ R'þ˜`Ú)(ž`r æhzÉ¥›}ºIcZ²á§›ch馠kzFŸw éš`Èáš} ÊG‚/ZiàŽ éE›‚æ &—bìñe„/”IçŸwŠ &²Q†œ^®¹–) e‘,áT¸ç¢sɦ ~–¸Cp6ðá"hz¹fŸôɦ—\®'˜\йÇS6øÃ{¨†–q zçiuÎq†œ§õQf”x.ªÞúë±Ï^ûí¹ïÞûïÁ_üñÉ/ßüó/êFrzéFe é&˜nÚYÆaþ¹F™kÞq¦›y ‘‹^œØÀ(¨t£ʨÇõø‘†,ó€†þ2¼ e@CÞ†2ðÑ`äBéP†2ÈÑ iŒã °Ç>ø! aÐÂQG/r {b€Æ;®w^ä‚ÿ°Ç2há‹ìãÊè†2‚ h€#ä(4zA |dCÝPF/ìáŒ,Aäø4r r„И‡ù°g/Œ`;ñþa/¼@V°G7¾ð‚"Œà#(ŠÐ4XÀ/Hƒ="±„ ,‚¾xFðˆe¨`h@$è ‚IèÅiÈ^Šø`´àÇFàŒ¢°À FÁ/¼àK‡$pƒø ÚãÇð‡%l üXÂþ, Œ‚Ã>èFA–¡‚nðÃðAAb1ŒÀüàÄŠpƒ",á>(|ñ‚ŒÀ¾ CF` ~äã /PÁ:±X¾XƾЋ,”¡ uèC!Q‰N”¢µèE1šQn”£ý?þ %@à¸F 4ã #ð?à 4,ãt… Š`/üaPÁº! Ü`èCùQ„%l Ôø‚T`¤A*°ÀºqØÀ‹ Vñ…"”ã àÇ?ø!‡"Œàü°ÇTppâØ€|±P~Øc>  áŒ/¨Àü°Ç6þ0‚ @À(B–ðZ¨À#ÈÄ60‚ @ K@nð_ŒÀ#øÃNþ0_tt¡øøCÒ`~üƒ>?,aHøì!?Db¾H„!4l ùà‡<|:Øã>à‡`Œ *X?|áƒЂ€€|@‹ ¤ÁEA>^0‚Wü¡åØ@òÁW Ô@ZS€¾€(?¾°,á Æ ¤Ñ€?tã #È„=ø‘{áü؇=Fp~tc_ȇ$ ŒüÁîXB&^a ¤AÂÀ"ìÁy€œà‡)@þ‹nH XB1,ð~ØC Ä9Xe)O™ÊU¶ò•±ÜP~øœèñdBÀŒ 6Àn àö°Á2ÊÁ _ø`嘄|l@iÀ=* ”£àÇ2w¤¡ð=ÒPŽN¼â xÄ Œ%ŒB_ØÀ?v"K `ÿ°‡Šà‹?”CxÄNšIЂ h?ìñ‚ „ A9þÃ0… –`/@@Ø@7î y¨` üÇ" ð‡N¼âüX¤!e~ä# x„= ÂH€w°@9ò¡€/Ø@;±‡0^pþ@ üHüQ~ørpǾÀP`*X‚=n°~tã è?$ð_X@X„<Òn€b x4º±4ìd†<6°SÀ¾@€/øq|0ôüøÂðp¸Á– ŒÀöøÇ>V¡{ìd#¸?–!?ðãøC"±“qÈaE€@ø! íó>ñ3?õ“çø¡`6 a`a|A,T`ÊaŠÀø,Àn@b¡F`–ÀŽÁ6@n@.bºaþ@6á`¾À–@6@ 0Ã6À6à Êá63&a$@FÀ |``¾ |À —ÀÀá ,À„¡ øáøÁ6`|ÀÒþÀTÀ$àá ÀŠ@¬ðìÁœóFá À|@þþÀH :a^`2a'îb$çvbQ5Ê2øa0£äAì¡äaQóÁÆþQåò¡u'ä!J•Q+µR»QË¡µìaQíÁøáUun@øá"úa'òAV5U b'ÊáVaþ!Uw¤¡T»¡äÊAJµìa'ä!òAöì¡V5U÷!QÑ5]Õu]Ùµ]Ýõ] 8"Áä¡Tÿ!Uÿ¡TËÁUìaþäÊ¡þvâ"œuawÂøAÊAøÁbá–àþ!Uóa'òa'äÁÜáôò¡ìŠäÁÊAvQå! `ìÁ[ùÁºÁYÿa'¼ÁvBºÁøáî¡F Ôu'j'.bœ¶ ø!ðþjQ oQÿaQ b'o' ‚þa' bQ b'ôA@Aú!ñøáø¡ øá"òAòaðø¡ vb¡ø¡ ø¡ øa¡øa¡õøaàuq·q÷q!÷ñø|àòçøáøÁðöa¡v‚¡v‚¡øaðøðø¡ì! –à œávâ"v¢þ vâøáòá•¡ø¡ ø¡ øáõ"øávâø! Š`øá"v¢ðøaø¡ vâ"ö^!"÷v"{Ó•oQÑu' Ö•þ¸7}Õw}Ù·}ÿQÿo'"7UÖ•äaQ ‚ ‚  o'Ü7ñðÆô]õÆáç!{sï@ÁÆÁðÈ¡ð¡ø¡€A8„Ex„Ù5hÁ]»A á¯Váþ oh@Aðá@aº„}øðøA¾@– Ö•ºá |à– xn”AÒ A ‚T`þäà` èà òá‡ÍøŒÑøŒùÁ6 ñÔAê!ñ–áŠ`áÀôðøa ºÁnà º!Ò`  O”¡Ò¸ðÞ,z¡VAðAVÁœá”lr¡Î!VöZAþa'|b BV!ðáô!V!háhÁb¡Ρ²Á^ájQÓ`ÀÁzáráæÁ¡î@ÔáÈáZáÀ¡‚Zᔡ´a ¡Š!LáöÁ–ÀVÁÎÁ|áø¡ ”a‚žæVáþþhÁháv"€ø¡ ô¡èà"|A„¡ºÁ^áþAZÁ”a”¡”¡¼áÒV¨È!’a:¦eº  ¡º¡ z! ¡ !ðyøAzAÒ¡ ¡‚ÁVº ŽáþVáâ¡øá 6À&áœa ,`œáŠ¡¨rᄟíá‚ázáâáÔ!^a|A,Àäáv¢ ø¡ ¡º¡”aÒ^þ¡ä &áðá ar!þLa aþ!zá@Xºa l€î þ^@^@F` œ“–@,àFÀ|@ ‹ @áÒÀþ„háøáT` Fàø!FÀà ¾À–þ@6`6Hçø! F „a6` bá`–@¨á|à–l@FÀÒà à ÀhA–`n Ò`ÀÒ@¾`|àø¡F` Fà¤^ ŠÀÒÀ–þàä¡`þìáF ¾@Ž@GFÁF` ^`þ`T`FàÆ¡l šŽ¡šzÐxÉ™¼Éþ |ÀT`|þFÀ¾à¾`n€ä à`là:á¬`–àF`là ºT T öa¡ø@ ºÁÒÀàà î F`F Ò` 6€Ža6``øá ^À àÊÁVá"ò¡ Šþ ^@F`–àlÀºáF`là À!T T –AŠà¾ÀøÁ `ªØýØ‘=Ù/"Ò`þÀø`V|Lá €ÒÀTà Fà À†äÁ¾`"!ŠhìA|@þ`ìÁŠ@`|:ÁþŠ@$ ºaÒ€ŠÒ`ÜÁ6ÀÊa¾€|A:Aø 8b! À|!ŽÀ:Á¾ŽAÒ`Êa'òAFàìAŠ@è`þ`Ê `|Á2Á–`':L!:a¾ð¡ |aÊ,ÀºaÒ 8ÁÒ þ`Ò`–€aaàä6à ´AÙé¾îíþîñ>ïõ~ïù¾ïýþïÿž|R¡€þ`L¡a'^`ø¡€ÊÁº¡,an`ÜÁ @äÁn`^! À.bþQ¿`$`ä! 6 vÂ` ìáì&^FÀºa¾ à"¡ºA, øávBÀøa¡øAh¾|¡@øa$ 0ÃF`Ò|Ò€@!øAþàøðÿžþ`þÀø Â‚I#Š,ià+ÍFøPd‰ Zÿº¥Ù0Iž0±øMÚð…_&ÒþXø"¡ÜŸ _6,ág!Í8iþÙ¼ÉΆnü6|§â ?_8ýã·d@‘%*Ê¥APŽŸ:µêÕ¬[»~ ;¶ìÙ´kÛŽÍÏ€nüüùƒ Ø?~Ä_Œà'oɈ?iìeÚðåÆ{“$øÒgoDƒ%E^è+ͯ[¹XTðK³œM~àäã—OÞ$­äm°bïÆyE^ø¸ÑN9¤r“>å4‰iüÀ1å °Çà#ò,A0ûŒ³AKaC9il Aóðc7ù¬Æb‹.ÚDœ3K¼à (cÊ_ 0J ˜òÅ*<2BDþò -ÅŒbÃåüc)LâÌ6lÐÍÈ3Š_€ÒÍ>øö@ðE9|1OiøHóžPcÁÝŒ°„=¾@@-Ý,2@'å¬â˘r? àÎ|€/_4à ?iHð -ê,£ÂÒ€SÄÝ|!Ató´ŒP„/‘O7 €H7òŒ“Æ‹ìCÊùüc_3¦ I ¤1Â7|‘†)üQ-´,aÃ+ò¼Èm·Þ~ n¸âŽKn¹æ²È/¬2 ™|1@*öè4#XàŒ=“ A7ù,!06lPŽ% L‹;KH@K9©ŒSš=/þ˜’/𓆱Ð24|Ñ ?ÿHóH³AåŒP„=iŒ†0ûHcA*üØ´4 XÂOiü¼@,« ˆøÁ$üL‚'´”³„´”“J*_”#ÅãðóÊ«¼vØ¥'Ï+™¤±A|ñ KŒðÇ,AŠ ¿0 œdòŠ=ÿÔSލ`à ¯,1 ´ÈóG/HÆøàà àMÈ>Ps?Ýø0Â/¤¡Âˆlàƒ3î|1‚å”óÞ7|1Â/dÂϤ±Ä_Œ ÂDÂO1#¨ -6l0 £”SÄ7ø²Äiø°Á$l@ù þÝ,ñÂ*|ñqËü‘‘üÃÏ+x/²Á åØ0Â*øPÄ#_üQD9¨0üaãàÇjˆÀ*p l ÁJp‚ ä‡/€·?pBPÁ"øá‹àí °‡ ¬`y¤b7X‚hQŽŒà Þ(Ç6@tã&û°T ø‚Ç ä@%l`_ ?– ‚ ¨ÀxûÃlPl@E9,À‰sìCö2a~¤aKøÂÒð‡Œ@öȇ=^0‚/œ£KØ€ |` ùàÇ+ *Ò&Ä‘qäIH–#’”Œ¤=Ü‘HþòÃ&ûÐG>ˆ#âð£òà‡=FàƒjXà ¯¥ìä#öÇ,ÿËHº£³´‡=fÉ}äÃåØ%q ÉHÚC°”‡(ÿËQØÀý¥<ˆ³{È£•„$?vin”ƒòàÇ"ß ÏxÊsžô¬çù ¢‘$Î?D™Qæƒ8ÿàG$ùa~SûÈ?ì1~Ø„8û Ž=¤‘ǘ³ÌÇ?D)~È–úpÆä` D¢ØÀ ¤ÑŽ%¨œà‡MlKJÚ£6!Ž1ÿ±âœÃ¢‡=øñ~tc¾àÇMŸ Õ¨JþuªT­ªMøñT~Ü”Oå‡Mð±~Ü”6!T‰cyLÂ7¸ƒ=l›òê7å‡Tù‘›ŠRªÄy*? º|Ç&üx*?öAœ¨îƒ6áU‰cL~Ü”R%ÎMùñYÒu³œí¬g? ÚЊv´¤-­i?ËH|á6áGT‰óT~T5ıÉ>þ!ʨŠÒ&ûÈqnÊð£ÿàÇTËñáù0æ8ì‘~¸öÈÇfùñ~Ü”8OåÇ>ˆóâØdå E>N‹ÞÐG´³ìGzùqS~”–¢åGgù±ð#½üí¯ÿ à x´û˜ª(ûaZ~@•þ8œåÇh‰#Yîã¦Ä -? Êðcªû ΀7Œ[Hõ™øðSùaâ–*n±‹_ ã{¶ØÀz!U~È8ÀÄy*qbüa|Ü”Eˆ? Ê%Œ`¦ F0l‚ KyÊT®²•¯ `âØƒx?° æ0ÓõøƒMø1 Ø#œˆ„-öaW´ÂüèÆ+h N(£¯€' a“^Lâ÷Æ+‚‹NtÃ#PÁ+ŽAˆUèCÌ”®´¥/iÒ-2 ê)ãcK¸/l⼂#ø‚,ЋnÀoùð…€· ! A6,1‚/l@þ“°€F H¤¡XÂ$Faƒ/tCS­¶µ¯ílk{ÛÜî¶·¿ îp‹{Üä.·¹ÏmX cè?Ð ïxË{ÞÝÎ6@{ˆK°?FÁ‰/4ÀÄ)þ!4 `åE&Ð _`#X‚<þ0wŒ`åàD7äñðCüèF6€z«|å,o¹Ë_󘫼7xA+dŽóœ¿œ¤PÁ„Áxã±àÇ86àƒ/4`òàG$ð~Èΰ?2ytˆØ@øñtc7x‡(_à›ðÃKxÁ+ø¡ó¸Ë}ît¯»Ýã= ø"wþï»ß«Íyt# #è?î°„|ðÃ@D` {à (†4¾€PØCœ€/þ€€r,aÝXº±øÂÿàÇ F@‹X<ât°?ÊûÜë~÷¼ï½ïüà ?¾À$ø!üä+ùß&Ž=¨a‰n¨`Ä‘Çlð…"ÈA7°Á nð¼À“à' ‚€ÂÝø‚ – Œ4ØÀE(Æ?ø±ŠØ`(‡=˜€(€H€h€ßÆ °` üp€ã&Jò_ÿ@òàò€L˜0 ö Jöàü ³ôÄaò@û Jƒþ1(ƒ3HƒÈ¾ð¯`¾Çƒ=èƒ?øT¢UüpSüpSüðTüði üðıû`üUüðü„Y¨…[È…]è…_†6AòÀah†g„üðTïÐ øpmü ÄUÄQnø  ä€mç@÷Ð øðï ï°úP…xû`ø€61êðà h(‰“H‰•h‰ÞvÚ 7¥ ÚÐ úpSä0Þ¦˜å¦÷pS÷Ð óðƒéÐ ä°—Xmüð ä–Ý ߯΀#pmüPE` Ð ´àKàË Kðið´Àù`wÀö°þ¿±ç@‹ßŽá(Ž?ÈiÙðü`6` 6Á/ÐÝÆ–ð°äÆ‹ðÔðü° ðü0nó  ÷0Uö0öÀ{å†Ð` û0Ð çðÝ «`ÿ Ý0ä ÝÐ í@ ã`ê Ù û@ÝpÙp ã /P ä Uíp Ð øðÝ ç`ݰ xóúÐ Ð0QÅAâ  6pÒ°´0 ðÒ–ð¹€ `ö`À 6À½  ûðkÉ–mé–o —qù–÷Ð éÐ × ïÐ ó Ý`´Î çþ€ö @ ÿ`Ý@ ´`øÐ ©Q…Ý Ôðö° °ÿ€Þ`‘í`Ý ÔÐÿ@©R70œðÙP¦Ð ÿP$yÔ@’ê ×`óp ÔPˆ$™Ô0ö # à€Q°ö°r¹mùð#ðà`>0Eà _P*à ü 60/`>°K°6 ݰ7 ˆ006°ð€6öUݰ7à#° ¤ð7` xƒ#À‘ð7ðÅ@  €¡±ÀÇà å0 üð åàùiP±`ü@þK ±´PÝÐ ü0 #€ö—;Ê£=ê£? ¤¼ÇË`>ð ­°¦ *@ ¾K`EÐ ù ÿ° _ðKÀöp6P#ðýðTö6à# üÐ °ü 6àñP /p#°Òà7 rPŰðúÐE0¤ÀÂPp`#P# ½`i`*´°àðˆ0 _ OEüÐiÀAZmý@ /ðÇîð´à å  ÿ`K€œ€trà ðiå0 à ö€þP_à _`¾`ûðTöP#Ð å°¯°_à70*PÝ€7Ô _@ #à_D/°­jïP0EÐ ü Àˆ€öp¾0_@úЪö E¯€=б«±˱;Uö0* 70ò‘ Ð ¾à ðü ÿ`å À–€«`@Põ öðÀݰK倾Pà0  Ð ð°ûUüð_ù`œÐðù@ð´àÂ0>0  ¾Ðð ¾ðåþ0  ãOµö°@ m nù  ùðÞP7` üð ıPü0à òÐ_p/ðÝ‘°ö@i°îP7Åû`àÿ ãà 0 ùð *0¯€p°«0 ‘0 ¦À7ÅúÒð üV€¾Ë`>Ð*@OEù öÀ¸óK¿õk¿÷‹¿ùK# òðà0 ¾£à Ð ütÀiÐÒ`üðÀiÐå–ö°6AKlùÐ °ÿà /àþ#°ÞÐ /€*0 åP0‹PÅ>€7 ü` ðÄ1 PöÀ@òP*PöÐ_0 à ò°û à ùðTý°Ýð@ ü¿ÖÆÿ Âà/P“0­@ å ð aYÐ öà Р€ˆ Ð  `¾`°Ýü  Î7…öPp å Ű_P70°¾`PðÎP¾ðiàÊ`üðûÐ /@’#ðö_P´ˆà¾p@ OÅ˰7à ù°eìÌÏ ÍÑ,þÍóË#°Ôp/ÀЖà à ¾0ài€¾ öà /°Ý€°Ýà ÐÀ7Å0 Ð ÅÐ öà Pà° K`å PP¯ðåp*PPU#0 ™ rP™€@öð° çÀÒ0K@  ÂЀð êðò0 ÎÐPÅòi UCMÔEmÔEMç°iP0/€r 0wÐ0¦`Påp 70 ݰÐC ü@ °_Pÿðü°ù / xþSˆ`*°¾ð0ÐÎð°ðåÀòÀý@×ÿÀûÐ *0*0Âð#°Kà* _iÀ“Í‹ðå0Ù¯ Û±-Û³MÛµmÛ·Û¹­Û»ÍÛ½íÛ¿ ÜÁ-ÜíÛü00 ü  0ð´`_Ð # 0t@ #Ð0‘ð€7ГÍÞð 00 ‘0Ð* D0 “`6 ‹ ð ùðÚû0 à ©€#à0°“`°ÀÐ0å`K°#° °°þt@ݰPÔÀtMÿ`ðü@Ü5Ûü ù°öP­êãıKÄá ðÝÀûÀò öðã>>ö@“íãîà ö ü`ÒIüPö@òÀò öÀÿÀ²ÍùÀÝà MÎòÐä¯Ýª6NçunçwŽçy®ç{žçú`pÂÄaåI­ZÝnÎùàãöP öÀ¯Mù`Ëàæòàö­*Ëò@Ò`üðÚüðüI>.nžî€Kp ö ü ãP‘ÔªÿÀò`ÝüÛø` |îÛüðÄñþÚÄÛÄñüð*ðü0ÙÄñüÛ­JÛûÀÿÀÿЪÿÀÿ°°M·íãÄ¡ìïïñ.ïóNïõÛÄ! >`åpÿÀû@×ü0ÙÄñüÛÄ1ÙÄ!ÛíN×>þûÿÀ“ݪÿЪ²Í´Í°½´`>P“Íû@ÛÄÛıüà ¯ ù`ïuÎù@°ÍµÍµÍ³M°M{Þ/ôA/ôCOô²Þ€Ûüø°¯MóζMÁMû@×ü Ü>^ô²Ýµý½Ð Êðü ÜñP àÐÛû0ÝúÜíöÊ ÛüPÛêtþýøðí0µ½РÔöÞ@ÜÞ ÷`çÞÐ ´°õïøðÎÝL дMÂÍ?€Ûøðû€Ûí@lÀÁ@×ñ€´M !p ·ÍÿÀºÝ\йÀçyδÍÒ° ¾}× t;tÀÛü` /°/à ¶­×@“]ÐðÿÀ˰`¼m>ðü0_ öàt@ÛüÐ * ˆp ½­×p“ÍpÐÒ`ãü@ i0_þ $XÐàA„ .dØÐáCˆ%N¤ÈŸ3%ø˜Ô­"C~–5äGË µ†üþHþ˜´$Í>{_&%äwìO· ù-BÐ*çO  ëÑ"•Ïž Õ Ön`¼`¹‚£Ö+W·ÝÒŒ ÕM_·b´ºñû—­4}ï uƒŒ'jù(2n‰°ÐzAÓ÷¯[°\ÐìùñÅY:{, ’f/_¾¾ ÖëœB~ýì©HcãÏ‹n¦H°WðÚŸüè|±ÇÏ9üþáSÖ ÜÀn½rAç-X.hö|H£LÝ?g¾hÙûWOY/rÿº9; Ú5Nêz»UfÀŒ°4$_Þüy‚ïÈ#ØŽœ:‚êÈ©#¨Žœ:‚äȵˆš3uªgÚ¨g yg þtœæžÎq}êÆhºÆ™nÚçgÀèhœ‡ hœ9g {œq&Òé%—y"§—^æèš\‚‰g jrQFŸ ÉÅ‚‚Éšø€Â!"q¦ó)‚à E &Ö°eÒ" ~þ(âg¸X$-аa’Il@ :ÆGŽ!˜ Å ~¾€`•rb‘æ‹Fø¢“?Š€Ã&ƹã‹%œY 8–ˆ!˜H)¢ }bÁ¢ˆ!…‰!ygž?nT@Yâ‡>Þh‰@òõW`ƒ=h{¾Á~øñA‚ìù†¾ Ç›/^(bþƒ?F(bƒ"ºIÂ^HÞI–Ø‘|yÁ‡"YF6h :Tˆd ~T€iìe„FH…|xaƒNŠ@À‚FyE…F("˜ø¹Á‚}ìùâ–g¡|–(Bnpç‹/°e ~VQa‰ø‘Fa’õ:þáçnP¡ZTðá¼yÁ‡6àÄ,¸!y¾¸a„nø‘Cnè l€@_T(„ŠIc¤Ìè‹ g¢å!ÔÈ!¬ðf ?„£›"‚ |ZC0CD"g !"H)„àd h„8¢—” eêþD!Îù‡Ÿ?Fða ~äá {ô±ÇоÀç~¾!øya9þá§›$°ä~|ARþá ,Xå~"‘à…eþáç T°ç~–`‚Šà‹ô±§ Ò°‡ŸbT@ŽøÙÀ‚?þág $˜ä~˜8Æ?ø‘ 4`ÿàG°aüÃ_@À ìñ~7?,€€"üƒÒ@ Õ aäø?@€/Èaø–ð…%”Ã#?L€?ØC Eháƒøâ øÃ+쑆 ¬â °GAøá‹ àê(G& àƒN,Ãþ°À6P_È«°Ç ¤øBà ~„΀@|‘@ À"LD|‹hÀ:!Lüƒø‚°,yÉKæã#C9þ‘,H`™@€0¤€?|îàÇèä‹/@@òHúadùt°‡ n9 À#xA9F°yÃ7 ?–¡ÜÀX‚/|0~L‚hÀ$ʱ4ä#Y¾€À$ä1~ÜÀûÈÄ"± ,‚áÇ?ø‘H`>† Êa2ìC>x/øñ||! Éâ‡/ ~‹pÇ^`/ÈÃ_èþÆ$bñ‡p¢H?þ‘,8 @¾hÀ$ʱ/ˆxERaEl ãˆ>F±f$ÐÂ?øaŠŒdâüXÄŽðã@4þÁ@Êø?¾Øãü&0~XKø?ºaháüˆ†ðÃ'’µ `ÉJCFºñ~| ?|€t£ÝØF0ðc¸Á@ø1áüp†@ˆðƒÀ$þÁGd„Éúà‹ðX@7þÁáÇ€~ì£ÀôÁ_4Vþ?2"‡dù"#ø?:1#Y‘ÈÈ2þÁ) ¾à‡=–€Œãü¸F0~ 6ø? €„§„A€ a}øŠ¾€4ø:üËàÇ=ø‘l€öPAL±ytã >ØÀÊ‘ CöA–`Ø£ É:ÆÀ„Œci?ò9ð£ûàÇ$° yŒà 司a/¤ÁöÐAøñCöø|!øà (G$PÜ` øC²ìLÆYÎ éG$‰z „>€<þ nÈ£_¸þÁwC>ðþŽÁ4l üø?|:tc_G'àŒ,!>XÂ?¼ñ€‚ö(G°XÀ*ð<– ‚" `ÞØ@’•_H€á‡, :À>Ø'R|D@Àð‚VHP=|1€cüÆœ1~tàG* ~ø  ¸Ã?ìawáE@@&º±4ðc ò ÊÑ Ð/x0à‹r4`üðÅ|ÐäC“(€ð|_ø?V1€tâüx„0Žð 4þÁ" `Òø?¾0 ÌãüÁ6þ0~ø€iø?ºQ„ üáüð… 6€ˆðãA,þÁ_l@¾ø?QbpüƒðÁÂ?ø ö¸‡=Òàƒ4äãüHƒè0~0úÿàG7–àƒUüƒËX‚hñ|øÂEðÅ?øA H¡ÿàG'z°{$K>XÂ@øˆ4Lb îXDH‘¬nÜ! ©?ä†XüƒãHC|ñz”CiÇ?êQŽ4DÂÿà‡02Ñ {ü#¾ÈÄ+ò‘,_d‚á)2A‹ðCÿxF0‚;øÂüØ?|Å_ òÀ#耀eðc ù°ÁîÁþ4hH~ø ð…%Ø{˜ ð…z°‡°SxSЇ‚°‡4‡|°à‡rØ€4À|È}ø~‡I@€Uà‡ ø‚v¸%à‡?°€x}à‚à‡G€U¸y{Ø”±€nxøøƒUhgø‡~øƒUà`¹B,Ì‚à‡}H–cð†{膀jè„_h€IHƒið…4@_Hð~  _È{…Hƒrðè†4€y"èðLx/p‡p†è†nØ€/(‡cZ@€?ˆ„xwØ€%Pjþà_€?pÀix è†L€G(ap~°‡ÀƒƒàK@Kh€"Hƒ/:@_È{øƒ{:à‡°‡Q€€4è†r€€4† (‚P_p_hX„Eh€Hp‡ °‚c †è†4@€W …iØ€4X…W@€Eø‚{†J{˜„%ò À‚8H~ø‡ƒˆƒˆƒ‰ü†"†ˆƒì‡ÈÈ8È8È`(‚`¨}H–|H‚8È`¨~ø‰ü‰L–|È~ˆƒ†"†"ˆƒ†‰ˆƒü‡ƒü~Їþ|H–ІˆƒÜ‡`¨È8Èàh€K€øi`¨à`á‡^P˜„~8†%€X_Ø{à‡4@€%Ø€ð_@ø‚nà °%ðeà‚°‡"°;9ø{( (DHØ9°~Hƒ€ø°€I€€Ø€%Hjà‡H{ðX‚"øƒ%_  €?x X‚%øƒ|àè`¹NìÌ΃à‡à‡|°Kˆ„cP €x„4à¡4°‡rH ø "€?à_°€Hþ{Hƒ€ ðR°Nð… °€?€ ø_°‡Ðw¸P(‡Wà¡X‚r° ð °w PUà‡rX ¸c°PIHƒ X„hXƒàyð…(‡"HF“‡/h€?H–|ð…/ð…°~ø~Hƒh ¸jXòrðØ€(‚rP ð ø{H PX°ØP4øƒP"°8hH(‚4†d)~ø†²gà!€€€/ˆd)~0ˆ~ø~0~ ~ÈN~0~0†"ˆdY~0ˆ~þø~P~0~ÈÎd)~ø‡d1ˆ~àí¬Õ…àƒà‡Zå‡n0ø_°‡dù~ÈN~ð ƒG(‡rh…Xˆjø‡rˆZ …Upyð…cÈ~(S aX…r‡Xx_{(‡Hˆ_°‚à‡v(NøƒW°‡ȇn˜„Qè_xV_¨~ˆ_ˆ…j¥…T(‡Vˆ…rØ€4øxƒÈ‡rð…? j(‡Uøƒrw¨†G(‡T(‡n¨†?0jø~ø‚"H–mY—}Y˜-ˆäy¨Y~p‡rȇHw({¨ÙrH{‡Hy8H{(‡|8Hyàþy`¨Ø~ȇn({à‡|à‡n°‡|Èy(‡dÙ‡dé{à‡HpÈš•~°i`¨|°‚4àƒH–®e¨H–|è‡`({ð?H–˜Y~°‡nȆrw¸7{(‰ì{ØIyà‡rèyà‡|`(y`¨–•H{˜„%øƒ~ˆYÒ-]Ó=]ÔMÝ„àÕm]×=~°a°†J]~`ƒø~À‡ƒˆd‘~؇ƒˆd‘~ˆd‘‡dÙ‡|`(ƒØ‡®•~‰”~Ø}à‡}p ¸gà‡H–؇d©Ù}H–Ø}øu°‡|Ð{x{àþyà‡à‡/X~x]V]~0ˆ}(`‚Ø}Ø~ ~ ˆ}H–„Ø‚àƒàƒà‡|(àH–|à‡„`(‚`(–M–ȇH–M–‚H–‚Hi°—M‚Ї{Їà‡H–`¨`¨à‡à‡à‡H–ÔM{`%^b&nb'vâ}H×Õwp`Y~~8]†J~0~ø‡d~ ˆƒ$†²‡n(‡e°~hY~0ˆ}à‡`¨‚à‡è{à‡'îã–Mƒà–e¨„H?N]†rÝdqY~ ˆd9d—M–~€dJ®dK¾dLæ‡HL^b~Ø{þȇ} ]~@~0ˆ}èdU6]mPh¨‡à‡Ôí…Q…kxÙx]‡vècuØås¸änX…s0Ý{¨åWÀ‡‚àƒ¸[h‡UŽfižfLæ—õ€Ù{8}€Ùs€.ÀZˆtˆ–å„  …–MÓå–=HjŽç(†(‚è„~pÙk¸‚Àh ‡àD(øƒ~hY~X„"¸X‚4ȇ&æ{@„%P%€~8ˆ}àypu~ˆˆ~ ]~°‡/Ø€è–å_P{Ї>žiš®i›¾éƒà˜åS~pY~ˆ…"†—å‡?°€Qø‚þ4à{X‚Gà„àix„nàœ¾j'~PÈhè…nheÀeXSp†Pj¸hÈ…z8‡XXrØNh}~X‚°‡Gˆ„€†UÈ…yø‡n S …vP†^ {X ø‚\°yˆ…øƒ˜‡^Xh0~øƒN°‚ð…/P‡bHSȆ˜‡`0…VȆȆU¸…{€hÈj¸…wP‡^0…W ‡ƒà_@€Xà‡b†kh…k¨e€—^Ȇ¸‡^Xeˆ‡`è…k …^Ȇ^ð†X }¸†X0…[¸{X„øƒ`°aPL{rˆ…WP‡nèþox…\Їz(†T0…kÀ~Hƒ膂è:¸†àøƒ`jh…kø‡q S …thÈh†Ї`X…`H‡EP†}Àj/q_bBˆ9è-H…#¸(;†/ð/ø9ˆ9P†#øZ(?X€(pÐ.°ƒà‡/hK†cp(@€ 8‚IƒÀ‚ÈpHƒ%ða(!Àà[ø‡I°è8ˆ‡‚È„Høn°‚8‡?Àƒ†EÈHƒtƒW]}è†%°Z¸ƒx xb%€iþX‚°€Zðð-‚nHrø~HƒHƒr‡XP"8à+ð%€BøhøƒcX°x~ð…øƒdù(‚(†‚à‡qp‡/xrè_)†/x)x4†X‚Hƒ/P ° ð…Ix)°€/°‡‚H_@Zȇ%€€h€"†/˜7@~ƒ(‚ H8h€Ø€°  €_ø€€Vh…€X‚cHƒ%°_ø{`´X‚Ih° ða)ð~ø‚è†~ø‡{x…X{Їðè†þ%€€h€%°‡4ð%€:¸€x~@„X‚à„?P?°‡× {±{²/{³G~0HB€HHø:°‚q8†Ø~x…ø{PVx9ð_Hx_°‡/ØZHÈ‚H–c°Hw°S°€% …n8ØNxnp†?@€V°‡ °€?€4à ø:haà‚à‡c€" ƒH…/0…?h€Qø ØD@€? ˆ„d/8{èˆ|€ƒ ø{à_€UX NX…4hZHP4/€N0à~°þ‡/Ø€GH–%€ …Ø€XHƒà‡XH€X!¼/øñËWnƒ„übAøÃÏ‚4©,|‰tg£0~ù¬¼H÷¯\§UK$¤àK­?K6È{à‹ _F¬*7Ê”Šóþú®Züþ Xö‚=y6n ÖàK«Eì°bï;_ŽYø³ÊÔŸäù’ ¡¼GZå#„À:¤)&áQ¹N«–@XÆ/Mƒnÿ¤-QaŠŸ¾|ön€’÷49ìù•IÂK,Ð!ÍÂ’T6Tð[¶ä„© ®_ÃŽ-{6íÚ¶oãέ{7ïÞ²ùùÐM€4,sÈïþÅ~îlÜeÅ^¹%>6lp7 ‚/~öF4ðñ>×üò•ûÀÇ¿rÒ ”€ŽCy“¬â·á‹½KømðEØãš>ö°J9<ò‡6 ÀÉ$>ñ‡ EðBüB¾"Püü±ÁîØC ãƒÀ$#ø°¾¤ñ… ‹ŒàE,aƒ/öt“Æ‘ØÓ= 4 Â ,QÄ ö|1¤Á6ðó>ÝX ‡C´@ð? ðÂ6ü‘ÉkƒÐ/œó-,±„_ ° BùÜð?ÒPÄ>ü¡B,‹lð… #Øóš>¾ @ ? Ï" ¸£Ï 7þüÃO*Œ°Ä iØÀüüÔ³AK¼ðEÈC‹ðó?“  ?rXÐÍ;¤@'åH€ˆ/Ô)Á2ü|Ñ@7ü€cŦØó>™Ø`? " t“Æ_X°„Xʾ4°Á>|ÁÏ1KŒð ?¯ñÛ¯¿ÿ°À\°Á#œ0ÁüôÀ2Ý ‰ø’Ï?úØ£ÂíØóG#¼’Ïø²Äåd-î€cƒ¾ø‹=®Ùƒ…3öø0>ãlð…=êØ@ùðó= 0Š=XaÏ KðC‡EpÂOPüè£ «AÐ ™ål°D.Ê”“Ii(SNK”#Œ/ù „Ð?à¡B1üÈ€0K@ðÇiã‹0i4àÌ"|±„ˆŒÐIø¢Âä¼ÖM'°ÁòÁø‹Â| BꑊL¤ÁVøÂ¾`ƒ,a(–@ЬI#xA&&ñ yðCöHÃTàþƒrã Ê‘† ÁE°Ç(F ‚Gì#Á n‘†l@K F'^0üÁAA!F°%ðC#°Á60‰H¨`/ˆD9¾0‚tâ iø'|†QŒÀK0ø~ØC*Ø€ –P„ ¤¡°?81‚<¦¸ÁF°„"l`_°'6ð‚?Œ KA^°{Øã X4|0‚ ¨ åƒ Tð‡GlÀØÀ|1‚,aˆxÁ6ð‚?oèÆ"–`䣠ƒ60‰?là>P "áƒjŒÀ¾¸AQ¿ð‡rØcÃÜ,g;ëYþ*òãøƒ/Êarøbãà‡=„qŒe,ãüXF7b˜•CöÈG1^Ñ {ÈæXE9â~üƒàðÅ$Žaðë†=œáŒetÃü F9|áŒr,£Ý84º4L‘àGPøŽc”£å(‡0ªqŒùâ¿î(F'„1„|¡Ÿfðøñ~È#ÁåpG‚ì`~¸£ Þ?ø±|ØÃöÀBÆa„ÈÃò@H>òU~…àÈBäQ`~È£ö^P^Œr¸ÃÁòèBö‘{è¸Áü(‡<‚ç#™ã°G»‘$˃ .Gðð‘¬þÚãüBþ{”£ÁüÈ?‚,…ù(‡ |Á DÁ“VùÑà|àCÿ^7°¬}ðcÀ‚4¡Ì4@à ùЇ=ô¼ì#É@ÉBöÁ}ïüøGðöÁ¯%Éÿȇ=ôÁ|à#ø@È>Ê1‚ ¼ Òx ?ò{Ü£ï¸?ð¡|àCó¸>ø‘`„üƒiðE¡;Ë ðãüàBøÅøÁÛ‡kø„ìÃ5ùBüÅ€!(üȇùÑ/„¸!ÿàGÁ‚·ðƒ_q B‚‚aõ¯á‡kö”à…ÿàG>øÑì‡Cþ<âvãG>äa~!` ?‚ÂðãüðB‚‚ñƒ_üØ?°Z{øk@áÇÀø~Øcß¹Àâ/~¬tãÏ †€ñ£nûØG>ø0~ ¬EŸ:ÕwÎð£êCÀøA7„hý_üø‚úñ~ø@S<Ç9ÂîöBóãírŸ;ÝýÅl``õ>æ/,¡¦øÇ>ÆÑŽM­x ?f4 Ú@X=À PÃVàGÑ÷q[å*XF=ÒqŽxüCö Å(þv¼cé¨G<ÚqtÜ(ñHG<þ1vÌ£éÀ‡=¤ð…v¼£þç¨;ó›ïüç?¿íÀG:êv¼£é¨>ìñŠWü#툇>ÚQ}¼ãéÀ‡=@aaÄ(õH‡:öñ~ÀÁ´HƒúÑ"üA;ÜC<´C=¨C;ìƒ=8C'€ƒ>¼Ã=´C:…>¨ƒ:¤Ã;¼†>€Ã4@7üÃ>¨C:àPìC;œC:ÜÃ<¤Ã9ÄÃ?ÜC'Ø€0ÄÃ?̃;‚/Å=¤C;üÃ>¼Ã<ÄC:àÃ?ìC;àgå"¨ÀôÃ?ØÃ ?ø€¨À t4|Á ?Ђ¨@l¤Á||A;,ClJ+ øÀ l@'|A@@þÜ)äÃÎñaúáb * ?üÁ|Á,) ÁÀ0| ,?ÈÁÈÁ1Á¼ÂnÀ‚ € |7HÃØÀ LÂkðÃ(À”ƒ2,à ÀA$ÈÁ,Á¼@7¤ÁØ€/à Á XÀ+ð!¼À lØÃ? D? D(@7ð"ØÀ |Á9Ø!Ü€¨ÀLáøÀ8  € |Á8‚¼ÀðC7XÁ ¼'tCÜ€H"ðƒ4Œ@$lV.A¼B>ü?¼Â Œ?¤)üA˜Â<”à HÀ?ØC @ BL! À+þÁ PÃX@9lp˜B9ŒÀ ƒ7¸C'¼@CgÙäMâdNêäNòdON?Äü' À#¤Á¤Á"¤Á8”ƒ Œ?øÂü;¨-øÂЂl@9ÐAd‚4ØÃl€/¤AØÃk”ÃÀPƒ;ø‚,A9xC7À¼BPC9ü¼‚=`'XÀð¤Á4€3ìÃkðÃ4@7Cü-Xt‚3üA¤Á*дB9üAtB7èC9ø‚H?¤”à @9€‚ Ø?tà X‚¿èænº?äÃ@(äPäC B¤ þؘBø€  @9 '€ðà ø€<ü?ä" €ðoÊç|Òg}Úç}âg~êç~ògúçh€ ¨òƒ/@7ÈÃÈÁ @9Ø?ìƒ=¨Àðƒ=('(|<øBøÀlÀ8L‚ø‚<ØÃ4€¼@ØCPðÃ>ðC7ÈÁø?¸ƒ”=ØC>€È?ì?X¼‚<ŒÀÈà ,?ŒÀ|ÁØÃ>¼?¤”ƒ%@€/ÈÃøÀ4@9ðƒ;xÃÜ€ 4@*äC$H€0ÈÃ?ðƒ4XÀØÃ ä@þ>t¼€<|ÁäCðüßj  ê ª ÊC+ÜÀ\?t‚ Ø?øÂ,Â"4@'̃=øàh @.Ø?p”Ã+@*ØÀ ØC4@9l€ t>ü?ØÀ €C7,ÃÜ€/ØC¡òj¯úê¯k° ë°k±ë±"k²*ë²2k³:k³òƒ/€0HXB À-ÔÃ?̃=¼Àœƒ=üAl€/ÈÃHÀ1Á”Ã$@À+Pƒ=ø€ø‚0øÂ<ª:,0䃌@>ŒÃ|A7ŒÃ9@¼Ã>üC9,p‚=lÀ€ƒ ,A>ÐÁ,Á* D âþƒ=|C, À"¸Ã¤Á (ŒC9€ÂLÂ4€)ðÃ$4@,t>؃0XÀØÃX@:t”C¨€=,Áèƒ60)<« "8üAØÃ dB€ClÀ Àø‚ À¨À@Œ@$ð'€ XÀ¸ƒ)lÀ XÀ¤Á €Ã?ðƒ € ÐAüA94mà îànáîá"nâ*n òƒ/ÀXÀ<‚À,?ä‚ €¼€)”Œ€=ðà € lÐB9 À,A7Äv”Õ2ð ÚÃlÀlÀ"ðƒ=,A¨À,H€ŒÃ?þÁÀÜ4À À”ƒ@À ø€0ð òÃ9¨€ ÀüÁl€ Œ@9tÃ@€ Œ@4À¨À¤<8ClÀ¸Ã"ŒÀ4À d¼À¤0H B €/¤ *ð30#D‰M‚ØÃ? D98C9àh>à¨=ŒÃã(?ü˜‚3Ø?äƒ;ø‚=܃çÃ?ðC>8C7 DÓp Ûð ãpëðópûðq ñq1 óƒ)"”ƒ<ÈÃ8lð?lð8à¨>à(BØC9tƒ=€ƒ=܃;ƒ=ðƒ<ØC9ƒ=ðC âƒ=”-Œþ?üi>,C7x°=ðC>Ô±C7@€‚<‚ æÃ»ƒ=äC7ƒ=èBtÃ+àh9”Ãóƒl°;ØC>؃/tÃ>äCÛCüÁ *?üBø‚0ðÃ?ðÃ>ðÃ?ð>ðC>èƒ=”˜>àƒ>ü)?Xü<üé>äƒ> „>Ô>ìß"D3›ò3Cs4Kó4Ss5[ó5S3?À|Á>43>èßòC> Ä>ü?èßòƒ>ØC>ðÃ>üÃ>ðC>ü)?èƒ=ÜC "Ä>èC>ð 63BèC=ÜÃ>ü?äƒ=”?äB „=¨ÀŒÀ€?*?àþè?84B*Bäƒ>àŽ*BìÃ? „>àC>ìC>lô>äƒ=èƒ> D7ÈA7ð5;ôóßò òß:´< „ òßn4?*BìðR3uS;õSCuTKõTSuU[õUc5T;t n´ òÃ?ðC #D "óo´ óƒ;4óóƒ îƒ#„ òßòßòß"ÄŸ:tVßð;x>Ü0?6>t9Ø0Û݃7ÜÃcãC ÛŸâÃ=Û=à9¨C<ŒÃ>ögƒvh‹öh“viG5"Ät`óÃó`#„iç0?ȶ òà €0Dµ:tƒ>05?8þŒ@ óC@’B¤B,ØÃŸæÃ¤Á8ð"Á€Â€ÂÜÁl€=˜öwƒwx‹÷x“÷óC7dB@ƒ)ì9@4œÃ?tC1¬‚=ìƒ:tÃ84tC7´5ŒÃŸª4hƒ>ì9tC:hÃ5Œƒ¼@1œÃ¿Ã5@C6àÃ?t4œÃŸzƒ3Õ?èC7@9(0?$Ž/l@9üЂ=ü©4ŒÀø?ø‚,Áø@9¨@$t ôC/(Ã>¸w’+ù’39y#Ä+@€)ðC“S9•ÛèÀ#ŒÃ øÀ7|A¼€3ð(ØÀ¼€øÀþHØ4tÃø€ Â8ÜÁÜÀXÀlØ@؃ vÃlÊH)¼À¦C,ŒÀ ÀðÃ$¼À ¼@1Ð(`z,ðƒ0Ã8€Â?pBtÃ? ),ü?ȃ Àƒ>ÄB9tÃ+ðÃ$Œ"´iëú®óz¯ûú¯/µ<Ä‚˜Â>û±#;Uïƒ)¼€ƒ<ØÃ¼B@€/”ƒ €0ðƒ=,dÂ"¤Ð/ ¤A”Ã$ €/”Œ€0|/|Ã8ð òƒ=,ÁxC7,Á*l@”ƒ Œ€ ,A94º4HÀÐÂøÀ”• ,ÁFÿþ?LBtC?ü?¤Á#Á „= € ä?ìC>8t>8CØ@,àC²Ã|ÌËüÌÓü?ðƒ=Ád?Ô|Ï÷|>¤X?üC9Á¦@-ðà €0ü?,Á”?Øø‚<4ÀÜÀ àC7À$ü,=ðƒ<¤Áx?j?xÃB”ƒ/HÀ$èà üA=¨À¬lÀ lÀ¤B$L‚%˜Â?ð òÃ$45üC0ÈüÀ 4ðÃ#HЂ#Ä#4@؃ϋþè“~éç0?˜˜B>˜~ëó:Bäƒ0øÀ Ã$ À*ÈЂ;Èþ¼Žƒ=t€‚/4"¤At(€0Ø,;Ô?Ðø‚3è òƒ=ø€øB7pú|A7ÜÀlÀø‚Œ@9@À”Ã1øÂhfü?ª=C7H-ĈT‘ Š5BØ Ýþ5lxlÉ _öV´xcF9vôødH‘#I–4yeÊühAÅOeL™3iÖtÈg¹Gt|5ñAšlH#§‚¦¼°`ÁG9g6FlHÓmÉ€> É£Õ`Ã{ù{!aĆr“,ŒëÏ€Hû#aÈ/åäÉÃY‘ß«6ŒP‘FBþµHnŒ°àîÆ€4üò[tÇ¿’›9wöüthÑ£I—¶ˆ¯Ü"‘L·výö¿}ÿøõuWgnÝùòáìàO9|¹»¹ÓóN{Þ.æ×7?yåúʳç.Ÿngåò»ˆS^nyüöýãW]·ÅÜýøÅvÿ~|ùóKï[TäÏ8~ôù÷—Ï#œâ'’¾Ø§¡Üþá§!~*Ò £ÜÚ‡öÉçœâ§#~0â$~ü‘ÄM<1$œòÁ Å]-·øÙˆ‡ø©ˆŸø™Ÿ}üÈ =Ãɵ"<ÉŒÞé¥e⇳xŠ'#~2ÂGuÞ)©žwFЇþIe8³¡{ºÑ朆ðygŸÔ¦˜^‚I‡Ì1¡Q¦Î<õÜ“Ï>ýüÐ@£<@ø¦!y‚˜a‡o ƒ >C ‚…<u'”<ꨅOCv‡Ï|ÎØ¡w=5O~¤) ú<ç}âÇèГa¾¸A{öÙ3Ÿ4¾èFO~¨)B öù³!{¾x¡ˆ"þá‘%–шŸ?¾øâ2ágÏ{ iÇ!~|€ÙtÕ]—ÝvÝ}Þ‹ú©…oâ§š64À¦!~DÁdÏ~Êù…0Òå§.áã >wqÄ>Ëa€‘oø‰c‡ê¡…~òñA‚†Ú &˜vЧ˜^‚9þ‡&½Ù§›4FðE~º)†–nʦhôyšn  †œN¨qÈž?p~þ¦mš'˜^”Áç"hF€–´q†œ`²ùG’{¡æŸsz æ~òñ~§eêù&»Ùg#|ÒØÀ—bløgXÄ¡}œA¤!~„QÁy8A€“†Þ)&uþÑç&»Áç&µ±” &žz–ñÅ—†Ô!ù®†œ`º™höÑ“÷Þ}ÿøà…žøŒ¦93”Hf—.~aE cŒa %qçŸ=*¨æŸiò#ò©ÅŒ+¨Å"{X ã *dù盺ø'™3®þP“|Ê9£ *XA§U &øa‘dh ÿÀ&(Ñ*PÏxCö „7Ôa €pBÊQ5¨¡ÿ¨EªwÔâ g˜ƒDq‘~hÅ“aìñ'>À?ìñ…¨à àÇTP„ÐAEØ@º‘ ài°G$–°EðÃ/ðÁ"± ¸E‘ƒ &‘›E48Å|0Zðã#ðÁ¤a~Œb ?ä @ÀÒøÂ T`DH£7PAìÁ"D`ÿ(Æ n0‚;tÃ7xì¡~tÃ_‡=nÁb,aKàÇ?ò±ˆÐþÿàÇÒ€R4 üÈÇ^ ‚%Œ##(‚ –° ø`7˜„ 0‚"øB_P øa/¼@_Ç$pƒ,aPÁ#ø1CsžéT§9Ý!0BNø†6አb0 ~ð¡Øø:~¡üã0Ä/ÚІŠôÃÀÄ.®P~|CaøÇ.æð‹+Ì@’A)öàVT`’ÈC>,²‰ÈÂ!sE)4`ˆräWàƒÁ€ 4bâøE*ðr€`¨%¾ˆ! s°?°ñF « ÑÇ6‡qðãüðø‘ cþ øÃ`wü!‘ E y¤aݰ?äá ÐÁ6ð?Ò0{¸¥*‚<|áƒØBh8øÑ ¤ÁKA>^0‚WüÁáÇ8±„äc0E&`ŠŒ(Çà‹E `ü(‚ø‘%XÀ€) Z,"üÈ?|Ñ€?4'‹Hà pZ¨` ÎàÇ?øq Pãò8ÁS €Ý€À€{tã åx-ÒÖI öÀ‰=| ~LÅpþ0 øâ F>„áÄx–ð„)\a _8OüØúq”ÛþøP‘ `£Ä?ê j4¤AÁ?øPjô£ß°ˆ* ”Cÿø ºðj¼á 28xaˆÁÌÐA¶°‹~X¤p?þÁW\A D?0ácü#»`€,þÑœ¼áß…‚ÐÌmÁ7øÑ‹$2x† mœ¤Á“°GCøá ðã(‡=ð…H'öÆ |àƒiØ€7Â_@@îØÀø1 HcKÇ –Àn¤àÇ#~üÈG à PŒ /è?*·XËxìá ¼bK¸þAìqƒøà?|}ØcðÁ 6PŽ4@@i°Ç?öQ}X„ËÀøÑ~a#-@!/ØCÿȇþ`ðc È?þ rØC@@'äÁrPÃ7ðXLèÆà‡,P~4à ‘€ Ï9hµp@jQ‹iôã ¨? ßzw|`­—ýìi_{Ûß÷³—‡0|pƒ`Ø£7h@781Nø¢‘Ã@! _¤¾H|Á9H€ÁÀG9LÑ€48£#èF `¡6ð'Tð{ðÃh@.Êრ,¡””GV1Šd¢õæ¡6À2þ  FFá T œÒ|¡|AºÁ ÀÜá $ÀºÁ^á Ê! 6 øAF`däá `ÆÁÊahÁ, äÁÒ`2Vaì¡ðÊþá€Àà„Ò –œÁa|! à|Aþ ¼Áºá  8a:Á`aÊa Há¬Àø÷îóP÷ûÐÿ1uà®B¡@Àf€æà v@ ¦A fÀªÀ’A @@º@”º  $Aö¦X  ”@Xá 4Ä  .  d@xd€d€Pò`Î@dA®À Â`f€ .€ ja 6ᮀŒÀþAÄ`à .¡ L@ ®àþa¢@ d BáªÀ‚ >Ààúÿ¡þ@àÀbÊÁ  þh! ¾@"a¾`&Áh¡À^àì!|RÁ¾`|Àþ`Ü2 5¸ó¯`Aw*èÈ GE‘w>|ðCd¡È$a–ø¢%LŸ<:|åK3`”¯Xåþ´ú"Á—Á‚úìm°b/Ÿœüþ@°·¨A®sållˆå땽þ 6ÈíËWý%#ÊIH“©"y*–¨{÷ÏÞ¯|Aøcφq:“ðBK "á³'¥A7}åþ¨“Ž_§öøu°*XƒIiøú"¡Ü‹?Hð!!–¯Xö¤-¹ËÞËÏ C‹Mº´éÓ¨S«^ͺµkÑÉ<ûæ` Éòýã'/ˆ yü iÐQ«ŸúÈ(ê¯u地Øõ«–¼—îÔTË÷dÆ?q2޸π¼~üìaºÀJžŒ3å‚táWˆÅ•Rý^þ å ÔxV”‚Ž mÔÂ4Ž8p†Œ ÃK5ýü“G)úUhá…f¨a†üð#Í|À_þà/¨À6|¡Â#¤aÃ>ܰi”s?Îø€ >Œð‡Kl@‡Øð ,qŒ4 0  Œ²Á6 °„;_4`C$ü,1*üñ…ElàË#ØðÇ7@0‚ |±ŒàÃ#:óÅã¼ð ?ùü€i °Äø°Xð‡¦HðÇ#ø`Ã*_ü!?–kî¹è¦«îºì¶ëî»þðÆ[.?¿8Ä Ql’J„òO2QT Aµ`SÁ òôÈQ° /ÉT ƒßÈÂÂQ(1AüȳmÈàH?òlQœÁ s Ã:8Ä€€‰2`sTˆ1~îtñÁJB… QìðÌ0¤ ƒ†DBJ’O? D!ïÖ[çc=ÝôRÎ1åtSM,å¤ÝMÚl—ãK$å|ýÎ>ÊãŒ3¾”SŒ=å€"=ü”ãK'Çäó?Þ”óu9”sL9ÂÓÍ_d"Áö”Š/Ýä³Ì1åÓ >åøbI9ö”Ë*Ýä£ß8ås·=åãŽ4ËØ“þ/«¸#=å´bJ9ÝsÌ2_wsŒ;ÆÛSÎ*å,ÓÍ;ö¬âË×åøRŽ0Ý”# (ÒðN0åHSŽ4ßRÎ2ÒØSÎ2Ë3Î?ÚãÎ"EØó?à,ãŒ;ÇpG9¤Ôe”ãisGÚ¤QTãkü0ˆ'HÁ Zð‚Ì 7ÈÁzðƒ ¡-¸ 8¢è@Ç3¦‘ tüCÏx3¦áŽTãüø‡<†‘ lLCÿ`.°Ñ~|£µ¨†<$ÈqÔBÓGAÊQ‹a”ÏxF5øñjLcÏÀÆ4˜!ŽgTã àC(>€‰ òcÏ(…1ÊáŽaÔâšFþ-¾1o ã¢`:úñ7\A„ˆLäù‘í#ú°G=þ¡|¼Ã÷Ð>öQ}tH_ã‡;Ä}| ùèPAø!yðC‚ÒÇ×îa|䤇 6 ,cù&)õÌ‚tèö¨?äÑ¡ òCù ¥>òq|²CúèÐ?:´{äãšÊ)ñ‘|“ùèÐ>þ±|è#öøG‡äAJ}äãù¸Ç>‚É}è#¤œ ?Fq ~üœùøG‡äÁðcûxG=ôÁ}¼#ü°Ç>ÉÑŽzô£ ©H Â<|à éÇ?ø1Á~ðãü0H?þú‘òý0H? Ò vh‚üø?úÁ~¤üèÇ?øÑƒôƒåA ‚plP°üè‡AúÁÌTƒuØÅHÇÊA~`ÿàÇ>  òƒƒûØGù!{¸ãkü(?(È òƒƒü  ?*È‚ðãüÐ ) Ò! vHƒüø)  ò㤼`‡2HÊ‚ðƒ¬  ­hGKÚ‚ÈÃòàù1Z~¤ÿàÇû!ÊC‘ý  =J+Z~t°C¥íP>ì¡A~ðö¸ˆäÇùÜæ:÷¹Ð`?4ˆ9ˆt˜(Å76ˆ‹.<ƒ‚ý0?É ò#º!ü‚*þøƒ`<Ç9ÈÊôÚ÷¾øÍ¯~÷KA@ÔaƒÉÄ76¸‰Â|ø‡< !‹ þB Ìàïs÷qŽ[ä*X†=Ô‘Žxücö Å(øv¼£ê¸Ç<Þ¡uÜ£ óHG<þQvÔãêÀ‡=¬ð…vģ簇Lä"9¤®0Ä.ÞPŠg0Â¥xƒ+°ÑC„â¢0„(°áW`£oxÃ/p Ì!îÈ*ælPð ,ÀÆ.Pñ G|@ ŒØE( ÁŠ<›`„#¾ G°ÂoøÆ?¦Á‡<¼áöà. ‹78B¢ÈC‘W”¬Ä7žþˆ7È‚1„+DêÑ|,B(ˆ=–€~üà*¸A7¤ñ´ð а:¤a_°ÀÚ±Œ"Œi„x^°P|¡("àpƒQèƒÕà·¸ÇMîr›ûÜèVd(@…-\]p®°…j„B2øG(Pˆrìà¨ØB(€°ƒRláoÀD9 J\Aù˜`-4ðRÈㆨ@ W0g`Á4\ñ Ôâ(¨@4À‡È` bÐ@-ø!A\0`T¨.ŒÐˆ:h@€ø fÀ‚M€à Œ+ ¢0¤›ƒ¹(Bba‚ÄâãàGVñ‡þ˜ÂÒ°øa4€ˆH"`‰? E°A9–`wX™XÂ+¤1”CöàÄ ¾§þðˆO¼âÏx òã0†<`Ch`îÀFA‚ ~ˆ#gHÆÜQGÌßå’Ñw€è‚ì1Á| Bà?Ê!ƒ:$ ¨C>¦!xâµà‡ ºP%ˆ¡„#@ Ž –ƒ®HJ @DA¨À„¢À „ábàC Qg|ƒð¿ü-˜/4`ùèÇ?äQ„Eð#ip6 £Àüàðü@ ü œüÐ þðûð  #àö`€òð7 (ˆ€r0*¸‚,Ø‚.ø‚0ƒ28ƒ4Xƒ6xƒ8˜ƒ‘ ð ùÀ`0 ü`A ÿÀyW üà b ë° 0 ÿ°;`”Ð…ü Aòp î ; ÿ )0Ñ ÿÐÿТ µð: ë að€€A0ý0AâÀ»P Pp”ð¡€ Wp†aÀsÐ…ÉP¬` :ƒh«`KÐ ÿÀ 7`üà ð‹Ðöpð5i€¾üÀ `««ðþ>`iÐî`/Ð úðü`/0Þ  Kp¾`›8ÔXÖxؘڸñ÷ 0a ¡P¿ðØà)ð` à&€ýð2PÓ° p€ð mÀuP ´Qðµgðò :À¡€  ¡ ÿ@ ]àg ²`APW u@ è0A®Às °] †Ph30)Ž›ÿpWÀ‚B9”(Ýði`7 ü°åР𾠠0*ð# ü 0ðå@ þ`ð_`pÂðü  `8”z¹—|Ù—~ù—€˜‚9˜„Y˜†9”ü ps` ÏPy…À ÿP ƒP†PÏÀ”à ˆ €P¨`Ø`Ž0¨ ùÀ uð”€ÿðšÿе0a@ åðü` s0À †Pžàÿ@ †P…Ð`¸`”€ A°s𗛯‰ †@ ¬`¡@ o ŽÀ ¬à µ` ¡à ÏÐb`¿ÐÿpQ@ðŸò9ŸôYŸòi€ü`œàö°ÿåà åð5ù`ã`ãð5ã`ïÀþ«PïÀù`´àüð5_Sÿ`€Ç@ öÀùÐöY¢&z¢(š¢*º¢,Ú¢.ú¢0£2:£4Z£5:°ýÀÿÀñɯÙÿÀÔ9SýÀFÊÿÐÿÀÁÄòÉ3õF:SøýÀòÉýðšýP b°¿Ÿü0SüðýðüðýÀÿÀÿ`€ÿÀÿü›bà ôÙ§~ú§€úšüðüà Å`€°ÉÿÀùðùÀùÀù`€û`€_ °¯‰Ÿÿ°÷LÿÀ¯‰Ÿ¨¦zª¨šªªºª¬Úª®úª°«²:«´Z«ñÉÉÀþ ¿ð§ý0Ÿü@üŸü@Ÿü«Ãà ¥0 €Ú~ÊÔY ý`«³j€¯ÉñÉðÉÿÀÿ@ª¯ÉÿЯi€¯ÉÒz®èš®êº®ìÚ®îú®íÊêʪ:SÿÀ¶Êð ¯üа‰÷°ø Ÿúà ¤  ø0«óà ø ªïÐ ¯0¨ª{ûð®ø¨÷ í°¯¹êð°Ùí@ñ ñ«ú@û°¯.û²0›®o €ÊùЀš¨`’0 ¯™ü@Ÿµ Æ«°‰ JW`FÛ´Nûñ  øð§ö0 i°iðýŸüÐ Pð üþÀªÞ@°É‘€´À¨šK°7àø`ªü i°_à OÛ§Ðði`úЧüKà„ðù0 7à±£–Àÿà E°K`ûàªü 7`úЧÝ@{;º¤[º¦{ºð醨Ã0ßð§ý@ ÐQÀÿà{€ ôi u0 ðÉ­jÏ óy¼È›¼Ê»¼Ô‰Ð` êÐ ï@ àð÷  Ôû`“0¯0úpÙ íðÁP ûðšüÐ “€‘Ð ãé@ êpöð Ð Â`ä à°ø0Ý×  ÝÝpäðþêp ÐÐ ùÐ >ðÝÐÿà Ç öðûÐ ÔÿÐÝð×Ð ñy¾ i@ ÇÀê@ Ý êÐ ã@ÔÐðÉã0 ðöPÝ ×Pãà ê@ ê€àpøÐ êðép ÐÐ ø0Ý×Ð çÐ Ý0à@û@ùp`×ÀÈËEð „°Ý ði0¾`iðp Î0à EÐ üÀ¼ÔI“ðšú`>0 Ú`ä@ óðúÐ Ô öÐ >ðÝÐÿ€Ý ç± ‚<ʤ\ʦ|ʨœÊªŸ¥ð¥°’0 |PŽÐþ¡P €Œð˜ð˜P { ϰbЮÀ U b èà” o ñÙ(0 ÃP ß°| ”ð”`s€u€ ÕÀ”0[0 ÿð gp[àò@µðØ€ €P €ð”Д üÐ `¯ÙŽàª¼ÐÌ› ‹ðPðÝ 6ðV‹0ð_ i`/`ã #€öðè à ö`#àðà0>Â*Ð Ýà0*°PKÀRp/°£  >0 üK ¾À™ð6þàÎ@ P0Î@ü 60#P¾Ð Kp*°œ`#ð€ü@è  ü°7àð_°E_ >ðÒðrÀKà/°¯à`°>à Kðö@ü`t°ݼüà ùð‹î°  ¾€‘°ð ‹@ ü@Êûà 6àÿÀÿ 7à > 6À‘ð6ð±° >0 üð/p>p EPÁÀÐæ}ÞèÞ꼡À]p€ fàQ[€® 2À¡ÀƒP:P ¬p²`;à þb yÀ åP(P a ùŸ¸ € ò ”PJ€ É€ { Õ° ypµ€(ðoP|ð,mP¿ÀÔù ° ”𥠠o îð]PòðšQ`å°Þèݦ`K ùp “i€™ @å°0 î` °©ÐÒP1ð ú ¾€´Àr0¦ð`ò°Ð åP/i€ö àÇP°ð7À° ‘ÐP#àÝ`ÿP`¾  Ò E``£“Ÿòà ðãþ_ö°à K€–€‹Ÿùà À ü° ™@ #`0£ð>`ö0KÀ‹° €ˆÐ àΰݰ#à 7@ øÀÔÉr°ݼüå0 _Ðö pà å€à#0Ú0ÊÒð* öðšåp¦À>`±ð7° ðÎ0K€#PÝ`ÇÐrð ö°*PÝÀä*¿ò,ßò°ÉÆÀÕÐ Py` ò ùðA ÿà: ¼Ðò€ € ú]¡ÉÀî°ÐQàùŸ»  üþP2ý`€ °ùð  P ü0bPFÿ`y` ÔÉåÀ¸à ° ¥à¿ÀâÀÿÐ `¯YèЧ¼ø¥œi“ üÐ P åÐE P÷À à ù@ 7  ü ö¾€¾À€ò€ 0üð°ݰi £Îðò`/ðÐ 7r >€`*°üðšü  ¯  K°Ý£P°ü@üà ðòÀ6`ùà À _`åüŸ¾ áK'~þ¤Tø°ðây”+bÞŠ%üÒ¼ð`Q9äñã÷Àüþ< 2͆nüP¾|9n {üè°ç À¾„!@”€¯H„ñƒ™ô$HZŠØÃ÷O¢"òø±!OŠŠULÉ+2‚Úˆ% - qcC~ÝŠ@ð¥Tî\ºuíÞÅ›Wï^¾}aþbPMJŒ4`û×ß¿ 2øõãó! +~s>È3]¨Éú¡ ‚"*Qü^Ê3´®_ýÊ¥¨s2@ÿúýë·éB­3ÎÈSæ F%-Ç€«»J1Hö¯ß?~]>Èûׯ–,{~½ïå÷O^1>Šþ Ê‚4I“ðG^§™Êq€hY¹nˬܠŞ{ìYPÊ¡{þh {–ØœrŠÁž4°§è §þ„‘ Pø#Ÿ|¦›ÊùP|± w^XÂF‚?`’Çþ8‡Ÿ/(Ç|)B‚^쉟4þˆ¥QܱA…rF°ìù£nŠ –::iàg ãœ}ø)gLIŠŸqÒ°@˜wþéÊk”úb„Wh±‡|ùÂWˆä‘ªIU"A`™‚Áá•“¼Áa”^ñ¡~äé&ùÇ›|ù'Tpþg‰„‘ wF°B|¦aHc™r„yD…4ìá'/gŸ…6Zi§¥¶Z”’a@Œ(v%¨ålê¡‚:†I¦Ðé' Þ`ácv© Š7¾Á„-æ›—ä‰b Lt¨ãŸuœÁ L a`‡FÜù*¸‚d@„°¹b†7 ù&t.Ða 戂0JùGœ:d¸`ŽZþÑA†o^Â9gwæ¹gŸAg9Òà†/(â‹ Fð¡~º‘À‚"ÊY‚6ø:Ê9Éž46`ƒ%T øã‹Á_FaƒG”± ¤ðE‚?6ÅR^þ°à…|°'FXdŸ,`ƒ/þ°@… ŠY€Ò@À{öAÉ— à ~–ya„ äø£F0g~þ`„ ܱ'F°  Hc„ù Ø œ$x¡l@)ÔÙ‡Ÿ4T°GœóAFx„Ÿ" &g~60 ¤qg‰ ø£œ46°à {Êùbƒ ¾°‡Sx$iHÃIøñˆp$ yEøˆ%؃Ò°þЀøâ€[7쑆ŒàòHƒF°%|Áö؇ÏT¸B¶Ð…/„a e(Ã_0 …xÆ46á OƒßE(<±‰þið¿ÈÇ>ÄA LÔbâàG( {ðc†D)Ü Ãs…;úñgâÓ@E]! Â¡ØD(J c„‚ßÐ ñL¼¤üpE!já VˆbžøÅ?ÊŠMlÂÉøÇ&RðV†Ĥ<ø!~”£˜´5ìñ~Øc< ?þIV¶òüȇ=¨ÑJÈÖ·äG9äÉnØã€òà‡<@bi`2üÈG>öÁ“€Dù`e7Ü!V¾$òèF9ìñ¸ã–¬´%5ì‘{èÃå-í±Š ÜÁüÀÙóq@il@:k¥<¤QþÈCÝàÇ>ø!g £•'9 Jˆ’:cÒ8ÉåÁ[æÃÝÈHäÑ {0ǰ?òÁ}€Ä’'EiJUºRò˜ÃKú1Ó“ôƒýx ?þÑ“ð£ÿÉIø’~œ„<ãJfÚô$(™éI– ’o˜WB2^’“ðã$ éJfú~ü£Ž(D>XºVŸñã 9 ?þÁ”`ò%üÀHþÁžDgüÈ?ö’æCg˜D ?þÁôã%üø?pÆ}ü$< >êð éY7– ‚/tcgü@ ?F±Š|ðŒ(áÇ>Pr@”€þD3É8|Ážd( JXù~°Õ¸ÇEnr}Öj$c1ì‡ÏøÑB°(áÇ?¦Q‹]T£’üè:ø¡\ò–¥üX+?\È—ðƒgüø?|ÖJb2†üÐ?fˆIŸ% 1o€<à“öƒ2äuÆ•öCÁÈÕÇ;ö¡Âvpb˜D$Ò1Ã>œ„`+pp}¼C'9Bp†ìCgü@ ?þqxü?A ñ1Š5¬aüðÙ>Þ¡”Œ"½€¡>ޡムäðY<îñ`*WÙÊüXa¨°Â|ȃ,Ʊ3yØ#†ýG>^b ˆCþ…ü°2 ÷ ŸñÃV†ÎÀ“ðC*HÃÒ°aÈã0à°V~p‚ÿà‡0¬ Œðãx ?@ñ~¨°H>ø!°‘€€þ ŸñÃVðÅIøqŒ;tã…ü(†„±Rg Ä_ø?z–4BgóðFœ•½l‡+ä…°ÁÂr4b:ë Ãr´/Á#ÜÁl”êãE'–ðpá£`Â1NÜEC7:±!‹ðA.îÁ{pÂðE'þ°„4@áÅà†ÐS` ¶È„”á - Ýà‡0 ~ü£þV”ч#ÈÁV Ç+Š „%tg‘à4Ò±<(# _H?báø Ýx<@# _øB?îÁ+È!ˆÐÇKÚñ‡ @à ‹øƒþð‚@à£`‚”³nlà òpÇþ± ( !¹°Ž@hø¢¸A A¨ƒ™8Âhð…s‚ C¸C;q„?Ä€ £ð|†k(ƒ E°Á#ðñÒ—Þô§/}7Ò ‚ðc´P0¾00Ä€ÿÈ…† e¤ø‚)þñ ) ! ÒðÁºzæ7ßùχ~ô¥?}êWßú×Çþ?0±J(»þhCò J<£bàÃ?±GL£ ˜HÆ® „ *á[D9ʈ+taý8=W˜ƒ.(…x†3„.P\„`3`…Óû@è@ˆ‚6@‡:è‚(8ƒa8ƒ ‚30y¨5PtØ….`„(¨‚o°‡M¸‚-0‚Mø@àtȾľqHø{ ð/h€Hh8XX„rH¸ƒWðøƒL€€N°‡E4H~_@Zàg°€ƒ 9X„W)‚ð…Lxn¸Xy €ƒ}°XSØ€4 Ø€?ØixˆþÓãP€?X‚/Hƒr °}(‡4h€4h…r˜H°€eð…€}ȇ/€4x °Ó“‡Xx °_øHØoXx¸Óã‡Xh€Eø}à‡n€4ˆø°€4h9(9@€40…rð…4@€Xà‡Xø‚è„HƒN€H˜X‚%€RHHS°‡XøZX‚ ð†êã‡Ix/8Òˇ%ø{¸ ðp)à HS°€è„e øR°B†%°W0½‘$É’4É“DÉ”TÉ•dÉ–tÉ—„I”d8ƒþõÓ?Ô‘À†`€Aþ0„ x†|°Ò àt‚-¨…0è‡jxƒ+@(‡Pø€aø‡rÐè#¸{0½~à‡i:à‡7@ 8~Ø-臑ä‡~À¸„È{h„-‚ `…o`C ½~ø‡:Ѐoø „o`DÀ†  „-Pwø{à‡~ØÓpmÉrøƒƒ|ð…rh€/@€W° ø‚|àðyxøƒU0…n°‡I4è~_@€XØÍ ¸uø‡rxˆ…°‚rØxe( (‚VH_Èa€4°_h€/x…Tð{:؇Ý…Løþ~(½}h€WØÍ°}à‡V€SÀ~ˆ„à‡L@hà€}à:h~øƒ°‡‘ä‡%{à‡?@~X„ð… °UHZ0=~(‡ ðs؇|X{%€48ø~ à|àyˆx~pð…rh€/:x…U(‡W€sð…¨†W€QÀ~Hð…/Ø€nø‡lh =u„^(=g „kàyX‚eø{ðNø~(à‡%_€€G°°{P%À‡|XHƒWx…cp†%¸Q°qµÞëÅÞìÕþÞ–L¨tpL0„ x†~à‡~à‡ ~à>¨%`~˜ƒÀ1˜tð~X‡ @W¨Yà‡‘Ü‡dø€<à‡~@7(#hƒ‚(H¦‘ä‡j`JØMcЀBØ„p…j`@È~ø~˜ƒ¨~pLÀ†0y0P^à‡~@…R”Ôáæáæ‡}ØMi°‚4øX‚4€/PX‚~†°/ðØ€%(‚?øƒ"({ =pXð_ø€€/€{ð (PrøH~°‡4€€"X‚/ø@€ ø‚røX‚Aþ¶9°~¸ø ð~ø‡Ýü~"øƒèg 0€%x…rXg(øƒ%9 )€E°H…°e[æ‡?@€"HDð…?änà[Þ~Xx/X‚rðX‚XØ€H@€è†rØ€X‚`Hƒ€øƒ;)Hƒø‚°€A¦ƒ/€4H€ƒbØX‚eøX‚ @€XàSDø~H[æ‡ENø‡Ý̇?~è„°~è† hN°ð…%+°€X°)€€"xy(þ ä/°D~¸åš¶é›ÆéœÖéæéžöéŸê ê¡¶éÝüˆ P‚P˜¨Vø‡g¸1à…jЇ~ èЀaH† P‚3ø†R`%è‚*x†šæ‡P¸3` HQЀø5¨€- ›Æ†3p 0{¨ 0%p€=‡(@*¨yƒp€+x‚KÐ*˜1„rà‡o êÓFíØM{èipÞrH_(‡NˆgØMyh…G(†rX†jøƒT(‡n°‡}¸ewð…W0…rð…WX…W°{(‡Iˆ_ }pþ‡X‡Ý,aøKðax…Ux…U°‡n¨†?àa …UX_¨{(‡NX_à›æ_8†rð{p‡WX…VhjÀ_x__xað…V†Wh…W0…rðS(Zx…nà‡šæwà„L(_ …rð…W({¨†E°_°‡šæ{(‡Eø_¨‡r …G(†r …U(‡Wˆ{ÀaxZ°ZpÞW(†bðrh_(_øPè_h·yg_X_°‡r…L(‡Vð†|°‡Vè[¶‡U~ø~‡X‡[ÞMi°‡ …}ø‡r R(‡Ux{(Rþ@„bØÍr˜„Np~è†jøR†nà‡Ó†ôH—ôI§ôJê_`€Bð„jø†ZðtløtðtOÿ†|à…dØMt@W0†Z@‡|¨LH~؇gð„MØy°éiõ]ø\¨…i¨\XqTø›v‡]¨Y†™ÚQ^0~¨LpwȇQ¯…_ðôi¨…d„Bø^ø‡Pq°ôvÇéÝM}°~؇Q[ÞMyØÍ°‡|Ø~ЛÑ}€w~Ø}à[*ø[ÞM[røÝü‡|À|ày€w[Þ‡dÚÍ›ÞÍȇ‚ù•‡•‡Ý”‡}°‡þ|Ø{È~¸é}ØÍ}Ø~È{H&}˜x~~°é}ЇzØM™ßMy؇ݔy~ȇßMyQ}°‡‚—¥ÑØM}°‡|ø‡µå½å­é=†?à[ÞÍ}ØMyøxÿ‡}ø~Ð~ȇ‰ÏyØMw·û»Çû¼—ô=¨€:è~°e~è‡Ñà‡è~ø‡~°å~¸e~ø~ø~è~ø‡~ø~Øi~è[曞)›æ‡šæ‡ØÍà‡˜)[æ‡à‡[æ‡[ÞÍ~À%ƒoøF „|Ð{»ç‡šÞMŸÞÍà‡~à¡æ‡ æ[ÞÍšæ‡[þQæ‡Þ͚懛æ‡à[ÞÍÞÍØÍà‡ØMQ›æ‡[懚æ‡ØÍœÞÍà‡à[æœæ‡šæ‡à‡œ~ÿ,8Bƒù$Èï?‚ÿñkhñ"ÆŒ7rìèñ#È" öWíÛÈ”ùiä§rc¿o̦­ë÷Ï¿~/wòÄȯ'РB‡-jô(Ò¤JGŠC Å~üˆò[:’_?ƒý¬ª$T¦Þ¹zËl8·ß9|»‘ˆA°‰L¸Ò­k÷.Þ¼z‡Ncô!ÔÞÀ‚?#Øí­nKFñÈÏ×${ù +Ò«!¿|KF ägïØ õ]þÃ×ó4êÔªW³níú5ìÓüúíQ*6îܺêKe#ÍÀ|iÒ+‚`Ä’^ç¾YÒnÔ’#R|˜j×çÆ D£lx¡Z°#8Bô±÷Âøác ´#7|ÐJS„Ö>žú÷óïïÿ?€ 8 ÉòA-ý¸ ƒ ÔÍ6,bÏ>ÿH£B9ÝLÒÀ´Œc0E4`O, ܰ „t‚À(™ ÀÉ üá‹=´¤áËtó‘øÐ?ãlà?öñ‚/>¼0!#È1ŽƒQJ9%•UZyeFý¸s… ¢`ù%˜å““ä³?ö|‘Æ;ö”c! ñóEà3BþE,ñÇøP«¼Á(ùØSÎ>Œ`A9_ŒÀÏ$8cÏ>ð³ ø0ÂüÈ3 iô7*©¥šz*ª©ªºj©»˜ ?¬Ê:«ªüØc‰ _tó/*tÃ>ÇHð‡=íüc  Ëi,±Äi ÐI5«” ØÓNøò…Ò|±= `5ø`O7Üà‹/´tóÅ £Ø³­ùê»/¿ýúûï?üÔB-|pCüÈ3N_ä³ü TÎ Ø@ 8>XÀ >ŒÆ³>”£Â>ÜðH9lPÄ1 àÃŒò…7X†)> Ѐ¾L"Á 7±„þã,ôÒI+½4ÓM;ý4ÔQKýR9¥|€ÉÔYk½µFü „P>ã£B7ü ÄÏ8¦#O>Ç,³L9”SŽ;Ý8c;´pâÌ9üHCŠ4üØo9ÂØÓM9–#=Ç”ãË2åÈÓÍ(±”ãŽ=ü@½9ç{þ9è¡‹>ú@ý8DØŒ´:ë­»þ:ìÿð#-¯ðCœÿ,”>üè£ÏB÷È9œüäƒ>üØc>ý³¼>ýÃ<òäƒÏ?üľ=÷Ý{ÿ=øá‹?>ùå›>ú°/?ÿð“ÑBñ³Gü¤?þùë¿?ÿýûÿ?ø:~°€< ¨À2#;libjibx-java-1.1.6a/docs/tutorial/images/collection-binding1a.gif0000644000175000017500000012015610350117650024621 0ustar moellermoellerGIF89a8tÆxÿ """ÿ000222333ÿ777""ÿ;;;@@@DDDHHH33ÿKKK€PPPRRRUUU‰XXXDDÿYYY\\\HHÿKKÿŽ```"‘"dddfffUUÿhhhXXÿmmm\\ÿ2š23š3pppqqq``ÿ7œ7ffÿwwwhhÿ{{{D¢D}}}H¤HqqÿK¦KP¨P………R©RwwÿU«Uˆˆˆ{{ÿX¬XŠŠŠY­Y}}ÿ`°`……ÿf³fh´hˆˆÿ–––™™™q¹qw¼w––ÿ{¾{£££¤¤¤™™ÿ…Ã…ªªªˆÄˆ¤¤ÿ¯¯¯È±±±ªªÿ–Ë––Ì–™Í™¯¯ÿ±±ÿ»»»£Ò£¿¿¿¤Ò¤ÀÀÀ»»ÿªÕª¿¿ÿ¯Ø¯±Ù±ÌÌÌÏÏϻ޻ÌÌÿ¿à¿ÌæÌÝÝÝßßßÝÝÿÝïÝîîîîîÿî÷îÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!þCreated with The GIMP,8tþ€x‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæç¹kq¨qakèðñòÏõ%qkk2kÖP²'HELp a ¢5Öà‘QÏ kjiÜȱ£Ç ;(!CF€qdÄi$AFq" PBF‰“L‡Œ8ˆâȈƒ€ 82âÈ\Ê´©Ó§P£JJµªÕ«X³jÝJ@AU` S§N˜:Ld„!ÄD þ2ê„)¦a1‘ÁdMœBª“!@AUd‰ƒg aä„)¦aÕ S' €0aØ„©#ˆ‰ uÕ S‡‰Œ0bËžM»¶íÛ¸sëÞÍ»·ïßÀƒëFŒa€ÀaI a€ÀÀ9€0‚€€ŒB Šž20G– €saàaH@=.  ÄG0àa§á†vèᇠ†(âˆÀ€PE€‚ L°† È „ È€¬!ˆ2þ@„0Ô!2à@x„h!2àaà€ a¬G”€G!2¨çž|öé矀š%”$AKƒÔƒG " aƒÔƒG  " …!õ”€@I20 „G€À õàaà€ aF  "x„À õªì²Ì6ëì³Ð@ƒ° 0H=xÔ3ˆ2„h Rõ " …!È ¨ÊÀ„G€À õàaà€ aF=ƒÈa0H=ÑþVlñÅg¬ñ"„1HƒÔƒG " aƒÔƒ‡  " …Æ @°† @x„h Ra¬G„!ƒ”Àa0H=‡-öØd—Í!@€–CƒÔƒ0È 0H=x„@U”€ …h% a„ U0aà 0H=x„@xQLà±F2àƒÔSñí¸ç®ûî¼¢BT 0H=‚d s2„h R L @ ÈPÈï0ÀÄ þLð;xaƒÔƒG„G Ù@xÈð»uàƒ¨GïHÀð€~ZCf @4¶YC ‡0¬ÁÌ 7ÈÁzðƒ ¡GHšð„(L¡ WȺð…0„!J"Ô!†8Ì¡wÈÃúð‡@ ¢‡HD– %XC—ÈÄ&:ñ‰PŒ¢§HÅ*ZñŠXÌ¢·èBÐb kØ hF.šñŒhL£×ÈFA …¨Ç AÔ£xÌ£÷ÈÇ>‚° q Æ Ê@ƒcÃP?:ò‘Œ¤$u 2€þ(D‚ Ä ‘d  à`$€‡:0 ñ@€ ˆ^úò—À ¦0‡IÌbó˜ÈL¦2—ÉÌf:ó™ÐŒ¦4§IÍjZóšØÌ&5ë ƒÈ@2€€5à¡‚A€ ƒ”uzY<È @AðÔAÀC 5Tó M¨BÊІ:ô¡¨D'JÑa†ˆƒ d<„aÀC=! àAöÀƒ $ÐËzàAÀƒ $€‡5€  ª€ Tô§@ ªP‡JÔ¢õ¨HíedàAÀ°þ<ÔC2dPà!èe=ð  àAd„:ÄACRçJ׺Úõ®xÍ«^‰ „A@JÀ œDk@@˜€€”@!˜ “H€`À„8Èd°×Òšö´¨M­jW Ì5Äá˜qˆ2e€:0¬Í­nwËÛÞú©U@À„ß÷¸ÈM®r—ËÜæ:÷¹Ðî\ÁÔ:„¡`&¥ š^Æ4kfÂP03 YC4ë†:€Q˜`”&hzЬ!˜uCÀ(Ôþú÷¿°€›Y ®a¨‡0ë!Mþ —L@$Ì5 õ0&$ Ds C=𠂬õ8¦ ²†_"½d‚ `®a¨Ç€wÌãûøÇ½¬B¤ F¡ %„ $àK0"S¦ ðËzq( 2ë!MÄ¡$x@P‚„`<¦€2‡á—2À/ë!LÄ¡$xC€Ìç>ûùÏÔŒƒ0ÀÀÈ ‘2  xB$€ €êÀ€(„ ¿ ¬ € ð@¨ƒà!  d€ÐþàA€J¢  €P 2Àƒ  È` `d€@È€ ê!ˆ:H d€г%°AÔk@ <ÔêÀxˆC°Ã€à4xX ƒ8´@!  d€‡5à2ˆÃÀÈ2€AÔCu@ <È Á@;ýéPzdB`€ ‡*àAÀƒ À @`°AÔ2d<„u@€)ƒþAˆCð  àA`€ PÔ ˆLHÀ—õ„ $À ¨<È@‚ˆCð  àA`°<ÔC%@@˜€8³¨2AÔq¨d <„LXÂ&¬x`A„ ô²‚ ”u`â Èq¨d <ÈLÖ€‡z¢PLqLaÀ°Q·€ Ø€þ q %!akà x €ax‚Px €2 x°þÀ À$€2 k €%!aÀ=aL2 ¾T‚P Üx  k €2xxP‚ ÜÄTÀTx°(xPu @€q0qÂ2ÐKõ %!aÀ=a  x°(x €aa€õ À=aLUà€¦xЍÈPu  xP€2 x €L"xÀ°‚Px €2 ‚€2uL2 x €2 þxPP‚PL@Á$€q õ %!au u€2x€x €2xÀ°xP‚P‚PÄT°xP‚Px€2 x°2k q€L@Â2ÐKõ %!au u  x€2 x €Lk€õ u uðKq ©¸•\Ù•Î 0à°2% €PxÀp@ÀLþÀ„ÀÎk€2 a<€ Æ L '!k€2 a<€ x 2Îk €PL '!ka@LuÀ L '!"Î` €%°ÀPÇ$€“%'!k€2 a<€ x €L à°2%Àp°q€ ¿2à•Z¡šL±ÕK2kx °qpL2uÀ`L±ELqÉþk€Lq¾k ±õKkÃa€LqÂ[¿qÐKa a L±õKkÃap¡Vz¥XzLõÀ‚PL€LU€€L¥fz¦hš¦j:Lqk€qkàL`ôL ÑK`LqkàK LuuFÀÀFx ±¿ËTaP`4Lf`ef`nà´©ËL•êKsP©n`LsP©nàK›ú©¬ŠLv`v°©­:«´Z«¶z«¸š«ºº«ÄÄ€L  ­Z¬Z(‚PÁÄàK À´þõLÀTxÀðK Ë´õLvððê¼*LnPfÀàøŠ¯n øjL>°¯à¿ôàKSÀ ÀÆ4àKøjLËn0¯‚à`øŠ±û± ²" ²UÇT½TÈ$àK`ĪakPq `4LõàK2 ÁqPÀ$L`ÔKõðK2 Ÿ qPÁdàv0Å䀫0>à`1`‚°©ÆÄfP`k¿äLøŠLøêK›*L>À‚  f@f`L>À­Zþs°µaP#{¸ˆ›¸Š;²q uPÀ0€À½T½T‚P uPÀ°2€ %¡ u LÀ ÀÄ õ€2 xP ½Tx @¼€q0qx xxP% "€2@¼ÐKõ qÀÄ[àu 2À ‚ xÀ4Pøê@àx`1PP/ð À>€vÀSÀ¯`Pà0•Z©‚þàxP©n€às`>0€@À €vÀ P>àxP>0và@°µÀ`½„¯x`à„¯‚à#Ìx`ð xààfPfÐKnðP>`1PPnààvÀS€Pð:ÂÀ>P>€>€•Ê‹{ɘœÉšLLu  ‚PPxu‚P½T‚PPLu€x àKõ %up2À@ ÑKõ€þ%€uÀ‚PxPP2 xÀL%u€°2½T½T‚PP2 x %€uÀp2Æ4JP•:[€>Àx `x`fàÐK1v 0f`f°0f@S °ÂT>àKøŠ>Àà€1ðv00xP> s°xàà0JPn øŠ1ðv00Á„¯¾„¯x`0n ‚à fP1ðf€s°xà `x`f€>À‚þ `JPs€f`EPS`LaÀ°›<Ù”]Ù  q õÐKõ€aa õÐKõ @¼Ä»ðK2 ¾T‚Px°€2 ÁðKõ€ Ú‚PxPx €q0qÀT½$€2 ½T½T‚Px €õÐK@Ü x pLfP‚àðú€øêK>À½„¯x``øêK@0sÂf L྄¯x°µ`€ È`xP> nßà€fPf øŠþ@áfLøêKøŠvÀJ >À‚` `xàñ½¯¿ä øŠfPf€øÚK@0ÂT–]åV~å­Z22€%k€u €Lk õÐKõ u "k€e2x‚P‚P€L" x La¿TxP‚P‚Px € xÀL%k€uЀ2 ½T½T‚ € xP½”P‚Ѐ2 Çd &ðxà€1n€v`þ>Px0x€SPn€¯¾4ðx0+L྄¯x°µ`€&v v€à‚`€>À>Px0à‚€¯x` `‚`‚àfÐKøêKøŠnàs` >Px0fPfÐK&ðxà àxðìxà€s€SPn€øÚKSPLq XôB?ôÁuÀ À xÀp@p°q€ € a€a@¼Àp°q€ 2€ÀþLðKLÀ L€L '!Z€ L '!@@¼LPLuÀ 0À“%'!4 '!kPÄ‹0'!‚L€ÀÅ4P0>Pðšn`PP•: €sð[› À½d 0ÇÄðS€SÀÖÏ à`0sðÀ`P0x௠ðð€€7Å‘ÀöPÀQ`†‡Wàƒ7ÅQÈá6ÅQÈqU@ñãhVP@1êˆçSðð€FQÀQ`þ†g6š0÷@‘àƒçSÈáh—0…j $c¬¼ÌÜìü -=M]m}­†ºVG†f·æ¼V·ÖW†=ÿæŽ77§lŽTsÜscÇ‘B…SØY1¢Ä‰x昙øo¡›9瘡™9 縙øoá3 ç¸QèÆÎÄ) 센‰3§Î<{úü 4¨Ð¡D‹=Š4éÑ)8LQ 5jÑ)M§H½Š5«Ö­\»zý 6¬Ø±dËš=‹6­×;mîÀCôíÍ;mz§Í·Cßâ¼ÓæÎ[µ„ >Œ8qV8ÚÔ¨AôñM8Ú<6*Ž…6ñþœ©Á¢†ÏÇ8áXhó³êÕ¬[»~ ;¶l£gèDtRã§“³uZ ãÄ Ñ·8-Ð .ÑI¢èocÁ >ßæ´@'x›;½»{ÿ>¼øñéÔA独8¡¡†<5,ŒaÁ <Xใ„,X`ÄÔà°€‡,Ô`Á}´qG XàDDŒÀ‚5À1 8‡,XPƒwÔ NàAG2¶‡xȈÇHXÀ‚dŒÀ‚NàQƒ÷Y°‚÷YІùÕ€Ç5h`xÔ`Á}´á2FäÄÔàùÕàD~Ô`ÁxÜQƒþ8AÇŒm8â2þ0‚#^ÜÇ,XàD ÜgA5XpŸBäWƒ#wÔ NÔ`Á}´‡xÈè…VGj©¦žŠ*©w8¡Ž´apX‡5,Tƒmü D x8QHhp?´áD 9QNÔ€G ´ñCHŒp‡Ð‘Xá„tœ‡5àáD ,8a#Üá…txñØc!¡Áxü Æx8Qƒ#5hÐÆmÔ A?´áÈcx 1Â^X@5hÐÆm„äD am°à„^XaHŒp‡PQo =¶gàáD xÔ Aþ?´G ´ñCx<æ#Üá…tÔ A?´Q,Ô‡wZoÍu×^ [#Ô@‡#wÔ`VàáD =æˆ5àáD x<¶5(äD x8Q)Tƒš´‘5àáD pÜ7B xWCÔ`xtØÑc Áy Ž<¦Ðc=†G †·Çc99QÃB#°PƒNX€G´QƒábØQ ,,ä5àñØB-ô˜#5ÞÆc aÁ`_}öÚoïÝNhàp8AÇàá„xÐáÈcŽ8aÁ?Ô€ÀÇw8atàá Üá5ÀÃcòþ ÜÁw€ˆj€'Ôà#Àƒj€‡àÔ  øîàˆ;x!fA‚à€‡;ì`xpB ñ…<"ÁÃ4pGÜɉ,€:8 œ`€ƒ Y<8Á5p„j`Ȩa¨ÚàCÖ'mÈq xN°À,€<Ða¨Ú’X hƒ,p Á5p„ Y :´' Ú :´Á Úð:ÀA!^ÐÀðà À ¡CrB‡6ÐÁ ÚpѨJuªT­ªU]ã…ÇxñÂU¿ Ö°Šu¬d-«YÏŠÖ´Ž•2‚Ãkè #8àäm¸Ã[†òGþÈè'whÃÞâš;´áoщŒ"r‡6Üá-‘‘#Þ":È‘QDîІ;¼%'2ŠÈÚp‡·@ä£j-­i¹ç…h ¯ñB 4PœÀÁmxÌPãˆXà'p°@ã8X  ÑÉj8X  ‘ÈF]'àá1ñB 4PˆŒ ƒÚ𘜌 ƒÚðˆŒ  §m¯{[s:àä1CqB @ò˜œX€Á‘ˆj 'Ô$oq„,'Ô€" Cp^c:G'N¨D,@‡àH¤ €Ã耇·Pä1qB $b:''N¨D,@‡à,þÄ 5hÃÞ‹ãÿ„5ò a,°€òñQ Am tÐ w µtÐEAm0¥tÐþ wàtÐN ¡]ê¥_^ð^¦eGNpfª¦kŠ~t #pðt #p€wÐwðCñŽ #?qmpoáwÐwð>ñ8qmpoA2âo!t #p2wÐwð>ñ7qmpoŦ§Šªªá5 5ð^PP8Ð1á#`?Ðáp`mð>ñ8Ð!w0N€!^PP15p`mð>ñ7Ð#Щʮí*g@8ñCá5‘@þÁ!NP á5oáN` á5@@Áñ@ÁNP ñ9atÑw@xðñá5 @ÁqNPñ8at á5Ðwà®;›ªtP#@ù`#Àà ñx`,€Àxp5 àq,0`N0PN€ùQN`N€áwP`N@vâN€2#Ààxà# 5# 5àxP] ùQŽàPðÀx`,€N0PNp5 àŽþàx #a#ÀPp0,`N€ÀPp5 àx@v‚N€2‚5`Ðe]0,`N€N0PÁ‘5à0,`5p, ùáxàx #á,`áùQŽp5 àŽðŽ@,5@vâN€2R]Ðp0,`Á1PN€N5€0,`5€wÀ^àx # qÐ^ VÀ³)\¦wààŽàt0tpxà5 NPxà5€H0wà@Ñàþp`xà5 g`^Ð,àáH0wà@1tpxà5àNP á5°5 mðm€áN`^``5€NPŽà5àH0wà@!á`N tpxà5€NP,à€#p^`tà1#5 mðbpxà5àNP ñŽà`N m`wP?pt` #ŽðŽ€#p^`t€áH0wà5à1#5 mðm@g€NPxà5N Và€m`wP?0NðŽÐþ,Pp Âû¡m05@ ¡Áap05 NPxà5€5€mwP V€NP 1,P^àá5€b`'óWŽà5 NP ñ ñŽà€m`BPxà5àNPŽPØ!á5€NPp05€ÁQm`5€m@v"áp05àNP ñŽà5€NPp`^0N€m` ñŽPØxðŽðxà5@v"¡p05€NPñxà5€NPxà#àq@ þqðüLÚGyN NàH`Hwð#€NP ñxàp?PxðpŽpN@?`xà€tà^`# á? wàY3ñ#€NPŽà€t€N`x@Žð ñŽà€^`F`wð5àN`x@? wàwNPxà5ð#€NPx5ÐðpŽp^3ñŽð#€NPŽà€tàáNPxà5€#àVp8Ѱá? wàw€á50xð5à1#þ¡?0xà5€N`x@ ñxà5€NPŽ0N`w N€Ž@50mPÚkn”tPm€m`H€N`Ð¥pà5`H5Àù1àt0PÐÀ#€xÐù¡Žpàxà5`H5t0PÐ á]xÐù¡xÐù¡xà†Txà5`H5N`#`HÐù1àxÐù¡t0PÐ!1à# 7`Ð¥p0NPm`T0PÐ!á†Txà]xÐù¡þ^P†Tp0à# T  ?p^ÀPÜY†Tp@#`5`MP†Tppù1à á†TŽà]m€^P†T! ^0àt  ?t tàVà ôA/ôCOôEoôGôI¯ôKÏôMïôxðQñQAm@m@ Ap ^ w@tÐBÿQAp tDtàt Am€ôtÐHÿQApôN`wààôtÐñQIÿQ Ap ôN`wàHàO¯ù›þÏùïùŸú¡/úHïá£ú©úg00^ úª#`#àáwû»Ïû½ïû¿üÁ/üÃOüÅoüÇüɯü½O2¿mpoôt #p€wÐwð!# ñA2 !#qmpoôt #p€wÐwðñQOÿù¯ÿûÏÿýïÿÿx‚ƒ„…†‡ˆ‰Š‹ŒŽ^55‘—Špm55Œ^55xpm‡w#«N‚‡^55„#5†pmŒ^55xpm…#m˜ÊËÌÍÎÏÐÑÒÓÔÕÖ×gtØŒtNNŽ‚þtâ‡mpwt‚pp‰„N5‡t⎂tây©Ñ掵ƒ*\Ȱ¡Ã‡ éÔAÇ‚qŒŒ`aÁÉ Nx,°Àcž;54XpbÈÂjÀÁ‚<XX¨¡áN œà¡Ó¦høƒ@„B8„DX„Fx{tPm@@„À#€„Ò¡N *5@(m`# YÀPÐxСm`# ^àªRx@#`5`þm`NÐ(|؇~ø‡€ˆ‚8ˆ„Xˆ†xˆˆ˜ˆŠ¸ˆŒØˆŽøˆ‰’8‰”¨(Hà‹Òt (t|è8ŠBm (t„â8~HmP‰¬ØŠ®øŠ°‹²8‹´X‹¶x‹|èw€‹¼Ø‹¾ø‹ÀŒÂ8ŒÄXŒÆ(‰wÐw <|¨<‘xmpÊÊwÐw <|¨<‘xmpÊsŒàŽâ8ŽäXŽ}ÐÀ‡‰p`mÐ ¬Ð€wPV (‰p`mÐ æ8YYˆg@Œâ5€ˆNPÂht |¨<è5(@âÐ(NPŽþht xp0Š¢<Œè5 (@âÐwp4Y“69ŽtP#@wÀ#`Và# 5àxP° Áx`,€w€À`# 5àx`,€À5`«`mp5 àŒb#ÀPp0,`N€ÀPp5 àx@t‚N€Ep0,`â`5@(5`«$5`?€wP# ^P° ÐN0PN€N€EÁ(N0PN€QN$5`?€wP`N@tB(N€EH€@þxàQxP° ÐQðwP# ^€5`«`B0PN@(N€Eá`7ùžðŸµxN N@(m`^V€NPŠRÐ? 5€NPx€pxðmà5(NPxà5€5 mðm€#p^`t°(N Và@g€NPxà5ÀN`H0wà@^p ŒBg€NP„Ò ‰RÐ? àV`p€pV`tPÐ?Ðxà5 ˆNP‰ràmÀN`^`H0wà@þÒ(#@`‰Ò „RÐ?ÐN`^`ÐpV`t€5 mðmà5ЇmÀ5ò¹©œÚ©Ø#Pt@(wP V€NPŠÒ „â5€NPxÐ Šâ5(NPxà5€(50%m°(NPxà54Rx 5ÐPSÒt@'Œ4R„Ò ‰Ò „â€m`mÐ xÐР(NP‚è5 (#À5àN`xÐÐ50%b@'ŒPð‰Ò „Ò ‰â€m`+PxÐÐxÐ ‰â5þà‡g`?à©";²$ë‡wààxN@?`xà€t@(@(N`wð5€H p€wpN`x@xàp?PxÐ ‰òp„r‹â5€NP?0xà5€âPm`? w@(wàÂ(?0xà5@((@(N`xàH0xà (N`x@€è€t@(^`#€N`xà? w@(Yp Œ"mà(@((N`xàÐ#€^`p€(N`x@ŒB50màˆÂ;¼Ä[¼þÆ{¼È›¼Ê»¼ŒB5Ðp`,0H€m`€N *5€m`# ^p,`5`Ea€m`# 7 *5@(t0PЋ2à# 7`« p0NPm`T0PÐè° 5 *5N *5€N`#`H€t0, â *5(m`ˆm`@(w ^€N`#`H€t0PÐ~¨H€H`Và5 *5`ªR„â0€t0, N€N *5@(m`À(VàÌ›Æj¼ÆlÜÆnüþÆÅÛt(t|è8‹Bm(t‰â8~HmˆŽã‡tЂè8èt (pp}Hp ˆt‰âpxàt (tÐÄët(pp}Hpǰ˲<Ë´\˶|ËŒØ ^°¼^Ð ^€àËÛ ^€ËÆ|ÌÈœÌʼÌÌÜÌÎüÌÐÍÒ<Í·LEÉKExmpÊÈÊC(EˆwÐw <È{mpÊ3ˆEÁ(wÐw <}X„¢sGwDJ‡¢p@)Nw´qG¤Îl(h®ºîÊk¯xxQƒ5È ‡þmh‚‡5hPCQšä‡mhòÏQàšüãE ÔàÌ5<‡mhâE Ô¡&8ÁaAš83B¾Þ‹o¾úu9i2§tp“ˆ&?9Q)‘êdÜüÓ†pÜA‘Ö¤‰3NÔðtpcˆ&?9Qƒ3‘ædÜâE mܱoÌ2ÏŒ/5Œ@ÇVÜX`Ä,XàD"šàa xXÀwÔ Nã hâÄV5rG Xà„!šB [Õ@Úm⊢‰!wÔ0‚^Ü„,Xé,XÀÍÔàNlUwÔ0‚^àaÁ,XPNà¡h"whІXAsùæŸOçNhà„!^X#ÐqNÔˆ&x8QNÔ€$Œà^°œá XÁ  Ãðà„àÁ 5`,€„ÜÁ  ƒÎAMà ¸ƒ,@$hàxø΀'ÔÀN¨)4a$hàV°@4`'h't°‚eM #¸ƒ,@-Z€ uÀ  ºÕxÀàÓ À x€À $22P%P±L`Öo ×q-×s}ÄaP­PÐ\2à q¤°u q¤aq°5±u Ù7Q2@P±%P‘­Ù›ÍÙíÙŸ Ú¡-Ú£MÚ›]P­aPÚÏ u°Ú¯ Û@±P­ ±Û¹­Û»ÍÛ½íÛ Õ*¥í¹­º¿Ü@Q P­É ÝÑ-ÝÓMÝÕý @P­°Ú¼Ö Þ¤P þámÞçÞé­ÞϰÕuÚU‰ÀÙª›aPëÛLÕZuÀßNànà¡] P­UðÙq †PÀ €k€ 2P­€Õ*2P­`€ P ÕÊL@pࣽP­ ;.äCNäEŽ%P­2àÙu  ¤ €2  €qPx  À@k À@k€Ék2@ P† k`äœ]P­P}Nè…nèÐÍÕÊŸþ quq€2 €k€.2x2xx¼† €2 kL€2Upè‘-+½.ìÃNìž ]22`2P†`退x  €Lk €Lk€Ék2 x € @Px€aPìAQP­PýNðoðÿÀÕZ£qq` À2"%€2%ÀàÓ°L€Àþx2pð?± P­ °V(J¤@x¬†(âþˆ$–hâ!L¤"=2ÔaO€&Ö¸ wáÀÄaã@)ä‡ÄÔAä’L†ÈDw¥’A“TVi啦0JXvé%,k%U|iæ™h–(C*2¤é曄„1&ÔçxæÉJ©0 çŸVÆÀœd衈æYGG¢‡ ZÅ—u„QG¤œê)A*Uä)ª™a”@”Ôq‹ ÉPK€@a„@£æª+%2¤"îÀZÉDw•p 2 -2ALHak­¨a¤Â@×vKd@0@¸H4H2ÈÀDx„þ!kÄGé2Q‡!q C!U„@xT‘.u 2TQq!Cu R… @Ä1H@ÈPE…tìñÇ ‡,òÈ$—lòÉ(§¬òÊ,£\°FË4×lóÍ8ç¬óÎ&¯ÏxH4Àd0H0À@Ç@PGÇaHx¬PÅ0 AUàQB0@kÀ€TôÞ|÷í÷ß+g €nøáˆ'þ·DƒÔ1H¬ÁuàÁDuàQÇ U°F!2 àq„GƒTÀ200HqÈÀÀ uÄÁDu þ‚@º RG+/üðÄoüñÈ“ D*%$ïüóÐG/ýôÔ/Ñ aÈ „Q@à‘A ƒ„!ƒ F!Hàq„G2HÀa€ a 2à J€€tÉ€d†ê9ðŒàóÖ ÔA‚Ì 7ÈÁ’IU€€„%`@PÕ®U±å¶U22 Q2 %ƒ À2%€uÀx 0qPx €2L°x ƒPPLq k ·®ûº¿YÀ`Pð`> »€²ë>P>à@ ¼àx`àU>0> »0v@PJààe1PPnàÀÀ> »°Q‹s@²ËxÀ»ðàxP@þÀƒP>À­a€%°Q1é"a%a€2 ƒ°)x €aa€1%a€U»:¼Ã¶é0JPnÀ `&`ƒP±x0àsðx0[€>Àxà Q1ðv00U>°Q;fPSàJ€>À `x`fà  >ƒP±U±x`>ÀƒÀ `&`SPsà  >ƒÀSàb˜Ru  ƒ €q01é"au0u€2xþ€x €2xÀ°x ƒPƒÀ€aÉÌÜÌÎüÌÐÍÒ|R>Px``ËQ; ¼J€n»Àxà Q »²kU>€s`xP±ƒ`P  xàðQ»Q>Àxà0»Q‹‹>ÀƒP±ƒÀì\fà€>ÀÓ Íq a€a À@° Àa€a  à`°2%À@°q€ @2ÐÑPÕR=ÕTÕ>Px0àËþQ;1 `x`€>Àxà€s€&v0vÐQàxàf€;nàs`€>Px0 àx`và€>ÀƒP±U±xÀ€&ÀƒP±ƒ` `ƒ`>Àxà0>`UÉq°%a°Qq°ƒÀ µqRq¯ÜÂ=ÜÄ]Üåð> Ö0SÀbÍn`ƒà» àf » €sðÀ`å ÖЮ@x`²›ePPfð 0*ÀbþÍn0 Ö ²û 0> Ö€sðÀ`Sð 0xP>R&~â(žâ*¾â,Þâ.þâ0ã2>ã4^ãåàs`âs05n°Qs`'ns Qsà 5f`â=Rs` %¼6^åVîQ’0ãµ"Ruu #UaP’°â’Ruu UaP’pår>çt^çU±S`çzîâ>`{þç+.3Ž Rka x 2€L  L0ka +.)µ¡Qk L°訞ꪾê¬Þê®RþU+. 3.0Ré‚%a Pq Qé’R2 % &q.Å xq.xuðêÞþíàîâ>qP% R€ 2€ a © xP x à`U% c L€qÀ© u 2€q@va€2€µ‚2€€ %xP+%à`°À x .© ƒÀ uÀ L$2€µ2þ2 x xP+xÀä~öhŸöj¿ö)U220%u€U€2 ƒ aa0%€uÀx UPxu%€u PPLqÀ¬$•.€ &%U€2 ƒ °Q12@ PxÀ¯ßQau2àQaÀ°lþâ?þäßêa€ƒ µ)ƒ %%x Qx %%€€þ&!'c°†7I)#€ ƒWG*j8¹†p*1)#j8)#'#±À„ ƒ&Š' €°æ‹Wa¼ÌÜìü -=M]m}­½ÍÝíým]' ƒW°†Ww€'#1iHi(jˆ—P7Y‡g¸\` ž:"àa`x2HȠΤ:L òe xÈÀ##Ì3C“2 À#CÂ$ðÄ™dh’ xdHÀƒ@:x˜X”àk $%ꈊ#A˜hL›:} 5ªÔ©T«Z½Š5«Ö­\'Å‘¦lp*ÀHÀ#£­„þIL$´•  ÂÈh+ÁX$ˆ‚€Axª,B€„qvjM2ãLF[ xd8` ž0‹0‘ÐV˜ À#€ ­‘/ 2º?Ž<¹òåÌ›;n,N˜IqâH†iœ0”ÖÔ¡T=Tœ0Ϋ‹Š³æ™ u˜€?¾üùôëÛ¿?¿þýüûûÿ`€H`ÎT0a`ƒ>a„NHa…^ˆa†nÈa‡~bˆ¡ÄÉÆ@ò_u¡T7!$¡ÄÉÍ@Ò`uÎÄÉ"îÈc>þh  1ða„‚þ@"@(LH€ËÔq 2ˆ@Î0!AIæ†n¸Ñá™öIßf˜á%gÒG'}sàa‡ÏœY§1UÄ!x„QG(2Š „"ƒò1!A(LHÐ'2H0‰ øbÈ2a°FqÈ A¥ÆTÇ$LHŸ!x„Q‡©²ÎJk­¶ÊÊ·Êšë3>ä:E(¹Ò7 p@I®Ðäʬ»†âC>àáF¸±Ì <àìqH€@0€ HÀ)„1‰!x0”È€H H 2 €2,"P€ ”Ô@”Ô@‹L€ ‹LþÂÈ$È 0€xÔ!0!§†  %H€”‚G€ x0Á†È€@ÈàK%ÀkÔ!0H%qH€@xÔ@xÀ0 §Æ$†àÁD@pÀŒˆræ3n᜹Œ4“+%g.ã”(Q€fP`†3>pP§˜A‰&$`‡1f`†¬uÈ€ “È 2H€‡„‘A“2I H°2„ à!ƒ¡È Á$2À¬1‰LP"C¡È2þ”€@ Ä!C ” Á % P‚qˆ"C@È%PÄ!„!aÀƒ $0 2% ‡  L@u€HàAXF P ð|ðDàÁ1( à_À”ðÁ9€;PàPþ|ð€pÀËÈ|ðDLÂx@”àƒ$€>Àƒ `†I¸á(€ð`‡€xÁÀàÁx@¦ÀX±fx"|P$À¢°C”°Œø`>Æ$‡IÈ@xð`Q‚U@ð  àAÀƒ $ H`2€0ø¢ˆ%ê€8àA €0€ À2d <a@  H`2d J`€‡0€2À2  Cà! Ø€ $à! @þ&Q‡Äa2d <B† Drªu­lm«[ß ` J(€83˜À “ȦP7Ìáx˜ÃðààÁ D `‡)`¢0C¦à%àÁ Ä¶€p>à€(r…‡$Àx0|Qˆ"Wx0C¦à%LÂhF®(‘«I˜¡SpƒðàP ˆÁÌ0‡-àÁÀC `<˜À >à%b;(¡sà@Ì`3l¡S0ÜP3ø"W¾˜Ã `¸ÖAd€:d@x0„( ‡8Ha˜„ $þ€H2â0 qðÀ¬a2Ã$dP‚PÈ “d à! $È „ €H2J€<0k0D(d<ÄAÀƒ $@ Cà!¨Ã$ꀇ0€2â@ „%ÀðP‡:”x`D  „“¨ƒ  <È ”ê àÁ¢0â „®”®´¥/]if(€r%Š\M"_TÜð€Ts>à%8ðÄ'šAvà@ <ø€”pCªÀ<ø€¢ÈrÕþŒøs°Ã$r…;p  PÂ$|ÀIh{ÛxÈ•¶s5 ;p  P|Àm›¡J €Üðkà!WÛö´+<˜¡fÈÕ¶@LÁ 0·ñ«ƒ›!˜ÃÁñƒÇAX0¶H`L@[$l`À„0,"“Ã"  %Ð6d€‡8 ÚŽCâ0‰5  ÈÖ€*H k@$m@x@@˜€€0!`@,Ñ h; ‹À€ L@[$ @ 0aXD´ þà¡ €†8 €d 0€ ÚŽƒ¢€8h; ‹@@&Ð L‚ h‹R ƒˆ«~õ¬o½ë_ûØË~öª÷Að0…¸!WÜÎÕ$b€Ø&x|À<ø x˜L;LÂÜvƒæ`‚àÁÀÃð`‚àÁÀƒ €‡9h;WxˆAÜ€‡<¼>ÀƒÌ0‰\áÁ >˜ƒ 0 >Px0—+Ú–+“à>0&Pxà€s€fPf0 &ðxà€1n€yâ€s€1ðx0๲mSP0 þ —>qà´·zÕáƒÜk°mq°x °qðp% ÛV2„«·uqq°®aqq°a°mkP¬W2ÀmÕ1…kȆmè†o؆>PP1à 0 SÀxÈn`“àj àfðD €sðÀ`Üæ@x`O”xàj àfðD €SÀxÈh@À`Üæ±Vf0€‡p@“`O”7€‡€‡p&@x`O”x@O4 >P©–n`þPPoòD €sð_„‡ mvS0 >v°m>sðpnP[‡ÿq†À'u°m2P© yp2P ‘)‘yp>Pn0³7s°msàÛ6fqf0Ú6n m¹msà7f@{f0Û6n@{f0Ú6nqÉms`Ú6n°mn`7 `“`&J€sÀ 0ç`S@‘[É•]é•_ –a‘¹2bi–g){S+S°mn°x0[`ªçS0hù†°mq k z0{k°°Úþ&˜oXÿÈ˜é˜ ™‘)™“I™•i™Œ)2€L L{ÛÆqu%2°zu @°m†ðpL  Úfoˆap™»É›½é›¿Ù˜gòpoÂzoqg{s€yœmXq„aPÚVqqÀz2 “ pp†qakPq qU°m‚q† m‚„UÚÆ„aPÍéŸÿ  Úz>+S°m¹òpP¬÷à¹2Û–+®ç àxà Àn  °€qÀ k€ 2€À þP xÀ“ €xxP€À§a `  ÚfxP xÀ †  W%q€2°€§a0 †€2°0 € P xP €“€q0 uaÀ x°À À €u 2À «±úŸ>À¾és°mgòp>P¬çàs°mgq>ÀÚ¦`Úf&v «W220þ 2@ U€2 x À2%€uÀx k` €%uaa€2 “ 2ÚfxPPLÕ x qÚf“ “`Úf“ 2%€uÀaL°@P22°m2x 2xU€2 2  €%€uÀaÀ°ÕJ¶eˆP©V_À P>€>ð À>P€@xÀjOôPþppðP€vÀ P>ðD“P>ppàÚæOÄxP@Àxà`Oôàx0ðD€àÚæOÄx`ð xààx>ÀmvPJ0 àf‹a€“ €2 k%€– aàSa0 U` @€†€aa`Û&0 2 x  m†€àSa€aÚ&qk m†0 †Àm† m†0 2 x †àSaPa€ÚVx þ€2 x°Y"– ax >xPÎ+ÄCìzf` ðv00xà0 >Àxà0 f`(Jà pp>Jà €1ðv001ð1ÀsppàÜ–+xà  >xà° à1ðv001ðvà€àÜ–+x`0n “à0 nPfpp¹2 0B\22€2 x €2 x` P“Pq x` x€€%€xÀ°†°m2xþ2 x  m†€u0 u€aÚ&€qpp–2Úf“`ÜfÚf“ €2 u0 u°2xP220 2P“ €2 x€2 – axP“À€a@Ä+ÍÒ—+“À´hxà0 >Àxà0 ¹2 >Àxàpp>Àxà€@‹(@ððpàx0v0 ¹‚>Àxà€>P ÀxÀ´h¹‚>ÀxP>€s`“+x`P  “à0 fþPfpp¹ÒÒxL€0p ° Àa2 m§°axÀ` m!Ú‹L€ÀL m!Z€ LÀ L€a°ppPxPL m!"Ð0 L m!4 m!k€À<€ k €% mq a“€ÀL p @2 aL$ 'áNánáŽá®áÎáîá—+“` `“`xàþ€sà`&À“+“à€>Àç€>Àx` `“ðàÀW>€>`“+xà€>Àxà à&v0 vÀ€&ÀxP>€>`“+xà>0&P“à€s€ —>0 >`Nè…~pÕ1áq¾u áq°a áq°†®áqÛqðp% ^a€é§Žê©®ê«ÎêçxÈx0PPf€fðD `Oô 0>€‡€Sð 0Üö 0S0þPPOP[À&pp>@‹f0€‡Ð 0Sð0PGðÀ`[ðD@‹f0€‡p@“`O”xà `Ûæ 0“P>Ðêoññ˜.uñïñò ?f°msà“°‘§>fpá-ÿps`Ú¶‘-os°msà“`&J€sÀ 0ÚöE.oôGOáÕôÛ&˜KïôOõQ/õSOõUoõWõY¯õ[ÏõTï[€s°v°m>`]?õPohïöo÷q/÷sO÷uo÷w÷R_qþ mL Q/˜u÷…oø‡ø‰¯mv`v øù\€q0 uaP% ‚‰ 2 €a pú°‹ “P §aÀ‘üÁ/üÃOánÀàt¯üËÏüG_22°m2xPPxaU€2 x x x`“PPLq x kx‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜‹™žŸ ¡¢„aq‚xuqx©xk´xþ¯±¯±¯‚¿a¯±xUÄÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛØ >ÜàáâãäåÄu22‚2%‚%kxuux2x¯±¯±¯‚2¨#¨Î«Tq$ ­¡Ã‡#JœH±¢Å‹3^ÜdF£Ç CŠŒGB˜8âªÃ€ad @D€ɸ) 7%¬‰ƒ€nJD†È§P£JJµ*E|XÝʵ+Ô2ˆÅ “*Nœ‰qÂx]+µÛ·pãð·®Ý»2êÜÝ{·“ ø žŒ5V9p̸±ãÇ™U)XäËÃc$´ÏÌþæøH`´éÓ¨S«^ͺµë×°cËžM;U•èÞjM˜5©Ö„Y“jM˜5©Ö„‰“*L˜8©œ×TÇyAuœ×TÇyª8ÎSÅqžjM˜5©Ö„Y“jM˜5©œÇI¦öë0»w3Ç>ž9>˜a‡hà&¨à‚±UQBùE˜ŠHŠHŠHJÈŠn2¤¢[‚„¡[‚„¡[‚„¡[*2è–Š º¥"¤"¤"¤¢› ©è&ƒ aè† aè† aè† 2è–Š º¥"¤"¤"¤2àF„ù1D Öþiçxæ©çž³Åpæ—ŠHŠHŠHŠn2¤¢› ©è† aè† aè† aè–Š º¥"ƒn©H€©H€©H€©è&C*ºÉ Hº…!Hº…!Hº…!ˆ º¥"ƒn©È€©H€©H€©è&aº2ÔZaÔ˹覫îºì¶ëî»ðÆ+ï¼ôÖkï½øæ«ï¾üö+H@0h*k„±F*k„±F*k„±F*ÎÅ‘Šsq¤â\‚Ôá\‚Ôá\‚Ôá\*q8—Ja¬‘Êa¬‘Êa¬‘Êa¬‘Šsq¤â\‚Ôá\‚þÔá\‚Ôá\‚Äá\*q8—Ja¬‘Êa¬‘Êa¬‘ŠsqàF ȰƽkH€ þ¦­öÚl·íöÛpÇ-÷»qÁ@~sç­wÚaäÇkä›Ê+‚nøáˆ'®øâŒ7îøã…Ç@nùå—‡@Ä‘x2`.ú褗®® aÄ"C©È†é°Ç~o²×nû¹uÄÁø+aÜîûïÀ£ € ± C*ÈüòÌ7ïüóxÈ€€ ÐWoýõØg¯ýöÍ ÷à‡/þøä—þ+槯þúì·ï>½qÈ@ï×ÿükØî\»u„QþóªCê€?û°}qAþêpÀúî¶C€Úµ„áxx…2P<ÈXƒ d€ 0a Ã+ÈÂú9'qpÎb?zÅÁ9kXþ,‡¿®« qHþ ' àKpâ à¡ C¬AÀ°&ȈCñ†:dïŒh| &H ˆÅ+èÅ @‚«ƒ€‹W<.@€ Ò˜¸8HqX€&êF‚h± x¨ƒ&H´@d€€H@èªC ÀŒAðèFu@ <ÄÁ9ÎÁƒ ðþà<È@x^‡0 @@ Ì‚àÁ9x`B€Ð¼nzó›ø’ÎõŠXàÏ^¯\€€XàOp2ÀºÂ€0€óquAd ˆ8T2€ ^‘  ؘ¬¡¨  d u• uÀC*€:q(ê  ”u`âÀ J]2ØM^‡0 u°†t…Xó–ÊÔ¦¾K7@À<€x$€ â‚n$€‡:” ÀÎU‡€Xƒ ^‡5 €êÀþu`„t• ˆd  àA   uÀéçL€0@ ° Àa2 2aÀ q€2´L€Àç x€ÀLºxp L€0@ °xºL 7!kþÀ L€À2´4 7!k q Qq L€0@ ° Àa2@é(Ÿò*.2€2°ò0ó2?ó©`ìaÞkPx PL‚`ïk qßmçk°.kPêbß]2À.fÁ.q4ßõ^ïÞ _?öd_ö__Àf/é2Pm÷rïÞ¯0÷v÷xŸ÷z¿÷|oöq }?ø„Þf‘.øSøŠ¿øŒŸòq aP?ù„a.¯@ùš¿ùœ/ßþΑ qàk øCÞqàk óøsÞøÓùä]q L ê‚?í- aP4ßû¾ÿûÀü©€ L  ±ð äÍÐÞU  åý å€2 ü)€q ua°À x º!x @ º!u L€€ €€° !ƒÇ„)9IYiy‰™©¹ÉÙéù *:JZjš)0)!!¹¶&ÊZ ƒÇúvú Z' #)“W…'#É )–&À€P‡'–&#þ Æ ±¶/?O_oŸ¯¿Ïßïÿ0 À â@€ àÀ d€Ä ’ „ðÔ)€€5òê”ÀÀH¬ð¬AÀ€ njÔ9T§F>Õ©Q§”É“(Sª\ɲ¥ËPÈÒ€L2yòÉ¥™APj@™PƒO29ÉäRƒÌ (5 ´©cAy6 ¨#HK "uø´@„Œ29ÉäRƒ Ÿ<þdò@†LyÈäRƒÌ¤Ãˆ+^̸±ãÇ#KžL¹ò"dÕÀ‡ €º @€ Ÿ & Pƒu8 € & PÃ2ƒê ÂÅ€ Ô©ÀÁ'êp0@]d&p… 2| ˜€`@2Œ@Ʋû÷ðãËŸO¿¾ýøL@@ 2Ô‚ P´!È5ðAu@„ Ôm2A †@!lÅy‚@ |@dPD‚@ d@ Bd@@|ä d@„ Ôþpß’L6éä“PF¹$(ü3Ám@] â  2A |@] â  2A †@!Π€À?580ÁÔÀ Î|0ƒԀ â b˜fªé¦œvêé§ †*ꨤ–êd 2@ dPƒ|3È5ðAu0È7ƒLPƒ!A5L€ž5@ÁdðAu0ˆ3d@ Bd83H À Θjî¹è¦«îºì¶ëî§1È5@] â  2A |@] âL  2A †@Æ DÐF þ|@] â ÁmBdÔàÀ (8@ƒ8óîÌ4×lóÍ8ç|.DÔµuPƒ8PðÅ5ðAu0ˆ3d°(Pƒ!Q ÔÀ!ˆPð|@] â ÁDðQÔ|´1@ d0ˆ3š&®øâŒ7îøãG.ùä”W~H9å  dPƒ8ÃÇåŒVdPƒ8À‚5‚9@1`ÁÔÀ Î| PŽd@5`>Ad0ˆ3–wïý÷þà‡/þøä—ÏxdL2‘Ô…XdRm˜oÿýøç¯ÿþü÷¿ˆÿ˜Àòà¿ð€L H>8m` 'HÁ ZPu)DÚ ˆº bƒ ¡GHÂV(„3€ Â&Œ¡ gHÃ>N u¨ ±AEÔ`ƒØ #ÈñˆHLâë0Ô¡˜6PƒrL@@€0:8 àC Ê1>Àø   AÇ:ÚñŽxÌ£÷ÈÇ>úñ€ ¤ IÈBòˆL¤"ÉÈF:r‘y¨Áj ˆ D@øþà AÔ`D¨ÁP€€<Ô`ƒpj0"Ô`| ò0 ð ˜@ÉË^úò—À ¦0‡IÌbó˜v$&PAÔ| ÈÀg¢àC žÁ‡L`ÎàC &À‡L€mPAh@¦<çIÏzÚóžøÌ§>‘‡  |¨ø´ÎD &À‡8|ØÀá >Ô`|¨Á€!u˜Ȱϒšô¤(M©JWúÈ:L€ 5€(L h å@À … d0(ÔaÀˆPþ–ZõªXͪV·zÌ6Ô¡u¨ƒk€<@\M«Z×ÊÖ¶ºu‘Z@…·Úõ®xÍ«^÷Ê×¾úõ¯€ ì 6(ÏBa˜À!Û28ƒ5øFøàŒ>Öàm¨#0(L`¸c@g¼ö¼èM¤ê€È Îuø‡ j0:nÐ5˜k€::¨Ã?üè D ÿàÃÈþ € |Ø`'@8˜ u¬êè < ÿàòÞ›xu˜ê`h€ð¡ÀÊ1l€5(Çø8àC0€r@¡Ž@€06 À¨àL`y˜ÀP>Ô¡.uáC øP>Ô˜À?Ê1AÀ˜Àò0 |¨0´@ øPL„3‘‡ 5àC øP;æpÚ gð¡ pjÀ‡<8 B€u@3øP>Ô…màjP‡þ”c‚€0äa@ øÐ> u0€ð¡˜6 g"jÀ‡ð¡.|€Âˆpâz×;5@ Qƒ 8 ¨ƒøPƒ ð¡€@@hƒ œÁ‡ €5È€@þáx@ á AÔ`¨P€€<@ujÀ‡:h5˜j(màƒ3ä ¨ƒÉà€ ´°°½#É€€ ÔAÿ˜Ð†Ñ `|¨ø@t| È gð¡àC &À‡6 ¨k0>Ô`mðýøð ¸ê ë;Ö`tt† þ12`·#j0A´Á÷À5|@@|à ‚0·Czä vä |о7|@y00DÀu kx50Î ÿ0dp;d þP|о7|PÀddÀÎ p;dpGZ {J¸„†”505Àÿ0d€|PÀ5|@ÀPm ÎÀ50|P PDvTÀ50€|PÀÿ0d0y yßpG5|P‚à ‚ð@°‚|PÀu°À50|PÀPmÀÎ 0y y G(0mÀ9!ÎÀ€|PÀmPu°Ð5P|߀GPƒà ‚ð@°þ‚‚5À€|PÀ5|Ð|à ‚°‚uT€dÀ„þø€T@P@@0Ð5(P€€|P0PP°v„0£1m€50d?€0@|Då0P01m€50d?€0@|@å05£1mP€€P01mPd Gyà0@P01$£1€(Ðà€}4þ€D51m€50d?€0@|0€PP0Ð5(Ðu€0@uD5¶y›‚Tu05mP|PÐuÐG5yÀGº©Gu@TmàGu@tTm ºYGmPyTdàGu@x¤›uDu0dPTd€GºYGmPyTd€›ø™Ÿ‡ä P Î~¤úy š  º  Ú ªŸw€h|p „pPH:zGw ¡p@GjGz€z ¡‰¤¡‚¤hþ ŠGzLx¤h ŠHÚGz€z ¡ttw@LDZ¤Fz¤HÊHXà à|€°@Hàƒ¤¥B UzGXà àt$`Gp`hP¥ƒdGU*Hp`hP¥xT¥kZ§z€UÊ_ààƒT¥}€UJG€vº¨ŒÚ¨Žú¨©’:©uôwÐGU:UêGBàt¤¡ƒ„zp‚ ¡yT¥t$pGpB ª¡ƒdw«x¤¡‚ °¦BàŽjw«h`BÀ0HêGp±:Xà|€z@©Öz­þØš­Úº­uz w 4``jà°X0U:U*zà `B 4``p °«` zà°X``àv„`UÊB°Àzà `B0UÊw`ë|p*¡| | ¡| 4``] `BÀ`Yj`Yjh ë| ° |ॠ Ђ | ¡v$ë| ° | ° `à `GB  àBÀëB°à| ° þwp²h BÀš X p `Bी`Yj+° zà `Bी| | ¡‚  €|€ ÐÜz»¸›»º»»~¤B°B 4°zÀ)   M`w U:U*4 z€À  |hÀBàtT¥‚@  M`6°M  `GwÐ ¡ƒP¥|@ X`w UÊ4 z ÀXP¥UjG4°zÀ)À_ÀBà‚à €)€°hh UÊ4 z€p|à €)þð€pÐ~T¥‚ 04 z€``B`|p„ËBàƒð€h`B`XÐ4 z€ ìvT¥tt_ÀBà|à €)€|à €)€|P¥‚@ X`wà €)€w$)0h`¼[Ȇ|Ȉì¨h p‚P¥ƒP¥|€€‚P¥ƒP¥‚àxkàu$@GU*UÊh`+à| pGh`uT¥|àŒ‚P¥|P¥| Àw@¸vT¥ƒY* U:UZGUÊÐÉhÀþU*zà°MàGU*Bàƒà¼Bàh`|€YÌBàt$àX Àh`hàÌ„kG`tÇì|P¥tT¥tT¥‚àŒUšGz°w@G_`)Èѽт B°BÀ4°pÀzÀX`p U:U*)°z 1°pÀz | Àw U*4 |€ÀBàw„PGUÊ)°z z UÊ |ÀXÅvD | % |  U:UZGUÊ)°z zÀU*þp wàGU*B`|p|  ‚°Bàh`w$Àw X`ÀB`|€)°z QÅv$€‚ ) | ÀUJGUJGU*)°z zP¥y$40wà€½ÜÌÝÜÜz€z`àÀ` |€° àEààípp``b`à€|€»Xààípp` °X  €u„`€|€Þ0``h€ÞÐ+ €{¤``+þ`Yºp àí| àí‚€Þ0``h àí|`@|„Þh° Àw àÐBàh`X`Gh° z°XÀB``4Àw à€{”à €B`Yº1Þ BÞÀXààípp``+ÞpGw°w0M Î}阞é’zh0p th0w€ttpGp zh€GB Hw€‚ ¤uzhGhpkzp@Gw€~tp0X°zÀB`ppttþhàGw€w BZ§w€|DB°­Þþíàîâ>îä^îæ¾­XP¥XÀUŠçþGB ï>ïô^ïöN©xðo@|€úNkJtP§ú>Gx ït@GúnG{ð{ ðx$ðغo°OGx€÷Þñÿñ ò÷8À8Àa€€kŠ80H{`2?‚àòw8À8@G&€vDð.G.­t€oàòtdo òNÿôPõR_Gi€}äòƒàò~48@G?Ho€t°x ŸG.OGS€w„x0S€GߨS€y„xþ÷ƒ8Ào°Sø‚?ø„Ÿ­x€&€{°à8`ƒàòƒàò‚°8À0{°à@S`€p€‚°8``.€8`Gaààò|0ª|°8À0ƒàò|€. ú8Àx ïúÎSÀúÎt`.€p¯ú8 8€2¯ú€0|°8`8€2o0&À80{à&€[ SÀú.€°ÇñÆƱŗ¨¸ÈØèø)9IYiy‰™©¹ÉÙéù Ú¹7Å1•¸Ä±Ç7Ôñ·…—þˆƒ£X›¸d²†qıÇ7ôÆ7…³X›¸Ä±·…Áı5Åш·…ñö¦XË·d²†—XË·d²7…ÃV[Ûˆ—Æ7…“X«ˆÃñ6d„¶…Î{¶`ÀƒƒÃ›!oøLÁ‘è †0t¶<š2DÑ8è`ú2¤È‘$Kš<‰2¥Ê•,%½1O¢ZŠjñyƒáM¢ZŠj%Â!(†8MÁ±¨V¢Z|Þ`0‚ƒÏŽÞ``T‹¡Þ$ªÅ§Ÿ)8øàÉ–­lq$ª¥¨V¢)ø¼Áð¦Ÿ7ÞÔZ4G¢=80pØâh<‹Ò`Ò2²äÉ”+[¾Œ9³£=S8þL᳄>{’˜àDµÕJ4„ÞDI8Ðá³gŸ)øàIT+Ñ|Â`H‚ƒÏŽÞ``T‹Ï{íIT‹|†ààÆŽFCLð™‚#Q-EµMÁÀ' :KLð ƒN­ES0ðÁCÇx #S,¡8˜ð†f>a„NH¡$xàðÆ.`€e˜àSðp€C8œˆx˜€¬á8`ðoÅA8œˆx˜àS˜ÀA&p#a¸€að'âÀ† à€Áaàp"[eaH2lqP'â@Ç'þâÀǘ€Á|àa‚ L1ʼn8(òFPÐ &,Ñà¡ÈSTHi¥–^Ši¦’àñ†"tìa o(‚Ç‹àA$tìao<‚–ÄJÉÐÇ"tì t(òŽ,1…¦Æ‹l²Ê.Ë,&µ„±Ò{4KmµÖ^‹m¶ÚnËm·Þ^[G$µÑÆ·æž‹nºê¶„$M0ÁºòÎKo½æjQ‡"PLP¹”‘‡½LpÁ”Õ1u$’Çdà ÀG8@ 0ð±ñlPÃÆ$0A °1P @„Á6ߌsÎäQÃþ5,RÃ|Ô05ÀGZðQÃ5´QP@|À›H QÃdÇ$B†´QaÛn¿ wÜrÏý6LP‡"y P5Ô0ðцOP|5ÀÁ¼‰Ô05LÐP Pƒ"Z°Á$¦ŸŽzꪯÎz뮿{ì²ÏN{í¶ßŽ{î­çQÃ5$R ‰ü=ð±|Ô0A ðmÔPÐð&RÃ|Ô0Ô@D|Ô1dÔÎ~ûî¿üòÏOýöß"uL@FÔ‘Ô`djþà €@PÀ‡@&0€L  0€ ؈Pƒü©p…,l¡ _ÃÊPv(¨A$•ˆ  uHD І:L¢È0Ã$*q‰Ll¢ŸÃäátð‚‚"àÓi@ Æ0ŠqŒd,£ψÆ4ªqllã ÉÅÂÔ`cààL€ypÀ6FÀÚ€ |€0äa@ øP‡?þ‘5àÃùÀ¸€ða0À 5ØØø‡ 5àÃ`8¡|øc#ò€8mH¼øÐ85àC€!@ˆÀ‡:þÈ” |¨þȇ P0€ða0À 5ØØø‡ 5àÃ`8¡|ø# 0"Äsµ¬m­k_ ÛØÊ6y¨ÁjˆLÀ5@´À‡L€5ˆ D@/>Ô`D¨Áø@äahD @„  ZàC &À‡LÀ5 ( P€¼‚ä°‚øPƒ $b ÃÈ0adH¼ø€ä ¨&02l€ ÃDÁòÀ‡ !ðâC´À‡L€dÚ@2þ m  `ß 4^ЍƒøPƒ $b ÃÈ0adH¼ø€ä ¨&02l€ ƒ&ІيyÌd.³™ÏO2 `uHÄß&@´Áp˜j>È2$^|¨ÁøPƒ ð¡ €jЈL€5˜@è<>ümdÀ6¶12Ôa¯€—"Ú@ç $^Š€#àŇ €d༘ ¯FÀ‹m óø‡ `DÈÃ0"ð¡{mÄ ˆ6Ðy‰€—"àÅxña³&à5L-`h.·¹Ïît·6þ5@ øð· @j0>Ô|€H>@mH¼øPƒ ð¡Hj@„<4¢àC &°ð¡àÃß&@l`yHD ãF `màC2€>Ô`‰€—"àÅxñaÈC"òÀx1hò‡DÀ‹@j0>´¡uØÚPƒ:l|€BŽQ!@j0DÀKðb¼ø°ä!yà¼Q‡ € êî»ßÿxÀ×ad@@ &@P†@j5€>@aœ@ þu°F `P@À(à   ¨ÁÈ€ ˆ™`è 7€6Ô ƒàC 28D@aœ€€ € 5ÈàŽ™` &Á †¹à   pPÀÌ `è 7mP4|P4‰AàdP4Ž@5ðwÈèê.ŠPÐuÀ5mPÌTPÇ.ÃTd Mu@‰.éTd€Nu@.Œ@u dPÚTdP|.éTdðSH…þUh…å/PðϤWH†eh†gˆ†i¨nuðGmðZuðGmÀLy@y@.ìD.‰ðGè”däâZy@y@.ÚôGdä ”äâuðGmÀÔy@y@.ÏôGdäÂᢆ¥hŠT0ðZP00ÌÔ@ðÂNð’èÔ@ðâZmd/Ú„Ðmd/ŽtV|/Ž0À0Ð@ðòL0Ð@ðÂ@§ÈŽí(fZPÌ/ìTÀ÷ˆù/ùÈüþuð7ýÈ50øX øH.÷X÷XðPó‰‘ùuð7‰50 uð7IÐyP|@. /üX Pã‘|P P“P0d7I”Ei”G‰”I©”KÉ”Mé”OÉu0Pó7@àPø/|Àà|0Pý˜€@5€05À355Àðry05P{u5ÀÔàP|P0ð70P|0`8Ð3÷X0°þà|À5€050P÷X|ðGýà0m€5Àà00P|P{Å5ÀÄy€à`€|P°10P÷X|ðGýðR3÷˜0P÷/÷X°1P{u5À”(m€uà3|0P|P|ðGø˜@P0D•-ê¢/ £1*£3z“yPP÷Ðu€u |P€ðÂ50|PÀ(€yþPüHm@|P€ZP@pðr(€yð9Öu |Pp50øX0d°dÀðr5P@@À50÷Xp(€yPY@50u |PÀ50P€Pu9Ö(0yÀpDu€50(€yPYDtðr(€yP|/÷ˆ50Pcýˆ|°d€D€yPÀ(€yPYpdàþÐ4ê¯ÿ °+°0J0u€ð7DÐt6ø/|PÀ50|0³Fü˜@|Pà÷/÷8³f{Õm@gp50øXð’ðr5|@ÐÀ50÷Xp0kd€‘50|PÐt6|ð7@0³Fu°Wý/ø/|@@ðÂ5/³FIðr0kdÀðrðÂ50u°Wý/ù/|@ÀÀ50|0³Fý˜Pø¨°˹빟˹yPþP÷ˆ”€|P€ðÂ5y°À0ypyÀmPu°À5|P÷€ø/÷¸÷ˆ9Ö€|Pp5|P|PÀupð’ðr5|@0÷XÀu°÷˜YÀ50€|PÀ3d0ypy9Ö(0mÀy@ÀPm0À00ypy‘dù/÷¸÷˜|/÷8À0PcýˆÐ|€t(€|Àþ0|°÷˜ýX(pu0@ ëÅ_ Æaœ”u0dÀd(À5†3mAàƒu€0@üØà€|@3÷˜|AÐu€0@Y`8Ð|@3|@3|P4|AÐ5(@ƒ|@3u€0@‰0†3m€50d?€0@™V€05ÀZ°10?€0@  þ3AÐu€0AÐZ°10Pp‘yà0@u€05 ƒu€0@üXP÷H5p”)­Ò+ÍÒ-íÒ/ Ó1-ÓG..üXdðdPøXm€P0yðu@.üXm€uÐDÙupáÂuÐøXdÒár‘u@DYd€mø.ùXdÓu@ .DYdm÷.üXd (P3í× Ø-؃MØ…m”P/P`Ø‹ÍØíØEYyðØ“MÙ•mÙ—Ù™­Ù›ÍÙíÙŸþ Ú¡ýuðGm ØuðGmà‘y@y@..M.÷øG*däØy@y@.)M.™däòtä"uðGmÀÔy@y@.)M.™däÂá"ÚÝíÝßí‘P00‚ 0à‘md/. /÷ˆ Òmd/Ý@ð’Òðâ‘md/™tV|/ 0À0ýØ@ð’Òð’‘md/üˆdÞ#Nâ™­uà‘ðâÒ50 /7 uð7Y€50I.÷Xp‘50 uð7‚ uð7þYär“P#dmuÀäòðÂ50 uð7YÀäâ‘P“P0dŽ-çsNçužÒu0Pó7@àPø/|Àà|0Pý˜€@5€05À355Àðry05P{u5ÀÔàP|P0ð70P|0`8Ð3÷X0°à|À5€050P÷X|ðGýà0m€5Àà0þ0P|P{Å5ÀĆN€5À5€0³1p€0|P|ðGýðR3÷˜0P÷/÷X°1P{u5À4`8@m€ƒ05À5°1À€Àyà°1PP|ðGø˜@P0D`çcOöeïØyPP÷Ðu€u |P€ðÂ50|PÀ(€yPüHm@|P€ZP@pðr(€yþð9Öu |Pp50øX0d°dÀðr5P@@À50÷Xp(€yPY@50u |PÀ50P€Pu9&0d°V |Pp50ù/÷X@50dy0‘u@ðG÷||(yPu|‚„(y5P‚‚„—„dduZ|5|5˜|‚|5D5|dy§—5„dm¶¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÊdu—55DmÚ—‚|5|5|þçd§yD|5˜P„‚„èVdÉØj£ ÁB5&\ª1“ L‚ÕÀ‡ €øÔ˜@¨ÆBÐ 3¬Æ>5&´)8µ dLI¦N@2¿jSp¡0 "TcŸÚ€‚ F120 "4A$>‚ âScB›¿]jSpŸN âScŸø´A_yÔ¹¤Àg€ L¸°áÃ|òÔPƒŠòl@À§Æ„K‚øÔgÃ>ä!”çT›u6àSŸ:„ @pI¡ òBRi‚­ øÔ˜@¨>uøÔþÀ§!A˜ª€$äÙ0P |êl‡Pža5&ð©1a>5&ð±6 € òÊ¥÷/A„l€5L@H ðQ!‚RÃ|Ô0Ô@DÅ&‚²Áy’‚2|l0½ý"È% ÀG ðQ|Ôq‰ |Ô05L@5‘Ç/5 @H @bPF)å”TVYÇdðA(ðQÚ Ð@6ç 0u ÀqJ8€ |q΄ä1|@1d´QLÀRÚ Ðdœ3dœ3þ5@6PLÙmÔ @Æ9 dœ3@0d4J@À Ím PÃdðLºòQdðQÚ Ðdœ3@6A ü0l-P8ÀP@1d´QL @6AZœƒÀPèZdRÚ Ðç À@6A@ÀPÔ1l`KÔA5¼ëòË0Ç,óÌ4×lóÍ8ç su4Êó)uÑ(u\RG—@1@ÖA†Ë<ŸRG—ÔÑÌmÔAϧÔÑÆ%uA3ϺÖAþÍ<ŸRGïÖ@P sdÃsÍÀ|€&m€ „!jÀ€À‘PpÁ‡œc|ÈÀ\B|¨ƒÎ1>Ôá&|¨Â8€pÀ  ‚ D øKäad€ÂˆðÉjZóšØÌ¦6·ÉÍnzó›à §8ÇIÎršþóœèL'óPƒÔ€P@ꀀ:h5˜À%Á‡L€5˜P€€<@u€c @„  ZàC &À‡LÀ5 ( PèÍ'k0>Ô`|˜ÀȰ2BÚ¬K‚(@@ €:B|@òPƒ ð ½ùd &À‡L€6@Bâš5Ø!Èà€ ´A` «XÇJÖ²šõ¬hMë%È€€ Ôá°ÚÀ \B|¨ÁøPƒ ða"!k0>Ô`màø`  êp“OÖ`|¨Áø 8 bþ›dÁ‡ ˆ„ „Á‡L€u¸É'k0>Ô`|aÍ<  —Ð6 Öâ÷¸ÈM®r—›Î<Ô`5  “‡ €5˜À%Á‡ ˜60€<"p¬ÁøPƒ l|¨Áø` @‘(ôæ“5@60>Ž‚Ø&GAðaÈ!ò@AðaàÃ&À(ôæ“5@60>Ž‚°f P@ˆ:Ld`®ŒgLãÛøÆâ¬ÃÈÀ2|¨´1€6@a™€΀@¡À@8"`þP@À(m   ¨ÁÈ€ ²I†s `€Ì… @fmÀ&€ @P˜d&à` &™ á²I†s `€Ì… @fm€cPB¡àLµªWÍêV»úհ޵¬gMëZÛú“<»&ÏàX2l“gج¸É³[c¢d°&ϺɳT£ ÆŽ¶´§Míj[ûÚØÎ¶¶·ÍmnÖ Ý·¸ÇMîr›ûÜèN·º×Íîv»ûÝè®@Ú°íÀ|ÈÀ|p&Ð85à€ jÀ‡:Ü„5à@ø8h€ðÀ‡ 5 D øOBÁþD Î1Bäa@ !BÔÁç˜@nBˆð @€0>´@ àL`|ÈÀð¡|È%ò02@aD0w8€˜myPP„Ðu€u |Pp ‚À50|PÀ(€yPpT@50u |PÀ50P€Pu½ñI50DPPZÀ50|Pà5(€yPÙTDA‚@(€yP| „€50PПT@50|PZÀ50þ50PÀ(€yPÕT@dàÐØˆŽøˆ¯F0up ` DÐ4— |PÀ50|0"ApTÀ50m@ÀÖ0d dP7ñI50|PÐ4|` @0"AÚD€ ‚@ dÀ‚@‚À50upŸTÀ50|Ð4Ö0d|0"AŸ”P— °˜ú¸Ø”505@(y°À50— |P0|°„pTÀ50€|þPÀÖ0d0y@y½ñI50|P°À50|` @°„ÚD€ ‚@0y@yÀ‚@€|°½ñI50|PÀ€|P` @À0y@yðI5€„P€dÀx™—üX@|@€|P  ÐP01Np0PPdG0P€@  ÐP@ðdM0P€@  ÐP@ðdMPà0õ2þ1mP001m ç€Ø„0PP  P50dPPdGu0u@DPz¹Ÿü™—y& PcQ©`À„|„M¨ A„òL F2TɪÁ‡jÔàSÁ€ Ô ˜PƒÏ”t6P là€|j 0¡Fž Ô TƒÕE80¡ jðàÀ„y& PƒOªdøÔàC•O03Á(|ê86!Ï„jªÁ‡ê"(ª!l¡<¨AH¡:„M¨CšP >Tó à@›< €Rǰ |òL Ÿ|¨Ê3€þ ”D<úÿ`€Fâ€0dø—G Ô@´QuhÁG "5LÀG ðy@@‡mÁG ¢Pá!‚‚y@À‚²HZðQÄÔ0A!5L`ȱ|BH @A$LÀG RÄ €@PP-5 @D Ô¡5LÀG 8P( ÔÅ,‚Âyð±ÁäAu €@5L€y@@´ÔAT"!( ÔÁ‡ „ €@5L… ‹ 0@|l@ äA G ðþy@@‘Ô°!d80ANKmµÖÖRƒ05üGÔQÈÔÑ%LPˆ |Ô05LÀÇÂCÆ!yLÀDðQÆ àÀP"!Ì €U‘±HæN@H RÆbˆ „ÔdÐÁ|Ô0!5L@È“AK ðQÃm˜;ÔL@ LF /"H!‚ðAdÂG ‚ LF-d`ˆ „L€0|Bˆ |Ô0A /"ˆ!‚ðA LÀG ð1Âd,’Çu¢\‹wÞzû׆0ä`5 P!( 0@ ÀG "þ5Çð±Áy’Ç!mÔPÇðQ|ÔA Pˆ „l0@„ !è" ÀG R|ÔÁG ðQ!‚"!5À@L@H ðQÇäAH´Ô05L°|Ô0ÔL@ !y@!è"( Ðy€PІ €˜ÀBä¡d€!Aˆ „ÈAˆ €˜µ   |ÈCP€>@@60>l`y DQ¢@&Ä qˆD,b$ 2ñu˜ø@ €þ5%Ð(Lqp‚00(Ô˜Èpˆ6À@È Œ"€ 0ÄM  u@&2Ì¢ ÄÚÀ2c| ƒ0À‡ n|€Â76Ô È  | ƒ0P` -0( `%ÐÔ`dÀ€ € ´Èƒ0X@ ø a `?@&2Ð À … nm¨0À`ˆ›@´  ³Èƒ0¡pÀj a `P¨0áþu@A„,q¢­¨E‹HaÔࢲ¨CdáÑCÔ ² C Q‡6 ȃ,ê@[xôuhC!êÐ\´¡„ðè!êІBÔ ¼ðè,ê@\Ô …hC áQCÔ ©LáQ\Ô †hCáÑCÔ ‘@A 8ŠÖ´ªu­‘¨Ã€€<°•£PæŠ×¼êõ5ÈÃ^ÿ ØÀÖb ƒ`ë@•6¬5dÈC7øPª´!ݰEȇnÈ‚*„èF$ê@•6‚*‹ÈòÐ:P¥ éF-ò@†"P˜À&pL`m… `D-Ú2â ƒnï‹ßü±ÀòV-ÔÁ‚`+ê@B‚5˜€!ºq Ô‘ Ú‡:ð¡²Ä!j0H Ô „ xQƒ ¢¶@¨a(L€ yЯoŒãZL@Z@k&€€:ƒ €B|€øð!j° À˜@àÔ€p&0€Ô€T)„ ø‡ `PàþCPà pjÀ‡ ` †0&@ˆÔ`…j0>Ô`|@òÔá5j0€:h5˜j0Ô(@@ €:@AP¦P0€<u@ÁþòÀ‡ XA |¨ÁQƒ B„@Áò@¨`D¨ÁjQ"€*„!P€€<@uàƒ ä¡€‚ L!B `y >0€<ðad¨ƒøPƒ ð¡8„ ø€‚ä¨C @„ À5Ø!Èà€ ´Þ”¯¼åçZ‡`yà(0:bÔ B®;B‚5˜j0>Lad8D &À‡L  ר12`#Cf AðA| È ˆB´áº D &`AB| :0>Ô`¶  !BLadàƒ þ!>Ô`uX˜)AAð `À Ñ×5|Pp‚À‚ÀddPÀ50‘P… °—ÇèC4 i•505@(€8y°À50… |P0|°„‡PÀ50€|PÀÔ0d0y@y‚b ‚À(€|Ð(0mÀyÀ50„PÀu@‚@(€|@À50¶@`‚@0y@yÀ‚@€|°‚b ‚@(€| þÐ|`B€|PÀ5|P… |€ÀPmPÀ50‘P(@u0@è‹¿Œ¸@°lU@|@€|P@ ÐP0ˆ3N 0PPdp0P€@@ ÐP@ðd@ P0ˆ3^€05Àyà0Ð@ Ð|@Â0P0ˆ3mPàP0P€´N€8Ðu€0€8ÐZ 0P0 P0ˆ3mPàþPyà0@5”0m@Â0|€8ààP|€0Ppu0u@DP”Ç–mé–jUlY[²P[‡Pd` µ5 u@½Ðy`u@„P[‡Pm mCTd` µå m…PdPµeuвÐy` (Poiš§‰šE4 ©é𝠛‡Py›µi›·I°·É›½é›¿ œÁ9u00yšu@m°Vy@yÐ ÅdÝ TAÝ u@mpT±y@yÐ ¿dÝpµ%þœíéžî¹ ® 0°Vmd ÅÐ@‚ yp]5À‚ P00‡€°md ¿Ð@‚p@ïé¡j›Z ànZP¶ lu@ Ëu@ ‘@ÐyP|Ð ² ‡P PÔP PÔ`P0d ʤMê–y00yÀnu0PÂ@ @àP… |Àà|0P‹à0m€5Àà00P|P Ã5ÀTÁ€ÐàþP|0y05@5ÀT±Pà 5 @y05@‚@uàÂ0u°0„P|@€Àm€50|0P|P|@…@P0Dà¤ãJ®sµÂ@x•505@PmPPZÀ50… |PÀ50|€Pup50DPPZÀ50|Pà5(€yPP (‹P@50u |PÀ50P€Pu@ u@@„ þ„€PuÀ‚@(€yP‚²50DPÀu |PPà5|€Pu 5°„@0mP®q+·K¤Â0ìF0uP@ DÐ×5… |PÀ50|0C‡PÀ50mp]ÀÔ0d€0dP ³50|PÐ×5|@ @0Cµ@`‚@€0dÀ‚@‚À50u°0‹PÀ50|Ð×5Ô0d|0C‹P… °s ¾á›y00uþ 雾yPP„€ˆ“€|PP‚À5y°À0y@yp50|P°À50|@ @°„P (‹PÀ50€|PÀÔ0d0y@yP d† „°„| „0À0P (‹PÀ50|°À50Ô0d|°„‹P(@u0@êkÆgŒÆi¬ÆkÌÆmìÆo Çg¼Â@q¬Æu0dÀd(À5”0m€8à€u€0þ@‡€0”0m€50d?€0@´€0”0m€50d?€0@´N€8Ðu€0€8ÐZ 0P0 0P€5”0P@u€0@‡PP„@5`Ç÷ŒÏù¬ÏûÌÏýìÆZ àÏk\[²P[‡Pd` µ5 u@f\[³PdÐÆu@¦P[g\[³Pd (P÷,Ò#MÒ%mÒ'ÒjœP) Ó1-Ó3] 54Ó9­Óþ;ÍÓi¼Â@=-ÔCMÔEmÔGÔI]ÒZ  Ôµ¥ÆÝ ÔSMÕUmÕWÕ´PBd Æ‚ÕemÖgÖiMÒ DÓZP…°ÆÝ` dj­×{Í×}=ÕZ €Óu0P„@à0Àm€5 ÀÂ0°5 @€0ÂN@~ Û±-Û³=Òy00u0ÓyPP†PÀ50PÀu |PPDmPDmÀ‚@50DP@þ°„@0m@ÛííÞ|]Py°DÀ°†PÐ|0m ‚BuÀÓ5¹PÂ@4M0uPy0uÀÔ0d|Ð×55|@@5|@@| „PÀ50mP€5PZðÞ;ÎãYM@„P| P@u dÀ@²(P(0; ¹@Â09505@5€„@ @À€|PPÀPmPÀPmÀ‚@50|PÀPD|P€dþÖé‘^Ò(0yÐ@„à„PdÀ@²d@y°P„5@y`ZPDPy@…ÐudDPuÀDPuPZPDP|dPPd@dTQµ u°Óu0dPP„€50dPP@ @€€|P€€P0U>m€0?00ÀDP’Îð ïðiœ€‚P@y0ddÀ@²dPuDÀ0€P„€0àdþ…05@ÀéUî”0uÀ(0àPd@ @|0 PP 5 50Ô(P³P[„PÐu@5mPµPP’N÷qŸ P uP@(°Pà|dÀ@²d`°PmÀy€(ÀPd@m@PPdPÀm5Àyà4y@PdD@P„·@ÂàD]yp ‚… P` Z€€P éPr¯üË¿m…T|dÀ@²d`þ‚€P5€|€`d…05@P@„5€@ 5à@|‚‚‚ˆ‰‰ymŠ‘’“”•‚uVd‘mm•dd‚œ–£¤¥¦§¨|Pu©¯°±²³´µ¶·¸ˆ5ˆd|‚d|d”d‰5„ˆ5|„‰dˆ5dˆd‚55ç5Pdˆ„‚¤5Ž5¹¯‘„•‚„õ Œ”ÇÑ(*\Ȱ¡CA5Ô!€Œ døÑ">ÈL†""ÚÔp€…>5$"   5È@€Œ ç("þ!AÚŒDÆ‘ƒ¥P£.ÕR” 5Dâ´´ÆAœ¤’É#µ¬Ù³h—np`Cž´pãÊK·®Ý»xïÖPC‚Q€ D>‘i£‘O(ÔàC>mÔàC@ >yjÔ@„”5È@€Œ 5È "H 2€Ÿ:“ò pÔ†nÚ:Ô”g™&ØÀ§†£ | p`Ÿ:M¨áh‚ ˜ÇÁGP  b¼¾ý‘PØ@@æ¾ÿÿ(à€F2ˆ@ |@†"Á‡~L ˆ~@H lM‡ 5°…þ(8‚5"!5ðÅlAAˆ" Žh1I ŽÔP "yÔ0@ ‰Ô°5´!!|Ô05 À äQÂ"H QÃdÇB†´1äœ#åA!5Ì¥çž|öé矀*èžuц"yÑ"mÖ'QµAÆ$d8âÀ #‘Àu ’ÇuðQ|‚ÂG ðQÃ|ÂG Bˆ 5LÀG ´Ô€ˆl€é±g9p§m ëì³ÐF+í´ÔJ†mä€#mP›G Ô H (R|@@‚ÂþG ðQÃ|L€L !‚Ô05LÀ5‘uL€ÕNKÄÑðÄWlñÅCUƒ#8RÃÄuL@FÔ!H |@1ÁLPÀP 0Z8‚À Lóm 0 ðà °DÔ1²uPXOWmõÕXg]–ú)p1 5(ÒFeÕQ‡T5h=¨ú‡Ût×m÷ÝÈæqg ˜šUC} ¢ EàˆÃEPà ‰G.ùä”Wnùågiñ˜wîyåu8P8Å稧®úê¬#^ÃäÑúì´ÃUÇ þÐFí¼÷îûï–#@a À¼Ž8`üò‚äAFÌG/½ uè7€ÓgŸz ŽÔ ý\5RƒŸZL0|ß·Ï;l9P‡ûôWî€#ZÔ5 0AŸ5À´BdØ“ÈÀ:ðeA#PZð‚Ì Û0  a\Á-œ yàꀈ6ÔZ8ò ˆ: ‰Ð@>háPȃ ê@„h!|¨j …<B 5 BQ"Ô@ y¡·ÈE© Dè¢ÇHF¹@Á(£ ÁbàÃ6 ˆ< |þ!àEyP@>€pÚ0L`ZhÃ0h(À0€:´a˜À´P–Ršò”¨L¥*WÉÊI´amh¥,gIËZÚò–¥Ü€#j€Ë^ö’|ȃ ´€6@yà>äAZ@QD‚ ò -  5p€ òP‡8@y¨A àDêàËZrB–Ÿ@D>цzús$dÈÃ?JЂT*y@€#ÈpІ.…| C &à! 6€A¡pȈ L dø@†LÀ þP2‚¨ Ã j@‡¦’²D… `FªT§JÕª&¢ Ž@@¬ÚPBh @> Àuø L@¬ C"j€HdÐ& V!( …< `€&€tÔ y@Á0-pU uàC &N”¥˜D  BH‚ yàªjWËÚÖŽ„ŽØ€kÿIˆ 8@dø Ô‚Ø€A!Z‘2€ p€ È2 ¢ ˜"Ú€€ ÔÀ“h&PÕ:Lu¨þ0s8b‚€0äa@ øP `5h€ð¡˜6 B"j…a¶ΰ† :Gaô$È0€ yÈ @A 5 b€ Š˜À À‡<adP€€£d¨ဠÔ@ ‚pÀÈ"B P¨ဠL55@ Qƒ $‚‚¨ÁP y€êÀ‡L@uÐj0>ÔP ÚÀBÈP28`m¨¤'MéJ[z yІK{š-ÈCþà€ ‚¨ê ˆ6 À‘‡ °eD ÈІ8 C Ø‚€6Ô€-h 0¶@¡lA@<2 `u@D &Bâ & 2ð¡DÀî ð¡à@>BÐø l€Ú¸À>i28Ây ø?ó@†6 "dhTò@†6,¥ŸˆDÈІDäáˆÈÃ'ñ DäáÏC PAÔ|¨ƒ !ˆsL€ ØÀò ˆ<ð¡àC6€>Ô`|¨ø´„ÄA¸a ƒ§·þÎõ®{ë5p ¾Nö²›}u˜ø@G €ÙÚ€€L€ ø0dpÄjv  5€(LfhC€ à5¸¥æ7ÏùÎ{þó —Š¡…Лþô¨O})ëІ²Ô ‰¨Ca6E´¡#©TÏûÞûþ÷ÀI€Ô!øÈO¾ò—Ïüæ;ÿùЗ„á€è[ÿúØOàÀy4 *z@ƒ¶= AÛ—åöQ©4èaû‘Ðô°ýìÛ?ô(pD îÏÿþÿÞÀyàP€È |€ˆ‚þ€(KˆJp`h€ˆ€p`h€Èw‚(yàŽ@)ø‚0ƒ_p²´}œ'pB |@€w`c`4pˆ`wЃ¨$Û—Jp=ˆ`BÀp=Èh 1†È×b˜†jzwàpz@`Ð` |à ``~hh `Àzà `BÀ`~hh z@`   €|ppˆ ° |pÞç}| |à}|  |`|`BþBÀÞ `~hT `BÀB  à=xˆ  ` °‡ˆwЊhÀBÀÞ'B | |à}|€ оòÈJDà0ø˜úz  ‚@  |\ð|  °hhà €)€‚€|@ X`wÀ°hh 4°zÀ)   M`w@ Bà4 z€pX€ =¸M`|`B°Šà €)À_ÀBà‚ (B°M  € |€>éþ‘€   ’€àp€”r9—tY—vy—x™—z™àD°—€˜‚9˜„Y˜†)—h p‚€ˆ~( ˆ¨Èpˆ‡ˆ|€“€ˆ€|€€ÈB€œihpÞ =Ø `|`BÀw r €‚‘é‚ (Bà| € |pÞ  `’ð‡žâ9žä™y€ŽÐ幞ìÙžîi˜z  |@ | % |  ˆ¨È)°z zÀ8 4þ°pÀzÀX`pàÀ)à)°z z€e =È`|`BÀB€r €‚ÀBà‚ Àw (Bà| À M |€e pà}@z wà€Zª¥dà[ŠŸuð m€œ€—uð m žœ ˜Ÿ€uð m`—œ¦wàh ``+`~¸p  °ÀBp¨ Xà‡êc à€Bp¨ z`àÀ` |ð‡(  ``h€”~h`BКþh€”Bp¨ÀB`~¸pÀhpˆ €p¨°X    ` s ` M aú­à:ž5உ0€„€—P00‚Y„@mÀ„0—5p¯ÐŠ€€P00tY€5@žuyh wp{yhP—w€ˆz€›w€+ «wr) X`#û²0³2«àP0³‰P „€œ —„ ˜@€(@|À s9dFKŠP „@—dd€³Z»µ\‹_  þXеd[¶f›y00m0žŽ0°|Àà5€„À5à y€àЊ(mÀ„ m€5€@|€@‘Ð|5P/à à00P|Ð|5Pf€5À5 „ y050 Pg[½Ö{½Ø›½Ú«Zà0ž5P@Ð50|PPDm „€„ (0yÀ@Š€|°dÀ„ u |Pþ@m@|@m@“5€„ 50P€Pu P|PZÀ50|PDmÀ„ (€yPŠPPd°½syÞ’à}‡9±‰0±[ë}‰pÞKá}0;±HyÞFüÅwYŽPâYÀddPÀ505|@@‚@ˆ@‚@#AŠ@‚Ðì†@|@“5€„ ç0dàŽ@‚5Àm0ÈÀ5|@@|@‚0œ d þd€P`¼Xà à’ p˜€‰ h°µ`‰€°0 z™Bð²€H‰°ËÜ,—àZž5|Ð5y°PÀPm „€„ (0mÀyŠ€Ð|ÐÏ|@‚°À50mPu°ÀmPu°0 Pˆ@‚p@°‚‚5À€|PÀ5|Ð|@‚°‚’5°½_ps €|€zB`‰ Bàv‰Xà3+ B`þ‘€“€zpBà‡ùw Xàt €|€zÐÍt­m00up˜5(Àdà0(ÀP0037003md yà03Ð5ì6W€(Àm€( 3ÐP@ðdÀ5ì6mP€€P003mPd mZ½wàp`|`àà‡€‚€|€ Ј ààB  àBþÀB  àBpˆ`)€ ˆ  €ˆ  €‡( ‡(œ) Š``à|   €`~hh °Ѓààˆ€| ° |€`(° ‘ 4``p   €`à €wàp|  €|`À``~hh ÈX°MP×~ÎPàp˜5mPˆ`6‰ÐuP—u@#Qd0 f“dP‰@u0˜u@“`6ŠÐu0u@“аP`½z  þ‚ ÀBà|à €)€‚€‚€àpÀB°M  ÀBà‰  B`XЂàX€B‰ )ÀB@@pB@@`4 4àw B°M  À4°zÐp°hhÀBà‚  ÐB°ˆ€|@ X`Ûà}| 0 4°zÀ)€4°zÐ``B`| B°B€B‚ ÀBà|à €)€‚€‚€àpðçtŽP†IP€ô`Üña½h p‚ þÀBà|€Š€ˆð| ÀBà| Bà‚ Àh`h z°w€z°wÀB` ÀB`  ``‘ ÀBà|€|€€˜Bà‚ ÀBàˆ€|à­‰|€€Bà“€‰€|€°Bàh`|€àw z°w Bà| À¨ˆ_`)õÜœàd Z€ýàýz  |  )à|€Š€|p h Bà| ÀB`|p€ÀÇ'þdÀw'dÀ‡e'(„&(D#((D#ˆf dàÁ‡f dàf dàA)„Æ'äÁ'äÁG#Á‡eçáAÉ'dÀw'äÁ'äA™Ë—² '¨Ç‡f@)dÀwG)„ÆG³Ç§§G#Á‡e#äf ¨'´ Ä'DC)d —âÁ—»Ë—Ëwç!FŸÀ <ˆ0¡Â… õµ Ú4¼ˆŒ;îÒè‘£Æ$)Ýñ€„X°Àƒ ,`zÈ!d—„X$,À‚fåAhV.b@‚” ásgÁJwÜÇÀ)øÀ1ðÅC 8¾xHAÉ€>`‘°Ëþ Ó%4+HX€EÂ,X<Àô0F‚Ð`±`À>hV. d@= x0€æŽ „Hâ,”îxà²à%4+%,Óƒ ,`zÈ!d—ðáÄ‹?Ž<¹òåÌ›ï"1ÄΫ'Ïe¹M²ï’ ¥\Þ½ç*Þø;éݳë>B À¹Cœ†]4„´/‡ÆÝÇrw aÜpw»À¡Gr4!Üzÿ]ˆa†—D!°as-'„Ë}a€éÁa wP¢QqBx¢F!Þø_.X'„»¡ŽBÞ(„C‰d’Âå1þ‡ÖqãJ ¬°’‚¬t—1H`Bð!„ x „,`€ÄÑ@ƒwðáYPY€X`€+y „Bða€‚±’‚èa4!„ x ÄpzÐ`€h$áY€†diÀ +y ˆ,`€¥hèa4!ˆB(‰l²Ê.Ël³ÍNइDÜ(„X4a|x°) ÁG.‚`awHpÇ|á Bx  è…w 'Á4!ˆ  ‘,€F hÜñBxð…X a ±K.‚ þap4Á‡GÃzð‘w|Á‡ðáÁh¤€,€F hð‘‹ 4H ÜáÁh¤’XÀÑ„ `qdÓÂ¥$ˆ w¤GÔVGÒÕZo͇F[ß‘QkÄuÙfó±ÞÙj¯ÍvÛn¿ wÜrÏu ÑàÝg ah€¹XKÔ ÜÕYJà Bx ˆ+­„ÆÕp,àÁ)’KÔ¹D Çâð!`!ˆBðq‡|ä"ˆ°@|á×¹X Çâð‘‹Õ¹X‹ Ln¹D­‡,ЄÞÒ·í|`ánK`€ÕXx°€\þ뱸gëáAVç²5,àAÔ¹LµhÐþúïÏÙm à$Ô¡B0°`8ð!VËEÔh=¤@|‚!ðá)X€¡‡«Ý B0€ rµ\D-àƒ<À,@Q3€ø 4ð!‚€ƒîðAàôFƒÀÞHø ð!VË…Õr!ˆ,@‚ÐC.¢!Ü!„Р¿/ÜnhÐCÔh`4ÜÁwP›< !@k¹à =ÜA(Û «i¤l¹ˆšFèö…;D  ôпLjr“ÒËþ œD„þ Á0 ø ˜x€XðL<> Á4àƒ ¥ÀhXÉî xÀh¸ÚhÀ  B€‰ø ˜x@B0@–=, ‚òxà˜x@#°€hÀ4¬dZÓƒ à AÈÒbB0ñ°à˜xw€<`€ÀÄ‚€ƒ, ÂBÀß< ;@0€à  @|0€ àèÁ 0€ø€…4AB0€ø`>èÁX<`€, BÀ Á€Ã]Ðð ÐC p, )@„àAaM¢þ– >Ð@zÀ‚ÖÓ¤„Bð@Ù$p4!j¹„€† A¹ˆZ.!„4A  ô€Ü Àš !,@VB ø „4A àþÀ!x@°€ ÀH@X0ÀÐ`ÀAmd.³™ÏŒæ4«yÍe®Ã ’6›-X³ÓŒ…\`áÎ|î³ôÀg4HÀw„<À!x‹óîâ4ÀÈCƒ ¾`€Ü¥ 0rÁ4 ¹°š< !x€Bð@ÔrÁ  |@ƒ¢&p  ðÀRµ\"WËEÔr!þ!x€BÈòР`M@ƒ¤`z„ø€DMàôv4ÁQË… rqµ\D-‚‚ø ¤`z„à „;¤À|Ѓ A‚‚ø ð!àƒÜAXÀ]`⨡a% À° Æ0ñÀ$` X°€<€> a% ÐÚhÀ  XðL<˜x@XðLù<2´ŸÚÔ¨³Ÿ65êl ªF 25ztè‘¡ø@Ð>P´yª>uX¨®ç¡4xVÑ¡n ŽnSpÀ€gÊ>K\¼‚a :S8ð ƒN˜)|0àqÊçÍŸhë ]˶­Û·®j@2 @(ø@™0`À„ Oh“Ç€ ÈÊãÀ0&žÐ¦þ\à >m8@€BÕ|PÐ0¡ð„65 OàS(øÔAà`€Ç‘É;`UZàjÃÃ:&\`pŠC80˜0Ñ CøìÁa‚CÆcx3ÅSTíY‚Á†88˜ÀA|àáBw8ìLÁoDøSð!SàÀ&ÈÂǼ±KàSð!ap°…60Æ(ãŒ4Öhã8ÆXmÔqHu€ÒF¶ÔAF+uÁ  Q(dÔ1c ´Q(mäÑJm°Ò@‘£Œ{LÁÁ†à‘Sà`ˆ,‡àÀÁCþA[`@Çì±xàÀÁC¼ÁÇ8°²{ð1Dì±x,aÂSà°„ {„aƒƒ*S”÷†,|¼Á{à€ t¬ò† 8Ð1æ­¸æªë®¼Îø½ëÊ#PÜØP Ë&à€‡!tŒg†Èrˆ,†Lo`ð†,|¼Á²€2¬Èrˆ,|¼Á²ð1…,åað¾¡Êð±3àÀǼaHpÀJ ¡ìÃG,ñÄWlñ­{LÁÁ| aSà`ˆ,‡ÈbÈðt,aa`@‡, Lx¨²tð±G&þðtà`Cà0{²G¢ª2|„A&ðxL±S`  8˜ðÆÅh§­öÚl·í¶+xàðÆŒÇA8$ŒS$ŒS``Kð‡ .pàTÂ8òFw¨²‡ à€A&¸ÀÁ|¤Ñ da8`ðÆ+&`à8àa‚ LÁÇàÀÁªl1ÅÛ¼÷îûïÀ/‰´Lx€BÇ­àAG+x¼q{b"(x¼ãx‚Çx/þøä—oþﲄqþúì·ïþûðOƒG„tÔHñ«‚‡Òaãýù  ¸¾0à€8¨‘,þ¨Œ!¤AX8X考0ða8ØÂ+L p6’GH®- x0„,´1€â~´xñ¼a Åp@#``SÀ@ø ˜€iÀÃ!€CÈBSÀ)î‹7ìÁ„X´Q ÈŠá5 Cׇ˜†ö€p |ØÃ0à œÁ.ÀÀø0pNé ±˜€aÀ€ \€ð! Ø‚!¦€>àÀ|ØLÀ0ìÁ&ÀÀø0pSØLÀ0ð&ppð ` .ÀÀø°„%`†ÀLþ€Cìo0„, ±˜€aØÃ0à ÜÏ.À€SLÀLSèø°˜€aàLà à ØÂç© Ô¨Á!PzŽoSàÀ@! >,{Øð°ìC(Cø0b 8…, ±ìa `¶0â .À¦Pž7ða ØÃ0P „[0Äp`ˆ%p`[À¦À-L¯À –à ¼&À¶°‡)p`  ˜Â! C,{ØŽÀ=ðaoÀCø0ða 8 …,ø°ìa ÀÃ8°þ…)p€opèàÏ‹o0ð YðA|xÞ ‹CÐAZ80Äp YB|xŒ€>L‡H†0 ða Àƒ,øð ¬àÀ 1B|xÞ0ða 8x¦€)`à tà80„7˜x8Ä8€‡CȲàÃ0Ѐ‚Ò¦€RÈ‚²àÃ0ð†)à€SÀ!Ò€!°ï¿ð÷0Lá²àÃLÀ‡0`€Kàø°˜€SÀ!¦€>àÁ²0ÄLÀ‡0` 8àÃpÀ<àÀoàÃ0À‡þ0`à K0€3LCÀ€!¦€>àa &àC0@‡)à€SÀ!¦ð†Uà HÞà”7L|ØÃ80CLa  …!–`>„@àø°‡= Á|˜ø0 ð‡–`>„t˜ø0à&xƒ€'}«,[0pð…=àýà§1€ þðˆO¼âÏøÆ;þñ- OùÊ[þñ÷c9"D‡W˜èò ½Ëk€€ˆþþô¨—Ædž‡ATw—ËÀàà&xCêwÏ{C ½>ÞÓ€˜¿a‡ –€žãá XÂV1ä| 8Åý\. U¤†bþ†=ÿüsú×Ïv<àÀxÀ€ \€ÐÁ.ÀÀø€`°8À0|°‡€Sp{€&Àa°.ÀÝt`.€S€&à€¬€S``.€80&À80|°8À08€ão€&à€t`.€SÀS`€NÑ8`{€&Àa€&à€þ|@&à0†  €8`xÀ{ÀoÀ`.€8@&à0|€.€8À{€€SÀaÀ[Àr„Xˆ†xˆˆ˜ˆŠ¸ uP°‹‰’8‰”X‰¬°SÀS`SÀ[0€iÀS€|08àS€K`{€|ð.€tÀ0‡°°[€e€{€CÀx|080°SÀ¬€S`SÀ[0ÀS€‡°&°a€x€ðCðSÀ[0€iÀS€†08 ²`KÀ{°À°SþÀ|€iÀS€† †°SÀSpS0†0°SÀx|08ÀS€.0°&°a€xÀoà8@–ø’0“2¹ uPd3™“:¹“Šø&€x`S€|08@Ò‚|à8ð€õò†0|€SÀx°²Ào€`€a`SÀt -808ÀS€¬€S`S€|08ÀS€‡€õò²pS€|08@Ò‚†08 ²`²Ào€F€|08Àt -8`²`o`8€†°€†08ÀþS€t -8ÀNo€8P/o`i€CÀ“¼Ù›¾ù›ÀœÂI {00|08ÀS€C`|08ÀNo€CÀ{`{€8`o`0|0o°&Àa€t`S°{ÀC`|0808ÀS€¬€S`S€|08ÀS€|€|0°†°²pS€|080&ÀS€†0Àx`²`K`|8ÀS€|0&ÀS€† ‡°SÀSÀS°‡08ÀS€C`|08ÀNo€CÀ{`{€þ8`o0œXš¥:Id uÀ¥mpmÐ,W\ÚÂ9¦†8¦ZJ x€o`&À:€ãÁt`S€o€Y`€ð[0‡0õòx`.ÀS€€0|000&Àa@ a€`8À&Àa`oÐÀx`€` ƒ†`&À:€ãÁtÀoÐ808@x`.ÀS`&Àa00P808@‡€8P€‡`&À:€ãÁt`S€o€Y`€þð[0m°;‰ 0pÀrP00Ѝà@ˆ@ˆu0PËr&â xð¶@{ÀS€{`&²ˆx@ €o@ &B x@­@{À &B K0®`"®€oð±H›´†X  pcZˆˆd5À@ˆcJˆdd ´Á™&€&‘x¶hë S°iÛ¶nû¶p·´Àà|P0°‡ð|Py1†(m@ y€àÐ|ð†ÐàPyàDÀyàþD  €†f€5À   dPy1|0P|0@«5 ·Ð½Ò;½Ô[½Ö{½Øû 5P@Ð50|PPDm`p`(0yÀ@¤€|°dÀ`u |P@m@|@m@ªð‡PZÀ50†0@@0d°d`À(€yP|0@@¤PPd½Ò`"«p?8ÜÃ>üÃ@ÄÙ[ÀddPÀ505þ|@@†ð‡ð†ð­ð¤ð†Ð @|@ª0pmÆ`p@ ÀyA|ð¬@(€u Ä­`o° ²€ÈŽüÈÉ’ 5|Ð5y°PÀPm`p`(0mÀy¤€Ð|ðÊ|ð†°À50mPu°ÀmPu°  5d`€|P`p@ À0y`yÀà Pœxpa€¬p?‰88po°“<Ïô\Ïöl5þ(Àd0(ÀP0…170…1md@ yà0PÐ5 1W€(Àm€(° 0 1mP…1|P…1†PàdP…1¬Ð ˆŒ8`x`{Ào@&à0|0Ý|€0ðÝ0{€&ÀaÀ8€ãF`€SÀaÀ[pÏ„]؆½5mP‡$ Ðu` u@­PdÀ @ dP @uÐ u@þuÀ@bˆu@µÐ°PÄ{00 0CÀx|08p²`8Ào0o0[€@À{°€|€ðCðS€ ð.€tpØÜÝÝÞ‰ß]½m€,@ü&€xp{ÀxÀt -8p²`²pS€|ðÐ8Ào€oÀ²pS€¤0ãÝàþàሸSÀS`S°†0&ÀS€‡ † ‡0Àa€@`|@| ‡0ÀxÀx€&ðÞã>þã@Þàx€o€€†00þ@a€ ƒI08`S€&€K€&à0|0 ƒ†ðÝÁ|°SälÞænþ掼S &R S€t€‡@{Ð x@pè‚>è„·S°…( aPèŒÞèŽþèé’>é”^é–~阞难éœè5@ Pdp5@~ꨞê÷ 5 P‡5 ê´^ë¶~븞뺾ë¼Þë¾þëÀ‰Sð 0opSðÁ¾ìlžd̽0 €Sp0ѾíÞ5Àíâ>î¹þä~îè~êP鮈@² cŠˆ\ uþÀ¥mÐîø.·@ùnˆ@«ðˆˆ P00ý¾ði[P  ZP‡À50¤0¦´PÀ 5ªð«@yñ(o P)Ï u0P†@5€05À5Àà0Ày005Àm€pÀy05ÀP0DÐòfÏ pö‡505 5°†P@ À50PÀ(€yP50‡PZÀ505P@Іð|€PuÀdàþÐjöuP°¡Ïd€P‡P†P@ À1d|0~ dPpm05|@@†ð|0½O† °=~ýØ_ÏuPdÙ?ÞyPP†P(p5|P‡ð|à@À0y`yPÀuÀ€€ÀW3QÀÐÆÇ71Á·1·˜W7@¶˜©¹ÉÙéù *:JZjzŠšªºÊÚêú +;K Z7AV7P—I0À5100QP3AU‡0@Fö;ÀW€€0@€€Â5Q<á…0K@FTSû/?O_oŸR³Y×Vª™LuÚdªSGS›:ŸêÑ1¢Ä‰+Z¼ˆÑS<;zü2¤È‘$Kš<‰2¥Ê•,a;libjibx-java-1.1.6a/docs/tutorial/images/collection-binding2.gif0000644000175000017500000021124510350117116024456 0ustar moellermoellerGIF89aF&ç‘ ÿ """)))ÿ000222333€€ÿ777""ÿ‰‰DDDHHH22ÿ33ÿJJJKKK€‘"‘PPPRRRUUU‰XXXDDÿYYY\\\š2šš3š```PPÿ"‘"ž;ždddRRÿfffUUÿhhhXXÿ¢D¢¤H¤2š23š3ppp¦K¦qqq``ÿ©R©vvvffÿwww«U«¬X¬{{{D¢DH¤HK¦K°`°P¨P³d³………³f³wwÿ´h´U«Uˆˆˆ{{ÿX¬XŠŠŠ¹q¹`°`……ÿ¼w¼f³fˆˆÿ–––¾{¾ŠŠÿ™™™ÿÃ…Ãw¼wĈ죣¤¤¤™™ÿ…Ã…ªªªˆÄˆË–Ë££ÿ¤¤ÿ͙ͯ¯¯±±±ªªÿ–˖ңҙ͙¯¯ÿ±±ÿ»»»ÕªÕ£Ò£¿¿¿¤Ò¤Ø¯ØÀÀÀ»»ÿªÕª¯Ø¯±Ù±Þ»ÞÌÌÌà¿àÍÍÍÏÏϻ޻ÌÌÿ¿à¿æÌæÚÚÚÌæÌÝÝÝßßßÝÝÿïÝïÝïÝìììîîîîîÿ÷î÷î÷îúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!þCreated with The GIMP,F&þ# H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cÊœI³fK>†êÜ)Ð><ƒ J´¨Ñ£H“*]Ê´©Ó§P£Jš”‚U , EâCC ;øPàSô*…%†f >ùPài#|(ðÙÉ·¯ß¿€ L¸°áÈ+^̸±ãÂXìØ1`@$C; 1¤°ÃÐC°ØÁ¢r…vDú³ÃÐAC; E0ÐÐCsëÞÍ»·ïßÀƒ bÀa‡#8Œ²ì€30ËŽ,v0‚ã£,;àþ̲# CÀÈÈÃCÅìXb(Kà‚ã£,;À #p0pÀa#p0"P;,ÁH$ŒÀÁH;ÀA܆vèᇠ†("cÀ!ÐD à@ G$@Aì àŒÀ!P;À±0€ `È8@$€0 pP€UYÀ‘80 `8#pŒ¨çž|öé矀2€$€‘À@‚,!P;dQ°$À%°C$YÀ‡@ìPp䀑d1#þ%°C$À $À%°À ÁYÀG$Œ$À,!P;jíµØf«í¶ÀÂd À$À@V±àÀ@ì 0U‘°@Á@ìPpdU$,$0ÙP pD 0UpG$ p°@Á@;$YÅíÈ$—lòÉÃÇ@ì 0YQ°$À@VEbÕ@ìPpÀ‘PÀÀ;d pD 0UpG$ pX5ÐÀÀ@V¡¬öÚl·ívBÀ1Ð;À@‚ dþ  DÁp YÉ DÁÇ@KÀG$;8`pD 0UpG$ð!À±ƒ±à dÕÛ´×nûí~°D‚ 0UYE$Y °$À@VEˆÁ;À ²ÀÁÀ‰‘E$À $À@VÁ‘°D$†À@‚d Ø0«àî€L sö$@ ‘€€X%` Œv$±Š@²°À;(Hà€,$ h`"8DHb8þ‘`[ÄÀ!;h  Ä*ĉ¢§HÅ*ZñŠXœ"à˜,Á/  à`CÀYL£×ÈÆ6'Aá’ ÈÑRtÀd(0Fàñ€ ¤ ‰Å  VQH(0«ò7,° øðÈJZò’˜ÌäBÄ`ˆ  rTÈ(092ŒÐ¤*WÉÊVº“† @ ±PØ[( $À €!À Dbl¡@$€‘`„À– ` ¯Ì¦6·ÉÍn>†;À²da àC$¬" ` ; ÀˆP` Vþ‰Ä°„ p#(àHÀÁàƒ7ÊІ:t¡pH ! p"a쀑ØÁU"± Ä*‘Ø"± D‚ÈBv 1ÀÍ©NwÊS@2bØA$v€Hd|ˆ„U² DbVI@$<@X%; @$v@$`K`„!(8ôô¬hM«Zc ÀaHX T†|HÀ²€°€- @²@ÊPÀÈBC ðÀv°ÖÊZö²˜-  ¡Cb';#²€Ìšö´¨MmcÄ$ ªþ­lgKÛÚÚö¶¸­­‡Ã80BŽ‘ca4C$ˆa!G†"A| #àÀ9"DŽ…IÐ@ ‘ >„p`„sKÞò*Ä*Ãáà`„X¥0 À@²@Pà |¬Â,P` «DbfáC$¬¢“˜…I’ €áà`ózX­b0DaäHb2Ù"Çì€Ù b„À“Ù‰U CL&€XÀ8DBŽ:¡@d8d(ˆUCL&p`ć·üPCP †€@ð!Àþ"Á Àl¡<‰°…‘@ D‚[²P$À àì p(0FP`ØA$ ‘ Eb‘HP$v€P`2l¡€@àP`Œ À°ƒHì  Àø`‘Ø(Ä*a€Db‘HAÁ8|ˆU"Á‡8;ˆ#,H– Ct‘ØA$ >D;0 ØBÀ ÀA`‘àC$°CÌ!À"±PˆU ;ˆÄþ"‘ HdaKø£ÊWÎò–û…;À² 8`0„"± DbÈÂ`da àƒ@¬‰ ` ;@$àFPÀÙÁ–°ƒB ‘Ø"± 8``A‘" f9È(@«dpÀÀ‚0" 0D$v@B ‘Ø"±da àC$¬"$€Y€!‚0"€ƒ@¬ Cˆ!; @$à€,ða p@ø°„HdÁ,Àbì€ØXFd†v Cˆ!; @$v€,,|ˆ„Uþ‚0" 0„Aàà ðÁåèO¿úñ‡PÀ™ à>À(ˆÄ 8 pp V ;@‘° |Y;`;@‘°À÷G‘0@+†ðn±@V!“Ap°Bp ;@Á÷G‘° pp V!°Bp VaV |p Œ@0KÀ°‘`a1@+; |p ;‘‘`A+!àë7ˆ„XˆQÄþ;0; “Ap‘° ;‘` Y| V ;@‘°  °KÀ± ;@‘° “Ap0Œ Œfq;‘`a1àÀÁ‘° †à  ;@‘° Y| V!0Œ Œ ,0| Î!V ‘° |°†àÀ;`‘f°a1àÀÁ; ‘° ;‘À‘`áÀÁþap`ˆ8™“:ù†@p;@p02|°À; , Y@•A0Y†00` 0YP#À °` pÀpÀPÀ °` p pÀ°#À; ,PÀ†@ ÁpP`# Gà À|,  Y@•A|;@pF@‘@Y°þ#À; ,PÀ†@±;`ˆò9Ÿô9ž5;|`‘°À† ;ŒÀž¥†|a|°†a| žU|` ap°†áY†0p`Œap€žU|` apPŸ4Z£6V‘aY°bYp£DZ¤Fz¤Hš¤Jº¤LÚ¤NJˆ† | † |rDpP^úpॠ‘ !Ga ‘ ÁpÀrdrôŒŒ GáYñ§€¨‚:¨þ„Z¨†ŠY@@‘0Vq¨p!…‘©p™zŒp; VqY@@‘`|p`†aÁVA …ú«À¬Â:¬Ä:¬b`:aa;±@rT¬‘pˆ€HP^ €Özp|À† r”VA;@†0†!G€†0‘ pÀÒº¯üÚ¯þú¯ƒj†À,s@ 0Y0V1V!Œ@;À,|° 00lAÁþ` p! pHpp!°‘Ð!°€ˆpJ{‘ ´ pà¥p€!p p!p]{/pÑ!°€!p]{wÐ P‘€‘ ´‘V ;À Œ@;0V †àlA‘`ï ;  ŒÀàð à°‘@#Ð#;À Œ@; 0hà K ; "Œ0p Y0KpÎû¼Ð½Ò;½Ô[½Öþ{½Ø›½Ú»½ÜÛ½Þû½à Œ°°ÁÀ‘à0Œ°`aaÁ ÀY"0Œ ‘°@V!,0Œ°à°;0 PH°‘€j HH€ :  ™š©¡ БÐw€j H‘ p-p‘ p-p‘©¡Ð`pˆ p- ´PÑkK 2V ,Œ`a‘À À;@‘VaÁÀ‘à^ ‘° 0pàþp@a‘À ÀY† 0pàNYÀKà¼;à@|0½¢<ʤ\ʦ|ʨœÊª¼Ê¬ÜÊ®üʰ p`aa‘aaA+ÔP;@aa‘ ;@! H‘]+!`­!p !`¶f[K{‘©ß‘©‘©‘©è|w©Ñ!p PÒ PV °Bp V V ;@‘`ïfV1|p V1VQV °Bp V!þŒ@0KpŒ0†@bË8Ó:½Ó<ÝÓ>ýÓ;Í;0; ,0| Œ`  Y| V1V!0Œ &0| Î ;‘`aÁ  Y&@‘°`H‘€! - ‘€!`­!p -° Z°Â!`:° Ð- ‘€! ™J™J™*-° ©H€-pÒ PV 0Œ Œ V ‘à YðÆ`,0| ŒÀ  ;@aaa‘àþÀÁ‘`Á;`±,0†@ @}ÞèÞê½ÞìÝÞ‘`Œà@à à°‘PàPÀ†@€p pÀPÀ†0; 0YP°`  Hp]»€!pˆ pÐÛp!pw€е p °! Hä! `I€p!p/ä! p :½Yà@Y Y@•Ai@Y@•AKÀ 0þY½Œà@#À;P ;P Y@•Ai@;P |,`†0†0K°ç½ê¬Þê®þê°ë†ÁŒ0ʆap@†ÀÏËŒpʈ€Ћw ʈpQ쩌wð¼w€­lp༞EʆáY©lpð¼p`Á;Óèžîê¾îìÞîîþîðïò>ïô^ïлŒ`ïú¾ïüÞïþþïÒk ‘` ¨,GöÞwÐ^ê¼^ªîpà¥Ï› !Ga ‘ ÁpÀräþ¼r´îŒŒ GáYÿò0ó2?ó¦œ0 Y@@¨löp™ê¼™ªîpw©Á÷·a‘0@ @ÁVá¼V±î|p`‘p@ój¿ölßöé.†0½V1V!Ê;@!Gú~ˆ`­Î륬Œ!ð¼€Özp|À† rô¼VA;@†0Î+G­¼ð¼`“1Y@‘Œàö¨Ÿúª¿úa†À,s@ 0Y0V1V!Œ@;À,|° 0þ0lAÁ` p! pHpp!°‘Ð!°€ˆ°Î‘ ´ pH äÀ‘B áÀ!´hBÂ0‘BHxà…„!DjtAÂ*‘Dºs'ÒJ–Y @!Ò(DbDa€,cF2ä &…H†à…iG¤£‘ø$p`ÇŽšVR AMxˆÄˆB‚Y(Ð ÎŽ(ì`ä €%+wD:º’Ñ8‘² XÂRð`Â… FœXñbÆ?†YòdÊ•-_>ÌhÇ€+Y þ`ÉC†Œ–0´2&˘+Y$`”€ˆŒ"y€iÁ1W²Àh –ì@É‚*HDB¤&’HB\@r ’ ÀB|ˆÔDB‚¥ø•!ÜiqÉ0U¬XШÊD‘B,¸£…;¥;#*3d Žb)¦HXH€‘,0d¥˜"a!Fv  ’,bЉ0CĈd VЉ% €ÃÈb ø`aF–À €Ã8"Ù‚•à >–0lX‚à ø¸¬J+¯Ä2K-·ä²Ë.áH€CVЉ¥˜"8VЉ¥˜V¢€+ þ`°(,¦•bŠ@  ’( ‰"A"„HIH‚@"„;ˆ$„*#¥” ¤ÑXo%ñXBâ€Hî8À‚"¹ã€;"%$B`©‘X  Åà`°˜"¡@N8VŠ)’˜"Ù‚H A ÂøÐ* VЉ¥˜VÚ€HàŽ˜"8bl Vb„X¢0F0D01ð 2{ïÅ7_}÷å·_ÿ8àÁÙa€"aa>"aÄ„"É>VЉ¥˜Vò`FV2a>"a„‘Hv CVŠi%ˆ$ L  ’( ‰"A"„HZ $Bþ€4„;ˆ¤…YI‹ñB ¬ "A"–Ä[I<–8 0XA‚HÀ8 HÄc ‰"A$’@@¤…ƒ€ÁbŠÄƒY‰‘•bŠ„‚"ñ€‚H² ‘ÂXH ’,à#&Áv CøØÁ(lX2„‚à8vÙg§½vÛoÇý0C(€ƒ /p`€"É‚‚ À –§€C€Ðp €#8j –§€Cp`€ ‹Èb0 C‚À@ €‰î8!„àw@ þ !XÀBpƒ†`%H8€ DHà @B$Á¬äY@$q€ H@‰É‚@,D" XÒPpÈ–G%Ô$ÈBbv­ ÀXø°ƒåQ ;@À‚H"ÀT–G–À¡&àÆ0K–°ƒÜÕÑŽwÄcõ(0CÀ%|`Dc –‚1ÃFDˆ@ "î°˜G2 "XˆFÌR Æp0Œ! QJ–¨’•; !>0â0†àKà`ˆÂ°`¬f0…þ9LbÓ˜ÇDf2•¹Lf6әτf4¥)ñ€aš×LfL²Í0›ßg8Å9Nr–ÓœçDg:Õ¹Nv¶Óï„g<Õiˆ£ð!†8 ŒÉ>¤“p`?§É80‚Ÿ‡9 KøYC…‚9 aFð󚌀#ø)OŽvÔ£é5³@P Y À(`̘¤“€CL¦ÉÀ!&…aD´v°’˜& “ †€CL®ÉÀ!&!…jT¥:UwŠÁ¬Œ KbÌP@0üT' 1bî€À€!¦R8€Œ0ÄJøy˜˜f( 1þbî€Á€!¦FPÕ°‡Elb‘i $ÀŒ`€9P ÈKbÂ’˜¬„vÀÀàÃ0 L¥&X #(€d p(@$À @$ø`p(0€H0‚À êÂa%;ˆu)­Œ @8 p@$v€P`Œ À°ƒH0 À"±ƒHP—0Ypb‰Ô„‘`€°$&‘0„jBH¢ºpˆÄ"AÝHPZ(€d!p@$à€$`ØA$Aþ`Œp@°„•ì ÔÍ– X"ÙȈe݃•°`Œˆ„20F,†XILX“•° ŒÈD0FDÂpˆÄ( ˜˜¬„`Äà‚,a ̰„ †C$v@PÀ;@$XFdF(\a(08x,#–P ; ÀJv@•° ŒÈ dK ¥!–ê²$&‘`A‘b%1‰ ÀˆP Y(\a(08x `Ä`ˆP ; @$v@–° ŒÈ¼€,ða …ƒ(À‡#þ·ÛÝïv'@C¬$&,‰I$à8¬$&,‰ÉJ( §P`0; €`b²’˜D"± fˆÄ( >D‹S¡ ÈÉ .LLX“HÀ  @$v@•ì€+¡€œàÀ `K(%0˜˜D‚r‚ÃJb‰˜Dbˆ„!.\˜˜¬$&‘€à° DbˆÄ(À È À–`1Àð†{ÜåþMFì`;ˆ À‡H0 ˆDÀ‡•Ä„%1Y‰Àˆ•˜`|ˆDÈ"±DÂ+‰ÉJX€Hd& @$v@Âìþ€‘Ø"áDb˜ à€Hx`ŒX  W˜˜°„ ˆD`0ÂXÉ Cx`ŒX #ø°Cx¥„“Hx`ŒX #V“HP ‘ð"‘…Â&&+aA"‘ða`„(‰ †ˆFX‰9ØCð C €€ƒ¹ƒÀ”Àd2 €Fp ð‚p€ØHÈ X ð X àCH @ 8ˆ8¨‰È X àCH€H€È‚€,Œ€,H€È‚­Øþ €ÈCH €ÄØå¡€•0„p€Ø8¨‰€,ˆ8¨‰0„ 8àp€`RÊ È‚HÈ X Hƒ 8È X X‚šH€ÈRÚå¡€H0„p€ØH€ƒšH€È8¨‰ˆCH °p€`ÂX‚˜À]äÅ^&C€–àF&C€–08 CàƒÃàF(&UB C€câFX U Cà–08 80„e280 U:&>`–P%Á0> C€–€CðÅ{ÄÇ|ÔÇ}äÇ~ôÇþÈ€È$È‚ä(F€Fà'fZ F€Fà§a2êâ†4 C .>(%F€Fà§eâ§H .cb8`~²HÂ`8`~²HF€Fà§”¤Éš´É›ÄÉœÔÉäÉÁà€ƒ˜°H>8ˆ‰aÊ  ÈÉ, € €R ˜X¦˜ˆ„c ˜ÀI>8( ð>H&>8ˆ‰žtË·„˸”ËÂC Œ cÚ ˜KÃC˜ bÚ 8 0„©(¦˜X¦ Äˆ VC˜ŠÂØ Œ Äà§HØ@Œ €ÃC˜ŠÂØ `&þ0„©`€ƒ VÚ 8 0„©€FèËÝäÍÞôÍR2 HC`HX‚H€ €ˆ ­¨ ˆp€H`H€ €ˆp€H Ð €F €€ H àƒpØH F €€ˆC¸°HØH ®H Ð @ H€È‚Hˆp€H€ €ˆF €€ˆ„ˆê"Œš˜ Ø>H€X‰˜X p€H` ØÂ`HX‚HØ Øš þ€€X‰˜ˆF €€ˆC¸°HØH ®Hàƒp˜Š ØHØ Ø ­8Øš €HØ ð€Hˆp€H€ €ˆF €€ˆ„ˆê"ŒH€ €ˆ„š €à ˆF €€0„ [‰ˆêÚˆ €H` H€Èp€Hˆ„H€ €` Ø•ØH ®,€%øÍjµÖkíIFØØ•€È>X‚HØ  8ð €HØ ˆFˆ€ƒ –Ø þˆ„ €H €€€HFÈ0„ÁØX‚CƒHØ ˆ„ Ø``„,CÈ‚˜ˆ‰Â €€È€`„%CØ ˆ„ €HØ ` HFÈ0ÄÈàCH€H01ˆ„ €•ˆ‰•Ø ˆ„ HFÈP%êÒZÈ>X‚•Ø X 1€,€`‰˜ˆHFÈ0„, Y CƒHØ ˆ„ ÁØ ` 8ð8X‰˜ˆ„€,Xàƒ €HØ ˆ„ –``„,C ¥ –Èþ8p€€,XàHFÈ0‚¹%Œ >ˆFXp ˆ„ €•Ø X HFÈ0€ >ÀÖêµÞë=&8H 0„•` €X‚HØ Œ˜X‰ €HØ ˆ„˜Œ –Ø ˆ„ €Hˆ – 9ƒÁØ ˆ„ >ˆ ˆ„© 8 80­…ƒÂˆ‰•ˆ‰H€€ƒ €HØ ˆ„ – 9R€©X‚Hàƒh¡€•ˆ‰•Ø ˆ„ˆ 9ƒ,˜[F €%X‰ –H €,`‰˜ˆ 80þ & >ˆ ˆ„ ÁØ `‰˜Œ˜ˆ„€H€€ƒ €HØ ˆ„ – 9RÚ Œp È‚€H€€ /`ÂØp€0„Hˆ‰H€ ˆ„ €•Ø X 8( 1¸ÖOåPf&FØØHàƒ0€H؈CX‰˜X‰Fð ˆ>ˆ„ÙˆCˆ„F𠈄˜` FX FŒ €HØ ð€ˆ„ €H˜ €ð€`„•`„,˜Ûˆ‰•`ˆ„,>Ø` €Hþ؈CˆFX F %XFˆH€HØ X‰˜X‰Fð ð€`„•`„Áàƒ0€•؈Cˆ„,€Œ˜ˆFX FÈ‚¹% H€HØ ˆ„€H0„•؈Cˆ„˜Œ˜ˆ„€HÈàƒF𠈄€H0„Hð€`„•`RÚˆCX‰,€ˆ„€HÈàFX (˜[ÂØ0„ €H`ˆ„,Fð X‰€H0FX F C €€Q¦ìʶlV2 €>Hˆþ8¨‰ˆ„X ˆ8¨‰€,` ꪉˆ8¨‰€ X X CH €ƒÁH€È‚€ ­>H€ 8#H €RÚå¡€H0„p€ØH€ƒšH€È8¨‰ˆCH €R‚`•ØЊð X à8¨‰#H €ƒÁàp€`•€ƒš€H`„È‚•È X Hƒ 8 ¥­>€ƒš€•€ƒš€X X‰, €å¡€ˆ8¨‰€,€ƒš€H0þ„ 8 %8¨‰X F€,ˆ„€ˆCH €ÄHØ%€%0„p€Ø8¨‰€,ˆ8¨‰0„ 8Œ%ØË&ôB7tÁ€C` CàÃP¥Á08` Cà–P%Ä08`%UB C€câF` U CàÁ08(&U: U C€ƒÃ€C Càƒ•È‚`„Ã08&U CàÁ0>&>0–P%Á0> C€`2>`‰,Fˆ„>0Á080&>`„•P¥Á0>` C€ƒCg÷vw÷w‡weÊ‚˜þÈ‚x'¦,  È‚HÈ÷,°÷ø€ÇÉD؃=„¹t„=p„AÁ(øar„=p†?Œ‚_ †/ŒD(øAŒ‚' GØG`x–(øar„=p†7 †Œ‚G&GØG`ø`*xGØG`øÁH„Døž÷ùŸ‡Ë3€ €¹„Ø€•p„ pú)¦Ax€=PúÂp§ß€)ˆ¥/Œ3€ €ÁØ ŒAx€=PúHp¬Ÿa„Ø¥7 ¥Œ €d„Ø¥g%GÀú!x€=PúÁØ€=úÃGüÄg¥8HVRú¾|€D˜‚)X‰=x€Ap„D¦H„þÉ/Œ=x€Ap„Dˆ†? ¥Œ)€Âx€D˜üH؃GH„az€D˜|Ã`øÁ˜(¥)€Ãx€D˜|VÚƒGH„H„ÉŒ3€=pŧþê?üD€ H„x€É€!Ø€x€)` ¥„(Hx€ˆG€ x€) ŒØ€x„ (˜‚Hx€ˆ0&8‚1áÁ”H‰ö0ÜiJ$†‘Δxã⃠ìqcÄ3J<€1!R¤)‘¢léL‰§ü!Å4%ÑL‰,‰Øƒi¦4šDìa6ƒp™±‡ÐLi6ƒp„l¦ä’DìA4‰Dj\’ˆ=˜æS#Ó¨Æ5²±n|#ã(Ç9Ò±Žv¼#ó¨Ç=šf Ž )ÈA²†<$"©ÈE2þ²‘Ž|$$#)ÉIR²’–¼$&3©ÉMr²“žü$(=™† "”‘pÄ1ˆAÒ{pÄ*EÔ¬4‰`È ÈÂÏ8bŽX% ±G¬24«$ Céˆ=8b•„dˆ#öàˆU’eJ¦¼&6³©Ímró“g€Á``ÊA<` ä °‡‹€ÆušB$.š3À`0 Ë`ð™A<`ä °‡‹„æ"dÙ 9ˆìá"‚tD†ð€=\„,ØC73ªÑr´£›ŒC"y‘k> qBÉ` š$"N ÙÃáˆDDb•¢¹Y¦Ð< qŠÄ` š$"þN¡Y%Y¦ƒ@N¢y@"â$È=<`ŽHÄ'—œ{p„GÃ*Ö±’•¬‰€ÁQ“8=`(Á¦Ð’‹Dâ%ˆÄJ GÀ`˜Âg°<ƒØ@ 0…H< €Áƒ <` ‘H„Q"1…H0$SØÀ`0GÀ`8J¦ †|æ %xÀE¦P Ä0˜À¦€’‹ $%¨ a”L! ™Â&ƒ)DÂ0ØÀΉ)D‚!Ÿ™BM`€’D” &0p &ð€)Dâ(Á`0… LSˆD"Œ‰)D‚!‘€Á4ò€:À`þ˜B$ÎP‚\$SˆCZ∠ìá èBY#,á Sø’Ž˜Â¦€’3<`‰Ø@"â‰)À %‰Ä`‰)À GØ€#Îð€De èÂ&ˆ8Db 0ˆÄ`P‚)<àpĈ3d4S€JŽ0Gtá‰d"ºð† ä"(9Âq†$"AÉ6àˆ)Àà Í`Ð’#LÀ]x@"y”aŽ˜ ްGœá‰˜Âº0… Db 0hÉ2L`<¨Áq†L© `Hh¦À”ì¡0D…S­êU³4{Ø Ñ’ Ä© ƒþ¨ Zr‘HL‘˜ "Jí,S€A$¦ƒAÔ ‘ˆ öðPj‰0 h¦”\${xÀ¹‡¸ä"(¥ö‰‹ ä"‘˜ aÐL-¹H$öð€=ò"(¹H$¦pJía 0ˆÄ`‰)À %‰0 h.‚Pj‘ØÃD㈠$¢%qxZ-ò‘“\¬Ž˜Â¦€’#ôË<Ø@$¦ƒ–\$Sx€#xƒHð`Ž@‰#È2Db 0àÁ"1D"N0ØÃx0G ÄgÈh¦ð€H$âˆÄ0ˆ@îá.¹Jx0G Ä‘¸þJ`°HðgÈh¦ð€H$"GØ@$Îð€Aò"(Á"Áð`Ž@‰#¦ƒHL‘˜Â"‘ˆHœ!C ¹Jx0G Ä‘ØÃD3…# $0ØÀ$)ûÙÓ¾ö¶¿=îs¯ûG&{ˆÄp„HLá™À ΃~Á€ 5ÙÀΈ <ØY603l`1x€F&0ˆ L{xÀ6ð<`ÜCM&ˆ ”`SäJð€ý‚Á $Â< <ÀÀ@¿ÀÀ ÄAMlÀœ íAML@$$”ÀL  ô BÔÄLÀþlÀÀÀìÁLÀlÀœÁÔÄÒô DB"lÀÀÀìÁ”ÀÀÀ|F"L@" DLÁî-!6¡>!F!íM‰hL Y$ÂÒ”ŒF"ì!% ´Ä 8Â#%„ƔR" ‚K ‚# Ò”¸D"ìh$ $R"ì ÁH¡þ! ¢ "!¢!bhL# "#6¢#>"$F¢$N"%V¢%^"&:¢!ÀðA$'òA"ñ('¶)‚†!p"¸'~#À#¢Kp¢!p"¸)‚'‚h00)ú"1£1#2&£2.#36£þ3>#4F£4N#5V£5^#6fc2f DBPÀPÀ3R8##$€:îJ˜#hd ¸DPÀgðÀ9¢#¨cT ¸„9‚F@2òÀ9j£C>$DF¤DN$EV¤E^$FŠ! £9¶„9&ãP€K¢3Âð#J"1š£Kì€ÂìJÀð#B$˜£K"hì¸ÄP1€!Ôd$À#`¤S>%TF¥TN%UV¥3$€!0 €ÀP@ @´„9¶„9¢#PÀÀ0 €ì@ þÔ$ #P@ @@8PÀgd€9FÂì%D#PÀÀ´„9F‚!8À^R@$'rb$ì@$pb$d€9¢„9¢Äì%D#8ÀìeìPPÀ$ÀPÀD#8@ÀDÂD'FB ÀX#tF§tN'uV§u^'vf§vng$0 À  #D‚dÀ0€! „9¶„9¢ $#dˆÀ0B$xDÂP€K˜#J°À0€ ÀìÀ|†!,pbK˜c$°@0B€! „9F $#þìDB˜£9~†!,p"J˜£K˜c$À0x@$ìÀ,Á @$ì´@ðÁ€8ðw.)“6©“>)”F©”R'$J˜cK˜c$ÀÀJ˜cK˜#JPÀ^îePY츄9¢„9FP@$ìJÀ…9Fœ)ÀJ˜c$˜c$ìD‚!„&èi$À¸„9º„9F@$ÀDÂP@$ìDÂP@K0À,¤F‚€´ª¬Î*­Öª­Þ*®æª®î*¯öª¯þ*°«°+±«±þ*#ìÀþì@$°ÀðA$0‚ $@$dðJ˜cK˜#JxÀ0J˜ÀðA$0#DÂ@$J˜#J°@DB€ P@$ì@*Y˜c$xÀ0J0J˜c$P@D‚P@$d‰R¤Â¸„9º„9¢DìÀ0B$ìDÂP@$ìD‚!Dì€!xè©!P@ÀÁ±Î,ÍÖ¬ÍÞ,Îæ¬Îî,Ïö¬žÀ#8PxA8Àì@$d ÀP€PÔRB8PÀA$ÀÁ^@PÔRB8Àì@ @$þÀdYddA$d@-¤Ad@-,Á^&Àd­fdAPÔRd@-¤ÁÀx@$$ÀdA @ÀÁ^@$ð8@°€ž.Áø,îæ®îî.ïö®ïþ®°´0®´„!ÀKÈ*0‚°´ª!±î0B@«¸ð–¯ùž/ú¦¯ú®/û¶¯žŠA@dûÖ¯ýÞ/þæ¯þîïÎ20)º''òK"¤r¢¬20)Ö,#À#¢ž'òK"¤r¢¬þ20)ò¯0 —° Ó,˜#J0‚?V ¸„9Bj€¬òÀ9Ö,˜c$<,ø ¸„9Bj€¬òÀ9ž0W±°‚žîôêP€ù€!Ô$JÀð#B$˜£K"¤î¸ÄP€K€!Ô$¤î+BMFÂÀÀÀA$˜£K"¤î¸ÄP€K€!Ô$0Â_2&g2ð$€!0‚$,Á$ÀPÀD€:î¥D8@$0 €€ $ÀPÀD8@$€P¨#þÀ#PÀÀè)$€ðA8ì@$€ #PÀÀD‚!8j$ì@$pb$d€9¢„9¢Äì%D#8ÀìeìPPÀ$ÀPÀ ÄD'êé$ÀPÀì%ììÀ^Rx#PÀÀD‚!8j$ì@$pb$ÀÀK˜#JìÀ^R@$0‚ À^fÁì@ ìJì@$pb Àh²Q5RÓ,#ìÀìJÀd,A$ì¸ xP@$ìD #D‚ÀÁP@KìDÂPþ@$PÀÀÀ $#dYìÀ,Á €!ˆA$ìDÂP€ì°@0B€!dÁÃê©!,p"J˜£K˜c$À0x@$ìÀ,Á @$ìàêPJˆd8@$ìdÁ@$#dB<¬žÂ°@ÀJ˜£K˜c$À0x@$ìÀ,Á @$ìÈ*8ðAR7y—÷­ÂAP€! #P ÀDÂP€K˜#JìDÂP@$˜£Kì´ÄP@$ìD‚9¶*ÅP@$ìð?R@$Ô$þÀP€ Â!8*¤Â¸„9º„9F@$ÀDÂP@$ìDÂP®î´D8dA$ìD@*‚£ê)À8 „9º„9F@$ÀDÂP@$ìDÂPÀ¬Šx€yŸ9š£9#ìÀì@$ðÁ‚@$ìD‚! „9¢Ä#xD D‚¹îD‚!DÂ#xD‚9¶„ # #ÅP@$ìx@DÂP@$Ô$ÀxÀ0J0B<,¤Â¸„9º„9¢DìÀ0B$ìDÂP@þ$ìD‚!Øê@$B$d$JìDB # #dÁÃê)¸„9º„9¢DìÀ0B$ìDÂP@$ìD‚!è©!P@ÀAšï;¿'µ!Pð8@°@$ÀÁ^@$ìÔR@$ÀÁ^&Àd#8Ppâ^@$ÀÁ^&ÀTÔRJBE @$ÀT¨ãðAìÀAÐj8P€åRÔRd@-¤ÁÀx@$$ÀdA @ÀÁ^€­ÂÁ^@$0ÂdJì$°þ€!$PÀ­:À^¢DPÔRd@-¤ÁÀx@$$ÀdA @ÀÁ^€ž.Áô»äOþQÃ!´„!ðA«^/Y´„!ðAK\ï¬ØêõΪ!À±î0B@«àª!ðJdÁ0Jìð!´„!À±î0B@«P¾ó??ôµ$$@k˜c „9fÁÍŠA@dAô—¿ùŸ?ú§¿ú¯?û«" ‚î>  <ÂýË*@‰`¡BT$°PB >ôÈ D‹/Ęþð G1„(pcI„=2h2¡ÀG€„¨HK›7qæÔ¹“gOŸ?:”¨É6?>ü(ª³@?~…ʲ@P/>B±• A¨Ûüøð#!Š iU(T–…4‚Š*D?~ÒªÍG[QDÑ*D€p&V¼˜qcÇ!G–<™råxÙ„jY±E\¸H6hSƒ"Ði(ôHAƒ¡&äòã¢E %´©AhŒ!rùÁ’˶ HC¡GŠ4(°Í@8g×¾{wïßÁGRô…" @kˆ‚b†.¡FÒ0#’†‘ýø ‹þE (fÐà‡BP˜A."Ñ` ~øà‘>Ѐ‹HH H¸ˆD H¡Bƒ4 …4à"’4ØJ4ØJ@¸8ï‡Hùá ¸ˆä ¶Ò."È¢6fЪH¸8ï‡Hùá ¸@ªH™á¼"QÄB@"á""y„ fЀfЀ‹H~Ð`+ dÐ`+ áâ¼"yä‡4à"’4ØJ@¸ˆD ‹¸8ï‚™á¼ùá ¸ˆDfÐà.Pøà."QdËH¸ˆD H~Ð`+ òøá ¸ˆ¤4€*."¡G>¤ÆøNØa‰-ÖØc#þ{„‹¸ ¨ QEðˆ„‹‚*.~ˆ„‹"¡…GÚÐ@ˆ¸ø` .>PH¸ø!.~˜ ¨@á‘64P¤ ¨ ²ˆŠ‰D 9ðˆ„‹úá@”ä‡Q‚ Š„ iCE"ùá@”¤$EÆÐ@ „ Š„ iCE‚**Px„‹"ià,¢âƒG"QB<"áâ‚~ø%ùá@”„ ¨"¡…GÚÐ@‘H~ø%a *‚¨@á.~ …GÚÐ@.>ƒ‹"áâ„Úøù¢>D !Px¤ hC0âB ‚™á‡Bþ­ÜòË1Ï2@PøA„>mŒBû!¨"áâ‡H¸ø!’Î;ˆ¸ø!.~(°"í@4ø!v QdK‹ B¨À~ *„ ‚ªH~H º  ‚*’†„ ¨"*.~ˆD‘--‚ ¡Bû ¨‚ "¨"ùax@" '¨•Hp*Ã~ .ü \øB±¥‹@… ? " läPBð %<†„%4á Q˜B®…-´È#¸ð.„ øÀ#”€‚HpáJ$¸ G(á‘PÂAG@„ ?ˆ~ D‚ ?ˆþh~ (á È#Ú°X„ (D$AD‚ ? Tˆ@%JøÀ#òˆH@å&€ÐD  %|àyA ‰  JøA$Ú F‹Pá…ˆÄ#ˆ€‚Hpá B ¨DB xA ¨à*ù "¡„(á È#¸ðƒHpá‘à‚"¡ˆH´AŒ A”ðGä‘„6Â*D?@ \˜Mmn“›Ýôæ7o¢ˆ"€Ð"Á lå…hÃløƒ5h@(ø@ ü@€€ >Ð|ØÊ .üþ 4ð Â$˜~ &h`+(løƒHpÁ†? H~`ÃèøÁþ€%m˜~ІH´á6üP hmø 0z¢àm0É#f h  ØÊ Áþ \°áÒ†Øðz@~ @pÁ†?`I~`ÃôDÁ€ ü@€@ÁÚ€‚´ôüK¸`ÃDB(ÐÀ4ˆ6Ì@?hƒEñEd \çgAZÑŽ–´¡ÉFhEÂ&4)‰"E‚ 4qŒ"ÁBE#4IŒ"Aš8F€0!Mþ¢@lD…hŒ"a*p¡´Õµîu±›]ín—»ÝÝ.á]ñŽ—¼å5ïyÑ›^õ®—½íu¯E 8ðA´Œ€#øÀÅÈ'Œ€#ò»ù$¿1„|ùùZ„p`D~#ß›0ŒÈ/D aˆ÷n˜Ãöð ³@P@´|(@Å$8áàâ‹0"5ÞA$R|‘,P`€H(`>)VLp>)†Hàða)O™Êƒ!l’âÑÀ;Øbv€ÄÀ^¾ÀF"ùÝHŠ!² \†ð²bvœÀ^NH(þFT™Ð…6´v Að2L`Iq$à€HÀ‘`€X p(À‡8;ˆ €v CÈW¾‘ØA$ä $À  8 p(0€€ð@$A`@‡Hì òµH€ï Ñ #(0ì€ )&ˆ!Ðh ‚×p È"!_$À @$à€HÀp(0€Hì€A`‘ j 8ì òE#‡, ` ‡vùËa®MFì`; HÀþC$ÀbˆÄ(€GbˆÄ( $€Y€! ²ƒ,a0„"± DbpÀÀ‚0" 0DRœb‹ì`KØÁv@H쀑ذìYXøÀ‚0" 0ÀÁ$†XäK„ `D`ˆH¤˜ ,H#v@,¤ÙÁ–°ƒDbˆÄ(° 8`ˆÄ…%  `D`ˆHP`pð.² b}éO_1pH xy |¨q(€GbˆÄ( 4ºÑp€È(‰þP€ß§@$¼L8€ì ¡ß,b( v€v€"a( ¼Œàv"(Àÿà Åp !RŒ (Àÿà RŒ R,v€ ¡ß,b( v€"a( v€¼Œà"a àÀÿà Rl#a !Ä<€ú¤p © a`‚`Á v€"Å"a€<€"Á€‚ b( v€< "a( ¼Œà<` ! HÏ"v€"a(`€<€"ÁË(` ²þøÀ€‚R 'à"Å€‚"!Å‚ <€²€ô,b( v€"a€<€¼Œà"a ²(` !Rl#v€Â( à  Á1cÎ("€"a Æ€²€º¬ Ñ`²À(à"`²   Æ€`(À(àÀ$`² À- `(  €"Á(@  )À&²À€² (  )€ !€À(  þ)€Ä Ñ`² $`²  à Ñ``( vXÀ(à`º.ÂÀb v@é².¥/Ã6"à ÂàÀ&2¬$ #ÃJ‚ !! XÈà#2¬12¬$øÀÂàÀ&X`ìr39³3=s»v€>s4I³4Mó4Q35¥Ðä‹D‹à€ò+!ä+…!¿6B¾"¿.Âä‹ B¾,‚à€ò !äK´!¿"ÃTs:©Ó…²€€D‹R,!€RˆRì"áûv Rì"²€þ€ "(À"øà Å"(@´øà Å"à : ô@MB Á&Rl´À¼,!v€Hh( !À¼ì"àø€ !òk#R "v€. ÁËb( „v€ ÁË" ( à€´GÔ(  ¡Ñ¼ L v!R,À" vÀ" (€À`"(`v  ¡ß"a"A¾"Á Ñ(€(``"¡Ñ(<€À`" Æ`(`b"A¾,þ" Rl‚(``"Å Ñ(Àú v äË Ñ( v Ñ(< ø v€ Æv €v À" Æ (``b"A¾‚"! ` |´]S“v`v€ ²øÀÀÄ v€"Å"a( v€"€² "v`–`ÀÄ v€"a(ÀvX ! À²€ô,‚€v€X ! Àv²` Ä v€‚<þv€nÂ–ä‹ RŒ X ! À"!Å‚€v€²€ô,‚€v€"€²\²` € A "a( (`àÀà v€b( v€‚< €² á"vÀ€øÀ]-w4á (Àb¼l øàû(!R,v€"a( (Àÿà"v€"a(€¾"ÁË(€ü ¡ß,"Å"aRÌÿà` à¬àû(€ R !v€p !RŒ (Àÿà RŒ R,v€ ¡ß,"Å"aþ( (Àÿ@"øàû( R,!v€b( v€"Å‚ü,‚ÀB À.w‚;“v`v€ X  Á v€"Å"a€<€"Á€‚ b( v€< "a( ¼Œà<` ! ÒŽ,‚ <€<` a ²( "a(€ R !v"Ál !RŒ <` !RŒ ( "Á( ŽØ"( "Á( <` h"! €< "a( R,!v"þÁvÁ(€ RŒ <` Á"v€Â( à€‚Y™3 à àX vjlø (  )À - !€ " `*jlø v€àŒ €LB -À(à` €vjlø`ºmX" ( ')  )€ !€À(  )€Ä Ñ`² $Ä Ñ`²À(@X vjlL  )!à Ñ- v  )  !€þ ÂÀb v •‘Ú43l#2 " l"ÃJÂàà&2,! b€ 2¬$ NÈà#2ì&2 " "a€ !2¬$ "ÃJÂàà"X`’:°»ºR, ¦,Ųœv€»±OÓä‹D‹à€ò‹1òË&!¿6B¾"¿.Âä‹ B¾,‚à€ò‹1ò‹% A¾ø€ !¿"Ã{·U3 (`(@´øà Å#Ål‚Rì"áûv Rì"²€€ "(À"øà Å#ÅX" (`(€þ øà Å"àÀ.á;¾ÛK Á&Rl´À¼Œ1òë&À¼ì"àø€ !òk#R "v€. ÁË#¿n"Å ÁË" ( à€ä;ÄE¼» ÀÍËÀÀ`"Å" À"(``,À€ø v À€€(``"Áú-v ä+ø v€ Æ(j @ Ñ(€ ÍË€(``b"A¾," Rl‚(``"Å Ñ(Àúþ v ä‹À`" Æ  Æv Ñ( ÍË`ø v€ R !v ä‹ aà ²`–`Ä=ØE‹v`v€ ²øÀÀÄ v€"Å"a( v€"€² "v`–`ÀÄ v€"a(ÀvX ! À²àˆ-ÂÄ v€"<"<"!Å" € !X ! ÀLÂ–ä‹ RŒ X ! À"!Å‚€v€²àˆ-ÂÄ v€‚þ<(`àÀà€ R,²øÀ  A "a(€ Rl#vÀ€ø@ع¾ë³ € !ÀË–€¾"Å"a( v€"ü b( v€øàû( ¼Œà(ÀÿàÀúÍ"øàû( R,!R,!R !ÀË–€üX !RŒ (Àÿà RŒ R,v€ ¡ß,‚¾"Å"Å "Åb¼l "¾"Å0‚ÀB À¼>ù•ÿ„a`‚º< "a(!R,vÁ( <`þ "v€"a(À v€"ÁË(À€‚²àˆ-Â"A¤"Q )a¤ƒ #TÈbÀF0JȨ¡F…p4<˜ÐÃF E:˜B‚H(d9xp£‡‘vPHxPáA²È(’‡‘vPHxpcÂ,¢ŽÒ©T«Z½Š5«Ö­\»zý 6¬Ø±dËšýjˆœHp°ˆ´@‚ød¡ ‘‚ Èb( àhL0 K‚ÌÀ'Á pI€8Vw˜;À„D wH¤) ‰øD‚€E$C PÇjþ(dÉBA">† À‰øˆá›`@–ª;ÌÀg‡D ‘vH¤0 ‰øÀÀ"ásø  ‘†R¸dÇÙýüûûÿ`€H Y†BÕVVeYX–!p”eS˜Õeˆ ;Hb‰&žˆbŠ*®Èb‹.ª¸#/ÎHc6ÞˆcŽ:îÈc>þdf(d‘F‰d’J.¹Up0 e”RNIe•g‰aˆBYP Ô|µ^ÁÁˆ•fž‰fšjfe ’#ÀÁˆ °D$;$0;PÀ\À€‘à#,àþ|ìÀ쀑à@$0hP0;D’ÅK¬‰jªª®Z$#; °CC;x dÁÇ í@B ‡pì@A$;PÀÂŒDâ‘ì@AB;PÉ$DÁpxAŒd€!‘Àá|°Šnºê®[" P`ˆBŒ `H$ŒPÀK$´ ¤ÐD²Lí@AB;PÉ$tPBðÅ ‰€dmÌqÇ rÈ"LrÉ&ŸŒ²ÉŒì0À íÀBB|ì`ˆ$´‘ÉA í#PÀÂ|DÂ#‘ì@$†ì#PÐA y0þ# 1b À‘rØbMvÙfŸvÚj“ep2€! ñ€ °| °ƒD$_ …P‘ÀÁ×pð•ÀYì ‘’Ç;¬ zè¢Nz馟þ1 ;h‡! ÂÇT6d ÂGBVe¨ÿ|ðÂO|ñ`íÀˆñÊ/Ï|óÎ?}ôÒOO}õÖ_ÿñU|$dH÷||ÅØŸ~úê¯OVpT•PP @ÁW±Ïÿþÿ/=1B!Y VÒƒ`eÐHù®Fp‚¬ Kf $À aÄàÀþÀà#(€d!!iÈA"Á ;ˆ#XÀ v‰ð…‘`0€,D p(…,á‚T¬¢¯8Fì`;hÈ<  €‘ðX0F,†ˆÄArH° ŒÈ Á‚0"€Ã( ‘ƒD‚`Ä`ˆ ` ;@$àà ð‹”¬¤%Ù‡PÀ aÄ ‰ƒ4ä ‘€à‰ƒ4ä ‘ Å‡ƒ4dÐÈA"qHÀpØ"± $D ðÀ%‰Ìd>;À²$„àC$’Æ‚þD" àC$ÒƒDÂ`DBÁ‚ð!IÛ"a…$,H@$²>ì€‘Ø AÀA™-¨Ag ÀÁ0DBáPp0D0€d¡²@‰P F8@÷ø2€Hd¡@à€ì  @0€ìà D-ªQÕÆ‚hÄph‘CÀ¡!†€ƒB ÁªðGíªW¿:¶0¬d-«Y™w ³ªu­l^àÐÖ¸Êu®)ƒ!’ (eøÊ(à80‚®„-,2 A"!Œá€þ` ‘ØA@Psà€HÀŒ`>ì  Àà€HÀ‘ æ4P`ØA$²0€%v¸Äµ #v0€4dˆ>,!!; €B(08x; @$v@ €‘ð"± $dˆÄ( È@‘"ppøPÜ X}pH ¡F À‘`0€%$dPÈA² Db0ÑÈ(P ; @B’ ¼ <0à˘zŒØÁv° !|Ø!<€„ì‘0D$¢þ€  À‡H$-;@$ ±0ÂHÈAâ0"!Œ0‡«yÍÎ3à`ˆ"!|€À‚„À/ØD(8ð%€‚@À!pàËàÀ— ;"aˆ€€ÃvÀæP‹Zy,ØFà`ˆ†‚S9PC ‡†‚ 9PU ‡Qëz×ÂÛ#x ì` {ØÄ.6ÉTCt 1D÷øð•ò{ÚÔ[àP•,P`HH(0 |å Õ.·¹;&C($ ÀÊAr¬ì€)ßUàÀˆsë{ß 1`ˆ„0bþp` àðHÀ²ƒ4ä ‘`€D‚,€`‚ €;ˆÄøBH0‚ @"€8È–ÀïœS›;À²D‚`D$< €K€!"q†$,H#²C°`Œˆ„à° hä ‘`Á±bX 88€|й݅ ‡PÀ aÄ ‰ƒ4ä ‘€à‰ƒ4ä ‘ À+áp†ì€9H$ 8; @$v@„ˆ¸»éy͈ ` Ù ‚ð!IcA"‘ð!þiÈA"á0"!Œ`Áø‰¤í‘0„B $ Yv@H쀆 @àpúðïÚ€ƒ!`ˆ„0 à`ˆ8`;È$B>d¡@pÀÝà Y@Ai0; 0YÐ; ~Èk,°apÐ|ÀYapІ a|@|À hƒÄ¶Œpƒ;ȃ=èƒ?ø1"å„E¸o bqFÈ„Ä&† Y@cQ>XŒÐ„YH\†@ ` Áà@ |þ;À |Aà;ÀÀ0|ñ°ZˆˆrÅ;0;Ð;à‘°à;‘`b ;@;Y°À;Y°À‘p ±°;0pŒ@pàÀ‰È‹g @† Œ0† ;° |0 @;‘;‘‘p ± ;@|Y; bЋïHVŒ°° ±,ÈHp‘à  ;@;‘À;‘À‘p ±þ ;@‘;°Œ †@ ð(’`e†0† °;s1& , ; , À 0Y`à‘°;ˆSIX,°Uq ±À†;|`W±ÀYT©–tµŒ‘ qY€bY°–{¹kåS6ŒŒP>dQ>WÁpÀås†Ð=| ŒŒP>dQ>WÁpÀå×FxeÃAq|ppW‘0 |pp !ààq|pþp›Imb`cQ>f†€ŒdQ>X†€ŒYqc†€Œ‘°‘à^Q>X†€Œ‘ŒœÂf†0|; |Aà|Aà‘°|A‘ à@‘À0|‘ à@|; à@À0°‘`ÝÓ=‘°‘Ð=‘À,_; s sp°|A‘À0°‘@0; ݳŒÀàÀ q‘À à°‘À°þŒà K †`¢p ; Ý  ‘s; s sp°|A‘À0°‘@0; Ý Y0Kœ¼Æ;0;;@°`b ;@‘°K&Y°À q‘°°;0‘Àà±°;0† ‘° ;@°À ÀY†0AÁÀ‘à^ ‘°0pàp@ q‘À ÀY† 0pàpP,0Œ  qþ‘`b ;@‘|°pYÀK Y ®q ab ;@ A0pàp ,Œ`‘@@|ð©£ @†ÈHp|0 @‘° p ‘ q‘° ;@‘À °± ;@|µ ÈHpðJp`oº¡|µ¡¡ ðJp ± |µ Œ@0KÀ°‘`oºà ÁYK q þqq‘@¯‘pU!àM;jŒ°°‘€Œà  ;@‘° Y&‘À q‘° ;@ ‘;°Œ°;@‘°à  ;@‘€ŒàÀ ÁY ®ÁÀ‘À‘°¡¡ 0ŒŒ ,0| I“ ‘° |°†àÀ;`‘âº;p‘°¡¡ 0ŒŒ 1†@ È»k†@p;@pþs1|°À; , Y@A0Y†00° 0YP0À °` p`Œà@0À;  ; Y@Ai@; pŒà@Y@A&s1å,Àà ÀXá@0À;  ; Y@Ai@;  K°@¸ƒ¢;|`‘°À†€;ŒpR†Zaþp†_ap0¢p` † †† †ôŒÒWqY‘Y! )mÓ7Ó9]n†Ð=|02†Ð=|€ŒŒP>cQ> Ñ=_ÁpÀå#2ŒŒP>ZÑ=ÁpÀåCݓ壆Ð=| ݳŒŒP>YÑ=ÁpÀå3…P€@× q×Tq×@×q `؉­Ø‹ÍØíØ Ù ‘0Ù ‘0€|ppŠ} ‘ð|pp— |ppZ‘°|þppJÁY»‘pJ‘0  @Á‘ @Á1?ð?€Ø… €`Ý  (ðà­€çÖMÞ ä ßñ-ßóMßõmß÷ßù­ßûÍßýíßÿ à‘ †pßà‘°@ßß`Èß;@ ±@ßå“;ô½0ß`Èxàô †€Œù½ß`Èßp|À† å3ßAÞ;@ñ †€Œø½ß`È(ßtMÞ\ðöÍ?0ß \ÀàÍ?߀ …ðŠ Š åþàŒ0âenægŽæi®æk~߆@ `|Œ` à° q‘ à‘À0°ðͰ;@; |A;; ‘Œ@;`oš; Ýà ఑° 0€Œ 0°‘@0|A ±@àà‘ ;@;À0° ±‘Ð=ð à@|; à@À0°‘`o ; Ý ŒÀà0‘`ÀÀ0°þ ±‘Ð=ð±|A Á0° q aÀ`oš; ÝÃ,|À†à|A‘À0°‘°‘Ð=ðÍ ?Š0Dÿð \ €3 ?À(ð?À‘ w}בÀ‘pב 3@ô?ð?ðÀ‘Ð3 Ö \ w­Œ0p°lî÷ø/ø#Î;0;Y|` `b ;@ q‘° ;@‘À ÀY†@ÞpYÀK ;@ !pà þq Á ÀYF ®ðmb ;@ ± ;@àM‘p ±K&@‘°;@ Á ÀY†Pß;0K°`b ;@‘°à;,Œ`Y ®ðÍŒ"yÈ0€Ñ†X$`´ƒ‹Œ²0ÉâEŒ‘ -ŽE ,²HÀ( C‘BZd‘€Ñ YB†Ì‰ÅF‘<Àa1€Ñ"0ÚA!‹Œ²0T³æ© xÄåÚhPÄåÃ."qùq± T¨5© xÄåÚhP¤hŒ@þ€œFÚáÁ"øì%\Øðaĉ/fÜØñcÈ‘ ÃI@ÁÐÅ;v,á“À3…‹!#í i…H¬'## ,‰´ƒÆ(d±Ò"Ö¼xôX“ç,î pqŒ!1†´¸@$8@Pˆ´ƒ‚Å,RÇð ‘vPàƒœB$Íà Ž!âpj†¼2à)’B ŽÃà£,¢ 88" É¢"ÙCò«)$ŒBŠ  ’(ˆ„‚àà8 *‹ Š„ ¨4Q@¸ø!.~ˆ„‹.R$¯¼j‚*. šQ@"DÂÀ‹ÄþÀɪ´òJ,³ÔrK+Ùa€,ba€ñ Hv à¢"ÙF<  `Ä"F2âcC< ’ˆÄ‹² ‹B²Èƒ±Š™(¨Éƒ"Ù‹v C"Ù€H ±($ŒB²h"É`Ä ,Ú€H ñ`F,bİ(ˆd "a„ˆ$ "H (ˆÄƒ±ˆ‘à²è"Qâ%þ>xÄ¢G¸ø!.~ˆ„ "Q$’6Ðú¡¦PˆD‰”øà‹‰ Û‹ ¡ 8¸4úh¤“Vzi‹ ¡ŽHà€…HvÀ³øÈ‚2)°bµÈ 82â`!8VÀ"FÈ"’,( “> I €£°ðl>"cµ"cµ"ÙL "É‚2)àc€8VK`€,"cµ I €Ã°È"*À³øH` àÀˆ 8 cÄ(À‹`‡HÄX-ŒH €Ã°,€‚,² €L ø0$þ(À Ȥ€1VK`€, cÄ(Cp`€ˆa5 @ ‘Pp(L~ðü xЀPð0 @?Ð Pð6 àmD?p(††°ˆ3b>\ÄppŒ c8(Æp¸q#bÄp¸’!à°#*ÆpÀa#fÄppL]0¢@F…HL]0¢@ †; b'=ùIP†R1þYIDyJT¦R•‘Ù#VùJXÆR–³¤e-myK\æR—»äe/}ùK`S˜Ã$f1yLd&S™Ëdf3ùLhb‰Ѥf5­yMlZ‰†Èf7½ùMp>“@8ÍyNt¦Ó–Œp(€¥À#;€ÃEvuæSŸûÌ'#°š` ;Àvp쀟 ehC£É°f ¥hE-ÚP> 8p¸hG=úÑlòaÁHMzR” ©¬dDÉð)¥iMmj8t5°Rà ™ÜT¨Cµ)@Ò8F †¸H(P%™"Œ jU­ªNCŒþ1`‹0bp€@D‚ pv° À‘X ଆ@ 0ÂXMø°„«&V±ÙôÀjL00B1ŒØÁv€‘x ; €v€HB ‘Øv€,,|ز°ð!!±È°„ `<`88€|Xlq»L8¬†‘0 ‡PÀaÄ  ÍPˆC pv€HÀpˆDH,² Dbಀ\D ðÀqýû_aR`5†x #v0€Xd,°ˆf(D ˆþÄ(°D" àÉ,€‘‰Ev@H쀑HÀ–ÀˆH‚ €€m|ã\Ša5;Œ!(C ÀIÀ(daðÌL€€‘Ødd¢0€,$`FàH,a8fs›e™ €WbÁ cD‹ì|0„Ev>â0;#²7'ZѨ\Âj–€¥0"1!ÉÂEB’Ĉ!H@ýiP ‘@P)ÓN2Œé^dª%FÀ2=Œ!<ÂÉ0Œé^dª%FÀ2 u±±´ƒÕd•!é$þ‡ì%$Zâà’Ãd €dø8„Ä"Œ À.-ñp‰±ÝC À’ Q%™z†ÐÌ^dj¥Pà"0„f’*Àš±ˆ€‹ÈÔJ; ÀE`ÍDŒxwÇÂÕÀÁJ† @ €àC€Db5€VCx ;X "€8ˆ#0€Õd!#H€@>$ÀØA$àP`Œ À°ƒH"?‘ØA$< >$ÀÐÌj(` À3¬¡< FP ÈàÀa þv‰DÂ#5a àðÁ"!‰àì Œp@°F8 XB$ ‘ŸHì ± XCì`5°àÖPˆ#(€dð à°ƒ €;ˆÄ"á‘HdaKðxõ cˆÕP JŒØÁv`‘PÀ;€!ĉP ;@– K,’Hì`KØÁ"` ð€šØX‚CƒHØ ˆ„ Ø``„,CÈ‚H© CƒHØ °ˆ¸ 8ð€,XàFX0 8ðþ8ˆ„ Ä``„Hð8°ˆˆCƒHØ ˆ8€,àƒ%€È>X‚HÈ‚HqŠ0X‹‰‹ €€È‚%>``„%C €€€ƒHØ 8p àë Ä‹ €Õ0„*ƒ C°Í 8>@ ˆ„€H€ˆ88°ˆˆ„ €HØ ˆ>€,H€¨‰ €HØ àä €HÐ € €à€CÈšàä ‹‰‹ ‹Øˆ88‰H€€ƒÀˆ Ä‰š‰Hàä €H` þ€XF €%ˆCÈšàƒ €ð‹‰‹ ‹Øˆ88‰H€€ƒÀˆ €ÂðA D8X ¸FØØHÐ €ð€ˆ„ €H؈„,€HÈà‹‰HØ ˆ„ ‹H€XF¨‰ €HØ ð€ˆ„ €HÐ €ð€`‹`„,ˆ”šð€ˆ„ ‹‰‹ ‹Øˆ„,>`ˆ„,> ŒØˆC0 >ˆF`‹‰Hð€ˆ„ €Hàƒ0>ØCðˆ„,ˆ”šÐ þ8ذˆ¸ˆ°ˆ€HÈàH€HÈàƒÀˆ€H0„š0 H8hÈ@tFÈC 8H€ 8€ Ï>ØH`€ˆ„, 2¡€,H€ÈC¨‰€,H€¨ðŒàƒØ €0‚ 80ŒÏ 2¡>Ø2¡€HØH`H0„p€Ð 2¡€‹€ƒÕÃ` 8È  0ðŒ)p€`>H8Œ`H`è  àƒ  ˆþ„€ˆCHÍ  ¸8X¨‰%ØÖ Ä,X`#ºˆ>0„HØàC@ŒFÈ8 #* C€ƒÄ0"ÄØàCÀ>`Â0>H C€ƒ½0¢Œ€C¸80-ÙàCÀ>`Â0>XRE½ˆ€`„! ‰,°ˆÈ‚ă€È‚U ‰,`¦È‚EÕÅØÕÈRMUUE%FH€W2à¤1àÄ`8`™ª™²x F€F©£a8`™R ¨ F€F)Âð‹)§0àƒŒðˆš`8þ`™J ¨ F€F©½„AȈ=؃Èp„=puňv%Œvu„=puÍ#Z ýW€ XX‚-XÝÕƒ]ØŒÈ  `X§È  @ >8‰‚ ‹HX>8 ‰Í>8 ÅH ¨ >8 §`äØH §È  Ȉ €šà€ƒHŒ €šà€ƒØ €ŒØØAx€=ˆZŒØp Gذ‚؃¨Íˆ€ƒ“M[µ][¶m[§0„Õ ·% 10ĉ‚Ý (ŒH 0ÍpŠ €‹Ø ( þ™²ˆ€ÂØ 0Íh[0ÍPŒ §CÐ §€àF0„H)‰ŒØ p 0ÍHŒ §CÐŒ½P׌˜8Œ)€Âx€D˜‚)Àˆ)€§ØƒGH„Háň, 8`„¹­^ë½^ìÍX 8ÈÞH0 HCX ÍH€¸ˆˆp€HˆF €€¨ Fp€€%Ø ØHX ØØH ‹` ØCÈ‹ØHð>H€ˆ„H€ ÍH€ €ˆ ÏX °ˆþ ˆp€HØ ØF €€°ˆˆ¨ H àƒpØH F €€ˆCÈHØHðˆH`€9 €€,ˆCp€Õ F €€°ˆˆ¨‰,p‰X °F €€°ˆ°Cp€Õ CÈ‹ØHðF`pàF €€,0X ˆF €€ˆ„ˆ¨‰)x€€‹H„°ep˜€˜‚Hx€ (€)Ø€ €)ˆ„Dh×v„)ˆ„v„D([†Gþ€ x€)ˆ„3(ˆÚH˜‚Hh׋`„€ƒ,€%ð^xŽgyX8X È^FØØ‹ÈàCHCƒHØ ¸ˆˆ„ €HØ ˆHFÈ0„Œ€È>X‚HØ ¸1€,€°ˆ°HFÈ0‚‰š01ˆ„ ‹Ø ¸ˆ Œ €€€ƒH ‹ØÈ‚% €HØ °ˆ ‹``„,C0Œ€%Ø01ˆ„ €HØ p€HFÈ0„,xi ¨ FˆÈ€`„%C``„ þHFÈ0Ã0„%°ˆ°HFÈ0„H ‹``„ €,ëš``„Hð8``„%HFØ ˆHFÈ0„ÈZ‹8‚ p„)€#ØG8ƒH„)˜€.˜‚ ˆ„)€‹8ƒ¨Úš8‚ p„)€#ØG8ƒH„Dè‚h׽ذ8p àƒyno÷~ïH €Õ0„ì…ƒ C¸ˆÐŒ%àä €‹‰HØ ˆ„ €H €à€ƒŒ` €X‚HØ Àˆp È‹ ‹ €àð‚ü¨ >@ °ˆ €‹Ø ÀˆÀþˆ°ˆ€H€ ˆ„ ‹Ø ° 80Œ €HØ àä €HÐ € €à€CÈš‰‹‰H€€ƒˆ„‰à€ƒÃ€Àˆ° 8ˆ„°ˆˆ„ CÈš Œ‰H€h ˆ„ €H €à€ƒÃˆZ‹ˆÚH˜‚¨µe[Þƒ)€H˜ˆ„)€‹HhÞƒšˆÚH˜‚¨eô؃H؃ FC¸10XWuXuY7X1X˜õÃ`„€° Fð€ˆ„ €‹‰HØ` €Hð€`‹`„Œàƒþ0€H؈C°ˆ,€¸ˆ°F°(ëšð€ˆ„ ‹ØˆCˆ„€H0‹ Œ ‹Øˆ„,Fð °ˆ€H0F°F0Œ €HØ ð€ˆ„ €HÐ €ð€`‹`„,ëš`àƒH`H€HÈà H€Hð ð€`‹`„ÀÀˆ°F°Fˆ„° H€Hð ȹ® >ˆ„¹dˆ„,€H€Hð ˆF°F8Œ¨µØ€Hàà p‹p„)€H˜ˆ„þ)x€HH„H8ƒé†š€ ˆ€˜G°Gˆ„=xÂØ°C €€\ÿ|Ð}ÑØ€`„Ñß C 8ˆ8ˆ„Ï>È  °‚ÕH€ÈCH €ƒŒàp€`H€ƒÕ‹`„È‚HÈ  àCH €ƒÂØðŒàƒH€ƒÕ€H€ƒÕ€HØ2¡€HÈ  àƒ€€ƒÕH€%J€8‘BŒ)Á€, T Á> vP€ÀHÀ‘¨’‘xIà`ÀŽHbþ &`$ ਔ˜Å Y²P0€C P`ƒ‚R |ÄL0 KPˆŒ Ž¡ìc0Á€,† Nׇg`L˜cPœ6LزáŒ{6L8³a™=~'@Œ,9Žß ¶lxãÁž3%À8#9’¡†.Ù1z5ëÖ®_ÃŽ-{6íÚ¶o×ÎbpîÞ² j \²!8­á‚hˆÄ,µ6'6pɆø@4Äg6CK6Ä¢!8·»6g¶!8ù0‚<²!8¬ïß7‡5pü’ ÁŒ<œd†Àák‰$Y"{Ü—È >Ä`þd‰ìA! ;PØ¡‡‚¢ˆ#’X"‰Œ @Œ˜Ø¢‹$fAY¼X£7☣Ž;ò¨àŒô¤CéßeQ¤’K2Ù¤“OB¥”SR™##à@•[rÙ¥—_‚¦˜cRÈ‚Ap™¦šk²Ù¦›oniˆAÀY§wâ™§žmR`{¨ ƒZ(ˆpÄ‚¡‹2Ú¨£†IA†@Z©¥—bši‰Y´Ã”;ÀÙp@´š¢šªª«º˜02%;DÀ°«»òÚk¯;´„¯Ã[¬±K22 Û¬³Ïz¸ƒ1âÁ‘PàAd;PÀG$ðqþŸŒ2.aÈ”;0rãe!%p&òÁ´óÒ[$,ñÐ0‰AYÀ¡Àà€,D‚ØA$€£ €IÀà€%<$;xlDƒBIŒØÁv™x ; €v€HB ‘Øv€,,|ز°ð!2zȰ„ `<ð88€|`5Æ €Øþ€,DpˆàpÀ!22b ²ƒD‚ˆ  ì€àðì€ Ø%@8"2zjƒ°`IpH F À‘ $à€Hða#  À 8;@$à8DBFÙ"± ðYHÀ "x Œ!Ê#¤‰)P`;€à $à!€C$‡û‘Àd‘ 2Š  ì€àðì€  $%³@DF@€0‚IŒØÁvð°à!”¤ $ ; Àþ‰,€;@$²>DBFÙ"± D";X#"a $ÖQÀC õQ;€!–8<pˆÄðÀ!€Ã}ˆ,|Ø ÂDb ˆ À‡‡P`pD‡‡€’ =|pQ ²ƒ'‚p0Ä ñì€p@v€ ÀHX‰ `A(  ð!ÈB`„`ˆÄvÔ%À €Ãm eˆìà!&{à À!XØàÀÉ` `cv 8 ‘àÃvþ 8`‘`Ä €%D" ØÀá!ذ„‡ˆ! pDdô,!†(#€0BJ,Ø~€ó€†xÈÀC(h`DÐ[ÁÁ I@>,( 8"pÀ"8Hpˆ„ˆ BÉÔØY€ÈDLF\=ì«ÙA°Fð  €! ˆ";@$à8 É€ƒ!`ˆ‡ì "‘ (…@0€,ˆÁ À(  ðA @$ÀÁþÀx@$,ÁlŸ‚dˆeÁŠ\ , ì€dð!tpPÈ#dP`‡dˆeÁ zÔ˜ð“ì#‰$$@° …ÀÁÄì`¯eˆ9#¡ªðÁ ¡‡ÄK‹€ DØðA¥ì€A8#4¡ªðÁ l¡‚ÈH‹$@DPÀP@¥P8#„¡ª0‚0BŠ!DÂP@dÄK‡ì°Æ€dÈÈjÀ#J°#Äáª0‚„0Â$€!ì@ P’APÀC€ #PÀÀDÂ$ÀPÀþðA8ì@$ìPxÀCÈÈC0 ì@ À #°À#î #x€A8€!° #ìÀìDìD†Œ<ÄP€ì°@0B€!DÂPÀC‚DÂP@$ìdÁD‚Œ< $#d8ð 03ö ÄðÁ ÂAP€!@ÄP@dÈÈCPÀP@ÁA$ì<ÈDÂ@$ÀÀA$ÈÈCP@ÁA$ˆxBâä}°€A œ #ìÀìÀCìD‚!<„Œ<%Q€ #<#DÂ@$‚$þ@$ìDÂ@$dðA$ÈÈCxÀ0ÂCü$äd\®ÆĈ ÀA$ÀA @P€RP$ÀP€$PÀA$ÀA ÀÀF ì$°@P€RPB€ ì€\ªæhdˆeAtˆ!ÀAd<pHÂ}¬fpŽFˆXçq"§ŽðÁÄ$çsB§‰ðÁ <„x@tŽF ‚vzçCðA ÌÁ|çC„@¤§w2‚D¨ #À#¨Š B‹pgˆÜA#´g2‚þÔY¸ÈÈÈ؈PÀ$€€ Àª BH"4‚À€HÀDB€HÀXÀ˜èÜÀ„@$4B,À A$„À˜è¸ÁHÀTA$€ÁTÁ i0ÔY0B‹dÁ$ÔÈ€ˆAÈdJ# Á ÁCèÀ4B$´@¨A$ AD#„À,@@„@ Dj¼¶#ìÀLÚ0‚‹ÈÈC€Œ €DxÀC0dA$€Œ €HÆ#HDÈÈ8@$ðÁ8 €ðÁ8 €D €8À €PÀˆš4,D‚,@ DB#œ€D„ÀC¬'D¬§d¬g$´À4ÂC4B$¬çC B þ@$ BHÀÈkך#dAÔ ¸ˆŒ<#<„d0B$dÁ0B$0ÂCˆðAdì@ŒD#<„ì€<#Â8ÀC0‚!dÁ0ÂC$%9ÀC0‚!° "„À4Â@À €‰.@ Á,@D¨n<„€ê†ÀHÀ„ÀܨnDB ÀH€DB Ad oò*ïò2oó:ïóBoôJïôRoõZïõboöjïöro÷^¯P@ñÁöÊÈCÀÁP€0,A$x <ì8ÀAdx$/þDì8ÀÁÀÀÁC,ì< $A9,ìxïW/"ÜÁC "`/"ÜóÞ"pp «ð ³p »ð Ãp ¿0°€APÀöÊH$ˆPÀ,ÀA$°€ÀA$ˆP€DÆ@òÂÀø0À#°ÀÀˆ#°ÀÀˆ$Aí@0 €ÈðÓqÛñãqëñó±!ìÀÀöÊH$x€<D‚À$ÀCx€<D†@D#ÀÀ8ÀCÀÀDðAPþDðAPÀ8ÀòòAPÓr-Ûò-ãr.ëò.3/#ÀÁõÂA$ÀÁì@$°@0#°ÀÁC$ìÀC°@$3  / @D#,ÀÀ $@2³ÀÁˆÁC8€ì€<„xÀ<„dÁˆÁC8€ðrÇË  8ï#Â#B!<ï#Â#$ôöÆKõ20B¼$/#À#ÄË?stG{4 ‹0B$ðÁ„<Ä€!< €A8Àò2ˆØ,ðÁ„쀈%쀈%DB €ˆeÁˆþXðÁGÓ±Œ¬0 ü€ó‚Âü@$üDBü€uw`”€M¡C‰5ziR¥K™6uú4£˜dzkV­[¹võúlX±cÉ–5{mZµkÙ¶uûn\¹séÖµ›œƒ†òòȇOECyù¼1ï@CyùL|rdÉ“Í&p0 …R P1 …6îðì™O$Ïwœ¦Àa³P@!¢¡ vPöýxð£;$ô<ðEÏ)ÀÀ‚œH€!R€þ:„; ô8ÂÉ—7>xˆÀA$v ÀÃ@Ï‘v¨§ p>b„€H<ˆ`FH€%"aÄX"!>"`ChPp `„‚Ø!>"`CæHÀvˆd(À<ˆ `‡…Øa©ˆv€ã àh8¢Ü’Ë.½üÌ0?Ú€,–€(ˆd v ‹%àC ÏòL `$à@ˆ…‰Ä8"ñL CĈd à >–ˆ²àc‰…Øa ÏÚv€…þÉC`‡H #’(ˆd²X>"ñL `$ AÈ,€CL„Øá v€’–Új­½[ˆv 8€c "Ù‚ˆàȳ<È3†v0Ä"ácC<`!vÈ3þ¦<€€"ñ Hv  ’ˆ$ øˆÄ3<€Q€l¾óÌ5ßœÚH"C½¨€`!’,(` | v ø`Ä(„q °Ø)àcðà H€…HøÀXPˆÈ" `§€v ŒH €# H ‹Àw>v XÈ‚Ø)àà ‡„ðb`ÈØ@>‚”à)XA ^ƒÔà9ØA~ð‚; 1’„†€ !àÀCÀa!%9 q8þBƒ†€ÃBJ‚>‚!†€ÃBød„D"0ˆ@$ŠQ”â©XE+^‹ ñL²ØE,ò{^Lˆî€Á„@ŒiTãÙØF7¾ŽqŒ£10„ ƒNœà!G?þd3È&‹€©""B D¤ ¸C#tp€ À‰¸À‚H@¸Cʼà@‚ !8(p‡F\@¨P…ƒü˜Áæ0‰YLc™ÉTæ2™ÙLg>šÑ”æ4©Y̓xÆša– Íx& ñL6ér³HX‚„DþB hD$ZpD¨!HA$B°€;´à‘ÁîЂ;DâŒÑ† " ¸C îp‡€!UˆÄ.‚@œ¤!éHIZR“ž¥Í 2w@dŠ &ÀC 0ÂÜ@ ’ÞA!@Ä@±DD⌠(%‚Hœñ g<È‚T¦ògH#Bp€TA j8@ RZV³ž­iUëZ© À‘ ð¨‡QÃ`‚8;ˆÄ0 ì€vLèÀ‘ ð€_€àì@=Øv ì@þ ;PÂ$KØA@“,€˜8; ð8PøÔC0‚À(|Œp@°`Él€ AÑÁ‰F4¢ˆB‰3äŒ9£@Z°€F¤gH €ˆ!ÀØÚ`?†ð…%€‘ Ààà8DÂ3Éø`ˆB ‘ز „ `D``&ÀX‚@(08x<Cˆ!; €88@ ØÁA<#8 |XB$v@a²`þŒˆ„à`1DbˆÀ!<‡HxF ,H#²CP`pð@^>,A ÈÂ2‚; bˆH#.p€àH8(pƒ, A§C 0„àÓ!"$p€àŸ@q€ H@U@‚„yÝk_ÿØÍÜ"À!ž9ˆg2†-£€@v@P@b€Ã/ù0 ÀñÌ@<3>hŒ‘H€(`‘0#"á0‚À"± Ó3áƒÆ( ÏÄ3ñŒ@(m8xf Œ °iê ¿þDIJÄg"âü"‚]r“ŸåÞ"‘ð!ž9ˆgÂØ1 ˆÄ(  †ðÀ!Fü’apØâ™xf H@$v@Hd v‰À!žv` ;@$ L €‘š‰P ž9ˆgâx`Œ#<3>ìÀ€@vg"¡)—üä)_yË dHX‰ÀŽ‘È`G>D`A$v| €‘€ƒz`ˆ€€Ã/À‚H°KØì(‰ÀŽÙð5>0bYþȲm ÀŽ|àDê0áPpØð5ÀŽÙì(‰,Pvàƒ! `‡‚À€vàòÐQn€ ¡™Jâ— Âà`šJb ²`!™àÀÂø`˜ ¢$žÉà`˜àÀ‚aªÉ‰"Pw{°˜<# L. <# p¡šÎÈ—p Ä€˜ ÉI ²€¢Ð ©I !˜œhš „éá QJ X`Ôc ÓЙv@=< ᬴ïä´š´/Â!$A.àþ R)"”®* "¡B@ Bà@éî $`B á$ઠÀ`ª@ CJ X`² J‘‘iT‘–ÀRÊ3ȉ(` ¤i<# Â3¨É3¬`@ A " B@ Îh B`î ^àÀ   t`¡ B`î î  â ¡ â. ¡§I X`TQbb(`b(`Â3²` <# ‚<ƒ‚<ƒ‚<ƒ" ( ð°PäC‘ù,N@!R²,°#’!F‘D.dDÀ€%‘vP¨(ò¡ÈHp€ i……;(,¤@F X’®! pvX<À…(ðÙžB¤`ÉPƒ§ðÎä•xã› %L0E$q<ðÀl±Á0<°‡Z,a!ppþøàÞ»øÅ$ àHÀ‘€v ÀI$v0 ,„,€À‡Œ2‚pø ‘,„ pvÀ$Kˆ#,A£;@$@FP ÈB$à€HÀ;HÀ(°ƒH0‚À8 €ø  €!.*’…ˆ$pv@H쀑Ø.Jæ À.*xƨNµªw€,,|Ø"± ìYXø°‘\T$ aÁ À!£,#"á8DB$ 1„"± ÀYàÃ"dKÐèþ@ð`Ä`ˆP ; @$v@‹² ŒÈ ‘QCdpø+#v0€,D$ aA"‘ða`„(‰ †ˆ„Àˆ…Ìa†ð"a $ªN¹ÊÛ»D€Ã(‰P`ˆ‡…ˆä¢"YˆH:*’ŒŠd!| A ` ‘`0€%htpÀ !’HÀpØ"± Db¸(š‡ŒÂ 0D` A8ì` @$ ‘ `‘€Ãd0€,Àa2ˆ„! À p@X‰%ì`å˜Ï|cwþ€Hd|Øá ì‘Èø°‘\T$ aÁø F0"£,"aûHˆd!H@$v@>ìÀ@$ø°CxÝ 1 ° ‘Èø°0ÂˆÄ CDÂ`ÄB±Qì`±|`ÄE%…QC𣆀ÃEá`ÍûÿÿˆµÀ‘“‘PÀ‘€wà€wÀŒà@Å6@xG|°°ðà À‘Àà À•°K90; p0 0Y“1þ‘` p Q|b€Z¸…\¨W;|`%)ņ0R†epÀQ’‚Qp`† R|À%)e|€Q†ÅàYÐ…µ{ RްŽ0ƒPRްŽàˆ+ÅpÀSRŒŒ0†ø‰P%Y°…|YŠå°ŠSRƒð{‘<‘0ƒ°S°0pƒð{+Å" ;‘ [" Œ@K°|p ¨¸ÜˆŠb`%µ0R{ðƒà‰ RS0‘p%°<ð]ðƒ0þ gðƒpS í¸Q;@#†pY|; KK b pQ`‡Œ€y ¹^ŽÈTŽÈTˆˆZ†@ `‹h@ 0Y à‘° 0°‘À0°u%ðQñ«ø{à0°pP ‰€ˆˆ S ˆ S‘‘°°]ðG`*‘0‘€ˆµ 0°‘À†ðXµ; µÀ’ ppÀ Á,†°; •°!Ù™2þå0ÐJ嫸SÐXŒ°°EÀK†° ;@‘°pQ,Œ`•]ðˆ 00{À{pà]ðI%0 g0 QS` °P {ð{à0ð0 µpQ,0Œ°`ШQŒ@| p0 ‘†K°QpàÀž9¡‡åˆ"50 Rqð€QŽÈRSµ0Ž @†pQ"±" pp° ;@‘°pQÐp Q{ð‘°þÐS{ð‘\¹5 G0)‘°° q0 µpQ" p^ ˜pÀQY€w‘; |00ÀQb@¡‚jWÀ‘°ŠÐ a íøC°%ðS S°Sà000uGð‰ S` 0 0ð«ø{` 0ð<à0°p‘°ŠÐ000u%ðP 0ð«øu0g P°0zÅ;0;°"±,‘À;Œà ;þ‘`‘àÀ ÁµpQPqQG°‘p0S{ð‘pâ©QSð‘pP gð‰0] Sð µ † ,‘àШQ;°‘° pp ;;ep0¨D«VSðgÐ0‘°<°‘ q0‰°‰‘00°S qàgð‰ QÐ °<°SðgЀà]ð‰ 00{À{00ÀQ‰Ð€ˆ °†ÄDÚA¡eKCb"í ‰Â8àD¢0þŽ8‘TÌ€¡,0ÊÀP–•†F¢°£ …,Å à³@‚ "i…³;<„〟³… F|pРđ¦ÀhçÁƒ‹ž£ð—=z(œ „À Jƒ*#ñ%ÁŽH;(DÚA!Ò gUä“@8…H* ª4¨’ ÍÀQYÐêpZRp`ÀŽH†ÞA!Ò ;(DÚA!ÒŽàØ p(8GeACÕá ÍbF"a„ < ’€# à0L¥Hv   ð€Hà>„K€‚HT2h 2Ä¿–(H€þàc( v(ˆøˆ„)@Œ)ˆD%ƒT2H¥‚`o ðƒÃÿ΢`‡³øH€HvŽ,€ƒ)Š‘ )H <-ÍHx†xˆ†6ØàØ„ 6§˜â!6(á)"™bƒ `˜Â&x`Š¡Ž8âD"™‚M"á:؃MàÁ6˜àŒH`x€ÎzØ`¦hiŠ &€aŠHaƒ Î è)Ô6XÄÙa€‚ƒT2H%‚Øa F"Ù‚Hv  ’ˆÄ–X€Haă"Ù‚HT2H%ƒT"ȃ!ˆ• Ê¢¬þ–v‚`‡Hv€ã°(ˆd v€(ˆ„= à`"É><€‚Q© ,Ê*2$‹H(ð ’,€# 1Œ‚"ñ€‚H<€‚h ’,àÃ"Ù‚HT2h"1$‹²Zâƒ:X`„ à(ˆ‚b$ààÃ"ÙÄdy£@€x  @0€,À¡9h # ;€p`‚¼Q€ ;È"‘ ä|0D@€ ohŒ@€?p8L… ÀÍIÀ²€P¨D ‚¼Q 1|À‡8 | 0F ÍIÀ²`ˆ€DbÎLþ7 Íbø@$  ØA$²@$€|€ƒsØá €‡Ù„3äÙAÞ(‰,P oàC$àD ‡ÃdHø ì€ ppÎ"A €‘Ø„3>Ä0A–°ƒûyf ˆÄ°‡HÄÎ ±+ÈøÔ…AÐi0 È`@°‰M{8È &ƒ ð  ±#Hì 2…Db  "±‡ì!±+È`P˜)À  ±‹Ä°‡nvÔ£ˆÙ‘œÅ|(Œ!àPC"M†€ƒh C«¥†áƒ! bþ8‹p8ø˜–ÄpˆÄÀC¤¥†1>J–^¦¥¢3:*Ô‚´ô,,ØÁT=3…Dâ D$bgØä˜€#x°HL™Â"‘LÀqÄAø´‡)<  ±#Hì 2…Dâ ÀÁ"q† "±+ȉD e ˆD""q„ Dâ D$¦°±¶¶£bH×ÖÖ¶·ýŒJ²€[ÞöV4;`„o[2…làGˆÄà ƒHœp…Á "±‡!Sx&0ˆHìMHăìá 8B$Žð€.œp…Áà ‚þLáxÀ±L` ‘˜\a@=°iCÙ›&‰Dl ˜A0áVØÂÆp†5¼a×v D"B“ˆD$ƒ(H"ö¬)<`‰(È Q˜D ¢0‰„Aሂð©Ãb¥Ž!¨Ãƒu(Ô©m! šGâJFÌ#ñ%æ Ô±2AFõ3Œ€#„Zêdù2Œ€#„jæ³0Œ*› "T+3Œªœ[Â80B¨i©žõ»3ÚÐ…‰Ý}˜)8bцtA¢ P`0ˆJ†’Dú,?ø• ¡@€:?àB$Úð €þº )„j9'fæà ’Hð  Ax€Ù(>*)L(àé‚ðpP‰!(0ða(;P  d¡%|T"h•X™€ƒJbˆ%da(† À<ÀF°À`DKø8¨ä €µ¾p†7Üᇃ!"ð†ˆ„J "Ô¡ìÙ¨­ä,k@\àB$¨ @(BzÐQ (årÞØ C°'|`#@88 ð@$ø8°€‘€!ØS˜P@Ð; @a`öÀÁ‘ €†Böd¡þ À†C°GÐBÍ2 ÁžH,!ØÁPàà€HPÀ;#@¡Àì1H(F<ÜÌBu¼¡…ÊfêDÂÔáCA„:êD^Ά @ ‘@%Q AvÐ D‚@s²°PØA@´äTÐÀ 4 dÌ@\øP€ âX¾š  ü€ øÁ4À…h`ù„"1~@D‚ ‘$¸ DB‘Ð Â…HŒ¿%H€@8 p€H € ˆF €€ €CðHØH þŽ‚`„Ø‚ðˆ> €ˆ„ˆêh Cp€æ €H` Øæ ð€HàƒpØ á8Ø ØCð‚ØH Ž‚Á‚€  àƒØ€àƒpØ‚ØH Ž–àƒpØ á8 æ ‚hö €€ˆCðHØH Ž‚ €(؃A H€H؈>H€ˆ„ˆê(F8È‚XÏó •ˆ4F €%´P‰,(•È2F‘È  (•ŠU´2FþØØ‚0„%ê •0•ˆ8F ˆ„€%؈„ €³ ‚x„HP@P<ˆ.øHø%„Hø%„H5‚ x„6ÐEø%„65Pk ”û€1ЀHÐ.hŒ€%ØØ ˆ„ €HØ p€€€,XàHFÈ0 8ð8È‚² €`‚ƒà‚ €æ€ƒÃ``„ €H``„,€,XàCƒHØ ˆ 8ð8ˆ„ ‚È‚²8 1>( È‚Øþ€,ˆ8F€01ˆ„ Ä01ˆ„ €H €€€ƒH €€€ƒHP ‚ÈàCHHFÈ0„,(‹³ €( ȃƒàƒ1HˆCƒHØ 8‹ð‚€ > FÄªÆØ h 1€4>0„‚ª³Ø ( 8>`C •(¡Š€ƒØ èÍ€ƒ C(8ƒP ƒP‰HàÈ‚ØHØ ˆ„ €HØ 8 P3ˆBX>øH5ƒ5ƒ5‚øê£>@µ‚Pò„–@¹1ø ˆþ à‚HP„G8Œ €HØ Ø ˆ„ €H` €Øˆ88 €æh8P‰‚0ÿ8 FHˆ>H> ˆ,8p`ÃP‰HØ ˆ °Qˆ88à¡€HP ƒØ Cð¡àƒàÃp€ˆ H €ø¡Äà¡€HP ƒP ƒP‰‚öX ˜R80ÿ8 سàƒàƒH` €Hà¡€¡`„0„‚ðUl ˆ áh ˆæ`0pØHØ ØF €€þ `0„H h€>H€h ØØH€ ˆh Fp€€%Ø Ø–È•(•ˆ„h Fp€hŽ ˆ„H€ €`HX‚‚€PEFØØ‚€0•0• ˆØ%`„HØ ˆ„ €H؈Ch *ø€Bˆ„Gx%@Hà‚ˆP3P3P#%ø€G ˆGµ‚hƒ„ü–@¹H@ ˆ à‚Hà@8Œ €HØ Ø` €H` €Øˆ„,>ð€þ`‚`•(ˆ,P •h CÈ‚H``„Ø8àƒHð€ˆ8C0 H€Hð ˆF €HÈàH€HØ ˆ•0ˆ€H0„,˜[ h FH€€>(ˆ€‚ØH`ˆ> `H€HØ @ H€HØ ˆ•0•0•(ÈFð€`‚`„,(ݳ €(ˆ€‚`„Ø8àCÈ‚H ˆH€HØ Š`‚0 H8 Æ€,XàƒH €€€ƒHP ‚ÈàCHCƒHØ ˆ ‚``þ„,Ch‰0X‚ €€€ 8ð801ˆ„ 1€,€ ؃P ‚€È>X‚HØ 8 CX Ž‚P‰‚P ‚€` ð€€%Ø ˆ ‚€È>X‚‚ €,èMC 8È È àƒ, €¼¡€4ˆ„€,H€È8hŽh‰G˜ ø .Ѐåû€(ø€ø‚à‚FþHhƒhä(E@ ø h‚FþÄX¾B à @e „ÃH€È‚hŽ€,H€ 8€ €þˆCH ¼¡€Ä€ƒ È8°Ñˆ>H8 1hŽ€,0„ €ˆ„áÈ (8hŽ8 8°Ñ(Ø‚ €, > H€á>8ŒáÈ ˆÈ ˆ„, €¼¡>ˆ8ˆCH €ƒÃÈ € >ˆØ‚€Ý8H>ˆ„á>8CC ˆ%ØE³²€H€€ƒHP ƒP‰‚öX> ˆ ‚ €)…ƒƒàƒ €ðþ‚P‰‚P‰‚à¡€HH €, ØH0Fˆ• F €%ˆ„ €Â€8•(• >€,Hö €HØ ˆ ‚` €X¤íÃØ`„,€³0>( E„‚PE`3E„ÐöŒ–2 >0ƒ08È2>€F8 F€CHŒ–:C€ƒHØàC(ˆ–2 CàA38`„³h©Ëh©C38m>€ƒh©³` í,Ûˆ„,>ˆ•0•(ÈFð€ˆ„ ‚؈Cð€`‚`„ƒ`8Ø •(•(Hþ€HØ ˆ„,€(ØHØ8ˆ• >ØCðˆ„€H0„¡€8•(•(ˆØ%`„ €HØ ˆ€H0>ØCð(ˆ€ƒó¦m1HH€,Pò(—ò)Wr•È*Çò,?ï`-7Œ€ˆ„È ˆ„, €¼¡>ˆ8ˆ„á>ˆ8hŽ0„ 88ˆ`H`X‚È ˆ„È ˆá>`„È‚Ø)µ È *p€`H€ƒæ€–È È‚HÈ È ð È àCþH€È‚€,ˆ8hŽàp€`‚€ðò C >0¡ êÀr¡²2F€F*Ä`8`¡’3ê03F€FªÏ`8`¡* êˆrF€F*¤f8`¡4¡²2F€F*¤f8`¡:ˆ–ŠvƒØàCȲ–:Càƒ‚080´–*ˆ,F¸ 80„‚0>´FÈ8 Càƒ‚€C0öhøƒ`©  0•Š,W +〕 1  €P‰, >8P 9K03>8P‰‚à È‚HØþð> CX‚,ˆ>8P‰ÂH ˆr>8P ‚à È‚¡0„%È‚0 àƒ–à€•4•°2>8P ‚0„%È‚¡0 àƒHØ•`–à€•8ˆ€ƒš'•ÈÔ·²,P‰,`}1HH€,Ȳ`ÔCˆ8>`Cˆ•0¡ŠƒØ 8o¡Ê20öˆ8€ˆà`C(0ö³6C`‚pØ88ð€ˆ„%H€Ø‚C`ÂØ ´ €Â†vìˆÉ€FZ’`ÀþƒpD¢àáB†bìè±#>G`ˆ`¤% ìðÇA$ "Q ˜Å#Cf¡‡É B#1‚Ã((Ò¤J—2mêô)Ô¨M QH`(‹(Üjp"1r0 l–( °#Á ;:2bÀ€ ØA@‚àPˆ° 2¢0À €cf8‘vDÂÉCƒYØÁpG$Ì$p€‘8ˆÀ v ÀC$FØA@`p e†iG$Ìwx@@¤ ¤°ÃàŽH˜;r–B$FØ–þ‘ø$p`ÀÙ‘`;ÒœA;D‚Y$;xÀ °ÃB쀑ð‘€ì`Б`Ö 8ÀpP@`€…E4P0;DbHs‘ì f Q°ÃBì€Q…‘PÀÇB|$à;D²C$˜-ÄÈpd1ÀKyi°Ã—ešy&šiª¹&›‘0²Ã;dÈ`fÐV m 0B‘ì0À; É|ÄÂŒDↈÉDBÁpxG$ ‡pD²•A,$ÀHBÁpxG[mÕÑV °ƒR; °Äìþ@A$;PÉ8°;ÅðÁBŒd€! ‡pd!+Á1#ì@‘,Q°R,$ÀÈDÂBŒd€ d±|"F$;P Àá‘ì@AYpËAp À;,DA Q°Cb À‡!bD²›‰!bD²‘P0À Àá‘lePðaH,$ÀH’·'GBÁ QCb ÀG$;$0@‘"F$;P ô‡ð¡4Úi›¼•Úm»ý6ÜqË=7ÝuÛý6 P`ÈBpÀÐV m d‘À‘þì@A$;PÉ(½C|–‘lÅÐV mea…ÇV ÒœÉ8À;Db#jï@A$;P°‘ì@A$Q; ÀAèÀ±ÕB†4g2 P@Éða;´½U$;P Ƀ@$p—SÉV í@A†4g2 P@|œLÁ‡ð!|¸ÚƇËQ [aÈV²•… € K @òà`ˆæ(;PÀ†8`‘àÃå(p2F À ¨mÌLO dñ¤@$²@xR€‘€X C$Ô– àC$°ƒÀAt;ˆ(€,DbÌø1C ÀYÂDºƒì@¤~0„#l·€Y€Ò Á´ 1„!ìf8ÔÍp0Ä Aœ6>‚!†€á`ºb†€C$v>b! N›!øRà Ä94zh80b! V v aì@ÂV¾2–­,† YÈ2˜ÃüÑ­dAÌf6ó!á­œ¹Ín~3œã,ç9Ó¹Î5þÄà;ó¹Ï&±Ÿ-èAºÏ†ØQèE»9p`4¤#-éISºÒ~ƒ!’ ÌmPaéQ“ºÔqÆ C >,$$s3føÀCC`† ÉÉ0#·0ÚH€! ˆÀ àÀ $`Y€"Db vÀ ;ˆD°S“»Üæ~pÀ,P`XÈVæ– €7ä|@P€![9Y7C ;(4#v0€0d0À`Äà Db0È(`$€Y€!"P€ç~9þÌc^·Àd[YHHê¶•.K€ƒà‰­0$$'Û²   €Ã¢á b!Œ€! ²•…l%p(‰PÀ ; €A(<8D ð€Ìã.÷s‡…ð@$à€HÀ;à…l%;  ÂÀàÄÁ8|ˆÄV ‡8;`„€%D‚H–`28 ÙŠAv D‚@X²°PØA@( ;`4#v0€d,XÈV‚D" 0á dˆ„!<0F„† @þà0÷õ³ßÒ;@–>쀑Øv€,,|0ÈV,ÄV #D‚ÀİÀ0B$xDÂV„!ˆA$ìÀd,A$Àd,ÉÀ°@ÀAlClE$À0x@$ìÀ,Á @$ì(!dÀA¤À! €!ÄÄ„!$€ ÀÀAX$ÀdA$ÀAX €!$PÀÁì@û•¡2Ú@$ÀÀÁP@$ììDÄV,ÄVÄV ÍV@ÌV\0À,A$0À,ÉÀþ,ÀAlClE$ðdAì@$ìDÂP@$ì( °@¥±À¨ 0‚A€Ä,„!ÀÁþ"0 Ú@$dðÁ#xìDBÄV,ÄV DÂA DÂEÂV„$@$ìðÁ‚@$ðÁ‚€ÉÀÀClCl…A$À,#DÂP@$ìDÂ@$‚ÒÀPÚ0B0V¤EžÛ@ D„E @@ DBP@ ì¸Ã€  ØÁ';îˆÔi$> ØA€Kp(p T ¡îØ€…vD2ä6ÒŽH þ#QHi€v<¤°#!£;"ñIàÀŽH;"5LÈhœ,–4–>zuëùð¹>p…í³OßAá»õʧW¿žývF;ìhh €†)Px˜?Œ(ð ’Xb‡"Ù‚éX€‘H<€Ã1"Ù‚H(àˆ„‚àðŽHòˆ…ÉC(àÈ"¿üËï!v˜®±Xb‡v  ’(ˆd Ø€Èb ø`!F²À €Ã8²˜‘‚Æv ˆ„`$8`€tˆ…Ù‚HXH€‘,p€,–€þCĈd "¡`8<€#’(( /§£`‡‡(È"8`€¢€1DŒHv  Î #’(ˆ„‚àðŽH(àˆ$¿²€C`!F²À,¼llÄH€(Èâ! vˆ`$CĈd ¦ÛÁƒàp€>Vm×ÝÆ ¢"¡—* ‚J4LHÀvˆd‡ `F(€Û*   `‡ `‡ÆHÀ(ˆ"À€‚"Ù ð€ `‡H(À%àˆ€Þ-Ú裑†# IþÊï¡ü"á€,Ø!’(ˆd "Ù‚éò{ˆ—  ’üÊï¡ü¢*¨àÈ/!CÜjŒ`‡H adÕ(ˆd v  ’(ˆD4 à`"8(˜8òKÈ·Û8²ŽHIÀH(H€à#Îü"Ù‚H(Ð"8ø@›‚Hò{h 2Ä-é²€é(H€àc Fp€´)h—´)ˆ$¿‡ò{(¿„m 4‡Ã·c„ <`: vHˆ‘ˆ„´) F À <€42eÈÂÀ‡HP`pðþ"‘Ÿd|0D !†Hì€Ù‚0" 0„tò3 ` ;@$v@éì`KØÁ"± DbذDbÈÂÐ0" 0D$(08x‘ @F1";À<$?ÉÏ@°ƒ%0"; @$v@Hì‘0DcX0>D‚Œð@"± D"?ÉÏCò3 €aD~’/5f€Ã@€DbpXÕ(‰P``„( ÑPØ"‘ðÁ`Ä@‘Ÿ„dÁKÉàØ! ‘`þ"Á‡†€Œˆ P #BD" àƒ‰P ùyÈ CdÁKÒI ˜²8D‚  aˆ,D‚ð@"± ´Ë ˆÄ(‰ü<$?ÉOBX0€0Â`Ä@‘/5ÆYˆ<0Àá!ØA$ ‘…H°‘ð@"± Hg,ˆ!(8Œq;@$à8D"?ÉOB š%ðmÈ(0 hÒÉÏ@v@H쀑ئ³ DbˆÄ(‰P@4€"±Dh€æà‰ü•°…}—!(þ‡,8ÈB( Q ð! Ð(Ò0 À‘HÀ²€dP@cáPpØ\2h”ÙF)‰,P@£àƒ! ¥À»< šƒÃª0€,$`6€J…ì€p@° †H(h”ï¢@À8 €ÈÂ@ø@$`Ub€JC$° ;€K`R !p€ÊVÅì€)ØÁ@ø@$ p…À%àêv— À¥À@v Q D" Ð(øþ 8€‘0D@ÀaUp€À‡`É Xa@"±¸d|`Š!`ˆ,a†EÚ‰,€‘ÈÏCò“h”H@$v@ì‘0„Àˆ0B:ùÈ(‰P ;@$ јP ; @$vFx€¢¡‰ YÀˆ0"ùyÈààf]ïºh;#²€é‚:2bC„ÑpX !à`ˆ1*;N|0ÄC ‡fg |€#¨l¦‘Øø`ˆ„(;N†àîùF DÙESva ‡þwñïâ‘eO‡;àµw€€‘ØF)‰,P@£àC$àDbpÉø 8@e†H(80% Ð(ø€d!È 2€Æ$`YHÀ²¨$`Øà€,ì ‘PpØF)ìàà]÷zBÄ$ _7ûÙÑNØüd!ímw{awÀˆ·Ogàƒ!¨l¦‚ 1h>¼KÙqâƒ!b8èH4swü@bˆ†ðá!Ù‘NCÐ^ˆB í€x„æÛõ@ùÉó¡Ï”0"úigÚ*@Pà!ù‘N€öüi…РƉp!møÆß†B€¿€òpÈÏ@v ?X v <€b€à€òCG€¼Žòc ø€² 1ø€€ø` vÀ(ƒòƒ¨òiøà ?‚(Àv@: a ²  Àø 1øà ?˜"à ú˜° ×ÄÀ"€Á"!?";¤cà!v€þNóH ¸ ¨@A4@4€ !!4@ÐPŒv A4‚D# ààÀ øà€( ÀDCGv€ˆj(@GÀDc v 1ø€!( øà€(@:ÀDƒ¨²CÀD#avÀv 1– `" (À¤ A4" (á ™";x-;¨! ñ™Â(  ! òc òc v*( Á*²`€€v €v 1 4`4@óP`4€ ~@P4~@ Rþš@4àâ~à4€ ~@ RA¡#!¸ :2¸@P 4 4€ ‚ "¡#À€À" À€`€À"(``(\àÀÜ"v b (€b v €(`"a"¡!Ã*( v*(< ø v€À%v €vÀÜb v "vÀ`v !av øX€v*(<` v ¢1ø v€À%(þ\@*(`  B4€(``"ÁÜ"v "–à` a `‚và!<À"*(< v "!aà ` °1òƒ×ò#Œ€Öóa`–b òã!ò#à< v`–` v€¦ƒ >à"A Að ¸à"á>”"á>”"aü‚ PàÚ@á>”Ú`üÆï! ?` 4 4€ ttHb` v`v€"a( v€`` –ø€€²þ <² ?òƒHw  ("a " ˆô!X a( X ! À –øÀÄ v€"<"a(` ²M)`Há`v !( ‚ a (*à` –ø OÂÄ v€"<"<"!?" € !X ! À²€S‡t  ‚²à!(`B €"a –ø€HwÀ€øÀVñ5_õu_³c_#a(À_#!;òt( _þw€ÖVw€öa!6b€ !!à"?"?" `"a( v€"a( Oࢠ~ ^ö!^ö!^v ~À!^6!Á#aHÑp >@"A¸ áòu( v€v€"a( Dƒàv"(* ò#! Á-lÕ€ vø _ó#v€"Ð@"øm( òã!v€ÂÜbH) (€ˆ”À"! h"ò•Іþ"!?"?"?bDc ( páÀÜbHwà ˆ”v` ø ø` v"†”ÀB À$ö{#*(< (\@*(`  B4ÀÀ`"a`(`v`Hw*(` (``(`†Ô*( v*(< ø v€À%v €v À"À% (``v|…8ba`à!òã!òc `–€"a( v€"þa  aH©à !á”" ~ ^ö!^ö!^v ”àa áe¢ ^öe‡ #4 4€ " !_w€"a(`€<€"A4(` ²øÀ€‚ò#!²€S‰t"` €v`"Á à _) "Á( <`a h"! €< "a( òã!v"Á²€S‡”X€bà  ! " < "À ²ø _= "a( òã!òã!ò#!X@£Á€þ‚²€S‡4 ² !v‚v !vø v"! €†tX` †8bw²` €"<"!?" € ! A "a(` v€‚€² Hóc v`–` v€ò”€v€"€²\²` € A "a( (`àÀà v€b( v€‚< €² a ( Vú±Ö(²À€‹4Šø (@£( À"! `²þ b†ôf@~@ 4  ? >à~` ¸ · Úàzû AP@~@š ·`_ ²A¸@°[!_`² À " `(  €"Á(@@£(À_€ Á`² ø` X _Å*`²À(@X v\bL@£( !à*@_ù€ v à`(² ø` X` €ôuÀ%À4Šb4Š"! (@£(€"€"Áþ(à@_) €v` ²€ (À Ðv"a €†ÔÀb v²!v àà òã!ò#!@4–€Іb(` ( pá€Hóc v€"a( v€ò4?"a( ( pA"øm( òã!v€b( v€"?‚ ô<Ø…} v! O lU!!A¾WaØVÙð• á! "Öà€ !! a_•MG "a€ !!” _ †˜à€‚àÀþ"a€ Á_•í± 6; v€ HY`¬bw"! €"!?"?‚4Š< "a(` v"Á<`a Hóc v€"a( v"Á†” <€"Á€‚ ²øÀ v€"!?b  a€<€"?€‚bà âÝbÅ  ²àííþîñ~¥ó# ò~_ó# ú¾ïó# òt!ðmu €"a4Š"! (@£(€"€"aÀ%€" b !€þt4 (@£(€`²  à*`HÅ*`²À(@X v\bL@£( !à* " v@£(  !€vñÕýÙ¿ýÝÿýá?þ߀ !b•MG Âà@bŸH 4dÈ`$Cp"íÀÇPA„ âCaEƒ†àܱc£È‘$KšàÄ}w(pâFâCÁ>w$ðÀ'ÒàTäN\… àø¾?¿þý÷ÅŠ|0bH$qÓF;`ÐÜ“QR$p°C$𠆀! }µY`H‘02À†ìÀp°@A$p€ä€‘`H#í@Á[;P0†€þ´Dì°,0’‘ð,P°†€ôLF`H‘ðÁ# PPÀáA| l€! ”p0Â_V0ù0™dˆJ|ô‰¨B†P€!Y8@\ÅEÐ@A$Œ80À¥YìP°CP°CEŒ°€À”€ì@—R@# Àp¢’J‘ì‰J‘xAY0Àí‰J€P€‘à@$8ìx # ÀpÒ,‘ì‰J‘,K0Â,P°CA†þ ÀG$;D¢RE†8p)‘0BÁìp)x  8ÀpìÀì`HÀí‰JQ°ƒAìP#ì °@Á—R€í‰Jñ‘€ì@—R@Ð¥ @°C$†É‘¨T#ì@;´‘ì@°@Á‘\JD²C$*ÄÈpd1ÀymNP\œ×çÅeR @èªãÄÈì@!K AqW$pÀD²ÃKì0@$;P  0‰p"F$;P Àá‘P0þÀI\±#Y`ÀáYÔFAEqÀ(í0À; °‘ì@Hì€Øv€,,|`A‘‚€ƒàøUdHÀ \ ¡ÀL‚0bˆ Àˆ,ÀÈÂÀCˆ!; @$(08x‘Ø’ø‰„;0²@ Œ .‡ KJb1DbˆÀ!<‡HÄ… Y ‘$€Y€!²¿P `A(‚P‘Xà@KÁ!;@–>þld @>¬î+0AÉ(@˜ˆdÈ LP—Qʲ$pH Q8À q1H\"Ád!;ˆÄ(‰P ; €Hâb>&ˆD\ ƒÄ… ¸Ô¥à—‚"`¡€ €DÂŒ(É(‰P`ˆÄ( PØ"ÀÞâRC¬";² #"‘…0Â$q‰Ä( ˆ>L“‘ˆ‹Av@‚"`"¡ÀFˆ8 Y pJ‡iR q1H\ —‚ þ$K @Aá`ˆ€‰„ p@EX€Hì>Fì‘€àPF À<0ËŠ\Šð@$(€À—¢A.˜ À"±ƒ €;`€Td—¢A€;HÀ(°ƒŠð!À"A @`‡\Š‘¸H°>$ÀØAâbì ¯Ìeİ‚À‰‹AâBì` ŒˆÄ(‰P ;@$ Q €‘`#<€H쀑ˆ‹Aâb¸Ä`A—‚d~Ùà@F`þ‘ØJ² DbØá D$€v€Hd|ðÀAFÄ¥ Y€_E²8dH@$àCD",8  P #BD" àƒ‰P q1È Cd~"¡À ²8DÂYˆ  $ p€ ‰,€%ñ@"± D".‰‹AâR `ŒðÀAFd~1D"Ádp ÈÀˆ À ˆ`ˆ Y*²ÄH˜« K"AÀÁpˆD\’ðÁþ 0„"± d  Àˆ,À‰ Av0€%ì`‘ØDb1Db À€ƒà@¸D" àƒ! Cˆ!; Aâb dÖÌ5à€YÈM>dƒ¦@€x  @0€,ÀáR¨# ;@``‚AS€ ;4"‘ š|0D@€`Ð@‰@€  p(I… À—JÀ²€P¨D ‚AS%HÀXÀ‡8 ,ˆ°ƒ“ˆáR þ@ ‘P @À‚Hì€ M‚ÀáR(I(0€P€À"‡PYˆà€°`HX`’ 00Á )@ š‘ÈM>D`A$ ‘Pp( @d ØAဠ|€À‚Hì *bˆ‚ KØÁ²D€C$âb¸d Y¦I±@PPp°qA;@‘° ;@"ÁÓD 1 ±‘ÀÓDF±ÀY"aþ|0†Yap0††pA|`ap00AŒ†`¡†‘°À†PA†ÀoÁpÀÁp`‘°À†€Q†(ÁpÀ#†@Œ†@;|`Á;‚± Y| qaqQ,0hŒà  ;@± †àÀÁ± ;@‘° †P‘°@qQq¡qA,0hŒ ‘°@qa;ˆŒ! ÉÑø9q‘ÒXq‘Öøþ9q‘"±Œ`; , ;0h Y@ƒF| p, ;1| pp)` p Y@ƒF| 0Y—2±À;0h ;0h@Y@ƒF|À±à0hÀ; 7‰“9©“;É“=™W;|`F a|P†Sa| QA á“(U‰•Y©•[É•gYЕ̵Œ–‘pP–i©–kÉ–yÅpÀm)—y%†PY@C± pÀs ˜)˜7þÉ;0˜‰ù†@ `ÁpÀà‘ ;@;À0°‘°Š)›³I›œµ‰›"Á;0;`;àA,0Œ°à ;@±@,Œ`‘@|›á)žãY°äžp`Á`‘ ;@±@PPp@b€ž ª ‚p° ´É;0;@;ÀÁ  Y&Œà@;‘`0Œ@þŒ`pð 3J£a¹ °5*›†@p``±ƒFa à°pp) 0Y pp)` p°; £]ê¥< ;ð¥²É;P|À a|P†c*§s*qA§‚¹Œp§{ʧ[i;0Чa‰ƒj¨‡ê“†°pÀˆª• Ž*©“J©c*†PY@C±ppÀ•*ª£Jª7i†@Œ0p@Œ@ 0Y à‘° 0°Œ@; Œà K°¥*­ÓJ­«Ãþ;0;`;àA,0Œ°à ;@±@,Œ`pYÀK pàÀÕ*°K°4 @†PŒ0†@qQq p @‘°@;@AŒ@0K@bP°+˲-Ë;0;@;ÀÁ  Y&Œà@;‘`0Œ@ŒÀ;`†@ -kµW+°†@p``±ƒFa à°pp) 0Y pp)` pÀà ÀK°rþ ¸+¸ƒ»,°%ÁŒ@¡†Àap`p`„k¹—‹¹5ºŒ¹ë¹Ÿ º¡+º£Kº Šg¡a*Á¥ »±+»—p°qq ‘00»Á+¼Ã;b`‘ ;@ '± ;Œ@¼Û˽±k†@Œ0p° 0°‘°—B‘0‘À0 0°‘À à@à‘À0°‘°€iÁŒÁ¬ÁÐÈ;0;`;à± q þ;@° ,Œ`;@ab ;@;Y°À‘À ÀY† pàÀ,ÅSLÅUlÅ# @†PŒ0†@;@ ‘ p)—;@ÁÓD;‘‘@m p@bpŇŒÈ‰¬ÈaÉ;0;@;À± †Pq Ap‘àÀÁ;‘`‘à  ;@;‘À‘àÀÁ†@ ‹,ÌÃLÌÅŒŒ†@p``—2‘0h`;@pY` *q) ;1& , Y@ƒFi@K°ÆÌÏýìÏÿL,° a|@†a|Pa|`#apÐmÑѱŒÑíÑ Ò!-Ò#MÒ%Í9;libjibx-java-1.1.6a/docs/tutorial/images/custom-marunmar.gif0000644000175000017500000014032210071716566023776 0ustar moellermoellerGIF89aX‚ç>>>‚’V®V~Â~žÒžºÞºþB¢B’!’ŠÊæÊ>>þjjþj¶jjjjªNªN¦NÚîÚ¢>¢’Ê’vºv¶j¶’’þVªVŠŠVVV...††êöê~¾~ŽªªªšÎšªÖª‚‚vvv®®þžÎžºººž>ž²Ú²ÂâÂ’’’þ†††ÂÂÂFFFÂÂþ¶Ú¶òúòÎæÎÒžÒ¢¢¢ÆâÆæÊæÞºÞ®®®rrþÒÒÒÒêÒ..þbbbZZþ&&&ÞîÞÒÒþΖÎÞÞÞâÂâÖêÖĈÄêÒêzzþÆÆÆÚ²ÚJJJ666æòæzzzšššúþúÊ’Êššþ*–*ÞÞþæææ“&“òâò~~þþÊÊÊÚÚÚ BBþNNNZZZ¶¶¶öîö~~~Ö®Ö‚‚þîöînnnŽŽŽ"""ææþ®^®¾z¾–*–òæò.—.RRþžžþººþîÞîþ—.—öúöööö:ž:êêêââ⊊þZ®Zªªþ‚‚ þÊÊþÖÖÖ¾¾¾¦J¦ÎÎÎ:::RRRBBB²²²^^^b²b66þ^^þ222žžž**þ***ŠÆŠ‚‚‚š2šŠŠŠúòú¦¦¦fff¸o¸îîþ–––FFþrrr † úúúîîî²²þòòþ¢¢þÚÚþþþþŒŒêÖêbbþªRªÒ¢Òn¶nš6šF¢F&&þ»v»òòòNNþÒ¦ÒúöúÆŽÆ2š2®Z®Žþúþ²b²ööþŽŽŽŽþ¢B¢âòâ¢Ò¢I¦IQªQy¾yrºr¦¦þæÎæÀÀ––þ††þ¶¶þÎÎþ¾ß¾ÞÂÞß¾ßââþêêþž:žÖÖþöêö¾¾þ–Ë–"’"ÆÆþŽÇŽnnþ::þîÚî^¯^£F£""þf²fþþffþ>ž>¦N¦Ú¶Úvvþ22þ«V«†Â†âÆâΜÎVVþ¦Ó¦®×®JJþÖªÖ6š6úúþ‚þ&“&† †³f³f¶fÊ–Ê>¢>,X‚þW H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cÊœI³¦Í›8sêÜɳ§ÏŸ@ƒ J´¨Ñ£H“*]Ê´©Ó§P9’D‡N¾4ä´f•“«ÁPÝÔÂR L¢‚£BS’VÁØ6ªÝ»xóêU*L‡m:¥X5åEà V]2<‘ŠßJ•¢”IègH 'Z"ù@¦C©BJ Œ²y¯éÓ¨Sm‘H ˜E& áqÓ¦‚T"­*åƒS'­}LÚóÐ⪓+_Μ%k_†PYÅ•z"a"5`R˜0‰«þG¸î†@Ó&˜› l¹Sb„‘ñE“¢¬ £5 ™!KaV!“”’~“´ÆU8t0I$“­B '1ÕB-´°F%8”ÒÈŠ‰­ÂFkŒD¢…@œ„—b±¡Ÿ‘¸E]‘Ù©n‘±F®‚M¢Õ•»EÊ—þ¡'š•qŽaË*}Dq˜«ì1 —h7kŸÄk,PÏA—)¥”®Ò‚~ è'Ðl«P›£@ èF…´›â¦Û@StÀÑH#¼…&W\"-Àš.r ®ÑÈ@ðºI/ }pPá È+ðÀ»”¬\a¢bµ‰F»Š$‘ )u’vªß&‘ÜÚ-{ßʉa1ÜFЩ¹»ŠÉ«ä+«¬ýz‰"ÄÙE\¼îgž->¤\Á<÷ì³Gɲ¦LšèsN Ã*` ãÓØêöE%qÁ §«´·‡!c Ñf#lf ˆ°l%–`EñêÊ´¹Ÿ†Äà¥$C\r“ˆð‚þ¥ô±X?.øàµÀw@Ñ&³GK{ÆKD1DÅg-m&£„‘HXS_‰—棤'Éë® \ñÊj “<À«gt2I'ñÂJ/C„;'f.üðÃká 0<G0Ý<®¥íˆ~0ïüõ2FïÃ>@ÁFA}|å„ò™‚"ð½‡yXÝê„Æ>¸e û}¤P†)_ܺ‡ã#·àN0¾•àï€L F2p ~P 'HA¦¬AÈÄó*ÈÁzp'{ØGHšð„(L¡ WȺð…0Œ¡ gHCί4)D•(“‚æ•þn«¡‡¸'?,¢"œÂ½ò…6Æ` §HÅäÀ à€š·‡B”a2¶ƒ)´Aø¡˜‚)|À­Ð~x®À@Ç+VñŽx4 "8€/¡Qˆ …6tÈ £è@% Â2 g`„ F›Mäg£ð! ù€Eð`AÀaGIJ›”"Q8ã8 DD`~èC#±›!ŒáL-ðA'@ч!LaG€(ä&€*1?LAmÃ*¥4§¹’=¬A:¢!l!‰Nh¡œ å*|9N²´Á«¨Ä䲈aÚ¨ U(ŒÁ Ñü§JWÊSPA¢ˆÄæRàE ¸D Ð(E”B•X¨ Á( g¨„(ØP ðàè€ Ê@²ôªXÕÈü „”â› ±EA(X5«hM«LÊ (pbƒj«\YR ~Îõ®x- *R¡ Œ\ᯩ†2¨ñŒläÏxÆ=F’…+„½†A€‘UP¶¯ ¹Æ$»Š{¨¢«@…*P±h(£ÈBH>‘Úl<#"÷8þ!Š ŒÅæµ”¶­H5Bq Œ¤ÂƒÀ!ØÁx8@ Àp€€Ñ‘"ôv Ï Äb Ñ a‡<ƒ´>Á)üëCà Ԡ4Ò ŒUpãW8ÁbUqŠ@£"¦FN…%Ÿ‚ÄɆaOaXjxc×Pí)”Ñc¸×-È=á `|ëpCþ‹³Á\ Ÿ ¯ƒøƒ”³ðJ@ƒù˜í):¼Š%á>…¨—øа›Q‘ ²ÍÆ5,\ ;œ³qC<¸ÑŒ&\£ÂИ5ÈûŒpŠ&Ä ÜÜTÌ€ÌýïSñ \Á´ðÐ Hx#' ƒ9¾A‹o\”hÀ NQH B«èØA‹| Â ߈hñZ‚ptpÆ#ì°Š $ôh‚œ±ŠSä£ È€aÜG Â=È·cÝpOø7®À=Hû o¸ÂÏÈõ „‡:<" ¡ð‚A„„Uˆ¡â]Ç ÄpŽU8@ °í—þÃ\oÐá”8®7âÑ/¤¢@8‡„°ŠAÐ⃨;ƈoxáßh=¼ŒfLûæ 0ܰŠjÄz 3Ä8رì:„" xð†hA „Ã-âA h#ß=h0ªÑïO¤×^ðBVq‹s8 Ï…90ŽPTãÑ÷­¬©˜z÷Ô`ÇÑ….øXp2þ@‹k§@@3PA‰ŽgОA9fr .˜7ax4€¹W(B¹U¼ Uâ @8nÌу @# ´E3êéTß°ù=¾ ;(à D\@güÏP†þ`ܯÂûѦ0l«Œ{Ìù% ‘ãB#Ãx7ð@‡fôvi†9PÜ}=€¨p p Y0ì¦.ÐúaÊPÙ ñà pôðš—ùðÏ`|ö]ª@ ÎÐëÐcÙ0yƒð MªPx`hƒwGÕà ì nÆFÐÊ']à© @àÙ0™wÀÐÞ° Ô€©° ¢§ Q· Ÿp ¡ð 8÷ ßð]æ -Ø´p\Ô°€ΰW·0u†vÍpÊ7pÕnM€G6H 30 æ Ô°Xu@ EWqþÑæ]æ—fè'Õ xµ¶ µö BÀx^Ÿ ¡0°&^5wìy0u@ çà ¨ À ÕÀ[ˆæp].`iMÀñ Bà ·`醮à Þpg—oÍð]t–ÀcŸÐ¡Ð+ØßP Ï028ƒwTBТxñ  ùà Â`ÂPŠà @`€i Ïf„^ Ypå j剷p ]eá HÊ ªà å  Ðð¡  ã ÀpÞ@¡E „  Ï"Æ  ·0pv€Â m¯ƒ « (Àt0(þ{u”ðoXŸ  ,y nàÜ@ ]‹ ¡° ÀÀB€ JYãà ÍàM0…Öã  åðÕ0ÍÀ@©àª¸ŽØ 03 ¨`ÎP æÐ bð |n@i@v Ê`ë@…• 0˜Ùð]ïp]ÐÜ`]`uЂp‰‚§xÄ`Îà ÙÏp÷Ðô°®pç8‘'†¨P® Ði ©ÐB  YÀ!é²GE‡…À ® Bà W  ôà = ÔP\· Eð ëp õ·„p¨@t€ Àà ôþÐB« ®°–ª ü›Í'}5ž·BPe@Î çœP© «ÙšL×ë° ×0ŸE0ŸÀ ôà ¨ ' °ÊÀšB@ì™ PžÍÀŠß@Âð]¡ =™ëp ô° 0p ðŸÖIn =`Íp= =n­„é‘”ùO÷@ZÅ~ÏÀ\Ù€=0™ q³¸^€iºé_ù]ý–[¨à£Gú¸×e=ª¡ T:YOwX]JYJØÙ=:©@’NŠ_ZJýö¥q¦¡ExÀf;šUW œÅ °^ Q uà] £þ*áià ¦Oa_6ñôx§’*fm:©–J™×ÐŽZúÙ„«pMà „úY×u aÙ@dk©àL焸 Ðp ŠZÏà ¥š›%‘>ˆvª,¬ÞÀ¢QÍp ]@ Ôp vЬÆzÔÐQ( f…Ïpc1iPª£ª Ýv©(ô ãÐ 1M@{Öp1\Üàk#é ñº™ÇY§à—K豚Πó­#ñ^0j‘§@  ‹°á ®@”P‹IÜ0ôÀ– ¶õ ùPcƒ`®ápEð '0ªð ¼*®sÍ`þ  ªðI Ð×²Ç ·^@à ðÔàÍÐi`hæb¦ˆ\ÊÀc¨Õ¨ÚÚ:Õà ª0|«€Qˆµí–] Àðw Ѐuà WÀ ùÐNI npDë‘ÍЧ]@`]°yÀi •§à´©Ð„ =à=àßw]ÎÜv›ªÐw©€ 5›%Û·ð·®8´@ùP–Û|ÎÐu@Z¯¸…§+Eði`Y ³v›ŒÁenà£æ=–Â@ И’µc¤ ôp Í`ªÎv Þ0©P ›ÙPŒ+ À»™;¨üþɺÏ@ 2;yj °ú—q=@h§P©*{,»Çx@ Ð *”Ïp æ P¡”`ŽK »æ`®t;{A I{·xµló+i`_tnYúµW Ðmñp0¦åWpÍ0¶¡@ËF ã @ ú Ыà å@¡@ P¹g\¢()úuÌu«ë@ «p[” åpì^ð `G¯jÀ0B°q¡0ºã  ñpÊP·@lŸ ÍpŽùŠ ‰ŠW{”°ià'y´ ßPLPì£ùÀƒƒ ¯zþ@ Ÿð° Ê—€ë ´—. B¿´  .à‡.ÐB`®÷ÙÞðùÍq\¡uʪ«¶y+ ZçË3ËZ—™u«à ´PYY”ëÀ³ÇÍP W°ìð q´N˜´ÔðìÐ @ Ô ãPY×@3Í)+…Ϫø~ÛcË c› Ðß@Ä€ÚÎ\nxp Ù€öx]ß0—”ÐXµXVY ‘ ”° ]s ;@MÀ—·Pc]@¸ Í0¿Wæ@Á4ëEã ÙЮPäæ°8$ÍnFçþç`àj8ÅYÍ3À k:ùp €Žn=@ ·0È´à upc'¼MÐkÉö ©àvëÐçæJ ì@³xp \.äÚ­¥÷ÐŒ&”°¯l,„ðpëàutùÌ·ü‚—·Ô˜u¸Ÿ”PëPÂ_œÌ´·Ìuà„Ç\up¨@„L÷ ç°·àÐÙª`B}ÔÐ ç°kÜ€bÛŠôÐL M…ñÀå6n0ÜF¶«Ðôð Vš ð Í®д°‰ Šæð Þ¬—ô  q–{®\Í ùÊàYP—åuðþhXflÒiŒ‘`|EP ã0^ÀØÌiº» ùà D¬ ¡@÷p ýjE¢÷€—p¼×©À*qj¸ *JÕp°X„ ¨0$g„Ђ—¹HgM0‹MàÐü ]àô B@ §ÅŸJ½ùà”ñ€‡@ ”Ь.ŒhE0“Åú M0Þº®@ Ë{b ¿W¬˜¬8¨åà X]Wp ÊЮ¦ÌF’ ë°x ó¨¿Ô0“ip r]Í(„i0¤ë ›YÂûÚ¢æà”àÙ0ëp åÐð¿øpà‹­X`Šù Ê@ þDëÜ n}iw$y ©0`Xè𠪩à u  åè‘n ãÐPaJ e®é®@$8p ß –ù¬ ô–nÞp¥]ÀÒH§ ^n^P¼j(I · Pàç0ª[*qh…·à ×`¾¾'È 3`© °ë»žŽÓk…Z¬<) „ zúä“·ºðÂXá. Wð ÷¨çéÜž·„ÝÛž ÷ ŽºÎW]àiЬàìáþ^0On·Ð°{ úa ç¨p© äW`·âΤQ iÐÏðyZÙ î jÓ\ø¦þëÎZî}E]p X!ÿ³œæCxÙŽw[ 3PîÍàEÐçЧð³P² q ¬ =еp ÊÐÞp ¼+ E`óŽÅ§—Ö :ðM,ݨˆÜü™çð¡cüÐfÏ >zzÈžìóö=!÷!l°XÏðÂPJ÷q|Ÿ~ÿ¶5æ ?,ù€|‡E÷ ÷ŽïÙ«Ô À>AF¨£÷À Ù`¤QÓÿù úQÑŠ0- AP8ŠÀn‘­0ÀˆK³/°P¢4¶›€P™p "°C¥pë„—`_ …þ ú14F¥0ýÃR { Óß+»AÙ_ ~ Waý½2,!tý‘ýBqýØ?æo/ ``±g0Z°5AàþÄñþï¿ý±g•)N"V\µ§ÔÁ= K)l˜°TŠ>dà@˜1¡ÀUZ M‚0âÁ‡ rÔh*€¤M‰ŽTJD¦-@”ÈÐ$I…«¾ƒð!ÏR%#FŒÄG$Zvj„UêTªU­^ÅšUëV®]½~VìX²\KmZd‚Ó”Kk âhÄA˜5œ.qØÄƒC¦ ¢LâÀ!$2™ÈLYU G`2…Ö=ÃÊ*ÃÎ "ÓöE¦R¦"þñÕI S™ü˜ºiˆ–À–áä.ϱ¬2$0Ž)1Ò:ÙÓ‚''«Lp˜²¦ÑšØ08¬ñqIK‹/PµD¶¼̤âGDqhŒ[÷-¦Žs0µ('>جZÄÉÖ¢D†·ÀM¦Ñ 2ll½ˆ­Ä{n–hÄ„=ü`nŠ>"3A2˜k$7N´(‡>^ð#‚‚*+DG$±DOD1EÕsb Á¾èŠ b•Ê€a”MLXB” Ú€EZã0xÐq• ‰ Œ>|èd±(´ÐhŠ%Ö#’>DAD„IRˆ"€ àˆ @D(ZJ¤ÍHZå’!xˆþ`?¾8€ƒ´`c‰1¦à$49€B„QZÐbŠ)@é„IÀx¡ 8©äD X"26bA‹¨x*¥1†´ #¤/^ÐB¦U¢FÀ$Fl‚¡Í6ËÈh¡8)¥É# YÄ5-@y@†)úŠâ‹FðcŠJRÐâ"QF¹D’j¡p"ŠF9ЄFØbJ(ØØéžUl¹$ŠLLY1^y祷^{ïˇ0<"Š ÈäŒUxhdŒ06a£?Rhƒ6)%NVñ£“MVa2.¥‹ƒXªn!‘õÈ€Ε‡1Àˆ¤ ¢ˆä n†ÞŒ PdPìþ\=_kÃ[¾ˆ¤Ehb‰…üðC‹HÞ[eÔUÊˆ× LÖ–5¢ €Ê©éä¦=9¨îV9b 2:¨d•:YäŒ>`è¤2œ¸ç> Š/ØN ì CÚ(ÃDQ:‘œH¤ÆU|°¥ŒNÐö¡’›êô: SN»dI¹ ª=på ”ðe½u×_‡=öªÒlÙD¨P$`0:‰ÀQp`£-)öèÀ¶£Äx0œ#¡:ãÍŒFö”fhÁadø·Œ1 ‰b‘ ù‚‘E‘aë’aŒU¦X-è¡Wadˆâ´(ÿ|'òQG"˜UpàT<èD þVјF1DU ÑQhd;!1A' A©‰À“ØD!6Ñ‚("ë[Ÿ5ò+•Œá!à9 Š6EDÁ~XŸÎ®6Š€a™XE"a Q€#>hC ¨–’3tà]²ƒb¥8E*’e< :@…½ÈàCH„"ÂÀ6<€•à@ (ÄDd4 úZ B-0n@‘‚†¤€ †8ÛùƺŠ>0)T‰$CE;ZÒ–_ #Bpà³Q)Ã( ˆEÕ´VñCÂP‰×Þv+¶Û­m};\â׸]±…)L²S×*¦˜'Q‹STwº]©®¯»]îv×»óÒ1ˆ †ƒ|  Qù@z5R)è*jÐC >p¯*œwõ­ |õ0ߌÄ÷»ÿp€<Ú~胎ÐBðƒ¨„Ã!Ð °|ÀòèÆ,îŽXTáá@UÔ0X ö½/,1`·ØÅÅ• î›Þþó2`2^Ezã[ù®B ü]…|çK t„ØÇäý€䫆*|À½M®T¤ €b|àR €;€¬ò®B(@FÔ0åbT$(††gìd.ç¸Ë96ï*~À ÊAæqº¼ß'ë˜ËÆèÅÜA èÙÉ>æñ|k€bÌ(¶1àÞWÚÒ—&Q$½¢L@ËžE7X€R C,‡=Â1‹ ƒUpÄ«õ Y#– Àv¡hÂU@‡#H€‚ €&€@…³:ŽAŒdÌbIX…’aŒzÅóAº‘hW™ç&†V@ þPØǘ€1Âá¬bõþ9Œ1 AØ ¤àƒ(@„x#ä°5øðÀû?°ìáˆhÀ ˜Ç1H1mã 8†¼ù`= í¶oú5ø: (ÆtÌe>s©ø5  W~ëè!0 ,ðmôÂ,ø¶± h@¤XÅ< ^ RР pÇ<¶‘ ¤ ‚«=Ô€R@ÀÉ€7Èñ7—Ì(`{ ¬âX ‚;ômpä¤ÐÆ  d$ÀðŽrŽí5ü–ØÅ* ¿ŠôB°ÄFADƒ@ÂÁw,þ`»°G1ìÑ)ÌB5ÈA/ŒQ ‹Û#èÐÇ<´Aâäèű lC%è‚-1KD™æÏ‡¾‹máFLA£Ã$¦É•*Ä¢p/.>‡2³` ‰>áeàc9pÿp*”‚s°ÀA,`UXàëóЇ(…$˜ƒ^àƒ]˜b€Š$ ;„°`0c8{°‡f³ƒ˜‡^À6@ ÌJ;ˆ€«‚@9¨‚\"8†^˜mXÀ “‚]þ ˜… °„c@>˜ƒ ¨b2+… {‡ °t€hHþtPƒX°¨˜<)ˆ}‡è#Ã2ä.?ÀAé„0€6(à«­¨øGH¸¼Y»Ø«²Põ;¯ °R¨‚n à25¸¿ H2 À‚$½R }`€&C‡`°˜»/€8¯*xÀ ‡ó³¨*¨¯¨ºh¼n‡ZD†¶K}p.“‚ >Gˆ¼$è†h8}ø€øb0ÆC†]p‡ì†c ,ÐàÄ* €ï;/  Ød …n˜|°ÂÐ[>"€Š˜þ:cÐQ4Ãy¤ÇÛêƒBrÃ|ì€Òù 5p‡Xþ8€8=(5˜}Ø…bèRG9[€m°” ={=p„^° À‚9X€dàƒ˜ô H{˜…YPÇŒx60w°;h3† °>؆c@‡h8Ð P, Iž¬Š IÜ[Ї9ð½HU+Ht]˜ÐcЇ¸€n`¢#· ˆ8|@‡nX}Ѐè†ÈH,@|à°àƒ^pO¬Y˜‡ò"‡bðÄzä˾¬¢`Ã|€!¨Ž±Ðƒ&Ë$ 4)È)(Èôr>"ø.‹2=  ‚…¨H‚¢ø$XÄ$ƒ¯ƒPÈçë•þ°%ó1Õü€(«`äû1.s/5°Ê´ 5ÈÜ,…Ïä³lãLJãMNb8Aø:ÁÃŒ1 /.{Í#ó²$“Íp˜ƒy €Ï’‡  ´úóËðÏ)Ê-Á\‚œÏ*j=K” ¨»ô„Ïød³ˆÁœ„è-ùÔÏýäO™ó`Ã0ˆ6œ„5ÈO´*L°8èÏuЕS —6l*ðƒM"íâ  ƒ°(…È€ÐÑ ejà U(HѬ(…2@›Ž0ŸÏÉ. 2…#µ…Ó(?èƒ>¸R8‚2P-Î:[8Ñ‚#`Ò2…Ò(íþÏ#ˆ€%€I€sÊ骊OƒÒyF8‹6 ™J…2ˆ Â%¨!‹‰„€N˜‚K(8H–!¨„= ‚JX„À‹)%ÔBíË=Ø„hCŽŠC®@h’šê𡯉Qh'0P„0à’0¥Ç©“#胭9ˆPÀ'‘2`F`+20C¥ÕZ¥9P„I¸Ò— 0à€HP¡Ý>ÛÁ:*ƒH![0žRˆ2P„Óé„Û”¨š„B€è¹UŠ„ °…è„=²Õq%×Ó‚…6Œ„MàÒ®¸¢Eh„'‰‚Òƒ(à¢LˆExúþèTöP` /8“>Ђ ˆ‚>؃˜D(ƒI°…D F؃ïá€B8ÐrÅØŒ-­M]}€àDz8‚HQ   €Mˆ*€ŸYŸJ(È&(ð?Š‚àBX4*ƒ3p)NhI¸„€H *Ø ÕØ¥eZÑ¢ÒÀÌÒù‚2¡Š>Ðà¤Û°…Ùú‚v͈>ˆNø‚Jˆ€¦5Û³U¨omƒ66ðZ²Ð‚² P¡ÝhQª(…Y§¼EÛ¿Üùü1€%à€=®ä ÜÅeÜz1+QWˆI[YzAFè›z1ðp.ØÂ ñPþFè&ô„®'USà#€jÜØE«DmÃQ˜‚ÍU‘‹µŠj)R{9X ØÍ '@\°(%C¨¹…­Lˆ©°èƒO©%……ꀋ¡ [à)± Ÿˆ×Ýï• 0h+Þ™€nB„и›@„´r‚B –#8,Àœ2… ð”2,¦RÞ“¢ßИ¨•2…•ú0`00©Ï’2Ђ1@›÷u0HS _x±…×E„Rx^E8,‚…B@¸ È™UÐ)D(¬Ç½0XÜ=ˆ£a*xQ™2…×ý‚§aªÐ°úa°…F2P¶Z‚LþPH)-8¬†$†?ÐŽøá„-„yB›!¶)¿Z)ø?'`Q8W¿_9‚KàG‹2…2ø§ƒð¦êðüŠ8ƒ3xFPZ{Á÷É]6è„6,›ÐE ‘…JˆN¨2ŽQ`(ƒ~ú™M„%À)1ˆ)€(hƒQ°-X„1¨„6è݃0˜Hð [°äN¨„Q€Ó>À!ø‘À“>>ƒB8åRèª(€‚3ˆaúI€ê˜iq‚ …Q€Lè—1€(Ø„GŽW‚Hh„Hà[8dê€9©® •²Š‚)X º ƒXEˆ€ßñþhEèÐFè€)è€.fÒèšªŠ“0€—…iÛ/P¢BÐP„/èäJ€/6h„68?hs®öƒ!(NX‚!°%SЂHj.Q0ZÝmã®pÖh¥˜HxR…I¢u ˜ŒM‚©R‚¸AO|‚Kˆ—‰èØÂååE‘#P„H ¨#§B dÙ„LhDØ„p6èƒ!(Û#°ܦrØ/À¤5ˆ¨`ƒ6ø‚L¢2àLCÈ"‚# -xC…À¾b Ïñ'€NìWÑ'°ÞçR`^S@„%¸™î€Kˆ€Fèr¦Rh„þÕÈYª…0p F ‰>Š–„Nh'hI  ¨*`ƒ… l¤ Ý5ˆŽ(…j^…j†mG'H®E ƒ=ˆ”/Žh`¦‚C©5–¢*SŸ–C8îùI„¿É§1€—ÿœ„›àé©0݃Bˆ€6àG‚ÃSÖ‚òØ\ÅM.ûV‚õmúFˆ®!X Úƒ´¸oô½–+‰·%‘>ðgPÒÛ™#VR„DÀS„ðŽYøí²­ŒÈVlSئ(°Ûë©„éïHaZ™Iñ› HEQFˆÙʕكfÆÈ…ï=ƒNX0ˆþX ( ,y ‚â%‡Íˆx>â(0%* 1!ƒ%ƒ¼q‚MÀqÒÐ6p„X„KøíL°6ˆS؃̹SH„5X*è'à€€‚e2 ñ2Ђ •Š=DYï‘#ß„JHUøN˜ QXÕîi©„èƒD¸ ŸYÛ }(hÃ%p%„8㘄0˜QX(ŠL8ä²YˆQX„NÀR?pD>t‚S·›{I“E`{Í5@„Q0X‚ Fà„(N%À-€%òõIø˜«U“† 9ƒ& ’—z˜E…@_„šíþ宎«MðÛKx6x#D€K^Q@lš‰àMH-…o IpòFZ*ð2ÀQE ‹L.I2˜¨I?˜  ¨î)€2ðQèÖØ'˜I€M]‰Õá€/ø‚2X„jvv?G„fêŠõ€(ˆfR‚P¤EXÓËÀ…ΈMM–vô­xÞL1 å`„Dp]õÞô¨Xu„ˆ€E„ åÂôƒ(øx Eˆ)èN-j‘„%`ÝF(-ÀJ`Pg÷Ðg52‘4ÑÕA)Ö±F¸NHL`„Y2E > €1`þf`%*Èg20YE°#EØ„#Ц?U݃E0J.”™‚1ÈgÈOQhT#þÈvQ¤˜3(pŒÙ&I°‡7ýÜ0„K€ [È6j˜‡Vãª(FƒøÁþ°ý)؃KX„Í&Y‚1¸¤‡ø}¨Üm¢Qà„õ‚öÇɈEd¾ôY…Œ>D\BÔ1P±‰ ˆ ›U7öÑg#È"G’,iò$Ê”*W²léòåÉ=d&QÙ¸†LŸHc"¬ SsÓ’&È€EôŘ=«l R¦–"Úl4Áa• EEtÒþè@N @‘1*ŪQe4B¹´ª-Ì”}2u  [q÷®,eJc©F1Êè…ÀDT”<–Hš2 LÌ¿&MIFiËT©U{ô‚´õq£-ÎKE‹ô Ó¯Ò‘•5šmZåž>’1ƒl];õ*Ú$cãæëû7ðà‡OщL%?–:óÀЪ% V-)êªÆ=Ö`žJÆ‹© Åkœ¢Õ¼F]W`JÆ¢Kò/AV«Q†[¸ÄWŠb7LGì7à*¥€r‰Áp‰$*iJ#¢@G …Zx!†j¸!‡"ùÀ~$ÂÝ*¢4²Š&üåuA‘4ÔFNt‚2èeJ"þT¤0„€[u’šU«LT±ç'dô–ÖZßåçÖp>p†]‹’Y‡Y¦%—]zù%˜azyF"Qñð€%’tÔA¥œ¤‰2†…´0–^ˆt†™TòÅQ4Æ-L~”‘ÈyZ­¢žW`12Š$GCƒö½ådø±Ú^¶àP‰]1œ‘˜˜©ªº*«­ºú*q…ŒÂˆF¶4"C&†Äâ&vù årvMÒ Ÿ­J Ñà*)ø@ <ˆòÀ$QpÕéÙ^¥´0„]£d¤)\eŒ€ ¿91†¯c +¼ñÊ;/½õ^–K}tYH}èU œ“fKþÀºfŠÛr„ÝÆæ/¿üjf,ª¦CJuËg¦ ‚*L~œq.‘l²¤½)«¼2Ë-»ür\¥ðˆ]KDÌ9ë¼3Ï=ûœ%LbWMþ|4ÒI+½ôϦ°Q{‚j¯N¤¶"ÊiÆL{ý5Øa¯ZŠ2 ]»ÌÆ(=RÉ5²žØ~AZÝyë­´ÓÚUÉ&ù¶ Ã’õÁZ[½°7q  6ã‘Kîò› À&h=9ç(ÜàÜ9é¥YŠà>Aå$$n:ì •„]Cl‚wì¹ë.\)—œÁZ&$wÒnÈÐvA¹ñÍ;ßþÒ&“¨µèÐK4RÈÎ_p"øK-ˆò<`—ÛõÀ£ƒ>ú’ì]ØÕ(§,ñ*œdÄ}Xf¦ÿ–šQñ{þ ´Ô¡Î`’»„¯| à/}ŒØç«Ì«e< 4R†(j —x xP!ŒhD 81Dà S‚‚ֈŭ¢A°¡[ ±†F4"Sàö&§§Ž/Ab¹JkĤzÀ•Iý³Bp"™xÀ†ð°¡™þØhÛ B$" gˆí‰žÁdB#ØP†D`"0àÄ(r›žQÔd?4ªªEr„ îÁ—`D ASø p2Åf8›)t@ }€ [³‡ÊPÝ–J¤!b-Df›g¶ð)pýA°,ƒäBò9 /˜øÂrañ‘*Ÿè(_.€¡”¡&˜IÀCÜ ``.ðƒøÃ*`?´B´”aú”Â@ÑìÃÀÀ_häùØäI¢9!ÂY=Ö#Bâ$Bž¹0ÂÙYMÉ¡Ê(xË@Š!”Aö˜‚!p†-˜˜*®bÕiÑ(0f€A*ŽBnÌ"#nM ¨bÅc`Ö¤_yE*–óèLþ.ìÀ0ÔB`À+xÜ?H€8xÂ2?´ƒ8``Hh‚'‚8(Á*¼‚8¨€Z8ˆƒ5(/ÀC:3ˆ!6ä#6ä8à‚&à¬.ˆCXÁ* Á˜,`ƒ'´Ã;0úhð_\8A,B"@R‹ñ•ø`Ë0B ¬B$Â(ŒB ‚ÀF0BÀÀDÂ(ÄTÝ%$EH$` t@uÅ@#ì!t@I¢ÍO%ì(ÈZ'ü,B ŒÂ8aμC;¨˜8 ƒð‚ 0h‚?”€È‚ 5XDjÄ4°‚ì3¬Â|¥2<`@ <:xþÀ4ìÀ>¨Ã;”eYR H0ÁVZ†„/,x‚(àJAî) M R½0‚jA"8W@•L¬A¾Â`„Ä ÚMò"H p@hXl¬¦-”ð'`†ì}µÏøB;l_:(Á!¨Ã!€ƒ' &”@.X¬3l÷pÁ+ƒ,ÀƒFÔC _.à‚0C)(A ¨€ l?`äç$H`+ˆÃ>ä4ˆ„&À+È#cæçFåÐ(eÎKÜ‘((B",[4ÙhA'd\ø­€„"H\¡ˆ‚ ¡dB¼@ üÅ þt¨!üE<@'œèˆ#´(”ý½ 65Ô8¤ƒ.‚.”Àˆ§&X?hÂ/TÀY®8øÃ¼‚`ƒ/hgrÂ2(xâÂ2èèÀ+li;ˆãFèÔÃð{n8ü‚ ø£~®inpÀ™™E¦Še®ÂtÀ@"üŽ-D‚$à@„Fœá€ÌJHà’$`5‘ÁÁ€c¾LÁe¼PBêñ€¥ò€ìthÚÎÈ*€¤Ãƒìƒ ,'r&04pÁp&Làé*øLÃ;Ÿ¿r`ƒ,,6”‚&,Ã,!zÚÂrOB+Ç‚¸„)Æ‹!¤,w$¤Û@‰”d+Æ€ ”Á„A„‚F ‡JÔ%$à ²A‚È€²µ€Ö-ÂÐÆ€|A'D#Èl¤#lBŸ×TÄÁ8 Çn­˜€ä],Z¼Ô ‹*#ìÀ*ðC0øl`C+$ç¸%œ±&XÁ0Þ0é ,AM(2¬ä‚ä0,&`8ˆƒ4§,¼C0xB0,8ä°‚'Ô3èÂ^ê\¬‘–<¨@=´&üÂÂ!ÔÃ}ªƒ8´Â/ð‚0ÃÂHà±þ5pAxîÃ>x‚îÀ¯HÃ2 ƒóî‚$/$sŽ bØ~óªÈ/`‚:”Â2C«Ê/ø‚s®‚5èÂ*à/–ìÀ¼ƒF˜A0 ÃVŠÄ+€€°³5¸36\ñ+Ü€&Ô. A¯>Á*襛ü‚'lÀô–‚?°‚F‹„èB0èÁ’sÞÕ4£K‡É?ŠÃxò+,Ã2¼CsþB.È:ž*0 ¨ƒÖÖ‚üÁ2A èBD ,¤ƒ0Á;TA=xÀ0ä#3Ô‚WŸ4H A=ÈÁ0”€´+ÔCC{[/þƒ.`Ã+Â*ø襱‚„4ˆ/0AKÏ´Ø•Ô`¯Ê0ÃâAÈŒQ>Ö-As-í¥f´Y'$H"´€é÷ "”PèÌ®O•'|vD@-Áë°S<@Ä€"¼XüØã.A×?m˜FÌ™EÐXH=Ôišœüö÷=N(Bºe޳FÒy•"Ðí*€A,A.XŒµX ͉@D‰ L›D)R áÐFÔ¦DK† c‰¤m¾¬Ò¸þqÀA†9’dI“%qTudU„J}V2ÆP©%06=˜"s•-EPúì¡æˆ%g©t©Q„ŒÎÄHQ&F D8Bæ4AÅÐ ™Zõ…‡ˆ6/l½hsÄÖ*Q£½%¢E&»)@‰©S†zàä$18í)å'é*?Zé4ÅÝLl,3JQ‡0)$UåwQ€Rj}¬²Ø©…ŸN‹d@iŠM‡3¥NæÖ½›woß¿nKãÆ#7ÑQ‹N"ôý*…:YæA™U¥l‘Q4vŽR>^€ô)£í¥B«2ÅЈˆ‘ˆ!gµ!³IÒþ*ECp`Ã.‰¤œÙ#“Q4ê£ ŽhA”%Y°ŒKFÑ¢IA¤6L±eŒElqî bØ@ £ N@ N:ÁK¸q܈‘H8)¤”ÎpÓh‰J -Ö¢“LpSd â³E‹NÖXD(pàD‘%8 £D`h†‘úeˆÒK¡“Œö¥§Òc£¶Vi$ 8h¤ŒL.¹äF@Òb‰!Ê„6<Ëä$?dˆäˆ=V飱>HÁ–DDñ£Ï> ûÈø|à‹!2Q32¢èC-0VÙc(RM!IT½:¸ÒyíÕ×_ýÍ–Â8θÄþòmŠDL)£ èü˜®Ç`°% íŽX»VÉxÒ G²%€ñ>Šï»å"È®ÄHFá C8mL^H”N2káLiƒ "˜¤ËF`ˆ`” ·«„Šï b•¯ ±/³U´ˆP˜@:°¬‚í¸$[.é ®QØð¡ DÂàä xØDÆ`o• Ú0„¡Œ0¨HäJIÈÀP’BRða“çèI„5|PdS`X‚ `¨¤‘Mb0AµIn¶…†6ä*I¨dÞú‚F)DD^•aW’‚”52±‘HÖð£ºxXB-$!›ŠÔ>ú"-dP¤â)´ˆÂIþ:aŠ1ö(Ó‡DÆèC‘#D1$'!ƒUQO]õÕM:‚c[XÙÊ"'x! ©”M\Ô"jI´°Œ˜(¤ ¾€AÚŒxãˆ)F9ÂÃý¨ü‚ƒB.y@‹$ùâBZއ(‚°åˆ38B ì.Ñb*–ÅC Áa‰öç?DBONp“#áP ÁR1%’=DB¬cM‘ Ø("¢HÄ °@ár†Ðˆ!`"*°ð*ÃRй, Èd@†ç…Ä $„‚wJш˜î!%(,b !b ‘’ìa <àþ € PHIpø“M\ Šˆî¢$m$_à\ÀPŠÈ` œðƒ)Ö@Ç÷há'ðÁ¥.שÀ  s³à!™H}ª°ƒu3…@e0…ϰ6ô6‹˜‚×pÈQÀ [P‚`À„0$}0l8ƒFĬ’xA"!D4b•ÿzÁ*9ÁOqBؤ-f)ƒF\"e¼DOZE'Ø‚ °ÃóØ€1¤Ietž*±¨Dâ="±¿¨HÙ¢¸)…)VŠâyꋦH'HLÑÎÜ”"(á§;õÉŒñ«ŸŠLê§Shanù þ?“&¥]±Óê´èE1º?˜` ÇLoöÀ!‚N{¸';w£…{~$Ÿ#1…!ûðÅ=h(G݈Mùµ+~Vô;e(0CRŠED‚5êQ‘Z†É!•©MuªÇ| ƒIg ½±E&Lpº§>u 0 &6’#hu«e5ëYÑšVµþÊ’hdì·V¹Î•®"ñƒ(qHAWHýBkôç˜/ 6®)(¨ÀSÃJ"Í©è^ð‚M0eðA ÚRª!L3ý (@‘40 ú [WµúÒCäFðaà»ø€Fb!ƒƨÇHp]@ø)ðbºª*8#@ñž!Ö7S‘$BdTtø%C |$‰Üf8#6S€  (ƒ-Ê`5C8ø#<`,O¾ÐeFôÁË*bD)Ž`e)Ž.¬ÍÈy yn0ØCÈXþ„'ÈDz.Å ܾ ¾«@„$@Á[¼ ´ïAÄ*aÄ¡Me¡Â£Ê€X'\…eàAfúÀ¢B‚¤—Z#L„J€a´›`œ€ƒ™Ö¥?¶0Ë ¡… È_8 (ÀÀdi!–…¤'¼Öå'Ú` V@ hã ,`‰Ø2@¨P@èö¶6˜Å.¢ñƒU£#`@Hæ±€$ä›6Øö x+yhCjÄ.æ¡ hCî˜>bA„bh£ ÁX0‚hˆ¤4з‹pm¬`Døw X0‡ Dƒ«Ðà F®y¬ 9(†>þsÔ`à+ ,!Ðä¨BÆG`cÌc#¸í*ä1¤–¢ Êt‚ –°ˆNa’àÀ×`‚Dd›0A$ÔÁh èðò2À‰ˆ :‚DØ0…àÄ(*Áî–‚ð¸Å$Ð!˜‚ S$?ŠHø%AXC'`À”F4⊠<5r¸” ˜Bxp‰¬·a ›@1‰ÌØÂóÕe´Fa‚3Œ¢ )hÂ`‚V‹†é)¼<£ð€EŒb ˆÁ ‰=š±!ˆ‰P p°ùF¬„öü\&…Œ4bÂ(Æ|†4n§íD…A °þ‰Ø‚ö‘Úˆ$àû.#–3Úýï `ŒF``r°àVáHaÔÀŽA4`ôÁª ¶¡4ÀˆÁÂ!zÁ@bH¡bˆ @ÆaFr@plf¡@. bÁ¡BÀ@@øàz! @B FàþA@àªàŒ¡ìÁ’¡ôAä¡  @`APzáÂ,a´Á°`ÐaÂa&à É¡ÀV0ø Å¶Aj  æ Š :¡»Ü" ´@a1$!ÞnGL 8@†þ 2!"¡¢´í>¢ èN#aS &ï $á>H#` hQRí¨'ö¼* ®(®$à à眠 Ñ 8k#¸ƒ .V!   d4ecpxç$JáöVaЦ` x Àç…A#ö€iÑ 8à‘È` >¥¶d€Z ^à ¾`È *ALI*$Ø €l @èt"àWá:à¿Z  À ¢€§ãll{8Æÿ8ò$ˆ@V@ ô>`@àåJAÂa4BvA f!¤ÀÜA5ÂÐA#P@AÀ@‚HÔþX@.€¤./@¤Àæ€Üa,Àæ`4 (`8ð Ðl F$r`bK PÀQ-õ€ÌpjÀ ûA#ˆ`aA ÈŒ¡zа@'€V,áÝæŒî, àÂA»aZ.r©R Œ”QžFÈ ܤöŽÔ(8€ Ú ½feGQíVNq!9Z…B§îS4B á7 ‰²‡:A Þþx`™  ‹.LàJEó‚ ¯>‚lŽàœQ*V!¦1U. ´ R(…ÌHbá+rÆ §Z€ ôþRú˰~ó7ûOlA”°Fw–À¢€ !ÎÀ 8#$K´/S>¢Éú`/Æ€| €UJa 4Â:à_V¡Œ4EâÖ H|mL§#I´$>2Ô`@@ ôA6B%êàA aºXrÁ0WábÁ,!3?‚€Œ4åŽÁHäX”PjR a ŒÁìA°„’( Š,IaÄ4ÂÐA@@çáø l ÐÁèr€ôŽ¡P`sÜÁäaŽ!F‹¡ÄÐÈ! B€ÜA’À&@F`Zþ. (€©L¡ü«¢€‹d€Q¢–GƒL€ 8Æ D€¨€³J!!"Àpã Ø4ÍÞø)D@&áÆ ¨`¾>–WG!pÂn2A.a›@8ƒ4¡yþ"¬6""`F!ú€€|/Ö`ÖÌ×àl\Ê Šõ Ä!à x€ƒÈ Ú£"Ø€l Fua R|±T º!êCÀþbš< Z ¦àAW¨Zœ 3¾ ´  àÊNÏÜd z³¤¨bÉJôeEâ#AÀHá¢a@€ Õ€f@ ˆ`þ”R&`P@ø@ ðrŠÁÊÒhdì#F€ jG`bRpÂAŒTbA(øáafa¶pÂA(- å>¢Ð |Nº¡ vf¡äAŪŒÔ Gi Â!&€ ÀæøÀçFàÐal  F@@4h áRlÂÁP4@ª€v”©ŠìLÀ L@ÀÀa Ø@LÀË 6Á.OZ€³ú` ¾*Äâ DÁwÙà–·ö =ÉÀâЦà¡fuø#>rÂ!Ý!.`,“ „LPNò0G°.€ ‰Âa m ÀX$´!..VÀÁÔvæ(»á)/ .`“h/ ätÝ! wäB‚Üá¡(€b.€ÜÂAnn@KeL tÕÀŠaª-ÛDþ7´Á„XÔ€’áˆ!,A ¡/À!Ž!ì–fAÚLB1rÄUtÚX­$¨wCxÒ4X˜LViÙŸp¹†aù$\%˜Cؘx Rk‡™y#v”Ö7J!¹ aªàsƒ·>¢ ´Ù$ªà›5@¬›EB‚œ7‚›·™šÑ™ãÈ™$ª H¤À¶! Î,¡™õyŸ{åøyŸm@ˆÔÿX@LP­Ô`äAÇ4ÂúŸ!:¢%z¢)º¢ýï¡´` @–³t¹U쉺lžB™}#¤©K8ö€ÿ,z¥™Š Àî¥eš—yŠÊ¦àyöÀ+þ$a’å´Èd ‡Ôƒ—R€—æìFö a ¸õF6!4ƒª¦Ï‹¤gz«Câ@ €«Åz7ˆ¦Uü€Ìˆ_ü xüRöàŽÖ.®|`v¨Êa$!êuL!س¼f´bày|b ÐgŠïwXm …±5ä¬C¥ê;$Û~´ÀúÀàÚŸ¢Ft ²{¢­U 7Û°` œ8 /ƒÌrÀÖú­Ûâ­¿H h :@vš«ÇÚ¢‰@a·[$„ X ! Š5´Ö`@^¢ áBM³X á Áfq :àmú` È@Š æ,¤jƒþþ&²£=#CïpYýa!‡aœ ¡ôG¿‡  8!4^€³D/‚DÄiÀ¨ Æ`òüÀ´)¶Å8!B¡¤öà´).A4;a¹Mölc¼ ÆGò  ` ú1,ÄCƒ{¬)ÀÜA j¼Æaü¨|D@ÏÀ`‰-2áØ  $˜Æ` L  j„Ú þ(Rp¥_WÁ–d#6ga<çÁÜhs"è—"Á³>⣠á$Áp¥£úï` 3°æR`P¶! ‚ºÎ å1Ä·VDÔº­±6^þÀÁú@e&®¬?’­|€-ÃÕ¦ ˜¬Û×Àhx¯ îÃ>¯rEÂv¼¢  úá¡[}¦K†@ …¨àY4ÂI6‚ *%¼¼¢ 8` &á¹@l†Y»¼ôÃÈ;R„c32¡Æ. *g#ÈY@)ú)š&@   ä¨ La 4ÜTà?Èà°?BôÒ|€¢ ì<<Ë€R áLž[z(é ÖR´ ^:!V[‚!¦RãÎ$¢@È Ù÷ò¿4"Ù¢ÀFf}¥“`ÆräÇz a Ádh¨-È ƪD$~1"a þ¾¾€ma}û î£‚¢ˆ^&öÀ Ôň)2‚4múf};@B„ ü ]îÉ ‘ësTàX DÆà{xÉ!¼Ès>t‚ìer ƒªC™Çœ sªIlasN'ó:–YÜ"’‡š†`ï9Iœ@ï_ gôÞoø†îå(ΠíQ~¢)À·3·iÃ^;ïE""ÁÁÇ¿a\ a!€:Bª ¸+ëé§%¯V=ƒ»32 ! f/:!|`ñÿ[=A*´®ö¢PÎ $õVÁù#úMa)B™Æ. :áböÂ` †b .!þ LÀ*!´)YL6¾j#ïž)6%¯@!î/Ìý¥šfd€»ö€F"’$?k ­:ˆ0¡Â… :|1¢Ä‰+Z¼ˆ±¢X TÉ2¤È‘$Kš<¹Œ©„Z´4,æB-`ö,uÄÖE˜5ÚÓG¢)?mX„ȦÑE_tj¡2Ê`D[Dâ³ðK"™SEØÇO)†Wg‚ÑyðÈÊ“lÛº} ·d4 ±ˆÄ½‹7¯Þ½|÷R$ãë_ky@Yô"î‘/};~ ù­ž±‘+[¾Œ9³æÍœ;{Ž\ŠòÍÐ Iï4MR4dÔŸû–2„µâ?~¾®bă‡jþ†¦!’ˆ¨ÐÂ×Â[?Ž<ùDICÌÄ¡Œ›&"\´EFF"’†D9³ÖñPp(g»û`E’šúbbŠ(m $Ú´ Ôš0hj‰Az iÅt ™Â(î5u^ƒ>˜—-{”¢ÓÚRJ!‚á*ï-QÆ*¥ôƒy7ÙÒ!C(êÔÇ%1t%!B(Rfa| •ц ˆ uáX¢Åa ¡(¢„{LX”N?R( C8a#„"Â*¶ø€ˆL~8ƒ"òÐ ”¦ ‚H… "B 2šÐ‹tp#˜RŠ5!†eú “ Aèé¥{8üöiA¦)Z|± þ¡ŒtÃc"B¥ T%e¦šnš)Á"8P±HS,2kŒÑˆN`<¢PÈpÆAˆ4—,´Çc@AV™¼¸ ¿Ž‘Ô ¹Öjˆ"PpB¥(EP œ±ˆ—,¢Åä ‰„ÁÁ«ìÑŠl² ˆB†$¦L1Æ)à ƒ»2(¸arj‘A` CŒÁI%>àÅl¬‚ÓTE,ÁmH@#Å1Ä*öÅ9§)pÐÇŠ´@$m,ᇟ-,ÑÈ„<ÄW}DC)g´ÁI®›4¼«•L\ñ(àÐH_°ÑáLuÕ­•²þ†ÃMo@_t}ñ†ÑÂ*¯†xåЬ¢Å˜R†¡¥‰R |c8±Ê°m’œñE lÀ`Â*‹ …(ÊX '€1Eˆ°Áˆ¢Œ‚ƒš ,áD Hƒ" lB`LÑÁÓKqÉ® ÂF$ÅYýÐ ÷aŠÚ+™PÓ•dbå&¢…ÏK B¥hÛ(¥\ò'QT¹Js®"ÊÚ&@ (N† õžaËT_)&¬Q "£Hÿ%ÏG²ëþ–ÑÇ/„á„ (¨_PSp‡À^f ‰èãD¶®ù)0E¦°Š#€è { ÃV‘þXË%C e½ÝæW8ƒÆÐ‰D”ÍIn㊌:°6õà}ˆ\ †p0ÆP¡ $Œ@%V¸3$cx ñ€E$"_Asˆ¤6DSS`B2Q‰)(* APH"ñ°ìu"P>x@®VbŠK !½Š!0%§•ÐË}Š›ÂÖ´! T_Ÿ#D+)Ø X¢ »üËl£A`âE$Â@^ì¤'ïÂÀ>0G{_SÂvÇ6´&"<—Wá„%d"4»Ùƒ ¢<éí?€ÁßžR2ŒB ›`–À/iqbÂ)…6dˆÂ`ÌáD)¨°„þ#Œe Ø F¡E*p ôê@ ¾€[X‘P ù!Þ>™‚D‚Aè„|À-Øâ C˜Bò A6ô/ Â* …FÈÄ¢è„XâIÀ}0A%˜…ñ•]D1º±ÀÀ£É[ÃÆr„N@ÁNà- Q$Ï Ëg)"€²•â•Eà Ô ŠÄ£XD Lp„Q´!`Ã…!ød˜Îà„e¶a _ *`°T"ˆ„"…0p‚ ‚”Á"aˆ6d'{ V†"…!C˜b°T¼ mB%Êæƒ%$q…8Ê"Æ€ƒžþ’!›kvÎ ƒQ4‚“ â₺‡2lB ¡’" ± 2<6bá@AD(e(C| 1†ŽÅ‡Š0!:†È` xÁ%À[( c@‹$'d !)ƒ%#1òp¢&dx­LD°H+QávB-¯y+²†!PÁ :ñA$'–B¤ Ÿ«\! ¡’ûÞWB…àA 0Ïð ¶Ðo!Ââ›# ŒHK´€A@}08„ˆ2(X-_àARlňBŒ¥e€)L¡-˜B8~(ÀíKà†P!—pÎyWÑ2d}(Å€1è¸"¦ˆE‚@¼Ò¨þø%É m àKyÊ ÙÙ(8K匘S`D–§’‰5¬!ZyyèuذQ÷Ëln³›ß ç8ËÙÍ´aKŒ(dä9÷…ïÔ³ŸÿìE¬9N"¬qÈ"°‡ ÍÐxMcבˆÚ†Ñ”®t^†²}:Ó¶èCÿŽÀ/SåÁ.ŠŽƒ°ˆ„ä8=8˜„$ÀFlz%¶Ð§-Š,"-Lú&*Vý<¶™¢Ç_¡ ZœùÓÛb<'07IHbš†0…$ RŠH›6ÃÂÞlÁˆkï¢ExîžA8€$Êp $ÛÒô¦7(:Á¨ÆmöYD   Çá þ Ü’Á"$‘¯´` ­äöpª|íº Kè€d‚507ˆÀA$…(¼à/cˆT†£ðu¼ÏJè*Æð¦²ú@•Áo|‰ÄL¹TÀ`»R!-š Ȱ³>ê ŠxÁÍÂd††±  XD'bP‰0Á| 1àÁ±„!$b #åÀgëvFkȼD!TZ†œA4E$>È|¿2[ɳdˆIœ“s7‚BB•‚Mâ q'8ƒFˆÂzG8Cl("(T¢ ‹àÄ6a‹3<`/8˜}Àt ?<ƒ0Ñ3±6ÄÇx@ †M¬á„þðZ…0Îß<ÊK>ÂÃÑŒ¡öå CZ ׃ÚS ±E&F!½´kÿϨ´E"¦Ðªw¥9|¬d FD!*=H#Rt ‘HæAÊÐFÄ ŒE1 ðdV,d@{þap}gÀK° `@€dàDd°yfØE¾3k0Kð¥œÀ0` dòGÀ ø1e¥ [—€ü~P"À¢ÐgP` L¿²_gÀˆ`]$¸œ ƒŒ eÀo) % .Ñ‘@y–„»˜eaS •0ÀK µòPÐ  ‘20aS0 QuŒÁ£ ÒP‹@t aD†àCàq·2 @@Y>•°‹ðY`ÐmPpXјVøÂ‹(-poPUFˆpT_f < Íõ8&Ѐ Pd°ú…ŠÀ £þ&0 ‰&@M> )PÝÓò~¢>0o!T†`(>pQca >à+VhòÚi&UáøééQ'ù™!•pr«ð´á–äžîÁ'EÑyŽÖ™Æñé ñ²« ºà J`JFà °@š¬ð þÐ ¡éÌÀ p€J0 ž`h :€@¥à<åš?úš° 0”ŒÐðNFФAƒM7a‡r#t•@¥vh.ç"•¥¶´yô‹yµã<0VþÎÁÀXMkª¦aQr³ qz(š×lFi!e“AëȧôY ŨÅÁÀX…‡Z cðŨpš§¡‘º ÑÑ *¥ ë¨©N •àeB ªqò‹”‘¦•F$”±•°ª’Z @Ñ!«™¤®Y ¢À!lÁ2QÐKÃa0a CÔjÕ‰ EA¢°A0 ĸ¶Ð[[Ú™0 XxóiÕ p2vC°"àV$Q0KPúK]ä‰@H1.ÝÊ0 ô(PÀL›ÐŠÐ TàаÖø0{0`…t9 ð`þ—«ð ̰ šÐâð˜P p°»:€¬ÐÌÐ O ¬à *À±¿ qPfÖP \P5¥@®|y«­é—4 &‚aj1“´q 0 ˜I{. »N»M+6EÑ 7¶pµØc ­Éˆ¶ 8 ˜c @(G‹¶˜4è~O‹Së•eT_v‹·… ;|¤ã„ò5ƒ §±1ˆ«¸òGBrÛ w‹•›d I8›{ŒºŒH¶¥ŠC@ª;ñQ¹‹@±ë?9ÛšŠ%…&þ9-àp)… Æk³‡³cPýeå!Ý¥b<8Pö'"Tpuç‡Õ?¯Ac_°JñŠAÏ” …¡òšš½Û" ¡ˆ…ݹ† À“@Œ0 ¢0v)À¯9Ö1út- –Ÿq² L€: w° L ²À[€ ðÀ ­€ [P ˰õ€²ð ¾° \  ‚«° Ö` r`5}¬“³~éÅ+´Í¢„"Œ9|",áÃ't.ô" 71PP8"B/IV œ0iÔÄÂAà2Åfw¸E²\AÀ>ÌÅ= _¼ þl0I<ÆH¬ǧ} Æ…+Œèo|`À\\AÇPÀC$Ä0@BC³_ÁPÈ1È|Ê=P€È&C 0C©>c€=ÌCv˜‚²\]xÅÌEÊ ñ‘ P`M! P0”qÊ©l«·Ú PXidbß~ê[ <ÀKèåh‡Pp¨6À@åaF}°#`'…_Ð B‹c߇cP] j–³¶ÐÈ0 ñ,A¶5SP ƒ0EЉ›È± ‡ j±¸p­ íðh ° w [ Â[`Ï ¢yõ°qðþ«à ï ‡ð^„g€€®é—9gÒ “ð}†€#6T Ó»™)Ý C°4¶”ó!6±1à)p‚/Npv™À ¦ £c>Z1zVâQ°’6¸ÛÛ¾é±Â 3~ÐA`”bZÉ#ŠgPN€[›ä†0!cNÐ3¥ f Ã0 ;` ŸY± Ì µà €!Û r€ ÃÀhP ph€š¹°Ö`—ïPð`Ÿd&™£Ñg™ðäšy´~ðA0vÄóí¸YîÃ-ס#x—`m‹þ`IŒˆŒPsµSýZNàZŠ`rœpQp™I8°‰\ºs7+µ"ˆýÊ¢`Ûk@'8–ôjÕúÓ¾ûâcíØ wÀí ¡ ¸°±êðð€Áð À;P¢­Pðphp¹ ðpràÀBŠg§ÙnV&¶)°¹;9¸6$¶Qkó6Bá1"oéÔês‹°‚ Á;ª&áV"Àê1d."Õá :P +ï€ [à/.gg¥¾ ’mäg ~Œ@“ÆQ *.fÀLС0NäEî>ÒF®äK>e.Ö¶0ðá ±›€e¡ÃÛ”þ |þH£í`«Ð ð Ì€ «°oà ­pw:¢¯à úoÐн |ÃàåLèvE,†ª¡H–$V"a.@$s$C O\@³¾  )œé¹`×𠨉陮 œ>ꜞ± %ð¦îЙ^±£Žé>¾ H€ Ëð þ oP¬`ËÀë¿Pš ÖàÚ oð‡ð«à 7  yàæžð ­€ Bn׎íñÞÆ7ÄÔn"ÀëÆAØq" ?"àŒ€£¥ c@EX¡"0( Aq"€& Nm`¦p%â›PÔTð[«Ðqÿ^’¡Uþ"›g~ ï›Ð"@/°"Èø’4¡‰Q¥V•±Ê 0#D)¸J'‘ú¬òÃÈG¼þï “¥Ã×2VqÅVª¿U*”¬bGOÁiÁvä2nïW;¶*)& çQqÇš8OJr!™ÖœBp°‚13ÃO¯OVíØ§y—CF|­Ê¥ä—…šà±b–+ïsèÑ¥O§^Ýzõ# ™Št‰$(ƒ{È(*¸iÔ2¶ÎTz€åª  ‚áÌC ùÐdÉ—B*¡b©N *È”¨²ª «Žp"†18"¡5F±å ³&\%‚H Âá^Ë0.¼îº;0°žÐ~yG‡VV±­XE‰ 4)h‡-0¨}q!pJð„8BãåwbTÂYZþá"qª´¡;ZÑ$a¸xBXöANÔYÅ~<Ée8ud¹£ …°ñxt<ñN<óÔsO>©ó(6–`ĉN.™ÐD",Ä–#*YB[ ˆd“!¹,¨€a N`!¿ƒ2áÀLbÐÂ8d;bD‹ª`ˆ„“B`p¢Œ!‚ ÂăxXBC6a (cÂ3¥ÂS:x`®Uiƒ‘>¥Óá•z”`åp[íV*(…·a©ç• Ú1s•iX©G!J`†¬°â[ps‘#8 ‚G–#ý¹cƒZâÐeÚñà+â-¡qVfbVt@¨8þj!([Cyd’£Ë.E$)D”"haD8iy 'V¡Â„ á ˆ"ða08Qµ”/‚ƒŒr‚(Ȩy•Má‘/Öh™‡±dŽ@68i ¯©h#ˆ!Ù#¡"CΙ“LV9‚“”K)…  BdJÞ¨ 34)e\ÐÇ &˜À&q_JAV°YfÅWÁÆ YKHŽe¸à¢ó\7\“‚Ñø!lê©G‡5ŸÀåçî˜|p4abò;Vgr&†<±ü~xâ‹y.1Å¢=‚ØRlqþ èÏ6HzŠlá ‘"Åú±W¨”³ýàd”þ *$&ã÷,¥–}X¥¡*àDÈŸ`ö©¥}þû÷ÿÄ TU âƒLLËÈ$A¥D …0`-xA fPƒä`=ž#ìÁ}؃‰RÒƒ˜"„GVCüÀ@‡0j,, ãçÙ° ¥èÃôN(C?´ðƒC$âBJ 6D™hÁ b‹Kô­ˆS,ž!à„1¼à P0E)Ø [”a N\…$d€ˆEH±!¦CÜ‚ƒE q{xA"8@ÁB! kèá%A†´˜b-œ –-L‰Rlb_XÄ&¨øÈ)–"—ˆ’øBt€œAUÎð4…ØBþÌH.Q…€a i$C´` >h„Z(!-W±-Àª  AryK-ØÂ%”à\pIË`*ä˜)CaX2 Cha¨…DDÂE AQdâ ¥àDò¶ $â2( /sIKn‰¶ e„XDaeÄ| Ç»Á’DR°ˆôˆ"…ˆ'Äò‚%pà$‰ƒ ÊàƒŸµR£üãÁ(MÀ†BLA’˜B&¾ Š5Hb,¢˜‚)Î0…/\B&@D)xAgÖˆ0HâTðà bÐ*&0$L@… *eðh&ö`Šˆb¦0þÜ!UG©£"õEéÀ ŠˆâW¦…(¼Sдˆ{.¡…5,‚ÅèW0¸'’e F…LR‹ˆ#¢0È@sƒB"ÎÀˆEt` M!Päs‰€‚-Z ƒÍ¦€ ƒ Ò§…­$Q_ mS` '‘PD'š IIж0„.²ˆEDb0Ø*‘D±‘!ê´mikͯ(D}°†B%Aˆ„.Ñ,V%ð   ‰š¢ Ú-CØ`Üæ·d)À"ÖPHb•àD| ‰D°£ƒ-ư†M˜`(d(þ"щ)l m8(FÑN EâgðÃDÁà)âB#QPˆd0@"‚€/d¢-ˆÁÀWB Á  ÃL(LÁT5D‚Çû€FLÁ¢HD:ƒp6kùôƒˆhDQŠó~¡ÀA`` 3S!<Á&JQˆÅ~á"Е!ÂÀ†H4"A ÃÚpIt<™ÏyIÄ@<ØD@Ñ1—AÎ0”(b`ˆŸ• Y` ¼ì >hCF‘ˆø@U  CÁˆJ$"˜>ˆÂäVŸ,áëû´ °…è; e0Ä( ? ·»@„þ(:Á†6´Á àÁ$šD±S¿ÛYvÊ`ŠJŒ¤/؃˜ïÖËFT¢q+'†pøèÄf C#tŒaØ: Ò‚|¡"0Å3û0•ª|Ä(D^à„ ¥Àš¿´ -t­R3nC~P¥É(TV¦øW;Xª,Ï%YB~–ƒu.a>UÄ{J%ÂND`T€‚$‚ ˆID"‰0„!:¾u>€ocaö|*€%Ú $CÐ#”Œ¸(B´0‰(Da `8o"–pñ5¡­–Š­µ€ìòµ[纆RøED _èÀZ°„(" ¦ÈDþ á‡5ÈD†ð€{'¤ •P„ɹ}yFà„H°…>€X8‚KˆC'ò 36`„[áNàŠ„ˆ€60…uK„Qj„’hƒJ80脼ƒ?›60åáE›¢=Àƒ1脨Iˆ‚à€V‘!`± ‚%˜? ƒJˆE6(ÀNÈ·NX„=J„0HR:ˆVY„!@¤hƒp¯âS:[þð%è€EЂ#˜Åäúµ…à@™¹ÀLš‡è„ ë„LP$¥#«„!xÆHP„JØ>2h—p?ˆ‚Dh¬1·`¥3‚VÄFð>-ÌÈñ¼1?À* ¨ª”„´0I 8ØKªªH C8Š/zŒ20ø¢K`%0Å¢‚šA„„ FI0d„Lˆ6ˆ"[82r‚’ƒB8õsI2аž:›#ˆ5z¤>(„³™¡ƒØƒB¸&ŒÃÈSa?0Kˆè·kê·³9ŠS!ç™ Ä[É„Ùsˆ¸–¸ ºÜ!«4@\Ìþ‰ÀBŒ`… ²…FNx.ëøLÆìLƒ„H  ÏÍl&z?3 Ò‚§¾„?$MÙœMÚÄ“B0N…gªMÞô›§¤‚/«Š,?Ø€•7ÃÀÎ*ƒ2H‹RÐ:3ˆâLBü*C`Î×ì-0ÎÊ%Çtˆ/à5<ˆíèÍ‹8 (˜H=)X耭b)ËÃʼ$ó„Ž)¨€X1j‚0¨Né„@„Dà>è²Eà„„p‚Kè¼[•6X¯*KPXƒ%ÀȆ°…E±ˆDˆP¦TÎTˆ Ú!E8ƒ2`¯¥8Çüœþ- ¨[Oè€Õˆè!Ÿ‘ž”(SÉU¨ž[º$-ˆKˆ€´ÄÂB ‚J€‚Rëñ`Ç[Ÿ²…»ôÒ$m,ìRéá¡FYžRÔZK?À¥‚¾×¼©uJäTòˆÔµ¬!ËÊÃQ QÝ¢(‹Rˆ ©! B(±€6@%„pT0€TIŠ#°&{:R0ðPÚ‹8c„#N`„N°µUxU)‘3\…2ˆF8ƒlÒ%Ê[=­Ñ„þ«ÐQµçà9¼‹€/ ƒ$“CP½ À(à€> 2(uƒíËŠäð(`Lˆ=à«U0„U2(0h„hPD€¢÷ªƒO˼ƒFðƒ-Šºé½ƒ‚OƒOù4•j®KšåqE°Õ,,„°FSëN)…[$ƒó‚ˆ™ePhƒYÄÃKMCíùh ‚ÅZƒDP„@(X‚ˆ€;ˆF:ÝŠ…‚`„¨„:P„DH.0(Êü²*… 2„%2?®-‹ƒcÖUø‰‚˜€28ªSaÛפ±»<+4˜þ¦í©!˜„Ö5€(ˆ6àZCÀkƒà„¸€‚6?J*@b[aZQƒ!0”È,(H˜œ•ƒ<« ÂÈݲP`¼nõÖ–WM„ìÌ[QPƒ¸(…1Ш%-(›»É„2pŠÊ1èp'ƒOiÀ„°‚5…Qø·èA*èAœ²…R¨bƒ¨„/ƒ1Å1pÙ0˜L¸©J(Ü’Á[ë9å]…ˆż¥¼ÈUXƒJ€Â1(à2ˤXI€@÷’£à¾K¦§4ÚUÂ(„LpÄEJÙ£ ºþÊûÈS|4S`C0à Ë µG|€L9œ*0ÀRhQ·±ØaA©ŠQ-¼Å¸H€ZëQ„ ± 9['µU ´ 㺸Á½3 Ú„23NåpSþ­"ƒ0 À#ž– hÚ(0Í%`Í1' áË¡PjÆrX$àMˆcÞ–¸­Ð$ `¼ •xQ@/.SŸÅ y£‚þ‚'Fò•ÌU(”Xî¤P)[X„ÃJ„;î»)ˆ„®ðÙ¡ëƒ^¶¦{2Í ô½¼±…(…DpR\úÎò3r“ÖE0Q ƒ2ªþ2àE8$XßJˆ,‡Bˆ>ˆ„ 0Gd fÞ!Ð (胶+DX{>ä…#€Ä=à€<› ƒKxÝ18ƒ½­\*Ø6Xh7Ch)Ñÿ¿ªÃ–º%Uƒ0*ÅLÁ…š ÈN²fâ$ZE%I°ç”*ƒ0·Ýƒ €À0Ø?ø&EÈX„5P­…f2J!ÔJ¹è«Uð…BèZƒ0Yˆ¨!? -ä^((ތȎÍÛÆÏk‹ñ°ÎHÀ¢Õ뀪–Ú"Pò=§ NšJx™=H0'xØù…‚eÑ,ÏU8ƒD¨Ïþ±…KHlA¼Y8”¨[ƒÔHó‰„xY-à„çmÝÐ,ý(Ø„8#€é¿p£-Hˆ¥Hhªà€/ 3D0…E'øiñ§D+ü£‚ R„>¨M¸³?ý…^h0ÀLˆ¶ˆ:IXÂòïA¦3…dòƒÜV…èÐ?ƒH€Dà·2Xƒ…‚>ø‚QÈ„V ªà–;Aê( `{vÈ#€èiŸFˆ# Bj‰n'€Ch :ƒ½σ°…(( I¨å¡j„ 4qP‚˜®Z…%€‚i¸JhšB0 ]N€þÉ¥ a„‚FHDZ‘ü,¯H8|Ý%Àf˜hƒ“@ƒ‚/î(ˆ?°£Q„ˆ\°»ƒ¨€J3„è„д•DH„µC§˜^Ì=àQAµE0°î±_÷ð0å…‚ÚŽ€éYÐD¬¹ÙHà€)Xƒ²ý[ r– [„ª]j±Ô#I ÛFx,ý[ƒ/…:o$‡”‘gQôDh®sNHWˆ‚l‰F€ˆ5o=Í÷º"'X8Tñx,J\…KˆàC"‹ VFƒ­Äç}Y¸£†È„²¥¤¨8ƒÐ^a=ƒ‹C„(à+!’2°ž=þh¢^Ì€Q¨Xƒl߈\ +8Ú $ë*9 ÙM-Tû‚ #˜>H`¯£š/@-Ø÷~ßÍ#Ø„íx3À³jƒL„0TDØ\©•}ÇB°®\ÚwD@„Bøv`%-ð2ÞÔ¡ñù¥ˆ%$l„°T† 'h¾žÚ!‚¶jƒt¦Sh!\‚¡Rxy‡Èùp¯ §y“Í[„ÝÄð…hàöícƒrèxú Bè„hW§¼ l6'Pr£ïL0‚ €eÆDË®_‡\2ê7Òвo{·ûZõ\¨ç`?èy¸‡û>(ϪÀ´àñþÛRˆáÂÇû‡ðƒ˜uê€>Î{HòAõ”øäˆs|ýÚhCX`‰@>§7ˆfò\' h S¾1¨„š4ˆr2Ç!èü‰0cTŠBHn‹h÷nuž%Ämšj‰ÀjËï?ÐEh„ßÝ4,çào%[…$nÓM€•ŠŠ£Ô4–6ƒ=`®ñô}"eÌ„‡õƒI,óOP„>h[ˆ€J°…€0K´q•+KF#m¢qøöÚ„æÜ„íC€àIK‹2~LÄ€Qèˆ_DÀ(åC#S«ú0áã"•’•ZµjOŠ)¶Dž ²ÊT™MelˆèH)F›þ ¥àaªO«J9QfŸ31RøÐb‘ȦNŸB*u*ÕªV¯bͪu+×§`˜DÆbW«…*µ(«v-Û¶nßÂmëÊDebœóÂÔš£d¼±hÉgÎTšÒ©ŒHÈH1¸ƒ D{¦DÊTÊÖ"(} t8rDR”3!WÁhª“™¦€Y¥(š0 uš¢hÊ c 1ùÔ€ GV±é&‡/dG‘Á¨ÒšAü¤“2QÂDï³Ê§DŒDúI´zM%6QR˜h³D†‰R—ÚĈT‰Qçí_ZT"J/´É$Ùí‘I/ì—ƒBáZ>$þkágœD$¡‡‚¢‡Ûá’K4ÂÆ"q HSTtò…8 ¡ˆ$‹DAÆ(’ˆ2JˆT"‚S…," Œ’H'¡9ÑHp!@&Q91J$C¬/„QŠœ-bH'=uÙð°J mˆ·Jk’h±‰ PÁI'¢@à(/¬bHNˆ„Ã(ÂýÁ"5Ã% h±J‰8E{”ÁFŸ-Œe’€¦…$møÑPDA¨ˆ«²ÚjU0t@l4(¡-kD‘I­®òÚ«¯–ÂCAøPŠ—ÈÐI}²Éðb±ùÐI&˜ÐKˆbÂ…ø0MõÑþBSh¡EŠÈ°ÓlLâƒ)Ð 1PÆ…$2Æ%]öñB²kìAÅ(‹°qZS{À`J mŒ±(ÄéD)Œ´HÔ¾pœPKq ""@ÁHƒ`Dj¢DÒF›œDQ)"IRÜÕV… Sdb 1DºQˆRê¯G# #±>ЂÁžEEÒSS]5Uýv° A|1† êÉ`\R‰!¶˜"C$e‚£dòP!`T„$N¤ …ª-d2§)€qFGP1Ik0õ£ˆÂ„1Å%“H"B#_p€-}t1T}È€ƒQDPÊ&”ƒÂP ¢—þbB'TÅÃk8ÁÃjˆ Jl{à‰Ik\Ò'lTÉÆ*S°) L("pò#ŽWbû&¶0©gnÈÓVƒ~S’ÄÀŽßCèG¢ˆß¾û¼‚T#c4²Ñ*>1[ÁŠJA/¼S8±*Ð}0Ä®D@P”Âγ Np"ªrJ&‚àÁÀ /gˆ€ |()¥Ã¢²‡Ð±'X˜ ¡MëŠæ2@¡‚(ÃŒ¶ [P$ÂÉ.!ž#4B 0EJ‚0‹4)ˆŒ°Åèr [ìa‚&8B võ¾3­ìÀQþBô…tB3hœ#´™§íÁŒN‰ šF’¡#¢O$¶èãL¡Ç¬ìái`\Å8Á¸©Ò`¥8äÁLqš;6“O…ÔœRHORR$…ÜÚ2Ê:¢òC¶Ø†²)èc*kiË[–Å …$~Õ‡Sâ2˜â+Å–€lP˜Ê\&3›éÌg¢R °P"Œˆ40¤ CˆHA ât¿Äi¥Ü|åZ~yD-ó*{À‰7¡É*[œbZaHC ²C4ä8WYåy²ÒB¥Aø£; ZÇ#(ÂBc°&ÒN´ÁM˜`ò,…("À•U*blÙÃll‘‰H|k-gèÀ þaÐQÒœhÓ* q† =åi­éDÁ³œ¡"yÁ(*‘LªÜjU1c >¤K$›HKTyÒ§¶êt ¢#øÁ±éˆÒU?ÀG P†#‚ä„IW›z0-1hŠàjª¶®B `€©SÇDDÂ2`Á` -lN$¢q*AP¨²Å”nÆS0¢™jsI|Z0hµ" ²UDa ã9^`ôËTxÁ R Š|ö{ZˆDjU CLá N€OlDp hVž_¸Nc 6ôV$…ˆB±¾p mᢅ%Ëþ€!H"80Aܪe½A6½«úBdU:W™"£ˆÂ(Èp ˜‚8}8¢ÐläK8ë\:á¢Ud¢ …T|‰E4¢+’«H.‘EŒéY„ šu†64§P¹Ä|)ä„Dd®<ˆA:Q ( u‘€-›ò&¾ª·+}EÎpPT)H„þÓ ãÁàZA(a$FñƺL!’°Hñ…^š"dèD0„N!-xN#L Ç>ðö4Œ("Ðtb—xÁoÞ¼,7ÂN`,ê'’RLÁ¢)Ž!8P9âh¡ ˆ„²*EøàÍ;žŽsliþ·¤ ²:CWe‚!ÀàmúPˆRó7ˆp#Íú-´è~1pZhÓÔØD‹b#–Û*qDt‚ŒÅ*ÆP‰2dBŸNy':€+D8„ pBÜœäIòt ÝKse…»H"T²Š2XD ˜Ò¹;‘¸Â‰à7"1D È` %‘af)x@È"á"¯â ¶(CÀé”>D!§ Âjú*ÔhœÂ6D@{xÁ@±«BDb#BHœCÀhAX„(ÇF€,>@ÊÀmóµÜB/èôª¢Ì’NZ `íX–ˆEaÀÎß*R°„mþ?åÞ7åà\Kñ‚Jp`œNðn„!+zÊ%Z ‰ A2ù"d€@!è0ÈÙ("<¿9Uš¤§aNÙ­ñ΃ĩ» #Ñ“&‚Æ+JÁ(ú}ÓDp¢)wù©Hv«päé’Øà‡ð—©â?a Ð.*fÆ"¥ˆ@á#0Šv¢Ø¡PÐB! Ì-¨ÿ„.ƒ!ü …)ŒB ˆè@#ÑQ âñ—x€Ö° '4 TðFڴƈ@oþ¤@€ðÀdÂŒX A;_UØ,B ´@ ¬A "ÀHý™‚ ˆi­Â%<Ý*à@è4È ÁôS|)´¬YÉ„„<@#D€I9´Aiè…ý5‚$h øÄU$ < IDÀ|Á@ˆÄÂH‘ l#L€BȼÀ\˜‚-\ÉIàK&TÚÂa&eÂÐ9UÏ-A"DÁ&˜8ƺ©ÍéÝ (ÂŒ­A’%B" hà"@ThA$‡¥¨ PË Ÿ•A ,ÂZ@"áÁ)¦€"xGAŒAˆ@þ YàDGdD€UÅaTÈ_M˜ÀPA8šEð(œÄZD!ÀT!€B Ód‚(¼ìR‰Š( £â´À3¶@–‘A|ß0>#øhÖY ÞS‰„u­A&p (œÇ±˜Å”°›©íb@z+IÔŠH)8  Ib9ÅaaE)øœUËÓhA†Ø‚dSlΚ‚„R&Œz $\HÐt€ý R!DÀÞU…,j•äLJ…¤dÒä±À¡ü=ÖL–…D8Á˜ÔÒ$•…)¥Áù$šLÀØ%eTJåTRå¯hAB“²)þS °c\ ̤ӟñTn"ü"ÅhÁ6†Ó4H]…¥0íÁ°TUÒ%Μ…ŒE3û\Åp]ņuÆ1‚V>ÅßÀ£V˜B Ð^}ÌŸ.>E ŒÝt'ôí­Æ3íÁiñ™ìåÑH4HgŠR­8Aó˜RH$Ògþ™oufd]ºæÔDZXp‚cŠÏD #8F8D¤€ˆ(´I!PÄ0#h>1¹\!” Oð@)jÞŒ%ÀÜ%BFò 8p¶¡Ø¦ZM>‰è‘)Ú& ‚ØDÏœDBEè& ìD0c)p€m4†<Äs‚n: þÄF!ð@DÌ\ŠO#ežH€ÔB ±'d‚(‚ñðŨb ŒÁÁ”p‚"˜@Á cè‹-¤"œ"Œ'œÖkÚh«ÀÀÈæF†S"„$S'DÙŒœ‹0Âr˜‡± Ü'ì(tÂ,ÂôÁ"ÐO@§œôT”BÛ-A%È 8G Áƒ•AÊ*Z%DBøÀ&´'ô`ñ@…DžÄèõÙGÌ×”A‡]B ‚šÆ€Û­´AÝE!Dáw1BO‚â¥@D@$4ÂI(B´¼@°šÄ[hMõÁ&ÄìA#ÌLþG”(Ô üeÂ&hó¨_$$B$,Íø@ ¼@œ\”¾@$ë*kˆˆ@ù,A᥉€G´Á‰À$1lœ‰Þ˜‹$ä £°œé€ÂÊS”Á›ÕYHÂi|ÁëøÁyôA,JdŸ€D€ |A%ôTLßi9è“¥`Ê€*€Qµ-ÔM$Ø4ÂA$¸ÇuxÁQ–Iø”ÂŒÊĕžG,¡À„(Ì ËÊÉ`Ýj,ÍFø@ô' (4àÀPAØ)B¨¬ E©Œ£ðè²*m¸mvÜ[†%LiXk'þÄ) ºr€)\ݤ£PÊ*€BqtŒW0çs ÝXm¼n[½Þ+ ¨ÁÒ›"$B6Åô)[Áì̈A B),Bƒ®BýÍaЈ(\‹TQÁ…š€ ÄÀvùØEÐæÑØ8[¤ôlHå4…(xÌL=J‚+ÜJ! ñìž ðàÀ$\ h ´Á+õ(¼™K.íïrÓ¬-•¹†#|£”Š-øÀ,aA,تˆ@%,ÂIô#H‚!ÌÎØÎSdhÁÛhd’Á&(¤tˆ‡)da"À&œÚ‡Ýz@ þDÊlÂÿŠ–ÒÄ0`üïŒAð€õò¬èaL#ŒA˜Iã²'LA €ÂCξRG\fáÆÀÎ:à€‹Á& ÁD‚(@ä(@øÀ 'TÂ&xì&‚l'p€ |A#ô` ´NÑowEø ’ „´AWÚåK t–pB#4Bô¸IKž›"4Âèd!œ"¬©âSÀq€<á@Ÿ9Á|q #‹B&4B&€B Š“p€¥@s‚Ô q#ÁL#ËÕP¼Œ¦"ðÀ¬wÂ8‡"\‚‰Âh¥@éÀ¬ÁþqØ•Bv½— Á@帋KøÀ˜(Œ$ ›H8$Ч-hÉÅ`•àElcP–J¢9q3kÅ%DÁEòIÚ-‘Ú%ô¤U,’'’-R™‘%m…-dÔNÅ ’Te:‹³ØØY§3Ó3›oŒ…T‚JâÒhõS*•œ0fsÒ¬g=#´Ò’…04fB;3@ôD»L1C‚Ýò›ƒ‚Ùñ3$e‚‚bÅLÁ@+V M0â ˆC.PôLW-ä3C[HÁ@–ÕµÐUlBGWE!XG#4KÄÍTðEñf…)Àº\Å\ÂqøþA$p@t0Yâ´‚Hh/Ü€Hä‚hÂ*˜6ä‚Y¯`ˆ6ˆµ”µ˜AX›Á,MãuW 0N[H|¬0•ÁW½¼Àl ÂÍ| pím!W±xW%àgeŒ‹DLÂØ@ Ä'h˜Æ&œAeߌÇvÙR LätZ)A³Ê%LÁíÁ&´¶ÉÁßà€-0¥8A˜Za¿€°d#ì….Mò\Ä `öÑȨÀ;ˆ ƒ¬Â4‚Â2ü‚5ð&ðƒˆÃ>ÈÂ+LÃ/`Â+ˆÃ0¤CðÈB-ì€ (Dçõ~þW…óõD$T.eϰ„Á3ŽÂ4‘Â×V iD#DQB‹‰‚$A%˜O°t5™íÉ€(ÌÍ<€–Õ\k ôSþG%È• ¼6'°Ü* 4<#,ÌkL"<ˆ‚‰&Bð@˜(vÚ^%TBtqbL/Ôƒ,üÂVÿ„ àÂ*È,`€Â+èÂ>èB-(8ÀB0(Á;¸5&ÄÁð,°?€C´‚/€C;T€:ð÷ŸGÅ 4%CWïF+ÜöIYë% Œ¶X„¥ÍzVßÈäʉ„´aÐÏS ‚ëmïôo¼òáŠÄ×þÛŠ¾ÂXe7'ÈvAÜD’L¡¤Æ+5ær€p·iã"DÀ%ÈîH®A°>t¯pÁ!È4<´ÃX/C0ƒ,äÁ+ÀC0Ü,lÁ*,ÃÔCS`¬‚/ä‚'(x‚/ˆÈ‚8È Ë{^‚>‹Mà‚ ìÃhÂ!°&À?lÀ`»¯B¼‚H¬7ˆ½¼«±NœXy¾AP°A›A °šÔ°5ˆY^Â&ˆãx\5–B!\‚¢þ`u!¼ ÙOá¿À`¨l`¬rÂ!lx0bÈ&Ò‹HPl­²hÑÏÀ-|lZ# (-l"œ)dÑ#›BT$Ù*$bŒ5l$!dd¨C}@EÅcU&.5ziR¥K/‚S±Ì¨¦eLrUõU*W©U¹–ÉñUµê*MÓÀbzmZµkÙ.ícÈOÑRˆŽ,õaÈÔª˜}Úöõûp`Áiµ6|øh & #vœÔ™Jk*ej¬öràÆZ8z<øŽ:_ƒßYËÃësjÕgµÉTÔ‡×Jq,I±JK¢2«y÷öý8â#0NG쇇$'+ÝS·ytÞ`Ê|Ñþ"}p)>:½Ðr½OND«L±å‡¯Å#_”ÑâG\-GlÉ‹L~`°÷÷ÿÀÀèöh$ŒI–è@2LE'Dö(°(CÆàÀN:ˆdDa”3V¡"Œ(†Å<(: ½YB„UÖ#‘N*Ùƒ!…ŒM¢8ã: …R@Èá6"•\’I¿ú˜€(¥œäJ‚,P :„¯N8#ž‹bŠUüà '@„‘%œ(¤=[|ˆ!FFÂÀA’%úH„“2Ú¸ ‘ H²ÉB EÌ–/:ˆàÐFmr¤œ2&¤ð"ñl•îVá$€ (³öþLàI:ÑâTFV9b” ŒXåŒJ8‰¤.S^è„K–Ø¥Àâ…b•]»RÎX‚ÒI,²F £NDù¢Q\Šb>À@„qáaIÎ 7ÑQ¨èƒ‡0|á[pˆ„“J)#‘ âbàbý•¿€ >ر=ZƒÒ (ã> ý`ÉE¢H xP$’‚˜b2â STä$äLÆ`0‚*‘$ˆJp0¡“E:`‰æÞ™ÉR@ö–ç …ÆŒ †£]&%ÏË,©RÒcªJ"pBÛ¡­ŒJ¨¸šk¶!£¨F8¸ˆ‡D|`’‡Xä Q:‘rþ6þ½zPã’+»Þ»#*™‚i¾·hŒ1Šºû¢M†oÉRDE‹ ™¢I˜¤ƒ3Ž|ç=tôߎÀ!äÐM7¸”/„Å-“J¤ŒÁ„â†Ö”Ï›c06a®*ô5ÈÕྡæVŠŠä+ÞR°Œã÷álà´Cd^Ιr"‚KŽ?|ÔMÁa£— †Õö¡ƒïƒâŒ2¬´¨™ð…Fú2…½Õºd>ØÔY6!ŠI0DQ†0t &ÈK±‰¾b7m1E"@A…H¨/|! _!ƒDic0„íTˆKlÄÁË* ÁFþøÀ)p‚ʨ2`ðl†XHE a6AÇ6ìltèFô¡IdŽ‚/|Á uÙÈ̔BaÀƒE(â< ‚WÁECpQ [dÄ´Ò¼›ôamJ1F8¡{HA‹XÜaŽ8h„Á8Øp‘ÐÙ´b C0¢‡A±áxbˆ€ÐŠøÂ ^°‡0´ §Ô(Æ“D#2Â{` WÅMjÁm>¨‹%#)È9ÂÀy7A$ LÁ ¤€Z¸„EØÌ£à‚ |ÛŒ$-@¦ÈD$Ø Š´¡ î²E"LÀQ8¡£À(‚°Dþ!1ÃÆ0ìa aàE¸„Q,BvfŠÄ¢ðQ " —Àx0ŠJÄ A(Å:°†Nl‚&Ш÷La‹Rh¡-ˆ:¡p¢‰°Q¥6t³nÃÁ"72Eá‹:Á‰NdÂ&XB'¢P TŠ1xAøR£”¢¸‚€X2˜B €”E¬! ¥ÈD'.LjÔgˆKö`мLbkC€‚Èð€¬XB%†p‰\¹ !í„ Ö …a(Åш60b £ˆ‰ E”¡g°El±‡8zðsæéFc$ Cþƒ‹¢O£„9*@§?è„B]`AE4peØÄìÉôá mÀA`ð…NDNMuyÁ ñ‚D”‚ •ðA"Öp,‚3 ¡‚?Db›g˜"FÁ‰{Éà ’P/Dë‡Au €J-ò+8AUAÀAÁDLˆ ˆ€Ác= .Ÿ as• ƒ½ 20‚¾J1Ä$<ƒˆ­­b’Z9Â&$ Ub\…7_Ð0 B½’ ÞQ¹H¨T •`ƒEZЉJbÈ«Ù*‘,_Ùâm0E)RY†R A±Qˆï&¦ C$‚…¥È”Gk:MÀÃ,by,ð$€cþ¹Ãž€„\`C:@Â4 \h`QœÂÛ.× öçAH„LƒDœá A(:@wA¨›pi•5ä¢jÛìC&±Š¬q Á+ MQ”a æAE°a NxÀ"Ö0ˆÖÞ+Ê:À†Ra šïE¶y'¨³Õ™Ás/ò…!ìæ»—ˆtêò7‹”âÁ…•ˆI¤(“ÔË:0…a8PD"a Dˆ¢Âe¬E¡¹£¤k`”:p×U€¢}«@D'¨»†|¡ ɺH'”‚Q|a‘PÄ*ÀõìŒB3>ÊÊÐ߀VyoïþxE:t`‘'È"ü`+¶°'x¢ž`.Z¡V¨`ž@Â!Ò•€ù!mÒ`/nœxŒ ´‡@QÀ ×å a'œá…Ø0Rà‡\ÁQ€^Ñ‚§={ 2Ð>6 F(‚¸Q H¢…H, BžD±¢ì)lˆØÁ@†H€Á¸ìÀ6ûvñ£ÈÄ6½¬NhD"œ ˆ1‚¡ kø—–Pn¦øÁaNH, ÂXD¿$'PUSøwçE÷'Å“8Ã%:ƒ>8aS8‚Õ+[˜Âb†(cqlC´ºHþ"`÷…Q°Öþ²ˆFц¯[d¢ˆ@ˆñ«a@ð( 6††Uàžø…–±ŒzXVX… Ú‘ Ä!4Á€J `LÀrà‚À´‡7l!£¦€î¨ ú à‡ 2:A¡R`a "g ¾&Î@ЧÁ ` Ç.Foü ZÐpí È R€ Ê€hˆ ` fC)` "` È`ZЩàkÖàl !ˆ°”@a   îd€ áIÆÀ_ú`ADj)ì)¾ d` fŒP>$Vð L p O,o `+)rþ°¦àl6ákAò‡ "áü` d ”-¨ˆ0ö píöÀá ƒŠ Èp,B”í(øçû̯kàÁ0,x!V¡†Á¬à¦dXAVÁø¡˜[Ád^ñ`ŠgNF¡3X¨Y˜C ¢  A+^ ]DK)Î`$a À&®üŠ¢£Ð£0c-âøcÈžm¢Ö@ñÔ±/âk©ãÉ#bJ¡Û )ÀÏЛI€ rAv€Åa_Áààà`ÿ^á 0áÐj!µ‚ÆÊ€0 æ £ƒvþ2á>x€ Ò ^ 2¡`xÆ2!H/tŽÀ&#§ É–á tŒ‘”ÔA¬@ ’ÞÀ¬!Äî`–Á…f."`¤$ D"`N²'ÃR,—DÄ¡– J‹ â@¸,wf.DAçêLnÞrpª`ŽAh`r ‚@àºÁ(, >À(ˆ@(ÀŠA:j`~`ˆ`ˆa)ˆA’`P`50óF`ØB,á@ª`,AÇ¢)-î@)í2hÀ`¬àf ÜÇ8ôà(Àj /ˆÁˆ`0X€´ÁBóf)Ô€ŽŒ Œ‚þæ á/ÙâÜA # `j H/•Âv¡Vãv! ØB ÐaŠap35ïótÆ'è¨9(ÀŠ¡F@Ü€`æ! ÜAHÀPÀ @Á,",¡, @`@€( h€ €H 6S~@ T@ P`j,¢äA,`;Wšsª ðŒâ @D“Tæ¡*SV`ôa1 ÀH`¤@´B‹4G ³J«€ÁH@F`ô!СlN«”ÞþÔ,¤ ’@BS:Ô|”,  Ô$”,á>Àâ”7B ´á,æÁl Q ”h J-Áª@@€r P?…† °­ ÖÀ VȰí>ûÁh˜Ñø~C , A º!P ŠfÂá(`Ž!ª`®•°@UÀ`Ž’’ì!V`HÁ ŽaF@Ó(äa,!X†Tvaìp3H-"z!úAX4@ŽÁV¡JAô ÐÁæ!4`Èáø€V¡zAþAVÀH–ø@¶ÁþaB`NY`Á`b”ìa&`°þ¡`æHôaÈ!Þsb)ö(~æ€_W @°çÔ`c*¶ª æv¡°äH`ÈÂørbÙöUFXa  Ò%((ÚÂŒp-`RJÈhJÒÈx£þ XÀ"F€ŽA€¶A ,Âz¡Ô º!V¡fAfÁP“ˆ€¶!,ba¬sAˆ H Œáôau‚s‹"y‰av!þÐ ,³`W¶a~€X€¢A2‹bðÁVÀB– `ä]A :ç¡’”¶3a’Á&À&à9uÔ—ऀnÖÈáNI&@Jab \U)ð0IሠŠH`.`c‹! æ`j`{¹÷{/‚°ÀŒ´Aƒ“ 4 €> !py¦Ø ºç5|àÖEÊ@¼j•.¡pà®&_À3lA.á…`€bv ØàRà‡_h#ÀÀŠ¡ŠÙ€ ª'ÎEm.'pàJ6!X£ r`ŒþAsÕzá/Q`,sl ÆÓì¡. ªÀøÀ>W!Ù"4€j`tì1s`ÂP`9)ˆÀú!]“ºA,A ’ÈF—u{þ[Š•(”4I€PÀˆÀÈ!@7µ¡-JaÜ!Ü!ä!Ìùàn»AÎÉÓPà,a "TËå!`h©­¼Ê™ÉQ h ´UÁLi@4 Äܽ—åÀª%V¡„&„FJ%rô›Æ::^Ø€%6!³Š‚÷´ÂVjµô'‚Ø"v$*A2hg~˜W£¥J15L½(ÈsÈ1ÐÝ"Ô=)ªÀUÉÝÝå¢(®ò(B>R’‘¢a•&K—gÓF„à(‰À‡ò4S³²®Ý»xóêÝË·¯ß¿€ L¸°á¿~œ”¡r)È¢H‹ ® þ9mŽ>¤!‘X@°¥ Ç óÔHæ(–á4„ûÁº‡9PX˜$Yè E·])EЇn6r࣠<‰š§-¬JBN9 ÚB@g*ÂTG iôC ¹ 4°° Á d«(øF\²X³åÍ“‚®È—£6Úh` D㈠\€¾i Pz÷…c âÅÜ.Èh°B ‚œf oøD󤘨Çf€p€l!J'’Úä`C7Ó C:ÒÛuUŒpš6«B9ü`Ï,$°?T (hÐM8Éüàø1P…<€² €„cš;«Ð€þ‚H±»+ì4Ùxæ©çž|öé'a¥ì±‡-¥ì‰L/|ì‚EîÍ$0ÀÇîLÀ ½3‚;ªÍâŽÑÈSŒ sÀW 9 <Ä€I¬ò=ŽØ€E26üCŠ;Ç ÀÇ®| °J¡ ± À³,!1ȲJ8süK4ÚËsh³ :äØŽ<(¸‹ô"È,ö)(üˆ »@`Ã,¤„h"KuU![ „Cƒ pÀ6³,`Ì1ŒJ¡Á.«ü`ÌÈ@ƒ=$±0ÌÇa‰zÄGJP¼}¼JvÑ€  Ú|Á–¼RÑB…ò81:Žþé6î°Ð‹$$³Ê»X‚öìâN!0@ƒ HnÝ :½tÃ:ô;!@»À, 8rW7€èQJ4³h@ÛŸl·íöÛpÇ-w`ÝãHÝIÌΤȳÊÌUSJúhp€jòÔÀjâõËB¶áÆê* ,`Ï1ú̲ŠÆþ  ³ ’HÊÐ >I|p ø¬bI/èx¦>Ähc<³ÌE?Š·@?«8’S1½È#€ Ä`Îsh Oªá ã þá9«ÄâÈ0`«|Œ€5D s,”mÔ“B | :jÄH ¢Ãq|%žØ¿¤þÐÒhР @èlÐ1‘A@XpGc–H ç7 þLWÀ9¶‘Ši` †¿àtc”MÛÐ>Ž´yä "‚](€<¤V|Ðá܆HÄ"ñˆH\H7¬ƒ‚ Ð ±8¤þ¦‡[ö@ÇS££#|ðYP¥*ÝPnˆ h3 ðfpL@1V‚å4Gø  ” €€RЇl7ÀqZÆ@ ÐࣳƒJ(°d„À,ˆmÂaŒ¾ãÍ÷’ð=" Ã, ,¨Os ™ ž% öƒþ º±?ÌcA G/ÆÄ‚DcAÑâè7‰„G9Øbó¢¡KH¡ŘÅ6¤ •Ÿ5E½>¢A{D£Œ†°àŽY8¢ÈØÅòˆ©† àxD#Bt¨-‰ ¨@Jмü¨ÆpÇ6.ÀÙíÂ5XÅ °pb* 0Þ2 ·>Øö;l0rtgz°¤ö.3‡]tƒ.jˆi €õ^¢à"Ü v!8"ÈÐ –wÎÂ@=ø0 ŽÚ@!Ð@.›c #R8Ô‘Â1EY zù\@zaDåSÉÀ Œ1‚0. úèþºZͬâ&éÅ<´9§9í¨ A1b!Gi°…ÕF4怎ôtà GPª Óˆ®ÄxÝàÐÑ÷Ï€´ MDbèck»€öLèFK¤; ùAzaWÀÔà~v´¦7ÍéN{+Õ“é§ÿ\5XÔ£NµªW½§=˜â0¦°«gMëZÛúÖ¶ÎÄ c 2¼×À¶°‡Ml¹• }X¢Sĺ²^…-úðêi—¢¥¸ö d½?H qö°þî>ôA _ØC±×Íîv»×`ˆü°¬¡—P"Cl cXD ¦…5,‚ )@ °ð ‰hÁ*ö@!—((d°ˆD˜€døMßMò’›üä5Å :ð‚d¯â ‘ w– ˆ6,Œ0„"1Lb -x:…Tb ¦@DL°3< ˆ‚bÀ† ¡¥hA$Lðj”{ýë`»žÊP‰ ÐûWøõ*œ…KL!ŒàAd𤠅C%¨Ð†]s"«0E˜¾ 6t@ ™À¾†D$»—èF.öÊ[þò˜_"‚ þ[g7D"Îp† €" Š0DD‘‚% Â(C¦` p Z€( µr-¼ øŽ QŠ/(b ) |æ—Ïü毻e "8@…‡œôœh„"b€QTb“ˆ‚Í÷І6D¡)`F1N  K(C$Fƒ1´!ŠøB@¡nçûÿÿxk{À‹àrÒf ‚b ±ö~` }€“@ˆ` ¶Ð É6nÔ†mâfn`-0sTÐX‚&x‚›fNàkР°†P ‰ |váwpg‡‚:¸ƒ<ønZ`€=„B8„‚f N@ƒpSGÐ"GDþ¥€Zàˆ°NP…‡±ˆ` y÷¶Ðlp“t¶à9H„dX†"pF¤gÀ1}m…¡‹ ¿·S@pˆ0Мð+TÀpP y±Z€„‘QàPÀf‰–g "…q¨0sG@(~`nj¨›xê&…T k~ ¶ Š ‘Šš(‡¿Ò‰}p…²š8( èlÑf ›X¥Ð—€‘l¥àGà€²HŒÀÒŠ«p‘ q™øx?h ‰8qKøŠÅ…}<€Pp ˆ‰«° ðø‹Ò¦‰¡Œ+q‰à&Àt<0 l°AP›¨þ‹²ÆŠ Á`ˆ·‹¶Ð€qm~@o¬˜ŠI >À8P) ‰yr{P2°AP •°° {°ðN mp 0 PБ` A ŠPÐ ‰Ð P `0w1_ ÌØQ™P‰@Q ›p‘P ¢° -cІà<0•e` `à¶€{sPÀQ@£° –¦ ‹2à2meà•p —0#Ù  ‘`8àdQ ‘…à€>PG @‘ð80Ž p2P `ðC Q ¶@0ŠgSþÉN€…ú¨‘ nN@ð ðN€•€™-€•0 #¹’P P †÷×Ð…€–‘"2œX¸… >°î‘ÒÉnGQÀ¶1`Š ¥€>ð˜`0‘àI(° ¦P †‘Ç¢¶›Jwo+¡2Z° `0aC°À km`>° œ¡&0†µ§±Æa° )0 «)ð¥•0…‡— xœÐ¾Pàœ u}0‹ð¢0†u±• †&nù›àŒ¬9 ’€þöØA`—` g¡œàŒ"±—±“à¶0@£@8g TŒ`Ð\'2°l-¸`ðlÐ  9 SÀ™PZ`™©ˆÓù§«Ævc 00z¥W}0‰ ïÉ€›m€K`¦P}N`° ™¢‹ðr•§Õ·dð¨d ˆ°‹Kà‰@Àgà0à’«"„G€¦“plj /ÐP“~ÐÎè‘«ÀTÇr¢°›Ê} ˜8»¶2x"!Ž ±¦9FêŠð€¶ÀC°Ð<«’Pu‘þ’45 à–¥~ÀæŠÍÚ ‡‰‘º œ0Gƒ( œ0aP«2à†Ð0€< |à¨[k¦Ð”/À†"  ™ÓˆPq") 1à¦P¤_` —ÐGpŠÇªØuäx|eS¥œ}èªl°G0dàˆ —@zlP±Gž_pŠ1 <“Aà#{ŠQˆPkÐ… C€‘ðÑš c0P0 € ª³xa1 ~À€} ‡†  š—ð20`¶-@² Ð´—À¯+á¥- …à“pT)À/þð~Pa° NPQ~`{+ P 01À`àGÀÀ®¸~ЋÀ$x±¾;kˆ`0lÀ¢ z‡z10Š0 QÐŒ°¡Ï¥2Ð P Š0e•à_€”àŠÛ) Q ´“Š ¡T«0±µˆy—Q°p¾•@ 6ˆ¿°¥0´ŠGð‘­úPиQj¿ùA0‰°{á(Š¿Œ ˜1 lÐ*©ÊQ° §‹ªª¶p º"`À¤ŒP 2 üj Ï»GÀ÷+ˆÀˆ"ృyÁ‹pþP02 uá— £¿ûĸ&«ØqZ¹ è)P‹gð½P N¼˜¥pYŒÄnY|Š"Ñ€0ƒŠwQŽƒ‹4ˆˆ4•Šr¨Æ}‹è4ÕmrØmýG‹Š‹½ ņ|rÕÉàøй{秇\É–L†×FÉ—¼ÉœÜÉžüɠʢ<ʤ\ʦ|ʨœÊª¼Ê¬ÜÊ®,‰ Hަ@S±öʶ|Ë€‘ð3,¯wp¸ÌÂ@óv œ,›Ð±gp¿/0 dþÀ“ðGЊР³ë¢( màй{Ø<Ð& p𬨴„# sþ¸ T` ) Œ—«"0 À ّР` N@zgð}ˆ@zNà kT…\Û܉’ ~JS&êö£@Ÿ|£¢Ð ÉÜÝð ËÛNÀ‡¹ ZÀ߬{l ˆ0Ûñ=à^à>jæàŠ< yQŠ ¢…Gx^áfËhÇ&ŒÀ}ôû+ þµÇHjW(ã 3ã<ËÞâþÇ »‹ ,|À{Ð ÁМ`þ馈:ž§_À $ { :_`©.^å•W|Š É'mP Ä—°k°½>'¹ˆ‹`šË™«Èe€–øCp £Ð

Inner classes

JiBX fully supports working with inner classes, but there are a couple of potential surprises in how these are handled. First off is the name representation. The Java source code naming rules treat classes the same as packages, which leads to some serious ambiguity. For instance, there's no way to determine whether the class name org.jibx.Abc.Def refers to a class Def in the package org.jibx.Abc or to an inner class Def of the class org.jibx.Abc. To avoid this ambiguity, JiBX uses the naming rules Java applies in generated bytecode, where the character '$' is used as a separator between a class name and the name of an inner class. So when you're working with JiBX binding definitions, the class name org.jibx.Abc.Def always refers to a class Def in the package org.jibx.Abc, while the class name org.jibx.Abc$Def always refers to an inner class Def of the class org.jibx.Abc.

The second issue users sometimes run into when using inner classes with JiBX is that non-static inner classes can't be used directly for unmarshalling. This is because each non-static inner class instance contains a hidden reference to the "owning" outer class instance. You can still work with such non-static inner classes using JiBX, but you need to use a factory method to create an instance of the class (see User extension method hooks for details of working with factory methods).

Enumerations

You can use all types of enumerations with JiBX, including both "official" Java 5 enum types and various forms of typesafe enumerations which are compatible with earlier Java versions. Enumerations normally represent simple string values, so they're represented in the binding definition using a value element (though if you have an enumeration with complex structure, you can instead use a structure element just as you would for any other complex class).

Simple Java 5 enum types, where the value to be used in the XML representation is the same as the enum name, are handled automatically by JiBX. If the value for the XML representation is different from the enum name, you can use the enum-value-method attribute of the binding value element (technically part of the string attribute group) to tell JiBX which method should be called to obtain the XML representation. The specified method must take no parameters and return a String value. This method will be used both when marshalling, to get the text to output, and when unmarshalling, to see if an enum instance matches the input text (with each enum value checked in turn until a match is found).

Other types of enumerations require a little more work. Generally the idea of an enumeration (especially type-safe enumerations) is that only one instance of the enumeration type is created for each possible value. For JiBX to work with such an enumeration type for unmarshalling, you need to define a static deserialization method which takes a text value and returns the corresponding enumeration instance (see the section Custom serializers and deserializers on the next page of the tutorial for details). If the enumeration type defines a toString() method which returns the text value used in the XML representation, you don't need to specify anything special for marshalling (since JiBX uses the toString() method by default for any object being marshalled as a value). If toString() does not return the value to be used in XML, you also need to define a serialization method (again, see Custom serializers and deserializers for details).

If an enumeration type is used in more than one place in your binding, you may want to use a format definition for the type. Doing this allows you to specify the added information in just one place, and then have it used automatically everywhere that type is referenced. See the User extension method hooks section of the next page for details.

Directions and tracking

The binding element that's the root of every binding definition supports several attributes that control the overall operation of JiBX when working with that binding. Two of these attributes are worth special mention as part of this tutorial.

The direction attribute lets you define one-way bindings, supporting either unmarshalling XML to your object classes (direction="input") or marshalling your object classes to XML (direction="output"). If you only need to go in one direction this can simplify your binding definition and sometimes even your code, since you don't need to define binding attributes that are only used for the other direction. By default, you always need to provide all necessary information for going in both directions.

The track-source attribute lets you add source position tracking when unmarshalling. This can be useful when you want to be able to relate unmarshalled objects back to particular locations in an input document (as when reporting errors to a user, for instance). If you use track-source="true", the binding compiler will add code to each of your bound object classes to implement the org.jibx.runtime.ITrackSource interface, and will set the source position information for each unmarshalled object. You can then access the source position information (in terms of document name, line number, and column number) using the methods provided by the interface (though you'll need to cast your objects to the interface type in order to do this, since the interface will not be visible at compile time).

See the <binding> element details page for information on all the available options.

Working with namespaces

Namespaces are an increasingly important part of working with XML. JiBX provides full support for namespaces, though the namespace element and the ns attribute for element and attribute names. Figure 18 gives a simple example of a document with two namespaces defined.

Figure 18. Working with namespaces
Working with namespaces

Here the first namespace element in the binding definition sets the http://www.sosnoski.com/ns1 namespace as the default for elements within the context of the customer mapping. This is equivalent to a standard default namespace definition in XML, which is what JiBX creates when marshalling using this mapping. The portions of the diagram relating to this namespace are highlighted in blue.

The second namespace element sets the http://www.sosnoski.com/ns2 namespace as the default for both elements and attributes within the context of the person mapping. This makes the namespace automatically apply to every name definition unless you override it with a specific namespace using the ns attribute. The use of this namespace is highlighted in green in the diagram.

If you have namespace definitions that apply to the entire XML document you can just define these directly as children of the binding element. The effect of placing a definition there is the same as if it were included separately within each top-level mapping definition.

See the <namespace> element details page for more information on working with namespaces in bindings.

Structuring bindings

The include element provides a way to structure your binding definitions to be more modular and reusable by letting you break them up into pieces. See the <include> element details page for more information on using this type of modular definition structure, including how namespaces work in combination with included bindings.

You should also keep in mind that you can use multiple bindings with a single set of classes. The only requirement to do this is that all the bindings must be compiled at the same time - if you compile bindings separately, the last one compiled will wipe out the information from the earlier bindings. This ability to work with multiple bindings is an important aspect of JiBX's flexiblity, allowing such uses as working with multiple versions of XML documents in a single set of Java classes (unlike other frameworks, which would generally require a separate set of classes for each version of the documents).


libjibx-java-1.1.6a/docs/tutorial/binding-collects.html0000644000175000017500000005526511017733600023016 0ustar moellermoeller Working with collections and IDs

Working with collections and arrays

Besides working with individual objects, applications often need to deal with collections of objects. Figure 8 gives a simple example of using collections with JiBX. Here the classes represent the basics of an airline flight timetable, which I'll expand on for the next examples. In this example I'm using three collections in the root TimeTable object, representing carriers (airlines), airports, and notes.

Figure 8. Basic collection handling
Basic collection handling

The Figure 8 binding definition uses a collection element for each collection. In the case of the first two collections there's a nested structure element to provide the details of the items present in the collection. I've highlighted the definitions for the collection of carriers in green, and the actual carrier information in blue, to emphasize the connection between the different components. The collection of airports is handled in the same way as the collection of carriers.

The collection of notes differs from the other collections both in that it's stored as an array, and that the values are simple Strings rather than objects with their own structure. You can use arrays of both object and primitive types with the collection element. In the case of simple values (primitives, or objects which are represented as simple text strings - including Strings, as in this example), you just use one or more nested value elements (which must use style="element", directly or by default) instead of structure elements. The same applies for non-array collections of simple values.

In the case of the Figure 8 binding the collections are homogeneous, with all items in each collection of a particular type. You can also define heterogeneous collections, consisting of several types of items, by just including more than one structure (or value) element as a child of the collection element. Figure 9 demonstrates using a heterogeneous collection for the carrier and airport data from Figure 8, with the structure definitions for the carrier and airport components (shown in green) combined in a single collection.

Figure 9. Heterogeneous collection, with factory
Heterogeneous collection, with factory

Figure 9 also demonstrates one way to work with collection interfaces (shown in blue). I've changed the type of the collection field in the TimeTable class to the List interface, rather than the concrete ArrayList class used in Figure 8. I've also added the listFactory() method, which returns an instance of a List interface. Finally, I added a factory attribute on the binding definition collection element to specify the factory method. When a factory method is given, JiBX calls that method to get a new instance of the class if it needs one during unmarshalling (see User extension method hooks for full details on this and other ways of using your own code with JiBX). JiBX will reuse an existing instance if one is already present, so the method is only called if the current value of the field is null (though when reusing a collection, you need to "manually" empty the collection before unmarshalling - a pre-set method works well for this purpose).

As of the JiBX 1.1 release there's an easier way to accomplish the same effect as using a factory to supply instances of an implementation class. This is to use the new create-type attribute to specify the class used when creating new instances of an object. See the object attribute group descriptions for the full details.

As with structure elements with multiple child components, heterogeneous collections can be either ordered (meaning the items of each type may be repeated, but the different types of items must always occur in the specified order) or unordered (meaning the items can be in any order). Either way, the child components of a collection are always treated as optional by JiBX (so zero or more instances are accepted).

The collection element is generally similar to the structure element in usage and options, but accepts some additional attributes that are unique to working with collections of items. Most of the added attributes are for when you want to implement a custom form of collection, using your own methods to add and retrieve items in the collection. Another attribute, item-type, can be used to specify the type of items in the collection.

For the prior examples I've used embedded structure elements to define the structure of items in the collection. This isn't the only way to use collections, though. You can instead leave a collection element empty to tell the binding compiler that objects in the collection will have their own mapping definitions. Specifying the type of items can be useful in this case to avoid ambiguity. Figure 10 shows an example of using mapping definitions in this way.

Figure 10. Collections with mappings
Collections with mappings

In Figure 10 I've converted the embedded carrier and airport structure definitions used in the earlier examples into their own mapping elements. The binding uses an item-type attribute to specify that the first collection (shown in blue) contains only carriers, while the second collection (shown in green) uses a generic Object array for the airport information. In this example, if I didn't specify the type of items present in the first collection JiBX wouldn't know when to stop adding unmarshalled items to the first collection and start adding them to the second collection. Using the item-type attribute makes it clear that the first collection is only intended for Carrier instances. I could also use an item-type attribute on the second collection, if I wanted to, but in this case it's unnecessary - the only thing following the carrier information in the XML representation is the airport information.

You can nest collections inside other collections. This is the approach used to represent multidimensional arrays, or Java collections made up of other collections. You can also use value elements directly as the child of a collection element, though only if the value representation is as an element. This is the way you'd handle a collection of simple String values, or an array of int values, for instance.

The collection element will work directly with all standard Java collections implementing the java.util.Collection interface, as well as with arrays of both object and primitive types. It can also be used with your own specialized collection types, using optional attributes to specify the methods used by JiBX to access the collection data. When used with arrays, the defined type of the array is assumed as the type of the items in the collection. You can override this to a more specific type by using the item-type attribute with an array. See the <collection> element details page for more details on the collection options and usage.

Working with IDs

Figure 11 gives a more complex example of working with collections. This builds on the Figure 10 XML and data structures. The prior collections of carrier and airport elements are still present, but now the XML representation uses wrapper elements (carriers and airports, respectively) for the collections of each type. The blue highlighting in the diagram shows this change. In the binding definition, the addition of the wrapper element is shown by just adding a name attribute to each collection element.

Figure 11. Collections and IDs
Collections and IDs

I've also added route and flight information to the Figure 11 binding. The most interesting part about these additions is the use of references back to the airport and carrier information. The carrier reference linkages are highlighted in green, the airport linkages in magenta. In the Java code, the linkages are direct object references. On the XML side, these are converted into ID and IDREF links - each carrier or airport defines an ID value, which is then referenced by flight or route elements. The binding definition shows these linkages through the use of an ident="def" attribute on the child value component of a mapping element supplying the ID, and an ident="ref" attribute on an IDREF value component that references an ID.

Using ID and IDREF links allows references between objects to be marshalled and unmarshalled, but is subject to some limitations. Each object with an ID must have a mapping in the binding. The current JiBX code also requires that you define objects in some consistent way, though the references to the objects can be from anywhere (even before the actual definitions of the objects). In other words, you have to define each object once and only once. In Figure 11 the definitions occur in the carriers and airports collections. The current code also prohibits using IDREF values directly within a collection (so the definitions can be from a collection, but not the references) - to use references in a collection you need to define some sort of wrapper object that actually holds the reference. However, see JiBX extras for some support classes which extend the basic JiBX handling in these areas.


libjibx-java-1.1.6a/docs/tutorial/binding-custom.html0000644000175000017500000007107211017733600022512 0ustar moellermoeller Customizing JiBX binding behavior

Using custom code with JiBX

For the highest degree of control over JiBX binding behavior you can write custom code that ties directly into the JiBX framework. This gives you ways of handling special cases that are beyond the normal binding flexibility. It's not a technique to be used lightly, though.

Working at this level takes you into the internals of the JiBX runtime implementation classes. These implementation classes are considered to be reasonably stable, but are likely to change more frequently then the interface classes (in the org.jibx.runtime package) defined for normal user access. They're also not as well documented as the normal user interface - all you'll have to work with is this page, the associated example code, and the JavaDocs for the implementation classes (in the org.jibx.runtime.impl package).

Even with these limitations, the flexibility may be worth the pain involved if you have special binding requirements. I've supplied a pair of examples here which illustrate this flexibility. The JiBX custom code portions of these examples are included in the jibx-extras.jar in the distribution, so they're available for use without the need for you to personally dig into the JiBX implementation code (unless you want to change the way they work).

Custom marshallers and unmarshallers

The principle behind custom marshallers and unmarshallers is simple: Instead of letting JiBX build a marshaller and unmarshaller for a class based on a mapping element in your binding definition, you tell JiBX to use your own supplied class. This class must implement the org.jibx.runtime.IMarshaller (for a marshaller, used by an output binding) and/or org.jibx.runtime.IUnmarshaller (for an unmarshaller, used by an input binding) interfaces.

You can think of custom marshallers and unmarshallers as taking the simpler idea of custom serializers and deserializers to a whole new level. Serializers and deserializers give you control over the text representation of primitive or simple object values, where there's no XML structure involved. Custom marshallers and unmarshallers extend this control to complex objects with any number of attributes and/or child elements. The downside of this extended control is that marshallers and unmarshallers are considerably more complex to code than serializers and deserializers.

Figure 21. Using a custom marshaller/unmarshaller
Using a custom marshaller/unmarshaller

Figure 21 shows a pair of examples of using a a custom marshaller/unmarshaller. In this case the marshaller/unmarshaller involved handles java.util.HashMap instances. The Java class structure is based off a Directory that contains a HashMap (highlighted in green) using customer identifier strings as keys and the associated customer information (in the form of Customer class instances) as values. The custom marshaller code converts the hashmap into a map element wrapper with an attribute giving the number of key-value pairs, and the actual key-value pairs as contained entry elements (all highlighted in magenta). Each entry element gives the key as an attribute and the mapped value as the content. The custom unmarshaller converts this XML structure back into a hashmap instance.

The binding definitions in Figure 21 show two different ways of using a custom marshaller/unmarshaller class. In the top version, the mapping definition highlighted in blue tells JiBX to use the custom marshaller/unmarshaller by default for handling all java.util.HashMap instances referenced by the binding. Here the actual binding definition for the customerMap field (highlighted in green) automatically uses the custom code. In the bottom version, the custom marshaller and unmarshaller are instead referenced directly by the binding definition for the field (again highlighted in green).

Hashmap handling makes an especially good example of the situations that require custom marshaller/unmarshallers. This particular implementation handles one particular form of hashmaps, with string keys and values of an object type with a mapping definition within the JiBX binding file. Other forms of hashmaps could be handled by modifying the basic marshaller/unmarshaller code, but it's very difficult to handle all possible types of hashmaps with a single implementation. Consider how the XML structure would need to be different if the key values in the hashmap were other mapped objects rather than simple string values, for instance (they couldn't be expressed in XML as attribute values, for starters).

Below is a partial listing of the custom marshaller/unmarshaller class (with only the marshaller implementation shown - see the /tutorial/example21 directory of the distribution for the full source code and related files):

public class HashMapper implements IMarshaller, IUnmarshaller, IAliasable
{
    private static final String SIZE_ATTRIBUTE_NAME = "size";
    private static final String ENTRY_ELEMENT_NAME = "entry";
    private static final String KEY_ATTRIBUTE_NAME = "key";
    private static final int DEFAULT_SIZE = 10;
    
    private String m_uri;
    private int m_index;
    private String m_name;
    
    public HashMapper() {
        m_uri = null;
        m_index = 0;
        m_name = "hashmap";
    }
    
    public HashMapper(String uri, int index, String name) {
        m_uri = uri;
        m_index = index;
        m_name = name;
    }
    
    public boolean isExtension(int index) {
        return false;
    }
    
    public void marshal(Object obj, IMarshallingContext ictx)
        throws JiBXException {
        
        // make sure the parameters are as expected
        if (!(obj instanceof HashMap)) {
            throw new JiBXException("Invalid object type for marshaller");
        } else if (!(ictx instanceof MarshallingContext)) {
            throw new JiBXException("Invalid object type for marshaller");
        } else {
            
            // start by generating start tag for container
            MarshallingContext ctx = (MarshallingContext)ictx;
            HashMap map = (HashMap)obj;
            ctx.startTagAttributes(m_index, m_name).
                attribute(m_index, SIZE_ATTRIBUTE_NAME, map.size()).
                closeStartContent();
            
            // loop through all entries in hashmap
            Iterator iter = map.entrySet().iterator();
            while (iter.hasNext()) {
                Map.Entry entry = (Map.Entry)iter.next();
                ctx.startTagAttributes(m_index, ENTRY_ELEMENT_NAME);
                if (entry.getKey() != null) {
                    ctx.attribute(m_index, KEY_ATTRIBUTE_NAME,
                        entry.getKey().toString());
                }
                ctx.closeStartContent();
                if (entry.getValue() instanceof IMarshallable) {
                    ((IMarshallable)entry.getValue()).marshal(ctx);
                    ctx.endTag(m_index, ENTRY_ELEMENT_NAME);
                } else {
                    throw new JiBXException("Mapped value is not marshallable");
                }
            }
            
            // finish with end tag for container element
            ctx.endTag(m_index, m_name);
        }
    }
    ...
}

At runtime, JiBX creates an instance of the class when needed using either a default (no-argument) constructor or an optional aliased constructor that uses element name information passed in from the JiBX binding. The difference between the two is that the aliased constructor allows the element name to be used by the marshaller/unmarshaller to be set by JiBX based on the information in the binding definition file. For the Figure 21 example JiBX uses the aliased constructor behind the scenes, since the binding definitions supply a name for the mapped element. If a custom marshaller or unmarshaller class (which need not be the same class) supports setting the root element name in this way it needs to implement the org.jibx.runtime.IAliasable interface (which is only an indicator interface, with no actual methods defined).

This naming flexibility only applies at the top level, though. As you can see from the code, the local names used for the attributes and nested element name are fixed at compile time, while the namespaces are all set to match that of the aliased top-level element (which may not be what you want - often documents that use namespaces for elements do not use them for attributes, for instance).

Besides the two constructor variations shown in this example, you can also define constructors that take an additional String parameter. If the binding compiler finds a constructor of this type it will pass the name of the object class that the marshaller/unmarshaller is used with in the binding when calling the constructor. This feature can be used to implement polymorphic marshaller/unmarshallers.

If you want to use this custom marshaller/unmarshaller for hashmaps in your own application you can find it included in jibx-extras.jar with the name org.jibx.extras.HashMapperStringToComplex. You can also find several other custom marshaller/unmarshaller classes in the org.jibx.extras package, including the org.jibx.extras.TypedArrayMapper that gives an example of marshaller/unmarshaller polymorphism. I'll also look into ways of making custom marshaller/unmarshallers even more configurable in the future.

Controlling JiBX with front-end code

Another interesting issue that's come up for several users in the past is the need to work with multiple versions of XML documents. JiBX has supported this from the beginning if the versions used different root element names, but this is not a convenient approach for XML versioning - it's much easier to keep the element names the same and instead just use an attribute of the root element to specify the document version.

This makes a good example of controlling the high-level operation of JiBX from your own code. Below is a partial listing (with constructor and get/set methods left out) of code that first selects a binding for unmarshalling based on an attribute of the document root element, then creates an unmarshalling context for the specific version found and uses that context to unmarshal the document. On the marshalling side, this uses a supplied version string to select the binding:

public class BindingSelector
{
    /** URI of version selection attribute. */
    private final String m_attributeUri;
    
    /** Name of version selection attribute. */
    private final String m_attributeName;
    
    /** Array of version names. */
    private final String[] m_versionTexts;
    
    /** Array of bindings corresponding to versions. */
    private final String[] m_versionBindings;
    
    /** Basic unmarshalling context used to determine document version. */
    private final UnmarshallingContext m_context;
    
    /** Stream for marshalling output. */
    private OutputStream m_outputStream;
    
    /** Encoding for output stream. */
    private String m_outputEncoding;
    
    /** Output writer for marshalling. */
    private Writer m_outputWriter;
    
    /** Indentation for marshalling. */
    private int m_outputIndent;
    
    ...
    
    /**
     * Marshal according to supplied version.
     *
     * @param obj root object to be marshalled
     * @param version identifier for version to be used in marshalling
     * @throws JiBXException if error in marshalling
     */
    
    public void marshalVersioned(Object obj, String version)
        throws JiBXException {
        
        // look up version in defined list
        String match = (version == null) ? m_versionTexts[0] : version;
        for (int i = 0; i < m_versionTexts.length; i++) {
            if (match.equals(m_versionTexts[i])) {
                
                // version found, create marshaller for the associated binding
                IBindingFactory fact = BindingDirectory.
                    getFactory(m_versionBindings[i], obj.getClass());
                MarshallingContext context =
                    (MarshallingContext)fact.createMarshallingContext();
                
                // configure marshaller for writing document
                context.setIndent(m_outputIndent);
                if (m_outputWriter == null) {
                    if (m_outputStream == null) {
                        throw new JiBXException("Output not configured");
                    } else {
                        context.setOutput(m_outputStream, m_outputEncoding);
                    }
                } else {
                    context.setOutput(m_outputWriter);
                }
                
                // output object as document
                context.startDocument(m_outputEncoding, null);
                ((IMarshallable)obj).marshal(context);
                context.endDocument();
                return;
                
            }
        }
        
        // error if unknown version in document
        throw new JiBXException("Unrecognized document version " + version);
    }
    
    /**
     * Unmarshal according to document version.
     *
     * @param clas expected class mapped to root element of document (used only
     * to look up the binding)
     * @return root object unmarshalled from document
     * @throws JiBXException if error in unmarshalling
     */
    
    public Object unmarshalVersioned(Class clas) throws JiBXException {
        
        // get the version attribute value (using first value as default)
        m_context.toStart();
        String version = m_context.attributeText(m_attributeUri,
            m_attributeName, m_versionTexts[0]);
        
        // look up version in defined list
        for (int i = 0; i < m_versionTexts.length; i++) {
            if (version.equals(m_versionTexts[i])) {
                
                // version found, create unmarshaller for the associated binding
                IBindingFactory fact = BindingDirectory.
                    getFactory(m_versionBindings[i], clas);
                UnmarshallingContext context =
                    (UnmarshallingContext)fact.createUnmarshallingContext();
                
                // return object unmarshalled using binding for document version
                context.setFromContext(m_context);
                return context.unmarshalElement();
                
            }
        }
        
        // error if unknown version in document
        throw new JiBXException("Unrecognized document version " + version);
    }
}

To use this binding selection code you need to define a pair of arrays of giving the text values for each version number and the corresponding binding name, then create the BindingSelector instance and set the document to be unmarshalled before finally calling unmarshalVersioned method to get back the unmarshalled root object:

// attribute text strings used for different document versions
    private static String[] VERSION_TEXTS = {
        "1.0", "1.1", "1.2"
    };
    
    // binding names corresponding to text strings
    private static String[] VERSION_BINDINGS = {
        "binding0", "binding1", "binding2"
    };

    public static void main(String[] args) {
        try {
            
            // process input file according to declared version
            BindingSelector select = new BindingSelector(null, "version",
                VERSION_TEXTS, VERSION_BINDINGS);
            IUnmarshallingContext context = select.getContext();
            context.setDocument(new FileInputStream(args[0]), null);
            Customer customer = (Customer)select.
                unmarshalVersioned(Customer.class);
            ...

You can find the full source code and related files in the /tutorial/example22 directory of the distribution. A version of this class is also included in the jibx-extras.jar as org.jibx.extras.BindingSelector, so if you just want to make use of it as-is you can easily do so.


libjibx-java-1.1.6a/docs/tutorial/binding-extend.html0000644000175000017500000005502211017733600022464 0ustar moellermoeller Method hooks for extending JiBX

User extension method hooks

You can use your own methods in combination with JiBX marshalling and unmarshalling to support your use of the framework. Figure 19 gives examples of the various types of user method calls supported.

Figure 19. User method hooks
User method hooks

Starting from the top of the binding definition, I've defined both factory and pre-get methods for the Order class, with the relevant parts of the diagram highlighted in blue. The factory method is called by JiBX to create an instance of the associated class, replacing the default (no-argument) constructor JiBX otherwise expects to find for the class. A factory method needs to be static, but doesn't have to be in the class that it creates (so a fully qualified class and method name is required when you define a factory).

The pre-get method defined for the Order class is called by JiBX immediately before it marshals the associated object. This gives you a chance to handle any validation or completion processing you want to perform, such as calculating the order total in this case. If you use this option, the method to be called must always be a member method of the object class. Since it has to be a member method, you only need to give the method name in the definition.

For the Person class I've defined a pre-set method, highlighted in green in Figure 19. The pre-set method is called by JiBX during unmarshalling, after an instance has been created but before any component values have been unmarshalled. This lets you do any preliminary setup you might want to perform for the object. Here again, the method must be a member method of the object class, and only the method name is used as the attribute value.

You might notice that the pre-set method example uses a different signature than the pre-get example. JiBX actually gives you three different options for the signatures of any of these extension methods. The first is a method with no arguments, as shown for the factory and pre-get examples. The second is a single argument of type java.lang.Object, as shown for the pre-set example. The third signature variation is used for the last method example in Figure 19, the post-set method defined for the Item class (shown in magenta in the diagram). I'll describe the reasons for using these different signatures in a moment, but first I'll cover this last method example.

This post-set method is called by JiBX after the basic unmarshalling of the associated object (and all child objects) is complete. The only thing left to be done in the unmarshalling of the object at this point is to fill in links to forward-referenced IDs from the XML document, which won't take place until the referenced objects are unmarshalled. The post-set method is a great place to handle any special validation or linking of unmarshalled objects.

Now that that's out of the way, here's the story on the signature variations. The no-argument form of signature doesn't really require much explanation - JiBX calls your method and the method does whatever it wants, working only with the actual object (after creating the object, in the case of a factory method). If you instead use a method with a single parameter of type java.lang.Object, JiBX will pass the containing object as the parameter on the method call (or null if this is the root object being marshalled or unmarshalled). In the pre-set example of Figure 19 (shown in green) I use this variation. In the method code I take advantage of my knowledge that the containing object for a Person is always going to be a Customer, and cast the object to the latter type before saving it.

If you use a method with a single parameter of type org.jibx.runtime.IMarshallingContext (for a pre-get method) or org.jibx.runtime.IUnmarshallingContext (for the other extension methods) JiBX will pass its own context when calling your method. This can be useful for many different purposes. In Figure 19 I use this form for the post-set example method, highlighted in magenta. The reason for using the context in this case is that it gives me access to not just the containing object being unmarshalled, but the entire stack of nested objects being unmarshalled. The Item class is used within a collection, so the containing object of an instance -- what I'd get passed if I used an Object parameter in the method definition -- will be the actual ArrayList instance. In order to get to the Order object I want to access from my Item instance I have to use the context getStackObject method to go down a level in the stack.

All the extension methods can be used with non-abstract mapping elements, and also with structure and collection elements that work with object properties (but not with a structure that only defines an element name without an associated object).

Custom serializer and deserializer methods

You can also easily use your own methods for converting values to and from string representations. Figure 20 gives an example of doing this for a couple of sample cases. The first is a dollars-and-cents value in the XML representation that converts to a int primitive in the Java code (giving the value in cents), shown highlighted in blue. The second is a list of numbers in the XML representation that converts to an array of ints in the Java code, shown highlighted in green.

Figure 20. Using custom serializers and deserializers
Using custom serializers and deserializers

This shows two ways of defining custom conversions. The first, used for the dollars-and-cents values (highlighted in blue), associates the serializer and deserializer directly with the value to be converted by using the serializer and deserializer attributes of the value element. The second, used for the orders list (highlighted in green), sets custom defaults for handling a particular type of value by using the format element. This custom default then applies to all values of the specified type within the context of the definition. In the case of the Figure 20 example, this context is the entire binding definition, since the format element is a child of the binding element.

The third way of defining custom conversions (not shown in the Figure 20 example) also uses the format element, but with the addition of a label attribute value. In this case the format does not become a default, but can be referenced by name wherever needed (using the format attribute of a value element).

The methods used for custom conversions to and from XML just need to be static methods that take a single argument and return a value of the appropriate type. For the serializer method, the argument must be of the Java type being handled (or a superclass) and the return must be a java.lang.String. For the deserializer method, the argument must be a java.lang.String and the return must be of the Java type being handled. Here's what these might look like for the Figure 20 binding:

public static String serializeDollarsCents(int cents) {
    StringBuffer buff = new StringBuffer();
    buff.append(cents / 100);
    int extra = cents % 100;
    if (extra != 0) {
        buff.append('.');
        if (extra < 10) {
            buff.append('0');
        }
        buff.append(extra);
    }
    return buff.toString();
}

public static int deserializeDollarsCents(String text) {
    if (text == null) {
        return 0;
    } else {
        int split = text.indexOf('.');
        int cents = 0;
        if (split > 0) {
            cents = Integer.parseInt(text.substring(0, split)) * 100;
            text = text.substring(split+1);
        }
        return cents + Integer.parseInt(text);
    }
}

public static String serializeIntArray(int[] values) {
    StringBuffer buff = new StringBuffer();
    for (int i = 0; i < values.length; i++) {
        if (i > 0) {
            buff.append(' ');
        }
        buff.append(values[i]);
    }
    return buff.toString();
}

private static int[] resizeArray(int[] array, int size) {
    int[] copy = new int[size];
    System.arraycopy(array, 0, copy, 0, Math.min(array.length, size));
    return copy;
}

public static int[] deserializeIntArray(String text) {
    if (text == null) {
        return new int[0];
    } else {
        int split = 0;
        text = text.trim();
        int fill = 0;
        int[] values = new int[10];
        while (split < text.length()) {
            int base = split;
            split = text.indexOf(' ', split);
            if (split < 0) {
                split = text.length();
            }
            int value = Integer.parseInt(text.substring(base, split));
            if (fill >= values.length) {
                values = resizeArray(values, values.length*2);
            }
            values[fill++] = value;
            while (split < text.length() && text.charAt(++split) == ' ');
        }
        return resizeArray(values, fill);
    }
}

When an optional value is missing in the input document the JiBX binding code will call the deserialize method with null, since there's no text value to pass. Calling the deserialize method allows this method to handle the case of a missing value in whatever manner is appropriate. In the Figure 20 binding the deserialize methods are only used for required values, so strictly speaking the above implementations would not need to handle the null case. It's often best to code for this case anyway, though, in case new uses of the deserializers are added in the future.


libjibx-java-1.1.6a/docs/tutorial/binding-extras.html0000644000175000017500000004770311017733600022512 0ustar moellermoeller Going further with bindings

Variations on a theme

The first simple example only used required elements and public fields. JiBX isn't limited to just these choices, though. You can also work with optional elements and attributes in your XML, and with both fields and get/set access methods using any access level. Figure 2 gives an example of some of these features. I've shown the changes to the XML representation from Figure 1 in blue, and the changes to the Java representation in green.

Figure 2. Attributes, optional, access, and more...
Attributes, optional, etc.

I added value-style="attribute" to the structure element of the binding definition in order to change the expression of the child values in the XML from the default of elements to attributes. The value-style attribute can be used on any of the binding definition elements that can contain value elements. It changes the default style for all nested value elements. The actual value element always has the final say over its XML representation, though, using the style attribute. In the Figure 2 binding the value definition for the lastName field illustrates this, using an XML representation of text rather than the attribute representation used for the other fields of the Person class. The end result is the changed person element structure in the XML document, with the customer number and first name as attributes and the last name as text content of the element.

The other change in the XML handling shown in Figure 2 is that I made the zip element optional (and deleted it from the document shown). This change is shown in the binding definition by the addition of usage="optional" to the zip element value definition. Using everything as shown, the zip field will be set to null when unmarshalling the document. You can also define defaults for optional values. When you unmarshal a document with the value missing, the default you specify will be used instead. When you marshal objects to create a document, the value present will be compared to the default. If the value is the same as the default, JiBX will skip writing the value to the XML document.

The access methods added on the Java side are reflected in the binding definition by the use of get-method and set-method attributes on the appropriate value elements. If both get-method and set-method are supplied there's no need to include a field name, as shown by the value definition for the customer number. You can also use a get or set method in conjunction with direct access to the field, as shown for the phone number binding. When you do this the supplied method will be used where possible, with direct field access used for storing values when only a get method is supplied, or for loading values when only a set method is supplied.

I also changed the type of the zip field in the Java code, from java.lang.Integer to java.lang.Object. It's sometimes convenient to use generic types like Object (or interfaces) in code, even when you know the runtime type is going to be something more specific. But JiBX needs to know what type to create when unmarshalling a value, and Object can't be used directly for that purpose. The type attribute allows you to override the type defined in the source code for a field (or get/set methods) with a more specific type. In this case I've given java.lang.Integer as the actual type to be assumed when working with the zip field.

For full details on the options available for the value element see the <value> element details page.

Mixing it up

Another sometimes useful variation supported by JiBX is the ability to use either ordered or unordered lists of child elements. By default, JiBX assumes that elements in the XML document are in a fixed order. This allows for more efficient unmarshalling of documents, and also reflects the most-common usage of XML. For the exceptional cases where elements are not ordered JiBX allows the default behavior to be overridden. Figure 3 shows how this works, with changes from Figure 1 again highlighted in color.

Figure 3. Unordered elements
Unordered elements

As compared to Figure 1, here I've added an ordered="false" attribute on the mapping element, and also added usage="optional" on all the child components of the mapping element in the binding. The first change tells JiBX that I want to use unordered child elements within the customer element. The second change, making all the child components optional, used to be required for an unordered group. As of the 1.1 release this is no longer the case, so the same binding would work if you took off the usage="optional" attributes (and would throw an exception at runtime if one of the required elements was not found when unmarshalling). I've scrambled the child elements within the XML document in Figure 3 to illustrate the unordered operation.

Note that the ordered="false" setting only applies to the children of the element with the setting. In the Figure 3 example, this means that the person element of the XML document can occur in any order amoung the children of the customer element, but the children of the person element still have to be in their original order. If I wanted to change this I'd need to add the ordered="false" setting on the structure element of the binding definition and make all the child elements optional.

As of the JiBX 1.1 release, you have the option of ignoring unknown elements within an unordered group. To enable this behavior you need to include a flexible="true" on the binding element containing the group (the same place you set the ordered="false"). Also as of 1.1, repeated elements within an unordered group will by default be treated as an error when unmarshalling (so if the Figure 3 sample document had a second instance of the <address> element, for instance, the runtime code would throw an exception). You can disable this checking for repeated elements by using the allow-repeats="true" attribute on the containing element. Both these options can only be used in combination with ordered="false" - if you're using an ordered group, JiBX expects the elements to be exactly as specified. See the structure attribute description for full details on these options.

There's one more change I made in Figure 3, though this is a change just for the purpose of showing that it has no effect. This is the reordering of the fields within the Person class. The order of the fields in the class definition is ignored by JiBX - only the order of binding definitions that reference these fields matter. In this case I kept the order of the value binding components within the structure definition for the Person class unchanged, so the XML representation for this class also remained the same.


libjibx-java-1.1.6a/docs/tutorial/binding-mappings.html0000644000175000017500000006103411017733600023013 0ustar moellermoeller The many flavors of mappings

Normal mappings

You can define multiple mappings within a single binding, as already demonstrated in the last collections examples. These mappings may all be top-level (children of the binding element), or may be nested within other mapping definitions. Nested mapping definitions are only usable within the context of the containing mapping. In general, it's not a good idea to nest mapping definitions more than one level deep, or inside mappings other than the one used for the root element of your documents, because of performance concerns.

Figure 12 is a trivial example of using multiple mappings. The first mapping in this example binds the root customer element to the Customer class. The second mapping, highlighted in green, binds address elements to the Address class. The empty structure element (with no child elements) for the address field, both shown in blue, automatically uses the mapping defined for the Address class because that is the type of the field referenced by the structure element.

Figure 12. Normal multiple mapping example
Normal multiple mapping example

Using empty structure elements to reference mappings, as shown in Figure 12, is most useful when an object reference can be to instances of different classes. When there's no mapping defined for the exact type of the object reference associated with the structure, but there are one or more mappings for assignment-compatible types (such as subclasses), JiBX will accept any of the assignment-compatible types at runtime and use the appropriate mapping.

Figure 13 demonstrates using an empty structure element with no mapping matching the object type. The only change from the last example is that I changed the type of the address field to java.lang.Object (highlighted in green). The same document is still marshalled and unmarshalled, but there is a subtle difference between the two examples: The Figure 13 binding will allow the address field to reference an instance of any mapped class, including another instance of the Customer class. This flexibility may not be what we want in this case (since the field is named "address"), but it fits the field definition.

Figure 13. Multiple mapping with generic reference
Multiple mapping with generic reference

You can force an empty structure element to use a particular mapping with the map-as attribute. This restricts the value for the referenced object to always be of the type of that mapping. It's generally a good idea to use map-as when you're expecting to use a specific mapping, even when JiBX will automatically select that mapping (as in Figure 12), just to make the linkage to a particular mapping explicit and avoid any potential confusion. I'll show some examples of using the map-as attribute later on this page.

Abstract mappings

All the mapping examples I've used so far are normal mappings, each relating an element name to instances of a particular class. JiBX also lets you define abstract mappings, which are essentially anonymous bindings for classes. Abstract mappings can be referenced from different contexts with different element names, or with no name at all. Figure 14 shows an example using an abstract mapping.

Figure 14. Simple abstract mapping
Simple abstract mapping

This binding defines normal mappings for two classes, the Customer class and the Subscriber class. The abstract mapping for the Address class, highlighted in blue, defines the basic XML structure used to represent an address. The Customer mapping includes a pair of structure elements (highlighted in green and red) that define element names for the two Address components of a customer, so within the corresponding customer element these components are each bound to separate child elements. The Subscriber mapping uses a single structure element (highlighted in magenta) with no element name for its Address component, so the address information is in this case merged directly into the representation of the corresponding subscriber element.

You can define multiple abstract mappings for the same class, using names to distinguish between the mappings. Figure 15 shows a modified version of the last example, where I've defined two different abstract mappings for the Address class. The first abstract mapping, highlighted in blue, is the same as the Address mapping in the last example except for the addition of a type-name of "normal-address". The second abstract mapping, highlighted in green, uses a different structure and a type-name of "compact-address". Each structure reference to a Address object has also been changed, as highlighted in magenta, to reference one of the two abstract mapping names using a map-as attribute.

Figure 15. Named abstract mappings
Named abstract mappings

The Figure 15 changes have no effect on the document with the customer root element, since the abstract mapping used for the Address instances in this context remains the same. But the document with the subscription root element has a very different structure from the previous example, as defined by the alternative abstract mapping for the Address class.

You can use interfaces as well as regular classes for abstract mappings, which is useful when the interface defines get/set methods to be used by the mapping. You can also use interfaces and abstract classes with a normal mapping definition in some circumstances - the basic requirement here is that there has to be a way to create an instance of the interface or abstract class when unmarshalling (as with a factory method, discussed in User extension method hooks).

mapping definitions are normally used for your own data classes, and those classes are directly modified by the JiBX binding compiler. You can also define mappings for unmodifiable classes, such as system classes or ones in jar files (though you can make the classes from a jar file modifiable by just unpacking the jar before running the binding compiler, then repacking it after). When a mapping is defined for an unmodifiable class, the mapping can only be used within the context of some other mapping.

Mappings and inheritance

Besides the "free standing" mappings you've seen so far, you can also define extension mappings which are linked to other mappings. Each extension mapping references some base mapping. By attaching itself to that base mapping, the extension mapping becomes an alternative to the base mapping anywhere the base mapping is invoked in the binding. When marshalling, the actual type of the object instance determines which mapping is applied, and hence the element name (and actual representation) used in the generated XML. When unmarshalling, the element name is used to select the extension mapping to be applied and hence the type of object to be used for the unmarshalled data.

Extension is easiest in the case where the base mapping class is never used directly. In this case you can define an abstract mapping as the root for extension, then add normal mappings which extend that abstract mapping for each substitute you want to allow in your binding. Figure 16 shows a simple example of this approach, with a base class containing some common information and a pair of subclasses providing additional details. This sort of polymorphic class hierarchy is a common use case for extension, but not the only use case.

Figure 16. Abstract and extension mappings
Subclasses without extension mappings

In Figure 16 I've changed my earlier example code to support two types of customers, persons and companies. The Customer class doesn't care which is used, it just includes a reference to an instance of the Identity class. The Identity itself only defines a customer number. The Person and Company classes each extend Identity with added information for their particular type.

I've highlighted the handling of the base Identity class in blue, with the Person handling in green and the Company extension in magenta. The mapping definitions for the subclasses in this case each invoke the base class abstract mapping as part of their bindings (using a <structure map-as="..."> reference). This is not a requirement of using extension mappings; in fact, there's no requirement that the extension mapping classes are even related to the base mapping class. Likewise, you don't need to use "extends" in order to reference a base class mapping in this way - extends is only necessary (or appropriate) in cases where instances are being used polymorphically, as in the reference from the Customer class in this example.

The base for an extension mapping doesn't have to be an abstract mapping. It's generally easiest to structure your extensions to use an abstract base when you can, but there are cases where that's just not possible. For example, if instances of your base mapping class can be used directly (rather than only instances of the extension mapping classes), you need to define a concrete mapping for that root class. Figure 17 gives an example of this situation, again using a set of related classes.

Figure 17. Extending a concrete mapping
Extending a concrete mapping

The difference from the last example is that in Figure 17 the base Identity class can be used directly, as shown by the added example document (highlighted in magenta). Since the base class can be used directly I had to define a concrete mapping for the class, and make the subclass mappings extend the base mapping (highlighted in green). I couldn't just invoke this base class mapping in the subclass mappings, though, since the base mapping includes the base-ident element name - invoking it directly would correspond to an XML structure where the entire base-ident element was embedded within the subclass representations. Instead, I used a separate named abstract mapping to represent the structure I wanted for the base class information, and invoked this abstact mapping from both the base mapping and the subclass mappings.

Even though the original intention of extension mappings was to represent polymorphism, they can also be used in other circumstances - there's no requirement that the classes handled by the extension mappings have any particular inheritance or implements relationship to the class handled by the base mapping. This flexibility can be useful when working with XML representations which assume a particular inheritance structure (in the form of substitution groups) that doesn't match the intent of your application code.

This page covers most of the mapping element options and usage, but see the <mapping> element details page for full details.


libjibx-java-1.1.6a/docs/tutorial/binding-start.html0000644000175000017500000004473311017733600022341 0ustar moellermoeller A basic binding

Getting Started

Here's a simple example of using JiBX. Suppose you have the following XML customer information document structure:

<customer>
  <person>
    <cust-num>123456789</cust-num>
    <first-name>John</first-name>
    <last-name>Smith</last-name>
  </person>
  <street>12345 Happy Lane</street>
  <city>Plunk</city>
  <state>WA</state>
  <zip>98059</zip>
  <phone>888.555.1234</phone>
</customer>

JiBX provides great flexibility in binding your XML document structure to Java objects, so there are really many different ways you can represent this data using JiBX. For right now I'll stay with a Java object model that matches the XML document structure, and I'll just use plain Java data classes (fields only) to keep everything compact. Here's what these might look like for my customer document:

  public class Customer {
    public Person person;
    public String street;
    public String city;
    public String state;
    public Integer zip;
    public String phone;
  }
  
  public class Person {
    public int customerNumber;
    public String firstName;
    public String lastName;
  }

This is keeping almost all the data as Strings, with the exception of the customer number and the zip code. These are both values with natural representations as numbers, so I've gone ahead and expressed them that way in the Java classes. I used an int for the customer number because I can be sure I've got one of those. For the zip code I've instead used an Integer, as an example of a simple object type.

Figure 1 shows the XML document, the Java classes, and a JiBX binding that connects the two. I've highlighted in green the top-level connection between the customer element and the Customer class, linked by the mapping element in the binding definition; and in blue the connection between the person element and the Person class, linked by the structure element in the binding definition.

Figure 1. Simple binding example
Simple binding example

Digging into the binding

The mapping element in the Figure 1 binding definition relates the named element (in this case customer) to a particular class (Customer). JiBX uses the defined mapping as a default for both marshalling instances of the class and unmarshalling occurrences of the element. Mappings can be nested, in which case the inner mappings are only active while marshalling or unmarshalling with the outer mapping. Global mappings - ones which are not nested inside other mappings - define elements that can be root elements of the XML document, and classes that can be root objects of the object structure. In Figure 1, the mapping from element customer to Java class Customer is a global mapping.

The structure element in the binding definition defines the handling of an element or object class within a particular context. In this case the context of the structure element is the mapping from element customer to class Customer. The structure element is a very versatile player in JiBX binding definitions, with variations used for several purposes. In the Figure 1 binding it's playing its basic role, with both an element name and an object reference (to the person field of the Customer class) supplied. This works very similarly to a mapping definition, but is specific to the context rather than setting a general rule.

This can be a confusing issue. Since mapping and structure have a lot in common, why use one instead of the other? Well, there are cases where you have to use one or the other. The root element for a document to be unmarshalled must have a mapping, as must the class of a root object to be marshalled. On the other hand, there are things you can do with a structure element that you can't do with a mapping (some of which you'll see in a later section of this tutorial, Structure mapping). A good principle to start with is to use a mapping only for the root element of your document (or the class of your root object, whichever way you prefer to see this). Later in this tutorial you'll learn about other circumstances where a mapping should be used, but only using it for the root element/class works fine for now.

JiBX bindings include a number of elements with attributes that reference classes, such as the mapping element in the Figure 1 binding. In this tutorial I've kept the bindings as simple as possible by using the default package for all the sample classes. When you're using JiBX with your own classes you'll need to remember to use fully-qualified names for all your classes (with leading package information, such as org.jibx.runtime.Utility).

Just to finish up with the Figure 1 binding, besides the mapping and structure elements I've already discussed, all the other components of the binding definition are value elements. These are the grunt workers of the binding definition, handling a single text component. In XML terms, the text component may be an attribute, element, ordinary character data, or CDATA section. On the Java side, the text component may be a value of any primitive or object type that has a defined conversion to and from a simple String value (JiBX has a set of built-in basic conversions, and you can easily define extensions using static serialize and deserialize methods). In the Figure 1 binding, all the value elements are defining bindings between an XML element name and a corresponding Java class field.


libjibx-java-1.1.6a/docs/tutorial/binding-structures.html0000644000175000017500000004230611017733600023421 0ustar moellermoeller Structure mapping between XML and Java

Structure mapping

JiBX's binding definition file provides great flexibility for converting between XML documents and Java object structures. Other data binding frameworks generally limit customization to just the names and the style (attribute or element) of XML representations. JiBX goes further by allowing structure mapping between XML and object structures.

Figure 4 shows the same example as Figure 1. This basic type of binding, where the structure of the XML is the same as the structure of the Java objects, is typical of what's supported by most data binding frameworks.

Figure 4. Simple binding example
Simple binding example

What most frameworks will not allow you to do is to bring the values within the name element into the the object that corresponds to the customer element. In other words, you can't map the XML to this class:

  public class Customer {
    public int customerNumber;
    public String firstName;
    public String lastName;
    public String street;
    public String city;
    public String state;
    public Integer zip;
    public String phone;
  }

Nor can you map the XML to a pair of classes like these:

  public class Customer {
    public int customerNumber;
    public String firstName;
    public String lastName;
    public Address address;
    public String phone;
  }
  
  public class Address {
    public String street1;
    public String city;
    public String state;
    public String zip;
  }

JiBX does allow you to do this type of mapping. This means the structure of your objects is not tied to the structure of the XML - you can restructure your object classes without needing to change the XML format used for external data transfer. Figure 5 shows a binding definition for the first case above, with the changes shown in blue.

Figure 5. Flattened binding
Flattened binding

The only difference in this binding definition from Figure 4 is that I've removed the field attribute from the structure element. The structure still defines an XML element name, but without the field attribute the values within that XML element are treated as properties of the containing object (the Customer class instance).

Adding a new structure element to the binding definition handles the second structure change case, as shown in Figure 6. I've highlighted the changes from Figure 4 in green.

Figure 6. Split binding
Split binding

Here the added structure element uses a field attribute but no name attribute. This tells JiBX that the properties from the Address class instance referenced by the address field should be included directly as children of the customer element in the XML document.

As a final example of structure mapping, Figure 7 demonstrates partial mappings, where not all the components of the XML document or the Java classes are actually included in the binding. On the Java side, all that's needed is to leave something out of the binding defintion, as shown highlighted in blue for the Person class. On the XML side, the green highlighted portions of the diagram show how you can use a structure element in the binding definition with a name attribute but no property or child definitions. This tells JiBX to require an element with that name but ignore any content when unmarshalling. When marshalling, the element will always be generated as empty. If the structure is optional rather than required, the corresponding element will be ignored (if present) when unmarshalling and will be skipped completely when marshalling. See the <structure> element details page for more information on the different usages of the structure element.

Figure 7. Ignored components
Ignored components

The flexibility provided by structure mapping allows you to decouple your XML data representations from your actual Java class structure. It lets you interface existing code to new XML representations, and also lets you preserve an existing XML representation while refactoring your code to better represent the use of data within your application. This decoupling of XML structure from code structure is one of the most powerful features of the JiBX framework.


libjibx-java-1.1.6a/docs/tutorial/binding-tutorial.html0000644000175000017500000003567111017733600023050 0ustar moellermoeller JiBX: Bindings Tutorial

Binding definitions are the core of working with JiBX. In order to usefully apply JiBX to your applications you need to understand what can and can't be done in a binding definition. This tutorial is designed to give an overview of doing various types of binding operations in JiBX to help you get up to speed as quickly as possible. For full information on working with binding files, see the Binding Definition reference section of the documentation.

You can go through the tutorial in sequence using the forward links at the bottom of each page, use the menu to the left to browse by individual page, or use this table of contents to jump directly to a particular section of the tutorial:

The actual Java code, binding definition files, and XML documents for many of the examples are included in the JiBX distribution under the /tutorial directory. The /tutorial/index.html file gives a list of the specific examples provided.


libjibx-java-1.1.6a/docs/xsd2jibx/0000755000175000017500000000000011021525472016566 5ustar moellermoellerlibjibx-java-1.1.6a/docs/xsd2jibx/index.html0000644000175000017500000003235511017733602020574 0ustar moellermoeller Xsd2Jibx: Generating Code and Binding from Schema

What is Xsd2Jibx?

Xsd2Jibx gives you a way to generate an initial set of Java classes, and the corresponding JiBX binding definition, from a W3C XML Schema input document. The generated classes and binding give you a starting point for working with XML documents matching the schema, which you can then refactor as appropriate to suit your needs.

The current Xsd2Jibx code is very outdated, and generates bindings which are not well structured for use with current versions of JiBX. Xsd2Jibx is being replaced by new code which will be part of the core JiBX 1.2 distributions.

Module Name Primary Developer Status
xsd2jibx Dennis Sosnoski (beta 0.2 releases) Beta 0.2b release May 23, 2007
Cameron Taggart (alpha 0.1 release)

libjibx-java-1.1.6a/docs/bindcomp.html0000644000175000017500000006207411023301276017517 0ustar moellermoeller Using the Binding Compiler

Running the compiler directly

Once you have a binding definition, you need to compile the bindings into your class files with the JiBX binding compiler. The easy way to do this is to run the binding compiler straight from the supplied jibx-bind.jar file in the /lib directory of the distribution. For instance, if the JiBX installation is in /home/dennis and you're in the root of your application's class file directory with a binding file named binding.xml you can just run:

java -jar /home/dennis/jibx/lib/jibx-bind.jar binding.xml

JiBX will automatically include the current directory in the class load path when you run it this way. It'll need to have access to all the classes included in the binding definition, though, along with any superclasses of those classes, so you may need to include other class load root directories or jar files in the classpath. Unfortunately, this won't work properly when you run the binding compiler directly from the jar. You instead need to specify the compiler class directly, and include the jibx-bind.jar in your classpath as follows (in a single line, shown split here only for formatting):

java -cp .:lib/support.jar:/home/dennis/jibx/lib/jibx-bind.jar
    org.jibx.binding.Compile binding.xml

As when the binding compiler is run directly from the jar, you need to have the jibx-bind.jar file in the same directory as the other jar files from the /lib directory of the distribution for this to work correctly. Note that this is the Unix/Linux version of the command line; if you're (sadly) running Windows (or MS-DOS) you'll need to reverse the slashs and use ';' instead of ':' as a path separator character.

Without any options, the JiBX binding compiler won't print anything to the console unless there's an error in compiling the bindings. If you want to see a detailed list of classes modified or generated by the binding compiler you can pass an option of -v at the start of the arguments. This will output a listing of all classes included in the bindings, along with actual method information for each class (the methods and classes added by JiBX are easy to spot, since they all have names starting with "JiBX").

If you just want to validate the modified or generated classes without a detailed listing you can use an option of -l. This test-loads the effected class files into the JVM as the binding compiler is running. If it operates without an error you can be sure that the generated code obeys the rules enforced by the JVM specification. It's normally not necessary to take this step, but it serves as a good check if you encounter any class loading errors when using the code modified by JiBX. Any error reported with this option indicates a problem within the JiBX binding compiler operation. If this occurs you should check the Jira issue tracking system and create a new issue describing the circumstances of the error if it's not a duplicate of an existing issue. You can also check the Status page of the web site first to see if there's already a fix for the problem.

You can rerun the binding compiler at any time, and must rerun the binding compiler if you recompile any of the bound classes. If your class files have not been recompiled and the bindings haven't changed since the last time you ran the binding compiler it won't modify any of the classes. If you do change either the class files or the binding definitions only those classes effected by the change will be modified.

Binding compiler Ant task

If you're using Ant as a project build tool JiBX provides an even easier way of running the binding compiler, by using a custom Ant task. To make use of this in your Ant build.xml file you'll first need to add a custom task definition like this (with the jibx-lib property set to the appropriate path to the lib directory of your JiBX installation - but note that some versions of Ant may not work properly if the JiBX installation path contains a space character):

  <!-- JiBX binding compiler task definition -->
	<taskdef name="bind" classname="org.jibx.binding.ant.CompileTask">
    <classpath>
      <fileset dir="${jibx-lib}" includes="*.jar"/>
    </classpath>
  </taskdef>

Then you'll be able to invoke the binding compiler during the build process like this:

  <!-- Run JiBX binding compiler -->
  <bind verbose="true" load="true" binding="binding.xml">
    <classpathset dir="classes"/>
  </bind> 

One issue to note with the Ant task is that if you're using default values you'll need to include the jibx-run.jar from the distribution in the classpath passed when you invoke the task:

  <!-- Run JiBX binding compiler -->
  <bind verbose="true" load="true" binding="binding.xml">
    <classpath>
      <pathelement path="classes"/>
      <pathelement location="${jibx-lib}/jibx-run.jar"/>
    </classpath>
  </bind> 

Here's the full description of the attributes and nested elements supported by the JiBX Ant task:

Attribute Description Required
verbose Flag for JiBX compiler output. No
load Flag to specify whether or not to load generated files. No
binding Single binding file No*
bindingfileset FileSet of binding files No*
classpathset FileSet for bound class files Yes
* - either binding or bindingfileset must be supplied

Maven2 plugin

The Maven JiBX Plugin supports running the JiBX binding compiler as part of your Maven2 project. See the linked page for details.

Binding with Eclipse

If you're using Eclipse as your IDE, the re-released Eclipse plugin lets you easily integrate the JiBX binding step into your development. This new version of the plugin provides smart integration into the Eclipse environment. See the Eclipse plugin page for full details.

Binding with IntelliJ IDEA

If you're using IntelliJ IDEA as your IDE, the IDEA JiBX Plugin will integrate the binding step into your development, including binding validation support. See the linked page for details.

Binding with other IDEs

Running the JiBX binding compiler can be a problem when using IDEs without plugin support, since IDEs generally assume that they have total control over the compiled class files. If the IDE overwrites a class file which has been modified by the JiBX binding compiler the binding will no longer be usable. The solution is just to run the binding compiler again - but having to do that manually every time the IDE modifies the files can be painful, especially if the binding compiler cannot be run from inside the IDE.

Fortunately, most modern IDEs offer support for using Ant builds. If you include an Ant build.xml as part of your project, you can generally run a target within that build easily from your IDE. This technique works especially well if you set up a separate Ant build file with the binding compiler executed by the default target. There's a sample of this approach in the "starter" project provided in the JiBX distribution, which includes both a normal Ant build.xml with all the steps needed to build the project, and a separate build-binding.xml Ant build file intended for easy use of the binding compiler within an IDE. The remainder of this section uses the starter project to illustrate running the binding compiler through Ant within Eclipse.

Running an Ant target within Eclipse

It's reasonably easy to run an Ant target in a build.xml file within an Eclipse project. You can right-click on the build.xml file to get a context menu, select the Run As item, and the Ant Build... (click on this image for a full-size image):.

Run Ant build target from Eclipse

This brings up a dialog box, which allows you to select the specific build target to be executed, as shown below:

Select Ant build target to be executed

You can also use a separate Ant build for the JiBX binding compiler step, making the binding compiler target the default target for the build. This makes it simpler to run the target from Eclipse, since you can avoid the target selection dialog step from the above sequence. Just select Run As and then Ant Build from the context menu for the build file:

Run default Ant build target from Eclipse

This approach is flexible, in that you can run the binding compiler any time you want. It does require you to take a manual action to trigger the execution, but remember that you only need to run the binding compiler when you're actually going to use the bindings (as part of your debugging, for instance).

Defining a build step in Eclipse

Besides running an Ant target on command, you can make the execution of one or more targets from an Ant build part of the normal build of your project. To do this, go to the project properties (from the right-click context menu on the project name, or from the File menu with the project name selected) and select the Builders pane. From this you can then add an Ant build as a new builder for the project:

Add an Ant builder to a project

Just clicking OK brings up the builder properties dialog. On this dialog you can change the name of the builder from the default, and then click on Browse Workspace... under the Buildfile path to bring up a selection dialog:

Select the Ant build file

By default, an Ant builder will only run the default target for the build. If running the binding compiler is not the default target for the build, you can go into the Targets tab of the dialog to change the target to be run by the builder:

Select the Ant targets to be run

This step needs to be done for each form of activation of the builder (the different areas within the Targets tab). By setting the appropriate target for After a "Clean" the builder will be run everytime you execute a Clean... build (from the Project menu). This is especially useful for working on projects with other developers, where a clean build is

You can also set the target for Auto Build in order to run the binding compiler step every time a file is automatically recompiled by Eclipse, but this setting can be very intrusive. Since you only need to run the binding compiler when one of the classes included in the binding is modified, it's generally easier to just run the binding Ant build directly (using the Run As technique, described in the previous section) as needed, while using the builder approach to apply the binding on clean builds of the project.


libjibx-java-1.1.6a/docs/binding.dtd0000644000175000017500000004345011017733402017145 0ustar moellermoeller libjibx-java-1.1.6a/docs/binding.xsd0000644000175000017500000001447411017733402017174 0ustar moellermoeller libjibx-java-1.1.6a/docs/bindonload.html0000644000175000017500000004353511017733402020041 0ustar moellermoeller Bind on Load

Binding classes at runtime

JiBX also supports limited runtime binding of class files. This adds runtime overhead as compared to using the binding compiler directly during the build process, but can be convenient when you're experimenting with different binding definitions or going through repeated build-test cycles. At present, runtime binding only works with classes that are present in the classpath as individual class files (not in jars). It's also not designed for use in controlled environment such as servlet engines or application servers.

To use the runtime binding support, you need to execute the org.jibx.binding.Run class (from /lib/jibx-bind.jar) as the main class when starting the JVM, in place of whatever main class you'd normally give as the target. You can pass one or more binding definition files as command line arguments to this class, along with the name of your application main class and any command line arguments expected by your program. For example, if you normally run your application using the command line:

java -cp . com.myco.package.App arg1 arg2

and your JiBX installation is at /home/dennis/jibx, you'd run the application using runtime binding as follows (in a single line, shown split here only for formatting):

java -cp .:/home/dennis/jibx/lib/jibx-bind.jar org.jibx.binding.Run 
    -b binding.xml com.myco.package.App arg1 arg2

This tells the JVM to start execution with the org.jibx.binding.Run class, which will then use its own classloader to load your application classes, after first modifying the classes read from disk to reflect the binding.xml binding definition. Once the binding has been processed, JiBX will transfer control to your application main class (in this case, com.myco.package.App), passing the command line arguments just as if your application were executed directly from the command line. Note that this is the Unix/Linux version of the command line; if you're running Windows you'll need to reverse the slashs and use ';' instead of ':' as a path separator character.

Specifying the binding definitions

The runtime binding code supports several different ways of specifying the binding definition file or files to be used for your application. The first, and most direct, approach is to supply one or more -b file-path argument pairs before your application main class name on the command line. This is the approach used in the above example, with a single binding definition. To use multiple binding definitions this way, you need to give the -b argument before each individual file path.

The second approach is to give the path to a simple text file (not an XML file) that gives a list of binding definition file paths, with one binding file per line. This uses the -l argument as a flag, so if the binding file list is in a file named bindings.txt you could use the following command line to run your application with the named bindings (on Unix/Linux; if you're using Windows or MS-DOS you'll need to reverse the slashs and use ';' instead of ':' as a path separator character):

java -cp .:/home/dennis/jibx/lib/jibx-bind.jar org.jibx.binding.Run
    -l bindings.txt com.myco.package.App arg1 arg2

The third way is to give the binding definition(s) as resources loaded from the classpath, rather than as actual file paths. The advantage of doing things this way is that the binding definition(s) can be kept with your actual class files (or with the source files, and copied during build to the same directory as your class files). This uses the -r argument as a flag for each binding definition to be loaded as a resource, followed by the actual resource path. For example, if your binding file is kept with your main class you could use a command line of this form to run it:

java -cp .:/home/dennis/jibx/lib/jibx-bind.jar org.jibx.binding.Run
    -r /com/myco/package/binding.xml com.myco.package.App arg1 arg2

All three of the above techniques can be used in any combination on the command line (though it's difficult to imagine actually needing to do so!).

Finally, you can instead use implicit binding definition resources. When you do this you don't need any command line arguments for JiBX (though you still need to specify the org.jibx.binding.Run as your main class) except for the application main class name and any arguments to be passed to that class:

java -cp .:/home/dennis/jibx/lib/jibx-bind.jar org.jibx.binding.Run
    com.myco.package.App arg1 arg2

In this case JiBX goes through the following sequence of steps to find the binding definition resource(s) to be applied:

  1. Look for a resource named jibx_bindings.txt that gives a list of bindings (one per line) to be loaded as resources,
  2. If not found, construct a resource path by using the package path for your application main class and appending _jibx_bindings.txt to the main class name. For the sample I've been using throughout this description the resulting path would be /com/myco/package/App_jibx_bindings.txt. If this resource is found, it's interpreted as a list of bindings (one per line) to be loaded as resources,
  3. If not found, look for a single binding definition file named jibx_binding.xml and use that binding,
  4. If not found, construct a resource path by using the package path for your application main class and appending _jibx_binding.xml to the main class name, and use that binding. For the sample application this path would be /com/myco/package/App_jibx_binding.xml.

libjibx-java-1.1.6a/docs/bugs.html0000644000175000017500000003537211017733402016670 0ustar moellermoeller JiBX: Bugs and Bug Reporting

Known issues

There's a known inconsistency in the way certain combinations of optional components are handled. This is not really a bug, but rather an ambiguity in the way optional items are interpreted. It's likely to remain until JiBX 2.0:

  • Optional structures are not handled consistently unless they have an associated property value. In other words, structures that just define a wrapper element around some content that's part of a containing object won't always work as expected if you make them optional. This creates problems in trying to wrap text or CDATA values with elements to make them optional using binding constructs like:
    <structure name="wrapper" usage="optional">
      <value style="cdata" field="m_rawText" usage="optional"/>
    </structure>
    The result is that if the m_rawText field is null an empty <wrapper> element will be generated when marshalling, which will then be converted to an empty string value when unmarshalling. There is a work-around for this, which is to use a test-method on the structure. The test method can check if the field value is null, and if so return false.

This list will be updated on the web site if major new issues are found, but please check the issue tracking system (described below) for the latest problem information.

Reporting Problems

If you run into problems with the code please check existing bug reports for information on fixes, and enter a new bug report if you don't find one matching your problem. JiBX uses the Jira issue tracking system hosted by The Codehaus. Please note that JiBX is not otherwise affiliated with The Codehaus, and other aspects of the project remain hosted on SourceForge. You can browse the Jira bug list without restriction, but will need to register in order to enter new issues.

You can help make sure your problem is addressed quickly and completely by attaching sample code to demonstrate the problem. The sample code should be packaged as a zip or tar.gz file, and should include an Ant build.xml script to compile the code, run the binding compiler, and (for runtime problems) execute a test of the binding. The starter example included in the JiBX distribution shows how this can work.

For general help on using JiBX you can check the FAQ, the new Wiki, and the mailing lists.


libjibx-java-1.1.6a/docs/building.html0000644000175000017500000003627611017733402017531 0ustar moellermoeller JiBX: Building

Building JiBX

To build JiBX, either from the distribution or from a CVS image, use the Ant build.xml file in the /build directory. The default Ant target compiles the full JiBX code with debug information enabled, runs the full set of tests, and creates the actual distribution zip file. The "testing" target just rebuilds the jars (in the /lib directory) and runs the tests. The "small-jars" target builds the jars with debug information turned off (useful if the jar sizes are a concern for your project).

As of the 1.1 release, the Ant build also supports a "j2me" target. This uses the JEnable tool to selectively disable portions of the JiBX source code in order to build a distribution that's compatible with J2ME environments. The jar files generated by this target (which go in the /lib directory of the JiBX distribution, just like the standard jars) all include "-j2me-" in their names in order to distinguish them from the standard JiBX jars. The "j2me" target compiles with debug information enabled in order to keep jar sizes to a minimum.

Note that the JiBX source code repository contains classes which are not actually used in the current JiBX distribution, and these classes may not even compile properly. The Ant build specifies which classes to include and exclude when compiling the project. If you use an IDE or other tool to build JiBX, you will need to exclude the unused source files from your project. Most modern IDEs will allow you to create a project based on an Ant build, and this is generally the best way to start out.

The Ant build looks for dom4j.jar and jdom.jar files in the /lib directory. If these jar file are present the build will include the classes in the jibx-extras.jar that support working with these document models. If the jars are not found these classes will be missing from the generated jibx-extras.jar. Additionally, building the JavaDocs without these jars will result in some error messages. These error messages can be ignored.

The build has been tested on JDK versions 1.3, 1.4, and 1.5. JDK 1.3 does not include the JAXP library (used by the JiBX extras code for DOM document model support) in the distribution, so to build with JDK 1.3 you need a JAXP implementation. As a convenience, the supplied build file will look for Xerces jar files in the /lib directory and include these in the classpath if the jars are present. The jar files needed for this purpose are xercesImpl.jar and xml-apis.jar.

To build the internal JavaDocs, use the Ant "devdoc" target. This will generate the full JavaDocs for all JiBX code (rather than just the user-visible classes included in the normal JavaDocs) to the /build/docs/dev directory.

If you're building JiBX within an IDE environment, you can use the Ant build-binding.xml file in the /build directory to compile the JiBX bindings used by the binding compiler itself. You'll need to recompile these bindings any time classes in the org.jibx.compiler.model package are recompiled by the IDE.


libjibx-java-1.1.6a/docs/clean-code.html0000644000175000017500000003602011017733402017711 0ustar moellermoeller JiBX: Clean Code with JiBX

Clean code

Most data binding frameworks are XML-centric. You start with a grammar for your XML documents (usually in the form of a W3C XML Schema) and use that to generate a set of classes that match the XML structure. With some frameworks you can subclass the generated classes, in others you may be able to implement generated interfaces in your own classes and use these classes in place of the generated ones. Either way, you still need to match the class structure expected by the binding framework.

JiBX is deliberately Java-centric. It does not force a structure on your Java classes, other than that there be some reasonable way of linking particular properties of class instances to components of the XML document. This lets you define classes that match your needs, not just the (often arbitrary) structure of the XML. It also lets you refactor your code over time without needing to change the XML structure each time to match.

This is an especially important feature because it allows you to use true object-oriented structuring of your code. The frameworks that force you to work with a generated set of classes generally limit you to using JavaBean-like objects - basically just collections of fields with get and set methods added, only cosmetically different from a C-language "struct". True object-oriented programming requires combining behavior with state (data), and hiding as much of the internal state as possible from clients of an object. JiBX is designed to encourage this style of development.

JiBX also avoids cluttering your Java source files with generated code. Because it uses class file enhancement rather than source code generation, it can stay out of your way - you normally won't even see the JiBX code at all unless you use reflection on the enhanced classes (though it's possible to decompile the enhanced classes to get source, if that's what you really want).

This doesn't mean that JiBX is ideal for all applications. Code generation from a schema instance is a great way to get started quickly on working with a particular type of XML document. Code generation also helps assure that your code always matches the XML document structure, and many of the code generation approaches allow for full validation against the document grammar.

In the future it'd be great to add support for code (and binding definition) generation to JiBX, and nothing in the design in any way prevents this from being done (in fact, see the Xsd2Jibx and Generator Tools subprojects for the current work in these areas). We're also planning to support J2SE 5.0 annotations for embedding simple binding definitions directly in the source code. An annotation-based approach will not allow the same level of flexibility as provided by a binding definition file, but will be convenient for users who want to keep a close correspondence between their Java class structure and the XML representation.


libjibx-java-1.1.6a/docs/comments.html0000644000175000017500000003660311017733402017553 0ustar moellermoeller JiBX: User Comments

Comments from JiBX users

Speed and accuracy are crucial to Travelocity - delays of even a few seconds can mean lost customers and lost revenue. As XML has become an increasingly important element of modern e-commerce, JiBX plays a key role for parsing and handling critical flight, hotel and rental car details each day.

Barry Vandevier, Chief Technology Officer, Travelocity


We have been using JiBX for several years in our production systems for transfering critical data to our backend servers. JiBX allowed us to embrace XML transparently: JiBX is very fast, low overhead, and its binding definitions make it flexible. We liked so much its flexibility that we have been using XML files and JiBX in a recent project instead of a database for some specific data. And that choice saved us lots of time for evolving the data through the development of the project.

Henri Dupre, Actualis Center


JiBX provides lightening quick mapping of data from xml to java classes and vice versa. Using JiBX-soap allowed us to reduce the communications overhead of calling our web services down to a handful of milliseconds.

Tim Sawyer, pancredit systems limited


The scenario I was confronted with was that persistence functionality based on XML data output should be added to code already in heavy use. It only took a quick glance on some tutorials of XML data binding frameworks to figure out that JiBX was the choice for me. The decisive point clearly was flexibility and with the JiBX binding framework I managed to add the required functionality with minimum effort and only unsignificant changes to the existing code. The result is a highly performant solution meeting the demands made on software used in a scientific environment.

Tilman Linden, Fraunhofer-Gesellschaft


I am impressed by the flexibility and responsiveness of a product in such beginning stages. I have successfully incorporated JiBX with our Java based object model and have been able to offer my users a more generic and efficient xml binding framework and generation tool.

Simone Swieca, JPMorgan


When I was tasked with adding XML support to our project, I dreaded the re-work required to get the two technologies to integrate. JiBX solved the problem fast; not only was there no code changes required but JiBX reads and writes XML faster than our normal save routines. Highly recommended for any project using Java and XML.

Thomas Jones-Low, Softstart Services Inc.


Sync4j, the open mobile application server, uses JiBX since it combines production grade quality and performance with an easy development integration process. It allows Sync4j to focus on SyncML and I recommend projects with similar requirement to use JiBX also.

Harrie Hazewinkel, Sync4j


We use JiBX for converting Java Objects into XML Documents that are then sent to a variety of web services in the telecommunications industry. We wanted a technology that allowed us to make XML Code that is correct to a schema and can be loaded to our objects; JiBX was the best that we found. It's fast and surprisingly easy to use. We will definitely be using JiBX technology in the future.

Daniel Lewis, Lifecycle Software Ltd.



libjibx-java-1.1.6a/docs/contributing.html0000644000175000017500000004642611017733402020441 0ustar moellermoeller JiBX: Contributing

Areas for extension

Current plans for the JiBX 1.X series call for a 1.2 release which will integrate stable versions of the Xsd2Jibx and Generator Tools subprojects into the JiBX distribution. JiBX 2.0, featuring a rewritten code generator and improvements to the runtime design, is just getting started. For both 1.2 and 2.0 the work involved requires in-depth knowledge of the code and is not something where new developers are likely to be able to become directly involved.

Even so, there are several areas where interested developers can make important contributions to the JiBX project:

  • Clean up the Ant task code. This currently uses some deprecated Ant methods, and doesn't support all the options you'd expect in terms of structuring the file sets.
  • Build a GUI Wizard front-end for the binding generator. The binding generator is undergoing some major enhancements in preparation for the 1.2 release, including the addition of an XML configuration file for control information (replacing the lengthly list of command line parameters now in use). A Wizard could initialize settings from an existing configuration file, then save the file and pass it to the actual binding generator code when the user is done making their choices.
  • Provide an adapter for JiBX to be used with Spring (or other favorite IoC framework).
  • Set up JUnit tests that complement or replace many of the blackbox test cases in the /build/test tree of the distribution, using the bind-on-load approach so class file don't need to be modified on the disk. Testing error conditions in bindings would be especially useful, since the current tests are all designed to compile and execute correctly.

In the future, another interesting project will be integrating XML Binary Infoset representation (XBIS) support into JiBX for extremely fast document transfer. One preliminary step in this direction is extending XBIS with an XMLPull encoder and decoder, so that's another related project that someone could take on.

If you're interested in working in any of these areas (or have your own ideas for extending JiBX) check first on the jibx-dev email list to see if anyone else is already working in the same area.

Contributor license agreement

If you're interested in becoming an active part of the JiBX team you'll need to fill out and return the Contributor License Agreement, below. It's not necessary for developers who are only contributing patches or bug fixes to fill out this agreement, but you'll be asked to state your acceptance of the agreement with respect to any code you submit.

JiBX committers, please complete this Agreement and mail it to The JiBX Project, 6 Ocean Road, Paraparaumu Beach 6010, Wellington, New Zealand. Please read this document carefully before signing, and keep a copy of the signed agreement for your records.

If you have any questions, please contact Dennis Sosnoski.

---------------- cut here ----------------

The JiBX Project

Contributor License Agreement

Thank you for your interest in The JiBX Project (the "Project"). In order to clarify the intellectual property license granted with contributions of software from any person or entity (the "Contributor"), the Project would like to have a Contributor License Agreement on file that has been signed by the Contributor, indicating agreement to the license terms below. This license is for your protection as a Contributor of software to the Project and does not change your right to use your own contributions for any other purpose.

If you have not already done so, please complete this Agreement and mail it to The JiBX Project, 6 Ocean Road, Paraparaumu Beach 6010, Wellington, New Zealand. Please read this document carefully before signing, and keep a copy of the signed agreement for your records.

Full name:_______________________ E-Mail:__________________

Mailing Address:_________________ Telephone:_______________

_________________________________ Facsimile:_______________

_________________________________ Country:_________________

You and the Project hereby accept and agree to the following terms and conditions:

1. Your "Contributions" means all of your past, present and future contributions of object code, source code and documentation to the Project, however submitted to the Project, excluding any submissions that are conspicuously marked or otherwise designated in writing by You as "Not a Contribution."

2. You hereby grant to the Project a non-exclusive, irrevocable, worldwide, no-charge, transferable copyright license to use, execute, prepare derivative works of, and distribute (internally and externally, in object code and, if included in your Contributions, source code form) your Contributions. Except for the rights granted to the Project in this paragraph, You reserve all right, title and interest in and to your Contributions.

3. You represent that you are legally entitled to grant the above license. If your employer(s) have rights to intellectual property that you create, you represent that you have received permission to make the Contributions on behalf of that employer, or that your employer has waived such rights for your Contributions to the Project.

4. You represent that, except as disclosed in your Contribution submission(s), each of your Contributions is your original creation. You represent that your Contribution submission(s) include complete details of any license or other restriction (including, but not limited to, related patents and trademarks) associated with any part of your Contribution(s) (including a copy of any applicable license agreement). You agree to notify the Project of any facts or circumstances of which you become aware that would make Your representations in this Agreement inaccurate in any respect.

5. Your Contributions are provided as-is, with all faults defects and errors, and without warranty of any kind (either express or implied) including, without limitation, any implied warranty of merchantability and fitness for a particular purpose and any warranty of non-infringement. The Project is not obligated to accept your Contributions, and even if your Contributions are accepted into the Project they may later be removed at any time and without any notice.

Please sign: _____________________________ Date: __________

---------------- cut here ----------------

This contributor license agreement is based on the license used for the Apache Jakarta project, published at http://jakarta.apache.org/site/agreement.html


libjibx-java-1.1.6a/docs/extras.html0000644000175000017500000006774211017733402017244 0ustar moellermoeller JiBX extras

JiBX extras

The /lib/jibx-extras.jar provides a number of optional (but useful) classes you may want to use in your JiBX work. These classes are described on this page. To use them, you'll need to include the jar in your runtime classpath.

Roundtripping documents

Binding definitions can be complex to construct and verify. It's often useful to try some tests with a new binding to make sure it's working the way you expect. In general this is going to require application code to verify that documents are being marshalled and/or unmarshalled as expected, but you can try some simple tests just using the code included with JiBX along with your bound classes.

To support this JiBX includes a pair of classes in the "extras" jar. The org.jibx.extras.DocumentComparator class provides an easy way of comparing two XML documents. It uses a pair of parsers to read the documents in parallel, comparing the streams of components seen from the two documents. The comparison ignores differences in whitespace separating elements, but treats whitespace as significant within elements with only character data content. It also ignores comments and processing instructions included in the documents, since these are normally not processed by JiBX.

The org.jibx.extras.TestRoundtrip class builds on this support, using the DocumentComparator to compare the results of a round-trip conversion. It first unmarshals an input document using your binding definition and classes, then marshals the resulting object structure to an output document. It ends with comparing the original documents with the output document, reporting an error if they down match.

In order to make running a roundtrip test as simple as possible the TestRoundtrip class is the main class for the jar file. To run a roundtrip test with your bound classes and a sample XML document file you just need to go to the root directory of your application class structure and run the command (as a single line, show split here only for formatting):

java -jar jibx-root/lib/jibx-extras.jar
    org.jibx.extras.TestRoundtrip class-name sample.xml

where jibx-root is the path to the root directory for the JiBX distribution on your system, class-name is the fully-qualified name (including the full package specification, so com.sosnoski.site.Menu to name the Menu class within the com.sosnoski.site package) for the expected root unmarshalled object, and sample.xml is the sample document file.

This technique of running TestRoundtrip directly from the jar only works when all the classes needed by your application are available as separate class files (rather than jars or such) within a single directory structure. TestRoundtrip automatically includes the current execution directory in the classpath for loading your files (along with the jar files used for the JiBX runtime), so this works well for simple applications. For applications that need classes from jars or other directories you need to instead run TestRoundtrip directly using a command line like (on Unix/Linux; if you're using Windows or MS-DOS you'll need to reverse the slashs and use ';' instead of ':' as a path separator character):

java -cp jibx-root/lib/jibx-extras.jar:lib/lib1.jar:lib/lib2.jar:.
    class-name sample.xml

This allows you to include any required library files in the classpath you define for the JVM (in this case lib/lib1.jar and lib/lib2.jar).

You can also use TestRoundtrip in combination with the bind-on-load feature, which can be especially useful when you're experimenting with binding definitions to use with your classes and documents. Here's the equivalent to the first of the above command lines, but this time using the binding.xml binding definition for the test:

java -cp .:jibx-root/lib/jibx-bind.jar:jibx-root/lib/jibx-extras.jar
    org.jibx.binding.Run -b binding.xml org.jibx.extras.TestRoundtrip class-name sample.xml

The direct comparison provided by using DocumentComparator to match the input document against the output document isn't always an appropriate test. Some types of binding definition constructs (such as default values, or unordered child elements) can cause the output to differ from the input even though both are equivalent in terms of the binding. To handle this type of situation, TestRoundtrip allows you to supply a third command line parameter giving the name of a separate comparison document to be matched against the output. It also allows multiple sets of arguments for testing more than one binding at a time - see the JavaDocs or source code for details.

If the result of running TestRoundtrip is a successful comparison it just exits silently. If there's an error in the comparison, it prints out the error information to the console and saves a copy of the generated output document as temp.xml in the working directory.

Map handling

Another useful class in jibx-extras.jar supports marshalling and unmarshalling of java.util.Map instances. This is the org.jibx.extras.HashMapperStringToComplex class. The support it provides is limited to maps with java.lang.String keys and object values with mappings defined by the binding (using <mapping> elements), and the only flexibility it provides is in choosing the name of the root element, but it's still useful for many cases. It's also intended as a sample implementation that can be modified for your own particular requirements. For more discussion of both this specific code and the use of custom marshallers and unmarshallers in general, see the binding tutorial section on Custom marshallers and unmarshallers.

The implementation included in jibx-extras.jar includes some nice customization features. By subclassing this implementation in your own code you can override the default names used for the item wrapper element and the key attribute, as well as control whether an item count is included and the name used for that attribute if so. There's also an alternative handler for maps with value objects that correspond to simple schema types (such as java.lang.String, java.lang.Integer, java.util.Date, etc.). This is the org.jibx.extras.HashMapperStringToSchemaTyp class. See the Javadocs for details on both of these classes.

ID and IDREF handlers

The org.jibx.extras.IdRefMapperBase and org.jibx.extras.IdDefRefMapperBase classes support special handling of objects using ID and IDREFs. These differ from the other classes in jibx-extras.jar in that they're abstract base classes which need to be subclassed by the user in order to construct usable marshaller/unmarshallers. The flexibility they provide is often worth the extra effort, though.

org.jibx.extras.IdRefMapperBase lets you use IDREF values directly in a collection, which is not supported by the basic JiBX code. It expects the XML structure for each item to be an element with no content and a single attribute giving the IDREF value (like ). When a subclass is used as the marshaller/unmarshaller for a structure within a collection the referenced objects will be converted to and from the XML IDREF representation. Subclasses can also be used as marshaller/unmarshallers outside of a collection, but in this case you could just as easily use an IDREF value directly. This class only works with IDREF values which have been defined before the point of reference.

org.jibx.extras.IdDefRefMapperBase is even more flexible. Subclasses can be used as marshaller/unmarshallers which will use a smart representation for objects, marshalling the full XML expression of an object the first time it's referenced and thereafter using only an IDREF representation (and unmarshalling the same type of structure).

Both of these classes define an abstract method which must be implemented by subclasses. The abstract method links the base class code to a particular object type, allowing the base code to load the ID value from an object instance. You can also override another method to control the name of the ID/IDREF attribute. See the Javadocs for details on both of these classes.

Versioned bindings

The org.jibx.extras.BindingSelector class supports marshalling and unmarshalling documents with different binding versions. As with the above classes, the support it provides is limited but useful. In the case of BindingSelector, the root element of the document needs to have some attribute that identifies the particular version used for a document. The version attribute value is used to select the binding to be applied when unmarshalling a document, and a supplied version can also be used when marshalling a document. See the binding tutorial section on Controlling JiBX with front-end code for full details.

Using document models

The extras also include marshaller/unmarshaller classes that allow you to use document models for portions of your documents. This can be useful in situations where documents can contain extension information that's not well structured, or where you need to work with XML document components (such as comments or processing instructions) that are not easily handled with data binding. The classes included currently support dom4j and W3C DOM models.

The dom4j support is provided by the org.jibx.extras.Dom4JElementMapper and org.jibx.extras.Dom4JListMapper marshaller/unmarshaller classes. To make use of these you'll need to separately download the dom4j library from the project web site, since this is an optional add-on that's not included in the JiBX distribution. The classes have been tested using the current dom4j release 1.4, but should be compatible with both older and future versions since the dom4j APIs are stable.

Dom4JElementMapper works with a single element, which may be optional or required in your binding definition. When unmarshalling it creates an instance of org.dom4j.Element to hold the content of that element, and when marshalling it requires that the object you supply is of that type. If you specify an element name when you use this in your binding definition that name will be matched when unmarshalling.

Dom4JListMapper works with a linked object type that implements java.util.List (the actual runtime type - as with Dom4JElementMapper the declared type in your binding definition is ignored and can be anything). When unmarshalling it will create an instance of java.util.ArrayList if a list is not passed in and any content is present, then return with all the content up to the close tag for the enclosing element added to the list as the appropriate types of dom4j components. When marshalling, it will simply write out any content in the list you provide directly (where the items in the list must be dom4j components).

The DOM support is provided by the org.jibx.extras.DomElementMapper, org.jibx.extras.DomListMapper, and org.jibx.extras.DomFragmentMapper marshaller/unmarshaller classes. These all make use of the JAXP API support included in recent version of the Java platform. They have been tested with the version of JAXP included with the Java 1.4.2 JRE from Sun Microsystems, but should be compatible with most versions of JAXP (despite being a "standard extension", versions of JAXP have been known to include broken code and/or incompatibilities between versions; it was used in this case mainly because it's bundled with the JRE and does not require a separate download).

DomElementMapper works with a single element, which may be optional or required in your binding definition. When unmarshalling it creates an instance of org.w3c.dom.Element to hold the content of that element, and when marshalling it requires that the object you supply is of that type. If you specify an element name when you use this in your binding definition that name will be matched when unmarshalling. Since the DOM API requires that each document component belongs to a particular document, this will create a org.w3c.dom.Document each time an instance of this marshaller/unmarshaller class is created.

DomListMapper works with a linked object type that implements java.util.List (the actual runtime type - as with the other marshaller/unmarshaller classes in this group the declared type in your binding definition is ignored and can be anything), while DomFragmentMapper works with an instance of org.w3c.dom.DocumentFragment. When unmarshalling, each of these will create an instance of the appropriate type (using java.util.ArrayList for DomListMapper) if one is not passed in and any content is present, then return with all the content up to the close tag for the enclosing element added to that instance as the appropriate types of DOM components. When marshalling, they will simply write out any content in the list or fragment you provide directly (where the items in the list must be DOM components). As with DomElementMapper, these will create a org.w3c.dom.Document each time an instance of the marshaller/unmarshaller class is created.

Future support is likely for JDOM and XOM document models, once these have stable APIs defined.

Document model output

Since 1.0 RC1 JiBX includes an alternative to the standard output writers that instead of marshalling into an OutputStream or Writer creates a document model. Currently there is an implementation for JDOM, although other implementations like dom4j and W3C DOM are possible.

In order to use the JDOM implementation JDOMWriter you need to put jdom.jar into your classpath. You should use release 1.0 available from http://www.jdom.org/.

There a three different usage patterns for JDOMWriter. The first one is the equivalent of marshalling into e.g. a StringWriter. It creates a new JDOM Document on every run:

     IBindingFactory bfact = BindingDirectory.getFactory(clazz);
    IMarshallingContext mctx = bfact.createMarshallingContext();
    
    JDOMWriter jdomWriter = new JDOMWriter(mctx.getNamespaces());
    mctx.setXmlWriter(jdomWriter);
    mctx.marshalDocument(example);
    mctx.endDocument();
    
    Document document = jdomWriter.getDocument();

(You need to change "clazz" and "example" of course.)

The other two possibilities are appending to an existing Document's root node or to an existing Element (possibly deeply nested within a Document). The only thing that changes in the code fragment above is the JDOMWriter constructor you need to use. You need to pass it your existing Document or Element instance as second parameter.

The resulting Document can be used as you like. Refer to the JDOM documentation for more information. Wrapping it into a JDOMSource e.g. could be the input to a XSLT transformation.


libjibx-java-1.1.6a/docs/faq.html0000644000175000017500000005203711017733402016474 0ustar moellermoeller JiBX: Frequently asked questions

Answers

Q. What does it mean when I get java.lang.IncompatibleClassChangeError thrown while trying to compile a binding?
A. This is caused by having an older version of the Apache BCEL library somewhere in your classpath ahead of the JiBX libraries. It usually occurs when using the Ant binding task, because Ant often includes an XSLT library named xsltc.jar in the classpath, and this library uses BCEL. It could also occur outside of Ant if you have xsltc.jar in your Java installation's /lib/ext directory. xalan.jar can also cause the same problem, and for the same reason.


Q. What does it mean when I get org.jibx.runtime.JiBXException: Unable to access binding information for class ... thrown while trying to run my application with JiBX?
A. This means your class files (or at least the one for the class you asked the org.jibx.runtime.BindingDirectory to look up) haven't been processed by the JiBX binding compiler. Check your build process and make sure you're doing the binding compiler step. This problem has been known to occur in some IDEs when the IDE uses a different location for compiled class files from what is used by an Ant build script or manual build process.


Q. Why do I get a java.lang.NullPointerException when I try to marshal a document?
A. The most likely cause is that you've got a null value for an object that's not marked as optional in the binding definition. JiBX trusts what you tell it, so if you don't say an object property is optional the generated code won't check for a null. To isolate the cause of this type of problem, look through the stack trace (starting at the top) for the first class name from your code. This will normally be the class that contains the null property. You can then verify the binding definition for that class. If it's not obvious which property is causing the problem, add a pre-get method to that class for debugging purposes which checks if any of the non-optional object properties used by the binding are null (throwing an exception when it finds a null, with any added information you want to see). This will let you find out all the details of the problem so that you can fix either the code or the binding, whichever is wrong.


Q. How can I control the package used for the classes generated by JiBX (including the binding factory class or classes, and the JiBX_MungeAdapter.class)?
A. You can control the package used for the binding factory class for a binding by using the package attribute of the binding element. The JiBX_MungeAdapter.class is only generated if needed. When needed, it's created in the package of the first mapping class which is both modifiable (a class defined in its own file, rather than in a jar file) and not an interface. If you need this to be in a particular package (as may happen when you're binding classes that have package access), include a mapping for one of the classes in this package before any other mappings in the binding definition, and if you're compiling more than one binding make the one with this mapping the first one in the list. If necessary, you can compile bindings in multiple sets to get more than one JiBX_MungeAdapter.class in different packages. This only works if you have bindings with no overlapping packages, though - otherwise running the binding compiler twice with different sets of bindings will cause information from the first set to be lost.


Q. Does JiBX work with other bytecode modification techniques, such as JDO or Hibernate?
A. Yes, JiBX works well with other frameworks which build on bytecode modification. In the case of JDO you'll generally need to run the JiBX binding compiler before you run the JDO bytecode enhancement, since the latter may need to intercept field accesses from the JiBX code. In the case of Hibernate this is not an issue, since Hibernate only uses runtime bytecode enhancements; however, you will generally need to have JiBX use get/set methods rather than directly access fields with working with Hibernate.


Q. Which JDK versions are supported by JiBX?
A. JiBX has been tested on JDK versions 1.3, 1.4, and 1.5. There are some minor differences on the build for JDK 1.3, but these differences do not effect the runtime operation.


Q. Is there a DTD or schema available for the binding definitions?
A. The /docs directory of the distribution includes both a DTD (binding.dtd) and an XML schema (binding.xsd) for the binding definitions. These will hopefully be kept up to date, but the definitive reference for the binding definition format is the HTML documentation.


Q. How can I get support or training for JiBX?
A. Glad you asked! I (Dennis Sosnoski, Lead Developer and Instigator-in-Chief for JiBX) provide Java XML and Web services consulting, training, and support through my company, Sosnoski Software Associates Ltd. You can contact me directly for priority paid support via email or telephone (+64 4 298-6117 for my New Zealand office line). Of course, you can also use the email lists for free support, though that may take longer to get an answer (lunch is free; table service costs extra).


Q. I want to use JiBX data binding with Axis2. How can I learn more about this combination?
A. There's an Axis2 subproject page on this site which provides some basic information and links, and that page will be expanded to include more information for the upcoming JiBX 1.2 beta release. Beyond that, I offer an Apache Axis2 training class that covers all three major data binding frameworks supported by Axis2, including JiBX. Depending on your needs, the class can be customized to provide more in-depth coverage of the JiBX framework, and can also include coverage of JibxSoap. This class can also be combined with my SOA developers training class for organization that are moving to a SOA structure and want to use JiBX in this context.


Q. Where can I find more information or examples?
A. There are searchable archives for the JiBX mailing lists, at the Mail Archive (jibx-users and jibx-devs) and MARC: Mailing List Archives at AIMS (jibx-users, jibx-devs, and jibx-cvs). You're welcome to ask questions on the mailing lists (especially the jibx-users list), but it's always a good idea to check the archives first before asking a usage question, just in case it's already been discussed. The archives are public, but you must subscribe to each list before you can post to that list.


libjibx-java-1.1.6a/docs/flexibility.html0000644000175000017500000003413411017733402020247 0ustar moellermoeller JiBX: Flexibility with JiBX

Flexibility

The mapping JiBX applies in converting between your classes and XML is specified by a binding definition. The binding definition lets you control such basic details as whether a particular simple property of a class (such as a primitive value, or a String) is mapped to an element or an attribute in the XML document, and the name used for that element or attribute. You can also tell JiBX how to access that property - either as a field (which can have any access qualifier, including private) or as a JavaBean-style property with get and set methods. You can even specify values as optional, and define serializers or deserializers for converting simple values to and from text.

JiBX goes beyond this simple form of mapping, though. Other data binding frameworks generally force each XML element with complex content (attributes, or child elements) to be mapped to and from a distinct object, so that your object structure directly matches the layout of your XML documents. With JiBX you can be more flexible - child elements can be defined using a subset of the properties of an object, and properties of a referenced object can be included directly as simple elements or attributes of the current element. This lets you make many types of changes to either your class structure or your XML document structure without needing to change the other to match.

There are limits to the flexibility provided by JiBX, but by giving you the ability to adapt to changes it helps insulate both sides of the Java-XML binding from changes in the other side. This is especially useful for new projects where XML document interchange formats may need to be defined early on, while the application code is still undergoing development. The binding definition allows you to refactor your code without effecting other components using the same XML documents. For more details, see the Structure mapping discussion in the Binding Tutorial.


libjibx-java-1.1.6a/docs/index.html0000644000175000017500000003755511017733402017044 0ustar moellermoeller JiBX: Binding XML to Java Code

What is JiBX?

JiBX is a framework for binding XML data to Java objects. It lets you work with data from XML documents using your own class structures. The JiBX framework handles all the details of converting your data to and from XML based on your instructions. JiBX is designed to perform the translation between internal data structures and XML with very high efficiency, but still allows you a high degree of control over the translation process.

How does it manage this? JiBX uses binding definition documents to define the rules for how your Java objects are converted to or from XML (the binding). At some point after you've compiled your source code into class files you execute the first part of the JiBX framework, the binding compiler. This compiler enhances binary class files produced by the Java compiler, adding code to handle converting instances of the classes to or from XML. After running the binding compiler you can continue the normal steps you take in assembling your application (such as building jar files, etc.). You can also skip the binding compiler as a separate step and instead bind classes directly at runtime, though this approach has some drawbacks.

The second part of the JiBX framework is the binding runtime. The enhanced class files generated by the binding compiler use this runtime component both for actually building objects from an XML input document (called unmarshalling, in data binding terms) and for generating an XML output document from objects (called marshalling). The runtime uses a parser implementing the XMLPull API for handling input documents, but is otherwise self-contained.

This approach gives several important benefits:

  1. Flexibility - Use any class structure you want, so long as you can tell JiBX how to translate it to and from XML.
  2. Performance - Pull parsing and class file enhancement techniques let JiBX build high-performance marshalling and unmarshalling code directly into your classes.
  3. Clean code - You write the code and JiBX works with it, not the other way around!

We're not aware of any recent published performance comparisions between data binding frameworks, but you can view some older results from the BindMark tests, along with a similar study focused around Web services performance.. These sets of results are both from late 2005, but to our knowledge there haven't been any significant changes in performance since then.

You can also see the earlier performance study by JiBX author Dennis Sosnoski, Data Binding, Part 2: Performance, on the IBM developerWorks XML Zone. Besides these performance issues, Dennis has also covered the JiBX 1.X code generation architecture, and several aspects of the JiBX 2.0 design, in his developerWorks Java Classworking Toolkit column.

If you're using JiBX in your development work, check out the JiBX page on the Ohloh Open Source networking site and consider listing yourself as a user. Ohloh is a great site for tracking the open source software that developers are using, and you get to rate the projects based on your experience or even write a review that can help out other developers considering a project.


libjibx-java-1.1.6a/docs/jibx-license.html0000644000175000017500000004640011017733402020276 0ustar moellermoeller JiBX: License

JiBX License

This license (BSD form) covers the actual JiBX code itself.

Copyright (c) 2003-2007, Dennis M. Sosnoski
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 JiBX 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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

The JiBX distribution includes the Apache BCEL library (http://jakarta.apache.org/bcel), and the XPP3 XMLPull parser implementation (http://www.extreme.indiana.edu/soap/xpp/), with licenses supplied inline below. The distribution also includes the StAX API and WoodStox StAX parser from the Apache Axis2 distribution, both licensed under the terms of the Apache License, Version 2. Finally, the HTML documentation currently uses templates derived from those used by the XDoclet project (http://xdoclet.sourceforge.net/).

BCEL License

This license covers the Apache BCEL library included in the distribution and used by the binding compiler component.

The Apache Software License, Version 1.1

Copyright (c) 2001 The Apache Software Foundation.  All rights
reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:

1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.

2. 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.

3. The end-user documentation included with the redistribution,
   if any, must include the following acknowledgment:
      "This product includes software developed by the
       Apache Software Foundation (http://www.apache.org/)."
   Alternately, this acknowledgment may appear in the software itself,
   if and wherever such third-party acknowledgments normally appear.

4. The names "Apache" and "Apache Software Foundation" and
   "Apache BCEL" must not be used to endorse or promote products
   derived from this software without prior written permission. For
   written permission, please contact apache@apache.org.

5. Products derived from this software may not be called "Apache",
   "Apache BCEL", nor may "Apache" appear in their name, without
   prior written permission of the Apache Software Foundation.

THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.

This software consists of voluntary contributions made by many
individuals on behalf of the Apache Software Foundation.  For more
information on the Apache Software Foundation, please see
.

XPP3 License

This license covers the XPP3 XMLPull parser included in the distribution and used throughout JiBX.

Indiana University Extreme! Lab Software License

Version 1.1.1

Copyright (c) 2002 Extreme! Lab, Indiana University. All rights reserved.

Redistribution and use in source and binary forms, with or without 
modification, are permitted provided that the following conditions 
are met:

1. Redistributions of source code must retain the above copyright notice, 
   this list of conditions and the following disclaimer.

2. 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.

3. The end-user documentation included with the redistribution, if any, 
   must include the following acknowledgment:

  "This product includes software developed by the Indiana University 
  Extreme! Lab (http://www.extreme.indiana.edu/)."

Alternately, this acknowledgment may appear in the software itself, 
if and wherever such third-party acknowledgments normally appear.

4. The names "Indiana Univeristy" and "Indiana Univeristy Extreme! Lab" 
must not be used to endorse or promote products derived from this 
software without prior written permission. For written permission, 
please contact http://www.extreme.indiana.edu/.

5. Products derived from this software may not use "Indiana Univeristy" 
name nor may "Indiana Univeristy" appear in their name, without prior 
written permission of the Indiana University.

THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHORS, COPYRIGHT HOLDERS OR ITS CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

libjibx-java-1.1.6a/docs/mail-lists.html0000644000175000017500000003356511017733402020010 0ustar moellermoeller JiBX: Mailing Lists

Mailing Lists

The official mailing lists for the JiBX projects are hosted by SourceForge. You must subscribe to the lists (which you can do through the SourceForge project mailing list page) before you're allowed to post to them. If you just want to see what's been discussed you can access searchable archives at the Mail Archive (jibx-users and jibx-devs) and MARC: Mailing List Archives at AIMS (jibx-users, jibx-devs, and jibx-cvs). If you're new to JiBX it's a good idea to check the archives first before asking a usage question, just in case it's already been discussed. You should also at least look through the Binding Tutorial to make sure your question isn't covered there.

Besides blocking postings from non-subscribers, the mailing lists also block postings larger than 50KB in size. If you try posting to the list without subscribing, or posting an email larger than 50KB, your email will be held by SourceForge until a list administrator examines the email and decides what to do (normally just sending them back to you with a rejection message). Tending to blocked emails is not a priority item, so you're best off keeping these restrictions in mind when posting to the list - and if your email doesn't show up on the list within a day or so, double check the email size and that you're still subscribed (SourceForge sometimes drops email addresses because of problems such as bounced messages).


libjibx-java-1.1.6a/docs/performance.html0000644000175000017500000004161311017733404020226 0ustar moellermoeller JiBX: Performance with JiBX

Performance

JiBX is designed for runtime performance. There are three main aspects of this: Efficient unmarshalling, direct access to data, and lean runtime. The first aspect is probably the most difficult to explain. To understand how this applies in JiBX you have to know the difference between the common event-driven approach to parsing XML (as implemented by SAX/SAX2 parsers) and the newer pull parser apprach (as with XMLPull). Event-driven parsers deliver document components (elements and character data content) to your code one at a time, using callbacks. You call the parser from your code, defining a "handler" to process these callbacks. The parser runs through the entire document with a call to your handler for each component, and then returns. It's up to your handler code to organize the information contained in the document components.

The problem with this approach is that it requires your handler code to track where the parser is at in the document and interpret the components appropriately. At the most basic level, the start tag for an element containing a text value is reported first by the parser, followed by one or more chunks of text, followed finally by the end tag. Your handler generally needs to accumulate the text until the end tag is reported, then do something with the text. The "something" it does may be effected by other items, such as the attributes of the start tag, so that's more information that needs to be held. The net result is that handler code for event-driven parsers tends to involve a lot of String matching on element names in chained "if" statements (or the equivalent using a Hashtable lookup). This is both messy to write and maintain, and inefficient.

Pull parsing turns the parse event reporting around. Instead of the parser calling methods in your handler to report document components, you call the parser to get each component in turn - the parser becomes essentially an iterator for moving through the components of a document. When you write code using this approach the state information is actually inherent in the code. To take the case of an element containing text, you can write your code with the knowledge that the element you're processing has text content, and just process it directly - effectively one call to get the start tag, one call to get the content, and a third to get the end tag. Even better, you can write a method that handles any element containing a text value - just call the method with the expected element name, and it returns the text content or an error. Since most XML documents use fixed ordering of child elements, processing the children of a particular element becomes as simple as just making once call after another to this method.

JiBX uses a pull parser for unmarshalling so that it can take advantage of this code structure advantage. Because the code for pull parsing can be much simpler than that for event-driven parsing, JiBX is able to use byte code enhancement to add both marshalling and unmarshalling code to your class definitions. Using byte code enhancement in turn lets JiBX make use of the other two performance aspects.

"Direct access to data" just means that JiBX accesses data from your objects in whatever way is most natural. Normally this is by loading and storing field values directly in the marshalling and unmarshalling code added to your classes by byte code enhancement. It can also be by using JavaBean-style get/set methods, if that's a better solution for your code. Because JiBX uses byte code enhancement there's no need to make the fields or get/set methods public, unlike most other data binding frameworks. There's also no runtime cost for accessing the data, unlike the frameworks that use reflection to move data in and out of objects.

The final performance aspect of JiBX is that the runtime is lean and mean - configuration information is normally processed at application assembly time (after compiling classes), and is embedded directly in the code added by byte code enhancment. Other frameworks that read configuration files at runtime (most do not) suffer a performance disadvantage both from the actual processing time and from the added code needed to support this. This can make for a very slow start on execution, as classes are loaded and compiled to native code by the JVM. JiBX's approach of handling all the configuration prior to running the application minimizes startup overhead, both directly and through avoiding unnecessary runtime code. JiBX's use of a pull parser also helps keep the runtime small and efficient, as does its limited validation support - JiBX automatically checks many aspects of a document based on your mapping when unmarshalling, but does not support in-memory validation.


libjibx-java-1.1.6a/docs/runtime.html0000644000175000017500000004766411017733404017424 0ustar moellermoeller Runtime usage

Runtime

After running the binding compiler the modified classes are ready to be used. You'll need to include the /lib/jibx-run.jar and /lib/xpp3.jar jar files from the distribution in your application classpath (but not the /lib/bcel.jar and /lib/jibx-bind.jar files, which are only used by the binding compiler). You'll also need to add a little code at whatever point you want to marshal or unmarshal a document. This uses the org.jibx.runtime.BindingDirectory class that's included in the JiBX runtime jar, along with a class that JiBX generates in the same package as your code (or as the first class file it modifies, if your code is spread across multiple packages). You don't need to worry about the details of getting at this generated class, though. Instead, you access it by passing one of the classes defined by a global mapping (one that's a child of the root binding element) in your binding to the BindingDirectory (if you've compiled more than one binding into the code, you'll also need to pass the name of the binding you want to use). The code is simple:

    IBindingFactory bfact = 
        BindingDirectory.getFactory(Customer.class);

Here Customer is the name of a class with a global mapping in the binding. The org.jibx.runtime.IBindingFactory interface that gets returned provides methods to construct marshalling and unmarshalling contexts, which in turn allow you to do the actual marshal and unmarshal operations. Here's an unmarshal example:

    IUnmarshallingContext uctx = bfact.createUnmarshallingContext();
    Object obj = uctx.unmarshalDocument
        (new FileInputStream("filename.xml"), null);

This is just one of several variations of an unmarshal call, in this case to unmarshal an XML document in the file filename.xml. You can pass a reader instead of a stream as the source of the document data if you want, and can also specify an encoding for the document - see the JavaDocs for details. The returned object will be an instance of one of your classes defined with a global mapping in the binding - you can either check the type with instanceof or cast directly to your object type, if you know what it is.

Marshalling is just as easy. Here's an example:

    IMarshallingContext mctx = bfact.createMarshallingContext();
    mctx.marshalDocument(obj, "UTF-8", null,
        new FileOutputStream("filename.xml"));

As with the unmarshal example, this is just one of several variations that can be used for the marshal call. This marshals the object to an XML document written to the file filename.xml, with UTF-8 character encoding (the most common choice for XML). The code as shown writes the output document with no extra whitespace; you can use the setIndent() method of the context to add whitespace for readability, if you wish. You can pass a writer instead of a stream, as well as some other variations - see the following section for details on character encoding usages, and the JavaDocs for the different types of marshal calls. The object to be marshalled must always be an instance of a class defined with a global mapping in the binding.

Character encodings

The Java core classes provides java.io.Writer implementations that support a wide variety of character encodings. These can wrap simple output streams, and handle the conversions from Java characters to bytes as appropriate for the particular encoding used by the writer. This direct conversion of characters to bytes is not sufficient for use with XML, though. The problem is that character encodings may not allow for all the legal XML character codes. Any XML characters that are not supported by the output encoding need to be converted to character references for output (see the XML recommendation for details).

Because of this need to use character references, JiBX supports the use of character escapers for output conversion handling. For the widely-used UTF-8 and ISO-8859-1 (Western European character set) encodings implementations are included that handle both stream and writer output formats automatically (though using a stream will provide the best performance). The US-ASCII 7-bit format is also handled automatically, though in this case a java.io.Writer is always used internally.

Other character encodings can be used for output if you supply an appropriate org.jibx.runtime.ICharacterEscaper instance to be used with the output stream or writer. Depending on the encoding, you may even be able to use one of the existing character escaper implementation classes from the org.jibx.runtime.impl package directly, or at least base your own escaper code on one of those implementation classes. For most users the standard encodings are all that will ever be needed, but this approach allows other alternatives to be used when necessary for special requirements.

Output formats

JiBX also provides the ability to generate output formats other than text, by using different implementations of the org.jibx.runtime.IXMLWriter interface. The only implementations of this interface currently provided are for text output to streams or writers. In the future, implementations that output marshalled documents as SAX2 or XMLPull parse event streams are planned to become part of the standard JiBX distribution. Until then, users with special requirements in this area can implement their own versions of this interface and use it directly.

StAX support

The 1.1 release adds support for StAX parser input and StAX writer output. To select which parser you want to use dynamically, set the system property org.jibx.runtime.impl.parser to the value org.jibx.runtime.impl.XMLPullReaderFactory to select the XPP3 XMLPull parser, or the value org.jibx.runtime.impl.StAXReaderFactory to select the StAX parser. By default, JiBX uses whichever parser implementation it finds at runtime, with preference given to the XPP3 XMLPull parser if both XPP3 and a StAX parser are present. If you never want to use the XPP3 parser, simply remove the /lib/xpp3.jar file from your JiBX installation.

Some StAX parsers support schema validation of input. If you wish to make use of this feature you'll need to substitute an appropriate StAX parser implementation for the /lib/wstx-asl.jar StAX parser included in the JiBX distribution, and take whatever action is needed to enable schema validation.

JiBX 1.1 also includes support for StAX output (using the javax.xml.stream.XMLStreamWriter interface). This is mainly useful when fitting JiBX into other frameworks, including newer Web services frameworks. To use this form of output you'll need to set the XML writer directly on the JiBX marshalling context, using the special JiBX org.jibx.runtime.impl.StAXWriter class which wraps the target javax.xml.stream.XMLStreamWriter instance. Here's a sample of code for this purpose:

        // marshal root object back out to document in memory
        IMarshallingContext mctx = bfact.createMarshallingContext();
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        try {
            XMLOutputFactory ofact = XMLOutputFactory.newInstance();
            XMLStreamWriter wrtr = ofact.createXMLStreamWriter(bos, enc);
            mctx.setXmlWriter(new StAXWriter(bfact.getNamespaces(), wrtr));
            mctx.marshalDocument(obj);
        } catch (XMLStreamException e) {
            throw new JiBXException("Error creating writer", e);
        }

libjibx-java-1.1.6a/docs/schema.html0000644000175000017500000007100011017733404017156 0ustar moellermoeller JiBX: Schema Compatability

Schema compatability

The W3C XML Schema specification is considered by many to be complex and poorly structured, to the point where several years after its release compatibility problems are still being found effecting the few relatively "complete" implementations available. Even so, the backing of all the major industry players has largely succeeded in establishing schema as the preferred mechanism for defining XML document grammars. Compatibility with schema definitions is therefore an increasingly important issue for many Java developers working with XML.

JiBX binding definitions are primarily designed for ease of use by Java developers working with XML. Most schema constructs have JiBX equivalents, but some of the equivalents are not exact; also, some JiBX binding definition constructs do not have schema equivalents. This page attempts to cover both the similarities and differences between bindings and schemas. If you need to work with schemas, it's best to keep these differences in mind. JiBX is extensible enough to provide work-arounds for most of the schema issues, but your development will be easier the more you can avoid issues in the first place by using compatible XML structures.

If you're starting from existing Java code the Generator Tools subproject can be useful to give you a default binding definition, and a basic schema definition from the combination of Java code and a binding definition (whether generated or constructed by hand). Likewise, if you're starting from a schema, the Xsd2Jibx subproject can generate both Java code and a binding definition to match the schema. But both these subprojects have limitations on the features they can handle, so you'll often need to hand-modify the generated artifacts in complex cases.

Basic schema components

Global elements and named complex types are the most common components at the top level of a schema document. Each global element can be the root element of an instance document matching the schema, and can also be included by reference in other definitions. In JiBX terms, a non-abstract mapping definition that's a direct child of the binding element corresponds precisely to a global element of a schema definition. Each named complex type in a schema is essentially an anonymous element definition which can be referenced within other definitions, with the actual element name set at the point of use (and possibly different for each use). A named complex type roughly corresponds to an abstract mapping definition with no extension mappings, but the abstract mapping is more flexible.

The flexibility of the JiBX abstract mapping allows it to be used for several other schema constructs, including named model and attribute groups. Abstract mappings can even be used for a combined model and attribute group structure which has no equivalent in schema terms. The difference between using an abstract mapping as a complex type and using it as a model or attribute group equivalent just comes down to whether you specify a name on the reference to the abstract mapping. With a name specified you're using the mapping as a complex type-equivalent, where the specified name creates a wrapper element for the structure defined by the mapping. Without a name on the reference you're embedding the mapping structure directly within the enclosing definition.

Extension mappings provide the equivalent of schema substitution groups. In schema terms, a substitution group is a tree structure of element definitions, where the root of the tree sets a basic structure which can be extended or restricted by branches. When a mapping is used as the base of a substitution group it is extended by other mapping definitions, each defining a distinct element name.

Subclass relationships

Schema defines an extension mechanism for complex types which is roughly equivalent to the extends relationship between a subclass and the superclass. This can be modeled in JiBX binding definitions by using abstract mapping definitions for both the base class (or interface) and the subclass. The mapping for the subclass can then invoke the superclass mapping as part of its structure (by using a structure element with a map-as attribute specifying the superclass). It's not necessary for the subclass mapping to extend the base class mapping (and would generally not be appropriate for it to do so, except in the case where the definitions are being used as part of a substitution group).

The schema form of extension only allows an extension type to append to the base type definition, not insert new components into the base structure. In terms of JiBX bindings, this means that mapping definitions which are intended to be used as the equivalent of schema extensions should invoke the base class mapping as the first item in the ordered list of child components. Schema has no equivalent to the more flexible structure allowed by JiBX, where extension types can include the base class mapping at any point in the structure (or even replace the base class mapping completely).

Schema also defines a restriction mechanism for complex types which has no equivalent in programming language terms. The closest analogy is probably to a subclass which prohibits the use of some fields of the base class. This relationship is not one which is normally seen as desirable in object-oriented programming terms. If you really want to implement this type of relationship using JiBX you can do so, by defining a trivial subclass of the base class (one which does not add anything to the base class), then mapping only those inherited fields or properties of the base class corresponding to items included in the restricted schema type.

Content models

Schema uses three separate model group variations for representing the order and sequence of child elements within an instance document. The sequence variation is the most common. It's used to represent a set of child elements occurring in a particular order. This is the same as the default form of grouping used in JiBX binding definitions, so no special handling is needed to represent a sequence model group in a binding. The other two model group variations are choice and all, and these do require some special handling.

The choice variation is the second most common content model. A choice element in a schema definition allows one and only one of the nested element definitions to be present at that point in an instance document. JiBX 1.1 binding definitions provide the loose equivalent of a choice model group by using the choice="true" attribute of a mapping or structure definition. This properly accepts only one of the alternative elements in the group when unmarshalling, but will generate output with more than one of the alternatives when marshalling if the values are present (but see Verification hooks if you need to enforce the schema limits).

Both sequence and choice model groups can contain nested model groups of these same types, in addition to actual element definitions. Each of the child components of these model groups, whether an element or a nested model group, can specify minimum and maximum occurance counts for that component. These occurrance counts each default to 1, meaning that by default one and only one occurrance of a component can be present in an instance document. This is the same as the default in a JiBX binding definition. The common case of an optional component in the schema (minOccurs="0") is handled using optional="true" in the binding definition, while cases with repeated values (a maxOccurs value greater than 1, or "unbounded") correspond to collection elements in the binding definition. JiBX does not enforce the equivalent of schema limits on the number of times a repeated value occurs, but this is generally a minor issue (again, see Verification hooks if you need to enforce the schema limits).

The third schema content model variation is the all element. This allows at most one occurrance of each contained element, which can be in any order. The all model group can only contain element definitions, and cannot be used as a child component of the other types of model groups. Because of these restrictions it's probably the most uncommon model group variation. JiBX supports this model directly as a group of element definitions nested within a structure with ordered="false". Note that versions of JiBX prior to 1.1 did not fully support this model, because they required all components of an unordered grouping to be optional; this restriction has been removed in 1.1.

Schema definitions permit any components as part of a content model, meaning that any element (potentially restricted by namespace) will be allowed at that point in an instance document. This type of arbitrary XML content cannot be handled directly by any data binding framework. However, JiBX supports using document models for portions of documents by way of custom marshaller/unmarshallers supplied as part of the jibx-extras.jar. See Document models for details of using this extension to the basic JiBX framework.

One final content model issue relates to the handling of text content. JiBX provides support for specifying the structure of mixed content (with a combination of text and child elements) which is missing from schema. The best you can do in schema terms is to flag the containing element as using mixed content. JiBX also allows you to specify CDATA text values in your output, but this is strictly a syntactical convenience which doesn't actually effect the grammar of the generated XML documents.

Simple types

Schema definitions can make use of a wide variety of types for both attribute values and text content. Starting from a base of forty-some predefined types, you can derive your own even more esoteric and specialized types by either restricting the possible values on a type, forming a list of whitespace-separated instances of a type, or merging multiple types in a union. Derived types may be named (when defined as top-level components of the schema definition) or anonymous.

The JiBX binding definition equivalent to a simple type is a serializer/deserializer method pair. These convert the text representation of a value to and from the representation used by the Java application code. The Java representation can be either an object or a primitive type. Named simple types in a schema generally correspond to format elements in a binding definition, while inline simple types correspond to using serializer="class-and-method" and deserializer="class-and-method" directly on a value element.

The most common schema predefined types have default Java equivalents in JiBX terms (see Value Conversions for details). For other predefined types you can generally define your own conversions in the form of serializer/deserializer methods. The same holds for derived types: In the case of restriction-derived types you can either use the base type directly and rely on checks in your code to enforce the restriction (such as a value range check in the setter method for a property) or define your own conversion methods to handle the derived type directly. For list types you can again define your own conversion methods (which would generally convert from and to arrays of some base type). For union types you probably need to define a corresponding class which wraps fields of each possible type, along with a custom conversion for this class. See Custom serializers and deserializers for an introduction to working with custom value conversions.

The only predefined schema types which cause problems when working with JiBX are QName and IDREFS. Both of these require access to the marshalling/unmarshalling context information in order to properly handle conversions (in the first case for the namespace information, in the second for access to ID definitions). These are not commonly used types in general XML, but are often used for special purposes. With JiBX 1.0 the only way to handle these types is with a custom marshaller/unmarshaller for the containing element. See Custom marshallers and unmarshallers for an introduction to extending JiBX in this manner. JiBX 1.1 includes a QName implementation as part of the standard runtime (the org.jibx.runtime.QName class).

Verification hooks

JiBX user extensions can support selective verification of schema constraints when marshalling and unmarshalling. The pre-get attribute specifies a method to be called on an instance of a class before that instance is marshalled. A method of this type can check that all property values of the instance match the schema requirements, throwing an exception if any error is found. The post-set attribute specifies a method to be called on an instance of a class after that instance is unmarshalled. A method of this type can check that the property values unmarshalled from a document match the schema definition, again throwing an exception if any error is found.

These user extension methods can verify any or all aspects of data with respect to the schema definition, including such things as making sure only one component of a choice model group is present when marshalling, or that restricted values match the expected patterns. There is currently no support for generating methods of these types automatically, but a future replacement for the current Xsd2Jibx code may add this functionality.

Unsupported schema features

There are a few aspects of schema usage which are not supported at all in the current JiBX 1.0 code. Probably the most important missing feature is support for xsi:type attributes in instance documents. This attribute effectively embeds schema metadata directly into the instance document, which seems a questionable practice from the standpoint of structuring. However, its use has become so widespread (especially in the context of web services) that support is probably necessary in a general XML framework. JiBX 2.0 will fully support this attributes.

The xsi:nil attribute, also used in instance documents, was not supported by JiBX 1.0. JiBX 1.1 added support for this feature using the nillable attribute in the object attribute group.

Another part of schema which is not supported by JiBX is the use of identity constraints in the form of keyref, keydef, and unique elements. These schema definition elements build on top of the XPath document navigation paths to define database-like references between document components. The XPath navigation unfortunately does not correspond well with programming language object structures. It's possible that some form of partial support for these components may be added in JiBX 2.0, but they are unlikely to ever be supported fully as such.

These XPath-based identity constraints tend to be rarely used in practice. JiBX does include extended support for the more common ID-IDREF links between document components, which can often be substituted for the XPath-based alternatives. If you really need the XPath type of linkages you can use a combination of user extensions methods and (in the most difficult cases) custom marshaller/unmarshallers to implement these linkages in a flexible way.

Finally, there's no JiBX equivalent to anyAttribute "wildcard" attributes in schema. These allow any attribute (potentially restricted by namespace) to be used with that element in an instance document. The only way to handle arbitrary attributes with JiBX is by using custom code such as a specialized pre-get method or a marshaller/unmarshaller for the element.


libjibx-java-1.1.6a/docs/sponsors.html0000644000175000017500000003242611017733404017615 0ustar moellermoeller JiBX: Sponsors

Corporate Sponsors

A number of companies have helped support the JiBX development effort by commissioning specific features or changes to meet their needs, including the following:

Travelocity
Pruftechnik
Sapient
Shopzilla

If your company needs a particular feature added to JiBX, wants to obtain priority support for JiBX, or just would like to help make sure JiBX thrives through continued enhancements, email Dennis Sosnoski to find out about rates for JiBX-related services.


libjibx-java-1.1.6a/docs/start.html0000644000175000017500000004176511017733404017072 0ustar moellermoeller JiBX: Getting Started with JiBX

Installation

To install JiBX, just download the distribution zip file and unpack it. This will create a jibx directory that contains the distribution files, including a complete copy of this documentation. The readme.html file in the unpacked root directory gives more information and links to some included demonstration code, and to the local copy of this documentation.

If you're using Maven, you can use the JiBX repository at http://jibx.sourceforge.net/maven/ to get a specific version of the distribution jar files (as jibx-bind-1.x.x.jar, jibx-run-1.x.x.jar, etc.). There's also a Maven2 plugin available for JiBX.

Binding definitions

To use JiBX, you'll need to first create a binding definition that describes how your XML documents are connected to your Java objects. Here's a simple example just to give you a feeling for how this works:

Figure 1. Simple binding example
Simple binding

In this example I've got an XML document with a <customer> root element that I want to bind to a Customer class in my Java code. The binding definition tells JiBX the details of how this binding is to be performed. The color coding in the diagram shows how the three parts interrelate. The mapping element within the binding definition (shown in green) creates the basic linkage between the <customer> element and the Customer class. The child elements of the mapping element provide the details of this linkage - for example, the first value child element (shown in blue) links the <first-name> child element to the firstName field of the Customer class.

JiBX's binding capabilities go far beyond what's shown by this simple example. On the Java side, you can use fields of any access type (including private), or use JavaBean-style get/set methods if you prefer. You can easily define custom serialization handlers for data values, and you can tell JiBX to call your own methods at various points in the binding process to allow further customizations. To learn more about using these and many other JiBX features check out the Binding Tutorial section of this site.

If you're starting from existing Java code you may find the Generator Tools subproject useful. This includes a tool which will generate a default binding for a set of Java classes (and a separate tool to generate an XML schema definition from a binding definition and the referenced Java classes). Similarly, if you're starting from an XML schema definition you may find the Xsd2Jibx subproject useful. This provides a tool to generate a set of Java classes and a corresponding binding definition from a schema. These subprojects can help a lot in getting started, but you should still take the time to understand how bindings work before you go too far with JiBX.

Using JiBX

Once you've got a binding definition for your document format you're ready to begin using JiBX. To do this, you first compile your application classes as normal, then run the JiBX Binding Compiler. The binding compiler converts your binding definition into actual code in the form of binding methods that it adds to your application class files (you can also run the binding compiler at runtime, to modify your classes before they're loaded into the JVM). The methods added by the binding compiler are then used by the JiBX Runtime to actually marshal and unmarshal your Java classes to and from XML.

Starter project

The JiBX distribution includes an example starter project, with an Ant build.xml script for compiling, binding, and running the project code. This is found in the starter directory off the installation root. See the index.html page in this directory for details.

Details

That's the summary. Here are the links for the details of these steps, along with information on some useful tools included in the distribution:


libjibx-java-1.1.6a/docs/status.html0000644000175000017500000005120211023301276017236 0ustar moellermoeller JiBX: News and Status

Release News

The current production download code is the version 1.1.6a release. This is a minor correction to the 1.1.6 release, which fixes two particular issues: Paths on Windows were handled incorrectly in 1.1.6, leading to failures when default values were specified for primitive values, and the starter project sample had an error in the "bind" Ant task definition. It includes all the other features of 1.1.6, with many fixes and several enhancements to earlier releases in the 1.1.X series. See the Changes section for the most important changes, and the changes.txt file in the distribution for more details.

Incompatibility Note: The 1.1.6 release introduced a backward-incompatible change to the actual binding factory structure. If you compile a binding using the 1.1.6 or later binding compiler and then try to use the bound classes with an older runtime you'll get an error like:


Unable to access binding information for class xxx.xxx.xxx.Xxx
Make sure classes generated by the binding compiler are available at runtime

This change was necessary to solve a problem with very large binding definitions, which previously could create methods in the generated factory class which were larger than the JVM limit. With this change in place, there should be no practical limit on the size of bindings.

Status

The 1.2 release of JiBX is largely complete, with documentation the main piece that still needs work. The 1.2 focus is on improving tool support. It includes updated and enhanced versions of the binding generator, schema generator, and code generator from schema. The first 1.2 beta release will be in June, 2008.

JiBX/WS, a full-featured replacement for the JibxSoap demonstration project, is also nearing release. JiBX/WS brings exciting new features for developers using JiBX with web services, including first-class support for both REST and POX web services, as well as SOAP, and substantial performance benefits as compared to other frameworks. The first JiBX/WS beta release will be available in June, 2008.

Work is also starting on JiBX 2.0. The main focus of the 2.0 changes is an entirely new code generation model, which is designed to support both direct bytecode generation (as in the 1.X code) and source code generation. The first beta release of JiBX 2.0 is planned for September, 2008.

Changes from earlier versions

The 1.1.6 production release adds new features and fixes a number of problems found with earlier versions in the 1.1.X series, including:

  • Fixed handling of abstract <mapping> with no content or attributes present.
  • Corrected problem with adding constructor to mapped user interfaces when add-constructors="true".
  • Added enum-value-method='...' option to support Java 5 enums with values which don't match the names (using the defined method to get the actual text value from an enum instance).
  • Corrected binding validation problem where using the same <mapping> name in different namespaces reported a duplicate name error.
  • Fixed problems with nillable="true" and optional="true" combination on a <value> element, and also with primitive values which are nillable and/or optional.
  • Fixed problems with file path names using a period, and with binding file names including characters not allowed in Java identifiers.
  • Improved the documentation with new tutorial sections on Using inner classes and Using enumerations, as well as adding some missing attributes to the binding detail descriptions.
  • Updated the binding.dtd and binding.xsd definitions (in the docs directory of the distribution) with corrections and added attributes.

The 1.1.3 production release fixed several problems found in the 1.1 release, including:

  • Corrected a pair of problems with nested unordered groups, which resulted in exceptions during code generation.
  • Changed child component order under <binding> element to namespace, format, include, in order to allow namespaces to be applied to included bindings, and formats from includes to be used in the including binding.
  • Fixed handling of abstract mappings with attributes (with or without content), and also fixed namespace declarations for abstract mappings.
  • Fixed problem with abstract base mapping use in unordered collection failing code generation (stack size mismatch)
  • Fixed add-constructors='true' option to make existing default constructors accessible, and to add superclass default constructors where necessary.
  • Corrected a problem in working with arrays of longs or doubles which could result in modified classes failing JVM validation.
  • Changed default JiBX build Ant target to build the full distribution with debug information included, added a new "small-jars" target to compile and jar without debug information.
  • Loosened some overly-stringent checks during binding validation.

The 1.1 production release added several major new features to those supported by the 1.0.x releases, including:

  • Support for StAX parsers and writers as an alternative to the default XMLPull parser (see StAX support for details on using this).
  • Compatibility with the Apache Axis2 web services framework.
  • Support for "flexible" unmarshalling, where unknown elements are ignored within unordered groups (using the new flexible attribute in the structure attribute group).
  • Allow the use of required elements within unordered groups, with runtime exceptions if the elements are not present when unmarshalling.
  • Detection of duplicated element errors within unordered groups (and the option of disabling this using the new allow-repeats attribute in the structure attribute group)
  • Added direct support for using Java 5 enum types as values.
  • Provided an option to add no-argument constructors to bound classes if not already present (the new add-constructors attribute of the binding element).
  • Added an easy way to specify the type of instance to be created for an interface or abstract class when unmarshalling (using the new create-type attribute in the object attribute group).
  • Added support for the ugly-but-useful W3C XML Schema nillable kludge, allowing elements to be included in instance documents to represent null values (using the new nillable attribute in the object attribute group).
  • Changed the mapping element type-name attribute, the structure element map-as attribute, the format element label attribute, and the value element format attribute to be namespace-qualified values. To support this change the names of the built-in conversion formats had to be changed.
  • Provided J2ME compatibility, with new "j2me" build target to build J2ME version of the distribution jars.
  • More checking for possible errors during validation of the binding definition.

Some of these new features (including the changed names for the built-in format definitions, and the changed default behavior to throw an exception when a bound element in an unordered groups is repeated) may cause problems for existing bindings that worked on JiBX 1.0.x. Users with custom marshallers/unmarshallers which rely on namespace index values may also be effected by the xsi:nil support change, which added the schema instance namespace at a fixed position in the table of namespaces (index #2). I apologize for breaking full compatibility, but felt that these changes were important enough for the future to justify the inconvenience to current users.

See the Bugs and Bug Reporting page for information about known issues and details of how to report problems.


libjibx-java-1.1.6a/docs/support.html0000644000175000017500000003201311017733404017433 0ustar moellermoeller JiBX: Support and Training

Support and Training

Free support for JiBX is available through the mailing lists and Jira issue tracking system

Commercial support and training for JiBX is provided through the companies of project founder Dennis Sosnoski, Sosnoski Software Solutions, Inc. (for clients in the United States and Canada) and Sosnoski Software Associates Ltd (for clients in Australia/New Zealand, Asia, and Europe). Beyond the specific classes listed on the web sites for these companies, Dennis is available for facilitating custom in-house classes relating to JiBX at any level of sophistication, from the basics to the most advanced. Email Dennis Sosnoski to find out about rates and scheduling for JiBX-related support and training.


libjibx-java-1.1.6a/lib/0000755000175000017500000000000011023035634014645 5ustar moellermoellerlibjibx-java-1.1.6a/starter/0000755000175000017500000000000011023302612015554 5ustar moellermoellerlibjibx-java-1.1.6a/starter/src/0000755000175000017500000000000011021525524016352 5ustar moellermoellerlibjibx-java-1.1.6a/starter/src/org/0000755000175000017500000000000011021525524017141 5ustar moellermoellerlibjibx-java-1.1.6a/starter/src/org/jibx/0000755000175000017500000000000011021525524020075 5ustar moellermoellerlibjibx-java-1.1.6a/starter/src/org/jibx/starter/0000755000175000017500000000000011021525524021561 5ustar moellermoellerlibjibx-java-1.1.6a/starter/src/org/jibx/starter/Customer.java0000644000175000017500000000031410346670174024236 0ustar moellermoeller package org.jibx.starter; public class Customer { public Person person; public String street; public String city; public String state; public Integer zip; public String phone; } libjibx-java-1.1.6a/starter/src/org/jibx/starter/Person.java0000644000175000017500000000021410346670174023702 0ustar moellermoeller package org.jibx.starter; public class Person { public int customerNumber; public String firstName; public String lastName; } libjibx-java-1.1.6a/starter/src/org/jibx/starter/Test.java0000644000175000017500000000347210346670174023364 0ustar moellermoeller package org.jibx.starter; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import org.jibx.runtime.BindingDirectory; import org.jibx.runtime.IBindingFactory; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; public class Test { /** * Unmarshal the sample document from a file, then marshal it back out to * another file. */ public static void main(String[] args) { if (args.length < 2) { System.out.println("Usage: java -cp ... " + "org.jibx.starter.Test in-file out-file"); System.exit(0); } try { // note that you can use multiple bindings with the same class, in // which case you need to use the getFactory() call that takes the // binding name as the first parameter IBindingFactory bfact = BindingDirectory.getFactory(Customer.class); // unmarshal customer information from file IUnmarshallingContext uctx = bfact.createUnmarshallingContext(); FileInputStream in = new FileInputStream(args[0]); Customer customer = (Customer)uctx.unmarshalDocument(in, null); // you can add code here to alter the unmarshalled customer // marshal object back out to file (with nice indentation, as UTF-8) IMarshallingContext mctx = bfact.createMarshallingContext(); mctx.setIndent(2); FileOutputStream out = new FileOutputStream(args[1]); mctx.marshalDocument(customer, "UTF-8", null, out); } catch (FileNotFoundException e) { e.printStackTrace(); System.exit(1); } catch (JiBXException e) { e.printStackTrace(); System.exit(1); } } }libjibx-java-1.1.6a/starter/binding.xml0000644000175000017500000000077410330640072017725 0ustar moellermoeller libjibx-java-1.1.6a/starter/build-binding.xml0000644000175000017500000000606011023301716021013 0ustar moellermoeller JiBX home directory not found - define JIBX_HOME system property or set path directly in build.xml file. Required JiBX runtime jar jibx-run.jar was not found in JiBX home lib directory (${jibx-home}/lib) Required JiBX binding jar jibx-bind.jar or bcel.jar was not found in JiBX home lib directory (${jibx-home}/lib) libjibx-java-1.1.6a/starter/build.xml0000644000175000017500000001226011023302612017376 0ustar moellermoeller JiBX home directory not found - define JIBX_HOME system property or set path directly in build.xml file. Required JiBX runtime jar jibx-run.jar was not found in JiBX home lib directory (${jibx-home}/lib) Required JiBX extras jar jibx-extras.jar was not found in JiBX home lib directory (${jibx-home}/lib) Required JiBX binding jar jibx-bind.jar or bcel.jar was not found in JiBX home lib directory (${jibx-home}/lib) libjibx-java-1.1.6a/starter/data.xml0000644000175000017500000000042210330640072017212 0ustar moellermoeller 123456789 John Smith 12345 Happy Lane Plunk WA 98059 888.555.1234 libjibx-java-1.1.6a/starter/index.html0000644000175000017500000001100710346670250017565 0ustar moellermoeller JiBX Starter Code

Starter Code

This directory contains a sample "starter" JiBX project, based on the first example from the binding tutorial. This starter project uses an Ant build.xml with several targets: build to clean and build the code, roundtrip to run a roundtrip test of the binding (unmarshal a document, marshal the object back out, and compare the documents) using code from jibx-extras.jar, and run to just unmarshal a document and then marshal it out to a separate file, using the test code provided as part of the project. The build.xml automatically finds the JiBX libraries when run in place, or looks for a JIBX_HOME environmental variable definition if run elsewhere. There's also a build-binding.xml Ant buld file with a single target, useful when developing in an IDE.

Disclaimer

This code gives a sample of working with JiBX data binding. It may be reused and redistributed without restriction, but is supplied subject to the following disclaimer. If you do not accept the terms of the disclaimer, do not use this code.

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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


libjibx-java-1.1.6a/tutorial/0000755000175000017500000000000011021525524015742 5ustar moellermoellerlibjibx-java-1.1.6a/tutorial/example1/0000755000175000017500000000000011021525524017456 5ustar moellermoellerlibjibx-java-1.1.6a/tutorial/example1/Customer.java0000644000175000017500000000030410350107324022115 0ustar moellermoeller package example1; public class Customer { public Person person; public String street; public String city; public String state; public Integer zip; public String phone; } libjibx-java-1.1.6a/tutorial/example1/Person.java0000644000175000017500000000020410350107324021561 0ustar moellermoeller package example1; public class Person { public int customerNumber; public String firstName; public String lastName; } libjibx-java-1.1.6a/tutorial/example1/binding.xml0000644000175000017500000000076410071714764021633 0ustar moellermoeller libjibx-java-1.1.6a/tutorial/example1/data.xml0000644000175000017500000000042210071714764021121 0ustar moellermoeller 123456789 John Smith 12345 Happy Lane Plunk WA 98059 888.555.1234 libjibx-java-1.1.6a/tutorial/example10/0000755000175000017500000000000011021525524017536 5ustar moellermoellerlibjibx-java-1.1.6a/tutorial/example10/Airport.java0000644000175000017500000000017510347705034022032 0ustar moellermoeller package example10; public class Airport { private String code; private String name; private String location; } libjibx-java-1.1.6a/tutorial/example10/Carrier.java0000644000175000017500000000022010347705034021770 0ustar moellermoeller package example10; public class Carrier { private String code; private String name; private String url; private int rating; } libjibx-java-1.1.6a/tutorial/example10/TimeTable.java0000644000175000017500000000025110347705034022253 0ustar moellermoeller package example10; import java.util.ArrayList; import java.util.LinkedList; public class TimeTable { private ArrayList carriers; private Object[] airports; } libjibx-java-1.1.6a/tutorial/example10/binding.xml0000644000175000017500000000121510347705034021677 0ustar moellermoeller libjibx-java-1.1.6a/tutorial/example10/data.xml0000644000175000017500000000125110347705034021176 0ustar moellermoeller http://www.northleft.com Northleft Airlines http://www.classyskylines.com Classy Skylines Boston, MA Logan International Airport Seattle, WA Seattle-Tacoma International Airport Los Angeles, CA Los Angeles International Airport libjibx-java-1.1.6a/tutorial/example11/0000755000175000017500000000000011021525524017537 5ustar moellermoellerlibjibx-java-1.1.6a/tutorial/example11/Airport.java0000644000175000017500000000017510347705210022027 0ustar moellermoeller package example11; public class Airport { private String code; private String name; private String location; } libjibx-java-1.1.6a/tutorial/example11/Carrier.java0000644000175000017500000000022010347705210021765 0ustar moellermoeller package example11; public class Carrier { private String code; private String name; private String url; private int rating; } libjibx-java-1.1.6a/tutorial/example11/Flight.java0000644000175000017500000000023410347705210021620 0ustar moellermoeller package example11; public class Flight { private Carrier carrier; private int number; private String departure; private String arrival; } libjibx-java-1.1.6a/tutorial/example11/Route.java0000644000175000017500000000023210347705210021477 0ustar moellermoeller package example11; import java.util.ArrayList; public class Route { private Airport from; private Airport to; private ArrayList flights; } libjibx-java-1.1.6a/tutorial/example11/TimeTable.java0000644000175000017500000000025310347705210022252 0ustar moellermoeller package example11; import java.util.ArrayList; public class TimeTable { private ArrayList carriers; private ArrayList airports; private ArrayList routes; } libjibx-java-1.1.6a/tutorial/example11/binding.xml0000644000175000017500000000243010347705210021674 0ustar moellermoeller libjibx-java-1.1.6a/tutorial/example11/data.xml0000644000175000017500000000245010347705210021175 0ustar moellermoeller http://www.northleft.com Northleft Airlines http://www.classyskylines.com Classy Skylines Boston, MA Logan International Airport Seattle, WA Seattle-Tacoma International Airport Los Angeles, CA Los Angeles International Airport libjibx-java-1.1.6a/tutorial/example12/0000755000175000017500000000000011021525524017540 5ustar moellermoellerlibjibx-java-1.1.6a/tutorial/example12/Address.java0000644000175000017500000000022110347705316021774 0ustar moellermoeller package example12; public class Address { public String street; public String city; public String state; public Integer zip; } libjibx-java-1.1.6a/tutorial/example12/Customer.java0000644000175000017500000000027410347705316022220 0ustar moellermoeller package example12; public class Customer { public int customerNumber; public String firstName; public String lastName; public Address address; public String phone; } libjibx-java-1.1.6a/tutorial/example12/binding.xml0000644000175000017500000000115710347705316021711 0ustar moellermoeller libjibx-java-1.1.6a/tutorial/example12/data.xml0000644000175000017500000000035510347705316021207 0ustar moellermoeller Smith
12345 Happy Lane Plunk WA
888.555.1234
libjibx-java-1.1.6a/tutorial/example13/0000755000175000017500000000000011021525524017541 5ustar moellermoellerlibjibx-java-1.1.6a/tutorial/example13/Address.java0000644000175000017500000000022110347705332021773 0ustar moellermoeller package example13; public class Address { public String street; public String city; public String state; public Integer zip; } libjibx-java-1.1.6a/tutorial/example13/Customer.java0000644000175000017500000000027310347705332022216 0ustar moellermoeller package example13; public class Customer { public int customerNumber; public String firstName; public String lastName; public Object address; public String phone; } libjibx-java-1.1.6a/tutorial/example13/binding.xml0000644000175000017500000000115710347705332021710 0ustar moellermoeller libjibx-java-1.1.6a/tutorial/example13/data.xml0000644000175000017500000000035510347705332021206 0ustar moellermoeller Smith
12345 Happy Lane Plunk WA
888.555.1234
libjibx-java-1.1.6a/tutorial/example14/0000755000175000017500000000000011021525524017542 5ustar moellermoellerlibjibx-java-1.1.6a/tutorial/example14/Address.java0000644000175000017500000000022110347705346022001 0ustar moellermoeller package example14; public class Address { public String street; public String city; public String state; public Integer zip; } libjibx-java-1.1.6a/tutorial/example14/Customer.java0000644000175000017500000000034010347705346022217 0ustar moellermoeller package example14; public class Customer { public int customerNumber; public String firstName; public String lastName; public Address shipAddress; public Address billAddress; public String phone; } libjibx-java-1.1.6a/tutorial/example14/Subscriber.java0000644000175000017500000000015110347705346022521 0ustar moellermoeller package example14; public class Subscriber { public String name; public Address mailAddress; } libjibx-java-1.1.6a/tutorial/example14/binding.xml0000644000175000017500000000154510347705346021717 0ustar moellermoeller libjibx-java-1.1.6a/tutorial/example14/data1.xml0000644000175000017500000000036710347705346021300 0ustar moellermoeller Smith 12345 Happy Lane Plunk WA 888.555.1234 libjibx-java-1.1.6a/tutorial/example14/data2.xml0000644000175000017500000000021610347705346021272 0ustar moellermoeller John Smith 12345 Happy Lane Plunk WA libjibx-java-1.1.6a/tutorial/example14/data3.xml0000644000175000017500000000057110347705346021277 0ustar moellermoeller Smith 12345 Happy Lane Plunk WA 54321 Happy Lane Plunk WA 888.555.1234 libjibx-java-1.1.6a/tutorial/example15/0000755000175000017500000000000011021525524017543 5ustar moellermoellerlibjibx-java-1.1.6a/tutorial/example15/Address.java0000644000175000017500000000022110347705370021777 0ustar moellermoeller package example15; public class Address { public String street; public String city; public String state; public Integer zip; } libjibx-java-1.1.6a/tutorial/example15/Customer.java0000644000175000017500000000034010347705370022215 0ustar moellermoeller package example15; public class Customer { public int customerNumber; public String firstName; public String lastName; public Address shipAddress; public Address billAddress; public String phone; } libjibx-java-1.1.6a/tutorial/example15/Subscriber.java0000644000175000017500000000015110347705370022517 0ustar moellermoeller package example15; public class Subscriber { public String name; public Address mailAddress; } libjibx-java-1.1.6a/tutorial/example15/binding.xml0000644000175000017500000000241110347705370021706 0ustar moellermoeller libjibx-java-1.1.6a/tutorial/example15/data1.xml0000644000175000017500000000036710347705370021276 0ustar moellermoeller Smith 12345 Happy Lane Plunk WA 888.555.1234 libjibx-java-1.1.6a/tutorial/example15/data2.xml0000644000175000017500000000017510347705370021274 0ustar moellermoeller John Smith 12345 Happy Lane libjibx-java-1.1.6a/tutorial/example15/data3.xml0000644000175000017500000000057110347705370021275 0ustar moellermoeller Smith 12345 Happy Lane Plunk WA 54321 Happy Lane Plunk WA 888.555.1234 libjibx-java-1.1.6a/tutorial/example16/0000755000175000017500000000000011021525524017544 5ustar moellermoellerlibjibx-java-1.1.6a/tutorial/example16/Company.java0000644000175000017500000000016010347706624022026 0ustar moellermoeller package example16; public class Company extends Identity { public String name; public String taxId; } libjibx-java-1.1.6a/tutorial/example16/Customer.java0000644000175000017500000000031110347706624022217 0ustar moellermoeller package example16; public class Customer { public Identity identity; public String street; public String city; public String state; public Integer zip; public String phone; } libjibx-java-1.1.6a/tutorial/example16/Identity.java0000644000175000017500000000011610347706624022212 0ustar moellermoeller package example16; public class Identity { public int customerNumber; } libjibx-java-1.1.6a/tutorial/example16/Person.java0000644000175000017500000000016710347706624021675 0ustar moellermoeller package example16; public class Person extends Identity { public String firstName; public String lastName; } libjibx-java-1.1.6a/tutorial/example16/binding.xml0000644000175000017500000000172110347706624021715 0ustar moellermoeller libjibx-java-1.1.6a/tutorial/example16/data1.xml0000644000175000017500000000042210347706624021272 0ustar moellermoeller 123456789 John Smith 12345 Happy Lane Plunk WA 98059 888.555.1234 libjibx-java-1.1.6a/tutorial/example16/data2.xml0000644000175000017500000000043010347706624021272 0ustar moellermoeller John Smith Enterprises 91-234851 311233459 12345 Happy Lane Plunk WA 98059 888.555.1234 libjibx-java-1.1.6a/tutorial/example17/0000755000175000017500000000000011021525524017545 5ustar moellermoellerlibjibx-java-1.1.6a/tutorial/example17/Company.java0000644000175000017500000000016010347706624022027 0ustar moellermoeller package example17; public class Company extends Identity { public String name; public String taxId; } libjibx-java-1.1.6a/tutorial/example17/Customer.java0000644000175000017500000000031110347706624022220 0ustar moellermoeller package example17; public class Customer { public Identity identity; public String street; public String city; public String state; public Integer zip; public String phone; } libjibx-java-1.1.6a/tutorial/example17/Identity.java0000644000175000017500000000011610347706624022213 0ustar moellermoeller package example17; public class Identity { public int customerNumber; } libjibx-java-1.1.6a/tutorial/example17/Person.java0000644000175000017500000000016710347706624021676 0ustar moellermoeller package example17; public class Person extends Identity { public String firstName; public String lastName; } libjibx-java-1.1.6a/tutorial/example17/binding.xml0000644000175000017500000000205710347706624021721 0ustar moellermoeller libjibx-java-1.1.6a/tutorial/example17/data1.xml0000644000175000017500000000042210347706624021273 0ustar moellermoeller 123456789 John Smith 12345 Happy Lane Plunk WA 98059 888.555.1234 libjibx-java-1.1.6a/tutorial/example17/data2.xml0000644000175000017500000000043010347706624021273 0ustar moellermoeller John Smith Enterprises 91-234851 311233459 12345 Happy Lane Plunk WA 98059 888.555.1234 libjibx-java-1.1.6a/tutorial/example17/data3.xml0000644000175000017500000000032710347706624021301 0ustar moellermoeller 123456789 12345 Happy Lane Plunk WA 98059 888.555.1234 libjibx-java-1.1.6a/tutorial/example18/0000755000175000017500000000000011021525524017546 5ustar moellermoellerlibjibx-java-1.1.6a/tutorial/example18/Customer.java0000644000175000017500000000030510347706624022224 0ustar moellermoeller package example18; public class Customer { public Person person; public String street; public String city; public String state; public Integer zip; public String phone; } libjibx-java-1.1.6a/tutorial/example18/Person.java0000644000175000017500000000020510347706624021670 0ustar moellermoeller package example18; public class Person { public int customerNumber; public String firstName; public String lastName; } libjibx-java-1.1.6a/tutorial/example18/binding.xml0000644000175000017500000000133310347706624021716 0ustar moellermoeller libjibx-java-1.1.6a/tutorial/example18/data.xml0000644000175000017500000000055110347706624021216 0ustar moellermoeller John Smith 12345 Happy Lane Plunk WA 98059 libjibx-java-1.1.6a/tutorial/example19/0000755000175000017500000000000011021525524017547 5ustar moellermoellerlibjibx-java-1.1.6a/tutorial/example19/Customer.java0000644000175000017500000000041710347706624022231 0ustar moellermoeller package example19; public class Customer { private Person person; private String street; private String city; private String state; private Integer zip; private String phone; public void setZip(Integer zip) { this.zip = zip; } } libjibx-java-1.1.6a/tutorial/example19/Item.java0000644000175000017500000000050110347706624021320 0ustar moellermoeller package example19; import org.jibx.runtime.IUnmarshallingContext; public class Item { public Order order; public int itemId; public int count; public void postset(IUnmarshallingContext ctx) { order = (Order)ctx.getStackObject(1); System.out.println("Item.postset called"); } } libjibx-java-1.1.6a/tutorial/example19/Order.java0000644000175000017500000000063510347706624021505 0ustar moellermoeller package example19; import java.util.ArrayList; public class Order { public Customer customer; public double total; public ArrayList items; public static Order orderFactory() { System.out.println("Order.orderFactory called"); return new Order(); } public void preget() { System.out.println("Order.preget called"); total = items.size() * 1.5; } } libjibx-java-1.1.6a/tutorial/example19/Person.java0000644000175000017500000000044510347706624021677 0ustar moellermoeller package example19; public class Person { Customer customer; private int customerNumber; private String firstName; private String lastName; public void preset(Object obj) { customer = (Customer)obj; System.out.println("Person.preset called"); } } libjibx-java-1.1.6a/tutorial/example19/binding.xml0000644000175000017500000000175310347706624021725 0ustar moellermoeller libjibx-java-1.1.6a/tutorial/example19/data.xml0000644000175000017500000000064210347706624021220 0ustar moellermoeller John Smith 12345 Happy Lane Plunk WA 98059 6.0 5 1 3 2 libjibx-java-1.1.6a/tutorial/example2/0000755000175000017500000000000011021525524017457 5ustar moellermoellerlibjibx-java-1.1.6a/tutorial/example2/Customer.java0000644000175000017500000000042410350107324022121 0ustar moellermoeller package example2; public class Customer { private Person person; private String street; private String city; private String state; private Object zip; private String phone; public void setPhone(String phone) { this.phone = phone; } } libjibx-java-1.1.6a/tutorial/example2/Person.java0000644000175000017500000000043010350107324021563 0ustar moellermoeller package example2; public class Person { private int customerNumber; private String firstName; private String lastName; protected int getNumber() { return customerNumber; } protected void setNumber(int num) { customerNumber = num; } } libjibx-java-1.1.6a/tutorial/example2/binding.xml0000644000175000017500000000117310350107324021613 0ustar moellermoeller libjibx-java-1.1.6a/tutorial/example2/data.xml0000644000175000017500000000030610071714774021124 0ustar moellermoeller Smith 12345 Happy Lane Plunk WA 888.555.1234 libjibx-java-1.1.6a/tutorial/example20/0000755000175000017500000000000011021525524017537 5ustar moellermoellerlibjibx-java-1.1.6a/tutorial/example20/Conversion.java0000644000175000017500000000441510425211516022533 0ustar moellermoeller package example20; public class Conversion { private Conversion () {} public static String serializeDollarsCents(int cents) { StringBuffer buff = new StringBuffer(); buff.append(cents / 100); int extra = cents % 100; if (extra != 0) { buff.append('.'); if (extra < 10) { buff.append('0'); } buff.append(extra); } return buff.toString(); } public static int deserializeDollarsCents(String text) { if (text == null) { return 0; } else { int split = text.indexOf('.'); int cents = 0; if (split > 0) { cents = Integer.parseInt(text.substring(0, split)) * 100; text = text.substring(split+1); } return cents + Integer.parseInt(text); } } public static String serializeIntArray(int[] values) { StringBuffer buff = new StringBuffer(); for (int i = 0; i < values.length; i++) { if (i > 0) { buff.append(' '); } buff.append(values[i]); } return buff.toString(); } private static int[] resizeArray(int[] array, int size) { int[] copy = new int[size]; System.arraycopy(array, 0, copy, 0, Math.min(array.length, size)); return copy; } public static int[] deserializeIntArray(String text) { if (text == null) { return new int[0]; } else { int split = 0; text = text.trim(); int fill = 0; int[] values = new int[10]; while (split < text.length()) { int base = split; split = text.indexOf(' ', split); if (split < 0) { split = text.length(); } int value = Integer.parseInt(text.substring(base, split)); if (fill >= values.length) { values = resizeArray(values, values.length*2); } values[fill++] = value; while (split < text.length() && text.charAt(++split) == ' '); } return resizeArray(values, fill); } } } libjibx-java-1.1.6a/tutorial/example20/Customer.java0000644000175000017500000000044210347705552022216 0ustar moellermoeller package example20; public class Customer { private int customerNumber; private String firstName; private String lastName; private String street; private String city; private String state; private Integer zip; private int total; private int[] orders; } libjibx-java-1.1.6a/tutorial/example20/binding.xml0000644000175000017500000000145310347705552021711 0ustar moellermoeller libjibx-java-1.1.6a/tutorial/example20/data.xml0000644000175000017500000000047110347705552021207 0ustar moellermoeller John Smith 12345 Happy Lane Plunk WA 98059 818.42 2393901 3119013 3221010 4390901 6501931 libjibx-java-1.1.6a/tutorial/example21/0000755000175000017500000000000011021525524017540 5ustar moellermoellerlibjibx-java-1.1.6a/tutorial/example21/Customer.java0000644000175000017500000000025510347705602022215 0ustar moellermoeller package example21; public class Customer { private Name name; private String street; private String city; private String state; private Integer zip; } libjibx-java-1.1.6a/tutorial/example21/Directory.java0000644000175000017500000000015410347705602022356 0ustar moellermoeller package example21; import java.util.HashMap; public class Directory { private HashMap customerMap; } libjibx-java-1.1.6a/tutorial/example21/HashMapper.java0000644000175000017500000001106110347705602022441 0ustar moellermoeller package example21; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.jibx.runtime.IAliasable; import org.jibx.runtime.IMarshallable; import org.jibx.runtime.IMarshaller; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshaller; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.MarshallingContext; import org.jibx.runtime.impl.UnmarshallingContext; public class HashMapper implements IMarshaller, IUnmarshaller, IAliasable { private static final String SIZE_ATTRIBUTE_NAME = "size"; private static final String ENTRY_ELEMENT_NAME = "entry"; private static final String KEY_ATTRIBUTE_NAME = "key"; private static final int DEFAULT_SIZE = 10; private String m_uri; private int m_index; private String m_name; public HashMapper() { m_uri = null; m_index = 0; m_name = "hashmap"; } public HashMapper(String uri, int index, String name) { m_uri = uri; m_index = index; m_name = name; } /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#isExtension(int) */ public boolean isExtension(int index) { return false; } /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#marshal(java.lang.Object, * org.jibx.runtime.IMarshallingContext) */ public void marshal(Object obj, IMarshallingContext ictx) throws JiBXException { // make sure the parameters are as expected if (!(obj instanceof HashMap)) { throw new JiBXException("Invalid object type for marshaller"); } else if (!(ictx instanceof MarshallingContext)) { throw new JiBXException("Invalid object type for marshaller"); } else { // start by generating start tag for container MarshallingContext ctx = (MarshallingContext)ictx; HashMap map = (HashMap)obj; ctx.startTagAttributes(m_index, m_name). attribute(m_index, SIZE_ATTRIBUTE_NAME, map.size()). closeStartContent(); // loop through all entries in hashmap Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry)iter.next(); ctx.startTagAttributes(m_index, ENTRY_ELEMENT_NAME); if (entry.getKey() != null) { ctx.attribute(m_index, KEY_ATTRIBUTE_NAME, entry.getKey().toString()); } ctx.closeStartContent(); if (entry.getValue() instanceof IMarshallable) { ((IMarshallable)entry.getValue()).marshal(ctx); ctx.endTag(m_index, ENTRY_ELEMENT_NAME); } else { throw new JiBXException("Mapped value is not marshallable"); } } // finish with end tag for container element ctx.endTag(m_index, m_name); } } /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#isPresent(org.jibx.runtime.IUnmarshallingContext) */ public boolean isPresent(IUnmarshallingContext ctx) throws JiBXException { return ctx.isAt(m_uri, m_name); } /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#unmarshal(java.lang.Object, * org.jibx.runtime.IUnmarshallingContext) */ public Object unmarshal(Object obj, IUnmarshallingContext ictx) throws JiBXException { // make sure we're at the appropriate start tag UnmarshallingContext ctx = (UnmarshallingContext)ictx; if (!ctx.isAt(m_uri, m_name)) { ctx.throwStartTagNameError(m_uri, m_name); } // create new hashmap if needed int size = ctx.attributeInt(m_uri, SIZE_ATTRIBUTE_NAME, DEFAULT_SIZE); HashMap map = (HashMap)obj; if (map == null) { map = new HashMap(size); } // process all entries present in document ctx.parsePastStartTag(m_uri, m_name); while (ctx.isAt(m_uri, ENTRY_ELEMENT_NAME)) { Object key = ctx.attributeText(m_uri, KEY_ATTRIBUTE_NAME, null); ctx.parsePastStartTag(m_uri, ENTRY_ELEMENT_NAME); Object value = ctx.unmarshalElement(); map.put(key, value); ctx.parsePastEndTag(m_uri, ENTRY_ELEMENT_NAME); } ctx.parsePastEndTag(m_uri, m_name); return map; } }libjibx-java-1.1.6a/tutorial/example21/Name.java0000644000175000017500000000014610347705602021273 0ustar moellermoeller package example21; public class Name { private String firstName; private String lastName; } libjibx-java-1.1.6a/tutorial/example21/binding0.xml0000644000175000017500000000214410347705602021764 0ustar moellermoeller libjibx-java-1.1.6a/tutorial/example21/binding1.xml0000644000175000017500000000202310347705602021761 0ustar moellermoeller libjibx-java-1.1.6a/tutorial/example21/binding2.xml0000644000175000017500000000202610347705602021765 0ustar moellermoeller libjibx-java-1.1.6a/tutorial/example21/binding3.xml0000644000175000017500000000176010347705602021772 0ustar moellermoeller libjibx-java-1.1.6a/tutorial/example21/data0.xml0000644000175000017500000000163110347705602021263 0ustar moellermoeller 12345 Happy Lane Plunk 932 Easy Street Fort Lewis 12345 Happy Lane Plunk 12345 Plunket Lane Happy libjibx-java-1.1.6a/tutorial/example21/data1.xml0000644000175000017500000000226110347705602021264 0ustar moellermoeller 12345 Happy Lane Plunk 932 Easy Street Fort Lewis 12345 Happy Lane Plunk 12345 Plunket Lane Happy libjibx-java-1.1.6a/tutorial/example22/0000755000175000017500000000000011023035700017533 5ustar moellermoellerlibjibx-java-1.1.6a/tutorial/example22/BindingSelector.java0000644000175000017500000001436410347705622023500 0ustar moellermoeller package example22; import java.io.OutputStream; import java.io.Writer; import org.jibx.runtime.BindingDirectory; import org.jibx.runtime.IBindingFactory; import org.jibx.runtime.IMarshallable; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.MarshallingContext; import org.jibx.runtime.impl.UnmarshallingContext; public class BindingSelector { /** URI of version selection attribute. */ private final String m_attributeUri; /** Name of version selection attribute. */ private final String m_attributeName; /** Array of version names. */ private final String[] m_versionTexts; /** Array of bindings corresponding to versions. */ private final String[] m_versionBindings; /** Basic unmarshalling context used to determine document version. */ private final UnmarshallingContext m_context; /** Stream for marshalling output. */ private OutputStream m_outputStream; /** Encoding for output stream. */ private String m_outputEncoding; /** Output writer for marshalling. */ private Writer m_outputWriter; /** Indentation for marshalling. */ private int m_outputIndent; /** * Constructor. * * @param uri version selection attribute URI (null if none) * @param name version selection attribute name * @param versions array of version texts (first is default) * @param bindings array of binding names corresponding to versions */ public BindingSelector(String uri, String name, String[] versions, String[] bindings) { m_attributeUri = uri; m_attributeName = name; m_versionTexts = versions; m_versionBindings = bindings; m_context = new UnmarshallingContext(); m_outputIndent = -1; } /** * Get initial unmarshalling context. This gives access to the unmarshalling * context used before the specific version is determined. The document * information must be set for this context before calling {@link * #unmarshalVersioned}. * * @return initial unmarshalling context */ public IUnmarshallingContext getContext() { return m_context; } /** * Set output stream and encoding. * * @param outs stream for document data output * @param enc document output encoding, or null for default */ void setOutput(OutputStream outs, String enc) { m_outputStream = outs; m_outputEncoding = enc; } /** * Set output writer. * * @param outw writer for document data output */ void setOutput(Writer outw) { m_outputWriter = outw; } /** * Set nesting indent spaces. * * @param indent number of spaces to indent per level, or disable * indentation if negative */ void setIndent(int indent) { m_outputIndent = indent; } /** * Marshal according to supplied version. * * @param obj root object to be marshalled * @param version identifier for version to be used in marshalling * @throws JiBXException if error in marshalling */ public void marshalVersioned(Object obj, String version) throws JiBXException { // look up version in defined list String match = (version == null) ? m_versionTexts[0] : version; for (int i = 0; i < m_versionTexts.length; i++) { if (match.equals(m_versionTexts[i])) { // version found, create marshaller for the associated binding IBindingFactory fact = BindingDirectory. getFactory(m_versionBindings[i], obj.getClass()); MarshallingContext context = (MarshallingContext)fact.createMarshallingContext(); // configure marshaller for writing document context.setIndent(m_outputIndent); if (m_outputWriter == null) { if (m_outputStream == null) { throw new JiBXException("Output not configured"); } else { context.setOutput(m_outputStream, m_outputEncoding); } } else { context.setOutput(m_outputWriter); } // output object as document context.startDocument(m_outputEncoding, null); ((IMarshallable)obj).marshal(context); context.endDocument(); return; } } // error if unknown version in document throw new JiBXException("Unrecognized document version " + version); } /** * Unmarshal according to document version. * * @param clas expected class mapped to root element of document (used only * to look up the binding) * @return root object unmarshalled from document * @throws JiBXException if error in unmarshalling */ public Object unmarshalVersioned(Class clas) throws JiBXException { // get the version attribute value (using first value as default) m_context.toStart(); String version = m_context.attributeText(m_attributeUri, m_attributeName, m_versionTexts[0]); // look up version in defined list for (int i = 0; i < m_versionTexts.length; i++) { if (version.equals(m_versionTexts[i])) { // version found, create unmarshaller for the associated binding IBindingFactory fact = BindingDirectory. getFactory(m_versionBindings[i], clas); UnmarshallingContext context = (UnmarshallingContext)fact.createUnmarshallingContext(); // return object unmarshalled using binding for document version context.setFromContext(m_context); return context.unmarshalElement(); } } // error if unknown version in document throw new JiBXException("Unrecognized document version " + version); } }libjibx-java-1.1.6a/tutorial/example22/Customer.java0000644000175000017500000000036710347705622022224 0ustar moellermoeller package example22; public class Customer { public Person person; public String street; public String city; public String state; public Integer zip; public String phone; public int rating; public String version; } libjibx-java-1.1.6a/tutorial/example22/Person.java0000644000175000017500000000021010347705622021654 0ustar moellermoeller package example22; public class Person { private String firstName; private String lastName; private int customerNumber; } libjibx-java-1.1.6a/tutorial/example22/Test.java0000644000175000017500000000747310347705622021347 0ustar moellermoeller package example22; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.InputStreamReader; import org.jibx.extras.DocumentComparator; import org.jibx.runtime.*; /** * Test program for the JiBX framework. Works with two or three command line * arguments: mapped-class, in-file, and out-file (optional, only needed if * different from in-file). You can also supply a multiple of three input * arguments, in which case each set of three is processed in turn (in this case * the out-file is required). Unmarshals documents from files using the binding * defined for the mapped class, then marshals them back out using the same * bindings and compares the results. In case of a comparison error the output * file is left as temp.xml. * * @author Dennis M. Sosnoski * @version 1.0 */ public class Test { // definitions for version attribute on document root element private static final String VERSION_URI = null; private static final String VERSION_NAME = "version"; // attribute text strings used for different document versions private static String[] VERSION_TEXTS = { "1.0", "1.1", "1.2" }; // binding names corresponding to text strings private static String[] VERSION_BINDINGS = { "binding0", "binding1", "binding2" }; public static void main(String[] args) { if (args.length == 1) { // delete generated output file if present File temp = new File("temp.xml"); if (temp.exists()) { temp.delete(); } try { // process input file according to declared version BindingSelector select = new BindingSelector(VERSION_URI, VERSION_NAME, VERSION_TEXTS, VERSION_BINDINGS); IUnmarshallingContext context = select.getContext(); context.setDocument(new FileInputStream(args[0]), null); Customer customer = (Customer)select. unmarshalVersioned(Customer.class); // now marshal to in-memory array with same document version ByteArrayOutputStream bos = new ByteArrayOutputStream(); select.setOutput(bos, "UTF-8"); select.marshalVersioned(customer, customer.version); // run comparison of output with original document InputStreamReader brdr = new InputStreamReader (new ByteArrayInputStream(bos.toByteArray()), "UTF-8"); FileReader frdr = new FileReader(args[0]); FileOutputStream fos = new FileOutputStream("temp.xml"); fos.write(bos.toByteArray()); fos.close(); DocumentComparator comp = new DocumentComparator(System.err); if (!comp.compare(frdr, brdr)) { // report mismatch with output saved to file // FileOutputStream fos = new FileOutputStream("temp.xml"); // fos.write(bos.toByteArray()); // fos.close(); System.err.println("Error testing on input file " + args[0]); System.err.println("Saved output document file path " + temp.getAbsolutePath()); System.exit(1); } } catch (Exception e) { e.printStackTrace(); } } else { System.err.println("Usage: java exampl22.Test in-file\n" + "Leaves output as temp.xml in case of error"); System.exit(1); } } } libjibx-java-1.1.6a/tutorial/example22/binding0.xml0000644000175000017500000000076510347705622021776 0ustar moellermoeller libjibx-java-1.1.6a/tutorial/example22/binding1.xml0000644000175000017500000000131110347705622021763 0ustar moellermoeller libjibx-java-1.1.6a/tutorial/example22/binding2.xml0000644000175000017500000000127410347705622021774 0ustar moellermoeller libjibx-java-1.1.6a/tutorial/example22/data0.xml0000644000175000017500000000042210347705622021263 0ustar moellermoeller 123456789 John Smith 12345 Happy Lane Plunk WA 98059 888.555.1234 libjibx-java-1.1.6a/tutorial/example22/data1.xml0000644000175000017500000000043610347705622021271 0ustar moellermoeller Smith
12345 Happy Lane Plunk WA 98059
888.555.1234 10
libjibx-java-1.1.6a/tutorial/example22/data2.xml0000644000175000017500000000035310347705622021270 0ustar moellermoeller Smith
12345 Happy Lane
888.555.1234 10
libjibx-java-1.1.6a/tutorial/example22/temp.xml0000644000175000017500000000037310347705622021244 0ustar moellermoellerSmith
12345 Happy Lane
888.555.123410
libjibx-java-1.1.6a/tutorial/example3/0000755000175000017500000000000011021525524017460 5ustar moellermoellerlibjibx-java-1.1.6a/tutorial/example3/Customer.java0000644000175000017500000000030410347705636022137 0ustar moellermoeller package example3; public class Customer { public Person person; public String street; public String city; public String state; public Integer zip; public String phone; } libjibx-java-1.1.6a/tutorial/example3/Person.java0000644000175000017500000000020710347705636021606 0ustar moellermoeller package example3; public class Person { private String firstName; private String lastName; private int customerNumber; } libjibx-java-1.1.6a/tutorial/example3/binding.xml0000644000175000017500000000115210071714774021626 0ustar moellermoeller libjibx-java-1.1.6a/tutorial/example3/data.xml0000644000175000017500000000042210071714774021124 0ustar moellermoeller WA 98059 Plunk 12345 Happy Lane 123456789 John Smith 888.555.1234 libjibx-java-1.1.6a/tutorial/example3/out.xml0000644000175000017500000000042210071714774021022 0ustar moellermoeller 123456789 John Smith 12345 Happy Lane Plunk WA 98059 888.555.1234 libjibx-java-1.1.6a/tutorial/example5/0000755000175000017500000000000011021525524017462 5ustar moellermoellerlibjibx-java-1.1.6a/tutorial/example5/Customer.java0000644000175000017500000000040210347705662022137 0ustar moellermoeller package example5; public class Customer { public int customerNumber; public String firstName; public String lastName; public String street; public String city; public String state; public Integer zip; public String phone; } libjibx-java-1.1.6a/tutorial/example5/binding.xml0000644000175000017500000000074510347705662021641 0ustar moellermoeller libjibx-java-1.1.6a/tutorial/example5/data.xml0000644000175000017500000000042210347705662021130 0ustar moellermoeller 123456789 John Smith 12345 Happy Lane Plunk WA 98059 888.555.1234 libjibx-java-1.1.6a/tutorial/example6/0000755000175000017500000000000011021525524017463 5ustar moellermoellerlibjibx-java-1.1.6a/tutorial/example6/Address.java0000644000175000017500000000022010347705676021727 0ustar moellermoeller package example6; public class Address { public String street; public String city; public String state; public Integer zip; } libjibx-java-1.1.6a/tutorial/example6/Customer.java0000644000175000017500000000027310347705676022153 0ustar moellermoeller package example6; public class Customer { public int customerNumber; public String firstName; public String lastName; public Address address; public String phone; } libjibx-java-1.1.6a/tutorial/example6/binding.xml0000644000175000017500000000103610347705676021641 0ustar moellermoeller libjibx-java-1.1.6a/tutorial/example6/data.xml0000644000175000017500000000042210347705676021136 0ustar moellermoeller 123456789 John Smith 12345 Happy Lane Plunk WA 98059 888.555.1234 libjibx-java-1.1.6a/tutorial/example7/0000755000175000017500000000000011021525524017464 5ustar moellermoellerlibjibx-java-1.1.6a/tutorial/example7/Customer.java0000644000175000017500000000030410347705716022142 0ustar moellermoeller package example7; public class Customer { public Person person; public String street; public String city; public String state; public Integer zip; public String phone; } libjibx-java-1.1.6a/tutorial/example7/Person.java0000644000175000017500000000020410347705716021606 0ustar moellermoeller package example7; public class Person { public int customerNumber; public String firstName; public String lastName; } libjibx-java-1.1.6a/tutorial/example7/binding.xml0000644000175000017500000000050110347705716021631 0ustar moellermoeller libjibx-java-1.1.6a/tutorial/example7/data.xml0000644000175000017500000000052310347705716021134 0ustar moellermoeller 12345 Happy Lane Plunk WA 98059

Leave package behind bushes to left of door

888.555.1234
libjibx-java-1.1.6a/tutorial/example7/out.xml0000644000175000017500000000024710347705716021035 0ustar moellermoeller 12345 Happy Lane Plunk WA 98059 888.555.1234 libjibx-java-1.1.6a/tutorial/example8/0000755000175000017500000000000011021525524017465 5ustar moellermoellerlibjibx-java-1.1.6a/tutorial/example8/Airport.java0000644000175000017500000000017410347705734021767 0ustar moellermoeller package example8; public class Airport { private String code; private String name; private String location; } libjibx-java-1.1.6a/tutorial/example8/Carrier.java0000644000175000017500000000021710347705734021734 0ustar moellermoeller package example8; public class Carrier { private String code; private String name; private String url; private int rating; } libjibx-java-1.1.6a/tutorial/example8/TimeTable.java0000644000175000017500000000030610541744662022211 0ustar moellermoeller package example8; import java.util.ArrayList; import java.util.LinkedList; public class TimeTable { private ArrayList carriers; private LinkedList airports; private String[] notes; } libjibx-java-1.1.6a/tutorial/example8/binding.xml0000644000175000017500000000141410541744662021635 0ustar moellermoeller libjibx-java-1.1.6a/tutorial/example8/data.xml0000644000175000017500000000160110541744662021132 0ustar moellermoeller http://www.northleft.com Northleft Airlines http://www.classyskylines.com Classy Skylines Boston, MA Logan International Airport Seattle, WA Seattle-Tacoma International Airport Los Angeles, CA Los Angeles International Airport Information for January 1, 2006, to March 30, 2006 Travelers within the Continental United States are advised to allow a minimum of 12 hours for security checks at the departure airport libjibx-java-1.1.6a/tutorial/example9/0000755000175000017500000000000011021525524017466 5ustar moellermoellerlibjibx-java-1.1.6a/tutorial/example9/Airport.java0000644000175000017500000000017410347705752021770 0ustar moellermoeller package example9; public class Airport { private String code; private String name; private String location; } libjibx-java-1.1.6a/tutorial/example9/Carrier.java0000644000175000017500000000021710347705752021735 0ustar moellermoeller package example9; public class Carrier { private String code; private String name; private String url; private int rating; } libjibx-java-1.1.6a/tutorial/example9/TimeTable.java0000644000175000017500000000032110347705752022210 0ustar moellermoeller package example9; import java.util.LinkedList; import java.util.List; public class TimeTable { private List children; private static List listFactory() { return new LinkedList(); } } libjibx-java-1.1.6a/tutorial/example9/binding.xml0000644000175000017500000000126510347705752021643 0ustar moellermoeller libjibx-java-1.1.6a/tutorial/example9/data.xml0000644000175000017500000000125110347705752021135 0ustar moellermoeller http://www.northleft.com Northleft Airlines http://www.classyskylines.com Classy Skylines Boston, MA Logan International Airport Seattle, WA Seattle-Tacoma International Airport Los Angeles, CA Los Angeles International Airport libjibx-java-1.1.6a/tutorial/build.xml0000644000175000017500000003260510434265730017600 0ustar moellermoeller libjibx-java-1.1.6a/tutorial/index.html0000644000175000017500000001432710350107366017752 0ustar moellermoeller Tutorial Example Code

Tutorial Example Code

This area has the full code for the examples shown in the binding tutorial. The subdirectories correspond to the sequence of tutorial diagrams. The source code has been modified from the diagrams shown in the tutorial to use a separate package for each example, but should otherwise match what you see in the diagrams. Here's the list of code examples:

The Ant build.xml file in this directory gives targets for compiling and running each example. Most don't supply any interesting output (unless there's an error), but if you want to experiment with code based on a particular example (or try out variations of the sample XML documents) the build.xml should at least get you started.

Disclaimer

This code gives samples of working with JiBX data binding. It may be reused and redistributed without restriction, but is supplied subject to the following disclaimer. If you do not accept the terms of the disclaimer, do not use this code.

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 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


libjibx-java-1.1.6a/changes.txt0000644000175000017500000000544611017734310016261 0ustar moellermoellerFixes since 1.1: 1. Corrected a pair of problems with nested unordered groups, which resulted in exceptions during code generation. 2. Fixed the "j2me" target for building under Windows. 3. Changed child component order under element to namespace, format include; corrected binding.xsd, binding.dtd, and documentation to match. 4. Extended support to allow definitions from included bindings to be used within the including binding, and to support namespace scoping (global namespaces within the including binding apply to all included bindings; global namespaces within included binding apply only to that binding) 5. Fixed handling of abstract with attributes (with or without content). 6. Added check for abstract class used directly (needs factory-method). 7. Loosened checks for element name on child components of collection to only test element children. 8. Fixed problem with abstract base mapping use in unordered collection failing code generation (stack size mismatch). 9. Corrected a problem in working with arrays of longs or doubles which could result in modified classes failing JVM validation. 10. Corrected handling of optional mapping references. 11. Changed default JiBX build Ant target to build the full distribution with debug information included, added a new "small-jars" target to compile and jar without debug information. 12. Added propagation of namespaces defined in abstract s up to the context of each reference to those s. 13. Fixed add-constructors='true' option to make existing default constructors accessible, and to add superclass default constructors where necessary. 14. Fixed handling of abstract with no content or attributes present 15. Removed erronous warning message about default used without usage='optional' (default actually implies optional) 16. Corrected problem with adding constructor to mapped user interfaces when add-constructors="true". 17. Added enum-value-method='...' option to support Java 5 enums with values which don't match the names (using the defined method to get the actual text value from an enum instance). 18. Corrected binding validation problem where using the same name in different namespaces reported a duplicate name error. 19. Fixed problems with nillable="true" and optional="true" combination on a element, and also with primitive values which are nillable and/or optional. 20. Fixed problems with file path names using a period, and with binding file names including characters not allowed in Java identifiers. 21. Corrected a problem which sometimes caused ArrayIndexOutOfBoundsException when writing to an ISO-8859-1 encoded stream. 22. Added validation checks for several binding constructs which were either ambiguous, unsupported, or could cause errors in code generation. libjibx-java-1.1.6a/readme.html0000644000175000017500000001306311021731530016221 0ustar moellermoeller JiBX: 1.1.6 Production Release

Welcome to the 1.1.6a Production Release

This 1.1.6a production release is a minor correction to the 1.1.6 release, which fixes two particular issues: Paths on Windows were handled incorrectly in 1.1.6, leading to failures when default values were specified for primitive values, and the starter project sample had an error in the "bind" Ant task definition. It includes all the other features of 1.1.6, with support for StAX parsers and writers, "flexible" unmarshalling for unordered groups, required elements in unordered groups, and a host of other features added since the 1.0 release. Check the Status page of the included documentation for a more complete list of changes.

Incompatibility Note: The 1.1.6 release contains a backward-incompatible change to the actual binding factory structure. If you compile a binding using the 1.1.6 binding compiler and then try to use the bound classes with an older runtime you'll get an error like:


Unable to access binding information for class xxx.xxx.xxx.Xxx
Make sure classes generated by the binding compiler are available at runtime

This change was necessary to solve a problem with very large binding definitions, which previously could create methods in the generated factory class which were larger than the JVM limit. With this change in place, there should be no practical limit on the size of bindings.

The docs subdirectory contains the full JiBX documentation, mirroring the version posted on the web site as of the date of this release. Even though you've got the documentation locally, you may still want to check the web site for updates on known problems or new subprojects. The online Status page will give you information on problems and updates, so it's good to check that page periodically for new information.

To help you get started using JiBX, you can find a simple starter project in the starter directory The starter project is based on the first sample from the binding tutorial. The source codes for the full set of samples in the tutorial are also provided, separately.

Acknowledgements

This download includes the XPP3 Pull Parser implementation of the XMLPull parser API. See the XPP3 home page for details on the parser.

This download includes the Apache BCEL Byte Code Engineering Library. See the BCEL home page for details on the library.

This download includes the StAX 1.0 API and WoodStox parser implementation from the Apach Axis2 project. See the Apache Axis2 home page for details on these libraries.


>>‚’’’’~¾~†Æ†¦Ö¦þ¾â¾>>þffþŠÎêÎŽÞòޚΚfff^®^®®þ’’þŽ‚‚VVV²Ú²¦Ò¦‚‚‚†Â†þæöæ222ºÞº:ž:®®®ÆÆþ¢¢¢ÆâÆnnnöööÖÖþþFFF¾¾¾¾Þ¾ÎæÎöúö‚‚þVVþÖêÖÆÆÆ"""ÞîÞ&&þÖÖÖzzzââþRªRÊÊÊJJJ¶¶¶ââârºr úþúZZZššš***NNþŠŠŠvvþ²²þ¢¢þæòæ**þêêþÂÞÂ2š2ÎÎÎRRRB¢B¶¶þêêê:::¦¦¦..þ^^^êòêvvvººþÎÎþb²bFFþ66þâîâ’Ê’^^þ þ––þ††þ*–*ææærrþj¶jNNNÂÂþÚÚÚF¢FòòþÂÂÂÒÒÒºººBBB † ²²²žžžÞÞþªªª666bbbjjj&&&...~~~þþþ–––òöòŽŽŽrrr†††¢Î¢ššþŠŠþööþúúú¦¦þþJ¦JZ®Zzzþjjþz¾zææþÖîÖîîþÆæÆÚÚþŠÆŠJJþÞÞÞRRþ¾¾þÊÊþÒÒþ""þBBþ::þêöê22þúúþ"’"ªÖªZZþîöîžžþ®Ö®ŽÆŽþ>¢>žÎž~~þf²f¶Ú¶ŽŽþbbþn¶n&’&nnþªªþ–Ê–.–.6š6þþîîîN¦N>ž>VªVF¦F&–&‚Švºv.š.^²^6ž6nºn–ΖžÒž~Â~òúò†®Ú®ŽÊŽNªNf¶fòòòV®VŽ¶Þ¶v¾vІÂâÂÚîÚÊæÊâòâ¢Ò¢ÒêÒÊâÊÚêÚÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,N„þýH° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cÊœI³¦Í›8sêÜɳ§ÏŸ1GôB ‡Î H“*]Ê´iM6<¢òÈâÃO <ñGEAQ¯¨šðÆ zHH8ĈŸ¶³uJ·®Ý»xwîÀà -yü<©“u‡`Âñðà ‡ ¬ gHÂ8tüœ2°„á¼ C‹Múâ^‰ð£‰kšè°ê§Wœt´¾öã#NìÙm¡e+A*ü$š–ÏÓÞŒx“è #Øøpíç œt>þÃy2M ö£o4)2¸ŸïEß (M¿¾ýû>÷úðñ†È ?àñ#РV>¨Ö6¸Vg@A ÎP ÄM‘â°#Œ`PG D ` …k›i‚"ZÓ€gÑ Ä4~d¡2îˆß‘H&©$I{àäp(à{h’Èøadéö uРÞŒ$2ÏùAÈg!GÉý‘ ÕaÇ WTQ¡ ½¬€• œm6ŽpðAØD”à‡ rL‘È .i饘fºÐ^SLqà rôòå—~œ¶Â5ø„¤ž&‡[þ©jøf‡¨QÑ!Œ8°È"ŒÌ€§@u´èG´ú« yºÈD$"*P{hjíµØyt°0„€ß tœyÉ*„‚ˆ­­Y›±ÂQHÐý=ôò«{öYlž¿î;l Ô$­´~œí 7L×¶~LAD@X±@Oà‡Y”ë „u ›±B`¥²Äá@}péGB8;оÁ*+ÐÁœ!ÃÐh~°yöV-ðµ@ Áçp ~€ ÀPgÛ h‚ö¡ pY èºF ÀȪ Î ÐÍð ¹Ð¾P ßà ¥pˆ Ø0˜`w/ð:à-à <¦ F F G¨  µ ®ð fð ÀŒ¨P µ .YAp F‚Ð@ Îw¨Ðn± Õ ÚÐ¥ APïf /ð Zè¥Ð_@Yi0\ÊA «à N0a¦` Üðµðu¦àŒÎàà Úþ½õƒ<ñ  ´ð ~°oiwŽð ~à ÝÈ\ºÐÅË0º¹ …@ ]h5 xJ÷ 2°Apjk¸g…  À@ bg߀‡ËÇlÃ¥pŽ~€fy7°w ®µÍ € PÖ !P ¤¨f0W± ŒÅŠ¥z!Ù`oA Àª °°gjÆufi–-P5 `¤u Ã_ªà ›è ÐU À€ ¿˜¸à ¨à”Ç5i:@ ˜P`-p|~ ÑàÕPVw/àiuh Õ  µÐ{¶‰ ‚þ'/0ü‡˜Àΰpì–_ Ä XÐ ¿À ÷h­pf× i@‘ —NP„¹ Ž€‡`èEWµ oŽöÐ Øà.0Oyˆ4©5 ‚–N@ –Ð ´©ª ˜À "&†”° "ð c Í|ÌP¸X¢Ð Q€ ßÎ/À•°° å÷¥€mÐ á&.pˆ.à gÈ ’`.@ f`l¥0ÀW‚¸fm¶Úбй€ ¸`×h€fÊXÛ` YØj€ ¾ ßàâ§Õ…0 a`-À"`"fbþ^f°yZ¨ŠjÔ¶f“g ’¥à ´àÜà ×P΀ ~ Ù0‰°_Ð×ÅP 0a ±` ×ð±ð{ àͧ 2§Îð5ÀeÅ Â0WêÅzs  Ç`¸` Ð`Ô` !ðU¨m  °˜°ðs6ŒÚiÀ-° ’ °P °P ¸\2 º ÚÐ  `à›~Ð   ˜à ­€ ᇠ`P¥0–Í@ èuÀ DW‰Ðs AàÜir…~ЮÈ&WÛ† 0‰¸]PaP‰˜àþƒÑ]P èõ µ “fÀd‡ÕÇ€ Û™¸PB{mÌàquZÞp ÌX–P Ð eW?€— Ñ 0´Ðhª p ´`o ´Ì€ ß °ɦ¶B» Aà /в.¶«Ð ÛP ˆipnËApÇ0³õ.àÌhråáPš®ÐÐmBÛèe \Õ7VÌð¢ß ’ÐØi´˜ysµV£™Ð¢›+¹¸  •[[w ¶.]€ ÿ—YÛ2¶Ì _{BG aźÊМ[ÐÌ« `Ëö°°bþ€ Êë @¶.€ ´hX’®PÖe™[KV¥ ¡ŒµN„†'ನ¡¿†e‡ŽÐ pŽÔà/P‡‰À¿ í¡J <ð›<Á ¿|,Á\Ì;ê,Œ °P ¿Ð¨ëë0ß  “á  7A€ :ÈÀ¢ ƒ+üïUŒ?»Ã@ÄBÜ-`y GX- ÑÀ©üwIç’ oÍ Åp:)]úÁ Á Ѱ‰á ]p. ÀðÁ mpÁ1d”Æ` ¡ aàÅ Ñ °pk׿6:ÄþJ`†gõ%¿ñËÁx&AÌ€È; "0‘‰ÐÀÁuXÈŒ¡.à&Ð(™€ ‚«È¤eÈ™\ÊLÊŠìȉ`pÈ«œÁA€Nª|Ë«¬Ê¤•¦Ä†LWÜà¬Ü@ .+¿—,`È µ¹¬:ªÈqÚh¦Lȹü˦œÛàÖPÃ¼ÆÆ¥¾~¼?QÚ /à °§•i ¸j]@ J ÌÐÚ° `¥ñ °0hEWŽ`Ë~p ÇPÆ øÏ9KWôœÝ  ùÌ Ñ P  . f—eñ¼Ý@ ø5þ-À²þŒ 2`ÑÌ 0ü•ßððÏæÆ³ÀX=?Ð ®0¸ ƒ\Û@ JçU yÌ\ñ| ¢Ð ÐÐÒ° K™Å` ¢¸ñœ Úh–‘’ûU¦àЛx¼Ò  Ø¥˜ °àà鼉2 ¥ `ÚаPÕü5sý”PÕ] ÜðÏÏÐÇÀ ¾«d‘ÆÝð `Çå|=¢€sªðU\p° Uù– Û ¿Á <  ¸¾ a¦ Õ@Y¨Ð ?0 ñ˜0` o¦ -à ¾`°0]ÆQþÐ ý…Ì~€ Π“¡ªÄ «ÀÀÅ€s®0aP²Õ:  8im€ Åà !€aà {yPv´  Ð Pz¤WXèØÁÀ{i€ ¥àÛf° ¿à. .P È m`É00¹ï¥ŠÑmM¤nv–ÑT÷UßK   ÷• ©Øæ;© äX ? Àà›—¥ ´°€©Îð ?ÀÚ¹àÙm°Äà° Ãð ŽðNú¨pÁ-µe:°Ü˜Ù‰c îfP Á@ Ñ=- ¸ 2à°© ưV¹Ð J€±~´í±9Wt eþ h± eÜ º   ¹«P 5 ÝàÚ  &àÖ!ž[lx΀^µ0°Ð¨`ÖJ  °ÐmàЮµ@Û¨ù îh,'¦Š¢€ X¶ ë&°–?Ì Â`n¿`çÎðm`_úm` _"`2€  ¢X.‰—$Þsõd=o e5Æ /¿P µ€^Â.mðA ¶ ¥[ñ ¥0bZ®€YQ0‹Û€‘Û ª°¾0šSæ ÊP^PpX?Úð“J0Åൠ £† ªà lWNà± #ª*L ´ þµp ±ð¼=âU„Õù Pº&ð«ài% ÐÒmž±–bì8zZ¥° &\ÆëàÐ!` –à]ס’¸ aêh ˆ"`˘Pñj·–š·æµ€›¹ pó ÂK û ºðñÚðË·\~À {÷éÑâá¬ÛNWº  .pJ€÷ª€ó>ã~À‰ÐˆžRY sð`Ú`œ%¿pt~` ÃÀzŸŽÄPÉå¹å ±på Ÿ4´<~sbÃw°¢FM –p²ÒŽ`PXJ€ |þ]dµð W7.` ¸@kÀ ÐéÀ b:õhë dnv‡ o®ÃA cX^Ž x µ¢Èð›— J?0†ñƒV!]¹p¡ò£-×Qš­š Ó³µ®é’„K€«UTù‰0Ç„TmJEc Bƒ™`Ì`5‰2áÂkËJ=*+0 Âùi­ 1h¦téšàÌ×7LNr…Ù† –€Ï0 ‹E”7 8a…€†¬4nN¹0ãèE‹a&à2#C†_2hK¦íEE®‚ÄÊö¨o~Â0°æGñb’Ž>úùàëBÆ•-_ÆœYófÎ=þZôhÒ¥MŸFº³ h-BhðnUU¢L„1`"Q¢X˜:´ÐöLU,Q$U©¾­¦X4l;þLÃáǹ¹8®ÊR !|‡hq\ƒÎ/4ÀÔÂO o˜\ ¡ªÆq„±FÕS‚Âc5J•”©Á ²3á¯U6xÁ…g\Ï…õT¡ì›Ub‰/péÀQ,á°‰D‚hìSÅ9òP@î8ÀÁDƒXäËN%j4á›ì´IÄ&LŒ%œ '–gæSå… 6€&„ožQ¢†gbé¦:‰o¸D^Ø Œð,ya•6(«Ì_^P¬™Uc³M7ß„3N9ç¤þ³N;ïÄ3O=çgj¹¯² ݳPCE4QEe´QG],ˆjè&ˆË,…4SM7å´ÓѦéñÐD¦ñƒÔCQ@aTÎP˜ÆÔÓ@Uu±TóUOoÅ5W]wíŒè@4(àãC%À*4ÙŒƒ hxâ´^ ¨cˆPðƒ>xŽ;Ùà!Aòàµ\sÏE·M6nèÕYKm·TP{ñ…^FÅŒˆvš{ãU¬±e¬ÕDî ávkUì`W3bM¨˜A1§±7‘Œ-8ë…ÔƒÝ 5dŽ1¾÷ AààƒYËü¥wš'1öäÅÕ_‚A–£Ž;þHä <ÔxB!Ú9áÙ؆^XcŽw¸UMðˆ£<¦#Ôt¿;ìt{ DÔÈC(þðÃ5xÈà‰+ÔÐC#J B¸÷å!€8üà Aä¸¢Þˆå£ Æ¹‚ äà AÔX!7ä8!=²Ð7·Ÿ8Xà)ãŽiJ8…AxPŠ>¨€ƒ*nð£Ö…¸-h¸¢X‡@zà!<„0bŠ>Þ®"‘ºóÈ€‡X`¡—:ö#‘;Ô |„l ©Ø!¸‡â‰^ôæa?î¸Ý˜6JH¤¢eJx#€zÉxÀ'@Á¸Â þÎÖÍà rÐN ‡)Ôám}ØA nM¡ >xC|Õ‡3ˆÍ„'D!¤A@Øj¨°ˆ!0. °¡Z `©8ø x¨ ¸ €Q4ð–¨h rw í º<!r`L1 ˆ[ff BX„¨…A@!Ì8ð äàe~j (®@=jÐBëNFPÁ ètÔÀªÐÎq ‚ˆ@Ð`jˆÃz „à‚a@Á{3†v´a<3¸o ½ð|t›¨ýª˜Øƒ“NAšèö4Ñ uþ÷â ‹Á•«˜jOÝÓ¸ |€nM`šèÑ>EøbËôb=`ƒ½Y`îž!„£«× Þ@/wÏ ]Ö¶·ŒØƒ$bßè&øËàÐóUûÜ>Zøýï8Ì€TS8øB^Œ<Syµ=~M+ž!pÀÖo*°[_¬ÚɧÐmMœ´2±’vÔ¥>cPk¡Š©ƒ®0óʼ¡¾X§>v²—ÝìŒeaϾv¶·Ýío ×ðít8%âS8íà¾w¾÷½îIý× ¥å¬`ršÂ ê ;ÁûÝñ÷»&¼çq”ûá ¡Í^·{wë\1K϶&øÀ6?œþ¡„&ƶôE*}Ñ1K×WÏ}pÒ¢ËÜé°¿Ì @Í`{õ+zégíQ>Tž>Ê{±‚*Œ@½ ö ?}ê³½À4€¾õ Še^9àAÔ0*úH…iâ€@ØÃ ÕœðàTø11YóáÙŒá€HãHX5àƒ7¨²=€*Ð9È.6@8 À8À7™3À7ã¢* 5ÀÐ"0?à6œ°#5¸èƒDxÓÛ^Ѓˆ±«¾äÁû­äZ!-:¸žÀ€!€jÓ´7ЃH(NF#@¥=Àþ8è#À?*˜†:X„>(÷ã(  ׳<0‚:€3 ƒá:B3¤‚5c-„3‚=¸bŒ€A"âƒЄ|´EÈš7Ð,è?˜™:ðEÀ è§ ø´Ê8<`´ôÄOl¬o#zY EBÕ¢¢ª—=h%?˜BH„WôApÆð>`«é¢‚yÚB:Ø=ºÅE ‚¡i4ň®ˆ®Dè>XD„1ëâƒ6â€i¸ƒ*ÀFÙZŒ' Ы5£ZŘ=Ð-à€XoùÆì…òº M¸>pPÄÇ|4¡š‚`7þè^Ø- 8˜ÒêRyÅ @?è$`6ðà3M €Tä<8T<x#8øª®»0Ú&A ƒE €Fø3BèdDHÈ‚›¼:ÆàÆ8èEø>ˆ›'p9!§{x‚<؃8`„ðu”€˜ ÈK„: p}äÊ®D—ÓÁ¯+¿Èq°= ‚*¸-Aðƒ ‚=P8šÀ€ò3ɱª:ˆ 2ÒƒÀ€–H29Pƒb|)„È!£Ȫ±Ü n"ài³d¿܃<ȶ?N<5þñSþ£ð1½û¼,Ð$¯¤ÍÚ,—DhºÅÀMd·Êè…„[Œu£7µ[M`ƒÎÀM®›6@ÃËX¢:ØJÜ̶ËÀÍFë…­´ÍìÔÎí<²!=îÏðÏñ$ÏòìÊ^¸ƒ;PECyƒ‹>CI„8¸ÈÉÒ(;8NΠÏ^H&Ԡϸ¢ƒR) 7ðóDPÅj¼ÚZ9@(Èð¬ÐH„C)è&ÛjX¶ìƒ¼ öñéáÐT­=¸‚À4ÓP¯ ƒ$òƒâqS»âBÀ±¤J@Ê6u‚ 8¼•U°™!Ø Ð€P7oõÖ$D9Õ{NìK ‚8ȃEð2ˆÇE > 8È>@??€LÈó U ´¥çb‹ƒ  é›Õ¡Å•DÈ"z1‚E¸Aà€)8ÐBX #U "H-"æê,ÀÙÊp¦‚­» €:à ȃġ Ð2ÄØ?@C„¢ƒX\Ìà€v™0ÜÁ-`ΚðIB `⬌,Ђ?8Èi€©3¸]›,=:>0?`ÃþȺ!`Œ5ؤ·¨}–X¤ÔÑ™†K5°3øM@9RŒsõ#C?~…Ý!'pdÂ/¢UÞsÁ*Á¥Mƒ:ýF5H¨ì±Z?=í­ƒp€ ‚<`]?ðœiÈ=À*d݃&äø5ÞÍÙ§ ĬCÕƒ­“€dÅÊEj‹0Åx‚>0àQ¬ ð: ?¨/?‚8P#1ÊÕÉ<Ђ=ð ‚¹ƒE !l9X6Sƒ=¤6¨_§]QÅ >8*ðƒ'ØÅQŒ~dŒ @–Y½ „=0BíA¿bň `¿ÊZÞ%.6ÐþÄJ`rq"¸B¸ză~Ë5#`Ë€*¸n[¢<ðõ*àÏDž8!à³åØ–‚;.4ÔFˆ›7  !  `5€ƒ!€¦ (¸&Ë„2c\BЃ½*!S(Êfá—Bœ'k £ð–^ að:#è*8Є;¾ãñ•ųß$= o‘ !}+S-pŸŒ9È€*¸$9Ђå¬e’;­Øš&–f]A:öù›Â[º)6°U¸‚8„¹‚‚ èà>ÜaŒ3hx6=l ®,‚ þ ž,àŒ œèƒ8¨% ˜câØ!ø@?d AX #5À蹃,x5ÈĮ̈dn‰–C”A ½é‘èG(ø£¨§8ÞŒbæ¼ÛÀI.W¬'#8†VA@)˜››è-ŸB6Áœ43–8¸Ô›æ£>{ÉŒD@ÃÞì €¡Î$õ ¦6•) §„¡µ ¦. j󚌙@ÖÔÎð—ʰêÅ8kä”9‹Áž´VŒ›¶`¤¦ëº6)¸É,ØP»æë¾öë¿ìCy ¸?ì:¸Œ'0GdŒðR˸^»gCƒlƒÓéÄŒ°nÏxpýÖþ ìÑÞAX„&䜶©!ËЄ;ÀƒÙF°áムÄ3€NÔ8ÖfIS;´¹®Œð‚\Œ`'ÒVîÔm €80½?XÀ°`*7V 6X<Pèã‚Ç**(?ø}µÒ?èš ï;ú  ñ†Ä3X¥;!ܬ–7­ƒ?`ŸBÐJйFñ©h>èfȺƒÜõMÈïæï:Dè X mÌS–]îç»ß€«¶>]Lg`›åÓƒR¿Î2žÐƒð(àƒ`"Ø>8Fà=´Íå8ÈF  Àƒ‰«P¹gš†.ìôð<7;nla«}-@ñ+ì`ƒDx®°æ £Êàˆ´¼7d?äÌ@(*TÍINÒ£â>ÛÁ5Ì€NƒäÏ:ЃC}Õrµeƒ=X{6Ò Â€<D`„?(_ê‚›† Ñ5mÔóc/;nd]`õa ±»‰«möƒ*`Z<*°'¦ÊèBp0ÐÚ)øƒQã¥g"o‘&5ð-5Èè#„'þ`ƒ0ƺ,€SÔ×=k>è(#Øœ:0×^ˆ³+ðÖ'8-P½Œþ±"àèÞ5>í¤§ƒ3„‹.˜ ˆÕ^!0öŠg{h›A€{ÄÖ„,ºOÓ>€!øƒ7¨{A¸,¸‚„ÍŒ J `:vÀ«™­ÍfÙèùÔmü€þ C¸O"˪ì@è¶U«¸&³5:Èœ?rÅÃÿ|AÀíÊØžªž½nûÜ—¶wy:<Ç °â}©ÑMß'þU¼áçýÌÈÕýç‡~ÕhÎè§þê·þë»Çº@(o W ˜¬уÙ,”;68_Œ8W!•¼Œ)XµßF½wd~‘f9Ĺºiˆ,#ü,hð A6U¦L«Sbˆ{œ`sâMÁDJìèñ#È"G’,iò$Ê”*W²léòåÁD½>¢x"„ L“j²Ì âÃO¢jfô™2EOœ#²ä$h$À x=ÃÄ `áAou4<Á6¬ÈÐ`:W¯‡tœA®WdÁÃ< @8ÐäA(d°þwAoì…é,[=öÙkvÞ‘È4È@ÜчέIÐãS¸ÉðtÄaAy¨1MzL£qP!.Nð5TA W CfðHÉ i9ÈÙʦ¥=ÈÈàÃOðR45©Z P/np6€Œ¯B @19\a+ P dà_1óˆä4ç‡3€€Z•BèAnÁCèò0®40JAAΰ:‚Ôüñê ˆE0…‹ø ŒD °aYq˜úÀƒ8øÈ9˜n] È÷§Ç=ò±’AAVP‡DH€Mú!ABÌþà €o€=`.w ¤Nðš‚Lc|xÀðAZ@x ˆ?ð  p°Ðò ŒóC/Œ°ˆ¢à ºBFiýäjÄöVBœ@S8p‚P  ´ð?9d!¥: úЇdy¤Àî $#hA†3Œ ˆš AhCˆ˜0€ùÐ21r|Ñø³ƒsÊW°ú°‚@ða‰èÁSC„´ ϹÂñÀ5R çx Ò (T¡ UàÁÂæÇ•²´¥.Éø£ŸLaƒèAž0…*ð´7 –ˆ7 þ ÉÓªÀ†” Oà@èÀTì€ TFp0ˆ©t¤U`*P°ƒ¯–`q`jrnC€>¨VCà@n©:ì t€† Õ*Äá 7xà ¦qÀõ#XåijÂÓ*Ü¡lÀ†Ã26ª Òˆ¼©%ÙÐz‡8|õ?¹Áâ3ÔtÎѼæ‡ô!©<… Î`ZMø(y$ÈIUª “½´¸Æ=.r“«\—öá†Ë}.t£+ÝéR·%›­.v³«Ýœ(ëJ#Hw½ ¨+# oFn ^ ,½”i/BÔ»ÝùÒ·¾$aƒä „+å¡þq@Œ„ÀUéæZW ¢´=ì¡IqØÃuw(H¤AN$È xÀ‚ùAjØCõDò·ÀBqÉ V°ƒ è0`ž}c,ãìžáÓ˜F"P€cð™.gÈNÀG©i„íÆ!²Ž ¢cˆ |àÅqD„…³ÐtP²‘ rãÅL!¯:2Ž¡ +(ãX1E6>çd„èÁzЋdcDJ\ +@[aX€ÞíYrF²œâ´„%"à BäSHÇ‹yçžWMàÁ¯ò1¨CÝÒDüWšV0=TƤñà Œõ9WM #þ2ˆ„ $ŠâÁ ”ªiâ Wà|cuQªq˜LW…+wì×oH+È£E$îhÑN°‚ªÙ)„”³àÕr!ÑêÅ2hÈÁrÀÉ@_îr†ð@ ›äVºÀƒ`ËVLC4Á‚ÂÐÁа†B¹G¤4/@PC: €ô p°_€J „“´@à'A œ^@Áü±Àì@#Ä@õ€`/Ȱ ØlŽS8À€Þ!RÜð©— NPAŠA•Àtá4Ä\["@ Œ#LM¶d Àp@ Ìþ#à€'¢a| AÀA@XY¡6n£dhÂ@"àÊÞ”!Üðè  0‚ÌðÁXEQÑZd¬€+°@.~„Ô›á.°%]‘åÈëÄ0B 9ÀK½ñd"¿ÔàÈÁ—uÄw€ „©©äÄP€•8€ôðm \¤D äv, hA˜T\Á"ž€Œ@)áOp#ðÏ)£%‚ h€éAó@A)M D7–¥Y¶Ä4ÌDAD/õ€&ÀÁÄ‹eÝ@/øÀ°þiɪÀÁfÅ ]Þ_N]i‚å]]žA¼ÜAÔœe&œ`VLü‹ÉôB°ý$\ZÖ<à¥Õe¼ @/¼Á¼Áf"„zÀÁ à‰Y–²µÈؘe¹æ3ÁÁbÂc"„cÞ€LA±ÁdNÃŒ@ÿùÁ ÜU±\hÂ4°@æõdò‡qŽqDøx=ÓY†§xŽ'yF„Y•'z¦§z®'{¶ç6úÀjº§|Î'}&W/¨›±WJ|Z}ö§þ§Jh­%„Œ@D"¬ÀXàRpNƒ²Õ¥ ÐÒ]dhYbÔå4ÌG‚g#ÎÄ þô €Ž(‰ºg/Œ ô8Î $BPAÈH€`¼P€@ àÀ$‚Ö<”Рà LåÂÐÀ ØN\ý-`±­@÷ÉOTžX‰V©•šå @Á h AôÁ P @AÓøàì|â#ØÔhé DùèÏä_ð ôÀeÁM å¨ø€ì~aã•*¢Raé<×D T¥Ø’,¨ €ç Ý Á hAI„ \(PÀ¹äi"ìA˜ 8SòžÐ¨A|&ª­Þêv‰Ä­è ¬*PdÁYÀˆô…LV€€sÂþ°®tΤ’é¶8€&L–MÛ 0@_œ"Ì€EÀCસŽë|ÙŒkˆxÀ>j ,à€ÜdÊkÜ ô#!üÁ Ý(ø/‚8Î"ð!ðÀü£Wš>À œGo’«Ã>ìsc­àZÃ2èA§H)[ºpìyM+ƬÈF—œ¬Éž,ʦ¬Ê®,}¦]É h& €'cDçì öG¼¥°•Ä ü ýœÁ]!„NA´!L í¼4¾Áv²¬ÔŽÚGô`@¨VÉF•©ã)ÔêG¸›É8ê\¥~[£¨d¶RDTA0úÝþB\;¢B'Y‚ |-A°ìÀ `5Ê4N-âîÑ gö\N`‚'œˆ™&qR^F°Áø-äÂeßN&X'A„ÐÏ+ù€î¥‹eÝÅÐ@íá’k:î3Aî‰e®–àbhBÐò±&de[äî2§nøÊ- ‚ óYÖbŒÀï-ÆÀçúmçšL"ŒÐb<Á|ÈmàÁIÒ³ˆoâ®oöøÀš”@UþA,ÂàA %Èø ˆFèŒèŒ&È @ˆ%¨ % ¸èPÒÁ"ðC:ÐX üÿtÚ’²Áþ¨*½AUîÀ¼ã¡kA hQ¼€À÷$†Q §É0ÐÁ£0ÂÞœÁÀ©ë3Ý#,#èYp@æ$‚²½d€F•À€À4üA« üÁô`-(Qe !Ь¨&øXõìˆn¿u-ûÎñÉÔ²€ŒQö@LrZYZø€vÌÑ]å¼YGFA‚Ähñ°@,ë œ@ò@oi€@ˆ“8IchÁ 0 í¯-%ÂZÀÅA&ã!ÐA8@À"&H€oɨ‹&à^ëqb,—(ÓAqÐáþ&‹“0æÕ@ LC hAn…aÖ] ¬@˜R°S@ä…È×4h¬À»*-Ÿ³”€q†ì èA MÁ üñþ •Î` ,&˜“#áA)2à òÀ¹È D Åå ¼G 4^ ,B²ÌÀÜZîmð”[äPœ­ñá~Äð2A”ôÞO¿¡Ó1øD6ûÒ{@Ôžhµô8Ñð<t°€[9ªAÌ@çd-B’qÔÌ:Gu•ô‚ €@IeÁT æÆAŸÍ™µœŸÕðô9ÖxëA ÂÈ DþžÜi³@ÌîäõÓ’‘Wt.àÀt:3 ôÀ Ø5$B@½Á L@ ‚ÄÀÒ3õÂ4˜nÁüç^ßLìÁü\Áä5ÄÛA Ö ¨Á LÃhvLA.Á  <ËÁ²À(ÕëÜÆÁÙÅ ,ȃ@i~Jµrÿ Ì PÁœAáåàÀžhÒÀ)RLÃÈ@i‚%±QÜAáI€™ÊÁÂ| ] pÐlDÀÅ­Á$‚æé%>¶VøÀ5îŽ&üA®À[üÁwGœÀðMA \#èj 8pvÛE þÜ‘Èv ƒËV ÿ@Á ÚÆlø Ä\‹–ËŠf™æg@Á_t Ø.7ŽWnwDöǘsó<1EíyqøØÞÂqm¨J1ZþøVyH yFØR‚Ó¬uª”-÷GÈqŽ9˜g‰å†9™—¹™Ÿ¹}õ@ øÖ•tV‰Ÿ®rêG8³'žäA°h ˆðóß®yÎÞA È÷4±YGÄcu¸„Vé 'ý£9¤O¢wÊ"Lá”ô´—' ©†L4lXTÁØEÄ ,o¤K¯Î÷ AA¤]Î:…Ç€EÄðAØÄŸ—. Á€€J=ÉÞFºþ°7FCpSùU <ÁX•ÀµiI ¿Á‡dÖbøO ÷ g²cÑWA-³'F$ ”•ÒÞA|C Óܸ—À à‰†$š2U ÖÜï@WÃh—@%„`–€ÁíIß@ lâ«÷NœÁ¼†& {c©»C݆î€&œÕk•@ÒêÁ#_æÊAgÀ;ȯğj8Àçam¬ˆð‡þІÑßÑÝØ]“ ÿ/HÌ4Àv8@ðÁ Áð(à¹f˜…iʸóa´ä#à†#ÔZÏÀ›&BÔ|tX¶PTÅV&J3dþÀ Ò†fP \(ýLî¨(Rµ¬ôò°,¥¥ºÇ hüì\È'þKàGÞÅ'ßAœ¿:Ýøƒ êµM@Üßøý?;!LDùf8½:ø³Ó«ÿ&¾œAÏ#@àÀ¨‡ƒzžøQ¨P  ýT°p : QðÙþ`D ïH´pšš+~z‚£Ï?gˆðÃF¢Xô9h$Ä D. £(<þqàÏG?‰²p™èÉ9tz:Õº•kW¯_Á†;–lY³gѦU»–m[·hQàh&5½R:óL-ƒØ° ÔG¡)#ô™qg‡Gšlpð iD€ðè!ÇGž=UÞ”€Óƒt)9àð¦Î 8ƒÜ8ãç=C"4Èë#àœîµC”7´dxC‡Î™74p°`=Þ”nìQ)Öon°Ã‡ FÔA1EËž^No)ï‡§ßæ×¿Ÿþÿÿ PÀϸˆ =zðcš 0B#ê8(:A2ˆ° ?âÈ€‡+‚¨ Þ0(4è?nàŒD8€B ÞÛ*‘*2PC‚' ’@‚:úC =Ø@ »AG Fðc ôà„'àÐC ª¸ƒI=²¸¡(†Ø±«DFÂÆiR¦n¸Š*IDº>JD8•$rÀ;ñÌSÏ=ùìÓϵ Ê©@=Jdš¬dT«iŠò …Fê(‘@ b»´ Et!BÃzt+JÓ,œz"üþLUÕUYmÕÕWa4Ž!ê¸!Ö­| Õ¥Ö»Õ×_ VØa‰-ÖØc‘þMVÙeû«B+fàó4·F 6‹=ŠkJðc!œš" ,!z"=òa[djËÝ' S\©˜ÍWß}ùe R§4éa‘p÷ä@6@xã#Mú¸V+Øýh9nÀƒ§àâšzcMý@a‡<ø€h ôøXhÒ©!šÒ æóè>X8ᤅ„ ä~Zh}Ï8WA°„Ž*²dˆ‡| !Ü:²HĈªy#‹,☃!I’i§o¤ë0ì>P]ˆ³`cÆ£{ЇENâ´±ÿ8Œ†Px†­dᾸ?ª@áhA0ªC>þæÃ…4á@-ôдn(a?àèC#Î>†`É Ž"‘)8½—Ïá¨bt…FàLAfÚøã‘ÿµ—Ëâb:z`Yˆ"HM¤öc ü¨ÞçÀ;Òˆ À£!>@Ð"*ÎÀ;¸‚øWcBQÐÀƒÄ òà€ ôa6W¨Â€p""#¨H 8°ˆê_ ɲ`„iTA"aª°‚ ¼' %+ †@=ôBüã•C?ÈAqàÁþ Üa WˆC€07y¸Oä :A°'½àþÁ…؇Œ@QÉóâÁ( 99+JÒB @*: ±ñƒ0®â{tÄ$FDL!؃&€‡D¬1ð˜äp5Ü R ÂvÉÌ FѲ °ì!A ¡C Ù˰ɣƼ’¬„d=t$ ‚d9Ò}ÆTÐ à Iò)$‹ÂÞS#ŒTá+À{z€kÝ€xÀߺèü%HÌϘMmnÓ,gëz‘ˆ€b; JàÆ¨É‡áQ‚;Œ f}$Âþ€8 F"oàAfâ „`žq Ã º…™ìƒ€ßþ4v€]Ý€Cx …pÀ2# §W$²J´’ }H ýð„=”`(›‚VÀÃ)z„u!’”x’CøMGÖ8Ð #¸ÃÅ@ ÑÓÄ 0…@D‡ …eÿâ@…?@!½Ð~ôs^á hŠ 0€ƒÕ@¶­áÊöR‚„¬q‘F8”@ gdøÀD9 @†­§Bxp‚?<ÏwÓì‘ët ¸Âþô@]üƒ’ˆ>d€ؤêu±»Í^$ä CH Ú:‚!Ð0B ºÛ‡8üá TáÀ Œ  Üa7øÃà0„!¿£ÉU8Çv‡šlY„­è“¬¨ÀwøC’2§˜DÀá½FØåGfð‡û6ƼCˆC"îд*䊿øÝÁ}g]¾—P„wpWÁÖ)„ju`T ‘Ï.¤TX(颙]!™ÈE~¡b#/™ÉMvò~8õd)O™ÊU¶ò•±œ¼?d;ÎS 2ü"t¸œSX°‚'@`yø@ àXuÊÔ@„¬œ!ø× þ f¤v+ÇNñç2ð;…ÁYvô£‡50ªM‡ ™¥‡sÆKo#A•¡ò¨‘*º$ ²V  *üQÓxÈ4fp…d*€âƒ˜Û ×ä×½ØD@¥îŠdÖE”ÿq°\ìQ”N„¯ÃE뇰àÖjPtÅØ0…âAšÛÝVÕ 2 %pí¯}Pƒ²ð8†kPH„ ð”*œ›O‘À„+s£{Wu"Ö#ˆ)É×ÍCè|P5ðrýóä‹2 ¢) ®ã±øö *øP ñBA Ô…Nªò%yà Ží8“ò͹Õ@Þ…Ó¥σ&>þ…:pK²ŽÊèm¡]@vãƒzú€7¤2š ƒ:³G:Ž€Žw`Ä ªÀˆKm”Y¦”$6`¬„p°´S m´BJ ØÝÐæ7 ™P @îSt Bá0œäA!ƒ …÷`+V¢à ˜Vp‡¶·ý­ÉÃV Wˆ®€\½Âý2 €à3ƒ¸EtÕ¯ž-ï^Ä-0×Vƒ¼±ÇÎDÌÑYV€ A„D¤ p{b‹‚‡°€ú,€ªA°B¸OD!H¹•’#j ?¡†G^L•gÀV‹˜þêCÕš‚þ0@agŒ  âí#®€ bð ¶õpÇ¢†€‚¦ xæ ¼o(leÝêè ê€{ú€z`vªüŸVþàéü  x€ ð@¡v*¡ÈLAÔàð€)"¸Ï,Ã@@Ö¸büHÂüB0 và Þƒ•NF¦A§f0¦*o!žo°NA2€”€`t¨€üÒ… æÄ@@.ŒÍð µâ N eÒIPà €`~€ª@8€€ø§Ø@öÀäv…g ä@ ¶gœ h h@î`V@M4Áº¦ƒä¼É˜þáBqë>bh‚(g’‹pf`u$@ ´Æ:ò´6ȺŒil ÷€‚2æµ §ÍÜfÌÐ0•Q+P`6Þp6²æn`n@$ ¦F€ Èã%è â ’"—¦ ’¦`1rÉÙ`8¨wDCÅÊ1’àÀ&ti`]Ê"&,’ž`â1 ßCÒã †£G’UV2%]Ò%™ÀìÀ ø¤r€rЂd2Â&qR'¢<Áþ*ÁÁœ‚'íÀ'Â ì€ >"(™`ÒbdR'©Ò*_²+»ÍÄÀ(€OÊ ¸@8-r`@Á B2á,·À)˜ ¬à Á€Há#&-A"HÀ òÒ#<8a -A T€ü @a "a¼ò2™,¶`&Á ¡3I¡*…ÒT ü ¬²*‚ ˜ /=‚5?S+E“:³H&ý€6ò#*À r@:Á^Á B5¢–@ 5¥27`‚ @á7!ó#¶7¥à<á;9S(/a ÒÒB^á<1s@³Ë n!` ¬ naÀ²¼ ¤2JS8­€fáB+¼ÐÀ5âBaFÁHA 48aN6aÜÀ2¡Ba ˆ²(=Á .A ˜l`Š =Á ¼`¸SÆà Šà(À Hô ÆÓ¶ G›"’à   .` ú2Š ¾ â–@!( 2Á".Gí6“ : @a˜ÔR 2A¶à¾`  ¡b`@!úr?ÓK=!8 ´R¥ªbþ@PIáT€¶ & ˜€ ü >Á4·` ô’U“`R <` <¢ <€ lÁ * &a €Õì`@ÕBAŒÔH«s!R`>ŠRáv¡ *! T@:8˜@Óžó+r  ` ¸€6Énó2aÐà ¬òˆ3F!.!_™`–@ô4AÊ &!ˆuF¡;Y! H€*ÁÜ à(!ÕR1–ªHáX!t2X Ü CC¡TOµB×€HxÁÐFaf¥"*` r B`Nv 2¡þ2A Š ¬ FÁ ¼€¤ i}ô# aMý€ÁTm@ ü€lMI FAXÁ2av<½âÜu!̘`<`f½@)£Ö¸@,ý ât š šu!¸>ý€ ¾àüÀTÀ¤ pbNa¸”&/6c!—›hc 8Åà|“TSb¹R@ arya `` AÆ€ð”+BpVFá: ! ` ¼@h¥ ì` &u  x€ >â<+×`  äV* .¡-9á fá6sÖ)b+A''ª2þOÝÀ Ð` Ü`þna€>a*á„×; óA&‹`&A<­t N)V Е ÁÆ@ „2r8Œ*AlajÀDSÀ–@"X¼` Fa8Tàd !N¡¼`Á#2˜–À ‚-8X¡Š` ªv Tàk}³+8AƒA5l€w/ÁÜ@TÀ (`<†UàSƒ´âs+’`ºÔ47K‹àÜ× x—Š ‰“@ Æ áX+ÜÀ n˜Ö ‚m BSl`R` vá.  ^  Œø¿D+á´77Iá‚ n"´3K§òY{û‘]þSNïó+˜€×TÂsw3ls’ ù+DÙ¹/-y’O97/Á Ù+<·9=ù)S7cR’Oy{y—y¹—}ù—9˜…yªR€R=B3·€“ý`æ2-Ü` ˜€ .Ùsí@—ß‚ š¹?ZÖ)=ÂN·€Vå“v“+ªÒš‘r ¾Y!¸Çy,˜À(Ó¢˜+a ps˜íy+^!œ¢^!pB…Õ‚ Ba Ná¹Ø € üC lÀœÛ‚ 2!†Š:¬`o‡²¢‹`‚Ø#*6a<á!-ÇÂ Ž B‹€›µb·ÂÄ€Fxïy—íàšSG­rþ.!"Ùs·@9Bz¹òŒôÖ@¢ÿöœZ–/¡§:’=âB¡ÐA6![÷T/áí`2'£ZN­r2§ÉºšYY“/˜Zˆuº©¡Ò‘‹ó”27›ò6õZGY3n“å´•âl ¨=! ¬RGz¯3Ù•má ¤€Ii°T`!ì`ˆZG«Ù±1{™£Úd(6ÁT¥’’3ݺ>Á‘Z'a@ ìà .ù¦X ¬à¬ ÀŠta` Xa T€ þô@!ØrXa.+Á ˜2aXÕà ¬€^A/— ¸ ¡ [þ¹’ Ra xr`(€ S;ý`qAá ¶`ŠØÐà"˜ Á¸?"A>Á> ö5@k+úlë3–xá >¡ÚY!RÄ`(ÀÀ ¬@ n!<À l  aO½s¾@D—@(;M•4-oÁ ÃǶ–€Ž@*¡¡8Á2á* /Ëà8Ûæ’¦ÃÒ ¶`OY¼Èõj­` F´/I@„C!¿¥` l`…A³5Ø-ý³-3áooÒ­y[Ai·  $³H@ ¾À^¡ ¨{BA!¶€öR¢Ý Ô Èàeýþ€ ÀÂí º—Va/¡ A½áÐ Ž`®ÂÈ•9y) <à2”N¡rUàRà :Á"@!*áT€ *€ :ØÔû4)6Q½ *Á^)È@ À¥ÂTàdÁÐ@Ö  : šw È@N­À; ” Ðu7o)¹€?³¶þü¸àZ×àlaÈ™À”P™l ˆ5{!¬U9å› @HA X8Á;3Á ˜ àýŸàd• ¼@·AÁ˜Û¹À*¹@"zÎ{Y¾€¼€”ÛHÅ€ ^!" "á·wA¢«û=Òýþ6ýT­€ÚR &áF¡±“ ŒM!âF÷Ÿá>—à×F7Á ÊÀ:!¹t1gÁ \sCUÀ¿Âlis»XA@šÀý 6a’sÆÀHõ<ÉÁy™¿Ý.AÚp³ÜùÝý` <à~ͽ†¼È?a B¡=Sa×sÊâ¤Üªwâ7Û†QÚ¤¸z‹À5+JÜ ’ ÄŠàìg[!ÜàÉ=àzA~—Iá¾azŽ'Á^=a’ÿ’^I€Ž@¡ä4 xd: "˜ô·Š×`Žs¬`]'öÀ¿fŸRþ2Áì@Zw 0_Ø’ Äàºv ¬ ðµŠ’˜a'Ì#!ÐÀbÒ$2ìä8*E$H¬!€‰Ÿ[£¸øñsˆ —%h^±ºu‰Ä¥[*¸ñãÆÓ’WL* Ø A?“Ð|šä¦Òš1·˜¤°JŠ—-"¥èÔÉVÐ/³˜ÌRÂÖ—“ްÂY‰ÄEL"5êƒ$*(œôc‹ d52”ƒD^‡Brñ²É (4¤æná”rÖ%&]<Œ8±âÅŒ;~ 9²äÉ”+[¾Œ9³æÍœ;k&%F—S“Rd-’—/b<ùICÁ—S·NŠñ%“”þM¡ÌâË•d^-å%¢K™Bsdõ)‹9yÉä‘<ù²E;nX“òà ”P Є µÀ°'ä ù9%<†,Ó @‘µ„,G,AÆDVPWAn™0‰-£x‘ EŒR~$±É(ìQ0ЧX!Ë$1€rÛ-0lbE&¶ aE(^x‘ƒ"¢)€n™¼bØ%›xÊLŒ8 me ¨â-V€Ã(¶dX„"¡!Ú&)¸I(™x±_ð¨Z(œ8WI_„rJ%—¼Êž­Éf›n¾ gœrÎI'c•v)“Ì™žça¶çe¤äÀ'JxöIUc“H´˜þžˆH†H^柎!„¥•EZ cŽF–“ca"ÆD¢”ÃYŠ!r(M§Ö k¬²ÎJk­¶ÞŠk®ºîÊk¯¾þ l°ÂKl±Æ‹l²Ê.Ël³Î> m´ÒNK­cdŒÂÉfˆDbŸb©œ ‡1Q!g‘ÀÀI&3Á$†!“ÂYA ™)2Ê-›‘r„šŠÕJ*‡UrŠ¿‰,H¼Š˜-IvJÁ) rÙ%‡œI«–Q°‰'1ˆ›ç+IT rȺN3Mˆ¤€€…~ b)"ï®<©Ë¤°L ²Ø{‘Ì~d¥‚À¬¾BBÎ.O:óy2ϼX Gt²DR°ÉSÁœ3)HëÌþ²Ð~ÌühÖT£dâaHW=öª9ŒñÊ-{ýµÌ4»aHÚ0ŸW Vt[s[íòaYð $Vœr^Ù1F„£ÀàwÌ,÷ýu ¡±E&{=÷¤À¹–'äŠ|‘C‡‘0žÅ"ŸŽ:œq\ñÄP=¡±É)v’JE¼²õ-1Ä §lC h ±É&i¹ $æð‰ÀdlB¹—è^Ä&¯ÙRLpÄÓ)FL”a„'Á0É-›Äp §¼rÊtÔ²Eî’ñû»Í¿ YT"ºÛB¨g‹‹\bE8äG¿StB1R/Èà†W¼/¡ÞÎSþÁMhD E€Á)"Á ÝÉâ"²€÷üÀ„Q”á"Iнȅ=7ä`I Èa‡$x@ $ á!βà‰ _`"4¸‰Wp„&´È ;ûÆêøŠD"h(Bð6±‹ØâN ŒÁípˆ+rð"1(Cpˆ—¥n|¼Ì4F°B@sòÄ.‘Ä$ˆ!!1X ÊÀ‰ø»àD*<°…*`HLXÃH Hx¢!®žÀì°…žùÁ›HB#6Q‰PÌ"£˜e&Æ0±T|a—_(b.ñ Þm ¼x±…Q¨€ *xEXAD¨âx… ²´‹þ¡™[ C*Á…YX†¡ˆ'jéeVàHL<‰È"¡ðÄS¸ð‰#LœØEùüÉ V|A™˜ ¼ /?À œC¶bØ­Ipb 3ÌA&’ /L"RB¨"€¸†FXei¬`œ’È(&2Î G°C*p‰5°b‡(‚T ) Á:Ì$–pOØà¶€çi¸ðŠFÀ@¤fT¦$hô5³ЦúˆÕ¬*¦w#@Ðé£v@da…OLè \ÈÄ'2Q?Ĥ^`ER E jg™È)Z˜ XdÑ; ô v²LŒâh„6±/þÜG4‘('.ËEÄ@o§I*)ìÀ Y|A’¡ØÏ'`pˆv¢q °'¶ð NDj ŸXÂ&‚懭²°bX"|ã<&æiCBÁŠïX1øD}þŠºª “˜îgWö»‹â±ÛÛ$d8.ð’"§°A <ñ Á p¥BzŠFdËJI⛈’CŒH‰•ø„}ì`P¨bE°Áaúù…Ç£˜ $ˉO¬á"PZ³DA`~ÈAo¥ Õ‹¸ €‰0ȱz༨À(2Á‰5p IðÝ&ñ ^ $`‚'Êò//$°¼¨àÂrþ86ð" Ñ$à³ Á\#ÉvøE/âðEÜÐFbËi„.Š âC °H T°…‡T¶^¥" ñØGaœBë)¾@ 6®ˆHB¶àØe'H0ã$P`HKn±†5PE•9Ë®!_±…1x—¦ãú IqˆF(" [°Á)2Í…[‘ ¨@#@<›ú"†ø•ñÒIô7®0¬qÄ2fÜ’`GxÈ`¾Àd=¬È–:q Y|"W=)(ÎB‚Mô¨Û".7ÈÎ@"œØÄŒØArÀ (¶peNØ §X‚.¡+ðþ¶ØÅ),D›,îc@^q‹Hx ‡¨"‘M½ñB­¬ð„GÄr-¡â[³šÕà°Ò&¾@‚OŒ‚¬˜ö‘Oñ(Xá“›Ðo#f1á$ØÀAÈA•à¹kÚb ±ÁÌUŠA}â;û„syqðŒ.`Å,n’/ì»yGð€W‰†%¬ä¬ /"±[4b““‚ÜAQ­Ô<¶n‰Á,N±€1¼œ ˆÃ("±„l•!ôN'ÐÐö2¤b ÍAÀ ± ýù!å‘àDô [œâ‘P¾gqlN(à)€ÞüS+ ánŠa(@L“"¨ÙÜþ¼?  @ˆu›8±ê„"d ˆp ‘Op!Ó$Ð#c.qg$DJ·0·?aˆ°™e=wÆ )À}†1g©p0H“ÀOÁC Y±ÛG3Ó Ò·yÇ·@ \†Ð n‚I caHp}™ÆAê÷Û—@ô‡ïE„}n@ `©ÀžÀc·³3R œÓ Üç 8Ø}[ á7ƒÁAî}|R R¦ÂÆ †p|I¨~BŽÇ*R¶ªr©° Â*þäÖ{m-=°Âçbå†uh‡˜! t‡{8- |W|(ˆƒHˆ…-3 n'æpp+¨Ð Ýð¸Ò J”(މ“Q‰/ ¨ÀAP2Ð ¡ͰXðˆA€/Ð ž˜¢ •¨Š‘! Ý0‹’ñ”( €‰†ŒÁ'p@&¶@zˆ¶ ª€+˜à ð …`Ð8ßÐÚp ´ÀaP ¿ J m° ‹Ñ`Ü€&` ’ °@ !  Û ` @ ð & «€X . Œ‰ñ{@€‰4Àq¢þ-ð¾øÐ A‹‘H Û`ÞàÍ ~€ %y°x‹‡Ñ‰©Š) /À‘Ͱ‘¦è3¹«à` àp“é‹1™’Ý "‰“Íð¨à’#¹”~ È`Åð‹Ñ º@ ÍP`q’/)Ã`‡1‰ºŠ! ´° ÷ø“¦¨”Lù³ø& >ɉ¦ˆ KI’ª¸—¦Nð À‡ðÛð• ɘ ˆØƒP2ÓÐ:oòªàð Æ° ª  о :P’Ý0"YNà#É mÐ×°’~ð­ ºP AšÁà -þ   Íð ÑàÕØ ” œ2Ð á` / µ8mÞ  Q  À àÐ Áp”2 Ç«ð Qà ºà ±ð : &XÀ î˜JàÎ`½Á 0’›É‰Û@–¡ ¿Ð΢ œ”° /À &Ð ªÐ 2à ŽåÙ èù™ÍP ­ À ÚàÊ ´ð ú !° )ê Ûª€ !€Q¹ Ü ˜0ŠŽé£?êÄV°Œqâµ AÐбà `)2à`’~ s€¥Zê Î à Úà a þÆ€ ¸Ð M -€žµ ¿P:à J¿°Q›Q ¦ˆA ÂP0&à Ä ¸ ß0 € ÀÐJ@ º Ìà ˜p®ÐfPP–Ž¥@ &€¨f~ ÙàMà ±àá0 bªN 5  Ò°Ù:ð « rÚ”J¦Ð¸  ÃФ  " ö©Ýp Øà ? ºÐÝp áÀ?ðª¸ ð ° ¤åz=ÀŒ@tÅðË@H5`®Ò  !J¥Ýp¥M0A  Zú  º ¦¸P JºÐ i€þ ¿ MàaÐ!à 2 Äà¹à ±` ±ð‰Ñ«Xú± µP–A  À­€ N@ ÈàQ¥¹Pê P¡¹ª¤ˆª~pà+’Z–.P û ° ! -àŠ))Åà¸ð.:{˜P /ŽZ `°¾ð´Ð 2é_ë ‹arzÚ QУæÊ·ƒØÅ@Htò±Ðð«P zÛà … .áP ðÚ0 àpë ªÐà ‰± fÐ «  ‹  !Ðaà Öà5¿  ßà!þp ]0°°˜ º ®`&  µ  ªh s ± *-à.€ ˜ Û Š ½ ± µ€ /¹ f€ /€ pß` `.0 ÖßP À pj ǰ»l‰ÍàÀ€ p½a`ß Šaà ß  G™ :À ÓÛ qŠ’«  Þ0®°]€ Ñ °£%Û·¼‡, `EEZ'Õ Žª ´2€ ¹¢´`±Ã  °Ð`J@  º€°ˆqŸà΀ Ä`û Ä»!@ á ° Žá"ð ¹ Íê m ~fðþQ ÀÐ¥àÔI =ËÀ~@ µ µðÅŽ¡Ñà ¹ðÛ ¹ Ü0ÄÐN’ž¿ÍÐÎ Ä`&¬ m ®=ë e)ÃP ð"Ð ¾ µð°³Žà¾P ô‰Ü  =ª ð» L˽7#¬®¶ò’nëXð €/ Ì/Ð 2Ù Ø‹˜ŠÙ ŽLÌ~€‘¨ÌÌ2iÍñßÀ ¿Ø€ð £€@“³ˆ ß@̪HœÛÎÑ|AÐ Ü‹A“Âì‰0Ì‘èÎ.ÐÌA€(PÌAù LÉÍŒáÍXPÏÄÌË¢ /þÓ+ÌÍ̱Ì.0Ð#é A|“µÌÑmØЂÛцøpÑ#ÒXÅqCàÈ) Ó1-Ó¾rË # +Ó0œÁO0Ó? Ô ùÑà#ðÒrRBÀ}@|AíÔO͇+ Œpt’tàÓ~pr½  ½0½P2½Àšd= >0‰  g0šÍlÐ=pgÀÓðÕuÍ{M7Õ Ø SÓ7M'oj×~0y€w€|@4p=€W ÙUTZP °T°Yð<°rpYÀ@4€PÚ‹w@8pþmÛ·,‰0 íU-'S€ 0½p>À>ÍD4 ‚À#j½YppB;p{  SpqCP„Ð +pq°tOÞt€ÛóMß¿RÈÈ8='> |ÐËØ‚ˆ>@C€#j@0 `ÔrB ÓPZà~ Tp3@lð„à°'À9 €F0¸õíâ/+‰@_EúM'(@rSðxá~Àx0P'|0@Sð‹0W°3prpgpx0(„ðþ]ná|ÿÍf ãi®æp’u‡4ÀG'>`,p}p€t'PrðD <ÀäÍx>p‹@xÐ×P ÙÐ$þ°CÀ |ðu0%³æŸêœq߀;]+3@?Îa}p}×Ó°x°-ÞSy0{ ¡îë¿n3DP™µòÖ“A0Å­B êŽ‘ P@ÛÀní×¾‰04Pì}D2Ø.îã^_¥¦+Upuàé1CÐî‹1#@H7PãŽïù.2þUÄ^'EJ+0Œ0‘‡qDðþ쉑Ú]Û#€úñmÎíÞN'Ó0¾}<0,@qÐŒÈw@Ä}=ð,À%ót DptPë: q03ÐSà>@==@ñ.ñCOßÑþUÇM'qÀà×~P+ox°ÙlÐjù‹€ ÀCð·jÙ> Z‹ šG¾=pP°q@ôw'g°‚pu€Ͻpq€Ý~   ô‡Aà‹ FPÛºbJ͉Á'({Pƒ{T`÷,,°àÒ3MOŒ½Àjþ‘|pÑ~ö~ pB;°op_Ï%@z`ë‰@‰÷"sàng@Ë~Þ<0¸ÀylÌïw°,@}@jù¸rõœ1 €ŒxÐôrÒÚx?Æï¤¿×Dpï;õ±8~öÔ‘“ÇÏ >gü âÇÏ((®œ˜¢fÏdÁ(‘C!EŽ$YÒäI”)U®\YÅš7(XΤYÓæMœ9uîäÙ3¥ÄgN¨éå§Š– =üÀB‚6Š’¼C$›=F&#&38déÓ#‹L?7¥g½êàxãpÚˆ,þ_ÖQG‰DÓ¨ÐÈ’eÚÍDƒàÃÆgJM‚ø°˜Âç‰C@JppÇÇq|LÛs¢ #Bö !²G@Øø€"猚+·yp¸ág Ž'^Ü "€©kÜùsèÑ¥OOéƒ pÞÙCGÍAó$Šz˜ªUä?±'C>`ÿhá…ˆ©G`ð3‚œ @ !äØŽi®àá½øüà)5! "Ê`*šPÀŽºDfèA>Z*5Ô®Èà v¸B‚8„Ž  0"ƒ7ò"ƒ<у¹+„˜‹ã‰7L¤îI(ëþàFÔØÁI(³ÔrK.§SLª a>†Àã 9žŠ C‘ª éþž B)0¢²A¦!/¦Ð¿ña)àH¤—Eâˆ#ƒ4y?üPã„DPÈ ?8P'bÞ´dC°BšÆ¼ŸÐBéFþÈB‹»”u8@Xl1 $xËY{õõW`¯`„ ¹ó#‹E®H¤ ò@µMô*ˆþh01 !| dP‡4ɯ?@ùóÇ>Z¤Ån"#5úpHS?úØÔ&ÒmŒËDŠnŠ!$  X€s äÖ[8!Ô€VxáǪØcÔrØ·=âð#M¨¾ÉMþ\ôƒk$r¹·\pS>ÙO?¡ƒƒ¦èef™vsHÞxy°)`…Xæ‰W¡‹É>^L‹;Œvúi¨ÇŃ B»‰QØá0fË+‰ã»0hz"Xð£—ú˜‚ˆ!>êå‰ÐüH¤Žp"—e-zˆBÁO›ãÝ”UJd?§ñ”‡R£vüñšéCiz r¦ÐD“yBáŒÍÏHä L1‡Z<C!™8$Œ£:¡°,JxÓ,NXÃüHAÔ ¡·A’ÍBŽ+à$ ê^ÙÜÐæcv(x˜FŒ÷ƒn=ŒPµ¤7âŒtm3ý|þôI:ÂJ_$–öI“+Yl‘:zpà}¡}¤9ßè o8H8©3d@9ÒJX(º8©‚ ú&·*ä!M3¸¶A=øa!ôÃ2`ž<\æ Èò,7ˆlG+(0$ð¬‘$"¸â:Ç? >‹ñHÄiôâ(=™`Ò‹t/‹b}r¨è %(¸\HfÀ¾[à‡V$£Ðž€ETa‡¸Pé ?Á"jðÞ „ª\a<àÁ 2˜6íáCùÒŸžÀÇ\ÁbÓDWF:2e¤¤¯P ¥ñ€M•ä$°a„ºL þ D¾—¾7.¤F8J0*40rðÁê0æÍ@$Hz@EM aƒ€ ¦0¼%<@&p°ÌNF3K;˜Á À2if³KNºÞb2€MT±„3¸Ü*œŠ ‘òƒ£\B‘@#‰Ãþrƒ8 ô#Y¥ÔOàP›}ŒD”-à`“eè“FEÊœÒt©dðÀƒE¸‹ Ø´–PÁ‰„€gH®@Â’†x Â öÉ‚=à º„)2 Ë†æ”'á#Ø"²4:l )³ÐEÇ¥’ z(J»Ž…,àÀ”SÀÀd‚†$ þ§¦è-ÐáPû„Ê2€…ó¬új[W’ˆQâ >@ª[íÊ•½;_"8€?Ð RS€»Œ²"Äp „Ð¥&\&MÐà ™ JðK?°`¢›fð?±±” !wWÔŠä‹Í‚vRûÚáM9}¨«Ð„°‚ðÁvÌ[aØÓìá0ÓVBd5$ÁEPSÏ´€ ¹x@´9´t?Ø¥‚ [·JD ?oy}2ƒ=(g’#À pA¹€òAIÇEÀ@…J 3h‚C †àС½C8C/èˆA0ؼ©=þ4QÛ g8%OH/!!Q¡bXÃñˆM\’8ЀJ>q‹]üb‹dŠp@Ób|cç8µ,À•”«c YȬ‚ýaã!'YÉKÆÜá à”ÉS¦r•V‚'GÙÊèK·ñe¹}Ìa6²·‰Y$`þ²˜QðÝ-ÇùWx2(g¨ù@HÄ\$àLWS2 Mü¡58hZ„p…ôˆ}ÀÁŠ|€!da }ÈNp…;à¡%Æs©£Ó©ÅÒÔF›B 0Â/”Àµú°?Pv„Ãð‚!ÄŒ(‡°‡8`×äþ•¨‡@R¥Ã  °‚+­ZÛZª‡@Àßmû* (L2Ø´œaZ~X·0 ø ¥„¦á-"C¿ž@>d€T@R烢h"|¸s¸þdC@ØÃ}5 ðg ØZô‚ÔêKÑ´Ú8„νpì3‡Àƒ:܈B` .£9˜ÈÚ0›Å}îœ^H`1T`ëÏgņHà | ‚  P…8 ¸‹Ø€p ³q†ÐO ø°·:À"ׂô‡?P!+g8à ¨ft¸§zX -ã>+ô† %Î0*Ô¢yBþ1ƒL¡C¸A"4Q‡:°á „÷A*Åüá³=èA\îM껇%½¸‚Ï|h¾ÝwÎ€à–—ñƒÄ5Aô¡(@ÿ ªÀ«)¨‚A¥h"Ã:ƒa „Þ(0ÿ Œ[ʾ£Á€‚Þ08˜¶H:À'ðX ¨„˜†?¨‚?ˆ8Œ'„@Ø0#x°* ‰˜—¸{þ³C¹œ€ 8%'i3øA4³ãP•JÙŠ^ ?†i»Å0 ›èBÀ- ¨Fˆƒ‚ÀF€–RˆA'5€#¿Ú[;<¸x%Ã<¸>¸Á€‚:€VÀ:ø#‘ ƒÇúœX„Øë „Àk« ð,àƒ@ ‚Y  xƒ7 ‚>È"ˆ/ä‹ Ò[Ð »'xR"vª‚k5? 5à¶!°;ê!x´¢Z¼ƒ'ØEñ“¨xš9F9˜ x=',š:YŒ^¢‰@ƒ —PŠs‰¿ÏÀ€¾±¿GMþ ‚µ@ró¢ÇòÅ¢‚üƒ>àëQ»,µ?XŽAȽ;H”ÀªÀÍ‚7]z¨ MàƒŒÈ‚=À€Aà60¹Ot€*ð¨:è…†C*Ђ|šÑaƒ)x3ó8”á’™¿ùˆ¿Á¿‘‰™I„,‰^˜‚i(Éi˜yI™˜h 5ûÈS9›Ã€É ¨À‰* ‚Q‰ƒª[„yÁ:¨¾ñƒ<¨ðÆâB°€ Ãx±‚ýÂ(®^¸>¨A  9: ›Ãƒ'¸‚;q­g4¢RŽ£¢‰|ÔËÇ@”.¤‚^€˜Ëà Ì؃!‰a«ƒþèv”›³$¡ƒ>€Î¸È€„ 8p€Ö¬iÔPà1‹)ȵ@È>€ ;6 0°!`ƒ3R ’˜!x¾¢9PtÒ>‚úé#Ì“5‚(=ªž€L!`= €‰)Ð5˜7ÔéHOj¶+¸ p"ûrˆ8  ƒ`C#,A€¥<à³;ÈÏÑøŒi¸ƒÑàºy7؃¾ñ30>08+¬¬‚%|9`:à–)X¼"à%‘H6È(%š¤„ƒŽ(º¹\²$¥Ah¯a„AP x·Ò „>@àþÉ˃DaåÃÑ8€w#€„géøX<`ƒ; ‚+`áÛ oÛ·? „0HÃJ ã¬p—ËBà:à¨ið¨<èƒ70¸;=8×,`E”€;„¬¸(Å¢™†!àƒ,*œ¢+Ð 8*p èƒ>ø ؃¤ <¸M ( €u §D€€9©Ø©8ɺ=Ñ;ŒMQE¡ :`„:€ÓDÐ(˜(€ó¤‚a¥Õ‘ ¼¤<‰Ø#H„7ƒ3›:)8*pÀ* * Š  „7þð5»Ð×RÄ*-¸°Ó˜§‘Øa7uýôRvR ÐŒ \³™0‘PQÔ]Ý“H­0]-]“pÝ”(PƒŽ˜DPU95 XÁ;¼ˆ7x‚è¥Õ¹Ÿ2Hh!ë²½h±  M˜É­µ¬>™#ˆ*|ÇÄÃ%œñ]Bð—y&6€5˜†fŒÛ¸Æ  ½€%øˆ*° ÑñƒðD<<:(-ÕÐè><˜‚+Xó ˜‚Àº‰ä±“ ‚AíÜ¢áJ¤”α™½.©‘-Œ)ØD’È‚keqþ=ø¿?(M" ƒ+‚*ØÜ‰…G>€ (ª@¨ŒMˆD`G,ÉŒ¸xe>Ø ` œ8Ø)#‰'ÐL-ȃe½]º]‹Ò»<`! Ÿ‹8¡ƒ‚Õ`"È‚°(M>B÷ˆ‰.Þb fv€ɬžëãáø Ѓ¸H¼Ï’™3ß›l¿žu¼Pˆ^8ƒ¿ù;STáÔ„âm°C™˜ ­U‘8Éihd­¹›ü»ð­«¿_š¬äFþ`PÞŠ)˜å3xƒ@‹3`Æ+!TaIب°9‰¢]Bš@é`X„ á¡y‹â09fµ?Ø•;þ0‚><(¿áØÞ\fr~×aŸEx2 ¸ áP³0{gøƒõb³4sÀ\4#‰À‚39=_}öçw.èÌúf35«ç|þ2X¢¥@ ]yçzî"Èß|nè„.gŽ6,#eŽð8#Ø×7x´Ƥ# !ȃ&©À€>¨Á5½‚[ 8(­˜—5»Í¥ì>5¤ØEЃ‰‚ÿ«‚]œ¤PF8µ¸¤.b!wœ†œþéÜj=Ò#„!ØèÖDÐXâ½,¸ƒ'í§ö¤¶*:=hQÆ|™~¥íÐïã’þ™_^ñl“˜ú;M:h’DðŒŽÎ©ˆ+¢¥açž0ÕÝ‚ôÓ‚é[MèÛ…ŠÒ¼$”(àŠPCõ“¨Kϳ‘[9- ÇV9P-¸‚?È=6À€,ЄA€&ÒÖºb:$[„:˜XRÀh 9N?¨Ûõ˜5àƒ*@h†8£dCMý4”í%7¬’Ùɬ¯{Žy´iG>. –TQŸÈ‚‹àú “EÈo”0Ø €=¸¢ë(X¯-êªÉFŸN±ì[A©ž :˜È‚ÓØÖÆKqÒÔhÍŽ+ Ú ØÎEpþFGE?À€yÂF¨(’( ‹3¸ ã¯÷°íA+² +?¸ 8¸˜¯DHH¨0¾‹zW²‚¼â7#ð "Є£;?¯aË^”i`p¶‰þ_Í@„ƒ:Pðêe;¹Ù™€"@²Æ¬^`™Ó„D8˜4üdI u€‰óraÒ ô)èœDèP©“º . €ó3@ÒË`¹Ñ¨Þ³á‡¨a?Me‡ õjäSö›W=ŽXó/¾7P %yŒI_¬!¼‚yÑ,(‰˜ŒZtˆ<à‚šË=¹©O‡þXÄ~„ "pðå€A’^M«9}àíq°hܦé­}[5 a[Ú=X ‡¸:ˆF(V<Ó €:hp¯Hˆ ØÞ8p : ‚÷* öœ@ha: .¦ë 9p]‚ƒ3„£¬Ñ€6<"€wˆ@P¶Ö_? <ø¨Ô¸6<Ð@‘AÖßrÙ‹*o‘ƒ)Ž>À<ÐcF((Ѓ|áFÐ*¨‚Æö:Àƒ= OŒ"8·mÞBp¢‘°bÄÅ:è*P È"à9¸Â@’Äš†Ê¬ÅÎuç@8Xj€kî‰3Xñþ3Œ#p€ h6@¦=P@Âb,KÁ€<¸mÇ ³<Ѓú dnHü|Tƒ`„§è…ïDS1==XŒ €Ô+@K(`ƒ<À‹®<È‚9µnË¿Ù@P}Æœ9„3<èF@\BÀ¶yw9pà+àÊ­n=¼ú9 ¢ƒìö 6` Œ8 „ÐÑ^ØÕbŽˆƒ„êªDøú¸S`ƒiÿ?(”š—,€‚CËŽ?fôú‚Ã?~z˜2 Šœ38ˆ°Ðâ“ fPt¦Ÿ? ýhâÇO¢ NÜè…‚ ž>~þPüq¨Ä>Füy3…ÃA6~|üI:äŒ5O´ü¹AG“š,´äÁ£†€œ 7„蕈Ž!F¢M«v-Û¶nßÂ+w.ݺvïâÍû¶×>„XäCïZ6$x2%:;üœéÑ£ñ?Oz$Bù§Ê› {•øó$Ñ™êhR;¥qã=âh¢Çá U*«=sÇH8>õxCg ‹@Q&A N¢)w½AAçÆŽ^qΜ©ÂûIÉ3üLcÁ…7½F yÒ˜…šzÄ&€òî:lØÐ‘<øh€*„ÕÆÁÇ©ùÁo e ù€A õ’…‹d‘þ{ÜáÐWp8ÈÌ  ½øÀpƒCðPBPr,¸Ã Ì0‚qD4 'øQwÀÂñpE"jôqƒT|çP:46UY“C%qƒCp¬À=ø1 ¸ÁÁáLA~ 9+ì±ÂxpÐb{`@ôr”þW¨¡‡"š¨¢‹¾5Í{†¢ GfŒbš©¦o=‘‡žÁô2!tÚ˧ŠTÓX&'`pÆ {ôñ„&‰ Ð«…E~èCôЈ°X‚@‹ÜqCˆ8PA€LBÐQ!S p…ld=Üþâ €®x% Ç3°_ d!ÖLxd1EB{ÌYÌB‰Ôqà(ðê+ ôqðj€ðFrôPyü!‡3À1Ã4UÐû馃²È ŸAÀ|xLX/g:²Ë/ß•¬Š¶$È<` Ç›}¬³OACƒX†Ç !ñzÅ™Zô1‡{h¥…GU\!ç y±‚uàðØM'€G(ø‡ÅxÜñ‡Yô¡…xðx´|Coèñ¦CgAµÙ©Au8°‡ AxÐqÔ ðpZoì!Ç4ðˆÐ‰Ë¡F Fr x̘&°þp)̯ûìâà_È(̬h¯tMƒ6^(`7sËv]šˆë³3šˆ–+Ÿ{£¸µu¾«åƒ®+Oý\C×4šP?ÍǻŲ[‰h’2òë³ß~¢ÃoŠBÐ\jü!W/W"ƒ¾O úàâƒôƒ¸ÂÜçÀ×ùÀKœ +hAM¡@,2ID/d2i4§ þÉ`ªEB´d!i™†XÖ2ƒEÔ¡ <@‰2Ä’r°wg‚2˜C‡~hÑ|ཕ°w-ë Ú‘s‡|`ÈÀÊK&¾‚PîXxÁ/‚1Œb#å2<‚PxCþ¨ d <€¹J@5œ j¸ƒÔ ‡*$¢4X„Œˆ…ñ Îó ‘M<á`„°ÌQ+ÐÃL”¿àá+PÜt4RhXÁΠI<\/¸‚xð„!ŒR7„ö „ pÉh¹›%é P ÀÒ¸"îuÓ(A "×>MÌÀrjIDV¢š;Dé-«ñ詽2¢3êÌp…*0‚OèS 2`+(Ìp DPƒ®@Œ`µLć'Ìtx‚l‡–)ärˆC/ª@A\gtpþ‡^<’QJþ€7d ,ØÃȇ”`<>Œâƒ,¢WˆÃ¤‡òP.FÉCàþ€‡'@@¸ „ÀÑÑ€GPÞ4¬Ä®’žæ‘bòV.\ATA€±ÉÈg²Á ¦Ì@ºË®„–Vh„ àcƒ Â4`0BÙj‚€@"ÄÐÁ4þú˜Ä–Jî#p^ÔÂâ…ù¤Å^ wúç4°ôô§] @ð€ðeþ%yÞÄò Eö´…ús¢f¨æ¢8 Ð$ª5€T DT@b4ȃ|‰¨¦ |¡ÿâ£0ÂxÜ\Ï&p;q]ÔÁ ¬°%BàÕìLÁt,¢°AðdïøÝŒR,üÁÐÁ"4‰CôA¡ÁÆrªßí#à€&A®êi>ñï¦õðB¦Zî¨Zœ€d€ Åœ€œ€DF ³@$ÂøŒ@ÈÊôpà€˜ ; ô€Øòþë#àOZ.Ê ˆë[²§ÿfñÒAØ_hÁã"-kñ¤rEÆ óËP BÁÍjèÁ\P‡\äÑè Ì@]­Ðxœ^h3]ÖÅ]>ÐQŒ€c&³:Mƒ£âø rlõÌïÎ/Ûs>÷V`Ì_‚Z|ë ´@4jæŽÌ$´9ßCãõ<4´b‹DSOdúNsX&½l´eîÚðì›ípÓ4ÍXüÁÄ3`BOÝ_Ö…cµL,C’b°@IyäËhÌ ¼Æ€GKÄM 7Ç#ÐÁ (Édç­Ë øÀ]ùþ ÔÁc”‡&2m¼ÁVóe/lõõÁ•]k¶BHjq«××Tÿ*M\ãhÌDI¤¶ ½(Ï \¨w"ÈÁg 4-L"”€-í€ްlþ T T Bô€pÀá¼Wí¿ý͈i¤÷Ç¥ÀA `@ÿ°k3Œ±!LkP?¥%âD©ïRéòýAÌÍÊ H3xæ lr¤¢…8ÀY°¦ô=ÅèNAìgôÜL, MÌ 'kÇÐÀ TÁ&þ ‚äAK‚ˆÄÄ ‚ÎÄÂ(K +þ ðóbD‰)VDçB8àPdH‘#I–4yeJ•uä#(N¢•Ï PÈ8ñƒ‚ 9š€qPb<=@p(h‹,€ôÃb‡Ä@W¦üYäÈ+=vLë¡¥J/?Óžà‘àã€*lìxCäJ‡o@cˆ3 „Й±‡?O ºÚ#ˆ8OzLK‹‰ÉÉ0´ŸD3 dx“(~ï€à¨Ç =@2\áEÍ$ãc…B ¤V|r¢*h˜aŠ8ˆ`صˆ B@8£dõcŠ+ˆ £Uzaƒ;kÞ™çž{>ãe"{`1SšæÑ‡¦QKé)¦¡…)˜~¨—¤Iš&9FXÏê‡¤Ž¨—§¡vzÚ^Œ¦Zl?9Ágâð¬?þ:ª˜mN¡ úƒo !Æ8f€ƒ† zðÛAÙk!¨ˆ)Z šócŒN$Í* #fÄa8PÀá+‰p0¯*|H9ŽI¥|c "áá úàcš@€ ö_›½‚ã  Žšîª°‡F[aÏ å;Ž*N`ä?$à£c"Àóƒ >´/>‘:B6T®O›A;KM`º ”³þŸ¦¹ëjI€ºt‚cž€ïÓŒ8(>†…ÚÿD8Ô0á7<þ30Bñq`1œà ©JD üð¡À iö%@è€ú#jé5Âí.ì‚ì%–Iö ã>²¯ñü >céâ 2O¯Òk|  ‡˜f  èâÀ6iLž‹õ¢A&Fö „@&¦ ¼~j÷zÐÊÖ²`©Fµ"´D£%‚Å’æKbRfø`ð,‚´DC&|`»>ÃÿЄ pìÞ€€ÅžÆ°ëÁ–ˆ­1’ x &Î0Eƒ¶Æ$ †¢4<.z!ó¡ôîþ‰>.–J baÊ𑜠"®îÉXÀ0Zž VÀB~P7q¢LIךj¯Ä@#¡îî¼ÆË( 2fàÜx  ¾A0´@ebi´ M¦ lä\†ïËä8îŒ@hà úAŠp !ߢl+n æ ¾VEk¾N @†€>îiV@¦zq9QבÛQ%& èà ÎÀŸØ ¨dââàŸ4A  Òöç 4A‘¢¨r P€à@¯|@‘‚IjÊ©]^†ð"€B}€‹ŠbXÀiž€¢gµÜ‘$Kr!þ~ìHf@åªò€Mò$úM öàÂÒ‡¬VÂdÁÆdÒ'R}P€g$¬ˆ$à€"h$Ð%%bp SB›²±N +³R+êò`……*ïú`ù$Àbè N` Ö†¼ò@Œ§ @€ŒîXQR…N­B¥´@KØ`$À,%6ÜîÐòêèð¤1´ÈG zÑ  Œó¤QXà$ÀòÀÚÌò€ âJ>ñäPàI~Bl,C$Úe+_6Ó§=.>F`’Rn`ä@ 2J Ð)—ž @á¨`.Gà§ ¡è"B þ1Ø`2ýÒØ Ò¸ë2@ª€ ì Dþø 0€ˆ$pú  ®À8@   n€¬bTXh$À¹ô â`„À!z€Nq¤ ±¦ªP"†@”ƒ}C‚Z,F qobÒ16/CI^zNŒ1ÏZ¬'õ€â 4¡¦'qì!l­4|L oà nÇŸ®Œ4˨s¢¬Ø¢Ló¤ì²`Eö —nòÂ4„Q8à ö üà hZ/\C1:§Ûé"d 0ò!r¥"ÁÂ!O%×ÂKÿÆÑˆ`„ K À\f€º¸ Ôbôd%$lZÎþÀKý@zrZ|`L4*3ÔPeRJœÄuN­ÃZ¬7#q àZ¬w>åÆ@ Em¢z€ä"±èA LBžSG¡LÊæ%ÙØ¨ º­@¯êí!$`â k ´Týà ³£é æ©Gø2€ v@aä h²$rs»HhN¶F ð€ªZ}âÿò`ŠÎKfÄhØà©«Å²)”u@öÖÃ$E)v …@ú ZV …†à äà;`e²&„À‡2k ÃW¢è¦€ €à Z̉t(@@U[¨€ô@!‚𠮀 –Fþ k.pÀN ¤ž@Yä`þ‹hkèà7O`N!âÿ8 ö ÍvË+sèh€¨S·„€A ô Ôò:Œ¦`vþ`L¨äú@ G|@¬ c C4aRPà 2`ô‡¨ÀV€¦ !&†`I)Õâ(‘Þ ó0à×ÈÞ8U ¨ k[lÎp od4`w÷2/™f`Xï  Bê ¬idr΄iŠÉ'¦`r-\¬è®R–ê Abv —j*)Mn  NI›ød›á„`RË,!.Œe‡© Q›#ºj aþ@8 Â¨@Ãiä`A[T#Ô ´pƒ ³• ø ~ìÞ0’õžª ô¦aâÓäF öΠaèJP%ÉÖK[ý O#M †ŠîO©†mÏ7ܺrx[":œjò€oöÀw&qRQº‚ ’è€áN† n@ŠâÀé±»ìqéÐd’Ζ"ÖÎ÷ŒX@†àò€ ÎàMÈ'î@ ˜f¬âàká€`ž€'àng5z¡aâf@N@ê KX‹KN¯Ð ¨R/nÀq‰d$é a5ð` —L´NÀå@@¡RúÀ|³þM;¨@O"él„@tÏ"j¦K–úšäÀT•…ø€fàÀ·²'RýàlQ:'Ôkê@0x‹?™Y¬äš÷08l•f¡õ¤4¡ÙVbàlˆÑ4A&<Ë\N9Pÿ ”wÙ! $Iâ 2Ó’ëÔ§®€(öDy™™/5?É!–æ“,Ü0.lÖâiP3m4'"¤y"4aöe^ªfÐ|•ª›­ÍþÑ!´¹Îjiì, ‰fžùÐD#5›YŸ÷¹ë ØÖ-âüU ® uª„L ä 2 ˆÜÎg4î ò­ pCÅ&bÆJy@¼nà[¨à þv@?%&ê‹M $Å/ e\µg"üÄ¥Â⢧L4ÅZ2ºPIÊ8<$Î@9 Rѧu,T9£:u"8©kjŒùÙ©e €¾€€”Œ ê |¼·uà4¢·õ‹ˆlRˆ,fF`œv†€m¦Á›ómK€¡Î@@€DøÀ‘óiÆ:«3 ÜžgN …`öR TJJ à_Y@ê9b²"²e=¤¦;³_Õø`d²à˜å€ Fõ¤ ÂSºfxö©[;Ô¤$¦D;Dêì'\ÌÄC­°1`EsŒì¦u.“£ýðµŒ>÷þÊP@ìÈlÄd0@ø  œ¦k΀À¡z!AÖr.ü%jš:Hw’v€½fJ<”ͧ1òšm0Nà öžö î:h@ÒzN€rßž Æç'î`šŒÄØû»ð8££}`F«hʵ7<¨Æô{ 0`TQàOeb´àÉP 2f€zRˆ€Åªˆ½[YiØú!†È¸çÄÈ5Sˆžà ¦! Õ€‚äÔsú¼¸icvN¦ ¼§¡Gm0£Òc¢Œ“ 8E ™v Ô€òÍ¢ð€º< ÿàiöÆjÙ ž› øõ¶ü€Øþø•ˆÀ,çYà ½ …Œsx ¶â5ÏÉ€1>ŠIhœÃ ¤„ @`X@Æ1ß¾pœh¦aØ+Zq1<긎U0 kª"„ŠN€@AW¦ 0 †à.fXœäà 4¡’‘§@ iyú³„ú hå%3´F`®*(ð†áAF Ió-.Jà ´ פ‹H¸èÀ_¡‰èŠ' )Ö/¬hbÇNºŠêPm’0 MØ #ÔÑ> â¢ƒÏÀ³Ø€:×â!þi‚‰j°‚!³y‚g-þfÀ0$ªíÑŸ4¡i‚,*žèàX5îŠ#逕!ž((B !^j&â@8Ï@&Î@k¨Ý£÷H`É~ãâ ¦ÆÝâú›ø@€6sJà¶Á£êÌw{a@,oÓû€@lAöâÕ9@l†fLJG•0 +ø‘î½ÞîÛÆæ¨|—Ñgb0J~„ÉO22 ~Î+S/Ùµê Xnvê`/²`•h`yH®A2XaŽ5Î@¥”óøÀË–“ ¶F" –^qã ô} ¤°˜ï^÷_3©Øñ †ˆäà åmÕ@þâ¨àÉXƒO`x€ ÙÀOÔ Áü³MŽêT àõ»Å@ºùz AGÞ ûG_„¢¹JÄw7£ –i÷ß_¤rÀZEþÙç<ÁH¡ím-‚O ÎôòCpÚ‚~ ¢ ØkÊB„áб"DBö°˜f±£Ç CŠI²¤É“(Sª\ɲ¥Ë—0W’B3‹$)D6ˆùˆˆÔG7o~|%¦‘˜H“"¼#¨„ÒÓ|œ6HЧX³jÝʵ«×¯O+å@4É ©I9Ü0a‚È)~Üä˜äg]±t .‘IŸÛ¾õƒ(íZ‚—¬¤ò¸æÓ„rúIõþ)/á vBp‰àÙJ`C‹Mº´éÓ¨SŸ6ÄjS¨QH6}òòE”LVj&ù¤`’P©@ŰrV¼@B ”—"L*rÁ}ʧ%´—lñäeöÇ¥|3ÊË$N¡2}áTa /›ü\ò#T|?›;ûIa†jÒŠRFyBen€æ)kH¡`G•xâ“p˜G©è§âô߇ †(â— pÄÀÂ'™l±Z›áG%£dBÊ)©t"Å$EØxÉ&£xb'¼Hщ‹ADJ§dB˜ ^À ˆ aÃ+žH†©¨ 9(pÊ$›(B¬lWþW•À° A$pFP $1bI¤0‘„†ÙaHt‘ /œ,XQVÄ`C \Ø¢B„- mVDJFyJ$Ÿ¼Bk€BàxDÊ-àY´Å!Xvç«°Æ*kJ“ À‰¡QÉ'd „ˆNú!‹Hˆ*Å( ¨ì,|ùAV|ñE‘"†©àŸ ·È·D’qòI¡—,A- •uI ž¨gÅ›øÉ9kH Á‰!Ú®aÖ†P ×!¤òØ%Ir‹‚—ŒQh*‡ê(›H©ã+¬Rו©°¢%B¤T`Å'sÙ‰F°3Ê" A•d’)\жF ~Ø‘J*)¸þÁ‰§¬‘–†|IÐ­Ö ómôÑ"怀"4bÈ%*È‚SžMšÅÅ'æ"²É$8çS$*Ø‘¼TàI'|.ÈÄ) T↠˩`§K ‘‚«p:íI  Ì2‰ T¢Èkx‚ c`Ë.ˆ¸4@Ù1‹GWRF(‡p’‰öyB† Ø€†" ŒáÅ&ˆ±šI&\¨'lêÇ!Œ²Pž¨`1"‘42 "Äņ,qa ± '^œâÉÏ¡TÂÜ'lrH8‹ñ‰‹,±É-xaˆ£ÄIЈÈòÅ+#íþûðgU«K(°Æ)| ~™|¢Â&œþÐZ#R@ Š…Â *è„(À ÛM*Å´¤Süb  @#°…ˆ¨à ”ƒH%Ba®I¡~VàÄ’T`0á¬øB(v‘ IÊËŽÖ‰æ… 6(U%¾°€Ù}"RPÁóØeŠL> ó mÁœ/|Â1ìÒ]\×Àu!$e³€+ìdœSDg¬P`|S*‚\‹ †Ø…]X\)oF·¨@&Xñ³ !F=D‹Ÿ IÈ”ÄIÇ;I„²ÌÄ%;‰ ‘¶x¨-Z’‹‡˜€7ˆ¸aO,Z%ñ…ùˆŠðB±Ã ( àÂŒŠ 2hŠ…"þE'bà)\b·H+v˜;‹ÍHØåìÐ;œÂ 3<…ÈP„¼p¢›XƒORƒJŽ dðÀ$˜ ‚WŒp‡~ØMNÁGëøqêƒA$ IÏzÚ3 ð=G2‰ Ìs^)ˆA&.q ˆ¡[@Ã(¤£Jtb ¯8Äl€í0ƒ!÷~f+aj&¬i5°s° 5 ï«ÜÐ òΰ° à€û}•H\v:[P*¥"P¥©H .@ ðÕP€ ‘7W F2 A7eV Ð ApÀ@{Ü  ±G§©(ûÉÉ)”ÍP”¨à ¾ Œ5P ?àÞ‡ 5 »¹€à° !0 àГ…pu…bá§)–ª –~ªI«`Ü€ Õн;é Á€Àп ‹÷ 20“z· Í`«Ø Âjº]€ 东˜{ €È €²Æ\Ü0€þ fÐ|¥` †!P ¶µ ÞP¥@ /€    ª@ g*"á€}ºbÍ5ÐȩЎ`Q`¯µ°ð»   ¿€u£WðÄ fN€ € ” ÌàÐ~` ÃP /ƶ® µ 5 ´@ `Þ³k©w°àÔçÜpÄ ÙV¨Ð ðµ€±P Ù Vµ … º° ´°` ÔÇ .`ľŽZÍÕW€Q` "ð ú[ `_úà©[Ûà ð÷ÔJÐ’0µö¦WÂpÁ °þP Ïð :° º¥à ŽÐ5§¸®? µ 5 €Øq pô .àÅ m€ Å@ Ò Âeò| ¥ÝÐ À ÅÀ ¥  ”PÌ¿°"Ö ±Ëæá@.F ´`ýÙù f@¤mÀÀ¯F 0 ~° ¿ "PgÅ0. ÃÝ߃$X@¸0©ª°ÞÀ§/°Ð…  Í` ÅP±Ð P…'f ’Ðßá`Á5`áÞÀšÏŠ Þ  bÚ Py5P’PyPÖŒ³åPNЉÅÐRþ"aì ÞðǸP ˜u5. *×Þ ãÏ€ Ý~« ü†î Ö9~¢ "n ¬ÜòÝQî Öð©* Àßå…Ð`pÅ¢¬Å€ Ìr@\±`å¶åÌ€ `ઠãÞ@ÑaЦ èîç ’à ‰ kî Ý€é˜ n_]!áÐåfŽ¢ð i`ñ € »¥ Q¾À=g …Úp’P åÄÕ ¸ åarž_gðÀþýìÐí&Ñ °”ÒÎS0 qíÞþíÑÑàž( jðãžîê¾þîëÞ pì+Ó tïö~ï£QZS€ï©1 p€#Àá(0 Ó ð‰à~Oo°ÎN ïð‰€‰Ðð Á ŸðÓ€l€îþ>òÏ> B7 ñ$?7 z€à‰ðæ°p08?yÀ<@t°@y-Ï'po ‚ ½æ~=`î‚À8 Wð+ßõî: p^/>€|0Qj0 =€0@ðg0÷C qPu  }°@g€BÀ €ò| ‹P`€oP°øzþ8Ðïc¿ùý•šP𜿉Ð÷CÐí>,@€qÓ0÷~0÷;@4À«ßïO@uà@š°C +@DÐo@q€ý> w?*?úØŸUpðûÙ¿ÓPx RQ ñW@á~@P7@,%P pîtà3`ôD~ T0üQ‡G W´ÄÙ±£ ,üø9£Di-^ĘQãFŽ=~RäH’%MžD™RåJ–-1&:ÓËåLš5mÒœÒ'&*3,¡²GH€!{0 $¡†<|p$ò±–ž'Fh\!2â !<ꙇȕ} 0ÊÐ… >Sn¾…Wî\ºuíÞÅ›Wï]˜8%ºx&ÎÓnŒÐ‡Í´Z+úyBçI"OFÀIÔëF/M½0 &œ·½ïEZõjÖ­]¿†7›Øµm߯[÷nÞ½}ÿ\øpâÅGž\ùræÍ?‡]útê;libjibx-java-1.1.6a/docs/tutorial/images/example1.gif0000644000175000017500000011563610071716566022372 0ustar moellermoellerGIF89aB(ç:::‚ŽNªNv¾vþšÎš::þ¶Þ¶ffþŽŽŽÎêή®®ŽŽþ†âòâþÆÆÆŠºººRRRªªªRRþÒÒÒ**þfffnnnêöê~~þŠÆŠªªþÊÊÊ...vvvÞÞÞÎÎþ’Ê’–––¾¾þòúòªÖª––þ>ž>ÞÞþJJJþFFþ~~~jjþ–Ê–êêê^^^²Ö²¢¢þ¶¶þšššnnþþ^^þ¾¾¾j¶jêêþúþú***†††*–*BBBÂÂþ¢¢¢ÖÖþ..þþrrþ¶Ú¶‚‚þæòææææÖÖÖææþ òòþJJþ222&&&¶¶¶ÊÊþ>>þ²²þZZZîöî22þÎÎΚšþ††þ&&þzzþVVþ þb²b¾Þ¾ööþB¢Bêòê6š6îîîöúöâââîîþòöòÚÚÚÎæÎÞîÞ‚‚‚ââþÂÂÂNNN^®^FFF¦¦¦²²²ÚÚþbbb>>>"""VVV666rrr’’’žžžzzzNNþÆÆþººþ¦¦þÒÒþžžþN¦NBBþZZþŠŠŠŽ®®þ66þ""þvvþjjjbbþúúþÂâÂþŠŠþ"’"vºv’’þžÎž‚‚þÒêÒÚêÚRªR.–.J¦JþþþZ®ZúúúÊâʦҦrºr † .š.6ž6òòò&’&ÖêÖŠVªVžÒžF¢FÆâÆn¶n>¢>’~¾~®Ö®ŽÆŽööö&–&f²f^²^Ž†Â†‚:ž:V®V2š2F¦Fnºn®Ú®†z¾zŠºÞºÒæÒâîâ¢Ò¢²Ú²¾â¾ÚîÚÊæÊ¦Ö¦ŽÊŽf¶f†Æ†ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,B(þS H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cÊœI³¦Í›8sêÜɳ§ÏŸ@ƒ J´¨Ñ£¥\L)Ò§P£JêÉ‚« ¢\Ц! ©Ô ¸ç*Š, kðu þ¨ 0 ªxóêÝË÷àˆ+`ñfÕŸ W}Mu˜¢À‚Y@ŒÅ;QøøAXâ@L›Se Ý·´éÓ¨u¹»jÏbY1•=©¬6À¤¢-»éª¤Mw2(hÇî;WÕö½›ƒY«˜Æž-Pz*7|;ý{:óÔàÃþ‹Oqõî‚j(Ö ØzÞ¤’å‡-[0ëÛ¿7"Ïû)X`bÆ $ÂtñaSà‘Šö¡`ˆ©‚Å‚SÈ ¬¢}ì0B*oàñÞò}øÂøÑy0Æ(£x#`0Ä\ÊzÀ@BâV!XTŇ`å– „‰rŒÐAQÂÁ€îh…!%Ñ@{Œ`ÈXE"VxÈ—„L‘ʇÑu•†ŒØÁewX±Ù‡…DaÈ Ì(è „N5{ì`A%ô¨£‰™Š$T—›bø)ùàHŒ…@X ‚‡t¡* ›&Єþޏa‡þÖAhu¦ò¤@ `áa‡Mh¡Äk,O’ D&ù-–Фɮ·¤nΊ‰…ùqå¨Y¾1D¢‡BH„èèœ@i¦ù&ëþ†É ¯Ž¨@p~èÔ w«ï¾ü¶”l*Dàá(¤Ï–fš)X#al׉J©è^!B§/„ɶ°Â:ë*µ¦rk¼©`Ñ€@Lñ«SÂöëòË0w4ÄÀԀą4˰¤"G †,¦¤¦‚HÀìpŶÌ…‚H*Q\‘0QRù©¤™ëºí¦‚É 5“ë ‚¼ñÆüÚ¾1Ç-÷Ü ÀÖ C ÐÔþWKZƒ âqéà o™  È$ÈÝ8;•§}z@ÁÇz\kÈ"`ÀVšròžZÁì°t§®ºÜ%P)‡|uýEw%@ÜFr`­T»;UBW«´^B qÔ:•°WWC(D¡^ Ÿ¦ÒbmÈ›V«h%ÐTN/,rD=Öñ¾úùè§_"]Ü` Ö«/ÿüô%ɸÍׯÿþü÷ïÿÿ  HÀð€ äÐÔ.!ÕƒX*˜À Zf°A¾¢´ „C(D]A™ šð„„ºƒ°‡t¥r„n€˜7@ †6 ‰¢€ˆ±ÈâSþ$‘†Ø€± ðˆH” Èðà‡ýá1¨ƒÁ€#°0ˆ`=LA‡70‚ J° ?ŒàCè0$€?\2ÐC$˜Ä:ÚÑ'–³ÞdÁ¤,@5˜ÜòƒA¢SЀ dP@è ~ÔÊž„ A´á (Ä>µ¼ „w ¥(iR+øA+¸Ùƒ,FP©(`@G?HäÀ@ê :LÅ É!¼aXEôp=t¥ 2ÀÀÉFÉÌfºä—ªAˆ¢0IÈ ‡ Y,ÁÀ‡TàDø¦ÛPˆ B ê ` B2ÖËÂð gÚóž(þ¹C ¤‡zxÀ0Ѧàa ;xÁ ôpˆ¤ÂFĈCda} †0'B4€Žø ©HC" †1$y )Aˆ>4œ‘ºô¥=iC Œ€€¦8Í©Ll¨Óžú&^€†K„ ZXC¨,QÁ&"À€\,Ä Ð€†S/T\ƒQA.耒@C©\ý©X/â‹Y¸DÇ8@/Ž!ÌA™Ã)šðˆ3,ÄÎÀE,0BS ¡¿ÂŽŠXÜ‚!À*F~‘Œ\$ƒcÕ©P DÀ aµÆ5àš xà ´Hh…°ÙT\#¿ˆ5èà…k„´×¸þF BŠÏ*V×à*蠂Ϻ!B¨íA<€‹Ѐ­À­<€Õ« „×°†@ AŒA O¸ÆRAŠ'rŽ!ŒgØ=žÄ¶ Øb4Pþ5hÀæiÄáÃö¥€`Šd¨‚ ©˜E2R±Œ"Átð…'^AYbµxD-¦q^ À Æ (  b¬À (ЄTHCÉýÈ&xa Ì"´º(‚@\ñˆG<©X„1‹&ã¡Áž°g_°Ál˜-4<Ñi:D=Pÿ„ì‹‹b<ƒlp Ú Â ¦Àtz§jjÇ|Zg ³ðU½ i@âGS•~È6¥€l÷ ô— Ÿ0a©Ð Æ€©€ ¨ð@€ + ÿUd%GØà ív*p“Z¦gO4À P -¿ +0 ÎÐ v³  ×@ Âð Ä ´¶Z G« |ðyà ÷ ¡6̳g ×p §Ö‡}¿ð- ¥ðU›p¡pÔP~J6 -pUÓpp\§ þ¨Ð› ¾`Z“€w×€c¤` »P l  ň§` EõU kÀB€ ³°Öà ` º0 »U€“PsŸð ×P{h€ t° ÄàƒxÐ`Äеcð  Öà ¿À EÐ|Âæ ­@ 0`ð 0(ƒ¸y MpTOÐ Øvs@ ¨ XAèLBP Ÿ` ÂÐ + ¡` Çj` ©PžÐ@¿Ó× B` Pr¿` )‡r›p ǰ §nþ… Ð-ð¡À¨` j` ¦p Ÿ¶À¸  Û¥¹€ $Ù›° Çð u˜þt†;2y-0O¸€ Òð yP Ó  4p ‰ gÐ - Ë‘ ñªp ¸° M` ¨Ð¶Ðg ª ¨p`¹ö´ P•4À›”¸Ð kPÎÀ¿@Êà‚XU h #F  Ö€ ¿  h€ Ѱy º–‰õˆŽM@lé˜S1'ZÄ@Òp]®p…™*Øð Òµ«P†¡V AtújBðiq™Lytp’ñ¨i—)tP~^°š\Ç[1›—•š! Ik šYœÏõ Í\ÅÀ¨Ð ¸ UfœÔY¾iØ™9þ¡”`,!aaà”!  š a á,Àë)TÀ‹`š@ ‹Ðòü)Œ`Ú9V)ÀÑŒ4™À–à!Ác_ á=‘Щ`  ‘<` JŸ1°àIA€Ð JP¢ J J@ :RTÀN T,ÀT1 ZRð£&ÀÀŠp¤Š AÀ,AàL°\ T}ÀŸ},p:¤A¦ZšÀ\p,`šÀŸ9IÀKzZ I!¢áNUàjʦþj:.@ŒÀI晤J*Iº§AZ@ !¤1 hª[Šp§”Àd¡xŠ©)Ê@©:À1€|*i 9 !‹àîÙ˜*p9Ða  `Ú¦¦\@. ¤Œ` ‹.PGàN7jO‰p§0Ž ) `• °f0 Kà1À.0LÐa°ŽÐ _`J€v` Ž: Ž£0 =°‹¯dÐæITPP £ߺ¯0p= °UKp [&žé™<ª A@þ‰ _»> cp3`0` _ÐÀ™ ©pKÀ–PI`KP à©àÉ­A>0P ,  p© KÀ1Pî™$š ,‘ð[ («÷É­šR £P ÀŠ` 3P UÀ £p´ŠÐNP !ÐLÐd 0J`&·Pš .1` Ý:J™À ,P¢LÀ d@¥© [0\”°¤‘À¥Ëd`qO –`±Ž º› ™Ð©@ `dÀK0‘ 1 0T¦‘`}ðbðdþ ‰°,À=°að½Éj °¼` Z N,à–p pàZÐàwZJ¼0 œ`¡œð¤ 1±‘@À \ë=ÀL¿©ÀªT[àºL€}¾ap¦ >  ‘ e ¾—Д0¸ã:`‰à}@%› €¥°v`µ*šfÀ›J)P ë™3 Kà©‘P ¨k \[ºêY< f£© K€»© Ÿ»*›  Ž`e03 ¹¡¼p 3 KðL ½Ô0[`| )p v| ÷Y pà–þÆg̾W ¥b=i0¤©° 빩п 1±>@&@À©£Ð¼÷š dKR0N  p¬w| J[ ¤¬°É3p¯yk£J ÇRðe a` ”`:ൡ Z ÅyœÃw¤ ,` »› °=`¡à¹b¡á#Û‘Àª p!À©ÀÄKv Jp ðRP •¡R`‘ Ü™¼1`‰Ã€L¡è)£àZ§)Ð)€ªÄ”°UðËtÜ«:ÐήºÃŠ0c@-¬d0v°¿1LÎ aUP þI°œÐž PЊ@§ZÀ[+e0°à ½)0é ¡ à1¤£ÐŸŒàŠU@3ð) [ /œp§A´3àžÊ੤ÌÄ©à d0bÆžI`Öeà©*Ø8Î oË‹ :€¼Œ€¹< 1=‘¡G žLÆäÜ—e±ŒP àí! Ø NÆL Ù‘-Øše M ÆŽ >À,0Œ01ÀîI ¿þ­a0Ü÷™Ñ‰°¡á0i@ 3 Þ‘TÖ÷D̶Šš0Ÿ4 îÍ£Åø ô÷Miß ` &£qßúíªó ûÍÞŽªRàÞû½àô ÅùÞ~ŠJºT1ÖŽ áþá â.e—À‡Û.p ZàÐ&À ÛePÀ­i Üñ— ž€Ä<ß – <0©P 1 ÕÛÔÍÂcÀ_ P·–°  • þΕ`gJp´L°«£ Z ! B¼dn«l” _àüጜ°”^ùím«‰@ÎR ÅaðêAO,!€ôp»Ïi°. áÄG&©RùØbðˆ™TŠ8)µEÁ-j2࣠)b΀‰ ‚01fPPFBE‹\6²h’-©¤(JE3§ ð’*Œ¥>3XB*fhGJR5}ºÁ„%2‰°ˆ™Õ •*>bšàt$U†Q ÁБ*‡*A¾IÅ —‹RÉjb‰ƒTTR0“ pªLfʰH“ RƒpdHjÉ%3dèd©’‚/J¨þY§‘ % ÄH” ­jJlaC‹AzDó…ó8Nz­5UˆJp¶:2PPøræÍ?‡]útêÕ­_Çž]ûvîÒmñQÔÑ’NÒ$‚´h Tš2UlÈ —‡0|„ ³(+F4ËlYb¸$†bPÀüÂ0‡2#«™ô³ˆ¶ hJ–(C“0`H $´Ð„ Æs*G6 ¢%Lã’LfÅ98ºŠ©‘°Æ‚¿ðbÄ€4¤ƒ ÷¶àâÁ22+Ç%.±ˆ‘ÐX°$JÈ€FR‰!¡T਄1*)㌠X"ütЄ  úB‹K €þ †à%„2f0’Ù¸¢‡2,Q3 6?àm¹(„”1xH¬;I'¥´RK/Å4SM¥ ‚‡ \è£3L "%.’$XHd G‚Ђ“-0 …VÉpʘì0 “E p¢Š È€a‹F*¹’Ð<È ÄŽ>\p¯˜¨C 1ÄP  6HĨ 2Î*\ÈJŒLÈd‰$r0#† zp È?hN“e`„ +Aáä’BH“&ŽcNPL˜a” –P¢‹©ô¢.¥ zM…Á„*.qýÈ@\ìA6(3ƒ2±„ PxH¡KIŽ1¸þ€c È–°$Ë QÀ@R0`ÆQQ æ›S@À’2މ‘2"J°Þ4l±Ç&»l³ÏŽI¼Bàœƒ‘0’ƒÂèŽÈ`ø8Q€ J²Z•’#Xà"1X›n-t胅 ’àVŒ›³ƒ µ’ï0(é# &œ°6 2°ÊŠ ©»)Xƒá¸µ8âˆÁ™£Bî0±#Õë\‘ÅGê#…>:14Œ šK#xÃŽ0œ`¸.@QàëTúÅ u # Mt D-\òw†(á?F‚`J?ô[„ŒrÀï.R¤['f°M´o!ˆ_Üþ¬••-4I&ÐÚ$8A VЂÄ`5¸AK-uaE8B–Є'<["ˆB¶Ð…/„a e8CÖІ7tNÊP…nI°‰HAàdƒJTB`ЍÄYP$"-ZI–0~™ `³É!“T¢w1éC"¸p‰¦ •`Q2‘ƒêÈ-‹PÀ–¤Cˆ!1˜ˆb`öѤ”‚²=pˆ`t襾ô%_RT*Ò)M ²1’Äd{“$(!‘è–&à)˜Š`Œ$3ÉÆXR ¸V4!°GR«Ìä, ‚/$á OÌ '¸þ` i¡C¡B5á‚Æ"pèI ²â‚JPbŒIC298 \0HÏ4ÁʾXepÄ.% ƒF(¡m= gb ¸BJ2N`Ä›ÚC2Øáy€h@Ú1ÄÀ’‚ôdPœhÂðYb*P…T¸ i—à£ERƒd R8Bb E$!!ÃÒƒH$BŽ1ƒì@‰EØ!ˆX ‰|)iU@%A@À š2”á"IE'2(⤑ø¢ ¥¢,ˆécH4íA¨Q#ŃD”¡(qq¦&bC+i^K¦è“B&F±þ„a§[¢8ZRr¨`21¸K´5 šp„úà€HiaLA€ ºZÖþ‘ ,ƒà„Q0A_XDá‚ (! a½¨°L¡‘تÀpÁpv¨LHb ´/ Ç£êÆ`‰TƤ0ˆ„äRaÀ v€ œ€€EXâI(.•Á‚$H!÷­‰#Ìp Œ!b}tHM Èq‰b¹œ>œ[2sU¨€J¸€_èÝ%œ©ä`&”hÕv36ÉdÀy -Íy-!õ.b pŒ·þH0ˆ8µl'ì 3°³d©B&xP1&(]Z9ŒL¥ÚÖ6ÙÉ/ä ð¼L@¢•B#ʈ°Ç=ðqH|R0Š Ä`  6Òˆ–ö$HÖ}pš-ÀÀGpI `2MK´Í"a0/œÛ‡ D‚ˆ5rÁPÇ…/4:'"ŠŠ2P,¢ LØÂ‰-ôÀÏÍYKÆ‚Ô%ô. œùK(’6ë³KM²ÝNXº2H (Z­LœÑšÂp bÐX‚!HD"8ÁN*&‚ Lø b€Æ=Ç„ 8²&Rƒ->ÙÛßá"Ê œ0¢¥áJ"´°…‚þ8ÔK±#8¡‚¼$¹ýQD²µ  $k¨<¨´K,¼¤2ԚϟJ S¡›Æˆ!s¦U¶B-Å‘V¯XÀ4\ZYp¦KÈœP[d-mA@z¡ˆÄhØ ¨¢Â¯ÆHp'¬ÐÖ0x*hm‘ÅlÅá 2Ñ‹e’8|Á  E'ްÎ$làex6$Ø»ˆ#€-›éì‹j6rpwÝëôP ê»3Ø+=HÄ·Ž0À`}Ђ`ð„€£¨BKób€K ggI„6p„ahðm?(µ«›A p@Ó|¡m‰¾f`Ò@–SiU)€Ä(Á‰/lþN½5ŽPç–Ö¨9:(CÓÀé Ù‡ ºD Ž6Š˜ÀØ«>(8ð` •(¡€ãØ‚g&¤°DÂTPã(”Àƒ.º@£@z™ àJX⑸D$(±„ ð‰ÉYD""¥'YÝþ÷Ÿ  Ö&÷AŠh-€Ñ8HƒF Ð;Hƒ¸‹-H¬Àÿ @X±ƒ$€-’¾ª è!ÀFˆ ­¤@Iâ‰8²;®K…@X¡\À$€•¶ð ÄdðÁd0$@)ÐTÀ#[Ž4 @H;xB*@ÁIþÂEp„t )H‚"<@80@×1;p;€‰>BŒ‰4(p2ˆ Ø$ü£Ã:´Ã;!¦ÀÃ=äÃ>ôÃ?Ä@”!M°š Bl‹ (D±B) $FÌŠ>0&ë&â;ÃM HÜ ;>ì+D„ŽHÁ>ê€NdÀ]Á"ATÅU´Ž$È€ž“ u7ö˜4gB› ˆPH°¹˜Ðò€>HPŽ¬È 8°˜¸Kˆ@‹p€-P$9‚ ø‰ê „H -ˆ&˜Cç˜HX„Ô’@Hx?V4ÇsL- ¨¸¾pJú­öè)+èE‹°G8à#*пö`ãþØÇ#ÜR€b®˜&äÇ#s„1`ÂkQÄZ&¼è¦Yª'›(¤*p€P‚{lƒ¢¿qF‹`B;ؾ0`š¥Š%H‚Èê‹¶²ˆ `Â4 ‹¨‚Tê¾£‚Dˆ8xGƒ§Œbªh©°²ƒºBǧÄ$ ¬f*)P‚L`•*¨„’</q§ˆ„ H€„DÈ€js›1 F%hdK„J`„>ø‚Hx RbÊ¢‚$h„½ìƒóéÀË9Hƒ¸ H¨;“Dˆ,^’•žÊŠ CÆ1AØ‚*¨p)(KIƒ G§|&èis€ù])‰þDðvAI¾ @Zñ›½ÜË °¯4Ð9TòÂÌ›²D€ ‚^“61pN°„iTŠD¨‚-è¸ ø‚ÿèƒ;Ê»¢@ÜŒ°„Ñøã„ÊïÄÃNY‚dz‚¸­à‚$°ƒ/ð²÷PNð3÷ ‰ÔH3”ˆ&¨/Æ HȀتæJ‚msèl´Ê @û3*è - à‚€œèýàGÀÐ$p„QP˜1Cý(ƒ¹ ¡¹„qó¦Œsª‰šÊ˼³ 3œGѹ”|£€«h´FãÊk¡É§€ƒ#à„EÈì:6MØ·JXßS‚1ðO1HÀ>1 þ% Ì­”€N€%@ЬÈ,ƒèƒ*°Ï1½¿öR€·b‚J8H€ƒP‚Nk·xT†XˆE€Ø.äºÏþh7í´I–‰½í²<³7­̸P‚  ;¨3HN¡ ƒ8ž…ñ` §øR4’ }™ “€íÚ‚‡®ÐÓ¾À‘à­‚%ø±F@•J@¬ŒPÍE€¹ç80ý±€% •DÈò°×c.K¨‚0.(Ï‘ˆˆP]T˜…/@€SµØ#ƒÐ¨?±õÞ®³9)È£yjƒX&ómu¼Ç2ßßyR¦òµ E°Uá€_e²GöÕ„úºˆ¾´_òí $´¹øÝ_-ðHY`î ÑBßþ•_ç€_/•ßýeÄ(l`öåÄöàDbàýðýÞá6=`FáVáfáû Ɇá–a­…îB&a´MÈ›æá¦C)`£8„„´h@òHÕ9ò§ŒÁj þ€‰$Ó8, ¨â*Ž”Nƒâñá.öb ¹x©áѹ1@L&ŒUEðä„1˜†(†ÐÒûàƒkLˆ Xš ¸Sà#à¶%Ј¦…úýâEfd %ˆÒµƒí|#AÜèË  ˆ¡†à±Èàv1ذ'H*…$ꄊ˜Z|zªPØ€ÞI-ØØFÖå]¦ ïr‚Œb‚ˆ ×”['K$Ö„í®ø8†°ˆ>˜âȨsy#K¦>X‚¹û‚ À‹ `>—äåpgM‰¢ Ð@ѱ¨%zêÆ]!]žfꦾ)Y§–ꩦꪶj±5C@‚ >˜00„LÑChƒ ƒåè€;H…6k­pkCh€˜(Cˆ¸¾€(¸ƒ¹Æ”½†$€‚˜ØƒÀ¾êÂF¸˜ 7°‚@AŽ È‚ëƒƒ+˜€!¨á þI ‚T¨@X¸F<˜ƒ+ð­ƒ!à ¸ᨶ¶0à‹„@È‚+Ћ¸ƒ?xÃ6îî… ‚(@‚=X>؃$¨Â^€)H…U¨¨$T€‚hÂŽ `hoY†éÎ(˜€ôì(¸€;­….h€=°€T†,@‚†„!ˆ‚hƒ—$8ë6˜îâN…(h€(¨È‚»¾í˜€ ¸" „T… n`+Àƒ(€‚7 n @‚H…¸þƒ ìUˆ‚=Ux?¸8kIè9Ѓ³Öñ@X€U¨>˜ñã&óé(Á QØÈ*þT‚?€iFxA^f¸§wN|"{bA4 $$D*ô…6ì ®qÞ½|Ó1¸lב! I2²0„ @À~¨ÃF@#¢¨Í.5 ¨G(lƒФ¸â þÄ-¼B[‚H "¤ / d; TÀƒ« ŽÕ?¼¡6|h"GÀ`ƒx …²xÁŒ ˆë(n2¸ÂTrÆíùa K“ ®€TF±˜Æ<¦JJ€ +ìa#x@º@¡+4  @Ñ’#`ð‡ƒX@Ê"Ù±¤B.u æ'À·ÈÀ5àÜC –M8j‡ÌöŒà?ÅÙà—P $ñ’IrDz ä 0Pˆ À=, &tƒæD".CdÐKÒJ60W*ðð€?|jd>DȈ`Iê%5H‰Ì™ÒÔ˜Y€@O¢p °Áä ºAì¡þÀB¡>`À;  u…DÁÀ„OmˆBÐÑ-’ ŽÚ0…(Uœ|zw`9"Fà0ä=Ü “ÀÀJÚ51®l%!d t OÛƒC?`À*‚(YÉ:©U8²jH¸¦¸æ×ÙŠ)B°t…zAKå Âz­)lc¯6tò= àˆ ƒ=,`à\ÀÀ€ˆ\ 0½ JÖ‘  1tnv[ˆ­Ýá°„T—Íh…ð-C;¸B!/PdKÞ8]@œÓÕLøü ‰,œYЀ Ñ€³_þò.xÙ›Š `šáÆ£„DP«‰CB¼V¶¾pî ›6¥ö&nɇ7 Ó+ô$Ä61±¤Â• ÀŸ:!„%¼O Ó¸Ænë^pˆäަ²¸s ÷¸Q>mŒàb3¹É>)Á†ãC<ØÉ5ÝJŒpˆ¨Z¹Ë^T ñ:ˆ,Sñ'J „æTƒ .?© ¡Ö~edå‘hQ‚„¯#2ÀXJ a ¢¶=ùˆºÀe`t€ËÈs–Ò/SºÒ"ÁD–³Œ‰ £DL«Å“ˆYà) 2ã<…§ æéNÓKªSͧŸlþŠ,B²€‹Q`èB9¢§Tœ üS ẸJ…0r* ðƒ­”¸h*P` X!ª FH¢Çõièá7 þ„^øÀ Xk‚Ã'Ê^šË•`!Ë/¨2¾oãX Ó6àºKL ˆàÎ ×ìˆèFB0"¤ @$!²0"ñv‚3zCȸÃôp#Ì'Q`Ò0ú! s/6ˆ½W¸kÉ Hð ßáûA‹4KR„”A¡F°`\ †³Ï>N„À Ì^š(™À*ùÐû¸ÝÀÀ|@ZEÀÐw" j°àÏ=eáOÒ†À‡÷ýû§ ž"Ó*üÀdÚ0^L”Ýþ!B èÁ¼ Â\ÓЄ‘å¥Â „N¿¤¥9þ@"XÀ´ å"  ¼€Œ@ €ÁX×´ ``N*p¿ @M['… À  ºhí‰AYÐÄTB¡ÉX]*`0DüÀÔà[GÈAØÀRÉ-)“#ÑB(—`øÈ!<ÝF€»”€\v pI H˜ß  ÆÈL„=@ß1ÆLÔ Áv ÈŽY! Áø>6Ýít"([±d B ÁI ø­ÔàdÁÈX@|è J4À ‚vô ( @¡â`@oäËR¹ŠV£Ô{ E±ˆŠõ¥Bþ0XFÙX,NJÈ$ÂB ÜpØÉDMÀ Ð`Ð,\@±ôW* „À ày‹ Þ@þ!>ÎLýÅX{\À;¾D ¼]*  Ðú¡‘ ÎÛ€ PÄX `B $Žb¼à ‚Ût@Wù" Àêuܸڰ¡„tä,¥Â€üÁqüÒ Y\ÁÐ"!¼€‚©D‚˜‘ßÎ A@êåˆÒÂê-À3Ù€ ìý¬dGÜÁüdóÔEŽÀÂ!t@R LÁdO¾XUÀ!BЎДÞ\ÊJ¬Âšc>ÞþåÕÀOIØ ÕÁ΄, LüÀ“@Áù‰ÀH›ÊÁ\@pý0<¦$4'¶‘ýÀ&f N€ÈAHÇÈeJf_l„,¸P"b›‚aþ­}FKÈAcF›fjfÈBdcÈAuÝÁäœbý€r±„,L Aîhf 4€müwŒ^Õ@HÂÄ›!Ä’H䣯á¥y  ¡„uAPž'¯ØM´ÁBrº§}öŠ!`€„ÑŠÝç¬ôgK„‰Œ¨­€È°–  Ö›@pâ›ô¦,ˆç· JxZ¿”€dt08¨£þLhjõ懲„¡Š¡thGœ¨y@Á¾Y„¨Œ¦Ê\Á NœÐ% ÎÉè!Aš&h”JXpJBO‚ ötD–zþÑŒÓ-€t˜Q&BÉM%çüA}’‡ H˜Í(ššŠQŘ $‘w8˜,¼{8¨¼›ƒ$„Ñ à¡ÈBŒÛeŸä…ÃJjJJÔ€ì@!ðK ¼¤êJ¹ ¡ØÇµgA‚_V”@ô£´%2¶e ì"JÔ‚d ¤Ú)±½!ˆJ‰ªèÁ$'tÀðœ‡*Éä=ò0´ËŒiN¬ëþ Þ@Ĥ©“qŽ"û‰§N «‘4À”Äá°RF[ A‚$"à\„ü“°ÙYÀH‚$¼hI(¥ºÞ |¦crN¿v“ÀNòBÄ`å ,CLÈÂÈ¥J!¨ê“zJÚùhä”jÒB¿~f Dã” -ìŒ@ot€pL*ÀY4MÀgD,ÀØ€€ ÀŸv£±Vʼn LA³î„,¨ÆÂ!¼L©³Ò˜,@!AzG” Á!ýøTþÀ*¼f“oÂñtÀ ÂBЦˆTþ@ØÊBžà dÎcMNÍJp@Œ ¼TèB<„µ©r¢€2ŽÌxF`. „§ # B!h¡$@Ä[ tÐP Á|xB`‚Èh€\»ˆÇq@¤›ˆHOT®íL@{Ûð Ú`èAÅ õ€aBDAYð b%GLÀ‘+ „DF˜k@ÈLö‘ôáÙ@Ð$Äì@-PБvwÄî›–B°†s1­ÖLZxä äµ{4@s¿.ÓRGT`¨8[kuÜ=-»‡e”@µlËî_:£ƒfDãªj†êFQ $á![\` ´,”û7•;`šùX@\f,GÂPDù yþPÄù ;ˆ€AÝëFk†Ž‚`!´Á`@|HùMŒÉ˜1¸¦žÊÐ윬‚”§Ä³Lˆ»ÕñÈ´K$•€†Ì·S1à1ôç9Íà;½S+LÈA‚¿ÓD`ÁB ¬Â=Eúÿ„¤^L 8ü0:P(Œ á!B˜&&$hF›³›ÔÀ@EÉ€æk£ÙÊim7QÄû‡ J$¥´9ÌžÌP#Òì¿Èûg$QÀh@hJ*ƒ%Ú¤j£…!+!ÌŠ,„ð¸þJÄ7W AÔÐÀ„ˆ‘Œ#(‹,9©¢ÈJ5e”7eiHÈ1U‰]Ü3"Š w¼€²ØI§O!þ˜ Ð*¨W±fÕº•kW¯_Á†ËuÇ>HXÝs%Õ+?RL€„O/ŠøÂBª¼Yxc×#€Ÿ©Ø@¬8Õà‚©e‘ñ¢Må6M_Ô1XOªÉcO®šp€’n‚Vª†Œ†.`ň CFnØÀd°ÐÖHh°A¢Í #ÉŒЈ!XPüÀmƒƒ$@CFØ($†…+{€Ý¹0¾¥†UmJD¹âüÁ‚S¬Ø¬Ãˆ? Ü™"hÈþ”`lÀã $V‰â¼œ*Ćx¡† Œd·TÁ‚Àè ¤ß¬€ ²ï‚ R±(ó09D ¬e ö²î 0dŠ®xà Y À¥‚2§!L²àÃZEÒDXÍÉ'¡ŒRÊ)zC"€)䊎ÖRh‚¦ä¢ åœúK¡ lØ£­+H„" ¤«ÚcW1D±Ä ì°È¢ÉT€ù)3ƒd謎œl£ƒ0⫨ìÊ! :ÆAR d ~ˆâ8Þ|K¥‹V ¤¹cCpÊB @Šâ9ôd 8!ôx LF(a@þ%ä.ˆ¬ÀC+ŒØƒdAø€bÍ DxA0:Á«Ú 0^¦=ü€ €À¤ƒž†iA@àDý•Rˆ€U,¤ê@ƒAö0²†^+ >(")‹,AÁ©Uê¸Î0ðã°¯X‘JQNYå•ìÀЦj¸"TºŒ(̺: AgI"ŠMç?°¡)‡ Á‚C ” ?HЃ?¬ÀÄödÌOƒ0È¢†Ñ9?ŠÓ̳ÎPÐ2Áª €AJãà1–±ªãI”ÛÃ?#Þ¸C<ùàJ½S;¸€Ï©!v xAþ&„©± Äñ(!‹=@¯ ©ˆFà ?¬@vH€&­0€R ¯ÍGÀãm¨v``YàM¥÷æF ¢± ].Û@ß®“À@Ž;É‚¦TX«‹T„¤;ꒅÿ Ê!^2HA^8÷+(F`0}¸é¯ß~”åèÀ$ƒÈÕàŽ{#"B¬ C 2€!âkƒ!qƒ;d ðà 8P9È „ÈÂnD0¡$Ç ~ÈP Ata« B¬üÂ3Ž!kY^‘E!0Pš!T``÷sJ8`¸Èá S¨Ã*ü`-#Ìç ’˜VÑAìa~ØþÁ .  ¸"#è€,® ?  FâH µB§rø,²°9‚ç$V„†à)@È#0žÍ® àÂÃ*`+´9(À¬â=¢%„ À ´ C¨C0ˆŒÏUr\ #R°È 4iÃö=È!ˆûÁI1Ch@QpJÎ(Õ…!,`taQ—É|˜Le.“™_YÅ"Ã’*•Àl›&¸ØLƒã'[&‘¡Bâ8CÈô<ìAAÁ„H0„ã˜o9‚0B䉂+'wF "¡03Ò„J| «Aþ AP?È‚z˜PD5=+†H'h÷¾­P(è±< ᘃ ®À@, +v €'GãC\ár°@mÀÐ=I’FXúCœDz8 êÐÐÈ *¦6±šU­n•eƒ2 r€+4 ‡\} 0  ‘ËD¤ 1Ù Z±’­ÄìQ¸jD€QC§Èu5ÀˆÂî"Ø« ÙºŠ`Ù½Rˆ¦QZ… 0Ú™•²•µìe¡’5µ4è‚A1Z˜øa{¢ÕJ¡8)™gJú@‹L[ÙÎ6eõ@LZšC,`±´õíoC»¤L¸Å5îqþñj„Ò,xÈY'ð\Ðd!›Èµ®Ê*0•.¤õºÝõnVéÃ\ÂÜmæþ@ܱ@á¨üî{¡´ñz¾õµoýPðñÚà®Ë\E ê œ5ºñ ½DP ~Ð9 xCáÜa"h:R‚@! Ï­A@\àÜ—ÄNÙCÛ@#¸"*ö€ "â°¨À“¼ÀâeÖ e-ñe50ñ¶­¿>¬!¬0)…芇¸l°=pàX°à†€£à:BA€„T‚A€xb þ`øT@#X€yÜÝ6#K)Ô Š§b¶h þ2‡"Èø+ °Å)аZ|"¦ †2©ˆõÆÙ²% Í¡‡ÞÚ ðƒû/9Œ Z$¸×øP,ìa[kÄvPƒ¤% 63.ïPA¤ ¨À Š [á Ò¥4|Õ5aå ©ðŒŸ-„'À¶ð‚ŒUl TÄ´B â…'x*Ònö*æð _@dÜánw*Ìý7C t3¢=mƒ<á ,¶F2Vqï[0†1¼›íìf?û)7D ||l­"‘¹S„ 8Ó DS?_FÁ DxWa?ÔaÕ 0Wª€á^r°u*&0þ0äœPè´MeQ+ܱ·.r[¨¬ghÁ1®ñä‚ H*’ 6„"n°Å# ‚ 5œBÆ*p*ñk8eioÕiñ f¤‚Ãx„>‘Šj´à¨°† l¡Œ]Xý$›@¢IqSübl8œ¡e,ƒ€@2L‘‹T ¡j†5Žq†]O8Pñ R ãg8†µR‡+ÝèÚ”„~áC„–˜µ{ X!Ñ”Qs¦„Vu𨀬‹ H²‡7üDÈÎ÷…GY©ÈM k__?”FµO‘†t ТPA z‘ŠþGœblh Va‹m§¢­@³…¡ÖŽ®á$æ@¬îD!¬ÖÍZ!€àä/<ÀhÁ p€ëN¢ž!áRÁ>ARxáæ ¼àx|!¼€ €(òàNÁØ` è`@ ‰!v!N" á6.ü|H< j  ™©$áR²À.€. ^0á:  ü`°Àô dú¦€aü º$!ö 0^àA.€ ð·¸ô€»ÎÖ Dð°Ú ¯T@ì ‚ Tàöþ¯¿Š!…M„€(`îžÀé’Ra<l!¤A ž¡í$@è"l¡Fð¼à (€¶!h¦Á š"ÐŽ!ò@ Z\AfሡV!íà"‚Š,• ªë²ˆ`ÙÐ…‚8àÔ0®…ìì*.`€´Ä±»”$².@:€¾R!`¬á~ál’ÁäkLÛXÌ |A¬! þîÅN¢"WàÙž`HáZAN®ážAŠa ~azÔ€ ¸Ñ ¤á@@h¬£át>Îþ"€fáÆ-(àÜ P!†Vh7aþ®taÏœ‚f/Å,hoc ÈÄl+Ú …dIÆò»Hb¼Ê'àôÒ „ARQQdÑ*o&AHApA¬ Š€Áj"ïÔ€ï¶ÁòØÀ®òfÁZ!##ó¨2‹ ïœâ³¤1/=a 2RÁŸ²!z¡æïNáWà ! Ôà € /*.ãò9›)â Ó¸&@Øf¹î2HA@ `Ì ¢a h¬à<èÀ*¼àÚ¼@Òs .þ®BÒ)„€š€T¼À=ã@Ö T ÇÜ`  a ºÎ ®¼ò$¤¡ æ@Ü€<àÚ„ h!Nh!(Å ¢ÜÄ3ÜÀ Va"ÀAÛ“#ŸBl€Œ­²&t:ë爠Ž"*–ê*D@e²SFîêR¼È h€PHµ¢ êÑ—êG°ÛhaíT`í¦Ô Ž S¡!"®´JSá Ø"hÅ4ôŬÁBAÇ”ô)VÁàðàªÄ+Žï^€x¦Mk¯–D¼ú‚OCK@ N ü,’¡ t!RáŠ@QsÁ(àòœþÁ TáØš`ŽÁ`A„À<Á’D“¨!Ñøô0 %À¦ ”J4 B ^P#ä`ááz5Väâ¨db ¾ Õ¸Þ@¹˜+PD ´ Â[µ@ ‚ L`+Ü@ ÈõZ© pAó>a°Ð`f!hà^q¡®A"À:oè "i¡ŒØ<’!h"ÏÀ¨a(½&A : „þ `Æà"ál ¢ ŒÀXºc $áM¯ Aê`§.rçCöÀ$-Þ€þA6íZ}«“˜‹QžÄÆ€ B@ :"¡¶¢*2àÒ€OiàŠAÆZà^!¢Š Ì6‚Sê-v¡KSaãà fabaO Ð`(@/óÀ àØ”f3§“<ëm$A "ð@|fon€eS*w&€ù*wpÐlp€Ö0 „–zrc‚Íh­‹V–‹1ºÂ‚€ ú `7ú R¡œ ìÀ ¤à >À a "¨ ’@NB *Aa@Á Ž7‚ ¨@w " Œyi×vSÁu±÷)ú€ àÀ""zá€zÇ× j7þ â|© ¾7|!"}éÇ tá žžà蠔шÁ ò€pàn!LÁ®a*2rÁ~ Š~Ažà H T `AKÏ Šá&ŸSêà¡ ÜdW!rqÕ ®`p¾ã,DÇ^X#g Á+RôVáÐiP¹4 ª€u·Â*a¾>€ Æ bàŠ{`”`!”÷wá *Á B>à | Ä y+ L ÄÀ6  ˜`¾` ÆÀz· *Á 4A²6a Æ@ zàN¢,á 6!Xþ Ž+a`7@È "á ‚@– –@Ä`¹ÞW¶ ìÇ p" fAëBaŠ òÀpÀÔà—‘°ˆ!ÎÀ Da6u ’áò`bÁ ÐRÕÀzaŠ@øÍ@P}ª  @È º`P`0 ÀF€j@BŽbfü` 8@.`o~ î@æšLxK†`…“¸»Þc¼Êñ*a Œs Rá¡o7L` "Œ+áwÁø :RÀt Bày#By!!¾@`€ ’ Ê Ž@L€ `À B€ ÁŽ þ8ÊŽ fÀ),¡ ˜6\`‘“ b@Ž`Žà @ œÀ Áà ¶€8ÁÁ V¹Š—©ÛnL7‚"BÅ(Ó„OÂJ¡ " ¢À\ ¢:žK€jô…$A& x¦0á A°ë`±O©2¢ ¡ÕªE&ÀZé¸V¡a è‰+ªà¥?`$Z wS!Œ}"œ  `wŸBy3`¨€Ì` ¸˜R!\¹}#A`€ÄÀ\€ ”àÊà©Ë€‘Ob ¹ ¶€ $@·• ¨#a ¨v Ž` ˜ ` LàþÌಃt²"B:Ýô­ºÀ ¡äÜ[½}kƽ´¢ ª  !ArÀ`€ z€’x x+ ØW >Èõ @ \ ´à$‚ f€}í@ÁÁ Zù}SAxÀ2 t¤“€Â`¹ƒ Šú$,!úàÆ—zB|Äc` V¹ R€ € !\@ºÁº¦É:4!œÛ¾í«h¥ä "{÷¤üºd:{+`Ž@ 6À"Áá ” ¶ !¤˜¦,!(! œ` |à$`Í5:”Žü,A ˜à}¡bà Â@Äþ • y”à Ö"Æ` ö¼R!Í+š;‘< b ¡ àÀþû ’À,! |` ÂÀÉ·@»³<×uý»è¢+HLÀÄ¥÷$¸w+°—}µB’@¶ŸÂ2= À5+‚` Ê z!bÙ¡â{Ã+Ä ÏwýÛÁýÇ\ 2 Ú‹Ë"ÁÛ§D€Ù±*Âà¸ÀáW RÀ4!tÚ¸à}µ€ ¡kS!àc·!t ¤àÈ7Ü!>â%^54”€ Ð{ ” È` È Æ@Fa:VZ ¸@¼a€À) 8az ‚€*´wâþuž®£àÞ¦ç/ÀICîFµâÀ'@ª ³.]WœÀÀç¼B`,! Â@t€ ¸@ 8A XÀú` ¥´ ,A4A6~çåþZK ú b°¯@lRÁ8e®ô g&èhOº`OA#è,;+Jà±™ìÀ¶ÀÞ× ¦¶@ – hÜÔÞÓS¡f} A z`j™@ Î> BÀŒ©€ ®Ùç>ö±ˆÁ Z¢H¤H-Dàš ¬@„ÀðýŠø@¯¬§Ã:*@; 4€ä (L`ࢠø o Ÿîªþˆù€Â€á _ú©ßúŸ) ’ß   Ì£ X ÞÆ´ª´$`RÀ BŒ 9Q’rÉÒ¢T©ÈˆQ¤„ œJ‘!ð‘FK‚@Ú@‰¡È‘$Kš<‰2¥Ê•,[º| 3¦Ì™4kÚ¼‰3'M(‚ y€ †Tx†b°1dŠTŽ<¹òåÌ›;=å <5@2´Á¡TH´b©­ÀêlOu€°H®Bre ‡U’µj@m EYõF$<€!% &FÜ%q0E!(@‘Š€ €ß*`P ’°À6Ü ˆ tqE EÑCHÝKI˜áƒ#ÁaãIR¤11þdBId‘ͽ0ˆ\‡Á* UG*zàÁ” Z¥RÇTDPÂIo¼!‡¼† 02d#A\mpÁ›r€1ECPHÒrE©DÈ"uaC…`xÈþ xXÐA òÆHmÈb¤IˆÁB¦ž~ j¨¢Ž $ÜaE L!ƒ‡Ô€Á ?`!C "XÉ«D!ÿi€üÐÞHDÜPƒ!XÔPx†üІ FÔÀ­‚øñÆ›;ì!4`’;ÜÁ©”0†TPƒ P($LpGxҀȒޅP»Š7JpÁŒpŸâaÃÈEzHò­I Ü`A „hpCxÜÐÀ*öñB”[Yð _¥BÄ”YÈð("˜òÁq ‚< É*~b®"É”ÈÐ1"}Upñ †´þÉztPƒ,xègH+<*Æ¥Ç"a‘J‹€bB\øØvk‚v9ô„Ý\,¢‰&)„‘#ƒŸ}R !ÍxãŽßÔ®r#¦kÍÒ*PX^ÔV“,/˜&”wŽ9C§›Ìæ"Õ€'C-2„H¿´ xƒÖdÀP‘”€Œ|Á„:ˆôò©| ÁÇ‘@òÁÒ/CNX2ƒ%Z¤’ȰåXR„ôR Ìv{üò Åu¬~ðøAÄçÐ9ɹƒ N.B>ð-€BIø€"ÚÆ‚t"Š(ƒ%B’h‚aàBñþ4P„Œ`„„H0B$Iƒ%Á.ôÁ0 ´|€!‹@€¸ 'ä€ Æ!Ãìp„h‚ Tˆ„ȇ€À`&Eƒˆä HC A 0a'RŠ3¦B ÔAX&p} éÃÞÆ‚ „a.¸£ œp„=R‚5šŸ!‰ÈÌ¥.‘:ÑD#2±…#$á À)*щ$XâŒ,X#b 1T‚Ux"ÍFH –€„ À£Ø@,Á‚ ZÀ[õ€' À© D–7*T!Xžª †FÀ_HD’ŠþEÄÀFaàÄ"‡*:B£ˆD*’ €-èoÜzF(A 0HF‘ |bH„ 2ƒ $Bš0¨Ð(¡  D .a%\ÂøÂ(*Q‰>ð ð#? R–ˆ QÉ$Q‡ˆ$ ’hI vЀ.±d*½‰,ê0»’$œ˜ÛËT4B8cQSTL°!ðh%¤2 p‚`Õ 0“™N*‚à3„$ 6€ÍDbŠ©˜ÁÂH! ŽØÂñ8¢[ ¢€˜ &TA 0I" °d"fÈúœƒ|þn€ ©ÐD(ÏEà“¢c ÃBa -¦" P-ƒ À*Àe`B*Z„-|€£Uðf· ÓÜê¶Z‡¸R q…+]à3+AW $–Šb='Ìu9 A¦ pnáp‰-8Á{ &C°Gœ‘U€4AKxt~C‚@U«ºÀ°¤Äx@ÕEH´—ðYÙ‡J,/§¬B‚À„ $ 1èƒ4A (¢ €C"*lDºY‘ e5A °*A¶6’Æ—„1ð`wš¥BðË(A½ íT>ý¦ˆ  «Ä ÒÔl 1ÈA"‚p„ @þâ»m²ãd‚=ìr¨€¹ÐR `b  PS¨"D\ {¨C˜+’, br( Ñ>¼áuàÃPІ;È€|H…RZˆc;03NI"‹ ˜ù+…×Rñƒ?Œ€h@ ñgA×`h–Ÿ J™ TƒˆA0ŠLhâ<`¦Rál‰&˜ð…$dàĈÁa‘%à7!pë"x¤Õ1Tp 0C"|àð =(Þ4Á ä <à‚$ GŒB—<0ñŠ l haB@±sÍ$$"Aèx”†H,A ”PO‰'$X„þ Lèìð…Ó¬p$R0€#Ž`€¬U0È@ðH䋘, r„µá‡xÁ!n°€¡pÀ(ŽšÄãYÈ`OÕ*ήÄ2a ²ƒÈ‚‡;L VˆŒž¯0`zÀ˜C©è ø@„B‚ZÅ’¦€D숈Œ,b‰¤D‘àV/ba`4±ˆDb»hû€@*€Â &p‚ÁpÁ zcRÀˆ‡¤†wBèÌÕ‘ø€G¥à'tÂ'ƒÓÀ‚H! Ï CŽÐUøÈ ˜AHÂ…Fl}þ¨ÄÞûЉxP¿˜A&°üÂo‹B 18 ZpB â„Ex7äÜO’Ä!`'|0ŠSñ‚*])K Ù*…;”äF€š4¶£iä¯T»Ü'oR b]"qXÀv5Ðg† 16©° z0?p€•òQ³;»3<2¨"Xi‚'‘"˜‚'8¶Ö‚%‘aPšp‚$XY!Ø6Ø};È8H² „p‡ {`~©ðTã!æa(êq`0²À0'6 (h¢&"Á&¢-rƒ z@u?ðW(?%UuþüÇY€#ÐRÉ9ŃN†8uˆ‡yh/`;pÀS‚à+B³X°rÐVÐ |ÐXm X H°/7’€"@6 oà„°pÀ\%p‚wp Ï pðp^a@šñm{'’"¡¨™ <`‚  >À°Ç—þ 2˜3 )J —#a9òeÀf–µ©QNp ‘p"ÁUàz”P!£p j4y™Ð \•½S3ðd0Ÿ&  N —i!¤˜Š JŒP Ž%Lšž§Œ` a` P G` NÀÍYpZ@&@¢. –‰À`ØÕ;œ JО1€pJc`¶l»ÃWDhµ1 –UU>P|tUä ¢à[€›`¶Ñ@ä‰ÐZ°’É90ä–°£sdR@  ´‰ð‘£Fšú;¤©•@­”ÐG }@ fP @Lb°{ ¡PuD–p ©pAÞ c )0L {7cP_ 6"bfpœê¯39+À %Fó0äÁa3ùQþeBu~%ÀòÇ» m@gb4Ë ë ûPSË"Àš)îñ8u…©`™Ê3ëzA0jd  °p KpœAEkV¥§EA—`N ,P‘0 %äv) @f7ÇJ[CT¬ ‡¬e°¬©JVq©RP ”ÅAð¶ –ÀdGÀdpjš £P8E+¥êš®–ÀL°Šp=‹¯L T¤ vÀ–xÍÑp&ÿJ$€±1f]p;À©À½ˆçèrs© ¥ËQÀŽ ¨m8…þð| ‘gV ˜ÐPаà z‚§Û« ¨°ë? Q²:&„°$%3Ç zá8Ũ7@ŸC8Ç8R@e À ‹Eì»XA œÕY®´‡[Rð°¢%)`a ‹`e°f¹PËê´oëì9©•• ™à=`ާq Ð [°4­¨ ZªÆ¾á®aGðc°, U0 L`#b N°€q2úqR°‘@N>6 3pK—¯< bà=z·™ð¬ÉQ à‡0H©¹D"&#€w@‡þË16@W .CÁ~°°0 _¶ 8%€ðâHrSàŽ%@´(Æè‚0rpVo`$àtD0`…P~0Qp`Pˆ`zÈ?P%F€] PPÈ (m /ñcI@ \@ G  ŠPË”@œ:@ ”0>iÃð‘ŠÀnG´¬º¬i@  ð\ I vÀiÄI›çdxKºF pÍʬˋàË.ðË'Ø.°LF`:`Ë:@I`Ë£ËvCLÜê¡>a 0` 'Íu£}À9¶üap£hëþÄ)@U|² 1`Ñ\ÜÅBÒtým¢”™ß  ~CÁÛa°F˜~I¸~çq(•¬KQ!V øG‘=™ s˜\B q‚ ?É6P,#q }ÖUu€"…’Œò×,W0ˆ#/,›Ñ?r ×}V– Ö0KxfdffÆ\`€Ö9W SYP’ðÖq=×™ ×Weu€×( ×Õbf ØÔuæ×u€''ŠVˆØŠ}i-‚í"u°Œ©ðØ“]ÙÒk?Ëø™=»f6]Ÿý'f õÖm%›Hâ\â÷*;%© Hh%Kþ8î''‘à‚‚<É"‘&kÒ&?-€²Ћ%Ñ;€ S`.ø×R«@Cp7ðY€}†./°PùÁ¹Y-$:¸[HðpÚa=À`ÑÛÞœaÑWx(p…(XPS~pßù½ß Á`Óþ à Q€0àçbà®tÁ’sí , Ú.Ú˜`Ñ¢ÝÎnjøÐá ñá†j„Ð"ñá'ž p&Î,;v‡éAã aãm°Ñé `E}xð‡6°Y0V`@.‚€ ‡À÷xF°P¼Spf5Pt„€ >… þ;àF°±å(p‡0{`4Pþ(€† € ‚‡€ÕU2`}6rQ¾MÞä€%€‚ @©+]0“ÒbHL˜žBƒäÝ66¸D”Þ#ÆD¹%?`'Þ6À‡pŲ ¤nꇀúgªÎê|"Ú„€W€±„À'µ~Y˜ ²ž…oнþë®êyÓ¤NìQ@ê`0»ÉN;¤žÛ©€ÎN; 9 QÕN‡ÜD¡eÀ­í/>ß^!C€²«‡°äGêé~҇Ц}ÚS`x(b' mÀ( YÐ QПþ–É|PRd&( Ú¯Ó߈'°ð?°ðßíg|ЗYiÀw@‚€ð” ý˜§#Ó{ð, P)P|€)?@)E9D~ò#¶Q Ò¯Š&‘J66}ÔšŒPm•ãª[«pp§Ñâ#;ÞãVñÍ!Wð*  – «Ð@î8Ò<0"1•8•µ&1p‚=â_"µ)¸D~7ë<`Z#Ì6>â#i`bX:`—•U0•$Q@ A !!Ð]V™~úið©Al»sù_E`­_Ylã©‘þÞ«`+$ GÉõ@R‡`ˆPcœšcï# "ðºb¹ñã1 ¬Ue@Ðpl ѹö©À1ÀUpà2ª—ÚÉ`à‰*%BÀ(U**Nbh9È"œƒ: ØI¥(R•9R1‚TÅG#£ÆD qÐdªNxlÉÊA"H‘´¨ŒÁÄGb8 âÇ M'…%ZÔèÁ6?HÜ8ÚÔéS¨Q¥N¥Z5*"dYåztÕV“_e­: Öé*´d»®ML-[¸q‡J!céCÐTþ—Æd”¤‘¥Nya$sDQ&Žt¤âBÉqKK@%Ša‡EP‚„€‘aÃPÊ)‰ŠŽ11Ž 4ƒiH2|éDÑ'©\|€á$Dš*}™‡…’LRRQÂ0âÄTG¥éGI)3ìPRƒQ£ Ž)qIµˆÓ2¤„±sd£H6$úBÉ@_ 49é1#ˆ\p@ 40ª¬ØÃ¤ ÿx*‹@*ô£††I2ôð(FF¹D¹ƒ˜°$¢ŽF lKz¨¢¼”Hã *°12*¡+ƒ4ÈØb ààn&2pb‰%*Ã4MŇT‚þHâ NrRŽ”“â‹ Áç)#D>hD‰*1éƒLf|Ž¢$t²$M.éa‰KÒ b2šÉƤXD‚FMÅ‘ŽªŒÄï aÂ%*YBŒTà ƒ>ÔtSN;õT¨6ÜÂp k¨a ꦶ¢°B†ƒ ¨€“HÅP¨7ö¸â,H]eÕƒ0aª,³L­ÕTNM…Ô±nÊØSyc ÂP³Bý4@E|Ø‚¡:ÇÐ$ˆ/PdJa…%xÐ$=;àÐD ;êí).Id Ã)BP‚22`a9B )xØ *\àÞQ>È@BTþ¸ Š’Q(‘·Š2¨¨¢Ï$È@ÀÝp.•4¸0À…4øÂ¨ ƒ’ 8‚¹’áH£^)”[ÄŒFtÅŽ>8†Í’ÌÂH!´ˆá ò¶õúk°Ã~ê n$$ˆx! ÖÆ@þ˜ (^M¥ =ŒXû ,Ú6‰¡d‘TÀ0‚ƒ¸+ Á†Cº ¢-Ú® •=Œø#Djä ¢X €.,øãŽ¡D@ 0"€BRÉBLò~#ô˜\ìµ4É¡ EÊ@ÀŒ2t¨†Ìñ’/"±„’Š Ø`ƒÿLJ#ƒ%RØ`‰+ù€N>Ø€à Ä`a”J2€„þ’8(ˆ%2˜A E”˜’60’HzØ€ )‚€Áp¡HÁ wT!Nè’Ix$‚<@ `Ðë%"cø̰àÅ$à#ÊÀ ôÀྠú)!eF˜ PPw;äa9õ‚+ FØR#bÀÀ‚è&X­Bˆ8ÄA4¡ áRaƒ?\à ø®°‡¤‚C(†0 ,@W(ð?à ~ 8¡Ü€VÂj ‚?ÐJ¸С ‚>äŠÐêePÁ6v‚ *e.ô!(þ;‰L2¯Lb’ íéd‚ 8hò?RФ@7Ä) „8‡ - p¸¤fÔšÑk•1IĶ >“`ÒvÑz¥A IàBô¬iˆ%v ½à …RJ˜ÚLC’@ EÀ!œ”¤g=íÉ<bˆŒÈ‡$ÂêkƒMR#¦B˜0ÌbYtñ 6  ªe=DVx€ †`… Á˜› 0àÑ?Ô@€€‚,€1”Èà`°V €=c´òÕ=}ú)-¬æ§C%jQyȹ6 HÀBˆ€T!B§HŬ€²¬¢‡þ ËÀ‡>ÔZ# Y(úÅju²•¬…;Ü¡ }¬j ÜAÀ¨Ã P”¢{0Ýù¢X ˆ £FV²“¥le‰ú‚CèáøÁ!ˆ)\€0‚ Dp.Ø`„ˆB þ0ˆ@T@À Œ€¡TÀ‡À€î€=ða k3Fð‡¤ ®ý®`…´ ‡°B Œ `³  \Bð!6B¢`ÜøÕuXÐdáMËÆW¾ó¥¯€V¡‡0j-o˜@ Þ ‹7” %øJ€Ki½AÁ¬’…Ð_P)XÁ†þBÜ–@8Y?°Pˆ $–n|h€!%ü–“@¡ °„KÐÇܪz¨Öd;1ƒúæXÇ;æ1Q\gõð Ç5‚—=bX™!ŽüÓ#À(J•ÐÂ+5߈éR}ñZ_<™Š+“¨i°2%¾Üc4§YÍk.ŠÄÊæ£˜ ‘ ˆ&˜Àƒ $â3KP®ƒ2ô[XR1’J,"Q´°„-|¡\Ãr=8gZÓ›–J 4P, hÀY²ˆBTŒâ£x-ž~s|¥ Käð }°E.±.db 0@ ŽÐG4¢[ Ä˜È0Š€Âü±Cþ'` …')B%á‚\Æilg[Û´»„‡Œ CA‚ ž¢UAHAuYº0n®€AÜ:6A%ªð2P*LÀWæd€1œRC`ü„H)"'RÄòFA©Q,!ÎÖȶ-~ñø¾!T%h‹RQ§Ê±²[*¢ðx·* ¨ÎÂ*0ªjímCØ:»šâv+‡Â­j…• ¥7?ÈH0òVÝŠçκIîC80â d0ô¾Ì„J4"JÈLL ˆ$$a NÀ‹@±ˆ1l .pÄ(¡¢4H€)@“Dˆq¼çݧoøƒ"`©ÐÃþRXÁ x"¬Ú`d’Ä °¡t`¨Á0@ „ãF†=èãCfG€ _á60B5°++``A¦ÏýÞ ¢ ‡0ÂëÁ†!¸u’÷Åm=ArT|ß@Àr@…ÈlL a%Xp'|!J8‚|`#h¡p áJèPïó§?=ñ€;\Ο©Ø?G¦((X©*H¨;ÆCÌ;‰6À„)C… (¨Yøƒ¨€RÂi@„’º@¤“ L@À°BÀ+¨B¸èþ£€,°#9 ÁS!Z¹§$”ƒÐ„L Lƒð0Š$¿Tð¥ú›B*´§`~ú§€J< ¨’K…­:ˆ:`¨¢p¨¸,¨0˜9“À¨ €uÁ A9>DÀšŠ+ ëJ£Ä#H>„,À©Eš@,‚+Àƒ #Â%œ4©BK¼Äø(9È›=x€à  è9°Lè@'K™:•[€7È:‰B YØ((¸L9†"{©V €è¢Ã µx<‰+à€¦B@@?„6„ À©7àÁ"û0ø·ðƒþÄDr,Gs¤ <8„„˜@À€ÝB‚A°‚(؃„ð0xÀ€h€}²¡¸€ä €-Z…ñº‚  ¸‚ØŠ ¢¸À¨, „=À‚„Šw¬ÇP»#˜À?<øƒ¸€,À‚™œBÒ=@°sìIŸüIúƒ?à@“2)j·¢h°¿ )⸢DÊ£;Ò€À`D @èý2Š¥,Š(ˆÅÉ[²‹[… à8²D„:0Ë pÊÂ)„—ºIo ‹9¸K·d‹(IȸX"˜$ ,Ì).Àƒ'³'þ$€ ˆE“| L"ð8{r É;¨ÖÉÌe ¡x‹= µx¨= ­Ç©0„ÍY+0Ax—AhªT"=è¡?0ØÍRëLÎüÌeQ‹v{ƒ.˜Cx ådJ¦|‹(îz‹Ø"Î\ÎZ1 >ˆ.2Lî¼'YˆDlÛ ˜€(ðƒ. 7Ø}”>¨€ó\€.˜€6„ £Oû¼€?ÀØ(D½CxœU¨`h€ ÈòƒÕ*#„Rë‚ß °(A€9. „ ø.0 „ „:¸ƒè‚:h€.¨Ëƒz€XÜÐ.èþ€¸ê‚à€‰IGgi<¸TZy¨Ñ70„¸I؃ ¨ÑBè‚ ˜<]–•àÌB„¨éN¼>àÈÓmY…À\…–¤J0(ÅC„=€‚.€?0"À#˜€?ðƒ6hI>½Cx˜ÉTø¸¹²ÀsºÀ„—À‚ª€È‚(µ8œ2=™Âz„‚,@y 9=ÀœÒ¸A<X€ °=<‰:x€ß¬€Bp°yÍâNÑ(¸$A²x$(ƒ ¸€ø+`Ȭ˜ÒU€c˜RY¸€àƒ6XÚTЀ5¾>Õ5îu%øÍ7h€ ­, «7¾€¨Ö€0„,¸€lÇ `SA \C[\Qä5æƒ(0„ dJŽ« PÔ :~ 9xƒ (D“˜€=@°J–= £(øcîÊ@„,x©X6f·ËGžP/Ö´¸~f0-.L89¸‚Cþ¸• xà€Y€N¥f0­FrÓ=^JiqË69ð s=çŸÌÂCÀbyî´¨Š|>`èçssW£ØçÜŒç{.h‰Y+؃æ”6è[ªØ.¨ÏIòLd1•_¹Ð,ø6#ð8[I…ï´Ü«D¾. ¢@..Vq¨dÙŠky©SÍ‚ï¬Ȭ€ •––5 g™¶ÀdaC€>iª®jNÉB=ðƒÐIØüZ=€Àƒ.È¡D?00ÀL@–7"pØñª6àhD€‚?@„ °)¸igœòƒ? Lþ àý]–?€Âîê:hÌ?(,`X¸I@Ði€?à€Ã±g«îl¨p*Ý`žåè„\Š .…N2®Hƒ«É¤Ñ„0mïD!ÀS)TCtâ;‚‰DÀ‚Æ®<`Û耯 Ʋ°‹ìM»NDHa?°€ã€ ØFCøƒÖ‘Ò«ËŠd«&Þ.€›\È[¾$¸0Àݽ¢¢£ólü~ *Ø‚2À ;p„-¨“010¥¨8™µX„ €*€Å(ƒ—¡'w „RÛƒ`m ²ÌÛXlq5‚ßl@ àƒ!ÓƒÇ:ˆé®þnêÆn¨€+i°˜[ݰhÔIoé¥+ N/l¾ ¡(˜½B8Îo«îƒNP„0`8ÈEp(O…D¨‚OJƒ2H„†è&¿FƒN¸¾¡.è„NPŸ$€æIƒ#è„0P8@sGСEpsø:¥H€„ 1O6J0´N p€ €Gè„=¯”G?‚˜q„:W¢ƒÀtŸƒPà;˜@‹­(¹>ˆNü±Ê)BD„–þÏÅ]¯ú+øã„qÿL8Ñ|c#ÀîTØØŠ ˜I@ ·°ªqU¸Ú†Å+þøa'·ê€„£p‚¿È*…-…LÐ0ðT€ŽX2˜ ¯” Hè’$Ppœ 8‘KPF ²Gsh “Hƒ@—‚ ˜1XP‚K¨63@’ ƒ1xL„F B€1ø‚y:ÂNÿ)>Ѓ ðà²ö=èêÊ(x@8„R“„[YÀHµØ °‚Íä<€@øe¸‚+°2”"ˆ\"¸GÒ("„:‚Lzµ£!@-Ä# Aã2²TH<™öIhÛli;0‚Þ¨qÏ 1Iƒ$š07 ™¹¥Ž8ˆ^ G€ŽFHþTˆsæ9NxðT˜N`‚0 ‚#Hƒ??ÂH€ðP‚-(üï„¥9àNà€ƒ·+‰é„ °Ø‚¡ ƒ(£ºkŽÝ/i#°TƒQÞTŸ;‰W”ƒ¥99~YHc }E(Pþt®á‹8Þ–ƒè-v¾ý—"µ;ø+F·Å<ûªN{`'¨‚<Ù‰T ;ÛºWwƘ*¨:) ^ûó|g.X‚…TÐK€!ÅI†%e4¥J˜PS¤-A4%±TéÒ%Pi:‘’0=¥Å(UH6¸pI¡B)a”˜`)s&Íš6þoâÌy³…Dè ª ¡2EØxÀ(Ó¦NŸB*u*ÕªV¯Nµc€L'Š-™1*“¦D•m˜!eQG4) c@à%—R8‰É2‰™D”9hĆ“>b$0Ú2ÊE¤N”`8¢”hQHidR)óåH*Me6€ZÔ©O†1)fC©G*2¥X"F̆> ¾™¦‡"¬¾.|8ñâÆ#O^Sk• Œ4-Êä*Ž˜d`"%É%&—È4rÂÄ{˜TŽ"%âÑhf#‰2…É1þR'<|P×q=Q'8IÈDâÃz2qÄÄ 9A°àÝ.¤"_"bÀ‘JþNø†&0¡Ewz±äÀ‹ä¦œ‰9SÃ*©¬ÒFB²äTÃ'ÒX£7â˜cN!lE…BÉ”9¥ácMšP1d˜±$¤PT\VS” M‰S‰@RžŽOŒMÀ¬˜ ˆ°Š!xÔ ‚ Ü´J Ì´Š—5u¹¥wâ™ç–0™ž[jbG…Ê4A ©¼!GQ©ÑK%š WH"S ^ÞTB\aÈ †’ è1gBr€¡C¸Ø†‘"2Œ A!‡B/à!.–À¡¿¬°Ã›§tQ‚t€7òÀuÔ`A Æ XØðÇ©T`þüE…̨Á°€©èñ .¦R!FÜ‘Ð*Tºj ‚T@ƒbA*X`„ wø´ˆ ú‚RB„hP¬Æsì>ø™Ê"là!ð ˜Ðƒ-0¡i¨DBP$b–Ø‚t2p¡ŽÐ`àƒ/ e€D¸`†T8À &XB $þ°…D€B>€Ä´`‡²`½¨ìŽ0†‘L ~¸ƒà7[í~¸Ã¬ð‡Ôá`Ê“A*+A((Ä¢ìxƒ Œ ,,pˆ|!ªH…& : AC¨@*4ð@Œà 6„ð‚T  ÌÓ@ÑSC`L˜‚¬þql ÌL3 “àt  ÈÎI˜‰gbKHs $,ƒgi"Ù¡e¸D*Vk‡J,!/k„%p’‘TÌ$œÀÄHŒâšø‚Rq„E € KØ€#ŽðÑ#p¢_Ã>ÀÄ.KP€ªþ v¦â ‘0îe¨ ˆY©RÈ*:™µ)¤ ¿¤Tø`Æ%D¿„/|õUÕzi¿„05V…2¤AJÈ ààföÀ±Øœ¨©'dS. âlÈ™Š%„–„PBMá…”AT gXà€-H IX‚r„Q˜ º]ib t"Žè$h\Èsƒ@ 3ôA b¨‚xŠØ1¢30€1äᦌr\]þD@¯£9ÍjNE"Æ@Kˆ¢ø‚ÑÔ…ZÀH rD 6”Â6ðÊĈÁ@‘„dB £P@*:aþJ!A(ô¡g 3T[P„:‘‰1¤![Ø@"XP“Ü4>ˆA*‘‚ | —C8Q…Ó„à R ¨#´`†JT‚˘²ÊŠQ0á ‰‚”@28œˆÁ"¢ƒ¬9Üâw±ªPdGÀ!è„ÑJ\‡ ià#AÄz×{=v ÆæßŠ%’`o€w‚2q ž„."•sÀôr8BvTXw 4‘E¤À”p®#†ü…Ý>#\@.ô”`w½CЈ#ðÉàb脤 Ÿ“s¡ÞÝNˆ8:C¥ w˜Ó* ¦þhª^rPT~£€`dAÀ,Ê:¹»îuõa =Èôׇ£… (08mÀƒ!t²lùA¾ ZR‘ˆ?øÁKCÂH`K#ü¡í6¹À L¥ âÌe_<ã…“†>$Áu¿ Ð+`\@¸çeQ‚;¬²X:JÐ"D*m ¢0„ÐℸB*±ÓCü ‚¸À¢ðÈ!¨îeÑÖ§z< ¡œÏT*&P:ÀHh£—Å*â6ùëcÿ*7ÓÄö…"y›|_'iÿ€¹ >Œ5À€1œ pBÂølüŒ.ÒÀÎÞ0=¸žŒÀ¸UÛaïþXÁLÀ*,M4ÔQóéØJ*ìÀ]5€ àÁ¤BèÔ0àÁ Á!A&Y T`ö±` Å"T‚É$D´ (D¬„NPB x‘((8…UBä†t‘™PP‚c}Œ«Ù‰üAV­È\À@—ÈÁTŠÀˆÀ Â*Ü Œ@™Â!èRìÒ  4À ° "X€ \@ `‚,tÁìaBÔÀ°• AÂú`Ó¤‚ùˆ"BÆh@`À·¸`%f”hB…db*ÀÁCôÀI95Âå$DŒ KhBX^B( °€8ÁLþ ÌL*¤š&„bH•b9EIª©"gEBØAd"chD-†"'Áeh‚d'0BTZˆÜ"÷%”üÙùÆŒK¬H Á ®È œháLJØDüÕÉ$ì ØÀÂÂìÀ*`Ä´È8¶Á!0tÀ9Î `œü|áŠ<`QÈ€ @ÁBªàãŸ%zäâ1†D$„€d@kmN$B"Ä€LÓÀA @ÂæØ˜”„ z'h”IeÂ0@VôØ”‡lÁ%TA"d@ l$h„¦) (˜þ̬mhÂ%%ÚqA Ä€$ŒÂk0™lA<ÑèÄ•QBŒ¸Ú%¬¤©qˆ³´<tÁ¤É@­Àìd"‚$Ì &ðÂ,ÈFFÁÒWµ!øŸ¼@A \Á¬”@XA @ÁdL½ì¨DA ,æƒ \Á¨æ8ü×Gg×UÁ°À@B–¥ @äÀ(¤Œd%„ A65%'8]@ ApQ&d\|'ˆ$hžq¢D GTÂÔÖLäÀÄ€#@HP‚(=‘'·)A?þQ‚lA±ÁÀ@&¨Ø D×üäJ~ÀôF¬ÇqÔÀ¨‰¼€ìÁtàAüž  Ô ¤ÞÁŒã¦fŒ¦ÂàTa ¼À $ íhÔ¥‚, AÔS%Äü‰Z@ p€üA ‚ÛüAd!€ág–Š›a¥$ÖbAØÄåK^X6u…Æqc 8 XBÍgBdÀ,ÐeHHÌžöAX‚#ŒÈL$k)D ðgB”A%Tã%ô€›%‰0!(ô@ŸÂÁÄ@%D×tÅ€ÌHÀœm€KÂAUÞHèáo²—é±×(^þ „ 0TU¼ÖÕ‹ô—M¬‚Â(ž–úê¸Ø-Øb8@˜jœ$t&e%#@·Ù¢L„€#lˆ$A#Ȇ“D%KTkái†koÑD2h¡nV*4ÄB8A =kH›-Á¬˜8B¯i˜AH•Í@B-B A…05ÞHt€à‡,üÒMƒ$‚ÕýjÅ+ $ ä@ ˜A|DÔTAh%dÂX[¬'À$Â(d@SÊ„#ŒS–A9A¤vBHÁÙeèÀÉ*Á%8ë8€|€#`e”ŽBÀXBÐjÄ%D‚d€‹Iþ@ϦA€F‚%ȘAVbWHš#8+£q‚X‚P$Á,A&°m*ø'XlÝÚ­0i‚T÷%Á"lGôA#ä@dbnPánn˜W,Âf#Ÿp‘HA 4@^¸BÈØáj–hVÀí"@B ÉBdn\Fæjnê"„ (#h"HÁvÀ&Ä\ô­ .ØŒ-ä€ øìœˆ,Œ’UˆÀÌÉEFÊ*dAÐ*rÞŒDç…Òq^¯²W˜¬BPo*ÃìÁ𥂠ïL”ÃnÊÞmüG”a°¤Œ£½Lž¤Ó‰Nþ¬ïSàæ \AÈÂÎõà`)¢ \ °òüAS ÂòäÞQÔ$U 0Ë*ÔAŒ`òÁiMtô°›Èï Oà~È À\ÀX‘€ ðA!X]  À dAì@Q4 ü0ì€ œ™èÁ<ÀìðÁ øA !ìÀxï¼@ ¼ŒB¼AQ(ìÌêLdABRÃ^«LLÄÒ¬p\(„dÁL@!€A è!\À*¬ÂŒ0ˆ € Ÿ4€!üQ€ ‹²S`îénÌ)þ¤Noø-Ü*ê„ ôá6E”P7æ‰,,€‚  ˆ`M `€\aà ÈB<@¤"Ø€$PJ ‚È0 Ú´îmÞÀõ ‚Ö•ÀÁ[& ‹ðÁ¹¼æLˆÀ!¬p*‚P_èÌ ,À ©ôÎzåjØøÁ0Û€ D\Aþ€$Ø"`ÀT€bð&¨&§`rGÛ„"0—BPB$”šBä¢ê„T¹vÆM<Ë0”Á@ˆN‰ø@PXþÛ ÏTàÀ t 0 tA! Ï´R£¬‚Aþ ‚ õ Ü@4·Ÿ ü’þÔÜÀ Âj΄vÁ!øJØ£ï(Ë ØÀ;¿°+ Bªˆ¡dÁ¼@ÂãüÀtRŒ € ðA ;ò Ä`ÂìÁh@`= 5 B9áOxtiK¤„¤v*¸„Dب…ÁL „•ÌòLPÔ"ÁÍšÀ›bnÀ6æ†ÁÐîi'æÎ²ëê*.<-s%”ŽÀ€ Ø”FôAUÚ$ zÑr)ÂrpÈB ×ÁŒ<@¥XA B ô‘,È•$Á <µ$ Åt@ÂÕþTÍÈÁÞÈ•µX@èŒ$Àç õ©D¯Œ¤Ÿ¤¤ `ƒ,ˆÀP00ÈÁ™‰ÀV%D_‚Uƒë!‚ üYçæàʬ0X@># ˜j8rÄ Â ÁlvgßÀB´ÞìÀ@_iw´@Âl‘¢&Â4²YÂË@'蘔w(lACÔKpl4‚(˜ÁlY$(A%ð $,[*pÁ˜…%$A” '$Àòr'°$hALVÁ¨ÆÇn@W,ÂADœd$Ä€TL„D¥Kº`gqȼ<€\Àþì!ÂŒVÀ (æ t¼`‚,d!üÀ(Ù!E‚ B!`‚DAÙ\ÀCšU*XÀR4!dÁ_Z Xà„1[‰ÀÂ{!øAÈ `À ïÀ<ÏŠ”ó8³H‘×Ñ½Ô ìÁ €ï1fˆÂ»4Àdò¼A©“@ ÁlÏÐ*’ÇoT‚ s2Óƒ5SE‘)k/SBhÁ\DHm3m&€0ÂÆVwRŒQBh4B%Ü©0ÁiÁ l|æMðy*„€Ü#8”Dœwö(AØäCµ%h|þvaÉYXB=Å…EÂ"GDÁ ,AL@~Ëpü@ ‚Øç÷„àÁ9ÿ—}½dB¼À È™à â@R¥tA ´,Á BQðA Ü[! "_äwÈ@„}0l±@ ù†=!¬¢ÄR±+`AÞƒAt ÂêŸR @*´>ÔA´uYs@„2Ãw´ai‚†*V*|[3È8-P]Xe¥‚oA.Kp÷"XÂ(AoãT*lkK¨ç·â© 8Ô2¹äLì¼Pº0B”AE9‚œ[‚ŸäôL·T|A%|(T‚tø˜þÀÀX‚ÙˆL„¬T \µª`ÂT²*L¬aªUm€dèpઊ ÊÚˆäÂ!'Ø,С1ŽT¸JË3iÖ´ygN;yöôù¨Í*U\ÄØÂH—0¨ô`bÇ’‚4}*]¢’*ÈpRé0ÀBŠ> Y|Hf”‹F–x4r‘&FŒ4§"àAŽv 4Jb¦Š#‡p¼jÑd§Ç£Â¤¸t$Ñ8)F2ć£FcÆ1£…‰* dr)Ä’Š´(JåB£ ;K á3wîžmd®âƒ¤„náÉ7~ùñD£*-YtŒ*rXZþRiL#F1zŒña¢J% 1BhâA¥ YÊ€àRª4‰`,aÁD‚ê«!b,ÉN˜ø€eŒJdKÈH8Ù 8Æè’QÐÁ’6p"*6è¡J¶ˆŽ6`“/¾0#Œ2¶È”X£‡/H$•>,™!¹}üÈ …’È"“£Há*M¤(H“F4± ŽFžtÈ„± bJœÒ¨"‘$†ºj&;ráÊÌÄ(MŒÑ2 &8ýÉ… aòÏ„4a0MØS 2ÕM&€"§’(ýI¦B5Ý”ÓN=ý”'8Úu'(þè‚%=ˆhDüè ä¸À9R‘Ä?À˜à,)&W iC„ö¨$RáBÀƒc9@ÂÚ ÛlµÝ6(MtÐ! nÅõ©† ¬ äîøƒÒ=0X@<˜â¹ƒC !d‡ º˜"Ú$€ ©#Š!ŒÀÂ#À F(i+ðè¢?A!¢q=þäNÓ`/æ eŒ0à‚Ú0Â,b 0Þxà‡TpþáA0  @¢HE$IÅ¢¤Ž$é‚üxá>&°Á&XhIì°ÅҦƻ:†D Œ`Éþ@"zà‚è¢Á$h£‘A¦(j}w@Š i` 6ˆ„„LϾóÌsªâ ÍSBÚÀ# ‚ø°áði1Äd@âBÀd ¦ÐC08 PÐ`„:ô(Dlž :x ƒt‰x¡Ë=ŸžzÏSËdÔêµ•åŽ ,HH„::(Dƒ,d¸‰J0".ÝCC€¦.Hå $À¨ CV£˜@Á`Ch `žöØ@”å` ŽÈžI…[QƒÔ`O|P‰ jË%á?˜­L„)Tá Y¤4ð@ há iXCE ZºáyØCþˆAâ‰XD#‰Ó ;libjibx-java-1.1.6a/docs/tutorial/images/example2.gif0000644000175000017500000013756510350117116022362 0ustar moellermoellerGIF89aHjÆyÿ"""ÿÿ222333777888""ÿ???@@@DDDHHH33ÿJJJKKK€PPPRRRUUU‰XXXDDÿYYY‹\\\HHÿŽ```"‘"dddRRÿfffUUÿhhhXXÿ2š23š3pppqqq``ÿ7œ7ffÿwww@ @{{{D¢DH¤HppÿqqÿK¦K………R©RwwÿU«Uˆˆˆ{{ÿX¬XŠŠŠY­Y\¯\`°`……ÿf³fh´hˆˆÿ–––ŠŠÿ™™™p¸pÿq¹qw¼w––ÿ{¾{£££}¿}¤¤¤™™ÿ…Ã…ªªªˆÄˆŠÅŠ££ÿ¯¯¯È±±±ªªÿ–Ì–™Í™¯¯ÿ±±ÿ»»»¿¿¿»»ÿªÕªÀÀÿ¯Ø¯±Ù±ÌÌÌÏÏϻ޻ÌÌÿÌæÌÝÝÝßßßÝÝÿÝïÝîîîîîÿî÷îÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!þCreated with The GIMP,Hjþ€y‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾Šmr©rfm¿ÇÈÉÊË̶Ï(rymmŒ3ymm”Ð@rŠNm‡mmy3v‚mm˜ö÷øùúûüýþÿ ÈŠ3È#g†œA#N˜‘GÎ 93jÅ  lÌC`F73äh”3CNƒäÌ3²¦Í›8sêÜɳ§ÏŸ@ƒ J´¨Ñ£H“*] €AZ˜±cÆŽ3vœÌ03ÈÉ 'fä±cƪ;Nf˜äd†“6þr20#ÈÎri™DNž6€˜™cƪ;Nf˜ÉcÇŒ3̘‘cÇŒANf±“ÇŽ;Nf˜Dº´éÓ¨S«^ͺµë×°cËžM»¶íÛ¸sëÞÍ»·ïß´˜4ƒ@3$h 3y&˜ÀŒì–v00m0r° 3y yð ¤1`0(@mV‘3y 3v° Ï @v v x30y0y0€`@v Fª7Nm°`‚`Ï@m0r°€ Nm030_i xÏ@v v Ïy°Nª7N@v vÏ m0r°(yà@þ30?|ÍØœÍ`)ÀÐ €‚`æ@3  f` @FÐ0`y`æ@f` @N0 1y  f x @Nà3ÍA0`àr0`]9€y    m (  Ð0yà @NЕNÐ0NN0 1`0`N0 1@` @Nà•3 (  f0 1yÐÐ €y  Ð0 @Nà-º×|Ýþ×~ f ¥!m€‘á^á~ážáó]àÞíЕ–@>àðþè@>à]ÉÝ‚àЕ>à2‰tPâf`¾ã<Þã>þã@äóPâPà¤Qày€Pyp àªw°> à>Dî>€>.wà €>@ÑÝ‚àyÝp€>> à% à>€°Dî‚ààPy€> à>p à‚àyÝN@@ ä°ë²>ë´^ëòttyà@ž>àyà2w€ þuŽy€€p°yà@a€X€ .2w€€^àªGa>à‚à@>à¥á €)€yPà‚à€K€0àyà >à‚ pX€t zfÐж¾ñßñÿñ@®%¾pÐèà¤Qàyà>àyàDNä:°îwà K>à¥àX .0óÐÑ®zp`ò >à¤áP^.>€y€°>à‚à  ôhZòr?÷t_÷vo–2 þ p)yà@ž>€w) w w xpàt>€y@‚€¤Qà‚ p‚6¯z)yà >€y@yàt ^.>€y€p)à‚àt p‚pŠ'fp÷ÖýØŸý yàÐè XàzïS@ä X@€€h xp€2h@ä w €€•‡å¡ àGà€–)郡—‡†€ ‡Æ©çc葇åaèçƒ ƒÆ þ¡€•‡Æ©@à€&™4\l|Œœ¬¼ÌÜìü -=M]m}­½ÍÝmLG‡ L‡†ŒFI‰¥p‡L‡Æ LIç G ŒœHtÐx;ˆ0¡Â… :|1¢ÄmXÁMlÝ4ÃyÌÀvØ™Aâ ä1Ãy´qyˆ6ä1èT‘°Žlå4ÃyÌ0@7Í0ÁMNÄ;A3LÇ Ì0A3L‡h˜@ªq`0F RäaÃ?¾!… 8µ ºÙðyØ`>oHaNR؇Pçñ ¼áiy‚ êÐþ2Åc(ò`ƒú½A 6À‰n¶À HÁy‚ ò ¼RÀ@Þ€7Ø ~oxÚâ^ÃÊp†4¬!­ì0Ì ( ì‡ $ 3˜ÀMØr“À˜À`‡›ØD3˜@f0dy° 307Á71`0@vpv@"30y0y0 `@vpFÀ<¥b@"lqlm0r°3y :230y° 30¢1fy°`7a h@"l‘@vpvpl‘y°NÀ<¥bllqm0r°p3y ¢‘ þy° 30¢1fy°`7a:2(pr0 `ÆkÆg¼›r0(p3—C50>4m`¸›À f@" @Nà3—C0`àr0`Ÿè àyààC@>47ÑÐ €y`¸K:’à @N0p9p30fN  fð‰NÐ0NN0>4`0`N0>4@€» @NŠNÐ0NààCÐ3àCm (pþf€»p9m`3—C0`àr0`$" 73€ÆÑ|ÊZ§ÂZ9!f0Ьõ‰r`´hr€rУÈZŸ(fàŠr`¦ÂZÝhrrЦÂZŸ(fP*(0MÔEmÔG]Ô3`HÍÔM rp mŽt€h¡xhpp¬xhp\}*r Y*rp m@"¢#v`v rp mPŽv`v $ÂZºÉ×}í×­#N00àˆ Šp€h`¬€Q*vÐ:3lQ*N00$þ’ #mfÀN00§83N0NPŠmfÀ$’fØ»ÍÛ½mZ ¡È®èð‰!Š@>à7á0Š>à9tÀÜ¥bÐv y §Â$2P* ¢ql1Š307`rr`Š ¢‘N0f`¾íßÿ àà(¸+0m 3plqÐy `@0:r°yà àœà>€>p‘wà €>tPÕU>U> à>p àyàþ`° à7áyPÕ:â l1¸;7a@07Á7! €»  s3rlqm 3` y0 @ yyÐ Ð0Ð0v033‚v@fàNê¥nê¥h3@3Nm  r y0plq30y0€ `Nr@"h€XKp>à7€hP8ay pX€t€a¥âp2w€@wPíŽyà0þŠrp 7Á7 `Nrlq(v0àÌc*lqr y0`àm71p¢A@y Z3030 0(và ¥2pfÐЧ®ó;¯óf 7A¢yЭ37Á713À¹ f@"wà Kp>à8àX€‘À œ€tpãhP*>à7ághh€p>à¤hlq õflql‘30r0¦Â7Ñ­3v0@@p307þ!@@mÐ: ` õf #v@r€ZÀóµoûþm3@3(àCvy0plq3v°°`7a$>@)€7átX€‘) wpw€àî¥ât p7qwP)€X>€ytyƒ„…„f…ƒvƒvy‹ƒ yN‹‹†„‹ƒ y3m3rƒ3yr33y y y3±fyvƒvƒÆy3(ƒr fÇÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæþÓrff(ƒ3 5mf < L` È„yî(À2‹ <”€À4×Ð8T@ÐT@€,h*¸æ¤€ NœL¸7¡œ&x1áÞ„6Zø% च“ ÷&´™@+$@1È ?òÚ˜gy̘`€9 L`šr™¡­¯ß¿€ L¸°áÈ+^ÌXŽjŽÉ1C ctà ¢à5:h´ÑcŒjtà†&ÇÌ4Ç3#瘜6ÓW“cFŠÖ‚ N¼¸ñãÈ“+_þμ¹óçУKŸÎ‹X¨kßÎø ;ÝËO¾¼ùóèÓ«_Ͼ½û÷ðãËŸO_¹ãúøóëßÏ¿¿ÿÿç%`€hà&¨ tZÈ1ˆH3ÃÉÍ0rfرà†Fg‡vt(âˆåÉ1AräafäaG Ä 0Á yL€<ü4 äa 4 0Á yÐ@40ò`†À N}`†™Þ ‹ÌÀë`ÆzpÆ)çœÒÙ133Ø€m‘Ç 3flÐÁyÌ0A(`G˜1ÃÆÌ0Aþ3Lǘ±($`‡ÈaF´Aç«°ÆêÄ LÜ­yÌÀZ8±ˆ˜ë°Äkì±È&«ì²Ì6ë,5f$0ƒØA€ƒØ1‘Ç ³È 3LÇ ä±È13L`Ì ä1Ãy,bÌüðcFZ°Á³,ðÀ<È"ƒh‹väa†Æ´!‡±8a4r0Ã1Z˜€yh‹v "3haGr1ƒv ¢Å @È1ˆ@Ì …÷ìóÏ@}¬30C3 `L3ȱyÌ@r ²È 3`Çämäa‡3‡þyÌ€LÇ"Æl@€ƒ¸1Af­÷Þ|÷mÌ"ƒ° ä1ÁƒØ€,B@Ð€И€y° äÑ L@€mÐÀh‘ lÐr´A@ иç®ûî¹Ë1AÈaL4 y˜ÁyÌpÏy˜ÁO8aGLÀ:ü‡ü$@÷L0ˆ 0&ÌÀûûðÇÿó"ƒØ1ˆ´áväác„ІcÌ Ñ0Ì; B hà 0;Èa „äàØa ˆEa9ã„(L¡ WÈÂþºð…0Œ¡ gHÃÚð†8Œ! fB3ÈÁrhà ƒB9˜Árhƒ1ÓB9˜!‡PŒ¢§HÅ*Z1†‹„f0À vò°äÁ 3˜@`†n`)4Ì3Ì` €€€˜a@À Ì0$ 3hÀ€€˜áŠŒ¤$'IÉJÂpv°¤&7ÉÉNzR’‹Èƒ0 fÈ  ˜A ˜€)`†Î)4Ì LÀ”0ƒP@@ v@@-L ˆœì€€Zø¤6·ÉÍnzó›à §87¹ˆù“(ä,ä'$fÀSŽARr`äD¾SN°NPä(ä‹à*4v0¿Àf`T3yàÐ3v°0Nm0‹` ‹0þ(@mcƒB(@mc“‹0y0Ð3 yÐ3 )4`ƒà`0yÐ3 y0r(yà@30fy°`ƒ`‹@R0J^ë¶ž·r°m0¿v`v R—gf`"ÅBë0"¥Br°m€BëBv`v R—gf`"uBŽ¡yr@vPT3 (fÀ @ (N0÷050÷0m` f€BvÐ0ðpÐ3ò@W (þm ( B@CÀ @NÐÐ €y`ü@y  Ð0 0`àr0Ð÷0+Ô ·~ôHÿ€N00óÛ`‹pymf°*d£5y°*ä@€B 0)Ô`‹pymf°'”f°y@À3PT3m Æà'Ôr@Tr`,$f°BŽqBf 'drÀBr`rŽBf Æ mpBm`,$f°SmàIú¨¿SZ &µô r *4ÀB30,r *dþÐv y R,´(4 B ± B30,4ÀB ±` N0y`v y Àm@T‹à©_¿måŸþé/ü 0m 30‹0Ðy `€0A0“gxÐ0‘×–Ð0Ð0Ag7A0#gjf8“j×”7“@01Ó–Ð0“7“@01c7A0c8“zxèÔ0110ah7A0c¸l(×àPÂxà¦ym6à -°8¾×K[‹üä+ùÌ׋09‚RBÚ0Ÿ b†˜Áò0ƒe f`È &‡L m˜Ïþ¤<3 ¾á6ÆXFfy``·á>àwà Kpèp€X>ÐníÖö† ‘ay€€>€y€€>à ‘ayay€€>àyàpÖ|y` `+×P+7 0NàWË0„SH…Uh…úe3@3( &vy0`Ë`3v°°`†` 130y° 30R6fy°`†`’Ñv `pË3yàзþáp)àpàt)yààKpy p†˜ç !X€pàX€pàtp–2y€>àyà>à‡aSÎ0+~%6À7Nmà3`30¶ÑVþ5 _30Wˆù¨ ! €†0ÐP &Ðfà @<0` ‘à @N0Ðp30fN  f`30~yà &@€¼í P þyà0 P € y@€€h`t >>€€2hÐn Xà  PP ày € "€¨p€€–C8ÎÐy`ZÀ7„cðy`À8 „c†@8”ƒGP-€RRP`R€6À  €õ“3030Ð`3à  vÐà NÀvÐ @0 @0y0Ðà@0y`@ e @0‡3°é©žVXþ?µQ?Æ fàWõcr`ý5ÐràWt@Æ€tpþi>€w€pt€~w`>€p@‡@pPppzáŸûØÎÐfÀ7R€c°y`ð?ðyÐP†0uPuy 6`R`†%€c€uÀv0m`30‡0``†° y03@y``° aàmy0` @f°và (và 30 1N°ž…j¨‡J…Ëà+€€ý•aX€¨ûþ5ãrÀR€yððyÐPÆÐP‡À”³q€K6`R`†`À„oàN &†0pËÀË30y0mN3Ðv0@@30ư †0ãg0~f0P©ß ®á*®ãÚ|8ãç¼!c€q e uI0Qxð%R`† uð€†€ 1@3†0rËÀË30y0` 0@` Ñ3 y0r`Ë`@v`v°`†`3y ‡0þf@®A+´¼ †ÐV! Ð  af`m¥måv`vÐV.‡o€Àa o€üUoðq`¨xðx Q?~%€©€¼!Py ey060Q6yðy À8yð„ÃuP`ð 00†`Î@3 &`N0b2@Nàr@@Ðm (fà 3 &r0`r0 Î@‡30´Õk½y`ó1y° á@À 0 Ñ`þË Ëàmf° .ð e ðü56À6à_cÐP årq€oÐP ‘fàWv0q›¼!u_2Æu‡Po r`r` rÐø5`Nzarprе!f` r`‡ m` Rv½;L®fm`rme E¼ E<PĆr eKlmÅyr eP,60Å[<ÅP”c o€\LƇÐPe\ÆuðoÅR`h\ÆP”c N0f`rœ(·v@Æ 5|LÈ…lȇ  à‡ìȆ0vþðÈ“LÉ•lÉ—ŒÉ™¬ÉNа 3à `v03`Ë`rÐÎ0rð †0y 3€3à Î0°†0y K,%À6 „cR€R@86€?€6À yPdK¶y y@¶†Lo%Ð y@8”ƒGP-€R0Å eqP-€R€%Ð`y€-À„3PŒRP-€6RP`R€6À y€-À„ó6À y`À8ðRd{v@fà|옪• š|ÈþmeÉm¥Ó? ÔA-ÔCMÔ“,@ `Ë`(và y° †€ `30N Kìvà‡° y0à@mPÆR`†0oÐy 0[€=Px0PcÀ6°Åðuy 6c€qP%PiR`SÜP†PiR`RÀ[ o€x`?0Å y °RÀ† 6`IPx0Po€x`?%€c€u6ÀoðoÅ3°†` 0m Çf@è1•ÜP:= 0N ÇË`ÉËPþÔåmÞçÞé]Èfư †0ãgy° †° y0 ßÅm(` Ë3y``e,6p%Ð60y o€, «oPÜü[Œo¸d†À”³q€K60Å eq€K6 6R`y0% SŒRR`y 6`R`†`²úq€cPR`²úyÐP[l ‡ °|Ü à PÉÀ!ÇR`hìÐN0†0ÀÅmeÉmu30êçy®ç{^Éfư †°`†`y° †0 þ0N Kl Ðv0‡° y0NmPÆR€yPy0P† c€6Àx`x0½Åð?Py 6`I0Qxð%R`‡ op e?Py 6 6R`†PR°x`RðÆ€RR`y 6`R€yP?Àx`x% [€?Àx`x µÅ3€† fPÈv0Î`\L86€?6€ŒƒB@86`„C9p%Ð y %À6 x`€R°Ä@(P?y0 @0þÝf0Î0y Ð0y` @ÎàEl( $à `303à 00†3ÀçcOöe_ÞNÐ0G3b2m  /0b2m Îà\<ã—N0b2$ (€Æo@8xÀc`R€%€IP%€6€o@Æq€y€o À8yðy À8†€Rc`eq À800%ÀcP€ð†€R`c`P6P0%Àco@8Pþ%€6€oP€ðuP`ðR0Q6År@r`@0Œ`\ Rc[qy6o?oy66yycqu%uiyR6‘R6‘I%xcu‘§v m‘3§ff‘y3@3yfv§§(vyfy¸§3‘ZNf §NÆÜÝÞßàáâãäåæçèéêëìí‘rfßrrîy3mrÝû‘uq‘c8à‰$Cœ:§ê¼áÇÍFš7Þä©S‡!E†Ý(ò“‚Ï Ö‰sªÎ›HR0àƒ!R7!#¡˜³f$'30JÁç †7y{tŠþƒ)[â”Xj#’‘l`˜ŠáÍ>'Dš1á.n¸ò̘gÆ„rØ7vc‡vHØþ€ü”xŠfØ!¡‰,¶èâ‹%JA $‘‡”ÙÇ6PfCy¼AyHÁRÄ‘ÇSqPG Ø€ÁÜÀ̉@À YM‰d5Á8‘NÈAlÀMv4À¼0AV´‘‡]‡8a 3̩袌6êè£F*餔Vj饘fzŠ0¦š¶€¸Ì™—¶€¸(jG°Î.Š:1p“Às¶€¸Ì™—¶€¸€ªì¥R`G–RÄMqœRÇ‹Êa†ÆÈÑF¥3`‡,*‡ŒÊÑF$N`þ‡13̰ì¼ôÖkï½ø.«…â’o¤Èïœ3€)rÄ«¨´a‡yHhÌĸL<ÃG€ñf<‡,2rÄ+òÉ(§¬òÊ?2Ë0Ç,sÈZ$@NÌlŒ¸8aÌ vè,ôÐDmôÑH'-´$Ðe¼ÌÐF 0C$¸D@yЀÀ @LG 4À 4ÀäaÇ0ƒ É yØålÇ LÀvLNä@ 0À ‘̇€;ѸÌÐ周1Ì .‘ÈÑ@—ÈÑ·‘Ìþ‡€]NÀyÌÀL`Ç àD$ÐØ1ÌÉ y¨ôöÜwïý÷à‡/þøä—Ÿ‡30CNІ ä!‡yÌ0A$¸D2ÃyÌ0 °ƒ ‡‰Í€@˜ò -äa˜Á0ä °ƒÀ\à"c3€€€6Ì€@˜P@;r˜€0  vpä29Š."‚ØÁ Cp $À3˜€<8ŒÍNÚ0a@ìÈa €‚ØÁ ƒ÷æH´8ÄŽ,þ“÷ÈÇ>úñ€<…09D‚ñBÚ«L ¸ˆÄ &‡à¢K]2ÃÄf0<Ì`yhC#'¯ ˜y˜&P…Ûelȃ`†L 3ð`Ì3Ì`y˜.Vi•™ÆÀE$&°J3ä‘ÀEf09Ü.c3@Ì3Ì`y˜ó`˜aÈà p±J3ò‘° ¸7ƒLÀ ,Ã<÷ÉÏ~úóv˜fdÅyØ@ò0ƒ D‘˜ì° l€vˆ„&6ƒ äaÈÇL ^0ò°Ø!F þbÆf€<8m˜Áò0ƒ   ypÚ0ƒ äaØì ;¨Ì 0."±Ø!vÈ."1äap36äÁ hà &‡L ȃІL 3˜À`‡HØáŸ}´#ˤ`ƒ•9mp "1ƒ  LBF›ÁN6ƒ ö²˜Íìöä0‘˜`E€L +hƒº”ð ˜Ì0±À €fXà3˜€à9$€P6$(ÈCà„€ hf‡À € À )sBþ0'8aY™@äL/˜@V&Ð-t)pÊf€yHœð  À ò8!àA0˜A³B›Š 0ðƒ<ØKÁ€¦bƒHLå(8B Z€)äA %à€ ¤€pRÈ€‚yäa Àf0À f˜A—&$ ˜@ìÐtÉ ³C Ì ˜À òІ4ñJ&0ƒ<ØaÀ "€àñÏ€´ ²yœlƃX6”ÉÁ *›Ú ‡“µÁ'“ƒ&3ˆl+›þÚ ‡“µÁ'“ƒG)`` [À@ò`¼áoȃ<#1 Ä¡%¨Cò DB 6ˆDJ€‡1` ³Ã€6Db8Å`† ˜!¸Èà „ f€&°Œ™Nhò0ƒ œBZÈà &‡Là(H€œ9äaN`µÂÎð†;Üh¸pÂц 'LüâRÀ@Þ€7äAžÆç)8p”-Äa)%°A$¤`ƒHØ€*xCÈœ•HÌ`§ÀÅÄp‘‡L 3˜@Ú'$`³Ã@ äa8E9<Ì`§˜À*Íþpñ®{ýë`»ØÇÎp)` cÀ@ò OcÈóI  ~P‚š´f@š±áÑ N€h“Ý£€Ì €" ¡Ë3ƒò˜`g†¼øñÔÞ¼UÇ|Hqâ8mË"«âñx`úoL n¸âª*ÇU $3(81A'´‘N$@ ô$@€NLÐÉàD8!°3Œ›ª Ý9qÅ_þŒ1ª†Ø€Áy`ÐB´ 6`ð$Uå!…!6<‚G´€A–"…m°C”€c°T0Ђ$!u(l€ó‚y°Z …<”€c(ÆP‡´€R(ÆPŒ¡%À€ 0ð)pØlÀ)äá †à@¤€Oäa 6À§ âPŒ¡È0À\J (’‡p` %à@JÐþH!%àÀJÀ,”6ÀÀ!ÔSqÀ@Be €`;À 0C`MÀ €‡` €ò€L  ȃ‰ ÌÀ o'€@y@6ÐÈÁ h@Ä`†Ú2pàày€¡Úyààhw w€¡]Ù@@`œÝÙ­ÝÛÍÝfÐÝá-ÞãMÞå-Ùa@æ=Ù>àÜtà>K ày€y2pà×Wà×çñw >@>hßPp€h >€wP@ñ]Ù @@ Þþ)®â+¾Ù33Àâ1.ã3Îâtà€àyp à€€wP€Kp €y€Pà‰z2€ãPyp°> à>¨€Py€€€ y@h èh>‚Φàmš)À¦w >>à×çpp}K€h°wÀ¦t y2à>yà>‚NÙr0rÙ·Žë¹®ë»Îë‰ 3ÐëÁ.ìÃNìÅŽëwà àyà€K€p þpX€tà €) è€p°2 w°@> Kà ¨2 w)°>ày€€p°yàÀ¦t0èhà °> yà>à>ààX Ü Øàl ×çw€ pà×ç Xà lê>p}ãh>€aÙv`ìCOôEoôè`ôI¯ôKÏôŒàt>€y€€ã9Ž¡Í¦wà KÚy€€>àyਡͦ>àyàwà Kþ>àlŠï>àyà>àñíh€y@¯Øà×mzP€lZ à€X€hX wX hPpw Ðô¿üÁŸër0°Âüɯü•}> ñy€) wp}wÚl >@)€2y€>àyà¨2 pwp)ày>@)€yàyty„…>y>y>w)>>hyX™…œy>yw>hpytXy2phh2wy>y2 þXhXty2„)yhttXy)ÍÎÏÐÑÒÓÔÕÖרÙÚÛÓr3fvÜâãäåæçèçt+2yt+ „p2è@¨ ÀG °@P€¥Ó < h‚Xà ¨AF44ƒ  XÐT„ `h`‘†Åƒ¦TDà#`ÉÇ„x@€% däƒÀ!8 *@‘‚ àˆK¶¬Ù³hÓª]˶­Û·p›ù@‡':h ¡¡SÎktÐ:Ö BtàT;FÖ4wžÑAs§8Ïî ¡SšÆ þC‹Mºôh3f8ÉAݦP›6Ùä ncºöëÚ¸sOË„E·ïßÀƒ N¼x¡89™@`B¡ ²9™@`YèÐà–C Á ãàËO¾¼ùóÀgh½ÐëmÐÉš€b'µÍ0ƒ¾¿5W„\f\3w qÇeÓ¸ÍhÜq™6—9ã 5Ç há…r°A4 ÌÀlPty̰á„Ø ÐF'v @´‘t„´‘@Ì`G Dv4@8À r€Ã0C@xÑ@‘‡$@€$Ð<À ÄÕþ™ÛäéC™ØÙ  ‘ !>dâ@€4p €F&ÎøX<“‰3 @ høéé§ r3N@3LÇ Ì€@Ð!Ð!(`G˜Ñ Ø‘Çfä!rh‘Ç ˜€m‘‡8ÑÎ0Á|€N G`ÆCàD@äv€ 1ÍÈáf„ê/7h ÇtäqY5>x tHBK °ø€@4Ð! wp‚p`áÃ3—⃅ø€€3aÐQÔ†ÆÿÖls63‡˜1ÃyþÌ0Á äaf]!Ð4Ðu!m|™ÀvL@äaÇ„3 „l¸¡y@Gˆ@y@—‡t0A3LÐŒ($ ÇÍ„GƒEdâCEây"@F °D>@ €>4ƒ àT€€y P(p‡ àCt¸âJ>äáJ!h €Æ@ yø€€x€ à!>äá  ,QÈÈp  àyøP‘yøø‡x€€„Ðátr‡hTä)äq‡ @€<€€PÂx >ð@|€@àX@°`(< @ƒ p‡% €>PÀ| (` >P€3ÐPÀ!wð þx >@@!2Ax >PÀ| €;ø@>à„R K@d;`tð€ÐW pX‚ p‡% €>PÀ| €< ¡€ƒ6JЂô è   fØP@$(ȃ&@L èèÚ`‡`0C'ìÐL/˜@G'ІàK¸ä¡ h@PЉð@|àx >ð[À€ ù„Ѐ€Bd‚>ð@!|à<øÀh€€èPˆ;(€yðò€ Á™EC& q @KÈDЀ4øÀy𤠮ð¯|çKßúÚ×­3@äP9ÈmÃ\å`†¶ÊÁ lõ/'Ì N˜Ar•ƒÚj9p¢ vˆk°'Ü÷à ñ\Ñ€Nd¢™ |@‡ €>@@èPTþx >ð@ x ’ðÜwÀB)‹êƒ% hò€ÀÁȃ<àäÁ(*<4ÂKȃ  …È!|€€<Ð!>ð@|à<ÜÁ ð!| BøyÀàÜwÈD!àà:¤2€@°€8øÀyðèà ®¨NµªWÍêV»úÕ°v+tœëZÛúÖªnƒœ€ë^ûú×nÅBà,`Áùð|ä¨d@4TDE…€°ˆyR à H€<€4þ¼ÕyRÀè (Ày€€°,@X€€°Ð‰%ø€K@€àøÀh@€±=À Q@  ,@@X <€:(€„ð €ä@€°‚|x€p@@ :@  ðA  ,@@'ð°—Îô¦;ýéPºÔ§Nõªs tàà€êc¸•hH5ÐÀ 8ÜáÖt@RM8 Z>(„:p‚hh+èP8ÜÁꀼࡇ8,ý5ƒo:jÏøÆ;¾é>¸C!2…Ç[þò˜¯µ l°tèd~­˜Aœ0'¼þ5ø¼êWÏúÖ»þõ™/|ª¥`U¿†­3˜®g0[£fäðÖöÈO~Óý«üæ;¿×À€ 0ðƒ<Ø%(„}"úRŽP‚`@ yB 8`)àÁÀ€Š:ƒ M€H@0$€0Ee( m ÐvÐ @303`ày @v03_ Ðy @y00°v03_f07…p%@àþy @ÐyÐÐЄÐà„0ÐENNÐjm5ÐárÈV `w¸‡|؇~ø‡€ˆ‚WR€c°y`ð?ðy°y„0uPuy 6@R`„%€c€u°VÐA3@@030l…`y°f030fNÐ@@30„€`@r0Ð3(và y0`Ð3@@y03030 03N  `Nr@f°fþàƒ8o¥rPT30w8@f`œ @3fÐy0m€v@ 3@03àE… (rˆm( |¨r@N0k5p‡30…`v@Fy”H™”‚(o€o›Ç ›W~[ÙW6@R`„`Ñ}o°VÐA30y030lœ030v0@@@30„y``(9f 6`y„€’@@30y0€’`3y`Àpš`þyJÙšy nÐ @3030ð%`v03`@0y0 @0N@@Ð 0œ°Pv@33°0„0mÀV3y0Ð Ð0ypšpš§933PT0„Ð Ð0y Ð0v03Pr0 y``y` 303_^03v0(™03N@@àšB:¤DŠ”R€y0y°yœ°y…Àþxð%R`„ uð€„€k„030y0rPT(@m:4`0m0r°@3y (yàÐ(9f@v@vÐA(™ y0`0(9fy0N@v@vÐÁ 3`Eê‡v00y`àm„0P@f°f€ `Nvà y0PfÐÐ…03PZ@m@ `f@v3@3àE5¨ r y0þ3N@à@m àfÐk3@r y03@@0€ `Nr`3@3P3°„`àmy0À @f°và (và 30œ` 0mp«LÛ´N WR€%€IR0¥6c`Sjqo€IR€ÙÇqo}P%€6€oÀ yàÐQÐ @Nàfpš@·y` ¨qš @5 (@fpš  Ð0y30f<0þ`3ÐQ_Òfy`§™P30fN0€r0`3ÐQP0„Û¼Îû¼Ð½Ò[f y`„0PÐQp¯ p¯f30œ °…03@mmÀ v 0 0mP @„;3m`53y`Ðff ÐàÍ 3rpV3y03÷Š 0r@v@r@v0@@30œ„0÷jp¯f0@·Z0½NüþÄPÅR<ÅT\Åtëm`ÅÎ+u0ÅuPt[qPuðT,mð¼r`…à_œ`rÀ rÐ…Ðvð¼r`Nì_ÐÛrPr`Ï;3 ÅˆLÅv00m0r°@3y y…°`„`„`y0þ5 `œ03v3`mrày€Ð¨(`y0y€@¸3y0° 30y0N$yàÐyàÎ 33 30y030@v@vv0þ0y0(Pm0r°3y „0@@v@v°`„`3y y fÈyÐ3à ]Ò&}ÒT<3Ð%½yc€Ò2=Ó4 Å3`5Ór0L (@fpš05„  U0`y`§I@0œà@ 0L€š3f@Nm0„N@¸ N@ð%Ð3 (0€„`àÍ;÷Úð%Ð @NÀ fPr0þU@rPm (fpš3ÐQr0`r0€§Iy3Èm0 pš3ÓÌÝÜV<÷š3ÐÍ]xÎ ½¯QŨA¯qÝÞýÝÎkrÀ rÐÏ+fPr`œ m0Åm`và¼r`v0½þU3m y0ÐrPN@v0½þ½r`Í‹3@¸f … mð¼r`œ fPrÐ Ý3÷ 3`ÒfPm`mPm`mPm`mP¨!…€r@v€v@v€v@v€v@v€…І\þf0@PN0NPN0NPN0NP†l…`Èf@m Ðm0#~š 0mPÓ›‡Ò3àœ0çs®Ðt~çtnV3y Ðxþçy03N0N舞芾èŒÞèŽþèé‘®ÐN@ í…à í’®è3`êŠ.@g~š@fpšf@fpšf@fpšf@3pš…0§YPPP§9…pš3@mpšf@fpšf@fpšf@fpš…0§Y3pš…00…00…00…pš3P§9„þ`§ipꨙZ êx^x‹.6 èNmà3@30€þnÐv yð‹>@(f  þò"?ò$_ò&ò(ò@@ú~š@fpšf@fpšf@fpšf@3pš…0§YPPP§9…pš3P§i„`§i„`§i„`§Y3pš…0§YPPP§9… ÐN@m Ðm0úÞ@ ‘}6€?6€Ù‡B}6@Ñ~p%Ð y %À6 þx`€R@ç@(à_y0 @0_f0§9y Ð0y` @§ésî =§9„0ð%à y0 @`ÈyyÐ Ð0Ð0v03@0)?ÿ’þ¡.¨ÑŠŽŠî_wþ€'8HXhxˆ˜¨¸ÈØèȨ5“@Y Ð!(73#'(·)'(·)'h¶9(gf6ØfÖ6ØfÖ6ØfÖ6Øf&7¸*7¸j'h·j'h·j7¸ÌÜìü 7a Ð$'­-…1¶…—gÃñöó–gc#þ8†WWR—–'e#(e#˜T‚7†QÇlg€m͘0h3Ìš0!Ï @fÈc€ šÉ`• ˆƒ&0³a'm€š1AÐ&@ä‘£%ÏŒ 3&4˜ Švœ“g‚mL›:} uĨ!q2À¦ 0M`ÆĨdËš=[¶ÍŒ–f } 7®\f(5"'® yÞ`x“'ݲtƒ8H‘²%N‰Å6I±!ȆÉÞ8sB€€ Ad1ÏŒ yfLÈÓ€“3œ™° â ˆ‚ìL@ˆ mB@ž6 ŠOØ4Á €<8þ`f®t¹Zä8kÓFÐŒ ÏÌØYfŠœäÈtgZä r2ávA3&<3cgºþýOÛÌHÀ ü Hà\3!‡tR`ÇÄ‘G:ˤ3Hp€Ç%ä!… ‚HAuüÀ‚àÁÌ @ä1‚Ì@rä3å1ÃyÌ0 Ì„ΘÀ2 ‘ mÌ Ç2yȱI Ç ä1ÛL`yl@€‚Ø‘Ç fÈf3rL€(ÐmÌàÜyÌ̇s̱ 3Èy@$ ä@$Ðä1fþ8gFrL€‚ØA€v @´1ƒsä1CL0CÎM0D›Â(Gˬ°R`PIä!Å…6ä1† ÚGo`DR`°qäñÆdÔQ6`ð3@03b†sÌÙ‚81Af@€ à„@ÀÍ8Ñ8áÄ™MÐÆ ™MG4 ‚˜áŵayÌ@q0Ãfà„ 0fäÀ ÉhÇ Ì Ø‘Çf‘ 3L0ˆ8aFy˜ÑÀmÀ G 2ÃyÌ0Á 1þyÌ€´aÇ Ì°Ì äv䱂@$È  ¢N˜Ñ@f40A;?yä’'+qÔ‘GæšoÎùæuÔÁyqh^Çg.‡rl.G§¿®ù Øá°ßιrl.G¯Ë!Çír˜¡ù 3àŽ|òÊ/¼ L GuQæ3L°y LàDæZ°Aæ „™C”ù ä1Ã3LÇ ä1L‡ L ‡æv ‡<@¤sÉÜ &°¹4`NÈœ°ÜIp‚¬ /ˆÁ jpƒì ?¨¹tŒ„$´ €8¡„,œXþà Úa˜ І<ØÁ™ƒHæf€<È!sN@ò ‡ $À š€6‘ÌÍvØÀf0<Ì`y˜€€äÁ3 À 27dhCv˜9ˆdnȃ2ç$ r˜@ÌÃ@ r„,¤!‰ÈD*r‘Œ„&à…`0ƒ&™ ´Á Î!@æì@'ä3ØÜЀäÁ ÈÌÚ`ç$€ €@'$Nhœ99LÀ r €2g‡`0ƒ&™ ´Á Î!@æì@'ä3h¤7¿ ÎpŠóvqˆC8±ƒAþ9¬¢ ãlg å`ØÉ¡ šsìAàe3àœÌ;9´AsN €bˆÐ„*t¡ m¨C-˜Î p!‚A'L€Ààf'LÀ -©I7çˆ8¡¤3°ƒ'œt¦4­©MoúÁrRP 6˜ Ð'Ì s3˜Àí°£AˆLpÐ `9@8­ªU)¼«ju«\íjM'c ü 6ÀÀb0 „ÉØ s“9 ŽP‚`@ yB 8`)àÁÀ€: xy˜A0LÅ€fàœ ä h&;4€ÎqÂé ’‡6þ$ ˜AìЀ3H&0ƒ<Ì ÈÚ€`y@0ØaÀ 4€xu¹§›À 27'äÁî`æjw»Üíîí¤€1lqȃ 8ð†¼!éÈÜ0‡:” iȃl9)Ø sI(Æ€:pÎ@Ú¹L@s €6`†ÌA$3 f@€<˜v˜À^‘<ÈA y˜Áò`8¡ @Èà & 9ãƒò0ƒ äahÀ €‚ØÁ Cæ&à *yÉL¶ äйLv3˜ÀëÌ`Í5þÀxNh€ò $€sZƒæœ0ÓÍ`°›Á^g;4yÎt®³ïŒç<ëyÏ|îœ0‡7`à yHÇæÒ¡9f qXL l9)Ø s6  Þp:'d&s3˜€æ Â9ˆäaÈà &‡6À ˜Áéò‘<´¡8 ˜@ì0y˜Á4g< m õò`¼ ˜xÌðêhK{ÚÔ®¶µ§-‡ $À H€‡$€˜AÐÌ 3H&0;L€˜Aœ@ dÎx@Áì rÈœ&9dÎ0ƒ!þ3H&0ƒ6$ ˜AfL`v˜0ƒ<8@¶Ë_ó˜Ë|æ4¯¹ÍoŽóœë|ç<—ò0 Ä!éØ\:4—„ áá%ȃl9)` uøð9:ó™ÐŒ¦4§IÍjZ³ŠuÂðpÍnzó›à §8ÇIÎršóœèL§:×ÉNik‚qˆC‡•ÅaI°þ‹'ñ€ÆSš ¨@JЂ†°6˜àg XXþÐRÈÃl0†–”¤à¿ÏP1°AX”@ M©JWÊÒ–^P 6p l°@)Ø`‚ñ, l A)Ø`IÀÀê€:,P xà0ðÆR°Añðàá€oÀÀÈÕ®zõ«` «XÇJÖ²šõ¬hM«Z×ÊÖ¶º5­Ç°~`€Xƒ JÀ1äA %à€ ¤€pRÈ’€`à%à€ ¤<Ø€BZp ð¬À€ð`ƒp` R8† Q‡ÃÄC J€-àÁÀ€ò …pÀ¬À@ ò€<` þyÀ@ 0Р؀yl€àÁÀ€ò` oà€ü'…cØ (A 0`ƒ3ˆ$”R°߀1Äa I(Æ€:äA 6+8° äA 6ȃl ´@ ȃ00†-` þ%ÀÃ0P‡<Ø€oø0ð†~&RàÀ¤ÀAHÁ”¶ HÁy‚ ò ´@ ðßg X‡1`à ޵¬gMëZÛúÖµ–òð ¼!6°Á ‚‡7`à y‚ aƒé¼!Ø”‚ ügƒé°Ày‚ 8°b yvÞ€7ä!؃v¤`nãÁàÀl07äA 6+¶À äA 6ȃlÀ ¼yòð °`:oÈC°ñ ¼¡€Á΃l)Ø`R°·!äA 6‚ ò ä6xüln¿! %þ¨ÃÈwÎóžûüç@ºÐ‡Nô¢ýèHOºÒ—Îô¦;ýé;—ò0 Ä!ÁDJ‡1` yòP‡pƒÀC8‡<ðS ÈCòðàa4(A~`ƒ‘'_xÈCJ‡1` yö lP‚<üÀÜŽƒêð ü€xò  䡬ÈC 0)`?°+lð äA ÈÃ0`àaxÈC°ý‡-0Øy‚ ò  B ÈC¸-äA 6ððä6xüÇ)ìR€ºøÇOþò›ÿüèO¿ú×ot)` HþB¤À/ä¡%h¤0ˆ7ƒuP`ðxÐ`0,ÇÀyP%€6€Vp %ÀcÀmo€I0uP-ÀR06À/6ip %ÀcP@q€-PIP%€6€oop @ qðop %À 6ð0R€%€IP%€6€o übƒ €ƒ06À/600%Àcop Àm%ÀcPÇP0% 6ð0y P#ìwˆˆ˜ˆŠ¸ˆŒØˆ‹(uÀsq€Tqà?uðþToà?uTo0j3tq€;§6=÷uà?uðTq°sjÓsqPþSo°sxð°AWqtj³su`0;ðcàˆÒ8ÔXÖxçlc€ÜˆtqëWi€yPŽæxŽq0cpŽìØŽîøŽðò8ôXöxø˜ú¸üØþø9Yì8,™ ¹ Ùù‘9‘Y‘iRc`c %€’"9’$Y’&y’(™’)6ðI€oPPò( ’8™“:¹“<Ù“>‰’xÐþÐy€-€-P°y %À6 x`%ÀcÐ`€6À y`@  Py€y€-ÐÐ`R€6€?€6À y`@ ðìXÃ2,íˆ%Ð`Ðy€-Ð`PŽ 8Yš¦yš¨™šªYšIÀx?ðR`y 6ð0q°å(6PŽIÀx°PR`- %€c€u6ÀoðB °R`y 6 6ÐR€y 0[€=Pxþ0Py`ð?ðì8Álí(°RÀR`y 6R`- PŽ60«¡:¡Z¡úŽÁvŽR`y 6€6€°å(6PŽÁ–o€oÀ 6ð`ÓñylåÈ [ÀR`y 6À 6ðR€yðÀÓñylïXùí(6R`R`y 6¬`o€Z¦fz¦hš¦™yÀOR€xð6RP?€å(u%c€qÀ 6ðð€åˆylåÈ yPR€þxð6À 6ðR€y0`€åˆylï8ûií(6R`R€xð6¬`o€å(oPÄZ¬Æz¬Èš¬Êº¬ÌÚ¬Îú¬Ð­Ò:­ÔZ­ÖŠ-€6€Ãr %ÀT€-PIPŽop P%Ð yPR`o€YP`ðRÀ/6¤o€yðÇPR`o€c PuP`ðRÀ/6`¬yP0%ÀQp %ÀcPR`o€c ³2;³4[³6{³8›³:»³<Û³>û³@Ëþ³uðæ¨6çøupŽuæxuðõ¨6ñu`Žuð<«6ñÈ Aûµ`¶b;¶d[¶f{¶h›¶j»¶y xÀ¶p·r;·t[·v{·x›·z»·|Û·~û·€ûŽxðx¸†{¸ˆ›¸Š»¸Œk¬q` ;¹”[¹–{¹˜ûµÁ–¹œÛ¹žû¹ Û¸ ¡[º¦{º¨›ºblo º®ûº°»²[ŽRPR0»¸›»º»»‰‹RÀ»À¼Â;¼jlÄ{¼È›¼Ê+³u ð˽Ò;½Ê[Rðx@½Ú»½ÜÛ½Þû½à¾ikf`™{¾è›¾ê»¾ŒÛ3À¾ò;¿ô[¿ö+¶’s¿ú»¿üÛ¿þkŽ0ÿ;À\À¬¸’c¼À ÜÀœ¶33ðÀ\Á|Á3 3€ÁÜÁÌÁ’óÁ"<Â$Ü¿r0°%¼Â,Ü™+3`vàÂ4\Ã6|Ã8œÃ:¼Ã<¬·;libjibx-java-1.1.6a/docs/tutorial/images/example3.gif0000644000175000017500000012612410071716566022366 0ustar moellermoellerGIF89an8ç:::‚ŠF¦Fv¾v–Ζþ²Ú²::þÊæÊbbþ*–*ŠŠþ:ž:¦¦þÚîÚZ®Z‚B¢Bb²bbbbâòâFFF¾¾þ†F¢Fþ‚‚n¶nêöêŠŠŠŠÆŠrºrÎÎþþVVV¢Ò¢...FFþzzz¦¦¦ŽŽŽnnþ’Ê’ÚÚþvºvºÞº¦Ò¦òúòfff’’’..þªÖªÂâ–ʖžžþNNþjjj¶¶¶‚‚þ–––®Ö®ææþÆâƾ¾¾ÎæÎ²²þÂÂÂJJJ®®®&&&¢¢¢nnn†††ÒêÒúþúÞîÞÚÚÚRRþÎÎÎ&&þzzþÊâÊÖêÖ––þÖÖÖBBB666ÊÊÊZZZ NNN~~~îîþVVþvvvžžžÂÂþòòþæòææææâîâîöîŽÚêÚââþêòêÖÖþ22þ¶¶þ>>þªªþÞÞÞÆÆþ^^þ""þŽŽþÒÒÒööþrrþ***þÆÆÆººº þRRRffþªªª"""öúö>>>²²²222^^^ššš‚‚‚rrròöòRªRêêþ2š2ŽÞÞþÒÒþúúþººþJJþ¢¢þÊÊþ~~þBBþ††þ**þ®®þZZþ66þþþ’’þvvþ"’"jjþššþþþþúúúþf²fâââîîîêêêJ¦J>ž>N¦N~¾~&’&Š^®^6š6†Ž>¢>VªV.–.šÎšŠ¶Ú¶†Â†’òòòj¶j¾Þ¾žÎž6ž6ŽÆŽV®VööönºnNªN&–&z¾z†Æ†žÒžææò † .š.¾â¾ŽÊŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,n8þU H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cÊœI³¦Í›8sêÜɳ§ÏŸ@ƒ J´¨Ñ£H“*]Ê´©Ó§P£Nä2¤ê4‡(c¸*IUZ)Rb$ËÂa’$AÃ%a”¯o²•J·®Ý»x7&ñâÀ—/°”9øºP€,‚ÍNDÁ÷Q’Fî0ôc- —,QEƒ†@%‡òŠMºtÝ$JT)û€pCÃy †€U#U°È8ÙŒð‚ç‡M N¼øO>+T­Ã²$tž/Ù’dIdeLÔ:Ü5J×%’þð¸ž=‰± &"3 ?ª¦ðH’H…ª/} ZHÕ K$Bjª€¡B}©5Ȫ¼âHx4¼"_t‘DF§á†v8Q[˜ð…!d¬bb|1ˆ ¢Ê „°‚è¸JŠ+°èâ 1®°zµ±'Ð0‰ ‚†¬àˆ!ü¡EƒÐÁȪüà+ñˆ@½’>2’ˆ*XPC „€!NÔ°¡y(çœtnÈÇcðâ+ÃÖ§b|¤–lªÊ¿Ý˜Þ@()P¤ƒ$Â¥[ê›@?Pùتp—¨ÂÃobªb&§¬Yª*þd€Z笴ÖJWÉ©‚†"`zX¢©)ªZèݨX¤ªð!¤£Aô +X©Å´Z°À¡ª¤šj|£šêYp°Ž @[ªäÑ-¯’‚­ì¶ënQ¸ÄB þ ¬*È‹b'&Ê^"·)$Aùª‚!FtºJA`;e¶T†Úmp঺|ªøqnº²¾ëñÇ Ë„šjC$‚¯€¦¦!ýAlÌâ›Ú,¿ÂÚ£“²÷ xÆEšr!ò ¸ŸV êç~k©~‘Á0¯q©1²nÈXg­5II¢KÀRï¯É¦–G$qÈa‡’­hhÈÀz!<`µ þj%a®Ðà°§‹Ê¥gƒ8AH©‹áª@±nmùå˜WÔƒH`übd+D¦Jt”Å H ±Â+«¬þ¢„£—®J+ A‡® ´yí¤Ì+ð0È«øAn¨BG½’+äþ±ò¹‚È ä†z<ó™wïý÷(¡Á !Òì৯þútåqÈ!xŠÎþüô×oÿýøç¯ÿþü÷ïÿÿ  HÀð€L ÈÀ:ðŒ 'HÁ Zð‚Ì 7ÈÁzðƒ ¡=¨„€„ HHÈ*jBå™p„0Œ¡I¬„3U¨à7QF P€•AtL†þ@ bF”aG ÂHøAòèPƒFèŒC°Ì+”ñ‡|t Ÿš”±DTÑÄ™jÀGÐFˆhL£@è`‚C@àŠ,L'Ês‚±(Á Š ìø'4H  W1 ŒÁ 4ˆ‚"±‚…©ñ’0dÀ ¡<" FxDrVÑ…©©Ê>PB¡ &$+L0¤*ñ…a˜` ¦:ÄA %<”˜ æ£`‚ ¬@=p@¸`)£˜±*•€‚ͨ`d–Ta‚@èÐ>tXÄ´0ŒUL!ܦ:;ˆ4 ^øáŠWÁþà‚2¤é '4‚†P!°h8Àà¥+Ñe Á_(ÑÏxÆuZ”ƒÊ – 0ÏŽšq„Æ ‚?,Ayà”°?„t ŒCKaFà- &‚ì.ÊÓšÈ!«°äY$ Bí©R—Z®` }LªT§JUa*ÃÙSI–À&Ô %\ ATÐB…°ÀŠØ)E†ÔÊœ`BòLâ G¡‰±„ æ0‘0 —(HPñS`B aE Dц‚pbv0CôàƒT`’­ªå^ñɱd |Â!‘!Œªù!ü°…"d 4šþÂE`€„ «°\™ÔƒDa 5œHP€ˆ ta"A€ƒ3„"’(H*>± 8€B  &ªP‰‚ÔˆîBôNèàaè­fKÓƒ@œ”—"]. ã]@ ŽPÀp© À§¸@[AƒÐ ª¨k€±5.Ü7¿ C—¦P`0«øƒL{GX8" nÈq1ôàh`Š à,ü!NÃpCbF cŽ XB%! y¸€H/€:,Á`ðA²†K¬-®ð$—tA†L®2À`„‚>ë¸hPÁÔD5Ùñx…þAƒÀò`@ƒW84¼À5.ÐÄ%Ðá?VÂŒ â‰p"04°‰Â. ¡¸(ª°¨B Àƒ'ZP‰JàaÐC°ˆ"!)$QKèA6°A)0цEï!)ÂP­ŠO/ ªØ„ëKà¡–ØC4ŽÀõ®×.æTDz`ChÁèBBÀ|! 8  „#b>_PÆ~Ð"ÿ pº …"W¡0î?(ƒ~hÄ"J¦H-lGŒ`!z`‚i‚´[±$#,Àˆ<€é0C@Ï‘ <$ Šp„2þ2%CÔ „¸v"ªä“‹¸Óf¶²ƒøÁÀUÄmD%[#€![€*¾4ÀñhKP‚2Tàð.8G9Å#ÑX°.¬ë‡àBèd'd` Q`Ž¡Í-,Ž Ðåhà‡Dxá‰`^Äâ *Ì¡xƒF! 9xb 8¯æPM˜Â– AF‘8hâ¡ÀÄ<Á *”b¢(B'6ß ¨BŸWÅ%Jñ‰;´Ù¦°D ¨ P„W˜(8QŠJôÁšèCD/Àf!탨ù³ïÂ'¡tÃmDT ‚W„@IÈ,0ˆWà\DÃpDsfþgýA™ØR„$dU}DŸ¾ÒFЂ ðƒ#(bˆ·üФ!ÔpZ'\ oü‚=°oaS%„FFàìñ[‰ÀðOZà†0=`©s~¡ÝHÓÃðÀcÒŒ n‹)Xáb0~ |`!u”ðƒŠÐ‚?°»Ä<°ÇeS*<°Ìf[‚¸å  yPQ! x§ ¥p–{›P @š   ; º§ ¦@ f` ©Àx¶X{  U •€ zˆ ¼Fz R f€ipP¹¶kþªP‚ð¥pb`¬À á ^@ Ãw 5~| cà(ð] }€Ãp}Þ´|@YÐ}ªð^ááÆñ °:­¡o?€ð§` Jð°d°ŒÖMðU€[ :†¡Sè‘5À† «ñ¥ãx8À<„°Œ«£Zžµ"xFÁs­d@c²,`€YPRh¯ÀÝtKPõ, ¦I0 !°.øØ©°°¬„pM<Ð_P`ËÈ<Ž8ˆa ¡Ðk¤Ð…\¨ u@ š` `þbÐ: ]‡'Y˜{P“Eð {p ¨ q F)`¸‘ ¬°]¤Ðz¯çˆUpЀ5ùA*`Ö’‰yá|µÅŠŠP*à| *&@…TÛæÐd0p*p1Ž`?€ZàVpô¢Ò_I¨ €)Ž:®P™ð8J`GPŠ0^‰y&PG•1)’Qõ†+\À!Pް„°‘K€]ðfÄS@[ ™Ià#ö``p6cÀŒP-[@Z¯P™® ½•™KZ@^þ (`®"*r[L càJy+°2Ž<ð(@ÇÄx`žÐ {` ;ОäÕbÀ )0wxИPpp¡¦ ð UàU`  ¤ð /ÐÚ™5—0r`©ž¦ð ° :Pà›0 €`•@¢@¡©P«À3b9Y€Ã3Àƒ„©QrC° K˜ª`J d€@S€•G ¼1y@=0JЫ €Ë8a@J f!°5 VaÀ?ˆÐ~@¦Y@cÀþ°C`Àkª Y°¶8¦S <@TºŒ¹ãs~À¦UŠQð,€J=ðK€¦Q *À—‰«0K0J€d ©d@ªò„¦ºãD´ÑN´ =€~0`«ˆ ªJ ~ > —° š0­E>P   z@›– m€ 59a  ’  ¨À P ¥  •zPÓª š žš@s š ÐšÀ ÐXµÖž` ñ;A*'4ò*tÀN`… Q„‡pÐŽ ›± U(«Yàlá HÐÞ¡±(›²@T!þ²*û²Pá  c hà‚!L1 4`„ÐSúCÁDå"’XAypíÇ`‘_€K€C$¡)P¡Ðq >P‡R ) šu°|³£ 2EªñŒ5è§ « !rÛ<¬£ c€C¢ °Ã' ·ÎVN« :u[s}«Îr°pµJ%„+?«¬S¸Câ¶”kIv»0ˤy~0pÄú ~p\‚Û<~@ƒÖ p¤d³w¸Ê€ƒ°ã·ª¸y«yk¹yK‰€<`º~zŠXÅûyaÀ\ªÌ zŸ÷¡± TP™à Æþ+ˆzp 㪠f ;*z’ x0f°½z YÛ»¼Û{ m°†¨ sð – s€«¶R±e¨‰$Çk†:“D!É ŠÀ ®°$§`@†p!Їà phÐZ`Ž&Ê öw¿Pë&p~dãwLò`!=pŠ,qAe"{ [!<Âèh0Zà`.v!NšÁQМ`& ŒS )˜¹6% _'ªpG`„AI0cÊ€[~ÃAu‚hàE~€ž_ðmS*mL@  )Ð!*)°––Ÿ›ÇW ;°{—É™xù ¿) Xð¡€ vEP ¨À p°EP)Ð ”¨ $ ¶‡Ö¡Ð€zÀ b[ÎË ï[ X`XP +®‹¿Mñ 6µÊ0 (àti5(m‘N`+à°â¯`ýáGð`dº~Yð+7ÄKà4®H¨EŒ`LàH€B§‰p'‰ ŒMLœi¡´b†`ÃÀ@[@[ÐZP2Gð ]ÀFZð“q<p¿Qe@ˆ50þ*¤4Áz‚t º³H}ƒ=p}³Ä±°—œ´Là @ý¨Z<€Ã ÄI@Ú9‹Ða bp 2) Ÿ •°z  –` ¤Ð±W ª€}@©@  TÐÖ^;›pòz T€Ÿû ™ $› L¬P›Ð”w{; mÐz€ð®>ð¾Ñ‚ÌœH°`´ KÀ–Í(`CRMÊs‹CðÉäL`ÔpCÒë§ ˆp±Ã`~s(­š¤(ó¢ Š Ù¹|°ZàH\Ð\Ð[¦m[Úæþ‘Ssë‚Ã0†À*0K­ 65ÓÐÓ- Áä-° ®±Ü™`ÄÅ3¦}æü×$²U^ðU‰ +°‰p†°‡°Äõt†,PmÖbd`´Ãƒ !Õl(f } p °;À @T ¢€ ªp†r w  ‡À•áAp> S½6`’@‡,ˆE¸Ö ;À §Æ ;p €ˆª Ì®:NЙíCÐpúăà0ÒŒÓ臸4‹^ %ËIÔ ³0]@”KÓHc™!®€Ð$c\`£ I@þ¤xN‡° Æ¥ƒPoÀM!`Š’›,„¢0N0ö-Ü£ 2"‚SB(*3=†Ãæ-TæÎC OÊÓKðÊG0ŠÞº˜ÓͶÇUñÙÖ<ït©HÖ²C žªIÀ{A b> ‚@×¢ ›ð ÖÛ 6 ¨¶}ÀâYm”b ÒµkAÀ ž¡ ¡`Ìû @¾‚ˆ€°{6PäpH^r N>Ù•ØÀcЪU®{“ÝfkNKà¼ÃÇ~àN‹0­žÅlN#ÿí à°I\°^İâþOhÁAá×ÃñN` %‰ Zx²3"É3¥Än„Àå”`±pÊ&€+d@nK@n ± —œ‘˜y¹NÀ‡@;pY\àÆ®e ŸÎfa°ÆdG?° h@ù—ÊÐZ…Î0W á Pzw T`R@m % € Õ€´\ˆvРו’r  `)Pýéy— ð ¨° ‚`¤Ài ÐÊÔ ¤P¦Ÿ pp  Ð € ÀFƒÐ÷=ðPÝQàJà ƒ~pÊdyP:TþØh0Î1¦ƒÃ0&» |ê S@›y;´C'·àÿ à ~`QKt0 YÀ' ý ± w¢¥4¨+ðS0‘e•ª(~ÈDQU®¦¸Š’*Š-ªB“gJWªòh|Hp?f¦ÐaÇ‹•-¢qp ²)dщ˜'ŠªUQ†¬èØÑΈ°4Âjy1L™:•,…y¡BU•â¼yc B œúXR$ŽŽ:f’Z\Z&È¥NrÈ^¢¤ŒZ3$,Ý £ÇRª/žÞ•D¢È •.ݵD"ÈÅWÊÎ>†YòdÊ•-_ÆœYófÎ=þZ4h?†,ŒF½Ñ"-©CÏ)‘ÂÆÎo¨° ãZ÷nÞ½}ÿ\øpâÅOª‡ræÍ?‡]zKœ£A£ÌzqW°^íL ‹ ¤=ÏŠe˜Eˆ-Wц†%qǪ”½øXû+ÊÊè(Ã΢W&š®@D0Aà1ùˆ Ä‘x08W2`¤‘ÖZ‚%>¶PA•9‹Œ.PP¢1¡ã".é¡ Š†‡VÑȲ ÄÉþØbˆ#B¨hGˆT0I%—drºUþx…:VeJUè P•!h1¾+ ôï¼ÆZ¤KU¼Äo=U¼Kj• –0" –\¡þ¿館J£ „Œ³¦„©@߃a†¡R•W´`„‘-’êKX²ˆ‚ )2´":’ø¡¢("åâ":¶èa‰ (zÏÊ)£h))"ƒ,*ŠÒ±ÿøCŠ¢Wr¥££ÿÆp€‹<’˜¢E4àë–UøÓ¢‹WæÛµL_‡Ö@˜¨h >¢ü£Io¿7ÜДAä‹1Œà# ?ID LØBŠþ!EºP&‘.Ta"ƒ#ÉÓ#É &¢xw‹.Ùâ‹Q–/fä½ñ¸˜b.Ôû£§/1A‹1’PE’‡HÄ„0ÎÀ$´èá"#,p8‰?# TP䈆Qþ˜b•!`qň–~à-%ƒCNk(€/H-“N_é"€-"‹úc˜)f]A‹Çðƒ.jP–†·X‘D¼ØB ¡QÈ@‹<ù‰ë/ ÁˆCøÈ€Gq@?’Âa–°‘D VÉ…C8}¥çC˜0<‰#PpäÉaŒ p•.° ðÄ¥½vÛiÏ„$V°‡$`a‚‡(PÅ‘Gæ­W•ZSA‹)¸É$-:-h ƒø1¼È" œ¸×\a{ж@ÿˆY+Ræ-ðÓb…ETYM• œ #„<†A‚%†@C~0ÀA¨4ØÒþ.ÀetÁFÄ!¶Ð-È a øC¨èðœ)€… Æw%NÑ~ˆÔº€¾-Ð ?qÅ"ˆT*U,°°¡0ˆ Âpþ‹Dð ~[B"ˆ-p † ƒ,`„8À, #2`ðÐò°… X gÊÐBþˆC€ÁQX†0‚§j‰PÀŸ+‚»] 9ÈÕà, PЃ pÁHD"@‘-µhyÊ; `B‚-é†ÑG<2[p@PÀ„#€(XD'WÆ…?ü¡FPE²@ˆ%TÄóû¥ˆþ¡4¢ô‰"ˆÈ@2/ T S ÁŒ.@GÑ€ ZUdÑÁŠls® „:©_YM<@*ž÷#Ô²S¸`´ŠxÁhötÅ!anÅjVFpÂ'Åǃ‰)!QÐg'Q`#BGªCx` ß@¶ ¡tsø °ˆ$b¡i#ÞY‘¢Špo¹$dLe:Óßd0Ú0P`ˆ#¨¢^˜ÂqŸH-Iæ"õ?a}Ô;Â+a£EpÁ^ÈÃ*¿ÐSñ¡\0Â+þ0¨€ ƒÅ!‘…Wda‹@D#¡ &aN iþ…)êP«†1Ob‡PD AƒdžYùø z'o˜‚”¡Œî…@rBæY²ª€¥ÉÃ"Yy¡«ùC\ÿ€#(c^ÄGø1-h GP‚¢àC¼Ó°@„ ÑÐ!À j.@C5ð¨áŠÞ.Á _=n,À»¤ Ṇ"Á˜ÒÔ½ï…ogl¤\°SƒXD"ø°F(â°®¼`8á’ÉÂcrS[§†Ì«]U·¤B¡ ™®t‘(ä †¤†ŒCÚû§Èì¯"h˜‚§ÏÒƒ@À:Óφv´¥=mépaÔÔÆv¶µ½mnwÛÛß–¶jéláL<¨ÏÅWþd“F¬óÚYŒÐ¨\92)´ ›E†à‡¤äÁ¯‚šüШ‰ ß˜áÕ­#㊰ùáAÅwÄ%S X×ÃYÅ$4Âó@ Ýb‚ (㊧†† ‰øÃx”ÇÑ ăÅÈ{‘Õݪ0Á/bE ‚;iù Xƒ Œ|}.íæëɰ ~HÄCr„OÜêW—Î*†ñXl«ØXEèe¬„ýLµ&µ+ÄÖÒ §!Ãàc¯Î¢ˆ%<®#ì†+¸Ž–¦ZYàÖwG%Å® IK×øWϧÕÎýC4­0.Ð?FEYWXïŠ%EÈ‚Îá‚„Mz„Dp…-pŸ})þ# l )cQÄz„1XC0õ 'hÞÙ´UÓbQ….8„Ax!ç“Ã9 Ÿû‚lB=4h@ƒ¯ ÀÛ‰K-ØFø È«‹pÃ0“N¤, •é‚eB„ ê ¤é‚Š(sšÈ€E Eþà,s’§XGð“çá7HXø ªN\.WË>YT”%h¿ƒ I‹2E@˜ó,è>h±{É#‚-0HEð—@.0‚©¶UPþ²X „k£Ã‚4HÊH.졈(€.Œ9ECKjå->ˆ¤ÖƒªQr™˜H\¥#h˜›H:‚<èFù%`:ŠP„S¤S\È?j)ã£!¼Š°Å)¸€ x…hrÚzBU Gб’ t"µâ8¥Dˆ™ä·xQ)úƒ ¼¹ŠG‹èʆHp/è¥âAúàƒ!@G0á;‘yD%ƒ­š?ô¹rsе)H„/ ȃÌÁl °2Xeø¯} `éx–/eCp”-ð`¥/˜ /àEð¨c%0XþGH‚› <пP6Œ¸€Qä‰(˜Í‚€Ê Ì+X„?@‚ör940.Ð$. ‹:k‚>pœ,  ÇøIZÌ. „F@®†ÌaA#€á¼C@‚0£2п­üÆ$h‘÷pAE'h„ð G°€‰`èN>èN/˜˜CУ/Pàºd˜@pªé´OÌ?ÒH”Р½ˆU˜‚1àˆ:-Ù‚ €%XHú&’CX½¾CЂ¸ã$D]D0›-ø 2p2 /jÌ€@@;Hk"ÓG„qš.è(*$¯F8‚ ø Û‚P„8 Åëþ­AQQd„Ñc%°#8‚Ì™‘ÇV 02P™ X:P,‚0¿#ÐG ý.5?@ƒ@ÀÓ˜Í#²)ˆÈC`Ñ¿CŸ@8,킈ºœ&ø#á‡ÉEp6.xbУÐNõTјòؤÎXûÔØŽ<¡Œ–l‰(P8Ìp•å[׈9‹Í‚ ¹k‰%(ÔOõÕ_Ög{Õ`%Öb5ÖcEÖdUAh”厸 Fx…yc„Ù!Ž)Ö0?]q%l¡ŸmU”F)>‚`„m$p2@ ôŒPÊh E™V…,Dè@ú4{UÖ|¥ÐþPä)ÎYzt…!'8-ȆA°VР³ÇaЊ„$ˆËš9Wc„Ó±>Á#‹ø‚ž“¢|Jrk Ûª40„tÅ+Ëp›´¬ˆh6}•Y«£‰1ÈzS7:pM…H-é­‹X02àÔU@„?04X×\ˆÈ-¤eˆ,@D UUP˜‚ ˜ˆ(0„YZFhZû@F„CACƒd»@F˜‚©UXÈJ(Aqk[Ç`8 P…A0=ÝJeøBpÁ›70p·)Xt£¦T”±%„­ˆ=\B–'Ç8Fè¤@ôÄ¥Ct„x]h:Dè<þF@:àD«!h‘<„e %è/È:ø¸Wà!œÙÞå6X˜Í?¨?C˜vFI’Ñ’zY¿°›Åσ£•&kË.ÀTG‘#CàqBT p„p-åƒÀ¡Ü…<Ì¿c” Sž?B!ÀÔGp‚ µˆ,ؤab½×q*Šrtåƒ.è>0Âõ`U·0[ûéU¸«.ÇPÜ2úž Xò厌Ý5©%Ç0Ó‚u„a0›èËZ'ˆB%¢G’[Ô$xC DJ@'©æY¥ˆVœÀôÝ!†/MÂPŠ`'p…ˆu þ„ãá>.QžŠ|CÐýCƒÎäÈ&fˆÄDh!¨$¸RC0‚< •$Õ(°€Quë‚ù¹ 0V‚0&U@2W,Àz$`>à¢äFÚOF`‚GhWê0§ªé €þ²€X‚tª?? €  Rפ˜Ü†@‚ÈG" KâAƒ°¤ˆø9CªÍÊ,½æY F(£JËX6xX"öeøÊ‚/8$p 4ðX±œ¤å ÄCP†Aä ˜¦GÛHRj(0àî ImF?K:àײ:+êXß´Q˜ŸêË1Þá“BEcR†f2 KI„þX¬æ\_¤iROQidêWH—ijþ`Ê!¨œU £6%g…aÇ`‚{vReÀÑNzƒ¡%è?PaD@‚$ƒ.H‚aº )Bèg0hI#™O]A2â_¦éAƒÙ,;&ðdr€Œèy…£T$h¢²%k®ˆPBƒa¸:/`K&Ø*Gp£à%à«Zb§ö¢…nò O.sÆRh"A6ªŠå‰f¢ƒÀ²ÁA0„+JÐĦH‰S$¨º¤h¨Olˆ!H‚OTd¼) >é-Š8.D z,õ¨e@yQ j±ÙÓGàÝgþ§÷zÇŒÀ>_Ù‚J›PCØœaàƒ >È«†6>„8µ³¥ Áòƒ·ŽuoEWô‚4v…@‚upËzH”S,аJ{l—I+½4ÓM;ý´SH<²D½Ê˜pDÀ2…qNœ§Ê›q>¢ÊșȲŠ4 +øÅ*Œ’Á¡‡€¡_t@‡’æc'R‰Xf=ž*«$bi4ð}ˆ4<ÂGId J„A ¿ä«@ŽL(çÖ!]¨B!y ø҉ą!„`ý:!QDGE‘Gl'd`dÒþÃT÷ªro%rÒ J’p²ƒ g"ŸÔG ™ÀaC˜¨I"mR‚'ª´`ƒ}¼Q) ÔqµGü€â}©(Hl?, A`…‡™½@v¨ÃÊ@ò3§Œ¡y»â|Âmr³›ÞüfT”ñƒl¢ÁpÅ+´`úládàAñjð/"‹@„å¡×AD9øÀ‡ä]àÕ€#lA^_HÝ*"ÚDða ‡°A©0!y©‹BC/ð2pë „*”ñ…6*«øåîãŠ%hÁ ÷¡CÊ&ð& à ¼„ÞAþ¢Na xÀ&¨‚‹@!ŒÐÓ äÆÐáÁDètŒ°H„Fûø) ¬H€¨Ð‚Å£)X 1PUJ‡µ¾a"i 'l ˆOa€Â'Rp‰0ˆ‚ŸÐAPAŠxâ rHà`L äDH!@ˆ¢ -€ÃLÑ‘ÐA ¶Ë‚@4pÒ¶¶¶½íÒè@)X0 Hðü Œ(ø¡¸SxA\:ȧd¨D\á‡<7 «ðà òP\?¸" °.QDÌ*È]Á Ê;…øALÅ….0^X(c Î\1„ò:eþYØ.,†±]?Ô+¼óÕ®q_1,:8*ß%"Òö#¸~Ð&ñƒ!¼bF¨Á ´™‡AÐ&*•˜ƒ%HP‡0lbšhŸ$4 Wâ¨À XöM”byÊ%H£h¢žx±@Þ0‡2„¡ ux2 ô ‰8°OAuxÃêð‚7ôruÄ“Ÿ¼$ˆ¨ <Ô nÓ¬æ5³¹Ín~óWÂ@Q¤€ ÚJ(FñË¥ÕFpþ3 -èAzƒ—°Dr²•K„¤ÐŽ~4¤#-W¸Â~†Ú*Р XðW$«XŠT†áŠL_z2@ì˧›òiWtZ°5D2= N;…¾Sþµ¬—fL=´#X ‚¢«Òä6|„€¼ ¬%­ìe3›K!0 5?â&x!S€‚©€!ÔFÚt‘´´IhJL …/ˆ„IH¶êªÝkö)©“J´À-äFi Dð†_Û –V€à 0젥é-áfS¼âo ²ÀjUl\Ô—öo S­”‚À›ä«€šGžê¾hpÖèNÄánœFøÚ*¶0sU(åŸ~E P8pC¤‹ CwéÀlóüãk$9–ÃÚ-ü|j\¥ON‡$D ‡¸zÏ? F$¢pý†H¢›l^¯V ¼þþ1ÊÚÿ» -ÅÆ¢©" ’¸DÛ!ð ½K¢U¸³*Ú0f=´¯×‘DÛ/LžìÀ øÄG”qLa‡ÿ<è!…}^ ŠÐ jP˜CH †ra¯Lð+DlÇÐ-ˆ¹»pˆ²¯‚ÐB þ°E€…#¾ …F # @Ìs‘ð 5©âŽ8Âï¹Ð7>ðüN°À~ ˆ$\@ •20ñ‚ü|£´pîó|݇(ª*Ú8i­ˆÎ"s!ra`ß!4B d ,Ѐ|¸[¬ŒAü2 HÔAQ`@ÈA&$MþÄÁì@hÂ%xB'$€ ìK'ì@&@`–™ €€GhB`Ö ØA' –)è€(Bd‚ìA'ˆO,@ –‚*T „ìÀ%˜ÂtB&dÈÿÄ*h@%A"´"€´Z赡®,„Àp9A™ð ô¡À×Dœ¨ÂŒÍ <,¼Bë¬ ÐÀ JÜ C#AñYÀ@ ,BlQ¡ $½ÄB­(ÂD xAJ  d@\à#€Á8"›éô@B˜â"¨Â0 _"ÔËÓEDÝ'¢€¥D0,Áþw%Á¤”lÁ!èIÌPTŒBHÂ(Ô°(@J` HB`HÌÁüä‹ „¤@*Ø€ Àl‚H´ ”Â䨂&ˆÁ'`‚ôA)”ah@h@”@%pBXÂtTA „Ä `‚äaS ‘@A"ÀÙ½¡Iž$8)HÇ*ð¿eÀ0üA"ÔÔ eA É :"8€!$!(BŸÀ ° Ü8ÂLŠh†|Á€´tÆÌŽç¥ÔH Äl±@.zé¢"ÈË×DÅ%B@5!<¥hÁRè_þ¹‘r DåL%#ÔQãe4 þÄ$£2Ѐ¼ìT|£*pc%á0dˆ‚õ„Bt‚ ì€h@ôÁ'ÜÁ€h&0™H@À(0¤„‚)È$èÀX‚&ÜÞ©‚%l¤*¤À¨Âþ€ÂôÁ ÌÁkz¤À”a0y¤H0‚ hÐ*ü$#J'r~P¨À Â* Â÷­añ‰äÌÕ×߬‚º A#8@,:‚øAðPÛ är¬€JR"Ñ€ ‚A4‚#Ôç½Ä*Œ ƒn C xA¬B å¨ Àí=Å*\¢„ù' U×0¼BÄ8€)JÔ§#0Âíþ pøWć@hÁ¸‚t(G„çSŒBhÀ(`BxB$ÀHB<Öˆ –TB%P°RhÀ,)'ð]A €‚ô ì(¼À|BmFé èlBÁrôÌæŽ‘ÂPd‚˜¾€ p‚¯A"¶ž+˜@"A©%'ŸöiÓô@ äÁ+Â#¼‚2Á#‚0ÁxÁb¢.0Á#lÁºù,AGñ@l‚(¥ÌÇ#hAžFÅ4T#r¨À"$AD”!Ô…Tü@AAêd@AÙÛX@Ïþ dÁ#$* ÒS,Á#À!Xâ8ðÀ1Á­š€Ÿ»IŒ‚n†‚Âd)`Ø ÈA‚$ÀØ€\BýØ@ ÈÁœ:…)|B&ˆB˜v€†A”+¼)dˆB¼ÁÚ•…ÂÈ `ALÖ(d‚&dBpLû@Ä (Âl) h“Ÿ®,ËrÉl)ÃÇé–D­ÌÒlJÁÍ¥)ƒäÁlá§2DÔϦTÀlÍŸ}ZƒIÅ*—Ïmк¬$ åTÐlÍ6ÎÏÎìøÑZ­ÑÂQ)èôYWD•-ÍÑlÔ}ŽTèÁ 0šD袥DHþ‚D”Á€Bì¦NèLÝ9…Ú]‚ ØÀ2ED_é„ÛrÄ%¼ÀGH„Û2Z—2äzétd€ÕeË^.æfnÑ%˜¼™L²J•¼A'ÈômU„ÅÒ¸ãh®ë¾.ìg%ôkìÖ®í~^Ì¢Ò,äÁTzëVØ, ‘@LA½0…‡Œ¢,/DdÁqÁúyõNßõjI0™%¤¦UTøR…%”fªB”lBäMÉÝ.ü®ð³lÀÜ0]A(s9Å+”¨SÑý(‚f¼,d€\0…+8‚lNAøB1E ð€¶ÙkI¯§Ñšþ‰„ñ­ŠÊrIØ€tHEáAÄ%ìA `E* B 0¤*”‚(ÔAôÏAIÆ/'ì¬tätüîÄ….bGìÏNЧIo§v,ÅòÂCD À\ÀV*ðâ´îïjP B²åÁ¥ýÀ Ýd,•*ä+ØWx¾B«%ÇåAçŠ \ÀôNõoA€q¶±6’´ò¨ñ€'A‚ D$Zܪ¦%ŒYX‚¯š%D²NX‚SlL4œ@|¯@T‚$˜Þ™‚ øÎÁŒ(ˆ&£¯#–„%t@ªÂå½ hÁ~loÿ²Å¥_"Œ ,ÂþÐAqÞM 8ˆºž*4‚¨ÂD3X€ `±H ÂS%pÁ*E0‹4Ô*FhA‚+¯ ¯ï¸AèɸРÂ"D#ŸÔ@#¶Հ5G[õÕKÿNÜs´±€<Âç¼BÈßhÐÓ©€!| pA;+Á  ôE­ÀÅ53xB¹ÂE¡€\Î Ð ÁAh_$tßaV-€„Bˆ(\BLH Ì:¦@ äPÀÁ&„hUÃD†´­HAÀA'X‚ ÜÁ'°')¤€*”A'PA(„)ÜþA'Ø dÂR³Â´3‰ÌÝšr$H$â½ $Dh"ô,0'6³eA$Âa£8Â+ðAîrÁT ›üa ª±Ð!ŒA kA° ¬Î* ATCÐ@j{ Ž#(m?„H Á#8 ¨Ÿüu—$U~B)ÒóLÁKÅX@# í0ä¬Ò‰°¤JéŸ+,ì "ж"xªH(Á"°#$lÁdAH#B¨ÀƒA¨@¼‚úÁ²´®S´€¨‚ „B$&”Â%hÀ&ÄA¿€)lB'„ÂÈè&pLÚ„ë€H€ÂdÙ(hR þX‚ˆB%´ÀÀ‡ðÚÉšj‚$”*TÁ'”Ac†A¼Í,É,×rS0Aø™—Bh°b÷ø£q |A²¬‚#À ÒðAÂ×ñfË ,*'ú夵Ÿ í¼JÝ$Ta%z‘¤ óZÎ#0Õ š@4ÏKG Z@"$•TtŽÚrŽçØÅι´­Ñ¤‹*$ ü˜kJ»ÚxôQ^ „+œsS~Ú! D,œBåÞw[ïÁ½b)Œ6À'ØAàÁÿu)h‚YŸ&è€h>BÄS7@‚g¡ ˜)ÿ˜Ïˆ*p&þG¦€˜‚(È„„Á¾’•Œw€_3 hAPÐT±_;¡='4‚2¢ô,¼ÊŸ7Ï+øü@L.‚ø9À›l´ì(â ¸²è  "$¥½Á%f×…) Õ€´ Œ |×#¨@pÁ!|´\À*¬€!t_Àt0ÆY°BÆ7bvqܸkw%ööäÁ¿“A«‘ÁLA|ŸA¼å\éÀ$ÃûA¼ ADoTd©&ØÀTB†S|*A pB¾ÈœV TÁ&¨Ø%`A)d}ˆg™ïÝr¡I„únÆÁF¼ A%Pd%°þBT(´*d&p¼˜u€üDÔçl)!°€/c;áÿÙÒ:B ƒŠCïñA @ A£Œ@Rñ¤á€~¢*ô@†›@ö°ù \@f À9·ÞSH¢°‚è¡òA"p#9䣓íoÁ0ôÀµjA 7ÂL:,ü€ñË0 Â!(×ï¡@ ؼŽ‚DÅ (O"H›ùéœÀ$Á·¨ÀÀ¸~ØwSht‚P—A&d‚,€ˆ õ=RAˆ@HÑ£I”œNUT%T¸P•žR ìTBލMªÞ|‚“þIO) DÙ!!E&;mìˆÂ•R>yò!ÅF SzæÑò*!&Y:”hQ£G‘&Uº”iS§O¡F•:•jU¢¯V]‹a4I¹^2 lØ„f_)cøUaWT_j©+² Wñ<Ëp˜Ú³Qü5ƒS¡™6 %)ôTBÃâª.½’t°ª0¢:Y"œ0ñÐKaˆv>:†‰UÓ§Q§V½šukׯaÇ–=ö›‰Z •Ͱ£d¥=œxqãÇ‘'W¾œ¹jÑÍ¡G—>zõ×F”(yKÖ :CþÌ]!T".S”eáhLB?\„úÉeaôAó(y5ˆ~þÐW÷ƒBC»üˆí M$å §0Y©64ѤŒ„ê%&Sh¶¬ëÐÃA 1¡ydâüàã-– ‰$„¢#2Æ`(& !ãW”¡A¡†À‘Œ…BXdŠ TH„  ªB\LˆD~ˆÍ86ùD7£$)"CËvH¥©ðEŒ„B‘*,QȶQÎ9é¬S*:˜ c…?”Ù#Vàâ®,œ81Š9Q™,Vèo!Xíaˆ¬\AÂ;4qeˆ(àCÃDèJˆŽ#¸p¤´(VH5<%ÈhD•U†0bŠ`yÅ„A”0!¨Ut $‹)¢P‚DfVW²þŠ‚!UqE‰F8’¡Av<Â:R]¡UV`äÇUŒ"¾Êâ,ºo!=âx¡{*Q¥"è½D•:æ… ±Š(ã·„@ɤ&”7Ž0̘ã âÐà HÁâ=Fò¤Îæ°ÝM6% =Þ€ Ž õâLU@å…NSE™.BàbŒPíÌYçE&>~€.\1d 0ºpä"ôDQ¥‹¨iHb ÔuBP`e´ã‹Gžäã>¶à‚.¾Ø"F‰»U¾JKébèUÉ`U^ÑÂéb•¯”Ñk¡WÆ~FþP„þÒ"G1B:,`D•(,Ðâ¸ð#î¸ýP†,®AA¾PE‘/Pe˜#$µ¾Â¹ *J)£R*ùDPìP%SÄ耄Mú„•‚(¢>©¢Œ=¸ß£ŒÏT™Œ„; BŒ7F!ņ4Ñ@J°aìè£ËDɤ“O^°Ñ‚:¤.Iˆv …š!| ™Ò0†Ñ…Cˆg´à•3'>à ^Á:d? Ä>gˆý!j,œÂ#x°‚Dd€!¯€`úJ0Â!ư…Á‹Pœ,q[ ™ÂŽ:$¤^HþÈ2‹%$!NCAƒhàXhrÈ`ÊÑaYªÁ#Vá‡h¡a‰KœâBòЃ@$>«`DíTÁƒC a „pÔPP U$r%è&T†9øàuðE¨€IÈ!šXÀê€Q6ÀA )ß%æÐ‡8— E(T¡;Ì'—(T…HâÀC'Ä`†NxB˜€@&î”­,(c¼Ï*”ºÀ`šÕ´¦RV‘&L“(tè‚V0ŒU4"*à2T°…Fð¡=ªpš*þà€U Â=p@ºÐ¦-dX ³ >(BhFЂ 2 „#bùTþ"B‰ž((5xÄu·¿Éî>#D…2FÊ%$p”#ŽOCuN4@*Œ@:.HT¢@a€ˆŒþ1+<؉ )”àá¢(E| ‡HÁ fòÄ(Ê„ˆ mÂ'îŠP˜"œðªÚ´P!–¤ˆƒ/ Ë:Ü iƒ îlj„!wh@ Bq‰N4 T`^2U@ e¸ B€çšu¬c§ ˆGÌM)SâÁ+Œð/  8 qU|Ç!@Ã1† 8 øÂü@Q…ØpyðÚPƒ1øó  ý#?˜Ç=@"þ¤µ#8a 58òP¤<(C‰èÁ!¾p¢LA ] ,ü ¸4Âzà # ®8)F'¨ÌT ñƒQƒ@·ÑRPÐ-d@»ˆü'XQ ì€- ‚ “Ìz™Ó%ìð @•ˆCŠp2†à¡˜p P‡Q(ÒY ^Êð‰=´¡ .ÂÊ€WIˆb¦è&ä@ I„RHA)²b©„È|e)[Ð]ðÂÖ@ze0bŠK ABXðð@°øÁºp0äGøAøCÑ•f!èA³™}AiVÄ ˜þ`E  _È@4W”tAŠp.€æ ¬@¡ DP›9Eta QÂÝi?(B _ ƒ$=†<,áy¦ íhX€:Ídà!´à«£¤">؃,!)dB7vÈDBQ…9” 6ØÁ`8‘‰´àKCÑÁD¢ŠØ œ*|‰PXb °ƒfŒ 1„b/èM§n)˜"q ¹í€Š°*„<NŒÀØ)œà Êfœ…£*&Cj•‡3D°à&S—„éRe+/ÖT^qBpáâCaàºNXe¦D&!LžS”“¿¡ˆùÀÖ¥þ¯¡à\(Ã0M t¡w¸²ÂÀÇ¡“”,À™t†ÑtYå UDKàA³ÉËÒÁvåà) HGzÄžvȨ}8ŒJUɲŠY­`~XÅ0pG¶ïÝ)?p€Ù.ÅÕ ¢ª.1F0«>cÈrRzÐÞÄ %&0¿WÁ(¯¥` lB¦0†D/„ ?ȃ ¦Îd0d)¥Ï‚ ¯š7pâ ¥hkSŠ ‰¦@À¦ˆYªP‰Lˆß£'Î’Pv½GE[L¾œ@‡~bšïÕ7 :W­† d0QqÔEG…7| ¶0 A(–0 þÆ!A(¯@DÛâ B|™! Á“‚j¾Iq–Âá )60áÊ îÇ(
â8Áš¢R0!!Rá6Án϶€úh#‡b)¥T Álˆ­/ƒÂþé>*îz@Æ` jàxp t‹¶ãþ ÜÈ!e ›²@ ™€È¢Ç ^ïjV Žj`òÖ‚² <çˆa •T€ B€,të^aÆ «äV` A-áѼ°†jÀ &- a – @V°À`óh D%Áøo!j è@èà~`ჶ€Æ>Bþ¯a ” hècB è£X SORÁ_LTLÁt€'#fÑÊBLtn!Ú`^  tê€ê@@RöŒtà÷ ÄÄ^z/Ì ð`xñâ  ª ôÅ: (Ú ."! ¡‰Š#‡"Ñì1 RçZÄv¾€PÀï©‹”A‚bú. ¥ÄvT€ì‘†a!žÁ r¦`"àŒO­ÉÁìá°).@ †€ ¼€š¬B O β@…TA ¢f à(À) Ðn!²!€Oº–À þþá` zà%Ç >í ¤òGÈB²B¼à¢À'M¡’À„T``À! !\e²bâ†a"·Àò‰†$ ¡ó!‚¶àUŽ@ˆ‘¤ò º` ¬Òv”Áá œìxà1“à ¸ÀÀ@ ! ÁLÀ Æ , áE_&NÎm“ì@À4¡.ÁJ¡ú H€ €Û^¤@¤1Ä`ˆ—ˆ^€LAúà D¡Ä  äÄ Tá¨óL.!v ú ¡và:¡ì @Ã7þ2p"åò`¿fò]ƒó༎2Tà+ü ¦ÀÎ+𶤼 ¹fK‡²€?Q vÈ `h` È€*ôBéà!H’ºkV  è#¯)ø@ᎀ’?‡bá¸lº „ÐÀXàÖÚ‰ž ³ˆ( ´€/üiú`ªÏ|èÀ ~à .`áA †à¸Ì#(X@„¢©n¨ {Z ’`¢Å œ ÆmŽ‚<'!”Ås„f 2Nq áD¶€\Kÿ€i'˜ÀI2/ZV! á¶àT!jà œÀ>S‡þ¢`IS]“P¡­^À¤â€ê@êmÄÀ˜M@¬Š`ßæª ì§ìÃlÀ LáRNH0a6Ф  D!ª@ .ª`vIÌÉ#èìs´À 6o6LÉïhHYƒø@T”@’@$ûiùŠE‡¼µ´ H• ²F P kÈ€vÐø` 2€¶E«‰ Aá!-Xx` Ø5ÆÈ`ŸÎ˜E}ÔIÝ*€Ò5!–€ ávŒÀ è\ÃÏÛ¦ච.ù »”áœÀ¾ s`$!Æ  Ta à LmaÙ“€,XŸ2@{UÁ ¡ 2À Æ£‡ÁNT5è@ @½*þ ¡BK=ÝÕý±è`-V 2@áÂÁÎ7Üøð|¡@ž¶’€àr\ $!,õØ@-Á¸"¦^P¢ ô^ê†ÄƒJ£üBÝ*Nü{£¢/Ø» j@-²B8”Á/f[å³Â/¢…L>0R^uT|Ýmþæ£þA[U]nÇ æÖBR‰‚ÖÏX!ò}†=!¡é‹ýØuewžÄ»Òì ä¢"6J¼*`! ¶æ‘‚ 2 Ñá\!.€T z!X 6Ý¡Рîï>¤ÒÑ… h  üRl¾ &ôÛq>ñ?9à´ ’€+Vý?EHî=!ò½èGoú2é+GŸ›ž[^~ ¦^óåÔëË^aõÉ š„ë›:~*\¶Ÿbþ ¾ Z>%v ’ P`¦tT‡ÁÀ2àŽ?ùµ€þÀŠt¸æÈ9 þ€üm!¤xñsf –þ|ü«)ùa¡µ~`" ¦ +„>Re}!h=›º+êP(R¤B“ ‰öÃ"Š*e<º¨cB•ªAIFð ¡«T­z5ìÑ…˜¨¢‘$Kš"cš=‹6­ÚµlÛº} í°/‹!y7¯Þ½|ûúýó¡ÊÆXˆ²DQÉEŠUÒ2&ò:$½tÓÅB"ʰ’@Þc 'Žmá’$ÂG *DH!ÈW«~<º0†Çþ$9zDãÄĘ!aiai¨G^?ŠmDsˆøª.=eè@É ¢)[–‰@Ãx„Ÿ®Å*Ö$ƒT%Ùbï -‡ò¾?¿þý'³8`™H °ðG`W#5Œ´ÊŒñCI]D¨ &\x¡M#)2?(3’+,˜@ƒ@ª¼¢Ä_8¢ŒK#,¨²Â‚ª¸¨& c4lH#®\`Ÿ*L ¡Ð]˜€d_t€!FìµÊ Zøñ )sHu‰0À‡ÀB (bÈŒ&XpAšQŒq!`øaˆ C°f„ðõàÊ!Œ€ˆ` ‚šß,°4øAhþ£Ž> i^ÊT”—Tª„Ü”îEÇ“\(´ÊYL†hüA†pH"G‚øÅ¯ÂòG­ä1Ä®üa#I¡\”i±ÆË…‡²äÄðxl´ÒNK­£°¥rÑZQðñˆ+²%.Z!Xð*TËn»ø©°ì¡Øèn½öÞ‹oI®@)å£Ãà꿛ƴŠ+CЖo £K"ñðÅ€„¾â‡¸ ã‡&ZäÇÀiE‘1Ày­’±ƒÂâǧ ¯ì¦Ùzì–N¯ˆ<’Ä( cé‰0³ÌsÏ×/!/5ºï”fÁC…EˆÉi‘A!ÚÆÕÇBþ!Lú×*‰láˆÏbÇdh¶{ sÁ cla³*yDSªË!S7Þ° °¬cpɪ¸2 áÃä1àÀ¢á*&á@;x›txEñH·nS¦+y€®LšcîD ¯†+h”^–éGøàˆ.ô@ ` …%ÐÀ+<É**ɾ ^ðBüæu6?PC9 MTAƒ#À±&pÂøà„æzá8cA ô7™$áH‚Ô*GX(b®Š®5®Å’#˜.ßcèèæ±(€ô­YØ™*†ƒªm«ˆÂ¦“ÞI a#±&I¨me¤w»&‰×ø[ËÊ:Ô"aì˜ýàÍ zEü¢WÀbÞÿ‚…2f¶ŠaLa°Àȼñ-ï{¿þ è#¼`„D‹{á~q… X’n·e0bx\†a„ÁZÜQ`ˆ—Ü©DHœ/FHDQù»ñ”÷Å<ø`UóZ·ôa^Xóœ³%žfsTV@¬Ÿ¯À•hfL2—nÇ<œñrÀ˜¬ô¨‹ôÉ«y£è°Þ‘ø .‰¶€– þY —ƒùE@5)‹T$í,.p×mWä€)  V1F¼ÓŒ]ÆYÖ"20mK}ðíËâ¡~ŸU9ˆ”Óåb \ˆÐ°…N® dÁ¶³€„ð•óKøƒ˜° : !•S@B*¿¹ÐHšˆ€…â¹–Ú½þ¯ÿÃUO’¹öÒD‚Ê<…‚‰¼ÌÃòô3….x„]„#è0†¸" êAw1¾GhAŒªA á2, àÁFò0†@0 ñÁ–ÐÝç³K ÿaÖ†MxØ>fø”˜÷(à4N  £¡ `ô³ ˜·.ÃÐZ°K1Qµ.$ @>„À<àZ°LÐCN`~@;™–Lô‘I‡ð|à00t`>´ž·®¥*è`C ”®°Íâd4|@‹ ^ú‘Ž€ƒP„À°°J¤sq®à]Úå !@þZÀ\ÀGØ|€N Žð ~3”†ðK°TˆG@AÓò I_±wȈ…׆ W!ty¡"°Ð( †  ˆà€I(ðt“y[¨ -dÜ2z[€`~à<0_¦Lð ?wbŒà§”°à*pSh(7I@ð±å40‹éa†p‹Spðd@[À«@|0‹`à ²^•[`ϑߡ‰ñ _€f¶ã I`#GÀfdL*<À-tfrŽŠí¨ \À(€s‘’?´1(‘WÔþ\6‰p1S`ÀJà›§‰†ÐIG98°! ‚usÓ$§Q53´,’ÊÀ‘—a|6`7ð’Ñùt8MVôX+°Sà‹P3‹ØpÉÙè#ñ"–8†, `EQX¡ &œÈ*p,ðÐÂd‡°4«ðu_ ’Ç2 &#7‘yÉ3ˆ‰0#÷a5&?€ô°`ŠðÀ„2[@”‘&YlyàC@k9bQâ `à᳇PˆÐyЧ¼(Y]ðh:Xà6“÷ „«xUþ¨=pJˆ[Avg4ßè›K“«0Po˜*p*°0@F .`:† ` ˜4ð]* K`4`4@K@úbÔ¸ Y,¨—÷é3¡’zeb€!@ZQTQ&ƒ@µ¦Ä!U5du~Hò8ô`A?p!žç6=q*`6”Ütñò,g'â4IB4 yÐÑÙjC«à&ÀI÷æã9 ¦6VÓqÂ87ÂÐÃÀ„ˆ0€˜ÉE’Ú!.YÀ,•‹QÀu"=À?ÀáØŒ2oøi¦þgêD?&Pvz‚‰àl#!I9s« öémh •C9Ê@Ÿ²ftJ7‚w>$§*6hª¨‹Zkh i1Öhp¤xj/QŠ?”ʨ›Ê©xƒ0qÚb—  q —`ªga¥*ª­ sŽ?ZPˆøÁ`àJ[×—Äs°Àƒ0—(±ˆ×ªœ §Š> q •f`EàªÓšrÃà,ÑH 2÷‘‡TR#ä­§8¤gñ-Ђp ¨p>Pþ/ # €ªaÀ¯ !‚°¯« a ¥ °¨ú/@­'»2ÖÊ| 9ºÑ¦i1 ? +Ð]æy—4ð,°;[°.O1x=+¶Zâ¨QPhP¤LHÀeˆzWQž,ð! V´`°w¯À`ðW¾êK𴃵Sû t@´Œ²‰L@úFÃw a€„ò  A€ ` bÀ 6 q` v°à Ð €bðª0; ¨Ð¦ ôª `)@-P A6 #{ –`ªp  ª°R` -P% x`-þ¸‚@¡À Ÿ    /@¹  Pf€²Ë‹/Ê@ñ6ŽUj1 ZàòØg¦ <à€†@_à†„U¦¯×qBË4NÀ‡c7Üb®æP”‰šöJ@¤Á>J‡à¨éIðC€~x¿=à^5`ˆÀ„ÀÚÈZðwá¶ €F(AÐwЪÐT oÐa0w sð– ¼bð ’€%` s’¡K{  ¥P¡P `¤À  /š@ a`x𹫠š°¥Ú ¢ -ð p0uXp þ¥pm T .l  ’  ˜ð PÌkÇË”¶3ÕiFØI_v=>;L°dT cF@éÑU#!–ªðœ©Ç&YÃ’ŽP„`Ž$á‹ ³xÉ ¡±ñ(I*p½(y3è ATv—I(šÀ œ0°¹Û¤P—PÂ"« •`rð T  epq pT`wàÃfP ¬P /p`¨pps° T¹#!ºuüÃwÀ 0±)  ¡¦  Í’ð žà¯µûÌ) —€ }`w ÐÕ2 Š/ÛØ3åéðþÙImVÈáZŠ 4+FS`ÊåY@CYƒ£+‰¯°P"l›v‰ö` ¶C;ôR”ª ÈKÐ@E4Ód  Mûk ÉÇRv› ¦€ -p/&aÀ ¤@‚ð ªP%€’`u0 P` – ^Ì%`0 ’°©P6°—𜠭« xp¬ áP € ª6Ãqp˜€’`v aP Ÿ`P›ÐP] ÊГm,«Pý'/ú—}Ä>‰h´ÔcGÀN€‹ƒ€ó+aKàµç pB¡#GþÀŒ3‰€g+0ï¡2Q06Pâ¤PÂäGð¾&¡`°`;˜‡gd|Î pdð 4€å”–‹˜jw%‘tlg€30ëjq8,ëÓÞ>\0·ñÃðëÕ6=°í‘BdÀIŠ SðíÔŽîéÞ«?à0,‘5ê$ðèf! ® ©ë•Ðäl¯¬ú a º&!ððnðÑâþ«ZàI°Ópa¹9=p Ÿ<ÊiÖ® gh4½ŸŠ—,SÂ$€¥pÅpï;)° ª€¢ &_ pÏ R¹0Ѩp©Ð ôÆ2 Hð|…tG)s—o†°.ñ¤(à­ÊÐá¶m‰¶‡*Àã 4ð|ww¾²%jWõ8ç§ ²/Ã`‰wk—ôî Aðq¹•ð>°ïfà¬o ’  °ß¬° šp› BÌ xPÃzð6.Œ¤ ¡ %Q.ºB-÷mp –ÀÜNl²f  ô§_ ë‡CÀZBþé™âm˜G¾ÝQ%¥âN°¾„HãS0£!À<à ˆp!ae&P4À£´â4è: Rý ?€PøIõ¤ÙÆ¢  UP¤Ð %@ —°À u  ¨Prp ìlÎEÊXäIÃ(16 Ì9@ÂÒ,o:Õi£J U{úXR¥jS¦P•:îÙs‰9öIdžªJ¢lÀ)áé’©EÌtäÙÓçO A…%ZÔèQ¤I•.eÚÔéS¨Q¥N•ºêˆ…1IŽq¢ŠIWC(9p¤ ͪVõpÔUGKÐ0ã3J/þвÐcáH£ySLV[uõUXc•u©/Q† €…°êÚbijÒꈉG:R?‚ê ¯È# XÀ±3ž~ rVÀ6 láá'? Á'#ˆ¢£.áÉ'¶ì(ŠAXœ(IøD“0Ä E)6‘¤ŽQt2® OJ !UOàäRú(CŒÂðLÑ$•&Õ„Rþ2E IÚ0…” TIa‡äHA,î@Eåyƒzh¢‹6š§/á!Ú?dLÄ! Ù‚'z0Œ$ù 0Lð¢‘)`I„%h¸À§ùá‚CVyå¬kXÁ ”XE•«“ †)C8Öo'à! Ÿ²4„G¶P¥GXUYä‹/^Ye CîV¥'Vå’MÀ¤„;à bSv(¡“*tE*ª™„žHIá.‰ƒŠñæÐÃ8D©âPูPH‘BÚyz£…:ìЄ§‚?cKvHàŽâH¡>©#Œ*4ðü|þôÓW}¤¾(QÛWz`d D¢ 0þP& DúÿDô õ3Ë Áˆdõ€`:ÂF ÁF蟔ñ–öà\@„èç‡1lA ‡ÈÀ0|2Œ€=À[ÿ:($$üÀ>B O\¡…±( àTÍ€â0ðdR’â™Ð´J¼!(¶!bQÂP)ÀG‡S¤b­èª,$á^Jß0.À‡@B O¡ƒžpÁòºbº'¦Ñ(•°ƒ¤xE<æQ{dÊ*`Í¥OS0 Ÿ¢ 4$’'Ê0!ùHHFR’ìs[ ÝöŠ b©‘FQF&9éÉIÒþrLŠ$Þp&3Ìa˜0JâÐÊ&ú¤± e-myË¢ a 9TÅ L°7ž "GÄ!a™¢(ãÒÂ¥TÚ@…æ½aUD *X‘8È®™xIQ|p#erOÚ`â|® álf;ÝùN¦¼b~T‹—`‹U Êè‘2²¡aeáÉ*é“&) _PEÀ¬/’Ÿª†+XQʳ#ˆ<è ÑÐ#UÜeIjAC#‡.(ГZ½‚ ‡7Ä!z¨C| ’0,àm0e4 ŸîƇµ(<âì#—XgâP‰Jh@OUÅJ` Lhàþ¡©¸j¨¦25Ã&âàƒ]â w0ÅK1K´Á§²ƒg]íúNW¢ !:c‚ÎX 8Ä aQÃa–Z› Ä´@„.b t˜Âá€-˜ÀKØÂD¯ ³[àa]ñŠÁ l| ¾p„,X³šBûƒÂ‡0`ÑØ/ä¡#8[ÐÂà ܵa<œE)8!†á¨BT8À'v ƒÀaNR„ Š­’ÀMš`Å&Ta Œ´áx(C°‡Q|‚¤J  heRHA:ë`ª|}‚ ð„ ËJ‰ô¡ŸHE FÑ‚Tô ¨þ¶zW g8’_Ðб1ÂC†À¡h@¢º¬" `pK`F˜ˆ'hñ¿‚ñzżPƒ ø~’ ˆc 4CãOÒ ðˆ¸À èÀ…Xå®h„!T°X¼ …ñR´8”@ JĈ‡"èanR…Pñ‰ „á) ‚|Ì«PPA• H ¼U¥v¤ P…0‡>Ô!ý™+@Né–Àr C RQœä — AXy‰JÄN4%„åp Ý}"ìÔp­m­ÃZ)C¹Ú\W,P—#tæ°ÂòJ±T‚}i“XÚ•þ! 1Œ<ØGW²œŠŒ­I „ø!†ð“m;a mrH›µÍb†Y „¶À‡C8p •%°L\bÝé‰xÓÙ\}H¶:2´@âOЫh›8Úª/˜C *Ø AXH¸ç°=¨¢ nî AX© I|"¬bDRÐ)3ÄÁ‚ ¥†WÊ[ç*¯àªMʽ¢ ‰PÂ#òð•|ª`(Ä*\±…1ÜMHï%ÐÉe«B 5XżhAž«øÂbG¸H° c´À Ô`ë€{¡‚W¼b |˜Â/×âŸÓa _øƒþü ŒU0²B ´@q€=lBEˆjŸ‚ØD¥" a€C¡:"tЍøúÜóî DÐópš(Áð@_H_|AÔçX™Ñ×á¨ØD@Ñüj¾Î :¥ûNì$Ÿ˜Ã…kýŠA,SçÓ‡Š+ ˜`\ŒÊœPšAÁ ðñ ,`-‚ H0!ø°„,˜à‹0þLðˆ ˆÈ'Û.í™ûB&p1!D0 àƒž€1@¶1˜8‚?p²ÌR7Š:d‚1ð‚Òp#xB°'øƒA ùs…UH„+i©¨„9HNØ<ð; ¸„Èþ„N@…­ …ت6€€& SÈ1`¥ °1Ø;À,ƒ=1p£"X€(O¸ÂÔ©uJX€ #žLƒLðOø1à„Ó›™ž (¯ M¨¹»¢$P'ð¤>>d ë»>X ø‚ §X…üÑp:.x…Ó‚:@†DJ$ep4pW0¡ýA‚F¼ŒH‚Lz. ƒa€L䢊ÂDßzDMì-0‚ÁÊ:G”Džx…)0ÅýɃ?º 4ðò‘â"Ïу ¸#ŸØ‰›`…Lp¾¤PÆ£0)hž@Fiä‰K9K‚ðªZsDþP„$Äë#(?‚…FJÇLR†{jÇ{Z¤xܨy’z|…z¼'zÓÇjOzGzôÇŽÈ‚F›Žø ÆHÈŽXHFà ‡„ÈÚ(F˜È/©Èoó‘‚ÌHX(HyéÈF—¼ C$ƒ@ ÉŽ0I”T—–|ÉŽƒ@`&U IfŠE„q ©ìI ˆòƒ“Ê“l$¢ „Fâ‚£<‘ 0G@Äžû¹¤ˆ‚- î;ŸUÈ€D˜ÀY˜!< à„ߘàp L¨NÈ {…¸3‚Êë U@ØÃ¼t€E#U`@LÁôb/à ILþµ@ÄÄ’DD,¹¾aR ÊœLX¼U¸¾ÅûÎìЀ‡Œx„ŒäÒKÔÔ‘ŽXMžpMUp…rDŽM(.»Í¼¾ØMdéˆÜL %¸>²N ËCÀ>CLN XNèžHNèTvèˆê¼Nê4£ž„ëëÎë)ïB‚ë㢧´K¨|(\zéCø¤$0ð1õ<ÇŽ@=$¨ÐCÂüÌÀ¼¾ZLžÌE€LÉlÌU†ëSËÝÌÌä‰ëÍÜMÏMÐKÐPÖT…¥ÍÖ¥B0ÑŽ@Ñ#Np‚Êg‹QgKþ©r'H qýŠíˆ@œsQ… Ý‚! Òë01,ùCø–†ê‚#€»’Ò%1‚#8‚%ñƒ,EÊ,),=‚F-POA¼FÈÙ@ƒ)Ø$6‚`¤(á* ƒJ¤¬lLŒOŸ„­ÒT¨ƒ>•4@uóR…·ŠkìˆK¨ƒ™bTh„Š0©rŠŠRHW¡ƒ »ÄË<„­èX yá[ )D wAz—þá‰û)iUµ@D ËU@$ KUÀU6¢Õ^EÕ·ðÕ .¢Ÿ(Ö\å úÑÕ)HÖ/ùDÈHe€Ö(¡(#à‚`T.ÀÖÚÖvþôVPÝÖF‚q}. sÍ͉‚Rä v}φjW ùÃë['8$˜Ó™‚$è͆¼èI­cP¢@‚Ð €/ˆSž˜·E RG2,(Ô¥ÐÑû M@…Q0Ÿ: N øHCê‹ÄÚ4R‹FØE¯íˆaàƒ´à×@`2PCðÒz‹ÁKе̰€Fà‚$„D@ HþB€¨ž8„@C@„AЂ$¨‹?xÿ5„(a²‘"š7°ƒ(ƒ H;(9xƒP(RpP¸ƒ£“;)RH”,&… £‚üòR…„éM8óQTà„Ž¨A(Ny™T@]Uø„Ðó‰…o‚]Oà*<lŠ4V¸ã„”Ðä¢X®’8ð¡àÆ„îãP ]ž 89MèÜ:“Â&ÂA`,„àAØU…*p¯Ÿ¸OÝÀSèƒÙíƒ7ÀNjU°)Ð@ðA`cŸÐƒâ=^Ÿ.N(Vxƒ"¸¯O ‚L˜ƒQ°ƒ¡’9È 3è„0…æ3ƒO¨êéƒ ¨ƒR`…PðOH2`1°ë°ˆ¾æ‰2ø„O Ãþd.lWɵFÐéI‹×¢!C‘axý‰¥BB ЂB/Hx›EÈ8.°€Gàƒ$øX˜g¨]$ yy›²À»A‚òœjr´SNTÈ䘹ƒ•S€Û*°¶N¨‚8…°^îW’ƒà VÎ 3FãŽ(…L#=àST ‚8Ø€V«60ƒLHeLØM1 ÆЄOX\¡.ƒ€´°º·K‚ ã§†ä OƒNÐð«Æêˆ@˜BN3¨9ð&J1èÓŒ…«ƒ„ã  "ª)XîUê€4¬‚ÜQ n€kþ>Ã~qXy­,HD/ˆ¾GPC˜,  hÛ‚%葎ܢ׀ ƒ(¨Ö‚¢¸/Éle „‡¤Ë)ð/âƒÈ#€…% „5‚‚<‚aÈŠ!ý Fø&h:À$`)X„qÍòœMØÁ7€,…<» NÀ‚œ±ó ƒˆï‹1ƒB×ð*A胳´„O0“ŽØ’m€7X«O‚=I˜ÙA…JhƒP°ïð‰Kè;RõJ0<è;¸¸R°ƒùè18O;cSŠ0Ø;¨TQè< kMèg´ú¨è•É;8e9x%ôM€‹þ…7ЃðX<¨„L ‚|ck9hv¶N€f¹‚¨‚Jø;P"÷Vù‚G€$Ø BàrCXàƒ-Ø‚,„#H‚D¸€)XfCø‚«B°áéä $x.ï>Èóë $p>ø‚ý9BЂÂÊׂ(ðèÊ Pî‚Êæ‰ >Dx>P„)>H-ð’LÏ™ƒx”P½"@…=´*¨‚ ¢Jà)X€ÜXz)°ƒÜ S@…9¸ôžÐ£¯@÷„£Ï6@)P÷Žˆƒ£‡€ý {Y¯¨=ÐAð„IÖ@ˆú7)xC%w÷‰þ¶tË*€€Œ5Ã?/ŸIÆ„ ð„¨Ÿž(‚6nm,…=Ø* ؃ÀXî¨I`|;ˆÃˆz¯z* 4xo}1Q†CÐ.pÓžXu= h»S¤ÈJWP×(M.È–w9f¦ C’#€ÕôÙÆžxÔç'mÔƒ *t(Ñ¢F"½ šK‘d«ÇE?y†Yä’Ç%$®’‚ +v,Ù²fÏ¢½Å“FÀði4PI¢Š¯Ê`BÕ0#M!S‚k0iYª¼¤Jñ@Æ‹GŽt¼XòãK*cάy3gÌ\²Ð¢ÌÕUFJ[“ÇÏC4[ ¯ê1ˆÅÀUtþüyUðÏ¢?Sh¬2BˆÑ«UQþÐÉÂÅv¥•ý¥U`ÜvÖ6’ÜÏÎ$K²°VåÊ÷*èh¸LøÊH§\ÊšÁ²£”‚ö¨’ä)Tƒ0ô=™"H%o"†)a¨B šH‰) ˆŠpÔÑ™þ…b˜¡†-¹’ˆ|8À†¨r„ªb‹ü Šk H¤LI¨pÈBùᘶ…$^Xðˆ!~ ˆލò„$€F<Ò…_ÀBP)®H†¬„taˆ#C Ä#ÂÂ*«$ÀXf@ ‡AÔqÀ‚G&)l’À–$0Š¢‘B'odR‰%´A * ¤Æ¢ˆaɆ§¢šªª™}q&  ‰ˆhÁ°ðˆ‹¯ÕØÈ‰ª @zF¬PÐ*Œ$áÀÁò,ʬò…!h°Å*®0†*¯ðCäÁþÃ!~¢„AI\K"¨ÂGºI0bÂʰ`›,¸À[d€ˆ"| ± ŒŒ…Å(œ hÉu¼ÐG(%À!Æ'¢\Ò—¼! *¤€‡ ŒR†*6„²‡’ìŠ@uPaƒ«Â³Ì3óôE ÊÀ¥Ä‰HœhˆaG°ûâ@LШ ´whd¡…täQî@&°;ÙòÀ à ‡ŠòUAI@iÂ!ª6‰œ!=°‚2 A!d@ƒnÃ`'V*~¡p•°bG v@ª´`cš`±À(sÄq€ÈT”|rÊ—Ì!G&Ѻ裓ÑZ±E ƒ,þÂDNÀbÈF8¡‚t[ððU|ˆ¼‚Ç VÀDÀê嶸‚$ü—ªP_´#¸BN ÃNü`ˆ¶ ‰hÄ*†a‚EìE?@+¢r>âyp€’ðˆï £ ¯eÁ"Ád? <@#¢° ¼Ö¤Æ+œpU ¤_X¾ ŠA8a+ Àð0È 1®Î"T ‚G HˆÝ ¢@þ<"úc„LÒ ƒ:(\ SbC}Y/¬+Zàƒz†1bU¼:)âA—´ÐÐa º@Óô§…ÜøÏ8ѨÐ!UV…‘!:Œ/8"½®`‚@> à‹È€2^áŠ#TùG@Ã#ö¼ª" N`„–¡ «*NLpqÔ³ª Á U,”¨Š§{ †Øêöžï ˆp@zp¢j«‚Úû­B¢Œx›¦Þ8O:ôãcQF-»@:Ñ¡<«ð²°ˆÒ0aLX„¹´°…aÜoiÀTÅ!¡Œ‡®ÀQƒŽ‰ý2h! Œ@aTLã$þ³@ tÀJèpí[!b`°‘{° ̾"‹ªp­“ -`Àh î0”€F,"`=È@ ÚC†/`… ´Ò¸…“³‹ L80Šå„ˆûÁbi®FÞƒG¬ÂÈ‚&Þˆ@€a t¸4+òÏ¿d ¬½Y^ш.ø!†è X@ˆEh[yé!¢‚E ïA1'$"ßÀw"2E%àîæÈ ŽàŒ! U^UE8 4ªhšB@‡°Jd0Ä›§`/P¥«I¸þwó¥átq!ðt˃Ghá IøÁ”ÆÄ$$ë-,8ÁWÜÐþ, ˜€ ÂÀžAÝ4€A0 Ðéi LÀ‚ ÀÎ’Å*,– B¼<4…+dÁ  _€G5Õˆ+`Õ)CøÁ+DÁ+¨ P¹Ò3ñ Õ¹ÂhDA| ÂðÒ0¡m Bʩ º`“œT "tIp”à=Á#ÐAG.ÞL,€þ×@!A˜!,¸Â ,ž+¼‚Ná!òáJ(ÃhÁPõá º„Ûâ!n!â"2b#:¢È¡à|ÅM•EOVA¨FÀ!,NeÁ3=b(¦EЇQÇ\D¹ˆ øWEÁHþW„@ Bxà„+Ð Ï©¼Â¬‹¶ü!„\D4™O  Àœ[É *-D9‚tÁœ)™öõÓ0Šb6šÓA<þ˜@<­ÇÁ:eÁ!P–çÕÆC´à—Õ†±€¡ç•ã“<Âk¹Ó:µ#ºãAÔ€!¬@fÈ0È›ì  qtQd`ìÄ0¡@(Aí¦vGS$Rñ@ìa¤ŸÕ`NÁ‚BšXU!ÈànLÏðÁN=ÁøA2A{Ü`QùãòüED{ /éàNL]q¼R<Ä+l6:â(#ð€#DÁ }ÏÌNê@Àb þð@ŒA3¦[#(‚"”å,ü@ðÀ÷ÐAW:BS°ÀXr*‚( hÁ*„ÀÈ‘G5\@¸,¾¥x,"üÀ+„€#ü€"˜bAÈʇaHFYàT‰êÀÂ9A‘!€w AîmüÀŠ @_„#Ü –)Ü \À¹X"xßø"ülj„ X€@ d@" Ï"hAlpø˜PÅ* ÁÐ=™€LA",À€0qòAôÀquÁp"‚`MAðL €ÐýÀñÁ œ€[CØf4U Ârå"~K¬Ù ¼‘’þÆØ !|2(ÃU ¤ÝU[Âj¤!¨,å}O¨À ‘È ÀpÔÀÙ,¶Óxc#ÐÀqŠÁ¶€Ð@ˆ((C|B 4‚\€ù—+Ô@”g¸Ñ”,4œ¤‡+0`Ç 8b:‚”2 ü0!(C Â,†€¬À#A#CöÀ+Ø ƒè7òÀJâѰªB±þÜ!`£@<)CYSå©Bòü¡ËЀÔð¨u‚b}i®¡À(Á ô€2„@ü"Э4j ©‚ ðÒkA¸5vƵ\@h¥ÝCÀt®IYKÙ•hÁ à xA—ÎAKÐe#œéˆàøŽTX˜Ÿ+TX ƒ+L(è˜’Ý Ð(Aï(Ã#02¸-µÄÊ*Èç+qÁ#¤Ú¶è]ªýaä D•‚´HX@LAßáÜ*€*|KêtÁo.A#lÔñŒ#ø¼\æÕb¾‘þDA@ Ì™þEcL†ÀªÕZލ€Œß„ÀÌe’¡À©Â"ðŽ"ÌÆ"8 xAž)B#TlAÓÞZA$!°×*ðfì%"œ¾ª‚"tµ!Á*¯%Á Œ¸(Dı† Ã Äæ~ŒT:@ü€ÌHÉeÀ¡òEkY/a¥Á‚Á2Â#°˜.¡ÐÀôÖgN,¨@Ó)Ãd!L-°DO"TU ½Ž#d<‚ŸÑ“HW°­*¸(G[:Á8 [€"|…¼çVHi$¨z:À€²‚!d€œæ\d€ü!°[-dòoþÿÀ¨kä ÂÈ ª Ú ¸ "äriøA#Œh±F’#°À• ‚ õ(AüA ˸ à‹A<ì °TÙf^Ø nˆ©Sb@²È2hó0K—~šEe±3Dð›D@fÝÔ0ÏóDô@  cEè•ZDÀHDÕ¥2#>i T~ÁôA$ëCK´Pè Xê“ÊMtFk4gÄ0 †€¢@4øºb…2øw¼B€ø 6,0E#ö b/T/È C,¨/àøÄ3P€¨Âà‚3X6PŽ HPÀ ˆöÀ(DÂ<À-àÀÈÂÌÂ,DÀ P€,0u <ÀÄœÁ ÌÈ`A€@+üÜ‚ ¨Â-P.@Áh910ƒ—#p@\ÁØB3Ü à€<ÀÈ‚1œÁpÐÌÂ2ÜÂ- ÃÀ@—Ç€@¸€S ,,Áþ B“í@|ÁÁ#¤°Ž!4§!Tç٠ĵ‘‰ŒÌ—ômg>Ø. ðØ A ŠÇ#X@± ·=Xo¨ñNÉÙà›˜ BñA”sls…«ÂvAK^Í|„{‘Xn‚àŸðò@8­@;åw%#©fÚ¾8ÎøÂ$P€ ¬*ø‚.¨Â<€1ØB+9.õ-ü‚@4\µ/x@AœÁ,€,à€ä%TÀ `ÀLB.ˆÁÀ€*@‚ðB@1Œ.Ã)8yAÈÀs« €°ÁfãÂ<Äþ@/D‚T @/ì (à‚.T@CL5 L@Ô‚ØB$Ì-ÔBˆ@-4*x_@Ò€7±A ”¯6û‡Òì$|”[Â`‹«¦¡¥îØé ˜dÜ{{™€!äð €°"DAnò+è8U¼‚#Ìi—8Á[>øhA “Á!¤ÒˆÄx!€AÔ|.3çpè„ Y¬BªNÁp›7ƒpÁ|%ûnéÛ>æ0"`Ù;ÿ;2C$ 0€ \<0\<%5ู@x€-2@XvhÄœ2è‚0\v-ü|Ž;õx4þàÂÌ«ÜÀ @´ZÆ(ÅPu!Y#ª*& ÂÁ[¸TPælÍ© MúpP®¿(ƒÃ± l&£à؃z1¢jÆ™†;yöôùSÕ $K¢|uDÑÁ#Z-2¢ ‘/‰ò¨Òbâ ,G[¡9Ôe•–~u9’DÕ˜#_Èh³…–C!TÑ¡‘dÈ0W®@´¥Q†`Uåqðç  >Ã:i¤ÊI)[Ž 9¸*¢†`,l„b ¡FØ$q€• ¡ÿp­¡ì3šFG^øB—C`2 tdÑ¡Cü¬ò³Å„+ Ë™7wþztéÓ©W·þ~{vé³"͸Õë„-6È~=¡äìI/fª0àr†0دƒ2[µêÉÎÆTåØÐ¤ J‚)$¿H8hÈRCd( ¥§3dù¡‡š8ˆYò[…–h †Žfy¢!(d ¡ÏŠgr¹¢%`Ф–¨ÁaUd¨F;è˜ D‰WòXË•)a¡På D†ðb5 AdevÒB‘W¶ÃC¸ÈÀ‚WÔúB‰ ¦\Â)†XÁ‰%Ð*:üð+€F´lW†p€ŒWTiR‰"`â•GÈ8¨‡$TPf0ÆŠB'¢ £,$ Y‚‹#¢Ã 4¢ ¤‹Aþüà©‘D\YâAXA¿vÓ‚‘@jð‚Œ,†ÈÂBÈX%È`…–Øb=YêfÑ%–_NÀa]p‘ˆ5já` !¨€’^`ˆ@ r‘ ™…€Xv2æ”8à'~9%¤¡·U@˜^F d€á„_z‰‡ÔX¦Ût‚fq™œá‰Ifá7 U`† 9¥ "60æ kàzc F!z¡äYŠQ¥‚ ’åi•)¢‹/2 aÌCxÐb U–D‹ `Q¥‡CÜÚ) ¾"ƒ/9äˆ ´@¤‹1TèDz8b80Éغ28"ƒþü@Ó$Ž&„.´äQ:ä2Áˆ .XA ’‹-ŠÊª ¦»@bŒùâ.¬Ö¢†ƒ"Ws'e–PSè¨ ¿Š-GzøÂ•ÐMF”ÛöØeŸöÚ§{‚YN ¢BØ(æŒ܈àŠ"x⯀¢؈ pR@àw*¤x`zTåŒb®€$+"À ¿Ø ®8ã 6 ¨€‚b( `ûË pþxUÂgƒ Ò  ùÁd€ƒ¨BAû05ø®ÿ{ž06¨Â À¸AòŒZØÎ'‚jHŸF(©å¬B„?qÅÓzâŠ9='…?YÚæþ……¹árbȽh „Aâ‰XÄè\¡kЉRˆ\«@`âN‚á‚)^Q;/Äâ¹ØE/~ŒÑqÂXF3žiTãc‚+ÔÏWÞAš÷œ æ§9g˜#t”‡Gèlo ðã5€ 6‘‰Tä"ƒ¤ø!¸Å$cP¤9"À…,(¤Š|ýt J±9ŸtC  È"a`”D4ÀH[Þ—¹ ãHÆB d<t‚<÷$8xFCš—¿†Ä`ÀB$TÑ„Sœà€˜1U¡†ÈDÞ½ ½Aä!9HòðØÌüþã±”À/  „fp|ÁÀ 0¶GgVdƺÄ&Z„ƒ”"aÐA@ƒZš‚$J‘ŠM”‚ªD*ð0=¨¢5Ãð°‰TÌA ˆƒ.YÚR—¾”=xÀNñ ZLB±è…*(‹cœBŠgÀ…Ô@\ìTO¨Æ:TɆC‘hp ‹ ÔB1Á)(À\4A] †*€±Lââc¸PtBä 0˜p!5p ²&1^< ·ÆŠQ l ³P…dÑ 0@7H,  (<à=Çjƒ D‰JBe‚ ú V´ þ ¤0E&RP†Œ¢T…*M|â š('HQ…"À¢8ÀæTT¦ÉUîrÏ8 \Ä@¸¸|d  U¬!ÅøÅ-¸wLýyÀ±BƒTq‚e6d­˜À@fpanPƒU !Ì  êæÀ€!| féÉC®p ¤ΊÁ/‚Œ€”¨Æ}o ]ÀàVÂEr¡ d4ƒx€ N1P@]g¸…¥‰BÙÃlU‘€\B 6B ð€Š¡ %ÐA%Š  )°¢ šhCfë‰;€âxÃÌ Š ì +eî–¹Üe!΂þOð@-N`]`ȇb†º@0TøÈGÁ€{RˆƒN!„ð‚z ö{EàÌ´XCey’΃<ƒ±ØÀƒ%0]@žÔ8HŒaÊf( ¸x€4úƒ‹ ƒÁØÀ/jQ‹ À.¥ÀB•ƒKD  -:ÁŠ=ì¡ •(ô RTÀ¡€Ãl±@ (—áT–„&lЂ0xÛÙÖv±Ö̆XP@@À~Qˆ5,”¨öp±Œ¼Ò‹q†ðí$Î(„166Ô‚MÀ@! ‹O6ï˜$t!Ò x¢†þ á éþv0l‘ƒb|@³è…¨ñ d·0Æp gLà¿(2L-áÄ‚ö>l"« ¢ØƒªP…K$rÅöP V˜¢ õ+JqtUd"EÄP!Š8ˆ!e8&~» TP!ÝöÚÙÞvè̸Xƒ4×p®œ §8ÀJJ¸šÀ…-„BÀà85BâH Ú“‘ IF0/wûˆ¨…È6ðZLàá®.ü¼“VP`œTC/„AÄÇàZ½ð€* 1³5PC0za€ àðc[á‚XäÀý’Åz"P %Kuøþ„Õkü‰L˜"ÆEE&ö ‰_· –ª(*2QŠ*c!{ÐCZ,4Ýn—ÿüéOG P@¸Œr "Ôp9ðk‰vâ ®!):X„®]êç':¦!0€Îôé'Ð'š•Vafv° ¢¨à€úôÀ ¨'ª !Ô®þZÐå Í­¸è rÅfŒè œÁ‘åÚBæPð‹ÐÔ`‘ ›Ð ×Ñö €Ô©" Â9 €Ñ¾è zä ¢g9à&@È´£| ^@ôö@>jLA Š'^ ò° T òp¥êþ «®'ô ®Í Ê€¯­Àní ‚ bì' àÂPŸP0„a¬‚ €8°¼0©9œ»z"6; A–0:D€@`Îi'>`,YˆÐ DAצàBî@R€ æà>a2!z!é2Šl@8AL¡ T°!@ FÁ6Á4LAv  ¤öPPáŠ' Ê`'4Þ€:ˆpR‘–y*K¬€§œ šà脊Bž€ÅÖ pà“B p@nà ^±!#Ä'¨ŠG®`ŸþpÀ€$‰ÏŒ!#¯€GTGŽG@ãT!™fà ~GhÁ dÁÔà&è 8(zÎ Na'×)'“©œå¦Ã 4aRÁ ¸12áÖ4Áö€Þ`RÁöÀ ^ ì` ªàƒ€ PÁú@öàǨ ê€ð  'æ "ìPª þz¢ ð`VÊ éUÁ H!£æÀ´Š­ì UÁ¤  ª a¥ÞÀlKí*!HþKKHA ÐT v *aÙ4¡¼ì@ä`6© ì Ú@@ ü1835æŠ "ad` T¡Z®«0 ¨ "hÎ@n"~!‡DN¡TKB Ô€'æífbÀxž€F šnVNî Ö  afá˜á @r@\ ¬`@ °Š `paD „€ÔŠa"À[jaŠï„€Aâ âZÊ F!ì ì@Ì þÀ‚ Žñ,¤<¡ àI;1|lT¡RáF]3vàı!ÐTËÌ@ àÚ ÌÒ| Ä`¨r!`ó 2A ô >-¡J¡ÈºÒà | Ì€F î gI¨@5ÕnÁˆ;ž€ `ôÍ(dØÌ»â Îä •zbnÁVOЀJÍ'æ‚B"F`æT±® $6ÀÏ$ànAqà `@|!c0 Öàd„@gŠ! `žÁFZ!ja O!Pw¦ @p¡™DA‚@þaëà6DVð@ (6l1¶Tacãàª@t€$ÁîÀè €Ê*á´ÖTÄÀޱbû Èô 2ÊÊ$Á:@(S¤ Ìà.aàÖ^ ~PÐ4þB3Oõ KÁZ@µ HÀ@Ë^@ذ·>Aú±ú@ÈVD!Î6m×Vl |A! â öônkø‹f!fë¤AàÔM~ ˆA'"¼"‚àˆ@ò“™®€±ÈH#Ô€ZUá6@ƒ2ò –˜ˆ@Ãt)o8€ ìE`€ @@`€ (H—n€úþ‹œXÒ@Ž{DdAðÕ„@‚&@fl.ˆÁ„!ˆ¡ðŒ…à Ô­~b 8:*ABA`B¡Þ2Áî@ æàªÀRàêFô@V™8Áv  Žî X *A àD¡£J AhÍ‚ÑLáIàR@ú  ôÀ° ¨ Ê €â¯Pa¡~I¡>¡T!J¡ú@Í F¡>Ê ½Nö¬.¨  HÁR¡Ê ºv žììH >ášM ð€œEÁêÖ†+úŠ˜všà bÁ=À-Äþd0$¯Np˜€`N`4šÐ¢ ’a(à|á]pOhòváp1¬v!Fà’$ Â„€˜AfD€òxaZá bF x#s‡œadÁFTÁ8@ `À¬@"ÁfÁ°Ir‡`à«­!¬ r :Ê@ìPÁê æ@^@4a tˆ’üV! €hÇ·¼ÁÀLœËbŽ€‚ ¡*Ta62@˜@ Va ÞÜ„þ&ò€ øà. TÁàf4Ax` º@3hà L § h U2` ´<Ì#Ýí¾` ÀœË  øà)ÂT@V¡ ’€TᔡN} ÁTÀ†Àœàà ü`~` !áx@¶`U! º  X`–àEÒŸ}í¸À!  ý, Â ÚÑ€.à \ N=N} T”c AKÁ)T!!Å–` PÀ ˆ] , ^AP^ !Û¡Ýà½ìÎó`‡¸~€˜€1á1T¸†1V¡Ü³Ì âBÀ Aá¤|à),@¦ À ÐÁ@8†`ü@È€Ò|nP@3^ç·l ø`çù‚ ²@ rhœ.ÀWà¶~` é5#ÕQ€`Á¶àø€V€Tà–à4åè¡ðüè`ÚÜÒwžíu @%‡ ^\”`'è`Èàߣ\!Ð ò@ ¸@K0¾ŠB¦à” ²\¨(ð>Wü>²`V!îÛ^óuÉs´€Ú¾á7_ôËû2ôOõS_õWŸõ[ßõ_ö¡= ;libjibx-java-1.1.6a/docs/tutorial/images/mapping-abstract.gif0000644000175000017500000015022610350117650024071 0ustar moellermoellerGIF89a:¦ç»ÿ """%%%€ÿÿ000222‡ÿ333€€ÿ‰777999""ÿŽ???‡‡@@@‰‰‘""DDDHHH22ÿ33ÿJJJKKK€‘"‘š33RRRUUU‰XXXDDÿ\\\HHÿš3šKKÿŽ```¢DDPPÿ"‘"¤HHdddfff¦KKUUÿhhhXXÿ¢D¢YYÿ[[ÿ¤H¤\\ÿ«UU3š3ppp¦K¦qqq¬XX``ÿ®[[ddÿffÿwww°``«U«¬X¬{{{D¢D}}}®[®³ff´ffH¤HqqÿK¦K°`°………³f³wwÿ´f´U«Uˆˆˆ{{ÿX¬XŠŠŠ¼ww[®[\¯\¾{{`°`……ÿ¼w¼f³ff´fˆˆÿ–––¾{¾ŠŠÿÃ……™™™Äˆˆÿq¹qw¼wÈĈĖ–ÿ£££¤¤¤™™ÿÌ––ÈÈÍ™™…Ã…ªªªˆÄˆÌ–Ì££ÿ¤¤ÿ͙ͯ¯¯È±±±Ò££ªªÿ–Ì–Ò£ÒÕªª™Í™¯¯ÿ±±ÿ»»»Ø¯¯ÕªÕÙ±±£Ò£¿¿¿Ø¯ØÙ±Ù»»ÿªÕªÞ»»¿¿ÿ¯Ø¯±Ù±à¿¿Þ»ÞÌÌÌà¿àÏÏϻ޻ÌÌÿ¿à¿æÌÌÏÏÿèÏÏæÌæèÏèÌæÌÝÝÝÏèÏßßßÝÝÿïÝÝïÝïÝïÝîîîîîÿ÷îî÷î÷î÷îÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!þCreated with The GIMP,:¦þw H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cÊœI3æ¨W)GM5±§ÏŸ@ƒ J´¨Ñ£H“*]Ê´éAPA¨µkˆQ A4Ù5 ĨžQA4y¥ @Œ:8 Ĩ]M^ bTûxóêÝË·¯ß¿€ L¸°áÈ'£Il½jòŠ!ˆ&»^5yÕ@Ç ÌI8 É®WM^|ÕäÕ.“¾jòJ±íÛ¸sëÞÍ»·ïßÀû˜$P€I¶&Ù²5ɘ&‚ÎifB“]¶&-Ÿd LAçþ43é•A“æðJàǯvfR¬IË'ÙÓDÐ.[“Ø2 `LòŠ-“Ø"Ð޽²‹-“ØF‚gá…f¨á†vX“ÔÄ»LÀ$“0ÁŠ²Ë€0Mì2 (°â²Ë€0MÀ$Ù@»¨ @ 0JL ÀŽ2 “€À Ì1 “ì2Á*(0À(“°#‚ fçxæ©çž|öé矀*hCL‚²Ë$ € M ÂŒ"Mì2 ( ˆ@¨0£B0 APÍ1€-þMÃ.L²Ë$ € M Â$L² “4 “ÌÀ+) Â$"Ð*fíµØf«í¶Üvëí·à†+î¸{Æ$`¨Š À@På0Á@ 4±Ë$ À@PåÂ@ 4a“U 8ÖT»0É.“€"A5 “ìÀ$MÀ$*€0PLÀ@P‘«òÊ,·ìòË0Ç,³ËL29LŠ Ö@ 4±Ë$ À@a B0 A4‚ 71Ç.L²Ë$ À@PMÀ$»0‰@“0 T5À$ ÕÌt×m÷Ýxç­÷þÞL29LŠ U B»LŠ U B0É@`0I À$»LŠ Õ$L² “4 “ä0Á@M(0 Aµ÷ïÀ/üðÄë (ªŠ À@PÍÀ»Ì1@»LŠ Õ$¨ H4a` ˜9ì2 M$È»0É.“€"A5 “ØÀ°‹WL(Àv1Š4aTŠGÁ Zð‚Ì AÎrb“Š0¨ìBgQ€š°‹IETv1 h‚A8Ìa þsç° Lb“Š0¨L“ØEÎÒ„I`»hA`‹I` PÑ ÇHÆ2šñn£˜_½ È/£˜„A^1‰QœñŽxÌ£÷ز 8xIÈBò¿ËTT0 D:ò‘Œ¤$'IÉJZò’˜Ì¤&7ÉÉNzò“  ¥( ‚"ƒŒb A‘@N9ÊVºò•—T …( ,wÉË^îq<AN©&€@ §lÈ$láËf:ó™3{Àƒ €*ØE΂]@vñŠ œM8 L °p–9Ìasþ€¦>÷ÉÏmÙ¢ hÂ.š0€9€£TvÑ„€¡ ØE`‹&€@ PH†& `°r IL£è§JWÊÒ…LB xÅ.š‚]L“TvÑì¢ ØTvÑ*ivÑŒsP@"¨ ¥XÍ*KmÑ„8»˜F!¨ì¢ ØE@° (`*@ "&€`MÁ. 0Øb¯&¡ÕÂVŸ£  ä`sÁ‚ ` Àq À ˜,F¡€ÌAØÂ0ì M8þ¬lgëÌQ¼â.¯xECš[€´ ®p‡;A( ˜q—ËÜæ:÷¹ÐÝå)cf‹IØâ”/³Å$lqJ†¼E£Œ-&a‹SÂÌ“°Å)£Ë^2B%f£À$@ ‚—“ 2 €&DQQÙ(0 ¨ ½~Ù$^˜SÊ ¯pÌ^š‚kà޹ T¬€W8f“@v1†4ØÀ+3 [DøÆâz€ ØÅ(04 T° (PAÎ@l‚œe€&ìb ˜þš€ Ø…-@04á(B‘@š° Ù"˜F€ ì°0ì¢ š` (`sØ& À š° À$š° Ä9À0 @e£PÀЄ]Ø l »xEž'±‹&ìE»P2L`˜À.l MPÀ@Є]Ø À0€`»°€&€ &±‹&ìEsÀpLðmÙ¢ hÂ.š‚ 4»x… vÑ4asFÑ„Ì Å.þ "& MÀ$` äÀ Mš0€]¼B»hš‚ 4»Èl1l!,ÉÁl± L¢ ØE@0 b`H@  À`À+š‚ 49P€-æ€W옄 &!ºÛ}9€-v¡‚I*»x… vÑìbÄ(À0 b`ØÅÂr÷]@¥îMÁ.š‚]L‚vÑÔ=°ÀL  ØE`‹9à À$T0‰ÊOb Eå‡OüâÿøÈO¾ò—Ïüæ;ÿùоô§Oýê[ßî“P^þ± Ç€`ØÅ(T¨4»˜&Ñìb˜Ä. "&€`MÁ(04¡òM»Ð ° £@~ à 0 ° ÀC{°l•v× ° M¶0` M»0 0 Ž“ ÀC“° ÐÉ•»0 ä»` ¶0`° ¯°l•PwM»Ð ° ¶0`° Mu»0 ÀM“»<4 ÐÆ' ×÷†p‡r8‡tX‡vx‡Ög M0 “»  ° MMþ»00 M»00 »Ñ ° M» *¶PyM»Ð ° * »Ð à 0 ° *0¶ g•—0 a M»  0 Mð *Ѱ ¯ ° s£à 0  ` a »M|90£ ¶ P± * »Ð ° £Ð¯ 0 Mð *»0aQyM“ E»  ° £Ð¯ ° M»ð » ° s3Ð 0 ° *0¶ ¶M@|¯ 0 xx’(™’*¹’,Ù’Ð7 @þM“sРB0 »Ð s“£ 0 0[00*Py 0s 0M*4Ð 0 0¯ 0 Æg  (r 0Q 9 “pð 0л M“[ 0 M0 Èg  “0 0Y 0 BpJ0 £ 9|* 0cp 0s0 0 »0 g1»ð 0Ð Ð 0 0¯ À  0|`Ð.™Úþ¹ÜÙÞù|¹%M£ð Ñ 0 ¯€|M¶|¹e|¯0 Ê÷ “Pw¹ew“ð v÷ £Pw£` Å÷ “}¯0 Ä—[w7 ¯Pw“ð Ë÷ “ð »[w7 ¯Pw¯0 v7 ¶P|¯0 ßY¢&z¢(š¢Ù sPwP1É' 0*z£8š£:º£<Ú£>ú£»` “` §D‡¶0 ¶pJÍ÷ (2 vø (2 Èg “` §T}§´ (}¶0 ¶pJ@¦b:¦dê’£“*@‡£“*Ð|sv8 0 €|£“*P}P± þ Ð7 0  eÚ¨Žú¨É7 ¯PyMÐ× P¢ð ŽQ‡ð Žñ|PQ}MÆÉ¯àÃ× `wMÆwJ»Ð `|Můà»0 ¶°£Â:¬Äº¯ P  »Ð 0 Ð 00 0»` 9£Ð 0 Ð0»° 0€ 0Е 0»0 0Ð0° ¶Mð Ë&M° (  »` 0Ð 00 ¶ ``þ  0» 0»Ð»€"•wŽM0 0а 0¶MPy¶ `° M Mp Ðл` 0лð ˶ M° (² £ Ž¡M° M M“Ðg»Ð »° 0M M° ¶M° M° (² s0sP¬¬Ûº® ‡¶Ðл0 £Ñ Pw 0“ “Ð ° M90¶° *0 »Ð M»Ð þ  0“ % ¶0ð w×M0»ð ‚° MMа 9 ¶0°aQyM0s0 9 ¶0ð 0“ (‚0 `` `¯ÐM0Ç70 ¯ »ð ‚° MÑ ° M9 ¶0[Ë6 £Ñ ss0 PwP± 9 ¶0ð s•÷ ‚° M»Ð `wMu0 *0 »Ð0`£Ð ° M»Ð Pw9 ¶0ð •7 £ðºþ€È‚||“  ð »` Ñ Pw Ðu× ° Mw× M»Ð  Ð<4 w× ° M»0 䎓»<´ËVyM»0 0 ÀC“MPw¶0`»0 0 M»Ð p|¶0Ž»0 äÑ ° M<4 s¶0` Mu§sPwP± ÀC“ð ËVy£@~ ° Mv× Pw Ðw»Ð ° ““Ð ° M»Ð Pw ÀC“0|‚*0þÈ*½Ò‚l M0M0 Mð *Ѱ ¯° Ðu×° *90£ ¶° M»ð M»   С` a w× ° M»  ° MŽ“» ` qaQyM»00 *0¶ ¶MPw£Ð¯  ° s£Ð ° MÈ—“e »  ° MѰ **0¶ ¶pw£Ð¯  M»ð » v» ` a s•§ ° M»Ð° ¯ M»ð »þMpwP± M»00 M»  ° M»ð » ` a w÷  “ÀÒô]߬; ð0 1 g1M0 1 g¡p “° “p0 g¡0M0 »ð “pw 0s 0M*4Ð 0 0¯ 0 Æ× »ð ,0 1 0 ¯ 0M° 0s 0Ç'Ñ B 0Y 0 “p 0[ 0 w7 0 þ1 g1»` 01 0Y   “p|M*4£0 g11 g1M0 1 0Y 0 »0 g¡0“p° ¯ 0 wM`ß¾þëÃ: ¯`w¯0 Ä—[v÷ “`w¯0 ‘[Æ÷ “ |¹e|¯0 È× 0 ¯`w¯0 Å7 ¯Pw£` Õ—[Å—[v÷ “P|“ð v÷ £ s0¶P|¯0 Ê—[v÷ £`w¯0 Ê7 ¯Pw¹ew¯0 v÷ “ìÿð/¬P1?P1Ÿñ¿ñßñÿñ ò"?ò$_þò&ò(Ÿò*¿ò,ßò.ÿò0ó2?ó4_ó6ó8Ÿó:¿ó<ßó>ÿóß“PwM0 vדôJ¿ôL’ÐuM`wÐMõXŸõZ¿õ\ßõ^ÿõ`öb?öd_ör˜[fŸöjŸó 0 kÿöp¿ò“ð 1 0|MÐ× ð|“` qø‚ï’¯ ð »` 0 »`  M M° 0g1»° ¶00 0 л° 0 00 ¶M00ƒüÂO‡¶ÐÐu×* “‚þ0 `° Mv0 *À ° M»` » “Ð PwM»Ð ° 0“ “ ` s¯0 £0üþÿÿ±Kà@‚ Ä+¶¼h €`v5ADM@ìjb›€ØÄ®& vh2š&í@ÅAž=}þTèP¢EEšTéR¦M>…UêÔ©¶š h²«IŽ£š¼R`W»^ ÑD`»T€Ø•cÀ(¶šØõjW»T€Ø¢É@l ,BÁ$ª?†YòdÊ•-_ÆEetQSj1è)ºC ùL¨åŽ; ºCŠ‚$Lê)ºCŠ¥L¨EÓƒL1Á]jHžž$è)2¡M ºC ƒ$ä‰l è)ºCŠ¥L¨ES‚ ‘Â]¥¶Zk)«E `‘ÂÙåVâ)LbL1ˆ]L B6L ÂWî°a)î0ˆ]L b)Lb>‘bî0Ȉ0AŠ]\±î0¤Xa]¤XÁ„;j1¥dSºc—’u‘ÂÙå"¤0AŠ;L0A L°A ¾þ0Ȉ0áŽZˆÀYŠ]j!ç'MbLÑEŠL¸C)l0a]t‘ÂÙåŽ]J6"Lxr—;p–b]¤XÁ„;zr—ZˆÀYŠ]j1Ù”]îØ¥ä]t‘¹ƒ)Lb—;p–bl„/bã ~$g)v©…œŸ4AŠL0E)V0á]¤°Á„AvÑE Ld—;v)y ]V0’ ¹6yå—OJ—;V¸cSLàÄ•AºCФXÁ”/L¹CŠ]î‚tÙå Sv¹C îb—;¤HŠLù" tÄ„Z ºÃ q‡ì¢œØÅþ¤p)á&Øl  H˜ Oz’ALaN¸b»¸Ã q‡äI¹Ã 1€"p»¨'vq)°Áº¸ƒvÁèâRØ…V`Š/˜‚ 6Ð$Lp pƒ؅)LÀ W â'µ„ J6'í‚ 6Ð$LP ÇÙRh„ ˆ`6Ä8[ÁV`)Ä8³Á AHÁ¦Ø…)p¶SàÌ+€ÄV`)ì¢60L`ŠÚ`°Á q|i2¸ƒLaHÔÂ&‚ LáXW˜€6`Ã.l°HØ`f V WÜÁ60žz|iƒÀ™ V NàÌ+¸Â l þÔÂ&‚ a"Ø€ »p… ˆ`6<D0 ± HHAÚR… L ˜R¶3¬u… ˆ`6Ø`°Á  )H[ i0 LÀ†]¬€ »`ƒ Ê€3¬œÀ™ Vp…Ø@ ©… L 4ÂD°vá Álxj-VP â“ÅzÖµ¾u®wÝë_{ØÅ>v¯›¢:­…+û#ÖÂ:­…+ò#ÇÖÂ’ý‘cka Éš¢‘½ƒ\Q Æþh¥?Òé[ S¬ÔµÐ©)jöZ˜‚±?º)jÙ;HÁµ`ìtú#ÇÖþÂ+5E-tjŠZ – w {ìe?{Ú×Þö·Ç}îu¿û]< ¼þ쟉àïôº(~ò•¿|æ7ßùÏo,.:‹T¤¢xjõw1‹ë§B ³¸~*&{}^_ë:ÅE'pQýÆ^¥Õì,®Ÿ ^ÿ©¸è.ª¿‹ëï´ú™…ëK…]˜…ëKǺ>º¾ó[)\è\¨>”À ¤À ´À ÄÀ ÔÀ äÀôÀÈJè‚ §¢Ø@   °˜¬ ú˜ÀT`€N !,\ø€!$HÁÁ°Щ §Jè‚]øþØ©@   ]°X)\ :Щ ú˜ÀT`€N !øÀ:´Ã;ÄÃ<ÔÃ=ì„Yx*2 $ØCÈb€Y ƒD¤§ª¾•JAJÁÉ"Ð)2  d€YHÄÁêH\˜¨¾ÆJA",˜…DÜ2 ª>JÁ•JÁ•zø"Ð)2  d€YHÄB$Æb4ÆcDFœø€U `:Ø2ø  2   `€N`Ø@\¨@H2ø  2`Ø@]   `J  `2x*þø`Ø…Tø`2``°€]À° ƒY¸¾ë2Ø…ë# ‚] `X©Ô©¬Tø`2˜ IØ…Y@’LA  `€NÀ° \ `:Ø\ `:Ø2Ø…ë{*@@HÁ] ’¤]À° ƒ•JÁ]˜ IØ…Y¸ÈNØ2Ø…ëÛ2@`€! ’¤JÁ•JÁ•ª‚!`€Y˜ IØ…Y@’LA  `€NÀ° \ `:Ø\ `:Ø2Ø…ëKÆÒ4ÍÓDÍþcÄ2°2Ø…N`€GH:2 •¢ è„!è2 ] ¨ À…]‚NØ2  Ø2   è„!ÐÀ@`€YØ)2°:  Ø…Yx„]  @2`€]¨‚À@`9HÁ|*2°@ HHÁ•JAJÁ]˜…µÜ…Yx„] ¨‚À2 ]¨‚À2 ]  è„!è„*ø\Xx„T ƒ]èx„T ƒÇš:`€ë[©Ü…*ø\˜HÁ]¨‚À2 ]„ú¤§" :`€TØ…Ô©\þ©\) ˜ ƒ*ø\ Ø…*ø\ ذ€N‚N¨‚À@`€E`€GH:Ø…N`€GH:HÍ=åÓ>õÓ ì„ YØ\ °:2 •¢2X)2 ] ƒúÜ)2  Ø2  2 I’ì„"Ø2 ]H…!üHDèØ I’\„µ|*2 ]èèHÁ•JAJÁ]#Ý…T€ÕúÜ2 ]HÁ] Ø ƒ•¢\eJ °:Ø\ °:€¬N`€JÁ] oíHÁ]HÁ] Ø…YþX˧"Ø…N`€NØ…Ô©\©ˆT°°€!HÁ] Ø…Ü2 ] 2X)ðVJ °:Ø\ °:øÓ•eÙ–uYÀ2°2H2˜…!` Ø…YØ ƒ•"Ø…! *°€T\Ø2`€]˜2`€]  ÀÀ…"Ø2 ]‚Ø2 D¤N`€] ÀÀ#}*2 ]HHÁ•JAJÁÁ‚Ø2HÁØ…! ] Ø…! ] 2X©!°\ˆP ƒYØ…T ƒYþ€¬N`€JÁ] ÀÀHÁ] Ø…! ]#}*2 ]H…]HAJÁ•JAHÄN  Ø…! ] Ø…! ] 2X©!°\ˆP ƒYØ…T ƒYxÙöuß÷=ÆT ?`ø€*ˆN I  øˆN ɰ<@ è„]è’´€N ɰ@  øØ…Yø è„ú „°@ B Ð2 N`@˜…``€Np,2`€`€*Ø@  °@bH@  ¦TØ)2`þ€!´: ɰ@x’ü ¸ øˆYø ð@¨‚]H@¨‚Ç`„]b°„``€Nb ’ü „Ç"ø¨@  ¦Tb@bH ¨‚]¨P’ü „G ɰ€°€ ˜…``?`ø€*Ø…T`ø€*€ß`æaþÀN˜š…T`,ÁÔ©Yèš…TÁt¬YèÉLÇš…N¬T˜ Ì•LLÇš…NX©N˜ê„Y°ÀYèÆL¬K…Y¨@ÁþÔ)Át¬Yè„•ê„YЩN˜…?%è‚6èƒFè„Vè…fè†v臆舖艦芶è‹þS[˜[…Q8¿ŽÖºWÐQØ[˜[èèŒfé–vé—†i˜Póк9]˜PR€Iˆé¤Vê¥fjŠ€Wh‚&€¬&êhÌi€Wˆjš˜[hê±&ë²6ëÉ€ ؘ[0Ø…QP€ €&°š˜[€&xÝÐ h‚]Ð [€9ØPhh‚]hš]°P€þ˜ƒ]˜QP€ €&X©œˆ&ØÝX)[€I˜ƒ˜ƒ³æíÞöí¥nØ…&IA0Ø…W„]h˜°È]Ȱ…9€-Èéœ~ª[x…&€9…&Êé]Ȱ0€Wh‚ƒ&€W„]hX©œn¬&P˜„ Q0ègðwð‡ð lØ…&[0Ø…QP€Q€9P€&ب Øž„§Êé]˜˜„&]˜˜„&Êé]Èé]˜˜„&]h…WþX©œf,[€WX)Aˆð+Çò,×ò-/Í&€]P…&x€]PØ…&]P[Ø[ˆ3ènxªP€]˜…&]˜…&€]x…•Êé]ÈØ…9€QhØ…&P€]hX©œf¬&ÈxP€IàòTWõUgõV—¬I  €(€ P€Ø…&€EØ…WP˜Çz˜€h‚]hPÈ]˜š€]˜€EP€ €&Ø€9P€øð…9nQþØ©W€W0hWç÷~÷÷ðñЩIx…•h°0€•z…I¬Q°h…WX©W…Æ[`¬ñ¬h€'ù’7ù“7hAPP€9 Àœžƒ=l[@ùš·ù›Çùœ×ùçùž÷yÇzÝ…c´…I°…Ž~*Ý`@[˜[èèÆÒ èèÁzÝ…Ò§²…I°…Ž~*Ý`@[˜[èh Dû´Wûµgû¶wû·‡û¸—{ œ˜{ƘP§R`ÀQ€I,[Pò&Ø…œ¬9RxªQ€Ix*þ˜PR€IÈûÔWýÕgýÖwýׇýIxÈÊiØ€Wˆê§j@x…¨¬I€Q°…WØ…Žn¬œÞ©&Á€Wˆê§j@x…¨^©9]˜[€ýïÿðÿñ'·Pšˆjh‚QP€ €&ˆœ˜€]€ °h‚§ &±k”‚ š˜Ä€]¶@ ÐäÕ¤Œ“víj²+# ¨ØÕd lP0`Î. &a ÄM86Ù•‘#Ð]s&¢ 8Ú1@ŽF9¾šÄ+“86Ùþ•€Tìj2¶@(0g€°b€&›ìÊÈÑÖ€I»æ ˜ô0âÄŠ3nìø1äÈ’'S®lù2æÌš7sî¬ØV“MvÍ0ê•‚]¯íj‚£QŽM@ìj"‡[s¼ʱÉ0Mìz%hWM@Lh`W¶æØbÔ¨oŽMÌ`T“`š È1À¯š Ód@¶æx•ýþ+02r4Ê1‡¶ÌÀ+»ÅQ ØÒs\Â}M 0ŒÒÄ`41@د41M ƒ¶ÌÀ+÷íÒ„ @M2£¸x#Žþ9ê¸#=úø#A 9$‘Ey$’I*Iä$ €ðÊ.¶ ÐD`ì2ŠY‚À‘Q5Â.M•TR“d×»4Â.£d©T‚0 »€@&{hu_ ì2 “4Â.M\·Ë$LÒ»4až“ì8 »Xº‹Q–‚€ç$»e©Q»4Â+Z]zi ì2 “4Â.M\·Ë$LÒ»4až“œj©-¼rª ¨ð+²É*»,³Í:û,´ÑJ;-µÕZ{-¶Ùj»-·Ý6kK4±K `Ë.*(°K Xj”¥M°‹ ¨0€-–Úòk ìÒ»¨ Àþ.M€@%“°‹ Øbé"Û»ÌÀ(M€°K ä À.s0J ìÒ* `‹¥¶8; §e© Øb©-»e) ì¢s<ˆl ì2£4Â.M€ƒ»ÌÀ(M€°K ¨0€-–Ú‚l9\ú  Lâ-Úi«½6Ûm»ý6ÜqW; “@–6@–D‚¹ Œ2IR °…€À$¿*0À 0Gd9@M€0 s¼¢ 0 ³M 9ì¢Às(0À L0@»(0À °…€À$ÍÎ1 Ì1æ‚0Ê+ þG€`.£’”ÌÁl(@»(0À °… ÐÄ. 0‡l¡ 0ɯ¯ ðÊ¥`4!7(À°€< ²^ñŠe)ðT¯˜´ȬWLÂYMÁ(^±¬QØbY¯˜·^1 e)ðYMÁ(^±¬QØbY¯˜D²rÐÒ°†6¼!s¨Ce;¤–Qæ¶&Øâ‡F<"“¨Do)P[£Å£(Å)R±ŠV¼"³0 m‹^ü"Ã(Æ1Vk¯°Ô@°­':k¶ #ã(Ç9Ò1n¯^± [ `»À‚ŒB@v€þ*€@ì¢ IÁ. € »° `u<%*S©JUÚ¢ hÂ¥š K5h^!ˆ]4»hÂæÌ`sFa)£ì¢ C°‹IÀ ÈÁ.&1Œb•Þü&8ÙÄI(¯°”-ð KQ “À(Þ‚]4»˜X‚]L“°”QvÑì¢ ØÅ(04ÁR‚€ Ä)щR´¢p³EЄ]4!—¢&(`MÁ.š‚]Ì3Á.æ€QXÊ(»hvÑXJ*ƒ-^LÂþ¢F=*R“­Q€`xÅ¥ÐL!@–0Š&@ÈA ä`s¹@P€ÌA˜Ã+€¨ MP*^óªW¤æ  ÌRग़‚Q¼bMÁ(^ñ¬&À`À^#+Ùɪ² ¶ˆ–Qæ`)£ÌZ‚P0Ê’¶´¦=-jS«ÚÕŠñ‰´Å$lñÄfe[O´TF e‹IØâ‰ÎzEFF‘-[LÂOtVF°õÄ]d$Z¶˜„-žÈÚéFÖ(&4K À–Q,¥@k˜Tà¬9€` ÈÖ(0 ¨ÀRMPæ€,€[þFÙ…@­Q` PuÇI¼"[O< ^A¥f5Øz¢¥š‚hàT‚–Q´€WPisÀ(æÐd5Øzâ.šiàTš„-¬c/¾ À‚ìb ˜š€*ب  I¥ € ¶Á’2‡_@v1 LMÀ‚ì šð ­Xª »Èˆ-@ €a˜À.0&LPÁ.l ¶È&€Q€ XXª T`  MØ‚`MþØEFe‹`…¥Œ²‹Q(`hÂ.l ¶†]¼B+»hÂ.2² 0  ¶x&° L`M˜ [€@Ã.l‘L€I4!) ØE&¨`¶ÁÐÀ$vÑ„]dd˜ÃŽ3.E[4aMØE@0&`¯Ä.š‚& ``À(š0€9€£Ø…Q,Õ„€¡ ˜l‚ « C°‹WbMA@0&`9P€-æ€-<Y“€ F†]4»hš0€9€£˜þ1 0ä`¶Ø… &±  `*˜Ä.Œb©& ``@ `‹9à»Á&¡‚I0+°Å.T0 Ke¯Ä.š‚]L‚&AŒ »˜Ãƒe @£hvÑì¢ ˜ðb`ØE`‹]¨` À$T0 KeMÀÀ€Qä@¶˜^‚LB“@Ö$&‚Qh¼ýGœ„@ðŠ]P “À.Fñ&4»˜LB€À.LLÂ.…¥4ìB€À(À(@ K€À.4ìÂ(¼ P LìþàÉh²ØÀ€Á.4ìB€@€À.LL‚-€ ů€@œŠQXJ€À.L@žLÂ.€@<‹Q ‹QìÂ(¼ ì‚-€ ØÀ€Á.¼‚V( ˜K€À.4ìB€À.L À€Á.Å©€@üŠQìB€À.LLàÉ$€@0‹ € ¸Ÿ$î-4ÁPI€À$À.¨€ìB€@€À.ÌŒB€À.ÌŒÂ.…¥4ìB€À.(€ €- K€À.4ì‚ (À.4P Lì‚ €þ-XÊ<²ŒB¼‚ À.4ì‚ €@€À.Ì*¤Fª¤N*¥Vª¥^*¦fª¦bê+dÄ(4ª-L‚-<‘‡ÚÂ$ØÂ-KF\Ê%Ë+dÄ(œJF ‹-L‚-<чÚÂ$ØÂŠm*°«°+±Úé€À€@þ£ŽL¨€‡ŽL¨@²ØÂ›4¥E²Ì œŠ€²ŒL¨À‡ŽL¨À©(À$+½Ö«½Þk¦NÂ+P¨Q8*¼•|(¼•$Ë$À(ØÂ+XÊ-‹QœJ€@²À+P ˆÀ+PÉ¥ÌìÂ$ؾ†¬ÈŽ,ÉÂé+€€$•@Œ‚L4¥…¥ÀìL€-€À@ (ÀìÂ((À@À À.Ø 4Á+h…¥4Á.d(ÀìÂ((À@À À.Ø 4Á.4þÁ.d²ÌÁ€QìB$ì‚-€À@\ŠQìÂ+L@R€À.¼‚VìBìBFì(ÀŒ‚L4Á.À €-€À@XJìBFXŠ- À$ì À”¬íÞ.îæî.ØB @ìÂÀ(¼‚ìÂ+Â.4XŠQXJ€À.4䀨ÂÀ+üJ 4ÁìÂ+Â.44L@À.䀨ÂÀ<²4Á€A À.¼‚ ìB€@€À4ìB(€-̼³¼@F\ŠQìB(€-̼‚¥Å.ä€þØB€À.ÌÁƒ K 4Á¼‚ ìB€À.4L@@(€-̼B²4 \Ê$LŒ‚î1±¦N‚€À+ì‚- •€Á.ŒÂ›€€¥…¥4ìBžL¯4ìB€À.ŒÂ›€•€À$À.€žìV K€À.4ìÂ(¼ P LìàÉ$4Ë$À¯Å.€žL‚¥Å.Å.4ìÂ+h²4ìB€À(¼ ì•€À$àÉ$ ‹- À+œŠ € 1,Dz,/ª-4Á4Á.䀹ØÂ.¨€ìB€€¥…¥4þì‚ €€ €-XŠ-üJ€À.4ì‚ (À.4P Lì‚ €-XÊ<²4ìB€À.¨€ìB€•€À$À.¨ÀØ‚¥ØB³LüŠQì‚ €-XŠ-XŠQì(À.¨ìÂ<²4ìB€€ (À.4ì•€À$€ €-XŠ- KäÀ¥¼(À$Ì2LÇ´LËé(€À$䀥4dÉD˜ ŒÂ$$… À(€L¯(ÀÌ À4dÉ@€À$À¼‚À$0‹ À(ÀÌA@– þ@4LÌÁ+(€L³ÌÁÌÁ.̘ (‚À$̘ €AR(ÀÌA³(ÀÌ @@– À((@€À$À(€L¯¼Â¼Â¥€AÌ4m×¶m‹¨-‹Ê+L‚…*³¼Â$l¨1Ë+LBˆ¾Â$(‹q¨1Ë+LB²ä@ܶu_7vg·È6-h·w7x;ª(ˆÂ¥°+$ -Œ7+œÊx#K.ˆB.˜·…š÷.ÐÂx³³Œ÷©Œ·‡æ‚(ä‚yÿ -ÐBx¸xœæÂ ,øXŠø@²‚x€œÊ ø²þ°ˆ‚<…>ø.‚x€\J.ø@œÊ øÀ©œ€x(+P€(øÀüÊ ˆ‚縎߫(в¬pèø@ˆŠ°B.Ђ¥˜÷²<ø©¬$ Ь…š÷¥<ø¥TœÀ©¬œÊøÀ‡R-Tù©‚ˆB.lª›¿9œÇ¹œ‡(-øÀ ´‚œäÁ.¬Á x€¬P€xˆÀÀ.P äP P+¬Á x€¬ÀÀ.P ì‚P€xd‚x¬² PÀƒïÂPøÀ.ä‚x¬Á¥<ø.Ð Àºì-Œ÷þxïÂìÂxïÀø€°Â À¬Á.¬¬ûÀ¥<ø¥pÁPÀ€Ã¬ûÀ.Ð ÀúƒS€xˆB.ø€PÀ䂜äÁ.䂜äÁ.¬Á.Œ÷¥ä‚ˆÂ!xÀ!Ü©Á<Â'¼Â/<Ã7¼ÁçÂxÀì‚(P@%°BXÊøÀ¥ø€ˆÂˆÂøÀ.¬päÂ.<(ìÂø€¥¬ìÂø€¥ø€ˆÂÁ äÂ!P-ü -äŒ÷¥<ø.pÁ äÂ!P-Xʃïœ@.¬ìÂ!<øƒ#Ëø ¬ÐB%ìÂøÀ¥<ø¥<ø¥xþ-P@pÁ äÂøÀ.pÁ äÂøÀ.ø€ˆÂˆœ@.8T+äÁ.ˆT+䲬ÁXŠ(À€°‚Ãg¾æo>çw¾ç~²ˆÂ ø-ìB.øx@XÊøÀ¥øÀ\ÊøÀ.¬ÖÿÊø€¥¬ìÂø€¥øÀXŠÀ:¬‹²ˆüʃï‚?ˆ‚¥<ø.<ø.¬ì-»( K•û€(P+,ø øÀ¥<ø¥<¸¥°‚ø€<ÁƒïÂøÀ.<ø.¬ì‚¬Á¥øôg@ø à!Ï®\>(xȳ‹aÃ]¹<ÐjX‰Â‡1fÔ¸þ‘cGA†9’dI“'Q¦T¹’eK•¹ÖxXÃj ­'®¡°‹Ö.k®¡°ë‰.X1̵k …]´ÖPØõÄCk>ñ‹a.Œ¢(\ôác×¹æb8v—»žøØuhìXŒkÖøEáɉ]k|4Ûp,C¼¢ÖPðqb×»|œØõÄÇ.k>ñ‹!©5´žPØÅj ­'2®á–¢6Æ–=›vmÛ·qçÖ½›woß¿>œ8+„(À8Á…¡( <¬ñpÂCQÏOxøƒ‚ ¢v‰zîAÔó­ñpÂÇ.Z'(ø  êâ!|Úuȇþ>49(åüó!çNðàÙNXÃQ(‚‚Nð€•C|ðÏ8|ðÏV<àb.( â¹<8¤’çNð Nð!ZN À ¡†¸Ø… `8 Œhñ€†òXƒ¸'¡ŒRÊ)©¬ÒÊ+±„RZ¢…h¡Å!ZDqˆV 36ZDÙQ4 s·0w Ó¡0c£E”†D¡Å!QhɈ‹5ˆ+ÔÐCMTÑEmÔÑG!TÒáÖÈeÒK1ÍTÓM9íÔÓOA UÔQI-ÕÔSƒ{å•ßFÕWaUÖYi­57&ù íÕ×_ VØa‰-ÖØc‘þuh’WšàZm[’­ÖÚk±ÍVÛm¹Íöxe[˜d&„FQ`šØ@@vi@Ø&„]la€]`Žn!ŽXâ‰)®ØâDmib€&jB†ša‚&xE]ša—&˜ f`0…¡]wib0š`—I°„v™dF¹X饙nÚ駃D^aÈ–^a¨‰&@˜€Q„]ša—I`„]&`†vÝ¥ vi„]F`š`HT€ZðÁ /Üp§mib€&vi"‡†¶aþTP`—&@Ø¥ v™€@ØeFah×]ša—&@`HÀ°å˜äðÛqÏ]÷Ý}„=x¥!šaB ìFiÈ¡  ‡]æa€@(`€9`ŽW`Àh‚÷õÙoßý÷/Ê¡‰ØTm¨ Fye—&@åÚš[€ð3à˜@¥5Á¶ÙÕ²«9ÔF €æ @ nƒôàABŽp7§8Åod±‰MœÂ7·ØÄ-L¸:D…½¹Å&naÂÙ¨pX·ØÄ-LØ›[lâ&$ᑱ´à7}hAZà›S`-ØþCnÑ78$-pHZЛS`-ØÁl2Ђa›hÁzs l¢;HâñœMÈÂ7& ÎcYt¡ a„2à.´À!]ho BΦ -ˆMZ°›.´`#!wÑ…ìÆ² ä.6q‹<®’•²‘E 2`€  ØÅ)20tÁhv° d ØA `€0ÄZp‹4 ™}¸È-˜`€à Yâ.N‘  »¸E 2`7Ü¢0€v! ªp]Ø… „@²A2[° YŒ ™K4@ `€MÜ¢ 0@þnÑ‚ À »¸E 2`7ì¢ »P!FN‘  »èÂZ`€Ü¢0€vÑ… 4 ]hZÐlâºp &`8E2ЀtAóÜCº° v! hAvÑ´ ÉÁ. 0‚]Ü¢ 0@vÑ…]¨p}h@ZWÚ7·èBº°‹.´`]0À.dÁˆ]t¡]h@Ü`€St¡}pƒN±‹%2¤ pC° Ü¢LÀp‹]ì` Yâ.dÁˆ]t¡»Ø„q 7lÂŒ8…vч%.1# …ÜÀ„ Ü¢ -Øþ2p‹.´`-hÀ&v° &dà}0@! ÀˆS¸a›0#NáÙÈ‚»èB vÑ…ôÁ Ѓq 70¤ -hH °‰lBŒØEZÀ„Üb;ØÄ.ºÐ†ôa·-ÈHZà4`;èA vÑ…ì‚ ¸E Œlb-8…\Ql@047›È@ d± B¶`ØÅ)2ãt¡»Ø„6Ñ…ìbØÄ.–È.´`]hÁ) Ї t#KÄÈwqŠg »¸E Ð7Ü¢h€v! §bä hAv°Ä]t¡»Xâ.ºÐ‚]´  iA2“þ‰ nØÅ-Z`€¸A6§Ør vÑ…ìbˆD Ð70¤ -hH ºÐSly·éB " §f¤ -pH ºÀ.´`]hÁ.Zhl"#Œ0Àplaû € rs‹.4€]hÁ& °‹d`]hAZ°‹>à]hÁ.ú`€Sìb‰ éB vÑ…ì";pÃ-0„œ‚!·`Èw±ƒ ì¢ -ØÅ)º ‹à]Å °‹>4#„ÜD Ђ ìb-ØE 2°‹´`-èBCvЀ[0Ä]Å °‹StA;0€lv]t¡»èB vÑþ¢ ²ØÒìB»hA²ƒ ì¢ -`BNÁ[ì¢ Ø…,úÐàŒtÁ»CZІtÁ»ØA v±ƒÜ‚!·¸ˆ,ZM ›îu‡š €ðæ-@Z° ô¡ Èq’`€ € »è‚2`&ô¡ h@ N‘ô! PC Ѐ`ä#0@ °‰>´Àò-H‚rÜ``Â) 0‚ 0a6 `Â.˜` $3 è#’™¼ hCd‘´Àz0À2À„]œÂ#ÈdÓ丧è‚2`&œÂ#Ȳ‰þd6  È@ Ò丞ZÀ6a6!™`66!™`º 2 va’) d!   `. ºÀî@0+ÆTà_  ¥Ÿ¢ Zàd!º NAf£ àÜÀ4B6A#úé"6AbdA7úÉ!ú)6dabdÁ!6Ah£Ÿ.âd¡!6ABNA#úÉ!daBN¡6dá4¢Ÿ.B6ábÜð áÐ aL!QZ ú !ò°hƒ2À2 ˆ¥ ñ1q±Ãr `±-ñ115q9þ1'A$ràeA…NáoanÁ„å6áLh#T¨!L(#dA…NÁ!T#nanÁ„å6áLÈ!ú©‘1•qiCBáû  ñ `Z`å `Z`2ⶬ "3¢Z ZÀ!2 0â `Z`å `Z`"62 rÁ@@Q6Af#Ñd2¢ Z`7º Âd2b ànA„6"¢ Z # @)#º v£ ZÀ! @©!ú vana y²'}rXlAê0EþZ ’‰   N!FÀº€!ò! `vÁFàZ    0Â2`  vá2`   `  `n¡Àº@œŠ!º`TèZ  À v¡ 2 Z  ZÀZ  `n¡ÀºàZ    v¡ 2 Z  v¡ vA…0¢FÀòpº ™Z`n¡Àº !òpda’©vAœjº`Thn¡2ÀÜ  2 Z  v¡  À"¡Àº`n¡À) º€!º`Tˆ!n¡6aú úà'Õs=Ù8@àþ_0à_ÁPn¡   v¡ àd!vAaº "¢ Z`º ˜ n¡ @.¢ À º vAaº º F  `˜ n¡ @ ò01b €NÁ ¢ Z !Z 6a6 2àúÀ~ n¡ @v¡ Z€6dÁ @…"w 2àúÀd!òp˜ n¡ Z`ú`E[#6ÁáÜ`º ¢`v 2àúÀd 2àúÀd¡ Z 6º`bF N¡=5Q#šà_r`š`e2 danþ¡É vᶬ"¢ Z`º um.¢ Z`º vᶬ©6Áv¡t­œ #n¡  Ü€!º ¢º !Z@×D@×6aº jc à"òpZ@×6!òpòpº vAœ #n¡  Ü`º ¢º€!Z@×6¡tmº 6â@‚ ` e` ¶` ö`6a–7&á_&Àâ öº º`˜Àònav v¡ Z€!ò!ºÀvaZ`àâ.¢ Z`º va2`º ©6Ávaàþ¢Ä#N¡ da €!ºÀvAv¡º !v n!j n!naºÀvAfc à"òpv n!n!òpZ vaZ`ú@L1âº@vÀv¡ `d!Z  bàâv n!n¡ `d!#º€ BZ 6aa=÷sA7tEwt Ö`öZ`Á˜€!ºÀr¬ ,¯Na’)@ 2ÀZÀ6á"2 ú  ºÀr¬*  Z`  d!   `bã `2€ b’©º 2 Bþ2ÀZÀ !   `va’©d£FÀZ v¡ZÀòZ@2ÀZÀ6¡ZÀòZÀ ’) dã `2€ va’©v¡  Z`d!   `d!   @…’©0B@ º€8tx‡y¸‡}ø‡8ˆyþe„X6úi#úÉ!daj£ŸbC6¡66ABNa#daB6Á!dá€C6A#úé66ABNa#daB6¡!dá2‚ ºàˆõxù¸ýøõ¸ þ%¹ ùõ¸ n‘¹‘ù‘!97&á_&þÀYTèù6áLH#Lh6nanÁ„6B…„2BTèB…0â6áLH#Lˆ6nanÁ„¢Ÿ€ø—9˜…y˜‰¹˜}Ø`ŒY6ú  šyNÁ6¡v@#òp6NÁ6¡v #na˺€!ò0#ú  "Z#NÁ6¡v@#ò6NÁ6¡vÀ!2`¦9 z  º  :#@à_æÀ˜7Af#Úd4„¢ Z`# @)#6ÁNád!Lh#òÐ!º 2Âd4„¢ Z`# @©!ú vaná þ}ú§:¨…º6šà_r ˜e¡2 ™ɺà2`   "ÂF` `n¡Àº# FÀZ`N!FÀºÀFÀZ váZ    dÁ©¢ vA…n ` ຠ™Z`º  º`’©ºÀiT#ú` w¡ ’©váZ    "wAF ™Z`dÁ©v¡ vA…vá˜ÀFÀ’ ™Z€!º  º ™Z    v¡ vA…â`v¡ †zº©»º­[˜'á_&À†ùº º`úÀNA2`þdv¡ Z€!ò!º v¡ Z€ 2àúÀdá"º Ü  `dv¡ Z  Z`ºÀv 2àúÀÔ@L1‚ àva6!ò!º ¢  6adCÜÀT¨!òp˜ n¡ @"w 2ຠv¡Ä#˜ nav`v!¢ Z€!úÀú`F@#º`bF Nẵ|˹¼ËgÃ`ˆy2 dan¡É vᶬ"¢ Z`º um.¢ Z`º vᶬ©6Áv¡t­œ #òþ#ò!º "F ú`66Á."w¡tm"w!w¡ Z`dÁ©0"/"¢ Z !2`Z 2â@‚ `¼|؉½Ø§þeŒùº º`˜Àònav v¡ Z€!ò!ºÀvaZ`àâ.¢ Z`º va2`º ©6Ávaà¢Ä#˜ N!n!ò!ºÀvA hc à"òpv n!n!òpZ vaZ`ú@L1‚ àâv!¢ `daÜÀ2@#º€ BþZ 6ÁØ}þçÞ˜›à_T  O¡6 € ¢ Ç ZÀòZà6!™2 Ô    `." 2 ú  Ç º 6Áú@2ÀZÀ6!6na   `ú ,¯Na’©â  f£FÀZ v¡ZÀòZ@2ÀZÀ6¡ZÀòZÀ ’) dãFÀZÀ° ,¯Na6!™`nÁú #d¡d¡!Ü  ‚ù÷?ø…ø‰¿øbþElÁø7¢Ÿ6¢ŸB6¡6ú)6dajC6a#dá¢à€Cþ6A#úé6da6BN!ú n!#˜  ˜¿þíÿþñ?ÿ‰ßà_FAÿb—À <ˆ0¡Â… wõiÑ¢OÉ+&ì±ÏÁ.·,zü2¤È‘$Kš<‰2¥Ê ³2¦Ì™4kÚ¼‰3§Î<{ælâR…O²6m:5ôÖ¦[§N¡¼µéVÓ„F6=(Ëè©‚F ÞÚt«)Ê[›n5%(KÖеlÛº}›s’K¶à.ìÓ¢A‹¡§ lj±å)›Zì8x+ƒâ.» ìÓ¢A‹‚Z:õi[\Ž‚»ICˆk ÈêÒå`—þ »´Hh@ œº%kWÓ„ viqЀ,Ü»´HØ¥EB²pìÓbצ[ªË›?%—`ÞÊj‘Á€ÜºœÊ0Â@±‹#ÜÒBtaŒ`@ »œ’ÁtaÀ´ÐÀ.·´Ð€]Èb”Qu±‹Q·´nìÒE ´ÐÅ)Œ`@»t‘A-tqK Ð…@]ìb”A}Œ`D]Èׂ@·´Ð€]‘@²Œ _ ²„¸‰@]ìbÔ--d`€»t‘A-tqJ#ÐÅ.]dÐ@ ]ÜÒBt!P»%Ð- l²K ô‘^¢Š.Êèþ.M¸¤‚[·tÑ@»ôaÀ)²d°‹,ŒìÒE A$P-ìÒE LdpKÈRP ¸ÑE»ÈÂÈ.]´ÐE #taÀ.LdpK¨Dmb#§¸!P-$ #»tÑ‚@]´ ÜÒ‡²,$‹%D1‘Á-} Ë. ÄD·tÑBɶ`Ð&0rŠuÑ‚@²0²K-ÔE 1‘Á-} ËA]ì0Ð&#´pJ£ ²O“¸¤€-nm’A ²ìrK¸¹±Ë)ŠeЂ@ ÔE »t‘|òmRP-ìÒE »œ2s ¸µ°‰»´à³…piÐ--Ðþ€uÑ‚@§ÌÜ‚@]´ P QoÂÐ&‘@-D½É. Ñ.]´ —ÝÒ‚ ¸!P-tÊÌ-ÔE µõ&ÝÒ€,1bÀ!_Žyæ(Ù2€K£ÀuK t±  4pË.;d°K-‘@]°Ë-ìÐÀ-ÝRP-ìÒE »ìÁ.]´€[ ›°Ë Ü"PûtJ²ì`€@]°‹,;d°K-Ô…»È²C·t C›@DíÐÀ-ݲ DµÁ.;´Ð‡}ä]Å .`²ØAvÑ…¤ Ø…,vЀ[äé"þ‹d`š+¡ Oظ §9E 6Á0A ]0€b†œ®§Ø„|2Ð5dÀ-0À& ’ô! èC  ˜T  -Ø„ú ‹  Ø„BNa€d€ Ù„|Ð(¦§ØÅ&äÓYdÀ-0À&Ò‡ }èC NׂSÈ"h°Ð‚ÓµàŒOÐ…œÂ#Ȳ ù4  PLN±‹Mȧ²È€Z`€MD Å@ÜÐÊr–²l‚KT ¨´$$-‘Å&&’…ÈbÙ„,"‹S$-‘Å)"‹M˜D›@HZ(² þYD§HZ "‹S D›8º@Ëtª³„“pÉl±Îxž§ ·§=ïy[ À%“¸‰?ÿ Ѐ t -¨AŠP‚À%MHhHda”Sô›¸ESÒ”ƒÜb·hŠHda”S4䛸ESHÒ$·ØÄ-𒣤)‘…QNQ£ä›¸ESÒ”ƒÜb·h AÒâФ*u©5i‚K@ÀT‹ô¡ hAAOa€M´`ÈANa€M´`"éC Ђ†œÂ›hÁHd  9…6Ñ‚ä3ëÂ. r>´ -(HZ`S`-ØB rSþ`-ØA2°‰¨jv³œ¥È$\2[tv²`D jYà!MAˆd†t¡ ÈD ܤ -HZ ¦¤ -PHZÈ7Ù„Nq Yì¢) HAºÐ‚ƒ@¸AHSbYàf }hÁ.6q‹Îªw½œµÅ\2 ¦D-È€|pc€.œ"#0@`»0ÀnÑ‚  1@F`€ìâº`€  ØÅ-ZÐtA\Hva”.ø¬»è‚|Z° d Ø@º° £ä-È€ÜÐ… 4 ]Ø…|ZÐtþaÈ-ZÐtA\Hva”Sd`èÂ.º´7h@ º°‹  0@äÓta-0À 0‚]`»èBЂ.Ü¢ 0@Ò…]Å } Òù´@ ·hA Ð@D ²|Z . ¤ »0J|Ö‚]tA>-Ø…2Ðì@ ]Ø…Qr‹lb}h@ä ì` {! pI‚}‹.4  »èƒN!‹ ìBŒØEZ ˆ¤ -ØEZÀ„ Ü¢EAºÐ7t¡»#vÑ…t¡#è‚vÁ„ Ü¢Pþ ÒÇ> þÈ.ºÐ€>¸Á§XÈ& ÀˆS¸a]hÁ@ú`€>lbˆ@˜[ôÁjØ—AdÁˆ]t¡éB Ò…¤ ØÄ6± ˆ¤ èƒ „ì¢ -HZ &dà}0€," 7À(ˆ@˜[ôÁ²ØD„ Ü¢ -èþ pôa ÙEÐ7à鲉´àÃî»ß™Ú—€@Ø›È@ d±‹[47nØÅ)fÖ@D ]hÁ.º‘¨m¢ ]hÁ.ºÐ‚]œbf-ÀM 6a€]´ j…àÒANa&"»èB v± lb!þ·hà†]t¡ÉÀZÐ@D -ˆZ!¸dS̬éB Ò…¤] DÒ…ìbèA vÑ…¤ -H ¢¶ †lˆ@ZµMì"È.ºÐ²À%q À»Ð-° ›`›`·Ð²@Œ`;ðw¨e 1 .1¶0l·Ð лÀ§s »°° ]ÐѰ ;Ð;з ·P]лÐ-° ;»Ð-€-° ° ;з u°/q 0»Ð»Ð-° }`§°§Ð²°° þ]`» á± p Qûb;»Ð- ]`» »Ð° ² -ÐÑ-° }`I`»°- ]`» ;з ·À›`± p q »Ñ° ;Ð}°/q 0»Ð»Ð-° }`§`]À! -›°ÓH2! 0 ¶0.1 w -° Œ`L ]`ŠÑaЧӧ° ò‘  `-`›PÐ} Ð]`ŠÑÐ-° ва ÑQ³ }Ðþ§ÓI``LÀ§`#L° ›  ·`}° }Чӧ `-`› ]`ŠÑ§° ›  ° ›  ° ]ÐлÐ-p:-p ]``L° ò‘ л° òѲа Ñ#`-ÐG-p:-p ²Ð€-p:-p Œ Ð} ]5»Ð-p:-À! á]P‘)™&‘.±.Ñ“¹ i‘iA²° ‘ ! ›0]Ч ± ²0²p Ñ p ! ›ÐiQ²p þ! §@§ ‘! §0²° &! ›€iA]Ч Á] ™Ù©a à.ÑÛIÑ%ÑÑâ)_ÑÑ· žñ)Ÿ1ßé0 –$ÑóéŸÿ  :l*`Ÿ.1‚l° $ê  ¡:¶P .¡¶ T› Ñ-PMÁ›p J¢%j¢::‚ T²Ð »p ° »`#`-Ч#`]° -`;`а»ÐòÑ»`0лp -Ðò! Ð'ê¥_:lM a *þ» @Ms° 0 ‘¦iÚ¯ÐwЧѯ§¡ö ¶Ð§ƒÚ§·Ð ÐÑ; ]Ð#Ð Œ° ]лРÐn`IÐ}àp »Ð à]л° p -À»° #Ч@¨·Š«¹ª«»Ê«½ê«¿ ¬Á*¬¸: ÐÑ` »às ¯àM° 0 9ÐM 0¹ê­“à­¶ðߊ®± в ·Ð² ¸Ñ›`§03-° ]л° Ð-° ›`› ± ]лÐ-° §`þ}] Œ`;®«±˱ë± ²!+²Ñð £`  Mл“0 ‘ð 1Ùú 1Ù: ¶0 1 £° ¶0 ¶M0 ¶M0 1Ùú »` “` `Ђ° “`0 ¯° ¯­s` x:.¯0²„z ]Ð]° ]À-° °° ]лÐ-° }`IлÐp »Ð-° ]Б;à· -›·¡Û±¯ º¥kº§‹ºk  i:  »0“M° þ0 “0¶M° 0* 0 » “‘¦»0 0 p½ ¯° * M0 “×;  s0 0 0M€§*`0¨ûË¿q -P ‘]Л`/`ŠÑ§ÐÀ]``L° }ЧÓÐ} вÐÐ;à]п+ÌÂ-Ì¿s0*£àÂ5lÃ7ŒÃ9¬Ã;Œsà¯00 9s »M° 0 “@i:ð ¡*00 !“‘¦»0 þ »ð л` Ðs0¶ “‚  »“ M01 wj 0 <œÃLÐ ‘Ñ-p ²° ]Ч Ñp n`†ÌÉŒMð `0 žlʧŒÊ©ìÉ£` “ð 0s° л“0 ‘¦*Ñ@“‘¦»0 00 M ­M¦“‘¦»“ `M0 ¶€§¶ Ê,Ü·€§Ñ}p§Œ}°Îûlà P¡ `0 üLÐmЪ< 0*0þ0 » л“0 1M¦Ñ¦1 ` ‘¦»0 00 M ÍM0“‘¦»“ ¶ mÔGÔl P¡.ImÔ¶0 ¶ÕUÍM0¯00 “° £ M° 0 “0`“0M M 1 0 ‘¦»0 00 Ùª1 0iº 0 ñ Vݧ¯ð “0 ‘´ Ù‘´” Ú,< P¡ð ¡}M¦MpÃs0.¡S“€Ú¨þý Ð 0 M° ˜= £P˜»0 0»0 ГM° ¶Ð¯`° s0 ° ““ ГM ‚0“‘¦»`° ¯Ð‚   ;,à¡“  Piª ‘¦á>àsP¡ á9< “0 `ÃM90 ‚ “pá'Žâ 0£M° 0 M°  aŸ 0Ñß ¶° Mð ° 9à   ° ““ л0ðs0 0iº þMàÙú 0 )nÓð 1 ° M‘´ Ñ 0IË“` f®ç)Þ £°ç,œ¦!Ù ¶° “ð ‘´‚­`` ñ Ðñ0 » Ù ¶ ¯­s` »ð Ù:¶ s­¯ ¯­s` .ëþ “0 a “0 1 “0¨˜½£0 a ˜=ëýû  ¯° ¶0“° M0 *Ð. 0¯0.»Ð.» 0»` 0.á0Çnï8¬ßYßÙ÷ž§i*¦0»* þ¶si:`M¶@““° ¦0»0 0 0M0 0 0M° * M0 “ÐþŽó9¯ón M0M0M Ñ0`£° i*M0`Ð ` M‘¦»ÐM0»0 ` »0 £°ókß¶0жÐß©“Àö‘¦a 1 0 s¯° s¶` 1 0 Ñ P““° ¶ £“Ð0£Ð0£0` 19Ð0£p÷«Ïú­Ÿ“  þð a ð Ñ ° ““° i*M»Ðsº M‘¦»Ð ° M»0 0 Ð! ®Ïý£1 ðM` ®Ÿ¦1 9¦0 ¶0`° *»0 9¦0 ‘ P““»&åÀ$0šL²µ €&“líÊ¡ ÉÅ‚`4™dk×G!EŽ$YÒäI”)U®dÙÒåK˜1e¾´Õd@“]Mr€lb×£vüØÄ®&ìRdÁ]M@ìjâ£`l½¡`ÒL°aÅŽUÙÀÙ‚È®Yp— *ÀL0iWŽ þ¶@˜I&‰l@ä$“Pf€I¶r 0@­ BÁÅ‹slå`€ ¶©U¯fÝÚõØQ ö x² rÌ1`ˆQ ÌQ0 ÇYæÌáDs ˜ój€*À4™ÙÝûwð-G8 @…­ðéCÜ¥bH“vMÐDÁ.@˜$r€9BB€IT˜$&é• @é• @hB’^™õ2ÔpC;ô0½ši”WTzå••šÀ0øðEÕc€³#Æ–&Ùe’šØ%l±¥ &ùHšØ%„l€IFþa€9v±Œ ˜$„l€Išä#ThB@PašøH9šä#TÀñN<óÔÏ&lyQP`Ž= 5¤W@(„W©¼ lÙe”ÎR€I>j€Wve€³T`’‘lQ¡¼X`’Q8K&i¢<Fi¢<FÙeŽÊ›£‰òÅQb‹5öXd“U&A(¯ cm™d”l™ä•“l™ä”l™d‘l™ä•lù$[¾é[lùvYxã•w^zëÉÊ›`{ûõ÷_€xàï&Q ¼&lùŒ&vøaˆ#–xbmi¢<&±eþ¡øcCyd‚'Q ¼Î`’[vùe˜c~±‰òÊSÀ™sÖygž{Þ“jŸ'žä—šá»Il)úi¨ñlB賚ˆzàW@Pà[r`‚³&Ø€ v±£ ¡‰]lAæ`@`[@€&@„˜dŽæ¸zqÆÓ…êòæhÜ^[š ‰rÀ–]T`„]ša—Id0virÀ0à„ š`—°e^a€IT˜d—I&a”É“W~%[ibªeùx'Q„W>*¤&@Ø¥ v±c—þ&@© ]&€…&@˜€]@¨yšIT þŽÄ‚hÂÊ£[0Y¶hš°‹ `)v¡ìbMx… °‹&`¯ØE°‹9`MÁ$°  À±š’W€@“ÈP}øC QˆC$"m!ˆ&(EdbX’Q€`¶˜@€1œE˜Ã(0ä`“8Ëvñ L`MP@@0 Ìá À‚(CžøG@Rƒ$dz^a‹B&R‘2yÅ$>r"‘Lâ yÅ(B2 [˜ä“xI'=ùIP†R”þ£$e)MyJT¦R•«de+]ùJXÆR–³¤e-myK\æR—»äe/}ùK`S˜ÃtÉ·@òŠo"$£ÅK^ñ­Qó%¯…4­ÙÉ]S›Ûäf7ÌAH ò’9€` ¥ \¾b hB7íILâžûäg?gÙˆ¤ !a¦' ÊI  »˜€Jš‚TN“èå$^ÌIØB”“xÅGæVNÂþ$iI €*Àv€ ì¢ Tð‘‚|¤ gÁ.l‘L£‰-r€ `)È.F¡€   »°0Ø þF¢|d¶Àv€ Ø vÑ M°0€9ì`  MØ‚`#±š°ËW€@¯€@Ø@v€`@0ì PÀæL å0‡O¾ xÅ.l1€Iì T`  MØ‚ PÀ° [€@˜0€`sÀLz^ôÖ² ˜0ì¢ ØE00`»(HH ²‹ À»PÁ$D’ƒØb*˜ÄG ²‹WbMþÁ.&AŒ “€ F†‘$$MÁ.š‚I@£ÃGš‚ä`¶^ÑL  Èl1¼b À$T0 ‘¼b˜D.mÑ„4á#MÀÀ€(ÀsÀ+v‚LBc€ F†]ä`¶x004a¢œÄ@0 —Ø¢ hHš ‚4asR [̯Ø0 Œ‚v‘ƒØ àÁÀЄ|dÁ(Ò{jT«² ØÅ$Àì¢ ØE@°‹I`»(HH ²‹‚˜¤ #)È.F¡dƒ`¶þ[€ÃH@04»hl i>R]L“¸&Ôl»AJ2‰(๜„@ðŠ4»˜ P³IìMøˆ-@€€aÙÅ$Àì¢ ¥  —LB xÅGl1€W|¤ ØÅ$šMb hÂGl »(È.&€`MHàò©f:1›‚]Ì3À.T‚]4»˜F±‹‚„¤ »ÈÁFñ[ˆ$ÅGlñ‘‚ìB ØE@°‹Q4á*À(šð `$MÀ$þ>b‹&`*Á(šð à#MÀ.^‘ìbÅE@0 ¨`¶øˆ-v‚&œMÐ¥-š0€&ì¢ ØÅ‚Øâ#¶Øšð‘Q4á*À.r €]Ì3Á.š‚’4a!iÂ$@Ò„I|ä PÀ$@Ò„I„¤ “I&[4aMØEr’&€`s`‹Øb hÂGFÑ„WPØ…P€]˜˜Ø…&]xP€I¨¥W˜ƒPh: ¦&€˜„³P€˜ƒ&€˜€Q˜pAÀ„ þ€I [˜˜„9df€ P€˜È’Pø–³P€ˆ˜Ș„³€WP€ €&Øh˜Ø€Ih‚P(‰IAà¥QIhPÈWP˜„&]˜È]x˜€h€9P€˜’€& h€&ø0h‘€& h€&‰Q=€W‰&€x€Ih‚PØ…Q€ P€Ø…WP€ €&P€˜€9ƒ&þ˜¥W˜ƒP¡Ù@uä¥&Qx…8‘…WX‰W˜“x…I(‰‰Ix˜„W0‰W˜„Wøˆ ‰Ix…x…Q‰Q°“x…IX‰Q˜_j…W‰W˜“˜„W‰Q°aÊ&‰&Qxx…I0‰Ix…[À¥W˜ƒPÈXG¡Ä¥‚˜ƒ¡T¥QX_*ˆ9@µ&°…(ˆ9à§QÈŸ<‹‰³hÈ&˜˜„W8J²,K³ %S0…‘pWø¤´‰´t¥S8…”¸…M¸…¹4¥[Ø„[˜ËT²0PÈI8‹&øˆI8 0øˆþW8‹IøˆQ¸ˆWø[˜„W8KÌÌ̲´) )‚O²) WjH‰M0€M@Í]¸&h¸…]èÔÜ„è‚ØSØÔl.Ø…[`‚Ø[ØØÔd¥IÈ¡Q¸ˆ9øˆQ8‹IøˆI8‹IøA8‹IøˆI8 ˜ƒ‚‰Q˜ÍLOõä&S¨‘¸) ¶ü¤;¸)p¥S8…”¸…Ø„>Ø]踅hS0€MØØ…M0€MØØè‚.èƒ]踅h[MèƒØ…I°…Uz…&P€³h‚•°…Ih‚Wøˆ9([øþˆ&8 h‚³ ‰&& 0„WJ$MÒ’ª)°ZÐ)°„; )0)Ø…;0‚]0ø‚‘p ¸ƒ]¨"àR)¨"àR)Ø)0)Xø)X¸ƒ]Ð)°]0A‰.0Fm]èFm]0€ hØ]…MØÔM8….Ø….8…]hØ&0€S0&h.Ø….0€]è¸8hØ&0€Sè‚]è‚SØ…9€9h%AP& ¥W0‰9(8‹&‰³þh‚Ix%Wrå%]¸ƒ¸ƒ0àW„;XA¸ƒ‰ÏÜ…;XHp…Z0€5…Zà„]¸)Ø6°]¸)`Ð…;‚‚0…/ÈÐH0Z0àWS0Np…A‰>HYè@Í]è‚è70€Sèƒßl‘è`„ 0€]hFÝ„]hØ….0€Mh h€>Ø….0FÈ ‰I˜VÊÚ‘˜„Q‰&&‰³h8‹&øˆQ8 0ø[8‹IøˆQ¸ˆWÐZº­[»½[¼Í[¼5‚Zø]XA¸)Ø…þ;øÌ]¸)ØS0S€„ÏüLW°Ì•‚]øÌ]¸ƒÊÝ…;‚‚;ø)àR.5]XAÐ)0’8`‚@Í]è‚Ø…M0€M…MÞM‰[`‚ØèƒØ„0€[ØØ….0€Søˆh€]¸&h0€’P½Õ[[˜„W‰‹˜ƒ…³˜„˜„³˜„„³˜„˜„³‰9¸…I(_`.`ö$]¸ƒ¸ƒ]p…;¨…/0;‚]¸)‰ÏÜ…;‚]€p‘øØ…;‚]Ø…/øLØ…/‚þ‚;øˆ/X]ø]p…;¨…/0W¸ƒZø‰[Ȁ؅ ÔÜ….h]è8…>¸Ù‘FØ…ØÈ€]Ø70€[è‚Ø….Ø&h€]F؅ؑxP€I8`;‰Wh‚ 08 [ø08 h‚³ ‰&&‰Q˜„;ŽdPj‚I‰&˜„h‚IdN¾[WSp `XH°€H‚X)H°`ƒ‘¸ÀÜpNàRX6àRXH¸ƒ°)Ø…Z°0W0"°6p `ƒ‘þèFeÔ]èƒh€h$0€ 0&H‰Mh€È€ýl€È&Ø…[ h€>Øhèƒ]Ø„ 8…‘ƒ&x „Nh…^è—xAh‚³  ‰³h(ˆ9‰&˜„W`h“>i”n h€& h‚”žiš®i›6 S¨…”¸)p…Z(‰Z¨…jꓨS S¨0…Zx‰.hS…•8…M‰[ØY‰M……M¸8…M¸i³>k´‰QXhh8‹&‰³h‚…³h‚°…‚…x…&˜[HkþÂ.lÃ>lÄNì“øLHPì„FÍ>plÉžlÊ6‰oy(ˆ9øˆI8‹IøˆI8‹IøˆI8‹Iøˆ&8 ˜ƒ‹¨l×~mØŽmÙžmÚ®mÛFèW˜[øˆWh‚‰&8‹Wøˆ&8 h‚³ ‰‹˜…I°é&x…Û¾nìÎní–mY…íþn“…I‰Ih‚‰&8 8‹& 9‰I„> ˜„ÊX¨€u…`K…XسX‘`Ë–XXð¾iYpƒ>øYh ØSÔÜS‰Sh>Ø…ßì‚‘@Í>@þÍ>Hé.@Í>˜é Ø„ ¿q´…å ‰³h8‹9øˆW8‹&‰‚…x…&˜[‰šQ€9˜l€)X)‰ÏT ]‚A °)8k‘øÌ’Ð)‘°) ‚ÚÞY‰.h„M¸pƒ h€.øˆM]h8&¸… hè‚]0 탑`&0YHéS0&……ÞY‰>h’è‚Hè.hØ„[Àq\7‰IƒI‰‚…˜„³˜„˜„³˜„˜„³˜„˜ƒ‚˜ª€&xž)þ‰Ï ¶T N0‰;¸)8ë;‘`Ë’à°‘¸)‰;‚Ù–…ÈY¸…Èpƒ.È€h.Ø…0€hˆ„hè‚]¸…h°Ð h€è‚]èƒèƒh. -þˆ[h€.øˆ.Øè‚]0€S(‰.0€]èØ…SÈ€0€.0€ hØ]0€ hØFm.0€. è8… èÈ€0€Ø…[h0€.øYh …¸…Ø„[h 07Ø….È€h.hh0€M¸…hè‚[h0€þ.Ø….È€h.èƒèƒ\_|–°…Ih‚WøˆQ(h‚³x…h‚³˜È9‹˜„š6ø ‚]0"Ø…; )0/øˆÏüˆ;àR)Ø]` p…‘`ƒ/0ZØ…Z .•‚Z .•‚]‚0O‚0;Ø]0AÐ)°„‘Ð)°„]¸"‚;àR)ø°)0/Ø6ø¨…]¨"àR€R‹ˆ RvI1!e…‰ORV˜¸³K—&é’bÃÄ ]MÜñ(r$É’$ouiÐÅã&ŒN¹ÙÕ¥ÅÈ þ6툑áV²˜d¸ÕÇ€¬.-FnÑâ”Ç]FöipjW ní:Õà–.»ZdhЧdf ì’ÅhW—]ôqcàT—}Üc Ï¦& t)‹Ñ®.-º4pÓ¥Á.&nõ1 ªKƒ.#»ìصɣSn”$èC Ї.€R H‚2`&ì¢ È€˜°‹[ &éš6ÑPªh@2Ѐ>È"h6á‘S´`²h€,ˆÄÂ}ðH,Ü —¤ ·1‰Klâ£8Å^$Tìbí®/Ét1ãã8Ç:Þ1{ìã9ÈBŽì)NÑ]Y8î¢uÜj×g’"9ÊRž2•‡Ü‰NˆdWNÅHR‘ í^Y$Wžð•Kâå]ÌâÊ©ðÈ,®œŠÈ^Y$W®²I,|] [Ø »èC ÐÑfÀ«ÍÀ&Lba:#:ÑŠ^4w?@‘‚ ÁHh@ƒþÕâ‚t Éh ’Ð` AI,½ @ÐÀ4ð h`x4 I>@‘|€SÞ„,LRd‘t¡¼ÙÄ-D² ¸¡ èƒG,,Ú.€7›…GúÐÞY$]ho6q Fƒ;Üâ2h@KÄË«}>@2Ð@$d Á„É@ƒ’xY$–‰¥=ò|€$d HÈ@ƒ(Ë¢Å-˜`€ fiGº´  fiA Ð…>4 "1À&da7xÄ»0Àva€ìÂZÐlÂ,›ðˆ,ZYìâ ØÄ.nÁŒÀI0K <Ò… þ4 ]0K º`€.ô¡}7×»îuî2à4`À€‚]0»  hÀ€!xÄÒ!@ƒ]ࢠ@RQ’* ³ØÅ,PPwÌu§Á.hÀX€” @†]à‚`pAƒ0€%! hÀ€!ì‚ u§H,=K{¤ C`À,v1 Ô³@AÝi° 0€`%h`a¸ Á@\Ðà  ƒH@ïÞ¢ è‚G˜Ð€[ìb›Ø……EÒ…x¤èÃ&Fà‘MŒ §Ø…˜°ƒÈÂ#ÞEZ°‹.´À.tA¸A4@þ@4À)ìÂ-tAtHtÁx4À-ìÂlÂ.X˜HtA xD@lÂxÄ&Œ@ œÂ×±` º I0€ÐÀ. ìX ФÂ.XÚHXÚ.TàÂ. A'”„ÌÐÁ.TÁàÐ@|. x X@' |.ÌB'0À#¤tå”U^™å–]~æ˜-žd™Sî%šmÞ™çž}~‰æ‰^¡y”‹œ›Ø¹Ÿ_V„k›€h’]š€h‰š€h’— ¡‰]¶nB¢­›xé0æØåPa”]^H…þQ$„9dR`”Aé¾ýþ[d@˜há"ˆòjBæx"À9žä”šÚIl¹h&Q„Q˜Dv€ITá%šhbŽ]x}‰x}—ÀP`€&v™d‚]@Pa—Qr°E$š€&Pšä‰æÁ¥&@€v[$ßžûîwi” ºÈ9¼æ`”9š¨ drÎûŠ_AWPThba¶0(`Á.l‚  sÀ&2 äMr‚&ìbÈšðŒb"ÅE0 ™€  Q &b‹þ4aMPš0‘W€@¯Ø…-0‰]@ € š0»°0€9@va  M˜Ãæ?3žñdP L`˜À.š0@ˆDšìÂ9À0 ”€M°Å+vÑ M@0L¢ !Á. € »°’9  ˜@0 LMØ& À š04g¶hš ‘& ``À †& `9€-À MÀ.r [̯˜Ä@0 ‰€ $“ØB2 ‰€þ $“x 0€9ì À$ `0A&2‡ŒB" €l1ŠØMØ…-š0€&L¤ *H00`C°‹ À`†& `9P€-æ€WLb yÚÓŠ5asf‚]4»hÂæŒb¹Dv‘ƒØb*˜Jl(`i&‚LB“DvÑ„€¡ ØÅ$` äÀ%Mš0€WbMÁ.š‚ 49P€-æ€WHsàÙ$‚WH¤ ØÅ$Àì¢ ØDv1 °þ»hv‘`»T°‹9 `À0‰ ÀsÀ$&[Àd˜Èp‘ & h‚DF¡€Q\Ä €ˆ@Œb Á+$b‹¼B"MÁ.&€`MÁ. ²‹I€ ØE@° À˜Ä.¬ Á Vð‚ïÒìb`vÑì¢ ØÅ$0‰]@ä"ÙDî†I¤ ˜š€ˆì¢ ØE@°‹Q` h‚Kš‚]4£ˆ@°‹×`A€0 ËÄM@vÑìb˜vÑì"þ ØÅ0ì¢ Ø… ` ‰” ˜„DT €]L$PÀ.&€W¨@»˜^±‹&Lb"MØE°‹&ì"Hv‘ƒH¤ “¸š° [(  “Å.^1‡]䣠r`‹]Ø¢ hÂ.šƒ‰4»˜f‚]4»Èv1Ì»hv¡‚ØB"¥&1k_ÛÙÖö¶¹ÝmoÜá÷¸É]nsŸÝÞnv1Ì»PvÑìbÅ. bmˆì"…Dlqí&€aM€Dš€]¼b hµ!²‹&€`MþD 0ØÛMÁ.š(`MÁ.^‚I@°…Dl!‘&L"Ý9÷(@0‰&@È0 `¯PÀÐ ` À^¡€8h‚µG1€ ( £Àƒ]ŒbP@$€&L Àv`0‰  ™ ¼!ÀMØÅ$Ìa£`íQ€`xÅDš  À0€9¼B@0€9(`sx…à  :×ýîyß{ßÿ~÷‚Aæ0 à[» Pr0 +`shþ€ÌÁ(æ‚0‰kƒa @$2   P$2À0€9¼b`TÛ`æ@  B`  @`` @&A"  Žï÷šFá¶mlaÛ^a´Í&á$Â&á&Â&á´í&Á$â&Á&â&ÁÊm&Á¼-šÀÚšFá¶mlaÛ^a< «Ð ¯ ³m˜ š`&Á÷šFá$â^áÚFáÀí&AÛ^a^ÁÚ^aÈ­ ÀÀ¼- ¹þí&ÁÚ^' s"æ ‘ÜšÀ¬ "æ@#Q'‘sî¸'`v"æ ÃM`|¯ láSQW‘[Ñ_Q"&¡ A"01À  l EA&‚x‘¬XáÜxq"x±‡Q"hYÛxq"x1 ӫѯ³q^g"@T@"&  l¡OÀ&â|À|ÀÚ|À¾-| ®í|`"NÀ %â|À|@"rÁòàÚNÀ&â| `®"#R"'²A@`"@`"@@@"T€É  lA×Àþ® ­m¿­(à®m |`"ÖÀ q­ %¢(à®m |`"ÖÀvÖÀ$ÂÖ@"| e)@rÁ(Àò |€< ´m^a"la^a ÂÚšv¡ @À@ $¢ @@" b&&áu@` À&a@  ¬M@ÖUr'W_aæ`"@š`"š`"r  &"×Àvá(@ (`žÀva |`XaàÑÚàq¸ÀXA"ráÚtSÖ€vÁN`žO`žÀþ$ÂÖ@"žÀrA"rÖ€ž€Xa há (ÛtÓDvá N`ÖÀ$­ wA7Ea (`|àvá àñvá |@"|` $â < $"Xa há (€Ö€ž€&b DÁÚl¡   $¢ r@"r`FA"l¡ `TF¡ ^A@"švár@va`^&T`lA"la@  $â@@&r—˜‰{ï^g"@&`"@@`"^ç@t (à(€ D!0OÀa (à(€ Á<À|€ÁÜØH(þÀ(@®Í¸`¸€ò ó<À ó<àÖÀNÀvN€|€D(N€ X`à¸ÛN` |@(àÖ€zÖàÀÜØXá|À}€¸`¸€ò ó<À ó<àÖÀNÀvN€|€D(N€ X`à¸`"(` °m@`^a^A"la€fL ` $bl^A&`š`  @`` @&¡ @@`À  šØ¡ZÜ^ š`"šÀ&"l"æ`^Ar×ÀþX$‚háÚXÀDÜJz"JšÛhA¬Mha"DÀ­¤Í­¤'¢¤¹DÁÚD&BhÁÚtsÛr  ®í&a"ÒÐÚ&á¬íFa"FÁ¶í&¢¿¬¹íš^A"À&A"æÀ&A"&AFÁ¡áñº× ¶­ lÁ®ûÚ¯¯ @`$âl$bl$ÂF᯲#[²Õ  &Àš`"`æÀ®ma&[´G›´¯q&&B&"æ ²G  J·s[·©pæ`"šÀ&Bl"šæ ·!bþ·—›¹›ûÛ&a&bl$¢ l"æ  æÀ¹  œ¼Ã·maš`$bl$bl$bš`Ä{" bè¿óû¡_g$b¬ $â &b&A¿¯­   ÜÁ\*çš`"T`"¬ &b \Û  <\ÄGüÁ"&&  &bHœÛ BÆkÜÆwo&b&&¢ l"š`šàÆÁíš`T È—œÉ·mlA"ÀÀ&A"æÀ^A"&š ÉÅíš`l¡ËÇ\ÆGA&A"&ÀÀ@"&Àæ@"Fáu^þÌëÜÎÉ|Jf",&Àš@"l¡ Ààîø6a&Bý¬íNÜdÑOø}"ý÷d᪑fÐÍ9vfxïѽí6á÷nanáÑ'û^g"@@`"&@`"À`lÁЭ0Z`"ú  ¬­Z€Üú  rîZÀ ®-Z`"2 zO º Ð "vA@€÷ŽÝÛNÁ6¡v`n Z`naºàØ7A"º vàváØ[  vᘠvàNÁ6¡v ¯wAT&¢ @&¢ &b&á~áþ» ®íØ­íÑÍíØsŽ ®­ Z`"º zo `&q^¡ÛšÐÍ9v¡ @€÷ýÛ @º  v¡ àF NÁ6aZ`6Á6aZ` €èû`ºÀnaZ` @ˆ~&Ášxr^A"šÀlA"šÀ&" Úî·Í2  ` `vÁF`º`ZÀv@"Ž]"ºÀ  vá˜ÀFÀNáÚn ` à$âØwá2`   váZ  À n¡2ÀÜ Û˜` @vAF ñ[@F ñ[`ZÀZ  Z þ   váZ  À n¡2ÀÜ ÛnÁº _àlÀ&``v¡ &@lÀ`l!`à&¡ @ìj2»l   ˜´«bÅ.2¶ØÕ%c‹]2´0°c—¬M(7íê² å®#v11pÊ“]vu1°«‹[NYl1b»ºìB¹k΀9£JJµªÕ«»lÂjus* `RÅ9@Œâʶ­Û·pãÊK·î®. ú¸1¤Å®.-vuiÐÇS»Z´ˆªx“·víØ$þ•Iƒ[»vlª¨x—,F»º´ØµÉ£Sn6`tÊ Õ² ¸ÙÅ$í.-˜d¸Õ¥EÅ 6툑áV²6`tÊÍ&ŒN¹™*«MvåÚj2 IÅIÓÄ®& v50 €7³+Ç[»TL1`’ŠIÂ.M 0Œ’ƒ¶ÌÀ+ 0‰ “HÕÇ…ôa‘b»tÑ@npJŠ)6U0’»´Ñ&»´`À.]°I 4ÐÇ.]ÀHP5É Œ’Ý‘¶41@W½òŠEd5Q‘-d5QÑ+Îqä–\véå—^vÑÂ.›ÐC »tÑþÂ.]´°Ë&l²‹bQ)¶‹bV)6•b»œ’ÁŸ-ìrK 4àÆ--ЀSÒ@ ì°‹b»tQâ.]´PQ ]TÔBFmrK 4àÆ--ЀSmÂD²€‰Õ$ €ðJE¶€À`4Â.M€°K ì2 ˆ€À`ì"`T 4!•€»4Â.“0 d‘5 MXuŠLD¥Ø.]´°Ë&l"KJ›Lu -ì`@ l2‚·ì`À.]pJE#4°Ë-L´°ƒU € ²ºeKBT“Œb4a‘4a*LñÉ(§¬ò‘]´°K$aÀ.;´þ°K-ìÒ‡§ì¢XTŠíÂD§Tt‹TL4pJE·T¤Ø.;d°K-ìrJ²ì`À)]ȲƒSuÑÅ&]°K 첃bì²C µÐEE;4pKE·œÒ…,;pJ²ì`@UtÑ¥[¶41@»ŒÒÄ+*л¨Â.M€°ËðÑÄ+*°KŒR‘- 4!•€»4Â.s0Š ØR‘- 4QÕ-Œ°K )¶K-ìÒ‡§ôQb SÉÂÈ.-ì°C»lb€,npK ìÒÅ.L4°‹,ŒìÒÂS½‚“WtK–E ‚E ‚EM4ñŠûþ  H@¬tÁ06‘‘ 4 ]0@ À„>´  hÁ)úÐ ¶À#0@ ° ©Übh6ч`°I0ÀŸpŠS``Â) 0‚ 0a* `Â.˜`70"#h2’ô¡ È@ v!‹  ØÄ) 0‚ 0áA˜@•M€´Ê(@0‰Q` ÈÁ$È¢€Ì¡ Pr0 L@9Ø…-&€P*2 ` ˜€ìâ À‚(Té¨ °‹>´ƒ-H‚2`&pe AjØ€d€ »¸þÅ2Ѐ>ìÂ-0@v±‰Œ §˜ š»ÌAòëÖ+*’²X¤“h¦6·ÉÍnzó›oéB N!‹ŠÈBR9…,Ú"‹MXE›¨Ê9¥² YXd²hË9-rΫÈbQÙ„,,² YTåØAÀ —I¼¢"N’Ê(^a‘I¼"*¯˜D[FñЍ¼bvéB N!‹¶œb¹Å&d•MÈ¢"²ØÄ-,rŠM0´.sP@4å7†ŠLB£¸©P‡JÔ¢U1}0ªR…zŠ -õ©BUL JU©Ø";fªÊÕ®zõ«WA‰Ed’SD¥†ß¬!X×ÊÖ¶ºu*¯˜Dþr‚hªà­xÍ«^å’X¤-h@ ¢¢¶t!-èC[³×Æns“àæ(FAȲÅI\ÍÎ+Ñ4!³  ­hGÛ…HE1Q©!Wú`€Sô¡ éB ®RÃìt¡séB FKÔ&sŠ@ð–&(s¨Š€¨¢°E“à­t§KÝêÕhv`€ìÂ#ØEFÐì "Š©H2Ò‚]Ü‚ N!7  ·Å.º´  -0@ `€Mt!#-Ø…20´`·hA2Ò©Ü¢0€º´  »hZÐD¢ 0@þvq‹4ÀbË@ZЋ  £Ä+ê2 [De`^!•&€À-sÀ(æÐ„ªL¶"MEšªLâ™ê2 [X÷Ë`3o»Ð€>¸ÁIhÁ.ºÐ‚]t¡}pƒN± ÅDE1»`Bn±‹lB*·h2pŠŠt¡iA6±ƒMTD1»èBÜÐ…ìb¸E ˜0•M€§pÃ.ºÐ‚¨´ ›ØA 2p‹>@LÈÀ-ú`Yt¡RiABû (àPÀ‚Q(`hÂ.0€`¶ÁЄ]ÌasˆÊ$0‰]Ø Àšþ0»€&L h‚-^€ ØEÈ‚]4AAvÑ„ € ¨È+@ €WTĘ0€`£PÀÐL À.l‚  sÀÄÌò–»\¨]hÁ.6a€´`]hÁ.ºÐ‚]l›؅b¢¢˜](+nÀ`EºÐ‹´  RQÌ.ºÐ‚]t¡»8…ú.Lå-0@ܰ‹.´ *-èBEZ0ÊM´`”›èB ¦k‹&   iÂÀЄ¼B»hvÑL  Èl1¼b“˜FQ‘I`»ÈÁlþð``hÂvÑ„€¡ ˜Š-@Œ¢ ˜@`U¤ °H†& ÀM@¢Òì¢ C°‹WbMA@0&`9P€-æ€WLb ÅËÇOþòÃ¥ -ØE ìb-ØEZ°‹>à»PLT³ &4àq RÑn° ]`Ѱ ²° -ÐR¡»Ð-° ]Б;à·0§Ð²°° ]`» Ñ]P;зP·° p q ]`» Ñ›Y“  ð Ñ ° M£ J»Ð?þ 0 ò3 ! “ð ““° ² “,»Ð ° M»Ð P`ðHý“! Ñ `M»Ð 0 ¯`¶0¯° M»Ð ° £ „ ý“»ò3 »  rñ‰ Š¢8ФXЦxЍ(]``L° ‘ Ð]``LÐ-€A-p }ÐÔž0а Rá Рб Ñ]ÐÐÑ-€A-P ÐÐ} ` °Sq 0À»° ѻР-° ²þа ²Ð€Ña]Šqa M0M° M»Ð   ° M»Ð? 0  ` a ¯ 0 »Ð`0 0 » ° s3»Ð ° M»Ð 0M»ÐÐ? 0 `RM»ð »Ð ° M»` M0MPMÑ ° M»  ° Mý“» ` Q  “€vy—x™—z¹—|Y]Ч qNRq ²Ð²° U! › Q! §]`·àP› ! §`²° Qþ! ›`²p Q!6}‰£“ 0 0!J8£ M“[ 0 `ÐÑJ8¶° ¯ 0M 0 0s 0 0s `0 0M M“s0 ðH 0 “@° 0s 01 0 ¯0¯P 0s 0MJ8Ð 0 0¯ €Mšz¡š¡ŠŠÑ Œ}`¡]p ÊNr¯0 U1 “ £` rñ “ð mñ £À9ÐWá$Wñ “¢DZ¤Fz¤Hš¤þJº¤L*M` M¥R:¥T:Š(a²€§5„5DŠ5T¥b:¦dZ¦fz¦w™-`}Ð ÐQ¡lÑÐ}ЊAŠŠ¦|Ú§QqN~¨‚š¤]ÐR¡QQC\Ñp }ÐÑ-p5DŠ5d]Ѓڗ²à}P²Ð°§ б§`§Ð}° %ÒS¡} }`Š] }pа ›Ú«¾Š-`;`#° 0»Ð#а¡ÑÑ»p L`#`§ n`]p ²° ] Ð]ÐÐ `›ÐÑ»`þ0лp -ÐÑRq L`#`I-P] Ð]-ÐÐa]@¥› SÑ-ð‰]б ·`n б #° -°§À·-`#`]°  6}0L`²À ¦x À²Š› Ñ-@]ПØ-P›p ¿ZµhÚ Ðn`IлÐ-° ]Ð}àp » Q¡»À p »°› ·Ð§P]ÐÑ ° ;° ¡»Ð à]л° p -ÀSÁ p »°›° Ša]ÐþÑЛ0Ñ} ¥²Ð ·Ð`nÐÐ-лÐÐ `‘Ð `]° ·Ð `b“ Ð]° }Ð}-ÐR!=q ÐÑ;`]° p UѰ ]`»p 0Ð-`;° -`;-ÐÐSa]`§#`]`0лp -ÐÐ! -²P·Ð›p -à»ÐÐ-Ð-`-а ·Ð `]p -ÐлÐÐ-Ð}Ð}0¨<ÌÃ]л° Ð-° þ]лÐ-° ›`›° Šб Šn€AÑ-`-ÐR¡»Ð-° ]лp ÐÐS¡R¡Ñ-`0-ÐUz ]Ð]P›`Œp n° ]ÐQÑ ° ;p }`²Àp }`²Ð-›0-p Ñ]}Ч° -`p »p p лÐÐ}0]0J» Œ° ]Ð]Ð}àp ]Ð}àЛ0Ta]`²À»Ð-Ð à]лÀp }`ªÐ б ]°»° À§àþÑ-`-Л°›Àp }`?·Ð »Ð-`›0-p çÜÐýÐÑ=Ñ]Ñ}ÑѽÑÝÑÑ-° }`I`»°-° ]лÐp » ç¬»À p q Ýn° ]`Ѱ ²° -Ð ­»Ð-° ]Б;à·àÐLЧP·° Ša]`» »àçÜ›àÑj]Ñ›- q -` à»Ð-pÎ-ÐÑ£´ -0J›Ð-ÐÐŒ`;P-Ðq p q лÐÐþ§P#Ðݰ ]`»p ’-Ð-° ›`›Ð-° ›`›#Ð}ðÐл ·p §Ý]лÐ-° -0Jq- q »p -` àÑ-`-ÐÑ£$£´ »Ð-pÎŒ`;°ÖìÝÞîýÞðßò Ñ]``L° ‘ Ð]``LÐ-€A-p }ÐÔž0а í Рб Ñ]ÐÐÑ-€A-P ÐÐ} ` °} #`-`XÐÔ§° › ° ·`þ}pÎÐóí޷Рлp ] ;`»Ð° ²P-б p q ;зP·Ð° ²° ²Ð° Ñ]P·]° § }° L`»p (aLp ]° LÐݰ ]`»°° ]Ð]лÐp ]лÐp n`ÑлЛ°° ]Ð]лÐ-° ;зP·p ]Ð]P]Àq ] ;`Ѱ ²° -б p Q p q »Ð° çÔ° Gþíàîâ>îÝ-p ²PçÔþЧ - ›Ñ²° ²pβp Ýp n`- ›Ѳp Ñ p ç,6äîѧЛp 0À»° ѻР-° ²Ð° ²Ð€Ñ»à]`}Ð -p ›*]° ÐÐq -`° ÐÐÐ`}Ðð' À»ÐÀ»p ÐÝ£´ ]`ÒÐ} ва q -° ²Ð²P§`#LP› Ð -P²ÐP`-þ`›° › à]°ðžÿù ú­} úÍ`ÐÝŠÑçÜ·`ú½ ²`²p - ›pβ° ! §°Ñ§° ·Ñ²° ·`ÑçT]Ч Ñ-p ²P}з`Ñç$Ѳ° Í]ÐЛ ç, §Ѳ° ! ›pβp ´?ÿô_ÿöÿøŸÿú¿ÖŠÑ¡Ñg×®>-Zô˜PáB† v¹åPâDŠ-^ĘQãFŽ=~Òá¦M e‘<¥ðÔ)‘ W¶„SæÂ•!e‘èC77ß„3N˜ºh 7 H¢…]ºha—.èà NÙÅ … Ú…‰nÙe‡Mº¥28e .ZH¨…6Ùa“ Ú¥‹Üè¢]61à–˜`h9Å]ºh!!YÙ¥‹v颅„˜Èà–> e—úÀí–.èb &¸e—6ÙÅ „ºha > èc“Úd„NÙÅ&vh@– Ú¥‹v颅]ºhÀ.è€þ>8e—[ºh ‹„ºØa &¸e—6ÙÅ „ºha > èc“Úd„N‘³c?¹‹vÙÄ€ZØ¥‹v颅]61`“] RÈ ] ¢È¨‹j¡‹… Ú¥‹v颅]N1  º`è– hÀ]ºh!¡S2຅]ºh!¡ ƒn77É Y2h!ƒꢅ„2¡…>bÄ€v1€ 7dIÈ ]ºha—.ZØ¥‹v颅. h …6É Yº¥Y2h!ƒꢅ„2¡…>bÄ€@f½u×íꢅ]ú0 vÙ¡…]ºha—> 8eƒ2hþ&8e [êÂ]º0` . ØE–]Zèb!ƒv颅]ºha  vpã†NéB– Ø¥ v‘e—2Ø¥‹vé€]dÙe‡nÈ-vÑ…Mäæ]h@vÁ„œb ·Ø…AÒìB»pƒ20Y´ ›ˆ6±ƒì¢ ØÅZ°‹.´`]hA àta ·èBº°‹.0!!LhÀ)r‹]$!]0À.d± 7 ‘E 2°‰×UÑŠWJ 0aÐÉ@úÐdÀLèC vÖ‚Sô¡;k'F`€` qCZЀ. dÐi@þ ¤-ØY *Ѐ>d }E Ѐ0äA˜°‹M@§»è‚¸Ö€Sl: Ø…,2`€`»0@ÜtŠlâ#0@ €…쬧ØÅ& Ó€]ÜÂ}ˆº`]HZ°³è:h@2Ѐ>d 0@F`€>$ä-(Dd‘[ŒÀ-0Z°³œb›€Nvq ôa nè‚ë:P‚&¥ -8…,Ò“…œB‘Å&"‹MÈB!²8ÅFº`€[¸ÁÙ„,"‹S$¤' ‘Å)"‹M$dArш,6!Yœb }hÀ-8ÒþŽ0¡ ‘Å&$"‹S ¤ ¸L•ºT¦6Õ©B1HžZFdÀèCQºp‹©‚¤éÃVºp‹ŽôÁ }èjZÕºV¶¶Õ­o…k\å:WºÖ•®$Iˆ,Hr …¬d®+±+\{XÂÖ°‡•HZ>´ -PˆA*Òƒd©AlQZÐ…´ ·h(’MdÖ´§E-[»Ð‚…D!+©ˆ,6a&l¢!]hRV‚ØMÈ‚!]hDºÐ‡lâ Á‚ú0F0Â`È&d1>´ !]hDºÐ‡lâ©oxÅ» d ØF° Œ`]A °ƒþd ]€N vq &`8EC Ð… #0@ º´  »¸E `€.Ü¢ €NnÑ‚  -0@ `€M,¤ dkÁ.ºìÂhvtá­²hAdq‹dÀnèBЂ.ìâ”´  »¸E `€.ô¡}HÈ‚ À„Ü‚ ;0€,"‹d@»¸E6±‹[´ pC2Ѐta§ÈÀ °  4 ]ØÅ-ZÐt¡ èÃx½hÂv¡}pƒ’Ђ]t¡»èBúàœbQˆAvÁ„Üb;ØDC Ð…tþ¡nèBvÑ…$„ ¸E PÜ¢LØ2p‹>@-hÀ&v°‰…ôÁÙèCB ²‹.4 n0À)Ò‚>´õ]h@² 0ânØEZY0b]hÁ.ºÐ‚„0!·èƒd±‰´à»è 0좲0€vq‹.4  é² 0ânØEZY0b]hÁ.ºÐ‚„0!·èƒd±‰´àŒ†yÌÛÚ…ìbèA vÑ…ì¢ -ØÅ& °‰]D!Ù…A(b€. ¤ -ØEZ°‹.´ !- ›ô`€>d  »hAÖ7Ñ‚.Häþ`‚B ²‹.´`›0À&⺉ ´@¹E Ð7ì¢ -HÈ)¸–ì¢ -HH ²¾‰]0Â;ØE Àdà hAv°‹Md ²È- ‹Ü¢h€vÑ…$äƒoÁ.ºÐ‚„´ ë›Ø# °™÷Þ÷MíB vÑ$Á»ØA vÑ…ì¢8Å. ¢ƒì‚ 8Å@nÑta ]hÁ.ºÐ‚]tÁ»Å.vЀ[ äØn±‹4à¹E ºà[d`»h„0ˆ]è‚Ø…>0€Sˆ.Ø·º….h€.Ø…SèYØØ….0€]þ…]Ø Ø….h]èØYØ…h€[Uh Ø„ØèƒhÙ„.0€¸….h€.Ø….`‚„8….…0€]èØYØ…È€]è‚Ø….0€]…]ظ…P…È€Mø½1$C®èÈ`‚M€Ž h€>èÈ`‚>hiSèƒØ™ð„0€0€MXˆ>hȀ؅ h€>È€èƒM€ŽØYÈh(„0€Ø]… 0€0€h€ h†è‚¬Û…>hi$0€ 0&Hè¸:…Ø„S0€È&Ø…M€ŽþØ….0®i€SØèh€]… 0€0€%è…ØØ„Ø`‚]`pƒ„8…(„…„8 `‚]Øèh€]èàš8…M€ŽØYÈhX‚.ØŠ‚4ȃDÈ„TÈè‚8YˆžXˆS…‹…MèY8……MØ….0€[pHYØè‚8YPˆYHŽØYHY8…„è ……SPYØ`‚.`ˆM…„…SHˆžPY8……Mxɧ„ʨ”Ê©äƒèªLFÈÈ€>ˆ ƒèƒ…è‚[Àʲˆ.¸³T˵d˶TÈþ[Ø·”˹¤Ëº´Ë»ÄK„<…0€.ÈË¿l‰Wx…‰˜„IøˆQ…(LÀdÌÆtLº4ˆÇ”Ì‹P€I˜ÉÍÐÍ‚4€.MМ„WHˆ9ŠhøÄˆ&‹˜[8ÍÜÔÍÝ\ƒØÞüËWx…°…˜[0ؘ€]€ h‚ P]°P[Ș`ˆ&˜°h‚]€#€90È%Ð5ÐEP˜è‚ è‚uÐe[h‚h…hØþ…IA0Ø…&]hh‚˜0€Q˜„Qƒ[ؘ„]˜˜„]ØÌh‚˜0€P[˜x…]˜(Ì Q€Ð)¥Ò*µÒ+µè,åÒ­˜WH[€WØ[0Ø…&]hhØ…I€I°€ƒÍ\h…ØÌhØ…I`Oöœ„]&PAŠJµÔKÅÔLÕÔMåÔ†0ˆNÕP• [h‚h‚h‚ˆQh‚WPØ…&€]PhØ…9Äl‚WPÈþ…°…]&PˆÍˆ&]˜°…°…]&ˆW˜„†ðÖo×p×q%×r5×sE×tU×ue×vu×w…×o•….h€ˆ×{Å×|Õ×r˜„W€WˆQ€ P€Ø…I`O€€Ø…Q€ P€°… €Ih‚PØ…9…&€x€Ih‚PØ0h‚}åÙžõÙŸÚ Ú¡=WYè‚M¸¢UÚ¥Úh‚…˜„WHÁTˆQx…˜„WHˆW˜„r…WHˆW˜¦%Û²5Û³EÛ´UÛ0µeÛ}m[hÛ¸•Û¹¥ÛºµÛ»ÅÛ¼ÕÛ½åÛ¾õÛ¿ÜÀÜÁ%ÜÂ5ÜÃEÜ´ ;libjibx-java-1.1.6a/docs/tutorial/images/mapping-extends.gif0000644000175000017500000013646110350117650023745 0ustar moellermoellerGIF89a4œç• ÿ """((()))ÿÿÿ333€€ÿ777888""ÿ‰‰DDDHHH22ÿ33ÿŽŽ€‘"‘PPPRRRUUU‰XXXDDÿ\\\HHÿš3š```"‘"dddRRÿfffUUÿhhhXXÿ¢D¢¤H¤2š23š3ppp¦K¦qqq``ÿrrrffÿwww«U«hhÿ¬X¬{{{D¢D}}}H¤Hppÿqqÿ°`°………R©R³f³wwÿ´h´U«Uˆˆˆ{{ÿX¬XŠŠŠY­Y¸p¸¹q¹`°`……ÿ¼w¼f³fh´hˆˆÿ–––¾{¾ŠŠÿ™™™p¸pq¹qÃ…Ãw¼wĈĖ–ÿ{¾{£££¤¤¤™™ÿÀ…Ã…ªªªˆÄˆŠÅŠ££ÿ¤¤ÿ͙ͯ¯¯±±±ªªÿÒ£ÒҤҙ͙¯¯ÿ»»»ÕªÕ¿¿¿¤Ò¤ÀÀÀٱٻ»ÿªÕª¿¿ÿÀÀÿ¯Ø¯±Ù±Þ»ÞÌÌÌà¿àÏÏϻ޻ÌÌÿæÌæÌæÌÝÝÝßßßÝÝÿßßÿïÝïðßðÝïÝîîîîîÿ÷î÷î÷îÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!þCreated with The GIMP,4œþ+ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cÊœ9s"”Šì ²È³§ÏŸ@ƒ J´¨Ñ£H“*õy¡é…Š]ÔðÂŽAQtz‰"…\˜paÂAUÚ©Ò  ƒ–ÊK·®Ý»xóêÝK@‹;P´CQà ;íPD@‹-sIH`G¥B;!T´CQ%íPÄ·´éÓ¨S«^Í€i¼±)’H\vØ!Èe— ;"Ù©m'—vrÙÁe¢‚쌂€"iv0QTi&vþÙ©m'—vF²É;v Ù‰$Ë&‘F²‰Ë;<(à€hà&¨à‚ 6è`CØ!ÐØ|@ €Ø!Ð\ ;Ø|@°!v(À`Ç@ŠÀD%-(²\ðÁ†ØQ‰ØqMÝ€•@@À  H%vÁ†Øñà™h¦©æšl¶éæ›Á †À)°C%\0ˆ@ì`ðÀ„@ ìP  "Ð;€AD";T€•Ø|0!;TbþvT€@v` RI$ ´P‰0!;Àiì±È&«ì²Ì @ €]@@ÀÀ@MUÒ]°ƒÀÀ@MUÒÂ]°CAØAPS-(Ø\P vTbð0PS•Ø€• ØÑÂí @%v0PSÍVlñÅg¬±±Ø1#5UIS]°ƒÀÀ@MUÒÔ@ìPvÀ(0ï\T€•Ø| ÔT%v`G%dv45ÐTb5µñ×`‡-öØd`Ç@Œ| ÔT%-@0Ð;Ø| ÔTþ%;(0Ð;€1À ;@`vTbð0PS•Ø€•0H%v`Ç Ô•ØÀ@M‘­úꬷ0_<| ÔT%\ÀE%\°ƒÀÀ@MUb!¤Ñ;ðµÀ•Ø¥ÁE%ØQ‰ÀÀ@MUbvT•|pQÉ ìP‰ ÔÔë  @±ˆEi°à€4E !ˆv`ÀiŠ@¸ ´;(ˆ. „ 0 *;T€ҔJØv¨D ÄØ¡þ;0à"Q ;` M! —ÈÄ&®nv˜˜øXdv(ˆ"ì0ˆeyñ‹` £ÇHF8A0 @$ÊÈÆ6ºñpŒ£Ô‚¦´`sÌ£÷ÈÇ>úñ€ ¤ IÈBòˆL¤"ÉÈF:ò‘ŒdDàSA B!ðˆ%%ÉÉNzò“pR Ò…(ài (WÉÊVº²"iPÄPK*dˆ%b‡H¼ò—À &#q(b¸B°±\@ PpE@@,¨ÄÄrJ@À* @,% „ÉÎvº3‘Øv € LþÀ *Ñì€LØZ €HìàiJ%v@&쀕°"qT¸À ÞÉÑŽzTYvPÀ! v€*Ñìà•ØS*±ƒ ¤)•ØÁ*±ƒ Tbà‚v 4 MªR—ú Hì€;¨ÄP .`•hŠ@vpJì ) ¨D.0¦Tb¨Ä. ì€ ‘PÄ`¦Úõ®x".`‡@h. ˜ Bà‚б(€\àÂs€ A LØA^GKÚÒBdŠhˆ"á \þ€igKÛÚ*( €¸`ÛÞúö·±d›"a‡HX²M‘°C$,¹EÀgŠ„"aI6E‘°$p·ëȦ´i°CSÚ4Ø¡) áÂp vhJ%Òp\àLƒ€šÂÝþ–1 Š%ÝEF";¸À€ À4¤)€"cì hÈ. (0•°C$üKbe)â P € ` €vP ±\!Ë‚Jì@,¨\ ‘€ÄÂ…‚@À¡`•pDâÀ*¡øÀ§;¨þ|*‰b@%JD v \`•ˆÄ@.¸*‰ ;¸6;Tb•€A"Ñ@ƒ¨DS2@;ˆ&T"P˜ 3ÛA ;¨|B p!€@%H@@`B%v \`‘¸€À…J¸"q`•¸6;ì ð©À„»ÛM‘Øv \;€"ÒP‰\ ;˜€€ LÀ Ò”Jì€LØ*aDâ!0ÈÀ„@i¨Äþ.P‰\;@  .@\àŠAZ@€HT"#¸@%vpJØ\*±ƒ ¤ˆð‚ @`¨D  .@ €B`‡…´€‘¨DìP‰¦Di¨Ä.`paL¨„À…A0 \1HS²ƒ Tb°¸0&dH  &@;¸v€( \€"*qØ!v0ˆ pA¼ûôh²ƒ. ævÀ 6¤€ Tb¨„0T°ƒ@šR‰\ ;¸@%.(`ÙÁ*±ƒ ‚ö¨`.þ`\`„vP„­ Ò”ìà•ØÁ*‰ €L¨Ä.0¦TÂÁ.`Tâ#dMáMQM!ƒ@{ À• ÀŠ`kq@;p•° À± MQ vv`p#d•Ð ‘¨×ƒ ;@;P €qv! •°P ;•ÀP \ƒ MQ ;p•°  °L ±P ;p! •°P €qv!@‘ ‘À\a-@ƒP ‘P !pþ•0; !•°P ŠP - •À;pv•  Má-@ƒP µQ M!! •°0; !•0; !\À±` ;‘0; !±P ŠÐ P \ƒ`  •С vàƒìØ Špv ;pvBƒ° Ð; -P \p‚q@\ ÀŠ@@!` @\ €°!0 °`` v°‘pðþb¡Àƒ -P v P Š @; ;pv\  # Бpp 0;Be -P ƒ -À!@ð! @? - v   °• ;pvF p`; pL°íx™k²Z±0ŠP ;ƒ  ± \ ±Z ¡vðŠ`±ZaŠ0Š01‘Š`¡v€«Ev aŠàŠ`Š «Ev ¡ƒ0ƒ þ¡v€™Þ)FMÁÑ\ài  \ðìÙžîùžðŸnaI¡ð1 v –$–Tð1–Ä‘`‘`I±Zòù % ´·•ÐÁ@P p1`M!MQ pÑ 1`MQ `:£„”Š`;p±0 vƒ ŠP –”MQ;pŠaI±À;paI± €A\pv 4Z¦}¤ Š  À; p;P "P • -þ) p;P •p°!`‘p;`\Ð;  ‘p; M!ŠbqŠ`k±•;  Šbq‘p;P  ° @°•°bq•° @°• °• `\@L`¦æG‘°°aÀƒÀ•°@@v#p•°P -@‘P !`;p±P ;p•p`!`- ‘À ¡Lð!M!- ‘À •ÐÑ þ ;p\ÀÑÑ  ;p- ‘À ;@L°P ;pѱ0i\`€;apƒp®\[Fv   À•°@M!;p•°P MA;p±P ;p•Ðq#da@M!0BvP M!MQ ;pŠ`kÑÑ•°M1Bv°P ;p•°PM!;p¡p\p‘@Š0i!еº+F‘°°•0; !•°P Š M!;‘P -@ƒþP µ±P ŠP ;‘P M1!@‘ ‘`vÑ  •Ðq P !p\ÀÑq P !p!@‘ ‘°P ;p•°P Š0M!;• Á ±- Šp `»»Âa¤`ƒ -P v P ; P v  @\ ð!P v  @  Š p`ÁY 0Š pp 0i  @\ \p‚qƒb¡` þv À @\`bA•À 0v  ‘@\pŠ@Š L°,ÊddŠ0Š0±Z¡v0Š0±Z ¡v@Š`±Z±Z¡vŠ0 ¡ƒ0\@‘p-°¢ÜÌμ\Ð\p; Ï|ÍØœÍÚ¼ÍÜÜÍÞüÍàÎâ<Îä\Îæ|ÎèœÎê¼Î¤µv@;`±vÀÎöì_°;0°÷Ð=Ð]Ð}ЫÅ–tÏ }W `<Ñ =Ñ0\pbI a‘@Ñ ýHŠp   `þpP ƒ ; !P bq;    @bYÀ!ýÔˆ ;@;@;•°;• iP ;p;\À0;\À0•бÀ;@v‘p! v0P=Ø‚d pŠ0‘@ŠP €qv•0´w;•``;•``•бP ;pƒ\ ;0i!@Ø´ýG‘°°±- €qv• P ;p;•À0;•Àþ0•бP ;p• ;À‘P Šp `µ}Þ~¤`Š@Š  °`À;B) -P ; -À 0 @\ `•À;€ÞþG-° ±Z±0Š ;ƒ  ± \þâ~´‘àMÁÑ\Ði  \ã@äBÎЇp<Á|À‡ ’À’Pä ‘äQä ! | EÎI®&’À’Pä! | EÎÂfî$@•’@h†ÄH M&!a’D>.`¨”„D%$™9ÀÈ$B>HÚTèP¢EEšTéR¦M>…UêTªMùT Áa’$$ø8TA,‰JITâsÆJ|ðA8²R•’¨t耙 I‚ŽÜ9á!±HH"q –J’Hh€…Ê|†H‚pd¥$#|þ>À' ‰JIHTJBbçH„IH˜¬°„£‡ “¨”ä@%>ê8Ð Â$$Ždx¨0ÉIH dT™Ð$$LŽD˜„D¥$$*‘}€Ð8\TEŸ^ýzöíÝ¿‡¯^R’I*q%Á瀋 •’¨$‰*1ã¨ÄŒAh¤J’ ¡’$H@¨‚$°$(8¤I$©d$„\¨ ’$H8$ F\8 ’C’`Ä…Ì ‰„¡H!*¨Ä\h@„$I‚„J’ ¡’$¨„†FB(‰*a!3¨à(*¨$ *Iâ€JÌ8 $qá„’8 F*‰!*¨þ$ thàJ>¬$‰*aÄŒ…Jâ€JAh$„’8@H¨Ä…$AH’!¡>âã´SO?5TQ¡b„>*H‚>0á±8$‰*8@‡$¨à*1ƒ„ A‚̨ 3ià€\J’  á"Hø•„C’8@¬Ú8`ƒ t¨ä6¨@£Ì ဠH¨$ŽÏ*h€Š  á>*hÀŒ 0ƒÏ¨Ä ~%á>>k!I0ã¨$«C’8 ‚t8ä€ *Ð!>>k ‰_I@(‰ÄjÀ  á>*á㳎âã³*IâW*áã³ þ0ƒ‘  á>vÂ"‰Q—fºi§Ÿ†Ú)Fa(‰a¤’$8„¤’8@3Š>†šÚ$>1‰FœšÚ$Fø Š‘Cˆbä†Ìh@¤¦ÞéF⃓9d¨©Mb„“9$)Fjêá#jÍ7ç¼sÏAÉ „F2#©8*8 3>¯ÊŒ‘Ì`=vÙg§½vÛoÇ=wÝwç½wß¡f„²C––„I9diIøy¢(Cy¡¡ì( J>$A~vÊ’’„IßiêßÏG?}õÌ ¡–>ä>FZúøI(I K¢’‘„2 @‚T€A9Äþø0’Q‘ •0 Ì`”  )‡8F²“ ðA}aãÀ¤Œ„i`Wš’TåŒàŠPøp€CH‚•@QF²“$@(`Wš’LEà#À£$áJ9#¸b3€’aµ¨;F Œø W€ƒ làI`ÈH*q€ T⨄$HЀ$!(¨À@‚CT`HB%° ’ A„J0B:•HB%(S IèàøÌ*q€ TB¨À°„ 4€IÊ*° Ø@%°là$hB’P ÊÅ 8ÀH’þð D$hÀ’€‘ „ø !„$¡”‘„°â¨Ä6 ‰ TàX¨D*Ð$A$¨@ÌP‰là$h€$HЀ$¡$8€XƒT ¨Ä6P‰là8 P‰$€p$HЀ$¡$8€XÀ‡$T‚2 ‘Dø`†`a‹/…©ç$‘„$!f8À!QFÄ¡I CFR‰$ I A%tPI˜áŒØI€…$4€q¨DHP‰$`I8€* 3€f¨QPtÐITÂ0 A%’@‚Jðáf8*‘þ0„ÒIB°„T" $¨DHl 8 #°pÊ d$ÑA$a†0¢#Aˆ* ‰$À 5 Š ‰J¸€I A%’@>À ‡ÀB’@„è ’À‘l ÐA$a†0¢$h\ƒ$4 ¨DHP‰$ $Ø@P‰$À X8 * 3€• Aøà>% .@6@‚CÄÔ¿ÿ]*@F0¤\ÁÂ! C†Œ¤I A%’@‚J <|ØIHP‰$à…!A%¸B>€áá#¤”‘0$ $¨DHP þIà ÀB%’@†˜¡FI A%’@‚J$•H ¸B>)|8€IF‚„‡• BFR‰$€Ò ÊHL’T" $ Ð, $ $@ÈH*Á‡ð+$àÃH>Tb$á p€J$•H ¸B> I8@%øp€ „‡• Q$ÑF0$p€E=jNI" HBtð+I¸ •H 2’J$á’p *á‚H!’ØIHP‰$À¨DHP ®€pA$I˜¡FAÑAQ I á’p *qˆ$0¨DP Fþ% $¨DHP‰$@. WHÀ‡ …0ÉHâ‚H!’¨ÄHB‚ TÂ$0C‚¢ƒ¢JÂ$á" ŒpÁ’„T‚:¨@%Ìp€Cp…|8€  „H¢#AW*QT" „ HÀðá•HÂ*a† ’@ˆ$*1¢$Aa *ÀRwÝëìa øP >@•HÂÄÒ€C˜¿">S˜8 À‡T f¨@Lp±4àH øp*Tà$8Œ"‰ €ØÂg*Ð3⨀*Á‡Ï4þ (h€*Ð3ðá3h€’@>À F1Ã@3˜¿"Á!QàD Á¯Hpˆ8|¦ 0CQ$±à”ùLЄl :@>ÓFT` HB%*ðáT¨ÀHp>$áW$¨„XÁ‡T‚Ÿ©€p€$ >83H‚¨€ÐF¨€ àƒ$ø FhF@,H‚¯óÀt©!Š©Ù Fघš¢`>P Fà„˜šàF`F8„¤˜šö`>Š©Q Fà†˜“àF0 F8†8I Fàƒ¤˜š¢8F`Fàþ¤Ð$Á-äÂ.ôBÚIIøÂ1$Ã24Ã3DÃ4¤Š©‘ äQÃ7„Ã8ô¯ à© 9ÄÃ<ÔÃÛ‰F`3 ©@¤àIØÃCDÄDlF `„„àƒØ€ ¨„C¨€ 8€$ø 8¨„Ï p$ø @ˆ¨€ 8„ h€Ïè½ÀEÄÅ\ÔE¤„$h€$0‰$pJHØ€$8€J`„8¨„$ $83À‚8„$83À‚8„J „H‚À‚$h>8I @>Ø8„]tÇwÌE>¨`†„`„Jà àƒ¨„Cþ( H‚¨>8>H‚¨>8>¨„‘@ˆ$ JH8„0ƒ H†ˆƒpxÉÌCIH‚H„H@® >8€Jp ¨„$ $8€J0ƒ8„$8€J0ƒ8„J „H¨„$ J¨€$ÀI¨F à‘¤ÊªTCF >`„`„¨€$ >83H‚‹À¨€ÐJH‚¨€Ð3 _!C¨€0ƒ h*h€h¨,H«4ÌÃ4CH‚¢˜„H‚8F@ˆ$8€C`„£H‚38ÄôÌÏìÂ$„¤ 3`ˆ‘0þ¤ˆƒ 8€ 0Ð„ÍØÄÃA„¥¡C „DHª J0JÐM£€C0„D˜ J0JÐÍ¡`Îæ J0JÐMç¤Îê¬âtNJ0JÐMæ$NëÜ Ý¬NJ0JÐMðDÏôTÏõdÏötÏ÷„Ïø”Ïù¬Î ¸úLÏDèC ÀÏH„0„þtN:øL„0„þtP PúL„0„þüO¡P pÎDèCèÏJ ƒe‚õìÏêL„0„þ¼ÐuÑ…Ñ•Q÷LE€OڜѡèH0€Ñ€„­ÎþŒÏ€„5„°0è: Ï€„UþO0‚ô  Î€„­H0„°C`0‚ê 0 Ýd0æìHèQ;ˆ„¥Ó:µÓ;ÅS¡P„ PE€ €AP€¨€ €PÔ €¨„PÔ ¨P€ ¨„H€PT.؉Pè H ƒJèè Jè0¨H Nâ¬0¨⬄è è€%  ƒJ‚Pè@ è5¨J:è „ƒJ Π +èè€D¨„þDˆDPè0 PPƒJ þPPH NâD0¨⬄Hè5   è€gíC PPJ:¨„Pè ¨0¨â Jè0¨ è€þì'P0¨Jè0è ‚J€V  PPƒJ€„€5„JƒJ N†è0¨H a‚J  ƒPè ¨0P‚V @0P0V ƒƒJƒJ N. &€ÏÂ5ÜÃEÜÄUÜÅeÜJˆ„ €@ˆ¸ØP„4¨„¸€JØà&€þ.`„°ÏJØ`‚ €J°ˆ„  P0HèƒJ ¨0ƒ° :èH ƒ 0è:Pƒ8 :èH¨ CX‚5è:H5¨+JPƒ¸P0ê´ „JXC¨„þDHèƒJ 0„ ƒDPƒJ0„ ƒDP:xP¡è X€+PJ ƒ€ CXâì:H5° 5èHP0ç´ :èH °a:¨0†° :è€+5¨+PJ 0„ þƒDPƒJ ƒŠƒJ° 0‚J° :è€+5@0“èO† @ˆ>è:0 ;€€ „Æåã>öã?d@¶¸E@ˆØ °pä ¨„€J°¨;;@û¬„¸€JØ ¨„A.P€ 0‚J H„gU ¨„Cè Va5HÚ ƒ¨Cè€Øå0„JèO„  èPƒJèÏJ0„p ¨0êìÏèO„HYJ‚5¨J‚5€©Š°5€„J‚cþ6„þdJ‚5èÏJ0„00‚J pN 8fC¨Cè@0†‚cv ¨0‚JèÏJ   èPƒJ€©ŠƒJèÏJ ¨ 8f'‚J @0“èO† `   ƒ¡H@fê¦v꧆j†ˆ„ €¨D¾;€P€JØ ¨„€JàH¨.€A@û¬„¸€JØ @Ø&ˆ„  ¨0‚%PJ ¨„Cè€%J@J ƒ 0è€J ƒ „ „JèO„H0€„þ%è€J°¨:è€)‚J  N+D¨J „JèO„X¨0‚DHX‚¨„DHX‚ ƒŠ0†X „ „þdˆDHX‚°¨:è€D ¨0ç\ „ mX‚ ƒJƒ¨H¨„%J@ˆ.‚J ¨ PJX H0€„%è€J ƒŠƒJ¨„%‚JX „è ¨0„ƒ¨H@ˆþd0è€J€„J ƒP¡P„ P;èã·ñÇñW\E¸;P€¸; G&€AØPþh€¨.¸ € 0à .P P !è€gDP0Cè4P‚0çƒP°HP‚00‚JH„ °‚J€ :P ç¤è è/‚C‚DƒxVȃ °‚JH„ °ç‚ 0@HP‚p‚C„H„ °HP0¨:P ƒæ„è èC  ƒ:0aJ€è è:P ƒ>Vþ1èP+ N:‚P èaU HP‚@ :¨CV  8t H„J0aJ  ¡`‚Ðñ’7ù“Gù”ß EP†ØE¨„€AP„ê܈.ê„HhNH0„êƒHH`H0æ4H0‰D ö„CŠŸ7 C€“0H`OH0æ4H`ˆD ö„C`NHH“€CŠŸ7 C€„õüù€C`NHHæ„„D@:JPùÁ'üÂ7ü>¶O.@ûäëLàïO:8üËÇüçƒþ¤ƒþÌ÷üÏýÐýÑ'ýÒ7ýÓGýÔWýÕ J0JÐMæ$ÎõÔÍê¤C Ý4‰ŸgýÞ÷ýßþàWýDèCèÏJ ƒe‚õìÏêL„0„þ4 0áÇþì×þíWÏ>€„  `O0ÓïHèÑJ€Cè+0† ¨N0“ÐM† `΀„e: • Qªdð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ£GH@T@¢DCE5`Tˆ¦*Ttè@£R•(Yé@£Ã"€€©ÔF¥4€t˜ÙÁ% ":€QØF "© þÑL¥š@:,Q˜H`(ÑPÑAM%H†æª¦Ò܃ÀT‚D£&J”€ˆè¦ƒ €T£B0`j1F… `jÓL%0•æ¤$ÂP%:"ÔHlíú5ìØ²gÓ®mû6îܺwóÎM Œ0 u “HM%0@ah‰ •À©dE¥JK r J`€T"ÂÐCVTP¢ÓRB0@h€é©O%0@*é@GMÐeH%ôQ @Ò‰¨Q @HC€Q‰*P•X¡%ttp…j€!‚A`„„A}t@‡!40ÆþB‰Äö#A 9$‘Ey$’I*¹$“ ¢D ˆ F%`„D%`Q‰„ÄA`Q @T"áA@ÔT“! I„!$2“ @TF•ÒQI"|A ˆ F% ÈP`T"a%`Q svà•€„A`„ÄA*Ð Q"$õÑÁMêº+¯½úú+°Á Û%`ˆF%‰€ÉTF•@b„Ñ%KQ‰"$R %”€ÑA%TF”,D%´„”DIB’aHK¨P @TF•ÐÑAþ" -¡B%`‘,ÑA%tÊP`T„ •,D%Kˆ@‰A]Q @F•@b„ÑA%TBG*0†A„ † û3ÐA =4ÑE †$Ò *XQ‰!5‰P "ˆD%†Ô¤‚tPBC@t0WM"TbHM*ˆ „Õ@‰ Ñ! ©†t D3‰¨Ð ÑÁL"äÑ *X@t }Ô¤‚t@¢B@t€‚t¨ •R“ta5‰TbHM"TB‰t,‰¤Fûþ;ðÁ ?<‘†@r$‰0 $ AbþÈA$róAbHDÌF‰@ÂóIlÌ'‰! A’HC$b"P²`?þùë¿?ÿ@KHGÿ B Ña!` D¨À2°| #(Á RðWаƒñ³HØ!ƒB0h-vˆÄ‚Aƒ|p!ŠÀà ‚A…D‘øàA0xþ*vˆÄ¢ET°ˆF<"l¸p\àgƒ€.pƒDBVÜA%¤´AÀR\H$¬¨€TBŠ áÂp„(à ì ÅJDBŒ;0ˆasT‚ à‚k;H! °©È¦þA‘"РˆìÀ vÀ "¡ˆJ|P";¸€’ J.ÄD$Q‰6DŠ ÙÁEP²vÀ "¡ƒ|0";¸ÀAZ;(Šx AɃpá•°C$)ÍiêOP€"J  €vp)V¨ P‰H\€ØB àƒP°ƒJ¸"q`•P1X‰Tƒ•à Åh󹬀7@@`B%v \` € € BÀ*àˆÄ€d•À B¸HqþÚ¼€A"q`‘¢Am^@ µƒAvP rb%v Í Tâ°"ì (LØpTbP@%0@;¨ €   v`Tƒ‰ìP .€ Ô¼,f‹‰`á¡(" •ØÁ"ÅJìà•ØÁ*ÑD‚ PDBv@&쀊HC%vpJìàØZ €HpŠà‚¥¨E04ˆrØ!OÁƒìàQÄU+±0aPD*±ƒ Tb€ÀÐD‚ þPÄCÁ`Ð R4H  .@•¢AZ €Hìà\ˆî¢&ƒ‘¢A.@;„ƒà ˜P‰\à ”$ ˆ4Tb¨Ä.  ˆ ˆ…ì ±.0ˆÌ2¹É¿²ƒ. ˆƒ€’L„/p)Vb¨Ä.P‰ hS›vHÈ.P‰\`b¼@%(y;àe€qÕ…Ø‘âA¤hH\`‚AvpƒpÕØÁ*±ƒ BŒ¨%/`\àÎv€ˆ€)äw¶C%¤h)VbPÄUb$DŠþ‘âA"q€ •ØÁBI&ƒã*AÉ Ø¸³ (!i@œ¬ím/); À Ò !P@%vpƒH±;@$BpJ„€‘0H$²ƒ Tb*±ƒ T‚’°B@€H$\ÀðBì„Hñ R4È v ˆÀ ;@%¡\ ;¸@P‰\ ”¼€D ‘€ˆ€)$ˆ„A"Q )ä ¨D.À /ÄHˆ "Ń bŠ*±TB• d%€( ;¸@%(y; ˆþ„A"¡´à Џ€ìÀí½ó½HЏ€*a´ ;€ 0.\€ÜÈ‚6@.(B¸ì€ `E B;¸€`à°ÃC¸\€ \¸¹/0ˆû•  €ÄÚ$€B@.(€€ 0ìàv€€ ÀápÛ_€Ü„"€ à ÷‘m*€\p € p¡\¸¹]@ ÛÄ (@ T‚hT‚ ‚À€À (À\€€(\ØABþ((ÂA0Áô ¶à‘ QC QB(‚DÄ9„"Ø’Ø" „" BD ‘C(‚‰"ØC Ñ’Ø"„" C ‘C(‚,D ì€ f¡n!ÉDB†¡¶†"`Ð üL$ØA$|P%( ÂÏD‚DÂ5Ä-„"`Ð )D$ØA$|P%( ¯D‚DÂ!Ä!$FbDpÁÀüÌ €HQ%pÁÀüÌ €HÑBD‚í€AHÑBpÁÀ „\€B ØU\\l\ÀT\¸Æ €HB(€H¢þ3ra(BDHЀ"PÒAHQDìÀ( (%-„À D‚"Ä5„!Ä\ÀB€"PÒAHQDìÀD €((Âk€"PÒApÁT‚DÂ3&$ß)Â(€"h%@ (À„U@@%TB$\À((À ‚@ì@%À@$\ÀT‚"\U%ì@%`ÐAHQ% ‚@ì@%D(0Á(\À((ÀT (ÀÀ@%DÂì@%ì@%`Bp€UÂhþÓTB$\À„U‚"@€6]@%(ÂUUÂT„U (ÀTB$@€ì€Àì@%ì(@%À (ÀT@\DÂì€Aì@%`ADØA%p0B'“EÂÀÀ (‚(BTÂ\ÀAHQ%ìÀTÂ\@%´€D€"$Äì(BTÂ\@%ìÀ@À@ (@$p(`CHQ%(BTÂ\@%ØpÁ 0A%ìÀ„"\ÕìT‚"¤A%ìÀìÀ@À@%þ´€D€"8„"0`ÐAHQ%´€D€"„UB (@$ìÀT`CHQ%(BTÂ\@%ØpÁ 0A%ìÀ%€"¤A%ìÀTÂ\ì´€D€",Ä„ÀAØ\À 'œJ“(À(ÂA%1Á ˆÑ„UÂ\@%ìÀTÂÜ™$Ä\@%ìÀ ‚]@%PÒØ\ÀÙ"\CHQ% ‚]@%DÂ0A%ìÀ`Ø\@%ìÀT ˆÑPÒØTÂÜ™<„@BHQ%\ÀÙAHQþ%HQ%ìÀT‚"\CHQ% ‚]@%DÂ0A%ìÀ%1À ˆÑT%]€ÀÜ™(D$€" D@Ä©¾&R$ìì€A´¹EB(@%ìÀ„UÂ@$„ÀTB@$D$$Ä\@%ìÀ„€TÂ\@%PÒØ„D‚AD`CHQ%„€TÂ\@% Â(B@%ìT‚"(Ä\@%ìÀTB(@%ìÀPÒØTB@$D$<„@BHQ%„D‚AD‚AHQ%\€TB\@%p†1„UB(@%ìþÀT ì€"„TÂ@%(B%PR%(„€TÂ\@%PÒØ„D‚AD‚Bì@ „"\€ØÁ¾v.)ÂØA%Ø´@%ìX \¹]@h“(‚À€$„(`X ‚ìÀØÀ€<\¹]@ €À(@ T‚h(„(pÁ€€ìÀØp"(\ØCpÀpA%pÁÛÀÀ€pÁÛ06)pÁCpÁÛ¤Xþ|@€´@%Ø6@%XÑ ØìX ‚ìÀØÀ€$„"€"ì€çñe QC QB(‚DÄ9„"ØAl QBØ"„" ‚D ‘C(‚‰"ØC Ñ QBØ"„" C ‘C(‚,D ìÏ1×ñ®ì@$رï1÷±+Ò Éý1!2$*€‰2#72·¥"\À|PDØA$8²&o²)Â(€"D$€À@% ‚@ì€6]„@%hÓ@ì€6]€A€@\@$@h“þíp²2/3þDÂÀ Ä„@%ìÀ@À@%(BTÂ\À0 Â0 B%H‘Aì0Á€@$\@„@À 3ÿ3@(À(ÂAD(B%PÒØT ˆÑìT‚€ìT‚€T‚Ä\@%ìÀ pìÀA¤„@@Ç´LK$ìì€Aì@ %]€@%„€TÂ\À@%p Â@%p B%H‘AìÀTÂ\@%(À0A$T‚"\€ØÁL—µYïŠ"\€((‚A(þÀ\€ìX¤(´@%ì(´\¹]À (p€@Tì€^6fg6µÀ8ÄÄÀ (‚Aì ‚"@Ä@$ph6lǶl3ÐD‚DH„qAD¤€pÁl7q·q7r'·r÷ÊýÌ$Â$ "øÊ$Â$H7D8‚ "É$Â$H·¯L‚ L‚tóÊv?Ä$Â$HwClwlHwDL‚ L‚t/7~‰ý "D€ Ä@ ø "D€ 8D¸A X@  "D€ ¸AÜA œ@ 0 "D€ þ8¯x@ <"D€ x%¸€øAx@ Ä€G"D€ x~+w(  M8BTÁ¯D€#ì¸DøD€#ìx%BTA%œ@“D€#ì8lTA ¼FÄDD€#ìx%8‚ DÂATA DDÄBH÷ATA 4D8ÂŽÛA$À¶œÿˆ"\€(@\ ‚@ì@%\„¡_„@%ì¡_@%€@\@%D¡sABD€œ@Ä"xÀ D@TBœ@Ä€LB X@TA%8Âvow%TA%lw%LDÀ D!Ä€þX€TBœ@Ä€D@Ä@ð@% ‚œ@TAxÀ D@ T³Ç@DÀŽWÂv+Ä$ Aœ@ ‚Ax% ‚œ@TA%L x@„Á$œ€D@T‚#Ôº TBTÂvWx€A¸Á#Ä€X€TBœ@Ä€0{ DT"xÀ D@D€œ@Ä@%0{ TAìx%l·BLB X@TA%Ä@xø€X@ TA%LB X@TAxÀ D@ T‚#œ³ÇÀ$œ€D@T‚#|%TA%l÷AD@T‚#œ³Ç@%LB X@TAxÀ D@ TþBx€ÄÀŽ3{ Dx€Ä@0{ TATA%TA%l7¸ á+I$ìì€AìÀ@À€"¤A%ìÀTÂ0¤pÀ „UÂìT‚@$\@(DX@T8ÂTBÄ@%TA œ@DxÀ$¸A8‚”x (XÀ$TØ€LBD€#TA œ@D@D€„A ‚#ÜA%TA T„AX@%ÜA¸ œÀC LB%ð€ €W‚#ÜA%T@Ĩ$(‚DaEpƒ(L%71 ƨ4‘"DŠH,L þÁQ•'ªD¨ÁM˜ˆÝ©T%F aªX¨t'‚A'(æÌ‰ÄÃ$7M:1ÔM¥*1("ñ0ÉM%ÂT±P ‰‡IUbŠàQ˜Jn"ÆÐI1B•JH#Ù€*í;AJv¸ ’¨„ R .d"Ü*Ùá‚Jv¸`"v`"’±ªˆ¡’*bàÁƒJªˆ¡’èb$,˜d¢I܈ÁׯBÂD*™¤*þq#D¢‹Aªˆ 7"@„*©"†*b¨¤Š&r# CÂD*™d’‰|­„*©"†J©Â"@¤ Gxˆ 7~a¬*"d¢"<¨Ä‰.A"¨"‚J܈<¨¤Šªˆ¡’*b˜È<€Œ &™HÝxˆÀJªˆ G*áÁ‚I&Š"†Jªˆ¡’<¨„‡©Â"¨Ä€‹ ŠJbð b¨„ &™(Š*©"†‰ªˆ G&ò•¢*"¨Ä‘J܈Àù@;þ¬Ûî»ñÎ[ï±¹Àv¸À05Ùha …Jþ¸¸€.0€. € E€€ÆòÀ7<°@†š³ªˆA¾ð ‚"ä±INˆ †äðà ª¨Äƒ*b$"ð $*©"‚æ,àÀ7<°ÀJ&±À È&9!‚"Ä,° †""hÎD‰à@$‚<@"2"ˆÁ9z7øÊ 5èAšP…FFv°Ãþ  ;Dbƒ€c$쉊6Æ¡©¨aáÐAèÄ¡c‰„"QQ7V"vˆDEu’ǕΔ¦5µéMqšSî”§=õéOuÂ… à@mÌ `ÜÌt°n  Ô(`•Àa¸p\@' ¸ÀX;àf¥ƒ€p£ØÁ¨muë[áW¹Î•®+Mƒ""ƒ›º@¢¡)!ÃØƒˆ„"*QÑÆàF';¸€a ÑÌŠMN¸p;D¢®õìgAZÑÒUP€"Ñ  €v@ÜT¨ P‰H\€ØÁX àƒPþ°ƒJ¸"q`•P„CZ‰T¡•€ € BÀ*àˆÄ€Ld•pèX¸àf©½ÀD"q`ÁÍDÔ^@صÃDvP ‡@À*1@;pT" vP‰T¡‰ìÀ0a´5¶ñqœcÑFbØÁD¸€A(BŠHC%vpŠà¦;¸@%vpJ´@‘à¡“€ ; €"ÒP‰\ ;¸v€( \€"¸€ÜŒe` ˆ4Tb¨Ä.þ  ˆ ˆÇ(‚ pèDp3‘( \€"*›‰´@‘ØÁ¸ ç Œe`ÂP E¤¡;¸À. -P@$¸Ef!˜ˆ pAè˜ØÅ6ö±C ;ÔÔ ¸€"(BÑ0aS½EpS‰\ ;¸@%.ÚÔÚA';¸@%vpALõ•Íì€ ˆvP„ƒÇ²ƒ TbÄT/P Ñ\À¸½í`Ø9ÁÍD.@o;T7ÁM%vpE8x,;¸@%vpJ bªÍì€J\€ÞvK$ Ф!PøÍqžþsïœç=÷ùÏt¡èE7úÑ‘žt¤ƒ@z$v@€L¤—‹DP‰\€"¸©Ä‰\ ! @$& ìà•ØÁB €Jìà•Íì€ ‰D=–\ ;¸@P‰\ ¢¹€Db"‘йÜL$ˆÄD"Q ÜLä ¨D.ÀQe¨Ä.P‰( ;¸€h.`T"ˆÄD"1–´`"Џ€ì tå/ŸùÍwþó¡}é+?-€”¯ˆ Ø¡v@ *± †ƒàÂ.w,¤Và‚"€þ À:Q¸ `¨!À `.ÀÀ.ì 瀸@5``.ÀÀ.ì ç¸à¸€ .àr.`Aàà.àr.`Ò µ€¸ç€¸@€ vPƒ `.À€ AàÀtB@&‚ v`ú´p ¹° ½ð Á°èì@Rk¦/n.tBì`çòçÁ‚.pNìéÁ.„.pNìÀ0Z`° ñ1Ñçv€Þa!1¡o"ù"A115q¡þo €Þ€EqÁp¸€Q1U‘w€ÞRk¾PjÀ0ì *êè**'ª"Á"¡¢nΡ&¢¢ Cjt¡Æ"ì *êèª"Á"¡¢r"r.  "aÁ1Å‘ #\1µá ¹ààÀpÀpãèp#'à*aÀpÃ0"aªv pÃ0¸ààtB.`,ì7~Ž D"à*aÀp#'Àr.R aI²$Mòè˜à ùÒ@v7ÂA4&b.`è**'và&A4 Ã`"Aþ*¡¢n7tb.À0@D£vàxNìZÀ(b.`"@Dƒ"¸à*Á"ç. µ N²-Ýò-o€Þv`ùá@RK4 `(7*  *!.€`ÆàA v à .€`*A¬v ªv@àv``*á7ÀtbRë*A µ.`"v j,¸7v µ.`""áv`"pc"RëÁÁ&b*Á¡v@àv A þvà7À&v Rë&b*Á¡&"À* € nŽ èmàòA!Ô$CÀAé"a`&‚ `A! *a.€"p£và*a. Z@" @tb€ v€! *a. và `  ¸ DÍ0và&BÒ và*! K¹@Œ"p£Z@"a.@árB˜j"pc"Z@" @*7&¢ và¸@Ô c.€"! *a. ²¸€"`*¡ vànB€"ìþ.` c\ñ"ÁLEuTIµTMõTQ5UUuUYµU]õUa5Ve• Rëv@V)Âà"@4˜`¦ê(7*a. và*áèÍtb. vàaª. Dãì.€Þì@Ì0và&b¦ê&Â@* D"p£p£vàJÕ 'pc".€Þì pc"p£vàÁÁ c.€"aª. ì '`*7*a.À0"!'ÒB@áÀ Àtµe]öea6fevfivf!µ *Á˜àe#a`þ&¢.'B@*a.€"p£v"!. B€"a""A'và*a.  và*A4.À  &"¸@Ô c ! và*! € 7*á BàJÕ 'pc"B€"a""¡pc".@*!.€ DÍ0v*A*! và"B¸€"`*á Bà cZ€"áÀ̴θ f‰·x÷x‘7y‹7 µì fáì ìZ vPƒ .àr. RK€ AàÀþtB€ €0PƒAvàìŒ@àÀHÕR‹vPƒ€ €¸@'¸à.ç˜ µ€¸`T¹àNð.çA.nà.ç! RK€ FÕR‹*a5€€ €Nð@. RK€ tB@(‚ v`T¹àC ”7‹µx‹¹¸‹‹·Rk¶8Ì4tBì TóHTÁNUa"òˆUóHWÁ.NU"òÈTóHáZ`R5\1¼8‘y‘¹‘)‚ Rëy’)þ¹‘w TRK€"¡’A9”Ey”Eu Hy•Y9‘w€Ò R+Z¹–mù–7 µì—YyaàÇL¹cUá§T'A&~r‚‘¸X"a"B µÒÀ—­ùš±YU[ µv ›E"@|¥Ü `(Âb`U}¥T!ÁWrÂA‘#€"Á›õyŸ³™ R ’÷a,ª Xµ b`•#À¢£A" "ª Jµ b 'à‡"ª Ì4!:( b a9 R+ø¹¥]š•€áx!<À&á< þ  <Àb  *!" 9®ã*!N & "à" <Àb  *!N "àb š#abÀ"  Æ"N bÀÁN ª ®#"€Æ<à"  &á<  B*¡ *;("ª á®#*abÀ"  "ÀN b ªÀ, ¢ã:b`"ªÀ, ªà:b  "  *¡ *;&b,@*Á , ¹R+ ^:¸…»‘#R+ ŒwªÀª`"!Ü ª r",@xÀb ª * ,`*¡þ b€"ª *¡ b bÀ <`Ü A'ª N  "Àî ª *¡ "À  ö€B*Áî ª !Ü Ü `.ª À&¡ b À&Á "@ , ªÀ&¢ b '|…"ª &â"À á® x€"ábº8 †»É<‹[ µvàxÁbÀ&bb , *¡ b '|e"ª *¡ b |%'ª (¢ b ª *ÁW("pDt":b@"šÃb ª *A"@ ¦!Ðc`bþ , *Á(Dá"  *ÁW*¡ b bG| *¡ b`"ª rÂW(¢ b€"<àbÀ c,Àrâ"€¼ØR+ž<Ø…}f¹ µ y'¡ ,  *ªÀx *¡ " a"|e"ª &b À¡Ô¥ " ¡ª &b |…"xÀ&a"&A'¢#!xÀ*¡ b ª *Á "t‚< ª ¡ " Ü `.ª bÀ*b xÀ&a"¢ *¡ b`"ª *Á&ÂW(¢ " ¡Ü <@áþª (ÂbÀA‘w µ˜`Øþè_u@²Øb@!NÀ á:, ª }b á:<ÀÜ`N b ¸ã:, á:<Àd }b`"Á" "@tª !d šÃ¡ "À" Æ¢ " 9,`"à< HÕ b < îà:<ÀÜÀ< b 4ÀÜÀ,À *A®ÃÜ Ò'¡á:, &ÁÜÀ0Á"  9@~ù™ŸT#R+ Y"Ž‘tÂ"(‚‘DÕþ¡T‰"ª ÁŽ‘rBaUI'AÌÔÁL& ,`¢’À•T!ˆ0¡Â… :´À‡+Z¼ˆ1£Æ;zü2¤ÈJ;"î‰2¥ÊJ1b¸Y ¡›–nV™厈Lrúü 4¨Ð¡?ÓD„@4©Ò¥L›FR€€¢†T«Z½Š5«Ö­\»zý 6¬X«Š  h¬VEŠÀ¤6®Ü¹tëbµñ‚ݽ|ûúý 8p%Ó¨ÀØ ;~ ™ëŽˆL"[¾Œ9³æwN£h — aßZµ)³êÕb#)@@ëÙ´kÛ¾š&"„þ¿Š.(P$0; ¸@ Ò ìˆx@ˆJ/±#â@p!¹p!Àä¶úõ•ìD¼À>¾üù@`PßH;ì ¸C•ìp;P‰"iT²Ã;À ²\0À •0&Ð0±vÉ!d V‹.¾cŒ-î ‰Œ`EbG$:þdV;„0P$!0QÉ!´ÃƒTrÁ 1ÆŠ™Õ‘ AD\`9 \ È@‘ H%;ìpT2ˆr^°•Ø€;P‰ØQ cípA%;\0\(°Ãþ@i˜’NJ)@€";V;0¶Œi\@€!ØavTʪŽvÀ„@;I%q!"ÙQ v0@ ;´@\´ª@îQ •F²;´C ­yT‚•ìpÁTƒì@%\0H%Œ ´Ã•ìpA% ìÀD$•(rv pÀ#4HDDÔV\ì À/î@ipÁ˜Ø1pÆZµ@@$ƒÀ„@@@;„€•`CØ!P$! ˆ@\ìÀD$¥±ŠDbÇ@ƒ(RI$vDÂÄŠTÂÄŠ ”ÆL(RI$vDÂþÅvTb¨*R‰"LìF$_¥‘´ªÈv(B€")°ÃvÀÅÈI@ (@ •쀴ÀÅÅ^0ˆp¡F!TÂÄoÎ9˜D‘Z1VIkrI%v(2Ð ŠT’Æš\D‚"ì@Pv`G%i¬ÉE$)ÂÄiDR‰"LìF$¥±Š¤;¤Iç0FB@ Œ Ø v`G%ØÁv ¤LT(@€"•´À @` ä;¨„@²bA@NPD%Z@€@€Š° 'Øá` Aþ\€iðŠ" B`-ØACØ"`ŠÈ0ETeˆ ½ ±Eƒ€è@7ˆ¬0¦`  P‰ „@ ‘*Æa";À•cJ ‚¸Ò0@àHC%Z@€@€Š p¤!!„,¤!‰ÈD*r \ˆˆ";´ \€@%`‡JÀ†€pƒ¨D$Ð.À„0 ì v*1ì ‘€y (`v¢€TÙ E,’ˆ¦‰Íþiî ‹d Â.(2 €¸Ítªsìl§;ß©ÎtLÀ&c* ¤ƒà"Q . •ˆ„@Ò€Ad Hˆ`‡JDB iÀ vDB;€€@"¡. QÀš H(ž,mi%Db @À…JÀ•€ ;„1-¸À@v €@€ vÀ@.°ƒJØ€€´@kÚ.` „1•À@˜€Ø¡;ˆH \šHEÁ yË!Q%·Àu¯|í«_ÿšN.`ž!À&c*a‡\°C$À„Jþ„ ±Ã.Ø !¸@Bì;TÂ;¸`&`v°;¤ è*.ÀìÀ€íí!!pì` °C%. À•€ ;;`Ì@vÆÄÈvP ;` °ƒ@°ƒ ( «;à‚0ÆT‰D ¤Avˆ"áÛ( Hc©€ „1n°ƒ áBBóÄ&cÒ€ 0 °C%ZEÀ•H.°aØ ;@Bì;¤Ø0ì‰HC$Z@ P{¹‰þHC„»(‚ °ƒ@`‡JØ! €*;v0ˆ@` -€À@;`¹À*a vÖ„ØaL%0„ BHg$ °iPÄ@¸p !o9ä. ·(Ò‘x²©OêDF"GLÃ4İC%Ò€(@ !€€@ì;$ àA"aØ!ˆ`‡ BÈ p@ ƒPÀR WE`!™@`„À•Pe‡A L@U °ƒJØ\¨Ä °;`þ•ˆÄ&T‚ ØA%ì€ÀÀì&$ \°˜J€ •PÄÒ „ ˆþªˆ (@‰ì°\!¨Ä"rJ@À*¡Dä;ˆÈ@ˆó€ àîº×MÍÐí ‘v¨„°ƒ( ‘hì `iØÞØ! * &„À°C ÀöÀ;Hƒ@ ‚¤A À¤ ;Hƒ@ ‚¯Ãóˆ°ƒJÀ€*1Ï äˆàÂ@vº D¢þ;*Ñ‚ˆÈi•°;;¨:.ØaL%Z‘4ìt D6w‘ø5; À²ƒTbà00¦; v@€J´@‘ØÁ±À;@v‘p! v0¢'ØWv@‰: ƒ@`± 1v€‘p CL``ƒ@`;: 0;: 0•À:\° £ƒ@OHŠ`ƒ@‘`ƒ0ƒ`é„*ˆ4v ‘€*éd‘àWv þ   •°P vv ŒQ ;p•°P ŒQ ;pÁ±P ;pƒ\ ;0i!…—ˆ‰é Š€H‘`ƒ0‘`ƒ€H‘`ƒpHŠ€*  v0 ¨2‘€** ¨’‰½è‹ 0€ ;@; ;бP \ƒ ŒQ ;p•°P  • Œ!;p•°P °L •  vð‹õh±\pûȾ˜ƒ L`Špv  ± Ð•ÀPþ,`À @\¡PP,0 @\ `•À;Ð3‰‰‘@“7‰“©À;!a-°1аHl¡H;‘À°WO •Q)•SI•Ui•W‰•Y©• 󤑠•; T™ À[©–kÉ–mé–o —qé–\0Op —w‰—y©—{É—}é—wóDið—…i˜‡‰˜‰©˜‹y•‘0OAŠÀ˜“I™•i™—‰™pÉyŠ™Ÿ š¡)š£IšGDLPš«Éš­é𝹕‘pD0°i›·‰›¹©›…Ä þ³» œÁ)œ{™ŠM;pðd‘°˜! 0Ã)»‰*¡¨2ñ館2™ùQ© Š -P •  À; p;P ‘p @\@• @°rvÀÀ‰ °‘0Š› Á@0Œ‘N\ppð”°–Š@ °O ;@; -@‘P !0P ;p•`ÀƒÀ•°0-@‘Àð;•Ð  \Šp`!`•`pþƒp˜¨¢¡kj›; ÁñëÄïd°•‰´ð”vv•v  Á±P ;p• À•°0ŒQ v#°`P pDvÀ‘lʪ­*•q•P ;!0ŒQ ; ‘Ð0 -ƒP Œ!ƒ ;  À•  À  \P •  À; p;P ‘p @\@• @°rv@þH°Q ;@;P -@ƒP ‘P !p•0; !•°P ŠP - •À;pv•  Œ1Šp `®j´GËR;\À0;p•°°ÀLƒ Œ1Œ!-@‘P !`Ñ •vP Œ!Š•°`ÀƒÀ•`ÀƒÀ Á±P ;p•`ÀƒÀ•°0-@‘Àð;•Ð  \Šp`!`¡\v0•Špv O @\þ0 Е`A•  ° °`ÀŠ p0ÅrÁ;€´Û˽ê´P vv°P ;p;•``ÁÁÁ†ÄÁ1r¢ À• À q0;p•°P ‘p@LP ;pÁ•`0;pv•pGdŒQHvÐ  X©v lv ¡ƒ@ƒ †¤vÀšA,ÄCœN;•À0;‘°P \ƒ Œ1Œ!-@ƒP l‡-@þƒP lW Œ!! •°0; !•0; ! ±`Q !p•0; !•°P ŠP - •À;pv•  ŒqH°DLÊ¥lÊŸ¹ Ð•`¡€ Ð•ÀP,ðP,0‘p` 7pÅrƒ° 'P Е0 Єpð¡Àƒ -P vP Š @; ;pv\  #P,PHƒi€þ• íÐ Ñ-ÑMѽ0Š0lAƒ Ó¤v`HŠ`…ÄaŠ@v †¤v •ÀaŠ0Š01‘`HŠ`Š4\PÑEmÔGÔI­ÔKNŒÁL Õ1æÕUmÕWÕY­Õ[ÍÕÝ•†@ ]MÖemÖgÝR¨BŠ€*ƒ0oÁN¨¢No±No¨¢Noq•* Ð@ÐK@ @ • *Ѐ@*ÐjP ”* tÐ*@•@" hMÚ¥mÚ§] Á@0Œ¡H\ÀŒþ1 pêÄëÄ¡ NŒQ•”"@jÐG ”@ •"`K°@‰ •`"@ jÐW j" †@@díÞï ßñ­N; ÁñФv-`± H;pñ±0Mo;p‰´€o!;pQi* `Е`0€ ؆P @A @Ð" •€â•`à@P `Ѱòíã?äV!P •°pÁ•°q -ƒ@Hþ°• P ‘p; p•° @°&q± @°q;;€; Šq‘p;P  ° @°•°q•° @°•°°•;ÐN”"•P tÐ@ ” ”P (.‰°P V •@0@P `• @ †äÙ®íÛ.Ñ;\À0;p•°°ÀLƒ Œ1Œ!-@‘P !`„;P - ‘°P - ‘ÀðþÀ;@±@Œ1;p‘Àv…ÄÑ  ;p- ‘À ;@L°P ;pÁ±0i\` Àï @``Ð*ÐV *Ð@І" @P ‰Ð4 VP  4 ` "@* t `Àígöi•;•``;p•°°P vv Œ1Œ!ŒH°•À•°P pD#p•° ;pÁ±0 À…ÄÁ•°ŒqDv°P ;p•°€Œþ!;p¡p\ð”`Љ  †`H† ‘” öɯüËO;•À0;‘°P \ƒ Œ1Œ!-@ƒP lGH°•p P !p• QP ;p±P Š•*]¸ °Ò•Uâ@Aˆ ¼  Rˆ !DiÇ…J;.TÚ ’"ƒîPI‘@.Üa'âMœ9+BGçO A…%ZÔèQ¤I•.eÚÔéS¨Q£î @‹JvP@ZTâr ?.œ½0(؉ÈåþÒlU@€‹".(@€‹\*ÙÙJ€Ë…³U²³•@¥H¸àäráì…Ai¶* `D€ ì( ÀE.v¶¨ÄåÂÙ ƒìl% 0.ìZÜøqäÉ•/gÞÜùó¡; RdP‘"ˆƒUdGèõˆŠìèT4H§¢A¹ˆ4ô:DEvt*¤SÑ ƒ\D2¸ctLŠF4ð@T°‚¸X°).ââ@.â "y9F°0C FHhÀ…C!a1ę̀$ HÐA CHØ 3bŒQ $6 ItØÀI~ª€ “TrI&›tòÉœâþ`Ĩ$HpŠI ¢‚’ˆ *!Á…Ct¤ Úà€$*!!‰$̨D’’`$ >àÜ`ƒJ9€HHâI6 !¢8È ŽJ‚§øJJ+µôRL¥b„„ ‘D‡68à€ *9`ƒJ$Ù ‚°H¢‚HHâ¦*Øà*9`ƒJØà€  ¡JÌh ˆHH""\H’’( H¢1‹øÀBiàJ9@’ ¡‚J’8À FH¨€‘J$i€J$ÑဠFÝ ’6¨D’ *8‹$*h€„$n: ‚  ¡’6¨ä€ Øàþ¨ÄŒ°Ètd’K6™RI’h th@’J\€„J’ ¡>0ã,*I‚ƒách>’h‹$¨$ *I‚„$HØ ‰âcˆ„$ Š£C*!ဠ$©„$9 ‰J’¨ 3*I†¨@ ’0ˆ„QùHâ€8*8 I’h ƒ’pA ¤` ¡’$H¨„Ì8‹J’ Á Fˆæ#‰°H¢J’ ¡’$HH‚„ ’8@ >6 á£r×}wÞ{÷ýwàƒ~xâ‹7þxœø¨€FŠÑ $H¨$ *‘„„À¢’$H0È IH‚„J’ ¡’þ$H¨$ à$ Šã"! ƒ©àƒ$©`ƒJ $8@! 4 I8Ìp>˜¡’ˆÀ‡  : P >T€Œˆ$ÀÄÈ I A%’@‚JH‚h*‘Ä áK *‘T" $¨DH'ðá‰Ã\€<(FQŠS¤b­xE,OIh@*¡ƒ¢’Â$áTâI`„ P‰$ Œ¸IHP‰$ I8€$\@8‘€¨#HP>„Iˆ$*>‚f¨„P‰C í:D*¡ƒT þàƒÀˆ èÀ .¨@%øp€?˜¡$p@$‘„$¡IÐAtЀCTBC8€$\@‚J" ŒpÁ*‘„T‚7I *‘T" „ H'ðá•` *À‡,¦Sëdg;ÝùNã1‚|Ä@‚laTh€q€ T@•àèp“ 4À h€ø0ª 4ÀI `,$Á f A*@‚CðaTH@‚˜A ‡ Á*P‰àf *ÐâI0È!° è€ Ø@F€ `„A$±à[U`†C`þÐA%ø0ªܤ 0C`>Œª p@HÀ‡˜ I€g]ízW¼æU¯ÇcB ˆðaÄ!†B à‚’È #ø ˆ”('’à#r>äDI¸ #ø E„Œ0#1YQ{emk‡·;@dv0ÈìàZÜæV·BI‚$v EØÁLðA °üV¹Ë…vìÀ Øs­ë;á dƒÀ­puw× Ûµn$v°ô¦w+-¸n{Ýû^ø %  ï*AäW¿ûåoýû_ÿî€ àÂ~ÿWvˆ}°$Á¦þp…-ÜßA\@½éåÂ…=üa‡XÄ#&q‰M|b§XÅ+^qQ ;`‘PD%¶[á\`Åvˆ„~Á0AûÝ(œEä— ¨„0ˆH(B Û¥ð.°b;DÅ\ À†0Ø ƒ`q™Í|f48vˆDšÝüf8§XP€"¸d[¹€@.úà P˜P‰(€Ø àƒP°ƒJ¸"q`•à˜ _;À•ˆÄ@.ìÀ*@ˆ". E$° ‚Tb[¹@þ%.úÀ‘€€À„(€Ø à•„ €¸*‰ ;à˜€âHì@½Èo €üÍ'xÁ >ˆ `gxÃNáHì€;ˆ"˜á „ ù½ì‚'€ ƒ`‚@vp(B¸Â­ÄÀ„@i¨Ä.P‰\;@  .@•°.0Øv¨D  &à`ÂP‰€ ; @$v@€èw!¨„"˜áæ— ¹ìဠƒ`B%vpü*båvؘ°TBi¨Äþ.°ƒ @`¨D  .@v€Àb;@½È/‚ü;xxéMúýõ«g=‹í € ("¿v€~ ’_‚$˜ \@ \ð*±ƒ Tb„ƒ/P‰ìàvÀÒk¤!°ƒ"ì;T‚ •°FpJìà•ØÁ*±ƒ ØAPD~#AEÄØ/ABüŠ„ `‚JØ È/.(¾¸€JØ ¨„Ap° ˆ¾ °¨„ H/;¨„4€P1& Øý.P„­Øüº€°ƒÖ‹A,1ؼA¬þ°HØØ°Ð/‚È/‚ˆAØEˆ€JPþÚ ¨„¸€P€JØ ¨„è»;€ €HˆHP„ P;¨„`;;¨„P€JàH ¨„¸€JØ ¨„¸€Jˆ„ €ˆhü²Ø/‚‚ȯAØE¨„€JPþÚ ¨„¸€J¨„¸€è»;€Jˆ(„ P;`±Hh;ð¯Hà‚°ƒ­HP&°ƒ,Fc¬‚°ƒc\FcT„ °.€¸.à‚ 8‹ „8‹ ¨„AP€þ;Ø à/ .PÀ /Ø °0€ ;`‚ȯ /ˆ„JP€Ø .Pà .PàP„ °E E.€¸.¨.¸€³¸€8‹ ˆAP€¨;Ø à/ .Pà‚ú"Ø °àEP¸Xh½4¸ˆ`‚­PP„H`F­,½P€ØJ° Kþ²EÐ/E »S;ð¯A°ƒý„Hø°Ø³EÈ/E„ »S;8ÆȯKÅ43þØÅ|LÈÔʈ„È<=E„ü‚¸€üº€à‚Ê M #Ñ,MÓ8àƒüJ °$ ý*‘üJ¨0>8>¸A;P€ Pý"ˆJ»€Jˆ„ `‚JØ È/.(¾¸€JØ ¨„Ap° ˆ¾ °¨„ H/;¨„4€È/.8‹è»;€ü"Ø È¯¸€JØ °¸EȯH EÈ/‚ˆAp° ˆ„ `Ø .(¾JØ ¨„¸€Ap° ¨„è»;€ H/;ˆ4€ÈA‚#`P„­à®à 8¨„Ø€J8€ H‚ püŠ‘JH‚Q!8€ 8þ€CØ/IÐØ€8„Jˆ8„ Ø€HIØ€ 8,¨IØ€ 8,ð¯H‚J`„ ¨I 8€$8€ Ø€ JH‚ h€“Q!H‚ hH‚Q!$8€$è¯HŒ„ €È/‚¨„P€JØ ¨„AØE¨„€JPþÚ ¨„¸€J¨„¸€è»;€Jˆ(„ P;ˆ`‚J؈¾ °È/‚ˆ€JP„JØ ¨„¸€Jˆ„ €ˆhý"¨„¸€AØEˆ€JPþÚ þ¨„¸€P€JØ ¨„è»;€ €HˆHP„ P;°à„H.Ø ;;€€PyþgH‚0,8€CH¨„$ $83À‚8ˆ‘üŠÐ„Jp>Ø/hI¨àƒJˆ`„8¨„$ >838,¨>838,ð¯H‚JÐ „$ JÐ 38€h,H‚ˆ$ ýŠ‘üJˆ883àƒ à/F0ƒàV„ °.¸€³¸€ú"€íP€¨;Ø à/ .Pà‚ú"Ø °àþEP¸XÐ/&€ €P€¸;€j¼€³¸€A°ƒ­ €JPà .E¸;PPà‚ 8‹ „ú"€2P€;Ø à/ .PÀ /Ø °0€ ;`‚hƒ‹„4ØüÚ­ˆHƒ°ìÆÁ$8€Jàƒàƒ$ JHH‚¨>8>ˆɯˆù¯Ù¯ˆC¨'I h,¨I h,ð¯H‚Jˆ‘JH¨©€¨„$ HЯɯ$ üª€ þ3à/>Ð `„òˆëØ/;P„üR„A¨°ë0E°ÿR;P„ S„A °Ø»ý²EÐ/E »S;¨ñÓ³ƒ €€ü  €üEÐrÔK‚¨38€CH‚ $8€J0ƒ8ˆ‘üŠÐ8„JIØ/h€C¨A¯„¨€JH8„$`8€J8„$`8ÿ:€$¨¨€Jp¨hIˆ! JHˆ$8€J`ˆ‘üJ‚¨F¨38€ ø¯H3v ÛH vdW1€È/€ Hö†K‚¨€þÐJàƒQ©€0¨€ÐJ0h€ & s'C„ 88>Ø/IØ€  0w8„$8o€68€ ¨¨„C8€ ¨à/3 ¨ˆƒQ©€0F¨€ x€0ƒ h3¨>•00w8„JàƒQi€J„0ÿ:„ˆiÏyßy‹Eȯ­Øü€ °3;z¤×¯$8€C`„ü"ý:F°0Fàƒÿb>ð/Ñ/>`ýâF 0Ù/Fàƒÿb„Cø/F80ƒÿ:„p3Hú »»Ï{½ß{¾ïû2³ƒþ°ƒ­à„HƒHð{Ƨ°1ƒÆü 3ƒ1ƒÿ:30Éß/°ƒÍÿ|Ð}Ñ/1;h`‚­PP„A}Ø}Ùý4P„üâ‚ 03;ˆ„Ùï}ßÿý c €üÚ­~Ùç>Ð/FPþCȯ±°Aþ Sþ¤W„ PEˆH ;ØŠ €¨„H¸€¸ /°ƒH€&ˆ„ Pà‚J€¸. €`Ri Á‚"L¨p!ÆBŒ(q"ÅŠ#"xÀ‚ ì¸(r$I‰4C¢ ‚$H@|Yr¦BIþ*™!afa…4FÚA`GÁ!*íÀ… €A-Dâ@ÑvBر€Ë &-Db@ÑLv¨dÂ…A?ßÂ+w.]’Џ¤!À‚!˜(ª+8n’_‚ßdÈɈCd“|ˆ?ÉF„‡èã!$‘MFð¡›þÔæ!ÑGFð!›æº'IKþjÒ“¢4¥*])K³‰Øa/vˆE´T/1CN{êSo&A?*Q‹jÔ£"Uƒ`B$²ƒ½ b \h* >H"©ZÝ*W»êÕ¯‚5¬áÄ.@€Iƒ†z b+]ëj×»â5¯ØÜB@à‰6 ’¾D¯Š],cëØÇ’3ÙËpÁš!€ÒpÏ$²¢ çìÐÇØ ;°Ãh[ëÚצSi°Ã@ì°—4 DØA$ðš(b/ál‹ÛGì ØA°ãB7ºÒµf$˜E $ {!ÃköBþ€¨3 HÂtËkÞó¢7º\P¸ÐÝ×(Àè<@Òkßûâ7¿uÄÞÛÝ(œ/Ñ/ là³þí.˜0NF$¡.˜+…}ªET8ÃÞ0‡}‰×È&¿ãBV"ANF$’è0‹í©;´8Æ2ž1¯‰HÔ8Ç?Mƒ"Â… ˆs@§"¡ã##9ÉZ5„!ú &'‚ ‰H„8!ÁäD(¹¤Š¸€1HÀ‘h €A•"€ •ØpDâ *àˆÄ€TâP€p0!Ë’ž4¥Iª‚þô‘@ ˆ“@ÐùéO«AÉ‘ØvÐÇ„ - @$*;ìà•ØÁì. ‚ ÙÁÒD‚ PÄ.  ˆ ˆJ\€vAV pAT:Üâ77ÁÐk~š S&ç§ÑiˆX  C’í € (‚ ‘ €"*!›>îà•ØÁ"q€ ÙÁ"›JØvøÝì€ tוMÓ€;ä"?r:„,¡ A%:@0tXA>] 0”¡„:@ƒ$¢‘”°BhÐDTâÓI„ hÐ0þP‚*è€*A ¨ j¸fÀ‰œ"è*„¨@ TÐ5T‚@PèÐР@èj$v@€ d-H 0ˆJÜxˆD.0ˆ("ÈP E´@•àñ» Ø! @$‰JÈf Џ€ì0ò×þÅ`èÔÐD€•ÀÐ:¨¡‰ȧ òéXA”¨Ä ÑH+ˆ€•X‚!*ñé@¢• Ñ:$B •0Dè5\³@X‚  JС¨D`ˆ%¬¡tH„*aP‚tÀˆ€€þ|•"\€((Â@DÀ@Vì…À(@ „ì(‚@ì@%(À\€€(\ØÁxÌTì@ìéà’TÈÆáüÎ ˆt@%BA%€€AT‚!t€! ħħ ħeÓ§5Ò§ D"¤ %Aˆ€T%Aˆ€\SX@”\ÉB%|Ú@Pt€¨A%|Z%B8TXµÀ4’"ØA\XÙ"ô‘" A B$d“"ØAJb(Šâ(’b)šâ8 ‚½0Á8ATþt@"€APÂt@%ÐA$Â@|A|Ú@X$B%P%4’ˆ@"TB2V§ Ĩ@%€$@Ât@%$@ÂtÀ5u€! Ĉ% %T§ D"€$,AT‚¨@%ÐALTÁ)‚ÓD@dAäA"dBŽb¨" 9A¨@XA%BÉ©€A¨@XA%Ј€ÁÁHA"P tt€!4%Ð@AxŒ$$t@Ú‰@t ¨€TB"t ¨€Xt €A%@‚ tt€!€ÁHA%$þBЀ XA%@‚ Ѐ€ ˆ¨€ÐB²e[ºå[Âe\¤"„€*î€9A$$$@B%$|$B6A‚!`“_ö‘!@B$x$B6$ôQ"P‚\jæfrfgzægÄ ØÁ@(‚€œÓ§Ñh²fkºækÂfl$@ D ì¼FD‚lúæogp çpŽS$¤D 4R 0k291Ù8MY9  çvrgwzg#íÀ^(Â@Ø(B#¥ Âkªlœô‘ Á8}Ú8)(À|gúçvf$0þ Â@ @x&A8l$BX!ô74Ò” Á7ÙØ€šè‰¢(@FÂ@(Â^ìAØA[Rˆ@€A%A|Z8 ˆ€A%Pˆ@€A¨ tT$Ð@É%Ѐ t€`S€Á@@ ”Pˆ@€A%t€ Ð@¨€T”T¨€TBÉt\ì@Š ê ª:µ€„A@€0A\Z Pt$P X*TAX PtÀˆ€€T‚¨%€BþÐA"¨6u „¨%€X Pt$€¨ˆ@%€4Ò§ AôAÐ!Ѐ5)€˜T¶jë¶rk·zë·‚k¸–”DD$ˆk8Áv€!T‚!t€ A»:TA%|Z%€Pt€¨6u ħU|š»A%€TA#}Ú@€ô‘ ÐÐ5ÙA (€"¬ëʲl˺ìËÂlÌš(Â@p0ÌrÓˆ% D2ÒÀtTt@%@B%,PÂ@tTA%þ TÂA"€$,A`S€Á@ TÂÁˆ% %€TA%€AT$ħ t@%@Â@ÐA¨@6Àðìá"nâ*îâ2n  Â@ Â^0Aãf$¨@A tt€Ð!”œT$¨@A €Ð ˆôAÉ©€ŒAЀ X5Ñt€ A%ôAÉ©€  tt€!¨€Ð ˆBɉ@%ÐŒ$$‚!”œ %ˆ`Ó @Xîù¢oúªïúvS$ìÅĤû6$B6AB"ô$6ùeþ$tS%øeA‚!d$$B6AB"ˆ%`Ó @pÁcpkðsp{ðƒp‹ð“p ›ð c“üA\„ Ãp Ë0 ÓÁ§ÑA6 pÁ ópûðq ñ£p„ 3q;ñCqKñSqo“„DÂ@p@€"Xñ gE)BV Ad' g§gAdgÃqËñÓq +B$ Ä ì D$(BŸ°@qÁÀ„l ð(ÀpA7ÉG£)À „llðì@%pÁpÁ§"hð\€ÛA$rþ*«ò*°À´À °² ïX“lDvvÀ pÁTÂ\€6e'Û B$(Â@dg7íÀD €((B+Â(€"DB ìT@@%D(0Á(\ÀTB$\€À@%DÂìÀ£€p0A-3tC˱pA\@€Cwð^\„@%T@ÀÀ@„lTÂìÅ D$´@ B#1´À…í€Àì@%\0ŒÀ^\À@€@\@$@ì4@þÈF%ìÀ^\@%\0ØA$@€ì€Àì@%ì(@%À (ÀT@\DÂìAÀ`p$ììÀ@´DB%„À\@%ìÀT‚ TÂ\A´DÀ \ìTB (@$p(€„€T‚@À ‚EãvnqìApÁ ‚ngð0 Â\@%ìÀìpÀ „l„l D @$TBØA#E€ B%ìÀôÑ€„€T‚l ÄìØD„€5þ)@V„l Ä€„@V TÂ\Aü0(BTÂ\@%ìÀ@À@ (@$p(Â@\`°(À(Â@ÈAìÀTÂ\@%DÂ0A%ìÀ„lT‚ÀìÀØTÂt—ÈF#¥„€pKù”p$pA DÂ@pÁ^ •kð@%ØØÁ\@%ìÀìT‚€ „l„l „llxL%ìÀô‘lô‘l Ä\@%ìÀ pìÀ5Ù4’l „lD$\TÂ\Aü %_@%üÎþØ\@wÙAGÂÀTB À TB$ÔDB\@% Â(B@%ìT‚"TB (@%p¤À\€@%„DÂ@D‚l„"\€Ø—{û·cð ì D$pA$€ûïTÀ ìDB\À@%p Â@ÈAÈÆ@´ B%ÜX#íTÂ@%ìT‚" „lô‘l Ä\@%ìÀT‚ìDÂ5Ù4’l „lÄ ì€"„TÂ@%(B%üN%(„€TÂ\@%üÎØ„DÂ@DÂ@ì€l°"\€DþÀÀì… @€´@%ØÁ^@%(‚@ì€ìÀØp"(\Œ€Ç\À@0Á¤ûÝãý(À„à}ï(´@%ØÁ^(`(´@%pÁxÌüÀxÌ B$@\ØA#1\ì@%ØÁ^@%ì€Ç\@%pÁxÌ ‚(„€5qÀpA%pÁx̤€Ç\À@ @€´@%ØÁ^@%0Ú Øì0 ‚ìÀØÀ€ ì+‚ Ä…5’(Aþ( ôÑ DB6)‚D% 4xaB… 6tøbD‰)V´xPÑ@ tdH‘w¤h "E)z¨ÈBEv T4H⑸iGÑ@EƒªT¨ÈÁ;F6uújT©S©V­Ä…€;ì°úUê… \À‚L£€.e%îˆÄn\¹séÖ‰K$\HcðH;v*P%¢/v`þ "á8«Ó:¯;?P1b0ªS%vM1b0sì !.B` Z Ò ;ß3AÂäA"A>>ÿS"t‹ à "ZB B˜€ B.€B@1..`b.€ *a àì@ v@·Z  ¸`!ÀvM·B.`0™€B€  ¢ú@{Tð<  bÀb` b $ bÀb€×î N |´ØÒ@*a. "ƒ và*Á"a v". ˜@`  . ¡"A.` vþ`ÀZàâ–‚ ˜@` " A ¸àb. "ƒ và*Á"á#!'‚ úB" v ¨Uñ® "À t ò“"t×!ª N U{M.@a€.`A v .t ì  v /. úâ* € â vâv@!B "`bBv` .`â .`B.@¡"ì v@àv``*á@·À búâ*A  /. ¸€˜`í@þ0ïbú" r•e-"Ob x "à*!N  " "€I+¡ ò$b N ¡ & "à"*I<à"  &á<  &á< ÂÀ xÀ !<ÀÜ "à" , Ob x ÁN ª <à" *!Ob  "  °3v€v` vàBÒ và*! @s¹@c0B·*¡ và àa âv Ásí` Ò€¡. *Á `*áúÂb€þ¸@ .`"v€v` v b.@ ! *a. "As!€ ávB·*¡ và à!wóúb‚ "¡ex"ª Ü "ª *¡ b  "À  A t T À&¡x@  ,`*¡T á*¡ b@"À ! *A"À ! I ,` ¡ bઠª Ü "á*¡ b  , ªÀ*á"À á²Óàa vàbêæÂ@* tK·B·*A·*a.þ` ÒB ZàBâv ¸Ž/@ Aa "A  .@.àÀ "a €âv@ ì@.@"@b.@ ¡n.@ ì ¸àB·*A·*a.` ÒBàö÷qX™)¢ " !¡ b ª ª *A"@IIII IXÇb`b , *ab , "N` ´!tb@"  " !Ô9ª *¡ b@ <àbÀ Þ3v€v@ v*AþB@*a. "B¸!t«.@*!. áÀ*A¸ . âvà "AvÀA¸ Z*aZà ì¡v Z€âv` "a`*aZ€ v*AB@*a. "B¸!t«.@*!. áÀ>0 ™' –™±¢ " Ü ¡ "`x ª *Á "II ,*a&¡ À¡R»T xÀ*¡ bªÀx *ªÀx  ¢ "@¢< þÜ tb@"  " Ü < ª ª *¡ b@ Ü <@áì ì /`E` ¸€ ‚ . k.€ úB€ ˜`Â`* .€à¡ ìàqvÀà€ b.` .ò@.`B.€ @Âú‚vP„€ €¸  ¸àºæ˜ /€¸€ và#¡óZ@€¯|"ª <  !O<Àd <  Ü ,Àb@ b€Íc&þá" "@ bN b ¤ Ø<¡ "€u,`"à< *"à< ‚" ,@<à,  *Áª !d <  ª XÇ8ÀÜÀ,À *a,À RUA T‚"T"!Á(bì "ì@Bì ¢vÀ aB%(B% QnWÛË»ý!ª Á"¨á!AÂ!‚Š ÁB!!AA a¢ "a ‚*!ÜÀ&ÁÛx"!áÞá#IÝË‘Ô Â Ô ^ã7žãþ;ÞØä“"äs"ò³"Ãã½áäWžå#Âb`!ÜI‘” < &I'B@v åwíH`Hà‚°À ‚°À ‚H \à6€¡6€A Ì@ ’€H@$A6À$ Ú¾*€Ü^îçžîëÞîïïó^ï÷žïûÞïÿð_ð_î« ø¾ bÀîA"  ª î¾ b íóS ª ôÞÀô?ï“€Ÿ$a A$¡H °  * * ’@ ø`*\àt@*€*áþt@*€b ‚’ Ì @6€Ú>A Ì€òž ’€À¿îù@ÈýÓ_ýןýÛßýßþã &!, ª b 4|À, bT©4)†…U"x8!F%G'"Dˆ1鄇a*iܨ1BŽNHŒ1)†…U*Eðp"BŒ*,ĨR©ŠÄ•ªx°£J%‰1ªD¨Âq#€E“*]Ê´©Ó§‘¨ÀH’ŽØPéÀ†J’6T8€%I…$’$=PaÕl¨t`à H4¨d¦Ž’$ÙH"ÉFIŠºp¡QRƒ$%5HRþ)‰‹I4’8¤‘D…JIldD¢£J’ð©$IÇ Z7T:°¡’¤ `IR¡‰$ITØp€D¥*Øp`à *™i€ªõëØ³kßν»÷ïà"ñ0ÉMG“N¨wS©JŒHT‚f¨„°$a#$H‚F$Q$ðáŒ0C%tp€J0 •ÐÁ±¤è@•HB%tÐF˜¡$pF$‘„$¡IÐÁFtЀCTBC8€$\@‚J" ŒpÁ*‘„T‚II *‘T" „ Hð2ðá•` *À‡ì¸ñpŒ£çHÇ:Ú1;Žð@bAœ nˆ€Ü ‰X Žð@b XÀ °€î X@ 87Ä ˆA%î Xà ˆ@ " XÀ °€! T 1°þ€b€AHÄ™„ܰ”A wL¦A>Hb Á¶ • 4À ‡8À* ƒJðA+ HJ`† 4À |ÐJà€$€0’°>4€0C%Ì@‚T€M A*@‚CðA+H@‚˜¡|h `†J‚¨€F@‚˜ Ø@ÁF€ `ÄF$±à[ÐJ`†C`ÐA%ø •$¥ 0C`>h¥ p@HÀ‡˜ IP¦T§JÕªZõªOq„ ˜âDpÄ‚XŠ#ÁA8Â:cåˆ#ÁG ‚)Ž@ÄþFÜ`I,e°ÊWŽ0‚a#ŠÂFl„‡°Ž`­s>Hâ‡àƒ$6r>Hb)Œàƒ$4r>,EIH #ø Á…ŒØ#aÁöõµ°­lgK[غÁCn`Ê ¸À…Úúö·±M‚$€KÜâ÷¸ÈM®r—ËÜæ:÷¹Ð®Uí`Ž(‚ºƒØÈ 1ÕíJ·¶ŠPÄwÇKÞòš÷¼JQ8Â… à¹À¬³\€ P‘/zûª;ì÷¿°€c»$E¾Ù.T¸€Apa•ØÁš²ÝÛ1 ŠØ.ðZ;D ±ˆc \!¨þ P @`¸B°ùVb%¾€F"Ñ@ƒ( Ђðî@¸À*q(@A‰/ (¸@$ @€s¡(PpJ BÀ\€•ˆÄ€h;X®". Eh$°C$Z`‘¸€À@ @%J|„` €vP (¸@‰/°ì€ `ˆWÍêVÓqà0ˆ\ ;¸ÀÀ&`‘ïFä«‘ •Љ @ƒ¨Ä.À‘ À!°C%ä«‘€ ; €þ‰ „ ); v@€J(" •ØÁvpì•h"Á(¢àBr#±ì€#;A%Z@€HT"vh"Á¼àØ*±p €C*±ƒ Tb`ÂpÁЈ pA¸úæ8ÏyRv€JØvØÁ*±ƒ ì•°ì ùnD¾‘¯S¸@Tbàˆ|9"_ìà•ØÁ.(`IÙÁ*±ƒ TbOVÀv°ƒ Ø•¸@‰KlæÚAPÄF"AETB¾‘o%ì€ìàv@%v€JØYˆû*±þƒ Tb¨„ p.l$ ÎWÏúUï•à±D"Ø*Á B#ò݈|5Ò ¢‘ˆDQvÀ„Jì•Ø*¡È—#òÕÈ.P‰\  Ø"‘”\ ;¸@%B €Jìàt¿€P‰ ‰D%v`åFb°±- -@ƒP É× P \)°`P ;•Àp P ;p•°P ;p•À ¡ vÐz0ƒ¶ Ð•`%¦€ Ð•ÀPuðPu0‘þp`EÁp°•`%F•°Uw•ÀPu0 @\ `I¡À @\°ðd`;pv\  vP °Ì¥`Š@Š ‘p`Š @; ;pv\° Ð;OFƒ À @\ ÀÁ; ƒº¸‹åµ0аáŃ סv°Š`аŠ0n´ \P^M¡v°t÷\-°E¡vÀƒ J±0Š áÅ\@‘À‹ò8Ñ%_\ þ]i  \ U; ϵ‘GòÅPÁòÅô¸ Ùù‘¼H]¡Ô5±]Sµ]³E]ù‘ ’ʤÀ\pp!_Ö± p\òuU\ _òµ p"¹“<Ù“P±òµÛ\ƒÀ;P ;pM±]o´`Š`Ðv°;p>Ù•^ù%v•P ;!°òU ;Pb ‘Ð0EÁÐáµ @°•pðd0%v p‘Pb\P; p;P ƒþ ;p _`;P Š%v;ð•¶y›­·ÀLƒ°P ;p;\À0!_!_Ñ •vP‘p ƒP ;pq`!`• _±À;@v‘p! ;p¡iP ;p‘üÉ;P - ‘°°À¸¹  Êj;•``;p•°°P vv òµò¥òå\Pu•°ÀòÅò¥;p•°0À °J±°ƒwP v À°• _þ•°РNú¤!¶P \ƒ° !p;•À0!_!_Ñ0•|E±LP ;•°P Š òÅò¥;p•°P °L J±P ŠP ! •° À;P  •°;`ŵvÀ;`±v¥¬Úª± Ð•`%¦€ Ð•ÀPuðPu0‘p`EÁp°•`%F•°Uw•ÀPu0 @\ `Ja%F•°ðþdÀÀ@¼u %¦À;P\°;°°®±Nº0аáŃ סv°Š`аŠ0n´ \K¡ƒ°áeáUt'±6{³Å%_\ ]i  \€U; 8[´F+U‘`‘p´t^Lû´!9;°Ð¥v`µZ»µ®&_\k\i ÁàF;ptd‘ðµlÛ¶ÉD;à¶µ¥ Š ‘@v -ƒP ‘ LP ; p;  À•@‘þp;P O7@L ·ª»º×!_vÀº} ;@;À;•Ð •v°P ;pv\0L ;pÑ Lа;- ‘À •p`!@]pƒ»è›¾•° °êkUv    • _±P ;p‘p@L ;p!_•``twvPb%f• _‘ïÛÁn ;àÁU ;@; ;ÐÑ0•|;‘0; !±P ŠÐ P \ƒ@w·`  • _¡ v ÂV¼µòuÅT¥`Š@Š ‘p@]%¦ð Ða%FŠ @;P °`` v°Uw•À; ÅŒ,аLU-°E¡v°áÅv ¡ƒ°ƒ L¡v0ɨ¼Š°v ©¬L; ¯<Ë´\˶|˸œËº¼Ë¼ÜË´;libjibx-java-1.1.6a/docs/tutorial/images/mapping-extends2.gif0000644000175000017500000012652210350117650024024 0ustar moellermoellerGIF89aDãÆqÿ"""&&&)))ÿ000222333€€777888""ÿ‰‰DDD33ÿKKK€77ÿ88ÿ‘"‘PPPRRRUUU‰XXXDDÿš3š```œ7œ"‘"fffUUÿhhh¢D¢mmm3š3pppqqq``ÿrrr7œ7ffÿwww«U«¬X¬D¢D}}}°`°³f³wwÿU«UˆˆˆX¬XŠŠŠ}}ÿ`°`¼w¼f³fˆˆÿ–––ŠŠÿ¿}¿™™™ÿw¼wĈĖ–ÿÅŠÅ£££¤¤¤™™ÿÈȪªªˆÄˆÌ–Ì͙ͯ¯¯Èªªÿ–Ë––̖Ҥҙ͙»»»ÕªÕ¿¿¿¤Ò¤»»ÿªÕªÞ»ÞÌÌÌà¿àÏÏϻ޻ÌÌÿ¿à¿æÌæÌæÌÝÝÝßßßÝÝÿïÝïÝïÝîîîîîÿ÷î÷î÷îÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!þCreated with The GIMP,Dãþ€q‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏЖYmÑÕÖ×ØÙ‹Ü/mq``Œ/q``”Ý/8mŠN`ˆ``qYmq`ÀhH° ÁWF¼xÁ€A4/Ð0’ð"šh(±Ð0‰ àˆƒæDh^ ‰ K4/МI³¦MK²Ê@P–6q²ÄqòÍ ,/œHx!(K›8Yâ8yfP–NÀ 1 Ë Úó‚H›8`àÈÒ&K›8þYâ8yfP–6`àÈ‚&KAY^”%Ž“hn*^Ì€,‚p0 K@g ¼ K@g ¼0 Ë 6ˆÄaà…m^`  €,qHhH Y^` €,qFxѰM@Ó¬¼ùóèÓÇÀ@`È@A ^dF„‚Ed!/dA‚Hð‚!dAˆ/da@‚H€Cd!YÄ@‚0ð‚ dY@NІ ¼YÂÀ êõèã@ÖY8±hÄþ@q0ˆ I0ˆ/@q0ˆ I0ˆ/@„H° ½ Áq… dƒHð‚ dY@/H0È ÄÀ ¼䢌6ê('d1ˆ/Ä@q0ˆ I0ˆ/@q0ˆ I0ˆ/@„€Ã ¤ùq… dƒHð‚ dY@/H0È ÄÀ ¼ðèµØf«í d1/Ä@q0ˆ I0ˆ/@q0ˆ 10ˆ/@ƒ/0`Y@q0ˆ/@q… þdñ‚ƒ¼ A "Á Û†,òÈçE`¼qE "Á YFYð‚ dƒHð¼Å ¼`Y´‘Å à HNÄ@‚E "Á ‚E8Gd`ÄцDÄÀ ¼@òÞ|÷ € A‚E "Á qŒxC/@q0ˆ/Äá7/0ð‚!°ƒ8Aà8Y@q0ˆ/@q¼ø d0À ‚0ˆ/„¬üòÌc‹“àD$`€aIhÒFm4ïý÷þà¿Nl`@᧯þúìwò7/ Ñþüô×oÿýøç¯ÿþü÷ïÿÿ  HÀð€L ÈÀ8¼…À"$€A Ìà³ H‘C4H†¯ #€ 0! €Ä ðl \²8A¼/Àñ‚À±ÀN0¡—˜-€ƒ@õ Dh$€A`ˆÐh@†l LŒ£{Œ  ƒ€ ‚Ü 0 ‚€ € " xÁ'IÉfàÀDâþ„€ `'ÄA@/0À âІH •Ì¥.† pCB—…€À€ Y]@ €qØ$ða—à §ò €0@—èLç÷6AðŒ§<çIÏzÚóžød^0Œà®Fð‚EdpšFð‚8¼€`*†¼ Ÿ¥D’€8,dÐâ°F@ˆCš6І6ÀÈâ°8€¡ Íé"Ú0 Ä#`À nqxF"¼#âþÀ âx6 ˆÎ qkX_€```àFŒ€#0@FA¬xÍBЀ†8´a€# ¬/Ü$8 Ä À€0`ˆCFA€À‡,įx k68€!+¸Äá€AX_¸¤6¬Yˆ_ €†°¾ /@$€8¼p#ˆƒ'00 C0ŒÀm@„8Hp#²¾ÆÁ pÂoçKßúÚ÷¾øÍ¯~÷Ëßþú÷¿°€Là˜¿80 €þ, @âЄÕ#@P=ˆbÚ€° hÃ|@„6 8ˆCdYÀ Ð' /Ýo%€ƒ°2 + 4€áa€X@„8Ȳ€8¼Àmp €, ÷•ÂÊ€,ÄbEâÐÄhà  4€a!¡û-~ €° @^ V„•DˆdYÀ Ð'@¬ÈÀð[4H`h8°ªWÍêV»úհ޵¬a Œ  a@ÄÁ #x €°þ +Ä ± ¬«Ðú ¬ˆƒFðÄq@ Ðeá¾H- €°:apBX Vˆpq@ „. q€~ð[àÕ #xâàx;!¬N€·îk0¤a@œo'ˆa€XÄq€B—…°À¾Y0À fMóšÛüæ8ϹÎŒ!ˆâ€8€¯+âÄqÈ‚Ä ± ¬ë ðú ¬ˆø €8 ˆ^`4„µ /Ýo%ð‚6Ä¡¥hC0Œþ  h@XÐ4ÄDˆ€8 ˆÃ €†°¶!Я^І8´4À+ø 0Œ  h@À0‚6 /ÝoqÀ€,„µ q@²0Œ  h€XÐ40€q â€8 xÐÖ6„ômÃ$†{ÿûà¿øÇß_4l ˆâ"Œ@â8€!€3â…ÐuD @q° /ð[/D @#Yqq<0€c`p_h°€c`°°P= 8/V/`þÀÀ`qqDÐ#8à“ø…8¡“q0  8/`À€óøE 8 KÀ€óbõ `ÀÀ`À#88Yð[8@ä7ˆ„Xˆ†xˆ9xüeh€ˆ’8‰”X‰–x‰˜H‰/ DV/ D°_@™xЍ˜Šª¸Š¬ØŠ®øŠ°‹²8‹´X‹¶x‹¸˜‹º¸‹¼Ø‹¾ø‹ÀŒÂÈj/8D@_Y8¿%0_#ða¿%ð_ _þ#ð©%Y0ŒäXŽæ˜sY@_`p`ÐRh€_0_0_ a__`_P_ WN0`Ðç˜ ¹Ö# aõ€388# q m°€C8/q  €3m0@Dð[/:Y8bÕ#@ab8ó•qÀWY8b8m0@D// #q€V8€#//qÀWxehàà ™—z¹—¿…@bh/þVZDV€aÅY€WVVD/`mà@_€W V/`màV V€a/:ôb%8VðÐN@aDÐVZ€W VYY€@_D0a…°h ~Þùàžâ9žâ 0m VNoNVZ VVð[€WVV V:Y0_€W V:Y V V_ V V ¡“qaa©xxÅ0Y0_mÀm VYþ`/~2:£4Z£6z£8*V8`D`0m€VÐh V VÐYq /ÐqÐRqm€amV V/`hVm0_€W V/`hVm Vàq@ð¡C_ Vàq@ð€aÕqaam€bxm€aE`ôµaÕ# `£ ª¢:ª¤Zª©…`À€óaõ q “q°°h°€c`/V8Ym0€c`Z/8/þ¡“m0€cA:Yà#``_Y:Yà#[0€c`ð@D/Y:Y/ V@óÕÐa…D`ª;±[±{±;`Y`ôõ8± ²";²$[²8÷€óó•&Û².û²0³2;³4[³6{³8›³:»³<Û³>û³@´B;´D[´F{´H›´J»´LÛ´Nû´PµR;µT[µV{µ ©xXûµ`¶ ©xb›¶j»¶lÛ¶nû¶p·r;·t[·v{·x›·z»·|K_þ};¸„+´Y€WN05mP¸Žû¸!Û# xeh#À#`q 8#ð0@qð0@Y8bõð°qðãN`N¹¼Û»¥Š@xE#h€qÐP=VP=V€W@mqhmVh €¾»¾ì;£`À#ÐbÕ Ðqqqaå#ðVVVV€WV€€WY`/0²œÁ¼ÁŒ£8`DV VVþÀWY`aqV€WV/`/Vm0|ÄHœÄJ¼Ä†m`mV@q0 €c`V€c`¡“/D @Àðq€DÀÄxœÇz¼ÇHü8°_Z°_€`|œÈŠ¼ÈŒLªY°_/ D V/ D _@ÜÉžüɠʢ<ʤ\ʦ|ʨœÊª¼Ê¬ÜÊ®üʰüj@`Y8`0 :x%ð_ _#ðøõs#ð`0/@ªþ@.`bU©åà_@.`±<Ζ4 q°aóùöõq°ù÷õq°aq°ôU5Zq`6`_ _ V`Ðä¼ÑøÕ# q#À#``À€3qð0@/#DY8aõð°aõã©Õ8qb 8#/8#V/8#0_Y|V V` Ó#@qðð°8Y8a%#q8ððYþ|õ[`À€3a#D/8#8Ü8#ÕÀ3m°€C` #ó•qÀW88# q m0@DY|õ[P¾íqàÛ`pàÀqà.P À¿e`@d0¾íqP.0.nàL0_]j qоVdà¾]qà.P À6P6P$ß]éN`NP_ ¾à Þàþàá>á^á~á Ž@aYYh€qÐþVP=P= V V@mahmð[€aÅY Vh€qЀ`ðah :ôb%8VðÐN@aDÐVZ€W VYY€°àh€qÐVP=€`ðbxY@`€8m€aÅYVV/:ô©Y@`aqðÐN@ ^bÕÐjàqPd@ 6n@ 0_ÀnPjqàÐÐ`àTq`þñ]ôUaå@V6n@ ÀnPbUõ…°h€áìÞîîþîðïòï`À#Ðaqqqà#ðVVV V VVV€0_ð[€WN0/qàðæaåðæ bb:YVVZ€W€W # î#ðVVNoN V€W€WN0/8ó©baq ¡“ ^x5à]VíBßVVTàþ6PqPqPqPí]ÐàV Ví]PaUbU žðóžùš¿ùœßùž?_8`DÀWVY`qq V VVV/`/0_ðm-€WÀW#Ðhq#Ðh/:ôbeND/`hVmVVÐh V€WÐhVDÐàÀWV€e6Ò†—І–˜€† ñÒ×Ö–Іö IІ Ж÷b€þ–ØVzWখÈT‘X×g¡–èv[XW ¦VWWW`¡–èfS^€WAÇTg¡–èVXYà¦vÛ6"Fþ0 À <ˆ0¡Â… ÞB³!€8â 2€Yâ„2&N(`âd "‰³„·Ðle Ê,qF ƒP/â€aêEÀ(ã8!`€-#Bó ˆÄy@Bœ,(³Äy@$DŽ @–8¡ €Ã Ô H/H *K¢$P²!”0‰^0ð q$ˆÊg€ Àþ´Ê6 x€I¢pÈÄqã"2¥l`â¡<èR N8ЏLÀ.â ìHPÀE2n\„ƒ°¢˜$²QÀÃ-Dš?>½úõìÛ'@ €AhÀpÿ`ùûûï$øG`ˆ`‚ ª÷‚D$ò‚D´± /„òB†dC86ÄaƒL|ˆbŠ*®Èb‹.¾cŒ2ÎHc6ÞˆcŽ:îÈc>þØP¡x#¼!`Œð9/„BD“E(·H.€1 J/ðB@/P`ŒðB)ddœrþÎÙ^à!q¼ðBBœ@|’€&h.à@|&€B¥0B @AÄÁ')NŒF’ŽJj©¦žŠjªª®Êj«ÿ´1‚q„Â' 0ÊÈ Ä!q´1qË ¼À`0Êq0#ÐÆ@.YÄ1Iml  ‡$òB(#H Š·¼À lÇ Ä!A(#00‚‰dÇ$·¼€R¡@ÒÆ@D"@†¢à’E“´±A(€ñqH@/„2Bˆ" Àq0#ÐÆ@Dþ„2`@@ÄñqHÊ Œ`@"ŒmŒDÄ!A(#FqLBŠh8a€®®ÍvÛn¿ wÜ®â`‰8m0€q´$@@"Äñ‚m8A.ÑhàGÄ@dÀ ´áq¼€Ò-àY‰€/$À?щH(Y@ ¼`@NH€C"¼€Ò-àYÄ@"Ä`¼ ‰0@DD0Y/І@@D€À 8$"Y@þÜ…/0@œ@H D.ˆ0‚D A@ƒÜ>Šp„$$0‚6@Â8Àâà„¼$ÄA(ÉÂ-ÄÁ #xâ€8 J²”‰@"œ° 8!€DD!8 HŠ8  HHH%Yˆ H ¸€88!‹N€H ˆâ  $ ‰$€ HD(â€8 H$€’,$ÿhÚ‰,à%¬¥-o‰Ë\J  B"^`þ$“$ ´! ˆÃ €†D´áHâ€I ˆâ€ ‰hà Pr ¼  qÐÚÄ #h´ ¸@"´! ¡ˆâ‚€€Ä €†D´!€„œ"à(¹…^І8h"hC†´ €Ú€!D`@Ä/0цDˆÃ´! ¡ˆâ€D Y0À €†D´!øŸцH º,«YÏŠÖ¢a‰^ˆ@ÈBP’… þ`CF €¡/$"Œ@Ä<A( †€ a¡06€ à. Å ñHà/$"ÄaØ@(â€8€y(^”d¡ #…‚€’,8À4l C6€ ` Å ñH ÀÄqF €A¢È‚`W$bØ@(â€8€q…ÀІ„Â`€(² H´ÁmHˆá kxÃî°‡? â‹xÄ$.±‰OŒâ«xÅ,n±‹_ ãËþxÆ4®±‰_€ëxÇ<î± ä yÈD.²‘?œ…#+yÉLn²“Ÿ å(KyÊT®²•¯Œå,kyË\î²—¿ æ0‹yÌd.³™ÏŒæK +@šß ç8ËyÎNÎB„0ƒ¡ tÿ h@·aˆ°Ѐ0`ˆŠ¼#âðŒDÈB( ñ¼ˆÃ Dá'À nµ«_ k,ãÀDˆ0FdY@Ѐƒ8´qÀ]Ü…‰@„@„6 @Ú4H`hˆµ·¿ îpë A Ñ´!þˆâ€D8a/@$‰@"a$q0á,àân¸ÃqãÀDHŸ€8 H&€8 Y0@"‡, ˆ0€8¼À/HDF 0D|ç<ï9¸Ñ°8´ÁmHâ€8€q$€,„Â`HD( †, $ /$"l€xAp@Ÿ«}íl÷ó p0bd#6À€¶ë}ï|'sFü /D¼€}o¼ãùÈK~ò”¯¼å/ùžWÀÈ8ÃŒ#TàÅþа *`â œáFøð*P¸gøŒ{ØGX=$* â œáFð½ñüä+ùÌo¾óŸýèKÿøc˜¾õ=\8Ü>¸~"*â D¸q¸}ˆ+àü Äáö‰¨À†+â x¸®@n‡3ÀÁûüï¿ÿÿ€(€pð2ð(ð"p({?FP?PX`ð€q0°—FPFP7F{^aFPFP7p({?ð(ð"?P€6qÀlð€g€°÷‰`°÷pðÀþX ac{p2{?P€q``p2Ð…2cC¨app°Çg g€°÷q`°÷‰`°÷6q0„‰Pp2Ð…pðÀXFPFP7 ](q0°—2Ð…2°'FPF0q0„qà"à(‹³H‹µh‹·x|O X00ÀOpP‰Pgp Œ  €pP‰PlPp°a€pPlðq00`"^Àq`]XVÊÈlðqþÀgp{"^ÀV O`"^À‰PX b2ð‰€c lðqÀg`‰Plp·GV O`"^À‰PXaa cPcÀ2°al 7À#f•W‰•Y©•[É•]é•_ –a)–cÉag€?‰PqPqPqà?`  "ÀÀa^ðFPqPqPqP2@cb^ðFP‰à7p^ ôþ8cÐ…2   ô8qP‰P‰P"VVæ?`^@š^^@š^b   ô8qP‰P‰PVV†2ðcÀac F@–驞ëÉžíéžï Ÿìù"€qPqPqPqPCX‰Pq0"c PP‰P‰`"`V‰PqPCXqPqPqPF lp`ô¸ac qPCXqp?lPF lp°a "àq€`"À‰qP‰P‰PpÀþ &Fqpa0„p?lPqp?lPF@V ^XPF lpl alXP"°apð2pñ ©‘*©“J©•j©‰À7€?P2Pc°'g°'gc@9PX €qp( F aFPX €?P2PcPqPqPSð°'gb°'g?P2Pcp({F?{"p6ô8^ÀðP?{"pFPX €q`þ  Æ7{"Pô8qð `({Fg€°gfô^ÀðP?{"pFPX €q` q0ô8q`  X°aO€—ª³;˳=ë³?Ûaa`•"ÀgP@«´K‹•c L µQ+µSKµf2€‰`2€#vÀXPµc«´F{F@¶i«¶k˶më¶o ·q+·sK·uk·w‹·y«·{Ë·}ë· ¸+¸ƒ @.`P怕@.`æ]@¸—‹¹™Kµ]Àa°•0¶6þ`V"VPq@ºF.@n ¹³K»µ;©nà6.àâàqàáà°Pqà$ `âàq`P.Pdà.P ÀV.0.d0áàq`àÀF.6.°a]Ò]‰@ qà.P À6P6P$ ]Òa TT0¶!,Â#LÂ%ìž@L  d`‰PV]ÀdP‰Pqà@ÐqPV‰P‰P]Àd`àþTV]P]Pjqà@d¦@nPqPj@66ÐV‰à@6n@ ÀnPPÆ.jà$ &¬È‹ÌȼÈd0.à@$@Ta  aa Ð]aTà6P‰P‰P] Tà6Pq@–L"V‰PPqàÍÑ Ðan0n ]6àÈá,ÎãLÎ; Àq@.àjP‰Pn PPþnÐ`nnàqPn ‰PnÐ 6jna ]VÒPdàn 6ÐV‰TLPq` ‰à àj°a¤›nà@å¬ÔKÍÔM –j@q@66P ]$P$Pd $@q`à‰@@`âÐqà.@VqPqPLààÐq@æà€6b]Ð;à@nàáþ+PLàÀ‰`àæà‰LàÔ³MÛµmÛŒ\ck@pÛ½íÛ¿ Ü>kÀUÛÁÜÉ­ÜËÍÜÍíÜÏ ÝÑ-ÝÓMÝÕmÂ20]YÖÍÝÝíÝÎ=æ?ŸgßÞé­Þ$ ? &lP?€? qp({?`ð€q`ð€c{``pq`]è^ ^°ÞŽáž•Ncù"€†?00lðq Œ Œa€pPqPlPpl 7Àþ®äK¾äm°0–g€?(qPqPqP‰à?`a"Àac FÀä{Îçßí#žO X·—ÀlPqPq0"c ‰PV‰Pq`"`‰? gÐç­îêÐÝ# N žlpq"‰PqPqPX?P2Pc{"p‰{"pc@c`€2PXp( FO€¯îáŽÜY`¢@îiO0ba0b"ÀgPþâNïõ^Ûmð(#àžc0bF X F X b7P€öÎð ?Î`ÀúNàðoñaY ñ@ïñoï8 ñ#0µp©#ðí `0/ðaY ` `0/ ¡@/0–#ðï)bp?`q`ô 2PYY#VgðFðÝWŸaA ïNОYÀÈ|Òž|b–|Yc qÀ'YYXY Vqp{PV"VVVqp{`ÐXõm@¡@ìÙ# q#À#þ``À¡0qð0@/#DY ‰ðð°‰ð¢àöð°`À¡0q#À#`m0@D°aY“/#DÐ#@q ¡0/ #`ÀÀ`ðð°‰q0 Ö q #q/‚#qq/‚#‰Ž‰Yqhhq‰qm#D‚#`q/‚#` `q//qYq“‰p?Xq??O-Å2qp?XFF7qg2ÅqFÅ?·‰cqllމg2Öþqp?XFF7q2Ö2cÅŽ2Ö2Å2FF⌉Ή'Ü*\Ȱ¡Ã‡#JœH±¢Å‹%"‚ÀŒ q ’@Y Á§ €DÀ€!€LŽ8@¤ €DÐh“‘6ÐàˆÓ@YdðÂ@'â¼$(!™^hã„€#Yˆ€€Ì‹8 ˆÄ! "m8”€#ƒ,q8Bƒ#Nq ó"4`^¼à !'#ˆÄya ‰d!&4`^0 ‡ƒDˆ´ÐЈ8^8$’!Å™DÇ ‡8°À©þGÆ“DâT`sÆH#Ö*(¬HÆ“DâÇ ‡8°À©à¨Â£ ·*$Sa  ÑHØ€†¡ÿÿ(à€hà&hà ‚ŒY(¸ ŒÐF"Ä@ÄáÄ/‰‰àމ€ q81 Ä@Ä€”eñ‰ eY$€#Nl°qàqÿÀ 81 Äá„”N$â„”Nü@ŽH@YqðˆR:€#$@"ø'CvcÄÁF?8R#2d7F‰TGŽT‡7ÜàE€þ$R#Ä!CvcTHŽTðH·Tà 2ü0†BYð‚„¸æªë®¼öê+7YÂ@¿rƒƒDÄ@Ä@L@"Ä‘…qG8€#$@"/ð‚B$@L@Ä@¼`‰´ñe G¼`‰´‘‰€1BhDÄAqÿIðBq´ÑF<À$€1Bh#´/P–¼`‰´Ž€1BhÀqÁ@"$€FˆÀF"pÄ!ÃŒ‘Hp°‡"°‘$RA"xþœñlT‡Ù)TA""xÄa„l$G‰TàHp°‘H·Tq`Q µ1‚`kùå˜g®9€m`lÄ@Ä# YÄ!ˆ`Ä!ˆ`Ä‘e@„Ç Hð7/@„1q<Œ ˆ`ü'ˆ`´1‚ €!WY€Á€ /Ä0Æ !Dø‡Æ‚eYˆÃ ‚xAÀÀA¼À?„цÂàJââ``†8¼DˆÀ8þü "8 8€p q0Bd8ü "èA° ƒ `Á ¨À*ÀÃÿ1Bv¼À ü g€ÃŠ!‚T 2¨a„ È` ÙC"ŒP$BXHˆP¬:ÚñŽxÌ£€$ "è‘@xd4€ÀÉÈF:ÒcÁ#'IÉJZ2/Ä.ÉH€‰xˆ   €DÐã $@Nºò•°ŒƒŠa„XÚò–¸\HÁ€6äò—À ¦0‡IÌb3!m †c:ó™ÐŒ¦4§IMGH@D¨¦6·ÉÍnzó› z 6Îgþ€ .°# p  @ ƒ lp t¡œøÌ§>ï˜A  ·ì‚B €  ³q° R€ÀˆƒBAÁ ų̂F7Z 6@`°¥\àDØ pPZÄÁ(uAVP€8x qp Pš °Ôq°Aâàx¥.(Üà‚$€ Ü(€ &àa(uAlP€ Ü ÃPê‚8Ø¥.HHâ 5Ä¡ (M<ÀÒ8¸ÁHlP€qðK=‡.Ä¡­€€¨*äó±,®6 Ø`‚#  2Ø þ¸EºÀ2 ˆƒ€ˆ t!xDQ€D  L ƒ à*$€èBºP5!n(@" @2$€jBÜP€8@ d°AlÀÒ(¤‰ðQ€8Øn BâP&¸¡Ž(C˜à‚D¨Á$Pƒd÷Ëßþr‚Ø€-É0¸ÁT  ¨ˆÜ¢Ž(@" ‡p£(@" ˆ8ÂÝíÂ- ‡Ä¡q ‚ lP€D èK=*¸ÀˆL… pDâàîv¡‰(€# °7LÀ Žèlàß*[9Ÿþ`„Ú€K @€ q ƒ Ü †$¢nPƒ# àˆ¸¡ ˆƒlà†8¸Á q(€Ôˆ¸¡ HDa¨!n¸EâP€8 hkQ€8t )@[ @¸A ˆƒ º«$Tˆ @@ ‰pCQGÀ jHˆBáx€ W¶°µÙ ¿T â@†  Ô‰°A<°´ q AHP2¨(…â`ƒx $( `–v!npJ!@†[ ˆC˜à‚x ]ˆJ!@†„¸ (&€Rü§ ÝþÝA à‚Á .@)VP&x LH„ àn¸nH˜0ì–»ü™^¾« Ó@دÎwÎó„à@èùmà&³ BOºÒó A  KºÔ§Nug¶Á‚CÕ·Îõ®{ý‘¶™AP`Á ñA!¨$À0‚(ä‚ B ,‚@B†¼ /I`x^@ €a/x„²ðõÎã‚Ø@1³ PqŒ#à14¾@$£x ÿ@BÄA2‰€ÇÐP <#ˆþ €8HÆNAÀÐÏ[Ÿ“`„Ú0Ì6Œ@q„dbŽ@"^€8HqhÃ@"pãx6bq#À#`m0@DY“/À‚à #`ð‚0q \!Üðð°`À‚0q#À#`m0@DY“À / Y ŽÐ#@‰ŽÀ ‘q0 / q‚ #`/ # \!‰Ð #0 0Ð#@‰þq0 Ž`hN`N°‚8ˆ„Xˆ†xˆˆ˜ˆŠ¸ˆŒØˆŽøˆ¨m`‚‘x‰…ˆ@‰à€mÀh€qÐàà/`mà@mh€qÐðÐN@qð¨ðp D€`ðŽ DЀ8mqYY/`mà`ˆðà/`màà€‰/ ·Y@`€`ð‰/€€8mqYYþ/`mà D0Ž€°h€‰0“29“4Y“6y‰# 8p“1  0mà€8@qà#ðàà YÀ N0/qqq YPˆðp àN %NàYÀN0/qqq YPˆðà YààPˆp ððN %Nð€qà#ð ˜ÜÐ Ðð<ù›ÀœÂ9œÀI‚°Ä‰þ8`D/` 0 ààÐYqð€‰Ð܉q“qqq/`hmð¨ðp `0m€àÐh0 ð€‰Ð…Žð€‰ÐqŽ`ND/ ·Ž#Ðh‰m€‰q00 ð€‰ÐÜ ŽÐ# `œZº¥\Ú¥Z Ð^ʈh°‰ð‰0 Y þY°°m0‚``p /D @#Yqq<0‚``0ˆ/À/˜ÀY /à/À /D @#Yqq<0‚``0ˆ/À/˜m0‚`A Yà#` ˆ/À/Y ÀY`À‚ð‰ð q  §#Yqq<0‚``p m`mà8@e°;°{ˆmÀ‚»° Û°›ˆ/€;±[±69‚€»±þ۱™²";²‰@‚°$›²*»²,Û².Û°`@`mð²6{³8›³:»³ Ñ `À³B;´D[´F°# 80´Y ÃÉ #ðq‚ð´·`0/ / D Y · #ðq‚°ˆ`ðð‰`0/ðX¸‚;¸„[¸Ü@‚°†{‰Y`ˆ@¸’ápˆ0“’¡à1hPˆÀ ’ápˆð0qŠq Žà#`Ћ»»¼Û»¾[ˆ/qþп«ˆm0‚  #à/q m0@DÀ // #0 0Ð#@ ‘q0 މ #/ # \!Üðð°q ##À#`qÐ#@qq0 ÜðY ‰Ð#@މÀ ‘q0 މ #/ # \!‰Ð #0 0Ð#@‰q0 Ž`hN`N¼hœÆj<œmÀþ Y°Æ…ˆ@‰à€mÀh€qÐàà/`mà@mh€qÐðÐN@qð¨h€qЀ`ð‰ DÐh€qЂ/`màPˆp /`màà€‰qð¨h€qЀ`ð‰/€€8mqYY/`mà D0Ž€°h@Ç ÝнˆD ð­`À#þÐŽ`DIqà#ðàà YÀ N0/qqq YPˆàN0/‰àR≎\!q‰‰à#ð‚ Y@ˆp  Yà`ˆàN0/‰àRâ‰h`N0/qqq YÀ mÀmðY`/Pјٙ½8` ÙÜ€@‰ðÀ‰“ŽŽm/`hmÀ 0 þð€‰Ð/ Ž“q#Ðh‰m€ ‰‰“ qqqð€‰Ð„·‰ð€‰Ð‰‰`NDqð¨à0 `0m€Ðh#q“qqq/`hmÀ ’ám0 ã2ž¼m Ñ@D0㉀`/#r*Y°°m0‚``p /D @#Yqq<0‚``0ˆY þY0 `À‚ð‰ð Üð@D# qqDÐ# ‚ø\ñq(# Y 3@0ƒ˜˜#Y //r q0 À# ·ÐÐŽ€D ãÒ>íƒK6@íÚ¾íiü8Àíàî6¹M8 îèžîÙêþ´/0°D0ðq `°ðï/€m`¸YÐ -Ñ €í¾ð ßðšà‰ðþÐq Ym@qY°0’a… YÀÐN /àð0ó2Ÿ¼/`m€‰ ‰€#Y Yà#@mYðDð`€Dà1Yà`€‰q@8Ðq@8€Ž/@mYNðh`8hm@/¿;‚À`0í3_ø†ÿ›m`/ %ŽN@h€qY°ŽÐ@q0ð Àm#@Ààð‰ À#À@mþ#`/  ÐqPú€/ D€°#`/à»/ ãYðN0Á mpøâ?þ…˜@mà/0D qY YððN@m€ ñ’—•p'ñr‡€×hÐv(uÈðuø"ÁÆèú +;KçdU«»ËÛ Û6"áj€0Â0bÆ0ò0@÷0@”åÌøð°÷â àädàäËÞîþ/?O_o/`à …@B–8²Äe€,®$¼x!Ñ /$¸Êþ€‘„‡0å€,/ <|!aCŒ$¼ˆ Ë!"ˆ€ÁW/Kœ¼øñkhãšC²ÄAƒæ€,qd™ þ #"мÀÈ ¼À€+YÀˆ/#dqY¼À,0"Á qÅ+hH°y"ÞƒƒDòÐ!Ä@|Ä@YpqdaÀ!¸À!Äñ‚/ÒÆ€1b“N> ¥lm@Ä!HpY¼@q€C"Y ñ Y´‘Å €GDÄÑÆ m@DYðÂ!0@‡àpHNÄ#¼NÄцY²ÁQ~Ú Äцm@ÄqŒ€dáŒ`âŒ`daY¼@Äþ HðB8j³Î> ­,#HÀàY¼@qô À ¯ôºŒ¼p8#A/8#/#dqYÄáÎàD0"Á q¼àÌ D` ´mÅ®¼€C/¼@/ LrÉ&ûÒFm¼FŒ F;SÕÒŒ€ÆÉÑfÑË ÁÈ ÁË@„ÎJ/ÍtÓN? uÔROMuÕV_uÖZoÍu×ï `Œð‚\€1 ºdá =€1 ‡¼@ °#¼ð– èRÁ?‡^#2TàN½TpþÆF9”DY”FÉs/€Š‰Šehp”Pý`ý`m@•\Ù•^ù•ˆŠõ@þ‡ð@‰µ@D–Fg#Ð/ÐÐXx™—z¹—|Ù—~¹—YÐ9˜D@ðssõ€X ý0˜’9™”Y™–y™˜™™ˆ€‡ ý€šš¢9š¤Yp X@™`Љmà€X€ WY€N0ƒ‹“ mPšÄYœÆyœ}ÙÐ`€œÎùœÎÙ# ‡ƒ Ð#0/Ð#  !qõð°q Ð##À#`qÐ#@N`N€€q0 0YЃ  !ƒ/þ0m0€€ƒ‡ Ð#/Ð# W// Ð##À#`qÐ#@N`N‰%qv%0¤L YÐÐM:¥T:˜8`D€0h€qÐ0€`ðƒtDÐh€qÐý/`màh €ƒ€À`YY‡ˆˆDÐ8`D€D0‡‡€8mqh/p@W@mh€qÐýþ/`màh €Ušˆà#€—ÀX`ÐU­}ùý°Òz­ØjW`À#Ј‡à#ð0N°N0pY 00N0/Ðqqq ï‘qðˆ€qq‡ˆˆƒ`À#ЇРЇˆà#ðN°Np0Y 00N0/Ðqqq ï‘qðSÚ# ˆ`h0@qý0//`  ‘ýp//þ/ ãgN­j›XÐ8°¶p«¶8`DppÀv`0m€0Ðh W00Àvý/`h0i0ƒP*qqq‡ˆm€ƒƒƒ€@ƒP*ˆˆl`0m€pÐh W0Àvý/`h0i0x™``™8`D€D0ƒøA‡‡DЀƒƒˆDЀЃ€°h·Œm@ýþ¼ÀSŠYðY0 `Àýðƒð qõ@D#ÐqqDÐ#ÐpD€D``NqqDï‘qð qð@D0h°qÐЃï‘q0  Ð/p/W/D @#ÐqqDÐ#ÐpD —D  °¥BYy  0mpmÀm00pp0p0€0€€Y`/ÀÀœý`þm˶|Ëü8€ËˆPý`{‰@ƒP*‡qpp0àq@0€0/`/0m0¼ ·/ÐÎîüÎLšð`@ÀL|‰m`mpý``YðD @N@0ï‘/D @Àðq€D0Ïj+ý€"}Ò(Ò—‰  ‰Ðù8š€`*­m@ý9ýÓ@ÔˆÕ °~0˜Y š@B]¥YÐÐOýÔUýÓm0ï!þƒàðmÕdí—/ÐPÖ"ˆà#p™`Ðj #ÐpÐmÏ|M¥Ð8Ðׂ]Wm0€€/#Dm0@D ý0qðý0`ÀÀ`//ààƒ½¶8NpD`#p/@­Û¤ÙÐ` Û¹@ˆ@#0€/`mà0Dqh/ÀDDÀƒDÐh €À-­N@W`Ð/°Þòm™YÐÐó Ï`À#ЇРЃƒqþ ï‘qˆàËáp000Y`/ßpKh0h^âzùý°&îÎ8`D0¥rY`qð€ƒÐq‡#Ðh @q@ 00Ð# `°âjÛNp# åZŽXÐ8°å·Œm`mpý``m0ý` Y`Àýð`ÀÀ`/D  DæqÛ`芞m@ý‹Ë/€ˆ‘¾âhðY0m`#€—®åYÐСNÀY€/ DpêRNþýாâ/Ðmðh0ë¼ÞëЙ`‡ÀYmàëÀ-ýp 8`ìÎþì£Ù‡``Ð>Øm@ïÁ×ÞíÞN™h`@‡ßÎËm@ë‡|Ýîîþî×ê‡@Àhïø¾—``šˆùþïð¢¹@m ð_WN@šÈ ÿðñ‰Õ¥r°Y ñß ‰h ñ ò ýð"ð8@ï'­€Ðò4X`0€ƒ/€5ßî`À Á?_¥€PôLoW#ÐMÏ/ hõVõÌþ0‡XoË``€__öfO¥ø1m@8NpöÜ/Àn?÷tœ8ÐYP÷p›mX/@ÈD0˜Y°„<h¤¹øŒßøŽÿø/šm@p/ÀDùš¿ùšYÀ/ð—D/N°œßú®ÿú°û”i`²û¸Ï—ðq8ðY0Y€‡hY€/qÕ€ˆqYY€/‡ÐDðY0m@/‡/@m0m@/¹OWï?ÿô?ÿ/@8p/€õßÿô/€ðGþ !a ·1ÇHàGPh ÁXIP™ GPh ‡F°1bð‚F°1bð7bð"ÁІF°1bð’ÉÛëû ,—•é42ì , ÖÆ -=M]m}ÝÆHà”.>N^^.ñ’‰€æDÀèDÀ‹€–ù"á •‰€öBB%0/$T“Å@Fp¼P Œ¹rmFHÈdM› Þ€y Žq^xG‚7À0ÀL#Œ0ÐfDâHð6N&=Š4©RF/hÃM›¥T«Z5'áE4/6H%"qF¼`„æÅ ²dz!Á€þ,qÐ¼Ø @"ˆ€aD„0Œ^xXÂ"ˆ€¡z ‡"™ˆŒˆ##Yâ` 4`^TÀˆ‘8DÄ@/ ´qB €,DÀ ‘° äáÄ‹G“¥’/Œ;—„YŒp’@–8/6´€&N#œd%Ó ¾dÉ`„“,²Äya€0q^`/€bDÄñ‚FtÁ€ÁÀmTÒmÄ@/0@Nl°•À•q¬@ŒI¼]Ž:î8 ÞŒÀcBŽ#bT@q€þ 0ò‚•E&`E&mÄ@/HP YT‚†T‚†¼ÀÀ/hH°Á¼à`Œ ƈ/´GmÄ@YÆm @%´DÄAqqð‚h0Ò#0ÒÆ€!g©¦çÄh0†/´qj¬¦‚àðmÄY0ÂD0òmÄYð²Y0BÄqÅ ´dáDŒl0‚Y0²Áh€#Y8áDŒl0‚¬hlG´Á€`ı°ü¾PÉ H0FÄ@ðþ0¿€!¿d²ŽL²Q#ð‹FÉ*Gçñm a¿/#8Ð#hÀï dÁK/xlqðûYA€0Ð@mÄáüà@m”ü+¯ÍöÚN0B%88ÑvÝH¡ÁKm “EÂd†/Y´Á hd¼€F&` MäÓd!yå–_ŽyæšoÎy/m0Ò¿#tNz馟ŽzꪯÎz뮿;0Y@Œ´FìºïÎ{ï¾ÿ|ðÂÇÞ•¼€Ã/Ï|óÎ?}ôÒSc L}öÚoÏ}÷Þ'ÆNþTÂÀh|~úê¯Ï~û™Á/ÉÌOýößþúïÏÿþÿÀ p€, ˆÀþeA¨„ˆÀJp‚¬ /ˆÁ jpƒ `*!0 ƒ$,¡ OˆÂªp…,´ ð‚J€¡…4¬¡ oˆÃêp‡¾  <,¢ˆÄ$*q‰™¿ÐÀÄ(JqŠT¬¢ù‡ÄTb#Ã5ød" üÊð—~ýï4(¼ €YÀü†6|qWD¿6ÀG  øü÷‚ ø É@PÀ6Œ@qhÃøE þ#^À¯H€_@ÀÀ0 F`€8´a $À¯ N0€ L&¶aÈ#Ðð4³/À@„8¼q •#²À¯J´aü"xц ð‹`ˆ*ðkqx¿FÀˆðk½0ÄA`Ä ø5 RqÀ0` âІ€D¿F0øÄˆÀ à€ ÈF `x#P !D`²€, /0@œ@F DCÐ  a™T5"þ*ñ~¡¡ªúãÀ0qãP d•Á€,ðB8`²T 8ˆC  /`Іô¼#À  /`*Á"Ä @ÄáhƒÀd`àEœÀ€‚#h#À 0ŒpˆœÀT•àWÄA¤@â^dÁ/àªuyÈ0 `¸.ýÀ0Œ@ÀT™@% ô™pÂ^€88DN`„@ä„^ ™#À'€È Œ@%þP ~Åq@$ÐÜ,Ä¿@à 6P@€qÀ Ú?  Y@À0‚6 Œ@Ð!D`â€8 /0ц8 mÀP‰(KyÊT®²•¯Œå,kyË\î²—¿ æ0‹yÌT~#Ú@à€Ìln³›¯ €8dÁŒ@²€8 Y0@%eTB/hCü$e ¼  qðSe  ÃÚ€Ä #h0e0 ŒhÚÄ #hÀ´ q`â@ ˆâð mˆ® þ€7O ˆ6À/€aØÇ~½€/€â€`@¡ #à—@Ê,ÄDP¶½ïï|ë{ßüÆ2øE„~ œßü2±l`à—À‡,4WÍÍ6À/€AÊhØ¿ „æf!#€ðëqøõ*übÀ°0Žüz#^ Ä À€8  BFÀ/8€”Y¨2Žõ¬k}ë\ïº×µÜ"l D¾Žö+ ílg³^@„¶Ë}ît¯»Ý÷Íàî_ˆÀ÷þÀK¹ YƒàøÄ+¾ë/ À *ñ0,~ò”¯¼å/ùÌëÛOŒÈ¿ˆ ùЋ~ô¤/½éåŽ~¡~:=¿_€(g_QÀ–_ÐÜJH`€˜0e ÌÀz°†6¸~ùÌ3ˆP‰`ÍÇ7¦ 1`ÊØ2® 2@˸2ò݆H mØ¿°€`ˆFÀ€àˆ`Àü2//ü"/`NvHhd†ü28/#D/q 0@•ŒüR m°þüB`@eÀ` ¤m0@Dðð°q ¤$YÀ/• ¤$ü"// eYÀ/•@Jm0@D// ¤$qüÂ@Jü"//f8`DÀ€ŒÀ@q@ `@q€8mqDÐYY€h €ÈŠ­èŠèŒ€€mðŠX“HŒŒq“H•Q• 8À TŒ 8À/`mà@þm•QRŒh U• 8ÀðÐN@ŒDÐÀ eeP YY€Àf`À#ÐŒQ•qqqqŒŒà#ðÀÀ #Œð¹H“5i“üöü7¹oÀÀÀÀP eP eÀP Ð\YŒ•QR•À0YPeP P Í•qŒŒRQQÆ0YÀf8`Dðmmþ DDÀqqqqqÀ€hqŒŒ@`qÐ# `À“«Éš­ÙeN`P D®ÙfY`ŒmY`•Q• /Ðqà'TŒ`NDqð€ŒÐÀP ÐhÀ eÐhD`eP àq@ð€ŒÐqŒŒm€•Qm€Œ@`•ðc†h°übKÀÀ`@üb`À#D @þŒ`D8@¶‰£9ª£hP  £aÆ/Œ°°üb`YÐ\:Ð\Y€À/RöÍå#`Ð#À/@DÀ/Í•Œð Œ`D@eYÐ\Yà#[0üb`ð@D/YÐ\Y/P @•[]–¤¥jª­ DÀm€§šepªY`i—e/ u/ D°e/À//«ÃJ¬¬Ø8P D€Å*e/ DPª/À//ðu/À//Pþ Nà¬Ýê­ßêf®åj®çŠ®éjh0/P ðh ®óJ¯õj¯÷ÊeYÀ/8Àfýê¯ÿ °+°K°ÿú¤”RöÐeD@ðUUö`eÐ\˰ ²!+²l– mÀY@#˲-ë²/ ³Œdm0ePeÐeÐN ZQWŒU1;eYP N0dm ´SKµS†•°`U˵]ëµ1Û# qðð°`Àü2q#À#`m0@DN`N eÀ`ÀÀ`þð°qðð°Tf8`#À#`qüÂ@JÀð°Tqqðð°q ¤$m0@DÀ/# #DÀ/#AÀ/•ðü2qÐ#@qðü2•Ð# •`h// À/#0 0Ð#@qàà_‹¿/K0•€ù À,À\†@•DЀ8mqYY/`màÀh €•ŒÀDDÀqDÐþÀ@mT†À`YY•QQDÐ@e¤Ä@m•ŒðÐN@•Y@`“H•Y@`P €`ðqðÐN@qh/À8`DP D0•DЀ8mqYY/`màÀh €lÉKhÀh — Ê¡ìµ`À#ЕŒqà#ð Í•ŒðhÐqŒ•qŒŒŒV†qq•þQQŒTq@ŒŒ•Œ Í•Œ•Œ•Q•à âq Í•N"N`À#ЌРЕŒqà#ð Í•Œð¢ Òd6ü’!mÒ'=²8`DÀÀ°™ð€Œà'# `ˆÑÀ @q@ ÀÀÀ0eˆ`@P eÐhÀÀ@eÀÀP Ðhð€ŒÐŒ•qþP eÀ`0m€/`hÀ[0m€P 8`DˆeÀ°™ð€Œà'# `€Ò±½ehðP /0Y`Ò ee ÛÁ­eh°qð@D0 À#À/8@•@/À`ÀÀ`ð@Dð@D eD``NqqDÍ•qð qð@D eÐ\/D @Œð m0üb` ¤”qÀ/q þ¤ôÍ À//m0übKÀüòQ†ÐЕð@D0 À#À/8@Âå[F & RQYNæe^µ²/€fÎæ‹NÀmðmÐæwŽçyNf/ D²Y ç>fhP 8À/` 艮è‹ÎèîµP hàè•né—Žé™®eY@•À€š.êø R&@eN@Œ@Pe`À@D/eNŒ@/À¤$q@elR&0êÑ>þfYÀ/8Pe8€ À ídž• qme€…`ðPeYÀq/ÐP m`ÀÐ`Œ•/T–•à#P °mðí¿em€ÐŒŒÐi `ñ²Ý# q ¤$`Àü2q008@` eYÀ/Œ@Jqàà•qðP €eh@Œ P #€À 0NðŒ/•RÖ# •`h@J À/###€R–üÂ`þ ¤äàUÛ`pò±-@Œ€üB`@°…Ò8`DeÀh€qÐÀ…À`PeÀ€ŒŒ€°h€•WÖ àq@°`Y qŒ€@NÀY@ ðŒQ†@•@#eÀh€qÐÀ…À`PeÀ€Œq€°h³Nð / ù'=0Œ`ÍE»D`qƒ„…†‡ˆ‰Š‹ŒŽ‘’“` #m…„N#/ƒh#qY¦„ƒ„„Y/qDþ„ƒY¦ƒm Y…`qÈYh/…mƒ„` #mƒm m…„N#/ƒh#qYÉ„ƒ„ƒY/“÷ƒ`8ÉÈ/ø H°à£6mâ8里ˆAB8^yH±¢Å‹q B@4q A`„²$0È€“8DÄi3B˜ADâ¼A€" 8¡Á Bƒ†À mÀÀDâ¼xa@4qŒ0HÂYdÀI"ÚŒF #4DF`˜¬Ä 6Y²´±K¸°áÈIà àb`KžL¹2$4½ !Îþda@€D eé7ƒ€Àà Rh mâdéw(K?0pB(Y"§‰ 2À˜,ý ¡ÙÐÆ@C/Hˆ3€Y ršˆ¡,ýf0À "%aÀ8Y‡AYe„ƒ€BYlEY´ß&¨à‚ˆ€Q#0H Vhá…f¨á†÷¼€‡ Æ 0¦Â Y “Å / CÈ Èò2„¼ Á „ñ„€ÑFˆ@‰Ï°A¢±B6éä“PF¹H V¹ 0”Å mÖÆ Yl !8@!/ ! ! !ȼþ@ˆAÈV` ÒFV*è 9±ÕxmØF`m *餔Vj饘f:(/€Lø ‘„!Á „HÀ „ ó!ȼ@28 ’2Y ž` Æ 8‚Fš;(Æ&«ì²Ì6ëì³!A’’Y‚§„ “Å Y “Å Y “Å / CÈ ÈBž„A„ Qí½øæ«ï¾üöëï¿,ðml…Æ `àIÈ Èò2„H€„H€„HÀ „àI!/8ÆÀ$#ø…dL!Ü“2 ¾Ð!pIÀÀ %÷|þð!DH@@ð `À „8!ÉH‡Æ"dáóÙü¢A/AÈ ¼@ˆH@¼@2/‚Ì ƒ Lƒ€!Áh ÒF`h÷ À!(À‚À#,$4>H÷ mÆ m0/0/@H Ä`¼Ðƒ€ñB Ò†@! §!YâÄ÷€ mxn}!m€A/dAžD‚ ƒdLƒdLƒd !/ C#¼@Y€o ц¤/À@„8¼qþ „À ²€ B´aÈ  ц ƒ`ˆ cqx2F0ˆ c‰À À dÄ¡ #ˆð¼ˆƒ’!, ƒH†!àˆ@ãÚ0 Ä¡ @@€8Hƒx2F dHà/À °8¼q2FÀ€ N0€ …À!Ð@€A€…1€x€8¼„hÃ$@ !mØ2ÄAÄ 1 $C‡x^€ ¼qâ€0`p‚œþp½bJ mD¶‚†A€O`Ä Aˆ ƒ/@!$ B!6ð‚,"0h˜„A€€aP0 q€< @„Á€,B8² 8ˆC  /І$ƒ€8¼Àmpâ"´„@!` " È$pˆ68hÈ0 à` È€A `xÁ  ¡ Œ, $°4ÄØ€BÀm`€â@ l ƒ ‚6þ†,H  DˆÀ€ÄÁhDÁ $€ƒA0 4€áƒ€"@„6 â€, ˆ$°4ó¶UC‘…­‚ 0!$ B!ñB ã„@†¼ ƒhC`Úð†0€À 0 qÀ @„À"p #xâà„ lÀ ƒp‚ „@$Ð,`  C€ À²p4¼`gFІAÀáÿ:a D’!þ8`Œ8  D ðB€Á„@!Pˆ60 …ƒ H Y D"`ˆ0‚6 ¢ hà ` ƒp‚0 " ÉÀ 0ă@ăȂ^€ÛFû+ ` ^@BHÀ/ 2^@d8aY@F‘ddáŒ!À а Ä! ÚÄqÈ‚€B€xAâ€CHàmˆBâ€B`$ÃÚ€Ä #h ÂNˆ‡ ƒhBþ  h €6 !D€€ÆáÀDˆƒ^І8 mÈ↴ Ú€D`ÚdÄq@Ú0 €!hÀAÀ@B („p04à ` @Ѐƒ8€„!^Ð0 DˆÃ F@€qØ !$ð‚6Ä!hC0Œ  hÀ Ð4 ƒ@І, ˆâ€6Œ@`p´Þ­˜6b+`‘…AdhxA‘$@„!Ã`İ€C²Ðô# hØ2 C þaÈ0@ú‘…8Œ@€ŒÄ @Æ ñ‚~8ÀІ à $" â@ú‘…A¼„ˆ ŒhØ@аd À O ãƒx$pˆ€â°lqqD€D@`@`NYÐYÐqýàqàƒ ƒ```Ð…€ÐЄ€€ òÄÈðƒð ‡ð@D°° Dðþ}X˜…Z mqðõa#@m °…h¸Y`‹`/@i‡rX/€sx‡x˜‡’"ý@€`P%/ D ‡[øÈðŠÐY†øˆý’8‰”X‰‡ À/–؉žø‰ Š¢8Š m@Ѝ˜Šª¸Š¬ØŠ®øŠ° ±X‹¶x‹¸øPY€ …‘”(//°/÷’…à#°/`иXÖ8‰#¡‡p0(    0q’Ò# …`hЀ  O 0 0/#þD € #//€ ððN`Npy‘qˆ|'9`P-/#D/q 0@„ƒÈ@m°È@``Y€ ƒðð°q É ‡Ð€ ƒðÈ0 `ÀÀ`#À#`qÐ#@€ #`@m/q 0 00@qÐ#@€ #`0ð8`DPD0q 80  @q@ YYƒþòDh€qÐ0@mYY€0h €œÂÙ/hP$àøòDƒƒqòD„…„ 80 ˆ„DÐ@€ƒÀYƒƒh/0@ @q@ YYqðÐN@ƒY@`ð8qƒqYYqòDqðÐN@ƒY@`0à`À#ЄРÐq†„€ qqƒƒqà#ð00 #„þðÃy¥X*) PÐùƒƒƒqƒ„…„„ƒ„‰†ƒƒàþ僄„€ qqq ýq…h`00ÐY8`D0[1ðmÁDDÀ0Y`q#ƒƒq@`ƒÐ# `¥Øš­ññ°|A8°/Y`ƒmY`„…„ /Ðq€ˆ„þƒ„m€‡ /Ðq€ÐYq#Ðhƒm€qÀDDÀ/`h0mP#qmY`qð€ƒÐq†ð‘€m`m0h°È`òÄÀ`qqDÈ``#Yð@D@ƒ€D ­x›·‹Ð`@ !hÀ/È``0`€ qý ýh°È```YÐD @þƒð ‡€€ òÄÈðƒð q @m0È` Yq°°@È``m0È` Y@p/€ ·ö{¿†ð@„ð ðq@Éðþø(/pY/ Dà/€ /pÀ|¥mà/Ѓ€È‡°À`à// DPÁ â(¼Â,¬/Y€ N0hðN€Dð-œÃ:¼Ã9ð„€ DÀÃD\ÄF\‹hà„` „þm …`  °G|ÅXœÅ‘0@„ððw Åf|ÆWŒ8°m0D€ `ðˆh\ÇvŒÂm0N€ D0m€`‰@`pdž|ÈØ:€„@ˆ/@ˆ\É–|‹`à„ÀÀ„€ŸH`pɆ…¤¼Êý²@„€#@£H Àʆ…¸üËV‚/ m0D€ `Šh° ÌÎüÌ[ˆƒàÈ@ƒÐ8€ªØÑÐüÍà¼//@ÀYÎê¼ÎÜN@„ÀÀ„Ðì|Ïøþ¬­@8ðNÏÁ)Y ÐìŒ/`m08€ h€·/…ÈPpY€ "È@/ðŠYPN0÷m`Ðy m0N€ N0hàö ‡  qЊm0P€m°È@`ðqðÈ0q É `ÀÀ`0 0Ð#@q È0€à*­m`ð„@Xú0@qðq#D@0Y€ „Ѐ †Ð€ q„ € þ#/€ #0/€ #€0Ð#@q È0/€ #`ÀÀ`ðð°iˆ@…@#€ƒÀY0€`ð„ƒÀDDÀqYY/`mà@Dh €ù<œh€8@  · O00 O@P@€ƒÀY`€ƒÀY@h€qЀ`ðƒh/€à#@/`mà@D€`ðqÀDDÀqþDЀ†`À#ЄРÐq‡ƒqàþ儃„qqqÐY0PY`/°ßÂ9@„€/z ƒƒƒqƒ„…„‹‡…à#ðNà_N0Nà_N€ƒ ýƒ„àþåq„qƒqˆ@ƒ°ƒ /Ðq€qm#Ðh„m€ @q@ ð€ƒÐƒƒÐ# `€çÖ˜#@h0Dþ q0ÐYqq@P@ðmaðmP0#Ðhq#Ðhˆ„ð€ƒÐƒƒ#ÐhqÀDDÀqƒrˆm`m0h°È``KÀÈð„ð `ÀÀ`À#€  Y€D î·m0Y€ D0m(Œ ƒ°°È``YÐ:ÐY€€ †€€ ýq0 þ € /`ÀÈð‡ È qÐ#€  Y € /`ÀÀ`ð@Dp‡/€nÇ/@°YðßYpüZŒ8ð„À`Eü@Ôþ9Ü„0@„ /h þìßþž˜ m0DîŸÿú¯‡màh0€@׆f¨¸ÈØèø)9IYiy‰™) ù28¸(@j(ÁðrÊÚêú +;K[kë:ø¢hðvû Ü @ à@  p -=M]m} ™õò¢È .^Ù6@@7þ0‚Càð)×6@@ôð°&ñ)΋A#PF§6# ç€6Hø$!N–A†$|’g„^80.¥Ê•,[¾j£hв8iã2§µÚ8!`H‚` PôÂ@'â Ò@ 8 ˆ ˜(’€Ã€Ú8!`‘6 ``EYdA#¡Q' túý 800' ´1D4‚ÿ’ð @–8hŒP@‘„ÈY€"qœlØàäE9K†ÀÀ"‹H‘¥š?Ž\p"` þDÄP4É«»za¡6q$ŒÅ€6hâ¼0€ÆP†Ä1à$`F´AàEœÄ!À  aHq`†Ðаm a ÖmÈa‡Â ò‚"à€†‡&ZÒÆƒADÄñÄÑÆƒDHNÀ,ÁÀ /4òBdq8A#°ÅƒÆ !DÄñÄ‘EdYÄñ(bpbœrÎÙˆŒ H@gŸ~R’…‘ðЍ_`(²(’E‰Núç ƒ¼IY€‘Ò¤þ4‹oPJª-D†AÀ¥¾ ëJoÔ`BoÀÐ@ÐÐ@&4`ˆ¹Ö`B® ˜‡4ð ÔðA ÄñF D… ¹ÖЀZ` E¬âZÆ `’Å DÒÆ¸î¾+ÌDaˆ GòÁ Ò€! ¬a††4 ÈQÄÅ |ÑÀ Äáoh! |…q¬a kÄ 26m ò‚"à€FÈ*¯Ìr#f|PÆ4ÀH†4`ˆ0À …! (Ò€"¹ÆÑ@ Äa‚± |GŒ|ÕM­§)ÂPÍu×^‹sQÄa‚oÄñÆþ ¼ñEq˜QÃk4`Ho¬ÇQÄÅ ÄÑ@ ÄákòF (òF &˜ñuäÔd¡È H`HÎyçž¿² q¬C®˜C04`†äêƒ!>4`Bf|ÐÀf4Gq4Å5äŠAÆ~ÇQ|Îü,D Ò†!NðBóÖ_}öÚ#çÄ`Æ DlO~ùæŸ>0ƒ¼ È N´‘~üÀ‹ þúSM#(ÂŒ`d€E € l JÐ@ElPÚàÀ jpƒ¬E   † ^ÐÁªp>h€,Ðþ4`…×hà C´#ƒ!²0"ÐpˆD¬Å Ñ€`4€ P„ÞPDR€ŸH!Ð0ˆ(âYˆ¢¿ˆ‰7ÔÀ†h@ 3| W50„rUƒ7Ô ˆB#¾+E˜ÁÆzC (ÄÁ ðA``c™ ZÀ€ÀH‰DPðHjr“8¢ ˆ´.k8BÞÐC4` fð0ð-Dà P„ Ž`ˆøoÐB Ñ€(¼¡†hÀ"Ö`¬a%Ì”$0ÉA´Áhh¦5¯©0H€À¦7Wb†Ôà Šh€!þ-ÔÀ 0„v¦(í _0– ÑE4@ 0Ò¾‡¢†h#¾€|s¡“ ¢9"0t¢ýPÑŒJ㈂!‡/`  XÃ3Ôà kh€0°C¼Á P´‡(4ÀXƒ!Þ‡¢†hÀÖ‡7ÔÀfÐhEÛ°ˆ~bN­ªU-A€,\u«²X ‘+ ˜!5h€ ð3| W>xC r…30â Jû‚"Ѐ4 5ÈÌàƒDÁ ˆB|ÐÄáQàêBqð¡HVø‹Y®n€`Ȭg? ÚÐþŠv´áÀÁ ˆ@ÚÔªvµ¬m­j ×Êv¶´­­mÇAÜv·¼í­o 4lƒÀ-®-¢`E˜á ˆ@Ìø`Zh€!ŒeCh ¨”fˆ(D >ˆƒ"€3DÂ_0®{eÛ†Hµá½žý) 3¼AfðAñ…ÄÁ 0ƒÞÐE¼ 0Dñ†DÁ >P„+ Ñ€7˜¡qÀÀL`F|AZ¨) 3¼¾,n±‹ ñ†˜ o€A®"@ƒÄÁ 0„rUËðA|ÐÄÁ ˆƒ rUƒÔqд°ˆ4þb 0„> ˆ¡†h€Ì`ˆ(`€fÀ€">P-ø  ˆƒ ˆ7ÔÀŠÀÀâðä*4h@LÐCø W50±LÐ4À €A|Ѐ8˜ W5ø@ 0-`@ /.µ©y{ DÁ&8‚!>ð…¢†hÀÌàC4 ˆÂ`ˆ"W_hÀ`ˆ5˜k0Dñ†h!Q0 ̇/˜  0Ä¢ðÄÁÀ@¢`ˆ|AGh@´ ¬Á 0Ä0ED¡†0Á ñ/4À 0DÖ`¢h@ÞÐC4Àþ¹úB¾ÐC¬Á0Xé?N‹`YÄ"@Š, "/ P\3| o0DÑC4ÀZØ™ ÑE|ÁX&ˆC ÑC4À¹ŠCâÐE|>0Dñ†|afÀ@L ´/â ˆƒкÄ! XDÖàƒÄ! €Aâ`†Ôà †xÃÞ`ˆ0¢†h€!´°3-¢Šø‚±L‡¢†h€!r‡Ä¡Šø|òÐÇ@,‹l  m€{€(ÄÁ>xCÒÖ€7|¡q0C Þ°†¢oXƒ#`ˆ¢þoøB®âЀ84 o¨ Ì ˆ,ÂG0ÄŽ3D` 0„Þ` ÄÁ h]â€,¢fXCâ…8ø Š8¢®¤&àoiÓoð fPo° ` ðkà ` ` ð_+qÐqÐqð5`fz)H /#D/q 0@Іƒ m°ƒ@`Àm°ƒ@` `Àƒ0qðƒ0†ðƒ0`h`/ q#À#`/#D`Àƒ0//þƒ //pUkq°0+`0Ð0Эó¹â†à `à &ÐQ0Ð0+qÐqÐQpQ _ 4qðJcРŠ`,q€ €f`>ÐoÐZ°Qq `o°ko€o k¹‚f  Ð:+>`>Ð&Ð>ÐQ` q ¹  G*ù¨Õ```à ° €†ÀYÀ€†ÀY h€qЀþ`ð†h/а @q@ àh€qÐ@mqh ûè”OY >pPI•Ui•W©```` °  аN0/qà§á†à§á``  ``N0/q††À0Y€•›¹_À™Ÿ š¡) Y`†mY`ЋР/ÐqÀzŒ /ÐqÀzq‹h€#Ðhþq#Ðh€ † DDÀqqqqq``œ``D šõiŸ÷‰Ÿùù”ƒ````0q‘¡‘‘h°ƒ``Àh°ƒ`AY#AÀƒðq 0/àDÀƒ€ qqqD0†0 Ð@D`@ú©¤KʤMꤤOúp Y`¢i1гЌ` ¥a*¦cJ / D@¦qð@•ðƒðWù‹ 5þ  P `fði ¨*¨ƒú¤oP&°°qÐ5ÐQfð¹Rqà¹Rqð5Ðð¹bf`ÆoP Qà à q`ÆbZ€Z@¨¹ª«»Ê«úx‹5` Ð:kpqð  °fàqàðZІ`G` >€o  oЊЊ°&kЫóJ¯õj¯¯`Po oðo` ` `ZP>Ðq ;£q`J“ÆbŠÐ†ÐŠÐq`Jó `þ   °_€>p¯'‹²c* /‹ @ À À/@•G€Q`®¤ _€†Ð&ÕfPo° >€k`oà ` q >€k`oІЊÐo°oP&`)˶mK• @ à@  p p•kqððŠ+`†P ` +>oP¹‚fÀ_ 4C P `oP¹‚4ÐQ` †à `Gn »± m0@D##€àŸ qÐ#@/þ/` Ÿ/0#ð ` ŸÐ#@qðð°ð Y0† Ÿ q0ððŽœéG »ûË¿‚úÐN@†  †ŠðÐN@qDЀ†qh/𠀆/`mà`@m†Œ‹Šh ÐNÀœùý+ÄC,¥Yh#  Y†qŠqà§áŠŠY``À°° þ #€/°D¬Ç{Ìǘð€†Ðq #Y`Ðh/`h`m†q`ND`0m€ð àq@ð€†Ðq††m€Š‹m€†@`},ÌÃLÌqÐ#0 @D#D/m0ƒ` D @N@0° 0/Ð/qà#[0ƒ``ð@D/YY/ @ÅìÐ Ñö™ ðDÑ­Ñþ/0/ m`ÀÑ%mÒ'Ò)­Ò+ÍÒ-íÒ/ Ó1-Ó3MӕЌЋÐ5ÍÓ==Ì À ° àÓEmÔGÔI­ÔKÍÔMM À°àÔUmÕb Œ‹WíÕ_ ÖTi_ÖemÖ ù‹ 5@ ð fðg-×s oP&°°o¹fà &Ðqà¹Rq`Æbfð ðf PPð5Ðq`¹R p tmÚt}‹5&p†ð_ `  °fàŠÐ†ðQQðþqÐ_Ð_Ð>€o   ðQ`k`0°§­Ý”ÀÐÓfð5ðŠððqÐІÐq ;£ŠÐ†ÐŠÐqÐqÐqÐ& 4_` °_€>°Ý . `@E}†àJ†`>ðq6qÐoð `5ðkЊÐo°q   à°†ð†Ð†ð5`f à?þF½0o€o`k¹‚f0Ð0ÐWð¹âŠà `fð ðf   Ð5+`&J`,_pQäsÞ@`€Ô>ptÎçùˆ/@Hý}Nè)A`P艮è’@ °èéh° 镞èm)m`é›Îé.;libjibx-java-1.1.6a/docs/tutorial/images/mapping-generic.gif0000644000175000017500000007205010350117650023700 0ustar moellermoellerGIF89a$ ÆH"""(((222333777@@@DDDHHHJJJKKK€PPPRRRUUU‰XXXYYY[[[\\\```"‘"dddfffhhh2š23š3pppqqqvvvwww{{{D¢D………U«UˆˆˆŠŠŠY­Y`°`f³f–––™™™ŸŸŸw¼w£££¤¤¤ªªªˆÄˆ¯¯¯±±±™Í™»»»¿¿¿ÀÀÀªÕª¯Ø¯ÌÌÌÏÏÏ»Þ»ÌæÌÝÝÝßßßÝïÝîîîî÷îÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!þCreated with The GIMP,$ þ€H‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³°?C¸‰?:?¹¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÁ Ñ ?H? ? $? ?ÀÒ $CŠ) ?ˆ? ?H$CH? ?Ï÷øùúûüýþÿè@‚ÄF†Ò¨‰!$†Сà0 d‰!ˆ†‚€$CH ÁDz¥Ë—0cÊœIs&‚jÐaD‡#:Œ¤ Qƒ )0¢ã§#)HÔƒD C Ð1¨€!‚`‚ä€:ˆèø©ÃH þ5ÑaD€:€è0"FÁ!HŒè0’‚D Eˆ+^̸±ãÇ#KžL¹²å˘3kÞŒ€A$ Ñ@‡ R¨!HÁ€ ÐÀ4€Ô Ô@¢`@H c$P8@¢Á€$(hð€i¸Ô@¢€Ž4@(ðCÜjpžO¿¾ýûøóëßÏ¿?" 4p5 ¡¦Pƒ P€ ü H$è€iÔ ˆÀÀ‚4@‚!è@H40 `„ t€: ¡¦Pƒ P€„è€: ¡:ÀÀ‚þ@Ô ˆø'å”TViå•XfI)蘀i  (0H$è€i M Ò † !Ñtp@A$Dƒ: ¡¦0H4Hè€H :  BÂ:0H4Z†*ꨤ–jê©‚ Ã t ¦0H4HD3H$è€i Î `:2 ( 0 €Hè€i  : 耄èÍ $ ƒDƒêºì¶ëî»ð€ƒÐ˜À Ñ Ñƒ4@‚˜À ÑpÀ `: ’:þp€!耄˜À Ñ ¡: €Hè€(0 èÀ ÑÄkóÍ8笳f¤`˜€i  00 @‚˜À Ñè5t †‚iÐ:@‚ 5À€: ¡¦0H4Hè€H3`0 ñÃ$èÀ Ñì¬øâŒ7ž3p@ Hè€i  @~À$è€i  0@ `Häà 0 9 H :`ƒDƒ„è€ [€HyFèÀ Ñ8nýõØgï:çtNçÑu½0 0ç~þç€è‚>è„^è†~舞芾èŒÞèŽþèé’>é”^é–~阞难éœÞéžþé ê¢>ê¤^ê¦~ꨞꪾê¬Þê®.È$ „@:0$ ¯žëº¾ëŸ$@@ƒ$ÀëÆ~ìÈžìʾìÌÞìÎþìþÐíÒ>íÔ^íÊÞRÖžíÚ¾íøz:Àíàîá®C 0ÐìJ p¯$Ð÷ªF îò>ïŒ> pC€F0:€FÐ)€$pÐ$ÐÐ9 € H` pÐ$€ H € 0p 0@000@ï2?ó€n$0$0$@‚ P?‚@ 0 0:@ÐH@ €0F€ $Ѓ@ €$ЂÐ `0C  Ð?@ónÿö!®ÐC F0C þFÐ0) $ЃÐ$ $ÐH@ €Ñ@$Ѓ@ €$ЂÐ$  Á:€5÷¢?úPm$0$€$Ѓð$0‚@€C€ @‚@€ÐHÐð‚`$H0H@€ЂÐ$ 0F @Р¤ßýÞ?È?Ð30C0? p :9@p €:900` ¦9€0€¤p0C2pЀ4tÐÀA‚dy‰™©¹ÉÙéù *:JZjzŠšªºÊÚêú +ëþÚA¢©3„9ô³94”9¤s9ôséë9¤3»ÌÜìü -=M]mJbt½ÍÝíý .>N^n~Žž®¾ÎÞînª£sùó³9ÿ“Ÿi¤cDß)¦xªŒè0B/“¯w :|±œ‘IXjÐ`Œd:Ð Ó:Pèt ¦ Tý £…LtD¼‰3§Îh:†h"щ­tøadˆ%z0f"Ñ@€!$Ht"щ« ©Š F$:ŒÀ:‹6­ÚµlÛº} ×í€48 4 ¤€ )@@‘øAâÀ€$(@@’þ  ÃHƒHd‚¡F$$ 5@b¤Á$.a´4DA¡CâÅCBI<$?(@bˆ‚B QP¨’ p£Á$Œ48 # H„’x—Œ ÐÆ¨êÛ¿?¿þýüûûÿ`€ùAÂ$ ¡5ü‚%$4€Iè@ AB `è€ XBBHЀ%  :tp€00&C¤@<—`„DCX‚‘%` À€Fš Q$4ÐÁFÐ` XÒÀ:PÁFÀÀ ÔðC Hè@ ?þ¤À \¢ƒ ü `Ÿ~þ h ‚Jh¡èp@C aD ‚%$4€I$XBBHÐd&$4` AB–4@Â% À*:d¢™`„D­ ƒ%Y‚$40„o:hòE4‰ $4`I$XÒÀ­74À) aD Â&F 0&5@¡ê®Ën»î¾ ï(F0 ?0XBH aI$XBHPÐ@ü`‰HC4`I$\BÁFXbD&: FHP0€–a F–4p4C“ hBÁH€ÑþHPÐ € XÒ –P0€–ì@€Ä$ A›ÐÁ%C4p€ñŽMvÙfŸv(?4ð Ð%:°:$ p@HèÀê°   :°:€¬0 $ p@– q  &0(@0 C ÐÐ:ÀÐÀè üP« ƒ'$@Ñ)°zÀ0ÔÀêÀ@Â4€ÄÐ/ À ñ Ð&C 0Ä%)vøâO~ù}ê0&CüÀ‰/˜ ¡&Cü`‰/Ÿ ¡Ã)CèЉ/¢ør _`ž‚.¡þƒ!`BCØDH`¾Jp‚¬ +H#\pƒì ß5„xü@]FÐ衉x Â:0=ÃÆ01¤‡ a8„xüà†ñ¸!Œ #ÐÇñð¡h7ôÅŸÅ(JqŠT¬¢¯ˆÅ,jq‹\좿Æ0† @ÄxÅ@  €Ð-þ:hŒhc‘†ñ! 0€Üð ðá ƒPÀ‡h€4€7<€ЈÉLjr“œì¤'? J4ê`SÄH(€!TŇ$hÀ0„ªQø†Cz#7$AŒ€þ!TŇ$hÀ0„ªÈ ÐN ÍhJsšÔ¬¦5§8„€UU ~p€1Ä $@FhÀ@à @ðƒ($@€ À H0„xĆ$@B<p€€H € Á 8À`€( 0BÀHˆ‡a ` $`U`„ $€!F`8°ªCP¨`H$Ä 8@@( h€p€À 8€Ð#4`  I€„xÄÐÐ ƒhÊu®t­«]ï*W#þ`$@ ðƒ! C¨HЀb $hHЀÀ0ÀnH‚¤€@Âj€4 $h€H€À0À læC )ÀH0€`HèÀŒx`) Á:p#ÀCˆâR€xÄ#HèÀŒ  a`463" ƒ@H Ð!   0 0„#’€0Ôð(*xÁ n°ƒ áKx®°…/Œá kØÂ:8@†€#  *)@ŒՀb $hH€‘[éþà†$hHÐ$üÀX @BU 4àV30ªIÐ$è: A@‚ #HÐ,Ð$#·ÒÁ‚u€b ¸•€b $hÀŒjD4 :€€4 :€HÐ$#·Ò0€!İ À† éHKzÒ”®´¥/-i#`$@BFg$PàH Abˆ$H @(0#ÀÐ7$A@‚ @ €„ª4@ ÀŒCØÌ‡$h`€ H AÐ Ð@@‚P`F€¡¬Üþ#H ÀŒC# #0lÀ@ÀÀfF$Ah H A:p$À? A@‚P`F€¡ŒH‚Àp 8€0 ò‹|ä$/¹É7üƒè è IŠ à0hÀèðV`'8Üð€Á€"øÁHÐà@ (’@p€Àà€Á €à€Áp‚ Ђa 4H€AF× €0ºü ¬:À` `àèÀƒ àPÀH€„ þÀ €@>†Ãàä´¯½íoûÜoØOô… ‡ ƒûŠCÐÁ‚IЀ Š?0‡ ƒ AGôEƒIЀ áˆ?0‡ ƒ#v€º/¿ùÏþô«Ÿä¦/@šFx¿ýïÿüëÿüï¿ÿÿ€(€H€h€è FÈ€ è€(—v:`a1¨Èèï§CC0ÐF ¦Fð+È‚-è‚/€CÐ00d  Ð€?p $Ð@HÐ@$À* Cpþ ` 0¬000ƒa(†cH†e¸`F@@2D€$Ð @€CPH@ @)?@)?€C$0)@ ` Ð0¤ Ð?`†™¨‰›È‰¨ÐCCF0C€UÑ:HðàŠ @ €::@ €::€C$ÐH@ ð@1T@èŒÏÑø~F@@0DCUÑ:H@€$Ð$ÐHð$ÐHðH€0D €$ÐHpF€þCРÒHi a?Ð:000t$Ð:0@àŠ pÐH@pÐ0УÓ?p0'00€)@‰“9©“8Ù$E¾C$Ð?00D ðC°`$F°“Q)•S¹‰$` †0C VTI–ei–g‰–i©–k ƒô°F F@O2f:`ô°`C?`aF F@O2f:`ôÀ– ™ †û÷  @Ot CÐö  @  þ0 `a?:ÐCFÐ) CÐ2t Pa?:ЙÁ‰:0FüCPOD C$ÐCP †CP0Tp2D C$ÐCPH F œíéŒCÐ0 Ðð @HÐ@p €$À* €p €FÐÀ*0pCp ð @H 0FÐ$€C`TH@HHð @C ¬ÒH0 À* 0 FÐ$` pþH` pH@H>d ?C?p $€FÐ)` pH0F…$€ñC@à À* €C ¬‚Ð:` 0@FÐ)€FÐ)€$€ñ€000àž©Z†F@@0D  $CPH@ €$00 )?C$0)@€:FÐàC$0)@05€$ÐH@  $pF00Ð$ àCCPH@ Ð`$ÐHÐþ`$ÐHР pF0P?H P? Ö`H@:CCPH@ €:5ð) P?HíjD0pF@ €pF@ € 0:@:Ð`035ð)€:5ð)`D:  ðªêµ/¨ÐCCUÑ:?àŠÐH@ €:ÐH  0„H@ €$ÐHð@>D €$Ð?°¶ €UÑ: p+:0FåC?°¶M‚$ÐH€Hþ@ € @1Ô·r H`  †>„HðkÛH` FÐ0)€C`T>ôÐ@$ÐH€H@ € @1Ô·r H` GT@_+¿H f$0$€UÑ:pH@ €$ÐH  €0?C$ÐH@ C@)`>D €$ÐpH@ €UÑ:0FCFíêCpH@qH@ € pH@ € @1D`0´þ$0Hð$0 Öð0d0„H@€$ÐHð$0?@C@€0Ю>T:@ЀÐHЀÐHÐ$C0FC;@C@€?@C@àCCРóËÉhÐö  @  ààŠð$@pÐH 0: `000@>t0®8?p$Ð:'pР FàŠ¬r5À*00Ð04 þ/ p€? p `F Ð 0УÓ®8ô pð Ð 6€À*00P¬ràp CCpÐð ÐHð Ð>”$ÐÉC-€? æ 1D ðC€$Ð?0 F`) æ P4:Ð`¾C¾ C¾EC 1¤C C:0 6:pD¾pC:01¤C a¾ C¾EC 1¤C C:0DØXÀ*?ðh0„0Ð`5pp0Ø›ÍÙ0H­þ2-Ú£ªF@·Ò¤­Ú«­–? ·0ÀÚ³MÛQYÛ0µÍÛ½-Fp¹­¾MÜŽ‰F@°MÆÍÜ͆?Û5 a$ 1D: C$ ÎÍÝÝ i À*À*F a@1$ C@ÞíÞï=a)À*$€?@ðßù€C0pF ß.àû׬¢Žà ni)À*$i¾`aô à¾ÚC0pFi †â¢Ý¬¢¦CC0ÐF ¦F`C@:â5.a)À*paCÐ00d  Ð€þ?p $Ð@HÐ@$À* Cp ` 0¬Ò…™¬Ò$ 6çP4`f$0$ C$@H@  $H05€$Ð$00ð$00ðH€0D$0:FÐC:  ðÙ°Ý)ðqë0D¬R¦ÐCCF0C€UÑ:HðkÛ$ÐH  $ÐH  H€0D €$Ð?0p$C5` Û0ð±^ã5À*€aF@þ@0DCUÑ:H@€$Ð$ÐHð$ÐHðH€0D €$ÐHpF€CРipî`ìâF00F a?Ð:000t$Ð:0@àŠ pÐH@pÐ0УÓ?p0'00€)@9ùç^(âÀ*5i@Pä 0D ðCC$Ð?0 F`)R ¹MF ö ^¬Ò’FFÐ`1„0À`5pp00•Û ?àFþ00CÀî À*p­ÒFЩ¯ú«Ïú­ïúH@¬’63 >DO1D¯ïûfÐ0D­25ðûɯüËÏü˯¬ÒvÐ>„Ot CÑüÝDôC? ­BCàýçþé¯þf0¦CC0Ð$Ð>DOD CôH‚ƒ„ƒ:F…‰Š‹ŒŽ‘’))“›œžŸ ¡¢£¤¥¦§¨$—)žC C‚F:$ H$— H C — H$— ‚ F —000¨ÛܨC á CÝåæþçèéêëìŒ:á F$$„$H$0)?‚4@Bb@ :0B¢Á ‚H HAb€Ft¤CAƒçBŠ|Tc@¸$Fª\ɲ¥Ë—0÷£“Ž † 22` è C@$$ !!°  D¢ ~€q€Ä (À»Í…pü ˶­Û·pÍ‘Gâ“H"ÑA‰H`ø!H  x …ƒ "Ñ ‰HPHaÉtÄÍIÇ´$Œ^ͺµë—:Â)õ£Ž!†"à€H`40 0 èþîÀ€k ˆ7øq`ŒN 0€’$‰O¾¼ùóèÓ«Oo„Ú:éXO¿¾ýûøóëßÏ¿¿ÿÿÎýu@B!? qÞC GF¤€Vháx?(€ F 1Ä)\(âˆ$–hâ‰(öGB8$øG‚#ÖpÀâ8ŠGÂá PCáèãDiä‘'þÎH6éä“C4€Z ñä•Xf©%Ž „£Ã–`†Ya L €Fˆ©æšl¶) áàæœt’Ç€™tPçž|ö)âá`„Ÿ„®™žá¤P袌6Jžáèàè¤N6€h8:Pªé¦þt’ œ†š£5 €™ !ꪬ69D8Ñê¬&Q „£€´öêëˆ „SïÄ^hD $Àà¨:áæ³Ðö—B8Dkíµ`’  ýÁ @8Ô :`kî¹â 1î»ð¦øƒ 4À t C 4 :Ä+°µ „SÃÀ'  @HÔ@ )„C òÃHÔðp F2$òƒè€D §`„ C< ƒH ñ0 FÃÃC2ÄÃ00  b) !!$4 ü0ž@‘0„‘$ á_ áP ðÖ\ã'4€H4@þ F4€…€…è€H Ð ¡ 40 : @€ÐÀ?è€ @Â:@‚ $ `áÀ Èá€:Œ@ E CC ÀCt­ûîç „„‚ü€000`Fò:B‰è€H!Èè@‚ƒü@‚ƒüÃF¢@$(0È “0À?‚ 4p€ $4 H€Æ ¢‚ `ð°! ût0ˆ‹!Á:0B Hð#¤€: 6$AFH j€þ :†ð0¡> G xÇÃB HÐAa)@: t@ Ð!:ЀDè:@‚: è  Œ€„€:0:p€‡‘@ ) t`…aÈ PÔ ÐH€è`<ÐÁ Œ A Àð$P Pt€A :€p€Œò(p4`?ÐF©Ô P@` (  }jŽøð˜=H @è:@B`Ô 5R è€$@"tÔþH #t`@ ŒÐ`5hÀÜH¡Àj 0„cƒ€:Ð  ƒñ@„ 0A€0€Q`A‚P$ $@‚@ À‚P@t€B@t (`?X€ ¡‡Pª@( €A@HÐHpAP@ƒ€¡À€FÐt@ :ÄЀA A ÁÄ34@a?ÀŒ0è`  :t@P ƒ Á: Bèþƒt€A@‚ :p7 D„@" Œ€#ü@G zHÜê : :p#Ð ¢p.  ƒB4`0@‚R@@8€sI ‚hHPA4€: Q ‚h¦€ €ƒ€Ѐ$@t0è€ @A„:€!$胀4àü„0 :„:0  ç©Hƒp4 ¸HÞZ`„ €A Aþ?@8(Â@ËH èà  å? Zð$À`h Ðr€$Œ  A@HøA  :t0ˆ@PÀ Hp€:€!$胀€‡ :À ‚è CP@ÎÓp CH²°·fü`FÐÁÊc DÇõíÏysþcÈó!:¾#!AÂüv QD¢xö¬þIŠŒ40@ Hä…„XÐ$4°]^Ó‘Ð$4`D ‚"$4  z5€ AB$4€ ^:0DY:|× ÏýpÀÏq@H4p@ðƒ" € è:À0€ŠÀ0€ @D P€z^~ f˜bŽIf™fž‰fšj‚™ k¾ gœrnG‚cAÂ$ ABHÀ@¡ˆH4@‚"?0 ÑÁHÀ€ ABÛu0ÀŠAHPÐÀ$ AŠClGBHÐ AAH ×€Àðáw  ˆþ ÃCÀ€D ñƒ#t` Ht00  q@ÏQp:ÀC H4@Áœî¾ o¼òÎKo½öÞ;ç è@ÐÁÐ:0À ñ ÐC À$0  ÃuF(@8âÙ”€t ˆž °ÝÀpÀ"xvÀ0@B:ƒz040À ü Ã}$è0@À È p4 Š(pÀü Ïý0€t Ã ð¾n¿ wÜr;2ÝŽüðÜ?¼«7šŽ<§·Üî’ÐÀC<7„æé0Ät?þæ:<ÇÛt: 1Ý?€ÉÛ»?è`ÄwCè`Ätzg„C(òƒ‚¿{첓y@ÓÁÐÀ <—˜$Ð aæe¦@‚"y‘Ù HÀÐ ³#‘ Ó_}öÚoϽy$4°]^Ïéý% ü ŠÐ€zz›©?1„"zƒIBŠt€C0„î p€, 8  €( $P@@çä $ðL`„@øÁuRaH ÁÐ ¡hÀ`Ï4 8€Ð$¡ð ® /H g€„ þÀ p¤ $8À€ @  P0#4` "@|9â9z›t`½yÉæ1‚Œ 73é;ŽoÉHb€A    @ ƒàŠÈËsò‚„ ÀH €®c„à?P 0 @Ðò‚ $t#4 ÛB àˆçäE €( Ôà)P  ô @Âj€4 $h€H€À0ÀÐØËÇ#"ò2»@  H \çþ 0Ï ƒP€;$8@`ð¼pç Ót ÉŠTn$ht 4 $hHÐ$è:PD^ž“$äÅK)ÀA‚L§$˜N^@‚  @ƒ€;:Àuò¢ˆ@FhE Š@ $üàx @z 4à>ÐÛt€aŠÐ˜HЀz`èAÂR€ á:$h€z0ô AFx ðà;z{  4à;:‚"`ÐyéÀ#m­k‘@‚ Ð@  @ ðEäå9yþABðEá:$HHEH‚"@‚éä $hHÐE€)0wt€ëäE "~@‚!PŠ 0ô á@€4 èi€@AF@ tP/(yA <Ó$4 t`„) ÁÐlP€„@ € FhÀ@‚!ÈH$@‚#¡è FhÀ( hp H  ŠHH`„!  @@Ï4@$8À€4 xþÎp€! ÁÐp€€FhÀ@$4 nЀ H0B0à @ƒÀ൬Ž$ pt@ž9À`@@ àÓ” >mÀ€@×IÁ0(BžH0€4 0h€O`€Àà€Á€P`;0P$À >m€p€ áPÀ: xfù€à øÁHÐà@ $€õB àˆçäE €(àÔà)@ ðœ!ȈHþ €„!Ô $h   8€`€|è;:€Ð!ðÀR@‚ H À( ?0Bp€  P  ˆ¼<‡ P  F ÁHðP@$ R€ À0ÀЀè€*@ ~$t`FH<0€`ŠÐðƒV«ž{$hÀ† Þ\çCÓtð!è`ÓÂÊD!X“†0!üà;¼QÏtðôØK¸N^Ñ<Ç ÀR€4à90ø €4 ?8^þÐÓ  ë d´ AÐò‚:ÐH@ €$ÐH@ ð5 )àSH€   yñ$Њ@ €$ÐH ÐC F0C $ÐH t¥HÐ$ FÐ0)€y:ÐH@ ð5°zOˆ=yTÛCF`/:בŠÐ$ð?@C@€$H0ÛA €$ÐH@€$ÐèÑ:H@`ŠÀ²$::€pH  €$ÐH@ þ€$ÐÛ1 p:€$H@€èÑ:ŠÏA€C@ €$Њ`$0$€$ÐÏA €0 0F F€ @Šð$0HЀ0ÐH@ €CРPhŽçˆŽÝ H àS  p  ? p€:à°00p$1@  CpРêA1F€Cp 0$p00p00p)@Ï‘Ð@Hp$Ð:Ð>Õþ?€:àp00ð?Ð30Cð$0 :@p €? p€Cp 0$p00$Žy©=Ž0Cà?ðzó.zS&Cà? —i¢CðCðaÂê1:&? ×ñF°&C C &Cð_Ò$0$Ð?0Ï1:`:0ÓñF˜³Ù=ÐÓ 0 ð Ð`BÐ0&¾Y&0ÐÐeÒ$€0Ð0@›Ó‰&$`Óá›0@Û©z$ÐÛá›Ï¡7_ð0@Š@  þzs&¾ &$ÐÏÑ CCÀûÉŸý …p  € H@ Ð@Ïá›H@žÑH` ?p)$`C€$pÐ$€ 0`žÑH ÐH` 0žÜᛊð @FÐ)@0 @H@pH?p $€ Ð€FÐ$ @rãÓáó¢7`b:`z#'F F 7þ©§ýI)ÐH@ €$00ðŠà›Ïá›HÐ`Hþ@:pFÐp? $ÐÓÑ  Hà›H@$0H ` Ðßᛊ05€$Ð:5ð)€$ÐÏ05€$ÐH@  $HÐ`0C€ rs 0Ðóâ›`ò  @FÐ @F $à›:€$ÐðŠà› @FÐ @F€?:Ð0R ˰ ;$ÐH ` €$ÐH@ €:: ¾ù¾‰¾é%)àSŠ@ 0 @Óá›H@ €$ÐHð@ßá›þŠðÇÓFÐ0)€$ÐÏaV?p< €èÑ:HÐt¥ö¢Cð$ÐÓA 0/z&0fF  €?:@   Њè$F   0è¡F`‰«¸‹Ë¸ë¸ ¹‘+¹“K¹•k¹—û¸$ÐH €ÐH@ €0? ¾ù¾‰0? Fp$H@ $H0ŠÐ$0¾‰$ÐH@  @)`ßᛊ@€$Ð?@C@€$H0H€Hp@€þ$ÐH€  €0F F€$ ˜ûCÐ0?p $0 à €C žá›Ð:` 0@FÐ)€FÐ)°$p @žÑŠÐ@C #Š@Hà  HЀ?ÐèH@`H?   HР$€ŽúkÅWŒÅY¬Å[ÌÅ]l$ žq$€0Ð>Õ%Ð>Õ; Ð בÐ@Š ž1H@p €0Ð>Õþ00pC00°0Ð>Õ?@p@ ÐH ž1Hp? @pð@  CpРH$ ÅF@@Š05€$ÐpF@ €pF@ € 0:@:Ð`035ð)€:5ð)°0`ÏŠà›Š@)%Я °$5p  à:Ѐ$:€ p$5pÀ:  ð^LÒ%mÒ'Ò)­¸$Ð?0ŠÀ×ñCиC ß1:0þÓ1?¹$FÀ¸¼1:0Ï1?𼡸C ÏZ¬ÐC ?p<ýŠ$ÐHà›H@ € @ÏÑtu H` ÜñÐÏᛊ@ €:3 #ÛaÐH  H@ðÏ¡`ÐßQ@*-Ú£MÚ¥mÚ‰ë›0pÚŽ[^ ¹$`[l$0$€pH@¾yH@ € pH@ € @ÏA`а$0Hð$0Ûa HЊàþ›Š@ €0%0ÐÛ15€ @H@€:#F@ $€0CPHаCР²íàá.áþ¸Ž0Cà?ðz¹AÜG ÅŽðŽ@á–û  $1)à00Pžqàp  CpÐð ÐHð ÐÛAt àS ð$ ¸:0 p?€?0 p` pŠ 0  ðÛ‘$pây®ç{Îç}¾¸ÐÓ 0 ð¾É¸2`& Hþ°&ÀZ| ðÐ~>¹¼ñ¼1¼‘¸C Ï¡C0:0‘K ðCÀ¸? Óa:0Ï¡CðC F ? šìÁ.ìÃ.Û$ÐÛá›Ï¡7‹k .PH &ÀAp‹+&¹$ÐÏA @ì᮸¾ ânîçŽîé~Åp  € H@ Ð@Ïá›H@žÑH` ?p‹ŽAA  `€ŠG`2p. B P& Ûñ @H0 à 0 ྠþ 0 FÐ$` pH` pÏ$ îOŸî¼õSOõN)ÐH@ €$00ðŠà›Ïá›HÐ`H@:p‹ŽAA 6Bð.°G°pH€A€2`ß15€$ÐHÐ`$ÐpF@ € 0:@:Ð`035ð)€:5ð)ð U¹C0 CÐ@?0¾I?ð?Ð0€ýJÛá›0à›0`Å$à›0pÅ ºÏýÝoÅ$ÐþH ` €$ÐH@ €:: ¾ù¾‰¾i‹ŽAA &€AAH„A&‰&„Ž2&Ž’H?– H H$š H$ H $Ž ¨7 )HF )“¶·¸¹º»:C¶$ »¹$ Ž:FŽ)$„: H ?F Ž $H$$0¶CCÂé„?Cê¸:CŽ0 ·$ ð“$ „:Fú H° Áƒ’h€ Ph€„D$0ü ¤É‘&$ü dd’‹ HrD("Ã’„8ŠE…#„ZTBè±Eáþ 48€„‚¦H(4@Ò€„# ŒÚAbH~B€#:"ÒàÀ# HAâÀ€$4Ð`€  ÄHƒ¾Ѐ`Hj@b „Œ Aˆ$øq HH@òã€$h€ @HØ@ÂÑ p@€HŒ4€¡!  !dd€# H„Ä H4Ð`F @ÂHƒH !q`@0 Cihà&¨à‚ 6èàƒ’Àt Co  @HÀÐÀþ4PB$6°ƒ4€“QÈ€„ l HqQĘ D`BA D"ØB– ðC ½0@½0€Ð!C@¼€t€Ä(p@Ž@„xJb @ˆÔðC HЀ$  ` ÑÁFÀÀ$4 ‰ 4ð! ü€D`? `$ ÑÀÀ` ½õ†Ä5 AB$ C ü@Â0¤@ À ƒ·@‚#CÔ€ 0@ $ €D@0 ’@:PþÃ)BBŽ40€èÐÁFÀÀC ABŽè @?äéðÃG,ñÄ ’ÐÀC2Ä“ü0D‚Cè@`EH"D„˜ÐCAHA8RD’!„$’l,ÉÆŽlŒ3ÎCèàˆCH¢Ã’|óóÒL7íôÒ:ÐÀ„Ѥ€ HÒ „4+:40¶$4€s P@H$8òÃ?8bÄ ÑÀ pÀ„(0ÀÏ$€ ñƒ%4@BHè€$4€„èp€ À°4$ 1„?0Þ ABH40¶ 40„#F 0F4þÀ)BBŽ4@‚# ŒÀØ: AB’ÔOG/ýôÔWoýõØg¯ýö„h÷àËPA2€o>õ$qþöF0 Hü@€ 1! @0!Œ@F 0$ ¡Ð#@Bá$ÐÁ†$tHøt€HèÀ~F @€4€ @ ð4 0ÀR€0 $@ t@  A@‚ 0!Œ` €„ Añ   €„! ¡$p`BH`Fþ „@ ac 8€ÖGÈBòˆL¤"ÉÈFbï ÐÁ €t :èÍ@‚ HÂÐè`@0ÂÞ ) #`Ѐ ?ÐA®H ƒ40 Ä€  ~vÀà€ `‰h@@@‚ƒ¥‘`l: ,1  †p4: Ä ƒ! `„øp€B½ p€b@0ƒ ÐtЛ¤€Ž ©HGJÒéPCáñƒ²¥àþaIgê ÁCøAÓ† I AŽÂ°÷iCЦ·1B ?!HЀ 0€¦·1§ AKë p¦ƒ!Hb?hÚtàˆ!è@CøMçJ׺ò  0€8BÒ#Áƒéi|h€]ËØìiŽÐ MÀ`‘$0Bc7ËÙÎ:’ ø™&ÑÒèÁ?€ A‚8­¥à#AB{¿183B ú¨ßÌÐÅGš H@š „@š K£h$€ŠF„ h$°4C0€CÐ@?€C  ð„ð Ns:€3Щ¿ýܯ›:08C @h:`’ð Ð?:@ €?:@ °4ð 0€ð 0@€@Bþƒdx˜r0@‚¤£€Ô@ôÓatÐ`¨@rh¨3dÓÐiHÒ@Ššj¨c¤êú +;K[k{‹›«»Ë‹D¢sH¢ÓI¢Ó{Œœ¬,;Ôp0pÐ@A¢ÐЀdÔp0p Ð€dÔ0@3søÐÑ@òÐÑ@‚ôÐÑ@‚ŠÀC~tðà¡$:Q pÈÈHHP@âІ 12@ @BA ip` h€ÄHƒHÀC¡Ð¡D‹=Š4©Ò¥L›:} ‰CHt@ªÖ­\»&5Bb C$ÀH@À$ é0ÀH þ¤ 1I‡F`¢CAƒ† IƒÃ: 58¬`ƒ` ip` C  €¡°‰C0ü0ÔÀ#?@‰H"AÁ‰0RÐ0 ‰H: 0’€‡)H @ÒဆèPÐà‡×íÜ»{ÿ>¼øñäÇë8Ð`ˆ! è`¡ 4h€D h€D‡¦5@0  ƒ°0€ ` è F(¤À‡(0@'  P$òÃ?tbÄ÷Ðü Ã aˆ a ¡4€ q:`þAHÐ v˜HÔåmÉe—^~ f˜be € 4€ ÑÁHÀ€ ABHP0€†ÑÀ:BÁHèÀ ¡CPp:0$èp Ht0$ ÑÁ†€DB‚4@F@‚? 1 HtÀ:è@F a € BBHÀ€ ABHtp0 AHÐ `„!@4p€c®Ën»î¾ ¯˜?4  @ ÃÀ0Ä @ÂÀpÀ0 q À ü0€tþðà Ð?  À ‡Ð0 @À` ƒ!` p@/PI: Ð0 ñCÐÉ Ì0À‡ÀtpÀ00 C À$0  ÃÐoÜrÏ=”:з»$4ðÃBý`„PCè : aˆ: qˆ: ¡Ð:aÈ:qÈ:ÁÔ:QT$tBB? !ÔF5„y¿û»?4 ±ß¾å}0à Ftr ¼O<Þ÷|òÊ/Ï|óá@‚óÒ4ÄÓ_}öxß§ƒöÒ ƒ÷âþOþ–$@Bù¼ë0Ä!04° h¥ƒêß?ïÿëC4p€!ÂÐ:àP #4àHHp€4€FhÀ$@hÀŒÐ€€Hh0ˆ`0èŸ o¯ûà0nF ÁHÐ P €@ H At€ü † A Ñ!   0 0$4`: À¯ЀìpŽt$ÏH0 ÔÑ]:8@†p# `H¸O'HÐ$ FhC †¸t ¢:@æ¨ ¡$èD @=ªr•\ t`V®Ë$ A‚¢ø!Œ@  ø †@‚@Â:p$À?Dt À†0@C ¡Ð,ωÎtâî ÐÁ0CAh~u˜  PÀ:`fC8€@$€ ÐNp4: ÁÐ$¤€êì¨G?¯€CÐÁ!ª×  ¡CøÁ!~`¡ A ­©Mo:&§<í©O Ô  ¨;libjibx-java-1.1.6a/docs/tutorial/images/mapping-noextends.gif0000644000175000017500000012453510350117650024301 0ustar moellermoellerGIF89a4’ÆPÿ """((()))ÿ222ÿ333777888""ÿDDDHHH33ÿKKKPPPRRRUUUXXXDDÿYYY[[[\\\HHÿ```dddfffUUÿhhhXXÿpppqqqffÿwwwhhÿ{{{}}}ppÿqqÿ………wwÿˆˆˆŠŠŠ……ÿˆˆÿ–––™™™£££¤¤¤™™ÿªªª¤¤ÿ¯¯¯±±±ªªÿ±±ÿ»»»¿¿¿ÀÀÀ»»ÿÀÀÿÌÌÌÏÏÏÌÌÿÝÝÝßßßÝÝÿîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!þCreated with The GIMP,4’þ€P‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³³HK¨KCH´¼½¾¿ÀÁ¼Å$KHH+HH”Æ4KŠ9HˆHHP+NPHHÃêëìíîï¤$++K+K+K+K”XAÂ^ŽDV@I²b ¢%+–@ hÉŠ%ð2jÜȱã0Cõðcˆ'CœäX1„PŽ9*¬p2ää'9V !”cE$K "ÈÉKõXAc $h a2ää'9V ädˆ“!† I2ĉ +h8ädˆ“þ+†lœK·®Ý»œ ´‚ÀbDX°ÀATX`ÅbD `ˆ *,°¢€!ƒ– … ,Y BĈ@À(C © X C D Pa%P†ˆ@À¼Ð£KŸN@„ ô@,‚¬€’AV   A V@ɉ  + B(†8!È+@ÀP €XÐ È+@1C@€ C0D … ÅÐ È+P§âŠ,¶ø $ÐS8 ƒ  RÁ C ƒ  þRÁ …0!Ű=+DP ňÀ Å@1C@€ C0  ²ÂP À Ÿhçxæi C BˆÀ Å@QÌ ¬0b0H1P3H+À„°B P¹BP0C ƒÅ ‚ ÀÅ ²P À Åèéë¯Àú ÀƒÀb0H1PÁ ¬0b0H1P¬°À ¬PC BH¬! ňÀ Å@1C@P À+D0 @1ƒìÁ'Œ4ˆµ5 ƒþEäE¬0b0H1P À=À …@ƒX$°C@ƒ =äC@1b0H1P ÀP@: 9@+@1ƒ£ðÖ\w=Œ6Ú,ÐÈÀ Ų6„­0b0H1‚ä°$D°B!`Aƒä@Ø9@ÀP €X R C0$hãC@±Ø8Å RŒ×¤—n:;H 1 4@"–%H QÈC ×í¸ç®ûî¥D@O8ÁûðÄoüñ³P H ïüóÐG/ýôÔWoýõØg¯ýöÜwïý÷þà‡ß½X… „"b b¾øì·ï~õ PH1Š,PÁ ż¯ÿþüãÞÃ+@!̧ˆT`æcĜп:ð®XB°„ ØÀ ´QA`@–mT +ÐF €D€‚"@m€€4€ wÈÃM8aX V€ÐH€B1±Ð` Áœ°‚ ¢PXh°@apB6…!D Hè¡×ÈÆD aX‚ V( C€B1±‚ @aƀ *0ˆb@a€Â *$  X z€ ´ñ’˜T£Vþ@€@a€B€(C+¨VPŒ@aD1 °‚ @aÄV@',¡ B&‡IÌ.¡CXä ö¨@€,€$ÐÆƒTÀ8r°ä` 6@ƒóðl –Ј%,Á+€r€xúóŸ…B€ä  M¨BÊІ²Ï|­pœ`¾V8aN0ß"– $` Cp‚ùXá„!8Á|MéFŠÑ $`Åh0„b," @0 ¡PèA"PS C(F—J¼,æs–@þI¬ šÀèшbdK Ç°(D +¨@&°z@aN`ª\ﲄ ,` ˆ*@$, X´Ql@À °mT X@P(8!ÐF €D@Â"€@@à„ +€ÂÄ"(¬ b‚H€h#P@ à„,4XÁP@Á Xr€ €‚*@¬  †…@A,†p   ŬÀ Xh'D` Áh;A¬ bÙÀ‘þ' P@œ€PXÁP8¡ @ € pB€@¡ †°(ˆ 9 æÊãŒ8aX VP¬KèVP(¬9 D€ÐHD1 °Ð`€Âà„ lÀ+ V@€%ô +¨VP¬$X€r€%䀆 œ… p PXA 0ä 4€Â *0À 4€ * $X€r€%T€CØÀA8 Š!ˆ%ô +¨À$Ð C@@ƒþPÃÅ Ä *…T`Èh ˆT@$ €h€%¬ XH°'äK€B0„ ÁCˆ@Áz?o ¨ÀA H Ì*… C…!`‚(VP(¬ P@r°€b€Â *€W ô¨ÀP¾ a ´‚!Š1ˆT +¨œP€PXAQ ( XA†(T oC(†#ŠQˆb ¯€*Ð N¨@ƒ%Ä܈!VP(¬ N¨@A¬ ‚(†€!Ðþ£C@ú6(C=ÀìÍøã9aXèQ!` €Â *… 9€… ‚(VP(¬ ‚XÀ hàC¬ PXA6°(¬ P G†€ À ‚pB¨a Pp à„ T HXÁ6(¬PXH°(ä"XA†(l€N„Šá P8 Š!ˆ , +PH°K°H°K°Ô`+C N°àPH°K° +P°$°P€ôPC@N NþÅ€KP 0·ƒÆ³0 °0`@€+ $°°@P`p @9°°†° @„AH°+PC2°P0‹à5  @9€ @P0Ú@P° ° °0K°PÀöPà)PöPH°@° @P€ @Œ°P Ú°Ð @‚0Ú@K°@+ °0  þC°öP‡@+Àƒæ(=ö4+H°P°€KÐ+NÀö¤K0°C öTC°ƒ°H@Hà‰°C@ K0ˆ`O„0K@C°ްC°‚`O„0K@K€ƒ€NK0çØ’âS 9 ÅŽÐ .¹“<Ù“>ù“@”Ã#‚`>‡°b… †àCàæ#æSb1 æÃN0N`>…`OBù•`9 N p+Åp9PP…°`HCP ‚P …°0 ÅÀHCP …°C „Yþ˜†y˜ˆ™˜ªÐK`+P”°  CHàKæ“ÅP+P‡K@‚`>…°À+P…`>‚°°ô@9PCàй›¼Ù›¾ù›†¹°Kà°@+°P+„¡ Pà$"°P+PP@0NP+`9P +   NP+ Å KÚPKs‚°P +   KÚPNP+°° @°P°ÚPP° @þ°P  °@P ƒà09@4œ@¤B:¤DêN°°‚0H@P°@@C°PP°$@N0+Pƒ°+PPP00$°N°…°4b!Å $°N°PP ‚@ à+P9@ ˆP ‚@ à+P$°N°+@4°+P…P ‚°0=90€+°‚0PHP¤ºº«¼Ú«²0 PK NP@4+P„P ‚°+PPP „°þ0+PP°Å0Ð7C`C„P ‚P}3PP ‚P P°°1‡Å Å+P }3+PP°+P…P ‚°@ ‡à°ƒÐ°¾º±Û±« N°°P€+°P°K Å +N°$@H'±K+N°Å0@N N`C„P ‚°à‚àPP ‚P P9@ ˆP ‚P P@N N°+PP°K0Å +P°þ‚°ˆ°$ KP 0û¸¹’KKPC€ @P0Ú@P°öPP0Ú°NP Ú@P0Ú°`öP‚° CP9PÝTöPH° )PöPHÐÚ°Š`€=  @2°P0 @9°C  9PöPH0Ú@‚à‡°°‚@+МÀ ¼À ÜÀüÀÁ<Á\Á|Á|ÁC°ƒ°H€öTK0ƒ°H0ö¤Kþ0¼C€öäÀöDK0‰°HK€ƒà‡@+ÁD\ÄF|ÄHœÄJ¼ÄLÜÄNüÄPLÁ9P 9p+àQœÅZ¼Å\ÜÅ^üÅ`Æb<Æd\Æf|ÆhœÆj¼ÆlÜÆnüÆpÇr<Çt\Çv|ÇxœÇz¼Ç|ÜÇ~üǀȂ<È„\Ȇ|ȈœÈŠ¼ÈŒŒÄ+0„°C0+0|ɘœÉšìŰ„+0°›\ʦ|ʨœÊª¼Ê¬ÜÊ®üʰ˲<Ë´\˶ÜÊöÁæs˼Ü˾üÄ 0\ ¿\ÌÆ|ÌÜK09Pl>0N€ÌþÔ\Ͷ¼°K N@C@P€ °ÚP°P  °ÚP‚ PN  ÝD4`Í]Ъì+@+@+°P°+P°=+P+9@€+9@€PP ‚°@+@CNP C€Ó:ÝÈC°°ƒà°P@0H p°CC°CCÅ +PP°€ °ƒÐ°;½Öl]ÈN°°‚°$ ôPCP° þ+P+P€+P€PP ‚°+PP°+@NKP 0mýÙ ýÇKPC°°‚°+PC9°@ °@P°°@9PöPH° @2@@4°¡ÝÒ½Ç$°Š`O‚°€K +H°Œ°à9ÓÞê]Ç+à\ 90ÅÐ ë½ßüÝßþýßžÁæÁK H ÁN0N`>‰  l>ŒàCàæÃbáÄN0N`>ìCàæƒÆO`O Jþ0&NF` üFð&Ú¾\ œ@ ÁHCP 9@ „°ÐÀÅÀHCP Œ°àÄHCP Œ0Å€ÆF€FÐ0\NÐ l`\¾Ö¥ÜK Áæ3ÁÅ0Á°ô°C$0„°À+P…`>‚°°ôÀ+аàÀ+P‰K@P°àÀ°ôp3Ð_ü`·0K@þK  °0+kB" $+ $`€ @9° °P@+¼ð¿òÛ$°×Ð¨Š°€K +H°Ù°à9ó›À ¼Àà°N° ˆ‘€9  =°°9ÀÀÜÁŒ5tN0NP#:çCà5’ K@H@N0NP#:çCà5òÁ:¬¸ˆtHC€:‡0ˆ 9PPä€0ˆ =PPž‚0ˆ°Ã\¬¬=°åP#AK+;K+Û€åKþ+P0°PŸK+P0NÐÅ~ì«KP °P€ °PÐÐ+аNÐ9` °€ °P@NP+K`7P°P@Pà$DP @9PÐH°+ PPа+P@Ëà$H ˆH°+N 4à°@P°v+„°ŠLP @9þPÐH°+ PPа+P@P@œÓˆê+@+ +P°°=+PP°4"9@€Š€P°@+@P0à°˰@+@KÐP°+P°@ à9K:´ $@N€à4K°++9@€KÐP°°@+@PÐCØ@àP°C ˆKÐP°C9€40H@P:´ þˆ $@N@°+P°°4H°=+P+@4°=90@ C€:½Þ=9 PK °RCHp'+P0ÀCC ˆ+PP°H9°+° +PP°€wRP+0PÐC°v³ ˆ ˆCC+0°CC€wR+PP°  ؀ˀP€wRPà@NP@4K`7ËP ˆCC+0°þCC€wR+PP°  Õаìè>çCÀ N°°P+0° +PP°9"P€Š€P°+Pа+@N° +PP°° +PP+0°àŠà9 CË@€Pà"°P€°RC+P€°P°°+PаÙ@€PàN ˆ°P°H°K°€+°P:´ +C "°P€°RC+þP€°P°°+PŠ°Ô°°C è.¯s=@Hà KPC°+PCkBH°°@+ $9PvQ@9°K@@° @9°`°&€ °0  C€ NP  °P°+PC $+kB@9°PàÙàC` °&P# @H°$  @:°@+ °0þ`°@P°°&p @9N@9@ 4°/ý â$ € +H°P°€K  +N z K0ܰC HàÔ°€K €°´EXX˜Càd¸¸¸4ÄH(¸8´T8´™¹4´Dˆä¹€´T(˜ •Cà„Úêú +;K[k{‹›«»ËÛ‹;´°â»XQ‘CxœÛ³°Sì{œ›sœ3½yœ›sœÃM^n~Žž®¾~»",ŒÄ.?O_oŸ¯¿ÏߊñÀ‚zK† AbÏÉ'Hèr2ÄICT 5„þ´Ä CP r„âdˆ“†Kš„âdˆ“†| 3¦Ì™4kÚ¼‰3§Î<{úü ô劀ÂV­™£ Gk"0äÌ©H 9VÒÉ‚­+ +™£ TøˆÀcS_"0äÇCÚÚ½‹7¯Þ½|ûúý 8°àÁ„ý:‰@T’„z,i{Œ1^KV¬ `‰å’C q²JÓÇ8®¨PÀË,±l(G…!NJÚ¾;·îݼ{ûþ <¸ðáÄ‹?Ž\8Ä ’ZRaÁa–ˆXÀŠBÇ ˆ@(N*°â#€T@² €PDPþ€“ ¬€²„AA±AÀP DÀ PàD°!+@aÐG9DÀ1+S!NT@+r !KD LK8!+@a D@P ±@¬@T@NT@+@±âCä@ Î} f˜bŽIf™fžy´‚sN¬@À „äK,°DP¬PA!Ç@±BP¬P$,àD,ÁÑ аKôÅ @±B¬ 8‘KäpÌ1­@ +°DP¬P+TÁ °€9°DnKЀA„Cþ 8‘K@q !$,àÄ äPj­@ +Å=@±B+TÁ @AÂNäÀ%­°!CDPhÞ‹o¾úîËo¿¾m@Î ±@KB€e4 ±Õr +TÅ @QA@Cp´BP¬P W…e @ ±Ž­P+T€DÃ@aYCPA@Cè6†CH Å1„Å ,ãG+TÅ @DÃXVÁ@QA@C|äKÒøËvÛn¿ w܆РL+°˜N¬@À „@Nl°+TPÈ1P¬€TþÅ8Aˆ­P+T°ÁP¬P–U0à!NäPíG+TÅ l°+T…e À8Aˆº €!DzNâÇRÁPlPAÕ~´BP¬P,Å XVÁ@±NâÄG+@È,0„Üößþúó†„08…!Ð@LK¨À 0 +ÀV€„T pÀ0@€,a¨†À‘  €° a+¨À ƒ Bn@€,€ÀV€„¬ C€ € `¹ÉAPä þ«–°T)¨@à*€„cÈn@€,€9X¶B€¬ C@–°TCàȰBÐ`û+¤!‰È}9aÂB¿qApd CØ p³„!G¸Y³„!ØFÂn–0„’`‰l¥+_ Ëâ@+ˆ¥-]¹'Ür—¼ìå!s Œ ør˜Ä,¦1‰ÌÝ €â¶ƒ ¡_N‚rœ† PpœÐÛ@Á „hHI–`$pÄ qœÐqÊó#‚†à„†Bóì§?ÿ Ѐ t -¨AŠÐ„*t¡þ -‰" Œ!4T¡9¨*0Ñ€"C8†BaˆT HÀŽQ'4lP8FIrPT€# ¨ÀG€!C 9¨V!P( C8†!0„Œ*u©LmªSŸ Õ¨&”ÂXT у%øóWý–`B¬ mˆ!VPB` –)É€', ç18²‚ ”K° VP.a Á ±‚ K°L!rP( Á O­¬e/‹ÙÌjv³óÌ0"€Ù%T`K†e ‚D+(Ä1 €@€‚*@¬à#X@P$, þXT€N¨°(,GPX …,€X¬ À10ެ@€Â" Œ bP0ÈGrc¨!œP`„8!–aT` 8"Ä  `,€X°€`À10B`PXB„QB¬ !„0(ä€4جoŒãëxÇ…@@€%XÖ + À ‘ a XB °‚ âPXA °‚ @ pB°ެ€4X–Ð(¬ PXA"°`NÈ–ƒj•d þÄz…T Nˆ€¡s°âP Áœ°‚ ôs 4€Aq B`NÈ–…c‚ p *ƒj•d(Äz…TÀ †Ž@ €@ p *`›l Cˆ@ÐÔd+{ÙÌn¶³Ÿ}P'D@=höP%‚–¡VB +¨VP(T CàÈ *…T «,S! ÂpT’T€HhX1, 9¨V!Ž…c@aðç`ˆc¢ŽAˆc@aXŽJ²‚  «†€+€Âþ1 °‚ ”Ä X‚!z€ @{èD/ºÑŽô’@+x¶V@€‚sÂ…T Ç€Â à„ T  €áެ PXA6°(¬ P°L†€ À „pBªU’ KØÀ °‚ @Á Ør`›c@¡ €Â*àÏ!ÀÇ ÄàB8 Ç D… T Õ*É …%@a €Â *à„l9(V… , ¨@IV@‚B,¡ BÒŸýèKúþÌ0"@ô%T`PH…`+@B*¸ à@ @þ–°TCàȃÀØ °+PC2°P0ý4Â@+[AH@9À9PS4 @90O9PRTSH° )PSHаó4Â@P°°Ð@RT°Ð°±°…@+ÐP]è…_†a(†cH†cˆ°eP‚ N‚ÀK0þ$ò´CPK€„ % µC`‚PK€… ÿ$¶A+À†‰‘(‰“H‰‘è =þP‰›È‰8‰+àž(Š£HŠ¥hе°§ÈŠ_øFðJ … ‹†`F PO`O ‹!òŒÁ(ŒÃHŒÅhŒÇˆŒÉ¨ŒËÈŒÍèŒÏÑŒ=  ׈٨ŒJ€FÐPßhÐƨ`ßÈ 0ÚèŽïñ(óHõ(K@@K`ÑKð+PɸÐʈM03P²h3Ð%ñ3Ð…€M°†0N ‘ ’!)’#I’%i’'‰’)©’+É’-é’/ “1©’ = “)¹°Kà°@+°þP+[! Pà$"°P+PP°0NP+ðpРp0P€ÐP¡p0Op€7Mp‹·3·3p—MpwÙPðà0@€3@Ð33·XN@C@7I›µi›·‰›¹©›»É›·¹°½YN°°„0H@P°`@C°PP°$@N0+P…°+PPP0þ0$°N°1p3€MP03€Jª¥jª§Šª©ZK@@Hà£N°°P€+°P°K@Ç@+N°$@HNà+P°P°àPPp …°à„à±`P3ÐP0<€JÀ%@P0 3Ð%€PÀz*‘ß@PP%àO@0ÐP0@3€PÐ%±$@KP 0ª ²!+²#K²*¦º0H°$C +8C @þ9à! C @8@K°P0A3ÐF€!€pêJ0@ 1@à>€@* ’<ÐàpwIÀM@ÐÀà<Fp—ðK@K@4°%K¹•k¹—kª+ $²C°…°H ‘‚ÀK0…°HP‚’K0#ÙMP3€Jл†`M’±ËM`ÙJP$°½é˜«¼Ë˼$ÛÂNм¦ú 7¹Â@¦ºCÐ’Ç€ÁÓ»ï@=,ÄÂIàH4@`h„°C0 C@N°°„+@NP=°4°N0…€KN0N@+°P@+°…Ð+@KN0N+0P0`KK@+ÐN’C þà;ÚKP9P.Ù#9N0ĨÚ±NðÉ¥l›N@$p …9Cà00PCð‘0…°@PP @K$°0P°P0`h[AK$@°C°0ÇH@PÐ(é€:º°K@N@C@P€ °ÂP°P °ÂP„ PN RD4`Ê¥J €%­Ò0™°…C@0PþCð‘0†€Pà @9C@H0P°P0P€°Pà Eà„°+0@„°+P+„àK€’ 9£N°°†°+P°KÐP°°4H°4HÇ@+@4°0à°„0PH°Ò;ºDA9Ú¯’Hà… PC0 C`Ç@P+°$†0P°P0P0„+@ `+0PþÇP4+0)¹Â@:: PKPN@K–QCP€ S+P00+P00Pp „°+PH9°+P=Û8J‰$â'.’P°…C°„C0 C`°ÇP+Ç`C…P+C…C@°°ß½90PÇPN@Ð&9ÂN°£N°°„°$@–QCP° +P+P€+P€Pp „°þ+PP°+@NKP 0(.œH€œ.ê±°4C@0P0=@0PCð‘0…@€+…@° `CH@°P0P0„–1PÇ€ P%é€>º0K@K@ °0+[A" $+ $8€ @9° °P@+0ê¹1ÏñK@+@†F0C@‚4`$+Cþ9H@+0°Pà+°@P°P0P0„+0@„Ð90PÇ@P°+Є’=€„PÂ@§J+’K°„°€K@+H°"¹à9£$  C@ø¢^PC+0CDQ…°ïPN+ð $ [±P0P0„+9@ïC…p P@ÂÐ+ð €!¹+ €ª+à$y 9PÇ#Ù ‹ß›=þ+0°NàýçO›K0H`N0HPH0(i!‰C@N`"éD±NP‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•‰NH‚++–Ÿ ¡¢£¤¥¦§¨‹9œ¬@©ŽK:C†HHŠCC‚µ¯¼½¾¦œC¿ÄÅÆÇÈÉ”¬œ=ÊP †Š ‚×ÑÞß§Hœ NàæçèéæNͬKÄ=Kƒ9+†µŠ+‚µCœ¨n§*\ÈðQŽv*,ùµ¤Â‚%‚œ²@ ¬àT €T€²$§ +8U`AœD À)G4 åþÓ¡H“*¶¡¿œ¬ °‚Њ PVÈAA× ¬ @c($8YQAÐ5A+ÐXA`'6¡’¥€+!á´ÀIàÈSrÒ,bCTX2È %PV€2ÀA× ¬¨eE(× ¬¨ èš  ¬¨€@Ž+õ°A±oE+8­øÍÈÉ'Ä“/ÌÁjÅ1'+¬´‚„  ä€DÐ5(+*@YQJ…P6TtMЊ PVT€²` 'P–TX0D¹Ap28+\³Â(=T@ÀàÀÿExÎ,€„2KT0Ä,!È ,þ PäPTp9,@@=p² T€bH,@@  °4¬ ¡HpB€ßä°Âˆ²ôÃ5C0Ä‘\&ã+8 +‚ÄŽ,±D#+àDtùß œl`Î5Pô°Â 98ÅK ‚ÄPô°gN²+Òà E{æà„ KаBN@± +ôà„ =¬@Â,Aà =81Ы°.‚Ë9+8ÑK °@±ö NœôÎ5Pp @QÁ‚8@Pp BN2C@À5DDP= A@Ðþ$°A,T@@¾öëï¿,0œàÄ7×@á„ =€D8E8…‚ô„¬°€!C0NÒH¬ N,±B‚8±D8!È{F ˆKìóÏ@-ô)+p²Á7×@1Ä DÀN@ È+TC²A† ÀP ±B0 ¬0„ 4°Â‚°Àž+DP ¬0„À=,É „2„C'®øâ¾TÀIÞ\ÓÐ@C@ABK0=På AÈ 2Cô@–0„$=8þAÐC à½BN@ôàï,°„$'@@P8ÁаÂT°NT°9…À °À ‘40îÿÿ¤Ä8!ר@1  =À  ˆ D@CÀÑä€N†°b °€  ¨À "€$, ¾r °A€N€Â8P(¬ Pr€@a àÀˆÀ ,À 9À*@€!l`PB*€„ºñp 8±A8a Äþ†@€`Np 0A,+ H`…¨r'Ð`CÀH°€@’CXA ¬ ‚ˆÀ†¢9XA øj ¨ÀqA¬ PXA à„ €4€Â *0ˆk@aàÀ *0@¡ÍÂ5 Ñl Žà çâ*À‰ô€+ +*à$€À±,AH '"€! `h0  àD0„°bHX+€(䀬ÈÁ X±$ôË + À  @  N@œ° @ +XþÂ… K€ …@+¨À… À ‚pÂ5±„ ,`〉T}¶@œˆ1œ0$  C@Â"œ0$(b ¸0„†€B8ƒp. ‹A8[B†à„ ¨'@€ X  0N KX@°‚¬ C@–°T@QAƒÄê´¨M­j_ñv8aµ°Edž 5bKÄ@$8!KBl‡KÜâ×NØDrpÜæ:÷¹Ð®t“‘ˆ€ÓÍ®v·ËÝîjwh¼KÞòš÷¼èM†þ*Ð$¤÷½ð¯|盈4ƒô}o–Š!8!¿p4z@NT Àå]B°NTpB€@¡¸~€PpB@€`@ ÐÁ0ޱ/–N8AÆÙu °A¬9 4°'äK€B0„ Ô9@  @80h°b¨TKæ2›ùÌp Ð4»YCX@– ˆ CÀš1(\CN¨@(\ C*…T`=ÀÞLéJ[úU9XÁ¥7ý '¬€+€Â þ… p‚ œ…k +XÂ, 9€*…T K¨À†Àébûدp²— Š%T`+À@‚%,ÀV€¢ @ ˆÀH…%, XÁƒ 4X³çMïzÛûÞ¤X°„A,a‰Â'àûàOx%pAˆ%à ƒ¨…$–€ $»߸FÎñŽ{œ !rPT`×D*@€ „¢ˆ@”±,`·ô–óžã{0Ä5Q J\CÀ  F¬ §†àsF,9Ä*þ@€ Ô¢¨„ ä +¸ „ D`9¸Æ5±‚T`N A6àE,`U<¥9Ql ˆ ØÀ ®…p¢‚p  ¡N "$@á‚@Â"€8!  à„,40Ä ˆ P@ à„,4XÁP@Á Xr€ €‚*@¬ ¸†p¬ V=XB$VPP Á ƒ Á°A !P¨À@', ƒ°PP{’Pà°K°C°'Pþ€0$P+NP=°‚ +P¡0N€p*˜ +9@€+PP°°4H ×0× $@N0…@àP°C× KÐP°0H@P0H@†p ƒ°+PP0H@P°0$@N@`+P@ à9KP00…°9Cð*KP °N@œPN 4° @°† PPP9@þ4@°…° N@+ +°°PPH04C@N K@HH$P+P +ƒ°°KN@CN@œPN 4° @°† PPP9@4°‚I +P00+PP°°CC ×0× ××P× Hp? PNP@4NP@4`ƒ°+PPà@P°0×C°0Ð Cpþ ˆ0$°K N°°‚@àP°PP°C9€4+Pƒ°¸€ +@4°+PP°°+‚0PH °„ЀPP°NC@N++°P°°°‚P+0À C°Ð Pà+@+0+°‚@àP°PP°C9€4+Pƒ°‡9+@4°+PP°°+‚0PH0 K‘þY+P€+N°°9þH ×0× $@HT$@H× °P°€+°P€+°†°0‚€àPP€+°P°K$°P +PCP°à‚à× °ê0 PK ×0+PP°NP@4+PƒrW+PP°+PP°°'00= °ƒ€ €ƒà PP P°H @P°09Cà‚0L@°C°þ°‚à°‚p ƒ°+PPà@P°09p§+PP°+PP°°'00= K€ 4°'לøö®‘°°@P0œ°`°@P€"Ѐ"€NP0…à)P(RH°p?° @P€ @‡°PPœ°H°$CÀ K°@+°+PC9° €"€H=0N°°P@€Pà(þN°H°K°+P°†°+PP°àP{RCP°°C0°‚à °C€KP@H€ @N°P@9C° @ƒ° CEPP N°°P°$0$@HN€àPP€+°P°K`+PP°+N°°'0KP 0à+`]Í@𺾰€K0;GH°°CK0ˆ°s„0K@C°‰°C°P°s…þ0K0K€„€NK0€°9ð*KPCà5À @9€ @P0œ@†° @90œ°P+PC9@+09P°€CÀ +0P‚€ P‚P @$€°ƒ€ @C@°H@KP:@K0NPPœ°H°$CÀ ` @9°CÀ @°04°“€€¾ì[ʉp 9`Ê£€>‘ZK0‚°s…0þK0K€ްs¡€Càˆ°Cà„P ˆàC°‚€C€$°†°C ;WC°ƒ°Hà;w 9@Ö…‚09€ª\Δ€ „°¸€ƒP •€ “P ”P …€ “P æ¬Z+à–æ+Ð0 0HÏ­ „@0×Ð9p§ƒ°0 ×@ ×P P“p =Ò¼0À 00+@Ò2½`×0µÐK0@C0+P°@µ0+PP …°À+P…P ‚°¸ µ Z¸0þ ;'¸0µ€l4@°„€ ‚°œ°ƒP+0ˆ0×t]×v}×x×z½×|Ý×~MœP°P+0×+À  N@€‡+KœPPà@°°+°P{  +°P+À °°…°œP‚°À à@°P P+°P++À +°P+œP++°Í×N€“+×ðÞö}+ w9P }½Cà8¹‚p ÷þ}à^N@C€N$€‚0œÐ‚°40 ¾áÞáþá„°4H°+P+9@€‚p ƒp ‚@àP°Cp°P@ à+PP@ à9&@4° +P„p ƒ° =90€× $°N°@ à9K°@+@P°P× +PƒÐC‚P9âƒÐKCHàKµ€×+P>N@H@@KP+wÝK09PP0€N°‚P w½ÐáþCà„®×=Pà‚@œ°‚°N0ëÀìÂÞá+P00+PP°°CC ×0× ×P×°Pp P°Ð PP° +P„p ƒ°0 ˆp ‚p P°×Ð C°+PP°P× +P„°P9 ìKP °9p +À  ÷? 4+°P+`°€ °P@NP+9@4@CCNP @9°PPPþ P‚°°K N@C×+À ÷Cà°@+°P+`°H°+@Pà@°9@40ìz½°ƒ@š?ú¤_ús½9H°àP+P€‚p ƒp ‚@€PH‡+°P°@N (PP° +P°‚p ƒ°K9 0×× °P°°à‚à+PP°+P°ƒp ‚°€µþ•°Pµ2¤èøé´B°R¸D04TXQ¡XA0´QƒDS¸RQ¸ÄÉ µB@³B°ÔµRµR±@²à”°5QT80EBàD`B@³BµB@³Bà´B°â¸²µDÀ©øYXA0´Á ƒDµR¡¸;d+@YÒÊŠ +*DX ‰NrX2$B$’:züÒÑ$Š"¨ ¨Â†![º| 3¦Ì™4_®° (CX@À€H@ÉQ -*(­€ÄI y”£€zø\@ Ç’*0@ Ç9  ñI Gþ¥@â“'rDÊQAi$=|. c€ †, cC|€’£‚Ò H†ø$PÈ Ь¨éqÈ‚ K àè“¢O…œT@€F¡ åøô ÊŠ PVT@² y(+VT ‚OŸC õ°aÈ’!†@ùe ¬¨eE(+* YPa‰"'–àѧBŸ9©4@±BŠä\+TÅ @Dr TÐ\CEÓ0=°j"‚4Ä =â„O+(²ÂNŒcŒ2Î(ã ±„"K,áK¸´Ä!íøÈCDRÈH þÅH’N0ùÈŽŽ,1“K ÁäH(’N(Ò•fžéÄ ¬PÈ8ò‰"Ÿ‚Ä Kl@!+ŬP+T°ÁP¬PÍU0àD!N,QÁC@± C0$,EˆP+TÅ @±BP8±+² Š À#Ÿò‰"H¬°Ä@±P,É @±BPl°+TÐ\CÅ8QH,0Ä™âŽK®™Kl@@… áS…8±D¹òÎKo½öÞ‹¯"Ÿäo¿ýæðIþÖ›Ã'9(²‚#¹DCääCJUþ€Ä JUD° … á,@@ `É€Ä+T02,@ AÃ Š¬N@±Ä°Âä°9,@@ C!KT0Ä,QHPAPäPRˆ T… @ Å>Éä°9¬@r°BCà P#¬°pãåöàÓ…ôH8‚yæšoÎyçžzè¢Nz馟ŽzꪯÎzëŽ ±„#K úŽ/1ÄæH 9N”N ©±„"K úŽ/1„ëΫ>„"+ø¤È ¬ð|öÚoÏ}÷Þ~øâþ¿‚ãŸþèKа‚"P"+ЀDúößþúïÏÿþÿïºT`Š H ˆ!p l ¿·N á˜C4Ç Ð-¡œ@?¨:€…X‚Orªp…ÌAPÿ­`ÈÁæ>¡¹t HAP ñsHpB!rà“!b Á†Å(JÑy=XB!>ºT {Cp‚#r$ä`›³`!VPE¬šëÁ‘ƒ â¡[A²7'LñyNèÁ ±Ÿ8¡=XÁöˆÈD* K¨À–PˆO@ ˆV'D` Áþ @€ ¬ sX@P( aÀ T€PpB€ä€4P @‚ ¨ °ŸT +X*°(¬@ ±„ ,` …p†PˆO ˆVà„,4€Â @€ ¬ sX@P$, XT€N¨°(ä€4Xäó†P(b €"°‡êoCpÄ † ˆ A£ˆt °G| KèVP( 9@  °‚ (b ° @ƒ KèVPT +H°'äKBþ*€(8¡XVP¬ŠøD!VPE¬€4Xœ°¬À+Ø€">Qˆ%ô +¨À$Р+¨@!–ÐS(¬€4X–Ð(¬ PXA"°`NÈ–…!D HШö"€ (b¨€iï€8+PVðÚ)aX‚#>$$g€‚*Ð +¨€"r T +¨0Ü ¬` P  =À‘¥l·C€">QˆT@+¨VP!, KP„°E|¢HnœP€…XA þ‘ƒAa€Â *€„áV Û­ÀP ¡=Àrû<',A>Y"P! xÆ4îžV@€(âPØÀ °‚ @ +XÂ… KÈÜ *…T XVPíV`€Âà„B$¡ B!V@(¬Û­À ˆOb€Â °‚ @a€‚V@€b$pÄ' ±@a@ –°b€Â2·‚ @aØÀ °‚ @a»6@' K¨À†Pcí aH(Ä|’ƒB a=pB¬ ìÒ-¡CÈA”Rþ 9° "°@a>!@æ@€,€9X’C€¬ C@–°T#X#h€ ` XA†ŠU@)@Â|B(,€9XrPˆ%T`K À ‘ƒ (¥HX’C€  A!†àdnÈÁ`$‡HXÀ *0È`¨†@ƒ»{C ÁPød …XvŽô¤{nG˜Â±$„nG[Â6·„!,!tK@èH°‚ÎíÈCX‚#–€Ðí¨sK‚ÒÇG@+ðÉÛ0'¼}ï]ølþ$(¢¨€"* À ¯ÈA~ò±^Bz Ÿ¬@ Áhü ÊïqC½éc½‚ ¡Kð á„!¼–+8½ {°Eä Ü‚l|ÿ!aB!zà“!hôC¾—P,¡N À|Rl N¨°‚ 9‚"°ÐÀ Xr, ¨@@çë?KPÄ |¢+@€H+°+°ÿã+@+à+°P°4H@ à9KP0À H@$@N@°+@4°Cþ€û‡ƒø39   Û5C+ƒþ3 PK N@K+P00°!Cð Šà@ŸCC°+P…аG‡÷“°а°Š@HBŸ‡üã+@+P+@…°9H°à…àŸ H°K°@ 9H°+PKP 0¨Šø@…à>±Šà ´+@°Šû³0K@KP+ $K°PÀJQ…€ @K°@+ @þ9° +°‹åh?NPCàCPC°´+0N`ŽûC+ +H°ްCÀ9C°Š€Np Ù?H@NP+àHP9@9@AœàKÀ H T:KÀ H°=œ`:„:¤?+àŠð 9 /™HH° $ =0 ´à9PPŠð ¥“@°:9 а`:Ÿ`:K@ °{„•Y©•[é9+  N°9Ûåâ³9Ÿ t:Ÿ°:K0@C +P ³à¤+P¡30+þ„˜‰©˜‹ @N >±Š ™³°=à:>Q°P+ Ÿ+àPN@€˜ã$HŸPH°+à°@Pà°@›+K>QPà@°°+°PÛåP+°P+à°°š+À˜ûÉŸýéŸÜ³=0…0>Ñ…°°N@Ó±KÀ:+9@€+PP°°4HPŸ ŸP$@N0˜CàþP°CŸPKÐP°0H@P0H@›+$°N°$°N`@+@…°àŸ +P…ÐC™³9CðŸo §q*§ ã4°KP=à:°!@+°:+P00+PP°°CCPŸ ŸPŸÀ9Ÿ€9ŸPH0\à@Pà@›+Ÿ+PPPÂ+P…°àŸ +PаP99C@ °sê¬Ï ­qš 9Ч>±Cþ:+P€+N°°9HPŸ ŸP$@HNà˜C€P`¯Pð …° +PH°K°H°K°°9°PP PP°à…€+P…°KPŸ +P°P°œ+­7‹³9«BN°×:°§³°@P0>±`°@P Ð €NP0˜ã)PJQH°° @P€ @™“ P=à þ@9° @9°P0>A9PJQHCàN@9°9H= ³§‹º©»?à³ÓA4`:+H°а#Ž€K :K0œ³C°9;âC°Ž0K:;‚9K0œ³HÀ9K€…à›ƒ°9`?+0ްC +0ªk¾ç»˜N0Ÿ°Û•œà§ó 9€¾Ÿ“Ÿœƒc?°Ž+ °õkÀÜ@öŠÀ ÌÀ ìÀ¼9œàKÀ H $:§œÁìÁÜ: Ž@ Ÿ :ŸBþ°P³Â7ŒÃ9Ü9+™ó Š`A¢cA›³À:+P¬C0KKÐ9+ܳ#:lÅW¬B>Q°P+ Ÿ+àPN@€˜³>QP PP° @°™ã$àPà°@+°P+NP @9@Pà@°ÉC°°PàP@+NP+P0…+: 0XlþÍ×¼@+9@€+PP°°4HPŸ ŸP$@N0šó P°@+@…°°9$@NÀ+PP0H@P° $@N@`+P@ à9KP00ÛE4+PP°+P°°4H@ à9KP00…P9°9=°ŠP:+P«3N€Í[-§= _]Û…ϳCC°+P+P00…ð Šð …ð žó P°þ+P…°°9Ÿ +PP°NP@4+PŠð P0À+PCPP2Ÿ ÛE+PP°ÛUC+P00°!C𠛃9KP °…à0N@€Pà°@P° @°NP @9Pà@°PP@Àßù­ßûÍßýíßÿ à.àNànàŽà…€­ë@ ®+P€+N°°9HPŸ ŸP$@þHöª9Ÿ+PP°P+P°™C€Pà(N°H°K°+P°P@ 9"°0@NPN𠊰]P°°àPP°]0°9H°à…àŸ€9+0Žà+@+à+°P@àP°C°+PC9€4P+P…@à4K°+$°N°PP0À PHá·Žë¹®ë»Îë½îë®­Hë+ $Cà @ þ$9PJQ-PJQHàC€99PJQ@9°P0>A™ã5à @9€ @P0>AP° ° °0K°PÀJQ…H00>± °0`°@P°  à°Ž0 PK N@KŸà+PP°à@…°PŸCC°]0P2Pð ŽÐ°¿Žöi¯ökÏömÏëK°­»»¾€K ;âHþ°ý½C àK€À½CP;‚9C°аHàHàÀ½C°ß;‚ßH°ްCÜÛ…9N°°…°$P$@HöºàPH°K°P+P°$°P€ÛUC@NPNŸPKP 0n/ýÓOýÕoýºŽCPKà³0¼þ 9pýãïë+àš³0K@KPNPÀ >±Ð @…0>K +P +C2 C+P4+P›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±¥$œþ$+ »N²¿ÀÁÂï$+žKCœKKCKKHœHN¢KCÄÚÛÜÝÞßàáN=4œ$ž$4¿NCNáóôó+Nõùúûüýþó+v-Ù4„ÆO=" †¤€ÿ"JœH±¢Å‹·9¡É&$ô¨W¡BÆ“(Sª\ɲ%*'›–ìZÁiˆ>+VêÜɳ§ÏŸùH,ØÀ)ÂþJÊ´©Ó§Pwá´NN"®X°"ª×¯`Ê–ƒ€%›rD QÀбpãÊû $›ì¢q²$Ý¿€ öçd× N+zd\²‚À†T#KžL¹²å˘3kÞ̹³çÏ þC›²b§ 6X^jÉŠ!NXËžM»¶íÛ¸sëÞÍ»·ïß¡6 Ài໇ é´D9NHD^¢ òëØ³kßν»÷ÜC6p²)€K¾×^ SŽ *p*9GV—,IC½ÿÿ(à€³-áÄ&HìBÃ&N,á_m+ðIIœD7YI«  +Ã& †(âˆ$–hâ‰(¦8bK¨â ¸ˆâNÈhã8æ¨ãŽ<öèã@¹+€ H©dŽ»TÀPD°°ˆ%A±Â.lâ D":A€%m‚Äþ°‚, P8ÁÐ@"+,À À PTÀ ðC @NT°9°@T°$KT°ÀN@»D@áD @à PÁ P8QÁä@T@NT@+T¤ ‘4ŒjíµØf«í¶Ú‘ˆ·äЏ9Ð+TÅ ¬@4€Ä&%XÒ&$à !" 8ÅC@QÒ&KôÅ  @HÐÅä€ $PÁx°€9°0Ä54@ANЀ аåºèÄ þ¬° 8ÅTÅ @19 A+T" 8A&TÁ @AÂNäÀ0ÄC@1D ÑóÜt×m÷Ý%n° ˆ9¬€ÞÙ®C0Ä @±B+Å ±II –´II&–$bI› ±Àç8QÐ…@ $@ KT°Ë.C@QÒ&NT4@QCÀAP¬Pà#±@KlRˆ+TÅ @áD@+TbIP +T0PT0;C”$bl€üüô×o?‰Nä@‚›ä° ÷»Ö … +€þ6P 96Q•d$  à'ˆˆ@:…’lb €Â *€„,a€V°„ €DÂ&6@'l P(É&°‚%lP Á ˆ PXAè„`P ' NØ@ €„,a€Â …%@ €B ‚T`€Âà„M8¡$ ZB0„òˆÜv‘ƒM8!NH¤’V€€PÂ.@ ` rPJT ¨Dà„ ‚ˆœT)¨@%*€„àsØ"þ°@ ˆÀH0¢ +€Â€ `+¨D €D`$€Â¬`ÈÁC.¡CpBPÔ` @€,€PÂ.…%, XÁVP! KX*T¢› Á $ÉÑŽzTE+XÀ @´äà£JZ°1#DHX‚Œ–0-a%bFˆ†°„ a .ZÂL4„%„ N@)ˆ–0„M0CDCXˆ–€„!Á &Z”ÊÕ®zt Z"$xõG%ÉÁY×ÊÖ¶ºõ­@Ê¢,`pÍ«^÷Êþ×¾ú5DNÈ6‘ƒ]ôà¯UŽŽ”“£èì(:ˆ¬d'¢%ì"›p ràÊ"r@QöS- 9*IŽ–@€¬À³°íZ‘°€hØ€l{¶‚ Üh@ц !D+¨@ŠVPEg+¨€Œ†€!|´K ל°Ûî"/XˆzÐïÉ  V…  $àÀP@Á  V€D€Â"°‹ 8! J€lb ØEœP`PÀ"€ ¬`¨À  °‚]T +X*°(ì¢+À H€þtt XÀœ@DD¨À( ¨vQl HX@°, ¨vQÀ lÇ 8$` Z@æl‘`NÈ–à„Ø9PXA@D‚8!0h°@ p *0ä 4(V° ,À +¨ à„` + V@(¬ "*É&VPõ9BF´„`’t °‚M€N€Â0@'ÐKXA"°¬9 °„@aXh°@¡ÈÁ"…!D Hh³ºµµ'þl"»èÁ&œ€„u_«ë†€lbQÖÇ @a€BI °‚ 8¡ J€l¢$PXAIÖ7„T +¨VP•d+¨@ˆ ä`DC Á–°­ aXÂ&J¢’@aBi*0¬P†€„Ï- +¨VPM, ÈÁ&z€ Ôüë`»Ø}ä`NÀ†0ö¶»  €6ÑÁl9€Â …%@apÂ&PP(¬ P¨À ° aKØJ€l¢ €Â*°8aNXA °‚ @þa€Â@T’M¬PXÂ&r€˜+x»Œœ°¬ $  à, 9JS!`€B€„ , +¨À *…T`9À °„ ,`nO¿ú×-$ D ÀØO°/a¨†äC° K°P` @9л°Ð @#’ PPл°  C° @90»@PP €C° ° N@9P"H=P)²0NP  °P°+PþC $+ŸC@9°PàP@+`„r8‡t8" "4@CP‡~$K0&²H"K0% !2Kà"Ì"K0&²H`"K€ ’à%‚°9ð‡&²C"Hà$²€K"Ì`"9@N Š´X‹5×+"+° K`‹¾ø‹_—%‘&‚9Àh#%‘.’%‘ÉÒ(#9° H° H°H0ÜØÞøàŽsH›à»â¸ŽìØŽs¨J$¢ôJ Ýè B° ‚îþ9K²û‘"²`#+°%R$²`"¤UÚRJ²C04ð9 B@Y’& Ž=°<2N"H@@K "+2’€9°%›°"+&B@C$²$ÑÁ#=° ’À#Càb— ²»€›°'–b ŒKP °°€ °P@NP+9@4"CCNP @9°PPP P#B@Ì@P°»PP° @°þP°PP#20H°+°P+à@°PPð9³S°PPð9À»P›à°@NP+N 4° KP °›à0°H°+@Pà@°9@4ðuH@0›€@N0–Z¡~è+@+° +@4°°=+PP°+$°N°P0PH° CC$@N@`@+@P°@+@#â €+Pþ°"%± +P ²@+@#2+@4°° +P›@ à9K@C°9@€PP00PP›0H@$°N°C9€4à+@+"+°P°@+@P°=+P+P°$°N°C€Ö²4Л໰z¬È:‡C°°›°+PHàt¥QC°>C° =0K00PPP0À+PP°+P%’•Pþ0"%± +P ²+P#20++PP°° +P›Pë3PP›°CC%"%± NP@4Pë3NP@40 PK"N@K+PP°HàtP0°>C=`-"4ÐN¬Þ¸C"+0 ²Cൢè+@++PP°° +PPP0°à›àKP 0P°400P@ 9"PP°+PP°0"+@P°P0þ"%± +P°P°+P#20PPPP°° +P°@N° N%± +P€PP!R›€+°@N° N€+°Pà+@+° +@›°+PP° +P¥QCP°à›°C$H°"$€¶â+"° +Á¢¸0 @9°`ð9€ °0  C@+"+ð9àP° ° @9° @9°"BPþ° °0pŒP €C°  @9°"ëc @9C° ° C°•PP°°@P°•PPP  @K°P0H°$"KPC°°›° @9°ð9p+PC9° #°>â B»€›0H ÁÄ\ÌFÈ '²CP"H0"‚N#K0Kà"K€@²H"K0$²€K #C° ²C"C°$B+p"Ìp"K0?²=þ° H0ÆüÏÐõW9°-+àéÇ ² +"N ÐÑt!¢ÉÈ >!¢¢ˆC`""$@= ѶèCà(íµ%" P#â$à›°4$²@€ ‚P°PC° +P$K@9€" 0>R!²ð‡4@"H@ B»ÐÒɈ+ ÖÒØK+P;!²Cà ²àPP@ @+@"CPP€$à P °HC@° P9@þ @+0"=°›° +P;!²Cà5'#N°³ã›@»°›Ð+з]ÜÆ}Ü:RȽÜÌÝÜ ²°K° @°H°+%C "+° K»PP@›P + R+p"°›à°›°+€@°›PH"°!²°KN@C+°P+€ °PPP0"²»PP°° 9@4àÜ!2 °>)° H° =€ãB>äÅM+@äHžä<âþ+@+"+P›°=+PPàv9°Ê¡ RP@ à+P›0PH°Ð R+KðåC"=@H àP0à°PP»0›° @9° °›à+@+"+° ²° KÐP°N°å9°x"%$°N°° C€8¾ë³ "9àJìÂÎ#%1Ã~ìÈ"C°° ²° Hàt° C 9@Z RPPP°"=à$P R+9@Z›€ þ€ â PP P°-@Cà ° °›0 PK° N@K"+P›€NW›0°P¤"%%+P Ò°ͽ°ë³“ì4_ó&² °6¿óDî+@+° +P°°P°N9P"%°P°KP 0P°9° R+@"N°+0H°9$P€Ê$ CK+$@›P+"N°°P°$"+P°°P°N9P"þ%°P°KP 0ÍÝ ó³Ó<ûÉ+ û¶ßÜKPCC° °ð9€9"’P @»°4° 2 €P@ PH "C0;+0P›€ € @›ÇX°€€%¸T¡C°$(8@°°°@€@“(˜SA@PAø@C³²™ªºÊÚªêDÂ(;ËHâz‹›«»ËÛëû ,XQ!l|Œœ¬¼Ìº„$¸´ÝŠ4Œ4äÄê4´”¸4ä„K²¢º„$þ Í|¼4//änŸŸ¼´B°¡0 À ²ZáÄ Â… :ìµdÅ' +Z¼ˆ1£Æ;ztoÓ’xH!AâkI<$[º|y+Ì™4kº[`SŽ *$"æ+Gõ¨¡‚Í¥ÉTˆP‰ %4rZB#‡ %l8Y!B$PTˆP‰ $rZAŒ„68qµ`ˆÀ½|ûúýpUÄFìØ+ D ¹W%½VT@6ÄI"$$œ,¨…Æ+ ÐX@`… ! TØ€„„“  !ádAA¬TaÅŠ+8‰P!U%‚rTþðµ¢²!N"[¿Ž£ 6@ €+T°!1(+Uä„€¤rB@H „İ‚, P8ÁРÊ ’,@@PÀHl DÀ ,@ÁH+°`É,QÁK8A0D…, +,@@+¨ÀPDEа‰¬H+$RÁ ©l° N°B"N°+lÀ ‚T€„ ,Å $²D ,… …$#@@P8ÁþаÂT°‚*,@@PPPä@ 6îÊk¯­@4€Ä @±B+ !1‰# 8ÅC¤BN@±ÁP#È=@±BC4@19 Aƒ*Ä$BNÐÀ+TÁ ¬@4€Ä=@±B+@à @Ñ9 ¯À8±+BN@±@±BP @HÐÅ $²Ä<+@à @±BP¬PÁ D°‚ AH@Q 8‘H+$RÁ ›ô@PTÀNR 81N°‚ þ+,@@+ÐÃ@áÄ ¬È BN@±@±BP @HÐÅ $²Ä<+@à @±BP¬PÁ D°‚ AHhŒzêªë²P À+TÅ ¬C0„ Ä$BŒ Ä´BL*Ä‚D$ TàD@NT4¨RA‰Å !\C°P ÀH(_Á @±B‚,A9¬¾Ë T°„ Ä$²‚ @a€‚*Ð +¨@"r@ b¬ PXA °‚ @aN†€Dô„DT`‰¨À þ„ !NX@á„D  ¨€„DD€N A6( aX‚ œ@€%‚‰XA °‚ @Á h…T 9ˆ`VP(¬ PXA °‚ §C@"z€ ào|LÝ … +€6P 9AŒDC$  à'¤‚@2 bb €Â *€„,a€V°„ @+À!‚@!@‚p*0¬PȰ@aXA °‚ "X@sá„`P ' NØ@ €„þ,a€Â …%¨b€Â *…À ¨€p*0@a XÀ °„@HDVˆ ¬@NXÀ †€„%ä $–(HˆHà(¬ $ Àr… l@NXV… $  àÀ ¨°‚%lPX °U¬ PXA °8aN†(,¡ Â5ÏŠÖ¾¬  0F,€À@(ä Ÿ¨@ *ð‰ Á @0„T8!¨RPOT +@$°D`$€þ`@ ƒD€+€ÂVP!ÀXH… 8r°ä N @ú¸‹%T`Nˆ*€0bÈ C`T±ä`ÈÁ±`r@ƒ$b¨r…T€ ¨@ *@€T CÅ †@€ P*€@ À€ C @€„M,¡: Àá„ ¨#@€ X  0F@ @@€  @VP! 4XrŸ 忬HXB"–°„M þa »XÂZ±„!°Ë›Â61„%´b CX‚ à„U¬HXB"°ÜŠÀ QæÅ† ,§bKHÄ  ,ë CpÂ/0'$ Cp+–0' C` V Š% AXNÅ–ˆ% AX_ÝbäÖ¿ Ft‘bä€Ö¼¶Ñ œÐë` {ØÄ.¶±ìd+ûÕñF<~q’`œ„×X^¶µ¯ílób¸E̸‰TàĸŰ€ðzCж»ß o(¯ ½XAn±„!€CØÄ *€‹T 'Ä *°‹!`}îÁ‘ƒ ´bþâoÅœPñŒk|ãï¸Ç?ò‹|ä$/¹ÉOŽò;¡À  PX*°(8¡À °€ PXBQ'D` +°A,!Œ¨€*@¬ X@P,€XVÀˆ @a @VFT`XÁ*°‚”ë]K¨À– '`N "$8¡ @T€P`D°$, X°€ Œ¨À °‚€{o½ë_ûØË~ö´§= à„` Nˆ€ïs…T $X€r€þ+ H°'¬ C@@V`‚ Áœ°‚ `NÈ–°Ð`€Â * bbHDƒ!D@KȆP{ç+@+° +°P@àP°C@à4&P°+9@=+PP°@+@=90 C€hƒ7ˆƒ9¨ƒ;ˆƒ0 CC +P‰P³À+PP@ P°à@¬+ Ä+@ ³0+PP°+P©@ ‚°° ª0$°KþÀƒ7 PKN@Kİ ÄC°0+P0€ÊSP°+PP°P9=°‡©¨Š«ÈŠ­xƒ@N ™9+P°P°à‚€+PPP PH°K°Ó°‚P P@N N°+PP°KÄ +P°‚°Ô8°øÈýèÿþè+@+ +@‚@€PI$°P +PCP°9°P°þ+PP°9 KP 0I“5i“7‰“9©“;É“=é“? ”A)”CI“K°P09CÀK°P` @9ÐŒ°Ð @ø˜ PPÐŒ°  C° @90Œ@Pð €CÀ N@9ÐH=@”•™KPC°°‚àC° ° °0+ $° € @9°N@9 4°–iœÇ‰œÉ©œËÉþœÍ霂°CàK€Ó¸CÐX6C°5‰eÓ¸CàK€þ¸H9@NÐHÏé“$°Ô¸C0Hàü¸€K Xæ9@N ŸŠ  ª  Ê  ê C™Äþˆ9J“+à;I 9@“9@ 9€¡#J¢%j¢'Š¢)ª¢+Ê¢-ê¢/ £1*£3J£5j£7Š£9ª£;Ê£=ê£? ¤A*¤CJ¤Ej¤GФIª¤KʤMê¤O ¥Q*¥SJ¥Uj¥WJ£+0Ó¸C+0XÊœ+0Ó¸C+0bʦmJ£°Ó+þ°nŠœ°Ó+°x*¨ƒJ¨…j¨‡Š¨‰ª¨‹Ê¨xêCàúœX&©•j©;‰+p©Ê¹CЩ¡*ªÿH £”=°‰“+P?9N`ª³Z¤°´Ê“KP °‚à0N@€Pà°@P° @°NP @9Pà@°PP @¸ ¯>J C¯6é+@+0+°P@àP°C°+PC9€4 +P‚@à4K°+$°þN°PP0PHP¯-k£+°+à²9 PKN@KÄ0+PP°à@‚° ÄCC 0P³0P@ ÓØ°3 ¶0 +¶é+@+ +@‚@€PI+N°€+°‚°K@ 9H 0°à‚àP@ ‚°°CP¶™»¢Ä ¹ÿ¸0K@K NPŒ°Ð @‚0Œ@K°@+ °0  C°QŸPP@+йÏ[¢K°°Ðû$°Ô¸CX6C°Ó¸HHàþ¸C`½ë‹¢K°CàìË+àòk¿÷‹¿ù«¿û”;libjibx-java-1.1.6a/docs/tutorial/images/mapping-normal.gif0000644000175000017500000012521210350117650023553 0ustar moellermoellerGIF89a$hÆvÿ """&&&)))ÿ222333777""ÿDDDHHH33ÿJJJKKK€RRRUUU‰XXXDDÿ‹\\\HHÿKKÿŽ```"‘"dddfffUUÿhhhXXÿ2š23š3pppqqq``ÿvvvffÿwww{{{D¢DH¤HK¦KP¨P………wwÿU«Uˆˆˆ{{ÿX¬XŠŠŠY­Y[®[`°`d³df³ff´fˆˆÿ–––™™™ÿq¹qv¼vw¼w––ÿ{¾{£££¤¤¤™™ÿ…Ã…ªªªˆÄˆŠÅŠ££ÿ¯¯¯È±±±ªªÿ–Ë––Ì–™Í™¯¯ÿ±±ÿ»»»£Ò£¿¿¿¤Ò¤ÀÀÀ»»ÿªÕª¿¿ÿ¯Ø¯±Ù±ÌÌÌÏÏϻ޻ÌÌÿ¿à¿ÏÏÿÌæÌÝÝÝÏèÏßßßÝÝÿÝïÝîîîîîÿî÷îÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!þCreated with The GIMP,$hþ€v‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³°gn¨g]g´¼½¾¿ÀÁ¤Ågvgg/gg”Æ/nŠ8gˆggv/nvggÃëìíîïð“$// sn/n/n/ÜP@¢^E xaÇÍ 7ˆÜ¼pc@;n^¸‰Ç±£Ç Wè" €.sºÌ™ÓeŽPyÃÁ‹9]Vv™ƒã”AE^àèâÆ€.ƒHp#¨H=7vÎÀÑN—•]æàxEМ.sºÀÑM—9‚ŠÔscgN—9þ8^@ I·®Ý» tôb€.ºtà 0(‚ ˆàÀ‹.(ì;Dpà…!]Íð†/" 8ó€ƒD@;]t‰ÀA„ºØq0C‚gº  ÞçУKwÀA„ Øé@0(‚`°SÀA^t A0pFP„†t!T¬È€9‚8@‚taG‚8€]Ð…taGtQn’]… `0݉(¦¨b%àÐ ‚0H1vàÀ ¼Ð‚0H1$D0H/þ@„CBõ¼PŒtaGÀ ÅØÑ]Ø@vt@D0È tÀ Ŭ(çœt®@ƒ$@BÀ ÅØQÌ ¼Ð‚0H5ƒDð‚!tAÈ/D@”/a]ØÑ‚0H1vt@vÐ…]ÐE1ƒ¼@ RL¸æª+Ht1H$t€` RŒ$80H/t€` RÌ Á †ÐÅ 8ÐÅ @vt€` RŒ]Ð…taGtA‚ƒ¼@ RL®,°;à €` RŒEP„Eþ ðBÀ ÅtPÀ †€ƒ`$@‚]ð‚ Pa]ØÑ‚0H1vt@v€ƒL EØqÆ/tÀ ÅÔ)õÔTƒ´Í6 @aGÀ Å‚Á6 $ðBÀ ÅØQDàÀ †\ @E RÄWa]ØÑ‚0H1vt@v¼°taÇ WG0G RLÕœwî¹]gt!I8D"˜%gtQˆ]œñùë°ÇŽ¢õD0€²ç®ûî¼3BB1œÑûðÄoüñÈ'¯üòÌ7ïüóÐG/=Õ‚rÆŠ&ÈõÓwïý÷þ$A!Å(’@‚þúì{ß…/DPÈõм ×7ÒÅí÷ï?ìnˆ@ÜðDxÁ6" $Àˆ€°¼`àDÀsˆÀ¶Ñá(Láœæð‚¼@/@p€3Ø¡‚xÁpð‚ sxAQ A¼`8xÁìÐÌ!$°C3¨ðŠX|N7â°CÐ;C/ˆ€^` ;¼ ‚(† ^;¼ v8Š€ À@IÈÌáx^;g°C1ñ‚ØáÅH€0þAC/ˆ€^A$8˜ƒ"€.ò•°|Ç"Ð…  A"0€Dà @0l#è@z3$`EHÀŠà†`ÀÁ bÉÍn¶ã nh„Üàˆ`8€7×ÉNA!H@ÚIÏzÚóžølçõZ1‡.Ìáz­˜Cæp½E¸A0g„!æÐ…9\O¡-ĺ0‡ëEô¢ͨF7ÊÑŽzô£ ©HQŒ‘.â èB0`REœ]ˆQ„ =º Ø Æhé ΀.DBMªR—ÊÔ¦:õ©ƒè‚2zþ=¨Ún¨‡$^À õhD14 7Ô£ xЈD@£pC=ìÐ…9tô®xÍ«^÷Ê×¾ú•¯nˆ@Ü 8C€Ø ˆ0€D°Ã ¶; @ì0‡ `E(àDà p^`8À"0¼ÀnŒ`ìð;Æs ° ذÃ"àà @^`‡9D (€ ÀsˆÀð‚ @ìð;Æs €3Ø¡‚8C€Ì! ì0‡þ$8pƒp» ˆØA0H€ Š08ÀpÀ"àÀ/HÀ"ð‚9D (‚àD`sˆÀð;Dºð;ÆE@þÊä&;ùÉPŽr“çð‚¼@/ˆ€^7@Á/ˆ€^0€"à!@p€3¢vxÁpð‚Ø¡ ˜CH`ˆ /€ `‡DÀ/ˆ€^$`E€ŠP C`s°4;¼ vè pØá 0ÀpÀ `$`E€"0€.`  ‹ Áæ` þtÁÅ„ `‡D  €Âp`‡. gÀAªaˆbâ°Ã "Ð@á 8Ä "  `8€^¼$HÀŠ7Ø!èº`ˆ.8 g²ÂÎð†;œÉ]H@Ü ˆzD  8CÙ;¼ vè4;t]D1ìð‚Øá°ÃP„¼À/ˆ€^3l<v¨Gº€Ø­ n˜°!Š1ˆDÀ/ˆ€æ vxAQ ;txAº;DÀn]ˆÀ QŒBCgØxæ v˜C0¸þa†ˆ€ñ‚Øá˜C0âD1ìÐt¡è"`·.Ø!/P€‡›þô¨O½ê1‡ àv¨Gº $À/ˆ€^;!ˆ€Š€3¢vxAìð‚"ÀÁ ñ‚ØáÀ@ìð‚Ø¡è00€9bE¨†!H0€3B°"`‡3¼À €^;¸Á$vP/]v€0‚0ðŽ@p‚0vP ‚€ `/gðn€`gðn€PÕ`/] sþð`gðn€ /và$vPpõ]0s s`ðˆà]eZ¸…\Ø…^è…g]/]e3gð@/ $`E½0EPn00` 0E P6p ðÐP ]°sà°ÛPg$`]° `n0//]Eà 0 0+½gðP6Ðà @vpþà @Œ€ Ûà @‚ÐÛ0n0/` ðÐP ]ðp8ð_¸ Ùù5Nƒðpn`/gàð08Œ0NŠà]ðnЂ0N…Ðn0np„psnÐå]€ãD]à„ÐnànÐn ãD]à„àg0g0‰à]‘Vy•X™•ZyÅP‚P EàPE°•h™–j¹–lÙ–nù–p—r9—tY—v ‘sÐsp={5]0×# n gÀþWn gÀsÐsp=u=v 5]0×s—˜™™š™•g]°Wg] E|U0Àg] QÅ` uЀL6œÄYœÆyœÈ)]à†ðQ/ɉàõÀWàõQÅQ/‰`ÅžƒnPˆð0/áy=vð@ž/ˆnPvÐs@žþùŸ : Z z š  º êh 8`//`0Ûàv0$gð 0þðàv`0Ðs/P`g/0v00ðvàÂÕvðv `s/]0€v0P`/`‚aÛPðg/0Å`àv00ð†0€vð 0ðv° ððvP v00ðvà[j/`‚ag/`/õ/]ðÛvðþ€v`àvð 0ðs/`/`‚aE0EÀ öz¯øš¯úº¯üÚ¯ä9/0/`]Pp8 /„Р`/$0s`Ðvð /vð 0]€]@ 0En@/08ð`nvððà/v@ 0EnPÕP/0E€p$sPà0]€‚Pp8`$0s€`€/0äYpnvàP`/ƒP vð`/$þsP0N[Úg€‚ð0EEÐ Å`$sPàEP †àP`/‚ð0/ƒÐЂP vðP8gð`/‚ð $sPà†Ðgà¯Ð½Ò;½Ô[½ÿÙ n`s08 /„/ /vðÆP/‚ð`/‚/0`7]@/vð`g°qPÐ``7]à[Z/vÐÐ`7]/0s08`Å`]vþð@žs0õ€vpƒP vð`/P vÓEP s08 /„E Å``7]à[Zvp‚ð0/ƒ/PÅ`/vÐÐ/vð /‚vÓXlP°Ç€È‚<È„\Ȇ|ȈœÈŠ¼ÈŒÜÈŽüÈlsððgðn€ /và‚/ /v€@p‚0vð`nð`‚/00s s@/vð`vðPÐ`0þs sPÕP/vPp0s s/0gðn€`$vP`/„L½4v€ `/ƒP vð`0s sPgðn€ /và‚€ƒP v€0‚0EP XŒ `/‚ð`n`/vàv/PÅ`/vPp/v€ /và0s sPn БœÕZ½Õ\ÝÕ^ýÕ`íÈgD$ ]° `/0 vÐÛà]`þ]° ÐÛP/0 ‚à ]@ 0EP/e3ðÐPnЂü@và 0 ‚pà @và àð 0EPƒ @‚ðP6pE½D° 05Ð…pà @‚ÐÛ0‚0PvPÐK` ]0È/e3g`]° `]° ð E½! $`]° 0E`]° à ]þP8ða½â,Þâ.þâ0ÞÕ]à„àgÈãDnЄàg ã4ÈnÐ…è„^è[] E`è-^ÅPŠþèé’>é”^é–~阞难éœÞéŠì‚q‚>]0×#èsÐsp=€,ƒp={ì‚q… …0]0×ã,‡<]0×SãÄëÆ~ìÈžìʾìƒP0þìg]ìg]€Ås°q/ ŰÇE…Pg]ìðvPP‚œpÈg]P ÐÌ^ððÏì]à…\ ÊnPŠüÕàõ€Å]g0n ×ÈÅP/X nP‹üÉ$]àà‚ü€Èàõ@E]0 ôB?ôDÏÈn àÛP àðƒP v`às/°Çp àðv0s/à[*/`þ‚as@àÛàv`s 8ð 0ðX àv`àà /`‚QEàP vðÛ‚00ð‚P ‚à° à[j/`‚as@àpàv0€vð 0ðs 0E0v00ðv ``àv0/à€€a71ðb1Ðõb×Õeg97ÐU4Pdéù *:JZjzŠšªºÊÚêú +Ëþ:÷2ðbYpæ–àe÷áa÷a÷A’0Wàú2€ó2àe÷a÷áð@’0WPS\,J20g‡¡a÷a×u†c÷aé†%;/àx1À΋v^DxÁÁ ¦Üà@ÉS1K$Ì)Àb–H$˜ó"BuB‘0dž./"Øy¡ (gpXzÁ‰sp0ÁÁ vH$˜S€;tÁ áÅ켈`çE„¼ðb@ÎH0§7v" è‚¡‹¨,uqá̬Á„ >Œ8±âÅ º$ˆàÆÒœ/^à8“ sOÅìþ¼ˆ`çE1¤t õ"‚ÎdNÁNå]D( €‰À.¢ŠyzÁ΋væD0‡,aiçE;/"ØyÁ΋•#tpª PÅ,EÀÝÅN1KÅ켈àfw¨bŸ^D°ó"œà°ôB–cGhðB]`G¸uaG/XRÙ `Ç ØñB•EÐ/D`Gtn]ØÁ ¤Ì1€ž@ŒÝˆcŽ:îÈ£bs¼0À –0Às`€/DàI1v¼€D€ÁsX2G(/D`Ç `€/D`GetÌa‰,‰BÂgþX¢v`g¼àØñv¸Ê ØñBv¼€DPY]pJ€RŒ% 0‡%sØQŒ%$`ÁR($ p†%s¼€DpÆ n`€%/`‡$$`G„ðB]`ÌaÉvDð‚%•Ù‘v¼€DPY]ðBvÀ 0‡%sØÁ ¤¼@‚%nD@=Þ‹o¾úî»Øta`Ç d6ÀEDPdD–À5$@tJ‘ÀÙg$ðB]PCD@¦Ìá°i PÄ8 þvtAÚ¡$0@ PD¤%0/DÐE”R„DP„EDPdg¸‘°BEFp¤%0@¥Ìá@ i $@‚%]6€ 80À ¼AáFD@/ @vdvFØÑi @À t€$ v¸‘ÐÅ $(n à†%8¼Àoï¾ÿ|ð£¸á)ÄâF©_Š]¨âF–JnxâÆ©¯˜]ŒB¼*ntá ñŸtáÆ'nœáÉsâF©OÊn|âF¨ð‚ðþÿÀ p€,àb^0þ*p , (q¸b]˜ÃÎð JXâ‚lź0‡ –‚–¸ (Ü@‰3|‚¢˜CæpAOPÂì )æÐ…9\ij¡Ä qˆD,â‹DÀˆ¢8º Xb¯yŠñÃTœ]ˆF1‡×¼ÀÅE"0€|"ÅÐ…`ÀsxÍ ,QŒVDàv(BŠ Š3  À(Ð…,*r‘Œl¤# ÉvÁ ¨(F$C7TÆ]Àæà;\/ˆÀà†ÊŒ¢ 8ÃÜ`‡ ’¢ŸxAF7TÆ]ÀæàþK\/ˆ€'H€.¸nXÜP™O!vèÂ.‰Íljs›Üì¦'ܸ4•@à¼ÀŰ`8`^ $ÀˆÀà¼Àp"0€9D`xvc‰Øv(‚PŒ&–ˆ"0P! ^€Dà¢@€œ!À ì ˜C€Øáv „(Šà㤉€%æà–(†ÜàÒDÀnØ%^`JÁ(†^@šØ!ˆÀ@…$8°Ã 0€þ¼À/@ì€3$ÀxàD`sˆÀð;¼À”ðÄÐ;aEð¦g? ÚЊsxÁ^`‰"à nH€ `‡DÀŰà "`‡D€ ˜Cà†P¼`8xÁÜ;¼ vxAð s(jÀQ¸ „%Šá‰   Ø pØáð„vc‡ /€ `‡DÀ/ˆ€^$`E€Lဖ(†%H€9n°C1ì@‚Ìá°CX 7à”ðD1,t;΀K¼þ ž¨Ìp7@Á/ˆ€^¼$HÀŠ7ˆâðD3ŒvÊT®²• Ó…DÀ –˜Ã*ƒƒ3¼&ž(†^;¼ ¥@Bñ‚Øá8Ãk"`‡ÊD  ˆ@›™°›QtŸ(†'"ðKÌ!ìð‚x¢,±Ã "`‡Dà ¯‰€*. mîÂ)º€OÃhsìP ;Ã/ˆ€ܰQt (†%"ðKÌ!,ñ‚x¢BÀ^;T&]@ÚÜ…PÌanø€nŠ{Üä.·¹K1‡ àþ– A‘æ€ØáðD1ìðØÀÀæ`‰9„â°Ã "€Øá°Ce"Ð``s°„X2Š.àÅðD^`‰3¼À €^;¸A/ˆ€^ $À/ˆ€*.˜ƒ%æpŠ.àŰ0KÌÁŰC` DÀE`‰(ºPÃx%Îð7`–xìà;TÆ `‡DÀ•‰@€ÌÁsÅ Hà 7D ]8·áøÄ3ò è‚ ØáÈÌÎP„)D MPƒ þèB(0€"$`@fp†¼ ]@ €  ¦(‚"!EŠÀ^0€DÀg€@;t4EP„ @ÈÌ΀D  ¨AtÁEp" ü)gpC¬ EŠH“P¦PPvPP$`g$` ]@`™q]/™1g/]5Рààž€/ x9¨ƒ;ȃ°@<¤@<Ÿà] ÄS nÐ?Ônà np©@<¥à]@þnТ@âå è@G¼áÀŠüE€@JÀjD]`EP„  /@xp†¼ ]@ €  ±xØ!(BP7$ÀxAP„   @ÐYÁˆ@ìP„ä/VH"€D 8€”€þA/@@‚   @ à€¼À @0€$@ZᆸÁ8xÊІ:ôÃÅpFá†.Ôb8±pCfñ‚œÁ ±8Ã^á†.ÐÅ ]xÅpjñ‚œÁ ¯8Ã`á†.¼‚/x¨NwÊӞʭznx.G "h¥”I´!B $É.vX‚¤PG XÄ=ˆ‚1ØÑ†)X„¤`A ÔC$!à ’„ ׃DaG"dCv´!B (%B1$QG XÄ!IØÁ°{h!Ø…’ •Ø¡1È€’pˆ]B)ÐJ äà½4" v`˜êX IAb„6ˆ H‚’ ‚ Ä uˆA,„C$Á ƒD2-d@ ¨+¢ˆÄ$*q‰Lô й:$!þI°ƒ,Ð9ˆÀrƒ’HìÂIˆ’ƒ ˆ Z°€È‘„ D! °ƒÆ`‡$ÄÀIˆA ’` ˆ Z°À r4X` mˆÂ!’HÈa vHB ì„""¨ƒ, ˜È! `$va‡ ˆ Z°€ì°‹CAuHB ´’¤ÁchCì„Bc°Cbpˆ$ÄàAA´`9´$ 78DRƒ64q›Üì¦7¿ NÔ¹Á AçÒ ‚ÈÁuÈ€R¢`‡6˜%Ø…’;$aoI9’;$!vhƒYb`¥Ä þˆÁ[¼Á{Ô!È@‘„@¢ f‰’ƒCÄà-iˆI,@Ž]Ø!oIƒvqˆ]Ø! 1CIR‡X Q°Cbpˆ6˜%‡HB ƒ·¤$uÈ€ 1 Ü œT­ªU¯ŠÕ#Ba@/0/ /€vðP8gpÆm/08ð@ 0/`܇ð€/0]s$p]àpEŽçyNsàpP0óõs ç…n臎艮è‹ãsþ]u-Þ n s0n`/vÐЇ`Üvð`/`Ü`/`܇ð`/gE/ PÀè¿ãn00/0_ ÐÀ®ìËÎìÍîìÊþ]õ/>/0/p/@‡ð`EgpÆm/vðÆv€ Æ}/vð` €80và]ðìÏg]óõs ð ¯ð Ïð ]å:~Ðn0np/ $`E0`P 0$ÐU 0("gP 0þ500`8ð ôÉðó5PôGôI¯ô0î]Õ=N/@gà{ænÀg/s€°ôA0_0_äsÐs`ökÏö?þ]õ>þsçPEÐö ÐUP ÿÆý>^ÐU]]°÷ù}v]•sù—¿ìnón ðgÐ=þ@]]]°ô¯ûDî]Õ±oûHÐU€É€ÏnÜv/ð80vÐn «mP@ü80äàðÉp]]`P@ü80‡àþÄ_s`n@üE0‡PÄï‡àÄ_s@äóOÿõoÿ@þ]õ÷Ïÿýïÿÿv‚ƒvs$ˆgv]$„‘’“”•ƒv˜v‚sEv˜/s]]v˜v]/]/v /g]/–ÒÓÔÕÖרÙÚÛÜnsÝäåæçèéç] ˆ* ˆEêÛ˜vs‚g]EnvE̱3GÐ]½H© €.væ: Ë ƒÎ¼p0èL‘s9 ñÂÁ 3ôRª\ɲ¥ ˆ ¸œI³¦Mks^¸Ûyææ$LvºÀ þËœ8ì` !¨ Lº"!R]ìt! @^t™c€]æØ!‘à…[L8¼è2ǧݻxËá@„!¯ß¿€µY°À€91A€G]ìp0;P`ÀÑ@B/Dê  ptÐe‰@™Cb€P"$pë¶È €¸¸ñ»n0ç¸óç€àà/& èb§ € ap0@B]!4§ €. Ðe¹qáE‚In85hà&¨à‚ "E4(á„Vhá…¾0"$`HMvt1Àþ $$0Ç/Ð… ð‚ $$pâ tIaÇ8`Ð]À‰/ÐÅ P/@!HtÀ ‚@QÄ Pvéå—`^"„iæ™h¦© ⦛E¨)ˆ›Ìqƈ`@‚¼€‚œ1"Ð$s`àæ/t@g €tñ‚› œñ‚› œaG¸YÄ n&p†œ¨¦ªª‚s Àn¬*무6èF$$ð&gÈ9Gg 2GnX2GnT2G]D2Gn2³ƒÌÁ,$Ì2³Ótëí·à†+î¸ä–kî  ‚ùì¶ëþî»ðÆ+ï nAB àÆ¼üöëï¿,0¼P $'¬ð 7ìðÃG,ñÄWlñÅ »QDwìñÇ ‡,òÈ$—lrÄs €ˆ'·ìòË0Ç,óÌ4×lóÍ8›ìF‚€È 9-ôÐDmôÑH'írDÀ"(-õÔTWmõÕXgm ˆ€ÈZ‡-öØd—m¶Ö ¼‰€g·íöÛpÇ-wÄnì À8Ì­÷Þ|÷í7ÑEØ À nøáˆ'1 »…âG.ùäo'ð¦nP®ùÕÌâ³g rÆ»Áìp»qÆæg»ñ& s°.»Ô D@H þÁ ˜P\DDð1˜D€³$ðÂìdá&ÌGô  ŒÉ £[Œ‰Ç]ð‚8üB%w@Ò‹Mœ‘þû0@``Ø€/8&ìðDD@s €3@b$€p;`BgH€ð‚9D ÀæÃ@Q8Àp€æ/HÀ"ð;Ì! @àD`v˜C€Dº€°9àXËâÍà€9hñ‹`,Ú Pà /ˆ€^  8À‰A`B$þÀì€.@‚˜ƒ0Ð;`Bn€‚^. gÀº(œÃÄ ^;¼ vè pØá 0ÀpÀ `$`E€"0€.`  pCÐ…¡ó˜sà ÉÌf:f/ˆ€º€.¼ vxA^;t]& A`ba˜€&q†¸3sˆ€;Ì! â°Ã "`‡9DÀ^A`Â]€^.ÀxS"ð…u pÃ3ö bÀ0AˆD vˆþÀV¼¼À !ÃØ ÜÓžúô§@ ªP‡Š±DÀEÀ^;` /ˆ€Š€3ƒÀ„ H0€3b ÁÎ ˆ9Ø‚À@ìð‚œánÀìp†¸@Ø ÐA¨vÀ@ìp†¸°Ã `7Ø °C‚D  °0AÌ!/`^ Ôœv/Ä 0; ¢‚p"^`taa [€"”öaèÂo‡KÜâ÷¸ÈµÃ À]@D $$°C"0€DènÎ0 èþ$æàD+ˆ@w#p†ÀhØá p@H0 Ø"0€"œH ìÐD ÀnH€ð‚¼ ]@ÜD@" °. ÉµØ à†3‚@ ˆD/°º°0ta$€Q·¸aEpËæÐ…AŒÎsèÂpð‚3Ì/è Šà7Øa]˜^;t8è‚ìà·a1γž÷Ìçß¾ gpà ÜàBœÁ sCæ†.(ŒÐ„è‚Ñ7,Ì ]pƒ ‰.¸an8!þÎ0‡…¹¡ ;0P„>?lÀ&( v@ð;  @1¼À0€3؈€Ð vèà€ €Û €ì€¼ 8CÀm €"P„.ÀÀ \Íï~ûûßÃDNð…acGXá†A  $ˆ@`¼ÀèÂÂÐB`¢pƒ €"  ‚€B0LØ¡ €‚Ü€ØaxA0A8€]á Ø]Ä 0ˆ3|ìéPºÔ§Nõª[ýêXϺַþ±3`sºà  vÀ ì€., ] &0A¼`$p!º€A`Â]À ÐAà$Ho0Ñ v@¼  sàºæ7ÏùÎ{^óÌ"„˜u†AŒb£ûüÕ™¥ú…9 ÀÀ Ð;D`‚À ì€., ] Ä^€‰A¼˜ D0A`Â]À ÐAàHo^P„.`˜°º ˆ9`ZÏþö»ÿýO@Q„ ƒÀÄ0†EàvPP “ÐvðàE] ÐvþpP ðv]°0Ѓ€Ð$àƒð ð @]] ˜`]ƒ] à ]ƒ€ v] nà€€Fx„H˜„ ó€0˜0£1£³0/óà1$]àà óÐn0/ ‚] ðv8À,]p8À,$$`]E`g0/Ððv0/à€vPvÐ0Ђ/Ðð‚EÐ0˜`€và/‚À~°‹²8‹P €àþv`/à0˜`/€`s@àpðˆ‚ àvð 0ð0$g`às 8`//`s 0E0s/`0 vv`àv0/à00ðv]`ðX 0g/`Ð/`o o’E0/à&0vðn’v@ˆàN`]ƒ] ðvPà&EÐþ0˜`/€ná& p´—r9—t)/0E€`/vðP8g ˜0˜`$0s`Ð ƒ ‚ð€/0‚ð0$0s`Ð/vðÐg€‚ð0$0s€`à/$sPàvР/08vð`/vðà//0E€p 0En`0]€]`Pu91nÐg@sÐg0gÐÃ, s] sÀ,í : Z÷`]vðþ`/vÐЂ€ ƒ€ v€ ƒ ‚ð`/‚ð0˜@/vð0€‚ð0˜`]ðÐoÒv/ ¼1`/vð`n]/vÐÐoÒv/@ b:¦dZ¦fj1/vP`vð`Eg ˜0˜`$0g s0˜ /vð /và@p‚0/v€p/à‚ð`n`$vP/]0s s`ðþ‚àv`/v€`n]/vP0‚0v/@/Ðgš­Úº­Ü:‹/ $ЈP/ $`EÝ0Ý_àÐPÐ]p 0EPvЈ00Ì‚ 00$ ]€`n0//]5Ð/0 vàNgÐ`]€ 0E/] $à ]ð0ðÝzµX›µZ u/gà‚@þhpn1nÐãg 0nЃ@h„Ðn@np„ps 0nÐCh sn0nÐ ã[{¸ˆ›¸Š+˜P‹;‹/0;¹”[¹ÛÊ,„àÌrƒ0:T7:Ã,ƒ0:–[º¦{º¨;1 „P00˜ð0/Pƒ 3î”/ ˜01ðvPP©›¼Ê»¼eú€0˜0£ã0EgP/ / 3:Ópsà‚0:ó $]ààÌ¿ò;¿š €àv`/à0˜`/€þ`s@àp€ðsàvð 0ðv€``s€E Eà€ vðˆvT 8`/n ``g/`à00ð‚/@¿f|ÆhL/0E€`/vðP8g ˜0˜`$0s`Ð0 p‚ð@0]€]`˜`/08ð`]s$€0n€À,ƒ€ ‚аg€þ‚ð n18vàP`/vðà/$sPàvEÆÒ<ÍËû`]vð`/vÐЂ€ ƒ€ v€ ƒÝ%/„/@˜`/vð`gE/0]€ ‚/ s08 /‚Àvp½vàÐoÒOWÒ&}Ò(Ò*½Ò,ÝÒ.ýÒ0 /vP`vð`Eg ˜0˜`$0g s /€vð /và‚/@˜`þ/vð  €80 Ó ˜ ð‚p/à‚ð`nàv`vð`n]0s s`/Ð1=Ù”]Ù–}Ù˜ÙšÒ/ $ЈP/ $`EÝ0Ý_àЀð‚Ј0vð`EÝ0EPn00€0EàE`EÝ!0 vpà @‚Ј0ît]vðàNp ðÐP ]þ`ðÓn01/Ós°Ù^á~á¾Ù/gà‚@hpn1nÐ ã]à„àg@1/s€à1]à„àg 0„Æ0nЃàãn0$€`àv0€//`s 0E0v00ð0ÐE0Eát^çv~çxÞ0˜Py>PE`ç/03/0/ $0s` `/vÐg€vð0$0s€`à/v@ 0EþnÐÐvÐgÐç¼Þë¾þëÀì˜Ý n ˜0/vð`s08`/ƒ€ vР/]voÒð€ÂÞîîþîð¾0ÌBnÀ,g0£“Ò£C1nÀ,gðësððv@p‚ `vp/àvð`n`$vP/]v€0‚0ðƒà]ðî2?ó4ïî „P00˜ð0/Pƒ S0@1ðvPP–}Ðsàþ°ˆPg$`]€`n0//]Eà 0 ‚€/Pó5?E€‚ø ƒP Ù/ƒ ƒ0:SpEð‚ðÀ0£c1˜ð0/ƒ@Ðnn°ÙnЂ@hÐn0np„ps°0nЈøn€à&»üv0$+ €àv`/à0˜`/€`s@àp€ðsàvð 0ðv€`€a7þ1Pd§¸h¡x–àð2‘€ó’0ñb÷`p–àðbà1`71ð¢ð¨»ËÛëû ,3@Õ¼Ev`/D`Gœ¡ˆ#‹8b œ¡Èº¼€ƒ/ È Øá†"¼Àˆ#v¼/D Hà0G/Ž(‚Av¼Á/¸v¼€nØ¡’ €Av¼*EÐv`0ÀŠÌaÇ ]DHn¹½œ@``‡8¡ˆ$€Án8‚Á‹œAv8Á ŠœáÈ E"/8ÒÅ$D€Ávœ@`þP$ °á"E¼PÄ"E¼PÄ"E¼ÐÅ"*±ˆ#E(r†#g(r†#g(R„#‹áÈ"/DðÂ"/DðÂ"/DðÂ"/DðÂ"ޱˆ#E,âÈŠœáÈŠœáÈ"E8²H`°È ¼°È ¼°È ¼°È ¼°ˆ#E,âHŠœáÈünXó @B‡$0@/$ØQDÑECÑEð…D@ºà0@¼ H‡ `Ç $ED] PDáÆ €Á.ED]g¼Àz4€ `G‡ `ÇzgtÀ ¬7À ¼AþáFD@vð‚]¸a.1/D`n¨„C¼ HØ œsH@á¼ÀPIì0‡¼à /è‚Jà;œ]À@^€98 Š€T‚(`ЈŸ _h”8E˜Q^3¸Anpƒ.Îà†a¸¡ ½pCÜÀ7œá/Àpaô]pÃ"Üp†^ônèÂ"T‚7D n@" Ì!À ìD` BØaHÀŠ€8ØÅHà p€à€9D À^€Dà»@þ€Àv€ì pC^ÙE¼À¯TD^  `@sÀ ñ àvÀtsP„p;œ$ˆÀ "à;Šx^‰ŒbÌ¡8D8ωÎtªsëŒÀ!0P„9°sŽ(Â<ïÙ ($ (>Óù‚9üÓsxÁ^ ˆ  8À0‡"À vˆÀº€ gÀH0€9à&^0€]`s°ºð‚Øáè p(âP„`Ù;¼`8xÁ^;¼ vxAða½ˆÀ þQ„œÁ@æ`‡3 `x"€Á/@EDà‹ˆÀ!ºð@!¨0æÐ¿ v°„e' 0‡Â*v±Œm¬º€¸A/ˆ€º€â]°C^ ˆ9DÀa‡.@°Ã "° G0â°Ã "0‡`8PÄ " ˆ" Ì/ˆ€^DÀ/ˆ€T.À @íE^°ˆ3$à ‹˜C"`‡$ HÀá€ØáèBÐ…" `Š(ºàÀÀ à xÀƒ«ajPÃ9 þÌÖÀ‹00…1‡ àvxAìPD`sPÄì(â /p`$ÀE@"`‡D`$À1‡ÀˆÀ^à @/€ܰ‹DÀ/ˆÀ ` DÀ*‰@P„õ"/PÄð‚.œÁ E° `‡3¼$˜Ã ì@‚Ø¡èBà†`H€º€0@ÁÀÀ… éHKúØ#œ°l`Ø€0è°!è`6PXl`ØÀ¤}q†táHHà† è €Øá p@H`þ7$ÀxAP„  º˜ƒ¼ò  à€@]8Äv‘€!XÁ!0€"$àèŠð‹"D` ˆÀº°Ùta@q† v@PE8  Áð‚EœaH º0$à ¯.¹ÉO®Xl`^Dƒ…q…@@6Ø#l°ÂÚ`‹°ÁP΋Dà nX„ºà‹.¸g˜Ã0ÜÐ…Eô]p#Üpaôp gèÂzá†.ÌêźàEœ¡ @o»ÛßÞ‹@`(Á&`‡LÀ6˜ÀP‚þEtÚ68À6`:¸à8€vá‚ vˆÃ ¿;Äa†ïô6À€la 8€ ì@‡ @àC Ã p€!ðB ˜Àl‡ ~q˜€á7`‡ ` 8À6À€ØÀtØ0;Ða8Àq(ÖE0¹÷¿þð‹±6`€†plÀ6Ø€lÀ' ájPD§Ñi;¸€t°C İ 0và@6°và@6°v° %ð@Npq pj0bpW CÀ qpv`à@6°.t`þ ÀbPtàbpW C`bpW C àã…Q(…SH…f`bp'°v``6°v  ŠÐi‹ÐivÐi¾  ° PvÐiv``f6°v°6 `x†'t°ÀC@p 0¼  ‰¶v`”h6°а6 0ˆ t°ÀC`t°ÀCi¯´"isÐsð ÀðJ¾0]0‚  ¯$ =T…ÅhŒŒe`Np,pvP`6°và ŠÐi‹Ðivàþ  Š@º`6 6pv°`%°v°`%°v°6 %Àt t 6%pj`qPÀ %v`vPvP `ŠP @Š@j`qP`j`qP 6 ŒÅsÀ/ Žà’ÀpЀvðSºà g]À /P½à¼ Ð5i•W‰•YyO6pp. † à6pp.`N° Àà–@ppb  àvà0W`xÀNp†þ à `q° jp. 0à¼` ‰ 0† à† à6À°vppb 0àv 0àŠp6°NÇÐpsàŠð ÂðpœÀn vp88àºðð à*a]0‹PpEð½ð ‹ð /½Ðn EÓÉ ]0ü  * J ëd q qº q0 q ÃÀ ŒÀ ¾bÀb‹ qà º º ú q Œ qÀb‹PŽþÚ Eààvð‡v]0€//° `g/0v00ðnTŠðvðJŠÐÐv0P/à``/`¯dE0E 8/0n`àð‡Šð 0 ‹àn`s0]`00ðvT 8`s 0E àvPP2ê¬Ï ­ÑŠNæÒj­Ñjtpþ­n€ðJ‹àŠÐðJg€vð°nT/08ð`nvððà/v@ 0E5€0½ÐÐv@08&08ð`/08ðÀ ]àpsg`/ð ް/Šð€/0v0/0/°/€ŠðP8sPàvаg€v@08&08ð ]àp׊¶i«¶k˶m붾Р Ž ð‹0€vð°E€0/þvð`gÀ Ð`p‡À@µ ]à]]`Ž`]vð`/vðÐ P 80`*]Šà‹ð /vð`]àŠ0àŠð`] 0¹Ðv/ s08`Ž`]vð°Pð¶ï ¿ñû ¯ÄnðJg°" ¢N¯$¿Ú  Ž ð‹p/àvð`n° /vð`vðð/]v€0Šà³ /€þ]]`$vP`/vð`/»à]`/€vð`]Šà‹ð`nð`/Š0/0/`/@‹ð`E0s s`ðŠp/àv@ `E!vð`n Ðÿ«È‹ì¶ ŒP0°Ž /PÃàê”ÀÈêTPvP0» g$`]p° 0EP/ë1ðÐPnпðë1s`þn0/P 0EP 0E  8ð‹€ðv/]³g`]pP 0E°gL0n°/ $à ]ð`g$`n0/P 0E€/Ê1-ÓÑú° ް EgP/ /¿ð êô0ÓÑÚn°npÃànð nÐÂp]  g0êä]àÄàg $ðŒðpn°nоÐnÀg0IM×u½N`þàvð€‹àvð‡v0$g  8/0n`//`0 ‡v àv00‡Pº €vðs 0E àv00ðŠ/`×ÕÍÈ/0ŒàE`ÝÝíÝúP8!vð`/0E€pŠà‹àv@0v€]  sg /ŒÐÐvàvð€/0vÐ0@»ðP8gð€/0$0s€þ`€/0v@ 0En`Pß­ã;Îã=Þã/vР`/vð`]] ްŽ`Ž 80»ŠðÀðŒàvð`/vpP ð»ð`]]ð`/0vР`/vÕÛuiÀ‡.£mÐÂPiPŒÎŸuuÀè>Žé™þ¾/vP`vð`Eg ްŽ`$0g s  /€vð /vàŠ/ÀŽ`/vð  €80»ðþ`Egð`/$vP`/v€0Š0vð]0Ó"Œ 1 £1ÂÐ1pu1pu I€ïi`I7Њ€ï1u1pu`m`i7 éïñ×ú@]p 0Eð@vP0»0»ð]  800/ ]p`/0 vP0»`P 0Eà€»ð@vP 050/P 0Eà ]`þðð›rÐ IŒ1 »ÀèÃ`rou1`m`ip17Š`¯I`u1  Ÿupø­ïú¯û±/û³ /gàŠÕºpn0 nнà]àŒàgp /s€° /gà¾psà nЋðÁ´ r" m )`I )`v )þøn1u`IP1 vu1"Qv‡ˆI‹1I‹1‡"17ri˜i‡Iv˜1)vAvmA1IIvIuvm‡1)vAþ‡Iv˜ZZˆÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÂEÔÙÊP EÂÖEÚ/sÚÒuII‡rcvI1A"uI1vA"uI1v1in¤ "¢Ž ^,ŒiÅN cÚD¦¥¢-‡bÄ8”$ƒ–(–hÔ(,‰…1",б(M v’XHc'†ˆ Z’X#°4)b´9F´¨Ñ£H“*]Ê´©Ó§P›Î鵪իX³¦CΡ6"ÂŽ´“$†v’İ# ¢‹•‰a!C;ubXÈeX Ai<”$†4¼dJ#¬N7,ØÑ’!M 4,ØIb¡ ¢þê‰qñ1nd]ͺµë×°_Ÿ‰àEìÛ¸s«“$C;7DØI¢Q„1ìÄaçF ;1’ º‘¡Î¡5Iäܰ`§M97,«#"…‡4JÃŽ KFÆ&gŒ7ìÜa'$Ô‘D‡$aGÈ1†1Ü Œ1ˆÆUVhá…f¨aRÖlèᇠ"ÕF i$aAXD±ˆh1Æ""d C"Äpˆ"XƒYX‚AØÑ†)ˆ„0IÄe1dA m$aqL¤ Bv´‘A "QG "d Å!Ä`id‚mE!Öþiçxæ‰/èéçŸÊ!"‚#¨1r¤Hr“†J%CrÕFÀÔ‘†ˆ¤!"r¤QÇ!m¤詨¦ªjUÖt±ê«°Æj‡FZÈjë­¸æºÔ ¼ ë¯À« Âk,T¼pì²Ì #GZ"G "ÜІÝÐ"mÄ …#%!ŒFZh¤…UIh¤ÅU"¤Ñì»ð cM¼ôF•†Â$SIÄ€Hu …$qH)Øà mQ‡1 ’‚IØaA*Z„raVµaAr8•†ˆhÃ0IÄÀT1’FõÖ¬¡/ €Í<%G "þÈQG "XE"dCvÄ`A XPF X„uÄ©ˆA IØ¡EZCÁÜpÃ!udÄ!IÜ`AvXÐ1IX`GØÑ†)X„"Ä`Á vX B ܰH IX„0$H"¤`Aˆ‚1ØQG XÄ!rÄ ‚‡Ô‘AuÄ ‚QØ‘„ÄD ÄiÔC$QG X„IˆA Ih‘=W_•/t1‡õÜSG$qHŒÑFv$01dÆ 3ˆP‡È„uhaIÄL)ˆAƒ$C hƒþb`ÔÁmÈ@,;Ä@Ђ0’ $;Èa vHB ’-DÁmHB´ ,ÁZHC †a$ Bc°Cb„ D! °CDP-Xà IÈ@€‘„Ø! C¢pˆ$Ä1È@n† ˆ Z°DP-X@vHB ‘†Ä  Ý‹£瘔4ˆ r8Db` DÁIˆ0b„CÄ@Iiˆ’Ò„c ¸Á!bD´Am@DD;Ä@1°€Úpˆd@I°€’`;´!,"ˆAb`‡4X IˆÒ`4ˆ 1ÐÂ0,þ;È¡m€e ’;$!vˆ’¤ ‚ÈuÈ€ìP‡X Q8Db€ˆ$1P ””;$!ÀƒnŒzÚóžøÌ§>÷ÉÏ~úóŸ ¨@ PLC˜h"ÚÐÊm (?1 LHTŸrhÃE7ÚÏ:$!I°C’ ‡XÀI°€äpˆ$á7È@Q‡d ‡¨C,`9ØA1Aƒ$¢"HBÚ -Ø!°C0a Ô! vBì™ Ø! °Ã D`‡$Ä 1°ƒ,І$ÄÀZ°@¢`àÓI°CÒpþØ! 1HB ì„Øá¨Ã!êP‡$d ‡HBц$Èá8D,`9Ø!I@Ä 2P‡CÐ u8Dì ØAP1A8JÛÚÚö¶¸Í-?E`h!ˆ"4"P-Ä 1 mb`ˆ ÀA p+‡ ˆ ºÅmb†6X "‚Ò°ˆ Ø! A ì X HƒD`X‹È€¢Dh!A Ú†¸$! ˆ´pˆ6ÄÀ"°ƒb`-ØSЂ, …$X ,øD` Ø! ‚`‡:X@ ÷L‚’Òþ „% È€D-ÈAˆÒpˆ6Ä rÈ€Ñ ¤@A8D‘$d@18„D`XÀ "°@ ,;¤aˆB²Ëæ6»ùÍlNB ì©D0” ¡í, `$!ÀHB p› ¤θMƒ!‡6äSi†Ò€9´a mHCð)‡4ÔÁŸ‚:DbÐ9" 1hƒ¡… ÔÁŸ‚Ò§ÒpÏ $¡ži0äІ|Ê! ˆC€!‡6 úØÈN6œ- ‚Xàv°@ ì`$!1°À ¡;$a18D‚`X  õ¬C, þ´Á9DD $¡1¢`‡:Ä@ˆÂ=ƒp *‹ˆä‚EhÄ1È€ÒP‡dÀI¨C D`(Ø¡1¢pÏ:X ¹M¹ÊWNPhÑÂ!´ -°ÜI¨ÃÍwÎóžûüçõLB´ ´! 1°Cb„ h! hÃ!4‚"¨ƒn†z!u°Ã Ò`Bc°Cb Œ¡ Q°C,0†6Dឃ¢Ô! 1°CDP‡$ÄÀ1È@n† ˆ Z°€,0†6DÁi°ÀÚ{ÊA HÐGOúÒ›þþô¨O½ê7š„Ø! HCb`‡$Ä 1°C,†Ch9„Fò©‘zjäm€e ê d v¨C ,(س ˆAn ;$!vЈ’;Ä ˆˆ’Ê d v¨C ,(Ø3 AV/Q†rT˜Ðü„ ý$(÷ÄPü—€ ¸€ ÈQIv ÐI`vp11`Z`mpqAmpuPOAmpu`q7 v1ÐI 7`vÐI 7`ö” i"`7v"`7vI€7þupkrp`mrp€O øO!Pòv 11ÀO"`ý$ipOq|؇~ø‡€ˆ‚8ˆ„Xˆ†xˆˆ˜ˆŠ¸ˆŒØˆŽøˆxˆI`"`A`i°"2`"`A`ZNKNmP)`1`ià‡up1à$1ÐI`a‘``) A`m`) Að‡vЋ  c°"2"‡ "`1`Y`) A`m`) Aˆi`c‰ôhˆi €ÈP|˜1ˆiP|þ˜I`ZpQˆI`˜rpZÈP|˜1ˆiPõ¸‘Ù‘ù‘ ’"Ù‡Im |((}Ør€ˆr‚(iˆ‚Ò‡i }˜r`ˆ‚Ò‡‚2ˆr|˜rЇi ØpZ0’‘(1 rPA`)`?°1pI I°1ZZÀ‡r`Qpav`)` )`1‹‡ 1 r`ui`uð‹‡"1‹I`I  N9š¤Yš¦yš¨©þZ€š¬é‘mP‡›²9›´Y›¶y›¸›u‡Pvpi`›I‡  i‡)m`7rpaIv1`IQ ÐvPII›Ip‡Pvpi`›I‡  i‡)m›ú ¡:¡Z¡z¡š¡º¡Ú¡ú¡ ¢¶™"rp1››I±))Z›c`7`Q ±©v1`Iv1`II`‡"rpþurp1››I±))Z›c`7 ¢hš¦jº¦lÚ¦nz›˜ ›r€ m› ¢ õ¦zê¡uvЇPv ±™`r`Q`"pr"‡`i0›aI`vp1`Iv1‡PII`I±Ð‡Pv ±™`r`Q`"pr"{º¬ÌÚ¬Îú¬*1 ›Z±©š"Z¡­â ¡miP)`1`GNm`i°`u`ZpQ±þIpZNX°"Z  "`Z ±Ù1à ±Y)`1`GNm`i°`u`ZpQã:³4[³6»¦I´©±ÉPªÐZ‡1€› µ¡Iš1p³*ip›rЇ P*(I@›r·)mpZuµj»¶l˶ 1`7`)`v)p±©v‹vPA`)`m0›Q`IPr`I I`1`1 ‹v`"þvP1‹ ³Y1 v"11`1P1vP1 "1±iIжª¡ošu`¡Z Z½ÜÛ½Þë¦IZð1`Iv Q`mp›aAu`7³Y1`"Ї1 ›1ipi`aIQ`i`uA@›i`cÐQpI±70"PZ`r"PZ`r10›1 ß›Ã:¼Ã<ÜÚ1`i`:v1`Ivþ‡ ±©v ¹NrI²I ›aIv1`m`Z I@›uQpI±Ip1 $iJ’I> ­‚2Ȇ|Ȉ̡Iv ð`7v1`Z`mp›aAmpu0›IvpI`v ‡I ›aIv1p"pQP´ÙI 7`‡`r`1‡pP‡P7upu`r›I‰,¡1‡ZP1¹)iÎîüÎðL›I`"`A‹þ  I`"`A`ZNKNk³‡‹v 1`ZN Z  r7@›m`) Api° 1`r r € ‹±iI ¶i ´™1p›I¶™u ›) Zc0 ´™rpZµ™1p›I¶™uÏt]×Íš1Ðrp‚2›m *i`›rr ›rКPQ`¶™r ›rж)i ›r±)m ›©p³þr" u"`Q"1vÐ" "1vP1ZZ›©`Au7`r›r" vPvP1 I I`m )`© I`u`I  v]ßö­¦¡Ý;"`" zšuP³u‡0mv1›r0v1`I±"PZ`r)m`I` vPII›Ip‡0mv1›r0v1`I±þ"PZ`r)mpßV~åjŠ ²)˜Ð±ÉP!ÊPÊPðœ"rpuQ`I±Ù°v1›1 $i`c`7`Z`A`"Ðpv"rpurpuQ`I±Ù°v1›1 $i`c`7€å®þê*1 ›Z±©š"Z¡Á¡ÏuvÐI 7`v`r`7 v1`I`v vpP‡ð1 ipi`Z1 ipuþvA›mrp`I`v vp"`Iv`r`7upo"°žñO¡I´©±ÉPªÐZ‡1€› Å¡ uIïÜ1m`) A`i°`I`a‘m‹v "`1`@²™1pv±Ù1à ±Ù"v‹vÐi°`r I°ñ~ÿ÷ 1`7`)`v)p±©v‹vPA`)`m0›þQ`IPr`I I`1`1 ‹v`"vP1‹ ³YA`)`m‹v"1‹I`Ipƒœr›rб)(²)m ›rI@›i ±)m›‚"›rв)ið÷öï÷IZð1`€c—”¡eÑfg³h×h”Qgw“ö¸Xc!Ò¶˜““‘v“f×h—”•”a—fQ”¹”Qgw“¶Ø¸˜³¨e¡•–ò£uÛìü -=M]m Tw½ÍÝíý .>N^n~þc—f¡c—c—c—f‘¶ØøØh×(-J† ‹’ÄÈ#I¦Fv’İ“$†6´ˆHÒ¬Q³F‹’Äx$"E -èJ:“#çYš4Vš| 3¦Ì™4kÚ¼™$†-~X°s#†$1ìh±ÐfQ£GìÉÐfQ[I¢ØIbaQ vä,Š‘$S#;IbØIc‘ˆQê4 ’¡Í¢:‹-JbÁŽ;Q,ˆÈ”$ÍMp"Ò<㑈ƒ;~ 9²äÉv’Xa!H DdÐ’Ä‚ Aìh‰10Æ’c¬Ia!†…4·¢dˆ‘!É¢4œ3ØI’AD ;Zb Œ"ƒ´ÈþÉ`!ÃfuRXˆa!–c´IÃ9ƒ:´d²„²³4ri‰-IŒGIb„KSG½þýüûûï–D mȱJ·´!G5r¤ñŒiÈñˆr´a…>’„uDaÁ…vÈ‘†‡vÈÑÆ"ZdPG„I$!b‹.¾£1ˆ Ç"udF"¤`AvÈ‘g1È‘g1؃1d`A1d`AvÔƒDQG "X…Zd ŒbŽIf™fž‰fšj®Éf›n¾ §‹hgŽ!‚"h¡¦hauØ©fIdD„IÜ`‡cØ‘D v!BIÄ„u$Ã"1þdÆ 3ˆP‡È‘†c´EŒÑF‹¤‘B mŠk®ºîÊk¯¾þ l°Â ›†1ÈñHÈaG"<ƒØ‘D#1Ø‘D ‹ÄÄ"1pÆYuÄ`AQÔƒDñÈÜ0l¼òÎKo½öž¹R„r¬ÔÆ#m´aç¿÷Î[G$±HA,rƒv$ƒ1ˆ`Ç ˆ`Ç 1,C‹ÜA‹ÔÑFrÜ`AIÈqƒvȃi KsÍ6ߌsÎhŠC„ZÄA 4c"Ä …˜èŒs1¤!Gr,’„ÏfÐÆœ‰œ‰Id B vÈ!‚þ1XF¤ BmX‚AØELïÍwß~ÿÍf1XØÈ#ÿ¾¨…mh‘Ä"IÄÐâ¿m&ƒ‡Iĸ‡A$!J¢ôJ-Ê‘F„iÈñHr´Éz뮿{ì²ÏN{íbZ B Ü`A vX‚I¤ƒ7<ÒˆIpƒuaA ´Qa$Q‡v$!B1$aG Ä:pƒˆ‚1ØQG p¦E…uÄ ‚QØ‘„Ä„6ˆ X‘2ƒ$Ø¡1È€’° $ÁvfJB(ˆÁ jpƒì ?8¦$d@ Q°Àb`‡$ÄÀIÈ€¢`þ6,¢h„‚:Øái¨Pb`´aIˆA„b4Ü vh„’($!vHƒêƒ X( C¢°ˆ$Ä`rƒ’;$!‚ê  ÈÁ1ÐïˆÇ<êq|죓;¤Á:ˆ’;$!vHƒÒ°ˆF<¢vh„‹¢0E$!ŠA"Ô;$!vHB ìÐ hAI°Pb` DaIˆÁ"Úð,ÄÀIˆÁ#b. ¤ÁêBˆ B7¸¡BÆD¦3Ÿ Í &!vЂ~`;Ü vHB ì  ´axD#ì„þ ´au¨P¢`‡$X`I°€ä°ˆ$!B°Cb`‡$Ä`"¸Aê`¡6$A7°À"’`;Èá"°Cb`‡$XÀr°Ã 2P‡EÔÁIH4Ö½ è‚^ÀÒ.,â,íÂ…Xا/XN_p!7à vpC€3ØÁ ,ÅÀq†¡E èB…hju«\]S,  ! œA´ ˆÀA°ƒb Ä` 1ˆk Ö ÄÀi¨P2ƒ $aiàLì„ ˆ vÐB âd@ "È€ä dàjƒR ‚ þ," œÉ@,𬠴! œÉ€ä  ÄÀi°ƒ’ÀÇ.¸¡B/ˆšº0‡]À@΀.` v8º€\/xAì€êa¨n,„ƒ àvè‚ì Øá $˜C"°àê‚Q„Xè@SæÐÕ ˜IˆAä°”T¨ r“Òà!9¤A’CD$¢$X Q°€‡Ò ‡É¡ ‹@I„äІÉ! X†_ ãGÈ H€€/p@;Ì! @ v˜C€aExÄ@‚¼þà A^`‡3€xÁ…p†Gà À0DxÄð;¼xÁ#ܸÁs@ì€Dx"€ØaHÀŠ€8°Ã"0¼ (‚ŒOêT«zÕ¬nµ«_ ëXøZµ­1<X@Z¸õ…’P_¯z/À ñ‚Ápð‚Ø˜`‚àà° 0‡"À ]p@ΰˆ]°CÖÝ…ED`Ý]¸P0€"Ø! @  ŠÀ Q„œa@æp†Ìþ/°Ã^0€<âXÄ P ÀÁ ` `8€ €ƒ À$HÀŠ7tÁ8ƒ°ô  }èD/ºÑŽôSw!pÃ"^;tˆ€^;°Ô]€"`‡DÀX÷º»`(v(ºàø`]pæP„tÁ˜ƒ…á€<ˆðw;Dà‹8CΡ9$€¥ ˆp†.$ nXÄà†E¼ vè4;¼ v`©º DÀ/ˆ€"`vtÁPüà øÄ/¾ñüä+ùþÌo¾óÿ¾’Éa%mxDÚðüìÿúÚïþðçð‚¼À/ˆ€Š€DÀ/ˆ€H;!ˆ€^;``sX"]°vÐ@ `]n€ `]n`/Ððv@`/`$0‹ðv@°/Ð/`s/Ðg`nPv@pÆ$0v0/0/`/@ð`E!vð`$vP`/v€0‹€]à}eh†gˆ†i¨†k!"¢11ð0|Z`-1þÀ†Â×{h†g]ð@ 0EPn0/P 0Eà #ðrà @g0$`g0$°ðE`P‹E°ð‹P0 D`v/`]0E`grÀàð@ 0EPn0/P 0Eà #ðçÿ)Ii‰ © É ùIÒp})i`Aþ˜1ày})’þ ùpnðg0ÿè]àsÐn°sÐnðsÐnànÐs°nÐsðnÐsgÐs $ðòpnðg0ÿè]0’Y©•[É•]é•_i! 1`7`)`v)pÐvœvPA`)`mðw‹`"v"1u`IP1œ¡u`I`i`!IÀIÀ1` 1`7ð`é,U´‰›Yùs!,U¹ œÁ)œÃIœ[™ Q`?þv1`IZЋÐÐvPvpiðw‹I‹1°A u àP1v"PZ`r7¢jZ°`IZЋZPœŠ¡ª¡Ê¡ê¡™1`i`:v1`Iv‹ÐÐvÐiI°Iv1°I‹¥iY`Z I`1`¤iIm`Að`IvúʦcJ¦ej¦gê¡Iv ð`7v1þ`Z`m°ð`Am°uðw‹1`I‹`rpP‹P"pQPvpP‹P1ÿX"v‹Ðv1`Z`m°Iš]€¦¹ª«»Ê«½jI`"`Aœ! I`"`A`ZqKqk¢1`"v  "Z`iÀ "`1`^7`r   1àI`¤Zq?`"`AðÚnðEùà]0¾ê±þ ²!k!Im ‹€Òr@r )mðrvPQ` iÐIm ²"Åén°s0]0$g`às 8`//0Pv0s/`0°P"ë· ¸cÚZP¦c  Z• ’u0œsððò`$0s`Ð/vðÐg€‹ð°$0s€à/ð@ 0En`0]€Æäp‹þ¼É«¼"Yi°¼Û nðs0n`,!/vð0€‹ð°,e]]P]й×v/!Pð¼ýë¿ÿk!m ²sðð‹ð$°$0g°sð`gðn€°/và$vPpÕ]0s°s`ð‹à]`À;ÌÃÉÛ=ì±g]àà‹0Æ´n 00$°]°nà àðv/]5Ð/0 v€/ÄsLÇkIPǾJ/P!nРLÒn!nppsðnÐyìÈÌ«œ«/0”ŒÉ™\ÇI I ÉŸ Ê¡,Ê`iI0ʧŒÊ©¬ÊÙ«ìʯ ˘,I7Ë·ŒË¹ì¿riPº ÌÁ,ÌÃŒÉ;libjibx-java-1.1.6a/docs/tutorial/images/mapping-typenames.gif0000644000175000017500000017050310350117650024273 0ustar moellermoellerGIF89aLÖç˜ ÿ"""&&&ÿÿ222333€€ÿ777""ÿ‰‰DDDHHH22ÿ33ÿJJJKKK€‘"‘PPPRRRUUU‰XXXDDÿ‹[[[\\\HHÿš3šKKÿŽ```PPÿ"‘"dddfffUUÿhhhXXÿ¢D¢YYÿ¤H¤\\ÿ2š23š3ppp¦K¦qqq``ÿddÿffÿwww«U«{{{D¢D}}}H¤HqqÿK¦K°`°P¨P………R©R³f³wwÿU«Uˆˆˆ{{ÿX¬XŠŠŠY­Y¹q¹`°`……ÿ¼w¼f³ff´fh´hˆˆÿ–––™™™q¹qw¼wĈĖ–ÿ£££¤¤¤™™ÿ…Ã…ªªªˆÄˆÌ–ÌŠÅŠ££ÿ¤¤ÿ͙ͯ¯¯È±±±ªªÿ–Ë––Ì–Ò£ÒҤҙ͙¯¯ÿ±±ÿ»»»ÕªÕ£Ò£¿¿¿¤Ò¤Ø¯ØÀÀÀٱٻ»ÿªÕª¿¿ÿÀÀÿ¯Ø¯±Ù±Þ»ÞÌÌÌà¿àÏÏϻ޻ÌÌÿÀáÀÏÏÿæÌæÌæÌÝÝÝÏèÏßßßÝÝÿïÝïÝïÝîîîîîÿ÷î÷î÷îÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!þCreated with The GIMP,LÖþ1 H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cÊœI³¦Í›8sêÜɳ§ÏŸ@ƒ J´¨Ñ£H!r„Ò‘BI£JJµ*Q X)´pTˆB¡†z¢PˆbV L)Ü@ …¢PSJ˜ Q(IJ¯ß¿€ L¸0D-zô @ÀQG )ôpÔÃE-z´`¼%!˜õp„ÐQG˜tÔÑá×°cËžM»vJv’°Æ%Jv(méa‡à–[(ô dç·J[zØ!¸¥Ç–BŽ °#’Žþ’éÁĦB˜Ødç·J[zØHÉ%;ìØ9d‡’À-=0A‰@”ØAÉ=ØaØ‚ 6èàƒF¸vÔv $vD$@v x€9@ ÐCAØ1#0I xàŽô€h€~8à!v`bvPV9`&@A8‚‰8à!vH¨æšl¶éæ›à @†è%Ð&[Pˆ@ô`úÀ„@ ô€É"=€9àÁP"P=`€˜Ø€~0!P=`bþv`€@v`Ç‚ % ´€‰0!P=Àiì±È&«lƒ´ h€~ „&-80=Ø€~ „&-P0=€aÕBŠõà˜`&v a…‰Ø Ù€-P0P `baµìÄWlñÅ`Ç@€€~ „&X DAv a… VQÐCAØA=P@¼=l v`bú0V˜Ø€˜ ØÕ@=€‰ „Æ\wíõ×Ç`Ç@€€~ „&-80=Ø€~ „&=$0þ=€1@!=8`v`bú0V˜Ø€˜P&v`G Ô‚˜ØÀ@Xmú騧îLèçO a…ÉlÉô`ú0V˜Ø€d´@À„~-Ð&vÀ„@dl v`bú0V˜Ø€˜À&` [`R=`ba¥úþü÷ïEmiKÈ`èÁŠ@<ÐõÀЂl!hzPÀ[ÈÀ-`vÀ„  +˜°쀉´%°&z@ PþvÀ@°ò¿"ñˆH|H!ì00"ú±H!ìPGØ¡IÌ¢·Èň8@1 %ºHÆ2šñŒ*iVZP4ºñpŒ£çHÇ:RD?)D!¢ŸèÑŽ€ ¤ '–+ I‚•A:ò‘tÑz¼ä%{@èQ“š´%@IÊRšò”¨L¥*WÉÊVºò•°Œ¥,gIËZÚò–¸Ì¥.wÉË^ÄH€#z À=h €8p„ÚBLô -ÀàP”pÚB0Á—èL§:×ÉÎvºóðŒ§<çKJô€=þH°& ˜ÀŠ@z@&ô€-H%z@`= z@LØ” €0aP ô ©HGJÒ’šô¤(M)-í 8B =&ì;`+é0у¬`¢V0Ñ `¢ÀD!°…ô@ d€TJÕªZõªXͪVSJ‰ ˜è0±XH(€‰`%˜ð‚Lô€˜è’€0Ž @ì°ÕÂö°ˆM¬b ë Ø¡HZ° €(D°… mI¶° \– À@€-8‚ þ€˜ÐƒÅÚö¶¸Í­nw[ËB8"•Žp„*{Jl¼M®r—ËÜæ:·”dH°…çZ÷ºØÍ®v·ËÝîz÷»àÅ­åI ;PBò¤„(¡ÇS:B?… %%ì@ =Æ“v „ÃËßþ~+ò,ì€yvÀÊ)·@P€–…€°‚ 2PÀ`g!`¬ˆôà ±ˆGLâÁ´Ôã<àŸ²°%¡˜Tb¥–p„bì€`©ìj G(v D‰—Ìä&;ùɧtà8 @!àôm¡<Ð À˜èAþ[(€ $À &(á´e —@ "@0€ €`ÂúÑ&z€ ý`‚-€ÚâLÀ˜ „&ô  @0A $€[€@`‚ z@xvÀD0¡MR¢p ¬¤ pz@ $LÀ%0Á‘¶ƒ@z€ ýx Ù%àLÀ”p@ÀLô  @(A` ˜€@P‚@0Axvè&ôƒ‰-€ PθÆ7ÎqvR¢è@þz@ôŽ &z@Lô[`R€-0…V0Ñ0¡À„@ x@“= z@G= &z@ô-H%¶Glá,šl( €€˜è0al¡LÀD(0€LÀ (à€-H%¶GP€vð€NÙP°&°"G= €°…B0vÀ Á„-œE“X!H(€‰PÀØB!˜ P@ - %˜Gô€èZJlŽÀ`ØA“vp Ññê[ÿúØG¥þ@GD1° á¡P=&ìv€‚Lô€˜è0Ql!= I=@˜ÐPåG˜ `@dŽnš„Ñ€ =@˜@ À˜Ð0X v Ð`€ àAv€ª„—„QåG”@@L€ ”@@Làá¦IàÑ€ =@”@@L =@˜``ŠAvàAv€ XaJd}nø†p¨q”ÐИ `à € =@˜Ð€ [)þ˜°P˜Ð€ =@‘=À” I=@˜Ðà € =@˜ `à@ A [pšÔP˜@ 7”à€ …ÐŽà€ =˜à˜Ð € [)Ð`€ @” ”€ªÔP˜ð˜€á € =@…ÐŽà€ …ÐŽà°g¡I=v ”Ð@ @…ÐŽà =˜à-˜°PŠAv@” ”€ XAJŽ@ `qø‘ ’ æ` Ð`Pà!P=þ -ÐИ°pYp° @[ààš”° @B…=@vG@`§D OÐ @[Pà И`mA˜à àÐ Ð`°Ž@—E©D 9@—E…Ðà!à ИPà Шä@ m‘ðà ÐamAŽ@=€ Ð`p vЗE Ä= ’ÌÙœÎ9OÁ5=…à˜ÐPŽþJ=”°€JÁeJŽ`«äv ÁuIvàá…@…@ ¥ävKŽ`¤\aŽ@vàªävà\aŽ@ŽPQ”PJŽ`ÏY¡z¡F°¡¡[ Jd[€¡&z¢(š¢*º¢,Ú¢.ú¢0£¥D v@ zäK”`” G­äúQ¾äúQ©D v@ zDKz$úK”`” G2:¥TZ¥Q`êK…v ¡­´@àK[@@©T`JK* °T`j¥zº§¦DŽ I=@°Ôþ bàŠNàŠñJJK=@¦¤¡ªŽ  Ô0=@¦¤GÑ`J=@¥Ž v@ |Úª{êŽ@ À=@=€ Ò€ à˜@ -)@=€ à˜@à!`”@= IP àИ@”@=€ Žn˜Ð˜ ˜Ð@ @И@à!°À˜@ ° =€ ú¡Im¡ àС¡˜þ€ à˜@ @КD À=@=€ mA==€ *”@=àá&=€ úQ àИР@  @И@à!mAÑ@àà˜€ =@=@ @Ðј [@Lઌ£”ÐÐa°…À˜Ð@@và @˜Ð€ -@”€ `=@Ñ€ =@˜@``-”°à—ÔÀ=@Ž@˜Ð€ =@ÐÐ @ [Žþ°ª¡šÔ°L”°à˜@`ð°…À˜Ð@ L/@LЀJ[…à àd€ =@¡¡˜Ð€ =@˜Ð @ [|n˜`°…À˜Ð0d[` *-”°pÙKšäd€ =@Ñ0=@A``˜ ¡Ñ°L)@˜Ð =@Ñ @ [Ž IvàPûÅ+j @Ž ”@@L€ =@¡¡Ñ€ =@˜ ¡Ñ0=@˜Ðþ€ :àAvpI=@˜ÐPåG˜ `@dŽnšÔ€ v àAv€ *”@@L€ Š v @˜ÐJ LPåG¡¡˜Ð€ =@˜@”/Œ ”@@L€ =@‘@[ *àA`nšTåGÑ0=@¡¡¡¡Ñ€ v @˜Ð =@Ad Dà`<Ð(J =@=€ …ÐŽà€ =˜à¡¡Ñ@ @˜ÐP˜ð=˜à˜Ð@þ @˜ ¡á@ A —Ô€ =@˜Ð€ ŠAv@” ”°/¬I=˜°@@ A ˜ ¡Q=à˜Ð € [)@˜ÐJ-pY”à € =@¡¡˜Ð@ @˜à@ A —T=à˜Ð€ Ž [ 0*@” Rðšä € =@Ñ€ Ž€ =˜à¡¡¡¡Ñ€ [)”à =˜à@” ”pIŽ@ `}Ü'ê`…-€ vþЀ =pY€ vÐ @[@ úÑ€ vÐ @pY Ž@`—”° @B…=@vG@`§ÔÐŽ@`=pY€ …-€ Ž@=° @[€Jv-€ =B…°pY m‘°Ž@`—Tà И`mAA °˜°pYPŽ@`¦Ôà!P˜`mA˜`mA˜Ð—E˜°pYP= þ-`m‘°˜`mAŽ@`—Ä=€Ü®¢vàá…@JÁuIŽ`á…0ÁeJŽ`©\¦ävJ=…àávPJvàQ”@KÁUJÁuIŽ`¥dŽ0ŽP±@ ¥ävJÁuIŽPá…°J…à\—ä…0Ž`‘þíàeººº%–îê¾îìÞîîþîðïò>ïô^ïö~ïøžïú¾ïüÞïþþïð?ð_ððŸð ¿ð ßðÿðñ?ñ_ññŸñ¿ñßñüÞv@=`ÑþvÀJ(Ÿò*¿ò,ßò.ÿò0ó2?ó4_ó6ó8Ÿó:¿ó4=@Ð=ÀóFôHŸôJ¿ôLßôNÿôPõR?õT_õVõXŸõZ¿õ\ßõ^ÿõ`öb?ödOöÁUöhŸöj¿ölßön¯I `o?÷t_÷v÷x¿òdà±J=@+ß òv@ yŸøŠ¿øŒßø¤äŽ ”@v@ À˜Ð @Ðv€ à”ÐàP=@=€ à˜@à!°@И°ÀŽ¿üÌßüÎþö”ÐÐÑ€ v[PL =@A``=@˜ÐÐ@ ˜àv€ =@Ñ€ =@A`‘€ÒŽ0Ùq@¡&† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™’¤5¤DÀ&J`°…†(4ìASŸö À°L=(0ôɪì0$ÀƒJ®]½~VìX²eÍž=I© {´`X¨‡#ö€É&Ÿ { äB …0Q¢„©LŽz äCŸ = Ä’# ìtþZôhÒ¥MŸFZõjˆŽ(ØqDÀÃB$hÁÐU= ÀÐÕ¤8@€Lv¨°C5-=~SÀä( ì0éaQüxòåÍŸGŸ^ýzöíÝ¿‡_þ|úõíßgØ¢ÇC;Ž:*D"GqÈ;r¤†¤È;ðƒ0B '¤°B /Ä0C 7d¨J81DG$±DOD1EWd±E_„1Fg”;()¤ˆì°¢Õã±!Ù£ÄJrœˆG†rŒÈ yˆGˆ(±ƒ’!âñ¡Ëã±!Ù£ÄJr¤±L3ÏDSÃB°Ã'ˆ"ŸÔKþ€‚† €½B°Ã§ˆ(I Ð0ñ)¢-( €‚‡ ¢B°Ã'ˆà!Ÿ$¢„&J€‚† €½B°Ã§4OE5UòÈp¢(H¯ HÀ‘z€¨ ÊQ½(h¨ ÚÀ‘[#²€B(q“'òé¡(ˆGn…¨ÊQ"2Hà¡(h¨ ÚÀ‘[Ue·]U¡ G(q ˜è!(è ”*0ÀL(iH!(èÀ( Pì „è"p IÀzÀ €J( €0q„G1é1þ¡Ä`¢(€Lz ŠL¨¢ *$èG ŠG ŠL( PÖ €zÀ„€ JH&ê!ÚÂ|ê* ¢„è!ŸrĪ(pDg;ê)q ˜À¤(€‚¨¢€!ª(ÀLZhG0qĪ(pĪ(À„`  L(q ˜ Ä`‚¡0áÑ]é§—‘’è!;Ø¢&0é‡( À@ “(À¤(ÁÄ;z  ¡(À¤ 0¡€;<°C @‰-Àéþ˜Ð8‚ ˜è0Ñ 8 hA(±8b E¡Dì€-‚ = z@€†ø=À˜€B8BrŽ &z@L´ ”èZJô€ ¡ìà $€[€#ì€-‚ vÀ Á‹8‚ àC|Â$€[€#0ᆴ ”è¶BˆØ[(0Ñ0¡`ˆOÒl (D&`¢  D(ЂP¢``d ”Øal¡L°¶P&”Ç•¯„e,e9KZÖÒ–·Äe.ué;$€Ž`%(þ0= €C|ÂP= &|âP != &z@Lø¤!¨ ìðP= @!• `âV°(N;8Br¡@&ô€˜èâLô˜°ì°bÀ„O0у¢`¢`ˆOBpÚ˜@ €LàŸ0„á´&|Ÿ`¢p„ä B €LÀD(€‰P€!>aH€ ;@  <€ Ÿ`¢EÁD(ÀŸ0„á´%(0˜°K¶¶Õ­o…k\å:×ñP¢è& ÑþGx˜è0á†ø„!=%<@L´€…ÀbzL8=%<@Lø¤! %B‰‡ô€˜è<Lô€˜¸ì€ ¡Ä@‘BôÀ@(€‰P !>ÁD€‰- ñ@0Ñ `‚ À„|’Lx€ ñ C<@J0„…è#<€BôÀ€xì‡ø„! %B Lø„!H&<@-€"…è#<Lô€˜èâ†ô˜ØRÐ;ô˜ @0áŸ$ C|€ ¡D!zàþ =p„@W÷ØÇ?rsé Ø¡p@Z€ ;P…˜èÁo(€ ;P%Ø% €GT!&ì@• ¿¡C‘PvxH°…  ‘€PÀ8B@Ø¡"…€Ђ` À¶@ßP HZ‘ P(¨’´€* Àzð ` `‡BÀ hA!à€´À"[p( i ü†…pD@䀿¡@!È@•` )€`"ØB@ ü†…è€þ ˜h˜@ª$€- J°…ü†˜pD@Ø¡p@ZP8 -rÄ%>qŠW<®vpDCQ‰ è!ްCCQˆ† ˆ"ްƒxDGØv²—=È ÀÌv´oaío‡{Üå>wº×ÝîwÇ{Þõ¾w¾7Ä„°#‘KI‚Œ ábøYZ‚–üCÔwÊWÞò—Ǽ.ñBÄ ¹TC &òlþ Ù@ fɈÂóI€2?{Ú×Þö˜€$ªP…]zž@»wÈ(`JÜÞùχ~ôÇó< À#6`‚TáˆÁ|FlÀ¨&,a‚ <À ’0¼áRLþ0Áb€ KÄ`Pƒx€ Ø€ „0ˆ `„ 0¨‚†ð¼ˆ`„ 0¨I0ï‹Lø>Ï{|B°„˜€¨K0 x/ÀK0 x/À„*ÀÃkJ ;Ø`éÂ!$BÚ«‚0*xL„;À„*ˆ*x5ð‚`þIˆ?B„;À„*ˆL „PFð5ð<σˆ*˜/¨‚ À„$˜Kð‚„˜BðB¨‚0*xI¸L¨‚hÏÃIÈBL„;À„*ˆ$ØK¨‚À„$ØK¨‚À„˜BðBH‚ °5x€8x5`/ÀBx5`/ˆð†° €B Â\ÔÅ]¼»Ý‹BxL`Ü€¨‚ÀBxBPƒ3ŒF ÆÀKˆ˜/„,„ˆ*ˆL¨‚ÀÏÃBxBð¼†Ø½ „`bŒ†ðÏ{|B°„˜€¨K0 x/ÀK0 x/À„*ÀÃpLÀJp€&(„pèLJ …=09²ãЦ˜b¢D!-)ð€©Gzô(H&JØ 0Jà@”( ÄÔ“C””ØÁ´…“žJ—2mêô)Ô¨R§R­jõ*Ö¬Z·ríþêõ+بUb˜¨ò“¤;˜ªÄ¨ò@—Œ$ªKHÒLUb`"ô@ #/jbŽÁ´Ê/U&`J2Á’—’bL äƒP•&ª°G Là&–ÄðÀ^tؘô@&”PL’¥`R[$Ðd‡#ÙÁ`b €‰ØI(U*J¥bb P€I`R¥ P€R©NQB€#J‘€.:û,´ÑJ;-µÕZ-Œ1ò&>l€I1Tñ&j<ÀÈR>l€I1`ÂH’øð€A2UE ˜T&Il€‰0BXþO0Æ@È>l€I1ôDXS>l€I„m€‰1`Øø&„õäÖ dH’øð&ŒT!‰tØ”x@&…ôàˆx&=P€R=0A‰P‚%[”Z*S-$€É¤&[P&=€‰#(•ŠR `²)P€I`âA˜ô@J¥:ÕC =9BAv\û7à >8á…³¸A1ò€U!F!‰$€¤H©H!f¡n!’#ôÄP€Š¨Ò‡Ø%p!¦¡®¡´8$€# %€€&B8ô@APx&€ô@APJ@8P%8Äl0n"'v¢'.%ôô€Rô€`BP€ô`‚#&ôôl@!ôl@!`B© DôØPxJØþP@!|¢4N#5>¡$8BOP8&Ø`B! ô`‚€ô`‚€`B© DP&ôlAô@Ox@5¤AdRB@ D´JØ`‚$&ôô`Â@!ô`Â@!`B© DP&ô`BôP&8$€ ¤Nî$O~’#P€88J$@P€ÀôP ¤$´&ô$´ÀP€Q@!$lAÀ€`ô@O¶¥[¾%%µ@@‡¡Dþ@!8Jô‚#xH%lÀ¥a&bþMPˆ”ÊôD©lÁ‡A@lAbf¦fn&gv¦g~¦ª’Q‚P‚*yˆC ˆ*a‚C„%Ø%¨R‡8‚C‚ŠP‚P‚*uˆC ˆ*¡„C€%Ø%¨hg–ŠØA©xHŠ” &$„H!€”J‡l¨H!€” &ô@PÀ0EŠ” J$€H!€” ræç2‘#¨ˆ*ý8IxHЍ&ôˆ8I|H©¬8IlÂôSô ˆ*¡Dþ@ˆ€#&Ø%è§Šf’#P@88PB8ô&€€`B`$€`%8Ä,$€B8ô&€%P@`‚#¬&ô&8&P‚$08&€`B€P‚$0&PB €@¥€ô@AP&ôPx&Pô¥€`B`‚C0%´8&” JB8ô%8@`%8@8ÂZ¡D`‚C0þ´€a8&€ôPx&P‚$0%´8¥ D€Pô&PP ØA`‚C`Â4Á¬Á,Â&¬Â.,Ã6¬Ã>,ÄF¬ÄN,ÅV¬Å6%ôôJô8@€#&ô`BÀ0¤l@! D©`Bô`‚%P€0Eô8`BP&ô8@@ $%l8Â8SØlA!0AP&ô`BÀ0hlA!0&´Pþ&x€PØØJ” &ôl@!´@P€#PØØÁÁ¶P&x€`B© „#&ôØlA!0&ØlA!0Á8SP@&ô`BP@À0‚À´P&x€`€x€`B© DÀ0t@P€#`€x€0…8ÂŦ¯ú®/û¶¯û¾/üÆ/ÄÚAP€# IP€@! `B&Ø€`‚€ D©`BP&ô`B!À$@0EP&þôB°P&ØP@¡Ù#¬SP0AP&ô`B&ج0&”ŠR”ÊR” &ô`‚€P@¡ÙA©(l©,E© D! P0&P0#¬ÁnaBP&ôô`‚€P0A©,E©(E© D&Ø4@¡Ù&”ŠÁ’x€üF²$O2%W²%_2ÂRB@`IP€€$&ô`B&l¤`Â@! D©`BP&ô DôPSô`BP€þ$&ô`IP€€% %lƒ1E!ô€#xôP‚P&ô`Â@ô€#x`B @!`%PB©,E©`B&l‚% %”ŠÂ¶&Ì3&” Jx@`BP@!ô€#x`B!ô€#xlƒ1E0&ô`B%xô`€*õ€#x´&Ì3&”ŠR” Jô`Â% %`B©¬#P@Ø&GµTO5UWµU÷„#P€$@P€@¥@!ô$´@@@ `þÂP€QÀÀ$l#€0EÀ$TP BôØA€l!€$@ ØAA$lA@@ 8@´&P‚8 ÄP€Q@ @@ `‚#$P€€QÁ.%8Pä8B¥@€$@ `B!€$@ 7J0Pô&ØAA$T$´&8@´%8PØA8`ÂP€Q@!ô$´€#$PØA84ô€xþg¸†o8‡w¸‡8ˆ‡¸ˆ8‰—¸‰Ÿ8Чø‡[QOô‚#`B@!8†÷P€†[‘x;‚t¸8JXÑR‚#ô„8‚R8‚px!8‚R8‚ˆ¸#ØÁZ‘RØ#(…8†;‚8BOX‘R‚#(…8BO8‚tx!8BO8‚¨¸ß9žç¹žï9Ÿ÷¹ŸÿyS”Ê D©l‡“A@l 7º£?:¤Gº¤O:¥Wº¥_:¦gº¦o:§wº§:¨‡º¨‹·#8D!H:%Ø%¨R‰S‚P‚*·C „*5…#8D!,…C0%Ø%¨‰S‚þP‚*-…:²'»²/;³;úPP€¤ØA©”x!€”JSPB°ô&”JSl,EPSØA©x!€”ÊR$€4;¾ç»¾ï»²“#lx©L:8I˜88I4…@!P‚#`‚*w©,EP@S€#D‰€#„RlØ%ð;É—¼ÉŸ¼Ÿ;$€#I@ $€@ôD©`8&€`%P@0$€B8ô&€%P@`‚#¬&ô&8&@8P@!$€@`þ8PPôJô&8Sl@©ô@APJPôJ” J8‚8ÂZ¡D`‚C@8P&B8ô8P`%P@`B`‚Cô%€l0Êß>îç¾î7%ôôJl‚#$€#&ôôD©`BP&ô`B $%l8ÂRô0A€#&ô`BP€ô´@P€#lƒ1Eô8`BP&ô@PpÐ@‹”¶p„‰aC‡˜1`ÇC ¶H@þi G˜.2l‘€R [.^|ˆ©&=`rDS =(8èS‹”¶p´S í8 PˆhS§O¡F•:•jU«W±fÕº•kW¯_Á†Ýj'G ôèÁ¤P·^ÄÔƒ¦0Q°€‡=(`êA¡Û0©¥`¾ì8¢Hqe ˜zP(d˜&µì ðØNT;^dHá±L^ÄÔƒ‚£ÉvVö €©L… SPKÁLÛYI‰€£†dx;zuë×±g×¾ûuJ=ô`Ø‚J`êA¡áEL=Pò@“”Rz؃þ¦Ø&ªLTá˜PÃñlUˆ#ª <jøóJ’0F`ÂEØ&ÔðF¼/„x@€ 5<€>Ø&ªƒ$L€˜°„%0Q…`B+ñÁ0Q…Óm>ˆ&b°Lø ˜8]C|0K0ÄU„€ FTA>xQzІ8‚ °C´qŸ{Ý×ͰC!à€´vØ 0уòPvØK°J8EöBLØa/ @ÊC†8" ìð-8ÊCþB8" r@òP dØK` –&z€ì¶ À-à( <( ¶€ʃ 0¡€ È`/€Z`/€¶ ʃ0Á(ì À   Z@j6  b€`àœ&€ªà6à’`%ªàÎiäàL`’@j,Á  6À&  0aª áfà6à’ªàÎi Á €0pmV¢ àœ&À pm&@ î×6`f`& B6àbàÌàL`’áL`’`%þ!˜ voI±ÙÆ¡!¡~&^Âì !¡"^–Æì€mÁ~&^Ø&^Ø&^"^–ÆìÀ!ìÀÂam$A¢ €$ágžÑ!A¶F¡!Áˆ¢ €$¡!žÑ!$Bágž±!žÑ!žqi$‚$Á!Aˆ¢z`}2 r ² ò riNG òtÔ !Ǧ(")²"-ò"¥&^ÞFf0²#=ò#A2$Er$IRjÀÞ¦oJr%Y²%]ò%a&ÉÀb (ndfjì€b²'}ò'2(…r%þÀ‚ÀÀ€ !z`/(<ö‚Àz`/(€! (€€öBV€ †2.år.é².}‡z€zÀ!zÀ0¡(Àz0ÁÈz€z¶€  z¶€  0¡o¢€ z€ì(<€!ìÀ( ì25Us5Y³5€¡!(z (À Á0( ìì ììú†!z€0¡( `  ‚ À\ó;Á3<Ås$)¡ ¢Z€!r“ìþ0Áz€z0a  z0a  0¡o¢(z€0!z€ (ÀƳB-ôB1 ìÀÀ"z€ì¶ À-   0¡  ¶€ʃ !` €Ž€€<˜ R3I•tI™´I¢z`iâ…!z Á¢ Ajz(a ÀIÉ´LÍôL]²(júf ¢o¶`jÈ  ¶Mñ4OõtOù´OýôO5Pá&ám"Áü à¦ü Õhµ!õm*Á*P™þQ²ü õm*Á*PµTM•%C ÞF B`Bnü U1¡B BB !$ Þ&ÀR•i$2ÀRõmü UO5Z¥5uÜ à†Pã&Uã"A ”Ü$È•\• ÊU B \Ùµ]ÝÕ] ¼õ]ÙU €^ÉU B_ù” ð"Á[ÉU B _ñ"Á[¶aöa!6b%vb)¶b-öb16c5vc9¶c1!B@".B`A.”B\àeC\”àeC@.Bþ*áàeÅ ]+à 0!UÉ5$à@ *á$²*á$² QÉU 0Q1x""á^6"á^60!@$è ”*á$² .@ ÈU 0QÝ5$àÀ[ À0¡.@ ”@ ”Bô¾@.”*à@$`B@ 0!ÆÖ0A 0Q1A $`B@ Bôü.à*!”€\•a¹·{½÷{Á7|Åw|É·|Í÷|Ñ7}Õwþ}×·”`”€\• .@  Ü” 0A @ ²tÄ  È5U1A  ”`0Á BÀÜ• 0ÁüR•\#Á 0A BÀ@ ! 0Á@ ! Ä USõ]%  0$ ” x@*A B€\C`üÀN@*A  üÄ ²À@ ! 6Ü” ”Ä  üÄ ²” Ø5À\ Ü” 0 0Áü@ B \Å@†Cà]• Ê5À\À” 0A B€$ Äþ"Á{19“5y“9¹“=ù“A9”Ey”I¹”M™{ý@B ÈÕ[CÀ ôVB”0Áüü€\S” 0A BÄ@”À]Sµ]S•\a–C B 0¡B "¡wÝ5 À0!U1A d” È5UÉ5^öeý B *!`²aa–C@ üü B 0A B€]S•\a–CR•]• Ê5z÷]• Ê5UËU B” Uïüà”ez¦iº¦mú¦q:§uz“+A þ@ 0Á[CÀÀ$” 0A Ät0A  È5U1A B” ÈU” *Á]y`*¡0!UÉÕ$” A "ÁA "Á@ Ù]½Õ”0!$\ U%\ È5UÉÕ ȵA "Á ” \Ö$” ”0A €P• \0A "\S•\]@0A Bx`ÒZ "Ä@ßU "Rµ\•*ÁBÀ ȵvº»½û»Á;¼Å{¼99BÀþ$@ BÀ @o ”$x@ @€0A B`  `Ä@@ "a`\À]+á `BÀC ”ôvÒ.@x.@x _€0 Üàe%`xàe%`Ä@ <0!$Bü à$€.@xa•ôvt$x.@xüàe”ÀC”ôv¡.Bõe€{ýàe@ <ÈÕ^V€ $Bü€¼ ½Ð ýÐ=Ñ;9"¡\•þ!0A  "{•*A €^#Áè•ÑÙÕ"]ý 6™ÑË•Ñù5ü€]ý ÊÕ"¡{]!ØÕ"¡\#!è•ÑÛ5ü \#!¼7^]#Án:Ú¥}Ú©½Ú­ýÚ±ý“SU È5UÅ {Ý@@Ä ÛÍýÜÑ=ÝÕ}ÝÙ½ÝÝýÝá=Þå}Þé½ÞíýÞñ=ßgºü •”#Q“µ\õ“+Á*Põ½áþá!>â%ž_ü UIY B`B“% ÊUBà“ü U'>åU~åY>ß• Ø"Á[M9U1Y B \þ• @"Á[ý Z~艾è>Ú•@ ”^6”àžC\*!”À]@.B $à@ 0.B`*!”"¡w1A 0Q1$à *!$`ÄBôöe/B`0!$à@ È5Uß5$à@ 0!.àeC .àeCBôè ”*á$² .@ ÈU 0QÅ`²àè?ø…ø¹W B \ÝÄÀ.@ @ ²$ Ä¡w1A  ”`"Á 0Aþ B” .@ €$ Ä"A Ù]•`²@ € ²""Ä?.`„¸ ¦Hn0) Sˆ#ù¹è'’LJB`â!¡’’<$TR"bˆ~\œPI ‚H~ˆI”Å1‰²`ú “Ÿ !=Š4©Ò¥L›:} 5ªÔ©T«Z½Š5«Ö­\»zýêTIˆ .„£&?ü„@Á‰1) IIˆDú†À¤DI?BÄEà'F?H•„À¤„.&?ü`šø3p?0%ê+!Äω?ÅÐ ‘tL1)¡‹IIˆŸ†8ì§Rþ ²T `A¥n¸‹<¹òåÌ›;=ºô¨J`ŠôS  ˜” À$A" *ý¬tTILJB¸€IILCøAàbA¥Ÿ•ÄœFªD˜(`"‰`2ÑO…à˜¸ &J„ðÓDI¹ &J„€I`âÂD`âB?Mô“ TòS%‰(‰ $¢D$. €T$!HàÇtBId‘F‰d’^ù×?U²€˜(€ð€I$ ~%ÁbH°@ ôµ@"(‚P!! àGS, † P!Á (‰ ,&(‚ˆ¡þ}-ÐDƒ†ÈQJ Ð׉¸— ð— ˆ¡Ä !`‰„€€‰ p<$‚Àð€TJ(Ék¯¾þ l°Â.I"@‰±@%˜(@"‘‰OE S‘øaU"•@E-TÔE-PÔ2‰Aù P~D]»î¾ o¼òÎKo½Y‰1‘˜L$†½þþ pÀLpÁËÉE‰È[‰•$’Èr•øQ ÄK]ôÄIErQ"G]„T%~T±r•øQ ÄGQ{pË.¿ sÌΉÂ!È›~L´\"ø1QR•€¦&%%F „p”! •~L¤\"ø1þÑQø!s×^ ¶ÁnDòÔDó"I`I)‚UJ„‘–”$RI$˜$’ÈR¥DI!I`I)‚UJ„‘”!øQIØ–_Žyæ`E‚‘À:HpJ5&\€ `RI  RHp!$"Á(  •„°J`Éb˜(ÉE˜Trd¡„ „ &! Ðt„°J`RI ˜ „ ÄOJ`rRb\€ÀDJÀÂO•„°(á'ùI$.—Db1?Q&.R‰ HYÀ„$°€(!è üPþ‰,J¨D€%`B X@”€ %`â"@©Äü †dAs<ì¡ø“J(aJø‰ˆHH nÀ„B”‰`B !À„B€ H b@@$Ž¢„dA ˆ„0¡„`B !¸€À TB ˆ„Nƒ? @ ‰È&”‚ „`~pÁ $P 1 <@%Ä€€H(!P‰Dp‘ŸLä'<@%Ä€€H`b"?á*¡„ˆá4HñĈ,üD !Jàø¨„  TB ˆ&”¦(Á?ñÃB JsšÔ<˜$‚þHeÉB"@ LJ&”L„.pñÃQ”L(!‰M0˜ø!`'ü‰Å ¥!@À²€ %„ (ùIü釸ÓJAR.êe"? ?ý€‰‰üd"˜PB"±¤T"X@~¢„e"@ ?-àO?`B !¸(&*±€HÅ pOŠÔ¤*u©LmªSŸ Õ¨JuªT­ªU¯ŠÕ¬6µJX€~ƒAUÂÀ„B”‰`B ¨„ B€ , ?©ÄQ”L(!.&”L&~@€ P‰ŸTB §AJ"” þ J@&"ñ“‰üÄ ¨ÄO*á‚Tâ'•P0 ¥úA™ÈO\°€Jü¤˜˜ÈOB L¸ b8 R¡„H¸?Q0 LL(.X@%~¢‚Tâ'•À„€‰H$E <øI$B ?hu¼ä-¯yÏ‹Þôªw½ìej$BàLø<À„З$B !T¾ ,@ ‘B€?E ƒPôe‰€BàPAü€ÔD àà&ü—`B ƒ &"!„~ˆ„\. Hª.€€ˆA !T þ B‚D¸.X€Žš\@<ø‰à²% *?‰„ Aü€ ?ÀeH‰Ä"ñ“,(¡½|ÿ è@ zÐA¡–O©u”HøA©Ô:j$üÀT?D(‘H„O#ᇠDÂ@‰D"® ?\”ZLõC$‚‰Dø4~J$ü”H$")ÈQ”‚¤ ¹(ß~¢„ø‘LPÄ?TBæd/»Ù‰H p t @ @™&pL à˜¨D€% ¸B \JÀ.€€, !X”€‰H,JÀÄE0Q  àÐ\Bð%H`!P\B (JÀÄE"† `"þJ€K~R‰,JøÉD~‰ À%‘XÌO”€‰‹T‚¸¡¸„JÀB LÀ%J@@`0q Tb~òpöøËþ¸®„ „Ÿˆ‰ˆ„"ᘠ! J˜ !€ < •  G¡ J°‘à˜ !€ J ÀP b€‘ §<°•€ .à˜0@¡!ðn€bàT‘p?1?ÁP b€‘€ ñ< • ! §<°•€ .à?1?¡!n€bàpQJàþ?á‰@q(‡sh^~ ! @±‘‰! J˜ !€ !àO~pJ˜ ! ˜!àþä‘°H1G1@¡!p! Jåñ!àO~€ ñ J‘°H1H1?¡!p! IQ  @áàt(ÓHOU J°Jð<0(•à€ J@1˜ P .˜à P ?Q G¡!€ J. ˜ !€ ~€.°•ð• §<°‰€ •P ˜0@¡€þ ‘€ b€°T~€A1?á P ?Q ˜0?€ .bpHÁ ˜à?1?¡€ ‘ðb€pQJÀ? ! ~PI©”Ky‘~€ ~€<€ J€}±‰ !0(!ðp! ‘ àG! °%€}±‰ J~€T àHU €!€Cƒ‰€ ~ € •°b TbpCƒ‰ €!€Cƒ‰àp! GU €!€~ !0(!~ ð•°bþ‘°‘ðY LiœÇ‰œÔâSÔr‘àJE-G ~ÀT‘à> ‰ðb°•pU‘àE-L ~àS‘@! P IÁJ€œñ)ŸóÙlb0bÀlb0bJP ô  * J j L ‘€V ~P |“U•à•À7>u@Á7I ‘AqHQ ~P |“U•à•À7GA-Ê¢-êkb €–à‘U‰€~0IQ  ¡?1I!!°!H‘à‘U‰€~0G!~à¢Yª¥èå‘ Th ‘Jþ>¥!àS ‘~€‰P ‘ð|ãSJI‘I¡!àSJ>…‘A!!à•°¥ ©T ! ‘: €J p˜€€ • €J€ €!p ˜€€!°• €J€ ‘°˜ ˜p˜P  J  J€ ‰ €! J€ • €J€ J€ bp0˜ p˜P !° @1˜ !€ ‘°˜ ˜p˜P  J  J€þ ‰ €! J€ • €J€ J€ •°~  ‘ʲ-‹T•   ?!‘ ‘à˜ ! J˜ !€ < •  G¡ J°‘à˜ !€ J ÀP b€‘ §~€bY€ J@ n€ J˜ !< •  G Y€ < •  ?1˜ÀP J˜ §~€bY€ J@ n€ J˜ !< •  I¡.ð~p!.þ«»»ë‘ Y @1˜ !€ J˜þäG¡!€ J‰!€ ~€!àO~ ‹•°Y€ J@‘ ˜ !!àO~€T~€G1˜þä?1˜0˜ !€ ‘°HQ !€ ˜ !‰!€ J@þäHQ  @á໫Â-[ J°Jð<0(•à€ J@1˜ P .˜à P ?Q G¡!€ J. ˜ !€ ~€.°•ð• §‰ ‘àþ€ J€˜ ˜à€ J˜ € ‘€ .°•ð•€T~€G1˜à P ?Q ?1˜€ .˜ §‰ ‘à€ J€˜ ˜à€ J˜ € ‘€ .°•ð•€JÀ? ! ~°ÂµÌ²‘~€ ~€<€ J€}±‰ !0(!ðp! ‘ àG! °%€}±‰ J~€T àH•pÀ˜àp±˜ Ð ~ € ‘ àG%€! ˜ !0þ(!P€!€~ !0(!p! H•pÀ˜àp±˜ Ð ~ € ‘ àG  ?‘JP? ÔA}ÔâSÔr‘àJE-G ~ÀT~ @ ‰Ô‘A ~`U‘àE-Må‘‘@A-A ‰‘àIÁJ ÔsM×um×½¦•p×{Í×ó ‘€V ~P |sQ|“•à•À7T ‘IU ~P |cU|ƒ U•à•À7>u@Á7I ‘AqHQ ~P |sQ|“•à•À7GþA-}Û¹ b €–àqQ‘‰€~0T%!°!T‰€~0V5˜ U‰€~0IQ  ¡?1I!!°!H‘àqQ‘‰€~0G!~ ÛýM‡n J5†‘Å7…‘J¥!pT¡T ‘JA¡!pT|ƒ J€G¥!àS ‘~€‰P ‘ð|ãSJI‘Å7…‘A!!à•àßE‘ p p @1˜€€ p˜P !°þ Hp‰ €J€ p P !° ˜ ‹ J€  JÀN! p?!€.€ J€ •p€Y€ J  J!  ?1˜P !° ˜ ‹ J€  ‰ €! J€ J  JÐàJ!€ J€!€.€ p˜€ °! ˜P !° ˜ ˜pH!€ J!€ • €J ‘pp˜ ‹ J€  JÀN! p?!€þ.€ J€ •°~  Fnñ0W J°Jðb€‰  n€ J@1˜ !€ J˜ÀP b€‘pJ°Y   n€ J˜ !pJ€< •  bpH1db€bðñJ€bGå ‰?¡!ðn€bà < •  bpH n€ J˜ !J@ à.à?1˜  Y€‰ !€ J˜ !< •  G Y€ < •  ?1˜þÀP J˜ §QbðñJ€bI¡.ð~p!ýüæ‘ Y @1˜ !€ J˜þäG¡!€ J‰!€ ~€!àO~ ‹‘‰€<˜†!P L~øØÐ!¦J!,È"PIˆ†.„Ó ¦D"ðÉÏI?1%’Ð2&%!* ÑàC‚˜” Àä%!0) IIˆ†!F"ð£ò¡ b ±Ô@‚˜bRS$”~œ&BÀ£!AJ`òƒÀÊJ "5tƒÀ…S¼þyõîåÛ×ï_À&\ØðaĉWR²@‰@ Tr!“’ bR‚ ’‹˜\,¨$°ÒC%!0) áB&%!0)Q * ¬$† A••$\¨B AJ`ƒ ‘ÞDJ"¹@ P L‘0‰A Á!AL.TXIÌï*]HÀ¤$&%0E¨¦H˜>$ˆI LÄ@ %¨Ä…0QL"ÁÄ…*¨’½ü@à!‚0qaJªD ‚0 AL\1ÐS© .¨$H 0DTR‚" A?rH"‹4òH$“TR°HBð?þà%hiDÄA²¾I‚ĈDB@À‡$X@ (–HD%Bð*$@ üØK‰¥ÄA²Q àa¯D¸@òC¤0©d1#ÉB¨CB@À½”@ ¥ñC¤òC¤”,ÄA²t@@xÀÄ‘$X@ ?DZ“H$@ üÐKŒ A LÄA²êðCŒ$ ! ‘$X@Œ½”XJŒ$ !%TŠdHÊB‰%ûõ÷_€x`Á"‰$/ƒŠÄ¾ Ö+?SD"ñËHŠ$þÄX ’¼"ñÃ/ƒŠ$‡"IįD"iÈ`‡"IÄ¡Hü ¯HüÀËà›RD"qŠ%z6úh¤“Vzi¦›vúi¨£–zj£ Ci1ƒj®»~š 1ðR¢¯Ë6ûl´ÓV{m¶Ûvûm¸ã–{nºë¶ûlƒ“N$‘»ûöûoÀ|p–À¤ *|qÆwüqÈ#wÊH#¥÷îËJ$÷üsÐC}t•" A‚Hªd?¸À$ .@@ ‘B@ÀLD ”)àB¨ä‚DCŒ² }zê«·þú³+Qb%RÂL”á%À$þ70Q"%# Q1²@ LH‰²Pb?  !p@üp${ d`ø@øA!ˆDC*±€H`‚6!ð0‘ˆ–H J@&ü€?(˜ðü€ ‚D !À„BˆAJhˆàQˆC$"á*¡„(A Jà@h? .&”% b@@"”€Lˆ‰ÀA¢„`B !À„”…J`"!€¨vG<æQ{äcýøG@R‰Dü‰DB PBü€1(-Y€ ðJ@€À1„@2þ!H„  ,€ @À\€‰,(a³¤e-myK\æR—»l” ƒ D HD$¢$"|Q*!ðRšÓ¤f5­yMlVS •ð AÄЂˆ¡/n$ †l¦Sëdg;ÝùNxÆSžó¤g=íIÏF4"i“@"¡´K âùÌK?ÒϤ]—Èç^úéÇK âùLÚ%q‰|ÞS£åè;„¤Í‚Ò¡D|—B² 4d@HZ#4€ˆîeðc#4€ˆ&­@ÄG;zT¤&j˜„Òò¹´.M“èB0ñ ¬à!]þBCº¥i`UÝK4 —.Áh]B^40‰ª ¤ @0š&QU¥æU¯{åË$€°‚IhÀ±h  ˜Ð€€ %4X&ºÐX `B+°€€‰KØàÃC.a Ø@ÀÄGÒˆØ@]¸„ V 2`â6XÊ0‰~öS ]ÀD?1a+h`˜˜„  „IØ ±@À4°‚h@@ø€º€‰KØ`(Ã%l° ”A ]ÀD?UÒˆØ@UÕ4°L\Â+Ð@º°‚¡ ˜‚°«8¬Àè&.a Ø@SXþÁ€ÐLL"¸ˆÀD0ÑOLtaB€ ìj°&4`ƒKáè‚@º€‰~òUÇ;Îë%ºð.¤ @°A40‰?`¢ @ÀD40‡2h` ˜C4Ð|]ø@ºðL B—ÂTb…\K@&>*Iü]"40‡F”ˆÐÀQ†9|ô£NYÁ$4PLXa—謰‚Kt±"¬àsÐÀ$¡94¢ ˆÐÀQ¾Lâ˜èº 9”A@„æÐˆ2`¢ @p>€ˆ%àá˜è0a…\K@Dþ€Ð9Né„ b ˆè0Ñ Xa—˜ƒ&Áct§û¨ˆX&!ªhvWLtA˜@„œ L BˆÈG1Ñ `¢ @ÀD#40‡tA%}ÈGÒ{á@ÐÀÊ€‰KA(Ã$6¬’F|X&>Љ.]‚@>* 4¶±ˆ¸4ð2\ø@øÒ{¡ À"4€ˆKA(&º‡|T °70ñQ‡t ™Ä†Ò 4ä£ é0Ñ…ê\ˆPwÝíNÏKtá]ÀDU€ ,a˜èþ0Ñ `b˜‚01 4B ÅD€€‰.A +èB.¡+| ˜¸Ä%0ñQ,a˜èÑ…I,A˜hD&± ÌAÚ*©*"º La˜XÂGW€‰%A È>p \¢]˜Ä4Ј.Lb àËV€‰.¡ ÀÄ4Ï.Lb ÀD4€‰Iä£Y 0Ñ ` h&Jß À„IÀ„96§è À„IÀ„jˆ.ЀKX X‚¸¸„»Ë@ l§IDX.DÐ!Ðìú€Fè X °‚.ЀÐ+À„9‚ø @þ˜ƒø€9˜„ЀX•¸Ð Ð.‚‚Fè À®Ð °°Lh °°‚½ø+À+Ѐ2øƒÆZ¸‚ÆZ˜ƒ.¸A À„IX  @„FÐX+h °°¾è À®˜ X °Lh °°L@„ÆúLè‚Lè À®h„K°  è§Æú€¾@„Æú€.¸A Dh¬ø€1X  @„ ÜE^l§I˜„†è h„IÀ„.ЀF˜„¾è ¸„9м˜DÀ‹_tD˜‡@„Iè™_lˆ_Ô‹I@‡þ@„IhD˜¿øE‡h„IpD˜„†˜„FÀ‹_|ˆI@„†˜„Fø‹Ih¼øE‡˜DèE‚,H<¢„¨ù¨9ˆš¿øƒЀ˜\ªH‹¼HŒÌHÜHŽô‹BpGèH‘I’,I“ïs?Ç2ÀJ ð€?ßó9ø¨98tŸƒšø¨9`t(þ¨9 tLÏtMßtNw G G  Ø?Ÿ„~j„>¿D¸„|êéK@„KÈ',ž„~j„'¾D¸„|R‰Iè§F˜éK@„KÈ'õí'È'§˜„~j„‡è'•¸D¸„|ºéKþ@„Kȧ‡øÅNïvoÿöžv¬$ƒ† ?Ÿ ø èóFÐDø¨žn @„Ââ9‚‚'n @„R‰9‚‚™n @„rŠK°·.À„rŠ9‚‚‡X P‰FÐDø¨›n @„zˆ@p/y“?ù)î¬ì ÿƒIxâòs ˜„ªrŠ.+î p ˜„ªrâ.&þ((Ö€I¨*¼ø(-î p ˜„ªr DЀF¸„IÀ„|Rßzˆ.§Ð€I¨*§è °â.‚†Ð€I¨*‡˜ @„K@y¹Ÿû¹'¬t Ÿ XIh¬ªÒ€þ)XЀ.hˆÂ °LÐÀ„K‚Ѐ.P XÐ h„° èLÐÐ ø€K‚Ѐ.À„IØ0LèLè'L¸X (ƒ.X‚.À ÐìÒA‚Ѐ.À„K‚ЀªZ‚.ˆ.À„~R‰K°Ѐ2è‚ø èLh, è èLø(¸ ø è‚IØ0èLè§K‚Ѐ.hˆÂ„K‚Ѐ.À€Ð`C—€|ÐГ†64é²â.˜0uÁ„ÑÅŽ˜æØÐH €\¼䃆.G^œdÃ$Iþ7^ì‚iã%+4”ÁÔeÅ ]€hX±B¢K@>hèr È ]0uYñHL]0mìxé¢9ÊxL«v-Û¶nßÂ+w.ݺvïâÍ«®#8Ú ÷R—].ÎÑÐhÒŠI0uÒq$¦.@0u‚ÉÊŠKs4LJÛåC™.&ýÁÔ¦.@ltÑ`eÅ¥9&Í9R-" s•ÁÔˆG -!²âÒ “¬¬¸4Gä.@ä"Ò0§QL]€tü£a"G^´²âÒ ctQkeÅ¥9&]‰ÉÊŠKs4LÒ6t¡+\2‡“tñA]|€I@È5IþltÑHY±Â%sh0 &#]dÅ —tÄð©…ˆs4RÆE]Ñ ²"V¬pÉ@±Â%sh0 &]áVK\„ˆ @42—”SRY¥•Wb™¥–[rù–@F—m!²“tôA]”шR+ÑÑH˜t&] &™„HZ]I@4ò&˜¬ "Á§ˆLr"j]„”I@x4ÒE@8ŠŽ"Òr]„”I@x´‚ @ÌqÑHá(’ª„£ˆ\4&@8ŠÈš@ ¢Ž"Ò˜t&]1"x4ÒE@8Š&#]4þ&]1‰¤j]„”qQ@t4RG@8Zƒ£ˆ`Òm]òÁ$ý¡Ác\°Á#œ°Âõf _tItq‘|pÉ+`Ò„I\²˜,ñÁ%]’V@`ÒK¬€I@`²&ˆh°Ä—\tÉð©ÕH“,¡&]h€É$tÑ\rÑ%K|pÉE—t¡&“ÀÕH“,¡&]h€É$Í¡Á tÑ\rð©µÄ—\tÉE#a²Ä—\tÉš@ ¢Á\rÑ%]I@`Ò…˜L"x4ÒEK|pÉE—`2ÒE@¬€É@ÌþŸZt1É\Ô…˜L‚ÉH-ñÁ%ñÁ%]‚I`2ÉZ]XqÑ$@¬€ÄÓS_½õ×WI˜X? ˆ`‚ˆV`Ò…J}ÐÈ@` Ä&­ðÁ“¬  ’Ö ̱ÂBh@)hÄ ºDh` +Ð4€ˆ·4B6X0“|]À01‰h@Ä$V  h`#&ù\¡¬À ˜@„I>p‘K|`˜˜0„FLb‚á–I¬@@Ð"æŒa+Ð4€ˆtˆÐÀV  h+øÀVð9 Â$€Ëþl  Ìa@À1‰hà0„FüÁ$+øÀÜÒ Ø`V¸"Lò.` ™Ä 4 àa‚ D˜äj™Ä&q‘2t{ª\%+[y0Gp„+/2‰I´å–i™"ârK·LsAÄ$:2‰F´eˆðÈ$Ñ‘I4b.ˆ˜DG&шŽÌá—hË$!—I ¢-“@D[&ˆ¶L¢\š"Ør˹ b™D#Ú2 DtdˆðÈ$±+t¡–(A º€‰ ](C11‡‘Ì¡¡UX.1Ñ‹b4£Uê˜z Ñ‚4¤")IKþ:P2€ÉÄF±ÊK âh[f—K â3mËF.2ÓµLb#HËFÔr D\b¦l™)\.ˆKÌ4-·4)U«jÕ«:‚ €#$: |«l„1¶Œ$.Ð"F²–K¼© ˜ÉZæ„!-+‚Z¡DŒ„-#K#4€ˆ‘¤eˆ¸*cëØ‰:Ld`å&—‘°R“X[fÚ‘.¡-˜ÄšÖ‚ 4â“ÀÄLÛ2’´tkÑÀ$ÖÄ–™^¤ @h‹&±&̈¸Äc‹kÜãZ¯`jÁ*'„LÂ$kÒÀV` t¡##Á„l€þ Ø—Â4еh`6бh  ˜Ð€ 4„\Ð@01 Ia¢ ˜Ø&.a Ø@S0 .Ò…|]0 º .`¢ ˜ØˆZæ` Œ¤ &ÂE.„h  ÉE&a“a’ºH0±‘KXA6Ð@#º` `¢ +øº€ “¡ X&6Ò‘K|sø@´dG 7ËZF.ÀäJ`ï]ø@.2 4b+˜Ä0Ñ td$˜è0Ñ ` +¸Ä40‰´táeèÂ&ñLt˜èlÐ Xa—˜ƒ&1þø¨Å ¸&–€LŒ¤#]ÂEþ 9 Âp™D4°‘‹Œä"VXÁ%æ I`b$±Â .Ñ Ì>j±Â.‰% â"#¹H€Ð‘?h`ˆ°[º°„‹ Â@h–€8bËâ·IA ªDÄ €0‰Ž|`MehÄ›€Ð‘‘`¢ @ÀD€€ 8 ié0Ñ 4âM@ÀÄš€€ ÁQˆ˜„¤Ô2’´Œ¤#]BGV` Ì!.ˆÐ€GFr 8 ˜ÉEF‚‰.a’RËHÔ2’‹tY €0‡µ\â“èÈ4°„,µL-p¹›îô‹þ:L[`å%ºð.\Ä »ÄV€‰.¡##ÁD4p‰%KøÀ%.r‰´t˜è–°Lt˜X¡%|à¹Äà£+| ˜¸Ä%01’ŽtA˜˜&æ ÈðÈH.²„\â"—ÀÄH.„`b @˜|Ôb…4Œ¿ÈH.Ò `b™ƒVÀ–.Xá"“ ¡%G€ L-pÄÓ›ï|WöL-¨å$€€L BVÀD4 ”4b@ÀÞ`’|`“X€ D¤e˜Ã >  (åXA€€ ŒÁ hh"¼Å%þØ€p` 4& ‚I|&\ÂÌA\Ì hÄ` 4Â$¬€p` 4Â˜Ä |À¸Å%Ø€ ÂÆA# ‚I|ÀE\ÂÌÁZLÂLÂE”AtI $˜´€#<ßRá˜8%HÔ-µÅ-¥Å$ B\Ü’[L"ÌÅ$ B[LB#\Ä|À%pÉ$ [ÜÒ\L"´Å$4BGÌÁ\ÂZXAŒ#t8GC£I+&ýÁÔÈA @0u‚© LVV\š£aRÂ.Êtù0é¦.@0ub£‹++.ÍÑ0iÎÌ™ çtÕ0gàÌ]4Ì)£¡‘ÇIe4 Btp&&++.ÍÑ0iàLLVV\êÓ­@v£aÎÀ™»h˜SFC#‡]– DdH£›9Ü’qKgÑ£I—6}ujÕ«Y·®è #Æ”\»F´Ȥƒºt)ÓhEp gbêS ˜€hp®QÂ.@0uþÒ(ø ˜zA¤Ès ˆ&¹uë°‘+gì¢" ˆ>"Òp&& â œ‰i&Lº“IÌCÄ¡F4°â ™êBLÑ….ù`’ƒþÐ`‰ÚRÛ"£-<‘ÄM<Å;s$¶ŒP±´Kºø ‹¬øàƒK–X“.€8h&LºÐà’%€Àd‰.è’„º“.€XbLº“Þ€@Dƒ%>¸d KæL¡KV°á ši .4Àd ù š “%>¸d Kš  VÀd 0™c0….YÁ†K€h¦ºÐ“94hD¡.¬h V@ÆÎ¶Èh‹þZ°#ÔTU]•ÕVWc¢E°ÃÕÍ&LÑÀ LºÐ ¸™xù>˜c’4BDZáƒ9Vø@ ‚û ‘º ÆXA 4@ä£.Ä›h¤ VÐÀŠæ°A æÀd pb4BDæG Êpn…æø¨ ñæG éBƒ4°B¡I>˜d 2º¨õ£-2’‚( ™å–]~yDZl˜E›d’ŽpNhDBÂÙ£II­ ™DµI©çÒêBƒF&qÈŠ.œ¾úê-bµë®?¢ÄJ¼›ì²Í>í²‰2Ò~îþ¸=ši¹ÉžiŽŠº¸Än³¥h‘§{ €‚È&ƒð€!ìèòÈ%Ÿ¼k&2¢€Ê5ßœóÎ=ïŒbµ£´-zH€‚±{À2¶ ÜìøœöÚm¿Ú`âvpƺ‘Fzžx¹ˆ ®&2zèa J0±Ã‘ƒ q2žß‚’„ „Ȱ;0!ãù-(È&z ƒLa¢2(ˆŒ˜pd G˜è ”(Þ (GÀ…( BV€¬Íd” gÑäÙÁi„ÃG`‚%°L€pp@B˜J$İ&@8þ8… €(@2‚ È€‰À €# AP€d˜à#È„ð“8È€Ðµà…— â‡çˆ´ˆN#&(12 [%0±P”P„ô  ±ì€ J „ (D0J8¢%±Pb xžB G”½s'„Lb —ø"4` á˜hÄ l .8X&œ ,¡ ÎÂ@4°h—°Áœ3‡9|  ‘æ4©YMk^›ÙÔæ6§éˆÄÆÚ$&ìÐ 8v ˜€ ´þ` vè; ÄPˆ`LØ¡pìÀôÀaz`‡´ Ïë(ÀôÀÜÔèF9ÚQ~¤!½æ%ºð. ¤ KÀD€`ƒ.h“ø&º„.h`eÐ@#º 9”AÀÄLÒ…”¡ @„.„% 6B#DZU«^«uD 0BmŽ  ˜;`¢pì€ 2€d€Ò(İ@²À”h@2P¢È@H´[ D !«™Õìf9ÛYl"b@˜ÄA.ñI`¢þ ]"4€‰Fd]Ð&¡DtA˜@„‰™ ¤ @ÀD€Ð Ìa]8È4°Ï>ºÑ½¦#Z;d“ppÀ@ì;`‚ èAâ İBÈ€- „v€<à€Øv8H!@ƒ"è*RˆP@ºÔ$ƒ#®Ù pÔ”Hð„|‰.|  é‚’Z B˜X 0Ñ tA˜˜ƒÑ `bh&f2.]&VÐ…2\“ Aa#ºv`‚5í€ ; -H%(ÑØa @Ò‚P¹þ°CB(@€-`‚Lð€`‡$€Ê-€z@†8À= Ã@à;€ !Ãz@†8ÀHVˆ#(GP¢pF€ 8”p@À„$€è&(A` p(@LP‚@(€$vؘ h_gu@@Ä$>0‰¬  @@„æÐ çSÐÀ 4`LtA+Ѐæ¡+øÀVð1|@X&ÊÐ…_¿ÞÒÍ(Q`İÃ@zG ¤Àˆ`‡„P‚!ì;‚qìЃŒ$ =þÈH ‰- #[èAFPˆwS¢èÁ@Z@J`  &z@LØ[(0Ñ ¤ ð 8 ÀD @‰-À €<`LØÁ(D¼¹îQ+tÁ#8H4ЈI ¤ hÄ$¤Ù \bèúÜé~UJØ¡¡„ ñJØ¡qCB ;!”`ÈA(Á„0ä ”`H¼í 8b „;H(€‰P” ÀLô€!&ìô€v&(;.!d€êÞûkváÔœÉ2“9Ló+ÐÀ æà{ç?úÑ—þ&%z@€`¢(&(qPÂÀD!zà=&‰$[@ z@; %B ÂÄ( ì@ú ÐP;Ê(À(Á€à 0"`  Zì#!€z z€ì¶À(@€€‚ zÏÀÀ¢ Á#b ‚p “°ÁÂ!!ìÀ ! :Âì@ ¥/ ‚p<"(` § ÓP × Û°ëÈÀb ( @!‚Ð#z€"§É(þÁ Q‘ Ñ!À‚Àz(<z#( (Á0‚z#(` (€€0b ¶€˜`kÑo1á ‘z€z!zÀ0¡` ˜ a z€˜ Z (¡(` g z€˜ À€(À€ ¡ בÛÑ¡+ì í (À‚À0¡ìì` z€0¡(z€‚p¢(z€ ¶ zà È<àCR$GR›ÈÀ~Íþ(a£ÈÀb (àªì€ž‹z€z` z ¢¶ a z€0¡(( 0Á(` g z€0¡( ˜€0Á( ì€$Ç’,Ëò À0‚À(z(n ÖÀ˜(€¶À€4j € ¶É( (ì0‚À(z(n ÖÀ˜(€¶À€0a €  Ë(Àa zZ¶€j€¶ ` Èþ#€H€j !` €Ž€€<˜ Ì=Ó³)¡ ¢` ˜: (a À0À<à ` 0¡€˜^€˜ `£ìÀ( ®‰z€zà zÀ¢` ˜: (a À0À<à ` 0¡€˜^€˜ ` ìÀ( ¢«z ! Á¨é §©€¶ÔSJ§ í (À¢ì 6ìg (€˜ì@€0¡(€£È<àšì (þÀ‚À¢ì 6ìg (€˜ì@€0¡(à È< ºz€²Š ` ¨TUW5ú(¡ 0¡¶(€(a (g ¡ÁZ 0a (z€*¢ì!zÀ¢ì` À¢ì!zÀ¢ìà (¡ 0¡Zà z0a €€‚0p¢zÀ<0¡¶R€0¡(ÀXUb'–b¥Ë(ÀzZÀ(ì þj0¡À 0ÁÀ €¶ ` z! z` ˜ z! z !À€á zZÀ(ì j0¡À 0ÁÀ €¶ ` ˜ *oß‘!¢"±É¢Ž0‘¬ á Á:Â! Þ­z!z ÁÂì #ìÀ¢(!oOw,b (€(à ›¶€€8Š (À( º Œp¶@ {€‚p¶u—÷t{þ‚p"µ‰p6Ê 0Á¤©(@¤ìì€yÇ—|Ë·#0‚À0Àz(<à z#(` (¡À ‚Z g !z€ € 0 € Â` ¶À0 € z €z(€¶(€0(€ (n ìÀ! âÍü@!!¶©‰¢‰³ Š¥©ü  ø£*Á*ŠŸKŒÇ˜ŒËØŒ¢` ˜ ¡(z€z¶€ þ ‚p‚p¢€0Áì !Z€(<À0pÂÈz€ì¶ ˜ì¶ ˜@!ç z€0¡(ì¶ ˜z€¢€˜^€ Z (a À(€ìÀì !a Àθ#$"B`›$ BB «¢Yšü š1¡xà\ 0A . ü` ”@\ 0A ¢™0¡xà\ ü š™ÙŸÿ :›z0ÁÀz€0¡( ìì` ç g §#'!g áÖþ€(€˜(€˜@!(À¢(z€0(€ 0¡(à ì@ (À( 6ì€p*ÂZ ÁŸÝ B @! x›” B B « xš ”@ 0A  . ü€BüüÀ$B­Å”*áB Ðü 0±Û±²#[²'›²+Û²/³3[³7›³;Û³?´C»¶ ¡€<€z0a  ›p›p» 0Ê» 0Ê0pÛz€þ ¡Á ¡Á²{쀱o(Á( ¡Áz0Á0¡¶R (À<€(±)p(z ´œ±#!$ *á$²@   0A B(<À ;$à@ 0!.€ÂC .€ÂCB$@€B`@ 0¡.@ *á$²²•€Â 0A (<0ÂC\"¡‰›”šB@0A  €B@ 0A ”"!¡±C@0A ”šþÄ`²@Àó\Ï÷œÏûÜÏÿÐ1»  0Á0"   0a ( )à( ) (Á€À›(r€j ¡àÖ À 0¡À "Û€à 0"`  Zì#!€z z€ì¶À(@ )@² È Ð/»”`”€±ýÄ ²@  ”`;š1A @ ²!¢Ü"Á 0A Bx@*A B€$ ” ;À\à$ Äþ"Á@ ! üÄ ²²Å@å@ ;š1A @ ²A ¢9š![ À $0!(Ü0!²ü@ $`Ä”Ü@ ²ýàB Î]ë·žë»Þë¿>²{ Áû »!³Á&Ûì@²ŸÐ±íÀÛa²Ážð±íÀÛ Á± &Ûìಠ<` ÀÞ±ý@B »B ” 0A B ±£”0ÁÀÄçC \\B¢”ç1A B€±£™±C`ÈÀ*!`² Bþ ";€;š1A üü ²+BÀ@ À.*”±/`0¡x \$Û À ÿó_ÿ÷Ÿÿ)€¶ 0 H° Áƒ*\Ȱ¡Ã‡…¶lyH‘b%% ”`J¤$’ JB`Rb`ˆ˜” À$A¢‚.$`RS ˜\œ”€ÉE'ºXPI`¥DJ"¹@HI$ V’p¡Rˆ'1)A€I ‚DbNž4I ¦.\HÀäA¤,*)Y€I & 0Eƒ)„ L€G !ÁOàÈ+^̸±ãÇ#KžLþ¹²å˘3kÞ̹³çÏ )G á'‚ xHX FÂ1bB,XB x$V‚@‚„‰Ü @ aáˆQ2;¦H„@à'‚ x$BpAÄJ†Ç$&Äì:H@À㱟$$J´à‚˜*]°@ &! &~,p‰$–…¡5èàƒF(á„Vhá…¡ùÉcJ H$‹EÉa"&bc‘øq˜‘æG$•)@"‘D–ˆUâG$‡ù `‘øQI`‰øad”aÇ‘L6éä“PF)e”'‰1åc'‰q¥…vôàô°å˜d–iæ™h¦©þ¦c"^Y€)'d¬içxæ©çž‘d!`‘„°€ ó…pA‰–Hb`¢ÄI<$v’'‰Ñ ~@IÉ-$0ç§vVvìiꩨ¦Š¦‘$¦D—)B`~TX, `~\€I.$ÂC%„Ø(IJ(!Fb<  DÒ™‘&FŠ)ÂeJ„˜•DfG Ÿ~j`=€X`¶=&Q!ªæ{jvÖƒõ`‡¾/IDRÉ …,‚˜„€€oÐÂ(I%!,€@³,‚˜ˆ±@‡… biVÉJþ¦„ (I‰,¦˜(&‰HpJXID‚I% øI%H€@JH°@J`¾!@G  &•„°ÍJ°@J`"ÆYHF  ¤ €€õf`=€XPPô˜l˜v8RðåLÐÃaô=`~y%J, `~ F"Y`¢D‡…°€.œ A%b  T"‘(Âa~\B"€… Äan,&! A%˜ø±@%(‰, FbJˆ‡&‘¸‰!PV‰ (˜.æb$’&J„pX øá þ¨„ H b@@$”‚Ãøá!HÄdìÐÌɇ±C`ìЃf èA`( †èA`ÀÔƒÀ€©€¡˜ì˜BP ŽŒ#˜`Ñùð‡@ìŒ$‚H¦!@À²€ %„à0'Lă?„€Š~PBã¸0!PB`!D¦¸&B  @‰Ì% J@&á „€2~@"˜J, €©D°€,`B !8ÌI*ú!TôƒB€7 À•¡Ä&G`†… z`‡ÀP€[ ˜˜;€É€±þ˜ì;€)0=S`¶ðÊÀÂ…¢2—)ºJ(aJÀD"”  J@&"˜“Æ ¨`*á‚T0•P0 LD"ðC`B ÀTBJðC""!Lð˜H„ü€TB ˜àÁ£`B À„ $€ %„0JðÃa”à‡À(Á©„ L(I„"á`B ÀD$sÀ¸`•L%\°€J¦J@&"‰H„@~ÈL!Z`¡BP0”è #SˆW0=S`z¦ÀôL¡( €ñìÊ9‚™p+þ™"?$0á‡á,JXÀB€‰HH!@€"!„Î0‘%F !X€B?ˆG ~X@ À$"&ˆ!1@€$€1(¾Y@"0%J ”€˜H„ ˆD`€ H€˜ðÃp€ %6˜ˆ„ø!@@0Ðá,YPBí;t00[ €CP 0¦L= ˜z˜BP Ž %(G ¹>‰r‡qå ˜B3”; åD¹ÄXX2”; åÐä‡H&‰ŒŠþ ?¨8~L$±âÛ‰ðC%n ?TâÆ5‡¼b(¡Æ~ˆD`"‘ GÂ*Ž„‰DùÊXβ–·ÌeS¢ÙB¶˜Wn!0`êA`ÀÔÀØLvŒÀdÀ0LÙzGP®Ë€´ è@Å[ (˜Wf™`‚Š@'€„rPãWÞ˜`‚Š@'€™NµªWÍêVF •pµ¬gMkYS”L ˜B¼²€±˜˜€)0=S`z¦ÀPL(°…ÀÂލõ•·@ mº¨ñ+þcá,“ Pq( âP€Ö=@-|c2 *îTÜ xû߸ÀNð‚Ú±C³…W¦ @`( † @`ÀÔƒÀ€©¡€ìJPŽ«vЂB L€0`è(敘è˜(J´@!jÜ‚ÀŽp˜(€ G8L¯@;P‚@(က ˜ „&Ô˜H˜ÐPÀDÀDL€‰ð`š¨;LÀ„#¦W`ë°%(@ô€H˜€þ J8 ``ЀÏ'Ó‘h"®k=˜°P=”àЀ […}} -@…€ [¹bd=˜à€ ˜à€ }@”yÐŽà€ …ÐŽàPc=˜°P˜Ð·*Ö·Ñ·€ÑAvÐ@ € @˜@ € @˜Ð·á@ €‘=à˜P=à€Ñv°j‘ •p€Y °! ˜pÐ,°! ˜P !° b°YͲ<þ•À<€‘‘ ˜P à˜P  J  J€ ‰ €Í" J€ • €J  Užñ?h= -€ v& @ -€ [@1J?@1J…@ v°bИÐ0`’°d& @£Ž@ à ИPà Ð5ÖÐ[@1J…°£ð£PИÐ0`’°d& @£Ž@ à ИPà Ѐþ=j•   €á ‰˜ !‘à˜ !€ JÁP b€‘à‰€ Jpp€  ˜P J°JJà€á ‰˜ !‘à˜ !€ JÁP b€‘à‰°ñê¿þDÖPŽP§b…àZæv€eP§bP7dŽ`I GÚqdP¡ÀBŽ>„øÐ‘#…# tdÇ G í82Ø£ÇE’ýHI`¥dÁ¤$„ÁDl†À¤$„Á|"ðƒÉ ˜Ä P‚@B¢!¸ÀäGþBˆH+-ˆ$°R ²`RB ¦D6%„À¤$ÄØ?øÁ䋱uíÞÅ›Wï^¾}ýþXð`Â… FœX1& ¶,†Yòd=(-®¤dL‰”Dr“˜"ar!“’˜” À “‹•. !Á@?Ä,¡D‰%VR²@ &%<Æ&RÉLJ`ЄɅLJB`R‚S$L.T¸(„?”Ý¿‡_þ|úõíßÇŸp¤~!¸@0ñç0Q›HÄŸÀ$ ”¨ËüÁ…xÀ„²+’ÐX ’±Aà þxÀÄŸÀD lZ ?|Z“H$@ vPb>#D2I%—Œ;(a2J)§¼ËHÆŠ$‘±"‰¤®H©+?Ë%îò#’±"Id,.ëŠ$‘º"ñƒL;ïÄ3O=÷ä³O?ÿ4Ð; ¡€E4QEe´Ñ±”¨ÄQI'¥´RK/ÅÔÏÆ2å´SJ¹´Ë?ìJ$‘H …è0Ñ `¢Ø l¡LÀD @ LxÀ €<`‡ 6=À˜€B´ ”ØAþØÁvð #¶;ü2Èa@;`¢ €6ØPÀ ìAcZ€‰4¦ìAcZBG0a ˜pàB`¢p ±ÁBP` #L€<˜,ÖÆ7Æ1 {LØvè0Ñ ô˜°ì°ÁÆp°1lŒãÁÆl°fM(A€ ˜ @&„p  @(€‰P=&ì€5P`&ÓÁÆx°1˜è0aØ•¨B;´ Ž@$áÁ …v D ;´€…€Z@Lvh@H‘lþÉ6H‘láƒLHz€ ;8ð& ÑJ$€tzàA28bƒ[ À{€Ú9Æv¶ÝÙ`b (D@ P ÀÄPˆ 6†ƒÙ` PLP‚l {c¢1ô@0Ñ ¢Žð0Qˆ8Âø`˜€‰  „(€‰[@zà- @!0aïÆx°1˜è0±Â Ä)ј †tà‰Rè( `‚H¶€8À%(@ô` ` €P þ…@ (ÐL- @@HBp…è  1B ô ƒð)A€`¢@8è $À˜ ì€ ‰Rè( `‚H¶€8À%(@ô` `‚¶e?û^ö @ 0a‰&€@ÐLlh¦À(€f ‚`R r@4S =€Y 8 -ÀD!à€´àƒLÐ;H4ØB´ p€hL  @3 Ø - 4£€€€ÀGH þ4£€* B¢„ €Ø €-`H`‚ Lh &€ &èÀ„HJØp;p („ ¢‰²L ‰²ƒ ¢‰²ê €-À„HØ‚ ê €-! è"(„ ¢HJ° èL „ €à ð€ êØ&€ &èÀ„ J`x`‚ Lh „-G° €B ½OEAê(Gà ‰è Bpr;!G°ƒšˆ²Gè ;p„r;p„ š*Gà ;p„þr;8¡Bp„r;0¡BØ‚A²ƒ GØ L° À„ L  À; Lè À @4°L ðLذ) ;p „- ;p „rà  €r! è *„(„¢„p H €(;H p„ ¢p„ êÀ; Lè À„rÄ; Lè À ˆG;À2ŤTJ*Ç-XJ`*„-ØB¢„ €À„LØH À„ LhÀ„-€ Lè Àþ JØ C €°ƒ ò€À; HL°pHL°pLè;à À„ LèLhØ À„ € ê;è èL „è;(Lp„-À„€BP$hJÀJèèLèà LØH À„ LhÀ„-€ Lè À JØ C €°ˆÒÎíäÎîôÎ…r °ƒ€€HØ‚ €-p„pè €-HØGH `è B H€(p€hL(p€h €à  ØþL €-Ø  Ø‚ €Ø - H ÐDëL° ØL( €è G 0 Gà €€HØ‚ €-p„pè €-HØGH `øÎ/Ó0E!Eê GP¤Bà Hê¡HSBê(G¡B r;!J°GØ J°Gà J°G!G°JØ G°Jà G°J`¡B°J(¡èê(G¡B r;hÓQ%ÕQMè -  *Çê €-0¡r,U@*Ç-¸ÕêJè rÜ‚]þÖa%VLèø rä H2¡-€BØ‚À„ €ФbÅÖlÕÖmåÖ’( ÀpLè ð*GL艢€ ¢„€Bð &€˜ˆH €À ³( Ø H   ‰Ú€p L(„pèp ÀJ €Ø è…šˆn¥ÙšµÙïìØ&€Bè À„ €€-`(„ *G*Ç j Lð;ð J H€BÀ„ €¢°°L(Ç ê`‚ þ;J ø  &èÀG Lè è p€Lh „-GÀ Ø‚…J;¸ÙÇ…ÜÈ]§L°°ƒ Lè èÀ;;Ø rä rÜ r$¡-@3Lè è rì rÜ  Lè (Ø‚èê À„ L(,£‘ ;L €x´ƒv"Gà - €ê ˆ!; ÉõÞï­ÙLØ(„Jð èÀ„-€BØ rä rÜ  €BÀ{ó `LèÀ„Lp„ *Ç*Ç ê À„ LH€`þJø  Lè ÀHLè  °À JØ JÀ„°tr HGØ J ; „€BÀpJp€&À„H €  HØL J €À ³€ &ß3FãaíHhL°‰J¨HhLØ @3 ø @3 (Jp °b èL°‰"Lè4£LØ @3 („ €-H8ð€JØ‚ €-è0+8€ ;€-p„ ;þÀè_¢„ €è ðLh Lð;è À„ ;€-(&Ø  € j &Gè p€€HJØpL °P$ €BHã|Öç/í(Gà ‰è Bpr;!G°Gà G(„ê „-šˆr;à ‘ø%;H p¢pL(Çê À„ J  &Ø  € *GL°°‘ ; ˆG;À„rì 2Øç¤Vj‡*Ç-ÐN2HH€-à¡ `¢„ €Ø h j(L°·þJð („p€ êÀGhÀ„-€B °ð „ ¢L(Ç r H;XêÅfìÆ†\G ;pp„ ¢ E’¨ €H€Ø ;(p„pèLH€ ;€#H °ƒ@3 À&èÇîàf'Eê GP¤Bà Hr!Eê Eú¤HÂGP¤B!Eê E¤èr;à ‰è ;p„r„Bà B r;Öövï÷&Õ€Ú à rj¹¥KvØqS!…`âeO42Ó%ˆ\bæI“ ‚H#-½YÒ%ˆ\bæ…— r‰™,]‚È%f¾dfK— rI#ôt "—$Ú¤Í9bG$Q@$Q€$õ@0ÙA@”4Wô)«­ºÚ\Üô"& Ð@ÌÔˆˆäþú+e`2ÑÒ ”Ôˆˆäú*&h€È¯]@Ę\D˜4¢"¹¾”kKh€H®˜\b… K\‚I6D]¬°D#˜t‘«˜\b… K\Òˆˆä -Â-9ÂD”@ÔCQ$õPI[ôÀ„M”PÒê‹ {ü1«d8ÂRÜ&&=ÐS¢uLLÒEˆh`EÌQ®-u¡ILBsK]¡R@À¤Á$4Û@ó6üɬ‘“ÐüR¢.i0 ͘t¡Á%6шˆX&ˆh€È+`Ís`Ò…—Ø&LB3&vPá…~8â‰þ+¾8ãîHEÙÑEÙ‘[Øá8è¡‹Ž8=Œ~:ê©«¾:ë¨;BAŽPâ@0€˜à&=@Pâ@0 %-àvôP˜ôx€ %@v~‰Ø A#]h ˜t±Â@tÉû@t¡o¾ Q0ñ&Lh  “Ð@ ’+LhÀ˜Ð€ 0¡Ø@@è‚ñ>D`¢ ˜xÓá.aƒh  ]XÁ€ÐL4b6ÐÍVð t—Â4Ð…Iøé&ÞD³X—À„¬ I`¢þ ˜xÓáºð> ]x0ñ> h` ˜˜D1ÑL¼ @X&º FhÀ @è&º LtA“B#„`¢ ÀD0ñ&LlLh"YçˆP‚ `D Q”-@¤E±D(aJ$²“§{‘<)ÊQ’²”‡£DЈØ[(z@Lô€˜è¶Àh[(0ÑP°`Ø"/ÂD°& -H%¶GP€vð€ g…\K@Dr‘.pÐÀaƒ9 qÂ>0 ˆä ]&ºLtáþe躠?| C„æÐˆ2`¢ @ Ü$þ€‰.]ᬰ‚KÌAcÖáº` Ø@YÁ$4PÆÍ¡¦˜ár…‰.h`eÐ@#æ¬ÃuAX0„÷!@Ð&Ê Dta˜&º ?¬@ˆ³ƒ(PSŠ’v(ီ(= (°ÂQ‚¬vU\Ѓ»òµ¯~=œ@G@„˜Ð `¢ÀD€ ;` ˜€‰îE†{&zLØv ÀQìð¢Äåêp¹‚H€P¸Øs˜D§+”a„þË&ºLt˜è0Ñ tA‚ã. |  ˜è׈p˜è„)j=<Ü4Ð ¬ø>°„Æ5BV(\®0Ñ `@Ä$zx¸KXKÐÀ>€hàVÐ&º F@ÄÀÄ%¬„%h qd€þ*ºBla „£(@8 €„kì â= 1ŽsœHJô€=ÀD!zà  „(€‰[@zà- @!0¡±îE˜è0±Â D(ñ¢ÄYáÀÄ%.‘\A¤ ÀþÄ$ 2 ¬sâ4€Ãå ]ÐÀ%–Lt˜èº 2h  kD&± `¢ ÀÄ$0±„`¢ @ÀD4€‰I`b ¸DجÃ!Bsø0A3DtAŒ»Ä lp .W˜è‚01 4bÀ:Ü$æ€ ,a +À"40‰2hà]ø&º€ +|“˜&€°„Ã9‚ °ƒŽ Wˆ´€p=( áz®=ØB¼ãý¢€¼àŽsìP8 -°CQ@€-ô @ $ ˜ „@€,€È( ¤ @þ 0ሀX(€¸KØ@@Ð"æ„|@Äû>‘K|`‚lЈÌDÂÞ·‚Ìa˜Ã >  ÌÁ˜ã¡¬À ˜@Äû>€‰.h€»h"Þ÷LLb‚±8Dh@X&>`LXAeX\È‹‰9è@˜‚V +4°Á õ¬À ˜¸„ Vð9`B@ÐÀ0ˆØ`8zoG¼ÈÙBQ‘…pv ƒ oGô€P>ô£8;8"ì1\!A8;8¢pްè áˆÂ9 ›"þ7‰Fn¸Dë&1‰N"b„›D#'ÿÂM¢…›"äXh@#Lè4"Î% Â$"LDL"\á4"%@%PDØAQØDØ$@!@„#‚ôœ#ô€P Ơ ÎàâÌA®Ì æ &äÊèàè8‚8áENQôD8BP€ø >!Fááx‰'… âx‰ã°‡naêô„N!0Á€ô€p¡zIá8‚—ᄉãŽ#xI!䡎—Ž—ü¡† !""&"ãôÀ‹PÀNÀö@þPÀ$΋ N€ã$€("(†¢(Ž")æá$@QPBâØAPáPáPPálB)î"/ö¢(&ÎPPá¼È!nŒ"%PNP@á$ð¢#@ô€/Š"8(Ú%N!00#N€nÂô@â„ DôNâ#ÎP(Ú%t#A¤/nA…@„¼ˆ#@Dáô@QŽ#Ø#¤Fn¤Fö΋N˜$⋌"@NP@áôð¢€pä:$€#@8Pþ@!$€@`8PPô&l0AáØØ&P$lA`$€@ °8P`B`B$P@`B@„#P@8DPØ$€`B!$€@€&PôÀÐ$i–&âlA€äDØAQØD8á°‡iÞ&n2NQPx&€`8@€΋`B@%´8‚áPB €@!`‹@D!$€@P‚þ$0&P‚$0â´@ {8@QP&8‚Å‹@f€Pô%8@`%8@$ô€A"%ôôDô0A€#&ô`BP€ô´@P€#`‚8DØØ&´PÀ ô`Bô%P$@!ô8@á¼DôNôPB@Nx&ô0A&8`BP@P€ô`B $%l8‚8B…ª¡6Î$€jE@„#¼ˆþ#ª¤Nj/öl@!ô`BP@À0D¼á¼D´P&x€N %`‚Ø&¼D8`BP€À`‚À N80A $%ô`B $%ô`€x€´@PÂÀ`‚ÀŽ#lØ¥.Ž$8Dô`BP@!dFP&øØPÀQØDx€8‚€`‹`‚P&ô`BP&ô$΀…¿Q€á¼DôNP&ôØþAP€#%€#`BP&ô`B!,øØ`…`€Ü+Öä$x€d-؆í!ö`‚€ô`BP@&ØØD¼á¼D¼ˆâ¼ˆá¼DÁR%P`%PN!€¼&ô`‹`BP&¼áPÀQ¬0&P0ÁáØA $€#ˆ­áPB@`BP&ôx@`BP&øØxPDP‚#P@Ø&ôØØ&´@`Â@ P&ô`BþP&ôN0&ôøØ΋@D&8&ô`BP&PB@@D´Dô`BP&x@`BP€¿Q€&xPD$€È.‹¢0APt­„° ¯p&lB%xô`Â@!@Ä‹΋@D @!`‚ÆN @!`‚Æ`‹@„$&ôB8‚&B8‚Àáø›ôP@`‚P&P@`‚P&¼áxPDäA8‚&B8‚@â@¬0D8ØAÀþ$TdBôØA€0ANdP&8B8ô@À$lAÀ$lá0Pô@ôØ”€‚`BÀ$lD8Ø#€#@DÀ$lA@fÀôØl#$P°@²<+¢#ØAx€Å<ïó½ö$´&ØAQ$T$´&l€ü€%8PØáP‚@PXP@!ôd„8@´&8@´þÀá@ `B ÀEÀAQ$TXPD8B€€$@ `B!€$@ N!ðóá°Çâ8‚$N!Øá% ¢#Ø#ä¡#‚ã´@,{,Ž#ØWçu"‚^÷5Aö‚#{N!8‚:‚(Ž#ØAâ°GáØ#Ž8‚ã°Gá°Çâ8‚Ž8BáØ#$N!€l_§ö!ö%¨¶k¿6lò‹lAlƒm!”Xmç¶nï6o÷¶oÿ6pw…ÊŸp·q7r÷$”Á@Ä$Á,A¢ A#N#Á`BäŠþN®ÌA®ÌA)vA®ÌÁ.®",{··{¿7|Ç·|Ï7}×·}ß7~ç·~ï7÷·ÿwÿÁ$NA}w"\á”Á |@@"Ø&Á4‚\ áØ€t&AtÁŽhÀ$XL7‚XÁ$Ü÷LáÌ&tà8ND Â%ô8‘¹‘9’'¹’/9“7¹“?9”G¹”O9•W¹•_ù‘O¬À$\‚ ¬€”A¬ÀA`hwi€ Áh@`Â%ÁhÀˆ¯ÀA`Â|@táTD\ÂtþDtÁh@`4w`Bh&4 ؀tÁû,&¼hÀ¼ttÁáh@N#¬€ h@hÀ Ø€&\|€tDL¬À$@Ä%|"\‚ ¬€”&tÁ |thwi"\|€tÁ%Áh@`B¬ÀAÌÁ”–¯;»·»»¿;¼Ç»¼Ï;½Kù%tÁtD ‚ÌA#”&t|",¬À%ÌL‚¬À%ÌLBAá ‚ A#@tAáüÁ4&¬À%`"|À%h@`B¬ÀÌþÁátÁi&LÂ`BAhÀ”4BhÀ””Ì"ØŽk@Î$ü&ttÁ”A|&XÁ \ÂhÀ#tÁtAátÁ`"hÀ4B@DáÁ  ‚¬À%Ì@Á \ÂhÀ$`Bá ‚ A#Ô»â/>ã7¾ã?>äG>D  Á$@Ä%|@`BAáä DAÍ#Ô<"tÎhÀ@tá4 4á\ Ø&Á ¬@#@„ |Àát`Bh&4w­t`"h"t`"h"þ¬€ Áà¸t&LÂ%4BóA&t`Ôü¬Lá\ÂL&\hÀ”Dt@Á4˜€hP¨¡ÆB ˆ0urÓ K(fÔ¸‘cGA†9’dI“'Q¦T¹’eK—/ar¼ÔåCLºLZ¢S ˜& ,8pɇK/-ùpià¥.0MÂ4 È DtxiED&ÍÁdE¦Fˆi°r© &+4vÑ€©‹LKV`ꤋLs44ê¢Ó æhXÁQCL]-Y© .@0u‚iɇK/]êò¡ËÀ.V6ê2i‰†]þ4`š„©àÁ%. 4òáÒÀK˜ºhÀ4iˆV&W¾œysçÏ¡kìa‡b;{؉¾{÷‘“€ j¤ÁÆ +˜)ü€©Ë‡@0MZ¡ˆD“Vh¢­Â˜Êèâ 9€ø` Ad¡.ù æ¨ 4X €Ð`VÐ`Ž4˜£ VXáƒ)4XA+0éBƒ4°“K>˜c£.B¤ Jü…æXáƒ9&YA 4@d I€@d’&¨ lXÁŠQèƒ.Üb IVÐ ðXA 4@Dú Œ.¼‹SÎ9é¬%z € ; T9þD&9h’F:šŠ&Aä I9©D.áhD.‰¸ºÐ ‘IêBƒF&hŽ.‰8&Ad#+ºÈ‘I(š¤‘Ž&Aä I¡h’F VØa‰-ÖØc‘MV£‚æ8¨ 9š£ 9ºëâe±ÍVÛm¹íÖÛoÁ WÜqÉ=ˆ;()W]çqÄ#;ìP©B‚wÝ{ñÍW_ ¡€ö X¤ìð(T¢€‚@à‡!Žx[…%~˜ GÚ‚‚z@¥yê‘ì ¤â“QNy%zPù^G(HÀ‘(!ÀJH&0ÀLp (ÀL(q ˜ ¤þ  H @ ê ð€  L(Àjr € èàŽ[î¹é®Ûî»ñÎHa;òîÛïç(é€(êÁLì`‹B˜À¤ 0邨‚ ±€- a¢(ÁÄ;0¡€;<°…ê€-˜ ƒ(ÙG0¡€;<€× ù[øá‰/Þøãë!oÞy; À‘ƒ(!ÀL(¡˜À¤ 0é‚ÀÄì „`BጦHáz;h@k­íÀDaŠÈ8€4à¨ô ¼%z@€ ¤-Hý!zà=%<@[À¼zà (&(A L(Œ" H€‰-€ Ä@( … ÄH€˜D%.‘‰SX¡ÈGPÀŽ €#R8 -À„´–T @ 0Q8 - „@Ø¡ 0± Ø‘…è€8" ìÐ;RLèA!IIN²#Žè<@IM’¤=ȈqvQ¤Ž ˆqGØa$…pÄAa‡MÎ’–µL¢#z`JØ’—é%zLa“˜Å4æ1‘™Le.“™s ;libjibx-java-1.1.6a/docs/tutorial/images/structure1.gif0000644000175000017500000013112610071716566022767 0ustar moellermoellerGIF89aB(çÿÿÿååå×××ùùùÝÝÝñññííí­­­¿¿¿èèè:::³³³µµµ(((ÀÀÀ¨¨¨çççëëëÚÚÚˆˆˆÑÑÑöööÜÜÜàààòòò!!!úúúËËËPPPbbbÔÔÔ@@@444###ÕÕÕ„„„DDD"""±±± ...000ôôô äääddd”””ïïïrrrêêêÇÇǧ§§¾¾¾’’’ »»»%%%cccØØØõõõuuu ²²²ÄÄÄ&&&ââ⌌Œ111›››éé阘˜ÓÓÓÎÎι¹¹†††ýýýÂÂÂYYYÃÃÃ***---666………FFFllltttšššQQQJJJþþþ•••óóóÛÛÛûûûÆÆÆ,,,III'''½½½RRRKKKOOOÌÌÌ‹‹‹222UUU\\\>>>ÈÈÈ¢¢¢ººº<<<]]]‘‘‘ÐÐÐhhhjjjªªªyyy¥¥¥ÖÖÖVVVggg€€€©©©œœœSSS777```???ìììMMM–––÷÷÷HHHüüü———æææ¡¡¡ŽŽŽ   øøø¦¦¦ðððnnnÒÒÒCCCaaaÏÏÏsss¬¬¬£££“““qqq¤¤¤ÞÞÞžžžAAAwww‡‡‡NNN;;;fffÙÙÙîîîzzzããã®®®BBBWWW999vvv|||¸¸¸kkk)))áááXXX___EEE{{{ƒƒƒ¶¶¶ßßßÅÅÅ«««+++888···$$$555ŠŠŠ===¯¯¯^^^GGGÉÉɼ¼¼ZZZeeeooo///mmmŸŸŸiii[[[‰‰‰TTTppp™™™ÊÊÊÍÍͰ°°ÁÁÁ333´´´}}}~~~‚‚‚xxx LLL,B(þH° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cÊœI³¦Í›8sêÜɳ§ÏŸ@ƒ J´¨Ñ£ÑXA) ¤P£JJõg'OX? ÉÓ†j ²â‰ÅXXÏ0Xè$±®Òð´4Ž1 :UÝË·¯ß¿ټٳ” %ö+VÓž4íÙ3ì„È/q¹"ß„ö¨€,•Àh’«^ͺ5O6¡ˆE KY ¢{ ,J‰½{7 Q­ðÏ–A{ð ¹òf‘&f°ÂÀ…ÍXþpPs€š!Ú‡\·Â€Fz€“h¹{ñ¼»»ÞÏ¿¿аygŠ Á)¢B&(@ ©¼õ– š@ J… BŒƒ7ÀA p0ò\tų…0€ EÌaF6^òÈ ØB*3¡@ÀAÂþTâ¹H”áÍðß”TVé†8„Xa ‚¬"+­ÄõŠSBcV‹ØÊ.l„!€yˆXt¾‰`K“ "*4! 3îÀËŒ5jÊ2D¡FˆBwÎ2d:lЃ„AhÂä+ØRD V¦ªêªT±ÁH,þOxð‡,_~) ³@Ë!…Ea› ÄD®¨ @æèIŸ‰ðÄ(6°#-/0H1j : Á¤>’fê iˆ^ü"ÎLb"PH°*ï¼ôö vµ„Që·æª‚sæ±ya° »I6%;â@˰qÃT¼#ñ;X‹-Úr €·àvWš@åÃ1)J»ïÆ[ïÊ,·ÌÒ½f܂˾§ô @.^ô*p…ªÛ„:+Ä€¬²1 @ItЇ ¼tm¶4nÛí·”Š òt Ð<œ »ÀëòØd—Ýc AC(Iì@³Íº´"ÀÚ;<¬ØðÃ\þD dÏ+C,“Œ6µ,ùF*Û ˆOcµÆWN4 2 ÙH£Ä$ˆúuÊf‡.úè ±ñVo<ÉÛà @u÷\pÀ“‘LÒ7ö¼¥g !P"Hø…/gn@‚TD/Ì_XU$&ù ³Ðñ’˜œ :à¬)" J`‚ HT°T`&h"%Œ``€àB Œ ,a{1Šacp1“ÈLæO\ð‚ Àà1€€ 0ƒ Р6¸pì€ è2pDº >qŒ> £ €C2’Xá=þ˜ƒ,”ÉÏ~Þä@‚:£!¨€B6·Y $ÀG8A¼’€H< ëTÆ2>!f´¡ÎZ žq ­ùó¤(u‰–0,'@à PˆÂ4 48h(x0*T¡§ˆŒÁ PQ|B€Æ0.pU2* CRJÕª¢Ä WÀB´°.t^øV1´` d8k´ð* @…þP fP¡[ ‚1æ€TB«ø ­JØÂŽDlˆƒ" 4áŽ5¬d'ë“R,uÐE)(ËÙÎÞÄíñ¬hGû^ ¨%˜˜(p– Ëþø‚†k\# ™ÀPADÓHÃRL’kð‚$­r/Bj¨ÔMxF.$R )lö"Àƒ1äP-…(à™°FðÁ…ìÁ¸„5Ú` u0$cÁÈD°üb¹5 Î'( i0ƒ„° ˜Á RP€/ `@AkPÊ®qì삼àÃu8°†+‰ VP…\p +XkÀ€&0€á·g‚à b€/Øo5‡×À NÔl 5³‚ Ö`+\cѰ˜áœ@)„›ÄÀ XC81iXc ¦ènAÔpŠ5P€ƒ¦p.þW0°^,Å Xƒ*–‚†Ç ØB8ê Üã˜ÄX°M ÐfŤ`5¬‚ 1èŽ@°L`¢Òià8È,à Xƒê,Š_¬@ÝðÆæ1\ü6^`ÃÚ€7¼qø€æ@‡k@ÁÀFî (à ٘@&"Ñ(`ÚH‚š¡ Â† FAH°›×è!´±ˆ%h£=ÐFüaðÆ+æÝ‡,C `à†0äA€ªa¤9 pô6´  lœ"‰¨C"Ô!‰`P‰`ÀàqGè ÁHD+þîroJ„– ôØ$Â0u¦Y b¨Ä ëx>€‡8ƒ¸Ä¼_¢{Ûs ¤ ¤1  N÷Fˆ€‚ '†µ°áŒÄaÊÃÐ!5PÁ'€†+N:ˆ£ Pî-ˆ¼`ª®®*ÞP;àxȃöÀ‡8d¡t¨ù¾± €ã'¸B¶QƒR,¡ÙÐC7  ‡A„CãøÆt Âr,ã —ÀÀ¦a‚aÔ „°9Ê‚/àÀ[`:2v‹ë $ )ðÁ܉ð'£à{xÃ>ƒ 8}XFµ™FpaÊø†Bþ`‹á_È&¾áT€ )8pa<"Üûåȱ6>£€Aø° ,8☠»‡ …P2 ƒµ N×#ÐQ0 0@”I   -P1p zPß Å°B€ ‘0°Pp þ ® ± ë %wTåð`wð€& ƒ€„ЇHX°Gµ y ˜§eP€pê èP ‘ÀêðLÀ ÝàzØ@뇰­` ÖÀÒ@ —ð†Ô0Xàâ0Q|f° w‘ °Oãp(" #P-ðpþý€ŒP_Pt°j¸V@xp ¡@Ð ñrfÐ *°†ÐFP 9€ S Å ÷@Jðox ÓP¯¾§€¥ €¸ ' @\`<ˆ` ãÀPu&P&p Êj €'à[aC  à 4XUgÐcP<胅`‡€‰ÐFoÀ ëð ðºíPi0Pè@m­'„DzéP IP  0 L0cX†¯P{0i` pp‘(P1ðk®ðnp ¹ÀS€p_ñ`éPñþ ™XÐ · ˆŒ l Ó@ÆP •€DzÀ @@ i@ éi 0¿Ð Å`µáà«ðyç°NÐ ùáP¾ßp |ð ø „ið Ÿlpšpp7F°ipDŒËØ ©À ~ ü€?pòm@ÝXUj ‡°ŒÐŽ0 ‘ “àð#Ð €Ÿ`{Ј ‹PðŸÀÎ0¨à YÀݰ*`ImPáV} e“°îð Üàİ y` & ¤Óð¹à “þ„A{0’P & _1€Ð´ .™Ð bÐ Ð ¦° |P Ùi>°´ðNÀ@ÒI °sÐ ‹p Ѐ`m0ÉÐÎ0   •ð!p aYðµ·NPxpÖ ¯ ÎÐ5CÖ y (à¸ðKq0§ © &À ðÝÀ¶C( ¾7™”¥o…„ `ï Æ % 9Ðð7´M¡K÷Ò`B²ôña¡¤¦¦Á Ò0c4§‘`à› ÁÒà{j*Hu hªGjþ ­†¤ˆº$2 ½R„ ñ]àðÚ–¨–z©a1`‰˜Ú©žz @ Òp xÚ° ²@ qpfP/UdðPÑ—púñ —pZ àªp ‘ô§p œ òð©ËõÞ@ O1m`ÞpÉõG0ô`:pw° ˆÀ Aä [€w ¦'W _ð¥:‘pí ùÉÀkÀ÷¥¬…GÐ"tg0 ¥àÀ|PB+g  Þ€œp¸%GpO@ Ápñ §pgð € qp BÀþ©4G@— ˜  g ±  Gp …PýiÀp(pg°ÒÐê  g¡€fÐgp5Zë @ôI Ž€» $`ŽP¢À´`ÓÐVð gP ûŠÀ y$± ®øf g€ îZC°®p 07ðÆ` '7À 0ê`ð¬?°µ‹•¹óP p‚à ó ã@Ò€ 0 åÐ4üŠRf@_P eYIðèp{P]À Q Îpç ¢_ðÝ0 w<\ð¾°¡t0 cþn`ÁðÀ Ï «JÐ÷`Úà§`°TpÛÀ÷ðm= “àðúû} BÈ1P ÷€TP$àß oƒÚpx[ð©ðY€°€ î ù€]0Úô” §Ò­à]pfà ëWkçð™p,}Û—@€€€ûûS`§VÀ¥ +Ùpé°m`Y0– °5° P¬`bp ½p ð+ò BóÒ@&p‡ÚºÉô–p `s–Ð c %ì°T0þPÀzp0…÷'@2‹ \’° pKÏÁ€ ñ_A°,𗀤€xp L Œà=p ¦° ?вÜÉê4¨`úpA0 Ú0³#P ”Ðñp ¨²*ÀÅ­p 9ð "C2 Qe¡ 9ðÂì`— †€pÔð„,³Ü×:´  *°¿,†0k° ð Žp QàŸ° 1š×óSÐX} E@pÜOq dU„a Û mìPpL˜yƒàšç0Q ‡ Æþg€ Êà^’ðVÐt‹°ëp›ÜÉŸÁ°°PÊ§ì ·ÀÝ  4M @HM¼:ƒpË;`04ÝÒ0 p s s€ ¨°ÌÆÐÎ Í#³ÔlÍÍ/œ â@ÓbpC7IÀš@ IMR`íÌ„ ¨4-»°'0á ‡@ †œ°¢ùPÐ }:ò ¹pÍOš° 'àð ?p ô 9p ^à>p.Á@†À 7Œ@70 € ‡ \À«À> ‘ J ¤Ñ€ûJœì ¸þ ž@ ÔP¤0?} ºàÚÀáÐ ŠäwKƒ ¿Ð sp¤`ÔÔ p@H80á0ÊPw ø # Ý”–Ps !mP§ÀAŠà̳ºâÐ5à `— y0úÐIRÞq wA !°wŒ‰àk RÀo¯Ð±ÓPs ”øÍÆàwá¾È€@íOœ³À_P RBŒž4 ¨Xð ,Ì 8€_ kËëàZØ ËÙ „à4½RB„ðî MAŰY@Ó ì·@Ó«0þ` ëÎîðv²ƒ° _@HÀ‡>«@Óq!«àðî0²0 „ °РÐ4 ¶±4½^ Ô_0Pp©> 5Ð çpë°¥ A Ið¦ w¿°_  M4ÄáuÀ  à <ë0:°$2ô@äENUšÚjfP¯lë²¢Êo!‡Æà®èN¸›º¼`  ö¡Ð1Pïqr¸îM£aðï ± ÕÀœ ðþN[ÚîÛÞð8¡ŽÐ¥  MPîŸñ¿ñœ% Ä` [Ü@|àþ ŸÐRÀc°m0 RR¸ºNŰ /Pï40 𿠱Цð§'aP  Àïq/@« Ïà³ QVÏñ¤c$\1àöéªÀ? º WpCk?0H°ÝjåðãðéC 0¤‘à·Áî0¸Á {p¯@¯ñ O€‡À d` wvÞÎ aÊŽsÝÐõZß2š@ +gü`¤? ü`U Nš £w„>ðç p æ0 d*§`®Ð½@ æà ºÀ å —  ïþðÂ1or Îá 0`æp Š`à æ $%€ý pzàüð$<D0 ºà^MPÖÒ£àoX| ƒ >¾¡êÀéI3íÌ™£À¼gµ,(ŒJ¹ü¡¡P£(~ÆÖ¬0äÆ s¯l=`ª 2ÌñóÁž'~~2×ÈW2Üf铦áÉ:1b™ Äíœ,mTdó€! ”yæè™‹ ÏÑ' ‰ñ1„ÅB;xÝ0·cI: ¥ˆÙ)ÄM#ki­Ê¨Qï^¾}ýþXð`Â… FœXñbÆ7Æ„dQ™i Z|ÐäÌ(Rôþ IR.…󢨠E8TƸ€ÖË BsŽtÒÁ`ƒNÙ"µ¢Ådž›@·@]„Jy:CˆÒÄÛ?yüÖM˜Ñ!Kö_Ú\ êã ’–<Œ¬¸À¾@»"rB¡ÁM€\~€ÉåF„˜æ.ð  ’`3ŽØÁ’+ ”P±g"bA“b’øÄ™?¼QN¹_ü3à L$è‚lc„±f:¸eà n€ˆ… =>¡£ ”¡™.f$º(<¨&…EVñ€8¢éàžPA'˜?Ø‚=ô€à—DÀçs&Šð(¤?8PþhˆJn@‚ "Ù$†Çþ4PA%´PCuŒÌ¡þ!ã‚-dᄟo 9'´ÑBâ´i´˜ÆIÌIb½8€`T-PšoŽ!ÄTú馉/™Áaîƒ~d¯ °Â »d;˜b†?Îq€&NHC!2NÀ¶ŠGÀÀ–ùfù– )°9¤Žu^ ¬€2ÑK•$ s*¡Ÿ %¢!›Cái~ýU‚½éáŽæÆ‰eEG\ü …<6ùÏ„<2Àwx%}¸ƒ2<Ù s˜àBƒ^¶‰AiVhp<€Šhbf’AB€gFð¡ÁaFþ°Ç{ªáŇch„€¾ ±ÇÏæ:@D§¦ºj«¯Æ:kÁlÉE’„féÁh0ñ•qöÈT4Ò@B‹ æUIÆÃ&½PU‚pÜ aZbÕ„¾„ºÇ°#Œ<oGX®Ñk†k°ë@‘deQšÐ…°#tláÖ[fq nÄ%÷BÐL]v5rwA9 ¡»h) ‰C8â#_<‹èÇ …"@ \üåwòÁÓ„(¶c9~æã < 5za£…V‡ˆz`¦¢à¨y Ñ'|¡ºàÀ‡-xñËL`7^" ¦˜ˆÖþ¸@6Ð ”@< lC ‚ˆ ØÐ:CO¨Äš0>ha ÈGþñ†gxb{ Ú” [8&qŠ.ôCpÖÀÀ‘Œ^üÂ@¢ö2„$°¡%0üá2@ÀcÇ"!5ȃ‡,öRCÈC A,ZІjl##8„ëö˜8"ÖˆE)€‚dXB (êp 1dÁµ€€wô`@"Ѱ—¼j(CŠðthCm B2Ü`“ZÁëˆÁÐq‡L âÜ#ƒ:‚0èÀ ÈÆn08 ¼ÌRþwäÀ_!†A¤‚â°#NðŽW˜Ö8A,œÃ—X`á?VÐ0æñŸ–ÓœçDg: ³Â Á4à1 x(÷ƒŒRŒ+Àc¥@„.d0½€óxÀAP‚MÐSc>0JÀ º¨‚ã‚KèâúÅ3®0†` °ðB^Æð x˜a/Þ€ šà %èç<ãñ$P0hpÄ=Õ¡„=Þ¬ÐÄô¡ ,cFÃ.Ú± cÀƒ‚#Öa x(¡ üè§ ð¡]à?x?~ °T  Æ4:à?`¢„H5æqþÏXP°I4¦€kœŽDø6œP Ì£×È-6 ‡„SðC"  „!‘>—Ç&$¼.Àx ªÊ2 ôá`.L?\#¯@žà_<€ P_8#h„\øe`ø@gx)8€H1˜:OXchh€C q(IHtH"P è a€ç:J€»¹sÁ<'hsð…kÀ€.à `\À`ãOÑ ƒjplhƒSI•U,¨X‘•~Nø‚o˜þgè°…i˜`Ù 8xЋ1ˆ=…Èr,°HÐ3†h­…°‡:ĘHƒYà°…:˜R€> W0€T˜hÁpئ{a Pp<@ Q?Ø ‚®0_ùyÀ-P.hœü?p†$”† øüº eð…8€Jx†8¸ø‡Ð@eØ\XÀmp{`ƒSà † ð¬p2€ÁkÄF‡E dACX%@ƒ2 ƒ@ d›P‚QÐ;h" +/Ô¼A•5À\耿‰BÁùX ºþò8âIE½C1Ô2´®l¨/ЍV…8¬*‹¤ÌÃ=ä%°„MH€|Äù1~€€ +% ŒGŒD 1€?ºZƒÿØÄU€4“#èâ:Ñ‹S,H_XE…p†‹ù¹ (]€y¨EFÀE90€hW‡v¸‚{Æ}" `Xºš†H¬“ˆ4(~81È‹lT˵œM°…/ H(P‚ql…:0.¸‚AX „]°h<¨‡x‡D(=À…½° u€dÀ*ÀËj¸eð¡ØzÈ*ø†6h3MÑÜ‹xÓ†=hþH€F n˜{8Fp‡7Є!p7¨†~°. 8H ƒN°<ð6ù±Ì=Ð=˜Øù |;‚”¸Î 8GÇA@ÏDU…D€ƒ.€€KMÒÔ ø.k(øF…H(H†(`à'pI ‡(€HqPd(‡lc€60z`À¬$r˜‡¨ù‘‚½‡Ø&GX„x`ËEQCYƒ¸#|X ˆˆ‡í€ ÀU8iˆ‡eÈÑMpEØ 'ˆE…"•…˜¥ð!0€xþ'h€Mˆ†´ì® --!Ñx ç°€hè„÷€ ¸†ˆ–½P„xp‚€Ó`ÓxP(í4˜cØ|@É¿X-Uy T€XØ)à/•8VàQü‹ °ƒ„ ð-„€‚MP(ðƒY —ò?NL^` àU`…¨U P‚`¡€QØ„Ë!†ìTH 5ÖcEÖd5”4x'euÖg…Öh•Öi¥ÖAÁiWS QP P€lESÒN˜€R†ßÜ )PÀR0l5i(E(iþ_(ÀÖx +دØ%À„ 0/P‚†­Öˆ•X¾(®I@=âƒ=øE`Ž<˜Y h‡Iàɽ¨m0*L0©á‹NÈtx½è‡Ò½ø„=¨@iȃ`ŽÃ f`xø¨WÂXrðƒøP…`‡‰µÚg­S 3 (Y˜$G)¼k54åÚÛ‹³€eûZ1Ò,¶W¾À<øsà1+x8/1¢2YðÛGÀJÝ ppM»…Œ €24H»0ŸRhƒ@…8ÙyL…6(€,àYp@…89€‚¸Ø&Y8<€¿ÍÞK~A'x‡`hPPà» |_`Â[›NY-  †R0ż0‡€€qˆEȼ<À†°†3 EHmèHÀƒdæ1¾€ ––¸†ìƒ{`WˆØ7x„)0ƒyh‚oV[ ƒ3( X«E—VЃ`"gp‚gPi ÎþD…)È (_(‚M È*Nݸe„N;Hædf¾(cÔSH€"øX‡Q`Và€p.˜A.À†IØã_!H/è …6èjO0&ˆ¢¾ƒw0°4¨„x„ÌÅä ®0Ü{„°Xè‚+^˜„T_ÀO¹†Dhl8Ǜ弱€@‡I€ÂÀw€lÀêP¸‚.ì‹fÖ1P€€&Ù€™–jdèWØ–n™]hƒHØÖ9g" 0l°ç¿P=ÐWî„|ج&0è”S Ø-^€ùþ‰93n.0|øö‡³¡Tˆ‘fC0„*(.8`ipƒG0ЂcÀê¡Ý z†ÃUˆ`TÐ#¡fî Ã/P ‚m˜… ’$ÀƒAkÐ#$°„)(-°€`ƒ+¨âÛ긾LÀ…iȆ  ±Æ6R8>  X­$uà‹¸ˆM€xV˜z˜/`€Hðˆ…(ÀE‚0€ ÇÒÁ¨Q †Pf¨†hB€p?è€+(V¿P€2˜ƒEÐ)Ђ@‚iÈTØ‚/h;ðÈÿ&þ‚¨GNÀ2(€4àO@"8ch„k˜0\piH à(xø€H}8ÝæmG¸}È‚5`r½`‡[X{ðhî?§0+ˆHP…"ÀQH„? hpp0hƒ5:H` …38ÀƒI‡½Àø€;€rp‡E‡ƒ`hPÈÌ`Xf¸‡`‚1 p°ø‚Y ,Öƒ1pÿ¢R…DmH#8t`övÈk@#‡ˆ#B†+8 ‡HÀ0]@€cp(p@C(wbÀ¹xqxƒþ¨*àg€hŒ‡°9À{@€\¨‡Jˆ…`‡ Ø…¸K9€8`€°^è:è†{‚psk…} ƒlÈ4Ü ;åí€è@gù@w)QU+4U+Pƒ›WÑ$]›·3à>Õ½°yMz+à ¨y5°M0ƒœ7z>€æ œWúÃQ%úQåëR ˜²½Hz¥7 àQU¢·‚¥ àb¾0ûœozœM40»¬¿y¦× úÀ˜û›oú«?û¦W_°.3_Èzå!zMÈQÀyMhüž¿>‚ëUQøGÐþ÷lùÏýÐgŒ!0 ýÓGýÔWýÕï­ Ö‡ýØ}q€/ Q?—ýÞ÷ý¸ã„NÐ' …™Aƒv]3|8IS)XX_@Up0éV)~!8f¥]0)à~ïï~r€Fa ªßGÿô/- x‡H]3Ðs0%P†J†U@lÈ$„zˆ­ ãÀ?Nô¨x±E—=#â€PÃòG²\8”%2D%=8r4ðˆNV²léò%̘2gÒ¬ió&Μ:wòìéó'РB‡-jô(R¯¸°ÂÒ× ü¸9çŸuÁ\íþ`ˆ5)ëX`, €W9¤xt#Áh» ¼ ‚]D‰ÊÝÐ,SAÕ|™‰“«Úš¤Š3nìø1äÈ’'S®¼óN+~¥XÊÐ7@ŒutÀ”€ïÄ••Vœ[™¥,´ßвrÂÖʺií;… n˜0qçÀFXnîü9ôèÒ§S¯®ÓÌsŒÂdÙÊ/„bbà œg(0¸è1 €,ùv¤ÒbÀU½d»âñÉÀFŽ1|¼bÃ,{0¡Á& P•Ð2Nã á ÈH`†j¸!‡zèÜGì2¯°D-m,€&s¬`ÍÈpA 4ÀMÂE:þ*Ø¢A èÐBË-jˆÎ0ˆŒcO6ƒd£*LT‚psˆ`BÜ!…(j¹%—]zùe†P8£RK LÐÒq0™qfK¥¤¡K¥|&̤D`ê¹'Ÿ}úù§MœÀ(¡…z(¢‰*º(£:úè¢jÌ2K'Í Â4ò̲˜*³L1Õ` Hð2‹/:Ë/-¥1 /à °=ÔÐI-ÅÒ+¤Á ;lQjÀðA–)ÁD‡tÓ ôDÁp°=|TÃÝKK;И1Å È Ã\´$hâ’Õà‰0]“Ov  ÆJÌ,M§°tÅþJ{0Âk0N$„ &ÞÄBC8¡\s!É´€(ÆÄãD(áàK¬Ù¬„ƒ+1 O(Ñp‚Ä8¬€PòÀ/•Â+£ÈÀø„ò ¸S Ê»„B©Kó.ÔàpA€ fR‡¸Ló'É@Å) ôÏ!ï+q ±’)Õ¬C4¡$!‰Ü,qâ=%ˆÚ¡ƒ"Ì…/ÒX¬J(ÇIpE„ …+ñˆ"M*It° 휳‹ T AɈâƒ7˜$<;퉦Q 8Y“È8c‚:¸x² $+il*0çP0Â9lÁþ$xøâR´ÂDü\SI2 àÒD"Ø´J9®¸ADPòJ:í—cÀqu°C:¨ðCo@À9P, E"‚¡ cDÆ8"à18@^`’À+ˆb3irIÔ¡æð>C m¬b ý`ò¶F€¢­ Jоt´C ÇÑ@Ï!! ‹@€˜pˆ°Á` Âh€4ÃB€Æ1ž1‚@¤c PA%t· >@(œ†=$!•Ú‘±Œz"D –3 ƒ ¨Ã/8Y,`ÆÛôp3èÑ–˜E¨Š—°`Ã,$p uüþa5Á*2‘ htê`6¤ñƒ@pò(lI-HÁ'8A /ÀøeŒVtBŽøô¡x`ÝPG3F@xl@梉!ðË ³áþ°u¤â¤S! ’ÐMäBj 'áTµ„ pàÆ,  †I0ƒïRG"®@)œgHF+Ì<¨èЀ¸P ~½„“ˆKœ` K\ÂŒ=¨‡°rØÁ\Æ07: 6ì£ vÌõ°Ž0㺨Ç7¾! ;2`ƒ:\Q}üÃ‘Ø Â:‚PŒ$¼!¤ÅðEŠ¡ÓM Š%Ó`‚á˜Cþo+ùÁ ~°’>@`!冀Ò^P¢  pŠMŽùK¨#„.ØÂBÚ¤PoH78` I8!:-F'·èa'HÌ$ÈÀ’Nœ+)°ðTCØ#¤%àú>ùu¸£gtš†&!„R¶²ÕQC26Ð,H†¾ñc(”PÅ-¢  Lè!ÅØ9‘hÔ`|() °ÑˆŒ` [P>^ÓK@B¡Â, pŠh0wYjI–ð€ ”†˜Å(q­Ä 3HÅÆQ,TcªPÇ®1}ð#41À+  òå ”ñÊ-Cþa*”°…=ìC€«s£3¸dˆðC ‘G逰HÁ5\C\ °ÆXÁ‡Y @î¬ÀY‰#°DÚh/,+ã;Ç ²€Ìp‰o¸ÑzÑ záß‚#®á@C¾ÀPÁ |± ƒ0GšaŽ)CÏhFÄP<¢¢(8L@ 6ÉÄ©0)|ûx@*¾ñ|I!¨¨Ã,8 L˜@ N°B3*Ñ ~ÊF‚:ÀˆG«ƒ ô*ì„T€9}øG ˆ‘Š9ÉÄ €0A96ƒ,Èá…D3!3$@¨þ€D4h@d¢@ÅÀà–\‚ÃÅ 0l3»ÙÎáÀsar¹^`Ñž‰®ý’P'`4ƒd¢† ô4l·PJ1e·„즉&ÖÍM8&¢˜@½)c–ô”%1éœ-ð¼²ØwÁ®ð…3¼á_¸ {A„æð¢G@Á!`¢ W µ&‚  Ú1˜Äu 4ˆQĤ½8£@uÈר…,Ê‘˜—X!®¨ –P?Ô"ÚV(DÇ®ô¥/F H+€l4¡Ù€ &VQ#ì‚I4N€„.l&>HÂÁ QÔÂ1¹þF?BÈ TbÝnÉV .4&xF/VB~øUVXÂБok@‰éŽ|M|ñ d$àDàEÄpŠ&œ£ ¸#Já‰_à­Bž—`}ðÄ30€GœÃ á…lñúSX¡‡Ø^Â"$ 2XÝ/ÎqŽNLãa@pjA…ZôŽ8‡@ð/œB² Æ8\‚†Q¨ }ÈB œ¿Ù•\à ÐÀjW?c€@œcvw â†Éa°8‡-„ƒóEèÈ@œ‚òAœ=>\AZ x€”Á#€ÛM`‚Á@žÒ%xC$œƒ,þÈCà àB*ü1à”è .œCˆÀ9„ƒ!´C/Œ€À´/è”CˆÁp3üÂ=d¨@1”à B¤BC\¡98|¨& €0 †-,À)x‚=0ð€A7è,ŒC´/¤@ `|ôÛJ`B?¤6èÁ<€€'tÁ¬ÄôÀ4C.ÈW…ì6”@7LÂ/\áâ½…¤B Ä"t xÂ0°ØÁ"ÐÁ0èÁd €dƒ¸[%®„4ìIe TBšM8AôØö"eA‚ ÀœÔ @4/Ø‚) èåQþkÂ9ˆA>¼Ã7€Á¦¸˜JÅ€:œC5¸@B”: Ã;ÐÂd€à;"Áµ…ƒ 4Aèõ/ ‚R)ÕJxŒÃ âLÄÀâÞ€A₼ƒ;´B†ÅŸˆ@1@:L‚4°#;žÌJ¨B0ìƒPbÌ(Àœ€´àcø ˜L¤Ã7°Ä|€?°BN8̰ø"N’ ¸ ­`¨A9$7°ÃEO}ÈÁ9¼ƒ%$C2@¶D6ž”:x6üÂ7€cLùüTނ܂œ¥>lK¬T€ÚãQ‚7°Ø6´þûmÛ@ú›A®DƒTÂÃ…Äß2èHÂ$ÐÕYêÈ´„lÃ>,ÛG†äË€Ô?übµØCÀIÃ-l@lU.:À ìAæ$k&ŒDÃp(À@@\éÂ6,A¼¸Â;ä€+d€9Ð98 €!@B@C4ˆß耂.‚!x` W´ƒ lƒp‚"Œ§4€&dx<ȨÃ0Ã<°@p ‚LXCX‹LpÀ<äÂ$x `#í€v(°Cì B/@€:@A´ C6ÈÂxާ´„(ÈA04B¸ƒ"þ„Â$ä ,8À| €-XBä¥È@;˜ ¼€ ăiÚ˜Ôƒ$¨ek)±P·DC2Ę<@ƒÄB2œ‚TJåHA/ÀC!$%Hi3ìC᱄4œ¨ÂTªB ì“&Ã,\AøÁ ˜A, ‚$„MÄ€-4Ã:4é“^x ‚ $ƒœ@ CM”‚:Hå%d<鸬B3Ü4“Nìƒ6%ÃMÆ0#Ø©Tž"‚xÂôLHC5|’ÜVOÄ@,è§Îªž¨Á¸‚ü„ä%KX»Y&ðêKìêLhBÍë±öêþJÀ«N+¯+N«L¤ TAAÀÄ&¬¨P¸*ÂѪ¹n‰(øBôC%hC7°E =Ìk—hÌëô¼„þÄX«BÀ=ü7+Áb„ ŒÀ¿RÁçl‡ Bü+¸As:¬Å:&t€'àg>ÌÀ¿jÁ/@ëNˆ‚äÁ4°© QÐ@34ÁxÀÀ²ÄðÀÜ‚p4ÜLô8ƒL²„>ìÆ´Ä#Ô,· E(Ô*>°Ä¤CÔÎÄJ,PÁe^,×JÆ Ö¾j=0BgÒ„(pÂhœ°œh‚d‰@1àþ&ˆ‚Û>×Ü L°äíJ¸­ì`&hBßrß„äBpÃÕщèí˜C»é§0CîĘËtÃ%$ÌìJØAxüÂÁqC ôªµH@œ€ÌÝ<@@ãÛ œD­¨í»X3ìp€̉10¼®|R¨€Ø¸ÀìA(A²®DÖjƒ)t­öFFBØÚ$N€.¬ƒ7üƒ#ÈÁ¼Ã?ð!è92Œ üÃ"¤BÌ¥K94B*¸C<,´ïìÀ9È€ì™È$¼@¾¶&4i ˜ˆ°Ã?Â.|´‚ þ||$€%Ô€;$$È€ÁÈ€;|€ˆB B<ìÀ»±Â@À;@ÃüÀ?üG@< Ã?À Iü.&ŒAÝÉîKHÁ'ðB; ¢'ìpÄ$Â’a@èÂ?¤Â @&$B3È@–Á "h‚,/p°D7$üAÙÉHì4æöæ1cH€;`-(0‡M(‚Œ@Iø:ü0ƒ$@ð„èY9œC)|Á9àCLùò¼UÃx‚!”¨C)„@.\Á=´A+ÐB?B.(‚„€4 ÂÔòpBª˜Aª¬C ,2ÔÀ/üx@íƒþ4Ä)ØH‚'(ÁXHB7(@.ƒ.X@*@Àt‚HÀ˜@*˜ 4‚"ƒ¿nÔÃ#„ @Ôò”“.c&LC|Â<ƒ,ô‚ 訢À¤ØJ$õ,ôƒÄÃxe@ÌÁugA)T@¬w?dtKPƒ-ôŒˆ9ØÀJølB¨5Œƒ!ÜH@|Áu_ÁG·^ÇÉ^›E=ÜÁu‡Ê:K$t Dƒ¬wþxAÍ€'ÈÐÀlC¤‰ Lügw4æ@€#\7/¶„+€Ãs1@U×Mü€@;ȪmÿxNDÃ?äC*pB!€ -NÈ‚¼Cè9àƒœC"‚6€B ¨p>ȘB>D‚!àAØÃ $ü\KÀ ´A¸A¬Â=‚)hç!\Â*ËÀ?,nݾ›9€,œÀ\FLB7„tƒ”×B€;@TÃ/4A+L‚ Ì©ÊÄ5°ƒ ‡_8È€ TC9ø8 4Ã*ü,-ìÀD„ÂzW‹¤2È8üƒÐÀ Œþ<P9ˆƒ`€,´:Œ¸À0 €9Ci¯Ä´«Æ*xÂË„&È6à1;MÐÀ'€Â«¾A( Ð4‚*ô „ (BÜ/0À/t@pBô{¤/8=¨B°@À/Á09@Ѓ $€ÃãÃØA¿óP€ȃØÁ%xt;LA,ÈŽ$@'ÊSJ A3øA$xŽd˜'p‚ÂKF¼•‚`d›©K€µqÂáÀ`À.ô©êÃÄt¾{¯D ­KXÁ¸ '«亩ÐÀÙââïC†´Âþœ›äŸ´Ê%Á«A;(ÿcˆB”:4‡/dÂrš€´ˆÀ9¤ C¿Ä*0Á¸€2´vKà@,@?´„-8‹¡ÉèÀÐÂê\.@ È‹h¹H 0)á@‡!F”q¶&fÔ¸þ‘cGA†9’dI“'Q¦I`%¤†=ФÒa©”øÀI§(%1^¸ÓB %^>y Ô @¢K"`€×h8t‘­&0² „,4ËÆD¨d€_˜‹wD^–úˆ2&AÚ¹ y½ IÁ—T`°ôêa)pf­à €¬ H“Q—'¾D0ÅN^’†jª “Uà ͌‚z@﵀ 7pCQ‰©nGHDéiT›xqãÇ‘'ya:-ÄcZû+\娡[à ­B‹êüñ$0Q *@qëÂ!\ÎJ„ve3xæ…æ!þ7ne*fjø¢ÖàÀ ”æ8¡À\@…y0!›á®¨æ›D°$¤Ð ‚ Â!„º©D–0L¨æ x¡TfÉʱÃàçHÙÁ)å|”¥3¾™$.ÔzÇ6䀈H¾  GXH€ (°$PNS Ðbåp üñ!%4Ò™m¨PBŽCà TÐA -" ˆpÃ"6Æ)îa¶˜—n&€Oøˆƒƒ6ö (ô8ç‚:ι!(®ÑˆØøã*èàMþ¦8„éáŸb<(Csì‘åˆ%cºþ‰Fl2ˆATvŽ€@J¹d†%Ž0c™8Há€r6æ‰ ÄÝ, DK–¨…XpÑÉ¡tðé"X‡®À•D–Ái"J§+n`9>,ŠdÐJìDi0€føÓБI.Ùd¬Xc’z £Ÿ!Z#n: B GŒ E™c$: Œ7D`P4a­Åé„8ب`´7(‚hC0¨`i€@)$RCÄ!2@$ k(üÃ8VG*ž£…®-¶2ð @\Ù!ºxƒZ RŠyTÙP`¶PœúÀÛ…$àS°à cXÁà‰Iø7 †þ‘ÓÍYJ@+¨L‰« dqPt¡9D”Ž:€‚Ë4AÃ:r± 1„€Ž78†úy| <ö1#Rˆ „€†@ÐàŠC"ö`Ê!,o'öÜáÌàÖ"‚á Xl  fä!naj :g â:a$–ÀjÀP` 8a~ $Ð@f€À8&`Æ! ÌMîPåC¦áX,`j€"@ÆÁp€ÊN¡.¤aÇá–Æa5a+‘Ê‚þÀ~Á¤AìMýHB Àäcå l@ÔÀþ^­æ‚ÿÀâ A À¥"Pé˜î‚a-  @,¢ËŸñMU Á,Bt©d &ÀtCtƒ, ô„æS” ȱô&@Í bxÔlÊñ3\`âÑt(@0ÂP¡ 6!,ö‘ï F€,E L"!]À^ \*¾àްá|¡d, Ž` 0ÁbFÞ@&ï @p¢V€ºb ~  Lüá8ª ,€ŽDÁ¬€nG bàpþjL„ ® 8a ¾K$p  ÞÇ­r–6  j!4XqƒEñ"dÍ!æ€ n±ÿrq{q €1é•QÊ ð2g¢Ñ¦‘ÉPÀfî ÒPœàþ ¨€À€¡ ¾!ÁSÄbˆ €&  P¡Ü6&o¸` Ä~€š!^€N@¸ t @ €ÀX á7 H`xAH RS’á ŒÀ@aÐ T`†Á®ÀìAŒ ì<BAH@b€_b6Ø  hÀL`þ¢`< TL%à˜À ` ¢á7a ¬ 0À @€Á ôe4ÀØ` îTÊà:ÁüÁ°Á–Aò L 8AÒA³bp`4 ÊÀâ+$4Á–êr®òFËDzÁ .@€ mX±øÀfÄÖÈÒæx‚aFdŒÁ $À|À F@Ð¦Ò ü@@†±@ ŽQ ”Ѫr.@¬€/Â/O° ÈL$̀Π €RtdAÈ`F†À¬¡ @ „À‚fh@å8 Îar n€ ¨Uþþt@p€2ÁVŽáÐaÁÚ@ ¤á¡UÅ€‚ *áVžÀP`Ð! \@ †cÄàfÀÚÀTá¶À$‚ªTÖ‹Àá0@ v@Fjò³Æ´€èÆ¡Zu| N]Á àÜü! N¡"ÀE ÀT` à À§¢!Zá B ¡Ц>> É:âX¦âG%ÖPâèqœ R‰B,Ï<–Æ¢ÀÀc»ö!L4`¶`<À„€ö Rœ& ázàKç’L`ÊþA#\A ` øa Þ@lša<ºÀþBḀz Aö`á!,†Ò| I" F”!—mùª±z|l4i98ž~„¹lœÖmT‹ÀH3âÐ"¤Á(3ÂîJÑ!0Á4#"%DAªv Ò„#*À ¼¡¯ý:# @`U d`! @ŽÁ h VA R- ,! ü 4ÁÄášaÃìá BüÓGÎ  ´l\ L„Uh à6Ò Ê`xÁ3Ô`ä09ÁH)Á’"0Á|A0Aàà½À ð} î=éöÝV×0` zJA|ÈÞlFð€xÂÞ >)´³ÂãÕÀú<( àžRÛe‚À¹à á: åG¦þþÀâm8AtiСþ¡dàQC€à@וa¼!Œ\A¶àÙ r@ æ ¾v€FÆ $Ár]þÜ$@}`{"¨AÌa€pá Ö ö˜`DÀÌò0…Aæ"0Äàê`êÇ!4áp¡&#Á Þ$òWa¨&¡Ê@†@2aÆ"®ÖûA’A º  Pá L¡*Á˜ÀÄ'&Á&j‚`t!\` p!VA´U H3ßBF ÖÓ~P¸Ø-ª p~|ba–@V¡ÐFè‰ÞþèwáÒá x€>¡Ž@¶@ `¼A 誀´^A 8bÒ¼èéáH€… :|1¢Ä‰+Z¼ˆ1£Æ ƒ@€€O¢/aš@3§šIåüã2JÄ$ ˜òü[˜æj½¡ N‡RN€×R‘›_0ÜÎ 9Rô‹Ê,êVÐæ‹á"b,Úƒ‚€˜”gl¥ôËׄ´iŽ…”k$¬ D `¨,CšLráF§Vˆ8:~ 9²dŽñþ0S§€ÅäÍ­LXò ‹Bׂ°ºå(ˆ¦0à`±ûð)-p~†@ÈF« þx’ò°;Ô¢ZbØR&•xŽJq~=ºôévz@@#âÈ”ÞðK ü¿E˜žUãUóæB;K©˜³…‡U (0à¥L9ùƒ‡TŒÆ"J,C  ðÐõÈ"1ŒÅË ÚôPPœàÊB ñTˆ 7˜° o¨€@¢ “ŽXáÂ$1Ît:îÈãE @ØãsÐ\BQ i¢‹ Æh@8Èà„ED¡Žp d–Zn)™(™@ +ñ¤C#Q£ˆ?ŸÌ!Œö~X‹nºÔú 6n@™0±¥˜Ç(ÃË?nТ +ဠXœDdCʤ@Æó8Ä9â˜ÐM%QD$½œQÏ@ä‹‘1B8¿l@F5Ï<¤É#­ ²Gï@°B@øq˜Àgtô å°A† v°Qb!*Œó8¨LòA°qþGD@Àº^ vØ `†ØfŸÍÅDñÑGñ6t ·à Cœ2A ”XQ%qȢɔ N‰(¼nd|ÃÉcËbŒh@x ¢H`ÞCh €1NX!x88sÆRÀ (P %ðš .(¤É‚”b%h0€¢ `º*N‰sÏ"€Ê>h;¤ÀÏOÿœãxjÙ ™GññL8h2JÔŸ>d…PÑvÛé8Ô«¤?½P|Ò—Œ2'Pƒ]€€, p„€ ! J!@ @z !”B°Åéþ6L˜ mÀÅ`…v|`"iØ,ø´Ž®p†4| ÀѾx †<ìQ)îðHƒ{h:¦<`J\ŒˆH´Âè¨ȱÌáØXÀ˜ Qüb@Ê 6ô GðÀ?Æá¬IãÒ ZðB´x„>NA€^ˆAàDXq‰[܇Kè`„^ÈàØE/à‰@h@›è…'_!Œ Èq”ér r¸Ã͸€¤À*ù–…Ä@Á„ \  Rji 0Á4pˆ`H"Þ€M ó ‡|A= Bð@ðþKp#ÈØ!ê4ƒîX€>` |c 1XÂ6t%]J‡ŠD7¢ Ðq€0ÜðP¸C%@Eô‰È·à0"á7À"ü`à …à×*`ƒU(ÖàF+å‰RI 3h[8# À€! Ð… d€PtÁ"žèÂ0 ±ŠÙ¥T:0€Ch€=8 !Ç@SYÁ„ë@h  7¤ÃÐ0ôð*Ø€ l &jÁ¡Ba_ÒP7ã "ž¨ÐüiB¼ÄA„ù%ÓèùÞðBtã…¶q…mQ‹Hþ\á]1¨0Œ·jV:$PFÛ‚¡‘ 8A ]iPÚcøÀ ¢,¤œ§(ü` Ñ À‡H  Œ¸8Ц Üê  Á0€†Û’nŠXˆ$€†æ>d¥˜€[­…L Õ €-l7;, (…P‚Z²‚ÎŽh£ðEÒ€úBbhhÆ<…P€ 'ÇúR$Ôã\õª\€‡E\á Ð@3¸Ë(ãLÚìd†à…nÔ1œø" >c¯}ýk`‹lc hAbË'8Š0@=LðL àu@Å/=ŒäÉþ-F2‰j¬ ú¨E àd…ÃS8ñZðÂ"ÁBDQ qZà ºíB/Œ x¢&,´Á„8ÀœÀC%†Qè"½àÐV  xÀ),ñŠE # _@F.‚<¨uÆ6ˆ¡ˆ?à‚àHÄ‘…l #%0ô@ äâ–PÇ,ŠÀ$5<£èR€"¼† @4ZˆàR¡Bd·øŽŒ¡ˆ-,ƒ!¿(Á7ÁÚh¾ à7øP‚®ycD;@¯ùOP£˜ë?‘}¬  Ó˜¼ão¯œA þ-`ÇÉãƒjôaä ¹j€ ø€Ùy áÌ ûDd·XÒ/ZвJ _`%ô8À  ¸@ŒEÔ cy6ÄfÐâ<Y ,üÕ ³p)pA=ðB°wZ  Wи§€ÑqcPx 1HŒ&Wd½€· È¡w ¾‡ÿ _p<Ðß@``È`["ð{ã>à¸tP 'Ö»•”Ð ¦Àª€0lFÑ` R ‘ ð¢ù° êG •°ˆ A  Ë „Pªhà þ{à¢àq Ž`X‹Ð Þ`€GP®& óÓ˜ÊÓ#Ò É` Nˆ‰Ø¥@"xÿ@ ÀôÐl€p£ +` ݰ 7€ l /  ¸'€ ¿0^ðÐ ’à;ÀÙà á è ! D0è Lb "x° p Ýæ@à Æ "À  =0 ÃÐ-7°¹ˆµ*p¥ à`À0”`&`Ù w€Ð à= ŠHõhas¥u0 ! ¤HÅj XŠ ¡ Š`{á tň(ÐþÌ ¤ƒBŠÐZ1BÐÑ)÷H’%i’b# Aàé5Jò€ß0˜@`ãÇri°ô .0 à H@ÞjPÞ` úa”Þ j° ×  . nu’W‰•Y©•¢à *Ð À¤€×@ºàÏPpâàÜp6 *À ŸÐ ’Ð ÞÐ9P Á ` Ùð ©•…i˜ê@q ‘˜pG Á cšR ‘1 p’ ö0 óaåP  € &` Ô0#M` Ð(àùp g° àå0u ¡  |þ  ` Ê w˜Ç‰œZ" ÇÀf 1 üð-±:eNГyð@~KQä€S¡~0“? g’ êÀ$F@[ @ Õ° uPë®piß =0 | \ ­ …p4\”œ*¡1W  Ð€ÆÆÀ¡Ç@ ñú±| óÐ8u$0ó¡ q -` òà=¾À‚0BÐ00Éðb6J@| VÐ-:Šg¢ô0 8Ð; £0`  G0f`¾9þ`>°€%fp W6ðr@ FãP· Õ @ ¾P )0 ñ U°l° ¼` ä`Ö ±€ ;ð—&P ¿puŠ©™Jœ`ÚP F@Å0r¸`|ÁP –° +÷@°ÏÇî°ü€ ÅàHp/WÐ÷à©ø þ`n 50 ýã@àYWðnÐ â 'í°üàH0 ÖnP °i† ΰñ0 p@#°‡°€ ö`x+ðb£¶ F ! ” Ä &Àž°d`‚SÂà äÀ^€þ ¸0,p d€/@ðКʱ ÿ€  *0|ð Æ'¥  ;T¢f€ åð|ÔpMp…àjÐ ÊຠkP¥Àj€ @ : j Ö€¬¼¶ „0 “. Á<› š'° @« ° wK0  ]¬ÀÊ@ípŠ PÉþ×ùDè WPÀÐ5À?;€pÒƒV³3 [`ç¬ÐÖ` @ O;À'-×páÍÐ{–¼Þ€Õ0¨N…Ú` j°öðÚ  @³[j 2¡1ð­U• l`ãù°–ð¬ÐÍ@W%ki  |7…ð !î$~pEz ' ñv¾Â`pP " ðÇ bà“P Ãð •0#Þ“`äZITP‹4 oÀ|{`iÀî ±&;p ÁA@Á’AÕÐZ¬€·HVbÐ %0% Å0þ?ñÐÊQV¨f ñç{Þçо>è½Pèð[@ ¤Þ©$Ö` 4¢ÿPŽçàu`™€À‰‚s°€ 9_ x»…Ê€  `ÚPh Ý ÑÈ >€ épuS P$—0Õ°p )ªM!ñ 0 àÍž°CPÒNí&Ð •@ ô@ÀÝ®ˆ]? ˆP»à´µ´u ƒŸ€-%Úå½ð29 >àÍ×P7° ÉÀ 0`bpJp>€c¼>àù >ð;° CÀcþ ù>ð̵e ’:°¦@šð{ÀG0 ¬àFëOp p”?JR æ`0ˆ° KïD’À‡€ …P Ð`¡µ€ åŒBPN™ð®°ñrPa ~ p@` S€ ƒQþ5ÃíÜ)C‹Dà€Ïˆ+¦Ž¼§ ‰8zÖLqK4#RÙqp @.Gƒð@Qv *ÀÂ@¹`%~1B¤EØ0#Š,X;²êXörɈÕÒi³®@8 §•¹Vd( +f¢“3?ž¹pZÖìY´iÕ®eÛÖí[¸qåÎ¥[×îÚRþ´µiõÍ“!ºÛP)JœDìÙhQ«–4ì}a IŸYy=lèÐ …Œe•èEÐ&O’Yö½é@™ àè“¢„U,ʪv‚Á-tˆ°‹C-tE*ºa‰ P^.\£rãîuìh½9±°*Oj~Ö¹ÔÓFÌMÀ«‘®fYÀhd§Q# 0t1häÈÕ¥hâp¤‰Êà¾FJP$–û<á@Èi–X¢‘%–)‹Z@“3Èy†N<ÁÁ)z>Èã à'BX* (¶àÄ)Q.!G=!¸Y‡¿qø$ŒT~h©0zñ°,$鄚FBþ™&Œdl©Ÿ8ú¤‘8–ÉîK0ÃsL2ËtëŸE0Ñ¥š>c`0aŽÄsŠÈx%\ºâ¬+€9a§ a€|@kZã‚B&Åàœ\è9Á³¦¡Ã:'¼i)âZÂ"„–g‹q’JPðÒLZÙÒ5ZâÀ ³0±¢,Þ 6;LjR “œB6­0á+pE+–1~-KcÍÈu·v{–-5¾­u\rË5÷ÜëÐÄä6[Ñ 8؃NÅk Ï–t€Š´ì¨Aî@àIô‹² •”RKÈœL.0+0ž0‹Ô]L]Á©hþèP^°ÃtK6ùä¶JAye–[vùe´þ±çΙ' ,º c—cꀇŽ'v¡f@ƒwÀ`€ Ä1Á•1¼0«:¸e |a¢9%‰\Tù5 Vìq' Y …¼aņ6^)À,4ðPf“Q‡1 x‚shD Xp ‘¹Àg„`vüqÈ#—|rÊÍý§š+Ð2€cøHHž,S8‚±˜†1,¡‰« %Žp„8EþBˆ$ZЃJ0`–D9dÁE,‚_¾Ã"6‘ h à±TÇ)!f”ƒf¹†-?†! á X`Ç%® ‰3ˆ¡›P"z8AM0 –8»€Ê*‚0Îs4¢äH€SnP‰€ p ö±=”ˆ¥u°ˆtÜaÆB-õ…B˜À ÄàÆY„Š%¤#$Â3Aˆ$CϸC:¤ Šrè `.нR¦T¥+e© €ˆaH"€E¾± L#EhÝXÁaš*Á `AØ ûÀ@äñTÿ8FF èÃñþ@‡3àð…nØ‚ ¨Â¤Pƒ9dÃeô¦4áeŒc™øbdzd"µH‚94€\Ì¡Áb0ð‘G/¤ û°À. ±‚g´g–X.ô±$à 8‚0x‹[ O•‡ 06ìCwÇ&0Ð…L ´8F$ ÑŒ„£(…$Á¹µT¸Ã Ó á§àƒy@„S∷ðaÏ0†[Dá$âšËEx%öׂÖ}7¼ `ž(:° { ÀÕ­Á D€dlA¾Í°¦L`ˆÐ*  Š”ãÉ`Z°ˆ/bÚ›(âQ´µ‘¨þl€#€‘@%Üq\ì# øGœb `$NÙ(†SRY`àÄ.¼Áƒ.0âUUp€Z2 ùn!.8A-p‚B( ä*Æñ¤BÐHÂt€³Å(‚-²ûe0ŸeŒ !£MD¡ø`ðCjëˆ ¸£,ÑrfzÐ~”²0=Z¢GAN±Äàf9ÅbÕÙ,ÀD—aŽxBKZˆ‡9Hp­dåÑ„1TÇ$È! X¼NõxßÐŽ–ø":È(&Pƒ`póQ  µ¤a_ü¾ŽèÃl‚K0ƒpp„#~Aƒ`¡㸀þ;ðÑV L¢ÂgèA†°á8ÄH€;LÐN „ Ò+nqK^Ü’œ€-É ú± sp  n Hh –ùÈ7²À'Cùz¸E5*Qìq @¦8A|jeGÐ1ÌÙ=2]®œ£ë|ÀF|üXC2V/”"–æpŠ"zË)S ¯PÂ<` q¸£‚€Æ""š_Ì#–Í¥Ç"ÎðBðéˆå"`i˜caPÂ.`!9” »ÐÇ"ÖᇰCA(Ç8P@á隨‚½ é„C@ ÅЂ$¨¡‰>Ð]…˜€òá­ å ÃþÔ »ía€-a[` ¶q@€{€€ØP`ï¡oȆ>$/ôÂJ”D*¾aJ˜!*AÄ0•3ôí{øƒÞ‚]“°Ã^0,4p# “ØD ®àƒ$ìa5È`±c`ø É0C `‚aÔ[”ÛÀÄAŽAh­8®‡ ðãîð9|‘Žìââa2C ‰V…'îîQ^¸ï"—ø‚¨ ¨[Œ tØ# ‚:aŒ;‡<Á:8(·k‰4ˆ„"x!…Z8†6Ø ð‡ è‚ €BÀƒÖðp"˜ /@þ‡Bèp$ø€-Pv‡ èPø‚}88Y°gPF r؇øk¨:À…€6ð•’˜1LM˜1œ‡ kÃhk8ƒO˜Ÿ58ƒ ³P„yˆ‡5Èà ˜x1Ä!˜i˜Q€KÐD‚ar àhèká˜L‚yà>˜c0†yÈ1´¤4 €I8¢–ЀhCcˆ]8Cc1d² €y(X˜›ðÃh8 À‡h ÅhHWè„Ã8(‡iЄð‚F‡‘11ƒ°IP†|€mÜ?þ.gÐF¸‡\þè°"2Q—s`7‰—y™À;É}éN˜§°`„(°50Di Hè‚Pã…G‰”ö`À~X#HV8 h0‚Ø胖p~`²I8, p€$Xà‚0ƒ]Ænd©X¼•tŠ)ø„jÐpÇ-h Mà~œÔIž„T…–耠J~¸ƒûáH~à†¤d€¥LJ|àYS~ƒ–ˆW¨Ê«ÌJƒy<‚–P€¯ KtÀH~0ËkÐÉ>c`Ë–xË@`~˜Ë–°Ë_p ½tŠNà‡½%X~hÁ$L܆þ– ÅlL¼€o¬Imì‚g°83Q—5ém 1ˆ—l ;¹—<Ù“pH‹5€0(p8€„%‚œ”J9È€€=X´`…' ø¸h!‚-È‚oØH°ÃJ 9@¸@¢†vzI–Úët u¨ÊGÀ° môžÐF‰ãmô28ƒôl‰K€:¯€Ïqh s€q¨ÏÀ€{p F€*PHYV(g'x·ðgð}™€ ‚:ðÓøa <¸@…?© ‚3 wep<Ø'¨’ÀWð0ÛU¨†€!(‡x[‘Fd€gL€Ü«!Ð68„–¿^gp?àSðq¨Öhƒ"jIm¸+­(7°j©þîÊá4#ï³t0@E`Æ@à‘·2 _¸7˜|àF’9-‹Ø_°ï'`ý¨6‹·oL`øÝ5 PƒwŠ  í”RÎRt"1Q˜{0‡iP©‰xxþHMØi%0Mà¸qQl 2ð0†&ø¦Pì^ƒKØ@ˆz‡@e¸ƒRX†tP€  }ðlH(NPƒ Àƒb–_‡y0Qð0˜ƒg0(k°5Hƒ\ØTÁHQÐ…l‡Fƒ^˜‡bÀ+ XHæwIîSˆqÈ€cømv„,7dz…HpÈóoO—œ €@p‡ˆÁ9h8†ÃÝÆD9^0 h1†<˜Z°Ý²Pé^)F˜ƒ=ðb@*©]¨ƒ2ðMT …a8 p‡9þØÀ9è†1‹< …nˆ„ È…ø0†.H‡/ … €[T¸†–Wø‡`†0fh€H°gðt˜b¢q/°>epØm ƒ`‡-†M€€H`¸…b r9¨‚Mpƒ.€Z8ƒuX'HH¨j`„,¯) f86€Npm0ö#6‡m¨†Ç9Hh€±–@€\8ƒtà/ÐC6¨2xÐSàeø½©ÉQX„PH`È@I/ÀE‡60wX‡d(æO{˜ù‹ÆZÀx‚Á†–C9þ5€}È“]£Mph³àõ–@€=¸møÈ ¸2„.hp€h…¨ €L¨ „\PI€"—€oð†Ø‚ ˜€pø‰ AMäHèt–¢„ Xà_†p‚5PX+ˆe85X†,hk§¨ñe@à·þ,€e˜‰£ ˜+àÀN(€Ms8øNЄe0'_¸€(~èÈ‚e¸€ã·þeÈ´ €¡A–!¤QÊ)NËXp‚rd‚ -Ä(Xp²=fáä !%'C\ ¹@â×J¥4ÂŒ)s&Íš6þoâÌ©s'Ïž> óß"L‡ªõ1€Òc>dš€“ˆ}ùµ"Ø‚C Ä,À¦AdS°é Axîua³b °„ö Ia¨‹ƒI¸à¤EÌ ú¨¨"Hã h ´5D ͬy3çÎ7;dñ,z4éÒ¦O£NmóŸ^Ìð¸¢¢Š 5Çz QæNÓ2½8˜UŽŠ(3… 0¸ð¦• lÄ `V‚„(cH&S®d)Õh[A¾ð@w…&ho|ÍL@¥Ü(ušü9Çá±:‰ÈÚáªX "˜ ‚ 2Ø AÿPñ…6Ž$Àþ]AÍ1#L<0³M5°ÀÌ$Q0óˆS*¸ÀdL­òÁÚd2?™ N=lLR=ÊlÀL78 ’:éðÒxä1É=¸1|1A ¬‚38Ž"¬°6.€±8/µ§œsÒY§¢‰bÂ$Ž€ÀÁÒÔ`À2¥¸€Á/ËhR B˸pÁ¢ƒzKNÀ¤(BJ”¢„/,&¬A)$ð ø“Ì8¨c'  €ù‚YL!Ä §´Ê1óÐ`Ũ_¤uçMí b¬²Ë2Û¬³ ! Ü©Ä {8c‚œâÆ7­qþ%Ïp9!B8N¸0€"ÂZ„A˼»Ì¸8¡ˆ¼p šì»P# ¹#œ°Â k¶ËK {¦†<•#Mebœ3[ü@1˜Œ3‹Ô‰6ÝÌH$…=~HІ3ÕôN{0q ð䢎¨´ÐCk$ `¤€ ‚HPP äd.`’“4œå„ =##‚ô.)tµŠ 4óF2ÄAO+M@qÌ$Þ,2D/‰$ƒÐlÀn„CG3|ÜãÈRLXÃG׋3Þøñ8°IAGH‚Î…ÒN” 0‡TÆ‹­2@7B©Â…'‹ þÒEá$I®’‹}œÐI(£ "¼q:AväRk˜pkœà ·@‡hp‡6ê8ž½öÛ¦Äh¤áعiœëÔ]MUUeŠÄÑŽFh(¢0]ÓÂ8Y¸€ 'ŒB%Šh€ËÀÿš0=MÈÏ¢ú_ü¢£ @PÂ*$èEPÊ Š€¬ B€‡À¸/n`g° {°VaU¼@;€@䱆](üpàt`Œ7¤ã  À,Ü0ç¡ ¬H@5þ!xq/ŠRœâM2ðt!%8І.ƒ xØÆÒg^˜  [ ÈþnÑv ãrÁAæ JdaÈJ¹ 0 BŽ)EZà[h€)Ð  I€a ßè€@`~€èÅ `BLâ 'pEL°á>l€ BøþЬN€6âá«@à&ðRª5È 1Ë‚*D5€TpÔ"H)N1T™ ‘€&¾éÔ§>•(˜ðR””t>R¡ŠU‚‚@ƒ+3aðqÐ`ý#ÈZ4¢€‡F…(¦ ^"10Á†À ZŒtH‚-Ђ¥œàyÌ/z@84x–(I^0¢ ‚*g;ëYšü£ Bp0Fajè¢h8†)0 F°@"A ¬ €FhCšˆ– &èl‘i(ëˆX (,€5˜$ÑBdª€‚?ÊÐþ ™`à ˂Àà"È€NPÈÆ Eâ`\`’(Ægûëßÿ>ënÆÆQƒ 6ˆE5Ð{(beÀ† R¡Š2,Àeø…(z€\  0aÅȰ€r‹FÆ †c¼á@!Ê.4cpX4à ƒXÀ ]° ‚ PDb°@Bp€m„`uèq 8˜¢Xž:ª gpbÃØ€Ëlæ33 ! EDÀ‰¾sBú ,²€r4a°HƒJ°o\ä(Á/ȱ‰jk‰Ø¬|@ŽwÐã äÃ:ÞQŠ ÜB>ð9~áéD}•Æ:/ [p·Å4>¯rC·HE1(ÕFâ;epC/<1.œaç:¿€7¼\é 8¨.øÀJü ÿP ì€~Œ‚ä°D7PQÐb ÝhFÈ‚5ì¡êø`á>€Ã\AtÔÀÙíSþBtÈCÐÁ#XÁ´Á5°AÞÑ è•FìÁø]œ¬€;|A@@,|(°.ìx‚ €*À\AhÞfÃ+@à@€ ˜ü@3 C€ƒ0À8à€Õ@ÀǰÁ),B8ÀC7hC?40BˆÀÈ@D”;LÀ tºƒ+,B ¬ƒUÄ.XC4T ö•&<Â$laÐaÈG Ï:$B&|a„3„+Ø€d€#ˆÀ4ôÀ <¢=°@-pd(H »ÁÓ9ÌÁ¿(Á#°;,C|.$ þƒìAÈÄ>ŒÀ¸ƒß)@9°Ã TB|M(ø@%¸Ã¼ÃÈ ?4ƒLÔ \€@ƒŒ@&ÐÀ@À`C5¨À€B&œ A`¬ìƒ?84¼Ä" BA À6ŒC À(9ˆd>ò#HÀ$A'ä$Àš7Ò0äœàÃTB<@,œA*äà @A¸Â ¤ "Ä ÉIÆ&Ô‚ ͰÌA„"A8Â` ¿€&üDC ÔÂ7¸Á3`BbC+À;ú]ß)2àÁäA0BÀÐ@+ã1®þÃ<@ÀNLÔ`,Â9 Ã06j#7ŽCd¤ @È3<AÄA.[ë]‚9øƒÀ"T=žÀ4lb5ÌÁIN&bŠÂß°P<èÂüBD–YˆeÖ ´ƒ €*¬?PAhôäA3 4 ¨2C”C*h@´æk @@|AC-8AE<À;ˆ8„B؃?œ@& %,À/ÃPŠ0D€ ”AÁ?¨#$ Bœ‚$Ã9´‚2\ä´TÈ@pƒ(?ä-¢Ëä÷aCØÀ;´B8è€+@Àþ(B H¶°À%tƒ ;Ì1Ã7@C0ì€%äAt@ÐÁ*p‚&ì(°ƒ4ƒŒ(9˜¨¬dÂH!H@Îa&g¡@0øaÎ pBôA-üf,C¼B X@!Â/$&\C/ìè“:)”²@!ÜA”BøÄ) i!0€\’B©(ØB-<œ(+Â>ÔÂ/p·vÍ)'€ÀÌœ†¼@1¬ÌA6C(€&`À=ü€LøÂt) (B<ÂÂÂLC¥ªÁèÃ3\ÃèìÂ2ü€ €Ë Ô ¾ÜÀ'<€ )þ+Œ&LÁ>ôÂ5`¬Ê*­ª•þ‚삎Ø#$A!줯+M4$ PÀ(%AÂ=@€.œÆ [±ZëM|@$\ë¶Â/@Ó€(d`ž·~ëiŒ·ªk[< 뺶 &ØšNDœ­  °À Ò&äëMÈ«Lü+¼ l°€)ØÛÀ¶I`.ñ<°;䤂¨7ÍÄ&¨€ØA±¼$<Šlœ(Àžljµh‚8Á AøÀ5„7DYб¬Ä€\€œ*AÈà ̃Ìl ”ÂÊ&­XA Æ.ÈWÎBÑÛaÞtþaXË @ è¼€´@ÎÖËJ&žlÚª­³˜ ìC&H¤B˜7Àƒ ü"À üÌ;DÃämLBT#L@SùTÀ´ÂéPƒÑj#ô‚ìA/8ˆÁ´A d× î…j‚ A*à›&üÁ%€¼ÝòC(˜@7Ø‚tÕB0l;xÂ3,xà ¼@ˆ®íð’†,,ÁÀ$Ãxl´C¡éÄ$7œ#P°À8Œƒ,h€¾â /ìƒÇÕA5Ü«ðA"ÃôÔÀàÁ…frOÏÄ@ä À‰‘À  ˜€M‚¤Â¨2C#@þš8B¨@À„äÂDð/O¦ÈA T"¨K<¤€‚>ÄÄ4³T!Tx‚ Â@@;Øf;4TQUÁ"`€3T+¬|.(+èÁ6 1PÒ%X‚ ˜X08Æ ,AÏútzk„/@@Hðà˜|—rQA5ðÂSþL5ƒTÀ\IAmWœB€XS1pC&¸‚È<”=€-ÜÂfQ6;´Â0H‚°ApC¼p,ÃÈÃ9X,€‚'„ÁƒOÁ*DB+PCþ@ƒ0X:]wƒ €`CèÀpC‰Ä8ˆ5´Â(Œpä?ÔøçxL(ÀpV7/Á=Ø€âH¼ëNt@0܃5z¶ :7XÂ4TB¤ƒHÂüC$ŒÂ0'ü€ ! ÁÈ•/Èp-à@9({AìB ÌÁ/ ‚'œ‚7ÀA9Aøƒ+tC"€éÌC+Ì‚ëý@ z,\AŠåA5‚xÂ.È´$4Ã-ÌÃ1ÀƒTC3à@ TÀ-8@¬: 1A4Á1 ¶ë< ³78È+dj*xB2ˆØ‚ ( ˆAÓþ‚@CÓ‹ÁìªàÂ;@šFœ‚)à‚$@&°~M°ôj„À~ë[º&×AHäÄLàþìËDƃ(„B%H|AÑ„(¤ÃÄ„(ô«L Ås>çŸÂ dü®‰‚Ä)³Lƒ¼(ìd!jD„ðOA¤Á©ÒCXÀ:'¶þÃ8¾„ä»*Ä&!@16¥p!D Â9¸"tA †#+vôødH‘#I–4yeJ•+Y¶tùfL™3iÖ´ISÓ)HÌÀ³‡e=­ÀäòAC3k´:”*"~˜xÈ…#Ú°dËœr@Â’TÀÍÑ2X&² µh‰;[e›R HŽHd #c¢ ½fÇîåª@Z.\ÙfÉŠ´êÔMÉ“)W¶|sæ”W=hxÍT³B ¯02i%Ö-Í.Ãy `IM!ÕÀê…I³‚t'î0¦"iºíA"$F„ž p÷æì}pþ!¬Û…pÝV°Š±EY>`í8왦vèRùjøƒIûÑ;/ 2PÆâˆ ÄP8Å™.Pd€T"!HX–eµ -¼à 5$I+̈èCÔP£”V|°b6%ð©f„Ô8¢’Š>TÃŒŽÌe\4E„’©B¤ÍèðC+\TÃH_Îi«!MhqHf D)iìp–pè` ~ˆhÄ=Ô¤‘7¤y’JŽœrJlI{*±¡X¶€ %„xÁB` (E‚7¸Ah *´I" w.à`*`€Žm>€À@àP‚sx™c*êf„þ¤¦6jHh!„á¢-`"„ Ø‚FC€iT¨D¾ …–Øb=Ib*àçƒ5BIS ="ÁNDh±@ £!  ñ‡ŽNñöP B@E…$– æ£4¼ðö†^" ˜ÇÛ108,–%Òä 'yD†N )ÀŽFšù…“b6š ÀEZÔ¡&ú b Xžà§Vé¡@f@Šr¾9@}iâœrä“&z^¢!Ê‚"Ð"*yU`/ ð…†ª,PÄt° Gž+HÆ|(ìFhŠðã…YvaD„þ4˜â vœÀ‘Jh@è•@Pf5ÚÑ"‹x£xðW˜@¢,ð¸Fz|ÁžO48–óÎ=ÿ\3LLe72Æ0}P?†Ux8$ÛmÀd”uZAHšctÙ¥—+â$–9À P¶Xåž `X@›UàñÈ…c>ØeŸU*!FkˆÙEbXŽ aU†ÆjZÙ¡6Nè† c´é…Vl‰†‡Vaâ6ÄñAd (>QU¤À‰ØCa@á 1Ð xˆ ßXWè„RÁD @B†a{` `p3²`„äÂÐPƒ)´„þyèÁ.‘ ÷ €pŒ±Fh T@B”ðŽNÀ«B?ªaü +F–‘‚˜@s€+á\à øâlнŽq”£Jþ±L¤£}@VçüAŒÚòøq;œzR<" f èRÀ @â â (,‚¥ºÐvàP8+’qÜ€,ð0Æ`‚r@ ìÐDŽfX! ÆÈ,@Q uda€È¤À ¼Ð}˜"oÈ€#‚a<éAçPÈa†,°€xáP@MD!ˆ7@{CÈ4Tþ ŠxÉÜA¡Š€`s a';Âq6D‚àÀ ZPƒÎ±Ž˜D©@‰Gô‘¤ì¦hÈMv $Ž„¤$)iIH $ê€À²ˆ”¢ ĘÀ%–°#Ð )øB²@XC–€0A!LP´£A/'€+tƒÖ¨Ç1£àVa™^h4 )ÍQlƒðBPO±Mp5D ÐÓAAbŒ­iUëZð7ÔˆF€‡{¬áX¼Qƒv¼Á}P€'ô`OìBÕ`ƒ>Ä@ˆŽHc ¨xƒHp I„ƒ¦¹ƒÈA^t„lØB1ˆÀˆð`þ­ E¸à‰T¼Aè†2*q‰ÔÁžðàtZˆaЃ Lx1JÐ -´!þA‡Œáuð¡]°†%n¡ ©B# ƒì p½¨?¡…/`!Æ8+ÙÚ^÷¾¾Ç2C²‹G”ÂŽXB8qŠ_„B(¸Qà_¸ À¶@ÂÆ ƒ;$ #œHð ²àV€–äD'¸Q.øb܈ <ñ‹) ÂÞø„¤€$|b@)ÐŽqpkˆÃ2~! ØBíÀÁ< ŒÅiŒ‚@A’Qþf €B„€/T@€:dP!x þ q0ÔQ™5¤$¸Âú9 vÊ¢SÂÀ.v„ #¹àL0Àžñô  ] ¼Á(´±: ‡4PÆ•hBIl `H‚ÆrQ¨ÝH8«¡ t¬¢Ì0ÁšÐ&P#àìN èEß׃Æ ’ka±ÀÖ0¹@Tz;  VUz A 0@²Œ ˆàŠP Ö°VVAà†ävYPÄ8 °‹&€!ØH@4¬í>LàØôàÖà‡°À °@ 衼¢çôõÂ~P5`âœÇG`…@“äK5þ* (ž’ °@Ö³ÓøIÌP£"qnÞXA:hp `œÀ|°Å?àptÊH(p‡jœAѧHA;”Àp x@ÇNÁƒ™ÑÁ`Â#â¼Pâè„‹ÛP „à bôþ¡{€¨€€†P‡D(À`1V°½†ßïpŒC$Ñjä!—h+€a’_d 3#Ɉ•à5†ØÐ!c”PÃÓWø ú\,LBÑ P2Á^ŠbÕ°9 €ˆAj¸‚ÐÑ50CmàÁ0–Á eh¡ˆ‚(õgx …À€²Ñ"roHþF>i€⟢ç Â5ˆÇŠµÏ‡ xF  alãƒyWÿú3SŠ! #ð%(! Cø` Ñ€*VÐ"+Ð` ¡"€h@á Ü`:"ÀP †€D!ÿ"Pn¡ïÌ€4¡dM ÐÕ€˜a|!DÁÒ@$.`/ l…Ài<@5àòÁ0 tÀCh aРЀp4àú)ØnBê`æa œBÀàFõ€õp€€€Ô`œaHÒà"€ úáz`V t€àÁ èà0H€ªfÚÎa @d2@ðVª€@ÀÀ< €€nlªá2œà:&a¾ bAÕþá¬!ˆ@þ6AÎ)&^a4ÑPàpÄ@  æ€0@ì¡ þÁFNúàÊ¡Þä¨L`<@!ºaaÄa 8`,À³RAÔ$ªòh ê &j !î ‘Žð¬bÀÜ`X@N ý ¡@1{“  Z࡬#œ`Ä "@3 "@ÄÀ€àЀ¨â þ@ ÔÁžá ºª˜Éa¬áº ¶ ÙìLX®vL=B 2 ØÎ4M3àM†ÀÚ)´"¸ãRá€!þ”Oût$þÁ4@T à€<Á¬àŠØ ¬ÀD ŒDø fC)@ 8àâüc¬ î,ª8À ÈÀÞÄ 8A{¬ E xnHøá#$`VaJ4! @xD&ÁH8¨¡ ` D ê@DºAÚ`©ú@ â¡ Š@˜iª ¶Àp ä#t`XPÀ‰V£òiñ*àÄÐOãU^âlà¨pÀlŠÀŽ! 2aø`š!Сvᣠ þ< ^±!šˆ¡ „áQ¡F€–€°áØ þš!¸€"ôáVV¨`ä€I‚`aªì¬ÈÈ`>á6À XÐ Øa|Á \GôÀ°:@ÔaHÁ’ š®‹èA BÀ3š!æÕl϶Oà ö@âA0Æ(À\aÔ`o) ø–o÷FÂÁÆa¬ NÁP Ÿ|¡€o1 "(p)Àa\@Ò €áh‚!€øvW$W(× d¿”ÀH ò2¡D! ܦ@Pw”`&¢Ád“àBb@þ`ä\Bâ¡NËbfƒ¢Á:¯#Dá ÂWO@ |ÃaþÂ÷ ÐÂFN•J0ÁŒa †à bÁ*+.Ô $`Ò*â’aOÑ€;é$/Ž0á€À€à<ÏBDárán`b€@€„Àa–àaæ’°"–NÎÚ€àDç!€ ¬#j @a.ya ^ÀÈ!pAv!æ¡ôA$Ò:B àŠ£¸!œ[ØïŠá^á n JaD`v@ eá6aJ¡¢6Á=0! ^á.öaCÁpþ@¶áÀ¡hÀV¡ Z@}bÊ|as°À|áçÁ|Áä!®´a.1a  ¶€j@²ÀúÎP ØÚ""†A ð!¦a¤€Æ4"@8 v X€Î@.Þ^ƒlA$€®@Š—ù2Š—„‹W‚ (à4–A¼w$\O‚@°Ù$’P& å«î`t@Šþ ÚȺ`¾`¶@páÒÜ ÀÀÔ R€à0ÀPá"âŠ@šÁd ”a ÂÁ Fk :bF ~ Fä`þB#PÀv@¢·!:Àæ!¬ Y`¨ì!4ŸÊ¡X íÀ xÕ ¤Áza6à °¡ tcJ a \´ *á â $áx@.á2 üâ `˜ :Ù_¿"þ¡ „iuBau 2-¥$|À.4BÃiöþò n n ú& ºaÎó JÁ31Å€½ã[2=b࢔ G´a ®!œ Ž!èa¾¡ là’ ú¡`€@<# m¨å.È%À°¡Ã‡#JŒ „‘He>(ajš)S:¼0GÖ³Ž/hðòW…TæŽNëÊ0àQËNjnòÁл<”ªR¦—/ Üé1ÆpY±k £}4¥OH•U†0(ã®à ·L­’ÒÐ× &~4,¡­ ; SLm²eê’¨ ÌàË œ©#~*c®A‚‰#KžLþ¹²å˘3kÞ̹³ç‡ÿaòQ­! N#ŠkN"ö5ä׊!4J$Aãg„8J‚NŒjé‹CÖúà¡s ¨4:Ö!"V¨VÆß('îŒP±…úD†ßB¹ –$œœlÖZØ1LÒ'^ÙçÎòDáNfHÄAPi€†n2ÄA¢4¤‰2DCV4ÈÐbfFJ†Ä*0„I­àÐaD%VXÿÅ(ãŒ4Öhã8ðÏ?´±"÷à“N+C‹1„"ˆQ€4¢ÍVLÁ(!ÀCgø0D‰@¦œ’ÁΘþâXcJÌâ PD&MDÄË5„#Š4Ûƒc$ F¸ØcÀ8nì  éAñFÅh E°@Ÿ}&° 2Hij²˜ãJŽaЇ7¨¶:c)À ,ãê­¸æªë®¼Jô‘ls ­P‘É=}l‚Ê@ 8ۼь*àˆ`8`r t!ÇC7 I$µp.Úôƒ ` …€ €$Å9Ü;Š8o 3J¥‚JÝðSÀ Ð’È `ãŒ2üP€2Çr@7äÄà—a-l²È$æèðÅ&ðlƒG7ÿ°Ëéô*óÌ4×þlóÍ8ç ´ RCJàªÀ8Yªp‘ª`pÜ— ÑF ”Ñ…‘åæP.8¤5DVt=‘ªd€¶ç(J èìöÛpÇ-÷Ü”a 0Ð €—LÒÆvÜìB1¼Ôh†ÑtËS˜a…Xa†ã:9Óˆ!vã’sÞøçžG¹ä\®÷騧®úê2—¢ë˜pPðE eQK*¦Dcޤ²å-©¤Ò€Àqˆ”ÒO*ÉðO:®”sFVxÓ,vÁH®˜ÓG*ÄLûù觯>&ÑT¤þû”Ñàˆ=ïøRà“¼îH0É@Q‰+þþH@¢€#Ø@D€‡˜áE¤£ÂÈE!RÀEl!â˜Dbq W Ó †’ð,(àÙ8C àǺpf8C.VТ¾3 F‹xŒ¤@o`ˆ*”`„ÇñþÈ!2Wœ D¸€¨@Ö€Æ0îÀ2!ÿ Â>>ªªª666..þ***jjj‚‚‚ZZZ’’’šššvvvòòþÎÎþRRþ––þ²²þ¾¾þZZþ þ>>þjjþ22þööþzzþÞÞþÖÖþ®®þNNþÊÊþ&&þ’’þþÂÂþúúþþ^^þBBþ66þ~~þffþþžžþŠŠþÿÿÿ,B(þ€,‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍι©ÑÏÖרÙÚ”7ÞZ ‚7Œ,7”!Þ;Šç!ˆ7‚M'‚GÛ HðV‡Q\ˆòàC”åÌ`e%Tц)Ž<€hH”xVH²( ² Ë—0crêðŒ.GXTÃ0'!j$²  ˆ'µx‚¦Qذà -,À¨2¡ZÏ¢:jPø0­èÕ¢‚²bØZM§O°Ôdª]ËÖe•¦þV\P`î€9(\b`!G‡ α oŒ ë ÐÐ¥‹§P1©ƒ ¼À0¥€ Zh°ÐÒJ YXðaµg-X0Ð Æ‹p«'x‰á¡lÛßÀƒë !G/Y¦ÃÇ\ž°ØqáÉ‘Õ3Ìeo~@Jõ!S¶92Á äAhì2AŠHšì9B=]BЏ|˜Á–ãí›À`€5¨ÀG†ŽpF(!.Uè‚L‘@]u±ðAM½€CR‚6чZ„@Ã:,èðX!O2ÅOä€Å˜gÅ‹N L°¶J*õÈ…‚þ AkDƒA•M(å”T¢bRVÀÜ[ rå•J¤v‚<õÑ :˜cd²Ñ iTàHêP¤h;ˆÆû±ÆBJ‚ôØ…‚ ¹Z51Z墌6ŠI 2@ ÆÂ•Q¬@":„=¨ž4Â/c UBáèh±ÁV( ÆSA‘±qqÏJ^`p¨ P:*ì°Ä&R…@B+lÙå¥MáÐÁÊŠiíƒh1CPðDjšº ¬ $ÐPp@ì(žzòÉ' dÐP: 0„P¼P« ‰kðÁŽvPOÜÀÓ9BË‚/þPZ‰ ÅBŒYHÐES”:ÈbÄ@ƒÃ‚œÐcX<`§ ²ÊªàÀLp@²E 1 Ñ¯,‹ðÐDG8ÄxG0€Ôñ0-µ‚@pÄÕ,8ÍÕ‘@Jl`ÈÑG$Ð!ðä0À@ÔA`‘N9aÓÓM!wÔ_³h÷ øVôà„Î5`‘A­îøãò…lÀbä˜g®y(\mîùç ‡.ú褗núé×aè Ah“õ¶ t MDSƒ  ˜J~+.¼@Øårp‚ä`—R¨Šþebà—Z3pßœHK@Áz€¤ ô@HÁ:%L€Z@o` ÌXo1 ÇNW T Æ¤ÑAB€Æ.Ðà¨oª ˆ·SPÀ rð.à¾u2è¾&D¡wsm›0…  ãX€À)ô€È „¬€ MМ1€Baa €‚˜àXa kLJn“ƒ( 0xADH ¬ª­ †XZ ˆM@®ð!X! ý߯z7€(/˜^°@ ^!À BƒBšXØáPj d 䨀E¶ðWþ O¸@j< dá0à‚Bê+Xú º„$PæI­Æ[Èã³!@‚ ˜Ïê½&Pƒ À_Š>R•?!†` :°@k9}EÄBNX©ƒ¼`õ¥Í=ª0¢z‘hí‡Ë‚@5¨¢0TàÑ[V5à4À*°‚ø÷:8ô fN߈°)‚Ø >p¦  1vuÚt…tHà J¨Ü vЃ*d ³¿1ºÝBdP'¨B £š 4  O€À«{`…|Ì|­eÊ<Õ ªº¹ŸÚs %1@&Õ„ þ!xÁ 0!ó'r¹‚0ÿ}< xñW€ù2@ìÀ b«µ:Päà¨Â¿V<`Jx€ž!Ûî5VÀ@VÊȯˆˆÓ :ž·¦ ÀW/!@ƒÌ`orâ:€ À@Ò¸€ƒÌ@Ö3Ò=…¤` 0j@¡PÜ©‚¨ŽHÆgÆàV‚¶w…gWÁ@¶À…#løYvv„e` 7 ÀH7p ´]pO0=p 4)' Cp_Ë“Nf€WÅxÔ+0[°OPYÐn5þÀqX´Pp7 ´þ‘%H€¨0(Ð@'ÈØTQðR0RXPPÎv J v@~º5 T¾d&oó0/À J0fq’RÀ}V[€K„TˆÀ3¨/йµj!à‘ôt QðkLp/‡ú°”$‰ªˆ˜;ЈPpwCÀ‡:! Pw(@ÀáˆZX‘·jŠBOðˆ…‚˜äbH¡\ñVÀP‹‡ 1ð+Т”€=À,ˆHåbVq6Ø…àŒþ†ÐŒV=×Q‰P=@”,„@Ô3p9&~h‹®5r’W`wgR$0x-üÈx[ѶZ Ž›0à@÷: ‘Ð&Pp`b @†ð9©‘‡ {Ð&¢À{ð6Ùæø6 @Âè ÙÔp‚œð-L G—nð’s°€t`I †kK „ q€zàhà†ÐÀƒÀ•*€`0€F %0~0>Ð’Š@;0^õPx 0@M ð@þ(‡F©¦W k£!0p[u ÓC— ©ŽRP@taˆé†RÐü0Ï!ïÈõ§3 °™@õ6Žù˜ @m°™û˜—) :…)ô†žö0€©©AÀ{f€u IP,ð>A m*PÏ%<Àaàp@*% ,@p v@?€-PlÍÉpAP\é•×)]‰*0@d ž*çÉuÀpD žAPm`÷IuPž%ðщ×Ižq0T°n‰ð@(Y'€Çþ‘[Ð/ðu?6ÂV˜a³S@KP`G…éZ``=0D†MÌ%ƒ0^= 07¹Ôt^pη. .â"øF[aQÐ(°‹LPJp'P p@L·B@§?öBpÚà0e:»²u@f€ŠŠèi DЩ’*©*Шƒ ÐÉN€b& œ"àe ~°KEðzprà”pÐ~pR92 ¨" >@fÀT\Ù}€| ¨•ºʪ¬ùcàc~€s`àþÚ` `@0h`|Àb ·ªoà €H€ðlð¬cð#juDŠ:ÐOö6k8)À'0õqG 'P! só3S€NÐæ† (ð {„! 8 ¶€ð‹÷–)ð‡÷' á^ðW€] ÀãÀ ÕP,ð¹dBA“m„pƒ kp«ŠÚ´Tà% R+µdàV{µX›µZ»µn0tÐS«%0\[¶fkµca;©l;©•ZÛ)o0g ‘. PIpjPÐN þ#à•t`i,°í9KÀ}žàs rÀ•-À•’‹<°Ÿj°¬Êj†0­}Às0 w g€B€&P¨|FÐn {PÓêt€w@þY÷š2 M€ÃuY7R—„:Ð|z؈հsÓY {1 )5€$Pûà"@}1»q“·ùÒ[@`_ª1I:XDLÐDH©t/€pøé[BM1(† ²Ôo‹ là- ÇŠyМÁ·_ 2P”{Ð"°”-@Êú&þà”K`°wBЖ§KK€BÉ•ï)iy€\Ù®Ë`Y÷yÄ``.€m `>œs€ ©h v E€K°’C|¼Á‹° Ó"óH,0 ð&Cày)@XÐ$Ð5  PMøv7Àü³10 PbL“z ›Y͇ƒ$}Ãeàhd!0œÉ™-ûg!ðt!Ð8Êp=áhÐ~ùP4&Ä]p¿‚04`:©ja q`©¿·c.€Z)Ϲ`©þ°A0x€uÀ‹+û¸ºjH ôI_À•F gÀoЕ_дŠZ«„0­v°n`¸l K°Äm©.@I€2`-ð€b°»IÆf|ÆH¾RPpë :0;b•ÁPЂVqÿQýð "û +°YbV€ë0:ðXÀËQáÒ~ÖI€:°ÊÐVð0/ l‹ @aAˆ/P;à0ÝC°O}E‹¨g3 ÔVPt„p¼ N ¢Â¡T 6Ð` hàbàD ªDð@ bPb .`þa 0¯·*òœ¸|ûj#Ï›[Æk  »ÚK,Ù#°u ÚŠq°ÄW v€|0`@” h íÚÐÐí’ˆ•‡pIñ衎ÉD‹W]1޶λFca~Cá´ý9A`Ð ©*@lPä©©m@׬`°D0Ÿ&Él ŸÍZÉmÍ<cP ÚÖ_©`ÀÁ‹»`à•,@Áp0Î Ziê•ÐÝÜèù`pÍæ-߯-û«Ú˜àšàÏá>á0 `Í à°bà 3àG€û( þ 8ð6€Ø²‡SX°F.3‚C$0‹è² C°› Á¤O pŽÀ[`Z —‰…ÆMáSÒ9òÔ> Õ ¾œ 3°  Ð3 lÒ:ÒR@Zr3pM‚²Q;@ Z—Àg¥]HÛËv‰4P80ø»I®äò!Ò°è@€sc>;[ð-­L7À}µØ@80Rãè®P¤;Àƒxµä[Ô 1$ëa^‡CàxsrL`^@].+àët¢vš’è uÀ p…À¤EAþ󵕑€Ô œW÷ø½DAVHe$ÉpL€ä(6'°œ†œvŽ> ð}ÙÒ‹èî¾70R€¦—‰ü~-Mp°gæ´®WYp€€7ÐŒî[jîë [04®*“¸á$Ð8„.!ìóMð1`05Îp‚ K0ƒ\7Ð`¢Ë’áx>V;ÐòÎE4  °Y°˜ôût°=Nò)O¼Wð>ÀÐÇ;G MàuYnÀÈYØ_:ö x4PtF±W7P!' ‹jßËÒ¢þR(PHŸXÍca4ðO¸9€/‡?'І°‘ER @ÂqK; Q*ðЊcPàŠ„×0 R.'?0QP1pùQð}VÀùz‘÷@LNP°f†Âòò\ూM 0Çôôçòò“n]`1P](  ÁÛ FQ?$ €òðnRðÝ0Lþ‡WB1„BL`ò(°!üwS_Ð+ g Ð#€°SuT5å±Ã¢¸ÈÈ‚UØÐÃ2á%áõÄ’@ñ°Åâ2Ä„ÊôÐx”sãXrÁþ"5;ÑSsÁ‚•¡ Ã²Á50…S1¡u1¥ÓÑAQAqĵã•!ÜSÀÒ“Rã¡’1ðÑ•C£C½ÕñÀШø4µë(Õ³…a0 À <ˆ0¡Â… :|1¢Ä€аr„….X®@È_EV¢(2ã”.LzH‘¢£BЄñ"@V>fÉpâ…`Ψ… è¶è)L†ØÂCŠ 9öÁŽ ´t`!€Gh¬¨°%Ñ@ /"-J£ !RXå Ã)[>@ñ$©Ò¬.V$… „9X4ÑR#†K&Yþ@ˆ"`X±(8V`Ù‘Š”M>TˆòE€8l#ðÀ 8š¼0×B•92¬>ñaK}ö>B¥`ÖC½‰Ô«[¿Ž=»öíÜ*ðeH.^Ž<@1ÅC v Èâ“ti‚%ÇŠ+W™»(AƒzJ@ÃOÐB/d±Åâ%€P0E70JQ@@Z °OÐ… шzèÀÅ!4PC\¬ ¡[Œ"RL…«œ°$¡EÀR| lÀÀ¾nPíY ÅtQ …[ÀÀ†äÎp¤ðàPÉ!l‘Å<ÁÄ Mœ@ÁÉ[À0nGìÐM•áþ3Q€;±Á[ ‡Ì4kñé…($ ì«ROMuÕV_uÖZo]Ç£r vØbMvÙfŸí*î¢ÍvÛn¿ wÜrÏMwÝvß-PX `׫¼ð"S,ÈÒ» ($@ `ÀÃ>ï9oTìX0/œUØAûð×¾Èp×£€²ð„ä.98ï€Ä qbÐF¬ð€ T@ ÈÀ&È‚’(°Xp(ñ‡Šè   €4¡‰P`B2@àà 1{Á ´Ðœ,(à È\xbd /`2ƒ @xA¶0+x'2a„°°…¬ÀM†ôÀ 2€5ÊI n„Ý6,°¨OPj°@aðÃÁ &ÐàØÁ ¢@• m H,ÕŽþ&ì`û‚@&¶€…$ •Â$p‘^à @AJ¥D V R¼ ŒƒƒÁ²ðµР,Jhäß O¼%m VPÀ°  @ «Q Ögæ±à ]èDÐ+ ¡˜Š´ð”HA0 @Á >À·(¢ÂÄr!â7X%‚2 @mJîr"VwySà ¦@nu•+¸€T&· 3°Ç´‹9Ë& x.…+`‚“‚npœ`qxÊB³ ëÉÐqqSD¯ 9˜@î0 ã‡þíMØ\C ž'0˜ÂHª(PtAh](¬ `€Êƶ&4©± À dà''8äSlW%´WpŒ@Ô{ç\ETGØÁ0äì Ž hs=Æ"´Ì +øê  p  ñµåb@³ˆÀ|&M0À þ±ßxAeOÑ–Qà³² »nUÄ+-›Ò9‚O¨@zvQ A²à…+4¡HÀ² þ(aR-»\í  l $p¬Œ l¬Uäx@ :êj‚Lð@$°C{áW°0¾yVh®¹ ‰4áT¾@Þ£Åùäþ:h€nÀ%q]o €[pÓ ä%ä‚0½ˆ4 Ê^ÐÂ"qIÝ<³øJ¸€”к€ ÃàÄ(nf. @€ó@¼à–˜¤@ PDax‚TN‚# šøÀôZ²T1Ç$è R -@@ªë+d@³È„’ï…Üí '¶Õ¯þ*üã±B`pU¤BKÁ)€&„õé“fÂNq|=ìPE(ÀP€'`ýRq„Që¨ÈÈÀÏQ2 ù€Š aG¼«Œï~¶äQÁ¢¤‚[þd5v 1ÁìU™‹è™p |öx=O?p)„`”ð äó€áý^38€Š=„ã§T §_^°¯_¼ëÔ¯¾õ¯¶!\ûÜï¾÷¿þð‹?n‚ð¦–<Ù¯bBTS àk{$`gÁ:ïóOÿò’öŒÒ懡?Ús9ÑAðÈu€ãç€È QÐGR3(`[#Áq\05ID7ýg9p #Å!P#'¤$ÀÖL€LPͰ˜‘y/O Q:Ðc2èJEˆ„IèMP «Ð`žñ„Ü#EPhþÓAÃc²'úOˆ]ÒciÐG0LP$ Í[ Ø<Òu\À-|Z—kO ĆÜû(ÐJ+™ y  RBÚc‡“¦!‹Z¹Ôî1Öä0‹ÐA¹#{Sh$DèÔ…» :a¨W°"S0‡à1§ „±(~‡'Ü4 054ÑP/؆ŒbHDzRA Ò @íUÀupC€Ñ2kf,Àq  @P!S(PŒƒÀP3ðJÇQ X0&÷õ4¦þCp*Œ: ð “4À#Z°9À"õ “ŒTA؈ðwÛ¸ `‰$±GJC À¥ðL†5C9XÀ+#Ih#Y>QÐ#©A)e€@^13$0J²(”ÖWP7ðCЀ(pÄPq1À0d9€Œð€Nq+dQ=ë Q]p 5 eKl¨ @Y ±0Q+Ð!GôOp7pjD £U0e’QÞ” 4+ 0J ÐZ€(ýñ˜yáµþ—Jˆ4Ô‘hq 1p%ÅO³u aFCSÊÀ2CP8(@—.c+[i,0Ëà CéœWw4àŠà RÐ$fZ¿ÈBF01`=Àïp‰3ÁdðsÙÙºEe/`R°J5˜GÈt‰΀Kn÷qUÀ@7‡°G°p¶ga³vlá:24à!¥AÐ7€ÕìÐÑÕˆÿe 0˜tD™ÍÓ‘àlQÐ'°™^P³ÓD^aM\ ¾’^0WPX ÀQ šPeA  bÏ©¤¿–[%Yþ\Ð!•¢“P0:ôÐ@Ÿv50cz!5Aç½Ñ pCzv]p/°×sV`Y`Ðñ À¥¸pP°I5Òó~ijáµU`` g ºEDh¢×€^ùXð6—©éÓ8v'X(@†97Ч@§: y4Pà©+ 1`@7b¸Ã5bˆP8Ð5pšB=Ú)!°”cZuÜ£&Gx²'º¤ÕzYM  –=P=pðäpÀ¸Ô+ºÙb…¨Zß®\ð=@þe=Ð’96¥RÓtC£¸T°°6×§C¡,1¦V+ÐSP¢!p8 šsÙ€GÐPP0îêc;  0¬Q*DÇe(+P\@‚] 9–5ÇÐ4 Ð07‚²ÐU0>;p3«ƒÀàX0­ÖêµV÷5¸†£"C34i…Ú=Ùh3ĶG° ÔC¶Üs|8eû €_C ?D Ó=a«mF¶qK¶ ÀSa¶eû5ékvKh›$„·3d”ùq»?¸7=f»?Úc|Yøêöµ£þKº¥Û*>â·¦«º«Ëº­ëºÔGîôº³K»µ«Z¡]‚· ñ˜g»¿ ¼Ôw­ÃNé2*0pŒQ~kÕf䨼_syÜ¢`§ÊY¨!9™é»RUÐ4Á+¾ãë6 €0;n¢‡W9QP+Iø£P; ` øë`ÃÚQÐãÙ)!ˆ:?£‰ò"\4  äëÀ6é¨ ð5Õ[`Omüä#\p(‚qÄF+ae˜…Ê4LPh·̳Â&#S'¢ÓìƱEÉ.ânÀ7L0*Kes‚åÚŠP:P;pÑ(;’Ã,`œ-´k—>40[P8]“ªpÜ«îw,Ðlpµ‚³°]9EO€œ ]0½‡&1æïØ…±àWP883ÃÐßk"i'`UÀ’–ЎУ„ªâã?ξÉ+À†N‚=¢…þùìèÎÊÖëG¦Ë®õ0èGp1@d5sÛW°zrU W o ÒO€êP7P#R`B¢/0Ñ-2L ),p]ð;0ËNÊY&LðX]írC€ª ¦Ë9Ÿdý{d,í{ €1aP@B†k^ýJk”MÀ%«†.Ÿ4pfý•+³Ž!= †^ï>Ñ·:° M°›< :P‹ÐôJ†ƒô«„9<¬z›îöp¬p$¦'a8°G80ëöÀDà¢<’„Õ5 Ä™0!€¼þI«`JdöQ‹'År¿éçÃù[Ð÷õª‡I@eЊb0»pð`æÜ4ApM4MÐ@|tXÊqÖYÀéÑSGgïüá=±‡44ý?'·øZýbHÝ AÊ|ý>û]âwУýîò~±•º!×Ïÿñ]±åÿ÷?ÚÞqøöBlñSW0)W,‡ˆ,Y!‰Ž‰38 W',/–,$[:‰YŽOWC$3–; ‰'$‰OŸ³¾¾•¿ÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÌ©¿[1ÖÊ 4R7Q–8Yþ‡ G O3(²Ž[OVC$7 0º‡0@QBÁÑ€(G¦“GbÅ!X‚`ÇŽ)/EiÒ 4tI²¤É“(Sª\  p€pƒÄ,2™ÒÂíÁ€'Cp<ùÀä Ž\ 1`€8I0I‘eC u4|ðˆ'p°€@Lpl‘ÂB‰@x‚c@¤t(À4)4*H»öЇ$®Hd!å 8§(àÆ–ÖQ(‹cÇŒ-[A”PÀ³OBàhBâ„`a€…6i@Á•¥ïßÀƒ N<…(*™þÁ%…¤X9 ÃNn¢xx0¥Œ +*\âh.¼Üh¢ƒº1hH¨2à t<¸¥¿|ð@ÃZpÄ XÁÂ5x… 4 Ð@aÑ!\‘C¤pDpHUl0A °Â?Ã’Ð_0|PP‡tÂEGlÐA ¦÷‚3dÐ@YptÈ(ôØD50ñ¡3è [ÜVÜ™h¦©æšl&¢ƒ)T¼Tt0 <RC,Ôà]xPCñ$R…ƒ-2°AžRVqVÜ@CD‘ÃþGÀàé2' )<–),0‘ÃˆÔ Sˆä /¨b­‡L=TÒØÜ‘ÀB( á©§½!rÀ<'P`qÈ U”Ê‚1¬ ƒ laëXâ5" c6Ðl›è¦«îºì.3„SP ^PÃ\ {öÉ5ÐêÁ]hA@ä9ÒXì°…¾PHIÃ[TJC;ðÄ$dà±”!2ƒ$A¦zµ,4ÑCçüBë·3…;„BŒ3«!5(ñ„ǼÀQ"p!"IË ô =Da&"CÀCt°‚•Ñl1&^ÐîþÙh§­ö™!DƒÔpÁ#‘‚1¤0ƒÐCO\€ÅW@a^pw–àA2qq…$00Ä ñ¡G\dqƒC„@ƒÐžW±$RdàEȳ|ðDŽ(Â(<Áè€ø Oˆ v[!AG€:ØE~C¨ïÅ (@à [TBû<òA¹<¦Ã RCîØU$¼öûðÇ/?4pHPvÀ$H‘Å7à Np„S„àH‹®°µD$ Y˜ÁôNC‚Þ L€ABðTÀ ¶ùÅv`… ì€ÜyRPþĨn(v@-0€¦Sáa*v‚@Ù Â#_Å ÐÂMr¸µ'T`") ܇´)‘3¸ZØÆ¦($k~` £Ût„,F%_:@€‚ìIMª"VÀ… °ê7HInÀÅDÁ~c ¤ ™ðxÁ ‰  ~GhÂ, “ì`l=Ø#7ÉÉN§@tÃ…Wxò”gÒ° ¦,•°Œe ‹ô‚ŒrLs«FÝø5œ`á pÚ4|™-L€’¨Böâ¨AØ‚L¡‰Ø0ÅIƒÛì&"æÁ2o@þààFYºógû€?¸¨@5RtRD*„! €ŠÐ…‡¢Å€üd€t‘‘>‚ÂP`‡jILs(„iÐK Zxc" Ð…'œ NÈB¢t¨*fŠ(L™ˆ+GË' Pƒ¾(T§˜YÊ‚ D!XÈ ŠUDgX$<§JÕ61Žž¼Aư°…'D‹À{&ðËë´EZ8vð`aâJ°p…àG°Â&@•Þ x&P*d30@³ (àZ˜‚<°ì†Ä‚„(ÁþˆeL14,M€ÂÎ@ák,`@ÎñL3}„i‚ô'­ZÒ˜, µ ”.žðV-|à&¼ED6 €)h¡ Ç(@ µªz÷»Åy@ ¸È…3þböÑÐ%„©{Y`@ö´n`à @*‚œ@ ^ iKsp,ô`paÄN%TmˆÂ &x` ®'Qƒ*$À„`¶-o¦ ¸‚âÂHø¶´³Ä *€¤€€ATÄ€\a=8‡lÏ¡]‹  XÀpwÑ.Xe XiÀ€'ì`þQÀ¶à…à0h@ ¤ÐŽ|)JˆÑ„£Ð#fÄ ¯œç¼¢(‹Oj§ø¬Ð)`ƒ^H@˜€ L ý蟅9 DqE¦XP-|xUR® ‹5n Sì”§fð¥,H  Ϫ`˜,`á¹U•Ù¾Á(€Ú°è"jV€.DAÄ2 ®pçÀ38–yq„ä  –µfÐØU² å=_ Œ¶¥J`Ù&П*cèGéÌîvSÃÔºÉ:M›Œd¡ 3I•PöT!¨‰>°ð%`®¤ÈzD¶¼jSþ8ÀĶÐBÉœLxÀ” è Æ,8é|ÌH`Z]¸Á &pA4@$™€]D̈¸:à©­ {äXyÀqÀÆ¿# rð¨ÉZ€¤õ/è„Y@<ÕTDHáØ€Á ²¤çb$ –»×Îöe0 º‰AP€d@ªÅ‚b¨ß.p¤=ÀÂyfб. x^ ÚtÜ@¡œ’À{°¤À_@:˜øw X 衃<ì)ˆY-Äñ´_‚4 \:¯WYâ°ÆA%>“ƒ‰M˜ z½Â<0¸¤À þÀDïÐDÀ€DP€ØG“ ºêÀ†xaJÀÔZ‘.st(Á¹Ïrò¶»ÿý ÁtÓìs˾'³ „@ ÉÆ’ÔM#tɶ^¥I&ã)r'ÿ—lM0 ð L°à%ç•©tžq;À8-ZPç”Xs;¥A0@H€0ðp 0Ø0@Ðë 0 R +‚0;ð&8/ZÐý'Q)Ðu,ðWØ€XØ RÐ}bø~zwKX€kcKÑ é÷’†p8g 9o_þ‡x 4Öh˜‡~èICà^]ðù— ˆÄñ€c í×RÀ…í„C`€Q‰  1–;Zô‚w™8ç´aˆ`ŠÄуx.ØŠžÔS ^€ ÀQ7ÃÁJÀJ@I5°4ð‹Ô†VP `ˆ50[òi—(ÐN Wç:P'pM§¨Ì€[(‰®¸Ž`Ä8€vðå8 ‚68\cZŠÀb%€wÿ‰q 2ÿh q3$Ö6H ºS Ó—VR[pÐ…Ð;pƒ þp+ÐT €+‡ð à‘Ž( 3‘Œ8 0’ø8}ºPB  }†! Ÿs&@6ÞÄŽD)?€£äcê 044€´ûÂ/1Ó'Cð1 ‡_bLj8Å/À/7°Sz&/Àf±e z G`6X Pn3†)Òqë€q Ðs-wök àJ@ëVc·ºP3Yˆ6$—t¹ƒC!dÙl±qîÀ.VzVððƒ7v àa0ñECÐ`OEy›kC+0ˆue÷ 3PPèÄ;a‚`†9þ °1!Ðeäë¦U@Øfö‡QçÀ°n©.¶(PžúáPS @€Bަж 0#Z`:§6ò@9 ¸r1GÐ@åç™VðQÀÙ]€Y-Ð+âSÑÈ(ðJ¿‘ ЏY¢lÂJ0J^€‡I ø"!„u1ÐJÐqpÿâ â€a ©pÑØ0L0_\qs9+Ð=P}ÅÂ¥ð%ðG£_¨Â]S#L³p,‡ pl,ð1P}SÀ5ó°:QzqWjþ6¬9¡2ÂC09y,ÅÒŒ¼Ó…,ñ1Ýe¢ˆª&3$º¡¿ mƒ5 Ë2`‰ÿö–R_RòˆjÐ~c]H"Ð"övS`š'l6L@öò‹ GfW Q ‹:à!˜ù9 v¾0Ðf ¬ 9«”ñ\Ò6 ð A³ŠYªÐ8@ 5®”å%0>µ69Pñ肉º®,1P0J1`$j r (üéÎæ©E]0ZpñQGAµoS@MˆÀ=ÐÚ5$Ðp^И–c5Ðd’¡¶ ±þ¸žp7s5 ¬½—‡è|—‰†€)[0_²[=€[Pð Q𣋠-»]0«t5b)+Ès²¿A.|È®V¥1t‘)Ьx\(Ü×¢‡Pu^p³åJ+À¥#!0oò¨ÝÈPG ‰N8‰0 °¶`£ ð%> òßÇ!rP°ªµŽp} ·Â†›èÄ!!È!¢GXrˆNS 2 “øÂ!7Цñ%ú…°q„&@›%ôl"ê[0] }‡   w †+»'ð6òþ‚êc ÛÕBåŠÞŠQgã*k21Ê&´Ò›ó »ÀñV/@³7fs/@¤¦Á{`záÓV8pîcWÀ?P&ÌV2G°°|") D ccªñeàl ñ¸ÎPè \àgÜËŽ—äJ¬& À/m2²*Š´JÇNaªŽÞšW0ãólQÀ“ J®½‘\À)Ð(d1ðX°t4J œí3¦à–A {µ”ÌÐbh§z}˜&$së9ݘ°¸ U<\ 0R Ô¶–`,“$2 ø ÀqHWÆËþÆküEs9 À¨Ò{Ág²…bs9@4 !áq¿»¾‰PÂÔR +  s!CÃ6Ü"q Ðp06j]c ’³$ðÖðM JPµ ¬F8 xÑÈR°"µ»VÔÄQp@µŒp–†@:°¡ªà9À-ˆ0^7@ŽÃéL£Í€3t[P¢Ó&¼±x<XP¦Ø@‡,°=p/( "# %Œ;€‹)Pl‡°g¶72|’,ÉmE¤Éów†jWÊ>[ !›J€´+q!@;ø :ðЇP_ 5uþ›E”=id‰°‰-õÐ* Š P=(à Ò°)í‰ 0™ ;Ed‰1â’R½ø250>õnû³eC Så¸( (`ÙCøÀ1°pE˜HÔë•,­ J—ÈŠ“P l V0Ý\!°§”³"¸h9P ç<Èê̾ˆ ÇT8á°’õ ‘\Ãú¬÷Ì™tJP’˜ /ðL}¦< L‹Pu]ÄÁWPÇ·‘ðÇÇxödÑÕµGP桽|˜À—ÒÇsŒ9`p™&Zp€H¶RÐÛ'@GþGàrádxŒ: ñ[`‚¹}Î5ÓP„‰u8PÀ'Àw¡ÔÙ!l—|`ÑÛRÐ#p0%º²téòá)p‹;0n$o%)MQÀ†ä·I5HaØ Ðp¦®i­¼SpU k­3P·S€]×Á×RQpWð•6™Âj6µ%Ø5¼Ï½¡É)PW7},ð6‡Ù µ N¾ÖfÑQ0©ŠS4;pO V÷PJ~ 1„^¢§ª¥}R«V«*V@X°J3°Ü °VPæ=•  þÖÕ)@p¢Ê^@`Z^ÑÇðÂÍŽ`oð}Š  "3ÐYàrb!lZM0¬WPæVðm|â!°™w;P4˜Q+·=»Ãké–é©€ŒÛ« þÐ Ýà&JÂåìs¦Ý%^@qJ[ð#þæxpòÔ°qÒÔx‘£âèPØš JPàx _ŽmÊ;|+Àà³/0J oÄáw2;Ð7iö±W:Z€ÐP†W†Ì¬ø²áCpæx‘àCÌÐ}` @$…!Ða(JñJ'MÊlX&¬Z:|€r‚×±dËš=‹6íÈ'U`°R#€’ª½‹—âŒXò¢Å1Á’×î~Ø@ÂA¿Œ;~ ùã*2H  K)B#{þ :´Yr³ˆ>:µj‹ ¤| ËbÔL €Ä ¥çêݼ?~˜ ÊÍÞÄ‹7ûìÄ!†îÌ‚· xr<»vLYRÚÞ>¼øf!,Ï¡õùŒ+…YÜ€2¤ÉŒLz2hR€þ 0`0DG4Á 3<‘ÅA3œÀ 3\Â@Â0@Iã]ˆ×\à†~¸Û,— ÐAÆÀ4„ Ô4!EUHÀ…,ð¥ÃT/ÄÀQl@Q4ðÄ4@ ÊÑC0U\ Å4øb–-}€Evi f˜x=‰š Ðd)ÃÌa¼ÕÁS€ 0¤°äs@\¤À ä Ã[\$ÙD'$JÁ ^ÀPÁ,|pD((f¦Y’š~ jH öšxðDÎ=Æ„P41“S,¤@Z@± ¼^„pC÷]Àiþ Da…¡IÐŤ±ð@ÌÉOPƒ…¡nÛÌð·âŽëæIE3¬ú;ÐÀÞ[uÄZLpC3ôàA ÜO VtpHÑ@À Á C¤Ð¿Å WASÁ‚ÀW°b”„  30@ V0… \ÀX 0ƒ(9ÂÇBµ@¬ptG°‚R é`g^ÀB p„#¢à‘4:Ò0  8˜ÁrÐ! ]0@M¥RHDA ih¦HÐØÀn#LHß:Ä3‡žàP¨ã ×Jb‚¨@{ @¸=€¨, ¤Pº£œ6µŠœH¦´pGW@¡–˜ N‚ËÄ@ %Ñ" À…§\@ƒþ}Á zE¡¨ †c€A¬´{¸¸–‡z“7à‚>@ÜKäàM9ØA(±“ƒBÂvà^&l! Lè@ö¦±ÀÂv|€M6Bl[$“€¬€ÈK@ Lß °ÐŒ¾B P*´ŽæÀ€¼ð‚-(µ Þ‚.àD1)À  z Ì`!ÐQš›‚ÄÀ‘5¨Âf‚4^Ø@q ÐÔ)d€ E}€¢ðÝQ`úwçd|g @rÀð®•é%3`À£] NëíÐÑRp´#A¡3¤UÍýjê/xþ`22€`Ám¥ÌL‰xà& ¨€"p0W8/@Á0…¦0¡5Йðœ7jðgMa 8Xq'¢ÊÐ`9ÐY~zä ‚0²ž0…Ô S @Ð ¨±CVÄÁBÔH)L !V¸ -o0DH'`j  @‚@ À¼J¯7˜RÐ.`á ˜Ù ¶ªg-)€)¹oh\˜ï ¡3|…À ^”‚3ä\Ì÷a0h+8À¸‡ÀO~†`+`ÂÎa³Ü€zW(ù p…¤ åZ¨’Æ„Ù8\ShÀþgŽs`ë£QX#—Ó¦Ëy–H|s£+T(zK†@€,ümé™ú@n@õ¬k}ëš2(×!ãó¯‹}ìdnP€ÁLJ| €#œÀrÿî‚`0ç©]{0H@ €Ä­ì„/¼á%M€)l!1ET>à@ ðBrp… H` SàÌ]p(t\V¤´öë~õ8¯ÇÖÅ‚lÁ£ƒhqРùÀ  8èÁ ²p„`žKözÔ¸°7q •õÌo>΀a)À¤4à„!€-(@ Ðͬæ Ù³Bv ³´!˜@þÿø[3ºP`@B؃+è`3:ÂÚRW03ÐY€P0Ë•'°Þ(gò'Ø= GÐU [ð JP+0P "Ò’-,pVÀ$ðO P°R€oˆƒ98.¿ð €o.§ƒE&.4P7Iˆ;Q7MØ{JXeŸáqIg„YØ50`_‰FK¦q ”Çt—£åƒ5 s~1RÕZ‡ÎG „H˜Cð¾F]D-Ђ3˜àB`:@p¡S-9¡`‚ˆCŠ 3P:Xð€w8) þÇ;E0„{su3)uãBUÈ,£–s/!)@Iaˆ;0ÐMñÑMÐ")p‹C†‡~e!ÆPx 0°:qèp€,(`O0àÀ@ð ."6…5XÀ@5 _¤F PMM:0˜$@ X@GPˆ $Ю`O˜÷àdRµM€Cs]7%-$ÐQ0ƒÙ÷+ðSм¢JP(ÍpàHÙ‘zè`Yp‘¡Ï— 5uU` ÓFÊñ_$`;ð L@ÉÕ^pv P ²S%i_E7þJ¾Œ²]@+à1R‰SÁ=Õ%ЇC€´+€Q`AZÐ'ðàHz• }RÂÐh€\ÀYPB˜0[˜€§§Ea!€N  s`@F5Â$o( 4 ^pÐ/Ð4Í 5µX½a-Àà´'t·¶;ð{ 0}#ÿõ  ;°q ´ ±) 3Yp:F”ð‘,ð 0~0Àwt ÄÖ+™G$ÉvPA°, Upò¡'û²GפºA/°7ö´!©9OWþ£Éðgc+PY°C°' yv¬øOPG©Oà 0~•~ÃpX Ð2bs + AGoˆ;:pÃ3æx–RÅ@Ä\àÀ…–b—P 0š(À÷¦¤š :@Ö¥Ù•  SU VìR¢0x!¢( 0RP:Ð+ |]1Ì)@y PÕFa´+ ?Að³óî4%‡rQ@BˆG”)@¥b¿õVJãðSª™(;5ŽrMÐ…’V€R0bþõ+Ð6;T^ðPœzuhUR)m¦†$ײNuiÐ=@(pó_ª)Ð0Y'à 5ù·^5S@t“2.êTP@Ø ¾¢aôæ˜04`REj°'@R‰c.ÆF@J= øJ0(*Ò÷OLð=°JÀŽO8°ªLÀ àm`Å p~ÅAaVPYÐ0Á0€ç±¿ÕN,°Ðq¥SR€SÀ”–PhZC§Xð_ TRPZð›,p²9š“`U­”—´C°LþCàZÏYüóP (:Pß–+.WÓCi£«,pžšs2 Ð…·¥SÀl0Œ0ÔÉÔ J0Q°Pð¡gU…¸ºÓ#@= ´b!Y›?Ú`›Fç U`AC\ðS/JPpàQÀг*%C°\@kþ† ,‹.JpI•»[Õ5[àB E´W)Àƒô”U³[Ù %»ÁP°Ðei ¼,p7P;]Ñ]í±{·˜"^‰ð?f²Q0=X°PÚ 8,0§áb Q š_”¶(þ²P ªT('W¿Ôk:¿, =°äf# =  'à Öa«º—p @!À© lH9@»G¶H  óGóJ:@/p¢°¯Lðä(·Ç¨ZÀ…ÁÆÉ< ®ð$-,ˆ-ÜÂ…±0Mà2Í€¼ª*/)ÃäSQ¥@‹ÕRœAaЄPA‚8ýq+ L3Ð5Ða Ú;X°V0Ð"O° % ðjþ(À…0ðà6[ J¥ HlV +É-ÂP_¦aÖpX€Ô&`šL 1) € °†8/yk9 Ÿ PãÕP/û kS°fXªz ;sûQžÇ1­P«5àº'mLûá\è€O?x$À$@Vàb!`›Kœæ5 0N$0C°ãôÌ 5@̰Ÿ$ N! [-P8ÀÄ«šÓ`5@eJR%i0ÀS0Ð:A3$`+G‹¥v3—€M[ðl˜Ð$®$‹«WàqLþ×wѬÓþróxØF:,iNˆiàÓGFý“ w">Ý Z0ÃÔ“²F'BÔD½Ó™Â ð˜ pN€ l QmÀÅájÀjÖ¡`0Ö%,…W]xF`d€ }€s°—P6páaà á[u@uup@ r°}àD w€Øt­Ù3÷làA@,ÀAPl<€KÀ`Íl c°ÖlÀð AÀg _ >,àlð ½Ög`aÛ< ÀÝÙ`ÜlÀØt tð <àÜÉíDÀÖ—ÀàHàn`_`s`mPë¾Ö¾gà#of @v€.p#° p,g í@-Àç#@{k ñ>ðÚ €{°þ@p p¸}Üõ*ÐX0Ð+Ài%ÑU5pV€úÄi÷YÉÜSéPY}—XjH¿K§pø$ úɶ'rˆ0Lôx Ò*mWP¥Š R ˜òèKšWOÀi!¥05`ƒ[43P/Ð[7¯À:ôfŸã,M8°‡|pmF UÃŽ!þÎežÌžoàádð PÜlPâ~}ܾsPÙgpîNÚD€À}&À{ý q`, Fw`þ^Ð×7ŽÀ-- bPcÀ pg0%0°Í.`þï `à À’ y@€npa >0a€Ù¯ým€Þ¸á 0W]Y L]M,)=8J'\+ $Y  M/]V37]UQ=JZ\O$0P,,' 8'/(3[MQ$9PP'»JR,Y9J3CRU$, 8 P:$W\M8R05^Z, G 9W^YN 8‚"ƒ”($и¡ %X((h¯‹3jÜȱ£Ç CŠI²¤É“(S‚´³¦ I¨pX ‚  tìXøGƒ'j‚”Ôþ…O%ØdTÓf "*¸±ÙFmÚht!Ĭ2ÐÑЇÎ0eò8aG"t„¸Q¡! 1EƼ‰Ðµ tæùÂ"‚ž/x€q!c ždò$‚ÆÂ`öœIÂLJ_ ø ÌËHM• CHðW‚‰\Ãæ¥€K–ŽÐ¨RCÛ*!xm˜B\Çü°A Plˆ¢¥F”HxÂB–a>øz@!J;dx€‚0¼ÀÁ„†’!¥(¡À B€rý€/!\ÀÄ „ÐCVÁ‚0À ÄM‚ xClQC(@þ VèEUL@Cl3€ì‚ÚŒ4Öhã8æx#s¤±nÌ‘‡qp`GT¼ADE qd¼AÅaA„ q<öCFF¼!Cw¬a‡ °Ä‚2,A9aC–yüàÀaÈ Tˆ†u|! À¡ÆyœqÇTXPÆ#€¥ ¬ñÆxüPGx”0Æ%,!C’vŠ Çd{ !CqAÄ›JJ©‰@ :^ô€9³É\ìÀË!hѰ,p’À $ Cð@ì°iñBàE '4ñXp54áþ @ô zM´Ç@ç½@Â(ñ ,0 DlÍ x‘†Ã¼ÌB;V| EÞÓÉC|pÁ,\‚U4…Lq&vA'è€daQ­4×lóÍ8Ó„¨pQ¤ñB„R"9ÁFÐ$ADGFVlò¢N\Tj\ä tGATÍÑÓA{Í#øl3WL]è pë°ÃxE ,Ð @QаwF)pƒ„ðD 5<çAZd Ѐ Á­}PƒXäÐUxER0À®OAUìwϹdþ…Œ¬À…Z@`-ÒI…80¼BWtÀ±ØM @FGôð=Ô ƒ:\pA&£ŒÃ \°…CXQ‰Œ9·ïþûð»åñ×oF ŒõÍG$ðÄÿ0ø þ—‚z O`‚" °‚ 8ˆ3XAZ„‘$Ð ¤€²Ð„ÿ``@ 0p- @ ÃHWÀ„]|  7B².˜‚à C@ ûp€( '@ຂ"ƒÿ›ž°²àR¸52¢€'ÀOPÀv6AÐÅ n°‚&P 3»Ÿ×ÈÆ6ºñpŒ£7ƒÛÌñŽxþÌ£k,tð‚p¡h ÐJHÔà®™$£r›T`“ð€0FÛ7Y3öqò“  å9À‡Cò‚~ÐxQ‡5 !$mÈC$Ã'ÐA“ –p’7œÁw¨šò°H:p­oд%QbàÏ?€Of$<¡@= @Ó™à §8QÀ j€C Ô@‡A*‰ä… ìà†Z’Ác¸O肬aÄ2€ƒ’ÀÈ9Œ_Ì †:têJ)ذP¨ tàgFŠ„$ð@ìtÖԠP€¡¡¶œhÀ0?A 0þCš‡:´ŸN0i xÂP´¡¼8§P% àL€¶P±Œ@ YÐHP°kjä »óÀ"4ήzõ«‰K ?àá N BÞ™†<˜,˜g>Ñ"ƒ"ÈR6X€2b3A+c ‚¨°8@q˜\ð>ÔÓ|ȃ dð=Äá x%Fbɇ±ö3-B`ö „OÅyxCÎ<”v`LÀð£18Eeˆ€æ ¸Àq˜“ êP@±ñLˆærpoJóß|P¶y0m¶æ‰Ðܶûi~IÀô.2…$ oþxøƒ-ÆÆ˜/2€…è^d¼ @øFlö…¦E00Žeß™7-¢ÞîæÁ˜uÁJá  hpŠ )Hê•ÁXÀ ä“_¸ƒ]=Œ„ªõ—éìð5ŒapBˆ ð@ _¨ƒ PÉ%˜F°O™Òj%@BtÌ‚:È!´µ”Á‚ 8È ØR Fà‚ » H x`@ÊË@Àƒä@7” „ìC%Õ˜ÒIè¼ÀÝ ®Ç&d /0@hЀ xÀ©X˜¢° èàJ°pPQ € 3À¡þ°%Œ\˜B pÞK{@A¢ ¬  À ¢€p§Y+@ÃX°ƒHÓ›P-ø« ¨@ª€md«CX0€ d`LÐv2À¼ P@¸†máv»›#Hp †¢´r­ Ãò0⟸Xñ°¿Œ´!  x@†9Ð_ˆƒ¼/Âz²` B`ÆYà‡8”„̈Œ1`Y 2ˆ€ÔÄp$ˆ@ l ¬Xà‚Œ¡´pèÃö‡¥!”qâp‡;ai_øÚû Ð<Ðñ‚‚Ar°T`a+8Á¬þ°°M»¬Ðƒ,`Z+x¬‚¼€Z@ð(PàQ˜Ã6Ð1 QHQ†p.pL7({äÃÐÀ |ü®š5‚ÁÀ=} ®• è ÏŸ Á¿°7B¶@‚0@ ˜AB0)tàHA ¤p/ì+ÑußM|wÛ žÒƒeÅ¥¨ÈÁr‹~pÉ6`ê’}BÀÀ¸ZÍ~pš‰;$Á*hÃôr¸´…Íf補 †4ì þ´ZNär6$Á l* b„Ôo°fÀ<eÐ}I°_ÐHþa@‘‘c A×iÀ`0„!-p?)ð=ÄWÀ\,áU÷UÀ/ _+pÒ´l(€)°ð8à(ÖrBX°9ÀQÐû!PÐÔ/1 ;P/Ð`2¼ Ä/€òA3(ð@,°5FÈVh#s€p9ÀåQ’ƒ(ð p p'àp9Ø`>ðŸSþÐ,$ÀöP|”XaH0x€<"@ðK E€‡áePe`tpað@jðWñ'ÆJ}PÉUfþx°(hð-¼ eŒ6Eà&Œ&@%2ࡧ؇¡wÐEpI`À(ŒA°EPÇra0&à%h n€að‹e`Fðb°ß(ŠOLxp?42^ ðCÐí’ÀO;pv^/Íò‰[°PY`-O8°X°) Æ64@/ƒ =PXpÿ¢ð 0ûÂMÐOaˆ0 ÑFi ¶ C@*b pª€(0Ü%‘ù P^pÈs=pˆ[ðMþ 3ÀC0ÙQVU‰pY3  o9#* -rµ”(†K¡DPpú„PV˜%A#àF ˆN€K/ÅIçNðG,&°FPnÀh5wpkS€Ïð!Â= Mµ ­P` S 8ªƒ€8°®0h ,09ðy@Ð9ÀXå4P„—U@!P9Ð\Ð×ÕXÐ$°máJ&m(ÀÐö9€8ÐQPU±]°XÐ7QޏpU𠀇20a7ƒð…qÙn7þà›6I rœä{à? tn”cm^Ð2—ƒs ÀÓ“,W$#GÐãe+$* @¶À„÷ M0“ p'/ž4î /úí`Ð-á£h¤G -A3ìÖJ:ð3@¢ð`.¼€0`Ïu0@¢ð s ¢BÊ£'\ØÔ> PW¶ v]à°uI‰uÀ—xZ¨#1|c¨À01°§p§O„FÔd©•j+™Ê —z•Ê>Ÿê©qº £Ê]ÍUªÏÕ]©º]¢ú\mšF¯z0B*«it£3óþ€`œš]œš«2‚«ºz¹zL ÁñD À©O°X©š½1“4Ck@4,`†¡H,à{*àKà—áÀ­"QINAýd¨ô*N„D­{j`cWãuQ¾i,PP1[1$°Æ W °×¥QPu¼±ËX0ÌR†À,0@°¬8é± ‹žÞ##%¨Ñ=J #ÝSñQx4 z‘³¼P]°{=û³Ö¶]Ð^÷ E{´ÊP²¼°´]:Èгéú ­=Pmª €0Æ``BðþoI`!wpdûcŽ´DðO–®K`X%d,z@E–J€†õZ‰·2 Pµúh}³§d{:lÊ ¾ù¸¾ù¬4P1”[15k4 ÞÉ9 8¼`º}3º‰Z…km¨ ; #®+#/U »2R³(» ¹8Kº,À³,à³1¨O ´¼ }z´ÊëGK=0½4À©V 7ù¥=0º†½W¥%ÑrÀ}`AÐnðr`<€b FÀ&—OlPs>pmðr zÉ ~àpKÐ<àñ¶< ¿ðþ`c. €%K ùt¾r }°&wdPÁ0¨FPÁ_avàdPq€â«$>°¿Z!Á?@Fs} %Lbb€®ös¾¸p9`ð¨U»¼p“gă'yW1Ó1›+tRÌ ±A:Ì X²éÓżðÅ_8:€_xe,#0€Xpk|¼pX€¸…&à M‘ÇòÅ OúR0y"”E¼PÈ“CO@AŠLA  úÈ}ü›0l¸ ¯1àM0|(Q - kЊˆñlfOtÁÊI+ypþPŒn T°u@" "P% [2ði@n`BPII€g-†y`æ‡Á''*rË?€r}àg aà,°q°.Ð@a ’…i0 fz€‡ä#?@DÈS`›J¢@“GÉ$ÐMExÛ𢠰š<üFwW4ÐÐ*© N+©àw\#H ,ð¤ø, ¨,N0@@b&&5*Æ & lB` F@°½,‡b2`jÀYÃHPOFK jÀdd Þ—|Jg†*ðfpàþ3}0ŽT)Ðap¾P(up¡EðE +0a/Kп9ƒ.Òà 8Pã„uȃd \€Sðp±tn4€O0Ø4'ÔáÉÝFßÅ[0T«Ñ—JZ@'h#v­Xo_`ø¶_$=¿¬4Ó,€v ¡ÇØZ@AGл݃ÀPÐÑPîþ°\ Z ~n @Ã;jŸ-GÐp¬.JM3vPbÀÍI0@0 P=BÐNÐçp@ç]XA Ï{àrPOßgm€Neh °s`´Âm0IZM?q@{°EʼP€Ià0.p3±u°|°®%SQÌe ?0xöæ}7VŽèË î3J}ü BÀÏZذÀÂ,…vk4 Q€“ Á^0½cY»á˜žéõƒyPrS{°p°{p> £¾kà`Àêþk 9MhŠºˆKPë6àHrp²¬ÞL>ë~ k°~°°N1&ëk0j wðkÐŽR@pLÔpb@ç{`õXê`*à`Ð@ÐMÆ%÷ë>08@0p!¼Ð¨3°4°] GÀGp\PiÉ»MP€; 0Ð+€ãÒrw—®éÿñ5À4„:¨#A\‚ÉJjPp„DËI ·ü—1¨ûC\±ò5%p€ñs[`5 ±,àÌ™Áñ„­UÀ<¼°U˜33è/@þÖsBa ò^ÿõ5Ãn°J›TpÀÞøçF9u?ÌP1ð|0 ÐõÍ…FÐ`Ÿ÷z¿÷<<høàË÷„_øs”‚Z`„Çò°ƒ€`ø˜Ÿùšÿ>oYÐÇA0Cà‡¿Æ‰­.’D| ©žô _èB¦úÁ>GPdûÁ>@Ħ¿ùÂ?ükV° °7:pÊVpᥓ.Q…Ç%bà{:9pâb+p¯vO : @:œÏϹÏþÀMÀþW£:àPþçŸü€ðP þ£óÄ’@¢³ÀµÂÂÂà)y‰™©¹ÉÙéù šIapÀòq‚3ptš‚³Â*9£EÁò”•µ“‰AuÔ« š°‘•ò!üùq#•ìü -=M]m}í©àÕ1У#ð‚õ D£;äeøð„’!™rqs¤CÉ”#1ÀpPÁ‹• žHȱŃ;¼¤`¡¥ ,^LP’åB>Lh`åÁ‘ ßÌ… !H€K”RPHXÑìД+Ù°Q¨uêÒ—•d´è¥'}À€éD†X@x±Š ªd‰‚*„(=†°x1%”]/¸h;©ÒþNF“^:!Æ ¨rûb²+ P˜=Êb޹I'…a©Á=+[¾Œ9³fNH°€‚âŠ<Ñæž@èàáPC,0ÔÇÂÊd…‘W†&`H‚ƒÄ‡Ȇôhv"Æ^0(©ñ$‡LÚBÉR‹w“À(‡WèRãE’°äP¢ÂŽGl~âÅ P@ C•OBز‚(0€}°@ OdàÅ EFÍ@U}ÃRäL|`E|à 9˜Uƒm™À,BpÄXa€l`Å €ƒ3ÈÈŸºd²‚‡ÃŒ0¤ þ@V@ÁnáÞ0Om¡ Á¬€KHáx!h-è§SèÀ* I0@9` ínˆÃbƒƒW8WrQ£H! ¸ ¤€Ä!Q )ÂŽ …+ì@E,8B® É n!¸Ô(‰'ÂÙ¤À„ @a¨€&`pƒ"Å`]ü¢ÂhE)*)¸Â |üqSXX O“é€VÈ &€‚Kh¡fq×vUŠ \²ÓYþ€2, ´±^bˆâ„`+ØEpÀ2 à 1¼ ¦à¢)( ‚RÉ€J* à5øÀªÄ€ÇÊDÆ0(  'xAxà|/x €(ášbL´Ø„T YˆM.‚*˜BPÂ8™€zÞœ0’$î1)F‡-¨A7Q€¤ï ™x@h0æIXÀ“)%`=ÐÔz`…-Mí{> E‚&à¸ÁšlàL`SŒb]aÛ‘é )^¬ ¸œ$°ÄlÚ‘”Øc1„Ü‘RÀâf‘R)( » HÀ ´Ð4@W¸Xh@‚H&9c&°D)<Á»àÕ•`P£  ¸IQÀB;ÍàŠ‹V`€,Ñ,Øoþ<àB%+HAqêÙ k8‡OáTÕaQ|ÜPÕ4B¼áoæ˜W/ *°©ÉÌ|£âëxÇ `£EoÑ0~` :”ó ˜Â’§AðxÊ×€Àtê7'þfWÖ̈© æ0뵂©ÅO¬R@œ€P¡À VsŠÿiS Œ$*ô8Ö1Ç‚@‡Îì·˜‚ 3ý¼ Ú*MðÌ)´Dg6w¨5©3HœŒ›8Y›ÞÄ—5qi1‹zÔ¤¶F”àfÁ [x ¶ðK¼ J@;XÀ„ (ÁØÁº¢F¤h!8u gþ,ŒŒ˜@r|Cx@ V`A •iÂM/ t-xà 5ðO*°·|€Q0íŽð‚9 £@À0 ëçB Sý¬ØKøµ¥.¸ÁÎ ô` OàÂð—úa Šq A#XSZðB= ïC< P€'‡ p špH¡ *m€«±@Yaâonj ¸Ö4/(ÀžÐÈÍ,;ÐeŠŸèÔJ¦|ƒ4gX!õšeI)ÀÈÄ5Hz­E­u¨$`›„¶>$‰(¡YDzàÞ-˜•[Gí(…ðþÀ >Åý, H Ð/›S`­õIÈæ7v. ¼ ðKœR·NAÅ‚hLô,¨6 ÏL ‹’$˜(TÛ*P˜‚jÌ•Y GH¶5¥˜íf1 æ P€)XáJ°B @A?qd‡H0'l Óž@šŸ°ü .fpMŽ ÛùØ?jàÚ(@Ge/°ÿüß*@Áõ@Q¾À9@ Їã°á3Äj˜°b”sOpiP+˜0, 1p¤¢/@&– PöYÐN¡ú3a]Дaþ¼@PràÅBkÐ),0Þ°ðæ2*¥h$ÐØñ4 .,O@v  PpPYµa‚S €4°| `à&••(§ N4,ÐÐdWp-v¦}è‡x"U\ÐZÐp²S@U V»f4$VC\à>ž‚@[ð†Ç£N ¶‰1 DÖ;P]à €`QH!>/P4V8røð$5ða9 —0`\œe4fQ‘Ó}¶R\p,ɼ' â¦ÐwxÁBþ}’kŽCP2¿ô¿ÔûÂQY E†Ð^\ò;q I­!W€Pñ8p!÷‡I=A=€sN´3ÀC@ `8 @‘Y‘ `vL`,•Æ£õ# C`tD‘Ï7%©«u’¢' †šÀ2ðI‘BMu+:÷bÇÈY€!]à4† ׂ à°…ZQà5–Fà,ЧnH!…4‰í¦Fkk×0n1…)¬úƒk  n6V;aÐ^),03É—}i HvU€QP‹ÏþUð KA>)V´¨TݦRP^Ðx @V4@¦°°…F±9Sp7,0mZ˜‡Ep$PŒY $`+p5ð=8Æ<¥ïX=p?LgŠ5 …iMÒi~ÉœÍYj À˜Ö‡l† ð0à_\MírGà7V’¡uIÑ]  =6©pL’'É)É`žÅ)ðW IQOPZÅMZN'ð04@péœ ª Îðƒ1pÐs%æ_"¡ J Ö×9ÐLð LÐ=€j¢' !м©: +Háþ{÷  €C²œ’Ðd64 9ªu( ¤A*¤ÈR>Q4‰™¿t ×^䓉™šÆ:›w ïi¤yS$¥E𠦛ðžètîuŽUC—@ c… ú‡v“±)Òi:¤yª§™pçU`ÆI5`J°1‡kÐ{'nQ0p8ÀÓ[0P4ÐR¥iñ `pG½6(p2z=j¡'0ˤ °( Ð1/¿Áro¨cHYbv* ; 3À °zã °œX9Ь{ªþ­Ì‰»3Uð[¬âjŠrk=°q=0½p“ð]ðl$“â7\ M ~Æ X*]p*èP:àuOÖU0€~¶\ ÎÚM¶G pµq80S0Œ ÁP¨`ç¨E¬H!¦b1Ž{$Fƒ8U XXð+P|vQ[— 789¥,oZ¦’Ð/Q¡Cà^ÛÊ´‚×DÑ/ˆÇˆg(¬ã¤pàg! 4ðr½ñ?ø)\cm£ç¦ù‰4”)X1=æt¦§°Ô©ñ°ÁP—0«aLPþ@ S0ÃZ@¢þ‡«0^p“Y*¿êd5áUÔ¨]°©•©S °•X‚…8p¸O09þÇ:0L¸˜·%±KË}2Û´½[j=`9 9Ó-äÐ;àf^ ^c…™÷àÝZ$  €¼“rŽïnÖÀG p)Ðñ¤4€æºJšò¯zSÐ,ÂË!ÐMpÉSù»$¥‡Yà6z$@‘JÀgI 0›¬Õ>ò 0: Pã!±f9˜w Ð¤D™c'Ð"¦ÙY€8ðþhyÐóõ0NT†”¤êAÊê»?¼ap@¶ÕèCª1 A !ª^-ù9@9êV(@†‘ÃÒ³¨9PX°p†´J`™àÐèÀÂi1©«Ún|§3SÀ¯\ÀªŽÈY @9`V*Wcµg(0QV|ó;‚SQb±#;—jH\P8 ]1P =6ô0$ @Û‘âYõÂ¥W¢VÛ‹&ìK@¬ËSÆ^ G`0{ Ý% òɇ¹Z—à79Ê €LÐFdzŒà!©þ*ÄÕC¥k­õ_%8) ¥GIG°XŒ 0M @tL0LÐ2û uX' pÃBL*Iæ)ðZDZ@Aó²1@Ï0À–RÍ 0G@X0AÀCP*§»ìÑžJU5˜õ‡§×pw×eP3àÒ1S` `›9'¶Q ½¶+ðÑj±+)X`°UàuP’€%b(lCΣ`G¶›Žd ¬)¶ýzŠ|;P úÑa-Ö¿ÑÑ)Ÿ˜ðž¿):ºY5yÒ¢Ð>×|Rl   `çX)9Ö{-fÀ@—þ`ã)Lp˜ '¦J50 a=@É×Í—ÍÈ›OðQ:7dE¦ 7 ^¼ƒšPïÁ(¥MÚ¥-j0 p 0¬Í%·@CNúv)°dO$Ï€A 9çÈÿ°1û€ ÐØ¿Q[¿ „ÈÑ\xúpÜÔ ;¨3°:ÅpféâØÍü®waÄmï)ÌGðÖ§P`šðÇ`ÚëíYMÐÇÓ7>ÁT( ™ 0ŠšY€’ž(²—U  é'^°pÀp\µ -¬™ HRR@qE¶ÄÂA=ÐCy ®ÙÅ þŸÝ9oÿ« !°ªÐJ:`Åžãòw „p2à4Ôq )|èƒ*ÍÞGÎauÈ8¬Nn¾À‹á¤¨…°ÁÂѹ£}> `ðÛOü ÁPð˜€t“3 ŠQßFIº  ãóR M‹Mp¯æ”S):…>mj0OÔ-Û°‘}0èƒà4ð9 ÿÚ Q`Û0SL@8µT–åoKmè¦0…p ଽƻHNëzÒ'²Œx½X߇Žwk§à(’࢞0àºÐ@ 4pn’À^9À,_ ©4€þñ(¿Pà/0OЋ …em]Mp7(æY`–Vðú*‘C/àDÁbÖâL0°µà.$0·S±±1p7Á¤i ³9c—š—£/°Ó“{àüðcáÄ»#v™ãnµÎñ˜10p$pìC˜k·)Àɬå;ÀÕ éiˆ+PlÞ(p¶ÔkÇ3à¬þMZð0°œW0  ËMÚ¸ãi(À-g Y M)œÃÁSÞ8”°ÊµÀEyËfCÐ~’…ÛÊ»Î*U5Ð(PÁ¬»ÍhŸ›Oþm ¼`ïZ$ÁÛqZ@€qYÙ›Ò‘ÔxžØÆ/ù•±¡ò70Àä@•`Á}Ís¸PPõ¢k5ðãÔÆ aíZ~„*2J°Å_->ROª´’¹:J,j`Ñm0ú%tsg¬—aC€rXo\% p-‡ æõ(V3Ïv+ N˜`É{Æ,ànd`©WÀ…@8ÀÛ@‘:OàPÂ1à/rn UR,…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›šC^X †‡’ ¤•‡ ,^)$=þ, š]§…3¡œÆMX Z3U$  OWZ«8R'+·!34P'=O [CX :4®,XC4Ž:r!€C0ã‰'tLQ‚Æ–`Ç2jÜȱ£Ç C.b²…„HL ®@±r"ãO͘q2ã-2 €’áIˆ (^°0%ŠZª DÉ j(ɰáà %(®¤B‘áES2@aRJJ+±€E ( ¬@‰‚e‰QP¤ÀÂÀªš€ L¸°áÃÔ^|)€,±axAñ.C©D=X•êï¡#Qþ@ÂPãB}ŒS«^ͺ5G†J±b€èBO¤DRð†gF²ÜÆdÀ¶ëÀ)*L¡Ø# W<(=N½ºõëªahbˆÉŽm…> …dà„X(ØY%-3Í»ýûøóëß?8ÁŽ&!Hñ€YhQ€hA@„x“ZÜ [!C„ Å20 ÅYH°  €)X¥Å° ;´ô€…Z„€È ZÀ@À@À!ì…‡O`p‹1²ÁZœ@ }íGŠirÄÁ<ðÄ jpj‡|0SC, 1.Œ æ!ðÂÂ4A 0<þÑÞ>&a•°ÉÆßŸ€ÊÈ \ðB$¼ðQ¼À4dCeºÃÂ[T‘A!L1Jì€H ЄU(Ä3\á(tÀ@V4 WÕT@ƒ=à€HtðB )PPl1—9\A‚®=< @Wp!êla_•`…›š¬P9‘@p‘:ä5Åoê5À…»,d °ðÄ«\p‡È\p (!€§l–4±B + âYÂÂñ êñÇü›/ ‰²@BJAÞ:^ ›²P„@"TÑ 4q …þPƒYé­'ÄÀD^`€Mäô!>î€AVøH€²)t ,U„ t1ÀÐC Yt ÂLGÝ „ð_x“ ±G”x‚ÄBÁ‘EîpF; èœðBPC@ä¢ áJ 0(J 8 1½' IìA @Ð0H`ãQH0€(T\Q …'$õ@‚A~0¤C")pÙô] G/}MT„U ч…@pÁ ‡ !nM4À ° Å¨AåF§y@YOPÖ þ:p;\ ]H šå…\á ËÁÀWª`IËÁ±6°/ € X8Bj€…D­(ðÂ>€ƒ\á+˜” °xa : À.P…Ìæ£ÁÁô”ƒLm:P™¿·}&Z†ø€´‡`!ÐÁ P ;d`û€´…ÄÊËRÚªàÀà€(Uà˜Ð¹t`Y  8½BR$pƒl‘€_GÀVЀ& á ¸ÁÀ„Da‚*@86 t_LSá0ðÂÔ @ƒBÀÀ ˜ßtƒ ÄsE/Ž æ[‡rAG€ rP¢e! 'àÏ>p„|a ÁfŸ} à;8O°1Ÿˆë(¨pÙ€Yõ€M @  ‰øÒ®Ð„ìSœ+à7 @Ç4ˆ],ž²’ À «G8A jж-aE@Üà(ÔpPƒú¤üÌ;ñËKñìÀ93ÏùPŸ«„>ëüç@ºÐÿD±P|èÇù‘Îô¦ïüÀ¹ÓYƒ& @ê Ö+qô©{ýë•H ·öÁ0¨-DÚz‚-Xa o=BrŒ}+T€ L°‚¶] @°3ØÂn ¡¢UNõ€½­@²—ýñ׫¬yÄè.D®Î)4‘ »ŽAÐ…HKþ€8¸jÐâ+0# R`Ù â…(d€ö­D\€Â (ˆ+Oü¯' /þG¶Ð€‘-¢bªÌ&°˜; €ÿЃ‹p&Ø0 о(¼óXh€2àpá À&Ç3åÛßëiÊ€Ïïtc¼J 5ÀÑ-%zBCÒdÁNYÀø0(°·§Xà!ðð>#0Áá5 Ç&˜sQ@u‚ ñLPÀ/ s' B+ÐK\ j’DT€Gð 5007pYÀ)Ïæ;€ÁÂ%„u^,xo…?qɇ…‘&ZNY4+°ZmÀXZLÅ8`5…!€C@ûãÀ@†‘¶7\bl\ˆ‚8ˆ‡pw„xˆˆ˜ˆ'QrŠØˆŽøˆ‰’8‰”X‰–x‰˜˜‰š¸‰œØ‰ž¨s;libjibx-java-1.1.6a/docs/tutorial/images/structure3.gif0000644000175000017500000012661210071716566022775 0ustar moellermoellerGIF89aBNç>>>‚&–&–––~¾~ŽÊŽ®Ú®þŠÆæÆ>>þjjþŽÖîÖ"’"jjj¢Ò¢VVV†Â†&’&J¦Jæöæ––þvvv²²þŠÆŠ¦Ò¦ºÞºŽÆŽ&&&þ®Ö®ŠŠŠÆâƲ²²¦¦¦Z®ZöööBBBÂÂÂ***ÊÊþÎæÎöúöþNNþÊÊÊ‚‚þÚÚþFFFÞîÞÖêÖ666ZZZb²bzzzæòæÚÚÚ¾¾¾22þÎÎÎ2š2JJJ^^^žžžúþú~~~j¶jRRþææþæææªªþÊâÊîîîzzþNNN¶¶þB¢BÒÒÒººº 222bbbnnn^^þ®®®’’’‚‚‚†n¶n""þººþêòêššþ††þÚêÚrºr’Ê’BBþÞÞÞN¦N¾¾þ–Ê–ÎÎþ:ž:ÖÖÖÆÆÆRRRêöêvvþîöî:::îîþââþ¶¶¶þ**þŽŽþªªª...rrr¢¢¢šššfff"""¢¢þŽŽŽòòþ†††þþþööþîúî þz¾z::þZZþFFþ¾Þ¾RªRžÎž † ÒÒþÂÂþrrþúúúbbþÞòÞþަ֦–Ζ~Â~Îêξâ¾êêêâââ²Ú²*–*ÞÞþêêþ~~þŠ^²^¶Ú¶vºvF¢F>ž>VVþJJþf¶fÆÆþ66þþúúþ^®^&&þ6š6..þ¦¦þÖÖþVªV.–.ŠŠþnnþ’’þf²fžžþnºn®®þffþ‚†Æ†F¦Fòòòv¾v6ž6>¢>þ’žÒžV®VNªN.š.ŽšÎš†ªÖª‚‚¶Þ¶òöòÊæÊŠÂâÂÚîÚÒêÒâîâÂÞÂªÒªÒæÒòúòâòâÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,BNþ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cÊœI³¦Í›8sêÜɳ§ÏŸ@ƒ J´¨Ñ£H“*]Ê´©Ó§P£JJµ*Ï)ÈPòè1Ūׯ`ÃåC¡¬•)ˆj@Š!µ5”Ч‰B )š¢¡( ‡؃ØÃˆ+θ"ˆ>7¹¤#ÃKm iPB± B@€P‘p »1´ TÒ×P+¨^L»¶mÛ{úÄÔÆVߢbô83°‰Š)=üðuJðá/µ™2EHƒUüºŠÂˆxþLQa9ÆS”(qch½¨n²"ëŠì &pCÆ5˜!ã C˜þ‚ Ð9Û½¹…ƒÀUúPƒ½ÒÀúbÛ‡>hÊ`CØŠÖjQüÇ&á@¬Aî¹~˜BÂ…&Qôf(&0 ãvpmP«Zd4!½ÁÓƒz;Q(Á ?„¡ ¢8?èAX@Rx¾«»„Ðu¹D ‚kP€|° ûp‰!¬ÕÄ02 fÜ6üaS@‹L€Õ&dw€v“ œNèîí=èÞbЇB`p´[äZx¡ ¬à1æCŽP)áwŠÐ¨‚=Ü€E°7‡ !<¸nં\òzÔ‚žp$2;Î*þV°…«5aVˆsš?4áKC¨Ô4HA¿x=Îá em…eå¥W¨B!1ˆ‚*"{(ö.Œ§ê!ðCܢƂ(Ä!t3iÐ ?" „PD+Χ»sütà€¬„"}À›…]ˆ ¸: ƒ(ã"ÇðÁ“+ÈKªp†>¬ k3AöFœz» BHAŠq¬Å!AY!@ þeB@Š8L„ƒ* Ÿ%˜À6 0eCà€œñTÀ ƒìAO{ÐB(L0ˆ9Ü@N[xÃqƒ9 â 4ŒA 6þ*‚ÀP;â%@ŽþDnˆ„Ò‰†p4­WÈMúp|àÃLð;ŠÏÁBØ ÜEƒ„b(×,à`ȪiÝă3BÙvØx `*A~Oj€Œ-8€žÄ„5ElsÖÄh‚Àƒ&‚hÃÁb@hƒ\" •}*¹'È+dxÆð7Ì!Zˆ·!§8S SÁ6ýÐo!¼á|h‚wæ0ƒ\MiC(LÓ$Ikà #˜öÔ¬„ÄÙ söø!ö›¨= #õ†°æpÒÄ ^U t`ˆb 4¸‚Ð0¢µÂ]CBq ÔµÔ¨ Bd'þ`(ª¦`Z0qhRÐ÷ׯ¯aßÖƒÃu) ÅŸ@sÞ« à A˜ÂÒÇf5v@ kÀNÀÁ€tÐ Ÿ9œ†€™x „€½`3 X,€™i±ÀŽ@t‰2*—Áà‚°†˜˜ð †` €  :º˜ §€XP ´ ¾°£t0X Iú´ ® ð± †Á‘ jà§v@ô¤†§ó‹RPXŠ Z W°ÕU0‹È?@RVþÙS[ñ¡qÚǨƒPY€z| ‚Q\Ù:P#hApm0k~À…€}§^…&€¦s¥Z¡‘¢P^v@–šuûù«KPÂ:¬ÄZ¬Æz¬Èš¬Êº¬ÌÚ¬ÉÚ—œ†P ‹à¯` ±` KðKà ¾@K` /à˜• ”²ÀHð tðÆ)ÄP™0fÀÌà À ^€0ȡԙ¿ºŸ–`úɲ0 yàà ¸0 À¯¯à¡  ‚°€wð€^€ ÌpÎÉ¥ ~0E°9§8 þ&%…Яé)04À¡ÐK*J?ðÐ8d6ÉåI˜¨W@}jÊòSÓõW¶BÐw1pC) s€~°z`sà40¶J»墕O€´0z r˜^ŠP=@^Ë6gBUUÀ€ i”È0s í‰„ 0ð‹_0£¹’;¹”[¹–{¹˜›¹—K¿  †P³À qP _à§ðÁpÁP À à˜ iHšÀ¹9_0 a`ôê k ³ð«3¼i@¯?ª Ê«¼¦`x šP€Ì0 š` ¾þx0 „@ /¯ t°‹` ˆ€‹@ ´ð¢”@²føGZ¡:O`c“âW¢ä¡c#W Š"HsýQ/ºAÒÄ*ðB€´;M-&ö¢ÀyŽwi‹;‡`nðÁnp¸sÛCpBV@6ÂÆFE1‹Ðo MvÐÁ€ €@ñgS »)¾ûé›V¢ ˆiK Ìà ‚ ¹À½a°y M, Žé0 TìwÀ¹Å©»лôŠp¤‚ ²Ð¯dÌÈ ŽðÆŽ€¹`°‹`Àw€ àÄÁÀ¶PÇþˆ˜ Ÿ½à³@ë; Á€¾`d¬ îKJ {@Yá&ð`(z8z¼‚BÐO d€pc&p<¡@´oñ‘P„HuaO€ 5Ój´„GWð-UvŸc›µRàGCЂÀ[ÄÂ?5bɶšGÇ0€P+c†=ph¹Êu0p›VòÈNà t@Ñù¹ œZ˜P°Ãà<3€ X°°šŠì»œ ‹à2 q‚À™q@i` í­žK›²ÁðÇ– ®`xPDZ€ §ÀÐþ ¿°¯Ì€ÛÈÉfè@|B@ZàÊà1×pEÐW0p)àXPW 1B ¢`ràV Ó]MàpïØyÅÑd?K |PÁ#@+AàjŸLƒà‹¢ðÖ¢ŠptŒ4ðŽîˆ´Û¤7ðv.™+ oð*@ÖnI¡Ð[„à–V‚Ž@ NÀ¤tð Ä€ ¾‰i2ÙþúƱ° €‚€_Žà pœf „Ð X >ð §ÐI€b`–ÐÜÙ‹ ´À–°>ÀŽÜ™3à `Nþ€„€Ÿfu@ † 4-„nƒ Yàk°=ðÅÕe}`uQV: W:Rÿå‰% ¼U\çmq¥#P’GÉßñäv§åf˜äçÃ88àaèVÐ+ѸJf{°ŒbHàÿ‚qòÃBB°•þMð­EPn < | ç 0ÎqO` Av€\æ"î#Y¡•/y_7çšçewç%•œ~”Sž1ÈÐØIRªÙœö’祕N¾ê„A!±êœV.¶¾êZÉ”ÂÒ{ Op~sárPC¶Ž=Á–18åw9… ʬÒt”¥ê ž1 ;œ¸N”áÞíœÆŠðºüMp^áÞi»uX”HùëœFç70…Pæ4såhé§Òu·˜;JnúŸà<[xâðlhð7f\¨öy_xmp³B sÖO€xf»äW¥þvÐ,{‚Z4ÐZÐò¡@€ùÇò@Òò3g‰‡r ·HB`:ðèâ¥}àã+¸5`º¡Ú×·‡ð±)ËÂ" Bw¶ä`Ò? w'§Bp P)cBÐ[Ð,V0¡ö¨€EðRÐw a4ðBð=€!Î6A Z¯d¡W$lÈÀð8À@VPõ=€©±iÚ–‘8`ç_ ƒ»| è^I0ô8ÛìaS–§¼ kc ´u«9KF=”çYà%ðÓVÉ3¢`“ÈþÉ¡~ØDî]ŠpZIÂg0 V`…$…°nàPU%åS0Pdtn“S| §ä²ÜiB¶c3ɯâa( Jx¤ÂР@†nŒ ÅMŠ%~\²r£#1ÇO gh¼á!„J¡?%nРà 2EvB)Êäˆ7sÜ 0„J‘ oÎŽ(G¸~2H!‡$²H#lë7Þ ¡*=I€PRB…­Š`¨;Ã*~8$‚Ühƒ+0áÌh Á9"@†‚˜þâ °#†Ú°‚MtàjŠÈ.± 6=¤p-†>úØã dJpà¢ÿ” ™!„ó£¸!@PBƒÚ¨b„4x.,dÞÀAª6¬3ÄŠC¦Ð³ Cô€µ.{#;ü¤“+@øGL8D‰"2¡„¨èÃn¸ä’&HBaF@ƒ‚7bâ> Ñ9Ú?6$€²À¡ˆ'¦±D%@ˆ`…7¾ Wƒ9dõJ”b€*>ö`$f¸a‡†8â±ôxBŠP@p@‰&Þ˜€Eöp#ß0{B±=ÐÜâˆþR•Ê"âe  B±&ЂÎ@Ö DˆLþËŠ#˜|Ã@&ç±bB.ÅnÐM*ØU²p`ÁaA"àc:°š¸ ÎXÞØÂVès >hà¶z‚CÊ ‹€#ŠÚƒk¯™¦?¹N R°¢ ;V `¹+RÐaÛ"ü8â‰7àÞc>Îpc‚BP¨bÝ ä•ë»9n¤ËÁ)€» ÑÙîj ­ÒA+‰‡'¾xãG>* 9£j%Jˆ‡6š¢ê›Pr QÚP)ô(÷¨B‘‚%Ê¥7x¢‰éEAF šèAþ*~=´7DŠð¥8CÜ”ë!uþÚW½P €4¢C¡„PT ,ÒkCpt†ê•ÏJ˜‚~€Œ V~SpË–Kð@Yh2T =‹‰"„< ”í°ŸK´A}(Å(( Qôð…<`_õæÀn…á³^BqRo Yàa²$F>’Ê ¨`/ygDcÕ¸F6¶Ño„‹¢à8G:ÖÑŽwÄcõ¸G>öÑvDA÷C<œˆ[1 d8oŠ…\!WBñ­­4²+=lƒø ²=0BåTT /!Ó0eAŽ.ŒN’å ¡h‚& Ã?ÖÒ–·t£RàŸáý *À€ þQˆÚäÅY˜@Y($Íü`UéJ(tr CØa­È¶Ã•-‚ŒQ‘Bzð‡ßi¡6s `àC–eò—Ð qdÄ@ÈèÁ ®ƒ)êÁÎv@ã 4a¤ÃÓIV¤¦ŠèPXD1ˆùÊO 1K%„ª*lå½z Â KĤ<¡uà éÜ„,G£UèÎnö)h`’{°B ”@±˜§}àA °&… ¸ °BÎcY&’¥Š“FÜbf7;=¨‚Q³‚œ4Q8‚€.‘¥ÁFTpƒ"&P…Æ>z€ÌôТ#þ\FózB@î*ôa %ÀwQ§•F¥e† I¡‚‚-L ÝOÛ;ý‡P\j8{@AÓ’6…7ŒÞ|˜7¹›%Zñ;½"Èݼ—˜(àHƒoF3Tã«B!¢€u%’˜Š˜ €uÌ?àæv¸‚ƒa‡3TA V(‚æá*ÐpRéÃv‰,€ »ÎÆzÖáx†"@ ÈXóôŠ9¼¡{ˆ€´¬ !%©\€‚Õ0w® #2M@ æðh3œ9³C ˆCk ˆÀú­*|=G~¨ >ШSnØ^yƒ?œ¡ˆseå€jG€=ôþZ0 ²ð„Ð)3€0b0Hþû§«ù·(ø[…ÈfB|f%À=‚¼7å WG[¸‡-ÐåUhþ*9O#dh da°+Ÿ™dÇ#…Ðû@uô-$¨ uC$ÿ“hžÁ )(úµ>ú#O¬FÆ1#!a„À „αƒ6„@H@ ?@š9 €Ï 3øƒ#´ƒC €y9p•؃öú Q ®¹Yy‚*p>°E´—ZÞ —K¸‚#˜©®è¯,9YœƒCÐ'(A±/?ÀŽpB(µœ°'X8-èþ@ع¯à/Œ€G󘹈¡–ð¨‚ášž*Ü‚àRXÀ­$Œ1+Ø‚øTÛ®À‚Š>xéƒ-P±ú#ÄBL#*‹ ’Š@*6¯àù“Š :%¸8M ²@†3à(IâIT‹æÉŸ""’Jœ*—2M ‹3xº¨£o2ÄW„ÅX”E:¡MœÅ[ÄÅ\ÔÅ]äÅ^¼£&ȷ⡟IR |K´á¹hžeëŠ, €>À‘pÅŽÂ7Mrƒ˜Dô JÁ·iÄDö°+´ø:ëHRAôÅtTG¶P‚`“â‰pƒ`2æp€² 5lr‹P€!Ђ9þ°E㠼Р+Яè-h<© €Hé -ÀC á˜ƒß P4¬hƒ¨89 rR=¬6HU\Ç“!P[›#8xñо#¯@¹C©FaœIšú˜¢ ˜ÉQ\lƒžø®&Xî£()¨aâ6C0=C²6˜€PÕª;Ð3P9ÿaÑË +ˆ¹ È<;ðEèƒA(‚%A¨CJû‰™8þÒðƒrìƒÜ @(Á±ƒX‡Ò7¨^ƒ‘?(˜§=hÄ©  И§z‚Tù¦˜Ñù „óÈ5«jƒ%]R>Ì‘þ4„èÔ›8‚-;–\Ñ1º‹'ð7°ƒî,„-(»â2E(¹¨¹º“@BA-¸€ÄUU­S¯ˆháð @0Å<í±…r*HFÄ8‚=X/‹ ÈxL«„­QÌB;xÏX¯ Ѓ!„A§/€C†èL« …þ›? º¿ŠAp' 0L);ˆ¶*HŽå•BXõ²tìŠè`™D’ŽB„½þ ‚ÈÓy* !«âi¥Ö§”ËÄ«@˜%ø¿I>gÙKæqUíÔ8ÑE-!Àо‡ R¯˜‚PF±S\Õ•?ªkÑ&ˆC8„б7(° ‚J“! €»ÔÒ¯ëˆDŸU4Y­8Q%ø :¡²¶rƒÖAÐÕÔ(2Ó˜£ò(‘>Ð60.„>ÀF®„ (Ø@7 €¶¸>(äœm “ÀÌK@9…P„ØÈˆ­(%ðØûƒ9ƒÕAE9¤P; *U½,ЀM‰ØÑˆ3Œ>³d²LþÍ‚ÍèµÁ½¤ h/Q Z–•]ú;-À¡°ä[xíè€ Оނ‘!P?VÛ1ر¸¾h’Ѓ6K)„—h±ÐËÀ¨È›‚xݪ@˜x•ÍUf}&=x !Ð>HR-ˆQÀ y ‹&ЮøP Húc“è ˜ƒ øƒ% Ž 2Ý.+°ƒžX»?Pð¥,€Š˜ƒ(- 0J K6Iº4K6áà®Ð©ƒ )ðóÝ.Äî‹ ‘ ¨‘a¯°áÞO´ET‚BÛ  J òÄ Vþ 'ö¤!–Š–ú ž‹"žÄ&æ¢á.öâ/>žO‚L0&ã26ã3FcY pMã6vã7Îa©ÐaŠD WL<-8Öã=ŽEKñ×£KP\[c ”5=胭);xÌxÌÊ‚>03°ƒ@Ð:[äKè;‚>Ó>¸7HÉûT}äãSFe;’‚éŠ]ƒ4 µ ¦½’š ˆ"·X?²+( _-Òò\:1`CÐÖè/È?P›/C;à¼6Måi¦f4Ò#`c¨ØÐ­˜‚ÎÑ‚ëP¸1ÌÊ5Œ + ;è3ˆ1¨0UCˆçø9Òºþðƒ7Xýh8„&­æ:jUˆ "˜qøŠ€€–Ìô¤È!+h*„'˜@pæâK™3„o{æÂÐ*X!QPKSE9&P “Þ(‚A 8 šdè5‚ƒZ0®¨€cˆ 0oø à‚°@h®` ´h ø€´ "¸é7*Õ=€-;À0¬êa3— X›„;¤‚Éu€+P'Ød-8‚À3PÎ, +xCè%(„z3å©>žmh…(H©¨€ øiXj¯ðmø 9ø€dèŠ]n@‹m2H U0Ëì6zžþèØ¸Yª0(ªŠVk ˆ4> ?øƒÇìÝ æ*'°e´‚?(‚?øƒØ-‚CŠÃµƒTýìãaIØ…o0„n8àVpF8Êæx†`…i¨#¨…(pl®P€.Ø6PƒØT è€oTø@ƒM€ïU0„¨l`j.(ø€i€e0„2phVP`iho5Ø4à‚ è9Hî5¦SJ%©HÕÏaŠ O¤¿^ äÎð0ÞnO‡c˜†K(€c„ À€qU`H Ø„]0‚K…ñ† nØ…ˆ„jþC0X…jÈ9`pph oP'Ïo¸ h€„(Ø…ÀñV0„ùÎriè€èmøk†Èq .  è„G£¹âs\ô€ÈH¸…p(Ë®V¨üjIà‚ʦ†0U rCP.°jCè€b  Xl ì0„ p0„oÈlC lI(†.ˆ V×ll(ð4€,GsC‡o€ @2ÿób/ÏÎE#¨€G?"Ht`ˆq€èÀp¨PF0„Ææ 8° €FèHø à…b¨Ê&S€j0H`þÀ† °vm`ƒ¸¨C¸X…\6€ WnØiˆiØ7öY”2¸€ ÈCOðŠlX`©Zhw®È2àF¸†¯È†Xh¨è2ÈöµF¨Uhµpnphh€£¾E9h¡6I2°€[°€c؆à…V€paPð5€ ¸…KŠq6¨…°^Ø„c€(ˆ‚ù¦t°mX†€(i€hHˆ{^6à6°ƒßuHà…^¨€j …h¨øãz©¨† X‹l`„šo‹iørþkØCPÍî …V0©ÈkïŠQ …ph…˜ï 8 aˆŠ€€h‹ X†¸H@‹Dp†]hŸ|Y‡Qèô9 P‚fIð€…wUPI¸€é‡ý®pnø Pƒjq¨k(ƒPS7&Pƒo5ƒKø5`„jÀ†l(ƒ ˜†QˆoÓl¨eÈ‘8T¨±cÜÁˆ'R¬hñ"ÆŒ7rìèñ#È"+îXEÆP kd¬S¥Ù´QÈx’D¦“§j5ÈT3Ô¢™U6²ÓVAR7F$¶‘ÙfŒLcjtSYÈD"×^vRþÅ ™Ç•*Ƕ À’HÖE€Š;ºŒ³¶MœÍUPZë’ ‹ dXAÇ*FÜlT #ˆ‹²d>bJfš!à$³!’$[Ôâ"à4jn;V³níú5ìØ²gÓ®m6œ‘ºwóîíû7ðà‡÷–#aÙª†rDó° ”$6ÒMëÖÕ²]ÀX ƒÓªË¶ɶå(s-*#Æ5“À­¤Ql¸äXÖ”0I Lt!éVt°ƒ¬(cˆ h\ )"ÎFG9¨!À€hhˆ†$"hH&'€Òr …$ t1 ìÁ£´ÂE*QH ,þ$ ÒHÒEãðb„q‰hâ ´ 4Ï€•E¨R‹Å &Àâh¹%—]zù%˜aŠ9&™ez‰’Ä©¹&›mºù&œ½‘C"\r‰»p†!]Ü‘ |F7'taÈ Â0’->Ù`H dr/’Òá.ËÑÍ4hÇÅ¡‘Á†D~’M­cÁŸØ°²Ö( < — تÀýu`DdÁ^·£ !)B”ƒ2—t#hÀ¢M"p#6€„ÀÄU6]4³WF5€SÚiØÄy.ºéª».»íºËÑ8«D#‰’LH’*eôI  PfH-µ`ƒFþŒL‚D:*g/Èa¦h$‚žˆ B7™Qf#M-Õˆ°Íƒr€6Ýì—7¬¸ŒâDÕãŒ50'‰ðÒÅbL¹ÖÂÊAª³ÊÅ-Ô ÏÈ1J¬ÑDãÀKPn„9ˆö.ØYMóuØÄÙ`PÙi«½6B á`6€Y“ÀS T0†!F4“J¨B +e¬‚™ÅÀÌlr°Œr‹2"¸pm+e0Ò¡DD@B';ÇJ´pÂHÅ$¼´R $\°‚†ŒÁÍcp“›DÓS@¯ÜÂK-“°R@9X £DþD5âÈÁeЉ3¬¨¡*7@|Àˆ6TG”H*©psçGè³íîÊâ$Î-¹ ×,½@êúù럮-dÖX”¬B$PÃ4bˆ1\FÓ€cÈPŒB Ép† ¾±ŠjHB Õ@ ”Tƒt¡ÙÈÊ(¦¡†NÔ Ta7äð£dŒ‚S*”Ä8DÀUL£'à 5lƒ ìÀ40`kx 6‡Ô s‘EØF ÊRq¸ «X$(â‚p¨ofŒHûx#,,8á@[E¸áC| g¼#ó¨Ç=ò8ÝH0.`1À8AXVXþ`5šÄI¦Q‹\€Y­˜D-Äœà$†¨Æ¡ "L£˜D$Ž!hÔ" -€2´1U‚±´À(êè\ò‰+!àIC¬B (‰‚ ²±‹gD"‹lÈÁIr ŒÊ<#‘ÆFN°–>r³›Þü&8Ý$EáW$Ø "ˆ@4kÁ´ŽHcËèÑŒâSÛdk° oœ ãèÂ(N ‰¸ -XF,PÒH¢¤ñ^+Ä!x ª¸Å6.±‹a‚ÂHÕ¨oŽÜ¢Ó¬]Øà"6‡ü©Óò´§>C1žŒâ]hþ“Èv!5ˆÀªÐ†!®¡ HÀè p#"ã„DÁ$Ä-ŒP‹È`žx€ †°' »,\ņ$áV€…Ê``7j¡Š FàB[S¾2¡HM…x`ü˧–Å#p!°K OˆÁt°¦6<Á Ð@EDñ„€ †Ä,² ìáy ”0á8ðÚx@"ƒ(Äúä€p CàV®ÑTU$ÀH€$‰­Ö`ÞXc A†t€Î’«[¿¡³ŒÔ{ùÏ[ã*[Яܰk¤"tR"þj¨Å.Äщ[(éRe`C-€Áß.t#ÐEˆrpŒËRlgP2P`ˆ F(¬0‡ƒx¸ÃÈ8È%QF«6ñ‹[lô¹¸"R¨‚þÀ«ø m €x|‰wøÅ3î±!ü@ˆHá*¸Â*B€ ¸A1@F¶‘£/*„ "‚ŒL@éAmƒ\£Ï Oà‰Lä#£¯;>ˆª …7h!"g˜Ãΰâ°UàÛPE7¶`!ªð†*Ø Õ§îà7ظÆL`à ¤xqð¢r…ª x!X`0‚"Ñ“lźuþÔèM@`Ñ}5Ä8Pa§²áÎІ>À†iH£Í0 È`¨¢ P0~]ámÇ …Bžp…Pˆ; xlkˆà #xÃ%®[)„›¡˜Hž°…7XÁËç~C xð„"„v ÈÐÞ0Š C ¢È‚ a €;?xƒÀí+ #z0AÎpƒ(_"#6D¨`="UøÎ?% ~€ô ‡?G À!Þ?PA& B êû¥³¶è“§–k€ ;yhh‹‚ŒiDˆ‚ õÑ]v ¯”¥ß4º¸`oãDnŽòæ h™Ÿi0°p`£XlAóÕ÷Ž?z…¡@ H$À°åÁ PÀ!W÷¬8€!à€¨À ´5˜ùU(ÂhÁ àÀ!hÁLWÁ!TA x^§€ÀwÈq¦zêþ½YÁàÀð@¬ €À ´Äú! ‚€ ìÁ `ô©?òìrlÏV¨b ˆ­"W(èßÀ½µ"ºÛR¯\˜þº |ª…V¸LÙ¦'µ¯À xj¬ÏÁ HAPAöÁ¹þî #ìì¢O ¬À½=û8¤Gü7eÖ xn(gõuäø>_‘DÂBLÀÄÀ«˜€´̳¨ÀÎ6A üÁn!Bô"˜@!ðϯ™DTÁZ?¼¤Âڔ̗®Ä¥¦®À|¡#f„+í!ôÙ:ÇŸ"üäÐ…¬ÀÛd ø<£÷Á¤þ§ C8ý†é@(ÜØ®‚ YÔ†%€ã6 Aô½Äþ7!k¨€À¼AíÀ bÁb "â¬ÀCBøŒu&$Æ€À žd¬ñ”%¸¦€ô¬þ¼F„ Ì,2O¾"Íà´cLœÅÀ!€ ̼FÀgÈ ¿!ääé鷺YCòÖ­>øÁ¡®eJwú%l£ÒòÀýÑ C( úAP@ì§ÀþA j“‡‚´¥Õ>û§K(¬¨:4ÐôˆÂ ¼Á'ˆ AX(@¨dB )+(´ùáÆPÆMø @Ï7SVXQ’þBË“)©ôá㇟B…FèqèPˆ I™°EEŒ9A¦ìÁqi  >S¤Ty"EŠŠ•GþQ¨‰!dR–†2ÈÏH¡Üʪ ˆ?}Žéqr„QGõ‘ò$²TüLiBÀ D5 „ä–#zx¸Qrô ³T¹2icÇ!G–<™reË—1gÖ¼™sgÏŸA‡nxfd™yŒhƒâI(Ьx’"@ nP˜r&@•?{†Ø "Å•£Yö\!°âÊÙ´§ÌéÁÍœ…ª·ÙJ΢°²‡†ŠB²i8ƒ w%=†§øY …ì|B y“ýOþ›UhH! žØã >PØR˜ãȦ¸!ˆ9²pŠ Eù¡ŠpXaCØ#…!”àã‚`h¥ž¥!èáAÑh¬ÑÆqÌQÇyìÑQ4XA+•@á1d\tèQ£ï´ÇšåÉÈB9KÉ"RbJCPPbÆ›ä ) åËÈ–œ²K#¹4s%%šj¨J6jbŽ)|ÌSÏ=ùìÓÏ?ktÊ# @MTQÂÚXÔÑG!TR@QèAB Ud»I9íÔÓOA UÔQ/ãé  MU:mT‚*ôS*QJèÁ1h =¤ˆá°ÆÜàC†.±ÃV¤TþxUŠ•² É•~0Aª3;ƒ€3_Ìâ‡hÏ”ORÁ WÜq÷äTSUä¥jíÏöp‡³cÆ”¸Á„Anh¬#t(¢.¯(¢±’ÉÕ¡>X÷¨BjÓ£z؃Շæðƒ€*èD††XÉ Yä‘I¶ì‡9Ð-”l/“¢²è…˜•˜" ;N»$‚Š! ž~FÆ,bÀ–m½¤ ›qn‚èz5$”J ö(QÞø¡ˆ³è:‹¦ôèãC\:dp Z¤”ШC9£Ùo›è! )Tb-FÓc†‘ʇú~Åk<³û²{ZK+²˜b§…þi¥ˆ¢KÎ\óÍÉu#å#xØ ™Aªdp!ŠB‡CFh(‚9Ú‚ C® â>öàc‚>޲ª B…A\?d &XáˆæPážX‡BøÈÞC¼D¦©#p˜ÀF#H©çp €C(h"”מuÈ* M]Ð ¬0ä’Ö"8ÄV½ùvò<*Aöø+˜é}}¨À3>(hB € <Á}ðsH(‚øa[ˆçP˜B.J (C×6ãòœaq¹ ExÀ,‡²ã™!Tp» þàV€Ž‚hpô¢ ÃusþÂt€!B~H\úp¬•øaøPC&»9´m¡{Ì%†‚!ã ùˆú0zÐ#P2~àÄ€Ñbtˆ²ð‡@¬ëz¨ în ?bYH)r ìÁ+ôä'Ai#›@¬–QD@_MÙB ¶ðdð¡ Eq 1»†d=qÃR½3* &¸„5°‡ØD  A Àìð„+ Ù³ö´‡”ìá yAãù ñ‡¶˜ ‘1¾DÇü•àÃÃÇW^"o;à;v-a44Dp>¤Ài¨äJôb.Ù!B8hþ(!Q‰VF)*köÏͨ ©#¢"T¯'äQMhªÀƒ&xn40ȆT`·£(!"¢@N”Gˆ"a¨Pˆ”@vÐC×T´’9Á8LjÀ%üáYx ¶„”&ü­ Md ÞÀƒá v˜‚Ü‚"ðÀK$ Yª…®$G@ ¸M %ÚCÞ‚ø5¤x ®P…ŸM”±ulCTPAÁ’gfF-ôÐ} Áø`XABøCBq…'hA&8Âð„­Ä8ØÂl«‡ üABP¦0)á , þ’ê!à ´Fùƒp`?Dà4ÀÁC£‡åZA%£‚®ðƒX!o‚ H+ HAAж™ß~—Mˆt­ >“¬HiCJR‚:f zì2ŒRYÍ2Xædµ n „!3áWæ‚ ˆÁÅ4£4ëÏ—i&ÜáAaÃŽ)Á JÐâϘƎê¦F0⢠CÐB˜8… ? ÂJH9Ûeá3î˜ÉMFT&€%;yÇæ€RIe-o¹FPž¬dŒnx‚\WR€˜™ÍmÆ Qå€>èØ2.XI”LT€™IÄHþàfÙ ©š@ hEëU‡Ùf0à‰d8dQ¨ªQ€l#Æ*:À @(Ã4¬A„2¤Úݵ'H †Ô¢585 Ð P€œ(€*\ OpâÈÁ4ä°èÇ´!è¢B}•m.PŠÐC˜##°Â}Öß *`4ÃŒXE v¡HtÁÎØjq‹Uà7HaUœ`ÂØD„A`Ü‚»¸Å'`Áe@Öà…$Ø q´‘€D™¥­$¤ ÈrÆAŽàKœ‡˜¶#ŒTãKÛ ñ°Þ†<ÐþX  D؆&aˆm (s ZP^”¡!e`ƒ!Ôðt4À;¸Æ-€@†V À†6¡Œƒ<‹)S¢CžöÇ¢@…Á\9à `°Aâ06vކÀA«°@\°¨¢!D …5B‚IÈADŸÌ2^p !j6 p CŒÂ-0Ä8€ÀIHâ.ÀFnA†d§½) ‚Õ{‰"£…Ü;C„Q°ñh… ¡ Vt`¬ÀÆ ðŒU@BÒ¨( Aj¤‚ ÅèÆ6 €†iT@p` 5$À $ÑÔÀŒ€€5$Qþq$ ~Ú•eUÑYöýß2®à\V ¹@CHРb>À¡¢Œ€l@ >à:àî>€ Fá ¡Õ < ¢¯ <ÁÆ¡%á9Àó.Aº$AZàþÔŽ5à (@ÊTÂÿ€0…š‚"ÈlVcì&ãL˜02žÐÿúÀ˜”@²öÈ‚0 C¦ þ Pn»h„”P åKÊV† ÕP\B¡OÉ×”P 5%íT”€‚ ›ÊÐ Þà‡ú$Ò†p)"€‹2BA² ©.ŒwJ‡K4†‚ à¢nþb„  (÷z€B4£®‹Äè4àÑ‚šíñeQQ”€€€>®FP€†^ƒKŒdqØ$5n‡KkFzQW.!õG¿DŽðe¢èPäHGDNg«ñ$æÀüW"+nægš@ †@IØ$bøæE„ÇaVB phdÄHŒàB_äA¶¹±!à¿Å¦cqýà\t`!rQxÀÊh i¤ Ô«(`p®zàÓ¦!üàvDáü‡à~…®„` ¢K x$K@ ®à AÜ t€° )P@ ¤À ´àþ^Ò ¬@ `Šà rÅR(ÀȆ a^à¤(€¸`D¼â‘¶è Á-Þ€Æ þ€Fà4øŽ(`ãè1)¡ F€zë’ø† ž+ò¢'ÿà üà FÒ°„ */A ârŒà n@*ÌÇÖ,"-³Oþ«P˜)GDa n€¢dh@g4` !ÅF’KÄc® a @]Ž¢ @açxjñN€ìªþ ~à ܃æà8… ~š`ÁV F’6I ¨ ¦€ H$‚ÜFþÀ:p€ž…eb`š†@D ”à¶ ®ø†þ®sÚªpà8çà °e¨ ®àÜ€ n@ |‚ªÜ °‰î‚TÀÚô@:©!JÀ= á( T Â~ Ê‹Rô CÁp3.¡ ² C×å%/Áxà Å 4tæ/f¤¡ ‚àx€p~h5 ŒC®à.Þ€¡%‚9 aªB:A`b ¬ F`á n•¤ z@~[ª€^®@IÁZË–%Ö&" ²à&ÀJQÉœÀ©!ÔÉìà ôˆ{öÆ !b ´TÀ0F"²`ɨÀnÀ8´`Ix¶jƒþàºòƒh5ipÏ! ”bçOB!Á æ3.AöákòDË èVeGBaV šâ—žÀ°þàínC$‡±´š€ ˆJq8"àíêSC ApòR`Kc  4€Äõ«w Á 怰q~mÍ&À8njMí€[§ >LNŸ±Ž A(•OùÆ/¦àÄ5*ë(òHz m{¨ à.a@€b  ÊmLÀ_±0 ‚`FT`6.Ô1.¨ä>tO‚`U=ƒ¡ ,„@ Þ Vmu¢T ʨ` øFδœ"þáä®|PUkžŠ ø@Ràn`«€Þ€Ûà@X÷+|ô¨ ²õ " á "`p^Žq%ª€›&À 2U‚ ®‚𨠯¶l‹¬1¦à  låt€x a8¡l·Àö+F6o@Eµà5& Äú€ 6‰z¬ 'àÉ+ª` èB Nǵh€9Ìk¦Rà[Dü ÌÜ@v°gyä Š` &à`o.a Ú¢!¤sbÕª*‰æ`˜ôÇjÖ„ Ái×¥M•Ìä¤×ü\cÅ ‚@ÉaSo6Rb ÙAh—FÁjÚ@þŒD ú@õ=´´®".~@fDÁ´`+Ž"bŠa{@ L@î×^Ï ‡ºÔ 4Æ øïD$FP ~µT ” y`Iìµ ìÕ˜2x`~CG~·4šÀ@$BXKÝ nú KaÏ1ü@¶ÀDaŸÈ^/Aq&„j~$вÈJÃEåîB‹Åv±Â z@ÁaYš`ú@b@¦€úe%B *s%–W!T æÀ44µ ôàACh³ìd 1" ú@J5|#% š tålA'@=EhבF¶à-+ b˜Ol·!zþÀ&ñR†Ú”ZÁá Ž  ——{ôbh  Ì(Iš@!IaxK(` áþ oUH h€³ a61 Ž Ÿp×8Îà\ìyi,rO3GL@v`ÎW伇dÃe På ÙFl· 6 ´`0`D¼~ä8#àRj¤byß±—ä槺–åži@ šˆ72¢ãªíV¨A×Lof*‚€MþÀ¬à*µÄôàmK á š9OŠà näJ Ú^×G²Ù3Þ‡C±&ËH÷ÄvsvYhj0Î`úàö@d¨ÅBy%09 _Dyþò]¤¥ôç „£/¨9”m,> „ "U«)L€}¶C öc>*uÀVBÁ!xJU%u`RÉ ¶@ŠÀ4€MÚ``ÞZ Az Çt@¡! 4À¬;1 L.æ 4@Jl3†€P|u±y3”€M4ªð‘3ZG‚"8@§‘ð¢!rtNc`6rz%ª:,S#–·0-¨-MÀ\„j_ÛE4à X#¨ÅiüÀ† ¡AIªt*I.¶Eø`Rà¡#Ú1¼z%¶€ëö6ö€ZàÊK6,µ! ìŸ!ìƒ Þ€A@€Ÿ…à¸`þº !S)à Ž@ –“}ÚG4¡Ñ0GÜ‚M„Ä'L›Ýç4š  ¨M,È¿Ï@ I.¡¤å$BA îu²#CPåª4¦àyÁ P@ºw œÂ»!¶ÉáJ{%aŽÀ—×&@@@4ù@wi¼n\É.Öx€H1üfÜÄgë“FÕ—M bÙn`#´:»³ë«BlùV`;xjBaP›¦’d»…ù,¤ð¦ Ž` ¶8Î@zrEšÇ a 8Z4.PåX±FvØGsfµôÀ»qÀqç< ý]ñÈ7Ä•4.ÑŠþ  ºƒ£iŽsžà8“¨ Ï.OBAÍàIp¸fؾÕ!48D!T‡ZüÀC ¬æ~eò\KÛ Á µv]NÜŒ¤ îw ~ ÂEFÀA‚¸ AÂâ’¢й¥VàŸµ!4`§¡ÈÎÊÅÜ–Ìâ®ÉÙ`h’眣7ÚÎAvÿBGDá “M@Ö¤Ðô(€^^X Ž ¶à{¡ p€›5Àx„GFˆÝ»Iœƒ‰8Ý1Ú Êª E/^GLü¸T?žƒAOäÃÇ¡)š›%0©¶Ý¤Ó¦ŠÌ¦ÂÜ–·»Ü“äþJ` Àó¿<½)ñÝ[ç¤ùÀíGü€)“æÑÎ ]ß`ÅFnR $|U T ØéÚN¸G Ú + A€|“~d<ºãMû\ðSíóD4(W`YF>‚OcÚ—;ÊéÊT"VÀV–µBAI¤  O.alžÜi¾!aŽW 2<‚ž£}4hï\<ŒGv˜8SLÞà4x c¢^®Vpz|•†àín ¸ !DÛ¶R bs‡ª’R%iÀ Ùí¹pÀÕ}ßFLä4Pà.aäWâä+5H x¦\´•À°BV€ž’ý4,4 ¡Î;´&`þñ¢ñ Ý—594€8é¨òYrŒ3ØÎí°±Màºj£ÙA ©þC ¨4‚J€ATnŠÐÀŠ=+xhyR0ÂZ¬¢äÆŠ98ÚÑc(¤È‘$Kš<‰2¥Ê•,[º| Óå@R„Љ3§Î<{úì)Š ‘n"ðPq…䆔PxJá͈‘nžâСâ’È&Zpð‰ò’ +)þ¸i£G¡ Åhk(d!­ühJ€B !v.ÊRÏT#‚ü¡›³ ªÜýùE!+"/5A¹IÜM5)2AKgèpC×sçÎÈPxF1åˆT €Œ;·îþÝ>ý°…·ðáÄ‹?n¹'2­)Q0ÇÊ"€<Ž›,Qå¥'+ì„ìèOËsh¸rÛºúõìO6¡àˆ›öôëÛ¿ŸwŒçdÏ_œ(šH`9Å 4¤g`ƒ>áOgÀ g¨Šg‘ă))¡Â…†H!b„&žÓ¿ ‚b‹.¾XàAÈ7Yw‰|¤`ƒ†è€CJnRˆ!Ȩc’I*‘<¦d”RNÙ“ŒQpãpÈè!JHRTqÆS¢\ˆvx‡ÂM(ÑeH¢ðHM´‘Å|MœŒ(7†rFŸnô@e ëõ@oŠh¢ŠŽ¸þc8dÉ v¤p…f(X10A1B†¨0Á {X Ð@EYÐ0†ô!Ð ´áƪGР¥m, ,d9SÁ‹lÏI1V@ºÛVÜPbSÜ U¸ñz ‘‚!—Dh!E ƒ„ˆ¤À‡! }@+S¢\qÃÉþ S(+8YbN—„‚˜¸¡„2 Â85±ðs<µv e(•ÒF£\‘°pn”硸oøÒS( 1(—ü®! È ‚ *èÌò¦/ d tNÀÇ!CÍ ‚!cÌ´IY$1ñ/s?þ€x!¹1´,uÂ=ñ C oJß%8Ì¡uÓ.ê`¨4ÂÇÒÂ!ãÇ ElicÊ4Ä  ¡(!Ä ¢ øñÃ!:ô¡efŠ(ô g@Á(´ñFY¹MzI—ð}¨„L((\vðr„ ‹»Ÿ¨òþPHÂÛRë7}®` ‡Â\ëˆìµ¼7ÐÀC#t{H"J«‹ÔºV7q bÝËëºg&¡ˆR—þ  Ðè콞Eü„ñ†\±ÇUØ!…7˜Š[ØC JªKD80` ž°‡AˆÀ Á‡(®Zû>(þ¼oJHIÞ"@ƒ'¨ Sž0‡'$(ÂB¸*ÜDcAxÂ~Eá 4`ÊŽàà )Ѐ!^åÃ6(O(bI²P/· ƒøÁ´€ !hp Ì' c´B®+à@ x‚ab€ öÐk(AR@¡0f…Xßq„²4ÏtJØIP€¸!4X$ ›¦‡ßDÀ‘#‘¬ l![@)i6V|BÐ(L€FòO —xÃ|¨âÏ@VGÌü€‚"(Â4¸(îg‚C˜ ÆÉQBq=A—‚·þ7h  zzP9ÄaVÈcÞ0=PAm8‚Έ*èÑÜJ VÐÌKè ¤i iœ3´i8—xàܨÏKò‡ h3‰å¦Ð„h E ]pž h!ȳ¡HzKdÌÁ+‰¨Ð%Ì¢—ÃAöpC aGÀ΂Cȳ$ZÄ(/ h ˜À ¶p ìe£š€wžP…ð!vÂ3‡£ö18ëS"šP]BþdŒXô¯ä„?xßJËÙNu—*„GE žÁA´")ðoØCZ'5,šÀ3Èk§.±Eþ e˜~ÈÂ1ˆÀ4˜CÃBò*lžyŠnÀQŒ p€ÆY†Iaé¬0Ñ)aèb xÐ õ$—˜ÃךŸü¦¬) rŸ ,?0FVmÌBöU#ìA8Â1=@FŠðœ ¨‰o ”ÐðåþÉ g¸ÄÁ >ˆ1L3Èø i:Q¨  ®aÃ>'…ß!£ *@Þ%”pNŠ Dn¸L „¼&Äàâû­VHƒºÆ2NæÁY›dâNÀª(ºÀJ?ùQõÆ9n´‹¤pà Ø®H´0':š%R @>#Ší½¶K¢è’@CòÚQà†"9ušÄ<55å HhšSÒ¨¼›î5• ±\ýÇ×j ðNt Z8¨‚!àlì!Ü:ÂåäÒÊ-«{‚XªÀ,ða+¨ü°j±9¨~¤%±ß £6ÀÇŸþê‰)bQ‘Ô!øIXà’è¢þE„ „!ha ƒ§d k Enz@[æ£)‚üC`Üs˜ƒ¶ PJò@ }ÄÜÐâ\ƒ88C¬ ;*aÄ=Dš@€*ÄÖ@bùšá tõà}e¥LOÖà…_ˆ$ –ÀƒDY´„qÀÂIè`ŠŸ$=9 …Fœ‚ë(ÁD#²Ž?Äé&op¶HL±¬Àz˜ hð«7°z@(&ð‡ø!}°Ë&8¢à `P R(}òïFêÊzƒz¦„¥0…)ò„R¢¥ …&z‘„$„„bI)Ò‹‘˜¢¢' "f(‚þ¥ CêCBŒ¤„´GDLˆÎ»¾\/ {æ¢÷I@xHBZÞ÷uzQ‡,!ôÚï}è€uBü3(}HfŸýíÿÞÉW8J.!ŠÜ :8‚ÎðgLvð€|„â/V°mð&ÀP*àC@xBpssæÑ)¥sP[”G‚ðv pþt`±ºà>°/ ˜€†ð ¶`šàðK`¦Ðztð ¸à!NàŽÐz#±7ˆ†P /и  Kà š ` %A §„à >p Hw ¦fð ¯°þf¶°i`½€ ¯ i` ²ðf ºà ð ðŽÀ ²ð‚¹À ^ ¯°q  † ˆ¹àSˆ ¾ð w`¶€tà 𠈚@ˆ¸ zP  ±·(PE `@3ä !`%0-4=ts J‚)vp&ð7€ =0‰çUÐmU%S‚Íèk—àaôÆ´ð>ÀX€ À †°¨ Hà‚0ðƒKH2Ј†ð‹´ ½@´Žð ô÷0@ šñè3 z$‘‹°´°2€q@ 0”ð ð½€v(º@º þƒt஀о`‚0 ‚ §—¶ð,KЉ®ðŽè¸3` –ðÄ@‰Uø §7 ÁÀš ¦à°qu”à ±|’¶38"Ñ”Ä% šçŒSt85HBЯ€ˆð ^ š@ àîˆ f0ާ y°†‹o'A ˜ð!!ƒ†à>H pÁ0 µg®°…®„ ^pÄÀy¸}†/ð†>Àqð _ð ½€²° ´` O…HP špPP ‹@ §~a€¿y€IP ¶€ ƒ Ð ´€hI•½þé› P(qÇ0€k€¯°w°®  ˆ  ‰–€º B‰p§À È÷2P º°ïf` tðN@/ †` š@ ,àp#qš§P ï©’Ã` 0Ä@ 2à–¥€ °3“§P>€ X@™ið¹°ÉkP^p t€Ž_g °•0 Ã@ ‹°0ð ”h ± ¶ ‹p º¡#•ð º÷›7УŠŠÀ‚*ñ ƒèP°¸€ Žà¹ ¸àf°Kx ˜ HÐ^à Á@ rh$±0`¤®¢€Ÿþâø¶°‘ö´›f …ð) •°pŠ˜Tç†> ²ð0°² XP f\Ú–€ nø¥Hø”ˆ3°¤Žð¸Ä  ‘ˆ¹™¸Ð¥Šê†[_p뙣©ªª¹aUPoÃw§k@vž7¼çÉ'£0á{(«WduÐÁš«„PñY¼‡v*±«p™˪¬'a +),«j­8ÊÛ“3€™x­!1K¬;! ƒ`S€+1 gÐnð9SpSà2?0¶!.ôú+1 <ÐRTpõ­ 0?'°Âq } QY@‘KY43ãþsà+ \Zà87[40VU0$Ä/~@°k²—T ‚@ "A ‚ áºàƒ,:®(A DŠˆ§ð \g ‚À¦,A«Ñj RÐY1àT Èp)PLzÀ€m€‚õÚÂ4ZÐ"TJytY*Ð}w *0i@t²g›P¥  y kð ¸ " ·Iðf`Oøoi„€lN€yùF xÀ·) +kq` u°^`²/U°X†0†ðp`VÀJà{ "R°@Ðîã/ 4‡prc$&pP0hk»ÇB•þ@ kP ˆÀ»©Y ¦w ±Ÿ?( hI _°¨Jkð_«!‘!0 ,€ ©i ¨G±ð W ¼Á`”¥ð3P áI Îûip³3°® p´ ʽÞ[p•ð¨Ú׎tðàu`Ã@ 3°¾uPºK ”zi G pHPn`6¢àt…Ð-Yð%Ð[°öº[ð{p¡`6?°pÖ2L¤n·KÃÇ“ÌÐÌà ÄЈH°šà†!†Àzhé·>pŽtà>àð¥#ÁÌ€ _¾lè†P/ ƒ¶P Pà Ìà܈þ¸€‹@ ÃðŽ®½fxšÐëI™0T§ÅD0 …¸pwÀ ð Q¨ P ˆÖ` ÃÀ xÀ /€ià؈ ç ³`[ÒT°4º–Ç`PKdOdGBð+ñ Eð²ø~ ŸUó¬(¯ðIà ^ 8 ÞÈ„€·gÙ¦½°–K0 +›‚ðŽK€!Àˆp¸@´@g— Çš 𥦀¿P À P’xÀ¼þ¦…Ùwp•€w²` K`² y€~f0ɈP 0à›¹t0 ð¡¥àb †–à ¶`…/pP°þ˜Æ!T`;#1>•QÑ´ŒÑX@ ¿ ¢ÏÙË9øt)Ì!Ñ ç³0'QŠ!0 Ï'¯à#A Æt€P Óä« Ž€ ŒkÓZ8±@Ç!®Ð¦K€/°´`Ï3Š”à!`šx€ H°¥ ¢0qðw€ ˜à +MÑK?°ÍÖ9–†Pð¾K°°Ì@šÀP@¡tÀ>à ÌW Np½Ç‹€ ,ðÃ@y€¦ ´‡ X0 ø¶Hp¬»Ç²@ ߉¹0 •€Õ‚p³´@ š}Ù݇_ Àð Çz,¹Ó´€>þð0 ¯@b0 p ³àÅ‹ òÜšÄàêI Po¾€ƒmíÜhû šðŽ  u ’b€À 0ð¾¹Ýê `½Ž°Ñ>øHðH0Ä#‘É ŠÍ–fà _H ˜Ýê 0 ¿b°ËH€ÕãJ–`ß–oq@ÞXàqà i ´à0ð ŠŽ*½à iPâM H–°Ñ˜ðb°Ž@bàÚ˜°Ò‚ ]MJ}RS0>'(ps+Õ?î=YðMðã=`—àCDÃh²L`ûܫ𲰇d‡ãŠ˺´@Ck„þ]nÓ7»„à f° °•s4Z9 O?ph0DAC# yƒb!ˆ'È.ΤYÓæMœ9uîäÙÓçO A…%Z4hf½f–†çÔÌ\0zÎðÄ•Ct2¬ÉIÈW¡•2 ˜Ñ³Î¯R†êàr”$³XFåÎ5ԤȜþJ´833…dx IôäP!C#É4¤¢ÇcQ:4ÑA¡c›BM  £¡ÜР¤îœ7èq±I(d4R(Ñð&ˆƒ mD¡È`J9È(¬hR¨J(C¢Ž 9³ÂŠ¡*TñSüF!Q†”¤p#pÅ•K"Ó£™ >{@4᱂ÀEQ{ÄÀHþ r’ Jx£‰žb ºTpAtðÁœ’øe‰`~©c‰ hÉ CM,É :²jä)Dz‘A©‹ê¦—^(©é‹EÑE S‚yÁ— ê£ 3H"1døÂXzâA!Dó ĦXÈþºˆ…_z„Z `q:ÄÐDŒ qe‘aX…©^òHÃ`r # 1%É*ƒ5! ê7(°bŠ žÐC ÷¸Â?.)âVÐáa äfºDˆÚÀaޱâ Tð£³Ïˆ€7 ¥„*æP¡ !p‚‡,"èa+\jÂŽ#@F?ø˜@&Èâ†Î@ö¢P±"†=´0$=ø˜£/èpÀA”-"…Ä L âŠ8CŠôÐáˆP”˜#¥j’-2+A®8‚‚6n à‰ÚÅ«R=Vxa†>ÊfñÂK41Äf ÑÄ LþîxÊ” !¤26$‰`X‚˜8j¢Ä–✠fÀ¤’0ð`baA†œ0ä |xeÂðâf|y²&¤4„˜Szaf˜4¼ÁKb!„G°H YÌØÀ‡J^É ‹‰aÆ<4‘~ñâCt±Å‡{º¤‡P¤Ð@>¦PÁ -´Øø¢Ó) ?› -Šˆa‹"ûC-LècˆTÈb7\º¨"8/äŒ!8ÏKŠ?„(´äF(B %L"‚ ÒŠÛCÑ¢µ‹zˆ@_ )Bˆ+¤ éb¨¢Ëý°BˆAÎè6‹"> ±Ã þ°§©‡-†½¬Á-6¡Špƒ‡¾û÷ÿ&èH@Ä)¼ ‹AÁbš °²§\$3„ f‘Jä‰&,0]à"3yV*aЬ,@ht@@.XH K˜x!”¤‹<ø"¹H3Ì †¸TÂyÂBØâ¦ˆ‹0D@5µ1 2ÀVQ‰²p'—°œå,åEƒ€Q'b, T‡.Òd¼È%ÎÆ› ab\cŘÆË±Ñ&zÔbýøÇ? ˆÁ B Pcb0„+^aÎÄj ¸r“5Ä‚qA,f€°\äþŽ  Ð2n€…¥Xƒ&ñŠ$Ü$jeIBU‚ÁŒ\$! ÄðÂ+Q‰@á"˜Ø€ B ‹_Ü!‡L  ŒWÒ¿øÅ0 ˆ5¤ÛäæLñÆn†Sœã$çM^ш_ø€X„% V M¸"/@KS°pÂ4ãi˜A)¼ðˆ\do4ùÅ+Xà[˜" ²xE/†‹F<"´0SØR‰4 Q‚¼€…^IJ&±ø±Jh qXÄ) ðŠ Ðºx&dü" ¯…%f‘G,bN€1‚ñˆ%<¹XB(´rFUªS¥jU­*Ø 2þ¨ƒ)NÁ€%œ¢y°DéP‰SÈ jºHë)\š·S`G5Yƒ°À\ ˜ˆÃ~‘V'©­bÆ)Ö¦â!¸xÅÓf’·Ê ´&~!1”Br½d0lº†4ÑaÐ…ˆ†S|!¹€Âñ…$ô Ä$aÀ7qúás¸ ”ð„lS# .¶f¢(*!b€Ð6WÂU­{]ìÊå“¶¨ÃL(Z;ýßµ -Èkó…ŽÀÅ)Ú{^œÀ7½3 ïMàk“ñ^Ä®&7CaÆCh ƒh‚(„ ¾4⢈€ ÐhéuqßbþÌLLð[–»W$ aš £ m‚´.Aî"MØ‚ìb8.ä#¾IxðãØÆÙåqD‡/l ¾Q-E0òÇö„÷ `ñ†\8Ø‚ !„¢ ËDã,þ¢ÀŒ{‘>”}fÄöá†?¢uC@¬ð‡)œa%`œ"7Âñ@þƒ¤-ðáÁ»ˆ‚Àè,¤6[˜ÀŠ ‚} A"z€Þ•õ@!üávx‚"40›ÄÀ ]¾Úà¸?@ÀŠ€B±‰¢ eF˜}ýk`»u¦xà=@D€w?èþ ZÓ=¡ : Á1\[‡@œ(BÁpÇAàÚЄü`€pà R Á(AÑ7Ø&Uâñó%t°R§à^ý@pô 1xæžØ¸Z òu=8j":pÀþP„BL ÐC„ ˆBXà÷V°E …hC¼õ@…ƒW¡Í)P (€ ÀàvѾ“l\ 3Q,Ð ™Tc>!‚3FA“k\ qÁ3Œˆ„á°ÃE$Á ÛGàyàäM„ ÈSÂq )´¡ À‹¥B 7 ¼¨þ}3èÝ@4€R@€€YTÀ !‘3à`S@Æ%ú¼â<Ç—@ ”À—'POдh`\äÒ8(ÂLš`鋘 1hÂL ˆ\{󮔃ˆ":0D úpð+Ö+B§ T¡ ‘+Ä!ÀÇ£‡?»D¸ù‰`~`#8¿!À  x¢ü£0BMÚooLBphã¤QC è‚[€ƒû#¿DÀòSÀû»‰À.ˆþ#‚n€h¿TÀ¤‰$H™c“»ò‘;º›€êÒðƒ„À‹¨ –S‚ŽPŽh‚ð0þ·ðƒ'0+°EÈ‚)‘˜ƒ)@è>SH¸?;(¸ÓS‚ ‚Õ+>‰7 ˆ»P˜æc–Î@³è0"˜o‚#ÈCX¹c;ƒK„Ú ܼ7àˆÐ? €=8)H%H- :¡žz?F4ŸBð+Š0k `hèCèa iÈ. ƒqp¿[(C‡ZHM¼ˆO†Z¨U° g‚H»l0‚Z˜k‡ ¨ ‚X…Z°aèn .¨…i 8H†ZÈ NxÅ2¸‰j†ZH†àÅZ¸^UÈþ€HÆL\8P`ÈÀjxÅ0HÆ.¨CØ.€:@º5 ¹ds1wI61+EÀ‰pƒ=( Ž0¼ƒ¬ =À?°@‚>X?‚>¸;؃˜œ>‚±K°‚Àõ0X>>€0Žˆ ™@!7Р𦨎XÃÿÐ@8ì9Ø‚à*  À™hƒ#x7P„P›€?„~éC+ЀA8„?Ѐ?8ƒ¸‚3kPP"؃ŽkDFP¼ˆ £ lhi°eˆcØC¨i0i …þ†ú“6?"ð`HLyl€dàk`„š¸`¨†f00à……(O …Ø…[Ø`ƒ`„ piø€Ð¨ðFè€p€k¸ k8UØ„°Õ¬^؆ØìHh€ð„(è„Æì€O8€Z0„‚€…´ãe°nº„68ƒ(,è7Èúœ‚P°ƒ,(àA;à謼)È‚˜O¾4ãÉO;8ƒP‚,@) €BЃ3 Ã™øâŠë-0&hƒøŒ!ÄOQÈÏ3Zž»üÌ‚@†6xÏ,°L{þϾ8ƒ>=@ÉAy¸š;°ZiP- úTW“‚T™âzQˆÄ2jƒ-˜+}_3#/2#5:#7òR.m£05ˆ1ÕÒË©£‹0Ó4EÓ8|#5mÓ.Ó4-+µÒ#ØÁÝH4Ø…K¨€„ÄT…PLõÜ…V08(Å™à€A5Iào¸G¨‰L¸…h4…f€ChFh`8L ÀC¸4 ‚1P€†]8ÍjÐ60n6°€gÐÇš`Ø…b8»ðü^`ToÀ"°€U …y,†¸€è€h Øg0kH€cX…Q¼„1Ø»þ§¸»o¥ *¨Ó: €™Ø‚-@CC`WwÝ‚À)×ÕÙ‚AÀÍÉ׋؜4Ÿö™ ;ˆˆ‹@ú‘C0X‚­ Å¡»7ˆ¼‹à9õ‘Xнˆ!€'À–ŒÝØ‹(„‚JY‘½ˆˆÊ™8Ù‚0Ù胈}Øä70BÕ‚°ƒš Üé‰e ž ÆØ‚@@×:Åÿœ 4H"°^T8PƒÄ\?C@ƒH0È”¿‹àËtH»›ð€V(€]àpUð?FX¥5‚,Õ¸èüðn‡(€0à„³Óþ£‰€`ði„(x†þK ƒhàmà† 4V 0†‹`„b8[9 ¸.ØPè€UІxÄhq §ûÖ E Zt]6:×¼+]pœ5„ˆÄÝF€C`´ð]FÃËÀ «‚™À0¸%¨Àæu^èˆC’˜ˆê½Þ{€î +íÞ-ð]õ ßC_ØlÁ0ô½ˆ !˜‰x^¿€••‚  _½ß÷0„hÝì_îí] ±ˆà‹À×%Ú=Dü‰ °€Z€€ ð.`^àh6¨…¨°†`5à†@ƒIø€mƒV …dÈU¨‰˜þ:à‚ˆR@ƒb@ƒÐ4€i i€[˜qˆV (€Pƒ¸… ˆkø^@bR(;Àm€eàÕaL€ €€m¸V`ø€Mx:Ch [`n FÈH„@?­Önh2§&h‚¾ô#7҉λ‰oâ‰K Û±¢S‚Ð*8W×݃6º#¼K8‚In£C˜¾äIGÛä7P=H7P=¨•øƒ™„PeC+HÄxe+€YV{A%xØÔ³‹èRŸ!e8æ7(æEåÅVžeC¸Yž‰+hÙˆE1—3šþMÜý›UƒKŸ…® Z×u€„èc¡¸&l‡è„lP 0HpUÀp0„q˜†n¨ ¸CP{ÎØUP9I`‚QðHøgU„ „ ¨€jqð€PƒIµ HÛ‹†g„qpi&‹èm¸nèc€qp—.ƒƒîIàUCÀ†ZàÌn …ÅKmR5àƒµ= ›ààƒH,轂7®6:7(‚tÅÒÓ-:¼¬S@˜ƒAPŸ¹èöÖ¹^q8¯õ@þ7Øc oâãËÙã‹Däc ±KØcˆC†ÎcŒÉv A£‰x‚6€ÂFËŽCbA7àƒ¸B« Ý(XjIØ)„ÃÈÞ±=v (3œ±Ì.Ø&ÐÑ.dÞæ¢h`)ä68H¿¶à=‚Ø‚6`g£¸„ÅæV"€êmbK0 ¡E³ ‚'žxôv¨ >¨‰&À7‚Ðdˆ€' ýÐùæƒé“‚Q潈 ¸ˆher›±’\‰…H h‚'˜[ÄâH傘HÈŽ|{‚ÐæŽ¼Bàƒ#à»À£þ É€fU.„ñ¦€Õøƒþ°%èÛÐQØwmdˆ Ín`Ë‚-x•þ¡0ØRdXrK¡nœ@ø‰1%ŠB&î£c±=(„ ElÝEÒ@µ))8´Ës0Ç€ y²…“ìÍÐxˆ¼Q oà Pï …‡]…ô6ë)8?-8Â'p¾*ˆ€ó@ …ˆ»qCp@†ün‚@øøƒø¨‡ã&¨3ëå¸Pðƒø#0ìÛƒ ×@ЃP:‚@d"ö«RŽœ‰,À*–Æž¿ùÉ7ØßˆoT3 7Hö¹þÖƒ@¸¬´7ƒèƒ @µF ”à`Œ=LÈ ˜ÊhžͰƒÎØ €@˜€¨ž¼;„ o7 *ÐÐ ä°ôÚ[ˆ èÞ'À,ü9H½,œ Ðô|£ ‚KбԀo ¾~U÷x%˜h†@Aøv@胴 ;0I@>@Œ[›€v ß&"hlˆì„±Ú>„°ì8ähøTwæ8dìšpƒCðƒ’¼=þ¦CbAÈ.dƘm`Ïl¦¿ÐÑn#Å{¦7Åv (/'ê¡€ p0EK!Pþ7„0!²EP‚Î{Pø¯v ”ÒÛ‹U!‚= 7ˆP‚-HöxÑv%P>À"x‚ß@%xúðè#°ƒo ‰æ³ì{Mn£>;á¨7žÔ‚ dHÕë¼Æo|óq°E‚›‚å(Ë è ÈA8Ðu¡°,zðï›6x+¨¼à,Å,=„7@ïàbøº~¹6„,@o8Á™˜@Ðm p€˜ƒC…•VÞ<‘¢'H ?†ú̹BãM(o‚ hh£!4"\ŒaÄ“'Ab„ŠäÉ'*á!¤äC—þ(Dà¨s'Ïž> Êó’ n„ìq`ÅOŠ@)Ü@¡„} ¹q0‡†ÈR±³'*snÁ'€ŽB84 9’bå g6ž!i¥Ê[‚ô# …#U®œ bE=+@ô˜P¥ÉFzù£“O¶ð‘;áŠ=4(€¸«CÑ—vj4 A+V¤„–{ì9ô†í-È„"O®|9óæÎŸC.}úr)&˜ Q…À!CCººa'C¡æ±ÉCÑY  ð£ag(!hôhb"Ÿ)JDpDBÄÐÄUÌw†g} sL¯q„Œþd%¬ÄH{dqÄìÁÃ+ôÀ&PB¢à@27åDŒÎ!ƒ‚(¢œ! 2JL‘£(† #Å<¼v‰=t¥Ó%ÿ¡# m¨ð_(S"ƒLM\"JHÖ¨Ó=ø—e¡d‰28Þˆ‚!_ò`£Ž7ê„´¡š¢(Œ?(q ¡¨ÐC(¡à†”ÑwÆŽ¢4ñ%ž7Ži# (Yàq3b𩦛rÚ©§>= ZòÝ%%€Wˆ!B¤`z Ò!~Pñ£™;-I@ ˆÂà CpDy/Ò[ÅEð Å~bO¼Á#é0Ò)à`ˆ ”þ€È`Ç ‡PE]uù©»ï‹ÜYP¯½÷⛯¾û„M\qƒ Šð°Å´²ÅWÝ*^‘…ñšÉšy)G&øq TÄàk!5^rZ½J Á%¡¤ˆ2<€@C!jîˆ(¬„­!¥¾‘2Ж¨,SÌ„1üðÚ ñ›´ÒK3Ý´ÓOCí\è⇠G€P¨‚pC =”PØa?ìE…&  ÄO ™NÐ^Áí%(¼1ÁZè0gGìA\1EèÁ zLÈØÃ7Lá nìÄE hº&)D 2u¦þÞºë¯Ã;ÓÖ‘—ü€£J)Ê%gúè&Ž”=9J;i‡ —†ÒÃgÞè;>ŠJõ¡ä~4¸èÕoØá»›ú®„ R Ðh(*‘%˜í²E·²oTý÷㟿þûÿÔÆ $ v((BËn…ô 7Ñ%4Ѓס`Hi˜ª×(ŽüçYR”U¬301@Ò‘Úg‡ò/…*\! [È‘FÕ˅͉pð£Kèà JHiö¦„¸¥à =¨[ Ô…‚ìs°ƒEhp”`Ú Ä´ÐDÉ0‹ZÜb¾¤À'.‚1(¡ÐÁàAÿÝå ÑÒÀþ 0)Âm8Äe®€‚+L ZPÏÀʽá0Á%ì°)„1‘Š\$ qƒî1R‘?HA jbÁ½f-M°Ãp€ÌaCP€µ‘<å= @«T€E Š˜‚yF0-Ä0’ºÜ%#GpòR‹M [¡‚üȘÃ4P…AÂmpCÚpËKÀ=XÁt|GŠ ‘…p ‘Á\';·h…¶“‹RÐ@ ¬0Žð*j‚œ2>PÀnª2ÄV ;œA‰7(„ñ„>¬mãŠ'E+Ê??¬€À´è {°.B!%?/<wþÒ(˜‚Q])Kõç Ü¥¥+äëŠe… ¨S¦:Ý© ÿOž5¨Bj§px5©J]*Sy‚ €ÒbM­¨žy‰)´¥N—È‚FPÓøá8%ЂLÉôA mHk2©Ãh^ ã¦j×è\bKH½+Ôª´‘z âž,a9R¯\¡H(5„žpU5á   þ´-Ì!j2ÖîòP¾yusáÎzåW…刂PÔv(<¹ÕF¤0‡dÖkÙ",l•ÄD€2¿ã+q‹k/¢HÁ ‚Œàà % Ð1y` T!B(ðuèÚ P!VXnÐ)„Pü¡Û4ÀA „ ^-`…OPAj“ÌR0ÜDØH >Њ]p„¤€CsTQŒ‚:h …•7â 6œ`Þ†ðDj€©K@`Óˆš @ð†$YÁ¡#”º9¢«6(a ô 8Eˆ¼Á „UÁTÁüœÂÔ(]LÀ ôP€i=Á üÁ’|ZOX ‚L€:fÂÄ@!LÀÁPÆÎ\NœHнAš€!€DÀØAÆA\‚- ŽydB6A àÀ¼ì•“7@'<@3+\@DA tȤç9Ÿ*À8¸@$ÃOV€ ìÄLB“©‚$Ìaë•y0$€!<þH‚ŒƒHCH‚*ô,LC$´B7#å.¬BÈ*p 04XC8LC8„¥*A$¨B$ŒÂ%A+t€äGÔ04À5ÀNb¸lA¨‰À äŽèAØŠ¨ÀQ!-¡ÕLA¬]mi¦ØÁwi¦ÌMÁ °Ž(h&eê¡­$ ØœAoÆÄÑLôšl\ÂT˜–œÁ×ô„m®f ð€p²¦¨€ `ç©ÂL…d‰˜@ ÔÀØÁfùÁ¸Bhæ]ðfw~g|¢§šôÁ„¡&KR”K~6,"¬Â%\€5þ\a-¸@@\B*€áF@bC+4hO¨A18œbÖ¡!@œÀ1då7œ@"¬)H#î6X@x/¨!ìÂ.(¢!xÀ$pC 4æFlƒ6ÜÂŒZƒ/H¸@5°BÜÂ…N™ð‚è§r|NŒ¬ß!$‰‚ðÁ§ÂEé—Žƒ¨ApÁ(\@8",¢Áx+D‚pƒNåt€,4€$|Â0éF´A7lƒ*ÀÁ6$€ìp$D‚6ÈLC6$Àˆ€Ø@-Ü‚ìÄ6\6Ô@1À-\€HìpÂL æ)þ¿ƒDB80$¨0tCÁD‚x€8&®,~©P`O’4É~5ŠyÊb «ºä-DÁ*ˆƒ(0ä4é1DA$´@ |áÔÂ6A)ž@À#°+s¸@W¬BÑrÄ´Aʾк@”û¾N@+ˆ-ÔLÊOä¬P  MPÄD#P\‚  ÷£þ÷ûDwÀñ§ŒXC5°ì¾ŒÃóËUÝ…õ JÇýUš˜Ç-þljJµ'G˜ËPÀqÄ¥Tž\2tÐPŒcT e™(%@vð’QM ¡ÐÐ%QÏôyeJ•+Y¶tùfL™3iÖ´ygN;yöôùhÐ8(œqƒB€WŽ¡Q(T¤)ÚPpˆ†C%æ<¹ÑCOŠBÛì±hÄC8pyhˆ‡Žn0 ahÊ sJŒXA%C‚¹ƒÏE4Š’äI??R\‘sfÍ›9wöüyf¶g"zèò¬ÂQ©`*(`lÛKqŒ$ìämèΡ¶ìÑòpN )Exðà‡(dC”ø*Æž??B)™þóGÔ“ (~P 1¥I 9‹EµÈÎ¥!7®œA8%ÀÃÄ*¨¥a‚Š6†LHqã ¼’â „˜#®=xåŠú0H·%œÂ -¼IŽM8@ƒo€ðä "DÈá%Hé‚ V Á ™ØT†‘Ôr"bŒHr3D‚.܉2á ê£ ‚x0ä'Êî†9h"”¶8HŠ &¸)P0!™à )ACæäŠPpØ£/¡aˆƒbHŠ*LÒ"Ž.¹b)Á+>‚(¨ b¿æ½]”ÑF]©2>ð¤‹n X…ˆUV¹$`È`dCàPFGqþ€1b„ºaX 9I•bÔ¨Á™q H`—V……FȨáX€!mX¦Æqà(Xºã¤8huC hCªa£™ª‘–dH€ÅqZè"›GS E‹Š@F‡² ¢C„ØãŒ6œ³c ”hbŠ¥Š'bøÁ )pøC樂*¦ˆ€€6¬¸A dô Aˆ‰²x‚#C†ð£‡"¸$â¤PA‘BLp@«?É·‰3§ðïŒ+ðã"u}þè ‚ƒ‚k¤1DiC¤!Åšº0 6@¼D„T–6„›ºhFNª¡.V©ÁVi"©ÀUnI€ŒþcHà¦RÄfB€Vº(†¢™Fkˆ)‘ ¢ A‚ ñ Æ0¤ƒVš©@H¸€† ¦!â ¡øpã* »Ì„Cªˆ`ŠCnHÁB.ÙÂõ.)„9xƒ€ÞZË ;V°c‚wi8„.CD)„&hàó °Ú# CÚ8$O)öEŒÌÂõ?icŽR`“ý@_ŸýöÝ?è‚]\¨g–%§uÜ¥Cä¸EGù@þ !‰bÔÀ5hJP‹b(Ü …$rÅÙþkEªä ptÐÉhÅ7HQ àðß« ‘ <à ]BˆN@ þ´ þë´Þ§„!!¤:i‚( t¤ß]‚‰ºÉÞÐ0„4N„ *Q Šø>/~Œ;BC*\` ^HbrœÓ6‰HøÏjáÀÖ$ ¨ª0Ä&A‚1¢ <Hà° ±uP¬7¤Á†ð!ÙHÀNBÇÅD `Âqˆ TaœÐ~(JSž•B»/º`x€ hàZ (¡h,À gdB »˜Ä4H†[ÁÂHÊ ŒÔ‚ Ø€Cn Ô p!>ñ^:£¨€ 4 _;É%RÑF$þã[…ºäl&¸í®‰^tšØ F8Á<°Šg¡»0®"±‹nˆ*Žr¸+¤~ì 0aiŠQ€qlÃ'ÐF+rð `ûˆD8ª±u v «¸À 䉰‚‘ÈH@4œÀܨ…6™l€ýœ +¸p`ÀÀ¸@$`x‰ZÁgY Bá%?XÄ?X”ðç>¼¬½‚u0=Â#8„°ôƒ*¼a G((ø …à@ÈÀ œ¨°94· ê3þñ Âr%ôÔ)Â&vQè¡ P­ÑÉ_~˜¸ ¹dŘó7M¢@A3¤N´Ž!ïo!Êà5¤ $Àà€H@$ „aÆl¤aN ä€ €  a  ¦A¶aØ,`sN Ø`V¡ä   Fa˜@Ä!Za> pX0.ÀïXAˆ`€hšC h Þ€² p ž€u:,4 9Ôç "€h@ haž€ðB·”€ ƒ”àžà ’ç 4†_®BT ã ” Þ`ôF €äJú ÚÊüúÐQþ vá> “–F–&p ¡¢€jâH€¶fŠ!T”efPšaþ¨Í !ðDÅ ä ID ƒÆà€@ €Û@‚ ¨xA ¢já, ¾Á^¥H¡Ö rüí‹ZM  k´þ$ !A „IœÈ{æ$¤A^Â@@ ¨ñ»Ñ jA’á$ j òGŒ¸NTè¯8€€8AT.®D€‚¦ ²¡,  ÌöŽ6ˆj`© € àŸ@B  ´aCz±.Ár€H q¤Aˆ`n ¶ ZÀÀþ:a¿H® ^@Ãa¶à  ðoòÑ Z!Ô`“HA°T!x¡ÀT!àL”aŒ@\à¤a¢€D@b `¢  jv²  H¡„ )7È qº  ÀªA¢ >ç$j¡š `„íš .%X¡¤!À€Há ¡li.`. '#S2's%ˆ Ø€ºáˆ` alj€À¶àÀN“ĶN37°!`r$ä D@~kTÁW“GN3ñjÀÆÁl` º T! t0Z AÆBÀ@þäÀH@8…ªDà¶i Faj`p žÚ@èx¢ Jà-B¡ÆÊÜ` ¸!"ޏH‚¸.Š‹>BÆäz aP@JãwRBü ‹T ÒŠ2#TQºÁî t.a~‘ 3º`©‚¦‹. Çï&üâ ­ôb´þ 8ª€•ǤD´‚à&` ! AJL¢ùàÄ ‚.†P@nÀFà ² vN¢­ø@N"À$ÔJ#´ï†.ÀDdž L@B/ü`?Î`ú  ®Ïöú`"a † –£<‚Êyú÷‚ LVþ€yŽ ?é,‰.BTÀút´D¡@Pb Šàžxæöš b@Á á æ`îBˆz!Ü ¤@ô` È4ÍÞ ìÀØÊ†@¼ô x ÐT ®À ¯TW1#@!L³ÏxË%vL%j@Xq"·5Œá(F žÀ€ &ÊBm Và l .Aö` @`¤€RÀG!Êþ  Î ö  ¤"@uÊ%DA]“ç "@8‚+Á&A¢ @ 10‚hX äF á Ü Þ@ICâ ¬5ö T@dþ© ÒUat<ìš :" 2Î`n HtWsV'˜Àfñ TxaC¢xá%ʈ Z!€œõ ä`*`'j R): Ëš4ž€0†Þ``ˆŽ`R€.!ŠÀÄ‚`Fì"tàAc I¡Bá@Ž  ² $XíÀ+> `Þ #²à f-%öIÂ`?fÒà¤À@@Ì‚ôõABöà!zƒÇ! ÀN5 ÐÕ®`úÀb` ÁH©@ ø@ªç "ƒâtVwlä@„17v`ˆ@8ïžíìœpÆ!þ”@b´a< ,p‚Bx}ÎÀA„m\xHœ÷y9Ä|· ºA „ †ñyᯀ+ZÝãZ A*ø š@(`Ž`ˆ& RÀ ÌvL,¶` ðk(hÀxà’ëmýDþ`†Ê‹ ë ~B!Åþàäã2bÀD xàwLlaU š`|L¦€Ž`¦@ÈP Ñ«xÎ@ Õì   d4L@€uÏàu !¨ ¶ ¤€]lö@w—‹OÂØ Ž:Á”Á áœ¦¢€ôÈþ ¡pn!ÉÍZa–þah5‰ j¡Æ¡Ž Há< h£ n!ªAŒ¡Vš`²¨,à0à$X! €Æ ¢ ÄS–"`a›€a¾Ha†Ì"`Ž@ ¬  Î@‚À†À¦`Þ=šà ¨‡UM  ¶à!”@4€Ôõª1R Õú@Ž w½âbÿ T¶ þ@‚Fý Z¹Jc`4Ì”É"  B!@@4A ¦ Hƒ=.´b Á gÒ•‰æ @© Ø¨À pY L@Š@ú` „,W»Ø¢ ŒH¡ðdñýÓiX!þHáä@@Äv ¶æ&¡.¤NBÈ €°a\©à<¾Æº ÄÆTÁŽº ¶¡gQFnAúq¢&Gà{+`¾èÕ~O D&Uà j²„@Xpu¬?x Þà ¬+­JžÀåä þ  Ôã ( = A ¶ ˆb.Šà ®`Hì€(×Î@ªTŸÇú ¶à hr²‘ác(Àæ ‚&5 Ea>ƒ× ¡!þ Jà nyµC¡(@Îó ì ®€Oìîº~ø¢{[káÔÀ$!ð‡ !úþ–í ä‘h‹a~A¢:UP¸áŒi6 걃¸A,À àPÂT¤áêÂ’RêxaHXÈ”T(gýSKÂJÔŠ/¡¿š±?ýSŠ»ˆö»&6¿ßC|ôû aàÔê¿UÂÀ}›ÂÁqª Á¤Á¤j@ŒÀj`)±äÀ6\ÀŠ¡ „—X ÈüOº»Wv¸®Þˆ Ø€ ä`¨AIºBÑ ¬ ¸àÔ`ÅÁ ÄáH¡ Àb‹jA”hu´w TëÈúÀo+Íoâ´ H , ¸þ !€x ÀážæH@–.G\ ¤axÁN ”¡ hê¤áÔÉÀá¤ÁN@¦a¡Š¡ D€ €üê$xan¦ Z¡¢  8`Ú¼G˜Ò×sÝ}°! ¢ ÊB~ABl€iO¸A6az Î75qëÐ ÂŽ]"CUAXGÁŒ×G ÜK×»ý¢¹ ZaY†¦¡Ž!î(ÁQ¾qäC†cÀjgB °L'bÔÛó]ß{+ºJ Š €‚®b 4 4 j2 Ðù# &p5  • "@ æ‹`AþXø@Üà øÀ®@ "àP÷]åÙ‡< ¶V&ª,Úƒàç]Ô5Þ ¨@¤€ ¾tú@¬Ë hŒ˜ß .W¤@<Ž +ð4á÷ ¶@æÀ „@$Ëæ»~G\ÀÜ`Ú¼~%tÀúž`±p`ÉB~Þ~¾–çÀ2¶b”4a³Ð V€R ]NoѬ ¾D& šà2òðŠ ÁÉÞñu#“ýñA¢ zc8" hBp`T fBáçÏ Šš¨Ö@@ïc9Ьþ -L س!wïyt A'Ÿ÷#$²½÷AâÜ@®@þ âë=V F@`]ç ¡ú ÚÅ P  „àlmª`¢c‚@ú³(`vQítÀ«^›·ƒßýAC,àWÞ¿O­HëóF@üà J ¦ údE@‡%† ™(2Y“>:ô 8Ó‡GC.¹Ù¢ÁO>C†ü0ÔE“(Sª\ɲ¥Ë—0cÊœI³¦Í›8sêÜɳ§O–jHMƒó³¨Ñ£Ho^‰‘´©Ó§P£JJµªUCÀ€\ÝÊÕ©É®`ÊK¶¬Ù—âmÚq¶­Û·pãÊK—¬¸Z¼X¹¨Ë·¯ß¿€ ¶Êm‘Áˆ+^̸±ãÇ#KžL¹²å˘3kÞ̹³çÏ C‹Mº´éÓ¨;libjibx-java-1.1.6a/docs/tutorial/images/structure4.gif0000644000175000017500000011351210071716566022771 0ustar moellermoellerGIF89aB.ç:::‚&–&–––n¶n†Æ†ÆÆÆþ¾Þ¾Š::þ¾â¾jjþ"’"âââÞîÞ"""z¾z&’&âòâZZZ––þ‚‚jjj†††²²þRªRþ†Â†òòòNNNîöîVVþ²²²šÎ𦦦rrrzzþÆÆþ..þÖÖþ2š2òúò&&&ÖÖÖ¾¾¾FFF***®Ö®~~~BBþF¢FŠŠþ""þÆâƦ¦þöúöÎÎÎ...žžžb²bbbbââþÎæÎêêþúþúŽŽŽêêêÚÚÚNNþ ¶¶þ†ZZþRRRººº>>>®®®222>ž>¦Ò¦zzzþÖêÖþ‚‚þÒÒþnnþ¢¢þ¾¾þòöòZ®Z’Ê’^^þ¶Ú¶âîâæææÞÞÞæòæÂÂÂòòþJJJÒÒÒJJþÊÊÊ þÞÞþVVV¶¶¶rrþ¢¢¢‚‚‚22þBBB&&þ®®þ666’’þšššnnnN¦Nfffªªª^^^ÎÎþ † ’’’vvvžžþrºrffþŠŠŠþþþ:ž:f²fööþŽžÎžêöêúúúÚîÚF¦FÒêÒîîîîîþ>¢>*–*¦Ö¦®Ú®ÆæÆææþÚÚþŠ¶Þ¶ŽþžÒž~~þ>>þRRþf¶fFFþ**þþ66þ††þŠÆŠÂÂþ.–.ššþvºvªªþbbþÊÊþvvþ^®^‚þŽŽþ6ž6VªVúúþŽÆŽ~¾~ººþ6š6–Ê–.š.V®V’ÚêÚv¾v†J¦JB¢BnºnNªN^²^j¶jŠöööŽŽÊŽ~Â~–Ζ²Ú²êòêºÞº¢Ò¢Ââ²ֲÊâÊÒæÒªÖªªÒªºÚºÊæÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,B.þ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cÊœI³¦Í›8sêÜɳ§ÏŸ@ƒ J´¨Ñ£H“*]Ê´©SœÏRJzõ©Õ«X³j¥8§ˆ×".±ÄP5‹Š¡XÂ+8 p¶B#EÂx"ÐÅœ­€ |³G (øôx Ê‘²x,‚R†¢”Ã"4©Œ@3.FAXФEF/‚£š°ë×°csìñ÷Y‰³‹ª>›º{ oK‘}¸›êiâT÷ø0(eð3-Þø6žH ÝS‰óXõÏõÙþñ>ž{¼ìóèÓ–±üYŸS.¸àÉ}ÈÃR ".ì‘8&ªè¢9ÉðÇ€@™|ò Tæ"vT!P¥ÿIFásô@†@ XPså±G RA þ-Œ–š@{¶yâ"tŽ("jªÕÚÁ_‹Dñ‚®UÉq£È&«lJ´ THBª­¥Ë]*^dO>)Зä1Ð\žªà"ÈP˜Ї &ü8k›ú!®"æÊ+­'Êq@_"†XUû.+ðÀcÄÞ@€@)n‹\@›âöZŸÊ;Ü"@˜JªíÑ¡Òø­j&Ú*Pˆ îÚG¯'&…@O$ñLˆÇ[ðÍ8çœP{ÀI°a8ƒ,®mð„•!$¹òë“÷ ²2—8­í)dÀ¡ /èC:‹ðŒ}¹ `æõ” z`‰ãÜWE•D«ë‚üÔ×|èŒB\…D„0‰"Á…!Dx(ˆ2œœ !µh@Dx1‹LÖ&È@†$¢B@ $t€¨æ’ ƒDÀ'yHÂ"äÒÁ1ˆF{2'ð¡Õ|0Ð7h|è€"žð‚ ðár# 1‡˜,è@þÞ¸5Ì[}¸R £å"«‰ ñ€å|³‰¨@J@ƒDðáµm9Cª—l)‰³@L‚&$Â.€èÀZ‡Hv„%Äd Žeh$¹ Á¦"dè#‹mø0‡ ù 9 ôÝ;xìgˆžˆ$¸@S5ÈÒ‚á¢2â݌ļ*$RG`*š€ä}øALà„ ®:D |@ˆ¤õ¡¶SCTé„÷Ám­.Až`‚¨W/] ò 8b-ùö"47d! " …#0܉Ì †XCA 0aa脘,Ôb ‚ØB RP Cà)@D-RpTˆ ¿X°AÄaõ©@@R‹Ý÷žø‚HAÂ0‹_„!¨à/Ø ’'DQDþQ;ðàRÀ¾qip¿þ²–Ç"DÁ+K¢¾Í¢¦Î¥2Á ÀÅ#PˆÎ"mV€@j€ROã\‹Ð-Á’r•Àe²ü(S”‰  „×!i‹PWÒÌà ð7tO/€@jtªA,ä;«–wrÀ\‹P2% |aiЀjÐcy›±lÖV@NpZ,! Ý6À¦p Zp† :€¤€¿€ªðax° žà ` Àh°â¶«Ð° : ªÐ† þ"€k` €²°w`‚p©`¬  P‰´‰‹à žˆ¹° V{ÔÀ{P„…NP%ðyÑÀ÷oO°iGÀNIà@À6 H&ðV=ÐЊpFl=`J…‘OPp TÀå#R–pÇ)‰X2ðsð2làl L.0o~StQo`TtR`D ñ ÈeP}PBeà(S¢)U@l€K0ðG?óö4dÀ õvP@IUPlÐŒ’ íX.Ep/@þi} &vð@ p@qF@|€T5i.Ö €ˆ`P' €¦¨€f ¨`z€pn‹ §'Z‰«`‹€\™ˆž°7€:P–V°–¸éV Á‰]ð‰w¹‹ÀGÙ—m¹Š! <ô@€€{Àf '-‚ T/y0 `eðqv`gÐP='Ãtp 0yohBŠ@…ðlÀ[q’vpˆQÚ 6#¹7vÀd™5is ?`@Ÿi¢‰Ç™›þ9o`™oÀiÀFI”2˜P@ qŸ4@ðSP„â‰GP…M Q0c}pþ†0Ò71ðŠ tpX1Ý`(7°¢Z Z0¢ m€*¨ðaaÀZp¡†  åaц m€eɎЕàj‰†à8`z€¬à¼@ °Ó‰Ž xù‰‹€ŠH Zð ˜(!2F À‹ÐNàU ‘„p`(ü“’ðVV QãSGšE"SN ¦ÑjѦÆs>–p af"C§e ޾A§afŠþD¹‚ à— ‹ ²€a0Aà áÆ ®€®à´à uP ³€_¹©°a`u°¨€¦0h¹\0|.jA ¸€L€¢Àa ª¬ºŸè‰z)¤ Ì'¥-¡ê²)€©w5LL¶ŠC ³&q Ð:€¡Ûê¨'ਰ°­—€  a*ÐY ݶŒØ¬ðXP "0åja‹ [ '€­h ` z  €‹Ð '+ žÐ®1®†¬BA¦cå®0 ©`¬º3ZÓç%Ë 'Û%«þ±6!f-¥ÏgÀ1Û<@?#”q¥ÒA£&Ab&våC ZNs O@´%ð{`›>`›¡'pmЗPص^ûµ`¶`ë .+@’à@Pp,ái{PóRg0­á%p14  qPE1Öw‚åä `Vq-±^pÐp#ÐAqDûo`J'Åž¯õAP « µG‰ekG0tðw=s.dp`b!dÏ0еƒ¶55§tspp0– T­û0g »ù2pÀhåQ;³P·jP¸làFð¼þFû³ sp¼e€LQ€(Qð²ù¬ñR½„ÐJÜû Yz+–„¸aû˜šb ×ÔiÀep­{0*]e&âa³g G hg€E`Gœa @’P%€¼ 1]«0•#k𖣋.õ”€2` isО4!‹ ~Âa}P-ðŸ-ð°„€AFëIià/cä&;×CEP*Pw*á /¿Ø7mæv /€“a4à»Û;W]2†]á}#8·f»RN@=°ŒYj¸|FeþGFRLÐV½r|cy@g /N FЄEð”ÐgªS7_3d‘9QÁ—…°° "`¼HЇ) ûq5+hV 0F0„àFËð~¿lU@ÙDEcpX‡KiP˜Co°Ng\{RQÀrd~ñG€T­¨w@‚V¦ ±4äáÎF €°È‘v"]³Û' #`ÍzKMð4Pf˜ò¸qoPoªVŠÐ{”Á1ÐÏP}P0xå¤ÍÌÓ—P£±|0Є lHݰ2 ’òþºQ#ø}€r@rp´Í˜os ÇÐûw@@- $Gd@…PÔ„pSgT‚1†»Ö7Ts[‚„ @t°&NÀ³ áÎáÎd`àBk!^Á’G¦E]>p‚·Ö|p,¦ùÕQ$4¥BÕN@mðW&Ðdš˜ÇUöÉÕJ‘ X0 ´ Ëg¼P µ×u€¦PYÀ ]u°:p —k5Puð  §] —Àu°Ÿª-€•ÅäR!„`F-@gÿÈp(v’CNðIXS—t ÓUJ{4-ÐÐþÍÓÒ,{Àà;0°Ýlp‚°e| ‹¾@Ö§ F Õp%P2@ØmO’U0¨ÀY‹ÀªvY@46[l€`œU/ ¸õ¶¦¼I rð2Ð@É}Àz{C²´Q‚%Àº©E@Ö‘ý¼“ ¨I1& u n0–¦°° Y‹°Ñ©pŠÀ z°«x€Vp|‰h©C¾¸Ðk‰J޵=d,>ð£Âpˉ>K6ñ8‘4 @I›I§ù$ÖѬ@QPs1`Ÿ4€§Q…mþðp{},ÄÓ1Ðv1ç1ÐC¨á„]ÊåÑ{ýE‰þ}2 €€ t0‚ QÄTÃÁ@ì·Vrs@›tD1ülFÐçóG„оŽWÁâ‹@n‹À ¶7ª‹ †¨°ë {”° n‹ Y« q Æ‰oÉ–Îå@X Á} j…ÃñöQýçA}p³#°ÃU Ü½ ‘b%òE‚—7ìѲcï0'.AªBÂeíU€x<„Øß *±s0ШVt€00Ìäñ’B§EÐ<ÐýL’@âJUp´CŠ@-ñl¾ã°@Û“èû¿þ4€<@Ó0Š$eð?t`Êý,÷ýGðÔ?øs B’±&¨iwO )€ç°> vá&.{`QâO!5h,CÆ"† ?ø€Œ@€Ìi¥J ç´ÈR†?2 iÈðL!2&Ô,zÃþüñ±èH¡öð¸ ÈÇtž(’!&FbHUêTªU­^ÅšUëV®]½~VìX²eÍž=k¤„”*dÔDò¬ÉŸtHIÃP˜ úÉcâ@Bt"ðˆú¡E„?‰èÀ ÁCŠ/t`[¥G”ÈTþ‰:™g‹$Ñ‚G‰.öäÁ°ˆÍ›10”9ó">Š$•.U’aàÙÃ|æüÉsd‘’ª´ dÇçÐ1Fœ†iúM6Qò¨! Ð"5:ØÁÀD8) žá(ˆÙ¤‰¥Ð"°@D0Ad°AAC@† ‰`‘žø€€?Z€‚¡"øZ$>Bì£9þ  £¨zQ>؈ò`#‚BÞøƒdø#€Êpá !Ùp‘œÈéƒ'D²ã†`ˆ`I†šà¸Ê’–cHK.AHä4œ€c:È‚†Eú€â!…$#*6ø þ¦…>H£•"áI9ªª©0àR¤?’(ÁAEe´QG…4ÒªÈ(D†=J; ‘&*°.8ép‘½ ˆ@0Á9ö`ËGìÁ<"lü:z°ƒÕ(Œ ã a ±$¥Á2HÉøžt"ІŽä£¬>ز!KÒøÒ VK@‰:IhI@BXaÙˆŠ'ªH Ïõ9ù†šŠà¢:"2ö£NIÿ8`&˜Qì c#  Ñ?œ Ã‰\Ã`Õ#þx¡ '(ã# Bªè3Ù*pÁ úp">"(¢…BÍ  >húˈ#Ž(#Δ$*ŠþHÃò „Žˆ €&–”$€$>¸J’ˆ6úˆ¡‹þ ¹&Ì €Æ¨”¢Œ›q†zç œ(hô ÈcKÊh!€7œCE¦’¤"B’^*¸pÃG<ñ‚-9ƒ¡'(V"‰b¡YÝã5è˜c„=,ÙüE¤Ké,'`É3ˆ"õØ8g£0ᣳ¨Ë1÷!N g(¯úVçxÀ5V}ÀòŒ*þ ÄôÔ÷€áˆ ö€c”¬z¦ t¿|ä¡ â¡W£*£‡àžALqùç§¿~ûïw7ø¸_C¢¤B)áÏ€D`þˆ¿g°ñ³ßxÀ†í%fÄ`5¸AvЃa!%‰7€ TŽ"Ã|4´á { D^¤òŒ>ð¡ ó_¤âƒ7@)©Bt–Ä€ (ÓYö`D„ &ta¥8ÅF}K–€ÚÒf‰à$DÏ( "‰´Iå§)£Áhšq* ÛCòÀg`‘!x—CŠÅ64] q£ì@BHa*ˆd„"ªK]:Cêä( qQÙƒ\ …$ZbjhÂrE¥À¡ ûeÚ|Ð5äÁ‰O€HGEZÖÒ–cáA0;€à@âbþð†.âC‹ M\ð”éTÅL‰ šPgjÃ,"þ€5NLX_CžA°a‹(C†é‚ È 'ÈÊb@Æ¥á À–0§ŒS lpdCJÀ°?TÁOÐŽ´Œ„jt«Ó3ƒ<@”QAÏŠ€¥ Ä`n0p„€  ð‚7` $Q¨@r"4Kl´! „%$yKžöÔ§RQ…˜U€gˆ‚$ìªc.¢}À“ F ‡3" YQ±B©8€nœƒÙá@@6Ô‚Ä`ˆ ùCŒ`E6¡pVŒPþI6<€ É*€@ç­R9@ˆáiX%ôö'¨ ¢ðj 0‚4°µM(¼èô:< b@8ž`)T ¨‰0Ÿ$8À ÐLIÒðP*â^?npCˆ$Œ 8Šè€Sð ¤&T£rꈞúÄ NÀ-CX´ˆX= ©k LPªëðÁ=ÐÞD¤¨ø <Ât²¤è‚Ò’ ƒ±ö lWÙH¬…­E”y°F´ß:UJjE„6äPàœÉ!TÒ“"БEüo©w•ŠàÄ2t–pÂ…qŒ3h‰þ9È€X‹àAò°ô€ òˆQkõrxS"ƒù R<@k^ö‡ HB:Àa®§¤sÈ@"Ô„D0¤ 𠀘'8!Q*NÃB»C;¤ZO@„$Ëö!Ï€žp£74!¡=‚"J`#œI01éô4‡D\”›…Óc ^æ¡Â2u¨ H ĆZ´•„ 2Ö'œá ú)8Ag¸L Ò " ó!¶µC!XšÀº,W…p/lì€Êª q-S%ó@#Z3Ì “Aøˆ9èø˶Êš€?”ÉÕ;*Äš ©7þôA N@ØðÌàœV9C 0`‡&ˆD +ÛC 4õ‚áIhÔ@(tÀ™ mˆSâ§¥€ŠÚâŸß3PYö’Oø§Ø0ò¾al(ç3È=8(yx Èy`À¡œlPäE¸`PÜ£òs 4(OGÊóO»l(Ï ÀƒßJ…ã#ß—%HÎ,€€(ÑG®†¨Dg6U`@èÌQ`Ã܃Bp‰%ž°‡¸|N¢£Ë1>xÂÞðR!Äa¿xÆ7Þñ‡|ä¤óp6Š XL{JŒ°Ç“æB/;\õù©hþüœ é£B#Ƚ*ªŠHS†"Á^ò·ÇýÀ$¡N@ê1Ø bPú‚R¥Ýæ™eJP–†&<㇙ Þ‡B¤DÄÎJ b@E@AèdÁ£b8àÅ qîÕ¿~}à ;2±$‰2p¾©›§ÿ? x†fÿc¬?…±2r#d*#Íë•¡A¦2`@-*À>Úó$¸úƒÉ<…  E€2(ƒ*XŸ ì’jaˆ“ƒŠÃ“"ð)l@d:‚*Ø•[Òëƒ à‰#0Ü`¿ôA±x†9Hƒ 20!@éCcâ #:P) ƒg0þyª‚ªs<0!„h‚é£E°ƒ¢¹0‚úSƒ6tgX-l(ˆ4—ϪCÿPƒg0®¨€† €(ƒ>ˆx Kp&( €£Á*;ȳ2hC5xÃ' ƒXˆ  CHD„¾{ƒgPª Döˆ ‘E¨¼”ÅYŒŠ'Xe)ª"`ƒ3„4x.!ë¹èƒ¼ ’p¢%³ƒ'ˆE`ƒ5<ÃL©>˜«²1)àÆ7p¹>xh2(»eYp’AQ)ø‘«€€¨>D<°Bp(HŠ’`Ñ7x 9 Ñ7¸ †Ñ6‹9 >`Ò(”†øþ=: ø´žb?è…f`3€f„Xh`°† Óf¨"ð€fp€XH‰IhÓfh†%¸…fHh1†6‚E¸€CXà:mF€dh†h1…Em†i hX„oð…f¸†ÐÏàÒ‘ˆÀ9 À!GÓè¿à?¥PŠØžP#ÓPƒ‹ŠV%ÕÓ0(ñ‹Õ‘Õ28€=’Uú#ÕXýUR-‚L>‡xƒ$µðƒE°I€€L¸ Pnh[ˆ„F@"h„H˜€Lð…jHù¬Tgx…PW;ýVØx…SØü\„ p ˜‚Gø þX`€)øn8ý X‚]h… p€°chÖM•ØÈ£Tœ>ÀЩø 5ð!ø‚h  A(†EðAà!øp†·Ü8eˆ„G°^údˆwÕ•€½t€%è Ô¸ ×A}×`€ ¸…A† ¸Ú‰åÚ®M eð€`ˆ… ¸€÷|©•µH€ †`(øYsÝMðƒ[€V(ÚŸ€¿dÚü´×£í†öÚEpZ8Z(€EØ„=0ðÚÉ-J‚``!0FÁÍíŠÀ†H‚þ+H 0Ýžâ„]`Ø€€_€g FXHØ’õ_ØH€LhHX›5ÜW C†A¸x×IÓ[°X‚%8† è]€éý†„Wh… ©…S"˜W€„ ðÊõ) øË¯I Y†F}…¿ŒJØK¬0è•_úm ˜€?í jXlHJmÝ/¸±  ‚ x`¢‚VhˆCXßW°Fð†``h„FX3¸V[¸*dØ0hˆ+˜‚Wx ˜‚  €Cx X„h„žF0ÜX Ø…h† è…h…Whþ?x…nx…^èÒh˜‚LÐ…opß(Š„ ¦€Jà/À„†ãEXS 0¨„Î]„H¨„J`ˆhp^„I7¾ãJ¸cÞ8ž  €>&cèßEdM5d:–Šn˜ 0€cA¶c†øbn†hˆ¨„H(äJØ/~Ë:®…GHÝI‚VPdQîaèe†˜„R^„m˜€@*¾ÙL`!¨àÞh€¼½8DΊjhdÖŠº-Ö H(]ÈÏ`€†FÈØ¸…øo˜€OPØF8„m€†Cˆ[HWiõ…G¸x…m †k˜O€„Cþø{}`†LØ€ðãdžh°×˜`øL˜jx„W€†IÈ(V …‹…X„jð‚EøK0°%Ü^¸…WpçHà°…L°†/x€eX„XP€¢ÝcÐ’æ„o˜?øøò%†„°[ÐèE€@†}n„%x…Pàe_˜€Ÿ¦ß¿„€úeÜdØK3À„/À†¬ˆkHâa6ëF`€´Vëµfë¶vë·†ë¸~kvæºÎŠ`È„/HÙEhƒ^ †(¾†%ð€k†/("Ø…ƒ[øKH˜HðhHèÍ·œ€Q?°^þ Ú`H€G Þ†ø`ø† °3ƒm@^x…Xp€f°…Fxlð€GƒÛ¶[ÈϨPã 3ÚM/8„A 0˜3øé+H["ø‚c_À†[à„8o°dÐÜ‚hàí”e¸…°¦€L á)PßP ½Ýdpoð6ŽŠk˜¥ˆ„Xx„CÐêªØ†fx„A0ëaž‚XPðgðwðXH€bð §ð ·ð Çp Ço»æpªè¸DNL€×?ý‚)h1p€°^[X\·…AˆŠ^Àa†x…~HXfâEÈ„XŽ ‡õ‚Fh Àþð˜„XÙ6†[òd HÀrHèÓ5ÙEø†/÷r€ ëF†/ahí^„[à† °…”€G&c¤6\gpá5'G(*È„E ]ø×ø `…”Øh„·ŠbèP³ö€·ôÚ`éE(HÀh¨ô„ ƒGÓEø‚…L°…ƒuîoZ*ÊLP_£eM-†ä˜• ‡„]ø‚hmh0_˜ÞF0˜À3ƒi˜†`Ú¨op€ Ýd·0ƒX†˜8õ u/Ø?XH`ˆ[þ°ÁÝ……†1¨†M¸0à†Hˆ„8n`x…$×…]€h˜„^pçÍÿ冃/@äj`HO®à…løáJG oX[0`»<E¦ 3¸†’ߊè_[8C¿ô[Új†Eønèe€W`[ƒdXeà„E†žÞL¸‚ x…dH 6x``„Lgt÷ö`Ð…CÐÔ``„)xú¨¨†a`P˜‚)è†L˜‚ x… Hh°jh†Wøîm¯Š`Ø`H†¸€L€ÛWH‡ãoÈ`Ø…¸€Œ/y߀LXóS € Ð{Fx`ˆw €bþÀKlð&/w`(·µ ØðfCçXý®0ƒØ·Ÿ/hݪ(†pô©ð0×­p€O`ˆÝïý™ï)"˜„Qfe–Š`þA-†Žnygë§Š˜ç¿ 쟊H(†è ®þªà~C–yï— õO "(†ã‡„F®+x„I0€˜†E¸ °†âˆE‹H4 ©·v,²v¨@?VÈQÀ7B P[4ª@­ pv«Hͪ5ŒuèÛ¢k \`Ñb$:wòìéó'РB‡-jô(Ò¤J—2mêô)Ô¨R™Nšjõ*Ò;"Ù¸þ`¦Ù·~ôÒ¹A„³»V8ëÖfÌlxÅÌš€AÈŒÍkÑ0`b¶"Ó’c?Z}ð͆³]ÀnQk¼˜€¾ĵ•+èТG“.mú4êÔªW3mÔCƒ )à)‘ÂíJlü˜h+Æ}Ì&Þá»ò.aifÌ„%—C»c’dË'A0¥YÝß’X“/oþüR>æ”6â=}ŒXêþ€ù>ôésF ÿõĆz.ì‡~<åg îD K¹àƒjìô„…èvÊ"bÔ¶H5ð¡N!‘ì/¯°$~-Âny#ãrþ|²“Ò-² 2² @2Ë]á…w´¨#:ù$”«IB@ /”÷€{T‘GOU´P†RdHA \öT†&(’Á"ÏüQˆOg(Â!;À=e 2Ô·Ó/Ô©”"RÐß‹QNåºPÁ‚6tCâtŒ±ÅÙ`Ë)$¼â ·C§åpË ½8 Àrº`Œ“yÀÂr ¼M/ËÓX1CN* À,Ѥ£É*»ìOÀ s” É%ÁÆOD¸HI,"Él1‹CÛîôLl ûÁ3ØÂAÆ0ðàn„.rÆ3=Y %4Ánþ€QXB@0Ìa¡%€ÌñÀ"–, ýº Ï|PA €€ÐÓEp†F”1‡"Qô¶eŒW† ƒ>0Gxö4B4qQ1G£IÐðÄý0GÆ3±@FœH„#€PF0èTdüá ³J] »ØòØLÁS™PPÀ+„ðJ#½¼òÊ Ô°p?„‰k‹ìàß~¼² $6L 7 02‡´½ 2s÷²C,™@ÀÂ+?“I&+lBDס‹îd ÄpÀ/´`„vÌBN4!P·ÛaÂôsMH¡®@eðÑrÐì|€°Ç tÀþ%$RH tÜ_ÖG(Ée8߃Uì!G|È`‰¼áÄ.DH"&È@Ã3F´ùAO{È€@ð3A@H P>ôsˆB0Ð -øŸ Œ …&¢.„%8¨2ôÀ@U‚"Æ3:ò„tD‘„tò™!2±‰ËÂ@ŠÀ¿E`@‹hBº(„ÞZDú°ˆ@ôrðA:Àžô’È€ (à(D €@‡<ØÁˆ@ž@ˆA– _;‘Â$ƒ<ìþ!. €ž€r%â‹!$aÁ-ú € Š$ö€gÑy\ PDà€0«Sñ5Œ ƒ$„Êx2'¨…pHB“(T`4ˆ@€!|àN(BŠÐ“gT€:9Cdp'r³›ÞüæQàÕ”“ ãI"@ ±û¥‹Üúb Üøü¸g¹x"1öÀ%è Ò6´À‚—ZpO<ÀUx覨“6‚qL€Üƒæ0ÉEÈÀ’ØÃ%£ …¢ ú Š DâœR£i¸g ÁEôA’`ƒ‹ðÐ*¬q'»< ø‡Hóþ€A1™L™4@îi5žðàw!Ãî—Cprµ«^e¢*§¦H‚`–PIÔð 2‚%x ˆ$¨áà œÀ19dà#ÈçNöi„Ðp+¢ZP üMèÐ(¤ŠÁá+HÒðÝ!ì4-AKö€@ ÞÇølõ'F¸úu­€àF°ç`02œA…x@ @à‰ ”¬NæÐüÁ e êΈ<œ!P8` IœA•g€ƒ€vi $R€ÃWÓ«Þõj¨ Ãì R.‚J‚ÃÞP þ àÐÐ!Z Þ^¸€±OÄàPýBØ%ðÁ2 ÄÀ…híO¤ ƒ`€ &` x„7ìAÕ¥ÃAƒ §!…^OJàß?Èç@ø1Ô †?Øay:þo!\`‚4t’¾@™Cb†Ê–%]DhøbŠPù†4½²ÃŸpYö²¹Ín¶Ê3J 9$£‘Äš×Å“gXÂCñ³O>âŸx/ƒÞ‰$í¯“>ÅåÉ£ƒb‚D!Ò;±ôºŒ èE˜ —oþ4¨C½2¦nŽE½ˆ`P\DeF«ºÖ¶þ®µèðS›šM·þ5°ƒ-ìa; Ià5!ëô4¬Xö°£-íiS[)’øƒmj43¥ RàÚR,1åj“»Üæ&·$Þ«m9$Š(D¶ÊØgE{hàè`‚9Q0Á”:dàsèòôÀ¡ a^ÄL ñ=Ø!¦ç¾8Æ3ÎgÌ!ÈîĈò ÙAj€Âà„$"oXÄ* ‘@" iȃ R™‡ OP„‘L;Ä@€‡eP8PМ'Ôòüô©S]*EØ5¯a:¨uŠ’¨@Õƒ   &X„hP¥A3cþ  Ÿá1ì9ƒxpoñ #D®Ú„DLµêDQnÀdøÅ3>)^€þ÷Å»{KÖ[¤ ¿#Œ= 40%dˆ¨±íÀuPû >œ½îw—ƒö.@È V;"ððÆå-€ƒƒA ô IVe”\[¶½Á¦ …ÔÜß"¸@8H€À3ôÁMZ—@åN’Þˆ‘e›¨¸À3þˆÑ3 ¥öYåU¥ú¥`šÇ3˜€©ñ£RÀ¨‹$Á|'´VôK|€ ’A¡AÈGØÖ(–%”Á¢¢ž|§T䦩E©–rJÖ££AD€ÐDE|¦ªót€Î„ÝðÅåå!½€È@÷ÈÀ é"()P¼@áÁ@ XÈÄ€Çõþq,©a@ øÚ"t@u@Ð` Áï­g¦Á®ñæ"Œ€€—>ƒŒ@›FÅ\A^oŽªè¸ÀÿH«²`_T4’~@ AÈêð=AtÀX-¾ ì”@žþêžîD"”ç",,õÀ”mI‚$BQ>AL¤Nhk@_ä$’‘«X‚ ™Ð^(”|çŽ"…KŸš±«7 äÙ™£x^ê¼À t„’ œä"øì Ô祢]QÀÒ&BÐ ]ø¬ÁTí \-˜@¼€W²Aø¬¿ªš $sé„°ÊYT‹¯ëOô©N8þ¬Ò@X€­Ô³nì´6[œëp‘A@@ ðÐ9ÁU±ì”JÅР Ä¦Í.KY[±: Ѐ% ' ôA´l —"ýç¦A ð„%ÐUOäëæ"g÷=À8A¸_ À€ìÒ.Ì[ $Ø"@AíÎÁ´Û›}@ €€ ¸‘@+G¡™Áêi°–'8%5›Ëš´.ÂÞ D" —¶bï¹Vœ (ù†Ù(®¹°,ùQéQˆ €’×äzÓ†Å!:‰ç „ aË~ÝÙ®Õ|ÀAtOÜÖ¤êD¾  €þbj4…Ü<ð&vÀ›˜ÀXI^®k›Á²þqðŸ(/ÔG ¼mÂÎíT=ÃALÐWêXÂ`ÀNØßF«ßnÁùñÄ îª1.ËBÅ´#Teiü‘$`@¶¥˜žFæZìBŒ[ñ@!T@¡ TTï„%(/O°.HA€Ë e´À˜1GddqPä`¤¨=@XÓ<£þx±@4﯂¦j* áj a€è,õ“˜UœA ‚\· ×ö „Æ“U@À@°žïâÆ©¦6Å”šDpwÓ¦$Ĭj`ߤíúÇÑ"(@Œ/BÚC®T¿ä+ t€þËD¤âagÄvÎÐäÈ8ƒZ@ÁV©A h/Â'©¶ ¨Ç_$ʨmÓ3äž©õ Bpo³e/ ÌŽTÀ±€ œÁ Ä”–¥©«R|€aês™¶r7‘="/zÈŒ@"DH2m‹ 9þÐðl1!¾èÏüA¬>AD+—@ ðOT\JK‚ ØÁ3t˜€`ì˜Ì•„š8é„,F OpÏxð™% µ%\– YÂN_ZŸ],5Ÿ}÷l¢=ƒ!i ,~€¶@5éÄVqÏR/…ô@è"BJb’ä†I'B¼$”þ¼€ÄOÈ©\ÍךGë„$ÐA $A"$AA¾ÂõÏæc@"¼@"dÔ,v"ô“Å@ø,¤0¶b•õST"€ê,gsÕࢠ”‡<ÁœÁÒ¤ £ çA‰àÐSI‚l“@ž@ž¢k2Õª7åÑKÊðÀð@nÝPh3…Рcss@ôt³á<(„f÷«Y.Y{7>C@,±x/Ë 1awzë_|Æ!¿÷t…^(}3žKfýæw7qu`Zû7Æé&('t;& x‚“›x\÷>ø7±%…þü^ie88‹%&‚ðzxµQµ?·£œ7‰S(¼®8¹ÀJ⨩UzÃx²­ ™!Ž ÛÄϹc³ø$èÔ"[à÷‘‹Ž%xÌw“¿YHòßõN¹ÑøŒÊ2RA ü¡——@xÅ—÷$—+Û†8øUAÇXå„3¯%Šby©bÜxPX‚ï Q(BÄæ-yRŒ øÝS(B ¼At³D@"ŒÄüAè¦8ªõ„$ô€!šÆصØÁÄùìA"0gøþN«µ€À»\6C¬É‹ì"õÁF6‚Œ û’Çd¯@Ô)¼üÀ®9‚Åi¼@üí"Üï6Þs5­·‰j{õ ôw ÈÓ|e¨ÌiGÁ$Â"Aœö ¼¤#–ÁªN¼œè¾ïÀ¨ŒFTvÀôd T„€"Ì >ƒ X¨" šË'BxƒFT@ øÀœm˜5 ë¨ÁÒAìrs}\ÆÀv‚=°AH/0>DlØ9¤”¨y°¯m?@Y4`Aƒ&T¸aC‡!F”8‘bE‹1|FþH)jJú ð8F"ÐICCR:‹@¼yVE†¥go@€Ì)ifP¦ ‹Q¡B‡E0*8‰ÃH!)LÜ rà’ÞÚ ”g."ìçE‰EM db4iHR¬-A(ãCbœYä€b‚I¿8c¤I’s͉ò@E‹ õÀÄ;GbÈéÑ#À™ü@§ƒÛ·IÀ›#¸>œxqãÇecà-Ã…$B–T4Çdš:`X” ŒoŒðxå·‹žXÂСˆ. ªèŒ`$"d„Îþ i^0"=`耀(*à¡‚F*è™ì¨oŽ7®s6ìP#ƒË„=à°„>ÔàÄ ‰`À„3`xâˆþ°$!Iœè9‚>A xŽP,‰?|#Š a#†4zLD¤èã(@è„Òìp¶(\8à@œÀl8"x¾%ª€4¢x†Í9é¬ÓÎ;é”Þþ AŽÖ<¨¤ìÈ@’ì(¤7>Èà*8‚‡@*xãú¤‰@y†Žbxƒ ƒ$y¢ ;@È€ š¨  ¶,¤‰(©  Œ`#4Ò€¡2*@•Žû(¤6þþh"µQ$7sƒ&ªø Bè8ãúÞ@5Y+ø ¡gPD 9]0=Xƒ"†íø"‚@¢")Yäø}à ;b°£Œ4¢ ãì€âÓì€CEžhO…ŽpøÜ‹9îØã?¦’·Žä !8 Ã%1È9²dマé)!˜ šù‹’Ĉ?h™ gld¹ žIýÙ!°zêNI\ØxæE(:·‚¦6ˆ p™!2xðZì±É.;#6^à·<‚!ƒ|ÍŽ;¡2~“Ûî»ñÎ[ï½ÛSm’°ïÁ /ÜðÃOœ¢7’ø›7 „¾Rþ´ ÈVHé‚ -XqÈ <ððdÅIÏȈ'`†õ‚Žé`GêfÎ"m­ôÝywˆ‡? « BRò„‹;H–2D”Tj¸£òÞÅöé‡,y"ëEž‰")¢1)¢#(d8÷ 'ŠXd„ZÁ1‚Jx¡Šü«Àí™>€°Ý†ÚÑZz(ò'<{ $Û3|ÔµÑ@"hиOü⋸Aç°Ð Ü ‹èDçˆÔâéHA9ƒtbµ H1YB hÐ)ð`=\bxˆ¡ á‰,‚—°~¨‚²° þá"†`D%8â‡UÌÅ%Ü€9Cðb° …!ÐàŠÌ±Â‘,Äö ø`jˆBvV>,PŽ ƒHŒp€34(ƒ„ |ð€FÁ@hFèC"0;–A HC}޲#¤æ%Q‚x€´’Œ€ Á"È8Agà àð2¬DŠB,U¹¸ H*IÙÊWŽ`$–` ,öŒ˜lGhM3ïø3ð! Pf5Ï0*c"s Ûü€ùPE" ºtà9ïôBÈ@m ^C.Q U ALÈÑ|b¦hCçhˆ<4°BøÄbÖ „Y´° 4ŒƒþDaˆ5ÔÀwÈ…,TÁUÜ(E…KÜa[P-PÁ5ˆ" d$ÈD! $´á¼0Å*z<`Á uHEÖ€ Y¬"YÀA.p.  ¥hCÁ‹ Âk<AØÀƒ@è"Ѓ#ì©NèZP(4ÁjH+–J ËÈ >U T "I´à‹Tĺd XDèBƒ”„„0‰% P;$B yH„ ^Ð'9È€‰ @ì÷“•%ýÓ—ªƒDðÀ²=ȬdÐ-;¬¬ Ýò•_MÐ?´` …(AäÀ‡³Þ¥¬-8Cþ”#¹1€Bð‚ôlˆNíÚI hd$‚ð©à>5°Oä­b &\Eó‘ƒÂPõ f¸ŠT”" ®°‚)N ªš"‹øE'\Áœ@KuÃ%°P ˜ "¨ÅAîpáRÔ Á¦Þ"˜ŠE(ÁkPÅt ‚laµ¸ƒ,p!W´Ár®Y œ ˆ‘Œ@ €$±‡`$ˆÊ  Ô†NÁzJ@'D(AƒÊ„DÐq1àAÐÛ–}À-ÀJà„3H¡d8  …ºX2å_£PžÆoèÁ^þp€$oè€ dp[Òú²T#pÓš2¤¡Uh‹":$‚Vãø„D¼al8T*¶KxÈèCà0eX_†  @Шf‚Äo»½žS+Að&‰¬AŽØ‚yUáCõ.¢H0! ’U D¸ÞA†°Š8 ¿°X‘ ,ÂTHn¬!pD!a$TøÂÁA1Ñ.XAá–ˆKA.Ô¢VÅðMŠ;è Æ3/h!Å@ ˆ0Ђ¼D3$C Ä HW@ ÚÉ_7I¨¡yU—óúŒ@¢A’Ä^Ñþ>ä! NØÍ_À,:Ãa”d`sx‚&H‚&€Vøˆ÷A¡æ\/)…5{e(JµÞ ¥‹*®¨›žLV•t@GQàƒc>ЃB $rÐKP÷»³-B—VžàkÁ³‰ {B_!²†:À"[Ð.D° ¨ HÐ`¡Y¤@®@¶À Á ¨²`ÔAøECVaCÜ@ wX-‚‡5àÁkPNÀ+t ¨ðÄLáƒÜP…±Š:<‘‚HÅ*hÁ ©ZÀm@"J¡ƒR4¸p…ÚP9©:d Á}€þ«Bé r AÊp€^ޤ/ „j‰üa'*`Π¡VfåìÀ à\„àà °¢eŒ@8®J@à`±L©”à  î‚ÒÀ`@ Þ^ª ¸Æàå ‚—*`E€gî‚ ôb“þ`’€x@â2 òåòà\F AÄô¯H²c$æ@Š€ž@ >°Øà x CÒÀà`²c´¯ £ Å! D ‡:!@úKH , ²€X!”( ÑÆ<áDÅ B QâE¸õXá“衤þÈH¡º`ô Á‰¨ p`D@Ћô`  ñyN€ t@û`¡:HA!ªâÀܼææ*xeT$ÁVšS@àýЦ Èæ úŠò"7Æ€à 6æ`KD%3PäÄýš»J @ÀÌ) š ¢Š€ ®Êì1 øÀšàx ì€Ë0À¶çh  ÞG ³äÞZ… æàïG `Þ@wtåªnëòâôñ âçP¦ ©V%¡òâ ¢à¬Î iòbÜ p „Â¥Bùz’'Bû$B Taþ€rá( (•² fAâÆ&ŽF!>€•xÄ*e£"Èà ¶G!ŠÆò@ÎZFÇF˜®ä!¾ò*»f Ø ÞÉ+§2!ªgîrhf²&ùOР ¶Hq:A ‚q8xA|²/é„ Š€$ÊÊ Ó8,a/335s39³3=ó3íæ @ ðb’Ep â!à !BhÀL@“!x€™ âÒXé (ó~¢ è@ÑB l“ Ô€×f39•ó!lίB¯žá6®9ÉdÀ—pó ":âÓ (²ì~Rǯ,¡¸LNšS#¸³gžAhþm<5¢ "Ç4ß 3ÇÆœæñB   íÿ| Äe!> Þ? ë … \à—³B-” 0€ !" ÔCà 0 ~ƒ ò€‚>@/þ@B7ô H“ à€ `\€š€x€Þ@þ ÀÑ-Îà V.< "ËDôŽ€@Géà 2þàDò JÀæh LÀ¢@µúà%ÊÇ´@æ&3)öઠ ËÒ F  2€á h¡ذ "àì ¨¦>C hàæ€È€J`2>žEO‡ úÀ1`þ ˆ‚ Š€à4Ô—\ ØcG}€hà¾ÇB]uðZ‚hâ`2 V@ úcîL”‚p³jµ™^ÀȀȔ œI€ÀÊ  œ(ЭŽ$àê¥J¢·è Ü®8TŽ xTùÀ%Ô@ €ë3 @ € ®ªaXÅ¥%š ý ËÊ`à쇚 ’ÊÇ"a€ 2 öèØÕF¢øÀ`_  «E,À™ž•í$RÁ ¡fh $|Þ€Ž¦)à@ Î`Jƒ5L“ @àz@Í€ÀxàÖþ^uhÝðY$¡d`jœÂ ( €Âè|ihc ‹Üì žT¤`嬌 ࢎFB,çÎÌöºÕít‡ 6$ª`eÔ dó ÈG áMš Þ@Ò$z€1[`fèd à(|&*@’V¦•@n—ø A;ýª4’À¬P?£ À@× å «Ë ‰Ž:#æ, zÀ+ת4âý"`€öàUD’^ 'ˆöw{íYžáþ¬ W_B r¢W BÊ‚1pÐ F)6”ø€™”¥ ,¶Ìm‡âêLGö v­Žøà@ƒeþ ΃Aêš¨ìŠ ër…“cÀ¶@ –® Êì—Z€Ñh¨|à€W@¢ ø@* Õ°@· x tCed +ò b hö 0à7>NT-b kš¬vñŒ@ žÕæž b zw†±"œ€ž z@ ü#WÿÀç`€" € t4 h@ V8úà<´ (®Cí@ «ˆuºæ@NΠ ÌL‡ £æ@-‡ä *…OÉì ˆ‹: iŸáò ž˜Jªà À¦Î¤€$!ìÀkžá·æ€T aL@Ђ˜˜> d #HþþW`3`e> :`ZÆAá Ž/ÒÀ$ü± z Ìò+Péš`$`3Gù žl“m„^ .4Nð)8°Ui¸˜gdO?Àà`ð` h€‘Ž@•Fà Œ`F@•Jè Ô\fè€B|ÀTé Zf–¶Ø`Ø€ .É`J ‚ÄyuÊùœ—Gä„ ¼yàã ![Ús€4%!œÆkf)3á pTUµ¯žÀ ¡¯ n‹ 6F Œ•Zfˆi€¡ Fàþ:•Œõ“¦+s ÎÀ À7çàþ¥”RÚ1Š Oä„@ tÓ˜•šwŽ  íæ€ Þ€nódãFÞ’Tä'àA'‚AÛÆ¤Ie«é|L çdx©Ùú˜ªïæx`2ì¤-÷Æ´y­Ã®_ ‰¹­›tˆ&rˆÆÉ"¾é6Íš"¸2°û±÷ ò@p -hk Q@ #Bª‘ó"Ž@hh-aXô%ÂF~â*€¯!ûµµË+}ƯVæ­%¡h`™Á‡J|‰ ž`îBÈ k`àæ ¯.N |X‰hÀMcC è’¹‡;!†[N–‹UbZºi+Q),ÛlDB=®4þ¸qÆú@—šÓŠs&|‹¡œÁ F› ˆ‡Äw=`[„ ´å~çSÕ`»Àñ¦ .|@%Þâ]œàI  ¯¤VÕœë]J3Ò @6¢þú  ž’ "Ò¤ gAÀ!2 Ôà}A芵`† z ò=0`ÔèàFUDaä á耋Omc Q <ÐÍ& þL ì œ`Á è"<”y¡þ†œ¢œ #÷`js£ ê › à†áÄR¤ñ¨0¸€€:Dr§­º+ù`qpÊ`'~C4™ŽÀ ÔÜ |Å ]Ón\  zÀž޽ÙÎ2‹%Þ‡A@Ciá€Z€ ò™l%š È  !²P‰"Ùj€à3x %¡ŽÀžuÎáà=\p5_ ÉÏÂÿÔðÓ¡öÀµ=àçDx›®VGW)ˆ4PéD›7X…ßòŒ`ùàÖ]pÆC_°ÛÔUílÓv®÷í¤·-üªAZ¤nº%$L df.o À H{ R2c3âgþñü3Bf*£[|NÖ½ŒfÐäŒ &ž¡ä`‹ "Sãò€šà”j nÜ´vJ ^®@é!NuMpþìïdK,á &{µœ× ªE–Ž’ª e<¥ZÆãD· b2’^àJ„d†#çà+º·”\àä Ô8­|gV枀lpÌlD œ \“ è€+ìTeàßÓÚÓ@QA›ò Î@x¾$2M~»ÇÏ|¥ä w›•«éÔ€?åÎFR”Ë•b>Wø #%áòà ôbàØ1{0FÁE–x”yf„Ì#?<¸miùêoÒ´u+S™à±“?gþ› ó3|ª\´# èõ6-¹®hÏV8„F°%Žý#=±è4”pD1=ƒ0”Á†}.ìv‘$l>9£ E@Ie•V^‰e–Zn™™r f˜bŽIf™fž)#<¼e‘š†]ô”Ad’•šfJ¦dÏØ¹ˆ$Ã5g§ ‚ÂÙŸ4)ª'þŒÏ Úh¤’Nz-p@ô0¥E>I& ØQˆEF:Ó(â™Æ$É©”N¶G’}P&0çBvìQ PôQP oû }@áÃM¢žLªî1+gGÌ‘F§Õn;) gT¹ÜŠ»H`‹8A‡´)ÅY‹¸«¾¹àª‹À‘Äg¼±ˆÀDœ Dg— {Tô®v=ºG¯½)¾`sÌÛãS}|¦{³±–"îZò(sÆÔ ð 0$ÃÌÑC‹T Z¥Q2Dk‘N™Ž•m|> ÈmW€ˆ˜þuÖzÆð‚ Uœá$•ºUȰH,9уXHFUÄÅ€WÐHHò^ƒ1ðvFIð‘}$ <`5Ð"#h$C.FÀQT2ÒB …À „?C D` =ÈA©µBêIb‡­eJE¶„@aG»dŒÖD¹ B s@ñÄpoD°H!N”¡¶"-PAF`ÐC…Dñ$þf@FkÁÈI@³iŒ–>ØQ¾AyôaGTGîÑç¶ÏXRD NÀ?ÿ¥.‚WY$€Ã  oŒÐ#"ð< ´ˆ%ŒÐöæÙƒS›sA>e‚¾áà=þ@>C„$ìuB Æ„²é“#TÂöéQ1ŠAÿ^…*¨¡~2JCÎ`‡<”À $!¢*À'"ErC ˆ¸@i%ÐVsLð‚Ð/ QÍì3 LÈ0%Ì"E6` gØLôÇE?¨‚xÔp2¤ – À2Ä  G Þ© ñ¿1=¡ =ÀXö€Ç&`‰Jz@³HDMH`™@À‡h=# N‰E*i;B}èÁŸà þ¤¨¥ p‚Z@‡*¼ iHÃ3 9’¡ I(kµÐ! >ØŠ¤P$#nC)’Â1“ #`.=¤œ¨þËæ:¹©M9pÓ›/ç9(…ç¦Sº’pçã4þ5 žØ®$´kfv7¼€™Eþ€ ½æ]z¥p‘÷¢%€ï"Ê@_ûò€’í-¢þñ4Àà©9 l‘>8ÁàË…?8Â-øR„+p;Ë8C59|€j&ü“‰ 7½y°PŒ@į/‚>à„>Á HVš”"t NRTÄŽVpþâ>xÁ\ 6ÌÑØ û` ±–<àAÒ0™˜`#è«0*F5üA lˆAžñ2Eœá™1€„#‰@˜‡LFDvõØ Zùl c‡7Xy(Ãd@ˆ·¨{'uAìÓƒ ô!G¨@žñ„Ìe.;%I„Ž‹ØÃ§õifX¨ = jˆ2¼@’ÊòT-5Œ N°Ú5±f4€€§µ³ŽEjÑdG›³ÓVöE8ë.It6Û-’¶ÓP¤´A`>è@&³|k&è€ ÖÝî ¬ðªEèm‹< È72ùío˜»þ8€ÌýOw ¤U0wH…Üž Y ´A(n‘&t ÃÑ8¸ÚÞ†|lèÁÈËÜâœ6ªçþª²‡š7Z78¡= J\P´@ @àÁ‚(<ƒ–“`ÒÅf’@ˆ•'¼BïA ji‚ œµ¶”åLþ7Ëé¨m2à„ÜEÈCZÀ†$%vurú™È˜¨«Þ ¸7Ñ 1è@|Ї/‰È%T"ƒ\ªá²MHDñš„¼á1MøETà1¾H5eÀ:¢l3ê›K¨¡ þÓšŒÅk&RkÄ“Šù÷‚<bÝ3úîØÀ¦Xɤ^“‰°e¢™Ëª2¤”ýª@©U–°ÓÀdrý#È)›PßS–W=‡6F LsÁ>6±ê‡Lÿd#à±gð[F@w´ϱ_t)ACÅ7@Fà@Àr€l‚ZbCýVe62R'h&sið’#’ _Â-.€¿U#%àW7A@p!XjÛ%„GH%U@ ƒH¨ЃN(…SH…Uh…’áÿ Q’g—ÉB/´u%l°~!‘@%þ•ÀWè†o‡–q|°7g@2@Q‹ð)‘vÐ×g<R5ò,6‚!€ $ ;™Axf°Ø‡—ˆ‰UÈ.P QTNPjpáT€ -’Pù6Ï€fdge@Š’°hQÁ&–À<p–¥ Bp eå0gpàp@ÿñ ʸ‹A“G“BÖ W 9°D0 ‹@’ “a °Á“,0Ž“°áxŽÞ8 °šà•`p0ŽŽmÈŽ‹àŽù8D0ý˜‰ ©bòn#I€U@D•uþ.| ÍÄDga tEª"Y‘*=`g‘ -ð‹pJ$X–7vÐP‰ð|@{À‰f!C’úÑ|€5Rtwð-.ñ“gbÒ Ü 6ðÁ°à É Ð`Ø0»°Ö  p +°‹p°0ð @ À“€ ÈðÀp™p ™  , É  `Ö06ð 9 Ð`°; ¯p—W Œ j¸—‰™VÒYÔ!s@D€`D»ÂWµå.@Qe\EM)^c|€FÀ%°‘|T~Œ4 õ‰@ÎþÃR#P2@4l0áv>€/ð'cƒ5ÏðIP*If&Ó ~P ‹À• ½°Å ­À @Æà  ÛàØ€;À ·À  Kà ,°Ô° ÀP ‹` Ð @Ú@‘À ƒ` ‹ ÀÐ ‘0Èp Ÿ0 ­ ,àP @ °º ™i¢'JT£$žiJµ1ytEaƒ©âš‹PG‹X‹ðv%=1 ,i÷<À|ÐY=æ<‚xtñoaº"Póùw&ð$@™Ð å)þ `ž^ À ™ Æð ñ¸±§á ‚é T »T0BpÛ°b°9 °ð Xy3 ‹° ¯ 6Ð^Ð Àˆ(ª©›êç8MI@gNgU ‹R€ëâQ/ûõlpÑ@%÷R–€“‹€/s` & 1RiFÐ}P0“x- ×fPº@ 1@O11p `ˆ&DpÃ`l(žÀW   0½ „yh)9; Ì –é Í  ·p Ãð `ß Ô°$!œ°ܰþÕ°`6@ T Wp ÐàÐ 3°ÓÀ™€ €Ê©'‹²–ÁPôòvi0{ `¿*Ø} PÐB;ç“OepP-ó#zµ#YmaUÀ'U?À•u€1€Ð2p£ƒ{8‹û%P°d$·U‘â­p`ð à àÊà  ¯  ˜B |É0ðô8 ° ° Û€ …9 àÄ0 ¾àÐÀ‡°ÞÀÉ Å˜š`ÐÀ ÃÀ6 Ûà3à)+»³ÛÀiÃÁ'°þòS¶Ñ„aÉ¡rPQ “œq{U@UPgGxrºf`Ô€“xÖKâJ»ß ¾2Uð»Z" „ð}0¼›gPFø.ʾóK¿õk?ìk¿ù«¿ûK#l’wE gq†–@f2wQÐ{™Gg˜‰–9+‘° Ý“À šñ › ½31 ›À½[›½41›`‰‹›° mXBÐÂüë„FÐyh0-ðT%ðN8Ak P^e ƒÒòuœÁ«ˆ‰3À<#D‰BPÂ7Q Sða4±Ðš ƒ 7€¨þ`¢ˆÃÐÁ1 6`Á ·p6‘ ƒÀ 2Ì-LÆ…EЉ#A#Ács@Ì7gñ @OeQÿ+ø. F°NPO@Š s@?Upyeg°>Ps°Èà$ ˜É-s@±à®Ê£\OP€À&#Àš’²bð ×p˜Áß` €º € ;@ß ŽÍ, !pŽáù ÎÌØû DÀ6`ëH;ÀÖÇȰ `Α   Ûˆ úØÍ“`°Ö ‰Ç\ aÊ 002 `ßppWÐÍÛ Ö(þß -B ŽÖ0 f,€ ãÏW õ)Ö`Üh €ÐD@Ø` øøåšç(®¦D` ŒpØ q žR¦;€ b P‘pPlÇWb `ôuDäç1 ¬rŠPç@su³B»IäÀÂTÓI1Ó2ð<îÛ¥r{‚&I%{9)d°¤1 ª‹Ð| ׊|™³_j Š€“RP2Wےɰã(€Ó•‘° 0Ø€ S  ¯p¯ °ʰ ‹»™@Å 0~Kà ½° P3A»þ0 Џ ½0€ 0~°Ûà ÀÚ½° ¡­˜€ÑÐ` ™ ”ø 6àÏ2 ¯0 9  Ä0·`•ðòÙ »0™ ŒàÂþ ±° Ð Ц°‘° Ä à Öð¶° Î ¾°Ð0à ` x9f` 0ŸÀ ;~ÐKP¦‹À Sp9pÓ‹  İ ¯p ‘°™à?mð Ó°ÞEm%Eõh, . œ2:PPÄë‚G3f+<ж>Š6#°.dPFÄkgt}0àF2¥2*t5-€-våNXúð½³þ-°»0ÐÀ‘Ë0$•€Ý…º mÞ ;m¾ ojaê¾à®W°``~`˜à ‹` Õ°‡ 3`Ð@ p!°è!@ 6 +n! Âp $ ~0Sà ’À !° ½   ‘0p™ i™~ð ÙPÄà ƒP  › ½°»` ã p •éb ÈÐ °î S€Å1 ±°» p Ö° Ÿ ­ ÃÐÉð (MKp ‹°\Ù B0™@Áà_€ ° ³] ÖÀ ™0ÛJÓaÓ*=Ô pƒ°þ°î2 r“ çÃà'ý ¯0Å,%0ø & 2#j.;¤9£¨IÁ1Aˆ°. |°K‹ÐUÁF>V¤örU‰‘6ùöätíQ^¡åSDUPð<@†’ò tÚ iîX Æ` ñžVõ1a¯€ê‰*!Àê`à 6€¨‘ `Èp àìß l¯„Š _/D0™K  ‘€ 0Í`D0 ¨ ƒŽ 6p+`Ýà ð ø_ðÜÕ`ÕÖ +0à,àÖîÝ@ ƒ ”@ à¯`­ÀÆ21 ‡@þí·° ©½­À_Ð É 3-Îîô~T€ Î ` 60ïÊpû¯€Ûý~á5-ù KÎ÷îcÀ&.Ü õ×0 Z_Í; ŒàôˆñU’y0™7ry;Ö>À›¯7ò&àyâò2 s-"HP5EøXz ÅN@.d@qA°Ìˆ<Ø<0ç €Qœ¤Ùó¬`ÁiætP$)BŸ2NªdQâE>Ø(¨…"8Š,I‚ÒääQ¤I•.eÚT)…]Â(,ºB"’Ó£D~8 1‰ $3¬ EéKˆ)ʈxa¤‹µ^Î U²6I¯HþÎF-úál•GC$ËÑMÀ7?» "bÛ.L=ú‘Ù¯ Ä|y¡À*Ũ½Ð,ìQ!$0r6YBhÁ"=²•àµV™(Æâè®L½ü𶤕AÕbppÍŸ¡BŒE¬!/Á ˜Â?rÐÄ?‚)Æ–e°a/ &®Ù¡—;ýèÅF¸±¡™EMF¤Xhdƒdb™ä‹ rØ`ƒÀCæ‡o`Š̸ÀL’±f‘ÁĆ/¾±e lhå¨Ilñæ‚C*ñã‡l(±e‘†¹óClH`?¾9ê`lÙT¨(€n 8ăd×füÆ< ˆM“) ˜ü°†O –³e?°edlÁF‚]õÀ‹ nÝEˆFxµÁ—«Ä 6+¶øbŒ3^ª¡þ¤ Oj+Ižù(“O ùÀš ƒè8J8©›Qþ€ Iþ(Bc ƒŽd*‚v(p)£ b‚£‘"Â7¥v ¸)œÙÅ "$±å‘ -hè‚BhÐ ± ÌÀ²•"bê¤XhÚ©HÆ;hºë¶ûn-œñVÐBèaç“Ȉ" ‹èÛoÆ·x_< ˆ0b¹ÂqÌ3×|sÎ;÷üsÐC}tÒK7ýt?(ä Pwýu)H ³1Ç êwˆ†›¥Äh%m‚¦yO©oZ¹ü$"¢ÑÀk¢q¼’V*Y*š^~U [¾ «k*‰æØÃ¿ÆÈÿ|þô Š+“4×FjØlD¶Q`““"™bV¥®PÀ˜£ð¢¯ ZS®q é)$¨€"ဨ §¸ÅR 3ŠX£$À]R„ÀøâÛK_ ô>˜P…››„  jÌ †®B ¼â G‹„ï¾A„HÌ T 7ZÁH‘ è5jW€½€S%¦Ñ øfƒ­ÅÂB…VL‚Sì'A„k´B;¨Ä5H@‚x F´³HpH˜A½¸#fàXH/ÑøF4âGC8SG‘£9V°àv‹c/Ì€[h 3 ȨŒ÷°€þ­ààQ(pPDƒv”TâR®à kd‚Ÿ4ƒ"y’`£ ÀM%ˆ  ?LÀ9øF A…ö$Ü8DAv1CˆØ €„°BlåyPC6½Y·€˜Ä Œ%4‚_H7 DL|!dÉÀD/A… ’?è…šhô¢Ã+¤ñ¶EôâÀF((`‹^b  Â#|ÁWt‡±ÚFüp/,! †/p<"»ÐE â‹ALÁÀX&4–ó/fb HÀ5b±Nc¡¯XByV`Œ%Ä)­¸#f L,ÅàF(‚A d +þ„*AŒCü 3 #°q1La¯HzQÒGô¢m`Ð…Bð Ø`äôC2Äp40TðŒ+ðƒ 1i8` É0@/!]P⌕HÆÂR 꺘ÀÌ ]Äâ‰ßL"Ð6Vµ3C&&À‚`b‡œa$ q‹/,"‡¶(&á\ xŬS€Örb”0@2^ÑÁEÌ@Wð†f ``ܘ‚ÂÀ¸aZa ˜¡˜ÀÆ#ºÑŒO´¢ àÝI.@?} j­øÂ#¨–j@2þã¤qk( ÐðÆ"°È“´âfþÆ#Ä €b„ ªúÙE+"I!$` ‹ˆÅ1Zq@¢·(@0 »18à¬9læ!ÐÀbNc.]mø¶Yf4;ˆTH†-¤Çx½" Ø€ ´JbÌÄ0øÃ _¼‚•]„/Vð¤f ±ˆÅ4VF8ã Ø€Æ5^a‹k,[”Ù0…%ügÐðE?Íp…[ Ã;ØERcAΣÚ p@táF·ba‰„¦r¿ÄÉ8ÞpÆ&¨)xÅþ4aaTÂÓ¸B,l  XÃ8 øÄ"q F“3±`„Àwj@Vþ(AØ‚‚Ђ‚¹¨ƒ.pƒ08Cpº„R@.ÀCÊÑ…)+¤h…[4¨Âo\H†¼vD|„H^|\¸„KXGp$X‚¸˜…Œ$44PЉ|HWà<(“,ˆ’<ÉEHɤ$H.à€øHgœÈfdÇEˆI˜JGÈH DŠ\WÉ4{X0°ÐË”]†ìÈ äI D,ˆaвÉ9£IlH±K¥ÀƒˆTXZC@€…EXƒU0…R$ s\väV@T7@Š.`‚5¨~TUhÉþ h€´GZ@…Àt^@T@L¤à…0¨4HT¸ÃdOЃ&¨W„5@Sð„E …ÃÜ‚ Ø$h€R …¤Ð¥¹k°…f°lø¸€`žEˆi°…W`3ؼ€8[øHÎQ8ƒ„4?8«Eà®I0€XÀnøaàN²ÞdÆ¡…;ÑEЀ‚eÐÔ]90PŠjd“ht 0^P‚R8ˆ=Š0@…£+ÐB1ƒ:CбµúJ nØ€)в˜d`Š]¡WN~æéDÌ\^,È‚Kþ¨ÙN¨Ü”Ð.¸g`¤ð`<èGk.Êš5T` BæßN HOJ>IWõÕ‚Ugä_v$ÊBÖçxv¸K¨{tÍFdŠD=VÖÈB~>J†µ›pÛ¢³1e`VŽ&ˆÚH(ˆ£AéEèÚ3DD¬(›®]鳉„’ÞRÛ¨ iMÜaX$3˜¹“x—‚¨Vš:#›^ ¢~—Àð "¢†ˆŸã¼é’>3€#hF³ (…X¸H¸¬l®ƒU…–ì„UÀÍ‚^´žÉ\X&XR.ˆÈL&XAH…hkþ.˜Q°‚Rˆƒ¤ ÍÖÝq lVp„Y¨5`Z(+ÀRˆG.HËH½$(7 ÊÝÅ‚Hº´‚;pƒÎXÀ<¨TX…Uˆ=à€mG …RØÔ®T(u…TÀg !HH†ø¹ÀS NJXN"1fML "è†ñ-f\á?˜‚ÀºV\!3 h„]P†jÙX@°œ]‰J8è AhP5øm°Jðƒúª]€‚¸é/ dતN(?°F£FX;7›/À•OïƒhHcH†\†A`fHþ€“+µ)Ø ¡†°Iþj’Ë_kÀ‚EàÇSp,He¸þæ _@»¼Ùu„]Qr,€-Xƒp= Z@_Õ,Zp„5¨ÀD …@Y…Zp …,‚\eT¨ƒYX•­sH @YXXƒRhË6å6ð„T@„"g‚\Àˆ,àà7ÀRèQ¸%@D$P‚榆) „Ú† 3X‡­W‡õ8.oè`Ø‚€G  ACTßk؆+p€þ°† ]f njp†e˜Lp1þþ#23g0öýy„ ÈLÙ¹kp†``o`LæE0`€0hp¡ó3øLƒ%(;ã@  ønȆJㆩ,ˆ@dˆ„û~„d†Wƒ¸c´[ø$°H€X‚ü`ã¬XƒËáxX—žÐ)ØÂñ2Cnœôq òúìÈEèæo^„,ðTš·T”Äs‚…»vN V@€G&sÚ®4¨UhÅvUtÖ+°ËÖ¥GTTØÀÃÍ^HÅ^W( PU0WXô³÷„à×,Ø=¸7P\­¿q®tÄv*^„JÀŽþ8Ñ]†ð°Á×…ð8ŠbHÓàÚuf•çR`ø"HúV€ ¨†)x…F€{z„fXjH»·Ø'2Ø)3`À3ðåPȹE µÙŸ`±Gð®uOð‚`p¿'†G`Z»E(Ž §<¹n˜`€`àŸ‚(öÓ©XÀ„éL†mÀ¤Jøªî™€s Ä)Ø…©Ã—€-]§ÞzÉ2ùÕB$ðT(° h,p,ˆ7D d€XU Í¢!¤T Yô ž AT,ŠÑQ5.-u‘(.‹Â`Q!ˆ—Ĉ]äêD‹Å_)¨˜E+Ž•Nžþî4ÐâÆ–\CR‰`¦†,T:ÒB¡eŽ-$]•âÕ!W¸ðÔÂ%¨«5Y¶èÁA+‹(X(“j¹„‘#‰®Â¸*)w.ݺ‰P¸° ‘EÕİX´cÌ f± \X.[S„øÙ1Ö£ˆÍÄà!£ß^ùZ4J£b‹z]ó0(˜\j¯ HØ-‡jTP¨6!ô" ¾fìrfæQhhÜÛ¶‹RD3À$Üõ €È˜W»$ø¶ÁÁ0K*É5íBT„´ê6X`‰¬[ËîaÊ06*%$$Á*Wˆ]°C_¾`C5sE¢X‹„@!„àK&±h—þ…b˜¡†rØ¡‡‚â†kp°€(¿  Š*$r«¤ ¨ˆrG‚ ²kàáHX,°Šr ²F ¢ ‹(¨ÈÂA ‹àaÅk´U/?i )mÀ˜Ê/© "ä"Žˆ  ,bA9ªÂ,HàQÇ/µ¹"³X‘)‹°‚ƒR8è …ŠHX±Æ7˜rÃ*”ˆE¼œPgˆX‘Êž&©bˆˆ a7‹\óÈÁÌ'68CL?$33ØÄâŒ50 Ø°Ä ^˜±Ä)!cƒ-!—„°íâmÀ¼"@ $‹1-ÉØp…3Ëds 2Í|‚þŒ±‰-cL1Ì´jK$8ÌḚ́„+Ü2ƒ\Õ@3 ÇØ¶¬PÀ\$( /&É`b Sp“@™0²È36„â@+‹äð‰Š1Ì7›’\²É'£œ²Êh”R--ÂKBñ2’†hÒ ˆ:×…†<A’D¸QRÐ%ñLÎAh˜4]A$³Ó%]£Ês±° ôÕa$ÚA1!\qE1cG “fF“Lr…Ù ’@DTBE1]Kd†a‘øMÄÖŒqÅ$˜}“0@M$kCÉáÕä  Ü,|`¸Ù,h>É‚Ì@;L’€“D2 PþPŒÚ“ˆaM{rÞØc˜BnÔÜÒ 5º½!°Ä$²°ÃÕË3ß¼óÏcè†EA_½õ! ¢G•×_ïÍp¾‡±,ññ\D\ðɋ߾ûïÿüóÓ_¿ý÷㟿þûgè‰3/ÂJP‚'$2„_lˆ*ØÞ…Q@ñ‚ ¹@SÌ”ÀÀ 9‚ Žðù·ˆI(Û"€4/ኑtB‚Ρ‚.â(€žÊ(_@pÖˆFsXÀ ÜnÊ[D,„1M@st!ˆÄâR'¸-"0€{&á‹Fd‡Y„6×IºãA@ jœ'=ë)¿ ¤ ©°Âè´T`aX¨`±ˆNÔaO—@Bº4ÌâqXÀ¥ÜÒ†TÒ)°î ´ -dþ:.B ¸€WpÀ…¢^D†P ŽÞMˆX<©6ˆÂ Xp"ê°…;  ªhÃXá Up@5à‚ ‡;xT©0S¤b  .œ‰V$ã©„üf`LŒ˜#ìÂ6P5p F|áŒp@2ÀŒ]4bŒ B/± `(ÃÎx&Ô*8Àn!Ø€ V o €Àp€"Á? ÐE,FeÏ×Â6¶WC*<„p! ²(¶„; )—BCT Ž¿ðHIT± 8hˆ#±Q¸! Zà…Pþ‹`"À*@€ P Wà€¹%ÑÂ*щ¶ a!äTáVÐb©….ÏYt ®X@ V±C\âDÅ…'RP œÌ" wP)D1L¬4SÈ–D~ E@D蚀H ЈEXSŒFC DÀ|–AD@”ÀTA ¼@ÁÈ©œ]@´þ Ì*äPc4à$]€À§.‚¼D.B @DÁ3HAAœHALmNV€"H‚¨AÐAØ ¤ Ð@"XBAÂAüÁ8Á¸@˜ äxréãZk抙9B åVRzë"ÔÀTBÉ™q-B.W]¨ÀR0x‚ Œâ"¼ãÐxW¡š'¸. A)Øèê£#Äš¨‚ AœT¶jÀ‰,¬!ä‚”è€mÅ*ß,ä*ä ÂlAùÒ)2D@£ @Ôæ­ÂÀtqš@ج B,B ÈA@A °Jö@þ”A ¤ €@ ð€@@!P$@㟖Ä8Á5@ìÁy~@ Ø€J‚GÄØFÄ΂kZÂÈ $tk¤ÁÝz$(@XBxmƒ XÂצm$1XB!<@ˆç"T@ HÄÄ@xã,0#Ö¾A4£$d@\#´ùÞ¯DßÁ@ 4ÓÆÀ €$D@!X‚€8°À€û‚yNñH3ÏàÀ4€Jü¨l…5À°(÷nÁ hMo ëK3ÁìFDyaë-‚!L -°÷²B[¤(÷ž€!€…S[@.àþ@Ü)\ÐWp/šd°B-Ô‚ÔBP,Ÿ0Aê‘B Á( ÂÑàAòé@ÄâA'‚;þQ'˜BpÏ3D!ð, ÌAÂC‚TT€ÐŒ@—Ž€%ÐAÄ”˜f~ÚA@Á|ØA ô$D §~>¤pŒê„v|À¤4µBDD6[äDÁ0±< Ä@@ DĤD<”Á¼4Úp@pi ÀÀf—ATv ð@ TÀ@A, p¶ôÁ¦Ê*I»·Ê T*ÕZ0Õ·]ðÌâ%þ0­uô®Ån¨]\Pu5_ÀÌ´žøH‚ÕžA{O§…XBeI|@Ì&©fv…_¸\¨gDÁ†?CfwÈ~‚°]<À€D°ЉËŤø\”AO¾wŽ«ÌÈ#¡°Â P%ý\‚f†d÷µZ¢H¿©²êø“Cy”Kù”ç8Â,ü•sÏ„­–{ù—kHÍl*$"˜_M|'‡-˜y›ç8£¹yʸ `ää1‚&@ëÀ¨>€ž{6ðA@3ò”@3 ( ð@ÛZÂøí3À@@gãÆù¦[Þ,¬ÂWrº‡|@Üþ€>Cô"4AøÀ€ÀTüïØÁd@ÊŽm"ô)E÷ täØ:Á™ž£ÒÌ!ÈÁ GÀüa‡ú³ƒ™WÝÈBû†@@ˆB ãÈA‹—A˜€y›@næAdr“ ç"hä"¸ïBmÓ@ô!´ÀÜo¤m3Ž€äÁ‡W{ÁŸQ«|‡|@cÓA3~Dñ"‚ØbD˜@HTzZmìfÛ/ ð¼×¶Ä@È`@àdqK„ ‚ÌA'üÍ›PàÀ,â<]Ðv €€¬Z 86d@!H.ØÁÃök8HAì!8AûÌ{ üŒiÀÁ”ÁÐR#DÀ°yÏ«½üîÚÓô2§ž¦ 7˜ÀôÐA €@Í/BŒªrb@/š€žÿäwì_ŽÓþíã~îëþîó~ïûþïð ÿðñÿñ#ò+ÿò3ócH@;libjibx-java-1.1.6a/docs/tutorial/images/user-methods.gif0000644000175000017500000014670710071716566023300 0ustar moellermoellerGIF89aNŽç:::‚ŠNªNv¾v–ΖþºÞºŽŽ.–.::þÒêÒ‚‚bbþªNªF£F²b²¦I¦f²fŠŠþâòâ¢B¢ŽŽŽbbbrºrFFFnnnŠÆŠªªþΚΞ:žªªªªÖªêöê"""’Ê’ÆŠÆVVVÚ®ÚJ¦J†þ–––¾¾þÎÎÎÊÊÊÄâÄN¦N222vvvòúòÖªÖÎÎþ®®®êÒêÞÞÞþjjþŠŠŠšššRRþ‚‚‚·n·–Ê–ÞÞþ&&&ÖÖÖÚîÚJJJæÊæîÞî¶¶¶rrþžžþžžž–*–â¾â..þ¾¾¾úþúÎæÎêêêºrºvvþNNNZZZ...ÂÂÂ>>þ~~~ŠŠ¢¢¢BBBêêþ æòæÂ‚ÂæÎæffföêö¶¶þæææBBþ"’"Þ¾ÞzzþŽŽþîöîòòòîîî""þ>ž>ÂÂþâââ~~þŽŽÚÚÚÖÖþ®Z®JJþ’’þÒÒÒŽŽþöúöºººòòþ† †RRR²²²›6›Ò¢Ò†††¦¦¦***ÆÆÆZZþ666>>>^^^öööââþzzzrrr»v»jjj^®^Ê’Ê‚‚þúòú’’’&&þ®®þêÖêòæòþÊÊþ66þ¦¦þþúþ—.—’"’Žššþööþ6š6z¾zÚ²Ú¢Ò¢~¾~Ú¶Ú¿~¿¶Ú¶ þ¶j¶úöúîîþªRªîÚî&’&úúþúúúææþRªRþþþöîö††þòâòVªV¦N¦ÊæÊ22þ**þÒÒþf¶fâÂâ²²þ¢F¢NNþFFþþÚÚþâÆâººþ^^þ“&“®Ö®Ö®ÖVVþ¢¢þΞΖ–þ¯^¯š2š†Â†ªVª‚‚ÆÆþ†Âffþnnþž>žŠŠþÞºÞǎǾz¾*–*²f²1š1 † Ò¦ÒZ®ZA¢AÊ–Êa²a††²Ú²ÞîÞ‹‚‚vºv¾Þ¾9ž9l¶lÖêÖ¦Ò¦ŽÆŽœÎœ,NŽþ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cÊœI³¦Í›8sêÜɳ§ÏŸ@ƒ J´(P8TPòª£#ŽÑ§P£JJUaJX)uâõ+Š—†\Žtý:OV}¶€R´yQŠ#×é/ p«êÝË·¯_‹8Â" ¥_"z4r1"ŠJ8 žÁ¨‡$„pJ` "éÒ"„’¥‰@‡ÀŸÿª^ͺõÔB¦á@èWœ4¿àŒ®S‡«lÞ•ÄÆIª;oß¿Òðöq˜` GutbTH /åTxIz@Kä—Gþc·®ƒ—Qê‡ó‹•ãÕ+·ëº¾ýûøGb$†£&¿pÑŽd@Šý¢4Øc¿Q a$¸ œ8"AJ@7Ð%$w ƒŒxHƒñK "¬8ƒ#ñBnàŠ4Ñb'DP„@pP_|—ß‘H&©¤B8à|ᔀ*òfðWÇ —¤A b…¡ŒT\[tI%!:§â@JÄF‰qè€A uà N±¸¢T¼ Èa¤éPÇžTÀAD"}”>ñY=P…#‰,©é¦œº†‚$4ðB%•¿ÀöK àáƒþb±a!ÐEѪ@ˆl8ÐsB—EpðEiT”&Ÿ~þ‚ ¶•F-ÚBìIrÄABûË¢vëí·Pí7Y¼pꬱ©*˜TÊ*P‡ za›p¾‰k+b"üÆQè±-&»l³xiÚŠ‰ôðÅ@XTB£¶Ü‚+ñÄß„@2E»¥[ Œ¸ a»Âk««¹Ä«@upÉ/3`PP±#Û¢²Ì>ûﶉ´ðˆSpp€mÑfZñÑH'}­¼‚B‘§v¬jDh C Īõ»Ðµ >(Bï»dðÖÄ3!#"è€G ‰ìl³@? '^¨§cþ£”ÔA0<\´Ò„n8F… ÈÐF-ºÏÅøÅƒ°r-­(‚…®ï*Ž‚Ú¹q‘AƒŽø@3À+Þ\w¼T •”i"Pø˜à<®ûî¼#äTÄqYnÕ²×}ÃÁ! ÐNIbx•  F`°8PA „=ȺP@q°Ÿý|À‹E|eW„ ¯ ƒ\â þÃËMÜ•b!puèý‡4(ñLäEÌp„¨M- „ý¢àÂ.zQS‚ƈ2h\>X$^0FD|ÁÿƒY â.-ŒŠÀ× „KÌ {ìãE0 Pâ„€"ˆÀ.(€œ’ 68äå q€÷˜òÅN~‹Ó DêüðhJ¢Ð ¸j ¨NA4È‹>D¡¾Bn„7]†ï—(ZP3DBmããTã ¤c3 Á,^tÀažÌ榨¤„dáaèá"ˆ …B” ¼ðÙ7]YÙÑQ,’ Añ¢µÍàˆöþÄÂgJ@† 0âŸuØ"®€ƒNÕA •€DÔVK%ÌñMƒ¶’Ó‡GD‚ }HÄÍŠ`>#Á¡ …AAµIR¿pT ƒØãˆêÀá -0Cc¢ ±ë°“ Wàœ@Üå³­laÃ×/€šÇ_0b¤Áƒ¾P6MÕ_ÀA%20ƒ DB˜Á# :ƒ,¼H1wbj$ÁªýÂ?È‚#”P"p èæ%WÒºNEˆÄ¡ •†µ ¤Dh©Çسˆ›ÂÉ•JN"á.7r¥ŽÀŸ~Ñ„ÈN¶ *Š$\U-xçE0–’0𘦊„Q„4 V øþ Á…4di@$à ƒ+`A 0à  À,À€ŠIƒ…=»:÷'1<ñ‚8(âG€d‰FÌà;0($ÐfØïu Ø¥ŒÜ%‚ L.°ˆ€ëfp„È—¾¿xÁ#è{E¼1 ÙÍBó“¥N$¡ThB ÔöÚ_@"¼øQ‚ê@ ¼€ƒo«˜D¡Ž ¸¸*"`ø¹(þ‰÷º>ðK =Ж$| …Øtæ@x¡D\…€ƒŒ– ´@TEhƒ\/,ÙxuhÁ%ÌЂEˆ`Œ^xe’xÍö¡3€A$f ƒ4Ä7†þme†‹íVG¸BR"€8Dup ‡¬z¡¹)ô}‚˜^ºSqèD€@H°¨{,Á¦õˆ@á­sÄñ% Ms>(š°¸çÌ`\X"()èV»º*MqÈ€ã¢À ÖZ~µ®w½)Oståµ°‡$óûØÈ¾¸ˆà„̶ŠrmgC›!J=I¢/i¢pèþ¬t!ÞîCšìv³&WHcK:‘…EÌ€Ý Ñ‚#n—Ôû iAÂ`¤ŠàáQ ˆð…GD{ " îBt0ƒ&TbaîθNà€ƒ&D 0ÈSnþ`P)¸ÁP@„+aXŽÈ@c®þP„ ZÈÀj;€E„ Žà‚{’s<|W»ipÀJ$ŸX •"¨2Ðà’ÐÍ× ºA<´Ê ˆàŒ¿B‰aºED¸±<—÷0ÑgDðghB Y@ Jà€‰à0ð‚J@Œ ¿€Š z‚Üñ&Èm"à‹@j¿PN@\WPknÔt3 —P4F\lA …@\—@à8 Q;/à*•m A dÀ"Pcj÷WƒÀ’ŠÐ>€EmÑ&wecÔ„fNþŸ%À WTÐ }P,‰ v.È4bC‚žp@ ½T'àF ’Ð@ •‘°JÔ †¨”ŠqQ 'tQk@ ÍU„0Ǽ,\@\„""À}Úwf ü‚oQWÀ‹pTáu3"Pã• V9eu€Üذ‡=ò÷ ‰  ·Tdð]: Œ>MF]X„"X€q=pN”ØJ“s‰ Y€MŸØ/Q‘ZPŠ{vUŠ /H‰@RõŠp P!T°·•'è¡Ðp@`ôqŽPþQ\€œE?”Œu`#sΦmmS-0b@MæÕd /œÀ—0‚ë¦\@ ÑOùJ‹"€T€Y_ ] c”° 5$”äFT€‰xЂTQ4ЉZ4àYQ Ž`:憙’€\€Bˆ( ”ð—€(Ðað_ð_ÐT‘ÀL•€GÐ ¹ÒT0_pdpI¿àc… SŽÉ!„(Ðà‡*™_`5 1cW€ f¾%K\ÀG(@˜‘É€(Є<—,Wà•€¾…^þpÉIZp ÿH ’ (E•Q€™â( „@ Êc_ D?âi«‰•œ ¢q}Àlqð/@I¼þY˜Á ¡nQvJ÷EÎD  Na Ôvyé–隘´·áJ…IÚºqhÚQ=ÿ“Ü–·Qn…y!ªq•0¯ff`c%0£ Ñ ôHb1-|Tn‘ ÷„ .©M^jÑ@``&Ú (P 8Pn‡I8/‡JN¡EíUx0<F‹ Å|A´PIšTE`}ØEPpl $ u0°]‰rjã?QE :þEÀTPHѦÁ q’ ¥[J8˜ ŠàQ0@Sa%ð—q¦±Gq˜ƒ« W—Š„ ìQrú }ÀGJ‹a3f­•›&3³^Bf€àMP­ªçõ%ú öh½ À&± Lð £ «ð ‚ð  ÁnðÚP hð®à° ! ¥€ Áp 2! Ð n€ "áÁÀ¯þªz‚8À >Ÿ’ = d0 ò ¡¦Tà <(IqLp9¨ø•ì§=¤JW #«ö) þ=4KŠà/Š ÝW(@ Ðd^ˆuxðX`©  ’%@¥(ÖPà€¯ ± Ú![  |‚@µj°X‹vÀyàš`a›»p @ ? £°à  á«à KP ÇÐ (¡ h€m@ £p .À·À70š` 7p Ò°¡i€\ö ñ ŒZPa¹œw±T h*MûVqŠ€î À80D‚T@a {tGÖUƒ4ªÑ…@ zÄç09…\0ùiW‚P r0 Ë€ “P šÀCð ½€¼š0 ð Ӏ˻ ªþ  Ÿ° Ò  P €¼ àq+«`¥@Ó° ¥pC ´  Ú  .À° .  ¶`ð ô¼š€ª  æZÐ Áp·p½õ[ ‚@v0 æ€ `° ô» `P@€°t° |€  t ¯¬ ¥Óð Ø°¸¿0 šàyn`Âà¿, v@š  7p N;‚À¥ð Á>Œ HÜ ·`ÁÒP¾1  Éû CðÏ+Ò Í€eKŸÀ½àÈð |¿‹ë¿ËÀ|p “ Å£ ¯Ø`ŚРȀ ýz Øð <€þ“ð Ë ½0 È€sAzR‰œ _ÀC /`„’Ð[rÖ=û¦( Ž»+ªš/P…‹^ò‘pp "PÐ8°|ÙU˜'{:À¾ø —àZ ¥D•y‹°°G࣫‰b·ð,p {@¥0ذâ0 ưËp â0 ;°{ð ¿°žPÏ  Ëà æp žÀæ°Ð`   ×pÏ<0 æº æÚ;p ·p ã  ÆŸ p ,€ ΰª ÚP æÀÆà …K`p àÏpPФÑë`7°þ ÑÚp­½ÍŸ°Ò€Yû¥àæ0š F m° ð 7°và P0<ðÏ@ [à æ ¿Ç@‚ ¯L‚à ,à Ïp h` ´à rÀ×` ªà nÀÏY®{ð½ «p ×àÏ  â ¢°ª ÷| à»®øj´Àµw½,r€Pð|ð Ëð ϰÓã;°K Ÿp Ï {°¸ý øZ¹mRZ]E’P d0_ÄÄÊ,Zpó„/ð4Pš×'6©2§öDaÁ¤ÒpUº"€yv8,Y WþWБà 3Ç%ja_Ð0Œ°-*Œ`ÚI“p ìú `Àmà à`®È`à Á È ì: P° m ‚àyà¢àÇpÈ@®@ÓaPp Í-«ð@ ‚Ì|`Ó  žÐ ¿Ð ¾ xKªp“p ¢`íîPð h`Ú``žà D½|Ð Ÿð ´@ ¢°¼t Óp Þ¿° ÷ žâãÀ¿,€ Ȱûú XŽÙKÀ°‚`Sî,0o+ ×  P°Øp rþ½ ÀžÇ0þv ã° Æ ­¢íàâ¡ r0¥ð ë;ð Ò@ß<`Ï v@ à ª`  U® C éÒÙ°£Q’‚8.3£¨ Q}Pndê;ÿSK¨g³Þ¬¦܇/YRë®»ÐÆ€ ÎÐæî;íäDý û-Ç mp qkÙž°P+Ün`P! `ä­ ±jð ØÀ@ ×`v@Î{@âD|xKß-nÔ·v Ͱ¿ð,àæðîñNÔrðñ r Òp CÀmÀ€rðçQ;â8ýìõ*¥ »0 …½þ¼ 1æ‚Àãü:å¿àæÐ ð^ C° 4O¿ ;°|ð Lp“ÞÀ> áÜ.<0°‡î C ÙÎáê~–n.  Ò«°ïv¡ÞÞ±r““ëC±¼Ú)peè\»ð žà£ðÌP  ϰ.ß ¥  np Îp /ÍÀͤÐа€k¾ÎðËÛ 70 7òJy@ Úà7.ËË´À¤Àtà j  ¥0Âr°H? P®Ð`š€ æ@Ò@ °¼ªðœO Ñ£/Âæã¿Ðîâ ¯.ÐépíËÀý»çd¼ ¢þp½Ï 9Þß.È>ÿø ¡´ª k» üL +í½± ?` ?0Ç`ðòØÀØp¶;  Á7°ø£pÕÁ¢  {@ · ÅØ_·Ì5Ɖ4QÎÜ¢cÎÁmhÀ, eEÕ/ŽE(B§ãH’%MžD™RåJ–-]¾„SæLš5mÞÄéŒ&;vÜôB3® ;Cn,¹ÆãÃ/iK–Ðù%ˆ7¿°õ¬Ð‹ã´k»Xº¸Öèà =KýêLÜ2;.&û1 Q;|VqœTÁÇ`ô Lb¹$WAiÖæ¶_ÐÚ\‡æ×¨%ã”§äÃù¨_ªzº¹U¼ÍµÚä,âìÖ ׯQ_6Î ì‘Zâä„?fT:Òǧc%.©DÑO>$°@\Å+ŽìˆÁ‘Ùƒ–cii—»Nrð—]Êp¤ 7d)C =d ›g†[©Rv"%G‚ÆqÚ`™Ž^ü¥Ã’1goÜEŒÑ„”6|ñÇ—2:éH .Jè¡£ a Žf@a†þRJC ‘˜DI-x!3M5ׄé–e–ùDI6çTþi—àÌc%A¤ù„˜è† plrá“ÜXB•`–ñ“NG_Ò!Š8Ñá3 D‹_"â…E$ù¥Ž,ª”D‰D ähR%Š(©|ø…¡%ì³U 8$ñZ9’$@àø/ŽÒ`Ž>>å%Š@&­Ã$8Qb‘8”äléC‰@x‰ƒ"аjÓ°t*úÐ!Ú8y8ª¥B‰÷šE÷Q}÷å·_ÿ8`ŽhàD‘ ‰ƒ†~ùba2Q„/~I# D~¡‚GáÈG*é@‘1;Ò€ãP£ ÃTNVeÄ H€ð!bˆ©€’/ Q$ !ƒˆ/^þP„H8ˆâ NÉàˆ’´ .á€:€:2*É"ˆ€ˆ~é YGˆx8’E2ˆ$‹K É"Œ¡áWE8oE˜á‹Hää“h0ƒ÷:R‚(H’„†N ‰dä5Ó¸‡.iÌõæ¼ó™D c‘DRˆ_¼p˜*Á"ÔQ¥da¡ä8€u¤#¾îÈ%xñ]‰ÌhIš`DÒ_D@"¨$²à‚"À¡GpX› 0`œ/@Å@ ©ëºN€èD8¦Ä#Ž>ñB’,®Àƒö,:¸„,pP˜èÈÐSY ¬òœ¾þÆÄ 4ý—€AGˆ& 6# ´]p Á_`ЃD ÌP„dl#i`:€|uŽàIàp.$Böéàs(Áêàš¡QÈÃZꉠÄF¢ÀAˆ „b;’ˆ àA %ÀA"¦Å_¡J_@Å,ÖJp ˆáI:À :¢¿p#.Q.¯üÕÒ@B‚ ð!8†#0€A !­,p #Th^š‡‡H0‚Mø"ˆ`ŸB„oWà@²BpaKd(d$tPˆœXqx¢™T.`>@ Ñ3!ˆèPþ€Р XÉ-  ‰‚#8€ˆE´ ¿Ð@ú ´ Ã@6+E’"t€‘zàLÁý"0qÀBŽhÁ (H‹"˜’à'PÀ>3üâug.}€‡ˆÐ"PÐ<`€ \è6“ ÕQ¡Xh€@…NUv{„*¡ÊÒ¥œ*á<$" ˆø#¨KDá¦iXD*‘^Œ(B…Bô¡¹ëÈ"¡ÍB,Bš@ƒD`†> >¥ÄBaD-¾€K „¡}Dመ„ «\Ígþ†Kˆ Ä"a^4>hA2@ ÅÒ@”@¸%hP‰4¡…¨"±AŽÀ-/eR|@½8$‰¨D9Y<œ‘ ˜A"‡yÊ ”¨ÃdQ‚P" MX‘Ì0(B O‹‚ ÑRŒu X໼†þ˜­š\!è)‰`·Â#Ä‹¿ òŠèà á±L:âE p`<Ð i”èƒ&ñ…µ’Œx""€ErRaÈl‰ZD`q`ƒp Ô˜ Z ïKœàïÄŠ€‚/ â J@Á q *ˆ W°Þ z„H(AÊåÀ$Çþ%ð÷ Z{!zJˆ#­ƒXøÂ¨À ÅC(‘¸4´€¿„À@$Ž€ÎÊC»B ”Ûƒ# B<&«¨À0ò‘  $QˆgÁ ‘S«ß0€ãqЬ°:€D€ 3` wç7rä J{Á f‹À³ øx1;þ“jâ…¡%èCIú/½—Ô¿À'PÀ7ZšžJ ¹€ae ªï-A Í\÷*Á½:Ø!Þø¤ ›d89Ð¥]t‰ÀQ  ;‘ˉF«#x Âæìæ*4Á½ ïÄȰ.F@I_p¤2"³ÙЏqYå•…º™„ _øì/â„Ð`ÆGû’š@‰§ý_EXœÛåS„Hüp”âÃX²ð/$"À›Š xAYP .ÑIŒí”èä#²s „A¬êÕ€ s„–aˆÞDÀЗþÕk\Ѐˆ DADH'4 *P!ùŽ•# €éÎ`ˆBF‰…ð‚ PÄZà¡r -PD>Ú.dÀiXÐú8v’¼¹ Ä™ä>~ò—ßü’ êÕ‰hADÁÂÀ pÁ:4 Åã–&ðI³ý‹‚B ?÷£¾B(7ú«?sq@û+‚N /à<¡EÀ(„R; ^ ™+„N ¤R‚è‚HtNÀ8€*X„f. % ?WB!¸"·ó3BYˆŠ  ¦Ž(‚ºr‰N8©“¸®‘‘þ è)B`Â9Â/CœÐ‚ˆ Ã24ˆ€*áˆð*éˆ&p$— 2è¼’«R“„DÀ‚ ` *H,”¼1 -èì1ÃCDÄ•¸DdÄ’0)-èþ„ºÂ€º"ƒh‚xй˜Ûá}ê EèD¨2 ÒDÀ:ôCDÐmG‹?¨Ä&È àà „ÀyóCG „_¹®&°E€ÁÅÈÁ÷ÚžŽÈ¢Fyq¢Gé7€² 8Ø• r"k´«86Ž8;pÄF8€ê·šll s Çé·i„‰û“ l‘àÆŽhGÏANXª ¨ƒþ0,p˜8N¨+Q©’p¹‚…ù ŸÈ‚ GÐp„>àH ßÑB¨™+@Ÿ½€¸³EŽ—N@8!‚+è™#FÐ$3€ƒJP„0à€„#„7‹t)‚f´G¸hü/@G Ã9i‚/XÄ™€:Ã’Ó8‚E*‰»Ê€ ,Qš°§<‚¨\ÃÞz"8%#›Ø9/ •#ð¿ LD8ð1˜Ø9™±,è,HЂ+€BŽ HðB)ò¸"ð5…9Ì.º˜ #J‹ޝ‹ÉÃ'Ò€G°42hêú…,(¥ ¤B¤BH2Åê{/ŸÁ)þEÈ7bÛ§SšÈ€¤(éHhž÷"Îj–¸Ê%á…>Ø#€úFoÇ>P5´â¼ Ú'û²TÁ!û‰‘‰ƒ"\ž,èƒØ àêdÎ>€„R3¾Ü¡J¸EP„<“ÀN¹[) ·l4>.p/`© yKH€&%ÂH¨2ã“(€„v‚Np<£EúK/è°ìIxÛ[NæTÎ_ ½Ú{¥“À€G(‚XõKÛ“Ⱥ 4ÀPôËéN ]Î1¡ ޏ3P> êK¨ƒ:L *ƒ(جÃ<‡¹˜G#QqÌØù…`„Ú9‰#P¢&ðþ"Í €+ø#I¨{aP,É>` «'bRL‚ƒGP/`ÙŒJ¸-–žÔͧÞ433x„H ‹º‚/Ѐh©ƒãt§GÀÒG‰@:‚7µêHˆ„LúS ÆJ8xªN ¸——Û«Nð8ð‚Ì‚б_ˆ2ë*XÉ¿ÃOÁà€‰É£û¬ƒPÕVù¸–²@I0ƒM;D ŽË/X-lôÔêÕ(„ Wý 8´(PHƒ/À‚!£(½„÷Àƒ X$IxÖB xâH((^ÈÓýÖ/ ±ú‚Gø‚Šâ±èÔÛþ ú8ž!»¨S-x„K ³E¨„žÁ‚&ÀƒŒÔ€ŽHº/è„"8‚a Ï>ЀCÃB“8ð8H„:-‚°"EëÔˆ€NÈ4ÐË‚ pÓ…}<@O x8¼¢•+` („K˜1 ˆ€x2¸"3˜Hà20FE£}ÌÁuZ!EÀ% ’8(‰‘„¾±£E`% Ä©]Õqí^”`¸_˜å:PV¦âDè-’:%0x@k-ðc½ ’³›˜dXQ„‚š¡û3x`ƒšQ<`ÐÊ_X¯:ÐP„jöXÄ¢©ÓE íçê³! ”5‰xC‰'¢z†g þ…çz¾ÊE Ib-`¨”§E/ÁÀ@ƒÏ:ˆø}ÚG%x] ”îË ê’ãɳá«áæ/Gw}4éH¿.ÖJ^˜NP˜ˆ„¾%Ã> PC*sË›ˆ̺e€&GCþf€#P·H>ø&,p„  ƒ¿™fI(Ÿ‘ =8‚WéÂû·ù‚€«è.Hµ”+E(9Ê,È‚dQÖè„Kˆ€#@š@ð4NÀÞ<‰ÄáUXéBàÕˆäÆH°nmE@諘½!•V+òAÓ¨’Õa„›+‚6~Ökø;.¸ç&àF˜(J2ÀàüÊBÒ"x”yÒ〠ƒ@ˆUÔ.E–ûŠ,BÏæñº-À¡:ˆ‚:¨ƒ4ˆçiIþ*r íX„£‚:°7°7-H$ƒu«P¡‚@Ðé 2“háP—ýX<êDKƒ:€$w•ˆsç±,o—;‚0—„:h+/-Èò>\"Ä-sŽ“{;s,t&w‹> I(‚8ò]©-“Pqtoþ‚(€Ò™†x{öKD——9p¬tX’óé„>Øç‰s8¿Á,¯sçÉ7I=|4u—Š õ.I–æ”à/@æylDh‚‘iö™Ð‚úíñj·öœÀi"gt•‰ïš¸4¡°¦0 â ŠƒpÌ:P"PC"ûö2‰4ƶþÒ!²  ")‚l£@wþ…QœçBpK,e8 ºö„·v&Wx )ˆðñn3nó%þ©”Š©ogº& …øf‹¥p„ЉO3€øP¦N(¦:€øH Åuj=è’­B{gRC<¸§J`yE‰¦ÄG,À̉QGè0M‘)38ÀJÀ€|#‚¡Â˜°mø™Hƒ>èƒr±úÍv‰ß¤‰4yó“(«¿wv) ù‘IóË:¥ ù<Àl†÷`ó>HG*Ø£|œô¤¢û‘ˆ­¯ö&x®+¸È6lH‡aíõqÉœ¯…1/ô"Ƴ{&Gè3 (˜N†Fˆ€ÇŽ‚þÔŠþˆ Ð  ?(4—=·$¾ ƒ_ ] ņÂDP„ ¬(^á2àÖ_ˆôBÁùPÇœú—0±,€*øfuîgɹ3Üc‰+""eÂ9‰J ²|óG F¼á…(ŽP½G‰&-ðÏ“à‚HÇ1O‰l´ ^ „JH¥/?(ôˆ_ˆB¨ƒ@\h$lèð!Ĉ'R¬hñâÄDðbTH‘_"Jü"Óã× ¿êd9)É>Œý’´èa‘G4Â`ùƒQ“8/~䓊ˆH¤sE‘Hp (T³&Š+/Ã|Aþç¡#9' %8a9âˆK _h¤å8¿x½¨ƒñ/àÀ‚[”dõ<:ÖÁ“°Ž"—¿hLgqBÿ‚³Y •4¼C¼ôN*E%jÈZ Õ4%á¹4CwÃBŠú@J$©ˆ/ )úš™×/<¼¨ ¨õ@Dˆ×vxG}J(O˜†úyIpâ@wÈ+K%ëØySѱޯÀó5tÐR¢NM8Ò‚nügtqøE…z:̈—<¦È "PG†j(˜Žˆ#8ˆA–DS„¬”MÑÀÈ/ãuÐÞC8@B !þ$ÂP‚ ¡Õ//@S¿DF µQUˆ$X0ˆ‚X"µ`F>ürÅ QViŠh Ð%Жˆq]±Ð/8´ A VHÊ9'ÁÑBWi˜ DÑC_pàd’ÑRM®qठ@f”ÀÉ#*‰#_éÅŠ‡‚"” ¿Ä¡#d<‚ˆd‰@ÌpCý’Û/eŠ:Cøˆ}0ð0¸ÚÓ/”À#bµ0!_(|¡  Åò²i ½ðE*A ÕÉtBÉ 3@¢Hy é@ŽÐ ŽDâè¡ÎÀˆþë¶‹Áq¿FGiØ%hñ sœÈûK")B²H!ÎðÈ%߇/—Œ†$88W'Ë-ÿ%B— U!a<’‹É%Ž%pàE= `•8¢¬,P¤¿t Tš!]‡àÀK`ñÊñB„"¼Ä_ˆ(+‚A„0A ¿ô XèÕ$=`AEð‰#„ÐaF%Dq&¬(D#JÄX.k¾ù_Qp@Ý\l4Y a4QG ±dheÈ"Ž 2¼ÄÝÇ%ŒD1T‰ÀÞ×ih…Êâ T¸»q’Ü«þUd â ¬·258$IÏÐ*Ý÷È·PZWIå0Ôñ–•¶õˆ¼EäE‘ó‘|QŒP²ˆžYàÑC 0Hdá -àE؃:ÀZ‹ÐA2@ -ˆGØÑ:…"` 0hB÷8€‚89$bQX BÄ¿T¢8q‰ hYy#œ“"@‚„œûáæ¼JÎT"èD…ðPˆDP"¼èƒD€ƒBÔ!ŠQ,‚$A .ˆ T·²Ü"DˆHpˆ¢%! œqbqˆŒ©” Å(êÀŠ8¨Ã"A%|¦w˜˜{¬(‚>D§ > dZ@þN‹èƒUÂH &™Ji"&3‰2tâ+@Ô/¼À‰~¡'«KÈ¡\€(‚3l‘‹²°7‘€ TP„ŠQ‚PâiÀÑC$Aí&+ #Èë¥á™ AF2b¦!¼Ÿ@€@„¯à™­44ð|¡òÚ,% ,p@<ä©IÂ@6Ht‚•è@$Œs…}’€@à€*œD‰ÄÍäªHsŠH§@"HùE pˆ <Ì@„„‚7™Et‡É$Jå N„'¥éƒ#˜åÒ¿èà „œ)NçÄ‹:˜ÁO”pD!¨Ð%˜Žþ ލ„$ú .è… ä£ÂƒED~ [/Á‰Eø“ ¾+P0((¢x¾¬Ä¼H±RGuKbÈ@Ð1"@âð…}Wˆø+"l•¢à šì`Z‰E¼ áä€⇅(ø'œÈN±êàfxA4 %ôA "PÄ=óYI¨§&@†dÁ/DЀˆ@3´Z BÛ„NÇ2‰`„ô"J<²—`¬äQ „´!(gDu{Óœr#i8Mw'Â<à'¼‘Ä…Ì«^À¨Qx@AúÚ‰<â…ihÂJ3ÀàþÈÀ”‡½¶JPD ‘ÃD€3ëÈð ôÈ Q‚ï²!qРn_Ð_E” Ÿz$¾ô5 ÷À dPJp‰ô7 %†At" EÜ©òºB.q<"3ƒÄž‘a%2@„&!Æ{Å(q „<„,å…$a(‚È ð`åÙ‰˜RzÉP‚ÄÁ þÂ:†` !vC ¯·Ð€ÙÅ*‚èUì¢!‰þ!¢1òh‰0ºe•¦È.2ÝhH':ÒYŤ»›†>ì ½‰ClR„Ûü¢¸q5†žXM‡À¢€þ)¯¬ÏëÃÀ0è1}Hžxõ  Gq( ú@£:üz0®î«#ò(ÙÐÖ¾ˆ4Œñ‰„”â¤`BB°± ~@ ‚œ¡ŠP7Dj˜† êäîFÄ["¥h¾ÎÝ ãf>°é‡T טĵ®põ*ÁZiÁˆ™ÓT/\ỸÅ/ÀÐè‹g\ã,¨À*â½ d£éÅ2¬Ð0€Ý ay£‘¡i$d-Ô°ï“Kc ¹ÅÍÛ …F|‚X…ÆC.]ô‚ÆèÅ/l.A€á‚p¹Õ«. ÿâïÅ8 €p©gÝê‚@-ñf`C `ÀþøË5þ‹%4âçZ§ºÙm^u¼áv€º ¤! >D Í€zůøÅ3¾ñ²ƒ–°qüÂ?øE3®ñ s4cj¸Á/&…`ü¢ÎPÃåK?Ž=8C.‡¼41Šf˜cÓ@8áŒ=|à[ Åà}‹Ó7ÃíK`½B- s,ã[øÁ8Àƒ=ü`Ch„ä öR\c€Æ4°g8 Þ ÅéÇdìa ’·Â$¦¡OˆýÝø0òƒC¥ØELÂ$¬ž3ØÁ/@Ãô9Ã8´ˆÂ4Þ'œž& ›þ9Ã4ÐÁ,€6Hž ð€À@XhCþ4ä”ahH\–ãµ  ¾`Â}-ذ8|€'ü‚ÈÁæ9C)ÐÂ8„˜Ü. ƒð  lÁ¬Â$¨ù Ä(ì@0€ƒ€ì€8`C/Hƒ $a3@ƒ°€`£Ý@<ƒÕe ÕmþÂÈÁ(üÂ@-T€€CØé¡1 Á|2°€6âTÀ`Æ=ƒ ƒ(´š)ØA3,ÐAØIÃ`C Þ&î€,€4ìXü¨ÂÜ™ìÀåÍž ìÁ`ƒ4@C&ºÀ”4ˆÂðÁä8°ÀXA#Ü€:È<Ä'H_J5Áþ[`´€QÀ 5V£5¦T)<4ÐÁ|º!²émæõÂè%„ìÀ/ÜÀ3^é=D/ü€(@*Ž‚|€@@Ã58+‚#è%„ !2쀾cC|À€æ9ƒšËƒÊi,Á)â-@Ê!^B 9l[30$2È6ìÂCEZd;®áúí€nŒŸ1˜Ãò•BÔA]#l@hÃäÁ.x¸$dÜ/Œ‚9`ß @ƒ^C£ 8Ä.ü€'hçH‚ÔM«PÁ"ÀF} ÆîH/hAÁ ðBÄFÀA‰@ Ô[ÂkþAäe"tÑ5ö¥_þåD”‚( Ã'ˆ|€6jB8jÂ*ÈÁ4˜äèmî4CùíÂæ£&,ƒ<öBº Ü‚,À 4C3ìÂ'˜ÂÆ$dNƒ×e&8˜ƒÀÃ8ìBç5š œhBÔ¢ LÂ-x‚#>Ä(°ÀÿCñEaÛ­)ü@oþ&Ð ÃÄœ¨BhþÐÂ(Ø9Œ‚(Ø£ÅÛ4ì@È}ÂÜ€ ˜C¬‚mnZUþAÝõ)eC¨BBBDømŽç f왑d€"ÈÙ$¼È¼'”À²øÀèÁ½8™@ø”8 þD!,$DŽ&Ц¨5~Àðãå¡(Üä2°À1ðã |@#<ƒFæÁ4ü^#€°À\ƒ(´aRÊAO_Š‚hƒ8˜Ã°À3 C/0©(ŒÂ-`_ÚÑ6ˆÂŠG „C#ì-xB0$PÊ'<ƒ 4 „$ŒCE¢âCPb#2@C3ÀÌý‚*€Ã3М²ž8¬$*þ¦((ä/` zÂ-Z9¨A3 a),xÛ5BXAEb¥@` 4ŸŠÂÔÜs^ê±Løi¤LL<%( `AüÌ„DP  ð þeüZ*EÇ,Sˆ•XETBdŽŠf«¶.ž*¢4`eÒ Á- 2”Â$\4XŸuBúBÆ Á'|4<„IÒÀ]/¸@„æ(ÜÀ$@C¢ AuF»º+ÆM¼֫C¬‚4”ÂìBÀAºþÂ*ÜÀ ŒkÈݨ ô»†iÍm#­»bÜÅÞ@/ìÈ}@ÇZ4@ÇZ§@¬Â6z¬× Á A«ÒlÇZ,2Œ‚Æ Áº"ÞBâ Â5ƒNº)lÃ>„3C ¢œÀ!ŒBÐtì*p@'`A Ì@$ä×/Î/@ Ð@ÜW eXÇëèÀïDþˆ–_œM Ìå¶î-ßÚ4°¸õm¶®‚˜ƒ(¨ªÕ-¸¹€6´jD@CXÈÎIøZ/À])ÈÁ?ΰ ÀkéÕë “l ?Ä-@ÝÓúðoÈ29˜! ”k«A¢åð8<ÝÉÁÝË`¦aÂE&ì@æãÀ¹°¡1?8,€,€'ðÀB36hüA§ÞÀð<婃Œƒ8ƒ',@¨!­ËAùƒìA#4í5À[C\CF¡lÁl'88ÃÈÁÓM¼±*|)x‚ à ®ÕƒÊý‚6B"`AþZ˜wJwBô€#,Ð ˜ˆ…²¤:mgú%à$È/48†iÜtgµÐ h4¨[”€´#pA `$ˆŠ#dA®Î åàpB»+B|…{Á tw‡ÏÉ ióÝ)È’ïøÈ6Ž-ô1Ÿ^-ƒü‚ §ˆ‚N&„ ü€ Á1È ,Á3l)TÀ-E{‚‘öÂ8"ßÀÔÞ¶¡êS'$2|²,€DŠ‚3Äa^ãíª@TÀ8îQ§ÁŽ)vÌ"ÀJ4ÁOõ€F(P™-¨D¡ü‚ÜËïDy†Ctˆ‡’ ('à!\=Åþϼô@$0‚ƒ{ÜG›d€@Bd€Uèý/°I%ø€^üˆ@`ûy8Bûd ÈM`€ÒôÈ–¬ `A„€_ôÊ€Ÿ·ux0 `®"AÝt'ü=ÃȽàDmR5aA|°þ¦|~ÝA „/ŸyA\ú×t„eÀŒ¤H(U› 9 õ{˘ëÀÕ²Ümˆ d¬Eì ½CBf*?DÈÜ1¸ï5°À¶å£Ñv8/4Á¸Wú Âx.@JÔoDx„ÙjËŠœDìBì~Ū€Þ6„Ø@HR„¥I„.qÁ¡È#"•h Ôb¿0bD‘þARÆ "$9*ôKI¥G"„±€4TJ˜ äKB(Â@¤„çEq2Ú @Ÿ Eáø%I$YhÄi…ˆ"8QL:òâ¥"—4Bˆ’Ë%I(*Ái‰IEJtúÅ ÒJŒ¢hÀòe!*URÂkÆ%¡ëø ÂÎaÇ!G–<™reË—1gÖ¼™³å[y ­r1$è§RQ§Vš "…စŽ,W0D¸ä%‚H%êDˆä%LJ]êS€%`Àá O¡‰õAäHI„”8!:r‰ï—:•J‰Ò Ï"÷‹¾å­!P f˜á„áþ! …Èðâ—J"À8éN € | ćóa*® B‹ÉðàäÁ ˆBá*ø¢G°€!-(qŽHz($êxï…Ž‚’ä‹Gp¡‡H2èÀ`x$ ."ˆ£Ž  ˆÀá’GÒÀ …¾Ð" ‚¡áêp …¢àeµ5ÙlÓÍ7áŒSÎ9éì  ( Ä-*‘d- ¸¨¤ +°+‚pƒ£À*¼h¡/ÒÈ Ø0(*Y²S.h¤†JpháJŠøÅ®à¢ÌÈÑà 3ôŽ ~i¢ƒ+zh¬ˆ"ñá—>: µ”þha‘¨b½â’šÌÕÉ~½"X/íA’&4 ˆJúBFâê D“¬5k[ÐBD$ w\¥~IDƒ^¨7’J¨àR^8°ˆJŽÀÂDká0*ƪÓá‡3ëe™ezØâ‹1ΘM51ê ‚D:z! BÒ•ÌKJb|52!“¤dÉ\ΈåŒ^ž+#^8vŒ8rÆŒçÇzžkæš%ûy®žy™¹ç™Û9h¡Ž:£^‚9fš]¤ÎZë­1$‘TÑ!‘‘(“D ÚåZíµÙn[ê]ik·é®Ûî»ñÎ[ï½éìÅø\ðÁÙîã¸N^€h! 3€:,ŽHþ¾˜!Uq + ‘ ë‚ÒÂŒ>h ûÍÖpðÂ0­=ð  ,Óƒ{^¯Çâ]49fœUïÝ÷՞ƣ’|3ƒ£t®Ñ.â”äJ!‚ Ç:)!Dú॓«£h : "’l"Î4hˆ &aƒ|FÖ0‚M#6` #L0‘ü=MN»hÃ>!ˆß-–I"°À /D""ø4 " «\HD$$þ¢ ŠzàÜÀ  á» Š`†Kp«s-¸%T–‘(DBW4Ä"* Dà¡-€%â zi¿ B%t€%h‡ðþ¡$0`DÄa‚=‚x" H—àaz€¶H$‚ÀÁÀ˜& /Ì€ÿy{€‘: © a_øHb,ï0«^  xÁ ¸JÃ| D¢”¨ÄW:AÁ@üâfÐÒÀD BQ€`p½ÃÔc&hÅ>`y¸r`À=äQ )˜˜%FðJÔã†?ü'”üÃû æ=`Ä/hÀ8€‡7A”°—ød¤à¦`Ђ±e`D² ˆBd!QHOTRæu¤#Ìù‚ȧGâ ‘€Á81¯)‚ö’Ä P€G‘!xD8ö4^4aŒ¨„Òà…+|a) „A ' ¿Hƒw|@¾"Ô¥. S“šp€›pB ¸‚ ²EŒLIZ` GР q E @Ö  Ä@sð­ ¦` ŒðB ˜(§þæ †|¬`˜P@? !Ø#­HE1Þ‘W¤¢ûPÀäaxs—6KƒfТ¹©Íp†íß^ ùÚ¢ -¢¦û~±ˆñÅ m PêP*!s¿ÀA |Q0¢ TDA¹%(uhއ©€`Á€â ñ „¿!Ä/´ƒ-#i@!¨B”€¦3È€Àˆ4¡:è*…(GBê€K†{¹Y$¬dH°ÀÌ•#êòñBÆIÖP´À‰>¼  ÖK@ÖH(‚“Tx#¡xE#€þÅ8Ük2  À/ _`B¿˜‚  y `­P‡:ÖàLx¤bôø>ð¬àFXƒ0b 1¨Pö7x ¿Ð~ƒ}„zÑ…4`ñ @*°Ç,8‹–ay”Óá ;È—Ú „"²„8¤¡ˆèj´õaä (ÀˆÐÀÙ4¦‚"Úú d Õ p ”‡<¢ MÀAÍ<¬ãá „ˆB¶$!t" ðBà L\q5¾q2@B<|0TŠZЃAKþ$8€íNye[º™•µ@†6aC(jk ‹Lþ>(3bܾ °è 2Á ø€4q+å$®V§ž(¡Ù,¦ìa  F XÁ’‰ôzÁ* #n€äà-1‚ Ô@5á´¡4 ž D#Fá¦á¡<Á xÇ1®A|’+!óMâ€Èâ+Á¦b$!µ F ê¡è@âÒ~ŽRŽÒ–à°A& ‚á®2bóvá´üR(T\| ˜`(wÜÀ¤#ò@ìà–A(V¡Ð ´a‚r¨ nÁˆó¤A(³òF>à&AžAè` 3þ#Ð@NÃ1 32ñ3?õ?5áŒáv€j<á~@~v` @~á5ßòÆa ô4´Á  À)1âhÁ ¤a>`äéÀ ÆA4áÀ`œÁúR(naX@Fà<Áv`JጡäFa¬àša>áì`¦A€ ` Ààà„B Á1V!ìs?¹´K½Ôž>à aXà>À@Ïô@có~àz63 và Abs˜`n2"< \@ \€üòšÁM¡ EUn¡œó0öàVÁŽáì€z;ÍþÁÜàö€ŽaŽÁVÁŽÁ `Àáä0¢jî#~À£X€.¿ôVq5Wñ¦Dè`ÌTðÔ@Y 6à lµ ôv  ôT(v¡ö`>aõ¶ M{ÁRÔv òàE…¢ Õ &5wnáÐÀša – aš  AHAÆa4¡>`ªòøà~2(œAV–`ÖUWöa!j>€˜àT'áhŒá&¦¡hA†@ŽAò`Àa DnA ä@\À 4´.à†@žaÀ²RŒAÁþ@~à>ÁQIáŽÁÚëXõX´–A‚Ô*@vANƒDvXÀÚà áŽ2#&álU(Äá^5bÝömávM@öQIsÚ`>` ¤¡ x`šr–`_5Æ!pÇA²´Þu1ƒâ– l‡À –”]÷u ì‚¡Jáq£°÷0&A–€w2va]ÛÖ1Ì38(h`Ý0bÁÙ~á ì‚Ex„I˜+ӀÖÂ3Bþ¯„]ØaUa ^¸†mø†×&r©Ô1ÀÁ 8(d“‡‰¸ˆ˜Nò` X@³ÀÖ:§AÚ€ŠÓ  ´Ìaˆ¸Â¬‹Á¸žò@DA Æ!‚Á>€a8ôÆAø Ž”.µx7ƒ¢½Ô`§-Œï&aö„g8Ãýøåäàhã Yå2ˆå€†éÔ þAjS‹¹8(\@¤á7ymÌ&#¼`ÊÒ@.ó °`¸L™ÎŒ•ÝêÌÎM€‚²€Gt@’—oyÛj (t`?9˜+và(c´Mù`‚XXuŽÕàôîø0zÁÜ÷ô0\€43b›3bÐ`‚…¹3äè˜çà f«P`  ¾! !ˆé!\ `€Ž ˆ€ ¡E4ÄúëJ€² ð ü*¦ñLdœ1ú1ºÕš¡øÀ‚Áv'hÁÔÀgaÜu–¡2Ívdºa…âŽ!(l:#>@29£þ7cÕ9#Z€Ô¤rI^ .¢ P ,Æf€¨Óà `À A áŠ/+²@$4 êÀ'Š@|¯ Ù§ ‚ *F4 ó4vA‚¡J!O¥ °–¡{'C> (Ûl®;" "Gl¼€à ¾¢ÜDyÃ0"ª L X ƒé#a“È`“#Þ-J  !U! ¬²q;·ˆ𠪺š .c: uŠ#%ü©«§«Ã¼€(`à6N$_` $ à $Qx †ê1¡Wt»¼Í[þp¶%úÀ<2‚á ²€'Z :ª J€ ŽÀ(ê€ð›¸@ðì ÈÀÎ8¡~"Âà "<¦úä` «Ü»Ÿvò¼-üÂïÆ[„B^ g$a¤Ãû…/1$©1Ünà ÆdÌï® ö2Å©- šˆÆ÷óX4`Ça* ˆ€ " ASôf&áÞ Ç•|É5# ® <Ê¥Ü* ؘɱ<Ë)£AÊ¥œ*äk=ÄJýÔS=ÐeÎÐ!ã²@äÝF*þÄËÇåõ“v½=Ðþ`¨(ãéÜšæÕ¦P æ#£È è½Et>ÁÃü0ãZé!¦:lð¢€û Ü¡D@–}‚$”R Ô¢œÍû`læ¢T8±Ûú]ê¨4{éù"2P€åìÞbá:à2AÔ', €ý œ\1A€½pb2€ð !ˆ#žƒ²öÌ«"«ùï鉠€ aõ!Äü- .2*@Þôç¤Rˆ˜ñ€ô{&f`ƒ,¬ð" Jh ¨!Uh „Ñ-Ð-ú^ úk)|€"Áö»Tzà à‡ûëÄþO¼•; Átà¤,“¢¨‚øóè_ù-Êù3ÿ¾ ¢AFŸgÌ:"Я <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ‘"¯@8tdü2¤È‘$KNLÓ<Šê ¬È X*9RòˆQšfp„iAƒ_ÒÀ¨”/Eð #B8~iÉp)É­\»zý 6¬Ø±dËš=ûkQ MUÒ)Š-P º(Â#=àÐpôK*f.V‚ã’ й1“AC­h+[¾Œ9³Ä(‹ R ¨AIxM|:ÎGI0<žÝˆŠæÙ‹h€ÃÐô¯þ>aP¨†s… I ã|9Ò" "Ý´›;]¤c—ûРࢸ%6A*£H´`(©j’•JTº$âñø1P’”ÂBƒÝÅG`jÆ ¿à¡TÄC"8‚Ç Ý‡Â@/h±Ax´–Ð VAx º¶ ˆ¿@¨ÔA;i ‰ˆ0Lj Â Ú %à7PZ%È‹KÔÁŸJéÐ_A(<²ÞN> e”RèŠdÐ=DAF‰pr%#¿]‘á/W@€j0(rÄ%%ÀG‘E’n}D Ä/0pIü‚H n¾ #KqPh•FþYp±ˆ#\ÄAÞWD¡Hd”Å \A"pADY(ÒÇ31CXÀDÈf"ŠÐ:e®¼ôžYt€Q $ÂyíÚD ˜4tÐIFZtPJØçƒMÐQ-,Ò®š%a èdVAä0†5â€Qü4/ô Jøàˆ@G"iÇn”àQPY\ •w§@u(ñ ŒüBH…t’¨ÅA\d€ë\ðr}”€‚^ÆH':Ä$pPR X,I$-Є ’F ôQI“Ñ H%¹>ý ‘xVYÀþ~¼ âô/uPò‚Cp|Á…Š(ÐgpQ"ŠÀ0C"teAq¤A‰‚ Ir "‘äD9¤“ Eg¤MBe8Á.µHt¸2å’(ƒJ4! [`L¦å½¿|á¥#EhQBU|—ù‹iR¡! Á0´AEàùË \ÁÁÅ 9ƒz‘D@‰.JPÊfr"„‰ž;®Èæ/8”  p —Š34G”$” X0 µX‹hÐ߈ܗftR‡•ˆ —xÁJHÈ fˆÌ Á40¸}`DìO1¿P Ìà< "èq¼ þ@êä(i Á ú@Àó‹ fðZ€À4lP€Cpð‚p‹ /‚:à^`á Ä› °394vX”PA’È ~¡ A>ðˆ(Á,¦MBxDáìsE-¬„ü"éXÇ!lñ‹l¬clÈAÊa !áXG- §ŒpT!Â8A¶‚Âä AE&Šu¸#éd!Ã1Heì¡8A9 i9`ÔÑ¡ø…58 PT¡UÁ„±Ž$ÈB…€Dâã¹&L 0O(‘ˆ›PÂ}€C®p—è@Q/ˆƒv¤ƒþB$)x„ð ^¤A ðB¸àˆ\!49ïs‰"â ì£B ó‚(\á-`Dq 3 E¸g!q‰G - EÐ÷8€t¢/x2P ö¤³jßXtг&À€ $¾€Æ&x!èD®ð… ,ÂTfàD`Љô -ø  BóE‚¿,H 8Á;’U¾0F@‚¡ ‚q…B¬mm‰øqˆ£ƒ|á ¿°# a†>Hâ„(D ¸À,H•¡’0 Fpá„èª$PÀ¶_Pˆ@!¢ÀRJ B D ¾ ƒJþlÕ ¸ùj¬¸ ÈÀ 0ðA …™èÅÊñj~bƒLàƒ@3˜qˆ;€ ~8Ádõëhe~›S¸£6€;Ð…L„Ã6¨Å ±eÄãµÌÀE~G^˜" àÆ:Y8ÁNBNQ w#A¸ƒw%—T(Op‡ܱŽØ@]¸@.± `I``asàõ>mMà]!öòã-_øB$ú BÌ€-¨QáÎäGqâ„%"˜–„ƒáÅuމªd8i%0 ,‚‹°$Å‹<þJáÚ`áQ8Â"|â/P .6BæYæx´+…R¨×„G "¼º”ˆ à!‹€ñ²¡:(b§ðмàPG4iPœPDp1МÀÁ. p `„¾ÀˆE€4ó* Èš»éá5 G0#|jŸe!fpDu‚8D -Ú©‹ ñ 8"áìæ[d*^q7% c3`dM‹D$ººe|#H(‡ºpˆ_0#eHÀ)Öõ‹XÈw ¦@…¹QqŽ4àU8ƒ%°Ýf#¨ÈÆ@„qŽs°A›0ˆ)`o?LàþëøÅ2g?H ¿H*@@14'ØÄº°Ž ”#ßèVˆ¡èB¢"D[ÄÅ4 ,!u0pAx¡´¥0' h+ˆ$f0ƒÜ­ q`Ê œ7øBÈÆü€BB :P3:‰8˜J£œ…VˆìÏ^ËÂN™¦¨†@¯‚Ó]/d¨D^p@ˆKpï xxÄ ²%‚( `ï(8{~°:0‚x€b|B$[ètA4@¥ý•mq¨—:Ò‰ Ø,ˆ8Âç(Áw.ܵ|ÃîC̼ú"d+8 B%:ðl†°ae(C9ÖÑwh›þIˆ‡%¨a[¸â® wíko P cwØFÀ ƒÞá¼á \ü× )ü@ ô9ÈÆBÐ`PŸ ÊÈ„æ1† ø! 8ÄØp „JøÂ¤¡#-„tfA82€_! -pwY PYð•„Ða@ À$°bdpP@(€O‘ŠRc3W'Ñd.d pà=_  À‘àï¡?¨ìV0æ”3ð(’ Ø4ð‹(‚yõt•Ða’–MðŽÐ&œ°T>óbT f@ òƒ rþxÐD0>’@0X-†Òƒ”Ð4°- ÁßPÞà¡À Ôp® 0` ¹à€ lp™0ñÀ ˆƒ  é` gp§ ™° À% ¦ào à é0l†€ä`  p ]` ÀpN° ™ µ ™ðpî€ ¸‹”Ô@¸Àp#6ðsÑøx€\¨}мPeÓ>à,dB¿ =Á>Ð-û…ГÁ•€P±//ÐQÁbÝØZ ÓäJP fÐ5—0æØ]„W\Ða¿@M`4€> …0þMTˆ/`?7UÙÒM€‰^0M4F¼@Cx!fyÚ¢À€0QpA>‰°j‘‚ ¡ ð¶H¿ î Å' Ù` ²aé H‘´xgð ì²áP8l0™ I !·±`Нq?©H’ó ‰„–£ °Ù€ÊPGñ ®¤”PY:àrØYýÑY>':m %ƒ‘Tó óX AN‘€ÜA˜Ñ‘ €šá gR™±;x:虿àÒˆ°)Hh‘›©šQ0@+'¹QÉ’š«‰IPq™g€–þc›jÔøáøA4P8€ ƒQ³¡9›>0,Q3@ Jà5ÔYE Qà0 … iÐÕ™^ ’’‚Zà^ ž"`'" ¸žâ‰pèˆ7û¢éáEàG—> Q¿©  Ê  ª\&%ÀTà¿p%ð d34]·Sqpiú =P<¶Â>׉‹0xÆŒà.¥¡Œ Wp& «r%Pw¦ÂBb¦Ê¡ 4•0@.åÀútUEP7‚†VBd ñX›*é ˆi^À|¥c=Ð5ÄþUÁ‘°az}X°7Œ÷Œ! Ðò ^ðaC=@$vt@gj%`p Â1!7 Àˆ E`>¿`DàÐJ@Á† ª¥ ±qÐs0gWë‹°g9' M ú¯Q£ýʯ¦•)9n£;8Ð0>š’€þŽ€(4p/ | t=çUtØ#õóñLD$ªÁ7ƒu+¿`¯ùÆ’§¾Ñ#¸¼Ð0@@5i"0üªB´‡°¿ÐY¨Zq XP1û €€Xp¨ùQD§1´®r +2a ¡‰²"³^% ‰ œ°WÃ: f°®Á Pwswå$†Œ ª% M€¡ðœSç¡3z’\ GX a†œÀÔ–â³M€DPu4÷VÐ*­¡W¿PQ¥©Ðä³^€–[Œp>\ ‰ ®Ð® YªñŠ:p CþÄ»ë€ @^³¯Œ' 4P0Ö G©„à4À;&Ĉ€@Q¿@±(PT2³¦€¸¿P¼£¶x•qÐ?§3,`k—PXÀ¦Ë!DUÉ%7:ФX!4@ ‘‘ð„p7§kAp†jƒ¹ h | UA¹WP‹@>ÐiM`@k#²¿p G Ô¡U«CfxP" DADJŠp ]ZWÐU—@XÀ„àž…0q`¼ŠP:€…@ˆ°…ÒBduZ ‰@þ‰Ð'uaP iÀB…ø£ £¼ðdeðY‹ zÖ)Ç+âY‰DpZA)QàÐ}> ŸsŒV)™‘ €[ 1H’«£G`eá}àV:¢—k»"!P§× ŽpP3ˆP…À â0|–&OQ#òHN<'`iÐÓhWDp u Y€Dš¤B*„'ª‹xqà•Ëq 3ŒuЊi0Ðð-¬, ±Vy¦fà¤"´·Jñ™ž‹`¡Ò^YP …¬pEqW0þ¥`ÁxÀÈÁ ßâ‹ ÆÕ©} œÐ =^5O:PÃTÀ 5¼"D 0Pá’z¤â´ñÑœ58 >ûøÈY"©WYPP (Œ 8³rQ Ã&XÆÑqÆ_@y‚@^`JÐÛó¿8@@ù[]Õ7sc0bB¡4X£\0º@ pÀö›z¢X€uP @”E­Y@¾ª!½_P ÕB@Ì# oÍ-0@pN£D8@P…@µÛÊQ œÍéu0ô ‰€UŸ#¼_—&ð‚b ÀRah×ÓÙXÕhq÷`Z3àDþ¨Z°ip—EV«Û’‚1=ð¯2i 3ðz> X.V„P› 2ýiŽp>Ut>ÑUV%à7Çà4¼„%@\Í =f€Ú¬@Ó4}«ŒWà(:y²0¼ i ›ñ31f0ÐS¨ÝŸ Ï_6-PÅ¿ N댚ZàK±Ã?%4ôùr:ôšâð s/‡°QdpJ»’§QðYÙq¶ ®Cõ6u a Ë^· Šüá 8Ài‘v‡VINp'w݃_`v°þÃw=ŸÖ:d0Þ¼6Ä? à=‘ÈÁã³±6S\/à|—OëS0ðçAFˆÔ±2‡ KØvŒì3P&”À ›ÆãáR˜Ò×y Ñ"(-4"@Dp qÐ{Gb‹à÷m­" MTÐÞ.šîb¿Ð¢© Óê5XP,û$숱¹"FË;Õã"!Ål6rCä|Á‰QvˆðÄóÐT Ž€ mf¨„>`*G°06<8Àë^ìB3àxa œÀ: èX Ê fðÜfÐ0 <ý›þÀyW€1Íï1Eî3`ÒðÜ0ÂÈYP‹ð*G2p Dð(ð˜Vp@ˆÛaðX ;‘q^š"p@e¼p „`óàé›õrŽp x€&_Ð9oóA zÁ½AŸ¼=¸àˆpØ@àyTñ%% ŽP´  ”‘d4àxËNöËÞf^¥"/ ÕuoßL} Fâq- M¶!"’jOQo_ƒa! ’á ¯=òö0PM‡V!~¼0ÝMàiu ‹áQ#‰5B“EÝ,%"¦Ñ(ð#ʼn#".ao_M0ž+þ׿ôºý iÀŽJpéfø.‘ø«¿MÐêüT "ÑñŽÁïÒ ©xO‹\*W}ðûp0‘F".ìwYöãOþZ*Ððæå¯iгêïþïß e ÿóOÿõoÿ÷ÿù¯ÿ³ÎMàøÉMšôùUÐàÁ‚pD¼Ð’áCˆñ4IƒãEÄ>•.úÅ«‰¤‡›x9˜¦ Œ‡ppÀ€A2âK˜’V¶º†&”€ƒŠ&àТB ûÐ/Žˆˆ¤:âÀ"ÁH *’¦>"mE)KcȘË"Æ_(!ã¾sÔqÇÓ@’@8à¤%л‚‹HÈ@©E *€8€þ€2Ž®Ð€ˆÌ›Á 3Ñâ‘2˜A‰Èh" !$1³Õ6&/1ŽD¼-h‘N Üö\tÓ͉ ¸ÐŽ®n9øe‘D¸àijנÂÊ}ãh€N΃ê >Jx¤Ï)AÛ”ãÕio›a9À “ Q¢Žþ ±í 7‚KšÈÂ+˜Á,J€ácœž« %¨C’#ñáFPò/9Ø~!„8ḆA&á::9Â02¨8‚…/ªÆC’,*yéF슲]uË6ûl´ÓFw „^8@á $y îM®IÅH£(¥ÄB =(ŽŽ`ä ^B!¡/ À®×°B€Á5J:÷ÁÜ_Bv ‡08 ܇_ZƒÀ_D`d‘jÖ­fà˜!Âi ÊÔ_èB+Òh¡sJ>?H‰š(ÈnÃZ®¹*(âêD®.‚k3"â%’lk H W{|òË7ÿ|þŸš(¡“_†Í¢Ž är/pëZ‡}#!€>€­$ŠBxæ l{ 2‡"”€=ðÖ¿¼v-Ìà:€þ§„(¼ J¶ ‚"\ûqÄ0è(í²P:€‚À\µAÃ8T;/ð‚^À2¼ ˜AªˆÖ‡@$ñe#Q-ŠD²P"õ÷¶#Á>€YA`°²‚àÀ•àúÜøF8ÆQ]þâE¸WKÉ ”rW\¡ wÔÚ¦„è ÀCä/0@ dW‰ÁÍ »E’ÁI'´xE~á þ@0C: \¤VjcD” H˜¡Y”ð£šÕ‰+|¡/Ѐ%qPBÌO”zI*Á+\"uL/(q/h€‘è¤ù‹@` l9!p`%SŽãüÊ%@r¦S•ÁD@'‰8€Î2íŒq¹3ž;]Ú‰ eVî,cN¨€#s!¼' Ì Ðu‘u #ÄQŒf4]³á˜5Ê¢}~”œ( ‚HMzR”¦T¥é4C¸R˜’¯4(èO•˜æT§¡ÑB ¾¥õ\ˆÈQ¼à¡&U©DAa–úTÑ8”-g| ( x6þé´ ƒJ$\ÐA'zà…D!¸ÆÕBP¢¼€":pWDD:PåkNiP‚VöU°F©àƒû´•ZDèÓ#Â×E RP„8Ñ ŠZ@ÒqÀZüC„"0†ˆ4Ðà=¸è`]›Ñ@D" ò|mmwR'Æ0tŠ@NˆÕFâ7˜A ~¨(4:Á‚üµ û „ ¤]•€#³‰RÓ ;Û¾=¨D#Ã{ÞDá€$P ¼äüö ÀB'ƒ”¹¿È *ÑÜN” º%ýuûµ¯/@F"¸ÛÌÈ) B<½¦þp…¿Õ‰,,àV€À\Ò€ =P„#úÐ]DD4`"f€›DÂ^ BEpÃB´ _À ñˆVŽ}`:-Þ4¤á ’¨Cˆø*4¹¦?D—’†:XùÈÓ}A$n‚À}èDzÀÇN¼ GМ$X¬J„¨sN³ˆ„"u€QD@ Z;ΊáÏ[†j4eE  @4´DT|A)Äz5€Ú"%Yà7 ‘òD œ×W"çшÄá‹&ÂM" pñÓA¨³´sP&ÿÆx¨ÃÇâp~•(P”ÝdíÌ%æ­þ1½¼&C„€„ÈðÀ4€„Ép`2sš íûÌj¯At;ë‡HbÊ¡Â".’§ñ<Ú dI 2-GˆBš ‚0¢J ° BmG;KG@\"Ø 9±·ú€BÀk8!8€8p`Õð]2ðâ Üj]á0@DމGDA %ç@¨°ÞB(y:PS/¸¬ßKH 8ë÷1}¥X,Ö 8 ‰ˆD¨i[1^€/40ª\áÝ P¿ ",»À1C~‘3*PB‰ ƒ áéå¡ kd$þ„‰ØÑbXÁˆ.áh—m€ÀD ‹‚¡dtÿú}Aâð…s? (ÐNµî­S³Çx©ÔOº¯(¤€T¾Ðd ãHÃÅÞ:(éž)( ÓÅÝ[íyÄ ñ‹s‚M†DJ`^˾>̈@„#À ŠˆÜ¡í÷Áæ­sÐþá‡tâ X2zïd&À--P·<ñ‘R7†úÿ˜ž`Ä‘*ã68(½“Š"=(ÛC),*„EØ?  HG0Gˆ‚:º‚¿ØŽʲ+x„>€ƒ›á‹þ þ䈆éGx3`^à‚Dh‚ 8 PH€„‚°ôˆ‚EX7SÐB®¦¢D0û+,¨©Dx#ƒBÀ)ÜZ,Z¤Hà8‚# ˆ„Ç µ‚#¸Œ[/xª„K:å)™;DP‹|2©'Ñ@Eè@Ä"xIØ¢Èá„Gx‹_Ђ#(G@> 6ø‚X"`È€DÄ>Gà42 .8N˜JÈ›G(NH„=ä+ÃN˜ƒ(Oä@àà4HH2Ѐ´{„N¬ª€„V“„+p% ‚|ˆrC ƒK óâFÃ";þ€1+N^€„À€¨û.¾Eøí¨G „/è¹ hJ`¿_ˆ‚@‘“ª €00Gü¨ jðž­Y@IÀõXuS@=1@Y…j{Ë´8иa(8°Bæë‘ †*Iа‹Ôæ³Àà…ëa¾Š¤-/Pð /H`%ø€‹À"-À­féƒs,ˆ/x뻯ä¸!í`®M1E ¥ÍE˜×'*H0²„Ô(´p«Ú’„@ÀðB¯4 ±rù…Kˆ¢Äƒ®ë0 Ãû…ßkÂ_ÂÌÊ_ ÊJ6;‚‹ðˆG „‹Ë(þ-ˆ°T„AKÉœÌÑÀƒ#è< =Œ€§!Iè„à„÷Z“XF€„D"È2ˆJè”K, ‚E˜"€GÈ”¹z/Àu[§•ÄX»ž®¤L˜Ò-h#ä,JAµ—à 4NÑ€ƒ"¨„ø-ȱÌè-èΈÐÜHN-<(Ê*ìÎ>OܨB2À€Š)„8ˆL „X7é *°AšéÓ2ˆhŒœ„ÈÇðÁ 8HI É £‚¹úŒp ¢ą̂šÀËO“¢NjÑíƒÌ1,¶ ™‹9ˆ"€ž‡„@^蘞¿ñÐ>ˆþ¡D(µÃÌàÐ^£*˜™"ÈŒé‰@Ijá…"µ *Ñ‚(7bªƒ‰üÑÛ¨2a=#Hü7 kI*øM“²Oˆ E©KXFp4ÿüHhDó#Nxœ×XŽ4àÛ,a\½ø'žÁ8 ƒ@ð‚0P‚:(+˜È@F`?÷zÇ F¸›ËÌ/x„Hˆ‚PÍ ð.Î6SD¡(N¨ƒEp„AÆêTT„>(CE(0ƒ"@¿«" ƒ ¸Ç_°6„SºP1õU‘2ÀðS[ýõù2¸ƒ Æ_ F‰3¡¿wc—4x¹–âR¬8NÈ‚,- ‹^5ùc›‰ž:°ÌGá €Ì_ Ç©8 ¦KÈ‚eá´ü(µüX‘V±ý(¾  BHBB`8¸65³ÈJÀ¨¨fs¬EÐA-È   > U­ê€þ>È¥8„0èBÀ ª €ó0•ÝÛBp2 8Á:ˆ‚ ¢vy8ÄGÐ^ø(„"È`„KÈZ.ÐEP‚ót.Fà¤_(])ÛˆêXàÍ(à„`“yÉM3Ø F €+¨/P8H¸4ü‚, %Xœû4:È‚/€¼ˆÕcÂ#x‡HÈ‚GÐIÀ€/€W-€„NМÐ)ú‚/‚+°9Þ ,ßGÀ/ ‚üâ€0Ú½ H•C nKð¤:`•C„õ½–‚ˆGHÚá#² áu€b-=^h%^À/=àˆÖ=.JÐ9X“åúh–‚ ·°¶DÀ‡PˆÎ€„/ÀEÞH„DÐ@˜‚¨YžÀ~DˆuK<¨®@Oȶ@æì}ÝÝ"H„:(Üu7<(­† cþFfe6(cHF—F~äp&JàE`‹â‚’êDfe„KQž5 *Ð<ãj2.È‚‚ÙZ>º„gNÀ(Lá·o9‚,À€#¸„Gà°ßB¥+ø?É-[¡Û¹UE¸Íà3 ‚@ HG°D/`2(HHÛÖõA%p„[-,è0(±Äcå‘V€ 8Óƒßr.›qöØ¡>015ú;ã"Ù^(`‹SæcYr+8Àyš6¤ºÇoõ˜# ¤ó”y!D·:‚È+ñE$Ñ–õâ `-@Í+ЀjÊJx9ˆ ÀHÈ™¸Ñþob„s½JZ¤Ò*« èéh½†E¸¿f™(>ê)jÌV›¤Æƒ])„–YcãjQ5 6N6J0®F6ˈ˜¶å«Ùå Y9„4².ˆ+ ^@ë¬þ‚“xÙŽ8‚_¸ÑB2ƒ// È+Цý [šá€‰€2ô‚¨6Ï«<ÅÆB×I™åÆ‚ºÉ±¼ !ÞìéG6jòF¾K„^ÁƒÔ¤„°¨zeܰŸèµ>0 ßXS€î „ŸªY H2@3è»ø§ØÀŒö‚0J3XÔ£Gˆ<˜ìN(„JÀh‡®Ð¨™JÈèZ&ƒÐŽ éþË\TkJx˜¬íœ(¼(€´J¢"p„K¸õåÀôæÍò²IÍøý&<芼P3hª½æŠHˆ„Jà¥Hœpª„|ć¥H¸„Ì«À¯I4‚ˆ(h*BÀ€Æ£Jˆ„¸B8¶À€å^^è+Ð+8ˆ8DêkQò:,ˆ„fi H ÈÂè:Q‚KÀ*؈HpÊ@)¤/X N1tæ3$#çó&çO?JðÁ6ZÀšà‰8ï} l ·»h¥„Rc*¨ÐGó'ƒxuˆà…J`íQg‘"ÿõmÐØä¡öò>oeovg?›qFègŸvjÏ‘PþîjÏvmqÆömÿö ªC–Ó‚HR¯|JÜkMƒ/È4-Ðß/0¨ÐÏðô6ŠP/5pÏ÷œÂ€]+"@§Dà,ø ƒÙÚˆ"Ö`hGàhá_Éèv}Ÿx˜¢§Dœ ä€oZåÕLP(‰ˆ–Yž]áO^XÀÒãÛÖMƒ¤¹ ŽHƒ@NyŸí,áÁÖ-X„(Ÿ„°xWŠ{§xÐ8ùFze£ çë1¾Q‘„ù±^8@x‘¿ç‚X¥Ž¨ñÈ€#0 K)k$;þØåª-"ÈH0ƒ›Ö³µÏJÅ).3¡2ð>AS ‰ozÙ’þ!ü•u-õ{¡èiÕ-[¥©é,ëȇˆ‘70.‡…Šm‚8°Œ#ä©‘Þ»™R6¼Êè^=ÂýÞUûC,1TÐÛh` š1d¤Ï(ƒ_÷0õב¾¼ÓOt)éÀA"‰ðE…|¡GH¢Cþ ^!FJ\HÄUP¡ˆ¼üBY02à JA$ˆ@bU¿¤QBˆDñË ”@†"”H¢A'ubFŠ(”@ÄZ6€^RY¥•1ÕW_AYòÆH!Å/b䣋ÕP<ˆ˜µ)¦›¿H¡e—øh‡f>̲Q˜¿Ø)'FZnI(oÆ€‰ Ë?$ÄŠ*¨óF*­üYÐBðf¦…ÒIÁ?$ÍYÃød H=*ðó û¨àF&ØC Wâª/O¾4aZ$’È (’䚬²¹zðŽ?¾Àò‹Éüò¿¬ð&ï,jÝüBþ‚ ¾\ è³2`ª‘<2˜pŸ Ãn ýÈ@€Rôã ħ­ìã &È€Ï>ï0`Ä2øSÃ/­È CŸ¿t3Œ<üäCÀïPÃöQ¨gkø"Ï0ýà‹ û¼!­¶ýñ³° ÿÀb+L¬½Ãô© ¬lÄ;.£éIÑ+©T·¬ÔSgdœ5ÖMPݵ׀½ÒïØ3E?ºø·¶útÓN+¿x{& ì£6 *°c?¬ú‹ +ôSŒ:S¤²Á,+QÏ, ÜãªþôÃçF¬q:*!ƒïÀóÏÉ¡ËÕ¤òŠ!Ã2ø>ìTþ³Ï tSƒXP ¸º†©°2û>cæ3ŒÀ¢Ë°ƒ@;ȾêôÃFô´3K´ë¢ÎìòHÃ+„Wºˆ±‘¨Óê×ë[ùÖYk ûóÓÿR?ö‘O*ôô£vÿ¿Ø\¬Ƙ¾…X¤â„k/øÑ´‚ÔƒèÇ0¨×§9nìhœÖð ðk#ãÄ*u5À¡ÿh+d°†•­a 2(F ôaècpÕÐ…ô(¶†òýbsP`*<‡_@wt„øaC°BòÀ¢HP@°ãˆ‘É÷]QCüÅž To#Å{GßþêçÆÀÀAðË$œòÆ;âq#÷3Â,jÕT¼ÁjûÒ/ÔAÀ¸a¤jã‡è¨.]( ùh~¡€ Šaƒ¿€ÅÞÉiDÃ*•º˜Å`­¨=¦À˜@úØAj MöˆÚ?P»_ìÃ%ËÇÞ¦%Jì0B-éAYAQûE ÐŽl€d1°Ç+D÷‹9À£ eÄ>ÔñKÐc =Ì#;÷‚9íœçG°9vÀƒ³h‡:0€|¬€˜°G fTÌÁõÀ‡ TÉ€V @%Œ™Fö4‡[ùbà¡Aê)¬¡0ÁFTþ°y€¬êÔ¤@6LP€#P>ôñ»?²¾˜‚ì¡€HZêw <ÕXñ‹T(` ³¨?ñŽá‘.§Ã@€>RA•™"€G29k¾c¼È&RQ î)|õPÇÛ8âT$žr‰Â?Nb®zõÚ+V‹Äýâ xÆ,zx RÈ4vù¨/Šá À‘€BÀ4•Wô§ù@@>bàÉð²*ˆ ÀŠnÐSh¬i•` $ÈÇ?U~ü£@å?PŸ~(€y ô€t#¼ÈÇ;H /1àîèÑþW$­Õè‡ú4R~ÌâVÏn à1…Y ³˜ÃE;ò{¼k¯úeIà—…ý8YïhǨºÆH{Ü*'1èÆ4;©9Ø#?9áÔÁ8¬"G9Œ8Äéü.!âGç -ýšŠS<ŠòEUWd-Šk¼8dЂ{ìã—x #ohc_¤@ù‰m\ñ›<ID%Àƒ“«l努 ;b¸‡>T²À8‘ ÎH= ЩŒ` î±8Àã+³$@’ál羈A R²(šg‡½A$ÅH ô<¦=S#@,ôžaœ’b€Ìa*Ð?èá þ>ST y.È,ØÑY4Y@L$@´Ã Âa”OÉR°æ@QT$^oâ[WjŽ’p /SI È×   $÷úÇ–¯ì‡,èÎÒÆI>\}ÈcbÐÇüè+P‡/ÒÃ9@€FP&àzÐC* ?ö‘Ô9¨ B€<˜7 u@QÀ0èd– 0Â4p.Ä¡WÂ%"%`á (6°`þÀWè: ‚,¼ùμèÊ´»N  Û³‡N¥ 2¨ƒ[ÚVi¹PÃwÔC¾(!ºÙ1‚tƒì³VðÜúäê¼:ÖLÄAWc—¹‡ ¤°ü"ñÿ Ç+,ÐVƒ¯+|]Àcìø#,HÀŠ5`sè†/Ф|0@#(ã0tñ }ècÖ‘Ò¢S×ôF^,‚ˆ¾p-” :XŽ á2t aèA²ð#HÔ¡€þ#ôˆ#À@Úuö:ù]¹¨,€ÀjT¡\êI¸ð¡€ÇË@¸G;Ö Ž5ü޼ÊFˆAcåC>þpXAxQA À ô‹@ãÁ <¬€.¤G5¬AÒÎÛÀBr- ì_; U*¬É¬Á+ð‚Д@=Ô[½ƒ B7¨Ã¨ñC*h ÙúÔÀ ü ¤Æ/hÀ l] ,…d† ÈÆ€"P$\D8Å"Á øZùqa’D1àLjA+°DÌ>Ä—XSŸYÀëÂ0°Â>@À‡ÁC?øUiM|›fÁÍ>â>¬“©±C·–:`B ,°¼@€ä,ÌBèuàˆÌ! (ÓÀÃ;¬Üý´B Ä@gCéG;tC5¬¡_ ƒ X€<(@þù=¢À‚áÑO˜Á#ˆÀ 0‘ @ðB%á/< ¤A$$àr@›ÀP™bc6fĬËÙœ@R* €.ÜŽ¸ÉÈà/üÌñÐÅùÂ?èÃàƒêA´ô,øaI\^‚ÍBA€.DÓ(€=Ê€:4Ž¥¤A!— èB>ˆ‘'ÎÁ+pºù?¨€ÌÁz€=ˆS±‚ Àà ƒê @?LA=Ü I>å/(A(1Ò€"ˆ”À/Â$0‚#p\‚B% 4AÌÀ‚¼À$ÂjãSv¡‘ÍB1 Y=øÛ‘Õ@þ”þ ðei ÖÔ/ ™‘9–Š‘ ü›J¼<èBž¼Á,˜–ÔƒÛ½/Y10€–¼U~eÌ ÙÕ€›` Œ% ¼’‰ ˆ£±Õe}Ô¤, &x€þä‡x±SÔ$h,BB hrÀ€A „& t"DAhÁh†&4TÚæmRI 䃄 üCàD7°•/ìpâfr*çrÖX®1çsB§õ¥_FguN8%LÀ슱…ˆwfwv„$'ŠôyyfgGð‚ý‚$ÄÁø½gAlgwZç×ÔÃ>xÓ}òçLàÁGLÄ!þA@BÀ%D‚ DôÈF˜!‚<‰†Aà‡Öæ/ˆ×8@‚üBDBôFàAQJ PB"@Bˆög®$“ ìàžX¬E¤A{E„ˆ$iAˆÀ#\£V)Ž´§V`DD)A4©FH)‚ò`A< ‘þ•Ö™”n„$(dAÐ)‚d<õ@šÎ"ô4 ˜ÅF(Â%Á‚  "8ð©ŸjÄ"@‚OÄ%$Á DAè@p}ˆ/` èÀ"¸'抨CÎyjQA%AD \ÁTBþ$Ð@,è{Á@‚$Â#„‚$ô$è*Aó™Áè\Á\BÀÀ€±^BPA kH‚ATjD@dü¼¶i"ôA h!ØE\XaAP’ìÀnAˆŽÄÁ (‚idÈÓ/´@$0½BPA"$(|Žê§>øC>†ì\ÁAA%ÄA2ÒÀ/(TðB$Hãóá@"ˆpôÏ=B$è@`A(‚¯ÎÄ+Ü©1Fh„@t€Lþd°t@'Ï:BB %|­#d"°-,iAPAŽ)AÄ-dA\„pÄ(BŒ…(BtŠn`ÈÂÂb„¥¢€SÐ@(‚”j$àAÖn/ ‚#h€ž¬a`&;˜€£}î^a! d…õÚÌþ‚ëêÀ Aôˆ”ÀXaUTB\Â\ppB dA 4Æ"\l²eDXBÁžb$@ĘòÞ$€mˆ@¯¾öC,‚SJÂD‚€–oBà8BøiÔÁ÷[ BŒ/þ,ã¾'%þ\˜ÂA$/\pÀðÂoFÄhFéȰ‚!B0€`ë"Lßv¦A%@\ X"$)ÀD€¤AœrÁø@!xS†hŒÓëF„At €$@m%d@àÀAàö&#À¤Þð $‚˜žŠ)Ü> ðÂ.âAóÂ%Ì 8‚$nˆ(ðÀÁª’1à€XX…Ãñ"pAVðB( Gd Ô/lª?,‚ˆ@Fh³^FCǬ¥#ïU \Á"\ í;d@Ø.!A±QAô$´€þ"\,Âøn<t€&¼@pÂðñ0Ì@dAÂ*B 8ÂÆÆ#4%p$°D®¯J#I#˜A Ð+Á4÷"#Ÿ^HiÂj€#4AŒ‚"<.9›³Sà@àÀ/ô!8‚#`Á  @Ö¼/( À‘àHÞF‚üüÚ%´@§RraÔè‚Pô~í$/Ô,vÔ ì®,B ¼ÀZÄ ÄA|ưÕA x4³Ñæz¾ôÀkê/vÒ¦V¼@“ÂÀ—[@4Aé [äܪ¦¯Õ´yâÁkÒgõR7õ{b§²Ñþ&m¾4UóB“¼t|jÄz.4aÄ@S}µ§¶@¼ìX£uZ«õZ[ç ÷"[Ãõ_ð*gúJWÁ8Û¦^”R_#/Üuãö/àt4ÈÆõKH‚@‚R<6\×4Nàh\!àŒEðAÂtf$|Á# (Ü^ªþÎ@@ ü‚Á#ˆ!°ö Œ3È6²à Lhg%ÀòW¶LpAb ·ñÜ`6FÀÁ5fQ…a¯=·ˆ0@Çod…¹",AH·¯ýO§ÈÛñvAP™`oDˆ†Eü!<‚7¿v%H´pPÁ%(Bˆþtó®2­ø0@K£!·#NjˆD 2D‚¥Ò@hªxîq£Ä܆‹˜$àÀPêÀ”À#d€gD‚¯^2!DÀ#0B¤Áp@-ÿÂÚ2«á#d#äUFH%Ì@$Ì€ƒc€0ˆ¬êDÂë–€ÝNɯB €úzA¤A䂌dáùjA!pyH Ü1\À\´'@U2$\ÁQh +³ñˆCl/l ‹²UB%ðŽB´@}¥Ábc'F#/~'‡«DYp+º^µîp%(‚hU@ D#´€öqÒññ%(AàAþ4AA%üØr´sF(Ôn ð©$Ì 0k ht#hAVôû—@Ìr@X¤A °(Àp_A´ÓÀzv³˜òB*S™x©¤ƒ¨`x3Ž`D.*¢’H¨“ †Û© , óâ¨àˆâ2m|ð.¢ÀÀ*:Y¤.Á/€Pï8®°ïD(é©EÊóA¿¹¢‚‹D¨ë#‚@’T‚ `ø…<.Z(Léâ£H’#8Á¢Ç`ð<´hA‰D3©@"ÀáÆBÅŠ³:ùB‡í i7I”„ %†’D‹Bá…Ä#Ò¨k"^´è£ˆ@þàॎB´ˆ(`HcLT Iƒ ¢8Q¢"f¨$¢ê”è B^P( ä1‰$¡…¹.¡„ÈÀ  I‘_xYdV-8L¯x‰‚‘NÒøm¢>´HcV2Q‚ŠJ©xµÁ^ˆ*(IÖÐ~Å €G¾@‰Gz裄á’2NI&{¸€ˆ$Ô(‹z)¢!¼˜¡0.ÿƒ!%¸ÉŒ à-éAƒl•ºâŠ_tЀF®HdF¸Ð`†y„Œ,"I Óô—i©ù‹>Pp$EÑ"ìëNÉÀ>‚-a„E*ékG‰ ƒþE¾ ;€_8`Ä"2ˆBE.Q:ŠG:ˆ/D:2x;‘,"x6m¼×Â…/üåE¨(" Éâ8Ä2)Î Eú,¾Ðâ‘÷’"^°# GHã 8 c#EÈP„å,á’4¸à©Ê¦ ¢ÐŒ¾èá—ëÉ%2PO’%'¡â8B’¨½~)‚ˆl%aË.“Ä H±(ŒK|$Š0ææ·"4KLˆ$b†pÁ ŽBˆ AU¤Ÿ{Þ—‡#¡ %¡ÂIÐ…LŠBÁ¬_Â>hàð…#Ä!_4£Y8@*þÌ (Ä2ð .|á •øB"P dÁ>7#Cº3 Ô! 4 rOJˆ€ሠe€ uQÒmQ¤ºðdH ® À€h¶U‚Ä8¡{ : |:ä‰J8ñ•ƒÞ£¥•Ì@c”¤RŠ ½4¼ì ¾ @ˆT„*bã«fptM䌠AEDö‹D0—¸Ÿ( ÅéX®(r„š Fm‰ƒ€€ˆBŒ L A„¥Mr‚p Ä ‘PJDtLZD %%\ÁmcâÀ/ã é¤(à”ÐÜþ5ô;Ãðˆ `€E@‹`€ˆ:.•@ø%‡`… …ˆ@ ÑÃ&¸S.…à@rŠàˆnJ¥KR±‰G8â¼@¡é!ƒˆPDñ8<‚• äâé…`q‚f„€´0ƒHԚЬ$%(†>ÜÍ dˆD""€hŽ]È /”Ð$B”È@% Q MDgëÌ$‚A}àB|Ð6<\]Ä®°Ã+ð2I…€„ÒàÐ&"P‰ ƒp€N É\eR¢0¨ N²‘È‚c¬ø8¼ ²¿hB 'BˆD4–‰p„šÐ<`þD ¢À P ò|Ý`ùY"Ub-…øaÕ'|(¸¡p@†>4 k‘¸™½óH$ ÓZK>@†"äÓŠ„PAŠ DhG‘dA•H š@ ˆ?´i 8щâX`„–Ûßè „ „TøF \ R+–QDœ”7^Ð ¸0ŠÀ¡XÀ‚o¢ƒ¥äH:JDbÏÔ D─Ðb ÐBq§¤§áFgþî"¢€ƒDˆ@ÉOC"€P ÑÄ¡sRB÷"àD\4 >x $ Q–´âZˆ5s«„$¢¼ãkA D&è¬O ¡ †£ªA€Šõ˜¦ 8!¦æ¸ˆ` JàÈÀpÂ@D {ŠÃ ,0¬² `àL«f`€ZÂ@  ¼¡±:¡¸D€ Ì€à n|È pFz€#¸@¼ Do¢À Xærð D$Jà?°3â "¢b¯ù"¡a~Á RâFð†ç^€àÀ 1²``^€à=0@—J@!zæÄþA|à.Á/¼ j”@:¡j2 :ÁÈ"@=êg2༠rhÎ…ëÌ<ê4 P@ º¨ Ž@:¡k &Iܰ¯:ÀPü.AJ`¼" Q7ìhWê àL¬3ð,¶Ïú,ðáã~á슴Œî§![xÜ&"(~¡gšK+pÖfyd*X![D ! N˜zh:æJÀâvhfÀP`¯`€iIJ^‰2¨€aÞºPöè(p˜:€JÀ±¹~á$A4 F*fá*„b‹&­ þˆ7Š2€C¡àH¡"ð?úÀ# ¨¬«Jç €¿È^O"Bq.´"t  ê¯I08@#¡ ú¨z€ÈdÄä0 ˆ ZG¥´ˆÀ/ˆä 0#H‹: ÊŽ+ºhÁ¶<,0³ Ç*p}J .ðÈ…ŸJ€7¨Àox!+ RD`8n±' zH s£ò­f ¾`®Xp V¯D€22ò(¾Ê!Á `é¡h r²gŒ’¡Œc>2ê…alâi¼¾ @¨ÌtÈ.þQêÀ² O=Šhm~A‹úÀ{šÏu”€:|@&"£$‚zÌd8ÕêÀ20tÈ8X* Xj-û¨ %Ô¦"n¤ã±æu$Cp@´Â n¬Ð Bà: Ö¤+D Êð ˆ, f È`È (¢€¹¾Àê!€ * n´\¡:%1 4@4€ öŠ¢ ² Ì B“ *Wâ°À%Ì "aG{´J f“âwT"Šë¢X“-t­ŒÈà:¹ç 0@rRˆ€Œ¨"*  áªfàz䮆šà ^þ@°.:A ¾€ÆdŠh@jP  h’P@’ ¸ÀBüŠ &úɺ´Å8÷h‡ª`ô÷¢ Õ˜²°f€ò*á‚Ìñht ì±fÀIJ&} ¬fTGŽV,î"B!´A_WÜðXOe.UYâåDò… ž• @%_¨uZ'"®51´•LXh/¼=¢õ>¤²¤ZL.´À\%‚û*R³aX‡UB; ð¨+˜Šú ü| p {Ò$ $¡æ´] øu\Š©d- ReNåÌ þâ":| ðà8V³ … Øå`E# &þpÀ/¤$¡`À`ÛE>à™¼3^`š€ (ÁL^€ô‡–ïÒ†Q6Í€àQð(!Œ¬h/¡z@:&ö¬.ò.!™¢€Ú «á°ÖOŒÌf;¡$¯¢`ÄxLG&‚]| ß”ÅfmÖT(ÁÉ(Á L*™” ´l.Z€ ` f‹`*¡:¨:A ”€´x!ÃPPƒì_N‚ÞB-P[4IxA#/ªrÑçr}X«€6÷rÌ ªsÇptÙ3&IWbò&0B5@"^ u_B©­# I":`vo7ww< Áqƒ—07*°€HŠÝ°†xa¶3ðêþ”.) w.èòƒ¤Bz±É „6z+¢zq ,h-2¼€" x‡µ‡øBŸ‹ ”¤Ö—½$¢Ø~=W"4€~-¡Ò@7FJ×fN×t€ta\—u Xvm·:vw¸©­w“%ÊB3 0@\­". -Üà„y?XF„LOrµqƒ÷~´ÅÁ(y!…y…UX"Rñh' < <:Á†%‡±à†9m":¡d”%pàr$aˆ/'ö«â–ø`Åè‰-Š«cŠ÷ÕT$b^9ÀV¯5•uYÁX[8ièÒ)ÚÐ*>ç°ÉŒAØÝ-(á·XYï)!þô(Áè(à . yÅ7*x 2Ä*a-w =[‡ ’#¾ ÈøÇ4@é&Y6èhà£âq hàËÝĵ”£µzÜïúÀjЃ–("^j­Øš Ò¢ê" .a±Zèâ”%"¬ïxAú 2 óæbÎzN[R “Ž"èJYy‰ã‚îåjîÕ6N’Ÿ¹+âàN~©o92~è A™~Á—.ÐM aLê{Ð ~©ÌÀMH¢"yV  Ꭲ€:â‚£î ÖÌf’ªéˆ á|À¦" Á0‡3r¾€˜yÒ¸ù+ä þ,, ~T Pm;€.ri ×hÀ’Orn×Ç ¶h€òD 'æÍ£wZ50:DŸøRÃ`mªQ[ú€,$6”wš'^É$Â8`Mä !tz.Š@«’Dagúëú`{:aN\·ò3áDï*Áåxú*¡DLv€bpàv«DV‡PÀe¯ Š Îà€l1š¨/!¾ ‰á ´Î®3›3:Éel‹Ÿ‘ ²¥>ä0'‚,HH[NtÒùèµÕc™Î7èP€ÄäBä ”©y8jýBœ5;*þô¢à:¢' êÀ‚? ²`$a áÒ "€>bA¼dqS_\?a›‘[½Ãb{ú€H>˜ A‚t þN[ú¾!ðˆµ á®^ûïðò®½“3€:â \Åf Іܬ§&Šú €@ödhPHÛ`à©AD CÓ™¾a¢*"’°àV.! ˆà¸F­Y§V”þúª†à€¾ô0Æ…€Ü)¨àÒ,CEV * >; ""Á ƒ4€ ôwŽJ úæ ! VÆgýÔÃÂÌtUøÎÒ ‡â0êÀÕ%A\½ £`ÝŒM\=ÖãStÀ/$ÁUd½0â ú "â`p Ò`ÜX¨â"Öi¥˜ÝÙ~Aú7Ô—Â Ël"*éÞˆï €€Â–XÀqĦJ0p ` p Aq |5Ûë]*D yÃ-K콂(á70 Uù]àžà—‚—ã ^áI# ú@?Òàð‚-,´)Þqá/ãr3Ÿ‹Þþúæ6|¢®Ÿ‚h`ï–)½«B•3^åW5Š£KÂå{àc»£´ó)@<;È­-üdÅ$¡æÕÙµ—`Ác0JÂ×mæ1tà–åŠú™Y^ê§^,*Îò$A½²'F0Ðaþ©©`!HW X OInŒÆ¢Àa¼ !t±j!ÀVˆà’n‚@§8=Ü>" ¾“sì–ê_ñ¹üz€µ[À•*Dó žµEÇ-”°è á”|}ª_;BÔ Š€aTÿ#:Á n¨8{È zÈ‚aÀšÀôg õ%B9~ñø‚‹`ålËþù{¾à/µl ÁQµ™"¬~ ¶ |¶“b#µEÄgß6KÇg~!Å¡ƒŸüËÿ)ºH 0 ¨ÉbUÈ hô.²àÎ9å?v*¤ñð Uz-Ô $9Jô £>0xýZ¸P €Nutzt)Í•/‰"ˆ0ãN.’2xù)B…}°dȲ¥Ë—0cÊœI³¦Í›8qâéƒáΞ ;ùÈI´¨Ñ£H“*]Ê´©Ó§PYŠàô¨D¥_QJ0"”AD E3áir¤Ä /Ž<Êp¤P ,3¾”ˆÓrÑ‘,DPø`tÅ‹£+¿9R„BRKI4x)P3ŠÀÐÊþµR‰#‰Øþ1˜á>%¸DMº´Q-Ž00D­z!$"¦cËžM»¶íÛK1ÁQ‡!/*,yõ¹Y¤ˆÑß1áô¾°7Cæ0‘/”¤¡îëØ‰JªÇwº ©8ÏN¾¼ùóèksá€#½i=º»ŸO¿¾ýûøóëßÏ¿¿ÿÿ(à€h Cpàqà‚ 6hzDÃ+Aè‘CçÔ²”)cXÃR<ÞãàˆH!bQp(DâŠ,¶¸)¿ÀøbŒ¦3O8 ã 5'¼h7,™"cKBÎhä/ÀÔ’ C¦°Ñ@,1 9ä‘'àä”2ÚR…;.–·ˆá=Tx¤ñ iðRþæBxàAWDôàÛšhò†ý¢fxxH‚&…t)è ×°Û ó Uü²N£]lD-IüÊ)=ž¡‡þb ¢z„3å/µè¦‚²ŽÙlbͦþâÊ6Ä<ÙR(U„#‹º£G-Êü’K©–‚Nœ`ÃB'lÊÆ/Ѥ³M ¡ sÇ'K(m}‚˜¿ÐКG\Å#/bFŠ˜ÁK%\ÁAZd@"TÈ«MdÉ#3 ò È»HŽ@–T2ܶGüƒèñ@99€€Ê/–lÜ7– "Ë/œ‚£$6¬ãGŒÞ8‘C4!ÈÇÐóþ¢ŒÑP# ]’ƒ;§Œñ (ƒ¤B®´d 3wT 1î”cÃ6¨hzJ¸ BåXrÈ/çÜ èÓE8®ÜÏ Ôœb ”“–†%`Œ¤! ‡B4 ÀË%(PA!/Gí.’¤ÑM0b#XP¢C=è…pÌàH XôQG$%ô bܬ·n“;wärŽ®Ø@Í/6xÜ£!@–ÜãBélœƒ8Ú"aKIœ‚Ž5ÄÄ2”†C27B£ã0ÂØÚ1ÞØ„C{‡ é ÂL8ÀüòÀ !q‡äIÜw! 0§¤ãúh/P Ã¡Ø¢þ;Þf K"Á†5‘‰PHAÙH:r04€€°8UJ¾…èàa?UeÄ8äéL2‘„éËÙÖmãKJ¤“\P£gè¬}Š`&ÕºöµD Eœ©[# «ƒ­nwËÛÕUO¼‘pbŠßÂÄÈer§dܚءèiîK– Ij)ExKŠPˆÆ†G i%CÒž8h!OáÏÓ‡@ÄA Þýi›(B(ì­~—²‰* ñØÆ6ô0i¹ã ‰j NŠ˜„ƒŒOøE¼q -§H-Mr1† lãYóÉE…5ì’2ƒ›ÊJžþ^`Sít , „#¬Ó%(" _Ó/Š@‘™*‚XDÿPP‚¼(ÈA4@ˆ@(B»-é#²…ø2H Nô 8r¿`& 0ˆ1©"!wX‡2Ž6[fXcÏM_~± O-ä uFRú€#Sœá ¦H“àÌ`8sÊèBÒl‘bHïgÈÁ6Òg‹:“ØÏ>7þ+‹‘ÙÐ1J-Ÿ…u¤±Dß.nÙp2ÄäÓÎ34 Q?7˜mYb=eäY?’HD¢P (‡ÄÓBà½@:HCr{¦(4¡=z‚A8ç’"Ì(Ðñ%8þ^PB}ÈBçT3ƒ”êÆ—H)þ&¦N,‚%\ø¤VG…Nä‰ „hBá‚ðB %hBŠºÌbáà¡d’Dâf0[ãHh*¬!4¶ÀE<àé rXC̨‚7$ UM€'(3.àß1˜b3·AöpÎ [b4¯+(ý"o°ïz`†4mQ b¬ƒB3…˜Al5àYHpÅ^î$œà– ‡€‹y„`G3‚ Œ „ Î9Ì· 3ĸx¹2âÁyàb¸6ùFö‹|ÃÔ-±Њ^ˆ   ¾8Äáà®þG`¡‚fÈ@J@†•¬æ % á/ÊrNô ß=ˆ}{zÃh …I8ðˆáT25,9‰àÐ3½…”åÂ%”*Ð ^P‘8ð‹\€ÑBÂÓ(,"Xˆi%ÁF!•„8‚*®_¥³$¨HšÇñŒ‹s0à Bxw —ákõ Ù0o· QcîpÙ#óƒ› ¶ W9@t,óh àø cpÅD›p,Ñà²0]WtÆ Ä ¼c ß–Ðòƒ  €Àp– i å@ÜpI0 à5¿¶îð Pâ5eP ] þËr ° NàjžÂ AÔ>–p •’EY ! ^ñBÄw @\  /Jпq$dPpÄ4ð‡ØÆE@J _€ÚÇ €m¼ÐYÛ…ñ p Ypbˆ9ôE3Àˆ¿Gð ’-@^„J`ˆ@fÀ„@pÐ ©§JìçZpt b !gÞ` ç ! ä"IÌÀ +ƒ¨àŸ– Üp†À¡€4Û ¶ÐaáWCgj¶`t  Áȧ cÀ Rp¨ 1ñ ߀‚ àþú# N S9 ] ?ô5²2Ô¨ ¿ z Ö€ ÇÓ0  u†Ô€‚¶P+pã)§p… ¼S„ö‘H€*2†y‚d 'Žð_ =—ÀW.! „@B^ÀÚE=P€B©-Ñ  dÀ ”ð4ð3)I¶Qðm0ñnD Š¿0†0àdY=p y (ÕWd]–dà’XÐ ŠÐÓÁ¶y—•‹®U ¨0$Ê€ 6À H€4p0lÀ z` 0Â"áPepN[Ä—½xî`äH#h¡  Hsþ¸ F#¼M"2Ü cÀ>¼à!P p âT\f ¶ NpƒÐ]` ?¶À eÐéÀl¢é±#+ ` ÏÕå“ ÅUWè0 ° ¦€Ô€ Û #p0úã®°xüÑ?X0YM/`X… q 3 ÜÕ G“6ÉÊqG /œ 0"‰àù… (€T‘X€/@ «—TŠÐ×%ŽP }ÐZ¶8TðdÓÑ(°G¿€y‘QІô©M •p@8YðŒh—º¥ w°$¦Ä0Ü¡`Kþéà @Dlp§ÀÔÐŽ|ßÀ ¨0'0Wª ǧ ècÐcð—†À fÚ,ƒ@á Ûp ~°¹¸Ð"§wÀ§peð¤§À î` ™PÄÀ p,z@ d56à ß`ppå€ ŠR]p‡Ê ¨ w gà~Œ÷ Ip]à !` CÓÔà 0+×°™Ð>åÖƒXûÑo/ “‡CaH_À¿q  P^@ 4Æ‹€üù•—€GGp 5ÑpJPP.Åq„ðRãZ¬tØ} "¼€ìZ þ¢QÒz”°Qî/_€ -Ј€E€/>º[¼€$¸ ¡ + ¼p6` Þ˜¹›› g ÀG9   #‹±é# ¹ Ê g ¡p[¡Ip# ± ±p0²¹/G» cà±°§ ±C¥ q5³I ²…=k)Êpž’ 6 %û°I`IÀÒéÀ  6ª !;³å³% ÛàËò‡€ƒ V ª”êuàQpPÿV·8¡7/¡À·-¡Jâ‘°vÉ Ê €¿@Z·1Z6Á¸0¨pÊ£€›pUþ€x†ëÄ÷¹¢»-›À«£{º¨›‹ÂÐ`P ¬k)(XZ¹*¶@µ¶Áh»f9°… q"R»v·µk› U¼Ð•T€Ôv:A.,”xs¨'c‰^ÐZqÔ½@M”‚Ë uùp€†±˜ºî;3~@…M¡ puvä@è¼z°Ž3‘ !€ ¼«4ÉKÆ5f†À R\5qsºvwäá ÌP Òe N "3‘\ ‘T'"›0+ ¡ë»L¡D'"p½Dñ.WÁÿ©c1Fz„éûŒ°”ÐR%€_›W?,0‘pþ@ ª@3Ñ¥ô \ÀeTÐôõ¾ûõ°)UÀ€‚¹à$ódª¿…Å›¹€N !EÖŒe ÆÎ” ƒe›Å¶°Å˦NàL¶±¦ Gá™Ç 7À,q³[ –¹Þ`gP_Ã6&L²,¡³ ‹±·Õ‡à$2-˹  „‡$\¶qô  ‘NÀª aÔÐ…Á ± ¡œ €•À ¼°YÀZ`SZà"+ŒQwË&À¥-Юç:@}P ^S ¡Q  iÐá’Rá<οÐ4 C > qÐþÀÄ£ò¡;Á/gâ¡t±M€Ì…PJpÌiUlÅ*„ܰ‹9P ~@N`Hà Ü p|ú!àµYtNÀ Íe ÊPÒSK$A È ƒ@ÈÔ°* ÒÌP· ñ= AÑXIਦ€! ¯‰ ]päáà F—xŠ !¢©†‡p ßp ä ë0èBëßÀÂB z`9”E]E  Uƒ UN -¨@¨02çPÓ~pÛtì m O~Ц¢¡|ð ,Áóq¦kDˆ0©D þPyq`D[Ɉðf@d@ŠØ-ñ„¤zÀ”a€s ´mÀq·à qÄ@Á LéB’`À±X„°o qòÜ¢“wo Ñ‘°c•ð­¿@% Z€Œ€\Dàu# •ðˆp¾ Ý:Â0ñ`6–} Þ€   ÑЕ)¡ äP»ØˆwE8fùë¦-NDúhhðs†` ƒ‡1Ù0±á † ›]@ßTˆ?²ßËâ²p3Þ  bÍ ~?/a`ÈÊP Zx¨p™pxe eàƒ0I–pþ)qÂp סàAPxzÀ6 )Œ§€ ý À qu¹ßÙð eà åPC Þ@æÔ  ®Æ ÉŸÉñ¸¸U`a7ñ}_ ½º'ÿºqà…=`” “q˜Ÿú™“˜èDIꊞ  ÁÚÌ& c’ÐWÐZ“^é/"*0¿ Ü @ 3x @±7fù%°~pðq Ým£ ŠmGœɼެsßpRÀ 9Ä @ò K ‚6åÐÔ@ ¸ðiN`%- ±à ÐnºHârþDg N0ØNxŽö ±0cð wpì²>ÍN‚eÊòþžHMÒµjTܧ0Ç~™®pÈÆ1ƒ°¼pN€‚Âð†óà óÀ%9ó@ p€å€[ù×O L’æªÔ@í5Ãæ¦¬'Üðë ±ØnZE¡é@ Î1†ò ¥x&3 ~=Ð÷Y“.v°ž>™•ðb°~.‘ÛËvÌ»MðãáJÿ’ _pà‚yl‚àyR Æ6¤Q%0£d4€5 —(Ѐ£dÍkë ó gA` †ðu• Ïc߇ æh® ¼PƲ€P¶pc0bª4–gçÐePH˜ø#ë€qLþh ] H€†)Ò,‘ßNR6«» †p °»Þ@ åpu• z a‡P¸à÷R 9ÀgpMˆ¹à Ñ Uô)H¨ùxA°›w° >‹) ߀˜œ ‘ª¦ Òô‘^‡W%íz°ü¿ó šo´¿¦)ß@blpx ±ŸŒÓ|i ðõ ŠÓ@€‘å—+~ü¥®‚‹pP¢ /þbê£ÃJ(éÇH¼ ³â±’@”è†>êà¢Ãë¢Ã&bâ%žŒêÑ ƒ$ñB’:A¨i« :èã—&°¸‚ z(¤/|À¬¸Þ„3N9礳N;Çâå ²B‰)PâÌäŽ TûÅO<õDÈ”2’+n¨É!8Ê@tB`ÎÆ*rÑô aÊ ô>:£ŒK¡QÊѰ¤%R„r¹j¢a !`ʰé 2rÑ(Õ_ñcMÂ*À=(ÚêäåɃà€Ã-iï„3ª-‹$á[qÇ%·\sÏE·,S„‰ÆÛ979GX¸^»€˜mäM7¦þ3Ö™`Þƹ°€9gÕÚþÌ7al%¹Va‡†8b‰'žXŠ3N¥xB3æ¸c?9ärC‰%ƒEF9åŽñÀÂÝ7›À¡B"Y$¬Ìx‹%u‘"XÂÀÇ,ú h¼„h á‘:ÊJcÛ_éAe«¯Æ:”1œØfc¬¿[\oyy!€'iá-IáB#<"¨:&-ˆÐâ Dàà…JJˆƒ ½É€á…H!ä Á ?è’+æ~Áå_☡“ޏöÚN4ˆª£Òr„,1|îêI.a;›ôŽH[ñˆK¤!3úE¼Àò¡ŽøB%ú€Ì ˆP!#l7µ @iÄ£èx! Ü„*TYÈ€þ/$<$°G0"(¢8)iW˜a!2ð¹èH åÀK¡+!ˆð¹é…ïqäKH@ ñµÀ+p š ­EÌ€h’À áJ ‚_À!Ž„$ˆP  †ËÚHjªÌé ŽUMn‚  „›¼€È_@â À#¼à…Bø@ Y`Là@ˆ&‹ˆ‘†H ÀŸKÒ‡:è³A%^éJ'Š… ˆ  zR”BàkË%l ,ï&'2#ÒHdÁ MÀ°¢•g*ápS7eÚ1`„  3Å)Çàþ¡•@ÀB‰`a[` 0 Kd¡!Bð€ÌÀ:È®€„1 _ ×Að@` :@D%06YðöñָƉ"$ qF²X¸„$^‰BBï Šh¨ðò5a&WÀÀ%:°ÌJ  uxD¦™SÎB,Ä`FX;;Ú| )ëôBÍêЄhá (’DPô! 5ÓˆP›ˆ:D‹Á3»…JÐÀµ0èž Ãu&Bu8­x«^ôÁe’øi „I€D ãn¨…4áiZBƒBäO Q BI;ßtþåBÔ}õ»_rá"ü0ÊrQ©ØÀmáEè¼`7˜t ž„o2a<½eld‘p…¼áµÀ¡ˆ'‡EÌ aná6‡DÌ a‰Â´€‚ªiXÀ]4À˜ýB ¸Cˆ^|ö¤nZÀó4²Jp&cƒˆY„lvÄWމ$”p¾aÙËg9h^€…'i`Å’ê $‘àó‚ FHÞ7¼€‹8"âðµ^¯@h¢G”ïx:  f€öÝO G‚œ5¢9¡’bEH‡8 ½êÀ%¨Û+5³™E8ñ—GÛdþXÕWæO_p„/@\4È@ 4àƒ›˜á „ˆÑ%°P‰+l7ÓøÂq•† c:A…D¼ à“ Ò‡B¡TXîðňћvµû@¸+ u¨C„û‹"˜ÌùÂJPPk*HB*ŒÐÀJp€…#`@\€±AˆKXùÕE¶«î`84AfðbÀ0% Mˆ/ÌðˆÎe¡Ž8‚"àÂ8Ó‹%^ÐÉ4Ì€7?3B0À Nô ˆ(IBÄý8­"¤ƒ…ŒIÙ²ä_ B^Ô%h"3ؤ‡ôb 8P‚&¢¨¶#|2pùþ à Aƒ^M<§Û›|Ý~e-”E1$9¿°È0fÁ%$/Aƒ+„XR/Ç#À¢OID”^I2ÐBDw:8â‹j”¡SâÜb)ñ#l’H¸ö@C]‹)o™@x„8ÂAz€G ˆPB½•bR‚ Äœ;N)áËT¿Á0¸D†ã“) x ü²Bàä#Àþ‚gêN˜IФ,ˆ„/¸ë뱃€ ÈF¸„–àHà¾#‹4(+Ð"€JÀÁÁqÄÀ‚ |ÁxŒªƒèƒ#¨¤NˆÀ¢?ˆ©Êxà„,€„:8‚²ƒ´X&­ 3@„â³@<¢‚J`‡[à £8(‚>èô+¦„ÂÂ/(<Ð4 x“';,‚"€ƒ¬ƒ?³D˜®Õ*„¢ˆCDD: Advanced binding features