From: megacz Date: Fri, 30 Jan 2004 06:49:03 +0000 (+0000) Subject: 2002/07/16 00:39:23 X-Git-Tag: RC3~1629 X-Git-Url: http://git.megacz.com/?p=org.ibex.core.git;a=commitdiff_plain;h=9a33358173f08013fdacd02c11f3823352bdae23 2002/07/16 00:39:23 darcs-hash:20040130064903-2ba56-1a4c2869ee98ac860b6c7f16036a922e5e6befc8.gz --- diff --git a/src/org/xwt/Resources.java b/src/org/xwt/Resources.java index eebef05..c11562c 100644 --- a/src/org/xwt/Resources.java +++ b/src/org/xwt/Resources.java @@ -25,12 +25,12 @@ public class Resources { /** Holds resources added at runtime. Initialized to hold 2000 to work around a NetscapeJVM bug. */ private static Hash bytes = new Hash(2000, 3); - /** The number of bytes read from the initial-xwar stream; used to display a progress bar on the splash screen */ - public static int bytesDownloaded = 0; + /** keeps track of which archive loaded templates into which package */ + private static Hash usedPackages = new Hash(); /** Returns true iff name is a valid resource name */ private static boolean validResourceName(String name) { - if (name == null || name.equals("")) return false; + if (name == null || name.equals("")) return true; if (name.endsWith("/box.xwt") || name.endsWith("/svg.xwt")) return false; if (name.equals("box.xwt") || name.equals("svg.xwt")) return false; if (!((name.charAt(0) >= 'A' && name.charAt(0) <= 'Z') || @@ -56,17 +56,20 @@ public class Resources { String name = prefix + subfiles[i]; File file = new File(dir.getPath() + File.separatorChar + subfiles[i]); if (file.isDirectory()) loadDirectory(file, name + File.separatorChar); - else { - bytes.put(name.replace(File.separatorChar, '.'), file); - bytesDownloaded += file.length(); - Main.updateSplashScreen(); - } + else bytes.put(name.replace(File.separatorChar, '.'), file); } } /** Load an archive from an inputstream. */ - public static synchronized void loadArchive(InputStream is) throws IOException { + public static synchronized void loadArchive(InputStream is) throws IOException { loadArchive(is, 0, null); } + public static synchronized void loadArchive(InputStream is, final int length, final Function callback) throws IOException { + + // random placeholder + Object thisArchive = new Object(); + ZipInputStream zis = new ZipInputStream(new FilterInputStream(is) { + int bytesDownloaded = 0; + boolean clear = true; public int read() throws IOException { bytesDownloaded++; return super.read(); @@ -74,23 +77,46 @@ public class Resources { public int read(byte[] b, int off, int len) throws IOException { int ret = super.read(b, off, len); if (ret != -1) bytesDownloaded += ret; - Main.updateSplashScreen(); + if (clear && callback != null) { + clear = false; + ThreadMessage.newthread(new JSObject.JSFunction() { + public Object call(Context cx, Scriptable thisObj, Scriptable ctorObj, Object[] args) throws JavaScriptException { + try { + callback.call(cx, null, null, new Object[] { new Double(bytesDownloaded), new Double(length) }); + } finally { + clear = true; + } + return null; + } + }); + } return ret; } }); + for(ZipEntry ze = zis.getNextEntry(); ze != null; ze = zis.getNextEntry()) { String name = ze.getName(); if (!validResourceName(name.substring(name.lastIndexOf('/') + 1))) { if (Log.on) Log.log(Resources.class, "WARNING: ignoring xwar entry with invalid name: " + name); continue; } - if (ze.isDirectory()) { - new Static(name.replace('/', '.')); - continue; - } + if (name.endsWith(".xwt")) { - Template.buildTemplate(zis, name.substring(0, name.length() - 4).replace('/', '.')); - bytes.put(name.replace('/', '.'), new byte[] { }); // placeholder so resolveResource() works properly + // placeholder so resolveResource() works properly + bytes.put(name.replace('/', '.'), new byte[] { }); + name = name.substring(0, name.length() - 4); + + String packageName = JSObject.nodeNameToPackageName(name.replace('/', '.')); + Object user = usedPackages.get(packageName); + if (user != null && user != thisArchive) { + if (Log.on) Log.log(Resources.class, "templates have already been loaded into " + packageName + "; refusing to load " + name); + } else { + usedPackages.put(packageName, thisArchive); + for(int i=0; icontent */ private int content_lines = 0; + /** the line number that this element starts on */ + private int startLine = -1; // Static data/methods /////////////////////////////////////////////////////////////////// @@ -161,7 +163,9 @@ public class Template { * @param pboxes a vector of all box parents on which to put $-references * @param ptemplates a vector of the nodeNames to recieve private references on the pboxes */ - void apply(Box b, Vec pboxes, Vec ptemplates) { + void apply(Box b, Vec pboxes, Vec ptemplates, Function callback, int numerator, int denominator) { + + int original_numerator = numerator; if (pboxes == null) { pboxes = new Vec(); @@ -185,10 +189,15 @@ public class Template { link(); for(int i=0; _preapply != null && i<_preapply.length; i++) - if (_preapply[i] != null) _preapply[i].apply(b, null, null); + if (_preapply[i] != null) { + _preapply[i].apply(b, null, null, callback, numerator, denominator); + numerator += _preapply[i].numUnits(); + } - for (int i=0; children != null && i 0) preapply.copyInto(t.preapply = new String[preapply.size()]); if (postapply.size() > 0) postapply.copyInto(t.postapply = new String[postapply.size()]); @@ -496,6 +529,7 @@ public class Template { Template t2 = new Template(); t2.nodeName = t.nodeName + "." + t.childvect.size(); t2.importlist = t.importlist; + t2.startLine = line; if (!name.equals("box")) t2.preapply = new String[] { name }; // make the new node the current node diff --git a/src/org/xwt/XWT.java b/src/org/xwt/XWT.java index 340033f..6ea3c0e 100644 --- a/src/org/xwt/XWT.java +++ b/src/org/xwt/XWT.java @@ -62,6 +62,8 @@ public final class XWT extends JSObject { } else if (name.equals("println")) return println; else if (name.equals("math")) return org.xwt.util.JSObject.defaultObjects.get("Math", null); + else if (name.equals("loadArchive")) return loadArchive; + else if (name.equals("prefetchImage")) return prefetchImage; else return super.get(name, start); } @@ -75,13 +77,7 @@ public final class XWT extends JSObject { // JSFunction Instances /////////////////////////////////////////////////////////////////// - /** Helper class for defining functions. */ - private static abstract class JSFunction extends JSObject implements Function { - JSFunction() { setSeal(true); } - public Scriptable construct(Context cx, Scriptable scope, java.lang.Object[] args) { return null; } - } - - private static final JSFunction newBrowserWindow = new JSFunction() { + private static final JSObject.JSFunction newBrowserWindow = new JSObject.JSFunction() { public Object call(Context cx, Scriptable thisObj, Scriptable ctorObj, Object[] args) throws JavaScriptException { if (args.length != 1 || args[0] == null) return null; Platform.newBrowserWindow(args[0].toString()); @@ -89,23 +85,26 @@ public final class XWT extends JSObject { } }; - private static final JSFunction yield = new JSFunction() { + public static final JSObject.JSFunction yield = new JSObject.JSFunction() { public Object call(Context cx, Scriptable thisObj, Scriptable ctorObj, Object[] args) throws JavaScriptException { sleep.call(cx, null, null, null); return null; } }; - private static final JSFunction println = new JSFunction() { + private static final JSObject.JSFunction println = new JSObject.JSFunction() { public Object call(Context cx, Scriptable thisObj, Scriptable ctorObj, Object[] args) throws JavaScriptException { if (args.length == 1) - if (Log.on) - Log.log(cx.interpreterSourceFile, args[0] == null ? "null" : args[0].toString()); + if (Log.on) { + String source = cx.interpreterSourceFile; + if (source.endsWith("._")) source = source.substring(0, source.length() - 2); + Log.log(source, args[0] == null ? "null" : args[0].toString()); + } return null; } }; - private static final JSFunction date = new JSFunction() { + private static final JSObject.JSFunction date = new JSObject.JSFunction() { public Object call(Context cx, Scriptable thisObj, Scriptable ctorObj, Object[] args) throws JavaScriptException { try { return Context.enter().newObject(org.xwt.util.JSObject.defaultObjects, "Date", args); } catch (Exception e) { @@ -116,7 +115,7 @@ public final class XWT extends JSObject { } }; - private static final JSFunction regexp = new JSFunction() { + private static final JSObject.JSFunction regexp = new JSObject.JSFunction() { public Object call(Context cx, Scriptable thisObj, Scriptable ctorObj, Object[] args) throws JavaScriptException { try { return Context.enter().newObject(org.xwt.util.JSObject.defaultObjects, "RegExp", args); } catch (Exception e) { @@ -127,13 +126,13 @@ public final class XWT extends JSObject { } }; - private static final JSFunction listfonts = new JSFunction() { + private static final JSObject.JSFunction listfonts = new JSObject.JSFunction() { public Object call(Context cx, Scriptable thisObj, Scriptable ctorObj, Object[] args) throws JavaScriptException { return Context.enter().newArray(org.xwt.util.JSObject.defaultObjects, Platform.listFonts()); } }; - private static final JSFunction theme = new JSFunction() { + private static final JSObject.JSFunction theme = new JSObject.JSFunction() { public Object call(Context cx, Scriptable thisObj, Scriptable ctorObj, Object[] args) throws JavaScriptException { if (args.length != 2) return null; if (args[0] == null || args[1] == null) return null; @@ -142,14 +141,14 @@ public final class XWT extends JSObject { } }; - private static final JSFunction xmlrpc = new JSFunction() { + private static final JSObject.JSFunction xmlrpc = new JSObject.JSFunction() { public Object call(Context cx, Scriptable thisObj, Scriptable ctorObj, Object[] args) throws JavaScriptException { if (args.length != 1 || args[0] == null) return null; return new XMLRPC(args[0].toString(), ""); } }; - private static final JSFunction soap = new JSFunction() { + private static final JSObject.JSFunction soap = new JSObject.JSFunction() { public Object call(Context cx, Scriptable thisObj, Scriptable ctorObj, Object[] args) throws JavaScriptException { if (args.length == 1 && args[0] != null) return new SOAP(args[0].toString(), "", null, null); else if (args.length == 2 && args[0] != null && args[1] != null) @@ -160,7 +159,7 @@ public final class XWT extends JSObject { } }; - private static final JSFunction textwidth = new JSFunction() { + private static final JSObject.JSFunction textwidth = new JSObject.JSFunction() { public Object call(Context cx, Scriptable scope, Scriptable thisObj, Object[] args) throws JavaScriptException { if (args.length < 1 || args.length > 2) return null; if (args[0] == null || (args.length == 2 && args[1] == null)) return null; @@ -173,7 +172,7 @@ public final class XWT extends JSObject { }; - private static final JSFunction textheight = new JSFunction() { + private static final JSObject.JSFunction textheight = new JSObject.JSFunction() { public Object call(Context cx, Scriptable thisObj, Scriptable ctorObj, Object[] args) throws JavaScriptException { if (args.length > 1) return null; if (args.length == 1 && args[0] == null) return null; @@ -184,14 +183,21 @@ public final class XWT extends JSObject { } }; - private static final JSFunction newBox = new JSFunction() { + private static final JSObject.JSFunction newBox = new JSObject.JSFunction() { public Object call(Context cx, Scriptable thisObj, Scriptable ctorObj, Object[] args) throws JavaScriptException { - Box ret = new Box(args.length == 0 || args[0] == null ? "box" : args[0].toString(), Template.defaultImportList); + + Function callback = null; + for(int i=1; i 1 && args[1] instanceof Function ? (Function)args[1] : null); + return null; + } + }; + } diff --git a/src/org/xwt/builtin/lithium.png b/src/org/xwt/builtin/lithium.png new file mode 100644 index 0000000..54c5df0 --- /dev/null +++ b/src/org/xwt/builtin/lithium.png @@ -0,0 +1,335 @@ +‰PNG + + +Â3¥•bQ¨i‚Z«’(ñÚ½oJ¬à(Kœ#­*–$)’j¨ë’;`ÙîÙݤü¸‡ÝÙï Z šÆF÷ÔV»‡çþÙ↟åƒ?orǏ í³ÏÚÖïŽ,çÌÝ?|r<üôÉéÑgg“ãÁðè`ðdà ÜӃްk9C«t¶®ít»mÓ°LÍhmµÚmkÀ_¡ÉÆƦn(Š"­«r}и# ‚š¨Ô”sãcÐôc~ m=îóZýGnøƒð3¢„ÿ¢G߬“#" +bTŽfy–)­£¥ê=Š%rِ³òàNÎ>å‘~Ô ë¦dUɲʔûD!ìÿp¨îÿ{Äٟeóó¡aœôº^gÐ3Ýßî8>Ö¬³â|²¿~öÃ~ÿ‡Cçñpëè¬ã9Çgnÿà sг܎áZVÏÞîv,×6Œ–i™†nêÚ¦Ö²5ÍÛ7 ­ÕRMRWdh{¡!‰¢Ä±–eQÏ%ƀ—B_Ø&Œù.½(C~<ôý€FJVptt¸ +bÓobá©Ø%œŽ%¦b#3ED¢ ËËËKXY ÉêìœÃÃ-ýhÐÐ[¼ñ;«ì|ªÝ9|(òGGœõûƒÚÑg†q| »GšõÈԏ\ãx` †æ`¸×?Þœt×ÔtS۴Ԛ!˦ +T6 YmÉjMÓeE +·‰%–ÄHó°eðªºF,¡VQ†Š(Ó(—ÍFZê2Ŷ…+C>£:|UvÀ×ZÊÁþ½µOÕÊÙïùõãDæñ_ÖÈÓOyöøX ý¥Áਲe \Ó<íö°«ŒƒážX ÚÖáAØ0tœ¡k ¬n¿íl·Ì¦jr ÒCKkµ[&@¸[Š¤2T$©©‚\Hl]à¾*#Pˆ2/œó¬' áé5Â7~)x)èEŒð%làFØӋ Wv.…€S +Dâ &žÆ“¡&‚E|KÒL Ó:üúTÆÜ, Y(±L ˆS*4BfO㕞y‚¬Pù%¡Çs”²š#…ã…e’i 'ÒñÜ2‰gÙ –F,MPd@N®ªñ<+éoh¬ªCë +IëÒª$WëÒ]AÞqþÀ¢¹ÁGy¢ÿ{æͽ'ëÌÎ#­â| J»ßí64äÁ¨vªûŸ˜ÌÖ#S*Û§®28Þ¶ÎöŽ\Ý}ä~øÐ zG½ÞÛë;ΠzÝnwôí=ÓØmCÂÛ´•V{So·5­ÝÉ6TIUÕuYæ”­Tï´ +ß±«ˆxàe¡2ÁvÌcÁøH2À:…<x‘:0Ê× ÓተGŠh$¦t*ì'°˜—;¦g + Ph:•ŒFÂ3D‚¼5—œ†‚5>•šHÃá±é©I>œDˆH ÇÇÃäT26‘ŒEÙt‹O‹(•ŠÇX.2ÝêÞ •Q*Ù¥Z½r_cJ<üP$ T¶ˆ²YºBAΑ‚ÉáHÉß g€ÒŽ(‚ÀrdKb1@Mã|ÀxŠS…Q›å[|Ž7YÜ0‹¤-M›ªö5Šw÷«¼c¶ÔŽé8ÍÖà¡¡ ?“JǟIìÇO)áñµúä5ÎlBy¤QöPâG2\©3Ô~·a:ªý±Ñ92:Ž5°Z½–é˜jÛ0míþ&䡦ҁV—„MÃPôz{ÓÐ4|”X›]—¤š*ˆüݺP¥YÄ0Pžˆ*˜È#Í il4¦çi7Tš ˆsÐç¸4D|áI +‡çéQĨ"XÚt.ƒMg Ù4F#Å¢¡èÔL ԅX$µ4I÷3Ћ%ÆhlîôôX†Ž€¡JLÎÁp<&¢ÉD0^ËÆ:íFò]±W 8­Â,×Qâ&‡´n}¹,T€¼¢°D`$–œÆÈLƒˆŽa +x V{ꬶÛdç3‹îª¡ÁNJxØå7NL¾ÝÕÖݝý#w³w`v 2u{[î9<ñv¬®Ù=Ø긆Õ3šš,r 4Ȑ›š +Ò­™ª±­µÔֆÒjm¶ {?€LY›çA-x‰Ê<Ãp¨Xb=Ùö7¸¨#«/¼ÔÈ3…áK/4Lmd҄§Á0žˆøáT!£)ƧAµ}Å8†‡"¡É|ÁD,÷QÀKӓE,ñ]HÆ}cXflT¢’Éæ‚y»žfhT*X™)ȝf©¦Û&è©Ë3ð7æˆL–Eù,ôs’ –¯Ð¹¥’Be—–"i˕:Kq@ +ŠH¦o“Ù™A@¾ @…P¾ YãM²M±ÂoV9†¡Ùª`ˬ¬K„ð°ƒ—ž úé§óô‰"?>3Փžm}´ïl9;ûÆNÏ­«[ÕÝuià®mœXòG]Ù¨;G»½mÅínôÚµd‰®fÛÚ¶©ÚV£¡Cž–[*Ü×!ÑAÖnn© š,7”æAzð & àðŽ»·Â‹<Ï ˆFe1ü¹‘“õFf=' º¹mÔù€E +%_VP:ÇòEœ °t† I ËX<]ÌÎL—îä¦1éN“ï¦qMʤ5ãý¼.¥Ù½;Þ.5§¶7tøâÐYcŽë’å¶-ËÝuwŒÁÇ{­áû£CZ}2 jO¶n[Ÿ¬¡þa•?ܧÛGÿ¡+lâÀ‘ÝAmó@Ûê‹ZOSÛëŽatµÕ6ꐧ՚¬@ʖÔƺØl©:$\“\ƒwdöt@7š¼{ü@=ݑ:N];讃P \©7´»Ý¶ãšÖ Õ¶[vwÓ²š-Û0͆nµ4So¶õ­- ¢v£¹¡ +uၶ®z}}[‘€R£ÞDW$~ýÃó+,{î…± c¯½~áãâÅ1¯VÃŽïØY@ÁÈ#ǘï"ì‚' Gǃù($ p±ž…õ…| , û#‘H&‡§ÆG6˜€oMçcþDEH@<’Ì•àŠ¬àÙ¸Y)ˆ÷Kµ®ZZ†>K!ÉPŠDI¨±Å’©”°B­V(¬H<!D¤qœ˜Á0ò㺝ÁIÃi8Z(- +(MшB*é —Ç°X8ö‡‘t,îK@ÃÇ¢¡±°? E±¤»8 ŽJV& + ™6^’±äkS©,Õt®t_A'Öè\²]‘à„êR† Š™4A‘Ì“86“Ê'q"›šIæ0œ(.ͤ”ÈjnÆóVI$PñŒJÅ2Šg%*‘“ä®4ò¤iæhà䞶lœ*âc‹=z$íý¥×øð¬­[G†¡ 읝ý}§i¸Ý»Ž÷èÆïLÎù¸Îô?¢ªC“Ø>]aOºÈ<ª3môÙZ_.›&ë ÝL“ïtd˖ÍÍÆæ¦bêºÒ‚Èà--C5ÍM’·ÙÚî81 U’eQ–¥õ†ºÎ 8Eð&”ò¢P¯Ë<ÿ`Ċ×~¬R#‚¼îqñEÄ14ô¦á@ó +)Ú”ëœÈ§bQÈy ã9l*Ž0 J4CÓ±H §ÂáTÂ]$¡0/`Ž –)`K5U¸@cĊÂE%A +|• iabtm”Íds¹$–'`'O½ÐŠ$H„“8`V(Âk(”¡Ê9‚rÆÞ) ªÁSèÎ]aMhp‚¡ËÚV»atÝMc`oŸ Þï;üÞç;HûÔ¡´ßý[ÎølýýÁï²{´zÇuh©g2¬³Å7Ý6oì7ËR WºçXõ-[ÔQ0Zšk4u[îØFÛÙjY-s»á¥ë½ÍMÛÚ³ >™]Ð +°¶›V§³½·en¨š®È ÅdEÝxð@X_«ß«ów‘_«²¸YEÏyNö¥q-?j·g^žX{㳞³õùýaoT6:ˆÄ±Ñ8ùL,ÆQxŒ…É PëT|,8ŽSù”?’ˆÎ„©h>*l +Ñ|W$ËlaS©”+TÓØ N×ר¥Tåþ¡$:.´­mI’ÓU¤“QeÔ6;¨*'6m|ß-YpNŽ¼µ«èŽ*÷Úz·kôw՞ÙúÐ6zºÚnÊV[ëë–ÓÙqŒ]Çr,Ã6¶¶µwÐ1w,£©‚h«ª´1šNJ’EAêlU”ª<ËÖEñÜK/ +¥e°Ø([¨Ë“EèÌJK —KB¹@â4§²d'P1“ˆ§Él2™! àÓä™#rq#ˆ÷q +AðŠé÷=*ñlšÒ„7(m ~—Ä0²\Ì:o8 É2 ÃrtÅ2ïnõåä¸ÊsüÓ#F{:DÆÙþÞ±! -ù`WiÚ¶ªÙm©i),Snï(ýmywçAÛ®ÛÝmëÀض-§µ³«µÚ²éŒmÓ7uøE¶³µÕ´Ú@Èã½-«­B’ JAã7¤ºTçï ’ÈI#V+•ºg¡^D¼ËK½{í/háM>™Úщ¼‹@Š©X(’ÊcQˆk‰|,±Xl&f5•˜IysТp&}‰Pª@<ÂDãùh^X*¥b¶Fà-h›¥ååREX"€La©¦ðÔûƒ(’òΐRØŠ‘¡ò™™\6 ÂMÆÅ6“Eˆ6¦1–‡»‘,Š<“Ä—Ä™Už ‘ͱºB!ՎF¶øå“ÆøT—·Wí?Õ*'Ÿ™U÷iWrNµºãº¶å[ÚΑ*9^=Üç7N$ìV‡:¡í­H½rö…¡(ôÞjÃM´;5»-˜¶Ô²Í#Ö4mYk›VÛT´Í}0V–ÅkDzö­¶¥·[šnê²ú¯÷å‰t8ákN䣑$z*3åÐ›I$/Å¢)PÛåðTLP¸P(Ô±Ì +«¡J©´²Ù¨òÀ2S ++4Ff³y|SÌ +D¶ˆy×,ùI¼OÑïx™ÎåY™ Ø:•BU¼ª!\Ò¤µxJ5jU˒õÃÝuûØÞ;èõ:Ý¡ÕîV÷¡*šÚ’óHeOŽèê'GKÂçMáDÈ9ÃÊwͲ ¥8¢|°%­ºÑ—5[•¡JٖÒVô]]‡€²š–¾m;–mۖelw÷l×Úuö¶¬}Ç°v¶v Ô\Քâ=QÐIâ8od–^¥xéîÈޞ ~þ҅ÿ´ü/?N¡õy`@¾¸„…¾Pè…Z$¦§=ñNDcSyPc/sGÃ1 L01‘ŠÆ/AÀö|S6„I¥üQo¨#“Ëvˆmjt¿Vj(ŸÏÔDº˜[‘ȬȒ¶& ²Ä¯ J€‡½r;C€Òch üRٛÐAã)¢L¦1ê}l†©ÿÆ#<ËITŽZcH$°tµÁR|ƒFr‹)©:… ٱý²öԔNNèݧ2÷t€œ¿ô)ë÷GÅÖc—\sMZq5¡g֥ݮX·:œnjCåƒaÝë7ùA—Õeý`W³zòöÁ¶Ú×5g³é:š«jûú†Ó‘;ÖîÎúNÚÞìZ–Ó6»=ÇuÚ N×;¿·c©Æ†¤7×U]‚ÅÝeY¡Ì²\™ñΨrŒ7¡´â%ðó£j +Õ+´bÙj¹ˆΉ…:SÌg  ‘ËåIHKe½Tñ~ŸÉ™dÎ;±cT”¢ê|šRë)RU oJí²tC:‹ ½{9{P]9²(óP»ßµëZÒ±kn›®Z7%g$z÷”'zý*:îÑêG²†j}ØU4·½f·×wS°úŠ~ØÞ˜RØ ««:.B³lÍ´¼sÛ¦c' ñ-k |”éè +ÄP]á Љ"ñ¥Rћ¹P*Iñž)¤Óƒ2ÅKyKgK¹é\8ÁßÀFf«€`HC´ã%ø†@†¡I[-]žíYŒ:ÔÄG½•½‡jõÑc¹öø‰zZ«î­J®]—M6wۆºg«j³'®;mÉèK¼oì«Þ³}~Û©›®ÏèYJ·#™€.è†lvU³¯Ú€H×ê¸înÏiÛºÓÑôVk£©éšªHÅU5%Ad8†âVà«l•óRlË0+[~þÒ_ÃÞk?žPeŒN +òB3$¸@=œ@q>BÑ@Ä*’âL`‘‰p™ˆ¥T8šÉd¢ã%hã<[j߯µkÄh¬ +d„e†£Ö»æ¢³vîo8¼ðP/rÞk£½×þ +Ƌ«+^\dTyƒ‘hÔŠDƒÑTÄ hcñÀ¸Ù d ÁèT*J,¥°H"‘´4.•ŠP].Uó™R…¡ˆbI$Á®r,³”©VYºÌ +„ìU´”)AáAD.“A(—Æi*û+0¨È¯REÄ®þc•syšPª õÁJ.ÇVï2,” +Œ&@qòû½+‰ ÁQ¡k›„m<6•Á"D8 –*ï÷ b‰T(UÁðX¦Æ× +•åJ©_© å<*ÕKD®,³t̵fyº +p‰¬"§Ø÷sˆ_ÅHYÆñ» +›F-gUÚn n“Ï1¸å.CÚ&œm“ÎI8³Êýá]ã¬Ï«‡”:°Þî¨Õ†Ó¦¤¡E4ú2Ñé3üGî>Þâ$}`±ŽÃKG}ýøXÞ{hmœ9µáPu´®3wÃq´Þ Ý4ݶ0¹»VogÛó´»ïî´Í¶©× QòA2Ö©Z_ƒê$U×x¡Ž“ +AÛÇcñ`,ˆaÓ±|8–I¥òþ,¾\Íçc›j~©t¿´ +QYÍe…GD‰[Cм,Y,Årá6žƒbŸÇŠ¥<†‘ÅÜLB6äBË.Wé NûȂôÖ½ò’¢Í!T’x@”_&ùGÉ +KÝÕȺX`6XBlJ¬lʂÖiɝž¤>¶¤îC‡Ù¼ËXÇ +éÙPŸž™ÒqßЇ®¹î€ 2ݾÔÚ¬:lq։È\FyÈs—jŸšõ#WpNTíØR{R·+túÒށh¹’Ù•õž¶±¿m»ûM·­÷:6$ºŽ¹gږã쵝Ýí]HáÞ;š›¯®Kk¶y‰áW…Uº$0Uˍ¶vg•¢€ +÷Ò߃|¿6üñ7, B½6šâ‡j‚8흷 ‡¢SPð’ß;© @üG€Áx0‹{cOÑX>–O°¤¿Žk" +…LM]É.oškTv‰c©\£WPqìm½DÒÞ’^°'1’ÎaYšÂ³ËˆÎxó›<>P›Ý$TQ•FU` +Gg—+›5j :K, 睒àQ|W‘ˆ’gª dà¹ʧò”I… –†òõƛ€ˆ"ˆC‡°GR¬wöN$i©ñ%5Òû§HWPÙTsrOEŠ+†û0h£­CEèõŦ«Éց"9½-É<´éæQ¯¬™„sÜ/ïöVÝÃ:{ÔûoÊ£ÒuwîаVëä¨utöoî'Ÿ ¶‡ë½¡¼ÛÛ°ú ÛZ×ÚnkŽm Ë6×-Gµ +è$¤ë»Þd^†-Ð DŒ´âïþþ?YÚ ¿øñ Æëzðš½A$"áÑ?>ðGBž·õ‡¦ÃÞہp*NxW‹¥¢`š±`&šÈB©,Ë'°Íe‚Leò¥ +‡–몼J”D´–F и7ü—~#ƒÞˊXè 4*b9DeqŒô®k)ÓY / l¦X¦3äru)K7\§rÌ]t›‘««ô»z¯!{¦Uåfï_6lÉkª! +–Q·ödyؗ¶ÏLñQ_°ë¨b—Õ¤ÁÁ–xØSƒÁ–ÒëY­NWçu·Õì¹|ë¡#‡‚}¸î:ÍÃåðãÎÐ0\Kqi×ñHÐݓ´=µÝÓ:îä>/{÷LcßãƒÚ´¶ µ©)JSU^d +¾óÎ;_zÏÀ1x|ûKïþ ïIxî‹/½úâ ïS¿ôö¾þúí/¾úúË/¾úæ«·¿þæ«/¾ü>ý›o¾üÖ¯¾{±~óÍ×£»ÿúë?|÷Õ7ß}óõwøúoíW_Á+¿þî¿ÃúÍß|÷õøîË/¿ûæí¯ÿý«¯¾ûÞä½ÿËo¾ûê«ÿî«?üûWø|ÂWÞ[ÿ +¨¼þê9ÿ36ç_ý™÷ØóKh¨ÿ +?¿‚ûË¿¼|ù2¹zþ²×ÈW/_~ šòÊå¹ë×/_†f»æ0 M»—¯^¹æmÞº/¸òÖUxàûÞ;f=€¼7ÿxäŸàµW~ueöš÷ÔÕº:7û«+sׯ]^¸9{e~aîª×|ó‹· +\‡ï|}öê[×®^ûÕ[°\y Xðòÿ „·û“s¯¼|ΣÃ˯¾âÁàÝ¿òê˯¾ì1 8ÿ_½"ö³Wö³W`{þUÀàü/vùgÐdPË`(®þÚö²×¼—= i=( +$•JŠƒ¾]{ÿ~¿½÷÷}& Ά&ô‚Ûüݜ·ÂºEa!šŠ4h ÀƒêÀE +·ÃIp…þpc3XÃ؀F@oÀ‹ZO£[q„IüÁȏÈlÒÇ H’s\öh%´:è,ôzŒVFÊ`¶@ R`‚FOg ±VŠÃˆ`£!Ò3”g)&ÃZØhDŽ£08<\è«â³ +šõÍŒG3X|B…^QHŒAîh„<¬ˆŠÐ+ ""T”h4ªBò¢¨°¤í /lДàE¯ÁˆDŒALB![ð؂‡è +Íh â=ø¨<¡ð•Í±ÞD“EÁô °)x€‘^PxAÑ4Ä&†…±‡P +y +"›ºlçŽ]»^ܹóŝ/íxi›]ÎÆq¶Òm/í|i玗^zñ{;¿÷=5èÕßÃÛ¶ooÛö=øÁßmÛòó-–|cÛ÷ðµr:ÂÙlÎC²ô8àÄãè à[òT…Ê:A + +<,*‡€àÅð&¸G ¼ƒÒÂp¸H£\êFBžÌ äú7C454Á€šˆš››õM͆ 52c|hÇèfºÿDX„&#’A¼üq„ƒŒ`QEÐ +€ ૊²ã`¼mŽ ¸òW|øÀ·×ãóù;ÛOü²õ„' Ð_q'ðŠÍ[°Áy¨&À,ª<•Š¬‘gZB¥!ð:A´‚†  îp˜„~A}¾¥oÔÀ˜7¢š›€û665Á©&ôb5w$¯èPz ­Ð+„ Úl†3à2T“¥+m› ‚ +k¾öî#ø=+PSly@i·Ø„w€Ey*eøÁrށy)±M€¶ÀÁÖ6æ‚þa£ñk ÐDGSCI¥±­¤/ilÌé'ø@$Ò'¢$ð€BIbD2EPšˆÚØld)P”¾õe,ÈíAڙh›ÕL!T° +PȒ,VäRg¡YTV+K3cgM´cÙðCF”º ©L†ºûZKxJr ²|—š*ÝäàõF‡ºÀYv/EÝ# ¾ùý[wW#+þ^é®Ë©ØÔÜÔä܌t埗YÐpju2)^[J§Å¹ôðüttêóW1 âP¿1—§Gä™ñ±Ôø?T€)ÄððP,æ÷l°ËÓÛÙyª§ÝE¢šÒ|Ó-ÓnoW ÷´ç„Û㾍¢Êd"^Á 3‚*ÌÈb +(LË/PB…AŠ£X1ˆ†8D Ž1à5‰1 9fªG¬Þ F à‡·6 !0aՀ^…Q­QÓÔDÐCoÌå …oáK QˆH& f0w .bÆ\ÅAho +’ŽUm~‘âñ<%ˆyAb ¢*ChŠrR\T\RŒ†€Ÿ’†&DâæFppT›1‚—> +HÀ‘,ÉÌâ3›a(,©Ažk¥ +W‹Åb-h=èêõâÔy_çonQf“ÉôªÉÜüª‹ÊV2ò€BmÎ9Åã_s¬¥CÏÐä2´ +}"ÕìbMƒ€rq/ôÜE^„H€°¸¸Dq +ˆN`‰’­h|í£/9¬!A à>—2'u ¸ìÁF¢«B`I…2y®x«‘Âd,z´‘Ýçì@¥xÚÈeŒŽ1XžØŒ +܃eoYOõ{„© /ó?Ê·¬°û„iÑ7ûïwî824&ZíG-|Öj[+­ZL‡/-öÍ_•¿Xq”ª“¥™©ø\zlq^J'E9˜ÿýçÙUõtz*uaèBzd:Ù½|ßa³1œ„ËZÑ4¥nñõ`2ÊçÇiFÇPJ C`ùؓé‰%OA +i“âèX·ÈÓlXD¥ÙàOÄ (؊•€àœKƒhÐJE%ÅÅ[·bú¼„ˆC,‡ +ƒpވ”7a]Š_˜õ¹3eÁb\1fR7amƒ•™$CP0@4·Z ìlY«5 r~ÕffyÎHÙÑ€Jñ ÖBYÁ5#ØBd[X×&HZ4\ãùu>u[Múú™“÷?£Ù ‡k> !Êfµ—훿$Î\åëéñÿõ){lGìZZºž½”ŽO_N§¥ôՉ©_á³jQ‘ä iJšLþí2`6˜‚%Idt ‹…RמñŸ‚¸ö{;;½Çn™MÍMÍØ[@„¶ž0Ƽ‡6mh +QÛä™ +Ø£îÐ7–`vSƒH¢,¤g‡0'Ò_ +Ð܂ 6…˜Á¢ªÀ¯È‚²p +EV - ò¨rÙÚBRíƞRø.,ÜZœ; ½‘Ëœ“ÌG/À(x¤Ä $CAt=„VÍðU!,± +n-Á .rã z> ³pÉ5›ôÀIL¨0­chÎÃÀ­Â¤ìã*…>årå„2呸¤€·ò£tã +`ñ›è6lZSc(m䱨ß؊G¢Í‰S‚¥!¨“F,)” ;–³‘Å"}¢i *<8À$9‹Åmy±„%`®t6òüÚQˆî V¬ÜšÍHƒ²`!fa 0 ¯-f†59[ «§íìõpØŸî¸ho?¥Î§?]>ò9üskØEsk³šaYFýãôhzq|ôæÜðÒÒúçë¥o,M,^K,|<þُŽË‹rúj"=—úàS6Sz^’ÇÄäTLúàîkà¬Ò­HQ¤+¦Õ-_w¸Óöõ<o1c\"qØØd2ƒ{äm Åã$òR(r;€EžÚ9E¡RàCÉ ’'ÀøBrnØPTmA#å|ƒPßbPD–`Æ\ÓØLŠz€J‰;§,,Xc +R3B"…ù[0æMš€QXrMQXåo€¿{oÀ( ðh=À„ÉÀkBZkÆn/ŒÃ ¥hLkÓ›…ãY`M»ø,ö¨q £ÍN›˜,øö;Wš¯Vg>yÕ±ïì\Ü-Nœ@¸À~Y#8 +Ll&4 +EXCéõÇè”ëüÈõlnüäåú¢ð#¹Á×æÞÓ`6—4’^4°!¡6D)ÀmL¦74a…»‹xx]I§µ[Ë-X=ØƦ:,ø°ŠD{ )V`M‚‡ðÀºs¬³&f•6ÚxƌŠËfÁF؋f·XxÆo .4ÁÕêçö©Kíwʒ±·G/œúU,îõœ*-@DáÁšš^c‘s«€ãe-s^¸0›–®&î«3ÇêR¿IÈþzù~FýSY\e‘˜HG?-ûDíOA1&Fï®°4ÂJrÇ +Ii•nò Q ›U +“ÊËyÇF¿T.}^¤Ú(ö)ô…]іb (>’„Âä`£’¿jÐ(L–´ž›H iÈ$Øõd&X} ¬‰»ÍhÆ܇å &KÙÀFv™³áâ6D4ƒü3C k¶‚ê6èCLÓSµYìP—en=wEhO^py¦â§Îü»ZmÃN' +!ýÃÊpfŠØ€Ãzž‘HtuÁˑx¸¬€½Ë¼yq¤GNûÂS³g¢¿-5ñkìÑ{Vî ³v”^_·ÚìLæ‡;Gæ†.%Ó©Ñ?¬Ð¥»¢’Ü/Ü»Ëð+êáñ؄,&¥ØÔïVØWwDĸ8þýÄ +çz`‚-Hg)8Þïó}]ÜGñcḠ:aû&±}ù+¤Ø¬LzQ©]‘ë)WÊބÓ^«R0¤HéýWšu`Èóre?bl)$ŽQ¬´î‘HI®=; +›~Y¥{9 +; °Eæ ñf£¬©Òv‡ÑjÏZ)»Ýjáí ÀêÂÈei PTAé±SEZþ +Ig‚â0E +b’†°'4FÑÖ\É¡Ñûd”žLLS7Z HÏK3Á"H¡h«‘Tì¬V«¬'ZÁ',üCÙ×y«#k·dîñ–̺Ípt5Ú26’¨Ñm2°˜ñàŒµº¢{J DäI_x&õFYÿɎé!1}AH-Œž›}?_1Ò¨HŽ7àlö¬mm­ÔuNZüXº0Oü¯•×Ê^œÿÃ];³Ô»úãR0*ž¢Ÿ”1êÚèùН»$K1$/€“ øm ùûZÛÛ]µ:§»Í­m9vKoÁi$ˆ×e> +| +-Aâ!)6#„+¼–œ~<çXiÍSºAXP¨6ªH¸*ú*Z)„¹iàJª˜ÀÇV€ï­%XõÆ~AV¹®sœý¨Çbx+Ñuf¥e]‚QJEű& F( +=W;Π!fd@s¢Y»ƒ5َZ±ÛÁÅ@ÙI ”ÉhÅPÇæ«wEÛú¤°SL„Ü“3qÇçÙÛwvÉÞp:èí ÏýzÛQƶŠÐìú*Ëß{¿WV{m^X¼9š¾6,þç2s_þû߁ªÀu^}NΣá ø¯¯0êÑ°L³U­è Û°ð˜`2l>àÒÕÿâ¿pÕ×Öëjý€ÌÀ5‘ÙŸ¤3Sú0ÜC slڜ³ šb‘›7«ré"8¶(éÅ/64Äpå +àp'5 U1QðJ©!‘ +i=‡ +4|Ór@þÐ}ÂLm¡Ò’Ú9ŸÀü“Fé9ÏU”rª¢k|ÒBY¤¥x+ +½ÒúѨ)VæKš›EA[Pqb…ˆ5±3™åÈäS ¢³™Æum°þ3_ NqÀ²l”WÞ*EQ6;gå×­–LÆÊ®:p­! y'‡ÃBÛø‚}ï¿ÿæ|ðæOßÿ§7ßü?ܹ›=Je×­À¾Œ`VúÓÏñÍúõûüóûoþÛ§,›a˜Œæ³ á_ýíÿøçþù?ÿéÿÇ?¿ÿ»e›»ÁŠ–4õ«Ù7úæ›?þɏßxý'·LH`0aŒÊMElhƎµãüco¼þúOÞ|ýõŸþä¹×ß¿÷ßô@͓/؃G6B†~³Éyý"ª=k4D!o’gŠwa.ïQ¸ÁŸ4¶¨rå +ÍÆdÖbâBDoƒž(,&,“‚MÊ,nRÂUíʀv4‹­Ø‹C(°qa« ƒZK©Vr’£ Ûaµ­gÍÌ=¸¯²&ö(o¦v cÏà|" øËÝ[·–ïÞº½|÷Èòò]\‚§ÄØì@JápYÞZ¹}ßX¾KV¡CŸàm«À!†»¿|÷þgË÷ï//ß_þì3ޮ³ZŽº›[|îÈí#·néq)SɄÜF\ è|âȝ;Gn-ßþÁí»w!@Al2r +³fdNX.âÈ\"DœÁ< ¤8C˜4ـ‰”YÁ`°$ÿŠkÍÁÝn5‘š¸U«‘áÁO²Y#w78ÖYP6ìˆð§Ì¬Íh…ƒY§ÍàA”l‘Á•ƒhn¡×yjÕNe²s·}±ÆfÀ-Öì̪ƒ_]ÞÌãJv»~Hû%öE5èç°`× +!uoš°ŠW˜³1E‰² +59[¨ +T¹V$±dvE ±ÎFjÀIÝd­(²0#\(dµI¬«§F„(ÙV¬áòN4öŠÑØ-nÀX Y2v† €Ëþ$°&ü&>Ã[YPÝÙ/lÔz–%å="àX6ø¶4óV‡E;ð ƒk›fÀ¤«çaO9Ïe4ºAֆn²ŽšC¦À!˜‘Y,¸ÁÔdhVÀ:·6†©,^d€ JkÀf Ak=2E2ƒ"ýDf2ٍ¦ó~˜Œÿù9Ì{økn’Gò ›” úCò´ž…R„܈(y(§Úɑ +Á“*Õ#›ل¿ùp'·G6åÃmӦ͛ + +rË·©á@­VÃð}íLiAA™W•Sç«w¨óKËJá\j^ì(ÃOáBreùe;ÕxN½£¬€¬T+(ۆÿR®Z‡÷2xk<•nü«ÛàsÛðWù•âˆ«Õ•’óøª”<æþ(üóó ò7ãÓf\ynófr¼‰|+8.Ȩ  +û£)¡K”ƒ“éÁèøL<™NFÒ²(§'‹É‘t">+¦çã‰ä{qÉëí ú:=5^g»ÇÓþË·Îù¶S}XŽÐ¶è´Úú·[ÛÑUÑ=XÞ=PÓí®¨¨m­Ø]á÷ë\§¼ÕΚÚîî®3µÚš}Unw—÷¤¶eÃ?Œß´†b‹oå¶}ùöc>öõ¥Ëq!\Mþ©§àà»Ï|—,]Ž¿OâFÑÏ>÷,îóÙ7›Üýü³{Ë÷îÁÍÊw—W–ï{E«­®¨¬ok©®uº\mž>»/v»CQ_{§àóöœ‡}gÁïöûzÜ}‚ÇŒ†<”à¿ Âà$Ñt:œ¸>ß»¶xZ¾‘>+]MŸ&ÓçB‰y)qírHþðr0qYîJûS3!¿˜êåÓgS±³‘éˆ?‘j÷%¿ +ýRª/. Ó²¸ŽÌÊÂÜÂ@r^˜º>.^”b²”“g‰‘øH(?õùz½žímn—ë„ó„ÓYKŠ»0óZSÿýj­¶¥®Íà¸ÿä¡3‘}¯œ TV¶úë*ݧtZwžŠÖ3º÷q®²Vw⤻µ®¦ª¢ÕãqãV"Æø‹‡ý/†Èùúã[O<†‡¸Þ·p×°'ŸüÚÖ#O?ñ—Oåv½x‚á™ï>ûü³ß}ö…çžœâ…íä¶{÷ö½{ö–ﯨÔVâM[Q þ÷u¾€[‡½s=§Á ¾°ç¸×/t»¿Ç»»Âqû¸ûûC½ñ¸ŽÌÌ/,œ/,DN_[ô$æ¤w䅄/±x!8´°ðÎä—óï~ts º´:m)rnv6$Ì_ ‹©D¯N Ê3áñ˒o,éR¸Q°8΋Ay´wXŽ„RRHNôI©¨xa,0<& ã6Îñ±DLŒ}°ßëñö¸Ý.w»» Ð¦s¶é\.]M}m½V«­<~¼Êï®ôFu'£åµÞãå]µÏ?WÞZÕ¢ëò××¹¾¢=èì>ÕÑV]ÎÔ}ÊÝr¨R×åÎû‹¯™âN¿¹eü1D‘}.žP6y"·©áÆ60pð4‰Uß}šl¨÷nM¶`}šlaÿüîçÑ{÷ 5Ê÷¼R¹uÕÁƒ«]΃:W­Nçéí­uy}.o°Ï×ÓÕÛåv÷û:¼þpGÏ{ç|=HÐåĶvq<è™O‡ýóéþΈ”è‹¥ä`8}q _ž“N'n^ê›ûsúôµëᑛéw¦§½ç/Œ{“©„'!½3¶0æ“çc×æòõXø£TÏÈÏÙô WJúÂRÀ#%B‚t®+%ù£b0• + “aqBŒÈbHŠ‡/ÄáÍpØÂãñxOtÀȃÚ]mNWM[[Ó¥{âÓq]V«ëhé8³¯6î.wÇkvòéÊ÷{ýÕÕ.÷Áòòãµµ]=Ý­å•uÞS:·nß+Õ¸™Y•Û©ýV|#H}µ—¸Â·¿¶ad+¾ó`o¤\<‹{]<óÌs/¿ýÙíå{Ÿ}~{Åöò=••å»÷À ›Ýn]MÛ‹ûѾãöø»Ü]1ÁÝ揜vv…]îÐx Å'õ¹{΋nç9ñw`¸ß›ëJÃ~ïÈÂp˜N‡çn&"^ˆÝX_ºØ727Ñ+ÏOö%æ=“sâ©dBèK¤ãAy,OœíK$úFgOHíá„àîûú&¤_ +bÐ?)„DéìÙ ÉwfJ‘Åþ™‰P2–&iâL¢_|¾~¯»½Ýín÷¸<®_¸ :ÕU;ëêÜ5Ngu]½Ö­«ín«ôŸªðǵûugŽ¿âôVìÙÞRS~@8Y{ÜYYyà€ÿT›»¶ò`Õ~]W‡·u_e}‹³=tŠ˜âáo:Ã×lÛ =ªx6ìÜ撻ɞŸO~ç‰ûL>õ,1Ç3ð°ìáöìÝþüžòí/<»»¼ü@‰½»+jî¯Ôµj+µº¶šCõ'<µ-`×ÉP—Û +øÛÎÄBn·ït§»;óµw{½.8Ðîôžëió mÁ¤èóMH1!>s94 yâOߝ½~1Ÿ»èº²0 -.…S7gûfþ4|6}] +Ë7Ƥë7‡¤‹rhR…¤tz8 %†úĔèž ôÏ uM%:cé¨>îN÷G&Âáy©jÐ'Š½ÑhHýBPèõø»p§‰_Hœðz\'ܺ_Ô××ÔÔ¹œõ.€êZ]}kwÝ{gö»'ÝÝç«ö»ý­‡\þŽ]ëþòÊCՕº:²)`eEK]«?ÔZSY®=énëнR©užñç}Ã%¾› ÅW`ý˜b ²ûËÆ®aO“@õTnûte÷6â0øhŽgžßÄi{ùËÛ÷VT@„z¥òåòª:ÀŠ:gM¥¶Ö]]YÛþ‹êz×Uïô÷pùþÁ ø +KáïÆúÛ]Ò Çw(>úŽox:ä“} ×?œ”®Þ¥¯‡äß\‡Ò7ӂ¼(fÒÒ¹ôG³±‹7䩏o Nÿf&2-Ÿž†RâÜ°cþ‰t¼/>£¾X“ÃaYêžêOHçÄþ°ðnÀ †Ï +ƒÂY°·H+PO§ëmçÛoFhi‚HºÁ_[?Y=W¡ uéZ»ÝÕÕÎZÁ¸í¢ÓY‡;@9O¸ºOz¥²ú„×é wWî¯qÐ8äíÐêºýî¼ÿ¾™”ó +õbŸÇî¸Ûυáá.wl\ð†e±çì…%ñt|éC ñçê¿^ˆL\¹èÿóUñꯦ¿œû»/3(-,Fã_.E’NG—.¤oN痤ÈåÅøäGØ>–ûƗ!5㛹&öÍÅ=à$ÑxPHDÓRÿÀ€Bg‚AAˆ ûȎv¡ž.ï W-îØ¥Ó¹ê!>ÕÿUM}ÅÞíûµ•§z*;¢mΰ_« ûëtáðq·7Сm;¸0±£»½ãÀñŽªJgk«»ª¦ãä~o w…®Ûí œíÒVÖxBy_E¥î‘3Æc¹ ©§P?ö=·Ÿ~`…'ɦ’,ê±ÜŽÄO)l*'70@£zö…í{p›°Ýå¯T”﫨¬(?x [ë¬:tHÛvh?øÅ!ˆµººOЫëˆt9½¡H·»3æû•ç|_ω@4äò ‘^Ÿšè Í&=ñk ¯xíB¿ O ÂÜü„oî7rìꯌ\ÿczè_.‚XKôÍΤÃ/ 'æå˜|yNSI)™Ž§±tz(uA:=?NÇzeY™B|股¡h2,NEã‘!!¢B,,ôú|ÁàÙÀ X lñv=D§j­®f?ВƒîªŠ@«ö½35“¡ƒîèÉ +¿®¢üdO]GwOHÛ¢­¬w×ûbþږ=•îCm¡¨»ò•ªî`GÏp¸¦²¾#äw÷ŸÉû†ÌV +. zµÝq¿»35éÜr÷ŽÇ½þ”ÔLM¥º¢S‰ÀÀÅ`ê†ì]L÷§—æÄKþxôҟ塛¿¥?},Þøߣ£œ–®N[”ãÑùtLúð‚8·›º¸‘?ŒÇS‰tu(˜’‚ÑTP +ºBá¨'0’8}"(\Ss‘öáô`ûPBì‹\NDŽŅqqþšüw7oü´tIH,Ì é¹QùÊdjéc @dôOÿŸû8˜½žҗG³é±ÉóRBŠ$“ñÉI98>-‚ŒÇBápß +nðä¯O=­|æ;ßAÓüåƒÒ†&%3Œ¶bïó£*@d×î׶¶ÕTºO´Òº‚uë»ÝZ­ÏW[w<ØérùCÝNÿ˜Ïu2"¾[>ÑësŸ™9ëƒÁè‡é³ÁøÜDçÌ ¡ï£KéðÂü°j^ºv]?þrbâWÂWoÀˆËrböZrúæÜÀÂMQZ¸IÌ̈`Y¦áIù|hZ +OGƒAA ƒ˜èöAÒÁ½øS(èú߁hðw`;Û\o»tû÷ïÙ½ÿùòWÊ+OÚ]£«¬:ãÖVÖVVÐÕ8^ª£Ô_˾ÊãU'|~oó@eM‡«µöŒ»²ÒåïÒUÔwéêÎÍL¬«>!†÷Í&]ºHL·¯%ƒäop¨Ç6RP0âÛ9ATÝS¦yš +ŽH¾3„Ï–oßþ̳å{žÛ~°ºre½ýB§­Ñ‘t¨Š’¥u½]ëöC0ۺÂb‡Gñ·âAoh8òMŽŠ½Ñtút$ð ,L +aù‚»B[^œŒ|øåÄÀ…Á+×å~ù⅁¹ÓòŸ¿”~ó§±á›é°¼$ ééq~^JÜøHJÌ&âé©ó y "OJK ¥£QAÙ)^è úü½B¿/ü߁½|gƒB0èëôµwöx\Î6LuTW쩺gOv·³[{ Ã_Ù:„édM»¾¦²bï>]°^mÍþŠ:­«;äsz¥õx•'ÚÕvpo•»Í;ï<ØâøOVû’ÁVaz¸µêP{.@}n°ÙüœÂSüâ‰oûÿcëýÚÚ6·}Ѭv%\œO†<¬+[‰*K(2’%}r+ï-a)±#4ͶËK¦–זÆPÀÜâ$Nš6i›6«sÏìùEÖì3×9ϯmH:÷!š´ ¡ñû3Æx‡.üÃõ±³›h/’äÆô Š}ÌÄÀm©‚‹´óD2‰5m ÜÁ»ãò/¿¿ˆÞÿóèù?ÞDÿëm¯ÿýàèèí°v öåi08?i¿´O~=jÿücëäÇg­AÔìE7ëÅj®½[ð-ϵ\¼ã¯n>炲.í¸µ‘ËöU…c¨$ðD2A©"•QĒÆBDh +¢yèeU´¢®Ò +H{ëѪH¥Ä­‡«[&+*N «aiQtüÇÁaœ¾öx³Ðò Ö¹2NŠ?Q÷'ÞÆ¡¸vaºGwýèáècñzóÂnOaþ¸>u‘.3³·FR +7÷f¦Gñ â¸mAÆæã4 hŽe9ѐXøæV±Tü͊쪫‰F诊vd«X4eŸ”O:yïd¿â´ö[®ßî{þÉ»£àlpâG_ý´¿3üáÈóãYù՛ný݃ƒ¿¿¯¼ùxÖýáí ÿ·÷яÿûeøî}ïð?‡WoÏN^O÷_½zv—ÿœõ?¾9y1ˆ†gýçÏ»½( ++ïú’œZû¹ìZëyGÅ¡[‹Qj\¢}ù§¼˜HW¸Ü7¦.GÒ.ê!S—±¸6q“†Åô̘+p‹{>Ž?™›'1mßhêköÅC€¬åiVRAÝÚH³VV3óyå;²¢C×úe#ºù³~Xì÷#ðö<8úa¸Ówj ?øƒ×ÍpøÃàøÝïƒïÿûcýÝ/~ÑoïÛ¯ÿùvï··Ñ +ҁˆä §dÌG g 4à"E²(yî’Lª†löOVHÙ0tVÈ»¼Ý9y(¤ËX§cŠ•“†. +ªïxZùs‡wuœŸÁԄ‘¯]}L]Ô§¦&þⒶ/ì7„àæ¸s„GgçF1™ƒ`Pd‚‘˜#XŽ$)ž'iUdhÉÔyQ7T mvf>ÅH&Ÿ£SÄ\B +Þ û•þ/ÂáÇ^ó¿ÿWõõÇão¿ý|øៃWÿýaïÃÇwÇ|8~ý3ô÷çρž÷ϏýÓÃ^ïøø°wÐ|ª×þàú«çX˲6-ÃÂÏþÝØ¥.‚&Js 3•¤<44O¥*•yšL°É$qOH¦¤ÐŠ›YH’ª¢X%ŠH*§´ò‰-j÷HQ "”HòH–Ü‹QÚSi÷‘ªïï#F³­-‘Í>1'n{ŒQWÿʁSc„¿_ÔÌoŒå¦7.LÙfO +àÉ6óÙi<ÝÀ½“ +²åœ†~kpž?ýéØÞ÷­58;ދ^¼Ú={¿·÷ûûƋŸí㟇¿|89úøº÷ËOƒ—C KÃ×ýãs@¤CˆH¢îw¢vÍ‚’_ªá-»Žiå<×ÛÉ!ÉTuà áaXiQ¡ÙÅ f€b’I@¡»‰8( °¨”ô5EBžˆÂ=–4p{"RÌ0àˆù»«ƒ|ÈB’…ÕÀeã”J1R•Zۓ$£"V +ʋ‚¹ü¢¸lehÉɯXûo¢e±xºö¯#P—ùðO_½~ù¥éɇS×Ç5ªQ,¦&Ӛ#ƒ1&ïÛ·gp^‰ØL‚"cq¬h +¬µb•p9*-¬VâX§´º¸ºä|É5ÀUntêzoKÞ»7÷Í ð:¯Ïüÿ–? ž‡ƒçßû¯~=‹~{òêÇþpØ;|ùÃ`0J‰ãÁóãW½^¯Þk†õ½°SëÅ Xp]ü@Yü$ìœåZ¹MÀ¥M•byòað‰'A3 –¡8†] á>'I”sG|md)‚Í<UO[X`dU$µ@NelÈiç:à5Cem›ãÍÐùšLJ:—Ò«`²+ê"'¦@¯áó—ZÇáÚÕÉy£«~nR +ü§&…Úkí¢©qÃ{4±ycô{$i±ÃÃ7ó \ý˜ÇfãøÌ‘¢b $³Ú\’¥k +áEuö¢2*ãŽZà˜ÃqÌD|€Š˜™I2(s–&9K´±3"hq™LpxyÄœ¥HÞ®µâ´ÑîùN8xTÏß´‚ק[ÞÉþNþl`5^G¥ÎÏýö»_zý÷oúÃïû¯_B¬ûÍþ°;ôÀY_ŽŽ{ý~o¿€IuÏõ‹n¡y3Â/TªE¿\®ø­°ßڂüA8†#! œâ`®“4I’›JÄSBŠHÒ,'‰<› † ¿†$Ò<øºÊ¥ËyžZÄòå³-Öðl9±Ài)Æm™ð“*›dà±d?â) Y*I©¦*ÈZ ïʸøo_þ¹kôyL®÷E-ürÔ¿œ¾0ÙS£ÆÞäˆ$.¥ÏÌLMO&fÁT +­#·H$+¨ž-’1RghR€ºûÐdµÊcø˪ˡ¯}&% [ ¬]R”¨«ŒZQ©Œë(,Ū6l™Í— ^ÐÅùŠ«vÛÓOW'#š7&¾î¢9š­#´Z¶NNJÛ'½Šßë·ûÃèäü°7è/ö:Qÿ4ê÷»ÇÏG§~8 +‹‚[,»¾çÈz„=¶$P GÓ܁I1I’¤áW¨€„`Ðpë$Q¯ÁJ<[rÉù8£ª«•GS¼mjù“ü=I·M‘×=–5|ƒZH±"O¡@1e©4É["Íz•ՍJŠ²àqx2Ƨ¬¸úÙ@ÿEuãӄæÅE‡wÜKºq1Œ6=¸q9 6™Xy¼Û¸w4‡gp橸 +òöő@wâ/Š -ÂýÄ +H`–M™äLU‚Ÿ +x3k2¢W–Ë®&;¡¥¹ý’ÔËÎITñ^œ{ÞpØjí÷žµO:Ña´Žaxˆ½ôÞa»w|pÚÛ??îõ}ÐSð‡¢^÷$Úo7w+å ëbÁ¯–ðúêb¡˜/PaýdÃ·Æ+,Ë ä†½Ã0 Iƒ&J0TŠ¡T­€»^œ(j"Eb[$*×[£ˆ¢È¬zºìž’º»aI«m/E0Rîr9“[‡l +OA’÷‘ÁJ%Wa þŸÖE ÈB”'¡øâ²x1C>:ltã"£rÓµqÅéÆÈhܘô)FæÓq—ѬÇd€ÎÞdº=3OB^¸m´È&ççY‰¥S’Î0¬JÐHI¥2QlÖS(Åh=/-šYGYñ{šÔ® +ì>´ÏOò•7=«rÖÚm>?ìtÏ£¨õº˜^Eý£ð´Ó;=ŠŸŸ÷‡‡`, ½cøsÝF­Uƒ +È[`óBŒ7+.ꆘˆS¢"9­,K’Š¾‚Âg«4#å·T©ðòãU‘"-•q–•îÞQ‘͸ˆçáç]I±š&dGç³®¡ +â•OݻϻE£ÆõeNŒ+#¶¸~㢩:bóñ¼N‚©Ës£ýÓ±[3“iÙ8˜»yŠ$@I†MÆ<—JˆªH¢&S_¯dh‚} +˜¿´¡K̒ŠtIõ<ð Ä£H|PŸ•/Ê{#}sfzÂړ9åéÉÀÍu¬¬&Ý¢™Ï‡È! +üÄ¢L}Q)CaïÙ𽮚rÛª`VÈÁó²Ñ:iÕüÓÞntڂËßìíUB + b!04çpH–M!#5^µ‘œ$h¤*îٓeŠÔëÝ3•Öm$®'ËAd KŒhôzÅà×w[\‚áT•Y2òª°Ýö¥ÅÈðHY®\퉩¸h]ºÞ¸1®3] NMÝÂE×щ°ñ¬ìøXä ¸:\Œ½=‡nfgqÉ×=âI +ϐÉ9é1ZâAŸ‹5—Òî%Àë1 +/ê¶jPËH(X™…”mgVÛ=O‡X9’qڐ8¢Ì¤À0±þ™E§5IM%SºÆiA`qZÞSŒ‘pcV¸X·rõÓ¢›Q¹ãÆèXêõIûú ¼¼qãSuiúbœ`<à1Ή™QNÌÎÆ +P6CÓwX\„"Š% †¾@ųŠN'b)‘_ÊP²*^)¸ewõ˙Cq÷-ÖnW²\JÍ#!¸·é¸í!rô†§ór>¢‚8VÖEÞ´låÒW\ý,ã6ÐdÉÍ89fÆÛU¦/&Ò.NÏL +3–­EÍvà‰¼Ÿk.‘ +ø!…¥I ‰ÉµG2µZ1y#¨)¦oWüÿQ¯çÂÈ{Òk­vØÝoµ{hïøø ÚkqôúÏûýýn·Û?íClŽš‡Í¨Ù }‚úÕu«ewÇ݆_VÑ-ÀK˜Že‚)ƒk2RrŒ(ҒÀඖ±Tx,Í&© @+ð4B ¸;#z>Zèš" + FÊy¶Ào¸ŠºÛƒÿXÊʯ yOKçðe^TäԒ."_~ȳ÷äŒÊܾ”-…ÕM[ä¯|Z®ò好›ì¥›ºè‘^ +KP’N$$1EP‚DR ¥(y•¥DWa@ÅÊFa#¯¡°b=¿´ë»aP¯Ö[>ØæN§{t܍öŽ{§{à)N÷¢ã£hx¼Û?<888ŠZQ÷¸ÖÃ:.ÿՊ~aÇß)îx ¡¬¼ŸswvÊ^~Ýzhغ殁VXT4ÕxNÐ8cYpw4¨fr‰Â(’G:Oð"à‰ÎƒÈU¨Å‡nnµ¬ –oð”`Ù:ŠŽVfÏ堃štG0Vò=1.[d(òlÚ4DIÑ×U9£¬²âê¸$‹ß¯áýtW/½õõÉÈÓԍ럖ÌLNOŒ_áuãØÜą¿I^`xÂõØYðu³îÝ|r>NqDl‘g¸ƒÇ¶’—Òɘ ÑÄ=™»Ëª¸ý3²rÆFšeh®c¸¡Uˆ|«à»A·F¥`? £fçè¨~ +š½ƒ½ƒZ³Úí6‚ÆÓV£î5wWžvvj>8ì<>ý ‹øiJZÖxIÃËæ„ûw!) $ Eß!SI†LÑ ¤ä-I"˪º¢€âè”(I)Á{ȀT29Jwd)>†Ÿ+£ +KzE_tƒ‚ʐðÓ°ŠûH¶}5E‰r†'YCeÕOeÒ¢¸*Њ®«i”U1@]½ºâBJ•s¥ÑK?l„;žm mݑ±,hˆ‘î 怗•—Ø»4Ïò$Á]’Š“4–³-¨÷iŠE)›—“TB^Სŧ- ²õTKaӝ¢,C`ó-›äÒ8Ö,ˬ²[ '©‹4©àöDÅP¥|^cɔ òi«d šSBW®~.bÇ£€£AšÉj¡©OKé°wÃï·G·údvBÛxÔf„LI +ȁÀG¾’ eA΂Å#©¹Ø׳`•\`^$ÁãQqðSx +îEnY‘Àëšj( +^¶ã9á§lüjP/úUßo5:­F»ÑŠêQXïv¢0þԛÍz³^[Qk¯6åRPu  Aq§\us;®ïúO\Ûò²+š©H¦È+¢ŒT)­¤@¥ŒÀ*« _æ.E +,³, +è8]ÕM¼Q󳹂©ËÆÑՋÉØь ¾õÇØtkoÌÎá3¨·Æ„1}éìf’³x‹)Î *>Ú#8s;IÌÍÔ§D&•ølŒW¨$Ü^A <grˆ¨QŲ’,šªm˜zÎË tv·†Õ¨-£ÖQ¯ÕlïVjA5ÞAã›b±Ú¨4B +KʆƉ® ˜·À¼/hI’ 1­[iYÕ¯ŒŒÝˆ©¯j€Ÿzt“´¸>úýUl´C6v±Àk¨[±Û“yØÛ šb3x´f– @+˜+ðLcbÂr ¾†×̲T2A3£V±À$H…ƒ5iԝ’ +Ü-+ 'E +s–¿£»y\¨St¥µ5W(²ñ`‘9°Ùð½ALhfùî=¤0$-ˆkÈR9‚Ò‘„‚¶ÄÈL³Èá™õœ¥ L֕…0BØiK̼Ⱦ#2"Ða*ϸG!uEH 2$ÈZ6à Ë^ä +¾ ®\»v9Äq}\óžú4~cܜ›äÄôdÝ(-f1ÏQ#î€$…C‚'ÿHf /òHQɸH'c ¨ˆÁP1 +ü%¤Rbšdh/aà$VT +|]ƒÌhÖÿgᚗÊ~ÃÝÞqwp‹¢ê–ÊîhªÀØ ÃGH74ÕDâ*BËx  )ëkҚ(ëÀ kiUÊæ¨$ ( +°(YÎ(Káh!ƒÖxñʵO£6<º1îÚ]<5ÿÕ§}¾.là†õl’+$âö\bo÷MPxŸœ S‘àAE@%çoc’àð™Š`qÅ¶–ÃÝd` üŠáï \æ'ŠŒ 7!\2¸`V>(˜‹Ç¾[¬Tj{M,¡uðÕ¸“ר5ºß;~Þv #Š;aŒ»ã—½²[­z ¥€r:¹­üö&*ç4iu}M‘Ô R ÀD• ²"­ÜgîSðÍ°©%‰–ÒC0RZ͂GþZ0$ Wǹÿ·Õ­È¬¬n‰I©l¦7ÂÈ¢îH–+X½]Iö*¾¢ +ÜrN¥• ÐxákŠUv}'§È6.Ç*Š®p n•5õʟæÀGãN×'%ð©Ëúëh ÝôÍ E€Sˆ-à ×@6u `ƒÑèß,ÞUO.>ℤ€LqŽÏl'!=ñ>cË$À.%î²L‚YÆ»5Sü}ša 'XoyÄÙÁrŠ²RM 9ÛÈÙÉð-s¼2@Mû yÐm†a"qü-¼¨ÖÕÿ ” LvpõÕ v +¸ëúÛÛÛÕÀs<XcHâê iA/á, þ .DÔ]øË +¤{36 ™˜dňF#·Æ»|§Çk"n͎V+_½ +Fb¼ÕãÖÕp,@Õ& ˆ@  <N |*=Fâ. ® hÀ$ ê¥%H iY†¸ÇÂðoIRm=^ƒ¬À µjð—»«Õ:ÙZ’øÛú*µ[ȉ²Èä«yºÓo·DÃäËf·m¿[¦YýCoÛ_/Ê\©q¨sTÍ*2†ßåç¢&@ðE*CU¶ÿV84¶©R½ÅÓ9Vä€ Ëå¢R«æaÊLà•›Á6é/ +Ô&/•¤èW¯xåGmÿà ªètR³€°íCµ®J†Y>´´R³^­ƒ"¯‰¬R`‚²_f8J؉_&%ìDž¦ +C°e†’-ckëg£ ™Y.‚`(€ÏÖÌ=¾i¶Àê'þ:‰÷€ŸƒéýîßqyéßÞ¼š òäŋ爀^ÅH¼˜šF=ýýÒڀ)@A½x=?‡öúّÃ+xë<Äbnn>ùA™_ZZ^ …¢8ò8ö±ÅPN¸¥ÁX ÅÑ[DPÌÆðiz 0!MM`½À5æŽ.0%ē¨í£‚5ê–ah¸Üqð‹aõ£¡›5Ý,՛jÉ8ÜmÚz©®‹<ÀÀ+兼ÂJ:»å+4_ ¥DFW€!ÆVŽäI’Ì0YšNé4µµF3 ¥#½š¦Øuðe‰Ê×JìžJ4¡4TAõŽË¢~¤ä×X«™WÎ/¤ÎEGÍmÕT‰<虬y5²yÁ8®Š[%Me6m»Røù¬ÅRÛ»^ §Ù»»+Q†mˆú¯†"х‰‰PPP౑¨ß.¾|ñӛç¦h&À3Ž¸Üñîû`ƒRzÖP3˜3¡w(pŸ?ááí<˜ +ˆÈÜ[ˆÅÜìÜ<`ÓRÂ0¿ZŠB@V,e +"—ÍåR že3T¤6Yž—$ù`_>¨ïk*ÀR}ߨY€N¿@(†Y¯Š¦]­éb±q"—FQ4÷$ÅEU ¨’­&îÊôöVA£Áh(@ÜWàsÔúÚ›µ»F0ÀTI–MäXb•È€¶JKWÕ-ª¨<Õü¤ˆgã~yk têVË?a+w½Ý]Ýl²ÒiGÙî^»%¶åXbVko¸¶h|ö¾¬ª,Ì®<Ÿ[ÛV8V³v{Ïlòüö·ÙÂÄ_ÿuÏ ͛w/ÿúÙääìÌs“ŽÉÿ »?AD~œžžœ™}99ýfz +{xL¾˜Â¶P3³ð‹f± €þ\ÅkL ì? ŸaøÄp,ÌÁG#K+˜ü <½¼‚ fo!Õ´šH&âéT"±ô@’D–ÊÙ< èÄ°‚$(I°Æ>¸;½D ê©qÒvû͵M³Ö2õž¡|´÷$]©`ñ²ªË妺U)pŠ$Peˆ&É9Eá%4Mèð–<…%&I‚Ï&ø|–NÆÉlSɧ:QÈge&[`)²\+ T¦TáòÇGrAi™àÉNNªÆŨ§®ßÚã۞Q;ÿ½¯Ž†=CÐz݊qñÅÞu{’öñ£ÉóuSÂÜÐJݾU-QDSÔÇ[¶^(6Ù­ÿØâXvâù¸ø¹?¼œyƒ7¨Í@:¼šzñÃ$FäÅÔìô‹wA(^ÌGf¦æ9"ó“‘å©—‘ð‹CáÉ3‘Èl0êhíf‘±çCˆP +-½^Œ‡Þb-_bq.‘œ%!aHåe +%¹nS>é»:»«+»b¥,xs>¯@Xúi:تøW÷ øÀR ó¹­Rð›wI +<®‚B<È|$Ôtq…‡00AæßÂ+s¨¬f‚`„@È.,-ã2°w"pÞAlbñDŠŒ§3kY ‰ +’Ûn¶nݾuՊ5üøëðÆ«·G­Ê®ÑmíÉÞ¨Sé\]íûƒº¤){ê6 žDêúvEÿ䝔›¶¾[.ðÛ"ËiM…6€ËyÕ¶q9ðÕó­³à"fgƒ£Ž?M L?½y‹Î[ë­àÜææCÿ7Da.ô&Ø+…1Mþ8Ã[v1@óÁêüÛ·¨bá«·¯ƒÀ yU̾ …—Á]àAh\O&£±D Dn,±šˆÇV „$À z†$2YŠ)ˀÑæ>€àá!#vFà%¹¦Éº¾kÖUë¨~ú òâÈ<ý¨ÔNê¢lØ*ÐuåȪ×dM¬Õõ„¡!é;|4ž‘66˜¬(ˆ¼Æ + H‚,4~ƒ’Ì° +å%O +5])‘b½"šÝú¶úñ¬.nV¥=ôtûæÆ«I lUõóÐ2¯ÿ8?¬š=[/j¾»gÜ?ž«Í‹‹CU³,]âÕnkÛüâìJÝ+W¬Øà~¶\Ó¹Z»%ò§½c±jwT°ž˜ýóÏüø‹P°ˆòwþ™³CáÅH"‹Å!Y ê4v™I¦ 9R©l:™Êf!$MR™ßH‘yŠÎ . „k­TÜm–¶µf±( +Ìø’q¸§·Œºª-[։©Õ±j°-·O5È«.4,ÅÐ$M!جN¬i¹±Y© "»¡ÖpI…¢I²Aá™Ü6'›"§ƒgÿxz¨ÚgnGÙµŽå >›îÍï¾eŸù®zà_vŽo‡vûóõ  ü1r!(W-÷éÉÙs.¼³=Åð»{æÅ´îÓ¸y2z¸h[xù•¦ºûõË+×òÿþä]¬ÞèڇjyâÙT\Äœ˜ÅRSȊwàÂZ@€.¼ž|³¼ -"m£¡[è™Å’„X B‚FzþûJ9Rø¿<÷ü3¡€¶¸ŽAËK‹ÁìŸCV†\‹&ƒ™¿”w`€æ‚ í žK>tšcŒÂì±Oǒ@ñl²"_YM$ÜÑƕ'0Û,-r³,VY®Vå½(ª¼¨È»,§ÊØGÑe‘xŽµm©Ž…f|£•P¡B<¤öɎv°³oh¿ìkG€TŒ| Ö€8cGÚßQk›|MÚ4Jh|/¹´-Bþ,äXAjžV›Ý®†âÔp¯ÇŽå /zfcðÅ; }@©GÿÐtû‡ê§‘ã ÿç½ šéÜiš®{x8zðÕþý-À×ЉÎÂ4N®áÞݺݻ?ïv??~±¬îI˨Tۊ8T“áÇäs‘°ï`®,BuéÝìËç«vfCÓðDf!²´ô©`#b +ØW’…²*VJšæº(Çî-(ØDY(R0ôünEâ·Å<¿•—¸m­>P¦xEe¾^Ú +'°4«Uh¶Ìeļ Š‚ ª¼tá©5êզݵõŸñžI÷Ú7Ûý›«nû·‹‘ æ¬ß9ú‡×rnÁÇYÞãÜ»úcäöoþþÃDG×öÎ[½‡ÛAûëÿü9ê~þ}䶻Žëv-àüâ†N{øp}¦û_ÝCÝ°Í œÿÁNNÍ­<_xõï[^ +cqßÒóª8Œ6„"oÔÌ>oW É“±ì`„q ÔÓ +”ȳAJúÀi›œœÏkBAæ%,îÀÂé¯ËšÌò¿àaÊR!ËK›š ìB×HQ©"Çr  +Y¡†ºŒãµ¸I¥vÒ¨ìÙGu³ë6õ®×wLóÌs ãËWϹ~zì97O—pwÜ< Úpt½ñ·žÛí{½è¶ïÇNïþéÆ÷¯¯ö‰ëžžî`äúÿ (ç?=ù†7òLmïÐhéê‰3±Ü ¿¦&—W˜!‹0§q} £²Ä»¼ôlÒÀ),GÂK‘…™ @Àgrr!ê@rýŸƒ`6جX¬7–ô‡cKË XzIÄÒ««) ˜»l6Ad‰`DNE„ˆTK¬ã¦"¯Ö@#‰ŒXQºÈ’Ž•QaÁKðyE>Ð÷Ûíë‰ÈûÕø +J4†çæ—ñ8îÝC`af2NGžÅl2EBTÒ•{ŸßJ,EJùŒXÊeˆÒÖVYdÒ¹mnR‚Èæ©L¦PÀ^˜*•&)j“ÉSIšÎ +Åä³,›WT^®1yŽ*Uiª¸Ý06÷Uð!M®€ü*P²TQVaò¼T`ÄÅãFP€Êó¢*ÑI)Ô:h†ª]UÀT½ãcgж¼ñðâ @Ý·[x¸‹ÇKϽÿãÑwîqª÷ïûíñӵ߿ÿc ùñØ÷À€ûsƗ³›Û‹Îùãã°íÝÝ8–7òۆf}´ÔÓ/£®1xºqNo&¢Ñ•%˜K‘©—à¨Ãx²ÎL¾ ¿™K$"Ë3S‰ôì«$1= +e `ßY"µŒ±ÆÄbÓ/ÃéT%˜sXœ†Yñ¼Üø6d´Ór‹Ïâ‹Ü·K¥âÁByôS*MI:·Î²ëišËghn­| ³¹BŽYšZÏs4/Ð$‘ :°’ʐøžñ¥†—ò›B¤,¶ë2 +LîD,Ÿš'“ˆ`ñü9!žÒ±>!POÀÓK‘d$––Ž„ÁÕ?Å߃ŒÅbl3´–ˤñv_JȂ¼Ì¦òL.‘ßÊ`‡þ Å®4•£ðx²ÆZ6·¶$O’\ŠñÀü]aIÞ¾>Ðx× 5½"(œÈ1;šXÛUPb ,Eƒ^ŽÀó3š©(*šÞÚTñ° +¿œŽÄJday,uüÍ‘O¼[Y‰D#sáÄÌtjáå›Ù©ø‚™¿dÉH4әH'V’SӑT6Š¡¢HôYnaš,|L‘ + éXÖ%ˆ¸øæa¥ÒôŽ÷v›×lîÚg¦ÞñÏÔ³Qß=snïà±ã÷A‰ Ÿnúã§?ÇýáÍ^Üö݇?Ÿú£§?à¥Û¯Óq:N”ÓÙ§ ÿã±5ìuGO¿{®ëîZV»×µAÿälb /n€·ž1›DˆRÆf"¡§Ó™W³s¯¦ßÎFÈDˆJ.f&5ûrLÇÀ&'À,ǒÓ “d‡;EQú6Ž‡ðµ0JX¬ñ€Pà¹Ç8¶¶šŽ¤RA© @>^B0±õŸäßð\ŽkQaÖ ª°”%€ÊI>_à7¶ †¦T>ÃÊ4Â@×v!/@iQœD$š–* ^%øTDxY ”$q[Sö[ØÚ.R‚/Oodsy†¤Ü:68¢ømµÂRiÏT*Šs¦WKãŽfvœºéô»f{0î÷`Ü|çÈŸƒz37üvÜ<¾mßÜÁýýpüøíÑE5~î8­„ãìv aŽÛÝa¿Ûõ}·c´=0îe¿;z¼vÏ& +waèC†·cˆÈåØ9ë9Áî9î±;¸ì]ÞÝ »þ—Ǿi÷=۞ˆ­YàñŸ©—« â+Ø1+_I¼O¤Éh4’J¬F±´5’ + H éd‚da¢²ëk9‘gK“Í +ký2ÙT<µ–&âiȬ{ŠÄV!Ÿ’Ñ8 +WäshûEP +/ˆdv“åÁ@Uë%–£(ʊ" +lž;'²Ûct%yŠepÚy¼²= pwµ"UmDl§Ý©žµZJµcW,Çs»öðÛíÜ6HYwtw3êß?=]o +Àbß½ñ·Gø08|é¡da9gÍ_;@~¿×é_]^t/ÆCÇõü3·Ýn;Žuì÷]ðɕÔJ<™~‹,¾œzù#üƛE¦àajzzz +;ÕMcÆé¿üåÕôOÓÓ¯§_þå¯ð­—Óð09í¤$Ìýl +/€ˆeñªAfœ +öï˜\žbô(€5̳ÿ/Ö÷TZÃênãøPQìãCµí:€M—£nËëüVk0èô®¯ûþøÛÓp0¼¿¿~’ö.Áƒ?~ûÇл¾¿‡( ïÛù¯clà «†À&ÇvÚN×Ö[¾ßîö;ƒñe"M¯à¬]™~•ͽ \ö—© Øì +Hœ%ò8?[Rxtn,-)‚(‰ÊˆÛ MeCæ%@·],ló+b›~®ÕGJÀá¬Xn™»ÅªÑÚ+·ìòÙq;jÇõzmç°ª3ºîàúâÌ»¿»ô/ïïnA&Ý^Æ×7 œ +×é¨5ŠÕE‘2[øf-æ(:•ÍlYô¢À)”¤6ʳVä, –‚w$aF +ÝáͅãøÞñD2’ +ü7Á¬“ú”ü:6†ƒ1¥Hc·å]B²¸ó¡Hà»ù`¯[,Ðäϒ4M3 X@;\[`Ø·˜r¹²[UkU¥sîtŒÎY×þYívë‡ç>(ԛ›ónȺÝù|÷ÔÓÈÜû}Ô¿ùóa|ÙÐo{—÷ž3 +¢sâãdÔNWìºc:¦õh6Ÿ¤&Lˆ—ó&ȃÿI¨„Ó˜ŒÑ=ï" Î`XÞwKtäÃK¨Þ Õ_É沒Zàñdî ÇÚF*PI…ÅÐK9)—Sa⌢#dC˜‚SßsMÛ3ÍtBv0LÂƤ`§ksOÿ̗UMRMG £lk¡‡ÀÙÐK¦ªbžV@L›ž0£ªéTªnɏx8@#v<Õ +灸¼¶KùŠÏ•<‡í£H[ҋºÏµ$øp*¢ -ÛZ˜ýÄ¥¨ä•Êï¯»nœD›• Vq«ø¥RR­Äe_೜Š³õwÞ¶³µµ½WK¶ŽÞ×wŽ{­æÞQ£}xØû•í™ýî/Ý cqýŸáIs +Ia¨Ž®Yª¢ùHO0’¡—ªŽaðö9Čÿúl,¿laŽÇž§dÝK¶*Ðc››U°C) “’õ\æ¹i[áú÷{lnïî5šïw~촚³ŸÁðÚ§Ðëq›ØO‰Ú…§kǘýÃéh„Ü`…¼=J±0 EEŒ"q#Úé'°pHÀ´¡¶úÍF§7hwh>Î.W²jŽ[$ÓòSCD¤ÜóôdMNûń¬iy™'úaâÛ¬\`ú›@u;á۔t5N2U^í´­F–ðÅÀ§ºBV‹Ž*ñú^ D«žR%!ù^Œy¼‰#S_Lɾª¸†éVL½ Ø@‘«€ü²ºªy +$«(YºkiAŒ§BE*ÐÀ©Ê³ýXQÉᕸXÇz-¨%¬²0Å¢Hü]%މˆm7õ:g~§ÕÂdÆô¾èöÇí)K²s +˂g^úD€Âü+~u!h<r܋”ÈC”¨d%nâbË¥.$M}­³¬¡©@žÀ×Ãðµî[¼ÝÁð6Ùñ +ƒŒ ~IɃº‹Aì +™½ Qaú±VĘj%'P šV**¯]¤›0àE¡%Š¬!·äT#/™®À£Pf Âg°•3ÀÒá2ôô~Ça¡ (Uœà»jò]ôfvۃ`«(xY}9ÞÜ>jÔ÷šÍý£ãÖááÏ­æþûöIc¯3àšC“…îÞåY«G¹”ê $øÅ÷ÆéJÞ zvz”˜ÌFçüÕÀ”Ú™.iÎÜތYIÇC×ÃÞIÿ·cr¿Xùr_ƒV +<C¶– ™ëfÃV1Ä©mÂsibgùÁz¬j¨ +®á-ÞÂàl±@7LÒuø4²l9aÅ7ýPË ×5 /–%‚ZI‘ýPq1B6d§,íGž€•Äl‡Y–‹1/Êxƒ-H€W¯^Áó˜ZN¶ƒyCÓ`ôtZyCÇüàìbÀÀ^çRÄUoL èؘM8Ÿ–ƒ•\Qå50yMÊI2B\’XÆG ¥ï Ӌ¥ q®¥æ4½«ÎÒЋk\-'[»ø“ÄÅw*¹ñ6€ª–líìî5~¨½k4Ž›à‰³Vó§A¿¶»ýþÙÉI·Öꜧ—ãÛA—+˜Å·“&?Fq +BžÍf£4<ãÔͱ"8mL'£é„/Cˆn€\Ó;8Èb4¾þpyýáj:ºþ’.ÓéõŠ¡ñÔ¬ҖÙÄD„5ᤐªç%xv,„箁$¼JüÊw\š“u]7҅jݦxQ)1E^stŽ¤ƒÃA÷vA yU¶cGp’[F ™0TEH^¶³áY­z<ŠSÝ/!qbGÍÈ +—"b`nöp© +|cÁk'iýl§5y¦‹»îã'vܤ¶ƒàìÖ77jµŒvý§V«urpØîÀD¼?m_ô›Í—BaìÎ.¯..0£‡—×—DÿQº–}?½šÜ,&ó;v=ÝqΘÆsÄh‚f7w7,ÛÒý /€Q“ñÝtüñö?ofÓ»ÉåûãÙÕ +p(ÇæVaÕû 0§ ÅvêÕ o +(g•7U=[]µð‘ɳÌ1wò2ÒNw¹¼"!ÖãUxƒ3Bfg´ÅcæU¡è† `mËñK¡å7ð0ÁLèÚúv\Ù¨ïoíìíóŒ©Öq³uvÒ8>=kuíÓ~³Ýî7[Ç,QôG.ɱ×½Áxty‰AžÌ–s¼Ò`Ïað¦÷ÓÙì~þ€ Ì›i*¥¦7ŒÏíÍÝ=ÞNîîng‹ùäãì÷ëÿ%Äèöæ/û¸â˜lJ+pOæd.Ú@ +Þ”ã§`Öó„—ìð]T…)ŽÂhã[®íøðk@uý[ö2AÎc&煕_ áό¢n)0]º¶n)J%vŠFhD;U3¯DNщ#’LÎ03ÔÀ,`*Û*<†b–C.ðÎF֗@±º*)™gùÕ« ÏÊÎ@fä$WpAP• 6KXE•+EÅJ7lÝ(²•Q×kÍv^Ó +}'\ûF¢Àfì$ bQ®V7“íÝݝÝæÉi럭N§{Ðø¥{ÜnõÚín÷¼ÿïAoÔï·;&Ãä7ÆcüÛx:¿ŸÝM'wð\0š/š `j:{˜¥©AfO31™ÞÞßÏî—÷ü{7[.nîn‰eP +¬±ÂڊˆçBƒrzÙv1“}Z8•³Û„L5xû‹œyñÕ3: Ք$K("ÃJ\„µ-µˆØ +Dæõg†ã#—‘Ý ›«1Ï‚¬€¾«UjÉn­¼Ç%?ÔË[~A‡èß®[‚[@·£® +yÞM©RÛÝ®¿}wpøSƒíþ6»ƒN›kÕýÁ—†®¯.'>ü6a‘ŽášV›P¿˜8ŠÊrÁX<.æËÇÅ4 Ñ Æ<€a^0拇¤ÂÃÃ#É{†ºýÌÂÓóå|þÇÃb¹²ŠüW¥oTêßâÕ®6dëǘفAÄ ‰ÊÆÆÆN˜T6wÓë/£JÍwjŽ¿a%öFÚN¹*"¦T]Վ-ˆ N1hº…„‰*pߕP²Ãª ¾ð ð +H$Šá;E·eØq‡À&ÌBF• +PK…Ìó—/ŠÒ×/3¹l&—ϼx‘U¤üª`.*„0ïÀà¾.µ zzQÓ¸]“΢Èú¿ÁŒWl--r±ì/¸TÂÐ÷×KëÛµZmûà§z r©yPo¶N»ýöYç´ ó0ºö` n>ŽFŒÄ„<8;€æþ-‰€#NnfF,‹ÇÂ0Çßñìþ 1½ÇØ?"ŸøêáÓÃÆ~>»ûãw¼™-–‹åòéáããã +’?'å4EXª ˃£7N°²XƒŽâYùQåMRIÖÃ0©…›am/ÜJØzŸ”üÛVIÿ[â‡[A©Ä2‡c„1ˆ$V4R ¡0$¦ç™¦{ Pöò{ÿu†—#}éj>óêåjæًìÚ*²Ä!Éа˜ûùœÎÅ.Cà.x#`orR +"Ù-RyѾPx•t‡Y¼»]ۭ֍Ôf·­“u¹øÜâòbtÙë.¹V7~üð„\HUê䊍` Ìùùã#ì4Ô=?‘M̄ùìþñéï.‹»ûûÄbùðôô¸ÄË@|îâw`ÖÇ(¨Õœ,Aw䳒6d‡,—…\Û][‹¢ +›\ç[õ܈&ˆÀ?Ôwk{õúáþa­gsDâ⢟¢Ûíÿ¾Ü°\7û0ù8¿›}ºƒ2à¥ÇW÷ +4ºáZмܤ­š0`]„ƒ‡ˆ¹§2½-]B2¹¯^dxj-ƒò"[ÈP]er’lª´/ùy’¦Óq,ؐuB ”¬I,³å”KVe}+Bª'[;;o·ëïšÍÃFëçn§É’õùÿÖßF—ôl4špq‘¸üxûûNcâÊìvzON˜"  fÄâcR†»ƒ?RÁ„(< ‹Ç§ÏŸw)¥,>áõxj>Vñ5O d…°1kBµ0MM‡ŒçÂÐU ¨Z’ˆ&H¨ &ûNò6ÜÛª{A\ ò¶í×b/Ù`‡ªUZw̍PpÔlék%d@ËMªé> ›ýK†îÚé uB+tÙ0m¶(丬g¥&Y™_KÒ³WÜÄ*œöיÕg¼mn>ïEúáË,ܶª›y¶ÑÉRÚtÍCL4BςɑïF‘•ZºéÍ Èåõrm»¶Íf›Ãwï~8Ük´ŽÍî)÷q}a4ÿ‡õoFá†of£ëwûÙãç;¼öx¾¸ƒ®1æK26Õ’!Edc<4üü¸\ + + + diff --git a/src/org/xwt/plat/GCJ.xml b/src/org/xwt/plat/GCJ.xml index e8b514b..55bb86d 100644 --- a/src/org/xwt/plat/GCJ.xml +++ b/src/org/xwt/plat/GCJ.xml @@ -43,7 +43,7 @@ - + @@ -54,7 +54,20 @@ + + + ${gcc-path}/bin/${gcc-target}gcj --resource org/xwt/builtin.xwar -c bin/org/xwt/builtin.xwar -o bin-${plat}/org/xwt/builtin.o + + + + + + + + + + @@ -63,7 +76,6 @@ - diff --git a/src/org/xwt/util/JSObject.java b/src/org/xwt/util/JSObject.java index 2866d60..4739a24 100644 --- a/src/org/xwt/util/JSObject.java +++ b/src/org/xwt/util/JSObject.java @@ -41,7 +41,7 @@ public class JSObject implements Scriptable { private static Hash nodeNameToPackageNameHash = new Hash(1000, 2); /** converts a nodeName (source code filename) into the 'package name' (resource name of its directory) */ - private static String nodeNameToPackageName(String nodeName) { + public static String nodeNameToPackageName(String nodeName) { if (nodeName == null) return null; String ret = (String)nodeNameToPackageNameHash.get(nodeName); if (ret != null) return ret;